mirror of
https://github.com/holub/mame
synced 2025-04-22 16:31:49 +03:00
Merge pull request #2535 from DavidHaywood/250717
add HD647180X MCU dumps to Whoopee and Ghox [Team Caps0ff]
This commit is contained in:
commit
6217982ffd
@ -313,12 +313,12 @@ Graphics Custom 208pin QFP:
|
||||
Game status:
|
||||
|
||||
Teki Paki Working. MCU type is a Hitachi HD647180.
|
||||
Ghox Working, but no sound. Missing sound MCU dump. It's a QFP80 Hitachi HD647180.
|
||||
Ghox Working, MCU type is a Hitachi HD647180.
|
||||
Dogyuun Working. MCU type is a NEC V25. Chip is a PLCC94 stamped 'TS-002-MACH'.*
|
||||
Knuckle Bash Working. MCU type is a NEC V25. Chip is a PLCC94 stamped 'TS-004-DASH'.*
|
||||
Truxton 2 Working.
|
||||
Pipi & Bibis Working.
|
||||
Pipi & Bibis (Teki Paki h/w) Working, but no sound. Missing sound MCU dump. It's a Hitachi HD647180.
|
||||
Pipi & Bibis (Teki Paki h/w) Working, MCU type is a Hitachi HD647180.
|
||||
Pipi & Bibis bootleg Working. One unknown ROM.
|
||||
FixEight Working. MCU type is a NEC V25. Chip is a PLCC94 stamped 'TS-001-TURBO'
|
||||
FixEight bootleg Working. One unknown ROM (same as pipibibs bootleg one). Region hardcoded to Korea (@ $4d8)
|
||||
@ -691,83 +691,6 @@ READ16_MEMBER(toaplan2_state::ghox_p2_h_analog_r)
|
||||
return value;
|
||||
}
|
||||
|
||||
|
||||
READ16_MEMBER(toaplan2_state::ghox_mcu_r)
|
||||
{
|
||||
return 0xff;
|
||||
}
|
||||
|
||||
|
||||
WRITE16_MEMBER(toaplan2_state::ghox_mcu_w)
|
||||
{
|
||||
if (ACCESSING_BITS_0_7)
|
||||
{
|
||||
data &= 0xff;
|
||||
m_mcu_data = data;
|
||||
if ((data >= 0xd0) && (data < 0xe0))
|
||||
{
|
||||
offset = ((data & 0x0f) * 2) + (0x38 / 2);
|
||||
m_shared_ram16[offset ] = 0x0005; // Return address for
|
||||
m_shared_ram16[offset-1] = 0x0056; // RTS instruction
|
||||
}
|
||||
else
|
||||
{
|
||||
logerror("PC:%08x Writing %08x to HD647180 cpu shared ram status port\n", space.device().safe_pcbase(), m_mcu_data);
|
||||
}
|
||||
m_shared_ram16[0x56 / 2] = 0x004e; // Return a RTS instruction
|
||||
m_shared_ram16[0x58 / 2] = 0x0075;
|
||||
|
||||
if (data == 0xd3)
|
||||
{
|
||||
m_shared_ram16[0x56 / 2] = 0x003a; // move.w d1,d5
|
||||
m_shared_ram16[0x58 / 2] = 0x0001;
|
||||
m_shared_ram16[0x5a / 2] = 0x0008; // bclr.b #0,d5
|
||||
m_shared_ram16[0x5c / 2] = 0x0085;
|
||||
m_shared_ram16[0x5e / 2] = 0x0000;
|
||||
m_shared_ram16[0x60 / 2] = 0x0000;
|
||||
m_shared_ram16[0x62 / 2] = 0x00cb; // muls.w #3,d5
|
||||
m_shared_ram16[0x64 / 2] = 0x00fc;
|
||||
m_shared_ram16[0x66 / 2] = 0x0000;
|
||||
m_shared_ram16[0x68 / 2] = 0x0003;
|
||||
m_shared_ram16[0x6a / 2] = 0x0090; // sub.w d5,d0
|
||||
m_shared_ram16[0x6c / 2] = 0x0045;
|
||||
m_shared_ram16[0x6e / 2] = 0x00e5; // lsl.b #2,d1
|
||||
m_shared_ram16[0x70 / 2] = 0x0009;
|
||||
m_shared_ram16[0x72 / 2] = 0x004e; // rts
|
||||
m_shared_ram16[0x74 / 2] = 0x0075;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
READ16_MEMBER(toaplan2_state::ghox_shared_ram_r)
|
||||
{
|
||||
// Ghox 68K reads data from MCU shared RAM and writes it to main RAM.
|
||||
// It then subroutine jumps to main RAM and executes this code.
|
||||
// Here, we're just returning a RTS instruction for now.
|
||||
// See above ghox_mcu_w routine.
|
||||
|
||||
// Offset $56 and $58 are accessed from around PC:0F814
|
||||
// Offset $38 and $36 are accessed from around PC:0DA7C
|
||||
// Offset $3c and $3a are accessed from around PC:02E3C
|
||||
// Offset $40 and $3E are accessed from around PC:103EE
|
||||
// Offset $44 and $42 are accessed from around PC:0FB52
|
||||
// Offset $48 and $46 are accessed from around PC:06776
|
||||
|
||||
|
||||
return m_shared_ram16[offset] & 0xff;
|
||||
}
|
||||
|
||||
|
||||
WRITE16_MEMBER(toaplan2_state::ghox_shared_ram_w)
|
||||
{
|
||||
if (ACCESSING_BITS_0_7)
|
||||
{
|
||||
m_shared_ram16[offset] = data & 0xff;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
WRITE16_MEMBER(toaplan2_state::fixeight_subcpu_ctrl_w)
|
||||
{
|
||||
m_audiocpu->set_input_line(INPUT_LINE_RESET, (data & m_v25_reset_line) ? CLEAR_LINE : ASSERT_LINE);
|
||||
@ -994,13 +917,7 @@ static ADDRESS_MAP_START( ghox_68k_mem, AS_PROGRAM, 16, toaplan2_state )
|
||||
AM_RANGE(0x0c0000, 0x0c0fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
|
||||
AM_RANGE(0x100000, 0x100001) AM_READ(ghox_p1_h_analog_r)
|
||||
AM_RANGE(0x140000, 0x14000d) AM_DEVREADWRITE("gp9001", gp9001vdp_device, gp9001_vdp_r, gp9001_vdp_w)
|
||||
AM_RANGE(0x180000, 0x180001) AM_READWRITE(ghox_mcu_r, ghox_mcu_w) // really part of shared RAM
|
||||
AM_RANGE(0x180006, 0x180007) AM_READ_PORT("DSWA")
|
||||
AM_RANGE(0x180008, 0x180009) AM_READ_PORT("DSWB")
|
||||
AM_RANGE(0x180010, 0x180011) AM_READ_PORT("SYS")
|
||||
AM_RANGE(0x18000c, 0x18000d) AM_READ_PORT("IN1")
|
||||
AM_RANGE(0x18000e, 0x18000f) AM_READ_PORT("IN2")
|
||||
AM_RANGE(0x180500, 0x180fff) AM_READWRITE(ghox_shared_ram_r, ghox_shared_ram_w) AM_SHARE("shared_ram16")
|
||||
AM_RANGE(0x180000, 0x180fff) AM_READWRITE(shared_ram_r, shared_ram_w)
|
||||
AM_RANGE(0x181000, 0x181001) AM_WRITE(toaplan2_coin_word_w)
|
||||
AM_RANGE(0x18100c, 0x18100d) AM_READ_PORT("JMPR")
|
||||
ADDRESS_MAP_END
|
||||
@ -1573,6 +1490,25 @@ static ADDRESS_MAP_START( hd647180_io_map, AS_IO, 8, toaplan2_state )
|
||||
ADDRESS_MAP_END
|
||||
|
||||
|
||||
static ADDRESS_MAP_START( ghox_hd647180_mem_map, AS_PROGRAM, 8, toaplan2_state )
|
||||
AM_RANGE(0x00000, 0x03fff) AM_ROM /* Internal 16k byte ROM */
|
||||
AM_RANGE(0x0fe00, 0x0ffff) AM_RAM /* Internal 512 byte RAM */
|
||||
|
||||
AM_RANGE(0x3fe00, 0x3ffff) AM_RAM /* RAM (is this actually just internal RAM getting mapped badly?) */
|
||||
|
||||
AM_RANGE(0x40000, 0x4f7ff) AM_RAM AM_SHARE("shared_ram")
|
||||
|
||||
AM_RANGE(0x80002, 0x80002) AM_READ_PORT("DSWA")
|
||||
AM_RANGE(0x80004, 0x80004) AM_READ_PORT("DSWB")
|
||||
AM_RANGE(0x80006, 0x80006) AM_READNOP // nothing?
|
||||
AM_RANGE(0x80008, 0x80008) AM_READ_PORT("IN1")
|
||||
AM_RANGE(0x8000a, 0x8000a) AM_READ_PORT("IN2")
|
||||
|
||||
AM_RANGE(0x8000c, 0x8000e) AM_READ_PORT("SYS")
|
||||
|
||||
AM_RANGE(0x8000e, 0x8000f) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
/*****************************************************************************
|
||||
Input Port definitions
|
||||
The following commands are available when the Invulnerability dipswitch
|
||||
@ -3292,6 +3228,12 @@ static MACHINE_CONFIG_START( tekipaki )
|
||||
MCFG_CPU_ADD("maincpu", M68000, XTAL_10MHz) /* 10MHz Oscillator */
|
||||
MCFG_CPU_PROGRAM_MAP(tekipaki_68k_mem)
|
||||
|
||||
MCFG_CPU_ADD("audiocpu", Z180, XTAL_10MHz) /* HD647180 CPU actually */
|
||||
MCFG_CPU_PROGRAM_MAP(hd647180_mem_map)
|
||||
MCFG_CPU_IO_MAP(hd647180_io_map)
|
||||
|
||||
MCFG_QUANTUM_TIME(attotime::from_hz(600))
|
||||
|
||||
MCFG_MACHINE_RESET_OVERRIDE(toaplan2_state,toaplan2)
|
||||
|
||||
/* video hardware */
|
||||
@ -3317,22 +3259,6 @@ static MACHINE_CONFIG_START( tekipaki )
|
||||
/* sound hardware */
|
||||
MCFG_SPEAKER_STANDARD_MONO("mono")
|
||||
|
||||
MCFG_SOUND_ADD("ymsnd", YM3812, XTAL_27MHz/8)
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
|
||||
|
||||
static MACHINE_CONFIG_DERIVED( tekipaki_mcu, tekipaki )
|
||||
|
||||
MCFG_CPU_ADD("audiocpu", Z180, XTAL_10MHz) /* HD647180 CPU actually */
|
||||
MCFG_CPU_PROGRAM_MAP(hd647180_mem_map)
|
||||
MCFG_CPU_IO_MAP(hd647180_io_map)
|
||||
|
||||
MCFG_QUANTUM_TIME(attotime::from_hz(600)) // GUESSED
|
||||
|
||||
MCFG_DEVICE_REMOVE("ymsnd")
|
||||
|
||||
MCFG_SOUND_ADD("ymsnd", YM3812, XTAL_27MHz/8)
|
||||
MCFG_YM3812_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
|
||||
@ -3344,10 +3270,10 @@ static MACHINE_CONFIG_START( ghox )
|
||||
MCFG_CPU_ADD("maincpu", M68000, XTAL_10MHz) /* verified on pcb */
|
||||
MCFG_CPU_PROGRAM_MAP(ghox_68k_mem)
|
||||
|
||||
#ifdef USE_HD64x180
|
||||
MCFG_CPU_ADD("audiocpu", Z180, XTAL_10MHz) /* HD647180 CPU actually */
|
||||
MCFG_CPU_PROGRAM_MAP(hd647180_mem)
|
||||
#endif
|
||||
MCFG_CPU_PROGRAM_MAP(ghox_hd647180_mem_map)
|
||||
|
||||
MCFG_QUANTUM_TIME(attotime::from_hz(600))
|
||||
|
||||
MCFG_MACHINE_RESET_OVERRIDE(toaplan2_state,ghox)
|
||||
|
||||
@ -4316,8 +4242,7 @@ ROM_START( ghox ) /* Spinner with single axis (up/down) controls */
|
||||
ROM_LOAD16_BYTE( "tp021-02.u11", 0x000001, 0x020000, CRC(15cac60f) SHA1(6efa3a50a5dfe6ef4072738d6a7d0d95dca8a675) )
|
||||
|
||||
ROM_REGION( 0x10000, "audiocpu", 0 ) /* Sound HD647180 code */
|
||||
/* sound CPU is a HD647180 (Z180) with internal ROM - not yet supported */
|
||||
ROM_LOAD( "hd647180.021", 0x00000, 0x08000, NO_DUMP )
|
||||
ROM_LOAD( "hd647180.021", 0x00000, 0x08000, CRC(6ab59e5b) SHA1(d814dd3a8f1ee638794e2bd422eed4247ba4a15e) )
|
||||
|
||||
ROM_REGION( 0x100000, "gp9001", 0 )
|
||||
ROM_LOAD( "tp021-03.u36", 0x000000, 0x080000, CRC(a15d8e9d) SHA1(640a33997bdce8e84bea6a944139716379839037) )
|
||||
@ -4331,8 +4256,7 @@ ROM_START( ghoxj ) /* 8-way joystick for controls */
|
||||
ROM_LOAD16_BYTE( "tp021-02a.u11", 0x000001, 0x020000, CRC(8d426767) SHA1(1ed4a8bcbf4352257e7d58cb5c2c91eb48c2f047) )
|
||||
|
||||
ROM_REGION( 0x10000, "audiocpu", 0 ) /* Sound HD647180 code */
|
||||
/* sound CPU is a HD647180 (Z180) with internal ROM - not yet supported */
|
||||
ROM_LOAD( "hd647180.021", 0x00000, 0x08000, NO_DUMP )
|
||||
ROM_LOAD( "hd647180.021", 0x00000, 0x08000, CRC(6ab59e5b) SHA1(d814dd3a8f1ee638794e2bd422eed4247ba4a15e) )
|
||||
|
||||
ROM_REGION( 0x100000, "gp9001", 0 )
|
||||
ROM_LOAD( "tp021-03.u36", 0x000000, 0x080000, CRC(a15d8e9d) SHA1(640a33997bdce8e84bea6a944139716379839037) )
|
||||
@ -4546,8 +4470,7 @@ ROM_START( whoopee )
|
||||
ROM_LOAD16_BYTE( "whoopee.2", 0x000001, 0x020000, CRC(6796f133) SHA1(d4e657be260ba3fd3f0556ade617882513b52685) )
|
||||
|
||||
ROM_REGION( 0x10000, "audiocpu", 0 ) /* Sound HD647180 code */
|
||||
/* sound CPU is a HD647180 (Z180) with internal ROM - not yet supported */
|
||||
ROM_LOAD( "hd647180.025", 0x00000, 0x08000, NO_DUMP )
|
||||
ROM_LOAD( "hd647180.025", 0x00000, 0x08000, CRC(c02436f6) SHA1(385343f88991646ec23b385eaea82718f1251ea6) )
|
||||
|
||||
ROM_REGION( 0x200000, "gp9001", 0 )
|
||||
ROM_LOAD( "tp025-4.bin", 0x000000, 0x100000, CRC(ab97f744) SHA1(c1620e614345dbd5c6567e4cb6f55c61b900d0ee) )
|
||||
@ -5685,10 +5608,10 @@ ROM_END
|
||||
// See list at top of file
|
||||
|
||||
// ( YEAR NAME PARENT MACHINE INPUT STATE INIT MONITOR COMPANY FULLNAME FLAGS )
|
||||
GAME( 1991, tekipaki, 0, tekipaki_mcu, tekipaki, toaplan2_state, 0, ROT0, "Toaplan", "Teki Paki", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1991, tekipaki, 0, tekipaki, tekipaki, toaplan2_state, 0, ROT0, "Toaplan", "Teki Paki", MACHINE_SUPPORTS_SAVE )
|
||||
|
||||
GAME( 1991, ghox, 0, ghox, ghox, toaplan2_state, 0, ROT270, "Toaplan", "Ghox (spinner)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1991, ghoxj, ghox, ghox, ghox, toaplan2_state, 0, ROT270, "Toaplan", "Ghox (joystick)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1991, ghox, 0, ghox, ghox, toaplan2_state, 0, ROT270, "Toaplan", "Ghox (spinner)", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1991, ghoxj, ghox, ghox, ghox, toaplan2_state, 0, ROT270, "Toaplan", "Ghox (joystick)", MACHINE_SUPPORTS_SAVE )
|
||||
|
||||
GAME( 1992, dogyuun, 0, dogyuun, dogyuun, toaplan2_state, dogyuun, ROT270, "Toaplan", "Dogyuun", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1992, dogyuuna, dogyuun, dogyuun, dogyuuna, toaplan2_state, dogyuun, ROT270, "Toaplan", "Dogyuun (older set)", MACHINE_SUPPORTS_SAVE )
|
||||
@ -5704,7 +5627,7 @@ GAME( 1992, truxton2, 0, truxton2, truxton2, toaplan2_state, 0,
|
||||
GAME( 1991, pipibibs, 0, pipibibs, pipibibs, toaplan2_state, 0, ROT0, "Toaplan", "Pipi & Bibis / Whoopee!! (Z80 sound cpu, set 1)", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1991, pipibibsa, pipibibs, pipibibs, pipibibs, toaplan2_state, 0, ROT0, "Toaplan", "Pipi & Bibis / Whoopee!! (Z80 sound cpu, set 2)", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1991, pipibibsp, pipibibs, pipibibs, pipibibsp, toaplan2_state, 0, ROT0, "Toaplan", "Pipi & Bibis / Whoopee!! (prototype)", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1991, whoopee, pipibibs, tekipaki, whoopee, toaplan2_state, 0, ROT0, "Toaplan", "Pipi & Bibis / Whoopee!! (Teki Paki hardware)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) // original Whoopee!! boards have a HD647180 instead of Z80
|
||||
GAME( 1991, whoopee, pipibibs, tekipaki, whoopee, toaplan2_state, 0, ROT0, "Toaplan", "Pipi & Bibis / Whoopee!! (Teki Paki hardware)", MACHINE_SUPPORTS_SAVE ) // original Whoopee!! boards have a HD647180 instead of Z80
|
||||
|
||||
GAME( 1991, pipibibsbl, pipibibs, pipibibsbl, pipibibsbl, toaplan2_state, pipibibsbl, ROT0, "bootleg (Ryouta Kikaku)", "Pipi & Bibis / Whoopee!! (bootleg)", MACHINE_SUPPORTS_SAVE )
|
||||
|
||||
|
@ -24,7 +24,6 @@ public:
|
||||
toaplan2_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: driver_device(mconfig, type, tag),
|
||||
m_shared_ram(*this, "shared_ram"),
|
||||
m_shared_ram16(*this, "shared_ram16"),
|
||||
m_paletteram(*this, "palette"),
|
||||
m_tx_videoram(*this, "tx_videoram"),
|
||||
m_tx_lineselect(*this, "tx_lineselect"),
|
||||
@ -48,7 +47,6 @@ public:
|
||||
m_hopper(*this, "hopper") { }
|
||||
|
||||
optional_shared_ptr<uint8_t> m_shared_ram; // 8 bit RAM shared between 68K and sound CPU
|
||||
optional_shared_ptr<uint16_t> m_shared_ram16; // Really 8 bit RAM connected to Z180
|
||||
optional_shared_ptr<uint16_t> m_paletteram;
|
||||
optional_shared_ptr<uint16_t> m_tx_videoram;
|
||||
optional_shared_ptr<uint16_t> m_tx_lineselect;
|
||||
@ -93,10 +91,6 @@ public:
|
||||
DECLARE_WRITE16_MEMBER(toaplan2_hd647180_cpu_w);
|
||||
DECLARE_READ16_MEMBER(ghox_p1_h_analog_r);
|
||||
DECLARE_READ16_MEMBER(ghox_p2_h_analog_r);
|
||||
DECLARE_READ16_MEMBER(ghox_mcu_r);
|
||||
DECLARE_WRITE16_MEMBER(ghox_mcu_w);
|
||||
DECLARE_READ16_MEMBER(ghox_shared_ram_r);
|
||||
DECLARE_WRITE16_MEMBER(ghox_shared_ram_w);
|
||||
DECLARE_WRITE16_MEMBER(fixeight_subcpu_ctrl_w);
|
||||
DECLARE_WRITE16_MEMBER(fixeightbl_oki_bankswitch_w);
|
||||
DECLARE_READ8_MEMBER(fixeight_region_r);
|
||||
|
Loading…
Reference in New Issue
Block a user