spectrum and amiga changes from Haze (no whatsnew)

This commit is contained in:
Miodrag Milanovic 2012-10-27 12:32:44 +00:00
parent 4dc8836c7d
commit 274bab4ac8
10 changed files with 630 additions and 450 deletions

4
.gitattributes vendored
View File

@ -25,10 +25,12 @@ hash/advision.xml svneol=native#text/xml
hash/alice32.xml svneol=native#text/xml
hash/alice90.xml svneol=native#text/xml
hash/amiga1000_flop.xml svneol=native#text/xml
hash/amiga1200_flop.xml svneol=native#text/xml
hash/amiga500_flop.xml svneol=native#text/xml
hash/amiga500plus_flop.xml svneol=native#text/xml
hash/amiga600_flop.xml svneol=native#text/xml
hash/amiga_flop.xml svneol=native#text/xml
hash/amigaaga_flop.xml svneol=native#text/xml
hash/apfm1000.xml svneol=native#text/xml
hash/apple1.xml svneol=native#text/xml
hash/apple2.xml svneol=native#text/xml
@ -137,6 +139,7 @@ hash/pce.xml svneol=native#text/xml
hash/pcecd.xml svneol=native#text/xml
hash/pcw.xml svneol=native#text/xml
hash/pcw16.xml svneol=native#text/xml
hash/pentagon_cass.xml svneol=native#text/xml
hash/pico.xml svneol=native#text/xml
hash/pippin.xml svneol=native#text/xml
hash/pippin_flop.xml svneol=native#text/xml
@ -5614,7 +5617,6 @@ src/mess/drivers/alesis.c svneol=native#text/plain
src/mess/drivers/alphasma.c svneol=native#text/plain
src/mess/drivers/alphatro.c svneol=native#text/plain
src/mess/drivers/altair.c svneol=native#text/plain
src/mess/drivers/ami1200.c svneol=native#text/plain
src/mess/drivers/amico2k.c svneol=native#text/plain
src/mess/drivers/amiga.c svneol=native#text/plain
src/mess/drivers/amstr_pc.c svneol=native#text/plain

58
hash/amiga1200_flop.xml Normal file
View File

@ -0,0 +1,58 @@
<?xml version="1.0"?>
<!DOCTYPE softwarelist SYSTEM "softwarelist.dtd">
<!-- This list contains the system floppies distributed with the Amiga 1200, it is not a general purpose Software List -->
<softwarelist name="amiga1200_flop" description="Amiga 1200 System Floppies">
<software name="wb30">
<description>Workbench v3.0 rev 39.29</description>
<year>1992</year>
<publisher>Commodore</publisher>
<part name="flop1" interface="floppy_3_5">
<feature name="part_id" value="Install" />
<dataarea name="flop" size="901120">
<rom name="workbench v3.0 rev 39.29 (1992)(commodore)(a1200-a4000)(m10)(disk 1 of 6)(install).adf" size="901120" crc="6fa2d2b4" sha1="ba24b4172339b9198e4f724a6804d0c6eb5e394b" offset="0"/>
</dataarea>
</part>
<part name="flop2" interface="floppy_3_5">
<feature name="part_id" value="Workbench" />
<dataarea name="flop" size="901120">
<rom name="workbench v3.0 rev 39.29 (1992)(commodore)(a1200-a4000)(m10)(disk 2 of 6)(workbench)[!].adf" size="901120" crc="a4d9752d" sha1="e663c92a9c88fa38d02bbb299bea8ce70c56b417" offset="0"/>
</dataarea>
</part>
<part name="flop3" interface="floppy_3_5">
<feature name="part_id" value="Extras" />
<dataarea name="flop" size="901120">
<rom name="workbench v3.0 rev 39.29 (1992)(commodore)(a1200-a4000)(m10)(disk 3 of 6)(extras)[!].adf" size="901120" crc="95da642d" sha1="74304711678ebd3287f816ae250b47bd4d8f5195" offset="0"/>
</dataarea>
</part>
<part name="flop4" interface="floppy_3_5">
<feature name="part_id" value="Storage" />
<dataarea name="flop" size="901120">
<rom name="workbench v3.0 rev 39.29 (1992)(commodore)(a1200-a4000)(m10)(disk 4 of 6)(storage)[!].adf" size="901120" crc="0c8c24d5" sha1="93cab7cd05471e8fde63cb1d512b048cd593aebc" offset="0"/>
</dataarea>
</part>
<part name="flop5" interface="floppy_3_5">
<feature name="part_id" value="Locale" />
<dataarea name="flop" size="901120">
<rom name="workbench v3.0 rev 39.29 (1992)(commodore)(a1200-a4000)(m10)(disk 5 of 6)(locale)[!].adf" size="901120" crc="67835fe5" sha1="00d0670a9060ab7805dc2fa7e2e856b33a828043" offset="0"/>
</dataarea>
</part>
<part name="flop6" interface="floppy_3_5">
<feature name="part_id" value="Fonts" />
<dataarea name="flop" size="901120">
<rom name="workbench v3.0 rev 39.29 (1992)(commodore)(a1200-a4000)(m10)(disk 6 of 6)(fonts).adf" size="901120" crc="d7364bb4" sha1="4531651fe34a7f0a2dc1a1523ed4c2507670f5a6" offset="0"/>
</dataarea>
</part>
</software>
</softwarelist>

152
hash/amigaaga_flop.xml Normal file
View File

