diff --git a/src/mame/drivers/playmark.c b/src/mame/drivers/playmark.c index 3c734007625..f4b6d95de6b 100644 --- a/src/mame/drivers/playmark.c +++ b/src/mame/drivers/playmark.c @@ -315,9 +315,12 @@ static ADDRESS_MAP_START( hrdtimes_main_map, AS_PROGRAM, 16, playmark_state ) AM_RANGE(0x000000, 0x07ffff) AM_ROM AM_RANGE(0x080000, 0x0bffff) AM_RAM AM_RANGE(0x0c0000, 0x0fffff) AM_ROM AM_REGION("maincpu", 0x0c0000) - AM_RANGE(0x100000, 0x103fff) AM_RAM_WRITE(hrdtimes_bgvideoram_w) AM_SHARE("videoram3") - AM_RANGE(0x104000, 0x107fff) AM_RAM_WRITE(hrdtimes_fgvideoram_w) AM_SHARE("videoram2") - AM_RANGE(0x108000, 0x10ffff) AM_RAM_WRITE(hrdtimes_txvideoram_w) AM_SHARE("videoram1") + AM_RANGE(0x100000, 0x1007ff) AM_RAM_WRITE(hrdtimes_bgvideoram_w) AM_SHARE("videoram3") // 32*32? + AM_RANGE(0x100800, 0x103fff) AM_RAM + AM_RANGE(0x104000, 0x105fff) AM_RAM_WRITE(hrdtimes_fgvideoram_w) AM_SHARE("videoram2") // 128*32? + AM_RANGE(0x106000, 0x107fff) AM_RAM + AM_RANGE(0x108000, 0x109fff) AM_RAM_WRITE(hrdtimes_txvideoram_w) AM_SHARE("videoram1") // 64*64? + AM_RANGE(0x10a000, 0x10bfff) AM_RAM AM_RANGE(0x110000, 0x11000d) AM_WRITE(hrdtimes_scroll_w) AM_RANGE(0x200000, 0x200fff) AM_RAM AM_SHARE("spriteram") AM_RANGE(0x280000, 0x2807ff) AM_RAM_WRITE(bigtwin_paletteram_w) AM_SHARE("paletteram") diff --git a/src/mame/includes/playmark.h b/src/mame/includes/playmark.h index 3445532bfa1..7c66b2af59d 100644 --- a/src/mame/includes/playmark.h +++ b/src/mame/includes/playmark.h @@ -95,6 +95,7 @@ public: DECLARE_VIDEO_START(hotmind); DECLARE_VIDEO_START(hrdtimes); DECLARE_VIDEO_START(luckboomh); + TILEMAP_MAPPER_MEMBER(playmark_tilemap_scan_pages); UINT32 screen_update_bigtwin(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); UINT32 screen_update_bigtwinb(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); UINT32 screen_update_wbeachvl(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); diff --git a/src/mame/video/playmark.c b/src/mame/video/playmark.c index 51774a16c51..7f341f97e3f 100644 --- a/src/mame/video/playmark.c +++ b/src/mame/video/playmark.c @@ -227,10 +227,27 @@ VIDEO_START_MEMBER(playmark_state,luckboomh) +// hard times level 2-4 (boss) needs this.. or something similar +#define TILES_PER_PAGE_Y (0x20) +#define TILES_PER_PAGE_X (0x20) +#define PAGES_PER_TMAP_Y (0x1) +#define PAGES_PER_TMAP_X (0x4) + +TILEMAP_MAPPER_MEMBER(playmark_state::playmark_tilemap_scan_pages) +{ + return (col / TILES_PER_PAGE_X) * TILES_PER_PAGE_Y * TILES_PER_PAGE_X * PAGES_PER_TMAP_Y + + (col % TILES_PER_PAGE_X) + + + (row / TILES_PER_PAGE_Y) * TILES_PER_PAGE_Y * TILES_PER_PAGE_X + + (row % TILES_PER_PAGE_Y) * TILES_PER_PAGE_X; +} + +// theres enough ram for 64*128 on each tilemap.. + VIDEO_START_MEMBER(playmark_state,hrdtimes) { m_tx_tilemap = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(playmark_state::hrdtimes_get_tx_tile_info),this),TILEMAP_SCAN_ROWS, 8, 8, 64, 64); - m_fg_tilemap = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(playmark_state::hrdtimes_get_fg_tile_info),this),TILEMAP_SCAN_ROWS, 16, 16, 32, 32); + m_fg_tilemap = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(playmark_state::hrdtimes_get_fg_tile_info),this),tilemap_mapper_delegate(FUNC(playmark_state::playmark_tilemap_scan_pages),this), 16, 16, 128, 32); m_bg_tilemap = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(playmark_state::hrdtimes_get_bg_tile_info),this),TILEMAP_SCAN_ROWS, 16, 16, 32, 32); m_tx_tilemap->set_transparent_pen(0);