summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/superwng.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/superwng.c')
-rw-r--r--src/mame/drivers/superwng.c39
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) )