diff options
author | MetalliC <0vetal0@gmail.com> | 2017-10-01 11:51:32 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-10-01 11:51:32 +0300 |
commit | ed47f48af4a44d6a16bb2b67ae4268aa64e9820d (patch) | |
tree | 1b99e2a8d19087f38ee8c03b856f5590d0f40ea7 | |
parent | c8421972d7d2ab19fda2af677e8f988a566086de (diff) | |
parent | 19ad8edfc7161d5a1cea3d51ca6c2e0165089b11 (diff) |
Merge pull request #2687 from DavidHaywood/280917
new clones marked as NOT WORKING
-rw-r--r-- | src/mame/drivers/segas16b.cpp | 65 | ||||
-rw-r--r-- | src/mame/includes/segas16b.h | 3 | ||||
-rw-r--r-- | src/mame/mame.lst | 1 |
3 files changed, 69 insertions, 0 deletions
diff --git a/src/mame/drivers/segas16b.cpp b/src/mame/drivers/segas16b.cpp index 58cd3ae5456..c235793f4ac 100644 --- a/src/mame/drivers/segas16b.cpp +++ b/src/mame/drivers/segas16b.cpp @@ -1750,11 +1750,34 @@ static ADDRESS_MAP_START( system16b_bootleg_map, AS_PROGRAM, 16, segas16b_state AM_RANGE(0xffc000, 0xffffff) AM_RAM AM_SHARE("workram") ADDRESS_MAP_END +static ADDRESS_MAP_START( map_fpointbla, AS_PROGRAM, 16, segas16b_state ) + AM_RANGE(0x000000, 0x01ffff) AM_ROM + AM_RANGE(0x02002e, 0x02002f) AM_READ(fpointbla_2002e_r) + + AM_RANGE(0x443002, 0x443003) AM_READ(fpointbla_2002e_r) + AM_RANGE(0x44301a, 0x44301b) AM_READ(fpointbla_2002e_r) + AM_RANGE(0x44302a, 0x44302b) AM_READ(fpointbla_2002e_r) + + AM_RANGE(0x400000, 0x40ffff) AM_DEVREADWRITE("segaic16vid", segaic16_video_device, tileram_r, tileram_w) AM_SHARE("tileram") + AM_RANGE(0x410000, 0x410fff) AM_DEVREADWRITE("segaic16vid", segaic16_video_device, textram_r, textram_w) AM_SHARE("textram") + AM_RANGE(0x440000, 0x4407ff) AM_RAM AM_SHARE("sprites") + AM_RANGE(0x840000, 0x840fff) AM_RAM_WRITE(paletteram_w) AM_SHARE("paletteram") + + AM_RANGE(0x843000, 0x843001) AM_READWRITE(bootleg_custom_io_r, bootleg_custom_io_w) + AM_RANGE(0x843018, 0x843019) AM_READ(fpointbla_2002e_r) + + AM_RANGE(0xffc000, 0xffffff) AM_RAM AM_SHARE("workram") +ADDRESS_MAP_END + static ADDRESS_MAP_START( decrypted_opcodes_map_x, AS_OPCODES, 16, segas16b_state ) ADDRESS_MAP_UNMAP_HIGH AM_RANGE(0x000000, 0x03ffff) AM_ROM AM_SHARE("decrypted_opcodes") ADDRESS_MAP_END +static ADDRESS_MAP_START( decrypted_opcodes_map_fpointbla, AS_OPCODES, 16, segas16b_state ) + ADDRESS_MAP_UNMAP_HIGH + AM_RANGE(0x000000, 0x01ffff) AM_ROM AM_SHARE("decrypted_opcodes") +ADDRESS_MAP_END static ADDRESS_MAP_START( lockonph_map, AS_PROGRAM, 16, segas16b_state ) // this still appears to have a mapper device, does the hardware use it? should we move this to all be configured by it? @@ -1814,6 +1837,11 @@ static ADDRESS_MAP_START( fpointbl_sound_map, AS_PROGRAM, 8, segas16b_state ) ADDRESS_MAP_END +READ16_MEMBER(segas16b_state::fpointbla_2002e_r) +{ + return 0xffff; +} + READ16_MEMBER(segas16b_state::bootleg_custom_io_r) { return m_custom_io_r(space, offset, mem_mask); @@ -3690,6 +3718,12 @@ static MACHINE_CONFIG_DERIVED( system16b_split, system16b ) MCFG_DEVICE_REMOVE("mapper") MACHINE_CONFIG_END +static MACHINE_CONFIG_DERIVED( system16b_fpointbla, system16b_split ) + MCFG_CPU_MODIFY("maincpu") + MCFG_CPU_PROGRAM_MAP(map_fpointbla) + MCFG_CPU_DECRYPTED_OPCODES_MAP(decrypted_opcodes_map_fpointbla) +MACHINE_CONFIG_END + void segas16b_state::tilemap_16b_fpointbl_fill_latch(int i, uint16_t* latched_pageselect, uint16_t* latched_yscroll, uint16_t* latched_xscroll, uint16_t* textram) { // grab the page regsisters from where the bootleg stores them instead, then convert them to the format the original video emulation code expects @@ -6089,6 +6123,25 @@ ROM_START( fpointbj ) ROM_LOAD( "fpointbj_gal20v8.bin", 0x0400, 0x019d, NO_DUMP ) /* Protected */ ROM_END +ROM_START( fpointbla ) + ROM_REGION( 0x20000, "maincpu", 0 ) // 68000 code + ROM_LOAD16_BYTE( "B3-ic59.bin", 0x000000, 0x10000, CRC(3b7d3b3a) SHA1(6c440f7706d392336a1e9165ac125b45695b9e0c) ) + ROM_LOAD16_BYTE( "B2-ic55.bin", 0x000001, 0x10000, CRC(4b7e2a54) SHA1(598d16be99491fe13485ec2b546444d92dad49c7) ) + + ROM_REGION( 0x30000, "gfx1", ROMREGION_INVERT ) // tiles + ROM_LOAD( "B8-9.bin", 0x00000, 0x10000, CRC(c539727d) SHA1(56674effe1d273128dddd2ff9e02974ec10f3fff) ) + ROM_LOAD( "B7-8.bin", 0x10000, 0x10000, CRC(82c0b8b0) SHA1(e1e2e721cb8ad53df33065582dc90edeba9c3cab) ) + ROM_LOAD( "B6-7.bin", 0x20000, 0x10000, CRC(522426ae) SHA1(90fd0a19b30a8a61dc4cfa66a64115596333dcc6) ) + + ROM_REGION16_BE( 0x10000, "sprites", 0 ) // sprites + ROM_LOAD16_BYTE( "B5-5.bin", 0x00001, 0x08000, CRC(93181d2e) SHA1(1d25bfea889012a9616ed03791f830f2a8139367) ) + ROM_LOAD16_BYTE( "B4-3.bin", 0x00000, 0x08000, CRC(ae466f37) SHA1(5fb423695a1d862f628ad2ea7651831ef48f6f0b) ) + + ROM_REGION( 0x10000, "soundcpu", 0 ) // sound CPU + ROM_LOAD( "B1-ic19.bin", 0x0000, 0x8000, CRC(9a8c11bb) SHA1(399f8e9bdd7aaa4d25817fa9cd4bbf413e5baebe) ) +ROM_END + + //************************************************************************************************************************* // Flash Point, Sega System 16B // CPU: FD1094 (317-0127A) @@ -8726,6 +8779,17 @@ DRIVER_INIT_MEMBER(segas16b_state,sdi_5358_small) } } +DRIVER_INIT_MEMBER(segas16b_state, generic_5358_fpointbla) +{ + init_generic(ROM_BOARD_171_5358); + + uint16_t* rom = (uint16_t*)memregion("maincpu")->base(); + + for (int i = 0;i < 0x10000;i++) + { + m_decrypted_opcodes[i] = BITSWAP16(rom[i], 8,9,10,11,12,13,14,15, 0, 1, 2, 3, 4, 5, 6, 7); + } +} DRIVER_INIT_MEMBER(segas16b_state,defense_5358_small) { @@ -8980,6 +9044,7 @@ GAME( 1987, sdibl6, sdi, system16b_split, sdi, segas16b // bootlegs with modified hardware GAME( 1989, fpointbl, fpoint, fpointbl, fpointbl, segas16b_state, generic_bootleg, ROT0, "bootleg (Datsu)", "Flash Point (World, bootleg)", 0 ) GAME( 1989, fpointbj, fpoint, fpointbl, fpointbl, segas16b_state, generic_bootleg, ROT0, "bootleg (Datsu)", "Flash Point (Japan, bootleg)", 0 ) +GAME( 1989, fpointbla, fpoint, system16b_fpointbla, fpoint, segas16b_state, generic_5358_fpointbla, ROT0, "bootleg", "Flash Point (bootleg)", MACHINE_NOT_WORKING ) diff --git a/src/mame/includes/segas16b.h b/src/mame/includes/segas16b.h index 5d255e7f8b9..f8dbc6aafbb 100644 --- a/src/mame/includes/segas16b.h +++ b/src/mame/includes/segas16b.h @@ -85,6 +85,8 @@ public: DECLARE_READ16_MEMBER( bootleg_custom_io_r ); DECLARE_WRITE16_MEMBER( bootleg_custom_io_w ); + DECLARE_READ16_MEMBER( fpointbla_2002e_r ); + // sound CPU read/write handlers DECLARE_WRITE8_MEMBER( upd7759_control_w ); DECLARE_READ8_MEMBER( upd7759_status_r ); @@ -111,6 +113,7 @@ public: DECLARE_DRIVER_INIT(hwchamp_5521); DECLARE_DRIVER_INIT(altbeas5_5521); DECLARE_DRIVER_INIT(sdi_5358_small); + DECLARE_DRIVER_INIT(generic_5358_fpointbla); DECLARE_DRIVER_INIT(altbeasj_5521); DECLARE_DRIVER_INIT(ddux_5704); DECLARE_DRIVER_INIT(snapper); diff --git a/src/mame/mame.lst b/src/mame/mame.lst index b031c66a29a..b706271c471 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -33420,6 +33420,7 @@ fpoint1 // (c) 1989 (Japan, FD1094) fpoint1d // fpointbj // (c) 1989 (Datsu bootleg, Japan) fpointbl // (c) 1989 (Datsu bootleg) +fpointbla // fpointd // goldnaxe // (c) 1989 (8751) goldnaxe1 // (c) 1989 (FD1094) |