mirror of
https://github.com/holub/mame
synced 2025-10-05 08:41:31 +03:00
nova2001.cpp : Cleanups (#4529)
* nova2001.cpp : Cleanups Reduce duplicates, Unnecessary lines, MCFGs, Fix some namings, Spacings, Use shorter type values * nova2001.cpp : Minor constant-ization * nova2001.cpp : Minor correction, nw
This commit is contained in:
parent
44caaa47c3
commit
5f9d5494c5
@ -124,7 +124,6 @@ e000 - e7ff R/W Work RAM
|
|||||||
#include "emu.h"
|
#include "emu.h"
|
||||||
#include "includes/nova2001.h"
|
#include "includes/nova2001.h"
|
||||||
|
|
||||||
#include "cpu/z80/z80.h"
|
|
||||||
#include "machine/watchdog.h"
|
#include "machine/watchdog.h"
|
||||||
#include "sound/ay8910.h"
|
#include "sound/ay8910.h"
|
||||||
#include "screen.h"
|
#include "screen.h"
|
||||||
@ -183,7 +182,7 @@ MACHINE_START_MEMBER(nova2001_state,ninjakun)
|
|||||||
void nova2001_state::nova2001_map(address_map &map)
|
void nova2001_state::nova2001_map(address_map &map)
|
||||||
{
|
{
|
||||||
map(0x0000, 0x7fff).rom();
|
map(0x0000, 0x7fff).rom();
|
||||||
map(0xa000, 0xa7ff).ram().w(FUNC(nova2001_state::nova2001_fg_videoram_w)).share("fg_videoram");
|
map(0xa000, 0xa7ff).ram().w(FUNC(nova2001_state::fg_videoram_w)).share("fg_videoram");
|
||||||
map(0xa800, 0xafff).ram().w(FUNC(nova2001_state::nova2001_bg_videoram_w)).share("bg_videoram");
|
map(0xa800, 0xafff).ram().w(FUNC(nova2001_state::nova2001_bg_videoram_w)).share("bg_videoram");
|
||||||
map(0xb000, 0xb7ff).ram().share("spriteram");
|
map(0xb000, 0xb7ff).ram().share("spriteram");
|
||||||
map(0xb800, 0xbfff).w(FUNC(nova2001_state::nova2001_flipscreen_w));
|
map(0xb800, 0xbfff).w(FUNC(nova2001_state::nova2001_flipscreen_w));
|
||||||
@ -199,29 +198,8 @@ void nova2001_state::nova2001_map(address_map &map)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void nova2001_state::ninjakun_cpu1_map(address_map &map)
|
void nova2001_state::ninjakun_shared_map(address_map &map)
|
||||||
{
|
{
|
||||||
map(0x0000, 0x1fff).rom();
|
|
||||||
map(0x2000, 0x7fff).rom();
|
|
||||||
map(0x8000, 0x8001).w("ay1", FUNC(ay8910_device::address_data_w));
|
|
||||||
map(0x8001, 0x8001).r("ay1", FUNC(ay8910_device::data_r));
|
|
||||||
map(0x8002, 0x8003).w("ay2", FUNC(ay8910_device::address_data_w));
|
|
||||||
map(0x8003, 0x8003).r("ay2", FUNC(ay8910_device::data_r));
|
|
||||||
map(0xa000, 0xa000).portr("IN0");
|
|
||||||
map(0xa001, 0xa001).portr("IN1");
|
|
||||||
map(0xa002, 0xa002).portr("IN2").w(FUNC(nova2001_state::ninjakun_cpu1_io_A002_w));
|
|
||||||
map(0xa003, 0xa003).w(FUNC(nova2001_state::pkunwar_flipscreen_w));
|
|
||||||
map(0xc000, 0xc7ff).ram().w(FUNC(nova2001_state::nova2001_fg_videoram_w)).share("fg_videoram");
|
|
||||||
map(0xc800, 0xcfff).rw(FUNC(nova2001_state::ninjakun_bg_videoram_r), FUNC(nova2001_state::ninjakun_bg_videoram_w)).share("bg_videoram");
|
|
||||||
map(0xd000, 0xd7ff).ram().share("spriteram");
|
|
||||||
map(0xd800, 0xd9ff).ram().w(FUNC(nova2001_state::ninjakun_paletteram_w)).share("palette");
|
|
||||||
map(0xe000, 0xe3ff).ram().share("share1");
|
|
||||||
map(0xe400, 0xe7ff).ram().share("share2");
|
|
||||||
}
|
|
||||||
|
|
||||||
void nova2001_state::ninjakun_cpu2_map(address_map &map)
|
|
||||||
{
|
|
||||||
map(0x0000, 0x1fff).rom();
|
|
||||||
map(0x2000, 0x7fff).rom().region("maincpu", 0x2000);
|
map(0x2000, 0x7fff).rom().region("maincpu", 0x2000);
|
||||||
map(0x8000, 0x8001).w("ay1", FUNC(ay8910_device::address_data_w));
|
map(0x8000, 0x8001).w("ay1", FUNC(ay8910_device::address_data_w));
|
||||||
map(0x8001, 0x8001).r("ay1", FUNC(ay8910_device::data_r));
|
map(0x8001, 0x8001).r("ay1", FUNC(ay8910_device::data_r));
|
||||||
@ -229,12 +207,29 @@ void nova2001_state::ninjakun_cpu2_map(address_map &map)
|
|||||||
map(0x8003, 0x8003).r("ay2", FUNC(ay8910_device::data_r));
|
map(0x8003, 0x8003).r("ay2", FUNC(ay8910_device::data_r));
|
||||||
map(0xa000, 0xa000).portr("IN0");
|
map(0xa000, 0xa000).portr("IN0");
|
||||||
map(0xa001, 0xa001).portr("IN1");
|
map(0xa001, 0xa001).portr("IN1");
|
||||||
map(0xa002, 0xa002).portr("IN2").w(FUNC(nova2001_state::ninjakun_cpu2_io_A002_w));
|
map(0xa002, 0xa002).portr("IN2");
|
||||||
map(0xa003, 0xa003).w(FUNC(nova2001_state::nova2001_flipscreen_w));
|
map(0xc000, 0xc7ff).ram().w(FUNC(nova2001_state::fg_videoram_w)).share("fg_videoram");
|
||||||
map(0xc000, 0xc7ff).ram().w(FUNC(nova2001_state::nova2001_fg_videoram_w)).share("fg_videoram");
|
|
||||||
map(0xc800, 0xcfff).rw(FUNC(nova2001_state::ninjakun_bg_videoram_r), FUNC(nova2001_state::ninjakun_bg_videoram_w)).share("bg_videoram");
|
map(0xc800, 0xcfff).rw(FUNC(nova2001_state::ninjakun_bg_videoram_r), FUNC(nova2001_state::ninjakun_bg_videoram_w)).share("bg_videoram");
|
||||||
map(0xd000, 0xd7ff).ram().share("spriteram");
|
map(0xd000, 0xd7ff).ram().share("spriteram");
|
||||||
map(0xd800, 0xd9ff).ram().w(FUNC(nova2001_state::ninjakun_paletteram_w)).share("palette");
|
map(0xd800, 0xd9ff).ram().w(FUNC(nova2001_state::paletteram_w)).share("palette");
|
||||||
|
}
|
||||||
|
|
||||||
|
void nova2001_state::ninjakun_cpu1_map(address_map &map)
|
||||||
|
{
|
||||||
|
ninjakun_shared_map(map);
|
||||||
|
map(0x0000, 0x1fff).rom().region("maincpu", 0);
|
||||||
|
map(0xa002, 0xa002).w(FUNC(nova2001_state::ninjakun_cpu1_io_A002_w));
|
||||||
|
map(0xa003, 0xa003).w(FUNC(nova2001_state::pkunwar_flipscreen_w));
|
||||||
|
map(0xe000, 0xe3ff).ram().share("share1");
|
||||||
|
map(0xe400, 0xe7ff).ram().share("share2");
|
||||||
|
}
|
||||||
|
|
||||||
|
void nova2001_state::ninjakun_cpu2_map(address_map &map)
|
||||||
|
{
|
||||||
|
ninjakun_shared_map(map);
|
||||||
|
map(0x0000, 0x1fff).rom().region("sub", 0);
|
||||||
|
map(0xa002, 0xa002).w(FUNC(nova2001_state::ninjakun_cpu2_io_A002_w));
|
||||||
|
map(0xa003, 0xa003).w(FUNC(nova2001_state::nova2001_flipscreen_w));
|
||||||
map(0xe000, 0xe3ff).ram().share("share2"); /* swapped wrt CPU1 */
|
map(0xe000, 0xe3ff).ram().share("share2"); /* swapped wrt CPU1 */
|
||||||
map(0xe400, 0xe7ff).ram().share("share1"); /* swapped wrt CPU1 */
|
map(0xe400, 0xe7ff).ram().share("share1"); /* swapped wrt CPU1 */
|
||||||
}
|
}
|
||||||
@ -264,16 +259,16 @@ void nova2001_state::raiders5_cpu1_map(address_map &map)
|
|||||||
{
|
{
|
||||||
map(0x0000, 0x7fff).rom();
|
map(0x0000, 0x7fff).rom();
|
||||||
map(0x8000, 0x87ff).ram().share("spriteram");
|
map(0x8000, 0x87ff).ram().share("spriteram");
|
||||||
map(0x8800, 0x8fff).ram().w(FUNC(nova2001_state::nova2001_fg_videoram_w)).share("fg_videoram");
|
map(0x8800, 0x8fff).ram().w(FUNC(nova2001_state::fg_videoram_w)).share("fg_videoram");
|
||||||
map(0x9000, 0x97ff).rw(FUNC(nova2001_state::ninjakun_bg_videoram_r), FUNC(nova2001_state::ninjakun_bg_videoram_w)).share("bg_videoram");
|
map(0x9000, 0x97ff).rw(FUNC(nova2001_state::ninjakun_bg_videoram_r), FUNC(nova2001_state::ninjakun_bg_videoram_w)).share("bg_videoram");
|
||||||
map(0xa000, 0xa000).w(FUNC(nova2001_state::nova2001_scroll_x_w));
|
map(0xa000, 0xa000).w(FUNC(nova2001_state::scroll_x_w));
|
||||||
map(0xa001, 0xa001).w(FUNC(nova2001_state::nova2001_scroll_y_w));
|
map(0xa001, 0xa001).w(FUNC(nova2001_state::scroll_y_w));
|
||||||
map(0xa002, 0xa002).w(FUNC(nova2001_state::pkunwar_flipscreen_w));
|
map(0xa002, 0xa002).w(FUNC(nova2001_state::pkunwar_flipscreen_w));
|
||||||
map(0xc000, 0xc001).w("ay1", FUNC(ay8910_device::address_data_w));
|
map(0xc000, 0xc001).w("ay1", FUNC(ay8910_device::address_data_w));
|
||||||
map(0xc001, 0xc001).r("ay1", FUNC(ay8910_device::data_r));
|
map(0xc001, 0xc001).r("ay1", FUNC(ay8910_device::data_r));
|
||||||
map(0xc002, 0xc003).w("ay2", FUNC(ay8910_device::address_data_w));
|
map(0xc002, 0xc003).w("ay2", FUNC(ay8910_device::address_data_w));
|
||||||
map(0xc003, 0xc003).r("ay2", FUNC(ay8910_device::data_r));
|
map(0xc003, 0xc003).r("ay2", FUNC(ay8910_device::data_r));
|
||||||
map(0xd000, 0xd1ff).ram().w(FUNC(nova2001_state::ninjakun_paletteram_w)).share("palette");
|
map(0xd000, 0xd1ff).ram().w(FUNC(nova2001_state::paletteram_w)).share("palette");
|
||||||
map(0xe000, 0xe7ff).ram().share("share1");
|
map(0xe000, 0xe7ff).ram().share("share1");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -289,8 +284,8 @@ void nova2001_state::raiders5_cpu2_map(address_map &map)
|
|||||||
map(0xc000, 0xc000).nopr(); /* unknown */
|
map(0xc000, 0xc000).nopr(); /* unknown */
|
||||||
map(0xc800, 0xc800).nopr(); /* unknown */
|
map(0xc800, 0xc800).nopr(); /* unknown */
|
||||||
map(0xd000, 0xd000).nopr(); /* unknown */
|
map(0xd000, 0xd000).nopr(); /* unknown */
|
||||||
map(0xe000, 0xe000).w(FUNC(nova2001_state::nova2001_scroll_x_w));
|
map(0xe000, 0xe000).w(FUNC(nova2001_state::scroll_x_w));
|
||||||
map(0xe001, 0xe001).w(FUNC(nova2001_state::nova2001_scroll_y_w));
|
map(0xe001, 0xe001).w(FUNC(nova2001_state::scroll_y_w));
|
||||||
map(0xe002, 0xe002).w(FUNC(nova2001_state::pkunwar_flipscreen_w));
|
map(0xe002, 0xe002).w(FUNC(nova2001_state::pkunwar_flipscreen_w));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -646,22 +641,22 @@ GFXDECODE_END
|
|||||||
*
|
*
|
||||||
*************************************/
|
*************************************/
|
||||||
|
|
||||||
MACHINE_CONFIG_START(nova2001_state::nova2001)
|
void nova2001_state::nova2001(machine_config &config)
|
||||||
|
{
|
||||||
/* basic machine hardware */
|
/* basic machine hardware */
|
||||||
MCFG_DEVICE_ADD("maincpu", Z80, MAIN_CLOCK/4) // 3 MHz verified on schematics
|
Z80(config, m_maincpu, MAIN_CLOCK/4); // 3 MHz verified on schematics
|
||||||
MCFG_DEVICE_PROGRAM_MAP(nova2001_map)
|
m_maincpu->set_addrmap(AS_PROGRAM, &nova2001_state::nova2001_map);
|
||||||
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", nova2001_state, irq0_line_hold)
|
m_maincpu->set_vblank_int("screen", FUNC(nova2001_state::irq0_line_hold));
|
||||||
|
|
||||||
WATCHDOG_TIMER(config, "watchdog");
|
WATCHDOG_TIMER(config, "watchdog");
|
||||||
|
|
||||||
/* video hardware */
|
/* video hardware */
|
||||||
MCFG_SCREEN_ADD("screen", RASTER)
|
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
|
||||||
MCFG_SCREEN_REFRESH_RATE(60)
|
screen.set_refresh_hz(60);
|
||||||
MCFG_SCREEN_SIZE(32*8, 32*8)
|
screen.set_size(32*8, 32*8);
|
||||||
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 4*8, 28*8-1)
|
screen.set_visarea(0*8, 32*8-1, 4*8, 28*8-1);
|
||||||
MCFG_SCREEN_UPDATE_DRIVER(nova2001_state, screen_update_nova2001)
|
screen.set_screen_update(FUNC(nova2001_state::screen_update_nova2001));
|
||||||
MCFG_SCREEN_PALETTE(m_palette)
|
screen.set_palette(m_palette);
|
||||||
|
|
||||||
GFXDECODE(config, m_gfxdecode, m_palette, gfx_nova2001);
|
GFXDECODE(config, m_gfxdecode, m_palette, gfx_nova2001);
|
||||||
PALETTE(config, m_palette, FUNC(nova2001_state::nova2001_palette)).set_format(1, &nova2001_state::BBGGRRII, 512);
|
PALETTE(config, m_palette, FUNC(nova2001_state::nova2001_palette)).set_format(1, &nova2001_state::BBGGRRII, 512);
|
||||||
@ -672,39 +667,38 @@ MACHINE_CONFIG_START(nova2001_state::nova2001)
|
|||||||
SPEAKER(config, "mono").front_center();
|
SPEAKER(config, "mono").front_center();
|
||||||
|
|
||||||
ay8910_device &ay1(AY8910(config, "ay1", MAIN_CLOCK/6)); // 2 MHz verified on schematics
|
ay8910_device &ay1(AY8910(config, "ay1", MAIN_CLOCK/6)); // 2 MHz verified on schematics
|
||||||
ay1.port_a_write_callback().set(FUNC(nova2001_state::nova2001_scroll_x_w));
|
ay1.port_a_write_callback().set(FUNC(nova2001_state::scroll_x_w));
|
||||||
ay1.port_b_write_callback().set(FUNC(nova2001_state::nova2001_scroll_y_w));
|
ay1.port_b_write_callback().set(FUNC(nova2001_state::scroll_y_w));
|
||||||
ay1.add_route(ALL_OUTPUTS, "mono", 0.25);
|
ay1.add_route(ALL_OUTPUTS, "mono", 0.25);
|
||||||
|
|
||||||
ay8910_device &ay2(AY8910(config, "ay2", MAIN_CLOCK/6));
|
ay8910_device &ay2(AY8910(config, "ay2", MAIN_CLOCK/6));
|
||||||
ay2.port_a_read_callback().set_ioport("DSW1");
|
ay2.port_a_read_callback().set_ioport("DSW1");
|
||||||
ay2.port_b_read_callback().set_ioport("DSW2");
|
ay2.port_b_read_callback().set_ioport("DSW2");
|
||||||
ay2.add_route(ALL_OUTPUTS, "mono", 0.25);
|
ay2.add_route(ALL_OUTPUTS, "mono", 0.25);
|
||||||
MACHINE_CONFIG_END
|
}
|
||||||
|
|
||||||
MACHINE_CONFIG_START(nova2001_state::ninjakun)
|
|
||||||
|
|
||||||
|
void nova2001_state::ninjakun(machine_config &config)
|
||||||
|
{
|
||||||
/* basic machine hardware */
|
/* basic machine hardware */
|
||||||
MCFG_DEVICE_ADD("maincpu", Z80, MAIN_CLOCK/4) // 3 MHz
|
Z80(config, m_maincpu, MAIN_CLOCK/4); // 3 MHz
|
||||||
MCFG_DEVICE_PROGRAM_MAP(ninjakun_cpu1_map)
|
m_maincpu->set_addrmap(AS_PROGRAM, &nova2001_state::ninjakun_cpu1_map);
|
||||||
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", nova2001_state, irq0_line_hold)
|
m_maincpu->set_vblank_int("screen", FUNC(nova2001_state::irq0_line_hold));
|
||||||
|
|
||||||
MCFG_DEVICE_ADD("sub", Z80, MAIN_CLOCK/4) // 3 MHz
|
z80_device &subcpu(Z80(config, "sub", MAIN_CLOCK/4)); // 3 MHz
|
||||||
MCFG_DEVICE_PROGRAM_MAP(ninjakun_cpu2_map)
|
subcpu.set_addrmap(AS_PROGRAM, &nova2001_state::ninjakun_cpu2_map);
|
||||||
MCFG_DEVICE_PERIODIC_INT_DRIVER(nova2001_state, irq0_line_hold, 4*60) /* ? */
|
subcpu.set_periodic_int(FUNC(nova2001_state::irq0_line_hold), attotime::from_hz(4*60)); /* ? */
|
||||||
|
|
||||||
config.m_minimum_quantum = attotime::from_hz(6000); /* 100 CPU slices per frame */
|
config.m_minimum_quantum = attotime::from_hz(6000); /* 100 CPU slices per frame */
|
||||||
|
|
||||||
MCFG_MACHINE_START_OVERRIDE(nova2001_state,ninjakun)
|
MCFG_MACHINE_START_OVERRIDE(nova2001_state,ninjakun)
|
||||||
|
|
||||||
/* video hardware */
|
/* video hardware */
|
||||||
|
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
|
||||||
MCFG_SCREEN_ADD("screen", RASTER)
|
screen.set_refresh_hz(60);
|
||||||
MCFG_SCREEN_REFRESH_RATE(60)
|
screen.set_size(32*8, 32*8);
|
||||||
MCFG_SCREEN_SIZE(32*8, 32*8)
|
screen.set_visarea(0*8, 32*8-1, 4*8, 28*8-1);
|
||||||
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 4*8, 28*8-1 )
|
screen.set_screen_update(FUNC(nova2001_state::screen_update_ninjakun));
|
||||||
MCFG_SCREEN_UPDATE_DRIVER(nova2001_state, screen_update_ninjakun)
|
screen.set_palette(m_palette);
|
||||||
MCFG_SCREEN_PALETTE(m_palette)
|
|
||||||
|
|
||||||
GFXDECODE(config, m_gfxdecode, m_palette, gfx_ninjakun);
|
GFXDECODE(config, m_gfxdecode, m_palette, gfx_ninjakun);
|
||||||
PALETTE(config, m_palette).set_format(1, &nova2001_state::BBGGRRII, 768);
|
PALETTE(config, m_palette).set_format(1, &nova2001_state::BBGGRRII, 768);
|
||||||
@ -720,26 +714,26 @@ MACHINE_CONFIG_START(nova2001_state::ninjakun)
|
|||||||
ay1.add_route(ALL_OUTPUTS, "mono", 0.20);
|
ay1.add_route(ALL_OUTPUTS, "mono", 0.20);
|
||||||
|
|
||||||
ay8910_device &ay2(AY8910(config, "ay2", MAIN_CLOCK/4)); // 3 MHz
|
ay8910_device &ay2(AY8910(config, "ay2", MAIN_CLOCK/4)); // 3 MHz
|
||||||
ay2.port_a_write_callback().set(FUNC(nova2001_state::nova2001_scroll_x_w));
|
ay2.port_a_write_callback().set(FUNC(nova2001_state::scroll_x_w));
|
||||||
ay2.port_b_write_callback().set(FUNC(nova2001_state::nova2001_scroll_y_w));
|
ay2.port_b_write_callback().set(FUNC(nova2001_state::scroll_y_w));
|
||||||
ay2.add_route(ALL_OUTPUTS, "mono", 0.20);
|
ay2.add_route(ALL_OUTPUTS, "mono", 0.20);
|
||||||
MACHINE_CONFIG_END
|
}
|
||||||
|
|
||||||
MACHINE_CONFIG_START(nova2001_state::pkunwar)
|
|
||||||
|
|
||||||
|
void nova2001_state::pkunwar(machine_config &config)
|
||||||
|
{
|
||||||
/* basic machine hardware */
|
/* basic machine hardware */
|
||||||
MCFG_DEVICE_ADD("maincpu", Z80, MAIN_CLOCK/4) // 3 MHz
|
Z80(config, m_maincpu, MAIN_CLOCK/4); // 3 MHz
|
||||||
MCFG_DEVICE_PROGRAM_MAP(pkunwar_map)
|
m_maincpu->set_addrmap(AS_PROGRAM, &nova2001_state::pkunwar_map);
|
||||||
MCFG_DEVICE_IO_MAP(pkunwar_io)
|
m_maincpu->set_addrmap(AS_IO, &nova2001_state::pkunwar_io);
|
||||||
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", nova2001_state, irq0_line_hold)
|
m_maincpu->set_vblank_int("screen", FUNC(nova2001_state::irq0_line_hold));
|
||||||
|
|
||||||
/* video hardware */
|
/* video hardware */
|
||||||
MCFG_SCREEN_ADD("screen", RASTER)
|
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
|
||||||
MCFG_SCREEN_REFRESH_RATE(60)
|
screen.set_refresh_hz(60);
|
||||||
MCFG_SCREEN_SIZE(32*8, 32*8)
|
screen.set_size(32*8, 32*8);
|
||||||
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 4*8, 28*8-1)
|
screen.set_visarea(0*8, 32*8-1, 4*8, 28*8-1);
|
||||||
MCFG_SCREEN_UPDATE_DRIVER(nova2001_state, screen_update_pkunwar)
|
screen.set_screen_update(FUNC(nova2001_state::screen_update_pkunwar));
|
||||||
MCFG_SCREEN_PALETTE(m_palette)
|
screen.set_palette(m_palette);
|
||||||
|
|
||||||
GFXDECODE(config, m_gfxdecode, m_palette, gfx_pkunwar);
|
GFXDECODE(config, m_gfxdecode, m_palette, gfx_pkunwar);
|
||||||
PALETTE(config, m_palette, FUNC(nova2001_state::nova2001_palette)).set_format(1, &nova2001_state::BBGGRRII, 512);
|
PALETTE(config, m_palette, FUNC(nova2001_state::nova2001_palette)).set_format(1, &nova2001_state::BBGGRRII, 512);
|
||||||
@ -758,29 +752,29 @@ MACHINE_CONFIG_START(nova2001_state::pkunwar)
|
|||||||
ay2.port_a_read_callback().set_ioport("IN2");
|
ay2.port_a_read_callback().set_ioport("IN2");
|
||||||
ay2.port_b_read_callback().set_ioport("DSW1");
|
ay2.port_b_read_callback().set_ioport("DSW1");
|
||||||
ay2.add_route(ALL_OUTPUTS, "mono", 0.25);
|
ay2.add_route(ALL_OUTPUTS, "mono", 0.25);
|
||||||
MACHINE_CONFIG_END
|
}
|
||||||
|
|
||||||
MACHINE_CONFIG_START(nova2001_state::raiders5)
|
|
||||||
|
|
||||||
|
void nova2001_state::raiders5(machine_config &config)
|
||||||
|
{
|
||||||
/* basic machine hardware */
|
/* basic machine hardware */
|
||||||
MCFG_DEVICE_ADD("maincpu", Z80, MAIN_CLOCK/4) // 3 MHz
|
Z80(config, m_maincpu, MAIN_CLOCK/4); // 3 MHz
|
||||||
MCFG_DEVICE_PROGRAM_MAP(raiders5_cpu1_map)
|
m_maincpu->set_addrmap(AS_PROGRAM, &nova2001_state::raiders5_cpu1_map);
|
||||||
MCFG_DEVICE_IO_MAP(raiders5_io)
|
m_maincpu->set_addrmap(AS_IO, &nova2001_state::raiders5_io);
|
||||||
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", nova2001_state, irq0_line_hold)
|
m_maincpu->set_vblank_int("screen", FUNC(nova2001_state::irq0_line_hold));
|
||||||
|
|
||||||
MCFG_DEVICE_ADD("sub", Z80, MAIN_CLOCK/4) // 3 MHz
|
z80_device &subcpu(Z80(config, "sub", MAIN_CLOCK/4)); // 3 MHz
|
||||||
MCFG_DEVICE_PROGRAM_MAP(raiders5_cpu2_map)
|
subcpu.set_addrmap(AS_PROGRAM, &nova2001_state::raiders5_cpu2_map);
|
||||||
MCFG_DEVICE_PERIODIC_INT_DRIVER(nova2001_state, irq0_line_hold, 4*60) /* ? */
|
subcpu.set_periodic_int(FUNC(nova2001_state::irq0_line_hold), attotime::from_hz(4*60)); /* ? */
|
||||||
|
|
||||||
config.m_minimum_quantum = attotime::from_hz(24000);
|
config.m_minimum_quantum = attotime::from_hz(24000);
|
||||||
|
|
||||||
/* video hardware */
|
/* video hardware */
|
||||||
MCFG_SCREEN_ADD("screen", RASTER)
|
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
|
||||||
MCFG_SCREEN_REFRESH_RATE(60)
|
screen.set_refresh_hz(60);
|
||||||
MCFG_SCREEN_SIZE(32*8, 32*8)
|
screen.set_size(32*8, 32*8);
|
||||||
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 4*8, 28*8-1)
|
screen.set_visarea(0*8, 32*8-1, 4*8, 28*8-1);
|
||||||
MCFG_SCREEN_UPDATE_DRIVER(nova2001_state, screen_update_raiders5)
|
screen.set_screen_update(FUNC(nova2001_state::screen_update_raiders5));
|
||||||
MCFG_SCREEN_PALETTE(m_palette)
|
screen.set_palette(m_palette);
|
||||||
|
|
||||||
GFXDECODE(config, m_gfxdecode, m_palette, gfx_raiders5);
|
GFXDECODE(config, m_gfxdecode, m_palette, gfx_raiders5);
|
||||||
PALETTE(config, m_palette).set_format(1, &nova2001_state::BBGGRRII, 768);
|
PALETTE(config, m_palette).set_format(1, &nova2001_state::BBGGRRII, 768);
|
||||||
@ -799,7 +793,7 @@ MACHINE_CONFIG_START(nova2001_state::raiders5)
|
|||||||
ay2.port_a_read_callback().set_ioport("IN2");
|
ay2.port_a_read_callback().set_ioport("IN2");
|
||||||
ay2.port_b_read_callback().set_ioport("DSW1");
|
ay2.port_b_read_callback().set_ioport("DSW1");
|
||||||
ay2.add_route(ALL_OUTPUTS, "mono", 0.25);
|
ay2.add_route(ALL_OUTPUTS, "mono", 0.25);
|
||||||
MACHINE_CONFIG_END
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -866,13 +860,13 @@ ROM_START( nova2001u )
|
|||||||
ROM_END
|
ROM_END
|
||||||
|
|
||||||
ROM_START( ninjakun ) /* Original Board? */
|
ROM_START( ninjakun ) /* Original Board? */
|
||||||
ROM_REGION( 0x10000, "maincpu", 0 )
|
ROM_REGION( 0x8000, "maincpu", 0 )
|
||||||
ROM_LOAD( "ninja-1.7a", 0x0000, 0x02000, CRC(1c1dc141) SHA1(423d3ed35e73a8d5bfce075a889b0322b207bd0d) )
|
ROM_LOAD( "ninja-1.7a", 0x0000, 0x02000, CRC(1c1dc141) SHA1(423d3ed35e73a8d5bfce075a889b0322b207bd0d) )
|
||||||
ROM_LOAD( "ninja-2.7b", 0x2000, 0x02000, CRC(39cc7d37) SHA1(7f0d0e1e92cb6a57f15eb7fc51a67112f1c5fc8e) )
|
ROM_LOAD( "ninja-2.7b", 0x2000, 0x02000, CRC(39cc7d37) SHA1(7f0d0e1e92cb6a57f15eb7fc51a67112f1c5fc8e) )
|
||||||
ROM_LOAD( "ninja-3.7d", 0x4000, 0x02000, CRC(d542bfe3) SHA1(3814d8f5b1acda21438fff4f71670fa653dc7b30) )
|
ROM_LOAD( "ninja-3.7d", 0x4000, 0x02000, CRC(d542bfe3) SHA1(3814d8f5b1acda21438fff4f71670fa653dc7b30) )
|
||||||
ROM_LOAD( "ninja-4.7e", 0x6000, 0x02000, CRC(a57385c6) SHA1(77925a281e64889bfe967c3d42a388529aaf7eb6) )
|
ROM_LOAD( "ninja-4.7e", 0x6000, 0x02000, CRC(a57385c6) SHA1(77925a281e64889bfe967c3d42a388529aaf7eb6) )
|
||||||
|
|
||||||
ROM_REGION( 0x10000, "sub", 0 )
|
ROM_REGION( 0x2000, "sub", 0 )
|
||||||
ROM_LOAD( "ninja-5.7h", 0x0000, 0x02000, CRC(164a42c4) SHA1(16b434b33b76b878514f67c23315d4c6da7bfc9e) )
|
ROM_LOAD( "ninja-5.7h", 0x0000, 0x02000, CRC(164a42c4) SHA1(16b434b33b76b878514f67c23315d4c6da7bfc9e) )
|
||||||
|
|
||||||
ROM_REGION( 0x08000, "gfx1", 0 )
|
ROM_REGION( 0x08000, "gfx1", 0 )
|
||||||
@ -921,11 +915,11 @@ ROM_START( pkunwarj )
|
|||||||
ROM_END
|
ROM_END
|
||||||
|
|
||||||
ROM_START( raiders5 )
|
ROM_START( raiders5 )
|
||||||
ROM_REGION( 0x10000, "maincpu", 0 )
|
ROM_REGION( 0x8000, "maincpu", 0 )
|
||||||
ROM_LOAD( "raiders5.1", 0x0000, 0x4000, CRC(47cea11f) SHA1(0499e6627ad9c16775fdc59f2ff56dfdfc23490a) )
|
ROM_LOAD( "raiders5.1", 0x0000, 0x4000, CRC(47cea11f) SHA1(0499e6627ad9c16775fdc59f2ff56dfdfc23490a) )
|
||||||
ROM_LOAD( "raiders5.2", 0x4000, 0x4000, CRC(eb2ff410) SHA1(5c995b66b6301cd3cd58efd173481deaa036f842) )
|
ROM_LOAD( "raiders5.2", 0x4000, 0x4000, CRC(eb2ff410) SHA1(5c995b66b6301cd3cd58efd173481deaa036f842) )
|
||||||
|
|
||||||
ROM_REGION( 0x10000, "sub", 0 )
|
ROM_REGION( 0x4000, "sub", 0 )
|
||||||
ROM_LOAD( "raiders5.2", 0x0000, 0x4000, CRC(eb2ff410) SHA1(5c995b66b6301cd3cd58efd173481deaa036f842) )
|
ROM_LOAD( "raiders5.2", 0x0000, 0x4000, CRC(eb2ff410) SHA1(5c995b66b6301cd3cd58efd173481deaa036f842) )
|
||||||
|
|
||||||
ROM_REGION( 0x8000, "gfx1", 0 ) // (need lineswapping)
|
ROM_REGION( 0x8000, "gfx1", 0 ) // (need lineswapping)
|
||||||
@ -937,11 +931,11 @@ ROM_START( raiders5 )
|
|||||||
ROM_END
|
ROM_END
|
||||||
|
|
||||||
ROM_START( raiders5t )
|
ROM_START( raiders5t )
|
||||||
ROM_REGION( 0x10000, "maincpu", 0 )
|
ROM_REGION( 0x8000, "maincpu", 0 )
|
||||||
ROM_LOAD( "raiders1.4c", 0x0000, 0x4000, CRC(4e2d5679) SHA1(a1c1603ba98814a83b92ad024ca4422aea872111) )
|
ROM_LOAD( "raiders1.4c", 0x0000, 0x4000, CRC(4e2d5679) SHA1(a1c1603ba98814a83b92ad024ca4422aea872111) )
|
||||||
ROM_LOAD( "raiders2.4d", 0x4000, 0x4000, CRC(c8604be1) SHA1(6d23f26174bb9b2f7db3a5fa6b39674fe237135b) )
|
ROM_LOAD( "raiders2.4d", 0x4000, 0x4000, CRC(c8604be1) SHA1(6d23f26174bb9b2f7db3a5fa6b39674fe237135b) )
|
||||||
|
|
||||||
ROM_REGION( 0x10000, "sub", 0 )
|
ROM_REGION( 0x4000, "sub", 0 )
|
||||||
ROM_LOAD( "raiders2.4d", 0x0000, 0x4000, CRC(c8604be1) SHA1(6d23f26174bb9b2f7db3a5fa6b39674fe237135b) )
|
ROM_LOAD( "raiders2.4d", 0x0000, 0x4000, CRC(c8604be1) SHA1(6d23f26174bb9b2f7db3a5fa6b39674fe237135b) )
|
||||||
|
|
||||||
ROM_REGION( 0x8000, "gfx1", 0 ) // (need lineswapping)
|
ROM_REGION( 0x8000, "gfx1", 0 ) // (need lineswapping)
|
||||||
@ -973,7 +967,7 @@ To make it possible to decode graphics without resorting to ROM_CONTINUE
|
|||||||
trickery, this function makes an address line rotation, bringing bit "bit" to
|
trickery, this function makes an address line rotation, bringing bit "bit" to
|
||||||
bit 0 and shifting left by one place all the intervening bits.
|
bit 0 and shifting left by one place all the intervening bits.
|
||||||
|
|
||||||
This code is overly generic because it is used for several games in ninjakd2.c
|
This code is overly generic because it is used for several games in ninjakd2.cpp
|
||||||
|
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
|
|
||||||
@ -981,9 +975,9 @@ void nova2001_state::lineswap_gfx_roms(const char *region, const int bit)
|
|||||||
{
|
{
|
||||||
const int length = memregion(region)->bytes();
|
const int length = memregion(region)->bytes();
|
||||||
|
|
||||||
uint8_t* const src = memregion(region)->base();
|
u8* const src = memregion(region)->base();
|
||||||
|
|
||||||
std::vector<uint8_t> temp(length);
|
std::vector<u8> temp(length);
|
||||||
|
|
||||||
const int mask = (1 << (bit + 1)) - 1;
|
const int mask = (1 << (bit + 1)) - 1;
|
||||||
|
|
||||||
@ -1028,7 +1022,7 @@ void nova2001_state::init_raiders5()
|
|||||||
|
|
||||||
// many of these don't explicitly state Japan, eg. Nova 2001 could easily be used anywhere.
|
// many of these don't explicitly state Japan, eg. Nova 2001 could easily be used anywhere.
|
||||||
|
|
||||||
// YEAR, NAME, PARENT, MACHINE, INPUT, STATE, INIT, MONITOR,COMPANY,FULLNAME,FLAGS
|
// YEAR, NAME, PARENT, MACHINE, INPUT, STATE, INIT, MONITOR,COMPANY,FULLNAME,FLAGS
|
||||||
GAME( 1983, nova2001, 0, nova2001, nova2001, nova2001_state, empty_init, ROT0, "UPL", "Nova 2001 (Japan)", MACHINE_SUPPORTS_SAVE )
|
GAME( 1983, nova2001, 0, nova2001, nova2001, nova2001_state, empty_init, ROT0, "UPL", "Nova 2001 (Japan)", MACHINE_SUPPORTS_SAVE )
|
||||||
GAME( 1983, nova2001h, nova2001, nova2001, nova2001, nova2001_state, empty_init, ROT0, "UPL", "Nova 2001 (Japan, hack?)", MACHINE_SUPPORTS_SAVE )
|
GAME( 1983, nova2001h, nova2001, nova2001, nova2001, nova2001_state, empty_init, ROT0, "UPL", "Nova 2001 (Japan, hack?)", MACHINE_SUPPORTS_SAVE )
|
||||||
GAME( 1983, nova2001u, nova2001, nova2001, nova2001, nova2001_state, empty_init, ROT0, "UPL (Universal license)", "Nova 2001 (US)", MACHINE_SUPPORTS_SAVE )
|
GAME( 1983, nova2001u, nova2001, nova2001, nova2001, nova2001_state, empty_init, ROT0, "UPL (Universal license)", "Nova 2001 (US)", MACHINE_SUPPORTS_SAVE )
|
||||||
|
@ -5,6 +5,7 @@
|
|||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
#include "cpu/z80/z80.h"
|
||||||
#include "emupal.h"
|
#include "emupal.h"
|
||||||
|
|
||||||
class nova2001_state : public driver_device
|
class nova2001_state : public driver_device
|
||||||
@ -31,33 +32,33 @@ public:
|
|||||||
DECLARE_CUSTOM_INPUT_MEMBER(ninjakun_io_A002_ctrl_r);
|
DECLARE_CUSTOM_INPUT_MEMBER(ninjakun_io_A002_ctrl_r);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
required_device<cpu_device> m_maincpu;
|
required_device<z80_device> m_maincpu;
|
||||||
required_device<gfxdecode_device> m_gfxdecode;
|
required_device<gfxdecode_device> m_gfxdecode;
|
||||||
required_device<palette_device> m_palette;
|
required_device<palette_device> m_palette;
|
||||||
|
|
||||||
optional_shared_ptr<uint8_t> m_fg_videoram;
|
optional_shared_ptr<u8> m_fg_videoram;
|
||||||
required_shared_ptr<uint8_t> m_bg_videoram;
|
required_shared_ptr<u8> m_bg_videoram;
|
||||||
optional_shared_ptr<uint8_t> m_spriteram;
|
optional_shared_ptr<u8> m_spriteram;
|
||||||
|
|
||||||
uint8_t m_ninjakun_io_a002_ctrl;
|
u8 m_ninjakun_io_a002_ctrl;
|
||||||
tilemap_t *m_bg_tilemap;
|
tilemap_t *m_bg_tilemap;
|
||||||
tilemap_t *m_fg_tilemap;
|
tilemap_t *m_fg_tilemap;
|
||||||
|
|
||||||
DECLARE_WRITE8_MEMBER(ninjakun_cpu1_io_A002_w);
|
DECLARE_WRITE8_MEMBER(ninjakun_cpu1_io_A002_w);
|
||||||
DECLARE_WRITE8_MEMBER(ninjakun_cpu2_io_A002_w);
|
DECLARE_WRITE8_MEMBER(ninjakun_cpu2_io_A002_w);
|
||||||
DECLARE_WRITE8_MEMBER(ninjakun_paletteram_w);
|
DECLARE_WRITE8_MEMBER(paletteram_w);
|
||||||
DECLARE_WRITE8_MEMBER(nova2001_fg_videoram_w);
|
DECLARE_WRITE8_MEMBER(fg_videoram_w);
|
||||||
DECLARE_WRITE8_MEMBER(nova2001_bg_videoram_w);
|
DECLARE_WRITE8_MEMBER(nova2001_bg_videoram_w);
|
||||||
DECLARE_WRITE8_MEMBER(ninjakun_bg_videoram_w);
|
DECLARE_WRITE8_MEMBER(ninjakun_bg_videoram_w);
|
||||||
DECLARE_READ8_MEMBER(ninjakun_bg_videoram_r);
|
DECLARE_READ8_MEMBER(ninjakun_bg_videoram_r);
|
||||||
DECLARE_WRITE8_MEMBER(nova2001_scroll_x_w);
|
DECLARE_WRITE8_MEMBER(scroll_x_w);
|
||||||
DECLARE_WRITE8_MEMBER(nova2001_scroll_y_w);
|
DECLARE_WRITE8_MEMBER(scroll_y_w);
|
||||||
DECLARE_WRITE8_MEMBER(nova2001_flipscreen_w);
|
DECLARE_WRITE8_MEMBER(nova2001_flipscreen_w);
|
||||||
DECLARE_WRITE8_MEMBER(pkunwar_flipscreen_w);
|
DECLARE_WRITE8_MEMBER(pkunwar_flipscreen_w);
|
||||||
|
|
||||||
DECLARE_VIDEO_START(nova2001);
|
DECLARE_VIDEO_START(nova2001);
|
||||||
void nova2001_palette(palette_device &palette) const;
|
void nova2001_palette(palette_device &palette) const;
|
||||||
static rgb_t BBGGRRII(uint32_t raw);
|
static rgb_t BBGGRRII(u32 raw);
|
||||||
DECLARE_MACHINE_START(ninjakun);
|
DECLARE_MACHINE_START(ninjakun);
|
||||||
DECLARE_VIDEO_START(ninjakun);
|
DECLARE_VIDEO_START(ninjakun);
|
||||||
DECLARE_VIDEO_START(pkunwar);
|
DECLARE_VIDEO_START(pkunwar);
|
||||||
@ -71,15 +72,16 @@ private:
|
|||||||
TILE_GET_INFO_MEMBER(raiders5_get_bg_tile_info);
|
TILE_GET_INFO_MEMBER(raiders5_get_bg_tile_info);
|
||||||
TILE_GET_INFO_MEMBER(raiders5_get_fg_tile_info);
|
TILE_GET_INFO_MEMBER(raiders5_get_fg_tile_info);
|
||||||
|
|
||||||
uint32_t screen_update_nova2001(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
u32 screen_update_nova2001(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||||
uint32_t screen_update_ninjakun(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
u32 screen_update_ninjakun(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||||
uint32_t screen_update_pkunwar(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
u32 screen_update_pkunwar(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||||
uint32_t screen_update_raiders5(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
u32 screen_update_raiders5(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||||
void nova2001_draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect );
|
void nova2001_draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect );
|
||||||
void pkunwar_draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect );
|
void pkunwar_draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect );
|
||||||
void lineswap_gfx_roms(const char *region, const int bit);
|
void lineswap_gfx_roms(const char *region, const int bit);
|
||||||
void ninjakun_cpu1_map(address_map &map);
|
void ninjakun_cpu1_map(address_map &map);
|
||||||
void ninjakun_cpu2_map(address_map &map);
|
void ninjakun_cpu2_map(address_map &map);
|
||||||
|
void ninjakun_shared_map(address_map &map);
|
||||||
void nova2001_map(address_map &map);
|
void nova2001_map(address_map &map);
|
||||||
void pkunwar_io(address_map &map);
|
void pkunwar_io(address_map &map);
|
||||||
void pkunwar_map(address_map &map);
|
void pkunwar_map(address_map &map);
|
||||||
|
@ -12,7 +12,7 @@
|
|||||||
|
|
||||||
void nova2001_state::nova2001_palette(palette_device &palette) const
|
void nova2001_state::nova2001_palette(palette_device &palette) const
|
||||||
{
|
{
|
||||||
uint8_t const *const color_prom = memregion("proms")->base();
|
u8 const *const color_prom = memregion("proms")->base();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Color #1 is used for palette animation.
|
Color #1 is used for palette animation.
|
||||||
@ -35,17 +35,17 @@ void nova2001_state::nova2001_palette(palette_device &palette) const
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
rgb_t nova2001_state::BBGGRRII(uint32_t raw)
|
rgb_t nova2001_state::BBGGRRII(u32 raw)
|
||||||
{
|
{
|
||||||
uint8_t const i = raw & 3;
|
u8 const i = raw & 3;
|
||||||
uint8_t const r = ((raw >> 0) & 0x0c) | i;
|
u8 const r = ((raw >> 0) & 0x0c) | i;
|
||||||
uint8_t const g = ((raw >> 2) & 0x0c) | i;
|
u8 const g = ((raw >> 2) & 0x0c) | i;
|
||||||
uint8_t const b = ((raw >> 4) & 0x0c) | i;
|
u8 const b = ((raw >> 4) & 0x0c) | i;
|
||||||
|
|
||||||
return rgb_t(r | (r << 4), g | (g << 4), b | (b << 4));
|
return rgb_t(r | (r << 4), g | (g << 4), b | (b << 4));
|
||||||
}
|
}
|
||||||
|
|
||||||
WRITE8_MEMBER(nova2001_state::ninjakun_paletteram_w)
|
WRITE8_MEMBER(nova2001_state::paletteram_w)
|
||||||
{
|
{
|
||||||
m_palette->write8(space, offset, data);
|
m_palette->write8(space, offset, data);
|
||||||
|
|
||||||
@ -74,17 +74,17 @@ WRITE8_MEMBER(nova2001_state::ninjakun_paletteram_w)
|
|||||||
|
|
||||||
TILE_GET_INFO_MEMBER(nova2001_state::nova2001_get_bg_tile_info)
|
TILE_GET_INFO_MEMBER(nova2001_state::nova2001_get_bg_tile_info)
|
||||||
{
|
{
|
||||||
int code = m_bg_videoram[tile_index];
|
int const code = m_bg_videoram[tile_index];
|
||||||
int color = m_bg_videoram[tile_index + 0x400] & 0x0f;
|
int const color = m_bg_videoram[tile_index + 0x400] & 0x0f;
|
||||||
|
|
||||||
SET_TILE_INFO_MEMBER(2, code, color, 0);
|
SET_TILE_INFO_MEMBER(2, code, color, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
TILE_GET_INFO_MEMBER(nova2001_state::nova2001_get_fg_tile_info)
|
TILE_GET_INFO_MEMBER(nova2001_state::nova2001_get_fg_tile_info)
|
||||||
{
|
{
|
||||||
int attr = m_fg_videoram[tile_index + 0x400];
|
int const attr = m_fg_videoram[tile_index + 0x400];
|
||||||
int code = m_fg_videoram[tile_index];
|
int const code = m_fg_videoram[tile_index];
|
||||||
int color = attr & 0x0f;
|
int const color = attr & 0x0f;
|
||||||
|
|
||||||
SET_TILE_INFO_MEMBER(1, code, color, 0);
|
SET_TILE_INFO_MEMBER(1, code, color, 0);
|
||||||
|
|
||||||
@ -93,18 +93,18 @@ TILE_GET_INFO_MEMBER(nova2001_state::nova2001_get_fg_tile_info)
|
|||||||
|
|
||||||
TILE_GET_INFO_MEMBER(nova2001_state::ninjakun_get_bg_tile_info)
|
TILE_GET_INFO_MEMBER(nova2001_state::ninjakun_get_bg_tile_info)
|
||||||
{
|
{
|
||||||
int attr = m_bg_videoram[tile_index+0x400];
|
int const attr = m_bg_videoram[tile_index + 0x400];
|
||||||
int code = m_bg_videoram[tile_index] + ((attr & 0xc0) << 2);
|
int const code = m_bg_videoram[tile_index] + ((attr & 0xc0) << 2);
|
||||||
int color = attr & 0x0f;
|
int const color = attr & 0x0f;
|
||||||
|
|
||||||
SET_TILE_INFO_MEMBER(2, code, color, 0);
|
SET_TILE_INFO_MEMBER(2, code, color, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
TILE_GET_INFO_MEMBER(nova2001_state::ninjakun_get_fg_tile_info)
|
TILE_GET_INFO_MEMBER(nova2001_state::ninjakun_get_fg_tile_info)
|
||||||
{
|
{
|
||||||
int attr = m_fg_videoram[tile_index+0x400];
|
int const attr = m_fg_videoram[tile_index + 0x400];
|
||||||
int code = m_fg_videoram[tile_index] + ((attr & 0x20) << 3);
|
int const code = m_fg_videoram[tile_index] + ((attr & 0x20) << 3);
|
||||||
int color = attr & 0x0f;
|
int const color = attr & 0x0f;
|
||||||
|
|
||||||
SET_TILE_INFO_MEMBER(1, code, color, 0);
|
SET_TILE_INFO_MEMBER(1, code, color, 0);
|
||||||
|
|
||||||
@ -113,9 +113,9 @@ TILE_GET_INFO_MEMBER(nova2001_state::ninjakun_get_fg_tile_info)
|
|||||||
|
|
||||||
TILE_GET_INFO_MEMBER(nova2001_state::pkunwar_get_bg_tile_info)
|
TILE_GET_INFO_MEMBER(nova2001_state::pkunwar_get_bg_tile_info)
|
||||||
{
|
{
|
||||||
int attr = m_bg_videoram[tile_index + 0x400];
|
int const attr = m_bg_videoram[tile_index + 0x400];
|
||||||
int code = m_bg_videoram[tile_index] + ((attr & 0x07) << 8);
|
int const code = m_bg_videoram[tile_index] + ((attr & 0x07) << 8);
|
||||||
int color = (attr & 0xf0) >> 4;
|
int const color = (attr & 0xf0) >> 4;
|
||||||
|
|
||||||
SET_TILE_INFO_MEMBER(1, code, color, 0);
|
SET_TILE_INFO_MEMBER(1, code, color, 0);
|
||||||
|
|
||||||
@ -124,17 +124,17 @@ TILE_GET_INFO_MEMBER(nova2001_state::pkunwar_get_bg_tile_info)
|
|||||||
|
|
||||||
TILE_GET_INFO_MEMBER(nova2001_state::raiders5_get_bg_tile_info)
|
TILE_GET_INFO_MEMBER(nova2001_state::raiders5_get_bg_tile_info)
|
||||||
{
|
{
|
||||||
int attr = m_bg_videoram[tile_index+0x400];
|
int const attr = m_bg_videoram[tile_index + 0x400];
|
||||||
int code = m_bg_videoram[tile_index] + ((attr & 0x01) << 8);
|
int const code = m_bg_videoram[tile_index] + ((attr & 0x01) << 8);
|
||||||
int color = (attr & 0xf0) >> 4;
|
int const color = (attr & 0xf0) >> 4;
|
||||||
|
|
||||||
SET_TILE_INFO_MEMBER(2, code, color, 0);
|
SET_TILE_INFO_MEMBER(2, code, color, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
TILE_GET_INFO_MEMBER(nova2001_state::raiders5_get_fg_tile_info)
|
TILE_GET_INFO_MEMBER(nova2001_state::raiders5_get_fg_tile_info)
|
||||||
{
|
{
|
||||||
int code = m_fg_videoram[tile_index];
|
int const code = m_fg_videoram[tile_index];
|
||||||
int color = (m_fg_videoram[tile_index + 0x400] & 0xf0) >> 4;
|
int const color = (m_fg_videoram[tile_index + 0x400] & 0xf0) >> 4;
|
||||||
|
|
||||||
SET_TILE_INFO_MEMBER(1, code, color, 0);
|
SET_TILE_INFO_MEMBER(1, code, color, 0);
|
||||||
}
|
}
|
||||||
@ -185,7 +185,7 @@ VIDEO_START_MEMBER(nova2001_state,raiders5)
|
|||||||
*
|
*
|
||||||
*************************************/
|
*************************************/
|
||||||
|
|
||||||
WRITE8_MEMBER(nova2001_state::nova2001_fg_videoram_w)
|
WRITE8_MEMBER(nova2001_state::fg_videoram_w)
|
||||||
{
|
{
|
||||||
m_fg_videoram[offset] = data;
|
m_fg_videoram[offset] = data;
|
||||||
m_fg_tilemap->mark_tile_dirty(offset & 0x3ff);
|
m_fg_tilemap->mark_tile_dirty(offset & 0x3ff);
|
||||||
@ -199,8 +199,8 @@ WRITE8_MEMBER(nova2001_state::nova2001_bg_videoram_w)
|
|||||||
|
|
||||||
WRITE8_MEMBER(nova2001_state::ninjakun_bg_videoram_w)
|
WRITE8_MEMBER(nova2001_state::ninjakun_bg_videoram_w)
|
||||||
{
|
{
|
||||||
int x = m_bg_tilemap->scrollx(0) >> 3;
|
int const x = m_bg_tilemap->scrollx(0) >> 3;
|
||||||
int y = m_bg_tilemap->scrolly(0) >> 3;
|
int const y = m_bg_tilemap->scrolly(0) >> 3;
|
||||||
|
|
||||||
// add scroll registers to address
|
// add scroll registers to address
|
||||||
offset = ((offset + x + (y << 5)) & 0x3ff) + (offset & 0x400);
|
offset = ((offset + x + (y << 5)) & 0x3ff) + (offset & 0x400);
|
||||||
@ -211,8 +211,8 @@ WRITE8_MEMBER(nova2001_state::ninjakun_bg_videoram_w)
|
|||||||
|
|
||||||
READ8_MEMBER(nova2001_state::ninjakun_bg_videoram_r)
|
READ8_MEMBER(nova2001_state::ninjakun_bg_videoram_r)
|
||||||
{
|
{
|
||||||
int x = m_bg_tilemap->scrollx(0) >> 3;
|
int const x = m_bg_tilemap->scrollx(0) >> 3;
|
||||||
int y = m_bg_tilemap->scrolly(0) >> 3;
|
int const y = m_bg_tilemap->scrolly(0) >> 3;
|
||||||
|
|
||||||
// add scroll registers to address
|
// add scroll registers to address
|
||||||
offset = ((offset + x + (y << 5)) & 0x3ff) + (offset & 0x400);
|
offset = ((offset + x + (y << 5)) & 0x3ff) + (offset & 0x400);
|
||||||
@ -220,12 +220,12 @@ READ8_MEMBER(nova2001_state::ninjakun_bg_videoram_r)
|
|||||||
return m_bg_videoram[offset];
|
return m_bg_videoram[offset];
|
||||||
}
|
}
|
||||||
|
|
||||||
WRITE8_MEMBER(nova2001_state::nova2001_scroll_x_w)
|
WRITE8_MEMBER(nova2001_state::scroll_x_w)
|
||||||
{
|
{
|
||||||
m_bg_tilemap->set_scrollx(0, data);
|
m_bg_tilemap->set_scrollx(0, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
WRITE8_MEMBER(nova2001_state::nova2001_scroll_y_w)
|
WRITE8_MEMBER(nova2001_state::scroll_y_w)
|
||||||
{
|
{
|
||||||
m_bg_tilemap->set_scrolly(0, data);
|
m_bg_tilemap->set_scrolly(0, data);
|
||||||
}
|
}
|
||||||
@ -251,19 +251,15 @@ WRITE8_MEMBER(nova2001_state::pkunwar_flipscreen_w)
|
|||||||
|
|
||||||
void nova2001_state::nova2001_draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect )
|
void nova2001_state::nova2001_draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect )
|
||||||
{
|
{
|
||||||
uint8_t *spriteram = m_spriteram;
|
for (int offs = 0; offs < 0x800; offs += 32)
|
||||||
gfx_element *gfx = m_gfxdecode->gfx(0);
|
|
||||||
int offs;
|
|
||||||
|
|
||||||
for (offs = 0; offs < 0x800; offs += 32)
|
|
||||||
{
|
{
|
||||||
int attr = spriteram[offs+3];
|
int const attr = m_spriteram[offs+3];
|
||||||
int flipx = attr & 0x10;
|
int flipx = attr & 0x10;
|
||||||
int flipy = attr & 0x20;
|
int flipy = attr & 0x20;
|
||||||
int sx = spriteram[offs+1] - ((attr & 0x40) << 2); // high bit shown in schematics, not used by game
|
int sx = m_spriteram[offs+1] - ((attr & 0x40) << 2); // high bit shown in schematics, not used by game
|
||||||
int sy = spriteram[offs+2];
|
int sy = m_spriteram[offs+2];
|
||||||
int tile = spriteram[offs+0];
|
int const tile = m_spriteram[offs+0];
|
||||||
int color = attr & 0x0f;
|
int const color = attr & 0x0f;
|
||||||
|
|
||||||
if (attr & 0x80) // disable bit shown in schematics, not used by game
|
if (attr & 0x80) // disable bit shown in schematics, not used by game
|
||||||
{
|
{
|
||||||
@ -278,7 +274,7 @@ void nova2001_state::nova2001_draw_sprites(bitmap_ind16 &bitmap, const rectangle
|
|||||||
flipy = !flipy;
|
flipy = !flipy;
|
||||||
}
|
}
|
||||||
|
|
||||||
gfx->transpen(bitmap,cliprect,
|
m_gfxdecode->gfx(0)->transpen(bitmap,cliprect,
|
||||||
tile,
|
tile,
|
||||||
color,
|
color,
|
||||||
flipx, flipy,
|
flipx, flipy,
|
||||||
@ -288,19 +284,15 @@ void nova2001_state::nova2001_draw_sprites(bitmap_ind16 &bitmap, const rectangle
|
|||||||
|
|
||||||
void nova2001_state::pkunwar_draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect )
|
void nova2001_state::pkunwar_draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect )
|
||||||
{
|
{
|
||||||
uint8_t *spriteram = m_spriteram;
|
for (int offs = 0; offs < 0x800; offs += 32)
|
||||||
gfx_element *gfx = m_gfxdecode->gfx(0);
|
|
||||||
int offs;
|
|
||||||
|
|
||||||
for (offs = 0; offs < 0x800; offs += 32)
|
|
||||||
{
|
{
|
||||||
int attr = spriteram[offs+3];
|
int const attr = m_spriteram[offs+3];
|
||||||
int flipx = spriteram[offs+0] & 0x01;
|
int flipx = m_spriteram[offs+0] & 0x01;
|
||||||
int flipy = spriteram[offs+0] & 0x02;
|
int flipy = m_spriteram[offs+0] & 0x02;
|
||||||
int sx = spriteram[offs+1];
|
int sx = m_spriteram[offs+1];
|
||||||
int sy = spriteram[offs+2];
|
int sy = m_spriteram[offs+2];
|
||||||
int tile = ((spriteram[offs+0] & 0xfc) >> 2) + ((attr & 0x07) << 6);
|
int const tile = ((m_spriteram[offs+0] & 0xfc) >> 2) + ((attr & 0x07) << 6);
|
||||||
int color = (attr & 0xf0) >> 4;
|
int const color = (attr & 0xf0) >> 4;
|
||||||
|
|
||||||
if (attr & 0x08) // deducted by comparison, not used by game
|
if (attr & 0x08) // deducted by comparison, not used by game
|
||||||
{
|
{
|
||||||
@ -315,24 +307,24 @@ void nova2001_state::pkunwar_draw_sprites(bitmap_ind16 &bitmap, const rectangle
|
|||||||
flipy = !flipy;
|
flipy = !flipy;
|
||||||
}
|
}
|
||||||
|
|
||||||
gfx->transpen(bitmap,cliprect,
|
m_gfxdecode->gfx(0)->transpen(bitmap,cliprect,
|
||||||
tile,
|
tile,
|
||||||
color,
|
color,
|
||||||
flipx, flipy,
|
flipx, flipy,
|
||||||
sx, sy, 0);
|
sx, sy, 0);
|
||||||
|
|
||||||
// there's no X MSB, so draw with wraparound (fixes title screen)
|
// there's no X MSB, so draw with wraparound (fixes title screen)
|
||||||
gfx->transpen(bitmap,cliprect,
|
m_gfxdecode->gfx(0)->transpen(bitmap,cliprect,
|
||||||
tile,
|
tile,
|
||||||
color,
|
color,
|
||||||
flipx, flipy,
|
flipx, flipy,
|
||||||
sx - 256, sy, 0);
|
sx - 256, sy, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
uint32_t nova2001_state::screen_update_nova2001(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
u32 nova2001_state::screen_update_nova2001(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||||
{
|
{
|
||||||
m_bg_tilemap->draw(screen, bitmap, cliprect, 0, 0);
|
m_bg_tilemap->draw(screen, bitmap, cliprect, 0, 0);
|
||||||
|
|
||||||
@ -346,7 +338,7 @@ uint32_t nova2001_state::screen_update_nova2001(screen_device &screen, bitmap_in
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t nova2001_state::screen_update_pkunwar(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
u32 nova2001_state::screen_update_pkunwar(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||||
{
|
{
|
||||||
m_bg_tilemap->draw(screen, bitmap, cliprect, TILEMAP_DRAW_OPAQUE | TILEMAP_DRAW_ALL_CATEGORIES, 0);
|
m_bg_tilemap->draw(screen, bitmap, cliprect, TILEMAP_DRAW_OPAQUE | TILEMAP_DRAW_ALL_CATEGORIES, 0);
|
||||||
|
|
||||||
@ -357,7 +349,7 @@ uint32_t nova2001_state::screen_update_pkunwar(screen_device &screen, bitmap_ind
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t nova2001_state::screen_update_ninjakun(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
u32 nova2001_state::screen_update_ninjakun(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||||
{
|
{
|
||||||
m_bg_tilemap->draw(screen, bitmap, cliprect, 0, 0);
|
m_bg_tilemap->draw(screen, bitmap, cliprect, 0, 0);
|
||||||
|
|
||||||
@ -370,7 +362,7 @@ uint32_t nova2001_state::screen_update_ninjakun(screen_device &screen, bitmap_in
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t nova2001_state::screen_update_raiders5(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
u32 nova2001_state::screen_update_raiders5(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||||
{
|
{
|
||||||
m_bg_tilemap->draw(screen, bitmap, cliprect, 0, 0);
|
m_bg_tilemap->draw(screen, bitmap, cliprect, 0, 0);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user