mirror of
https://github.com/holub/mame
synced 2025-06-04 11:56:28 +03:00
S23: hooked up serial comms between subcpu and I/O board.
New games marked as GAME_NOT_WORKING ------------------------------------ Panic Park (PNP2 Ver. A) [Guru] If anyone wants to mess with this driver, please feel free. A few things that could use attention: - Palette RAM is definitely not right - The text layer isn't correct - The I/O board now recieves a startup packet from the subcpu but doesn't send anything back, which in turn means the subcpu won't let the MIPS advance. What else does the I/O board want? It's a tiny program, shouldn't be too hard to work out. - All the games download a giant mass of binary data through the 3D FIFO on startup. Assuming it's a DSP program, identifying what kind it's for would be nice.
This commit is contained in:
parent
4c4564753a
commit
2f0739cb34
@ -38,6 +38,7 @@
|
||||
|
||||
- Serial number data is at offset 0x201 in the BIOS. Until the games are running
|
||||
and displaying it I'm not going to meddle with it though.
|
||||
|
||||
*/
|
||||
|
||||
/*
|
||||
@ -52,7 +53,7 @@ This document covers all the known Namco System 23 / Super System 23 games, incl
|
||||
*Final Furlong Namco, 1997 System 22.5/Gorgon
|
||||
Gunmen Wars Namco, 1998 System 23 [not dumped, but have]
|
||||
Motocross Go! Namco, 1997 System 23
|
||||
*Panic Park Namco, 1998 System 23
|
||||
Panic Park Namco, 1998 System 23
|
||||
Rapid River Namco, 1997 System 22.5/Gorgon
|
||||
Time Crisis II Namco, 1997 System 23
|
||||
*Underground King Namco, 1998 System 23
|
||||
@ -1077,14 +1078,12 @@ static READ16_HANDLER( sharedram_sub_r )
|
||||
return shared16[BYTE_XOR_BE(offset)];
|
||||
}
|
||||
|
||||
#if 1
|
||||
static WRITE16_HANDLER(cause_sync_w)
|
||||
{
|
||||
UINT16 *shared16 = (UINT16 *)namcos23_shared_ram;
|
||||
|
||||
shared16[BYTE_XOR_BE(0x4052/2)] = 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
/* H8/3002 MCU stuff */
|
||||
static ADDRESS_MAP_START( s23h8rwmap, ADDRESS_SPACE_PROGRAM, 16 )
|
||||
@ -1214,6 +1213,32 @@ static WRITE8_HANDLER( s23_mcu_settings_w )
|
||||
s23_setstate ^= 1;
|
||||
}
|
||||
|
||||
static UINT8 maintoio[16], mi_rd, mi_wr;
|
||||
static UINT8 iotomain[16], im_rd, im_wr;
|
||||
|
||||
static READ8_HANDLER( s23_mcu_iob_r )
|
||||
{
|
||||
UINT8 ret = iotomain[im_rd];
|
||||
|
||||
im_rd++;
|
||||
im_rd &= 0xf;
|
||||
|
||||
if (im_rd == im_wr)
|
||||
{
|
||||
cputag_set_input_line(space->machine, "audiocpu", H8_SCI_0_RX, CLEAR_LINE);
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static WRITE8_HANDLER( s23_mcu_iob_w )
|
||||
{
|
||||
maintoio[mi_wr++] = data;
|
||||
mi_wr &= 0xf;
|
||||
|
||||
cputag_set_input_line(space->machine, "ioboard", H8_SCI_0_RX, ASSERT_LINE);
|
||||
}
|
||||
|
||||
static INPUT_PORTS_START( ss23 )
|
||||
PORT_START("H8PORT")
|
||||
INPUT_PORTS_END
|
||||
@ -1223,13 +1248,50 @@ static ADDRESS_MAP_START( s23h8iomap, ADDRESS_SPACE_IO, 8 )
|
||||
AM_RANGE(H8_PORT_8, H8_PORT_8) AM_READ( s23_mcu_p8_r ) AM_WRITENOP
|
||||
AM_RANGE(H8_PORT_A, H8_PORT_A) AM_READWRITE( s23_mcu_pa_r, s23_mcu_pa_w )
|
||||
AM_RANGE(H8_PORT_B, H8_PORT_B) AM_READWRITE( s23_mcu_portB_r, s23_mcu_portB_w )
|
||||
AM_RANGE(H8_SERIAL_1, H8_SERIAL_1) AM_READ( s23_mcu_rtc_r ) AM_WRITE( s23_mcu_settings_w )
|
||||
AM_RANGE(H8_SERIAL_0, H8_SERIAL_0) AM_READWRITE( s23_mcu_iob_r, s23_mcu_iob_w )
|
||||
AM_RANGE(H8_SERIAL_1, H8_SERIAL_1) AM_READWRITE( s23_mcu_rtc_r, s23_mcu_settings_w )
|
||||
AM_RANGE(H8_ADC_0_H, H8_ADC_0_L) AM_NOP
|
||||
AM_RANGE(H8_ADC_1_H, H8_ADC_1_L) AM_NOP
|
||||
AM_RANGE(H8_ADC_2_H, H8_ADC_2_L) AM_NOP
|
||||
AM_RANGE(H8_ADC_3_H, H8_ADC_3_L) AM_NOP
|
||||
ADDRESS_MAP_END
|
||||
|
||||
// version without serial hookup to I/O board for games where the PIC isn't dumped
|
||||
static ADDRESS_MAP_START( s23h8ionoiobmap, ADDRESS_SPACE_IO, 8 )
|
||||
AM_RANGE(H8_PORT_7, H8_PORT_7) AM_READ_PORT( "H8PORT" )
|
||||
AM_RANGE(H8_PORT_8, H8_PORT_8) AM_READ( s23_mcu_p8_r ) AM_WRITENOP
|
||||
AM_RANGE(H8_PORT_A, H8_PORT_A) AM_READWRITE( s23_mcu_pa_r, s23_mcu_pa_w )
|
||||
AM_RANGE(H8_PORT_B, H8_PORT_B) AM_READWRITE( s23_mcu_portB_r, s23_mcu_portB_w )
|
||||
AM_RANGE(H8_SERIAL_1, H8_SERIAL_1) AM_READWRITE( s23_mcu_rtc_r, s23_mcu_settings_w )
|
||||
AM_RANGE(H8_ADC_0_H, H8_ADC_0_L) AM_NOP
|
||||
AM_RANGE(H8_ADC_1_H, H8_ADC_1_L) AM_NOP
|
||||
AM_RANGE(H8_ADC_2_H, H8_ADC_2_L) AM_NOP
|
||||
AM_RANGE(H8_ADC_3_H, H8_ADC_3_L) AM_NOP
|
||||
ADDRESS_MAP_END
|
||||
|
||||
|
||||
static READ8_HANDLER( s23_iob_mcu_r )
|
||||
{
|
||||
UINT8 ret = maintoio[mi_rd];
|
||||
|
||||
mi_rd++;
|
||||
mi_rd &= 0xf;
|
||||
|
||||
if (mi_rd == mi_wr)
|
||||
{
|
||||
cputag_set_input_line(space->machine, "ioboard", H8_SCI_0_RX, CLEAR_LINE);
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static WRITE8_HANDLER( s23_iob_mcu_w )
|
||||
{
|
||||
iotomain[im_wr++] = data;
|
||||
im_wr &= 0xf;
|
||||
|
||||
cputag_set_input_line(space->machine, "audiocpu", H8_SCI_0_RX, ASSERT_LINE);
|
||||
}
|
||||
|
||||
/* H8/3334 (Namco C78) I/O board MCU */
|
||||
static ADDRESS_MAP_START( s23iobrdmap, ADDRESS_SPACE_PROGRAM, 8 )
|
||||
@ -1238,10 +1300,12 @@ static ADDRESS_MAP_START( s23iobrdmap, ADDRESS_SPACE_PROGRAM, 8 )
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( s23iobrdiomap, ADDRESS_SPACE_IO, 8 )
|
||||
AM_RANGE(H8_SERIAL_0, H8_SERIAL_0) AM_READWRITE( s23_iob_mcu_r, s23_iob_mcu_w )
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static DRIVER_INIT(ss23)
|
||||
{
|
||||
mi_rd = mi_wr = im_rd = im_wr = 0;
|
||||
}
|
||||
|
||||
static const gfx_layout namcos23_cg_layout =
|
||||
@ -1303,7 +1367,7 @@ static MACHINE_DRIVER_START( gorgon )
|
||||
|
||||
MDRV_CPU_ADD("audiocpu", H83002, 14745600 )
|
||||
MDRV_CPU_PROGRAM_MAP( s23h8rwmap, 0 )
|
||||
MDRV_CPU_IO_MAP( s23h8iomap, 0 )
|
||||
MDRV_CPU_IO_MAP( s23h8ionoiobmap, 0 )
|
||||
MDRV_CPU_VBLANK_INT("screen", irq1_line_pulse)
|
||||
|
||||
MDRV_QUANTUM_TIME(HZ(60000))
|
||||
@ -1347,8 +1411,6 @@ static MACHINE_DRIVER_START( s23 )
|
||||
MDRV_CPU_ADD("ioboard", H83334, 14745600 )
|
||||
MDRV_CPU_PROGRAM_MAP( s23iobrdmap, 0 )
|
||||
MDRV_CPU_IO_MAP( s23iobrdiomap, 0 )
|
||||
MDRV_CPU_VBLANK_INT("screen", irq1_line_pulse)
|
||||
|
||||
|
||||
MDRV_QUANTUM_TIME(HZ(60000))
|
||||
|
||||
@ -1386,7 +1448,7 @@ static MACHINE_DRIVER_START( ss23 )
|
||||
|
||||
MDRV_CPU_ADD("audiocpu", H83002, 14745600 )
|
||||
MDRV_CPU_PROGRAM_MAP( s23h8rwmap, 0 )
|
||||
MDRV_CPU_IO_MAP( s23h8iomap, 0 )
|
||||
MDRV_CPU_IO_MAP( s23h8ionoiobmap, 0 )
|
||||
MDRV_CPU_VBLANK_INT("screen", irq1_line_pulse)
|
||||
|
||||
MDRV_QUANTUM_TIME(HZ(60000))
|
||||
@ -1723,11 +1785,52 @@ ROM_START( finfrl2j )
|
||||
ROM_LOAD( "ffs1waveh.2a", 0x800000, 0x800000, CRC(178e8bd3) SHA1(8ab1a97003914f70b09e96c5924f3a839fe634c7) )
|
||||
ROM_END
|
||||
|
||||
ROM_START( panicprk )
|
||||
ROM_REGION32_BE( 0x400000, "user1", 0 ) /* 4 megs for main R4650 code */
|
||||
ROM_LOAD16_BYTE( "pnp2ver-a.ic2", 0x000000, 0x200000, CRC(cd528597) SHA1(cf390e78228eb10d5f50ff7e7e37063a2d87f469) )
|
||||
ROM_LOAD16_BYTE( "pnp2ver-a.ic1", 0x000001, 0x200000, CRC(80fea853) SHA1(b18003bde060ebb3c892a6d7fa4abf868cadc777) )
|
||||
|
||||
ROM_REGION( 0x80000, "audiocpu", 0 ) /* Hitachi H8/3002 MCU code */
|
||||
ROM_LOAD16_WORD_SWAP( "pnp2ver-a.ic3", 0x000000, 0x080000, CRC(fe4bc6f4) SHA1(2114dc4bc63d589e6c3b26a73dbc60924f3b1765) )
|
||||
|
||||
ROM_REGION( 0x2000000, "sprite", 0 ) /* sprite? tilemap? tiles */
|
||||
ROM_LOAD16_BYTE( "pnp1mtal.2h", 0x000000, 0x800000, CRC(6490faaa) SHA1(03443746009b434e5d4074ea6314910418907360) )
|
||||
ROM_LOAD16_BYTE( "pnp1mtah.2j", 0x000001, 0x800000, CRC(37addddd) SHA1(3032989653304417df80606bc3fde6e9425d8cbb) )
|
||||
|
||||
ROM_REGION( 0x4000000, "textile", 0 ) /* texture tiles */
|
||||
ROM_LOAD( "pnp1cguu.5f", 0x000000, 0x800000, CRC(cd64f57f) SHA1(8780270298e0823db1acbbf79396788df0c3c19c) )
|
||||
ROM_LOAD( "pnp1cgum.4j", 0x800000, 0x800000, CRC(206217ca) SHA1(9c095bba7764f3405c3fab10513b9b78981ec44d) )
|
||||
ROM_LOAD( "pnp1cgll.4m", 0x1000000, 0x800000, CRC(d03932cf) SHA1(49240e44923cc6e815e9457b6290fd18466658af) )
|
||||
ROM_LOAD( "pnp1cglm.5k", 0x180000, 0x800000, CRC(abf4ccf2) SHA1(3848e26d0ba6c872bbc6d5e0eb23a9d4b34152d5) )
|
||||
ROM_LOAD( "pnp1cguu.4f", 0x2000000, 0x800000, CRC(cd64f57f) SHA1(8780270298e0823db1acbbf79396788df0c3c19c) )
|
||||
ROM_LOAD( "pnp1cgum.5j", 0x2800000, 0x800000, CRC(206217ca) SHA1(9c095bba7764f3405c3fab10513b9b78981ec44d) )
|
||||
ROM_LOAD( "pnp1cgll.5m", 0x3000000, 0x800000, CRC(d03932cf) SHA1(49240e44923cc6e815e9457b6290fd18466658af) )
|
||||
ROM_LOAD( "pnp1cglm.4k", 0x3800000, 0x800000, CRC(abf4ccf2) SHA1(3848e26d0ba6c872bbc6d5e0eb23a9d4b34152d5) )
|
||||
|
||||
ROM_REGION( 0x800000, "textilemap", 0 ) /* texture tilemap */
|
||||
ROM_LOAD( "pnp1ccrl.7f", 0x000000, 0x200000, CRC(b7bc43c2) SHA1(f4b470540194486ca6822f438fc1d4700cfb2ab1) )
|
||||
ROM_LOAD( "pnp1ccrh.7e", 0x200000, 0x200000, CRC(caaf1b73) SHA1(b436992817ab4e4dad05e7429eb102d4fb57fa6a) )
|
||||
ROM_LOAD( "pnp1ccrl.7m", 0x400000, 0x200000, CRC(b7bc43c2) SHA1(f4b470540194486ca6822f438fc1d4700cfb2ab1) )
|
||||
ROM_LOAD( "pnp1ccrh.7k", 0x600000, 0x200000, CRC(caaf1b73) SHA1(b436992817ab4e4dad05e7429eb102d4fb57fa6a) )
|
||||
|
||||
ROM_REGION32_LE( 0x2000000, "pointrom", 0 ) /* 3D model data */
|
||||
ROM_LOAD32_WORD( "pnp1pt0l.7c", 0x000000, 0x400000, CRC(26af5fa1) SHA1(12fcf98c2a59643e0fdfdd7186f9f16baf54a9cf) )
|
||||
ROM_LOAD32_WORD( "pnp1pt0h.7a", 0x000002, 0x400000, CRC(43fc2246) SHA1(301d321cd4a01ebd7ccfa6f295d6c3daf0a19efe) )
|
||||
ROM_LOAD32_WORD( "pnp1pt1l.5c", 0x800000, 0x400000, CRC(15c6f236) SHA1(e8c393359a91cdce6e9110a48c0a80708f8fc132) )
|
||||
ROM_LOAD32_WORD( "pnp1pt1h.5a", 0x800002, 0x400000, CRC(1ff470c0) SHA1(ca8fad90743589744939d681b0ce94f368337b3f) )
|
||||
|
||||
ROM_REGION( 0x1000000, "c352", 0 ) /* C352 PCM samples */
|
||||
ROM_LOAD( "pnp1wavel.2c", 0x000000, 0x800000, CRC(35c6a9bd) SHA1(4b56fdc37525c15e57d93091e6609d6a6905fc5c) )
|
||||
ROM_LOAD( "pnp1waveh.2a", 0x800000, 0x800000, CRC(6fa1826a) SHA1(20a5af49e65ae2bc57c016b5cd9bafa5a5220d35) )
|
||||
ROM_END
|
||||
|
||||
|
||||
/* Games */
|
||||
GAME( 1997, rapidrvr, 0, gorgon, ss23, ss23, ROT0, "Namco", "Rapid River (RD3 Ver. C)", GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION | GAME_IMPERFECT_SOUND )
|
||||
GAME( 1997, motoxgo, 0, s23, ss23, ss23, ROT0, "Namco", "Motocross Go! (MG3 Ver. A)", GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION | GAME_IMPERFECT_SOUND )
|
||||
GAME( 1997, timecrs2, 0, s23, ss23, ss23, ROT0, "Namco", "Time Crisis 2 (TSS3 Ver. B)", GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION | GAME_IMPERFECT_SOUND )
|
||||
GAME( 1997, timcrs2b, timecrs2, s23, ss23, ss23, ROT0, "Namco", "Time Crisis 2 (TSS2 Ver. B)", GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION | GAME_IMPERFECT_SOUND )
|
||||
GAME( 1998, panicprk, 0, ss23, ss23, ss23, ROT0, "Namco", "Panic Park (PNP2 Ver. A)", GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION | GAME_IMPERFECT_SOUND )
|
||||
GAME( 1999, 500gp, 0, ss23, ss23, ss23, ROT0, "Namco", "500GP", GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION | GAME_IMPERFECT_SOUND )
|
||||
GAME( 1999, finfurl2, 0, ss23, ss23, ss23, ROT0, "Namco", "Final Furlong 2 (World)", GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION | GAME_IMPERFECT_SOUND )
|
||||
GAME( 1999, finfrl2j, finfurl2, ss23, ss23, ss23, ROT0, "Namco", "Final Furlong 2 (Japan)", GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION | GAME_IMPERFECT_SOUND )
|
||||
|
Loading…
Reference in New Issue
Block a user