looking at 'Super WIng' (pinball game) based on a crash report at MARP.

there is an unused ROM, I think it contains a 2nd stage layout for the game, and appears to be banked in after you finish a bonus round, however, even hooking it up as a banked rom the game crashes, and the data in the ROM looks suspicious (there are flipped bits at fairly regular offsets even in 0xff fill areas)  It could be the bank hookup is wrong, but the data concerns me enough to mark the rom as BAD_DUMP.  We need another PCB to dump the Colour PROM anyway, although we've only seen it once.
This commit is contained in:
mamehaze 2015-03-11 16:00:55 +00:00
parent 31a96e35e6
commit 67cd025b03

View File

@ -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) )