mirror of
https://github.com/holub/mame
synced 2025-04-29 11:30:28 +03:00
fcombat: make the choppers spin their blades
This commit is contained in:
parent
d0bfae953a
commit
36e0d17a47
@ -71,7 +71,6 @@ public:
|
|||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual void machine_start() override;
|
virtual void machine_start() override;
|
||||||
virtual void machine_reset() override;
|
|
||||||
virtual void video_start() override;
|
virtual void video_start() override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
@ -84,9 +83,10 @@ private:
|
|||||||
|
|
||||||
// video-related
|
// video-related
|
||||||
tilemap_t *m_bgmap = nullptr;
|
tilemap_t *m_bgmap = nullptr;
|
||||||
u8 m_cocktail_flip = 0U;
|
u8 m_cocktail_flip = 0;
|
||||||
u8 m_char_palette = 0U;
|
u8 m_char_palette = 0;
|
||||||
u8 m_char_bank = 0U;
|
u8 m_char_bank = 0;
|
||||||
|
u8 m_sprite_bank = 0;
|
||||||
|
|
||||||
// misc
|
// misc
|
||||||
u8 m_fcombat_sh = 0;
|
u8 m_fcombat_sh = 0;
|
||||||
@ -234,18 +234,19 @@ TILE_GET_INFO_MEMBER(fcombat_state::get_bg_tile_info)
|
|||||||
|
|
||||||
void fcombat_state::videoreg_w(u8 data)
|
void fcombat_state::videoreg_w(u8 data)
|
||||||
{
|
{
|
||||||
// bit 0 = flip screen and joystick input multiplexer
|
// bit 0: flip screen and joystick input multiplexer
|
||||||
m_cocktail_flip = data & 1;
|
m_cocktail_flip = data & 1;
|
||||||
|
|
||||||
// bits 1-2 char lookup table bank
|
// bits 1-2: char lookup table bank
|
||||||
m_char_palette = (data & 0x06) >> 1;
|
m_char_palette = (data & 0x06) >> 1;
|
||||||
|
|
||||||
// bits 3 char bank
|
// bit 3: char bank
|
||||||
m_char_bank = (data & 0x08) >> 3;
|
m_char_bank = (data & 0x08) >> 3;
|
||||||
|
|
||||||
// bits 4-5 unused
|
// bits 4-5: unused
|
||||||
|
|
||||||
// bits 6-7 ?
|
// bits 6-7: heli sprite block bank
|
||||||
|
m_sprite_bank = data >> 6 & 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -269,11 +270,20 @@ u32 fcombat_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, co
|
|||||||
int xflip = flags & 0x80;
|
int xflip = flags & 0x80;
|
||||||
int yflip = flags & 0x40;
|
int yflip = flags & 0x40;
|
||||||
const bool wide = flags & 0x08;
|
const bool wide = flags & 0x08;
|
||||||
int code2 = code;
|
|
||||||
|
|
||||||
const int color = ((flags >> 1) & 0x03) | ((code >> 5) & 0x04) | (code & 0x08) | (code >> 4 & 0x10);
|
const int color = ((flags >> 1) & 0x03) | ((code >> 5) & 0x04) | (code & 0x08) | (code >> 4 & 0x10);
|
||||||
gfx_element *gfx = m_gfxdecode->gfx(1);
|
gfx_element *gfx = m_gfxdecode->gfx(1);
|
||||||
|
|
||||||
|
if ((code & 0x108) == 0x108)
|
||||||
|
{
|
||||||
|
if (m_sprite_bank & 1)
|
||||||
|
code += 0x100;
|
||||||
|
if (m_sprite_bank & 2)
|
||||||
|
code ^= 0x08;
|
||||||
|
}
|
||||||
|
|
||||||
|
int code2 = code;
|
||||||
|
|
||||||
if (m_cocktail_flip)
|
if (m_cocktail_flip)
|
||||||
{
|
{
|
||||||
x = 64 * 8 - gfx->width() - x;
|
x = 64 * 8 - gfx->width() - x;
|
||||||
@ -550,23 +560,13 @@ void fcombat_state::machine_start()
|
|||||||
save_item(NAME(m_cocktail_flip));
|
save_item(NAME(m_cocktail_flip));
|
||||||
save_item(NAME(m_char_palette));
|
save_item(NAME(m_char_palette));
|
||||||
save_item(NAME(m_char_bank));
|
save_item(NAME(m_char_bank));
|
||||||
|
save_item(NAME(m_sprite_bank));
|
||||||
save_item(NAME(m_fcombat_sh));
|
save_item(NAME(m_fcombat_sh));
|
||||||
save_item(NAME(m_fcombat_sv));
|
save_item(NAME(m_fcombat_sv));
|
||||||
save_item(NAME(m_tx));
|
save_item(NAME(m_tx));
|
||||||
save_item(NAME(m_ty));
|
save_item(NAME(m_ty));
|
||||||
}
|
}
|
||||||
|
|
||||||
void fcombat_state::machine_reset()
|
|
||||||
{
|
|
||||||
m_cocktail_flip = 0;
|
|
||||||
m_char_palette = 0;
|
|
||||||
m_char_bank = 0;
|
|
||||||
m_fcombat_sh = 0;
|
|
||||||
m_fcombat_sv = 0;
|
|
||||||
m_tx = 0;
|
|
||||||
m_ty = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
void fcombat_state::fcombat(machine_config &config)
|
void fcombat_state::fcombat(machine_config &config)
|
||||||
{
|
{
|
||||||
// basic machine hardware
|
// basic machine hardware
|
||||||
|
Loading…
Reference in New Issue
Block a user