mirror of
https://github.com/holub/mame
synced 2025-06-05 20:33:45 +03:00
argus.cpp : Fix argus sound writes(second ym2203 has not implemented), Cleanup duplicates, Runtime tag lookups
This commit is contained in:
parent
185c61161d
commit
70a47a3998
@ -272,13 +272,12 @@ void argus_state::sound_map_b(address_map &map)
|
|||||||
map(0xe000, 0xe000).r("soundlatch", FUNC(generic_latch_8_device::read));
|
map(0xe000, 0xe000).r("soundlatch", FUNC(generic_latch_8_device::read));
|
||||||
}
|
}
|
||||||
|
|
||||||
#if 0
|
|
||||||
void argus_state::sound_portmap_1(address_map &map)
|
void argus_state::sound_portmap_1(address_map &map)
|
||||||
{
|
{
|
||||||
map.global_mask(0xff);
|
map.global_mask(0xff);
|
||||||
map(0x00, 0x01).rw("ym1", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
|
map(0x00, 0x01).rw("ym1", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
|
||||||
|
map(0x80, 0x81).noprw(); // second ym2203 is not implemented on argus but still writes here
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
void argus_state::sound_portmap_2(address_map &map)
|
void argus_state::sound_portmap_2(address_map &map)
|
||||||
{
|
{
|
||||||
@ -443,97 +442,43 @@ INPUT_PORTS_END
|
|||||||
static const gfx_layout charlayout =
|
static const gfx_layout charlayout =
|
||||||
{
|
{
|
||||||
8,8, /* 8x8 characters */
|
8,8, /* 8x8 characters */
|
||||||
1024, /* 1024 characters */
|
RGN_FRAC(1,1), /* number of characters */
|
||||||
4, /* 4 bits per pixel */
|
4, /* 4 bits per pixel */
|
||||||
{ 0, 1, 2, 3 },
|
{ STEP4(0,1) },
|
||||||
{ 0, 4, 8, 12, 16, 20, 24, 28 },
|
{ STEP8(0,4) },
|
||||||
{ 0*8, 4*8, 8*8, 12*8, 16*8, 20*8, 24*8, 28*8 },
|
{ STEP8(0,4*8) },
|
||||||
32*8
|
32*8
|
||||||
};
|
};
|
||||||
|
|
||||||
static const gfx_layout tilelayout_256 =
|
static const gfx_layout tilelayout =
|
||||||
{
|
{
|
||||||
16,16, /* 16x16 characters */
|
16,16, /* 16x16 characters */
|
||||||
256, /* 256 characters */
|
RGN_FRAC(1,1), /* number of characters */
|
||||||
4, /* 4 bits per pixel */
|
4, /* 4 bits per pixel */
|
||||||
{ 0, 1, 2, 3 },
|
{ STEP4(0,1) },
|
||||||
{ 0, 4, 8, 12, 16, 20, 24, 28,
|
{ STEP8(0,4), STEP8(4*8*16, 4) },
|
||||||
64*8, 64*8+4, 64*8+8, 64*8+12, 64*8+16, 64*8+20, 64*8+24, 64*8+28 },
|
{ STEP16(0,4*8) },
|
||||||
{ 0*8, 4*8, 8*8, 12*8, 16*8, 20*8, 24*8, 28*8,
|
|
||||||
32*8, 36*8, 40*8, 44*8, 48*8, 52*8, 56*8, 60*8 },
|
|
||||||
128*8
|
|
||||||
};
|
|
||||||
|
|
||||||
static const gfx_layout tilelayout_512 =
|
|
||||||
{
|
|
||||||
16,16, /* 16x16 characters */
|
|
||||||
512, /* 512 characters */
|
|
||||||
4, /* 4 bits per pixel */
|
|
||||||
{ 0, 1, 2, 3 },
|
|
||||||
{ 0, 4, 8, 12, 16, 20, 24, 28,
|
|
||||||
64*8, 64*8+4, 64*8+8, 64*8+12, 64*8+16, 64*8+20, 64*8+24, 64*8+28 },
|
|
||||||
{ 0*8, 4*8, 8*8, 12*8, 16*8, 20*8, 24*8, 28*8,
|
|
||||||
32*8, 36*8, 40*8, 44*8, 48*8, 52*8, 56*8, 60*8 },
|
|
||||||
128*8
|
|
||||||
};
|
|
||||||
|
|
||||||
static const gfx_layout tilelayout_1024 =
|
|
||||||
{
|
|
||||||
16,16, /* 16x16 characters */
|
|
||||||
1024, /* 1024 characters */
|
|
||||||
4, /* 4 bits per pixel */
|
|
||||||
{ 0, 1, 2, 3 },
|
|
||||||
{ 0, 4, 8, 12, 16, 20, 24, 28,
|
|
||||||
64*8, 64*8+4, 64*8+8, 64*8+12, 64*8+16, 64*8+20, 64*8+24, 64*8+28 },
|
|
||||||
{ 0*8, 4*8, 8*8, 12*8, 16*8, 20*8, 24*8, 28*8,
|
|
||||||
32*8, 36*8, 40*8, 44*8, 48*8, 52*8, 56*8, 60*8 },
|
|
||||||
128*8
|
|
||||||
};
|
|
||||||
|
|
||||||
static const gfx_layout tilelayout_2048 =
|
|
||||||
{
|
|
||||||
16,16, /* 16x16 characters */
|
|
||||||
2048, /* 2048 characters */
|
|
||||||
4, /* 4 bits per pixel */
|
|
||||||
{ 0, 1, 2, 3 },
|
|
||||||
{ 0, 4, 8, 12, 16, 20, 24, 28,
|
|
||||||
64*8, 64*8+4, 64*8+8, 64*8+12, 64*8+16, 64*8+20, 64*8+24, 64*8+28 },
|
|
||||||
{ 0*8, 4*8, 8*8, 12*8, 16*8, 20*8, 24*8, 28*8,
|
|
||||||
32*8, 36*8, 40*8, 44*8, 48*8, 52*8, 56*8, 60*8 },
|
|
||||||
128*8
|
|
||||||
};
|
|
||||||
|
|
||||||
static const gfx_layout tilelayout_4096 =
|
|
||||||
{
|
|
||||||
16,16, /* 16x16 characters */
|
|
||||||
4096, /* 4096 characters */
|
|
||||||
4, /* 4 bits per pixel */
|
|
||||||
{ 0, 1, 2, 3 },
|
|
||||||
{ 0, 4, 8, 12, 16, 20, 24, 28,
|
|
||||||
64*8, 64*8+4, 64*8+8, 64*8+12, 64*8+16, 64*8+20, 64*8+24, 64*8+28 },
|
|
||||||
{ 0*8, 4*8, 8*8, 12*8, 16*8, 20*8, 24*8, 28*8,
|
|
||||||
32*8, 36*8, 40*8, 44*8, 48*8, 52*8, 56*8, 60*8 },
|
|
||||||
128*8
|
128*8
|
||||||
};
|
};
|
||||||
|
|
||||||
static GFXDECODE_START( argus )
|
static GFXDECODE_START( argus )
|
||||||
GFXDECODE_ENTRY( "gfx1", 0, tilelayout_1024, 0*16, 8 )
|
GFXDECODE_ENTRY( "gfx1", 0, tilelayout, 0*16, 8 )
|
||||||
GFXDECODE_ENTRY( "gfx2", 0, tilelayout_1024, 8*16, 16 )
|
GFXDECODE_ENTRY( "gfx2", 0, tilelayout, 8*16, 16 )
|
||||||
GFXDECODE_ENTRY( "gfx3", 0, tilelayout_256, 24*16, 16 )
|
GFXDECODE_ENTRY( "gfx3", 0, tilelayout, 24*16, 16 )
|
||||||
GFXDECODE_ENTRY( "gfx4", 0, charlayout, 40*16, 16 )
|
GFXDECODE_ENTRY( "gfx4", 0, charlayout, 40*16, 16 )
|
||||||
GFXDECODE_END
|
GFXDECODE_END
|
||||||
|
|
||||||
static GFXDECODE_START( valtric )
|
static GFXDECODE_START( valtric )
|
||||||
GFXDECODE_ENTRY( "gfx1", 0, tilelayout_1024, 0*16, 16 )
|
GFXDECODE_ENTRY( "gfx1", 0, tilelayout, 0*16, 16 )
|
||||||
GFXDECODE_ENTRY( "gfx2", 0, tilelayout_2048, 16*16, 16 )
|
GFXDECODE_ENTRY( "gfx2", 0, tilelayout, 16*16, 16 )
|
||||||
GFXDECODE_ENTRY( "gfx3", 0, charlayout, 32*16, 16 )
|
GFXDECODE_ENTRY( "gfx3", 0, charlayout, 32*16, 16 )
|
||||||
GFXDECODE_END
|
GFXDECODE_END
|
||||||
|
|
||||||
static GFXDECODE_START( butasan )
|
static GFXDECODE_START( butasan )
|
||||||
GFXDECODE_ENTRY( "gfx1", 0, tilelayout_4096, 0*16, 16 )
|
GFXDECODE_ENTRY( "gfx1", 0, tilelayout, 0*16, 16 )
|
||||||
GFXDECODE_ENTRY( "gfx2", 0, tilelayout_1024, 16*16, 16 )
|
GFXDECODE_ENTRY( "gfx2", 0, tilelayout, 16*16, 16 )
|
||||||
GFXDECODE_ENTRY( "gfx3", 0, tilelayout_512, 12*16, 16 )
|
GFXDECODE_ENTRY( "gfx3", 0, tilelayout, 12*16, 16 )
|
||||||
GFXDECODE_ENTRY( "gfx4", 0, charlayout, 32*16, 16 )
|
GFXDECODE_ENTRY( "gfx4", 0, charlayout, 32*16, 16 )
|
||||||
GFXDECODE_END
|
GFXDECODE_END
|
||||||
|
|
||||||
|
|
||||||
@ -546,7 +491,7 @@ MACHINE_CONFIG_START(argus_state::argus)
|
|||||||
|
|
||||||
MCFG_DEVICE_ADD("audiocpu", Z80, 5000000)
|
MCFG_DEVICE_ADD("audiocpu", Z80, 5000000)
|
||||||
MCFG_DEVICE_PROGRAM_MAP(sound_map_a)
|
MCFG_DEVICE_PROGRAM_MAP(sound_map_a)
|
||||||
MCFG_DEVICE_IO_MAP(sound_portmap_2)
|
MCFG_DEVICE_IO_MAP(sound_portmap_1)
|
||||||
|
|
||||||
MCFG_QUANTUM_TIME(attotime::from_hz(600))
|
MCFG_QUANTUM_TIME(attotime::from_hz(600))
|
||||||
|
|
||||||
@ -577,12 +522,6 @@ MACHINE_CONFIG_START(argus_state::argus)
|
|||||||
MCFG_SOUND_ROUTE(1, "mono", 0.15)
|
MCFG_SOUND_ROUTE(1, "mono", 0.15)
|
||||||
MCFG_SOUND_ROUTE(2, "mono", 0.15)
|
MCFG_SOUND_ROUTE(2, "mono", 0.15)
|
||||||
MCFG_SOUND_ROUTE(3, "mono", 0.50)
|
MCFG_SOUND_ROUTE(3, "mono", 0.50)
|
||||||
|
|
||||||
MCFG_DEVICE_ADD("ym2", YM2203, 6000000 / 4)
|
|
||||||
MCFG_SOUND_ROUTE(0, "mono", 0.15)
|
|
||||||
MCFG_SOUND_ROUTE(1, "mono", 0.15)
|
|
||||||
MCFG_SOUND_ROUTE(2, "mono", 0.15)
|
|
||||||
MCFG_SOUND_ROUTE(3, "mono", 0.50)
|
|
||||||
MACHINE_CONFIG_END
|
MACHINE_CONFIG_END
|
||||||
|
|
||||||
MACHINE_CONFIG_START(argus_state::valtric)
|
MACHINE_CONFIG_START(argus_state::valtric)
|
||||||
@ -716,10 +655,10 @@ ROM_START( argus )
|
|||||||
ROM_REGION( 0x08000, "gfx4", 0 ) /* Text */
|
ROM_REGION( 0x08000, "gfx4", 0 ) /* Text */
|
||||||
ROM_LOAD( "ag_10.bin", 0x00000, 0x04000, CRC(2de696c4) SHA1(1ad0f1cde127a1618c2ea74a53e522963a79e5ce) )
|
ROM_LOAD( "ag_10.bin", 0x00000, 0x04000, CRC(2de696c4) SHA1(1ad0f1cde127a1618c2ea74a53e522963a79e5ce) )
|
||||||
|
|
||||||
ROM_REGION( 0x08000, "user1", 0 ) /* Map */
|
ROM_REGION( 0x08000, "vrom1", 0 ) /* Map */
|
||||||
ROM_LOAD( "ag_15.bin", 0x00000, 0x08000, CRC(99834c1b) SHA1(330f271771b158493b28bb178c8cda98efd1d90c) )
|
ROM_LOAD( "ag_15.bin", 0x00000, 0x08000, CRC(99834c1b) SHA1(330f271771b158493b28bb178c8cda98efd1d90c) )
|
||||||
|
|
||||||
ROM_REGION( 0x08000, "user2", 0 ) /* Pattern */
|
ROM_REGION( 0x08000, "vrom2", 0 ) /* Pattern */
|
||||||
ROM_LOAD( "ag_16.bin", 0x00000, 0x08000, CRC(39a51714) SHA1(ad89a630f1352eb4d8beeeebf909d5e2b5d7cc12) )
|
ROM_LOAD( "ag_16.bin", 0x00000, 0x08000, CRC(39a51714) SHA1(ad89a630f1352eb4d8beeeebf909d5e2b5d7cc12) )
|
||||||
ROM_END
|
ROM_END
|
||||||
|
|
||||||
|
@ -9,22 +9,22 @@ class argus_state : public driver_device
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
argus_state(const machine_config &mconfig, device_type type, const char *tag)
|
argus_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_audiocpu(*this, "audiocpu"),
|
, m_audiocpu(*this, "audiocpu")
|
||||||
m_gfxdecode(*this, "gfxdecode"),
|
, m_gfxdecode(*this, "gfxdecode")
|
||||||
m_screen(*this, "screen"),
|
, m_screen(*this, "screen")
|
||||||
m_palette(*this, "palette"),
|
, m_palette(*this, "palette")
|
||||||
m_blend(*this, "blend"),
|
, m_blend(*this, "blend")
|
||||||
m_bg0_scrollx(*this, "bg0_scrollx"),
|
, m_bg_scrollx(*this, "bg%u_scrollx", 0U)
|
||||||
m_bg0_scrolly(*this, "bg0_scrolly"),
|
, m_bg_scrolly(*this, "bg%u_scrolly", 0U)
|
||||||
m_bg1_scrollx(*this, "bg1_scrollx"),
|
, m_paletteram(*this, "paletteram")
|
||||||
m_bg1_scrolly(*this, "bg1_scrolly"),
|
, m_txram(*this, "txram")
|
||||||
m_paletteram(*this, "paletteram"),
|
, m_bg1ram(*this, "bg1ram")
|
||||||
m_txram(*this, "txram"),
|
, m_spriteram(*this, "spriteram")
|
||||||
m_bg1ram(*this, "bg1ram"),
|
, m_butasan_bg1ram(*this, "butasan_bg1ram")
|
||||||
m_spriteram(*this, "spriteram"),
|
, m_vrom(*this, "vrom%u", 1U)
|
||||||
m_butasan_bg1ram(*this, "butasan_bg1ram") { }
|
{ }
|
||||||
|
|
||||||
required_device<cpu_device> m_maincpu;
|
required_device<cpu_device> m_maincpu;
|
||||||
required_device<cpu_device> m_audiocpu;
|
required_device<cpu_device> m_audiocpu;
|
||||||
@ -33,15 +33,14 @@ public:
|
|||||||
required_device<palette_device> m_palette;
|
required_device<palette_device> m_palette;
|
||||||
required_device<jaleco_blend_device> m_blend;
|
required_device<jaleco_blend_device> m_blend;
|
||||||
|
|
||||||
optional_shared_ptr<uint8_t> m_bg0_scrollx;
|
optional_shared_ptr_array<uint8_t, 2> m_bg_scrollx;
|
||||||
optional_shared_ptr<uint8_t> m_bg0_scrolly;
|
optional_shared_ptr_array<uint8_t, 2> m_bg_scrolly;
|
||||||
required_shared_ptr<uint8_t> m_bg1_scrollx;
|
|
||||||
required_shared_ptr<uint8_t> m_bg1_scrolly;
|
|
||||||
required_shared_ptr<uint8_t> m_paletteram;
|
required_shared_ptr<uint8_t> m_paletteram;
|
||||||
optional_shared_ptr<uint8_t> m_txram;
|
optional_shared_ptr<uint8_t> m_txram;
|
||||||
optional_shared_ptr<uint8_t> m_bg1ram;
|
optional_shared_ptr<uint8_t> m_bg1ram;
|
||||||
required_shared_ptr<uint8_t> m_spriteram;
|
required_shared_ptr<uint8_t> m_spriteram;
|
||||||
optional_shared_ptr<uint8_t> m_butasan_bg1ram;
|
optional_shared_ptr<uint8_t> m_butasan_bg1ram;
|
||||||
|
optional_region_ptr_array<uint8_t, 2> m_vrom;
|
||||||
|
|
||||||
// common
|
// common
|
||||||
uint8_t m_bg_status;
|
uint8_t m_bg_status;
|
||||||
@ -70,8 +69,7 @@ public:
|
|||||||
int m_mosaic;
|
int m_mosaic;
|
||||||
|
|
||||||
tilemap_t *m_tx_tilemap;
|
tilemap_t *m_tx_tilemap;
|
||||||
tilemap_t *m_bg0_tilemap;
|
tilemap_t *m_bg_tilemap[2];
|
||||||
tilemap_t *m_bg1_tilemap;
|
|
||||||
|
|
||||||
// common
|
// common
|
||||||
DECLARE_WRITE8_MEMBER(bankselect_w);
|
DECLARE_WRITE8_MEMBER(bankselect_w);
|
||||||
|
@ -262,11 +262,11 @@ void argus_state::reset_common()
|
|||||||
VIDEO_START_MEMBER(argus_state,argus)
|
VIDEO_START_MEMBER(argus_state,argus)
|
||||||
{
|
{
|
||||||
/* info offset w h col row */
|
/* info offset w h col row */
|
||||||
m_bg0_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(argus_state::argus_get_bg0_tile_info),this), TILEMAP_SCAN_COLS, 16, 16, 32, 32);
|
m_bg_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(argus_state::argus_get_bg0_tile_info),this), TILEMAP_SCAN_COLS, 16, 16, 32, 32);
|
||||||
m_bg1_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(argus_state::argus_get_bg1_tile_info),this), TILEMAP_SCAN_COLS, 16, 16, 32, 32);
|
m_bg_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(argus_state::argus_get_bg1_tile_info),this), TILEMAP_SCAN_COLS, 16, 16, 32, 32);
|
||||||
m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(argus_state::argus_get_tx_tile_info),this), TILEMAP_SCAN_COLS, 8, 8, 32, 32);
|
m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(argus_state::argus_get_tx_tile_info),this), TILEMAP_SCAN_COLS, 8, 8, 32, 32);
|
||||||
|
|
||||||
m_bg1_tilemap->set_transparent_pen(15);
|
m_bg_tilemap[1]->set_transparent_pen(15);
|
||||||
m_tx_tilemap->set_transparent_pen(15);
|
m_tx_tilemap->set_transparent_pen(15);
|
||||||
|
|
||||||
/* dummy RAM for back ground */
|
/* dummy RAM for back ground */
|
||||||
@ -284,8 +284,8 @@ VIDEO_RESET_MEMBER(argus_state,argus)
|
|||||||
{
|
{
|
||||||
m_lowbitscroll = 0;
|
m_lowbitscroll = 0;
|
||||||
m_prvscrollx = 0;
|
m_prvscrollx = 0;
|
||||||
m_bg0_scrollx[0] = 0;
|
m_bg_scrollx[0][0] = 0;
|
||||||
m_bg0_scrollx[1] = 0;
|
m_bg_scrollx[0][1] = 0;
|
||||||
memset(m_dummy_bg0ram.get(), 0, 0x800);
|
memset(m_dummy_bg0ram.get(), 0, 0x800);
|
||||||
reset_common();
|
reset_common();
|
||||||
}
|
}
|
||||||
@ -293,7 +293,7 @@ VIDEO_RESET_MEMBER(argus_state,argus)
|
|||||||
VIDEO_START_MEMBER(argus_state,valtric)
|
VIDEO_START_MEMBER(argus_state,valtric)
|
||||||
{
|
{
|
||||||
/* info offset w h col row */
|
/* info offset w h col row */
|
||||||
m_bg1_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(argus_state::valtric_get_bg_tile_info),this), TILEMAP_SCAN_COLS, 16, 16, 32, 32);
|
m_bg_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(argus_state::valtric_get_bg_tile_info),this), TILEMAP_SCAN_COLS, 16, 16, 32, 32);
|
||||||
m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(argus_state::valtric_get_tx_tile_info),this), TILEMAP_SCAN_COLS, 8, 8, 32, 32);
|
m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(argus_state::valtric_get_tx_tile_info),this), TILEMAP_SCAN_COLS, 8, 8, 32, 32);
|
||||||
|
|
||||||
m_tx_tilemap->set_transparent_pen(15);
|
m_tx_tilemap->set_transparent_pen(15);
|
||||||
@ -317,11 +317,11 @@ VIDEO_RESET_MEMBER(argus_state,valtric)
|
|||||||
VIDEO_START_MEMBER(argus_state,butasan)
|
VIDEO_START_MEMBER(argus_state,butasan)
|
||||||
{
|
{
|
||||||
/* info offset w h col row */
|
/* info offset w h col row */
|
||||||
m_bg0_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(argus_state::butasan_get_bg0_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 32, 32);
|
m_bg_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(argus_state::butasan_get_bg0_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 32, 32);
|
||||||
m_bg1_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(argus_state::butasan_get_bg1_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 32, 32);
|
m_bg_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(argus_state::butasan_get_bg1_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 32, 32);
|
||||||
m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(argus_state::butasan_get_tx_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32);
|
m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(argus_state::butasan_get_tx_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32);
|
||||||
|
|
||||||
m_bg1_tilemap->set_transparent_pen(15);
|
m_bg_tilemap[1]->set_transparent_pen(15);
|
||||||
m_tx_tilemap->set_transparent_pen(15);
|
m_tx_tilemap->set_transparent_pen(15);
|
||||||
|
|
||||||
m_butasan_pagedram[0] = std::make_unique<uint8_t[]>(0x1000);
|
m_butasan_pagedram[0] = std::make_unique<uint8_t[]>(0x1000);
|
||||||
@ -363,19 +363,16 @@ void argus_state::argus_write_dummy_rams(int dramoffs, int vromoffs)
|
|||||||
int voffs;
|
int voffs;
|
||||||
int offs;
|
int offs;
|
||||||
|
|
||||||
uint8_t *VROM1 = memregion("user1")->base(); /* "ag_15.bin" */
|
|
||||||
uint8_t *VROM2 = memregion("user2")->base(); /* "ag_16.bin" */
|
|
||||||
|
|
||||||
/* offset in pattern data */
|
/* offset in pattern data */
|
||||||
offs = VROM1[vromoffs] | (VROM1[vromoffs + 1] << 8);
|
offs = m_vrom[0][vromoffs] | (m_vrom[0][vromoffs + 1] << 8);
|
||||||
offs &= 0x7ff;
|
offs &= 0x7ff;
|
||||||
|
|
||||||
voffs = offs * 16;
|
voffs = offs * 16;
|
||||||
for (i = 0; i < 8; i++)
|
for (i = 0; i < 8; i++)
|
||||||
{
|
{
|
||||||
m_dummy_bg0ram[dramoffs] = VROM2[voffs];
|
m_dummy_bg0ram[dramoffs] = m_vrom[1][voffs];
|
||||||
m_dummy_bg0ram[dramoffs + 1] = VROM2[voffs + 1];
|
m_dummy_bg0ram[dramoffs + 1] = m_vrom[1][voffs + 1];
|
||||||
m_bg0_tilemap->mark_tile_dirty(dramoffs >> 1);
|
m_bg_tilemap[0]->mark_tile_dirty(dramoffs >> 1);
|
||||||
dramoffs += 2;
|
dramoffs += 2;
|
||||||
voffs += 2;
|
voffs += 2;
|
||||||
}
|
}
|
||||||
@ -445,7 +442,7 @@ WRITE8_MEMBER(argus_state::txram_w)
|
|||||||
WRITE8_MEMBER(argus_state::bg1ram_w)
|
WRITE8_MEMBER(argus_state::bg1ram_w)
|
||||||
{
|
{
|
||||||
m_bg1ram[offset] = data;
|
m_bg1ram[offset] = data;
|
||||||
m_bg1_tilemap->mark_tile_dirty(offset >> 1);
|
m_bg_tilemap[1]->mark_tile_dirty(offset >> 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
WRITE8_MEMBER(argus_state::argus_bg_status_w)
|
WRITE8_MEMBER(argus_state::argus_bg_status_w)
|
||||||
@ -498,7 +495,7 @@ WRITE8_MEMBER(argus_state::butasan_bg1_status_w)
|
|||||||
m_butasan_bg1_status = data;
|
m_butasan_bg1_status = data;
|
||||||
|
|
||||||
/* Bank changed */
|
/* Bank changed */
|
||||||
m_bg1_tilemap->mark_all_dirty();
|
m_bg_tilemap[1]->mark_all_dirty();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -623,7 +620,7 @@ WRITE8_MEMBER(argus_state::butasan_bg1ram_w)
|
|||||||
idx = (offset & 0x00f) | ((offset & 0x200) >> 5) | ((offset & 0x1f0) << 1);
|
idx = (offset & 0x00f) | ((offset & 0x200) >> 5) | ((offset & 0x1f0) << 1);
|
||||||
idx ^= 0x0f0;
|
idx ^= 0x0f0;
|
||||||
|
|
||||||
m_bg1_tilemap->mark_tile_dirty(idx);
|
m_bg_tilemap[1]->mark_tile_dirty(idx);
|
||||||
}
|
}
|
||||||
|
|
||||||
WRITE8_MEMBER(argus_state::butasan_pageselect_w)
|
WRITE8_MEMBER(argus_state::butasan_pageselect_w)
|
||||||
@ -650,7 +647,7 @@ WRITE8_MEMBER(argus_state::butasan_pagedram_w)
|
|||||||
int idx;
|
int idx;
|
||||||
idx = ((offset & 0x01e) >> 1) | ((offset & 0x400) >> 6) | (offset & 0x3e0);
|
idx = ((offset & 0x01e) >> 1) | ((offset & 0x400) >> 6) | (offset & 0x3e0);
|
||||||
idx ^= 0x1e0;
|
idx ^= 0x1e0;
|
||||||
m_bg0_tilemap->mark_tile_dirty(idx);
|
m_bg_tilemap[0]->mark_tile_dirty(idx);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -675,10 +672,8 @@ WRITE8_MEMBER(argus_state::butasan_unknown_w)
|
|||||||
Screen refresh
|
Screen refresh
|
||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
|
|
||||||
#define bg0_scrollx (m_bg0_scrollx[0] | (m_bg0_scrollx[1] << 8))
|
#define bg_scrollx(layer) (m_bg_scrollx[layer][0] | (m_bg_scrollx[layer][1] << 8))
|
||||||
#define bg0_scrolly (m_bg0_scrolly[0] | (m_bg0_scrolly[1] << 8))
|
#define bg_scrolly(layer) (m_bg_scrolly[layer][0] | (m_bg_scrolly[layer][1] << 8))
|
||||||
#define bg1_scrollx (m_bg1_scrollx[0] | (m_bg1_scrollx[1] << 8))
|
|
||||||
#define bg1_scrolly (m_bg1_scrolly[0] | (m_bg1_scrolly[1] << 8))
|
|
||||||
|
|
||||||
void argus_state::bg_setting()
|
void argus_state::bg_setting()
|
||||||
{
|
{
|
||||||
@ -686,23 +681,23 @@ void argus_state::bg_setting()
|
|||||||
|
|
||||||
if (!m_flipscreen)
|
if (!m_flipscreen)
|
||||||
{
|
{
|
||||||
if (m_bg0_tilemap != nullptr)
|
if (m_bg_tilemap[0] != nullptr)
|
||||||
{
|
{
|
||||||
m_bg0_tilemap->set_scrollx(0, bg0_scrollx & 0x1ff);
|
m_bg_tilemap[0]->set_scrollx(0, bg_scrollx(0) & 0x1ff);
|
||||||
m_bg0_tilemap->set_scrolly(0, bg0_scrolly & 0x1ff);
|
m_bg_tilemap[0]->set_scrolly(0, bg_scrolly(0) & 0x1ff);
|
||||||
}
|
}
|
||||||
m_bg1_tilemap->set_scrollx(0, bg1_scrollx & 0x1ff);
|
m_bg_tilemap[1]->set_scrollx(0, bg_scrollx(1) & 0x1ff);
|
||||||
m_bg1_tilemap->set_scrolly(0, bg1_scrolly & 0x1ff);
|
m_bg_tilemap[1]->set_scrolly(0, bg_scrolly(1) & 0x1ff);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (m_bg0_tilemap != nullptr)
|
if (m_bg_tilemap[0] != nullptr)
|
||||||
{
|
{
|
||||||
m_bg0_tilemap->set_scrollx(0, (bg0_scrollx + 256) & 0x1ff);
|
m_bg_tilemap[0]->set_scrollx(0, (bg_scrollx(0) + 256) & 0x1ff);
|
||||||
m_bg0_tilemap->set_scrolly(0, (bg0_scrolly + 256) & 0x1ff);
|
m_bg_tilemap[0]->set_scrolly(0, (bg_scrolly(0) + 256) & 0x1ff);
|
||||||
}
|
}
|
||||||
m_bg1_tilemap->set_scrollx(0, (bg1_scrollx + 256) & 0x1ff);
|
m_bg_tilemap[1]->set_scrollx(0, (bg_scrollx(1) + 256) & 0x1ff);
|
||||||
m_bg1_tilemap->set_scrolly(0, (bg1_scrolly + 256) & 0x1ff);
|
m_bg_tilemap[1]->set_scrolly(0, (bg_scrolly(1) + 256) & 0x1ff);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -712,16 +707,16 @@ void argus_state::argus_bg0_scroll_handle()
|
|||||||
int dcolumn;
|
int dcolumn;
|
||||||
|
|
||||||
/* Deficit between previous and current scroll value */
|
/* Deficit between previous and current scroll value */
|
||||||
delta = bg0_scrollx - m_prvscrollx;
|
delta = bg_scrollx(0) - m_prvscrollx;
|
||||||
m_prvscrollx = bg0_scrollx;
|
m_prvscrollx = bg_scrollx(0);
|
||||||
|
|
||||||
if (delta == 0)
|
if (delta == 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (delta > 0)
|
if (delta > 0)
|
||||||
{
|
{
|
||||||
m_lowbitscroll += delta % 16;
|
m_lowbitscroll += delta & 0xf;
|
||||||
dcolumn = delta / 16;
|
dcolumn = delta >> 4;
|
||||||
|
|
||||||
if (m_lowbitscroll >= 16)
|
if (m_lowbitscroll >= 16)
|
||||||
{
|
{
|
||||||
@ -734,9 +729,9 @@ void argus_state::argus_bg0_scroll_handle()
|
|||||||
int i, j;
|
int i, j;
|
||||||
int col, woffs, roffs;
|
int col, woffs, roffs;
|
||||||
|
|
||||||
col = ((bg0_scrollx / 16) + 16) % 32;
|
col = ((bg_scrollx(0) >> 4) + 16) & 0x1f;
|
||||||
woffs = 32 * 2 * col;
|
woffs = 32 * 2 * col;
|
||||||
roffs = (((bg0_scrollx / 16) + 16) * 8) % 0x8000;
|
roffs = (((bg_scrollx(0) >> 4) + 16) * 8) & 0x7fff;
|
||||||
|
|
||||||
if (dcolumn >= 18)
|
if (dcolumn >= 18)
|
||||||
dcolumn = 18;
|
dcolumn = 18;
|
||||||
@ -760,8 +755,8 @@ void argus_state::argus_bg0_scroll_handle()
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
m_lowbitscroll += (delta % 16);
|
m_lowbitscroll += (delta & 0xf);
|
||||||
dcolumn = -(delta / 16);
|
dcolumn = -(delta >> 4);
|
||||||
|
|
||||||
if (m_lowbitscroll <= 0)
|
if (m_lowbitscroll <= 0)
|
||||||
{
|
{
|
||||||
@ -774,9 +769,9 @@ void argus_state::argus_bg0_scroll_handle()
|
|||||||
int i, j;
|
int i, j;
|
||||||
int col, woffs, roffs;
|
int col, woffs, roffs;
|
||||||
|
|
||||||
col = ((bg0_scrollx / 16) + 31) % 32;
|
col = ((bg_scrollx(0) >> 4) + 31) & 0x1f;
|
||||||
woffs = 32 * 2 * col;
|
woffs = 32 * 2 * col;
|
||||||
roffs = ((bg0_scrollx / 16) - 1) * 8;
|
roffs = ((bg_scrollx(0) >> 4) - 1) * 8;
|
||||||
if (roffs < 0)
|
if (roffs < 0)
|
||||||
roffs += 0x08000;
|
roffs += 0x08000;
|
||||||
|
|
||||||
@ -850,10 +845,10 @@ void argus_state::valtric_draw_mosaic(screen_device &screen, bitmap_rgb32 &bitma
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (m_mosaic==0)
|
if (m_mosaic==0)
|
||||||
m_bg1_tilemap->draw(screen, bitmap, cliprect, 0, 0);
|
m_bg_tilemap[1]->draw(screen, bitmap, cliprect, 0, 0);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
m_bg1_tilemap->draw(screen, m_mosaicbitmap, cliprect, 0, 0);
|
m_bg_tilemap[1]->draw(screen, m_mosaicbitmap, cliprect, 0, 0);
|
||||||
{
|
{
|
||||||
int step=m_mosaic;
|
int step=m_mosaic;
|
||||||
uint32_t *dest;
|
uint32_t *dest;
|
||||||
@ -892,10 +887,10 @@ void argus_state::valtric_draw_mosaic(screen_device &screen, bitmap_rgb32 &bitma
|
|||||||
int step = 0x10 - (m_valtric_mosaic & 0x0f);
|
int step = 0x10 - (m_valtric_mosaic & 0x0f);
|
||||||
|
|
||||||
if (step == 1)
|
if (step == 1)
|
||||||
m_bg1_tilemap->draw(screen, bitmap, cliprect, 0, 0);
|
m_bg_tilemap[1]->draw(screen, bitmap, cliprect, 0, 0);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
m_bg1_tilemap->draw(screen, m_mosaicbitmap, cliprect, 0, 0);
|
m_bg_tilemap[1]->draw(screen, m_mosaicbitmap, cliprect, 0, 0);
|
||||||
{
|
{
|
||||||
uint32_t *dest;
|
uint32_t *dest;
|
||||||
int x,y,xx,yy,c=0;
|
int x,y,xx,yy,c=0;
|
||||||
@ -1130,10 +1125,10 @@ uint32_t argus_state::screen_update_argus(screen_device &screen, bitmap_rgb32 &b
|
|||||||
/* scroll BG0 and render tile at proper position */
|
/* scroll BG0 and render tile at proper position */
|
||||||
argus_bg0_scroll_handle();
|
argus_bg0_scroll_handle();
|
||||||
|
|
||||||
m_bg0_tilemap->draw(screen, bitmap, cliprect, 0, 0);
|
m_bg_tilemap[0]->draw(screen, bitmap, cliprect, 0, 0);
|
||||||
argus_draw_sprites(bitmap, cliprect, 0);
|
argus_draw_sprites(bitmap, cliprect, 0);
|
||||||
if (m_bg_status & 1) /* Backgound enable */
|
if (m_bg_status & 1) /* Backgound enable */
|
||||||
m_bg1_tilemap->draw(screen, bitmap, cliprect, 0, 0);
|
m_bg_tilemap[1]->draw(screen, bitmap, cliprect, 0, 0);
|
||||||
argus_draw_sprites(bitmap, cliprect, 1);
|
argus_draw_sprites(bitmap, cliprect, 1);
|
||||||
m_tx_tilemap->draw(screen, bitmap, cliprect, 0, 0);
|
m_tx_tilemap->draw(screen, bitmap, cliprect, 0, 0);
|
||||||
return 0;
|
return 0;
|
||||||
@ -1157,10 +1152,10 @@ uint32_t argus_state::screen_update_butasan(screen_device &screen, bitmap_rgb32
|
|||||||
bg_setting();
|
bg_setting();
|
||||||
|
|
||||||
if (m_bg_status & 1) /* Backgound enable */
|
if (m_bg_status & 1) /* Backgound enable */
|
||||||
m_bg0_tilemap->draw(screen, bitmap, cliprect, 0, 0);
|
m_bg_tilemap[0]->draw(screen, bitmap, cliprect, 0, 0);
|
||||||
else
|
else
|
||||||
bitmap.fill(m_palette->black_pen(), cliprect);
|
bitmap.fill(m_palette->black_pen(), cliprect);
|
||||||
if (m_butasan_bg1_status & 1) m_bg1_tilemap->draw(screen, bitmap, cliprect, 0, 0);
|
if (m_butasan_bg1_status & 1) m_bg_tilemap[1]->draw(screen, bitmap, cliprect, 0, 0);
|
||||||
butasan_draw_sprites(bitmap, cliprect);
|
butasan_draw_sprites(bitmap, cliprect);
|
||||||
m_tx_tilemap->draw(screen, bitmap, cliprect, 0, 0);
|
m_tx_tilemap->draw(screen, bitmap, cliprect, 0, 0);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user