From 8fef949f1ee759abc9c489f6d4bfdcd88c3c26bb Mon Sep 17 00:00:00 2001 From: Ville Linde Date: Thu, 24 Jun 2021 19:06:21 +0300 Subject: [PATCH] fix Solar Assault title screen --- src/mame/drivers/gticlub.cpp | 5 ++++- src/mame/machine/konppc.cpp | 13 +++++++++++++ src/mame/machine/konppc.h | 3 +++ 3 files changed, 20 insertions(+), 1 deletion(-) diff --git a/src/mame/drivers/gticlub.cpp b/src/mame/drivers/gticlub.cpp index 83bc7908d0a..3747b7084d4 100644 --- a/src/mame/drivers/gticlub.cpp +++ b/src/mame/drivers/gticlub.cpp @@ -764,7 +764,10 @@ uint32_t gticlub_state::screen_update_gticlub(screen_device &screen, bitmap_rgb3 { m_k001604[0]->draw_back_layer(screen, bitmap, cliprect); - m_k001005->draw(bitmap, cliprect); + if (m_konppc[0].output_3d_enabled()) + { + m_k001005->draw(bitmap, cliprect); + } m_k001604[0]->draw_front_layer(screen, bitmap, cliprect); diff --git a/src/mame/machine/konppc.cpp b/src/mame/machine/konppc.cpp index 49454224c98..ed76db1fed6 100644 --- a/src/mame/machine/konppc.cpp +++ b/src/mame/machine/konppc.cpp @@ -106,6 +106,14 @@ void konppc_device::set_cgboard_texture_bank(int board, const char *bank, uint8_ machine().root_device().membank(bank)->configure_entries(0, 2, rom, 0x800000); } +bool konppc_device::output_3d_enabled() +{ + if (cgboard_id < MAX_CG_BOARDS) + return enable_3d[cgboard_id]; + else + return false; +} + /*****************************************************************************/ /* CG Board DSP interface for PowerPC */ @@ -155,6 +163,11 @@ void konppc_device::cgboard_dsp_comm_w_ppc(offs_t offset, uint32_t data, uint32_ dsp.set_input_line(INPUT_LINE_IRQ1, ASSERT_LINE); } + if (ACCESSING_BITS_16_23) + { + enable_3d[cgboard_id] = (data & 0x400000) ? true : false; + } + if (ACCESSING_BITS_0_7) dsp_comm_ppc[cgboard_id][offset] = data & 0xff; } diff --git a/src/mame/machine/konppc.h b/src/mame/machine/konppc.h index f905057c503..c397a02bbd1 100644 --- a/src/mame/machine/konppc.h +++ b/src/mame/machine/konppc.h @@ -30,6 +30,7 @@ public: int get_cgboard_id(void); void set_cgboard_texture_bank(int board, const char *bank, uint8_t *rom); + bool output_3d_enabled(); // read/write uint32_t cgboard_dsp_comm_r_ppc(offs_t offset, uint32_t mem_mask = ~0); @@ -94,6 +95,8 @@ private: int nwk_fifo_full; int nwk_fifo_mask; + bool enable_3d[MAX_CG_BOARDS]; + std::unique_ptr nwk_fifo[MAX_CG_BOARDS]; int32_t nwk_fifo_read_ptr[MAX_CG_BOARDS]; int32_t nwk_fifo_write_ptr[MAX_CG_BOARDS];