mirror of
https://github.com/holub/mame
synced 2025-10-04 16:34:53 +03:00
loose ends: (nw)
* mm5740 X pins are numbered starting from 1, also fix typo in pinout comment (Y10, not Y0) * make more members protected/private as appropriate * got rid of one more video start override in a clean way
This commit is contained in:
parent
06f99c21a0
commit
0a5fed2ece
@ -24,7 +24,7 @@
|
|||||||
Repeat 16 | | 25 Y3
|
Repeat 16 | | 25 Y3
|
||||||
Key Bounce Mask 17 | | 24 Y2
|
Key Bounce Mask 17 | | 24 Y2
|
||||||
Vgg 18 | | 23 Y1
|
Vgg 18 | | 23 Y1
|
||||||
Control 19 | | 22 Y0
|
Control 19 | | 22 Y10
|
||||||
Shift Lock I/O 20 |_____________| 21 Shift
|
Shift Lock I/O 20 |_____________| 21 Shift
|
||||||
|
|
||||||
Name Pin No. Function
|
Name Pin No. Function
|
||||||
@ -94,7 +94,7 @@ public:
|
|||||||
// public interface
|
// public interface
|
||||||
uint16_t b_r();
|
uint16_t b_r();
|
||||||
|
|
||||||
template <unsigned N> auto x_cb() { return m_read_x[N].bind(); }
|
template <unsigned N> auto x_cb() { return m_read_x[N - 1].bind(); }
|
||||||
auto shift_cb() { return m_read_shift.bind(); }
|
auto shift_cb() { return m_read_shift.bind(); }
|
||||||
auto control_cb() { return m_read_control.bind(); }
|
auto control_cb() { return m_read_control.bind(); }
|
||||||
auto data_ready_cb() { return m_write_data_ready.bind(); }
|
auto data_ready_cb() { return m_write_data_ready.bind(); }
|
||||||
|
@ -35,6 +35,8 @@
|
|||||||
class seibu_sound_common {
|
class seibu_sound_common {
|
||||||
public:
|
public:
|
||||||
virtual ~seibu_sound_common() = default;
|
virtual ~seibu_sound_common() = default;
|
||||||
|
|
||||||
|
protected:
|
||||||
void seibu_sound_map(address_map &map);
|
void seibu_sound_map(address_map &map);
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -42,7 +44,7 @@ class seibu_sound_device : public device_t
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
seibu_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
|
seibu_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
|
||||||
~seibu_sound_device() {}
|
~seibu_sound_device() { }
|
||||||
|
|
||||||
// configuration
|
// configuration
|
||||||
template <typename T> void set_rom_tag(T &&tag) { m_sound_rom.set_tag(std::forward<T>(tag)); }
|
template <typename T> void set_rom_tag(T &&tag) { m_sound_rom.set_tag(std::forward<T>(tag)); }
|
||||||
@ -131,7 +133,7 @@ class seibu_adpcm_device : public device_t,
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
seibu_adpcm_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
|
seibu_adpcm_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
|
||||||
~seibu_adpcm_device() {}
|
~seibu_adpcm_device() { }
|
||||||
|
|
||||||
void decrypt();
|
void decrypt();
|
||||||
void adr_w(offs_t offset, u8 data);
|
void adr_w(offs_t offset, u8 data);
|
||||||
|
@ -83,7 +83,7 @@ Secret menu hack [totmejan only] (I couldn't find official way to enter, so it's
|
|||||||
#include "tilemap.h"
|
#include "tilemap.h"
|
||||||
|
|
||||||
|
|
||||||
class goodejan_state : public driver_device, public seibu_sound_common
|
class goodejan_state : public driver_device, protected seibu_sound_common
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
goodejan_state(const machine_config &mconfig, device_type type, const char *tag) :
|
goodejan_state(const machine_config &mconfig, device_type type, const char *tag) :
|
||||||
@ -102,6 +102,9 @@ public:
|
|||||||
void totmejan(machine_config &config);
|
void totmejan(machine_config &config);
|
||||||
void goodejan(machine_config &config);
|
void goodejan(machine_config &config);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
virtual void video_start() override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
required_device<cpu_device> m_maincpu;
|
required_device<cpu_device> m_maincpu;
|
||||||
required_device<gfxdecode_device> m_gfxdecode;
|
required_device<gfxdecode_device> m_gfxdecode;
|
||||||
@ -143,8 +146,8 @@ private:
|
|||||||
|
|
||||||
void seibucrtc_sc0bank_w(uint16_t data);
|
void seibucrtc_sc0bank_w(uint16_t data);
|
||||||
void draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect,int pri);
|
void draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect,int pri);
|
||||||
virtual void video_start() override;
|
|
||||||
uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||||
|
|
||||||
void common_io_map(address_map &map);
|
void common_io_map(address_map &map);
|
||||||
void goodejan_io_map(address_map &map);
|
void goodejan_io_map(address_map &map);
|
||||||
void goodejan_map(address_map &map);
|
void goodejan_map(address_map &map);
|
||||||
|
@ -548,15 +548,15 @@ void h19_state::h19(machine_config &config)
|
|||||||
uart.out_int_callback().set_inputline("maincpu", INPUT_LINE_IRQ0);
|
uart.out_int_callback().set_inputline("maincpu", INPUT_LINE_IRQ0);
|
||||||
|
|
||||||
MM5740(config, m_mm5740, MM5740_CLOCK);
|
MM5740(config, m_mm5740, MM5740_CLOCK);
|
||||||
m_mm5740->x_cb<0>().set_ioport("X1");
|
m_mm5740->x_cb<1>().set_ioport("X1");
|
||||||
m_mm5740->x_cb<1>().set_ioport("X2");
|
m_mm5740->x_cb<2>().set_ioport("X2");
|
||||||
m_mm5740->x_cb<2>().set_ioport("X3");
|
m_mm5740->x_cb<3>().set_ioport("X3");
|
||||||
m_mm5740->x_cb<3>().set_ioport("X4");
|
m_mm5740->x_cb<4>().set_ioport("X4");
|
||||||
m_mm5740->x_cb<4>().set_ioport("X5");
|
m_mm5740->x_cb<5>().set_ioport("X5");
|
||||||
m_mm5740->x_cb<5>().set_ioport("X6");
|
m_mm5740->x_cb<6>().set_ioport("X6");
|
||||||
m_mm5740->x_cb<6>().set_ioport("X7");
|
m_mm5740->x_cb<7>().set_ioport("X7");
|
||||||
m_mm5740->x_cb<7>().set_ioport("X8");
|
m_mm5740->x_cb<8>().set_ioport("X8");
|
||||||
m_mm5740->x_cb<8>().set_ioport("X9");
|
m_mm5740->x_cb<9>().set_ioport("X9");
|
||||||
m_mm5740->shift_cb().set(FUNC(h19_state::mm5740_shift_r));
|
m_mm5740->shift_cb().set(FUNC(h19_state::mm5740_shift_r));
|
||||||
m_mm5740->control_cb().set(FUNC(h19_state::mm5740_control_r));
|
m_mm5740->control_cb().set(FUNC(h19_state::mm5740_control_r));
|
||||||
m_mm5740->data_ready_cb().set(FUNC(h19_state::mm5740_data_ready_w));
|
m_mm5740->data_ready_cb().set(FUNC(h19_state::mm5740_data_ready_w));
|
||||||
|
@ -452,7 +452,7 @@ void nmk16_tomagic_state::tomagic_sound_map(address_map &map)
|
|||||||
void nmk16_tomagic_state::tomagic_sound_io_map(address_map &map)
|
void nmk16_tomagic_state::tomagic_sound_io_map(address_map &map)
|
||||||
{
|
{
|
||||||
map.global_mask(0xff);
|
map.global_mask(0xff);
|
||||||
map(0x00, 0x00).w(FUNC(nmk16_state::macross2_sound_bank_w));
|
map(0x00, 0x00).w(FUNC(nmk16_tomagic_state::macross2_sound_bank_w));
|
||||||
map(0x02, 0x03).rw("ymsnd", FUNC(ym3812_device::read), FUNC(ym3812_device::write));
|
map(0x02, 0x03).rw("ymsnd", FUNC(ym3812_device::read), FUNC(ym3812_device::write));
|
||||||
map(0x06, 0x06).r(m_soundlatch, FUNC(generic_latch_8_device::read));
|
map(0x06, 0x06).r(m_soundlatch, FUNC(generic_latch_8_device::read));
|
||||||
}
|
}
|
||||||
@ -4217,7 +4217,7 @@ void nmk16_state::mustangb(machine_config &config)
|
|||||||
set_hacky_interrupt_timing(config);
|
set_hacky_interrupt_timing(config);
|
||||||
|
|
||||||
Z80(config, m_audiocpu, 14318180/4);
|
Z80(config, m_audiocpu, 14318180/4);
|
||||||
m_audiocpu->set_addrmap(AS_PROGRAM, &seibu_sound_common::seibu_sound_map);
|
m_audiocpu->set_addrmap(AS_PROGRAM, &nmk16_state::seibu_sound_map);
|
||||||
m_audiocpu->set_irq_acknowledge_callback("seibu_sound", FUNC(seibu_sound_device::im0_vector_cb));
|
m_audiocpu->set_irq_acknowledge_callback("seibu_sound", FUNC(seibu_sound_device::im0_vector_cb));
|
||||||
|
|
||||||
/* video hardware */
|
/* video hardware */
|
||||||
@ -4394,7 +4394,7 @@ void nmk16_state::tdragonb(machine_config &config) /* bootleg using Raiden so
|
|||||||
set_hacky_interrupt_timing(config);
|
set_hacky_interrupt_timing(config);
|
||||||
|
|
||||||
Z80(config, m_audiocpu, 14318180/4);
|
Z80(config, m_audiocpu, 14318180/4);
|
||||||
m_audiocpu->set_addrmap(AS_PROGRAM, &seibu_sound_common::seibu_sound_map);
|
m_audiocpu->set_addrmap(AS_PROGRAM, &nmk16_state::seibu_sound_map);
|
||||||
m_audiocpu->set_irq_acknowledge_callback("seibu_sound", FUNC(seibu_sound_device::im0_vector_cb));
|
m_audiocpu->set_irq_acknowledge_callback("seibu_sound", FUNC(seibu_sound_device::im0_vector_cb));
|
||||||
|
|
||||||
/* video hardware */
|
/* video hardware */
|
||||||
@ -4973,11 +4973,11 @@ void nmk16_tomagic_state::tomagic(machine_config &config)
|
|||||||
/* video hardware */
|
/* video hardware */
|
||||||
set_hacky_screen_hires(config);
|
set_hacky_screen_hires(config);
|
||||||
m_spritegen->set_colpri_callback(FUNC(nmk16_tomagic_state::get_colour_4bit));
|
m_spritegen->set_colpri_callback(FUNC(nmk16_tomagic_state::get_colour_4bit));
|
||||||
m_screen->set_screen_update(FUNC(nmk16_state::screen_update_macross));
|
m_screen->set_screen_update(FUNC(nmk16_tomagic_state::screen_update_macross));
|
||||||
|
|
||||||
GFXDECODE(config, m_gfxdecode, m_palette, gfx_macross);
|
GFXDECODE(config, m_gfxdecode, m_palette, gfx_macross);
|
||||||
PALETTE(config, m_palette).set_format(palette_device::RRRRGGGGBBBBRGBx, 1024);
|
PALETTE(config, m_palette).set_format(palette_device::RRRRGGGGBBBBRGBx, 1024);
|
||||||
MCFG_VIDEO_START_OVERRIDE(nmk16_state,gunnail)
|
MCFG_VIDEO_START_OVERRIDE(nmk16_tomagic_state,gunnail)
|
||||||
|
|
||||||
/* sound hardware */
|
/* sound hardware */
|
||||||
SPEAKER(config, "mono").front_center();
|
SPEAKER(config, "mono").front_center();
|
||||||
|
@ -148,7 +148,7 @@ void raiden_state::raidenu_sub_map(address_map &map)
|
|||||||
|
|
||||||
/******************************************************************************/
|
/******************************************************************************/
|
||||||
|
|
||||||
void raiden_state::raidenb_main_map(address_map &map)
|
void raidenb_state::raidenb_main_map(address_map &map)
|
||||||
{
|
{
|
||||||
map(0x00000, 0x06fff).ram();
|
map(0x00000, 0x06fff).ram();
|
||||||
map(0x07000, 0x07fff).ram().share("spriteram");
|
map(0x07000, 0x07fff).ram().share("spriteram");
|
||||||
@ -156,8 +156,8 @@ void raiden_state::raidenb_main_map(address_map &map)
|
|||||||
map(0x0b000, 0x0b001).portr("P1_P2");
|
map(0x0b000, 0x0b001).portr("P1_P2");
|
||||||
map(0x0b002, 0x0b003).portr("DSW");
|
map(0x0b002, 0x0b003).portr("DSW");
|
||||||
map(0x0b004, 0x0b005).nopw(); // watchdog?
|
map(0x0b004, 0x0b005).nopw(); // watchdog?
|
||||||
map(0x0b006, 0x0b006).w(FUNC(raiden_state::raidenb_control_w));
|
map(0x0b006, 0x0b006).w(FUNC(raidenb_state::raidenb_control_w));
|
||||||
map(0x0c000, 0x0c7ff).w(FUNC(raiden_state::raiden_text_w)).share("videoram");
|
map(0x0c000, 0x0c7ff).w(FUNC(raidenb_state::raiden_text_w)).share("videoram");
|
||||||
map(0x0d000, 0x0d00d).rw(m_seibu_sound, FUNC(seibu_sound_device::main_r), FUNC(seibu_sound_device::main_w)).umask16(0x00ff);
|
map(0x0d000, 0x0d00d).rw(m_seibu_sound, FUNC(seibu_sound_device::main_r), FUNC(seibu_sound_device::main_w)).umask16(0x00ff);
|
||||||
map(0x0d040, 0x0d08f).rw("crtc", FUNC(seibu_crtc_device::read), FUNC(seibu_crtc_device::write));
|
map(0x0d040, 0x0d08f).rw("crtc", FUNC(seibu_crtc_device::read), FUNC(seibu_crtc_device::write));
|
||||||
map(0xa0000, 0xfffff).rom();
|
map(0xa0000, 0xfffff).rom();
|
||||||
@ -400,7 +400,7 @@ void raiden_state::raidenu(machine_config &config)
|
|||||||
m_subcpu->set_addrmap(AS_PROGRAM, &raiden_state::raidenu_sub_map);
|
m_subcpu->set_addrmap(AS_PROGRAM, &raiden_state::raidenu_sub_map);
|
||||||
}
|
}
|
||||||
|
|
||||||
WRITE16_MEMBER( raiden_state::raidenb_layer_scroll_w )
|
WRITE16_MEMBER( raidenb_state::raidenb_layer_scroll_w )
|
||||||
{
|
{
|
||||||
COMBINE_DATA(&m_raidenb_scroll_ram[offset]);
|
COMBINE_DATA(&m_raidenb_scroll_ram[offset]);
|
||||||
}
|
}
|
||||||
@ -412,21 +412,19 @@ void raiden_state::raidenkb(machine_config &config)
|
|||||||
m_subcpu->set_clock(XTAL(32'000'000) / 4); // Xtal and clock verified
|
m_subcpu->set_clock(XTAL(32'000'000) / 4); // Xtal and clock verified
|
||||||
}
|
}
|
||||||
|
|
||||||
void raiden_state::raidenb(machine_config &config)
|
void raidenb_state::raidenb(machine_config &config)
|
||||||
{
|
{
|
||||||
raiden(config);
|
raiden(config);
|
||||||
|
|
||||||
/* basic machine hardware */
|
/* basic machine hardware */
|
||||||
m_maincpu->set_addrmap(AS_PROGRAM, &raiden_state::raidenb_main_map);
|
m_maincpu->set_addrmap(AS_PROGRAM, &raidenb_state::raidenb_main_map);
|
||||||
|
|
||||||
/* video hardware */
|
/* video hardware */
|
||||||
MCFG_VIDEO_START_OVERRIDE(raiden_state,raidenb)
|
|
||||||
|
|
||||||
seibu_crtc_device &crtc(SEIBU_CRTC(config, "crtc", 0));
|
seibu_crtc_device &crtc(SEIBU_CRTC(config, "crtc", 0));
|
||||||
crtc.layer_en_callback().set(FUNC(raiden_state::raidenb_layer_enable_w));
|
crtc.layer_en_callback().set(FUNC(raidenb_state::raidenb_layer_enable_w));
|
||||||
crtc.layer_scroll_callback().set(FUNC(raiden_state::raidenb_layer_scroll_w));
|
crtc.layer_scroll_callback().set(FUNC(raidenb_state::raidenb_layer_scroll_w));
|
||||||
|
|
||||||
subdevice<screen_device>("screen")->set_screen_update(FUNC(raiden_state::screen_update_raidenb));
|
subdevice<screen_device>("screen")->set_screen_update(FUNC(raidenb_state::screen_update_raidenb));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -859,5 +857,5 @@ GAME( 1990, raidenkb, raiden, raidenkb, raiden, raiden_state, init_raiden, ROT
|
|||||||
GAME( 1990, raidenua, raiden, raidenu, raiden, raiden_state, empty_init, ROT270, "Seibu Kaihatsu (Fabtek license)", "Raiden (US set 2)", MACHINE_SUPPORTS_SAVE )
|
GAME( 1990, raidenua, raiden, raidenu, raiden, raiden_state, empty_init, ROT270, "Seibu Kaihatsu (Fabtek license)", "Raiden (US set 2)", MACHINE_SUPPORTS_SAVE )
|
||||||
|
|
||||||
/* Alternate hardware. Main, Sub & Sound CPU code not encrypted. It also sports Seibu custom CRTC. */
|
/* Alternate hardware. Main, Sub & Sound CPU code not encrypted. It also sports Seibu custom CRTC. */
|
||||||
GAME( 1990, raidenb, raiden, raidenb, raiden, raiden_state, empty_init, ROT270, "Seibu Kaihatsu", "Raiden (set 3)", MACHINE_SUPPORTS_SAVE )
|
GAME( 1990, raidenb, raiden, raidenb, raiden, raidenb_state, empty_init, ROT270, "Seibu Kaihatsu", "Raiden (set 3)", MACHINE_SUPPORTS_SAVE )
|
||||||
GAME( 1990, raidenub, raiden, raidenb, raiden, raiden_state, empty_init, ROT270, "Seibu Kaihatsu (Fabtek license)", "Raiden (US set 3)", MACHINE_SUPPORTS_SAVE )
|
GAME( 1990, raidenub, raiden, raidenb, raiden, raidenb_state, empty_init, ROT270, "Seibu Kaihatsu (Fabtek license)", "Raiden (US set 3)", MACHINE_SUPPORTS_SAVE )
|
||||||
|
@ -67,7 +67,7 @@ RSSENGO2.72 chr.
|
|||||||
#include "tilemap.h"
|
#include "tilemap.h"
|
||||||
|
|
||||||
|
|
||||||
class sengokmj_state : public driver_device, public seibu_sound_common
|
class sengokmj_state : public driver_device, protected seibu_sound_common
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
sengokmj_state(const machine_config &mconfig, device_type type, const char *tag) :
|
sengokmj_state(const machine_config &mconfig, device_type type, const char *tag) :
|
||||||
@ -84,6 +84,10 @@ public:
|
|||||||
|
|
||||||
void sengokmj(machine_config &config);
|
void sengokmj(machine_config &config);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
virtual void machine_start() override;
|
||||||
|
virtual void video_start() override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
required_device<cpu_device> m_maincpu;
|
required_device<cpu_device> m_maincpu;
|
||||||
required_device<gfxdecode_device> m_gfxdecode;
|
required_device<gfxdecode_device> m_gfxdecode;
|
||||||
@ -123,9 +127,6 @@ private:
|
|||||||
|
|
||||||
DECLARE_WRITE_LINE_MEMBER(vblank_irq);
|
DECLARE_WRITE_LINE_MEMBER(vblank_irq);
|
||||||
|
|
||||||
virtual void machine_start() override;
|
|
||||||
virtual void video_start() override;
|
|
||||||
|
|
||||||
void draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect,int pri);
|
void draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect,int pri);
|
||||||
uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||||
|
|
||||||
|
@ -11,7 +11,7 @@
|
|||||||
#include "screen.h"
|
#include "screen.h"
|
||||||
#include "tilemap.h"
|
#include "tilemap.h"
|
||||||
|
|
||||||
class bloodbro_state : public driver_device, public seibu_sound_common
|
class bloodbro_state : public driver_device, protected seibu_sound_common
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
bloodbro_state(const machine_config &mconfig, device_type type, const char *tag) :
|
bloodbro_state(const machine_config &mconfig, device_type type, const char *tag) :
|
||||||
@ -29,6 +29,16 @@ public:
|
|||||||
m_txvideoram(*this, "txvideoram")
|
m_txvideoram(*this, "txvideoram")
|
||||||
{ }
|
{ }
|
||||||
|
|
||||||
|
void init_weststry();
|
||||||
|
|
||||||
|
void bloodbro(machine_config &config);
|
||||||
|
void skysmash(machine_config &config);
|
||||||
|
void weststry(machine_config &config);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
virtual void video_start() override;
|
||||||
|
|
||||||
|
private:
|
||||||
required_device<cpu_device> m_maincpu;
|
required_device<cpu_device> m_maincpu;
|
||||||
required_device<gfxdecode_device> m_gfxdecode;
|
required_device<gfxdecode_device> m_gfxdecode;
|
||||||
required_device<screen_device> m_screen;
|
required_device<screen_device> m_screen;
|
||||||
@ -68,18 +78,12 @@ public:
|
|||||||
TILE_GET_INFO_MEMBER(get_fg_tile_info);
|
TILE_GET_INFO_MEMBER(get_fg_tile_info);
|
||||||
TILE_GET_INFO_MEMBER(get_tx_tile_info);
|
TILE_GET_INFO_MEMBER(get_tx_tile_info);
|
||||||
|
|
||||||
virtual void video_start() override;
|
|
||||||
|
|
||||||
uint32_t screen_update_bloodbro(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
uint32_t screen_update_bloodbro(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||||
uint32_t screen_update_weststry(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
uint32_t screen_update_weststry(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||||
uint32_t screen_update_skysmash(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
uint32_t screen_update_skysmash(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||||
void bloodbro_draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
void bloodbro_draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||||
void weststry_draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
void weststry_draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||||
|
|
||||||
void init_weststry();
|
|
||||||
void bloodbro(machine_config &config);
|
|
||||||
void skysmash(machine_config &config);
|
|
||||||
void weststry(machine_config &config);
|
|
||||||
void bloodbro_map(address_map &map);
|
void bloodbro_map(address_map &map);
|
||||||
void common_map(address_map &map);
|
void common_map(address_map &map);
|
||||||
void skysmash_map(address_map &map);
|
void skysmash_map(address_map &map);
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
#include "emupal.h"
|
#include "emupal.h"
|
||||||
#include "tilemap.h"
|
#include "tilemap.h"
|
||||||
|
|
||||||
class dcon_state : public driver_device, public seibu_sound_common
|
class dcon_state : public driver_device, protected seibu_sound_common
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
dcon_state(const machine_config &mconfig, device_type type, const char *tag) :
|
dcon_state(const machine_config &mconfig, device_type type, const char *tag) :
|
||||||
|
@ -15,7 +15,7 @@
|
|||||||
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
|
|
||||||
class legionna_state : public driver_device, public seibu_sound_common
|
class legionna_state : public driver_device, protected seibu_sound_common
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
legionna_state(const machine_config &mconfig, device_type type, const char *tag)
|
legionna_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||||
@ -54,29 +54,6 @@ public:
|
|||||||
void init_olysoc92();
|
void init_olysoc92();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
required_shared_ptr<u16> m_spriteram;
|
|
||||||
optional_shared_ptr<u16> m_swappal;
|
|
||||||
std::unique_ptr<u16[]> m_back_data;
|
|
||||||
std::unique_ptr<u16[]> m_fore_data;
|
|
||||||
std::unique_ptr<u16[]> m_mid_data;
|
|
||||||
std::unique_ptr<u16[]> m_textram;
|
|
||||||
std::unique_ptr<u16[]> m_scrollram16;
|
|
||||||
std::unique_ptr<u16[]> m_paletteram;
|
|
||||||
u16 m_layer_disable;
|
|
||||||
std::unique_ptr<u16[]> m_layer_config;
|
|
||||||
int m_sprite_xoffs;
|
|
||||||
int m_sprite_yoffs;
|
|
||||||
tilemap_t *m_background_layer;
|
|
||||||
tilemap_t *m_foreground_layer;
|
|
||||||
tilemap_t *m_midground_layer;
|
|
||||||
tilemap_t *m_text_layer;
|
|
||||||
bool m_has_extended_banking;
|
|
||||||
bool m_has_extended_priority;
|
|
||||||
u16 m_sprite_pri_mask[4];
|
|
||||||
u16 m_back_gfx_bank;
|
|
||||||
u16 m_fore_gfx_bank;
|
|
||||||
u16 m_mid_gfx_bank;
|
|
||||||
u16 m_scrollvals[6];
|
|
||||||
void tilemap_enable_w(offs_t offset, u16 data, u16 mem_mask = ~0);
|
void tilemap_enable_w(offs_t offset, u16 data, u16 mem_mask = ~0);
|
||||||
void tile_scroll_w(offs_t offset, u16 data, u16 mem_mask = ~0);
|
void tile_scroll_w(offs_t offset, u16 data, u16 mem_mask = ~0);
|
||||||
void tile_scroll_base_w(offs_t offset, u16 data);
|
void tile_scroll_base_w(offs_t offset, u16 data);
|
||||||
@ -112,14 +89,7 @@ private:
|
|||||||
void descramble_legionnaire_gfx(u8* src);
|
void descramble_legionnaire_gfx(u8* src);
|
||||||
void common_video_start(bool split, bool has_extended_banking, bool has_extended_priority);
|
void common_video_start(bool split, bool has_extended_banking, bool has_extended_priority);
|
||||||
void common_video_allocate_ptr();
|
void common_video_allocate_ptr();
|
||||||
required_device<cpu_device> m_maincpu;
|
|
||||||
required_device<cpu_device> m_audiocpu;
|
|
||||||
optional_device<seibu_sound_device> m_seibu_sound;
|
|
||||||
required_device<okim6295_device> m_oki;
|
|
||||||
required_device<gfxdecode_device> m_gfxdecode;
|
|
||||||
required_device<palette_device> m_palette;
|
|
||||||
required_device<seibu_crtc_device> m_crtc;
|
|
||||||
optional_device<raiden2cop_device> m_raiden2cop;
|
|
||||||
void cupsoc_map(address_map &map);
|
void cupsoc_map(address_map &map);
|
||||||
void cupsocs_map(address_map &map);
|
void cupsocs_map(address_map &map);
|
||||||
void denjinmk_map(address_map &map);
|
void denjinmk_map(address_map &map);
|
||||||
@ -129,6 +99,39 @@ private:
|
|||||||
void legionna_cop_map(address_map &map);
|
void legionna_cop_map(address_map &map);
|
||||||
void legionna_map(address_map &map);
|
void legionna_map(address_map &map);
|
||||||
void godzilla_sound_io_map(address_map &map);
|
void godzilla_sound_io_map(address_map &map);
|
||||||
|
|
||||||
|
required_shared_ptr<u16> m_spriteram;
|
||||||
|
optional_shared_ptr<u16> m_swappal;
|
||||||
|
std::unique_ptr<u16[]> m_back_data;
|
||||||
|
std::unique_ptr<u16[]> m_fore_data;
|
||||||
|
std::unique_ptr<u16[]> m_mid_data;
|
||||||
|
std::unique_ptr<u16[]> m_textram;
|
||||||
|
std::unique_ptr<u16[]> m_scrollram16;
|
||||||
|
std::unique_ptr<u16[]> m_paletteram;
|
||||||
|
u16 m_layer_disable;
|
||||||
|
std::unique_ptr<u16[]> m_layer_config;
|
||||||
|
int m_sprite_xoffs;
|
||||||
|
int m_sprite_yoffs;
|
||||||
|
tilemap_t *m_background_layer;
|
||||||
|
tilemap_t *m_foreground_layer;
|
||||||
|
tilemap_t *m_midground_layer;
|
||||||
|
tilemap_t *m_text_layer;
|
||||||
|
bool m_has_extended_banking;
|
||||||
|
bool m_has_extended_priority;
|
||||||
|
u16 m_sprite_pri_mask[4];
|
||||||
|
u16 m_back_gfx_bank;
|
||||||
|
u16 m_fore_gfx_bank;
|
||||||
|
u16 m_mid_gfx_bank;
|
||||||
|
u16 m_scrollvals[6];
|
||||||
|
|
||||||
|
required_device<cpu_device> m_maincpu;
|
||||||
|
required_device<cpu_device> m_audiocpu;
|
||||||
|
optional_device<seibu_sound_device> m_seibu_sound;
|
||||||
|
required_device<okim6295_device> m_oki;
|
||||||
|
required_device<gfxdecode_device> m_gfxdecode;
|
||||||
|
required_device<palette_device> m_palette;
|
||||||
|
required_device<seibu_crtc_device> m_crtc;
|
||||||
|
optional_device<raiden2cop_device> m_raiden2cop;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // MAME_INCLUDES_LEGIONNA_H
|
#endif // MAME_INCLUDES_LEGIONNA_H
|
||||||
|
@ -16,7 +16,7 @@
|
|||||||
#include "screen.h"
|
#include "screen.h"
|
||||||
#include "tilemap.h"
|
#include "tilemap.h"
|
||||||
|
|
||||||
class nmk16_state : public driver_device, public seibu_sound_common
|
class nmk16_state : public driver_device, protected seibu_sound_common
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
nmk16_state(const machine_config &mconfig, device_type type, const char *tag) :
|
nmk16_state(const machine_config &mconfig, device_type type, const char *tag) :
|
||||||
@ -82,6 +82,7 @@ public:
|
|||||||
void init_gunnailb();
|
void init_gunnailb();
|
||||||
void init_bjtwin();
|
void init_bjtwin();
|
||||||
|
|
||||||
|
protected:
|
||||||
DECLARE_VIDEO_START(gunnail);
|
DECLARE_VIDEO_START(gunnail);
|
||||||
TIMER_DEVICE_CALLBACK_MEMBER(nmk16_scanline);
|
TIMER_DEVICE_CALLBACK_MEMBER(nmk16_scanline);
|
||||||
u32 screen_update_macross(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
u32 screen_update_macross(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||||
@ -92,7 +93,6 @@ public:
|
|||||||
|
|
||||||
void macross2_sound_bank_w(u8 data);
|
void macross2_sound_bank_w(u8 data);
|
||||||
|
|
||||||
protected:
|
|
||||||
required_device<cpu_device> m_maincpu;
|
required_device<cpu_device> m_maincpu;
|
||||||
optional_device<cpu_device> m_audiocpu;
|
optional_device<cpu_device> m_audiocpu;
|
||||||
optional_device_array<okim6295_device, 2> m_oki;
|
optional_device_array<okim6295_device, 2> m_oki;
|
||||||
@ -247,6 +247,7 @@ public:
|
|||||||
void redhawkb(machine_config &config);
|
void redhawkb(machine_config &config);
|
||||||
void stagger1(machine_config &config);
|
void stagger1(machine_config &config);
|
||||||
void spec2k(machine_config &config);
|
void spec2k(machine_config &config);
|
||||||
|
|
||||||
void init_bubl2000();
|
void init_bubl2000();
|
||||||
void init_grdnstrm();
|
void init_grdnstrm();
|
||||||
void init_grdnstrmau();
|
void init_grdnstrmau();
|
||||||
@ -288,6 +289,7 @@ public:
|
|||||||
{}
|
{}
|
||||||
|
|
||||||
void tomagic(machine_config &config);
|
void tomagic(machine_config &config);
|
||||||
|
|
||||||
void init_tomagic();
|
void init_tomagic();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
@ -15,14 +15,14 @@
|
|||||||
#include "emupal.h"
|
#include "emupal.h"
|
||||||
#include "tilemap.h"
|
#include "tilemap.h"
|
||||||
|
|
||||||
class raiden_state : public driver_device, public seibu_sound_common
|
class raiden_state : public driver_device, protected seibu_sound_common
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
raiden_state(const machine_config &mconfig, device_type type, const char *tag) :
|
raiden_state(const machine_config &mconfig, device_type type, const char *tag) :
|
||||||
driver_device(mconfig, type, tag),
|
driver_device(mconfig, type, tag),
|
||||||
m_maincpu(*this, "maincpu"),
|
m_maincpu(*this, "maincpu"),
|
||||||
m_subcpu(*this, "sub"),
|
|
||||||
m_seibu_sound(*this, "seibu_sound"),
|
m_seibu_sound(*this, "seibu_sound"),
|
||||||
|
m_subcpu(*this, "sub"),
|
||||||
m_gfxdecode(*this, "gfxdecode"),
|
m_gfxdecode(*this, "gfxdecode"),
|
||||||
m_palette(*this, "palette"),
|
m_palette(*this, "palette"),
|
||||||
m_spriteram(*this, "spriteram"),
|
m_spriteram(*this, "spriteram"),
|
||||||
@ -33,9 +33,31 @@ public:
|
|||||||
m_fore_data(*this, "fore_data")
|
m_fore_data(*this, "fore_data")
|
||||||
{ }
|
{ }
|
||||||
|
|
||||||
|
void raidene(machine_config &config);
|
||||||
|
void raiden(machine_config &config);
|
||||||
|
void raidenkb(machine_config &config);
|
||||||
|
void raidenu(machine_config &config);
|
||||||
|
|
||||||
|
void init_raiden();
|
||||||
|
|
||||||
|
protected:
|
||||||
required_device<cpu_device> m_maincpu;
|
required_device<cpu_device> m_maincpu;
|
||||||
required_device<cpu_device> m_subcpu;
|
|
||||||
required_device<seibu_sound_device> m_seibu_sound;
|
required_device<seibu_sound_device> m_seibu_sound;
|
||||||
|
|
||||||
|
uint8_t m_bg_layer_enabled;
|
||||||
|
uint8_t m_fg_layer_enabled;
|
||||||
|
uint8_t m_tx_layer_enabled;
|
||||||
|
uint8_t m_sp_layer_enabled;
|
||||||
|
uint8_t m_flipscreen;
|
||||||
|
|
||||||
|
virtual void video_start() override;
|
||||||
|
|
||||||
|
uint32_t screen_update_common(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, uint16_t *scrollregs);
|
||||||
|
|
||||||
|
DECLARE_WRITE16_MEMBER(raiden_text_w);
|
||||||
|
|
||||||
|
private:
|
||||||
|
required_device<cpu_device> m_subcpu;
|
||||||
required_device<gfxdecode_device> m_gfxdecode;
|
required_device<gfxdecode_device> m_gfxdecode;
|
||||||
required_device<palette_device> m_palette;
|
required_device<palette_device> m_palette;
|
||||||
required_device<buffered_spriteram16_device> m_spriteram;
|
required_device<buffered_spriteram16_device> m_spriteram;
|
||||||
@ -49,50 +71,52 @@ public:
|
|||||||
tilemap_t *m_bg_layer;
|
tilemap_t *m_bg_layer;
|
||||||
tilemap_t *m_fg_layer;
|
tilemap_t *m_fg_layer;
|
||||||
tilemap_t *m_tx_layer;
|
tilemap_t *m_tx_layer;
|
||||||
uint8_t m_bg_layer_enabled;
|
|
||||||
uint8_t m_fg_layer_enabled;
|
|
||||||
uint8_t m_tx_layer_enabled;
|
|
||||||
uint8_t m_sp_layer_enabled;
|
|
||||||
uint8_t m_flipscreen;
|
|
||||||
uint16_t m_raidenb_scroll_ram[6];
|
|
||||||
|
|
||||||
DECLARE_WRITE16_MEMBER(raiden_background_w);
|
DECLARE_WRITE16_MEMBER(raiden_background_w);
|
||||||
DECLARE_WRITE16_MEMBER(raiden_foreground_w);
|
DECLARE_WRITE16_MEMBER(raiden_foreground_w);
|
||||||
DECLARE_WRITE16_MEMBER(raiden_text_w);
|
|
||||||
DECLARE_WRITE8_MEMBER(raiden_control_w);
|
DECLARE_WRITE8_MEMBER(raiden_control_w);
|
||||||
DECLARE_WRITE8_MEMBER(raidenb_control_w);
|
|
||||||
DECLARE_WRITE16_MEMBER(raidenb_layer_enable_w);
|
|
||||||
DECLARE_WRITE16_MEMBER(raidenb_layer_scroll_w);
|
|
||||||
void init_raiden();
|
|
||||||
|
|
||||||
TILE_GET_INFO_MEMBER(get_back_tile_info);
|
TILE_GET_INFO_MEMBER(get_back_tile_info);
|
||||||
TILE_GET_INFO_MEMBER(get_fore_tile_info);
|
TILE_GET_INFO_MEMBER(get_fore_tile_info);
|
||||||
TILE_GET_INFO_MEMBER(get_text_tile_info);
|
TILE_GET_INFO_MEMBER(get_text_tile_info);
|
||||||
|
|
||||||
virtual void video_start() override;
|
|
||||||
DECLARE_VIDEO_START(raidenb);
|
|
||||||
|
|
||||||
uint32_t screen_update_common(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, uint16_t *scrollregs);
|
|
||||||
uint32_t screen_update_raiden(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
uint32_t screen_update_raiden(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||||
uint32_t screen_update_raidenb(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
|
||||||
|
|
||||||
DECLARE_WRITE_LINE_MEMBER(vblank_irq);
|
DECLARE_WRITE_LINE_MEMBER(vblank_irq);
|
||||||
|
|
||||||
void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect, int pri_mask);
|
void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect, int pri_mask);
|
||||||
void common_decrypt();
|
void common_decrypt();
|
||||||
void raidene(machine_config &config);
|
|
||||||
void raidenb(machine_config &config);
|
|
||||||
void raiden(machine_config &config);
|
|
||||||
void raidenkb(machine_config &config);
|
|
||||||
void raidenu(machine_config &config);
|
|
||||||
void main_map(address_map &map);
|
void main_map(address_map &map);
|
||||||
void raiden_sound_decrypted_opcodes_map(address_map &map);
|
void sub_map(address_map &map);
|
||||||
void raiden_sound_map(address_map &map);
|
void raiden_sound_map(address_map &map);
|
||||||
void raidenb_main_map(address_map &map);
|
void raiden_sound_decrypted_opcodes_map(address_map &map);
|
||||||
void raidenu_main_map(address_map &map);
|
void raidenu_main_map(address_map &map);
|
||||||
void raidenu_sub_map(address_map &map);
|
void raidenu_sub_map(address_map &map);
|
||||||
void sei80bu_encrypted_full_map(address_map &map);
|
void sei80bu_encrypted_full_map(address_map &map);
|
||||||
void sub_map(address_map &map);
|
};
|
||||||
|
|
||||||
|
|
||||||
|
class raidenb_state : public raiden_state
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
using raiden_state::raiden_state;
|
||||||
|
|
||||||
|
void raidenb(machine_config &config);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
virtual void video_start() override;
|
||||||
|
|
||||||
|
private:
|
||||||
|
uint16_t m_raidenb_scroll_ram[6];
|
||||||
|
|
||||||
|
uint32_t screen_update_raidenb(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||||
|
|
||||||
|
DECLARE_WRITE8_MEMBER(raidenb_control_w);
|
||||||
|
DECLARE_WRITE16_MEMBER(raidenb_layer_enable_w);
|
||||||
|
DECLARE_WRITE16_MEMBER(raidenb_layer_scroll_w);
|
||||||
|
|
||||||
|
void raidenb_main_map(address_map &map);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // MAME_INCLUDES_RAIDEN_H
|
#endif // MAME_INCLUDES_RAIDEN_H
|
||||||
|
@ -52,7 +52,7 @@ WRITE8_MEMBER(raiden_state::raiden_control_w)
|
|||||||
machine().tilemap().set_flip_all(m_flipscreen ? (TILEMAP_FLIPY | TILEMAP_FLIPX) : 0);
|
machine().tilemap().set_flip_all(m_flipscreen ? (TILEMAP_FLIPY | TILEMAP_FLIPX) : 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
WRITE8_MEMBER(raiden_state::raidenb_control_w)
|
WRITE8_MEMBER(raidenb_state::raidenb_control_w)
|
||||||
{
|
{
|
||||||
// d1: flipscreen
|
// d1: flipscreen
|
||||||
// d2: toggles, maybe spriteram bank? (for buffering)
|
// d2: toggles, maybe spriteram bank? (for buffering)
|
||||||
@ -64,7 +64,7 @@ WRITE8_MEMBER(raiden_state::raidenb_control_w)
|
|||||||
machine().tilemap().set_flip_all(m_flipscreen ? (TILEMAP_FLIPY | TILEMAP_FLIPX) : 0);
|
machine().tilemap().set_flip_all(m_flipscreen ? (TILEMAP_FLIPY | TILEMAP_FLIPX) : 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
WRITE16_MEMBER(raiden_state::raidenb_layer_enable_w)
|
WRITE16_MEMBER(raidenb_state::raidenb_layer_enable_w)
|
||||||
{
|
{
|
||||||
// d0: back layer disable
|
// d0: back layer disable
|
||||||
// d1: fore layer disable
|
// d1: fore layer disable
|
||||||
@ -187,7 +187,7 @@ uint32_t raiden_state::screen_update_raiden(screen_device &screen, bitmap_ind16
|
|||||||
return screen_update_common(screen, bitmap, cliprect, scrollregs);
|
return screen_update_common(screen, bitmap, cliprect, scrollregs);
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t raiden_state::screen_update_raidenb(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
uint32_t raidenb_state::screen_update_raidenb(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||||
{
|
{
|
||||||
return screen_update_common(screen, bitmap, cliprect, m_raidenb_scroll_ram);
|
return screen_update_common(screen, bitmap, cliprect, m_raidenb_scroll_ram);
|
||||||
}
|
}
|
||||||
@ -238,19 +238,9 @@ void raiden_state::video_start()
|
|||||||
save_item(NAME(m_flipscreen));
|
save_item(NAME(m_flipscreen));
|
||||||
}
|
}
|
||||||
|
|
||||||
VIDEO_START_MEMBER(raiden_state,raidenb)
|
void raidenb_state::video_start()
|
||||||
{
|
{
|
||||||
m_bg_layer = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(raiden_state::get_back_tile_info)), TILEMAP_SCAN_COLS, 16,16, 32,32);
|
raiden_state::video_start();
|
||||||
m_fg_layer = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(raiden_state::get_fore_tile_info)), TILEMAP_SCAN_COLS, 16,16, 32,32);
|
|
||||||
m_tx_layer = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(raiden_state::get_text_tile_info)), TILEMAP_SCAN_COLS, 8, 8, 32,32);
|
|
||||||
|
|
||||||
m_fg_layer->set_transparent_pen(15);
|
|
||||||
m_tx_layer->set_transparent_pen(15);
|
|
||||||
|
|
||||||
save_item(NAME(m_bg_layer_enabled));
|
|
||||||
save_item(NAME(m_fg_layer_enabled));
|
|
||||||
save_item(NAME(m_tx_layer_enabled));
|
|
||||||
save_item(NAME(m_sp_layer_enabled));
|
|
||||||
save_item(NAME(m_flipscreen));
|
|
||||||
save_item(NAME(m_raidenb_scroll_ram));
|
save_item(NAME(m_raidenb_scroll_ram));
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user