Fix nycaptor.c crash, fix m92.c properly [Alex Jackson]

This commit is contained in:
Alex W. Jackson 2014-03-02 08:15:25 +00:00
parent 3a7c823c08
commit 3c4cb26006
7 changed files with 55 additions and 103 deletions

View File

@ -343,7 +343,7 @@ static ADDRESS_MAP_START( lethalth_map, AS_PROGRAM, 16, m92_state )
AM_RANGE(0x80000, 0x8ffff) AM_RAM_WRITE(m92_vram_w) AM_SHARE("vram_data")
AM_RANGE(0xe0000, 0xeffff) AM_RAM /* System ram */
AM_RANGE(0xf8000, 0xf87ff) AM_RAM AM_SHARE("spriteram")
AM_RANGE(0xf8800, 0xf8fff) AM_READWRITE(m92_paletteram_r, m92_paletteram_w) AM_SHARE("palette")
AM_RANGE(0xf8800, 0xf8fff) AM_READWRITE(m92_paletteram_r, m92_paletteram_w)
AM_RANGE(0xf9000, 0xf900f) AM_WRITE(m92_spritecontrol_w) AM_SHARE("spritecontrol")
AM_RANGE(0xf9800, 0xf9801) AM_WRITE(m92_videocontrol_w)
AM_RANGE(0xffff0, 0xfffff) AM_ROM AM_REGION("maincpu", 0x7fff0)
@ -356,7 +356,7 @@ static ADDRESS_MAP_START( m92_map, AS_PROGRAM, 16, m92_state )
AM_RANGE(0xd0000, 0xdffff) AM_RAM_WRITE(m92_vram_w) AM_SHARE("vram_data")
AM_RANGE(0xe0000, 0xeffff) AM_RAM /* System ram */
AM_RANGE(0xf8000, 0xf87ff) AM_RAM AM_SHARE("spriteram")
AM_RANGE(0xf8800, 0xf8fff) AM_READWRITE(m92_paletteram_r, m92_paletteram_w) AM_SHARE("palette")
AM_RANGE(0xf8800, 0xf8fff) AM_READWRITE(m92_paletteram_r, m92_paletteram_w)
AM_RANGE(0xf9000, 0xf900f) AM_WRITE(m92_spritecontrol_w) AM_SHARE("spritecontrol")
AM_RANGE(0xf9800, 0xf9801) AM_WRITE(m92_videocontrol_w)
AM_RANGE(0xffff0, 0xfffff) AM_ROM AM_REGION("maincpu", 0x7fff0)
@ -997,39 +997,19 @@ static MACHINE_CONFIG_DERIVED( hook, m92 )
MCFG_V25_CONFIG(hook_decryption_table)
MACHINE_CONFIG_END
static MACHINE_CONFIG_START( ppan, m92_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu",V33,XTAL_18MHz/2)
MCFG_CPU_PROGRAM_MAP(m92_map)
static MACHINE_CONFIG_DERIVED( ppan, m92 )
MCFG_CPU_MODIFY("maincpu")
MCFG_CPU_IO_MAP(ppan_portmap)
/* no Sound CPU */
MCFG_DEVICE_REMOVE("soundcpu")
MCFG_DEVICE_REMOVE("ymsnd")
MCFG_DEVICE_REMOVE("irem")
MCFG_MACHINE_START_OVERRIDE(m92_state,m92)
MCFG_MACHINE_RESET_OVERRIDE(m92_state,m92)
MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", m92_state, m92_scanline_interrupt, "screen", 0, 1)
/* video hardware */
MCFG_BUFFERED_SPRITERAM16_ADD("spriteram") // not really...
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(80, 511-112, 8, 247) /* 320 x 240 */
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_UPDATE_DRIVER(m92_state, screen_update_ppan)
MCFG_GFXDECODE_ADD("gfxdecode", m92)
MCFG_PALETTE_ADD("palette", 2048)
MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
MCFG_VIDEO_START_OVERRIDE(m92_state,ppan)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_OKIM6295_ADD("oki", 1000000, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
MACHINE_CONFIG_END

View File

@ -214,17 +214,6 @@ WRITE8_MEMBER(nycaptor_state::to_main_w)
m_snd_data = data;
}
READ8_MEMBER(nycaptor_state::nycaptor_sharedram_r)
{
return m_sharedram[offset];
}
WRITE8_MEMBER(nycaptor_state::nycaptor_sharedram_w)
{
m_sharedram[offset] = data;
}
READ8_MEMBER(nycaptor_state::nycaptor_b_r)
{
return 1;
@ -334,7 +323,7 @@ WRITE8_MEMBER(nycaptor_state::nycaptor_generic_control_w)
static ADDRESS_MAP_START( nycaptor_master_map, AS_PROGRAM, 8, nycaptor_state )
AM_RANGE(0x0000, 0x7fff) AM_ROM
AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
AM_RANGE(0xc000, 0xc7ff) AM_READWRITE(nycaptor_videoram_r, nycaptor_videoram_w) AM_SHARE("videoram")
AM_RANGE(0xc000, 0xc7ff) AM_RAM_WRITE(nycaptor_videoram_w) AM_SHARE("videoram")
AM_RANGE(0xd000, 0xd000) AM_READWRITE(nycaptor_mcu_r, nycaptor_mcu_w)
AM_RANGE(0xd001, 0xd001) AM_WRITE(sub_cpu_halt_w)
AM_RANGE(0xd002, 0xd002) AM_READWRITE(nycaptor_generic_control_r, nycaptor_generic_control_w) /* bit 3 - memory bank at 0x8000-0xbfff */
@ -349,23 +338,23 @@ static ADDRESS_MAP_START( nycaptor_master_map, AS_PROGRAM, 8, nycaptor_state )
AM_RANGE(0xd805, 0xd805) AM_READ(nycaptor_mcu_status_r1)
AM_RANGE(0xd806, 0xd806) AM_READNOP /* unknown ?sound? */
AM_RANGE(0xd807, 0xd807) AM_READ(nycaptor_mcu_status_r2)
AM_RANGE(0xdc00, 0xdc9f) AM_READWRITE(nycaptor_spriteram_r, nycaptor_spriteram_w)
AM_RANGE(0xdca0, 0xdcbf) AM_READWRITE(nycaptor_scrlram_r, nycaptor_scrlram_w) AM_SHARE("scrlram")
AM_RANGE(0xdc00, 0xdc9f) AM_RAM AM_SHARE("spriteram")
AM_RANGE(0xdca0, 0xdcbf) AM_RAM_WRITE(nycaptor_scrlram_w) AM_SHARE("scrlram")
AM_RANGE(0xdce1, 0xdce1) AM_WRITENOP
AM_RANGE(0xdd00, 0xdeff) AM_READWRITE(nycaptor_palette_r, nycaptor_palette_w)
AM_RANGE(0xdf03, 0xdf03) AM_READWRITE(nycaptor_gfxctrl_r, nycaptor_gfxctrl_w)
AM_RANGE(0xe000, 0xffff) AM_READWRITE(nycaptor_sharedram_r, nycaptor_sharedram_w) AM_SHARE("sharedram")
AM_RANGE(0xe000, 0xffff) AM_RAM AM_SHARE("sharedram")
ADDRESS_MAP_END
static ADDRESS_MAP_START( nycaptor_slave_map, AS_PROGRAM, 8, nycaptor_state )
AM_RANGE(0x0000, 0x7fff) AM_ROM
AM_RANGE(0xc000, 0xc7ff) AM_READWRITE(nycaptor_videoram_r, nycaptor_videoram_w) AM_SHARE("videoram")
AM_RANGE(0xc000, 0xc7ff) AM_RAM_WRITE(nycaptor_videoram_w) AM_SHARE("videoram")
AM_RANGE(0xd800, 0xd800) AM_READ_PORT("DSWA")
AM_RANGE(0xd801, 0xd801) AM_READ_PORT("DSWB")
AM_RANGE(0xd802, 0xd802) AM_READ_PORT("DSWC")
AM_RANGE(0xd803, 0xd803) AM_READ_PORT("IN0")
AM_RANGE(0xd804, 0xd804) AM_READ_PORT("IN1")
AM_RANGE(0xdc00, 0xdc9f) AM_READWRITE(nycaptor_spriteram_r, nycaptor_spriteram_w)
AM_RANGE(0xdc00, 0xdc9f) AM_RAM AM_SHARE("spriteram")
AM_RANGE(0xdca0, 0xdcbf) AM_WRITE(nycaptor_scrlram_w) AM_SHARE("scrlram")
AM_RANGE(0xdd00, 0xdeff) AM_READWRITE(nycaptor_palette_r, nycaptor_palette_w)
@ -373,7 +362,7 @@ static ADDRESS_MAP_START( nycaptor_slave_map, AS_PROGRAM, 8, nycaptor_state )
AM_RANGE(0xdf01, 0xdf01) AM_READ(nycaptor_by_r)
AM_RANGE(0xdf02, 0xdf02) AM_READ(nycaptor_b_r)
AM_RANGE(0xdf03, 0xdf03) AM_READ(nycaptor_gfxctrl_r) AM_WRITENOP/* ? gfx control ? */
AM_RANGE(0xe000, 0xffff) AM_READWRITE(nycaptor_sharedram_r, nycaptor_sharedram_w)
AM_RANGE(0xe000, 0xffff) AM_RAM AM_SHARE("sharedram")
ADDRESS_MAP_END
static ADDRESS_MAP_START( nycaptor_sound_map, AS_PROGRAM, 8, nycaptor_state )
@ -439,7 +428,7 @@ WRITE8_MEMBER(nycaptor_state::cyclshtg_generic_control_w)
static ADDRESS_MAP_START( cyclshtg_master_map, AS_PROGRAM, 8, nycaptor_state )
AM_RANGE(0x0000, 0x7fff) AM_ROM
AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
AM_RANGE(0xc000, 0xcfff) AM_READWRITE(nycaptor_videoram_r, nycaptor_videoram_w) AM_SHARE("videoram")
AM_RANGE(0xc000, 0xcfff) AM_RAM_WRITE(nycaptor_videoram_w) AM_SHARE("videoram")
AM_RANGE(0xd000, 0xd000) AM_READWRITE(cyclshtg_mcu_r, cyclshtg_mcu_w)
AM_RANGE(0xd001, 0xd001) AM_WRITE(sub_cpu_halt_w)
AM_RANGE(0xd002, 0xd002) AM_READWRITE(nycaptor_generic_control_r, cyclshtg_generic_control_w)
@ -453,23 +442,23 @@ static ADDRESS_MAP_START( cyclshtg_master_map, AS_PROGRAM, 8, nycaptor_state )
AM_RANGE(0xd805, 0xd805) AM_READ(cyclshtg_mcu_status_r)
AM_RANGE(0xd806, 0xd806) AM_READNOP
AM_RANGE(0xd807, 0xd807) AM_READ(cyclshtg_mcu_status_r)
AM_RANGE(0xdc00, 0xdc9f) AM_READWRITE(nycaptor_spriteram_r, nycaptor_spriteram_w)
AM_RANGE(0xdca0, 0xdcbf) AM_READWRITE(nycaptor_scrlram_r, nycaptor_scrlram_w) AM_SHARE("scrlram")
AM_RANGE(0xdc00, 0xdc9f) AM_RAM AM_SHARE("spriteram")
AM_RANGE(0xdca0, 0xdcbf) AM_RAM_WRITE(nycaptor_scrlram_w) AM_SHARE("scrlram")
AM_RANGE(0xdce1, 0xdce1) AM_WRITENOP
AM_RANGE(0xdd00, 0xdeff) AM_READWRITE(nycaptor_palette_r, nycaptor_palette_w)
AM_RANGE(0xdf03, 0xdf03) AM_READWRITE(nycaptor_gfxctrl_r, nycaptor_gfxctrl_w)
AM_RANGE(0xe000, 0xffff) AM_READWRITE(nycaptor_sharedram_r, nycaptor_sharedram_w) AM_SHARE("sharedram")
AM_RANGE(0xe000, 0xffff) AM_RAM AM_SHARE("sharedram")
ADDRESS_MAP_END
static ADDRESS_MAP_START( cyclshtg_slave_map, AS_PROGRAM, 8, nycaptor_state )
AM_RANGE(0x0000, 0xbfff) AM_ROM
AM_RANGE(0xc000, 0xcfff) AM_READWRITE(nycaptor_videoram_r, nycaptor_videoram_w) AM_SHARE("videoram")
AM_RANGE(0xc000, 0xcfff) AM_RAM_WRITE(nycaptor_videoram_w) AM_SHARE("videoram")
AM_RANGE(0xd800, 0xd800) AM_READ_PORT("DSWA")
AM_RANGE(0xd801, 0xd801) AM_READ_PORT("DSWB")
AM_RANGE(0xd802, 0xd802) AM_READ_PORT("DSWC")
AM_RANGE(0xd803, 0xd803) AM_READ_PORT("IN0")
AM_RANGE(0xd804, 0xd804) AM_READ_PORT("IN1")
AM_RANGE(0xdc00, 0xdc9f) AM_READWRITE(nycaptor_spriteram_r, nycaptor_spriteram_w)
AM_RANGE(0xdc00, 0xdc9f) AM_RAM AM_SHARE("spriteram")
AM_RANGE(0xdca0, 0xdcbf) AM_WRITE(nycaptor_scrlram_w) AM_SHARE("scrlram")
AM_RANGE(0xdd00, 0xdeff) AM_READWRITE(nycaptor_palette_r, nycaptor_palette_w)
AM_RANGE(0xdf00, 0xdf00) AM_READ(nycaptor_bx_r)
@ -477,7 +466,7 @@ static ADDRESS_MAP_START( cyclshtg_slave_map, AS_PROGRAM, 8, nycaptor_state )
AM_RANGE(0xdf02, 0xdf02) AM_READ(nycaptor_b_r)
AM_RANGE(0xdf03, 0xdf03) AM_READ(nycaptor_gfxctrl_r)
AM_RANGE(0xdf03, 0xdf03) AM_WRITENOP
AM_RANGE(0xe000, 0xffff) AM_READWRITE(nycaptor_sharedram_r, nycaptor_sharedram_w)
AM_RANGE(0xe000, 0xffff) AM_RAM AM_SHARE("sharedram")
ADDRESS_MAP_END
READ8_MEMBER(nycaptor_state::unk_r)
@ -488,7 +477,7 @@ READ8_MEMBER(nycaptor_state::unk_r)
static ADDRESS_MAP_START( bronx_master_map, AS_PROGRAM, 8, nycaptor_state )
AM_RANGE(0x0000, 0x7fff) AM_ROM
AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
AM_RANGE(0xc000, 0xcfff) AM_READWRITE(nycaptor_videoram_r, nycaptor_videoram_w) AM_SHARE("videoram")
AM_RANGE(0xc000, 0xcfff) AM_RAM_WRITE(nycaptor_videoram_w) AM_SHARE("videoram")
AM_RANGE(0xd000, 0xd000) AM_READ(cyclshtg_mcu_r) AM_WRITENOP
AM_RANGE(0xd001, 0xd001) AM_WRITE(sub_cpu_halt_w)
AM_RANGE(0xd002, 0xd002) AM_READWRITE(nycaptor_generic_control_r, cyclshtg_generic_control_w)
@ -503,16 +492,16 @@ static ADDRESS_MAP_START( bronx_master_map, AS_PROGRAM, 8, nycaptor_state )
AM_RANGE(0xd805, 0xd805) AM_READ(cyclshtg_mcu_status_r)
AM_RANGE(0xd806, 0xd806) AM_READNOP
AM_RANGE(0xd807, 0xd807) AM_READ(cyclshtg_mcu_status_r)
AM_RANGE(0xdc00, 0xdc9f) AM_READWRITE(nycaptor_spriteram_r, nycaptor_spriteram_w)
AM_RANGE(0xdca0, 0xdcbf) AM_READWRITE(nycaptor_scrlram_r, nycaptor_scrlram_w) AM_SHARE("scrlram")
AM_RANGE(0xdc00, 0xdc9f) AM_RAM AM_SHARE("spriteram")
AM_RANGE(0xdca0, 0xdcbf) AM_RAM_WRITE(nycaptor_scrlram_w) AM_SHARE("scrlram")
AM_RANGE(0xdd00, 0xdeff) AM_READWRITE(nycaptor_palette_r, nycaptor_palette_w)
AM_RANGE(0xdf03, 0xdf03) AM_READWRITE(nycaptor_gfxctrl_r, nycaptor_gfxctrl_w)
AM_RANGE(0xe000, 0xffff) AM_READWRITE(nycaptor_sharedram_r, nycaptor_sharedram_w) AM_SHARE("sharedram")
AM_RANGE(0xe000, 0xffff) AM_RAM AM_SHARE("sharedram")
ADDRESS_MAP_END
static ADDRESS_MAP_START( bronx_slave_map, AS_PROGRAM, 8, nycaptor_state )
AM_RANGE(0x0000, 0x7fff) AM_ROM
AM_RANGE(0xc000, 0xcfff) AM_READWRITE(nycaptor_videoram_r, nycaptor_videoram_w) AM_SHARE("videoram")
AM_RANGE(0xc000, 0xcfff) AM_RAM_WRITE(nycaptor_videoram_w) AM_SHARE("videoram")
AM_RANGE(0xd800, 0xd800) AM_READ_PORT("DSWA")
AM_RANGE(0xd801, 0xd801) AM_READ_PORT("DSWB")
AM_RANGE(0xd802, 0xd802) AM_READ_PORT("DSWC")
@ -520,14 +509,14 @@ static ADDRESS_MAP_START( bronx_slave_map, AS_PROGRAM, 8, nycaptor_state )
AM_RANGE(0xd804, 0xd804) AM_READ_PORT("IN1")
AM_RANGE(0xd805, 0xd805) AM_READ(cyclshtg_mcu_status_r1)
AM_RANGE(0xd807, 0xd807) AM_READ(cyclshtg_mcu_status_r)
AM_RANGE(0xdc00, 0xdc9f) AM_READWRITE(nycaptor_spriteram_r, nycaptor_spriteram_w)
AM_RANGE(0xdc00, 0xdc9f) AM_RAM AM_SHARE("spriteram")
AM_RANGE(0xdca0, 0xdcbf) AM_WRITE(nycaptor_scrlram_w) AM_SHARE("scrlram")
AM_RANGE(0xdd00, 0xdeff) AM_READWRITE(nycaptor_palette_r, nycaptor_palette_w)
AM_RANGE(0xdf00, 0xdf00) AM_READ(nycaptor_bx_r)
AM_RANGE(0xdf01, 0xdf01) AM_READ(nycaptor_by_r)
AM_RANGE(0xdf02, 0xdf02) AM_READ(nycaptor_b_r)
AM_RANGE(0xdf03, 0xdf03) AM_READWRITE(nycaptor_gfxctrl_r, nycaptor_gfxctrl_w)
AM_RANGE(0xe000, 0xffff) AM_READWRITE(nycaptor_sharedram_r, nycaptor_sharedram_w)
AM_RANGE(0xe000, 0xffff) AM_RAM AM_SHARE("sharedram")
ADDRESS_MAP_END
static ADDRESS_MAP_START( bronx_slave_io_map, AS_IO, 8, nycaptor_state )

View File

@ -39,6 +39,8 @@ public:
required_shared_ptr<UINT16> m_spritecontrol;
required_device<cpu_device> m_maincpu;
optional_device<cpu_device> m_soundcpu;
optional_device<okim6295_device> m_oki;
required_device<gfxdecode_device> m_gfxdecode;
UINT16 m_sound_status;
UINT8 m_irq_vectorbase;
@ -50,6 +52,7 @@ public:
UINT16 m_pf_master_control[4];
INT32 m_sprite_list;
UINT8 m_palette_bank;
dynamic_array<UINT16> m_paletteram;
DECLARE_READ16_MEMBER(m92_eeprom_r);
DECLARE_WRITE16_MEMBER(m92_eeprom_w);
@ -91,8 +94,7 @@ public:
void m92_update_scroll_positions();
void m92_draw_tiles(screen_device &screen, bitmap_ind16 &bitmap,const rectangle &cliprect);
void m92_sprite_interrupt();
optional_device<okim6295_device> m_oki;
required_device<gfxdecode_device> m_gfxdecode;
protected:
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr);
};

