mirror of
https://github.com/holub/mame
synced 2025-04-23 08:49:55 +03:00
Some Namco System 2 cleanups, removing the need for
AM_BASE/_SIZE_LEGACY. Also moved some handlers and statics into the state class.
This commit is contained in:
parent
95431b690e
commit
b56467bbb6
@ -416,13 +416,13 @@ static void zdrawgfxzoom(
|
||||
}
|
||||
|
||||
void
|
||||
namcos2_draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int pri, int control )
|
||||
namcos2_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect, int pri, int control )
|
||||
{
|
||||
int offset = (control & 0x000f) * (128*4);
|
||||
int loop;
|
||||
if( pri==0 )
|
||||
{
|
||||
machine.priority_bitmap.fill(0, cliprect );
|
||||
machine().priority_bitmap.fill(0, cliprect );
|
||||
}
|
||||
for( loop=0; loop < 128; loop++ )
|
||||
{
|
||||
@ -447,12 +447,12 @@ namcos2_draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const recta
|
||||
* Sprite colour index D04-D07
|
||||
* Sprite Size X D10-D15
|
||||
*/
|
||||
int word3 = namcos2_sprite_ram[offset+(loop*4)+3];
|
||||
int word3 = m_spriteram[offset+(loop*4)+3];
|
||||
if( (word3&0xf)==pri )
|
||||
{
|
||||
int word0 = namcos2_sprite_ram[offset+(loop*4)+0];
|
||||
int word1 = namcos2_sprite_ram[offset+(loop*4)+1];
|
||||
int offset4 = namcos2_sprite_ram[offset+(loop*4)+2];
|
||||
int word0 = m_spriteram[offset+(loop*4)+0];
|
||||
int word1 = m_spriteram[offset+(loop*4)+1];
|
||||
int offset4 = m_spriteram[offset+(loop*4)+2];
|
||||
|
||||
int sizey=((word0>>10)&0x3f)+1;
|
||||
int sizex=(word3>>10)&0x3f;
|
||||
@ -472,7 +472,7 @@ namcos2_draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const recta
|
||||
int scaley = (sizey<<16)/((word0&0x0200)?0x20:0x10);
|
||||
if(scalex && scaley)
|
||||
{
|
||||
gfx_element *gfx = machine.gfx[rgn];
|
||||
gfx_element *gfx = machine().gfx[rgn];
|
||||
|
||||
if( (word0&0x0200)==0 )
|
||||
gfx_element_set_source_clip(gfx, (word1&0x0001) ? 16 : 0, 16, (word1&0x0002) ? 16 : 0, 16);
|
||||
@ -495,8 +495,7 @@ namcos2_draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const recta
|
||||
}
|
||||
} /* namcos2_draw_sprites */
|
||||
|
||||
void
|
||||
namcos2_draw_sprites_metalhawk(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int pri )
|
||||
void namcos2_state::draw_sprites_metalhawk(bitmap_ind16 &bitmap, const rectangle &cliprect, int pri )
|
||||
{
|
||||
/**
|
||||
* word#0
|
||||
@ -528,12 +527,12 @@ namcos2_draw_sprites_metalhawk(running_machine &machine, bitmap_ind16 &bitmap, c
|
||||
* --------xxxx---- color
|
||||
* x--------------- unknown
|
||||
*/
|
||||
const UINT16 *pSource = namcos2_sprite_ram;
|
||||
const UINT16 *pSource = m_spriteram;
|
||||
rectangle rect;
|
||||
int loop;
|
||||
if( pri==0 )
|
||||
{
|
||||
machine.priority_bitmap.fill(0, cliprect );
|
||||
machine().priority_bitmap.fill(0, cliprect );
|
||||
}
|
||||
for( loop=0; loop < 128; loop++ )
|
||||
{
|
||||
@ -606,7 +605,7 @@ namcos2_draw_sprites_metalhawk(running_machine &machine, bitmap_ind16 &bitmap, c
|
||||
zdrawgfxzoom(
|
||||
bitmap,
|
||||
rect,
|
||||
machine.gfx[0],
|
||||
machine().gfx[0],
|
||||
sprn, color,
|
||||
flipx,flipy,
|
||||
sx,sy,
|
||||
|
@ -467,53 +467,6 @@ $a00000 checks have been seen on the Final Lap boards.
|
||||
/*************************************************************/
|
||||
/* 68000/6809/63705 Shared memory area - DUAL PORT Memory */
|
||||
/*************************************************************/
|
||||
class namcos2_state : public driver_device
|
||||
{
|
||||
public:
|
||||
namcos2_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: driver_device(mconfig, type, tag)
|
||||
{ }
|
||||
DECLARE_READ16_MEMBER(namcos2_68k_dpram_word_r);
|
||||
DECLARE_WRITE16_MEMBER(namcos2_68k_dpram_word_w);
|
||||
DECLARE_READ8_MEMBER(namcos2_dpram_byte_r);
|
||||
DECLARE_WRITE8_MEMBER(namcos2_dpram_byte_w);
|
||||
DECLARE_DRIVER_INIT(cosmogng);
|
||||
DECLARE_DRIVER_INIT(sgunner2);
|
||||
DECLARE_DRIVER_INIT(kyukaidk);
|
||||
DECLARE_DRIVER_INIT(bubbletr);
|
||||
DECLARE_DRIVER_INIT(suzuk8h2);
|
||||
DECLARE_DRIVER_INIT(burnforc);
|
||||
DECLARE_DRIVER_INIT(gollygho);
|
||||
DECLARE_DRIVER_INIT(rthun2j);
|
||||
DECLARE_DRIVER_INIT(sws);
|
||||
DECLARE_DRIVER_INIT(finehour);
|
||||
DECLARE_DRIVER_INIT(finallap);
|
||||
DECLARE_DRIVER_INIT(dirtfoxj);
|
||||
DECLARE_DRIVER_INIT(marvlanj);
|
||||
DECLARE_DRIVER_INIT(sws92);
|
||||
DECLARE_DRIVER_INIT(dsaber);
|
||||
DECLARE_DRIVER_INIT(assault);
|
||||
DECLARE_DRIVER_INIT(mirninja);
|
||||
DECLARE_DRIVER_INIT(finalap2);
|
||||
DECLARE_DRIVER_INIT(valkyrie);
|
||||
DECLARE_DRIVER_INIT(fourtrax);
|
||||
DECLARE_DRIVER_INIT(finalap3);
|
||||
DECLARE_DRIVER_INIT(luckywld);
|
||||
DECLARE_DRIVER_INIT(assaultj);
|
||||
DECLARE_DRIVER_INIT(dsaberj);
|
||||
DECLARE_DRIVER_INIT(suzuka8h);
|
||||
DECLARE_DRIVER_INIT(phelios);
|
||||
DECLARE_DRIVER_INIT(sws93);
|
||||
DECLARE_DRIVER_INIT(metlhawk);
|
||||
DECLARE_DRIVER_INIT(sws92g);
|
||||
DECLARE_DRIVER_INIT(assaultp_hack);
|
||||
DECLARE_DRIVER_INIT(assaultp);
|
||||
DECLARE_DRIVER_INIT(ordyne);
|
||||
DECLARE_DRIVER_INIT(marvland);
|
||||
DECLARE_DRIVER_INIT(rthun2);
|
||||
};
|
||||
|
||||
static UINT8 *namcos2_dpram; /* 2Kx8 */
|
||||
|
||||
static void
|
||||
GollyGhostUpdateLED_c4( int data )
|
||||
@ -574,16 +527,16 @@ GollyGhostUpdateDiorama_c0( int data )
|
||||
}
|
||||
}
|
||||
|
||||
READ16_MEMBER(namcos2_state::namcos2_68k_dpram_word_r)
|
||||
READ16_MEMBER(namcos2_state::dpram_word_r)
|
||||
{
|
||||
return namcos2_dpram[offset];
|
||||
return m_dpram[offset];
|
||||
}
|
||||
|
||||
WRITE16_MEMBER(namcos2_state::namcos2_68k_dpram_word_w)
|
||||
WRITE16_MEMBER(namcos2_state::dpram_word_w)
|
||||
{
|
||||
if( ACCESSING_BITS_0_7 )
|
||||
{
|
||||
namcos2_dpram[offset] = data&0xff;
|
||||
m_dpram[offset] = data&0xff;
|
||||
|
||||
if( namcos2_gametype==NAMCOS2_GOLLY_GHOST )
|
||||
{
|
||||
@ -608,14 +561,14 @@ WRITE16_MEMBER(namcos2_state::namcos2_68k_dpram_word_w)
|
||||
}
|
||||
|
||||
|
||||
READ8_MEMBER(namcos2_state::namcos2_dpram_byte_r)
|
||||
READ8_MEMBER(namcos2_state::dpram_byte_r)
|
||||
{
|
||||
return namcos2_dpram[offset];
|
||||
return m_dpram[offset];
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(namcos2_state::namcos2_dpram_byte_w)
|
||||
WRITE8_MEMBER(namcos2_state::dpram_byte_w)
|
||||
{
|
||||
namcos2_dpram[offset] = data;
|
||||
m_dpram[offset] = data;
|
||||
}
|
||||
|
||||
/*************************************************************/
|
||||
@ -638,9 +591,9 @@ static ADDRESS_MAP_START( namcos2_68k_default_cpu_board_am, AS_PROGRAM, 16, namc
|
||||
AM_RANGE(0x200000, 0x3fffff) AM_READ_LEGACY(namcos2_68k_data_rom_r)
|
||||
AM_RANGE(0x400000, 0x41ffff) AM_READWRITE_LEGACY(namco_tilemapvideoram16_r,namco_tilemapvideoram16_w)
|
||||
AM_RANGE(0x420000, 0x42003f) AM_READWRITE_LEGACY(namco_tilemapcontrol16_r,namco_tilemapcontrol16_w)
|
||||
AM_RANGE(0x440000, 0x44ffff) AM_READWRITE_LEGACY(namcos2_68k_video_palette_r,namcos2_68k_video_palette_w) AM_BASE_LEGACY(&namcos2_68k_palette_ram) AM_SIZE_LEGACY(&namcos2_68k_palette_size)
|
||||
AM_RANGE(0x460000, 0x460fff) AM_READWRITE(namcos2_68k_dpram_word_r,namcos2_68k_dpram_word_w)
|
||||
AM_RANGE(0x468000, 0x468fff) AM_READWRITE(namcos2_68k_dpram_word_r,namcos2_68k_dpram_word_w) /* mirror */
|
||||
AM_RANGE(0x440000, 0x44ffff) AM_READWRITE(paletteram_word_r,paletteram_word_w) AM_SHARE("paletteram")
|
||||
AM_RANGE(0x460000, 0x460fff) AM_READWRITE(dpram_word_r,dpram_word_w)
|
||||
AM_RANGE(0x468000, 0x468fff) AM_READWRITE(dpram_word_r,dpram_word_w) /* mirror */
|
||||
AM_RANGE(0x480000, 0x483fff) AM_READWRITE_LEGACY(namcos2_68k_serial_comms_ram_r,namcos2_68k_serial_comms_ram_w) AM_BASE_LEGACY(&namcos2_68k_serial_comms_ram)
|
||||
AM_RANGE(0x4a0000, 0x4a000f) AM_READWRITE_LEGACY(namcos2_68k_serial_comms_ctrl_r,namcos2_68k_serial_comms_ctrl_w)
|
||||
ADDRESS_MAP_END
|
||||
@ -648,10 +601,10 @@ ADDRESS_MAP_END
|
||||
/*************************************************************/
|
||||
|
||||
static ADDRESS_MAP_START( common_default_am, AS_PROGRAM, 16, namcos2_state )
|
||||
AM_RANGE(0xc00000, 0xc03fff) AM_READWRITE_LEGACY(namcos2_sprite_ram_r,namcos2_sprite_ram_w) AM_BASE_LEGACY(&namcos2_sprite_ram)
|
||||
AM_RANGE(0xc00000, 0xc03fff) AM_READWRITE(spriteram_word_r, spriteram_word_w) AM_SHARE("spriteram")
|
||||
AM_RANGE(0xc40000, 0xc40001) AM_READWRITE_LEGACY(namcos2_gfx_ctrl_r,namcos2_gfx_ctrl_w)
|
||||
AM_RANGE(0xc80000, 0xc9ffff) AM_READWRITE_LEGACY(namcos2_68k_roz_ram_r,namcos2_68k_roz_ram_w) AM_BASE_LEGACY(&namcos2_68k_roz_ram)
|
||||
AM_RANGE(0xcc0000, 0xcc000f) AM_READWRITE_LEGACY(namcos2_68k_roz_ctrl_r,namcos2_68k_roz_ctrl_w)
|
||||
AM_RANGE(0xc80000, 0xc9ffff) AM_READWRITE(rozram_word_r,rozram_word_w) AM_SHARE("rozram")
|
||||
AM_RANGE(0xcc0000, 0xcc000f) AM_READWRITE(roz_ctrl_word_r, roz_ctrl_word_w)
|
||||
AM_RANGE(0xd00000, 0xd0000f) AM_READWRITE_LEGACY(namcos2_68k_key_r,namcos2_68k_key_w)
|
||||
AM_IMPORT_FROM( namcos2_68k_default_cpu_board_am )
|
||||
ADDRESS_MAP_END
|
||||
@ -676,7 +629,7 @@ ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( common_finallap_am, AS_PROGRAM, 16, namcos2_state )
|
||||
AM_RANGE(0x300000, 0x33ffff) AM_READ_LEGACY(namcos2_flap_prot_r)
|
||||
AM_RANGE(0x800000, 0x80ffff) AM_READ_LEGACY(namcos2_sprite_ram_r) AM_WRITE_LEGACY(namcos2_sprite_ram_w) AM_BASE_LEGACY(&namcos2_sprite_ram)
|
||||
AM_RANGE(0x800000, 0x80ffff) AM_READWRITE(spriteram_word_r, spriteram_word_w) AM_SHARE("spriteram")
|
||||
AM_RANGE(0x840000, 0x840001) AM_READ_LEGACY(namcos2_gfx_ctrl_r) AM_WRITE_LEGACY(namcos2_gfx_ctrl_w)
|
||||
AM_RANGE(0x880000, 0x89ffff) AM_READ_LEGACY(namco_road16_r) AM_WRITE_LEGACY(namco_road16_w)
|
||||
AM_RANGE(0x8c0000, 0x8c0001) AM_WRITENOP
|
||||
@ -725,7 +678,7 @@ ADDRESS_MAP_END
|
||||
/*************************************************************/
|
||||
|
||||
static ADDRESS_MAP_START( common_metlhawk_am, AS_PROGRAM, 16, namcos2_state )
|
||||
AM_RANGE(0xc00000, 0xc03fff) AM_READWRITE_LEGACY(namcos2_sprite_ram_r,namcos2_sprite_ram_w) AM_BASE_LEGACY(&namcos2_sprite_ram) \
|
||||
AM_RANGE(0xc00000, 0xc03fff) AM_READWRITE(spriteram_word_r, spriteram_word_w) AM_SHARE("spriteram") \
|
||||
AM_RANGE(0xc40000, 0xc4ffff) AM_READWRITE_LEGACY(namco_rozvideoram16_r,namco_rozvideoram16_w) \
|
||||
AM_RANGE(0xd00000, 0xd0001f) AM_READWRITE_LEGACY(namco_rozcontrol16_r,namco_rozcontrol16_w) \
|
||||
AM_RANGE(0xe00000, 0xe00001) AM_READWRITE_LEGACY(namcos2_gfx_ctrl_r,namcos2_gfx_ctrl_w) /* ??? */ \
|
||||
@ -785,8 +738,8 @@ static ADDRESS_MAP_START( sound_default_am, AS_PROGRAM, 8, namcos2_state )
|
||||
AM_RANGE(0x0000, 0x3fff) AM_ROMBANK("bank6") /* banked */
|
||||
AM_RANGE(0x4000, 0x4001) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r,ym2151_w)
|
||||
AM_RANGE(0x5000, 0x6fff) AM_DEVREADWRITE_LEGACY("c140", c140_r,c140_w)
|
||||
AM_RANGE(0x7000, 0x77ff) AM_READWRITE(namcos2_dpram_byte_r,namcos2_dpram_byte_w) AM_BASE_LEGACY(&namcos2_dpram)
|
||||
AM_RANGE(0x7800, 0x7fff) AM_READWRITE(namcos2_dpram_byte_r,namcos2_dpram_byte_w) /* mirror */
|
||||
AM_RANGE(0x7000, 0x77ff) AM_READWRITE(dpram_byte_r,dpram_byte_w) AM_SHARE("dpram")
|
||||
AM_RANGE(0x7800, 0x7fff) AM_READWRITE(dpram_byte_r,dpram_byte_w) /* mirror */
|
||||
AM_RANGE(0x8000, 0x9fff) AM_RAM
|
||||
AM_RANGE(0xa000, 0xbfff) AM_WRITENOP /* Amplifier enable on 1st write */
|
||||
AM_RANGE(0xc000, 0xc001) AM_WRITE_LEGACY(namcos2_sound_bankselect_w)
|
||||
@ -817,7 +770,7 @@ static ADDRESS_MAP_START( mcu_default_am, AS_PROGRAM, 8, namcos2_state )
|
||||
AM_RANGE(0x3001, 0x3001) AM_READ_PORT("MCUDI1")
|
||||
AM_RANGE(0x3002, 0x3002) AM_READ_PORT("MCUDI2")
|
||||
AM_RANGE(0x3003, 0x3003) AM_READ_PORT("MCUDI3")
|
||||
AM_RANGE(0x5000, 0x57ff) AM_READWRITE(namcos2_dpram_byte_r,namcos2_dpram_byte_w) AM_BASE_LEGACY(&namcos2_dpram)
|
||||
AM_RANGE(0x5000, 0x57ff) AM_READWRITE(dpram_byte_r,dpram_byte_w) AM_SHARE("dpram")
|
||||
AM_RANGE(0x6000, 0x6fff) AM_READNOP /* watchdog */
|
||||
AM_RANGE(0x8000, 0xffff) AM_ROM
|
||||
ADDRESS_MAP_END
|
||||
@ -1680,13 +1633,11 @@ static MACHINE_CONFIG_START( default, namcos2_state )
|
||||
MCFG_SCREEN_REFRESH_RATE( (49152000.0 / 8) / (384 * 264) )
|
||||
MCFG_SCREEN_SIZE(384, 264)
|
||||
MCFG_SCREEN_VISIBLE_AREA(0*8, 36*8-1, 0*8, 28*8-1)
|
||||
MCFG_SCREEN_UPDATE_STATIC(namcos2_default)
|
||||
MCFG_SCREEN_UPDATE_DRIVER(namcos2_state, screen_update)
|
||||
|
||||
MCFG_GFXDECODE(namcos2)
|
||||
MCFG_PALETTE_LENGTH(0x2000)
|
||||
|
||||
MCFG_VIDEO_START(namcos2)
|
||||
|
||||
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
|
||||
|
||||
MCFG_SOUND_ADD("c140", C140, C140_SOUND_CLOCK) /* 21.333kHz */
|
||||
@ -1756,13 +1707,11 @@ static MACHINE_CONFIG_START( gollygho, namcos2_state )
|
||||
MCFG_SCREEN_REFRESH_RATE( (49152000.0 / 8) / (384 * 264) )
|
||||
MCFG_SCREEN_SIZE(384, 264)
|
||||
MCFG_SCREEN_VISIBLE_AREA(0*8, 36*8-1, 0*8, 28*8-1)
|
||||
MCFG_SCREEN_UPDATE_STATIC(namcos2_default)
|
||||
MCFG_SCREEN_UPDATE_DRIVER(namcos2_state, screen_update)
|
||||
|
||||
MCFG_GFXDECODE(namcos2)
|
||||
MCFG_PALETTE_LENGTH(0x2000)
|
||||
|
||||
MCFG_VIDEO_START(namcos2)
|
||||
|
||||
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
|
||||
|
||||
MCFG_SOUND_ADD("c140", C140, C140_SOUND_CLOCK) /* 21.333kHz */
|
||||
@ -1805,12 +1754,12 @@ static MACHINE_CONFIG_START( finallap, namcos2_state )
|
||||
MCFG_SCREEN_REFRESH_RATE( (49152000.0 / 8) / (384 * 264) )
|
||||
MCFG_SCREEN_SIZE(384, 264)
|
||||
MCFG_SCREEN_VISIBLE_AREA(0*8, 36*8-1, 0*8, 28*8-1)
|
||||
MCFG_SCREEN_UPDATE_STATIC(finallap)
|
||||
MCFG_SCREEN_UPDATE_DRIVER(namcos2_state, screen_update_finallap)
|
||||
|
||||
MCFG_GFXDECODE(finallap)
|
||||
MCFG_PALETTE_LENGTH(0x2000)
|
||||
|
||||
MCFG_VIDEO_START(finallap)
|
||||
MCFG_VIDEO_START_OVERRIDE(namcos2_state, video_start_finallap)
|
||||
|
||||
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
|
||||
|
||||
@ -1854,12 +1803,12 @@ static MACHINE_CONFIG_START( sgunner, namcos2_state )
|
||||
MCFG_SCREEN_REFRESH_RATE( (49152000.0 / 8) / (384 * 264) )
|
||||
MCFG_SCREEN_SIZE(384, 264)
|
||||
MCFG_SCREEN_VISIBLE_AREA(0*8, 36*8-1, 0*8, 28*8-1)
|
||||
MCFG_SCREEN_UPDATE_STATIC(sgunner)
|
||||
MCFG_SCREEN_UPDATE_DRIVER(namcos2_state, screen_update_sgunner)
|
||||
|
||||
MCFG_GFXDECODE(sgunner)
|
||||
MCFG_PALETTE_LENGTH(0x2000)
|
||||
|
||||
MCFG_VIDEO_START(sgunner)
|
||||
MCFG_VIDEO_START_OVERRIDE(namcos2_state, video_start_sgunner)
|
||||
|
||||
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
|
||||
|
||||
@ -1903,12 +1852,12 @@ static MACHINE_CONFIG_START( luckywld, namcos2_state )
|
||||
MCFG_SCREEN_REFRESH_RATE( (49152000.0 / 8) / (384 * 264) )
|
||||
MCFG_SCREEN_SIZE(384, 264)
|
||||
MCFG_SCREEN_VISIBLE_AREA(0*8, 36*8-1, 0*8, 28*8-1)
|
||||
MCFG_SCREEN_UPDATE_STATIC(luckywld)
|
||||
MCFG_SCREEN_UPDATE_DRIVER(namcos2_state, screen_update_luckywld)
|
||||
|
||||
MCFG_GFXDECODE(luckywld)
|
||||
MCFG_PALETTE_LENGTH(0x2000)
|
||||
|
||||
MCFG_VIDEO_START(luckywld)
|
||||
MCFG_VIDEO_START_OVERRIDE(namcos2_state, video_start_luckywld)
|
||||
|
||||
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
|
||||
|
||||
@ -1952,12 +1901,12 @@ static MACHINE_CONFIG_START( metlhawk, namcos2_state )
|
||||
MCFG_SCREEN_REFRESH_RATE( (49152000.0 / 8) / (384 * 264) )
|
||||
MCFG_SCREEN_SIZE(384, 264)
|
||||
MCFG_SCREEN_VISIBLE_AREA(0*8, 36*8-1, 0*8, 28*8-1)
|
||||
MCFG_SCREEN_UPDATE_STATIC(metlhawk)
|
||||
MCFG_SCREEN_UPDATE_DRIVER(namcos2_state, screen_update_metlhawk)
|
||||
|
||||
MCFG_GFXDECODE(metlhawk)
|
||||
MCFG_PALETTE_LENGTH(0x2000)
|
||||
|
||||
MCFG_VIDEO_START(metlhawk)
|
||||
MCFG_VIDEO_START_OVERRIDE(namcos2_state, video_start_metlhawk)
|
||||
|
||||
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
|
||||
|
||||
|
@ -1090,7 +1090,7 @@ READ16_MEMBER(namcos21_state::NAMCO_C139_SCI_register_r){ return 0; }
|
||||
static ADDRESS_MAP_START( namcos21_68k_master, AS_PROGRAM, 16, namcos21_state )
|
||||
AM_RANGE(0x000000, 0x0fffff) AM_ROM
|
||||
AM_RANGE(0x100000, 0x10ffff) AM_RAM /* private work RAM */
|
||||
AM_RANGE(0x180000, 0x183fff) AM_READWRITE_LEGACY(NAMCOS2_68K_eeprom_R,NAMCOS2_68K_eeprom_W)// AM_BASE_LEGACY(&namcos2_eeprom) AM_SIZE_LEGACY(&namcos2_eeprom_size)
|
||||
AM_RANGE(0x180000, 0x183fff) AM_READWRITE_LEGACY(NAMCOS2_68K_eeprom_R,NAMCOS2_68K_eeprom_W)
|
||||
AM_RANGE(0x1c0000, 0x1fffff) AM_READWRITE_LEGACY(namcos2_68k_master_C148_r,namcos2_68k_master_C148_w)
|
||||
NAMCO21_68K_COMMON
|
||||
ADDRESS_MAP_END
|
||||
@ -1320,7 +1320,7 @@ WRITE16_MEMBER(namcos21_state::winrun_dspcomram_control_w)
|
||||
static ADDRESS_MAP_START( am_master_winrun, AS_PROGRAM, 16, namcos21_state )
|
||||
AM_RANGE(0x000000, 0x03ffff) AM_ROM
|
||||
AM_RANGE(0x100000, 0x10ffff) AM_RAM /* work RAM */
|
||||
AM_RANGE(0x180000, 0x183fff) AM_READWRITE_LEGACY(NAMCOS2_68K_eeprom_R,NAMCOS2_68K_eeprom_W)// AM_BASE_LEGACY(&namcos2_eeprom) AM_SIZE_LEGACY(&namcos2_eeprom_size)
|
||||
AM_RANGE(0x180000, 0x183fff) AM_READWRITE_LEGACY(NAMCOS2_68K_eeprom_R,NAMCOS2_68K_eeprom_W)
|
||||
AM_RANGE(0x1c0000, 0x1fffff) AM_READWRITE_LEGACY(namcos2_68k_master_C148_r,namcos2_68k_master_C148_w)
|
||||
AM_RANGE(0x250000, 0x25ffff) AM_RAM AM_SHARE("winrun_polydata")
|
||||
AM_RANGE(0x260000, 0x26ffff) AM_RAM /* unused? */
|
||||
@ -1429,7 +1429,7 @@ ADDRESS_MAP_END
|
||||
static ADDRESS_MAP_START( driveyes_68k_master, AS_PROGRAM, 16, namcos21_state )
|
||||
AM_RANGE(0x000000, 0x03ffff) AM_ROM
|
||||
AM_RANGE(0x100000, 0x10ffff) AM_RAM /* private work RAM */
|
||||
AM_RANGE(0x180000, 0x183fff) AM_READWRITE_LEGACY(NAMCOS2_68K_eeprom_R,NAMCOS2_68K_eeprom_W)// AM_BASE_LEGACY(&namcos2_eeprom) AM_SIZE_LEGACY(&namcos2_eeprom_size)
|
||||
AM_RANGE(0x180000, 0x183fff) AM_READWRITE_LEGACY(NAMCOS2_68K_eeprom_R,NAMCOS2_68K_eeprom_W)
|
||||
AM_RANGE(0x1c0000, 0x1fffff) AM_READWRITE_LEGACY(namcos2_68k_master_C148_r,namcos2_68k_master_C148_w)
|
||||
AM_RANGE(0x250000, 0x25ffff) AM_RAM AM_SHARE("winrun_polydata")
|
||||
AM_RANGE(0x280000, 0x281fff) AM_WRITE(winrun_dspbios_w) AM_SHARE("winrun_dspbios")
|
||||
|
@ -110,13 +110,6 @@ WRITE32_HANDLER( namco_tilemapvideoram32_le_w );
|
||||
READ32_HANDLER( namco_tilemapcontrol32_le_r );
|
||||
WRITE32_HANDLER( namco_tilemapcontrol32_le_w );
|
||||
|
||||
/***********************************************************************************/
|
||||
|
||||
/* Namco System II Sprite Rendering */
|
||||
void namcos2_draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int pri, int control );
|
||||
|
||||
void namcos2_draw_sprites_metalhawk( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int pri );
|
||||
|
||||
/***********************************************************************************/
|
||||
/* C355 Motion Object Emulation */
|
||||
|
||||
|
@ -85,28 +85,106 @@ enum
|
||||
NAMCOFL_FINAL_LAP_R
|
||||
};
|
||||
|
||||
class namcos2_state : public driver_device
|
||||
{
|
||||
public:
|
||||
namcos2_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: driver_device(mconfig, type, tag),
|
||||
m_dpram(*this, "dpram"),
|
||||
m_spriteram(*this, "spriteram"),
|
||||
m_paletteram(*this, "paletteram"),
|
||||
m_rozram(*this, "rozram")
|
||||
{ }
|
||||
DECLARE_READ16_MEMBER(dpram_word_r);
|
||||
DECLARE_WRITE16_MEMBER(dpram_word_w);
|
||||
DECLARE_READ8_MEMBER(dpram_byte_r);
|
||||
DECLARE_WRITE8_MEMBER(dpram_byte_w);
|
||||
DECLARE_DRIVER_INIT(cosmogng);
|
||||
DECLARE_DRIVER_INIT(sgunner2);
|
||||
DECLARE_DRIVER_INIT(kyukaidk);
|
||||
DECLARE_DRIVER_INIT(bubbletr);
|
||||
DECLARE_DRIVER_INIT(suzuk8h2);
|
||||
DECLARE_DRIVER_INIT(burnforc);
|
||||
DECLARE_DRIVER_INIT(gollygho);
|
||||
DECLARE_DRIVER_INIT(rthun2j);
|
||||
DECLARE_DRIVER_INIT(sws);
|
||||
DECLARE_DRIVER_INIT(finehour);
|
||||
DECLARE_DRIVER_INIT(finallap);
|
||||
DECLARE_DRIVER_INIT(dirtfoxj);
|
||||
DECLARE_DRIVER_INIT(marvlanj);
|
||||
DECLARE_DRIVER_INIT(sws92);
|
||||
DECLARE_DRIVER_INIT(dsaber);
|
||||
DECLARE_DRIVER_INIT(assault);
|
||||
DECLARE_DRIVER_INIT(mirninja);
|
||||
DECLARE_DRIVER_INIT(finalap2);
|
||||
DECLARE_DRIVER_INIT(valkyrie);
|
||||
DECLARE_DRIVER_INIT(fourtrax);
|
||||
DECLARE_DRIVER_INIT(finalap3);
|
||||
DECLARE_DRIVER_INIT(luckywld);
|
||||
DECLARE_DRIVER_INIT(assaultj);
|
||||
DECLARE_DRIVER_INIT(dsaberj);
|
||||
DECLARE_DRIVER_INIT(suzuka8h);
|
||||
DECLARE_DRIVER_INIT(phelios);
|
||||
DECLARE_DRIVER_INIT(sws93);
|
||||
DECLARE_DRIVER_INIT(metlhawk);
|
||||
DECLARE_DRIVER_INIT(sws92g);
|
||||
DECLARE_DRIVER_INIT(assaultp_hack);
|
||||
DECLARE_DRIVER_INIT(assaultp);
|
||||
DECLARE_DRIVER_INIT(ordyne);
|
||||
DECLARE_DRIVER_INIT(marvland);
|
||||
DECLARE_DRIVER_INIT(rthun2);
|
||||
|
||||
virtual void video_start();
|
||||
void video_start_finallap();
|
||||
void video_start_luckywld();
|
||||
void video_start_metlhawk();
|
||||
void video_start_sgunner();
|
||||
|
||||
UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
UINT32 screen_update_finallap(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
UINT32 screen_update_luckywld(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
UINT32 screen_update_metlhawk(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
UINT32 screen_update_sgunner(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
|
||||
DECLARE_READ16_MEMBER( paletteram_word_r );
|
||||
DECLARE_WRITE16_MEMBER( paletteram_word_w );
|
||||
DECLARE_READ16_MEMBER( spriteram_word_r );
|
||||
DECLARE_WRITE16_MEMBER( spriteram_word_w );
|
||||
DECLARE_READ16_MEMBER( rozram_word_r );
|
||||
DECLARE_WRITE16_MEMBER( rozram_word_w );
|
||||
DECLARE_READ16_MEMBER( roz_ctrl_word_r );
|
||||
DECLARE_WRITE16_MEMBER( roz_ctrl_word_w );
|
||||
|
||||
void update_palette();
|
||||
void apply_clip( rectangle &clip, const rectangle &cliprect );
|
||||
void draw_roz(bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect, int pri, int control );
|
||||
void draw_sprites_metalhawk(bitmap_ind16 &bitmap, const rectangle &cliprect, int pri );
|
||||
UINT16 get_palette_register( int which );
|
||||
|
||||
required_shared_ptr<UINT8> m_dpram; /* 2Kx8 */
|
||||
optional_shared_ptr<UINT16> m_spriteram;
|
||||
required_shared_ptr<UINT16> m_paletteram;
|
||||
optional_shared_ptr<UINT16> m_rozram;
|
||||
|
||||
UINT16 m_roz_ctrl[0x8];
|
||||
tilemap_t *m_tilemap_roz;
|
||||
|
||||
};
|
||||
|
||||
/*----------- defined in video/namcos2.c -----------*/
|
||||
|
||||
#define NAMCOS21_NUM_COLORS 0x8000
|
||||
|
||||
VIDEO_START( namcos2 );
|
||||
SCREEN_UPDATE_IND16( namcos2_default );
|
||||
|
||||
VIDEO_START( finallap );
|
||||
SCREEN_UPDATE_IND16( finallap );
|
||||
|
||||
VIDEO_START( luckywld );
|
||||
SCREEN_UPDATE_IND16( luckywld );
|
||||
|
||||
VIDEO_START( metlhawk );
|
||||
SCREEN_UPDATE_IND16( metlhawk );
|
||||
|
||||
VIDEO_START( sgunner );
|
||||
SCREEN_UPDATE_IND16( sgunner );
|
||||
|
||||
extern UINT16 *namcos2_sprite_ram;
|
||||
WRITE16_HANDLER( namcos2_sprite_ram_w );
|
||||
READ16_HANDLER( namcos2_sprite_ram_r );
|
||||
|
||||
int namcos2_GetPosIrqScanline( running_machine &machine );
|
||||
|
||||
@ -116,24 +194,13 @@ READ16_HANDLER( namcos2_gfx_ctrl_r );
|
||||
/**************************************************************/
|
||||
/* Shared video palette function handlers */
|
||||
/**************************************************************/
|
||||
READ16_HANDLER( namcos2_68k_video_palette_r );
|
||||
WRITE16_HANDLER( namcos2_68k_video_palette_w );
|
||||
|
||||
#define VIRTUAL_PALETTE_BANKS 30
|
||||
extern UINT16 *namcos2_68k_palette_ram;
|
||||
extern size_t namcos2_68k_palette_size;
|
||||
|
||||
/**************************************************************/
|
||||
/* ROZ - Rotate & Zoom memory function handlers */
|
||||
/**************************************************************/
|
||||
|
||||
WRITE16_HANDLER( namcos2_68k_roz_ctrl_w );
|
||||
READ16_HANDLER( namcos2_68k_roz_ctrl_r );
|
||||
|
||||
WRITE16_HANDLER( namcos2_68k_roz_ram_w );
|
||||
READ16_HANDLER( namcos2_68k_roz_ram_r );
|
||||
extern UINT16 *namcos2_68k_roz_ram;
|
||||
|
||||
/*----------- defined in machine/namcos2.c -----------*/
|
||||
|
||||
extern void (*namcos2_kickstart)(running_machine &machine, int internal);
|
||||
|
@ -5,15 +5,6 @@
|
||||
#include "includes/namcos2.h"
|
||||
#include "includes/namcoic.h"
|
||||
|
||||
UINT16 *namcos2_sprite_ram;
|
||||
UINT16 *namcos2_68k_palette_ram;
|
||||
size_t namcos2_68k_palette_size;
|
||||
//size_t namcos2_68k_roz_ram_size;
|
||||
UINT16 *namcos2_68k_roz_ram;
|
||||
|
||||
static UINT16 namcos2_68k_roz_ctrl[0x8];
|
||||
static tilemap_t *tilemap_roz;
|
||||
|
||||
static void
|
||||
TilemapCB( running_machine &machine, UINT16 code, int *tile, int *mask )
|
||||
{
|
||||
@ -58,7 +49,7 @@ WRITE16_HANDLER( namcos2_gfx_ctrl_w )
|
||||
|
||||
static TILE_GET_INFO( get_tile_info_roz )
|
||||
{
|
||||
int tile = namcos2_68k_roz_ram[tile_index];
|
||||
int tile = machine.driver_data<namcos2_state>()->m_rozram[tile_index];
|
||||
SET_TILE_INFO(3,tile,0/*color*/,0);
|
||||
} /* get_tile_info_roz */
|
||||
|
||||
@ -244,24 +235,23 @@ DrawRozHelper(
|
||||
}
|
||||
} /* DrawRozHelper */
|
||||
|
||||
static void
|
||||
DrawROZ(bitmap_ind16 &bitmap,const rectangle &cliprect)
|
||||
void namcos2_state::draw_roz(bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||
{
|
||||
const int xoffset = 38,yoffset = 0;
|
||||
struct RozParam rozParam;
|
||||
|
||||
rozParam.color = (namcos2_gfx_ctrl & 0x0f00);
|
||||
rozParam.incxx = (INT16)namcos2_68k_roz_ctrl[0];
|
||||
rozParam.incxy = (INT16)namcos2_68k_roz_ctrl[1];
|
||||
rozParam.incyx = (INT16)namcos2_68k_roz_ctrl[2];
|
||||
rozParam.incyy = (INT16)namcos2_68k_roz_ctrl[3];
|
||||
rozParam.startx = (INT16)namcos2_68k_roz_ctrl[4];
|
||||
rozParam.starty = (INT16)namcos2_68k_roz_ctrl[5];
|
||||
rozParam.incxx = (INT16)m_roz_ctrl[0];
|
||||
rozParam.incxy = (INT16)m_roz_ctrl[1];
|
||||
rozParam.incyx = (INT16)m_roz_ctrl[2];
|
||||
rozParam.incyy = (INT16)m_roz_ctrl[3];
|
||||
rozParam.startx = (INT16)m_roz_ctrl[4];
|
||||
rozParam.starty = (INT16)m_roz_ctrl[5];
|
||||
rozParam.size = 2048;
|
||||
rozParam.wrap = 1;
|
||||
|
||||
|
||||
switch( namcos2_68k_roz_ctrl[7] )
|
||||
switch( m_roz_ctrl[7] )
|
||||
{
|
||||
case 0x4400: /* (2048x2048) */
|
||||
break;
|
||||
@ -292,28 +282,28 @@ DrawROZ(bitmap_ind16 &bitmap,const rectangle &cliprect)
|
||||
rozParam.incyx<<=8;
|
||||
rozParam.incyy<<=8;
|
||||
|
||||
DrawRozHelper( bitmap, tilemap_roz, cliprect, &rozParam );
|
||||
DrawRozHelper( bitmap, m_tilemap_roz, cliprect, &rozParam );
|
||||
}
|
||||
|
||||
READ16_HANDLER(namcos2_68k_roz_ctrl_r)
|
||||
READ16_MEMBER(namcos2_state::roz_ctrl_word_r)
|
||||
{
|
||||
return namcos2_68k_roz_ctrl[offset];
|
||||
return m_roz_ctrl[offset];
|
||||
}
|
||||
|
||||
WRITE16_HANDLER( namcos2_68k_roz_ctrl_w )
|
||||
WRITE16_MEMBER( namcos2_state::roz_ctrl_word_w )
|
||||
{
|
||||
COMBINE_DATA(&namcos2_68k_roz_ctrl[offset]);
|
||||
COMBINE_DATA(&m_roz_ctrl[offset]);
|
||||
}
|
||||
|
||||
READ16_HANDLER( namcos2_68k_roz_ram_r )
|
||||
READ16_MEMBER( namcos2_state::rozram_word_r )
|
||||
{
|
||||
return namcos2_68k_roz_ram[offset];
|
||||
return m_rozram[offset];
|
||||
}
|
||||
|
||||
WRITE16_HANDLER( namcos2_68k_roz_ram_w )
|
||||
WRITE16_MEMBER( namcos2_state::rozram_word_w )
|
||||
{
|
||||
COMBINE_DATA(&namcos2_68k_roz_ram[offset]);
|
||||
tilemap_roz->mark_tile_dirty(offset);
|
||||
COMBINE_DATA(&m_rozram[offset]);
|
||||
m_tilemap_roz->mark_tile_dirty(offset);
|
||||
// if( space->machine().input().code_pressed(KEYCODE_Q) )
|
||||
// {
|
||||
// debugger_break(space->machine());
|
||||
@ -322,14 +312,13 @@ WRITE16_HANDLER( namcos2_68k_roz_ram_w )
|
||||
|
||||
/**************************************************************************/
|
||||
|
||||
static UINT16
|
||||
GetPaletteRegister( int which )
|
||||
inline UINT16 namcos2_state::get_palette_register( int which )
|
||||
{
|
||||
const UINT16 *source = &namcos2_68k_palette_ram[0x3000/2];
|
||||
const UINT16 *source = &m_paletteram[0x3000/2];
|
||||
return ((source[which*2]&0xff)<<8) | (source[which*2+1]&0xff);
|
||||
}
|
||||
|
||||
READ16_HANDLER( namcos2_68k_video_palette_r )
|
||||
READ16_MEMBER( namcos2_state::paletteram_word_r )
|
||||
{
|
||||
if( (offset&0x1800) == 0x1800 )
|
||||
{
|
||||
@ -339,10 +328,10 @@ READ16_HANDLER( namcos2_68k_video_palette_r )
|
||||
/* registers 6,7: unmapped? */
|
||||
if (offset > 0x180b) return 0xff;
|
||||
}
|
||||
return namcos2_68k_palette_ram[offset];
|
||||
return m_paletteram[offset];
|
||||
} /* namcos2_68k_video_palette_r */
|
||||
|
||||
WRITE16_HANDLER( namcos2_68k_video_palette_w )
|
||||
WRITE16_MEMBER( namcos2_state::paletteram_word_w )
|
||||
{
|
||||
if( (offset&0x1800) == 0x1800 )
|
||||
{
|
||||
@ -366,14 +355,14 @@ WRITE16_HANDLER( namcos2_68k_video_palette_w )
|
||||
luckywld: $00E8 at titlescreen, $00A0 in game and $0118 if in tunnel
|
||||
suzuka8h1/2: $00E8 and $00A0 */
|
||||
case 0x1808: case 0x1809:
|
||||
// if (data^namcos2_68k_palette_ram[offset]) printf("%04X\n",data<<((~offset&1)<<3)|namcos2_68k_palette_ram[offset^1]<<((offset&1)<<3));
|
||||
// if (data^m_paletteram[offset]) printf("%04X\n",data<<((~offset&1)<<3)|m_paletteram[offset^1]<<((offset&1)<<3));
|
||||
break;
|
||||
|
||||
/* register 5: POSIRQ scanline (only 8 bits used) */
|
||||
/*case 0x180a:*/ case 0x180b:
|
||||
if (data^namcos2_68k_palette_ram[offset]) {
|
||||
namcos2_68k_palette_ram[offset] = data;
|
||||
namcos2_adjust_posirq_timer(space->machine(),namcos2_GetPosIrqScanline(space->machine()));
|
||||
if (data^m_paletteram[offset]) {
|
||||
m_paletteram[offset] = data;
|
||||
namcos2_adjust_posirq_timer(machine(),namcos2_GetPosIrqScanline(machine()));
|
||||
}
|
||||
break;
|
||||
|
||||
@ -381,11 +370,11 @@ WRITE16_HANDLER( namcos2_68k_video_palette_w )
|
||||
default: break;
|
||||
}
|
||||
|
||||
namcos2_68k_palette_ram[offset] = data;
|
||||
m_paletteram[offset] = data;
|
||||
}
|
||||
else
|
||||
{
|
||||
COMBINE_DATA(&namcos2_68k_palette_ram[offset]);
|
||||
COMBINE_DATA(&m_paletteram[offset]);
|
||||
}
|
||||
} /* namcos2_68k_video_palette_w */
|
||||
|
||||
@ -393,11 +382,11 @@ WRITE16_HANDLER( namcos2_68k_video_palette_w )
|
||||
int
|
||||
namcos2_GetPosIrqScanline( running_machine &machine )
|
||||
{
|
||||
return (GetPaletteRegister(5) - 32) & 0xff;
|
||||
return (machine.driver_data<namcos2_state>()->get_palette_register(5) - 32) & 0xff;
|
||||
} /* namcos2_GetPosIrqScanline */
|
||||
|
||||
static void
|
||||
UpdatePalette( running_machine &machine )
|
||||
inline void
|
||||
namcos2_state::update_palette()
|
||||
{
|
||||
int bank;
|
||||
for( bank=0; bank<0x20; bank++ )
|
||||
@ -407,14 +396,14 @@ UpdatePalette( running_machine &machine )
|
||||
int i;
|
||||
for( i=0; i<256; i++ )
|
||||
{
|
||||
int r = namcos2_68k_palette_ram[offset | 0x0000] & 0x00ff;
|
||||
int g = namcos2_68k_palette_ram[offset | 0x0800] & 0x00ff;
|
||||
int b = namcos2_68k_palette_ram[offset | 0x1000] & 0x00ff;
|
||||
palette_set_color(machine,pen++,MAKE_RGB(r,g,b));
|
||||
int r = m_paletteram[offset | 0x0000] & 0x00ff;
|
||||
int g = m_paletteram[offset | 0x0800] & 0x00ff;
|
||||
int b = m_paletteram[offset | 0x1000] & 0x00ff;
|
||||
palette_set_color(machine(),pen++,MAKE_RGB(r,g,b));
|
||||
offset++;
|
||||
}
|
||||
}
|
||||
} /* UpdatePalette */
|
||||
} /* update_palette */
|
||||
|
||||
/**************************************************************************/
|
||||
|
||||
@ -429,48 +418,47 @@ DrawSpriteInit( running_machine &machine )
|
||||
}
|
||||
}
|
||||
|
||||
WRITE16_HANDLER( namcos2_sprite_ram_w )
|
||||
WRITE16_MEMBER( namcos2_state::spriteram_word_w )
|
||||
{
|
||||
COMBINE_DATA(&namcos2_sprite_ram[offset]);
|
||||
COMBINE_DATA(&m_spriteram[offset]);
|
||||
}
|
||||
|
||||
READ16_HANDLER( namcos2_sprite_ram_r )
|
||||
READ16_MEMBER( namcos2_state::spriteram_word_r )
|
||||
{
|
||||
return namcos2_sprite_ram[offset];
|
||||
return m_spriteram[offset];
|
||||
}
|
||||
|
||||
/**************************************************************************/
|
||||
|
||||
VIDEO_START( namcos2 )
|
||||
void namcos2_state::video_start()
|
||||
{
|
||||
namco_tilemap_init(machine,2,machine.root_device().memregion("gfx4")->base(),TilemapCB);
|
||||
tilemap_roz = tilemap_create(machine, get_tile_info_roz,tilemap_scan_rows,8,8,256,256);
|
||||
tilemap_roz->set_transparent_pen(0xff);
|
||||
DrawSpriteInit(machine);
|
||||
namco_tilemap_init(machine(), 2, memregion("gfx4")->base(), TilemapCB);
|
||||
m_tilemap_roz = tilemap_create(machine(), get_tile_info_roz,tilemap_scan_rows,8,8,256,256);
|
||||
m_tilemap_roz->set_transparent_pen(0xff);
|
||||
DrawSpriteInit(machine());
|
||||
}
|
||||
|
||||
static void
|
||||
ApplyClip( rectangle &clip, const rectangle &cliprect )
|
||||
void namcos2_state::apply_clip( rectangle &clip, const rectangle &cliprect )
|
||||
{
|
||||
clip.min_x = GetPaletteRegister(0) - 0x4a;
|
||||
clip.max_x = GetPaletteRegister(1) - 0x4a - 1;
|
||||
clip.min_y = GetPaletteRegister(2) - 0x21;
|
||||
clip.max_y = GetPaletteRegister(3) - 0x21 - 1;
|
||||
clip.min_x = get_palette_register(0) - 0x4a;
|
||||
clip.max_x = get_palette_register(1) - 0x4a - 1;
|
||||
clip.min_y = get_palette_register(2) - 0x21;
|
||||
clip.max_y = get_palette_register(3) - 0x21 - 1;
|
||||
/* intersect with master clip rectangle */
|
||||
clip &= cliprect;
|
||||
} /* ApplyClip */
|
||||
} /* apply_clip */
|
||||
|
||||
SCREEN_UPDATE_IND16( namcos2_default )
|
||||
UINT32 namcos2_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||
{
|
||||
rectangle clip;
|
||||
int pri;
|
||||
|
||||
UpdatePalette(screen.machine());
|
||||
bitmap.fill(get_black_pen(screen.machine()), cliprect );
|
||||
ApplyClip( clip, cliprect );
|
||||
update_palette();
|
||||
bitmap.fill(get_black_pen(machine()), cliprect );
|
||||
apply_clip( clip, cliprect );
|
||||
|
||||
/* HACK: enable ROZ layer only if it has priority > 0 */
|
||||
tilemap_roz->enable((namcos2_gfx_ctrl & 0x7000) ? 1 : 0);
|
||||
m_tilemap_roz->enable((namcos2_gfx_ctrl & 0x7000) ? 1 : 0);
|
||||
|
||||
for( pri=0; pri<16; pri++ )
|
||||
{
|
||||
@ -480,9 +468,9 @@ SCREEN_UPDATE_IND16( namcos2_default )
|
||||
|
||||
if( ((namcos2_gfx_ctrl & 0x7000) >> 12)==pri/2 )
|
||||
{
|
||||
DrawROZ(bitmap,clip);
|
||||
draw_roz(bitmap,clip);
|
||||
}
|
||||
namcos2_draw_sprites(screen.machine(), bitmap, clip, pri/2, namcos2_gfx_ctrl );
|
||||
draw_sprites(bitmap, clip, pri/2, namcos2_gfx_ctrl );
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
@ -490,21 +478,21 @@ SCREEN_UPDATE_IND16( namcos2_default )
|
||||
|
||||
/**************************************************************************/
|
||||
|
||||
VIDEO_START( finallap )
|
||||
void namcos2_state::video_start_finallap()
|
||||
{
|
||||
namco_tilemap_init(machine,2,machine.root_device().memregion("gfx4")->base(),TilemapCB);
|
||||
DrawSpriteInit(machine);
|
||||
namco_road_init(machine, 3);
|
||||
namco_tilemap_init(machine(),2,memregion("gfx4")->base(),TilemapCB);
|
||||
DrawSpriteInit(machine());
|
||||
namco_road_init(machine(), 3);
|
||||
}
|
||||
|
||||
SCREEN_UPDATE_IND16( finallap )
|
||||
UINT32 namcos2_state::screen_update_finallap(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||
{
|
||||
rectangle clip;
|
||||
int pri;
|
||||
|
||||
UpdatePalette(screen.machine());
|
||||
bitmap.fill(get_black_pen(screen.machine()), cliprect );
|
||||
ApplyClip( clip, cliprect );
|
||||
update_palette();
|
||||
bitmap.fill(get_black_pen(machine()), cliprect );
|
||||
apply_clip( clip, cliprect );
|
||||
|
||||
for( pri=0; pri<16; pri++ )
|
||||
{
|
||||
@ -512,36 +500,36 @@ SCREEN_UPDATE_IND16( finallap )
|
||||
{
|
||||
namco_tilemap_draw( bitmap, clip, pri/2 );
|
||||
}
|
||||
namco_road_draw(screen.machine(), bitmap,clip,pri );
|
||||
namcos2_draw_sprites(screen.machine(), bitmap,clip,pri,namcos2_gfx_ctrl );
|
||||
namco_road_draw(machine(), bitmap,clip,pri );
|
||||
draw_sprites(bitmap,clip,pri,namcos2_gfx_ctrl );
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**************************************************************************/
|
||||
|
||||
VIDEO_START( luckywld )
|
||||
void namcos2_state::video_start_luckywld()
|
||||
{
|
||||
namco_tilemap_init(machine,2,machine.root_device().memregion("gfx4")->base(),TilemapCB);
|
||||
namco_obj_init( machine, 0, 0x0, NULL );
|
||||
namco_tilemap_init(machine(),2,memregion("gfx4")->base(),TilemapCB);
|
||||
namco_obj_init( machine(), 0, 0x0, NULL );
|
||||
if( namcos2_gametype==NAMCOS2_LUCKY_AND_WILD )
|
||||
{
|
||||
namco_roz_init( machine, 1, "gfx5" );
|
||||
namco_roz_init( machine(), 1, "gfx5" );
|
||||
}
|
||||
if( namcos2_gametype!=NAMCOS2_STEEL_GUNNER_2 )
|
||||
{
|
||||
namco_road_init(machine, 3);
|
||||
namco_road_init(machine(), 3);
|
||||
}
|
||||
} /* luckywld */
|
||||
|
||||
SCREEN_UPDATE_IND16( luckywld )
|
||||
UINT32 namcos2_state::screen_update_luckywld(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||
{
|
||||
rectangle clip;
|
||||
int pri;
|
||||
|
||||
UpdatePalette(screen.machine());
|
||||
bitmap.fill(get_black_pen(screen.machine()), cliprect );
|
||||
ApplyClip( clip, cliprect );
|
||||
update_palette();
|
||||
bitmap.fill(get_black_pen(machine()), cliprect );
|
||||
apply_clip( clip, cliprect );
|
||||
|
||||
for( pri=0; pri<16; pri++ )
|
||||
{
|
||||
@ -549,37 +537,37 @@ SCREEN_UPDATE_IND16( luckywld )
|
||||
{
|
||||
namco_tilemap_draw( bitmap, clip, pri/2 );
|
||||
}
|
||||
namco_road_draw(screen.machine(), bitmap,clip,pri );
|
||||
namco_road_draw(machine(), bitmap,clip,pri );
|
||||
if( namcos2_gametype==NAMCOS2_LUCKY_AND_WILD )
|
||||
{
|
||||
namco_roz_draw( bitmap, clip, pri );
|
||||
}
|
||||
namco_obj_draw(screen.machine(), bitmap, clip, pri );
|
||||
namco_obj_draw(machine(), bitmap, clip, pri );
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**************************************************************************/
|
||||
|
||||
VIDEO_START( sgunner )
|
||||
void namcos2_state::video_start_sgunner()
|
||||
{
|
||||
namco_tilemap_init(machine,2,machine.root_device().memregion("gfx4")->base(),TilemapCB);
|
||||
namco_obj_init( machine, 0, 0x0, NULL );
|
||||
namco_tilemap_init(machine(),2,memregion("gfx4")->base(),TilemapCB);
|
||||
namco_obj_init( machine(), 0, 0x0, NULL );
|
||||
}
|
||||
|
||||
SCREEN_UPDATE_IND16( sgunner )
|
||||
UINT32 namcos2_state::screen_update_sgunner(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||
{
|
||||
rectangle clip;
|
||||
int pri;
|
||||
|
||||
UpdatePalette(screen.machine());
|
||||
bitmap.fill(get_black_pen(screen.machine()), cliprect );
|
||||
ApplyClip( clip, cliprect );
|
||||
update_palette();
|
||||
bitmap.fill(get_black_pen(machine()), cliprect );
|
||||
apply_clip( clip, cliprect );
|
||||
|
||||
for( pri=0; pri<8; pri++ )
|
||||
{
|
||||
namco_tilemap_draw( bitmap, clip, pri );
|
||||
namco_obj_draw(screen.machine(), bitmap, clip, pri );
|
||||
namco_obj_draw(machine(), bitmap, clip, pri );
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
@ -587,20 +575,20 @@ SCREEN_UPDATE_IND16( sgunner )
|
||||
|
||||
/**************************************************************************/
|
||||
|
||||
VIDEO_START( metlhawk )
|
||||
void namcos2_state::video_start_metlhawk()
|
||||
{
|
||||
namco_tilemap_init(machine,2,machine.root_device().memregion("gfx4")->base(),TilemapCB);
|
||||
namco_roz_init( machine, 1, "gfx5" );
|
||||
namco_tilemap_init(machine(),2,memregion("gfx4")->base(),TilemapCB);
|
||||
namco_roz_init( machine(), 1, "gfx5" );
|
||||
}
|
||||
|
||||
SCREEN_UPDATE_IND16( metlhawk )
|
||||
UINT32 namcos2_state::screen_update_metlhawk(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||
{
|
||||
rectangle clip;
|
||||
int pri;
|
||||
|
||||
UpdatePalette(screen.machine());
|
||||
bitmap.fill(get_black_pen(screen.machine()), cliprect );
|
||||
ApplyClip( clip, cliprect );
|
||||
update_palette();
|
||||
bitmap.fill(get_black_pen(machine()), cliprect );
|
||||
apply_clip( clip, cliprect );
|
||||
|
||||
for( pri=0; pri<16; pri++ )
|
||||
{
|
||||
@ -609,7 +597,7 @@ SCREEN_UPDATE_IND16( metlhawk )
|
||||
namco_tilemap_draw( bitmap, clip, pri/2 );
|
||||
}
|
||||
namco_roz_draw( bitmap, clip, pri );
|
||||
namcos2_draw_sprites_metalhawk(screen.machine(), bitmap,clip,pri );
|
||||
draw_sprites_metalhawk(bitmap,clip,pri );
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user