nmk16 : Cleanup duplicates, Update documents (#3227)

* nmk16 : Cleanup duplicates, Update documents
vandykeb : Verified OKI Bankswitching, Correct OKI clock
atombjt : Verified OKI Bankswitching

* nmk16 : Build fixes
This commit is contained in:
cam900 2018-02-18 04:28:01 +09:00 committed by ajrhacker
parent 511aa0aac7
commit 1915a475cc
3 changed files with 241 additions and 319 deletions

View File

@ -3,31 +3,33 @@
// thanks-to:Richard Bush
/********************************************************************
Task Force Harrier 1989 UPL 68000 Z80 YM2203 2xOKIM6295
Many Block 1991 Bee-Oh 68000 Z80 YM2203 2xOKIM6295
Mustang 1990 UPL 68000 NMK004 YM2203 2xOKIM6295
Bio-ship Paladin 1990 UPL 68000 NMK004 YM2203 2xOKIM6295
Vandyke 1990 UPL 68000 NMK004 YM2203 2xOKIM6295
Black Heart 1991 UPL 68000 NMK004 YM2203 2xOKIM6295
Acrobat Mission 1991 UPL 68000 NMK004 YM2203 2xOKIM6295
Strahl 1992 UPL 68000 NMK004 YM2203 2xOKIM6295
Thunder Dragon 1991 NMK/Tecmo 68000 NMK004 YM2203 2xOKIM6295
Hacha Mecha Fighter 1991 NMK 68000 NMK004 YM2203 2xOKIM6295
Macross 1992 Banpresto 68000 NMK004 YM2203 2xOKIM6295
GunNail 1993 NMK/Tecmo 68000 NMK004 YM2203 2xOKIM6295
Macross II 1993 Banpresto 68000 Z80 YM2203 2xOKIM6295
Thunder Dragon 2 1993 NMK 68000 Z80 YM2203 2xOKIM6295
Arcadia / Rapid Hero 1994 NMK 68000 tmp90c841 YM2203 2xOKIM6295
Task Force Harrier 1989 UPL 68000 Z80 YM2203 2xOKIM6295
Many Block 1991 Bee-Oh 68000 Z80 YM2203 2xOKIM6295
Mustang 1990 UPL 68000 NMK004 YM2203 2xOKIM6295
Bio-ship Paladin 1990 UPL 68000 NMK004 YM2203 2xOKIM6295
Vandyke 1990 UPL 68000 NMK004 YM2203 2xOKIM6295
Black Heart 1991 UPL 68000 NMK004 YM2203 2xOKIM6295
Acrobat Mission 1991 UPL 68000 NMK004 YM2203 2xOKIM6295
Strahl 1992 UPL 68000 NMK004 YM2203 2xOKIM6295
Thunder Dragon 1991 NMK/Tecmo 68000 NMK004 YM2203 2xOKIM6295
Hacha Mecha Fighter 1991 NMK 68000 NMK004 YM2203 2xOKIM6295
Macross 1992 Banpresto 68000 NMK004 YM2203 2xOKIM6295
GunNail 1993 NMK/Tecmo 68000 NMK004 YM2203 2xOKIM6295
Macross II 1993 Banpresto 68000 Z80 YM2203 2xOKIM6295
Thunder Dragon 2 1993 NMK 68000 Z80 YM2203 2xOKIM6295
Arcadia / Rapid Hero 1994 NMK 68000 tmp90c841 YM2203 2xOKIM6295
S.S. Mission 1992 Comad 68000 Z80 OKIM6295 (hack of Thunder Dragon)
Air Attack 1996 Comad 68000 Z80 OKIM6295 (hack of Thunder Dragon)
S.S. Mission 1992 Comad 68000 Z80 OKIM6295 (hack of Thunder Dragon)
Air Attack 1996 Comad 68000 Z80 OKIM6295 (hack of Thunder Dragon)
Mustang (bootleg) 68000 Z80 YM3812 OKIM6295
Thunder Dragon (bootleg) 68000 Z80 YM3812 OKIM6295
Mustang (bootleg) 68000 Z80 YM3812 OKIM6295
Thunder Dragon (bootleg) 68000 Z80 YM3812 OKIM6295
Saboten Bombers 1992 NMK/Tecmo 68000 2xOKIM6295
Bombjack Twin 1993 NMK 68000 2xOKIM6295
Nouryoku Koujou Iinkai 1995 Tecmo 68000 2xOKIM6295
Thunder Dragon 3 (bootleg) 1996 Conny 68000 Z80 (Unknown, Single OKIM6295 identified)
Saboten Bombers 1992 NMK/Tecmo 68000 2xOKIM6295
Bombjack Twin 1993 NMK 68000 2xOKIM6295
Nouryoku Koujou Iinkai 1995 Tecmo 68000 2xOKIM6295
driver by Mirko Buffoni, Richard Bush, Nicola Salmoria, Bryan McPhail,
David Haywood, R. Belmont, Alex Marshal and Luca Elia.
@ -65,6 +67,9 @@ TODO:
it doesn't matter if this is drawn with the TX layer (some sets) or the sprites (others)
so it's probably something else funky with the memory access.
- Thunder Dragon 3 (bootleg of Thunder Dragon 2) :
Sound System isn't hooked up correctly for this set.
NOT BUGS:
- Hacha Mecha Fighter: (BTANB) the bomb graphics are pretty weird when the game
is in japanese mode, but it's like this on the original game.
@ -222,20 +227,9 @@ WRITE16_MEMBER(nmk16_state::nmk16_mainram_strange_w)
}
WRITE16_MEMBER(nmk16_state::ssmissin_sound_w)
{
if (ACCESSING_BITS_0_7)
{
m_soundlatch->write(space, 0, data & 0xff);
m_audiocpu->set_input_line(0, HOLD_LINE);
}
}
WRITE8_MEMBER(nmk16_state::ssmissin_soundbank_w)
{
membank("okibank1")->set_entry(data & 0x3);
m_okibank[0]->set_entry(data & 0x3);
}
@ -285,40 +279,45 @@ WRITE16_MEMBER(nmk16_state::macross2_sound_reset_w)
m_audiocpu->set_input_line(INPUT_LINE_RESET, data ? CLEAR_LINE : ASSERT_LINE);
}
WRITE16_MEMBER(nmk16_state::macross2_sound_command_w)
{
if (ACCESSING_BITS_0_7)
m_soundlatch->write(space,0,data & 0xff);
}
WRITE8_MEMBER(nmk16_state::macross2_sound_bank_w)
{
membank("bank1")->set_entry(data & 0x07);
m_audiobank->set_entry(data & 0x07);
}
WRITE8_MEMBER(nmk16_state::tharrier_oki6295_bankswitch_0_w)
template<int Chip>
WRITE8_MEMBER(nmk16_state::tharrier_oki6295_bankswitch_w)
{
data &= 3;
if (data != 3)
membank("okibank1")->set_entry(data);
m_okibank[Chip]->set_entry(data);
}
WRITE8_MEMBER(nmk16_state::tharrier_oki6295_bankswitch_1_w)
/***************************************************************************
VRAM handlers
***************************************************************************/
template<int Bank>
WRITE16_MEMBER(nmk16_state::nmk_bgvideoram_w)
{
data &= 3;
if (data != 3)
membank("okibank2")->set_entry(data);
COMBINE_DATA(&m_nmk_bgvideoram[Bank][offset]);
m_bg_tilemap[Bank]->mark_tile_dirty(offset);
}
WRITE16_MEMBER(nmk16_state::afega_soundlatch_w)
WRITE16_MEMBER(nmk16_state::nmk_fgvideoram_w)
{
if (ACCESSING_BITS_0_7)
{
m_soundlatch->write(space, 0, data&0xff);
m_audiocpu->set_input_line(0, HOLD_LINE);
}
COMBINE_DATA(&m_nmk_fgvideoram[offset]);
m_fg_tilemap->mark_tile_dirty(offset);
}
WRITE16_MEMBER(nmk16_state::nmk_txvideoram_w)
{
COMBINE_DATA(&m_nmk_txvideoram[offset]);
m_tx_tilemap->mark_tile_dirty(offset);
}
/***************************************************************************/
ADDRESS_MAP_START(nmk16_state::vandyke_map)
@ -333,7 +332,7 @@ ADDRESS_MAP_START(nmk16_state::vandyke_map)
AM_RANGE(0x08001e, 0x08001f) AM_DEVWRITE8("nmk004", nmk004_device, write, 0x00ff)
AM_RANGE(0x088000, 0x0887ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
AM_RANGE(0x08c000, 0x08c007) AM_WRITE(vandyke_scroll_w)
AM_RANGE(0x090000, 0x093fff) AM_RAM_WRITE(nmk_bgvideoram0_w) AM_SHARE("nmk_bgvideoram0")
AM_RANGE(0x090000, 0x093fff) AM_RAM_WRITE(nmk_bgvideoram_w<0>) AM_SHARE("nmk_bgvideoram0")
AM_RANGE(0x094000, 0x097fff) AM_RAM /* what is this? */
AM_RANGE(0x09d000, 0x09d7ff) AM_RAM_WRITE(nmk_txvideoram_w) AM_SHARE("nmk_txvideoram")
AM_RANGE(0x0f0000, 0x0fffff) AM_RAM AM_SHARE("mainram")
@ -352,7 +351,7 @@ ADDRESS_MAP_START(nmk16_state::vandykeb_map)
// AM_RANGE(0x08001e, 0x08001f) AM_DEVWRITE8("nmk004", nmk004_device, write, 0x00ff)
AM_RANGE(0x088000, 0x0887ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
AM_RANGE(0x08c000, 0x08c007) AM_WRITENOP /* just in case... */
AM_RANGE(0x090000, 0x093fff) AM_RAM_WRITE(nmk_bgvideoram0_w) AM_SHARE("nmk_bgvideoram0")
AM_RANGE(0x090000, 0x093fff) AM_RAM_WRITE(nmk_bgvideoram_w<0>) AM_SHARE("nmk_bgvideoram0")
AM_RANGE(0x094000, 0x097fff) AM_RAM /* what is this? */
AM_RANGE(0x09d000, 0x09d7ff) AM_RAM_WRITE(nmk_txvideoram_w) AM_SHARE("nmk_txvideoram")
AM_RANGE(0x0f0000, 0x0fffff) AM_RAM AM_SHARE("mainram")
@ -369,7 +368,7 @@ ADDRESS_MAP_START(nmk16_state::manybloc_map)
AM_RANGE(0x08001c, 0x08001d) AM_WRITENOP /* See notes at the top of the driver */
AM_RANGE(0x08001e, 0x08001f) AM_DEVREAD8("soundlatch2", generic_latch_8_device, read, 0x00ff) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff)
AM_RANGE(0x088000, 0x0883ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
AM_RANGE(0x090000, 0x093fff) AM_RAM_WRITE(nmk_bgvideoram0_w) AM_SHARE("nmk_bgvideoram0")
AM_RANGE(0x090000, 0x093fff) AM_RAM_WRITE(nmk_bgvideoram_w<0>) AM_SHARE("nmk_bgvideoram0")
AM_RANGE(0x09c000, 0x09cfff) AM_RAM_WRITE(manybloc_scroll_w) AM_SHARE("scrollram")
AM_RANGE(0x09d000, 0x09d7ff) AM_RAM_WRITE(nmk_txvideoram_w) AM_SHARE("nmk_txvideoram")
AM_RANGE(0x0f0000, 0x0fffff) AM_RAM AM_SHARE("mainram")
@ -389,7 +388,7 @@ ADDRESS_MAP_START(nmk16_state::tharrier_map)
AM_RANGE(0x080202, 0x080203) AM_READ_PORT("IN2")
AM_RANGE(0x088000, 0x0883ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
// AM_RANGE(0x08c000, 0x08c007) AM_WRITE(nmk_scroll_w)
AM_RANGE(0x090000, 0x093fff) AM_RAM_WRITE(nmk_bgvideoram0_w) AM_SHARE("nmk_bgvideoram0")
AM_RANGE(0x090000, 0x093fff) AM_RAM_WRITE(nmk_bgvideoram_w<0>) AM_SHARE("nmk_bgvideoram0")
AM_RANGE(0x09c000, 0x09c7ff) AM_RAM /* Unused txvideoram area? */
AM_RANGE(0x09d000, 0x09d7ff) AM_RAM_WRITE(nmk_txvideoram_w) AM_SHARE("nmk_txvideoram")
AM_RANGE(0x0f0000, 0x0fffff) AM_RAM_WRITE(nmk16_mainram_strange_w) AM_SHARE("mainram")
@ -401,8 +400,8 @@ ADDRESS_MAP_START(nmk16_state::tharrier_sound_map)
AM_RANGE(0xf000, 0xf000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_DEVWRITE("soundlatch2", generic_latch_8_device, write)
AM_RANGE(0xf400, 0xf400) AM_DEVREADWRITE("oki1", okim6295_device, read, write)
AM_RANGE(0xf500, 0xf500) AM_DEVREADWRITE("oki2", okim6295_device, read, write)
AM_RANGE(0xf600, 0xf600) AM_WRITE(tharrier_oki6295_bankswitch_0_w)
AM_RANGE(0xf700, 0xf700) AM_WRITE(tharrier_oki6295_bankswitch_1_w)
AM_RANGE(0xf600, 0xf600) AM_WRITE(tharrier_oki6295_bankswitch_w<0>)
AM_RANGE(0xf700, 0xf700) AM_WRITE(tharrier_oki6295_bankswitch_w<1>)
ADDRESS_MAP_END
ADDRESS_MAP_START(nmk16_state::tharrier_sound_io_map)
@ -425,7 +424,7 @@ ADDRESS_MAP_START(nmk16_state::mustang_map)
AM_RANGE(0x088000, 0x0887ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
AM_RANGE(0x08c000, 0x08c001) AM_WRITE(mustang_scroll_w)
AM_RANGE(0x08c002, 0x08c087) AM_WRITENOP // ??
AM_RANGE(0x090000, 0x093fff) AM_RAM_WRITE(nmk_bgvideoram0_w) AM_SHARE("nmk_bgvideoram0")
AM_RANGE(0x090000, 0x093fff) AM_RAM_WRITE(nmk_bgvideoram_w<0>) AM_SHARE("nmk_bgvideoram0")
AM_RANGE(0x09c000, 0x09c7ff) AM_RAM_WRITE(nmk_txvideoram_w) AM_SHARE("nmk_txvideoram")
AM_RANGE(0x0f0000, 0x0fffff) AM_RAM_WRITE(nmk16_mainram_strange_w) AM_SHARE("mainram")
ADDRESS_MAP_END
@ -442,7 +441,7 @@ ADDRESS_MAP_START(nmk16_state::mustangb_map)
AM_RANGE(0x088000, 0x0887ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
AM_RANGE(0x08c000, 0x08c001) AM_WRITE(mustang_scroll_w)
AM_RANGE(0x08c002, 0x08c087) AM_WRITENOP // ??
AM_RANGE(0x090000, 0x093fff) AM_RAM_WRITE(nmk_bgvideoram0_w) AM_SHARE("nmk_bgvideoram0")
AM_RANGE(0x090000, 0x093fff) AM_RAM_WRITE(nmk_bgvideoram_w<0>) AM_SHARE("nmk_bgvideoram0")
AM_RANGE(0x09c000, 0x09c7ff) AM_RAM_WRITE(nmk_txvideoram_w) AM_SHARE("nmk_txvideoram")
AM_RANGE(0x0f0000, 0x0fffff) AM_RAM_WRITE(nmk16_mainram_strange_w) AM_SHARE("mainram")
ADDRESS_MAP_END
@ -456,11 +455,11 @@ ADDRESS_MAP_START(nmk16_state::twinactn_map)
AM_RANGE(0x08000e, 0x08000f) AM_NOP
AM_RANGE(0x080014, 0x080015) AM_WRITE(nmk_flipscreen_w)
AM_RANGE(0x080016, 0x080017) AM_WRITENOP // frame number?
AM_RANGE(0x08001e, 0x08001f) AM_WRITE(afega_soundlatch_w)
AM_RANGE(0x08001e, 0x08001f) AM_DEVWRITE("soundlatch", generic_latch_8_device, write, 0x00ff)
AM_RANGE(0x088000, 0x0887ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
AM_RANGE(0x08c000, 0x08c001) AM_WRITE(mustang_scroll_w)
AM_RANGE(0x08c002, 0x08c087) AM_WRITENOP // ??
AM_RANGE(0x090000, 0x093fff) AM_RAM_WRITE(nmk_bgvideoram0_w) AM_SHARE("nmk_bgvideoram0")
AM_RANGE(0x090000, 0x093fff) AM_RAM_WRITE(nmk_bgvideoram_w<0>) AM_SHARE("nmk_bgvideoram0")
AM_RANGE(0x09c000, 0x09c7ff) AM_RAM_WRITE(nmk_txvideoram_w) AM_SHARE("nmk_txvideoram")
AM_RANGE(0x0f0000, 0x0fffff) AM_RAM_WRITE(nmk16_mainram_strange_w) AM_SHARE("mainram")
ADDRESS_MAP_END
@ -480,7 +479,7 @@ ADDRESS_MAP_START(nmk16_state::acrobatm_map)
AM_RANGE(0xc001e, 0xc001f) AM_DEVWRITE8("nmk004", nmk004_device, write, 0x00ff)
AM_RANGE(0xc4000, 0xc45ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
AM_RANGE(0xc8000, 0xc8007) AM_RAM_WRITE(nmk_scroll_w)
AM_RANGE(0xcc000, 0xcffff) AM_RAM_WRITE(nmk_bgvideoram0_w) AM_SHARE("nmk_bgvideoram0")
AM_RANGE(0xcc000, 0xcffff) AM_RAM_WRITE(nmk_bgvideoram_w<0>) AM_SHARE("nmk_bgvideoram0")
AM_RANGE(0xd4000, 0xd47ff) AM_RAM_WRITE(nmk_txvideoram_w) AM_SHARE("nmk_txvideoram")
ADDRESS_MAP_END
@ -498,7 +497,7 @@ ADDRESS_MAP_START(nmk16_state::bioship_map)
AM_RANGE(0x088000, 0x0887ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
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_bgvideoram0_w) AM_SHARE("nmk_bgvideoram0")
AM_RANGE(0x090000, 0x093fff) AM_RAM_WRITE(nmk_bgvideoram_w<0>) AM_SHARE("nmk_bgvideoram0")
AM_RANGE(0x09c000, 0x09c7ff) AM_RAM_WRITE(nmk_txvideoram_w) AM_SHARE("nmk_txvideoram")
AM_RANGE(0x0f0000, 0x0fffff) AM_RAM AM_SHARE("mainram")
ADDRESS_MAP_END
@ -677,7 +676,7 @@ ADDRESS_MAP_START(nmk16_state::hachamf_map)
/* Video Region */
AM_RANGE(0x088000, 0x0887ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
AM_RANGE(0x08c000, 0x08c007) AM_WRITE(nmk_scroll_w)
AM_RANGE(0x090000, 0x093fff) AM_RAM_WRITE(nmk_bgvideoram0_w) AM_SHARE("nmk_bgvideoram0")
AM_RANGE(0x090000, 0x093fff) AM_RAM_WRITE(nmk_bgvideoram_w<0>) AM_SHARE("nmk_bgvideoram0")
AM_RANGE(0x09c000, 0x09c7ff) AM_RAM_WRITE(nmk_txvideoram_w) AM_SHARE("nmk_txvideoram")
/* Main RAM, inc sprites, shared with MCU */
AM_RANGE(0x0f0000, 0x0fffff) AM_RAM AM_SHARE("mainram") // ram is shared with MCU
@ -909,7 +908,7 @@ ADDRESS_MAP_START(nmk16_state::tdragon_map)
AM_RANGE(0x0c001e, 0x0c001f) AM_DEVWRITE8("nmk004", nmk004_device, write, 0x00ff)
AM_RANGE(0x0c4000, 0x0c4007) AM_RAM_WRITE(nmk_scroll_w)
AM_RANGE(0x0c8000, 0x0c87ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
AM_RANGE(0x0cc000, 0x0cffff) AM_RAM_WRITE(nmk_bgvideoram0_w) AM_SHARE("nmk_bgvideoram0")
AM_RANGE(0x0cc000, 0x0cffff) AM_RAM_WRITE(nmk_bgvideoram_w<0>) AM_SHARE("nmk_bgvideoram0")
AM_RANGE(0x0d0000, 0x0d07ff) AM_RAM_WRITE(nmk_txvideoram_w) AM_SHARE("nmk_txvideoram")
ADDRESS_MAP_END
@ -932,7 +931,7 @@ ADDRESS_MAP_START(nmk16_state::tdragonb_map)
AM_RANGE(0x0c001e, 0x0c001f) AM_DEVWRITE("seibu_sound", seibu_sound_device, main_mustb_w)
AM_RANGE(0x0c4000, 0x0c4007) AM_RAM_WRITE(nmk_scroll_w)
AM_RANGE(0x0c8000, 0x0c87ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
AM_RANGE(0x0cc000, 0x0cffff) AM_RAM_WRITE(nmk_bgvideoram0_w) AM_SHARE("nmk_bgvideoram0")
AM_RANGE(0x0cc000, 0x0cffff) AM_RAM_WRITE(nmk_bgvideoram_w<0>) AM_SHARE("nmk_bgvideoram0")
AM_RANGE(0x0d0000, 0x0d07ff) AM_RAM_WRITE(nmk_txvideoram_w) AM_SHARE("nmk_txvideoram")
ADDRESS_MAP_END
@ -945,10 +944,10 @@ ADDRESS_MAP_START(nmk16_state::ssmissin_map)
// AM_RANGE(0x0c000e, 0x0c000f) AM_READ(??)
AM_RANGE(0x0c0014, 0x0c0015) AM_WRITE(nmk_flipscreen_w) /* Maybe */
AM_RANGE(0x0c0018, 0x0c0019) AM_WRITE(nmk_tilebank_w) /* Tile Bank ? */
AM_RANGE(0x0c001e, 0x0c001f) AM_WRITE(ssmissin_sound_w)
AM_RANGE(0x0c001e, 0x0c001f) AM_DEVWRITE("soundlatch", generic_latch_8_device, write, 0x00ff)
AM_RANGE(0x0c4000, 0x0c4007) AM_RAM_WRITE(nmk_scroll_w)
AM_RANGE(0x0c8000, 0x0c87ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
AM_RANGE(0x0cc000, 0x0cffff) AM_RAM_WRITE(nmk_bgvideoram0_w) AM_SHARE("nmk_bgvideoram0")
AM_RANGE(0x0cc000, 0x0cffff) AM_RAM_WRITE(nmk_bgvideoram_w<0>) AM_SHARE("nmk_bgvideoram0")
AM_RANGE(0x0d0000, 0x0d07ff) AM_MIRROR(0x1800) AM_RAM_WRITE(nmk_txvideoram_w) AM_SHARE("nmk_txvideoram") //mirror for airattck
ADDRESS_MAP_END
@ -983,7 +982,7 @@ ADDRESS_MAP_START(nmk16_state::strahl_map)
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_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
AM_RANGE(0x90000, 0x93fff) AM_RAM_WRITE(nmk_bgvideoram0_w) AM_SHARE("nmk_bgvideoram0")
AM_RANGE(0x90000, 0x93fff) AM_RAM_WRITE(nmk_bgvideoram_w<0>) AM_SHARE("nmk_bgvideoram0")
AM_RANGE(0x94000, 0x97fff) AM_RAM_WRITE(nmk_fgvideoram_w) AM_SHARE("nmk_fgvideoram")
AM_RANGE(0x9c000, 0x9c7ff) AM_RAM_WRITE(nmk_txvideoram_w) AM_SHARE("nmk_txvideoram")
AM_RANGE(0xf0000, 0xfffff) AM_RAM AM_SHARE("mainram")
@ -1002,7 +1001,7 @@ ADDRESS_MAP_START(nmk16_state::macross_map)
AM_RANGE(0x08001e, 0x08001f) AM_DEVWRITE8("nmk004", nmk004_device, write, 0x00ff)
AM_RANGE(0x088000, 0x0887ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
AM_RANGE(0x08c000, 0x08c007) AM_RAM_WRITE(nmk_scroll_w)
AM_RANGE(0x090000, 0x093fff) AM_RAM_WRITE(nmk_bgvideoram0_w) AM_SHARE("nmk_bgvideoram0")
AM_RANGE(0x090000, 0x093fff) AM_RAM_WRITE(nmk_bgvideoram_w<0>) AM_SHARE("nmk_bgvideoram0")
AM_RANGE(0x09c000, 0x09c7ff) AM_RAM_WRITE(nmk_txvideoram_w) AM_SHARE("nmk_txvideoram")
AM_RANGE(0x0f0000, 0x0fffff) AM_RAM_WRITE(nmk16_mainram_strange_w) AM_SHARE("mainram")
ADDRESS_MAP_END
@ -1022,7 +1021,7 @@ ADDRESS_MAP_START(nmk16_state::gunnail_map)
AM_RANGE(0x08c000, 0x08c1ff) AM_WRITEONLY AM_SHARE("scrollram")
AM_RANGE(0x08c200, 0x08c3ff) AM_WRITEONLY AM_SHARE("scrollramy")
AM_RANGE(0x08c400, 0x08c7ff) AM_WRITEONLY // unknown
AM_RANGE(0x090000, 0x093fff) AM_RAM_WRITE(nmk_bgvideoram0_w) AM_SHARE("nmk_bgvideoram0")
AM_RANGE(0x090000, 0x093fff) AM_RAM_WRITE(nmk_bgvideoram_w<0>) AM_SHARE("nmk_bgvideoram0")
AM_RANGE(0x09c000, 0x09cfff) AM_MIRROR(0x001000) AM_RAM_WRITE(nmk_txvideoram_w) AM_SHARE("nmk_txvideoram")
AM_RANGE(0x0f0000, 0x0fffff) AM_RAM AM_SHARE("mainram")
ADDRESS_MAP_END
@ -1037,17 +1036,17 @@ ADDRESS_MAP_START(nmk16_state::macross2_map)
AM_RANGE(0x100014, 0x100015) AM_WRITE(nmk_flipscreen_w)
AM_RANGE(0x100016, 0x100017) AM_WRITE(macross2_sound_reset_w) /* Z80 reset */
AM_RANGE(0x100018, 0x100019) AM_WRITE(nmk_tilebank_w)
AM_RANGE(0x10001e, 0x10001f) AM_WRITE(macross2_sound_command_w) /* to Z80 */
AM_RANGE(0x10001e, 0x10001f) AM_DEVWRITE("soundlatch", generic_latch_8_device, write, 0x00ff) /* to Z80 */
AM_RANGE(0x120000, 0x1207ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
AM_RANGE(0x130000, 0x1301ff) AM_RAM AM_SHARE("scrollram")
AM_RANGE(0x130200, 0x1303ff) AM_RAM AM_SHARE("scrollramy")
AM_RANGE(0x130400, 0x1307ff) AM_RAM
AM_RANGE(0x140000, 0x143fff) AM_RAM_WRITE(nmk_bgvideoram0_w) AM_SHARE("nmk_bgvideoram0")
AM_RANGE(0x144000, 0x147fff) AM_RAM_WRITE(nmk_bgvideoram1_w) AM_SHARE("nmk_bgvideoram1")
AM_RANGE(0x148000, 0x14bfff) AM_RAM_WRITE(nmk_bgvideoram2_w) AM_SHARE("nmk_bgvideoram2")
AM_RANGE(0x14c000, 0x14ffff) AM_RAM_WRITE(nmk_bgvideoram3_w) AM_SHARE("nmk_bgvideoram3")
AM_RANGE(0x140000, 0x143fff) AM_RAM_WRITE(nmk_bgvideoram_w<0>) AM_SHARE("nmk_bgvideoram0")
AM_RANGE(0x144000, 0x147fff) AM_RAM_WRITE(nmk_bgvideoram_w<1>) AM_SHARE("nmk_bgvideoram1")
AM_RANGE(0x148000, 0x14bfff) AM_RAM_WRITE(nmk_bgvideoram_w<2>) AM_SHARE("nmk_bgvideoram2")
AM_RANGE(0x14c000, 0x14ffff) AM_RAM_WRITE(nmk_bgvideoram_w<3>) AM_SHARE("nmk_bgvideoram3")
AM_RANGE(0x170000, 0x170fff) AM_MIRROR(0x1000) AM_RAM_WRITE(nmk_txvideoram_w) AM_SHARE("nmk_txvideoram")
AM_RANGE(0x1f0000, 0x1fffff) AM_RAM AM_SHARE("mainram")
@ -1069,17 +1068,17 @@ ADDRESS_MAP_START(nmk16_state::raphero_map)
AM_RANGE(0x100014, 0x100015) AM_WRITE(nmk_flipscreen_w)
AM_RANGE(0x100016, 0x100017) AM_WRITENOP /* IRQ enable or z80 sound reset like in Macross 2? */
AM_RANGE(0x100018, 0x100019) AM_WRITE(nmk_tilebank_w)
AM_RANGE(0x10001e, 0x10001f) AM_WRITE(macross2_sound_command_w) /* to Z80 */
AM_RANGE(0x10001e, 0x10001f) AM_DEVWRITE("soundlatch", generic_latch_8_device, write, 0x00ff) /* to Z80 */
AM_RANGE(0x120000, 0x1207ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
AM_RANGE(0x130000, 0x1301ff) AM_RAM AM_SHARE("scrollram")
AM_RANGE(0x130200, 0x1303ff) AM_RAM AM_SHARE("scrollramy")
AM_RANGE(0x130400, 0x1307ff) AM_RAM
AM_RANGE(0x140000, 0x143fff) AM_RAM_WRITE(nmk_bgvideoram0_w) AM_SHARE("nmk_bgvideoram0")
AM_RANGE(0x144000, 0x147fff) AM_RAM_WRITE(nmk_bgvideoram1_w) AM_SHARE("nmk_bgvideoram1")
AM_RANGE(0x148000, 0x14bfff) AM_RAM_WRITE(nmk_bgvideoram2_w) AM_SHARE("nmk_bgvideoram2")
AM_RANGE(0x14c000, 0x14ffff) AM_RAM_WRITE(nmk_bgvideoram3_w) AM_SHARE("nmk_bgvideoram3")
AM_RANGE(0x140000, 0x143fff) AM_RAM_WRITE(nmk_bgvideoram_w<0>) AM_SHARE("nmk_bgvideoram0")
AM_RANGE(0x144000, 0x147fff) AM_RAM_WRITE(nmk_bgvideoram_w<1>) AM_SHARE("nmk_bgvideoram1")
AM_RANGE(0x148000, 0x14bfff) AM_RAM_WRITE(nmk_bgvideoram_w<2>) AM_SHARE("nmk_bgvideoram2")
AM_RANGE(0x14c000, 0x14ffff) AM_RAM_WRITE(nmk_bgvideoram_w<3>) AM_SHARE("nmk_bgvideoram3")
AM_RANGE(0x170000, 0x170fff) AM_MIRROR(0x1000) AM_RAM_WRITE(nmk_txvideoram_w) AM_SHARE("nmk_txvideoram")
@ -1088,7 +1087,7 @@ ADDRESS_MAP_END
ADDRESS_MAP_START(nmk16_state::raphero_sound_mem_map)
AM_RANGE(0x0000, 0x7fff) AM_ROM
AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("audiobank")
AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write)
AM_RANGE(0xc800, 0xc800) AM_DEVREADWRITE("oki1", okim6295_device, read, write)
AM_RANGE(0xc808, 0xc808) AM_DEVREADWRITE("oki2", okim6295_device, read, write)
@ -1100,7 +1099,7 @@ ADDRESS_MAP_END
ADDRESS_MAP_START(nmk16_state::macross2_sound_map)
AM_RANGE(0x0000, 0x7fff) AM_ROM
AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") /* banked ROM */
AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("audiobank") /* banked ROM */
AM_RANGE(0xa000, 0xa000) AM_READNOP /* IRQ ack? watchdog? */
AM_RANGE(0xc000, 0xdfff) AM_RAM
AM_RANGE(0xe001, 0xe001) AM_WRITE(macross2_sound_bank_w)
@ -1128,7 +1127,7 @@ ADDRESS_MAP_START(nmk16_state::bjtwin_map)
AM_RANGE(0x088000, 0x0887ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
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_bgvideoram0_w) AM_SHARE("nmk_bgvideoram0")
AM_RANGE(0x09c000, 0x09cfff) AM_MIRROR(0x1000) AM_RAM_WRITE(nmk_bgvideoram_w<0>) AM_SHARE("nmk_bgvideoram0")
AM_RANGE(0x0f0000, 0x0fffff) AM_RAM AM_SHARE("mainram")
ADDRESS_MAP_END
@ -1138,7 +1137,7 @@ ADDRESS_MAP_START(nmk16_state::atombjt_map)
AM_RANGE(0x088000, 0x0887ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
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_bgvideoram0_w) AM_SHARE("nmk_bgvideoram0")
AM_RANGE(0x09c000, 0x09cfff) AM_MIRROR(0x1000) AM_RAM_WRITE(nmk_bgvideoram_w<0>) AM_SHARE("nmk_bgvideoram0")
AM_RANGE(0x0c2010, 0x0c2011) AM_READ_PORT("IN0")
AM_RANGE(0x0c2012, 0x0c2013) AM_READ_PORT("IN1")
AM_RANGE(0x0c2014, 0x0c2015) AM_READ(atombjt_unkr_r)
@ -4106,8 +4105,9 @@ MACHINE_CONFIG_START(nmk16_state::vandykeb)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_OKIM6295_ADD("oki1", 16000000/4, PIN7_LOW)
MCFG_OKIM6295_ADD("oki1", 16000000/16, PIN7_LOW)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.20)
MCFG_DEVICE_ADDRESS_MAP(0, oki1_map)
MACHINE_CONFIG_END
MACHINE_CONFIG_START(nmk16_state::acrobatm)
@ -4259,6 +4259,7 @@ MACHINE_CONFIG_START(nmk16_state::ssmissin)
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_GENERIC_LATCH_DATA_PENDING_CB(INPUTLINE("audiocpu", 0))
MCFG_OKIM6295_ADD("oki1", 8000000/8, PIN7_HIGH) /* 1 Mhz, pin 7 high */
MCFG_DEVICE_ADDRESS_MAP(0, oki1_map)
@ -4562,6 +4563,7 @@ MACHINE_CONFIG_START(nmk16_state::tdragon2)
MCFG_NMK112_ROM1("oki2")
MACHINE_CONFIG_END
// TODO : Sound system is different
MACHINE_CONFIG_START(nmk16_state::tdragon3h)
tdragon2(config);
MCFG_CPU_MODIFY("maincpu")
@ -4672,6 +4674,7 @@ MACHINE_CONFIG_START(nmk16_state::atombjt)
MCFG_OKIM6295_ADD("oki1", 10000000/8, PIN7_LOW) // divider and pin not verified
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.20)
MCFG_DEVICE_ADDRESS_MAP(0, oki1_map)
MACHINE_CONFIG_END
@ -4912,13 +4915,13 @@ DRIVER_INIT_MEMBER(nmk16_state,nmk)
DRIVER_INIT_MEMBER(nmk16_state,banked_audiocpu)
{
membank("bank1")->configure_entries(0, 8, memregion("audiocpu")->base(), 0x4000);
m_audiobank->configure_entries(0, 8, memregion("audiocpu")->base(), 0x4000);
}
DRIVER_INIT_MEMBER(nmk16_state,tharrier)
{
membank("okibank1")->configure_entries(0, 4, memregion("oki1")->base() + 0x20000, 0x20000);
membank("okibank2")->configure_entries(0, 4, memregion("oki2")->base() + 0x20000, 0x20000);
m_okibank[0]->configure_entries(0, 4, memregion("oki1")->base() + 0x20000, 0x20000);
m_okibank[1]->configure_entries(0, 4, memregion("oki2")->base() + 0x20000, 0x20000);
}
DRIVER_INIT_MEMBER(nmk16_state,hachamf_prot)
@ -4957,7 +4960,7 @@ DRIVER_INIT_MEMBER(nmk16_state,ssmissin)
{
decode_ssmissin();
membank("okibank1")->configure_entries(0, 4, memregion("oki1")->base() + 0x80000, 0x20000);
m_okibank[0]->configure_entries(0, 4, memregion("oki1")->base() + 0x80000, 0x20000);
}
DRIVER_INIT_MEMBER(nmk16_state,bjtwin)
@ -4987,10 +4990,16 @@ DRIVER_INIT_MEMBER(nmk16_state,bjtwin)
}
DRIVER_INIT_MEMBER(nmk16_state,atombjt)
{
m_okibank[0]->configure_entries(0, 4, memregion("oki1")->base() + 0x20000, 0x20000);
}
/* NO NMK004, it has a PIC instead */
READ16_MEMBER(nmk16_state::vandykeb_r){ return 0x0000; }
DRIVER_INIT_MEMBER(nmk16_state,vandykeb)
{
m_okibank[0]->configure_entries(0, 4, memregion("oki1")->base() + 0x20000, 0x20000);
m_maincpu->space(AS_PROGRAM).install_read_handler(0x08000e, 0x08000f, read16_delegate(FUNC(nmk16_state::vandykeb_r),this));
m_maincpu->space(AS_PROGRAM).nop_write(0x08001e, 0x08001f);
}
@ -5011,15 +5020,10 @@ READ16_MEMBER(nmk16_state::afega_unknown_r)
}
WRITE16_MEMBER(nmk16_state::afega_scroll0_w)
template<int Scroll>
WRITE16_MEMBER(nmk16_state::afega_scroll_w)
{
COMBINE_DATA(&m_afega_scroll_0[offset]);
}
WRITE16_MEMBER(nmk16_state::afega_scroll1_w)
{
COMBINE_DATA(&m_afega_scroll_1[offset]);
COMBINE_DATA(&m_afega_scroll[Scroll][offset]);
}
/*
@ -5037,17 +5041,17 @@ ADDRESS_MAP_START(nmk16_state::afega_map)
AM_RANGE(0x080004, 0x080005) AM_READ_PORT("DSW1") // 2 x DSW
AM_RANGE(0x080012, 0x080013) AM_READ(afega_unknown_r)
AM_RANGE(0x080000, 0x08001d) AM_WRITEONLY //
AM_RANGE(0x08001e, 0x08001f) AM_WRITE(afega_soundlatch_w) // To Sound CPU
AM_RANGE(0x08001e, 0x08001f) AM_DEVWRITE("soundlatch", generic_latch_8_device, write, 0x00ff) // To Sound CPU
AM_RANGE(0x080020, 0x087fff) AM_WRITEONLY //
/**/AM_RANGE(0x084000, 0x084003) AM_RAM_WRITE(afega_scroll0_w) // Scroll on redhawkb (mirror or changed?..)
/**/AM_RANGE(0x084004, 0x084007) AM_RAM_WRITE(afega_scroll1_w) // Scroll on redhawkb (mirror or changed?..)
/**/AM_RANGE(0x088000, 0x0885ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") // Palette
AM_RANGE(0x084000, 0x084003) AM_RAM_WRITE(afega_scroll_w<0>) // Scroll on redhawkb (mirror or changed?..)
AM_RANGE(0x084004, 0x084007) AM_RAM_WRITE(afega_scroll_w<1>) // Scroll on redhawkb (mirror or changed?..)
AM_RANGE(0x088000, 0x0885ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") // Palette
AM_RANGE(0x088600, 0x08bfff) AM_WRITEONLY //
/**/AM_RANGE(0x08c000, 0x08c003) AM_RAM_WRITE(afega_scroll0_w) AM_SHARE("afega_scroll_0") // Scroll
/**/AM_RANGE(0x08c004, 0x08c007) AM_RAM_WRITE(afega_scroll1_w) AM_SHARE("afega_scroll_1") //
AM_RANGE(0x08c000, 0x08c003) AM_RAM_WRITE(afega_scroll_w<0>) AM_SHARE("afega_scroll_0") // Scroll
AM_RANGE(0x08c004, 0x08c007) AM_RAM_WRITE(afega_scroll_w<1>) AM_SHARE("afega_scroll_1") //
AM_RANGE(0x08c008, 0x08ffff) AM_WRITEONLY //
/**/AM_RANGE(0x090000, 0x093fff) AM_RAM_WRITE(nmk_bgvideoram0_w) AM_SHARE("nmk_bgvideoram0") // Layer 0 // ?
/**/AM_RANGE(0x09c000, 0x09c7ff) AM_RAM_WRITE(nmk_txvideoram_w) AM_SHARE("nmk_txvideoram") // Layer 1
AM_RANGE(0x090000, 0x093fff) AM_RAM_WRITE(nmk_bgvideoram_w<0>) AM_SHARE("nmk_bgvideoram0") // Layer 0 // ?
AM_RANGE(0x09c000, 0x09c7ff) AM_RAM_WRITE(nmk_txvideoram_w) AM_SHARE("nmk_txvideoram") // Layer 1
AM_RANGE(0x0c0000, 0x0cffff) AM_RAM_WRITE(nmk16_mainram_strange_w) AM_SHARE("mainram")
AM_RANGE(0x0f0000, 0x0fffff) AM_RAM_WRITE(nmk16_mainram_strange_w) AM_SHARE("mainram")
@ -5062,17 +5066,17 @@ ADDRESS_MAP_START(nmk16_state::firehawk_map)
AM_RANGE(0x280004, 0x280005) AM_READ_PORT("DSW1") // 2 x DSW
AM_RANGE(0x280012, 0x280013) AM_READ(afega_unknown_r)
AM_RANGE(0x280000, 0x28001d) AM_WRITEONLY //
AM_RANGE(0x28001e, 0x28001f) AM_WRITE(afega_soundlatch_w) // To Sound CPU
AM_RANGE(0x28001e, 0x28001f) AM_DEVWRITE("soundlatch", generic_latch_8_device, write, 0x00ff) // To Sound CPU
AM_RANGE(0x280020, 0x287fff) AM_WRITEONLY //
/**/AM_RANGE(0x284000, 0x284003) AM_RAM_WRITE(afega_scroll0_w) // Scroll on redhawkb (mirror or changed?..)
/**/AM_RANGE(0x284004, 0x284007) AM_RAM_WRITE(afega_scroll1_w) // Scroll on redhawkb (mirror or changed?..)
/**/AM_RANGE(0x288000, 0x2885ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") // Palette
AM_RANGE(0x284000, 0x284003) AM_RAM_WRITE(afega_scroll_w<0>) // Scroll on redhawkb (mirror or changed?..)
AM_RANGE(0x284004, 0x284007) AM_RAM_WRITE(afega_scroll_w<1>) // Scroll on redhawkb (mirror or changed?..)
AM_RANGE(0x288000, 0x2885ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") // Palette
AM_RANGE(0x288600, 0x28bfff) AM_WRITEONLY //
/**/AM_RANGE(0x28c000, 0x28c003) AM_RAM_WRITE(afega_scroll0_w) AM_SHARE("afega_scroll_0") // Scroll
/**/AM_RANGE(0x28c004, 0x28c007) AM_RAM_WRITE(afega_scroll1_w) AM_SHARE("afega_scroll_1") //
AM_RANGE(0x28c000, 0x28c003) AM_RAM_WRITE(afega_scroll_w<0>) AM_SHARE("afega_scroll_0") // Scroll
AM_RANGE(0x28c004, 0x28c007) AM_RAM_WRITE(afega_scroll_w<1>) AM_SHARE("afega_scroll_1") //
AM_RANGE(0x28c008, 0x28ffff) AM_WRITEONLY //
/**/AM_RANGE(0x290000, 0x293fff) AM_RAM_WRITE(nmk_bgvideoram0_w) AM_SHARE("nmk_bgvideoram0") // Layer 0 // ?
/**/AM_RANGE(0x29c000, 0x29c7ff) AM_RAM_WRITE(nmk_txvideoram_w) AM_SHARE("nmk_txvideoram") // Layer 1
AM_RANGE(0x290000, 0x293fff) AM_RAM_WRITE(nmk_bgvideoram_w<0>) AM_SHARE("nmk_bgvideoram0") // Layer 0 // ?
AM_RANGE(0x29c000, 0x29c7ff) AM_RAM_WRITE(nmk_txvideoram_w) AM_SHARE("nmk_txvideoram") // Layer 1
AM_RANGE(0x3c0000, 0x3cffff) AM_RAM_WRITE(nmk16_mainram_strange_w) AM_SHARE("mainram")
AM_RANGE(0x3f0000, 0x3fffff) AM_RAM_WRITE(nmk16_mainram_strange_w) AM_SHARE("mainram")
@ -5238,6 +5242,7 @@ MACHINE_CONFIG_START(nmk16_state::stagger1)
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_GENERIC_LATCH_DATA_PENDING_CB(INPUTLINE("audiocpu", 0))
MCFG_YM2151_ADD("ymsnd", XTAL(4'000'000)) /* verified on pcb */
MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
@ -5327,6 +5332,7 @@ MACHINE_CONFIG_START(nmk16_state::firehawk)
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_GENERIC_LATCH_DATA_PENDING_CB(INPUTLINE("audiocpu", 0))
MCFG_OKIM6295_ADD("oki1", 1000000, PIN7_HIGH)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
@ -5367,6 +5373,7 @@ MACHINE_CONFIG_START(nmk16_state::twinactn)
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_GENERIC_LATCH_DATA_PENDING_CB(INPUTLINE("audiocpu", 0))
MCFG_OKIM6295_ADD("oki1", 1000000, PIN7_HIGH)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
@ -5519,11 +5526,11 @@ ROM_START( vandykeb )
ROM_LOAD16_BYTE( "10.bin", 0x140000, 0x020000, CRC(388b1abc) SHA1(9d1c43070130672a5e1a41807d796c944b0676ae) ) /* Sprites */
ROM_LOAD16_BYTE( "14.bin", 0x140001, 0x020000, CRC(32eeba37) SHA1(0d0218e864ed647bd33bbe379f0ef76ccefbd06c) ) /* Sprites */
ROM_REGION( 0x0a0000, "oki1", 0 ) /* OKIM6295 samples */
ROM_REGION( 0x080000, "oki1", 0 ) /* OKIM6295 samples */
ROM_LOAD( "9.bin", 0x000000, 0x020000, CRC(56bf774f) SHA1(5ece618fff22483adb5dff062dd4ec212aab0f01) )
ROM_LOAD( "8.bin", 0x000000, 0x020000, CRC(89851fcf) SHA1(7b6284cb929059371dd2b5410cd18373834ba76b) )
ROM_LOAD( "7.bin", 0x000000, 0x020000, CRC(d7bf0f6a) SHA1(413713576692676a831949e0d4dc5574da338380) )
ROM_LOAD( "6.bin", 0x000000, 0x020000, CRC(a7fcf709) SHA1(dc6298b43a472e92e99b8286bd4d26f7e72fd278) )
ROM_LOAD( "8.bin", 0x020000, 0x020000, CRC(89851fcf) SHA1(7b6284cb929059371dd2b5410cd18373834ba76b) )
ROM_LOAD( "7.bin", 0x040000, 0x020000, CRC(d7bf0f6a) SHA1(413713576692676a831949e0d4dc5574da338380) )
ROM_LOAD( "6.bin", 0x060000, 0x020000, CRC(a7fcf709) SHA1(dc6298b43a472e92e99b8286bd4d26f7e72fd278) )
ROM_END
ROM_START( tharrier )
@ -5800,7 +5807,7 @@ ROM_START( bioship )
ROM_REGION( 0x80000, "gfx4", 0 )
ROM_LOAD( "sbs-g_02.ic4", 0x000000, 0x80000, CRC(f31eb668) SHA1(67d6d56ea203edfbae4db658399bf61f14134206) ) /* Background */
ROM_REGION16_BE(0x20000, "gfx5", 0 ) /* Background tilemaps (used at runtime) */
ROM_REGION16_BE(0x20000, "tilerom", 0 ) /* Background tilemaps (used at runtime) */
ROM_LOAD16_BYTE( "8.ic27", 0x00000, 0x10000, CRC(75a46fea) SHA1(3d78cfc482b42779bb5aedb722c4a39cbc71bd10) )
ROM_LOAD16_BYTE( "9.ic26", 0x00001, 0x10000, CRC(d91448ee) SHA1(7f84ca3605edcab4bf226dab8dd7218cd5c3e5a4) )
@ -5836,7 +5843,7 @@ ROM_START( sbsgomo )
ROM_REGION( 0x80000, "gfx4", 0 )
ROM_LOAD( "sbs-g_02.ic4", 0x000000, 0x80000, CRC(f31eb668) SHA1(67d6d56ea203edfbae4db658399bf61f14134206) ) /* Background */
ROM_REGION16_BE(0x20000, "gfx5", 0 ) /* Background tilemaps (used at runtime) */
ROM_REGION16_BE(0x20000, "tilerom", 0 ) /* Background tilemaps (used at runtime) */
ROM_LOAD16_BYTE( "8.ic27", 0x00000, 0x10000, CRC(75a46fea) SHA1(3d78cfc482b42779bb5aedb722c4a39cbc71bd10) )
ROM_LOAD16_BYTE( "9.ic26", 0x00001, 0x10000, CRC(d91448ee) SHA1(7f84ca3605edcab4bf226dab8dd7218cd5c3e5a4) )
@ -6466,6 +6473,7 @@ ROM_START( tdragon3h )
ROM_LOAD16_BYTE( "H.27C2001", 0x00000, 0x40000, CRC(0091f4a3) SHA1(025e5f7ff12eaa90c5cfe757c71d58ba7040cba7) )
ROM_LOAD16_BYTE( "L.27C020", 0x00001, 0x40000, CRC(4699c313) SHA1(1851a4b5ad9c2bac230126d195e239a5ebe827f9) )
// Not from this PCB
ROM_REGION( 0x20000, "audiocpu", 0 ) /* Z80 code */
ROM_LOAD( "1.27C1000", 0x00000, 0x20000, CRC(b870be61) SHA1(ea5d45c3a3ab805e55806967f00167cf6366212e) ) /* banked */
@ -6480,7 +6488,8 @@ ROM_START( tdragon3h )
ROM_REGION( 0x400000, "sprites", 0 )
ROM_LOAD16_WORD_SWAP( "ww930917.7", 0x000000, 0x200000, CRC(b98873cb) SHA1(cc19200865176e940ff68e12de81f029b51c2084) ) /* Sprites */
ROM_LOAD16_WORD_SWAP( "ww930918.8", 0x200000, 0x200000, CRC(baee84b2) SHA1(b325b00e6147266dbdc840e03556004531dc2038) )
// Not from this PCB
ROM_REGION( 0x240000, "oki1", 0 ) /* OKIM6295 samples */
ROM_LOAD( "ww930916.4", 0x040000, 0x200000, CRC(07c35fe6) SHA1(33547bd88764704310f2ef8cf3bfe21ceb56d5b7) ) /* all banked */
@ -8062,7 +8071,7 @@ GAME( 1993, macross2k, macross2, macross2, macross2, nmk16_state, bank
GAME( 1993, tdragon2, 0, tdragon2, tdragon2, nmk16_state, banked_audiocpu, ROT270, "NMK", "Thunder Dragon 2 (9th Nov. 1993)", MACHINE_NO_COCKTAIL )
GAME( 1993, tdragon2a, tdragon2, tdragon2, tdragon2, nmk16_state, banked_audiocpu, ROT270, "NMK", "Thunder Dragon 2 (1st Oct. 1993)", MACHINE_NO_COCKTAIL )
GAME( 1993, bigbang, tdragon2, tdragon2, tdragon2, nmk16_state, banked_audiocpu, ROT270, "NMK", "Big Bang (9th Nov. 1993)", MACHINE_NO_COCKTAIL )
GAME( 1996, tdragon3h, tdragon2, tdragon3h, tdragon2, nmk16_state, banked_audiocpu, ROT270, "bootleg (Conny Co Ltd.)", "Thunder Dragon 3 (bootleg of Thunder Dragon 2)", MACHINE_NO_COCKTAIL ) // based on 1st Oct. 1993 set
GAME( 1996, tdragon3h, tdragon2, tdragon3h, tdragon2, nmk16_state, banked_audiocpu, ROT270, "bootleg (Conny Co Ltd.)", "Thunder Dragon 3 (bootleg of Thunder Dragon 2)", MACHINE_IMPERFECT_SOUND | MACHINE_NO_COCKTAIL ) // based on 1st Oct. 1993 set, Sound system isn't hooked up correctly for this set
/* arcadia was a name conflict to the Emerson Arcadia 2001 in mess */
GAME( 1994, arcadian, 0, raphero, raphero, nmk16_state, banked_audiocpu, ROT270, "NMK", "Arcadia (NMK)", 0 ) // 23rd July 1993 in test mode, (c)1994 on title screen
@ -8077,7 +8086,7 @@ GAME( 1993, bjtwin, 0, bjtwin, bjtwin, nmk16_state, bjtwin, ROT27
GAME( 1993, bjtwina, bjtwin, bjtwin, bjtwin, nmk16_state, bjtwin, ROT270, "NMK", "Bombjack Twin (set 2)", MACHINE_NO_COCKTAIL )
GAME( 1993, bjtwinp, bjtwin, bjtwin, bjtwin, nmk16_state, 0, ROT270, "NMK", "Bombjack Twin (prototype? with adult pictures, set 1)", MACHINE_NO_COCKTAIL ) // Cheap looking PCB, but Genuine NMK PCB, GFX aren't encrypted (maybe Korean version not proto?)
GAME( 1993, bjtwinpa, bjtwin, bjtwin, bjtwin, nmk16_state, bjtwin, ROT270, "NMK", "Bombjack Twin (prototype? with adult pictures, set 2)", MACHINE_NO_COCKTAIL ) // same PCB as above, different program revision, GFX are encrypted
GAME( 1993, atombjt, bjtwin, atombjt, atombjt, nmk16_state, 0, ROT270, "bootleg (Kyon K.)", "Atom (bootleg of Bombjack Twin)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) // some non-trivial mods to the gfx and sound hw (playmark hardware?)
GAME( 1993, atombjt, bjtwin, atombjt, atombjt, nmk16_state, atombjt, ROT270, "bootleg (Kyon K.)", "Atom (bootleg of Bombjack Twin)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) // some non-trivial mods to the gfx and sound hw (playmark hardware?)
GAME( 1995, nouryoku, 0, bjtwin, nouryoku, nmk16_state, nmk, ROT0, "Tecmo", "Nouryoku Koujou Iinkai", MACHINE_NO_COCKTAIL )

View File

@ -22,18 +22,17 @@ public:
m_palette(*this, "palette"),
m_nmk004(*this, "nmk004"),
m_soundlatch(*this, "soundlatch"),
m_nmk_bgvideoram0(*this, "nmk_bgvideoram0"),
m_nmk_bgvideoram(*this, "nmk_bgvideoram%u", 0),
m_nmk_txvideoram(*this, "nmk_txvideoram"),
m_mainram(*this, "mainram"),
m_gunnail_scrollram(*this, "scrollram"),
m_spriteram(*this, "spriteram"),
m_nmk_fgvideoram(*this, "nmk_fgvideoram"),
m_gunnail_scrollramy(*this, "scrollramy"),
m_nmk_bgvideoram1(*this, "nmk_bgvideoram1"),
m_nmk_bgvideoram2(*this, "nmk_bgvideoram2"),
m_nmk_bgvideoram3(*this, "nmk_bgvideoram3"),
m_afega_scroll_0(*this, "afega_scroll_0"),
m_afega_scroll_1(*this, "afega_scroll_1"),
m_afega_scroll(*this, "afega_scroll_%u", 0),
m_tilemap_rom(*this, "tilerom"),
m_audiobank(*this, "audiobank"),
m_okibank(*this, "okibank%u", 1),
m_sprdma_base(0x8000)
{}
@ -46,19 +45,18 @@ public:
optional_device<nmk004_device> m_nmk004;
optional_device<generic_latch_8_device> m_soundlatch;
required_shared_ptr<uint16_t> m_nmk_bgvideoram0;
optional_shared_ptr_array<uint16_t, 4> m_nmk_bgvideoram;
optional_shared_ptr<uint16_t> m_nmk_txvideoram;
required_shared_ptr<uint16_t> m_mainram;
optional_shared_ptr<uint16_t> m_gunnail_scrollram;
optional_shared_ptr<uint8_t> m_spriteram;
optional_shared_ptr<uint16_t> m_nmk_fgvideoram;
optional_shared_ptr<uint16_t> m_gunnail_scrollramy;
optional_shared_ptr<uint16_t> m_nmk_bgvideoram1;
optional_shared_ptr<uint16_t> m_nmk_bgvideoram2;
optional_shared_ptr<uint16_t> m_nmk_bgvideoram3;
optional_shared_ptr<uint16_t> m_afega_scroll_0;
optional_shared_ptr<uint16_t> m_afega_scroll_1;
optional_shared_ptr_array<uint16_t, 2> m_afega_scroll;
optional_region_ptr<uint16_t> m_tilemap_rom;
optional_memory_bank m_audiobank;
optional_memory_bank_array<2> m_okibank;
int m_sprdma_base;
int mask[4*2];
@ -70,10 +68,7 @@ public:
int m_videoshift;
int m_bioship_background_bank;
uint8_t m_bioship_scroll[4];
tilemap_t *m_bg_tilemap0;
tilemap_t *m_bg_tilemap1;
tilemap_t *m_bg_tilemap2;
tilemap_t *m_bg_tilemap3;
tilemap_t *m_bg_tilemap[4];
tilemap_t *m_tx_tilemap;
tilemap_t *m_fg_tilemap;
std::unique_ptr<bitmap_ind16> m_background_bitmap;
@ -87,27 +82,19 @@ public:
uint8_t m_coin_count[2];
uint8_t m_coin_count_frac[2];
DECLARE_WRITE16_MEMBER(nmk16_mainram_strange_w);
DECLARE_WRITE16_MEMBER(ssmissin_sound_w);
DECLARE_WRITE8_MEMBER(ssmissin_soundbank_w);
DECLARE_WRITE16_MEMBER(tharrier_mcu_control_w);
DECLARE_READ16_MEMBER(tharrier_mcu_r);
DECLARE_WRITE16_MEMBER(macross2_sound_reset_w);
DECLARE_WRITE16_MEMBER(macross2_sound_command_w);
DECLARE_WRITE8_MEMBER(macross2_sound_bank_w);
DECLARE_WRITE8_MEMBER(tharrier_oki6295_bankswitch_0_w);
DECLARE_WRITE8_MEMBER(tharrier_oki6295_bankswitch_1_w);
DECLARE_WRITE16_MEMBER(afega_soundlatch_w);
template<int Chip> DECLARE_WRITE8_MEMBER(tharrier_oki6295_bankswitch_w);
DECLARE_WRITE16_MEMBER(hachamf_mainram_w);
DECLARE_WRITE16_MEMBER(tdragon_mainram_w);
DECLARE_READ16_MEMBER(vandykeb_r);
DECLARE_READ16_MEMBER(tdragonb_prot_r);
DECLARE_READ16_MEMBER(afega_unknown_r);
DECLARE_WRITE16_MEMBER(afega_scroll0_w);
DECLARE_WRITE16_MEMBER(afega_scroll1_w);
DECLARE_WRITE16_MEMBER(nmk_bgvideoram0_w);
DECLARE_WRITE16_MEMBER(nmk_bgvideoram1_w);
DECLARE_WRITE16_MEMBER(nmk_bgvideoram2_w);
DECLARE_WRITE16_MEMBER(nmk_bgvideoram3_w);
template<int Scroll> DECLARE_WRITE16_MEMBER(afega_scroll_w);
template<int Bank> DECLARE_WRITE16_MEMBER(nmk_bgvideoram_w);
DECLARE_WRITE16_MEMBER(nmk_fgvideoram_w);
DECLARE_WRITE16_MEMBER(nmk_txvideoram_w);
DECLARE_WRITE16_MEMBER(mustang_scroll_w);
@ -141,13 +128,11 @@ public:
DECLARE_DRIVER_INIT(redfoxwp2a);
DECLARE_DRIVER_INIT(grdnstrmg);
DECLARE_DRIVER_INIT(bjtwin);
TILEMAP_MAPPER_MEMBER(afega_tilemap_scan_pages);
TILE_GET_INFO_MEMBER(macross_get_bg0_tile_info);
TILE_GET_INFO_MEMBER(macross_get_bg1_tile_info);
TILE_GET_INFO_MEMBER(macross_get_bg2_tile_info);
TILE_GET_INFO_MEMBER(macross_get_bg3_tile_info);
DECLARE_DRIVER_INIT(atombjt);
TILEMAP_MAPPER_MEMBER(tilemap_scan_pages);
template<int Bank> TILE_GET_INFO_MEMBER(common_get_bg_tile_info);
TILE_GET_INFO_MEMBER(strahl_get_fg_tile_info);
TILE_GET_INFO_MEMBER(macross_get_tx_tile_info);
TILE_GET_INFO_MEMBER(common_get_tx_tile_info);
TILE_GET_INFO_MEMBER(bjtwin_get_bg_tile_info);
TILE_GET_INFO_MEMBER(get_tile_info_0_8bit);
DECLARE_VIDEO_START(macross);

View File

@ -29,7 +29,7 @@
#define PAGES_PER_TMAP_X (0x10)
#define PAGES_PER_TMAP_Y (0x02)
TILEMAP_MAPPER_MEMBER(nmk16_state::afega_tilemap_scan_pages)
TILEMAP_MAPPER_MEMBER(nmk16_state::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) +
@ -38,27 +38,10 @@ TILEMAP_MAPPER_MEMBER(nmk16_state::afega_tilemap_scan_pages)
(col % TILES_PER_PAGE_X) * TILES_PER_PAGE_Y;
}
TILE_GET_INFO_MEMBER(nmk16_state::macross_get_bg0_tile_info)
template<int Bank>
TILE_GET_INFO_MEMBER(nmk16_state::common_get_bg_tile_info)
{
int code = m_nmk_bgvideoram0[tile_index];
SET_TILE_INFO_MEMBER(1,(code & 0xfff) + (m_bgbank << 12),code >> 12,0);
}
TILE_GET_INFO_MEMBER(nmk16_state::macross_get_bg1_tile_info)
{
int code = m_nmk_bgvideoram1[tile_index];
SET_TILE_INFO_MEMBER(1,(code & 0xfff) + (m_bgbank << 12),code >> 12,0);
}
TILE_GET_INFO_MEMBER(nmk16_state::macross_get_bg2_tile_info)
{
int code = m_nmk_bgvideoram2[tile_index];
SET_TILE_INFO_MEMBER(1,(code & 0xfff) + (m_bgbank << 12),code >> 12,0);
}
TILE_GET_INFO_MEMBER(nmk16_state::macross_get_bg3_tile_info)
{
int code = m_nmk_bgvideoram3[tile_index];
int code = m_nmk_bgvideoram[Bank][tile_index];
SET_TILE_INFO_MEMBER(1,(code & 0xfff) + (m_bgbank << 12),code >> 12,0);
}
@ -72,7 +55,7 @@ TILE_GET_INFO_MEMBER(nmk16_state::strahl_get_fg_tile_info)
0);
}
TILE_GET_INFO_MEMBER(nmk16_state::macross_get_tx_tile_info)
TILE_GET_INFO_MEMBER(nmk16_state::common_get_tx_tile_info)
{
int code = m_nmk_txvideoram[tile_index];
SET_TILE_INFO_MEMBER(0,
@ -83,7 +66,7 @@ TILE_GET_INFO_MEMBER(nmk16_state::macross_get_tx_tile_info)
TILE_GET_INFO_MEMBER(nmk16_state::bjtwin_get_bg_tile_info)
{
int code = m_nmk_bgvideoram0[tile_index];
int code = m_nmk_bgvideoram[0][tile_index];
int bank = (code & 0x800) ? 1 : 0;
SET_TILE_INFO_MEMBER(bank,
(code & 0x7ff) + ((bank) ? (m_bgbank << 11) : 0),
@ -93,7 +76,7 @@ TILE_GET_INFO_MEMBER(nmk16_state::bjtwin_get_bg_tile_info)
TILE_GET_INFO_MEMBER(nmk16_state::get_tile_info_0_8bit)
{
uint16_t code = m_nmk_bgvideoram0[tile_index];
uint16_t code = m_nmk_bgvideoram[0][tile_index];
SET_TILE_INFO_MEMBER(1,
code,
0,
@ -120,10 +103,10 @@ void nmk16_state::nmk16_video_init()
VIDEO_START_MEMBER(nmk16_state,bioship)
{
m_bg_tilemap0 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(nmk16_state::macross_get_bg0_tile_info),this), tilemap_mapper_delegate(FUNC(nmk16_state::afega_tilemap_scan_pages),this),16,16,TILES_PER_PAGE_X*PAGES_PER_TMAP_X,TILES_PER_PAGE_Y*PAGES_PER_TMAP_Y);
m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(nmk16_state::macross_get_tx_tile_info),this),TILEMAP_SCAN_COLS,8,8,32,32);
m_bg_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(nmk16_state::common_get_bg_tile_info<0>),this), tilemap_mapper_delegate(FUNC(nmk16_state::tilemap_scan_pages),this),16,16,TILES_PER_PAGE_X*PAGES_PER_TMAP_X,TILES_PER_PAGE_Y*PAGES_PER_TMAP_Y);
m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(nmk16_state::common_get_tx_tile_info),this),TILEMAP_SCAN_COLS,8,8,32,32);
m_bg_tilemap0->set_transparent_pen(15);
m_bg_tilemap[0]->set_transparent_pen(15);
m_tx_tilemap->set_transparent_pen(15);
nmk16_video_init();
@ -135,9 +118,9 @@ VIDEO_START_MEMBER(nmk16_state,bioship)
VIDEO_START_MEMBER(nmk16_state,strahl)
{
m_bg_tilemap0 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(nmk16_state::macross_get_bg0_tile_info),this), tilemap_mapper_delegate(FUNC(nmk16_state::afega_tilemap_scan_pages),this),16,16,TILES_PER_PAGE_X*PAGES_PER_TMAP_X,TILES_PER_PAGE_Y*PAGES_PER_TMAP_Y);
m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(nmk16_state::strahl_get_fg_tile_info),this), tilemap_mapper_delegate(FUNC(nmk16_state::afega_tilemap_scan_pages),this),16,16,TILES_PER_PAGE_X*PAGES_PER_TMAP_X,TILES_PER_PAGE_Y*PAGES_PER_TMAP_Y);
m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(nmk16_state::macross_get_tx_tile_info),this),TILEMAP_SCAN_COLS,8,8,32,32);
m_bg_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(nmk16_state::common_get_bg_tile_info<0>),this), tilemap_mapper_delegate(FUNC(nmk16_state::tilemap_scan_pages),this),16,16,TILES_PER_PAGE_X*PAGES_PER_TMAP_X,TILES_PER_PAGE_Y*PAGES_PER_TMAP_Y);
m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(nmk16_state::strahl_get_fg_tile_info),this), tilemap_mapper_delegate(FUNC(nmk16_state::tilemap_scan_pages),this),16,16,TILES_PER_PAGE_X*PAGES_PER_TMAP_X,TILES_PER_PAGE_Y*PAGES_PER_TMAP_Y);
m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(nmk16_state::common_get_tx_tile_info),this),TILEMAP_SCAN_COLS,8,8,32,32);
m_fg_tilemap->set_transparent_pen(15);
m_tx_tilemap->set_transparent_pen(15);
@ -149,8 +132,8 @@ VIDEO_START_MEMBER(nmk16_state,strahl)
VIDEO_START_MEMBER(nmk16_state,macross)
{
m_bg_tilemap0 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(nmk16_state::macross_get_bg0_tile_info),this), tilemap_mapper_delegate(FUNC(nmk16_state::afega_tilemap_scan_pages),this),16,16,TILES_PER_PAGE_X*PAGES_PER_TMAP_X,TILES_PER_PAGE_Y*PAGES_PER_TMAP_Y);
m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(nmk16_state::macross_get_tx_tile_info),this),TILEMAP_SCAN_COLS,8,8,32,32);
m_bg_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(nmk16_state::common_get_bg_tile_info<0>),this), tilemap_mapper_delegate(FUNC(nmk16_state::tilemap_scan_pages),this),16,16,TILES_PER_PAGE_X*PAGES_PER_TMAP_X,TILES_PER_PAGE_Y*PAGES_PER_TMAP_Y);
m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(nmk16_state::common_get_tx_tile_info),this),TILEMAP_SCAN_COLS,8,8,32,32);
m_tx_tilemap->set_transparent_pen(15);
@ -159,11 +142,11 @@ VIDEO_START_MEMBER(nmk16_state,macross)
VIDEO_START_MEMBER(nmk16_state,gunnail)
{
m_bg_tilemap0 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(nmk16_state::macross_get_bg0_tile_info),this), tilemap_mapper_delegate(FUNC(nmk16_state::afega_tilemap_scan_pages),this),16,16,TILES_PER_PAGE_X*PAGES_PER_TMAP_X,TILES_PER_PAGE_Y*PAGES_PER_TMAP_Y);
m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(nmk16_state::macross_get_tx_tile_info),this),TILEMAP_SCAN_COLS,8,8,64,32);
m_bg_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(nmk16_state::common_get_bg_tile_info<0>),this), tilemap_mapper_delegate(FUNC(nmk16_state::tilemap_scan_pages),this),16,16,TILES_PER_PAGE_X*PAGES_PER_TMAP_X,TILES_PER_PAGE_Y*PAGES_PER_TMAP_Y);
m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(nmk16_state::common_get_tx_tile_info),this),TILEMAP_SCAN_COLS,8,8,64,32);
m_tx_tilemap->set_transparent_pen(15);
m_bg_tilemap0->set_scroll_rows(512);
m_bg_tilemap[0]->set_scroll_rows(512);
nmk16_video_init();
m_videoshift = 64; /* 384x224 screen, leftmost 64 pixels have to be retrieved */
@ -173,12 +156,12 @@ VIDEO_START_MEMBER(nmk16_state,gunnail)
VIDEO_START_MEMBER(nmk16_state,macross2)
{
m_bg_tilemap0 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(nmk16_state::macross_get_bg0_tile_info),this), tilemap_mapper_delegate(FUNC(nmk16_state::afega_tilemap_scan_pages),this),16,16,TILES_PER_PAGE_X*PAGES_PER_TMAP_X,TILES_PER_PAGE_Y*PAGES_PER_TMAP_Y);
m_bg_tilemap1 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(nmk16_state::macross_get_bg1_tile_info),this), tilemap_mapper_delegate(FUNC(nmk16_state::afega_tilemap_scan_pages),this),16,16,TILES_PER_PAGE_X*PAGES_PER_TMAP_X,TILES_PER_PAGE_Y*PAGES_PER_TMAP_Y);
m_bg_tilemap2 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(nmk16_state::macross_get_bg2_tile_info),this), tilemap_mapper_delegate(FUNC(nmk16_state::afega_tilemap_scan_pages),this),16,16,TILES_PER_PAGE_X*PAGES_PER_TMAP_X,TILES_PER_PAGE_Y*PAGES_PER_TMAP_Y);
m_bg_tilemap3 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(nmk16_state::macross_get_bg3_tile_info),this), tilemap_mapper_delegate(FUNC(nmk16_state::afega_tilemap_scan_pages),this),16,16,TILES_PER_PAGE_X*PAGES_PER_TMAP_X,TILES_PER_PAGE_Y*PAGES_PER_TMAP_Y);
m_bg_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(nmk16_state::common_get_bg_tile_info<0>),this), tilemap_mapper_delegate(FUNC(nmk16_state::tilemap_scan_pages),this),16,16,TILES_PER_PAGE_X*PAGES_PER_TMAP_X,TILES_PER_PAGE_Y*PAGES_PER_TMAP_Y);
m_bg_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(nmk16_state::common_get_bg_tile_info<1>),this), tilemap_mapper_delegate(FUNC(nmk16_state::tilemap_scan_pages),this),16,16,TILES_PER_PAGE_X*PAGES_PER_TMAP_X,TILES_PER_PAGE_Y*PAGES_PER_TMAP_Y);
m_bg_tilemap[2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(nmk16_state::common_get_bg_tile_info<2>),this), tilemap_mapper_delegate(FUNC(nmk16_state::tilemap_scan_pages),this),16,16,TILES_PER_PAGE_X*PAGES_PER_TMAP_X,TILES_PER_PAGE_Y*PAGES_PER_TMAP_Y);
m_bg_tilemap[3] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(nmk16_state::common_get_bg_tile_info<3>),this), tilemap_mapper_delegate(FUNC(nmk16_state::tilemap_scan_pages),this),16,16,TILES_PER_PAGE_X*PAGES_PER_TMAP_X,TILES_PER_PAGE_Y*PAGES_PER_TMAP_Y);
m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(nmk16_state::macross_get_tx_tile_info),this),TILEMAP_SCAN_COLS,8,8,64,32);
m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(nmk16_state::common_get_tx_tile_info),this),TILEMAP_SCAN_COLS,8,8,64,32);
m_tx_tilemap->set_transparent_pen(15);
@ -195,7 +178,7 @@ VIDEO_START_MEMBER(nmk16_state,raphero)
VIDEO_START_MEMBER(nmk16_state,bjtwin)
{
m_bg_tilemap0 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(nmk16_state::bjtwin_get_bg_tile_info),this),TILEMAP_SCAN_COLS,8,8,64,32);
m_bg_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(nmk16_state::bjtwin_get_bg_tile_info),this),TILEMAP_SCAN_COLS,8,8,64,32);
nmk16_video_init();
m_videoshift = 64; /* 384x224 screen, leftmost 64 pixels have to be retrieved */
@ -203,50 +186,6 @@ VIDEO_START_MEMBER(nmk16_state,bjtwin)
}
/***************************************************************************
Memory handlers
***************************************************************************/
WRITE16_MEMBER(nmk16_state::nmk_bgvideoram0_w)
{
COMBINE_DATA(&m_nmk_bgvideoram0[offset]);
m_bg_tilemap0->mark_tile_dirty(offset);
}
WRITE16_MEMBER(nmk16_state::nmk_bgvideoram1_w)
{
COMBINE_DATA(&m_nmk_bgvideoram1[offset]);
m_bg_tilemap1->mark_tile_dirty(offset);
}
WRITE16_MEMBER(nmk16_state::nmk_bgvideoram2_w)
{
COMBINE_DATA(&m_nmk_bgvideoram2[offset]);
m_bg_tilemap2->mark_tile_dirty(offset);
}
WRITE16_MEMBER(nmk16_state::nmk_bgvideoram3_w)
{
COMBINE_DATA(&m_nmk_bgvideoram3[offset]);
m_bg_tilemap3->mark_tile_dirty(offset);
}
WRITE16_MEMBER(nmk16_state::nmk_fgvideoram_w)
{
COMBINE_DATA(&m_nmk_fgvideoram[offset]);
m_fg_tilemap->mark_tile_dirty(offset);
}
WRITE16_MEMBER(nmk16_state::nmk_txvideoram_w)
{
COMBINE_DATA(&m_nmk_txvideoram[offset]);
m_tx_tilemap->mark_tile_dirty(offset);
}
WRITE16_MEMBER(nmk16_state::mustang_scroll_w)
{
// osd_printf_debug("mustang %04x %04x %04x\n",offset,data,mem_mask);
@ -271,7 +210,7 @@ WRITE16_MEMBER(nmk16_state::mustang_scroll_w)
break;
}
m_bg_tilemap0->set_scrollx(0,m_mustang_bg_xscroll - m_videoshift);
m_bg_tilemap[0]->set_scrollx(0,m_mustang_bg_xscroll - m_videoshift);
}
WRITE16_MEMBER(nmk16_state::bioshipbg_scroll_w)
@ -281,9 +220,9 @@ WRITE16_MEMBER(nmk16_state::bioshipbg_scroll_w)
m_scroll[offset] = (data >> 8) & 0xff;
if (offset & 2)
m_bg_tilemap0->set_scrolly(0,m_scroll[2] * 256 + m_scroll[3]);
m_bg_tilemap[0]->set_scrolly(0,m_scroll[2] * 256 + m_scroll[3]);
else
m_bg_tilemap0->set_scrollx(0,m_scroll[0] * 256 + m_scroll[1] - m_videoshift);
m_bg_tilemap[0]->set_scrollx(0,m_scroll[0] * 256 + m_scroll[1] - m_videoshift);
}
}
@ -294,9 +233,9 @@ WRITE16_MEMBER(nmk16_state::nmk_scroll_w)
m_scroll[offset] = data & 0xff;
if (offset & 2)
m_bg_tilemap0->set_scrolly(0,m_scroll[2] * 256 + m_scroll[3]);
m_bg_tilemap[0]->set_scrolly(0,m_scroll[2] * 256 + m_scroll[3]);
else
m_bg_tilemap0->set_scrollx(0,m_scroll[0] * 256 + m_scroll[1] - m_videoshift);
m_bg_tilemap[0]->set_scrollx(0,m_scroll[0] * 256 + m_scroll[1] - m_videoshift);
}
}
@ -317,8 +256,8 @@ WRITE16_MEMBER(nmk16_state::vandyke_scroll_w)
{
m_vscroll[offset] = data;
m_bg_tilemap0->set_scrollx(0,m_vscroll[0] * 256 + (m_vscroll[1] >> 8));
m_bg_tilemap0->set_scrolly(0,m_vscroll[2] * 256 + (m_vscroll[3] >> 8));
m_bg_tilemap[0]->set_scrollx(0,m_vscroll[0] * 256 + (m_vscroll[1] >> 8));
m_bg_tilemap[0]->set_scrolly(0,m_vscroll[2] * 256 + (m_vscroll[3] >> 8));
}
WRITE16_MEMBER(nmk16_state::vandykeb_scroll_w)
@ -331,16 +270,16 @@ WRITE16_MEMBER(nmk16_state::vandykeb_scroll_w)
case 6: COMBINE_DATA(&m_vscroll[0]); break;
}
m_bg_tilemap0->set_scrollx(0,m_vscroll[0] * 256 + (m_vscroll[1] >> 8));
m_bg_tilemap0->set_scrolly(0,m_vscroll[2] * 256 + (m_vscroll[3] >> 8));
m_bg_tilemap[0]->set_scrollx(0,m_vscroll[0] * 256 + (m_vscroll[1] >> 8));
m_bg_tilemap[0]->set_scrolly(0,m_vscroll[2] * 256 + (m_vscroll[3] >> 8));
}
WRITE16_MEMBER(nmk16_state::manybloc_scroll_w)
{
COMBINE_DATA(&m_gunnail_scrollram[offset]);
m_bg_tilemap0->set_scrollx(0,m_gunnail_scrollram[0x82/2]-m_videoshift);
m_bg_tilemap0->set_scrolly(0,m_gunnail_scrollram[0xc2/2]);
m_bg_tilemap[0]->set_scrollx(0,m_gunnail_scrollram[0x82/2]-m_videoshift);
m_bg_tilemap[0]->set_scrolly(0,m_gunnail_scrollram[0xc2/2]);
}
WRITE16_MEMBER(nmk16_state::nmk_flipscreen_w)
@ -356,10 +295,9 @@ WRITE16_MEMBER(nmk16_state::nmk_tilebank_w)
if (m_bgbank != (data & 0xff))
{
m_bgbank = data & 0xff;
if (m_bg_tilemap0) m_bg_tilemap0->mark_all_dirty();
if (m_bg_tilemap1) m_bg_tilemap1->mark_all_dirty();
if (m_bg_tilemap2) m_bg_tilemap2->mark_all_dirty();
if (m_bg_tilemap3) m_bg_tilemap3->mark_all_dirty();
for (int bank = 0; bank < 4; bank++)
if (m_bg_tilemap[bank]) m_bg_tilemap[bank]->mark_all_dirty();
}
}
}
@ -397,12 +335,12 @@ inline void nmk16_state::nmk16_draw_sprite(bitmap_ind16 &bitmap, const rectangle
if(!(spr[0] & 0x0001))
return;
int sx = (spr[4] & 0x1FF) + m_videoshift;
int sy = spr[6] & 0x1FF;
int sx = (spr[4] & 0x1ff) + m_videoshift;
int sy = spr[6] & 0x1ff;
int code = spr[3];
int color = spr[7];
int w = spr[1] & 0x00F;
int h = (spr[1] & 0x0F0) >> 4;
int w = spr[1] & 0x00f;
int h = (spr[1] & 0x0f0) >> 4;
int xx,yy,x;
int delta = 16;
@ -424,7 +362,7 @@ inline void nmk16_state::nmk16_draw_sprite(bitmap_ind16 &bitmap, const rectangle
code,
color,
flip_screen(), flip_screen(),
((x + 16) & 0x1FF) - 16,sy & 0x1FF,15);
((x + 16) & 0x1ff) - 16,sy & 0x1ff,15);
code++;
x += delta;
} while (--xx >= 0);
@ -438,12 +376,12 @@ inline void nmk16_state::nmk16_draw_sprite_flipsupported(bitmap_ind16 &bitmap, c
if(!(spr[0] & 0x0001))
return;
int sx = (spr[4] & 0x1FF) + m_videoshift;
int sy = spr[6] & 0x1FF;
int sx = (spr[4] & 0x1ff) + m_videoshift;
int sy = spr[6] & 0x1ff;
int code = spr[3];
int color = spr[7];
int w = spr[1] & 0x00F;
int h = (spr[1] & 0x0F0) >> 4;
int w = spr[1] & 0x00f;
int h = (spr[1] & 0x0f0) >> 4;
int flipy = (spr[1] & 0x200) >> 9;
int flipx = (spr[1] & 0x100) >> 8;
@ -472,7 +410,7 @@ inline void nmk16_state::nmk16_draw_sprite_flipsupported(bitmap_ind16 &bitmap, c
code,
color,
flipx, flipy,
((x + 16) & 0x1FF) - 16,sy & 0x1FF,15);
((x + 16) & 0x1ff) - 16,sy & 0x1ff,15);
code++;
x += delta * (flipx ? -1 : 1);
} while (--xx >= 0);
@ -532,9 +470,9 @@ void nmk16_state::nmk16_draw_sprites_flipsupported(bitmap_ind16 &bitmap, const r
int nmk16_state::nmk16_bg_spr_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
m_bg_tilemap0->set_scrollx(0,-m_videoshift);
m_bg_tilemap[0]->set_scrollx(0,-m_videoshift);
m_bg_tilemap0->draw(screen, bitmap, cliprect, 0,0);
m_bg_tilemap[0]->draw(screen, bitmap, cliprect, 0,0);
nmk16_draw_sprites(bitmap,cliprect);
return 0;
@ -544,7 +482,7 @@ int nmk16_state::nmk16_bg_fg_spr_tx_update(screen_device &screen, bitmap_ind16 &
{
m_tx_tilemap->set_scrollx(0,-m_videoshift);
m_bg_tilemap0->draw(screen, bitmap, cliprect, 0,0);
m_bg_tilemap[0]->draw(screen, bitmap, cliprect, 0,0);
m_fg_tilemap->draw(screen, bitmap, cliprect, 0,0);
nmk16_draw_sprites(bitmap,cliprect);
@ -557,7 +495,7 @@ int nmk16_state::nmk16_bg_spr_tx_update(screen_device &screen, bitmap_ind16 &bit
{
m_tx_tilemap->set_scrollx(0,-m_videoshift);
m_bg_tilemap0->draw(screen, bitmap, cliprect, 0,0);
m_bg_tilemap[0]->draw(screen, bitmap, cliprect, 0,0);
nmk16_draw_sprites(bitmap,cliprect);
@ -569,7 +507,7 @@ int nmk16_state::nmk16_bg_sprflip_tx_update(screen_device &screen, bitmap_ind16
{
m_tx_tilemap->set_scrollx(0,-m_videoshift);
m_bg_tilemap0->draw(screen, bitmap, cliprect, 0,0);
m_bg_tilemap[0]->draw(screen, bitmap, cliprect, 0,0);
nmk16_draw_sprites_flipsupported(bitmap,cliprect);
@ -579,7 +517,6 @@ int nmk16_state::nmk16_bg_sprflip_tx_update(screen_device &screen, bitmap_ind16
int nmk16_state::nmk16_bioshipbg_sprflip_tx_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
uint16_t *tilerom = (uint16_t *)memregion("gfx5")->base();
int scrollx=-(m_bioship_scroll[1] + m_bioship_scroll[0]*256);
int scrolly=-(m_bioship_scroll[3] + m_bioship_scroll[2]*256);
@ -593,7 +530,7 @@ int nmk16_state::nmk16_bioshipbg_sprflip_tx_update(screen_device &screen, bitmap
/* Draw background from tile rom */
for (offs = 0;offs <0x1000;offs++) {
uint16_t data = tilerom[offs+bank];
uint16_t data = m_tilemap_rom[offs+bank];
int numtile = data&0xfff;
int color = (data&0xf000)>>12;
@ -603,7 +540,7 @@ int nmk16_state::nmk16_bioshipbg_sprflip_tx_update(screen_device &screen, bitmap
0,0, /* no flip */
16*sx,16*sy);
data = tilerom[offs+0x1000+bank];
data = m_tilemap_rom[offs+0x1000+bank];
numtile = data&0xfff;
color = (data&0xf000)>>12;
m_gfxdecode->gfx(3)->opaque(*m_background_bitmap,m_background_bitmap->cliprect(),
@ -618,7 +555,7 @@ int nmk16_state::nmk16_bioshipbg_sprflip_tx_update(screen_device &screen, bitmap
}
copyscrollbitmap(bitmap,*m_background_bitmap,1,&scrollx,1,&scrolly,cliprect);
m_bg_tilemap0->draw(screen, bitmap, cliprect, 0,0);
m_bg_tilemap[0]->draw(screen, bitmap, cliprect, 0,0);
nmk16_draw_sprites(bitmap,cliprect);
@ -630,7 +567,7 @@ int nmk16_state::nmk16_bg_sprswap_tx_update(screen_device &screen, bitmap_ind16
{
m_tx_tilemap->set_scrollx(0,-m_videoshift);
m_bg_tilemap0->draw(screen, bitmap, cliprect, 0,0);
m_bg_tilemap[0]->draw(screen, bitmap, cliprect, 0,0);
nmk16_draw_sprites_swap(bitmap,cliprect, bittbl);
@ -642,7 +579,7 @@ int nmk16_state::nmk16_bg_sprswapflip_tx_update(screen_device &screen, bitmap_in
{
m_tx_tilemap->set_scrollx(0,-m_videoshift);
m_bg_tilemap0->draw(screen, bitmap, cliprect, 0,0);
m_bg_tilemap[0]->draw(screen, bitmap, cliprect, 0,0);
nmk16_draw_sprites_swap_flipsupported(bitmap,cliprect, bittbl);
@ -665,20 +602,15 @@ int nmk16_state::nmk16_complexbg_sprswap_tx_update(screen_device &screen, bitmap
while (y1 <= cliprect.max_y)
{
int const yscroll = m_gunnail_scrollramy[0] + m_gunnail_scrollramy[y1];
int tilemap_bank_select;
tilemap_t* bg_tilemap = m_bg_tilemap0;
tilemap_t* bg_tilemap = m_bg_tilemap[0];
bgclip.min_y = y1;
bgclip.max_y = y1;
tilemap_bank_select = (m_gunnail_scrollram[0]&0x3000)>>12;
switch (tilemap_bank_select)
if (m_bg_tilemap[1] && m_bg_tilemap[2] && m_bg_tilemap[3])
{
case 0: if (m_bg_tilemap0) bg_tilemap = m_bg_tilemap0; break;
case 1: if (m_bg_tilemap1) bg_tilemap = m_bg_tilemap1; break;
case 2: if (m_bg_tilemap2) bg_tilemap = m_bg_tilemap2; break;
case 3: if (m_bg_tilemap3) bg_tilemap = m_bg_tilemap3; break;
int tilemap_bank_select = (m_gunnail_scrollram[0]&0x3000)>>12;
bg_tilemap = m_bg_tilemap[tilemap_bank_select];
}
bg_tilemap->set_scroll_rows(512);
@ -696,18 +628,14 @@ int nmk16_state::nmk16_complexbg_sprswap_tx_update(screen_device &screen, bitmap
{
uint16_t yscroll = ((m_gunnail_scrollram[2]&0xff)<<8) | ((m_gunnail_scrollram[3]&0xff)<<0);
uint16_t xscroll = ((m_gunnail_scrollram[0]&0xff)<<8) | ((m_gunnail_scrollram[1]&0xff)<<0);
int tilemap_bank_select;
tilemap_t* bg_tilemap = m_bg_tilemap0;
tilemap_t* bg_tilemap = m_bg_tilemap[0];
//popmessage( "scroll %04x, %04x", yscroll,xscroll);
tilemap_bank_select = (xscroll&0x3000)>>12;
switch (tilemap_bank_select)
if (m_bg_tilemap[1] && m_bg_tilemap[2] && m_bg_tilemap[3])
{
case 0: if (m_bg_tilemap0) bg_tilemap = m_bg_tilemap0; break;
case 1: if (m_bg_tilemap1) bg_tilemap = m_bg_tilemap1; break;
case 2: if (m_bg_tilemap2) bg_tilemap = m_bg_tilemap2; break;
case 3: if (m_bg_tilemap3) bg_tilemap = m_bg_tilemap3; break;
int tilemap_bank_select = (m_gunnail_scrollram[0]&0x3000)>>12;
bg_tilemap = m_bg_tilemap[tilemap_bank_select];
}
bg_tilemap->set_scroll_rows(1);
@ -747,7 +675,7 @@ uint32_t nmk16_state::screen_update_tharrier(screen_device &screen, bitmap_ind16
/* I think the protection device probably copies this to the regs... */
uint16_t tharrier_scroll = m_mainram[0x9f00/2];
m_bg_tilemap0->set_scrollx(0,tharrier_scroll);
m_bg_tilemap[0]->set_scrollx(0,tharrier_scroll);
return nmk16_bg_sprflip_tx_update(screen, bitmap, cliprect);
}
@ -799,15 +727,15 @@ VIDEO_START_MEMBER(nmk16_state,afega)
m_spriteram_old = make_unique_clear<uint16_t[]>(0x1000/2);
m_spriteram_old2 = make_unique_clear<uint16_t[]>(0x1000/2);
m_bg_tilemap0 = &machine().tilemap().create(
m_bg_tilemap[0] = &machine().tilemap().create(
*m_gfxdecode,
tilemap_get_info_delegate(FUNC(nmk16_state::macross_get_bg0_tile_info),this),
tilemap_mapper_delegate(FUNC(nmk16_state::afega_tilemap_scan_pages),this),
tilemap_get_info_delegate(FUNC(nmk16_state::common_get_bg_tile_info<0>),this),
tilemap_mapper_delegate(FUNC(nmk16_state::tilemap_scan_pages),this),
16,16, TILES_PER_PAGE_X*PAGES_PER_TMAP_X,TILES_PER_PAGE_Y*PAGES_PER_TMAP_Y);
m_tx_tilemap = &machine().tilemap().create(
*m_gfxdecode,
tilemap_get_info_delegate(FUNC(nmk16_state::macross_get_tx_tile_info),this),
tilemap_get_info_delegate(FUNC(nmk16_state::common_get_tx_tile_info),this),
TILEMAP_SCAN_COLS,
8,8, 32,32);
@ -821,15 +749,15 @@ VIDEO_START_MEMBER(nmk16_state,grdnstrm)
m_spriteram_old2 = make_unique_clear<uint16_t[]>(0x1000/2);
m_bg_tilemap0 = &machine().tilemap().create(
m_bg_tilemap[0] = &machine().tilemap().create(
*m_gfxdecode,
tilemap_get_info_delegate(FUNC(nmk16_state::get_tile_info_0_8bit),this),
tilemap_mapper_delegate(FUNC(nmk16_state::afega_tilemap_scan_pages),this),
tilemap_mapper_delegate(FUNC(nmk16_state::tilemap_scan_pages),this),
16,16, TILES_PER_PAGE_X*PAGES_PER_TMAP_X,TILES_PER_PAGE_Y*PAGES_PER_TMAP_Y);
m_tx_tilemap = &machine().tilemap().create(
*m_gfxdecode,
tilemap_get_info_delegate(FUNC(nmk16_state::macross_get_tx_tile_info),this),
tilemap_get_info_delegate(FUNC(nmk16_state::common_get_tx_tile_info),this),
TILEMAP_SCAN_COLS,
8,8, 32,32);
@ -843,15 +771,15 @@ VIDEO_START_MEMBER(nmk16_state,firehawk)
m_spriteram_old2 = make_unique_clear<uint16_t[]>(0x1000/2);
m_bg_tilemap0 = &machine().tilemap().create(
m_bg_tilemap[0] = &machine().tilemap().create(
*m_gfxdecode,
tilemap_get_info_delegate(FUNC(nmk16_state::get_tile_info_0_8bit),this),
tilemap_mapper_delegate(FUNC(nmk16_state::afega_tilemap_scan_pages),this),
tilemap_mapper_delegate(FUNC(nmk16_state::tilemap_scan_pages),this),
16,16, TILES_PER_PAGE_X*PAGES_PER_TMAP_X,TILES_PER_PAGE_Y*PAGES_PER_TMAP_Y);
m_tx_tilemap = &machine().tilemap().create(
*m_gfxdecode,
tilemap_get_info_delegate(FUNC(nmk16_state::macross_get_tx_tile_info),this),
tilemap_get_info_delegate(FUNC(nmk16_state::common_get_tx_tile_info),this),
TILEMAP_SCAN_COLS,
8,8, 32,32);
@ -880,14 +808,14 @@ void nmk16_state::video_update(screen_device &screen, bitmap_ind16 &bitmap, cons
}
m_bg_tilemap0->set_scrollx(0, m_afega_scroll_0[1] + xoffset);
m_bg_tilemap0->set_scrolly(0, m_afega_scroll_0[0] + yoffset);
m_bg_tilemap[0]->set_scrollx(0, m_afega_scroll[0][1] + xoffset);
m_bg_tilemap[0]->set_scrolly(0, m_afega_scroll[0][0] + yoffset);
m_tx_tilemap->set_scrollx(0, m_afega_scroll_1[1]);
m_tx_tilemap->set_scrolly(0, m_afega_scroll_1[0]);
m_tx_tilemap->set_scrollx(0, m_afega_scroll[1][1]);
m_tx_tilemap->set_scrolly(0, m_afega_scroll[1][0]);
m_bg_tilemap0->draw(screen, bitmap, cliprect, 0,0);
m_bg_tilemap[0]->draw(screen, bitmap, cliprect, 0,0);
nmk16_draw_sprites_flipsupported(bitmap,cliprect);
@ -896,10 +824,10 @@ void nmk16_state::video_update(screen_device &screen, bitmap_ind16 &bitmap, cons
void nmk16_state::redhawki_video_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
m_bg_tilemap0->set_scrollx(0, m_afega_scroll_1[0]&0xff);
m_bg_tilemap0->set_scrolly(0, m_afega_scroll_1[1]&0xff);
m_bg_tilemap[0]->set_scrollx(0, m_afega_scroll[1][0]&0xff);
m_bg_tilemap[0]->set_scrolly(0, m_afega_scroll[1][1]&0xff);
m_bg_tilemap0->draw(screen, bitmap, cliprect, 0,0);
m_bg_tilemap[0]->draw(screen, bitmap, cliprect, 0,0);
nmk16_draw_sprites_flipsupported(bitmap,cliprect);
}
@ -911,10 +839,10 @@ uint32_t nmk16_state::screen_update_redhawki(screen_device &screen, bitmap_ind16
uint32_t nmk16_state::screen_update_firehawk(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
m_bg_tilemap0->set_scrolly(0, m_afega_scroll_1[1] + 0x100);
m_bg_tilemap0->set_scrollx(0, m_afega_scroll_0[1] - 0x100);
m_bg_tilemap[0]->set_scrolly(0, m_afega_scroll[1][1] + 0x100);
m_bg_tilemap[0]->set_scrollx(0, m_afega_scroll[0][1] - 0x100);
m_bg_tilemap0->draw(screen, bitmap, cliprect, 0,0);
m_bg_tilemap[0]->draw(screen, bitmap, cliprect, 0,0);
nmk16_draw_sprites_flipsupported(bitmap,cliprect);