mirror of
https://github.com/holub/mame
synced 2025-04-23 08:49:55 +03:00
Moved around allocation pointers to own function, and register video pointers/functions to save state (nw)
This commit is contained in:
parent
e298801bb7
commit
5eebcb3fb9
@ -93,6 +93,7 @@ public:
|
||||
void draw_sprites(screen_device &screen, bitmap_ind16 &bitmap,const rectangle &cliprect);
|
||||
void descramble_legionnaire_gfx(UINT8* src);
|
||||
void common_video_start();
|
||||
void common_video_allocate_ptr();
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_device<cpu_device> m_audiocpu;
|
||||
optional_device<seibu_sound_device> m_seibu_sound;
|
||||
|
@ -215,21 +215,36 @@ TILE_GET_INFO_MEMBER(legionna_state::get_text_tile_info)
|
||||
SET_TILE_INFO_MEMBER(0,tile,color,0);
|
||||
}
|
||||
|
||||
void legionna_state::common_video_start()
|
||||
void legionna_state::common_video_allocate_ptr()
|
||||
{
|
||||
m_back_data = make_unique_clear<UINT16[]>(0x800/2);
|
||||
m_fore_data = make_unique_clear<UINT16[]>(0x800/2);
|
||||
m_mid_data = make_unique_clear<UINT16[]>(0x800/2);
|
||||
m_textram = make_unique_clear<UINT16[]>(0x1000/2);
|
||||
|
||||
m_background_layer = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(legionna_state::get_back_tile_info),this),TILEMAP_SCAN_ROWS,16,16,32,32);
|
||||
m_foreground_layer = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(legionna_state::get_fore_tile_info),this),TILEMAP_SCAN_ROWS,16,16,32,32);
|
||||
m_midground_layer = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(legionna_state::get_mid_tile_info),this), TILEMAP_SCAN_ROWS,16,16,32,32);
|
||||
m_text_layer = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(legionna_state::get_text_tile_info),this),TILEMAP_SCAN_ROWS, 8,8,64,32);
|
||||
|
||||
m_scrollram16 = std::make_unique<UINT16[]>(0x60/2);
|
||||
m_sprite_xoffs = 0;
|
||||
m_sprite_yoffs = 0;
|
||||
|
||||
save_pointer(NAME(m_back_data.get()), 0x800/2);
|
||||
save_pointer(NAME(m_fore_data.get()), 0x800/2);
|
||||
save_pointer(NAME(m_mid_data.get()), 0x800/2);
|
||||
save_pointer(NAME(m_textram.get()), 0x1000/2);
|
||||
save_pointer(NAME(m_scrollram16.get()), 0x60/2);
|
||||
|
||||
save_item(NAME(m_back_gfx_bank));
|
||||
save_item(NAME(m_mid_gfx_bank));
|
||||
save_item(NAME(m_fore_gfx_bank));
|
||||
save_item(NAME(m_layer_disable));
|
||||
}
|
||||
|
||||
void legionna_state::common_video_start()
|
||||
{
|
||||
common_video_allocate_ptr();
|
||||
|
||||
m_background_layer = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(legionna_state::get_back_tile_info),this),TILEMAP_SCAN_ROWS,16,16,32,32);
|
||||
m_midground_layer = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(legionna_state::get_mid_tile_info),this), TILEMAP_SCAN_ROWS,16,16,32,32);
|
||||
m_foreground_layer = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(legionna_state::get_fore_tile_info),this),TILEMAP_SCAN_ROWS,16,16,32,32);
|
||||
m_text_layer = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(legionna_state::get_text_tile_info),this),TILEMAP_SCAN_ROWS, 8,8,64,32);
|
||||
|
||||
m_has_extended_banking = 0;
|
||||
m_has_extended_priority = 0;
|
||||
@ -277,20 +292,13 @@ VIDEO_START_MEMBER(legionna_state,godzilla)
|
||||
|
||||
VIDEO_START_MEMBER(legionna_state,denjinmk)
|
||||
{
|
||||
m_back_data = make_unique_clear<UINT16[]>(0x800/2);
|
||||
m_fore_data = make_unique_clear<UINT16[]>(0x800/2);
|
||||
m_mid_data = make_unique_clear<UINT16[]>(0x800/2);
|
||||
m_textram = make_unique_clear<UINT16[]>(0x1000/2);
|
||||
|
||||
common_video_allocate_ptr();
|
||||
|
||||
m_background_layer = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(legionna_state::get_back_tile_info),this),TILEMAP_SCAN_ROWS,16,16,32,32);
|
||||
m_foreground_layer = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(legionna_state::get_fore_tile_info_denji),this),TILEMAP_SCAN_ROWS,16,16,32,32);
|
||||
m_midground_layer = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(legionna_state::get_mid_tile_info_denji),this), TILEMAP_SCAN_ROWS,16,16,32,32);
|
||||
m_foreground_layer = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(legionna_state::get_fore_tile_info_denji),this),TILEMAP_SCAN_ROWS,16,16,32,32);
|
||||
m_text_layer = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(legionna_state::get_text_tile_info),this),TILEMAP_SCAN_ROWS, 8,8,64,32);
|
||||
|
||||
m_scrollram16 = std::make_unique<UINT16[]>(0x60/2);
|
||||
m_sprite_xoffs = 0;
|
||||
m_sprite_yoffs = 0;
|
||||
|
||||
m_has_extended_banking = 1;
|
||||
m_has_extended_priority = 0;
|
||||
|
||||
@ -299,7 +307,7 @@ VIDEO_START_MEMBER(legionna_state,denjinmk)
|
||||
m_sprite_pri_mask[2] = 0xfffe; // door at the end of sewers part in level 1
|
||||
m_sprite_pri_mask[3] = 0x0000; // briefing guy in pre-stage and portraits before a boss fight
|
||||
|
||||
// m_background_layer->set_transparent_pen(15);
|
||||
m_background_layer->set_transparent_pen(15);
|
||||
m_midground_layer->set_transparent_pen(15);
|
||||
m_foreground_layer->set_transparent_pen(15);
|
||||
m_text_layer->set_transparent_pen(7);//?
|
||||
@ -307,20 +315,13 @@ VIDEO_START_MEMBER(legionna_state,denjinmk)
|
||||
|
||||
VIDEO_START_MEMBER(legionna_state,cupsoc)
|
||||
{
|
||||
m_back_data = make_unique_clear<UINT16[]>(0x800/2);
|
||||
m_fore_data = make_unique_clear<UINT16[]>(0x800/2);
|
||||
m_mid_data = make_unique_clear<UINT16[]>(0x800/2);
|
||||
m_textram = make_unique_clear<UINT16[]>(0x1000/2);
|
||||
common_video_allocate_ptr();
|
||||
|
||||
m_background_layer = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(legionna_state::get_back_tile_info),this),TILEMAP_SCAN_ROWS,16,16,32,32);
|
||||
m_foreground_layer = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(legionna_state::get_fore_tile_info),this),TILEMAP_SCAN_ROWS,16,16,32,32);
|
||||
m_midground_layer = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(legionna_state::get_mid_tile_info_cupsoc),this), TILEMAP_SCAN_ROWS,16,16,32,32);
|
||||
m_foreground_layer = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(legionna_state::get_fore_tile_info),this),TILEMAP_SCAN_ROWS,16,16,32,32);
|
||||
m_text_layer = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(legionna_state::get_text_tile_info),this),TILEMAP_SCAN_ROWS, 8,8,64,32);
|
||||
|
||||
m_scrollram16 = std::make_unique<UINT16[]>(0x60/2);
|
||||
m_sprite_xoffs = 0;
|
||||
m_sprite_yoffs = 0;
|
||||
|
||||
m_has_extended_banking = 0;
|
||||
m_has_extended_priority = 1;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user