View File

@ -8,6 +8,7 @@ public:
m_videoram(*this, "videoram"),
m_scrlram(*this, "scrlram"),
m_sharedram(*this, "sharedram"),
m_spriteram(*this, "spriteram"),
m_maincpu(*this, "maincpu"),
m_audiocpu(*this, "audiocpu"),
m_subcpu(*this, "sub"),
@ -19,14 +20,15 @@ public:
required_shared_ptr<UINT8> m_videoram;
required_shared_ptr<UINT8> m_scrlram;
required_shared_ptr<UINT8> m_sharedram;
UINT8 * m_spriteram;
required_shared_ptr<UINT8> m_spriteram;
/* video-related */
tilemap_t *m_bg_tilemap;
int m_char_bank;
int m_palette_bank;
int m_gfxctrl;
dynamic_array<UINT8> m_paletteram;
dynamic_array<UINT8> m_paletteram_ext;
UINT8 m_gfxctrl;
UINT8 m_char_bank;
UINT8 m_palette_bank;
/* mcu */
UINT8 m_from_main;
@ -63,8 +65,6 @@ public:
DECLARE_WRITE8_MEMBER(sub_cpu_halt_w);
DECLARE_READ8_MEMBER(from_snd_r);
DECLARE_WRITE8_MEMBER(to_main_w);
DECLARE_READ8_MEMBER(nycaptor_sharedram_r);
DECLARE_WRITE8_MEMBER(nycaptor_sharedram_w);
DECLARE_READ8_MEMBER(nycaptor_b_r);
DECLARE_READ8_MEMBER(nycaptor_by_r);
DECLARE_READ8_MEMBER(nycaptor_bx_r);
@ -93,15 +93,11 @@ public:
DECLARE_READ8_MEMBER(nycaptor_mcu_r);
DECLARE_READ8_MEMBER(nycaptor_mcu_status_r1);
DECLARE_READ8_MEMBER(nycaptor_mcu_status_r2);
DECLARE_WRITE8_MEMBER(nycaptor_spriteram_w);
DECLARE_READ8_MEMBER(nycaptor_spriteram_r);
DECLARE_WRITE8_MEMBER(nycaptor_videoram_w);
DECLARE_READ8_MEMBER(nycaptor_videoram_r);
DECLARE_WRITE8_MEMBER(nycaptor_palette_w);
DECLARE_READ8_MEMBER(nycaptor_palette_r);
DECLARE_WRITE8_MEMBER(nycaptor_gfxctrl_w);
DECLARE_READ8_MEMBER(nycaptor_gfxctrl_r);
DECLARE_READ8_MEMBER(nycaptor_scrlram_r);
DECLARE_WRITE8_MEMBER(nycaptor_scrlram_w);
DECLARE_WRITE8_MEMBER(unk_w);
DECLARE_DRIVER_INIT(cyclshtg);