@ -0,0 +1,152 @@
<?xml version="1.0"?>
<!DOCTYPE softwarelist SYSTEM "softwarelist.dtd">
<!-- General purpose software list for Amiga software requiring the AGA chipset (A1200 / A4000)
the software listed here is not designed for use on systems without the AGA chipset and
will not function.
-->
<softwarelist name="amigaaga_flop" description="Amiga AGA Floppy Disks list">
<!-- has manual protection -->
<software name="pballfna">
<description>Pinball Fantasies AGA</description>
<year>1993</year>
<publisher>21st Century Entertainment</publisher>
<part name="flop1" interface="floppy_3_5">
<feature name="part_id" value="Disk 1" />
<dataarea name="flop" size="1049612">
<rom name="pinballfantasiesaga_pf1.ipf" size="1049612" crc="60e23065" sha1="0d401004a02c6e8af2532b0180ce42a3725c69ce" offset="0"/>
</dataarea>
</part>
<part name="flop2" interface="floppy_3_5">
<feature name="part_id" value="Disk 2" />
<dataarea name="flop" size="1049612">
<rom name="pinballfantasiesaga_pf2.ipf" size="1049612" crc="64e3b549" sha1="44d59c0660170eba8dee54d710cfec1f598a7a90" offset="0"/>
</dataarea>
</part>
<part name="flop3" interface="floppy_3_5">
<feature name="part_id" value="Disk 3" />
<dataarea name="flop" size="1049612">
<rom name="pinballfantasiesaga_pf3.ipf" size="1049612" crc="2a0d1c66" sha1="df95ae4ed9bda2d0563958c26fc23fdd5fe6f3d7" offset="0"/>
</dataarea>
</part>
<part name="flop4" interface="floppy_3_5">
<feature name="part_id" value="Disk 4" />
<dataarea name="flop" size="1049612">
<rom name="pinballfantasiesaga_pf4.ipf" size="1049612" crc="e5ab9484" sha1="83151b5738844bdc668c80b20dd2d742668063fb" offset="0"/>
</dataarea>
</part>
</software>
<!-- unprotected -->
<software name="pballfnapdy" cloneof="pballfna">
<description>Pinball Fantasies AGA (Cracked, PDY)</description>
<year>1993</year>
<publisher>21st Century Entertainment</publisher>
<part name="flop1" interface="floppy_3_5">
<feature name="part_id" value="Disk 1" />
<dataarea name="flop" size="1049612">
<rom name="pinball fantasies (1993)(21st century)(aga)(disk 1 of 4)[cr pdy].adf" size="901120" crc="708fc612" sha1="99e24713096bcfc90281e8c0ae4d57c395e66069" offset="0"/>
</dataarea>
</part>
<part name="flop2" interface="floppy_3_5">
<feature name="part_id" value="Disk 2" />
<dataarea name="flop" size="1049612">
<rom name="pinball fantasies (1993)(21st century)(aga)(disk 2 of 4).adf" size="901120" crc="eced3e6c" sha1="2f4669459021e0e756975061bf38d55982975281" offset="0"/>
</dataarea>
</part>
<part name="flop3" interface="floppy_3_5">
<feature name="part_id" value="Disk 3" />
<dataarea name="flop" size="1049612">
<rom name="pinball fantasies (1993)(21st century)(aga)(disk 3 of 4).adf" size="901120" crc="ff04b00c" sha1="ad12df201dea97987d0455e24fac0459e648da1a" offset="0"/>
</dataarea>
</part>
<part name="flop4" interface="floppy_3_5">
<feature name="part_id" value="Disk 4" />
<dataarea name="flop" size="1049612">
<rom name="pinball fantasies (1993)(21st century)(aga)(disk 4 of 4).adf" size="901120" crc="912a609f" sha1="0e6818ceabd9e362a9b15bac9a551d4a017fd536" offset="0"/>
</dataarea>
</part>
</software>
<!-- severe gfx problems -->
<software name="pballill" supported="no">
<description>Pinball Illusions</description>
<year>1995</year>
<publisher>21st Century Entertainment</publisher>
<part name="flop1" interface="floppy_3_5">
<feature name="part_id" value="Disk 1" />
<dataarea name="flop" size="1049612">
<rom name="pinballillusions_disk1.ipf" size="1049612" crc="0cf8949b" sha1="8970859b71aefdb13d47c9b16b279f52405dae4c" offset="0"/>
</dataarea>
</part>
<part name="flop2" interface="floppy_3_5">
<feature name="part_id" value="Disk 2" />
<dataarea name="flop" size="1049612">
<rom name="pinballillusions_disk2.ipf" size="1049612" crc="93ce1135" sha1="5dad662b278a45e4720043407bbf22c0a9932df5" offset="0"/>
</dataarea>
</part>
<part name="flop3" interface="floppy_3_5">
<feature name="part_id" value="Disk 3" />
<dataarea name="flop" size="1049612">
<rom name="pinballillusions_disk3.ipf" size="1049612" crc="282ea51d" sha1="39f78c077ee27f213ff3f07a991ba165212d780f" offset="0"/>
</dataarea>
</part>
<part name="flop4" interface="floppy_3_5">
<feature name="part_id" value="Disk 4" />
<dataarea name="flop" size="1049612">
<rom name="pinballillusions_disk4.ipf" size="1049612" crc="e551bc40" sha1="05757f0e6289385df204c2ced4fb0348aa4b39ee" offset="0"/>
</dataarea>
</part>
</software>
<!-- simple 1 disk game using AGA mode -->
<software name="gigertet">
<description>Giger-Tetris</description>
<year>1993</year>
<publisher>Panic Production</publisher>
<part name="flop1" interface="floppy_3_5">
<feature name="part_id" value="Disk 1" />
<dataarea name="flop" size="901120">
<rom name="giger-tetris (1993)(panic production)(aga)(sw).adf" size="901120" crc="e58911f4" sha1="90d146454db7317e02f428aa24e01296db0ea2d4" offset="0"/>
</dataarea>
</part>
</software>
<!-- various gfx issues, good test case for bugfixing? -->
<software name="dxpacaga" supported="partial">
<description>Deluxe Pac-Man v1.7 AGA (1997-04-27)</description>
<year>1997</year>
<publisher>Edgar Vigdal</publisher>
<part name="flop1" interface="floppy_3_5">
<feature name="part_id" value="Disk 1" />
<dataarea name="flop" size="901120">
<rom name="deluxe pac-man v1.7 (1997-04-27)(vigdal, edgar)(aga)(sw-r).adf" size="901120" crc="0fb6d45d" sha1="378cb7c11d8f57d812469fcc8db1a1a848e8ce63" offset="0"/>
</dataarea>
</part>
</software>
</softwarelist>

32
hash/pentagon_cass.xml Normal file
View File

@ -0,0 +1,32 @@
<?xml version="1.0"?>
<!DOCTYPE softwarelist SYSTEM "softwarelist.dtd">
<!-- Preliminary list.
This list contains software for the Russian 'Pentagon 128' systems.
These systems are Spectrum clones, but offer various extended features.
The software listed here will not function correctly (if at all) on a regular Spectrum
-->
<softwarelist name="pentagon_cass" description="Pentagon (ZX Spectrum clone) cassettes">
<software name="bouldmix">
<description>Boulder Mix (Russia)</description>
<year>1996</year>
<publisher>Firesoft</publisher>
<part name="cass" interface="spectrum_cass">
<dataarea name="cass" size="45895">
<rom name="boulder mix (19xx)(firesoft)(ru)[pentagon 128].tzx" size="45895" crc="dd36b3bf" sha1="26430d66baaf04c2e7757f23169ffb201190d5c6" offset="0"/>
</dataarea>
</part>
</software>
</softwarelist>

View File

