mirror of
https://github.com/holub/mame
synced 2025-10-07 17:27:06 +03:00
f1gp.cpp : Various cleanups (#3886)
Cleanup duplicate/naming, Split f1gp2 specific functions into driver state, Move GFX swap into rom load, Add shared_ptr for GFX RAM
This commit is contained in:
parent
af615b5fe6
commit
8dadf8537c
@ -41,7 +41,7 @@
|
|||||||
#include "speaker.h"
|
#include "speaker.h"
|
||||||
|
|
||||||
|
|
||||||
WRITE8_MEMBER(f1gp_state::f1gp_sh_bankswitch_w)
|
WRITE8_MEMBER(f1gp_state::sh_bankswitch_w)
|
||||||
{
|
{
|
||||||
m_z80bank->set_entry(data & 0x01);
|
m_z80bank->set_entry(data & 0x01);
|
||||||
}
|
}
|
||||||
@ -58,24 +58,21 @@ void f1gp_state::f1gp_cpu1_map(address_map &map)
|
|||||||
map(0x000000, 0x03ffff).rom();
|
map(0x000000, 0x03ffff).rom();
|
||||||
map(0x100000, 0x2fffff).rom().region("user1", 0);
|
map(0x100000, 0x2fffff).rom().region("user1", 0);
|
||||||
map(0xa00000, 0xbfffff).rom().region("user2", 0);
|
map(0xa00000, 0xbfffff).rom().region("user2", 0);
|
||||||
map(0xc00000, 0xc3ffff).rw(FUNC(f1gp_state::f1gp_zoomdata_r), FUNC(f1gp_state::f1gp_zoomdata_w));
|
map(0xc00000, 0xc3ffff).ram().w(FUNC(f1gp_state::rozgfxram_w)).share("rozgfxram");
|
||||||
map(0xd00000, 0xd01fff).rw(FUNC(f1gp_state::f1gp_rozvideoram_r), FUNC(f1gp_state::f1gp_rozvideoram_w)).share("rozvideoram");
|
map(0xd00000, 0xd01fff).mirror(0x006000).ram().w(FUNC(f1gp_state::rozvideoram_w)).share("rozvideoram");
|
||||||
map(0xd02000, 0xd03fff).rw(FUNC(f1gp_state::f1gp_rozvideoram_r), FUNC(f1gp_state::f1gp_rozvideoram_w)); /* mirror */
|
|
||||||
map(0xd04000, 0xd05fff).rw(FUNC(f1gp_state::f1gp_rozvideoram_r), FUNC(f1gp_state::f1gp_rozvideoram_w)); /* mirror */
|
|
||||||
map(0xd06000, 0xd07fff).rw(FUNC(f1gp_state::f1gp_rozvideoram_r), FUNC(f1gp_state::f1gp_rozvideoram_w)); /* mirror */
|
|
||||||
map(0xe00000, 0xe03fff).ram().share("spr1cgram"); // SPR-1 CG RAM
|
map(0xe00000, 0xe03fff).ram().share("spr1cgram"); // SPR-1 CG RAM
|
||||||
map(0xe04000, 0xe07fff).ram().share("spr2cgram"); // SPR-2 CG RAM
|
map(0xe04000, 0xe07fff).ram().share("spr2cgram"); // SPR-2 CG RAM
|
||||||
map(0xf00000, 0xf003ff).ram().share("spr1vram"); // SPR-1 VRAM
|
map(0xf00000, 0xf003ff).ram().share("spr1vram"); // SPR-1 VRAM
|
||||||
map(0xf10000, 0xf103ff).ram().share("spr2vram"); // SPR-2 VRAM
|
map(0xf10000, 0xf103ff).ram().share("spr2vram"); // SPR-2 VRAM
|
||||||
map(0xff8000, 0xffbfff).ram(); // WORK RAM-1
|
map(0xff8000, 0xffbfff).ram(); // WORK RAM-1
|
||||||
map(0xffc000, 0xffcfff).ram().share("sharedram"); // DUAL RAM
|
map(0xffc000, 0xffcfff).ram().share("sharedram"); // DUAL RAM
|
||||||
map(0xffd000, 0xffdfff).ram().w(FUNC(f1gp_state::f1gp_fgvideoram_w)).share("fgvideoram"); // CHARACTER
|
map(0xffd000, 0xffdfff).ram().w(FUNC(f1gp_state::fgvideoram_w)).share("fgvideoram"); // CHARACTER
|
||||||
map(0xffe000, 0xffefff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // PALETTE
|
map(0xffe000, 0xffefff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // PALETTE
|
||||||
map(0xfff000, 0xfff001).portr("INPUTS");
|
map(0xfff000, 0xfff001).portr("INPUTS");
|
||||||
map(0xfff000, 0xfff001).w(FUNC(f1gp_state::f1gp_gfxctrl_w));
|
map(0xfff001, 0xfff001).w(FUNC(f1gp_state::gfxctrl_w));
|
||||||
map(0xfff002, 0xfff003).portr("WHEEL");
|
map(0xfff002, 0xfff003).portr("WHEEL");
|
||||||
map(0xfff004, 0xfff005).portr("DSW1");
|
map(0xfff004, 0xfff005).portr("DSW1");
|
||||||
map(0xfff002, 0xfff005).w(FUNC(f1gp_state::f1gp_fgscroll_w));
|
map(0xfff002, 0xfff005).w(FUNC(f1gp_state::fgscroll_w));
|
||||||
map(0xfff006, 0xfff007).portr("DSW2");
|
map(0xfff006, 0xfff007).portr("DSW2");
|
||||||
map(0xfff009, 0xfff009).r(FUNC(f1gp_state::command_pending_r)).w(m_soundlatch, FUNC(generic_latch_8_device::write)).umask16(0x00ff);
|
map(0xfff009, 0xfff009).r(FUNC(f1gp_state::command_pending_r)).w(m_soundlatch, FUNC(generic_latch_8_device::write)).umask16(0x00ff);
|
||||||
map(0xfff020, 0xfff023).w("gga", FUNC(vsystem_gga_device::write)).umask16(0x00ff);
|
map(0xfff020, 0xfff023).w("gga", FUNC(vsystem_gga_device::write)).umask16(0x00ff);
|
||||||
@ -83,25 +80,27 @@ void f1gp_state::f1gp_cpu1_map(address_map &map)
|
|||||||
map(0xfff050, 0xfff051).portr("DSW3");
|
map(0xfff050, 0xfff051).portr("DSW3");
|
||||||
}
|
}
|
||||||
|
|
||||||
void f1gp_state::f1gp2_cpu1_map(address_map &map)
|
void f1gp2_state::f1gp2_cpu1_map(address_map &map)
|
||||||
{
|
{
|
||||||
map(0x000000, 0x03ffff).rom();
|
map(0x000000, 0x03ffff).rom();
|
||||||
map(0x100000, 0x2fffff).rom().region("user1", 0);
|
map(0x100000, 0x2fffff).rom().region("user1", 0);
|
||||||
map(0xa00000, 0xa07fff).ram().share("sprcgram"); // SPR-1 CG RAM + SPR-2 CG RAM
|
map(0xa00000, 0xa07fff).ram().share("spr1cgram"); // SPR-1 CG RAM + SPR-2 CG RAM
|
||||||
map(0xd00000, 0xd01fff).rw(FUNC(f1gp_state::f1gp_rozvideoram_r), FUNC(f1gp_state::f1gp_rozvideoram_w)).share("rozvideoram"); // BACK VRAM
|
map(0xd00000, 0xd01fff).ram().w(FUNC(f1gp2_state::rozvideoram_w)).share("rozvideoram"); // BACK VRAM
|
||||||
map(0xe00000, 0xe00fff).ram().share("spritelist"); // not checked + SPR-1 VRAM + SPR-2 VRAM
|
map(0xe00000, 0xe00fff).ram().share("spr1vram"); // not checked + SPR-1 VRAM + SPR-2 VRAM
|
||||||
map(0xff8000, 0xffbfff).ram(); // WORK RAM-1
|
map(0xff8000, 0xffbfff).ram(); // WORK RAM-1
|
||||||
map(0xffc000, 0xffcfff).ram().share("sharedram"); // DUAL RAM
|
map(0xffc000, 0xffcfff).ram().share("sharedram"); // DUAL RAM
|
||||||
map(0xffd000, 0xffdfff).ram().w(FUNC(f1gp_state::f1gp_fgvideoram_w)).share("fgvideoram"); // CHARACTER
|
map(0xffd000, 0xffdfff).ram().w(FUNC(f1gp2_state::fgvideoram_w)).share("fgvideoram"); // CHARACTER
|
||||||
map(0xffe000, 0xffefff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // PALETTE
|
map(0xffe000, 0xffefff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // PALETTE
|
||||||
map(0xfff000, 0xfff001).portr("INPUTS").w(FUNC(f1gp_state::f1gp2_gfxctrl_w));
|
map(0xfff000, 0xfff001).portr("INPUTS");
|
||||||
|
map(0xfff000, 0xfff000).w(FUNC(f1gp2_state::rozbank_w));
|
||||||
|
map(0xfff001, 0xfff001).w(FUNC(f1gp2_state::gfxctrl_w));
|
||||||
map(0xfff002, 0xfff003).portr("WHEEL");
|
map(0xfff002, 0xfff003).portr("WHEEL");
|
||||||
map(0xfff004, 0xfff005).portr("DSW1");
|
map(0xfff004, 0xfff005).portr("DSW1");
|
||||||
map(0xfff006, 0xfff007).portr("DSW2");
|
map(0xfff006, 0xfff007).portr("DSW2");
|
||||||
map(0xfff009, 0xfff009).r(FUNC(f1gp_state::command_pending_r)).w(m_soundlatch, FUNC(generic_latch_8_device::write)).umask16(0x00ff);
|
map(0xfff009, 0xfff009).r(FUNC(f1gp2_state::command_pending_r)).w(m_soundlatch, FUNC(generic_latch_8_device::write)).umask16(0x00ff);
|
||||||
map(0xfff00a, 0xfff00b).portr("DSW3");
|
map(0xfff00a, 0xfff00b).portr("DSW3");
|
||||||
map(0xfff020, 0xfff03f).w(m_k053936, FUNC(k053936_device::ctrl_w));
|
map(0xfff020, 0xfff03f).w(m_k053936, FUNC(k053936_device::ctrl_w));
|
||||||
map(0xfff044, 0xfff047).w(FUNC(f1gp_state::f1gp_fgscroll_w));
|
map(0xfff044, 0xfff047).w(FUNC(f1gp2_state::fgscroll_w));
|
||||||
}
|
}
|
||||||
|
|
||||||
void f1gp_state::f1gp_cpu2_map(address_map &map)
|
void f1gp_state::f1gp_cpu2_map(address_map &map)
|
||||||
@ -116,14 +115,14 @@ void f1gp_state::sound_map(address_map &map)
|
|||||||
{
|
{
|
||||||
map(0x0000, 0x77ff).rom();
|
map(0x0000, 0x77ff).rom();
|
||||||
map(0x7800, 0x7fff).ram();
|
map(0x7800, 0x7fff).ram();
|
||||||
map(0x8000, 0xffff).bankr("bank1");
|
map(0x8000, 0xffff).bankr("z80bank");
|
||||||
}
|
}
|
||||||
|
|
||||||
void f1gp_state::sound_io_map(address_map &map)
|
void f1gp_state::sound_io_map(address_map &map)
|
||||||
{
|
{
|
||||||
map.global_mask(0xff);
|
map.global_mask(0xff);
|
||||||
map(0x00, 0x00).w(FUNC(f1gp_state::f1gp_sh_bankswitch_w)); // f1gp
|
map(0x00, 0x00).w(FUNC(f1gp_state::sh_bankswitch_w)); // f1gp
|
||||||
map(0x0c, 0x0c).w(FUNC(f1gp_state::f1gp_sh_bankswitch_w)); // f1gp2
|
map(0x0c, 0x0c).w(FUNC(f1gp_state::sh_bankswitch_w)); // f1gp2
|
||||||
map(0x14, 0x14).rw(m_soundlatch, FUNC(generic_latch_8_device::read), FUNC(generic_latch_8_device::acknowledge_w));
|
map(0x14, 0x14).rw(m_soundlatch, FUNC(generic_latch_8_device::read), FUNC(generic_latch_8_device::acknowledge_w));
|
||||||
map(0x18, 0x1b).rw("ymsnd", FUNC(ym2610_device::read), FUNC(ym2610_device::write));
|
map(0x18, 0x1b).rw("ymsnd", FUNC(ym2610_device::read), FUNC(ym2610_device::write));
|
||||||
}
|
}
|
||||||
@ -159,18 +158,15 @@ void f1gp_state::f1gpb_cpu1_map(address_map &map)
|
|||||||
map(0x100000, 0x2fffff).rom().region("user1", 0);
|
map(0x100000, 0x2fffff).rom().region("user1", 0);
|
||||||
map(0xa00000, 0xbfffff).rom().region("user2", 0);
|
map(0xa00000, 0xbfffff).rom().region("user2", 0);
|
||||||
map(0x800000, 0x801fff).ram().share("spriteram");
|
map(0x800000, 0x801fff).ram().share("spriteram");
|
||||||
map(0xc00000, 0xc3ffff).rw(FUNC(f1gp_state::f1gp_zoomdata_r), FUNC(f1gp_state::f1gp_zoomdata_w));
|
map(0xc00000, 0xc3ffff).ram().w(FUNC(f1gp_state::rozgfxram_w)).share("rozgfxram");
|
||||||
map(0xd00000, 0xd01fff).rw(FUNC(f1gp_state::f1gp_rozvideoram_r), FUNC(f1gp_state::f1gp_rozvideoram_w)).share("rozvideoram");
|
map(0xd00000, 0xd01fff).mirror(0x006000).ram().w(FUNC(f1gp_state::rozvideoram_w)).share("rozvideoram");
|
||||||
map(0xd02000, 0xd03fff).rw(FUNC(f1gp_state::f1gp_rozvideoram_r), FUNC(f1gp_state::f1gp_rozvideoram_w)); /* mirror */
|
|
||||||
map(0xd04000, 0xd05fff).rw(FUNC(f1gp_state::f1gp_rozvideoram_r), FUNC(f1gp_state::f1gp_rozvideoram_w)); /* mirror */
|
|
||||||
map(0xd06000, 0xd07fff).rw(FUNC(f1gp_state::f1gp_rozvideoram_r), FUNC(f1gp_state::f1gp_rozvideoram_w)); /* mirror */
|
|
||||||
map(0xe00000, 0xe03fff).ram(); //unused
|
map(0xe00000, 0xe03fff).ram(); //unused
|
||||||
map(0xe04000, 0xe07fff).ram(); //unused
|
map(0xe04000, 0xe07fff).ram(); //unused
|
||||||
map(0xf00000, 0xf003ff).ram(); //unused
|
map(0xf00000, 0xf003ff).ram(); //unused
|
||||||
map(0xf10000, 0xf103ff).ram(); //unused
|
map(0xf10000, 0xf103ff).ram(); //unused
|
||||||
map(0xff8000, 0xffbfff).ram();
|
map(0xff8000, 0xffbfff).ram();
|
||||||
map(0xffc000, 0xffcfff).ram().share("sharedram");
|
map(0xffc000, 0xffcfff).ram().share("sharedram");
|
||||||
map(0xffd000, 0xffdfff).ram().w(FUNC(f1gp_state::f1gp_fgvideoram_w)).share("fgvideoram");
|
map(0xffd000, 0xffdfff).ram().w(FUNC(f1gp_state::fgvideoram_w)).share("fgvideoram");
|
||||||
map(0xffe000, 0xffefff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
|
map(0xffe000, 0xffefff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
|
||||||
map(0xfff000, 0xfff001).portr("INPUTS");
|
map(0xfff000, 0xfff001).portr("INPUTS");
|
||||||
map(0xfff002, 0xfff003).portr("WHEEL");
|
map(0xfff002, 0xfff003).portr("WHEEL");
|
||||||
@ -325,10 +321,10 @@ static const gfx_layout charlayout =
|
|||||||
8,8,
|
8,8,
|
||||||
RGN_FRAC(1,1),
|
RGN_FRAC(1,1),
|
||||||
8,
|
8,
|
||||||
{ 0, 1, 2, 3, 4, 5, 6, 7 },
|
{ STEP8(0,1) },
|
||||||
{ 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
|
{ STEP8(0,8) },
|
||||||
{ 0*64, 1*64, 2*64, 3*64, 4*64, 5*64, 6*64, 7*64 },
|
{ STEP8(0,8*8) },
|
||||||
64*8
|
8*8*8
|
||||||
};
|
};
|
||||||
|
|
||||||
static const gfx_layout tilelayout =
|
static const gfx_layout tilelayout =
|
||||||
@ -336,27 +332,10 @@ static const gfx_layout tilelayout =
|
|||||||
16,16,
|
16,16,
|
||||||
RGN_FRAC(1,1),
|
RGN_FRAC(1,1),
|
||||||
4,
|
4,
|
||||||
{ 0, 1, 2, 3 },
|
{ STEP4(0,1) },
|
||||||
{ 2*4, 3*4, 0*4, 1*4, 6*4, 7*4, 4*4, 5*4,
|
{ STEP16(0,4) },
|
||||||
10*4, 11*4, 8*4, 9*4, 14*4, 15*4, 12*4, 13*4 },
|
{ STEP16(0,4*16) },
|
||||||
{ 0*64, 1*64, 2*64, 3*64, 4*64, 5*64, 6*64, 7*64,
|
16*16*4
|
||||||
8*64, 9*64, 10*64, 11*64, 12*64, 13*64, 14*64, 15*64 },
|
|
||||||
64*16
|
|
||||||
};
|
|
||||||
|
|
||||||
#define XOR(a) WORD_XOR_BE(a)
|
|
||||||
|
|
||||||
static const gfx_layout tilelayout2 =
|
|
||||||
{
|
|
||||||
16,16,
|
|
||||||
0x800,
|
|
||||||
4,
|
|
||||||
{ 0, 1, 2, 3 },
|
|
||||||
{ XOR(0)*4, XOR(1)*4, XOR(2)*4, XOR(3)*4, XOR(4)*4, XOR(5)*4, XOR(6)*4, XOR(7)*4,
|
|
||||||
XOR(8)*4, XOR(9)*4, XOR(10)*4, XOR(11)*4, XOR(12)*4, XOR(13)*4, XOR(14)*4, XOR(15)*4 },
|
|
||||||
{ 0*64, 1*64, 2*64, 3*64, 4*64, 5*64, 6*64, 7*64,
|
|
||||||
8*64, 9*64, 10*64, 11*64, 12*64, 13*64, 14*64, 15*64 },
|
|
||||||
64*16
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static const gfx_layout spritelayout =
|
static const gfx_layout spritelayout =
|
||||||
@ -364,19 +343,18 @@ static const gfx_layout spritelayout =
|
|||||||
16,16,
|
16,16,
|
||||||
RGN_FRAC(1,1),
|
RGN_FRAC(1,1),
|
||||||
4,
|
4,
|
||||||
{ 0, 1, 2, 3 },
|
{ STEP4(0,1) },
|
||||||
{ 1*4, 0*4, 3*4, 2*4, 5*4, 4*4, 7*4, 6*4,
|
{ 1*4, 0*4, 3*4, 2*4, 5*4, 4*4, 7*4, 6*4,
|
||||||
9*4, 8*4, 11*4, 10*4, 13*4, 12*4, 15*4, 14*4 },
|
9*4, 8*4, 11*4, 10*4, 13*4, 12*4, 15*4, 14*4 },
|
||||||
{ 0*64, 1*64, 2*64, 3*64, 4*64, 5*64, 6*64, 7*64,
|
{ STEP16(0,4*16) },
|
||||||
8*64, 9*64, 10*64, 11*64, 12*64, 13*64, 14*64, 15*64 },
|
16*16*4
|
||||||
128*8
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static GFXDECODE_START( gfx_f1gp )
|
static GFXDECODE_START( gfx_f1gp )
|
||||||
GFXDECODE_ENTRY( "gfx1", 0, charlayout, 0x000, 1 )
|
GFXDECODE_ENTRY( "gfx1", 0, charlayout, 0x000, 1 )
|
||||||
GFXDECODE_ENTRY( "gfx2", 0, spritelayout, 0x100, 16 )
|
GFXDECODE_ENTRY( "gfx2", 0, spritelayout, 0x100, 16 )
|
||||||
GFXDECODE_ENTRY( "gfx3", 0, spritelayout, 0x200, 16 )
|
GFXDECODE_ENTRY( "gfx3", 0, spritelayout, 0x200, 16 )
|
||||||
GFXDECODE_ENTRY( "gfx4", 0, tilelayout2, 0x300, 16 )
|
GFXDECODE_RAM( "rozgfxram", 0, tilelayout, 0x300, 16 )
|
||||||
GFXDECODE_END
|
GFXDECODE_END
|
||||||
|
|
||||||
static GFXDECODE_START( gfx_f1gp2 )
|
static GFXDECODE_START( gfx_f1gp2 )
|
||||||
@ -386,33 +364,35 @@ static GFXDECODE_START( gfx_f1gp2 )
|
|||||||
GFXDECODE_END
|
GFXDECODE_END
|
||||||
|
|
||||||
|
|
||||||
MACHINE_START_MEMBER(f1gp_state,f1gpb)
|
void f1gp_state::machine_start()
|
||||||
{
|
{
|
||||||
|
if (m_z80bank)
|
||||||
|
m_z80bank->configure_entries(0, 2, memregion("audiocpu")->base() + 0x8000, 0x8000);
|
||||||
|
|
||||||
m_acia->write_cts(0);
|
m_acia->write_cts(0);
|
||||||
m_acia->write_dcd(0);
|
m_acia->write_dcd(0);
|
||||||
|
|
||||||
save_item(NAME(m_roz_bank));
|
|
||||||
save_item(NAME(m_flipscreen));
|
|
||||||
save_item(NAME(m_gfxctrl));
|
|
||||||
save_item(NAME(m_scroll));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
MACHINE_START_MEMBER(f1gp_state,f1gp)
|
void f1gp_state::machine_reset()
|
||||||
{
|
{
|
||||||
membank("bank1")->configure_entries(0, 2, memregion("audiocpu")->base() + 0x10000, 0x8000);
|
|
||||||
|
|
||||||
MACHINE_START_CALL_MEMBER(f1gpb);
|
|
||||||
}
|
|
||||||
|
|
||||||
MACHINE_RESET_MEMBER(f1gp_state,f1gp)
|
|
||||||
{
|
|
||||||
m_roz_bank = 0;
|
|
||||||
m_flipscreen = 0;
|
m_flipscreen = 0;
|
||||||
m_gfxctrl = 0;
|
m_gfxctrl = 0;
|
||||||
m_scroll[0] = 0;
|
m_scroll[0] = 0;
|
||||||
m_scroll[1] = 0;
|
m_scroll[1] = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void f1gp2_state::machine_reset()
|
||||||
|
{
|
||||||
|
f1gp_state::machine_reset();
|
||||||
|
m_roz_bank = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
template<int Chip>
|
||||||
|
uint32_t f1gp_state::tile_callback( uint32_t code )
|
||||||
|
{
|
||||||
|
return m_sprcgram[Chip][code & (m_sprcgram[Chip].mask()>>1)];
|
||||||
|
}
|
||||||
|
|
||||||
MACHINE_CONFIG_START(f1gp_state::f1gp)
|
MACHINE_CONFIG_START(f1gp_state::f1gp)
|
||||||
|
|
||||||
/* basic machine hardware */
|
/* basic machine hardware */
|
||||||
@ -430,9 +410,6 @@ MACHINE_CONFIG_START(f1gp_state::f1gp)
|
|||||||
|
|
||||||
MCFG_QUANTUM_TIME(attotime::from_hz(6000)) /* 100 CPU slices per frame */
|
MCFG_QUANTUM_TIME(attotime::from_hz(6000)) /* 100 CPU slices per frame */
|
||||||
|
|
||||||
MCFG_MACHINE_START_OVERRIDE(f1gp_state,f1gp)
|
|
||||||
MCFG_MACHINE_RESET_OVERRIDE(f1gp_state,f1gp)
|
|
||||||
|
|
||||||
ACIA6850(config, m_acia, 0);
|
ACIA6850(config, m_acia, 0);
|
||||||
m_acia->irq_handler().set_inputline("sub", M68K_IRQ_3);
|
m_acia->irq_handler().set_inputline("sub", M68K_IRQ_3);
|
||||||
m_acia->txd_handler().set("acia", FUNC(acia6850_device::write_rxd)); // loopback for now
|
m_acia->txd_handler().set("acia", FUNC(acia6850_device::write_rxd)); // loopback for now
|
||||||
@ -455,20 +432,18 @@ MACHINE_CONFIG_START(f1gp_state::f1gp)
|
|||||||
|
|
||||||
MCFG_DEVICE_ADD("gga", VSYSTEM_GGA, XTAL(14'318'181) / 2) // divider not verified
|
MCFG_DEVICE_ADD("gga", VSYSTEM_GGA, XTAL(14'318'181) / 2) // divider not verified
|
||||||
|
|
||||||
MCFG_DEVICE_ADD("vsystem_spr_old", VSYSTEM_SPR2, 0)
|
MCFG_DEVICE_ADD("vsystem_spr_old1", VSYSTEM_SPR2, 0)
|
||||||
MCFG_VSYSTEM_SPR2_SET_TILE_INDIRECT( f1gp_state, f1gp_old_tile_callback )
|
MCFG_VSYSTEM_SPR2_SET_TILE_INDIRECT( f1gp_state, tile_callback<0> )
|
||||||
MCFG_VSYSTEM_SPR2_SET_GFXREGION(1)
|
MCFG_VSYSTEM_SPR2_SET_GFXREGION(1)
|
||||||
MCFG_VSYSTEM_SPR2_SET_PRITYPE(2)
|
MCFG_VSYSTEM_SPR2_SET_PRITYPE(2)
|
||||||
MCFG_VSYSTEM_SPR2_GFXDECODE("gfxdecode")
|
MCFG_VSYSTEM_SPR2_GFXDECODE("gfxdecode")
|
||||||
|
|
||||||
MCFG_DEVICE_ADD("vsystem_spr_ol2", VSYSTEM_SPR2, 0)
|
MCFG_DEVICE_ADD("vsystem_spr_old2", VSYSTEM_SPR2, 0)
|
||||||
MCFG_VSYSTEM_SPR2_SET_TILE_INDIRECT( f1gp_state, f1gp_ol2_tile_callback )
|
MCFG_VSYSTEM_SPR2_SET_TILE_INDIRECT( f1gp_state, tile_callback<1> )
|
||||||
MCFG_VSYSTEM_SPR2_SET_GFXREGION(2)
|
MCFG_VSYSTEM_SPR2_SET_GFXREGION(2)
|
||||||
MCFG_VSYSTEM_SPR2_SET_PRITYPE(2)
|
MCFG_VSYSTEM_SPR2_SET_PRITYPE(2)
|
||||||
MCFG_VSYSTEM_SPR2_GFXDECODE("gfxdecode")
|
MCFG_VSYSTEM_SPR2_GFXDECODE("gfxdecode")
|
||||||
|
|
||||||
MCFG_VIDEO_START_OVERRIDE(f1gp_state,f1gp)
|
|
||||||
|
|
||||||
MCFG_DEVICE_ADD("k053936", K053936, 0)
|
MCFG_DEVICE_ADD("k053936", K053936, 0)
|
||||||
MCFG_K053936_WRAP(1)
|
MCFG_K053936_WRAP(1)
|
||||||
MCFG_K053936_OFFSETS(-58, -2)
|
MCFG_K053936_OFFSETS(-58, -2)
|
||||||
@ -483,9 +458,9 @@ MACHINE_CONFIG_START(f1gp_state::f1gp)
|
|||||||
|
|
||||||
MCFG_DEVICE_ADD("ymsnd", YM2610, XTAL(8'000'000))
|
MCFG_DEVICE_ADD("ymsnd", YM2610, XTAL(8'000'000))
|
||||||
MCFG_YM2610_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
|
MCFG_YM2610_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
|
||||||
MCFG_SOUND_ROUTE(0, "lspeaker", 0.25)
|
MCFG_SOUND_ROUTE(0, "lspeaker", 0.25)
|
||||||
MCFG_SOUND_ROUTE(0, "rspeaker", 0.25)
|
MCFG_SOUND_ROUTE(0, "rspeaker", 0.25)
|
||||||
MCFG_SOUND_ROUTE(1, "lspeaker", 1.0)
|
MCFG_SOUND_ROUTE(1, "lspeaker", 1.0)
|
||||||
MCFG_SOUND_ROUTE(2, "rspeaker", 1.0)
|
MCFG_SOUND_ROUTE(2, "rspeaker", 1.0)
|
||||||
MACHINE_CONFIG_END
|
MACHINE_CONFIG_END
|
||||||
|
|
||||||
@ -504,9 +479,6 @@ MACHINE_CONFIG_START(f1gp_state::f1gpb)
|
|||||||
/* NO sound CPU */
|
/* NO sound CPU */
|
||||||
MCFG_QUANTUM_TIME(attotime::from_hz(6000)) /* 100 CPU slices per frame */
|
MCFG_QUANTUM_TIME(attotime::from_hz(6000)) /* 100 CPU slices per frame */
|
||||||
|
|
||||||
MCFG_MACHINE_START_OVERRIDE(f1gp_state,f1gpb)
|
|
||||||
MCFG_MACHINE_RESET_OVERRIDE(f1gp_state,f1gp)
|
|
||||||
|
|
||||||
ACIA6850(config, m_acia, 0);
|
ACIA6850(config, m_acia, 0);
|
||||||
m_acia->irq_handler().set_inputline("sub", M68K_IRQ_3);
|
m_acia->irq_handler().set_inputline("sub", M68K_IRQ_3);
|
||||||
m_acia->txd_handler().set("acia", FUNC(acia6850_device::write_rxd)); // loopback for now
|
m_acia->txd_handler().set("acia", FUNC(acia6850_device::write_rxd)); // loopback for now
|
||||||
@ -529,20 +501,16 @@ MACHINE_CONFIG_START(f1gp_state::f1gpb)
|
|||||||
|
|
||||||
//MCFG_DEVICE_ADD("gga", VSYSTEM_GGA, 0)
|
//MCFG_DEVICE_ADD("gga", VSYSTEM_GGA, 0)
|
||||||
|
|
||||||
MCFG_VIDEO_START_OVERRIDE(f1gp_state,f1gpb)
|
|
||||||
|
|
||||||
/* sound hardware */
|
/* sound hardware */
|
||||||
SPEAKER(config, "lspeaker").front_left();
|
SPEAKER(config, "mono").front_center();
|
||||||
SPEAKER(config, "rspeaker").front_right();
|
|
||||||
|
|
||||||
MCFG_DEVICE_ADD("oki", OKIM6295, 1000000, okim6295_device::PIN7_HIGH) // clock frequency & pin 7 not verified
|
MCFG_DEVICE_ADD("oki", OKIM6295, 1000000, okim6295_device::PIN7_HIGH) // clock frequency & pin 7 not verified
|
||||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.50)
|
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
|
||||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.50)
|
|
||||||
MACHINE_CONFIG_END
|
MACHINE_CONFIG_END
|
||||||
|
|
||||||
|
|
||||||
MACHINE_CONFIG_START(f1gp_state::f1gp2)
|
MACHINE_CONFIG_START(f1gp2_state::f1gp2)
|
||||||
f1gp(config);
|
f1gp_state::f1gp(config);
|
||||||
|
|
||||||
/* basic machine hardware */
|
/* basic machine hardware */
|
||||||
MCFG_DEVICE_MODIFY("maincpu")
|
MCFG_DEVICE_MODIFY("maincpu")
|
||||||
@ -552,20 +520,18 @@ MACHINE_CONFIG_START(f1gp_state::f1gp2)
|
|||||||
MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_f1gp2)
|
MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_f1gp2)
|
||||||
MCFG_SCREEN_MODIFY("screen")
|
MCFG_SCREEN_MODIFY("screen")
|
||||||
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 28*8-1)
|
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 28*8-1)
|
||||||
MCFG_SCREEN_UPDATE_DRIVER(f1gp_state, screen_update_f1gp2)
|
MCFG_SCREEN_UPDATE_DRIVER(f1gp2_state, screen_update)
|
||||||
|
|
||||||
MCFG_DEVICE_REMOVE("gga")
|
MCFG_DEVICE_REMOVE("gga")
|
||||||
MCFG_DEVICE_REMOVE("vsystem_spr_old")
|
MCFG_DEVICE_REMOVE("vsystem_spr_old1")
|
||||||
MCFG_DEVICE_REMOVE("vsystem_spr_ol2")
|
MCFG_DEVICE_REMOVE("vsystem_spr_old2")
|
||||||
MCFG_DEVICE_ADD("vsystem_spr", VSYSTEM_SPR, 0)
|
MCFG_DEVICE_ADD("vsystem_spr", VSYSTEM_SPR, 0)
|
||||||
MCFG_VSYSTEM_SPR_SET_TILE_INDIRECT( f1gp_state, f1gp2_tile_callback )
|
MCFG_VSYSTEM_SPR_SET_TILE_INDIRECT( f1gp2_state, tile_callback<0> )
|
||||||
MCFG_VSYSTEM_SPR_SET_GFXREGION(1)
|
MCFG_VSYSTEM_SPR_SET_GFXREGION(1)
|
||||||
MCFG_VSYSTEM_SPR_GFXDECODE("gfxdecode")
|
MCFG_VSYSTEM_SPR_GFXDECODE("gfxdecode")
|
||||||
|
|
||||||
MCFG_DEVICE_MODIFY("k053936")
|
MCFG_DEVICE_MODIFY("k053936")
|
||||||
MCFG_K053936_OFFSETS(-48, -21)
|
MCFG_K053936_OFFSETS(-48, -21)
|
||||||
|
|
||||||
MCFG_VIDEO_START_OVERRIDE(f1gp_state,f1gp2)
|
|
||||||
MACHINE_CONFIG_END
|
MACHINE_CONFIG_END
|
||||||
|
|
||||||
|
|
||||||
@ -592,9 +558,8 @@ ROM_START( f1gp )
|
|||||||
ROM_REGION( 0x20000, "sub", 0 ) /* 68000 code */
|
ROM_REGION( 0x20000, "sub", 0 ) /* 68000 code */
|
||||||
ROM_LOAD16_WORD_SWAP( "rom4-a.4", 0x000000, 0x20000, CRC(8e811d36) SHA1(2b806b50a3a307a21894687f16485ace287a7c4c) )
|
ROM_LOAD16_WORD_SWAP( "rom4-a.4", 0x000000, 0x20000, CRC(8e811d36) SHA1(2b806b50a3a307a21894687f16485ace287a7c4c) )
|
||||||
|
|
||||||
ROM_REGION( 0x30000, "audiocpu", 0 ) /* 64k for the audio CPU + banks */
|
ROM_REGION( 0x20000, "audiocpu", 0 ) /* 64k for the audio CPU + banks */
|
||||||
ROM_LOAD( "rom5-a.8", 0x00000, 0x08000, CRC(9ea36e35) SHA1(9254dea8362318d8cfbd5e36e476e0e235e6326a) )
|
ROM_LOAD( "rom5-a.8", 0x00000, 0x20000, CRC(9ea36e35) SHA1(9254dea8362318d8cfbd5e36e476e0e235e6326a) )
|
||||||
ROM_CONTINUE( 0x10000, 0x18000 )
|
|
||||||
|
|
||||||
ROM_REGION( 0x200000, "gfx1", 0 )
|
ROM_REGION( 0x200000, "gfx1", 0 )
|
||||||
ROM_LOAD( "rom3-b.07", 0x000000, 0x100000, CRC(ffb1d489) SHA1(9330b67e0eaaf67d6c38f40a02c72419bd38fb81) )
|
ROM_LOAD( "rom3-b.07", 0x000000, 0x100000, CRC(ffb1d489) SHA1(9330b67e0eaaf67d6c38f40a02c72419bd38fb81) )
|
||||||
@ -691,9 +656,8 @@ ROM_START( f1gp2 )
|
|||||||
ROM_REGION( 0x20000, "sub", 0 ) /* 68000 code */
|
ROM_REGION( 0x20000, "sub", 0 ) /* 68000 code */
|
||||||
ROM_LOAD16_WORD_SWAP( "rom13.v3", 0x000000, 0x20000, CRC(c37aa303) SHA1(0fe09b398191888620fb676ed0f1593be575512d) )
|
ROM_LOAD16_WORD_SWAP( "rom13.v3", 0x000000, 0x20000, CRC(c37aa303) SHA1(0fe09b398191888620fb676ed0f1593be575512d) )
|
||||||
|
|
||||||
ROM_REGION( 0x30000, "audiocpu", 0 ) /* 64k for the audio CPU + banks */
|
ROM_REGION( 0x20000, "audiocpu", 0 ) /* 64k for the audio CPU + banks */
|
||||||
ROM_LOAD( "rom5.v4", 0x00000, 0x08000, CRC(6a9398a1) SHA1(e907fe5f9c135c5b10ec650ec0c6d08cb856230c) )
|
ROM_LOAD( "rom5.v4", 0x00000, 0x20000, CRC(6a9398a1) SHA1(e907fe5f9c135c5b10ec650ec0c6d08cb856230c) )
|
||||||
ROM_CONTINUE( 0x10000, 0x18000 )
|
|
||||||
|
|
||||||
ROM_REGION( 0x200000, "gfx1", 0 )
|
ROM_REGION( 0x200000, "gfx1", 0 )
|
||||||
ROM_LOAD( "rom1", 0x000000, 0x200000, CRC(f2d55ad7) SHA1(2f2d9dc4fab63b06ed7cba0ef1ced286dbfaa7b4) )
|
ROM_LOAD( "rom1", 0x000000, 0x200000, CRC(f2d55ad7) SHA1(2f2d9dc4fab63b06ed7cba0ef1ced286dbfaa7b4) )
|
||||||
@ -702,10 +666,10 @@ ROM_START( f1gp2 )
|
|||||||
ROM_LOAD( "rom15", 0x000000, 0x200000, CRC(1ac03e2e) SHA1(9073d0ae24364229a993046bd71e403988692993) )
|
ROM_LOAD( "rom15", 0x000000, 0x200000, CRC(1ac03e2e) SHA1(9073d0ae24364229a993046bd71e403988692993) )
|
||||||
|
|
||||||
ROM_REGION( 0x400000, "gfx3", 0 )
|
ROM_REGION( 0x400000, "gfx3", 0 )
|
||||||
ROM_LOAD( "rom11", 0x000000, 0x100000, CRC(b22a2c1f) SHA1(b5e67726be5a8561cd04c3c07895b8518b73b89c) )
|
ROM_LOAD16_WORD_SWAP( "rom11", 0x000000, 0x100000, CRC(b22a2c1f) SHA1(b5e67726be5a8561cd04c3c07895b8518b73b89c) )
|
||||||
ROM_LOAD( "rom10", 0x100000, 0x100000, CRC(43fcbe23) SHA1(54ab58d904890a0b907e674f855092e974c45edc) )
|
ROM_LOAD16_WORD_SWAP( "rom10", 0x100000, 0x100000, CRC(43fcbe23) SHA1(54ab58d904890a0b907e674f855092e974c45edc) )
|
||||||
ROM_LOAD( "rom9", 0x200000, 0x100000, CRC(1bede8a1) SHA1(325ecc3afb30d281c2c8a56719e83e4dc20545bb) )
|
ROM_LOAD16_WORD_SWAP( "rom9", 0x200000, 0x100000, CRC(1bede8a1) SHA1(325ecc3afb30d281c2c8a56719e83e4dc20545bb) )
|
||||||
ROM_LOAD( "rom8", 0x300000, 0x100000, CRC(98baf2a1) SHA1(df7bd1a743ad0a6e067641e2b7a352c466875ef6) )
|
ROM_LOAD16_WORD_SWAP( "rom8", 0x300000, 0x100000, CRC(98baf2a1) SHA1(df7bd1a743ad0a6e067641e2b7a352c466875ef6) )
|
||||||
|
|
||||||
ROM_REGION( 0x080000, "ymsnd.deltat", 0 ) /* sound samples */
|
ROM_REGION( 0x080000, "ymsnd.deltat", 0 ) /* sound samples */
|
||||||
ROM_LOAD( "rom4", 0x000000, 0x080000, CRC(c2d3d7ad) SHA1(3178096741583cfef1ca8f53e6efa0a59e1d5cb6) )
|
ROM_LOAD( "rom4", 0x000000, 0x080000, CRC(c2d3d7ad) SHA1(3178096741583cfef1ca8f53e6efa0a59e1d5cb6) )
|
||||||
@ -715,7 +679,7 @@ ROM_START( f1gp2 )
|
|||||||
ROM_END
|
ROM_END
|
||||||
|
|
||||||
|
|
||||||
GAME( 1991, f1gp, 0, f1gp, f1gp, f1gp_state, empty_init, ROT90, "Video System Co.", "F-1 Grand Prix", MACHINE_NO_COCKTAIL | MACHINE_NODEVICE_LAN | MACHINE_SUPPORTS_SAVE )
|
GAME( 1991, f1gp, 0, f1gp, f1gp, f1gp_state, empty_init, ROT90, "Video System Co.", "F-1 Grand Prix", MACHINE_NO_COCKTAIL | MACHINE_NODEVICE_LAN | MACHINE_SUPPORTS_SAVE )
|
||||||
GAME( 1991, f1gpb, f1gp, f1gpb, f1gp, f1gp_state, empty_init, ROT90, "bootleg (Playmark)", "F-1 Grand Prix (Playmark bootleg)", MACHINE_NOT_WORKING | MACHINE_NODEVICE_LAN | MACHINE_SUPPORTS_SAVE ) // PCB marked 'Super Formula II', manufactured by Playmark.
|
GAME( 1991, f1gpb, f1gp, f1gpb, f1gp, f1gp_state, empty_init, ROT90, "bootleg (Playmark)", "F-1 Grand Prix (Playmark bootleg)", MACHINE_NOT_WORKING | MACHINE_NODEVICE_LAN | MACHINE_SUPPORTS_SAVE ) // PCB marked 'Super Formula II', manufactured by Playmark.
|
||||||
|
|
||||||
GAME( 1992, f1gp2, 0, f1gp2, f1gp2, f1gp_state, empty_init, ROT90, "Video System Co.", "F-1 Grand Prix Part II", MACHINE_NO_COCKTAIL | MACHINE_NODEVICE_LAN | MACHINE_SUPPORTS_SAVE )
|
GAME( 1992, f1gp2, 0, f1gp2, f1gp2, f1gp2_state, empty_init, ROT90, "Video System Co.", "F-1 Grand Prix Part II", MACHINE_NO_COCKTAIL | MACHINE_NODEVICE_LAN | MACHINE_SUPPORTS_SAVE )
|
||||||
|
@ -18,69 +18,51 @@ public:
|
|||||||
f1gp_state(const machine_config &mconfig, device_type type, const char *tag) :
|
f1gp_state(const machine_config &mconfig, device_type type, const char *tag) :
|
||||||
driver_device(mconfig, type, tag),
|
driver_device(mconfig, type, tag),
|
||||||
m_sharedram(*this, "sharedram"),
|
m_sharedram(*this, "sharedram"),
|
||||||
m_spr1vram(*this, "spr1vram"),
|
m_sprvram(*this, "spr%uvram", 1U),
|
||||||
m_spr2vram(*this, "spr2vram"),
|
m_sprcgram(*this, "spr%ucgram", 1U),
|
||||||
m_spr1cgram(*this, "spr1cgram"),
|
|
||||||
m_spr2cgram(*this, "spr2cgram"),
|
|
||||||
m_fgvideoram(*this, "fgvideoram"),
|
m_fgvideoram(*this, "fgvideoram"),
|
||||||
m_rozvideoram(*this, "rozvideoram"),
|
m_rozvideoram(*this, "rozvideoram"),
|
||||||
m_sprcgram(*this, "sprcgram"),
|
|
||||||
m_spritelist(*this, "spritelist"),
|
|
||||||
m_spriteram(*this, "spriteram"),
|
m_spriteram(*this, "spriteram"),
|
||||||
m_fgregs(*this, "fgregs"),
|
m_fgregs(*this, "fgregs"),
|
||||||
m_rozregs(*this, "rozregs"),
|
m_rozregs(*this, "rozregs"),
|
||||||
m_z80bank(*this, "bank1"),
|
m_z80bank(*this, "z80bank"),
|
||||||
m_maincpu(*this, "maincpu"),
|
m_maincpu(*this, "maincpu"),
|
||||||
m_spr_old(*this, "vsystem_spr_old"),
|
|
||||||
m_spr_old2(*this, "vsystem_spr_ol2"),
|
|
||||||
m_spr(*this, "vsystem_spr"),
|
|
||||||
m_gfxdecode(*this, "gfxdecode"),
|
m_gfxdecode(*this, "gfxdecode"),
|
||||||
m_audiocpu(*this, "audiocpu"),
|
m_audiocpu(*this, "audiocpu"),
|
||||||
m_k053936(*this, "k053936"),
|
m_k053936(*this, "k053936"),
|
||||||
m_palette(*this, "palette"),
|
m_palette(*this, "palette"),
|
||||||
m_soundlatch(*this, "soundlatch"),
|
m_soundlatch(*this, "soundlatch"),
|
||||||
m_acia(*this, "acia")
|
m_acia(*this, "acia"),
|
||||||
|
m_rozgfxram(*this, "rozgfxram"),
|
||||||
|
m_spr_old(*this, "vsystem_spr_old%u", 1U)
|
||||||
{ }
|
{ }
|
||||||
|
|
||||||
void f1gp2(machine_config &config);
|
|
||||||
void f1gpb(machine_config &config);
|
void f1gpb(machine_config &config);
|
||||||
void f1gp(machine_config &config);
|
void f1gp(machine_config &config);
|
||||||
|
|
||||||
private:
|
protected:
|
||||||
/* memory pointers */
|
/* memory pointers */
|
||||||
required_shared_ptr<uint16_t> m_sharedram;
|
required_shared_ptr<uint16_t> m_sharedram;
|
||||||
optional_shared_ptr<uint16_t> m_spr1vram;
|
optional_shared_ptr_array<uint16_t, 2> m_sprvram;
|
||||||
optional_shared_ptr<uint16_t> m_spr2vram;
|
optional_shared_ptr_array<uint16_t, 2> m_sprcgram;
|
||||||
optional_shared_ptr<uint16_t> m_spr1cgram;
|
|
||||||
optional_shared_ptr<uint16_t> m_spr2cgram;
|
|
||||||
required_shared_ptr<uint16_t> m_fgvideoram;
|
required_shared_ptr<uint16_t> m_fgvideoram;
|
||||||
required_shared_ptr<uint16_t> m_rozvideoram;
|
required_shared_ptr<uint16_t> m_rozvideoram;
|
||||||
optional_shared_ptr<uint16_t> m_sprcgram;
|
|
||||||
optional_shared_ptr<uint16_t> m_spritelist;
|
|
||||||
optional_shared_ptr<uint16_t> m_spriteram;
|
optional_shared_ptr<uint16_t> m_spriteram;
|
||||||
optional_shared_ptr<uint16_t> m_fgregs;
|
optional_shared_ptr<uint16_t> m_fgregs;
|
||||||
optional_shared_ptr<uint16_t> m_rozregs;
|
optional_shared_ptr<uint16_t> m_rozregs;
|
||||||
|
|
||||||
optional_memory_bank m_z80bank;
|
optional_memory_bank m_z80bank;
|
||||||
|
|
||||||
uint16_t * m_zoomdata;
|
|
||||||
|
|
||||||
/* video-related */
|
/* video-related */
|
||||||
tilemap_t *m_fg_tilemap;
|
tilemap_t *m_fg_tilemap;
|
||||||
tilemap_t *m_roz_tilemap;
|
tilemap_t *m_roz_tilemap;
|
||||||
int m_roz_bank;
|
|
||||||
int m_flipscreen;
|
int m_flipscreen;
|
||||||
int m_gfxctrl;
|
int m_gfxctrl;
|
||||||
int m_scroll[2];
|
int m_scroll[2];
|
||||||
uint32_t f1gp2_tile_callback( uint32_t code );
|
template<int Chip> uint32_t tile_callback( uint32_t code );
|
||||||
uint32_t f1gp_old_tile_callback( uint32_t code );
|
|
||||||
uint32_t f1gp_ol2_tile_callback( uint32_t code );
|
|
||||||
|
|
||||||
/* devices */
|
/* devices */
|
||||||
required_device<cpu_device> m_maincpu;
|
required_device<cpu_device> m_maincpu;
|
||||||
optional_device<vsystem_spr2_device> m_spr_old; // f1gp
|
|
||||||
optional_device<vsystem_spr2_device> m_spr_old2; // f1gp
|
|
||||||
optional_device<vsystem_spr_device> m_spr; // f1gp2
|
|
||||||
required_device<gfxdecode_device> m_gfxdecode;
|
required_device<gfxdecode_device> m_gfxdecode;
|
||||||
optional_device<cpu_device> m_audiocpu;
|
optional_device<cpu_device> m_audiocpu;
|
||||||
optional_device<k053936_device> m_k053936;
|
optional_device<k053936_device> m_k053936;
|
||||||
@ -88,37 +70,68 @@ private:
|
|||||||
optional_device<generic_latch_8_device> m_soundlatch; // not f1gpb
|
optional_device<generic_latch_8_device> m_soundlatch; // not f1gpb
|
||||||
required_device<acia6850_device> m_acia;
|
required_device<acia6850_device> m_acia;
|
||||||
|
|
||||||
DECLARE_WRITE8_MEMBER(f1gp_sh_bankswitch_w);
|
DECLARE_WRITE8_MEMBER(sh_bankswitch_w);
|
||||||
DECLARE_READ8_MEMBER(command_pending_r);
|
DECLARE_READ8_MEMBER(command_pending_r);
|
||||||
DECLARE_WRITE16_MEMBER(f1gpb_misc_w);
|
DECLARE_WRITE16_MEMBER(rozvideoram_w);
|
||||||
DECLARE_READ16_MEMBER(f1gp_zoomdata_r);
|
DECLARE_WRITE16_MEMBER(fgvideoram_w);
|
||||||
DECLARE_WRITE16_MEMBER(f1gp_zoomdata_w);
|
DECLARE_WRITE16_MEMBER(fgscroll_w);
|
||||||
DECLARE_READ16_MEMBER(f1gp_rozvideoram_r);
|
DECLARE_WRITE8_MEMBER(gfxctrl_w);
|
||||||
DECLARE_WRITE16_MEMBER(f1gp_rozvideoram_w);
|
|
||||||
DECLARE_WRITE16_MEMBER(f1gp_fgvideoram_w);
|
|
||||||
DECLARE_WRITE16_MEMBER(f1gp_fgscroll_w);
|
|
||||||
DECLARE_WRITE16_MEMBER(f1gp_gfxctrl_w);
|
|
||||||
DECLARE_WRITE16_MEMBER(f1gp2_gfxctrl_w);
|
|
||||||
TILE_GET_INFO_MEMBER(f1gp_get_roz_tile_info);
|
|
||||||
TILE_GET_INFO_MEMBER(f1gp2_get_roz_tile_info);
|
|
||||||
TILE_GET_INFO_MEMBER(get_fg_tile_info);
|
TILE_GET_INFO_MEMBER(get_fg_tile_info);
|
||||||
DECLARE_MACHINE_START(f1gp);
|
|
||||||
DECLARE_MACHINE_RESET(f1gp);
|
virtual void machine_start() override;
|
||||||
DECLARE_VIDEO_START(f1gp);
|
virtual void machine_reset() override;
|
||||||
DECLARE_MACHINE_START(f1gpb);
|
|
||||||
DECLARE_VIDEO_START(f1gpb);
|
|
||||||
DECLARE_VIDEO_START(f1gp2);
|
|
||||||
uint32_t screen_update_f1gp(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
|
||||||
uint32_t screen_update_f1gpb(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
|
||||||
uint32_t screen_update_f1gp2(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
|
||||||
void f1gpb_draw_sprites( screen_device &screen, bitmap_ind16 &bitmap,const rectangle &cliprect );
|
|
||||||
void f1gp2_cpu1_map(address_map &map);
|
|
||||||
void f1gp_cpu1_map(address_map &map);
|
|
||||||
void f1gp_cpu2_map(address_map &map);
|
void f1gp_cpu2_map(address_map &map);
|
||||||
void f1gpb_cpu1_map(address_map &map);
|
|
||||||
void f1gpb_cpu2_map(address_map &map);
|
|
||||||
void sound_io_map(address_map &map);
|
void sound_io_map(address_map &map);
|
||||||
void sound_map(address_map &map);
|
void sound_map(address_map &map);
|
||||||
|
|
||||||
|
private:
|
||||||
|
/* memory pointers */
|
||||||
|
optional_shared_ptr<uint16_t> m_rozgfxram;
|
||||||
|
|
||||||
|
/* devices */
|
||||||
|
optional_device_array<vsystem_spr2_device, 2> m_spr_old; // f1gp
|
||||||
|
|
||||||
|
DECLARE_WRITE16_MEMBER(f1gpb_misc_w);
|
||||||
|
DECLARE_WRITE16_MEMBER(rozgfxram_w);
|
||||||
|
TILE_GET_INFO_MEMBER(get_roz_tile_info);
|
||||||
|
|
||||||
|
virtual void video_start() override;
|
||||||
|
|
||||||
|
uint32_t screen_update_f1gp(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||||
|
uint32_t screen_update_f1gpb(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||||
|
void f1gpb_draw_sprites( screen_device &screen, bitmap_ind16 &bitmap,const rectangle &cliprect );
|
||||||
|
void f1gp_cpu1_map(address_map &map);
|
||||||
|
void f1gpb_cpu1_map(address_map &map);
|
||||||
|
void f1gpb_cpu2_map(address_map &map);
|
||||||
|
};
|
||||||
|
|
||||||
|
class f1gp2_state : public f1gp_state
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
f1gp2_state(const machine_config &mconfig, device_type type, const char *tag) :
|
||||||
|
f1gp_state(mconfig, type, tag),
|
||||||
|
m_spr(*this, "vsystem_spr")
|
||||||
|
{ }
|
||||||
|
|
||||||
|
void f1gp2(machine_config &config);
|
||||||
|
|
||||||
|
private:
|
||||||
|
/* video-related */
|
||||||
|
int m_roz_bank;
|
||||||
|
|
||||||
|
/* devices */
|
||||||
|
optional_device<vsystem_spr_device> m_spr; // f1gp2
|
||||||
|
|
||||||
|
DECLARE_WRITE8_MEMBER(rozbank_w);
|
||||||
|
|
||||||
|
TILE_GET_INFO_MEMBER(get_roz_tile_info);
|
||||||
|
|
||||||
|
virtual void machine_reset() override;
|
||||||
|
virtual void video_start() override;
|
||||||
|
|
||||||
|
uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||||
|
void f1gp2_cpu1_map(address_map &map);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // MAME_INCLUDES_F1GP_H
|
#endif // MAME_INCLUDES_F1GP_H
|
||||||
|
@ -6,36 +6,33 @@
|
|||||||
#include "screen.h"
|
#include "screen.h"
|
||||||
|
|
||||||
|
|
||||||
#define TOTAL_CHARS 0x800
|
|
||||||
|
|
||||||
|
|
||||||
/***************************************************************************
|
/***************************************************************************
|
||||||
|
|
||||||
Callbacks for the TileMap code
|
Callbacks for the TileMap code
|
||||||
|
|
||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
|
|
||||||
TILE_GET_INFO_MEMBER(f1gp_state::f1gp_get_roz_tile_info)
|
TILE_GET_INFO_MEMBER(f1gp_state::get_fg_tile_info)
|
||||||
|
{
|
||||||
|
int code = m_fgvideoram[tile_index];
|
||||||
|
|
||||||
|
SET_TILE_INFO_MEMBER(0, code & 0x7fff, 0, (code & 0x8000) ? TILE_FLIPY : 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
TILE_GET_INFO_MEMBER(f1gp_state::get_roz_tile_info)
|
||||||
{
|
{
|
||||||
int code = m_rozvideoram[tile_index];
|
int code = m_rozvideoram[tile_index];
|
||||||
|
|
||||||
SET_TILE_INFO_MEMBER(3, code & 0x7ff, code >> 12, 0);
|
SET_TILE_INFO_MEMBER(3, code & 0x7ff, code >> 12, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
TILE_GET_INFO_MEMBER(f1gp_state::f1gp2_get_roz_tile_info)
|
TILE_GET_INFO_MEMBER(f1gp2_state::get_roz_tile_info)
|
||||||
{
|
{
|
||||||
int code = m_rozvideoram[tile_index];
|
int code = m_rozvideoram[tile_index];
|
||||||
|
|
||||||
SET_TILE_INFO_MEMBER(2, (code & 0x7ff) + (m_roz_bank << 11), code >> 12, 0);
|
SET_TILE_INFO_MEMBER(2, (code & 0x7ff) + (m_roz_bank << 11), code >> 12, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
TILE_GET_INFO_MEMBER(f1gp_state::get_fg_tile_info)
|
|
||||||
{
|
|
||||||
int code = m_fgvideoram[tile_index];
|
|
||||||
|
|
||||||
SET_TILE_INFO_MEMBER(0, code & 0x7fff, 0, (code & 0x8000) ? TILE_FLIPY : 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/***************************************************************************
|
/***************************************************************************
|
||||||
|
|
||||||
@ -44,58 +41,23 @@ TILE_GET_INFO_MEMBER(f1gp_state::get_fg_tile_info)
|
|||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
|
void f1gp_state::video_start()
|
||||||
|
|
||||||
VIDEO_START_MEMBER(f1gp_state,f1gp)
|
|
||||||
{
|
{
|
||||||
m_roz_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(f1gp_state::f1gp_get_roz_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 64, 64);
|
m_roz_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(f1gp_state::get_roz_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 64, 64);
|
||||||
m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(f1gp_state::get_fg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32);
|
m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(f1gp_state::get_fg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32);
|
||||||
|
|
||||||
m_fg_tilemap->set_transparent_pen(0xff);
|
m_fg_tilemap->set_transparent_pen(0xff);
|
||||||
|
|
||||||
m_zoomdata = (uint16_t *)memregion("gfx4")->base();
|
save_item(NAME(m_flipscreen));
|
||||||
m_gfxdecode->gfx(3)->set_source((uint8_t *)m_zoomdata);
|
save_item(NAME(m_gfxctrl));
|
||||||
|
save_item(NAME(m_scroll));
|
||||||
save_pointer(NAME(m_zoomdata), memregion("gfx4")->bytes()/2);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
VIDEO_START_MEMBER(f1gp_state,f1gpb)
|
void f1gp2_state::video_start()
|
||||||
{
|
{
|
||||||
m_roz_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(f1gp_state::f1gp_get_roz_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 64, 64);
|
m_roz_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(f1gp2_state::get_roz_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 64, 64);
|
||||||
m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(f1gp_state::get_fg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32);
|
m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(f1gp2_state::get_fg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32);
|
||||||
|
|
||||||
m_fg_tilemap->set_transparent_pen(0xff);
|
|
||||||
|
|
||||||
m_zoomdata = (uint16_t *)memregion("gfx4")->base();
|
|
||||||
m_gfxdecode->gfx(3)->set_source((uint8_t *)m_zoomdata);
|
|
||||||
|
|
||||||
save_pointer(NAME(m_zoomdata), memregion("gfx4")->bytes()/2);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* new hw type */
|
|
||||||
uint32_t f1gp_state::f1gp2_tile_callback( uint32_t code )
|
|
||||||
{
|
|
||||||
return m_sprcgram[code&0x3fff];
|
|
||||||
}
|
|
||||||
|
|
||||||
/* old hw type */
|
|
||||||
uint32_t f1gp_state::f1gp_old_tile_callback( uint32_t code )
|
|
||||||
{
|
|
||||||
return m_spr1cgram[code % (m_spr1cgram.bytes()/2)];
|
|
||||||
}
|
|
||||||
|
|
||||||
uint32_t f1gp_state::f1gp_ol2_tile_callback( uint32_t code )
|
|
||||||
{
|
|
||||||
return m_spr2cgram[code % (m_spr2cgram.bytes()/2)];
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
VIDEO_START_MEMBER(f1gp_state,f1gp2)
|
|
||||||
{
|
|
||||||
m_roz_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(f1gp_state::f1gp2_get_roz_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 64, 64);
|
|
||||||
m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(f1gp_state::get_fg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32);
|
|
||||||
|
|
||||||
m_fg_tilemap->set_transparent_pen(0xff);
|
m_fg_tilemap->set_transparent_pen(0xff);
|
||||||
m_roz_tilemap->set_transparent_pen(0x0f);
|
m_roz_tilemap->set_transparent_pen(0x0f);
|
||||||
@ -103,6 +65,10 @@ VIDEO_START_MEMBER(f1gp_state,f1gp2)
|
|||||||
m_fg_tilemap->set_scrolldx(-80, 0);
|
m_fg_tilemap->set_scrolldx(-80, 0);
|
||||||
m_fg_tilemap->set_scrolldy(-26, 0);
|
m_fg_tilemap->set_scrolldy(-26, 0);
|
||||||
|
|
||||||
|
save_item(NAME(m_roz_bank));
|
||||||
|
save_item(NAME(m_flipscreen));
|
||||||
|
save_item(NAME(m_gfxctrl));
|
||||||
|
save_item(NAME(m_scroll));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -112,35 +78,25 @@ VIDEO_START_MEMBER(f1gp_state,f1gp2)
|
|||||||
|
|
||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
|
|
||||||
READ16_MEMBER(f1gp_state::f1gp_zoomdata_r)
|
WRITE16_MEMBER(f1gp_state::rozgfxram_w)
|
||||||
{
|
{
|
||||||
return m_zoomdata[offset];
|
COMBINE_DATA(&m_rozgfxram[offset]);
|
||||||
}
|
|
||||||
|
|
||||||
WRITE16_MEMBER(f1gp_state::f1gp_zoomdata_w)
|
|
||||||
{
|
|
||||||
COMBINE_DATA(&m_zoomdata[offset]);
|
|
||||||
m_gfxdecode->gfx(3)->mark_dirty(offset / 64);
|
m_gfxdecode->gfx(3)->mark_dirty(offset / 64);
|
||||||
}
|
}
|
||||||
|
|
||||||
READ16_MEMBER(f1gp_state::f1gp_rozvideoram_r)
|
WRITE16_MEMBER(f1gp_state::rozvideoram_w)
|
||||||
{
|
|
||||||
return m_rozvideoram[offset];
|
|
||||||
}
|
|
||||||
|
|
||||||
WRITE16_MEMBER(f1gp_state::f1gp_rozvideoram_w)
|
|
||||||
{
|
{
|
||||||
COMBINE_DATA(&m_rozvideoram[offset]);
|
COMBINE_DATA(&m_rozvideoram[offset]);
|
||||||
m_roz_tilemap->mark_tile_dirty(offset);
|
m_roz_tilemap->mark_tile_dirty(offset);
|
||||||
}
|
}
|
||||||
|
|
||||||
WRITE16_MEMBER(f1gp_state::f1gp_fgvideoram_w)
|
WRITE16_MEMBER(f1gp_state::fgvideoram_w)
|
||||||
{
|
{
|
||||||
COMBINE_DATA(&m_fgvideoram[offset]);
|
COMBINE_DATA(&m_fgvideoram[offset]);
|
||||||
m_fg_tilemap->mark_tile_dirty(offset);
|
m_fg_tilemap->mark_tile_dirty(offset);
|
||||||
}
|
}
|
||||||
|
|
||||||
WRITE16_MEMBER(f1gp_state::f1gp_fgscroll_w)
|
WRITE16_MEMBER(f1gp_state::fgscroll_w)
|
||||||
{
|
{
|
||||||
COMBINE_DATA(&m_scroll[offset]);
|
COMBINE_DATA(&m_scroll[offset]);
|
||||||
|
|
||||||
@ -148,34 +104,18 @@ WRITE16_MEMBER(f1gp_state::f1gp_fgscroll_w)
|
|||||||
m_fg_tilemap->set_scrolly(0, m_scroll[1]);
|
m_fg_tilemap->set_scrolly(0, m_scroll[1]);
|
||||||
}
|
}
|
||||||
|
|
||||||
WRITE16_MEMBER(f1gp_state::f1gp_gfxctrl_w)
|
WRITE8_MEMBER(f1gp_state::gfxctrl_w)
|
||||||
{
|
{
|
||||||
if (ACCESSING_BITS_0_7)
|
m_flipscreen = data & 0x20;
|
||||||
{
|
m_gfxctrl = data & 0xdf;
|
||||||
m_flipscreen = data & 0x20;
|
|
||||||
m_gfxctrl = data & 0xdf;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
WRITE16_MEMBER(f1gp_state::f1gp2_gfxctrl_w)
|
WRITE8_MEMBER(f1gp2_state::rozbank_w)
|
||||||
{
|
{
|
||||||
if (ACCESSING_BITS_0_7)
|
if (m_roz_bank != data)
|
||||||
{
|
{
|
||||||
m_flipscreen = data & 0x20;
|
m_roz_bank = data;
|
||||||
|
m_roz_tilemap->mark_all_dirty();
|
||||||
/* bit 0/1 = fg/sprite/roz priority */
|
|
||||||
/* bit 2 = blank screen */
|
|
||||||
|
|
||||||
m_gfxctrl = data & 0xdf;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ACCESSING_BITS_8_15)
|
|
||||||
{
|
|
||||||
if (m_roz_bank != (data >> 8))
|
|
||||||
{
|
|
||||||
m_roz_bank = (data >> 8);
|
|
||||||
m_roz_tilemap->mark_all_dirty();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -198,19 +138,19 @@ uint32_t f1gp_state::screen_update_f1gp(screen_device &screen, bitmap_ind16 &bit
|
|||||||
/* quick kludge for "continue" screen priority */
|
/* quick kludge for "continue" screen priority */
|
||||||
if (m_gfxctrl == 0x00)
|
if (m_gfxctrl == 0x00)
|
||||||
{
|
{
|
||||||
m_spr_old->turbofrc_draw_sprites(m_spr1vram, m_spr1vram.bytes(), 0, bitmap, cliprect, screen.priority(), 0x02);
|
m_spr_old[0]->turbofrc_draw_sprites(m_sprvram[0], m_sprvram[0].bytes(), 0, bitmap, cliprect, screen.priority(), 0x02);
|
||||||
m_spr_old2->turbofrc_draw_sprites(m_spr2vram, m_spr2vram.bytes(), 0, bitmap, cliprect, screen.priority(), 0x02);
|
m_spr_old[1]->turbofrc_draw_sprites(m_sprvram[1], m_sprvram[1].bytes(), 0, bitmap, cliprect, screen.priority(), 0x02);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
m_spr_old->turbofrc_draw_sprites(m_spr1vram, m_spr1vram.bytes(), 0, bitmap, cliprect, screen.priority(), 0x00);
|
m_spr_old[0]->turbofrc_draw_sprites(m_sprvram[0], m_sprvram[0].bytes(), 0, bitmap, cliprect, screen.priority(), 0x00);
|
||||||
m_spr_old2->turbofrc_draw_sprites(m_spr2vram, m_spr2vram.bytes(), 0, bitmap, cliprect, screen.priority(), 0x02);
|
m_spr_old[1]->turbofrc_draw_sprites(m_sprvram[1], m_sprvram[1].bytes(), 0, bitmap, cliprect, screen.priority(), 0x02);
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
uint32_t f1gp_state::screen_update_f1gp2(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
uint32_t f1gp2_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||||
{
|
{
|
||||||
if (m_gfxctrl & 4) /* blank screen */
|
if (m_gfxctrl & 4) /* blank screen */
|
||||||
bitmap.fill(m_palette->black_pen(), cliprect);
|
bitmap.fill(m_palette->black_pen(), cliprect);
|
||||||
@ -220,18 +160,18 @@ uint32_t f1gp_state::screen_update_f1gp2(screen_device &screen, bitmap_ind16 &bi
|
|||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
m_k053936->zoom_draw(screen, bitmap, cliprect, m_roz_tilemap, TILEMAP_DRAW_OPAQUE, 0, 1);
|
m_k053936->zoom_draw(screen, bitmap, cliprect, m_roz_tilemap, TILEMAP_DRAW_OPAQUE, 0, 1);
|
||||||
m_spr->draw_sprites(m_spritelist, 0x2000, screen, bitmap, cliprect);
|
m_spr->draw_sprites(m_sprvram[0], 0x2000, screen, bitmap, cliprect);
|
||||||
m_fg_tilemap->draw(screen, bitmap, cliprect, 0, 0);
|
m_fg_tilemap->draw(screen, bitmap, cliprect, 0, 0);
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
m_k053936->zoom_draw(screen, bitmap, cliprect, m_roz_tilemap, TILEMAP_DRAW_OPAQUE, 0, 1);
|
m_k053936->zoom_draw(screen, bitmap, cliprect, m_roz_tilemap, TILEMAP_DRAW_OPAQUE, 0, 1);
|
||||||
m_fg_tilemap->draw(screen, bitmap, cliprect, 0, 0);
|
m_fg_tilemap->draw(screen, bitmap, cliprect, 0, 0);
|
||||||
m_spr->draw_sprites(m_spritelist, 0x2000, screen, bitmap, cliprect);
|
m_spr->draw_sprites(m_sprvram[0], 0x2000, screen, bitmap, cliprect);
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
m_fg_tilemap->draw(screen, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0);
|
m_fg_tilemap->draw(screen, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0);
|
||||||
m_k053936->zoom_draw(screen, bitmap, cliprect, m_roz_tilemap, 0, 0, 1);
|
m_k053936->zoom_draw(screen, bitmap, cliprect, m_roz_tilemap, 0, 0, 1);
|
||||||
m_spr->draw_sprites(m_spritelist, 0x2000, screen, bitmap, cliprect);
|
m_spr->draw_sprites(m_sprvram[0], 0x2000, screen, bitmap, cliprect);
|
||||||
break;
|
break;
|
||||||
#ifdef MAME_DEBUG
|
#ifdef MAME_DEBUG
|
||||||
case 3:
|
case 3:
|
||||||
|
Loading…
Reference in New Issue
Block a user