diff options
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 |
commit | 331761c113ef2f27cb4dcdde46813a18be3b0a80 (patch) | |
tree | d5f1503910e38ed03275884e6d85e8c5ffcbbadb | |
parent | 62340a8f3756ce1037ebf47ff498d95eb2993ce5 (diff) |
hng64, some code refactor, going to try a few things in a bit (nw)
-rw-r--r-- | src/mame/drivers/hng64.c | 16 | ||||
-rw-r--r-- | src/mame/includes/hng64.h | 25 | ||||
-rw-r--r-- | src/mame/video/hng64.c | 234 |
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; |