View File

@ -133,7 +133,7 @@ WRITE16_MEMBER(m92_state::m92_videocontrol_w)
READ16_MEMBER(m92_state::m92_paletteram_r)
{
return m_palette->basemem().read16(offset + 0x400 * m_palette_bank);
return m_paletteram[offset + 0x400 * m_palette_bank];
}
WRITE16_MEMBER(m92_state::m92_paletteram_w)
@ -283,7 +283,8 @@ VIDEO_START_MEMBER(m92_state,m92)
state_save_register_item_array(machine(), "layer", NULL, laynum, layer->control);
}
m_generic_paletteram_16.allocate(0x1000/2);
m_paletteram.resize(m_palette->entries());
m_palette->basemem().set(m_paletteram, ENDIANNESS_LITTLE, 2);
memset(m_spriteram->live(),0,0x800);
memset(m_spriteram->buffer(),0,0x800);
@ -294,6 +295,7 @@ VIDEO_START_MEMBER(m92_state,m92)
save_item(NAME(m_raster_irq_position));
save_item(NAME(m_sprite_buffer_busy));
save_item(NAME(m_palette_bank));
save_item(NAME(m_paletteram));
}
VIDEO_START_MEMBER(m92_state,ppan)

View File

@ -245,7 +245,7 @@ WRITE8_MEMBER(mitchell_state::pang_paletteram_w)
READ8_MEMBER(mitchell_state::pang_paletteram_r)
{
return m_palette->basemem().read8(offset + (m_paletteram_bank ? 0x800 : 0x000));
return m_paletteram[offset + (m_paletteram_bank ? 0x800 : 0x000)];
}

