summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author mamehaze <mamehaze@users.noreply.github.com>2015-03-01 12:52:07 +0000
committer mamehaze <mamehaze@users.noreply.github.com>2015-03-01 12:52:07 +0000
commit331761c113ef2f27cb4dcdde46813a18be3b0a80 (patch)
treed5f1503910e38ed03275884e6d85e8c5ffcbbadb
parent62340a8f3756ce1037ebf47ff498d95eb2993ce5 (diff)
hng64, some code refactor, going to try a few things in a bit (nw)
-rw-r--r--src/mame/drivers/hng64.c16
-rw-r--r--src/mame/includes/hng64.h25
-rw-r--r--src/mame/video/hng64.c234
3 files changed, 87 insertions, 188 deletions
diff --git a/src/mame/drivers/hng64.c b/src/mame/drivers/hng64.c
index 59b7f496011..1d9b9a52c8e 100644
--- a/src/mame/drivers/hng64.c
+++ b/src/mame/drivers/hng64.c
@@ -1173,6 +1173,13 @@ WRITE32_MEMBER(hng64_state::hng64_sprite_clear_odd_w)
<ElSemi> 0xBF800000-0xBF808000 S-RAM
<ElSemi> 0x60000000-0x60001000 Comm dualport ram
*/
+
+WRITE32_MEMBER(hng64_state::hng64_vregs_w)
+{
+// printf("hng64_vregs_w %02x, %08x %08x\n", offset * 4, data, mem_mask);
+ COMBINE_DATA(&m_videoregs[offset]);
+}
+
static ADDRESS_MAP_START( hng_map, AS_PROGRAM, 32, hng64_state )
AM_RANGE(0x00000000, 0x00ffffff) AM_RAM AM_SHARE("mainram")
@@ -1196,7 +1203,7 @@ static ADDRESS_MAP_START( hng_map, AS_PROGRAM, 32, hng64_state )
AM_RANGE(0x2000e400, 0x2000efff) AM_WRITE(hng64_sprite_clear_odd_w)
AM_RANGE(0x20010000, 0x20010013) AM_RAM AM_SHARE("spriteregs")
AM_RANGE(0x20100000, 0x2017ffff) AM_RAM_WRITE(hng64_videoram_w) AM_SHARE("videoram") // Tilemap
- AM_RANGE(0x20190000, 0x20190037) AM_RAM AM_SHARE("videoregs")
+ AM_RANGE(0x20190000, 0x20190037) AM_RAM_WRITE(hng64_vregs_w) AM_SHARE("videoregs")
AM_RANGE(0x20200000, 0x20203fff) AM_RAM_WRITE(hng64_pal_w) AM_SHARE("paletteram")
AM_RANGE(0x20208000, 0x2020805f) AM_READWRITE(tcram_r, tcram_w) AM_SHARE("tcram") // Transition Control
AM_RANGE(0x20300000, 0x203001ff) AM_RAM_WRITE(dl_w) AM_SHARE("dl") // 3d Display List
@@ -1902,6 +1909,13 @@ void hng64_state::machine_start()
m_comm_rom = memregion("user2")->base();
m_comm_ram = auto_alloc_array(machine(),UINT8,0x10000);
+
+
+ for (int i = 0; i < 0x38 / 4; i++)
+ {
+ m_videoregs[i] = 0xdeadbeef;
+ }
+
}
diff --git a/src/mame/includes/hng64.h b/src/mame/includes/hng64.h
index 797fe9b53a9..d4d143ad64d 100644
--- a/src/mame/includes/hng64.h
+++ b/src/mame/includes/hng64.h
@@ -97,20 +97,13 @@ public:
UINT8 m_screen_dis;
- tilemap_t *m_tilemap0_8x8;
- tilemap_t *m_tilemap1_8x8;
- tilemap_t *m_tilemap2_8x8;
- tilemap_t *m_tilemap3_8x8;
+ struct hng64_tilemap {
+ tilemap_t *m_tilemap_8x8;
+ tilemap_t *m_tilemap_16x16;
+ tilemap_t *m_tilemap_16x16_alt;
+ };
- tilemap_t *m_tilemap0_16x16;
- tilemap_t *m_tilemap1_16x16;
- tilemap_t *m_tilemap2_16x16;
- tilemap_t *m_tilemap3_16x16;
-
- tilemap_t *m_tilemap0_16x16_alt;
- tilemap_t *m_tilemap1_16x16_alt;
- tilemap_t *m_tilemap2_16x16_alt;
- tilemap_t *m_tilemap3_16x16_alt;
+ hng64_tilemap m_tilemap[4];
UINT8 m_additive_tilemap_debug;
@@ -121,10 +114,7 @@ public:
UINT32 m_old_animmask;
UINT32 m_old_animbits;
- UINT16 m_old_tileflags0;
- UINT16 m_old_tileflags1;
- UINT16 m_old_tileflags2;
- UINT16 m_old_tileflags3;
+ UINT16 m_old_tileflags[4];
UINT32 m_dls[2][0x81];
@@ -166,6 +156,7 @@ public:
DECLARE_READ32_MEMBER(unk_vreg_r);
DECLARE_WRITE32_MEMBER(hng64_soundram_w);
DECLARE_READ32_MEMBER(hng64_soundram_r);
+ DECLARE_WRITE32_MEMBER(hng64_vregs_w);
// not actually used, but left in code so you can turn it and see the (possibly undesired?) behavior, see notes in memory map
DECLARE_WRITE32_MEMBER(hng64_soundram2_w);
diff --git a/src/mame/video/hng64.c b/src/mame/video/hng64.c
index dcb65270b40..e3e64296300 100644
--- a/src/mame/video/hng64.c
+++ b/src/mame/video/hng64.c
@@ -9,58 +9,16 @@
static void hng64_mark_all_tiles_dirty( hng64_state *state, int tilemap )
{
- if (tilemap == 0)
- {
- state->m_tilemap0_8x8->mark_all_dirty();
- state->m_tilemap0_16x16->mark_all_dirty();
- state->m_tilemap0_16x16_alt->mark_all_dirty();
- }
- else if (tilemap == 1)
- {
- state->m_tilemap1_8x8->mark_all_dirty();
- state->m_tilemap1_16x16->mark_all_dirty();
- state->m_tilemap1_16x16_alt->mark_all_dirty();
- }
- else if (tilemap == 2)
- {
- state->m_tilemap2_8x8->mark_all_dirty();
- state->m_tilemap2_16x16->mark_all_dirty();
- state->m_tilemap2_16x16_alt->mark_all_dirty();
- }
- else if (tilemap == 3)
- {
- state->m_tilemap3_8x8->mark_all_dirty();
- state->m_tilemap3_16x16->mark_all_dirty();
- state->m_tilemap3_16x16_alt->mark_all_dirty();
- }
+ state->m_tilemap[tilemap].m_tilemap_8x8->mark_all_dirty();
+ state->m_tilemap[tilemap].m_tilemap_16x16->mark_all_dirty();
+ state->m_tilemap[tilemap].m_tilemap_16x16_alt->mark_all_dirty();
}
static void hng64_mark_tile_dirty( hng64_state *state, int tilemap, int tile_index )
{
- if (tilemap == 0)
- {
- state->m_tilemap0_8x8->mark_tile_dirty(tile_index);
- state->m_tilemap0_16x16->mark_tile_dirty(tile_index);
- state->m_tilemap0_16x16_alt->mark_tile_dirty(tile_index);
- }
- else if (tilemap == 1)
- {
- state->m_tilemap1_8x8->mark_tile_dirty(tile_index);
- state->m_tilemap1_16x16->mark_tile_dirty(tile_index);
- state->m_tilemap1_16x16_alt->mark_tile_dirty(tile_index);
- }
- else if (tilemap == 2)
- {
- state->m_tilemap2_8x8->mark_tile_dirty(tile_index);
- state->m_tilemap2_16x16->mark_tile_dirty(tile_index);
- state->m_tilemap2_16x16_alt->mark_tile_dirty(tile_index);
- }
- else if (tilemap == 3)
- {
- state->m_tilemap3_8x8->mark_tile_dirty(tile_index);
- state->m_tilemap3_16x16->mark_tile_dirty(tile_index);
- state->m_tilemap3_16x16_alt->mark_tile_dirty(tile_index);
- }
+ state->m_tilemap[tilemap].m_tilemap_8x8->mark_tile_dirty(tile_index);
+ state->m_tilemap[tilemap].m_tilemap_16x16->mark_tile_dirty(tile_index);
+ state->m_tilemap[tilemap].m_tilemap_16x16_alt->mark_tile_dirty(tile_index);
}
@@ -913,70 +871,37 @@ static void hng64_drawtilemap(screen_device &screen, bitmap_rgb32 &bitmap, const
{
scrollbase = (hng64_videoregs[0x04]&0x3fff0000)>>16;
tileregs = (hng64_videoregs[0x02]&0xffff0000)>>16;
-
- if (global_dimensions==0)
- {
- if (tileregs&0x0200) tilemap = state->m_tilemap0_16x16;
- else tilemap = state->m_tilemap0_8x8;
- }
- else
- {
- if (tileregs&0x0200) tilemap = state->m_tilemap0_16x16_alt;
- else tilemap = state->m_tilemap0_8x8; // _alt
- }
}
else if (tm==1)
{
scrollbase = (hng64_videoregs[0x04]&0x00003fff)>>0;
tileregs = (hng64_videoregs[0x02]&0x0000ffff)>>0;
-
- if (global_dimensions==0)
- {
- if (tileregs&0x0200) tilemap = state->m_tilemap1_16x16;
- else tilemap = state->m_tilemap1_8x8;
- }
- else
- {
- if (tileregs&0x0200) tilemap = state->m_tilemap1_16x16_alt;
- else tilemap = state->m_tilemap1_8x8; // _alt
- }
}
else if (tm==2)
{
scrollbase = (hng64_videoregs[0x05]&0x3fff0000)>>16;
tileregs = (hng64_videoregs[0x03]&0xffff0000)>>16;
-
- if (global_dimensions==0)
- {
- if (tileregs&0x0200) tilemap = state->m_tilemap2_16x16;
- else tilemap = state->m_tilemap2_8x8;
- }
- else
- {
- if (tileregs&0x0200) tilemap = state->m_tilemap2_16x16_alt;
- else tilemap = state->m_tilemap2_8x8; // _alt
- }
}
else if (tm==3)
{
scrollbase = (hng64_videoregs[0x05]&0x00003fff)>>0;
tileregs = (hng64_videoregs[0x03]&0x0000ffff)>>0;
+ }
- if (global_dimensions==0)
- {
- if (tileregs&0x0200) tilemap = state->m_tilemap3_16x16;
- else tilemap = state->m_tilemap3_8x8;
- }
- else
- {
- if (tileregs&0x0200) tilemap = state->m_tilemap3_16x16_alt;
- else tilemap = state->m_tilemap3_8x8; // _alt
- }
+ if (global_dimensions==0)
+ {
+ if (tileregs&0x0200) tilemap = state->m_tilemap[tm].m_tilemap_16x16;
+ else tilemap = state->m_tilemap[tm].m_tilemap_8x8;
+ }
+ else
+ {
+ if (tileregs&0x0200) tilemap = state->m_tilemap[tm].m_tilemap_16x16_alt;
+ else tilemap = state->m_tilemap[tm].m_tilemap_8x8; // _alt
}
// xrally's pink tilemaps make me think this is a tilemap enable bit.
// fatfurwa makes me think otherwise.
- //if (!(tileregs & 0x0040)) return;
+// if (!(tileregs & 0x0040)) return;
// set the transmask so our manual copy is correct
if (tileregs & 0x0400)
@@ -1311,14 +1236,14 @@ static void hng64_drawtilemap(screen_device &screen, bitmap_rgb32 &bitmap, const
// 0940 - samurai shodown 64
// 0880 - buriki
- // mmmm dbr? ??e? ????
+ // mmmm dbrz zzzz zzzz
// m = mosaic related?
// -- they seem to enable mosaic at the same time as rowscroll in several cases (floor in buriki / ff)
// and also on the rotating logo in buriki.. does it cause some kind of aliasing side-effect, or.. ?
// r = tile size (seems correct)
// b = 4bpp/8bpp (seems correct) (beast busters, samsh64, sasm64 2, xrally switch it for some screens)
// d = line (floor) mode - buriki, fatafurwa, some backgrounds in ss64_2
- // e = enable according to sams64_2 debug mode, buriki and xrally.. but NOT fatal fury :-(
+ // z = z depth? tilemaps might also be affected by min / max clip values somewhere? (debug layer on buriki has priority 0x020, which would be highest)
*/
@@ -1334,8 +1259,7 @@ UINT32 hng64_state::screen_update_hng64(screen_device &screen, bitmap_rgb32 &bit
UINT32 *hng64_tcram = m_tcram;
UINT32 animmask;
UINT32 animbits;
- UINT16 tileflags0, tileflags1;
- UINT16 tileflags2, tileflags3;
+ UINT16 tileflags[4];
#if 0
// press in sams64_2 attract mode for a nice debug screen from the game
@@ -1356,10 +1280,10 @@ UINT32 hng64_state::screen_update_hng64(screen_device &screen, bitmap_rgb32 &bit
animmask = hng64_videoregs[0x0b];
animbits = hng64_videoregs[0x0c];
- tileflags0 = hng64_videoregs[0x02]>>16;
- tileflags1 = hng64_videoregs[0x02]&0xffff;
- tileflags2 = hng64_videoregs[0x03]>>16;
- tileflags3 = hng64_videoregs[0x03]&0xffff;
+ tileflags[0] = hng64_videoregs[0x02]>>16;
+ tileflags[1] = hng64_videoregs[0x02]&0xffff;
+ tileflags[2] = hng64_videoregs[0x03]>>16;
+ tileflags[3] = hng64_videoregs[0x03]&0xffff;
/* if the auto-animation mask or bits have changed search for tiles using them and mark as dirty */
if ((m_old_animmask != animmask) || (m_old_animbits != animbits))
@@ -1389,35 +1313,15 @@ UINT32 hng64_state::screen_update_hng64(screen_device &screen, bitmap_rgb32 &bit
m_old_animbits = animbits;
}
- if ((m_old_tileflags0&IMPORTANT_DIRTY_TILEFLAG_MASK)!=(tileflags0&IMPORTANT_DIRTY_TILEFLAG_MASK))
+ for (int i = 0; i < 4; i++)
{
- hng64_mark_all_tiles_dirty(this, 0);
- m_old_tileflags0 = tileflags0;
- }
-
- if ((m_old_tileflags1&IMPORTANT_DIRTY_TILEFLAG_MASK)!=(tileflags1&IMPORTANT_DIRTY_TILEFLAG_MASK))
- {
- hng64_mark_all_tiles_dirty(this, 1);
- m_old_tileflags1 = tileflags1;
- }
-
- if ((m_old_tileflags2&IMPORTANT_DIRTY_TILEFLAG_MASK)!=(tileflags2&IMPORTANT_DIRTY_TILEFLAG_MASK))
- {
- hng64_mark_all_tiles_dirty(this, 2);
- m_old_tileflags2 = tileflags2;
- }
-
- if ((m_old_tileflags3&IMPORTANT_DIRTY_TILEFLAG_MASK)!=(tileflags3&IMPORTANT_DIRTY_TILEFLAG_MASK))
- {
- hng64_mark_all_tiles_dirty(this, 3);
- m_old_tileflags3 = tileflags3;
+ if ((m_old_tileflags[i]&IMPORTANT_DIRTY_TILEFLAG_MASK)!=(tileflags[i]&IMPORTANT_DIRTY_TILEFLAG_MASK))
+ {
+ hng64_mark_all_tiles_dirty(this, i);
+ m_old_tileflags[i] = tileflags[i];
+ }
}
- // mark all frames as dirty if for some reason we don't trust the above code
- //hng64_mark_all_tiles_dirty(this, 0);
- //hng64_mark_all_tiles_dirty(this, 1);
- //hng64_mark_all_tiles_dirty(this, 2);
- //hng64_mark_all_tiles_dirty(this, 3);
hng64_drawtilemap(screen,bitmap,cliprect, 3);
hng64_drawtilemap(screen,bitmap,cliprect, 2);
@@ -1455,14 +1359,14 @@ UINT32 hng64_state::screen_update_hng64(screen_device &screen, bitmap_rgb32 &bit
if (0)
popmessage("%08x %08x %08x %08x %08x", m_spriteregs[0], m_spriteregs[1], m_spriteregs[2], m_spriteregs[3], m_spriteregs[4]);
- if (0)
- popmessage("%08x %08x TR(%04x %04x %04x %04x) SB(%04x %04x %04x %04x) %08x %08x %08x %08x %08x AA(%08x %08x) %08x %08x",
+ if (1)
+ popmessage("%08x %08x TR(%04x %04x %04x %04x) SB(%04x %04x %04x %04x) %08x %08x %08x %08x %08x AA(%08x %08x) %08x",
hng64_videoregs[0x00],
hng64_videoregs[0x01],
- (hng64_videoregs[0x02]>>16)&0xf9ff, // ---- bits we're sure about are masked out
- (hng64_videoregs[0x02]>>0)&0xf9ff, // ss64_2 debug mode indicates that 0x0040 is enable!
- (hng64_videoregs[0x03]>>16)&0xf9ff, // buriki agrees (debug data on text layer) xrally agress (pink layer)
- (hng64_videoregs[0x03]>>0)&0xf9ff, // fatal fury doesn't (all backgrounds have it set) joy
+ (hng64_videoregs[0x02]>>16)&0x01ff, // ---- bits we're sure about are masked out
+ (hng64_videoregs[0x02]>>0)&0x01ff, // ss64_2 debug mode indicates that 0x0040 is enable!
+ (hng64_videoregs[0x03]>>16)&0x01ff, // buriki agrees (debug data on text layer) xrally agress (pink layer)
+ (hng64_videoregs[0x03]>>0)&0x01ff, // fatal fury doesn't (all backgrounds have it set) joy
(hng64_videoregs[0x04]>>16)&0xffff,
(hng64_videoregs[0x04]>>0)&0xffff,
(hng64_videoregs[0x05]>>16)&0xffff,
@@ -1474,8 +1378,7 @@ UINT32 hng64_state::screen_update_hng64(screen_device &screen, bitmap_rgb32 &bit
hng64_videoregs[0x0a],
hng64_videoregs[0x0b],
hng64_videoregs[0x0c],
- hng64_videoregs[0x0d],
- hng64_videoregs[0x0e]);
+ hng64_videoregs[0x0d]);
if (0)
popmessage("3D: %08x %08x %08x %08x : %08x %08x %08x %08x : %08x %08x %08x %08x",
@@ -1547,42 +1450,33 @@ void hng64_state::video_start()
m_old_animmask = -1;
m_old_animbits = -1;
- m_old_tileflags0 = -1;
- m_old_tileflags1 = -1;
- m_old_tileflags2 = -1;
- m_old_tileflags3 = -1;
-
- m_tilemap0_8x8 = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(hng64_state::get_hng64_tile0_8x8_info),this), TILEMAP_SCAN_ROWS, 8, 8, 128, 128); /* 128x128x4 = 0x10000 */
- m_tilemap0_16x16 = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(hng64_state::get_hng64_tile0_16x16_info),this), TILEMAP_SCAN_ROWS, 16, 16, 128, 128); /* 128x128x4 = 0x10000 */
- m_tilemap0_16x16_alt = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(hng64_state::get_hng64_tile0_16x16_info),this), TILEMAP_SCAN_ROWS, 16, 16, 256, 64); /* 128x128x4 = 0x10000 */
-
- m_tilemap1_8x8 = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(hng64_state::get_hng64_tile1_8x8_info),this), TILEMAP_SCAN_ROWS, 8, 8, 128, 128); /* 128x128x4 = 0x10000 */
- m_tilemap1_16x16 = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(hng64_state::get_hng64_tile1_16x16_info),this), TILEMAP_SCAN_ROWS, 16, 16, 128, 128); /* 128x128x4 = 0x10000 */
- m_tilemap1_16x16_alt = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(hng64_state::get_hng64_tile1_16x16_info),this), TILEMAP_SCAN_ROWS, 16, 16, 256, 64); /* 128x128x4 = 0x10000 */
-
- m_tilemap2_8x8 = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(hng64_state::get_hng64_tile2_8x8_info),this), TILEMAP_SCAN_ROWS, 8, 8, 128, 128); /* 128x128x4 = 0x10000 */
- m_tilemap2_16x16 = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(hng64_state::get_hng64_tile2_16x16_info),this), TILEMAP_SCAN_ROWS, 16, 16, 128, 128); /* 128x128x4 = 0x10000 */
- m_tilemap2_16x16_alt = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(hng64_state::get_hng64_tile2_16x16_info),this), TILEMAP_SCAN_ROWS, 16, 16, 256, 64); /* 128x128x4 = 0x10000 */
-
- m_tilemap3_8x8 = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(hng64_state::get_hng64_tile3_8x8_info),this), TILEMAP_SCAN_ROWS, 8, 8, 128, 128); /* 128x128x4 = 0x10000 */
- m_tilemap3_16x16 = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(hng64_state::get_hng64_tile3_16x16_info),this), TILEMAP_SCAN_ROWS, 16, 16, 128, 128); /* 128x128x4 = 0x10000 */
- m_tilemap3_16x16_alt = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(hng64_state::get_hng64_tile3_16x16_info),this), TILEMAP_SCAN_ROWS, 16, 16, 256, 64); /* 128x128x4 = 0x10000 */
-
- m_tilemap0_8x8->set_transparent_pen(0);
- m_tilemap0_16x16->set_transparent_pen(0);
- m_tilemap0_16x16_alt->set_transparent_pen(0);
-
- m_tilemap1_8x8->set_transparent_pen(0);
- m_tilemap1_16x16->set_transparent_pen(0);
- m_tilemap1_16x16_alt->set_transparent_pen(0);
-
- m_tilemap2_8x8->set_transparent_pen(0);
- m_tilemap2_16x16->set_transparent_pen(0);
- m_tilemap2_16x16_alt->set_transparent_pen(0);
-
- m_tilemap3_8x8->set_transparent_pen(0);
- m_tilemap3_16x16->set_transparent_pen(0);
- m_tilemap3_16x16_alt->set_transparent_pen(0);
+ m_old_tileflags[0] = -1;
+ m_old_tileflags[1] = -1;
+ m_old_tileflags[2] = -1;
+ m_old_tileflags[3] = -1;
+
+ m_tilemap[0].m_tilemap_8x8 = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(hng64_state::get_hng64_tile0_8x8_info),this), TILEMAP_SCAN_ROWS, 8, 8, 128, 128); /* 128x128x4 = 0x10000 */
+ m_tilemap[0].m_tilemap_16x16 = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(hng64_state::get_hng64_tile0_16x16_info),this), TILEMAP_SCAN_ROWS, 16, 16, 128, 128); /* 128x128x4 = 0x10000 */
+ m_tilemap[0].m_tilemap_16x16_alt = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(hng64_state::get_hng64_tile0_16x16_info),this), TILEMAP_SCAN_ROWS, 16, 16, 256, 64); /* 128x128x4 = 0x10000 */
+
+ m_tilemap[1].m_tilemap_8x8 = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(hng64_state::get_hng64_tile1_8x8_info),this), TILEMAP_SCAN_ROWS, 8, 8, 128, 128); /* 128x128x4 = 0x10000 */
+ m_tilemap[1].m_tilemap_16x16 = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(hng64_state::get_hng64_tile1_16x16_info),this), TILEMAP_SCAN_ROWS, 16, 16, 128, 128); /* 128x128x4 = 0x10000 */
+ m_tilemap[1].m_tilemap_16x16_alt = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(hng64_state::get_hng64_tile1_16x16_info),this), TILEMAP_SCAN_ROWS, 16, 16, 256, 64); /* 128x128x4 = 0x10000 */
+
+ m_tilemap[2].m_tilemap_8x8 = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(hng64_state::get_hng64_tile2_8x8_info),this), TILEMAP_SCAN_ROWS, 8, 8, 128, 128); /* 128x128x4 = 0x10000 */
+ m_tilemap[2].m_tilemap_16x16 = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(hng64_state::get_hng64_tile2_16x16_info),this), TILEMAP_SCAN_ROWS, 16, 16, 128, 128); /* 128x128x4 = 0x10000 */
+ m_tilemap[2].m_tilemap_16x16_alt = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(hng64_state::get_hng64_tile2_16x16_info),this), TILEMAP_SCAN_ROWS, 16, 16, 256, 64); /* 128x128x4 = 0x10000 */
+
+ m_tilemap[3].m_tilemap_8x8 = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(hng64_state::get_hng64_tile3_8x8_info),this), TILEMAP_SCAN_ROWS, 8, 8, 128, 128); /* 128x128x4 = 0x10000 */
+ m_tilemap[3].m_tilemap_16x16 = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(hng64_state::get_hng64_tile3_16x16_info),this), TILEMAP_SCAN_ROWS, 16, 16, 128, 128); /* 128x128x4 = 0x10000 */
+ m_tilemap[3].m_tilemap_16x16_alt = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(hng64_state::get_hng64_tile3_16x16_info),this), TILEMAP_SCAN_ROWS, 16, 16, 256, 64); /* 128x128x4 = 0x10000 */
+
+ for (int i = 0; i < 4; i++)
+ {
+ m_tilemap[i].m_tilemap_8x8->set_transparent_pen(0);
+ m_tilemap[i].m_tilemap_16x16->set_transparent_pen(0);
+ m_tilemap[i].m_tilemap_16x16_alt->set_transparent_pen(0);
+ }
// Debug switch, turn on / off additive blending on a per-tilemap basis
m_additive_tilemap_debug = 0;