summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/tmmjprd.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/tmmjprd.cpp')
-rw-r--r--src/mame/drivers/tmmjprd.cpp28
1 files changed, 23 insertions, 5 deletions
diff --git a/src/mame/drivers/tmmjprd.cpp b/src/mame/drivers/tmmjprd.cpp
index a6082bd3b3b..1bac8968242 100644
--- a/src/mame/drivers/tmmjprd.cpp
+++ b/src/mame/drivers/tmmjprd.cpp
@@ -37,6 +37,8 @@
#include "speaker.h"
+#define EMULATE_BLITTER 0 // FIXME: code is incomplete
+
class tmmjprd_state : public driver_device
{
public:
@@ -48,6 +50,9 @@ public:
m_palette(*this, "palette"),
m_tilemap_regs(*this, "tilemap_regs.%u", 0),
m_spriteregs(*this, "spriteregs"),
+#if EMULATE_BLITTER
+ m_blitterregs(*this, "blitterregs"),
+#endif
m_spriteram(*this, "spriteram"),
m_gfxroms(*this, "gfx2"),
m_pl1(*this, "PL1.%u", 1),
@@ -69,6 +74,9 @@ private:
required_shared_ptr_array<uint32_t, 4> m_tilemap_regs;
required_shared_ptr<uint32_t> m_spriteregs;
+#if EMULATE_BLITTER
+ required_shared_ptr<uint32_t> m_blitterregs;
+#endif
required_shared_ptr<uint32_t> m_spriteram;
required_region_ptr<uint8_t> m_gfxroms;
@@ -81,7 +89,10 @@ private:
uint8_t m_mux_data;
uint8_t m_system_in;
double m_old_brt[2];
+#if EMULATE_BLITTER
+ tilemap_t *m_tilemap[4];
emu_timer *m_blit_done_timer;
+#endif
template<uint8_t Tilemap> DECLARE_WRITE32_MEMBER(tilemap_w);
template<uint8_t Tilemap> DECLARE_READ32_MEMBER(tilemap_r);
@@ -90,12 +101,17 @@ private:
template<uint8_t Number> DECLARE_WRITE32_MEMBER(brt_w);
DECLARE_WRITE32_MEMBER(eeprom_write);
+#if EMULATE_BLITTER
+ DECLARE_WRITE32_MEMBER(blitter_w);
+ void do_blit();
+#endif
+
uint32_t screen_update_left(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
uint32_t screen_update_right(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
TIMER_DEVICE_CALLBACK_MEMBER(scanline);
-#if 0
+#if EMULATE_BLITTER
TIMER_CALLBACK_MEMBER(blit_done);
#endif
@@ -379,7 +395,7 @@ READ32_MEMBER(tmmjprd_state::randomtmmjprds)
#define BLITCMDLOG 0
#define BLITLOG 0
-#if 0
+#if EMULATE_BLITTER
TIMER_CALLBACK_MEMBER(tmmjprd_state::blit_done)
{
m_maincpu->set_input_line(3, HOLD_LINE);
@@ -429,7 +445,7 @@ void tmmjprd_state::do_blit()
if (!blt_amount)
{
if(BLITLOG) osd_printf_debug("end of blit list\n");
- m_blit_done_timer->adjust(attotime::from_usec(500);
+ m_blit_done_timer->adjust(attotime::from_usec(500));
return;
}
@@ -493,7 +509,7 @@ WRITE32_MEMBER(tmmjprd_state::blitter_w)
void tmmjprd_state::machine_start()
{
-#if 0
+#if EMULATE_BLITTER
m_blit_done_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(tmmjprd_state::blit_done), this));
#endif
@@ -659,7 +675,9 @@ void tmmjprd_state::main_map(address_map &map)
map(0x20040c, 0x20040f).w(FUNC(tmmjprd_state::brt_w<0>));
map(0x200410, 0x200413).w(FUNC(tmmjprd_state::brt_w<1>));
// AM_RANGE(0x200500, 0x200503) AM_WRITEONLY AM_SHARE("viewregs7")
-// AM_RANGE(0x200700, 0x20070f) AM_WRITE(blitter_w) AM_SHARE("blitterregs")
+#if EMULATE_BLITTER
+ map(0x200700, 0x20070f).w(FUNC(tmmjprd_state::blitter_w)).share(m_blitterregs);
+#endif
// AM_RANGE(0x200800, 0x20080f) AM_WRITEONLY AM_SHARE("viewregs9") // never changes?
map(0x200900, 0x2009ff).rw("i5000snd", FUNC(i5000snd_device::read), FUNC(i5000snd_device::write));
/* hmm */