summaryrefslogtreecommitdiffstatshomepage
path: root/src
diff options
context:
space:
mode:
author angelosa <lordkale4@gmail.com>2026-05-17 16:20:17 +0200
committer angelosa <lordkale4@gmail.com>2026-05-17 16:20:24 +0200
commit9e72b9e6aff6aa57b11a79a20d82f7ea8b392ed3 (patch)
treecf9bbcdcea997024746462a7bc15b6cd55c8a601 /src
parent666d78796bc97dbf189dba509c8dd3cccf76a5ae (diff)
taito/lsasquad.cpp: add debug tilemap viewer
Diffstat (limited to 'src')
-rw-r--r--src/mame/taito/lsasquad.cpp32
1 files changed, 29 insertions, 3 deletions
diff --git a/src/mame/taito/lsasquad.cpp b/src/mame/taito/lsasquad.cpp
index 7f3f1cce4c1..1d710270752 100644
--- a/src/mame/taito/lsasquad.cpp
+++ b/src/mame/taito/lsasquad.cpp
@@ -158,6 +158,7 @@ Notes:
#include "emupal.h"
#include "screen.h"
#include "speaker.h"
+#include "tilemap.h"
//#define VERBOSE 1
#include "logmacro.h"
@@ -192,6 +193,7 @@ public:
protected:
virtual void machine_start() override ATTR_COLD;
+ virtual void video_start() override ATTR_COLD;
virtual uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
@@ -221,6 +223,10 @@ protected:
optional_ioport m_bmcu_port;
+ tilemap_t *m_tilemap = nullptr;
+ TILE_GET_INFO_MEMBER(get_tile_info);
+ void vram_w(offs_t offset, uint8_t data);
+
private:
uint8_t lsasquad_sound_status_r();
@@ -257,6 +263,26 @@ private:
uint8_t daikaiju_mcu_status_r();
};
+void lsasquad_state::vram_w(offs_t offset, uint8_t data)
+{
+ m_videoram[offset] = data;
+ m_tilemap->mark_tile_dirty(offset >> 1);
+}
+
+TILE_GET_INFO_MEMBER(lsasquad_state::get_tile_info)
+{
+ int attr = m_videoram[(tile_index * 2 + 1) & 0x1fff];
+ int code = m_videoram[(tile_index * 2) & 0x1fff] + ((attr & 0x0f) << 8);
+ u8 color = attr >> 4;
+
+ tileinfo.set(0, code, color, 0);
+}
+
+void lsasquad_state::video_start()
+{
+ m_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(lsasquad_state::get_tile_info)), TILEMAP_SCAN_COLS, 8, 8, 128, 32);
+}
+
/***************************************************************************
lsasquad video
@@ -567,7 +593,7 @@ void lsasquad_state::lsasquad_map(address_map &map)
map(0x0000, 0x7fff).rom();
map(0x8000, 0x9fff).bankr(m_mainbank);
map(0xa000, 0xbfff).ram(); // SRAM
- map(0xc000, 0xdfff).ram().share(m_videoram); // SCREEN RAM
+ map(0xc000, 0xdfff).ram().w(FUNC(lsasquad_state::vram_w)).share(m_videoram); // SCREEN RAM
map(0xe000, 0xe3ff).ram().share(m_scrollram); // SCROLL RAM
map(0xe400, 0xe5ff).ram().share(m_spriteram); // OBJECT RAM
map(0xe800, 0xe800).portr("DSWA");
@@ -610,7 +636,7 @@ void lsasquad_state::storming_map(address_map &map)
map(0x0000, 0x7fff).rom();
map(0x8000, 0x9fff).bankr(m_mainbank);
map(0xa000, 0xbfff).ram(); // SRAM
- map(0xc000, 0xdfff).ram().share(m_videoram); // SCREEN RAM
+ map(0xc000, 0xdfff).ram().w(FUNC(lsasquad_state::vram_w)).share(m_videoram); // SCREEN RAM
map(0xe000, 0xe3ff).ram().share(m_scrollram); // SCROLL RAM
map(0xe400, 0xe5ff).ram().share(m_spriteram); // OBJECT RAM
map(0xe800, 0xe800).portr("DSWA");
@@ -638,7 +664,7 @@ void daikaiju_state::daikaiju_map(address_map &map)
map(0x0000, 0x7fff).rom();
map(0x8000, 0x9fff).bankr(m_mainbank);
map(0xa000, 0xbfff).ram(); // SRAM
- map(0xc000, 0xdfff).ram().share(m_videoram); // SCREEN RAM
+ map(0xc000, 0xdfff).ram().w(FUNC(daikaiju_state::vram_w)).share(m_videoram); // SCREEN RAM
map(0xe000, 0xe3ff).ram().share(m_scrollram); // SCROLL RAM
map(0xe400, 0xe7ff).ram().share(m_spriteram); // OBJECT RAM
map(0xe800, 0xe800).portr("DSWA");