mirror of
https://github.com/holub/mame
synced 2025-10-06 09:00:04 +03:00
fm7: Eliminate first_screen; correct dynamic screen reconfiguration; use array finder (nw)
This commit is contained in:
parent
ccef347861
commit
8bfe21f53e
@ -1015,10 +1015,7 @@ READ8_MEMBER(fm7_state::fm7_mmr_r)
|
||||
|
||||
void fm7_state::fm7_update_bank(address_space & space, int bank, uint8_t physical)
|
||||
{
|
||||
address_map_bank_device* avbank[16] = { m_avbank1, m_avbank2, m_avbank3, m_avbank4, m_avbank5, m_avbank6, m_avbank7
|
||||
, m_avbank8, m_avbank9, m_avbank10, m_avbank11, m_avbank12, m_avbank13, m_avbank14, m_avbank15, m_avbank16 };
|
||||
|
||||
avbank[bank]->set_bank(physical);
|
||||
m_avbank[bank]->set_bank(physical);
|
||||
/* uint8_t* RAM = memregion("maincpu")->base();
|
||||
uint16_t size = 0xfff;
|
||||
char bank_name[10];
|
||||
@ -1152,7 +1149,7 @@ void fm7_state::fm7_mmr_refresh(address_space& space)
|
||||
}
|
||||
else
|
||||
{
|
||||
space.install_readwrite_handler(0x7000,0x7fff,read8_delegate(FUNC(address_map_bank_device::read8),(address_map_bank_device*)m_avbank8),write8_delegate(FUNC(address_map_bank_device::write8),(address_map_bank_device*)m_avbank8));
|
||||
space.install_readwrite_handler(0x7000,0x7fff,read8_delegate(FUNC(address_map_bank_device::read8),(address_map_bank_device*)m_avbank[7]),write8_delegate(FUNC(address_map_bank_device::write8),(address_map_bank_device*)m_avbank[7]));
|
||||
}
|
||||
if(m_init_rom_en)
|
||||
{
|
||||
@ -1964,7 +1961,7 @@ void fm7_state::machine_reset()
|
||||
m_subtimer->adjust(attotime::from_msec(20),0,attotime::from_msec(20));
|
||||
m_keyboard_timer->adjust(attotime::zero,0,attotime::from_msec(10));
|
||||
if(m_type == SYS_FM77AV || m_type == SYS_FM77AV40EX || m_type == SYS_FM11)
|
||||
m_fm77av_vsync_timer->adjust(machine().first_screen()->time_until_vblank_end());
|
||||
m_fm77av_vsync_timer->adjust(m_screen->time_until_vblank_end());
|
||||
|
||||
m_irq_mask = 0x00;
|
||||
m_irq_flags = 0x00;
|
||||
|
@ -133,6 +133,7 @@ public:
|
||||
m_beeper(*this, "beeper"),
|
||||
m_ym(*this, "ym"),
|
||||
m_psg(*this, "psg"),
|
||||
m_screen(*this, "screen"),
|
||||
m_centronics(*this, "centronics"),
|
||||
m_cent_data_out(*this, "cent_data_out"),
|
||||
m_fdc(*this, "fdc"),
|
||||
@ -143,29 +144,14 @@ public:
|
||||
m_rom_ptr(*this, "init"),
|
||||
m_basic_ptr(*this, "fbasic"),
|
||||
m_kanji(*this, "kanji1"),
|
||||
m_kb_ports(*this, {"key1", "key2", "key3"}),
|
||||
m_kb_ports(*this, "key%u", 1),
|
||||
m_keymod(*this, "key_modifiers"),
|
||||
m_joy1(*this, "joy1"),
|
||||
m_joy2(*this, "joy2"),
|
||||
m_dsw(*this, "DSW"),
|
||||
m_palette(*this, "palette"),
|
||||
m_av_palette(*this, "av_palette"),
|
||||
m_avbank1(*this, "av_bank1"),
|
||||
m_avbank2(*this, "av_bank2"),
|
||||
m_avbank3(*this, "av_bank3"),
|
||||
m_avbank4(*this, "av_bank4"),
|
||||
m_avbank5(*this, "av_bank5"),
|
||||
m_avbank6(*this, "av_bank6"),
|
||||
m_avbank7(*this, "av_bank7"),
|
||||
m_avbank8(*this, "av_bank8"),
|
||||
m_avbank9(*this, "av_bank9"),
|
||||
m_avbank10(*this, "av_bank10"),
|
||||
m_avbank11(*this, "av_bank11"),
|
||||
m_avbank12(*this, "av_bank12"),
|
||||
m_avbank13(*this, "av_bank13"),
|
||||
m_avbank14(*this, "av_bank14"),
|
||||
m_avbank15(*this, "av_bank15"),
|
||||
m_avbank16(*this, "av_bank16")
|
||||
m_avbank(*this, "av_bank%u", 1)
|
||||
{
|
||||
}
|
||||
DECLARE_DRIVER_INIT(fm7);
|
||||
@ -359,6 +345,7 @@ protected:
|
||||
required_device<beep_device> m_beeper;
|
||||
optional_device<ym2203_device> m_ym;
|
||||
optional_device<ay8910_device> m_psg;
|
||||
required_device<screen_device> m_screen;
|
||||
|
||||
required_device<centronics_device> m_centronics;
|
||||
required_device<output_latch_device> m_cent_data_out;
|
||||
@ -406,22 +393,7 @@ protected:
|
||||
required_device<palette_device> m_palette;
|
||||
optional_device<palette_device> m_av_palette;
|
||||
|
||||
optional_device<address_map_bank_device> m_avbank1;
|
||||
optional_device<address_map_bank_device> m_avbank2;
|
||||
optional_device<address_map_bank_device> m_avbank3;
|
||||
optional_device<address_map_bank_device> m_avbank4;
|
||||
optional_device<address_map_bank_device> m_avbank5;
|
||||
optional_device<address_map_bank_device> m_avbank6;
|
||||
optional_device<address_map_bank_device> m_avbank7;
|
||||
optional_device<address_map_bank_device> m_avbank8;
|
||||
optional_device<address_map_bank_device> m_avbank9;
|
||||
optional_device<address_map_bank_device> m_avbank10;
|
||||
optional_device<address_map_bank_device> m_avbank11;
|
||||
optional_device<address_map_bank_device> m_avbank12;
|
||||
optional_device<address_map_bank_device> m_avbank13;
|
||||
optional_device<address_map_bank_device> m_avbank14;
|
||||
optional_device<address_map_bank_device> m_avbank15;
|
||||
optional_device<address_map_bank_device> m_avbank16;
|
||||
optional_device_array<address_map_bank_device, 16> m_avbank;
|
||||
|
||||
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
|
||||
};
|
||||
|
@ -978,7 +978,7 @@ READ8_MEMBER(fm7_state::fm77av_video_flags_r)
|
||||
{
|
||||
uint8_t ret = 0xff;
|
||||
|
||||
if(machine().first_screen()->vblank())
|
||||
if(m_screen->vblank())
|
||||
ret &= ~0x80;
|
||||
|
||||
if(m_alu.busy != 0)
|
||||
@ -1019,7 +1019,7 @@ READ8_MEMBER(fm7_state::fm77av_sub_modestatus_r)
|
||||
ret |= 0xbc;
|
||||
ret |= (m_video.modestatus & 0x40);
|
||||
|
||||
if(!machine().first_screen()->vblank())
|
||||
if(!m_screen->vblank())
|
||||
ret |= 0x02;
|
||||
|
||||
if(m_video.vsync_flag != 0)
|
||||
@ -1034,12 +1034,12 @@ WRITE8_MEMBER(fm7_state::fm77av_sub_modestatus_w)
|
||||
if(data & 0x40)
|
||||
{
|
||||
rectangle rect(0, 320-1, 0, 200-1);
|
||||
machine().first_screen()->configure(320,200,rect,HZ_TO_ATTOSECONDS(60));
|
||||
m_screen->configure(512, 262, rect, m_screen->frame_period().as_attoseconds());
|
||||
}
|
||||
else
|
||||
{
|
||||
rectangle rect(0, 640-1, 0, 200-1);
|
||||
machine().first_screen()->configure(640,200,rect,HZ_TO_ATTOSECONDS(60));
|
||||
m_screen->configure(1024, 262, rect, m_screen->frame_period().as_attoseconds());
|
||||
}
|
||||
}
|
||||
|
||||
@ -1269,7 +1269,7 @@ TIMER_CALLBACK_MEMBER(fm7_state::fm77av_vsync)
|
||||
else
|
||||
{
|
||||
m_video.vsync_flag = 0;
|
||||
m_fm77av_vsync_timer->adjust(machine().first_screen()->time_until_vblank_end());
|
||||
m_fm77av_vsync_timer->adjust(m_screen->time_until_vblank_end());
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user