fix level 2-4 boss in hrdtimes (MT5220)

This commit is contained in:
David Haywood 2013-07-10 21:41:17 +00:00
parent f0b29eb92a
commit 2d852cebc9
3 changed files with 25 additions and 4 deletions

View File

@ -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")

View File

@ -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);

View File

@ -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);