@ -18,6 +18,7 @@
<!-- COMPATIBILITY
The MESS emulation at the time of writing isn't very good, the following emulators are used to determine how things should work
EmuZWin (v2.7 release 2.8) - Closed Source, runs some images (Gremlin 2 type*) which fail on the emulators below - http://kolmck.net/apps/EmuZWin_Eng.htm
Fuse (Free Unix Spectrum Emulator) - Free, High Compatibility can run some of the trickier images, Windows port available - http://fuse-emulator.sourceforge.net/
Spectaculator - Commercial, a bit more user friendly than above, similar compatibility - http://www.spectaculator.com/
@ -33,9 +34,8 @@
legacy emulators including Real Spectrum ( http://zxm.speccy.cz/realspec/ ) appear to struggle with some of the more complex tape protections
ToDo: Find an emulator which works with the 'Gremlin 2' protected tapes 'M.A.S.K' and 'Basil The Great Mouse Detective' all TZX images I've found fail in the
above emulators, although RealSpectrum does load some copies of MASK but fails loading the 2nd part of the game.
* Gremlin 2 type images include 'M.A.S.K' and 'Basil The Great Mouse Detective'

View File

@ -1,414 +0,0 @@
/*
Amiga 1200
Preliminary MAME driver by Mariusz Wojcieszek
CD-ROM controller by Ernesto Corvi
Borrowed by incog for MESS
2009-05 Fabio Priuli:
Amiga 1200 support is just sketched (I basically took cd32 and removed Akiko). I connected
the floppy drive in the same way as in amiga.c but it seems to be not working, since I
tried to load WB3.1 with no success. However, this problem may be due to anything: maybe
the floppy code must be connected elsewhere, or the .adf image is broken, or I made some
stupid mistake in the CIA interfaces.
Later, it could be wise to re-factor this source and merge the non-AGA code with
mess/drivers/amiga.c
*/
#include "emu.h"
#include "cpu/m68000/m68000.h"
#include "machine/6526cia.h"
#include "machine/i2cmem.h"
#include "machine/amigafdc.h"
#include "machine/amigakbd.h"
#include "includes/amiga.h"
#include "includes/cd32.h"
class ami1200_state : public amiga_state
{
public:
ami1200_state(const machine_config &mconfig, device_type type, const char *tag)
: amiga_state(mconfig, type, tag) { }
UINT16 m_potgo_value;
int m_cd32_shifter[2];
int m_oldstate[2];
DECLARE_WRITE32_MEMBER(aga_overlay_w);
DECLARE_DRIVER_INIT(a1200);
DECLARE_WRITE8_MEMBER(ami1200_cia_0_porta_w);
DECLARE_READ8_MEMBER(ami1200_cia_0_portb_r);
DECLARE_WRITE8_MEMBER(ami1200_cia_0_portb_w);
DECLARE_READ8_MEMBER(a1200_cia_0_portA_r);
};
#define A1200PAL_XTAL_X1 XTAL_28_37516MHz
#define A1200PAL_XTAL_X2 XTAL_4_433619MHz
static void handle_cd32_joystick_cia(ami1200_state *state, UINT8 pra, UINT8 dra);
WRITE32_MEMBER(ami1200_state::aga_overlay_w)
{
if (ACCESSING_BITS_16_23)
{
data = (data >> 16) & 1;
/* switch banks as appropriate */
membank("bank1")->set_entry(data & 1);
/* swap the write handlers between ROM and bank 1 based on the bit */
if ((data & 1) == 0)
/* overlay disabled, map RAM on 0x000000 */
space.install_write_bank(0x000000, 0x1fffff, "bank1");
else
/* overlay enabled, map Amiga system ROM on 0x000000 */
space.unmap_write(0x000000, 0x1fffff);
}
}
/*************************************
*
* CIA-A port A access:
*
* PA7 = game port 1, pin 6 (fire)
* PA6 = game port 0, pin 6 (fire)
* PA5 = /RDY (disk ready)
* PA4 = /TK0 (disk track 00)
* PA3 = /WPRO (disk write protect)
* PA2 = /CHNG (disk change)
* PA1 = /LED (LED, 0=bright / audio filter control)
* PA0 = MUTE
*
*************************************/
WRITE8_MEMBER(ami1200_state::ami1200_cia_0_porta_w)
{
device_t *device = machine().device("cia_0");
/* bit 2 = Power Led on Amiga */
set_led_status(machine(), 0, !BIT(data, 1));
handle_cd32_joystick_cia(this, data, mos6526_r(device, space, 2));
}
/*************************************
*
* CIA-A port B access:
*
* PB7 = parallel data 7
* PB6 = parallel data 6
* PB5 = parallel data 5
* PB4 = parallel data 4
* PB3 = parallel data 3
* PB2 = parallel data 2
* PB1 = parallel data 1
* PB0 = parallel data 0
*
*************************************/
READ8_MEMBER(ami1200_state::ami1200_cia_0_portb_r)
{
/* parallel port */
logerror("%s:CIA0_portb_r\n", machine().describe_context());
return 0xff;
}
WRITE8_MEMBER(ami1200_state::ami1200_cia_0_portb_w)
{
/* parallel port */
logerror("%s:CIA0_portb_w(%02x)\n", machine().describe_context(), data);
}
static ADDRESS_MAP_START( a1200_map, AS_PROGRAM, 32, ami1200_state )
ADDRESS_MAP_UNMAP_HIGH
AM_RANGE(0x000000, 0x1fffff) AM_RAMBANK("bank1") AM_SHARE("chip_ram")
AM_RANGE(0xbfa000, 0xbfa003) AM_WRITE(aga_overlay_w)
AM_RANGE(0xbfd000, 0xbfefff) AM_READWRITE16_LEGACY(amiga_cia_r, amiga_cia_w, 0xffffffff)
AM_RANGE(0xc00000, 0xdfffff) AM_READWRITE16_LEGACY(amiga_custom_r, amiga_custom_w, 0xffffffff) AM_SHARE("custom_regs")
AM_RANGE(0xe80000, 0xe8ffff) AM_READWRITE16_LEGACY(amiga_autoconfig_r, amiga_autoconfig_w, 0xffffffff)
AM_RANGE(0xf80000, 0xffffff) AM_ROM AM_REGION("user1", 0) /* Kickstart */
ADDRESS_MAP_END
//int cd32_input_port_val = 0;
//int cd32_input_select = 0;
static void cd32_potgo_w(running_machine &machine, UINT16 data)
{
ami1200_state *state = machine.driver_data<ami1200_state>();
int i;
state->m_potgo_value = state->m_potgo_value & 0x5500;
state->m_potgo_value |= data & 0xaa00;
for (i = 0; i < 8; i += 2)
{
UINT16 dir = 0x0200 << i;
if (data & dir)
{
UINT16 d = 0x0100 << i;
state->m_potgo_value &= ~d;
state->m_potgo_value |= data & d;
}
}
for (i = 0; i < 2; i++)
{
UINT16 p5dir = 0x0200 << (i * 4); /* output enable P5 */
UINT16 p5dat = 0x0100 << (i * 4); /* data P5 */
if ((state->m_potgo_value & p5dir) && (state->m_potgo_value & p5dat))
state->m_cd32_shifter[i] = 8;
}
}
static void handle_cd32_joystick_cia(ami1200_state *state, UINT8 pra, UINT8 dra)
{
int i;
for (i = 0; i < 2; i++)
{
UINT8 but = 0x40 << i;
UINT16 p5dir = 0x0200 << (i * 4); /* output enable P5 */
UINT16 p5dat = 0x0100 << (i * 4); /* data P5 */
if (!(state->m_potgo_value & p5dir) || !(state->m_potgo_value & p5dat))
{
if ((dra & but) && (pra & but) != state->m_oldstate[i])
{
if (!(pra & but))
{
state->m_cd32_shifter[i]--;
if (state->m_cd32_shifter[i] < 0)
state->m_cd32_shifter[i] = 0;
}
}
}
state->m_oldstate[i] = pra & but;
}
}
static INPUT_PORTS_START( a1200 )
PORT_START("CIA0PORTA")
PORT_BIT( 0x3f, IP_ACTIVE_LOW, IPT_SPECIAL )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
PORT_START("CIA0PORTB")
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START("JOY0DAT")
PORT_BIT( 0x0303, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, ami1200_state,amiga_joystick_convert, "P1JOY")
PORT_BIT( 0xfcfc, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_START("JOY1DAT")
PORT_BIT( 0x0303, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, ami1200_state,amiga_joystick_convert, "P2JOY")
PORT_BIT( 0xfcfc, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_START("POTGO")
PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1)
PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
PORT_BIT( 0xaaff, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_START("P1JOY")
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_PLAYER(1)
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_PLAYER(1)
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_PLAYER(1)
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(1)
PORT_START("P2JOY")
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_PLAYER(2)
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_PLAYER(2)
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_PLAYER(2)
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2)
PORT_START("P0MOUSEX")
PORT_BIT( 0xff, 0x00, IPT_MOUSE_X) PORT_SENSITIVITY(100) PORT_KEYDELTA(5) PORT_MINMAX(0, 255) PORT_PLAYER(1)
PORT_START("P0MOUSEY")
PORT_BIT( 0xff, 0x00, IPT_MOUSE_Y) PORT_SENSITIVITY(100) PORT_KEYDELTA(5) PORT_MINMAX(0, 255) PORT_PLAYER(1)
PORT_START("P1MOUSEX")
PORT_BIT( 0xff, 0x00, IPT_MOUSE_X) PORT_SENSITIVITY(100) PORT_KEYDELTA(5) PORT_MINMAX(0, 255) PORT_PLAYER(2)
PORT_START("P1MOUSEY")
PORT_BIT( 0xff, 0x00, IPT_MOUSE_Y) PORT_SENSITIVITY(100) PORT_KEYDELTA(5) PORT_MINMAX(0, 255) PORT_PLAYER(2)
INPUT_PORTS_END
/*************************************
*
* Sound definitions
*
*************************************/
READ8_MEMBER(ami1200_state::a1200_cia_0_portA_r)
{
UINT8 ret = machine().root_device().ioport("CIA0PORTA")->read() & 0xc0; /* Gameport 1 and 0 buttons */
ret |= machine().device<amiga_fdc>("fdc")->ciaapra_r();
return ret;
}
static const legacy_mos6526_interface a1200_cia_0_intf =
{
DEVCB_DEVICE_LINE("cia_0", amiga_cia_0_irq), /* irq_func */
DEVCB_NULL, /* pc_func */
DEVCB_NULL,
DEVCB_NULL,
DEVCB_DRIVER_MEMBER(ami1200_state,a1200_cia_0_portA_r),
DEVCB_DRIVER_MEMBER(ami1200_state,ami1200_cia_0_porta_w), /* port A */
DEVCB_DRIVER_MEMBER(ami1200_state,ami1200_cia_0_portb_r),
DEVCB_DRIVER_MEMBER(ami1200_state,ami1200_cia_0_portb_w) /* port B */
};
static const legacy_mos6526_interface a1200_cia_1_intf =
{
DEVCB_DEVICE_LINE("cia_1", amiga_cia_1_irq), /* irq_func */
DEVCB_NULL, /* pc_func */
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL, /* port A */
DEVCB_NULL,
DEVCB_DEVICE_MEMBER("fdc", amiga_fdc, ciaaprb_w) /* port B */
};
static SLOT_INTERFACE_START( amiga_floppies )
SLOT_INTERFACE( "35dd", FLOPPY_35_DD )
SLOT_INTERFACE_END
static MACHINE_CONFIG_START( a1200n, ami1200_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", M68EC020, AMIGA_68EC020_NTSC_CLOCK) /* 14.3 Mhz */
MCFG_CPU_PROGRAM_MAP(a1200_map)
// MCFG_CPU_ADD("keyboard_mpu", MC68HC05)
MCFG_MACHINE_RESET_OVERRIDE(ami1200_state,amiga)
/* video hardware */
MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(59.997)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(512*2, 312)
MCFG_SCREEN_VISIBLE_AREA((129-8-8)*2, (449+8-1+8)*2, 44-8, 300+8-1)
MCFG_SCREEN_UPDATE_DRIVER(ami1200_state, screen_update_amiga_aga)
MCFG_VIDEO_START_OVERRIDE(ami1200_state,amiga_aga)
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
MCFG_SOUND_ADD("amiga", AMIGA, XTAL_28_63636MHz/8)
MCFG_SOUND_ROUTE(0, "lspeaker", 0.25)
MCFG_SOUND_ROUTE(1, "rspeaker", 0.25)
MCFG_SOUND_ROUTE(2, "rspeaker", 0.25)
MCFG_SOUND_ROUTE(3, "lspeaker", 0.25)
/* cia */
MCFG_LEGACY_MOS8520_ADD("cia_0", AMIGA_68EC020_NTSC_CLOCK / 10, 0, a1200_cia_0_intf)
MCFG_LEGACY_MOS8520_ADD("cia_1", AMIGA_68EC020_NTSC_CLOCK / 10, 0, a1200_cia_1_intf)
/* fdc */
MCFG_AMIGA_FDC_ADD("fdc", AMIGA_68EC020_NTSC_CLOCK/2)
MCFG_FLOPPY_DRIVE_ADD("fdc:0", amiga_floppies, "35dd", 0, amiga_fdc::floppy_formats)
MCFG_FLOPPY_DRIVE_ADD("fdc:1", amiga_floppies, 0, 0, amiga_fdc::floppy_formats)
MCFG_FLOPPY_DRIVE_ADD("fdc:2", amiga_floppies, 0, 0, amiga_fdc::floppy_formats)
MCFG_FLOPPY_DRIVE_ADD("fdc:3", amiga_floppies, 0, 0, amiga_fdc::floppy_formats)
MCFG_AMIGA_KEYBOARD_ADD("kbd")
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( a1200p, a1200n )
/* adjust for PAL specs */
MCFG_CPU_MODIFY("maincpu")
MCFG_CPU_CLOCK(A1200PAL_XTAL_X1/2) /* 14.18758 MHz */
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_REFRESH_RATE(50)
/* sound hardware */
MCFG_SOUND_MODIFY("amiga")
MCFG_SOUND_CLOCK(A1200PAL_XTAL_X1/8) /* 3.546895 MHz */
/* cia */
MCFG_DEVICE_MODIFY("cia_0")
MCFG_DEVICE_CLOCK(A1200PAL_XTAL_X1/20)
MCFG_DEVICE_MODIFY("cia_1")
MCFG_DEVICE_CLOCK(A1200PAL_XTAL_X1/20)
/* fdc */
MCFG_DEVICE_MODIFY("fdc")
MCFG_DEVICE_CLOCK(A1200PAL_XTAL_X1/4)
MACHINE_CONFIG_END
/***************************************************************************
ROM DEFINITIONS
***************************************************************************/
ROM_START( a1200n )
ROM_REGION32_BE(0x080000, "user1", 0)
ROM_DEFAULT_BIOS("kick31")
ROM_SYSTEM_BIOS(0, "kick30", "Kickstart 3.0 (39.106)")
ROMX_LOAD("391523-01.u6a", 0x000000, 0x040000, CRC(c742a412) SHA1(999eb81c65dfd07a71ee19315d99c7eb858ab186), ROM_GROUPWORD | ROM_REVERSE | ROM_SKIP(2) | ROM_BIOS(1))
ROMX_LOAD("391524-01.u6b", 0x000002, 0x040000, CRC(d55c6ec6) SHA1(3341108d3a402882b5ef9d3b242cbf3c8ab1a3e9), ROM_GROUPWORD | ROM_REVERSE | ROM_SKIP(2) | ROM_BIOS(1))
ROM_SYSTEM_BIOS(1, "kick31", "Kickstart 3.1 (40.068)")
ROMX_LOAD("391773-01.u6a", 0x000000, 0x040000, CRC(08dbf275) SHA1(b8800f5f909298109ea69690b1b8523fa22ddb37), ROM_GROUPWORD | ROM_REVERSE | ROM_SKIP(2) | ROM_BIOS(2)) // ROM_LOAD32_WORD_SWAP!
ROMX_LOAD("391774-01.u6b", 0x000002, 0x040000, CRC(16c07bf8) SHA1(90e331be1970b0e53f53a9b0390b51b59b3869c2), ROM_GROUPWORD | ROM_REVERSE | ROM_SKIP(2) | ROM_BIOS(2))
// COMMODORE | 391508-01 REV0 | KEYBOARD MPU
ROM_REGION(0x1040, "keyboard_rev0", 0)
ROM_LOAD("391508-01.u13", 0x0000, 0x1040, NO_DUMP)
// Amiga Tech REV1 Keyboard MPU
ROM_REGION(0x2f40, "keyboard_rev1", 0)
ROM_LOAD("391508-02.u13", 0x0000, 0x2f40, NO_DUMP)
ROM_END
#define rom_a1200p rom_a1200n
/***************************************************************************************************/
DRIVER_INIT_MEMBER(ami1200_state,a1200)
{
static const amiga_machine_interface cd32_intf =
{
AGA_CHIP_RAM_MASK,
NULL, NULL, /* joy0dat_r & joy1dat_r */
cd32_potgo_w, /* potgo_w */
NULL, /* serdat_w */
NULL, /* scanline0_callback */
NULL, /* reset_callback */
NULL, /* nmi_callback */
FLAGS_AGA_CHIPSET /* flags */
};
/* configure our Amiga setup */
amiga_machine_config(machine(), &cd32_intf);
/* set up memory */
membank("bank1")->configure_entry(0, m_chip_ram);
membank("bank1")->configure_entry(1, machine().root_device().memregion("user1")->base());
}
/***************************************************************************************************/
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */
COMP( 1992, a1200n, 0, 0, a1200n, a1200, ami1200_state, a1200, "Commodore Business Machines", "Amiga 1200 (NTSC)" , GAME_NOT_WORKING )
COMP( 1992, a1200p, a1200n, 0, a1200p, a1200, ami1200_state, a1200, "Commodore Business Machines", "Amiga 1200 (PAL)" , GAME_NOT_WORKING )

View File

@ -15,10 +15,36 @@ If we didn't map any, then we still put a mirror, but where fast-mem
would commence ($C00000).
***************************************************************************/
/*
Amiga 1200
Preliminary MAME driver by Mariusz Wojcieszek
CD-ROM controller by Ernesto Corvi
Borrowed by incog for MESS
2009-05 Fabio Priuli:
Amiga 1200 support is just sketched (I basically took cd32 and removed Akiko). I connected
the floppy drive in the same way as in amiga.c but it seems to be not working, since I
tried to load WB3.1 with no success. However, this problem may be due to anything: maybe
the floppy code must be connected elsewhere, or the .adf image is broken, or I made some
stupid mistake in the CIA interfaces.
Later, it could be wise to re-factor this source and merge the non-AGA code with
mess/drivers/amiga.c
*/
/* Core includes */
#include "emu.h"
#include "includes/amiga.h"
#include "includes/cd32.h"
/* Components */
#include "cpu/m68000/m68000.h"
@ -33,6 +59,7 @@ would commence ($C00000).
#include "machine/ctronics.h"
#include "machine/nvram.h"
#include "sound/cdda.h"
#include "machine/i2cmem.h"
/* Devices */
#include "imagedev/chd_cd.h"
@ -48,6 +75,33 @@ public:
DECLARE_MACHINE_RESET(cdtv);
};
class ami1200_state : public amiga_state
{
public:
ami1200_state(const machine_config &mconfig, device_type type, const char *tag)
: amiga_state(mconfig, type, tag) { }
UINT16 m_potgo_value;
int m_cd32_shifter[2];
int m_oldstate[2];
DECLARE_WRITE32_MEMBER(aga_overlay_w);
DECLARE_DRIVER_INIT(a1200);
DECLARE_WRITE8_MEMBER(ami1200_cia_0_porta_w);
DECLARE_READ8_MEMBER(ami1200_cia_0_portb_r);
DECLARE_WRITE8_MEMBER(ami1200_cia_0_portb_w);
DECLARE_READ8_MEMBER(a1200_cia_0_portA_r);
};
#define A1200PAL_XTAL_X1 XTAL_28_37516MHz
#define A1200PAL_XTAL_X2 XTAL_4_433619MHz
static DECLARE_READ8_DEVICE_HANDLER( amiga_cia_0_portA_r );
static DECLARE_READ8_DEVICE_HANDLER( amiga_cia_0_cdtv_portA_r );
static DECLARE_WRITE8_DEVICE_HANDLER( amiga_cia_0_portA_w );
@ -112,6 +166,17 @@ static ADDRESS_MAP_START(amiga_mem, AS_PROGRAM, 16, amiga_state )
AM_RANGE(0xf80000, 0xffffff) AM_ROM AM_REGION("user1", 0) /* System ROM - mirror */
ADDRESS_MAP_END
static ADDRESS_MAP_START( a1200_map, AS_PROGRAM, 32, ami1200_state )
ADDRESS_MAP_UNMAP_HIGH
AM_RANGE(0x000000, 0x1fffff) AM_RAMBANK("bank1") AM_SHARE("chip_ram")
AM_RANGE(0xbfa000, 0xbfa003) AM_WRITE(aga_overlay_w)
AM_RANGE(0xbfd000, 0xbfefff) AM_READWRITE16_LEGACY(amiga_cia_r, amiga_cia_w, 0xffffffff)
AM_RANGE(0xc00000, 0xdfffff) AM_READWRITE16_LEGACY(amiga_custom_r, amiga_custom_w, 0xffffffff) AM_SHARE("custom_regs")
AM_RANGE(0xe80000, 0xe8ffff) AM_READWRITE16_LEGACY(amiga_autoconfig_r, amiga_autoconfig_w, 0xffffffff)
AM_RANGE(0xf80000, 0xffffff) AM_ROM AM_REGION("user1", 0) /* Kickstart */
ADDRESS_MAP_END
static ADDRESS_MAP_START(keyboard_mem, AS_PROGRAM, 8, amiga_state )
AM_RANGE(0x0000, 0x003f) AM_RAM /* internal user ram */
AM_RANGE(0x0040, 0x007f) AM_NOP /* unassigned */
@ -269,10 +334,149 @@ static INPUT_PORTS_START( cdtv )
PORT_INCLUDE( amiga_common )
INPUT_PORTS_END
/***************************************************************************
Machine drivers
***************************************************************************/
static void handle_cd32_joystick_cia(ami1200_state *state, UINT8 pra, UINT8 dra);
WRITE32_MEMBER(ami1200_state::aga_overlay_w)
{
if (ACCESSING_BITS_16_23)
{
data = (data >> 16) & 1;
/* switch banks as appropriate */
membank("bank1")->set_entry(data & 1);
/* swap the write handlers between ROM and bank 1 based on the bit */
if ((data & 1) == 0)
/* overlay disabled, map RAM on 0x000000 */
space.install_write_bank(0x000000, 0x1fffff, "bank1");
else
/* overlay enabled, map Amiga system ROM on 0x000000 */
space.unmap_write(0x000000, 0x1fffff);
}
}
/*************************************
*
* CIA-A port A access:
*
* PA7 = game port 1, pin 6 (fire)
* PA6 = game port 0, pin 6 (fire)
* PA5 = /RDY (disk ready)
* PA4 = /TK0 (disk track 00)
* PA3 = /WPRO (disk write protect)
* PA2 = /CHNG (disk change)
* PA1 = /LED (LED, 0=bright / audio filter control)
* PA0 = MUTE
*
*************************************/
WRITE8_MEMBER(ami1200_state::ami1200_cia_0_porta_w)
{
device_t *device = machine().device("cia_0");
/* bit 2 = Power Led on Amiga */
set_led_status(machine(), 0, !BIT(data, 1));
handle_cd32_joystick_cia(this, data, mos6526_r(device, space, 2));
}
/*************************************
*
* CIA-A port B access:
*
* PB7 = parallel data 7
* PB6 = parallel data 6
* PB5 = parallel data 5
* PB4 = parallel data 4
* PB3 = parallel data 3
* PB2 = parallel data 2
* PB1 = parallel data 1
* PB0 = parallel data 0
*
*************************************/
//int cd32_input_port_val = 0;
//int cd32_input_select = 0;
#if 0
static void cd32_potgo_w(running_machine &machine, UINT16 data)
{
ami1200_state *state = machine.driver_data<ami1200_state>();
int i;
state->m_potgo_value = state->m_potgo_value & 0x5500;
state->m_potgo_value |= data & 0xaa00;
for (i = 0; i < 8; i += 2)
{
UINT16 dir = 0x0200 << i;
if (data & dir)
{
UINT16 d = 0x0100 << i;
state->m_potgo_value &= ~d;
state->m_potgo_value |= data & d;
}
}
for (i = 0; i < 2; i++)
{
UINT16 p5dir = 0x0200 << (i * 4); /* output enable P5 */
UINT16 p5dat = 0x0100 << (i * 4); /* data P5 */
if ((state->m_potgo_value & p5dir) && (state->m_potgo_value & p5dat))
state->m_cd32_shifter[i] = 8;
}
}
#endif
static void handle_cd32_joystick_cia(ami1200_state *state, UINT8 pra, UINT8 dra)
{
int i;
for (i = 0; i < 2; i++)
{
UINT8 but = 0x40 << i;
UINT16 p5dir = 0x0200 << (i * 4); /* output enable P5 */
UINT16 p5dat = 0x0100 << (i * 4); /* data P5 */
if (!(state->m_potgo_value & p5dir) || !(state->m_potgo_value & p5dat))
{
if ((dra & but) && (pra & but) != state->m_oldstate[i])
{
if (!(pra & but))
{
state->m_cd32_shifter[i]--;
if (state->m_cd32_shifter[i] < 0)
state->m_cd32_shifter[i] = 0;
}
}
}
state->m_oldstate[i] = pra & but;
}
}
READ8_MEMBER(ami1200_state::ami1200_cia_0_portb_r)
{
/* parallel port */
logerror("%s:CIA0_portb_r\n", machine().describe_context());
return 0xff;
}
WRITE8_MEMBER(ami1200_state::ami1200_cia_0_portb_w)
{
/* parallel port */
logerror("%s:CIA0_portb_w(%02x)\n", machine().describe_context(), data);
}
MACHINE_START_MEMBER(cdtv_state,cdtv)
{
MACHINE_START_CALL_LEGACY( amigacd );
@ -360,6 +564,39 @@ static const tpi6525_interface cdtv_tpi_intf =
DEVCB_NULL
};
READ8_MEMBER(ami1200_state::a1200_cia_0_portA_r)
{
UINT8 ret = machine().root_device().ioport("CIA0PORTA")->read() & 0xc0; /* Gameport 1 and 0 buttons */
ret |= machine().device<amiga_fdc>("fdc")->ciaapra_r();
return ret;
}
static const legacy_mos6526_interface a1200_cia_0_intf =
{
DEVCB_DEVICE_LINE("cia_0", amiga_cia_0_irq), /* irq_func */
DEVCB_NULL, /* pc_func */
DEVCB_NULL,
DEVCB_NULL,
DEVCB_DRIVER_MEMBER(ami1200_state,a1200_cia_0_portA_r),
DEVCB_DRIVER_MEMBER(ami1200_state,ami1200_cia_0_porta_w), /* port A */
DEVCB_DRIVER_MEMBER(ami1200_state,ami1200_cia_0_portb_r),
DEVCB_DRIVER_MEMBER(ami1200_state,ami1200_cia_0_portb_w) /* port B */
};
static const legacy_mos6526_interface a1200_cia_1_intf =
{
DEVCB_DEVICE_LINE("cia_1", amiga_cia_1_irq), /* irq_func */
DEVCB_NULL, /* pc_func */
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL, /* port A */
DEVCB_NULL,
DEVCB_DEVICE_MEMBER("fdc", amiga_fdc, ciaaprb_w) /* port B */
};
static SLOT_INTERFACE_START( amiga_floppies )
SLOT_INTERFACE( "35dd", FLOPPY_35_DD )
SLOT_INTERFACE_END
@ -559,6 +796,94 @@ static MACHINE_CONFIG_DERIVED( ami600n, a500n )
MACHINE_CONFIG_END
static MACHINE_CONFIG_START( a1200n, ami1200_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", M68EC020, AMIGA_68EC020_NTSC_CLOCK) /* 14.3 Mhz */
MCFG_CPU_PROGRAM_MAP(a1200_map)
MCFG_CPU_ADD("keyboard", M6502, XTAL_1MHz) /* 1 MHz? */
MCFG_CPU_PROGRAM_MAP(keyboard_mem)
MCFG_DEVICE_DISABLE()
MCFG_MACHINE_RESET_OVERRIDE(amiga_state, amiga )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(59.997)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(512*2, 312)
MCFG_SCREEN_VISIBLE_AREA((129-8-8)*2, (449+8-1+8)*2, 44-8, 300+8-1)
MCFG_SCREEN_UPDATE_DRIVER(ami1200_state, screen_update_amiga_aga)
MCFG_VIDEO_START_OVERRIDE(ami1200_state,amiga_aga)
MCFG_PALETTE_LENGTH(4096)
MCFG_PALETTE_INIT_OVERRIDE(amiga_state, amiga )
MCFG_VIDEO_START_OVERRIDE(amiga_state,amiga)
/* devices */
MCFG_MSM6242_ADD("rtc",amiga_rtc_intf)
MCFG_CENTRONICS_PRINTER_ADD("centronics", amiga_centronics_config)
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
MCFG_SOUND_ADD("amiga", AMIGA, 3579545)
MCFG_SOUND_ROUTE(0, "lspeaker", 0.50)
MCFG_SOUND_ROUTE(1, "rspeaker", 0.50)
MCFG_SOUND_ROUTE(2, "rspeaker", 0.50)
MCFG_SOUND_ROUTE(3, "lspeaker", 0.50)
/* cia */
MCFG_LEGACY_MOS8520_ADD("cia_0", AMIGA_68EC020_NTSC_CLOCK /2 / 10, 60, cia_0_ntsc_intf)
MCFG_LEGACY_MOS8520_ADD("cia_1", AMIGA_68EC020_NTSC_CLOCK /2, 0, cia_1_intf)
/* fdc */
MCFG_AMIGA_FDC_ADD("fdc", AMIGA_68EC020_NTSC_CLOCK / 2)
MCFG_FLOPPY_DRIVE_ADD("fdc:0", amiga_floppies, "35dd", 0, amiga_fdc::floppy_formats)
MCFG_FLOPPY_DRIVE_ADD("fdc:1", amiga_floppies, 0, 0, amiga_fdc::floppy_formats)
MCFG_FLOPPY_DRIVE_ADD("fdc:2", amiga_floppies, 0, 0, amiga_fdc::floppy_formats)
MCFG_FLOPPY_DRIVE_ADD("fdc:3", amiga_floppies, 0, 0, amiga_fdc::floppy_formats)
MCFG_AMIGA_KEYBOARD_ADD("kbd")
MCFG_SOFTWARE_LIST_ADD("flop_common","amiga_flop")
MCFG_SOFTWARE_LIST_ADD("flop_list","amiga1200_flop")
MCFG_SOFTWARE_LIST_ADD("flop_aga","amigaaga_flop")
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( a1200, a1200n )
/* adjust for PAL specs */
MCFG_CPU_MODIFY("maincpu")
MCFG_CPU_CLOCK(AMIGA_68EC020_PAL_CLOCK) /* 14.18758 MHz */
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_REFRESH_RATE(50)
/* sound hardware */
MCFG_SOUND_MODIFY("amiga")
MCFG_SOUND_CLOCK(AMIGA_68EC020_PAL_CLOCK/8) /* 3.546895 MHz */
/* cia */
MCFG_DEVICE_MODIFY("cia_0")
MCFG_DEVICE_CLOCK(AMIGA_68EC020_PAL_CLOCK/10/2)
MCFG_DEVICE_MODIFY("cia_1")
MCFG_DEVICE_CLOCK(AMIGA_68EC020_PAL_CLOCK/2)
/* fdc */
MCFG_DEVICE_MODIFY("fdc")
MCFG_DEVICE_CLOCK(AMIGA_68EC020_PAL_CLOCK/2)
MACHINE_CONFIG_END
/***************************************************************************
Amiga specific stuff
@ -675,35 +1000,7 @@ DRIVER_INIT_MEMBER(amiga_state,amiga)
amiga_cart_init(machine());
}
#ifdef UNUSED_FUNCTION
DRIVER_INIT_MEMBER(apollo_state,amiga_ecs)
{
static const amiga_machine_interface amiga_intf =
{
ECS_CHIP_RAM_MASK,
amiga_cia_0_portA_r, NULL, /* CIA0 port A & B read */
amiga_cia_0_portA_w, NULL, /* CIA0 port A & B write */
NULL, NULL, /* CIA1 port A & B read */
NULL, amiga_fdc_control_w, /* CIA1 port A & B write */
amiga_read_joy0dat, amiga_read_joy1dat, /* joy0dat_r & joy1dat_r */
NULL, /* potgo_w */
NULL, /* serdat_w */
NULL, /* scanline0_callback */
amiga_reset, /* reset_callback */
amiga_cart_nmi, /* nmi_callback */
0 /* flags */
};
amiga_machine_config(machine(), &amiga_intf);
/* set up memory */
1.root_device().membank(0)->configure_entries(1, m_chip_ram, 0);
1.root_device().membank(1)->configure_entries(1, machine().root_device().memregion("user1")->base(), 0);
/* initialize Action Replay (if present) */
amiga_cart_init(machine());
}
#endif
DRIVER_INIT_MEMBER(amiga_state,cdtv)
{
@ -726,6 +1023,28 @@ DRIVER_INIT_MEMBER(amiga_state,cdtv)
membank("bank1")->configure_entry(1, machine().root_device().memregion("user1")->base());
}
DRIVER_INIT_MEMBER(ami1200_state,a1200)
{
static const amiga_machine_interface cd32_intf =
{
AGA_CHIP_RAM_MASK,
amiga_read_joy0dat, amiga_read_joy1dat, /* joy0dat_r & joy1dat_r */
NULL, /* potgo_w */
NULL, /* serdat_w */
NULL, /* scanline0_callback */
NULL, /* reset_callback */
NULL, /* nmi_callback */
FLAGS_AGA_CHIPSET /* flags */
};
/* configure our Amiga setup */
amiga_machine_config(machine(), &cd32_intf);
/* set up memory */
membank("bank1")->configure_entry(0, m_chip_ram);
membank("bank1")->configure_entry(1, machine().root_device().memregion("user1")->base());
}
/***************************************************************************
ROM DEFINITIONS
@ -816,6 +1135,30 @@ ROM_END
#define rom_ami600n rom_ami600
ROM_START( ami1200 )
ROM_REGION32_BE(0x080000, "user1", 0)
ROM_DEFAULT_BIOS("kick31")
ROM_SYSTEM_BIOS(0, "kick30", "Kickstart 3.0 (39.106)")
ROMX_LOAD("391523-01.u6a", 0x000000, 0x040000, CRC(c742a412) SHA1(999eb81c65dfd07a71ee19315d99c7eb858ab186), ROM_GROUPWORD | ROM_REVERSE | ROM_SKIP(2) | ROM_BIOS(1))
ROMX_LOAD("391524-01.u6b", 0x000002, 0x040000, CRC(d55c6ec6) SHA1(3341108d3a402882b5ef9d3b242cbf3c8ab1a3e9), ROM_GROUPWORD | ROM_REVERSE | ROM_SKIP(2) | ROM_BIOS(1))
// ROMX_LOAD("kickstart v3.0 r39.106 (1992)(commodore)(a1200)[!].rom", 0x000000, 0x080000, CRC(6c9b07d2) SHA1(70033828182fffc7ed106e5373a8b89dda76faa5), ROM_BIOS(1))
ROM_SYSTEM_BIOS(1, "kick31", "Kickstart 3.1 (40.068)")
ROMX_LOAD("391773-01.u6a", 0x000000, 0x040000, CRC(08dbf275) SHA1(b8800f5f909298109ea69690b1b8523fa22ddb37), ROM_GROUPWORD | ROM_REVERSE | ROM_SKIP(2) | ROM_BIOS(2))
ROMX_LOAD("391774-01.u6b", 0x000002, 0x040000, CRC(16c07bf8) SHA1(90e331be1970b0e53f53a9b0390b51b59b3869c2), ROM_GROUPWORD | ROM_REVERSE | ROM_SKIP(2) | ROM_BIOS(2))
// COMMODORE | 391508-01 REV0 | KEYBOARD MPU
ROM_REGION(0x1040, "keyboard", 0)
ROM_LOAD("391508-01.u13", 0x0000, 0x1040, NO_DUMP)
// Amiga Tech REV1 Keyboard MPU
ROM_REGION(0x2f40, "keyboard_rev1", 0)
ROM_LOAD("391508-02.u13", 0x0000, 0x2f40, NO_DUMP)
ROM_END
#define rom_ami1200n rom_ami1200
ROM_START( cdtv )
ROM_REGION16_BE(0x100000, "user1", 0)
@ -865,9 +1208,12 @@ COMP( 1991, ami500pln, ami500pl, 0, ami500plsn, amiga, amiga_state, amiga
COMP( 1992, ami600, 0, 0, ami600, amiga, amiga_state, amiga, "Commodore Business Machines", "Amiga 600 (PAL, ECS)", GAME_NOT_WORKING | GAME_IMPERFECT_GRAPHICS )
COMP( 1992, ami600n, ami600, 0, ami600n, amiga, amiga_state, amiga, "Commodore Business Machines", "Amiga 600 (NTSC, ECS)", GAME_NOT_WORKING | GAME_IMPERFECT_GRAPHICS )
/* Amiga 1200 - see ami1200.c */
COMP( 1992, ami1200, 0, 0, a1200, amiga, ami1200_state, a1200, "Commodore Business Machines", "Amiga 1200 (PAL, AGA)" , GAME_NOT_WORKING )
COMP( 1992, ami1200n, ami1200, 0, a1200n, amiga, ami1200_state, a1200, "Commodore Business Machines", "Amiga 1200 (NTSC, AGA)" , GAME_NOT_WORKING )
COMP( 1991, cdtv, 0, 0, cdtv, cdtv, amiga_state, cdtv, "Commodore Business Machines", "CDTV (NTSC)", GAME_NOT_WORKING | GAME_IMPERFECT_GRAPHICS )
/* CD32 - see cd32.c */

View File

@ -154,6 +154,8 @@ static GFXDECODE_START( pentagon )
GFXDECODE_ENTRY( "maincpu", 0x17d00, spectrum_charlayout, 0, 8 )
GFXDECODE_END
static MACHINE_CONFIG_DERIVED_CLASS( pentagon, spectrum_128, pentagon_state )
MCFG_CPU_MODIFY("maincpu")
MCFG_CPU_IO_MAP(pentagon_io)
@ -161,6 +163,8 @@ static MACHINE_CONFIG_DERIVED_CLASS( pentagon, spectrum_128, pentagon_state )
MCFG_BETA_DISK_ADD(BETA_DISK_TAG)
MCFG_GFXDECODE(pentagon)
MCFG_SOFTWARE_LIST_ADD("cass_list_pen","pentagon_cass")
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( pent1024, pentagon)

View File

@ -654,11 +654,12 @@ ami500pl // Commodore Amiga 500+
ami500pln //
ami600 // Commodore Amiga 600
ami600n //
ami1200 // Commodore Amiga 1200
ami1200n //
cdtv // Commodore CDTV
a3000 // Commodore Amiga 3000
a1200n // Commodore Amiga 1200 - NTSC
a1200p // Commodore Amiga 1200 - PAL
cd32 // Commodore Amiga CD32
c65 // 1991 C65 / C64DX (Prototype, NTSC)

View File

@ -613,7 +613,6 @@ $(MESSOBJ)/amiga.a: \
$(MESS_MACHINE)/amigakbd.o \
$(MESS_DRIVERS)/amiga.o \
$(MESS_DRIVERS)/a3000.o \
$(MESS_DRIVERS)/ami1200.o \
$(MESSOBJ)/amstrad.a: \
$(MESS_DRIVERS)/amstrad.o \