mirror of
https://github.com/holub/mame
synced 2025-06-02 02:49:44 +03:00
jackie.c, lwings.c, pitnrun.c, splash.c, spoker.c, ssfindo.c: added / completed save state support (nw)
This commit is contained in:
parent
768fbd1b64
commit
a214550373
@ -54,18 +54,22 @@ public:
|
||||
jackie_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: driver_device(mconfig, type, tag),
|
||||
m_maincpu(*this,"maincpu"),
|
||||
m_gfxdecode(*this, "gfxdecode"),
|
||||
m_screen(*this, "screen"),
|
||||
m_palette(*this, "palette"),
|
||||
m_bg_scroll2(*this, "bg_scroll2"),
|
||||
m_bg_scroll(*this, "bg_scroll"),
|
||||
m_reel1_ram(*this, "reel1_ram"),
|
||||
m_reel2_ram(*this, "reel2_ram"),
|
||||
m_reel3_ram(*this, "reel3_ram"),
|
||||
m_fg_tile_ram(*this, "fg_tile_ram"),
|
||||
m_fg_color_ram(*this, "fg_color_ram"),
|
||||
m_gfxdecode(*this, "gfxdecode"),
|
||||
m_screen(*this, "screen"),
|
||||
m_palette(*this, "palette") { }
|
||||
m_fg_color_ram(*this, "fg_color_ram") { }
|
||||
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_device<gfxdecode_device> m_gfxdecode;
|
||||
required_device<screen_device> m_screen;
|
||||
required_device<palette_device> m_palette;
|
||||
|
||||
required_shared_ptr<UINT8> m_bg_scroll2;
|
||||
required_shared_ptr<UINT8> m_bg_scroll;
|
||||
required_shared_ptr<UINT8> m_reel1_ram;
|
||||
@ -73,9 +77,6 @@ public:
|
||||
required_shared_ptr<UINT8> m_reel3_ram;
|
||||
required_shared_ptr<UINT8> m_fg_tile_ram;
|
||||
required_shared_ptr<UINT8> m_fg_color_ram;
|
||||
required_device<gfxdecode_device> m_gfxdecode;
|
||||
required_device<screen_device> m_screen;
|
||||
required_device<palette_device> m_palette;
|
||||
|
||||
int m_exp_bank;
|
||||
tilemap_t *m_fg_tilemap;
|
||||
@ -92,33 +93,39 @@ public:
|
||||
DECLARE_WRITE8_MEMBER(fg_tile_w);
|
||||
DECLARE_WRITE8_MEMBER(fg_color_w);
|
||||
DECLARE_WRITE8_MEMBER(bg_scroll_w);
|
||||
DECLARE_WRITE8_MEMBER(jackie_reel1_ram_w);
|
||||
DECLARE_WRITE8_MEMBER(jackie_reel2_ram_w);
|
||||
DECLARE_WRITE8_MEMBER(jackie_reel3_ram_w);
|
||||
DECLARE_WRITE8_MEMBER(jackie_unk_reg1_lo_w);
|
||||
DECLARE_WRITE8_MEMBER(jackie_unk_reg2_lo_w);
|
||||
DECLARE_WRITE8_MEMBER(jackie_unk_reg3_lo_w);
|
||||
DECLARE_WRITE8_MEMBER(jackie_unk_reg1_hi_w);
|
||||
DECLARE_WRITE8_MEMBER(jackie_unk_reg2_hi_w);
|
||||
DECLARE_WRITE8_MEMBER(jackie_unk_reg3_hi_w);
|
||||
DECLARE_WRITE8_MEMBER(jackie_nmi_and_coins_w);
|
||||
DECLARE_WRITE8_MEMBER(jackie_lamps_w);
|
||||
DECLARE_WRITE8_MEMBER(reel1_ram_w);
|
||||
DECLARE_WRITE8_MEMBER(reel2_ram_w);
|
||||
DECLARE_WRITE8_MEMBER(reel3_ram_w);
|
||||
DECLARE_WRITE8_MEMBER(unk_reg1_lo_w);
|
||||
DECLARE_WRITE8_MEMBER(unk_reg2_lo_w);
|
||||
DECLARE_WRITE8_MEMBER(unk_reg3_lo_w);
|
||||
DECLARE_WRITE8_MEMBER(unk_reg1_hi_w);
|
||||
DECLARE_WRITE8_MEMBER(unk_reg2_hi_w);
|
||||
DECLARE_WRITE8_MEMBER(unk_reg3_hi_w);
|
||||
DECLARE_WRITE8_MEMBER(nmi_and_coins_w);
|
||||
DECLARE_WRITE8_MEMBER(lamps_w);
|
||||
DECLARE_READ8_MEMBER(igs_irqack_r);
|
||||
DECLARE_WRITE8_MEMBER(igs_irqack_w);
|
||||
DECLARE_READ8_MEMBER(expram_r);
|
||||
void jackie_unk_reg_lo_w( int offset, UINT8 data, int reg );
|
||||
void jackie_unk_reg_hi_w( int offset, UINT8 data, int reg );
|
||||
|
||||
void unk_reg_lo_w( int offset, UINT8 data, int reg );
|
||||
void unk_reg_hi_w( int offset, UINT8 data, int reg );
|
||||
void show_out();
|
||||
|
||||
DECLARE_CUSTOM_INPUT_MEMBER(hopper_r);
|
||||
DECLARE_DRIVER_INIT(jackie);
|
||||
|
||||
TILE_GET_INFO_MEMBER(get_fg_tile_info);
|
||||
TILE_GET_INFO_MEMBER(get_jackie_reel1_tile_info);
|
||||
TILE_GET_INFO_MEMBER(get_jackie_reel2_tile_info);
|
||||
TILE_GET_INFO_MEMBER(get_jackie_reel3_tile_info);
|
||||
TILE_GET_INFO_MEMBER(get_reel1_tile_info);
|
||||
TILE_GET_INFO_MEMBER(get_reel2_tile_info);
|
||||
TILE_GET_INFO_MEMBER(get_reel3_tile_info);
|
||||
|
||||
DECLARE_DRIVER_INIT(jackie);
|
||||
virtual void machine_start();
|
||||
virtual void machine_reset();
|
||||
virtual void video_start();
|
||||
UINT32 screen_update_jackie(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(jackie_irq);
|
||||
|
||||
UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(irq);
|
||||
};
|
||||
|
||||
|
||||
@ -152,13 +159,13 @@ WRITE8_MEMBER(jackie_state::bg_scroll_w)
|
||||
}
|
||||
|
||||
|
||||
WRITE8_MEMBER(jackie_state::jackie_reel1_ram_w)
|
||||
WRITE8_MEMBER(jackie_state::reel1_ram_w)
|
||||
{
|
||||
m_reel1_ram[offset] = data;
|
||||
m_reel1_tilemap->mark_tile_dirty(offset);
|
||||
}
|
||||
|
||||
TILE_GET_INFO_MEMBER(jackie_state::get_jackie_reel1_tile_info)
|
||||
TILE_GET_INFO_MEMBER(jackie_state::get_reel1_tile_info)
|
||||
{
|
||||
int code = m_reel1_ram[tile_index];
|
||||
SET_TILE_INFO_MEMBER(1, code, 0, 0);
|
||||
@ -166,26 +173,26 @@ TILE_GET_INFO_MEMBER(jackie_state::get_jackie_reel1_tile_info)
|
||||
|
||||
|
||||
|
||||
WRITE8_MEMBER(jackie_state::jackie_reel2_ram_w)
|
||||
WRITE8_MEMBER(jackie_state::reel2_ram_w)
|
||||
{
|
||||
m_reel2_ram[offset] = data;
|
||||
m_reel2_tilemap->mark_tile_dirty(offset);
|
||||
}
|
||||
|
||||
TILE_GET_INFO_MEMBER(jackie_state::get_jackie_reel2_tile_info)
|
||||
TILE_GET_INFO_MEMBER(jackie_state::get_reel2_tile_info)
|
||||
{
|
||||
int code = m_reel2_ram[tile_index];
|
||||
SET_TILE_INFO_MEMBER(1, code, 0, 0);
|
||||
}
|
||||
|
||||
|
||||
WRITE8_MEMBER(jackie_state::jackie_reel3_ram_w)
|
||||
WRITE8_MEMBER(jackie_state::reel3_ram_w)
|
||||
{
|
||||
m_reel3_ram[offset] = data;
|
||||
m_reel3_tilemap->mark_tile_dirty(offset);
|
||||
}
|
||||
|
||||
TILE_GET_INFO_MEMBER(jackie_state::get_jackie_reel3_tile_info)
|
||||
TILE_GET_INFO_MEMBER(jackie_state::get_reel3_tile_info)
|
||||
{
|
||||
int code = m_reel3_ram[tile_index];
|
||||
SET_TILE_INFO_MEMBER(1, code, 0, 0);
|
||||
@ -193,9 +200,9 @@ TILE_GET_INFO_MEMBER(jackie_state::get_jackie_reel3_tile_info)
|
||||
|
||||
void jackie_state::video_start()
|
||||
{
|
||||
m_reel1_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(jackie_state::get_jackie_reel1_tile_info),this),TILEMAP_SCAN_ROWS,8,32, 64, 8);
|
||||
m_reel2_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(jackie_state::get_jackie_reel2_tile_info),this),TILEMAP_SCAN_ROWS,8,32, 64, 8);
|
||||
m_reel3_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(jackie_state::get_jackie_reel3_tile_info),this),TILEMAP_SCAN_ROWS,8,32, 64, 8);
|
||||
m_reel1_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(jackie_state::get_reel1_tile_info),this),TILEMAP_SCAN_ROWS,8,32, 64, 8);
|
||||
m_reel2_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(jackie_state::get_reel2_tile_info),this),TILEMAP_SCAN_ROWS,8,32, 64, 8);
|
||||
m_reel3_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(jackie_state::get_reel3_tile_info),this),TILEMAP_SCAN_ROWS,8,32, 64, 8);
|
||||
|
||||
m_reel1_tilemap->set_scroll_cols(64);
|
||||
m_reel2_tilemap->set_scroll_cols(64);
|
||||
@ -206,7 +213,7 @@ void jackie_state::video_start()
|
||||
}
|
||||
|
||||
|
||||
UINT32 jackie_state::screen_update_jackie(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||
UINT32 jackie_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||
{
|
||||
int i,j;
|
||||
int startclipmin = 0;
|
||||
@ -253,7 +260,16 @@ UINT32 jackie_state::screen_update_jackie(screen_device &screen, bitmap_ind16 &b
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
void jackie_state::machine_start()
|
||||
{
|
||||
save_item(NAME(m_exp_bank));
|
||||
// save_item(NAME(m_irq_enable)); //always 1?
|
||||
save_item(NAME(m_nmi_enable));
|
||||
// save_item(NAME(m_bg_enable)); //always 1?
|
||||
save_item(NAME(m_hopper));
|
||||
save_item(NAME(m_out));
|
||||
save_item(NAME(m_unk_reg));
|
||||
}
|
||||
|
||||
void jackie_state::machine_reset()
|
||||
{
|
||||
@ -276,29 +292,29 @@ void jackie_state::show_out()
|
||||
#endif
|
||||
}
|
||||
|
||||
void jackie_state::jackie_unk_reg_lo_w( int offset, UINT8 data, int reg )
|
||||
void jackie_state::unk_reg_lo_w( int offset, UINT8 data, int reg )
|
||||
{
|
||||
m_unk_reg[reg][offset] &= 0xff00;
|
||||
m_unk_reg[reg][offset] |= data;
|
||||
show_out();
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(jackie_state::jackie_unk_reg1_lo_w){ jackie_unk_reg_lo_w( offset, data, 0 ); }
|
||||
WRITE8_MEMBER(jackie_state::jackie_unk_reg2_lo_w){ jackie_unk_reg_lo_w( offset, data, 1 ); }
|
||||
WRITE8_MEMBER(jackie_state::jackie_unk_reg3_lo_w){ jackie_unk_reg_lo_w( offset, data, 2 ); }
|
||||
WRITE8_MEMBER(jackie_state::unk_reg1_lo_w){ unk_reg_lo_w( offset, data, 0 ); }
|
||||
WRITE8_MEMBER(jackie_state::unk_reg2_lo_w){ unk_reg_lo_w( offset, data, 1 ); }
|
||||
WRITE8_MEMBER(jackie_state::unk_reg3_lo_w){ unk_reg_lo_w( offset, data, 2 ); }
|
||||
|
||||
void jackie_state::jackie_unk_reg_hi_w( int offset, UINT8 data, int reg )
|
||||
void jackie_state::unk_reg_hi_w( int offset, UINT8 data, int reg )
|
||||
{
|
||||
m_unk_reg[reg][offset] &= 0xff;
|
||||
m_unk_reg[reg][offset] |= data << 8;
|
||||
show_out();
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(jackie_state::jackie_unk_reg1_hi_w){ jackie_unk_reg_hi_w( offset, data, 0 ); }
|
||||
WRITE8_MEMBER(jackie_state::jackie_unk_reg2_hi_w){ jackie_unk_reg_hi_w( offset, data, 1 ); }
|
||||
WRITE8_MEMBER(jackie_state::jackie_unk_reg3_hi_w){ jackie_unk_reg_hi_w( offset, data, 2 ); }
|
||||
WRITE8_MEMBER(jackie_state::unk_reg1_hi_w){ unk_reg_hi_w( offset, data, 0 ); }
|
||||
WRITE8_MEMBER(jackie_state::unk_reg2_hi_w){ unk_reg_hi_w( offset, data, 1 ); }
|
||||
WRITE8_MEMBER(jackie_state::unk_reg3_hi_w){ unk_reg_hi_w( offset, data, 2 ); }
|
||||
|
||||
WRITE8_MEMBER(jackie_state::jackie_nmi_and_coins_w)
|
||||
WRITE8_MEMBER(jackie_state::nmi_and_coins_w)
|
||||
{
|
||||
coin_counter_w(machine(), 0, data & 0x01); // coin_a
|
||||
coin_counter_w(machine(), 1, data & 0x04); // coin_c
|
||||
@ -314,7 +330,7 @@ WRITE8_MEMBER(jackie_state::jackie_nmi_and_coins_w)
|
||||
show_out();
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(jackie_state::jackie_lamps_w)
|
||||
WRITE8_MEMBER(jackie_state::lamps_w)
|
||||
{
|
||||
/*
|
||||
- Lbits -
|
||||
@ -369,12 +385,12 @@ static ADDRESS_MAP_START( jackie_prg_map, AS_PROGRAM, 8, jackie_state )
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( jackie_io_map, AS_IO, 8, jackie_state )
|
||||
AM_RANGE(0x0520, 0x0524) AM_WRITE(jackie_unk_reg1_lo_w)
|
||||
AM_RANGE(0x0d20, 0x0d24) AM_WRITE(jackie_unk_reg1_hi_w)
|
||||
AM_RANGE(0x0560, 0x0564) AM_WRITE(jackie_unk_reg2_lo_w)
|
||||
AM_RANGE(0x0d60, 0x0d64) AM_WRITE(jackie_unk_reg2_hi_w)
|
||||
AM_RANGE(0x05a0, 0x05a4) AM_WRITE(jackie_unk_reg3_lo_w)
|
||||
AM_RANGE(0x0da0, 0x0da4) AM_WRITE(jackie_unk_reg3_hi_w)
|
||||
AM_RANGE(0x0520, 0x0524) AM_WRITE(unk_reg1_lo_w)
|
||||
AM_RANGE(0x0d20, 0x0d24) AM_WRITE(unk_reg1_hi_w)
|
||||
AM_RANGE(0x0560, 0x0564) AM_WRITE(unk_reg2_lo_w)
|
||||
AM_RANGE(0x0d60, 0x0d64) AM_WRITE(unk_reg2_hi_w)
|
||||
AM_RANGE(0x05a0, 0x05a4) AM_WRITE(unk_reg3_lo_w)
|
||||
AM_RANGE(0x0da0, 0x0da4) AM_WRITE(unk_reg3_hi_w)
|
||||
AM_RANGE(0x1000, 0x1107) AM_RAM AM_SHARE("bg_scroll2")
|
||||
AM_RANGE(0x2000, 0x27ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
|
||||
AM_RANGE(0x2800, 0x2fff) AM_RAM_DEVWRITE("palette", palette_device, write_ext) AM_SHARE("palette_ext")
|
||||
@ -383,18 +399,18 @@ static ADDRESS_MAP_START( jackie_io_map, AS_IO, 8, jackie_state )
|
||||
AM_RANGE(0x4002, 0x4002) AM_READ_PORT("DSW3") /* DSW3 */
|
||||
AM_RANGE(0x4003, 0x4003) AM_READ_PORT("DSW4") /* DSW4 */
|
||||
AM_RANGE(0x4004, 0x4004) AM_READ_PORT("DSW5") /* DSW5 */
|
||||
AM_RANGE(0x5080, 0x5080) AM_WRITE(jackie_nmi_and_coins_w)
|
||||
AM_RANGE(0x5080, 0x5080) AM_WRITE(nmi_and_coins_w)
|
||||
AM_RANGE(0x5081, 0x5081) AM_READ_PORT("SERVICE")
|
||||
AM_RANGE(0x5082, 0x5082) AM_READ_PORT("COINS")
|
||||
AM_RANGE(0x5090, 0x5090) AM_READ_PORT("BUTTONS1")
|
||||
AM_RANGE(0x5091, 0x5091) AM_WRITE(jackie_lamps_w )
|
||||
AM_RANGE(0x5091, 0x5091) AM_WRITE(lamps_w )
|
||||
AM_RANGE(0x50a0, 0x50a0) AM_READ_PORT("BUTTONS2")
|
||||
AM_RANGE(0x50b0, 0x50b1) AM_DEVWRITE("ymsnd", ym2413_device, write)
|
||||
AM_RANGE(0x50c0, 0x50c0) AM_READ(igs_irqack_r) AM_WRITE(igs_irqack_w)
|
||||
AM_RANGE(0x6000, 0x60ff) AM_RAM_WRITE(bg_scroll_w ) AM_SHARE("bg_scroll")
|
||||
AM_RANGE(0x6800, 0x69ff) AM_RAM_WRITE(jackie_reel1_ram_w ) AM_SHARE("reel1_ram")
|
||||
AM_RANGE(0x6a00, 0x6bff) AM_RAM_WRITE(jackie_reel2_ram_w ) AM_SHARE("reel2_ram")
|
||||
AM_RANGE(0x6c00, 0x6dff) AM_RAM_WRITE(jackie_reel3_ram_w ) AM_SHARE("reel3_ram")
|
||||
AM_RANGE(0x6800, 0x69ff) AM_RAM_WRITE(reel1_ram_w ) AM_SHARE("reel1_ram")
|
||||
AM_RANGE(0x6a00, 0x6bff) AM_RAM_WRITE(reel2_ram_w ) AM_SHARE("reel2_ram")
|
||||
AM_RANGE(0x6c00, 0x6dff) AM_RAM_WRITE(reel3_ram_w ) AM_SHARE("reel3_ram")
|
||||
AM_RANGE(0x7000, 0x77ff) AM_RAM_WRITE(fg_tile_w ) AM_SHARE("fg_tile_ram")
|
||||
AM_RANGE(0x7800, 0x7fff) AM_RAM_WRITE(fg_color_w ) AM_SHARE("fg_color_ram")
|
||||
AM_RANGE(0x8000, 0xffff) AM_READ(expram_r)
|
||||
@ -564,7 +580,7 @@ DRIVER_INIT_MEMBER(jackie_state,jackie)
|
||||
rom[0x7e86] = 0xc3;
|
||||
}
|
||||
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(jackie_state::jackie_irq)
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(jackie_state::irq)
|
||||
{
|
||||
int scanline = param;
|
||||
|
||||
@ -583,7 +599,7 @@ static MACHINE_CONFIG_START( jackie, jackie_state )
|
||||
MCFG_CPU_ADD("maincpu", Z80, XTAL_12MHz / 2)
|
||||
MCFG_CPU_PROGRAM_MAP(jackie_prg_map)
|
||||
MCFG_CPU_IO_MAP(jackie_io_map)
|
||||
MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", jackie_state, jackie_irq, "screen", 0, 1)
|
||||
MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", jackie_state, irq, "screen", 0, 1)
|
||||
|
||||
|
||||
/* video hardware */
|
||||
@ -592,7 +608,7 @@ static MACHINE_CONFIG_START( jackie, jackie_state )
|
||||
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
|
||||
MCFG_SCREEN_SIZE(64*8, 32*8)
|
||||
MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 0, 32*8-1)
|
||||
MCFG_SCREEN_UPDATE_DRIVER(jackie_state, screen_update_jackie)
|
||||
MCFG_SCREEN_UPDATE_DRIVER(jackie_state, screen_update)
|
||||
MCFG_SCREEN_PALETTE("palette")
|
||||
|
||||
MCFG_GFXDECODE_ADD("gfxdecode", "palette", jackie)
|
||||
@ -632,4 +648,4 @@ ROM_START( jackie )
|
||||
ROM_END
|
||||
|
||||
|
||||
GAME( 1993, jackie, 0, jackie, jackie, jackie_state, jackie, ROT0, "IGS", "Happy Jackie (v110U)", 0 )
|
||||
GAME( 1993, jackie, 0, jackie, jackie, jackie_state, jackie, ROT0, "IGS", "Happy Jackie (v110U)", GAME_SUPPORTS_SAVE )
|
||||
|
@ -740,6 +740,7 @@ void lwings_state::machine_start()
|
||||
save_item(NAME(m_palette_pen));
|
||||
save_item(NAME(m_soundstate));
|
||||
save_item(NAME(m_adpcm));
|
||||
save_item(NAME(m_nmi_mask));
|
||||
}
|
||||
|
||||
void lwings_state::machine_reset()
|
||||
|
@ -70,7 +70,7 @@ K1000233A
|
||||
#include "includes/pitnrun.h"
|
||||
|
||||
|
||||
INTERRUPT_GEN_MEMBER(pitnrun_state::pitnrun_nmi_source)
|
||||
INTERRUPT_GEN_MEMBER(pitnrun_state::nmi_source)
|
||||
{
|
||||
if(m_nmi) device.execute().set_input_line(INPUT_LINE_NMI, PULSE_LINE);
|
||||
}
|
||||
@ -80,12 +80,12 @@ WRITE8_MEMBER(pitnrun_state::nmi_enable_w)
|
||||
m_nmi = data & 1;
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(pitnrun_state::pitnrun_hflip_w)
|
||||
WRITE8_MEMBER(pitnrun_state::hflip_w)
|
||||
{
|
||||
flip_screen_x_set(data);
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(pitnrun_state::pitnrun_vflip_w)
|
||||
WRITE8_MEMBER(pitnrun_state::vflip_w)
|
||||
{
|
||||
flip_screen_y_set(data);
|
||||
}
|
||||
@ -93,26 +93,26 @@ WRITE8_MEMBER(pitnrun_state::pitnrun_vflip_w)
|
||||
static ADDRESS_MAP_START( pitnrun_map, AS_PROGRAM, 8, pitnrun_state )
|
||||
AM_RANGE(0x0000, 0x7fff) AM_ROM
|
||||
AM_RANGE(0x8000, 0x87ff) AM_RAM
|
||||
AM_RANGE(0x8800, 0x8fff) AM_RAM_WRITE(pitnrun_videoram_w) AM_SHARE("videoram")
|
||||
AM_RANGE(0x9000, 0x9fff) AM_RAM_WRITE(pitnrun_videoram2_w) AM_SHARE("videoram2")
|
||||
AM_RANGE(0x8800, 0x8fff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram")
|
||||
AM_RANGE(0x9000, 0x9fff) AM_RAM_WRITE(videoram2_w) AM_SHARE("videoram2")
|
||||
AM_RANGE(0xa000, 0xa0ff) AM_RAM AM_SHARE("spriteram")
|
||||
AM_RANGE(0xa800, 0xa800) AM_READ_PORT("SYSTEM")
|
||||
AM_RANGE(0xa800, 0xa807) AM_WRITENOP /* Analog Sound */
|
||||
AM_RANGE(0xb000, 0xb000) AM_READ_PORT("DSW") AM_WRITE(nmi_enable_w)
|
||||
AM_RANGE(0xb001, 0xb001) AM_WRITE(pitnrun_color_select_w)
|
||||
AM_RANGE(0xb001, 0xb001) AM_WRITE(color_select_w)
|
||||
AM_RANGE(0xb004, 0xb004) AM_WRITENOP/* COLOR SEL 2 - not used ?*/
|
||||
AM_RANGE(0xb005, 0xb005) AM_WRITE(pitnrun_char_bank_select)
|
||||
AM_RANGE(0xb006, 0xb006) AM_WRITE(pitnrun_hflip_w)
|
||||
AM_RANGE(0xb007, 0xb007) AM_WRITE(pitnrun_vflip_w)
|
||||
AM_RANGE(0xb005, 0xb005) AM_WRITE(char_bank_select)
|
||||
AM_RANGE(0xb006, 0xb006) AM_WRITE(hflip_w)
|
||||
AM_RANGE(0xb007, 0xb007) AM_WRITE(vflip_w)
|
||||
AM_RANGE(0xb800, 0xb800) AM_READ_PORT("INPUTS") AM_WRITE(soundlatch_byte_w)
|
||||
AM_RANGE(0xc800, 0xc801) AM_WRITE(pitnrun_scroll_w)
|
||||
AM_RANGE(0xc800, 0xc801) AM_WRITE(scroll_w)
|
||||
AM_RANGE(0xc802, 0xc802) AM_WRITENOP/* VP(VF?)MCV - not used ?*/
|
||||
AM_RANGE(0xc804, 0xc804) AM_WRITE(pitnrun_mcu_data_w)
|
||||
AM_RANGE(0xc805, 0xc805) AM_WRITE(pitnrun_h_heed_w)
|
||||
AM_RANGE(0xc806, 0xc806) AM_WRITE(pitnrun_v_heed_w)
|
||||
AM_RANGE(0xc807, 0xc807) AM_WRITE(pitnrun_ha_w)
|
||||
AM_RANGE(0xd800, 0xd800) AM_READ(pitnrun_mcu_status_r)
|
||||
AM_RANGE(0xd000, 0xd000) AM_READ(pitnrun_mcu_data_r)
|
||||
AM_RANGE(0xc804, 0xc804) AM_WRITE(mcu_data_w)
|
||||
AM_RANGE(0xc805, 0xc805) AM_WRITE(h_heed_w)
|
||||
AM_RANGE(0xc806, 0xc806) AM_WRITE(v_heed_w)
|
||||
AM_RANGE(0xc807, 0xc807) AM_WRITE(ha_w)
|
||||
AM_RANGE(0xd800, 0xd800) AM_READ(mcu_status_r)
|
||||
AM_RANGE(0xd000, 0xd000) AM_READ(mcu_data_r)
|
||||
AM_RANGE(0xf000, 0xf000) AM_READ(watchdog_reset_r)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
@ -134,9 +134,9 @@ ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( pitnrun_mcu_map, AS_PROGRAM, 8, pitnrun_state )
|
||||
ADDRESS_MAP_GLOBAL_MASK(0x7ff)
|
||||
AM_RANGE(0x0000, 0x0000) AM_READWRITE(pitnrun_68705_portA_r,pitnrun_68705_portA_w)
|
||||
AM_RANGE(0x0001, 0x0001) AM_READWRITE(pitnrun_68705_portB_r,pitnrun_68705_portB_w)
|
||||
AM_RANGE(0x0002, 0x0002) AM_READ(pitnrun_68705_portC_r)
|
||||
AM_RANGE(0x0000, 0x0000) AM_READWRITE(m68705_portA_r,m68705_portA_w)
|
||||
AM_RANGE(0x0001, 0x0001) AM_READWRITE(m68705_portB_r,m68705_portB_w)
|
||||
AM_RANGE(0x0002, 0x0002) AM_READ(m68705_portC_r)
|
||||
AM_RANGE(0x0003, 0x007f) AM_RAM
|
||||
AM_RANGE(0x0080, 0x07ff) AM_ROM
|
||||
ADDRESS_MAP_END
|
||||
@ -220,7 +220,7 @@ GFXDECODE_END
|
||||
static MACHINE_CONFIG_START( pitnrun, pitnrun_state )
|
||||
MCFG_CPU_ADD("maincpu", Z80,XTAL_18_432MHz/6) /* verified on pcb */
|
||||
MCFG_CPU_PROGRAM_MAP(pitnrun_map)
|
||||
MCFG_CPU_VBLANK_INT_DRIVER("screen", pitnrun_state, pitnrun_nmi_source)
|
||||
MCFG_CPU_VBLANK_INT_DRIVER("screen", pitnrun_state, nmi_source)
|
||||
|
||||
MCFG_CPU_ADD("audiocpu", Z80, XTAL_5MHz/2) /* verified on pcb */
|
||||
MCFG_CPU_PROGRAM_MAP(pitnrun_sound_map)
|
||||
@ -239,7 +239,7 @@ static MACHINE_CONFIG_START( pitnrun, pitnrun_state )
|
||||
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
|
||||
MCFG_SCREEN_SIZE(256, 256)
|
||||
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
|
||||
MCFG_SCREEN_UPDATE_DRIVER(pitnrun_state, screen_update_pitnrun)
|
||||
MCFG_SCREEN_UPDATE_DRIVER(pitnrun_state, screen_update)
|
||||
MCFG_SCREEN_PALETTE("palette")
|
||||
|
||||
MCFG_GFXDECODE_ADD("gfxdecode", "palette", pitnrun)
|
||||
@ -331,5 +331,5 @@ ROM_START( pitnruna )
|
||||
ROM_LOAD( "clr.3", 0x0040, 0x0020, CRC(25e70e5e) SHA1(fdb9c69e9568a725dd0e3ac25835270fb4f49280) )
|
||||
ROM_END
|
||||
|
||||
GAME( 1984, pitnrun, 0, pitnrun, pitnrun, driver_device, 0, ROT90, "Taito Corporation", "Pit & Run - F-1 Race (set 1)", GAME_IMPERFECT_SOUND )
|
||||
GAME( 1984, pitnruna, pitnrun, pitnrun, pitnrun, driver_device, 0, ROT90, "Taito Corporation", "Pit & Run - F-1 Race (set 2)", GAME_IMPERFECT_SOUND )
|
||||
GAME( 1984, pitnrun, 0, pitnrun, pitnrun, driver_device, 0, ROT90, "Taito Corporation", "Pit & Run - F-1 Race (set 1)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
|
||||
GAME( 1984, pitnruna, pitnrun, pitnrun, pitnrun, driver_device, 0, ROT90, "Taito Corporation", "Pit & Run - F-1 Race (set 2)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
|
||||
|
@ -31,13 +31,13 @@ Sound not working on Return of Lady Frog
|
||||
|
||||
TS 2006.12.22:
|
||||
- Funny Strip is runing on pSOS RTOS ( http://en.wikipedia.org/wiki/PSOS and http://dr-linux.net/newbase/reference/psosCD/ ) .
|
||||
There's copyrigth text at $480
|
||||
There's copyright text at $480
|
||||
Also Rebus and TRoLF are running on it (the same internal code structure - traps, interrupt vectors),
|
||||
but copyright messages are removed.
|
||||
- Rebus protection patch sits at the end of trap $b (rtos call) and in some cases returns 0 in D0.
|
||||
It's not a real protection check i think.
|
||||
|
||||
More notes about Funny Strip protection issus at the boottom of source file (DRIVER INIT)
|
||||
More notes about Funny Strip protection issues at the bottom of source file (DRIVER INIT)
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
@ -46,7 +46,6 @@ More notes about Funny Strip protection issus at the boottom of source file (DRI
|
||||
#include "cpu/m68000/m68000.h"
|
||||
#include "sound/2203intf.h"
|
||||
#include "sound/3812intf.h"
|
||||
#include "sound/msm5205.h"
|
||||
#include "includes/splash.h"
|
||||
|
||||
WRITE16_MEMBER(splash_state::splash_sh_irqtrigger_w)
|
||||
@ -70,7 +69,7 @@ WRITE16_MEMBER(splash_state::roldf_sh_irqtrigger_w)
|
||||
space.device().execute().spin_until_time(attotime::from_usec(40));
|
||||
}
|
||||
|
||||
WRITE16_MEMBER(splash_state::splash_coin_w)
|
||||
WRITE16_MEMBER(splash_state::coin_w)
|
||||
{
|
||||
if (ACCESSING_BITS_8_15)
|
||||
{
|
||||
@ -96,8 +95,8 @@ static ADDRESS_MAP_START( splash_map, AS_PROGRAM, 16, splash_state )
|
||||
AM_RANGE(0x840004, 0x840005) AM_READ_PORT("P1")
|
||||
AM_RANGE(0x840006, 0x840007) AM_READ_PORT("P2")
|
||||
AM_RANGE(0x84000e, 0x84000f) AM_WRITE(splash_sh_irqtrigger_w) /* Sound command */
|
||||
AM_RANGE(0x84000a, 0x84003b) AM_WRITE(splash_coin_w) /* Coin Counters + Coin Lockout */
|
||||
AM_RANGE(0x880000, 0x8817ff) AM_RAM_WRITE(splash_vram_w) AM_SHARE("videoram") /* Video RAM */
|
||||
AM_RANGE(0x84000a, 0x84003b) AM_WRITE(coin_w) /* Coin Counters + Coin Lockout */
|
||||
AM_RANGE(0x880000, 0x8817ff) AM_RAM_WRITE(vram_w) AM_SHARE("videoram") /* Video RAM */
|
||||
AM_RANGE(0x881800, 0x881803) AM_RAM AM_SHARE("vregs") /* Scroll registers */
|
||||
AM_RANGE(0x881804, 0x881fff) AM_RAM /* Work RAM */
|
||||
AM_RANGE(0x8c0000, 0x8c0fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")/* Palette is xRRRRxGGGGxBBBBx */
|
||||
@ -169,8 +168,8 @@ static ADDRESS_MAP_START( roldfrog_map, AS_PROGRAM, 16, splash_state )
|
||||
AM_RANGE(0x840004, 0x840005) AM_READ_PORT("P1")
|
||||
AM_RANGE(0x840006, 0x840007) AM_READ_PORT("P2")
|
||||
AM_RANGE(0x84000e, 0x84000f) AM_WRITE(roldf_sh_irqtrigger_w) /* Sound command */
|
||||
AM_RANGE(0x84000a, 0x84003b) AM_WRITE(splash_coin_w) /* Coin Counters + Coin Lockout */
|
||||
AM_RANGE(0x880000, 0x8817ff) AM_RAM_WRITE(splash_vram_w) AM_SHARE("videoram") /* Video RAM */
|
||||
AM_RANGE(0x84000a, 0x84003b) AM_WRITE(coin_w) /* Coin Counters + Coin Lockout */
|
||||
AM_RANGE(0x880000, 0x8817ff) AM_RAM_WRITE(vram_w) AM_SHARE("videoram") /* Video RAM */
|
||||
AM_RANGE(0x881800, 0x881803) AM_RAM AM_SHARE("vregs") /* Scroll registers */
|
||||
AM_RANGE(0x881804, 0x881fff) AM_RAM /* Work RAM */
|
||||
AM_RANGE(0x8c0000, 0x8c0fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")/* Palette is xRRRRxGGGGxBBBBx */
|
||||
@ -224,14 +223,14 @@ static ADDRESS_MAP_START( funystrp_map, AS_PROGRAM, 16, splash_state )
|
||||
AM_RANGE(0x000000, 0x01ffff) AM_ROM /* ROM */
|
||||
AM_RANGE(0x100000, 0x1fffff) AM_RAM /* protection? RAM */
|
||||
AM_RANGE(0x800000, 0x83ffff) AM_RAM AM_SHARE("pixelram") /* Pixel Layer */
|
||||
AM_RANGE(0x84000a, 0x84000b) AM_WRITE(splash_coin_w) /* Coin Counters + Coin Lockout */
|
||||
AM_RANGE(0x84000a, 0x84000b) AM_WRITE(coin_w) /* Coin Counters + Coin Lockout */
|
||||
AM_RANGE(0x84000e, 0x84000f) AM_WRITE(funystrp_sh_irqtrigger_w) /* Sound command */
|
||||
AM_RANGE(0x840000, 0x840001) AM_READ_PORT("DSW1")
|
||||
AM_RANGE(0x840002, 0x840003) AM_READ_PORT("DSW2")
|
||||
AM_RANGE(0x840004, 0x840005) AM_READ_PORT("P1")
|
||||
AM_RANGE(0x840006, 0x840007) AM_READ_PORT("P2")
|
||||
AM_RANGE(0x840008, 0x840009) AM_READ_PORT("SYSTEM")
|
||||
AM_RANGE(0x880000, 0x8817ff) AM_RAM_WRITE(splash_vram_w) AM_SHARE("videoram") /* Video RAM */
|
||||
AM_RANGE(0x880000, 0x8817ff) AM_RAM_WRITE(vram_w) AM_SHARE("videoram") /* Video RAM */
|
||||
AM_RANGE(0x881800, 0x881803) AM_RAM AM_SHARE("vregs") /* Scroll registers */
|
||||
AM_RANGE(0x881804, 0x881fff) AM_WRITENOP
|
||||
AM_RANGE(0x8c0000, 0x8c0fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")/* Palette is xRRRRxGGGGxBBBBx */
|
||||
@ -472,6 +471,11 @@ static GFXDECODE_START( splash )
|
||||
GFXDECODE_END
|
||||
|
||||
|
||||
MACHINE_START_MEMBER(splash_state,splash)
|
||||
{
|
||||
save_item(NAME(m_adpcm_data));
|
||||
}
|
||||
|
||||
MACHINE_RESET_MEMBER(splash_state,splash)
|
||||
{
|
||||
m_adpcm_data = 0;
|
||||
@ -495,13 +499,14 @@ static MACHINE_CONFIG_START( splash, splash_state )
|
||||
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
|
||||
MCFG_SCREEN_SIZE(64*8, 64*8)
|
||||
MCFG_SCREEN_VISIBLE_AREA(2*8, 48*8-1, 2*8, 32*8-1)
|
||||
MCFG_SCREEN_UPDATE_DRIVER(splash_state, screen_update_splash)
|
||||
MCFG_SCREEN_UPDATE_DRIVER(splash_state, screen_update)
|
||||
MCFG_SCREEN_PALETTE("palette")
|
||||
|
||||
MCFG_GFXDECODE_ADD("gfxdecode", "palette", splash)
|
||||
MCFG_PALETTE_ADD("palette", 2048)
|
||||
MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
|
||||
|
||||
MCFG_MACHINE_START_OVERRIDE(splash_state, splash )
|
||||
MCFG_MACHINE_RESET_OVERRIDE(splash_state, splash )
|
||||
|
||||
/* sound hardware */
|
||||
@ -517,6 +522,13 @@ static MACHINE_CONFIG_START( splash, splash_state )
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
|
||||
MACHINE_START_MEMBER(splash_state, roldfrog)
|
||||
{
|
||||
save_item(NAME(m_ret));
|
||||
save_item(NAME(m_vblank_irq));
|
||||
save_item(NAME(m_sound_irq));
|
||||
}
|
||||
|
||||
INTERRUPT_GEN_MEMBER(splash_state::roldfrog_interrupt)
|
||||
{
|
||||
m_vblank_irq = 1;
|
||||
@ -541,14 +553,14 @@ static MACHINE_CONFIG_START( roldfrog, splash_state )
|
||||
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
|
||||
MCFG_SCREEN_SIZE(64*8, 64*8)
|
||||
MCFG_SCREEN_VISIBLE_AREA(2*8, 48*8-1, 2*8, 32*8-1)
|
||||
MCFG_SCREEN_UPDATE_DRIVER(splash_state, screen_update_splash)
|
||||
MCFG_SCREEN_UPDATE_DRIVER(splash_state, screen_update)
|
||||
MCFG_SCREEN_PALETTE("palette")
|
||||
|
||||
MCFG_GFXDECODE_ADD("gfxdecode", "palette", splash)
|
||||
MCFG_PALETTE_ADD("palette", 2048)
|
||||
MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
|
||||
|
||||
|
||||
MCFG_MACHINE_START_OVERRIDE(splash_state, roldfrog )
|
||||
MCFG_MACHINE_RESET_OVERRIDE(splash_state, splash )
|
||||
|
||||
/* sound hardware */
|
||||
@ -592,6 +604,21 @@ WRITE_LINE_MEMBER(splash_state::adpcm_int2)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
MACHINE_START_MEMBER(splash_state, funystrp)
|
||||
{
|
||||
save_item(NAME(m_funystrp_val));
|
||||
save_item(NAME(m_funystrp_ff3cc7_val));
|
||||
save_item(NAME(m_funystrp_ff3cc8_val));
|
||||
save_item(NAME(m_msm_data1));
|
||||
save_item(NAME(m_msm_data2));
|
||||
save_item(NAME(m_msm_toggle1));
|
||||
save_item(NAME(m_msm_toggle2));
|
||||
save_item(NAME(m_msm_source));
|
||||
save_item(NAME(m_snd_interrupt_enable1));
|
||||
save_item(NAME(m_snd_interrupt_enable2));
|
||||
}
|
||||
|
||||
static MACHINE_CONFIG_START( funystrp, splash_state )
|
||||
|
||||
/* basic machine hardware */
|
||||
@ -616,6 +643,7 @@ static MACHINE_CONFIG_START( funystrp, splash_state )
|
||||
MCFG_PALETTE_ADD("palette", 2048)
|
||||
MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
|
||||
|
||||
MCFG_MACHINE_START_OVERRIDE(splash_state, funystrp )
|
||||
MCFG_MACHINE_RESET_OVERRIDE(splash_state, funystrp )
|
||||
|
||||
/* sound hardware */
|
||||
@ -1035,222 +1063,222 @@ READ16_MEMBER(splash_state::funystrp_protection_r)
|
||||
// sub $7ACC, $C7EE, subtractions, original value from 68k
|
||||
|
||||
case ((0x107001 / 2) + 0x0030): // $7ACE
|
||||
funystrp_val = funystrp_ff3cc7_val & 0x7f;
|
||||
m_funystrp_val = m_funystrp_ff3cc7_val & 0x7f;
|
||||
return 0;
|
||||
|
||||
case ((0x107001 / 2) + 0x013e): // $7AFC
|
||||
return (funystrp_val + 0x13) & 0xff;
|
||||
return (m_funystrp_val + 0x13) & 0xff;
|
||||
|
||||
case ((0x107001 / 2) + 0x0279): // $7B38
|
||||
return (funystrp_val + 0x22) & 0xff;
|
||||
return (m_funystrp_val + 0x22) & 0xff;
|
||||
|
||||
case ((0x107001 / 2) + 0x0357): // $7B6E
|
||||
return (funystrp_val + 0x44) & 0xff;
|
||||
return (m_funystrp_val + 0x44) & 0xff;
|
||||
|
||||
case ((0x107001 / 2) + 0x03b1): // $7BA4
|
||||
return (funystrp_val + 0x6a) & 0xff;
|
||||
return (m_funystrp_val + 0x6a) & 0xff;
|
||||
|
||||
//-----------------------------------------------------------------
|
||||
// sub $7E76, subtractions, original value from protection device
|
||||
|
||||
case ((0x110001 / 2) + 0x0013): // $7E80
|
||||
funystrp_val = 0;
|
||||
m_funystrp_val = 0;
|
||||
return 0;
|
||||
|
||||
case ((0x110001 / 2) + 0x0125): // $7E96
|
||||
return (funystrp_val + 0x03) & 0xff;
|
||||
return (m_funystrp_val + 0x03) & 0xff;
|
||||
|
||||
case ((0x110001 / 2) + 0x0261): // $7ECE
|
||||
return (funystrp_val + 0x08) & 0xff;
|
||||
return (m_funystrp_val + 0x08) & 0xff;
|
||||
|
||||
case ((0x110001 / 2) + 0x0322): // $7F00
|
||||
return (funystrp_val + 0x12) & 0xff;
|
||||
return (m_funystrp_val + 0x12) & 0xff;
|
||||
|
||||
case ((0x110001 / 2) + 0x039b): // $7F36
|
||||
return (funystrp_val + 0x70) & 0xff;
|
||||
return (m_funystrp_val + 0x70) & 0xff;
|
||||
|
||||
//-----------------------------------------------------------------
|
||||
// sub $7F70, $8038, $116E2, no subtractions, straight compare!, original value from 68k
|
||||
// increase ff3cc8 value in sub $116e2
|
||||
|
||||
case ((0x100001 / 2) + 0x0010): // $7F72
|
||||
funystrp_val = funystrp_ff3cc8_val;
|
||||
m_funystrp_val = m_funystrp_ff3cc8_val;
|
||||
return 0;
|
||||
|
||||
case ((0x100001 / 2) + 0x0123): // $7F9A
|
||||
return (funystrp_val + 0x00) & 0xff;
|
||||
return (m_funystrp_val + 0x00) & 0xff;
|
||||
|
||||
case ((0x100001 / 2) + 0x0257): // $7FC4
|
||||
return (funystrp_val + 0x00) & 0xff;
|
||||
return (m_funystrp_val + 0x00) & 0xff;
|
||||
|
||||
case ((0x100001 / 2) + 0x0312): // $7FEA
|
||||
return (funystrp_val + 0x00) & 0xff;
|
||||
return (m_funystrp_val + 0x00) & 0xff;
|
||||
|
||||
case ((0x100001 / 2) + 0x0395): // $8010
|
||||
// increment $ff3cc8 in $117A8
|
||||
return (funystrp_val + 0x00) & 0xff;
|
||||
return (m_funystrp_val + 0x00) & 0xff;
|
||||
|
||||
//-----------------------------------------------------------------
|
||||
// sub $8522, subtractions, original value from protection device, weird cases
|
||||
|
||||
case ((0x104801 / 2) + 0x013A): // $8524
|
||||
funystrp_val = 0;
|
||||
m_funystrp_val = 0;
|
||||
return 0;
|
||||
|
||||
// this and above usually swapped... fooling the lazy bootlegger?
|
||||
case ((0x104801 / 2) + 0x0017): // $8542
|
||||
return (funystrp_val + 0x12) & 0xff;
|
||||
return (m_funystrp_val + 0x12) & 0xff;
|
||||
|
||||
// first case... weird?
|
||||
// case ((0x104801 / 2) + 0x013A): // $857E
|
||||
// return (funystrp_val + 0x00) & 0xff;
|
||||
// return (m_funystrp_val + 0x00) & 0xff;
|
||||
|
||||
case ((0x104801 / 2) + 0x0277): // $85A4
|
||||
return (funystrp_val + 0x04) & 0xff;
|
||||
return (m_funystrp_val + 0x04) & 0xff;
|
||||
|
||||
case ((0x104801 / 2) + 0x034b): // $85D6
|
||||
return (funystrp_val + 0x37) & 0xff;
|
||||
return (m_funystrp_val + 0x37) & 0xff;
|
||||
|
||||
case ((0x104801 / 2) + 0x03ac): // $860E
|
||||
return (funystrp_val + 0x77) & 0xff;
|
||||
return (m_funystrp_val + 0x77) & 0xff;
|
||||
|
||||
//-----------------------------------------------------------------
|
||||
// sub $88F8, subtractions, original value from protection device
|
||||
// verified as working!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||
|
||||
case ((0x127001 / 2) + 0x0045): // $88FA
|
||||
funystrp_val = 0;
|
||||
m_funystrp_val = 0;
|
||||
return 0;
|
||||
|
||||
case ((0x127001 / 2) + 0x0145): // $8918
|
||||
return (funystrp_val + 0x01) & 0xff;
|
||||
return (m_funystrp_val + 0x01) & 0xff;
|
||||
|
||||
case ((0x127001 / 2) + 0x028B): // $894A
|
||||
return (funystrp_val + 0x02) & 0xff;
|
||||
return (m_funystrp_val + 0x02) & 0xff;
|
||||
|
||||
case ((0x127001 / 2) + 0x0363): // $8982
|
||||
return (funystrp_val + 0x03) & 0xff;
|
||||
return (m_funystrp_val + 0x03) & 0xff;
|
||||
|
||||
case ((0x127001 / 2) + 0x03BA): // $89B4
|
||||
return (funystrp_val + 0x00) & 0xff;
|
||||
return (m_funystrp_val + 0x00) & 0xff;
|
||||
|
||||
//-----------------------------------------------------------------
|
||||
// sub $9DD2, subtractions, original value from protection device
|
||||
|
||||
case ((0x170001 / 2) + 0x006B): // $9DD4
|
||||
funystrp_val = 0;
|
||||
m_funystrp_val = 0;
|
||||
return 0;
|
||||
|
||||
case ((0x170001 / 2) + 0x0162): // $9DF2
|
||||
return (funystrp_val + 0x00) & 0xff;
|
||||
return (m_funystrp_val + 0x00) & 0xff;
|
||||
|
||||
case ((0x170001 / 2) + 0x02A7): // $9E1E
|
||||
return (funystrp_val + 0x7c) & 0xff;
|
||||
return (m_funystrp_val + 0x7c) & 0xff;
|
||||
|
||||
case ((0x170001 / 2) + 0x0381): // $9E54
|
||||
return (funystrp_val + 0x30) & 0xff;
|
||||
return (m_funystrp_val + 0x30) & 0xff;
|
||||
|
||||
case ((0x170001 / 2) + 0x03C7): // $9E8A
|
||||
return (funystrp_val + 0x28) & 0xff;
|
||||
return (m_funystrp_val + 0x28) & 0xff;
|
||||
|
||||
//-----------------------------------------------------------------
|
||||
// sub $A944, subtractions, original value from protection device
|
||||
// verified as working!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||
|
||||
case ((0x177001 / 2) + 0x0079): // $A946
|
||||
funystrp_val = 0;
|
||||
m_funystrp_val = 0;
|
||||
return 0;
|
||||
|
||||
case ((0x177001 / 2) + 0x01A0): // $A964
|
||||
return (funystrp_val + 0x02) & 0xff;
|
||||
return (m_funystrp_val + 0x02) & 0xff;
|
||||
|
||||
case ((0x177001 / 2) + 0x02B2): // $A99C
|
||||
return (funystrp_val + 0x04) & 0xff;
|
||||
return (m_funystrp_val + 0x04) & 0xff;
|
||||
|
||||
case ((0x177001 / 2) + 0x039A): // $A9CE
|
||||
return (funystrp_val + 0x25) & 0xff;
|
||||
return (m_funystrp_val + 0x25) & 0xff;
|
||||
|
||||
case ((0x177001 / 2) + 0x03D3): // $AA04
|
||||
return (funystrp_val + 0x16) & 0xff;
|
||||
return (m_funystrp_val + 0x16) & 0xff;
|
||||
|
||||
//-----------------------------------------------------------------
|
||||
// sub $C5E4, subtractions, original value from 68k
|
||||
|
||||
// these cases are already in sub $7ACC, last one is new!!
|
||||
// case ((0x107001 / 2) + 0x0030): // $7ACE
|
||||
// funystrp_val = funystrp_ff3cc7_val & 0x7f;
|
||||
// m_funystrp_val = m_funystrp_ff3cc7_val & 0x7f;
|
||||
// return 0;
|
||||
|
||||
// case ((0x107001 / 2) + 0x013e): // $7AFC
|
||||
// return (funystrp_val + 0x13) & 0xff;
|
||||
// return (m_funystrp_val + 0x13) & 0xff;
|
||||
|
||||
// case ((0x107001 / 2) + 0x0279): // $7B38
|
||||
// return (funystrp_val + 0x22) & 0xff;
|
||||
// return (m_funystrp_val + 0x22) & 0xff;
|
||||
|
||||
// case ((0x107001 / 2) + 0x0357): // $7B6E
|
||||
// return (funystrp_val + 0x44) & 0xff;
|
||||
// return (m_funystrp_val + 0x44) & 0xff;
|
||||
|
||||
case ((0x107001 / 2) + 0x0381): // $7BA4
|
||||
return (funystrp_val + 0x6a) & 0xff;
|
||||
return (m_funystrp_val + 0x6a) & 0xff;
|
||||
|
||||
//-----------------------------------------------------------------
|
||||
// sub $DBCE, subtractions, original value from protection device
|
||||
|
||||
case ((0x140001 / 2) + 0x0052): // $DBD0
|
||||
funystrp_val = 0;
|
||||
m_funystrp_val = 0;
|
||||
return 0;
|
||||
|
||||
case ((0x140001 / 2) + 0x015C): // $DBEE
|
||||
return (funystrp_val + 0x15) & 0xff;
|
||||
return (m_funystrp_val + 0x15) & 0xff;
|
||||
|
||||
case ((0x140001 / 2) + 0x0293): // $DC2A
|
||||
return (funystrp_val + 0x03) & 0xff;
|
||||
return (m_funystrp_val + 0x03) & 0xff;
|
||||
|
||||
case ((0x140001 / 2) + 0x0374): // $DC5C
|
||||
return (funystrp_val + 0x55) & 0xff;
|
||||
return (m_funystrp_val + 0x55) & 0xff;
|
||||
|
||||
case ((0x140001 / 2) + 0x03C0): // $DC92
|
||||
return (funystrp_val + 0x44) & 0xff;
|
||||
return (m_funystrp_val + 0x44) & 0xff;
|
||||
|
||||
//-----------------------------------------------------------------
|
||||
// sub $F72C, subtractions, original value from protection device,
|
||||
// routine verified working!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||
|
||||
case ((0x100001 / 2) + 0x0017): // $F72E
|
||||
funystrp_val = 0;
|
||||
m_funystrp_val = 0;
|
||||
return 0;
|
||||
|
||||
case ((0x100001 / 2) + 0x0127): // $F74C
|
||||
return (funystrp_val + 0x17) & 0xff;
|
||||
return (m_funystrp_val + 0x17) & 0xff;
|
||||
|
||||
case ((0x110001 / 2) + 0x0263): // $F788
|
||||
return (funystrp_val + 0x0f) & 0xff;
|
||||
return (m_funystrp_val + 0x0f) & 0xff;
|
||||
|
||||
case ((0x110001 / 2) + 0x0324): // $F7BE
|
||||
return (funystrp_val + 0x12) & 0xff;
|
||||
return (m_funystrp_val + 0x12) & 0xff;
|
||||
|
||||
case ((0x110001 / 2) + 0x0399): // $F7F4
|
||||
return (funystrp_val + 0x70) & 0xff;
|
||||
return (m_funystrp_val + 0x70) & 0xff;
|
||||
|
||||
//-----------------------------------------------------------------
|
||||
// sub $F82E, subtractions, original value from protection device,
|
||||
|
||||
case ((0x100001 / 2) + 0x0013): // $F830
|
||||
funystrp_val = 0;
|
||||
m_funystrp_val = 0;
|
||||
return 0;
|
||||
|
||||
case ((0x100001 / 2) + 0x0125): // $F84E
|
||||
return (funystrp_val + 0x17) & 0xff;
|
||||
return (m_funystrp_val + 0x17) & 0xff;
|
||||
|
||||
// used in sub $7E76
|
||||
// case ((0x110001 / 2) + 0x0261): // $F88A
|
||||
// return (funystrp_val + 0x0f) & 0xff;
|
||||
// return (m_funystrp_val + 0x0f) & 0xff;
|
||||
|
||||
// case ((0x110001 / 2) + 0x0322): // $F8C0
|
||||
// return (funystrp_val + 0x12) & 0xff;
|
||||
// return (m_funystrp_val + 0x12) & 0xff;
|
||||
|
||||
// case ((0x110001 / 2) + 0x039B): // $F8F6
|
||||
// return (funystrp_val + 0x70) & 0xff;
|
||||
// return (m_funystrp_val + 0x70) & 0xff;
|
||||
|
||||
//-----------------------------------------------------------------
|
||||
// sub $10FE2, subtractions, original value from protection device
|
||||
@ -1258,20 +1286,20 @@ READ16_MEMBER(splash_state::funystrp_protection_r)
|
||||
// examine later to verify this is right
|
||||
|
||||
case ((0x105001 / 2) + 0x0021): // $10FF6
|
||||
funystrp_val = 0;
|
||||
m_funystrp_val = 0;
|
||||
return 0;
|
||||
|
||||
case ((0x105001 / 2) + 0x0131): // $1100C
|
||||
return (funystrp_val + 0x51) & 0xff;
|
||||
return (m_funystrp_val + 0x51) & 0xff;
|
||||
|
||||
case ((0x105001 / 2) + 0x026a): // $11038
|
||||
return (funystrp_val + 0x22) & 0xff;
|
||||
return (m_funystrp_val + 0x22) & 0xff;
|
||||
|
||||
case ((0x105001 / 2) + 0x0331): // $11060
|
||||
return (funystrp_val + 0x00) & 0xff;
|
||||
return (m_funystrp_val + 0x00) & 0xff;
|
||||
|
||||
case ((0x105001 / 2) + 0x03ab): // $11078
|
||||
return (funystrp_val + 0x03) & 0xff;
|
||||
return (m_funystrp_val + 0x03) & 0xff;
|
||||
|
||||
//-----------------------------------------------------------------
|
||||
// sub $11F2C, subtractions, original value from protection device,
|
||||
@ -1279,20 +1307,20 @@ READ16_MEMBER(splash_state::funystrp_protection_r)
|
||||
// examine later to verify this is right
|
||||
|
||||
case ((0x183001 / 2) + 0x0088): // $11F3C
|
||||
funystrp_val = 0;
|
||||
m_funystrp_val = 0;
|
||||
return 0;
|
||||
|
||||
case ((0x183001 / 2) + 0x01A7): // $11F5A
|
||||
return (funystrp_val + 0x09) & 0xff;
|
||||
return (m_funystrp_val + 0x09) & 0xff;
|
||||
|
||||
case ((0x183001 / 2) + 0x02C4): // $11F86
|
||||
return (funystrp_val + 0x01) & 0xff;
|
||||
return (m_funystrp_val + 0x01) & 0xff;
|
||||
|
||||
case ((0x183001 / 2) + 0x03B3): // $11FAA
|
||||
return (funystrp_val + 0x63) & 0xff;
|
||||
return (m_funystrp_val + 0x63) & 0xff;
|
||||
|
||||
case ((0x183001 / 2) + 0x03E9): // $11FD2
|
||||
return (funystrp_val + 0x65) & 0xff;
|
||||
return (m_funystrp_val + 0x65) & 0xff;
|
||||
}
|
||||
|
||||
return 0;
|
||||
@ -1318,11 +1346,11 @@ WRITE16_MEMBER(splash_state::funystrp_protection_w)
|
||||
return;
|
||||
|
||||
case (0x1007e5/2):
|
||||
funystrp_ff3cc8_val = data;
|
||||
m_funystrp_ff3cc8_val = data;
|
||||
return;
|
||||
|
||||
case (0x1007e7/2):
|
||||
funystrp_ff3cc7_val = data;
|
||||
m_funystrp_ff3cc7_val = data;
|
||||
return;
|
||||
}
|
||||
}
|
||||
@ -1341,12 +1369,12 @@ DRIVER_INIT_MEMBER(splash_state,funystrp)
|
||||
m_maincpu->space(AS_PROGRAM).install_read_handler(0x100000, 0x1fffff, read16_delegate(FUNC(splash_state::funystrp_protection_r),this));
|
||||
}
|
||||
|
||||
GAME( 1992, splash, 0, splash, splash, splash_state, splash, ROT0, "Gaelco / OMK Software", "Splash! (Ver. 1.2 World)", 0 )
|
||||
GAME( 1992, splash10, splash, splash, splash, splash_state, splash10, ROT0, "Gaelco / OMK Software", "Splash! (Ver. 1.0 World)", 0 )
|
||||
GAME( 1992, paintlad, splash, splash, splash, splash_state, splash, ROT0, "Gaelco / OMK Software", "Painted Lady (Splash) (Ver. 1.3 US)", 0 )
|
||||
GAME( 1992, splash, 0, splash, splash, splash_state, splash, ROT0, "Gaelco / OMK Software", "Splash! (Ver. 1.2 World)", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1992, splash10, splash, splash, splash, splash_state, splash10, ROT0, "Gaelco / OMK Software", "Splash! (Ver. 1.0 World)", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1992, paintlad, splash, splash, splash, splash_state, splash, ROT0, "Gaelco / OMK Software", "Painted Lady (Splash) (Ver. 1.3 US)", GAME_SUPPORTS_SAVE )
|
||||
|
||||
GAME( 1993, roldfrog, 0, roldfrog, splash, splash_state, roldfrog, ROT0, "Microhard", "The Return of Lady Frog (set 1)", 0)
|
||||
GAME( 1993, roldfroga,roldfrog, roldfrog, splash, splash_state, roldfrog, ROT0, "Microhard", "The Return of Lady Frog (set 2)", 0 )
|
||||
GAME( 1995, rebus, 0, roldfrog, splash, splash_state, rebus, ROT0, "Microhard", "Rebus", GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION | GAME_NO_SOUND )
|
||||
GAME( 199?, funystrp, 0, funystrp, funystrp, splash_state, funystrp, ROT0, "Microhard / MagicGames", "Funny Strip", GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION )
|
||||
GAME( 199?, puckpepl, funystrp, funystrp, funystrp, splash_state, funystrp, ROT0, "Microhard", "Puck People", GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION )
|
||||
GAME( 1993, roldfrog, 0, roldfrog, splash, splash_state, roldfrog, ROT0, "Microhard", "The Return of Lady Frog (set 1)", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1993, roldfroga,roldfrog, roldfrog, splash, splash_state, roldfrog, ROT0, "Microhard", "The Return of Lady Frog (set 2)", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1995, rebus, 0, roldfrog, splash, splash_state, rebus, ROT0, "Microhard", "Rebus", GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION | GAME_NO_SOUND | GAME_SUPPORTS_SAVE )
|
||||
GAME( 199?, funystrp, 0, funystrp, funystrp, splash_state, funystrp, ROT0, "Microhard / MagicGames", "Funny Strip", GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION | GAME_SUPPORTS_SAVE )
|
||||
GAME( 199?, puckpepl, funystrp, funystrp, funystrp, splash_state, funystrp, ROT0, "Microhard", "Puck People", GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION | GAME_SUPPORTS_SAVE )
|
||||
|
@ -27,14 +27,19 @@ class spoker_state : public driver_device
|
||||
public:
|
||||
spoker_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: driver_device(mconfig, type, tag),
|
||||
m_bg_tile_ram(*this, "bg_tile_ram"),
|
||||
m_fg_tile_ram(*this, "fg_tile_ram"),
|
||||
m_fg_color_ram(*this, "fg_color_ram"),
|
||||
m_maincpu(*this, "maincpu"),
|
||||
m_gfxdecode(*this, "gfxdecode"),
|
||||
m_screen(*this, "screen"),
|
||||
m_palette(*this, "palette") { }
|
||||
m_palette(*this, "palette"),
|
||||
m_bg_tile_ram(*this, "bg_tile_ram"),
|
||||
m_fg_tile_ram(*this, "fg_tile_ram"),
|
||||
m_fg_color_ram(*this, "fg_color_ram") { }
|
||||
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_device<gfxdecode_device> m_gfxdecode;
|
||||
required_device<screen_device> m_screen;
|
||||
required_device<palette_device> m_palette;
|
||||
|
||||
required_shared_ptr<UINT8> m_bg_tile_ram;
|
||||
tilemap_t *m_bg_tilemap;
|
||||
|
||||
@ -42,32 +47,39 @@ public:
|
||||
required_shared_ptr<UINT8> m_fg_color_ram;
|
||||
tilemap_t *m_fg_tilemap;
|
||||
|
||||
int m_video_enable;
|
||||
// common
|
||||
int m_nmi_ack;
|
||||
UINT8 m_out[3];
|
||||
|
||||
// spk116it and spk115it specific
|
||||
int m_video_enable;
|
||||
int m_hopper;
|
||||
UINT8 m_igs_magic[2];
|
||||
UINT8 m_out[3];
|
||||
|
||||
// common
|
||||
DECLARE_WRITE8_MEMBER(bg_tile_w);
|
||||
DECLARE_WRITE8_MEMBER(fg_tile_w);
|
||||
DECLARE_WRITE8_MEMBER(fg_color_w);
|
||||
DECLARE_WRITE8_MEMBER(spoker_nmi_and_coins_w);
|
||||
DECLARE_WRITE8_MEMBER(spoker_video_and_leds_w);
|
||||
DECLARE_WRITE8_MEMBER(spoker_leds_w);
|
||||
DECLARE_WRITE8_MEMBER(spoker_magic_w);
|
||||
DECLARE_READ8_MEMBER(spoker_magic_r);
|
||||
DECLARE_WRITE8_MEMBER(nmi_and_coins_w);
|
||||
DECLARE_WRITE8_MEMBER(leds_w);
|
||||
|
||||
// spk116it and spk115it specific
|
||||
DECLARE_WRITE8_MEMBER(video_and_leds_w);
|
||||
DECLARE_WRITE8_MEMBER(magic_w);
|
||||
DECLARE_READ8_MEMBER(magic_r);
|
||||
|
||||
DECLARE_CUSTOM_INPUT_MEMBER(hopper_r);
|
||||
|
||||
DECLARE_DRIVER_INIT(spk116it);
|
||||
DECLARE_DRIVER_INIT(3super8);
|
||||
TILE_GET_INFO_MEMBER(get_bg_tile_info);
|
||||
TILE_GET_INFO_MEMBER(get_fg_tile_info);
|
||||
virtual void machine_start();
|
||||
virtual void machine_reset();
|
||||
virtual void video_start();
|
||||
UINT32 screen_update_spoker(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
INTERRUPT_GEN_MEMBER(spoker_interrupt);
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_device<gfxdecode_device> m_gfxdecode;
|
||||
required_device<screen_device> m_screen;
|
||||
required_device<palette_device> m_palette;
|
||||
|
||||
TILE_GET_INFO_MEMBER(get_bg_tile_info);
|
||||
TILE_GET_INFO_MEMBER(get_fg_tile_info);
|
||||
|
||||
UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
};
|
||||
|
||||
WRITE8_MEMBER(spoker_state::bg_tile_w)
|
||||
@ -107,7 +119,7 @@ void spoker_state::video_start()
|
||||
m_fg_tilemap->set_transparent_pen(0);
|
||||
}
|
||||
|
||||
UINT32 spoker_state::screen_update_spoker(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||
UINT32 spoker_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||
{
|
||||
bitmap.fill(m_palette->black_pen(), cliprect);
|
||||
m_bg_tilemap->draw(screen, bitmap, cliprect, 0, 0);
|
||||
@ -132,7 +144,7 @@ static void show_out(UINT8 *out)
|
||||
#endif
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(spoker_state::spoker_nmi_and_coins_w)
|
||||
WRITE8_MEMBER(spoker_state::nmi_and_coins_w)
|
||||
{
|
||||
if ((data) & (0x22))
|
||||
{
|
||||
@ -156,7 +168,7 @@ WRITE8_MEMBER(spoker_state::spoker_nmi_and_coins_w)
|
||||
show_out(m_out);
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(spoker_state::spoker_video_and_leds_w)
|
||||
WRITE8_MEMBER(spoker_state::video_and_leds_w)
|
||||
{
|
||||
set_led_status(machine(), 4, data & 0x01); // start?
|
||||
set_led_status(machine(), 5, data & 0x04); // l_bet?
|
||||
@ -168,7 +180,7 @@ WRITE8_MEMBER(spoker_state::spoker_video_and_leds_w)
|
||||
show_out(m_out);
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(spoker_state::spoker_leds_w)
|
||||
WRITE8_MEMBER(spoker_state::leds_w)
|
||||
{
|
||||
set_led_status(machine(), 0, data & 0x01); // stop_1
|
||||
set_led_status(machine(), 1, data & 0x02); // stop_2
|
||||
@ -180,7 +192,7 @@ WRITE8_MEMBER(spoker_state::spoker_leds_w)
|
||||
show_out(m_out);
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(spoker_state::spoker_magic_w)
|
||||
WRITE8_MEMBER(spoker_state::magic_w)
|
||||
{
|
||||
m_igs_magic[offset] = data;
|
||||
|
||||
@ -198,7 +210,7 @@ WRITE8_MEMBER(spoker_state::spoker_magic_w)
|
||||
}
|
||||
}
|
||||
|
||||
READ8_MEMBER(spoker_state::spoker_magic_r)
|
||||
READ8_MEMBER(spoker_state::magic_r)
|
||||
{
|
||||
switch(m_igs_magic[0])
|
||||
{
|
||||
@ -237,14 +249,14 @@ static ADDRESS_MAP_START( spoker_portmap, AS_IO, 8, spoker_state )
|
||||
AM_RANGE( 0x5000, 0x5fff ) AM_RAM_WRITE(fg_tile_w ) AM_SHARE("fg_tile_ram")
|
||||
|
||||
/* TODO: ppi #1 */
|
||||
AM_RANGE( 0x6480, 0x6480 ) AM_WRITE(spoker_nmi_and_coins_w )
|
||||
AM_RANGE( 0x6480, 0x6480 ) AM_WRITE(nmi_and_coins_w )
|
||||
AM_RANGE( 0x6481, 0x6481 ) AM_READ_PORT( "SERVICE" )
|
||||
AM_RANGE( 0x6482, 0x6482 ) AM_READ_PORT( "COINS" )
|
||||
|
||||
/* TODO: ppi #2 */
|
||||
AM_RANGE( 0x6490, 0x6490 ) AM_READ_PORT( "BUTTONS1" )
|
||||
AM_RANGE( 0x6491, 0x6491 ) AM_WRITE(spoker_video_and_leds_w )
|
||||
AM_RANGE( 0x6492, 0x6492 ) AM_WRITE(spoker_leds_w )
|
||||
AM_RANGE( 0x6491, 0x6491 ) AM_WRITE(video_and_leds_w )
|
||||
AM_RANGE( 0x6492, 0x6492 ) AM_WRITE(leds_w )
|
||||
|
||||
AM_RANGE( 0x64a0, 0x64a0 ) AM_READ_PORT( "BUTTONS2" )
|
||||
|
||||
@ -252,7 +264,7 @@ static ADDRESS_MAP_START( spoker_portmap, AS_IO, 8, spoker_state )
|
||||
|
||||
AM_RANGE( 0x64c0, 0x64c0 ) AM_DEVREADWRITE("oki", okim6295_device, read, write)
|
||||
|
||||
AM_RANGE( 0x64d0, 0x64d1 ) AM_READWRITE(spoker_magic_r, spoker_magic_w ) // DSW1-5
|
||||
AM_RANGE( 0x64d0, 0x64d1 ) AM_READWRITE(magic_r, magic_w ) // DSW1-5
|
||||
|
||||
AM_RANGE( 0x7000, 0x7fff ) AM_RAM_WRITE(fg_color_w ) AM_SHARE("fg_color_ram")
|
||||
ADDRESS_MAP_END
|
||||
@ -279,10 +291,10 @@ static ADDRESS_MAP_START( 3super8_portmap, AS_IO, 8, spoker_state )
|
||||
AM_RANGE( 0x6490, 0x6490 ) AM_READ_PORT( "IN1" )
|
||||
AM_RANGE( 0x6491, 0x6491 ) AM_DEVREADWRITE("oki", okim6295_device, read, write)
|
||||
AM_RANGE( 0x64a0, 0x64a0 ) AM_READ_PORT( "IN2" )
|
||||
AM_RANGE( 0x64b0, 0x64b0 ) AM_WRITE(spoker_leds_w )
|
||||
AM_RANGE( 0x64b0, 0x64b0 ) AM_WRITE(leds_w )
|
||||
AM_RANGE( 0x64c0, 0x64c0 ) AM_READNOP //irq ack?
|
||||
|
||||
AM_RANGE( 0x64f0, 0x64f0 ) AM_WRITE(spoker_nmi_and_coins_w )
|
||||
AM_RANGE( 0x64f0, 0x64f0 ) AM_WRITE(nmi_and_coins_w )
|
||||
|
||||
AM_RANGE( 0x7000, 0x7fff ) AM_RAM_WRITE(fg_color_w ) AM_SHARE("fg_color_ram")
|
||||
ADDRESS_MAP_END
|
||||
@ -510,6 +522,15 @@ GFXDECODE_END
|
||||
Machine Drivers
|
||||
***************************************************************************/
|
||||
|
||||
void spoker_state::machine_start()
|
||||
{
|
||||
save_item(NAME(m_nmi_ack));
|
||||
save_item(NAME(m_out));
|
||||
save_item(NAME(m_video_enable));
|
||||
save_item(NAME(m_hopper));
|
||||
save_item(NAME(m_igs_magic));
|
||||
}
|
||||
|
||||
void spoker_state::machine_reset()
|
||||
{
|
||||
m_nmi_ack = 0;
|
||||
@ -517,18 +538,13 @@ void spoker_state::machine_reset()
|
||||
m_video_enable = 1;
|
||||
}
|
||||
|
||||
INTERRUPT_GEN_MEMBER(spoker_state::spoker_interrupt)
|
||||
{
|
||||
device.execute().set_input_line(INPUT_LINE_NMI, ASSERT_LINE);
|
||||
}
|
||||
|
||||
static MACHINE_CONFIG_START( spoker, spoker_state )
|
||||
|
||||
/* basic machine hardware */
|
||||
MCFG_CPU_ADD("maincpu", Z180, XTAL_12MHz / 2) /* HD64180RP8, 8 MHz? */
|
||||
MCFG_CPU_PROGRAM_MAP(spoker_map)
|
||||
MCFG_CPU_IO_MAP(spoker_portmap)
|
||||
MCFG_CPU_VBLANK_INT_DRIVER("screen", spoker_state, spoker_interrupt)
|
||||
MCFG_CPU_VBLANK_INT_DRIVER("screen", spoker_state, nmi_line_assert)
|
||||
|
||||
|
||||
MCFG_NVRAM_ADD_0FILL("nvram")
|
||||
@ -539,7 +555,7 @@ static MACHINE_CONFIG_START( spoker, spoker_state )
|
||||
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
|
||||
MCFG_SCREEN_SIZE(512, 256)
|
||||
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 256-16-1)
|
||||
MCFG_SCREEN_UPDATE_DRIVER(spoker_state, screen_update_spoker)
|
||||
MCFG_SCREEN_UPDATE_DRIVER(spoker_state, screen_update)
|
||||
MCFG_SCREEN_PALETTE("palette")
|
||||
|
||||
MCFG_GFXDECODE_ADD("gfxdecode", "palette", spoker)
|
||||
@ -561,7 +577,7 @@ static MACHINE_CONFIG_DERIVED( 3super8, spoker )
|
||||
MCFG_CPU_MODIFY("maincpu")
|
||||
MCFG_CPU_PROGRAM_MAP(spoker_map)
|
||||
MCFG_CPU_IO_MAP(3super8_portmap)
|
||||
MCFG_CPU_VBLANK_INT_DRIVER("screen", spoker_state, spoker_interrupt)
|
||||
MCFG_CPU_VBLANK_INT_DRIVER("screen", spoker_state, nmi_line_assert)
|
||||
MCFG_CPU_PERIODIC_INT_DRIVER(spoker_state, irq0_line_hold, 120) // this signal comes from the PIC
|
||||
|
||||
MCFG_GFXDECODE_MODIFY("gfxdecode", 3super8)
|
||||
@ -714,6 +730,6 @@ DRIVER_INIT_MEMBER(spoker_state,3super8)
|
||||
}
|
||||
}
|
||||
|
||||
GAME( 1993?, spk116it, 0, spoker, spoker, spoker_state, spk116it, ROT0, "IGS", "Super Poker (v116IT)", 0 )
|
||||
GAME( 1993?, spk115it, spk116it, spoker, spoker, spoker_state, spk116it, ROT0, "IGS", "Super Poker (v115IT)", 0 )
|
||||
GAME( 1993?, 3super8, spk116it, 3super8,3super8, spoker_state, 3super8, ROT0, "<unknown>", "3 Super 8 (Italy)", GAME_NOT_WORKING | GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) //roms are badly dumped
|
||||
GAME( 1993?, spk116it, 0, spoker, spoker, spoker_state, spk116it, ROT0, "IGS", "Super Poker (v116IT)", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1993?, spk115it, spk116it, spoker, spoker, spoker_state, spk116it, ROT0, "IGS", "Super Poker (v115IT)", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1993?, 3super8, spk116it, 3super8,3super8, spoker_state, 3super8, ROT0, "<unknown>", "3 Super 8 (Italy)", GAME_NOT_WORKING | GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) //roms are badly dumped
|
||||
|
@ -217,51 +217,72 @@ class ssfindo_state : public driver_device
|
||||
public:
|
||||
ssfindo_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: driver_device(mconfig, type, tag),
|
||||
m_vram(*this, "vram"),
|
||||
m_maincpu(*this, "maincpu"),
|
||||
m_palette(*this, "palette"),
|
||||
m_vram(*this, "vram"),
|
||||
m_flashrom(*this, "flash"),
|
||||
m_io_ps7500(*this, "PS7500"),
|
||||
m_palette(*this, "palette") { }
|
||||
m_io_ps7500(*this, "PS7500") { }
|
||||
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_device<palette_device> m_palette;
|
||||
|
||||
required_shared_ptr<UINT32> m_vram;
|
||||
|
||||
required_region_ptr<UINT16> m_flashrom;
|
||||
|
||||
required_ioport m_io_ps7500;
|
||||
|
||||
// driver init configuration
|
||||
UINT32 m_flashType;
|
||||
int m_iocr_hack;
|
||||
|
||||
// common
|
||||
UINT32 m_PS7500_IO[MAXIO];
|
||||
UINT32 m_PS7500_FIFO[256];
|
||||
required_shared_ptr<UINT32> m_vram;
|
||||
emu_timer *m_PS7500timer0;
|
||||
emu_timer *m_PS7500timer1;
|
||||
|
||||
// ssfindo and ppcar
|
||||
UINT32 m_flashAdr;
|
||||
UINT32 m_flashOffset;
|
||||
UINT32 m_adrLatch;
|
||||
UINT32 m_flashType;
|
||||
UINT32 m_flashN;
|
||||
emu_timer *m_PS7500timer0;
|
||||
emu_timer *m_PS7500timer1;
|
||||
int m_iocr_hack;
|
||||
|
||||
// common
|
||||
DECLARE_WRITE32_MEMBER(FIFO_w);
|
||||
DECLARE_READ32_MEMBER(PS7500_IO_r);
|
||||
DECLARE_WRITE32_MEMBER(PS7500_IO_w);
|
||||
|
||||
// ssfindo and ppcar
|
||||
DECLARE_READ32_MEMBER(io_r);
|
||||
DECLARE_WRITE32_MEMBER(io_w);
|
||||
|
||||
// ssfindo
|
||||
DECLARE_WRITE32_MEMBER(debug_w);
|
||||
DECLARE_READ32_MEMBER(ff4_r);
|
||||
DECLARE_READ32_MEMBER(SIMPLEIO_r);
|
||||
|
||||
// ppcar
|
||||
DECLARE_READ32_MEMBER(randomized_r);
|
||||
|
||||
// tetfight
|
||||
DECLARE_READ32_MEMBER(tetfight_unk_r);
|
||||
DECLARE_WRITE32_MEMBER(tetfight_unk_w);
|
||||
|
||||
DECLARE_DRIVER_INIT(common);
|
||||
DECLARE_DRIVER_INIT(ssfindo);
|
||||
DECLARE_DRIVER_INIT(ppcar);
|
||||
DECLARE_DRIVER_INIT(tetfight);
|
||||
virtual void machine_reset();
|
||||
UINT32 screen_update_ssfindo(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
INTERRUPT_GEN_MEMBER(ssfindo_interrupt);
|
||||
|
||||
UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
|
||||
INTERRUPT_GEN_MEMBER(interrupt);
|
||||
TIMER_CALLBACK_MEMBER(PS7500_Timer0_callback);
|
||||
TIMER_CALLBACK_MEMBER(PS7500_Timer1_callback);
|
||||
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_region_ptr<UINT16> m_flashrom;
|
||||
required_ioport m_io_ps7500;
|
||||
required_device<palette_device> m_palette;
|
||||
|
||||
typedef void (ssfindo_state::*ssfindo_speedup_func)(address_space &space);
|
||||
ssfindo_speedup_func ssfindo_speedup;
|
||||
typedef void (ssfindo_state::*speedup_func)(address_space &space);
|
||||
speedup_func m_speedup;
|
||||
|
||||
void PS7500_startTimer0();
|
||||
void PS7500_startTimer1();
|
||||
@ -271,7 +292,7 @@ public:
|
||||
};
|
||||
|
||||
|
||||
UINT32 ssfindo_state::screen_update_ssfindo(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||
UINT32 ssfindo_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||
{
|
||||
int s,x,y;
|
||||
|
||||
@ -343,7 +364,7 @@ void ssfindo_state::PS7500_startTimer1()
|
||||
m_PS7500timer1->adjust(attotime::from_usec(val ), 0, attotime::from_usec(val ));
|
||||
}
|
||||
|
||||
INTERRUPT_GEN_MEMBER(ssfindo_state::ssfindo_interrupt)
|
||||
INTERRUPT_GEN_MEMBER(ssfindo_state::interrupt)
|
||||
{
|
||||
m_PS7500_IO[IRQSTA]|=0x08;
|
||||
if(m_PS7500_IO[IRQMSKA]&0x08)
|
||||
@ -403,7 +424,7 @@ READ32_MEMBER(ssfindo_state::PS7500_IO_r)
|
||||
return (m_PS7500_IO[IRQSTA] & m_PS7500_IO[IRQMSKA]) | 0x80;
|
||||
|
||||
case IOCR: //TODO: nINT1, OD[n] p.81
|
||||
if (ssfindo_speedup) (this->*ssfindo_speedup)(space);
|
||||
if (m_speedup) (this->*m_speedup)(space);
|
||||
|
||||
if( m_iocr_hack)
|
||||
{
|
||||
@ -764,7 +785,7 @@ static MACHINE_CONFIG_START( ssfindo, ssfindo_state )
|
||||
MCFG_CPU_ADD("maincpu", ARM7, 54000000) // guess...
|
||||
MCFG_CPU_PROGRAM_MAP(ssfindo_map)
|
||||
|
||||
MCFG_CPU_VBLANK_INT_DRIVER("screen", ssfindo_state, ssfindo_interrupt)
|
||||
MCFG_CPU_VBLANK_INT_DRIVER("screen", ssfindo_state, interrupt)
|
||||
|
||||
|
||||
MCFG_SCREEN_ADD("screen", RASTER)
|
||||
@ -772,7 +793,7 @@ static MACHINE_CONFIG_START( ssfindo, ssfindo_state )
|
||||
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
|
||||
MCFG_SCREEN_SIZE(320, 256)
|
||||
MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239)
|
||||
MCFG_SCREEN_UPDATE_DRIVER(ssfindo_state, screen_update_ssfindo)
|
||||
MCFG_SCREEN_UPDATE_DRIVER(ssfindo_state, screen_update)
|
||||
MCFG_SCREEN_PALETTE("palette")
|
||||
|
||||
MCFG_PALETTE_ADD("palette", 256)
|
||||
@ -864,26 +885,32 @@ ROM_END
|
||||
|
||||
DRIVER_INIT_MEMBER(ssfindo_state,common)
|
||||
{
|
||||
ssfindo_speedup = 0;
|
||||
m_speedup = 0;
|
||||
m_PS7500timer0 = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(ssfindo_state::PS7500_Timer0_callback),this));
|
||||
m_PS7500timer1 = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(ssfindo_state::PS7500_Timer1_callback),this));
|
||||
|
||||
|
||||
save_item(NAME(m_PS7500_IO));
|
||||
save_item(NAME(m_PS7500_FIFO));
|
||||
}
|
||||
|
||||
DRIVER_INIT_MEMBER(ssfindo_state,ssfindo)
|
||||
{
|
||||
DRIVER_INIT_CALL(common);
|
||||
m_flashType=0;
|
||||
ssfindo_speedup = &ssfindo_state::ssfindo_speedups;
|
||||
m_speedup = &ssfindo_state::ssfindo_speedups;
|
||||
m_iocr_hack=0;
|
||||
|
||||
save_item(NAME(m_flashAdr));
|
||||
save_item(NAME(m_flashOffset));
|
||||
save_item(NAME(m_adrLatch));
|
||||
save_item(NAME(m_flashN));
|
||||
}
|
||||
|
||||
DRIVER_INIT_MEMBER(ssfindo_state,ppcar)
|
||||
{
|
||||
DRIVER_INIT_CALL(common);
|
||||
DRIVER_INIT_CALL(ssfindo);
|
||||
m_flashType=1;
|
||||
ssfindo_speedup = &ssfindo_state::ppcar_speedups;
|
||||
m_iocr_hack=0;
|
||||
m_speedup = &ssfindo_state::ppcar_speedups;
|
||||
}
|
||||
|
||||
DRIVER_INIT_MEMBER(ssfindo_state,tetfight)
|
||||
@ -893,6 +920,6 @@ DRIVER_INIT_MEMBER(ssfindo_state,tetfight)
|
||||
m_iocr_hack=1;
|
||||
}
|
||||
|
||||
GAME( 1999, ssfindo, 0, ssfindo, ssfindo, ssfindo_state, ssfindo, ROT0, "Icarus", "See See Find Out", GAME_NO_SOUND )
|
||||
GAME( 1999, ppcar, 0, ppcar, ppcar, ssfindo_state, ppcar, ROT0, "Icarus", "Pang Pang Car", GAME_NO_SOUND )
|
||||
GAME( 2001, tetfight,0, tetfight, tetfight, ssfindo_state, tetfight,ROT0, "Sego", "Tetris Fighters", GAME_NO_SOUND|GAME_NOT_WORKING )
|
||||
GAME( 1999, ssfindo, 0, ssfindo, ssfindo, ssfindo_state, ssfindo, ROT0, "Icarus", "See See Find Out", GAME_NO_SOUND | GAME_SUPPORTS_SAVE )
|
||||
GAME( 1999, ppcar, 0, ppcar, ppcar, ssfindo_state, ppcar, ROT0, "Icarus", "Pang Pang Car", GAME_NO_SOUND | GAME_SUPPORTS_SAVE )
|
||||
GAME( 2001, tetfight,0, tetfight, tetfight, ssfindo_state, tetfight,ROT0, "Sego", "Tetris Fighters", GAME_NO_SOUND | GAME_NOT_WORKING | GAME_SUPPORTS_SAVE )
|
||||
|
@ -3,17 +3,24 @@ class pitnrun_state : public driver_device
|
||||
public:
|
||||
pitnrun_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: driver_device(mconfig, type, tag),
|
||||
m_videoram(*this, "videoram"),
|
||||
m_videoram2(*this, "videoram2"),
|
||||
m_spriteram(*this, "spriteram"),
|
||||
m_maincpu(*this, "maincpu"),
|
||||
m_mcu(*this, "mcu"),
|
||||
m_gfxdecode(*this, "gfxdecode"),
|
||||
m_palette(*this, "palette") { }
|
||||
m_palette(*this, "palette"),
|
||||
m_videoram(*this, "videoram"),
|
||||
m_videoram2(*this, "videoram2"),
|
||||
m_spriteram(*this, "spriteram") { }
|
||||
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_device<cpu_device> m_mcu;
|
||||
required_device<gfxdecode_device> m_gfxdecode;
|
||||
required_device<palette_device> m_palette;
|
||||
|
||||
required_shared_ptr<UINT8> m_videoram;
|
||||
int m_nmi;
|
||||
required_shared_ptr<UINT8> m_videoram2;
|
||||
required_shared_ptr<UINT8> m_spriteram;
|
||||
|
||||
int m_nmi;
|
||||
UINT8 m_fromz80;
|
||||
UINT8 m_toz80;
|
||||
int m_zaccept;
|
||||
@ -30,41 +37,42 @@ public:
|
||||
bitmap_ind16 *m_tmp_bitmap[4];
|
||||
tilemap_t *m_bg;
|
||||
tilemap_t *m_fg;
|
||||
required_shared_ptr<UINT8> m_spriteram;
|
||||
|
||||
DECLARE_WRITE8_MEMBER(nmi_enable_w);
|
||||
DECLARE_WRITE8_MEMBER(pitnrun_hflip_w);
|
||||
DECLARE_WRITE8_MEMBER(pitnrun_vflip_w);
|
||||
DECLARE_READ8_MEMBER(pitnrun_mcu_data_r);
|
||||
DECLARE_WRITE8_MEMBER(pitnrun_mcu_data_w);
|
||||
DECLARE_READ8_MEMBER(pitnrun_mcu_status_r);
|
||||
DECLARE_READ8_MEMBER(pitnrun_68705_portA_r);
|
||||
DECLARE_WRITE8_MEMBER(pitnrun_68705_portA_w);
|
||||
DECLARE_READ8_MEMBER(pitnrun_68705_portB_r);
|
||||
DECLARE_WRITE8_MEMBER(pitnrun_68705_portB_w);
|
||||
DECLARE_READ8_MEMBER(pitnrun_68705_portC_r);
|
||||
DECLARE_WRITE8_MEMBER(pitnrun_videoram_w);
|
||||
DECLARE_WRITE8_MEMBER(pitnrun_videoram2_w);
|
||||
DECLARE_WRITE8_MEMBER(pitnrun_char_bank_select);
|
||||
DECLARE_WRITE8_MEMBER(pitnrun_scroll_w);
|
||||
DECLARE_WRITE8_MEMBER(pitnrun_ha_w);
|
||||
DECLARE_WRITE8_MEMBER(pitnrun_h_heed_w);
|
||||
DECLARE_WRITE8_MEMBER(pitnrun_v_heed_w);
|
||||
DECLARE_WRITE8_MEMBER(pitnrun_color_select_w);
|
||||
DECLARE_WRITE8_MEMBER(hflip_w);
|
||||
DECLARE_WRITE8_MEMBER(vflip_w);
|
||||
DECLARE_READ8_MEMBER(mcu_data_r);
|
||||
DECLARE_WRITE8_MEMBER(mcu_data_w);
|
||||
DECLARE_READ8_MEMBER(mcu_status_r);
|
||||
DECLARE_READ8_MEMBER(m68705_portA_r);
|
||||
DECLARE_WRITE8_MEMBER(m68705_portA_w);
|
||||
DECLARE_READ8_MEMBER(m68705_portB_r);
|
||||
DECLARE_WRITE8_MEMBER(m68705_portB_w);
|
||||
DECLARE_READ8_MEMBER(m68705_portC_r);
|
||||
DECLARE_WRITE8_MEMBER(videoram_w);
|
||||
DECLARE_WRITE8_MEMBER(videoram2_w);
|
||||
DECLARE_WRITE8_MEMBER(char_bank_select);
|
||||
DECLARE_WRITE8_MEMBER(scroll_w);
|
||||
DECLARE_WRITE8_MEMBER(ha_w);
|
||||
DECLARE_WRITE8_MEMBER(h_heed_w);
|
||||
DECLARE_WRITE8_MEMBER(v_heed_w);
|
||||
DECLARE_WRITE8_MEMBER(color_select_w);
|
||||
|
||||
TILE_GET_INFO_MEMBER(get_tile_info1);
|
||||
TILE_GET_INFO_MEMBER(get_tile_info2);
|
||||
|
||||
INTERRUPT_GEN_MEMBER(nmi_source);
|
||||
TIMER_CALLBACK_MEMBER(mcu_real_data_r);
|
||||
TIMER_CALLBACK_MEMBER(mcu_real_data_w);
|
||||
TIMER_CALLBACK_MEMBER(mcu_data_real_r);
|
||||
TIMER_CALLBACK_MEMBER(mcu_status_real_w);
|
||||
|
||||
virtual void machine_start();
|
||||
virtual void machine_reset();
|
||||
virtual void video_start();
|
||||
DECLARE_PALETTE_INIT(pitnrun);
|
||||
UINT32 screen_update_pitnrun(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
INTERRUPT_GEN_MEMBER(pitnrun_nmi_source);
|
||||
TIMER_CALLBACK_MEMBER(pitnrun_mcu_real_data_r);
|
||||
TIMER_CALLBACK_MEMBER(pitnrun_mcu_real_data_w);
|
||||
TIMER_CALLBACK_MEMBER(pitnrun_mcu_data_real_r);
|
||||
TIMER_CALLBACK_MEMBER(pitnrun_mcu_status_real_w);
|
||||
void pitnrun_spotlights();
|
||||
|
||||
UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
void spotlights();
|
||||
void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect );
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_device<cpu_device> m_mcu;
|
||||
required_device<gfxdecode_device> m_gfxdecode;
|
||||
required_device<palette_device> m_palette;
|
||||
};
|
||||
|
@ -5,12 +5,6 @@ class splash_state : public driver_device
|
||||
public:
|
||||
splash_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: driver_device(mconfig, type, tag),
|
||||
m_pixelram(*this, "pixelram"),
|
||||
m_videoram(*this, "videoram"),
|
||||
m_vregs(*this, "vregs"),
|
||||
m_spriteram(*this, "spriteram"),
|
||||
m_protdata(*this, "protdata"),
|
||||
m_bitmap_mode(*this, "bitmap_mode"),
|
||||
m_maincpu(*this, "maincpu"),
|
||||
m_audiocpu(*this, "audiocpu"),
|
||||
m_msm(*this, "msm"),
|
||||
@ -18,70 +12,18 @@ public:
|
||||
m_msm2(*this, "msm2"),
|
||||
m_gfxdecode(*this, "gfxdecode"),
|
||||
m_palette(*this, "palette"),
|
||||
m_pixelram(*this, "pixelram"),
|
||||
m_videoram(*this, "videoram"),
|
||||
m_vregs(*this, "vregs"),
|
||||
m_spriteram(*this, "spriteram"),
|
||||
m_protdata(*this, "protdata"),
|
||||
m_bitmap_mode(*this, "bitmap_mode"),
|
||||
|
||||
funystrp_val(0),
|
||||
funystrp_ff3cc7_val(0),
|
||||
funystrp_ff3cc8_val(0)
|
||||
m_funystrp_val(0),
|
||||
m_funystrp_ff3cc7_val(0),
|
||||
m_funystrp_ff3cc8_val(0)
|
||||
{ }
|
||||
|
||||
required_shared_ptr<UINT16> m_pixelram;
|
||||
required_shared_ptr<UINT16> m_videoram;
|
||||
required_shared_ptr<UINT16> m_vregs;
|
||||
required_shared_ptr<UINT16> m_spriteram;
|
||||
optional_shared_ptr<UINT16> m_protdata;
|
||||
optional_shared_ptr<UINT16> m_bitmap_mode;
|
||||
|
||||
int m_bitmap_type;
|
||||
int m_sprite_attr2_shift;
|
||||
tilemap_t *m_bg_tilemap[2];
|
||||
|
||||
int m_adpcm_data;
|
||||
int m_ret;
|
||||
|
||||
int m_vblank_irq;
|
||||
int m_sound_irq;
|
||||
|
||||
int m_msm_data1;
|
||||
int m_msm_data2;
|
||||
int m_msm_toggle1;
|
||||
int m_msm_toggle2;
|
||||
int m_msm_source;
|
||||
int m_snd_interrupt_enable1;
|
||||
int m_snd_interrupt_enable2;
|
||||
|
||||
DECLARE_WRITE16_MEMBER(splash_sh_irqtrigger_w);
|
||||
DECLARE_WRITE16_MEMBER(roldf_sh_irqtrigger_w);
|
||||
DECLARE_WRITE16_MEMBER(splash_coin_w);
|
||||
DECLARE_WRITE8_MEMBER(splash_adpcm_data_w);
|
||||
DECLARE_READ16_MEMBER(roldfrog_bombs_r);
|
||||
DECLARE_WRITE8_MEMBER(sound_bank_w);
|
||||
DECLARE_WRITE8_MEMBER(roldfrog_vblank_ack_w);
|
||||
DECLARE_READ8_MEMBER(roldfrog_unk_r);
|
||||
DECLARE_READ16_MEMBER(spr_read);
|
||||
DECLARE_WRITE16_MEMBER(spr_write);
|
||||
DECLARE_READ8_MEMBER(int_source_r);
|
||||
DECLARE_WRITE8_MEMBER(msm1_data_w);
|
||||
DECLARE_WRITE8_MEMBER(msm1_interrupt_w);
|
||||
DECLARE_WRITE8_MEMBER(msm2_interrupt_w);
|
||||
DECLARE_WRITE8_MEMBER(msm2_data_w);
|
||||
DECLARE_WRITE16_MEMBER(splash_vram_w);
|
||||
DECLARE_DRIVER_INIT(splash10);
|
||||
DECLARE_DRIVER_INIT(roldfrog);
|
||||
DECLARE_DRIVER_INIT(splash);
|
||||
DECLARE_DRIVER_INIT(rebus);
|
||||
TILE_GET_INFO_MEMBER(get_tile_info_splash_tilemap0);
|
||||
TILE_GET_INFO_MEMBER(get_tile_info_splash_tilemap1);
|
||||
virtual void video_start();
|
||||
DECLARE_MACHINE_RESET(splash);
|
||||
UINT32 screen_update_splash(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
INTERRUPT_GEN_MEMBER(roldfrog_interrupt);
|
||||
void draw_bitmap(bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
void splash_draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect);
|
||||
void roldfrog_update_irq( );
|
||||
DECLARE_WRITE_LINE_MEMBER(splash_msm5205_int);
|
||||
DECLARE_WRITE_LINE_MEMBER(ym_irq);
|
||||
DECLARE_WRITE_LINE_MEMBER(adpcm_int1);
|
||||
DECLARE_WRITE_LINE_MEMBER(adpcm_int2);
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_device<cpu_device> m_audiocpu;
|
||||
optional_device<msm5205_device> m_msm;
|
||||
@ -90,16 +32,93 @@ public:
|
||||
required_device<gfxdecode_device> m_gfxdecode;
|
||||
required_device<palette_device> m_palette;
|
||||
|
||||
// Funny Strip
|
||||
DECLARE_MACHINE_RESET(funystrp);
|
||||
required_shared_ptr<UINT16> m_pixelram;
|
||||
required_shared_ptr<UINT16> m_videoram;
|
||||
required_shared_ptr<UINT16> m_vregs;
|
||||
required_shared_ptr<UINT16> m_spriteram;
|
||||
optional_shared_ptr<UINT16> m_protdata;
|
||||
optional_shared_ptr<UINT16> m_bitmap_mode;
|
||||
|
||||
// driver init configuration
|
||||
int m_bitmap_type;
|
||||
int m_sprite_attr2_shift;
|
||||
|
||||
tilemap_t *m_bg_tilemap[2];
|
||||
|
||||
// splash specific
|
||||
int m_adpcm_data;
|
||||
|
||||
//roldfrog specific
|
||||
int m_ret;
|
||||
int m_vblank_irq;
|
||||
int m_sound_irq;
|
||||
|
||||
// funystrp specific
|
||||
UINT8 m_funystrp_val;
|
||||
UINT8 m_funystrp_ff3cc7_val;
|
||||
UINT8 m_funystrp_ff3cc8_val;
|
||||
int m_msm_data1;
|
||||
int m_msm_data2;
|
||||
int m_msm_toggle1;
|
||||
int m_msm_toggle2;
|
||||
int m_msm_source;
|
||||
int m_snd_interrupt_enable1;
|
||||
int m_snd_interrupt_enable2;
|
||||
|
||||
// common
|
||||
DECLARE_WRITE16_MEMBER(vram_w);
|
||||
DECLARE_WRITE16_MEMBER(coin_w);
|
||||
|
||||
// splash specific
|
||||
DECLARE_WRITE_LINE_MEMBER(splash_msm5205_int);
|
||||
DECLARE_WRITE16_MEMBER(splash_sh_irqtrigger_w);
|
||||
DECLARE_WRITE8_MEMBER(splash_adpcm_data_w);
|
||||
|
||||
// roldfrog specific
|
||||
DECLARE_WRITE16_MEMBER(roldf_sh_irqtrigger_w);
|
||||
DECLARE_READ16_MEMBER(roldfrog_bombs_r);
|
||||
DECLARE_WRITE8_MEMBER(roldfrog_vblank_ack_w);
|
||||
DECLARE_READ8_MEMBER(roldfrog_unk_r);
|
||||
DECLARE_WRITE_LINE_MEMBER(ym_irq);
|
||||
|
||||
// funystrp specific
|
||||
DECLARE_READ16_MEMBER(spr_read);
|
||||
DECLARE_WRITE16_MEMBER(spr_write);
|
||||
DECLARE_READ8_MEMBER(int_source_r);
|
||||
DECLARE_WRITE8_MEMBER(msm1_data_w);
|
||||
DECLARE_WRITE8_MEMBER(msm1_interrupt_w);
|
||||
DECLARE_WRITE8_MEMBER(msm2_interrupt_w);
|
||||
DECLARE_WRITE8_MEMBER(msm2_data_w);
|
||||
DECLARE_WRITE_LINE_MEMBER(adpcm_int1);
|
||||
DECLARE_WRITE_LINE_MEMBER(adpcm_int2);
|
||||
DECLARE_WRITE16_MEMBER(funystrp_protection_w);
|
||||
DECLARE_READ16_MEMBER(funystrp_protection_r);
|
||||
DECLARE_WRITE16_MEMBER(funystrp_sh_irqtrigger_w);
|
||||
DECLARE_DRIVER_INIT(funystrp);
|
||||
UINT32 screen_update_funystrp(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
void funystrp_draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect);
|
||||
UINT8 funystrp_val;
|
||||
UINT8 funystrp_ff3cc7_val;
|
||||
UINT8 funystrp_ff3cc8_val;
|
||||
|
||||
//roldfrog and funystrp specific
|
||||
DECLARE_WRITE8_MEMBER(sound_bank_w);
|
||||
|
||||
DECLARE_DRIVER_INIT(splash10);
|
||||
DECLARE_DRIVER_INIT(roldfrog);
|
||||
DECLARE_DRIVER_INIT(splash);
|
||||
DECLARE_DRIVER_INIT(rebus);
|
||||
DECLARE_DRIVER_INIT(funystrp);
|
||||
virtual void video_start();
|
||||
DECLARE_MACHINE_START(splash);
|
||||
DECLARE_MACHINE_START(roldfrog);
|
||||
DECLARE_MACHINE_START(funystrp);
|
||||
DECLARE_MACHINE_RESET(splash);
|
||||
DECLARE_MACHINE_RESET(funystrp);
|
||||
|
||||
TILE_GET_INFO_MEMBER(get_tile_info_tilemap0);
|
||||
TILE_GET_INFO_MEMBER(get_tile_info_tilemap1);
|
||||
|
||||
UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
UINT32 screen_update_funystrp(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
void draw_bitmap(bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
void draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect);
|
||||
void funystrp_draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect);
|
||||
|
||||
INTERRUPT_GEN_MEMBER(roldfrog_interrupt);
|
||||
void roldfrog_update_irq( );
|
||||
};
|
||||
|
@ -12,6 +12,18 @@
|
||||
#include "includes/pitnrun.h"
|
||||
|
||||
|
||||
void pitnrun_state::machine_start()
|
||||
{
|
||||
save_item(NAME(m_nmi));
|
||||
save_item(NAME(m_fromz80));
|
||||
save_item(NAME(m_toz80));
|
||||
save_item(NAME(m_zaccept));
|
||||
save_item(NAME(m_zready));
|
||||
save_item(NAME(m_portA_in));
|
||||
save_item(NAME(m_portA_out));
|
||||
save_item(NAME(m_address));
|
||||
}
|
||||
|
||||
void pitnrun_state::machine_reset()
|
||||
{
|
||||
m_zaccept = 1;
|
||||
@ -19,31 +31,31 @@ void pitnrun_state::machine_reset()
|
||||
m_mcu->set_input_line(0, CLEAR_LINE);
|
||||
}
|
||||
|
||||
TIMER_CALLBACK_MEMBER(pitnrun_state::pitnrun_mcu_real_data_r)
|
||||
TIMER_CALLBACK_MEMBER(pitnrun_state::mcu_real_data_r)
|
||||
{
|
||||
m_zaccept = 1;
|
||||
}
|
||||
|
||||
READ8_MEMBER(pitnrun_state::pitnrun_mcu_data_r)
|
||||
READ8_MEMBER(pitnrun_state::mcu_data_r)
|
||||
{
|
||||
machine().scheduler().synchronize(timer_expired_delegate(FUNC(pitnrun_state::pitnrun_mcu_real_data_r),this));
|
||||
machine().scheduler().synchronize(timer_expired_delegate(FUNC(pitnrun_state::mcu_real_data_r),this));
|
||||
return m_toz80;
|
||||
}
|
||||
|
||||
TIMER_CALLBACK_MEMBER(pitnrun_state::pitnrun_mcu_real_data_w)
|
||||
TIMER_CALLBACK_MEMBER(pitnrun_state::mcu_real_data_w)
|
||||
{
|
||||
m_zready = 1;
|
||||
m_mcu->set_input_line(0, ASSERT_LINE);
|
||||
m_fromz80 = param;
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(pitnrun_state::pitnrun_mcu_data_w)
|
||||
WRITE8_MEMBER(pitnrun_state::mcu_data_w)
|
||||
{
|
||||
machine().scheduler().synchronize(timer_expired_delegate(FUNC(pitnrun_state::pitnrun_mcu_real_data_w),this), data);
|
||||
machine().scheduler().synchronize(timer_expired_delegate(FUNC(pitnrun_state::mcu_real_data_w),this), data);
|
||||
machine().scheduler().boost_interleave(attotime::zero, attotime::from_usec(5));
|
||||
}
|
||||
|
||||
READ8_MEMBER(pitnrun_state::pitnrun_mcu_status_r)
|
||||
READ8_MEMBER(pitnrun_state::mcu_status_r)
|
||||
{
|
||||
/* mcu synchronization */
|
||||
/* bit 0 = the 68705 has read data from the Z80 */
|
||||
@ -52,12 +64,12 @@ READ8_MEMBER(pitnrun_state::pitnrun_mcu_status_r)
|
||||
}
|
||||
|
||||
|
||||
READ8_MEMBER(pitnrun_state::pitnrun_68705_portA_r)
|
||||
READ8_MEMBER(pitnrun_state::m68705_portA_r)
|
||||
{
|
||||
return m_portA_in;
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(pitnrun_state::pitnrun_68705_portA_w)
|
||||
WRITE8_MEMBER(pitnrun_state::m68705_portA_w)
|
||||
{
|
||||
m_portA_out = data;
|
||||
}
|
||||
@ -82,37 +94,37 @@ WRITE8_MEMBER(pitnrun_state::pitnrun_68705_portA_w)
|
||||
* the main Z80 memory location to access)
|
||||
*/
|
||||
|
||||
READ8_MEMBER(pitnrun_state::pitnrun_68705_portB_r)
|
||||
READ8_MEMBER(pitnrun_state::m68705_portB_r)
|
||||
{
|
||||
return 0xff;
|
||||
}
|
||||
|
||||
|
||||
TIMER_CALLBACK_MEMBER(pitnrun_state::pitnrun_mcu_data_real_r)
|
||||
TIMER_CALLBACK_MEMBER(pitnrun_state::mcu_data_real_r)
|
||||
{
|
||||
m_zready = 0;
|
||||
}
|
||||
|
||||
TIMER_CALLBACK_MEMBER(pitnrun_state::pitnrun_mcu_status_real_w)
|
||||
TIMER_CALLBACK_MEMBER(pitnrun_state::mcu_status_real_w)
|
||||
{
|
||||
m_toz80 = param;
|
||||
m_zaccept = 0;
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(pitnrun_state::pitnrun_68705_portB_w)
|
||||
WRITE8_MEMBER(pitnrun_state::m68705_portB_w)
|
||||
{
|
||||
address_space &cpu0space = m_maincpu->space(AS_PROGRAM);
|
||||
if (~data & 0x02)
|
||||
{
|
||||
/* 68705 is going to read data from the Z80 */
|
||||
machine().scheduler().synchronize(timer_expired_delegate(FUNC(pitnrun_state::pitnrun_mcu_data_real_r),this));
|
||||
machine().scheduler().synchronize(timer_expired_delegate(FUNC(pitnrun_state::mcu_data_real_r),this));
|
||||
m_mcu->set_input_line(0,CLEAR_LINE);
|
||||
m_portA_in = m_fromz80;
|
||||
}
|
||||
if (~data & 0x04)
|
||||
{
|
||||
/* 68705 is writing data for the Z80 */
|
||||
machine().scheduler().synchronize(timer_expired_delegate(FUNC(pitnrun_state::pitnrun_mcu_status_real_w),this), m_portA_out);
|
||||
machine().scheduler().synchronize(timer_expired_delegate(FUNC(pitnrun_state::mcu_status_real_w),this), m_portA_out);
|
||||
}
|
||||
if (~data & 0x10)
|
||||
{
|
||||
@ -142,7 +154,7 @@ WRITE8_MEMBER(pitnrun_state::pitnrun_68705_portB_w)
|
||||
* passes through)
|
||||
*/
|
||||
|
||||
READ8_MEMBER(pitnrun_state::pitnrun_68705_portC_r)
|
||||
READ8_MEMBER(pitnrun_state::m68705_portC_r)
|
||||
{
|
||||
return (m_zready << 0) | (m_zaccept << 1);
|
||||
}
|
||||
|
@ -23,9 +23,7 @@ In debug build press 'w' for spotlight and 'e' for lightning
|
||||
|
||||
TILE_GET_INFO_MEMBER(pitnrun_state::get_tile_info1)
|
||||
{
|
||||
UINT8 *videoram = m_videoram;
|
||||
int code;
|
||||
code = videoram[tile_index];
|
||||
int code = m_videoram[tile_index];
|
||||
SET_TILE_INFO_MEMBER(0,
|
||||
code,
|
||||
0,
|
||||
@ -34,28 +32,26 @@ TILE_GET_INFO_MEMBER(pitnrun_state::get_tile_info1)
|
||||
|
||||
TILE_GET_INFO_MEMBER(pitnrun_state::get_tile_info2)
|
||||
{
|
||||
int code;
|
||||
code = m_videoram2[tile_index];
|
||||
int code = m_videoram2[tile_index];
|
||||
SET_TILE_INFO_MEMBER(1,
|
||||
code + (m_char_bank<<8),
|
||||
m_color_select&1,
|
||||
0);
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(pitnrun_state::pitnrun_videoram_w)
|
||||
WRITE8_MEMBER(pitnrun_state::videoram_w)
|
||||
{
|
||||
UINT8 *videoram = m_videoram;
|
||||
videoram[offset] = data;
|
||||
m_videoram[offset] = data;
|
||||
m_fg ->mark_all_dirty();
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(pitnrun_state::pitnrun_videoram2_w)
|
||||
WRITE8_MEMBER(pitnrun_state::videoram2_w)
|
||||
{
|
||||
m_videoram2[offset] = data;
|
||||
m_bg ->mark_all_dirty();
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(pitnrun_state::pitnrun_char_bank_select)
|
||||
WRITE8_MEMBER(pitnrun_state::char_bank_select)
|
||||
{
|
||||
if(m_char_bank!=data)
|
||||
{
|
||||
@ -65,34 +61,34 @@ WRITE8_MEMBER(pitnrun_state::pitnrun_char_bank_select)
|
||||
}
|
||||
|
||||
|
||||
WRITE8_MEMBER(pitnrun_state::pitnrun_scroll_w)
|
||||
WRITE8_MEMBER(pitnrun_state::scroll_w)
|
||||
{
|
||||
m_scroll = (m_scroll & (0xff<<((offset)?0:8))) |( data<<((offset)?8:0));
|
||||
m_bg->set_scrollx(0, m_scroll);
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(pitnrun_state::pitnrun_ha_w)
|
||||
WRITE8_MEMBER(pitnrun_state::ha_w)
|
||||
{
|
||||
m_ha=data;
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(pitnrun_state::pitnrun_h_heed_w)
|
||||
WRITE8_MEMBER(pitnrun_state::h_heed_w)
|
||||
{
|
||||
m_h_heed=data;
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(pitnrun_state::pitnrun_v_heed_w)
|
||||
WRITE8_MEMBER(pitnrun_state::v_heed_w)
|
||||
{
|
||||
m_v_heed=data;
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(pitnrun_state::pitnrun_color_select_w)
|
||||
WRITE8_MEMBER(pitnrun_state::color_select_w)
|
||||
{
|
||||
m_color_select=data;
|
||||
machine().tilemap().mark_all_dirty();
|
||||
}
|
||||
|
||||
void pitnrun_state::pitnrun_spotlights()
|
||||
void pitnrun_state::spotlights()
|
||||
{
|
||||
int x,y,i,b,datapix;
|
||||
UINT8 *ROM = memregion("user1")->base();
|
||||
@ -166,7 +162,14 @@ void pitnrun_state::video_start()
|
||||
m_tmp_bitmap[1] = auto_bitmap_ind16_alloc(machine(),128,128);
|
||||
m_tmp_bitmap[2] = auto_bitmap_ind16_alloc(machine(),128,128);
|
||||
m_tmp_bitmap[3] = auto_bitmap_ind16_alloc(machine(),128,128);
|
||||
pitnrun_spotlights();
|
||||
spotlights();
|
||||
|
||||
save_item(NAME(m_h_heed));
|
||||
save_item(NAME(m_v_heed));
|
||||
save_item(NAME(m_ha));
|
||||
save_item(NAME(m_scroll));
|
||||
save_item(NAME(m_char_bank));
|
||||
save_item(NAME(m_color_select));
|
||||
}
|
||||
|
||||
void pitnrun_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect )
|
||||
@ -202,7 +205,7 @@ void pitnrun_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect
|
||||
}
|
||||
}
|
||||
|
||||
UINT32 pitnrun_state::screen_update_pitnrun(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||
UINT32 pitnrun_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||
{
|
||||
int dx=0,dy=0;
|
||||
rectangle myclip=cliprect;
|
||||
|
@ -1,6 +1,6 @@
|
||||
/***************************************************************************
|
||||
|
||||
video.c
|
||||
splash.c
|
||||
|
||||
Functions to emulate the video hardware of the machine.
|
||||
|
||||
@ -38,7 +38,7 @@
|
||||
0 | xxxx---- -------- | color
|
||||
*/
|
||||
|
||||
TILE_GET_INFO_MEMBER(splash_state::get_tile_info_splash_tilemap0)
|
||||
TILE_GET_INFO_MEMBER(splash_state::get_tile_info_tilemap0)
|
||||
{
|
||||
int data = m_videoram[tile_index];
|
||||
int attr = data >> 8;
|
||||
@ -50,7 +50,7 @@ TILE_GET_INFO_MEMBER(splash_state::get_tile_info_splash_tilemap0)
|
||||
0);
|
||||
}
|
||||
|
||||
TILE_GET_INFO_MEMBER(splash_state::get_tile_info_splash_tilemap1)
|
||||
TILE_GET_INFO_MEMBER(splash_state::get_tile_info_tilemap1)
|
||||
{
|
||||
int data = m_videoram[(0x1000/2) + tile_index];
|
||||
int attr = data >> 8;
|
||||
@ -68,7 +68,7 @@ TILE_GET_INFO_MEMBER(splash_state::get_tile_info_splash_tilemap1)
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
WRITE16_MEMBER(splash_state::splash_vram_w)
|
||||
WRITE16_MEMBER(splash_state::vram_w)
|
||||
{
|
||||
COMBINE_DATA(&m_videoram[offset]);
|
||||
m_bg_tilemap[offset >> 11]->mark_tile_dirty(((offset << 1) & 0x0fff) >> 1);
|
||||
@ -163,8 +163,8 @@ void splash_state::draw_bitmap(bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||
|
||||
void splash_state::video_start()
|
||||
{
|
||||
m_bg_tilemap[0] = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(splash_state::get_tile_info_splash_tilemap0),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32);
|
||||
m_bg_tilemap[1] = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(splash_state::get_tile_info_splash_tilemap1),this), TILEMAP_SCAN_ROWS, 16, 16, 32, 32);
|
||||
m_bg_tilemap[0] = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(splash_state::get_tile_info_tilemap0),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32);
|
||||
m_bg_tilemap[1] = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(splash_state::get_tile_info_tilemap1),this), TILEMAP_SCAN_ROWS, 16, 16, 32, 32);
|
||||
|
||||
m_bg_tilemap[0]->set_transparent_pen(0);
|
||||
m_bg_tilemap[1]->set_transparent_pen(0);
|
||||
@ -201,7 +201,7 @@ void splash_state::video_start()
|
||||
400| xxxxxxxx -------- | unused
|
||||
*/
|
||||
|
||||
void splash_state::splash_draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect)
|
||||
void splash_state::draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect)
|
||||
{
|
||||
int i;
|
||||
gfx_element *gfx = m_gfxdecode->gfx(1);
|
||||
@ -247,7 +247,7 @@ void splash_state::funystrp_draw_sprites(bitmap_ind16 &bitmap,const rectangle &c
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
UINT32 splash_state::screen_update_splash(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||
UINT32 splash_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||
{
|
||||
/* set scroll registers */
|
||||
m_bg_tilemap[0]->set_scrolly(0, m_vregs[0]);
|
||||
@ -256,7 +256,7 @@ UINT32 splash_state::screen_update_splash(screen_device &screen, bitmap_ind16 &b
|
||||
draw_bitmap(bitmap, cliprect);
|
||||
|
||||
m_bg_tilemap[1]->draw(screen, bitmap, cliprect, 0, 0);
|
||||
splash_draw_sprites(bitmap, cliprect);
|
||||
draw_sprites(bitmap, cliprect);
|
||||
m_bg_tilemap[0]->draw(screen, bitmap, cliprect, 0, 0);
|
||||
return 0;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user