mirror of
https://github.com/holub/mame
synced 2025-05-21 05:08:54 +03:00
Fix regressions in games with buffered spriteram.
This commit is contained in:
parent
1d37415a4a
commit
aecc1c8512
@ -276,7 +276,6 @@ void running_machine::start()
|
||||
palette_init(this);
|
||||
m_render = auto_alloc(this, render_manager(*this));
|
||||
generic_machine_init(this);
|
||||
generic_video_init(this);
|
||||
generic_sound_init(this);
|
||||
|
||||
// initialize the timers and allocate a soft_reset timer
|
||||
@ -313,6 +312,9 @@ void running_machine::start()
|
||||
memory_init(this);
|
||||
watchdog_init(this);
|
||||
|
||||
// must happen after memory_init because this relies on generic.spriteram
|
||||
generic_video_init(this);
|
||||
|
||||
// allocate the gfx elements prior to device initialization
|
||||
gfx_init(this);
|
||||
|
||||
|
@ -141,10 +141,6 @@ video_manager::video_manager(running_machine &machine)
|
||||
// extract initial execution state from global configuration settings
|
||||
update_refresh_speed();
|
||||
|
||||
// create spriteram buffers if necessary
|
||||
if (machine.config->m_video_attributes & VIDEO_BUFFERS_SPRITERAM)
|
||||
init_buffered_spriteram();
|
||||
|
||||
// create a render target for snapshots
|
||||
const char *viewname = options_get_string(machine.options(), OPTION_SNAPVIEW);
|
||||
m_snap_native = (machine.primary_screen != NULL && (viewname[0] == 0 || strcmp(viewname, "native") == 0));
|
||||
@ -527,33 +523,6 @@ void video_manager::add_sound_to_recording(const INT16 *sound, int numsamples)
|
||||
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// init_buffered_spriteram - initialize the
|
||||
// double-buffered spriteram
|
||||
//-------------------------------------------------
|
||||
|
||||
void video_manager::init_buffered_spriteram()
|
||||
{
|
||||
assert_always(m_machine.generic.spriteram_size != 0, "Video buffers spriteram but spriteram size is 0");
|
||||
|
||||
// allocate memory for the back buffer
|
||||
m_machine.generic.buffered_spriteram.u8 = auto_alloc_array(&m_machine, UINT8, m_machine.generic.spriteram_size);
|
||||
|
||||
// register for saving it
|
||||
state_save_register_global_pointer(&m_machine, m_machine.generic.buffered_spriteram.u8, m_machine.generic.spriteram_size);
|
||||
|
||||
// do the same for the second back buffer, if present
|
||||
if (m_machine.generic.spriteram2_size)
|
||||
{
|
||||
// allocate memory
|
||||
m_machine.generic.buffered_spriteram2.u8 = auto_alloc_array(&m_machine, UINT8, m_machine.generic.spriteram2_size);
|
||||
|
||||
// register for saving it
|
||||
state_save_register_global_pointer(&m_machine, m_machine.generic.buffered_spriteram2.u8, m_machine.generic.spriteram2_size);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// video_exit - close down the video system
|
||||
//-------------------------------------------------
|
||||
|
@ -117,7 +117,6 @@ public:
|
||||
|
||||
private:
|
||||
// internal helpers
|
||||
void init_buffered_spriteram();
|
||||
static void exit_static(running_machine &machine);
|
||||
void exit();
|
||||
static TIMER_CALLBACK( screenless_update_callback );
|
||||
|
@ -235,6 +235,28 @@ void generic_video_init(running_machine *machine)
|
||||
|
||||
state_save_register_item(machine, "video", NULL, 0, state->flip_screen_x);
|
||||
state_save_register_item(machine, "video", NULL, 0, state->flip_screen_y);
|
||||
|
||||
// create spriteram buffers if necessary
|
||||
if (machine->config->m_video_attributes & VIDEO_BUFFERS_SPRITERAM)
|
||||
{
|
||||
assert_always(machine->generic.spriteram_size != 0, "Video buffers spriteram but spriteram size is 0");
|
||||
|
||||
// allocate memory for the back buffer
|
||||
machine->generic.buffered_spriteram.u8 = auto_alloc_array(machine, UINT8, machine->generic.spriteram_size);
|
||||
|
||||
// register for saving it
|
||||
state_save_register_global_pointer(machine, machine->generic.buffered_spriteram.u8, machine->generic.spriteram_size);
|
||||
|
||||
// do the same for the second back buffer, if present
|
||||
if (machine->generic.spriteram2_size)
|
||||
{
|
||||
// allocate memory
|
||||
machine->generic.buffered_spriteram2.u8 = auto_alloc_array(machine, UINT8, machine->generic.spriteram2_size);
|
||||
|
||||
// register for saving it
|
||||
state_save_register_global_pointer(machine, machine->generic.buffered_spriteram2.u8, machine->generic.spriteram2_size);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user