View File

@ -25,16 +25,6 @@ int nycaptor_state::nycaptor_spot( )
return 0;
}
WRITE8_MEMBER(nycaptor_state::nycaptor_spriteram_w)
{
m_spriteram[offset] = data;
}
READ8_MEMBER(nycaptor_state::nycaptor_spriteram_r)
{
return m_spriteram[offset];
}
TILE_GET_INFO_MEMBER(nycaptor_state::get_tile_info)
{
int pal = m_videoram[tile_index * 2 + 1] & 0x0f;
@ -71,7 +61,6 @@ TILE_GET_INFO_MEMBER(nycaptor_state::get_tile_info)
void nycaptor_state::video_start()
{
m_spriteram = auto_alloc_array(machine(), UINT8, 160);
m_bg_tilemap = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(nycaptor_state::get_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32 );
m_bg_tilemap->set_transmask(0, 0xf800, 0x7ff); //split 0
@ -79,11 +68,15 @@ void nycaptor_state::video_start()
m_bg_tilemap->set_transmask(2, 0xfffc, 0x0003);//split 2
m_bg_tilemap->set_transmask(3, 0xfff0, 0x000f);//split 3
m_generic_paletteram_8.allocate(0x200);
m_generic_paletteram2_8.allocate(0x200);
m_paletteram.resize(m_palette->entries());
m_paletteram_ext.resize(m_palette->entries());
m_palette->basemem().set(m_paletteram, ENDIANNESS_LITTLE, 1);
m_palette->extmem().set(m_paletteram_ext, ENDIANNESS_LITTLE, 1);
m_bg_tilemap->set_scroll_cols(32);
save_pointer(NAME(m_spriteram), 160);
save_item(NAME(m_paletteram));
save_item(NAME(m_paletteram_ext));
}
WRITE8_MEMBER(nycaptor_state::nycaptor_videoram_w)
@ -92,18 +85,13 @@ WRITE8_MEMBER(nycaptor_state::nycaptor_videoram_w)
m_bg_tilemap->mark_tile_dirty(offset >> 1);
}
READ8_MEMBER(nycaptor_state::nycaptor_videoram_r)
{
return m_videoram[offset];
}
WRITE8_MEMBER(nycaptor_state::nycaptor_palette_w)
{
if (m_gametype == 2) //colt
return;
if (offset & 0x100)
m_palette->write(space, (offset & 0xff) + (m_palette_bank << 8), data);
m_palette->write_ext(space, (offset & 0xff) + (m_palette_bank << 8), data);
else
m_palette->write(space, (offset & 0xff) + (m_palette_bank << 8), data);
}
@ -111,9 +99,9 @@ WRITE8_MEMBER(nycaptor_state::nycaptor_palette_w)
READ8_MEMBER(nycaptor_state::nycaptor_palette_r)
{
if (offset & 0x100)
return m_generic_paletteram2_8[(offset & 0xff) + (m_palette_bank << 8)];
return m_paletteram_ext[(offset & 0xff) + (m_palette_bank << 8)];
else
return m_generic_paletteram_8 [(offset & 0xff) + (m_palette_bank << 8)];
return m_paletteram[(offset & 0xff) + (m_palette_bank << 8)];
}
WRITE8_MEMBER(nycaptor_state::nycaptor_gfxctrl_w)
@ -138,11 +126,6 @@ READ8_MEMBER(nycaptor_state::nycaptor_gfxctrl_r)
return m_gfxctrl;
}
READ8_MEMBER(nycaptor_state::nycaptor_scrlram_r)
{
return m_scrlram[offset];
}
WRITE8_MEMBER(nycaptor_state::nycaptor_scrlram_w)
{
m_scrlram[offset] = data;