atari/atari400.cpp: initial split up of different driver state classes (#10442)

* atari400.cpp: initial split up of different state machines

* atari400.cpp: Fix clang error: misleading indentation; statement is not part of the previous 'if' [-Werror,-Wmisleading-indentation]

* atari400.cpp: virtualize machine_start/machine_reset

* atari400.cpp: isolate m_ext_bank in a130xe_state

* atari400.cpp: bulk replace pokey raw tags into m_pokey
maxaflex.cpp: remove shadowed m_pokey, declared in atari_common_state;

* atari400.cpp: fix a800xl / a130xe self test ROM enabling, fixes Acid800 XL MMU test

* a800.xml: Update Q/A

* atari400.cpp: split a600xl and a1200xl to own state

* atari400.cpp: virtualize PIA portb

* atari400.cpp: use memory_view at 0xd800-0xffff

* atari400.cpp: various a400 and a800 refactoring changes:
- reduce memory maps and configs to bare minimum;
- reduce default RAM options for them and add preliminary options;
- isolate I/O map;
- make sure it unmap_value_high() because otherwise they will crash on non-48K setups;

* atari400.cpp: inherit hw_iomap for a800xl and onward

* atari400.cpp: lower kernel view bound to 0xc000 for a800xl and later machines

* atari400.cpp: remove all _low_r/low_w handlers and replaced with views, fix xegs default boot order (BASIC then game ROM via select key), address code review

* atari400.cpp: fix CI clang failure

* atari400.cpp: fix a1200xl_state calls

* atari400.cpp: hookup option jumpers to a1200xl

* atari400.cpp, gtia.cpp: misc connection notes

* a800.xml: minor bombjake notes

* atari400.cpp: reduce selftest views

* atari400.cpp: better inherit PIA portb mechanics

* atari400.cpp: remove obsolete a600xl_mem fns

* atari400.cpp: emulate extended RAM quirk for a130xe, convert m_ext_bank to address_map_bank_device

Co-authored-by: AJR <ajrhacker@users.noreply.github.com>
This commit is contained in:
Angelo Salese 2022-10-25 00:02:02 +02:00 committed by GitHub
parent 220a2cc8f6
commit 1876f2c792
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 565 additions and 571 deletions

View file

@ -542,12 +542,13 @@ Align test never completes, burn-in test requires a test disk and writing to flo
</part>
</software>
<software name="alfclrcv" supported="no">
<software name="alfclrcv" supported="partial">
<description>Alf in the Color Caves</description>
<year>1984</year>
<publisher>Spinnaker</publisher>
<notes><![CDATA[
Doesn't complete first animation after selecting the left tunnel, [ANTIC] timing?
a800: Doesn't complete first animation after selecting left tunnel during gameplay, [cart] handling (override right slot map?)
Draws with solid orange at bottom of screen after selecting left tunnel, should be black [ANTIC]
]]></notes>
<info name="developer" value="Joyce Hakansson Associates, Inc" />
<info name="serial" value="ALF-AT" />
@ -1250,6 +1251,7 @@ a certain time, and this isn't currently emulated.
</part>
</software>
<!-- An actual "Bomb Jack" version known to exist in .xex format, requiring 320KB RAM (!) -->
<software name="bombjake" supported="no">
<description>Bomb Jake</description>
<year>2009</year>
@ -1259,6 +1261,7 @@ Loading screen is very off, [ANTIC] timing sensitive (downclock maincpu to 50% t
Title screen has more timing glitches
Starting a game randomly crashes
Cuts off top portion of screen
Hi-score table gets garbled after first attract cycle
]]></notes>
<info name="usage" value="Use PAL system for BGM during gameplay, NTSC has SFX only. Doesn't work in plain a400/a800" />
<sharedfeat name="compatibility" value="XL/XE"/>
@ -2194,7 +2197,8 @@ Glitchy title screen the first time around (fixes after one playthrough)
<year>1999</year>
<publisher>Video 61 / GMG</publisher>
<notes><![CDATA[
Cannot start a game (requires mouse?)
Invisible mouse pointer on title screen, uses [GTIA] PRIOR multicolor + [ANTIC] missile DMA not enabled while sprite DMA is
Very glitchy on gameplay, sprite eventually disappears, timing?
Doesn't survive a soft reset
]]></notes>
<part name="cart" interface="a8bit_cart">
@ -4896,13 +4900,11 @@ Doesn't draw game over "the end" screen properly, [ANTIC] vertical scroll?
</part>
</software>
<software name="satan" supported="no">
<software name="satan">
<description>Satan's Hollow (Unreleased)</description>
<year>1982</year>
<publisher>CBS Software</publisher>
<notes><![CDATA[
Cannot start a game, cfr. kpatrol (have to hold trigger pressed at boot then release to start) [GTIA] latch trigger
]]></notes>
<info name="usage" value="Supports Booster-Grip Joystick Adaptor" />
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="a800_16k" />
<dataarea name="rom" size="16384">

