diff --git a/src/mame/drivers/exerion.cpp b/src/mame/drivers/exerion.cpp index 357521ca285..28640198681 100644 --- a/src/mame/drivers/exerion.cpp +++ b/src/mame/drivers/exerion.cpp @@ -404,6 +404,11 @@ MACHINE_CONFIG_START(exerion_state::exerion) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) MACHINE_CONFIG_END +MACHINE_CONFIG_START(exerion_state::irion) + exerion(config); + MCFG_DEVICE_REMOVE("sub") +MACHINE_CONFIG_END + /************************************* @@ -502,6 +507,29 @@ ROM_START( exerionb ) ROM_LOAD( "exerion.k4", 0x0320, 0x0100, CRC(ffc2ba43) SHA1(03be1c41d6ac3fc11439caef04ef5ffa60d6aec4) ) /* bg char mixer */ ROM_END +ROM_START( irion ) + ROM_REGION( 0x6000, "maincpu", 0 ) + ROM_LOAD( "2.bin", 0x0000, 0x2000, CRC(bf55324e) SHA1(a310e953cc80d09111ba104f21461420ae3abcd5) ) + ROM_LOAD( "3.bin", 0x2000, 0x2000, CRC(0625bb49) SHA1(111edb1da2153c853d89e56a89ef813cee559730) ) + ROM_LOAD( "4.bin", 0x4000, 0x2000, CRC(918a9b1d) SHA1(e515f1b9c5ddda8115e68e8a499b252b09774bb6) ) + + ROM_REGION( 0x02000, "gfx1", 0 ) + ROM_LOAD( "1.bin", 0x0000, 0x2000, CRC(56cd5ebf) SHA1(58d84c2dc3b3bac7371da5b9a230fa581ead31dc) ) + + ROM_REGION( 0x04000, "gfx2", 0 ) + ROM_LOAD( "5.bin", 0x0000, 0x2000, CRC(80312de0) SHA1(4fa3bb9d5c62e41a54e8909f8d3b47637137e913) ) + ROM_LOAD( "6.bin", 0x2000, 0x2000, CRC(f0633a09) SHA1(8989bcb12abadde34777f7c189cfa6e2dfe92d62) ) + + ROM_REGION( 0x08000, "gfx3", ROMREGION_ERASE00 ) + + ROM_REGION( 0x0420, "proms", 0 ) // these are assumed to be on the board - the game won't run without them + ROM_LOAD( "exerion.e1", 0x0000, 0x0020, CRC(2befcc20) SHA1(a24d3f691413378fde545a6ddcef7e5118e74019) ) /* palette */ + ROM_LOAD( "exerion.i8", 0x0020, 0x0100, CRC(31db0e08) SHA1(1041a778e86d3fe6f057cf40a0a08b30760f3887) ) /* fg char lookup table */ + ROM_LOAD( "exerion.h10", 0x0120, 0x0100, CRC(63b4c555) SHA1(30243041be4fa77ada71e8b29d721cad51640c29) ) /* sprite lookup table */ + ROM_LOAD( "exerion.i3", 0x0220, 0x0100, CRC(fe72ab79) SHA1(048a72e6db4768df687df927acaa70ef906b3dc0) ) /* bg char lookup table */ + ROM_LOAD( "exerion.k4", 0x0320, 0x0100, CRC(ffc2ba43) SHA1(03be1c41d6ac3fc11439caef04ef5ffa60d6aec4) ) /* bg char mixer */ +ROM_END + /************************************* * @@ -569,6 +597,26 @@ DRIVER_INIT_MEMBER(exerion_state,exerionb) DRIVER_INIT_CALL(exerion); } +DRIVER_INIT_MEMBER(exerion_state, irion) +{ + // convert the gfx and cpu roms like in ExerionB + DRIVER_INIT_CALL(exerionb); + + // a further unscramble of gfx2 + uint8_t *ram = memregion("gfx2")->base(); + u16 i,j; + u8 k; + for (i = 0; i < 0x4000; i += 0x400) + { + for (j = 0; j < 0x200; j++) + { + k = ram[i+j]; + ram[i+j] = ram[i+j+0x200]; + ram[i+j+0x200] = k; + } + } +} + /************************************* @@ -580,3 +628,4 @@ DRIVER_INIT_MEMBER(exerion_state,exerionb) GAME( 1983, exerion, 0, exerion, exerion, exerion_state, exerion, ROT90, "Jaleco", "Exerion", MACHINE_SUPPORTS_SAVE ) GAME( 1983, exeriont, exerion, exerion, exerion, exerion_state, exerion, ROT90, "Jaleco (Taito America license)", "Exerion (Taito)", MACHINE_SUPPORTS_SAVE ) GAME( 1983, exerionb, exerion, exerion, exerion, exerion_state, exerionb, ROT90, "bootleg", "Exerion (bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, irion, exerion, irion, exerion, exerion_state, irion, ROT90, "bootleg", "Irion", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/includes/exerion.h b/src/mame/includes/exerion.h index 9880f46ccee..b4c81ba6e5f 100644 --- a/src/mame/includes/exerion.h +++ b/src/mame/includes/exerion.h @@ -68,6 +68,7 @@ public: DECLARE_WRITE8_MEMBER(exerion_portb_w); DECLARE_DRIVER_INIT(exerion); DECLARE_DRIVER_INIT(exerionb); + DECLARE_DRIVER_INIT(irion); virtual void machine_start() override; virtual void machine_reset() override; virtual void video_start() override; @@ -75,6 +76,7 @@ public: uint32_t screen_update_exerion(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); void draw_background( bitmap_ind16 &bitmap, const rectangle &cliprect); void exerion(machine_config &config); + void irion(machine_config &config); void main_map(address_map &map); void sub_map(address_map &map); }; diff --git a/src/mame/mame.lst b/src/mame/mame.lst index be55d882a59..1e41c6ba176 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -12410,6 +12410,7 @@ exl100 // exerion // (c) 1983 Jaleco exerionb // bootleg exeriont // (c) 1983 Jaleco + Taito America license +irion // @source:exidy.cpp fax // (c) 1983