diff --git a/src/mame/drivers/arcadia.c b/src/mame/drivers/arcadia.c index 11cadcc95a6..8408eeea53c 100644 --- a/src/mame/drivers/arcadia.c +++ b/src/mame/drivers/arcadia.c @@ -218,7 +218,7 @@ static ADDRESS_MAP_START( amiga_map, AS_PROGRAM, 16, arcadia_amiga_state ) AM_RANGE(0xc00000, 0xdfffff) AM_READWRITE(amiga_custom_r, amiga_custom_w) AM_SHARE("custom_regs") AM_RANGE(0xe80000, 0xe8ffff) AM_READWRITE(amiga_autoconfig_r, amiga_autoconfig_w) AM_RANGE(0xf80000, 0xffffff) AM_ROM AM_REGION("user1", 0) /* Kickstart BIOS */ - + AM_RANGE(0x800000, 0x97ffff) AM_ROMBANK("bank2") AM_REGION("user3", 0) AM_RANGE(0x980000, 0x9fbfff) AM_ROM AM_REGION("user2", 0) AM_RANGE(0x9fc000, 0x9ffffd) AM_RAM AM_SHARE("nvram") @@ -226,7 +226,19 @@ static ADDRESS_MAP_START( amiga_map, AS_PROGRAM, 16, arcadia_amiga_state ) AM_RANGE(0xf00000, 0xf7ffff) AM_ROM AM_REGION("user2", 0) ADDRESS_MAP_END +static ADDRESS_MAP_START( argh_map, AS_PROGRAM, 16, arcadia_amiga_state ) + ADDRESS_MAP_UNMAP_HIGH + AM_RANGE(0x000000, 0x07ffff) AM_RAMBANK("bank1") AM_SHARE("chip_ram") + AM_RANGE(0xbfd000, 0xbfefff) AM_READWRITE(amiga_cia_r, amiga_cia_w) + AM_RANGE(0xc00000, 0xdfffff) AM_READWRITE(amiga_custom_r, amiga_custom_w) AM_SHARE("custom_regs") + AM_RANGE(0xe80000, 0xe8ffff) AM_READWRITE(amiga_autoconfig_r, amiga_autoconfig_w) + AM_RANGE(0xf80000, 0xffffff) AM_ROM AM_REGION("user1", 0) /* Kickstart BIOS */ + AM_RANGE(0x800000, 0x97ffff) AM_ROMBANK("bank2") AM_REGION("user3", 0) +// AM_RANGE(0x980000, 0x9fefff) AM_ROM AM_REGION("user3", 0) + AM_RANGE(0x9ff000, 0x9fffff) AM_RAM AM_SHARE("nvram") + AM_RANGE(0xf00000, 0xf7ffff) AM_ROM AM_REGION("user3", 0) +ADDRESS_MAP_END /************************************* * @@ -356,6 +368,12 @@ static MACHINE_CONFIG_START( arcadia, arcadia_amiga_state ) MCFG_AMIGA_FDC_ADD("fdc", AMIGA_68000_NTSC_CLOCK) MACHINE_CONFIG_END +static MACHINE_CONFIG_DERIVED( argh, arcadia ) + + /* basic machine hardware */ + MCFG_CPU_MODIFY("maincpu") + MCFG_CPU_PROGRAM_MAP(argh_map) +MACHINE_CONFIG_END /************************************* @@ -864,14 +882,11 @@ ROM_START( ar_dlta ) ROM_END -ROM_START( ar_argh ) +ROM_START( ar_argh ) // this plugs directly into the a500 motherboard, no arcadia bios, just the a500 kickstart and game ROMs ROM_REGION16_BE(0x80000, "user1", 0 ) ROM_LOAD16_WORD( "kick12.rom", 0x000000, 0x040000, CRC(a6ce1636) SHA1(11f9e62cf299f72184835b7b2a70a16333fc0d88) ) ROM_COPY( "user1", 0x000000, 0x040000, 0x040000 ) - // this plugs directly into the a500 motherboard, no arcadia bios, just the a500 kickstart and game ROMs - ROM_REGION16_BE( 0x80000, "user2", ROMREGION_ERASEFF ) - ROM_REGION16_BE( 0x180000, "user3", ROMREGION_ERASEFF ) ROM_LOAD16_BYTE( "argh-1-hi-11-28-87.u12", 0x000000, 0x10000, CRC(3b1f8075) SHA1(61aeff9f6a2dff6efe4276cb0bcbb80b495e26b6) ) ROM_LOAD16_BYTE( "argh-1-lo-11-28-87.u16", 0x000001, 0x10000, CRC(78b77071) SHA1(5848e30cfd08f9241f8ff9267fdcf2c87c72cdb0) ) @@ -964,8 +979,10 @@ void arcadia_amiga_state::arcadia_init() /* OnePlay bios is encrypted, TenPlay is not */ biosrom = (UINT16 *)memregion("user2")->base(); - if (biosrom[0] != 0x4afc) - generic_decode("user2", 6, 1, 0, 2, 3, 4, 5, 7); + + if (biosrom) + if (biosrom[0] != 0x4afc) + generic_decode("user2", 6, 1, 0, 2, 3, 4, 5, 7); } @@ -990,7 +1007,7 @@ DRIVER_INIT_MEMBER(arcadia_amiga_state,sprg) { arcadia_init(); generic_decode("u DRIVER_INIT_MEMBER(arcadia_amiga_state,xeon) { arcadia_init(); generic_decode("user3", 3, 1, 2, 4, 0, 5, 6, 7); } DRIVER_INIT_MEMBER(arcadia_amiga_state,pm) { arcadia_init(); generic_decode("user3", 7, 6, 5, 4, 3, 2, 1, 0); } // no scramble DRIVER_INIT_MEMBER(arcadia_amiga_state,dlta) { arcadia_init(); generic_decode("user3", 4, 1, 7, 6, 2, 0, 3, 5); } -DRIVER_INIT_MEMBER(arcadia_amiga_state,argh) { arcadia_init(); generic_decode("user3", 5, 0, 2, 4, 7, 6, 1, 3); memcpy(memregion("user2")->base(), memregion("user3")->base(), 0x80000); } +DRIVER_INIT_MEMBER(arcadia_amiga_state,argh) { arcadia_init(); generic_decode("user3", 5, 0, 2, 4, 7, 6, 1, 3); } /************************************* @@ -1039,4 +1056,4 @@ GAME( 1988, ar_pm, ar_bios, arcadia, arcadia, arcadia_amiga_state, pm, ROT GAME( 1988, ar_dlta, ar_bios, arcadia, arcadia, arcadia_amiga_state, dlta, ROT0, "Arcadia Systems", "Delta Command (Arcadia)", 0 ) -GAME( 1988, ar_argh, ar_bios, arcadia, arcadia, arcadia_amiga_state, argh, ROT0, "Arcadia Systems", "Aaargh (Arcadia)", 0 ) +GAME( 1988, ar_argh, ar_bios, argh, arcadia, arcadia_amiga_state, argh, ROT0, "Arcadia Systems", "Aaargh (Arcadia)", 0 )