diff --git a/src/mame/drivers/namcos23.c b/src/mame/drivers/namcos23.c index 2c65de148dd..52de99c7dc8 100644 --- a/src/mame/drivers/namcos23.c +++ b/src/mame/drivers/namcos23.c @@ -23,9 +23,7 @@ TODO: - Palette is not right. - - H8/3002 now communicates with the H8/3334 on the I/O board, but it's not reliable yet. - - - Hook up actual inputs (?) via the 2 serial latches at d00004 and d00006. + - Hook up gun inputs (?) via the 2 serial latches at d00004 and d00006. Works like this: write to d00004, then read d00004 12 times. Ditto at d00006. This gives 24 bits of inputs (?) from the I/O board (?) or guns (?) @@ -945,6 +943,11 @@ static VIDEO_UPDATE( ss23 ) return 0; } +static READ32_HANDLER( s23_txtchar_r ) +{ + return namcos23_charram[offset]; +} + static WRITE32_HANDLER( s23_txtchar_w ) { COMBINE_DATA(&namcos23_charram[offset]); @@ -1058,21 +1061,22 @@ static READ32_HANDLER( gorgon_magic_r ) static ADDRESS_MAP_START( gorgon_map, ADDRESS_SPACE_PROGRAM, 32 ) AM_RANGE(0x00000000, 0x003fffff) AM_RAM - AM_RANGE(0x01000000, 0x0100003f) AM_READ( gorgon_magic_r ) + AM_RANGE(0x01000000, 0x010000ff) AM_READ( gorgon_magic_r ) AM_RANGE(0x02000000, 0x02000003) AM_READ( gorgon_vbl_r ) AM_RANGE(0x04400000, 0x0440ffff) AM_RAM AM_BASE(&namcos23_shared_ram) AM_RANGE(0x04c3ff08, 0x04c3ff0b) AM_WRITE( s23_mcuen_w ) AM_RANGE(0x04c3ff0c, 0x04c3ff0f) AM_RAM // 3d FIFO - AM_RANGE(0x06110000, 0x0613ffff) AM_READ(namcos23_paletteram_r) AM_WRITE(namcos23_paletteram_w) AM_BASE_GENERIC(paletteram) + AM_RANGE(0x06108000, 0x061087ff) AM_RAM // GAMMA (C404-3S) + AM_RANGE(0x06110000, 0x0613ffff) AM_READWRITE(namcos23_paletteram_r, namcos23_paletteram_w) AM_BASE_GENERIC(paletteram) + AM_RANGE(0x06400000, 0x06403fff) AM_READWRITE( s23_txtchar_r, s23_txtchar_w ) AM_BASE(&namcos23_charram) // text layer characters + AM_RANGE(0x06404000, 0x0641dfff) AM_RAM + AM_RANGE(0x0641e000, 0x0641ffff) AM_READWRITE(namcos23_textram_r, namcos23_textram_w) AM_BASE(&namcos23_textram) - AM_RANGE(0x06400000, 0x06403fff) AM_WRITE( s23_txtchar_w ) AM_BASE(&namcos23_charram) // text layer characters - AM_RANGE(0x0641e000, 0x0641ffff) AM_READ(namcos23_textram_r) AM_WRITE(namcos23_textram_w) AM_BASE(&namcos23_textram) + AM_RANGE(0x08000000, 0x087fffff) AM_ROM AM_REGION("data", 0) // data ROMs - AM_RANGE(0x08000000, 0x087fffff) AM_ROM AM_REGION("data", 0) // data ROMs? - - AM_RANGE(0x0d000000, 0x0d000007) AM_READ(sysctl_stat_r) + AM_RANGE(0x0d000000, 0x0d000007) AM_READ(sysctl_stat_r) // write for LEDs AM_RANGE(0x0fc00000, 0x0fffffff) AM_WRITENOP AM_ROM AM_REGION("user1", 0) AM_RANGE(0x1fc00000, 0x1fffffff) AM_WRITENOP AM_ROM AM_REGION("user1", 0) ADDRESS_MAP_END @@ -1083,12 +1087,11 @@ static ADDRESS_MAP_START( ss23_map, ADDRESS_SPACE_PROGRAM, 32 ) AM_RANGE(0x04400000, 0x0440ffff) AM_RAM AM_BASE(&namcos23_shared_ram) AM_RANGE(0x04c3ff08, 0x04c3ff0b) AM_WRITE( s23_mcuen_w ) AM_RANGE(0x04c3ff0c, 0x04c3ff0f) AM_RAM // 3d FIFO - AM_RANGE(0x06800000, 0x06800fff) AM_RAM // text layer palette - AM_RANGE(0x06800000, 0x06807fff) AM_WRITE( s23_txtchar_w ) AM_BASE(&namcos23_charram) // text layer characters + AM_RANGE(0x06800000, 0x06807fff) AM_READWRITE( s23_txtchar_r, s23_txtchar_w ) AM_BASE(&namcos23_charram) // text layer characters (shown as CGRAM in POST) AM_RANGE(0x06804000, 0x0681dfff) AM_RAM - AM_RANGE(0x0681e000, 0x0681ffff) AM_READ(namcos23_textram_r) AM_WRITE(namcos23_textram_w) AM_BASE(&namcos23_textram) - AM_RANGE(0x06a08000, 0x06a0ffff) AM_RAM //gamma? - AM_RANGE(0x06a10000, 0x06a3ffff) AM_READ(namcos23_paletteram_r) AM_WRITE(namcos23_paletteram_w) AM_BASE_GENERIC(paletteram) + AM_RANGE(0x0681e000, 0x0681ffff) AM_READWRITE(namcos23_textram_r, namcos23_textram_w) AM_BASE(&namcos23_textram) + AM_RANGE(0x06a08000, 0x06a0ffff) AM_RAM // GAMMA (C404) + AM_RANGE(0x06a10000, 0x06a3ffff) AM_READWRITE(namcos23_paletteram_r, namcos23_paletteram_w) AM_BASE_GENERIC(paletteram) AM_RANGE(0x06820008, 0x0682000f) AM_READ( ss23_vstat_r ) // vblank status? AM_RANGE(0x08000000, 0x08017fff) AM_RAM AM_RANGE(0x0d000000, 0x0d000007) AM_READ(sysctl_stat_r) AM_WRITENOP @@ -1576,7 +1579,7 @@ ROM_START( rapidrvr ) ROM_REGION( 0x80000, "audiocpu", 0 ) /* Hitachi H8/3002 MCU code */ ROM_LOAD16_WORD_SWAP( "rd3verc.ic3", 0x000000, 0x080000, CRC(6e26fbaf) SHA1(4ab6637d22f0d26f7e1d10e9c80059c56f64303d) ) - ROM_REGION32_BE( 0x800000, "data", 0 ) /* sprite? tilemap? tiles */ + ROM_REGION32_BE( 0x800000, "data", 0 ) /* data */ ROM_LOAD16_BYTE( "rd1mtal.1j", 0x000001, 0x400000, CRC(8f0efa86) SHA1(9953461c258f2a96be275a7b18d6518ddfac3860) ) ROM_LOAD16_BYTE( "rd1mtah.3j", 0x000000, 0x400000, CRC(d8fa0f3d) SHA1(0d5bdb3a2e7be1dffe11b74baa2c10bfe011ae92) ) @@ -1635,7 +1638,7 @@ ROM_START( finlflng ) ROM_REGION( 0x80000, "audiocpu", 0 ) /* Hitachi H8/3002 MCU code */ ROM_LOAD16_WORD_SWAP( "ff2vera.ic3", 0x000000, 0x080000, CRC(ab681078) SHA1(ec8367404458a54893ab6bea29c8a2ba3272b816) ) - ROM_REGION32_BE( 0x800000, "data", 0 ) /* sprite? tilemap? tiles */ + ROM_REGION32_BE( 0x800000, "data", 0 ) /* data */ ROM_LOAD16_BYTE( "ff2mtal.1j", 0x000001, 0x400000, CRC(ed1a5bf2) SHA1(bd05388a125a0201a41af95fb2aa5fe1c8b0f270) ) ROM_LOAD16_BYTE( "ff2mtah.3j", 0x000000, 0x400000, CRC(161003cd) SHA1(04409333a4776b17700fc6d1aa06a39560132e03) )