a800.xml, a800_flop.xml: initial pass at QA (#10412)

- bus/a800: add preliminary Corina ROM cart support;
- bus/a800: bbsb bankswitch works on reads too, makes it playable;
- atari/atari400.cpp: bulk replace cart tags into m_cartleft / m_cartright, move config_ntsc_screen / config_pal_screen to parent state class;
- atari/maxaflex.cpp, atari/bartop52.cpp: convert to screen raw params;
- atari/atari400.cpp: fix a130xe extended RAM out of bounds accesses, fixes t34 after disk swap;
This commit is contained in:
Angelo Salese 2022-10-16 22:59:33 +02:00 committed by GitHub
parent 3a1249d980
commit c388a2f84e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
12 changed files with 937 additions and 253 deletions

View File

@ -269,10 +269,13 @@ Possible Undumped protos: -
</part>
</software>
<software name="bbsb">
<software name="bbsb" supported="partial">
<description>Bounty Bob Strikes Back!</description>
<year>1984</year>
<publisher>Big Five Software</publisher>
<notes><![CDATA[
Sometimes it throws [GTIA] glitchy frames (noticeable on player deaths)
]]></notes>
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="a5200_bbsb" />
<dataarea name="rom" size="40960">

File diff suppressed because it is too large Load Diff

View File

@ -8,7 +8,8 @@ license:CC0
note: many 'original' floppy images are in .atx format, whereas cracked / unprotected ones are .atr format
.atx is unsupported, although apparently has been reverse engineered (insert info link here)
There are also images in .xex format?
There are also images in .xex format, which are raw executable files and
needs to be loaded thru a DOS loader or an SD card cartridge, for all purposes they won't fit here.
-->
@ -29,6 +30,9 @@ license:CC0
<description>S.A.M.</description>
<year>1982</year>
<publisher>Don't Ask</publisher>
<notes><![CDATA[
Doesn't boot
]]></notes>
<part name="flop1" interface="floppy_5_25">
<dataarea name="flop" size="92176">
<rom name="sam.atr" size="92176" crc="a5895d13" sha1="da2118f26dd46b0435ba6a486f17069734bad812"/>
@ -36,10 +40,11 @@ license:CC0
</part>
</software>
<software name="ulysses" supported="no">
<software name="ulysses">
<description>Ulysses and the Golden Fleece</description>
<year>1986</year>
<publisher>Sierra On-Line</publisher>
<!-- was marked unsupported (for side B screen automatically moving without waiting user input?), assume fixed. -->
<part name="flop1" interface="floppy_5_25">
<dataarea name="flop" size="92176">
<rom name="Ulysses And The Golden Fleece [Rel. 1] [Side A].atr" size="92176" crc="e16b8dc8" sha1="4e55312b5259c96138f48703fcaa58a6edd0d922"/>
@ -79,10 +84,14 @@ license:CC0
</part>
</software>
<software name="countdwn">
<software name="countdwn" supported="no">
<description>Countdown</description>
<year>1984</year>
<publisher>Synapse</publisher>
<notes><![CDATA[
a800: cannot set charges, player ammo doesn't draw properly
a800xl: crashes often on boot (reset multiple times will make it to eventually work)
]]></notes>
<part name="flop1" interface="floppy_5_25">
<dataarea name="flop" size="92176">
<rom name="Countdown.atr" size="92176" crc="0471796a" sha1="d02b8ad67b2f1f27b340e6fa94aa0c9bc03d2ad7"/>
@ -90,10 +99,13 @@ license:CC0
</part>
</software>
<software name="silents">
<software name="silents" supported="partial">
<description>Silent Service</description>
<year>1985</year>
<publisher>Microprose</publisher>
<notes><![CDATA[
a800xl: crashes on boot
]]></notes>
<part name="flop1" interface="floppy_5_25">
<dataarea name="flop" size="92176">
<rom name="Silent Service.atr" size="92176" crc="bda9ac46" sha1="312c76e40f0941749e3909afd4a7d7a83f398210"/>
@ -101,10 +113,13 @@ license:CC0
</part>
</software>
<software name="templtri">
<description>Temple Of Apshai Triology</description>
<software name="templtri" supported="partial">
<description>Temple Of Apshai Trilogy</description>
<year>1985</year>
<publisher>Epyx</publisher>
<notes><![CDATA[
Unsupported character save to [disk]
]]></notes>
<part name="flop1" interface="floppy_5_25">
<dataarea name="flop" size="92176">
<rom name="Temple of Apshai Trilogy (The).atr" size="92176" crc="a5cdca88" sha1="e9955303ba855beeafb0e5bf9b5b683d0fbb8701"/>
@ -123,10 +138,13 @@ license:CC0
</part>
</software>
<software name="shamus2">
<software name="shamus2" supported="partial">
<description>Shamus: Case II</description>
<year>1983</year>
<publisher>Synapse</publisher>
<notes><![CDATA[
Runs too fast, [ANTIC] timings
]]></notes>
<part name="flop1" interface="floppy_5_25">
<dataarea name="flop" size="92176">
<rom name="Shamus - Case II.atr" size="92176" crc="2b6696c6" sha1="f3079c19f54ae5dc6fc9de6ca80341e9a2527c05"/>
@ -134,10 +152,14 @@ license:CC0
</part>
</software>
<software name="wkarate">
<description>World Karate Championship</description>
<software name="wkarate" supported="partial">
<!-- "Cracked by Kilroy (P) N.A.P.O." briefly appears on boot -->
<description>World Karate Championship (cracked)</description>
<year>1986</year>
<publisher>Epyx</publisher>
<notes><![CDATA[
a800xl: randomly doesn't boot (soft reset multiple times will eventually make it to start)
]]></notes>
<part name="flop1" interface="floppy_5_25">
<dataarea name="flop" size="133136">
<rom name="World Karate Championship (v4).atr" size="133136" crc="a89bf1e6" sha1="97fbaf575d9f9ddbecd1528c7d5090d2fdac6f3e"/>
@ -156,10 +178,13 @@ license:CC0
</part>
</software>
<software name="cloderun">
<software name="cloderun" supported="no">
<description>Championship Lode Runner</description>
<year>1985</year>
<publisher>Broderbund</publisher>
<notes><![CDATA[
Garbled GFXs
]]></notes>
<part name="flop1" interface="floppy_5_25">
<dataarea name="flop" size="92176">
<rom name="Championship Lode Runner.atr" size="92176" crc="53e02689" sha1="dc92e8616fa2e00432b388df97d508c1a0b6db3c"/>
@ -167,10 +192,14 @@ license:CC0
</part>
</software>
<software name="marsmis2">
<software name="marsmis2" supported="partial">
<description>Mars Mission II</description>
<year>1981</year>
<publisher>Antic</publisher>
<notes><![CDATA[
Clearing a stage will have some dots in the text GFX
a800xl: doesn't boot (btanb?)
]]></notes>
<part name="flop1" interface="floppy_5_25">
<dataarea name="flop" size="92176">
<rom name="Mars Mission II.atr" size="92176" crc="59694595" sha1="4b2ad8bdcbbd4c8f5aef154e55bf4950b15798f3"/>
@ -190,7 +219,8 @@ license:CC0
</software>
<software name="brucelee">
<description>Bruce Lee</description>
<!-- "CRACKED BY GEORGE!" -->
<description>Bruce Lee (cracked)</description>
<year>1984</year>
<publisher>Datasoft</publisher>
<part name="flop1" interface="floppy_5_25">
@ -233,10 +263,13 @@ license:CC0
</part>
</software>
<software name="spyvspy">
<software name="spyvspy" supported="no">
<description>Spy Vs Spy</description>
<year>1984</year>
<publisher>First Star</publisher>
<notes><![CDATA[
Often crashes at the end of an attract game sequence, which in turn desyncs
]]></notes>
<part name="flop1" interface="floppy_5_25">
<dataarea name="flop" size="92176">
<rom name="Spy Vs Spy (1984)(First Star).atr" size="92176" crc="91940f40" sha1="d57d8ecbb0b14987c8fc64b27fe1511779c62f4d"/>
@ -256,7 +289,8 @@ license:CC0
</software>
<software name="spyvspyi">
<description>Spy Vs Spy - The Island Caper</description>
<!-- "CRACKED BY CAPTAIN WIZARD (P) 1986 N.A.P.O" during attract -->
<description>Spy Vs Spy - The Island Caper (cracked)</description>
<year>1985</year>
<publisher>First Star Software</publisher>
<part name="flop1" interface="floppy_5_25">
@ -277,7 +311,9 @@ license:CC0
</part>
</software>
<software name="montzump">
<!-- Looks more polished than retail version, with title screen etc. -->
<!-- except it's missing content (cfr. file sizes) and unwinnable. -->
<software name="montzump" cloneof="montzuma">
<description>Montezuma's Revenge! (Prototype)</description>
<year>1983</year>
<publisher>Utopia Software</publisher>
@ -288,10 +324,13 @@ license:CC0
</part>
</software>
<software name="mrrobot">
<software name="mrrobot" supported="partial">
<description>Mr. Robot and his Robot Factory</description>
<year>1983</year>
<publisher>Datamost</publisher>
<notes><![CDATA[
Random black screen after title screen, particularly on soft resets
]]></notes>
<part name="flop1" interface="floppy_5_25">
<dataarea name="flop" size="92176">
<rom name="mr robot and his robot factory.atr" size="92176" crc="36f3bdb0" sha1="8bb1f04783e883bb20aec5b83e3493632d9dd0bd"/>
@ -299,10 +338,14 @@ license:CC0
</part>
</software>
<software name="castwolf" supported="partial">
<software name="castwolf" supported="no">
<description>Castle Wolfenstein</description>
<year>1983</year>
<publisher>Muse Software</publisher>
<notes><![CDATA[
Castle GFX doesn't draw on title screen, uses [ANTIC] GFX mode F
Should prompt for a "press space key" when player dies or get captured but never happens, hangs
]]></notes>
<part name="flop1" interface="floppy_5_25">
<dataarea name="flop" size="92176">
<rom name="castle wolfenstein.atr" size="92176" crc="7745cd05" sha1="03ba4218d20f260f3e17c7ce540c952cd071bdf5"/>
@ -310,10 +353,15 @@ license:CC0
</part>
</software>
<software name="bcastwlf">
<software name="bcastwlf" supported="no">
<description>Beyond Castle Wolfenstein</description>
<year>1984</year>
<publisher>Muse Software</publisher>
<notes><![CDATA[
Punts to prompt when "SAVING THE GAME" (CTRL+C), unsupported [disk] save
Bunker is always fixed, no RNG?
]]></notes>
<info name="usage" value="Requires a minimum of 48KB RAM" />
<part name="flop1" interface="floppy_5_25">
<dataarea name="flop" size="92176">
<rom name="beyond castle wolfenstein.atr" size="92176" crc="78ef8db7" sha1="a0916bd0dde1b748834411c96cb2ae058b38f3c2"/>
@ -343,10 +391,13 @@ license:CC0
</part>
</software>
<software name="alleycat">
<software name="alleycat" supported="partial">
<description>Alley Cat</description>
<year>1983</year>
<publisher>Synapse</publisher>
<notes><![CDATA[
Runs too fast
]]></notes>
<part name="flop1" interface="floppy_5_25">
<dataarea name="flop" size="65552">
<rom name="alleycat.atr" size="65552" crc="12e2eb0d" sha1="a99e131f024e5df10316860b6d174a16aadc8651"/>
@ -365,11 +416,15 @@ license:CC0
</part>
</software>
<software name="elktrgld" supported="no"> <!-- title screen works but crashes at start of any track -->
<software name="elktrgld" supported="partial">
<!-- Flippy disk, c64 version on side A -->
<!-- Supposedly a PAL release, tested to have too much overscan on real HW -->
<description>Elektra Glide</description>
<year>1986</year>
<publisher>Mastertronic</publisher>
<notes><![CDATA[
[ANTIC] playfield is offset one line on mountain strip
]]></notes>
<info name="serial" value="64712" />
<part name="flop1" interface="floppy_5_25">
@ -379,12 +434,13 @@ license:CC0
</part>
</software>
<software name="koalapnt">
<software name="koalapnt" supported="no">
<!-- Flippy disk, c64 version on side A -->
<description>KoalaPainter (Light Pen)</description>
<year>1984</year>
<publisher>Koala Technologies</publisher>
<info name="serial" value="00626-001" />
<info name="usage" value="Requires light pen"/>
<part name="flop1" interface="floppy_5_25">
<dataarea name="flop" size="92160">
@ -421,10 +477,14 @@ license:CC0
</part>
</software>
<software name="croschck" supported="no"> <!-- randomly freezes up on player's turn screen -->
<software name="croschck" supported="no">
<description>Crosscheck</description>
<year>1986</year>
<publisher>Datasoft</publisher>
<notes><![CDATA[
Throws [disk] read errors on soft reset, hangs if you press start
Randomly freezes up on player's turn screen (cannot reproduce, assume fixed)
]]></notes>
<part name="flop1" interface="floppy_5_25">
<dataarea name="flop" size="92176">
<rom name="crosscheck (1986)(datasoft)(us).atr" size="92176" crc="b4cef936" sha1="1bb9efe6ce4829388f933ae85dd0836749ca9e55"/> <!-- Verified -->
@ -461,7 +521,7 @@ license:CC0
</part>
</software>
<software name="cvrnmars" supported="partial">
<software name="cvrnmars">
<description>Caverns of Mars</description>
<year>1982</year>
<publisher>Atari</publisher>
@ -472,7 +532,8 @@ license:CC0
</part>
</software>
<software name="dandydgn" supported="partial">
<!-- was supported="partial" with no note, assume for glitchy bottom bar (fixed) -->
<software name="dandydgn">
<description>Dandy Dungeon</description>
<year>1985</year>
<publisher>Antic</publisher>
@ -505,9 +566,11 @@ license:CC0
</software>
<software name="essex">
<!-- Prints a "8-28-85" date if you fail copy protection check, release date? -->
<description>Essex</description>
<year>1985</year>
<publisher>Synapse Software</publisher>
<info name="usage" value="Sports manual copy protection"/>
<part name="flop1" interface="floppy_5_25">
<dataarea name="flop" size="92176">
<rom name="essex (1985)(synapse software)(us)(disk 1 of 2 side a)(disk 1, side 1).atr" size="92176" crc="551e10de" sha1="9bd38275b73a9f5b814dc7375ee7139693bc179b"/> <!-- Verified -->
@ -545,6 +608,7 @@ license:CC0
<description>Galahad and the Holy Grail</description>
<year>1982</year>
<publisher>Atari Program Exchange</publisher>
<!-- TODO: verify collision detection -->
<part name="flop1" interface="floppy_5_25">
<dataarea name="flop" size="92176">
<rom name="galahad and the holy grail (1982)(apx)(us).atr" size="92176" crc="d575a0bb" sha1="9f03ddbd745919e93113daed1117a59751f22ae5"/> <!-- Verified -->
@ -567,6 +631,10 @@ license:CC0
<description>L.A. SWAT + Panther</description>
<year>1988</year>
<publisher>Mastertronic</publisher>
<notes><![CDATA[
Ghost player sprite appears for a brief second at center of screen
Doesn't mask bottom part, with enemy sprite repeated (and moving) [GTIA] GRACTL
]]></notes>
<part name="flop1" interface="floppy_5_25">
<dataarea name="flop" size="92176">
<rom name="l.a. swat + panther (1988)(mastertronic)(us).atr" size="92176" crc="6c4752f6" sha1="df6a82e8946d7100620c3947d9e7e106f513fa26"/> <!-- Verified -->
@ -590,10 +658,13 @@ license:CC0
</part>
</software>
<software name="phantas">
<software name="phantas" supported="no">
<description>Phantasie</description>
<year>1987</year>
<publisher>SSI</publisher>
<notes><![CDATA[
Throws a "drive not ready" when exiting town, pressing any key just black screen
]]></notes>
<part name="flop1" interface="floppy_5_25">
<dataarea name="flop" size="92176">
<rom name="phantasie v1.0 (1987)(ssi)(us)(disk 1 of 2 side a)(disk 1).atr" size="92176" crc="4f6d019f" sha1="d1ddaaac1ec56b6080cf3f28e43a6d021e6089c2"/> <!-- Verified -->
@ -604,9 +675,10 @@ license:CC0
<rom name="phantasie v1.0 (1987)(ssi)(us)(disk 1 of 2 side b)(disk 2).atr" size="92176" crc="d49b5aa8" sha1="fe5adccc9876e1b9568009fb5850f58449199385"/> <!-- Verified -->
</dataarea>
</part>
<!-- baddump: non-factory save -->
<part name="flop3" interface="floppy_5_25">
<dataarea name="flop" size="92176">
<rom name="phantasie v1.0 (1987)(ssi)(us)(disk 2 of 2 side a)(disk 3)[m].atr" size="92176" crc="2be4ac66" sha1="c31cae2144e7eed0695d9453f6407994dc1a6d6a"/> <!-- has user save data on disk -->
<rom name="phantasie v1.0 (1987)(ssi)(us)(disk 2 of 2 side a)(disk 3)[m].atr" size="92176" crc="2be4ac66" sha1="c31cae2144e7eed0695d9453f6407994dc1a6d6a" status="baddump" />
</dataarea>
</part>
<part name="flop4" interface="floppy_5_25">
@ -617,7 +689,8 @@ license:CC0
</software>
<software name="phobos">
<description>Phobos v1.1</description>
<description>Phobos (v1.1)</description>
<!-- MCMLXXXII on title screen -->
<year>1983</year>
<publisher>Atari Program Exchange</publisher>
<part name="flop1" interface="floppy_5_25">
@ -671,10 +744,13 @@ license:CC0
</part>
</software>
<software name="saracen">
<software name="saracen" supported="partial">
<description>Saracen</description>
<year>1987</year>
<publisher>Datasoft</publisher>
<notes><![CDATA[
a800xl: doesn't boot
]]></notes>
<part name="flop1" interface="floppy_5_25">
<dataarea name="flop" size="92176">
<rom name="saracen (1987)(datasoft)(us)(side a).atr" size="92176" crc="512b4ab7" sha1="3b91a79a49c699ea458a85fe81612a55e494c1ec"/> <!-- Verified -->
@ -687,10 +763,13 @@ license:CC0
</part>
</software>
<software name="shatalli">
<software name="shatalli" supported="partial">
<description>Chronicles of Osgorth: The Shattered Alliance</description>
<year>1981</year>
<publisher>SSI</publisher>
<notes><![CDATA[
Unsupported [disk] saves
]]></notes>
<sharedfeat name="requirement" value="a800:basicb"/>
<part name="flop1" interface="floppy_5_25">
<dataarea name="flop" size="92176">
@ -711,10 +790,13 @@ license:CC0
</part>
</software>
<software name="spellbrk">
<software name="spellbrk" supported="partial">
<description>Spellbreaker</description>
<year>1985</year>
<publisher>Infocom</publisher>
<notes><![CDATA[
a800xl: doesn't boot
]]></notes>
<part name="flop1" interface="floppy_5_25">
<dataarea name="flop" size="92176">
<rom name="spellbreaker rel 63 (1985-09-16)(infocom)(us)(side a).atr" size="92176" crc="c8d46edd" sha1="5f7aef1cff9ba58f4a2178c967e2c9b49fce9e34"/> <!-- Verified -->
@ -727,10 +809,13 @@ license:CC0
</part>
</software>
<software name="spitfr40" supported="no"> <!-- joystick/keyboard inputs mostly not responsive -->
<software name="spitfr40" supported="no">
<description>Spitfire 40</description>
<year>1986</year>
<publisher>Avalon Hill</publisher>
<notes><![CDATA[
Unresponsive joystick/keyboard inputs, pressing down on joystick just returns to main menu
]]></notes>
<part name="flop1" interface="floppy_5_25">
<dataarea name="flop" size="92176">
<rom name="spitfire 40 (1986)(avalon hill)(us).atr" size="92176" crc="875a404f" sha1="49e6c560d38137944c1cd9bc6c5f37a012045a84"/> <!-- Verified -->
@ -738,12 +823,17 @@ license:CC0
</part>
</software>
<!-- Requires 128K RAM -->
<software name="t34" supported="no"> <!-- fails to load due to insufficient RAM -->
<software name="t34" supported="partial">
<description>T-34: The Battle</description>
<year>1994</year>
<publisher>A.N.G. Software</publisher>
<notes><![CDATA[
a800xl: cannot setup RAM higher than 64KB
a130xe: scrolling is jerky when shooting in gameplay
]]></notes>
<info name="usage" value="Requires 128KB of RAM"/>
<sharedfeat name="compatibility" value="XL/XE"/>
<!-- dual sided single floppy according to game -->
<part name="flop1" interface="floppy_5_25">
<dataarea name="flop" size="133136">
<rom name="t-34 - the battle (1994)(a.n.g. software)(nl)(fw)(side a).atr" size="133136" crc="4c276dc4" sha1="7720e199b7061852668979feb1a67aa042eac76c"/> <!-- Verified -->
@ -757,10 +847,15 @@ license:CC0
</software>
<!-- Atari Translator allows disks that only work on earlier 400/800 systems to load on later XL/XE machines -->
<software name="transltr"> <!-- runs but needs testing -->
<software name="transltr" supported="no">
<description>Atari Translator (USA)</description>
<year>1983</year>
<publisher>Atari</publisher>
<!-- runs but needs testing -->
<notes><![CDATA[
Detects a cartridge present even if it's not
Tested with marsmis2, fails
]]></notes>
<sharedfeat name="compatibility" value="XL/XE"/>
<part name="flop1" interface="floppy_5_25">
<dataarea name="flop" size="92176">
@ -774,11 +869,14 @@ license:CC0
</part>
</software>
<!-- Only works on PAL, use the a800xlp driver. You must hold the OPTION key (default: F3) when booting to disable BASIC. Game freezes otherwise. -->
<software name="turbican" supported="partial"> <!-- Prior comments are probably BTANB. However, seems glitchy even on a800xlp. -->
<software name="turbican" supported="partial">
<description>Turbican</description>
<year>1993</year>
<publisher>ASF s.c.</publisher>
<notes><![CDATA[
1st demo mode screen draws offset background colors [GTIA]
]]></notes>
<info name="usage" value="Works best on a800xlp. Hold OPTION key during boot to disable BASIC otherwise game freezes when starting a game"/>
<sharedfeat name="compatibility" value="XL/XE"/>
<part name="flop1" interface="floppy_5_25">
<dataarea name="flop" size="133136">
@ -787,10 +885,16 @@ license:CC0
</part>
</software>
<software name="yoomp" supported="no"> <!-- black screen after loading screens -->
<description>Yoomp!</description>
<!-- v.1.0 also known to exist (in .xex format -->
<software name="yoomp" supported="partial">
<description>Yoomp! (v.1.1)</description>
<year>2007</year>
<publisher>&lt;homebrew&gt;</publisher>
<notes><![CDATA[
Draws few garbage text chars when trying to enter a password in main menu
Prints "STEREO NOT DETECTED" on main menu, refers to unofficial [POKEY] extra chip add to $d280-$d2ff range
]]></notes>
<info name="usage" value="Hold OPTION key during boot to disable BASIC" />
<sharedfeat name="compatibility" value="XL/XE"/>
<part name="flop1" interface="floppy_5_25">
<dataarea name="flop" size="92176">
@ -799,10 +903,14 @@ license:CC0
</part>
</software>
<software name="zybex">
<software name="zybex" supported="partial">
<description>Zybex (Ned)</description>
<year>1994</year>
<publisher>A.N.G. Software</publisher>
<notes><![CDATA[
Garbage row strip at bottom of screen
]]></notes>
<info name="usage" value="Hold OPTION key during boot to disable BASIC" />
<sharedfeat name="compatibility" value="XL/XE"/>
<part name="flop1" interface="floppy_5_25">
<dataarea name="flop" size="92176">
@ -868,11 +976,13 @@ license:CC0
</part>
</software>
<!-- http://www.mr-atari.com/Mr.Atari/LiteDOS/ -->
<software name="litedosse"> <!-- runs but needs testing -->
<software name="litedosse">
<description>Atari LiteDOS-SE</description>
<year>2022</year>
<publisher>Mr.Atari</publisher>
<publisher>&lt;homebrew&gt;</publisher>
<info name="developer" value="Mr.Atari"/>
<!-- http://www.mr-atari.com/Mr.Atari/LiteDOS/ -->
<!-- TODO: runs but needs testing, particularly with .xex format -->
<part name="flop1" interface="floppy_5_25">
<dataarea name="flop" size="92176">
<rom name="LiteDOS-SE (build 2022-01-14).atr" size="92176" crc="779dbfae" sha1="5cbbe75cf0489213d87e2c7cdaf2f8bfc802cf56"/>

View File

@ -31,7 +31,8 @@ static void a800_left(device_slot_interface &device)
device.option_add_internal("a800_turbo128", A800_ROM_TURBO);
device.option_add_internal("a800_tlink2", A800_ROM_TELELINK2);
device.option_add_internal("a800_sitsa", A800_ROM_MICROCALC);
device.option_add_internal("a800_corina", A800_ROM); // NOT SUPPORTED YET!
device.option_add_internal("a800_corina", A800_ROM_CORINA);
device.option_add_internal("a800_corina_sram", A800_ROM_CORINA_SRAM);
device.option_add( "rtime8", A800_RTIME8); // not a ROM cartridge
device.option_add_internal("xegs", XEGS_ROM);
}

View File

@ -102,11 +102,12 @@ void device_a800_cart_interface::nvram_alloc(uint32_t size)
//-------------------------------------------------
// ****_cart_slot_device - constructor
//-------------------------------------------------
a800_cart_slot_device::a800_cart_slot_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
device_t(mconfig, type, tag, owner, clock),
device_cartrom_image_interface(mconfig, *this),
device_single_card_slot_interface<device_a800_cart_interface>(mconfig, *this),
m_cart(nullptr), m_type(0)
a800_cart_slot_device::a800_cart_slot_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
: device_t(mconfig, type, tag, owner, clock)
, device_cartrom_image_interface(mconfig, *this)
, device_single_card_slot_interface<device_a800_cart_interface>(mconfig, *this)
, m_cart(nullptr)
, m_type(0)
{
}
@ -153,8 +154,6 @@ void a800_cart_slot_device::device_start()
m_cart = get_card_device();
}
/*-------------------------------------------------
call load
-------------------------------------------------*/
@ -191,6 +190,7 @@ static const a800_slot slot_list[] =
{ A800_TELELINK2, "a800_tlink2" },
{ A800_MICROCALC, "a800_sitsa" },
{ A800_CORINA, "a800_corina" },
{ A800_CORINA_SRAM, "a800_corina_sram" },
{ A800_8K_RIGHT, "a800_8k_right" },
{ A5200_4K, "a5200" },
{ A5200_8K, "a5200" },
@ -276,6 +276,12 @@ image_init_result a800_cart_slot_device::call_load()
}
if (m_type == A800_TELELINK2)
m_cart->nvram_alloc(0x100);
if (m_type == A800_CORINA || m_type == A800_CORINA_SRAM)
m_cart->nvram_alloc(0x2000);
if (m_type == A800_CORINA)
m_cart->ram_alloc(0x4000);
if (m_type == A800_CORINA_SRAM)
m_cart->ram_alloc(0x80000);
logerror("%s loaded cartridge '%s' size %dK\n", machine().system().name, filename(), len/1024);
}

