Dumped i8751 dump for Sky Robo / Takatae Big Fighter, added basic MCU hookup to make it work [Team CAPS0ff, Angelo Salese]

This commit is contained in:
angelosa 2016-12-27 02:28:16 +01:00
parent 3eef9b5a76
commit ab55d6be81
2 changed files with 51 additions and 9 deletions

View File

@ -292,6 +292,7 @@ Notes:
#include "includes/armedf.h"
#include "cpu/m68000/m68000.h"
#include "cpu/z80/z80.h"
#include "cpu/mcs51/mcs51.h"
#include "sound/3812intf.h"
#include "sound/dac.h"
#include "sound/volt_reg.h"
@ -312,6 +313,7 @@ Notes:
---- -x-- ---- ---- disable fg layer
---- --x- ---- ---- disable sprite
---- ---x ---- ---- disable tx layer
---- ---- ---x ---- unknown, used by big fighter
---- ---- ---- --x- coin counter 1
---- ---- ---- ---x coin counter 0
*/
@ -330,6 +332,13 @@ WRITE16_MEMBER(armedf_state::terraf_io_w)
flip_screen_set(m_vreg & 0x1000);
}
WRITE16_MEMBER(bigfghtr_state::bigfghtr_io_w)
{
//if(data & 0x10)
// m_mcu->set_input_line(MCS51_INT0_LINE, HOLD_LINE);
terraf_io_w(space,offset,data,mem_mask);
}
WRITE16_MEMBER(armedf_state::terrafjb_io_w)
{
if(data & 0x4000 && ((m_vreg & 0x4000) == 0)) //0 -> 1 transition
@ -522,9 +531,12 @@ ADDRESS_MAP_END
READ16_MEMBER(bigfghtr_state::latch_r)
{
m_read_latch = 1;
m_mcu->set_input_line(MCS51_INT0_LINE, HOLD_LINE);
return 0;
}
#if 0
// reference code, in case anything goes bad
WRITE16_MEMBER(bigfghtr_state::sharedram_w)
{
data &= mem_mask;
@ -667,11 +679,22 @@ READ16_MEMBER(bigfghtr_state::sharedram_r)
return m_sharedram[offset];
}
#endif
READ8_MEMBER(bigfghtr_state::main_sharedram_r)
{
return m_sharedram[offset];
}
WRITE8_MEMBER(bigfghtr_state::main_sharedram_w)
{
m_sharedram[offset] = data;
}
static ADDRESS_MAP_START( bigfghtr_map, AS_PROGRAM, 16, bigfghtr_state )
AM_RANGE(0x000000, 0x07ffff) AM_ROM
AM_RANGE(0x080000, 0x0805ff) AM_RAM AM_SHARE("spriteram")
AM_RANGE(0x080600, 0x083fff) AM_READWRITE(sharedram_r, sharedram_w) AM_SHARE("sharedram")
AM_RANGE(0x080600, 0x083fff) AM_READWRITE8(main_sharedram_r,main_sharedram_w,0xffff)
AM_RANGE(0x084000, 0x085fff) AM_RAM //work ram
AM_RANGE(0x086000, 0x086fff) AM_RAM_WRITE(armedf_bg_videoram_w) AM_SHARE("bg_videoram")
AM_RANGE(0x087000, 0x087fff) AM_RAM_WRITE(armedf_fg_videoram_w) AM_SHARE("fg_videoram")
@ -682,7 +705,7 @@ static ADDRESS_MAP_START( bigfghtr_map, AS_PROGRAM, 16, bigfghtr_state )
AM_RANGE(0x08c002, 0x08c003) AM_READ_PORT("P2")
AM_RANGE(0x08c004, 0x08c005) AM_READ_PORT("DSW0")
AM_RANGE(0x08c006, 0x08c007) AM_READ_PORT("DSW1")
AM_RANGE(0x08d000, 0x08d001) AM_WRITE(terraf_io_w) //807b0
AM_RANGE(0x08d000, 0x08d001) AM_WRITE(bigfghtr_io_w) //807b0
AM_RANGE(0x08d002, 0x08d003) AM_WRITE(armedf_bg_scrollx_w)
AM_RANGE(0x08d004, 0x08d005) AM_WRITE(armedf_bg_scrolly_w)
AM_RANGE(0x08d006, 0x08d007) AM_WRITE(armedf_fg_scrollx_w)
@ -694,6 +717,16 @@ static ADDRESS_MAP_START( bigfghtr_map, AS_PROGRAM, 16, bigfghtr_state )
AM_RANGE(0x400000, 0x400001) AM_READ(latch_r)
ADDRESS_MAP_END
static ADDRESS_MAP_START( bigfghtr_mcu_map, AS_PROGRAM, 8, bigfghtr_state )
AM_RANGE(0x0000, 0x0fff) AM_ROM
ADDRESS_MAP_END
static ADDRESS_MAP_START( bigfghtr_mcu_io_map, AS_IO, 8, bigfghtr_state )
// AM_RANGE(0x00000, 0x005ff) Sprite RAM, guess shared as well
AM_RANGE(0x00600, 0x03fff) AM_RAM AM_SHARE("sharedram")
// AM_RANGE(MCS51_PORT_P1,MCS51_PORT_P1) bit 5: bus contention related?
ADDRESS_MAP_END
static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, armedf_state )
AM_RANGE(0x0000, 0xf7ff) AM_ROM
AM_RANGE(0xf800, 0xffff) AM_RAM
@ -1544,6 +1577,10 @@ static MACHINE_CONFIG_START( bigfghtr, bigfghtr_state )
MCFG_CPU_IO_MAP(sound_portmap)
MCFG_CPU_PERIODIC_INT_DRIVER(armedf_state, irq0_line_hold, XTAL_8MHz/2/512) // ?
MCFG_CPU_ADD("mcu", I8751, XTAL_16MHz/4) /* ??? */
MCFG_CPU_PROGRAM_MAP(bigfghtr_mcu_map)
MCFG_CPU_IO_MAP(bigfghtr_mcu_io_map)
MCFG_MACHINE_START_OVERRIDE(bigfghtr_state,bigfghtr)
MCFG_MACHINE_RESET_OVERRIDE(bigfghtr_state,bigfghtr)
@ -2048,7 +2085,8 @@ ROM_START( skyrobo )
ROM_LOAD( "8.17k", 0x00000, 0x10000, CRC(0aeab61e) SHA1(165e0ad58542b65383fef714578da21f62df7b74) )
ROM_REGION( 0x10000, "mcu", 0 ) /* Intel C8751 read protected MCU */
ROM_LOAD( "i8751.mcu", 0x00000, 0x1000, NO_DUMP )
// coming from Takatae Big Fighter, might or might not be correct for this version
ROM_LOAD( "i8751.bin", 0x00000, 0x1000, BAD_DUMP CRC(64a0d225) SHA1(ccc5c33c0c412bf9e3a4f7de5e39b042e00c41dd) )
ROM_REGION( 0x08000, "gfx1", 0 )
ROM_LOAD( "7", 0x00000, 0x08000, CRC(f556ef28) SHA1(2acb83cdf23356091056f2cfbbc2b9828ee25b6f) ) /* Rom location 11C */
@ -2080,7 +2118,7 @@ ROM_START( bigfghtr )
ROM_LOAD( "8.17k", 0x00000, 0x10000, CRC(0aeab61e) SHA1(165e0ad58542b65383fef714578da21f62df7b74) )
ROM_REGION( 0x10000, "mcu", 0 ) /* Intel C8751 read protected MCU */
ROM_LOAD( "i8751.mcu", 0x00000, 0x1000, NO_DUMP )
ROM_LOAD( "i8751.bin", 0x00000, 0x1000, CRC(64a0d225) SHA1(ccc5c33c0c412bf9e3a4f7de5e39b042e00c41dd) )
ROM_REGION( 0x08000, "gfx1", 0 )
ROM_LOAD( "7.11c", 0x00000, 0x08000, CRC(1809e79f) SHA1(730547771f803857acb552a84a8bc21bd3bda33f) )

View File

@ -110,18 +110,22 @@ class bigfghtr_state : public armedf_state
public:
bigfghtr_state(const machine_config &mconfig, device_type type, const char *tag)
: armedf_state(mconfig, type, tag),
m_sharedram(*this, "sharedram") { }
required_shared_ptr<uint16_t> m_sharedram;
m_mcu(*this, "mcu"),
m_sharedram(*this, "sharedram")
{ }
required_device<cpu_device> m_mcu;
required_shared_ptr<uint8_t> m_sharedram;
/* misc */
int m_read_latch;
uint8_t m_mcu_input_snippet;
uint8_t m_mcu_jsr_snippet;
DECLARE_READ16_MEMBER(latch_r);
DECLARE_WRITE16_MEMBER(sharedram_w);
DECLARE_READ16_MEMBER(sharedram_r);
DECLARE_WRITE8_MEMBER(main_sharedram_w);
DECLARE_READ8_MEMBER(main_sharedram_r);
DECLARE_WRITE16_MEMBER(bigfghtr_io_w);
DECLARE_DRIVER_INIT(bigfghtr);
DECLARE_MACHINE_START(bigfghtr);
DECLARE_MACHINE_RESET(bigfghtr);