mirror of
https://github.com/holub/mame
synced 2025-04-16 13:34:55 +03:00
megadriv.xml: compatibility field cleanups, apply minor fixes (#9732) [Angelo Salese, 0kmg]
- megadriv.xml: fix booger ROM loading; - megadriv.xml: fix wboy5 and turmamon EEPROM saving; - megadriv.xml: add SRAM to shijie, fixes roster names; - megadriv.xml: allow nba2k and nba2k5 to boot; - megacd.cpp: remove gross hack, allow megacdj & megacd2j to boot again; - jcart.cpp: fix P3 and P4 labels; - megadriv.xml: add SRAM to fengshen; - megadriv_acbl.cpp: make sonic3mb to boot, add basic protection sim;
This commit is contained in:
parent
0c98b7e1d2
commit
641c55693b
@ -827,7 +827,7 @@ license:CC0
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<software name="roadaven">
|
||||
<software name="roadaven" supported="no">
|
||||
<!-- source redump.org
|
||||
<rom name="Road Avenger (Europe).cue" size="442" crc="c852ae6d" />
|
||||
<rom name="Road Avenger (Europe) (Track 1).bin" size="317816352" crc="c15fde6f" />
|
||||
@ -838,6 +838,9 @@ license:CC0
|
||||
<description>Road Avenger (Euro)</description>
|
||||
<year>1993</year>
|
||||
<publisher>Sega</publisher>
|
||||
<notes><![CDATA[
|
||||
Black screen, requires sub CPU to be overclocked by 1.5x
|
||||
]]></notes>
|
||||
<info name="serial" value="4603"/>
|
||||
<info name="ring_code" value="MK-4603P-00053-R1M V"/>
|
||||
<part name="cdrom" interface="scd_cdrom">
|
||||
@ -2434,7 +2437,7 @@ license:CC0
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<software name="ntrap32" cloneof="ntrap">
|
||||
<software name="ntrap32" cloneof="ntrap" supported="no">
|
||||
<!-- source toseciso
|
||||
<rom name="Night Trap (1995)(Digital Pictures)(PAL)(Disc 1 of 2)[!][32X].cue" size="319" crc="57fec2f6" />
|
||||
<rom name="Night Trap (1995)(Digital Pictures)(PAL)(Disc 1 of 2)(Track 1 of 2)[!][32X].iso" size="537303040" crc="12027282" />
|
||||
@ -2447,6 +2450,11 @@ license:CC0
|
||||
<description>Night Trap (Euro, 32X)</description>
|
||||
<year>1995</year>
|
||||
<publisher>Digital Pictures</publisher>
|
||||
<notes><![CDATA[
|
||||
Hangs on BIOS logo
|
||||
Requires [32X] add-on
|
||||
Requires [disc swap]
|
||||
]]></notes>
|
||||
<info name="serial" value="T-16202F-50"/>
|
||||
<part name="cdrom1" interface="scd_cdrom">
|
||||
<diskarea name="cdrom">
|
||||
@ -2940,7 +2948,7 @@ license:CC0
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<software name="slamcity32" cloneof="slamcity">
|
||||
<software name="slamcity32" cloneof="slamcity" supported="no">
|
||||
<!-- source toseciso
|
||||
<rom name="Slam City with Scottie Pippen (1994)(Digital Pictures)(PAL)(Disc 1 of 4)[!][Fingers][32X].cue" size="375" crc="d6b57cf0" />
|
||||
<rom name="Slam City with Scottie Pippen (1994)(Digital Pictures)(PAL)(Disc 1 of 4)(Track 1 of 2)[!][Fingers][32X].iso" size="529147904" crc="56a8ad9c" />
|
||||
@ -2961,6 +2969,11 @@ license:CC0
|
||||
<description>Slam City with Scottie Pippen (Euro, 32X)</description>
|
||||
<year>1994</year>
|
||||
<publisher>Digital Pictures</publisher>
|
||||
<notes><![CDATA[
|
||||
Hangs on BIOS logo
|
||||
Requires [32X] add-on
|
||||
Requires [disc swap]
|
||||
]]></notes>
|
||||
<info name="serial" value="T-16204F-50"/>
|
||||
<part name="cdrom1" interface="scd_cdrom">
|
||||
<diskarea name="cdrom">
|
||||
@ -3148,7 +3161,7 @@ license:CC0
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<software name="supremew32" cloneof="supremew">
|
||||
<software name="supremew32" cloneof="supremew" supported="no">
|
||||
<!-- source toseciso
|
||||
<rom name="Supreme Warrior - Ying Heung (1995)(Digital Pictures)(PAL)(en-zh)(Disc 1 of 2)[!][Fire & Earth][32X].cue" size="397" crc="e1c77730" />
|
||||
<rom name="Supreme Warrior - Ying Heung (1995)(Digital Pictures)(PAL)(en-zh)(Disc 1 of 2)(Track 1 of 2)[!][Fire & Earth][32X].iso" size="459593728" crc="d8c88078" />
|
||||
@ -3161,6 +3174,11 @@ license:CC0
|
||||
<description>Supreme Warrior - Ying Heung (Euro, 32X)</description>
|
||||
<year>1995</year>
|
||||
<publisher>Digital Pictures</publisher>
|
||||
<notes><![CDATA[
|
||||
Hangs on BIOS logo
|
||||
Requires [32X] add-on
|
||||
Requires [disc swap]
|
||||
]]></notes>
|
||||
<info name="serial" value="T-16203F-50"/>
|
||||
<part name="cdrom1" interface="scd_cdrom">
|
||||
<diskarea name="cdrom">
|
||||
|
@ -1309,7 +1309,7 @@ license:CC0
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<software name="ntrap">
|
||||
<software name="ntrap" supported="no">
|
||||
<!-- source redump.org
|
||||
<rom name="Night Trap (Japan) (Disc 1).cue" size="224" crc="f3527896" />
|
||||
<rom name="Night Trap (Japan) (Disc 1) (Track 1).bin" size="615875904" crc="17744c64" />
|
||||
@ -1322,6 +1322,9 @@ license:CC0
|
||||
<description>Night Trap (Jpn)</description>
|
||||
<year>1993</year>
|
||||
<publisher>Sega</publisher>
|
||||
<notes><![CDATA[
|
||||
Requires [disc swap]
|
||||
]]></notes>
|
||||
<info name="serial" value="G-6025"/>
|
||||
<info name="disk_ring" value="G-6025P-00148 1 (Disc 1), G-6025P-00149 1 (Disc 2)"/>
|
||||
<info name="release" value="19931119"/>
|
||||
@ -2344,7 +2347,7 @@ license:CC0
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<software name="timegal">
|
||||
<software name="timegal" supported="no">
|
||||
<!-- source redump.org
|
||||
<rom name="Time Gal (Japan).cue" size="202" crc="a50da29e" />
|
||||
<rom name="Time Gal (Japan) (Track 1).bin" size="304652208" crc="1a756c12" />
|
||||
@ -2353,6 +2356,9 @@ license:CC0
|
||||
<description>Time Gal (Jpn)</description>
|
||||
<year>1992</year>
|
||||
<publisher>Wolf Team</publisher>
|
||||
<notes><![CDATA[
|
||||
Black screen, requires sub CPU to be overclocked by 1.5x
|
||||
]]></notes>
|
||||
<info name="serial" value="T-32114"/>
|
||||
<info name="disk_ring" value="T-32114P-00031-R1M V"/>
|
||||
<info name="release" value="19921113"/>
|
||||
@ -2832,7 +2838,7 @@ license:CC0
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<software name="anettfut">
|
||||
<software name="anettfut" supported="no">
|
||||
<!-- source toseciso
|
||||
<rom name="Anett Futatabi (1993)(Wolf Team)(NTSC)(JP)(en)[!].cue" size="4562" crc="e29146cb" />
|
||||
<rom name="Anett Futatabi (1993)(Wolf Team)(NTSC)(JP)(en)(Track 01 of 31)[!].iso" size="31488000" crc="ed405f82" />
|
||||
@ -2870,6 +2876,9 @@ license:CC0
|
||||
<description>Anett Futatabi (Jpn)</description>
|
||||
<year>1993</year>
|
||||
<publisher>Wolf Team</publisher>
|
||||
<notes><![CDATA[
|
||||
Black screen, requires sub CPU to be overclocked by 1.5x
|
||||
]]></notes>
|
||||
<info name="serial" value="T-32104"/>
|
||||
<info name="release" value="19930330"/>
|
||||
<info name="alt_title" value="アネット再び"/>
|
||||
@ -4389,7 +4398,7 @@ license:CC0
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<software name="prizefig">
|
||||
<software name="prizefig" supported="no">
|
||||
<!-- source toseciso
|
||||
<rom name="Prize Fighter (1993)(Sega)(NTSC)(JP)(Disc 1 of 2)[!].cue" size="301" crc="6caf1452" />
|
||||
<rom name="Prize Fighter (1993)(Sega)(NTSC)(JP)(Disc 1 of 2)(Track 1 of 2)[!].iso" size="346562560" crc="3c4783bc" />
|
||||
@ -4402,6 +4411,9 @@ license:CC0
|
||||
<description>Prize Fighter (Jpn)</description>
|
||||
<year>1995</year>
|
||||
<publisher>Sega</publisher>
|
||||
<notes><![CDATA[
|
||||
Requires [disc swap]
|
||||
]]></notes>
|
||||
<info name="serial" value="G-6037"/>
|
||||
<info name="release" value="19950324"/>
|
||||
<info name="alt_title" value="プライズファイター"/>
|
||||
@ -4585,7 +4597,7 @@ license:CC0
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<software name="rbfx">
|
||||
<software name="rbfx" supported="no">
|
||||
<!-- source toseciso
|
||||
<rom name="Road Blaster FX (1992)(Wolf Team)(NTSC)(JP)(en)[!].cue" size="589" crc="78b59c82" />
|
||||
<rom name="Road Blaster FX (1992)(Wolf Team)(NTSC)(JP)(en)(Track 1 of 4)[!].iso" size="276729856" crc="0cd3a154" />
|
||||
@ -4596,6 +4608,9 @@ license:CC0
|
||||
<description>Road Blaster FX (Jpn)</description>
|
||||
<year>1992</year>
|
||||
<publisher>Wolf Team</publisher>
|
||||
<notes><![CDATA[
|
||||
Black screen, requires sub CPU to be overclocked by 1.5x
|
||||
]]></notes>
|
||||
<info name="serial" value="T-32124"/>
|
||||
<info name="release" value="19921218"/>
|
||||
<info name="alt_title" value="ロードブラスターFX"/>
|
||||
|
1252
hash/megadriv.xml
1252
hash/megadriv.xml
File diff suppressed because it is too large
Load Diff
127
hash/segacd.xml
127
hash/segacd.xml
@ -736,8 +736,7 @@ See: http://rawdump.net/
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<!-- Requires 32x add-on! -->
|
||||
<software name="corpse32" cloneof="corpse">
|
||||
<software name="corpse32" cloneof="corpse" supported="no">
|
||||
<!-- Source: redump.org - http://redump.org/disc/2965/
|
||||
<rom name="Corpse Killer (USA) (32X).cue" size="220" crc="5d439045" />
|
||||
<rom name="Corpse Killer (USA) (32X) (Track 1).bin" size="624898176" crc="acd1f057" />
|
||||
@ -746,9 +745,14 @@ See: http://rawdump.net/
|
||||
<description>Corpse Killer (USA, 32X)</description>
|
||||
<year>1995</year>
|
||||
<publisher>Digital Pictures</publisher>
|
||||
<notes><![CDATA[
|
||||
Hangs on BIOS logo
|
||||
Requires [32X] add-on
|
||||
]]></notes>
|
||||
<info name="serial" value="T-16201F"/>
|
||||
<info name="ring_code" value="GW 02361 RE-1 SRCR##03"/>
|
||||
<sharedfeat name="requirement" value="32x"/>
|
||||
<!-- <sharedfeat name="requirement" value="32x"/> -->
|
||||
<info name="usage" value="Requires to be run with 32x_scd"/>
|
||||
<part name="cdrom" interface="scd_cdrom">
|
||||
<diskarea name="cdrom">
|
||||
<disk name="corpse killer (usa, 32x)" sha1="68a6c75bc730025e90fa413c107090e7f4e377e0"/>
|
||||
@ -802,7 +806,7 @@ See: http://rawdump.net/
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<software name="dracunl">
|
||||
<software name="dracunl" supported="no">
|
||||
<!-- Source: redump.org - http://redump.org/disc/21040/ http://redump.org/disc/21041/
|
||||
<rom name="Dracula Unleashed (USA) (Disc 1).cue" size="257" crc="93ade26e" md5="fa725eb12ee7eb683144986261c33bf1" sha1="fdb6ad28c7fc21f99e35684502bcd32dfc1abb1b"/>
|
||||
<rom name="Dracula Unleashed (USA) (Disc 1) (Track 1).bin" size="544372752" crc="0e728a6c" md5="282a9be8157a6167a389c7fff475ed3a" sha1="927b6d0525010265059ab1ee4d23c6a0598b7fb8"/>
|
||||
@ -815,6 +819,9 @@ See: http://rawdump.net/
|
||||
<description>Dracula Unleashed (USA)</description>
|
||||
<year>1993</year>
|
||||
<publisher>Sega</publisher>
|
||||
<notes><![CDATA[
|
||||
Requires [disc swap]
|
||||
]]></notes>
|
||||
<info name="serial" value="4420"/>
|
||||
<info name="ring_code" value="CDAC-053000 14 (Disc 1) / CDAC-053100 4 (Disc 2)"/>
|
||||
<part name="cdrom1" interface="scd_cdrom">
|
||||
@ -1156,7 +1163,8 @@ See: http://rawdump.net/
|
||||
</software>
|
||||
|
||||
<!-- This game came in a bundle with both a Sega CD compatible disc and one which takes advantage of the 32X expansion. -->
|
||||
<software name="fahrenhe">
|
||||
<!-- TODO: where to load disc 2? Does it detects 32x automatically and just then prompt user? -->
|
||||
<software name="fahrenhe" supported="partial">
|
||||
<!-- Source: redump.org - http://redump.org/disc/29440/ http://redump.org/disc/29441/
|
||||
<rom name="Fahrenheit (USA) (Disc 1) (Key Disc) (Sega CD).cue" size="262" crc="8982108b" md5="0b0a464fd029c7df830ad19ed1bfe099" sha1="825a83edb4966e0d9beaafc2d94233a2a0bc30f0"/>
|
||||
<rom name="Fahrenheit (USA) (Disc 1) (Key Disc) (Sega CD) (Track 1).bin" size="593710656" crc="e22ff784" md5="f96fdb4fc2f8a6308c46d8af793d5c21" sha1="436141455a4726ce065d37db8e39f540c303de0a"/>
|
||||
@ -1169,6 +1177,9 @@ See: http://rawdump.net/
|
||||
<description>Fahrenheit (USA, Sega CD & 32X CD)</description>
|
||||
<year>1995</year>
|
||||
<publisher>Sega</publisher>
|
||||
<notes><![CDATA[
|
||||
Has optional unemulated [32X] mode, which in turn needs [disc swap]
|
||||
]]></notes>
|
||||
<info name="release" value="199503xx" />
|
||||
<info name="serial" value="4438"/>
|
||||
<info name="ring_code" value="CDAC-088300 1 (Disc 1) / CDAC-088400 1 (Disc 2)"/>
|
||||
@ -1344,7 +1355,7 @@ See: http://rawdump.net/
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<software name="gztexas">
|
||||
<software name="gztexas" supported="no">
|
||||
<!-- Source: redump.org - http://redump.org/disc/19472/ http://redump.org/disc/19473/
|
||||
<rom name="Ground Zero Texas (USA) (Disc 1).cue" size="257" crc="d0c584c7" md5="113dd7490af1f86d08f70448d443ed93" sha1="2041c4c954bb0b19ede6dbef1190836c9f2c72b7"/>
|
||||
<rom name="Ground Zero Texas (USA) (Disc 1) (Track 1).bin" size="629355216" crc="20b937a8" md5="27eac38ea6f5deee11367f0062f55608" sha1="d151430da0d6e25af45ecd0a9133dea9a1d1d285"/>
|
||||
@ -1357,6 +1368,9 @@ See: http://rawdump.net/
|
||||
<description>Ground Zero Texas (USA)</description>
|
||||
<year>1993</year>
|
||||
<publisher>Sony Imagesoft</publisher>
|
||||
<notes><![CDATA[
|
||||
Requires [disc swap]
|
||||
]]></notes>
|
||||
<info name="ring_code" value="CDAC-053200 2, CDAC-053200 4 (Disc 1) / CDAC-053300 1 (Disc 2)"/>
|
||||
<info name="serial" value="T-93145"/>
|
||||
<part name="cdrom1" interface="scd_cdrom">
|
||||
@ -2233,7 +2247,6 @@ See: http://rawdump.net/
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<!-- Requires 32x add-on! -->
|
||||
<software name="ntrap32" cloneof="ntrap">
|
||||
<!-- Source: redump.org - http://redump.org/disc/17550/ http://redump.org/disc/17551/
|
||||
<rom name="Night Trap (USA) (Disc 1) (32X).cue" size="232" crc="40b701ce" />
|
||||
@ -2247,9 +2260,15 @@ See: http://rawdump.net/
|
||||
<description>Night Trap (USA, 32X)</description>
|
||||
<year>1994</year>
|
||||
<publisher>Digital Pictures</publisher>
|
||||
<notes><![CDATA[
|
||||
Hangs on BIOS logo
|
||||
Requires [32X] add-on
|
||||
Requires [disc swap]
|
||||
]]></notes>
|
||||
<info name="serial" value="T-16202F"/>
|
||||
<info name="ring_code" value="GW 00161.1 RE-1 SRCR##02 (Disc 1) / GW 00161.2 RE-1 SRCR##02 (Disc 2)"/>
|
||||
<sharedfeat name="requirement" value="32x"/>
|
||||
<!--<sharedfeat name="requirement" value="32x"/>-->
|
||||
<info name="usage" value="Requires to be run with 32x_scd"/>
|
||||
<part name="cdrom1" interface="scd_cdrom">
|
||||
<feature name="part_id" value="Disc 1" />
|
||||
<diskarea name="cdrom">
|
||||
@ -2266,7 +2285,7 @@ See: http://rawdump.net/
|
||||
</software>
|
||||
|
||||
<!-- This is a dump from the original edition. Investigate if the re-release is different. -->
|
||||
<software name="ntrapa" cloneof="ntrap">
|
||||
<software name="ntrapa" cloneof="ntrap" supported="no">
|
||||
<!-- Source: redump.org - http://redump.org/disc/17158/ http://redump.org/disc/17159/
|
||||
<rom name="Night Trap (USA) (Disc 1).cue" size="91" crc="b5fae72b" />
|
||||
<rom name="Night Trap (USA) (Disc 1).bin" size="616997808" crc="900cf0aa" />
|
||||
@ -2277,6 +2296,9 @@ See: http://rawdump.net/
|
||||
<description>Night Trap (USA)</description>
|
||||
<year>1992</year>
|
||||
<publisher>Sega</publisher>
|
||||
<notes><![CDATA[
|
||||
Required [disc swap]
|
||||
]]></notes>
|
||||
<info name="serial" value="4903"/>
|
||||
<info name="release" value="199211xx" />
|
||||
<info name="ring_code" value="CDRM-1027400 5 (Disc 1) / CDRM-1027410 2, CDRM-1027410 1 (Disc 2)"/>
|
||||
@ -2296,7 +2318,7 @@ See: http://rawdump.net/
|
||||
</software>
|
||||
|
||||
<!-- Only the first disk is different from the parent. -->
|
||||
<software name="ntrapb" cloneof="ntrap">
|
||||
<software name="ntrapb" cloneof="ntrap" supported="no">
|
||||
<!-- Source: redump.org - http://redump.org/disc/20867/ http://redump.org/disc/17159/
|
||||
<rom name="Night Trap (USA) (Disc 1) (Alt).cue" size="97" crc="f2950016" md5="c9261a74b06972b2e1fbf7addc5fb5a0" sha1="2456d059254e74ebaf8b8f17fc665222fa47c323"/>
|
||||
<rom name="Night Trap (USA) (Disc 1) (Alt).bin" size="616645008" crc="133b76ce" md5="6bfe493a225713115096d730edf77afe" sha1="9cd08d3718e17134a013cae92a52a2ac0b226b77"/>
|
||||
@ -2307,6 +2329,9 @@ See: http://rawdump.net/
|
||||
<description>Night Trap (USA, alt)</description>
|
||||
<year>1992</year>
|
||||
<publisher>Sega</publisher>
|
||||
<notes><![CDATA[
|
||||
Requires [disc swap]
|
||||
]]></notes>
|
||||
<info name="serial" value="4903"/>
|
||||
<info name="release" value="199211xx" />
|
||||
<info name="ring_code" value="CDRM-1027400 3 (Disc 1) / CDRM-1027410 2, CDRM-1027410 1 (Disc 2)"/>
|
||||
@ -2331,7 +2356,7 @@ See: http://rawdump.net/
|
||||
Mega Drive/Genesis while playing the game, the music and sound effects will
|
||||
be improved. As such, this disc is not really a game in it's own right.
|
||||
-->
|
||||
<software name="psgaesd">
|
||||
<software name="psgaesd" supported="no">
|
||||
<!-- Source: redump.org - http://redump.org/disc/19787/
|
||||
<rom name="Pier Solar and the Great Architects Enhanced Soundtrack Disc (USA).cue" size="622" crc="6d317fa8" md5="f0e03431664704058746f511e21c0958" sha1="ef30161fe9b6737346530bd74644996b3dc58041"/>
|
||||
<rom name="Pier Solar and the Great Architects Enhanced Soundtrack Disc (USA) (Track 1).bin" size="511769328" crc="59200094" md5="5861f8067b1a3b8f1f6567e844a58dd3" sha1="649ca22c941afb50613167a942fd82b0c0b93384"/>
|
||||
@ -2342,10 +2367,14 @@ See: http://rawdump.net/
|
||||
<description>Pier Solar and the Great Architects Enhanced Soundtrack Disc (World)</description>
|
||||
<year>2010</year>
|
||||
<publisher>WaterMelon</publisher>
|
||||
<notes><![CDATA[
|
||||
No support for Mega CD cart slots
|
||||
]]></notes>
|
||||
<info name="serial" value="T-574013, T-574016, T-574016-50"/>
|
||||
<info name="release" value="20101214" />
|
||||
<info name="ring_code" value="Enhanced Soundtrack Disc WM WM 2234612235072235144* Enhanced Soundtrack Disc WM B"/>
|
||||
<sharedfeat name="requirement" value="megadriv -psolar"/>
|
||||
<!--<sharedfeat name="requirement" value="megadriv -psolar"/>-->
|
||||
<info name="usage" value="Requires to be run with megadriv psolar cart"/>
|
||||
<part name="cdrom" interface="scd_cdrom">
|
||||
<diskarea name="cdrom">
|
||||
<disk name="pier solar and the great architects enhanced soundtrack disc (world)" sha1="1f26cce723ef044f449d87cdb624a2937f40f5d9"/>
|
||||
@ -2608,7 +2637,7 @@ See: http://rawdump.net/
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<software name="roadaven">
|
||||
<software name="roadaven" supported="no">
|
||||
<!-- Source: redump.org - http://redump.org/disc/29313/
|
||||
<rom name="Road Avenger (USA).cue" size="453" crc="9e7d5e08" md5="840ebb398cce8d27cf3a5d253d8b575d" sha1="cd2b55540b911786886f43aae99e228d9f85efc5"/>
|
||||
<rom name="Road Avenger (USA) (Track 1).bin" size="317816352" crc="cf3bd177" md5="71e1578e091e0d5df4b07f4f26e4d2c9" sha1="9cf7095ab8f7a5aa5df046d0b665263f4f506f19"/>
|
||||
@ -2619,6 +2648,9 @@ See: http://rawdump.net/
|
||||
<description>Road Avenger (USA)</description>
|
||||
<year>1993</year>
|
||||
<publisher>Renovation</publisher>
|
||||
<notes><![CDATA[
|
||||
Black screen, requires sub CPU to be overclocked by 1.5x
|
||||
]]></notes>
|
||||
<info name="serial" value="T-6207"/>
|
||||
<info name="release" value="199303xx" />
|
||||
<info name="ring_code" value="SEGA6207 R1D MFD BY JVC"/>
|
||||
@ -2819,7 +2851,7 @@ See: http://rawdump.net/
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<software name="holmes2">
|
||||
<software name="holmes2" supported="no">
|
||||
<!-- Source: redump.org - http://redump.org/disc/17162/ http://redump.org/disc/17163/
|
||||
<rom name="Sherlock Holmes - Consulting Detective Vol. II (USA) (Disc 1).cue" size="292" crc="a33aa103" />
|
||||
<rom name="Sherlock Holmes - Consulting Detective Vol. II (USA) (Disc 1) (Track 1).bin" size="529374048" crc="94a913b7" />
|
||||
@ -2832,6 +2864,9 @@ See: http://rawdump.net/
|
||||
<description>Sherlock Holmes - Consulting Detective Vol. II (USA)</description>
|
||||
<year>1993</year>
|
||||
<publisher>Sega</publisher>
|
||||
<notes><![CDATA[
|
||||
Requires [disc swap]
|
||||
]]></notes>
|
||||
<info name="serial" value="4653"/>
|
||||
<info name="release" value="199305xx" />
|
||||
<info name="ring_code" value="CDAC-041000 1 (Disc 1), CDAC-041100 2 (Disc 2)"/>
|
||||
@ -2976,7 +3011,7 @@ See: http://rawdump.net/
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<software name="slamcity">
|
||||
<software name="slamcity" supported="no">
|
||||
<!-- Source: redump.org - http://redump.org/disc/28031/ http://redump.org/disc/28032/ http://redump.org/disc/28033/ http://redump.org/disc/28034/
|
||||
<rom name="Slam City with Scottie Pippen (USA) (Disc 1) (Fingers).cue" size="301" crc="3f50c8bc" md5="35ca36913af0a3df72cf8c3492eceec1" sha1="e3511c717bb78966f75e0dd4a2190b5d390faefe"/>
|
||||
<rom name="Slam City with Scottie Pippen (USA) (Disc 1) (Fingers) (Track 1).bin" size="587070960" crc="becd1484" md5="99a012c46ec31fec5f9538eaa510bd5a" sha1="f32cf26f6fa4acf12807e7f1064e9e202d11cff3"/>
|
||||
@ -2997,6 +3032,9 @@ See: http://rawdump.net/
|
||||
<description>Slam City with Scottie Pippen (USA, rev. A)</description>
|
||||
<year>1994</year>
|
||||
<publisher>Digital Pictures</publisher>
|
||||
<notes><![CDATA[
|
||||
Requires [disc swap]
|
||||
]]></notes>
|
||||
<info name="serial" value="T-162035"/>
|
||||
<info name="release" value="199411xx" />
|
||||
<info name="ring_code" value="GW 02711.1 RE-1 SRCR##01 (Disc 1) / GW 02711.2 RE-1 SRCR**01 (Disc 2) / GW 02711.3 RE-1 SRCR##01 (Disc 3) / GW 02711.4 RE-1 SRCR##01 (Disc 4)"/>
|
||||
@ -4251,7 +4289,7 @@ See: http://rawdump.net/
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<software name="gztexasa" cloneof="gztexas">
|
||||
<software name="gztexasa" cloneof="gztexas" supported="no">
|
||||
<!-- Source: TOSEC-ISO
|
||||
<rom name="Ground Zero Texas (1993)(Sony Imagesoft)(NTSC)(US)(Disc 1 of 2)[!].cue" size="329" crc="b82ac042" />
|
||||
<rom name="Ground Zero Texas (1993)(Sony Imagesoft)(NTSC)(US)(Disc 1 of 2)(Track 1 of 2)[!].iso" size="548009984" crc="e397fe2d" />
|
||||
@ -4264,6 +4302,9 @@ See: http://rawdump.net/
|
||||
<description>Ground Zero Texas (USA, alt)</description>
|
||||
<year>1993</year>
|
||||
<publisher>Sony Imagesoft</publisher>
|
||||
<notes><![CDATA[
|
||||
Requires [disc swap]
|
||||
]]></notes>
|
||||
<info name="serial" value="T-93145"/>
|
||||
<info name="ring_code" value="CDAC-053300 2 (Disc 2)"/>
|
||||
<part name="cdrom1" interface="scd_cdrom">
|
||||
@ -4581,7 +4622,7 @@ See: http://rawdump.net/
|
||||
</software>
|
||||
|
||||
<!-- Only the first disc is dumped to redump.org standard. The second disc is a TOSEC-ISO dump. -->
|
||||
<software name="prizefig">
|
||||
<software name="prizefig" supported="no">
|
||||
<!-- Source: TOSEC-ISO & redump.org - http://redump.org/disc/28629/
|
||||
<rom name="Prize Fighter (USA) (Disc 1).cue" size="226" crc="008693c6" md5="5d9afab480f10aff98863b7bb6e35eb2" sha1="88788d86717177eca87075169ee40d0fdc683286"/>
|
||||
<rom name="Prize Fighter (USA) (Disc 1) (Track 1).bin" size="410527488" crc="7d3f2a3c" md5="f8c2e9f9adc690908bd753c5c5ad1511" sha1="a310fc47ee68ba2f6c860b24b11be76ac4f08d86"/>
|
||||
@ -4594,6 +4635,9 @@ See: http://rawdump.net/
|
||||
<description>Prize Fighter (USA)</description>
|
||||
<year>1994</year>
|
||||
<publisher>Sega</publisher>
|
||||
<notes><![CDATA[
|
||||
Requires [disc swap]
|
||||
]]></notes>
|
||||
<info name="serial" value="MK-4206"/>
|
||||
<info name="ring_code" value="CDAC-052700 2 (Disc 1)"/>
|
||||
<part name="cdrom1" interface="scd_cdrom">
|
||||
@ -4729,7 +4773,7 @@ See: http://rawdump.net/
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<software name="slamcitya" cloneof="slamcity">
|
||||
<software name="slamcitya" cloneof="slamcity" supported="no">
|
||||
<!-- Source: TOSEC-ISO
|
||||
<rom name="Slam City with Scottie Pippen (1994)(Digital Pictures)(NTSC)(US)(Disc 1 of 4)[!][Fingers][GW 02711.1].cue" size="399" crc="59d841d8" />
|
||||
<rom name="Slam City with Scottie Pippen (1994)(Digital Pictures)(NTSC)(US)(Disc 1 of 4)(Track 1 of 2)[!][Fingers][GW 02711.1].iso" size="511191040" crc="6747b14f" />
|
||||
@ -4750,6 +4794,9 @@ See: http://rawdump.net/
|
||||
<description>Slam City with Scottie Pippen (USA)</description>
|
||||
<year>1994</year>
|
||||
<publisher>Digital Pictures</publisher>
|
||||
<notes><![CDATA[
|
||||
Requires [disc swap]
|
||||
]]></notes>
|
||||
<info name="serial" value="T-162035"/>
|
||||
<info name="release" value="199411xx" />
|
||||
<info name="ring_code" value="GW 02711.1 (Disc 1) / GW 02711.2 (Disc 2) / GW 02711.3 (Disc 3) / GW 02711.4 (Disc 4)"/>
|
||||
@ -4782,8 +4829,7 @@ See: http://rawdump.net/
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<!-- Requires 32x add-on! -->
|
||||
<software name="slamcity32" cloneof="slamcity">
|
||||
<software name="slamcity32" cloneof="slamcity" supported="no">
|
||||
<!-- Source: TOSEC-ISO
|
||||
<rom name="Slam City with Scottie Pippen (1994)(Digital Pictures)(NTSC)(US)(Disc 1 of 4)[!][Fingers][32X].cue" size="385" crc="55a0b768" />
|
||||
<rom name="Slam City with Scottie Pippen (1994)(Digital Pictures)(NTSC)(US)(Disc 1 of 4)(Track 1 of 2)[!][Fingers][32X].iso" size="529147904" crc="1c6665b1" />
|
||||
@ -4804,8 +4850,14 @@ See: http://rawdump.net/
|
||||
<description>Slam City with Scottie Pippen (USA, 32X)</description>
|
||||
<year>1994</year>
|
||||
<publisher>Digital Pictures</publisher>
|
||||
<notes><![CDATA[
|
||||
Hangs on BIOS logo
|
||||
Requires [32X] add-on
|
||||
Requires [disc swap]
|
||||
]]></notes>
|
||||
<info name="serial" value="T16204F"/>
|
||||
<sharedfeat name="requirement" value="32x"/>
|
||||
<!-- <sharedfeat name="requirement" value="32x"/> -->
|
||||
<info name="usage" value="Requires to be run with 32x_scd"/>
|
||||
<part name="cdrom1" interface="scd_cdrom">
|
||||
<feature name="part_id" value="Disc 1 - Fingers" />
|
||||
<diskarea name="cdrom">
|
||||
@ -4872,7 +4924,7 @@ See: http://rawdump.net/
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<software name="supremew">
|
||||
<software name="supremew" supported="no">
|
||||
<!-- Source: TOSEC-ISO
|
||||
<rom name="Supreme Warrior - Ying Heung (1994)(Digital Pictures)(NTSC)(US)(Disc 1 of 2)[!][Fire & Earth][GW 02411.1 RE-1].cue" size="417" crc="503b570d" />
|
||||
<rom name="Supreme Warrior - Ying Heung (1994)(Digital Pictures)(NTSC)(US)(Disc 1 of 2)(Track 1 of 2)[!][Fire & Earth][GW 02411.1 RE-1].iso" size="427319296" crc="c12c22aa" />
|
||||
@ -4885,6 +4937,9 @@ See: http://rawdump.net/
|
||||
<description>Supreme Warrior (USA)</description>
|
||||
<year>1994</year>
|
||||
<publisher>Digital Pictures</publisher>
|
||||
<notes><![CDATA[
|
||||
Requires [disc swap]
|
||||
]]></notes>
|
||||
<info name="serial" value="T-162045"/>
|
||||
<info name="alt_title" value="Supreme Warrior - Ying Heung (Box)" />
|
||||
<info name="ring_code" value="GW 02411.1 RE-1 (Disc 1), GW 02411.2 RE-1 (Disc 2)"/>
|
||||
@ -4902,8 +4957,7 @@ See: http://rawdump.net/
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<!-- Requires 32x add-on! -->
|
||||
<software name="supremew32" cloneof="supremew">
|
||||
<software name="supremew32" cloneof="supremew" supported="no">
|
||||
<!-- Source: TOSEC-ISO
|
||||
<rom name="Supreme Warrior - Ying Heung (1994)(Digital Pictures)(NTSC)(US)(en-zh)(Disc 1 of 2)[!][Fire & Earth][32X].cue" size="407" crc="6c4630fc" />
|
||||
<rom name="Supreme Warrior - Ying Heung (1994)(Digital Pictures)(NTSC)(US)(en-zh)(Disc 1 of 2)(Track 1 of 2)[!][Fire & Earth][32X].iso" size="459593728" crc="a65565f4" />
|
||||
@ -4916,9 +4970,15 @@ See: http://rawdump.net/
|
||||
<description>Supreme Warrior (USA, 32X)</description>
|
||||
<year>1994</year>
|
||||
<publisher>Digital Pictures</publisher>
|
||||
<notes><![CDATA[
|
||||
Hangs on BIOS logo
|
||||
Requires [32X] add-on
|
||||
Requires [disc swap]
|
||||
]]></notes>
|
||||
<info name="serial" value="T-16203F"/>
|
||||
<info name="alt_title" value="Supreme Warrior - Ying Heung (Box)" />
|
||||
<sharedfeat name="requirement" value="32x"/>
|
||||
<!-- <sharedfeat name="requirement" value="32x"/> -->
|
||||
<info name="usage" value="Requires to be run with 32x_scd"/>
|
||||
<part name="cdrom1" interface="scd_cdrom">
|
||||
<feature name="part_id" value="Disc 1 - Fire and Earth" />
|
||||
<diskarea name="cdrom">
|
||||
@ -5470,10 +5530,13 @@ See: http://rawdump.net/
|
||||
|
||||
<!-- Sourced from the hiddenpalace forums - http://hiddenpalace.org/forums/viewtopic.php?t=2880 -->
|
||||
<!-- Marked as bad dump as it's an MP3-based dump, but probably it's also a broken dump. -->
|
||||
<software name="johnnymn">
|
||||
<software name="johnnymn" supported="no">
|
||||
<description>Johnny Mnemonic (USA, prototype)</description>
|
||||
<year>1995?</year>
|
||||
<publisher>Sega</publisher>
|
||||
<notes><![CDATA[
|
||||
Requires [disc swap]
|
||||
]]></notes>
|
||||
<part name="cdrom1" interface="scd_cdrom">
|
||||
<feature name="part_id" value="Disc 1" />
|
||||
<diskarea name="cdrom1">
|
||||
@ -5607,7 +5670,7 @@ See: http://rawdump.net/
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<software name="ntrap">
|
||||
<software name="ntrap" supported="no">
|
||||
<!-- Source: TruRip
|
||||
<rom name="Media (CD-ROM)\Night Trap (Rerelease) (1994)(Digital Pictures)(US) - (Disc 1 of 2).ccd" size="934" crc="a9d84328" md5="2d6273e67c6602ac5756c3dedabe23ca" sha1="7534eaccfd1977956f36e7492516e0252a111e79"/>
|
||||
<rom name="Media (CD-ROM)\Night Trap (Rerelease) (1994)(Digital Pictures)(US) - (Disc 1 of 2).img" size="619613232" crc="7cb50000" md5="6061e5642a6070ca6e46269386f4cf06" sha1="53693355efedd1b5afdb24aca323697c860ffd46"/>
|
||||
@ -5620,6 +5683,9 @@ See: http://rawdump.net/
|
||||
<description>Night Trap (USA, Re-Release)</description>
|
||||
<year>1995</year>
|
||||
<publisher>Sega</publisher>
|
||||
<notes><![CDATA[
|
||||
Requires [disc swap]
|
||||
]]></notes>
|
||||
<info name="serial" value="T-162105"/>
|
||||
<part name="cdrom1" interface="scd_cdrom">
|
||||
<feature name="part_id" value="Disc 1" />
|
||||
@ -5654,11 +5720,14 @@ See: http://rawdump.net/
|
||||
</software>
|
||||
|
||||
<!-- Marked as bad dump as it's an MP3-based dump. -->
|
||||
<software name="pennsmok">
|
||||
<software name="pennsmok" supported="no">
|
||||
<!-- Unknown source -->
|
||||
<description>Penn & Teller's Smoke and Mirrors (USA, prototype)</description>
|
||||
<year>1995?</year>
|
||||
<publisher>Absolute Entertainment</publisher>
|
||||
<notes><![CDATA[
|
||||
Requires [disc swap]
|
||||
]]></notes>
|
||||
<part name="cdrom1" interface="scd_cdrom">
|
||||
<feature name="part_id" value="Disc 1" />
|
||||
<diskarea name="cdrom">
|
||||
@ -5766,7 +5835,7 @@ See: http://rawdump.net/
|
||||
</software>
|
||||
|
||||
<!--
|
||||
<software name="surgical32x" cloneof="surgical">
|
||||
<software name="surgical32" cloneof="surgical">
|
||||
<description>Surgical Strike (Bra, 32X)</description>
|
||||
<year>1996</year>
|
||||
<publisher>Sega</publisher>
|
||||
|
@ -5333,10 +5333,11 @@ license:CC0
|
||||
<description>Phantasy Star (Jpn, MD / Saturn Collection CD)</description>
|
||||
<year>1994</year>
|
||||
<publisher>Sega</publisher>
|
||||
<info name="serial" value="G-4534"/>
|
||||
<part name="cart" interface="sms_cart">
|
||||
<feature name="battery" value="yes" />
|
||||
<dataarea name="rom" size="524288">
|
||||
<rom name="phantasy star (j) (from saturn collection cd).bin" size="524288" crc="07301f83" sha1="b3ae447dc739256616b44cbd77cb903c9f19e980" offset="000000" />
|
||||
<rom name="phantasy star (j) (from saturn collection cd).bin" size="524288" crc="07301f83" sha1="b3ae447dc739256616b44cbd77cb903c9f19e980" offset="000000" status="baddump"/>
|
||||
</dataarea>
|
||||
<dataarea name="ram" size="8192">
|
||||
</dataarea>
|
||||
|
@ -90,25 +90,24 @@ void md_seprom_mm96_device::device_add_mconfig(machine_config &config)
|
||||
static INPUT_PORTS_START( jcart_ipt )
|
||||
|
||||
PORT_START("JCART3") /* Joypad 3 on J-Cart (3 button + start) */
|
||||
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(3)
|
||||
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(3)
|
||||
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(3)
|
||||
PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(3)
|
||||
PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(3) PORT_NAME("P3 B")
|
||||
PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(3) PORT_NAME("P3 C")
|
||||
PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(3) PORT_NAME("P3 A")
|
||||
PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_START ) PORT_PLAYER(3)
|
||||
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1) PORT_NAME("%p Up")
|
||||
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(1) PORT_NAME("%p Down")
|
||||
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(1) PORT_NAME("%p Left")
|
||||
PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(1) PORT_NAME("%p Right")
|
||||
PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1) PORT_NAME("%p B")
|
||||
PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1) PORT_NAME("%p C")
|
||||
PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1) PORT_NAME("%p A")
|
||||
PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_START ) PORT_PLAYER(1) PORT_NAME("%p Start")
|
||||
|
||||
PORT_START("JCART4") /* Joypad 4 on J-Cart (3 button + start) */
|
||||
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(4)
|
||||
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(4)
|
||||
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(4)
|
||||
PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(4)
|
||||
PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(4) PORT_NAME("P4 B")
|
||||
PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(4) PORT_NAME("P4 C")
|
||||
PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(4) PORT_NAME("P4 A")
|
||||
PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_START ) PORT_PLAYER(4)
|
||||
|
||||
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2) PORT_NAME("%p Up")
|
||||
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2) PORT_NAME("%p Down")
|
||||
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2) PORT_NAME("%p Left")
|
||||
PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2) PORT_NAME("%p Right")
|
||||
PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2) PORT_NAME("%p B")
|
||||
PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2) PORT_NAME("%p C")
|
||||
PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) PORT_NAME("%p A")
|
||||
PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_START ) PORT_PLAYER(2) PORT_NAME("%p Start")
|
||||
INPUT_PORTS_END
|
||||
|
||||
ioport_constructor md_jcart_device::device_input_ports() const
|
||||
|
@ -3,12 +3,12 @@
|
||||
/*
|
||||
Sega 315-5313 VDP emulation, used by Mega Drive/Genesis
|
||||
|
||||
TODO:
|
||||
- Video, DMA timing and HV counter seem incorrect,
|
||||
they need verification on real hardware.
|
||||
- Support 128KB VRAM configuration, did any hardware use it?
|
||||
- Is border area displayable?
|
||||
- 32X overlay with H32 mode, did all known software use this?
|
||||
TODO:
|
||||
- Video, DMA timing and HV counter are incorrect,
|
||||
they need verification on real hardware.
|
||||
- Support 128KB VRAM configuration, did any hardware use it?
|
||||
- Is border area displayable?
|
||||
- 32X overlay with H32 mode, did all known software use this?
|
||||
*/
|
||||
|
||||
#include "emu.h"
|
||||
@ -168,7 +168,8 @@ static const unsigned hres_mul[4] = { 5, 5, 4, 4 };
|
||||
inline u8 sega315_5313_device::get_hres() { return (MEGADRIVE_REG0C_RS0 | (MEGADRIVE_REG0C_RS1 << 1)) & 3; }
|
||||
int sega315_5313_device::screen_hpos() { return screen().hpos() / (m_lcm_scaling ? hres_mul[get_hres()] : 1); }
|
||||
|
||||
#define MAX_HPOSITION 480 // TODO: 342(H32) or 427.5(H40), each scanline used 3420 cycle
|
||||
// TODO: 342(H32) or 427.5(H40), each scanline used 3420 cycle
|
||||
#define MAX_HPOSITION 480
|
||||
|
||||
|
||||
DEFINE_DEVICE_TYPE(SEGA315_5313, sega315_5313_device, "sega315_5313", "Sega 315-5313 Megadrive VDP")
|
||||
@ -577,6 +578,9 @@ void sega315_5313_device::vdp_set_register(int regnum, u8 value)
|
||||
{
|
||||
m_regs[regnum] = value;
|
||||
|
||||
// if (regnum == 1)
|
||||
// printf("%02x %02x (%lld %d %d)\n", regnum, value, screen().frame_number(), screen().hpos(), screen().vpos());
|
||||
|
||||
/* We need special handling for the IRQ enable registers, some games turn
|
||||
off the irqs before they are taken, delaying them until the IRQ is turned
|
||||
back on */
|
||||
@ -585,6 +589,12 @@ void sega315_5313_device::vdp_set_register(int regnum, u8 value)
|
||||
{
|
||||
//osd_printf_debug("setting reg 0, irq enable is now %d\n", MEGADRIVE_REG0_IRQ4_ENABLE);
|
||||
|
||||
// fatalrew and sesame are very fussy about pending interrupts.
|
||||
// Former in particular will quickly enable both after the EA logo (cfr. killshow at PC=0x2267a),
|
||||
// and irq 6 will jump to illegal addresses because the correlated routine isn't set in stack
|
||||
// but delayed a bit.
|
||||
// Note that irq 6 is masked for about 5 frames, leaving the assumption that it mustn't
|
||||
// be left on during all this time.
|
||||
if (m_irq4_pending)
|
||||
{
|
||||
if (MEGADRIVE_REG0_IRQ4_ENABLE)
|
||||
@ -592,12 +602,6 @@ void sega315_5313_device::vdp_set_register(int regnum, u8 value)
|
||||
else
|
||||
m_lv4irqline_callback(false);
|
||||
}
|
||||
|
||||
/* ??? Fatal Rewind needs this but I'm not sure it's accurate behavior
|
||||
it causes flickering in roadrash */
|
||||
// m_irq6_pending = 0;
|
||||
// m_irq4_pending = 0;
|
||||
|
||||
}
|
||||
|
||||
if (regnum == 0x01)
|
||||
@ -608,13 +612,7 @@ void sega315_5313_device::vdp_set_register(int regnum, u8 value)
|
||||
m_lv6irqline_callback(true);
|
||||
else
|
||||
m_lv6irqline_callback(false);
|
||||
|
||||
}
|
||||
|
||||
/* ??? */
|
||||
// m_irq6_pending = 0;
|
||||
// m_irq4_pending = 0;
|
||||
|
||||
}
|
||||
|
||||
// if (regnum == 0x0a)
|
||||
@ -648,7 +646,8 @@ inline u16 sega315_5313_device::vdp_get_word_from_68k_mem(u32 source)
|
||||
return m_space68k->read_word(source);
|
||||
else
|
||||
{
|
||||
printf("DMA Read unmapped %06x\n", source);
|
||||
// klaxp
|
||||
logerror("DMA Read unmapped %06x\n", source);
|
||||
return machine().rand();
|
||||
}
|
||||
}
|
||||
@ -1469,7 +1468,8 @@ void sega315_5313_device::render_spriteline_to_spritebuffer(int scanline)
|
||||
if (pri == 1) pri = 0x80;
|
||||
else pri = 0x40;
|
||||
|
||||
/* todo: fix me, I'm sure this isn't right but sprite 0 + other sprite seem to do something..
|
||||
// FIXME: Checkout this portion
|
||||
/* I'm sure this isn't right but sprite 0 + other sprite seem to do something..
|
||||
maybe spritemask |= 2 should be set for anything < 0x40 ?*/
|
||||
if (xpos == 0x00) spritemask |= 1;
|
||||
|
||||
@ -2252,6 +2252,7 @@ void sega315_5313_device::vdp_handle_scanline_callback(int scanline)
|
||||
{
|
||||
if (!m_use_alt_timing) m_scanline_counter++;
|
||||
// osd_printf_debug("scanline %d\n", get_scanline_counter());
|
||||
// TODO: arbitrary timing
|
||||
m_render_timer->adjust(attotime::from_usec(1));
|
||||
|
||||
if (get_scanline_counter() == m_irq6_scanline)
|
||||
@ -2266,11 +2267,11 @@ void sega315_5313_device::vdp_handle_scanline_callback(int scanline)
|
||||
// if (get_scanline_counter() == 0) m_irq4counter = MEGADRIVE_REG0A_HINT_VALUE;
|
||||
// m_irq4counter = MEGADRIVE_REG0A_HINT_VALUE;
|
||||
|
||||
if (get_scanline_counter()<=224)
|
||||
if (get_scanline_counter() <= 224)
|
||||
{
|
||||
m_irq4counter--;
|
||||
|
||||
if (m_irq4counter== - 1)
|
||||
if (m_irq4counter == -1)
|
||||
{
|
||||
if (m_imode == 3) m_irq4counter = MEGADRIVE_REG0A_HINT_VALUE * 2;
|
||||
else m_irq4counter = MEGADRIVE_REG0A_HINT_VALUE;
|
||||
@ -2279,9 +2280,12 @@ void sega315_5313_device::vdp_handle_scanline_callback(int scanline)
|
||||
|
||||
if (MEGADRIVE_REG0_IRQ4_ENABLE)
|
||||
{
|
||||
// TODO: arbitrary timing
|
||||
m_irq4_on_timer->adjust(attotime::from_usec(1));
|
||||
//osd_printf_debug("irq4 on scanline %d reload %d\n", get_scanline_counter(), MEGADRIVE_REG0A_HINT_VALUE);
|
||||
}
|
||||
else
|
||||
m_irq4_on_timer->adjust(attotime::never);
|
||||
}
|
||||
}
|
||||
else
|
||||
@ -2319,7 +2323,8 @@ void sega315_5313_device::vdp_handle_eof()
|
||||
int scr_mul = 1;
|
||||
|
||||
m_vblank_flag = 0;
|
||||
//m_irq6_pending = 0; /* NO! (breaks warlock) */
|
||||
// Not here, breaks warlock
|
||||
//m_irq6_pending = 0;
|
||||
|
||||
/* Set it to -1 here, so it becomes 0 when the first timer kicks in */
|
||||
if (!m_use_alt_timing) m_scanline_counter = -1;
|
||||
|
@ -367,13 +367,38 @@ uint16_t md_boot_state::barek2mb_r()
|
||||
return 0x0000;
|
||||
}
|
||||
|
||||
uint16_t md_boot_state::sonic3mb_r()
|
||||
void md_sonic3bl_state::prot_w(u8 data)
|
||||
{
|
||||
if (m_maincpu->pc() == 0x1688) return 0x0300; // TODO: should work but doesn't? debug: just put 0x0300 at 0xfffffc during the first startup check to succesfully boot. Coins are stored in the same location
|
||||
m_prot_cmd = data;
|
||||
}
|
||||
|
||||
// logerror("sonic3mb_r : %06x\n", m_maincpu->pc());
|
||||
// PIC simulation, it just handles coinage and DSWs
|
||||
uint16_t md_sonic3bl_state::prot_r()
|
||||
{
|
||||
u16 res = 0;
|
||||
switch (m_prot_cmd)
|
||||
{
|
||||
// POST, upper 8-bits part is fixed and needed for booting game,
|
||||
// lower is DSW, cfr. PC=0x16c0/0x16c6 subroutines, lower 4 bits not actually handled by 68k side
|
||||
case 0x33: res = 0x0300 | (m_in_mcu->read() & 0xff); break;
|
||||
case 0x00:
|
||||
// TODO: coinage
|
||||
// lower 8-bits is adder for coins (i.e. with 0x202 will add 2 credits to the counter),
|
||||
// bit 9 is coin state, active high
|
||||
res = m_in_coin->read() & 0x88 ? 0x201 : 0;
|
||||
break;
|
||||
case 0x66:
|
||||
// handshake or coin status after reading from commands 0x33 or 0x00,
|
||||
// if bit 0 is high will tight loop until it's low
|
||||
// we currently go the coin status route to not bother handling coin off manually.
|
||||
res = m_in_coin->read() ? 1 : 0;
|
||||
break;
|
||||
default:
|
||||
logerror("Unhandled %04x prot command\n", m_prot_cmd);
|
||||
break;
|
||||
}
|
||||
|
||||
return 0x0000;
|
||||
return res;
|
||||
}
|
||||
|
||||
uint16_t md_boot_state::dsw_r(offs_t offset)
|
||||
@ -721,6 +746,26 @@ INPUT_PORTS_START( twinktmb )
|
||||
PORT_BIT( 0xff00, IP_ACTIVE_HIGH, IPT_UNUSED )
|
||||
INPUT_PORTS_END
|
||||
|
||||
INPUT_PORTS_START( sonic3mb )
|
||||
PORT_INCLUDE( twinktmb )
|
||||
|
||||
PORT_MODIFY("MCU")
|
||||
// TODO: actual diplocations
|
||||
// lower 4 bits is for coinage? Not read by 68k
|
||||
PORT_BIT( 0x0f, IP_ACTIVE_HIGH, IPT_UNKNOWN )
|
||||
PORT_DIPNAME( 0x30, 0x10, DEF_STR( Lives ) )
|
||||
PORT_DIPSETTING( 0x30, "1" )
|
||||
PORT_DIPSETTING( 0x20, "2" )
|
||||
PORT_DIPSETTING( 0x10, "3" )
|
||||
PORT_DIPSETTING( 0x00, "4" )
|
||||
PORT_DIPNAME( 0xc0, 0x00, "Time Limit" )
|
||||
PORT_DIPSETTING( 0xc0, "1:00" )
|
||||
PORT_DIPSETTING( 0x80, "2:00" )
|
||||
PORT_DIPSETTING( 0x40, "3:00" )
|
||||
PORT_DIPSETTING( 0x00, "4:00" )
|
||||
INPUT_PORTS_END
|
||||
|
||||
|
||||
// Verified from M68000 code
|
||||
INPUT_PORTS_START( srmdb )
|
||||
PORT_INCLUDE( md_common )
|
||||
@ -1331,10 +1376,10 @@ void md_boot_state::init_sonic2mb()
|
||||
init_megadrij();
|
||||
}
|
||||
|
||||
void md_boot_state::init_sonic3mb()
|
||||
void md_sonic3bl_state::init_sonic3mb()
|
||||
{
|
||||
// m_maincpu->space(AS_PROGRAM).install_write_handler(0x200000, 0x200001, write16smo_delegate(*this, FUNC(md_boot_state::sonic3mb_w))); // seems to write to PIC from here
|
||||
m_maincpu->space(AS_PROGRAM).install_read_handler(0x300000, 0x300001, read16smo_delegate(*this, FUNC(md_boot_state::sonic3mb_r))); // reads from PIC from here
|
||||
m_maincpu->space(AS_PROGRAM).install_write_handler(0x200000, 0x200000, write8smo_delegate(*this, FUNC(md_sonic3bl_state::prot_w)));
|
||||
m_maincpu->space(AS_PROGRAM).install_read_handler(0x300000, 0x300001, read16smo_delegate(*this, FUNC(md_sonic3bl_state::prot_r)));
|
||||
|
||||
init_megadrij();
|
||||
}
|
||||
@ -1541,7 +1586,7 @@ GAME( 1993, srmdb, 0, megadrvb, srmdb, md_boot_state, init_srmdb, R
|
||||
GAME( 1995, topshoot, 0, md_bootleg, topshoot, md_boot_state, init_topshoot, ROT0, "Sun Mixing", "Top Shooter", 0 )
|
||||
GAME( 1996, sbubsm, 0, md_bootleg, sbubsm, md_boot_state, init_sbubsm, ROT0, "Sun Mixing", "Super Bubble Bobble (Sun Mixing, Mega Drive clone hardware)", 0 )
|
||||
GAME( 1993, sonic2mb, 0, md_bootleg, sonic2mb, md_boot_state, init_sonic2mb, ROT0, "bootleg / Sega", "Sonic The Hedgehog 2 (bootleg of Mega Drive version)", 0 ) // Flying wires going through the empty PIC space aren't completely understood
|
||||
GAME( 1993, sonic3mb, 0, md_bootleg, twinktmb, md_boot_state, init_sonic3mb, ROT0, "bootleg / Sega", "Sonic The Hedgehog 3 (bootleg of Mega Drive version)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING ) // undumped PIC
|
||||
GAME( 1993, sonic3mb, 0, md_bootleg, sonic3mb, md_sonic3bl_state, init_sonic3mb, ROT0, "bootleg / Sega", "Sonic The Hedgehog 3 (bootleg of Mega Drive version)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING ) // undumped PIC
|
||||
GAME( 1994, barek2mb, 0, md_bootleg, barek2, md_boot_state, init_barek2, ROT0, "bootleg / Sega", "Bare Knuckle II (bootleg of Mega Drive version)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING ) // Needs PIC hook up
|
||||
GAME( 1994, barek3mb, 0, megadrvb, barek3, md_boot_state, init_barek3, ROT0, "bootleg / Sega", "Bare Knuckle III (bootleg of Mega Drive version)", 0 )
|
||||
GAME( 1994, bk3ssrmb, 0, megadrvb_6b, bk3ssrmb, md_boot_6button_state, init_bk3ssrmb, ROT0, "bootleg / Sega", "Bare Knuckle III / Sunset Riders (bootleg of Mega Drive versions)", MACHINE_NOT_WORKING ) // Currently boots as Bare Knuckle III, mechanism to switch game not found yet
|
||||
|
@ -8,7 +8,7 @@ class md_boot_state : public md_base_state
|
||||
{
|
||||
public:
|
||||
md_boot_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: md_base_state(mconfig, type, tag) { m_protcount = 0;}
|
||||
: md_base_state(mconfig, type, tag) { m_protcount = 0; }
|
||||
|
||||
void megadrvb(machine_config &config);
|
||||
void md_bootleg(machine_config &config);
|
||||
@ -28,7 +28,6 @@ public:
|
||||
void init_barekch();
|
||||
void init_bk3ssrmb();
|
||||
void init_sonic2mb();
|
||||
void init_sonic3mb();
|
||||
void init_twinktmb();
|
||||
void init_jparkmb();
|
||||
void init_sbubsm();
|
||||
@ -40,7 +39,6 @@ private:
|
||||
uint16_t aladmdb_r();
|
||||
uint16_t barek2mb_r();
|
||||
uint16_t jparkmb_r();
|
||||
uint16_t sonic3mb_r();
|
||||
uint16_t twinktmb_r();
|
||||
uint16_t dsw_r(offs_t offset);
|
||||
uint16_t topshoot_200051_r();
|
||||
@ -60,6 +58,27 @@ private:
|
||||
int m_protcount;
|
||||
};
|
||||
|
||||
class md_sonic3bl_state : public md_boot_state
|
||||
{
|
||||
public:
|
||||
md_sonic3bl_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: md_boot_state(mconfig, type, tag)
|
||||
, m_in_coin(*this, "COIN")
|
||||
, m_in_mcu(*this, "MCU")
|
||||
{ }
|
||||
|
||||
void init_sonic3mb();
|
||||
|
||||
private:
|
||||
required_ioport m_in_coin;
|
||||
required_ioport m_in_mcu;
|
||||
|
||||
void prot_w(u8 data);
|
||||
uint16_t prot_r();
|
||||
|
||||
u8 m_prot_cmd = 0;
|
||||
};
|
||||
|
||||
class md_boot_6button_state : public md_boot_state
|
||||
{
|
||||
public:
|
||||
|
@ -16,26 +16,6 @@
|
||||
#define DMA_PRG (0x0500)
|
||||
#define DMA_WRAM (0x0700)
|
||||
|
||||
// irq3 timer
|
||||
#define CHECK_SCD_LV3_INTERRUPT \
|
||||
if (m_lc89510_temp->get_segacd_irq_mask() & 0x08) \
|
||||
{ \
|
||||
m_scdcpu->set_input_line(3, HOLD_LINE); \
|
||||
}
|
||||
// from master
|
||||
#define CHECK_SCD_LV2_INTERRUPT \
|
||||
if (m_lc89510_temp->get_segacd_irq_mask() & 0x04) \
|
||||
{ \
|
||||
m_scdcpu->set_input_line(2, HOLD_LINE); \
|
||||
}
|
||||
|
||||
// gfx convert
|
||||
#define CHECK_SCD_LV1_INTERRUPT \
|
||||
if (m_lc89510_temp->get_segacd_irq_mask() & 0x02) \
|
||||
{ \
|
||||
m_scdcpu->set_input_line(1, HOLD_LINE); \
|
||||
}
|
||||
|
||||
#define SEGACD_IRQ3_TIMER_SPEED (attotime::from_nsec(m_irq3_timer_reg*30720))
|
||||
|
||||
|
||||
@ -60,16 +40,19 @@ IRQ_CALLBACK_MEMBER(sega_segacd_device::segacd_sub_int_callback)
|
||||
|
||||
TIMER_DEVICE_CALLBACK_MEMBER( sega_segacd_device::irq3_timer_callback )
|
||||
{
|
||||
CHECK_SCD_LV3_INTERRUPT
|
||||
if (m_lc89510_temp->get_segacd_irq_mask() & 0x08)
|
||||
m_scdcpu->set_input_line(3, HOLD_LINE);
|
||||
|
||||
m_irq3_timer->adjust(SEGACD_IRQ3_TIMER_SPEED);
|
||||
}
|
||||
|
||||
|
||||
// GFX conversion
|
||||
TIMER_DEVICE_CALLBACK_MEMBER( sega_segacd_device::stamp_timer_callback )
|
||||
{
|
||||
//printf("stamp_timer_callback\n");
|
||||
|
||||
CHECK_SCD_LV1_INTERRUPT
|
||||
if (m_lc89510_temp->get_segacd_irq_mask() & 0x02)
|
||||
m_scdcpu->set_input_line(1, HOLD_LINE);
|
||||
|
||||
segacd_conversion_active = 0;
|
||||
|
||||
@ -513,10 +496,9 @@ void sega_segacd_device::scd_a12000_halt_reset_w(offs_t offset, uint16_t data, u
|
||||
|
||||
if (ACCESSING_BITS_8_15)
|
||||
{
|
||||
if (m_a12000_halt_reset_reg & 0x0100)
|
||||
{
|
||||
CHECK_SCD_LV2_INTERRUPT
|
||||
}
|
||||
// from master CPU
|
||||
if (m_a12000_halt_reset_reg & 0x0100 && m_lc89510_temp->get_segacd_irq_mask() & 0x04)
|
||||
m_scdcpu->set_input_line(2, HOLD_LINE);
|
||||
|
||||
if (m_a12000_halt_reset_reg & 0x8000)
|
||||
{
|
||||
@ -1802,13 +1784,13 @@ void sega_segacd_device::device_reset()
|
||||
|
||||
m_total_scanlines = 262;
|
||||
|
||||
// HACK!!!! timegal, anettfut, roadaven end up with the SubCPU waiting in a loop for *something*
|
||||
// HACK!!!! timegal, anettfut, roadaven/rbfx end up with the SubCPU waiting in a loop for *something*
|
||||
// overclocking the CPU, even at the point where the game is hung, allows them to continue and boot
|
||||
// I'm not sure what the source of this timing problem is, it's not using IRQ3 or StopWatch at the
|
||||
// time. Changing the CDHock timer to 50hz from 75hz also stops the hang, but then the video is
|
||||
// too slow and has bad sound. -- Investigate!
|
||||
|
||||
m_scdcpu->set_clock_scale(1.5000f);
|
||||
// Update: removed, otherwise megacdj and megacd2j will black screen with no cdrom inserted.
|
||||
//m_scdcpu->set_clock_scale(1.5000f);
|
||||
|
||||
|
||||
// initialize some stuff on reset
|
||||
|
@ -27,22 +27,40 @@ Known Non-Issues (confirmed on Real Genesis)
|
||||
#include "includes/megadriv.h"
|
||||
#include "speaker.h"
|
||||
|
||||
#define LOG_AUDIOBANK (1U << 1) // z80 to 68k space window access at $8000-$ffff
|
||||
#define LOG_AUDIOBUS (1U << 2) // z80 bus grants
|
||||
#define LOG_AUDIORESET (1U << 3) // z80 reset line
|
||||
|
||||
#define VERBOSE (0)
|
||||
|
||||
#include "logmacro.h"
|
||||
|
||||
#define LOGAUDIOBANK(...) LOGMASKED(LOG_AUDIOBANK, __VA_ARGS__)
|
||||
#define LOGAUDIOBUS(...) LOGMASKED(LOG_AUDIOBUS, __VA_ARGS__)
|
||||
#define LOGAUDIORESET(...) LOGMASKED(LOG_AUDIORESET, __VA_ARGS__)
|
||||
|
||||
|
||||
void md_base_state::megadriv_z80_bank_w(uint16_t data)
|
||||
{
|
||||
// TODO: menghu crashes here
|
||||
// Tries to setup a bank of 0xff0000 from z80 side (PC=1131) after you talk with the cashier twice.
|
||||
// Without a guard over it game will trash 68k memory causing a crash, works on real HW with everdrive
|
||||
// so not coming from a cart copy protection.
|
||||
// Update: it breaks cfodder BGM on character select at least, therefore we current don't guard against it
|
||||
// Apparently reading 68k RAM from z80 is not recommended by Sega, so *writing* isn't possible lacking bus grant?
|
||||
m_genz80.z80_bank_addr = ((m_genz80.z80_bank_addr >> 1) | (data << 23)) & 0xff8000;
|
||||
}
|
||||
|
||||
void md_base_state::megadriv_68k_z80_bank_write(uint16_t data)
|
||||
{
|
||||
//logerror("%06x: 68k writing bit to bank register %01x\n", m_maincpu->pc(),data&0x01);
|
||||
megadriv_z80_bank_w(data & 0x01);
|
||||
}
|
||||
|
||||
void md_base_state::megadriv_z80_z80_bank_w(uint8_t data)
|
||||
{
|
||||
//logerror("%04x: z80 writing bit to bank register %01x\n", m_maincpu->pc(),data&0x01);
|
||||
LOGAUDIOBANK("%s: port $6000 write 0x%02x ", machine().describe_context(), data);
|
||||
megadriv_z80_bank_w(data & 0x01);
|
||||
LOGAUDIOBANK("Current bank %08x\n", m_genz80.z80_bank_addr);
|
||||
}
|
||||
|
||||
uint8_t md_base_state::megadriv_68k_YM2612_read(offs_t offset, uint8_t mem_mask)
|
||||
@ -54,7 +72,7 @@ uint8_t md_base_state::megadriv_68k_YM2612_read(offs_t offset, uint8_t mem_mask)
|
||||
}
|
||||
else
|
||||
{
|
||||
logerror("%s: 68000 attempting to access YM2612 (read) without bus\n", machine().describe_context());
|
||||
LOG("%s: 68000 attempting to access YM2612 (read) without bus\n", machine().describe_context());
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -72,7 +90,7 @@ void md_base_state::megadriv_68k_YM2612_write(offs_t offset, uint8_t data, uint8
|
||||
}
|
||||
else
|
||||
{
|
||||
logerror("%s: 68000 attempting to access YM2612 (write) without bus\n", machine().describe_context());
|
||||
LOG("%s: 68000 attempting to access YM2612 (write) without bus\n", machine().describe_context());
|
||||
}
|
||||
}
|
||||
|
||||
@ -309,8 +327,10 @@ uint16_t md_base_state::megadriv_68k_io_read(offs_t offset)
|
||||
switch (offset)
|
||||
{
|
||||
case 0:
|
||||
logerror("%06x read version register\n", m_maincpu->pc());
|
||||
retdata = m_version_hi_nibble | 0x01; // Version number contained in bits 3-0
|
||||
LOG("%06x read version register\n", m_maincpu->pc());
|
||||
// Version number contained in bits 3-0
|
||||
// TODO: non-TMSS BIOSes must return 0 here
|
||||
retdata = m_version_hi_nibble | 0x01;
|
||||
break;
|
||||
|
||||
/* Joystick Port Registers */
|
||||
@ -486,15 +506,13 @@ uint16_t md_base_state::megadriv_68k_read_z80_ram(offs_t offset, uint16_t mem_ma
|
||||
}
|
||||
else
|
||||
{
|
||||
logerror("%06x: 68000 attempting to access Z80 (read) address space without bus\n", m_maincpu->pc());
|
||||
LOG("%06x: 68000 attempting to access Z80 (read) address space without bus\n", m_maincpu->pc());
|
||||
return machine().rand();
|
||||
}
|
||||
}
|
||||
|
||||
void md_base_state::megadriv_68k_write_z80_ram(offs_t offset, uint16_t data, uint16_t mem_mask)
|
||||
{
|
||||
//logerror("write z80 ram\n");
|
||||
|
||||
if ((m_genz80.z80_has_bus == 0) && (m_genz80.z80_is_reset == 0))
|
||||
{
|
||||
if (!ACCESSING_BITS_0_7) // byte (MSB) access
|
||||
@ -505,30 +523,33 @@ void md_base_state::megadriv_68k_write_z80_ram(offs_t offset, uint16_t data, uin
|
||||
{
|
||||
m_genz80.z80_prgram[(offset<<1)^1] = (data & 0x00ff);
|
||||
}
|
||||
else // for WORD access only the MSB is used, LSB is ignored
|
||||
else
|
||||
{
|
||||
// for WORD access only the MSB is used, LSB is ignored
|
||||
m_genz80.z80_prgram[(offset<<1)] = (data & 0xff00) >> 8;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
logerror("%06x: 68000 attempting to access Z80 (write) address space without bus\n", m_maincpu->pc());
|
||||
LOG("%06x: 68000 attempting to access Z80 (write) address space without bus\n", m_maincpu->pc());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* ddragon, beast, superoff, and timekill have buggy sound programs.
|
||||
* They request the bus, then have a loop which waits for the bus
|
||||
* to be unavailable, checking for a 0 value due to bad coding. The real hardware
|
||||
* appears to return bits of the next instruction in the unused bits, thus meaning
|
||||
* the value is never zero. Time Killers is the most fussy, and doesn't like the
|
||||
* read_next_instruction function from system16, so I just return a random value
|
||||
* in the unused bits
|
||||
*/
|
||||
uint16_t md_base_state::megadriv_68k_check_z80_bus(offs_t offset, uint16_t mem_mask)
|
||||
{
|
||||
uint16_t retvalue;
|
||||
|
||||
/* Double Dragon, Shadow of the Beast, Super Off Road, and Time Killers have buggy
|
||||
sound programs. They request the bus, then have a loop which waits for the bus
|
||||
to be unavailable, checking for a 0 value due to bad coding. The real hardware
|
||||
appears to return bits of the next instruction in the unused bits, thus meaning
|
||||
the value is never zero. Time Killers is the most fussy, and doesn't like the
|
||||
read_next_instruction function from system16, so I just return a random value
|
||||
in the unused bits */
|
||||
uint16_t nextvalue = machine().rand();//read_next_instruction(space)&0xff00;
|
||||
|
||||
uint16_t nextvalue = machine().rand(); //read_next_instruction(space)&0xff00;
|
||||
|
||||
|
||||
/* Check if the 68k has the z80 bus */
|
||||
@ -537,13 +558,13 @@ uint16_t md_base_state::megadriv_68k_check_z80_bus(offs_t offset, uint16_t mem_m
|
||||
if (m_genz80.z80_has_bus || m_genz80.z80_is_reset) retvalue = nextvalue | 0x0100;
|
||||
else retvalue = (nextvalue & 0xfeff);
|
||||
|
||||
//logerror("%06x: 68000 check z80 Bus (byte MSB access) returning %04x mask %04x\n", m_maincpu->pc(),retvalue, mem_mask);
|
||||
LOGAUDIOBUS("%06x: 68000 check z80 Bus (byte MSB access) returning %04x mask %04x\n", m_maincpu->pc(),retvalue, mem_mask);
|
||||
return retvalue;
|
||||
|
||||
}
|
||||
else if (!ACCESSING_BITS_8_15) // is this valid?
|
||||
{
|
||||
//logerror("%06x: 68000 check z80 Bus (byte LSB access) %04x\n", m_maincpu->pc(),mem_mask);
|
||||
LOGAUDIOBUS("%06x: 68000 check z80 Bus (byte LSB access) %04x\n", m_maincpu->pc(), mem_mask);
|
||||
if (m_genz80.z80_has_bus || m_genz80.z80_is_reset) retvalue = 0x0001;
|
||||
else retvalue = 0x0000;
|
||||
|
||||
@ -551,7 +572,7 @@ uint16_t md_base_state::megadriv_68k_check_z80_bus(offs_t offset, uint16_t mem_m
|
||||
}
|
||||
else
|
||||
{
|
||||
//logerror("%06x: 68000 check z80 Bus (word access) %04x\n", m_maincpu->pc(),mem_mask);
|
||||
LOGAUDIOBUS("%06x: 68000 check z80 Bus (word access) %04x\n", m_maincpu->pc(),mem_mask);
|
||||
if (m_genz80.z80_has_bus || m_genz80.z80_is_reset) retvalue = nextvalue | 0x0100;
|
||||
else retvalue = (nextvalue & 0xfeff);
|
||||
|
||||
@ -564,6 +585,7 @@ uint16_t md_base_state::megadriv_68k_check_z80_bus(offs_t offset, uint16_t mem_m
|
||||
TIMER_CALLBACK_MEMBER(md_base_state::megadriv_z80_run_state)
|
||||
{
|
||||
/* Is the z80 RESET line pulled? */
|
||||
// TODO: Z80 /RESET
|
||||
if (m_genz80.z80_is_reset)
|
||||
{
|
||||
m_z80snd->reset();
|
||||
@ -573,6 +595,7 @@ TIMER_CALLBACK_MEMBER(md_base_state::megadriv_z80_run_state)
|
||||
else
|
||||
{
|
||||
/* Check if z80 has the bus */
|
||||
// TODO: Z80 /BUSREQ
|
||||
if (m_genz80.z80_has_bus)
|
||||
m_z80snd->resume(SUSPEND_REASON_HALT);
|
||||
else
|
||||
@ -588,12 +611,12 @@ void md_base_state::megadriv_68k_req_z80_bus(offs_t offset, uint16_t data, uint1
|
||||
{
|
||||
if (data & 0x0100)
|
||||
{
|
||||
//logerror("%06x: 68000 request z80 Bus (byte MSB access) %04x %04x\n", m_maincpu->pc(),data,mem_mask);
|
||||
LOGAUDIOBUS("%06x: 68000 request z80 Bus (byte MSB access) %04x %04x\n", m_maincpu->pc(),data,mem_mask);
|
||||
m_genz80.z80_has_bus = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
//logerror("%06x: 68000 return z80 Bus (byte MSB access) %04x %04x\n", m_maincpu->pc(),data,mem_mask);
|
||||
LOGAUDIOBUS("%06x: 68000 return z80 Bus (byte MSB access) %04x %04x\n", m_maincpu->pc(),data,mem_mask);
|
||||
m_genz80.z80_has_bus = 1;
|
||||
}
|
||||
}
|
||||
@ -601,12 +624,12 @@ void md_base_state::megadriv_68k_req_z80_bus(offs_t offset, uint16_t data, uint1
|
||||
{
|
||||
if (data & 0x0001)
|
||||
{
|
||||
//logerror("%06x: 68000 request z80 Bus (byte LSB access) %04x %04x\n", m_maincpu->pc(),data,mem_mask);
|
||||
LOGAUDIOBUS("%06x: 68000 request z80 Bus (byte LSB access) %04x %04x\n", m_maincpu->pc(),data,mem_mask);
|
||||
m_genz80.z80_has_bus = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
//logerror("%06x: 68000 return z80 Bus (byte LSB access) %04x %04x\n", m_maincpu->pc(),data,mem_mask);
|
||||
LOGAUDIOBUS("%06x: 68000 return z80 Bus (byte LSB access) %04x %04x\n", m_maincpu->pc(),data,mem_mask);
|
||||
m_genz80.z80_has_bus = 1;
|
||||
}
|
||||
}
|
||||
@ -614,12 +637,12 @@ void md_base_state::megadriv_68k_req_z80_bus(offs_t offset, uint16_t data, uint1
|
||||
{
|
||||
if (data & 0x0100)
|
||||
{
|
||||
//logerror("%06x: 68000 request z80 Bus (word access) %04x %04x\n", m_maincpu->pc(),data,mem_mask);
|
||||
LOGAUDIOBUS("%06x: 68000 request z80 Bus (word access) %04x %04x\n", m_maincpu->pc(),data,mem_mask);
|
||||
m_genz80.z80_has_bus = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
//logerror("%06x: 68000 return z80 Bus (byte LSB access) %04x %04x\n", m_maincpu->pc(),data,mem_mask);
|
||||
LOGAUDIOBUS("%06x: 68000 return z80 Bus (byte LSB access) %04x %04x\n", m_maincpu->pc(),data,mem_mask);
|
||||
m_genz80.z80_has_bus = 1;
|
||||
}
|
||||
}
|
||||
@ -635,12 +658,12 @@ void md_base_state::megadriv_68k_req_z80_reset(offs_t offset, uint16_t data, uin
|
||||
{
|
||||
if (data & 0x0100)
|
||||
{
|
||||
//logerror("%06x: 68000 clear z80 reset (byte MSB access) %04x %04x\n", m_maincpu->pc(),data,mem_mask);
|
||||
LOGAUDIORESET("%06x: 68000 clear z80 reset (byte MSB access) %04x %04x\n", m_maincpu->pc(),data,mem_mask);
|
||||
m_genz80.z80_is_reset = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
//logerror("%06x: 68000 start z80 reset (byte MSB access) %04x %04x\n", m_maincpu->pc(),data,mem_mask);
|
||||
LOGAUDIORESET("%06x: 68000 start z80 reset (byte MSB access) %04x %04x\n", m_maincpu->pc(),data,mem_mask);
|
||||
m_genz80.z80_is_reset = 1;
|
||||
}
|
||||
}
|
||||
@ -648,12 +671,12 @@ void md_base_state::megadriv_68k_req_z80_reset(offs_t offset, uint16_t data, uin
|
||||
{
|
||||
if (data & 0x0001)
|
||||
{
|
||||
//logerror("%06x: 68000 clear z80 reset (byte LSB access) %04x %04x\n", m_maincpu->pc(),data,mem_mask);
|
||||
LOGAUDIORESET("%06x: 68000 clear z80 reset (byte LSB access) %04x %04x\n", m_maincpu->pc(),data,mem_mask);
|
||||
m_genz80.z80_is_reset = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
//logerror("%06x: 68000 start z80 reset (byte LSB access) %04x %04x\n", m_maincpu->pc(),data,mem_mask);
|
||||
LOGAUDIORESET("%06x: 68000 start z80 reset (byte LSB access) %04x %04x\n", m_maincpu->pc(),data,mem_mask);
|
||||
m_genz80.z80_is_reset = 1;
|
||||
}
|
||||
}
|
||||
@ -661,12 +684,12 @@ void md_base_state::megadriv_68k_req_z80_reset(offs_t offset, uint16_t data, uin
|
||||
{
|
||||
if (data & 0x0100)
|
||||
{
|
||||
//logerror("%06x: 68000 clear z80 reset (word access) %04x %04x\n", m_maincpu->pc(),data,mem_mask);
|
||||
LOGAUDIORESET("%06x: 68000 clear z80 reset (word access) %04x %04x\n", m_maincpu->pc(),data,mem_mask);
|
||||
m_genz80.z80_is_reset = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
//logerror("%06x: 68000 start z80 reset (byte LSB access) %04x %04x\n", m_maincpu->pc(),data,mem_mask);
|
||||
LOGAUDIORESET("%06x: 68000 start z80 reset (byte LSB access) %04x %04x\n", m_maincpu->pc(),data,mem_mask);
|
||||
m_genz80.z80_is_reset = 1;
|
||||
}
|
||||
}
|
||||
@ -756,7 +779,7 @@ void md_base_state::megadriv_z80_map(address_map &map)
|
||||
void md_base_state::megadriv_z80_io_map(address_map &map)
|
||||
{
|
||||
map.global_mask(0xff);
|
||||
map(0x0000, 0xff).noprw();
|
||||
map(0x00, 0xff).noprw();
|
||||
}
|
||||
|
||||
uint32_t md_base_state::screen_update_megadriv(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
|
||||
|
Loading…
Reference in New Issue
Block a user