View file

@ -409,6 +409,7 @@ Runs too fast
<description>Jumpman</description>
<year>1983</year>
<publisher>Epyx</publisher>
<info name="usage" value="Hold OPTION key during boot to disable BASIC, requires 32K RAM as minimum" />
<part name="flop1" interface="floppy_5_25">
<dataarea name="flop" size="92176">
<rom name="jumpman.atr" size="92176" crc="290a9e56" sha1="96c411a65cfd0b45ac68603021793701d27244b9"/>
@ -427,6 +428,7 @@ Runs too fast
]]></notes>
<info name="serial" value="64712" />
<info name="usage" value="Hold OPTION key during boot to disable BASIC" />
<part name="flop1" interface="floppy_5_25">
<dataarea name="flop" size="92160">
<rom name="elektraglide.xfd" size="92160" crc="96185b1c" sha1="fb9825a432b83a2a7e623a2f617d0fa11de08158"/>

File diff suppressed because it is too large Load diff

View file

@ -55,7 +55,7 @@ void bartop52_state::a5200_mem(address_map &map)
map(0x4000, 0xbfff).rom();
map(0xc000, 0xc0ff).rw(m_gtia, FUNC(gtia_device::read), FUNC(gtia_device::write));
map(0xd400, 0xd5ff).rw(m_antic, FUNC(antic_device::read), FUNC(antic_device::write));
map(0xe800, 0xe8ff).rw("pokey", FUNC(pokey_device::read), FUNC(pokey_device::write));
map(0xe800, 0xe8ff).rw(m_pokey, FUNC(pokey_device::read), FUNC(pokey_device::write));
map(0xf800, 0xffff).rom();
}

View file

@ -319,8 +319,10 @@ void gtia_device::button_interrupt(int button_count)
/* button registers for xl/xe */
if (button_count == 2)
{
m_r.but[2] = 1; /* not used on xl/xe */
m_r.but[3] = 0; /* 1 if external cartridge is inserted */
// TRIG2: unused on xl/xe (1), xegs keyboard (1) connected (0) disconnected
m_r.but[2] = 1;
// TRIG3: RD5 external cart readback (1) present (0) disabled thru bankswitch or absent
m_r.but[3] = 0;
}
}

View file

@ -40,7 +40,6 @@ public:
maxaflex_state(const machine_config &mconfig, device_type type, const char *tag)
: atari_common_state(mconfig, type, tag)
, m_mcu(*this, "mcu")
, m_pokey(*this, "pokey")
, m_speaker(*this, "speaker")
, m_region_maincpu(*this, "maincpu")
, m_dsw(*this, "dsw")
@ -80,7 +79,6 @@ private:
uint8_t m_portc_out;
required_device<m68705p3_device> m_mcu;
required_device<pokey_device> m_pokey;
required_device<speaker_sound_device> m_speaker;
required_region_ptr<uint8_t> m_region_maincpu;
required_ioport m_dsw;
@ -211,7 +209,7 @@ void maxaflex_state::a600xl_mem(address_map &map)
map(0xc000, 0xcfff).rom(); /* OS */
map(0xd000, 0xd0ff).rw(m_gtia, FUNC(gtia_device::read), FUNC(gtia_device::write));
map(0xd100, 0xd1ff).noprw();
map(0xd200, 0xd2ff).rw("pokey", FUNC(pokey_device::read), FUNC(pokey_device::write));
map(0xd200, 0xd2ff).rw(m_pokey, FUNC(pokey_device::read), FUNC(pokey_device::write));
map(0xd300, 0xd3ff).rw("pia", FUNC(pia6821_device::read_alt), FUNC(pia6821_device::write_alt));
map(0xd400, 0xd4ff).rw(m_antic, FUNC(antic_device::read), FUNC(antic_device::write));
map(0xd500, 0xd7ff).noprw();