mirror of
https://github.com/holub/mame
synced 2025-05-31 01:51:46 +03:00
vamphalf.cpp : Updates
Make don't change screen size / fps when flipscreen state is changed, Make sprite drawing routine related to cliprect, Reduce duplicates, Unnecessary lines, Simplify handlers, Fix spacings, Add notes
This commit is contained in:
parent
db0110d12b
commit
576482abe0
@ -85,11 +85,10 @@ public:
|
||||
, m_soundlatch(*this, "soundlatch")
|
||||
, m_eeprom(*this, "eeprom")
|
||||
, m_gfxdecode(*this, "gfxdecode")
|
||||
, m_tiles(*this,"tiles")
|
||||
, m_tiles32(*this,"tiles32")
|
||||
, m_tiles(*this,"tiles", 0U)
|
||||
, m_okiregion(*this, "oki%u", 1)
|
||||
, m_photosensors(*this, "PHOTO_SENSORS")
|
||||
, m_has_extra_gfx(0)
|
||||
, m_has_extra_gfx(false)
|
||||
{
|
||||
}
|
||||
|
||||
@ -133,12 +132,14 @@ public:
|
||||
|
||||
DECLARE_CUSTOM_INPUT_MEMBER(boonggab_photo_sensors_r);
|
||||
|
||||
DECLARE_READ16_MEMBER(eeprom_r);
|
||||
DECLARE_READ32_MEMBER(eeprom32_r);
|
||||
DECLARE_WRITE16_MEMBER(eeprom_w);
|
||||
DECLARE_WRITE32_MEMBER(eeprom32_w);
|
||||
DECLARE_WRITE16_MEMBER(flipscreen_w);
|
||||
DECLARE_WRITE32_MEMBER(flipscreen32_w);
|
||||
u16 eeprom_r(offs_t offset);
|
||||
u32 eeprom32_r();
|
||||
void eeprom_w(offs_t offset, u16 data);
|
||||
void eeprom32_w(u32 data);
|
||||
void flipscreen_w(offs_t offset, u16 data);
|
||||
void flipscreen32_w(u32 data);
|
||||
u16 vram_r(offs_t offset) { return m_tiles[offset]; }
|
||||
void vram_w(offs_t offset, u16 data, u16 mem_mask = ~0) { COMBINE_DATA(&m_tiles[offset]); }
|
||||
|
||||
void banked_oki(int chip);
|
||||
|
||||
@ -148,18 +149,18 @@ public:
|
||||
protected:
|
||||
virtual void video_start() override;
|
||||
|
||||
int m_flip_bit;
|
||||
int m_palshift;
|
||||
u32 m_flip_bit;
|
||||
u8 m_palshift;
|
||||
|
||||
required_device<cpu_device> m_maincpu;
|
||||
optional_shared_ptr<uint16_t> m_wram;
|
||||
optional_shared_ptr<uint32_t> m_wram32;
|
||||
optional_shared_ptr<u16> m_wram;
|
||||
optional_shared_ptr<u32> m_wram32;
|
||||
|
||||
uint16_t m_semicom_prot_data[2];
|
||||
u16 m_semicom_prot_data[2];
|
||||
int m_semicom_prot_idx;
|
||||
int m_semicom_prot_which;
|
||||
|
||||
int irq_active();
|
||||
bool irq_active();
|
||||
|
||||
optional_memory_bank m_okibank;
|
||||
required_device<palette_device> m_palette;
|
||||
@ -169,20 +170,19 @@ protected:
|
||||
private:
|
||||
required_device<gfxdecode_device> m_gfxdecode;
|
||||
|
||||
optional_shared_ptr<uint16_t> m_tiles;
|
||||
optional_shared_ptr<uint32_t> m_tiles32;
|
||||
optional_shared_ptr<u16> m_tiles;
|
||||
|
||||
optional_memory_region_array<2> m_okiregion;
|
||||
|
||||
optional_ioport m_photosensors;
|
||||
|
||||
// driver init configuration
|
||||
int m_has_extra_gfx;
|
||||
int m_flipscreen;
|
||||
bool m_has_extra_gfx;
|
||||
bool m_flipscreen;
|
||||
|
||||
DECLARE_WRITE16_MEMBER(jmpbreak_flipscreen_w);
|
||||
DECLARE_WRITE16_MEMBER(boonggab_prize_w);
|
||||
DECLARE_WRITE16_MEMBER(boonggab_lamps_w);
|
||||
void jmpbreak_flipscreen_w(u16 data);
|
||||
void boonggab_prize_w(offs_t offset, u16 data);
|
||||
void boonggab_lamps_w(offs_t offset, u16 data);
|
||||
|
||||
DECLARE_READ16_MEMBER(vamphalf_speedup_r);
|
||||
DECLARE_READ16_MEMBER(vamphalfr1_speedup_r);
|
||||
@ -207,15 +207,15 @@ private:
|
||||
DECLARE_READ16_MEMBER(toyland_speedup_r);
|
||||
DECLARE_READ16_MEMBER(boonggab_speedup_r);
|
||||
|
||||
DECLARE_WRITE32_MEMBER(aoh_oki_bank_w);
|
||||
DECLARE_WRITE16_MEMBER(boonggab_oki_bank_w);
|
||||
DECLARE_WRITE16_MEMBER(mrkicker_oki_bank_w);
|
||||
DECLARE_WRITE8_MEMBER(qs1000_p3_w);
|
||||
void aoh_oki_bank_w(u32 data);
|
||||
void boonggab_oki_bank_w(offs_t offset, u16 data);
|
||||
void mrkicker_oki_bank_w(u16 data);
|
||||
void qs1000_p3_w(u8 data);
|
||||
|
||||
uint32_t screen_update_common(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
uint32_t screen_update_aoh(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
void draw_sprites(screen_device &screen, bitmap_ind16 &bitmap);
|
||||
void draw_sprites_aoh(screen_device &screen, bitmap_ind16 &bitmap);
|
||||
u32 screen_update_common(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
u32 screen_update_aoh(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
void draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
void draw_sprites_aoh(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
void handle_flipped_visible_area(screen_device &screen);
|
||||
void aoh_io(address_map &map);
|
||||
void aoh_map(address_map &map);
|
||||
@ -256,8 +256,8 @@ private:
|
||||
DECLARE_READ32_MEMBER(wyvernwg_speedup_r);
|
||||
DECLARE_READ32_MEMBER(wyvernwga_speedup_r);
|
||||
|
||||
DECLARE_READ32_MEMBER(wyvernwg_prot_r);
|
||||
DECLARE_WRITE32_MEMBER(wyvernwg_prot_w);
|
||||
u32 wyvernwg_prot_r();
|
||||
void wyvernwg_prot_w(u32 data);
|
||||
|
||||
void yorijori_32bit_map(address_map &map);
|
||||
void yorijori_io(address_map &map);
|
||||
@ -287,40 +287,40 @@ private:
|
||||
|
||||
required_device<nvram_device> m_nvram;
|
||||
|
||||
uint16_t m_finalgdr_backupram_bank;
|
||||
std::unique_ptr<uint8_t[]> m_finalgdr_backupram;
|
||||
DECLARE_WRITE32_MEMBER(finalgdr_backupram_bank_w);
|
||||
DECLARE_READ32_MEMBER(finalgdr_backupram_r);
|
||||
DECLARE_WRITE32_MEMBER(finalgdr_backupram_w);
|
||||
u16 m_finalgdr_backupram_bank;
|
||||
std::unique_ptr<u8[]> m_finalgdr_backupram;
|
||||
void finalgdr_backupram_bank_w(u32 data);
|
||||
u32 finalgdr_backupram_r(offs_t offset);
|
||||
void finalgdr_backupram_w(offs_t offset, u32 data);
|
||||
|
||||
DECLARE_READ32_MEMBER(finalgdr_prot_r);
|
||||
DECLARE_WRITE32_MEMBER(finalgdr_prot_w);
|
||||
u32 finalgdr_prot_r();
|
||||
void finalgdr_prot_w(u32 data);
|
||||
|
||||
DECLARE_READ32_MEMBER(finalgdr_speedup_r);
|
||||
DECLARE_READ32_MEMBER(mrkickera_speedup_r);
|
||||
|
||||
DECLARE_WRITE32_MEMBER(finalgdr_prize_w);
|
||||
DECLARE_WRITE32_MEMBER(finalgdr_oki_bank_w);
|
||||
void finalgdr_prize_w(u32 data);
|
||||
void finalgdr_oki_bank_w(u32 data);
|
||||
|
||||
DECLARE_WRITE32_MEMBER(finalgdr_eeprom_w);
|
||||
void finalgdr_eeprom_w(u32 data);
|
||||
};
|
||||
|
||||
READ16_MEMBER(vamphalf_state::eeprom_r)
|
||||
u16 vamphalf_state::eeprom_r(offs_t offset)
|
||||
{
|
||||
if(offset)
|
||||
if (offset)
|
||||
return m_eeprom->do_read();
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
|
||||
READ32_MEMBER(vamphalf_state::eeprom32_r)
|
||||
u32 vamphalf_state::eeprom32_r()
|
||||
{
|
||||
return m_eeprom->do_read();
|
||||
}
|
||||
|
||||
WRITE16_MEMBER(vamphalf_state::eeprom_w)
|
||||
void vamphalf_state::eeprom_w(offs_t offset, u16 data)
|
||||
{
|
||||
if(offset)
|
||||
if (offset)
|
||||
{
|
||||
m_eeprom->di_write(data & 0x01);
|
||||
m_eeprom->cs_write((data & 0x04) ? ASSERT_LINE : CLEAR_LINE );
|
||||
@ -330,59 +330,60 @@ WRITE16_MEMBER(vamphalf_state::eeprom_w)
|
||||
}
|
||||
}
|
||||
|
||||
WRITE32_MEMBER(vamphalf_state::eeprom32_w)
|
||||
void vamphalf_state::eeprom32_w(u32 data)
|
||||
{
|
||||
m_eeprom->di_write(data & 0x01);
|
||||
m_eeprom->cs_write((data & 0x04) ? ASSERT_LINE : CLEAR_LINE );
|
||||
m_eeprom->clk_write((data & 0x02) ? ASSERT_LINE : CLEAR_LINE );
|
||||
}
|
||||
|
||||
WRITE32_MEMBER(vamphalf_nvram_state::finalgdr_eeprom_w)
|
||||
void vamphalf_nvram_state::finalgdr_eeprom_w(u32 data)
|
||||
{
|
||||
m_eeprom->di_write((data & 0x4000) >> 14);
|
||||
m_eeprom->cs_write((data & 0x1000) ? ASSERT_LINE : CLEAR_LINE );
|
||||
m_eeprom->clk_write((data & 0x2000) ? ASSERT_LINE : CLEAR_LINE );
|
||||
}
|
||||
|
||||
WRITE16_MEMBER(vamphalf_state::flipscreen_w)
|
||||
void vamphalf_state::flipscreen_w(offs_t offset, u16 data)
|
||||
{
|
||||
if(offset)
|
||||
if (offset)
|
||||
{
|
||||
m_flipscreen = data & m_flip_bit;
|
||||
}
|
||||
}
|
||||
|
||||
WRITE32_MEMBER(vamphalf_state::flipscreen32_w)
|
||||
void vamphalf_state::flipscreen32_w(u32 data)
|
||||
{
|
||||
m_flipscreen = data & m_flip_bit;
|
||||
}
|
||||
|
||||
WRITE16_MEMBER(vamphalf_state::jmpbreak_flipscreen_w)
|
||||
void vamphalf_state::jmpbreak_flipscreen_w(u16 data)
|
||||
{
|
||||
m_flipscreen = data & 0x8000;
|
||||
}
|
||||
|
||||
|
||||
|
||||
READ32_MEMBER(vamphalf_qdsp_state::wyvernwg_prot_r)
|
||||
u32 vamphalf_qdsp_state::wyvernwg_prot_r()
|
||||
{
|
||||
m_semicom_prot_idx--;
|
||||
if (!machine().side_effects_disabled())
|
||||
m_semicom_prot_idx--;
|
||||
return (m_semicom_prot_data[m_semicom_prot_which] & (1 << m_semicom_prot_idx)) >> m_semicom_prot_idx;
|
||||
}
|
||||
|
||||
WRITE32_MEMBER(vamphalf_qdsp_state::wyvernwg_prot_w)
|
||||
void vamphalf_qdsp_state::wyvernwg_prot_w(u32 data)
|
||||
{
|
||||
m_semicom_prot_which = data & 1;
|
||||
m_semicom_prot_idx = 8;
|
||||
}
|
||||
|
||||
READ32_MEMBER(vamphalf_nvram_state::finalgdr_prot_r)
|
||||
u32 vamphalf_nvram_state::finalgdr_prot_r()
|
||||
{
|
||||
m_semicom_prot_idx--;
|
||||
if (!machine().side_effects_disabled())
|
||||
m_semicom_prot_idx--;
|
||||
return (m_semicom_prot_data[m_semicom_prot_which] & (1 << m_semicom_prot_idx)) ? 0x8000 : 0;
|
||||
}
|
||||
|
||||
WRITE32_MEMBER(vamphalf_nvram_state::finalgdr_prot_w)
|
||||
void vamphalf_nvram_state::finalgdr_prot_w(u32 data)
|
||||
{
|
||||
/*
|
||||
41C6
|
||||
@ -390,72 +391,72 @@ WRITE32_MEMBER(vamphalf_nvram_state::finalgdr_prot_w)
|
||||
446B
|
||||
F94B
|
||||
*/
|
||||
if(data == 0x41c6 || data == 0x446b)
|
||||
if (data == 0x41c6 || data == 0x446b)
|
||||
m_semicom_prot_which = 0;
|
||||
else
|
||||
m_semicom_prot_which = 1;
|
||||
m_semicom_prot_which = 1;
|
||||
|
||||
m_semicom_prot_idx = 8;
|
||||
}
|
||||
|
||||
WRITE32_MEMBER(vamphalf_nvram_state::finalgdr_oki_bank_w)
|
||||
void vamphalf_nvram_state::finalgdr_oki_bank_w(u32 data)
|
||||
{
|
||||
m_okibank->set_entry((data & 0x300) >> 8);
|
||||
}
|
||||
|
||||
WRITE32_MEMBER(vamphalf_nvram_state::finalgdr_backupram_bank_w)
|
||||
void vamphalf_nvram_state::finalgdr_backupram_bank_w(u32 data)
|
||||
{
|
||||
m_finalgdr_backupram_bank = (data & 0xff000000) >> 24;
|
||||
}
|
||||
|
||||
READ32_MEMBER(vamphalf_nvram_state::finalgdr_backupram_r)
|
||||
u32 vamphalf_nvram_state::finalgdr_backupram_r(offs_t offset)
|
||||
{
|
||||
return m_finalgdr_backupram[offset + m_finalgdr_backupram_bank * 0x80] << 24;
|
||||
}
|
||||
|
||||
WRITE32_MEMBER(vamphalf_nvram_state::finalgdr_backupram_w)
|
||||
void vamphalf_nvram_state::finalgdr_backupram_w(offs_t offset, u32 data)
|
||||
{
|
||||
m_finalgdr_backupram[offset + m_finalgdr_backupram_bank * 0x80] = data >> 24;
|
||||
}
|
||||
|
||||
WRITE32_MEMBER(vamphalf_nvram_state::finalgdr_prize_w)
|
||||
void vamphalf_nvram_state::finalgdr_prize_w(u32 data)
|
||||
{
|
||||
if(data & 0x1000000)
|
||||
if (data & 0x1000000)
|
||||
{
|
||||
// prize 1
|
||||
}
|
||||
|
||||
if(data & 0x2000000)
|
||||
if (data & 0x2000000)
|
||||
{
|
||||
// prize 2
|
||||
}
|
||||
|
||||
if(data & 0x4000000)
|
||||
if (data & 0x4000000)
|
||||
{
|
||||
// prize 3
|
||||
}
|
||||
}
|
||||
|
||||
WRITE32_MEMBER(vamphalf_state::aoh_oki_bank_w)
|
||||
void vamphalf_state::aoh_oki_bank_w(u32 data)
|
||||
{
|
||||
m_okibank->set_entry(data & 0x3);
|
||||
}
|
||||
|
||||
WRITE16_MEMBER(vamphalf_state::boonggab_oki_bank_w)
|
||||
void vamphalf_state::boonggab_oki_bank_w(offs_t offset, u16 data)
|
||||
{
|
||||
if(offset)
|
||||
if (offset)
|
||||
m_okibank->set_entry(data & 0x7);
|
||||
}
|
||||
|
||||
|
||||
WRITE16_MEMBER(vamphalf_state::mrkicker_oki_bank_w)
|
||||
void vamphalf_state::mrkicker_oki_bank_w(u16 data)
|
||||
{
|
||||
m_okibank->set_entry(data & 0x3);
|
||||
}
|
||||
|
||||
WRITE16_MEMBER(vamphalf_state::boonggab_prize_w)
|
||||
void vamphalf_state::boonggab_prize_w(offs_t offset, u16 data)
|
||||
{
|
||||
if(offset)
|
||||
if (offset)
|
||||
{
|
||||
// data & 0x01 == motor 1 on
|
||||
// data & 0x02 == motor 2 on
|
||||
@ -467,9 +468,9 @@ WRITE16_MEMBER(vamphalf_state::boonggab_prize_w)
|
||||
}
|
||||
}
|
||||
|
||||
WRITE16_MEMBER(vamphalf_state::boonggab_lamps_w)
|
||||
void vamphalf_state::boonggab_lamps_w(offs_t offset, u16 data)
|
||||
{
|
||||
if(offset == 1)
|
||||
if (offset == 1)
|
||||
{
|
||||
// data & 0x0001 == lamp 7 on (why is data & 0x8000 set too?)
|
||||
// data & 0x0002 == lamp 8 on
|
||||
@ -479,7 +480,7 @@ WRITE16_MEMBER(vamphalf_state::boonggab_lamps_w)
|
||||
// data & 0x0020 == lamp 12 on
|
||||
// data & 0x0040 == lamp 13 on
|
||||
}
|
||||
else if(offset == 3)
|
||||
else if (offset == 3)
|
||||
{
|
||||
// data & 0x0100 == lamp 0 on
|
||||
// data & 0x0200 == lamp 1 on
|
||||
@ -492,7 +493,7 @@ WRITE16_MEMBER(vamphalf_state::boonggab_lamps_w)
|
||||
}
|
||||
|
||||
|
||||
WRITE8_MEMBER( vamphalf_state::qs1000_p3_w )
|
||||
void vamphalf_state::qs1000_p3_w(u8 data)
|
||||
{
|
||||
if (!BIT(data, 5))
|
||||
m_soundlatch->acknowledge_w();
|
||||
@ -512,7 +513,7 @@ void vamphalf_state::common_map(address_map &map)
|
||||
void vamphalf_state::common_32bit_map(address_map &map)
|
||||
{
|
||||
map(0x00000000, 0x001fffff).ram().share("wram32");
|
||||
map(0x40000000, 0x4003ffff).ram().share("tiles32");
|
||||
map(0x40000000, 0x4003ffff).rw(FUNC(vamphalf_state::vram_r), FUNC(vamphalf_state::vram_w)).share("tiles");
|
||||
map(0x80000000, 0x8000ffff).ram().w(m_palette, FUNC(palette_device::write32)).share("palette");
|
||||
map(0xfff00000, 0xffffffff).rom().region("maincpu", 0);
|
||||
}
|
||||
@ -520,7 +521,7 @@ void vamphalf_state::common_32bit_map(address_map &map)
|
||||
void vamphalf_qdsp_state::yorijori_32bit_map(address_map &map)
|
||||
{
|
||||
map(0x00000000, 0x001fffff).ram().share("wram32");
|
||||
map(0x40000000, 0x4003ffff).ram().share("tiles32");
|
||||
map(0x40000000, 0x4003ffff).rw(FUNC(vamphalf_state::vram_r), FUNC(vamphalf_state::vram_w)).share("tiles");
|
||||
map(0x80000000, 0x8000ffff).ram().w(m_palette, FUNC(palette_device::write32)).share("palette");
|
||||
map(0xffe00000, 0xffffffff).rom().region("maincpu", 0);
|
||||
}
|
||||
@ -603,7 +604,7 @@ void vamphalf_nvram_state::finalgdr_io(address_map &map)
|
||||
map(0x6000, 0x6003).nopr(); //?
|
||||
map(0x6000, 0x6003).w(FUNC(vamphalf_nvram_state::finalgdr_eeprom_w));
|
||||
map(0x6040, 0x6043).w(FUNC(vamphalf_nvram_state::finalgdr_prot_w));
|
||||
//AM_RANGE(0x6080, 0x6083) AM_WRITE(flipscreen32_w) //?
|
||||
//map(0x6080, 0x6083).w(FUNC(vamphalf_nvram_state::flipscreen32_w)); //?
|
||||
map(0x6060, 0x6063).w(FUNC(vamphalf_nvram_state::finalgdr_prize_w));
|
||||
map(0x60a0, 0x60a3).w(FUNC(vamphalf_nvram_state::finalgdr_oki_bank_w));
|
||||
}
|
||||
@ -664,7 +665,7 @@ void vamphalf_state::mrdig_io(address_map &map)
|
||||
void vamphalf_state::aoh_map(address_map &map)
|
||||
{
|
||||
map(0x00000000, 0x003fffff).ram().share("wram32");
|
||||
map(0x40000000, 0x4003ffff).ram().share("tiles32");
|
||||
map(0x40000000, 0x4003ffff).rw(FUNC(vamphalf_state::vram_r), FUNC(vamphalf_state::vram_w)).share("tiles");
|
||||
map(0x80000000, 0x8000ffff).ram().w(m_palette, FUNC(palette_device::write32)).share("palette");
|
||||
map(0x80210000, 0x80210003).portr("SYSTEM");
|
||||
map(0x80220000, 0x80220003).portr("P1_P2");
|
||||
@ -733,78 +734,53 @@ void vamphalf_state::video_start()
|
||||
save_item(NAME(m_flipscreen));
|
||||
}
|
||||
|
||||
void vamphalf_state::draw_sprites(screen_device &screen, bitmap_ind16 &bitmap)
|
||||
void vamphalf_state::draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||
{
|
||||
gfx_element *gfx = m_gfxdecode->gfx(0);
|
||||
uint32_t cnt;
|
||||
int block, offs;
|
||||
int code,color,x,y,fx,fy;
|
||||
rectangle clip;
|
||||
rectangle clip = cliprect;
|
||||
int block;
|
||||
|
||||
clip.min_x = screen.visible_area().min_x;
|
||||
clip.max_x = screen.visible_area().max_x;
|
||||
|
||||
for (block=0; block<0x8000; block+=0x800)
|
||||
for (int y = (cliprect.min_y & ~15); y <= (cliprect.max_y | 15); y += 16)
|
||||
{
|
||||
if(m_flipscreen)
|
||||
clip.min_y = y;
|
||||
clip.max_y = y + 15;
|
||||
if (m_flipscreen)
|
||||
{
|
||||
clip.min_y = 256 - (16-(block/0x800))*16;
|
||||
clip.max_y = 256 - ((16-(block/0x800))*16)+15;
|
||||
block = (y / 16) * 0x800;
|
||||
}
|
||||
else
|
||||
{
|
||||
clip.min_y = (16-(block/0x800))*16;
|
||||
clip.max_y = ((16-(block/0x800))*16)+15;
|
||||
block = (16 - (y / 16)) * 0x800;
|
||||
}
|
||||
|
||||
if (clip.min_y < screen.visible_area().min_y)
|
||||
clip.min_y = screen.visible_area().min_y;
|
||||
if (clip.min_y < cliprect.min_y)
|
||||
clip.min_y = cliprect.min_y;
|
||||
|
||||
if (clip.max_y > screen.visible_area().max_y)
|
||||
clip.max_y = screen.visible_area().max_y;
|
||||
if (clip.max_y > cliprect.max_y)
|
||||
clip.max_y = cliprect.max_y;
|
||||
|
||||
for (cnt=0; cnt<0x800; cnt+=8)
|
||||
for (u32 cnt = 0; cnt < 0x800; cnt += 8)
|
||||
{
|
||||
offs = (block + cnt) / 2;
|
||||
const int offs = (block + cnt) / 2;
|
||||
|
||||
// 16bit version
|
||||
if(m_tiles != nullptr)
|
||||
if (m_tiles[offs] & 0x0100) continue;
|
||||
|
||||
u32 code = m_tiles[offs+1];
|
||||
const u32 color = (m_tiles[offs+2] >> m_palshift) & 0x7f;
|
||||
|
||||
// boonggab
|
||||
if (m_has_extra_gfx)
|
||||
{
|
||||
if(m_tiles[offs] & 0x0100) continue;
|
||||
|
||||
code = m_tiles[offs+1];
|
||||
color = (m_tiles[offs+2] >> m_palshift) & 0x7f;
|
||||
|
||||
// boonggab
|
||||
if(m_has_extra_gfx)
|
||||
{
|
||||
code |= ((m_tiles[offs+2] & 0x100) << 8);
|
||||
}
|
||||
|
||||
x = m_tiles[offs+3] & 0x01ff;
|
||||
y = 256 - (m_tiles[offs] & 0x00ff);
|
||||
|
||||
fx = m_tiles[offs] & 0x8000;
|
||||
fy = m_tiles[offs] & 0x4000;
|
||||
}
|
||||
// 32bit version
|
||||
else
|
||||
{
|
||||
offs /= 2;
|
||||
|
||||
if(m_tiles32[offs] & 0x01000000) continue;
|
||||
|
||||
code = m_tiles32[offs] & 0xffff;
|
||||
color = ((m_tiles32[offs+1] >> m_palshift) & 0x7f0000) >> 16;
|
||||
|
||||
x = m_tiles32[offs+1] & 0x01ff;
|
||||
y = 256 - ((m_tiles32[offs] & 0x00ff0000) >> 16);
|
||||
|
||||
fx = m_tiles32[offs] & 0x80000000;
|
||||
fy = m_tiles32[offs] & 0x40000000;
|
||||
code |= ((m_tiles[offs+2] & 0x100) << 8);
|
||||
}
|
||||
|
||||
if(m_flipscreen)
|
||||
int x = m_tiles[offs+3] & 0x01ff;
|
||||
int y = 256 - (m_tiles[offs] & 0x00ff);
|
||||
|
||||
int fx = m_tiles[offs] & 0x8000;
|
||||
int fy = m_tiles[offs] & 0x4000;
|
||||
|
||||
if (m_flipscreen)
|
||||
{
|
||||
fx = !fx;
|
||||
fy = !fy;
|
||||
@ -818,53 +794,65 @@ void vamphalf_state::draw_sprites(screen_device &screen, bitmap_ind16 &bitmap)
|
||||
}
|
||||
}
|
||||
|
||||
void vamphalf_state::draw_sprites_aoh(screen_device &screen, bitmap_ind16 &bitmap)
|
||||
/*
|
||||
Sprite list:
|
||||
|
||||
Offset+0
|
||||
-------- xxxxxxxx Y offs
|
||||
------xx -------- Sprite number hi bits
|
||||
-----x-- -------- Flip X
|
||||
----x--- -------- Flip Y?
|
||||
|
||||
Offset+1
|
||||
xxxxxxxx xxxxxxxx Sprite number
|
||||
|
||||
Offset+2
|
||||
-------- -xxxxxxx Color
|
||||
or
|
||||
-xxxxxxx -------- Color
|
||||
|
||||
Offset+3
|
||||
-------x xxxxxxxx X offs
|
||||
*/
|
||||
|
||||
void vamphalf_state::draw_sprites_aoh(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||
{
|
||||
gfx_element *gfx = m_gfxdecode->gfx(0);
|
||||
uint32_t cnt;
|
||||
int block, offs;
|
||||
int code,color,x,y,fx,fy;
|
||||
rectangle clip;
|
||||
rectangle clip = cliprect;
|
||||
int block;
|
||||
|
||||
clip.min_x = screen.visible_area().min_x;
|
||||
clip.max_x = screen.visible_area().max_x;
|
||||
|
||||
for (block=0; block<0x8000; block+=0x800)
|
||||
for (int y = (cliprect.min_y & ~15); y <= (cliprect.max_y | 15); y += 16)
|
||||
{
|
||||
if(m_flipscreen)
|
||||
clip.min_y = y;
|
||||
clip.max_y = y + 15;
|
||||
if (m_flipscreen)
|
||||
{
|
||||
clip.min_y = 256 - (16-(block/0x800))*16;
|
||||
clip.max_y = 256 - ((16-(block/0x800))*16)+15;
|
||||
block = (y / 16) * 0x800;
|
||||
}
|
||||
else
|
||||
{
|
||||
clip.min_y = (16-(block/0x800))*16;
|
||||
clip.max_y = ((16-(block/0x800))*16)+15;
|
||||
block = (16 - (y / 16)) * 0x800;
|
||||
}
|
||||
|
||||
if (clip.min_y < screen.visible_area().min_y)
|
||||
clip.min_y = screen.visible_area().min_y;
|
||||
if (clip.min_y < cliprect.min_y)
|
||||
clip.min_y = cliprect.min_y;
|
||||
|
||||
if (clip.max_y > screen.visible_area().max_y)
|
||||
clip.max_y = screen.visible_area().max_y;
|
||||
if (clip.max_y > cliprect.max_y)
|
||||
clip.max_y = cliprect.max_y;
|
||||
|
||||
|
||||
for (cnt=0; cnt<0x800; cnt+=8)
|
||||
for (u32 cnt = 0; cnt < 0x800; cnt += 8)
|
||||
{
|
||||
offs = (block + cnt) / 2;
|
||||
{
|
||||
offs /= 2;
|
||||
code = (m_tiles32[offs] & 0xffff) | ((m_tiles32[offs] & 0x3000000) >> 8);
|
||||
color = ((m_tiles32[offs+1] >> m_palshift) & 0x7f0000) >> 16;
|
||||
const int offs = (block + cnt) / 2;
|
||||
const u32 code = (m_tiles[offs+1] & 0xffff) | ((m_tiles[offs] & 0x300) << 8);
|
||||
const u32 color = (m_tiles[offs+2] >> m_palshift) & 0x7f;
|
||||
|
||||
x = m_tiles32[offs+1] & 0x01ff;
|
||||
y = 256 - ((m_tiles32[offs] & 0x00ff0000) >> 16);
|
||||
int x = m_tiles[offs+3] & 0x01ff;
|
||||
int y = 256 - (m_tiles[offs] & 0x00ff);
|
||||
|
||||
fx = m_tiles32[offs] & 0x4000000;
|
||||
fy = 0; // not used ? or it's m_tiles32[offs] & 0x8000000?
|
||||
}
|
||||
int fx = m_tiles[offs] & 0x400;
|
||||
int fy = 0; // not used ? or it's m_tiles[offs] & 0x800?
|
||||
|
||||
if(m_flipscreen)
|
||||
if (m_flipscreen)
|
||||
{
|
||||
fx = !fx;
|
||||
fy = !fy;
|
||||
@ -879,44 +867,44 @@ void vamphalf_state::draw_sprites_aoh(screen_device &screen, bitmap_ind16 &bitma
|
||||
}
|
||||
|
||||
|
||||
void vamphalf_state::handle_flipped_visible_area( screen_device &screen )
|
||||
void vamphalf_state::handle_flipped_visible_area(screen_device &screen)
|
||||
{
|
||||
// are there actually registers to handle this?
|
||||
if(!m_flipscreen)
|
||||
if (!m_flipscreen)
|
||||
{
|
||||
rectangle visarea;
|
||||
visarea.set(31, 350, 16, 251);
|
||||
screen.configure(512, 256, visarea, HZ_TO_ATTOSECONDS(60));
|
||||
screen.configure(screen.width(), screen.height(), visarea, screen.refresh_attoseconds());
|
||||
}
|
||||
else
|
||||
{
|
||||
rectangle visarea;
|
||||
visarea.set(31, 350, 20, 255);
|
||||
screen.configure(512, 256, visarea, HZ_TO_ATTOSECONDS(60));
|
||||
screen.configure(screen.width(), screen.height(), visarea, screen.refresh_attoseconds());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
uint32_t vamphalf_state::screen_update_common(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||
u32 vamphalf_state::screen_update_common(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||
{
|
||||
handle_flipped_visible_area(screen);
|
||||
bitmap.fill(0, cliprect);
|
||||
draw_sprites(screen, bitmap);
|
||||
draw_sprites(screen, bitmap, cliprect);
|
||||
return 0;
|
||||
}
|
||||
|
||||
uint32_t vamphalf_state::screen_update_aoh(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||
u32 vamphalf_state::screen_update_aoh(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||
{
|
||||
// handle_flipped_visible_area(screen); // not on this?
|
||||
bitmap.fill(0, cliprect);
|
||||
draw_sprites_aoh(screen, bitmap);
|
||||
draw_sprites_aoh(screen, bitmap, cliprect);
|
||||
return 0;
|
||||
}
|
||||
|
||||
CUSTOM_INPUT_MEMBER(vamphalf_state::boonggab_photo_sensors_r)
|
||||
{
|
||||
static const uint16_t photo_sensors_table[8] = { 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00 };
|
||||
uint8_t res = m_photosensors->read();
|
||||
static const u16 photo_sensors_table[8] = { 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00 };
|
||||
u8 res = m_photosensors->read();
|
||||
|
||||
switch(res)
|
||||
{
|
||||
@ -1009,13 +997,13 @@ INPUT_PORTS_END
|
||||
|
||||
static INPUT_PORTS_START( aoh )
|
||||
PORT_START("P1_P2")
|
||||
PORT_BIT( 0x000000001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(2)
|
||||
PORT_BIT( 0x000000002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(2)
|
||||
PORT_BIT( 0x000000004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(2)
|
||||
PORT_BIT( 0x000000008, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2)
|
||||
PORT_BIT( 0x000000010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
|
||||
PORT_BIT( 0x000000020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
|
||||
PORT_BIT( 0x000000040, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2)
|
||||
PORT_BIT( 0x00000001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(2)
|
||||
PORT_BIT( 0x00000002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(2)
|
||||
PORT_BIT( 0x00000004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(2)
|
||||
PORT_BIT( 0x00000008, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2)
|
||||
PORT_BIT( 0x00000010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
|
||||
PORT_BIT( 0x00000020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
|
||||
PORT_BIT( 0x00000040, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2)
|
||||
PORT_BIT( 0x00000080, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(2)
|
||||
PORT_BIT( 0x0000ff00, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x00010000, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(1)
|
||||
@ -1087,19 +1075,8 @@ static INPUT_PORTS_START( boonggab )
|
||||
PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_BUTTON7 ) PORT_PLAYER(1)
|
||||
INPUT_PORTS_END
|
||||
|
||||
static const gfx_layout sprites_layout =
|
||||
{
|
||||
16,16,
|
||||
RGN_FRAC(1,1),
|
||||
8,
|
||||
{ STEP8(0,1) },
|
||||
{ STEP16(0,8) },
|
||||
{ STEP16(0,8*16) },
|
||||
16*16*8,
|
||||
};
|
||||
|
||||
static GFXDECODE_START( gfx_vamphalf )
|
||||
GFXDECODE_ENTRY( "gfx", 0, sprites_layout, 0, 0x80 )
|
||||
GFXDECODE_ENTRY( "gfx", 0, gfx_16x16x8_raw, 0, 0x80 )
|
||||
GFXDECODE_END
|
||||
|
||||
void vamphalf_state::common(machine_config &config)
|
||||
@ -1115,6 +1092,7 @@ void vamphalf_state::common(machine_config &config)
|
||||
|
||||
/* video hardware */
|
||||
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
|
||||
// 28MHz
|
||||
screen.set_refresh_hz(59);
|
||||
screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
|
||||
screen.set_size(512, 256);
|
||||
@ -1214,6 +1192,7 @@ void vamphalf_state::suplup(machine_config &config)
|
||||
common(config);
|
||||
m_maincpu->set_addrmap(AS_IO, &vamphalf_state::suplup_io);
|
||||
|
||||
// 14.31818MHz instead 28MHz
|
||||
sound_suplup(config);
|
||||
}
|
||||
|
||||
@ -1293,7 +1272,7 @@ void vamphalf_nvram_state::mrkickera(machine_config &config)
|
||||
|
||||
void vamphalf_state::aoh(machine_config &config)
|
||||
{
|
||||
E132XN(config, m_maincpu, XTAL(20'000'000)*4); /* 4x internal multiplier */
|
||||
E132XN(config, m_maincpu, XTAL(20'000'000) * 4); /* 4x internal multiplier */
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &vamphalf_state::aoh_map);
|
||||
m_maincpu->set_addrmap(AS_IO, &vamphalf_state::aoh_io);
|
||||
m_maincpu->set_vblank_int("screen", FUNC(vamphalf_state::irq1_line_hold));
|
||||
@ -1302,6 +1281,7 @@ void vamphalf_state::aoh(machine_config &config)
|
||||
|
||||
/* video hardware */
|
||||
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
|
||||
// 32MHz
|
||||
screen.set_refresh_hz(59.185);
|
||||
screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
|
||||
screen.set_size(512, 512);
|
||||
@ -1344,6 +1324,7 @@ void vamphalf_qdsp_state::yorijori(machine_config &config)
|
||||
m_maincpu->set_addrmap(AS_IO, &vamphalf_qdsp_state::yorijori_io);
|
||||
m_maincpu->set_vblank_int("screen", FUNC(vamphalf_state::irq1_line_hold));
|
||||
|
||||
// 27MHz instead 28MHz
|
||||
sound_qs1000(config);
|
||||
}
|
||||
|
||||
@ -2885,22 +2866,22 @@ ROM_START( boonggab )
|
||||
ROM_LOAD( "4.vrom2", 0x80000, 0x80000, CRC(305c2b16) SHA1(fa199c4cd4ebb952d934e3863fca8740eeba9294) )
|
||||
ROM_END
|
||||
|
||||
int vamphalf_state::irq_active()
|
||||
bool vamphalf_state::irq_active()
|
||||
{
|
||||
uint32_t FCR = m_maincpu->state_int(E132XS_FCR);
|
||||
if( !(FCR&(1<<29)) ) // int 2 (irq 4)
|
||||
return 1;
|
||||
const u32 FCR = m_maincpu->state_int(E132XS_FCR);
|
||||
if (!(FCR & (1 << 29))) // int 2 (irq 4)
|
||||
return true;
|
||||
else
|
||||
return 0;
|
||||
return false;
|
||||
}
|
||||
|
||||
void vamphalf_state::banked_oki(int chip)
|
||||
{
|
||||
assert((m_okiregion[chip].found()) && (m_okibank.found()));
|
||||
uint8_t *ROM = m_okiregion[chip]->base();
|
||||
uint32_t size = m_okiregion[chip]->bytes();
|
||||
u8 *ROM = m_okiregion[chip]->base();
|
||||
const u32 size = m_okiregion[chip]->bytes();
|
||||
if (size > 0x40000)
|
||||
m_okibank->configure_entries(0, size/0x20000, &ROM[0], 0x20000);
|
||||
m_okibank->configure_entries(0, size / 0x20000, &ROM[0], 0x20000);
|
||||
else
|
||||
m_okibank->set_base(&ROM[0x20000]);
|
||||
}
|
||||
@ -3268,9 +3249,9 @@ READ16_MEMBER(vamphalf_state::toyland_speedup_r)
|
||||
|
||||
READ16_MEMBER(vamphalf_state::boonggab_speedup_r)
|
||||
{
|
||||
if(m_maincpu->pc() == 0x131a6)
|
||||
if (m_maincpu->pc() == 0x131a6)
|
||||
{
|
||||
if(irq_active())
|
||||
if (irq_active())
|
||||
m_maincpu->spin_until_interrupt();
|
||||
else
|
||||
m_maincpu->eat_cycles(50);
|
||||
@ -3312,7 +3293,7 @@ void vamphalf_qdsp_state::init_misncrft()
|
||||
|
||||
// Configure the QS1000 ROM banking. Care must be taken not to overlap the 256b internal RAM
|
||||
m_qdsp_cpu->space(AS_IO).install_read_bank(0x0100, 0xffff, "data");
|
||||
membank("qs1000:data")->configure_entries(0, 16, memregion("qs1000:cpu")->base()+0x100, 0x8000-0x100);
|
||||
membank("qs1000:data")->configure_entries(0, 16, memregion("qs1000:cpu")->base() + 0x100, 0x8000-0x100);
|
||||
}
|
||||
|
||||
void vamphalf_state::init_coolmini()
|
||||
@ -3395,7 +3376,7 @@ void vamphalf_qdsp_state::init_wyvernwg()
|
||||
|
||||
// Configure the QS1000 ROM banking. Care must be taken not to overlap the 256b internal RAM
|
||||
m_qdsp_cpu->space(AS_IO).install_read_bank(0x0100, 0xffff, "data");
|
||||
membank("qs1000:data")->configure_entries(0, 16, memregion("qs1000:cpu")->base()+0x100, 0x8000-0x100);
|
||||
membank("qs1000:data")->configure_entries(0, 16, memregion("qs1000:cpu")->base() + 0x100, 0x8000-0x100);
|
||||
|
||||
save_item(NAME(m_semicom_prot_idx));
|
||||
save_item(NAME(m_semicom_prot_which));
|
||||
@ -3412,21 +3393,21 @@ void vamphalf_qdsp_state::init_yorijori()
|
||||
m_semicom_prot_data[0] = 2;
|
||||
m_semicom_prot_data[1] = 1;
|
||||
|
||||
// uint8_t *romx = (uint8_t *)memregion("maincpu")->base();
|
||||
// u8 *romx = (u8 *)memregion("maincpu")->base();
|
||||
// prevent code dying after a trap 33 by patching it out, why?
|
||||
// romx[BYTE4_XOR_BE(0x8ff0)] = 3;
|
||||
// romx[BYTE4_XOR_BE(0x8ff1)] = 0;
|
||||
|
||||
// Configure the QS1000 ROM banking. Care must be taken not to overlap the 256b internal RAM
|
||||
m_qdsp_cpu->space(AS_IO).install_read_bank(0x0100, 0xffff, "data");
|
||||
membank("qs1000:data")->configure_entries(0, 16, memregion("qs1000:cpu")->base()+0x100, 0x8000-0x100);
|
||||
membank("qs1000:data")->configure_entries(0, 16, memregion("qs1000:cpu")->base() + 0x100, 0x8000-0x100);
|
||||
}
|
||||
|
||||
void vamphalf_nvram_state::init_finalgdr()
|
||||
{
|
||||
banked_oki(0);
|
||||
m_finalgdr_backupram_bank = 1;
|
||||
m_finalgdr_backupram = std::make_unique<uint8_t[]>(0x80*0x100);
|
||||
m_finalgdr_backupram = std::make_unique<u8[]>(0x80*0x100);
|
||||
m_maincpu->space(AS_PROGRAM).install_read_handler(0x005e870, 0x005e873, read32_delegate(FUNC(vamphalf_nvram_state::finalgdr_speedup_r), this));
|
||||
m_nvram->set_base(m_finalgdr_backupram.get(), 0x80*0x100);
|
||||
|
||||
@ -3448,7 +3429,7 @@ void vamphalf_nvram_state::init_mrkickera()
|
||||
banked_oki(0);
|
||||
// backup ram isn't used
|
||||
m_finalgdr_backupram_bank = 1;
|
||||
m_finalgdr_backupram = std::make_unique<uint8_t[]>(0x80*0x100);
|
||||
m_finalgdr_backupram = std::make_unique<u8[]>(0x80*0x100);
|
||||
m_maincpu->space(AS_PROGRAM).install_read_handler(0x00701a0, 0x00701a3, read32_delegate(FUNC(vamphalf_nvram_state::mrkickera_speedup_r), this));
|
||||
m_nvram->set_base(m_finalgdr_backupram.get(), 0x80*0x100);
|
||||
|
||||
@ -3501,7 +3482,7 @@ void vamphalf_state::init_aoh()
|
||||
void vamphalf_state::init_jmpbreak()
|
||||
{
|
||||
m_maincpu->space(AS_PROGRAM).install_read_handler(0x00906f4, 0x00906f5, read16_delegate(FUNC(vamphalf_state::jmpbreak_speedup_r), this));
|
||||
m_maincpu->space(AS_PROGRAM).install_write_handler(0xe0000000, 0xe0000003, write16_delegate(FUNC(vamphalf_state::jmpbreak_flipscreen_w), this));
|
||||
m_maincpu->space(AS_PROGRAM).install_write_handler(0xe0000000, 0xe0000003, write16smo_delegate(FUNC(vamphalf_state::jmpbreak_flipscreen_w), this));
|
||||
|
||||
m_palshift = 0;
|
||||
}
|
||||
@ -3509,7 +3490,7 @@ void vamphalf_state::init_jmpbreak()
|
||||
void vamphalf_state::init_mrdig()
|
||||
{
|
||||
m_maincpu->space(AS_PROGRAM).install_read_handler(0x0e0768, 0x0e0769, read16_delegate(FUNC(vamphalf_state::mrdig_speedup_r), this));
|
||||
m_maincpu->space(AS_PROGRAM).install_write_handler(0xe0000000, 0xe0000003, write16_delegate(FUNC(vamphalf_state::jmpbreak_flipscreen_w), this));
|
||||
m_maincpu->space(AS_PROGRAM).install_write_handler(0xe0000000, 0xe0000003, write16smo_delegate(FUNC(vamphalf_state::jmpbreak_flipscreen_w), this));
|
||||
|
||||
m_palshift = 0;
|
||||
}
|
||||
@ -3517,7 +3498,7 @@ void vamphalf_state::init_mrdig()
|
||||
void vamphalf_state::init_poosho()
|
||||
{
|
||||
m_maincpu->space(AS_PROGRAM).install_read_handler(0x0c8b58, 0x0c8b59, read16_delegate(FUNC(vamphalf_state::poosho_speedup_r), this));
|
||||
m_maincpu->space(AS_PROGRAM).install_write_handler(0xe0000000, 0xe0000003, write16_delegate(FUNC(vamphalf_state::jmpbreak_flipscreen_w), this));
|
||||
m_maincpu->space(AS_PROGRAM).install_write_handler(0xe0000000, 0xe0000003, write16smo_delegate(FUNC(vamphalf_state::jmpbreak_flipscreen_w), this));
|
||||
|
||||
m_palshift = 0;
|
||||
}
|
||||
@ -3525,7 +3506,7 @@ void vamphalf_state::init_poosho()
|
||||
void vamphalf_state::init_newxpang()
|
||||
{
|
||||
m_maincpu->space(AS_PROGRAM).install_read_handler(0x061218, 0x061219, read16_delegate(FUNC(vamphalf_state::newxpang_speedup_r), this));
|
||||
m_maincpu->space(AS_PROGRAM).install_write_handler(0xe0000000, 0xe0000003, write16_delegate(FUNC(vamphalf_state::jmpbreak_flipscreen_w), this));
|
||||
m_maincpu->space(AS_PROGRAM).install_write_handler(0xe0000000, 0xe0000003, write16smo_delegate(FUNC(vamphalf_state::jmpbreak_flipscreen_w), this));
|
||||
|
||||
m_palshift = 0;
|
||||
}
|
||||
@ -3533,21 +3514,18 @@ void vamphalf_state::init_newxpang()
|
||||
void vamphalf_state::init_worldadv()
|
||||
{
|
||||
m_maincpu->space(AS_PROGRAM).install_read_handler(0x0c5e78, 0x0c5e79, read16_delegate(FUNC(vamphalf_state::worldadv_speedup_r), this));
|
||||
m_maincpu->space(AS_PROGRAM).install_write_handler(0xe0000000, 0xe0000003, write16_delegate(FUNC(vamphalf_state::jmpbreak_flipscreen_w), this));
|
||||
m_maincpu->space(AS_PROGRAM).install_write_handler(0xe0000000, 0xe0000003, write16smo_delegate(FUNC(vamphalf_state::jmpbreak_flipscreen_w), this));
|
||||
|
||||
m_palshift = 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
void vamphalf_state::init_boonggab()
|
||||
{
|
||||
banked_oki(0);
|
||||
m_maincpu->space(AS_PROGRAM).install_read_handler(0x000f1b74, 0x000f1b75, read16_delegate(FUNC(vamphalf_state::boonggab_speedup_r), this));
|
||||
|
||||
m_palshift = 0;
|
||||
m_has_extra_gfx = 1;
|
||||
m_has_extra_gfx = true;
|
||||
m_flip_bit = 1;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user