diff options
author | 2021-10-26 18:11:54 +1100 | |
---|---|---|
committer | 2021-10-26 18:11:54 +1100 | |
commit | 94b51d9776fe0f3bdd0878b710d4b6bccf17cd47 (patch) | |
tree | 4d42f07b61bc66486974429071dc73c1346b2dc5 | |
parent | 71537cb4dd2edb4e460b8e1517948a72b6b6d84b (diff) | |
parent | 60706c1e933d8533232157241a576f96a229380e (diff) |
Merge remote-tracking branch 'upstream/master'
-rw-r--r-- | hash/apple2_flop_clcracked.xml | 24 | ||||
-rw-r--r-- | hash/apple2_flop_orig.xml | 48 | ||||
-rw-r--r-- | hash/apple2gs_flop_orig.xml | 23 | ||||
-rw-r--r-- | hash/nes.xml | 130 | ||||
-rw-r--r-- | src/devices/cpu/powerpc/ppc_dasm.cpp | 2 | ||||
-rw-r--r-- | src/devices/cpu/powerpc/ppc_dasm.h | 11 | ||||
-rw-r--r-- | src/mame/drivers/djmain.cpp | 24 | ||||
-rw-r--r-- | src/mame/drivers/facit4440.cpp | 101 | ||||
-rw-r--r-- | src/mame/drivers/macp.cpp | 386 | ||||
-rw-r--r-- | src/mame/drivers/pce.cpp | 12 | ||||
-rw-r--r-- | src/mame/layout/macp.lay | 134 | ||||
-rw-r--r-- | src/mame/mame.lst | 3 |
12 files changed, 788 insertions, 110 deletions
diff --git a/hash/apple2_flop_clcracked.xml b/hash/apple2_flop_clcracked.xml index 9bc531a6c43..7571dcd34c8 100644 --- a/hash/apple2_flop_clcracked.xml +++ b/hash/apple2_flop_clcracked.xml @@ -46372,4 +46372,28 @@ license:CC0 </part> </software> + <software name="wntgames"> + <description>Winter Games (cleanly cracked)</description> + <year>1984</year> + <publisher>Epyx</publisher> + <info name="release" value="2016-07-26"/> + <!-- "Winter Games" is a 1985 sports game developed by Action Graphics. --> + <!-- Disks re-cracked on August 28th, 2021 due to subtle + timing difference between Disk II and IWM hardware that resulted + in the previous version not working on some machines. --> + + <part name="flop1" interface="floppy_5_25"> + <feature name="part_id" value="Side A"/> + <dataarea name="flop" size="143360"> + <rom name="winter games (4am crack) side a.dsk" size="143360" crc="ad1360c5" sha1="d7c3b67d3ed5336f68a232eaa84a2766eabc4c1e" /> + </dataarea> + </part> + <part name="flop2" interface="floppy_5_25"> + <feature name="part_id" value="Side B"/> + <dataarea name="flop" size="143360"> + <rom name="winter games (4am crack) side b.dsk" size="143360" crc="b8d713fd" sha1="e2c6b9b0dfdf2f23c59c03ec803b0ffb79135482" /> + </dataarea> + </part> + </software> + </softwarelist> diff --git a/hash/apple2_flop_orig.xml b/hash/apple2_flop_orig.xml index 349709b58c2..c4a84947f91 100644 --- a/hash/apple2_flop_orig.xml +++ b/hash/apple2_flop_orig.xml @@ -17932,4 +17932,52 @@ license:CC0 </part> </software> + <software name="rboots4035"> + <description>Rocky's Boots (Version 4.1) (800K 3.5")</description> + <year>1988</year> + <publisher>The Learning Company</publisher> + <info name="release" value="2021-10-10"/> + <sharedfeat name="compatibility" value="A2E,A2EE,A2C,A2GS"/> + <!-- It requires a Apple IIgs, //c+, or //e or 64K ][+ with a compatible drive controller card. --> + <!--"Rocky's Boots" is a 1988 educational game developed by Warren Robinett and Leslie Grimm, and distributed by The Learning Company. It requires a Apple IIgs, //c+, or //e or 64K ][+ with a compatible drive controller card.--> + + <part name="flop1" interface="floppy_3_5"> + <dataarea name="flop" size="1296202"> + <rom name="rocky's boots v4.1 800k.woz" size="1296202" crc="9547ceae" sha1="9ed4042968ce40c1d5049befe27ecc74d81e4aea"/> + </dataarea> + </part> + </software> + + <software name="brdstale3"> + <description>The Bard's Tale III: Thief of Fate (800K 3.5")</description> + <year>1988</year> + <publisher>Electronic Arts</publisher> + <info name="release" value="2021-10-12"/> + <sharedfeat name="compatibility" value="A2E,A2EE,A2C,A2GS"/> + <!-- It requires a Apple IIgs, //c+, or //e or 64K ][+ with a compatible drive controller card. --> + <!--"The Bard's Tale III: Thief of Fate" is a 1988 roleplaying game developed by Rebecca Heineman and distributed by Electronic Arts. It requires a Apple IIgs, //c+, or //e or 64K ][+ with a compatible drive controller card.--> + + <part name="flop1" interface="floppy_3_5"> + <dataarea name="flop" size="1296176"> + <rom name="the bard's tale iii 800k.woz" size="1296176" crc="d388b56d" sha1="7e45ae4673d40093f535606d13d032cadaa410ac"/> + </dataarea> + </part> + </software> + + <software name="newprntshop"> + <description>The New Print Shop (800K 3.5")</description> + <year>1990</year> + <publisher>Broderbund Software</publisher> + <info name="release" value="2021-10-12"/> + <sharedfeat name="compatibility" value="A2E,A2EE,A2C,A2GS"/> + <!-- It requires a Apple IIgs, //c+, or 128K //e with a compatible drive controller card. --> + <!--"The New Print Shop" is a 1990 graphics program developed by Don Lloyd and distributed by Broderbund Software. It requires a Apple IIgs, //c+, or 128K //e with a compatible drive controller card.--> + + <part name="flop1" interface="floppy_3_5"> + <dataarea name="flop" size="1296152"> + <rom name="the new print shop 800k.woz" size="1296152" crc="df2c9138" sha1="d5f690d14861672cbefb9ab9a1ad275a087979e2"/> + </dataarea> + </part> + </software> + </softwarelist> diff --git a/hash/apple2gs_flop_orig.xml b/hash/apple2gs_flop_orig.xml index fd0170e8f25..169964ef020 100644 --- a/hash/apple2gs_flop_orig.xml +++ b/hash/apple2gs_flop_orig.xml @@ -3459,4 +3459,27 @@ license:CC0 </part> </software> + <software name="kingqst"> + <description>King's Quest: Quest for the Crown</description> + <year>1987</year> + <publisher>Sierra On-Line</publisher> + <info name="release" value="2021-10-09"/> + <sharedfeat name="compatibility" value="A2GS"/> + <!-- It requires a 512K Apple IIgs. --> + <!--"King's Quest" is a 1987 adventure game designed and written by Roberta Williams; developed by Charles Tingley, Ken MacNeill, and Chris Iden; with graphics by Doug MacNeill, Greg Rowland, and Chris Iden; ported to the Apple IIgs by Carlos Escobar; with music by Al Lowe; distributed by Sierra On-Line. It requires a 512K Apple IIgs.--> + + <part name="flop1" interface="floppy_3_5"> + <feature name="part_id" value="Disk 1"/> + <dataarea name="flop" size="1296282"> + <rom name="king's quest iigs - disk 1.woz" size="1296282" crc="813e5b11" sha1="8e61a96821460da26d8e9c567e358ec18d15c535"/> + </dataarea> + </part> + <part name="flop2" interface="floppy_3_5"> + <feature name="part_id" value="Disk 2"/> + <dataarea name="flop" size="1298330"> + <rom name="king's quest iigs - disk 2.woz" size="1298330" crc="832a3043" sha1="7fe827331b55408b478ffb45330a09de73234ebb"/> + </dataarea> + </part> + </software> + </softwarelist> diff --git a/hash/nes.xml b/hash/nes.xml index 7720e769665..0c8d0d7f7e5 100644 --- a/hash/nes.xml +++ b/hash/nes.xml @@ -4526,7 +4526,7 @@ license:CC0 </part> </software> - <software name="blackbas" supported="partial"> + <software name="blackbas" supported="no"> <description>The Black Bass (USA)</description> <year>1989</year> <publisher>Hot-B</publisher> @@ -4535,7 +4535,7 @@ license:CC0 <part name="cart" interface="nes_cart"> <feature name="slot" value="uxrom" /> <feature name="pcb" value="NES-UNROM" /> - <feature name="mirroring" value="horizontal" /> <!-- CHECK! vertical according to bootgod... --> + <feature name="mirroring" value="vertical" /> <dataarea name="prg" size="131072"> <rom name="nes-bo-0 prg" size="131072" crc="1d0f4d6b" sha1="9c3bcd2bf8224b158b6ff2e47b67cda66cb4ac39" offset="00000" /> </dataarea> @@ -25159,6 +25159,7 @@ license:CC0 </part> </software> +<!-- FIXME: This game works, but it depends on RAM at byte 0x11 being non-zero at power-up --> <software name="minnatab" supported="no"> <description>Minna no Taabou no Nakayoshi Daisakusen (Jpn)</description> <year>1991</year> @@ -45185,7 +45186,7 @@ Also notice that VRAM, WRAM & mirror are probably incorrect for some of these se </part> </software> - <software name="blackbs2" cloneof="blackbas" supported="partial"> + <software name="blackbs2" cloneof="blackbas" supported="no"> <description>The Black Bass II (Jpn)</description> <year>1988</year> <publisher>Hot-B</publisher> @@ -45195,7 +45196,7 @@ Also notice that VRAM, WRAM & mirror are probably incorrect for some of these se <part name="cart" interface="nes_cart"> <feature name="slot" value="uxrom" /> <feature name="pcb" value="NES-UNROM" /> - <feature name="mirroring" value="horizontal" /> + <feature name="mirroring" value="vertical" /> <dataarea name="prg" size="131072"> <rom name="black bass 2, the (japan).prg" size="131072" crc="99a62e47" sha1="7a7a71a08b19d3357ac59187eb108887831752b4" offset="00000" status="baddump" /> </dataarea> @@ -45326,9 +45327,8 @@ Also notice that VRAM, WRAM & mirror are probably incorrect for some of these se <!-- 8k VRAM on cartridge --> <dataarea name="vram" size="8192"> </dataarea> - <!-- 8k WRAM on cartridge, battery backed up --> - <dataarea name="bwram" size="8192"> - <rom value="0x00" size="8192" offset="0" loadflag="fill" /> + <!-- 8k WRAM on cartridge --> + <dataarea name="wram" size="8192"> </dataarea> </part> </software> @@ -45605,6 +45605,9 @@ preliminary proto for the PAL version, still running on NTSC systems) or the gfx <!-- 8k VRAM on cartridge --> <dataarea name="vram" size="8192"> </dataarea> + <!-- 8k WRAM on cartridge --> + <dataarea name="wram" size="8192"> + </dataarea> </part> </software> @@ -45701,8 +45704,9 @@ preliminary proto for the PAL version, still running on NTSC systems) or the gfx <!-- 8k VRAM on cartridge --> <dataarea name="vram" size="8192"> </dataarea> - <!-- 8k WRAM on cartridge --> - <dataarea name="wram" size="8192"> + <!-- 8k WRAM on cartridge, battery backed up --> + <dataarea name="bwram" size="8192"> + <rom value="0x00" size="8192" offset="0" loadflag="fill" /> </dataarea> </part> </software> @@ -45740,6 +45744,10 @@ preliminary proto for the PAL version, still running on NTSC systems) or the gfx <dataarea name="prg" size="131072"> <rom name="columbus - ougon no yoake (japan).prg" size="131072" crc="6c5dbedf" sha1="826629943ea71c7a4a38bd2e4d94f8d942214aff" offset="00000" status="baddump" /> </dataarea> + <!-- 8k WRAM on cartridge, battery backed up --> + <dataarea name="bwram" size="8192"> + <rom value="0x00" size="8192" offset="0" loadflag="fill" /> + </dataarea> </part> </software> @@ -45756,6 +45764,10 @@ preliminary proto for the PAL version, still running on NTSC systems) or the gfx <dataarea name="prg" size="131072"> <rom name="columbus - ougon no yoake (japan) (sample).prg" size="131072" crc="fa186bd9" sha1="0f3e785ffae083ad6232c9e2df293f7f8000deae" offset="00000" status="baddump" /> </dataarea> + <!-- 8k WRAM on cartridge, battery backed up --> + <dataarea name="bwram" size="8192"> + <rom value="0x00" size="8192" offset="0" loadflag="fill" /> + </dataarea> </part> </software> @@ -45801,7 +45813,7 @@ preliminary proto for the PAL version, still running on NTSC systems) or the gfx <dataarea name="prg" size="131072"> <rom name="cosmo police galivan (japan).prg" size="131072" crc="720fff06" sha1="03d6d18ea4e7d3ac087dc51e7aba4ca4730714cf" offset="00000" status="baddump" /> </dataarea> - <dataarea name="bwram" size="8192"> <!-- TODO: verify on cart, but without it game doesn't start or continue after title screen --> + <dataarea name="bwram" size="8192"> <rom value="0x00" size="8192" offset="0" loadflag="fill" /> </dataarea> </part> @@ -46232,6 +46244,10 @@ preliminary proto for the PAL version, still running on NTSC systems) or the gfx <dataarea name="prg" size="262144"> <rom name="dragon wars (japan).prg" size="262144" crc="615d0a50" sha1="a56fe4ae5ec14e65acfd8223885b7781c1a74b39" offset="00000" status="baddump" /> </dataarea> + <!-- 8k WRAM on cartridge, battery backed up --> + <dataarea name="bwram" size="8192"> + <rom value="0x00" size="8192" offset="0" loadflag="fill" /> + </dataarea> </part> </software> @@ -46248,6 +46264,10 @@ preliminary proto for the PAL version, still running on NTSC systems) or the gfx <dataarea name="prg" size="262144"> <rom name="dragon wars (usa) (proto).prg" size="262144" crc="f667898b" sha1="c04a7e95565388267ea7aa3e0c1f6de7ecb50ba9" offset="00000" status="baddump" /> </dataarea> + <!-- 8k WRAM on cartridge, battery backed up --> + <dataarea name="bwram" size="8192"> + <rom value="0x00" size="8192" offset="0" loadflag="fill" /> + </dataarea> </part> </software> @@ -46338,6 +46358,10 @@ preliminary proto for the PAL version, still running on NTSC systems) or the gfx <dataarea name="prg" size="262144"> <rom name="earthbound (usa) (proto).prg" size="262144" crc="f85bbf3e" sha1="f2b545345af20b1df338c46ac3c7de2ffd1eaf69" offset="00000" status="baddump" /> </dataarea> + <!-- 8k WRAM on cartridge, battery backed up --> + <dataarea name="bwram" size="8192"> + <rom value="0x00" size="8192" offset="0" loadflag="fill" /> + </dataarea> </part> </software> @@ -46509,8 +46533,9 @@ preliminary proto for the PAL version, still running on NTSC systems) or the gfx <dataarea name="prg" size="131072"> <rom name="famicom igo nyuumon (japan).prg" size="131072" crc="831f8294" sha1="01bad3a8c278c2f9aee8a561a917dd61883a2069" offset="00000" status="baddump" /> </dataarea> - <!-- 8k WRAM on cartridge --> - <dataarea name="wram" size="8192"> + <!-- 8k WRAM on cartridge, battery backed up --> + <dataarea name="bwram" size="8192"> + <rom value="0x00" size="8192" offset="0" loadflag="fill" /> </dataarea> </part> </software> @@ -47448,8 +47473,9 @@ preliminary proto for the PAL version, still running on NTSC systems) or the gfx <dataarea name="prg" size="131072"> <rom name="j.league fighting soccer - the king of ace strikers (japan).prg" size="131072" crc="1f2f4861" sha1="74000b4f3363527f7023202211632974157097e6" offset="00000" status="baddump" /> </dataarea> - <!-- 8k WRAM on cartridge --> - <dataarea name="wram" size="8192"> + <!-- 8k WRAM on cartridge, battery backed up --> + <dataarea name="bwram" size="8192"> + <rom value="0x00" size="8192" offset="0" loadflag="fill" /> </dataarea> </part> </software> @@ -47492,6 +47518,10 @@ preliminary proto for the PAL version, still running on NTSC systems) or the gfx <!-- 8k VRAM on cartridge --> <dataarea name="vram" size="8192"> </dataarea> + <!-- 8k WRAM on cartridge, battery backed up --> + <dataarea name="bwram" size="8192"> + <rom value="0x00" size="8192" offset="0" loadflag="fill" /> + </dataarea> </part> </software> @@ -47613,6 +47643,10 @@ preliminary proto for the PAL version, still running on NTSC systems) or the gfx <!-- 8k VRAM on cartridge --> <dataarea name="vram" size="8192"> </dataarea> + <!-- 8k WRAM on cartridge, battery backed up --> + <dataarea name="bwram" size="8192"> + <rom value="0x00" size="8192" offset="0" loadflag="fill" /> + </dataarea> </part> </software> @@ -48062,6 +48096,10 @@ preliminary proto for the PAL version, still running on NTSC systems) or the gfx <dataarea name="prg" size="131072"> <rom name="magician (usa) (beta2).prg" size="131072" crc="4424d54f" sha1="f4581608792b1afe6805df3d17670734b93dd0f6" offset="00000" status="baddump" /> </dataarea> + <!-- 8k WRAM on cartridge, battery backed up --> + <dataarea name="bwram" size="8192"> + <rom value="0x00" size="8192" offset="0" loadflag="fill" /> + </dataarea> </part> </software> @@ -48318,6 +48356,10 @@ preliminary proto for the PAL version, still running on NTSC systems) or the gfx <!-- 8k VRAM on cartridge --> <dataarea name="vram" size="8192"> </dataarea> + <!-- 8k WRAM on cartridge, battery backed up --> + <dataarea name="bwram" size="8192"> + <rom value="0x00" size="8192" offset="0" loadflag="fill" /> + </dataarea> </part> </software> @@ -48410,6 +48452,9 @@ preliminary proto for the PAL version, still running on NTSC systems) or the gfx <dataarea name="prg" size="131072"> <rom name="mickey mouse - dream balloon (usa) (proto).prg" size="131072" crc="bd5b170a" sha1="d90e6ac71823cc8bc337efcfafe37b2cb7178025" offset="00000" status="baddump" /> </dataarea> + <!-- 8k WRAM on cartridge --> + <dataarea name="wram" size="8192"> + </dataarea> </part> </software> @@ -48503,6 +48548,9 @@ preliminary proto for the PAL version, still running on NTSC systems) or the gfx <dataarea name="prg" size="262144"> <rom name="miracle piano teaching system, the (germany).prg" size="262144" crc="c19b77f5" sha1="ed961fe21ecce26b15c2722a91080da39f4e394d" offset="00000" status="baddump" /> </dataarea> + <!-- 8k WRAM on cartridge --> + <dataarea name="wram" size="8192"> + </dataarea> </part> </software> @@ -48642,8 +48690,9 @@ preliminary proto for the PAL version, still running on NTSC systems) or the gfx <!-- 8k VRAM on cartridge --> <dataarea name="vram" size="8192"> </dataarea> - <!-- 8k WRAM on cartridge --> - <dataarea name="wram" size="8192"> + <!-- 8k WRAM on cartridge, battery backed up --> + <dataarea name="bwram" size="8192"> + <rom value="0x00" size="8192" offset="0" loadflag="fill" /> </dataarea> </part> </software> @@ -48756,6 +48805,10 @@ preliminary proto for the PAL version, still running on NTSC systems) or the gfx <dataarea name="prg" size="131072"> <rom name="nakayoshi to issho (japan).prg" size="131072" crc="8ab9e1ea" sha1="a88bd4956d45b99a4dfd9fd1ea8d78031974372a" offset="00000" status="baddump" /> </dataarea> + <!-- 8k WRAM on cartridge, battery backed up --> + <dataarea name="bwram" size="8192"> + <rom value="0x00" size="8192" offset="0" loadflag="fill" /> + </dataarea> </part> </software> @@ -48814,8 +48867,8 @@ preliminary proto for the PAL version, still running on NTSC systems) or the gfx </part> </software> - <software name="nihonmk"> - <description>Nihonichi no Mei Kantoku (Jpn)</description> + <software name="nipponmk"> + <description>Nippon'ichi no Meikantoku (Jpn)</description> <year>1990</year> <publisher>Asmik</publisher> <info name="serial" value="ASM-N8"/> @@ -48830,6 +48883,10 @@ preliminary proto for the PAL version, still running on NTSC systems) or the gfx <!-- 8k VRAM on cartridge --> <dataarea name="vram" size="8192"> </dataarea> + <!-- 8k WRAM on cartridge, battery backed up --> + <dataarea name="bwram" size="8192"> + <rom value="0x00" size="8192" offset="0" loadflag="fill" /> + </dataarea> </part> </software> @@ -49207,6 +49264,10 @@ preliminary proto for the PAL version, still running on NTSC systems) or the gfx <dataarea name="prg" size="131072"> <rom name="pirates (europe).prg" size="131072" crc="ddad2460" sha1="63df8b410ce3af69e3f6c6c78671533863736954" offset="00000" status="baddump" /> </dataarea> + <!-- 8k WRAM on cartridge, battery backed up --> + <dataarea name="bwram" size="8192"> + <rom value="0x00" size="8192" offset="0" loadflag="fill" /> + </dataarea> </part> </software> @@ -49224,6 +49285,10 @@ preliminary proto for the PAL version, still running on NTSC systems) or the gfx <dataarea name="prg" size="131072"> <rom name="pirates (germany).prg" size="131072" crc="d3d1b86c" sha1="befc9fb1e862e95b3c6face3c4d3925b242b30ef" offset="00000" status="baddump" /> </dataarea> + <!-- 8k WRAM on cartridge, battery backed up --> + <dataarea name="bwram" size="8192"> + <rom value="0x00" size="8192" offset="0" loadflag="fill" /> + </dataarea> </part> </software> @@ -49275,6 +49340,10 @@ preliminary proto for the PAL version, still running on NTSC systems) or the gfx <!-- 8k VRAM on cartridge --> <dataarea name="vram" size="8192"> </dataarea> + <!-- 8k WRAM on cartridge, battery backed up --> + <dataarea name="bwram" size="8192"> + <rom value="0x00" size="8192" offset="0" loadflag="fill" /> + </dataarea> </part> </software> @@ -49774,6 +49843,9 @@ preliminary proto for the PAL version, still running on NTSC systems) or the gfx <dataarea name="prg" size="131072"> <rom name="scarabeus (usa) (sample).prg" size="131072" crc="6caea8e8" sha1="6f653eadd2360fc764b0997486b4c95b3ad80c06" offset="00000" status="baddump" /> </dataarea> + <!-- 8k WRAM on cartridge --> + <dataarea name="wram" size="8192"> + </dataarea> </part> </software> @@ -49867,6 +49939,9 @@ preliminary proto for the PAL version, still running on NTSC systems) or the gfx <!-- 8k VRAM on cartridge --> <dataarea name="vram" size="8192"> </dataarea> + <!-- 8k WRAM on cartridge --> + <dataarea name="wram" size="8192"> + </dataarea> </part> </software> @@ -49886,6 +49961,9 @@ preliminary proto for the PAL version, still running on NTSC systems) or the gfx <!-- 8k VRAM on cartridge --> <dataarea name="vram" size="8192"> </dataarea> + <!-- 8k WRAM on cartridge --> + <dataarea name="wram" size="8192"> + </dataarea> </part> </software> @@ -50305,6 +50383,9 @@ preliminary proto for the PAL version, still running on NTSC systems) or the gfx <!-- 8k VRAM on cartridge --> <dataarea name="vram" size="8192"> </dataarea> + <!-- 8k WRAM on cartridge --> + <dataarea name="wram" size="8192"> + </dataarea> </part> </software> @@ -50407,6 +50488,10 @@ preliminary proto for the PAL version, still running on NTSC systems) or the gfx <!-- 8k VRAM on cartridge --> <dataarea name="vram" size="8192"> </dataarea> + <!-- 8k WRAM on cartridge, battery backed up --> + <dataarea name="bwram" size="8192"> + <rom value="0x00" size="8192" offset="0" loadflag="fill" /> + </dataarea> </part> </software> @@ -51078,7 +51163,7 @@ preliminary proto for the PAL version, still running on NTSC systems) or the gfx </software> <software name="ushio"> - <description>Ushio to Tora - Shinen no Daiyou (Jpn)</description> + <description>Ushio to Tora - Shin'en no Taiyou (Jpn)</description> <year>1993</year> <publisher>Yutaka</publisher> <info name="serial" value="SHI-RA"/> @@ -51088,10 +51173,10 @@ preliminary proto for the PAL version, still running on NTSC systems) or the gfx <feature name="slot" value="txrom" /> <feature name="pcb" value="NES-TLROM" /> <dataarea name="chr" size="262144"> - <rom name="ushio to tora - shinen no daiyou (japan).chr" size="262144" crc="3acfae6e" sha1="322b691efa23db0b18eb9052499a5aaa2b30e38c" offset="00000" status="baddump" /> + <rom name="ushio to tora - shinen no taiyou (japan).chr" size="262144" crc="3acfae6e" sha1="322b691efa23db0b18eb9052499a5aaa2b30e38c" offset="00000" status="baddump" /> </dataarea> <dataarea name="prg" size="131072"> - <rom name="ushio to tora - shinen no daiyou (japan).prg" size="131072" crc="fe4e5b11" sha1="2a7691e9b7f1b3c31dfbaba8756208d8d8882828" offset="00000" status="baddump" /> + <rom name="ushio to tora - shinen no taiyou (japan).prg" size="131072" crc="fe4e5b11" sha1="2a7691e9b7f1b3c31dfbaba8756208d8d8882828" offset="00000" status="baddump" /> </dataarea> <!-- 8k WRAM on cartridge, battery backed up --> <dataarea name="bwram" size="8192"> @@ -81746,6 +81831,9 @@ be better to redump them properly. --> <dataarea name="prg" size="524288"> <rom name="7-in-1 (k7603)[p1].prg" size="524288" crc="d34a7815" sha1="5bdaa47849484ecb14d2fb1889db94f9133812d6" offset="00000" status="baddump" /> </dataarea> + <!-- 8k WRAM on cartridge --> + <dataarea name="wram" size="8192"> + </dataarea> </part> </software> diff --git a/src/devices/cpu/powerpc/ppc_dasm.cpp b/src/devices/cpu/powerpc/ppc_dasm.cpp index bdebe0b428b..d43f00cbb21 100644 --- a/src/devices/cpu/powerpc/ppc_dasm.cpp +++ b/src/devices/cpu/powerpc/ppc_dasm.cpp @@ -28,7 +28,7 @@ * and print instructions. */ -constexpr int I_COMMON = I_POWER | I_POWERPC; +constexpr int I_COMMON = powerpc_disassembler::I_POWER | powerpc_disassembler::I_POWERPC; const powerpc_disassembler::IDESCR powerpc_disassembler::itab[] = { diff --git a/src/devices/cpu/powerpc/ppc_dasm.h b/src/devices/cpu/powerpc/ppc_dasm.h index cdf9c7e6720..c837089319f 100644 --- a/src/devices/cpu/powerpc/ppc_dasm.h +++ b/src/devices/cpu/powerpc/ppc_dasm.h @@ -20,15 +20,16 @@ #pragma once -enum implementation : int -{ - I_POWER = 1 << 0, - I_POWERPC = 1 << 1, -}; class powerpc_disassembler : public util::disasm_interface { public: + enum implementation : int + { + I_POWER = 1 << 0, + I_POWERPC = 1 << 1, + }; + powerpc_disassembler(bool powerpc = true) : m_implementation(powerpc ? I_POWERPC : I_POWER) { diff --git a/src/mame/drivers/djmain.cpp b/src/mame/drivers/djmain.cpp index 6a253a3de70..4613b9f2c18 100644 --- a/src/mame/drivers/djmain.cpp +++ b/src/mame/drivers/djmain.cpp @@ -1832,6 +1832,27 @@ ROM_END ROM_START( popn1 ) ROM_REGION( 0x100000, "maincpu", 0 ) /* MC68EC020FG25 MPU */ + ROM_LOAD16_BYTE( "803t_a01.6a", 0x000000, 0x80000, CRC(e85032bc) SHA1(625ac755a77a861ecede766d77fbecb29683844b) ) + ROM_LOAD16_BYTE( "803j_a02.8a", 0x000001, 0x80000, CRC(17e90be0) SHA1(8857d46d63b7cd97aed5c7a5cf804fe5311255ac) ) + + ROM_REGION( 0x200000, "gfx1", 0) /* SPRITE */ + ROM_LOAD16_BYTE( "803t_a03.19a", 0x000000, 0x80000, CRC(a0970b32) SHA1(4bf06f977f67f13d0994e80021faaefed015ca1c) ) + ROM_LOAD16_BYTE( "803t_a04.20a", 0x000001, 0x80000, CRC(a158b950) SHA1(535d994a68fe56c8a93d460e5272b1a0b081383d) ) + ROM_LOAD16_BYTE( "803t_a05.22a", 0x100000, 0x80000, CRC(8a23c18d) SHA1(714b68a3112dff52feba6a50ae15c02d041b1def) ) + ROM_LOAD16_BYTE( "803t_a06.24a", 0x100001, 0x80000, CRC(bd6450ff) SHA1(bb89c65d1b0e38c0a26ec4cccd35103583efff45) ) + + ROM_REGION( 0x200000, "k056832", 0 ) /* TILEMAP */ + ROM_LOAD16_BYTE( "803t_a07.22d", 0x000000, 0x80000, CRC(4c97dbf0) SHA1(c33f84e2c1a59294413163a5546cb2fe092e42d1) ) + ROM_LOAD16_BYTE( "803t_a08.23d", 0x000001, 0x80000, CRC(cc6b21d3) SHA1(eac3b92bc392265df08b0311320c4e23f257c58b) ) + ROM_LOAD16_BYTE( "803t_a09.25d", 0x100000, 0x80000, CRC(45ab3978) SHA1(c34b800dfb14affcb705dffa566d046a6d1e7c7c) ) + ROM_LOAD16_BYTE( "803t_a10.27d", 0x100001, 0x80000, CRC(a487ad02) SHA1(ca9edb611ddf2f1e7d42b049ce867b173fce3634) ) + + DISK_REGION( "ata:0:hdd:image" ) /* IDE HARD DRIVE */ + DISK_IMAGE( "803_ta_hdd", 0, SHA1(be833a3c0f1e5953271fa7d8d6e81211fbe9710f) ) /* GQ803AA pop'n music ver1.01 1998/10/14 (C) KONAMI */ +ROM_END + +ROM_START( popn1a ) + ROM_REGION( 0x100000, "maincpu", 0 ) /* MC68EC020FG25 MPU */ ROM_LOAD16_BYTE( "803aaa01.6a", 0x000000, 0x80000, CRC(70466eff) SHA1(d59f97a6882ad65afa3b5de491d44bb4d839d286) ) ROM_LOAD16_BYTE( "803aaa02.8a", 0x000001, 0x80000, CRC(c102c909) SHA1(630a74ccec78d36adaba38a85ed6a0e45dca96a4) ) @@ -2237,7 +2258,8 @@ GAME( 2001, bm6thmix, 0, djmainj, bm6thmix, djmain_state, init_bm6thmix, GAME( 2001, bm7thmix, 0, djmainj, bm6thmix, djmain_state, init_bm7thmix, ROT0, "Konami", "beatmania 7th MIX (ver JA-B)", 0 ) GAME( 2002, bmfinal, 0, djmainj, bm6thmix, djmain_state, init_bmfinal, ROT0, "Konami", "beatmania THE FINAL (ver JA-A)", 0 ) -GAME( 1998, popn1, 0, djmaina, popn1, djmain_state, init_beatmania, ROT0, "Konami", "Pop'n Music 1 (ver AA-A, HDD 1.00)", 0 ) +GAME( 1998, popn1, 0, djmaina, popn1, djmain_state, init_beatmania, ROT0, "Konami", "Pop'n Music 1 (ver TA-A, HDD 1.01)", 0 ) +GAME( 1998, popn1a, popn1, djmaina, popn1, djmain_state, init_beatmania, ROT0, "Konami", "Pop'n Music 1 (ver AA-A, HDD 1.00)", 0 ) GAME( 1998, popn1k, popn1, djmaina, popn1, djmain_state, init_beatmania, ROT0, "Konami", "Pop'n Music 1 (ver KA-A, HDD 1.01)", 0 ) // KA-A based on filenames provided, no warning message GAME( 1998, popn1j, popn1, djmainj, popn1, djmain_state, init_beatmania, ROT0, "Konami", "Pop'n Music 1 (ver JA-A, HDD 1.00)", 0 ) GAME( 1999, popn2, 0, djmainj, popn2, djmain_state, init_beatmania, ROT0, "Konami", "Pop'n Music 2 (ver JA-A)", 0 ) diff --git a/src/mame/drivers/facit4440.cpp b/src/mame/drivers/facit4440.cpp index 84c6d8cc8db..d203d085319 100644 --- a/src/mame/drivers/facit4440.cpp +++ b/src/mame/drivers/facit4440.cpp @@ -16,25 +16,31 @@ Several non-ANSI emulation modes are also available. An OEM customized version was sold by Norsk Data AS as the ND 319 Twist. + Micro-Term apparently distributed this terminal in the US. The timing of the display circuit seems a bit uncertain. Promotional information claims that it has a 40 MHz bandwidth, but this may be only a nominal maximum rating since the only high-frequency oscillator seen - on the PCB is 32 MHz. It is unclear how the CRTC parameters and this - value can produce the documented 65 Hz refresh rate. The actual circuit - also generates alarming levels of electromagnetic radiation. + on the PCB is 32 MHz, and schematics label this as 30 MHz. It is unclear + how the CRTC parameters and this value can produce the documented 65 Hz + refresh rate. The actual circuit also generates alarming levels of + electromagnetic radiation. ****************************************************************************/ #include "emu.h" -//#include "bus/rs232/rs232.h" +#include "bus/rs232/rs232.h" #include "cpu/z80/z80.h" +#include "cpu/m6800/m6801.h" #include "machine/clock.h" #include "machine/er1400.h" +#include "machine/ripple_counter.h" #include "machine/z80ctc.h" #include "machine/z80sio.h" +#include "sound/spkrdev.h" #include "video/mc6845.h" #include "screen.h" +#include "speaker.h" class facit4440_state : public driver_device { @@ -42,8 +48,11 @@ public: facit4440_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag) , m_maincpu(*this, "maincpu") - , m_earom(*this, "earom%u", 0U) + , m_earom(*this, "earom%u", 1U) , m_crtc(*this, "crtc") + , m_bellctr(*this, "bellctr") + , m_rs232(*this, "rs232") + , m_printer(*this, "printer") , m_test(*this, "TEST") , m_orientation(*this, "ORIENTATION") , m_chargen(*this, "chargen") @@ -74,6 +83,9 @@ private: required_device<z80_device> m_maincpu; required_device_array<er1400_device, 2> m_earom; required_device<mc6845_device> m_crtc; + required_device<ripple_counter_device> m_bellctr; + required_device<rs232_port_device> m_rs232; + required_device<rs232_port_device> m_printer; required_ioport m_test; required_ioport m_orientation; @@ -97,8 +109,8 @@ void facit4440_state::earom_latch_w(u8 data) m_earom[0]->clock_w(BIT(data, 5)); m_earom[1]->clock_w(BIT(data, 5)); - m_earom[0]->data_w(BIT(data, 1)); - m_earom[1]->data_w(BIT(data, 0)); + m_earom[0]->data_w(BIT(data, 0)); + m_earom[1]->data_w(BIT(data, 1)); for (auto &earom : m_earom) { @@ -112,7 +124,8 @@ void facit4440_state::control_2000_w(u8 data) { m_control_latch[0] = data; - if (!BIT(m_control_latch[0], 5)) + m_bellctr->reset_w(BIT(data, 5)); + if (!BIT(m_control_latch[0], 6)) m_maincpu->set_input_line(INPUT_LINE_NMI, CLEAR_LINE); } @@ -130,9 +143,10 @@ u8 facit4440_state::misc_status_r() { u8 status = m_test->read() << 6; - status |= m_earom[0]->data_r() << 4; - status |= m_earom[1]->data_r() << 3; + status |= m_earom[1]->data_r() << 4; + status |= m_earom[0]->data_r() << 3; + status |= m_crtc->hsync_r() << 2; status |= m_crtc->vsync_r() << 1; status |= m_orientation->read(); @@ -147,6 +161,7 @@ WRITE_LINE_MEMBER(facit4440_state::vsync_w) MC6845_UPDATE_ROW(facit4440_state::update_row) { + // FIXME: MA does not determine video addressing at all here offs_t base = ma / 5 * 6; u32 *px = &bitmap.pix(y); @@ -191,6 +206,8 @@ void facit4440_state::io_map(address_map &map) void facit4440_state::machine_start() { + subdevice<z80dart_device>("kbdart")->rxb_w(0); + m_control_latch[0] = m_control_latch[1] = m_control_latch[2] = 0; save_item(NAME(m_control_latch)); @@ -198,10 +215,10 @@ void facit4440_state::machine_start() static INPUT_PORTS_START(facit4440) PORT_START("TEST") - PORT_CONFNAME(3, 0, "Test Mode") - PORT_CONFSETTING(0, DEF_STR(Off)) - PORT_CONFSETTING(3, DEF_STR(On)) - PORT_CONFSETTING(2, "Burn In") + PORT_DIPNAME(3, 0, "Test Mode") PORT_DIPLOCATION("W7/W4:1,2") + PORT_DIPSETTING(0, DEF_STR(Off)) + PORT_DIPSETTING(3, DEF_STR(On)) + PORT_DIPSETTING(2, "Burn In") PORT_START("ORIENTATION") PORT_CONFNAME(1, 1, "Orientation") @@ -219,16 +236,15 @@ static const z80_daisy_config daisy_chain[] = void facit4440_state::facit4440(machine_config &config) { - constexpr u32 CH_WIDTH = 8; - constexpr u32 FAKE_DOT_CLOCK = 65 * 103 * 621 * CH_WIDTH; + constexpr XTAL DOT_CLOCK = 32_MHz_XTAL; // XTAL is 30 MHz according to schematics - Z80(config, m_maincpu, 32_MHz_XTAL / 8); // clock unknown + Z80(config, m_maincpu, 32_MHz_XTAL / 8); // divider confirmed from schematics m_maincpu->set_addrmap(AS_PROGRAM, &facit4440_state::mem_map); m_maincpu->set_addrmap(AS_IO, &facit4440_state::io_map); m_maincpu->set_daisy_config(daisy_chain); - ER1400(config, m_earom[0]); // M5G1400P - ER1400(config, m_earom[1]); // M5G1400P + ER1400(config, m_earom[0]); // M5G1400P @ D65 + ER1400(config, m_earom[1]); // M5G1400P @ D64 z80ctc_device &ctc(Z80CTC(config, "ctc", 32_MHz_XTAL / 8)); ctc.intr_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); @@ -240,33 +256,51 @@ void facit4440_state::facit4440(machine_config &config) ctc.zc_callback<2>().set("iodart", FUNC(z80dart_device::txcb_w)); ctc.zc_callback<2>().append("iodart", FUNC(z80dart_device::rxcb_w)); - clock_device &keybclk(CLOCK(config, "keybclk", 2.4576_MHz_XTAL / 32)); // unclear + clock_device &keybclk(CLOCK(config, "kbdclk", 2.4576_MHz_XTAL / 32)); // divider confirmed from schematics keybclk.signal_handler().set("kbdart", FUNC(z80dart_device::txca_w)); keybclk.signal_handler().append("kbdart", FUNC(z80dart_device::rxca_w)); - z80dart_device &iodart(Z80DART(config, "iodart", 32_MHz_XTAL / 8)); // Z80ADART + z80dart_device &iodart(Z80DART(config, "iodart", 32_MHz_XTAL / 8)); // Z80ADART @ D83 iodart.out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); - iodart.out_txda_callback().set("iodart", FUNC(z80dart_device::rxa_w)); // temporary loopback for testing - iodart.out_rtsa_callback().set("iodart", FUNC(z80dart_device::ctsa_w)); // temporary loopback for testing - iodart.out_dtra_callback().set("iodart", FUNC(z80dart_device::dcdb_w)); // temporary loopback for testing - iodart.out_txdb_callback().set("iodart", FUNC(z80dart_device::rxb_w)); // temporary loopback for testing + iodart.out_txda_callback().set(m_rs232, FUNC(rs232_port_device::write_txd)); + iodart.out_rtsa_callback().set(m_rs232, FUNC(rs232_port_device::write_rts)); + iodart.out_dtra_callback().set(m_printer, FUNC(rs232_port_device::write_dtr)); // not correct according to schematics, but needed to pass burn-in test + iodart.out_txdb_callback().set(m_printer, FUNC(rs232_port_device::write_txd)); - z80dart_device &kbdart(Z80DART(config, "kbdart", 32_MHz_XTAL / 8)); // Z80ADART + z80dart_device &kbdart(Z80DART(config, "kbdart", 32_MHz_XTAL / 8)); // Z80ADART @ D82 kbdart.out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); kbdart.out_txda_callback().set("kbdart", FUNC(z80dart_device::rxa_w)); // FIXME: serial keyboard needed here - // Channel B is not used + // Channel B is not used (though schematics show 307.2 kHz provided for RxTxCB) + + M6801(config, "kbdmcu", 2.4576_MHz_XTAL).set_disable(); // exact type unknown screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); - screen.set_raw(FAKE_DOT_CLOCK, 103 * CH_WIDTH, 0, 80 * CH_WIDTH, 621, 0, 500); - //screen.set_raw(FAKE_DOT_CLOCK, 103 * CH_WIDTH, 0, 80 * CH_WIDTH, 621, 0, 560); + screen.set_raw(DOT_CLOCK, 103 * 8, 0, 80 * 8, 621, 0, 500); + //screen.set_raw(DOT_CLOCK, 103 * 8, 0, 80 * 8, 621, 0, 560); screen.set_screen_update("crtc", FUNC(mc6845_device::screen_update)); - MC6845(config, m_crtc, FAKE_DOT_CLOCK / CH_WIDTH); // HD46505SP-2 - m_crtc->set_char_width(CH_WIDTH); + MC6845(config, m_crtc, DOT_CLOCK / 8); // HD46505SP-2 + m_crtc->set_char_width(8); m_crtc->set_show_border_area(false); m_crtc->set_update_row_callback(FUNC(facit4440_state::update_row)); m_crtc->out_hsync_callback().set("ctc", FUNC(z80ctc_device::trg3)); + m_crtc->out_hsync_callback().append(m_bellctr, FUNC(ripple_counter_device::clock_w)); m_crtc->out_vsync_callback().set(FUNC(facit4440_state::vsync_w)); + + RIPPLE_COUNTER(config, m_bellctr).set_stages(12); // HEF4040BP + m_bellctr->count_out_cb().set("speaker", FUNC(speaker_sound_device::level_w)).bit(5); + + SPEAKER(config, "mono").front_center(); + SPEAKER_SOUND(config, "speaker").add_route(ALL_OUTPUTS, "mono", 0.5); + + RS232_PORT(config, m_rs232, default_rs232_devices, "loopback"); // temporary loopback for testing + m_rs232->rxd_handler().set("iodart", FUNC(z80dart_device::rxa_w)); + m_rs232->cts_handler().set("iodart", FUNC(z80dart_device::ctsa_w)); + m_rs232->dcd_handler().set("iodart", FUNC(z80dart_device::dcda_w)); + + RS232_PORT(config, m_printer, default_rs232_devices, "loopback"); // temporary loopback for testing + m_printer->rxd_handler().set("iodart", FUNC(z80dart_device::rxb_w)); + m_printer->dcd_handler().set("iodart", FUNC(z80dart_device::dcdb_w)); } @@ -275,6 +309,9 @@ ROM_START(facit4440) ROM_LOAD("rom7.bin", 0x0000, 0x4000, CRC(a8da2b11) SHA1(4436ef14c29ae299f7bc338748158771c02d02a9)) ROM_LOAD("rom6.bin", 0x4000, 0x4000, CRC(790b7642) SHA1(688a80cbf011e5c14f501e11fe0e3bf64a85bbd7)) + ROM_REGION(0x1000, "kbdmcu", 0) + ROM_LOAD("6801.bin", 0x0000, 0x1000, NO_DUMP) + ROM_REGION(0x2000, "testprg", 0) ROM_LOAD("rom5.bin", 0x0000, 0x2000, CRC(715d02b6) SHA1(e304718dbdc8867ac01909fd2d027e5014a8c4f9)) @@ -287,4 +324,4 @@ ROM_START(facit4440) ROM_LOAD("rom2.bin", 0x0000, 0x0800, CRC(9e1a190c) SHA1(fb08ee806f1056bcdfb5b08ea85995e1d3d01298)) ROM_END -COMP(1984, facit4440, 0, 0, facit4440, facit4440, facit4440_state, empty_init, "Facit", "4440 Twist (30M-F1)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND) +COMP(1984, facit4440, 0, 0, facit4440, facit4440, facit4440_state, empty_init, "Facit", "4440 Twist (30M-F1)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS) diff --git a/src/mame/drivers/macp.cpp b/src/mame/drivers/macp.cpp index 25f3546a8a4..17c35b56454 100644 --- a/src/mame/drivers/macp.cpp +++ b/src/mame/drivers/macp.cpp @@ -1,84 +1,386 @@ // license:BSD-3-Clause -// copyright-holders:Ivan Vangelista +// copyright-holders:Robbbert // PINBALL -// Skeleton driver for MAC S.A. and CICPlay pinballs. ROM definitions taken from PinMAME. +/*************************************************************************************************************** +Skeleton driver for MAC S.A. and CICPlay pinballs. ROM definitions taken from PinMAME. + +There's a number of undumped PAL-type devices, so had to guess a few things. +Unknown chips: SIVP47, MAC P01, MAC D01, MAC A01 (=MAC A.A4, MAC A.A5). +Schematic has errors and omissions (no input or output matrix, no wiring between boards). +Although the coin slots are not working, you can add credits by changing 0xC011 in the memory view. + +Status: +- Some games are playable +-- macgalxy (Outhole is Z and X) +-- macjungl (Outhole is E) +-- glxplay2 (Outhole unknown) +- Other machines can generally accept credits and start, but then cannot score. +- Display has intolerable flicker. + +ToDo +- MSM sound +- Inputs not responding +- DIPs to be checked +- Fix flicker on displays +- CIC games need a different layout + +***************************************************************************************************************/ #include "emu.h" #include "machine/genpin.h" #include "cpu/z80/z80.h" +#include "machine/clock.h" #include "machine/i8279.h" #include "sound/ay8910.h" #include "sound/msm5205.h" +#include "speaker.h" +#include "macp.lh" + +namespace { class macp_state : public genpin_class { public: macp_state(const machine_config &mconfig, device_type type, const char *tag) : genpin_class(mconfig, type, tag) - , m_maincpu(*this, "maincpu") { } - - void macp(machine_config &config); - void macpmsm(machine_config &config); - void macp0(machine_config &config); - void macp0_map(address_map &map); - void macp_io(address_map &map); - void macp_map(address_map &map); + , m_maincpu(*this, "maincpu") + , m_ay8910(*this, "ay%u", 0U) + , m_io_keyboard(*this, "X%u", 0) + , m_digits(*this, "digit%u", 0U) + , m_io_outputs(*this, "out%u", 0U) + { } + + void mac16k(machine_config &config); + void mac32k(machine_config &config); + void mem16k_map(address_map &map); + void io16k_map(address_map &map); + void mem32k_map(address_map &map); + void io32k_map(address_map &map); + private: - required_device<cpu_device> m_maincpu; + DECLARE_WRITE_LINE_MEMBER(clock_tick); + DECLARE_WRITE_LINE_MEMBER(irq_w); + void scanlines_w(u8); + void digit_w(u8); + void ay0_a_w(u8); + void ay0_b_w(u8); + void ay1_a_w(u8); + void ay1_b_w(u8); + u8 ay1_b_r(); + u8 kbd_r(); + u8 m_t_c = 0; + u8 m_digit = 0; + u8 m_ay1_b = 0; + u8 m_ay1_a = 0; + u8 m_relay_ctrl = 0; + virtual void machine_start() override; + virtual void machine_reset() override; + required_device<z80_device> m_maincpu; + required_device_array<ay8910_device, 2> m_ay8910; + required_ioport_array<8> m_io_keyboard; + output_finder<40> m_digits; + output_finder<85> m_io_outputs; // 12+4+1 solenoids + 48+16 lamps }; -void macp_state::macp_map(address_map &map) +void macp_state::mem16k_map(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0x7fff); // A15 only goes to the expansion socket and a PAL + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x47ff).ram().share("nvram"); // 6116 + map(0x6000, 0x6001).rw("i8279", FUNC(i8279_device::read), FUNC(i8279_device::write)); +} + +void macp_state::mem32k_map(address_map &map) { map.unmap_value_high(); map(0x0000, 0x7fff).rom(); - map(0xc000, 0xc7ff).ram(); + map(0xc000, 0xdfff).ram().share("nvram"); // DS1225 (8k RAM with inbuilt battery), only first 2k used. } -void macp_state::macp0_map(address_map &map) +void macp_state::io16k_map(address_map &map) { map.unmap_value_high(); - map(0x0000, 0x3fff).rom(); - map(0x4000, 0x47ff).ram(); + map.global_mask(0xff); + map(0x08, 0x08).w(m_ay8910[0], FUNC(ay8910_device::address_w)); + map(0x0a, 0x0a).w(m_ay8910[0], FUNC(ay8910_device::data_w)); + map(0x18, 0x18).w(m_ay8910[1], FUNC(ay8910_device::address_w)); + map(0x19, 0x19).r(m_ay8910[1], FUNC(ay8910_device::data_r)); + map(0x1a, 0x1a).w(m_ay8910[1], FUNC(ay8910_device::data_w)); } -void macp_state::macp_io(address_map &map) +void macp_state::io32k_map(address_map &map) { map.unmap_value_high(); map.global_mask(0xff); + map(0x08, 0x08).w(m_ay8910[0], FUNC(ay8910_device::address_w)); + map(0x0a, 0x0a).w(m_ay8910[0], FUNC(ay8910_device::data_w)); + map(0x28, 0x28).w(m_ay8910[1], FUNC(ay8910_device::address_w)); + map(0x29, 0x29).r(m_ay8910[1], FUNC(ay8910_device::data_r)); + map(0x2a, 0x2a).w(m_ay8910[1], FUNC(ay8910_device::data_w)); + map(0x40, 0x41).rw("i8279", FUNC(i8279_device::read), FUNC(i8279_device::write)); } static INPUT_PORTS_START( macp ) + PORT_START("X0") + PORT_DIPNAME( 0x01, 0x01, "DIP A1") + PORT_DIPSETTING( 0x00, DEF_STR(On)) + PORT_DIPSETTING( 0x01, DEF_STR(Off)) + PORT_DIPNAME( 0x02, 0x02, "DIP A2") + PORT_DIPSETTING( 0x00, DEF_STR(On)) + PORT_DIPSETTING( 0x02, DEF_STR(Off)) + PORT_DIPNAME( 0x04, 0x04, "DIP A3") + PORT_DIPSETTING( 0x00, DEF_STR(On)) + PORT_DIPSETTING( 0x04, DEF_STR(Off)) + PORT_DIPNAME( 0x08, 0x08, "DIP A4") + PORT_DIPSETTING( 0x00, DEF_STR(On)) + PORT_DIPSETTING( 0x08, DEF_STR(Off)) + PORT_DIPNAME( 0x10, 0x10, "DIP A5") + PORT_DIPSETTING( 0x00, DEF_STR(On)) + PORT_DIPSETTING( 0x10, DEF_STR(Off)) + PORT_DIPNAME( 0x20, 0x20, "DIP A6") + PORT_DIPSETTING( 0x00, DEF_STR(On)) + PORT_DIPSETTING( 0x20, DEF_STR(Off)) + PORT_DIPNAME( 0x40, 0x40, "DIP A7") + PORT_DIPSETTING( 0x00, DEF_STR(On)) + PORT_DIPSETTING( 0x40, DEF_STR(Off)) + + PORT_START("X1") + PORT_DIPNAME( 0x01, 0x01, "DIP B1") + PORT_DIPSETTING( 0x00, DEF_STR(On)) + PORT_DIPSETTING( 0x01, DEF_STR(Off)) + PORT_DIPNAME( 0x02, 0x02, "DIP B2") + PORT_DIPSETTING( 0x00, DEF_STR(On)) + PORT_DIPSETTING( 0x02, DEF_STR(Off)) + PORT_DIPNAME( 0x04, 0x04, "DIP B3") + PORT_DIPSETTING( 0x00, DEF_STR(On)) + PORT_DIPSETTING( 0x04, DEF_STR(Off)) + PORT_DIPNAME( 0x08, 0x08, "DIP B4") + PORT_DIPSETTING( 0x00, DEF_STR(On)) + PORT_DIPSETTING( 0x08, DEF_STR(Off)) + PORT_DIPNAME( 0x10, 0x10, "DIP B5") + PORT_DIPSETTING( 0x00, DEF_STR(On)) + PORT_DIPSETTING( 0x10, DEF_STR(Off)) + PORT_DIPNAME( 0x20, 0x20, "DIP B6") + PORT_DIPSETTING( 0x00, DEF_STR(On)) + PORT_DIPSETTING( 0x20, DEF_STR(Off)) + PORT_DIPNAME( 0x40, 0x40, "DIP B7") + PORT_DIPSETTING( 0x00, DEF_STR(On)) + PORT_DIPSETTING( 0x40, DEF_STR(Off)) + + PORT_START("X2") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN1 ) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN2 ) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_9) PORT_NAME("Tilt") + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_0) PORT_NAME("Slam Tilt") + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN3 ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_3_PAD) PORT_NAME("Reset RAM") + + PORT_START("X3") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_A) PORT_NAME("INP30") + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_B) PORT_NAME("INP31") + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_C) PORT_NAME("INP32") + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_D) PORT_NAME("INP33") + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_E) PORT_NAME("INP34") + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_F) PORT_NAME("INP35") + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_G) PORT_NAME("INP36") + + PORT_START("X4") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_H) PORT_NAME("INP40") + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_I) PORT_NAME("INP41") + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_J) PORT_NAME("INP42") + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_K) PORT_NAME("INP43") + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_L) PORT_NAME("INP44") + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_M) PORT_NAME("INP45") + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_N) PORT_NAME("INP46") + + PORT_START("X5") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_O) PORT_NAME("INP50") + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_P) PORT_NAME("INP51") + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_Q) PORT_NAME("INP52") + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_R) PORT_NAME("INP53") + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_S) PORT_NAME("INP54") + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_T) PORT_NAME("INP55") + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_U) PORT_NAME("INP56") + + PORT_START("X6") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_V) PORT_NAME("INP60") + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_W) PORT_NAME("INP61") + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_X) PORT_NAME("INP62") + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_Y) PORT_NAME("INP63") + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_Z) PORT_NAME("INP64") + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_COMMA) PORT_NAME("INP65") + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_STOP) PORT_NAME("INP66") + + PORT_START("X7") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_SLASH) PORT_NAME("INP70") + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_COLON) PORT_NAME("INP71") + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_QUOTE) PORT_NAME("INP72") + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_ENTER) PORT_NAME("INP73") + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_OPENBRACE) PORT_NAME("INP74") + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_CLOSEBRACE) PORT_NAME("INP75") + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_BACKSLASH) PORT_NAME("INP76") INPUT_PORTS_END static INPUT_PORTS_START( cicplay ) + PORT_INCLUDE( macp ) INPUT_PORTS_END -void macp_state::macp(machine_config &config) +void macp_state::scanlines_w(u8 data) +{ + m_digit = data & 15; +} + +void macp_state::digit_w(u8 data) +{ + static const uint8_t patterns[16] = { 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7c, 0x07, 0x7f, 0x67, 0, 0, 0, 0, 0, 0 }; // guess, because custom PAL + m_digits[m_digit] = patterns[BIT(data, 0, 4)]; + m_digits[m_digit+20] = patterns[BIT(data, 4, 4)]; + // This isn't right obviously, but if score > 999999 and bit 7 of PAL, then illuminate some extra lamps on the backboard + u8 i,j = BIT(data, 0, 4); + if (j > 9) + for (i = 0; i < 8; i++) + m_io_outputs[69+i] = BIT(data, i); + j = BIT(data, 4, 4); + if (j > 9) + for (i = 0; i < 8; i++) + m_io_outputs[77+i] = BIT(data, i); +} + +u8 macp_state::kbd_r() +{ + return (m_io_keyboard[m_digit & 7]->read() & 0x7f )| (BIT(m_ay1_b, 4) ? 0x80 : 0); +} + +void macp_state::ay0_a_w(u8 data) +{ + // d4-7 solenoids + for (u8 i = 4; i < 8; i++) + m_io_outputs[4+i] = BIT(data, i); + + // d0-3 lamps + data &= 15; + if (data < 6) + for (u8 i = 0; i < 8; i++) + m_io_outputs[17+data*8+i] = BIT(m_ay1_a, i); +} + +void macp_state::ay0_b_w(u8 data) +{ + // d0-7 solenoids + for (u8 i = 0; i < 8; i++) + m_io_outputs[i] = BIT(data, i); +} + +void macp_state::ay1_a_w(u8 data) +{ + m_ay1_a = data; +} + +void macp_state::ay1_b_w(u8 data) +{ + m_ay1_b = data; + // d0-3 solenoids: Coin Lock (probably lockout), Coin In (probably coin counter), Ext Play, Ext Ball. + for (u8 i = 0; i < 4; i++) + m_io_outputs[12+i] = BIT(data, i); + // d4 goes to RL7 (kbd_r) + // d5 another solenoid + m_io_outputs[16] = BIT(data, 5); + // Relay control: 0 = not set; 1 = K1 relay enables 12v supply; 2 = K2 relay enables 40v supply; 3= normal operation + // K2 is pulsed by a watchdog circuit. The K2 relay needs both bits enabled before it will turn on. + m_relay_ctrl = BIT(data, 5, 2); +} + +u8 macp_state::ay1_b_r() +{ + //return 0x7f | ((m_relay_ctrl == 3) ? 0 : 0x80); // BIT 7 low indicates 40volt supply is available + return 0x7f | (m_relay_ctrl ? 0 : 0x80); // Temporary for testing +} + +WRITE_LINE_MEMBER( macp_state::irq_w ) +{ + m_maincpu->set_input_line(INPUT_LINE_IRQ0, state ? ASSERT_LINE : CLEAR_LINE); +} + +WRITE_LINE_MEMBER( macp_state::clock_tick ) +{ + if (state) + { + if (m_t_c > 0xf0) + m_maincpu->pulse_input_line(INPUT_LINE_NMI, attotime::zero); + else + m_t_c++; + } +} + +void macp_state::machine_start() +{ + genpin_class::machine_start(); + + m_digits.resolve(); + m_io_outputs.resolve(); + + save_item(NAME(m_digit)); + save_item(NAME(m_t_c)); + save_item(NAME(m_ay1_a)); + save_item(NAME(m_ay1_b)); +} + +void macp_state::machine_reset() +{ + genpin_class::machine_reset(); + m_t_c = 0; + m_relay_ctrl = 0; +} + +void macp_state::mac16k(machine_config &config) { /* basic machine hardware */ - Z80(config, m_maincpu, 2500000); - m_maincpu->set_addrmap(AS_PROGRAM, &macp_state::macp_map); - m_maincpu->set_addrmap(AS_IO, &macp_state::macp_io); + Z80(config, m_maincpu, 3'800'000); + m_maincpu->set_addrmap(AS_PROGRAM, &macp_state::mem16k_map); + m_maincpu->set_addrmap(AS_IO, &macp_state::io16k_map); + + clock_device &cpoint_clock(CLOCK(config, "cpoint_clock", 50)); // crosspoint detector + cpoint_clock.signal_handler().set(FUNC(macp_state::clock_tick)); + + NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); /* video hardware */ - //config.set_default_layout(); + config.set_default_layout(layout_macp); //I8279 + i8279_device &kbdc(I8279(config, "i8279", 3'800'000)); // based on divider + kbdc.out_sl_callback().set(FUNC(macp_state::scanlines_w)); // scan SL lines + kbdc.out_disp_callback().set(FUNC(macp_state::digit_w)); // display A&B + kbdc.in_rl_callback().set(FUNC(macp_state::kbd_r)); // kbd RL lines + kbdc.out_irq_callback().set(FUNC(macp_state::irq_w)); /* sound hardware */ - //2x AY8910 genpin_audio(config); -} -void macp_state::macp0(machine_config &config) -{ - macp(config); - m_maincpu->set_addrmap(AS_PROGRAM, &macp_state::macp0_map); + //2x AY8910 + SPEAKER(config, "lspkr").front_left(); + AY8910(config, m_ay8910[0], 3'800'000/2); + m_ay8910[0]->set_resistors_load(10e3,10e3,10e3); + m_ay8910[0]->port_a_write_callback().set(FUNC(macp_state::ay0_a_w)); + m_ay8910[0]->port_b_write_callback().set(FUNC(macp_state::ay0_b_w)); + m_ay8910[0]->add_route(ALL_OUTPUTS, "lspkr", 0.50); + + SPEAKER(config, "rspkr").front_right(); + AY8910(config, m_ay8910[1], 3'800'000/2); + m_ay8910[1]->set_resistors_load(10e3,10e3,10e3); + m_ay8910[1]->port_a_write_callback().set(FUNC(macp_state::ay1_a_w)); + m_ay8910[1]->port_b_write_callback().set(FUNC(macp_state::ay1_b_w)); + m_ay8910[1]->port_b_read_callback().set(FUNC(macp_state::ay1_b_r)); + m_ay8910[1]->add_route(ALL_OUTPUTS, "rspkr", 0.50); } -void macp_state::macpmsm(machine_config &config) +void macp_state::mac32k(machine_config &config) { - macp(config); + mac16k(config); + m_maincpu->set_addrmap(AS_PROGRAM, &macp_state::mem32k_map); + m_maincpu->set_addrmap(AS_IO, &macp_state::io32k_map); // MSM5205 } @@ -155,17 +457,19 @@ ROM_START(glxplay2) ROM_LOAD("1382-2.cpu", 0x2000, 0x2000, CRC(945c90fd) SHA1(8367992f8db8b402d82e4a3f02a35b796756ce0f)) ROM_END +} // Anonymous namespace + // MAC S.A. pinballs -GAME( 1986, macgalxy, 0, macp0, macp, macp_state, empty_init, ROT0, "MAC S.A.", "MAC's Galaxy", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 1987, macjungl, 0, macp0, macp, macp_state, empty_init, ROT0, "MAC S.A.", "MAC Jungle", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 1987, spctrain, 0, macp, macp, macp_state, empty_init, ROT0, "MAC S.A.", "Space Train (Pinball)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 1987, spctraino, spctrain, macp0, macp, macp_state, empty_init, ROT0, "MAC S.A.", "Space Train (Pinball, old hardware)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 1988, spcpnthr, 0, macpmsm, macp, macp_state, empty_init, ROT0, "MAC S.A.", "Space Panther", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 19??, mac_1808, 0, macpmsm, macp, macp_state, empty_init, ROT0, "MAC S.A.", "unknown game (MAC #1808)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 1995, macjungn, 0, macpmsm, macp, macp_state, empty_init, ROT0, "MAC S.A.", "MAC Jungle (New version)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 1996, nbamac, 0, macpmsm, macp, macp_state, empty_init, ROT0, "MAC S.A.", "NBA MAC", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 1986, macgalxy, 0, mac16k, macp, macp_state, empty_init, ROT0, "MAC S.A.", "MAC's Galaxy", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 1987, macjungl, 0, mac16k, macp, macp_state, empty_init, ROT0, "MAC S.A.", "MAC Jungle", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 1987, spctrain, 0, mac32k, macp, macp_state, empty_init, ROT0, "MAC S.A.", "Space Train (Pinball)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 1987, spctraino, spctrain, mac16k, macp, macp_state, empty_init, ROT0, "MAC S.A.", "Space Train (Pinball, old hardware)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 1988, spcpnthr, 0, mac32k, macp, macp_state, empty_init, ROT0, "MAC S.A.", "Space Panther", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 19??, mac_1808, 0, mac32k, macp, macp_state, empty_init, ROT0, "MAC S.A.", "unknown game (MAC #1808)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 1995, macjungn, 0, mac32k, macp, macp_state, empty_init, ROT0, "MAC S.A.", "MAC Jungle (New version)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 1996, nbamac, 0, mac32k, macp, macp_state, empty_init, ROT0, "MAC S.A.", "NBA MAC", MACHINE_IS_SKELETON_MECHANICAL ) // CICPlay pinballs -GAME( 1985, glxplay, 0, macp0, cicplay, macp_state, empty_init, ROT0, "CICPlay", "Galaxy Play", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 1986, kidnap, 0, macp0, cicplay, macp_state, empty_init, ROT0, "CICPlay", "Kidnap", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 1987, glxplay2, 0, macp0, cicplay, macp_state, empty_init, ROT0, "CICPlay", "Galaxy Play 2", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 1985, glxplay, 0, mac16k, cicplay, macp_state, empty_init, ROT0, "CICPlay", "Galaxy Play", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 1986, kidnap, 0, mac16k, cicplay, macp_state, empty_init, ROT0, "CICPlay", "Kidnap", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 1987, glxplay2, 0, mac16k, cicplay, macp_state, empty_init, ROT0, "CICPlay", "Galaxy Play 2", MACHINE_IS_SKELETON_MECHANICAL ) diff --git a/src/mame/drivers/pce.cpp b/src/mame/drivers/pce.cpp index cfb152a93d9..15bfe8a26ae 100644 --- a/src/mame/drivers/pce.cpp +++ b/src/mame/drivers/pce.cpp @@ -16,7 +16,6 @@ - test sprite collision and overflow interrupts - sprite precaching - rewrite the base renderer loop -- Add CD support - Add expansion port support - Add 263 line mode - Sprite DMA should use vdc VRAM functions @@ -49,11 +48,8 @@ Super System Card: /********************************************************************** Known Bugs *********************************************************************** -- Benkei Gaiden: hangs after a few Sunsoft logo spins. -- Busou Keiji Cyber Cross: hangs on attract mode - Cadash: After choosing character and name, the game starts and the display 'jiggles' like tracking if off a VCR - Fighting Run: has color and sprite issues during gameplay; -- Hisou Kihei - Xserd: black screen; **********************************************************************/ #include "emu.h" @@ -147,7 +143,7 @@ static void pce_cart(device_slot_interface &device) void pce_state::pce_common(machine_config &config) { - /* basic machine hardware */ + // basic machine hardware H6280(config, m_maincpu, MAIN_CLOCK/3); m_maincpu->set_addrmap(AS_PROGRAM, &pce_state::pce_mem); m_maincpu->set_addrmap(AS_IO, &pce_state::pce_io); @@ -158,7 +154,7 @@ void pce_state::pce_common(machine_config &config) config.set_maximum_quantum(attotime::from_hz(60)); - /* video hardware */ + // video hardware screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); screen.set_raw(MAIN_CLOCK, huc6260_device::WPF, 64, 64 + 1024 + 64, huc6260_device::LPF, 18, 18 + 242); screen.set_screen_update(FUNC(pce_state::screen_update)); @@ -209,7 +205,7 @@ void pce_state::tg16(machine_config &config) void pce_state::sgx(machine_config &config) { - /* basic machine hardware */ + // basic machine hardware H6280(config, m_maincpu, MAIN_CLOCK/3); m_maincpu->set_addrmap(AS_PROGRAM, &pce_state::sgx_mem); m_maincpu->set_addrmap(AS_IO, &pce_state::sgx_io); @@ -220,7 +216,7 @@ void pce_state::sgx(machine_config &config) config.set_maximum_quantum(attotime::from_hz(60)); - /* video hardware */ + // video hardware screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); screen.set_raw(MAIN_CLOCK, huc6260_device::WPF, 64, 64 + 1024 + 64, huc6260_device::LPF, 18, 18 + 242); screen.set_screen_update(FUNC(pce_state::screen_update)); diff --git a/src/mame/layout/macp.lay b/src/mame/layout/macp.lay new file mode 100644 index 00000000000..ff29b4396c7 --- /dev/null +++ b/src/mame/layout/macp.lay @@ -0,0 +1,134 @@ +<?xml version="1.0"?> +<!-- +license:CC0 +--> + +<mamelayout version="2"> + + <element name="digit7" defstate="0"> + <led7seg> + <color red="0.0" green="0.75" blue="1.0" /> + </led7seg> + </element> + + <view name="Default Layout"> + <bounds left="0" top="25" right="325" bottom="205" /> + + <!-- Top Row --> + <element name="digit0" ref="digit7"> + <bounds left="10" top="45" right="30" bottom="84" /> + </element> + <element name="digit1" ref="digit7"> + <bounds left="34" top="45" right="54" bottom="84" /> + </element> + <element name="digit2" ref="digit7"> + <bounds left="58" top="45" right="78" bottom="84" /> + </element> + <element name="digit3" ref="digit7"> + <bounds left="87" top="45" right="107" bottom="84" /> + </element> + <element name="digit4" ref="digit7"> + <bounds left="111" top="45" right="131" bottom="84" /> + </element> + <element name="digit5" ref="digit7"> + <bounds left="135" top="45" right="155" bottom="84" /> + </element> + + <element name="digit20" ref="digit7"> + <bounds left="170" top="45" right="190" bottom="84" /> + </element> + <element name="digit21" ref="digit7"> + <bounds left="194" top="45" right="214" bottom="84" /> + </element> + <element name="digit22" ref="digit7"> + <bounds left="218" top="45" right="238" bottom="84" /> + </element> + <element name="digit23" ref="digit7"> + <bounds left="247" top="45" right="267" bottom="84" /> + </element> + <element name="digit24" ref="digit7"> + <bounds left="271" top="45" right="291" bottom="84" /> + </element> + <element name="digit25" ref="digit7"> + <bounds left="295" top="45" right="315" bottom="84" /> + </element> + + <!-- Middle Row --> + <element name="digit6" ref="digit7"> + <bounds left="10" top="100" right="30" bottom="139" /> + </element> + <element name="digit7" ref="digit7"> + <bounds left="34" top="100" right="54" bottom="139" /> + </element> + <element name="digit8" ref="digit7"> + <bounds left="58" top="100" right="78" bottom="139" /> + </element> + <element name="digit9" ref="digit7"> + <bounds left="87" top="100" right="107" bottom="139" /> + </element> + <element name="digit10" ref="digit7"> + <bounds left="111" top="100" right="131" bottom="139" /> + </element> + <element name="digit11" ref="digit7"> + <bounds left="135" top="100" right="155" bottom="139" /> + </element> + + <element name="digit26" ref="digit7"> + <bounds left="170" top="100" right="190" bottom="139" /> + </element> + <element name="digit27" ref="digit7"> + <bounds left="194" top="100" right="214" bottom="139" /> + </element> + <element name="digit28" ref="digit7"> + <bounds left="218" top="100" right="238" bottom="139" /> + </element> + <element name="digit29" ref="digit7"> + <bounds left="247" top="100" right="267" bottom="139" /> + </element> + <element name="digit30" ref="digit7"> + <bounds left="271" top="100" right="291" bottom="139" /> + </element> + <element name="digit31" ref="digit7"> + <bounds left="295" top="100" right="315" bottom="139" /> + </element> + + <!-- Bottom Row --> + <element name="digit15" ref="digit7"> + <bounds left="10" top="155" right="30" bottom="194" /> + </element> + <element name="unused1" ref="digit7"> + <bounds left="34" top="155" right="54" bottom="194" /> + </element> + <element name="digit14" ref="digit7"> + <bounds left="58" top="155" right="78" bottom="194" /> + </element> + <element name="unused2" ref="digit7"> + <bounds left="87" top="155" right="107" bottom="194" /> + </element> + <element name="digit13" ref="digit7"> + <bounds left="111" top="155" right="131" bottom="194" /> + </element> + <element name="digit12" ref="digit7"> + <bounds left="135" top="155" right="155" bottom="194" /> + </element> + + <element name="digit32" ref="digit7"> + <bounds left="170" top="155" right="190" bottom="194" /> + </element> + <element name="digit33" ref="digit7"> + <bounds left="194" top="155" right="214" bottom="194" /> + </element> + <element name="digit34" ref="digit7"> + <bounds left="218" top="155" right="238" bottom="194" /> + </element> + <element name="digit35" ref="digit7"> + <bounds left="247" top="155" right="267" bottom="194" /> + </element> + <element name="digit35" ref="digit7"> + <bounds left="271" top="155" right="291" bottom="194" /> + </element> + <element name="digit35" ref="digit7"> + <bounds left="295" top="155" right="315" bottom="194" /> + </element> + </view> +</mamelayout> diff --git a/src/mame/mame.lst b/src/mame/mame.lst index ea7595c616d..f66abe8e238 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -12405,7 +12405,8 @@ bmdct // GX995 (c) 2000 (Japan) bmfinal // GXC01 (c) 2002 (Japan) hmcompm2 // GX988 (c) 2000 hmcompmx // GX858 (c) 1999 -popn1 // GX803 (c) 1998 (Asia) +popn1 // GX803 (c) 1998 (Export) +popn1a // GX803 (c) 1998 (Asia) popn1k // GX803 (c) 1998 (Korea) popn1j // GX803 (c) 1998 (Japan) popn2 // GX831 (c) 1998 (Japan) |