mirror of
https://github.com/holub/mame
synced 2025-10-04 08:28:39 +03:00
srcclean and cleanup (nw)
This commit is contained in:
parent
212f26f759
commit
76323eb770
File diff suppressed because it is too large
Load Diff
@ -158,7 +158,7 @@
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
|
||||
<software name="toystors" cloneof="toystor" supported="no">
|
||||
<description>Toy Story (SP)</description>
|
||||
<year>2007</year>
|
||||
@ -171,8 +171,8 @@
|
||||
<rom name="500-12894-a - toy story (sp).bin" size="0x400000" crc="91a748f6" sha1="05da46b6ded3fee24bc1167395f8139647368b68" offset="0" />
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
</software>
|
||||
|
||||
<software name="bobbuild" supported="no">
|
||||
<description>Bob the Builder (UK)</description>
|
||||
<year>2007</year>
|
||||
@ -185,8 +185,8 @@
|
||||
<rom name="500-13084-a - bob the builder (uk).bin" size="0x400000" crc="387920df" sha1="ac071987f5389604f368ea0a59962a0c28f73a80" offset="0" />
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
</software>
|
||||
|
||||
<software name="thomas" supported="no">
|
||||
<description>Thomas & Friends (UK)</description>
|
||||
<year>2007</year>
|
||||
@ -199,7 +199,7 @@
|
||||
<rom name="500-12781-a - thomas and friends (uk).bin" size="0x400000" crc="8485c99a" sha1="2a4899868f383b8a6e8cdc0e65dfed86222ff697" offset="0" />
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
</software>
|
||||
|
||||
<software name="dora" supported="no">
|
||||
<description>Dora the Explorer (UK)</description>
|
||||
@ -213,6 +213,6 @@
|
||||
<rom name="500-12729-a - dora the explorer (uk).bin" size="0x400000" crc="e93bd91a" sha1="e4c9649becd6370d555c6475cb491ba78c54ad17" offset="0" />
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
</software>
|
||||
</softwarelist>
|
||||
|
||||
|
@ -7,9 +7,9 @@
|
||||
|
||||
Japanese e-kara carts appear to have a number of different genres split across various
|
||||
cart sub-series (often supporting different hw types) special releases etc.
|
||||
|
||||
|
||||
This file is for the base set (number on case, ECxxxx-xxx part numbers)
|
||||
|
||||
|
||||
The genres in the Japanese games are represented by the code after the EC/DC/MC/GC/PC etc. number
|
||||
JPM = J-Pop Mix
|
||||
ATS = Artist Selection (all songs by a single artist)
|
||||
@ -27,21 +27,21 @@
|
||||
ATM = unknown (used by the M series 'mini' carts)
|
||||
TPJ = TV Pop
|
||||
MIN = unknown
|
||||
|
||||
|
||||
Some Japanese carts have a number starting with S (S-x on case, SCxxxx-xxx part numbers) (see ekara_japan_s.xml) (for e-kara - custom presentation)
|
||||
M (M-x on case, MCxxxx-xxx part numbers) (see ekara_japan_m.xml) (for e-kara - custom presentation)
|
||||
EN (EN-X on case, no part numbers) (see ekara_japan_en.xml) (for e-kara - custom presentation) (check other compatibility)
|
||||
EN (EN-X on case, no part numbers) (see ekara_japan_en.xml) (for e-kara - custom presentation) (check other compatibility)
|
||||
G (G-x on case, GCxxxx-xxx part numbers) (see ekara_japan_g.xml) (for e-kara, Popira / 2)
|
||||
P (P-x on case, PCxxxx-xxx part numbers) (see ekara_japan_p.xml) (for e-kara, Popira / 2, DDR Family Mat)
|
||||
D (D-x on case, DCxxxx-xxx part numbers) (see ekara_japan_d.xml) (for e-kara, Popira / 2, Taiko De Popira)
|
||||
D (D-x on case, DCxxxx-xxx part numbers) (see ekara_japan_d.xml) (for e-kara, Popira / 2, Taiko De Popira)
|
||||
SP (SP-x on case, no part numbers) (see ekara_japan_sp.xml) (for e-kara, Popira / 2, Taiko de Popira, Jumping Popira)
|
||||
|
||||
these exist but haven't got any
|
||||
Some Japanese carts have a number starting with JP (for Jumping Popira Only?)
|
||||
A (for Pichi Pichi Pitch Only?)
|
||||
KE (for Kids Lyric book device Only?)
|
||||
KD (for e-kara?)
|
||||
|
||||
KD (for e-kara?)
|
||||
|
||||
(there are others, need to document them)
|
||||
|
||||
|
||||
@ -50,7 +50,7 @@
|
||||
Genres can cross multiple cart types, eg. TV Pop 1,3,4,5,6 are in the 'G' series, while TV Pop 2 is in the 'P' series, and TV Pop 9 is in the 'D' series (where are 7,8?)
|
||||
|
||||
for non-Japanese carts see ekara_us.xml and ekara_pal.xml, the PAL ones are noteworthy for using a different timing system
|
||||
|
||||
|
||||
***********************************************************************************
|
||||
|
||||
Japanese cart listing (by 'just number' code) (number on cartridge / box, EC in cart identifier code)
|
||||
@ -312,7 +312,7 @@
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
|
||||
<software name="ec0010">
|
||||
<description>Kid's Mix Volume 1 (Japan) (EC0010-KID)</description>
|
||||
<year>2000</year>
|
||||
@ -369,7 +369,7 @@
|
||||
</software>
|
||||
|
||||
<!-- EC0016-ENK ENK Volume 2 -->
|
||||
|
||||
|
||||
<!-- EC0017-G73 1973-75 Volume 1 -->
|
||||
|
||||
<software name="ec0018">
|
||||
@ -386,7 +386,7 @@
|
||||
<!-- EC0019-BSC Graduation Encouragement Volume 1 -->
|
||||
|
||||
<!-- EC0020-KID Kid's Mix Volume 2 -->
|
||||
|
||||
|
||||
<software name="ec0021">
|
||||
<description>J-Pop Mix Volume 9 (Japan) (EC0021-JPM)</description>
|
||||
<year>2000</year>
|
||||
@ -604,7 +604,7 @@
|
||||
<rom name="ec0044-ats.u1" size="0x100000" crc="5ed25544" sha1="2cb30b442d97813af32530c6f61d7fcc7653f533" offset="0" />
|
||||
<!-- this has 0x0b at address 0x00007 in an otherwise list of ascending values, above dump has 0x0f and looks more correct
|
||||
both dumps have been verified multiple times, so this appears to be a case of bitrot in the cartridge the dump below was taken from -->
|
||||
<!--<rom name="ec0044-ats.u1" size="0x100000" crc="06557370" sha1="0ce7a193b214adaf14f3332ddd8ccbcbec830985" offset="0" />-->
|
||||
<!--<rom name="ec0044-ats.u1" size="0x100000" crc="06557370" sha1="0ce7a193b214adaf14f3332ddd8ccbcbec830985" offset="0" />-->
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
@ -740,11 +740,11 @@
|
||||
<!-- EC0064-ENK ENK Volume 9 -->
|
||||
|
||||
<!-- EC0065-JPM J-Pop Mix Volume 30 -->
|
||||
|
||||
|
||||
<!-- EC0066-JPM J-Pop Mix Volume 31 -->
|
||||
|
||||
|
||||
<!-- EC0067-JPM J-Pop Mix Volume 32 -->
|
||||
|
||||
|
||||
<software name="ec0068">
|
||||
<description>J-Pop Mix Volume 33 (Japan) (EC0068-JPM)</description>
|
||||
<year>2001</year>
|
||||
@ -783,9 +783,9 @@
|
||||
</software>
|
||||
|
||||
<!-- EC0073- untranslated volume 1 -->
|
||||
|
||||
<!-- EC0074-JPM J-Pop Mix Volume 37 -->
|
||||
|
||||
|
||||
<!-- EC0074-JPM J-Pop Mix Volume 37 -->
|
||||
|
||||
<!-- EC0075-JPM J-Pop Mix Volume 38 -->
|
||||
|
||||
<software name="ec0076">
|
||||
@ -798,11 +798,11 @@
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
|
||||
<!-- EC0077-ATS Artist Selection Volume 15 - unknown artist -->
|
||||
|
||||
|
||||
<!-- EC0078- (unknown) -->
|
||||
|
||||
|
||||
<software name="ec0079"> <!-- custom presentation -->
|
||||
<description>ETZ (Japan) (EC0079-ETZ)</description> <!-- Japanese text in 'Volume' box -->
|
||||
<year>2002</year>
|
||||
@ -812,12 +812,12 @@
|
||||
<rom name="ec0079-etz.u1" size="0x200000" crc="c03b5411" sha1="a88156aec4e0f024461f129c955a953647f51554" offset="0" />
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
</software>
|
||||
|
||||
<!-- EC0080- (unknown) -->
|
||||
|
||||
|
||||
<!-- EC0081-JPM J-Pop Mix Volume 42 -->
|
||||
|
||||
|
||||
<software name="ec0082"> <!-- custom presentation -->
|
||||
<description>Matthew's Best Hit Selection (Japan) (EC0082-MBH)</description>
|
||||
<year>2003</year>
|
||||
@ -827,12 +827,12 @@
|
||||
<rom name="ec0082-mbh.u1" size="0x100000" crc="3998e478" sha1="29dad31dfd79c57b2ccec0caac81b3489946b798" offset="0" />
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
</software>
|
||||
|
||||
<!-- EC0083-JPM J-Pop Mix Volume 43 -->
|
||||
|
||||
|
||||
<!-- EC0084- (unknown, seen) -->
|
||||
|
||||
|
||||
<!-- EC0085- (unknown, seen in the wild) -->
|
||||
|
||||
|
||||
</softwarelist>
|
||||
|
@ -21,12 +21,12 @@
|
||||
D-3 DC0003-BHT BHT (Best Artists?) Volume 9? (most other BHT carts are in G series, or P series)
|
||||
D-4 DC0004- (unknown)
|
||||
*D-5 DC0005-TPJ TV Pop Volume 9
|
||||
D-6 DC0006- (seen)
|
||||
D-6 DC0006- (seen)
|
||||
D-7 DC0007- (seen)
|
||||
D-8 DC0008- (seen)
|
||||
|
||||
|
||||
(more? what's the D highest number?)
|
||||
|
||||
|
||||
-->
|
||||
|
||||
<software name="dc0002">
|
||||
|
@ -5,11 +5,11 @@
|
||||
<!--
|
||||
Japanese cart listing (by EN code) * = dumped
|
||||
* = dumped
|
||||
|
||||
|
||||
These don't seem to have a secondary numbering scheme (eg ENxxxx-xxx)
|
||||
|
||||
|
||||
(check what units these are for)
|
||||
|
||||
|
||||
EN-1 (unknown)
|
||||
EN-2 (unknown)
|
||||
*EN-3 (unknown)
|
||||
@ -17,7 +17,7 @@
|
||||
(more? what's the EN highest number?)
|
||||
|
||||
-->
|
||||
|
||||
|
||||
<software name="en3">
|
||||
<description>EN-3 (Japan)</description>
|
||||
<year>2004</year>
|
||||
@ -27,6 +27,6 @@
|
||||
<rom name="en-3.u1" size="0x100000" crc="e3686ff4" sha1="e7e9a53a778739c406b2b226300d2f525cd9676b" offset="0" />
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
</software>
|
||||
|
||||
</softwarelist>
|
||||
|
@ -32,7 +32,7 @@
|
||||
(more? what's the G highest number?)
|
||||
|
||||
-->
|
||||
|
||||
|
||||
<software name="gc0001">
|
||||
<description>BAT Volume 1 (Japan) (GC0001-BAT)</description>
|
||||
<year>2000</year>
|
||||
@ -65,7 +65,7 @@
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
|
||||
<software name="gc0004">
|
||||
<description>BHT Volume 2 (Japan) (GC0004-BHT)</description>
|
||||
<year>2000</year>
|
||||
@ -76,7 +76,7 @@
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
|
||||
<software name="gc0006">
|
||||
<description>BHT Volume 3 (Japan) (GC0006-BHT)</description>
|
||||
<year>2000</year>
|
||||
@ -87,18 +87,18 @@
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
|
||||
<!-- Notes from Sean
|
||||
|
||||
|
||||
G10 has a 24LC02, but no 74HC125, and pin 2 isn't connected.
|
||||
|
||||
G10 is very odd; the SEEPROM's SDA is tied high with a 4.7K resistor and connected to pin 4 through a 220 ohm resistor.
|
||||
Pin 4 on the other carts I've looked at is VCC, also connected to pins 21 and 35, but on this one, it isn't.
|
||||
Likewise, SCL is tied low with a 47K resistor and connected to pin 32, which on all the other carts is connected to pins 1 and 44, which are ground.
|
||||
|
||||
e-Kara units, Popira, Taiko de Popira and DDR all of them have pin 4 of the cart connector going to VCC and pin 32 going to ground. So none of them can communicate with the SEEPROM in G10
|
||||
G10 is very odd; the SEEPROM's SDA is tied high with a 4.7K resistor and connected to pin 4 through a 220 ohm resistor.
|
||||
Pin 4 on the other carts I've looked at is VCC, also connected to pins 21 and 35, but on this one, it isn't.
|
||||
Likewise, SCL is tied low with a 47K resistor and connected to pin 32, which on all the other carts is connected to pins 1 and 44, which are ground.
|
||||
|
||||
Unless Popira 2 is different (unlikely) it doesn't look like the SEEPROM in this cartridge can be used (unfinished design?) -->
|
||||
e-Kara units, Popira, Taiko de Popira and DDR all of them have pin 4 of the cart connector going to VCC and pin 32 going to ground. So none of them can communicate with the SEEPROM in G10
|
||||
|
||||
Unless Popira 2 is different (unlikely) it doesn't look like the SEEPROM in this cartridge can be used (unfinished design?) -->
|
||||
<software name="gc0010">
|
||||
<description>BAT Volume 4 (Japan) (GC0010-BAT)</description>
|
||||
<year>2002</year>
|
||||
@ -109,9 +109,9 @@
|
||||
<rom name="gc0010-bat.u1" size="0x100000" crc="c08be376" sha1="28cb6baacf64e0382fd9c8bb7167d7fdd96f57ee" offset="0" />
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
|
||||
</software>
|
||||
|
||||
|
||||
<!-- G15 looks like G16- 74HC125 and 24LC02. -->
|
||||
<software name="gc0015">
|
||||
<description>BAT Volume 5 (Japan) (GC0015-BAT)</description>
|
||||
@ -123,8 +123,8 @@
|
||||
<rom name="gc0015-bat.u1" size="0x100000" crc="a839b745" sha1="a02bd29383baf1f92b3573aaa6343cc309a6f589" offset="0" />
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
</software>
|
||||
|
||||
<software name="gc0016">
|
||||
<description>TV Pop Volume 5 (Japan) (GC0016-TPJ)</description>
|
||||
<year>2002</year>
|
||||
@ -135,6 +135,6 @@
|
||||
<rom name="gc0016-tpj.u1" size="0x100000" crc="52d81c55" sha1="c2fad86a2507589625cb507c3e1395cb662f9e34" offset="0" />
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
</software>
|
||||
|
||||
</softwarelist>
|
||||
|
@ -18,11 +18,11 @@
|
||||
M-11
|
||||
M-12
|
||||
M-13 MC0013-KSM KSM Mini Volume 5
|
||||
|
||||
|
||||
(more? what's the M highest number?)
|
||||
|
||||
-->
|
||||
|
||||
|
||||
<!-- Japanese e-kara cartridges MC (Mini) series -->
|
||||
<!-- these have unique presentation -->
|
||||
|
||||
|
@ -39,17 +39,17 @@
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
|
||||
<software name="pc0004">
|
||||
<description>BHT Volume 7 (Japan) (PC0004-BHT)</description>
|
||||
<year>2002</year>
|
||||
<publisher>Takara</publisher>
|
||||
<part name="cart" interface="ekara_cart">
|
||||
<feature name="slot" value="rom_24lc02"/>
|
||||
<feature name="slot" value="rom_24lc02"/>
|
||||
<dataarea name="rom" size="0x100000">
|
||||
<rom name="pc0004-bht.u1" size="0x100000" crc="95e35899" sha1="a9bd2694f5ee4b964e8d73afc3e88c0eb18ca1d2" offset="0" />
|
||||
<rom name="pc0004-bht.u1" size="0x100000" crc="95e35899" sha1="a9bd2694f5ee4b964e8d73afc3e88c0eb18ca1d2" offset="0" />
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
</software>
|
||||
|
||||
</softwarelist>
|
||||
|
@ -13,7 +13,7 @@
|
||||
S-1 SC0001- Hello Kitty Special
|
||||
S-2 SC0002- (unknown)
|
||||
S-3 SC0003- (unknown)
|
||||
S-4 *SC0004-SAI SAI (series 1) Volume 1
|
||||
S-4 *SC0004-SAI SAI (series 1) Volume 1
|
||||
S-5 *SC0005-SAI SAI (series 2) Volume 1 (same series as 6,9,19,21,22)
|
||||
S-6 *SC0006-SAI SAI (series 2) Volume 2 (same series as 5,9,19,21,22)
|
||||
S-7 SC0007- (unknown)
|
||||
@ -21,7 +21,7 @@
|
||||
S-9 *SC0009-SAI SAI (series 2) Volume 3 (same series as 5,6,19,21,22)
|
||||
S-10 *SC0010-HWK HWK (untranslated)
|
||||
S-11 SC0011- (unknown)
|
||||
S-12 *SC0012-SAI SAI (series 3) Volume 3
|
||||
S-12 *SC0012-SAI SAI (series 3) Volume 3
|
||||
S-13 SC0013- (unknown)
|
||||
S-14 SC0014- (unknown)
|
||||
S-15 SC0015- (unknown)
|
||||
@ -35,7 +35,7 @@
|
||||
S-23 SC0023- (unknown)
|
||||
|
||||
(more? what's the S highest number?)
|
||||
|
||||
|
||||
-->
|
||||
|
||||
<!-- Japanese e-kara cartridges SC (Special?) series -->
|
||||
|
@ -7,7 +7,7 @@
|
||||
***********************************************************************************
|
||||
|
||||
Japanese cart listing (by SP code) * = dumped
|
||||
|
||||
|
||||
These don't seem to have a secondary numbering scheme (eg SPxxxx-xxx)
|
||||
|
||||
These are for use with 5 different units
|
||||
@ -16,14 +16,14 @@
|
||||
3. Popira 2 (Blue/Green) ( https://www.youtube.com/watch?v=iY1I-jfXw7U )
|
||||
4. Taiko de Popira
|
||||
5. Jumping Popira (Stepping Mat type thing) ( https://www.youtube.com/watch?v=yJruMOBdLFY )
|
||||
|
||||
|
||||
If you plug this into a DDR Family Mat you get the message (in Japanese)
|
||||
|
||||
|
||||
"please play this cartridge on e-kara series, popira, popira 2, taiko de popira or jumping popira"
|
||||
|
||||
gives 'memory error' if plugged into Popira (needs cartridge SEEPROM emulating)
|
||||
gives 'eep-rom error' if plugged into Taiko de Popira (same reason)
|
||||
|
||||
|
||||
SP-01 (unknown)
|
||||
*SP-02 'Super Cartridge' SP-2
|
||||
SP-03 (unknown)
|
||||
@ -46,5 +46,5 @@
|
||||
<rom name="sp02.u1" size="0x200000" crc="c8a84ded" sha1="02ffa04cdc7732fd3ab75505c5cc68bda130c7ee" offset="0" />
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
</software>
|
||||
</softwarelist>
|
||||
|
@ -229,5 +229,5 @@
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
|
||||
</softwarelist>
|
||||
|
@ -1,12 +1,12 @@
|
||||
<?xml version="1.0"?>
|
||||
<!DOCTYPE softwarelist SYSTEM "softwarelist.dtd">
|
||||
<softwarelist name="jakks_gamekey_dy" description="JAKKS Pacific 'DY' Game Keys">
|
||||
|
||||
|
||||
<!-- This list is for the 'DY' coded Game Keys, for Disney base systems (not Disney Princess) -->
|
||||
|
||||
|
||||
<!-- One of them doesn't use the /OE signal from the game, and has 16 10K resistors tying the data lines high.
|
||||
Silkscreened onto both PCBs is the text A1 A2 A3 A4 with 2 boxes next to each with H and L. Both PCBs are marked A1 H A3 L. -->
|
||||
|
||||
|
||||
<software name="sbwlgoof" supported="no"> <!-- AT24C04 SEEPROM -->
|
||||
<description>Sports Bowling & Goofy's Underwater Adventure</description>
|
||||
<year>2005</year>
|
||||
@ -14,9 +14,9 @@
|
||||
<part name="cart" interface="jakks_gamekey">
|
||||
<dataarea name="rom" size="0x800000">
|
||||
<rom name="dy_disneygkbowlinggoofy.bin" size="0x200000" crc="d2147aa4" sha1="0db986aac68868a2ff4936e93178da8c592ac81d" offset="0" />
|
||||
<rom size="0x200000" offset="0x200000" loadflag="reload" />
|
||||
<rom size="0x200000" offset="0x400000" loadflag="reload" />
|
||||
<rom size="0x200000" offset="0x600000" loadflag="reload" />
|
||||
<rom size="0x200000" offset="0x200000" loadflag="reload" />
|
||||
<rom size="0x200000" offset="0x400000" loadflag="reload" />
|
||||
<rom size="0x200000" offset="0x600000" loadflag="reload" />
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
@ -28,13 +28,13 @@
|
||||
<part name="cart" interface="jakks_gamekey">
|
||||
<dataarea name="rom" size="0x800000">
|
||||
<rom name="dy_disneygktennisfacechase.bin" size="0x200000" crc="ba37ccf2" sha1="c7204a0499b6949f3f70f0f5c042d353435406fb" offset="0" />
|
||||
<rom size="0x200000" offset="0x200000" loadflag="reload" />
|
||||
<rom size="0x200000" offset="0x400000" loadflag="reload" />
|
||||
<rom size="0x200000" offset="0x600000" loadflag="reload" />
|
||||
</dataarea>
|
||||
<rom size="0x200000" offset="0x200000" loadflag="reload" />
|
||||
<rom size="0x200000" offset="0x400000" loadflag="reload" />
|
||||
<rom size="0x200000" offset="0x600000" loadflag="reload" />
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
|
||||
<software name="stenfcha" supported="no"> <!-- AT24C04 SEEPROM -->
|
||||
<description>Sports Tennis & Face Chase & Riches of Agrabah</description>
|
||||
<year>2005</year>
|
||||
@ -42,11 +42,11 @@
|
||||
<part name="cart" interface="jakks_gamekey">
|
||||
<dataarea name="rom" size="0x800000">
|
||||
<rom name="disneygktennisfaceagrabah.bin" size="0x200000" crc="f3fd0759" sha1="1272e7e34acfce5dbe55b39bff888f5dd16c63f9" offset="0" />
|
||||
<rom size="0x200000" offset="0x200000" loadflag="reload" />
|
||||
<rom size="0x200000" offset="0x400000" loadflag="reload" />
|
||||
<rom size="0x200000" offset="0x600000" loadflag="reload" />
|
||||
</dataarea>
|
||||
<rom size="0x200000" offset="0x200000" loadflag="reload" />
|
||||
<rom size="0x200000" offset="0x400000" loadflag="reload" />
|
||||
<rom size="0x200000" offset="0x600000" loadflag="reload" />
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
</software>
|
||||
|
||||
</softwarelist>
|
||||
|
@ -1,9 +1,9 @@
|
||||
<?xml version="1.0"?>
|
||||
<!DOCTYPE softwarelist SYSTEM "softwarelist.dtd">
|
||||
<softwarelist name="jakks_gamekey_nk" description="JAKKS Pacific 'NK' Game Keys">
|
||||
|
||||
|
||||
<!-- This list is for the 'NK' coded Game Keys, for Nicktoons and related systems -->
|
||||
|
||||
|
||||
<software name="dora" supported="no">
|
||||
<description>Soccer Shootout & Juego De Futbol De Dora & Dora's Star Mountain Adventure</description>
|
||||
<year>2005</year>
|
||||
@ -11,9 +11,9 @@
|
||||
<part name="cart" interface="jakks_gamekey">
|
||||
<dataarea name="rom" size="0x800000">
|
||||
<rom name="nk_dora.bin" size="0x200000" crc="2bcdf9a5" sha1="ac86d967b269cb8c4ecc9c8b99fb5c16424da7be" offset="0" />
|
||||
<rom size="0x200000" offset="0x200000" loadflag="reload" />
|
||||
<rom size="0x200000" offset="0x400000" loadflag="reload" />
|
||||
<rom size="0x200000" offset="0x600000" loadflag="reload" />
|
||||
<rom size="0x200000" offset="0x200000" loadflag="reload" />
|
||||
<rom size="0x200000" offset="0x400000" loadflag="reload" />
|
||||
<rom size="0x200000" offset="0x600000" loadflag="reload" />
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
@ -1,12 +1,12 @@
|
||||
<?xml version="1.0"?>
|
||||
<!DOCTYPE softwarelist SYSTEM "softwarelist.dtd">
|
||||
<softwarelist name="jakks_gamekey_sw" description="JAKKS Pacific 'SW' Game Keys">
|
||||
|
||||
|
||||
<!-- This list is for the 'SW' coded Game Keys, for Star Wars base systems -->
|
||||
|
||||
|
||||
<!-- There are 4 pads on the PCB labeled A0 A1 A2 and A3. A1 and A2 are connected to VCC.
|
||||
The gamekey PCB had the same silkscreened boxes as the Disney Games, with A1 H and A3 H marked. -->
|
||||
|
||||
|
||||
<software name="tdyoda" supported="no">
|
||||
<description>Turret Defense & Yoda's Escape</description>
|
||||
<year>2005</year>
|
||||
@ -20,5 +20,5 @@
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
|
||||
</softwarelist>
|
||||
|
@ -898,10 +898,10 @@ Parasol Stars
|
||||
<part name="cart" interface="tourvision_cart">
|
||||
<feature name="id" value="0x26"/>
|
||||
<dataarea name="rom" size="524288">
|
||||
<!-- NOT identical to the set in the PCE list
|
||||
50000-5000F: FF 10 10 00 1C F9 0F F8 0F 87 FF 3F 0F 4F 00 2E - PCE Dump
|
||||
50000-5000F: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - Tourvision
|
||||
otherwise 0x80000 identical -->
|
||||
<!-- NOT identical to the set in the PCE list
|
||||
50000-5000F: FF 10 10 00 1C F9 0F F8 0F 87 FF 3F 0F 4F 00 2E - PCE Dump
|
||||
50000-5000F: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - Tourvision
|
||||
otherwise 0x80000 identical -->
|
||||
<rom name="out run (japan) [a].pce" size="524288" crc="92b654a7" sha1="7d669e78978ebb2a3169f4428a664c81a8888b6e" offset="000000" />
|
||||
</dataarea>
|
||||
</part>
|
||||
@ -1041,7 +1041,7 @@ Parasol Stars
|
||||
<description>Pro Yakyuu World Stadium '91 (TourVision PCE bootleg)</description>
|
||||
<year>1991</year>
|
||||
<publisher>bootleg (TourVision) / Namcot</publisher>
|
||||
<info name="alt_title" value="プロ野球 ワールドスタジアム'91"/>
|
||||
<info name="alt_title" value="プロ野球 ワールドスタジアム'91"/>
|
||||
<part name="cart" interface="tourvision_cart">
|
||||
<feature name="id" value="0xc0"/>
|
||||
<dataarea name="rom" size="262144">
|
||||
@ -1067,7 +1067,7 @@ Parasol Stars
|
||||
<description>Puzzle Boy (TourVision PCE bootleg)</description>
|
||||
<year>1991</year>
|
||||
<publisher>bootleg (TourVision) / Nihon Telenet</publisher>
|
||||
<info name="alt_title" value="パズルボーイ"/>
|
||||
<info name="alt_title" value="パズルボーイ"/>
|
||||
<part name="cart" interface="tourvision_cart">
|
||||
<feature name="id" value="0x39"/>
|
||||
<dataarea name="rom" size="262144">
|
||||
@ -1080,11 +1080,11 @@ Parasol Stars
|
||||
<description>Puzznic (TourVision PCE bootleg)</description>
|
||||
<year>1990</year>
|
||||
<publisher>bootleg (TourVision) / Taito</publisher>
|
||||
<info name="alt_title" value="パズニック"/>
|
||||
<info name="alt_title" value="パズニック"/>
|
||||
<part name="cart" interface="tourvision_cart">
|
||||
<feature name="id" value="0x45"/>
|
||||
<dataarea name="rom" size="262144">
|
||||
<!-- 0x40000 matches PCE puzznic -->
|
||||
<!-- 0x40000 matches PCE puzznic -->
|
||||
<rom name="puzznic (japan).pce" size="262144" crc="965c95b3" sha1="3906d644f5901e6d2e732cbd0a6dd0d38a29486b" offset="000000" />
|
||||
</dataarea>
|
||||
</part>
|
||||
@ -1123,7 +1123,7 @@ Parasol Stars
|
||||
<part name="cart" interface="tourvision_cart">
|
||||
<feature name="id" value="0x3d"/>
|
||||
<dataarea name="rom" size="262144">
|
||||
<!-- NOT identical to the set in the PCE list, copyright strings have been erased -->
|
||||
<!-- NOT identical to the set in the PCE list, copyright strings have been erased -->
|
||||
<rom name="tourv_r-type_ii_hacked.pce" size="262144" crc="ae65fe80" sha1="1a6c6f5bd017f23ab9d00a9385986ddf498f9a82" offset="000000" />
|
||||
</dataarea>
|
||||
</part>
|
||||
|
@ -1892,7 +1892,7 @@ Game cartridges
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
|
||||
<software name="superman" supported="yes">
|
||||
<description>Superman - Der Superheld (Ger)</description>
|
||||
<year>200?</year>
|
||||
|
@ -1,10 +1,10 @@
|
||||
<?xml version="1.0"?>
|
||||
<!DOCTYPE softwarelist SYSTEM "softwarelist.dtd">
|
||||
<softwarelist name="vtech_storio_cart" description="VTech Storio V.Reader Cartridges">
|
||||
|
||||
|
||||
<!-- These are NAND Flash ROMs containing a FAT16 filesystem -->
|
||||
<!-- Some cartridges (PCB 35-115600-027-402) contains no ROM, but just some bridges between edge connector pins. -->
|
||||
|
||||
|
||||
<!--
|
||||
|
||||
Language:
|
||||
@ -32,7 +32,7 @@
|
||||
| 80-280600(US) | Olivia
|
||||
| 80-280700(US) | The Little Engine That Could
|
||||
| 80-280900(US) | Dora and the Three Little Pigs
|
||||
XX | 80-280422(GER) | Dora und die drei Schweinchen
|
||||
XX | 80-280422(GER) | Dora und die drei Schweinchen
|
||||
| 80-281000(US) | Mickey Mouse Clubhouse
|
||||
XX | 80-281004(GER) | Micky Maus Wunderhaus
|
||||
| 80-281100(US) | Disney Princess
|
||||
@ -40,9 +40,9 @@
|
||||
| 80-281200(US) | Cars
|
||||
| 80-281300(US) | Sesame Street The Happy Scientists
|
||||
| 80-281400(US) | SpongeBob SquarePants Model Sponge
|
||||
XX | 80-281404(GER) | Spongebob Schwammkopf - Ein Schwamm will nach oben
|
||||
XX | 80-281404(GER) | Spongebob Schwammkopf - Ein Schwamm will nach oben
|
||||
| 80-281500(US) | Tangled
|
||||
XX | 80-281504(GER) | Rapunzel - Neu verföhnt
|
||||
XX | 80-281504(GER) | Rapunzel - Neu verföhnt
|
||||
| 80-281600(US) | Chuggington - Babysitter Brewster
|
||||
| 80-281700(US) | Penguins of Madagascar - The Helmet
|
||||
| 80-281800(US) | Kung Fu Panda 2
|
||||
|
@ -3856,4 +3856,4 @@ if (MACHINES["DC7085"]~=null) then
|
||||
MAME_DIR .. "src/devices/machine/dc7085.cpp",
|
||||
MAME_DIR .. "src/devices/machine/dc7085.h",
|
||||
}
|
||||
end
|
||||
end
|
||||
|
@ -60,4 +60,4 @@ READ8_MEMBER(bbc_mrme00_device::read)
|
||||
WRITE8_MEMBER(bbc_mrme00_device::write)
|
||||
{
|
||||
get_ram_base()[offset & (get_ram_size() - 1)] = data;
|
||||
}
|
||||
}
|
||||
|
@ -122,5 +122,5 @@ void ekara_cart(device_slot_interface &device)
|
||||
{
|
||||
device.option_add_internal("plain", EKARA_ROM_PLAIN);
|
||||
device.option_add_internal("rom_24lc04", EKARA_ROM_I2C_24LC04);
|
||||
device.option_add_internal("rom_24lc02", EKARA_ROM_I2C_24LC02);
|
||||
device.option_add_internal("rom_24lc02", EKARA_ROM_I2C_24LC02);
|
||||
}
|
||||
|
@ -104,10 +104,10 @@ void electron_romboxp_device::device_add_mconfig(machine_config &config)
|
||||
|
||||
/* cartridges */
|
||||
ELECTRON_CARTSLOT(config, m_cart[0], DERIVED_CLOCK(1, 1), electron_cart, nullptr); // ROM SLOT 0/1
|
||||
m_cart[0]->irq_handler().set(DEVICE_SELF_OWNER, FUNC(electron_expansion_slot_device::irq_w));
|
||||
m_cart[0]->irq_handler().set(DEVICE_SELF_OWNER, FUNC(electron_expansion_slot_device::irq_w));
|
||||
m_cart[0]->nmi_handler().set(DEVICE_SELF_OWNER, FUNC(electron_expansion_slot_device::nmi_w));
|
||||
ELECTRON_CARTSLOT(config, m_cart[1], DERIVED_CLOCK(1, 1), electron_cart, nullptr); // ROM SLOT 2/3
|
||||
m_cart[1]->irq_handler().set(DEVICE_SELF_OWNER, FUNC(electron_expansion_slot_device::irq_w));
|
||||
m_cart[1]->irq_handler().set(DEVICE_SELF_OWNER, FUNC(electron_expansion_slot_device::irq_w));
|
||||
m_cart[1]->nmi_handler().set(DEVICE_SELF_OWNER, FUNC(electron_expansion_slot_device::nmi_w));
|
||||
}
|
||||
|
||||
|
@ -29,6 +29,9 @@
|
||||
#include "nubus_specpdq.h"
|
||||
#include "screen.h"
|
||||
|
||||
//#define VERBOSE 1
|
||||
#include "logmacro.h"
|
||||
|
||||
|
||||
#define SPECPDQ_SCREEN_NAME "specpdq_screen"
|
||||
#define SPECPDQ_ROM_REGION "specpdq_rom"
|
||||
@ -242,7 +245,7 @@ WRITE32_MEMBER( nubus_specpdq_device::specpdq_w )
|
||||
switch (offset)
|
||||
{
|
||||
case 0xc0054: // mode 1
|
||||
logerror("%x to mode1\n", data);
|
||||
LOG("%x to mode1\n", data);
|
||||
break;
|
||||
|
||||
case 0xc005c: // interrupt control
|
||||
@ -261,7 +264,7 @@ WRITE32_MEMBER( nubus_specpdq_device::specpdq_w )
|
||||
break;
|
||||
|
||||
case 0xc007a:
|
||||
logerror("%x to mode2\n", data);
|
||||
LOG("%x to mode2\n", data);
|
||||
|
||||
switch (data)
|
||||
{
|
||||
@ -278,11 +281,11 @@ WRITE32_MEMBER( nubus_specpdq_device::specpdq_w )
|
||||
break;
|
||||
}
|
||||
|
||||
logerror("m_mode = %d\n", m_mode);
|
||||
LOG("m_mode = %d\n", m_mode);
|
||||
break;
|
||||
|
||||
case 0x120000: // DAC address
|
||||
logerror("%08x to DAC control %s\n", data,machine().describe_context());
|
||||
LOG("%08x to DAC control %s\n", data,machine().describe_context());
|
||||
m_clutoffs = ((data>>8)&0xff)^0xff;
|
||||
break;
|
||||
|
||||
@ -291,7 +294,7 @@ WRITE32_MEMBER( nubus_specpdq_device::specpdq_w )
|
||||
|
||||
if (m_count == 3)
|
||||
{
|
||||
logerror("RAMDAC: color %d = %02x %02x %02x %s\n", m_clutoffs, m_colors[0], m_colors[1], m_colors[2], machine().describe_context());
|
||||
LOG("RAMDAC: color %d = %02x %02x %02x %s\n", m_clutoffs, m_colors[0], m_colors[1], m_colors[2], machine().describe_context());
|
||||
m_palette->set_pen_color(m_clutoffs, rgb_t(m_colors[0], m_colors[1], m_colors[2]));
|
||||
m_palette_val[m_clutoffs] = rgb_t(m_colors[0], m_colors[1], m_colors[2]);
|
||||
m_clutoffs++;
|
||||
@ -370,7 +373,7 @@ WRITE32_MEMBER( nubus_specpdq_device::specpdq_w )
|
||||
case 0x18103f:
|
||||
if(offset == 0x181000) {
|
||||
machine().debug_break();
|
||||
logerror("Pattern %08x @ %x\n", data ^ 0xffffffff, offset);
|
||||
LOG("Pattern %08x @ %x\n", data ^ 0xffffffff, offset);
|
||||
}
|
||||
m_fillbytes[((offset&0x3f)*4)] = ((data>>24) & 0xff) ^ 0xff;
|
||||
m_fillbytes[((offset&0x3f)*4)+1] = ((data>>16) & 0xff) ^ 0xff;
|
||||
@ -380,40 +383,40 @@ WRITE32_MEMBER( nubus_specpdq_device::specpdq_w )
|
||||
|
||||
// blitter control
|
||||
case 0x182006:
|
||||
logerror("%08x (%d) to blitter ctrl 1 %s rectangle\n", data^0xffffffff, data^0xffffffff, machine().describe_context());
|
||||
LOG("%08x (%d) to blitter ctrl 1 %s rectangle\n", data^0xffffffff, data^0xffffffff, machine().describe_context());
|
||||
break;
|
||||
|
||||
case 0x182008:
|
||||
logerror("%08x (%d) to blitter ctrl 2 %s rectangle\n", data^0xffffffff, data^0xffffffff, machine().describe_context());
|
||||
LOG("%08x (%d) to blitter ctrl 2 %s rectangle\n", data^0xffffffff, data^0xffffffff, machine().describe_context());
|
||||
m_patofsx = (data ^ 0xffffffff) & 7;
|
||||
m_patofsy = ((data ^ 0xffffffff)>>3) & 7;
|
||||
break;
|
||||
|
||||
case 0x18200e:
|
||||
logerror("%08x (%d) to blitter ctrl 3 %s\n", data^0xffffffff, data^0xffffffff, machine().describe_context());
|
||||
LOG("%08x (%d) to blitter ctrl 3 %s\n", data^0xffffffff, data^0xffffffff, machine().describe_context());
|
||||
m_width = data ^ 0xffffffff;
|
||||
break;
|
||||
|
||||
case 0x18200b:
|
||||
logerror("%08x (%d) to blitter ctrl 4 %s\n", data^0xffffffff, data^0xffffffff, machine().describe_context());
|
||||
LOG("%08x (%d) to blitter ctrl 4 %s\n", data^0xffffffff, data^0xffffffff, machine().describe_context());
|
||||
m_height = (data ^ 0xffffffff) & 0xffff;
|
||||
break;
|
||||
|
||||
case 0x18200a:
|
||||
data ^= 0xffffffff;
|
||||
logerror("%08x to blitter ctrl 5 %s\n", data, machine().describe_context());
|
||||
LOG("%08x to blitter ctrl 5 %s\n", data, machine().describe_context());
|
||||
m_vram_src = data>>2;
|
||||
break;
|
||||
|
||||
case 0x182009:
|
||||
data ^= 0xffffffff;
|
||||
logerror("%08x to blitter ctrl 6 %s\n", data, machine().describe_context());
|
||||
LOG("%08x to blitter ctrl 6 %s\n", data, machine().describe_context());
|
||||
m_vram_addr = data>>2;
|
||||
break;
|
||||
|
||||
case 0x182007:
|
||||
data ^= 0xffffffff;
|
||||
logerror("%08x to blitter ctrl 7 %s\n", data, machine().describe_context());
|
||||
LOG("%08x to blitter ctrl 7 %s\n", data, machine().describe_context());
|
||||
|
||||
// fill rectangle
|
||||
if (data == 2)
|
||||
@ -423,7 +426,7 @@ WRITE32_MEMBER( nubus_specpdq_device::specpdq_w )
|
||||
|
||||
int ddx = m_vram_addr & 3;
|
||||
|
||||
logerror("Fill rectangle with %02x %02x %02x %02x, adr %x (%d, %d) width %d height %d delta %d %d\n", m_fillbytes[0], m_fillbytes[1], m_fillbytes[2], m_fillbytes[3], m_vram_addr, m_vram_addr % 1152, m_vram_addr / 1152, m_width, m_height, m_patofsx, m_patofsy);
|
||||
LOG("Fill rectangle with %02x %02x %02x %02x, adr %x (%d, %d) width %d height %d delta %d %d\n", m_fillbytes[0], m_fillbytes[1], m_fillbytes[2], m_fillbytes[3], m_vram_addr, m_vram_addr % 1152, m_vram_addr / 1152, m_width, m_height, m_patofsx, m_patofsy);
|
||||
|
||||
for (y = 0; y <= m_height; y++)
|
||||
{
|
||||
@ -442,7 +445,7 @@ WRITE32_MEMBER( nubus_specpdq_device::specpdq_w )
|
||||
int sdx = m_vram_src & 3;
|
||||
int ddx = m_vram_addr & 3;
|
||||
|
||||
logerror("Copy rectangle forwards, width %d height %d dst %x (%d, %d) src %x (%d, %d)\n", m_width, m_height, m_vram_addr, m_vram_addr % 1152, m_vram_addr / 1152, m_vram_src, m_vram_src % 1152, m_vram_src / 1152);
|
||||
LOG("Copy rectangle forwards, width %d height %d dst %x (%d, %d) src %x (%d, %d)\n", m_width, m_height, m_vram_addr, m_vram_addr % 1152, m_vram_addr / 1152, m_vram_src, m_vram_src % 1152, m_vram_src / 1152);
|
||||
|
||||
for (y = 0; y <= m_height; y++)
|
||||
{
|
||||
@ -462,7 +465,7 @@ WRITE32_MEMBER( nubus_specpdq_device::specpdq_w )
|
||||
int sdx = m_vram_src & 3;
|
||||
int ddx = m_vram_addr & 3;
|
||||
|
||||
logerror("Copy rectangle backwards, width %d height %d dst %x (%d, %d) src %x (%d, %d)\n", m_width, m_height, m_vram_addr, m_vram_addr % 1152, m_vram_addr / 1152, m_vram_src, m_vram_src % 1152, m_vram_src / 1152);
|
||||
LOG("Copy rectangle backwards, width %d height %d dst %x (%d, %d) src %x (%d, %d)\n", m_width, m_height, m_vram_addr, m_vram_addr % 1152, m_vram_addr / 1152, m_vram_src, m_vram_src % 1152, m_vram_src / 1152);
|
||||
|
||||
for (y = 0; y < m_height; y++)
|
||||
{
|
||||
@ -475,12 +478,12 @@ WRITE32_MEMBER( nubus_specpdq_device::specpdq_w )
|
||||
}
|
||||
else
|
||||
{
|
||||
logerror("Unknown blitter command %08x\n", data);
|
||||
LOG("Unknown blitter command %08x\n", data);
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
logerror("specpdq_w: %08x @ %x (mask %08x %s)\n", data^0xffffffff, offset, mem_mask, machine().describe_context());
|
||||
LOG("specpdq_w: %08x @ %x (mask %08x %s)\n", data^0xffffffff, offset, mem_mask, machine().describe_context());
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -52,8 +52,8 @@ protected:
|
||||
device_vsmile_cart_interface(const machine_config &mconfig, device_t &device);
|
||||
|
||||
// internal state
|
||||
uint16_t *m_rom; // this points to the cart rom region
|
||||
uint32_t m_rom_size; // this is the actual game size, not the rom region size!
|
||||
uint16_t *m_rom; // this points to the cart rom region
|
||||
uint32_t m_rom_size; // this is the actual game size, not the rom region size!
|
||||
std::vector<uint16_t> m_nvram;
|
||||
};
|
||||
|
||||
|
@ -14,10 +14,12 @@
|
||||
*/
|
||||
|
||||
#include "emu.h"
|
||||
#include "debugger.h"
|
||||
#include "alpha.h"
|
||||
#include "alphad.h"
|
||||
|
||||
#include "debugger.h"
|
||||
|
||||
|
||||
#define LOG_GENERAL (1U << 0)
|
||||
#define LOG_EXCEPTION (1U << 1)
|
||||
#define LOG_SYSCALLS (1U << 2)
|
||||
|
@ -67,10 +67,10 @@ public:
|
||||
DECLARE_READ16_MEMBER( noise_r );
|
||||
|
||||
void update_fifo_dma();
|
||||
void print_sums() { printf("%04x: %04x\n", (uint16_t)m_core->m_arg0, (uint16_t)m_core->m_arg1); }
|
||||
void print_branches() { printf("Branch: %d %d %d %d %d\n", m_core->m_arg0 ? 1 : 0, m_core->m_arg1 ? 1 : 0, m_core->m_arg2 ? 1 : 0, m_core->m_arg3 ? 1 : 0, m_core->m_arg4 ? 1 : 0); }
|
||||
void print_value() { printf("Value is %08x\n", m_core->m_arg0); }
|
||||
void print_addr() { printf("New value is %08x from %08x\n", m_core->m_arg0, m_core->m_arg1); }
|
||||
void print_sums() { printf("%04x: %04x\n", (uint16_t)m_core->m_arg0, (uint16_t)m_core->m_arg1); }
|
||||
void print_branches() { printf("Branch: %d %d %d %d %d\n", m_core->m_arg0 ? 1 : 0, m_core->m_arg1 ? 1 : 0, m_core->m_arg2 ? 1 : 0, m_core->m_arg3 ? 1 : 0, m_core->m_arg4 ? 1 : 0); }
|
||||
void print_value() { printf("Value is %08x\n", m_core->m_arg0); }
|
||||
void print_addr() { printf("New value is %08x from %08x\n", m_core->m_arg0, m_core->m_arg1); }
|
||||
|
||||
protected:
|
||||
// device-level overrides
|
||||
@ -232,10 +232,10 @@ private:
|
||||
|
||||
const char *m_format;
|
||||
uint32_t m_arg0;
|
||||
uint32_t m_arg1;
|
||||
uint32_t m_arg2;
|
||||
uint32_t m_arg3;
|
||||
uint32_t m_arg4;
|
||||
uint32_t m_arg1;
|
||||
uint32_t m_arg2;
|
||||
uint32_t m_arg3;
|
||||
uint32_t m_arg4;
|
||||
|
||||
struct
|
||||
{
|
||||
@ -316,7 +316,7 @@ private:
|
||||
uint32_t cycles; /* accumulated cycles */
|
||||
uint8_t checkints; /* need to check interrupts before next instruction */
|
||||
uint8_t checksoftints; /* need to check software interrupts before next instruction */
|
||||
uml::code_label abortlabel; /* label to abort execution of this block */
|
||||
uml::code_label abortlabel; /* label to abort execution of this block */
|
||||
uml::code_label labelnum; /* index for local labels */
|
||||
};
|
||||
|
||||
|
@ -22,7 +22,7 @@ using namespace uml;
|
||||
|
||||
// map variables
|
||||
#define MAPVAR_PC M0
|
||||
#define MAPVAR_CYCLES M1
|
||||
#define MAPVAR_CYCLES M1
|
||||
|
||||
// exit codes
|
||||
#define EXECUTE_OUT_OF_CYCLES 0
|
||||
@ -244,12 +244,12 @@ void dspp_device::compile_block(offs_t pc)
|
||||
if (seqhead->flags & OPFLAG_IS_BRANCH_TARGET)
|
||||
UML_LABEL(block, seqhead->pc | 0x80000000); // label seqhead->pc
|
||||
|
||||
compiler.abortlabel = compiler.labelnum++;
|
||||
compiler.abortlabel = compiler.labelnum++;
|
||||
/* iterate over instructions in the sequence and compile them */
|
||||
for (curdesc = seqhead; curdesc != seqlast->next(); curdesc = curdesc->next())
|
||||
generate_sequence_instruction(block, &compiler, curdesc);
|
||||
|
||||
UML_LABEL(block, compiler.abortlabel);
|
||||
UML_LABEL(block, compiler.abortlabel);
|
||||
|
||||
/* if we need to return to the start, do it */
|
||||
if (seqlast->flags & OPFLAG_RETURN_TO_START)
|
||||
@ -293,11 +293,11 @@ void dspp_device::generate_checksum_block(drcuml_block &block, compiler_state *c
|
||||
uint32_t sum = seqhead->opptr.w[0];
|
||||
uint32_t addr = seqhead->physpc;
|
||||
const void *base = m_codeptr(addr);
|
||||
UML_MOV(block, I0, 0);
|
||||
UML_MOV(block, I0, 0);
|
||||
UML_LOAD(block, I0, base, 0, SIZE_WORD, SCALE_x2); // load i0,base,0,word
|
||||
|
||||
UML_CMP(block, I0, sum); // cmp i0,opptr[0]
|
||||
UML_EXHc(block, COND_NE, *m_nocode, seqhead->pc); // exne nocode,seqhead->pc
|
||||
UML_CMP(block, I0, sum); // cmp i0,opptr[0]
|
||||
UML_EXHc(block, COND_NE, *m_nocode, seqhead->pc); // exne nocode,seqhead->pc
|
||||
}
|
||||
}
|
||||
|
||||
@ -307,7 +307,7 @@ void dspp_device::generate_checksum_block(drcuml_block &block, compiler_state *c
|
||||
uint32_t sum = 0;
|
||||
uint32_t addr = seqhead->physpc;
|
||||
const void *base = m_codeptr(addr);
|
||||
UML_LOAD(block, I0, base, 0, SIZE_WORD, SCALE_x2); // load i0,base,0,dword
|
||||
UML_LOAD(block, I0, base, 0, SIZE_WORD, SCALE_x2); // load i0,base,0,dword
|
||||
sum += seqhead->opptr.w[0];
|
||||
for (curdesc = seqhead->next(); curdesc != seqlast->next(); curdesc = curdesc->next())
|
||||
if (!(curdesc->flags & OPFLAG_VIRTUAL_NOOP))
|
||||
@ -315,12 +315,12 @@ void dspp_device::generate_checksum_block(drcuml_block &block, compiler_state *c
|
||||
addr = curdesc->physpc;
|
||||
base = m_codeptr(addr);
|
||||
assert(base != nullptr);
|
||||
UML_LOAD(block, I1, base, 0, SIZE_WORD, SCALE_x2); // load i1,base,dword
|
||||
UML_ADD(block, I0, I0, I1); // add i0,i0,i1
|
||||
UML_LOAD(block, I1, base, 0, SIZE_WORD, SCALE_x2); // load i1,base,dword
|
||||
UML_ADD(block, I0, I0, I1); // add i0,i0,i1
|
||||
sum += curdesc->opptr.w[0];
|
||||
}
|
||||
UML_CMP(block, I0, sum); // cmp i0,sum
|
||||
UML_EXHc(block, COND_NE, *m_nocode, epc(seqhead)); // exne nocode,seqhead->pc
|
||||
UML_CMP(block, I0, sum); // cmp i0,sum
|
||||
UML_EXHc(block, COND_NE, *m_nocode, epc(seqhead)); // exne nocode,seqhead->pc
|
||||
}
|
||||
}
|
||||
|
||||
@ -373,12 +373,12 @@ void dspp_device::static_generate_nocode_handler()
|
||||
|
||||
/* generate a hash jump via the current mode and PC */
|
||||
alloc_handle(m_drcuml.get(), &m_nocode, "nocode");
|
||||
UML_HANDLE(block, *m_nocode); // handle nocode
|
||||
UML_GETEXP(block, I0); // getexp i0
|
||||
UML_HANDLE(block, *m_nocode); // handle nocode
|
||||
UML_GETEXP(block, I0); // getexp i0
|
||||
|
||||
UML_MOV(block, mem(&m_core->m_pc), I0); // mov [pc],i0
|
||||
//save_fast_iregs(block); // <save fastregs>
|
||||
UML_EXIT(block, EXECUTE_MISSING_CODE); // exit EXECUTE_MISSING_CODE
|
||||
UML_MOV(block, mem(&m_core->m_pc), I0); // mov [pc],i0
|
||||
//save_fast_iregs(block); // <save fastregs>
|
||||
UML_EXIT(block, EXECUTE_MISSING_CODE); // exit EXECUTE_MISSING_CODE
|
||||
|
||||
block.end();
|
||||
}
|
||||
@ -390,11 +390,11 @@ void dspp_device::static_generate_out_of_cycles()
|
||||
|
||||
/* generate a hash jump via the current mode and PC */
|
||||
alloc_handle(m_drcuml.get(), &m_out_of_cycles, "out_of_cycles");
|
||||
UML_HANDLE(block, *m_out_of_cycles); // handle out_of_cycles
|
||||
UML_GETEXP(block, I0); // getexp i0
|
||||
UML_MOV(block, mem(&m_core->m_pc), I0); // mov <pc>,i0
|
||||
//save_fast_iregs(block); // <save fastregs>
|
||||
UML_EXIT(block, EXECUTE_OUT_OF_CYCLES); // exit EXECUTE_OUT_OF_CYCLES
|
||||
UML_HANDLE(block, *m_out_of_cycles); // handle out_of_cycles
|
||||
UML_GETEXP(block, I0); // getexp i0
|
||||
UML_MOV(block, mem(&m_core->m_pc), I0); // mov <pc>,i0
|
||||
//save_fast_iregs(block); // <save fastregs>
|
||||
UML_EXIT(block, EXECUTE_OUT_OF_CYCLES); // exit EXECUTE_OUT_OF_CYCLES
|
||||
|
||||
block.end();
|
||||
}
|
||||
@ -402,28 +402,28 @@ void dspp_device::static_generate_out_of_cycles()
|
||||
void dspp_device::generate_sequence_instruction(drcuml_block &block, compiler_state *compiler, const opcode_desc *desc)
|
||||
{
|
||||
/* set the PC map variable */
|
||||
UML_MAPVAR(block, MAPVAR_PC, desc->pc); // mapvar PC,desc->pc
|
||||
UML_MAPVAR(block, MAPVAR_PC, desc->pc); // mapvar PC,desc->pc
|
||||
|
||||
/* accumulate total cycles */
|
||||
compiler->cycles += desc->cycles;
|
||||
|
||||
/* update the icount map variable */
|
||||
UML_MAPVAR(block, MAPVAR_CYCLES, compiler->cycles); // mapvar CYCLES,compiler->cycles
|
||||
UML_MAPVAR(block, MAPVAR_CYCLES, compiler->cycles); // mapvar CYCLES,compiler->cycles
|
||||
|
||||
/* if we are debugging, call the debugger */
|
||||
if ((machine().debug_flags & DEBUG_FLAG_ENABLED) != 0)
|
||||
{
|
||||
UML_MOV(block, mem(&m_core->m_pc), desc->pc); // mov [pc],desc->pc
|
||||
//save_fast_iregs(block); // <save fastregs>
|
||||
UML_DEBUG(block, desc->pc); // debug desc->pc
|
||||
UML_MOV(block, mem(&m_core->m_pc), desc->pc); // mov [pc],desc->pc
|
||||
//save_fast_iregs(block); // <save fastregs>
|
||||
UML_DEBUG(block, desc->pc); // debug desc->pc
|
||||
}
|
||||
|
||||
/* if we hit an unmapped address, fatal error */
|
||||
if (desc->flags & OPFLAG_COMPILER_UNMAPPED)
|
||||
{
|
||||
UML_MOV(block, mem(&m_core->m_pc), desc->pc); // mov [pc],desc->pc
|
||||
save_fast_iregs(block); // <save fastregs>
|
||||
UML_EXIT(block, EXECUTE_UNMAPPED_CODE); // exit EXECUTE_UNMAPPED_CODE
|
||||
UML_MOV(block, mem(&m_core->m_pc), desc->pc); // mov [pc],desc->pc
|
||||
save_fast_iregs(block); // <save fastregs>
|
||||
UML_EXIT(block, EXECUTE_UNMAPPED_CODE); // exit EXECUTE_UNMAPPED_CODE
|
||||
}
|
||||
|
||||
/* unless this is a virtual no-op, it's a regular instruction */
|
||||
@ -438,9 +438,9 @@ void dspp_device::generate_update_cycles(drcuml_block &block, compiler_state *co
|
||||
/* account for cycles */
|
||||
if (compiler->cycles > 0)
|
||||
{
|
||||
UML_SUB(block, mem(&m_core->m_icount), mem(&m_core->m_icount), MAPVAR_CYCLES); // sub icount,icount,cycles
|
||||
UML_MAPVAR(block, MAPVAR_CYCLES, 0); // mapvar cycles,0
|
||||
UML_EXHc(block, COND_S, *m_out_of_cycles, param); // exh out_of_cycles,nextpc
|
||||
UML_SUB(block, mem(&m_core->m_icount), mem(&m_core->m_icount), MAPVAR_CYCLES); // sub icount,icount,cycles
|
||||
UML_MAPVAR(block, MAPVAR_CYCLES, 0); // mapvar cycles,0
|
||||
UML_EXHc(block, COND_S, *m_out_of_cycles, param); // exh out_of_cycles,nextpc
|
||||
}
|
||||
compiler->cycles = 0;
|
||||
}
|
||||
@ -458,8 +458,8 @@ void dspp_device::generate_opcode(drcuml_block &block, compiler_state *compiler,
|
||||
code_label skip = compiler->labelnum++;
|
||||
UML_TEST(block, mem(&m_core->m_dspx_control), DSPX_CONTROL_GWILLING);
|
||||
UML_JMPc(block, COND_Z, compiler->abortlabel);
|
||||
//UML_TEST(block, mem(&m_core->m_flag_sleep), 1);
|
||||
//UML_JMPc(block, COND_NZ, compiler->abortlabel);
|
||||
//UML_TEST(block, mem(&m_core->m_flag_sleep), 1);
|
||||
//UML_JMPc(block, COND_NZ, compiler->abortlabel);
|
||||
|
||||
//UML_MOV(block, mem(&m_core->m_arg0), desc->physpc);
|
||||
//UML_MOV(block, mem(&m_core->m_arg1), op);
|
||||
@ -522,7 +522,7 @@ void dspp_device::generate_super_special(drcuml_block &block, compiler_state *co
|
||||
{
|
||||
if (m_drcuml.get()->logging())
|
||||
block.append_comment("BAC");
|
||||
UML_SHR(block, mem(&m_core->m_jmpdest), mem(&m_core->m_acc), 4); // m_core->m_pc = m_core->m_acc >> 4;
|
||||
UML_SHR(block, mem(&m_core->m_jmpdest), mem(&m_core->m_acc), 4); // m_core->m_pc = m_core->m_acc >> 4;
|
||||
generate_branch(block, compiler, desc);
|
||||
break;
|
||||
}
|
||||
@ -549,8 +549,8 @@ void dspp_device::generate_super_special(drcuml_block &block, compiler_state *co
|
||||
// TODO: How does sleep work?
|
||||
if (m_drcuml.get()->logging())
|
||||
block.append_comment("SLEEP");
|
||||
UML_SUB(block, mem(&m_core->m_pc), mem(&m_core->m_pc), 1); // --m_core->m_pc;
|
||||
UML_MOV(block, mem(&m_core->m_flag_sleep), 1); // m_core->m_flag_sleep = 1;
|
||||
UML_SUB(block, mem(&m_core->m_pc), mem(&m_core->m_pc), 1); // --m_core->m_pc;
|
||||
UML_MOV(block, mem(&m_core->m_flag_sleep), 1); // m_core->m_flag_sleep = 1;
|
||||
break;
|
||||
}
|
||||
|
||||
@ -609,7 +609,7 @@ void dspp_device::generate_special_opcode(drcuml_block &block, compiler_state *c
|
||||
// Indirect
|
||||
if (regdi & 0x0010)
|
||||
{
|
||||
UML_CALLH(block, *m_dm_read16); // addr = read_data(addr);
|
||||
UML_CALLH(block, *m_dm_read16); // addr = read_data(addr);
|
||||
UML_MOV(block, I2, I0);
|
||||
}
|
||||
else
|
||||
@ -621,7 +621,7 @@ void dspp_device::generate_special_opcode(drcuml_block &block, compiler_state *c
|
||||
generate_read_next_operand(block, compiler, desc);
|
||||
UML_MOV(block, I0, I1);
|
||||
UML_MOV(block, I1, I2);
|
||||
UML_CALLH(block, *m_dm_write16); // write_data(addr, read_next_operand());
|
||||
UML_CALLH(block, *m_dm_write16); // write_data(addr, read_next_operand());
|
||||
break;
|
||||
}
|
||||
case 5: // RBASE
|
||||
@ -639,7 +639,7 @@ void dspp_device::generate_special_opcode(drcuml_block &block, compiler_state *c
|
||||
generate_read_next_operand(block, compiler, desc);
|
||||
UML_MOV(block, I0, I1);
|
||||
UML_MOV(block, I1, op & 0x3ff);
|
||||
UML_CALLH(block, *m_dm_write16); // write_data(op & 0x3ff, read_next_operand());
|
||||
UML_CALLH(block, *m_dm_write16); // write_data(op & 0x3ff, read_next_operand());
|
||||
break;
|
||||
}
|
||||
case 7: // MOVEI
|
||||
@ -648,12 +648,12 @@ void dspp_device::generate_special_opcode(drcuml_block &block, compiler_state *c
|
||||
block.append_comment("MOVEI");
|
||||
generate_parse_operands(block, compiler, desc, 1);
|
||||
UML_MOV(block, I1, op & 0x3ff);
|
||||
UML_CALLH(block, *m_dm_read16); // uint32_t addr = read_data(op & 0x3ff);
|
||||
UML_CALLH(block, *m_dm_read16); // uint32_t addr = read_data(op & 0x3ff);
|
||||
UML_MOV(block, I2, I1);
|
||||
generate_read_next_operand(block, compiler, desc);
|
||||
UML_MOV(block, I0, I1);
|
||||
UML_MOV(block, I1, I2);
|
||||
UML_CALLH(block, *m_dm_write16); // write_data(addr, read_next_operand());
|
||||
UML_CALLH(block, *m_dm_write16); // write_data(addr, read_next_operand());
|
||||
break;
|
||||
}
|
||||
|
||||
@ -669,23 +669,23 @@ void dspp_device::generate_branch(drcuml_block &block, compiler_state *compiler,
|
||||
/* update the cycles and jump through the hash table to the target */
|
||||
if (desc->targetpc != BRANCH_TARGET_DYNAMIC)
|
||||
{
|
||||
generate_update_cycles(block, &compiler_temp, desc->targetpc); // <subtract cycles>
|
||||
generate_update_cycles(block, &compiler_temp, desc->targetpc); // <subtract cycles>
|
||||
if (desc->flags & OPFLAG_INTRABLOCK_BRANCH)
|
||||
UML_JMP(block, desc->targetpc | 0x80000000); // jmp desc->targetpc | 0x80000000
|
||||
UML_JMP(block, desc->targetpc | 0x80000000); // jmp desc->targetpc | 0x80000000
|
||||
else
|
||||
UML_HASHJMP(block, 0, desc->targetpc, *m_nocode); // hashjmp <mode>,desc->targetpc,nocode
|
||||
UML_HASHJMP(block, 0, desc->targetpc, *m_nocode); // hashjmp <mode>,desc->targetpc,nocode
|
||||
}
|
||||
else
|
||||
{
|
||||
generate_update_cycles(block, &compiler_temp, uml::mem(&m_core->m_jmpdest)); // <subtract cycles>
|
||||
UML_HASHJMP(block, 0, mem(&m_core->m_jmpdest), *m_nocode); // hashjmp <mode>,<rsreg>,nocode
|
||||
generate_update_cycles(block, &compiler_temp, uml::mem(&m_core->m_jmpdest)); // <subtract cycles>
|
||||
UML_HASHJMP(block, 0, mem(&m_core->m_jmpdest), *m_nocode); // hashjmp <mode>,<rsreg>,nocode
|
||||
}
|
||||
|
||||
/* update the label */
|
||||
compiler->labelnum = compiler_temp.labelnum;
|
||||
|
||||
/* reset the mapvar to the current cycles */
|
||||
UML_MAPVAR(block, MAPVAR_CYCLES, compiler->cycles); // mapvar CYCLES,compiler.cycles
|
||||
UML_MAPVAR(block, MAPVAR_CYCLES, compiler->cycles); // mapvar CYCLES,compiler.cycles
|
||||
}
|
||||
|
||||
void dspp_device::generate_branch_opcode(drcuml_block &block, compiler_state *compiler, const opcode_desc *desc)
|
||||
@ -718,10 +718,10 @@ void dspp_device::generate_branch_opcode(drcuml_block &block, compiler_state *co
|
||||
|
||||
UML_OR(block, I0, I0, mask0);
|
||||
UML_OR(block, I1, I1, mask1);
|
||||
UML_AND(block, I0, I0, I1); // bool branch = (flag0 || mask0) && (flag1 || mask1);
|
||||
UML_AND(block, I0, I0, I1); // bool branch = (flag0 || mask0) && (flag1 || mask1);
|
||||
|
||||
if (mode == 2) // if (mode == 2)
|
||||
UML_SUB(block, I0, 1, I0); // branch = !branch;
|
||||
if (mode == 2) // if (mode == 2)
|
||||
UML_SUB(block, I0, 1, I0); // branch = !branch;
|
||||
|
||||
//UML_MOV(block, mem(&m_core->m_arg0), I0);
|
||||
//UML_MOV(block, mem(&m_core->m_arg2), 1-mask0);
|
||||
@ -729,9 +729,9 @@ void dspp_device::generate_branch_opcode(drcuml_block &block, compiler_state *co
|
||||
//UML_CALLC(block, cfunc_print_branches, this);
|
||||
|
||||
code_label skip = compiler->labelnum++;
|
||||
UML_TEST(block, I0, 1); // if (branch)
|
||||
UML_TEST(block, I0, 1); // if (branch)
|
||||
UML_JMPc(block, COND_Z, skip);
|
||||
UML_MOV(block, mem(&m_core->m_jmpdest), op & 0x3ff); // m_core->m_pc = op & 0x3ff;
|
||||
UML_MOV(block, mem(&m_core->m_jmpdest), op & 0x3ff); // m_core->m_pc = op & 0x3ff;
|
||||
generate_branch(block, compiler, desc);
|
||||
UML_LABEL(block, skip);
|
||||
}
|
||||
@ -745,19 +745,19 @@ void dspp_device::generate_complex_branch_opcode(drcuml_block &block, compiler_s
|
||||
case 0: // BLT
|
||||
if (m_drcuml.get()->logging())
|
||||
block.append_comment("BLT");
|
||||
UML_XOR(block, I0, mem(&m_core->m_flag_neg), mem(&m_core->m_flag_over)); // branch = (n && !v) || (!n && v);
|
||||
UML_XOR(block, I0, mem(&m_core->m_flag_neg), mem(&m_core->m_flag_over)); // branch = (n && !v) || (!n && v);
|
||||
break;
|
||||
case 1: // BLE
|
||||
if (m_drcuml.get()->logging())
|
||||
block.append_comment("BLE");
|
||||
UML_XOR(block, I0, mem(&m_core->m_flag_neg), mem(&m_core->m_flag_over));
|
||||
UML_OR(block, I0, I0, mem(&m_core->m_flag_zero)); // branch = ((n && !v) || (!n && v)) || z;
|
||||
UML_OR(block, I0, I0, mem(&m_core->m_flag_zero)); // branch = ((n && !v) || (!n && v)) || z;
|
||||
break;
|
||||
case 2: // BGE
|
||||
if (m_drcuml.get()->logging())
|
||||
block.append_comment("BGE");
|
||||
UML_XOR(block, I0, mem(&m_core->m_flag_neg), mem(&m_core->m_flag_over));
|
||||
UML_SUB(block, I0, 1, I0); // branch = ((n && v) || (!n && !v));
|
||||
UML_SUB(block, I0, 1, I0); // branch = ((n && v) || (!n && !v));
|
||||
break;
|
||||
case 3: // BGT
|
||||
if (m_drcuml.get()->logging())
|
||||
@ -765,36 +765,36 @@ void dspp_device::generate_complex_branch_opcode(drcuml_block &block, compiler_s
|
||||
UML_AND(block, I0, mem(&m_core->m_flag_neg), mem(&m_core->m_flag_over));
|
||||
UML_SUB(block, I0, 1, I0);
|
||||
UML_SUB(block, I1, 1, mem(&m_core->m_flag_zero));
|
||||
UML_AND(block, I0, I0, I1); // branch = ((n && v) || (!n && !v)) && !z;
|
||||
UML_AND(block, I0, I0, I1); // branch = ((n && v) || (!n && !v)) && !z;
|
||||
break;
|
||||
case 4: // BHI
|
||||
if (m_drcuml.get()->logging())
|
||||
block.append_comment("BHI");
|
||||
UML_SUB(block, I0, 1, mem(&m_core->m_flag_zero));
|
||||
UML_AND(block, I0, I0, mem(&m_core->m_flag_carry)); // branch = c && !z;
|
||||
UML_AND(block, I0, I0, mem(&m_core->m_flag_carry)); // branch = c && !z;
|
||||
break;
|
||||
case 5: // BLS
|
||||
if (m_drcuml.get()->logging())
|
||||
block.append_comment("BLS");
|
||||
UML_SUB(block, I0, 1, mem(&m_core->m_flag_carry));
|
||||
UML_OR(block, I0, I0, mem(&m_core->m_flag_zero)); // branch = !c || z;
|
||||
UML_OR(block, I0, I0, mem(&m_core->m_flag_zero)); // branch = !c || z;
|
||||
break;
|
||||
case 6: // BXS
|
||||
if (m_drcuml.get()->logging())
|
||||
block.append_comment("BXS");
|
||||
UML_MOV(block, I0, mem(&m_core->m_flag_exact)); // branch = x;
|
||||
UML_MOV(block, I0, mem(&m_core->m_flag_exact)); // branch = x;
|
||||
break;
|
||||
case 7: // BXC
|
||||
if (m_drcuml.get()->logging())
|
||||
block.append_comment("BXC");
|
||||
UML_SUB(block, I0, 1, mem(&m_core->m_flag_exact)); // branch = !x;
|
||||
UML_SUB(block, I0, 1, mem(&m_core->m_flag_exact)); // branch = !x;
|
||||
break;
|
||||
}
|
||||
|
||||
code_label skip = compiler->labelnum++;
|
||||
UML_TEST(block, I0, 1); // if (branch)
|
||||
UML_TEST(block, I0, 1); // if (branch)
|
||||
UML_JMPc(block, COND_Z, skip);
|
||||
UML_MOV(block, mem(&m_core->m_jmpdest), op & 0x3ff); // m_core->m_pc = op & 0x3ff;
|
||||
UML_MOV(block, mem(&m_core->m_jmpdest), op & 0x3ff); // m_core->m_pc = op & 0x3ff;
|
||||
generate_branch(block, compiler, desc);
|
||||
UML_LABEL(block, skip);
|
||||
}
|
||||
@ -941,8 +941,8 @@ void dspp_device::generate_read_next_operand(drcuml_block &block, compiler_state
|
||||
UML_LOAD(block, I0, (void *)&m_core->m_operands[0].value, mem(&m_core->m_opidx), SIZE_DWORD, SCALE_x8);
|
||||
//if (op == 0x46a0)
|
||||
//{
|
||||
// UML_MOV(block, mem(&m_core->m_arg0), I0);
|
||||
// UML_CALLC(block, cfunc_print_value, this);
|
||||
// UML_MOV(block, mem(&m_core->m_arg0), I0);
|
||||
// UML_CALLC(block, cfunc_print_value, this);
|
||||
//}
|
||||
|
||||
UML_TEST(block, I0, 0x80000000U);
|
||||
@ -950,13 +950,13 @@ void dspp_device::generate_read_next_operand(drcuml_block &block, compiler_state
|
||||
UML_LOAD(block, I1, (void *)&m_core->m_operands[0].addr, mem(&m_core->m_opidx), SIZE_DWORD, SCALE_x8);
|
||||
//if (op == 0x46a0)
|
||||
//{
|
||||
// UML_MOV(block, mem(&m_core->m_arg1), I1);
|
||||
// UML_MOV(block, mem(&m_core->m_arg1), I1);
|
||||
//}
|
||||
UML_CALLH(block, *m_dm_read16);
|
||||
//if (op == 0x46a0)
|
||||
//{
|
||||
// UML_MOV(block, mem(&m_core->m_arg0), I0);
|
||||
// UML_CALLC(block, cfunc_print_addr, this);
|
||||
// UML_MOV(block, mem(&m_core->m_arg0), I0);
|
||||
// UML_CALLC(block, cfunc_print_addr, this);
|
||||
//}
|
||||
|
||||
UML_LABEL(block, no_load);
|
||||
@ -1071,16 +1071,16 @@ void dspp_device::generate_arithmetic_opcode(drcuml_block &block, compiler_state
|
||||
if (m_drcuml.get()->logging())
|
||||
block.append_comment("_TRA");
|
||||
UML_MOV(block, I0, I2); // alu_res = alu_a;
|
||||
UML_MOV(block, mem(&m_core->m_flag_over), 0); // m_core->m_flag_over = 0;
|
||||
UML_MOV(block, mem(&m_core->m_flag_carry), 0); // m_core->m_flag_carry = 0;
|
||||
UML_MOV(block, mem(&m_core->m_flag_over), 0); // m_core->m_flag_over = 0;
|
||||
UML_MOV(block, mem(&m_core->m_flag_carry), 0); // m_core->m_flag_carry = 0;
|
||||
break;
|
||||
|
||||
case 1: // _NEG
|
||||
if (m_drcuml.get()->logging())
|
||||
block.append_comment("_NEG");
|
||||
UML_SUB(block, I0, 0, I3); // alu_res = -alu_b;
|
||||
UML_MOV(block, mem(&m_core->m_flag_over), 0); // m_core->m_flag_over = 0;
|
||||
UML_MOV(block, mem(&m_core->m_flag_carry), 0); // m_core->m_flag_carry = 0;
|
||||
UML_MOV(block, mem(&m_core->m_flag_over), 0); // m_core->m_flag_over = 0;
|
||||
UML_MOV(block, mem(&m_core->m_flag_carry), 0); // m_core->m_flag_carry = 0;
|
||||
break;
|
||||
|
||||
case 2: // _+
|
||||
@ -1092,175 +1092,175 @@ void dspp_device::generate_arithmetic_opcode(drcuml_block &block, compiler_state
|
||||
|
||||
UML_XOR(block, I3, I2, I3);
|
||||
UML_TEST(block, I3, 0x80000);
|
||||
UML_JMPc(block, COND_NZ, skip_over); // if ((alu_a & 0x80000) == (alu_b & 0x80000) &&
|
||||
UML_JMPc(block, COND_NZ, skip_over); // if ((alu_a & 0x80000) == (alu_b & 0x80000) &&
|
||||
UML_XOR(block, I3, I2, I0);
|
||||
UML_TEST(block, I3, 0x80000); // (alu_a & 0x80000) != (alu_res & 0x80000))
|
||||
UML_MOVc(block, COND_NZ, mem(&m_core->m_flag_over), 1); // m_core->m_flag_over = 1;
|
||||
UML_TEST(block, I3, 0x80000); // (alu_a & 0x80000) != (alu_res & 0x80000))
|
||||
UML_MOVc(block, COND_NZ, mem(&m_core->m_flag_over), 1); // m_core->m_flag_over = 1;
|
||||
|
||||
UML_LABEL(block, skip_over);
|
||||
UML_TEST(block, I0, 0x00100000); // if (alu_res & 0x00100000)
|
||||
UML_MOVc(block, COND_NZ, mem(&m_core->m_flag_carry), 1); // m_core->m_flag_carry = 1;
|
||||
UML_TEST(block, I0, 0x00100000); // if (alu_res & 0x00100000)
|
||||
UML_MOVc(block, COND_NZ, mem(&m_core->m_flag_carry), 1); // m_core->m_flag_carry = 1;
|
||||
// else
|
||||
UML_MOVc(block, COND_Z, mem(&m_core->m_flag_carry), 0); // m_core->m_flag_carry = 0;
|
||||
UML_MOVc(block, COND_Z, mem(&m_core->m_flag_carry), 0); // m_core->m_flag_carry = 0;
|
||||
break;
|
||||
|
||||
case 3: // _+C
|
||||
if (m_drcuml.get()->logging())
|
||||
block.append_comment("_+C");
|
||||
UML_SHL(block, I3, mem(&m_core->m_flag_carry), 4);
|
||||
UML_ADD(block, I0, I2, I3); // alu_res = alu_a + (m_core->m_flag_carry << 4);
|
||||
UML_ADD(block, I0, I2, I3); // alu_res = alu_a + (m_core->m_flag_carry << 4);
|
||||
|
||||
UML_MOV(block, mem(&m_core->m_flag_over), 0); // m_core->m_flag_over = 0;
|
||||
UML_MOV(block, mem(&m_core->m_flag_over), 0); // m_core->m_flag_over = 0;
|
||||
|
||||
UML_TEST(block, I0, 0x00100000); // if (alu_res & 0x00100000)
|
||||
UML_MOVc(block, COND_NZ, mem(&m_core->m_flag_carry), 1); // m_core->m_flag_carry = 1;
|
||||
UML_TEST(block, I0, 0x00100000); // if (alu_res & 0x00100000)
|
||||
UML_MOVc(block, COND_NZ, mem(&m_core->m_flag_carry), 1); // m_core->m_flag_carry = 1;
|
||||
// else
|
||||
UML_MOVc(block, COND_Z, mem(&m_core->m_flag_carry), 0); // m_core->m_flag_carry = 0;
|
||||
UML_MOVc(block, COND_Z, mem(&m_core->m_flag_carry), 0); // m_core->m_flag_carry = 0;
|
||||
break;
|
||||
|
||||
case 4: // _-
|
||||
if (m_drcuml.get()->logging())
|
||||
block.append_comment("_-");
|
||||
UML_SUB(block, I0, I2, I3); // alu_res = alu_a - alu_b;
|
||||
UML_SUB(block, I0, I2, I3); // alu_res = alu_a - alu_b;
|
||||
|
||||
UML_MOV(block, mem(&m_core->m_flag_over), 0);
|
||||
|
||||
UML_XOR(block, I3, I3, 0xffffffffU);
|
||||
UML_XOR(block, I3, I2, I3);
|
||||
UML_TEST(block, I3, 0x80000);
|
||||
UML_JMPc(block, COND_NZ, skip_over); // if ((alu_a & 0x80000) == (~alu_b & 0x80000) &&
|
||||
UML_JMPc(block, COND_NZ, skip_over); // if ((alu_a & 0x80000) == (~alu_b & 0x80000) &&
|
||||
UML_XOR(block, I3, I2, I0);
|
||||
UML_TEST(block, I3, 0x80000); // (alu_a & 0x80000) != (alu_res & 0x80000))
|
||||
UML_MOVc(block, COND_NZ, mem(&m_core->m_flag_over), 1); // m_core->m_flag_over = 1;
|
||||
UML_TEST(block, I3, 0x80000); // (alu_a & 0x80000) != (alu_res & 0x80000))
|
||||
UML_MOVc(block, COND_NZ, mem(&m_core->m_flag_over), 1); // m_core->m_flag_over = 1;
|
||||
|
||||
UML_LABEL(block, skip_over);
|
||||
UML_TEST(block, I0, 0x00100000); // if (alu_res & 0x00100000)
|
||||
UML_MOVc(block, COND_NZ, mem(&m_core->m_flag_carry), 1); // m_core->m_flag_carry = 1;
|
||||
UML_TEST(block, I0, 0x00100000); // if (alu_res & 0x00100000)
|
||||
UML_MOVc(block, COND_NZ, mem(&m_core->m_flag_carry), 1); // m_core->m_flag_carry = 1;
|
||||
// else
|
||||
UML_MOVc(block, COND_Z, mem(&m_core->m_flag_carry), 0); // m_core->m_flag_carry = 0;
|
||||
UML_MOVc(block, COND_Z, mem(&m_core->m_flag_carry), 0); // m_core->m_flag_carry = 0;
|
||||
break;
|
||||
|
||||
case 5: // _-B
|
||||
if (m_drcuml.get()->logging())
|
||||
block.append_comment("_-B");
|
||||
UML_SHL(block, I3, mem(&m_core->m_flag_carry), 4);
|
||||
UML_SUB(block, I0, I2, I3); // alu_res = alu_a - (m_core->m_flag_carry << 4);
|
||||
UML_SUB(block, I0, I2, I3); // alu_res = alu_a - (m_core->m_flag_carry << 4);
|
||||
|
||||
UML_MOV(block, mem(&m_core->m_flag_over), 0); // m_core->m_flag_over = 0;
|
||||
UML_MOV(block, mem(&m_core->m_flag_over), 0); // m_core->m_flag_over = 0;
|
||||
|
||||
UML_TEST(block, I0, 0x00100000); // if (alu_res & 0x00100000)
|
||||
UML_MOVc(block, COND_NZ, mem(&m_core->m_flag_carry), 1); // m_core->m_flag_carry = 1;
|
||||
UML_TEST(block, I0, 0x00100000); // if (alu_res & 0x00100000)
|
||||
UML_MOVc(block, COND_NZ, mem(&m_core->m_flag_carry), 1); // m_core->m_flag_carry = 1;
|
||||
// else
|
||||
UML_MOVc(block, COND_Z, mem(&m_core->m_flag_carry), 0); // m_core->m_flag_carry = 0;
|
||||
UML_MOVc(block, COND_Z, mem(&m_core->m_flag_carry), 0); // m_core->m_flag_carry = 0;
|
||||
break;
|
||||
|
||||
case 6: // _++
|
||||
if (m_drcuml.get()->logging())
|
||||
block.append_comment("_++");
|
||||
UML_ADD(block, I0, I2, 1); // alu_res = alu_a + 1;
|
||||
UML_ADD(block, I0, I2, 1); // alu_res = alu_a + 1;
|
||||
|
||||
UML_XOR(block, I3, I2, 0x80000);
|
||||
UML_AND(block, I3, I3, I0);
|
||||
UML_TEST(block, I3, 0x80000);
|
||||
UML_MOVc(block, COND_NZ, mem(&m_core->m_flag_over), 1);
|
||||
UML_MOVc(block, COND_Z, mem(&m_core->m_flag_over), 0); // m_core->m_flag_over = !(alu_a & 0x80000) && (alu_res & 0x80000);
|
||||
UML_MOVc(block, COND_Z, mem(&m_core->m_flag_over), 0); // m_core->m_flag_over = !(alu_a & 0x80000) && (alu_res & 0x80000);
|
||||
|
||||
UML_MOV(block, mem(&m_core->m_flag_carry), 0); // m_core->m_flag_carry = 0;
|
||||
UML_MOV(block, mem(&m_core->m_flag_carry), 0); // m_core->m_flag_carry = 0;
|
||||
break;
|
||||
|
||||
case 7: // _--
|
||||
if (m_drcuml.get()->logging())
|
||||
block.append_comment("_--");
|
||||
UML_SUB(block, I0, I2, 1); // alu_res = alu_a - 1;
|
||||
UML_SUB(block, I0, I2, 1); // alu_res = alu_a - 1;
|
||||
|
||||
UML_XOR(block, I3, I0, 0x80000);
|
||||
UML_AND(block, I3, I3, I2);
|
||||
UML_TEST(block, I3, 0x80000);
|
||||
UML_MOVc(block, COND_NZ, mem(&m_core->m_flag_over), 1);
|
||||
UML_MOVc(block, COND_Z, mem(&m_core->m_flag_over), 0); // m_core->m_flag_over = (alu_a & 0x80000) && !(alu_res & 0x80000);
|
||||
UML_MOVc(block, COND_Z, mem(&m_core->m_flag_over), 0); // m_core->m_flag_over = (alu_a & 0x80000) && !(alu_res & 0x80000);
|
||||
|
||||
UML_MOV(block, mem(&m_core->m_flag_carry), 0); // m_core->m_flag_carry = 0;
|
||||
UML_MOV(block, mem(&m_core->m_flag_carry), 0); // m_core->m_flag_carry = 0;
|
||||
break;
|
||||
|
||||
case 8: // _TRL
|
||||
if (m_drcuml.get()->logging())
|
||||
block.append_comment("_TRL");
|
||||
UML_MOV(block, I0, I2); // alu_res = alu_a;
|
||||
UML_MOV(block, mem(&m_core->m_flag_over), 0); // m_core->m_flag_over = 0;
|
||||
UML_MOV(block, mem(&m_core->m_flag_carry), 0); // m_core->m_flag_carry = 0;
|
||||
UML_MOV(block, I0, I2); // alu_res = alu_a;
|
||||
UML_MOV(block, mem(&m_core->m_flag_over), 0); // m_core->m_flag_over = 0;
|
||||
UML_MOV(block, mem(&m_core->m_flag_carry), 0); // m_core->m_flag_carry = 0;
|
||||
break;
|
||||
|
||||
case 9: // _NOT
|
||||
if (m_drcuml.get()->logging())
|
||||
block.append_comment("_NOT");
|
||||
UML_XOR(block, I0, I2, 0xffffffff); // alu_res = ~alu_a;
|
||||
UML_MOV(block, mem(&m_core->m_flag_over), 0); // m_core->m_flag_over = 0;
|
||||
UML_MOV(block, mem(&m_core->m_flag_carry), 0); // m_core->m_flag_carry = 0;
|
||||
UML_XOR(block, I0, I2, 0xffffffff); // alu_res = ~alu_a;
|
||||
UML_MOV(block, mem(&m_core->m_flag_over), 0); // m_core->m_flag_over = 0;
|
||||
UML_MOV(block, mem(&m_core->m_flag_carry), 0); // m_core->m_flag_carry = 0;
|
||||
break;
|
||||
|
||||
case 10: // _AND
|
||||
if (m_drcuml.get()->logging())
|
||||
block.append_comment("_AND");
|
||||
UML_AND(block, I0, I2, I3); // alu_res = alu_a & alu_b;
|
||||
UML_MOV(block, mem(&m_core->m_flag_over), 0); // m_core->m_flag_over = 0;
|
||||
UML_MOV(block, mem(&m_core->m_flag_carry), 0); // m_core->m_flag_carry = 0;
|
||||
UML_AND(block, I0, I2, I3); // alu_res = alu_a & alu_b;
|
||||
UML_MOV(block, mem(&m_core->m_flag_over), 0); // m_core->m_flag_over = 0;
|
||||
UML_MOV(block, mem(&m_core->m_flag_carry), 0); // m_core->m_flag_carry = 0;
|
||||
break;
|
||||
|
||||
case 11: // _NAND
|
||||
if (m_drcuml.get()->logging())
|
||||
block.append_comment("_NAND");
|
||||
UML_AND(block, I0, I2, I3);
|
||||
UML_XOR(block, I0, I0, 0xffffffff); // alu_res = ~(alu_a & alu_b);
|
||||
UML_MOV(block, mem(&m_core->m_flag_over), 0); // m_core->m_flag_over = 0;
|
||||
UML_MOV(block, mem(&m_core->m_flag_carry), 0); // m_core->m_flag_carry = 0;
|
||||
UML_XOR(block, I0, I0, 0xffffffff); // alu_res = ~(alu_a & alu_b);
|
||||
UML_MOV(block, mem(&m_core->m_flag_over), 0); // m_core->m_flag_over = 0;
|
||||
UML_MOV(block, mem(&m_core->m_flag_carry), 0); // m_core->m_flag_carry = 0;
|
||||
break;
|
||||
|
||||
case 12: // _OR
|
||||
if (m_drcuml.get()->logging())
|
||||
block.append_comment("_OR");
|
||||
UML_OR(block, I0, I2, I3); // alu_res = alu_a | alu_b;
|
||||
UML_MOV(block, mem(&m_core->m_flag_over), 0); // m_core->m_flag_over = 0;
|
||||
UML_MOV(block, mem(&m_core->m_flag_carry), 0); // m_core->m_flag_carry = 0;
|
||||
UML_OR(block, I0, I2, I3); // alu_res = alu_a | alu_b;
|
||||
UML_MOV(block, mem(&m_core->m_flag_over), 0); // m_core->m_flag_over = 0;
|
||||
UML_MOV(block, mem(&m_core->m_flag_carry), 0); // m_core->m_flag_carry = 0;
|
||||
break;
|
||||
|
||||
case 13: // _NOR
|
||||
if (m_drcuml.get()->logging())
|
||||
block.append_comment("_NOR");
|
||||
UML_OR(block, I0, I2, I3);
|
||||
UML_XOR(block, I0, I0, 0xffffffff); // alu_res = ~(alu_a | alu_b);
|
||||
UML_MOV(block, mem(&m_core->m_flag_over), 0); // m_core->m_flag_over = 0;
|
||||
UML_MOV(block, mem(&m_core->m_flag_carry), 0); // m_core->m_flag_carry = 0;
|
||||
UML_XOR(block, I0, I0, 0xffffffff); // alu_res = ~(alu_a | alu_b);
|
||||
UML_MOV(block, mem(&m_core->m_flag_over), 0); // m_core->m_flag_over = 0;
|
||||
UML_MOV(block, mem(&m_core->m_flag_carry), 0); // m_core->m_flag_carry = 0;
|
||||
break;
|
||||
|
||||
case 14: // _XOR
|
||||
if (m_drcuml.get()->logging())
|
||||
block.append_comment("_XOR");
|
||||
UML_XOR(block, I0, I2, I3); // alu_res = alu_a ^ alu_b;
|
||||
UML_MOV(block, mem(&m_core->m_flag_over), 0); // m_core->m_flag_over = 0;
|
||||
UML_MOV(block, mem(&m_core->m_flag_carry), 0); // m_core->m_flag_carry = 0;
|
||||
UML_XOR(block, I0, I2, I3); // alu_res = alu_a ^ alu_b;
|
||||
UML_MOV(block, mem(&m_core->m_flag_over), 0); // m_core->m_flag_over = 0;
|
||||
UML_MOV(block, mem(&m_core->m_flag_carry), 0); // m_core->m_flag_carry = 0;
|
||||
break;
|
||||
|
||||
case 15: // _XNOR
|
||||
if (m_drcuml.get()->logging())
|
||||
block.append_comment("_XNOR");
|
||||
UML_XOR(block, I0, I2, I3);
|
||||
UML_XOR(block, I0, I0, 0xffffffff); // alu_res = ~(alu_a ^ alu_b);
|
||||
UML_MOV(block, mem(&m_core->m_flag_over), 0); // m_core->m_flag_over = 0;
|
||||
UML_MOV(block, mem(&m_core->m_flag_carry), 0); // m_core->m_flag_carry = 0;
|
||||
UML_XOR(block, I0, I0, 0xffffffff); // alu_res = ~(alu_a ^ alu_b);
|
||||
UML_MOV(block, mem(&m_core->m_flag_over), 0); // m_core->m_flag_over = 0;
|
||||
UML_MOV(block, mem(&m_core->m_flag_carry), 0); // m_core->m_flag_carry = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
UML_TEST(block, I0, 0x00080000);
|
||||
UML_MOVc(block, COND_NZ, mem(&m_core->m_flag_neg), 1);
|
||||
UML_MOVc(block, COND_Z, mem(&m_core->m_flag_neg), 0); // m_core->m_flag_neg = (alu_res & 0x00080000) != 0;
|
||||
UML_MOVc(block, COND_Z, mem(&m_core->m_flag_neg), 0); // m_core->m_flag_neg = (alu_res & 0x00080000) != 0;
|
||||
|
||||
UML_TEST(block, I0, 0x000ffff0);
|
||||
UML_MOVc(block, COND_Z, mem(&m_core->m_flag_zero), 1);
|
||||
UML_MOVc(block, COND_NZ, mem(&m_core->m_flag_zero), 0); // m_core->m_flag_zero = (alu_res & 0x000ffff0) == 0;
|
||||
UML_MOVc(block, COND_NZ, mem(&m_core->m_flag_zero), 0); // m_core->m_flag_zero = (alu_res & 0x000ffff0) == 0;
|
||||
|
||||
UML_TEST(block, I0, 0x0000000f);
|
||||
UML_MOVc(block, COND_Z, mem(&m_core->m_flag_exact), 1);
|
||||
UML_MOVc(block, COND_NZ, mem(&m_core->m_flag_exact), 0); // m_core->m_flag_exact = (alu_res & 0x0000000f) == 0;
|
||||
UML_MOVc(block, COND_NZ, mem(&m_core->m_flag_exact), 0); // m_core->m_flag_exact = (alu_res & 0x0000000f) == 0;
|
||||
|
||||
// ALU_RES = I3
|
||||
UML_MOV(block, I3, I0);
|
||||
@ -1269,9 +1269,9 @@ void dspp_device::generate_arithmetic_opcode(drcuml_block &block, compiler_state
|
||||
static const int32_t shifts[8] = { 0, 1, 2, 3, 4, 5, 8, 16 };
|
||||
|
||||
if (barrel_code == 8)
|
||||
generate_read_next_operand(block, compiler, desc); // I0 = barrel_code;
|
||||
generate_read_next_operand(block, compiler, desc); // I0 = barrel_code;
|
||||
else
|
||||
UML_MOV(block, I0, barrel_code); // I0 = barrel_code;
|
||||
UML_MOV(block, I0, barrel_code); // I0 = barrel_code;
|
||||
|
||||
code_label left_shift = compiler->labelnum++;
|
||||
code_label done_shift = compiler->labelnum++;
|
||||
@ -1279,57 +1279,57 @@ void dspp_device::generate_arithmetic_opcode(drcuml_block &block, compiler_state
|
||||
code_label no_clip = compiler->labelnum++;
|
||||
code_label no_writeback = compiler->labelnum++;
|
||||
code_label done = compiler->labelnum++;
|
||||
UML_TEST(block, I0, 8); // if (barrel_code & 8)
|
||||
UML_JMPc(block, COND_Z, left_shift); // {
|
||||
UML_TEST(block, I0, 8); // if (barrel_code & 8)
|
||||
UML_JMPc(block, COND_Z, left_shift); // {
|
||||
UML_XOR(block, I0, I0, 0xffffffffU);
|
||||
UML_ADD(block, I0, I0, 1);
|
||||
UML_AND(block, I0, I0, 7);
|
||||
UML_LOAD(block, I0, (void *)shifts, I0, SIZE_DWORD, SCALE_x8); // uint32_t shift = shifts[(~barrel_code + 1) & 7];
|
||||
if (alu_op < 8) // if (alu_op < 8)
|
||||
{ // {
|
||||
UML_LOAD(block, I0, (void *)shifts, I0, SIZE_DWORD, SCALE_x8); // uint32_t shift = shifts[(~barrel_code + 1) & 7];
|
||||
if (alu_op < 8) // if (alu_op < 8)
|
||||
{ // {
|
||||
UML_SHL(block, I3, I3, 12);
|
||||
UML_SAR(block, I3, I3, 12); // // Arithmetic
|
||||
UML_SAR(block, mem(&m_core->m_acc), I3, I0); // m_core->m_acc = sign_extend20(alu_res) >> shift;
|
||||
} // }
|
||||
else // else
|
||||
{ // {
|
||||
UML_AND(block, I3, I3, 0x000fffff); // // Logical
|
||||
UML_SHR(block, mem(&m_core->m_acc), I3, I0); // m_core->m_acc = (alu_res & 0xfffff) >> shift;
|
||||
} // }
|
||||
UML_JMP(block, done_shift); // }
|
||||
UML_LABEL(block, left_shift); // else
|
||||
UML_SAR(block, I3, I3, 12); // // Arithmetic
|
||||
UML_SAR(block, mem(&m_core->m_acc), I3, I0); // m_core->m_acc = sign_extend20(alu_res) >> shift;
|
||||
} // }
|
||||
else // else
|
||||
{ // {
|
||||
UML_AND(block, I3, I3, 0x000fffff); // // Logical
|
||||
UML_SHR(block, mem(&m_core->m_acc), I3, I0); // m_core->m_acc = (alu_res & 0xfffff) >> shift;
|
||||
} // }
|
||||
UML_JMP(block, done_shift); // }
|
||||
UML_LABEL(block, left_shift); // else
|
||||
// {
|
||||
UML_LOAD(block, I0, (void *)shifts, I0, SIZE_DWORD, SCALE_x8); // uint32_t shift = shifts[barrel_code];
|
||||
UML_CMP(block, I0, 16); // if (shift != 16)
|
||||
UML_JMPc(block, COND_E, no_shift); // {
|
||||
UML_LOAD(block, I0, (void *)shifts, I0, SIZE_DWORD, SCALE_x8); // uint32_t shift = shifts[barrel_code];
|
||||
UML_CMP(block, I0, 16); // if (shift != 16)
|
||||
UML_JMPc(block, COND_E, no_shift); // {
|
||||
UML_SHL(block, I3, I3, 12);
|
||||
UML_SAR(block, I3, I3, 12);
|
||||
UML_SHL(block, mem(&m_core->m_acc), I3, I0); // m_core->m_acc = sign_extend20(alu_res) << shift;
|
||||
UML_JMP(block, done_shift); // }
|
||||
UML_SHL(block, mem(&m_core->m_acc), I3, I0); // m_core->m_acc = sign_extend20(alu_res) << shift;
|
||||
UML_JMP(block, done_shift); // }
|
||||
// else
|
||||
UML_LABEL(block, no_shift); // {
|
||||
UML_TEST(block, mem(&m_core->m_flag_over), 1); // // Clip and saturate
|
||||
UML_JMPc(block, COND_Z, no_clip); // if (m_core->m_flag_over)
|
||||
UML_LABEL(block, no_shift); // {
|
||||
UML_TEST(block, mem(&m_core->m_flag_over), 1); // // Clip and saturate
|
||||
UML_JMPc(block, COND_Z, no_clip); // if (m_core->m_flag_over)
|
||||
UML_TEST(block, mem(&m_core->m_flag_neg), 1);
|
||||
UML_MOVc(block, COND_NZ, mem(&m_core->m_acc), 0x7ffff); // m_core->m_acc = m_core->m_flag_neg ? 0x7ffff : 0xfff80000;
|
||||
UML_MOVc(block, COND_NZ, mem(&m_core->m_acc), 0x7ffff); // m_core->m_acc = m_core->m_flag_neg ? 0x7ffff : 0xfff80000;
|
||||
UML_MOVc(block, COND_Z, mem(&m_core->m_acc), 0xfff80000);
|
||||
UML_JMP(block, done_shift); // else
|
||||
UML_JMP(block, done_shift); // else
|
||||
UML_LABEL(block, no_clip);
|
||||
UML_SHL(block, I3, I3, 12); // sign_extend20(alu_res);
|
||||
UML_SAR(block, mem(&m_core->m_acc), I3, 12); // }
|
||||
UML_LABEL(block, done_shift); // }
|
||||
UML_SHL(block, I3, I3, 12); // sign_extend20(alu_res);
|
||||
UML_SAR(block, mem(&m_core->m_acc), I3, 12); // }
|
||||
UML_LABEL(block, done_shift); // }
|
||||
|
||||
UML_CMP(block, mem(&m_core->m_writeback), 0); // if (m_core->m_writeback >= 0)
|
||||
UML_JMPc(block, COND_L, no_writeback); // {
|
||||
UML_CMP(block, mem(&m_core->m_writeback), 0); // if (m_core->m_writeback >= 0)
|
||||
UML_JMPc(block, COND_L, no_writeback); // {
|
||||
UML_SHR(block, I0, mem(&m_core->m_acc), 4);
|
||||
UML_MOV(block, I1, mem(&m_core->m_writeback));
|
||||
UML_CALLH(block, *m_dm_write16); // write_data(m_core->m_writeback, m_core->m_acc >> 4);
|
||||
UML_MOV(block, mem(&m_core->m_writeback), 0xffffffffU); // m_core->m_writeback = -1;
|
||||
UML_JMP(block, done); // }
|
||||
UML_CALLH(block, *m_dm_write16); // write_data(m_core->m_writeback, m_core->m_acc >> 4);
|
||||
UML_MOV(block, mem(&m_core->m_writeback), 0xffffffffU); // m_core->m_writeback = -1;
|
||||
UML_JMP(block, done); // }
|
||||
|
||||
UML_LABEL(block, no_writeback);
|
||||
UML_CMP(block, mem(&m_core->m_opidx), numops); // else if (m_core->m_opidx < numops)
|
||||
UML_JMPc(block, COND_GE, done); // {
|
||||
generate_write_next_operand(block, compiler); // write_next_operand(m_core->m_acc >> 4);
|
||||
UML_LABEL(block, done); // }
|
||||
UML_CMP(block, mem(&m_core->m_opidx), numops); // else if (m_core->m_opidx < numops)
|
||||
UML_JMPc(block, COND_GE, done); // {
|
||||
generate_write_next_operand(block, compiler); // write_next_operand(m_core->m_acc >> 4);
|
||||
UML_LABEL(block, done); // }
|
||||
}
|
||||
|
@ -7,7 +7,7 @@
|
||||
The dies for these are marked
|
||||
|
||||
SSD 2000 NEC 85605-621
|
||||
|
||||
|
||||
SSD 2002 NEC 85054-611
|
||||
|
||||
6502 with custom opcodes
|
||||
@ -17,12 +17,12 @@
|
||||
|
||||
see xavix.cpp for basic notes
|
||||
|
||||
the 2000 chip has more opcodes than the 97/98 chips in xavix.cpp, and
|
||||
is a similar die structure to the 2002 chip, but doesn't seem to have any
|
||||
additional capabilities.
|
||||
the 2000 chip has more opcodes than the 97/98 chips in xavix.cpp, and
|
||||
is a similar die structure to the 2002 chip, but doesn't seem to have any
|
||||
additional capabilities.
|
||||
|
||||
the 2002 chip seems to be the one that was officially dubbed 'SuperXaviX'
|
||||
and has additional video capabilities on top of the extended opcodes.
|
||||
the 2002 chip seems to be the one that was officially dubbed 'SuperXaviX'
|
||||
and has additional video capabilities on top of the extended opcodes.
|
||||
|
||||
|
||||
***************************************************************************/
|
||||
|
@ -16,10 +16,10 @@
|
||||
#include "ps2vu.h"
|
||||
#include <cmath>
|
||||
|
||||
#define ENABLE_OVERFLOWS (0)
|
||||
#define ENABLE_EE_ELF_LOADER (0)
|
||||
#define ENABLE_EE_DECI2 (0)
|
||||
#define DELAY_SLOT_EXCEPTION_HACK (0)
|
||||
#define ENABLE_OVERFLOWS (0)
|
||||
#define ENABLE_EE_ELF_LOADER (0)
|
||||
#define ENABLE_EE_DECI2 (0)
|
||||
#define DELAY_SLOT_EXCEPTION_HACK (0)
|
||||
|
||||
/***************************************************************************
|
||||
HELPER MACROS
|
||||
|
@ -437,7 +437,7 @@ protected:
|
||||
bool m_bigendian;
|
||||
uint32_t m_byte_xor;
|
||||
uint32_t m_word_xor;
|
||||
uint32_t m_dword_xor;
|
||||
uint32_t m_dword_xor;
|
||||
data_accessors m_memory;
|
||||
|
||||
/* cache memory */
|
||||
|
@ -333,7 +333,7 @@ void mips3_device::code_compile_block(uint8_t mode, offs_t pc)
|
||||
else
|
||||
{
|
||||
UML_LABEL(block, seqhead->pc | 0x80000000); // label seqhead->pc | 0x80000000
|
||||
UML_HASHJMP(block, m_core->mode, seqhead->pc, *m_nocode); // hashjmp <mode>,seqhead->pc,nocode
|
||||
UML_HASHJMP(block, m_core->mode, seqhead->pc, *m_nocode); // hashjmp <mode>,seqhead->pc,nocode
|
||||
continue;
|
||||
}
|
||||
|
||||
@ -367,11 +367,11 @@ void mips3_device::code_compile_block(uint8_t mode, offs_t pc)
|
||||
/* if the last instruction can change modes, use a variable mode; otherwise, assume the same mode */
|
||||
if (seqlast->flags & OPFLAG_CAN_CHANGE_MODES)
|
||||
{
|
||||
UML_HASHJMP(block, mem(&m_core->mode), nextpc, *m_nocode); // hashjmp <mode>,nextpc,nocode
|
||||
UML_HASHJMP(block, mem(&m_core->mode), nextpc, *m_nocode); // hashjmp <mode>,nextpc,nocode
|
||||
}
|
||||
else if (seqlast->next() == nullptr || seqlast->next()->pc != nextpc)
|
||||
{
|
||||
UML_HASHJMP(block, m_core->mode, nextpc, *m_nocode); // hashjmp <mode>,nextpc,nocode
|
||||
UML_HASHJMP(block, m_core->mode, nextpc, *m_nocode); // hashjmp <mode>,nextpc,nocode
|
||||
}
|
||||
}
|
||||
|
||||
@ -1308,13 +1308,13 @@ void mips3_device::generate_delay_slot_and_branch(drcuml_block &block, compiler_
|
||||
}
|
||||
else
|
||||
{
|
||||
UML_HASHJMP(block, m_core->mode, desc->targetpc, *m_nocode); // hashjmp <mode>,desc->targetpc,nocode
|
||||
UML_HASHJMP(block, m_core->mode, desc->targetpc, *m_nocode); // hashjmp <mode>,desc->targetpc,nocode
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
generate_update_cycles(block, compiler_temp, uml::mem(&m_core->jmpdest), true); // <subtract cycles>
|
||||
UML_HASHJMP(block, m_core->mode, mem(&m_core->jmpdest), *m_nocode); // hashjmp <mode>,<rsreg>,nocode
|
||||
UML_HASHJMP(block, m_core->mode, mem(&m_core->jmpdest), *m_nocode); // hashjmp <mode>,<rsreg>,nocode
|
||||
}
|
||||
|
||||
/* update the label */
|
||||
|
@ -26,15 +26,15 @@
|
||||
***************************************************************************/
|
||||
|
||||
/* map variables */
|
||||
#define MAPVAR_PC M0
|
||||
#define MAPVAR_CYCLES M1
|
||||
#define MAPVAR_PC M0
|
||||
#define MAPVAR_CYCLES M1
|
||||
|
||||
#define SINGLE_INSTRUCTION_MODE (0)
|
||||
#define SINGLE_INSTRUCTION_MODE (0)
|
||||
|
||||
#define ENABLE_UNSP_DRC (1)
|
||||
#define ENABLE_UNSP_DRC (1)
|
||||
|
||||
#define UNSP_LOG_OPCODES (0)
|
||||
#define UNSP_LOG_REGS (0)
|
||||
#define UNSP_LOG_OPCODES (0)
|
||||
#define UNSP_LOG_REGS (0)
|
||||
|
||||
//**************************************************************************
|
||||
// TYPE DEFINITIONS
|
||||
|
@ -14,9 +14,9 @@
|
||||
#define UNSP_S 0x0080
|
||||
#define UNSP_C 0x0040
|
||||
|
||||
#define UNSP_N_SHIFT 9
|
||||
#define UNSP_Z_SHIFT 8
|
||||
#define UNSP_S_SHIFT 7
|
||||
#define UNSP_C_SHIFT 6
|
||||
#define UNSP_N_SHIFT 9
|
||||
#define UNSP_Z_SHIFT 8
|
||||
#define UNSP_S_SHIFT 7
|
||||
#define UNSP_C_SHIFT 6
|
||||
|
||||
#endif // MAME_CPU_UNSP_UNSPDEFS_H
|
||||
#endif // MAME_CPU_UNSP_UNSPDEFS_H
|
||||
|
@ -113,13 +113,13 @@ void unsp_device::code_flush_cache()
|
||||
/* generate the entry point and out-of-cycles handlers */
|
||||
static_generate_entry_point();
|
||||
static_generate_nocode_handler();
|
||||
static_generate_out_of_cycles();
|
||||
static_generate_out_of_cycles();
|
||||
|
||||
static_generate_memory_accessor(false, "read", m_mem_read);
|
||||
static_generate_memory_accessor(true, "write", m_mem_write);
|
||||
static_generate_trigger_fiq();
|
||||
static_generate_trigger_irq();
|
||||
static_generate_check_interrupts();
|
||||
static_generate_memory_accessor(false, "read", m_mem_read);
|
||||
static_generate_memory_accessor(true, "write", m_mem_write);
|
||||
static_generate_trigger_fiq();
|
||||
static_generate_trigger_irq();
|
||||
static_generate_check_interrupts();
|
||||
}
|
||||
|
||||
catch (drcuml_block::abort_compilation &)
|
||||
|
@ -29,7 +29,7 @@ public:
|
||||
set_timer0_clock(clk0.value());
|
||||
set_timer1_clock(clk1.value());
|
||||
}
|
||||
|
||||
|
||||
nsc810_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
|
||||
|
||||
auto portA_read_callback() { return m_portA_r.bind(); }
|
||||
|
@ -21,7 +21,7 @@
|
||||
#define LOG_PACKETS (1U << 1)
|
||||
#define LOG_TX (1U << 2)
|
||||
#define LOG_RX (1U << 3)
|
||||
#define LOG_FILTER (1U << 4)
|
||||
#define LOG_FILTER (1U << 4)
|
||||
//#define VERBOSE (LOG_GENERAL | LOG_PACKETS | LOG_TX | LOG_RX | LOG_FILTER)
|
||||
#include "logmacro.h"
|
||||
|
||||
@ -89,7 +89,7 @@ void smc91c9x_device::device_start()
|
||||
|
||||
// These registers don't get cleared on reset
|
||||
m_reg[B1_CONFIG] = 0x0030; m_regmask[B1_CONFIG] = 0x17c6;
|
||||
m_reg[B1_BASE] = 0x1866; m_regmask[B1_BASE] = 0xfffe;
|
||||
m_reg[B1_BASE] = 0x1866; m_regmask[B1_BASE] = 0xfffe;
|
||||
|
||||
m_reg[B1_IA0_1] = 0x0000; m_regmask[B1_IA0_1] = 0xffff;
|
||||
m_reg[B1_IA2_3] = 0x0000; m_regmask[B1_IA2_3] = 0xffff;
|
||||
@ -370,8 +370,8 @@ int smc91c9x_device::address_filter(u8 *buf)
|
||||
|
||||
/*-------------------------------------------------
|
||||
recv_start_cb - Start receiving packet
|
||||
A return value of 0 will stop rx processing in dinetwork device
|
||||
Any other value will be sent to the recv_complete_cb
|
||||
A return value of 0 will stop rx processing in dinetwork device
|
||||
Any other value will be sent to the recv_complete_cb
|
||||
-------------------------------------------------*/
|
||||
|
||||
int smc91c9x_device::recv_start_cb(u8 *buf, int length)
|
||||
@ -415,7 +415,7 @@ int smc91c9x_device::recv_start_cb(u8 *buf, int length)
|
||||
|
||||
/*-------------------------------------------------
|
||||
receive - Receive data into buffer
|
||||
Returns the buffer packet number + 1 if successful
|
||||
Returns the buffer packet number + 1 if successful
|
||||
-------------------------------------------------*/
|
||||
|
||||
int smc91c9x_device::receive(u8 *buf, int length)
|
||||
@ -889,16 +889,16 @@ WRITE16_MEMBER( smc91c9x_device::write )
|
||||
}
|
||||
if (VERBOSE & LOG_GENERAL)
|
||||
{
|
||||
if (data & FDSE) LOG(" FDSE\n");
|
||||
if (data & EPH_LOOP) LOG(" EPH LOOP\n");
|
||||
if (data & STP_SQET) LOG(" STP SQET\n");
|
||||
if (data & FDUPLX) LOG(" FDUPLX\n");
|
||||
if (data & MON_CSN) LOG(" MON_CSN\n");
|
||||
if (data & NOCRC) LOG(" NOCRC\n");
|
||||
if (data & PAD_EN) LOG(" PAD_EN\n");
|
||||
if (data & FORCOL) LOG(" FORCOL\n");
|
||||
if (data & LOOP) LOG(" LOOP\n");
|
||||
if (data & TXENA) LOG(" TXENA\n");
|
||||
if (data & FDSE) LOG(" FDSE\n");
|
||||
if (data & EPH_LOOP) LOG(" EPH LOOP\n");
|
||||
if (data & STP_SQET) LOG(" STP SQET\n");
|
||||
if (data & FDUPLX) LOG(" FDUPLX\n");
|
||||
if (data & MON_CSN) LOG(" MON_CSN\n");
|
||||
if (data & NOCRC) LOG(" NOCRC\n");
|
||||
if (data & PAD_EN) LOG(" PAD_EN\n");
|
||||
if (data & FORCOL) LOG(" FORCOL\n");
|
||||
if (data & LOOP) LOG(" LOOP\n");
|
||||
if (data & TXENA) LOG(" TXENA\n");
|
||||
}
|
||||
break;
|
||||
|
||||
@ -921,13 +921,13 @@ WRITE16_MEMBER( smc91c9x_device::write )
|
||||
|
||||
if (VERBOSE & LOG_GENERAL)
|
||||
{
|
||||
if (data & SOFT_RST) LOG(" SOFT RST\n");
|
||||
if (data & FILT_CAR) LOG(" FILT_CAR\n");
|
||||
if (data & STRIP_CRC) LOG(" STRIP CRC\n");
|
||||
if (data & RXEN) LOG(" RXEN\n");
|
||||
if (data & ALMUL) LOG(" ALMUL\n");
|
||||
if (data & PRMS) LOG(" PRMS\n");
|
||||
if (data & RX_ABORT) LOG(" RX_ABORT\n");
|
||||
if (data & SOFT_RST) LOG(" SOFT RST\n");
|
||||
if (data & FILT_CAR) LOG(" FILT_CAR\n");
|
||||
if (data & STRIP_CRC) LOG(" STRIP CRC\n");
|
||||
if (data & RXEN) LOG(" RXEN\n");
|
||||
if (data & ALMUL) LOG(" ALMUL\n");
|
||||
if (data & PRMS) LOG(" PRMS\n");
|
||||
if (data & RX_ABORT) LOG(" RX_ABORT\n");
|
||||
}
|
||||
break;
|
||||
|
||||
@ -972,16 +972,16 @@ WRITE16_MEMBER( smc91c9x_device::write )
|
||||
}
|
||||
if (VERBOSE & LOG_GENERAL)
|
||||
{
|
||||
if (data & RCV_BAD) LOG(" RCV_BAD\n");
|
||||
if (data & PWRDN) LOG(" PWRDN\n");
|
||||
if (data & WAKEUP_EN) LOG(" WAKEUP ENABLE\n");
|
||||
if (data & AUTO_RELEASE) LOG(" AUTO RELEASE\n");
|
||||
if (data & LE_ENABLE) LOG(" LE ENABLE\n");
|
||||
if (data & CR_ENABLE) LOG(" CR ENABLE\n");
|
||||
if (data & TE_ENABLE) LOG(" TE ENABLE\n");
|
||||
if (data & EEPROM_SEL) LOG(" EEPROM SELECT\n");
|
||||
if (data & RELOAD) LOG(" RELOAD\n");
|
||||
if (data & STORE) LOG(" STORE\n");
|
||||
if (data & RCV_BAD) LOG(" RCV_BAD\n");
|
||||
if (data & PWRDN) LOG(" PWRDN\n");
|
||||
if (data & WAKEUP_EN) LOG(" WAKEUP ENABLE\n");
|
||||
if (data & AUTO_RELEASE) LOG(" AUTO RELEASE\n");
|
||||
if (data & LE_ENABLE) LOG(" LE ENABLE\n");
|
||||
if (data & CR_ENABLE) LOG(" CR ENABLE\n");
|
||||
if (data & TE_ENABLE) LOG(" TE ENABLE\n");
|
||||
if (data & EEPROM_SEL) LOG(" EEPROM SELECT\n");
|
||||
if (data & RELOAD) LOG(" RELOAD\n");
|
||||
if (data & STORE) LOG(" STORE\n");
|
||||
}
|
||||
break;
|
||||
|
||||
|
@ -135,7 +135,7 @@ private:
|
||||
enum control_mask : u8 {
|
||||
EBUF_RX_ALWAYS = 0x40, // Always set on receive buffer control byte
|
||||
EBUF_ODD = 0x20, // Odd number of data payload bytes
|
||||
EBUF_CRC = 0x10 // Tx add CRC
|
||||
EBUF_CRC = 0x10 // Tx add CRC
|
||||
};
|
||||
|
||||
// Receive buffer status
|
||||
@ -165,7 +165,7 @@ private:
|
||||
LTX_MULT = 0x0008, // Last transmit frame was a multicast
|
||||
MULCOL = 0x0004, // Multiple collisions detected
|
||||
SNGLCOL = 0x0002, // Single collision detected
|
||||
TX_SUC = 0x0001 // Last transmit frame was successful
|
||||
TX_SUC = 0x0001 // Last transmit frame was successful
|
||||
};
|
||||
|
||||
// CTR register bits
|
||||
@ -179,7 +179,7 @@ private:
|
||||
TE_ENABLE = 0x0020, // Transmit Error enable
|
||||
EEPROM_SEL = 0x0004, // EEPROM address
|
||||
RELOAD = 0x0002, // Reload config from EEPROM
|
||||
STORE = 0x0001 // Store config to EEPROM
|
||||
STORE = 0x0001 // Store config to EEPROM
|
||||
};
|
||||
|
||||
// Transmit Control Register bits
|
||||
|
@ -5,7 +5,7 @@
|
||||
SunPlus SPG110-series SoC peripheral emulation
|
||||
|
||||
It is possible this shares some video features with spg110 and
|
||||
can be made a derived device
|
||||
can be made a derived device
|
||||
|
||||
**********************************************************************/
|
||||
|
||||
@ -60,12 +60,12 @@ void spg110_device::map(address_map &map)
|
||||
/*
|
||||
TIMER_CALLBACK_MEMBER(spg110_device::test_timer)
|
||||
{
|
||||
//
|
||||
//
|
||||
}
|
||||
*/
|
||||
void spg110_device::device_start()
|
||||
{
|
||||
// m_test_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(spg110_device::test_timer), this));
|
||||
// m_test_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(spg110_device::test_timer), this));
|
||||
}
|
||||
|
||||
void spg110_device::device_reset()
|
||||
@ -83,7 +83,7 @@ WRITE_LINE_MEMBER(spg110_device::vblank)
|
||||
if (!state)
|
||||
{
|
||||
m_cpu->set_state_unsynced(UNSP_IRQ0_LINE, ASSERT_LINE);
|
||||
// m_test_timer->adjust(attotime::from_usec(100), 0);
|
||||
// m_test_timer->adjust(attotime::from_usec(100), 0);
|
||||
}
|
||||
|
||||
return;
|
||||
|
@ -41,10 +41,10 @@ DEFINE_DEVICE_TYPE(SPG28X, spg28x_device, "spg28x", "SPG280-series System-on-a-C
|
||||
#define LOG_PPU_READS (1U << 22)
|
||||
#define LOG_PPU_WRITES (1U << 23)
|
||||
#define LOG_UNKNOWN_PPU (1U << 24)
|
||||
#define LOG_FIQ (1U << 25)
|
||||
#define LOG_FIQ (1U << 25)
|
||||
#define LOG_SIO (1U << 26)
|
||||
#define LOG_EXT_MEM (1U << 27)
|
||||
#define LOG_EXTINT (1U << 28)
|
||||
#define LOG_EXT_MEM (1U << 27)
|
||||
#define LOG_EXTINT (1U << 28)
|
||||
#define LOG_IO (LOG_IO_READS | LOG_IO_WRITES | LOG_IRQS | LOG_GPIO | LOG_UART | LOG_I2C | LOG_DMA | LOG_TIMERS | LOG_UNKNOWN_IO)
|
||||
#define LOG_CHANNELS (LOG_CHANNEL_READS | LOG_CHANNEL_WRITES)
|
||||
#define LOG_SPU (LOG_SPU_READS | LOG_SPU_WRITES | LOG_UNKNOWN_SPU | LOG_CHANNEL_READS | LOG_CHANNEL_WRITES \
|
||||
@ -116,8 +116,8 @@ void spg2xx_device::device_start()
|
||||
for (uint16_t i = 0; i < 0x8000; i++)
|
||||
{
|
||||
m_rgb555_to_rgb888[i] = (m_rgb5_to_rgb8[(i >> 10) & 0x1f] << 16) |
|
||||
(m_rgb5_to_rgb8[(i >> 5) & 0x1f] << 8) |
|
||||
(m_rgb5_to_rgb8[(i >> 0) & 0x1f] << 0);
|
||||
(m_rgb5_to_rgb8[(i >> 5) & 0x1f] << 8) |
|
||||
(m_rgb5_to_rgb8[(i >> 0) & 0x1f] << 0);
|
||||
}
|
||||
m_porta_out.resolve_safe();
|
||||
m_portb_out.resolve_safe();
|
||||
@ -324,13 +324,13 @@ void spg2xx_device::blit(const rectangle &cliprect, uint32_t line, uint32_t xoff
|
||||
if (yy >= 0x01c0)
|
||||
yy -= 0x0200;
|
||||
|
||||
if (yy > 240 || yy < 0)
|
||||
return;
|
||||
if (yy > 240 || yy < 0)
|
||||
return;
|
||||
|
||||
if (SPG_DEBUG_VIDEO && m_debug_blit)
|
||||
if (SPG_DEBUG_VIDEO && m_debug_blit)
|
||||
printf("%3d:\n", yy);
|
||||
|
||||
int y_index = yy * 320;
|
||||
int y_index = yy * 320;
|
||||
|
||||
for (int32_t x = FlipX ? (w - 1) : 0; FlipX ? x >= 0 : x < w; FlipX ? x-- : x++)
|
||||
{
|
||||
@ -377,8 +377,8 @@ void spg2xx_device::blit(const rectangle &cliprect, uint32_t line, uint32_t xoff
|
||||
if (SPG_DEBUG_VIDEO && m_debug_blit)
|
||||
printf("M\n");
|
||||
m_screenbuf[pix_index] = (mix_channel((uint8_t)(m_screenbuf[pix_index] >> 16), m_rgb5_to_rgb8[(rgb >> 10) & 0x1f]) << 16) |
|
||||
(mix_channel((uint8_t)(m_screenbuf[pix_index] >> 8), m_rgb5_to_rgb8[(rgb >> 5) & 0x1f]) << 8) |
|
||||
(mix_channel((uint8_t)(m_screenbuf[pix_index] >> 0), m_rgb5_to_rgb8[rgb & 0x1f]));
|
||||
(mix_channel((uint8_t)(m_screenbuf[pix_index] >> 8), m_rgb5_to_rgb8[(rgb >> 5) & 0x1f]) << 8) |
|
||||
(mix_channel((uint8_t)(m_screenbuf[pix_index] >> 0), m_rgb5_to_rgb8[rgb & 0x1f]));
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -627,8 +627,8 @@ void spg2xx_device::apply_saturation(const rectangle &cliprect)
|
||||
const int integer_g = (int)floor(adjusted_g * 255.0f);
|
||||
const int integer_b = (int)floor(adjusted_b * 255.0f);
|
||||
*src++ = (integer_r > 255 ? 0xff0000 : (integer_r < 0 ? 0 : ((uint8_t)integer_r << 16))) |
|
||||
(integer_g > 255 ? 0x00ff00 : (integer_g < 0 ? 0 : ((uint8_t)integer_g << 8))) |
|
||||
(integer_b > 255 ? 0x0000ff : (integer_b < 0 ? 0 : (uint8_t)integer_b));
|
||||
(integer_g > 255 ? 0x00ff00 : (integer_g < 0 ? 0 : ((uint8_t)integer_g << 8))) |
|
||||
(integer_b > 255 ? 0x0000ff : (integer_b < 0 ? 0 : (uint8_t)integer_b));
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -649,8 +649,8 @@ void spg2xx_device::apply_fade(const rectangle &cliprect)
|
||||
const uint8_t g = src_g - fade_offset;
|
||||
const uint8_t b = src_b - fade_offset;
|
||||
*src++ = (r > src_r ? 0 : (r << 16)) |
|
||||
(g > src_g ? 0 : (g << 8)) |
|
||||
(b > src_b ? 0 : (b << 0));
|
||||
(g > src_g ? 0 : (g << 8)) |
|
||||
(b > src_b ? 0 : (b << 0));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -869,10 +869,10 @@ void wd33c9x_base_device::step(bool timeout)
|
||||
case DISC_SEL_ARBITRATION:
|
||||
m_xfr_phase = xfr_phase;
|
||||
break;
|
||||
|
||||
|
||||
case INIT_XFR_WAIT_REQ:
|
||||
break;
|
||||
|
||||
|
||||
default:
|
||||
if (m_xfr_phase != xfr_phase) {
|
||||
fatalerror("%s: Unexpected phase change during state.\n", shortname());
|
||||
@ -888,7 +888,7 @@ void wd33c9x_base_device::step(bool timeout)
|
||||
set_scsi_state(FINISHED);
|
||||
m_regs[COMMAND_PHASE] = COMMAND_PHASE_DISCONNECTED;
|
||||
break;
|
||||
|
||||
|
||||
case COMMAND_PHASE_COMMAND_COMPLETE:
|
||||
if (m_regs[CONTROL] & CONTROL_EDI) {
|
||||
set_scsi_state(FINISHED);
|
||||
@ -898,7 +898,7 @@ void wd33c9x_base_device::step(bool timeout)
|
||||
m_regs[CONTROL] |= CONTROL_EDI;
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
default:
|
||||
fatalerror("%s: Unhandled command phase during Select-and-Transfer disconnect.\n", shortname());
|
||||
break;
|
||||
|
@ -32,7 +32,7 @@ fixedfreq_device::fixedfreq_device(const machine_config &mconfig, device_type ty
|
||||
device_video_interface(mconfig, *this, false),
|
||||
m_htotal(0),
|
||||
m_vtotal(0),
|
||||
m_hscale(1), // FIXME: this should be modified by static initialization
|
||||
m_hscale(1), // FIXME: this should be modified by static initialization
|
||||
m_sync_signal(0),
|
||||
m_last_x(0),
|
||||
m_last_y(0),
|
||||
|
@ -318,7 +318,7 @@ bool finder_base::report_missing(bool found, const char *objname, bool required)
|
||||
{
|
||||
osd_printf_error("Tag not defined for required %s\n", objname);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
// just pass through in the found case
|
||||
if (found)
|
||||
|
@ -10,8 +10,8 @@
|
||||
http://vitiy.info/Code/ico.cpp
|
||||
|
||||
TODO:
|
||||
* Add variant that loads all images from the file
|
||||
* Allow size hint for choosing best candidate
|
||||
* Add variant that loads all images from the file
|
||||
* Allow size hint for choosing best candidate
|
||||
* Allow selecting amongst candidates based on colour depth
|
||||
|
||||
***************************************************************************/
|
||||
|
@ -40,14 +40,17 @@
|
||||
#include <mutex>
|
||||
#include <thread>
|
||||
|
||||
namespace {
|
||||
constexpr uint32_t FLAGS_UI = ui::menu::FLAG_LEFT_ARROW | ui::menu::FLAG_RIGHT_ARROW;
|
||||
} // anonymous namespace
|
||||
|
||||
extern const char UI_VERSION_TAG[];
|
||||
|
||||
namespace ui {
|
||||
|
||||
namespace {
|
||||
|
||||
constexpr uint32_t FLAGS_UI = ui::menu::FLAG_LEFT_ARROW | ui::menu::FLAG_RIGHT_ARROW;
|
||||
|
||||
} // anonymous namespace
|
||||
|
||||
class menu_select_game::persistent_data
|
||||
{
|
||||
public:
|
||||
|
@ -93,7 +93,7 @@ namespace netlist
|
||||
ENTRYX_N(7497_dip)
|
||||
ENTRYX_N(74107)
|
||||
ENTRYX_N(74107_dip)
|
||||
ENTRYX_N(74107A) // FIXME: implement missing DIP
|
||||
ENTRYX_N(74107A) // FIXME: implement missing DIP
|
||||
ENTRYX(74123, TTL_74123, "")
|
||||
ENTRYX(74123_dip, TTL_74123_DIP, "")
|
||||
ENTRYX_N(74153)
|
||||
|
@ -137,9 +137,9 @@ namespace netlist
|
||||
m_clk.activate_hl();
|
||||
}
|
||||
|
||||
NETLIB_DEVICE_IMPL(74107, "TTL_74107", "+CLK,+J,+K,+CLRQ")
|
||||
NETLIB_DEVICE_IMPL(74107A, "TTL_74107A", "+CLK,+J,+K,+CLRQ")
|
||||
NETLIB_DEVICE_IMPL(74107_dip, "TTL_74107_DIP", "")
|
||||
NETLIB_DEVICE_IMPL(74107, "TTL_74107", "+CLK,+J,+K,+CLRQ")
|
||||
NETLIB_DEVICE_IMPL(74107A, "TTL_74107A", "+CLK,+J,+K,+CLRQ")
|
||||
NETLIB_DEVICE_IMPL(74107_dip, "TTL_74107_DIP", "")
|
||||
|
||||
} //namespace devices
|
||||
} // namespace netlist
|
||||
|
@ -95,8 +95,8 @@ namespace netlist
|
||||
m_Q.push(res, times[1 - res]);// ? 22000 : 15000);
|
||||
}
|
||||
|
||||
NETLIB_DEVICE_IMPL(7450, "TTL_7450_ANDORINVERT", "+A,+B,+C,+D")
|
||||
NETLIB_DEVICE_IMPL(7450_dip, "TTL_7450_DIP", "")
|
||||
NETLIB_DEVICE_IMPL(7450, "TTL_7450_ANDORINVERT", "+A,+B,+C,+D")
|
||||
NETLIB_DEVICE_IMPL(7450_dip, "TTL_7450_DIP", "")
|
||||
|
||||
} //namespace devices
|
||||
} // namespace netlist
|
||||
|
@ -126,8 +126,8 @@ namespace netlist
|
||||
m_Q[i].push((m_cnt >> i) & 1, delay[i]);
|
||||
}
|
||||
|
||||
NETLIB_DEVICE_IMPL(7490, "TTL_7490", "+A,+B,+R1,+R2,+R91,+R92")
|
||||
NETLIB_DEVICE_IMPL(7490_dip, "TTL_7490_DIP", "")
|
||||
NETLIB_DEVICE_IMPL(7490, "TTL_7490", "+A,+B,+R1,+R2,+R91,+R92")
|
||||
NETLIB_DEVICE_IMPL(7490_dip, "TTL_7490_DIP", "")
|
||||
|
||||
} //namespace devices
|
||||
} // namespace netlist
|
||||
|
@ -127,7 +127,7 @@ namespace netlist
|
||||
}
|
||||
}
|
||||
|
||||
NETLIB_DEVICE_IMPL(7493, "TTL_7493", "+CLKA,+CLKB,+R1,+R2")
|
||||
NETLIB_DEVICE_IMPL(7493, "TTL_7493", "+CLKA,+CLKB,+R1,+R2")
|
||||
NETLIB_DEVICE_IMPL(7493_dip, "TTL_7493_DIP", "")
|
||||
|
||||
} //namespace devices
|
||||
|
@ -167,7 +167,7 @@ namespace netlist
|
||||
};
|
||||
|
||||
|
||||
NETLIB_DEVICE_IMPL(7497, "TTL_7497", "+CLK,+STRBQ,+ENQ,+UNITYQ,+CLR,+B0,+B1,+B2,+B3,+B4,+B5")
|
||||
NETLIB_DEVICE_IMPL(7497, "TTL_7497", "+CLK,+STRBQ,+ENQ,+UNITYQ,+CLR,+B0,+B1,+B2,+B3,+B4,+B5")
|
||||
NETLIB_DEVICE_IMPL(7497_dip, "TTL_7497_DIP", "")
|
||||
|
||||
} //namespace devices
|
||||
|
@ -22,8 +22,8 @@
|
||||
*
|
||||
* When the rate input is binary 0 (all rate inputs low), Z remains high [and Y low].
|
||||
*
|
||||
* The unity/cascade input, when connected to the clock input, passes
|
||||
* clock frequency (inverted) to the Y output when the rate input/decoding
|
||||
* The unity/cascade input, when connected to the clock input, passes
|
||||
* clock frequency (inverted) to the Y output when the rate input/decoding
|
||||
* gates are inhibited by the strobe.
|
||||
*
|
||||
* When CLR is H, states of CLK and STRB can affect Y and Z. Default are
|
||||
|
@ -275,7 +275,7 @@ netlist_state_t::netlist_state_t(const pstring &aname,
|
||||
: m_params(nullptr)
|
||||
, m_name(aname)
|
||||
, m_state()
|
||||
, m_callbacks(std::move(callbacks)) // Order is important here
|
||||
, m_callbacks(std::move(callbacks)) // Order is important here
|
||||
, m_log(*m_callbacks)
|
||||
, m_setup(std::move(setup))
|
||||
{
|
||||
|
@ -1346,13 +1346,13 @@ namespace netlist
|
||||
pstring m_name;
|
||||
std::unique_ptr<plib::dynlib> m_lib; // external lib needs to be loaded as long as netlist exists
|
||||
plib::state_manager_t m_state;
|
||||
std::unique_ptr<callbacks_t> m_callbacks;
|
||||
log_type m_log;
|
||||
std::unique_ptr<callbacks_t> m_callbacks;
|
||||
log_type m_log;
|
||||
std::unique_ptr<setup_t> m_setup;
|
||||
|
||||
nets_collection_type m_nets;
|
||||
nets_collection_type m_nets;
|
||||
/* sole use is to manage lifetime of net objects */
|
||||
devices_collection_type m_devices;
|
||||
devices_collection_type m_devices;
|
||||
|
||||
};
|
||||
|
||||
@ -1405,7 +1405,7 @@ namespace netlist
|
||||
void print_stats() const;
|
||||
|
||||
private:
|
||||
std::unique_ptr<netlist_state_t> m_state;
|
||||
std::unique_ptr<netlist_state_t> m_state;
|
||||
|
||||
/* mostly rw */
|
||||
netlist_time m_time;
|
||||
|
@ -59,7 +59,7 @@
|
||||
#define MF_1_UNABLE_TO_PARSE_MODEL_1 "Unable to parse model: {1}"
|
||||
#define MF_1_MODEL_ALREADY_EXISTS_1 "Model already exists: {1}"
|
||||
#define MF_1_DEVICE_ALREADY_EXISTS_1 "Device already exists: {1}"
|
||||
#define MF_1_ADDING_ALI1_TO_ALIAS_LIST "Error adding alias {1} to alias list"
|
||||
#define MF_1_ADDING_ALI1_TO_ALIAS_LIST "Error adding alias {1} to alias list"
|
||||
#define MF_1_DIP_PINS_MUST_BE_AN_EQUAL_NUMBER_OF_PINS_1 "You must pass an equal number of pins to DIPPINS {1}"
|
||||
#define MF_1_UNKNOWN_OBJECT_TYPE_1 "Unknown object type {1}"
|
||||
#define MF_2_INVALID_NUMBER_CONVERSION_1_2 "Invalid number conversion {1} : {2}"
|
||||
|
@ -189,9 +189,9 @@ namespace netlist
|
||||
using mutex_type = pspin_mutex<TS>;
|
||||
using lock_guard_type = std::lock_guard<mutex_type>;
|
||||
|
||||
mutex_type m_lock;
|
||||
T * m_end;
|
||||
std::vector<T> m_list;
|
||||
mutex_type m_lock;
|
||||
T * m_end;
|
||||
std::vector<T> m_list;
|
||||
|
||||
public:
|
||||
// profiling
|
||||
|
@ -333,7 +333,7 @@ namespace netlist
|
||||
devices::nld_base_proxy *get_d_a_proxy(detail::core_terminal_t &out);
|
||||
devices::nld_base_proxy *get_a_d_proxy(detail::core_terminal_t &inp);
|
||||
|
||||
netlist_t &m_netlist;
|
||||
netlist_t &m_netlist;
|
||||
std::unordered_map<pstring, param_ref_t> m_params;
|
||||
std::vector<link_t> m_links;
|
||||
factory::list_t m_factory;
|
||||
|
@ -53,7 +53,7 @@ namespace plib {
|
||||
struct parray
|
||||
{
|
||||
public:
|
||||
static constexpr std::size_t SIZEABS() { return sizeabs<FT, SIZE>::ABS(); }
|
||||
static constexpr std::size_t SIZEABS() { return sizeabs<FT, SIZE>::ABS(); }
|
||||
|
||||
typedef typename sizeabs<FT, SIZE>::container base_type;
|
||||
typedef typename base_type::size_type size_type;
|
||||
@ -84,29 +84,29 @@ namespace plib {
|
||||
throw plib::pexception("parray: size error");
|
||||
}
|
||||
|
||||
inline size_type size() const noexcept { return SIZE <= 0 ? m_size : SIZEABS(); }
|
||||
inline size_type size() const noexcept { return SIZE <= 0 ? m_size : SIZEABS(); }
|
||||
|
||||
constexpr size_type max_size() const noexcept { return base_type::max_size(); }
|
||||
constexpr size_type max_size() const noexcept { return base_type::max_size(); }
|
||||
|
||||
bool empty() const noexcept { return size() == 0; }
|
||||
bool empty() const noexcept { return size() == 0; }
|
||||
|
||||
#if 0
|
||||
reference operator[](size_type i) /*noexcept*/
|
||||
{
|
||||
if (i >= m_size) throw plib::pexception("limits error " + to_string(i) + ">=" + to_string(m_size));
|
||||
return m_a[i];
|
||||
}
|
||||
const_reference operator[](size_type i) const /*noexcept*/
|
||||
{
|
||||
if (i >= m_size) throw plib::pexception("limits error " + to_string(i) + ">=" + to_string(m_size));
|
||||
return m_a[i];
|
||||
}
|
||||
reference operator[](size_type i) /*noexcept*/
|
||||
{
|
||||
if (i >= m_size) throw plib::pexception("limits error " + to_string(i) + ">=" + to_string(m_size));
|
||||
return m_a[i];
|
||||
}
|
||||
const_reference operator[](size_type i) const /*noexcept*/
|
||||
{
|
||||
if (i >= m_size) throw plib::pexception("limits error " + to_string(i) + ">=" + to_string(m_size));
|
||||
return m_a[i];
|
||||
}
|
||||
#else
|
||||
reference operator[](size_type i) noexcept { return m_a[i]; }
|
||||
constexpr const_reference operator[](size_type i) const noexcept { return m_a[i]; }
|
||||
reference operator[](size_type i) noexcept { return m_a[i]; }
|
||||
constexpr const_reference operator[](size_type i) const noexcept { return m_a[i]; }
|
||||
#endif
|
||||
FT * data() noexcept { return m_a.data(); }
|
||||
const FT * data() const noexcept { return m_a.data(); }
|
||||
FT * data() noexcept { return m_a.data(); }
|
||||
const FT * data() const noexcept { return m_a.data(); }
|
||||
|
||||
private:
|
||||
base_type m_a;
|
||||
|
@ -318,14 +318,14 @@ pstream::size_type ppreprocessor::vread(value_type *buf, const pstream::size_typ
|
||||
}
|
||||
|
||||
#define CHECKTOK2(p_op, p_prio) \
|
||||
else if (tok == # p_op) \
|
||||
{ \
|
||||
if (prio < p_prio) \
|
||||
return val; \
|
||||
start++; \
|
||||
const auto v2 = expr(sexpr, start, p_prio); \
|
||||
val = (val p_op v2); \
|
||||
} \
|
||||
else if (tok == # p_op) \
|
||||
{ \
|
||||
if (prio < p_prio) \
|
||||
return val; \
|
||||
start++; \
|
||||
const auto v2 = expr(sexpr, start, p_prio); \
|
||||
val = (val p_op v2); \
|
||||
} \
|
||||
|
||||
// Operator precedence see https://en.cppreference.com/w/cpp/language/operator_precedence
|
||||
|
||||
|
@ -24,7 +24,7 @@
|
||||
|
||||
// enable this to use std::string instead of pstring globally.
|
||||
|
||||
#define PSTRING_USE_STD_STRING (0)
|
||||
#define PSTRING_USE_STD_STRING (0)
|
||||
|
||||
template <typename T>
|
||||
class pstring_const_iterator final
|
||||
|
@ -23,7 +23,7 @@ public:
|
||||
tool_app_t() :
|
||||
plib::app(),
|
||||
opt_grp1(*this, "General options", "The following options apply to all commands."),
|
||||
opt_cmd (*this, "c", "cmd", 0, std::vector<pstring>({"run","convert","listdevices","static","header","docheader"}), "run|convert|listdevices|static|header|docheader"),
|
||||
opt_cmd (*this, "c", "cmd", 0, std::vector<pstring>({"run","convert","listdevices","static","header","docheader"}), "run|convert|listdevices|static|header|docheader"),
|
||||
opt_file(*this, "f", "file", "-", "file to process (default is stdin)"),
|
||||
opt_defines(*this, "D", "define", "predefine value as macro, e.g. -Dname=value. If '=value' is omitted predefine it as 1. This option may be specified repeatedly."),
|
||||
opt_rfolders(*this, "r", "rom", "where to look for data files"),
|
||||
|
@ -318,7 +318,7 @@ public:
|
||||
std::size_t i = 0;
|
||||
for (auto ch : channels)
|
||||
{
|
||||
// $var real 64 N1X1 N1X1 $end
|
||||
// $var real 64 N1X1 N1X1 $end
|
||||
if (format == ANALOG)
|
||||
write(pstring("$var real 64 ") + m_ids[i++] + " " + ch + " $end\n");
|
||||
else if (format == DIGITAL)
|
||||
@ -380,7 +380,7 @@ class nlwav_app : public plib::app
|
||||
public:
|
||||
nlwav_app() :
|
||||
plib::app(),
|
||||
opt_fmt(*this, "f", "format", 0, std::vector<pstring>({"wav","vcda","vcdd"}),
|
||||
opt_fmt(*this, "f", "format", 0, std::vector<pstring>({"wav","vcda","vcdd"}),
|
||||
"output format. Available options are wav|vcda|vcdd.\n"
|
||||
"wav : multichannel wav output\n"
|
||||
"vcda : analog VCD output\n"
|
||||
@ -390,11 +390,11 @@ public:
|
||||
opt_out(*this, "o", "output", "-", "output file"),
|
||||
opt_rate(*this, "r", "rate", 48000, "sample rate of output file"),
|
||||
opt_amp(*this, "a", "amp", 10000.0, "amplification after mean correction (wav only)"),
|
||||
opt_high(*this, "u", "high", 2.0, "minimum input for high level (vcdd only)"),
|
||||
opt_low(*this, "l", "low", 1.0, "maximum input for low level (vcdd only)"),
|
||||
opt_high(*this, "u", "high", 2.0, "minimum input for high level (vcdd only)"),
|
||||
opt_low(*this, "l", "low", 1.0, "maximum input for low level (vcdd only)"),
|
||||
opt_verb(*this, "v", "verbose", "be verbose - this produces lots of output"),
|
||||
opt_quiet(*this,"q", "quiet", "be quiet - no warnings"),
|
||||
opt_args(*this, "input file(s)"),
|
||||
opt_args(*this, "input file(s)"),
|
||||
opt_version(*this, "", "version", "display version and exit"),
|
||||
opt_help(*this, "h", "help", "display help and exit"),
|
||||
opt_ex1(*this, "./nlwav -f vcdd -o x.vcd log_V*",
|
||||
@ -411,7 +411,7 @@ public:
|
||||
plib::option_num<double> opt_low;
|
||||
plib::option_bool opt_verb;
|
||||
plib::option_bool opt_quiet;
|
||||
plib::option_args opt_args;
|
||||
plib::option_args opt_args;
|
||||
plib::option_bool opt_version;
|
||||
plib::option_bool opt_help;
|
||||
plib::option_example opt_ex1;
|
||||
|
@ -66,7 +66,7 @@ public:
|
||||
|
||||
for (std::size_t i = 0; i < railstart; i++)
|
||||
{
|
||||
*tcr[i] -= m_go[i];
|
||||
*tcr[i] -= m_go[i];
|
||||
gtot_t += m_gt[i];
|
||||
RHS_t += m_Idr[i];
|
||||
}
|
||||
|
@ -84,11 +84,11 @@ private:
|
||||
|
||||
plib::mat_cr_t<float_type, SIZE> m_LU;
|
||||
|
||||
float_type m_c[restart_N + 1]; /* mr + 1 */
|
||||
float_type m_g[restart_N + 1]; /* mr + 1 */
|
||||
float_type m_c[restart_N + 1]; /* mr + 1 */
|
||||
float_type m_g[restart_N + 1]; /* mr + 1 */
|
||||
float_type m_ht[restart_N + 1][restart_N]; /* (mr + 1), mr */
|
||||
float_type m_s[restart_N + 1]; /* mr + 1 */
|
||||
float_type m_y[restart_N + 1]; /* mr + 1 */
|
||||
float_type m_s[restart_N + 1]; /* mr + 1 */
|
||||
float_type m_y[restart_N + 1]; /* mr + 1 */
|
||||
|
||||
//plib::parray<float_type, SIZE> m_v[restart_N + 1]; /* mr + 1, n */
|
||||
float_type m_v[restart_N + 1][storage_N]; /* mr + 1, n */
|
||||
@ -177,7 +177,7 @@ unsigned matrix_solver_GMRES_t<FT, SIZE>::vsolve_non_dynamic(const bool newton_r
|
||||
}
|
||||
|
||||
//if (newton_raphson)
|
||||
// printf("%e %e\n", this->delta(this->m_new_V), this->m_params.m_accuracy);
|
||||
// printf("%e %e\n", this->delta(this->m_new_V), this->m_params.m_accuracy);
|
||||
|
||||
const float_type err = (newton_raphson ? this->delta(this->m_new_V) : 0.0);
|
||||
this->store(this->m_new_V);
|
||||
|
@ -583,12 +583,12 @@ uint32_t _5clown_state::screen_update_fclown(screen_device &screen, bitmap_ind16
|
||||
void _5clown_state::_5clown_palette(palette_device &palette) const
|
||||
{
|
||||
/*
|
||||
7654 3210
|
||||
---- ---x RED component.
|
||||
---- --x- GREEN component.
|
||||
---- -x-- BLUE component.
|
||||
---- x--- background killer.
|
||||
xxxx ---- unused.
|
||||
7654 3210
|
||||
---- ---x RED component.
|
||||
---- --x- GREEN component.
|
||||
---- -x-- BLUE component.
|
||||
---- x--- background killer.
|
||||
xxxx ---- unused.
|
||||
*/
|
||||
|
||||
/* 0000KBGR */
|
||||
|
@ -1861,7 +1861,7 @@ void aerofgt_state::turbofrc(machine_config &config)
|
||||
|
||||
/* video hardware */
|
||||
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
|
||||
screen.set_refresh_hz(61.31); /* verified on pcb */
|
||||
screen.set_refresh_hz(61.31); /* verified on pcb */
|
||||
screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
|
||||
screen.set_size(64*8, 32*8);
|
||||
screen.set_visarea(0*8, 44*8-1, 0*8, 30*8-1);
|
||||
|
@ -323,7 +323,7 @@ MACHINE_CONFIG_START(alg_state::alg_r1)
|
||||
m_laserdisc->set_overlay(512*2, 262, FUNC(amiga_state::screen_update_amiga));
|
||||
m_laserdisc->set_overlay_clip((129-8)*2, (449+8-1)*2, 44-8, 244+8-1);
|
||||
m_laserdisc->set_overlay_palette(m_palette);
|
||||
|
||||
|
||||
|
||||
PALETTE(config, m_palette, FUNC(alg_state::amiga_palette), 4097);
|
||||
|
||||
|
@ -528,7 +528,7 @@ void argus_state::argus(machine_config &config)
|
||||
void argus_state::valtric(machine_config &config)
|
||||
{
|
||||
/* basic machine hardware */
|
||||
Z80(config, m_maincpu, 5000000); /* 5 MHz */
|
||||
Z80(config, m_maincpu, 5000000); /* 5 MHz */
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &argus_state::valtric_map);
|
||||
TIMER(config, "scantimer").configure_scanline(FUNC(argus_state::scanline), "screen", 0, 1);
|
||||
|
||||
@ -576,7 +576,7 @@ void argus_state::valtric(machine_config &config)
|
||||
void argus_state::butasan(machine_config &config)
|
||||
{
|
||||
/* basic machine hardware */
|
||||
Z80(config, m_maincpu, 5000000); /* 5 MHz */
|
||||
Z80(config, m_maincpu, 5000000); /* 5 MHz */
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &argus_state::butasan_map);
|
||||
TIMER(config, "scantimer").configure_scanline(FUNC(argus_state::butasan_scanline), "screen", 0, 1);
|
||||
|
||||
|
@ -568,12 +568,12 @@ uint32_t avt_state::screen_update_avt(screen_device &screen, bitmap_ind16 &bitma
|
||||
void avt_state::avt_palette(palette_device &palette) const
|
||||
{
|
||||
/* prom bits
|
||||
7654 3210
|
||||
---- ---x Intensity?.
|
||||
---- --x- Red component.
|
||||
---- -x-- Green component.
|
||||
---- x--- Blue component.
|
||||
xxxx ---- Unused.
|
||||
7654 3210
|
||||
---- ---x Intensity?.
|
||||
---- --x- Red component.
|
||||
---- -x-- Green component.
|
||||
---- x--- Blue component.
|
||||
xxxx ---- Unused.
|
||||
*/
|
||||
|
||||
/* 0000BGRI */
|
||||
|
@ -274,11 +274,11 @@ void battlane_state::machine_reset()
|
||||
void battlane_state::battlane(machine_config &config)
|
||||
{
|
||||
/* basic machine hardware */
|
||||
M6809(config, m_maincpu, 1500000); /* 1.5 MHz ? */
|
||||
M6809(config, m_maincpu, 1500000); /* 1.5 MHz ? */
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &battlane_state::battlane_map);
|
||||
m_maincpu->set_vblank_int("screen", FUNC(battlane_state::battlane_cpu1_interrupt));
|
||||
|
||||
M6809(config, m_subcpu, 1500000); /* 1.5 MHz ? */
|
||||
M6809(config, m_subcpu, 1500000); /* 1.5 MHz ? */
|
||||
m_subcpu->set_addrmap(AS_PROGRAM, &battlane_state::battlane_map);
|
||||
|
||||
config.m_minimum_quantum = attotime::from_hz(6000);
|
||||
|
@ -394,7 +394,7 @@ void bigevglf_state::bigevglf(machine_config &config)
|
||||
m_audiocpu->set_periodic_int(FUNC(bigevglf_state::irq0_line_hold), attotime::from_hz(2*60)); /* IRQ generated by ???;
|
||||
2 irqs/frame give good music tempo but also SOUND ERROR in test mode,
|
||||
4 irqs/frame give SOUND OK in test mode but music seems to be running too fast */
|
||||
/* Clearly, then, there should be some sort of IRQ acknowledge mechanism, duh. -R */
|
||||
/* Clearly, then, there should be some sort of IRQ acknowledge mechanism, duh. -R */
|
||||
|
||||
GENERIC_LATCH_8(config, m_soundlatch[0]);
|
||||
m_soundlatch[0]->data_pending_callback().set("soundnmi", FUNC(input_merger_device::in_w<0>));
|
||||
|
@ -292,12 +292,12 @@ void blktiger_state::machine_reset()
|
||||
void blktiger_state::blktiger(machine_config &config)
|
||||
{
|
||||
/* basic machine hardware */
|
||||
Z80(config, m_maincpu, XTAL(24'000'000)/4); /* verified on pcb */
|
||||
Z80(config, m_maincpu, XTAL(24'000'000)/4); /* verified on pcb */
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &blktiger_state::blktiger_map);
|
||||
m_maincpu->set_addrmap(AS_IO, &blktiger_state::blktiger_io_map);
|
||||
m_maincpu->set_vblank_int("screen", FUNC(blktiger_state::irq0_line_hold));
|
||||
|
||||
Z80(config, m_audiocpu, XTAL(3'579'545)); /* verified on pcb */
|
||||
Z80(config, m_audiocpu, XTAL(3'579'545)); /* verified on pcb */
|
||||
m_audiocpu->set_addrmap(AS_PROGRAM, &blktiger_state::blktiger_sound_map);
|
||||
|
||||
I8751(config, m_mcu, XTAL(24'000'000)/4); /* ??? */
|
||||
|
@ -460,10 +460,10 @@ WRITE_LINE_MEMBER(brkthru_state::vblank_irq)
|
||||
void brkthru_state::brkthru(machine_config &config)
|
||||
{
|
||||
/* basic machine hardware */
|
||||
MC6809E(config, m_maincpu, MASTER_CLOCK/8); /* 1.5 MHz ? */
|
||||
MC6809E(config, m_maincpu, MASTER_CLOCK/8); /* 1.5 MHz ? */
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &brkthru_state::brkthru_map);
|
||||
|
||||
MC6809(config, m_audiocpu, MASTER_CLOCK/2); /* 1.5 MHz ? */
|
||||
MC6809(config, m_audiocpu, MASTER_CLOCK/2); /* 1.5 MHz ? */
|
||||
m_audiocpu->set_addrmap(AS_PROGRAM, &brkthru_state::sound_map);
|
||||
|
||||
/* video hardware */
|
||||
@ -497,10 +497,10 @@ void brkthru_state::brkthru(machine_config &config)
|
||||
void brkthru_state::darwin(machine_config &config)
|
||||
{
|
||||
/* basic machine hardware */
|
||||
MC6809E(config, m_maincpu, MASTER_CLOCK/8); /* 1.5 MHz ? */
|
||||
MC6809E(config, m_maincpu, MASTER_CLOCK/8); /* 1.5 MHz ? */
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &brkthru_state::darwin_map);
|
||||
|
||||
MC6809(config, m_audiocpu, MASTER_CLOCK/2); /* 1.5 MHz ? */
|
||||
MC6809(config, m_audiocpu, MASTER_CLOCK/2); /* 1.5 MHz ? */
|
||||
m_audiocpu->set_addrmap(AS_PROGRAM, &brkthru_state::sound_map);
|
||||
|
||||
/* video hardware */
|
||||
|
@ -574,11 +574,11 @@ void chinagat_state::machine_reset()
|
||||
void chinagat_state::chinagat(machine_config &config)
|
||||
{
|
||||
/* basic machine hardware */
|
||||
HD6309(config, m_maincpu, MAIN_CLOCK / 2); /* 1.5 MHz (12MHz oscillator / 4 internally) */
|
||||
HD6309(config, m_maincpu, MAIN_CLOCK / 2); /* 1.5 MHz (12MHz oscillator / 4 internally) */
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &chinagat_state::main_map);
|
||||
TIMER(config, "scantimer").configure_scanline(FUNC(chinagat_state::chinagat_scanline), "screen", 0, 1);
|
||||
|
||||
HD6309(config, m_subcpu, MAIN_CLOCK / 2); /* 1.5 MHz (12MHz oscillator / 4 internally) */
|
||||
HD6309(config, m_subcpu, MAIN_CLOCK / 2); /* 1.5 MHz (12MHz oscillator / 4 internally) */
|
||||
m_subcpu->set_addrmap(AS_PROGRAM, &chinagat_state::sub_map);
|
||||
|
||||
Z80(config, m_soundcpu, XTAL(3'579'545)); /* 3.579545 MHz */
|
||||
@ -613,14 +613,14 @@ void chinagat_state::chinagat(machine_config &config)
|
||||
void chinagat_state::saiyugoub1(machine_config &config)
|
||||
{
|
||||
/* basic machine hardware */
|
||||
MC6809E(config, m_maincpu, MAIN_CLOCK / 8); /* 68B09EP 1.5 MHz (12MHz oscillator) */
|
||||
MC6809E(config, m_maincpu, MAIN_CLOCK / 8); /* 68B09EP 1.5 MHz (12MHz oscillator) */
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &chinagat_state::main_map);
|
||||
TIMER(config, "scantimer").configure_scanline(FUNC(chinagat_state::chinagat_scanline), "screen", 0, 1);
|
||||
|
||||
MC6809E(config, m_subcpu, MAIN_CLOCK / 8); /* 68B09EP 1.5 MHz (12MHz oscillator) */
|
||||
MC6809E(config, m_subcpu, MAIN_CLOCK / 8); /* 68B09EP 1.5 MHz (12MHz oscillator) */
|
||||
m_subcpu->set_addrmap(AS_PROGRAM, &chinagat_state::sub_map);
|
||||
|
||||
Z80(config, m_soundcpu, XTAL(3'579'545)); /* 3.579545 MHz oscillator */
|
||||
Z80(config, m_soundcpu, XTAL(3'579'545)); /* 3.579545 MHz oscillator */
|
||||
m_soundcpu->set_addrmap(AS_PROGRAM, &chinagat_state::saiyugoub1_sound_map);
|
||||
|
||||
i8748_device &mcu(I8748(config, "mcu", 9263750)); /* 9.263750 MHz oscillator, divided by 3*5 internally */
|
||||
@ -655,21 +655,21 @@ void chinagat_state::saiyugoub1(machine_config &config)
|
||||
|
||||
MSM5205(config, m_adpcm, 9263750 / 24);
|
||||
m_adpcm->vck_legacy_callback().set(FUNC(chinagat_state::saiyugoub1_m5205_irq_w)); /* Interrupt function */
|
||||
m_adpcm->set_prescaler_selector(msm5205_device::S64_4B); /* vclk input mode (6030Hz, 4-bit) */
|
||||
m_adpcm->set_prescaler_selector(msm5205_device::S64_4B); /* vclk input mode (6030Hz, 4-bit) */
|
||||
m_adpcm->add_route(ALL_OUTPUTS, "mono", 0.60);
|
||||
}
|
||||
|
||||
void chinagat_state::saiyugoub2(machine_config &config)
|
||||
{
|
||||
/* basic machine hardware */
|
||||
MC6809E(config, m_maincpu, MAIN_CLOCK / 8); /* 1.5 MHz (12MHz oscillator) */
|
||||
MC6809E(config, m_maincpu, MAIN_CLOCK / 8); /* 1.5 MHz (12MHz oscillator) */
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &chinagat_state::main_map);
|
||||
TIMER(config, "scantimer").configure_scanline(FUNC(chinagat_state::chinagat_scanline), "screen", 0, 1);
|
||||
|
||||
MC6809E(config, m_subcpu, MAIN_CLOCK / 8); /* 1.5 MHz (12MHz oscillator) */
|
||||
MC6809E(config, m_subcpu, MAIN_CLOCK / 8); /* 1.5 MHz (12MHz oscillator) */
|
||||
m_subcpu->set_addrmap(AS_PROGRAM, &chinagat_state::sub_map);
|
||||
|
||||
Z80(config, m_soundcpu, XTAL(3'579'545)); /* 3.579545 MHz oscillator */
|
||||
Z80(config, m_soundcpu, XTAL(3'579'545)); /* 3.579545 MHz oscillator */
|
||||
m_soundcpu->set_addrmap(AS_PROGRAM, &chinagat_state::ym2203c_sound_map);
|
||||
|
||||
config.m_minimum_quantum = attotime::from_hz(6000); /* heavy interleaving to sync up sprite<->main cpu's */
|
||||
|
@ -4,21 +4,21 @@
|
||||
|
||||
Leapfrog Clickstart Emulation
|
||||
|
||||
die markings show
|
||||
"SunPlus QL8041C" ( known as Sunplus SPG2?? )
|
||||
die markings show
|
||||
"SunPlus QL8041C" ( known as Sunplus SPG2?? )
|
||||
|
||||
Status:
|
||||
|
||||
Some games have Checksums listed in the header area that appear to be
|
||||
like the byte checksums on the Radica games in vii.cpp, however the
|
||||
calculation doesn't add up correctly. There is also a checksum in
|
||||
a footer area at the end of every ROM that does add up correctly in
|
||||
all cases.
|
||||
Some games have Checksums listed in the header area that appear to be
|
||||
like the byte checksums on the Radica games in vii.cpp, however the
|
||||
calculation doesn't add up correctly. There is also a checksum in
|
||||
a footer area at the end of every ROM that does add up correctly in
|
||||
all cases.
|
||||
|
||||
The ROM carts are marked for 4MByte ROMs at least so the sizes
|
||||
should be correct.
|
||||
The ROM carts are marked for 4MByte ROMs at least so the sizes
|
||||
should be correct.
|
||||
|
||||
What type of SPG is this?
|
||||
What type of SPG is this?
|
||||
|
||||
*******************************************************************************/
|
||||
|
||||
|
@ -702,7 +702,7 @@ void dacholer_state::dacholer(machine_config &config)
|
||||
AY8910(config, "ay3", XTAL(19'968'000)/16).add_route(ALL_OUTPUTS, "mono", 0.15);
|
||||
|
||||
MSM5205(config, m_msm, XTAL(384'000));
|
||||
m_msm->vck_legacy_callback().set(FUNC(dacholer_state::adpcm_int)); /* interrupt function */
|
||||
m_msm->vck_legacy_callback().set(FUNC(dacholer_state::adpcm_int)); /* interrupt function */
|
||||
m_msm->set_prescaler_selector(msm5205_device::S96_4B); /* 1 / 96 = 3906.25Hz playback - guess */
|
||||
m_msm->add_route(ALL_OUTPUTS, "mono", 0.30);
|
||||
}
|
||||
|
@ -944,14 +944,14 @@ GFXDECODE_END
|
||||
void ddragon_state::ddragon(machine_config &config)
|
||||
{
|
||||
/* basic machine hardware */
|
||||
HD6309E(config, m_maincpu, MAIN_CLOCK / 4); /* HD63C09EP, 3 MHz */
|
||||
HD6309E(config, m_maincpu, MAIN_CLOCK / 4); /* HD63C09EP, 3 MHz */
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &ddragon_state::ddragon_map);
|
||||
TIMER(config, "scantimer").configure_scanline(FUNC(ddragon_state::ddragon_scanline), "screen", 0, 1);
|
||||
|
||||
HD63701(config, m_subcpu, MAIN_CLOCK / 2); /* HD63701YOP, 6 MHz / 4 internally */
|
||||
HD63701(config, m_subcpu, MAIN_CLOCK / 2); /* HD63701YOP, 6 MHz / 4 internally */
|
||||
m_subcpu->set_addrmap(AS_PROGRAM, &ddragon_state::sub_map);
|
||||
|
||||
MC6809(config, m_soundcpu, MAIN_CLOCK / 2); /* HD68A09P, 6 MHz / 4 internally */
|
||||
MC6809(config, m_soundcpu, MAIN_CLOCK / 2); /* HD68A09P, 6 MHz / 4 internally */
|
||||
m_soundcpu->set_addrmap(AS_PROGRAM, &ddragon_state::sound_map);
|
||||
|
||||
config.m_minimum_quantum = attotime::from_hz(60000); /* heavy interleaving to sync up sprite<->main CPUs */
|
||||
@ -1015,14 +1015,14 @@ void ddragon_state::ddragonba(machine_config &config)
|
||||
void ddragon_state::ddragon6809(machine_config &config)
|
||||
{
|
||||
/* basic machine hardware */
|
||||
MC6809E(config, m_maincpu, MAIN_CLOCK / 8); /* 1.5 MHz */
|
||||
MC6809E(config, m_maincpu, MAIN_CLOCK / 8); /* 1.5 MHz */
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &ddragon_state::ddragon_map);
|
||||
TIMER(config, "scantimer").configure_scanline(FUNC(ddragon_state::ddragon_scanline), "screen", 0, 1);
|
||||
|
||||
MC6809E(config, m_subcpu, MAIN_CLOCK / 8); /* 1.5 Mhz */
|
||||
MC6809E(config, m_subcpu, MAIN_CLOCK / 8); /* 1.5 Mhz */
|
||||
m_subcpu->set_addrmap(AS_PROGRAM, &ddragon_state::sub_map);
|
||||
|
||||
MC6809E(config, m_soundcpu, MAIN_CLOCK / 8); /* 1.5 MHz */
|
||||
MC6809E(config, m_soundcpu, MAIN_CLOCK / 8); /* 1.5 MHz */
|
||||
m_soundcpu->set_addrmap(AS_PROGRAM, &ddragon_state::sound_map);
|
||||
|
||||
config.m_minimum_quantum = attotime::from_hz(60000); /* heavy interleaving to sync up sprite<->main CPUs */
|
||||
@ -1066,11 +1066,11 @@ void ddragon_state::ddragon6809(machine_config &config)
|
||||
void ddragon_state::ddragon2(machine_config &config)
|
||||
{
|
||||
/* basic machine hardware */
|
||||
HD6309E(config, m_maincpu, MAIN_CLOCK / 4); /* HD63C09EP, 3 MHz */
|
||||
HD6309E(config, m_maincpu, MAIN_CLOCK / 4); /* HD63C09EP, 3 MHz */
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &ddragon_state::dd2_map);
|
||||
TIMER(config, "scantimer").configure_scanline(FUNC(ddragon_state::ddragon_scanline), "screen", 0, 1);
|
||||
|
||||
Z80(config, m_subcpu, MAIN_CLOCK / 3); /* 4 MHz */
|
||||
Z80(config, m_subcpu, MAIN_CLOCK / 3); /* 4 MHz */
|
||||
m_subcpu->set_addrmap(AS_PROGRAM, &ddragon_state::dd2_sub_map);
|
||||
|
||||
Z80(config, m_soundcpu, 3579545);
|
||||
|
@ -253,11 +253,11 @@ void deniam_state::machine_reset()
|
||||
void deniam_state::deniam16b(machine_config &config)
|
||||
{
|
||||
/* basic machine hardware */
|
||||
M68000(config, m_maincpu, XTAL(25'000'000)/2); /* 12.5Mhz verified */
|
||||
M68000(config, m_maincpu, XTAL(25'000'000)/2); /* 12.5Mhz verified */
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &deniam_state::deniam16b_map);
|
||||
m_maincpu->set_vblank_int("screen", FUNC(deniam_state::irq4_line_assert));
|
||||
|
||||
Z80(config, m_audiocpu, XTAL(25'000'000)/4); /* 6.25Mhz verified */
|
||||
Z80(config, m_audiocpu, XTAL(25'000'000)/4); /* 6.25Mhz verified */
|
||||
m_audiocpu->set_addrmap(AS_PROGRAM, &deniam_state::sound_map);
|
||||
m_audiocpu->set_addrmap(AS_IO, &deniam_state::sound_io_map);
|
||||
|
||||
@ -291,7 +291,7 @@ void deniam_state::deniam16b(machine_config &config)
|
||||
void deniam_state::deniam16c(machine_config &config)
|
||||
{
|
||||
/* basic machine hardware */
|
||||
M68000(config, m_maincpu, XTAL(25'000'000)/2); /* 12.5Mhz verified */
|
||||
M68000(config, m_maincpu, XTAL(25'000'000)/2); /* 12.5Mhz verified */
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &deniam_state::deniam16c_map);
|
||||
m_maincpu->set_vblank_int("screen", FUNC(deniam_state::irq4_line_assert));
|
||||
|
||||
|
@ -459,7 +459,7 @@ WRITE_LINE_MEMBER(discoboy_state::yunsung8_adpcm_int)
|
||||
void discoboy_state::discoboy(machine_config &config)
|
||||
{
|
||||
/* basic machine hardware */
|
||||
Z80(config, m_maincpu, XTAL(12'000'000)/2); /* 6 MHz? */
|
||||
Z80(config, m_maincpu, XTAL(12'000'000)/2); /* 6 MHz? */
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &discoboy_state::discoboy_map);
|
||||
m_maincpu->set_addrmap(AS_IO, &discoboy_state::io_map);
|
||||
m_maincpu->set_vblank_int("screen", FUNC(discoboy_state::irq0_line_hold));
|
||||
|
@ -270,7 +270,7 @@ void drmicro_state::drmicro(machine_config &config)
|
||||
SN76496(config, "sn3", MCLK/4).add_route(ALL_OUTPUTS, "mono", 0.50);
|
||||
|
||||
MSM5205(config, m_msm, 384000);
|
||||
m_msm->vck_legacy_callback().set(FUNC(drmicro_state::pcm_w)); /* IRQ handler */
|
||||
m_msm->vck_legacy_callback().set(FUNC(drmicro_state::pcm_w)); /* IRQ handler */
|
||||
m_msm->set_prescaler_selector(msm5205_device::S64_4B); /* 6 KHz */
|
||||
m_msm->add_route(ALL_OUTPUTS, "mono", 0.75);
|
||||
}
|
||||
|
@ -4247,7 +4247,7 @@ void dynax_state::cdracula(machine_config &config)
|
||||
void dynax_state::hanamai(machine_config &config)
|
||||
{
|
||||
/* basic machine hardware */
|
||||
Z80(config, m_maincpu, 22000000 / 4); /* 5.5MHz */
|
||||
Z80(config, m_maincpu, 22000000 / 4); /* 5.5MHz */
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &dynax_state::sprtmtch_mem_map);
|
||||
m_maincpu->set_addrmap(AS_IO, &dynax_state::hanamai_io_map);
|
||||
m_maincpu->set_irq_acknowledge_callback("mainirq", FUNC(rst_pos_buffer_device::inta_cb)); // IM 0 needs an opcode on the data bus
|
||||
@ -4303,8 +4303,8 @@ void dynax_state::hanamai(machine_config &config)
|
||||
ym2203.add_route(3, "mono", 0.50);
|
||||
|
||||
MSM5205(config, m_msm, 384000);
|
||||
m_msm->vck_legacy_callback().set(FUNC(dynax_state::adpcm_int)); /* IRQ handler */
|
||||
m_msm->set_prescaler_selector(msm5205_device::S48_4B); /* 8 KHz, 4 Bits */
|
||||
m_msm->vck_legacy_callback().set(FUNC(dynax_state::adpcm_int)); /* IRQ handler */
|
||||
m_msm->set_prescaler_selector(msm5205_device::S48_4B); /* 8 KHz, 4 Bits */
|
||||
m_msm->add_route(ALL_OUTPUTS, "mono", 1.0);
|
||||
}
|
||||
|
||||
@ -4317,7 +4317,7 @@ void dynax_state::hanamai(machine_config &config)
|
||||
void dynax_state::hnoridur(machine_config &config)
|
||||
{
|
||||
/* basic machine hardware */
|
||||
Z80(config, m_maincpu, XTAL(22'000'000) / 4); /* 5.5MHz */
|
||||
Z80(config, m_maincpu, XTAL(22'000'000) / 4); /* 5.5MHz */
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &dynax_state::hnoridur_mem_map);
|
||||
m_maincpu->set_addrmap(AS_IO, &dynax_state::hnoridur_io_map);
|
||||
m_maincpu->set_irq_acknowledge_callback("mainirq", FUNC(rst_pos_buffer_device::inta_cb)); // IM 0 needs an opcode on the data bus
|
||||
@ -4371,8 +4371,8 @@ void dynax_state::hnoridur(machine_config &config)
|
||||
YM2413(config, "ym2413", XTAL(3'579'545)).add_route(ALL_OUTPUTS, "mono", 1.0);
|
||||
|
||||
MSM5205(config, m_msm, XTAL(384'000));
|
||||
m_msm->vck_legacy_callback().set(FUNC(dynax_state::adpcm_int)); /* IRQ handler */
|
||||
m_msm->set_prescaler_selector(msm5205_device::S48_4B); /* 8 KHz, 4 Bits */
|
||||
m_msm->vck_legacy_callback().set(FUNC(dynax_state::adpcm_int)); /* IRQ handler */
|
||||
m_msm->set_prescaler_selector(msm5205_device::S48_4B); /* 8 KHz, 4 Bits */
|
||||
m_msm->add_route(ALL_OUTPUTS, "mono", 1.0);
|
||||
}
|
||||
|
||||
@ -4387,7 +4387,7 @@ void dynax_state::hjingi(machine_config &config)
|
||||
Z80(config, m_maincpu, XTAL(22'000'000) / 4);
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &dynax_state::hjingi_mem_map);
|
||||
m_maincpu->set_addrmap(AS_IO, &dynax_state::hjingi_io_map);
|
||||
m_maincpu->set_irq_acknowledge_callback("mainirq", FUNC(rst_pos_buffer_device::inta_cb)); // IM 0 needs an opcode on the data bus
|
||||
m_maincpu->set_irq_acknowledge_callback("mainirq", FUNC(rst_pos_buffer_device::inta_cb)); // IM 0 needs an opcode on the data bus
|
||||
|
||||
MCFG_MACHINE_START_OVERRIDE(dynax_state,hjingi)
|
||||
MCFG_MACHINE_RESET_OVERRIDE(dynax_state,dynax)
|
||||
@ -4440,8 +4440,8 @@ void dynax_state::hjingi(machine_config &config)
|
||||
YM2413(config, "ym2413", XTAL(3'579'545)).add_route(ALL_OUTPUTS, "mono", 1.0);
|
||||
|
||||
MSM5205(config, m_msm, XTAL(384'000));
|
||||
m_msm->vck_legacy_callback().set(FUNC(dynax_state::adpcm_int)); /* IRQ handler */
|
||||
m_msm->set_prescaler_selector(msm5205_device::S48_4B); /* 8 KHz, 4 Bits */
|
||||
m_msm->vck_legacy_callback().set(FUNC(dynax_state::adpcm_int)); /* IRQ handler */
|
||||
m_msm->set_prescaler_selector(msm5205_device::S48_4B); /* 8 KHz, 4 Bits */
|
||||
m_msm->add_route(ALL_OUTPUTS, "mono", 1.0);
|
||||
}
|
||||
|
||||
@ -4453,10 +4453,10 @@ void dynax_state::hjingi(machine_config &config)
|
||||
void dynax_state::sprtmtch(machine_config &config)
|
||||
{
|
||||
/* basic machine hardware */
|
||||
Z80(config, m_maincpu, 22000000 / 4); /* 5.5MHz */
|
||||
Z80(config, m_maincpu, 22000000 / 4); /* 5.5MHz */
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &dynax_state::sprtmtch_mem_map);
|
||||
m_maincpu->set_addrmap(AS_IO, &dynax_state::sprtmtch_io_map);
|
||||
m_maincpu->set_irq_acknowledge_callback("mainirq", FUNC(rst_pos_buffer_device::inta_cb)); // IM 0 needs an opcode on the data bus
|
||||
m_maincpu->set_irq_acknowledge_callback("mainirq", FUNC(rst_pos_buffer_device::inta_cb)); // IM 0 needs an opcode on the data bus
|
||||
|
||||
MCFG_MACHINE_START_OVERRIDE(dynax_state,hanamai)
|
||||
MCFG_MACHINE_RESET_OVERRIDE(dynax_state,dynax)
|
||||
@ -4662,15 +4662,15 @@ MACHINE_START_MEMBER(dynax_state,jantouki)
|
||||
void dynax_state::jantouki(machine_config &config)
|
||||
{
|
||||
/* basic machine hardware */
|
||||
Z80(config, m_maincpu, 22000000 / 4); /* 5.5MHz */
|
||||
Z80(config, m_maincpu, 22000000 / 4); /* 5.5MHz */
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &dynax_state::jantouki_mem_map);
|
||||
m_maincpu->set_addrmap(AS_IO, &dynax_state::jantouki_io_map);
|
||||
m_maincpu->set_irq_acknowledge_callback("mainirq", FUNC(rst_pos_buffer_device::inta_cb)); // IM 0 needs an opcode on the data bus
|
||||
m_maincpu->set_irq_acknowledge_callback("mainirq", FUNC(rst_pos_buffer_device::inta_cb)); // IM 0 needs an opcode on the data bus
|
||||
|
||||
Z80(config, m_soundcpu, 22000000 / 4); /* 5.5MHz */
|
||||
Z80(config, m_soundcpu, 22000000 / 4); /* 5.5MHz */
|
||||
m_soundcpu->set_addrmap(AS_PROGRAM, &dynax_state::jantouki_sound_mem_map);
|
||||
m_soundcpu->set_addrmap(AS_IO, &dynax_state::jantouki_sound_io_map);
|
||||
m_soundcpu->set_irq_acknowledge_callback("soundirq", FUNC(rst_pos_buffer_device::inta_cb)); // IM 0 needs an opcode on the data bus
|
||||
m_soundcpu->set_irq_acknowledge_callback("soundirq", FUNC(rst_pos_buffer_device::inta_cb)); // IM 0 needs an opcode on the data bus
|
||||
|
||||
MCFG_MACHINE_START_OVERRIDE(dynax_state,jantouki)
|
||||
MCFG_MACHINE_RESET_OVERRIDE(dynax_state,dynax)
|
||||
@ -4739,8 +4739,8 @@ void dynax_state::jantouki(machine_config &config)
|
||||
ym2203.add_route(3, "mono", 0.50);
|
||||
|
||||
MSM5205(config, m_msm, 384000);
|
||||
m_msm->vck_legacy_callback().set(FUNC(dynax_state::adpcm_int_cpu1)); /* IRQ handler */
|
||||
m_msm->set_prescaler_selector(msm5205_device::S48_4B); /* 8 KHz, 4 Bits */
|
||||
m_msm->vck_legacy_callback().set(FUNC(dynax_state::adpcm_int_cpu1)); /* IRQ handler */
|
||||
m_msm->set_prescaler_selector(msm5205_device::S48_4B); /* 8 KHz, 4 Bits */
|
||||
m_msm->add_route(ALL_OUTPUTS, "mono", 1.0);
|
||||
|
||||
/* devices */
|
||||
|
@ -934,10 +934,10 @@ void borntofi_state::machine_reset()
|
||||
void borntofi_state::borntofi(machine_config &config)
|
||||
{
|
||||
/* basic machine hardware */
|
||||
V20(config, m_maincpu, 16000000/2); // D701080C-8 - NEC D70108C-8 V20 CPU, running at 8.000MHz [16/2]
|
||||
V20(config, m_maincpu, 16000000/2); // D701080C-8 - NEC D70108C-8 V20 CPU, running at 8.000MHz [16/2]
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &borntofi_state::main_map);
|
||||
|
||||
I8088(config, m_audiocpu, 18432000/3); // 8088 - AMD P8088-2 CPU, running at 6.144MHz [18.432/3]
|
||||
I8088(config, m_audiocpu, 18432000/3); // 8088 - AMD P8088-2 CPU, running at 6.144MHz [18.432/3]
|
||||
m_audiocpu->set_addrmap(AS_PROGRAM, &borntofi_state::sound_map);
|
||||
|
||||
/* video hardware */
|
||||
@ -983,10 +983,10 @@ void borntofi_state::borntofi(machine_config &config)
|
||||
void fantland_state::wheelrun(machine_config &config)
|
||||
{
|
||||
/* basic machine hardware */
|
||||
V20(config, m_maincpu, XTAL(18'000'000)/2); // D701080C-8 (V20)
|
||||
V20(config, m_maincpu, XTAL(18'000'000)/2); // D701080C-8 (V20)
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &fantland_state::wheelrun_map);
|
||||
|
||||
Z80(config, m_audiocpu, XTAL(18'000'000)/2); // Z8400BB1 (Z80B)
|
||||
Z80(config, m_audiocpu, XTAL(18'000'000)/2); // Z8400BB1 (Z80B)
|
||||
m_audiocpu->set_addrmap(AS_PROGRAM, &fantland_state::wheelrun_sound_map);
|
||||
// IRQ by YM3526, NMI when soundlatch is written
|
||||
|
||||
|
@ -1763,14 +1763,14 @@ void cps_state::fcrash(machine_config &config)
|
||||
ym2.add_route(2, "mono", 0.10);
|
||||
ym2.add_route(3, "mono", 1.0);
|
||||
|
||||
MSM5205(config, m_msm_1, 24000000/64); /* ? */
|
||||
MSM5205(config, m_msm_1, 24000000/64); /* ? */
|
||||
m_msm_1->vck_legacy_callback().set(FUNC(cps_state::m5205_int1)); /* interrupt function */
|
||||
m_msm_1->set_prescaler_selector(msm5205_device::S96_4B); /* 4KHz 4-bit */
|
||||
m_msm_1->set_prescaler_selector(msm5205_device::S96_4B); /* 4KHz 4-bit */
|
||||
m_msm_1->add_route(ALL_OUTPUTS, "mono", 0.25);
|
||||
|
||||
MSM5205(config, m_msm_2, 24000000/64); /* ? */
|
||||
MSM5205(config, m_msm_2, 24000000/64); /* ? */
|
||||
m_msm_2->vck_legacy_callback().set(FUNC(cps_state::m5205_int2)); /* interrupt function */
|
||||
m_msm_2->set_prescaler_selector(msm5205_device::S96_4B); /* 4KHz 4-bit */
|
||||
m_msm_2->set_prescaler_selector(msm5205_device::S96_4B); /* 4KHz 4-bit */
|
||||
m_msm_2->add_route(ALL_OUTPUTS, "mono", 0.25);
|
||||
}
|
||||
|
||||
@ -1899,14 +1899,14 @@ void cps_state::sf2mdt(machine_config &config)
|
||||
YM2151(config, "2151", XTAL(3'579'545)).add_route(0, "mono", 0.35).add_route(1, "mono", 0.35);
|
||||
|
||||
/* has 2x MSM5205 instead of OKI6295 */
|
||||
MSM5205(config, m_msm_1, 24000000/64); /* ? */
|
||||
m_msm_1->vck_legacy_callback().set(FUNC(cps_state::m5205_int1)); /* interrupt function */
|
||||
m_msm_1->set_prescaler_selector(msm5205_device::S96_4B); /* 4KHz 4-bit */
|
||||
MSM5205(config, m_msm_1, 24000000/64); /* ? */
|
||||
m_msm_1->vck_legacy_callback().set(FUNC(cps_state::m5205_int1)); /* interrupt function */
|
||||
m_msm_1->set_prescaler_selector(msm5205_device::S96_4B); /* 4KHz 4-bit */
|
||||
m_msm_1->add_route(ALL_OUTPUTS, "mono", 0.25);
|
||||
|
||||
MSM5205(config, m_msm_2, 24000000/64); /* ? */
|
||||
m_msm_2->vck_legacy_callback().set(FUNC(cps_state::m5205_int2)); /* interrupt function */
|
||||
m_msm_2->set_prescaler_selector(msm5205_device::S96_4B); /* 4KHz 4-bit */
|
||||
MSM5205(config, m_msm_2, 24000000/64); /* ? */
|
||||
m_msm_2->vck_legacy_callback().set(FUNC(cps_state::m5205_int2)); /* interrupt function */
|
||||
m_msm_2->set_prescaler_selector(msm5205_device::S96_4B); /* 4KHz 4-bit */
|
||||
m_msm_2->add_route(ALL_OUTPUTS, "mono", 0.25);
|
||||
}
|
||||
|
||||
@ -1953,14 +1953,14 @@ void cps_state::knightsb(machine_config &config)
|
||||
ym2151.add_route(1, "mono", 0.35);
|
||||
|
||||
/* has 2x MSM5205 instead of OKI6295 */
|
||||
MSM5205(config, m_msm_1, 24000000/64); /* ? */
|
||||
m_msm_1->vck_legacy_callback().set(FUNC(cps_state::m5205_int1)); /* interrupt function */
|
||||
m_msm_1->set_prescaler_selector(msm5205_device::S96_4B); /* 4KHz 4-bit */
|
||||
MSM5205(config, m_msm_1, 24000000/64); /* ? */
|
||||
m_msm_1->vck_legacy_callback().set(FUNC(cps_state::m5205_int1)); /* interrupt function */
|
||||
m_msm_1->set_prescaler_selector(msm5205_device::S96_4B); /* 4KHz 4-bit */
|
||||
m_msm_1->add_route(ALL_OUTPUTS, "mono", 0.25);
|
||||
|
||||
MSM5205(config, m_msm_2, 24000000/64); /* ? */
|
||||
m_msm_1->vck_legacy_callback().set(FUNC(cps_state::m5205_int2)); /* interrupt function */
|
||||
m_msm_2->set_prescaler_selector(msm5205_device::S96_4B); /* 4KHz 4-bit */
|
||||
MSM5205(config, m_msm_2, 24000000/64); /* ? */
|
||||
m_msm_1->vck_legacy_callback().set(FUNC(cps_state::m5205_int2)); /* interrupt function */
|
||||
m_msm_2->set_prescaler_selector(msm5205_device::S96_4B); /* 4KHz 4-bit */
|
||||
m_msm_2->add_route(ALL_OUTPUTS, "mono", 0.25);
|
||||
}
|
||||
|
||||
|
@ -618,11 +618,11 @@ void firetrap_state::machine_reset()
|
||||
void firetrap_state::firetrap(machine_config &config)
|
||||
{
|
||||
/* basic machine hardware */
|
||||
Z80(config, m_maincpu, FIRETRAP_XTAL/2); // 6 MHz
|
||||
Z80(config, m_maincpu, FIRETRAP_XTAL/2); // 6 MHz
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &firetrap_state::firetrap_map);
|
||||
m_maincpu->set_vblank_int("screen", FUNC(firetrap_state::firetrap_irq));
|
||||
|
||||
M6502(config, m_audiocpu, FIRETRAP_XTAL/8); // 1.5 MHz
|
||||
M6502(config, m_audiocpu, FIRETRAP_XTAL/8); // 1.5 MHz
|
||||
m_audiocpu->set_addrmap(AS_PROGRAM, &firetrap_state::sound_map);
|
||||
/* IRQs are caused by the ADPCM chip */
|
||||
/* NMIs are caused by the main CPU */
|
||||
@ -655,20 +655,20 @@ void firetrap_state::firetrap(machine_config &config)
|
||||
LS157(config, m_adpcm_select, 0);
|
||||
m_adpcm_select->out_callback().set("msm", FUNC(msm5205_device::data_w));
|
||||
|
||||
MSM5205(config, m_msm, FIRETRAP_XTAL/32); // 375 kHz
|
||||
MSM5205(config, m_msm, FIRETRAP_XTAL/32); // 375 kHz
|
||||
m_msm->vck_callback().set(FUNC(firetrap_state::firetrap_adpcm_int));
|
||||
m_msm->set_prescaler_selector(msm5205_device::S48_4B); /* 7.8125kHz */
|
||||
m_msm->set_prescaler_selector(msm5205_device::S48_4B); /* 7.8125kHz */
|
||||
m_msm->add_route(ALL_OUTPUTS, "mono", 0.30);
|
||||
}
|
||||
|
||||
void firetrap_state::firetrapbl(machine_config &config)
|
||||
{
|
||||
/* basic machine hardware */
|
||||
Z80(config, m_maincpu, FIRETRAP_XTAL/2); // 6 MHz
|
||||
Z80(config, m_maincpu, FIRETRAP_XTAL/2); // 6 MHz
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &firetrap_state::firetrap_bootleg_map);
|
||||
m_maincpu->set_vblank_int("screen", FUNC(firetrap_state::firetrap_irq));
|
||||
|
||||
M6502(config, m_audiocpu, FIRETRAP_XTAL/8); // 1.5 MHz
|
||||
M6502(config, m_audiocpu, FIRETRAP_XTAL/8); // 1.5 MHz
|
||||
m_audiocpu->set_addrmap(AS_PROGRAM, &firetrap_state::sound_map);
|
||||
/* IRQs are caused by the ADPCM chip */
|
||||
/* NMIs are caused by the main CPU */
|
||||
@ -693,15 +693,15 @@ void firetrap_state::firetrapbl(machine_config &config)
|
||||
GENERIC_LATCH_8(config, m_soundlatch);
|
||||
m_soundlatch->data_pending_callback().set_inputline(m_audiocpu, INPUT_LINE_NMI);
|
||||
|
||||
ym3526_device &ymsnd(YM3526(config, "ymsnd", FIRETRAP_XTAL/4)); // 3 MHz
|
||||
ym3526_device &ymsnd(YM3526(config, "ymsnd", FIRETRAP_XTAL/4)); // 3 MHz
|
||||
ymsnd.add_route(ALL_OUTPUTS, "mono", 1.0);
|
||||
|
||||
LS157(config, m_adpcm_select, 0);
|
||||
m_adpcm_select->out_callback().set("msm", FUNC(msm5205_device::data_w));
|
||||
|
||||
MSM5205(config, m_msm, FIRETRAP_XTAL/32); // 375 kHz
|
||||
MSM5205(config, m_msm, FIRETRAP_XTAL/32); // 375 kHz
|
||||
m_msm->vck_callback().set(FUNC(firetrap_state::firetrap_adpcm_int));
|
||||
m_msm->set_prescaler_selector(msm5205_device::S48_4B); /* 7.8125kHz */
|
||||
m_msm->set_prescaler_selector(msm5205_device::S48_4B); /* 7.8125kHz */
|
||||
m_msm->add_route(ALL_OUTPUTS, "mono", 0.30);
|
||||
}
|
||||
|
||||
|
@ -903,11 +903,11 @@ MACHINE_RESET_MEMBER(fromance_state,fromance)
|
||||
void fromance_state::nekkyoku(machine_config &config)
|
||||
{
|
||||
/* basic machine hardware */
|
||||
Z80(config, m_maincpu, 12000000/2); /* 6.00 Mhz ? */
|
||||
Z80(config, m_maincpu, 12000000/2); /* 6.00 Mhz ? */
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &fromance_state::nekkyoku_main_map);
|
||||
m_maincpu->set_vblank_int("screen", FUNC(fromance_state::irq0_line_hold));
|
||||
|
||||
Z80(config, m_subcpu, 12000000/2); /* 6.00 Mhz ? */
|
||||
Z80(config, m_subcpu, 12000000/2); /* 6.00 Mhz ? */
|
||||
m_subcpu->set_addrmap(AS_PROGRAM, &fromance_state::nekkyoku_sub_map);
|
||||
m_subcpu->set_addrmap(AS_IO, &fromance_state::nekkyoku_sub_io_map);
|
||||
|
||||
@ -940,18 +940,18 @@ void fromance_state::nekkyoku(machine_config &config)
|
||||
|
||||
MSM5205(config, m_msm, 384000);
|
||||
m_msm->vck_legacy_callback().set(FUNC(fromance_state::fromance_adpcm_int)); /* IRQ handler */
|
||||
m_msm->set_prescaler_selector(msm5205_device::S48_4B); /* 8 KHz */
|
||||
m_msm->set_prescaler_selector(msm5205_device::S48_4B); /* 8 KHz */
|
||||
m_msm->add_route(ALL_OUTPUTS, "mono", 0.80);
|
||||
}
|
||||
|
||||
void fromance_state::idolmj(machine_config &config)
|
||||
{
|
||||
/* basic machine hardware */
|
||||
Z80(config, m_maincpu, XTAL(12'000'000) / 2); /* 6.00 Mhz ? */
|
||||
Z80(config, m_maincpu, XTAL(12'000'000) / 2); /* 6.00 Mhz ? */
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &fromance_state::fromance_main_map);
|
||||
m_maincpu->set_vblank_int("screen", FUNC(fromance_state::irq0_line_hold));
|
||||
|
||||
Z80(config, m_subcpu, XTAL(12'000'000) / 2); /* 6.00 Mhz ? */
|
||||
Z80(config, m_subcpu, XTAL(12'000'000) / 2); /* 6.00 Mhz ? */
|
||||
m_subcpu->set_addrmap(AS_PROGRAM, &fromance_state::fromance_sub_map);
|
||||
m_subcpu->set_addrmap(AS_IO, &fromance_state::idolmj_sub_io_map);
|
||||
|
||||
@ -984,7 +984,7 @@ void fromance_state::idolmj(machine_config &config)
|
||||
|
||||
MSM5205(config, m_msm, 384000);
|
||||
m_msm->vck_legacy_callback().set(FUNC(fromance_state::fromance_adpcm_int)); /* IRQ handler */
|
||||
m_msm->set_prescaler_selector(msm5205_device::S48_4B); /* 8 KHz */
|
||||
m_msm->set_prescaler_selector(msm5205_device::S48_4B); /* 8 KHz */
|
||||
m_msm->add_route(ALL_OUTPUTS, "mono", 0.80);
|
||||
}
|
||||
|
||||
@ -992,11 +992,11 @@ void fromance_state::idolmj(machine_config &config)
|
||||
void fromance_state::fromance(machine_config &config)
|
||||
{
|
||||
/* basic machine hardware */
|
||||
Z80(config, m_maincpu, XTAL(12'000'000) / 2); /* 6.00 Mhz ? */
|
||||
Z80(config, m_maincpu, XTAL(12'000'000) / 2); /* 6.00 Mhz ? */
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &fromance_state::fromance_main_map);
|
||||
m_maincpu->set_vblank_int("screen", FUNC(fromance_state::irq0_line_hold));
|
||||
|
||||
Z80(config, m_subcpu, XTAL(12'000'000) / 2); /* 6.00 Mhz ? */
|
||||
Z80(config, m_subcpu, XTAL(12'000'000) / 2); /* 6.00 Mhz ? */
|
||||
m_subcpu->set_addrmap(AS_PROGRAM, &fromance_state::fromance_sub_map);
|
||||
m_subcpu->set_addrmap(AS_IO, &fromance_state::fromance_sub_io_map);
|
||||
|
||||
@ -1029,7 +1029,7 @@ void fromance_state::fromance(machine_config &config)
|
||||
|
||||
MSM5205(config, m_msm, 384000);
|
||||
m_msm->vck_legacy_callback().set(FUNC(fromance_state::fromance_adpcm_int)); /* IRQ handler */
|
||||
m_msm->set_prescaler_selector(msm5205_device::S48_4B); /* 8 KHz */
|
||||
m_msm->set_prescaler_selector(msm5205_device::S48_4B); /* 8 KHz */
|
||||
m_msm->add_route(ALL_OUTPUTS, "mono", 0.10);
|
||||
}
|
||||
|
||||
|
@ -448,10 +448,10 @@ void fuuki16_state::machine_reset()
|
||||
void fuuki16_state::fuuki16(machine_config &config)
|
||||
{
|
||||
/* basic machine hardware */
|
||||
M68000(config, m_maincpu, XTAL(32'000'000) / 2); /* 16 MHz */
|
||||
M68000(config, m_maincpu, XTAL(32'000'000) / 2); /* 16 MHz */
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &fuuki16_state::fuuki16_map);
|
||||
|
||||
Z80(config, m_audiocpu, XTAL(12'000'000) / 2); /* 6 MHz */
|
||||
Z80(config, m_audiocpu, XTAL(12'000'000) / 2); /* 6 MHz */
|
||||
m_audiocpu->set_addrmap(AS_PROGRAM, &fuuki16_state::fuuki16_sound_map);
|
||||
m_audiocpu->set_addrmap(AS_IO, &fuuki16_state::fuuki16_sound_io_map);
|
||||
|
||||
|
@ -758,7 +758,7 @@ void gaiden_state::shadoww(machine_config &config)
|
||||
m_maincpu->set_vblank_int("screen", FUNC(gaiden_state::irq5_line_assert));
|
||||
|
||||
Z80(config, m_audiocpu, 4000000); /* 4 MHz */
|
||||
m_audiocpu->set_addrmap(AS_PROGRAM, &gaiden_state::sound_map); /* IRQs are triggered by the YM2203 */
|
||||
m_audiocpu->set_addrmap(AS_PROGRAM, &gaiden_state::sound_map); /* IRQs are triggered by the YM2203 */
|
||||
|
||||
WATCHDOG_TIMER(config, "watchdog");
|
||||
|
||||
|
@ -217,12 +217,12 @@ void galspnbl_state::machine_start()
|
||||
void galspnbl_state::galspnbl(machine_config &config)
|
||||
{
|
||||
/* basic machine hardware */
|
||||
M68000(config, m_maincpu, XTAL(12'000'000)); /* 12 MHz ??? - Use value from Tecmo's Super Pinball Action - NEEDS VERIFICATION!! */
|
||||
M68000(config, m_maincpu, XTAL(12'000'000)); /* 12 MHz ??? - Use value from Tecmo's Super Pinball Action - NEEDS VERIFICATION!! */
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &galspnbl_state::main_map);
|
||||
m_maincpu->set_vblank_int("screen", FUNC(galspnbl_state::irq3_line_hold)); /* also has vector for 6, but it does nothing */
|
||||
|
||||
Z80(config, m_audiocpu, XTAL(4'000'000)); /* 4 MHz ??? - Use value from Tecmo's Super Pinball Action - NEEDS VERIFICATION!! */
|
||||
m_audiocpu->set_addrmap(AS_PROGRAM, &galspnbl_state::audio_map); /* NMI is caused by the main CPU */
|
||||
Z80(config, m_audiocpu, XTAL(4'000'000)); /* 4 MHz ??? - Use value from Tecmo's Super Pinball Action - NEEDS VERIFICATION!! */
|
||||
m_audiocpu->set_addrmap(AS_PROGRAM, &galspnbl_state::audio_map); /* NMI is caused by the main CPU */
|
||||
|
||||
/* video hardware */
|
||||
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
|
||||
|
@ -941,17 +941,17 @@ GFXDECODE_END
|
||||
void ppking_state::ppking(machine_config &config)
|
||||
{
|
||||
/* basic machine hardware */
|
||||
Z80(config, m_maincpu, 12_MHz_XTAL/2); /* verified on pcb */
|
||||
Z80(config, m_maincpu, 12_MHz_XTAL/2); /* verified on pcb */
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &ppking_state::ppking_cpu1_map);
|
||||
m_maincpu->set_addrmap(AS_IO, &ppking_state::ppking_cpu1_io);
|
||||
m_maincpu->set_vblank_int("screen", FUNC(ppking_state::irq0_line_hold));
|
||||
|
||||
Z80(config, m_subcpu, 12_MHz_XTAL/4); /* verified on pcb */
|
||||
Z80(config, m_subcpu, 12_MHz_XTAL/4); /* verified on pcb */
|
||||
m_subcpu->set_addrmap(AS_PROGRAM, &ppking_state::cpu2_map);
|
||||
m_subcpu->set_addrmap(AS_IO, &ppking_state::ppking_cpu2_io);
|
||||
m_subcpu->set_periodic_int(FUNC(ppking_state::irq0_line_assert), attotime::from_hz(60));
|
||||
|
||||
MC6809(config, m_audiocpu, 12_MHz_XTAL/4); /* verified on pcb */
|
||||
MC6809(config, m_audiocpu, 12_MHz_XTAL/4); /* verified on pcb */
|
||||
m_audiocpu->set_addrmap(AS_PROGRAM, &ppking_state::ppking_cpu3_map);
|
||||
|
||||
config.m_minimum_quantum = attotime::from_hz(6000);
|
||||
@ -999,23 +999,23 @@ void ppking_state::ppking(machine_config &config)
|
||||
ymsnd.add_route(3, "mono", 0.50);
|
||||
|
||||
MSM5205(config, m_msm, 455_kHz_XTAL); /* verified on pcb */
|
||||
m_msm->set_prescaler_selector(msm5205_device::SEX_4B); /* vclk input mode */
|
||||
m_msm->set_prescaler_selector(msm5205_device::SEX_4B); /* vclk input mode */
|
||||
m_msm->add_route(ALL_OUTPUTS, "mono", 0.60);
|
||||
}
|
||||
|
||||
void gladiatr_state::gladiatr(machine_config &config)
|
||||
{
|
||||
/* basic machine hardware */
|
||||
Z80(config, m_maincpu, 12_MHz_XTAL/2); /* verified on pcb */
|
||||
Z80(config, m_maincpu, 12_MHz_XTAL/2); /* verified on pcb */
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &gladiatr_state::gladiatr_cpu1_map);
|
||||
m_maincpu->set_addrmap(AS_IO, &gladiatr_state::gladiatr_cpu1_io);
|
||||
m_maincpu->set_vblank_int("screen", FUNC(gladiatr_state::irq0_line_hold));
|
||||
|
||||
Z80(config, m_subcpu, 12_MHz_XTAL/4); /* verified on pcb */
|
||||
Z80(config, m_subcpu, 12_MHz_XTAL/4); /* verified on pcb */
|
||||
m_subcpu->set_addrmap(AS_PROGRAM, &gladiatr_state::cpu2_map);
|
||||
m_subcpu->set_addrmap(AS_IO, &gladiatr_state::gladiatr_cpu2_io);
|
||||
|
||||
MC6809(config, m_audiocpu, 12_MHz_XTAL/4); /* verified on pcb */
|
||||
MC6809(config, m_audiocpu, 12_MHz_XTAL/4); /* verified on pcb */
|
||||
m_audiocpu->set_addrmap(AS_PROGRAM, &gladiatr_state::gladiatr_cpu3_map);
|
||||
|
||||
MCFG_MACHINE_RESET_OVERRIDE(gladiatr_state,gladiator)
|
||||
@ -1089,8 +1089,8 @@ void gladiatr_state::gladiatr(machine_config &config)
|
||||
ymsnd.add_route(2, "mono", 0.60);
|
||||
ymsnd.add_route(3, "mono", 0.50);
|
||||
|
||||
MSM5205(config, m_msm, 455_kHz_XTAL); /* verified on pcb */
|
||||
m_msm->set_prescaler_selector(msm5205_device::SEX_4B); /* vclk input mode */
|
||||
MSM5205(config, m_msm, 455_kHz_XTAL); /* verified on pcb */
|
||||
m_msm->set_prescaler_selector(msm5205_device::SEX_4B); /* vclk input mode */
|
||||
m_msm->add_route(ALL_OUTPUTS, "mono", 0.60);
|
||||
|
||||
LS259(config, "filtlatch", 0); // 9R - filters on sound output
|
||||
|
@ -304,7 +304,7 @@ void goal92_state::goal92(machine_config &config)
|
||||
m_maincpu->set_vblank_int("screen", FUNC(goal92_state::irq6_line_hold)); /* VBL */
|
||||
|
||||
Z80(config, m_audiocpu, 2500000);
|
||||
m_audiocpu->set_addrmap(AS_PROGRAM, &goal92_state::sound_cpu); /* IRQs are triggered by the main CPU */
|
||||
m_audiocpu->set_addrmap(AS_PROGRAM, &goal92_state::sound_cpu); /* IRQs are triggered by the main CPU */
|
||||
|
||||
/* video hardware */
|
||||
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
|
||||
|
@ -917,17 +917,17 @@ GFXDECODE_END
|
||||
void gsword_state::gsword(machine_config &config)
|
||||
{
|
||||
/* basic machine hardware */
|
||||
Z80(config, m_maincpu, XTAL(18'000'000)/6); /* verified on pcb */
|
||||
Z80(config, m_maincpu, XTAL(18'000'000)/6); /* verified on pcb */
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &gsword_state::cpu1_map);
|
||||
m_maincpu->set_addrmap(AS_IO, &gsword_state::cpu1_io_map);
|
||||
m_maincpu->set_vblank_int("screen", FUNC(gsword_state::irq0_line_hold));
|
||||
|
||||
Z80(config, m_subcpu, XTAL(18'000'000)/6); /* verified on pcb */
|
||||
Z80(config, m_subcpu, XTAL(18'000'000)/6); /* verified on pcb */
|
||||
m_subcpu->set_addrmap(AS_PROGRAM, &gsword_state::cpu2_map);
|
||||
m_subcpu->set_addrmap(AS_IO, &gsword_state::cpu2_io_map);
|
||||
m_subcpu->set_periodic_int(FUNC(gsword_state::sound_interrupt), attotime::from_hz(4*60));
|
||||
|
||||
Z80(config, m_audiocpu, XTAL(18'000'000)/6); /* verified on pcb */
|
||||
Z80(config, m_audiocpu, XTAL(18'000'000)/6); /* verified on pcb */
|
||||
m_audiocpu->set_addrmap(AS_PROGRAM, &gsword_state::cpu3_map);
|
||||
|
||||
upi41_cpu_device &mcu1(I8041(config, "mcu1", 12'000'000/2)); // clock unknown, using value from gladiatr
|
||||
@ -988,12 +988,12 @@ void gsword_state::gsword(machine_config &config)
|
||||
void josvolly_state::josvolly(machine_config &config)
|
||||
{
|
||||
/* basic machine hardware */
|
||||
Z80(config, m_maincpu, 18000000/4); /* ? */
|
||||
Z80(config, m_maincpu, 18000000/4); /* ? */
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &josvolly_state::cpu1_map);
|
||||
m_maincpu->set_addrmap(AS_IO, &josvolly_state::josvolly_cpu1_io_map);
|
||||
m_maincpu->set_periodic_int(FUNC(josvolly_state::irq0_line_hold), attotime::from_hz(2*60));
|
||||
|
||||
Z80(config, m_audiocpu, 12000000/4); /* ? */
|
||||
Z80(config, m_audiocpu, 12000000/4); /* ? */
|
||||
m_audiocpu->set_addrmap(AS_PROGRAM, &josvolly_state::josvolly_cpu2_map);
|
||||
m_audiocpu->set_addrmap(AS_IO, &josvolly_state::josvolly_cpu2_io_map);
|
||||
m_audiocpu->set_vblank_int("screen", FUNC(josvolly_state::irq0_line_assert));
|
||||
|
@ -545,7 +545,7 @@ void hnayayoi_state::machine_reset()
|
||||
void hnayayoi_state::hnayayoi(machine_config &config)
|
||||
{
|
||||
/* basic machine hardware */
|
||||
Z80(config, m_maincpu, 20000000/4); /* 5 MHz ???? */
|
||||
Z80(config, m_maincpu, 20000000/4); /* 5 MHz ???? */
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &hnayayoi_state::hnayayoi_map);
|
||||
m_maincpu->set_addrmap(AS_IO, &hnayayoi_state::hnayayoi_io_map);
|
||||
|
||||
|
@ -753,7 +753,7 @@ MACHINE_CONFIG_START(hp_ipc_state::hp_ipc_base)
|
||||
|
||||
mm58167_device &rtc(MM58167(config, "rtc", 32.768_kHz_XTAL));
|
||||
rtc.irq().set(FUNC(hp_ipc_state::irq_1));
|
||||
// rtc.standby_irq().set(FUNC(hp_ipc_state::irq_6));
|
||||
// rtc.standby_irq().set(FUNC(hp_ipc_state::irq_6));
|
||||
|
||||
hp_hil_mlc_device &mlc(HP_HIL_MLC(config, "mlc", XTAL(15'920'000)/2));
|
||||
mlc.int_callback().set(FUNC(hp_ipc_state::irq_2));
|
||||
|
@ -295,10 +295,10 @@ WRITE_LINE_MEMBER(hyperspt_state::vblank_irq)
|
||||
void hyperspt_state::hyperspt(machine_config &config)
|
||||
{
|
||||
/* basic machine hardware */
|
||||
KONAMI1(config, m_maincpu, XTAL(18'432'000)/12); /* verified on pcb */
|
||||
KONAMI1(config, m_maincpu, XTAL(18'432'000)/12); /* verified on pcb */
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &hyperspt_state::hyperspt_map);
|
||||
|
||||
Z80(config, m_audiocpu, XTAL(14'318'181)/4); /* verified on pcb */
|
||||
Z80(config, m_audiocpu, XTAL(14'318'181)/4); /* verified on pcb */
|
||||
m_audiocpu->set_addrmap(AS_PROGRAM, &hyperspt_state::hyperspt_sound_map);
|
||||
|
||||
ls259_device &mainlatch(LS259(config, "mainlatch")); // F2
|
||||
@ -340,10 +340,10 @@ void hyperspt_state::hyperspt(machine_config &config)
|
||||
vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
|
||||
vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
|
||||
|
||||
SN76496(config, m_sn, XTAL(14'318'181)/8); /* verified on pcb */
|
||||
SN76496(config, m_sn, XTAL(14'318'181)/8); /* verified on pcb */
|
||||
m_sn->add_route(ALL_OUTPUTS, "speaker", 1.0);
|
||||
|
||||
VLM5030(config, m_vlm, XTAL(3'579'545)); /* verified on pcb */
|
||||
VLM5030(config, m_vlm, XTAL(3'579'545)); /* verified on pcb */
|
||||
m_vlm->add_route(ALL_OUTPUTS, "speaker", 1.0);
|
||||
}
|
||||
|
||||
@ -377,7 +377,7 @@ void hyperspt_state::hypersptb(machine_config &config)
|
||||
|
||||
m_audiocpu->set_addrmap(AS_PROGRAM, address_map_constructor(&std::remove_pointer_t<decltype(this)>::soundb_map, tag(), this));
|
||||
|
||||
M6802(config, "adpcm", XTAL(14'318'181)/8) /* unknown clock */
|
||||
M6802(config, "adpcm", XTAL(14'318'181)/8) /* unknown clock */
|
||||
.set_addrmap(AS_PROGRAM, &hyperspt_state::hyprolyb_adpcm_map);
|
||||
|
||||
GENERIC_LATCH_8(config, "soundlatch2");
|
||||
@ -385,8 +385,8 @@ void hyperspt_state::hypersptb(machine_config &config)
|
||||
HYPROLYB_ADPCM(config, "hyprolyb_adpcm", 0);
|
||||
|
||||
msm5205_device &msm(MSM5205(config, "msm", 384000));
|
||||
msm.vck_legacy_callback().set("hyprolyb_adpcm", FUNC(hyprolyb_adpcm_device::vck_callback)); /* VCK function */
|
||||
msm.set_prescaler_selector(msm5205_device::S96_4B); /* 4 kHz */
|
||||
msm.vck_legacy_callback().set("hyprolyb_adpcm", FUNC(hyprolyb_adpcm_device::vck_callback)); /* VCK function */
|
||||
msm.set_prescaler_selector(msm5205_device::S96_4B); /* 4 kHz */
|
||||
msm.add_route(ALL_OUTPUTS, "speaker", 0.5);
|
||||
}
|
||||
|
||||
|
@ -186,9 +186,9 @@ INPUT_PORTS_END
|
||||
|
||||
//static void cdrom_config(device_t *device)
|
||||
//{
|
||||
// cdda_device *cdda = device->subdevice<cdda_device>("cdda");
|
||||
// cdda->add_route(0, ":hpc3:lspeaker", 1.0);
|
||||
// cdda->add_route(1, ":hpc3:rspeaker", 1.0);
|
||||
// cdda_device *cdda = device->subdevice<cdda_device>("cdda");
|
||||
// cdda->add_route(0, ":hpc3:lspeaker", 1.0);
|
||||
// cdda->add_route(1, ":hpc3:rspeaker", 1.0);
|
||||
//}
|
||||
|
||||
void ip22_state::wd33c93(device_t *device)
|
||||
@ -223,15 +223,15 @@ void ip22_state::ip22_base(machine_config &config)
|
||||
SGI_MC(config, m_mem_ctrl, m_maincpu, ":hpc3:eeprom");
|
||||
|
||||
NSCSI_BUS(config, "scsibus", 0);
|
||||
NSCSI_CONNECTOR(config, "scsibus:0").option_set("wd33c93", WD33C93B)
|
||||
.machine_config([this](device_t *device) { wd33c93(device); });
|
||||
NSCSI_CONNECTOR(config, "scsibus:1", scsi_devices, "harddisk", false);
|
||||
NSCSI_CONNECTOR(config, "scsibus:0").option_set("wd33c93", WD33C93B)
|
||||
.machine_config([this](device_t *device) { wd33c93(device); });
|
||||
NSCSI_CONNECTOR(config, "scsibus:1", scsi_devices, "harddisk", false);
|
||||
NSCSI_CONNECTOR(config, "scsibus:2", scsi_devices, nullptr, false);
|
||||
NSCSI_CONNECTOR(config, "scsibus:3", scsi_devices, nullptr, false);
|
||||
NSCSI_CONNECTOR(config, "scsibus:4", scsi_devices, nullptr, false);
|
||||
NSCSI_CONNECTOR(config, "scsibus:5", scsi_devices, nullptr, false);
|
||||
NSCSI_CONNECTOR(config, "scsibus:6", scsi_devices, "cdrom", false);
|
||||
NSCSI_CONNECTOR(config, "scsibus:7", scsi_devices, nullptr, false);
|
||||
NSCSI_CONNECTOR(config, "scsibus:7", scsi_devices, nullptr, false);
|
||||
}
|
||||
|
||||
void ip22_state::ip225015(machine_config &config)
|
||||
@ -275,15 +275,15 @@ void ip24_state::ip244415(machine_config &config)
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &ip24_state::ip22_map);
|
||||
|
||||
NSCSI_BUS(config, "scsibus2", 0);
|
||||
NSCSI_CONNECTOR(config, "scsibus2:0").option_set("wd33c93", WD33C93B)
|
||||
.machine_config([this](device_t *device) { wd33c93_2(device); });
|
||||
NSCSI_CONNECTOR(config, "scsibus2:1", scsi_devices, nullptr, false);
|
||||
NSCSI_CONNECTOR(config, "scsibus2:0").option_set("wd33c93", WD33C93B)
|
||||
.machine_config([this](device_t *device) { wd33c93_2(device); });
|
||||
NSCSI_CONNECTOR(config, "scsibus2:1", scsi_devices, nullptr, false);
|
||||
NSCSI_CONNECTOR(config, "scsibus2:2", scsi_devices, nullptr, false);
|
||||
NSCSI_CONNECTOR(config, "scsibus2:3", scsi_devices, nullptr, false);
|
||||
NSCSI_CONNECTOR(config, "scsibus2:4", scsi_devices, nullptr, false);
|
||||
NSCSI_CONNECTOR(config, "scsibus2:5", scsi_devices, nullptr, false);
|
||||
NSCSI_CONNECTOR(config, "scsibus2:6", scsi_devices, nullptr, false);
|
||||
NSCSI_CONNECTOR(config, "scsibus2:7", scsi_devices, nullptr, false);
|
||||
NSCSI_CONNECTOR(config, "scsibus2:7", scsi_devices, nullptr, false);
|
||||
|
||||
SGI_HPC3(config, m_hpc3, m_maincpu, m_scsi_ctrl, m_scsi_ctrl2);
|
||||
}
|
||||
|
@ -769,10 +769,10 @@ void karnov_state::machine_reset()
|
||||
void karnov_state::karnov(machine_config &config)
|
||||
{
|
||||
/* basic machine hardware */
|
||||
M68000(config, m_maincpu, 10000000); /* 10 MHz */
|
||||
M68000(config, m_maincpu, 10000000); /* 10 MHz */
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &karnov_state::karnov_map);
|
||||
|
||||
M6502(config, m_audiocpu, 1500000); /* Accurate */
|
||||
M6502(config, m_audiocpu, 1500000); /* Accurate */
|
||||
m_audiocpu->set_addrmap(AS_PROGRAM, &karnov_state::karnov_sound_map);
|
||||
|
||||
/* video hardware */
|
||||
|
@ -407,12 +407,12 @@ void kchamp_state::machine_reset()
|
||||
void kchamp_state::kchampvs(machine_config &config)
|
||||
{
|
||||
/* basic machine hardware */
|
||||
Z80(config, m_maincpu, XTAL(12'000'000)/4); /* verified on pcb */
|
||||
Z80(config, m_maincpu, XTAL(12'000'000)/4); /* verified on pcb */
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &kchamp_state::kchampvs_map);
|
||||
m_maincpu->set_addrmap(AS_IO, &kchamp_state::kchampvs_io_map);
|
||||
m_maincpu->set_addrmap(AS_OPCODES, &kchamp_state::decrypted_opcodes_map);
|
||||
|
||||
Z80(config, m_audiocpu, XTAL(12'000'000)/4); /* verified on pcb */
|
||||
Z80(config, m_audiocpu, XTAL(12'000'000)/4); /* verified on pcb */
|
||||
m_audiocpu->set_addrmap(AS_PROGRAM, &kchamp_state::kchampvs_sound_map);
|
||||
m_audiocpu->set_addrmap(AS_IO, &kchamp_state::kchampvs_sound_io_map);
|
||||
/* IRQs triggered from main CPU */
|
||||
@ -451,8 +451,8 @@ void kchamp_state::kchampvs(machine_config &config)
|
||||
m_adpcm_select->out_callback().set("msm", FUNC(msm5205_device::data_w));
|
||||
|
||||
MSM5205(config, m_msm, 375000); /* verified on pcb, discrete circuit clock */
|
||||
m_msm->vck_callback().set(FUNC(kchamp_state::msmint)); /* interrupt function */
|
||||
m_msm->set_prescaler_selector(msm5205_device::S96_4B); /* 1 / 96 = 3906.25Hz playback */
|
||||
m_msm->vck_callback().set(FUNC(kchamp_state::msmint)); /* interrupt function */
|
||||
m_msm->set_prescaler_selector(msm5205_device::S96_4B); /* 1 / 96 = 3906.25Hz playback */
|
||||
m_msm->add_route(ALL_OUTPUTS, "speaker", 1.0);
|
||||
}
|
||||
|
||||
@ -463,11 +463,11 @@ void kchamp_state::kchampvs(machine_config &config)
|
||||
void kchamp_state::kchamp(machine_config &config)
|
||||
{
|
||||
/* basic machine hardware */
|
||||
Z80(config, m_maincpu, XTAL(12'000'000)/4); /* 12MHz / 4 = 3.0 MHz */
|
||||
Z80(config, m_maincpu, XTAL(12'000'000)/4); /* 12MHz / 4 = 3.0 MHz */
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &kchamp_state::kchamp_map);
|
||||
m_maincpu->set_addrmap(AS_IO, &kchamp_state::kchamp_io_map);
|
||||
|
||||
Z80(config, m_audiocpu, XTAL(12'000'000)/4); /* 12MHz / 4 = 3.0 MHz */
|
||||
Z80(config, m_audiocpu, XTAL(12'000'000)/4); /* 12MHz / 4 = 3.0 MHz */
|
||||
m_audiocpu->set_addrmap(AS_PROGRAM, &kchamp_state::kchamp_sound_map);
|
||||
m_audiocpu->set_addrmap(AS_IO, &kchamp_state::kchamp_sound_io_map);
|
||||
m_audiocpu->set_periodic_int(FUNC(kchamp_state::sound_int), attotime::from_hz(125)); /* Hz */
|
||||
|
@ -249,9 +249,9 @@ void klax_state::klax2bl(machine_config &config)
|
||||
|
||||
// guess, probably something like this
|
||||
// 2 x msm at least on bootleg set 2 (ic18 and ic19)
|
||||
MSM5205(config, "msm", 375000); /* ? */
|
||||
// msm.vck_legacy_callback().set(FUNC(klax_state::m5205_int1)); /* interrupt function */
|
||||
// msm.set_prescaler_selector(msm5205_device::MSM5205_S96_4B); /* 4KHz 4-bit */
|
||||
MSM5205(config, "msm", 375000); /* ? */
|
||||
// msm.vck_legacy_callback().set(FUNC(klax_state::m5205_int1)); /* interrupt function */
|
||||
// msm.set_prescaler_selector(msm5205_device::MSM5205_S96_4B); /* 4KHz 4-bit */
|
||||
// msm.add_route(ALL_OUTPUTS, "mono", 0.25);
|
||||
}
|
||||
|
||||
|
@ -1203,7 +1203,7 @@ void konamim2_state::set_arcres(machine_config &config)
|
||||
|
||||
void konamim2_state::add_ymz280b(machine_config &config)
|
||||
{
|
||||
// TODO: The YMZ280B outputs are actually routed to a speaker in each gun
|
||||
// TODO: The YMZ280B outputs are actually routed to a speaker in each gun
|
||||
YMZ280B(config, m_ymz280b, XTAL(16'934'400));
|
||||
m_ymz280b->add_route(0, "lspeaker", 0.5);
|
||||
m_ymz280b->add_route(1, "rspeaker", 0.5);
|
||||
|
@ -299,9 +299,9 @@ void kungfur_state::machine_reset()
|
||||
void kungfur_state::kungfur(machine_config &config)
|
||||
{
|
||||
/* basic machine hardware */
|
||||
M6809(config, m_maincpu, 8000000/2); // 4MHz?
|
||||
M6809(config, m_maincpu, 8000000/2); // 4MHz?
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &kungfur_state::kungfur_map);
|
||||
m_maincpu->set_periodic_int(FUNC(kungfur_state::kungfur_irq), attotime::from_hz(975)); // close approximation
|
||||
m_maincpu->set_periodic_int(FUNC(kungfur_state::kungfur_irq), attotime::from_hz(975)); // close approximation
|
||||
|
||||
i8255_device &ppi0(I8255A(config, "ppi8255_0"));
|
||||
// $4008 - always $83 (PPI mode 0, ports B & lower C as input)
|
||||
@ -321,12 +321,12 @@ void kungfur_state::kungfur(machine_config &config)
|
||||
/* sound hardware */
|
||||
SPEAKER(config, "lspeaker").front_left();
|
||||
SPEAKER(config, "rspeaker").front_right();
|
||||
MSM5205(config, m_adpcm1, XTAL(384'000)); // clock verified with recording
|
||||
MSM5205(config, m_adpcm1, XTAL(384'000)); // clock verified with recording
|
||||
m_adpcm1->vck_legacy_callback().set(FUNC(kungfur_state::kfr_adpcm1_int));
|
||||
m_adpcm1->set_prescaler_selector(msm5205_device::S48_4B);
|
||||
m_adpcm1->add_route(ALL_OUTPUTS, "lspeaker", 1.0);
|
||||
|
||||
MSM5205(config, m_adpcm2, XTAL(384'000)); // clock verified with recording
|
||||
MSM5205(config, m_adpcm2, XTAL(384'000)); // clock verified with recording
|
||||
m_adpcm2->vck_legacy_callback().set(FUNC(kungfur_state::kfr_adpcm2_int));
|
||||
m_adpcm2->set_prescaler_selector(msm5205_device::S48_4B);
|
||||
m_adpcm2->add_route(ALL_OUTPUTS, "rspeaker", 1.0);
|
||||
|
@ -881,7 +881,7 @@ void kurukuru_state::kurukuru(machine_config &config)
|
||||
|
||||
MSM5205(config, m_adpcm, M5205_CLOCK);
|
||||
m_adpcm->vck_legacy_callback().set(FUNC(kurukuru_state::kurukuru_msm5205_vck));
|
||||
m_adpcm->set_prescaler_selector(msm5205_device::S48_4B); /* changed on the fly */
|
||||
m_adpcm->set_prescaler_selector(msm5205_device::S48_4B); /* changed on the fly */
|
||||
m_adpcm->add_route(ALL_OUTPUTS, "mono", 0.80);
|
||||
}
|
||||
|
||||
|
@ -497,7 +497,7 @@ void lkage_state::lkage(machine_config &config)
|
||||
m_maincpu->set_vblank_int("screen", FUNC(lkage_state::irq0_line_hold));
|
||||
|
||||
Z80(config, m_audiocpu, SOUND_CPU_CLOCK);
|
||||
m_audiocpu->set_addrmap(AS_PROGRAM, &lkage_state::lkage_sound_map); /* IRQs are triggered by the YM2203 */
|
||||
m_audiocpu->set_addrmap(AS_PROGRAM, &lkage_state::lkage_sound_map); /* IRQs are triggered by the YM2203 */
|
||||
|
||||
TAITO68705_MCU(config, m_bmcu, MCU_CLOCK);
|
||||
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user