diff options
Diffstat (limited to 'src/mame/drivers/superwng.c')
-rw-r--r-- | src/mame/drivers/superwng.c | 39 |
1 files changed, 31 insertions, 8 deletions
diff --git a/src/mame/drivers/superwng.c b/src/mame/drivers/superwng.c index 74bf70fda34..2fb445a1475 100644 --- a/src/mame/drivers/superwng.c +++ b/src/mame/drivers/superwng.c @@ -9,9 +9,18 @@ Hardware a bit (interrupts, sound) similar to mouser as well TODO: - unused rom 6.8s (located on the pcb near the gfx rom 7.8p, but contains - data (similar to the one in roms 4.5p and 5.5r). - There are two possibilities: its bad dump of gfx rom (two extra bit layers - of current gfx) or it's banked at 0x4000 - 0x7fff area. + data (similar to the one in roms 4.5p and 5.5r) + + The game currently crashes after the bonus round rather than moving on to + the next level, it writes 01 to 0xa187 which is probably ROM bank, however + banking the ROM in there results in the game crashing anyway, and looking + at the data I wonder if it is corrupt, there are odd patterns in FF fill + areas. + + (to access the bonus round take out the targets on the middle-left then hit + the ball into one of the portals at the top left) + + - dump color prom - some unknown DSW and inputs - hopper @@ -71,6 +80,9 @@ public: DECLARE_WRITE8_MEMBER(superwng_cointcnt2_w); DECLARE_WRITE8_MEMBER(superwng_hopper_w); DECLARE_READ8_MEMBER(superwng_sound_byte_r); + DECLARE_WRITE8_MEMBER(superwng_unk_a187_w); + DECLARE_WRITE8_MEMBER(superwng_unk_a185_w); + TILE_GET_INFO_MEMBER(get_bg_tile_info); TILE_GET_INFO_MEMBER(get_fg_tile_info); virtual void machine_start(); @@ -82,6 +94,16 @@ public: INTERRUPT_GEN_MEMBER(superwng_sound_nmi_assert); }; +WRITE8_MEMBER(superwng_state::superwng_unk_a187_w) +{ + membank("bank1")->set_entry(data&1); +} + +WRITE8_MEMBER(superwng_state::superwng_unk_a185_w) +{ +// printf("superwng_unk_a185_w %02x\n", data); +} + TILE_GET_INFO_MEMBER(superwng_state::get_bg_tile_info) { int code = m_videoram_bg[tile_index]; @@ -291,7 +313,8 @@ WRITE8_MEMBER(superwng_state::superwng_hopper_w) } static ADDRESS_MAP_START( superwng_map, AS_PROGRAM, 8, superwng_state ) - AM_RANGE(0x0000, 0x6fff) AM_ROM AM_WRITENOP + AM_RANGE(0x0000, 0x3fff) AM_ROM + AM_RANGE(0x4000, 0x6fff) AM_ROMBANK("bank1") AM_RANGE(0x7000, 0x7fff) AM_RAM AM_RANGE(0x8000, 0x83ff) AM_RAM_WRITE(superwng_bg_vram_w) AM_SHARE("videorabg") AM_RANGE(0x8400, 0x87ff) AM_RAM_WRITE(superwng_fg_vram_w) AM_SHARE("videorafg") @@ -309,9 +332,9 @@ static ADDRESS_MAP_START( superwng_map, AS_PROGRAM, 8, superwng_state ) AM_RANGE(0xa182, 0xa182) AM_WRITE(superwng_tilebank_w) AM_RANGE(0xa183, 0xa183) AM_WRITE(superwng_flip_screen_w) AM_RANGE(0xa184, 0xa184) AM_WRITE(superwng_cointcnt1_w) - AM_RANGE(0xa185, 0xa185) AM_WRITENOP // unknown, always(?) 0 + AM_RANGE(0xa185, 0xa185) AM_WRITE(superwng_unk_a185_w) // unknown, always(?) 0 AM_RANGE(0xa186, 0xa186) AM_WRITE(superwng_cointcnt2_w) - AM_RANGE(0xa187, 0xa187) AM_WRITENOP // unknown, always(?) 0 + AM_RANGE(0xa187, 0xa187) AM_WRITE(superwng_unk_a187_w) // unknown, always(?) 0 ADDRESS_MAP_END static ADDRESS_MAP_START( superwng_sound_map, AS_PROGRAM, 8, superwng_state ) @@ -433,6 +456,7 @@ void superwng_state::machine_start() save_item(NAME(m_tile_bank)); save_item(NAME(m_sound_byte)); save_item(NAME(m_nmi_enable)); + membank("bank1")->configure_entries(0, 2, memregion("maincpu")->base()+0x4000, 0x4000); } void superwng_state::machine_reset() @@ -483,8 +507,7 @@ ROM_START( superwng ) ROM_LOAD( "3.5m", 0x2000, 0x2000, CRC(3b08bd19) SHA1(2020e2835df86a6a279bbf9d013a489f0e32a4bd) ) ROM_LOAD( "4.5p", 0x4000, 0x2000, CRC(6a49746d) SHA1(f5cd5eb77f60972a3897243f9ee3d61aac0878fc) ) ROM_LOAD( "5.5r", 0x6000, 0x2000, CRC(ebd23487) SHA1(16e8faf989aa80dbf9934450ec4ba642a6f88c63) ) - - ROM_LOAD( "6.8s", 0x10000, 0x4000, CRC(774433e0) SHA1(82b10d797581c14914bcce320f2aa5d3fb1fba33) ) /* unknown */ + ROM_LOAD( "6.8s", 0x4000, 0x4000, BAD_DUMP CRC(774433e0) SHA1(82b10d797581c14914bcce320f2aa5d3fb1fba33) ) // banked but probably bad.. ROM_REGION( 0x10000, "audiocpu", 0 ) ROM_LOAD( "1.1a", 0x0000, 0x2000, CRC(a70aa39e) SHA1(b03de65d7bd020eb77495997128dce5ccbdbefac) ) |