diff options
43 files changed, 2258 insertions, 444 deletions
diff --git a/doxygen/doxygen.config b/doxygen/doxygen.config index d7115e0ef71..9cdc7792934 100644 --- a/doxygen/doxygen.config +++ b/doxygen/doxygen.config @@ -118,7 +118,7 @@ ABBREVIATE_BRIEF = ALWAYS_DETAILED_SEC = YES # If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all -1# inherited members of a class in the documentation of that class as if those +# inherited members of a class in the documentation of that class as if those # members were ordinary class members. Constructors, destructors and assignment # operators of the base classes will not be shown. # The default value is: NO. diff --git a/hash/neogeo.xml b/hash/neogeo.xml index 43092413118..c351061f2aa 100644 --- a/hash/neogeo.xml +++ b/hash/neogeo.xml @@ -30,7 +30,6 @@ ***************************************--> <software name="nam1975"> - <!-- MVS AND AES VERSION --> <description>NAM-1975 (NGM-001)(NGH-001)</description> <year>1990</year> <publisher>SNK</publisher> @@ -90,7 +89,6 @@ <software name="bstars"> - <!-- MVS VERSION --> <description>Baseball Stars Professional (NGM-002)</description> <year>1990</year> <publisher>SNK</publisher> @@ -141,7 +139,6 @@ </software> <software name="bstarsh" cloneof="bstars"> - <!-- AES VERSION --> <description>Baseball Stars Professional (NGH-002)</description> <year>1990</year> <publisher>SNK</publisher> @@ -200,7 +197,6 @@ ***************************************--> <software name="tpgolf"> - <!-- MVS AND AES VERSION --> <description>Top Player's Golf (NGM-003)(NGH-003)</description> <year>1990</year> <publisher>SNK</publisher> @@ -267,7 +263,6 @@ ***************************************--> <software name="mahretsu"> - <!-- MVS AND AES VERSION --> <description>Mahjong Kyo Retsuden (NGM-004)(NGH-004)</description> <year>1990</year> <publisher>SNK</publisher> @@ -322,7 +317,6 @@ ***************************************--> <software name="maglord"> - <!-- MVS VERSION --> <description>Magician Lord (NGM-005)</description> <year>1990</year> <publisher>Alpha Denshi Co.</publisher> @@ -369,7 +363,6 @@ </software> <software name="maglordh" cloneof="maglord"> - <!-- AES VERSION --> <description>Magician Lord (NGH-005)</description> <year>1990</year> <publisher>Alpha Denshi Co.</publisher> @@ -424,7 +417,6 @@ ***************************************--> <software name="ridhero"> - <!-- MVS AND AES VERSION --> <description>Riding Hero (NGM-006)(NGH-006)</description> <year>1990</year> <publisher>SNK</publisher> @@ -438,7 +430,7 @@ <dataarea name="mcu" size="0x2000"> <!-- Hitachi HD6301V1 MCU --> <rom offset="0x000000" size="0x02000" name="rhcom.bin" crc="e5cd6306" sha1="f6bbb8ae562804d67e137290c765c3589fa334c0" /> - <!-- dumped from a prototype with external ROM, not 100% confirmed as being the same on a final, or other games (lbowling, trally) --> + <!-- dumped from a prototype with external ROM, not 100% confirmed as being the same on a final, or other games (lbowling, trally) --> </dataarea> <dataarea name="fixed" size="0x040000"> <rom offset="0x000000" size="0x020000" name="006-s1.s1" crc="eb5189f0" sha1="0239c342ea62e73140a2306052f226226461a478" /> @@ -491,7 +483,7 @@ <dataarea name="mcu" size="0x2000"> <!-- Hitachi HD6301V1 MCU --> <rom offset="0x000000" size="0x02000" name="rhcom.bin" crc="e5cd6306" sha1="f6bbb8ae562804d67e137290c765c3589fa334c0" /> - <!-- dumped from a prototype with external ROM, not 100% confirmed as being the same on a final, or other games (lbowling, trally) --> + <!-- dumped from a prototype with external ROM, not 100% confirmed as being the same on a final, or other games (lbowling, trally) --> </dataarea> <dataarea name="fixed" size="0x040000"> <rom offset="0x000000" size="0x020000" name="006-s1.s1" crc="eb5189f0" sha1="0239c342ea62e73140a2306052f226226461a478" /> @@ -536,10 +528,12 @@ NEO-MVS PROG42G / NEO-MVS CHA42G . NGH-007 NEO-AEG PROG42G / NEO-AEG CHA42G + NEO-AEG PROG42G / NEO-AEG CHA-8M + . prototype + NEO-AEG PROG-EP / NEO-AEG CHA-EP ***************************************--> <software name="alpham2"> - <!-- MVS AND AES VERSION --> <description>Alpha Mission II / ASO II - Last Guardian (NGM-007)(NGH-007)</description> <year>1991</year> <publisher>SNK</publisher> @@ -583,37 +577,37 @@ <description>Alpha Mission II / ASO II - Last Guardian (prototype)</description> <year>1991</year> <publisher>SNK</publisher> - <sharedfeat name="release" value="MVS" /> + <sharedfeat name="release" value="AES" /> <sharedfeat name="compatibility" value="MVS,AES" /> <part name="cart" interface="neo_cart"> <dataarea name="maincpu" width="16" endianness="big" size="0x100000"> - <rom loadflag="load16_byte" name="proto_007-p1.p1" offset="0x000001" size="0x080000" crc="c763e52a" sha1="b24acbac255c5ee1a2e92e77cdde6620a24081cf" /> - <rom loadflag="load16_byte" name="proto_007-p2.p2" offset="0x000000" size="0x080000" crc="7a0b435c" sha1="40e6f42a92001d9f4e51898dd7489da143b6b74b" /> + <rom loadflag="load16_byte" name="007_p1_faac.p1" offset="0x000001" size="0x080000" crc="c763e52a" sha1="b24acbac255c5ee1a2e92e77cdde6620a24081cf" /> + <rom loadflag="load16_byte" name="007_p2_1813.p2" offset="0x000000" size="0x080000" crc="7a0b435c" sha1="40e6f42a92001d9f4e51898dd7489da143b6b74b" /> </dataarea> <dataarea name="fixed" size="0x040000"> - <rom offset="0x000000" size="0x020000" name="proto_007-s1.s1" crc="efc9ae2e" sha1="a594826b0082fe5a13191673e8d9aa42517230f5" /> + <rom offset="0x000000" size="0x020000" name="007_s1_36f1.s1" crc="efc9ae2e" sha1="a594826b0082fe5a13191673e8d9aa42517230f5" /> </dataarea> <dataarea name="audiocpu" size="0x020000"> - <rom offset="0x000000" size="0x020000" name="proto_007-m1.m1" crc="5976b464" sha1="ec824567ecc3579f6d86c9d9385710cbaeef16a3" /> + <rom offset="0x000000" size="0x020000" name="007_m1_9384.m1" crc="5976b464" sha1="ec824567ecc3579f6d86c9d9385710cbaeef16a3" /> </dataarea> <dataarea name="ymsnd" size="0x200000"> - <rom name="proto_007-v11.v11" offset="0x000000" size="0x080000" crc="18eaa9e1" sha1="85c94d8660f8a32e4ca8e015f0bd704208482d68" /> - <rom name="proto_007-v12.v12" offset="0x080000" size="0x080000" crc="2487d495" sha1="49af3c4dc6a38c5158d3641fd8f9a40041b42aa6" /> - <rom name="proto_007-v13.v13" offset="0x100000" size="0x080000" crc="25e60f25" sha1="d06b0df872372de38fcf90187195070ac5f8c651" /> + <rom name="007_v11_1bb4.v11" offset="0x000000" size="0x080000" crc="18eaa9e1" sha1="85c94d8660f8a32e4ca8e015f0bd704208482d68" /> + <rom name="007_v12_c8e8.v12" offset="0x080000" size="0x080000" crc="2487d495" sha1="49af3c4dc6a38c5158d3641fd8f9a40041b42aa6" /> + <rom name="007_v13_09fa.v13" offset="0x100000" size="0x080000" crc="25e60f25" sha1="d06b0df872372de38fcf90187195070ac5f8c651" /> </dataarea> <dataarea name="ymsnd.deltat" size="0x80000"> - <rom name="proto_007-v21.v21" offset="0x000000" size="0x080000" crc="ac44b75a" sha1="7399a05cd4e2c7ecde4a7323d3e189255afe5fc2" /> + <rom name="007_v21_28c2.v21" offset="0x000000" size="0x080000" crc="ac44b75a" sha1="7399a05cd4e2c7ecde4a7323d3e189255afe5fc2" /> </dataarea> <dataarea name="sprites" size="0x400000"> - <!-- note, ROM_LOAD32_BYTE --> - <rom loadflag="load32_byte" name="proto_007-c1.c1" offset="0x000000" size="0x080000" crc="24841639" sha1="fcc2a349121dad86ffefc44b9f0e8ba616ce0d30" /> - <rom loadflag="load32_byte" name="proto_007-c2.c2" offset="0x000002" size="0x080000" crc="912763ab" sha1="cedf26d7d85ad140399ee62813c71f35e65498d6" /> - <rom loadflag="load32_byte" name="proto_007-c3.c3" offset="0x000001" size="0x080000" crc="0743bde2" sha1="0d13ad6333909ad3cf10f9ac360f9abf191318de" /> - <rom loadflag="load32_byte" name="proto_007-c4.c4" offset="0x000003" size="0x080000" crc="61240212" sha1="dee36f6604adaeb96e0d761a7256241c066b1cd2" /> - <rom loadflag="load32_byte" name="proto_007-c5.c5" offset="0x200000" size="0x080000" crc="cf9f4c53" sha1="f979c85f83d9f76e554c2617f85f6d4efca6799c" /> - <rom loadflag="load32_byte" name="proto_007-c6.c6" offset="0x200002" size="0x080000" crc="3d903b19" sha1="001a8c762336b855fe1df69fe2e605d30a3f00a1" /> - <rom loadflag="load32_byte" name="proto_007-c7.c7" offset="0x200001" size="0x080000" crc="e41e3875" sha1="730aceb8a66cb33d0194b096568f053ad7dc000a" /> - <rom loadflag="load32_byte" name="proto_007-c8.c8" offset="0x200003" size="0x080000" crc="4483e2cf" sha1="47c3364f5c36ae9dc3a49fe37ca60bcee0e73314" /> + <!-- note, load32_byte --> + <rom loadflag="load32_byte" name="007_c1_210e.c11" offset="0x000000" size="0x080000" crc="24841639" sha1="fcc2a349121dad86ffefc44b9f0e8ba616ce0d30" /> + <rom loadflag="load32_byte" name="007_c2_29ae.c12" offset="0x000002" size="0x080000" crc="912763ab" sha1="cedf26d7d85ad140399ee62813c71f35e65498d6" /> + <rom loadflag="load32_byte" name="007_c3_c873.c13" offset="0x000001" size="0x080000" crc="0743bde2" sha1="0d13ad6333909ad3cf10f9ac360f9abf191318de" /> + <rom loadflag="load32_byte" name="007_c4_2462.c14" offset="0x000003" size="0x080000" crc="61240212" sha1="dee36f6604adaeb96e0d761a7256241c066b1cd2" /> + <rom loadflag="load32_byte" name="007_c5_5f16.c15" offset="0x200000" size="0x080000" crc="cf9f4c53" sha1="f979c85f83d9f76e554c2617f85f6d4efca6799c" /> + <rom loadflag="load32_byte" name="007_c6_8abc.c16" offset="0x200002" size="0x080000" crc="3d903b19" sha1="001a8c762336b855fe1df69fe2e605d30a3f00a1" /> + <rom loadflag="load32_byte" name="007_c7_c983.c17" offset="0x200001" size="0x080000" crc="e41e3875" sha1="730aceb8a66cb33d0194b096568f053ad7dc000a" /> + <rom loadflag="load32_byte" name="007_c8_b599.c18" offset="0x200003" size="0x080000" crc="4483e2cf" sha1="47c3364f5c36ae9dc3a49fe37ca60bcee0e73314" /> </dataarea> </part> </software> @@ -638,7 +632,6 @@ <sharedfeat name="release" value="MVS" /> <sharedfeat name="compatibility" value="MVS,AES" /> <part name="cart" interface="neo_cart"> - <!-- MVS VERSION --> <dataarea name="maincpu" width="16" endianness="big" size="0x100000"> <rom loadflag="load16_word_swap" name="009-p1.p1" offset="0x000000" size="0x080000" crc="b45fcfbf" sha1="3872147dda2d1ba905d35f4571065d87b1958b4a" /> <!-- TC534200 --> @@ -687,7 +680,6 @@ <sharedfeat name="release" value="AES" /> <sharedfeat name="compatibility" value="MVS,AES" /> <part name="cart" interface="neo_cart"> - <!-- AES VERSION --> <dataarea name="maincpu" width="16" endianness="big" size="0x100000"> <rom loadflag="load16_word_swap" name="009-pg1.p1" offset="0x000000" size="0x080000" crc="8e9f0add" sha1="d0b908a86a58f2537eea73a431038f1cd74a5a2f" /> <!-- TC534200 --> @@ -802,7 +794,6 @@ <sharedfeat name="release" value="MVS,AES" /> <sharedfeat name="compatibility" value="MVS,AES" /> <part name="cart" interface="neo_cart"> - <!-- MVS AND AES VERSION --> <dataarea name="maincpu" width="16" endianness="big" size="0x100000"> <rom loadflag="load16_word_swap" name="011-p1.p1" offset="0x000000" size="0x080000" crc="c7f944b5" sha1="da7560e09187c68f1d9f7656218497b4464c56c9" /> <!-- MB834200 --> @@ -865,7 +856,6 @@ <sharedfeat name="release" value="MVS,AES" /> <sharedfeat name="compatibility" value="MVS,AES" /> <part name="cart" interface="neo_cart"> - <!-- MVS AND AES VERSION --> <dataarea name="maincpu" width="16" endianness="big" size="0x100000"> <rom loadflag="load16_word_swap" name="014-p1.p1" offset="0x000000" size="0x080000" crc="6f1699c8" sha1="87206f67a619dede7959230f9ff3701b8b78957a" /> <!-- CXK384500 --> @@ -918,7 +908,6 @@ <sharedfeat name="release" value="MVS" /> <sharedfeat name="compatibility" value="MVS,AES" /> <part name="cart" interface="neo_cart"> - <!-- MVS VERSION --> <dataarea name="maincpu" width="16" endianness="big" size="0x100000"> <rom loadflag="load16_word_swap" name="016-p1.p1" offset="0x000000" size="0x080000" crc="1b818731" sha1="b98b1b33c0301fd79aac908f6b635dd00d1cb08d" /> <!-- TC534200 --> @@ -959,7 +948,6 @@ <sharedfeat name="release" value="AES" /> <sharedfeat name="compatibility" value="MVS,AES" /> <part name="cart" interface="neo_cart"> - <!-- AES VERSION --> <dataarea name="maincpu" width="16" endianness="big" size="0x100000"> <rom loadflag="load16_word_swap" name="016-hp1.p1" offset="0x000000" size="0x080000" crc="b774621e" sha1="7684b2e07163aec68cd083ef1d8900f855f6cb42" /> <!-- TC534200 --> @@ -1008,7 +996,6 @@ <sharedfeat name="release" value="MVS,AES" /> <sharedfeat name="compatibility" value="MVS,AES" /> <part name="cart" interface="neo_cart"> - <!-- MVS AND AES VERSION --> <dataarea name="maincpu" width="16" endianness="big" size="0x100000"> <rom loadflag="load16_word_swap" name="017-p1.p1" offset="0x000000" size="0x080000" crc="f8a63983" sha1="7a10ecb2f0fd8315641374c065d2602107b09e72" /> <!-- TC534200 --> @@ -1049,7 +1036,6 @@ <sharedfeat name="release" value="AES" /> <sharedfeat name="compatibility" value="MVS,AES" /> <part name="cart" interface="neo_cart"> - <!-- AES VERSION (US) --> <dataarea name="maincpu" width="16" endianness="big" size="0x100000"> <rom loadflag="load16_word_swap" name="017-hp1.p1" offset="0x000000" size="0x080000" crc="33eccae0" sha1="000ccf9a9c73df75eeba3f2c367c3a1a9e0a3a6b" /> <!-- TC534200 --> @@ -1091,6 +1077,8 @@ NEO-MVS PROG42G / NEO-MVS CHA42G . NGH-018 NEO-AEG PROG42G / NEO-AEG CHA42G + . prototype + NEO-AEG PROG-EP / NEO-AEG CHA-EP ***************************************--> <software name="burningf"> @@ -1100,7 +1088,6 @@ <sharedfeat name="release" value="MVS,AES" /> <sharedfeat name="compatibility" value="MVS,AES" /> <part name="cart" interface="neo_cart"> - <!-- MVS AND AES VERSION --> <dataarea name="maincpu" width="16" endianness="big" size="0x100000"> <rom loadflag="load16_word_swap" name="018-p1.p1" offset="0x000000" size="0x080000" crc="4092c8db" sha1="df194a4ad2c35e0e18bc053ff9284183444a4666" /> <!-- HN62434 --> @@ -1139,7 +1126,6 @@ <sharedfeat name="release" value="AES" /> <sharedfeat name="compatibility" value="MVS,AES" /> <part name="cart" interface="neo_cart"> - <!-- AES VERSION (US) --> <dataarea name="maincpu" width="16" endianness="big" size="0x100000"> <rom loadflag="load16_word_swap" name="018-hp1.p1" offset="0x000000" size="0x080000" crc="ddffcbf4" sha1="c646c4bbdb4e9b32df76c90f582ccd69fcc9f8e7" /> <!-- HN62434 --> @@ -1172,40 +1158,40 @@ </software> <software name="burningfp" cloneof="burningf"> + <!-- early prototype - all roms were hand labeled with CRCs, dumps verified against them --> <description>Burning Fight (prototype)</description> <year>1991</year> <publisher>SNK</publisher> - <sharedfeat name="release" value="MVS" /> + <sharedfeat name="release" value="AES" /> <sharedfeat name="compatibility" value="MVS,AES" /> <part name="cart" interface="neo_cart"> - <!-- early prototype - all roms were hand labeled with CRCs, dumps verified against them --> <dataarea name="maincpu" width="16" endianness="big" size="0x100000"> - <rom loadflag="load16_byte" name="proto_018-p1.p1" offset="0x000001" size="0x080000" crc="5b4032e7" sha1="55df91dad6f484d3d49c28ab5972700bf71a8662" /> - <rom loadflag="load16_byte" name="proto_018-p2.p2" offset="0x000000" size="0x080000" crc="78762f68" sha1="12170fc6efe75cb5d32624033d3d341032c97548" /> + <rom loadflag="load16_byte" name="018_p1_9397.p1" offset="0x000001" size="0x080000" crc="5b4032e7" sha1="55df91dad6f484d3d49c28ab5972700bf71a8662" /> + <rom loadflag="load16_byte" name="018_p2_e335.p2" offset="0x000000" size="0x080000" crc="78762f68" sha1="12170fc6efe75cb5d32624033d3d341032c97548" /> </dataarea> <dataarea name="fixed" size="0x040000"> - <rom offset="0x000000" size="0x020000" name="proto_018-s1.s1" crc="f3d130e8" sha1="2fdeb93f4bb2a60d391cac2822be41661b1e1795" /> + <rom offset="0x000000" size="0x020000" name="018_s1_9899.s1" crc="f3d130e8" sha1="2fdeb93f4bb2a60d391cac2822be41661b1e1795" /> </dataarea> <dataarea name="audiocpu" size="0x020000"> - <rom offset="0x000000" size="0x020000" name="proto_018-m1.m1" crc="470dd5d4" sha1="4291811b4aefe45261a1ae3631b6999fcd74fb3f" /> + <rom offset="0x000000" size="0x020000" name="018_m1_4586.m1" crc="470dd5d4" sha1="4291811b4aefe45261a1ae3631b6999fcd74fb3f" /> </dataarea> <dataarea name="ymsnd" size="0x200000"> - <rom name="proto_018-v11.v11" offset="0x000000" size="0x080000" crc="dc07ea3c" sha1="c3e71aaec44ead7ddc581565d16b90030e6db5fd" /> - <rom name="proto_018-v12.v12" offset="0x080000" size="0x080000" crc="f1ae637c" sha1="02a4c7d4a544350a314ab7b26d8c9d3baa8f5778" /> + <rom name="018_v11_56ac.v11" offset="0x000000" size="0x080000" crc="dc07ea3c" sha1="c3e71aaec44ead7ddc581565d16b90030e6db5fd" /> + <rom name="018_v12_db95.v12" offset="0x080000" size="0x080000" crc="f1ae637c" sha1="02a4c7d4a544350a314ab7b26d8c9d3baa8f5778" /> </dataarea> <dataarea name="ymsnd.deltat" size="0x80000"> - <rom name="proto_018-v21.v21" offset="0x000000" size="0x080000" crc="9f3b4eda" sha1="7f516923d04daa483b4b99c9babba66505931a34" /> + <rom name="018_v21_98dd.v21" offset="0x000000" size="0x080000" crc="9f3b4eda" sha1="7f516923d04daa483b4b99c9babba66505931a34" /> </dataarea> <dataarea name="sprites" size="0x400000"> - <!-- note, ROM_LOAD32_BYTE --> - <rom loadflag="load32_byte" name="proto_018-c1.c1" offset="0x000000" size="0x080000" crc="6569018b" sha1="25040e0a9c2b72900100a22a2a41de5f6c339d8a" /> - <rom loadflag="load32_byte" name="proto_018-c2.c2" offset="0x000002" size="0x080000" crc="6949b501" sha1="d8ee48837faff6cc849046ee8757b2b94d440303" /> - <rom loadflag="load32_byte" name="proto_018-c3.c3" offset="0x000001" size="0x080000" crc="410f653b" sha1="ce94667721baa7b2c318fc268e3bb9209671c9f5" /> - <rom loadflag="load32_byte" name="proto_018-c4.c4" offset="0x000003" size="0x080000" crc="d43bf2a5" sha1="c27985d8973611d02570f469a0d8cb4f5b63b614" /> - <rom loadflag="load32_byte" name="proto_018-c5.c5" offset="0x200000" size="0x080000" crc="837d09d3" sha1="d3b06931fca6123604549599544b04529ef34c53" /> - <rom loadflag="load32_byte" name="proto_018-c6.c6" offset="0x200002" size="0x080000" crc="5fee51e7" sha1="835c632fa12a1d5b4104cd80b8f686ac80b314a1" /> - <rom loadflag="load32_byte" name="proto_018-c7.c7" offset="0x200001" size="0x080000" crc="0f3f0823" sha1="ec1d681c1795de43d20f30f85956e2473ec39c95" /> - <rom loadflag="load32_byte" name="proto_018-c8.c8" offset="0x200003" size="0x080000" crc="67cc9e34" sha1="dc72a464c1456a4d2f7b992b416a984fb7885e99" /> + <!-- note, load32_byte --> + <rom loadflag="load32_byte" name="018_c1_ba06.c11" offset="0x000000" size="0x080000" crc="6569018b" sha1="25040e0a9c2b72900100a22a2a41de5f6c339d8a" /> + <rom loadflag="load32_byte" name="018_c2_d534.c12" offset="0x000002" size="0x080000" crc="6949b501" sha1="d8ee48837faff6cc849046ee8757b2b94d440303" /> + <rom loadflag="load32_byte" name="018_c3_9d70.c13" offset="0x000001" size="0x080000" crc="410f653b" sha1="ce94667721baa7b2c318fc268e3bb9209671c9f5" /> + <rom loadflag="load32_byte" name="018_c4_bf9d.c14" offset="0x000003" size="0x080000" crc="d43bf2a5" sha1="c27985d8973611d02570f469a0d8cb4f5b63b614" /> + <rom loadflag="load32_byte" name="018_c5_ac9d.c15" offset="0x200000" size="0x080000" crc="837d09d3" sha1="d3b06931fca6123604549599544b04529ef34c53" /> + <rom loadflag="load32_byte" name="018_c6_d2a5.c16" offset="0x200002" size="0x080000" crc="5fee51e7" sha1="835c632fa12a1d5b4104cd80b8f686ac80b314a1" /> + <rom loadflag="load32_byte" name="018_c7_d568.c17" offset="0x200001" size="0x080000" crc="0f3f0823" sha1="ec1d681c1795de43d20f30f85956e2473ec39c95" /> + <rom loadflag="load32_byte" name="018_c8_d256.c18" offset="0x200003" size="0x080000" crc="67cc9e34" sha1="dc72a464c1456a4d2f7b992b416a984fb7885e99" /> </dataarea> </part> </software> @@ -1225,7 +1211,6 @@ <sharedfeat name="release" value="MVS,AES" /> <sharedfeat name="compatibility" value="MVS,AES" /> <part name="cart" interface="neo_cart"> - <!-- MVS AND AES VERSION --> <dataarea name="maincpu" width="16" endianness="big" size="0x100000"> <rom loadflag="load16_word_swap" name="019-p1.p1" offset="0x000000" size="0x080000" crc="a2de8445" sha1="893d7ae72b4644123469de143fa35fac1cbcd61e" /> <!-- TC534200 --> @@ -1276,7 +1261,6 @@ <sharedfeat name="release" value="MVS,AES" /> <sharedfeat name="compatibility" value="MVS,AES" /> <part name="cart" interface="neo_cart"> - <!-- MVS AND AES VERSION --> <dataarea name="maincpu" width="16" endianness="big" size="0x100000"> <rom loadflag="load16_word_swap" name="020-p1.p1" offset="0x000000" size="0x080000" crc="e6f2fe64" sha1="50ab82517e077727d97668a4df2b9b96d2e78ab6" /> <!-- TC534200 --> @@ -1321,7 +1305,6 @@ <sharedfeat name="release" value="AES" /> <sharedfeat name="compatibility" value="MVS,AES" /> <part name="cart" interface="neo_cart"> - <!-- AES VERSION (US) --> <dataarea name="maincpu" width="16" endianness="big" size="0x100000"> <rom loadflag="load16_word_swap" name="020-hp1.p1" offset="0x000000" size="0x080000" crc="7cdb01ce" sha1="32cae2ddf5e26fb7e8a09132e600220db82df3b8" /> <!-- TC534200 --> @@ -1374,7 +1357,6 @@ <sharedfeat name="release" value="MVS,AES" /> <sharedfeat name="compatibility" value="MVS,AES" /> <part name="cart" interface="neo_cart"> - <!-- MVS AND AES VERSION --> <dataarea name="maincpu" width="16" endianness="big" size="0x100000"> <rom loadflag="load16_word_swap" name="021-p1.p1" offset="0x000000" size="0x080000" crc="39c3478f" sha1="06ebe54c9c4e14c5c31e770013d58b7162359ecc" /> <!-- MB834200 --> @@ -1419,7 +1401,6 @@ <sharedfeat name="release" value="MVS,AES" /> <sharedfeat name="compatibility" value="MVS,AES" /> <part name="cart" interface="neo_cart"> - <!-- MVS AND AES VERSION --> <dataarea name="maincpu" width="16" endianness="big" size="0x100000"> <rom loadflag="load16_word_swap" name="022-p1.p1" offset="0x000000" size="0x100000" crc="6a2f6d4a" sha1="b8ca548e56f1c7abcdce415ba7329e0cf698ee13" /> <!-- TC538200 --> @@ -1466,7 +1447,6 @@ <sharedfeat name="release" value="MVS,AES" /> <sharedfeat name="compatibility" value="MVS,AES" /> <part name="cart" interface="neo_cart"> - <!-- MVS AND AES VERSION --> <dataarea name="maincpu" width="16" endianness="big" size="0x100000"> <rom loadflag="load16_word_swap" name="023-p1.p1" offset="0x000000" size="0x100000" crc="c488fda3" sha1="4cdf2f1837fffd720efef42f81f933bdf2ef1402" /> <!-- TC538200 --> @@ -1525,6 +1505,9 @@ . NGM-024 NEO-MVS PROG42G-1 / NEO-MVS CHA42G-1 . NGH-024 + + . prototype + NEO-MVS PROG-EP / NEO-MVS CHA-EPG ***************************************--> <software name="lresort"> @@ -1565,6 +1548,44 @@ </part> </software> + <software name="lresortp" cloneof="lresort"> + <!-- prototype - all roms were hand labeled with CRCs --> + <description>Last Resort (prototype)</description> + <year>1992</year> + <publisher>SNK</publisher> + <sharedfeat name="release" value="MVS" /> + <sharedfeat name="compatibility" value="MVS,AES" /> + <part name="cart" interface="neo_cart"> + <dataarea name="maincpu" width="16" endianness="big" size="0x100000"> + <rom loadflag="load16_byte" name="024_p1_5937.podd" offset="0x000001" size="0x080000" crc="8e6008ee" sha1="6779663118782207156dc9fa9e24e81e30c6391c" /> + <rom loadflag="load16_byte" name="024_p2_8d37.peven" offset="0x000000" size="0x080000" crc="6d9ee90f" sha1="ecd42182988092417bc96db8301ea408e47735f2" /> + </dataarea> + <dataarea name="fixed" size="0x040000"> + <rom offset="0x000000" size="0x020000" name="024_s1_22fe.s1" crc="5cef5cc6" sha1="9ec305007bdb356e9f8f279beae5e2bcb3f2cf7b" /> + </dataarea> + <dataarea name="audiocpu" size="0x020000"> + <rom offset="0x000000" size="0x020000" name="024_m1_fc7a.m1" crc="22122875" sha1="540c21559163381467679f836cb068adaf526659" /> + </dataarea> + <dataarea name="ymsnd" size="0x200000"> + <rom name="024_v11_b085.v11" offset="0x000000" size="0x080000" crc="0722da38" sha1="66a9b463d5277908b3a01c03de82b3de9118f2cb" /> + <rom name="024_v12_d3b7.v12" offset="0x080000" size="0x080000" crc="670ce3ec" sha1="9004aa85d4a9b0ecf9cf9357b073ed55a98fdb02" /> + <rom name="024_v13_a31e.v13" offset="0x100000" size="0x080000" crc="2e39462b" sha1="b0a9b1a3377bf0369f3020192505c46ca52927d6" /> + <rom name="024_v24_2f0f.v24" offset="0x180000" size="0x080000" crc="7944754f" sha1="d42a46c5127c6c62041ebffb0007af8a24abd360" /> + </dataarea> + <dataarea name="sprites" size="0x400000"> + <!-- note, load32_byte --> + <rom loadflag="load32_byte" name="024_c1_b764.c1" offset="0x000000" size="0x080000" crc="677749ec" sha1="6f94675e037956a380652ab1056e6f1dec605bec" /> + <rom loadflag="load32_byte" name="024_c2_1951.c2" offset="0x000002" size="0x080000" crc="104d7b59" sha1="404e8776ee8df4ca282eb7b747759af8628ddca1" /> + <rom loadflag="load32_byte" name="024_c3_0f63.c3" offset="0x000001" size="0x080000" crc="b0965a74" sha1="e8026dd4f722ccab9c913261d09ab8843ef56a0e" /> + <rom loadflag="load32_byte" name="024_c4_c5b5.c4" offset="0x000003" size="0x080000" crc="dcfc3860" sha1="8443b455ae8de656adab57f3b7e68919f22d3b9d" /> + <rom loadflag="load32_byte" name="024_c5_dd03.c5" offset="0x200000" size="0x080000" crc="50322397" sha1="3308fbe48ad165b9894a52fc3a8d9898bbbc0c0e" /> + <rom loadflag="load32_byte" name="024_c6_c81a.c6" offset="0x200002" size="0x080000" crc="c3c93894" sha1="f23b9d7e2b54d44c96370dde282bdf45cebd9cba" /> + <rom loadflag="load32_byte" name="024_c7_5edc.c7" offset="0x200001" size="0x080000" crc="21faf72b" sha1="00bf257b06180ae6ede57744cea6257b3488d9f0" /> + <rom loadflag="load32_byte" name="024_c8_0850.c8" offset="0x200003" size="0x080000" crc="fb57217b" sha1="607a98da754e8b1dd94a6432b21a36cc38e06a0f" /> + </dataarea> + </part> + </software> + <!--*************************************** ID-0025 . NGM-025 @@ -1580,7 +1601,6 @@ <sharedfeat name="release" value="MVS,AES" /> <sharedfeat name="compatibility" value="MVS,AES" /> <part name="cart" interface="neo_cart"> - <!-- MVS AND AES VERSION --> <dataarea name="maincpu" width="16" endianness="big" size="0x100000"> <rom loadflag="load16_word_swap" name="025-p1.p1" offset="0x000000" size="0x080000" crc="43344cb0" sha1="29dfd699f35b0a74e20fedd6c9174c289f0ef6e0" /> <!-- TC574200 --> @@ -1632,7 +1652,6 @@ <sharedfeat name="release" value="MVS,AES" /> <sharedfeat name="compatibility" value="MVS,AES" /> <part name="cart" interface="neo_cart"> - <!-- MVS AND AES VERSION --> <dataarea name="maincpu" width="16" endianness="big" size="0x100000"> <rom loadflag="load16_word_swap" name="027-p1.p1" offset="0x000000" size="0x080000" crc="c8381327" sha1="c8f8be0ba276c6d12ef13d05af3cf83a2b924894" /> <!-- HN62422PC --> @@ -1766,7 +1785,6 @@ <sharedfeat name="release" value="MVS,AES" /> <sharedfeat name="compatibility" value="MVS,AES" /> <part name="cart" interface="neo_cart"> - <!-- MVS AND AES VERSION --> <dataarea name="maincpu" width="16" endianness="big" size="0x100000"> <rom loadflag="load16_word_swap" name="030-epr.p1" offset="0x000000" size="0x080000" crc="c59be3dd" sha1="4fbd462c1c18e85a252c58b04b54fd3b82b46cb0" /> <!-- TC574200 --> @@ -1852,7 +1870,6 @@ <sharedfeat name="release" value="MVS" /> <sharedfeat name="compatibility" value="MVS,AES" /> <part name="cart" interface="neo_cart"> - <!-- MVS VERSION --> <dataarea name="maincpu" width="16" endianness="big" size="0x100000"> <rom loadflag="load16_word_swap" name="031-pg1.p1" offset="0x000000" size="0x080000" crc="17f034a7" sha1="2e66c7bd93a08efe63c4894494db50bbf58f60e4" /> <!-- TC534200 --> @@ -1891,7 +1908,6 @@ <sharedfeat name="release" value="AES" /> <sharedfeat name="compatibility" value="MVS,AES" /> <part name="cart" interface="neo_cart"> - <!-- AES VERSION --> <dataarea name="maincpu" width="16" endianness="big" size="0x100000"> <rom loadflag="load16_word_swap" name="031-p1.p1" offset="0x000000" size="0x080000" crc="a2801c24" sha1="627d76ff0740ca29586f37b268f47fb469822529" /> <!-- TC534200 --> @@ -1985,7 +2001,6 @@ <sharedfeat name="release" value="MVS,AES" /> <sharedfeat name="compatibility" value="MVS,AES" /> <part name="cart" interface="neo_cart"> - <!-- MVS AND AES VERSION --> <dataarea name="maincpu" width="16" endianness="big" size="0x100000"> <rom loadflag="load16_word_swap" name="033-p1.p1" offset="0x000000" size="0x080000" crc="47ebdc2f" sha1="d46786502920fb510f1999db00c5e09fb641c0bd" /> <!-- TC534200 --> @@ -2036,7 +2051,6 @@ <sharedfeat name="release" value="MVS,AES" /> <sharedfeat name="compatibility" value="MVS,AES" /> <part name="cart" interface="neo_cart"> - <!-- MVS AND AES VERSION --> <dataarea name="maincpu" width="16" endianness="big" size="0x100000"> <rom loadflag="load16_word_swap" name="034-p1.p1" offset="0x000000" size="0x080000" crc="cdef6b19" sha1="97482db0dffc6d625fb41fa38449c0a74d741a72" /> <!-- TC534200 --> @@ -2088,7 +2102,6 @@ <sharedfeat name="release" value="MVS,AES" /> <sharedfeat name="compatibility" value="MVS,AES" /> <part name="cart" interface="neo_cart"> - <!-- MVS AND AES VERSION --> <dataarea name="maincpu" width="16" endianness="big" size="0x100000"> <rom loadflag="load16_word_swap" name="036-p1.p1" offset="0x000000" size="0x080000" crc="1c66b6fa" sha1="6c50cc452971c46c763ae0b2def95792671a1798" /> <!-- CXK384500 --> @@ -2135,7 +2148,6 @@ <sharedfeat name="release" value="MVS,AES" /> <sharedfeat name="compatibility" value="MVS,AES" /> <part name="cart" interface="neo_cart"> - <!-- MVS AND AES VERSION --> <dataarea name="maincpu" width="16" endianness="big" size="0x100000"> <rom loadflag="load16_word_swap" name="037-p1.p1" offset="0x000000" size="0x080000" crc="e7f2553c" sha1="8469ecb900477feed05ae3311fe9515019bbec2a" /> <!-- TC534200 --> @@ -2180,7 +2192,6 @@ <sharedfeat name="release" value="MVS,AES" /> <sharedfeat name="compatibility" value="MVS,AES" /> <part name="cart" interface="neo_cart"> - <!-- MVS AND AES VERSION --> <dataarea name="maincpu" width="16" endianness="big" size="0x100000"> <rom loadflag="load16_word_swap" name="038-p1.p1" offset="0x000000" size="0x080000" crc="1e52a576" sha1="a1cb56354c3378e955b0cd482c3c41ae15add952" /> <!-- TC534200 --> @@ -2233,7 +2244,6 @@ <sharedfeat name="release" value="MVS,AES" /> <sharedfeat name="compatibility" value="MVS,AES" /> <part name="cart" interface="neo_cart"> - <!-- MVS AND AES VERSION --> <dataarea name="maincpu" width="16" endianness="big" size="0x100000"> <rom loadflag="load16_word_swap" name="039-p1.p1" offset="0x000000" size="0x080000" crc="b372d54c" sha1="b70fc6f72e16a66b6e144cc01370548e3398b8b8" /> <!-- TC534200 --> @@ -2269,8 +2279,8 @@ </part> </software> - <!-- fairly late prototype release, only the code differs from the main set --> <software name="kotm2p" cloneof="kotm2"> + <!-- fairly late prototype release, only the code differs from the main set --> <description>King of the Monsters 2 - The Next Thing (prototype)</description> <year>1992</year> <publisher>SNK</publisher> @@ -2298,7 +2308,7 @@ </dataarea> <!-- same data as main set, but prototype board layout --> <dataarea name="sprites" size="0x600000"> - <!-- note, ROM_LOAD32_BYTE --> + <!-- note, load32_byte --> <rom loadflag="load32_byte" name="proto_039-c1.c1" offset="0x000000" size="0x100000" crc="7192a787" sha1="7bef6ce79c618103485480aee3c6f856968eb51f" /> <rom loadflag="load32_byte" name="proto_039-c2.c2" offset="0x000002" size="0x100000" crc="7157eca1" sha1="65f36c6a3834775b04076d2c38a6047bffe9a8cf" /> <rom loadflag="load32_byte" name="proto_039-c3.c3" offset="0x000001" size="0x100000" crc="11d75727" sha1="5a4c7b5ca3f1195e7853b45c5e71c13fe74d16e9" /> @@ -2412,7 +2422,6 @@ <sharedfeat name="release" value="MVS,AES" /> <sharedfeat name="compatibility" value="MVS,AES" /> <part name="cart" interface="neo_cart"> - <!-- MVS AND AES VERSION --> <dataarea name="maincpu" width="16" endianness="big" size="0x100000"> <rom loadflag="load16_word_swap" name="042-p1.p1" offset="0x000000" size="0x100000" crc="ed719dcf" sha1="12baf2601e86c0e4358517b9fa1c55f2f5835f1d" /> <!-- TC538200 --> @@ -2459,7 +2468,6 @@ <sharedfeat name="release" value="MVS,AES" /> <sharedfeat name="compatibility" value="MVS,AES" /> <part name="cart" interface="neo_cart"> - <!-- MVS AND AES VERSION --> <dataarea name="maincpu" width="16" endianness="big" size="0x100000"> <rom loadflag="load16_word_swap" name="043-p1.p1" offset="0x000000" size="0x100000" crc="ffbdd928" sha1="05b24655ca32723661adc5509b450824deb0c176" /> <!-- TC538200 --> @@ -2511,7 +2519,6 @@ <sharedfeat name="release" value="MVS,AES" /> <sharedfeat name="compatibility" value="MVS,AES" /> <part name="cart" interface="neo_cart"> - <!-- MVS AND AES VERSION --> <dataarea name="maincpu" width="16" endianness="big" size="0x100000"> <rom loadflag="load16_word_swap" name="044-p1.p1" offset="0x000000" size="0x080000" crc="ca9f7a6d" sha1="4d28ef86696f7e832510a66d3e8eb6c93b5b91a1" /> <!-- TC534200 --> @@ -2562,7 +2569,6 @@ <sharedfeat name="release" value="MVS" /> <sharedfeat name="compatibility" value="MVS,AES" /> <part name="cart" interface="neo_cart"> - <!-- MVS VERSION --> <dataarea name="maincpu" width="16" endianness="big" size="0x200000"> <rom loadflag="load16_word_swap" name="045-p1.p1" offset="0x000000" size="0x100000" crc="dfe51bf0" sha1="2243af3770a516ae698b69bcd9daf53632d9128d" /> <!-- TC538200 --> @@ -2607,7 +2613,6 @@ <sharedfeat name="release" value="AES" /> <sharedfeat name="compatibility" value="MVS,AES" /> <part name="cart" interface="neo_cart"> - <!-- AES VERSION --> <dataarea name="maincpu" width="16" endianness="big" size="0x180000"> <rom loadflag="load16_word_swap" name="045-p1.p1" offset="0x000000" size="0x100000" crc="dfe51bf0" sha1="2243af3770a516ae698b69bcd9daf53632d9128d" /> <!-- TC538200 --> @@ -2660,7 +2665,6 @@ <sharedfeat name="release" value="MVS" /> <sharedfeat name="compatibility" value="MVS,AES" /> <part name="cart" interface="neo_cart"> - <!-- MVS VERSION --> <dataarea name="maincpu" width="16" endianness="big" size="0x200000"> <rom loadflag="load16_word_swap" name="046-p1.p1" offset="0x000000" size="0x100000" crc="69fa9e29" sha1="9a40a16163193bb506a32bd34f6323b25ec69622" /> <!-- mask rom TC538200 --> @@ -2713,7 +2717,6 @@ <sharedfeat name="release" value="AES" /> <sharedfeat name="compatibility" value="MVS,AES" /> <part name="cart" interface="neo_cart"> - <!-- AES VERSION --> <dataarea name="maincpu" width="16" endianness="big" size="0x200000"> <rom loadflag="load16_word_swap" name="046-pg1.p1" offset="0x000000" size="0x100000" crc="771e39bc" sha1="c0e05fd1ca81926438bb75e2fa6894e40ab6521e" /> <!-- mask rom TC538200 --> @@ -2774,7 +2777,6 @@ <sharedfeat name="release" value="MVS,AES" /> <sharedfeat name="compatibility" value="MVS,AES" /> <part name="cart" interface="neo_cart"> - <!-- MVS AND AES VERSION --> <feature name="slot" value="rom_fatfur2" /> <dataarea name="maincpu" width="16" endianness="big" size="0x100000"> <rom loadflag="load16_word_swap" name="047-p1.p1" offset="0x000000" size="0x100000" crc="ecfdbb69" sha1="59e2f137c6eaf043df4ddae865a9159a10265c60" /> @@ -2825,7 +2827,6 @@ <sharedfeat name="release" value="MVS" /> <sharedfeat name="compatibility" value="MVS,AES" /> <part name="cart" interface="neo_cart"> - <!-- MVS ONLY RELEASE --> <dataarea name="maincpu" width="16" endianness="big" size="0x100000"> <rom loadflag="load16_word_swap" name="048-p1.p1" offset="0x000000" size="0x100000" crc="fa818cbb" sha1="afee2c897b766c84f13891fb52c574fb18df0951" /> <!-- mask rom TC538200 --> @@ -2866,7 +2867,6 @@ <sharedfeat name="release" value="MVS,AES" /> <sharedfeat name="compatibility" value="MVS,AES" /> <part name="cart" interface="neo_cart"> - <!-- MVS AND AES VERSION --> <dataarea name="maincpu" width="16" endianness="big" size="0x100000"> <rom loadflag="load16_word_swap" name="049-p1.p1" offset="0x000000" size="0x080000" crc="3b857da2" sha1="4dd86c739944696c16c3cdd85935d6dfa9fdc276" /> <!-- CXK384500 --> @@ -3040,7 +3040,6 @@ <sharedfeat name="release" value="MVS" /> <sharedfeat name="compatibility" value="MVS,AES" /> <part name="cart" interface="neo_cart"> - <!-- MVS VERSION --> <dataarea name="maincpu" width="16" endianness="big" size="0x100000"> <rom loadflag="load16_word_swap" name="053-epr.p1" offset="0x000000" size="0x080000" crc="d42e1e9a" sha1="9d1911fe4bf6202466ec45557dd008cbf01ca9c6" /> <!-- D27C4000 --> @@ -3084,7 +3083,6 @@ <sharedfeat name="release" value="AES" /> <sharedfeat name="compatibility" value="MVS,AES" /> <part name="cart" interface="neo_cart"> - <!-- AES VERSION --> <dataarea name="maincpu" width="16" endianness="big" size="0x100000"> <rom loadflag="load16_word_swap" name="053-p1.p1" offset="0x000000" size="0x080000" crc="95b574cb" sha1="b7b7af6a04c3d902e7f8852897741ecaf0b1062c" /> <!-- TC534200 --> @@ -3181,7 +3179,6 @@ <sharedfeat name="release" value="MVS,AES" /> <sharedfeat name="compatibility" value="MVS,AES" /> <part name="cart" interface="neo_cart"> - <!-- MVS AND AES VERSION --> <dataarea name="maincpu" width="16" endianness="big" size="0x200000"> <rom loadflag="load16_word_swap" name="055-p1.p1" offset="0x100000" size="0x100000" crc="f10a2042" sha1="d08a3f3c28be4b1793de7d362456281329fe1828" /> <!-- mask rom TC5316200 --> @@ -3239,7 +3236,6 @@ <sharedfeat name="release" value="MVS" /> <sharedfeat name="compatibility" value="MVS,AES" /> <part name="cart" interface="neo_cart"> - <!-- MVS VERSION --> <dataarea name="maincpu" width="16" endianness="big" size="0x100000"> <rom loadflag="load16_word_swap" name="056-p1.p1" offset="0x000000" size="0x100000" crc="a3b1d021" sha1="ee42f3ca4516226b0088d0303ed28e3ecdabcd71" /> <!-- TC538200 --> @@ -3289,7 +3285,6 @@ <sharedfeat name="release" value="AES" /> <sharedfeat name="compatibility" value="MVS,AES" /> <part name="cart" interface="neo_cart"> - <!-- AES VERSION --> <dataarea name="maincpu" width="16" endianness="big" size="0x100000"> <rom loadflag="load16_word_swap" name="056-p1.p1" offset="0x000000" size="0x100000" crc="a3b1d021" sha1="ee42f3ca4516226b0088d0303ed28e3ecdabcd71" /> <!-- TC538200 --> @@ -3350,7 +3345,6 @@ <sharedfeat name="release" value="MVS,AES" /> <sharedfeat name="compatibility" value="MVS,AES" /> <part name="cart" interface="neo_cart"> - <!-- MVS AND AES VERSION --> <dataarea name="maincpu" width="16" endianness="big" size="0x200000"> <rom loadflag="load16_word_swap" name="057-p1.p1" offset="0x100000" size="0x100000" crc="65a891d9" sha1="ff8d5ccb0dd22c523902bb3db3c645583a335056" /> <!-- TC5316200 --> @@ -3402,7 +3396,6 @@ <sharedfeat name="release" value="MVS,AES" /> <sharedfeat name="compatibility" value="MVS,AES" /> <part name="cart" interface="neo_cart"> - <!-- MVS AND AES VERSION --> <dataarea name="maincpu" width="16" endianness="big" size="0x180000"> <rom loadflag="load16_word_swap" name="058-p1.p1" offset="0x000000" size="0x100000" crc="2f585ba2" sha1="429b4bf43fb9b1082c15d645ca328f9d175b976b" /> <!-- mask rom TC538200 --> @@ -3449,7 +3442,6 @@ <sharedfeat name="release" value="MVS,AES" /> <sharedfeat name="compatibility" value="MVS,AES" /> <part name="cart" interface="neo_cart"> - <!-- MVS AND AES VERSION --> <dataarea name="maincpu" width="16" endianness="big" size="0x180000"> <rom loadflag="load16_word_swap" name="058-p1.p1" offset="0x000000" size="0x100000" crc="2f585ba2" sha1="429b4bf43fb9b1082c15d645ca328f9d175b976b" /> <!-- mask rom TC538200 --> @@ -3560,9 +3552,9 @@ <year>1994</year> <publisher>Viccom</publisher> <sharedfeat name="release" value="MVS" /> + <!-- MVS ONLY RELEASE --> <sharedfeat name="compatibility" value="MVS,AES" /> <part name="cart" interface="neo_cart"> - <!-- MVS ONLY RELEASE --> <dataarea name="maincpu" width="16" endianness="big" size="0x100000"> <rom loadflag="load16_word_swap" name="060-p1.p1" offset="0x000000" size="0x100000" crc="2a104b50" sha1="3eb663d3df7074e1cdf4c0e450a35c9cf55d8979" /> <!-- VIC940800 --> @@ -3599,9 +3591,9 @@ <year>1994</year> <publisher>Viccom</publisher> <sharedfeat name="release" value="MVS" /> + <!-- MVS ONLY RELEASE --> <sharedfeat name="compatibility" value="MVS,AES" /> <part name="cart" interface="neo_cart"> - <!-- MVS ONLY RELEASE --> <dataarea name="maincpu" width="16" endianness="big" size="0x100000"> <rom loadflag="load16_word_swap" name="060-p1.p1" offset="0x000000" size="0x100000" crc="2a104b50" sha1="3eb663d3df7074e1cdf4c0e450a35c9cf55d8979" /> <!-- VIC940800 --> @@ -3651,7 +3643,6 @@ <sharedfeat name="release" value="MVS,AES" /> <sharedfeat name="compatibility" value="MVS,AES" /> <part name="cart" interface="neo_cart"> - <!-- MVS AND AES VERSION --> <dataarea name="maincpu" width="16" endianness="big" size="0x100000"> <rom loadflag="load16_word_swap" name="061-p1.p1" offset="0x000000" size="0x100000" crc="5969e0dc" sha1="78abea880c125ec5a85bef6404478512a34b5513" /> <!-- mask rom TC538200 --> @@ -3752,7 +3743,6 @@ <sharedfeat name="release" value="MVS,AES" /> <sharedfeat name="compatibility" value="MVS,AES" /> <part name="cart" interface="neo_cart"> - <!-- MVS AND AES VERSION --> <dataarea name="maincpu" width="16" endianness="big" size="0x200000"> <rom loadflag="load16_word_swap" name="063-p1.p1" offset="0x100000" size="0x100000" crc="22368892" sha1="0997f8284aa0f57a333be8a0fdea777d0d01afd6" /> <!-- TC5316200 --> @@ -3868,7 +3858,6 @@ <sharedfeat name="release" value="MVS,AES" /> <sharedfeat name="compatibility" value="MVS,AES" /> <part name="cart" interface="neo_cart"> - <!-- MVS AND AES VERSION --> <dataarea name="maincpu" width="16" endianness="big" size="0x200000"> <rom loadflag="load16_word_swap" name="064-p1.p1" offset="0x100000" size="0x100000" crc="385a2e86" sha1="cfde4a1aeae038a3d6ca9946065624f097682d3d" /> <!-- TC5316200 --> @@ -4016,9 +4005,9 @@ <year>1994</year> <publisher>Face</publisher> <sharedfeat name="release" value="MVS" /> + <!-- MVS ONLY RELEASE --> <sharedfeat name="compatibility" value="MVS,AES" /> <part name="cart" interface="neo_cart"> - <!-- MVS ONLY RELEASE --> <dataarea name="maincpu" width="16" endianness="big" size="0x100000"> <rom loadflag="load16_word_swap" name="067-p1.p1" offset="0x000000" size="0x080000" crc="4cea8a49" sha1="cea4a35db8de898e30eb40dd339b3cbe77ac0856" /> <!-- UM8303B --> @@ -4055,9 +4044,9 @@ <year>1994</year> <publisher>Video System Co.</publisher> <sharedfeat name="release" value="MVS" /> + <!-- MVS ONLY RELEASE --> <sharedfeat name="compatibility" value="MVS,AES" /> <part name="cart" interface="neo_cart"> - <!-- MVS ONLY RELEASE --> <dataarea name="maincpu" width="16" endianness="big" size="0x100000"> <rom loadflag="load16_word_swap" name="068-pg1.p1" offset="0x000000" size="0x100000" crc="105a408f" sha1="2ee51defa1c24c66c63a6498ee542ac26de3cfbb" /> <!-- mask rom TC538200 --> @@ -4110,7 +4099,6 @@ <sharedfeat name="release" value="MVS,AES" /> <sharedfeat name="compatibility" value="MVS,AES" /> <part name="cart" interface="neo_cart"> - <!-- MVS AND AES VERSION --> <dataarea name="maincpu" width="16" endianness="big" size="0x300000"> <rom loadflag="load16_word_swap" name="069-p1.p1" offset="0x000000" size="0x100000" crc="a8bcfbbc" sha1="519c4861151797e5f4d4f33432b83dfabed8e7c4" /> <!-- TC538200 --> @@ -4161,10 +4149,10 @@ <year>2001</year> <publisher>SNK</publisher> <sharedfeat name="release" value="MVS" /> + <!-- MVS ONLY RELEASE --> <sharedfeat name="compatibility" value="MVS,AES" /> <part name="cart" interface="neo_cart"> <!-- Original Version - Encrypted GFX --> - <!-- MVS ONLY RELEASE --> <feature name="slot" value="rom_cmc_zupapa" /> <dataarea name="maincpu" width="16" endianness="big" size="0x100000"> <rom loadflag="load16_word_swap" name="070-p1.p1" offset="0x000000" size="0x100000" crc="5a96203e" sha1="49cddec9ca6cc51e5ecf8a34e447a23e1f8a15a1" /> @@ -4223,9 +4211,9 @@ <year>1994</year> <publisher>Eighting / Hudson</publisher> <sharedfeat name="release" value="MVS" /> + <!-- MVS ONLY RELEASE --> <sharedfeat name="compatibility" value="MVS,AES" /> <part name="cart" interface="neo_cart"> - <!-- MVS ONLY RELEASE --> <dataarea name="maincpu" width="16" endianness="big" size="0x100000"> <rom loadflag="load16_word_swap" name="073-p1.p1" offset="0x000000" size="0x080000" crc="adc356ad" sha1="801e0a54b65d7a3500e6cef2d6bba40c6356dc1f" /> <!-- mask rom TC534200 --> @@ -4268,7 +4256,6 @@ <sharedfeat name="release" value="MVS,AES" /> <sharedfeat name="compatibility" value="MVS,AES" /> <part name="cart" interface="neo_cart"> - <!-- MVS AND AES VERSION --> <dataarea name="maincpu" width="16" endianness="big" size="0x200000"> <rom loadflag="load16_word_swap" name="074-p1.p1" offset="0x100000" size="0x100000" crc="62369553" sha1="ca4d561ee08d16fe6804249d1ba49188eb3bd606" /> <!-- TC5316200 --> @@ -4366,9 +4353,9 @@ <year>1994</year> <publisher>NMK</publisher> <sharedfeat name="release" value="MVS" /> + <!-- MVS ONLY RELEASE --> <sharedfeat name="compatibility" value="MVS,AES" /> <part name="cart" interface="neo_cart"> - <!-- MVS ONLY RELEASE --> <dataarea name="maincpu" width="16" endianness="big" size="0x100000"> <rom loadflag="load16_word_swap" name="076-p1.p1" offset="0x000000" size="0x080000" crc="d7c1effd" sha1="485c2308a40baecd122be9ab4996044622bdcc7e" /> <!-- mask rom TC538200 --> @@ -4478,7 +4465,6 @@ <sharedfeat name="release" value="MVS,AES" /> <sharedfeat name="compatibility" value="MVS,AES" /> <part name="cart" interface="neo_cart"> - <!-- MVS AND AES VERSION --> <dataarea name="maincpu" width="16" endianness="big" size="0x100000"> <rom loadflag="load16_word_swap" name="079-p1.p1" offset="0x000000" size="0x100000" crc="5e78328e" sha1="7a00b096ed6dd77afc3008c5a4c83686e475f323" /> <!-- TC538200 --> @@ -4526,7 +4512,6 @@ <sharedfeat name="release" value="MVS,AES" /> <sharedfeat name="compatibility" value="MVS,AES" /> <part name="cart" interface="neo_cart"> - <!-- MVS AND AES VERSION --> <dataarea name="maincpu" width="16" endianness="big" size="0x100000"> <rom loadflag="load16_word_swap" name="080-p1.p1" offset="0x000000" size="0x100000" crc="4440315e" sha1="f4adba8e341d64a1f6280dfd98ebf6918c00608d" /> <!-- mask rom TC538200 --> @@ -4715,11 +4700,11 @@ <year>1994</year> <publisher>Taito</publisher> <sharedfeat name="release" value="MVS" /> + <!-- MVS ONLY RELEASE --> <sharedfeat name="compatibility" value="MVS,AES" /> <part name="cart" interface="neo_cart"> - <!-- MVS ONLY RELEASE --> - <!-- This set uses CHA and PROG board from Power Spikes II. Six Power Spikes II prom's are replaced with - Puzzle Bobble prom's. Confirmed on several original carts. Do other layouts also exist? --> + <!-- This set uses CHA and PROG board from Power Spikes II. Six Power Spikes II prom's are replaced with + Puzzle Bobble prom's. Confirmed on several original carts. Do other layouts also exist? --> <dataarea name="maincpu" width="16" endianness="big" size="0x100000"> <rom loadflag="load16_word_swap" name="d96-07.ep1" offset="0x000000" size="0x080000" crc="6102ca14" sha1="328429d11de5b327a0654ae0548da4d0025a2ae6" /> <!-- 27C240 --> @@ -4781,7 +4766,6 @@ <sharedfeat name="release" value="MVS" /> <sharedfeat name="compatibility" value="MVS,AES" /> <part name="cart" interface="neo_cart"> - <!-- MVS VERSION --> <dataarea name="maincpu" width="16" endianness="big" size="0x200000"> <rom loadflag="load16_word_swap" name="084-p1.p1" offset="0x100000" size="0x100000" crc="2cba2716" sha1="f6c2d0537c9c3e0938065c65b1797c47198fcff8" /> <!-- TC5316200 --> @@ -4833,7 +4817,6 @@ <sharedfeat name="release" value="MVS,AES" /> <sharedfeat name="compatibility" value="MVS,AES" /> <part name="cart" interface="neo_cart"> - <!-- MVS AND AES VERSION --> <!-- There also exists a MVS version with 4x eprom (EP1~EP4); board used is NEO-MVS PROGSM --> <dataarea name="maincpu" width="16" endianness="big" size="0x200000"> <rom loadflag="load16_word_swap" name="084-pg1.p1" offset="0x100000" size="0x100000" crc="5e54cf95" sha1="41abe2042fdbb1526e92a0789976a9b1ac5e60f0" /> @@ -4895,9 +4878,9 @@ <year>1996</year> <publisher>Tecmo</publisher> <sharedfeat name="release" value="MVS" /> + <!-- MVS ONLY RELEASE --> <sharedfeat name="compatibility" value="MVS,AES" /> <part name="cart" interface="neo_cart"> - <!-- MVS ONLY RELEASE --> <dataarea name="maincpu" width="16" endianness="big" size="0x100000"> <rom loadflag="load16_word_swap" name="086-p1.p1" offset="0x000000" size="0x100000" crc="03e20ab6" sha1="3a0a5a54649178ce7a6158980cb4445084b40fb5" /> <!-- mask rom TC538200 --> @@ -4944,7 +4927,6 @@ <sharedfeat name="release" value="MVS" /> <sharedfeat name="compatibility" value="MVS,AES" /> <part name="cart" interface="neo_cart"> - <!-- MVS VERSION --> <dataarea name="maincpu" width="16" endianness="big" size="0x300000"> <rom loadflag="load16_word_swap" name="087-epr.ep1" offset="0x000000" size="0x080000" crc="23e09bb8" sha1="79da99fa50a639fce9d1266699b5e53c9ac55642" /> <!-- M27C4002 --> @@ -5000,7 +4982,6 @@ <sharedfeat name="release" value="AES" /> <sharedfeat name="compatibility" value="MVS,AES" /> <part name="cart" interface="neo_cart"> - <!-- AES VERSION --> <dataarea name="maincpu" width="16" endianness="big" size="0x300000"> <rom loadflag="load16_word_swap" name="087-pg1.p1" offset="0x000000" size="0x100000" crc="282a336e" sha1="e062f1939d36a45f185b5dbd726cdd833dc7c28c" /> <!-- mask rom TC538200 --> @@ -5314,9 +5295,9 @@ <year>1997</year> <publisher>Hudson</publisher> <sharedfeat name="release" value="MVS" /> + <!-- MVS ONLY RELEASE --> <sharedfeat name="compatibility" value="MVS,AES" /> <part name="cart" interface="neo_cart"> - <!-- MVS ONLY RELEASE --> <dataarea name="maincpu" width="16" endianness="big" size="0x100000"> <rom loadflag="load16_word_swap" name="093-p1.p1" offset="0x000000" size="0x100000" crc="a1a71d0d" sha1="059284c84f61a825923d86d2f29c91baa2c439cd" /> <!-- TC538200 --> @@ -5419,7 +5400,6 @@ <sharedfeat name="release" value="MVS,AES" /> <sharedfeat name="compatibility" value="MVS,AES" /> <part name="cart" interface="neo_cart"> - <!-- MVS AND AES VERSION --> <dataarea name="maincpu" width="16" endianness="big" size="0x300000"> <rom loadflag="load16_word_swap" name="095-p1.p1" offset="0x000000" size="0x100000" crc="63b4d8ae" sha1="03aa9f6bab6aee685d1b57a52823797704eea845" /> <!-- TC538200 --> @@ -5470,7 +5450,6 @@ <sharedfeat name="release" value="MVS" /> <sharedfeat name="compatibility" value="MVS,AES" /> <part name="cart" interface="neo_cart"> - <!-- MVS VERSION --> <!-- This is a bug fixed revision applied over the original cart. The original P1 and P2 stayed in the cart and this --> <!-- 512k ROM was added to replace the first 512k of P1. --> <dataarea name="maincpu" width="16" endianness="big" size="0x300000"> @@ -5805,9 +5784,9 @@ <year>1995</year> <publisher>Taito (Visco license)</publisher> <sharedfeat name="release" value="MVS" /> + <!-- MVS ONLY RELEASE --> <sharedfeat name="compatibility" value="MVS,AES" /> <part name="cart" interface="neo_cart"> - <!-- MVS ONLY RELEASE --> <dataarea name="maincpu" width="16" endianness="big" size="0x100000"> <rom loadflag="load16_word_swap" name="202-p1.p1" offset="0x000000" size="0x080000" crc="2b61415b" sha1="0e3e4faf2fd6e63407425e1ac788003e75aeeb4f" /> <!-- TC534200 --> @@ -5938,9 +5917,9 @@ <year>1996</year> <publisher>Visco</publisher> <sharedfeat name="release" value="MVS" /> + <!-- MVS ONLY RELEASE --> <sharedfeat name="compatibility" value="MVS,AES" /> <part name="cart" interface="neo_cart"> - <!-- MVS ONLY RELEASE --> <dataarea name="maincpu" width="16" endianness="big" size="0x100000"> <rom loadflag="load16_word_swap" name="207-p1.p1" offset="0x000000" size="0x100000" crc="334ea51e" sha1="0a642f8565ec6e9587ed767bcf177f4677547162" /> <!-- TC538200 --> @@ -5977,9 +5956,9 @@ <year>1996</year> <publisher>Technos Japan</publisher> <sharedfeat name="release" value="MVS" /> + <!-- MVS ONLY RELEASE --> <sharedfeat name="compatibility" value="MVS,AES" /> <part name="cart" interface="neo_cart"> - <!-- MVS ONLY RELEASE --> <dataarea name="maincpu" width="16" endianness="big" size="0x200000"> <rom loadflag="load16_word_swap" name="208-p1.p1" offset="0x100000" size="0x100000" crc="127f3d32" sha1="18e77b79b1197a89371533ef9b1e4d682c44d875" /> <!-- TC5316200 --> @@ -6021,9 +6000,9 @@ <year>1995</year> <publisher>Visco</publisher> <sharedfeat name="release" value="MVS" /> + <!-- MVS ONLY RELEASE --> <sharedfeat name="compatibility" value="MVS,AES" /> <part name="cart" interface="neo_cart"> - <!-- MVS ONLY RELEASE --> <dataarea name="maincpu" width="16" endianness="big" size="0x200000"> <rom loadflag="load16_word_swap" name="209-p1.p1" offset="0x100000" size="0x100000" crc="2a019a79" sha1="422a639e74284fef2e53e1b49cf8803b0a7e80c6" /> <!-- mask rom TC5316200 --> @@ -6123,9 +6102,9 @@ <year>1996</year> <publisher>Visco</publisher> <sharedfeat name="release" value="MVS" /> + <!-- MVS ONLY RELEASE --> <sharedfeat name="compatibility" value="MVS,AES" /> <part name="cart" interface="neo_cart"> - <!-- MVS ONLY RELEASE --> <dataarea name="maincpu" width="16" endianness="big" size="0x200000"> <rom loadflag="load16_word_swap" name="213-p1.p1" offset="0x100000" size="0x100000" crc="e397d798" sha1="10f459111db4bab7aaa63ca47e83304a84300812" /> <!-- mask rom TC5316200 --> @@ -6168,7 +6147,6 @@ <sharedfeat name="release" value="MVS" /> <sharedfeat name="compatibility" value="MVS,AES" /> <part name="cart" interface="neo_cart"> - <!-- MVS VERSION --> <dataarea name="maincpu" width="16" endianness="big" size="0x300000"> <rom loadflag="load16_word_swap" name="214-p1.p1" offset="0x000000" size="0x100000" crc="52755d74" sha1="4232d627f1d2e6ea9fc8cf01571d77d4d5b8a1bb" /> <!-- TC538200 --> @@ -6491,9 +6469,9 @@ <year>1996</year> <publisher>Saurus</publisher> <sharedfeat name="release" value="MVS" /> + <!-- MVS ONLY RELEASE --> <sharedfeat name="compatibility" value="MVS,AES" /> <part name="cart" interface="neo_cart"> - <!-- MVS ONLY RELEASE --> <dataarea name="maincpu" width="16" endianness="big" size="0x200000"> <rom loadflag="load16_word_swap" name="219-p1.p1" offset="0x100000" size="0x100000" crc="6af0e574" sha1="c3f0fed0d942e48c99c80b1713f271c033ce0f4f" /> <!-- TC5316200 --> @@ -6643,7 +6621,6 @@ <sharedfeat name="release" value="MVS,AES" /> <sharedfeat name="compatibility" value="MVS,AES" /> <part name="cart" interface="neo_cart"> - <!-- MVS AND AES VERSION --> <dataarea name="maincpu" width="16" endianness="big" size="0x500000"> <rom loadflag="load16_word_swap" name="222-p1.p1" offset="0x000000" size="0x100000" crc="1a5cb56d" sha1="9a0a5a1c7c5d428829f22d3d17f7033d43a51b5b" /> <!-- TC538200 --> @@ -7092,9 +7069,9 @@ <year>1997</year> <publisher>Face</publisher> <sharedfeat name="release" value="MVS" /> + <!-- MVS ONLY RELEASE --> <sharedfeat name="compatibility" value="MVS,AES" /> <part name="cart" interface="neo_cart"> - <!-- MVS ONLY RELEASE --> <dataarea name="maincpu" width="16" endianness="big" size="0x100000"> <rom loadflag="load16_word_swap" name="231-p1.p1" offset="0x000000" size="0x080000" crc="61be1810" sha1="1ab0e11352ca05329c6e3f5657b60e4a227fcbfb" /> <!-- mask rom TC534200 --> @@ -7139,7 +7116,6 @@ <sharedfeat name="release" value="MVS" /> <sharedfeat name="compatibility" value="MVS,AES" /> <part name="cart" interface="neo_cart"> - <!-- MVS VERSION --> <dataarea name="maincpu" width="16" endianness="big" size="0x500000"> <rom loadflag="load16_word_swap" name="232-p1.p1" offset="0x000000" size="0x100000" crc="7db81ad9" sha1="8bc42be872fd497eb198ca13bf004852b88eb1dc" /> <!-- TC538200 --> @@ -7186,7 +7162,6 @@ <sharedfeat name="release" value="AES" /> <sharedfeat name="compatibility" value="MVS,AES" /> <part name="cart" interface="neo_cart"> - <!-- AES VERSION --> <dataarea name="maincpu" width="16" endianness="big" size="0x500000"> <rom loadflag="load16_word_swap" name="232-pg1.p1" offset="0x000000" size="0x100000" crc="5c2400b7" sha1="49e23f80c012c62146a1bb8f254a7597823de430" /> <!-- TC538200 --> @@ -7333,7 +7308,6 @@ <sharedfeat name="release" value="MVS" /> <sharedfeat name="compatibility" value="MVS,AES" /> <part name="cart" interface="neo_cart"> - <!-- MVS VERSION --> <dataarea name="maincpu" width="16" endianness="big" size="0x500000"> <rom loadflag="load16_word_swap" name="234-p1.p1" offset="0x000000" size="0x100000" crc="e123a5a3" sha1="a3ddabc00feeb54272b145246612ad4632b0e413" /> <!-- TC538200 --> @@ -7382,7 +7356,6 @@ <sharedfeat name="release" value="AES" /> <sharedfeat name="compatibility" value="MVS,AES" /> <part name="cart" interface="neo_cart"> - <!-- AES VERSION --> <dataarea name="maincpu" width="16" endianness="big" size="0x500000"> <rom loadflag="load16_word_swap" name="234-pg1.p1" offset="0x000000" size="0x100000" crc="cd01c06d" sha1="d66142571afe07c6191b52f319f1bc8bc8541c14" /> <!-- TC538200 --> @@ -7485,9 +7458,9 @@ <year>1997</year> <publisher>Taito (Visco license)</publisher> <sharedfeat name="release" value="MVS" /> + <!-- MVS ONLY RELEASE --> <sharedfeat name="compatibility" value="MVS,AES" /> <part name="cart" interface="neo_cart"> - <!-- MVS ONLY RELEASE --> <dataarea name="maincpu" width="16" endianness="big" size="0x100000"> <rom loadflag="load16_word_swap" name="235-p1.p1" offset="0x000000" size="0x080000" crc="afed5de2" sha1="a5d82c6dbe687505e8c8d7339908da45cd379a0b" /> </dataarea> @@ -7530,9 +7503,9 @@ <year>1997</year> <publisher>Video System Co.</publisher> <sharedfeat name="release" value="MVS" /> + <!-- MVS ONLY RELEASE --> <sharedfeat name="compatibility" value="MVS,AES" /> <part name="cart" interface="neo_cart"> - <!-- MVS ONLY RELEASE --> <dataarea name="maincpu" width="16" endianness="big" size="0x100000"> <rom loadflag="load16_word_swap" name="237-p1.p1" offset="0x000000" size="0x100000" crc="be96e44f" sha1="43679da8664fbb491103a1108040ddf94d59fc2b" /> <!-- TC538200 --> @@ -7569,9 +7542,9 @@ <year>1997</year> <publisher>Saurus</publisher> <sharedfeat name="release" value="MVS" /> + <!-- MVS ONLY RELEASE --> <sharedfeat name="compatibility" value="MVS,AES" /> <part name="cart" interface="neo_cart"> - <!-- MVS ONLY RELEASE --> <dataarea name="maincpu" width="16" endianness="big" size="0x500000"> <rom loadflag="load16_word_swap" name="238-p1.p1" offset="0x000000" size="0x100000" crc="5677456f" sha1="f76169fa5c90871d65e2a16fd1bb036c90533ac8" /> <rom loadflag="load16_word_swap" name="238-p2.sp2" offset="0x100000" size="0x400000" crc="5b4a09c5" sha1="de04036cba2da4bb2da73d902d1822b82b4f67a9" /> @@ -7617,9 +7590,9 @@ <year>1997</year> <publisher>Saurus</publisher> <sharedfeat name="release" value="MVS" /> + <!-- MVS ONLY RELEASE --> <sharedfeat name="compatibility" value="MVS,AES" /> <part name="cart" interface="neo_cart"> - <!-- MVS ONLY RELEASE --> <dataarea name="maincpu" width="16" endianness="big" size="0x500000"> <rom loadflag="load16_word_swap" name="238-pg1.p1" offset="0x000000" size="0x100000" crc="efedf8dc" sha1="f638df9bf7aa7d514ee2bccfc7f2adbf39ca83fc" /> <!-- mask rom TC538200 --> @@ -7731,7 +7704,6 @@ <sharedfeat name="release" value="MVS" /> <sharedfeat name="compatibility" value="MVS,AES" /> <part name="cart" interface="neo_cart"> - <!-- MVS VERSION --> <dataarea name="maincpu" width="16" endianness="big" size="0x500000"> <rom loadflag="load16_word_swap" name="240-p1.p1" offset="0x000000" size="0x100000" crc="80e41205" sha1="8f83eb8ff54be4ec40f8a0dd2cbe56c54908d00a" /> <!-- TC538200 --> @@ -7780,7 +7752,6 @@ <sharedfeat name="release" value="AES" /> <sharedfeat name="compatibility" value="MVS,AES" /> <part name="cart" interface="neo_cart"> - <!-- AES VERSION --> <dataarea name="maincpu" width="16" endianness="big" size="0x500000"> <rom loadflag="load16_word_swap" name="240-pg1.p1" offset="0x000000" size="0x100000" crc="b6969780" sha1="e3373d18e0f0724d69efb8024a27cca121f1b5b2" /> <!-- TC538200 --> @@ -7937,7 +7908,6 @@ <sharedfeat name="compatibility" value="MVS,AES" /> <part name="cart" interface="neo_cart"> <!-- encrypted code + protection --> - <!-- MVS VERSION --> <feature name="slot" value="rom_kof98" /> <dataarea name="maincpu" width="16" endianness="big" size="0x600000"> <rom loadflag="load16_word_swap" name="242-p1.p1" offset="0x000000" size="0x200000" crc="8893df89" sha1="0452828785110601c65f667209fc2d2926cd3751" /> @@ -8105,7 +8075,6 @@ <sharedfeat name="release" value="AES" /> <sharedfeat name="compatibility" value="MVS,AES" /> <part name="cart" interface="neo_cart"> - <!-- AES VERSION --> <dataarea name="maincpu" width="16" endianness="big" size="0x500000"> <rom loadflag="load16_word_swap" name="242-pn1.p1" offset="0x000000" size="0x100000" crc="61ac868a" sha1="26577264aa72d6af272952a876fcd3775f53e3fa" /> <!-- TC538200 --> @@ -8166,7 +8135,6 @@ <sharedfeat name="release" value="MVS,AES" /> <sharedfeat name="compatibility" value="MVS,AES" /> <part name="cart" interface="neo_cart"> - <!-- MVS AND AES VERSION --> <!-- later revision --> <dataarea name="maincpu" width="16" endianness="big" size="0x500000"> <rom loadflag="load16_word_swap" name="243-pg1.p1" offset="0x000000" size="0x100000" crc="af1e6554" sha1="bd8526f60c2472937728a5d933fbd19d899f2cba" /> @@ -8262,9 +8230,9 @@ <year>1998</year> <publisher>Visco</publisher> <sharedfeat name="release" value="MVS" /> + <!-- MVS ONLY RELEASE --> <sharedfeat name="compatibility" value="MVS,AES" /> <part name="cart" interface="neo_cart"> - <!-- MVS ONLY RELEASE --> <dataarea name="maincpu" width="16" endianness="big" size="0x200000"> <rom loadflag="load16_word_swap" name="245-p1.p1" offset="0x100000" size="0x100000" crc="c828876d" sha1="1dcba850e5cf8219d0945612cfded6d20ca8682a" /> <!-- mask rom TC5316200 --> @@ -8366,9 +8334,9 @@ <year>1999</year> <publisher>Visco</publisher> <sharedfeat name="release" value="MVS" /> + <!-- MVS ONLY RELEASE --> <sharedfeat name="compatibility" value="MVS,AES" /> <part name="cart" interface="neo_cart"> - <!-- MVS ONLY RELEASE --> <dataarea name="maincpu" width="16" endianness="big" size="0x100000"> <rom loadflag="load16_word_swap" name="247-p1.p1" offset="0x000000" size="0x100000" crc="95779094" sha1="a985e033bc6f137fa65855d3eed245d66d5b244a" /> <!-- mask rom TC538200 --> @@ -8405,9 +8373,9 @@ <year>1999</year> <publisher>Taito (SNK license)</publisher> <sharedfeat name="release" value="MVS" /> + <!-- MVS ONLY RELEASE --> <sharedfeat name="compatibility" value="MVS,AES" /> <part name="cart" interface="neo_cart"> - <!-- MVS ONLY RELEASE --> <dataarea name="maincpu" width="16" endianness="big" size="0x100000"> <rom loadflag="load16_word_swap" name="248-p1.p1" offset="0x000000" size="0x100000" crc="9d6c0754" sha1="95c70c2d51fc4de01e768e03cc800a850aaad5dc" /> <!-- TC538200 --> @@ -8506,9 +8474,9 @@ <year>1999</year> <publisher>Visco</publisher> <sharedfeat name="release" value="MVS" /> + <!-- MVS ONLY RELEASE --> <sharedfeat name="compatibility" value="MVS,AES" /> <part name="cart" interface="neo_cart"> - <!-- MVS ONLY RELEASE --> <dataarea name="maincpu" width="16" endianness="big" size="0x200000"> <rom loadflag="load16_word_swap" name="249-p1.p1" offset="0x100000" size="0x100000" crc="c9386118" sha1="5554662c7bc8605889cac4a67fee05bbb4eb786f" /> <!-- TC5316200 --> @@ -8611,7 +8579,6 @@ <sharedfeat name="compatibility" value="MVS,AES" /> <part name="cart" interface="neo_cart"> <!-- Original Version - Encrypted Code & GFX --> - <!-- MVS VERSION --> <feature name="slot" value="rom_sma_kof99" /> <dataarea name="maincpu" width="16" endianness="big" size="0x900000"> <rom loadflag="load16_word_swap" name="ka.neo-sma" offset="0x0c0000" size="0x040000" crc="7766d09e" sha1="4e0a49d1ad669a62676cb30f527c6590cde80194" /> @@ -8669,7 +8636,6 @@ <sharedfeat name="compatibility" value="MVS,AES" /> <part name="cart" interface="neo_cart"> <!-- Original Version - Encrypted Code & GFX --> - <!-- AES VERSION --> <feature name="slot" value="rom_sma_kof99" /> <dataarea name="maincpu" width="16" endianness="big" size="0x900000"> <rom loadflag="load16_word_swap" name="kc.neo-sma" offset="0x0c0000" size="0x040000" crc="6c9d0647" sha1="2a0ce62ca6c18007e8fbe1b60475c7874ab79389" /> @@ -8888,10 +8854,10 @@ <year>1999</year> <publisher>Visco</publisher> <sharedfeat name="release" value="MVS" /> + <!-- MVS ONLY RELEASE --> <sharedfeat name="compatibility" value="MVS,AES" /> <part name="cart" interface="neo_cart"> <!-- Original Version - Encrypted GFX --> - <!-- MVS ONLY RELEASE --> <feature name="slot" value="rom_cmc_ganryu" /> <dataarea name="maincpu" width="16" endianness="big" size="0x200000"> <rom loadflag="load16_word_swap" name="252-p1.p1" offset="0x100000" size="0x100000" crc="4b8ac4fb" sha1="93d90271bff281862b03beba3809cf95a47a1e44" /> @@ -9091,10 +9057,10 @@ <year>1999</year> <publisher>Psikyo</publisher> <sharedfeat name="release" value="MVS" /> + <!-- MVS ONLY RELEASE --> <sharedfeat name="compatibility" value="MVS,AES" /> <part name="cart" interface="neo_cart"> <!-- Original Version, Encrypted GFX Roms --> - <!-- MVS ONLY RELEASE --> <feature name="slot" value="rom_cmc_s1945p" /> <dataarea name="maincpu" width="16" endianness="big" size="0x500000"> <rom loadflag="load16_word_swap" name="254-p1.p1" offset="0x000000" size="0x100000" crc="ff8efcff" sha1="dcaeaca573385c172ecc43ee6bee355359091893" /> @@ -9137,10 +9103,10 @@ <year>1999</year> <publisher>Yumekobo</publisher> <sharedfeat name="release" value="MVS" /> + <!-- MVS ONLY RELEASE --> <sharedfeat name="compatibility" value="MVS,AES" /> <part name="cart" interface="neo_cart"> <!-- Original Version, Encrypted GFX --> - <!-- MVS ONLY RELEASE --> <feature name="slot" value="r_cmc_preisle2" /> <dataarea name="maincpu" width="16" endianness="big" size="0x500000"> <rom loadflag="load16_word_swap" name="255-p1.p1" offset="0x000000" size="0x100000" crc="dfa3c0f3" sha1="793c6a46f3a794536dc0327a3f3fad20e25ab661" /> @@ -9188,7 +9154,6 @@ <part name="cart" interface="neo_cart"> <!-- Original Version - Encrypted Code & GFX --> <!-- revision 2000.4.1 --> - <!-- MVS VERSION --> <feature name="slot" value="rom_sma_mslug3" /> <dataarea name="maincpu" width="16" endianness="big" size="0x900000"> <rom loadflag="load16_word_swap" name="neo-sma" offset="0x0c0000" size="0x040000" crc="9cd55736" sha1="d6efb2b313127c2911d47d9324626b3f1e7c6ccb" /> @@ -9248,7 +9213,6 @@ <part name="cart" interface="neo_cart"> <!-- Original Version - Encrypted GFX --> <!-- revision 2000.3.17 --> - <!-- AES VERSION --> <feature name="slot" value="rom_cmc_mslug3h" /> <dataarea name="maincpu" width="16" endianness="big" size="0x500000"> <rom loadflag="load16_word_swap" name="256-ph1.p1" offset="0x000000" size="0x100000" crc="9c42ca85" sha1="7a8f77a89867b889295ae9b9dfd4ba28f02d234d" /> @@ -9313,7 +9277,6 @@ <sharedfeat name="compatibility" value="MVS,AES" /> <part name="cart" interface="neo_cart"> <!-- Original Version, Encrypted Code + Sound + GFX Roms --> - <!-- MVS AND AES VERSION --> <feature name="slot" value="rom_sma_kof2000" /> <dataarea name="maincpu" width="16" endianness="big" size="0x900000"> <rom loadflag="load16_word_swap" name="neo-sma" offset="0x0c0000" size="0x040000" crc="71c6e6bb" sha1="1bd29ded4c6b29780db8e8b772c452189699ca89" /> @@ -9434,10 +9397,10 @@ <year>2000</year> <publisher>Visco</publisher> <sharedfeat name="release" value="MVS" /> + <!-- MVS ONLY RELEASE --> <sharedfeat name="compatibility" value="MVS,AES" /> <part name="cart" interface="neo_cart"> <!-- Original Version - Encrypted GFX --> - <!-- MVS ONLY RELEASE --> <feature name="slot" value="r_cmc_bangbead" /> <dataarea name="maincpu" width="16" endianness="big" size="0x200000"> <rom loadflag="load16_word_swap" name="259-p1.p1" offset="0x100000" size="0x100000" crc="88a37f8b" sha1="566db84850fad5e8fe822e8bba910a33e083b550" /> @@ -9474,10 +9437,10 @@ <year>2000</year> <publisher>Eleven / Gavaking</publisher> <sharedfeat name="release" value="MVS" /> + <!-- MVS ONLY RELEASE --> <sharedfeat name="compatibility" value="MVS,AES" /> <part name="cart" interface="neo_cart"> <!-- Original Version - Encrypted GFX --> - <!-- MVS ONLY RELEASE --> <feature name="slot" value="rom_cmc_nitd" /> <dataarea name="maincpu" width="16" endianness="big" size="0x100000"> <rom loadflag="load16_word_swap" name="260-p1.p1" offset="0x000000" size="0x080000" crc="61361082" sha1="441f3f41c1aa752c0e0a9a0b1d92711d9e636b85" /> @@ -9569,7 +9532,6 @@ <sharedfeat name="release" value="MVS" /> <sharedfeat name="compatibility" value="MVS" /> <part name="cart" interface="neo_cart"> - <!-- MVS VERSION --> <feature name="slot" value="r_cmc_kof2001" /> <dataarea name="maincpu" width="16" endianness="big" size="0x500000"> <rom loadflag="load16_word_swap" name="262-p1-08-e0.p1" offset="0x000000" size="0x100000" crc="9381750d" sha1="dcfecd69e563ff52fe07d23c5372d0f748b07819" /> @@ -9626,7 +9588,6 @@ <sharedfeat name="release" value="AES" /> <sharedfeat name="compatibility" value="MVS,AES" /> <part name="cart" interface="neo_cart"> - <!-- AES VERSION --> <feature name="slot" value="r_cmc_kof2001" /> <dataarea name="maincpu" width="16" endianness="big" size="0x500000"> <rom loadflag="load16_word_swap" name="262-pg1.p1" offset="0x000000" size="0x100000" crc="2af7e741" sha1="e41282d73ed6d521da056f1a16573bb61bfa3826" /> @@ -9691,7 +9652,6 @@ <sharedfeat name="compatibility" value="MVS,AES" /> <part name="cart" interface="neo_cart"> <!-- Original Version - Encrypted GFX --> - <!-- MVS VERSION --> <feature name="slot" value="r_pc2_mslug4" /> <!-- These carts were manufactured by Mega Enterprise, not SNK. --> <dataarea name="maincpu" width="16" endianness="big" size="0x500000"> @@ -9742,7 +9702,6 @@ <sharedfeat name="compatibility" value="MVS,AES" /> <part name="cart" interface="neo_cart"> <!-- Original Version - Encrypted GFX --> - <!-- AES VERSION --> <feature name="slot" value="r_pc2_mslug4" /> <dataarea name="maincpu" width="16" endianness="big" size="0x500000"> <rom loadflag="load16_word_swap" name="263-ph1.p1" offset="0x000000" size="0x100000" crc="c67f5c8d" sha1="12af74964843f103520d9f0825069ea2f67eeb2f" /> @@ -9801,7 +9760,6 @@ <sharedfeat name="compatibility" value="MVS,AES" /> <part name="cart" interface="neo_cart"> <!-- Encrypted Set --> - <!-- MVS VERSION --> <feature name="slot" value="r_pc2_rotd" /> <dataarea name="maincpu" width="16" endianness="big" size="0x800000"> <rom loadflag="load16_word_swap" name="264-p1.p1" offset="0x000000" size="0x800000" crc="b8cc969d" sha1="4f2205b4bdd32dd1522106ef4df10ac0eb1b852d" /> @@ -9861,7 +9819,6 @@ <sharedfeat name="compatibility" value="MVS,AES" /> <part name="cart" interface="neo_cart"> <!-- Encrypted Set --> - <!-- MVS AND AES VERSION --> <feature name="slot" value="r_k2_kof2002" /> <dataarea name="maincpu" width="16" endianness="big" size="0x500000"> <rom loadflag="load16_word_swap" name="265-p1.p1" offset="0x000000" size="0x100000" crc="9ede7323" sha1="ad9d45498777fda9fa58e75781f48e09aee705a6" /> @@ -9923,7 +9880,6 @@ <sharedfeat name="compatibility" value="MVS,AES" /> <part name="cart" interface="neo_cart"> <!-- Encrypted Set --> - <!-- MVS AND AES VERSION --> <feature name="slot" value="r_k2_matrim" /> <dataarea name="maincpu" width="16" endianness="big" size="0x500000"> <rom loadflag="load16_word_swap" name="266-p1.p1" offset="0x000000" size="0x100000" crc="5d4c2dc7" sha1="8d723b0d28ec344eef26009b361a2b97d300dd51" /> @@ -9980,10 +9936,10 @@ <year>2003</year> <publisher>Aiky / Taito</publisher> <sharedfeat name="release" value="MVS" /> + <!-- MVS ONLY RELEASE --> <sharedfeat name="compatibility" value="MVS,AES" /> <part name="cart" interface="neo_cart"> <!-- Encrypted Set --> - <!-- MVS ONLY RELEASE --> <feature name="slot" value="r_pc2_pnyaa" /> <dataarea name="maincpu" width="16" endianness="big" size="0x100000"> <rom loadflag="load16_word_swap" name="267-p1.p1" offset="0x000000" size="0x100000" crc="112fe2c0" sha1="01420e051f0bdbd4f68ce306a3738161b96f8ba8" /> @@ -10028,7 +9984,6 @@ <sharedfeat name="compatibility" value="MVS,AES" /> <part name="cart" interface="neo_cart"> <!-- Encrypted Set --> - <!-- MVS VERSION --> <feature name="slot" value="r_pv_mslug5" /> <dataarea name="maincpu" width="16" endianness="big" size="0x800000"> <rom loadflag="load32_word_swap" name="268-p1cr.p1" offset="0x000000" size="0x400000" crc="d0466792" sha1="880819933d997fab398f91061e9dbccb959ae8a1" /> @@ -10142,7 +10097,6 @@ <sharedfeat name="compatibility" value="MVS,AES" /> <part name="cart" interface="neo_cart"> <!-- Encrypted Set --> - <!-- MVS AND AES VERSION --> <feature name="slot" value="r_pv_svc" /> <dataarea name="maincpu" width="16" endianness="big" size="0x800000"> <rom loadflag="load32_word_swap" name="269-p1.p1" offset="0x000000" size="0x400000" crc="38e2005e" sha1="1b902905916a30969282f1399a756e32ff069097" /> @@ -10205,7 +10159,6 @@ <sharedfeat name="compatibility" value="MVS" /> <part name="cart" interface="neo_cart"> <!-- Encrypted Set --> - <!-- MVS VERSION --> <feature name="slot" value="r_k2_samsh5" /> <dataarea name="maincpu" width="16" endianness="big" size="0x800000"> <rom loadflag="load16_word_swap" name="270-p1.p1" offset="0x000000" size="0x400000" crc="4a2a09e6" sha1="2644de02cdab8ccc605488a7c76b8c9cd1d5bcb9" /> @@ -10259,7 +10212,6 @@ <sharedfeat name="compatibility" value="MVS,AES" /> <part name="cart" interface="neo_cart"> <!-- Encrypted Set, Alternate Set --> - <!-- AES VERSION --> <feature name="slot" value="r_k2_samsh5" /> <dataarea name="maincpu" width="16" endianness="big" size="0x800000"> <rom loadflag="load16_word_swap" name="270-p1c.p1" offset="0x000000" size="0x400000" crc="bf956089" sha1="c538289069bf338b9fa7ecc5c9143763dbb776a8" /> @@ -10321,7 +10273,6 @@ <sharedfeat name="compatibility" value="MVS,AES" /> <part name="cart" interface="neo_cart"> <!-- Encrypted Code + Sound + GFX Roms --> - <!-- MVS VERSION --> <feature name="slot" value="r_pv_kf2k3" /> <dataarea name="maincpu" width="16" endianness="big" size="0x900000"> <rom loadflag="load32_word_swap" name="271-p1c.p1" offset="0x000000" size="0x400000" crc="530ecc14" sha1="812cf7e9902af3f5e9e330b7c05c2171b139ad2b" /> @@ -10377,7 +10328,6 @@ <sharedfeat name="compatibility" value="MVS,AES" /> <part name="cart" interface="neo_cart"> <!-- Encrypted Code + Sound + GFX Roms --> - <!-- AES VERSION --> <feature name="slot" value="r_pv_kf2k3h" /> <!-- All chip labels for this set are correct --> <dataarea name="maincpu" width="16" endianness="big" size="0x900000"> @@ -10441,7 +10391,6 @@ <sharedfeat name="compatibility" value="MVS,AES" /> <part name="cart" interface="neo_cart"> <!-- Encrypted Set --> - <!-- MVS VERSION --> <feature name="slot" value="r_k2_sams5s" /> <dataarea name="maincpu" width="16" endianness="big" size="0x800000"> <!-- Uncensored --> @@ -10482,8 +10431,7 @@ <sharedfeat name="release" value="AES" /> <sharedfeat name="compatibility" value="MVS,AES" /> <part name="cart" interface="neo_cart"> - <!-- Encrypted Set --> - <!-- AES VERSION, 2nd bugfix release --> + <!-- Encrypted Set, 2nd bugfix release --> <feature name="slot" value="r_k2_sams5s" /> <dataarea name="maincpu" width="16" endianness="big" size="0x800000"> <!-- Less censored --> @@ -10526,7 +10474,6 @@ <sharedfeat name="compatibility" value="MVS,AES" /> <part name="cart" interface="neo_cart"> <!-- Encrypted Set --> - <!-- AES VERSION --> <feature name="slot" value="r_k2_sams5s" /> <dataarea name="maincpu" width="16" endianness="big" size="0x800000"> <!-- Censored --> diff --git a/scripts/genie.lua b/scripts/genie.lua index e991bb5ed38..0a7c79d5825 100644 --- a/scripts/genie.lua +++ b/scripts/genie.lua @@ -1059,6 +1059,7 @@ configuration { "asmjs" } buildoptions { "-std=gnu89", "-Wno-implicit-function-declaration", + "-s USE_SDL_TTF=2", } buildoptions_cpp { "-x c++", diff --git a/scripts/src/bus.lua b/scripts/src/bus.lua index 1379c572fa8..e4451462806 100644 --- a/scripts/src/bus.lua +++ b/scripts/src/bus.lua @@ -2587,3 +2587,41 @@ if (BUSES["NEWBRAIN"]~=null) then MAME_DIR .. "src/devices/bus/newbrain/fdc.h", } end + +--------------------------------------------------- +-- +--@src/devices/bus/svi3x8/expander/expander.h,BUSES["SVI_EXPANDER"] = true +--------------------------------------------------- + +if (BUSES["SVI_EXPANDER"]~=null) then + files { + MAME_DIR .. "src/devices/bus/svi3x8/expander/expander.cpp", + MAME_DIR .. "src/devices/bus/svi3x8/expander/expander.h", + MAME_DIR .. "src/devices/bus/svi3x8/expander/modules.cpp", + MAME_DIR .. "src/devices/bus/svi3x8/expander/modules.h", + MAME_DIR .. "src/devices/bus/svi3x8/expander/sv601.cpp", + MAME_DIR .. "src/devices/bus/svi3x8/expander/sv601.h", + } +end + +--------------------------------------------------- +-- +--@src/devices/bus/svi3x8/slot/slot.h,BUSES["SVI_SLOT"] = true +--------------------------------------------------- + +if (BUSES["SVI_SLOT"]~=null) then + files { + MAME_DIR .. "src/devices/bus/svi3x8/slot/slot.cpp", + MAME_DIR .. "src/devices/bus/svi3x8/slot/slot.h", + MAME_DIR .. "src/devices/bus/svi3x8/slot/cards.cpp", + MAME_DIR .. "src/devices/bus/svi3x8/slot/cards.h", + MAME_DIR .. "src/devices/bus/svi3x8/slot/sv801.cpp", + MAME_DIR .. "src/devices/bus/svi3x8/slot/sv801.h", + MAME_DIR .. "src/devices/bus/svi3x8/slot/sv803.cpp", + MAME_DIR .. "src/devices/bus/svi3x8/slot/sv803.h", + MAME_DIR .. "src/devices/bus/svi3x8/slot/sv806.cpp", + MAME_DIR .. "src/devices/bus/svi3x8/slot/sv806.h", + MAME_DIR .. "src/devices/bus/svi3x8/slot/sv807.cpp", + MAME_DIR .. "src/devices/bus/svi3x8/slot/sv807.h", + } +end diff --git a/scripts/src/main.lua b/scripts/src/main.lua index c9c99a354c3..18a5b28210f 100644 --- a/scripts/src/main.lua +++ b/scripts/src/main.lua @@ -109,6 +109,7 @@ end local emccopts = "" emccopts = emccopts .. " -O3" emccopts = emccopts .. " -s USE_SDL=2" + emccopts = emccopts .. " -s USE_SDL_TTF=2" emccopts = emccopts .. " --memory-init-file 0" emccopts = emccopts .. " -s ALLOW_MEMORY_GROWTH=0" emccopts = emccopts .. " -s TOTAL_MEMORY=268435456" diff --git a/scripts/target/mame/mess.lua b/scripts/target/mame/mess.lua index cef8524680f..5687a044a41 100644 --- a/scripts/target/mame/mess.lua +++ b/scripts/target/mame/mess.lua @@ -652,6 +652,8 @@ BUSES["SMS_EXP"] = true BUSES["SNES"] = true BUSES["SNES_CTRL"] = true BUSES["SPC1000"] = true +BUSES["SVI_EXPANDER"] = true +BUSES["SVI_SLOT"] = true BUSES["TI99PEB"] = true BUSES["TI99X"] = true BUSES["TIKI100"] = true diff --git a/src/devices/bus/gba/gba_slot.cpp b/src/devices/bus/gba/gba_slot.cpp index 10c5d45a0a8..737ff5fa6ed 100644 --- a/src/devices/bus/gba/gba_slot.cpp +++ b/src/devices/bus/gba/gba_slot.cpp @@ -295,17 +295,17 @@ int gba_cart_slot_device::get_cart_type(UINT8 *ROM, UINT32 len) // first detect nvram type based on strings inside the file for (int i = 0; i < len; i++) { - if (!memcmp(&ROM[i], "EEPROM_V", 8)) + if ((i<len-8) && !memcmp(&ROM[i], "EEPROM_V", 8)) chip |= GBA_CHIP_EEPROM; // should be either GBA_CHIP_EEPROM_4K or GBA_CHIP_EEPROM_64K, but it is not yet possible to automatically detect which one - else if ((!memcmp(&ROM[i], "SRAM_V", 6)) || (!memcmp(&ROM[i], "SRAM_F_V", 8))) // || (!memcmp(&data[i], "ADVANCEWARS", 11))) //advance wars 1 & 2 has SRAM, but no "SRAM_" string can be found inside the ROM space + else if (((i<len-6) && !memcmp(&ROM[i], "SRAM_V", 6)) || ((i<len-8) && !memcmp(&ROM[i], "SRAM_F_V", 8))) // || ((i<len-11) && !memcmp(&data[i], "ADVANCEWARS", 11))) //advance wars 1 & 2 has SRAM, but no "SRAM_" string can be found inside the ROM space chip |= GBA_CHIP_SRAM; - else if (!memcmp(&ROM[i], "FLASH1M_V", 9)) + else if ((i<len-9) && !memcmp(&ROM[i], "FLASH1M_V", 9)) chip |= GBA_CHIP_FLASH_1M; - else if (!memcmp(&ROM[i], "FLASH512_V", 10)) + else if ((i<len-10) && !memcmp(&ROM[i], "FLASH512_V", 10)) chip |= GBA_CHIP_FLASH_512; - else if (!memcmp(&ROM[i], "FLASH_V", 7)) + else if ((i<len-7) && !memcmp(&ROM[i], "FLASH_V", 7)) chip |= GBA_CHIP_FLASH; - else if (!memcmp(&ROM[i], "SIIRTC_V", 8)) + else if ((i<len-8) && !memcmp(&ROM[i], "SIIRTC_V", 8)) chip |= GBA_CHIP_RTC; } osd_printf_info("GBA: Detected (ROM) %s\n", gba_chip_string(chip).c_str()); diff --git a/src/devices/bus/isa/trident.cpp b/src/devices/bus/isa/trident.cpp index 4f47bdd7212..85b83d968cc 100644 --- a/src/devices/bus/isa/trident.cpp +++ b/src/devices/bus/isa/trident.cpp @@ -191,6 +191,7 @@ void trident_vga_device::device_reset() // Windows 3.1 TGUI9440AGi drivers do not set the pointer colour registers? tri.cursor_bg = 0x00000000; tri.cursor_fg = 0xffffffff; + tri.pixel_depth = 0x10; //disable 8bpp mode by default } UINT32 trident_vga_device::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) @@ -443,7 +444,6 @@ void trident_vga_device::trident_seq_reg_write(UINT8 index, UINT8 data) } else { - if(LOG) logerror("Trident SR%02X: %s mode write %02x\n",index,tri.new_mode ? "new" : "old",data); switch(index) { case 0x0b: @@ -490,6 +490,7 @@ void trident_vga_device::trident_seq_reg_write(UINT8 index, UINT8 data) if(!LOG) logerror("Trident: Sequencer index %02x read\n",index); } } + if(LOG) logerror("Trident SR%02X: %s mode write %02x\n",index,tri.new_mode ? "new" : "old",data); } UINT8 trident_vga_device::trident_crtc_reg_read(UINT8 index) @@ -605,7 +606,6 @@ void trident_vga_device::trident_crtc_reg_write(UINT8 index, UINT8 data) } else { - if(LOG) logerror("Trident CR%02X: write %02x\n",index,data); switch(index) { case 0x1e: // Module Testing Register @@ -704,6 +704,7 @@ void trident_vga_device::trident_crtc_reg_write(UINT8 index, UINT8 data) break; } } + if(LOG) logerror("Trident CR%02X: write %02x\n",index,data); } UINT8 trident_vga_device::trident_gc_reg_read(UINT8 index) @@ -764,6 +765,7 @@ void trident_vga_device::trident_gc_reg_write(UINT8 index, UINT8 data) break; } } + if(LOG) logerror("Trident GC%02X: write %02x\n",index,data); } READ8_MEMBER(trident_vga_device::port_03c0_r) diff --git a/src/devices/bus/svi3x8/expander/expander.cpp b/src/devices/bus/svi3x8/expander/expander.cpp new file mode 100644 index 00000000000..faddf3f24ac --- /dev/null +++ b/src/devices/bus/svi3x8/expander/expander.cpp @@ -0,0 +1,151 @@ +// license:GPL-2.0+ +// copyright-holders:Dirk Best +/*************************************************************************** + + SVI 318/328 Expansion Slot + + 50-pin slot + +***************************************************************************/ + +#include "expander.h" + + +//************************************************************************** +// DEVICE DEFINITIONS +//************************************************************************** + +const device_type SVI_EXPANDER = &device_creator<svi_expander_device>; + + +//************************************************************************** +// SLOT DEVICE +//************************************************************************** + +//------------------------------------------------- +// svi_expander_device - constructor +//------------------------------------------------- + +svi_expander_device::svi_expander_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : + device_t(mconfig, SVI_EXPANDER, "SVI 318/328 Expander Bus", tag, owner, clock, "svi_expander", __FILE__), + device_slot_interface(mconfig, *this), + m_module(nullptr), + m_int_handler(*this), + m_romdis_handler(*this), + m_ramdis_handler(*this), + m_ctrl1_handler(*this), + m_ctrl2_handler(*this) +{ +} + +//------------------------------------------------- +// svi_expander_device - destructor +//------------------------------------------------- + +svi_expander_device::~svi_expander_device() +{ +} + +//------------------------------------------------- +// device_start - device-specific startup +//------------------------------------------------- + +void svi_expander_device::device_start() +{ + // get inserted module + m_module = dynamic_cast<device_svi_expander_interface *>(get_card_device()); + + // resolve callbacks + m_int_handler.resolve_safe(); + m_romdis_handler.resolve_safe(); + m_ramdis_handler.resolve_safe(); + m_ctrl1_handler.resolve_safe(); + m_ctrl2_handler.resolve_safe(); +} + +//------------------------------------------------- +// device_reset - device-specific reset +//------------------------------------------------- + +void svi_expander_device::device_reset() +{ +} + +//------------------------------------------------- +// host to module interface +//------------------------------------------------- + +READ8_MEMBER( svi_expander_device::mreq_r ) +{ + if (m_module) + return m_module->mreq_r(space, offset); + + return 0xff; +} + +WRITE8_MEMBER( svi_expander_device::mreq_w ) +{ + if (m_module) + m_module->mreq_w(space, offset, data); +} + +READ8_MEMBER( svi_expander_device::iorq_r ) +{ + if (m_module) + return m_module->iorq_r(space, offset); + + return 0xff; +} + +WRITE8_MEMBER( svi_expander_device::iorq_w ) +{ + if (m_module) + m_module->iorq_w(space, offset, data); +} + +WRITE_LINE_MEMBER( svi_expander_device::bk21_w ) +{ + if (m_module) + m_module->bk21_w(state); +} + +WRITE_LINE_MEMBER( svi_expander_device::bk22_w ) +{ + if (m_module) + m_module->bk22_w(state); +} + +WRITE_LINE_MEMBER( svi_expander_device::bk31_w ) +{ + if (m_module) + m_module->bk31_w(state); +} + +WRITE_LINE_MEMBER( svi_expander_device::bk32_w ) +{ + if (m_module) + m_module->bk32_w(state); +} + + +//************************************************************************** +// CARTRIDGE INTERFACE +//************************************************************************** + +//------------------------------------------------- +// device_svi_expander_interface - constructor +//------------------------------------------------- + +device_svi_expander_interface::device_svi_expander_interface(const machine_config &mconfig, device_t &device) : + device_slot_card_interface(mconfig, device) +{ + m_expander = dynamic_cast<svi_expander_device *>(device.owner()); +} + +//------------------------------------------------- +// ~device_expansion_interface - destructor +//------------------------------------------------- + +device_svi_expander_interface::~device_svi_expander_interface() +{ +} diff --git a/src/devices/bus/svi3x8/expander/expander.h b/src/devices/bus/svi3x8/expander/expander.h new file mode 100644 index 00000000000..a2bed1f609b --- /dev/null +++ b/src/devices/bus/svi3x8/expander/expander.h @@ -0,0 +1,162 @@ +// license:GPL-2.0+ +// copyright-holders:Dirk Best +/*************************************************************************** + + SVI 318/328 Expander Slot + + 50-pin slot + + 1 +5V 2 /CNTRL2 + 3 +12V 4 -12V + 5 /CNTRL1 6 /WAIT + 7 /RST 8 CPUCLK + 9 A15 10 A14 + 11 A13 12 A12 + 13 A11 14 A10 + 15 A9 16 A8 + 17 A7 18 A6 + 19 A5 20 A4 + 21 A3 22 A2 + 23 A1 24 A0 + 25 /RFSH 26 /EXCSR + 27 /M1 28 /EXCSW + 29 /WR 30 /MREQ + 31 /IORQ 32 /RD + 33 D0 34 D1 + 35 D2 36 D3 + 37 D4 38 D5 + 39 D6 40 D7 + 41 CSOUND 42 /INT + 43 /RAMDIS 44 /ROMDIS + 45 /BK32 46 /BK31 + 47 /BK22 48 /BK21 + 49 GND 50 GND + +***************************************************************************/ + +#pragma once + +#ifndef __SVI3X8_EXPANDER_H__ +#define __SVI3X8_EXPANDER_H__ + +#include "emu.h" + + +//************************************************************************** +// INTERFACE CONFIGURATION MACROS +//************************************************************************** + +#define MCFG_SVI_EXPANDER_BUS_ADD(_tag) \ + MCFG_DEVICE_ADD(_tag, SVI_EXPANDER, 0) \ + MCFG_DEVICE_SLOT_INTERFACE(svi_expander_modules, NULL, false) \ + +#define MCFG_SVI_EXPANDER_INT_HANDLER(_devcb) \ + devcb = &svi_expander_device::set_int_handler(*device, DEVCB_##_devcb); + +#define MCFG_SVI_EXPANDER_ROMDIS_HANDLER(_devcb) \ + devcb = &svi_expander_device::set_romdis_handler(*device, DEVCB_##_devcb); + +#define MCFG_SVI_EXPANDER_RAMDIS_HANDLER(_devcb) \ + devcb = &svi_expander_device::set_ramdis_handler(*device, DEVCB_##_devcb); + +#define MCFG_SVI_EXPANDER_CTRL1_HANDLER(_devcb) \ + devcb = &svi_expander_device::set_ctrl1_handler(*device, DEVCB_##_devcb); + +#define MCFG_SVI_EXPANDER_CTRL2_HANDLER(_devcb) \ + devcb = &svi_expander_device::set_ctrl2_handler(*device, DEVCB_##_devcb); + + +//************************************************************************** +// TYPE DEFINITIONS +//************************************************************************** + +class device_svi_expander_interface; + +// ======================> svi_expander_device + +class svi_expander_device : public device_t, public device_slot_interface +{ +public: + // construction/destruction + svi_expander_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + virtual ~svi_expander_device(); + + // callbacks + template<class _Object> static devcb_base &set_int_handler(device_t &device, _Object object) + { return downcast<svi_expander_device &>(device).m_int_handler.set_callback(object); } + + template<class _Object> static devcb_base &set_romdis_handler(device_t &device, _Object object) + { return downcast<svi_expander_device &>(device).m_romdis_handler.set_callback(object); } + + template<class _Object> static devcb_base &set_ramdis_handler(device_t &device, _Object object) + { return downcast<svi_expander_device &>(device).m_ramdis_handler.set_callback(object); } + + template<class _Object> static devcb_base &set_ctrl1_handler(device_t &device, _Object object) + { return downcast<svi_expander_device &>(device).m_ctrl1_handler.set_callback(object); } + + template<class _Object> static devcb_base &set_ctrl2_handler(device_t &device, _Object object) + { return downcast<svi_expander_device &>(device).m_ctrl2_handler.set_callback(object); } + + // called from cart device + DECLARE_WRITE_LINE_MEMBER( int_w ) { m_int_handler(state); } + DECLARE_WRITE_LINE_MEMBER( romdis_w ) { m_romdis_handler(state); } + DECLARE_WRITE_LINE_MEMBER( ramdis_w ) { m_ramdis_handler(state); } + DECLARE_WRITE_LINE_MEMBER( ctrl1_w ) { m_ctrl1_handler(state); } + DECLARE_WRITE_LINE_MEMBER( ctrl2_w ) { m_ctrl2_handler(state); } + + // called from host + DECLARE_READ8_MEMBER( mreq_r ); + DECLARE_WRITE8_MEMBER( mreq_w ); + DECLARE_READ8_MEMBER( iorq_r ); + DECLARE_WRITE8_MEMBER( iorq_w ); + + DECLARE_WRITE_LINE_MEMBER( bk21_w ); + DECLARE_WRITE_LINE_MEMBER( bk22_w ); + DECLARE_WRITE_LINE_MEMBER( bk31_w ); + DECLARE_WRITE_LINE_MEMBER( bk32_w ); + +protected: + // device-level overrides + virtual void device_start() override; + virtual void device_reset() override; + +private: + device_svi_expander_interface *m_module; + + devcb_write_line m_int_handler; + devcb_write_line m_romdis_handler; + devcb_write_line m_ramdis_handler; + devcb_write_line m_ctrl1_handler; + devcb_write_line m_ctrl2_handler; +}; + +// ======================> device_svi_expander_interface + +class device_svi_expander_interface : public device_slot_card_interface +{ +public: + // construction/destruction + device_svi_expander_interface(const machine_config &mconfig, device_t &device); + virtual ~device_svi_expander_interface(); + + virtual DECLARE_READ8_MEMBER( mreq_r ) { return 0xff; }; + virtual DECLARE_WRITE8_MEMBER( mreq_w ){}; + virtual DECLARE_READ8_MEMBER( iorq_r ) { return 0xff; }; + virtual DECLARE_WRITE8_MEMBER( iorq_w ){}; + + virtual void bk21_w(int state) {}; + virtual void bk22_w(int state) {}; + virtual void bk31_w(int state) {}; + virtual void bk32_w(int state) {}; + +protected: + svi_expander_device *m_expander; +}; + +// device type definition +extern const device_type SVI_EXPANDER; + +// include here so drivers don't need to +#include "modules.h" + +#endif // __SVI3X8_EXPANDER_H__ diff --git a/src/devices/bus/svi3x8/expander/modules.cpp b/src/devices/bus/svi3x8/expander/modules.cpp new file mode 100644 index 00000000000..f613dcf4094 --- /dev/null +++ b/src/devices/bus/svi3x8/expander/modules.cpp @@ -0,0 +1,13 @@ +// license:GPL-2.0+ +// copyright-holders:Dirk Best +/*************************************************************************** + + SVI 318/328 Expander Bus Modules + +***************************************************************************/ + +#include "modules.h" + +SLOT_INTERFACE_START( svi_expander_modules ) + SLOT_INTERFACE("sv601", SV601) +SLOT_INTERFACE_END diff --git a/src/devices/bus/svi3x8/expander/modules.h b/src/devices/bus/svi3x8/expander/modules.h new file mode 100644 index 00000000000..953b7094935 --- /dev/null +++ b/src/devices/bus/svi3x8/expander/modules.h @@ -0,0 +1,19 @@ +// license:GPL-2.0+ +// copyright-holders:Dirk Best +/*************************************************************************** + + SVI 318/328 Expander Bus Modules + +***************************************************************************/ + +#pragma once + +#ifndef __SVI_EXPANDER_MODULES_H__ +#define __SVI_EXPANDER_MODULES_H__ + +#include "emu.h" +#include "sv601.h" + +SLOT_INTERFACE_EXTERN( svi_expander_modules ); + +#endif // __SVI_EXPANDER_MODULES_H__ diff --git a/src/devices/bus/svi3x8/expander/sv601.cpp b/src/devices/bus/svi3x8/expander/sv601.cpp new file mode 100644 index 00000000000..fadb45f9a26 --- /dev/null +++ b/src/devices/bus/svi3x8/expander/sv601.cpp @@ -0,0 +1,98 @@ +// license:GPL-2.0+ +// copyright-holders:Dirk Best +/*************************************************************************** + + SV-601 Super Expander for SVI-318/328 + +***************************************************************************/ + +#include "sv601.h" + + +//************************************************************************** +// CONSTANTS/MACROS +//************************************************************************** + +#define VERBOSE 0 + + +//************************************************************************** +// DEVICE DEFINITIONS +//************************************************************************** + +const device_type SV601 = &device_creator<sv601_device>; + +//------------------------------------------------- +// machine_config_additions - device-specific +// machine configurations +//------------------------------------------------- + +static MACHINE_CONFIG_FRAGMENT( sv601 ) + MCFG_SVI_SLOT_BUS_ADD + MCFG_SVI_SLOT_INT_HANDLER(WRITELINE(sv601_device, int_w)) + MCFG_SVI_SLOT_ROMDIS_HANDLER(WRITELINE(sv601_device, romdis_w)) + MCFG_SVI_SLOT_RAMDIS_HANDLER(WRITELINE(sv601_device, ramdis_w)) + MCFG_SVI_SLOT_ADD("0", NULL) + MCFG_SVI_SLOT_ADD("1", NULL) + MCFG_SVI_SLOT_ADD("2", NULL) + MCFG_SVI_SLOT_ADD("3", NULL) + MCFG_SVI_SLOT_ADD("4", NULL) + MCFG_SVI_SLOT_ADD("5", NULL) + MCFG_SVI_SLOT_ADD("6", NULL) +MACHINE_CONFIG_END + +machine_config_constructor sv601_device::device_mconfig_additions() const +{ + return MACHINE_CONFIG_NAME( sv601 ); +} + + +//************************************************************************** +// LIVE DEVICE +//************************************************************************** + +//------------------------------------------------- +// sv601_device - constructor +//------------------------------------------------- + +sv601_device::sv601_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : + device_t(mconfig, SV601, "SV-601 Super Expander", tag, owner, clock, "sv601", __FILE__), + device_svi_expander_interface(mconfig, *this), + m_slotbus(*this, "slotbus") +{ +} + +//------------------------------------------------- +// device_start - device-specific startup +//------------------------------------------------- + +void sv601_device::device_start() +{ +} + +//------------------------------------------------- +// device_reset - device-specific reset +//------------------------------------------------- + +void sv601_device::device_reset() +{ +} + + +//************************************************************************** +// IMPLEMENTATION +//************************************************************************** + +WRITE_LINE_MEMBER( sv601_device::int_w ) { m_expander->int_w(state); } +WRITE_LINE_MEMBER( sv601_device::romdis_w ) { m_expander->romdis_w(state); } +WRITE_LINE_MEMBER( sv601_device::ramdis_w ) { m_expander->ramdis_w(state); } + +READ8_MEMBER( sv601_device::mreq_r ) { return m_slotbus->mreq_r(space, offset); } +WRITE8_MEMBER( sv601_device::mreq_w ) { m_slotbus->mreq_w(space, offset, data); } +READ8_MEMBER( sv601_device::iorq_r ) { return m_slotbus->iorq_r(space, offset); } +WRITE8_MEMBER( sv601_device::iorq_w ) { m_slotbus->iorq_w(space, offset, data); } + +void sv601_device::bk21_w(int state) { m_slotbus->bk21_w(state); } +void sv601_device::bk22_w(int state) { m_slotbus->bk22_w(state); } +void sv601_device::bk31_w(int state) { m_slotbus->bk31_w(state); } +void sv601_device::bk32_w(int state) { m_slotbus->bk32_w(state); } diff --git a/src/devices/bus/svi3x8/expander/sv601.h b/src/devices/bus/svi3x8/expander/sv601.h new file mode 100644 index 00000000000..bf1133cfedb --- /dev/null +++ b/src/devices/bus/svi3x8/expander/sv601.h @@ -0,0 +1,59 @@ +// license:GPL-2.0+ +// copyright-holders:Dirk Best +/*************************************************************************** + + SV-601 Super Expander for SVI-318/328 + +***************************************************************************/ + +#pragma once + +#ifndef __SVI3X8_EXPANDER_SV601_H__ +#define __SVI3X8_EXPANDER_SV601_H__ + +#include "emu.h" +#include "expander.h" +#include "bus/svi3x8/slot/slot.h" + + +//************************************************************************** +// TYPE DEFINITIONS +//************************************************************************** + +// ======================> sv601_device + +class sv601_device : public device_t, public device_svi_expander_interface +{ +public: + // construction/destruction + sv601_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + + // from slots + WRITE_LINE_MEMBER( int_w ); + WRITE_LINE_MEMBER( romdis_w ); + WRITE_LINE_MEMBER( ramdis_w ); + + // from host + virtual DECLARE_READ8_MEMBER( mreq_r ) override; + virtual DECLARE_WRITE8_MEMBER( mreq_w ) override; + virtual DECLARE_READ8_MEMBER( iorq_r ) override; + virtual DECLARE_WRITE8_MEMBER( iorq_w ) override; + + virtual void bk21_w(int state) override; + virtual void bk22_w(int state) override; + virtual void bk31_w(int state) override; + virtual void bk32_w(int state) override; + +protected: + virtual machine_config_constructor device_mconfig_additions() const override; + virtual void device_start() override; + virtual void device_reset() override; + +private: + required_device<svi_slot_bus_device> m_slotbus; +}; + +// device type definition +extern const device_type SV601; + +#endif // __SVI3X8_EXPANDER_SV601_H__ diff --git a/src/devices/bus/svi3x8/slot/cards.cpp b/src/devices/bus/svi3x8/slot/cards.cpp new file mode 100644 index 00000000000..8e60b1ae1d8 --- /dev/null +++ b/src/devices/bus/svi3x8/slot/cards.cpp @@ -0,0 +1,16 @@ +// license:GPL-2.0+ +// copyright-holders:Dirk Best +/*************************************************************************** + + SVI 318/328 Slot Cards + +***************************************************************************/ + +#include "cards.h" + +SLOT_INTERFACE_START( svi_slot_cards ) + SLOT_INTERFACE("sv801", SV801) + SLOT_INTERFACE("sv803", SV803) + SLOT_INTERFACE("sv806", SV806) + SLOT_INTERFACE("sv807", SV807) +SLOT_INTERFACE_END diff --git a/src/devices/bus/svi3x8/slot/cards.h b/src/devices/bus/svi3x8/slot/cards.h new file mode 100644 index 00000000000..03492742e53 --- /dev/null +++ b/src/devices/bus/svi3x8/slot/cards.h @@ -0,0 +1,22 @@ +// license:GPL-2.0+ +// copyright-holders:Dirk Best +/*************************************************************************** + + SVI 318/328 Slot Cards + +***************************************************************************/ + +#pragma once + +#ifndef __SVI3X8_SLOT_CARDS_H__ +#define __SVI3X8_SLOT_CARDS_H__ + +#include "emu.h" +#include "sv801.h" +#include "sv803.h" +#include "sv806.h" +#include "sv807.h" + +SLOT_INTERFACE_EXTERN( svi_slot_cards ); + +#endif // __SVI3X8_SLOT_CARDS_H__ diff --git a/src/devices/bus/svi3x8/slot/slot.cpp b/src/devices/bus/svi3x8/slot/slot.cpp new file mode 100644 index 00000000000..5ab951e18f1 --- /dev/null +++ b/src/devices/bus/svi3x8/slot/slot.cpp @@ -0,0 +1,284 @@ +// license:GPL-2.0+ +// copyright-holders:Dirk Best +/*************************************************************************** + + SVI 318/328 Expansion Slot + +***************************************************************************/ + +#include "slot.h" + + +//************************************************************************** +// SLOT BUS DEVICE +//************************************************************************** + +const device_type SVI_SLOT_BUS = &device_creator<svi_slot_bus_device>; + +//------------------------------------------------- +// svi_slot_bus_device - constructor +//------------------------------------------------- + +svi_slot_bus_device::svi_slot_bus_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : + device_t(mconfig, SVI_SLOT_BUS, "SVI Slot Bus", tag, owner, clock, "svislotbus", __FILE__), + m_int_handler(*this), + m_romdis_handler(*this), + m_ramdis_handler(*this) +{ +} + +//------------------------------------------------- +// svi_slot_bus_device - destructor +//------------------------------------------------- + +svi_slot_bus_device::~svi_slot_bus_device() +{ + m_dev.detach_all(); +} + +//------------------------------------------------- +// device_start - device-specific startup +//------------------------------------------------- + +void svi_slot_bus_device::device_start() +{ + // resolve callbacks + m_int_handler.resolve_safe(); + m_romdis_handler.resolve_safe(); + m_ramdis_handler.resolve_safe(); +} + +//------------------------------------------------- +// device_reset - device-specific reset +//------------------------------------------------- + +void svi_slot_bus_device::device_reset() +{ +} + +//------------------------------------------------- +// add_card - add new card to our bus +//------------------------------------------------- + +void svi_slot_bus_device::add_card(device_svi_slot_interface *card) +{ + card->set_bus_device(this); + m_dev.append(*card); +} + +//------------------------------------------------- +// mreq_r - memory read from slot +//------------------------------------------------- + +READ8_MEMBER( svi_slot_bus_device::mreq_r ) +{ + device_svi_slot_interface *entry = m_dev.first(); + UINT8 data = 0xff; + + romdis_w(1); + ramdis_w(1); + + while (entry) + { + data &= entry->mreq_r(space, offset); + entry = entry->next(); + } + + return data; +} + +//------------------------------------------------- +// mreq_w - memory write to slot +//------------------------------------------------- + +WRITE8_MEMBER( svi_slot_bus_device::mreq_w ) +{ + device_svi_slot_interface *entry = m_dev.first(); + + romdis_w(1); + ramdis_w(1); + + while (entry) + { + entry->mreq_w(space, offset, data); + entry = entry->next(); + } +} + +//------------------------------------------------- +// iorq_r - memory read from slot +//------------------------------------------------- + +READ8_MEMBER( svi_slot_bus_device::iorq_r ) +{ + device_svi_slot_interface *entry = m_dev.first(); + UINT8 data = 0xff; + + while (entry) + { + data &= entry->iorq_r(space, offset); + entry = entry->next(); + } + + return data; +} + +//------------------------------------------------- +// iorq_w - memory write to slot +//------------------------------------------------- + +WRITE8_MEMBER( svi_slot_bus_device::iorq_w ) +{ + device_svi_slot_interface *entry = m_dev.first(); + + while (entry) + { + entry->iorq_w(space, offset, data); + entry = entry->next(); + } +} + +//------------------------------------------------- +// bk21_w - signal from host to slots +//------------------------------------------------- + +WRITE_LINE_MEMBER( svi_slot_bus_device::bk21_w ) +{ + device_svi_slot_interface *entry = m_dev.first(); + + while (entry) + { + entry->bk21_w(state); + entry = entry->next(); + } +} + +//------------------------------------------------- +// bk22_w - signal from host to slots +//------------------------------------------------- + +WRITE_LINE_MEMBER( svi_slot_bus_device::bk22_w ) +{ + device_svi_slot_interface *entry = m_dev.first(); + + while (entry) + { + entry->bk22_w(state); + entry = entry->next(); + } +} + +//------------------------------------------------- +// bk31_w - signal from host to slots +//------------------------------------------------- + +WRITE_LINE_MEMBER( svi_slot_bus_device::bk31_w ) +{ + device_svi_slot_interface *entry = m_dev.first(); + + while (entry) + { + entry->bk31_w(state); + entry = entry->next(); + } +} + +//------------------------------------------------- +// bk32_w - signal from host to slots +//------------------------------------------------- + +WRITE_LINE_MEMBER( svi_slot_bus_device::bk32_w ) +{ + device_svi_slot_interface *entry = m_dev.first(); + + while (entry) + { + entry->bk32_w(state); + entry = entry->next(); + } +} + + +//************************************************************************** +// SVI SLOT DEVICE +//************************************************************************** + +const device_type SVI_SLOT = &device_creator<svi_slot_device>; + +//------------------------------------------------- +// svi_slot_device - constructor +//------------------------------------------------- + +svi_slot_device::svi_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : + device_t(mconfig, SVI_SLOT, "SVI Slot", tag, owner, clock, "svislot", __FILE__), + device_slot_interface(mconfig, *this), + m_bus_tag(nullptr) +{ +} + +//------------------------------------------------- +// set_bus - set owner bus tag +//------------------------------------------------- + +void svi_slot_device::set_bus(device_t &device, device_t *owner, const char *bus_tag) +{ + svi_slot_device &card = dynamic_cast<svi_slot_device &>(device); + card.m_owner = owner; + card.m_bus_tag = bus_tag; +} + +//------------------------------------------------- +// device_start - device-specific startup +//------------------------------------------------- + +void svi_slot_device::device_start() +{ + device_svi_slot_interface *dev = dynamic_cast<device_svi_slot_interface *>(get_card_device()); + + if (dev) + { + svi_slot_bus_device *bus = downcast<svi_slot_bus_device *>(m_owner->subdevice(m_bus_tag)); + bus->add_card(dev); + } +} + +//------------------------------------------------- +// device_reset - device-specific reset +//------------------------------------------------- + +void svi_slot_device::device_reset() +{ +} + + +//************************************************************************** +// CARD INTERFACE +//************************************************************************** + +//------------------------------------------------- +// device_svi_slot_interface - constructor +//------------------------------------------------- + +device_svi_slot_interface::device_svi_slot_interface(const machine_config &mconfig, device_t &device) : + device_slot_card_interface(mconfig, device), + m_next(nullptr), + m_bus(nullptr) +{ +} + +//------------------------------------------------- +// ~device_svi_slot_interface - destructor +//------------------------------------------------- + +device_svi_slot_interface::~device_svi_slot_interface() +{ +} + +//------------------------------------------------- +// set_bus_device - set bus we are attached to +//------------------------------------------------- + +void device_svi_slot_interface::set_bus_device(svi_slot_bus_device *bus) +{ + m_bus = bus; +} diff --git a/src/devices/bus/svi3x8/slot/slot.h b/src/devices/bus/svi3x8/slot/slot.h new file mode 100644 index 00000000000..6cea923f6f6 --- /dev/null +++ b/src/devices/bus/svi3x8/slot/slot.h @@ -0,0 +1,178 @@ +// license:GPL-2.0+ +// copyright-holders:Dirk Best +/*************************************************************************** + + SVI 318/328 Expansion Slot + + 50-pin slot + + 1 +5V 2 +5V + 3 +12V 4 -12V + 5 GND 6 /WAIT + 7 /RST 8 CPUCLK + 9 A15 10 A14 + 11 A13 12 A12 + 13 A11 14 A10 + 15 A9 16 A8 + 17 A7 18 A6 + 19 A5 20 A4 + 21 A3 22 A2 + 23 A1 24 A0 + 25 /RFSH 26 GND + 27 /M1 28 GND + 29 /WR 30 /MREQ + 31 /IORQ 32 /RD + 33 D0 34 D1 + 35 D2 36 D3 + 37 D4 38 D5 + 39 D6 40 D7 + 41 CSOUND 42 /INT + 43 /RAMDIS 44 /ROMDIS + 45 /BK32 46 /BK31 + 47 /BK22 48 /BK21 + 49 GND 50 GND + +***************************************************************************/ + +#pragma once + +#ifndef __SVI3X8_SLOT_H__ +#define __SVI3X8_SLOT_H__ + +#include "emu.h" + + +//************************************************************************** +// INTERFACE CONFIGURATION MACROS +//************************************************************************** + +#define MCFG_SVI_SLOT_BUS_ADD \ + MCFG_DEVICE_ADD("slotbus", SVI_SLOT_BUS, 0) + +#define MCFG_SVI_SLOT_ADD(_tag, _def_slot) \ + MCFG_DEVICE_ADD(_tag, SVI_SLOT, 0) \ + MCFG_DEVICE_SLOT_INTERFACE(svi_slot_cards, _def_slot, false) \ + svi_slot_device::set_bus(*device, owner, "slotbus"); + +#define MCFG_SVI_SLOT_INT_HANDLER(_devcb) \ + devcb = &svi_slot_bus_device::set_int_handler(*device, DEVCB_##_devcb); + +#define MCFG_SVI_SLOT_ROMDIS_HANDLER(_devcb) \ + devcb = &svi_slot_bus_device::set_romdis_handler(*device, DEVCB_##_devcb); + +#define MCFG_SVI_SLOT_RAMDIS_HANDLER(_devcb) \ + devcb = &svi_slot_bus_device::set_ramdis_handler(*device, DEVCB_##_devcb); + + +//************************************************************************** +// TYPE DEFINITIONS +//************************************************************************** + +class device_svi_slot_interface; + +// ======================> svi_slot_bus_device + +class svi_slot_bus_device : public device_t +{ +public: + // construction/destruction + svi_slot_bus_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + virtual ~svi_slot_bus_device(); + + // callbacks + template<class _Object> static devcb_base &set_int_handler(device_t &device, _Object object) + { return downcast<svi_slot_bus_device &>(device).m_int_handler.set_callback(object); } + + template<class _Object> static devcb_base &set_romdis_handler(device_t &device, _Object object) + { return downcast<svi_slot_bus_device &>(device).m_romdis_handler.set_callback(object); } + + template<class _Object> static devcb_base &set_ramdis_handler(device_t &device, _Object object) + { return downcast<svi_slot_bus_device &>(device).m_ramdis_handler.set_callback(object); } + + // device-level overrides + virtual void device_start() override; + virtual void device_reset() override; + + void add_card(device_svi_slot_interface *card); + + // from slot + DECLARE_WRITE_LINE_MEMBER( romdis_w ) { m_romdis_handler(state); }; + DECLARE_WRITE_LINE_MEMBER( ramdis_w ) { m_ramdis_handler(state); }; + + // from host + DECLARE_READ8_MEMBER( mreq_r ); + DECLARE_WRITE8_MEMBER( mreq_w ); + DECLARE_READ8_MEMBER( iorq_r ); + DECLARE_WRITE8_MEMBER( iorq_w ); + + DECLARE_WRITE_LINE_MEMBER( bk21_w ); + DECLARE_WRITE_LINE_MEMBER( bk22_w ); + DECLARE_WRITE_LINE_MEMBER( bk31_w ); + DECLARE_WRITE_LINE_MEMBER( bk32_w ); + +private: + simple_list<device_svi_slot_interface> m_dev; + + devcb_write_line m_int_handler; + devcb_write_line m_romdis_handler; + devcb_write_line m_ramdis_handler; +}; + +// device type definition +extern const device_type SVI_SLOT_BUS; + +// ======================> svi_slot_device + +class svi_slot_device : public device_t, public device_slot_interface +{ +public: + // construction/destruction + svi_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + + // inline configuration + static void set_bus(device_t &device, device_t *owner, const char *bus_tag); + +protected: + // device-level overrides + virtual void device_start() override; + virtual void device_reset() override; + + // configuration + const char *m_bus_tag; +}; + +// device type definition +extern const device_type SVI_SLOT; + +// ======================> svi_slot_device + +class device_svi_slot_interface : public device_slot_card_interface +{ +public: + // construction/destruction + device_svi_slot_interface(const machine_config &mconfig, device_t &device); + virtual ~device_svi_slot_interface(); + + void set_bus_device(svi_slot_bus_device *bus); + + device_svi_slot_interface *next() const { return m_next; } + device_svi_slot_interface *m_next; + + virtual DECLARE_READ8_MEMBER( mreq_r ) { return 0xff; }; + virtual DECLARE_WRITE8_MEMBER( mreq_w ) {}; + virtual DECLARE_READ8_MEMBER( iorq_r ) { return 0xff; }; + virtual DECLARE_WRITE8_MEMBER( iorq_w ) {}; + + virtual DECLARE_WRITE_LINE_MEMBER( bk21_w ) {}; + virtual DECLARE_WRITE_LINE_MEMBER( bk22_w ) {}; + virtual DECLARE_WRITE_LINE_MEMBER( bk31_w ) {}; + virtual DECLARE_WRITE_LINE_MEMBER( bk32_w ) {}; + +protected: + svi_slot_bus_device *m_bus; +}; + +// include here so drivers don't need to +#include "cards.h" + +#endif // __SVI3X8_SLOT_H__ diff --git a/src/devices/bus/svi3x8/slot/sv801.cpp b/src/devices/bus/svi3x8/slot/sv801.cpp new file mode 100644 index 00000000000..544c68e2988 --- /dev/null +++ b/src/devices/bus/svi3x8/slot/sv801.cpp @@ -0,0 +1,144 @@ +// license:GPL-2.0+ +// copyright-holders:Dirk Best +/*************************************************************************** + + SV-801 Disk Controller + +***************************************************************************/ + +#include "sv801.h" +#include "softlist.h" +#include "formats/svi_dsk.h" + + +//************************************************************************** +// DEVICE DEFINITIONS +//************************************************************************** + +const device_type SV801 = &device_creator<sv801_device>; + +//------------------------------------------------- +// machine_config_additions - device-specific +// machine configurations +//------------------------------------------------- + +FLOPPY_FORMATS_MEMBER( sv801_device::floppy_formats ) + FLOPPY_SVI_FORMAT +FLOPPY_FORMATS_END + +static SLOT_INTERFACE_START( svi_floppies ) + SLOT_INTERFACE("dd", FLOPPY_525_DD) +SLOT_INTERFACE_END + +static MACHINE_CONFIG_FRAGMENT( sv801 ) + MCFG_FD1793_ADD("fdc", XTAL_1MHz) + MCFG_WD_FDC_INTRQ_CALLBACK(WRITELINE(sv801_device, intrq_w)) + MCFG_WD_FDC_DRQ_CALLBACK(WRITELINE(sv801_device, drq_w)) + + MCFG_FLOPPY_DRIVE_ADD("fdc:0", svi_floppies, "dd", sv801_device::floppy_formats) + MCFG_FLOPPY_DRIVE_ADD("fdc:1", svi_floppies, "dd", sv801_device::floppy_formats) + + MCFG_SOFTWARE_LIST_ADD("disk_list", "svi318_flop") +MACHINE_CONFIG_END + +machine_config_constructor sv801_device::device_mconfig_additions() const +{ + return MACHINE_CONFIG_NAME( sv801 ); +} + + +//************************************************************************** +// LIVE DEVICE +//************************************************************************** + +//------------------------------------------------- +// sv801_device - constructor +//------------------------------------------------- + +sv801_device::sv801_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : + device_t(mconfig, SV801, "SV-801 Disk Controller", tag, owner, clock, "sv801", __FILE__), + device_svi_slot_interface(mconfig, *this), + m_fdc(*this, "fdc"), + m_floppy0(*this, "fdc:0"), + m_floppy1(*this, "fdc:1"), + m_floppy(nullptr), + m_irq(0), m_drq(0) +{ +} + +//------------------------------------------------- +// device_start - device-specific startup +//------------------------------------------------- + +void sv801_device::device_start() +{ +} + +//------------------------------------------------- +// device_reset - device-specific reset +//------------------------------------------------- + +void sv801_device::device_reset() +{ +} + + +//************************************************************************** +// IMPLEMENTATION +//************************************************************************** + +WRITE_LINE_MEMBER( sv801_device::intrq_w ) +{ + m_irq = state; +} + +WRITE_LINE_MEMBER( sv801_device::drq_w ) +{ + m_drq = state; +} + +WRITE8_MEMBER( sv801_device::motor_w ) +{ + m_floppy = nullptr; + + if (BIT(data, 0)) m_floppy = m_floppy0->get_device(); + if (BIT(data, 1)) m_floppy = m_floppy1->get_device(); + + m_fdc->set_floppy(m_floppy); + + if (m_floppy0->get_device()) + m_floppy0->get_device()->mon_w(!BIT(data, 2)); + if (m_floppy1->get_device()) + m_floppy1->get_device()->mon_w(!BIT(data, 3)); +} + +READ8_MEMBER( sv801_device::iorq_r ) +{ + switch (offset) + { + case 0x30: return m_fdc->status_r(space, 0); + case 0x31: return m_fdc->track_r(space, 0); + case 0x32: return m_fdc->sector_r(space, 0); + case 0x33: return m_fdc->data_r(space, 0); + case 0x34: return (m_drq << 6) | (m_irq << 7); + } + + return 0xff; +} + +WRITE8_MEMBER( sv801_device::iorq_w ) +{ + switch (offset) + { + case 0x30: m_fdc->cmd_w(space, 0, data); break; + case 0x31: m_fdc->track_w(space, 0, data); break; + case 0x32: m_fdc->sector_w(space, 0, data); break; + case 0x33: m_fdc->data_w(space, 0, data); break; + case 0x34: motor_w(space, 0, data); break; + case 0x38: + m_fdc->dden_w(BIT(data, 0)); + if (m_floppy) + m_floppy->ss_w(BIT(data, 1)); + break; + } +} diff --git a/src/devices/bus/svi3x8/slot/sv801.h b/src/devices/bus/svi3x8/slot/sv801.h new file mode 100644 index 00000000000..2f670f05ad1 --- /dev/null +++ b/src/devices/bus/svi3x8/slot/sv801.h @@ -0,0 +1,61 @@ +// license:GPL-2.0+ +// copyright-holders:Dirk Best +/*************************************************************************** + + SV-801 Disk Controller + +***************************************************************************/ + +#pragma once + +#ifndef __SVI3X8_SLOT_SV801_H__ +#define __SVI3X8_SLOT_SV801_H__ + +#include "emu.h" +#include "slot.h" +#include "machine/wd_fdc.h" +#include "imagedev/floppy.h" + + +//************************************************************************** +// TYPE DEFINITIONS +//************************************************************************** + +// ======================> sv801_device + +class sv801_device : public device_t, public device_svi_slot_interface +{ +public: + // construction/destruction + sv801_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + + DECLARE_FLOPPY_FORMATS(floppy_formats); + + virtual DECLARE_READ8_MEMBER( iorq_r ) override; + virtual DECLARE_WRITE8_MEMBER( iorq_w ) override; + + DECLARE_WRITE_LINE_MEMBER( intrq_w ); + DECLARE_WRITE_LINE_MEMBER( drq_w ); + +protected: + virtual machine_config_constructor device_mconfig_additions() const override; + virtual void device_start() override; + virtual void device_reset() override; + +private: + DECLARE_WRITE8_MEMBER( motor_w ); + + required_device<fd1793_t> m_fdc; + required_device<floppy_connector> m_floppy0; + required_device<floppy_connector> m_floppy1; + + floppy_image_device *m_floppy; + + int m_irq; + int m_drq; +}; + +// device type definition +extern const device_type SV801; + +#endif // __SVI3X8_SLOT_SV801_H__ diff --git a/src/devices/bus/svi3x8/slot/sv803.cpp b/src/devices/bus/svi3x8/slot/sv803.cpp new file mode 100644 index 00000000000..7035efeaa7a --- /dev/null +++ b/src/devices/bus/svi3x8/slot/sv803.cpp @@ -0,0 +1,68 @@ +// license:GPL-2.0+ +// copyright-holders:Dirk Best +/*************************************************************************** + + SV-803 16k memory expansion for SVI-318 + +***************************************************************************/ + +#include "sv803.h" + + +//************************************************************************** +// DEVICE DEFINITIONS +//************************************************************************** + +const device_type SV803 = &device_creator<sv803_device>; + + +//************************************************************************** +// LIVE DEVICE +//************************************************************************** + +//------------------------------------------------- +// sv803_device - constructor +//------------------------------------------------- + +sv803_device::sv803_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : + device_t(mconfig, SV803, "SV-803 16k RAM Cartridge", tag, owner, clock, "sv803", __FILE__), + device_svi_slot_interface(mconfig, *this) +{ + m_ram = std::make_unique<UINT8[]>(0x4000); + memset(m_ram.get(), 0xff, 0x4000); +} + +//------------------------------------------------- +// device_start - device-specific startup +//------------------------------------------------- + +void sv803_device::device_start() +{ +} + +//------------------------------------------------- +// device_reset - device-specific reset +//------------------------------------------------- + +void sv803_device::device_reset() +{ +} + + +//************************************************************************** +// IMPLEMENTATION +//************************************************************************** + +READ8_MEMBER( sv803_device::mreq_r ) +{ + if (offset >= 0x8000 && offset <= 0xbfff) + return m_ram[offset - 0x8000]; + + return 0xff; +} + +WRITE8_MEMBER( sv803_device::mreq_w ) +{ + if (offset >= 0x8000 && offset <= 0xbfff) + m_ram[offset - 0x8000] = data; +} diff --git a/src/devices/bus/svi3x8/slot/sv803.h b/src/devices/bus/svi3x8/slot/sv803.h new file mode 100644 index 00000000000..9dea0ea9180 --- /dev/null +++ b/src/devices/bus/svi3x8/slot/sv803.h @@ -0,0 +1,44 @@ +// license:GPL-2.0+ +// copyright-holders:Dirk Best +/*************************************************************************** + + SV-803 16k memory expansion for SVI-318 + +***************************************************************************/ + +#pragma once + +#ifndef __SVI3X8_SLOT_SV803_H__ +#define __SVI3X8_SLOT_SV803_H__ + +#include "emu.h" +#include "slot.h" + + +//************************************************************************** +// TYPE DEFINITIONS +//************************************************************************** + +// ======================> sv803_device + +class sv803_device : public device_t, public device_svi_slot_interface +{ +public: + // construction/destruction + sv803_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + + virtual DECLARE_READ8_MEMBER( mreq_r ) override; + virtual DECLARE_WRITE8_MEMBER( mreq_w ) override; + +protected: + virtual void device_start() override; + virtual void device_reset() override; + +private: + std::unique_ptr<UINT8[]> m_ram; +}; + +// device type definition +extern const device_type SV803; + +#endif // __SVI3X8_SLOT_SV803_H__ diff --git a/src/devices/bus/svi3x8/slot/sv806.cpp b/src/devices/bus/svi3x8/slot/sv806.cpp new file mode 100644 index 00000000000..3db7d8ee2a7 --- /dev/null +++ b/src/devices/bus/svi3x8/slot/sv806.cpp @@ -0,0 +1,150 @@ +// license:GPL-2.0+ +// copyright-holders:Dirk Best +/*************************************************************************** + + SV-806 80 Column Cartridge for SVI-318/328 + +***************************************************************************/ + +#include "sv806.h" + + +//************************************************************************** +// DEVICE DEFINITIONS +//************************************************************************** + +const device_type SV806 = &device_creator<sv806_device>; + +//------------------------------------------------- +// rom_region - device-specific ROM region +//------------------------------------------------- + +ROM_START( sv806 ) + ROM_REGION(0x1000, "gfx", 0) + ROM_SYSTEM_BIOS(0, "en", "English Character Set") + ROMX_LOAD("sv806.ic27", 0x0000, 0x1000, CRC(850bc232) SHA1(ed45cb0e9bd18a9d7bd74f87e620f016a7ae840f), ROM_BIOS(1)) + ROM_SYSTEM_BIOS(1, "se", "Swedish Character Set") + ROMX_LOAD("sv806se.ic27", 0x0000, 0x1000, CRC(daea8956) SHA1(3f16d5513ad35692488ae7d864f660e76c6e8ed3), ROM_BIOS(2)) +ROM_END + +const rom_entry *sv806_device::device_rom_region() const +{ + return ROM_NAME( sv806 ); +} + +//------------------------------------------------- +// machine_config_additions - device-specific +// machine configurations +//------------------------------------------------- + +static MACHINE_CONFIG_FRAGMENT( sv806 ) + MCFG_SCREEN_ADD_MONOCHROME("80col", RASTER, rgb_t::green) + MCFG_SCREEN_RAW_PARAMS((XTAL_12MHz / 6) * 8, 864, 0, 640, 317, 0, 192) + MCFG_SCREEN_UPDATE_DEVICE("crtc", hd6845_device, screen_update) + + MCFG_PALETTE_ADD_MONOCHROME("palette") + + MCFG_MC6845_ADD("crtc", HD6845, "80col", XTAL_12MHz / 6) + MCFG_MC6845_SHOW_BORDER_AREA(false) + MCFG_MC6845_CHAR_WIDTH(8) + MCFG_MC6845_UPDATE_ROW_CB(sv806_device, crtc_update_row) +MACHINE_CONFIG_END + +machine_config_constructor sv806_device::device_mconfig_additions() const +{ + return MACHINE_CONFIG_NAME( sv806 ); +} + + +//************************************************************************** +// LIVE DEVICE +//************************************************************************** + +//------------------------------------------------- +// sv806_device - constructor +//------------------------------------------------- + +sv806_device::sv806_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : + device_t(mconfig, SV806, "SV-806 80 Column Cartridge", tag, owner, clock, "sv806", __FILE__), + device_svi_slot_interface(mconfig, *this), + m_crtc(*this, "crtc"), + m_palette(*this, "palette"), + m_gfx(*this, "gfx"), + m_ram_enabled(0) +{ + m_ram = std::make_unique<UINT8[]>(0x800); + memset(m_ram.get(), 0xff, 0x800); +} + +//------------------------------------------------- +// device_start - device-specific startup +//------------------------------------------------- + +void sv806_device::device_start() +{ +} + + +//************************************************************************** +// IMPLEMENTATION +//************************************************************************** + +MC6845_UPDATE_ROW( sv806_device::crtc_update_row ) +{ + const pen_t *pen = m_palette->pens(); + + for (int i = 0; i < x_count; i++) + { + UINT8 data = m_gfx->u8((m_ram[(ma + i) & 0x7ff] << 4) | ra); + + if (i == cursor_x) + data = 0xff; + + bitmap.pix32(y, i * 8 + 0) = pen[BIT(data, 7)]; + bitmap.pix32(y, i * 8 + 1) = pen[BIT(data, 6)]; + bitmap.pix32(y, i * 8 + 2) = pen[BIT(data, 5)]; + bitmap.pix32(y, i * 8 + 3) = pen[BIT(data, 4)]; + bitmap.pix32(y, i * 8 + 4) = pen[BIT(data, 3)]; + bitmap.pix32(y, i * 8 + 5) = pen[BIT(data, 2)]; + bitmap.pix32(y, i * 8 + 6) = pen[BIT(data, 1)]; + bitmap.pix32(y, i * 8 + 7) = pen[BIT(data, 0)]; + } +} + +READ8_MEMBER( sv806_device::mreq_r ) +{ + if (offset >= 0xf000 && m_ram_enabled) + { + m_bus->ramdis_w(0); + return m_ram[offset & 0x7ff]; + } + + return 0xff; +} + +WRITE8_MEMBER( sv806_device::mreq_w ) +{ + if (offset >= 0xf000 && m_ram_enabled) + { + m_bus->ramdis_w(0); + m_ram[offset & 0x7ff] = data; + } +} + +READ8_MEMBER( sv806_device::iorq_r ) +{ + if (offset == 0x51) + return m_crtc->register_r(space, 0); + + return 0xff; +} + +WRITE8_MEMBER( sv806_device::iorq_w ) +{ + switch (offset) + { + case 0x50: m_crtc->address_w(space, 0, data); break; + case 0x51: m_crtc->register_w(space, 0, data); break; + case 0x58: m_ram_enabled = data; break; + } +} diff --git a/src/devices/bus/svi3x8/slot/sv806.h b/src/devices/bus/svi3x8/slot/sv806.h new file mode 100644 index 00000000000..4782faa4812 --- /dev/null +++ b/src/devices/bus/svi3x8/slot/sv806.h @@ -0,0 +1,55 @@ +// license:GPL-2.0+ +// copyright-holders:Dirk Best +/*************************************************************************** + + SV-806 80 column card for SVI-318/328 + +***************************************************************************/ + +#pragma once + +#ifndef __SVI3X8_SLOT_SV806_H__ +#define __SVI3X8_SLOT_SV806_H__ + +#include "emu.h" +#include "slot.h" +#include "video/mc6845.h" + + +//************************************************************************** +// TYPE DEFINITIONS +//************************************************************************** + +// ======================> sv806_device + +class sv806_device : public device_t, public device_svi_slot_interface +{ +public: + // construction/destruction + sv806_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + + virtual DECLARE_READ8_MEMBER( mreq_r ) override; + virtual DECLARE_WRITE8_MEMBER( mreq_w ) override; + virtual DECLARE_READ8_MEMBER( iorq_r ) override; + virtual DECLARE_WRITE8_MEMBER( iorq_w ) override; + + MC6845_UPDATE_ROW(crtc_update_row); + +protected: + virtual const rom_entry *device_rom_region() const override; + virtual machine_config_constructor device_mconfig_additions() const override; + virtual void device_start() override; + +private: + required_device<hd6845_device> m_crtc; + required_device<palette_device> m_palette; + required_memory_region m_gfx; + + std::unique_ptr<UINT8[]> m_ram; + int m_ram_enabled; +}; + +// device type definition +extern const device_type SV806; + +#endif // __SVI3X8_SLOT_SV806_H__ diff --git a/src/devices/bus/svi3x8/slot/sv807.cpp b/src/devices/bus/svi3x8/slot/sv807.cpp new file mode 100644 index 00000000000..14cf5001674 --- /dev/null +++ b/src/devices/bus/svi3x8/slot/sv807.cpp @@ -0,0 +1,163 @@ +// license:GPL-2.0+ +// copyright-holders:Dirk Best +/*************************************************************************** + + SV-807 64k memory expansion for SVI-318/328 + + TODO: + - Switch S6 (but needs to be off for the SVI anyway) + +***************************************************************************/ + +#include "sv807.h" + + +//************************************************************************** +// CONSTANTS / MACROS +//************************************************************************** + +#define BK21_ACTIVE ((m_bk21 == 0) && (m_switch->read() & 0x01)) +#define BK22_ACTIVE ((m_bk22 == 0) && (m_switch->read() & 0x02)) +#define BK31_ACTIVE ((m_bk31 == 0) && (m_switch->read() & 0x04)) +#define BK32_ACTIVE ((m_bk32 == 0) && (m_switch->read() & 0x08)) +#define BK02_ACTIVE (m_switch->read() & 0x10) + + +//************************************************************************** +// DEVICE DEFINITIONS +//************************************************************************** + +const device_type SV807 = &device_creator<sv807_device>; + +//------------------------------------------------- +// input_ports - device-specific input ports +//------------------------------------------------- + +static INPUT_PORTS_START( sv807_switches ) + PORT_START("S") + PORT_DIPNAME(0x01, 0x00, "Bank/Page 21") + PORT_DIPLOCATION("S:1") + PORT_DIPSETTING(0x00, "Off") + PORT_DIPSETTING(0x01, "On") + PORT_DIPNAME(0x02, 0x02, "Bank/Page 22") + PORT_DIPLOCATION("S:2") + PORT_DIPSETTING(0x00, "Off") + PORT_DIPSETTING(0x02, "On") + PORT_DIPNAME(0x04, 0x04, "Bank/Page 31") + PORT_DIPLOCATION("S:3") + PORT_DIPSETTING(0x00, "Off") + PORT_DIPSETTING(0x04, "On") + PORT_DIPNAME(0x08, 0x00, "Bank/Page 32") + PORT_DIPLOCATION("S:4") + PORT_DIPSETTING(0x00, "Off") + PORT_DIPSETTING(0x08, "On") + PORT_DIPNAME(0x10, 0x00, "Bank/Page 02") + PORT_DIPLOCATION("S:5") + PORT_DIPSETTING(0x00, "Off") + PORT_DIPSETTING(0x10, "On") + PORT_DIPNAME(0x20, 0x00, "48k/32k") + PORT_DIPLOCATION("S:6") + PORT_DIPSETTING(0x00, "Off") + PORT_DIPSETTING(0x20, "On") +INPUT_PORTS_END + +ioport_constructor sv807_device::device_input_ports() const +{ + return INPUT_PORTS_NAME( sv807_switches ); +} + + +//************************************************************************** +// LIVE DEVICE +//************************************************************************** + +//------------------------------------------------- +// sv807_device - constructor +//------------------------------------------------- + +sv807_device::sv807_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : + device_t(mconfig, SV803, "SV-807 64k RAM Cartridge", tag, owner, clock, "sv807", __FILE__), + device_svi_slot_interface(mconfig, *this), + m_switch(*this, "S"), + m_bk21(1), m_bk22(1), m_bk31(1), m_bk32(1) +{ + m_ram_bank1 = std::make_unique<UINT8[]>(0x8000); + m_ram_bank2 = std::make_unique<UINT8[]>(0x8000); + memset(m_ram_bank1.get(), 0xff, 0x8000); + memset(m_ram_bank2.get(), 0xff, 0x8000); +} + +//------------------------------------------------- +// device_start - device-specific startup +//------------------------------------------------- + +void sv807_device::device_start() +{ +} + +//------------------------------------------------- +// device_reset - device-specific reset +//------------------------------------------------- + +void sv807_device::device_reset() +{ +} + + +//************************************************************************** +// IMPLEMENTATION +//************************************************************************** + +// test setup: S2 = enabled (22), S3 = enabled (31) + +READ8_MEMBER( sv807_device::mreq_r ) +{ + if ((BK21_ACTIVE || BK31_ACTIVE) && offset < 0x8000) + { + m_bus->romdis_w(0); + return m_ram_bank1[offset]; + } + + if ((BK22_ACTIVE || BK32_ACTIVE || BK02_ACTIVE) && offset >= 0x8000) + { + m_bus->ramdis_w(0); + return m_ram_bank2[offset - 0x8000]; + } + + return 0xff; +} + +WRITE8_MEMBER( sv807_device::mreq_w ) +{ + if ((BK21_ACTIVE || BK31_ACTIVE) && offset < 0x8000) + { + m_bus->romdis_w(0); + m_ram_bank1[offset] = data; + } + + if ((BK22_ACTIVE || BK32_ACTIVE || BK02_ACTIVE) && offset >= 0x8000) + { + m_bus->ramdis_w(0); + m_ram_bank2[offset - 0x8000] = data; + } +} + +void sv807_device::bk21_w(int state) +{ + m_bk21 = state; +} + +void sv807_device::bk22_w(int state) +{ + m_bk22 = state; +} + +void sv807_device::bk31_w(int state) +{ + m_bk31 = state; +} + +void sv807_device::bk32_w(int state) +{ + m_bk32 = state; +} diff --git a/src/devices/bus/svi3x8/slot/sv807.h b/src/devices/bus/svi3x8/slot/sv807.h new file mode 100644 index 00000000000..deebb9bf79e --- /dev/null +++ b/src/devices/bus/svi3x8/slot/sv807.h @@ -0,0 +1,60 @@ +// license:GPL-2.0+ +// copyright-holders:Dirk Best +/*************************************************************************** + + SV-807 64k memory expansion for SVI-318/328 + +***************************************************************************/ + +#pragma once + +#ifndef __SVI3X8_SLOT_SV807_H__ +#define __SVI3X8_SLOT_SV807_H__ + +#include "emu.h" +#include "slot.h" + + +//************************************************************************** +// TYPE DEFINITIONS +//************************************************************************** + +// ======================> sv807_device + +class sv807_device : public device_t, public device_svi_slot_interface +{ +public: + // construction/destruction + sv807_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + + // optional information overrides + virtual ioport_constructor device_input_ports() const override; + + virtual DECLARE_READ8_MEMBER( mreq_r ) override; + virtual DECLARE_WRITE8_MEMBER( mreq_w ) override; + + virtual void bk21_w(int state) override; + virtual void bk22_w(int state) override; + virtual void bk31_w(int state) override; + virtual void bk32_w(int state) override; + +protected: + virtual void device_start() override; + virtual void device_reset() override; + +private: + required_ioport m_switch; + + std::unique_ptr<UINT8[]> m_ram_bank1; + std::unique_ptr<UINT8[]> m_ram_bank2; + + int m_bk21; + int m_bk22; + int m_bk31; + int m_bk32; +}; + +// device type definition +extern const device_type SV807; + +#endif // __SVI3X8_SLOT_SV807_H__ diff --git a/src/devices/machine/atapicdr.cpp b/src/devices/machine/atapicdr.cpp index 151d8d1bb10..13fd79570dd 100644 --- a/src/devices/machine/atapicdr.cpp +++ b/src/devices/machine/atapicdr.cpp @@ -72,11 +72,15 @@ void atapi_cdrom_device::device_start() m_identify_buffer[ 49 ] = 0x0600; // Word 49=Capabilities, IORDY may be disabled (bit_10), LBA Supported mandatory (bit_9) - m_media_change = true; - atapi_hle_device::device_start(); } +void atapi_cdrom_device::device_reset() +{ + atapi_hle_device::device_reset(); + m_media_change = true; +} + void atapi_cdrom_device::process_buffer() { if(m_cdrom != m_image->get_cdrom_file()) @@ -130,10 +134,10 @@ void atapi_cdrom_device::ExecCommand() } break; case T10SPC_CMD_INQUIRY: + break; case T10SPC_CMD_REQUEST_SENSE: + m_media_change = false; break; } t10mmc::ExecCommand(); - if((command[0] == T10SPC_CMD_REQUEST_SENSE) && m_media_change) - m_media_change = false; } diff --git a/src/devices/machine/atapicdr.h b/src/devices/machine/atapicdr.h index 2c310113c5c..dc5220c000d 100644 --- a/src/devices/machine/atapicdr.h +++ b/src/devices/machine/atapicdr.h @@ -28,6 +28,7 @@ public: protected: // device-level overrides virtual void device_start() override; + virtual void device_reset() override; virtual machine_config_constructor device_mconfig_additions() const override; virtual void perform_diagnostic() override; diff --git a/src/emu/attotime.h b/src/emu/attotime.h index 0cdaa424ca0..a0915ae07f2 100644 --- a/src/emu/attotime.h +++ b/src/emu/attotime.h @@ -117,17 +117,6 @@ public: UINT64 as_ticks(UINT32 frequency) const; const char *as_string(int precision = 9) const; - // Needed by gba.c FIXME: this shouldn't be necessary? - - void normalize() - { - while (m_attoseconds >= ATTOSECONDS_PER_SECOND) - { - m_seconds++; - m_attoseconds -= ATTOSECONDS_PER_SECOND; - } - } - attoseconds_t attoseconds() const { return m_attoseconds; } seconds_t seconds() const { return m_seconds; } diff --git a/src/emu/debug/dvdisasm.cpp b/src/emu/debug/dvdisasm.cpp index 6daca107f86..10cb3e75e64 100644 --- a/src/emu/debug/dvdisasm.cpp +++ b/src/emu/debug/dvdisasm.cpp @@ -370,6 +370,7 @@ bool debug_view_disasm::recompute(offs_t pc, int startline, int lines) // allocate disassembly buffer const auto total_bytes = m_total.x * m_total.y; + m_dasm.clear(); m_dasm.reserve(total_bytes).seekp(total_bytes); // iterate over lines @@ -387,6 +388,7 @@ bool debug_view_disasm::recompute(offs_t pc, int startline, int lines) // convert back and set the address of this instruction m_byteaddress[instr] = pcbyte; + m_dasm.clear(); util::stream_format(m_dasm.seekp(base), source.m_space.is_octal() ? " %0*o " : " %0*X ", source.m_space.logaddrchars()/2*char_num, source.m_space.byte_to_address(pcbyte)); diff --git a/src/lib/util/corefile.cpp b/src/lib/util/corefile.cpp index ec1e25340e3..5c16d886fe3 100644 --- a/src/lib/util/corefile.cpp +++ b/src/lib/util/corefile.cpp @@ -611,6 +611,7 @@ int core_text_file::puts(char const *s) int core_text_file::vprintf(util::format_argument_pack<std::ostream> const &args) { + m_printf_buffer.clear(); m_printf_buffer.reserve(1024); m_printf_buffer.seekp(0, ovectorstream::beg); util::stream_format<std::ostream, std::ostream>(m_printf_buffer, args); diff --git a/src/mame/drivers/gba.cpp b/src/mame/drivers/gba.cpp index abaea79d40d..f2c05930332 100644 --- a/src/mame/drivers/gba.cpp +++ b/src/mame/drivers/gba.cpp @@ -35,8 +35,6 @@ static inline void ATTR_PRINTF(3,4) verboselog(device_t &device, int n_level, co } } -#define GBA_ATTOTIME_NORMALIZE(a) a.normalize() - static const UINT32 timer_clks[4] = { 16777216, 16777216/64, 16777216/256, 16777216/1024 }; @@ -343,7 +341,6 @@ TIMER_CALLBACK_MEMBER(gba_state::timer_expire) final = clocksel / rate; m_timer_hz[tmr] = final; time = attotime::from_hz(final); - GBA_ATTOTIME_NORMALIZE(time); m_tmr_timer[tmr]->adjust(time, tmr, time); } @@ -1639,7 +1636,6 @@ WRITE32_MEMBER(gba_state::gba_io_w) if( !(data & 0x40000) ) // if we're not in Count-Up mode { attotime time = attotime::from_hz(final); - GBA_ATTOTIME_NORMALIZE(time); m_tmr_timer[offset]->adjust(time, offset, time); } } diff --git a/src/mame/drivers/igs017.cpp b/src/mame/drivers/igs017.cpp index 1d1d439b3fc..8ab7a8711c2 100644 --- a/src/mame/drivers/igs017.cpp +++ b/src/mame/drivers/igs017.cpp @@ -4245,4 +4245,7 @@ GAME( 1998, slqz2, 0, slqz2, slqz2, igs017_state, slqz2, ROT GAME( 1999?, tarzan, 0, iqblocka, iqblocka, igs017_state, tarzan, ROT0, "IGS", "Tarzan (V109C)", MACHINE_NOT_WORKING ) GAME( 1999?, tarzana, tarzan, iqblocka, iqblocka, igs017_state, tarzana, ROT0, "IGS", "Tarzan (V107)", MACHINE_NOT_WORKING ) GAME( 2000?, starzan, 0, starzan, iqblocka, igs017_state, starzan, ROT0, "IGS / G.F. Gioca", "Super Tarzan (Italy, V100I)", MACHINE_NOT_WORKING ) -GAME( ????, spkrform, spk116it, spkrform, spkrform, igs017_state, spkrform, ROT0, "IGS", "Super Poker (v100xD03) / Formosa", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION ) + +/* Parent spk306us in driver spoker.cpp. Move this set to that driver? */ +GAME( ????, spkrform, spk306us, spkrform, spkrform, igs017_state, spkrform, ROT0, "IGS", "Super Poker (v100xD03) / Formosa", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION ) + diff --git a/src/mame/drivers/neogeo_noslot.cpp b/src/mame/drivers/neogeo_noslot.cpp index f3f79953c03..8fc68f9edcf 100644 --- a/src/mame/drivers/neogeo_noslot.cpp +++ b/src/mame/drivers/neogeo_noslot.cpp @@ -683,6 +683,8 @@ ROM_END . NGH-007 NEO-AEG PROG42G / NEO-AEG CHA42G NEO-AEG PROG42G / NEO-AEG CHA-8M + . prototype + NEO-AEG PROG-EP / NEO-AEG CHA-EP ****************************************/ ROM_START( alpham2 ) /* MVS AND AES VERSION */ @@ -707,33 +709,33 @@ ROM_START( alpham2 ) /* MVS AND AES VERSION */ ROM_LOAD16_BYTE( "007-c4.c4", 0x200001, 0x080000, CRC(7d588349) SHA1(a5ed789d7bbc25be5c5b2d99883b64d379c103a2) ) /* Plane 2,3 */ /* TC534200 */ ROM_END -ROM_START( alpham2p ) /* early prototype - all roms were hand labeled with CRCs, dumps verified against them */ +ROM_START( alpham2p ) /* early prototype - all roms were hand labeled with CRCs, dumps verified against them */ /* AES VERSION*/ ROM_REGION( 0x100000, "maincpu", 0 ) - ROM_LOAD16_BYTE( "proto_007-p1.p1", 0x000001, 0x080000, CRC(c763e52a) SHA1(b24acbac255c5ee1a2e92e77cdde6620a24081cf) ) - ROM_LOAD16_BYTE( "proto_007-p2.p2", 0x000000, 0x080000, CRC(7a0b435c) SHA1(40e6f42a92001d9f4e51898dd7489da143b6b74b) ) + ROM_LOAD16_BYTE( "007_p1_faac.p1", 0x000001, 0x080000, CRC(c763e52a) SHA1(b24acbac255c5ee1a2e92e77cdde6620a24081cf) ) + ROM_LOAD16_BYTE( "007_p2_1813.p2", 0x000000, 0x080000, CRC(7a0b435c) SHA1(40e6f42a92001d9f4e51898dd7489da143b6b74b) ) - NEO_SFIX_128K( "proto_007-s1.s1", CRC(efc9ae2e) SHA1(a594826b0082fe5a13191673e8d9aa42517230f5) ) + NEO_SFIX_128K( "007_s1_36f1.s1", CRC(efc9ae2e) SHA1(a594826b0082fe5a13191673e8d9aa42517230f5) ) - NEO_BIOS_AUDIO_128K( "proto_007-m1.m1", CRC(5976b464) SHA1(ec824567ecc3579f6d86c9d9385710cbaeef16a3) ) + NEO_BIOS_AUDIO_128K( "007_m1_9384.m1", CRC(5976b464) SHA1(ec824567ecc3579f6d86c9d9385710cbaeef16a3) ) ROM_REGION( 0x200000, "ymsnd", 0 ) - ROM_LOAD( "proto_007-v11.v11", 0x000000, 0x080000, CRC(18eaa9e1) SHA1(85c94d8660f8a32e4ca8e015f0bd704208482d68) ) - ROM_LOAD( "proto_007-v12.v12", 0x080000, 0x080000, CRC(2487d495) SHA1(49af3c4dc6a38c5158d3641fd8f9a40041b42aa6) ) - ROM_LOAD( "proto_007-v13.v13", 0x100000, 0x080000, CRC(25e60f25) SHA1(d06b0df872372de38fcf90187195070ac5f8c651) ) - ROM_LOAD( "proto_007-v21.v21", 0x180000, 0x080000, CRC(ac44b75a) SHA1(7399a05cd4e2c7ecde4a7323d3e189255afe5fc2) ) + ROM_LOAD( "007_v11_1bb4.v11", 0x000000, 0x080000, CRC(18eaa9e1) SHA1(85c94d8660f8a32e4ca8e015f0bd704208482d68) ) + ROM_LOAD( "007_v12_c8e8.v12", 0x080000, 0x080000, CRC(2487d495) SHA1(49af3c4dc6a38c5158d3641fd8f9a40041b42aa6) ) + ROM_LOAD( "007_v13_09fa.v13", 0x100000, 0x080000, CRC(25e60f25) SHA1(d06b0df872372de38fcf90187195070ac5f8c651) ) + ROM_LOAD( "007_v21_28c2.v21", 0x180000, 0x080000, CRC(ac44b75a) SHA1(7399a05cd4e2c7ecde4a7323d3e189255afe5fc2) ) ROM_REGION( 0x080000, "ymsnd.deltat", 0 ) ROM_COPY( "ymsnd", 0x180000, 0x00000, 0x80000 ) ROM_REGION( 0x400000, "sprites", 0 ) // note, ROM_LOAD32_BYTE - ROM_LOAD32_BYTE( "proto_007-c1.c1", 0x000000, 0x80000, CRC(24841639) SHA1(fcc2a349121dad86ffefc44b9f0e8ba616ce0d30) ) /* Plane 0 */ - ROM_LOAD32_BYTE( "proto_007-c2.c2", 0x000002, 0x80000, CRC(912763ab) SHA1(cedf26d7d85ad140399ee62813c71f35e65498d6) ) /* Plane 2 */ - ROM_LOAD32_BYTE( "proto_007-c3.c3", 0x000001, 0x80000, CRC(0743bde2) SHA1(0d13ad6333909ad3cf10f9ac360f9abf191318de) ) /* Plane 1 */ - ROM_LOAD32_BYTE( "proto_007-c4.c4", 0x000003, 0x80000, CRC(61240212) SHA1(dee36f6604adaeb96e0d761a7256241c066b1cd2) ) /* Plane 3 */ - ROM_LOAD32_BYTE( "proto_007-c5.c5", 0x200000, 0x80000, CRC(cf9f4c53) SHA1(f979c85f83d9f76e554c2617f85f6d4efca6799c) ) /* Plane 0 */ - ROM_LOAD32_BYTE( "proto_007-c6.c6", 0x200002, 0x80000, CRC(3d903b19) SHA1(001a8c762336b855fe1df69fe2e605d30a3f00a1) ) /* Plane 2 */ - ROM_LOAD32_BYTE( "proto_007-c7.c7", 0x200001, 0x80000, CRC(e41e3875) SHA1(730aceb8a66cb33d0194b096568f053ad7dc000a) ) /* Plane 1 */ - ROM_LOAD32_BYTE( "proto_007-c8.c8", 0x200003, 0x80000, CRC(4483e2cf) SHA1(47c3364f5c36ae9dc3a49fe37ca60bcee0e73314) ) /* Plane 3 */ + ROM_LOAD32_BYTE( "007_c1_210e.c11", 0x000000, 0x80000, CRC(24841639) SHA1(fcc2a349121dad86ffefc44b9f0e8ba616ce0d30) ) /* Plane 0 */ + ROM_LOAD32_BYTE( "007_c2_29ae.c12", 0x000002, 0x80000, CRC(912763ab) SHA1(cedf26d7d85ad140399ee62813c71f35e65498d6) ) /* Plane 2 */ + ROM_LOAD32_BYTE( "007_c3_c873.c13", 0x000001, 0x80000, CRC(0743bde2) SHA1(0d13ad6333909ad3cf10f9ac360f9abf191318de) ) /* Plane 1 */ + ROM_LOAD32_BYTE( "007_c4_2462.c14", 0x000003, 0x80000, CRC(61240212) SHA1(dee36f6604adaeb96e0d761a7256241c066b1cd2) ) /* Plane 3 */ + ROM_LOAD32_BYTE( "007_c5_5f16.c15", 0x200000, 0x80000, CRC(cf9f4c53) SHA1(f979c85f83d9f76e554c2617f85f6d4efca6799c) ) /* Plane 0 */ + ROM_LOAD32_BYTE( "007_c6_8abc.c16", 0x200002, 0x80000, CRC(3d903b19) SHA1(001a8c762336b855fe1df69fe2e605d30a3f00a1) ) /* Plane 2 */ + ROM_LOAD32_BYTE( "007_c7_c983.c17", 0x200001, 0x80000, CRC(e41e3875) SHA1(730aceb8a66cb33d0194b096568f053ad7dc000a) ) /* Plane 1 */ + ROM_LOAD32_BYTE( "007_c8_b599.c18", 0x200003, 0x80000, CRC(4483e2cf) SHA1(47c3364f5c36ae9dc3a49fe37ca60bcee0e73314) ) /* Plane 3 */ ROM_END /**************************************** @@ -1023,6 +1025,8 @@ ROM_END NEO-MVS PROG42G / NEO-MVS CHA42G . NGH-018 NEO-AEG PROG42G / NEO-AEG CHA42G + . prototype + NEO-AEG PROG-EP / NEO-AEG CHA-EP ****************************************/ ROM_START( burningf ) /* MVS AND AES VERSION */ @@ -1067,32 +1071,32 @@ ROM_START( burningfh ) /* AES VERSION (US) */ ROM_LOAD16_BYTE( "018-c4.c4", 0x200001, 0x100000, CRC(e2e0aff7) SHA1(1c691c092a6e2787de4f433b0eb9252bfdaa7e16) ) /* Plane 2,3 */ /* HN62408 */ ROM_END -ROM_START( burningfp ) /* early prototype - all roms were hand labeled with CRCs, dumps verified against them */ +ROM_START( burningfp ) /* early prototype - all roms were hand labeled with CRCs, dumps verified against them */ /* AES VERSION */ ROM_REGION( 0x100000, "maincpu", 0 ) - ROM_LOAD16_BYTE( "proto_018-p1.p1", 0x000001, 0x080000, CRC(5b4032e7) SHA1(55df91dad6f484d3d49c28ab5972700bf71a8662) ) - ROM_LOAD16_BYTE( "proto_018-p2.p2", 0x000000, 0x080000, CRC(78762f68) SHA1(12170fc6efe75cb5d32624033d3d341032c97548) ) + ROM_LOAD16_BYTE( "018_p1_9397.p1", 0x000001, 0x080000, CRC(5b4032e7) SHA1(55df91dad6f484d3d49c28ab5972700bf71a8662) ) + ROM_LOAD16_BYTE( "018_p2_e335.p2", 0x000000, 0x080000, CRC(78762f68) SHA1(12170fc6efe75cb5d32624033d3d341032c97548) ) - NEO_SFIX_128K( "proto_018-s1.s1", CRC(f3d130e8) SHA1(2fdeb93f4bb2a60d391cac2822be41661b1e1795) ) + NEO_SFIX_128K( "018_s1_9899.s1", CRC(f3d130e8) SHA1(2fdeb93f4bb2a60d391cac2822be41661b1e1795) ) - NEO_BIOS_AUDIO_128K( "proto_018-m1.m1", CRC(470dd5d4) SHA1(4291811b4aefe45261a1ae3631b6999fcd74fb3f) ) + NEO_BIOS_AUDIO_128K( "018_m1_4586.m1", CRC(470dd5d4) SHA1(4291811b4aefe45261a1ae3631b6999fcd74fb3f) ) ROM_REGION( 0x200000, "ymsnd", 0 ) - ROM_LOAD( "proto_018-v11.v11", 0x000000, 0x080000, CRC(dc07ea3c) SHA1(c3e71aaec44ead7ddc581565d16b90030e6db5fd) ) - ROM_LOAD( "proto_018-v12.v12", 0x080000, 0x080000, CRC(f1ae637c) SHA1(02a4c7d4a544350a314ab7b26d8c9d3baa8f5778) ) - ROM_LOAD( "proto_018-v21.v21", 0x100000, 0x080000, CRC(9f3b4eda) SHA1(7f516923d04daa483b4b99c9babba66505931a34) ) + ROM_LOAD( "018_v11_56ac.v11", 0x000000, 0x080000, CRC(dc07ea3c) SHA1(c3e71aaec44ead7ddc581565d16b90030e6db5fd) ) + ROM_LOAD( "018_v12_db95.v12", 0x080000, 0x080000, CRC(f1ae637c) SHA1(02a4c7d4a544350a314ab7b26d8c9d3baa8f5778) ) + ROM_LOAD( "018_v21_98dd.v21", 0x100000, 0x080000, CRC(9f3b4eda) SHA1(7f516923d04daa483b4b99c9babba66505931a34) ) ROM_REGION( 0x080000, "ymsnd.deltat", 0 ) ROM_COPY( "ymsnd", 0x100000, 0x00000, 0x80000 ) ROM_REGION( 0x400000, "sprites", 0 ) // note, ROM_LOAD32_BYTE - ROM_LOAD32_BYTE( "proto_018-c1.c1", 0x000000, 0x80000, CRC(6569018b) SHA1(25040e0a9c2b72900100a22a2a41de5f6c339d8a) ) /* Plane 0 */ - ROM_LOAD32_BYTE( "proto_018-c2.c2", 0x000002, 0x80000, CRC(6949b501) SHA1(d8ee48837faff6cc849046ee8757b2b94d440303) ) /* Plane 2 */ - ROM_LOAD32_BYTE( "proto_018-c3.c3", 0x000001, 0x80000, CRC(410f653b) SHA1(ce94667721baa7b2c318fc268e3bb9209671c9f5) ) /* Plane 1 */ - ROM_LOAD32_BYTE( "proto_018-c4.c4", 0x000003, 0x80000, CRC(d43bf2a5) SHA1(c27985d8973611d02570f469a0d8cb4f5b63b614) ) /* Plane 3 */ - ROM_LOAD32_BYTE( "proto_018-c5.c5", 0x200000, 0x80000, CRC(837d09d3) SHA1(d3b06931fca6123604549599544b04529ef34c53) ) /* Plane 0 */ - ROM_LOAD32_BYTE( "proto_018-c6.c6", 0x200002, 0x80000, CRC(5fee51e7) SHA1(835c632fa12a1d5b4104cd80b8f686ac80b314a1) ) /* Plane 2 */ - ROM_LOAD32_BYTE( "proto_018-c7.c7", 0x200001, 0x80000, CRC(0f3f0823) SHA1(ec1d681c1795de43d20f30f85956e2473ec39c95) ) /* Plane 1 */ - ROM_LOAD32_BYTE( "proto_018-c8.c8", 0x200003, 0x80000, CRC(67cc9e34) SHA1(dc72a464c1456a4d2f7b992b416a984fb7885e99) ) /* Plane 3 */ + ROM_LOAD32_BYTE( "018_c1_ba06.c11", 0x000000, 0x80000, CRC(6569018b) SHA1(25040e0a9c2b72900100a22a2a41de5f6c339d8a) ) /* Plane 0 */ + ROM_LOAD32_BYTE( "018_c2_d534.c12", 0x000002, 0x80000, CRC(6949b501) SHA1(d8ee48837faff6cc849046ee8757b2b94d440303) ) /* Plane 2 */ + ROM_LOAD32_BYTE( "018_c3_9d70.c13", 0x000001, 0x80000, CRC(410f653b) SHA1(ce94667721baa7b2c318fc268e3bb9209671c9f5) ) /* Plane 1 */ + ROM_LOAD32_BYTE( "018_c4_bf9d.c14", 0x000003, 0x80000, CRC(d43bf2a5) SHA1(c27985d8973611d02570f469a0d8cb4f5b63b614) ) /* Plane 3 */ + ROM_LOAD32_BYTE( "018_c5_ac9d.c15", 0x200000, 0x80000, CRC(837d09d3) SHA1(d3b06931fca6123604549599544b04529ef34c53) ) /* Plane 0 */ + ROM_LOAD32_BYTE( "018_c6_d2a5.c16", 0x200002, 0x80000, CRC(5fee51e7) SHA1(835c632fa12a1d5b4104cd80b8f686ac80b314a1) ) /* Plane 2 */ + ROM_LOAD32_BYTE( "018_c7_d568.c17", 0x200001, 0x80000, CRC(0f3f0823) SHA1(ec1d681c1795de43d20f30f85956e2473ec39c95) ) /* Plane 1 */ + ROM_LOAD32_BYTE( "018_c8_d256.c18", 0x200003, 0x80000, CRC(67cc9e34) SHA1(dc72a464c1456a4d2f7b992b416a984fb7885e99) ) /* Plane 3 */ ROM_END /**************************************** @@ -1287,6 +1291,9 @@ ROM_END . NGM-024 NEO-MVS PROG42G-1 / NEO-MVS CHA42G-1 . NGH-024 + + . prototype + NEO-MVS PROG-EP / NEO-MVS CHA-EPG ****************************************/ ROM_START( lresort ) @@ -1310,32 +1317,32 @@ ROM_START( lresort ) ROM_LOAD16_BYTE( "024-c4.c4", 0x200001, 0x080000, CRC(7382fefb) SHA1(e916dec5bb5462eb9ae9711f08c7388937abb980) ) /* Plane 2,3 */ /* TC534200 */ ROM_END -ROM_START( lresortp ) /* prototype - all roms were hand labeled with CRCs */ +ROM_START( lresortp ) /* prototype - all roms were hand labeled with CRCs */ /* MVS VERSION */ ROM_REGION( 0x100000, "maincpu", 0 ) - ROM_LOAD16_BYTE( "024_p1_5937.bin", 0x000001, 0x080000, CRC(8e6008ee) SHA1(6779663118782207156dc9fa9e24e81e30c6391c) ) - ROM_LOAD16_BYTE( "024_p2_8d37.bin", 0x000000, 0x080000, CRC(6d9ee90f) SHA1(ecd42182988092417bc96db8301ea408e47735f2) ) + ROM_LOAD16_BYTE( "024_p1_5937.podd", 0x000001, 0x080000, CRC(8e6008ee) SHA1(6779663118782207156dc9fa9e24e81e30c6391c) ) + ROM_LOAD16_BYTE( "024_p2_8d37.peven", 0x000000, 0x080000, CRC(6d9ee90f) SHA1(ecd42182988092417bc96db8301ea408e47735f2) ) - NEO_SFIX_128K( "024_s1_22fe.bin", CRC(5cef5cc6) SHA1(9ec305007bdb356e9f8f279beae5e2bcb3f2cf7b) ) + NEO_SFIX_128K( "024_s1_22fe.s1", CRC(5cef5cc6) SHA1(9ec305007bdb356e9f8f279beae5e2bcb3f2cf7b) ) - NEO_BIOS_AUDIO_128K( "024_m1_fc7a.bin", CRC(22122875) SHA1(540c21559163381467679f836cb068adaf526659) ) + NEO_BIOS_AUDIO_128K( "024_m1_fc7a.m1", CRC(22122875) SHA1(540c21559163381467679f836cb068adaf526659) ) ROM_REGION( 0x200000, "ymsnd", 0 ) - ROM_LOAD( "024_v11_b085.bin", 0x000000, 0x080000, CRC(0722da38) SHA1(66a9b463d5277908b3a01c03de82b3de9118f2cb) ) // 024_v11_b085.bin 024-v1.v1 [1/2] IDENTICAL - ROM_LOAD( "024_v12_d3b7.bin", 0x080000, 0x080000, CRC(670ce3ec) SHA1(9004aa85d4a9b0ecf9cf9357b073ed55a98fdb02) ) // 024_v12_d3b7.bin 024-v1.v1 [2/2] IDENTICAL - ROM_LOAD( "024_v13_a31e.bin", 0x100000, 0x080000, CRC(2e39462b) SHA1(b0a9b1a3377bf0369f3020192505c46ca52927d6) ) // 024_v13_a31e.bin 024-v2.v2 [1/2] IDENTICAL - ROM_LOAD( "024_v24_2f0f.bin", 0x180000, 0x080000, CRC(7944754f) SHA1(d42a46c5127c6c62041ebffb0007af8a24abd360) ) // 024_v24_2f0f.bin 024-v2.v2 [2/2] IDENTICAL + ROM_LOAD( "024_v11_b085.v11", 0x000000, 0x080000, CRC(0722da38) SHA1(66a9b463d5277908b3a01c03de82b3de9118f2cb) ) // 024_v11_b085.bin 024-v1.v1 [1/2] IDENTICAL + ROM_LOAD( "024_v12_d3b7.v12", 0x080000, 0x080000, CRC(670ce3ec) SHA1(9004aa85d4a9b0ecf9cf9357b073ed55a98fdb02) ) // 024_v12_d3b7.bin 024-v1.v1 [2/2] IDENTICAL + ROM_LOAD( "024_v13_a31e.v13", 0x100000, 0x080000, CRC(2e39462b) SHA1(b0a9b1a3377bf0369f3020192505c46ca52927d6) ) // 024_v13_a31e.bin 024-v2.v2 [1/2] IDENTICAL + ROM_LOAD( "024_v24_2f0f.v24", 0x180000, 0x080000, CRC(7944754f) SHA1(d42a46c5127c6c62041ebffb0007af8a24abd360) ) // 024_v24_2f0f.bin 024-v2.v2 [2/2] IDENTICAL NO_DELTAT_REGION ROM_REGION( 0x400000, "sprites", 0 ) // note, ROM_LOAD32_BYTE - ROM_LOAD32_BYTE( "024_c1_b764.bin", 0x000000, 0x80000, CRC(677749ec) SHA1(6f94675e037956a380652ab1056e6f1dec605bec) ) /* Plane 0 */ - ROM_LOAD32_BYTE( "024_c2_1951.bin", 0x000002, 0x80000, CRC(104d7b59) SHA1(404e8776ee8df4ca282eb7b747759af8628ddca1) ) /* Plane 2 */ - ROM_LOAD32_BYTE( "024_c3_0f63.bin", 0x000001, 0x80000, CRC(b0965a74) SHA1(e8026dd4f722ccab9c913261d09ab8843ef56a0e) ) /* Plane 1 */ - ROM_LOAD32_BYTE( "024_c4_c5b5.bin", 0x000003, 0x80000, CRC(dcfc3860) SHA1(8443b455ae8de656adab57f3b7e68919f22d3b9d) ) /* Plane 3 */ - ROM_LOAD32_BYTE( "024_c5_dd03.bin", 0x200000, 0x80000, CRC(50322397) SHA1(3308fbe48ad165b9894a52fc3a8d9898bbbc0c0e) ) /* Plane 0 */ - ROM_LOAD32_BYTE( "024_c6_c81a.bin", 0x200002, 0x80000, CRC(c3c93894) SHA1(f23b9d7e2b54d44c96370dde282bdf45cebd9cba) ) /* Plane 2 */ - ROM_LOAD32_BYTE( "024_c7_5edc.bin", 0x200001, 0x80000, CRC(21faf72b) SHA1(00bf257b06180ae6ede57744cea6257b3488d9f0) ) /* Plane 1 */ - ROM_LOAD32_BYTE( "024_c8_0850.bin", 0x200003, 0x80000, CRC(fb57217b) SHA1(607a98da754e8b1dd94a6432b21a36cc38e06a0f) ) /* Plane 3 */ + ROM_LOAD32_BYTE( "024_c1_b764.c1", 0x000000, 0x80000, CRC(677749ec) SHA1(6f94675e037956a380652ab1056e6f1dec605bec) ) /* Plane 0 */ + ROM_LOAD32_BYTE( "024_c2_1951.c2", 0x000002, 0x80000, CRC(104d7b59) SHA1(404e8776ee8df4ca282eb7b747759af8628ddca1) ) /* Plane 2 */ + ROM_LOAD32_BYTE( "024_c3_0f63.c3", 0x000001, 0x80000, CRC(b0965a74) SHA1(e8026dd4f722ccab9c913261d09ab8843ef56a0e) ) /* Plane 1 */ + ROM_LOAD32_BYTE( "024_c4_c5b5.c4", 0x000003, 0x80000, CRC(dcfc3860) SHA1(8443b455ae8de656adab57f3b7e68919f22d3b9d) ) /* Plane 3 */ + ROM_LOAD32_BYTE( "024_c5_dd03.c5", 0x200000, 0x80000, CRC(50322397) SHA1(3308fbe48ad165b9894a52fc3a8d9898bbbc0c0e) ) /* Plane 0 */ + ROM_LOAD32_BYTE( "024_c6_c81a.c6", 0x200002, 0x80000, CRC(c3c93894) SHA1(f23b9d7e2b54d44c96370dde282bdf45cebd9cba) ) /* Plane 2 */ + ROM_LOAD32_BYTE( "024_c7_5edc.c7", 0x200001, 0x80000, CRC(21faf72b) SHA1(00bf257b06180ae6ede57744cea6257b3488d9f0) ) /* Plane 1 */ + ROM_LOAD32_BYTE( "024_c8_0850.c8", 0x200003, 0x80000, CRC(fb57217b) SHA1(607a98da754e8b1dd94a6432b21a36cc38e06a0f) ) /* Plane 3 */ ROM_END diff --git a/src/mame/drivers/ng_aes.cpp b/src/mame/drivers/ng_aes.cpp index 994dfbef4e5..42577544f51 100644 --- a/src/mame/drivers/ng_aes.cpp +++ b/src/mame/drivers/ng_aes.cpp @@ -1523,27 +1523,12 @@ MACHINE_CONFIG_END ROM_START( aes ) ROM_REGION16_BE( 0x20000, "mainbios", 0 ) ROM_SYSTEM_BIOS( 0, "asia", "Asia AES" ) - ROM_LOAD16_WORD_SWAP_BIOS( 0, "neo-epo.bin", 0x00000, 0x020000, CRC(d27a71f1) SHA1(1b3b22092f30c4d1b2c15f04d1670eb1e9fbea07) ) /* AES Console (Asia?) Bios */ + ROM_LOAD16_WORD_SWAP_BIOS( 0, "neo-epo.bin", 0x00000, 0x020000, CRC(d27a71f1) SHA1(1b3b22092f30c4d1b2c15f04d1670eb1e9fbea07) ) /* AES Console (Asia?) Bios */ ROM_SYSTEM_BIOS( 1, "japan", "Japan AES" ) - ROM_LOAD16_WORD_SWAP_BIOS( 1, "neo-po.bin", 0x00000, 0x020000, CRC(16d0c132) SHA1(4e4a440cae46f3889d20234aebd7f8d5f522e22c) ) /* AES Console (Japan) Bios */ + ROM_LOAD16_WORD_SWAP_BIOS( 1, "neo-po.bin", 0x00000, 0x020000, CRC(16d0c132) SHA1(4e4a440cae46f3889d20234aebd7f8d5f522e22c) ) /* AES Console (Japan) Bios */ ROM_SYSTEM_BIOS( 2, "devel", "Development System ROM" ) - ROM_LOAD16_WORD_SWAP_BIOS( 2, "neodebug.rom", 0x00000, 0x020000, CRC(698ebb7d) SHA1(081c49aa8cc7dad5939833dc1b18338321ea0a07) ) /* Official debug (development) ROM, for home-use base board */ - ROM_SYSTEM_BIOS( 3, "unibios31", "Universe Bios (Hack, Ver. 3.1)" ) - ROM_LOAD16_WORD_SWAP_BIOS( 3, "uni-bios_3_1.rom", 0x00000, 0x020000, CRC(0c58093f) SHA1(29329a3448c2505e1ff45ffa75e61e9693165153) ) /* Universe Bios v3.1 (hack) */ - ROM_SYSTEM_BIOS( 4, "unibios30", "Universe Bios (Hack, Ver. 3.0)" ) - ROM_LOAD16_WORD_SWAP_BIOS( 4, "uni-bios_3_0.rom", 0x00000, 0x020000, CRC(a97c89a9) SHA1(97a5eff3b119062f10e31ad6f04fe4b90d366e7f) ) /* Universe Bios v3.0 (hack) */ - ROM_SYSTEM_BIOS( 5, "unibios23", "Universe Bios (Hack, Ver. 2.3)" ) - ROM_LOAD16_WORD_SWAP_BIOS( 5, "uni-bios_2_3.rom", 0x00000, 0x020000, CRC(27664eb5) SHA1(5b02900a3ccf3df168bdcfc98458136fd2b92ac0) ) /* Universe Bios v2.3 (hack) */ - ROM_SYSTEM_BIOS( 6, "unibios23o", "Universe Bios (Hack, Ver. 2.3, older?)" ) - ROM_LOAD16_WORD_SWAP_BIOS( 6, "uni-bios_2_3o.rom", 0x00000, 0x020000, CRC(601720ae) SHA1(1b8a72c720cdb5ee3f1d735bbcf447b09204b8d9) ) /* Universe Bios v2.3 (hack) alt version, withdrawn? */ - ROM_SYSTEM_BIOS( 7, "unibios22", "Universe Bios (Hack, Ver. 2.2)" ) - ROM_LOAD16_WORD_SWAP_BIOS( 7, "uni-bios_2_2.rom", 0x00000, 0x020000, CRC(2d50996a) SHA1(5241a4fb0c63b1a23fd1da8efa9c9a9bd3b4279c) ) /* Universe Bios v2.2 (hack) */ - ROM_SYSTEM_BIOS( 8, "unibios21", "Universe Bios (Hack, Ver. 2.1)" ) - ROM_LOAD16_WORD_SWAP_BIOS( 8, "uni-bios_2_1.rom", 0x00000, 0x020000, CRC(8dabf76b) SHA1(c23732c4491d966cf0373c65c83c7a4e88f0082c) ) /* Universe Bios v2.1 (hack) */ - ROM_SYSTEM_BIOS( 9, "unibios20", "Universe Bios (Hack, Ver. 2.0)" ) - ROM_LOAD16_WORD_SWAP_BIOS( 9, "uni-bios_2_0.rom", 0x00000, 0x020000, CRC(0c12c2ad) SHA1(37bcd4d30f3892078b46841d895a6eff16dc921e) ) /* Universe Bios v2.0 (hack) */ - ROM_SYSTEM_BIOS(10, "unibios13", "Universe Bios (Hack, Ver. 1.3)" ) - ROM_LOAD16_WORD_SWAP_BIOS(10, "uni-bios_1_3.rom", 0x00000, 0x020000, CRC(b24b44a0) SHA1(eca8851d30557b97c309a0d9f4a9d20e5b14af4e) ) /* Universe Bios v1.3 (hack) - note: versions older than 1.3 don't support AES hardware */ + ROM_LOAD16_WORD_SWAP_BIOS( 2, "neodebug.rom", 0x00000, 0x020000, CRC(698ebb7d) SHA1(081c49aa8cc7dad5939833dc1b18338321ea0a07) ) /* Official debug (development) ROM, for home-use base board */ + NEOGEO_UNIBIOS(3) ROM_REGION( 0x200000, "maincpu", ROMREGION_ERASEFF ) diff --git a/src/mame/drivers/pcat_dyn.cpp b/src/mame/drivers/pcat_dyn.cpp index 00b1a7df54d..baaa94626ee 100644 --- a/src/mame/drivers/pcat_dyn.cpp +++ b/src/mame/drivers/pcat_dyn.cpp @@ -23,7 +23,7 @@ If the output isn't satisfactory, it prints "I/O BOARD FAILURE". #include "emu.h" #include "cpu/i386/i386.h" #include "machine/pcshare.h" -#include "video/pc_vga.h" +#include "bus/isa/trident.h" #include "machine/bankdev.h" #include "machine/ds128x.h" #include "machine/ins8250.h" @@ -56,7 +56,7 @@ WRITE8_MEMBER(pcat_dyn_state::bank2_w) static ADDRESS_MAP_START( pcat_map, AS_PROGRAM, 32, pcat_dyn_state ) AM_RANGE(0x00000000, 0x0009ffff) AM_RAM - AM_RANGE(0x000a0000, 0x000bffff) AM_DEVREADWRITE8("vga", vga_device, mem_r, mem_w, 0xffffffff) + AM_RANGE(0x000a0000, 0x000bffff) AM_DEVREADWRITE8("vga", trident_vga_device, mem_r, mem_w, 0xffffffff) AM_RANGE(0x000c0000, 0x000c7fff) AM_ROM AM_REGION("video_bios", 0) AM_RANGE(0x000d0000, 0x000d0fff) AM_ROM AM_REGION("game_prg", 0x0000) AM_WRITE8(bank1_w, 0xffffffff) AM_RANGE(0x000d1000, 0x000d1fff) AM_ROM AM_REGION("game_prg", 0x1000) AM_WRITE8(bank2_w, 0xffffffff) @@ -70,9 +70,9 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( pcat_io, AS_IO, 32, pcat_dyn_state ) AM_IMPORT_FROM(pcat32_io_common) - AM_RANGE(0x03b0, 0x03bf) AM_DEVREADWRITE8("vga", vga_device, port_03b0_r, port_03b0_w, 0xffffffff) - AM_RANGE(0x03c0, 0x03cf) AM_DEVREADWRITE8("vga", vga_device, port_03c0_r, port_03c0_w, 0xffffffff) - AM_RANGE(0x03d0, 0x03df) AM_DEVREADWRITE8("vga", vga_device, port_03d0_r, port_03d0_w, 0xffffffff) + AM_RANGE(0x03b0, 0x03bf) AM_DEVREADWRITE8("vga", trident_vga_device, port_03b0_r, port_03b0_w, 0xffffffff) + AM_RANGE(0x03c0, 0x03cf) AM_DEVREADWRITE8("vga", trident_vga_device, port_03c0_r, port_03c0_w, 0xffffffff) + AM_RANGE(0x03d0, 0x03df) AM_DEVREADWRITE8("vga", trident_vga_device, port_03d0_r, port_03d0_w, 0xffffffff) AM_RANGE(0x03f8, 0x03ff) AM_DEVREADWRITE8("ns16550", ns16550_device, ins8250_r, ins8250_w, 0xffffffff) ADDRESS_MAP_END @@ -126,7 +126,7 @@ static MACHINE_CONFIG_START( pcat_dyn, pcat_dyn_state ) MCFG_CPU_IRQ_ACKNOWLEDGE_DEVICE("pic8259_1", pic8259_device, inta_cb) /* video hardware */ - MCFG_FRAGMENT_ADD( pcvideo_vga ) + MCFG_FRAGMENT_ADD( pcvideo_trident_vga ) MCFG_SCREEN_MODIFY("screen") MCFG_SCREEN_REFRESH_RATE(60) diff --git a/src/mame/drivers/ssem.cpp b/src/mame/drivers/ssem.cpp index 278d02518fb..dac314aa9eb 100644 --- a/src/mame/drivers/ssem.cpp +++ b/src/mame/drivers/ssem.cpp @@ -416,6 +416,7 @@ void ssem_state::glyph_print(bitmap_rgb32 &bitmap, INT32 x, INT32 y, Format &&fm { const rectangle &visarea = m_screen->visible_area(); + m_glyph_print_buf.clear(); m_glyph_print_buf.seekp(0, util::ovectorstream::beg); util::stream_format(m_glyph_print_buf, std::forward<Format>(fmt), std::forward<Params>(args)...); m_glyph_print_buf.put('\0'); diff --git a/src/mame/drivers/svi318.cpp b/src/mame/drivers/svi318.cpp index 2529508e2b3..b2a6a2975f3 100644 --- a/src/mame/drivers/svi318.cpp +++ b/src/mame/drivers/svi318.cpp @@ -22,10 +22,18 @@ #include "formats/svi_cas.h" #include "bus/generic/slot.h" #include "bus/generic/carts.h" +#include "bus/svi3x8/expander/expander.h" #include "softlist.h" //************************************************************************** +// CONSTANTS & MACROS +//************************************************************************** + +#define IS_SVI328 (m_ram->size() == 64 * 1024) + + +//************************************************************************** // TYPE DEFINITIONS //************************************************************************** @@ -39,18 +47,32 @@ public: m_basic(*this, "basic"), m_speaker(*this, "speaker"), m_cassette(*this, "cassette"), - m_cart(*this, "cartslot"), + m_cart_rom(*this, "cartslot"), + m_expander(*this, "exp"), m_keyboard(*this, "KEY"), m_buttons(*this, "BUTTONS"), + m_intvdp(0), m_intexp(0), + m_romdis(1), m_ramdis(1), + m_cart(1), m_bk21(1), m_keyboard_row(0) {} DECLARE_READ8_MEMBER( ppi_port_a_r ); DECLARE_READ8_MEMBER( ppi_port_b_r ); DECLARE_WRITE8_MEMBER( ppi_port_c_w ); - DECLARE_WRITE8_MEMBER( psg_port_b_w ); + DECLARE_WRITE8_MEMBER( bank_w ); DECLARE_WRITE_LINE_MEMBER( intvdp_w ); + READ8_MEMBER( page1_r ); + WRITE8_MEMBER( page1_w ); + READ8_MEMBER( page2_r ); + WRITE8_MEMBER( page2_w ); + + // from expander bus + DECLARE_WRITE_LINE_MEMBER( intexp_w ); + DECLARE_WRITE_LINE_MEMBER( romdis_w ); + DECLARE_WRITE_LINE_MEMBER( ramdis_w ); + DECLARE_DEVICE_IMAGE_LOAD_MEMBER(cartridge); protected: @@ -58,17 +80,23 @@ protected: virtual void machine_reset() override; private: - void reset_memory_configuration(); - required_device<cpu_device> m_maincpu; required_device<ram_device> m_ram; required_memory_region m_basic; required_device<speaker_sound_device> m_speaker; required_device<cassette_image_device> m_cassette; - required_device<generic_slot_device> m_cart; + required_device<generic_slot_device> m_cart_rom; + required_device<svi_expander_device> m_expander; required_ioport_array<16> m_keyboard; required_ioport m_buttons; + int m_intvdp; + int m_intexp; + int m_romdis; + int m_ramdis; + int m_cart; + int m_bk21; + UINT8 m_keyboard_row; }; @@ -79,10 +107,13 @@ private: static ADDRESS_MAP_START( svi3x8_mem, AS_PROGRAM, 8, svi3x8_state ) ADDRESS_MAP_UNMAP_HIGH + AM_RANGE(0x0000, 0x7fff) AM_READWRITE(page1_r, page1_w) + AM_RANGE(0x8000, 0xffff) AM_READWRITE(page2_r, page2_w) ADDRESS_MAP_END static ADDRESS_MAP_START( svi3x8_io, AS_IO, 8, svi3x8_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) + AM_RANGE(0x00, 0x7f) AM_DEVREADWRITE("exp", svi_expander_device, iorq_r, iorq_w) AM_RANGE(0x80, 0x80) AM_MIRROR(0x22) AM_DEVWRITE("vdp", tms9928a_device, vram_write) AM_RANGE(0x81, 0x81) AM_MIRROR(0x22) AM_DEVWRITE("vdp", tms9928a_device, register_write) AM_RANGE(0x84, 0x84) AM_MIRROR(0x22) AM_DEVREAD("vdp", tms9928a_device, vram_read) @@ -261,7 +292,8 @@ WRITE_LINE_MEMBER( svi3x8_state::intvdp_w ) { // note: schematics show a CNTRL line that allows switching between // IRQ and NMI for the interrupt - m_maincpu->set_input_line(INPUT_LINE_IRQ0, state); + m_intvdp = state; + m_maincpu->set_input_line(INPUT_LINE_IRQ0, (m_intvdp || m_intexp) ? ASSERT_LINE : CLEAR_LINE); } @@ -269,69 +301,90 @@ WRITE_LINE_MEMBER( svi3x8_state::intvdp_w ) // MACHINE EMULATION //************************************************************************** -void svi3x8_state::reset_memory_configuration() -{ - m_maincpu->space(AS_PROGRAM).install_rom(0x0000, 0x7fff, m_basic->base()); - - if (m_ram->size() == 64 * 1024) - { - // SVI-328 - m_maincpu->space(AS_PROGRAM).install_ram(0x8000, 0xffff, m_ram->pointer()); - } - else - { - // SVI-318 - m_maincpu->space(AS_PROGRAM).unmap_readwrite(0x8000, 0xbfff); - m_maincpu->space(AS_PROGRAM).install_ram(0xc000, 0xffff, m_ram->pointer()); - } -} - void svi3x8_state::machine_start() { // register for save states + save_item(NAME(m_intvdp)); + save_item(NAME(m_intexp)); + save_item(NAME(m_romdis)); + save_item(NAME(m_ramdis)); + save_item(NAME(m_cart)); + save_item(NAME(m_bk21)); save_item(NAME(m_keyboard_row)); } void svi3x8_state::machine_reset() { - reset_memory_configuration(); + m_intvdp = 0; + m_intexp = 0; + m_romdis = 1; + m_ramdis = 1; + m_cart = 1; + m_bk21 = 1; } -WRITE8_MEMBER( svi3x8_state::psg_port_b_w ) +READ8_MEMBER( svi3x8_state::page1_r) { - reset_memory_configuration(); + if (m_cart == 0) + return m_cart_rom->exists() ? m_cart_rom->read_rom(space, offset) : 0xff; - // CART - if (BIT(data, 0) == 0) - { - if (m_cart->exists()) - m_maincpu->space(AS_PROGRAM).install_rom(0x0000, 0x7fff, m_cart->get_rom_base()); - else - m_maincpu->space(AS_PROGRAM).unmap_readwrite(0x0000, 0x7fff); - } - else - { - // BK21 (SV-328) - if (BIT(data, 1) == 0) - { - if (m_ram->size() == 64 * 1024) - m_maincpu->space(AS_PROGRAM).install_ram(0x0000, 0x7fff, m_ram->pointer() + 0x8000); - else - m_maincpu->space(AS_PROGRAM).unmap_readwrite(0x0000, 0x7fff); - } - - // BK22 (SV-807) - if (BIT(data, 2) == 0) - m_maincpu->space(AS_PROGRAM).unmap_readwrite(0x8000, 0xffff); - - // BK31 (SV-807) - if (BIT(data, 3) == 0) - m_maincpu->space(AS_PROGRAM).unmap_readwrite(0x0000, 0x7fff); - - // BK32 (SV-807) - if (BIT(data, 4) == 0) - m_maincpu->space(AS_PROGRAM).unmap_readwrite(0x8000, 0xffff); - } + UINT8 data = m_expander->mreq_r(space, offset); + + if (m_romdis == 1) + data = m_basic->u8(offset); + + if (m_bk21 == 0 && IS_SVI328) + data = m_ram->read(offset); + + return data; +} + +WRITE8_MEMBER( svi3x8_state::page1_w) +{ + if (m_cart == 0) + return; + + m_expander->mreq_w(space, offset, data); + + if (m_bk21 == 0 && IS_SVI328) + m_ram->write(offset, data); +} + +READ8_MEMBER( svi3x8_state::page2_r) +{ + offset += 0x8000; + + UINT8 data = m_expander->mreq_r(space, offset); + + if (m_ramdis == 1 && (offset >= 0x4000 || IS_SVI328)) + return m_ram->read(IS_SVI328 ? offset : offset - 0xc000); + + return data; +} + +WRITE8_MEMBER( svi3x8_state::page2_w ) +{ + offset += 0x8000; + + m_expander->mreq_w(space, offset, data); + + if (m_ramdis == 1 && (offset >= 0x4000 || IS_SVI328)) + m_ram->write(IS_SVI328 ? offset : offset - 0xc000, data); +} + +WRITE8_MEMBER( svi3x8_state::bank_w ) +{ + logerror("bank_w: %02x\n", data); + + m_cart = BIT(data, 0); + m_bk21 = BIT(data, 1); + + m_expander->bk21_w(BIT(data, 1)); + m_expander->bk22_w(BIT(data, 2)); + m_expander->bk31_w(BIT(data, 3)); + m_expander->bk32_w(BIT(data, 4)); + + // TODO: handle ROM2/ROM3 enable (bit 6 + 7) output().set_value("led_caps_lock", BIT(data, 5)); } @@ -372,6 +425,22 @@ WRITE8_MEMBER( svi3x8_state::ppi_port_c_w ) m_speaker->level_w(BIT(data, 7)); } +WRITE_LINE_MEMBER( svi3x8_state::intexp_w ) +{ + m_intexp = state; + m_maincpu->set_input_line(INPUT_LINE_IRQ0, (m_intvdp || m_intexp) ? ASSERT_LINE : CLEAR_LINE); +} + +WRITE_LINE_MEMBER( svi3x8_state::romdis_w ) +{ + m_romdis = state; +} + +WRITE_LINE_MEMBER( svi3x8_state::ramdis_w ) +{ + m_ramdis = state; +} + //************************************************************************** // CARTRIDGE @@ -379,7 +448,7 @@ WRITE8_MEMBER( svi3x8_state::ppi_port_c_w ) DEVICE_IMAGE_LOAD_MEMBER( svi3x8_state, cartridge ) { - UINT32 size = m_cart->common_get_size("rom"); + UINT32 size = m_cart_rom->common_get_size("rom"); if (size != 0x8000) { @@ -387,8 +456,8 @@ DEVICE_IMAGE_LOAD_MEMBER( svi3x8_state, cartridge ) return IMAGE_INIT_FAIL; } - m_cart->rom_alloc(size, GENERIC_ROM8_WIDTH, ENDIANNESS_LITTLE); - m_cart->common_load_rom(m_cart->get_rom_base(), size, "rom"); + m_cart_rom->rom_alloc(size, GENERIC_ROM8_WIDTH, ENDIANNESS_LITTLE); + m_cart_rom->common_load_rom(m_cart_rom->get_rom_base(), size, "rom"); return IMAGE_INIT_PASS; } @@ -427,7 +496,7 @@ static MACHINE_CONFIG_START( svi318, svi3x8_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) MCFG_SOUND_ADD("psg", AY8910, XTAL_10_738635MHz / 6) MCFG_AY8910_PORT_A_READ_CB(IOPORT("JOY")) - MCFG_AY8910_PORT_B_WRITE_CB(WRITE8(svi3x8_state, psg_port_b_w)) + MCFG_AY8910_PORT_B_WRITE_CB(WRITE8(svi3x8_state, bank_w)) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.75) // cassette @@ -442,6 +511,12 @@ static MACHINE_CONFIG_START( svi318, svi3x8_state ) MCFG_GENERIC_EXTENSIONS("bin,rom") MCFG_GENERIC_LOAD(svi3x8_state, cartridge) MCFG_SOFTWARE_LIST_ADD("cart_list", "svi318_cart") + + // expander bus + MCFG_SVI_EXPANDER_BUS_ADD("exp") + MCFG_SVI_EXPANDER_INT_HANDLER(WRITELINE(svi3x8_state, intexp_w)) + MCFG_SVI_EXPANDER_ROMDIS_HANDLER(WRITELINE(svi3x8_state, romdis_w)) + MCFG_SVI_EXPANDER_RAMDIS_HANDLER(WRITELINE(svi3x8_state, ramdis_w)) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( svi318n, svi318 ) diff --git a/src/mame/includes/neogeo.h b/src/mame/includes/neogeo.h index da50cb62765..714d9a1c4ee 100644 --- a/src/mame/includes/neogeo.h +++ b/src/mame/includes/neogeo.h @@ -386,6 +386,34 @@ ADDRESS_MAP_EXTERN(neogeo_main_map,16); #define ROM_LOAD16_WORD_SWAP_BIOS(bios,name,offset,length,hash) \ ROMX_LOAD(name, offset, length, hash, ROM_GROUPWORD | ROM_REVERSE | ROM_BIOS(bios+1)) /* Note '+1' */ +#define NEOGEO_UNIBIOS(x) \ + ROM_SYSTEM_BIOS( x+ 0, "unibios32", "Universe Bios (Hack, Ver. 3.2)" ) \ + ROM_LOAD16_WORD_SWAP_BIOS( x+ 0, "uni-bios_3_2.rom", 0x00000, 0x020000, CRC(a4e8b9b3) SHA1(c92f18c3f1edda543d264ecd0ea915240e7c8258) ) /* Universe Bios v3.2 (hack) */ \ + ROM_SYSTEM_BIOS( x+ 1, "unibios31", "Universe Bios (Hack, Ver. 3.1)" ) \ + ROM_LOAD16_WORD_SWAP_BIOS( x+ 1, "uni-bios_3_1.rom", 0x00000, 0x020000, CRC(0c58093f) SHA1(29329a3448c2505e1ff45ffa75e61e9693165153) ) /* Universe Bios v3.1 (hack) */ \ + ROM_SYSTEM_BIOS( x+ 2, "unibios30", "Universe Bios (Hack, Ver. 3.0)" ) \ + ROM_LOAD16_WORD_SWAP_BIOS( x+ 2, "uni-bios_3_0.rom", 0x00000, 0x020000, CRC(a97c89a9) SHA1(97a5eff3b119062f10e31ad6f04fe4b90d366e7f) ) /* Universe Bios v3.0 (hack) */ \ + ROM_SYSTEM_BIOS( x+ 3, "unibios23", "Universe Bios (Hack, Ver. 2.3)" ) \ + ROM_LOAD16_WORD_SWAP_BIOS( x+ 3, "uni-bios_2_3.rom", 0x00000, 0x020000, CRC(27664eb5) SHA1(5b02900a3ccf3df168bdcfc98458136fd2b92ac0) ) /* Universe Bios v2.3 (hack) */ \ + ROM_SYSTEM_BIOS( x+ 4, "unibios23o", "Universe Bios (Hack, Ver. 2.3, older?)" ) \ + ROM_LOAD16_WORD_SWAP_BIOS( x+ 4, "uni-bios_2_3o.rom", 0x00000, 0x020000, CRC(601720ae) SHA1(1b8a72c720cdb5ee3f1d735bbcf447b09204b8d9) ) /* Universe Bios v2.3 (hack) alt version, withdrawn? */ \ + ROM_SYSTEM_BIOS( x+ 5, "unibios22", "Universe Bios (Hack, Ver. 2.2)" ) \ + ROM_LOAD16_WORD_SWAP_BIOS( x+ 5, "uni-bios_2_2.rom", 0x00000, 0x020000, CRC(2d50996a) SHA1(5241a4fb0c63b1a23fd1da8efa9c9a9bd3b4279c) ) /* Universe Bios v2.2 (hack) */ \ + ROM_SYSTEM_BIOS( x+ 6, "unibios21", "Universe Bios (Hack, Ver. 2.1)" ) \ + ROM_LOAD16_WORD_SWAP_BIOS( x+ 6, "uni-bios_2_1.rom", 0x00000, 0x020000, CRC(8dabf76b) SHA1(c23732c4491d966cf0373c65c83c7a4e88f0082c) ) /* Universe Bios v2.1 (hack) */ \ + ROM_SYSTEM_BIOS( x+ 7, "unibios20", "Universe Bios (Hack, Ver. 2.0)" ) \ + ROM_LOAD16_WORD_SWAP_BIOS( x+ 7, "uni-bios_2_0.rom", 0x00000, 0x020000, CRC(0c12c2ad) SHA1(37bcd4d30f3892078b46841d895a6eff16dc921e) ) /* Universe Bios v2.0 (hack) */ \ + ROM_SYSTEM_BIOS( x+ 8, "unibios13", "Universe Bios (Hack, Ver. 1.3)" ) \ + ROM_LOAD16_WORD_SWAP_BIOS( x+ 8, "uni-bios_1_3.rom", 0x00000, 0x020000, CRC(b24b44a0) SHA1(eca8851d30557b97c309a0d9f4a9d20e5b14af4e) ) /* Universe Bios v1.3 (hack) */ \ + ROM_SYSTEM_BIOS( x+ 9, "unibios12", "Universe Bios (Hack, Ver. 1.2)" ) \ + ROM_LOAD16_WORD_SWAP_BIOS( x+ 9, "uni-bios_1_2.rom", 0x00000, 0x020000, CRC(4fa698e9) SHA1(682e13ec1c42beaa2d04473967840c88fd52c75a) ) /* Universe Bios v1.2 (hack) */ \ + ROM_SYSTEM_BIOS( x+10, "unibios12o", "Universe Bios (Hack, Ver. 1.2, older)" ) \ + ROM_LOAD16_WORD_SWAP_BIOS( x+10, "uni-bios_1_2o.rom", 0x00000, 0x020000, CRC(e19d3ce9) SHA1(af88ef837f44a3af2d7144bb46a37c8512b67770) ) /* Universe Bios v1.2 (hack) alt version */ \ + ROM_SYSTEM_BIOS( x+11, "unibios11", "Universe Bios (Hack, Ver. 1.1)" ) \ + ROM_LOAD16_WORD_SWAP_BIOS( x+11, "uni-bios_1_1.rom", 0x00000, 0x020000, CRC(5dda0d84) SHA1(4153d533c02926a2577e49c32657214781ff29b7) ) /* Universe Bios v1.1 (hack) */ \ + ROM_SYSTEM_BIOS( x+12, "unibios10", "Universe Bios (Hack, Ver. 1.0)" ) \ + ROM_LOAD16_WORD_SWAP_BIOS( x+12, "uni-bios_1_0.rom", 0x00000, 0x020000, CRC(0ce453a0) SHA1(3b4c0cd26c176fc6b26c3a2f95143dd478f6abf9) ) /* Universe Bios v1.0 (hack) */ + #define NEOGEO_BIOS \ ROM_REGION16_BE( 0x80000, "mainbios", 0 ) \ ROM_SYSTEM_BIOS( 0, "euro", "Europe MVS (Ver. 2)" ) \ @@ -398,7 +426,7 @@ ADDRESS_MAP_EXTERN(neogeo_main_map,16); ROM_SYSTEM_BIOS( 3, "us-e", "US MVS (Ver. 1)" ) \ ROM_LOAD16_WORD_SWAP_BIOS( 3, "sp-e.sp1", 0x00000, 0x020000, CRC(2723a5b5) SHA1(5dbff7531cf04886cde3ef022fb5ca687573dcb8) ) /* US, 6 Slot (V5?) */ \ ROM_SYSTEM_BIOS( 4, "us-v2", "US MVS (4 slot, Ver 2)" ) \ - ROM_LOAD16_WORD_SWAP_BIOS(4, "v2.bin", 0x00000, 0x020000, CRC(62f021f4) SHA1(62d372269e1b3161c64ae21123655a0a22ffd1bb) ) /* US, 4 slot */ \ + ROM_LOAD16_WORD_SWAP_BIOS( 4, "v2.bin", 0x00000, 0x020000, CRC(62f021f4) SHA1(62d372269e1b3161c64ae21123655a0a22ffd1bb) ) /* US, 4 slot */ \ \ ROM_SYSTEM_BIOS( 5, "asia", "Asia MVS (Ver. 3)" ) \ ROM_LOAD16_WORD_SWAP_BIOS( 5, "asia-s3.rom", 0x00000, 0x020000, CRC(91b64be3) SHA1(720a3e20d26818632aedf2c2fd16c54f213543e1) ) /* Asia */ \ @@ -412,36 +440,11 @@ ADDRESS_MAP_EXTERN(neogeo_main_map,16); ROM_SYSTEM_BIOS( 9, "mv1c", "NEO-MVH MV1C" ) \ ROM_LOAD16_WORD_SWAP_BIOS( 9, "sp-45.sp1", 0x00000, 0x080000, CRC(03cc9f6a) SHA1(cdf1f49e3ff2bac528c21ed28449cf35b7957dc1) ) /* Latest Asia bios */ \ ROM_SYSTEM_BIOS( 10, "japan-j3", "Japan MVS (J3)" ) \ - ROM_LOAD16_WORD_SWAP_BIOS( 10, "japan-j3.bin", 0x00000, 0x020000, CRC(dff6d41f) SHA1(e92910e20092577a4523a6b39d578a71d4de7085) ) /* Latest Japan bios; correct chip label unknown */ \ - ROM_SYSTEM_BIOS(11, "japan-hotel", "Custom Japanese Hotel" ) \ - ROM_LOAD16_WORD_SWAP_BIOS(11, "sp-1v1_3db8c.bin", 0x00000, 0x020000, CRC(162f0ebe) SHA1(fe1c6dd3dfcf97d960065b1bb46c1e11cb7bf271) ) /* 'rare MVS found in japanese hotels' shows v1.3 in test mode */ \ + ROM_LOAD16_WORD_SWAP_BIOS( 10, "japan-j3.bin", 0x00000, 0x020000, CRC(dff6d41f) SHA1(e92910e20092577a4523a6b39d578a71d4de7085) ) /* Latest Japan bios; correct chip label unknown */ \ + ROM_SYSTEM_BIOS( 11, "japan-hotel", "Custom Japanese Hotel" ) \ + ROM_LOAD16_WORD_SWAP_BIOS( 11, "sp-1v1_3db8c.bin", 0x00000, 0x020000, CRC(162f0ebe) SHA1(fe1c6dd3dfcf97d960065b1bb46c1e11cb7bf271) ) /* 'rare MVS found in japanese hotels' shows v1.3 in test mode */ \ \ - ROM_SYSTEM_BIOS(12, "unibios31", "Universe Bios (Hack, Ver. 3.1)" ) \ - ROM_LOAD16_WORD_SWAP_BIOS(12, "uni-bios_3_1.rom", 0x00000, 0x020000, CRC(0c58093f) SHA1(29329a3448c2505e1ff45ffa75e61e9693165153) ) /* Universe Bios v3.1 (hack) */ \ - ROM_SYSTEM_BIOS(13, "unibios30", "Universe Bios (Hack, Ver. 3.0)" ) \ - ROM_LOAD16_WORD_SWAP_BIOS(13, "uni-bios_3_0.rom", 0x00000, 0x020000, CRC(a97c89a9) SHA1(97a5eff3b119062f10e31ad6f04fe4b90d366e7f) ) /* Universe Bios v3.0 (hack) */ \ - ROM_SYSTEM_BIOS(14, "unibios23", "Universe Bios (Hack, Ver. 2.3)" ) \ - ROM_LOAD16_WORD_SWAP_BIOS(14, "uni-bios_2_3.rom", 0x00000, 0x020000, CRC(27664eb5) SHA1(5b02900a3ccf3df168bdcfc98458136fd2b92ac0) ) /* Universe Bios v2.3 (hack) */ \ - ROM_SYSTEM_BIOS(15, "unibios23o", "Universe Bios (Hack, Ver. 2.3, older?)" ) \ - ROM_LOAD16_WORD_SWAP_BIOS(15, "uni-bios_2_3o.rom", 0x00000, 0x020000, CRC(601720ae) SHA1(1b8a72c720cdb5ee3f1d735bbcf447b09204b8d9) ) /* Universe Bios v2.3 (hack) alt version, withdrawn? */ \ - ROM_SYSTEM_BIOS(16, "unibios22", "Universe Bios (Hack, Ver. 2.2)" ) \ - ROM_LOAD16_WORD_SWAP_BIOS(16, "uni-bios_2_2.rom", 0x00000, 0x020000, CRC(2d50996a) SHA1(5241a4fb0c63b1a23fd1da8efa9c9a9bd3b4279c) ) /* Universe Bios v2.2 (hack) */ \ - ROM_SYSTEM_BIOS(17, "unibios21", "Universe Bios (Hack, Ver. 2.1)" ) \ - ROM_LOAD16_WORD_SWAP_BIOS(17, "uni-bios_2_1.rom", 0x00000, 0x020000, CRC(8dabf76b) SHA1(c23732c4491d966cf0373c65c83c7a4e88f0082c) ) /* Universe Bios v2.1 (hack) */ \ - ROM_SYSTEM_BIOS(18, "unibios20", "Universe Bios (Hack, Ver. 2.0)" ) \ - ROM_LOAD16_WORD_SWAP_BIOS(18, "uni-bios_2_0.rom", 0x00000, 0x020000, CRC(0c12c2ad) SHA1(37bcd4d30f3892078b46841d895a6eff16dc921e) ) /* Universe Bios v2.0 (hack) */ \ - ROM_SYSTEM_BIOS(19, "unibios13", "Universe Bios (Hack, Ver. 1.3)" ) \ - ROM_LOAD16_WORD_SWAP_BIOS(19, "uni-bios_1_3.rom", 0x00000, 0x020000, CRC(b24b44a0) SHA1(eca8851d30557b97c309a0d9f4a9d20e5b14af4e) ) /* Universe Bios v1.3 (hack) */ \ - ROM_SYSTEM_BIOS(20, "unibios12", "Universe Bios (Hack, Ver. 1.2)" ) \ - ROM_LOAD16_WORD_SWAP_BIOS(20, "uni-bios_1_2.rom", 0x00000, 0x020000, CRC(4fa698e9) SHA1(682e13ec1c42beaa2d04473967840c88fd52c75a) ) /* Universe Bios v1.2 (hack) */ \ - ROM_SYSTEM_BIOS(21, "unibios12o", "Universe Bios (Hack, Ver. 1.2, older)" ) \ - ROM_LOAD16_WORD_SWAP_BIOS(21, "uni-bios_1_2o.rom", 0x00000, 0x020000, CRC(e19d3ce9) SHA1(af88ef837f44a3af2d7144bb46a37c8512b67770) ) /* Universe Bios v1.2 (hack) alt version */ \ - ROM_SYSTEM_BIOS(22, "unibios11", "Universe Bios (Hack, Ver. 1.1)" ) \ - ROM_LOAD16_WORD_SWAP_BIOS(22, "uni-bios_1_1.rom", 0x00000, 0x020000, CRC(5dda0d84) SHA1(4153d533c02926a2577e49c32657214781ff29b7) ) /* Universe Bios v1.1 (hack) */ \ - ROM_SYSTEM_BIOS(23, "unibios10", "Universe Bios (Hack, Ver. 1.0)" ) \ - ROM_LOAD16_WORD_SWAP_BIOS(23, "uni-bios_1_0.rom", 0x00000, 0x020000, CRC(0ce453a0) SHA1(3b4c0cd26c176fc6b26c3a2f95143dd478f6abf9) ) /* Universe Bios v1.0 (hack) */ - - + NEOGEO_UNIBIOS(12) #define NEO_BIOS_AUDIO_64K(name, hash) \ diff --git a/src/osd/modules/file/posixsocket.cpp b/src/osd/modules/file/posixsocket.cpp index f6f465dd5d7..d6655e4cf15 100644 --- a/src/osd/modules/file/posixsocket.cpp +++ b/src/osd/modules/file/posixsocket.cpp @@ -50,10 +50,6 @@ public: virtual error read(void *buffer, std::uint64_t offset, std::uint32_t count, std::uint32_t &actual) override { -#if defined(EMSCRIPTEN) - m_listening = false; - return error::FAILURE; // TODO: work out what it dislikes about emscripten -#else fd_set readfds; FD_ZERO(&readfds); FD_SET(m_sock, &readfds); @@ -107,7 +103,6 @@ public: { return error::FAILURE; } -#endif } virtual error write(void const *buffer, std::uint64_t offset, std::uint32_t count, std::uint32_t &actual) override diff --git a/src/osd/modules/font/font_osx.cpp b/src/osd/modules/font/font_osx.cpp index 8e310714649..e1c5137b397 100644 --- a/src/osd/modules/font/font_osx.cpp +++ b/src/osd/modules/font/font_osx.cpp @@ -1,5 +1,5 @@ // license:BSD-3-Clause -// copyright-holders:Olivier Galibert, R. Belmont +// copyright-holders:Olivier Galibert, R. Belmont, Vas Crabb /* * font_osx.c * diff --git a/src/osd/modules/font/font_sdl.cpp b/src/osd/modules/font/font_sdl.cpp index 3c8a69d5d63..bfe3013032e 100644 --- a/src/osd/modules/font/font_sdl.cpp +++ b/src/osd/modules/font/font_sdl.cpp @@ -1,5 +1,5 @@ // license:BSD-3-Clause -// copyright-holders:Olivier Galibert, R. Belmont +// copyright-holders:Olivier Galibert, R. Belmont, Vas Crabb /* * font_sdl.c * @@ -8,15 +8,19 @@ #include "font_module.h" #include "modules/osdmodule.h" -#if defined(SDLMAME_UNIX) && !defined(SDLMAME_MACOSX) && !defined(SDLMAME_SOLARIS) && !defined(SDLMAME_HAIKU) && !defined(SDLMAME_EMSCRIPTEN) +#if defined(SDLMAME_UNIX) && !defined(SDLMAME_MACOSX) && !defined(SDLMAME_SOLARIS) && !defined(SDLMAME_HAIKU) #include "corestr.h" #include "corealloc.h" #include "fileio.h" #include "unicode.h" +#ifdef SDLMAME_EMSCRIPTEN +#include <SDL_ttf.h> +#else #include <SDL2/SDL_ttf.h> -#ifndef SDLMAME_HAIKU +#endif +#if !defined(SDLMAME_HAIKU) && !defined(SDLMAME_EMSCRIPTEN) #include <fontconfig/fontconfig.h> #endif @@ -52,11 +56,11 @@ private: static constexpr double POINT_SIZE = 144.0; -#ifndef SDLMAME_HAIKU - TTF_Font_ptr search_font_config(std::string const &name, bool bold, bool italic, bool underline, bool &bakedstyles); +#if !defined(SDLMAME_HAIKU) && !defined(SDLMAME_EMSCRIPTEN) + TTF_Font_ptr search_font_config(std::string const &family, std::string const &style, bool &bakedstyles); #endif bool BDF_Check_Magic(std::string const &name); - TTF_Font_ptr TTF_OpenFont_Magic(std::string const &name, int fsize); + TTF_Font_ptr TTF_OpenFont_Magic(std::string const &name, int fsize, long index); TTF_Font_ptr m_font; }; @@ -65,42 +69,42 @@ bool osd_font_sdl::open(std::string const &font_path, std::string const &_name, { bool bakedstyles = false; - // accept qualifiers from the name std::string name(_name); if (name.compare("default") == 0) { - name = "Liberation Sans"; + name = "Liberation Sans|Regular"; } - bool const bold = (strreplace(name, "[B]", "") + strreplace(name, "[b]", "") > 0); - bool const italic = (strreplace(name, "[I]", "") + strreplace(name, "[i]", "") > 0); + // accept qualifiers from the name bool const underline = (strreplace(name, "[U]", "") + strreplace(name, "[u]", "") > 0); bool const strike = (strreplace(name, "[S]", "") + strreplace(name, "[s]", "") > 0); + std::string::size_type const separator = name.rfind('|'); + std::string const family(name.substr(0, separator)); + std::string const style((std::string::npos != separator) ? name.substr(separator + 1) : std::string()); // first up, try it as a filename - TTF_Font_ptr font = TTF_OpenFont_Magic(name, POINT_SIZE); + TTF_Font_ptr font = TTF_OpenFont_Magic(family, POINT_SIZE, 0); // if no success, try the font path - if (!font) { - osd_printf_verbose("Searching font %s in -%s\n", name.c_str(), OPTION_FONTPATH); + osd_printf_verbose("Searching font %s in -%s\n", family.c_str(), OPTION_FONTPATH); //emu_file file(options().font_path(), OPEN_FLAG_READ); emu_file file(font_path.c_str(), OPEN_FLAG_READ); - if (file.open(name.c_str()) == osd_file::error::NONE) + if (file.open(family.c_str()) == osd_file::error::NONE) { std::string full_name = file.fullpath(); - font = TTF_OpenFont_Magic(full_name, POINT_SIZE); + font = TTF_OpenFont_Magic(full_name, POINT_SIZE, 0); if (font) osd_printf_verbose("Found font %s\n", full_name.c_str()); } } // if that didn't work, crank up the FontConfig database -#ifndef SDLMAME_HAIKU +#if !defined(SDLMAME_HAIKU) && !defined(SDLMAME_EMSCRIPTEN) if (!font) { - font = search_font_config(name, bold, italic, underline, bakedstyles); + font = search_font_config(family, style, bakedstyles); } #endif @@ -114,21 +118,21 @@ bool osd_font_sdl::open(std::string const &font_path, std::string const &_name, } // apply styles - int style = 0; + int styleflags = 0; if (!bakedstyles) { - style |= bold ? TTF_STYLE_BOLD : 0; - style |= italic ? TTF_STYLE_ITALIC : 0; + if ((style.find("Bold") != std::string::npos) || (style.find("Black") != std::string::npos)) styleflags |= TTF_STYLE_BOLD; + if ((style.find("Italic") != std::string::npos) || (style.find("Oblique") != std::string::npos)) styleflags |= TTF_STYLE_ITALIC; } - style |= underline ? TTF_STYLE_UNDERLINE : 0; + styleflags |= underline ? TTF_STYLE_UNDERLINE : 0; // SDL_ttf 2.0.9 and earlier does not define TTF_STYLE_STRIKETHROUGH #if SDL_VERSIONNUM(TTF_MAJOR_VERSION, TTF_MINOR_VERSION, TTF_PATCHLEVEL) > SDL_VERSIONNUM(2,0,9) - style |= strike ? TTF_STYLE_STRIKETHROUGH : 0; + styleflags |= strike ? TTF_STYLE_STRIKETHROUGH : 0; #else if (strike) osd_printf_warning("Ignoring strikethrough for SDL_TTF older than 2.0.10\n"); #endif // PATCHLEVEL - TTF_SetFontStyle(font.get(), style); + TTF_SetFontStyle(font.get(), styleflags); height = TTF_FontLineSkip(font.get()); @@ -157,9 +161,9 @@ void osd_font_sdl::close() bool osd_font_sdl::get_bitmap(unicode_char chnum, bitmap_argb32 &bitmap, std::int32_t &width, std::int32_t &xoffs, std::int32_t &yoffs) { SDL_Color const fcol = { 0xff, 0xff, 0xff }; - std::uint16_t ustr[16]; - ustr[utf16_from_uchar(ustr, ARRAY_LENGTH(ustr), chnum)] = 0; - std::unique_ptr<SDL_Surface, void (*)(SDL_Surface *)> const drawsurf(TTF_RenderUNICODE_Solid(m_font.get(), ustr, fcol), &SDL_FreeSurface); + char ustr[16]; + ustr[utf8_from_uchar(ustr, ARRAY_LENGTH(ustr), chnum)] = '\0'; + std::unique_ptr<SDL_Surface, void (*)(SDL_Surface *)> const drawsurf(TTF_RenderUTF8_Solid(m_font.get(), ustr, fcol), &SDL_FreeSurface); // was nothing returned? if (drawsurf) @@ -187,18 +191,26 @@ bool osd_font_sdl::get_bitmap(unicode_char chnum, bitmap_argb32 &bitmap, std::in return bitmap.valid(); } -osd_font_sdl::TTF_Font_ptr osd_font_sdl::TTF_OpenFont_Magic(std::string const &name, int fsize) +osd_font_sdl::TTF_Font_ptr osd_font_sdl::TTF_OpenFont_Magic(std::string const &name, int fsize, long index) { emu_file file(OPEN_FLAG_READ); if (file.open(name.c_str()) == osd_file::error::NONE) { - unsigned char const magic[] = { 0x00, 0x01, 0x00, 0x00, 0x00 }; - unsigned char buffer[sizeof(magic)] = { 0xff, 0xff, 0xff, 0xff, 0xff }; - if ((sizeof(magic) != file.read(buffer, sizeof(magic))) || memcmp(buffer, magic, sizeof(magic))) - return TTF_Font_ptr(nullptr, &TTF_CloseFont); + unsigned char const ttf_magic[] = { 0x00, 0x01, 0x00, 0x00, 0x00 }; + unsigned char const ttc1_magic[] = { 0x74, 0x74, 0x63, 0x66, 0x00, 0x01, 0x00, 0x00 }; + unsigned char const ttc2_magic[] = { 0x74, 0x74, 0x63, 0x66, 0x00, 0x02, 0x00, 0x00 }; + unsigned char buffer[std::max({ sizeof(ttf_magic), sizeof(ttc1_magic), sizeof(ttc2_magic) })]; + auto const bytes_read = file.read(buffer, sizeof(buffer)); file.close(); + + if ((bytes_read >= sizeof(ttf_magic)) && !std::memcmp(buffer, ttf_magic, sizeof(ttf_magic))) + return TTF_Font_ptr(TTF_OpenFont(name.c_str(), POINT_SIZE), &TTF_CloseFont); + + if (((bytes_read >= sizeof(ttc1_magic)) && !std::memcmp(buffer, ttc1_magic, sizeof(ttc1_magic))) || + ((bytes_read >= sizeof(ttc2_magic)) && !std::memcmp(buffer, ttc2_magic, sizeof(ttc2_magic)))) + return TTF_Font_ptr(TTF_OpenFontIndex(name.c_str(), POINT_SIZE, index), &TTF_CloseFont); } - return TTF_Font_ptr(TTF_OpenFont(name.c_str(), POINT_SIZE), &TTF_CloseFont); + return TTF_Font_ptr(nullptr, &TTF_CloseFont); } bool osd_font_sdl::BDF_Check_Magic(std::string const &name) @@ -214,36 +226,24 @@ bool osd_font_sdl::BDF_Check_Magic(std::string const &name) return false; } -#ifndef SDLMAME_HAIKU -osd_font_sdl::TTF_Font_ptr osd_font_sdl::search_font_config(std::string const &name, bool bold, bool italic, bool underline, bool &bakedstyles) +#if !defined(SDLMAME_HAIKU) && !defined(SDLMAME_EMSCRIPTEN) +osd_font_sdl::TTF_Font_ptr osd_font_sdl::search_font_config(std::string const &family, std::string const &style, bool &bakedstyles) { TTF_Font_ptr font(nullptr, &TTF_CloseFont); FcConfig *const config = FcConfigGetCurrent(); std::unique_ptr<FcPattern, void (*)(FcPattern *)> pat(FcPatternCreate(), &FcPatternDestroy); std::unique_ptr<FcObjectSet, void (*)(FcObjectSet *)> os(FcObjectSetCreate(), &FcObjectSetDestroy); - FcPatternAddString(pat.get(), FC_FAMILY, (const FcChar8 *)name.c_str()); + FcPatternAddString(pat.get(), FC_FAMILY, (const FcChar8 *)family.c_str()); // try and get a font with the requested styles baked-in - if (bold) - { - if (italic) - FcPatternAddString(pat.get(), FC_STYLE, (const FcChar8 *)"Bold Italic"); - else - FcPatternAddString(pat.get(), FC_STYLE, (const FcChar8 *)"Bold"); - } - else if (italic) - { - FcPatternAddString(pat.get(), FC_STYLE, (const FcChar8 *)"Italic"); - } - else - { - FcPatternAddString(pat.get(), FC_STYLE, (const FcChar8 *)"Regular"); - } + if (!style.empty()) + FcPatternAddString(pat.get(), FC_STYLE, (const FcChar8 *)style.c_str()); FcPatternAddString(pat.get(), FC_FONTFORMAT, (const FcChar8 *)"TrueType"); FcObjectSetAdd(os.get(), FC_FILE); + FcObjectSetAdd(os.get(), FC_INDEX); std::unique_ptr<FcFontSet, void (*)(FcFontSet *)> fontset(FcFontList(config, pat.get(), os.get()), &FcFontSetDestroy); for (int i = 0; (i < fontset->nfont) && !font; i++) @@ -253,8 +253,9 @@ osd_font_sdl::TTF_Font_ptr osd_font_sdl::search_font_config(std::string const &n { osd_printf_verbose("Matching font: %s\n", val.u.s); - std::string match_name((const char*)val.u.s); - font = TTF_OpenFont_Magic(match_name, POINT_SIZE); + std::string const match_name((const char*)val.u.s); + long const index = ((FcPatternGet(fontset->fonts[i], FC_INDEX, 0, &val) == FcResultMatch) && (val.type == FcTypeInteger)) ? val.u.i : 0; + font = TTF_OpenFont_Magic(match_name, POINT_SIZE, index); if (font) bakedstyles = true; @@ -262,12 +263,11 @@ osd_font_sdl::TTF_Font_ptr osd_font_sdl::search_font_config(std::string const &n } // didn't get a font above? try again with no baked-in styles - if (!font) + // note that this simply returns the first match for the family name, which could be regular if you're lucky, but it could be bold oblique or something + if (!font && !style.empty()) { pat.reset(FcPatternCreate()); - FcPatternAddString(pat.get(), FC_FAMILY, (const FcChar8 *)name.c_str()); - //Quite a lot of fonts don't have a "Regular" font type attribute - //FcPatternAddString(pat.get(), FC_STYLE, (const FcChar8 *)"Regular"); + FcPatternAddString(pat.get(), FC_FAMILY, (const FcChar8 *)family.c_str()); FcPatternAddString(pat.get(), FC_FONTFORMAT, (const FcChar8 *)"TrueType"); fontset.reset(FcFontList(config, pat.get(), os.get())); @@ -278,8 +278,12 @@ osd_font_sdl::TTF_Font_ptr osd_font_sdl::search_font_config(std::string const &n { osd_printf_verbose("Matching unstyled font: %s\n", val.u.s); - std::string const match_name((const char *)val.u.s); - font = TTF_OpenFont_Magic(match_name, POINT_SIZE); + std::string const match_name((const char*)val.u.s); + long const index = ((FcPatternGet(fontset->fonts[i], FC_INDEX, 0, &val) == FcResultMatch) && (val.type == FcTypeInteger)) ? val.u.i : 0; + font = TTF_OpenFont_Magic(match_name, POINT_SIZE, index); + + if (font) + bakedstyles = false; } } } @@ -296,12 +300,12 @@ public: { } - osd_font::ptr font_alloc() + osd_font::ptr font_alloc() override { return std::make_unique<osd_font_sdl>(); } - virtual int init(const osd_options &options) + virtual int init(const osd_options &options) override { if (TTF_Init() == -1) { @@ -311,7 +315,7 @@ public: return 0; } - virtual void exit() + virtual void exit() override { TTF_Quit(); } @@ -326,6 +330,7 @@ bool font_sdl::get_font_families(std::string const &font_path, std::vector<std:: // TODO: enumerate TTF files in font path, since we can load them, too +#if !defined(SDLMAME_HAIKU) && !defined(SDLMAME_EMSCRIPTEN) FcConfig *const config = FcConfigGetCurrent(); std::unique_ptr<FcPattern, void (*)(FcPattern *)> pat(FcPatternCreate(), &FcPatternDestroy); FcPatternAddString(pat.get(), FC_FONTFORMAT, (const FcChar8 *)"TrueType"); @@ -333,6 +338,7 @@ bool font_sdl::get_font_families(std::string const &font_path, std::vector<std:: std::unique_ptr<FcObjectSet, void (*)(FcObjectSet *)> os(FcObjectSetCreate(), &FcObjectSetDestroy); FcObjectSetAdd(os.get(), FC_FAMILY); FcObjectSetAdd(os.get(), FC_FILE); + FcObjectSetAdd(os.get(), FC_STYLE); std::unique_ptr<FcFontSet, void (*)(FcFontSet *)> fontset(FcFontList(config, pat.get(), os.get()), &FcFontSetDestroy); for (int i = 0; (i < fontset->nfont); i++) @@ -345,18 +351,30 @@ bool font_sdl::get_font_families(std::string const &font_path, std::vector<std:: { auto const compare_fonts = [](std::pair<std::string, std::string> const &a, std::pair<std::string, std::string> const &b) -> bool { - int const first = core_stricmp(a.first.c_str(), b.first.c_str()); - if (first < 0) return true; - else if (first > 0) return false; - else return core_stricmp(b.second.c_str(), b.second.c_str()) < 0; + int const second = core_stricmp(a.second.c_str(), b.second.c_str()); + if (second < 0) return true; + else if (second > 0) return false; + else return core_stricmp(b.first.c_str(), b.first.c_str()) < 0; }; - std::pair<std::string, std::string> font((const char *)val.u.s, (const char *)val.u.s); + std::string config((const char *)val.u.s); + std::string display(config); + if ((FcPatternGet(fontset->fonts[i], FC_STYLE, 0, &val) == FcResultMatch) && (val.type == FcTypeString)) + { + config.push_back('|'); + config.append((const char *)val.u.s); + display.push_back(' '); + display.append((const char *)val.u.s); + } + std::pair<std::string, std::string> font(std::move(config), std::move(display)); auto const pos = std::lower_bound(result.begin(), result.end(), font, compare_fonts); if ((result.end() == pos) || (pos->first != font.first)) result.emplace(pos, std::move(font)); } } return true; +#else + return false; +#endif } #else /* SDLMAME_UNIX */ diff --git a/src/osd/modules/lib/osdlib_unix.cpp b/src/osd/modules/lib/osdlib_unix.cpp index 9b2721a62cf..fd60db54ba9 100644 --- a/src/osd/modules/lib/osdlib_unix.cpp +++ b/src/osd/modules/lib/osdlib_unix.cpp @@ -14,10 +14,6 @@ #include <sys/types.h> #include <signal.h> -#ifdef SDLMAME_EMSCRIPTEN -#include <emscripten.h> -#endif - // MAME headers #include "osdcore.h" #include "osdlib.h" |