summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/video
diff options
context:
space:
mode:
author Vas Crabb <vas@vastheman.com>2019-10-26 13:11:28 +1100
committer Vas Crabb <vas@vastheman.com>2019-10-26 13:11:28 +1100
commitc8ba66d4afd0dd9cde0affa9b86bb06fd152e265 (patch)
tree206ce1deaa29edc2da6a52daf21a90dc748d6c68 /src/mame/video
parent02e64d711267204713021b519b793705b135791f (diff)
(nw) initialisation order matters (fix many Konami crashes)
Diffstat (limited to 'src/mame/video')
-rw-r--r--src/mame/video/k051316.cpp6
-rw-r--r--src/mame/video/k051960.cpp6
-rw-r--r--src/mame/video/k052109.cpp15
-rw-r--r--src/mame/video/k053244_k053245.cpp6
-rw-r--r--src/mame/video/k054156_k054157_k056832.cpp6
5 files changed, 19 insertions, 20 deletions
diff --git a/src/mame/video/k051316.cpp b/src/mame/video/k051316.cpp
index cd64d89ac64..411a7c26c3a 100644
--- a/src/mame/video/k051316.cpp
+++ b/src/mame/video/k051316.cpp
@@ -153,6 +153,9 @@ void k051316_device::device_start()
if (!palette().device().started())
throw device_missing_dependencies();
+ // bind callbacks
+ m_k051316_cb.resolve();
+
decode_gfx();
gfx(0)->set_colors(palette().entries() / gfx(0)->depth());
@@ -168,9 +171,6 @@ void k051316_device::device_start()
else
m_tmap->set_transparent_pen(0);
- // bind callbacks
- m_k051316_cb.resolve();
-
save_item(NAME(m_ram));
save_item(NAME(m_ctrlram));
save_item(NAME(m_wrap));
diff --git a/src/mame/video/k051960.cpp b/src/mame/video/k051960.cpp
index 580801717c7..2657331e441 100644
--- a/src/mame/video/k051960.cpp
+++ b/src/mame/video/k051960.cpp
@@ -181,6 +181,9 @@ void k051960_device::device_start()
if (!palette().device().started())
throw device_missing_dependencies();
+ // bind callbacks
+ m_k051960_cb.resolve();
+
// allocate scanline timer and start at first scanline
m_scanline_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(k051960_device::scanline_callback), this));
m_scanline_timer->adjust(screen().time_until_pos(0));
@@ -193,9 +196,6 @@ void k051960_device::device_start()
m_ram = make_unique_clear<uint8_t[]>(0x400);
- // bind callbacks
- m_k051960_cb.resolve();
-
// resolve callbacks
m_irq_handler.resolve_safe();
m_firq_handler.resolve_safe();
diff --git a/src/mame/video/k052109.cpp b/src/mame/video/k052109.cpp
index 3ebcbb6fa6d..6d5d66af66e 100644
--- a/src/mame/video/k052109.cpp
+++ b/src/mame/video/k052109.cpp
@@ -216,6 +216,13 @@ void k052109_device::device_start()
screen().register_vblank_callback(vblank_state_delegate(&k052109_device::vblank_callback, this));
}
+ // resolve callbacks
+ m_k052109_cb.resolve();
+
+ m_irq_handler.resolve_safe();
+ m_firq_handler.resolve_safe();
+ m_nmi_handler.resolve_safe();
+
decode_gfx();
gfx(0)->set_colors(palette().entries() / gfx(0)->depth());
@@ -239,14 +246,6 @@ void k052109_device::device_start()
m_tilemap[1]->set_transparent_pen(0);
m_tilemap[2]->set_transparent_pen(0);
- // bind callbacks
- m_k052109_cb.resolve();
-
- // resolve callbacks
- m_irq_handler.resolve_safe();
- m_firq_handler.resolve_safe();
- m_nmi_handler.resolve_safe();
-
save_pointer(NAME(m_ram), 0x6000);
save_item(NAME(m_rmrd_line));
save_item(NAME(m_romsubbank));
diff --git a/src/mame/video/k053244_k053245.cpp b/src/mame/video/k053244_k053245.cpp
index a98b464bdce..c5b3ef0a272 100644
--- a/src/mame/video/k053244_k053245.cpp
+++ b/src/mame/video/k053244_k053245.cpp
@@ -122,6 +122,9 @@ void k05324x_device::device_start()
if (!palette().device().started())
throw device_missing_dependencies();
+ // bind callbacks
+ m_k05324x_cb.resolve();
+
/* decode the graphics */
decode_gfx();
gfx(0)->set_colors(palette().entries() / gfx(0)->depth());
@@ -135,9 +138,6 @@ void k05324x_device::device_start()
m_ram = make_unique_clear<uint16_t[]>(m_ramsize / 2);
m_buffer = make_unique_clear<uint16_t[]>(m_ramsize / 2);
- // bind callbacks
- m_k05324x_cb.resolve();
-
save_pointer(NAME(m_ram), m_ramsize / 2);
save_pointer(NAME(m_buffer), m_ramsize / 2);
save_item(NAME(m_rombank));
diff --git a/src/mame/video/k054156_k054157_k056832.cpp b/src/mame/video/k054156_k054157_k056832.cpp
index 36583aa09f7..953e44e35fe 100644
--- a/src/mame/video/k054156_k054157_k056832.cpp
+++ b/src/mame/video/k054156_k054157_k056832.cpp
@@ -336,6 +336,9 @@ void k056832_device::device_start()
if (!palette().device().started())
throw device_missing_dependencies();
+ // bind callbacks
+ m_k056832_cb.resolve();
+
memset(m_regs, 0x00, sizeof(m_regs) );
memset(m_regsb, 0x00, sizeof(m_regsb) );
@@ -347,9 +350,6 @@ void k056832_device::device_start()
create_tilemaps();
finalize_init();
-
- // bind callbacks
- m_k056832_cb.resolve();
}
/*****************************************************************************