diff options
author | angelosa <salese_corp_ltd@email.it> | 2016-12-27 02:28:16 +0100 |
---|---|---|
committer | angelosa <salese_corp_ltd@email.it> | 2016-12-27 02:28:16 +0100 |
commit | ab55d6be81104f3d7d4ef3d9e69c43c502c30259 (patch) | |
tree | 8bc7aaec59ae45bcd6212b7e1f77e6fad1fe69da | |
parent | 3eef9b5a761791c190a0f2ab6a171c9f24d2c6b0 (diff) |
Dumped i8751 dump for Sky Robo / Takatae Big Fighter, added basic MCU hookup to make it work [Team CAPS0ff, Angelo Salese]
-rw-r--r-- | src/mame/drivers/armedf.cpp | 46 | ||||
-rw-r--r-- | src/mame/includes/armedf.h | 14 |
2 files changed, 51 insertions, 9 deletions
diff --git a/src/mame/drivers/armedf.cpp b/src/mame/drivers/armedf.cpp index 3c72af762e7..32f9c931f16 100644 --- a/src/mame/drivers/armedf.cpp +++ b/src/mame/drivers/armedf.cpp @@ -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) ) diff --git a/src/mame/includes/armedf.h b/src/mame/includes/armedf.h index 1f7ff9149ec..70787ccb6d7 100644 --- a/src/mame/includes/armedf.h +++ b/src/mame/includes/armedf.h @@ -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); |