mirror of
https://github.com/holub/mame
synced 2025-05-25 15:25:33 +03:00
NMK16 driver clean ups.
Merging some of the duplicated code in nmk16.c, and attempting to handle the larger tilemaps used by Thunder Dragon 2, Rapid Hero and Macross 2 in a more correct way. This has fixed some glitches in the intro of Rapid Hero without breaking the ingame graphics. [David Haywood]
This commit is contained in:
parent
19b9ab7ed5
commit
ef069cefdd
@ -329,7 +329,7 @@ static ADDRESS_MAP_START( vandyke_map, ADDRESS_SPACE_PROGRAM, 16 )
|
||||
AM_RANGE(0x08001e, 0x08001f) AM_WRITE(NMK004_w)
|
||||
AM_RANGE(0x088000, 0x0887ff) AM_RAM_WRITE(paletteram16_RRRRGGGGBBBBRGBx_word_w) AM_BASE(&paletteram16)
|
||||
AM_RANGE(0x08c000, 0x08c007) AM_WRITE(vandyke_scroll_w)
|
||||
AM_RANGE(0x090000, 0x093fff) AM_RAM_WRITE(nmk_bgvideoram_w) AM_BASE(&nmk_bgvideoram)
|
||||
AM_RANGE(0x090000, 0x093fff) AM_RAM_WRITE(nmk_bgvideoram0_w) AM_BASE(&nmk_bgvideoram0)
|
||||
AM_RANGE(0x094000, 0x097fff) AM_RAM /* what is this? */
|
||||
AM_RANGE(0x09d000, 0x09d7ff) AM_RAM_WRITE(nmk_txvideoram_w) AM_BASE(&nmk_txvideoram)
|
||||
AM_RANGE(0x0f0000, 0x0fffff) AM_RAM AM_BASE(&nmk16_mainram)
|
||||
@ -346,7 +346,7 @@ static ADDRESS_MAP_START( manybloc_map, ADDRESS_SPACE_PROGRAM, 16 )
|
||||
AM_RANGE(0x08001c, 0x08001d) AM_WRITENOP /* See notes at the top of the driver */
|
||||
AM_RANGE(0x08001e, 0x08001f) AM_READWRITE(soundlatch2_word_r,soundlatch_word_w)
|
||||
AM_RANGE(0x088000, 0x0883ff) AM_RAM_WRITE(paletteram16_RRRRGGGGBBBBRGBx_word_w) AM_BASE(&paletteram16)
|
||||
AM_RANGE(0x090000, 0x093fff) AM_RAM_WRITE(nmk_bgvideoram_w) AM_BASE(&nmk_bgvideoram)
|
||||
AM_RANGE(0x090000, 0x093fff) AM_RAM_WRITE(nmk_bgvideoram0_w) AM_BASE(&nmk_bgvideoram0)
|
||||
AM_RANGE(0x09c000, 0x09cfff) AM_RAM_WRITE(manybloc_scroll_w) AM_BASE(&gunnail_scrollram)
|
||||
AM_RANGE(0x09d000, 0x09d7ff) AM_RAM_WRITE(nmk_txvideoram_w) AM_BASE(&nmk_txvideoram)
|
||||
AM_RANGE(0x0f0000, 0x0fffff) AM_RAM AM_BASE(&nmk16_mainram)
|
||||
@ -366,7 +366,7 @@ static ADDRESS_MAP_START( tharrier_map, ADDRESS_SPACE_PROGRAM, 16 )
|
||||
AM_RANGE(0x080202, 0x080203) AM_READ_PORT("IN2")
|
||||
AM_RANGE(0x088000, 0x0883ff) AM_RAM_WRITE(paletteram16_RRRRGGGGBBBBRGBx_word_w) AM_BASE(&paletteram16)
|
||||
// AM_RANGE(0x08c000, 0x08c007) AM_WRITE(nmk_scroll_w)
|
||||
AM_RANGE(0x090000, 0x093fff) AM_RAM_WRITE(nmk_bgvideoram_w) AM_BASE(&nmk_bgvideoram)
|
||||
AM_RANGE(0x090000, 0x093fff) AM_RAM_WRITE(nmk_bgvideoram0_w) AM_BASE(&nmk_bgvideoram0)
|
||||
AM_RANGE(0x09c000, 0x09c7ff) AM_RAM /* Unused txvideoram area? */
|
||||
AM_RANGE(0x09d000, 0x09d7ff) AM_RAM_WRITE(nmk_txvideoram_w) AM_BASE(&nmk_txvideoram)
|
||||
AM_RANGE(0x0f0000, 0x0fffff) AM_RAM_WRITE(nmk16_mainram_strange_w) AM_BASE(&nmk16_mainram)
|
||||
@ -402,7 +402,7 @@ static ADDRESS_MAP_START( mustang_map, ADDRESS_SPACE_PROGRAM, 16 )
|
||||
AM_RANGE(0x088000, 0x0887ff) AM_RAM_WRITE(paletteram16_RRRRGGGGBBBBRGBx_word_w) AM_BASE(&paletteram16)
|
||||
AM_RANGE(0x08c000, 0x08c001) AM_WRITE(mustang_scroll_w)
|
||||
AM_RANGE(0x08c002, 0x08c087) AM_WRITENOP // ??
|
||||
AM_RANGE(0x090000, 0x093fff) AM_RAM_WRITE(nmk_bgvideoram_w) AM_BASE(&nmk_bgvideoram)
|
||||
AM_RANGE(0x090000, 0x093fff) AM_RAM_WRITE(nmk_bgvideoram0_w) AM_BASE(&nmk_bgvideoram0)
|
||||
AM_RANGE(0x09c000, 0x09c7ff) AM_RAM_WRITE(nmk_txvideoram_w) AM_BASE(&nmk_txvideoram)
|
||||
AM_RANGE(0x0f0000, 0x0fffff) AM_RAM_WRITE(nmk16_mainram_strange_w) AM_BASE(&nmk16_mainram)
|
||||
ADDRESS_MAP_END
|
||||
@ -419,7 +419,7 @@ static ADDRESS_MAP_START( mustangb_map, ADDRESS_SPACE_PROGRAM, 16 )
|
||||
AM_RANGE(0x088000, 0x0887ff) AM_RAM_WRITE(paletteram16_RRRRGGGGBBBBRGBx_word_w) AM_BASE(&paletteram16)
|
||||
AM_RANGE(0x08c000, 0x08c001) AM_WRITE(mustang_scroll_w)
|
||||
AM_RANGE(0x08c002, 0x08c087) AM_WRITENOP // ??
|
||||
AM_RANGE(0x090000, 0x093fff) AM_RAM_WRITE(nmk_bgvideoram_w) AM_BASE(&nmk_bgvideoram)
|
||||
AM_RANGE(0x090000, 0x093fff) AM_RAM_WRITE(nmk_bgvideoram0_w) AM_BASE(&nmk_bgvideoram0)
|
||||
AM_RANGE(0x09c000, 0x09c7ff) AM_RAM_WRITE(nmk_txvideoram_w) AM_BASE(&nmk_txvideoram)
|
||||
AM_RANGE(0x0f0000, 0x0fffff) AM_RAM_WRITE(nmk16_mainram_strange_w) AM_BASE(&nmk16_mainram)
|
||||
ADDRESS_MAP_END
|
||||
@ -437,7 +437,7 @@ static ADDRESS_MAP_START( twinactn_map, ADDRESS_SPACE_PROGRAM, 16 )
|
||||
AM_RANGE(0x088000, 0x0887ff) AM_RAM_WRITE(paletteram16_RRRRGGGGBBBBRGBx_word_w) AM_BASE(&paletteram16)
|
||||
AM_RANGE(0x08c000, 0x08c001) AM_WRITE(mustang_scroll_w)
|
||||
AM_RANGE(0x08c002, 0x08c087) AM_WRITENOP // ??
|
||||
AM_RANGE(0x090000, 0x093fff) AM_RAM_WRITE(nmk_bgvideoram_w) AM_BASE(&nmk_bgvideoram)
|
||||
AM_RANGE(0x090000, 0x093fff) AM_RAM_WRITE(nmk_bgvideoram0_w) AM_BASE(&nmk_bgvideoram0)
|
||||
AM_RANGE(0x09c000, 0x09c7ff) AM_RAM_WRITE(nmk_txvideoram_w) AM_BASE(&nmk_txvideoram)
|
||||
AM_RANGE(0x0f0000, 0x0fffff) AM_RAM_WRITE(nmk16_mainram_strange_w) AM_BASE(&nmk16_mainram)
|
||||
ADDRESS_MAP_END
|
||||
@ -457,7 +457,7 @@ static ADDRESS_MAP_START( acrobatm_map, ADDRESS_SPACE_PROGRAM, 16 )
|
||||
AM_RANGE(0xc001e, 0xc001f) AM_WRITE(NMK004_w)
|
||||
AM_RANGE(0xc4000, 0xc45ff) AM_RAM_WRITE(paletteram16_RRRRGGGGBBBBxxxx_word_w) AM_BASE(&paletteram16)
|
||||
AM_RANGE(0xc8000, 0xc8007) AM_RAM_WRITE(nmk_scroll_w)
|
||||
AM_RANGE(0xcc000, 0xcffff) AM_RAM_WRITE(nmk_bgvideoram_w) AM_BASE(&nmk_bgvideoram)
|
||||
AM_RANGE(0xcc000, 0xcffff) AM_RAM_WRITE(nmk_bgvideoram0_w) AM_BASE(&nmk_bgvideoram0)
|
||||
AM_RANGE(0xd4000, 0xd47ff) AM_RAM_WRITE(nmk_txvideoram_w) AM_BASE(&nmk_txvideoram)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
@ -474,7 +474,7 @@ static ADDRESS_MAP_START( bioship_map, ADDRESS_SPACE_PROGRAM, 16 )
|
||||
AM_RANGE(0x088000, 0x0887ff) AM_RAM_WRITE(paletteram16_RRRRGGGGBBBBRGBx_word_w) AM_BASE(&paletteram16)
|
||||
AM_RANGE(0x08c000, 0x08c007) AM_RAM_WRITE(bioshipbg_scroll_w)
|
||||
AM_RANGE(0x08c010, 0x08c017) AM_RAM_WRITE(bioship_scroll_w)
|
||||
AM_RANGE(0x090000, 0x093fff) AM_RAM_WRITE(nmk_bgvideoram_w) AM_BASE(&nmk_bgvideoram)
|
||||
AM_RANGE(0x090000, 0x093fff) AM_RAM_WRITE(nmk_bgvideoram0_w) AM_BASE(&nmk_bgvideoram0)
|
||||
AM_RANGE(0x09c000, 0x09c7ff) AM_RAM_WRITE(nmk_txvideoram_w) AM_BASE(&nmk_txvideoram)
|
||||
AM_RANGE(0x0f0000, 0x0fffff) AM_RAM AM_BASE(&nmk16_mainram)
|
||||
ADDRESS_MAP_END
|
||||
@ -653,7 +653,7 @@ static ADDRESS_MAP_START( hachamf_map, ADDRESS_SPACE_PROGRAM, 16 )
|
||||
/* Video Region */
|
||||
AM_RANGE(0x088000, 0x0887ff) AM_RAM_WRITE(paletteram16_RRRRGGGGBBBBRGBx_word_w) AM_BASE(&paletteram16)
|
||||
AM_RANGE(0x08c000, 0x08c007) AM_WRITE(nmk_scroll_w)
|
||||
AM_RANGE(0x090000, 0x093fff) AM_RAM_WRITE(nmk_bgvideoram_w) AM_BASE(&nmk_bgvideoram)
|
||||
AM_RANGE(0x090000, 0x093fff) AM_RAM_WRITE(nmk_bgvideoram0_w) AM_BASE(&nmk_bgvideoram0)
|
||||
AM_RANGE(0x09c000, 0x09c7ff) AM_RAM_WRITE(nmk_txvideoram_w) AM_BASE(&nmk_txvideoram)
|
||||
/* Main RAM, inc sprites, shared with MCU */
|
||||
AM_RANGE(0x0f0000, 0x0fffff) AM_RAM_WRITE(hachamf_mainram_w) AM_BASE(&nmk16_mainram) // ram is shared with MCU
|
||||
@ -887,7 +887,7 @@ static ADDRESS_MAP_START( tdragon_map, ADDRESS_SPACE_PROGRAM, 16 )
|
||||
AM_RANGE(0x0c001e, 0x0c001f) AM_WRITE(NMK004_w)
|
||||
AM_RANGE(0x0c4000, 0x0c4007) AM_RAM_WRITE(nmk_scroll_w)
|
||||
AM_RANGE(0x0c8000, 0x0c87ff) AM_RAM_WRITE(paletteram16_RRRRGGGGBBBBRGBx_word_w) AM_BASE(&paletteram16)
|
||||
AM_RANGE(0x0cc000, 0x0cffff) AM_RAM_WRITE(nmk_bgvideoram_w) AM_BASE(&nmk_bgvideoram)
|
||||
AM_RANGE(0x0cc000, 0x0cffff) AM_RAM_WRITE(nmk_bgvideoram0_w) AM_BASE(&nmk_bgvideoram0)
|
||||
AM_RANGE(0x0d0000, 0x0d07ff) AM_RAM_WRITE(nmk_txvideoram_w) AM_BASE(&nmk_txvideoram)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
@ -904,7 +904,7 @@ static ADDRESS_MAP_START( tdragonb_map, ADDRESS_SPACE_PROGRAM, 16 )
|
||||
AM_RANGE(0x0c001e, 0x0c001f) AM_WRITE(seibu_main_mustb_w)
|
||||
AM_RANGE(0x0c4000, 0x0c4007) AM_RAM_WRITE(nmk_scroll_w)
|
||||
AM_RANGE(0x0c8000, 0x0c87ff) AM_RAM_WRITE(paletteram16_RRRRGGGGBBBBRGBx_word_w) AM_BASE(&paletteram16)
|
||||
AM_RANGE(0x0cc000, 0x0cffff) AM_RAM_WRITE(nmk_bgvideoram_w) AM_BASE(&nmk_bgvideoram)
|
||||
AM_RANGE(0x0cc000, 0x0cffff) AM_RAM_WRITE(nmk_bgvideoram0_w) AM_BASE(&nmk_bgvideoram0)
|
||||
AM_RANGE(0x0d0000, 0x0d07ff) AM_RAM_WRITE(nmk_txvideoram_w) AM_BASE(&nmk_txvideoram)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
@ -920,7 +920,7 @@ static ADDRESS_MAP_START( ssmissin_map, ADDRESS_SPACE_PROGRAM, 16 )
|
||||
AM_RANGE(0x0c001e, 0x0c001f) AM_WRITE(ssmissin_sound_w)
|
||||
AM_RANGE(0x0c4000, 0x0c4007) AM_RAM_WRITE(nmk_scroll_w)
|
||||
AM_RANGE(0x0c8000, 0x0c87ff) AM_RAM_WRITE(paletteram16_RRRRGGGGBBBBRGBx_word_w) AM_BASE(&paletteram16)
|
||||
AM_RANGE(0x0cc000, 0x0cffff) AM_RAM_WRITE(nmk_bgvideoram_w) AM_BASE(&nmk_bgvideoram)
|
||||
AM_RANGE(0x0cc000, 0x0cffff) AM_RAM_WRITE(nmk_bgvideoram0_w) AM_BASE(&nmk_bgvideoram0)
|
||||
AM_RANGE(0x0d0000, 0x0d07ff) AM_MIRROR(0x1800) AM_RAM_WRITE(nmk_txvideoram_w) AM_BASE(&nmk_txvideoram) //mirror for airattck
|
||||
ADDRESS_MAP_END
|
||||
|
||||
@ -945,7 +945,7 @@ static ADDRESS_MAP_START( strahl_map, ADDRESS_SPACE_PROGRAM, 16 )
|
||||
AM_RANGE(0x84000, 0x84007) AM_RAM_WRITE(nmk_scroll_w)
|
||||
AM_RANGE(0x88000, 0x88007) AM_RAM_WRITE(nmk_scroll_2_w)
|
||||
AM_RANGE(0x8c000, 0x8c7ff) AM_RAM_WRITE(paletteram16_RRRRGGGGBBBBxxxx_word_w) AM_BASE(&paletteram16)
|
||||
AM_RANGE(0x90000, 0x93fff) AM_RAM_WRITE(nmk_bgvideoram_w) AM_BASE(&nmk_bgvideoram)
|
||||
AM_RANGE(0x90000, 0x93fff) AM_RAM_WRITE(nmk_bgvideoram0_w) AM_BASE(&nmk_bgvideoram0)
|
||||
AM_RANGE(0x94000, 0x97fff) AM_RAM_WRITE(nmk_fgvideoram_w) AM_BASE(&nmk_fgvideoram)
|
||||
AM_RANGE(0x9c000, 0x9c7ff) AM_RAM_WRITE(nmk_txvideoram_w) AM_BASE(&nmk_txvideoram)
|
||||
AM_RANGE(0xf0000, 0xfffff) AM_RAM AM_BASE(&nmk16_mainram)
|
||||
@ -964,7 +964,7 @@ static ADDRESS_MAP_START( macross_map, ADDRESS_SPACE_PROGRAM, 16 )
|
||||
AM_RANGE(0x08001e, 0x08001f) AM_WRITE(NMK004_w)
|
||||
AM_RANGE(0x088000, 0x0887ff) AM_RAM_WRITE(paletteram16_RRRRGGGGBBBBRGBx_word_w) AM_BASE(&paletteram16)
|
||||
AM_RANGE(0x08c000, 0x08c007) AM_RAM_WRITE(nmk_scroll_w)
|
||||
AM_RANGE(0x090000, 0x093fff) AM_RAM_WRITE(nmk_bgvideoram_w) AM_BASE(&nmk_bgvideoram)
|
||||
AM_RANGE(0x090000, 0x093fff) AM_RAM_WRITE(nmk_bgvideoram0_w) AM_BASE(&nmk_bgvideoram0)
|
||||
AM_RANGE(0x09c000, 0x09c7ff) AM_RAM_WRITE(nmk_txvideoram_w) AM_BASE(&nmk_txvideoram)
|
||||
AM_RANGE(0x0f0000, 0x0fffff) AM_RAM_WRITE(nmk16_mainram_strange_w) AM_BASE(&nmk16_mainram)
|
||||
ADDRESS_MAP_END
|
||||
@ -984,7 +984,7 @@ static ADDRESS_MAP_START( gunnail_map, ADDRESS_SPACE_PROGRAM, 16 )
|
||||
AM_RANGE(0x08c000, 0x08c1ff) AM_WRITEONLY AM_BASE(&gunnail_scrollram)
|
||||
AM_RANGE(0x08c200, 0x08c3ff) AM_WRITEONLY AM_BASE(&gunnail_scrollramy)
|
||||
AM_RANGE(0x08c400, 0x08c7ff) AM_WRITEONLY // unknown
|
||||
AM_RANGE(0x090000, 0x093fff) AM_RAM_WRITE(nmk_bgvideoram_w) AM_BASE(&nmk_bgvideoram)
|
||||
AM_RANGE(0x090000, 0x093fff) AM_RAM_WRITE(nmk_bgvideoram0_w) AM_BASE(&nmk_bgvideoram0)
|
||||
AM_RANGE(0x09c000, 0x09cfff) AM_MIRROR(0x001000) AM_RAM_WRITE(nmk_txvideoram_w) AM_BASE(&nmk_txvideoram)
|
||||
AM_RANGE(0x0f0000, 0x0fffff) AM_RAM AM_BASE(&nmk16_mainram)
|
||||
ADDRESS_MAP_END
|
||||
@ -1001,9 +1001,16 @@ static ADDRESS_MAP_START( macross2_map, ADDRESS_SPACE_PROGRAM, 16 )
|
||||
AM_RANGE(0x100018, 0x100019) AM_WRITE(nmk_tilebank_w)
|
||||
AM_RANGE(0x10001e, 0x10001f) AM_WRITE(macross2_sound_command_w) /* to Z80 */
|
||||
AM_RANGE(0x120000, 0x1207ff) AM_RAM_WRITE(paletteram16_RRRRGGGGBBBBRGBx_word_w) AM_BASE(&paletteram16)
|
||||
AM_RANGE(0x130000, 0x130007) AM_RAM_WRITE(nmk_scroll_w)
|
||||
AM_RANGE(0x130008, 0x1307ff) AM_WRITENOP /* 0 only? */
|
||||
AM_RANGE(0x140000, 0x14ffff) AM_RAM_WRITE(nmk_bgvideoram_w) AM_BASE(&nmk_bgvideoram)
|
||||
|
||||
AM_RANGE(0x130000, 0x1301ff) AM_RAM AM_BASE(&gunnail_scrollram)
|
||||
AM_RANGE(0x130200, 0x1303ff) AM_RAM AM_BASE(&gunnail_scrollramy)
|
||||
AM_RANGE(0x130400, 0x1307ff) AM_RAM
|
||||
|
||||
AM_RANGE(0x140000, 0x143fff) AM_RAM_WRITE(nmk_bgvideoram0_w) AM_BASE(&nmk_bgvideoram0)
|
||||
AM_RANGE(0x144000, 0x147fff) AM_RAM_WRITE(nmk_bgvideoram1_w) AM_BASE(&nmk_bgvideoram1)
|
||||
AM_RANGE(0x148000, 0x14bfff) AM_RAM_WRITE(nmk_bgvideoram2_w) AM_BASE(&nmk_bgvideoram2)
|
||||
AM_RANGE(0x14c000, 0x14ffff) AM_RAM_WRITE(nmk_bgvideoram3_w) AM_BASE(&nmk_bgvideoram3)
|
||||
|
||||
AM_RANGE(0x170000, 0x170fff) AM_MIRROR(0x1000) AM_RAM_WRITE(nmk_txvideoram_w) AM_BASE(&nmk_txvideoram)
|
||||
AM_RANGE(0x1f0000, 0x1fffff) AM_RAM AM_BASE(&nmk16_mainram)
|
||||
ADDRESS_MAP_END
|
||||
@ -1020,8 +1027,17 @@ static ADDRESS_MAP_START( raphero_map, ADDRESS_SPACE_PROGRAM, 16 )
|
||||
AM_RANGE(0x100018, 0x100019) AM_WRITE(nmk_tilebank_w)
|
||||
AM_RANGE(0x10001e, 0x10001f) AM_WRITE(macross2_sound_command_w) /* to Z80 */
|
||||
AM_RANGE(0x120000, 0x1207ff) AM_RAM_WRITE(paletteram16_RRRRGGGGBBBBRGBx_word_w) AM_BASE(&paletteram16)
|
||||
AM_RANGE(0x130000, 0x1307ff) AM_RAM_WRITE(nmk_scroll_3_w) AM_BASE(&gunnail_scrollram)
|
||||
AM_RANGE(0x140000, 0x14ffff) AM_RAM_WRITE(nmk_bgvideoram_w) AM_BASE(&nmk_bgvideoram)
|
||||
|
||||
AM_RANGE(0x130000, 0x1301ff) AM_RAM AM_BASE(&gunnail_scrollram)
|
||||
AM_RANGE(0x130200, 0x1303ff) AM_RAM AM_BASE(&gunnail_scrollramy)
|
||||
AM_RANGE(0x130400, 0x1307ff) AM_RAM
|
||||
|
||||
AM_RANGE(0x140000, 0x143fff) AM_RAM_WRITE(nmk_bgvideoram0_w) AM_BASE(&nmk_bgvideoram0)
|
||||
AM_RANGE(0x144000, 0x147fff) AM_RAM_WRITE(nmk_bgvideoram1_w) AM_BASE(&nmk_bgvideoram1)
|
||||
AM_RANGE(0x148000, 0x14bfff) AM_RAM_WRITE(nmk_bgvideoram2_w) AM_BASE(&nmk_bgvideoram2)
|
||||
AM_RANGE(0x14c000, 0x14ffff) AM_RAM_WRITE(nmk_bgvideoram3_w) AM_BASE(&nmk_bgvideoram3)
|
||||
|
||||
|
||||
AM_RANGE(0x170000, 0x170fff) AM_MIRROR(0x1000) AM_RAM_WRITE(nmk_txvideoram_w) AM_BASE(&nmk_txvideoram)
|
||||
AM_RANGE(0x1f0000, 0x1fffff) AM_RAM AM_BASE(&nmk16_mainram)
|
||||
ADDRESS_MAP_END
|
||||
@ -1089,7 +1105,7 @@ static ADDRESS_MAP_START( bjtwin_map, ADDRESS_SPACE_PROGRAM, 16 )
|
||||
AM_RANGE(0x088000, 0x0887ff) AM_RAM_WRITE(paletteram16_RRRRGGGGBBBBRGBx_word_w) AM_BASE(&paletteram16)
|
||||
AM_RANGE(0x094000, 0x094001) AM_WRITE(nmk_tilebank_w)
|
||||
AM_RANGE(0x094002, 0x094003) AM_WRITENOP /* IRQ enable? */
|
||||
AM_RANGE(0x09c000, 0x09cfff) AM_MIRROR(0x1000) AM_RAM_WRITE(nmk_bgvideoram_w) AM_BASE(&nmk_bgvideoram)
|
||||
AM_RANGE(0x09c000, 0x09cfff) AM_MIRROR(0x1000) AM_RAM_WRITE(nmk_bgvideoram0_w) AM_BASE(&nmk_bgvideoram0)
|
||||
AM_RANGE(0x0f0000, 0x0fffff) AM_RAM AM_BASE(&nmk16_mainram)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
@ -3716,7 +3732,7 @@ static MACHINE_DRIVER_START( bioship )
|
||||
MDRV_CPU_ADD("maincpu", M68000, BIOSHIP_CRYSTAL1 ) /* 10.0 MHz (verified) */
|
||||
MDRV_CPU_PROGRAM_MAP(bioship_map)
|
||||
MDRV_CPU_VBLANK_INT_HACK(nmk_interrupt,2)
|
||||
MDRV_CPU_PERIODIC_INT(irq1_line_hold,112)/* ???????? */
|
||||
MDRV_CPU_PERIODIC_INT(irq1_line_hold,100)/* 112 breaks the title screen */
|
||||
|
||||
MDRV_MACHINE_RESET(NMK004)
|
||||
|
||||
@ -4247,7 +4263,7 @@ static MACHINE_DRIVER_START( macross2 )
|
||||
|
||||
MDRV_VIDEO_START(macross2)
|
||||
MDRV_VIDEO_EOF(nmk)
|
||||
MDRV_VIDEO_UPDATE(macross)
|
||||
MDRV_VIDEO_UPDATE(gunnail)
|
||||
|
||||
/* sound hardware */
|
||||
MDRV_SPEAKER_STANDARD_MONO("mono")
|
||||
@ -4290,9 +4306,9 @@ static MACHINE_DRIVER_START( tdragon2 )
|
||||
MDRV_GFXDECODE(macross2)
|
||||
MDRV_PALETTE_LENGTH(1024)
|
||||
|
||||
MDRV_VIDEO_START(tdragon2)
|
||||
MDRV_VIDEO_START(macross2)
|
||||
MDRV_VIDEO_EOF(nmk)
|
||||
MDRV_VIDEO_UPDATE(macross)
|
||||
MDRV_VIDEO_UPDATE(gunnail)
|
||||
|
||||
/* sound hardware */
|
||||
MDRV_SPEAKER_STANDARD_MONO("mono")
|
||||
@ -4334,9 +4350,9 @@ static MACHINE_DRIVER_START( raphero )
|
||||
MDRV_GFXDECODE(macross2)
|
||||
MDRV_PALETTE_LENGTH(1024)
|
||||
|
||||
MDRV_VIDEO_START(macross2)
|
||||
MDRV_VIDEO_START(raphero)
|
||||
MDRV_VIDEO_EOF(nmk)
|
||||
MDRV_VIDEO_UPDATE(macross)
|
||||
MDRV_VIDEO_UPDATE(gunnail)
|
||||
|
||||
/* sound hardware */
|
||||
MDRV_SPEAKER_STANDARD_MONO("mono")
|
||||
@ -4687,8 +4703,8 @@ static ADDRESS_MAP_START( afega, ADDRESS_SPACE_PROGRAM, 16 )
|
||||
/**/AM_RANGE(0x08c000, 0x08c003) AM_RAM_WRITE(afega_scroll0_w) AM_BASE(&afega_scroll_0) // Scroll
|
||||
/**/AM_RANGE(0x08c004, 0x08c007) AM_RAM_WRITE(afega_scroll1_w) AM_BASE(&afega_scroll_1) //
|
||||
AM_RANGE(0x08c008, 0x08ffff) AM_WRITE(SMH_RAM) //
|
||||
/**/AM_RANGE(0x090000, 0x093fff) AM_RAM_WRITE(afega_vram_0_w) AM_BASE(&afega_vram_0) // Layer 0 // ?
|
||||
/**/AM_RANGE(0x09c000, 0x09c7ff) AM_RAM_WRITE(afega_vram_1_w) AM_BASE(&afega_vram_1) // Layer 1
|
||||
/**/AM_RANGE(0x090000, 0x093fff) AM_RAM_WRITE(nmk_bgvideoram0_w) AM_BASE(&nmk_bgvideoram0) // Layer 0 // ?
|
||||
/**/AM_RANGE(0x09c000, 0x09c7ff) AM_RAM_WRITE(nmk_txvideoram_w) AM_BASE(&nmk_txvideoram) // Layer 1
|
||||
|
||||
AM_RANGE(0x0c0000, 0x0cffff) AM_RAM_WRITE(nmk16_mainram_strange_w) AM_SHARE(1) AM_BASE(&nmk16_mainram)
|
||||
AM_RANGE(0x0f0000, 0x0fffff) AM_RAM_WRITE(nmk16_mainram_strange_w) AM_SHARE(1)
|
||||
@ -4830,20 +4846,20 @@ static const gfx_layout layout_16x16x4_swapped =
|
||||
};
|
||||
|
||||
static GFXDECODE_START( grdnstrm )
|
||||
GFXDECODE_ENTRY( "gfx2", 0, layout_16x16x8, 256*0, 1 ) // [1] Layer 0
|
||||
GFXDECODE_ENTRY( "gfx3", 0, layout_8x8x4, 256*2, 16 ) // [2] Layer 1
|
||||
GFXDECODE_ENTRY( "gfx2", 0, layout_16x16x8, 256*0, 1 ) // [1] Layer 0
|
||||
GFXDECODE_ENTRY( "gfx1", 0, layout_16x16x4, 256*1, 16 ) // [0] Sprites
|
||||
GFXDECODE_END
|
||||
|
||||
static GFXDECODE_START( stagger1 )
|
||||
GFXDECODE_ENTRY( "gfx2", 0, layout_16x16x4, 256*0, 16 ) // [1] Layer 0
|
||||
GFXDECODE_ENTRY( "gfx3", 0, layout_8x8x4, 256*2, 16 ) // [2] Layer 1
|
||||
GFXDECODE_ENTRY( "gfx2", 0, layout_16x16x4, 256*0, 16 ) // [1] Layer 0
|
||||
GFXDECODE_ENTRY( "gfx1", 0, layout_16x16x4, 256*1, 16 ) // [0] Sprites
|
||||
GFXDECODE_END
|
||||
|
||||
static GFXDECODE_START( redhawkb )
|
||||
GFXDECODE_ENTRY( "gfx2", 0, layout_16x16x4_swapped, 256*0, 16 ) // [1] Layer 0
|
||||
GFXDECODE_ENTRY( "gfx3", 0, layout_8x8x4, 256*2, 16 ) // [2] Layer 1
|
||||
GFXDECODE_ENTRY( "gfx2", 0, layout_16x16x4_swapped, 256*0, 16 ) // [1] Layer 0
|
||||
GFXDECODE_ENTRY( "gfx1", 0, layout_16x16x4_swapped, 256*1, 16 ) // [0] Sprites
|
||||
GFXDECODE_END
|
||||
|
||||
@ -4938,9 +4954,6 @@ static MACHINE_DRIVER_START( grdnstrmk )
|
||||
/* basic machine hardware */
|
||||
MDRV_IMPORT_FROM(stagger1)
|
||||
|
||||
MDRV_CPU_MODIFY("maincpu")
|
||||
MDRV_CPU_VBLANK_INT_HACK(nmk_interrupt,2)
|
||||
|
||||
/* video hardware */
|
||||
MDRV_GFXDECODE(grdnstrm)
|
||||
MDRV_VIDEO_START(grdnstrm)
|
||||
|
@ -1,12 +1,21 @@
|
||||
/*----------- defined in video/nmk16.c -----------*/
|
||||
|
||||
extern UINT16 *nmk_bgvideoram,*nmk_fgvideoram,*nmk_txvideoram;
|
||||
extern UINT16 *nmk_bgvideoram0;
|
||||
extern UINT16 *nmk_bgvideoram1;
|
||||
extern UINT16 *nmk_bgvideoram2;
|
||||
extern UINT16 *nmk_bgvideoram3;
|
||||
|
||||
extern UINT16 *nmk_fgvideoram,*nmk_txvideoram;
|
||||
extern UINT16 *gunnail_scrollram, *gunnail_scrollramy;
|
||||
extern UINT16 *afega_vram_0, *afega_scroll_0;
|
||||
extern UINT16 *afega_vram_1, *afega_scroll_1;
|
||||
extern UINT16 *nmk_bgvideoram0, *afega_scroll_0;
|
||||
extern UINT16 *nmk_txvideoram, *afega_scroll_1;
|
||||
|
||||
|
||||
WRITE16_HANDLER( nmk_bgvideoram_w );
|
||||
WRITE16_HANDLER( nmk_bgvideoram0_w );
|
||||
WRITE16_HANDLER( nmk_bgvideoram1_w );
|
||||
WRITE16_HANDLER( nmk_bgvideoram2_w );
|
||||
WRITE16_HANDLER( nmk_bgvideoram3_w );
|
||||
|
||||
WRITE16_HANDLER( nmk_fgvideoram_w );
|
||||
WRITE16_HANDLER( nmk_txvideoram_w );
|
||||
WRITE16_HANDLER( nmk_scroll_w );
|
||||
@ -25,7 +34,7 @@ VIDEO_START( macross );
|
||||
VIDEO_UPDATE( manybloc );
|
||||
VIDEO_START( gunnail );
|
||||
VIDEO_START( macross2 );
|
||||
VIDEO_START( tdragon2 );
|
||||
VIDEO_START( raphero );
|
||||
VIDEO_START( bjtwin );
|
||||
VIDEO_START( bioship );
|
||||
VIDEO_START( strahl );
|
||||
@ -40,9 +49,6 @@ VIDEO_UPDATE( tdragon );
|
||||
VIDEO_EOF( nmk );
|
||||
VIDEO_EOF( strahl );
|
||||
|
||||
WRITE16_HANDLER( afega_vram_0_w );
|
||||
WRITE16_HANDLER( afega_vram_1_w );
|
||||
|
||||
VIDEO_START( afega );
|
||||
VIDEO_START( grdnstrm );
|
||||
VIDEO_START( firehawk );
|
||||
|
@ -10,8 +10,21 @@
|
||||
#include "driver.h"
|
||||
#include "includes/nmk16.h"
|
||||
|
||||
UINT16 *nmk_bgvideoram,*nmk_fgvideoram,*nmk_txvideoram;
|
||||
// the larger tilemaps on macross2, rapid hero and thunder dragon 2 appear to act like 4 'banks'
|
||||
// of the smaller tilemaps, rather than being able to scroll into each other (not verified on real hw,
|
||||
// but see raphero intro / 1st level cases)
|
||||
UINT16 *nmk_bgvideoram0;
|
||||
UINT16 *nmk_bgvideoram1;
|
||||
UINT16 *nmk_bgvideoram2;
|
||||
UINT16 *nmk_bgvideoram3;
|
||||
|
||||
static int nmk16_simple_scroll = 1;
|
||||
|
||||
UINT16 *nmk_fgvideoram,*nmk_txvideoram;
|
||||
UINT16 *gunnail_scrollram, *gunnail_scrollramy;
|
||||
UINT16 *afega_scroll_0;
|
||||
UINT16 *afega_scroll_1;
|
||||
|
||||
|
||||
static int redraw_bitmap;
|
||||
|
||||
@ -21,8 +34,16 @@ static int videoshift;
|
||||
static int bioship_background_bank;
|
||||
static UINT8 bioship_scroll[4];
|
||||
|
||||
static tilemap *bg_tilemap,*fg_tilemap,*tx_tilemap;
|
||||
static bitmap_t *background_bitmap;
|
||||
static tilemap *bg_tilemap0;
|
||||
static tilemap *bg_tilemap1;
|
||||
static tilemap *bg_tilemap2;
|
||||
static tilemap *bg_tilemap3;
|
||||
|
||||
static tilemap *tx_tilemap;
|
||||
|
||||
static tilemap *fg_tilemap; // strahl
|
||||
static bitmap_t *background_bitmap; // bioship
|
||||
|
||||
extern UINT16* nmk16_mainram;
|
||||
|
||||
/***************************************************************************
|
||||
@ -31,33 +52,26 @@ extern UINT16* nmk16_mainram;
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
//not 100% right yet (check attract mode in raphero)
|
||||
static TILEMAP_MAPPER( bg_scan )
|
||||
#define TILES_PER_PAGE_X (0x10)
|
||||
#define TILES_PER_PAGE_Y (0x10)
|
||||
#define PAGES_PER_TMAP_X (0x10)
|
||||
#define PAGES_PER_TMAP_Y (0x02)
|
||||
|
||||
static TILEMAP_MAPPER( afega_tilemap_scan_pages )
|
||||
{
|
||||
/* logical (col,row) -> memory offset */
|
||||
return (row / TILES_PER_PAGE_Y) * TILES_PER_PAGE_X * TILES_PER_PAGE_Y * PAGES_PER_TMAP_X +
|
||||
(row % TILES_PER_PAGE_Y) +
|
||||
|
||||
col = (col & 0xff) | ((col & 0x300)<<1);
|
||||
|
||||
return (row & 0x0f) + ((col & 0x6ff) << 4) + ((row & 0x70) << 8);
|
||||
(col / TILES_PER_PAGE_X) * TILES_PER_PAGE_X * TILES_PER_PAGE_Y +
|
||||
(col % TILES_PER_PAGE_X) * TILES_PER_PAGE_Y;
|
||||
}
|
||||
|
||||
static TILEMAP_MAPPER( bg_scan_td2 )
|
||||
{
|
||||
/* logical (col,row) -> memory offset */
|
||||
return (row & 0x0f) + ((col & 0x3ff) << 4) + ((row & 0x70) << 10);
|
||||
}
|
||||
static TILE_GET_INFO( macross_get_bg0_tile_info ) { int code = nmk_bgvideoram0[tile_index]; SET_TILE_INFO(1,(code & 0xfff) + (bgbank << 12),code >> 12,0);}
|
||||
static TILE_GET_INFO( macross_get_bg1_tile_info ) { int code = nmk_bgvideoram1[tile_index]; SET_TILE_INFO(1,(code & 0xfff) + (bgbank << 12),code >> 12,0);}
|
||||
static TILE_GET_INFO( macross_get_bg2_tile_info ) { int code = nmk_bgvideoram2[tile_index]; SET_TILE_INFO(1,(code & 0xfff) + (bgbank << 12),code >> 12,0);}
|
||||
static TILE_GET_INFO( macross_get_bg3_tile_info ) { int code = nmk_bgvideoram3[tile_index]; SET_TILE_INFO(1,(code & 0xfff) + (bgbank << 12),code >> 12,0);}
|
||||
|
||||
|
||||
static TILE_GET_INFO( macross_get_bg_tile_info )
|
||||
{
|
||||
int code = nmk_bgvideoram[tile_index];
|
||||
SET_TILE_INFO(
|
||||
1,
|
||||
(code & 0xfff) + (bgbank << 12),
|
||||
code >> 12,
|
||||
0);
|
||||
}
|
||||
|
||||
static TILE_GET_INFO( strahl_get_fg_tile_info )
|
||||
{
|
||||
int code = nmk_fgvideoram[tile_index];
|
||||
@ -80,7 +94,7 @@ static TILE_GET_INFO( macross_get_tx_tile_info )
|
||||
|
||||
static TILE_GET_INFO( bjtwin_get_bg_tile_info )
|
||||
{
|
||||
int code = nmk_bgvideoram[tile_index];
|
||||
int code = nmk_bgvideoram0[tile_index];
|
||||
int bank = (code & 0x800) ? 1 : 0;
|
||||
SET_TILE_INFO(
|
||||
bank,
|
||||
@ -89,6 +103,15 @@ static TILE_GET_INFO( bjtwin_get_bg_tile_info )
|
||||
0);
|
||||
}
|
||||
|
||||
static TILE_GET_INFO( get_tile_info_0_8bit )
|
||||
{
|
||||
UINT16 code = nmk_bgvideoram0[tile_index];
|
||||
SET_TILE_INFO(
|
||||
1,
|
||||
code,
|
||||
0,
|
||||
0);
|
||||
}
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
@ -99,13 +122,13 @@ static TILE_GET_INFO( bjtwin_get_bg_tile_info )
|
||||
|
||||
VIDEO_START( bioship )
|
||||
{
|
||||
bg_tilemap = tilemap_create(machine, macross_get_bg_tile_info,bg_scan,16,16,256,32);
|
||||
bg_tilemap0 = tilemap_create(machine, macross_get_bg0_tile_info, afega_tilemap_scan_pages,16,16,TILES_PER_PAGE_X*PAGES_PER_TMAP_X,TILES_PER_PAGE_Y*PAGES_PER_TMAP_Y);
|
||||
tx_tilemap = tilemap_create(machine, macross_get_tx_tile_info,tilemap_scan_cols,8,8,32,32);
|
||||
spriteram_old = auto_alloc_array_clear(machine, UINT16, 0x1000/2);
|
||||
spriteram_old2 = auto_alloc_array_clear(machine, UINT16, 0x1000/2);
|
||||
background_bitmap = auto_bitmap_alloc(machine,8192,512,video_screen_get_format(machine->primary_screen));
|
||||
|
||||
tilemap_set_transparent_pen(bg_tilemap,15);
|
||||
tilemap_set_transparent_pen(bg_tilemap0,15);
|
||||
tilemap_set_transparent_pen(tx_tilemap,15);
|
||||
bioship_background_bank=0;
|
||||
redraw_bitmap = 1;
|
||||
@ -115,8 +138,8 @@ VIDEO_START( bioship )
|
||||
|
||||
VIDEO_START( strahl )
|
||||
{
|
||||
bg_tilemap = tilemap_create(machine, macross_get_bg_tile_info,bg_scan,16,16,256,32);
|
||||
fg_tilemap = tilemap_create(machine, strahl_get_fg_tile_info, bg_scan,16,16,256,32);
|
||||
bg_tilemap0 = tilemap_create(machine, macross_get_bg0_tile_info, afega_tilemap_scan_pages,16,16,TILES_PER_PAGE_X*PAGES_PER_TMAP_X,TILES_PER_PAGE_Y*PAGES_PER_TMAP_Y);
|
||||
fg_tilemap = tilemap_create(machine, strahl_get_fg_tile_info, afega_tilemap_scan_pages,16,16,TILES_PER_PAGE_X*PAGES_PER_TMAP_X,TILES_PER_PAGE_Y*PAGES_PER_TMAP_Y);
|
||||
tx_tilemap = tilemap_create(machine, macross_get_tx_tile_info,tilemap_scan_cols,8,8,32,32);
|
||||
spriteram_old = auto_alloc_array_clear(machine, UINT16, 0x1000/2);
|
||||
spriteram_old2 = auto_alloc_array_clear(machine, UINT16, 0x1000/2);
|
||||
@ -130,7 +153,7 @@ VIDEO_START( strahl )
|
||||
|
||||
VIDEO_START( macross )
|
||||
{
|
||||
bg_tilemap = tilemap_create(machine, macross_get_bg_tile_info,bg_scan,16,16,256,32);
|
||||
bg_tilemap0 = tilemap_create(machine, macross_get_bg0_tile_info, afega_tilemap_scan_pages,16,16,TILES_PER_PAGE_X*PAGES_PER_TMAP_X,TILES_PER_PAGE_Y*PAGES_PER_TMAP_Y);
|
||||
tx_tilemap = tilemap_create(machine, macross_get_tx_tile_info,tilemap_scan_cols,8,8,32,32);
|
||||
spriteram_old = auto_alloc_array_clear(machine, UINT16, 0x1000/2);
|
||||
spriteram_old2 = auto_alloc_array_clear(machine, UINT16, 0x1000/2);
|
||||
@ -143,22 +166,28 @@ VIDEO_START( macross )
|
||||
|
||||
VIDEO_START( gunnail )
|
||||
{
|
||||
bg_tilemap = tilemap_create(machine, macross_get_bg_tile_info,bg_scan,16,16,256,32);
|
||||
bg_tilemap0 = tilemap_create(machine, macross_get_bg0_tile_info, afega_tilemap_scan_pages,16,16,TILES_PER_PAGE_X*PAGES_PER_TMAP_X,TILES_PER_PAGE_Y*PAGES_PER_TMAP_Y);
|
||||
tx_tilemap = tilemap_create(machine, macross_get_tx_tile_info,tilemap_scan_cols,8,8,64,32);
|
||||
spriteram_old = auto_alloc_array_clear(machine, UINT16, 0x1000/2);
|
||||
spriteram_old2 = auto_alloc_array_clear(machine, UINT16, 0x1000/2);
|
||||
|
||||
tilemap_set_transparent_pen(tx_tilemap,15);
|
||||
tilemap_set_scroll_rows(bg_tilemap,512);
|
||||
tilemap_set_scroll_rows(bg_tilemap0,512);
|
||||
|
||||
videoshift = 64; /* 384x224 screen, leftmost 64 pixels have to be retrieved */
|
||||
/* from the other side of the tilemap (!) */
|
||||
background_bitmap = NULL;
|
||||
|
||||
nmk16_simple_scroll = 0;
|
||||
}
|
||||
|
||||
VIDEO_START( macross2 )
|
||||
{
|
||||
bg_tilemap = tilemap_create(machine, macross_get_bg_tile_info,bg_scan,16,16,1024,128);
|
||||
bg_tilemap0 = tilemap_create(machine, macross_get_bg0_tile_info, afega_tilemap_scan_pages,16,16,TILES_PER_PAGE_X*PAGES_PER_TMAP_X,TILES_PER_PAGE_Y*PAGES_PER_TMAP_Y);
|
||||
bg_tilemap1 = tilemap_create(machine, macross_get_bg1_tile_info, afega_tilemap_scan_pages,16,16,TILES_PER_PAGE_X*PAGES_PER_TMAP_X,TILES_PER_PAGE_Y*PAGES_PER_TMAP_Y);
|
||||
bg_tilemap2 = tilemap_create(machine, macross_get_bg2_tile_info, afega_tilemap_scan_pages,16,16,TILES_PER_PAGE_X*PAGES_PER_TMAP_X,TILES_PER_PAGE_Y*PAGES_PER_TMAP_Y);
|
||||
bg_tilemap3 = tilemap_create(machine, macross_get_bg3_tile_info, afega_tilemap_scan_pages,16,16,TILES_PER_PAGE_X*PAGES_PER_TMAP_X,TILES_PER_PAGE_Y*PAGES_PER_TMAP_Y);
|
||||
|
||||
tx_tilemap = tilemap_create(machine, macross_get_tx_tile_info,tilemap_scan_cols,8,8,64,32);
|
||||
spriteram_old = auto_alloc_array_clear(machine, UINT16, 0x1000/2);
|
||||
spriteram_old2 = auto_alloc_array_clear(machine, UINT16, 0x1000/2);
|
||||
@ -168,25 +197,20 @@ VIDEO_START( macross2 )
|
||||
videoshift = 64; /* 384x224 screen, leftmost 64 pixels have to be retrieved */
|
||||
/* from the other side of the tilemap (!) */
|
||||
background_bitmap = NULL;
|
||||
|
||||
nmk16_simple_scroll = 1;
|
||||
}
|
||||
|
||||
VIDEO_START( tdragon2 )
|
||||
VIDEO_START( raphero )
|
||||
{
|
||||
bg_tilemap = tilemap_create(machine, macross_get_bg_tile_info,bg_scan_td2,16,16,1024,32);
|
||||
tx_tilemap = tilemap_create(machine, macross_get_tx_tile_info,tilemap_scan_cols,8,8,64,32);
|
||||
spriteram_old = auto_alloc_array_clear(machine, UINT16, 0x1000/2);
|
||||
spriteram_old2 = auto_alloc_array_clear(machine, UINT16, 0x1000/2);
|
||||
|
||||
tilemap_set_transparent_pen(tx_tilemap,15);
|
||||
|
||||
videoshift = 64; /* 384x224 screen, leftmost 64 pixels have to be retrieved */
|
||||
/* from the other side of the tilemap (!) */
|
||||
background_bitmap = NULL;
|
||||
VIDEO_START_CALL( macross2 );
|
||||
nmk16_simple_scroll = 0;
|
||||
}
|
||||
|
||||
VIDEO_START( bjtwin )
|
||||
{
|
||||
bg_tilemap = tilemap_create(machine, bjtwin_get_bg_tile_info,tilemap_scan_cols,8,8,64,32);
|
||||
bg_tilemap0 = tilemap_create(machine, bjtwin_get_bg_tile_info,tilemap_scan_cols,8,8,64,32);
|
||||
|
||||
spriteram_old = auto_alloc_array_clear(machine, UINT16, 0x1000/2);
|
||||
spriteram_old2 = auto_alloc_array_clear(machine, UINT16, 0x1000/2);
|
||||
|
||||
@ -203,11 +227,11 @@ VIDEO_START( bjtwin )
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
WRITE16_HANDLER( nmk_bgvideoram_w )
|
||||
{
|
||||
COMBINE_DATA(&nmk_bgvideoram[offset]);
|
||||
tilemap_mark_tile_dirty(bg_tilemap,offset);
|
||||
}
|
||||
WRITE16_HANDLER( nmk_bgvideoram0_w ) { COMBINE_DATA(&nmk_bgvideoram0[offset]); tilemap_mark_tile_dirty(bg_tilemap0,offset); }
|
||||
WRITE16_HANDLER( nmk_bgvideoram1_w ) { COMBINE_DATA(&nmk_bgvideoram1[offset]); tilemap_mark_tile_dirty(bg_tilemap1,offset); }
|
||||
WRITE16_HANDLER( nmk_bgvideoram2_w ) { COMBINE_DATA(&nmk_bgvideoram2[offset]); tilemap_mark_tile_dirty(bg_tilemap2,offset); }
|
||||
WRITE16_HANDLER( nmk_bgvideoram3_w ) { COMBINE_DATA(&nmk_bgvideoram3[offset]); tilemap_mark_tile_dirty(bg_tilemap3,offset); }
|
||||
|
||||
|
||||
WRITE16_HANDLER( nmk_fgvideoram_w )
|
||||
{
|
||||
@ -247,7 +271,7 @@ WRITE16_HANDLER( mustang_scroll_w )
|
||||
break;
|
||||
}
|
||||
|
||||
tilemap_set_scrollx(bg_tilemap,0,mustang_bg_xscroll - videoshift);
|
||||
tilemap_set_scrollx(bg_tilemap0,0,mustang_bg_xscroll - videoshift);
|
||||
}
|
||||
|
||||
WRITE16_HANDLER( bioshipbg_scroll_w )
|
||||
@ -259,9 +283,9 @@ WRITE16_HANDLER( bioshipbg_scroll_w )
|
||||
scroll[offset] = (data >> 8) & 0xff;
|
||||
|
||||
if (offset & 2)
|
||||
tilemap_set_scrolly(bg_tilemap,0,scroll[2] * 256 + scroll[3]);
|
||||
tilemap_set_scrolly(bg_tilemap0,0,scroll[2] * 256 + scroll[3]);
|
||||
else
|
||||
tilemap_set_scrollx(bg_tilemap,0,scroll[0] * 256 + scroll[1] - videoshift);
|
||||
tilemap_set_scrollx(bg_tilemap0,0,scroll[0] * 256 + scroll[1] - videoshift);
|
||||
}
|
||||
}
|
||||
|
||||
@ -274,9 +298,9 @@ WRITE16_HANDLER( nmk_scroll_w )
|
||||
scroll[offset] = data & 0xff;
|
||||
|
||||
if (offset & 2)
|
||||
tilemap_set_scrolly(bg_tilemap,0,scroll[2] * 256 + scroll[3]);
|
||||
tilemap_set_scrolly(bg_tilemap0,0,scroll[2] * 256 + scroll[3]);
|
||||
else
|
||||
tilemap_set_scrollx(bg_tilemap,0,scroll[0] * 256 + scroll[1] - videoshift);
|
||||
tilemap_set_scrollx(bg_tilemap0,0,scroll[0] * 256 + scroll[1] - videoshift);
|
||||
}
|
||||
}
|
||||
|
||||
@ -295,33 +319,22 @@ WRITE16_HANDLER( nmk_scroll_2_w )
|
||||
}
|
||||
}
|
||||
|
||||
WRITE16_HANDLER( nmk_scroll_3_w )
|
||||
{
|
||||
COMBINE_DATA(&gunnail_scrollram[offset]);
|
||||
|
||||
// popmessage( "scroll %04x, %04x", gunnail_scrollram[0], gunnail_scrollram[0x100]);
|
||||
|
||||
tilemap_set_scrollx(bg_tilemap,0,gunnail_scrollram[0]-videoshift);
|
||||
tilemap_set_scrolly(bg_tilemap,0,gunnail_scrollram[0x100]);
|
||||
}
|
||||
|
||||
|
||||
WRITE16_HANDLER( vandyke_scroll_w )
|
||||
{
|
||||
static UINT16 scroll[4];
|
||||
|
||||
scroll[offset] = data;
|
||||
|
||||
tilemap_set_scrollx(bg_tilemap,0,scroll[0] * 256 + (scroll[1] >> 8));
|
||||
tilemap_set_scrolly(bg_tilemap,0,scroll[2] * 256 + (scroll[3] >> 8));
|
||||
tilemap_set_scrollx(bg_tilemap0,0,scroll[0] * 256 + (scroll[1] >> 8));
|
||||
tilemap_set_scrolly(bg_tilemap0,0,scroll[2] * 256 + (scroll[3] >> 8));
|
||||
}
|
||||
|
||||
WRITE16_HANDLER( manybloc_scroll_w )
|
||||
{
|
||||
COMBINE_DATA(&gunnail_scrollram[offset]);
|
||||
|
||||
tilemap_set_scrollx(bg_tilemap,0,gunnail_scrollram[0x82/2]-videoshift);
|
||||
tilemap_set_scrolly(bg_tilemap,0,gunnail_scrollram[0xc2/2]);
|
||||
tilemap_set_scrollx(bg_tilemap0,0,gunnail_scrollram[0x82/2]-videoshift);
|
||||
tilemap_set_scrolly(bg_tilemap0,0,gunnail_scrollram[0xc2/2]);
|
||||
}
|
||||
|
||||
WRITE16_HANDLER( nmk_flipscreen_w )
|
||||
@ -337,7 +350,7 @@ WRITE16_HANDLER( nmk_tilebank_w )
|
||||
if (bgbank != (data & 0xff))
|
||||
{
|
||||
bgbank = data & 0xff;
|
||||
tilemap_mark_all_tiles_dirty(bg_tilemap);
|
||||
tilemap_mark_all_tiles_dirty(bg_tilemap0);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -487,7 +500,7 @@ VIDEO_UPDATE( macross )
|
||||
{
|
||||
tilemap_set_scrollx(tx_tilemap,0,-videoshift);
|
||||
|
||||
tilemap_draw(bitmap,cliprect,bg_tilemap,0,0);
|
||||
tilemap_draw(bitmap,cliprect,bg_tilemap0,0,0);
|
||||
|
||||
nmk16_draw_sprites(screen->machine, bitmap,cliprect,3);
|
||||
nmk16_draw_sprites(screen->machine, bitmap,cliprect,2);
|
||||
@ -504,7 +517,7 @@ VIDEO_UPDATE( tdragon )
|
||||
|
||||
tilemap_set_scrollx(tx_tilemap,0,-videoshift);
|
||||
|
||||
tilemap_draw(bitmap,cliprect,bg_tilemap,0,0);
|
||||
tilemap_draw(bitmap,cliprect,bg_tilemap0,0,0);
|
||||
|
||||
nmk16_draw_sprites(screen->machine, bitmap,cliprect,3);
|
||||
nmk16_draw_sprites(screen->machine, bitmap,cliprect,2);
|
||||
@ -521,7 +534,7 @@ VIDEO_UPDATE( hachamf )
|
||||
|
||||
tilemap_set_scrollx(tx_tilemap,0,-videoshift);
|
||||
|
||||
tilemap_draw(bitmap,cliprect,bg_tilemap,0,0);
|
||||
tilemap_draw(bitmap,cliprect,bg_tilemap0,0,0);
|
||||
|
||||
nmk16_draw_sprites(screen->machine, bitmap,cliprect,3);
|
||||
nmk16_draw_sprites(screen->machine, bitmap,cliprect,2);
|
||||
@ -536,7 +549,7 @@ VIDEO_UPDATE( manybloc )
|
||||
{
|
||||
tilemap_set_scrollx(tx_tilemap,0,-videoshift);
|
||||
|
||||
tilemap_draw(bitmap,cliprect,bg_tilemap,0,0);
|
||||
tilemap_draw(bitmap,cliprect,bg_tilemap0,0,0);
|
||||
|
||||
nmk16_draw_sprites_flipsupported(screen->machine, bitmap,cliprect,3);
|
||||
nmk16_draw_sprites_flipsupported(screen->machine, bitmap,cliprect,2);
|
||||
@ -553,8 +566,8 @@ VIDEO_UPDATE( tharrier )
|
||||
UINT16 tharrier_scroll = nmk16_mainram[0x9f00/2];
|
||||
|
||||
tilemap_set_scrollx(tx_tilemap,0,-videoshift);
|
||||
tilemap_set_scrollx(bg_tilemap,0,tharrier_scroll);
|
||||
tilemap_draw(bitmap,cliprect,bg_tilemap,0,0);
|
||||
tilemap_set_scrollx(bg_tilemap0,0,tharrier_scroll);
|
||||
tilemap_draw(bitmap,cliprect,bg_tilemap0,0,0);
|
||||
|
||||
nmk16_draw_sprites_flipsupported(screen->machine, bitmap,cliprect,3);
|
||||
nmk16_draw_sprites_flipsupported(screen->machine, bitmap,cliprect,2);
|
||||
@ -567,32 +580,70 @@ VIDEO_UPDATE( tharrier )
|
||||
|
||||
VIDEO_UPDATE( gunnail )
|
||||
{
|
||||
int y1, i;
|
||||
int y1;
|
||||
int i=16;
|
||||
rectangle bgclip = *cliprect;
|
||||
|
||||
// the hardware supports per-scanline X *and* Y scroll which isn't
|
||||
// supported by tilemaps so we have to draw the tilemap one line at a time
|
||||
y1 = cliprect->min_y;
|
||||
|
||||
if (!nmk16_simple_scroll)
|
||||
{
|
||||
while (y1 <= cliprect->max_y)
|
||||
{
|
||||
int const yscroll = gunnail_scrollramy[0] + gunnail_scrollramy[y1];
|
||||
int y2;
|
||||
|
||||
// group all consecutive lines with the same y scroll to reduce overhead
|
||||
y2 = y1+1;
|
||||
while (y2 <= cliprect->max_y && gunnail_scrollramy[y2] == gunnail_scrollramy[y1])
|
||||
y2++;
|
||||
int tilemap_bank_select;
|
||||
tilemap* bg_tilemap = bg_tilemap0;
|
||||
|
||||
bgclip.min_y = y1;
|
||||
bgclip.max_y = y2-1;
|
||||
bgclip.max_y = y1;
|
||||
|
||||
|
||||
tilemap_bank_select = (gunnail_scrollram[0]&0x3000)>>12;
|
||||
switch (tilemap_bank_select)
|
||||
{
|
||||
case 0: if (bg_tilemap0) bg_tilemap = bg_tilemap0; break;
|
||||
case 1: if (bg_tilemap1) bg_tilemap = bg_tilemap1; break;
|
||||
case 2: if (bg_tilemap2) bg_tilemap = bg_tilemap2; break;
|
||||
case 3: if (bg_tilemap3) bg_tilemap = bg_tilemap3; break;
|
||||
}
|
||||
|
||||
tilemap_set_scroll_rows(bg_tilemap,512);
|
||||
|
||||
tilemap_set_scrolly(bg_tilemap, 0, yscroll);
|
||||
for (i = y1; i < y2; i++)
|
||||
tilemap_set_scrollx(bg_tilemap,(i + yscroll) & 0x1ff, gunnail_scrollram[0] + gunnail_scrollram[i] - videoshift);
|
||||
|
||||
tilemap_draw(bitmap,&bgclip,bg_tilemap,0,0);
|
||||
|
||||
y1 = y2;
|
||||
y1++;
|
||||
i++;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
UINT16 yscroll = ((gunnail_scrollram[2]&0xff)<<8) | ((gunnail_scrollram[3]&0xff)<<0);
|
||||
UINT16 xscroll = ((gunnail_scrollram[0]&0xff)<<8) | ((gunnail_scrollram[1]&0xff)<<0);
|
||||
int tilemap_bank_select;
|
||||
tilemap* bg_tilemap = bg_tilemap0;
|
||||
|
||||
//popmessage( "scroll %04x, %04x", yscroll,xscroll);
|
||||
|
||||
tilemap_bank_select = (xscroll&0x3000)>>12;
|
||||
switch (tilemap_bank_select)
|
||||
{
|
||||
case 0: if (bg_tilemap0) bg_tilemap = bg_tilemap0; break;
|
||||
case 1: if (bg_tilemap1) bg_tilemap = bg_tilemap1; break;
|
||||
case 2: if (bg_tilemap2) bg_tilemap = bg_tilemap2; break;
|
||||
case 3: if (bg_tilemap3) bg_tilemap = bg_tilemap3; break;
|
||||
}
|
||||
|
||||
tilemap_set_scroll_rows(bg_tilemap,1);
|
||||
|
||||
tilemap_set_scrolly(bg_tilemap, 0, yscroll);
|
||||
tilemap_set_scrollx(bg_tilemap, 0, xscroll - videoshift);
|
||||
|
||||
tilemap_draw(bitmap,cliprect,bg_tilemap,0,0);
|
||||
}
|
||||
|
||||
nmk16_draw_sprites(screen->machine, bitmap,cliprect,3);
|
||||
@ -646,7 +697,7 @@ VIDEO_UPDATE( bioship )
|
||||
}
|
||||
|
||||
copyscrollbitmap(bitmap,background_bitmap,1,&scrollx,1,&scrolly,cliprect);
|
||||
tilemap_draw(bitmap,cliprect,bg_tilemap,0,0);
|
||||
tilemap_draw(bitmap,cliprect,bg_tilemap0,0,0);
|
||||
|
||||
nmk16_draw_sprites(screen->machine, bitmap,cliprect,3);
|
||||
nmk16_draw_sprites(screen->machine, bitmap,cliprect,2);
|
||||
@ -661,7 +712,7 @@ VIDEO_UPDATE( strahl )
|
||||
{
|
||||
tilemap_set_scrollx(tx_tilemap,0,-videoshift);
|
||||
|
||||
tilemap_draw(bitmap,cliprect,bg_tilemap,0,0);
|
||||
tilemap_draw(bitmap,cliprect,bg_tilemap0,0,0);
|
||||
tilemap_draw(bitmap,cliprect,fg_tilemap,0,0);
|
||||
|
||||
nmk16_draw_sprites(screen->machine, bitmap,cliprect,3);
|
||||
@ -675,9 +726,9 @@ VIDEO_UPDATE( strahl )
|
||||
|
||||
VIDEO_UPDATE( bjtwin )
|
||||
{
|
||||
tilemap_set_scrollx(bg_tilemap,0,-videoshift);
|
||||
tilemap_set_scrollx(bg_tilemap0,0,-videoshift);
|
||||
|
||||
tilemap_draw(bitmap,cliprect,bg_tilemap,0,0);
|
||||
tilemap_draw(bitmap,cliprect,bg_tilemap0,0,0);
|
||||
|
||||
nmk16_draw_sprites(screen->machine, bitmap,cliprect,3);
|
||||
nmk16_draw_sprites(screen->machine, bitmap,cliprect,2);
|
||||
@ -714,84 +765,6 @@ VIDEO_EOF( strahl )
|
||||
|
||||
|
||||
|
||||
/* Variables needed by drivers: */
|
||||
|
||||
UINT16 *afega_vram_0, *afega_scroll_0;
|
||||
UINT16 *afega_vram_1, *afega_scroll_1;
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
|
||||
Tilemaps
|
||||
|
||||
Offset: Bits: Value:
|
||||
|
||||
2.w fedc ---- ---- ---- Color
|
||||
---- ba98 7654 3210 Code
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
#define TILES_PER_PAGE_X (0x10)
|
||||
#define TILES_PER_PAGE_Y (0x10)
|
||||
#define PAGES_PER_TMAP_X (0x10)
|
||||
#define PAGES_PER_TMAP_Y (0x2)
|
||||
#define TWINACTN_TILES_PER_PAGE_X (0x100)
|
||||
#define TWINACTN_TILES_PER_PAGE_Y (0x10)
|
||||
#define TWINACTN_PAGES_PER_TMAP_X (0x1)
|
||||
#define TWINACTN_PAGES_PER_TMAP_Y (0x1)
|
||||
|
||||
|
||||
static TILEMAP_MAPPER( afega_tilemap_scan_pages )
|
||||
{
|
||||
return (row / TILES_PER_PAGE_Y) * TILES_PER_PAGE_X * TILES_PER_PAGE_Y * PAGES_PER_TMAP_X +
|
||||
(row % TILES_PER_PAGE_Y) +
|
||||
|
||||
(col / TILES_PER_PAGE_X) * TILES_PER_PAGE_X * TILES_PER_PAGE_Y +
|
||||
(col % TILES_PER_PAGE_X) * TILES_PER_PAGE_Y;
|
||||
}
|
||||
|
||||
static tilemap *tilemap_0, *tilemap_1;
|
||||
|
||||
static TILE_GET_INFO( get_tile_info_0_4bit )
|
||||
{
|
||||
UINT16 code = afega_vram_0[tile_index];
|
||||
SET_TILE_INFO(
|
||||
0,
|
||||
code,
|
||||
(code & 0xf000) >> 12,
|
||||
0);
|
||||
}
|
||||
static TILE_GET_INFO( get_tile_info_0_8bit )
|
||||
{
|
||||
UINT16 code = afega_vram_0[tile_index];
|
||||
SET_TILE_INFO(
|
||||
0,
|
||||
code,
|
||||
0,
|
||||
0);
|
||||
}
|
||||
static TILE_GET_INFO( get_tile_info_1 )
|
||||
{
|
||||
UINT16 code = afega_vram_1[tile_index];
|
||||
SET_TILE_INFO(
|
||||
1,
|
||||
code,
|
||||
(code & 0xf000) >> 12,
|
||||
0);
|
||||
}
|
||||
|
||||
WRITE16_HANDLER( afega_vram_0_w )
|
||||
{
|
||||
COMBINE_DATA(&afega_vram_0[offset]);
|
||||
tilemap_mark_tile_dirty(tilemap_0,offset);
|
||||
}
|
||||
WRITE16_HANDLER( afega_vram_1_w )
|
||||
{
|
||||
COMBINE_DATA(&afega_vram_1[offset]);
|
||||
tilemap_mark_tile_dirty(tilemap_1,offset);
|
||||
}
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
|
||||
|
||||
@ -805,17 +778,17 @@ VIDEO_START( afega )
|
||||
spriteram_old = auto_alloc_array_clear(machine, UINT16, 0x1000/2);
|
||||
spriteram_old2 = auto_alloc_array_clear(machine, UINT16, 0x1000/2);
|
||||
|
||||
tilemap_0 = tilemap_create( machine, get_tile_info_0_4bit, afega_tilemap_scan_pages,
|
||||
bg_tilemap0 = tilemap_create( machine, macross_get_bg0_tile_info, afega_tilemap_scan_pages,
|
||||
|
||||
16,16,
|
||||
TILES_PER_PAGE_X*PAGES_PER_TMAP_X,TILES_PER_PAGE_Y*PAGES_PER_TMAP_Y);
|
||||
|
||||
tilemap_1 = tilemap_create( machine, get_tile_info_1, tilemap_scan_cols,
|
||||
tx_tilemap = tilemap_create( machine, macross_get_tx_tile_info, tilemap_scan_cols,
|
||||
|
||||
8,8,
|
||||
32,32);
|
||||
|
||||
tilemap_set_transparent_pen(tilemap_1,0xf);
|
||||
tilemap_set_transparent_pen(tx_tilemap,0xf);
|
||||
}
|
||||
|
||||
|
||||
@ -825,17 +798,17 @@ VIDEO_START( grdnstrm )
|
||||
spriteram_old2 = auto_alloc_array_clear(machine, UINT16, 0x1000/2);
|
||||
|
||||
|
||||
tilemap_0 = tilemap_create( machine, get_tile_info_0_8bit, afega_tilemap_scan_pages,
|
||||
bg_tilemap0 = tilemap_create( machine, get_tile_info_0_8bit, afega_tilemap_scan_pages,
|
||||
|
||||
16,16,
|
||||
TILES_PER_PAGE_X*PAGES_PER_TMAP_X,TILES_PER_PAGE_Y*PAGES_PER_TMAP_Y);
|
||||
|
||||
tilemap_1 = tilemap_create( machine, get_tile_info_1, tilemap_scan_cols,
|
||||
tx_tilemap = tilemap_create( machine, macross_get_tx_tile_info, tilemap_scan_cols,
|
||||
|
||||
8,8,
|
||||
32,32);
|
||||
|
||||
tilemap_set_transparent_pen(tilemap_1,0xf);
|
||||
tilemap_set_transparent_pen(tx_tilemap,0xf);
|
||||
}
|
||||
|
||||
|
||||
@ -845,17 +818,17 @@ VIDEO_START( firehawk )
|
||||
spriteram_old2 = auto_alloc_array_clear(machine, UINT16, 0x1000/2);
|
||||
|
||||
|
||||
tilemap_0 = tilemap_create( machine, get_tile_info_0_8bit, afega_tilemap_scan_pages,
|
||||
bg_tilemap0 = tilemap_create( machine, get_tile_info_0_8bit, afega_tilemap_scan_pages,
|
||||
|
||||
16,16,
|
||||
TILES_PER_PAGE_X*PAGES_PER_TMAP_X,TILES_PER_PAGE_Y*PAGES_PER_TMAP_Y);
|
||||
|
||||
tilemap_1 = tilemap_create( machine, get_tile_info_1, tilemap_scan_cols,
|
||||
tx_tilemap = tilemap_create( machine, macross_get_tx_tile_info, tilemap_scan_cols,
|
||||
|
||||
8,8,
|
||||
32,32);
|
||||
|
||||
tilemap_set_transparent_pen(tilemap_1,0xf);
|
||||
tilemap_set_transparent_pen(tx_tilemap,0xf);
|
||||
}
|
||||
|
||||
|
||||
@ -869,7 +842,7 @@ VIDEO_START( firehawk )
|
||||
|
||||
static void video_update(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect,
|
||||
int dsw_flipscreen, // 1 = Horizontal and vertical screen flip are hardwired to 2 dip switches
|
||||
int xoffset, int yoffset, // tilemap_0 offsets
|
||||
int xoffset, int yoffset, // bg_tilemap0 offsets
|
||||
int attr_mask // "sprite active" mask
|
||||
)
|
||||
{
|
||||
@ -884,31 +857,31 @@ static void video_update(running_machine *machine, bitmap_t *bitmap, const recta
|
||||
}
|
||||
|
||||
|
||||
tilemap_set_scrollx(tilemap_0, 0, afega_scroll_0[1] + xoffset);
|
||||
tilemap_set_scrolly(tilemap_0, 0, afega_scroll_0[0] + yoffset);
|
||||
tilemap_set_scrollx(bg_tilemap0, 0, afega_scroll_0[1] + xoffset);
|
||||
tilemap_set_scrolly(bg_tilemap0, 0, afega_scroll_0[0] + yoffset);
|
||||
|
||||
tilemap_set_scrollx(tilemap_1, 0, afega_scroll_1[1]);
|
||||
tilemap_set_scrolly(tilemap_1, 0, afega_scroll_1[0]);
|
||||
tilemap_set_scrollx(tx_tilemap, 0, afega_scroll_1[1]);
|
||||
tilemap_set_scrolly(tx_tilemap, 0, afega_scroll_1[0]);
|
||||
|
||||
|
||||
tilemap_draw(bitmap,cliprect,tilemap_0,0,0);
|
||||
tilemap_draw(bitmap,cliprect,bg_tilemap0,0,0);
|
||||
|
||||
nmk16_draw_sprites_flipsupported(machine, bitmap,cliprect,3);
|
||||
nmk16_draw_sprites_flipsupported(machine, bitmap,cliprect,2);
|
||||
nmk16_draw_sprites_flipsupported(machine, bitmap,cliprect,1);
|
||||
nmk16_draw_sprites_flipsupported(machine, bitmap,cliprect,0);
|
||||
|
||||
tilemap_draw(bitmap,cliprect,tilemap_1,0,0);
|
||||
tilemap_draw(bitmap,cliprect,tx_tilemap,0,0);
|
||||
}
|
||||
|
||||
static void redhawki_video_update(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect )
|
||||
{
|
||||
|
||||
|
||||
tilemap_set_scrollx(tilemap_0, 0, afega_scroll_1[0]&0xff);
|
||||
tilemap_set_scrolly(tilemap_0, 0, afega_scroll_1[1]&0xff);
|
||||
tilemap_set_scrollx(bg_tilemap0, 0, afega_scroll_1[0]&0xff);
|
||||
tilemap_set_scrolly(bg_tilemap0, 0, afega_scroll_1[1]&0xff);
|
||||
|
||||
tilemap_draw(bitmap,cliprect,tilemap_0,0,0);
|
||||
tilemap_draw(bitmap,cliprect,bg_tilemap0,0,0);
|
||||
|
||||
nmk16_draw_sprites_flipsupported(machine, bitmap,cliprect,3);
|
||||
nmk16_draw_sprites_flipsupported(machine, bitmap,cliprect,2);
|
||||
@ -923,19 +896,17 @@ VIDEO_UPDATE( redhawki ) { redhawki_video_update(screen->machine,bitmap,cliprect
|
||||
|
||||
VIDEO_UPDATE( firehawk )
|
||||
{
|
||||
tilemap_set_scrolly(bg_tilemap0, 0, afega_scroll_1[1] + 0x100);
|
||||
tilemap_set_scrollx(bg_tilemap0, 0, afega_scroll_1[0]);
|
||||
|
||||
|
||||
tilemap_set_scrolly(tilemap_0, 0, afega_scroll_1[1] + 0x100);
|
||||
tilemap_set_scrollx(tilemap_0, 0, afega_scroll_1[0]);
|
||||
|
||||
tilemap_draw(bitmap,cliprect,tilemap_0,0,0);
|
||||
tilemap_draw(bitmap,cliprect,bg_tilemap0,0,0);
|
||||
|
||||
nmk16_draw_sprites_flipsupported(screen->machine, bitmap,cliprect,3);
|
||||
nmk16_draw_sprites_flipsupported(screen->machine, bitmap,cliprect,2);
|
||||
nmk16_draw_sprites_flipsupported(screen->machine, bitmap,cliprect,1);
|
||||
nmk16_draw_sprites_flipsupported(screen->machine, bitmap,cliprect,0);
|
||||
|
||||
tilemap_draw(bitmap,cliprect,tilemap_1,0,0);
|
||||
tilemap_draw(bitmap,cliprect,tx_tilemap,0,0);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user