mirror of
https://github.com/holub/mame
synced 2025-07-04 01:18:59 +03:00
pacland.c: configured banking (nw)
This commit is contained in:
parent
7e3d024724
commit
323028f4ec
@ -195,20 +195,27 @@ Notes:
|
|||||||
#include "cpu/m6800/m6800.h"
|
#include "cpu/m6800/m6800.h"
|
||||||
#include "includes/pacland.h"
|
#include "includes/pacland.h"
|
||||||
|
|
||||||
WRITE8_MEMBER(pacland_state::pacland_subreset_w)
|
|
||||||
|
void pacland_state::machine_start()
|
||||||
|
{
|
||||||
|
save_item(NAME(m_main_irq_mask));
|
||||||
|
save_item(NAME(m_mcu_irq_mask));
|
||||||
|
}
|
||||||
|
|
||||||
|
WRITE8_MEMBER(pacland_state::subreset_w)
|
||||||
{
|
{
|
||||||
int bit = !BIT(offset,11);
|
int bit = !BIT(offset,11);
|
||||||
m_mcu->set_input_line(INPUT_LINE_RESET, bit ? CLEAR_LINE : ASSERT_LINE);
|
m_mcu->set_input_line(INPUT_LINE_RESET, bit ? CLEAR_LINE : ASSERT_LINE);
|
||||||
}
|
}
|
||||||
|
|
||||||
WRITE8_MEMBER(pacland_state::pacland_flipscreen_w)
|
WRITE8_MEMBER(pacland_state::flipscreen_w)
|
||||||
{
|
{
|
||||||
int bit = !BIT(offset,11);
|
int bit = !BIT(offset,11);
|
||||||
flip_screen_set(bit);
|
flip_screen_set(bit);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
READ8_MEMBER(pacland_state::pacland_input_r)
|
READ8_MEMBER(pacland_state::input_r)
|
||||||
{
|
{
|
||||||
int shift = 4 * (offset & 1);
|
int shift = 4 * (offset & 1);
|
||||||
int port = offset & 2;
|
int port = offset & 2;
|
||||||
@ -219,20 +226,20 @@ READ8_MEMBER(pacland_state::pacland_input_r)
|
|||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
WRITE8_MEMBER(pacland_state::pacland_coin_w)
|
WRITE8_MEMBER(pacland_state::coin_w)
|
||||||
{
|
{
|
||||||
coin_lockout_global_w(machine(), data & 1);
|
coin_lockout_global_w(machine(), data & 1);
|
||||||
coin_counter_w(machine(), 0, ~data & 2);
|
coin_counter_w(machine(), 0, ~data & 2);
|
||||||
coin_counter_w(machine(), 1, ~data & 4);
|
coin_counter_w(machine(), 1, ~data & 4);
|
||||||
}
|
}
|
||||||
|
|
||||||
WRITE8_MEMBER(pacland_state::pacland_led_w)
|
WRITE8_MEMBER(pacland_state::led_w)
|
||||||
{
|
{
|
||||||
set_led_status(machine(), 0, data & 0x08);
|
set_led_status(machine(), 0, data & 0x08);
|
||||||
set_led_status(machine(), 1, data & 0x10);
|
set_led_status(machine(), 1, data & 0x10);
|
||||||
}
|
}
|
||||||
|
|
||||||
WRITE8_MEMBER(pacland_state::pacland_irq_1_ctrl_w)
|
WRITE8_MEMBER(pacland_state::irq_1_ctrl_w)
|
||||||
{
|
{
|
||||||
int bit = !BIT(offset, 11);
|
int bit = !BIT(offset, 11);
|
||||||
m_main_irq_mask = bit;
|
m_main_irq_mask = bit;
|
||||||
@ -240,7 +247,7 @@ WRITE8_MEMBER(pacland_state::pacland_irq_1_ctrl_w)
|
|||||||
m_maincpu->set_input_line(0, CLEAR_LINE);
|
m_maincpu->set_input_line(0, CLEAR_LINE);
|
||||||
}
|
}
|
||||||
|
|
||||||
WRITE8_MEMBER(pacland_state::pacland_irq_2_ctrl_w)
|
WRITE8_MEMBER(pacland_state::irq_2_ctrl_w)
|
||||||
{
|
{
|
||||||
int bit = !BIT(offset, 13);
|
int bit = !BIT(offset, 13);
|
||||||
m_mcu_irq_mask = bit;
|
m_mcu_irq_mask = bit;
|
||||||
@ -251,19 +258,19 @@ WRITE8_MEMBER(pacland_state::pacland_irq_2_ctrl_w)
|
|||||||
|
|
||||||
|
|
||||||
static ADDRESS_MAP_START( main_map, AS_PROGRAM, 8, pacland_state )
|
static ADDRESS_MAP_START( main_map, AS_PROGRAM, 8, pacland_state )
|
||||||
AM_RANGE(0x0000, 0x0fff) AM_RAM_WRITE(pacland_videoram_w) AM_SHARE("videoram")
|
AM_RANGE(0x0000, 0x0fff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram")
|
||||||
AM_RANGE(0x1000, 0x1fff) AM_RAM_WRITE(pacland_videoram2_w) AM_SHARE("videoram2")
|
AM_RANGE(0x1000, 0x1fff) AM_RAM_WRITE(videoram2_w) AM_SHARE("videoram2")
|
||||||
AM_RANGE(0x2000, 0x37ff) AM_RAM AM_SHARE("spriteram")
|
AM_RANGE(0x2000, 0x37ff) AM_RAM AM_SHARE("spriteram")
|
||||||
AM_RANGE(0x3800, 0x3801) AM_WRITE(pacland_scroll0_w)
|
AM_RANGE(0x3800, 0x3801) AM_WRITE(scroll0_w)
|
||||||
AM_RANGE(0x3a00, 0x3a01) AM_WRITE(pacland_scroll1_w)
|
AM_RANGE(0x3a00, 0x3a01) AM_WRITE(scroll1_w)
|
||||||
AM_RANGE(0x3c00, 0x3c00) AM_WRITE(pacland_bankswitch_w)
|
AM_RANGE(0x3c00, 0x3c00) AM_WRITE(bankswitch_w)
|
||||||
AM_RANGE(0x4000, 0x5fff) AM_ROMBANK("bank1")
|
AM_RANGE(0x4000, 0x5fff) AM_ROMBANK("bank1")
|
||||||
AM_RANGE(0x6800, 0x6bff) AM_DEVREADWRITE("namco", namco_cus30_device, namcos1_cus30_r, namcos1_cus30_w) /* PSG device, shared RAM */
|
AM_RANGE(0x6800, 0x6bff) AM_DEVREADWRITE("namco", namco_cus30_device, namcos1_cus30_r, namcos1_cus30_w) /* PSG device, shared RAM */
|
||||||
AM_RANGE(0x7000, 0x7fff) AM_WRITE(pacland_irq_1_ctrl_w)
|
AM_RANGE(0x7000, 0x7fff) AM_WRITE(irq_1_ctrl_w)
|
||||||
AM_RANGE(0x7800, 0x7fff) AM_READ(watchdog_reset_r)
|
AM_RANGE(0x7800, 0x7fff) AM_READ(watchdog_reset_r)
|
||||||
AM_RANGE(0x8000, 0xffff) AM_ROM
|
AM_RANGE(0x8000, 0xffff) AM_ROM
|
||||||
AM_RANGE(0x8000, 0x8fff) AM_WRITE(pacland_subreset_w)
|
AM_RANGE(0x8000, 0x8fff) AM_WRITE(subreset_w)
|
||||||
AM_RANGE(0x9000, 0x9fff) AM_WRITE(pacland_flipscreen_w)
|
AM_RANGE(0x9000, 0x9fff) AM_WRITE(flipscreen_w)
|
||||||
ADDRESS_MAP_END
|
ADDRESS_MAP_END
|
||||||
|
|
||||||
static ADDRESS_MAP_START( mcu_map, AS_PROGRAM, 8, pacland_state )
|
static ADDRESS_MAP_START( mcu_map, AS_PROGRAM, 8, pacland_state )
|
||||||
@ -271,10 +278,10 @@ static ADDRESS_MAP_START( mcu_map, AS_PROGRAM, 8, pacland_state )
|
|||||||
AM_RANGE(0x0080, 0x00ff) AM_RAM
|
AM_RANGE(0x0080, 0x00ff) AM_RAM
|
||||||
AM_RANGE(0x1000, 0x13ff) AM_DEVREADWRITE("namco", namco_cus30_device, namcos1_cus30_r, namcos1_cus30_w) /* PSG device, shared RAM */
|
AM_RANGE(0x1000, 0x13ff) AM_DEVREADWRITE("namco", namco_cus30_device, namcos1_cus30_r, namcos1_cus30_w) /* PSG device, shared RAM */
|
||||||
AM_RANGE(0x2000, 0x3fff) AM_WRITE(watchdog_reset_w) /* watchdog? */
|
AM_RANGE(0x2000, 0x3fff) AM_WRITE(watchdog_reset_w) /* watchdog? */
|
||||||
AM_RANGE(0x4000, 0x7fff) AM_WRITE(pacland_irq_2_ctrl_w)
|
AM_RANGE(0x4000, 0x7fff) AM_WRITE(irq_2_ctrl_w)
|
||||||
AM_RANGE(0x8000, 0xbfff) AM_ROM
|
AM_RANGE(0x8000, 0xbfff) AM_ROM
|
||||||
AM_RANGE(0xc000, 0xc7ff) AM_RAM
|
AM_RANGE(0xc000, 0xc7ff) AM_RAM
|
||||||
AM_RANGE(0xd000, 0xd003) AM_READ(pacland_input_r)
|
AM_RANGE(0xd000, 0xd003) AM_READ(input_r)
|
||||||
AM_RANGE(0xf000, 0xffff) AM_ROM
|
AM_RANGE(0xf000, 0xffff) AM_ROM
|
||||||
ADDRESS_MAP_END
|
ADDRESS_MAP_END
|
||||||
|
|
||||||
@ -286,9 +293,9 @@ READ8_MEMBER(pacland_state::readFF)
|
|||||||
|
|
||||||
static ADDRESS_MAP_START( mcu_port_map, AS_IO, 8, pacland_state )
|
static ADDRESS_MAP_START( mcu_port_map, AS_IO, 8, pacland_state )
|
||||||
AM_RANGE(M6801_PORT1, M6801_PORT1) AM_READ_PORT("IN2")
|
AM_RANGE(M6801_PORT1, M6801_PORT1) AM_READ_PORT("IN2")
|
||||||
AM_RANGE(M6801_PORT1, M6801_PORT1) AM_WRITE(pacland_coin_w)
|
AM_RANGE(M6801_PORT1, M6801_PORT1) AM_WRITE(coin_w)
|
||||||
AM_RANGE(M6801_PORT2, M6801_PORT2) AM_READ(readFF) /* leds won't work otherwise */
|
AM_RANGE(M6801_PORT2, M6801_PORT2) AM_READ(readFF) /* leds won't work otherwise */
|
||||||
AM_RANGE(M6801_PORT2, M6801_PORT2) AM_WRITE(pacland_led_w)
|
AM_RANGE(M6801_PORT2, M6801_PORT2) AM_WRITE(led_w)
|
||||||
ADDRESS_MAP_END
|
ADDRESS_MAP_END
|
||||||
|
|
||||||
|
|
||||||
@ -433,7 +440,7 @@ static MACHINE_CONFIG_START( pacland, pacland_state )
|
|||||||
/* video hardware */
|
/* video hardware */
|
||||||
MCFG_SCREEN_ADD("screen", RASTER)
|
MCFG_SCREEN_ADD("screen", RASTER)
|
||||||
MCFG_SCREEN_RAW_PARAMS(XTAL_49_152MHz/8, 384, 3*8, 39*8, 264, 2*8, 30*8)
|
MCFG_SCREEN_RAW_PARAMS(XTAL_49_152MHz/8, 384, 3*8, 39*8, 264, 2*8, 30*8)
|
||||||
MCFG_SCREEN_UPDATE_DRIVER(pacland_state, screen_update_pacland)
|
MCFG_SCREEN_UPDATE_DRIVER(pacland_state, screen_update)
|
||||||
MCFG_SCREEN_PALETTE("palette")
|
MCFG_SCREEN_PALETTE("palette")
|
||||||
|
|
||||||
MCFG_GFXDECODE_ADD("gfxdecode", "palette", pacland)
|
MCFG_GFXDECODE_ADD("gfxdecode", "palette", pacland)
|
||||||
|
@ -7,19 +7,16 @@ class pacland_state : public driver_device
|
|||||||
public:
|
public:
|
||||||
pacland_state(const machine_config &mconfig, device_type type, const char *tag)
|
pacland_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||||
: driver_device(mconfig, type, tag),
|
: driver_device(mconfig, type, tag),
|
||||||
m_videoram(*this, "videoram"),
|
|
||||||
m_videoram2(*this, "videoram2"),
|
|
||||||
m_spriteram(*this, "spriteram"),
|
|
||||||
m_maincpu(*this, "maincpu"),
|
m_maincpu(*this, "maincpu"),
|
||||||
m_mcu(*this, "mcu"),
|
m_mcu(*this, "mcu"),
|
||||||
m_cus30(*this, "namco"),
|
m_cus30(*this, "namco"),
|
||||||
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_videoram(*this, "videoram"),
|
||||||
|
m_videoram2(*this, "videoram2"),
|
||||||
|
m_spriteram(*this, "spriteram") { }
|
||||||
|
|
||||||
required_shared_ptr<UINT8> m_videoram;
|
|
||||||
required_shared_ptr<UINT8> m_videoram2;
|
|
||||||
required_shared_ptr<UINT8> m_spriteram;
|
|
||||||
required_device<cpu_device> m_maincpu;
|
required_device<cpu_device> m_maincpu;
|
||||||
required_device<cpu_device> m_mcu;
|
required_device<cpu_device> m_mcu;
|
||||||
required_device<namco_cus30_device> m_cus30;
|
required_device<namco_cus30_device> m_cus30;
|
||||||
@ -27,6 +24,10 @@ public:
|
|||||||
required_device<screen_device> m_screen;
|
required_device<screen_device> m_screen;
|
||||||
required_device<palette_device> m_palette;
|
required_device<palette_device> m_palette;
|
||||||
|
|
||||||
|
required_shared_ptr<UINT8> m_videoram;
|
||||||
|
required_shared_ptr<UINT8> m_videoram2;
|
||||||
|
required_shared_ptr<UINT8> m_spriteram;
|
||||||
|
|
||||||
UINT8 m_palette_bank;
|
UINT8 m_palette_bank;
|
||||||
const UINT8 *m_color_prom;
|
const UINT8 *m_color_prom;
|
||||||
tilemap_t *m_bg_tilemap;
|
tilemap_t *m_bg_tilemap;
|
||||||
@ -37,26 +38,32 @@ public:
|
|||||||
UINT16 m_scroll1;
|
UINT16 m_scroll1;
|
||||||
UINT8 m_main_irq_mask;
|
UINT8 m_main_irq_mask;
|
||||||
UINT8 m_mcu_irq_mask;
|
UINT8 m_mcu_irq_mask;
|
||||||
DECLARE_WRITE8_MEMBER(pacland_subreset_w);
|
|
||||||
DECLARE_WRITE8_MEMBER(pacland_flipscreen_w);
|
DECLARE_WRITE8_MEMBER(subreset_w);
|
||||||
DECLARE_READ8_MEMBER(pacland_input_r);
|
DECLARE_WRITE8_MEMBER(flipscreen_w);
|
||||||
DECLARE_WRITE8_MEMBER(pacland_coin_w);
|
DECLARE_READ8_MEMBER(input_r);
|
||||||
DECLARE_WRITE8_MEMBER(pacland_led_w);
|
DECLARE_WRITE8_MEMBER(coin_w);
|
||||||
DECLARE_WRITE8_MEMBER(pacland_irq_1_ctrl_w);
|
DECLARE_WRITE8_MEMBER(led_w);
|
||||||
DECLARE_WRITE8_MEMBER(pacland_irq_2_ctrl_w);
|
DECLARE_WRITE8_MEMBER(irq_1_ctrl_w);
|
||||||
|
DECLARE_WRITE8_MEMBER(irq_2_ctrl_w);
|
||||||
DECLARE_READ8_MEMBER(readFF);
|
DECLARE_READ8_MEMBER(readFF);
|
||||||
DECLARE_WRITE8_MEMBER(pacland_videoram_w);
|
DECLARE_WRITE8_MEMBER(videoram_w);
|
||||||
DECLARE_WRITE8_MEMBER(pacland_videoram2_w);
|
DECLARE_WRITE8_MEMBER(videoram2_w);
|
||||||
DECLARE_WRITE8_MEMBER(pacland_scroll0_w);
|
DECLARE_WRITE8_MEMBER(scroll0_w);
|
||||||
DECLARE_WRITE8_MEMBER(pacland_scroll1_w);
|
DECLARE_WRITE8_MEMBER(scroll1_w);
|
||||||
DECLARE_WRITE8_MEMBER(pacland_bankswitch_w);
|
DECLARE_WRITE8_MEMBER(bankswitch_w);
|
||||||
|
|
||||||
TILE_GET_INFO_MEMBER(get_bg_tile_info);
|
TILE_GET_INFO_MEMBER(get_bg_tile_info);
|
||||||
TILE_GET_INFO_MEMBER(get_fg_tile_info);
|
TILE_GET_INFO_MEMBER(get_fg_tile_info);
|
||||||
|
|
||||||
|
virtual void machine_start();
|
||||||
virtual void video_start();
|
virtual void video_start();
|
||||||
DECLARE_PALETTE_INIT(pacland);
|
DECLARE_PALETTE_INIT(pacland);
|
||||||
UINT32 screen_update_pacland(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
|
||||||
INTERRUPT_GEN_MEMBER(main_vblank_irq);
|
INTERRUPT_GEN_MEMBER(main_vblank_irq);
|
||||||
INTERRUPT_GEN_MEMBER(mcu_vblank_irq);
|
INTERRUPT_GEN_MEMBER(mcu_vblank_irq);
|
||||||
|
|
||||||
|
UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||||
void switch_palette();
|
void switch_palette();
|
||||||
void draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int flip, int whichmask);
|
void draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int flip, int whichmask);
|
||||||
void draw_fg(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int priority );
|
void draw_fg(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int priority );
|
||||||
|
@ -189,8 +189,6 @@ TILE_GET_INFO_MEMBER(pacland_state::get_fg_tile_info)
|
|||||||
|
|
||||||
void pacland_state::video_start()
|
void pacland_state::video_start()
|
||||||
{
|
{
|
||||||
int color;
|
|
||||||
|
|
||||||
m_screen->register_screen_bitmap(m_fg_bitmap);
|
m_screen->register_screen_bitmap(m_fg_bitmap);
|
||||||
m_fg_bitmap.fill(0xffff);
|
m_fg_bitmap.fill(0xffff);
|
||||||
|
|
||||||
@ -204,13 +202,15 @@ void pacland_state::video_start()
|
|||||||
/* create one group per color code; for each group, set the transparency mask
|
/* create one group per color code; for each group, set the transparency mask
|
||||||
to correspond to the pens that are 0x7f or 0xff */
|
to correspond to the pens that are 0x7f or 0xff */
|
||||||
assert(m_gfxdecode->gfx(0)->colors() <= TILEMAP_NUM_GROUPS);
|
assert(m_gfxdecode->gfx(0)->colors() <= TILEMAP_NUM_GROUPS);
|
||||||
for (color = 0; color < m_gfxdecode->gfx(0)->colors(); color++)
|
for (int color = 0; color < m_gfxdecode->gfx(0)->colors(); color++)
|
||||||
{
|
{
|
||||||
UINT32 mask = m_palette->transpen_mask(*m_gfxdecode->gfx(0), color, 0x7f);
|
UINT32 mask = m_palette->transpen_mask(*m_gfxdecode->gfx(0), color, 0x7f);
|
||||||
mask |= m_palette->transpen_mask(*m_gfxdecode->gfx(0), color, 0xff);
|
mask |= m_palette->transpen_mask(*m_gfxdecode->gfx(0), color, 0xff);
|
||||||
m_fg_tilemap->set_transmask(color, mask, 0);
|
m_fg_tilemap->set_transmask(color, mask, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
membank("bank1")->configure_entries(0, 8, memregion("maincpu")->base() + 0x10000, 0x2000);
|
||||||
|
|
||||||
save_item(NAME(m_palette_bank));
|
save_item(NAME(m_palette_bank));
|
||||||
save_item(NAME(m_scroll0));
|
save_item(NAME(m_scroll0));
|
||||||
save_item(NAME(m_scroll1));
|
save_item(NAME(m_scroll1));
|
||||||
@ -224,35 +224,31 @@ void pacland_state::video_start()
|
|||||||
|
|
||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
|
|
||||||
WRITE8_MEMBER(pacland_state::pacland_videoram_w)
|
WRITE8_MEMBER(pacland_state::videoram_w)
|
||||||
{
|
{
|
||||||
m_videoram[offset] = data;
|
m_videoram[offset] = data;
|
||||||
m_fg_tilemap->mark_tile_dirty(offset / 2);
|
m_fg_tilemap->mark_tile_dirty(offset / 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
WRITE8_MEMBER(pacland_state::pacland_videoram2_w)
|
WRITE8_MEMBER(pacland_state::videoram2_w)
|
||||||
{
|
{
|
||||||
m_videoram2[offset] = data;
|
m_videoram2[offset] = data;
|
||||||
m_bg_tilemap->mark_tile_dirty(offset / 2);
|
m_bg_tilemap->mark_tile_dirty(offset / 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
WRITE8_MEMBER(pacland_state::pacland_scroll0_w)
|
WRITE8_MEMBER(pacland_state::scroll0_w)
|
||||||
{
|
{
|
||||||
m_scroll0 = data + 256 * offset;
|
m_scroll0 = data + 256 * offset;
|
||||||
}
|
}
|
||||||
|
|
||||||
WRITE8_MEMBER(pacland_state::pacland_scroll1_w)
|
WRITE8_MEMBER(pacland_state::scroll1_w)
|
||||||
{
|
{
|
||||||
m_scroll1 = data + 256 * offset;
|
m_scroll1 = data + 256 * offset;
|
||||||
}
|
}
|
||||||
|
|
||||||
WRITE8_MEMBER(pacland_state::pacland_bankswitch_w)
|
WRITE8_MEMBER(pacland_state::bankswitch_w)
|
||||||
{
|
{
|
||||||
int bankaddress;
|
membank("bank1")->set_entry(data & 0x07);
|
||||||
UINT8 *RAM = memregion("maincpu")->base();
|
|
||||||
|
|
||||||
bankaddress = 0x10000 + ((data & 0x07) << 13);
|
|
||||||
membank("bank1")->set_base(&RAM[bankaddress]);
|
|
||||||
|
|
||||||
// pbc = data & 0x20;
|
// pbc = data & 0x20;
|
||||||
|
|
||||||
@ -277,9 +273,8 @@ void pacland_state::draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, co
|
|||||||
UINT8 *spriteram = m_spriteram + 0x780;
|
UINT8 *spriteram = m_spriteram + 0x780;
|
||||||
UINT8 *spriteram_2 = spriteram + 0x800;
|
UINT8 *spriteram_2 = spriteram + 0x800;
|
||||||
UINT8 *spriteram_3 = spriteram_2 + 0x800;
|
UINT8 *spriteram_3 = spriteram_2 + 0x800;
|
||||||
int offs;
|
|
||||||
|
|
||||||
for (offs = 0;offs < 0x80;offs += 2)
|
for (int offs = 0;offs < 0x80;offs += 2)
|
||||||
{
|
{
|
||||||
static const int gfx_offs[2][2] =
|
static const int gfx_offs[2][2] =
|
||||||
{
|
{
|
||||||
@ -333,15 +328,13 @@ void pacland_state::draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, co
|
|||||||
|
|
||||||
void pacland_state::draw_fg(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int priority )
|
void pacland_state::draw_fg(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int priority )
|
||||||
{
|
{
|
||||||
int y, x;
|
|
||||||
|
|
||||||
/* draw tilemap transparently over it; this will leave invalid pens (0xffff)
|
/* draw tilemap transparently over it; this will leave invalid pens (0xffff)
|
||||||
anywhere where the fg_tilemap should be transparent; note that we assume
|
anywhere where the fg_tilemap should be transparent; note that we assume
|
||||||
the fg_bitmap has been pre-erased to 0xffff */
|
the fg_bitmap has been pre-erased to 0xffff */
|
||||||
m_fg_tilemap->draw(screen, m_fg_bitmap, cliprect, priority, 0);
|
m_fg_tilemap->draw(screen, m_fg_bitmap, cliprect, priority, 0);
|
||||||
|
|
||||||
/* now copy the fg_bitmap to the destination wherever the sprite pixel allows */
|
/* now copy the fg_bitmap to the destination wherever the sprite pixel allows */
|
||||||
for (y = cliprect.min_y; y <= cliprect.max_y; y++)
|
for (int y = cliprect.min_y; y <= cliprect.max_y; y++)
|
||||||
{
|
{
|
||||||
const UINT8 *pri = &screen.priority().pix8(y);
|
const UINT8 *pri = &screen.priority().pix8(y);
|
||||||
UINT16 *src = &m_fg_bitmap.pix16(y);
|
UINT16 *src = &m_fg_bitmap.pix16(y);
|
||||||
@ -349,7 +342,7 @@ void pacland_state::draw_fg(screen_device &screen, bitmap_ind16 &bitmap, const r
|
|||||||
|
|
||||||
/* only copy if the priority bitmap is 0 (no high priority sprite) and the
|
/* only copy if the priority bitmap is 0 (no high priority sprite) and the
|
||||||
source pixel is not the invalid pen; also clear to 0xffff when finished */
|
source pixel is not the invalid pen; also clear to 0xffff when finished */
|
||||||
for (x = cliprect.min_x; x <= cliprect.max_x; x++)
|
for (int x = cliprect.min_x; x <= cliprect.max_x; x++)
|
||||||
{
|
{
|
||||||
UINT16 pix = src[x];
|
UINT16 pix = src[x];
|
||||||
if (pix != 0xffff)
|
if (pix != 0xffff)
|
||||||
@ -363,12 +356,11 @@ void pacland_state::draw_fg(screen_device &screen, bitmap_ind16 &bitmap, const r
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
UINT32 pacland_state::screen_update_pacland(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
UINT32 pacland_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||||
{
|
{
|
||||||
int row;
|
|
||||||
int flip = flip_screen();
|
int flip = flip_screen();
|
||||||
|
|
||||||
for (row = 5; row < 29; row++)
|
for (int row = 5; row < 29; row++)
|
||||||
m_fg_tilemap->set_scrollx(row, m_scroll0 - (flip ? 7 : 0));
|
m_fg_tilemap->set_scrollx(row, m_scroll0 - (flip ? 7 : 0));
|
||||||
m_bg_tilemap->set_scrollx(0, m_scroll1);
|
m_bg_tilemap->set_scrollx(0, m_scroll1);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user