diff --git a/.gitattributes b/.gitattributes index 63cd1402af3..056451ab1a0 100644 --- a/.gitattributes +++ b/.gitattributes @@ -4,6 +4,7 @@ docs/license.txt svneol=native#text/plain docs/mame.txt svneol=native#text/plain docs/newvideo.txt svneol=native#text/plain docs/windows.txt svneol=native#text/plain +hash/megatech.xml svneol=native#text/plain /makefile svneol=native#text/plain src/build/build.mak svneol=native#text/plain src/build/file2str.c svneol=native#text/plain diff --git a/hash/megatech.xml b/hash/megatech.xml new file mode 100644 index 00000000000..614721bfe8f --- /dev/null +++ b/hash/megatech.xml @@ -0,0 +1,114 @@ + + + + + + + + + + + Altered Beast + 199? + Sega + + + + + + + + + + + + Space Harrier 2 + 199? + Sega + + + + + + + + + + + + + Super Thunder Blade + 199? + Sega + + + + + + + + + + + + Great Golf + 199? + Sega + + + + + + + + + + + + Out Run + 199? + Sega + + + + + + + + + + + + Golden Axe + 199? + Sega + + + + + + + + + + + + Sonic the Hedgehog 2 + 199? + Sega + + + + + + + + + diff --git a/src/mame/drivers/megatech.c b/src/mame/drivers/megatech.c index 34efb95e051..d3037600c6e 100644 --- a/src/mame/drivers/megatech.c +++ b/src/mame/drivers/megatech.c @@ -1,32 +1,12 @@ -/* Sega MegaTech */ -/* - - changelog: - - 22 Sept 2007 - Started updating this to use the new Megadrive code, - The Megadrive games currently run with the new code - but the SMS based games still aren't hooked up (they - use the Megadrive Z80 as the main CPU, and the VDP - in compatibility mode) - - Controls for the menu haven't been hooked back up - and the games run without any menu interaction at the - moment. - - - - -todo: cleanup, fix so that everything works properly - games are marked as NOT WORKING due to - a) incorrect behavior at time out - b) they're sms based games which aren't yet fully supported - +/* Sega MegaTech About MegaTech: Megatech games are identical to their Genesis/SMS equivlents, however the Megatech cartridges contain a BIOS rom with the game instructions. The last part number of the bios ROM is the cart/game ID code. +The instruction rom appears to map at 0x300000 in the cart space. + In Megatech games your coins buy you time to play the game, how you perform in the game does not matter, you can die and start a new game providing you still have time, likewise you can be playing well and run out of time if you fail to insert more coins. This is the same method Nintendo used @@ -36,13 +16,12 @@ The BIOS screen is based around SMS hardware, with an additional Z80 and SMS VDP a standard Genesis. SMS games run on Megatech in the Genesis's SMS compatability mode, where the Genesis Z80 becomes the -main CPU and the Genesis VDP acts in a mode mimicing the behavior of the SMS VDP. +main CPU and the Genesis VDP acts in a mode mimicing the behavior of the SMS VDP. A pin on the carts +determines which mode the game runs in. Additions will only be made to this driver if proof that the dumped set are original roms with original Sega part numbers is given.. -A fairly significant number of Genesis games were available for this system. - Sega Mega Tech Cartridges (Readme by Guru) ------------------------- @@ -95,6 +74,7 @@ Sonic Hedgehog 2 171-6215A 837-6963-62 610-0239-62 MPR #include "includes/segamsys.h" #include "includes/megadriv.h" +#include "imagedev/cartslot.h" static struct _mtech_bios mtech_bios; @@ -231,106 +211,85 @@ static INPUT_PORTS_START( megatech ) /* Genesis Input Ports */ INPUT_PORTS_END /* MEGATECH specific */ - -static READ8_HANDLER( megatech_instr_r ) -{ - UINT8* instr = space->machine->region("mtbios")->base() + 0x8000; - - return instr[offset / 2]; -// else -// return 0xff; -} - static READ8_HANDLER( megatech_cart_select_r ) { return mtech_bios.mt_cart_select_reg; } -#ifdef UNUSED_FUNCTION -READ8_HANDLER( md_sms_ioport_dc_r ) + + + +static TIMER_CALLBACK( megatech_z80_run_state ) { - return 0xff; + char tempname[20]; + UINT8* game_region; + + sprintf(tempname, "game%d", param); + game_region = machine->region(tempname)->base(); + + memcpy(machine->region("maincpu")->base(), game_region, 0x400000); + + if (game_region[0x400000]==2) + { + printf("enabling SMS Z80\n"); + mtech_bios.current_game_is_sms = 1; + megatech_set_genz80_as_sms_standard_map(machine, "genesis_snd_z80", MAPPER_STANDARD); + //cputag_set_input_line(machine, "genesis_snd_z80", INPUT_LINE_HALT, CLEAR_LINE); + cputag_set_input_line(machine, "genesis_snd_z80", INPUT_LINE_RESET, CLEAR_LINE); + } + else if (game_region[0x400000]==1) + { + mtech_bios.current_game_is_sms = 0; + printf("disabling SMS Z80\n"); + megatech_set_megadrive_z80_as_megadrive_z80(machine, "genesis_snd_z80"); + cputag_set_input_line(machine, "maincpu", INPUT_LINE_RESET, CLEAR_LINE); + //cputag_set_input_line(machine, "maincpu", INPUT_LINE_HALT, CLEAR_LINE); + } } -READ8_HANDLER( md_sms_ioport_dd_r ) -{ - return 0xff; -} -#endif - - - - -static void megatech_select_game(running_machine *machine, int gameno) +static TIMER_CALLBACK( megatech_z80_stop_state ) { UINT8* game_region; - UINT8* bios_region; char tempname[20]; - //printf("game 0 selected\n"); + printf("megatech_select_game %d\n", param+1); + + sprintf(tempname, "game%d", param); + game_region = machine->region(tempname)->base(); cputag_set_input_line(machine, "maincpu", INPUT_LINE_RESET, ASSERT_LINE); cputag_set_input_line(machine, "genesis_snd_z80", INPUT_LINE_RESET, ASSERT_LINE); - cputag_set_input_line(machine, "maincpu", INPUT_LINE_HALT, ASSERT_LINE); - cputag_set_input_line(machine, "genesis_snd_z80", INPUT_LINE_HALT, ASSERT_LINE); + //cputag_set_input_line(machine, "maincpu", INPUT_LINE_HALT, ASSERT_LINE); + //cputag_set_input_line(machine, "genesis_snd_z80", INPUT_LINE_HALT, ASSERT_LINE); devtag_reset(machine, "ymsnd"); - sprintf(tempname, "game%d", gameno); - game_region = machine->region(tempname)->base(); - sprintf(tempname, "inst%d", gameno); - bios_region = machine->region(tempname)->base(); megadriv_stop_scanline_timer();// stop the scanline timer for the genesis vdp... it can be restarted in video eof when needed segae_md_sms_stop_scanline_timer();// stop the scanline timer for the sms vdp /* if the regions exist we're fine */ - if (game_region && bios_region) + if (game_region) { - memcpy(machine->region("mtbios")->base()+0x8000, bios_region, 0x8000); - memcpy(machine->region("maincpu")->base(), game_region, 0x300000); - - // I store an extra byte at the end of the instruction rom region when loading - // to indicate if the current cart is an SMS cart.. the original hardware - // knows from the cart pinout - if (bios_region[0x8000]==2) { - //printf("SMS cart!!, CPU not running\n"); - mtech_bios.current_game_is_sms = 1; - megatech_set_genz80_as_sms_standard_map(machine, "genesis_snd_z80", MAPPER_STANDARD); - cputag_set_input_line(machine, "genesis_snd_z80", INPUT_LINE_HALT, CLEAR_LINE); - cputag_set_input_line(machine, "genesis_snd_z80", INPUT_LINE_RESET, CLEAR_LINE); - - - } - else if (bios_region[0x8000]==1) - { - //printf("Genesis Cart, CPU0 running\n"); - mtech_bios.current_game_is_sms = 0; - megatech_set_megadrive_z80_as_megadrive_z80(machine, "genesis_snd_z80"); - cputag_set_input_line(machine, "maincpu", INPUT_LINE_RESET, CLEAR_LINE); - cputag_set_input_line(machine, "maincpu", INPUT_LINE_HALT, CLEAR_LINE); - } - else - { - printf("Error in cart loading??? no type specified\n"); + timer_set( machine, attotime_zero, NULL, param, megatech_z80_run_state ); } } else { - cputag_set_input_line(machine, "maincpu", INPUT_LINE_HALT, ASSERT_LINE); - cputag_set_input_line(machine, "genesis_snd_z80", INPUT_LINE_HALT, ASSERT_LINE); - // cputag_set_input_line(machine, "maincpu", INPUT_LINE_RESET, ASSERT_LINE); - // cputag_set_input_line(machine, "genesis_snd_z80", INPUT_LINE_RESET, ASSERT_LINE); - /* no cart.. */ memset(machine->region("mtbios")->base() + 0x8000, 0x00, 0x8000); - memset(machine->region("maincpu")->base(), 0x00, 0x300000); + memset(machine->region("maincpu")->base(), 0x00, 0x400000); } return; } +static void megatech_select_game(running_machine *machine, int gameno) +{ + timer_set( machine, attotime_zero, NULL, gameno, megatech_z80_stop_state ); +} + static WRITE8_HANDLER( megatech_cart_select_w ) { /* seems to write the slot number.. @@ -338,35 +297,10 @@ static WRITE8_HANDLER( megatech_cart_select_w ) because it always seems to show the same instructions ... */ -// printf("megatech_instr_w %02x\n",data); - mtech_bios.mt_cart_select_reg = data; megatech_select_game(space->machine, mtech_bios.mt_cart_select_reg); - -/* - if (mtech_bios.mtech_bios.mt_cart_select_reg == 2) - { - printf("game 2 selected\n"); - memcpy(space->machine->region("mtbios")->base() + 0x8000, space->machine->region("inst0")->base(), 0x8000); - } -// else if (mtech_bios.mt_cart_select_reg == 0) -// { -// printf("game 0 selected\n"); -// memcpy(space->machine->region("mtbios")->base() + 0x8000, space->machine->region("inst2")->base(), 0x8000); -// } - else if (mtech_bios.mt_cart_select_reg == 6) - { - printf("game 6 selected\n"); - memcpy(space->machine->region("mtbios")->base() + 0x8000, space->machine->region("user6")->base(), 0x8000); - } - else - { - memset(space->machine->region("mtbios" )->base()+ 0x8000, 0x00, 0x8000); - } -*/ - } @@ -390,26 +324,31 @@ static WRITE8_HANDLER( bios_ctrl_w ) mtech_bios.bios_ctrl[offset] = data; } - /* this sets 0x300000 which may indicate that the 68k can see the instruction rom there, this limiting the max game rom capacity to 3meg. */ + +static READ8_HANDLER( megatech_z80_read_68k_banked_data ) +{ + address_space *space68k = space->machine->device("maincpu")->space(); + UINT8 ret = space68k->read_byte(mtech_bios.mt_bank_addr+offset); + return ret; +} + +static WRITE8_HANDLER( megatech_z80_write_68k_banked_data ) +{ + address_space *space68k = space->machine->device("maincpu")->space(); + space68k->write_byte(mtech_bios.mt_bank_addr+offset,data); +} + + +static void megatech_z80_bank_w(UINT16 data) +{ + mtech_bios.mt_bank_addr = ( ( mtech_bios.mt_bank_addr >> 1 ) | ( data << 23 ) ) & 0xff8000; +} + static WRITE8_HANDLER (mt_z80_bank_w) { - mtech_bios.mt_bank_partial |= (data & 0x01) << 23; // add new bit to partial address - mtech_bios.mt_bank_bank_pos++; - - if (mtech_bios.mt_bank_bank_pos < 9) - { - mtech_bios.mt_bank_partial >>= 1; - } - else - { - mtech_bios.mt_bank_bank_pos = 0; - mtech_bios.mt_bank_addr = mtech_bios.mt_bank_partial; - mtech_bios.mt_bank_partial = 0; - //printf("MT z80 bank set to %08x\n", mtech_bios.mt_bank_addr); - - } + megatech_z80_bank_w(data&1); } static READ8_HANDLER( megatech_banked_ram_r ) @@ -438,7 +377,7 @@ static ADDRESS_MAP_START( megatech_bios_map, ADDRESS_SPACE_PROGRAM, 8 ) // AM_RANGE(0x6805, 0x6805) AM_READ_PORT("???") AM_RANGE(0x7000, 0x77ff) AM_ROM // from bios rom (0x7000-0x77ff populated in ROM) //AM_RANGE(0x7800, 0x7fff) AM_RAM // ? - AM_RANGE(0x8000, 0x9fff) AM_READ(megatech_instr_r) // window into 68k address space, reads instr rom and writes to reset banks on z80 carts? + AM_RANGE(0x8000, 0x9fff) AM_READWRITE(megatech_z80_read_68k_banked_data, megatech_z80_write_68k_banked_data) // window into 68k address space, reads instr rom and writes to reset banks on z80 carts? ADDRESS_MAP_END @@ -511,8 +450,6 @@ static VIDEO_EOF(mtnew) static MACHINE_RESET(mtnew) { - mtech_bios.mt_bank_bank_pos = 0; - mtech_bios.mt_bank_partial = 0; mtech_bios.mt_bank_addr = 0; MACHINE_RESET_CALL(megadriv); @@ -551,18 +488,113 @@ static MACHINE_CONFIG_DERIVED( megatech, megadriv ) MACHINE_CONFIG_END -/* MegaTech Games - Genesis & sms! Games with a timer */ +static int megatech_load_list(device_image_interface &image, int gameno) +{ + const char *pcb_name; -/* 12368-xx xx is the game number? if so there are a _lot_ of carts, mt_beast is 01, mt_sonic is 52! */ + if (image.software_entry() == NULL) + return IMAGE_INIT_FAIL; + + char tempname[20]; + sprintf(tempname, "game%d", gameno-1); + + printf("load list\n"); + UINT8 *ROM = image.device().machine->region(tempname)->base(); + printf("load list2\n"); + UINT32 length = image.get_software_region_length("rom"); + memcpy(ROM, image.get_software_region("rom"), length); + + + if ((pcb_name = image.get_feature("pcb_type")) == NULL) + return IMAGE_INIT_FAIL; + else + { + if (!mame_stricmp("genesis", pcb_name)) + { + printf("cart %d is genesis\n", gameno); + ROM[0x400000] = 0x01; + } + else if (!mame_stricmp("sms", pcb_name)) + { + printf("cart %d is sms\n", gameno); + ROM[0x400000] = 0x02; + } + else + { + printf("cart %d is invalid\n", gameno); + } + + } + + return IMAGE_INIT_PASS; +} + + +static DEVICE_IMAGE_LOAD( megatech_cart1 ) { return megatech_load_list(image, 1); } +static DEVICE_IMAGE_LOAD( megatech_cart2 ) { return megatech_load_list(image, 2); } +static DEVICE_IMAGE_LOAD( megatech_cart3 ) { return megatech_load_list(image, 3); } +static DEVICE_IMAGE_LOAD( megatech_cart4 ) { return megatech_load_list(image, 4); } +static DEVICE_IMAGE_LOAD( megatech_cart5 ) { return megatech_load_list(image, 5); } +static DEVICE_IMAGE_LOAD( megatech_cart6 ) { return megatech_load_list(image, 6); } +static DEVICE_IMAGE_LOAD( megatech_cart7 ) { return megatech_load_list(image, 7); } +static DEVICE_IMAGE_LOAD( megatech_cart8 ) { return megatech_load_list(image, 8); } + + + +MACHINE_CONFIG_FRAGMENT( megatech_cartslot ) + MCFG_CARTSLOT_ADD("cart1") + MCFG_CARTSLOT_INTERFACE("megatech_cart") + MCFG_CARTSLOT_LOAD(megatech_cart1) + + MCFG_CARTSLOT_ADD("cart2") + MCFG_CARTSLOT_INTERFACE("megatech_cart") + MCFG_CARTSLOT_LOAD(megatech_cart2) + + MCFG_CARTSLOT_ADD("cart3") + MCFG_CARTSLOT_INTERFACE("megatech_cart") + MCFG_CARTSLOT_LOAD(megatech_cart3) + + MCFG_CARTSLOT_ADD("cart4") + MCFG_CARTSLOT_INTERFACE("megatech_cart") + MCFG_CARTSLOT_LOAD(megatech_cart4) + + MCFG_CARTSLOT_ADD("cart5") + MCFG_CARTSLOT_INTERFACE("megatech_cart") + MCFG_CARTSLOT_LOAD(megatech_cart5) + + MCFG_CARTSLOT_ADD("cart6") + MCFG_CARTSLOT_INTERFACE("megatech_cart") + MCFG_CARTSLOT_LOAD(megatech_cart6) + + MCFG_CARTSLOT_ADD("cart7") + MCFG_CARTSLOT_INTERFACE("megatech_cart") + MCFG_CARTSLOT_LOAD(megatech_cart7) + + MCFG_CARTSLOT_ADD("cart8") + MCFG_CARTSLOT_INTERFACE("megatech_cart") + MCFG_CARTSLOT_LOAD(megatech_cart8) + + + MCFG_SOFTWARE_LIST_ADD("cart_list","megatech") + +MACHINE_CONFIG_END + + +static MACHINE_CONFIG_DERIVED( megatech_slot, megatech ) + MCFG_FRAGMENT_ADD( megatech_cartslot ) +MACHINE_CONFIG_END + + +/* MegaTech Games - Genesis & sms! Games with a timer */ /* add a single extra byte after the instruction rom as an indicator to if the cart is SMS or GENESIS, the real hardware knows from the pinout */ #define MEGATECH_GAME_IS_GEN 1 #define MEGATECH_GAME_IS_SMS 2 -#define MEGATECH_INSTRUCTION_REGION(INSTRUCTION_REGION,FLAG)\ - ROM_REGION( 0x8002, INSTRUCTION_REGION, 0 ) \ - ROM_FILL(0x8000, 2, FLAG) \ +#define MEGATECH_GAME_REGION(GAME_REGION,FLAG) \ + ROM_REGION16_BE( 0x400002, GAME_REGION, 0 ) \ + ROM_FILL(0x400000, 2, FLAG) \ #define MEGATECH_BIOS \ ROM_REGION( 0x400000, "maincpu", ROMREGION_ERASEFF ) \ @@ -572,490 +604,463 @@ MACHINE_CONFIG_END /* no games */ ROM_START( megatech ) MEGATECH_BIOS + + // empty memory areas, to copy data into + MEGATECH_GAME_REGION("game0",MEGATECH_GAME_IS_GEN) \ + MEGATECH_GAME_REGION("game1",MEGATECH_GAME_IS_GEN) \ + MEGATECH_GAME_REGION("game2",MEGATECH_GAME_IS_GEN) \ + MEGATECH_GAME_REGION("game3",MEGATECH_GAME_IS_GEN) \ + MEGATECH_GAME_REGION("game4",MEGATECH_GAME_IS_GEN) \ + MEGATECH_GAME_REGION("game5",MEGATECH_GAME_IS_GEN) \ + MEGATECH_GAME_REGION("game6",MEGATECH_GAME_IS_GEN) \ + MEGATECH_GAME_REGION("game7",MEGATECH_GAME_IS_GEN) \ + + ROM_END /* Game 01 - Altered Beast (Genesis) */ -#define MEGATECH_GAME01(GAME_REGION, INSTRUCTION_REGION) \ - ROM_REGION16_BE( 0x300000, GAME_REGION, 0 ) \ +#define MEGATECH_GAME01(GAME_REGION) \ + MEGATECH_GAME_REGION(GAME_REGION,MEGATECH_GAME_IS_GEN) \ ROM_LOAD16_WORD_SWAP( "mp12538.ic1", 0x000000, 0x080000, CRC(3bea3dce) SHA1(ec72e4fde191dedeb3f148f132603ed3c23f0f86) ) \ - MEGATECH_INSTRUCTION_REGION( INSTRUCTION_REGION, MEGATECH_GAME_IS_GEN ) \ - ROM_LOAD( "epr-12368-01.ic2", 0x000000, 0x08000, CRC(40cb0088) SHA1(e1711532c29f395a35a1cb34d789015881b5a1ed) ) \ + ROM_LOAD16_BYTE( "epr-12368-01.ic2", 0x300001, 0x08000, CRC(40cb0088) SHA1(e1711532c29f395a35a1cb34d789015881b5a1ed) ) \ ROM_START( mt_beast ) /* Altered Beast */ MEGATECH_BIOS - MEGATECH_GAME01("game0", "inst0") + MEGATECH_GAME01("game0") ROM_END /* Game 02 - Space Harrier 2 */ -#define MEGATECH_GAME02(GAME_REGION, INSTRUCTION_REGION) \ - ROM_REGION16_BE( 0x300000, GAME_REGION, 0 ) \ +#define MEGATECH_GAME02(GAME_REGION) \ + MEGATECH_GAME_REGION(GAME_REGION,MEGATECH_GAME_IS_GEN) \ ROM_LOAD16_WORD_SWAP( "mp11934.ic1", 0x000000, 0x080000, CRC(932daa09) SHA1(a2d7a76f3604c6227d43229908bfbd02b0ef5fd9) ) \ - MEGATECH_INSTRUCTION_REGION( INSTRUCTION_REGION, MEGATECH_GAME_IS_GEN ) \ - ROM_LOAD( "epr-12368-02.ic2", 0x000000, 0x08000, CRC(c129c66c) SHA1(e7c0c97db9df9eb04e2f9ff561b64305219b8f1f) ) \ + ROM_LOAD16_BYTE( "epr-12368-02.ic2", 0x300001, 0x08000, CRC(c129c66c) SHA1(e7c0c97db9df9eb04e2f9ff561b64305219b8f1f) ) \ ROM_START( mt_shar2 ) /* Space Harrier 2 */ MEGATECH_BIOS - MEGATECH_GAME02("game0", "inst0") + MEGATECH_GAME02("game0") ROM_END /* Game 03 - Super Thunder Blade */ -#define MEGATECH_GAME03(GAME_REGION, INSTRUCTION_REGION) \ - ROM_REGION16_BE( 0x300000, GAME_REGION, 0 ) \ +#define MEGATECH_GAME03(GAME_REGION) \ + MEGATECH_GAME_REGION(GAME_REGION,MEGATECH_GAME_IS_GEN) \ ROM_LOAD16_WORD_SWAP( "mp11996f.ic1", 0x000000, 0x080000, CRC(9355c34e) SHA1(26ff91c2921408673c644b0b1c8931d98524bf63) ) \ - MEGATECH_INSTRUCTION_REGION( INSTRUCTION_REGION, MEGATECH_GAME_IS_GEN ) \ - ROM_LOAD( "epr-12368-03.ic2", 0x000000, 0x08000, CRC(1ba4ac5d) SHA1(9bde57d70189d159ebdc537a9026001abfd0deae) ) \ + ROM_LOAD16_BYTE( "epr-12368-03.ic2", 0x300001, 0x08000, CRC(1ba4ac5d) SHA1(9bde57d70189d159ebdc537a9026001abfd0deae) ) \ ROM_START( mt_stbld ) /* Super Thunder Blade */ MEGATECH_BIOS - MEGATECH_GAME03("game0", "inst0") + MEGATECH_GAME03("game0") ROM_END /* Game 04 - Great Golf (SMS) */ -#define MEGATECH_GAME04(GAME_REGION, INSTRUCTION_REGION) \ - ROM_REGION( 0x300000, GAME_REGION, 0 ) \ - ROM_LOAD( "mp11129f.ic1", 0x000000, 0x020000, CRC(c6611c84) SHA1(eab0eed872dd26b13bcf0b2dd74fcbbc078812c9) ) \ - MEGATECH_INSTRUCTION_REGION( INSTRUCTION_REGION, MEGATECH_GAME_IS_SMS ) \ - ROM_LOAD( "epr-12368-04.ic2", 0x000000, 0x08000, CRC(62e5579b) SHA1(e1f531be5c40a1216d4192baeda9352384444410) ) \ - /* Also known to have the ID# MPR-11128 instead of MPR-11129F, same contents */ +#define MEGATECH_GAME04(GAME_REGION) \ + MEGATECH_GAME_REGION(GAME_REGION,MEGATECH_GAME_IS_SMS) \ + ROM_LOAD16_WORD_SWAP( "mp11129f.ic1", 0x000000, 0x020000, CRC(c6611c84) SHA1(eab0eed872dd26b13bcf0b2dd74fcbbc078812c9) ) \ + ROM_LOAD16_BYTE( "epr-12368-04.ic2", 0x300001, 0x08000, CRC(62e5579b) SHA1(e1f531be5c40a1216d4192baeda9352384444410) ) \ + +/* Also known to have the ID# MPR-11128 instead of MPR-11129F, same contents */ ROM_START( mt_ggolf ) /* Great Golf */ MEGATECH_BIOS - MEGATECH_GAME04("game0", "inst0") + MEGATECH_GAME04("game0") ROM_END /* Game 05 - Great Soccer (SMS) - bad dump */ -#define MEGATECH_GAME05(GAME_REGION, INSTRUCTION_REGION) \ - ROM_REGION( 0x300000, GAME_REGION, 0 ) \ - ROM_LOAD( "mp10747f.ic1", 0x000000, 0x020000, BAD_DUMP CRC(9cf53703) SHA1(c6b4d1de56bd5bf067ec7fc80449c07686d01337) ) \ - MEGATECH_INSTRUCTION_REGION( INSTRUCTION_REGION, MEGATECH_GAME_IS_SMS ) \ - ROM_LOAD( "epr-12368-05.ic2", 0x000000, 0x08000, CRC(bab91fcc) SHA1(a160c9d34b253e93ac54fdcef33f95f44d8fa90c) ) \ +#define MEGATECH_GAME05(GAME_REGION) \ + MEGATECH_GAME_REGION(GAME_REGION,MEGATECH_GAME_IS_SMS) \ + ROM_LOAD16_WORD_SWAP( "mp10747f.ic1", 0x000000, 0x020000, BAD_DUMP CRC(9cf53703) SHA1(c6b4d1de56bd5bf067ec7fc80449c07686d01337) ) \ + ROM_LOAD16_BYTE( "epr-12368-05.ic2", 0x300001, 0x08000, CRC(bab91fcc) SHA1(a160c9d34b253e93ac54fdcef33f95f44d8fa90c) ) \ ROM_START( mt_gsocr ) /* Great Soccer */ MEGATECH_BIOS - MEGATECH_GAME05("game0", "inst0") + MEGATECH_GAME05("game0") ROM_END /* Game 06 - Out Run (SMS) */ -#define MEGATECH_GAME06(GAME_REGION, INSTRUCTION_REGION) \ - ROM_REGION( 0x300000, GAME_REGION, 0 ) \ - ROM_LOAD( "mpr-11078.ic1", 0x000000, 0x040000, CRC(5589d8d2) SHA1(4f9b61b24f0d9fee0448cdbbe8fc05411dbb1102) ) \ - MEGATECH_INSTRUCTION_REGION( INSTRUCTION_REGION, MEGATECH_GAME_IS_SMS ) \ - ROM_LOAD( "epr-12368-06.ic2", 0x000000, 0x08000, CRC(c7c74429) SHA1(22ee261a653e10d66e0d6703c988bb7f236a7571) ) \ +#define MEGATECH_GAME06(GAME_REGION) \ + MEGATECH_GAME_REGION(GAME_REGION,MEGATECH_GAME_IS_SMS) \ + ROM_LOAD16_WORD_SWAP( "mpr-11078.ic1", 0x000000, 0x040000, CRC(5589d8d2) SHA1(4f9b61b24f0d9fee0448cdbbe8fc05411dbb1102) ) \ + ROM_LOAD16_BYTE( "epr-12368-06.ic2", 0x300001, 0x08000, CRC(c7c74429) SHA1(22ee261a653e10d66e0d6703c988bb7f236a7571) ) \ ROM_START( mt_orun ) /* Out Run */ MEGATECH_BIOS - MEGATECH_GAME06("game0", "inst0") + MEGATECH_GAME06("game0") ROM_END /* Game 07 - Alien Syndrome (SMS) */ -#define MEGATECH_GAME07(GAME_REGION, INSTRUCTION_REGION) \ - ROM_REGION( 0x300000, GAME_REGION, 0 ) \ - ROM_LOAD( "mpr-11194.ic1", 0x000000, 0x040000, CRC(4cc11df9) SHA1(5d786476b275de34efb95f576dd556cf4b335a83) ) \ - MEGATECH_INSTRUCTION_REGION( INSTRUCTION_REGION, MEGATECH_GAME_IS_SMS ) \ - ROM_LOAD( "epr-12368-07.ic2", 0x000000, 0x08000, CRC(14f4a17b) SHA1(0fc010ac95762534892f1ae16986dbf1c25399d3) ) \ +#define MEGATECH_GAME07(GAME_REGION) \ + MEGATECH_GAME_REGION(GAME_REGION,MEGATECH_GAME_IS_SMS) \ + ROM_LOAD16_WORD_SWAP( "mpr-11194.ic1", 0x000000, 0x040000, CRC(4cc11df9) SHA1(5d786476b275de34efb95f576dd556cf4b335a83) ) \ + ROM_LOAD16_BYTE( "epr-12368-07.ic2", 0x300001, 0x08000, CRC(14f4a17b) SHA1(0fc010ac95762534892f1ae16986dbf1c25399d3) ) \ ROM_START( mt_asyn ) /* Alien Syndrome */ MEGATECH_BIOS - MEGATECH_GAME07("game0", "inst0") + MEGATECH_GAME07("game0") ROM_END /* Game 08 - Shinobi (SMS) */ -#define MEGATECH_GAME08(GAME_REGION, INSTRUCTION_REGION) \ - ROM_REGION( 0x300000, GAME_REGION, 0 ) \ - ROM_LOAD( "mp11706.ic1", 0x000000, 0x040000, CRC(0C6FAC4E) SHA1(7C0778C055DC9C2B0AAE1D166DBDB4734E55B9D1) ) \ - MEGATECH_INSTRUCTION_REGION( INSTRUCTION_REGION, MEGATECH_GAME_IS_SMS ) \ - ROM_LOAD( "epr-12368-08.ic2", 0x000000, 0x08000, CRC(103A0459) SHA1(D803DDF7926B83785E8503C985B8C78E7CCB5DAC) ) \ +#define MEGATECH_GAME08(GAME_REGION) \ + MEGATECH_GAME_REGION(GAME_REGION,MEGATECH_GAME_IS_SMS) \ + ROM_LOAD16_WORD_SWAP( "mp11706.ic1", 0x000000, 0x040000, CRC(0C6FAC4E) SHA1(7C0778C055DC9C2B0AAE1D166DBDB4734E55B9D1) ) \ + ROM_LOAD16_BYTE( "epr-12368-08.ic2", 0x300001, 0x08000, CRC(103A0459) SHA1(D803DDF7926B83785E8503C985B8C78E7CCB5DAC) ) \ ROM_START( mt_shnbi ) /* Shinobi */ MEGATECH_BIOS - MEGATECH_GAME08("game0", "inst0") + MEGATECH_GAME08("game0") ROM_END /* Game 09 - Fantasy Zone (SMS) */ // note, dump was bad, but the good (uniquely identifiable) parts matched the 'fantasy zone (world) (v1.2).bin' SMS rom // so I'm using that until it gets verified. -#define MEGATECH_GAME09(GAME_REGION, INSTRUCTION_REGION) \ - ROM_REGION( 0x300000, GAME_REGION, 0 ) \ - ROM_LOAD( "mpr-10118.ic1", 0x000000, 0x020000, CRC(65d7e4e0) SHA1(0278cd120dc3a7707eda9314c46c7f27f9e8fdda) ) \ - MEGATECH_INSTRUCTION_REGION( INSTRUCTION_REGION, MEGATECH_GAME_IS_SMS ) \ - ROM_LOAD( "epr-12368-09.bin", 0x000000, 0x08000, CRC(373d2a70) SHA1(c39dd1003d71a417b12a359126bfef64c7a2fd00) ) \ +#define MEGATECH_GAME09(GAME_REGION) \ + MEGATECH_GAME_REGION(GAME_REGION,MEGATECH_GAME_IS_SMS) \ + ROM_LOAD16_WORD_SWAP( "mpr-10118.ic1", 0x000000, 0x020000, CRC(65d7e4e0) SHA1(0278cd120dc3a7707eda9314c46c7f27f9e8fdda) ) \ + ROM_LOAD16_BYTE( "epr-12368-09.bin", 0x300001, 0x08000, CRC(373d2a70) SHA1(c39dd1003d71a417b12a359126bfef64c7a2fd00) ) \ ROM_START( mt_fz ) /* Fantasy Zone */ MEGATECH_BIOS - MEGATECH_GAME09("game0", "inst0") + MEGATECH_GAME09("game0") ROM_END /* Game 10 - Afterburner (SMS) */ -#define MEGATECH_GAME10(GAME_REGION, INSTRUCTION_REGION) \ - ROM_REGION( 0x300000, GAME_REGION, 0 ) \ - ROM_LOAD( "mp11271.ic1", 0x000000, 0x080000, CRC(1C951F8E) SHA1(51531DF038783C84640A0CAB93122E0B59E3B69A) ) \ - MEGATECH_INSTRUCTION_REGION( INSTRUCTION_REGION, MEGATECH_GAME_IS_SMS ) \ - ROM_LOAD( "epr-12368-10.ic2", 0x000000, 0x08000, CRC(2A7CB590) SHA1(2236963BDDC89CA9045B530259CC7B5CCF889EAF) ) \ +#define MEGATECH_GAME10(GAME_REGION) \ + MEGATECH_GAME_REGION(GAME_REGION,MEGATECH_GAME_IS_SMS) \ + ROM_LOAD16_WORD_SWAP( "mp11271.ic1", 0x000000, 0x080000, CRC(1C951F8E) SHA1(51531DF038783C84640A0CAB93122E0B59E3B69A) ) \ + ROM_LOAD16_BYTE( "epr-12368-10.ic2", 0x300001, 0x08000, CRC(2A7CB590) SHA1(2236963BDDC89CA9045B530259CC7B5CCF889EAF) ) \ ROM_START( mt_aftrb ) /* Afterburner */ MEGATECH_BIOS - MEGATECH_GAME10("game0", "inst0") + MEGATECH_GAME10("game0") ROM_END /* Game 11 - Thunder Force 2 */ -#define MEGATECH_GAME11(GAME_REGION, INSTRUCTION_REGION) \ - ROM_REGION16_BE( 0x300000, GAME_REGION, 0 ) \ +#define MEGATECH_GAME11(GAME_REGION) \ + MEGATECH_GAME_REGION(GAME_REGION,MEGATECH_GAME_IS_GEN) \ ROM_LOAD16_WORD_SWAP( "mp12559.ic1", 0x000000, 0x080000, CRC(b093bee3) SHA1(0bf6194c3d228425f8cf1903ed70d8da1b027b6a) ) \ - MEGATECH_INSTRUCTION_REGION( INSTRUCTION_REGION, MEGATECH_GAME_IS_GEN ) \ - ROM_LOAD( "epr-12368-11.ic2", 0x000000, 0x08000, CRC(f4f27e8d) SHA1(ae1a2823deb416c53838115966f1833d5dac72d4) ) \ + ROM_LOAD16_BYTE( "epr-12368-11.ic2", 0x300001, 0x08000, CRC(f4f27e8d) SHA1(ae1a2823deb416c53838115966f1833d5dac72d4) ) \ ROM_START( mt_tfor2 ) /* Thunder Force 2 */ MEGATECH_BIOS - MEGATECH_GAME11("game0", "inst0") + MEGATECH_GAME11("game0") ROM_END /* Game 13 - Astro Warrior (SMS) */ -#define MEGATECH_GAME13(GAME_REGION, INSTRUCTION_REGION) \ - ROM_REGION( 0x300000, GAME_REGION, 0 ) \ - ROM_LOAD( "ep13817.ic2", 0x000000, 0x20000, CRC(299cbb74) SHA1(901697a3535ad70190647f34ad5b30b695d54542) ) \ - MEGATECH_INSTRUCTION_REGION( INSTRUCTION_REGION, MEGATECH_GAME_IS_SMS ) \ - ROM_LOAD( "epr-12368-13.ic1", 0x000000, 0x08000, CRC(4038cbd1) SHA1(696bc1efce45d9f0052b2cf0332a232687c8d6ab) ) \ +#define MEGATECH_GAME13(GAME_REGION) \ + MEGATECH_GAME_REGION(GAME_REGION,MEGATECH_GAME_IS_SMS) \ + ROM_LOAD16_WORD_SWAP( "ep13817.ic2", 0x000000, 0x20000, CRC(299cbb74) SHA1(901697a3535ad70190647f34ad5b30b695d54542) ) \ + ROM_LOAD16_BYTE( "epr-12368-13.ic1", 0x300001, 0x08000, CRC(4038cbd1) SHA1(696bc1efce45d9f0052b2cf0332a232687c8d6ab) ) \ ROM_START( mt_astro ) /* Astro Warrior */ MEGATECH_BIOS - MEGATECH_GAME13("game0", "inst0") + MEGATECH_GAME13("game0") ROM_END /* Game 19 - Great Football (SMS) */ -#define MEGATECH_GAME19(GAME_REGION, INSTRUCTION_REGION) \ - ROM_REGION( 0x300000, GAME_REGION, 0 ) \ - ROM_LOAD( "mpr-10576f.ic1", 0x000000, 0x020000, CRC(2055825f) SHA1(a768f44ce7e50083ffe8c4b5e3ac93ceb7bd3266) ) \ - MEGATECH_INSTRUCTION_REGION( INSTRUCTION_REGION, MEGATECH_GAME_IS_SMS ) \ - ROM_LOAD( "epr-12368-19.ic2", 0x000000, 0x08000, CRC(e27cb37a) SHA1(2b6259957e86d033a5689fd716a9efcfeff7d5ba) ) \ +#define MEGATECH_GAME19(GAME_REGION) \ + MEGATECH_GAME_REGION(GAME_REGION,MEGATECH_GAME_IS_SMS) \ + ROM_LOAD16_WORD_SWAP( "mpr-10576f.ic1", 0x000000, 0x020000, CRC(2055825f) SHA1(a768f44ce7e50083ffe8c4b5e3ac93ceb7bd3266) ) \ + ROM_LOAD16_BYTE( "epr-12368-19.ic2", 0x300001, 0x08000, CRC(e27cb37a) SHA1(2b6259957e86d033a5689fd716a9efcfeff7d5ba) ) \ ROM_START( mt_gfoot ) /* Great Football */ MEGATECH_BIOS - MEGATECH_GAME19("game0", "inst0") + MEGATECH_GAME19("game0") ROM_END /* Game 20 - Last Battle */ -#define MEGATECH_GAME20(GAME_REGION, INSTRUCTION_REGION) \ - ROM_REGION16_BE( 0x300000, GAME_REGION, 0 ) \ +#define MEGATECH_GAME20(GAME_REGION) \ + MEGATECH_GAME_REGION(GAME_REGION,MEGATECH_GAME_IS_GEN) \ ROM_LOAD16_WORD_SWAP( "mp12578f.ic1", 0x000000, 0x080000, CRC(531191a0) SHA1(f6bc26e975c01a3e10ab4033e4c5f494627a1e2f) ) \ - MEGATECH_INSTRUCTION_REGION( INSTRUCTION_REGION, MEGATECH_GAME_IS_GEN ) \ - ROM_LOAD( "epr-12368-20.ic2", 0x000000, 0x08000, CRC(e1a71c91) SHA1(c250da18660d8aea86eb2abace41ba46130dabc8) ) \ + ROM_LOAD16_BYTE( "epr-12368-20.ic2", 0x300001, 0x08000, CRC(e1a71c91) SHA1(c250da18660d8aea86eb2abace41ba46130dabc8) ) \ ROM_START( mt_lastb ) /* Last Battle */ MEGATECH_BIOS - MEGATECH_GAME20("game0", "inst0") + MEGATECH_GAME20("game0") ROM_END /* Game 21 - World Championship Soccer (Genesis) */ -#define MEGATECH_GAME21(GAME_REGION, INSTRUCTION_REGION) \ - ROM_REGION16_BE( 0x300000, GAME_REGION, 0 ) \ +#define MEGATECH_GAME21(GAME_REGION) \ + MEGATECH_GAME_REGION(GAME_REGION,MEGATECH_GAME_IS_GEN) \ ROM_LOAD16_WORD_SWAP( "mp12607b.ic1", 0x000000, 0x080000, CRC(bc591b30) SHA1(55e8577171c0933eee53af1dabd0f4c6462d5fc8) ) \ - MEGATECH_INSTRUCTION_REGION( INSTRUCTION_REGION, MEGATECH_GAME_IS_GEN ) \ - ROM_LOAD( "epr-12368-21.ic2", 0x000000, 0x08000, CRC(028ee46b) SHA1(cd8f81d66e5ae62107eb20e0ca5db4b66d4b2987) ) \ + ROM_LOAD16_BYTE( "epr-12368-21.ic2", 0x300001, 0x08000, CRC(028ee46b) SHA1(cd8f81d66e5ae62107eb20e0ca5db4b66d4b2987) ) \ ROM_START( mt_wcsoc ) /* World Championship Soccer */ MEGATECH_BIOS - MEGATECH_GAME21("game0", "inst0") + MEGATECH_GAME21("game0") ROM_END /* Game 22 - Tetris */ -#define MEGATECH_GAME22(GAME_REGION, INSTRUCTION_REGION) \ - ROM_REGION16_BE( 0x300000, GAME_REGION, 0 ) \ +#define MEGATECH_GAME22(GAME_REGION) \ + MEGATECH_GAME_REGION(GAME_REGION,MEGATECH_GAME_IS_GEN) \ ROM_LOAD16_BYTE( "mpr-12356f.ic1", 0x000001, 0x020000, CRC(1e71c1a0) SHA1(44b2312792e49d46d71e0417a7f022e5ffddbbfe) ) \ ROM_LOAD16_BYTE( "mpr-12357f.ic2", 0x000000, 0x020000, CRC(d52ca49c) SHA1(a9159892eee2c0cf28ebfcfa99f81f80781851c6) ) \ - MEGATECH_INSTRUCTION_REGION( INSTRUCTION_REGION, MEGATECH_GAME_IS_GEN ) \ - ROM_LOAD( "epr-12368-22.ic3", 0x000000, 0x08000, CRC(1c1b6468) SHA1(568a38f4186167486e39ab4aa2c1ceffd0b81156) ) \ + ROM_LOAD16_BYTE( "epr-12368-22.ic3", 0x300001, 0x08000, CRC(1c1b6468) SHA1(568a38f4186167486e39ab4aa2c1ceffd0b81156) ) \ ROM_START( mt_tetri ) /* Tetris */ MEGATECH_BIOS - MEGATECH_GAME22("game0", "inst0") + MEGATECH_GAME22("game0") ROM_END /* Game 23 - Ghouls and Ghosts (Genesis) */ -#define MEGATECH_GAME23(GAME_REGION, INSTRUCTION_REGION) \ - ROM_REGION16_BE( 0x300000, GAME_REGION, 0 ) \ +#define MEGATECH_GAME23(GAME_REGION) \ + MEGATECH_GAME_REGION(GAME_REGION,MEGATECH_GAME_IS_GEN) \ ROM_LOAD16_WORD_SWAP( "mp12605.ic1", 0x000000, 0x020000, CRC(1066C6AB) SHA1(C30E4442732BDB38C96D780542F8550A94D127B0) ) \ ROM_LOAD16_WORD_SWAP( "mpr12606.ic2", 0x080000, 0x020000, CRC(D0BE7777) SHA1(A44B2A3D427F6973B5C1A3DCD8D1776366ACB9F7) ) \ ROM_CONTINUE(0x020000,0x60000) \ - MEGATECH_INSTRUCTION_REGION( INSTRUCTION_REGION, MEGATECH_GAME_IS_GEN ) \ - ROM_LOAD( "epr-12368-23.ic3", 0x000000, 0x08000, CRC(7ee58546) SHA1(ad5bb0934475eacdc5e354f67c96fe0d2512d33b) ) \ + ROM_LOAD16_BYTE( "epr-12368-23.ic3", 0x300001, 0x08000, CRC(7ee58546) SHA1(ad5bb0934475eacdc5e354f67c96fe0d2512d33b) ) \ ROM_START( mt_gng ) /* Ghouls and Ghosts */ MEGATECH_BIOS - MEGATECH_GAME23("game0", "inst0") + MEGATECH_GAME23("game0") ROM_END /* Game 24 - Super Hang-On (Genesis) */ -#define MEGATECH_GAME24(GAME_REGION, INSTRUCTION_REGION) \ - ROM_REGION16_BE( 0x300000, GAME_REGION, 0 ) \ +#define MEGATECH_GAME24(GAME_REGION) \ + MEGATECH_GAME_REGION(GAME_REGION,MEGATECH_GAME_IS_GEN) \ ROM_LOAD16_WORD_SWAP( "mpr-12640.ic1", 0x000000, 0x080000, CRC(2fe2cf62) SHA1(4728bcc847deb38b16338cbd0154837cd4a07b7d) ) \ - MEGATECH_INSTRUCTION_REGION( INSTRUCTION_REGION, MEGATECH_GAME_IS_GEN ) \ - ROM_LOAD( "epr-12368-24.ic2", 0x000000, 0x08000, CRC(6c2db7e3) SHA1(8de0a10ed9185c9e98f17784811a79d3ce8c4c03) ) \ + ROM_LOAD16_BYTE( "epr-12368-24.ic2", 0x300001, 0x08000, CRC(6c2db7e3) SHA1(8de0a10ed9185c9e98f17784811a79d3ce8c4c03) ) \ ROM_START( mt_shang ) /* Super Hang-On */ MEGATECH_BIOS - MEGATECH_GAME24("game0", "inst0") + MEGATECH_GAME24("game0") ROM_END /* Game 25 - Golden Axe (Genesis) */ -#define MEGATECH_GAME25(GAME_REGION, INSTRUCTION_REGION) \ - ROM_REGION16_BE( 0x300000, GAME_REGION, 0 ) \ +#define MEGATECH_GAME25(GAME_REGION) \ + MEGATECH_GAME_REGION(GAME_REGION,MEGATECH_GAME_IS_GEN) \ ROM_LOAD16_WORD_SWAP( "12806.ic1", 0x000000, 0x080000, CRC(43456820) SHA1(2f7f1fcd979969ac99426f11ab99999a5494a121) ) \ - MEGATECH_INSTRUCTION_REGION( INSTRUCTION_REGION, MEGATECH_GAME_IS_GEN ) \ - ROM_LOAD( "epr-12368-25.ic2", 0x000000, 0x08000, CRC(1f07ed28) SHA1(9d54192f4c6c1f8a51c38a835c1dd1e4e3e8279e) ) \ + ROM_LOAD16_BYTE( "epr-12368-25.ic2", 0x300001, 0x08000, CRC(1f07ed28) SHA1(9d54192f4c6c1f8a51c38a835c1dd1e4e3e8279e) ) \ ROM_START( mt_gaxe ) /* Golden Axe */ MEGATECH_BIOS - MEGATECH_GAME25("game0", "inst0") + MEGATECH_GAME25("game0") ROM_END /* Game 26 - Forgotten Worlds */ /* why is this pre-swapped like a console dump?? */ -#define MEGATECH_GAME26(GAME_REGION, INSTRUCTION_REGION) \ - ROM_REGION16_BE( 0x300000, GAME_REGION, 0 ) \ +#define MEGATECH_GAME26(GAME_REGION) \ + MEGATECH_GAME_REGION(GAME_REGION,MEGATECH_GAME_IS_GEN) \ ROM_LOAD( "mpr-12672-h.ic1", 0x000000, 0x080000, CRC(d0ee6434) SHA1(8b9a37c206c332ef23dc71f09ec40e1a92b1f83a) ) \ - MEGATECH_INSTRUCTION_REGION( INSTRUCTION_REGION, MEGATECH_GAME_IS_GEN ) \ - ROM_LOAD( "epr-12368-26.ic2", 0x000000, 0x08000, CRC(4623b573) SHA1(29df4a5c5de66cd9cb7519e4f30000f7dddc2138) ) \ + ROM_LOAD16_BYTE( "epr-12368-26.ic2", 0x300001, 0x08000, CRC(4623b573) SHA1(29df4a5c5de66cd9cb7519e4f30000f7dddc2138) ) \ ROM_START( mt_fwrld ) /* Forgotten Worlds */ MEGATECH_BIOS - MEGATECH_GAME26("game0", "inst0") + MEGATECH_GAME26("game0") ROM_END /* Game 27 - Mystic Defender */ -#define MEGATECH_GAME27(GAME_REGION, INSTRUCTION_REGION) \ - ROM_REGION16_BE( 0x300000, GAME_REGION, 0 ) \ +#define MEGATECH_GAME27(GAME_REGION) \ + MEGATECH_GAME_REGION(GAME_REGION,MEGATECH_GAME_IS_GEN) \ ROM_LOAD16_WORD_SWAP( "mp12707.1", 0x000000, 0x080000, CRC(4f2c513d) SHA1(f9bb548b3688170fe18bb3f1b5b54182354143cf) ) \ - MEGATECH_INSTRUCTION_REGION( INSTRUCTION_REGION, MEGATECH_GAME_IS_GEN ) \ - ROM_LOAD( "epr-12368-27.ic2", 0x000000, 0x08000, CRC(caf46f78) SHA1(a9659e86a6a223646338cd8f29c346866e4406c7) ) \ + ROM_LOAD16_BYTE( "epr-12368-27.ic2", 0x300001, 0x08000, CRC(caf46f78) SHA1(a9659e86a6a223646338cd8f29c346866e4406c7) ) \ ROM_START( mt_mystd ) /* Mystic Defender */ MEGATECH_BIOS - MEGATECH_GAME27("game0", "inst0") + MEGATECH_GAME27("game0") ROM_END /* Game 28 - The Revenge of Shinobi */ -#define MEGATECH_GAME28(GAME_REGION, INSTRUCTION_REGION) \ - ROM_REGION16_BE( 0x300000, GAME_REGION, 0 ) \ +#define MEGATECH_GAME28(GAME_REGION) \ + MEGATECH_GAME_REGION(GAME_REGION,MEGATECH_GAME_IS_GEN) \ ROM_LOAD16_WORD_SWAP( "mp12675.ic1", 0x000000, 0x080000, CRC(672A1D4D) SHA1(5FD0AF14C8F2CF8CEAB1AE61A5A19276D861289A) ) \ - MEGATECH_INSTRUCTION_REGION( INSTRUCTION_REGION, MEGATECH_GAME_IS_GEN ) \ - ROM_LOAD( "epr-12368-28.ic2", 0x000000, 0x08000, CRC(0D30BEDE) SHA1(73A090D84B78A570E02FB54A33666DCADA52849B) ) \ + ROM_LOAD16_BYTE( "epr-12368-28.ic2", 0x300001, 0x08000, CRC(0D30BEDE) SHA1(73A090D84B78A570E02FB54A33666DCADA52849B) ) \ ROM_START( mt_revsh ) /* The Revenge Of Shinobi */ MEGATECH_BIOS - MEGATECH_GAME28("game0", "inst0") + MEGATECH_GAME28("game0") ROM_END /* Game 29 - Parlour Games (SMS) */ -#define MEGATECH_GAME29(GAME_REGION, INSTRUCTION_REGION) \ - ROM_REGION( 0x300000, GAME_REGION, 0 ) \ - ROM_LOAD( "mp11404.ic1", 0x000000, 0x020000, CRC(E030E66C) SHA1(06664DAF208F07CB00B603B12ECCFC3F01213A17) ) \ - MEGATECH_INSTRUCTION_REGION( INSTRUCTION_REGION, MEGATECH_GAME_IS_SMS ) \ - ROM_LOAD( "epr-12368-29.ic2", 0x000000, 0x08000, CRC(534151e8) SHA1(219238d90c1d3ac07ff64c9a2098b490fff68f04) ) \ +#define MEGATECH_GAME29(GAME_REGION) \ + MEGATECH_GAME_REGION(GAME_REGION,MEGATECH_GAME_IS_SMS) \ + ROM_LOAD16_WORD_SWAP( "mp11404.ic1", 0x000000, 0x020000, CRC(E030E66C) SHA1(06664DAF208F07CB00B603B12ECCFC3F01213A17) ) \ + ROM_LOAD16_BYTE( "epr-12368-29.ic2", 0x300001, 0x08000, CRC(534151e8) SHA1(219238d90c1d3ac07ff64c9a2098b490fff68f04) ) \ ROM_START( mt_parlg ) /* Parlour Games */ MEGATECH_BIOS - MEGATECH_GAME29("game0", "inst0") + MEGATECH_GAME29("game0") ROM_END /* Game 31 - Arnold Palmer Tournament Gold */ -#define MEGATECH_GAME31(GAME_REGION, INSTRUCTION_REGION) \ - ROM_REGION16_BE( 0x300000, GAME_REGION, 0 ) \ +#define MEGATECH_GAME31(GAME_REGION) \ + MEGATECH_GAME_REGION(GAME_REGION,MEGATECH_GAME_IS_GEN) \ ROM_LOAD16_WORD_SWAP( "mp12645f.ic1", 0x000000, 0x080000, CRC(c07ef8d2) SHA1(9d111fdc7bb92d52bfa048cd134aa488b4f475ef) ) \ - MEGATECH_INSTRUCTION_REGION( INSTRUCTION_REGION, MEGATECH_GAME_IS_GEN ) \ - ROM_LOAD( "epr-12368-31.ic2", 0x000000, 0x08000, CRC(30af7e4a) SHA1(baf91d527393dc90aba9371abcb1e690bcc83c7e) ) \ + ROM_LOAD16_BYTE( "epr-12368-31.ic2", 0x300001, 0x08000, CRC(30af7e4a) SHA1(baf91d527393dc90aba9371abcb1e690bcc83c7e) ) \ ROM_START( mt_tgolf ) /* Arnold Palmer Tournament Golf */ MEGATECH_BIOS - MEGATECH_GAME31("game0", "inst0") + MEGATECH_GAME31("game0") ROM_END /* Game 32 - Super Real Basketball */ /* why is this pre-swapped like a console dump?? */ -#define MEGATECH_GAME32(GAME_REGION, INSTRUCTION_REGION) \ - ROM_REGION16_BE( 0x300000, GAME_REGION, 0 ) \ +#define MEGATECH_GAME32(GAME_REGION) \ + MEGATECH_GAME_REGION(GAME_REGION,MEGATECH_GAME_IS_GEN) \ ROM_LOAD( "mpr-12904f.ic1", 0x000000, 0x080000, CRC(4346e11a) SHA1(c86725780027ef9783cb7884c8770cc030b0cd0d) ) \ - MEGATECH_INSTRUCTION_REGION( INSTRUCTION_REGION, MEGATECH_GAME_IS_GEN ) \ - ROM_LOAD( "epr-12368-32.ic2", 0x000000, 0x08000, CRC(f70adcbe) SHA1(d4412a7cd59fe282a1c6619aa1051a2a2e00e1aa) ) \ + ROM_LOAD16_BYTE( "epr-12368-32.ic2", 0x300001, 0x08000, CRC(f70adcbe) SHA1(d4412a7cd59fe282a1c6619aa1051a2a2e00e1aa) ) \ ROM_START( mt_srbb ) /* Super Real Basketball */ MEGATECH_BIOS - MEGATECH_GAME32("game0", "inst0") + MEGATECH_GAME32("game0") ROM_END /* Game 35 - Tommy Lasorda Baseball */ -#define MEGATECH_GAME35(GAME_REGION, INSTRUCTION_REGION) \ - ROM_REGION16_BE( 0x300000, GAME_REGION, 0 ) \ +#define MEGATECH_GAME35(GAME_REGION) \ + MEGATECH_GAME_REGION(GAME_REGION,MEGATECH_GAME_IS_GEN) \ ROM_LOAD16_WORD_SWAP( "mp12706.ic1", 0x000000, 0x080000, CRC(8901214f) SHA1(f5ec166be1cf9b86623b9d7a78ec903b899da32a) ) \ - MEGATECH_INSTRUCTION_REGION( INSTRUCTION_REGION, MEGATECH_GAME_IS_GEN ) \ - ROM_LOAD( "epr-12368-35.ic2", 0x000000, 0x08000, CRC(67bbe482) SHA1(6fc283b22e68befabb44b2cc61a7f82a71d6f029) ) \ + ROM_LOAD16_BYTE( "epr-12368-35.ic2", 0x300001, 0x08000, CRC(67bbe482) SHA1(6fc283b22e68befabb44b2cc61a7f82a71d6f029) ) \ ROM_START( mt_tlbba ) /* Tommy Lasorda Baseball */ MEGATECH_BIOS - MEGATECH_GAME35("game0", "inst0") + MEGATECH_GAME35("game0") ROM_END /* Game 36 - Columns */ -#define MEGATECH_GAME36(GAME_REGION, INSTRUCTION_REGION) \ - ROM_REGION16_BE( 0x300000, GAME_REGION, 0 ) \ +#define MEGATECH_GAME36(GAME_REGION) \ + MEGATECH_GAME_REGION(GAME_REGION,MEGATECH_GAME_IS_GEN) \ ROM_LOAD16_WORD_SWAP( "mp13193-t.ic1", 0x000000, 0x080000, CRC(8c770e2f) SHA1(02a3626025c511250a3f8fb3176eebccc646cda9) ) \ - MEGATECH_INSTRUCTION_REGION( INSTRUCTION_REGION, MEGATECH_GAME_IS_GEN ) \ - ROM_LOAD( "epr-12368-36.ic3", 0x000000, 0x08000, CRC(a4b29bac) SHA1(c9be866ac96243897d09612fe17562e0481f66e3) ) \ + ROM_LOAD16_BYTE( "epr-12368-36.ic3", 0x300001, 0x008000, CRC(a4b29bac) SHA1(c9be866ac96243897d09612fe17562e0481f66e3) ) \ ROM_START( mt_cols ) /* Columns */ MEGATECH_BIOS - MEGATECH_GAME36("game0", "inst0") + MEGATECH_GAME36("game0") ROM_END /* Game 38 - ESWAT */ -#define MEGATECH_GAME38(GAME_REGION, INSTRUCTION_REGION) \ - ROM_REGION16_BE( 0x300000, GAME_REGION, 0 ) \ +#define MEGATECH_GAME38(GAME_REGION) \ + MEGATECH_GAME_REGION(GAME_REGION,MEGATECH_GAME_IS_GEN) \ ROM_LOAD16_WORD_SWAP( "mp13192-h.ic1", 0x000000, 0x080000, CRC(82f458ef) SHA1(58444b783312def71ecffc4ad021b72a609685cb) ) \ - MEGATECH_INSTRUCTION_REGION( INSTRUCTION_REGION, MEGATECH_GAME_IS_GEN ) \ - ROM_LOAD( "epr-12368-38.ic2", 0x000000, 0x08000, CRC(43c5529b) SHA1(104f85adea6da1612c0aa96d553efcaa387d7aaf) ) \ + ROM_LOAD16_BYTE( "epr-12368-38.ic2", 0x300001, 0x08000, CRC(43c5529b) SHA1(104f85adea6da1612c0aa96d553efcaa387d7aaf) ) \ ROM_START( mt_eswat ) /* ESWAT */ MEGATECH_BIOS - MEGATECH_GAME38("game0", "inst0") + MEGATECH_GAME38("game0") ROM_END /* Game 39 - Super Monaco Grand Prix (Genesis) */ -#define MEGATECH_GAME39(GAME_REGION, INSTRUCTION_REGION) \ - ROM_REGION16_BE( 0x300000, GAME_REGION, 0 ) \ +#define MEGATECH_GAME39(GAME_REGION) \ + MEGATECH_GAME_REGION(GAME_REGION,MEGATECH_GAME_IS_GEN) \ ROM_LOAD16_WORD_SWAP( "13250.ic1", 0x000000, 0x080000, CRC(189b885f) SHA1(31c06ffcb48b1604989a94e584261457de4f1f46) ) \ - MEGATECH_INSTRUCTION_REGION( INSTRUCTION_REGION, MEGATECH_GAME_IS_GEN ) \ - ROM_LOAD( "epr-12368-39.ic2", 0x000000, 0x08000, CRC(64b3ce25) SHA1(83a9f2432d146a712b037f96f261742f7dc810bb) ) \ + ROM_LOAD16_BYTE( "epr-12368-39.ic2", 0x300001, 0x08000, CRC(64b3ce25) SHA1(83a9f2432d146a712b037f96f261742f7dc810bb) ) \ ROM_START( mt_smgp ) /* Super Monaco Grand Prix */ MEGATECH_BIOS - MEGATECH_GAME39("game0", "inst0") + MEGATECH_GAME39("game0") ROM_END /* Game 40 - Moon Walker */ -#define MEGATECH_GAME40(GAME_REGION, INSTRUCTION_REGION) \ - ROM_REGION16_BE( 0x300000, GAME_REGION, 0 ) \ +#define MEGATECH_GAME40(GAME_REGION) \ + MEGATECH_GAME_REGION(GAME_REGION,MEGATECH_GAME_IS_GEN) \ ROM_LOAD16_WORD_SWAP( "mp13285a.ic1", 0x000000, 0x080000, CRC(189516e4) SHA1(2a79e07da2e831832b8d448cae87a833c85e67c9) ) \ - MEGATECH_INSTRUCTION_REGION( INSTRUCTION_REGION, MEGATECH_GAME_IS_GEN ) \ - ROM_LOAD( "epr-12368-40.ic2", 0x000000, 0x08000, CRC(0482378c) SHA1(734772f3ddb5ff82b76c3514d18a464b2bce8381) ) \ + ROM_LOAD16_BYTE( "epr-12368-40.ic2", 0x300001, 0x08000, CRC(0482378c) SHA1(734772f3ddb5ff82b76c3514d18a464b2bce8381) ) \ ROM_START( mt_mwalk ) /* Moon Walker */ MEGATECH_BIOS - MEGATECH_GAME40("game0", "inst0") + MEGATECH_GAME40("game0") ROM_END /* Game 41 - Crackdown */ -#define MEGATECH_GAME41(GAME_REGION, INSTRUCTION_REGION) \ - ROM_REGION16_BE( 0x300000, GAME_REGION, 0 ) \ +#define MEGATECH_GAME41(GAME_REGION) \ + MEGATECH_GAME_REGION(GAME_REGION,MEGATECH_GAME_IS_GEN) \ ROM_LOAD16_WORD_SWAP( "mp13578a-s.ic1", 0x000000, 0x080000, CRC(23f19893) SHA1(09aca793871e2246af4dc24925bc1eda8ff34446) ) \ - MEGATECH_INSTRUCTION_REGION( INSTRUCTION_REGION, MEGATECH_GAME_IS_GEN ) \ - ROM_LOAD( "epr-12368-41.ic2", 0x000000, 0x08000, CRC(3014acec) SHA1(07953e9ae5c23fc7e7d08993b215f4dfa88aa5d7) ) \ + ROM_LOAD16_BYTE( "epr-12368-41.ic2", 0x300001, 0x08000, CRC(3014acec) SHA1(07953e9ae5c23fc7e7d08993b215f4dfa88aa5d7) ) \ ROM_START( mt_crack ) /* Crackdown */ MEGATECH_BIOS - MEGATECH_GAME41("game0", "inst0") + MEGATECH_GAME41("game0") ROM_END /* Game 43 - Shadow Dancer */ -#define MEGATECH_GAME43(GAME_REGION, INSTRUCTION_REGION) \ - ROM_REGION16_BE( 0x300000, GAME_REGION, 0 ) \ +#define MEGATECH_GAME43(GAME_REGION) \ + MEGATECH_GAME_REGION(GAME_REGION,MEGATECH_GAME_IS_GEN) \ ROM_LOAD16_WORD_SWAP( "mpr-13571-s.ic1", 0x000000, 0x080000, CRC(56a29310) SHA1(55836177e4a1e2deb68408976b29d0282cf661a9) ) \ - MEGATECH_INSTRUCTION_REGION( INSTRUCTION_REGION, MEGATECH_GAME_IS_GEN ) \ - ROM_LOAD( "epr-12368-43.ic2", 0x000000, 0x08000, CRC(1116cbc7) SHA1(ba6dd21ceadeedf730b71b67acbd20d9067114f3) ) \ + ROM_LOAD16_BYTE( "epr-12368-43.ic2", 0x300001, 0x08000, CRC(1116cbc7) SHA1(ba6dd21ceadeedf730b71b67acbd20d9067114f3) ) \ ROM_START( mt_shado ) /* Shadow Dancer */ MEGATECH_BIOS - MEGATECH_GAME43("game0", "inst0") + MEGATECH_GAME43("game0") ROM_END /* Game 44 - Arrow Flash */ -#define MEGATECH_GAME44(GAME_REGION, INSTRUCTION_REGION) \ - ROM_REGION16_BE( 0x300000, GAME_REGION, 0 ) \ +#define MEGATECH_GAME44(GAME_REGION) \ + MEGATECH_GAME_REGION(GAME_REGION,MEGATECH_GAME_IS_GEN) \ ROM_LOAD16_WORD_SWAP( "mpr13396h.ic1", 0x000000, 0x080000, CRC(091226e3) SHA1(cb15c6277314f3c4a86b5ae5823f72811d5d269d) ) \ - MEGATECH_INSTRUCTION_REGION( INSTRUCTION_REGION, MEGATECH_GAME_IS_GEN ) \ - ROM_LOAD( "epr-12368-44.ic2", 0x000000, 0x08000, CRC(e653065d) SHA1(96b014fc4df8eb2188ac94ed0a778d974fe6dcad) ) \ + ROM_LOAD16_BYTE( "epr-12368-44.ic2", 0x300001, 0x08000, CRC(e653065d) SHA1(96b014fc4df8eb2188ac94ed0a778d974fe6dcad) ) \ ROM_START( mt_arrow ) /* Arrow Flash */ MEGATECH_BIOS - MEGATECH_GAME44("game0", "inst0") + MEGATECH_GAME44("game0") ROM_END /* Game 47 - Alien Storm */ -#define MEGATECH_GAME47(GAME_REGION, INSTRUCTION_REGION) \ - ROM_REGION16_BE( 0x300000, GAME_REGION, 0 ) \ +#define MEGATECH_GAME47(GAME_REGION) \ + MEGATECH_GAME_REGION(GAME_REGION,MEGATECH_GAME_IS_GEN) \ ROM_LOAD16_WORD_SWAP( "mp13941.ic1", 0x000000, 0x080000, CRC(D71B3EE6) SHA1(05F272DAD243D132D517C303388248DC4C0482ED) ) \ - MEGATECH_INSTRUCTION_REGION( INSTRUCTION_REGION, MEGATECH_GAME_IS_GEN ) \ - ROM_LOAD( "epr-12368-47.ic2", 0x000000, 0x08000, CRC(31FB683D) SHA1(E356DA020BBF817B97FB10C27F75CF5931EDF4FC) ) \ + ROM_LOAD16_BYTE( "epr-12368-47.ic2", 0x300001, 0x08000, CRC(31FB683D) SHA1(E356DA020BBF817B97FB10C27F75CF5931EDF4FC) ) \ ROM_START( mt_astrm ) /* Alien Storm */ MEGATECH_BIOS - MEGATECH_GAME47("game0", "inst0") + MEGATECH_GAME47("game0") ROM_END /* Game 48 - Wrestle War */ -#define MEGATECH_GAME48(GAME_REGION, INSTRUCTION_REGION) \ - ROM_REGION16_BE( 0x300000, GAME_REGION, 0 ) \ +#define MEGATECH_GAME48(GAME_REGION) \ + MEGATECH_GAME_REGION(GAME_REGION,MEGATECH_GAME_IS_GEN) \ ROM_LOAD16_WORD_SWAP( "mpr-14025-f.ic1", 0x000000, 0x080000, CRC(26e899fe) SHA1(6d28e154ae2e4196097a2aa96c5acd5dfe7e3d2b) ) \ - MEGATECH_INSTRUCTION_REGION( INSTRUCTION_REGION, MEGATECH_GAME_IS_GEN ) \ - ROM_LOAD( "epr-12368-48.ic2", 0x000000, 0x08000, CRC(25817bc2) SHA1(ba1bbb952aff12fb4d3ecfb10d82c54128439395) ) \ + ROM_LOAD16_BYTE( "epr-12368-48.ic2", 0x300001, 0x08000, CRC(25817bc2) SHA1(ba1bbb952aff12fb4d3ecfb10d82c54128439395) ) \ ROM_START( mt_wwar ) /* Wrestle War */ MEGATECH_BIOS - MEGATECH_GAME48("game0", "inst0") + MEGATECH_GAME48("game0") ROM_END /* Game 49 - Bonanza Bros. */ -#define MEGATECH_GAME49(GAME_REGION, INSTRUCTION_REGION) \ - ROM_REGION16_BE( 0x300000, GAME_REGION, 0 ) \ +#define MEGATECH_GAME49(GAME_REGION) \ + MEGATECH_GAME_REGION(GAME_REGION,MEGATECH_GAME_IS_GEN) \ ROM_LOAD16_WORD_SWAP( "mp13905a.ic1", 0x000000, 0x100000, CRC(68a88d60) SHA1(2f56e8a2b0999de4fa0d14a1527f4e1df0f9c7a2) ) \ - MEGATECH_INSTRUCTION_REGION( INSTRUCTION_REGION, MEGATECH_GAME_IS_GEN ) \ - ROM_LOAD( "epr-12368-49.ic2", 0x000000, 0x08000, CRC(c5101da2) SHA1(636f30043e2e9291e193ef9a2ead2e97a0bf7380) ) \ + ROM_LOAD16_BYTE( "epr-12368-49.ic2", 0x300001, 0x08000, CRC(c5101da2) SHA1(636f30043e2e9291e193ef9a2ead2e97a0bf7380) ) \ ROM_START( mt_bbros ) /* Bonanza Bros. */ MEGATECH_BIOS - MEGATECH_GAME49("game0", "inst0") + MEGATECH_GAME49("game0") ROM_END /* Game 51 - Streets of Rage */ -#define MEGATECH_GAME51(GAME_REGION, INSTRUCTION_REGION) \ - ROM_REGION16_BE( 0x300000, GAME_REGION, 0 ) \ +#define MEGATECH_GAME51(GAME_REGION) \ + MEGATECH_GAME_REGION(GAME_REGION,MEGATECH_GAME_IS_GEN) \ ROM_LOAD16_WORD_SWAP( "mpr-13571-s.ic1", 0x000000, 0x080000, CRC(db4ac746) SHA1(c7cc24e2329f279574513fa32bbf79f72f75aeea) ) \ - MEGATECH_INSTRUCTION_REGION( INSTRUCTION_REGION, MEGATECH_GAME_IS_GEN ) \ - ROM_LOAD( "epr-12368-51.ic2", 0x000000, 0x08000, CRC(49b7d6f4) SHA1(96e69851c92715e7daf35b184cf374147a8d2880) ) \ + ROM_LOAD16_BYTE( "epr-12368-51.ic2", 0x300001, 0x08000, CRC(49b7d6f4) SHA1(96e69851c92715e7daf35b184cf374147a8d2880) ) \ ROM_START( mt_srage ) /* Streets of Rage */ MEGATECH_BIOS - MEGATECH_GAME51("game0", "inst0") + MEGATECH_GAME51("game0") ROM_END /* Game 52 - Sonic The Hedgehog (Genesis) */ -#define MEGATECH_GAME52(GAME_REGION, INSTRUCTION_REGION) \ - ROM_REGION16_BE( 0x300000, GAME_REGION, 0 ) \ +#define MEGATECH_GAME52(GAME_REGION) \ + MEGATECH_GAME_REGION(GAME_REGION,MEGATECH_GAME_IS_GEN) \ ROM_LOAD16_WORD_SWAP( "mp13913.ic1", 0x000000, 0x080000, CRC(480b4b5c) SHA1(ab1dc1f738e3b2d0898a314b123fa71182bf572e) ) \ - MEGATECH_INSTRUCTION_REGION( INSTRUCTION_REGION, MEGATECH_GAME_IS_GEN ) \ - ROM_LOAD( "epr-12368-52.ic2", 0x0000, 0x8000, CRC(6a69d20c) SHA1(e483b39ff6eca37dc192dc296d004049e220554a) ) \ + ROM_LOAD16_BYTE( "epr-12368-52.ic2", 0x300001, 0x8000, CRC(6a69d20c) SHA1(e483b39ff6eca37dc192dc296d004049e220554a) ) \ ROM_START( mt_sonic ) /* Sonic The Hedgehog */ MEGATECH_BIOS - MEGATECH_GAME52("game0", "inst0") + MEGATECH_GAME52("game0") ROM_END -#define MEGATECH_GAME52ALT(GAME_REGION, INSTRUCTION_REGION) \ - ROM_REGION16_BE( 0x300000, GAME_REGION, 0 ) \ +#define MEGATECH_GAME52ALT(GAME_REGION) \ + MEGATECH_GAME_REGION(GAME_REGION,MEGATECH_GAME_IS_GEN) \ ROM_LOAD16_WORD_SWAP( "mp13933.ic1", 0x000000, 0x080000, CRC(13775004) SHA1(5decfd35944a2d0e7b996b9a4a12b616a309fd5e) ) \ - MEGATECH_INSTRUCTION_REGION( INSTRUCTION_REGION, MEGATECH_GAME_IS_GEN ) \ - ROM_LOAD( "epr-12368-52.ic2", 0x0000, 0x8000, CRC(6a69d20c) SHA1(e483b39ff6eca37dc192dc296d004049e220554a) ) \ + ROM_LOAD16_BYTE( "epr-12368-52.ic2", 0x300001, 0x8000, CRC(6a69d20c) SHA1(e483b39ff6eca37dc192dc296d004049e220554a) ) \ ROM_START( mt_sonia ) /* Sonic (alt)*/ MEGATECH_BIOS - MEGATECH_GAME52ALT("game0", "inst0") + MEGATECH_GAME52ALT("game0") ROM_END /* Game 53 - Fire Shark */ -#define MEGATECH_GAME53(GAME_REGION, INSTRUCTION_REGION) \ - ROM_REGION16_BE( 0x300000, GAME_REGION, 0 ) \ +#define MEGATECH_GAME53(GAME_REGION) \ + MEGATECH_GAME_REGION(GAME_REGION,MEGATECH_GAME_IS_GEN) \ ROM_LOAD16_WORD_SWAP( "mp14341.ic1", 0x000000, 0x080000, CRC(04d65ebc) SHA1(24338aecdc52b6f416548be722ca475c83dbae96) ) \ - MEGATECH_INSTRUCTION_REGION( INSTRUCTION_REGION, MEGATECH_GAME_IS_GEN ) \ - ROM_LOAD( "epr-12368-53.ic2", 0x000000, 0x08000, CRC(4fa61044) SHA1(7810deea221c10b0b2f5233443d81f4f1998ee58) ) \ + ROM_LOAD16_BYTE( "epr-12368-53.ic2", 0x300001, 0x08000, CRC(4fa61044) SHA1(7810deea221c10b0b2f5233443d81f4f1998ee58) ) \ /* alt version with these roms exists, but the content is the same */ /* (6a221fd6) ep14706.ic1 mp14341.ic1 [even] IDENTICAL */ @@ -1063,75 +1068,69 @@ ROM_END ROM_START( mt_fshrk ) /* Fire Shark */ MEGATECH_BIOS - MEGATECH_GAME53("game0", "inst0") + MEGATECH_GAME53("game0") ROM_END /* Game 54 - Spiderman */ -#define MEGATECH_GAME54(GAME_REGION, INSTRUCTION_REGION) \ - ROM_REGION16_BE( 0x300000, GAME_REGION, 0 ) \ +#define MEGATECH_GAME54(GAME_REGION) \ + MEGATECH_GAME_REGION(GAME_REGION,MEGATECH_GAME_IS_GEN) \ ROM_LOAD16_WORD_SWAP( "mp14027-sm.ic1", 0x000000, 0x080000, CRC(e2c08a06) SHA1(39e592eafd47e2aa6edbb4845d44750057bff890) ) \ - MEGATECH_INSTRUCTION_REGION( INSTRUCTION_REGION, MEGATECH_GAME_IS_GEN ) \ - ROM_LOAD( "epr-12368-54.ic2", 0x000000, 0x08000, CRC(30b68988) SHA1(04eeb0fad732a791b6bc0c0846306d567573649f) ) \ + ROM_LOAD16_BYTE( "epr-12368-54.ic2", 0x300001, 0x08000, CRC(30b68988) SHA1(04eeb0fad732a791b6bc0c0846306d567573649f) ) \ ROM_START( mt_spman ) /* Spiderman */ MEGATECH_BIOS - MEGATECH_GAME54("game0", "inst0") + MEGATECH_GAME54("game0") ROM_END /* Game 57 - Golden Axe 2 (Genesis) */ -#define MEGATECH_GAME57(GAME_REGION, INSTRUCTION_REGION) \ - ROM_REGION16_BE( 0x300000, GAME_REGION, 0 ) \ +#define MEGATECH_GAME57(GAME_REGION) \ + MEGATECH_GAME_REGION(GAME_REGION,MEGATECH_GAME_IS_GEN) \ ROM_LOAD16_WORD_SWAP( "mp14272.ic1", 0x000000, 0x080000, CRC(d4784cae) SHA1(b6c286027d06fd850016a2a1ee1f1aeea080c3bb) ) \ - MEGATECH_INSTRUCTION_REGION( INSTRUCTION_REGION, MEGATECH_GAME_IS_GEN ) \ - ROM_LOAD( "epr-12368-57.ic2", 0x000000, 0x08000, CRC(dc9b4433) SHA1(efd3a598569010cdc4bf38ecbf9ed1b4e14ffe36) ) \ + ROM_LOAD16_BYTE( "epr-12368-57.ic2", 0x300001, 0x08000, CRC(dc9b4433) SHA1(efd3a598569010cdc4bf38ecbf9ed1b4e14ffe36) ) \ ROM_START( mt_gaxe2 ) /* Golden Axe 2 */ MEGATECH_BIOS - MEGATECH_GAME57("game0", "inst0") + MEGATECH_GAME57("game0") ROM_END /* Game 58 - Sports Talk Football */ -#define MEGATECH_GAME58(GAME_REGION, INSTRUCTION_REGION) \ - ROM_REGION16_BE( 0x300000, GAME_REGION, 0 ) \ +#define MEGATECH_GAME58(GAME_REGION) \ + MEGATECH_GAME_REGION(GAME_REGION,MEGATECH_GAME_IS_GEN) \ ROM_LOAD16_WORD_SWAP( "mp14356a-f.ic1", 0x000000, 0x100000, CRC(20cf32f6) SHA1(752314346a7a98b3808b3814609e024dc0a4108c) ) \ - MEGATECH_INSTRUCTION_REGION( INSTRUCTION_REGION, MEGATECH_GAME_IS_GEN ) \ - ROM_LOAD( "epr-12368-58.ic2", 0x000000, 0x08000, CRC(dce2708e) SHA1(fcebb1899ee11468f6bda705899f074e7de9d723) ) \ + ROM_LOAD16_BYTE( "epr-12368-58.ic2", 0x300001, 0x08000, CRC(dce2708e) SHA1(fcebb1899ee11468f6bda705899f074e7de9d723) ) \ ROM_START( mt_stf ) /* Sports Talk Football */ MEGATECH_BIOS - MEGATECH_GAME58("game0", "inst0") + MEGATECH_GAME58("game0") ROM_END /* Game 59 - Mario Lemieux Hockey */ -#define MEGATECH_GAME59(GAME_REGION, INSTRUCTION_REGION) \ - ROM_REGION16_BE( 0x300000, GAME_REGION, 0 ) \ +#define MEGATECH_GAME59(GAME_REGION) \ + MEGATECH_GAME_REGION(GAME_REGION,MEGATECH_GAME_IS_GEN) \ ROM_LOAD16_WORD_SWAP( "mpr-14376-h.ic1", 0x000000, 0x80000, CRC(aa9be87e) SHA1(dceed94eaeb30e534f6953a4bc25ff37673b1e6b) ) \ - MEGATECH_INSTRUCTION_REGION( INSTRUCTION_REGION, MEGATECH_GAME_IS_GEN ) \ - ROM_LOAD( "epr-12368-59.ic2", 0x000000, 0x08000, CRC(6d47b438) SHA1(0a145f6438e4e55c957ae559663c37662b685246) ) \ + ROM_LOAD16_BYTE( "epr-12368-59.ic2", 0x300001, 0x08000, CRC(6d47b438) SHA1(0a145f6438e4e55c957ae559663c37662b685246) ) \ ROM_START( mt_mlh ) /* Mario Lemieux Hockey */ MEGATECH_BIOS - MEGATECH_GAME59("game0", "inst0") + MEGATECH_GAME59("game0") ROM_END /* Game 60 - Kid Chameleon */ -#define MEGATECH_GAME60(GAME_REGION, INSTRUCTION_REGION) \ - ROM_REGION16_BE( 0x300000, GAME_REGION, 0 ) \ +#define MEGATECH_GAME60(GAME_REGION) \ + MEGATECH_GAME_REGION(GAME_REGION,MEGATECH_GAME_IS_GEN) \ ROM_LOAD16_WORD_SWAP( "mp14557.ic1", 0x000000, 0x100000, CRC(e1a889a4) SHA1(a2768eacafc47d371e5276f0cce4b12b6041337a) ) \ - MEGATECH_INSTRUCTION_REGION( INSTRUCTION_REGION, MEGATECH_GAME_IS_GEN ) \ - ROM_LOAD( "epr-12368-60.ic2", 0x000000, 0x08000, CRC(a8e4af18) SHA1(dfa49f6ec4047718f33dba1180f6204dbaff884c) ) \ + ROM_LOAD16_BYTE( "epr-12368-60.ic2", 0x300001, 0x08000, CRC(a8e4af18) SHA1(dfa49f6ec4047718f33dba1180f6204dbaff884c) ) \ ROM_START( mt_kcham ) /* Kid Chameleon */ MEGATECH_BIOS - MEGATECH_GAME60("game0", "inst0") + MEGATECH_GAME60("game0") ROM_END /* Game 61 - Turbo Outrun */ -#define MEGATECH_GAME61(GAME_REGION, INSTRUCTION_REGION) \ - ROM_REGION16_BE( 0x300000, GAME_REGION, 0 ) \ +#define MEGATECH_GAME61(GAME_REGION) \ + MEGATECH_GAME_REGION(GAME_REGION,MEGATECH_GAME_IS_GEN) \ ROM_LOAD16_WORD_SWAP( "epr-14674.ic1", 0x000000, 0x080000, CRC(453712a2) SHA1(5d2c8430a9a14aac7f19c22617539b0503ab92cd) ) \ - MEGATECH_INSTRUCTION_REGION( INSTRUCTION_REGION, MEGATECH_GAME_IS_GEN ) \ - ROM_LOAD( "epr-12368-61.ic2", 0x000000, 0x08000, CRC(4aa0b2a2) SHA1(bce03f88d6cfd02683d51c28058f6229fda13b49) ) \ + ROM_LOAD16_BYTE( "epr-12368-61.ic2", 0x300001, 0x08000, CRC(4aa0b2a2) SHA1(bce03f88d6cfd02683d51c28058f6229fda13b49) ) \ // original dump of epr-14674.ic1 had CRC(c2b9a802) SHA1(108cc844c944125f9d271a2f2db094301294e8c2) // with the byte at offset 3 being F6 instead of Fe, this seems like a bad dump when compared to the Genesis rom which @@ -1139,51 +1138,50 @@ ROM_END ROM_START( mt_tout ) /* Turbo Outrun */ MEGATECH_BIOS - MEGATECH_GAME61("game0", "inst0") + MEGATECH_GAME61("game0") ROM_END /* Game 62 - Sonic The Hedgehog 2 */ -#define MEGATECH_GAME62(GAME_REGION, INSTRUCTION_REGION) \ - ROM_REGION16_BE( 0x300000, GAME_REGION, 0 ) \ +#define MEGATECH_GAME62(GAME_REGION) \ + MEGATECH_GAME_REGION(GAME_REGION,MEGATECH_GAME_IS_GEN) \ ROM_LOAD16_WORD_SWAP( "mp15000a-f.ic1", 0x000000, 0x100000, CRC(679ebb49) SHA1(557482064677702454562f753460993067ef9e16) ) \ - MEGATECH_INSTRUCTION_REGION( INSTRUCTION_REGION, MEGATECH_GAME_IS_GEN ) \ - ROM_LOAD( "epr-12368-62.ic2", 0x000000, 0x08000, CRC(14a8566f) SHA1(d1d14162144bf068ddd19e9736477ff98fb43f9e) ) \ + ROM_LOAD16_BYTE( "epr-12368-62.ic2", 0x300001, 0x08000, CRC(14a8566f) SHA1(d1d14162144bf068ddd19e9736477ff98fb43f9e) ) \ ROM_START( mt_soni2 ) /* Sonic The Hedgehog 2 */ MEGATECH_BIOS - MEGATECH_GAME62("game0", "inst0") + MEGATECH_GAME62("game0") ROM_END /* Compilations of games to show the multi-cart support */ ROM_START( mt_comp1 ) MEGATECH_BIOS - MEGATECH_GAME01("game0", "inst0") - MEGATECH_GAME13("game1", "inst1") - MEGATECH_GAME21("game2", "inst2") - MEGATECH_GAME06("game3", "inst3") - MEGATECH_GAME08("game4", "inst4") - MEGATECH_GAME28("game5", "inst5") - MEGATECH_GAME49("game6", "inst6") - MEGATECH_GAME60("game7", "inst7") + MEGATECH_GAME01("game0") + MEGATECH_GAME13("game1") + MEGATECH_GAME21("game2") + MEGATECH_GAME06("game3") + MEGATECH_GAME08("game4") + MEGATECH_GAME28("game5") + MEGATECH_GAME49("game6") + MEGATECH_GAME60("game7") ROM_END ROM_START( mt_comp2 ) MEGATECH_BIOS - MEGATECH_GAME10("game0", "inst0") - MEGATECH_GAME39("game1", "inst1") - MEGATECH_GAME24("game2", "inst2") - MEGATECH_GAME52("game3", "inst3") - MEGATECH_GAME29("game4", "inst4") - MEGATECH_GAME36("game5", "inst5") - MEGATECH_GAME40("game6", "inst6") - MEGATECH_GAME57("game7", "inst7") + MEGATECH_GAME10("game0") + MEGATECH_GAME39("game1") + MEGATECH_GAME24("game2") + MEGATECH_GAME52("game3") + MEGATECH_GAME29("game4") + MEGATECH_GAME36("game5") + MEGATECH_GAME40("game6") + MEGATECH_GAME57("game7") ROM_END /* nn */ /* nn is part of the instruction rom name, should there be a game for each number? */ -/* -- */ GAME( 1989, megatech, 0, megatech, megatech, mtnew, ROT0, "Sega", "Mega-Tech BIOS", GAME_IS_BIOS_ROOT ) +/* -- */ CONS( 1989, megatech, 0, 0, megatech_slot, megatech, mtnew, "Sega", "Mega-Tech", GAME_IS_BIOS_ROOT ) /* 01 */ GAME( 1988, mt_beast, megatech, megatech, megatech, mtnew, ROT0, "Sega", "Altered Beast (Mega-Tech)", GAME_NOT_WORKING ) /* 02 */ GAME( 1988, mt_shar2, megatech, megatech, megatech, mtnew, ROT0, "Sega", "Space Harrier II (Mega-Tech)", GAME_NOT_WORKING ) /* 03 */ GAME( 1988, mt_stbld, megatech, megatech, megatech, mtnew, ROT0, "Sega", "Super Thunder Blade (Mega-Tech)", GAME_NOT_WORKING ) diff --git a/src/mame/includes/megadriv.h b/src/mame/includes/megadriv.h index 14a7a8d5ff4..49fbad82a13 100644 --- a/src/mame/includes/megadriv.h +++ b/src/mame/includes/megadriv.h @@ -112,8 +112,6 @@ struct _mtech_bios /* once all the regs are saved in this structure, it would be UINT32 bios_ctrl_inputs; UINT8 bios_ctrl[6]; - int mt_bank_bank_pos; - int mt_bank_partial; int mt_bank_addr; }; diff --git a/src/mame/machine/megadriv.c b/src/mame/machine/megadriv.c index 5242d91f752..c692dec9456 100644 --- a/src/mame/machine/megadriv.c +++ b/src/mame/machine/megadriv.c @@ -413,36 +413,6 @@ static struct static void segacd_mark_tiles_dirty(running_machine* machine, int offset); -#ifdef UNUSED_FUNCTION -/* taken from segaic16.c */ -/* doesn't seem to meet my needs, not used */ -static UINT16 read_next_instruction(address_space *space) -{ - static UINT8 recurse = 0; - UINT16 result; - - /* Unmapped memory returns the last word on the data bus, which is almost always the opcode */ - /* of the next instruction due to prefetch; however, since we may be encrypted, we actually */ - /* need to return the encrypted opcode, not the last decrypted data. */ - - /* Believe it or not, this is actually important for Cotton, which has the following evil */ - /* code: btst #0,$7038f7, which tests the low bit of an unmapped address, which thus should */ - /* return the prefetched value. */ - - /* prevent recursion */ - if (recurse) - return 0xffff; - - /* read original encrypted memory at that address */ - recurse = 1; - result = space->read_word(cpu_get_pc(space->cpu)); - recurse = 0; - return result; -} -#endif - - - static struct genesis_z80_vars { int z80_is_reset;