View File

@ -35,6 +35,7 @@ enum
A800_TELELINK2,
A800_MICROCALC,
A800_CORINA,
A800_CORINA_SRAM,
A5200_4K,
A5200_8K,
A5200_16K,

View File

@ -25,6 +25,8 @@ DEFINE_DEVICE_TYPE(A800_ROM_EXPRESS, a800_rom_express_device, "a800_express"
DEFINE_DEVICE_TYPE(A800_ROM_TURBO, a800_rom_turbo_device, "a800_turbo", "Atari 800 64K ROM Carts Turbosoft")
DEFINE_DEVICE_TYPE(A800_ROM_TELELINK2, a800_rom_telelink2_device, "a800_tlink2", "Atari 800 64K ROM Cart Telelink II")
DEFINE_DEVICE_TYPE(A800_ROM_MICROCALC, a800_rom_microcalc_device, "a800_sitsa", "Atari 800 64K ROM Carts SITSA MicroCalc")
DEFINE_DEVICE_TYPE(A800_ROM_CORINA, a800_rom_corina_device, "a800_corina", "Atari 800 ROM Carts Corina 1MB Flash ROM")
DEFINE_DEVICE_TYPE(A800_ROM_CORINA_SRAM, a800_rom_corina_sram_device, "a800_corina_sram", "Atari 800 ROM Carts Corina 512KB Flash ROM + 512KB RAM")
DEFINE_DEVICE_TYPE(XEGS_ROM, xegs_rom_device, "a800_xegs", "Atari XEGS 64K ROM Carts")
DEFINE_DEVICE_TYPE(A5200_ROM_2CHIPS, a5200_rom_2chips_device, "a5200_16k2c", "Atari 5200 ROM Cart 16K in 2 Chips")
DEFINE_DEVICE_TYPE(A5200_ROM_BBSB, a5200_rom_bbsb_device, "a5200_bbsb", "Atari 5200 ROM Cart BBSB")
@ -89,6 +91,22 @@ a800_rom_microcalc_device::a800_rom_microcalc_device(const machine_config &mconf
{
}
a800_rom_corina_device::a800_rom_corina_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
: a800_rom_device(mconfig, type, tag, owner, clock)
, m_rom_bank(0)
, m_view_select(0)
{
}
a800_rom_corina_device::a800_rom_corina_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
: a800_rom_device(mconfig, A800_ROM_CORINA, tag, owner, clock)
{
}
a800_rom_corina_sram_device::a800_rom_corina_sram_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
: a800_rom_corina_device(mconfig, A800_ROM_CORINA_SRAM, tag, owner, clock)
{
}
a5200_rom_2chips_device::a5200_rom_2chips_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
: a800_rom_device(mconfig, A5200_ROM_2CHIPS, tag, owner, clock)
@ -180,6 +198,19 @@ void a800_rom_microcalc_device::device_reset()
}
void a800_rom_corina_device::device_start()
{
save_item(NAME(m_rom_bank));
save_item(NAME(m_view_select));
}
void a800_rom_corina_device::device_reset()
{
m_rom_bank = 0;
m_view_select = 0;
}
void a5200_rom_bbsb_device::device_start()
{
save_item(NAME(m_banks));
@ -228,6 +259,14 @@ uint8_t a800_rom_device::read_80xx(offs_t offset)
uint8_t a800_rom_bbsb_device::read_80xx(offs_t offset)
{
if ((offset & 0x2000) == 0 && !machine().side_effects_disabled())
{
uint16_t addr = offset & 0xfff;
if (addr >= 0xff6 && addr <= 0xff9)
m_banks[BIT(offset, 12)] = (addr - 0xff6);
}
if (offset < 0x1000)
return m_rom[(offset & 0xfff) + (m_banks[0] * 0x1000) + 0];
else if (offset < 0x2000)
@ -384,6 +423,87 @@ void a800_rom_microcalc_device::write_d5xx(offs_t offset, uint8_t data)
m_bank = data;
}
/*-------------------------------------------------
Corina
Comes in two configs:
- 1MB Flash ROM (yakungfu)
- 512KB Flash ROM + 512KB SRAM (bombjake)
Both contains 8KB NVRAM
-------------------------------------------------*/
uint8_t a800_rom_corina_device::read_view_1(offs_t offset)
{
return m_rom[(offset & 0x3fff) + (m_rom_bank * 0x4000) + 0x80000];
}
void a800_rom_corina_device::write_view_1(offs_t offset, u8 data)
{
}
uint8_t a800_rom_corina_sram_device::read_view_1(offs_t offset)
{
return m_ram[(offset & 0x3fff) + (m_rom_bank * 0x4000)];
}
void a800_rom_corina_sram_device::write_view_1(offs_t offset, u8 data)
{
m_ram[(offset & 0x3fff) + (m_rom_bank * 0x4000)] = data;
}
uint8_t a800_rom_corina_device::read_80xx(offs_t offset)
{
switch( m_view_select )
{
case 0:
return m_rom[(offset & 0x3fff) + (m_rom_bank * 0x4000)];
case 1:
return read_view_1(offset);
case 2:
return m_nvram[offset & 0x1fff];
}
logerror("view select R=3 [%04x]\n", offset);
return 0xff;
}
void a800_rom_corina_device::write_80xx(offs_t offset, uint8_t data)
{
switch( m_view_select )
{
case 1:
write_view_1(offset, data);
return;
case 2:
m_nvram[offset & 0x1fff] = data;
return;
}
// view 0: flash ROM commands?
// TODO: identify
logerror("view select W=%d [%04x, %02x] -> %02x\n", m_view_select, offset, m_rom_bank, data);
}
/*
* 0--- ---- enable Corina window
* 1--- ---- disable Corina and select main unit 8000-bfff window instead
* -xx- ---- view select
* -00- ---- first half of ROM
* -01- ---- second half of ROM or RAM (^ depending on PCB config)
* -10- ---- NVRAM
* -11- ---- <reserved>
* ---x xxxx ROM/RAM lower bank value,
* ignored if view select is not in ROM/RAM mode
* or Corina window is disabled
*/
void a800_rom_corina_device::write_d5xx(offs_t offset, uint8_t data)
{
m_rom_bank = data & 0x1f;
m_view_select = (data & 0x60) >> 5;
// TODO: bit 7, currently handled in a400_state
}
// Atari 5200
@ -433,6 +553,13 @@ uint8_t a5200_rom_2chips_device::read_80xx(offs_t offset)
uint8_t a5200_rom_bbsb_device::read_80xx(offs_t offset)
{
if ((offset & 0xe000) == 0 && !machine().side_effects_disabled())
{
uint16_t addr = offset & 0xfff;
if (addr >= 0xff6 && addr <= 0xff9)
m_banks[BIT(offset, 12)] = (addr - 0xff6);
}
if (offset < 0x1000)
return m_rom[(offset & 0xfff) + (m_banks[0] * 0x1000) + 0x2000];
else if (offset < 0x2000)

View File

@ -159,6 +159,43 @@ protected:
int m_bank;
};
// ======================> a800_rom_corina_device
class a800_rom_corina_device : public a800_rom_device
{
public:
// construction/destruction
a800_rom_corina_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
a800_rom_corina_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual uint8_t read_80xx(offs_t offset) override;
virtual void write_80xx(offs_t offset, uint8_t data) override;
virtual void write_d5xx(offs_t offset, uint8_t data) override;
protected:
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
virtual uint8_t read_view_1(offs_t offset);
virtual void write_view_1(offs_t offset, u8 data);
u8 m_rom_bank;
u8 m_view_select;
};
class a800_rom_corina_sram_device : public a800_rom_corina_device
{
public:
// construction/destruction
a800_rom_corina_sram_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
protected:
virtual uint8_t read_view_1(offs_t offset) override;
virtual void write_view_1(offs_t offset, u8 data) override;
};
// ======================> xegs_rom_device
@ -214,16 +251,18 @@ protected:
// device type definition
DECLARE_DEVICE_TYPE(A800_ROM, a800_rom_device)
DECLARE_DEVICE_TYPE(A800_ROM_BBSB, a800_rom_bbsb_device)
DECLARE_DEVICE_TYPE(A800_ROM_WILLIAMS, a800_rom_williams_device)
DECLARE_DEVICE_TYPE(A800_ROM_EXPRESS, a800_rom_express_device)
DECLARE_DEVICE_TYPE(A800_ROM_TURBO, a800_rom_turbo_device)
DECLARE_DEVICE_TYPE(A800_ROM_TELELINK2, a800_rom_telelink2_device)
DECLARE_DEVICE_TYPE(A800_ROM_MICROCALC, a800_rom_microcalc_device)
DECLARE_DEVICE_TYPE(XEGS_ROM, xegs_rom_device)
DECLARE_DEVICE_TYPE(A5200_ROM_2CHIPS, a5200_rom_2chips_device)
DECLARE_DEVICE_TYPE(A5200_ROM_BBSB, a5200_rom_bbsb_device)
DECLARE_DEVICE_TYPE(A800_ROM, a800_rom_device)
DECLARE_DEVICE_TYPE(A800_ROM_BBSB, a800_rom_bbsb_device)
DECLARE_DEVICE_TYPE(A800_ROM_WILLIAMS, a800_rom_williams_device)
DECLARE_DEVICE_TYPE(A800_ROM_EXPRESS, a800_rom_express_device)
DECLARE_DEVICE_TYPE(A800_ROM_TURBO, a800_rom_turbo_device)
DECLARE_DEVICE_TYPE(A800_ROM_TELELINK2, a800_rom_telelink2_device)
DECLARE_DEVICE_TYPE(A800_ROM_MICROCALC, a800_rom_microcalc_device)
DECLARE_DEVICE_TYPE(A800_ROM_CORINA, a800_rom_corina_device)
DECLARE_DEVICE_TYPE(A800_ROM_CORINA_SRAM, a800_rom_corina_sram_device)
DECLARE_DEVICE_TYPE(XEGS_ROM, xegs_rom_device)
DECLARE_DEVICE_TYPE(A5200_ROM_2CHIPS, a5200_rom_2chips_device)
DECLARE_DEVICE_TYPE(A5200_ROM_BBSB, a5200_rom_bbsb_device)
#endif // MAME_BUS_A800_ROM_H

View File

@ -257,8 +257,8 @@ public:
m_pia(*this, "pia"),
m_dac(*this, "dac"),
m_region_maincpu(*this, "maincpu"),
m_cart(*this, "cartleft"),
m_cart2(*this, "cartright")
m_cartleft(*this, "cartleft"),
m_cartright(*this, "cartright")
{ }
void atari_common_nodac(machine_config &config);
@ -277,8 +277,7 @@ public:
void a400(machine_config &config);
protected:
void config_ntsc_screen(machine_config &config);
void config_pal_screen(machine_config &config);
private:
DECLARE_MACHINE_START(a400);
@ -304,6 +303,9 @@ private:
void special_write_8000(offs_t offset, uint8_t data);
uint8_t special_read_a000(offs_t offset);
void special_write_a000(offs_t offset, uint8_t data);
uint8_t read_corina_overlay(offs_t offset);
void write_corina_overlay(offs_t offset, uint8_t data);
void write_corina_d5xx(offs_t offset, uint8_t data);
uint8_t a600xl_low_r(offs_t offset);
uint8_t a1200xl_low_r(offs_t offset);
@ -333,8 +335,8 @@ private:
optional_device<pia6821_device> m_pia;
optional_device<dac_bit_interface> m_dac;
required_memory_region m_region_maincpu;
optional_device<a800_cart_slot_device> m_cart;
optional_device<a800_cart_slot_device> m_cart2;
optional_device<a800_cart_slot_device> m_cartleft;
optional_device<a800_cart_slot_device> m_cartright;
int m_cart_disabled, m_cart_helper;
int m_last_offs;
@ -459,7 +461,9 @@ uint8_t a400_state::a130xe_low_r(offs_t offset)
if (!(m_mmu & 0x80) && offset >= 0x5000 && offset < 0x5800)
return m_region_maincpu->base()[0xd000 + (offset & 0x7ff)];
if (!(m_mmu & 0x10))
return m_ram->pointer()[offset + 0x10000 + (m_ext_bank * 0x4000)];
{
return m_ram->pointer()[(offset & 0x3fff) + 0x10000 + (m_ext_bank * 0x4000)];
}
else
return m_ram->pointer()[offset];
}
@ -491,7 +495,7 @@ void a400_state::a130xe_low_w(offs_t offset, uint8_t data)
if (!(m_mmu & 0x80) && offset >= 0x5000 && offset < 0x5800)
return;
if (!(m_mmu & 0x10))
m_ram->pointer()[offset + 0x10000 + (m_ext_bank * 0x4000)] = data;
m_ram->pointer()[(offset & 0x3fff) + 0x10000 + (m_ext_bank * 0x4000)] = data;
else
m_ram->pointer()[offset] = data;
}
@ -1781,12 +1785,12 @@ void a400_state::setup_ram(int bank, uint32_t size)
}
}
// these handle cart enable/disable without calling setup_ram thousands of times
// TODO: this should really live in a800_slot file
uint8_t a400_state::special_read_8000(offs_t offset)
{
if (!m_cart_disabled)
return m_cart->read_80xx(offset);
return m_cartleft->read_80xx(offset);
else
{
offset += 0x8000;
@ -1810,7 +1814,7 @@ void a400_state::special_write_8000(offs_t offset, uint8_t data)
uint8_t a400_state::special_read_a000(offs_t offset)
{
if (!m_cart_disabled)
return m_cart->read_80xx(offset);
return m_cartleft->read_80xx(offset);
else
{
offset += 0xa000;
@ -1839,11 +1843,41 @@ uint8_t a400_state::read_d5xx(offs_t offset)
return 0xff;
}
uint8_t a400_state::read_corina_overlay(offs_t offset)
{
if (!m_cart_disabled)
return m_cartleft->read_80xx(offset);
offset += 0x8000;
if (m_ram->size() < offset)
return 0;
else
return m_ram->pointer()[offset];
}
void a400_state::write_corina_overlay(offs_t offset, uint8_t data)
{
if (!m_cart_disabled)
{
m_cartleft->write_80xx(offset, data);
return;
}
offset += 0x8000;
if (m_ram->size() >= offset)
m_ram->pointer()[offset] = data;
}
void a400_state::write_corina_d5xx(offs_t offset, uint8_t data)
{
m_cart_disabled = BIT(data, 7);
m_cartleft->write_d5xx(offset, data);
}
void a400_state::disable_cart(offs_t offset, uint8_t data)
{
if (m_cart->exists())
if (m_cartleft->exists())
{
switch (m_cart->get_cart_type())
switch (m_cartleft->get_cart_type())
{
case A800_PHOENIX:
case A800_BLIZZARD:
@ -1868,7 +1902,7 @@ void a400_state::disable_cart(offs_t offset, uint8_t data)
{
// we enter here only if we are writing to a different offset than last time
m_last_offs = offset & 0x7;
m_cart->write_d5xx(offset, data);
m_cartleft->write_d5xx(offset, data);
}
}
break;
@ -1885,13 +1919,13 @@ void a400_state::disable_cart(offs_t offset, uint8_t data)
{
// we enter here only if we are writing to a different offset than last time
m_last_offs = offset & 0x0f;
m_cart->write_d5xx(offset & 0x0f, data);
m_cartleft->write_d5xx(offset & 0x0f, data);
}
}
break;
case A800_SPARTADOS:
// writes with offset & 8 are also used to enable/disable the subcart, so they go through!
m_cart->write_d5xx(offset, data);
m_cartleft->write_d5xx(offset, data);
break;
case A800_OSSM091:
case A800_OSS8K:
@ -1900,7 +1934,7 @@ void a400_state::disable_cart(offs_t offset, uint8_t data)
else
{
m_cart_disabled = 0;
m_cart->write_d5xx(offset, data);
m_cartleft->write_d5xx(offset, data);
}
break;
case A800_MICROCALC:
@ -1910,7 +1944,7 @@ void a400_state::disable_cart(offs_t offset, uint8_t data)
else
{
m_cart_disabled = 0;
m_cart->write_d5xx(offset, m_cart_helper);
m_cartleft->write_d5xx(offset, m_cart_helper);
}
break;
default:
@ -1993,6 +2027,15 @@ void a400_state::setup_cart(a800_cart_slot_device *slot)
m_maincpu->space(AS_PROGRAM).unmap_write(0x8000, 0xbfff);
m_maincpu->space(AS_PROGRAM).install_write_handler(0xd500, 0xd5ff, write8sm_delegate(*slot, FUNC(a800_cart_slot_device::write_d5xx)));
break;
case A800_CORINA:
case A800_CORINA_SRAM:
//m_maincpu->space(AS_PROGRAM).install_read_handler(0x8000, 0xbfff, read8sm_delegate(*slot, FUNC(a800_cart_slot_device::read_80xx)));
//m_maincpu->space(AS_PROGRAM).install_write_handler(0x8000, 0xbfff, write8sm_delegate(*slot, FUNC(a800_cart_slot_device::write_80xx)));
//m_maincpu->space(AS_PROGRAM).install_write_handler(0xd500, 0xd500, write8sm_delegate(*slot, FUNC(a800_cart_slot_device::write_d5xx)));
m_maincpu->space(AS_PROGRAM).install_read_handler(0x8000, 0xbfff, read8sm_delegate(*this, FUNC(a400_state::read_corina_overlay)));
m_maincpu->space(AS_PROGRAM).install_write_handler(0x8000, 0xbfff, write8sm_delegate(*this, FUNC(a400_state::write_corina_overlay)));
m_maincpu->space(AS_PROGRAM).install_write_handler(0xd500, 0xd500, write8sm_delegate(*this, FUNC(a400_state::write_corina_d5xx)));
break;
case A5200_4K:
case A5200_8K:
case A5200_16K:
@ -2044,7 +2087,7 @@ MACHINE_START_MEMBER( a400_state, a400 )
setup_ram(0, m_ram->size());
setup_ram(1, m_ram->size());
setup_ram(2, m_ram->size());
setup_cart(m_cart);
setup_cart(m_cartleft);
save_item(NAME(m_cart_disabled));
save_item(NAME(m_cart_helper));
@ -2057,8 +2100,8 @@ MACHINE_START_MEMBER( a400_state, a800 )
setup_ram(0, m_ram->size());
setup_ram(1, m_ram->size());
setup_ram(2, m_ram->size());
setup_cart(m_cart);
setup_cart(m_cart2);
setup_cart(m_cartleft);
setup_cart(m_cartright);
save_item(NAME(m_cart_disabled));
save_item(NAME(m_cart_helper));
@ -2069,7 +2112,7 @@ MACHINE_START_MEMBER( a400_state, a800xl )
{
m_mmu = 0xfd;
m_ext_bank = 0x03; // only used by a130xe
setup_cart(m_cart);
setup_cart(m_cartleft);
save_item(NAME(m_cart_disabled));
save_item(NAME(m_cart_helper));
@ -2081,7 +2124,7 @@ MACHINE_START_MEMBER( a400_state, a800xl )
MACHINE_START_MEMBER( a400_state, a5200 )
{
setup_cart(m_cart);
setup_cart(m_cartleft);
save_item(NAME(m_cart_disabled));
save_item(NAME(m_cart_helper));
@ -2127,14 +2170,14 @@ void a400_state::a800xl_pia_pb_w(uint8_t data)
**************************************************************/
// note: both screen setups are actually non-interlaced, and always 240 lines
void a400_state::config_ntsc_screen(machine_config &config)
void atari_common_state::config_ntsc_screen(machine_config &config)
{
// 15.69975KHz x 59.9271 Hz
m_screen->set_raw(XTAL(14'318'181), 912, antic_device::MIN_X, antic_device::MAX_X, 262, antic_device::MIN_Y, antic_device::MAX_Y);
m_gtia->set_region(GTIA_NTSC);
}
void a400_state::config_pal_screen(machine_config &config)
void atari_common_state::config_pal_screen(machine_config &config)
{
// 15.55655KHz x 49.86074 Hz, master clock rated at 14.18757 MHz
// TODO: confirm hsync
@ -2218,7 +2261,7 @@ void a400_state::atari_common(machine_config &config)
ATARI_FDC(config, "fdc", 0);
A800_CART_SLOT(config, "cartleft", a800_left, nullptr);
A800_CART_SLOT(config, m_cartleft, a800_left, nullptr);
/* software lists */
SOFTWARE_LIST(config, "flop_list").set_original("a800_flop");
@ -2277,7 +2320,7 @@ void a400_state::a800(machine_config &config)
// m_gtia->set_region(GTIA_NTSC);
A800_CART_SLOT(config, "cartright", a800_right, nullptr);
A800_CART_SLOT(config, m_cartright, a800_right, nullptr);
}
@ -2297,7 +2340,7 @@ void a400_state::a800pal(machine_config &config)
// m_gtia->set_region(GTIA_PAL);
A800_CART_SLOT(config, "cartright", a800_right, nullptr);
A800_CART_SLOT(config, m_cartright, a800_right, nullptr);
}
@ -2391,7 +2434,7 @@ void a400_state::xegs(machine_config &config)
config.device_remove("cartleft");
config.device_remove("cart_list");
XEGS_CART_SLOT(config, "cartleft", xegs_carts, nullptr);
XEGS_CART_SLOT(config, m_cartleft, xegs_carts, nullptr);
}
// memory map A5200, different ports, less RAM
@ -2420,7 +2463,7 @@ void a400_state::a5200(machine_config &config)
// m_screen->set_refresh_hz(antic_device::FRAME_RATE_60HZ);
// m_screen->set_size(antic_device::HWIDTH * 8, antic_device::TOTAL_LINES_60HZ);
A5200_CART_SLOT(config, "cartleft", a5200_carts, nullptr);
A5200_CART_SLOT(config, m_cartleft, a5200_carts, nullptr);
/* Software lists */
SOFTWARE_LIST(config, "cart_list").set_original("a5200");

View File

@ -61,6 +61,9 @@ protected:
optional_ioport_array<4> m_keypad;
optional_ioport m_djoy_b;
optional_ioport m_fake;
void config_ntsc_screen(machine_config &config);
void config_pal_screen(machine_config &config);
};
#endif // MAME_INCLUDES_ATARI400_H

View File

@ -143,10 +143,8 @@ void bartop52_state::a5200(machine_config &config)
/* video hardware */
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(1));
m_screen->set_visarea(antic_device::MIN_X, antic_device::MAX_X, antic_device::MIN_Y, antic_device::MAX_Y);
m_screen->set_refresh_hz(antic_device::FRAME_RATE_60HZ);
m_screen->set_size(antic_device::HWIDTH * 8, antic_device::TOTAL_LINES_60HZ);
config_ntsc_screen(config);
m_screen->set_screen_update("antic", FUNC(antic_device::screen_update));
m_screen->set_palette("palette");

View File

@ -356,13 +356,14 @@ void maxaflex_state::maxaflex(machine_config &config)
pia.irqb_handler().set("mainirq", FUNC(input_merger_device::in_w<2>));
/* video hardware */
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
screen.set_visarea(antic_device::MIN_X, antic_device::MAX_X, antic_device::MIN_Y, antic_device::MAX_Y);
screen.set_refresh_hz(antic_device::FRAME_RATE_60HZ);
screen.set_size(antic_device::HWIDTH * 8, antic_device::TOTAL_LINES_60HZ);
screen.set_screen_update("antic", FUNC(antic_device::screen_update));
screen.set_palette("palette");
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
config_ntsc_screen(config);
//screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
//screen.set_visarea(antic_device::MIN_X, antic_device::MAX_X, antic_device::MIN_Y, antic_device::MAX_Y);
//screen.set_refresh_hz(antic_device::FRAME_RATE_60HZ);
//screen.set_size(antic_device::HWIDTH * 8, antic_device::TOTAL_LINES_60HZ);
m_screen->set_screen_update("antic", FUNC(antic_device::screen_update));
m_screen->set_palette("palette");
PALETTE(config, "palette", FUNC(maxaflex_state::atari_palette), 256);
config.set_default_layout(layout_maxaflex);