fcombat: make the choppers spin their blades

This commit is contained in:
hap 2022-10-16 15:04:22 +02:00
parent d0bfae953a
commit 36e0d17a47

View File

@ -71,7 +71,6 @@ public:
protected:
virtual void machine_start() override;
virtual void machine_reset() override;
virtual void video_start() override;
private:
@ -84,9 +83,10 @@ private:
// video-related
tilemap_t *m_bgmap = nullptr;
u8 m_cocktail_flip = 0U;
u8 m_char_palette = 0U;
u8 m_char_bank = 0U;
u8 m_cocktail_flip = 0;
u8 m_char_palette = 0;
u8 m_char_bank = 0;
u8 m_sprite_bank = 0;
// misc
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)
{
// bit 0 = flip screen and joystick input multiplexer
// bit 0: flip screen and joystick input multiplexer
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;
// bits 3 char bank
// bit 3: char bank
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 yflip = flags & 0x40;
const bool wide = flags & 0x08;
int code2 = code;
const int color = ((flags >> 1) & 0x03) | ((code >> 5) & 0x04) | (code & 0x08) | (code >> 4 & 0x10);
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)
{
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_char_palette));
save_item(NAME(m_char_bank));
save_item(NAME(m_sprite_bank));
save_item(NAME(m_fcombat_sh));
save_item(NAME(m_fcombat_sv));
save_item(NAME(m_tx));
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)
{
// basic machine hardware