novag_const: darker button panel background,

fdelity clockdiv: remove dummy bg timer
This commit is contained in:
hap 2023-12-09 12:06:44 +01:00
parent 2a3d90ea7e
commit 83abe16d5b
3 changed files with 42 additions and 50 deletions

View File

@ -2,15 +2,10 @@
// copyright-holders:hap
/*******************************************************************************
Fidelity Electronics 6502 dynamic(offset-dependent) CPU clock divider base class.
Used to compensate slow memory chips in chess computer models: SC12, AS12, PC, EAS, EAG.
Fidelity Electronics 6502 dynamic CPU clock divider
TODO:
- improve clock divider? it seems a little bit slower than the real machine.
Currently, a dummy timer workaround is needed, or it's much worse (doing it with
a synchronize() will make it even worse).
Is the problem here due to timing of CPU addressbus changes? We can only 'sense'
the addressbus at read or write accesses.
Offset-dependent CPU clock divider base class. Used to compensate slow memory
chips in chess computer models: SC12, AS12, PC, EAS, EAG.
*******************************************************************************/
@ -18,15 +13,6 @@ TODO:
#include "clockdiv.h"
// machine start
void fidel_clockdiv_state::machine_start()
{
// dummy timer for cpu divider
m_div_timer = machine().scheduler().timer_alloc(timer_expired_delegate());
}
// input ports
INPUT_PORTS_START( fidel_clockdiv_2 )
@ -48,16 +34,24 @@ INPUT_PORTS_END
// implementation
void fidel_clockdiv_state::div_set_cpu_freq(offs_t offset)
void fidel_clockdiv_state::machine_start()
{
// set up trigger for breaking out of 6502 execution (not using synchronize())
m_div_timer = timer_alloc(FUNC(fidel_clockdiv_state::div_set_cpu_freq), this);
}
TIMER_CALLBACK_MEMBER(fidel_clockdiv_state::div_set_cpu_freq)
{
// when a13/a14 is high, XTAL goes through divider(s)
// (depending on factory-set jumper, either one or two 7474)
m_maincpu->set_clock_scale(param ? m_div_scale : 1.0);
m_div_status = param;
}
void fidel_clockdiv_state::div_prep_cpu_freq(offs_t offset)
{
if (offset != m_div_status)
{
// when a13/a14 is high, XTAL goes through divider(s)
// (depending on factory-set jumper, either one or two 7474)
m_maincpu->set_clock_scale(offset ? m_div_scale : 1.0);
m_div_status = offset;
}
m_div_timer->adjust(attotime::zero, offset);
}
void fidel_clockdiv_state::div_refresh(ioport_value val)
@ -76,10 +70,6 @@ void fidel_clockdiv_state::div_refresh(ioport_value val)
m_div_status = ~0;
m_div_scale = (val & 1) ? 0.25 : 0.5;
// stop high frequency background timer if cpu divider is disabled
attotime period = (val) ? attotime::from_hz(m_maincpu->clock()) : attotime::never;
m_div_timer->adjust(period, 0, period);
// set up memory passthroughs
m_read_tap.remove();
m_write_tap.remove();
@ -94,7 +84,7 @@ void fidel_clockdiv_state::div_refresh(ioport_value val)
[this] (offs_t offset, u8 &data, u8 mem_mask)
{
if (!machine().side_effects_disabled())
div_set_cpu_freq(offset & 0x6000);
div_prep_cpu_freq(offset & 0x6000);
},
&m_read_tap);
m_write_tap = program.install_write_tap(
@ -102,7 +92,7 @@ void fidel_clockdiv_state::div_refresh(ioport_value val)
"program_div_w",
[this] (offs_t offset, u8 &data, u8 mem_mask)
{
div_set_cpu_freq(offset & 0x6000);
div_prep_cpu_freq(offset & 0x6000);
},
&m_write_tap);
}

View File

@ -41,7 +41,8 @@ private:
double m_div_scale = 0;
emu_timer *m_div_timer = nullptr;
inline void div_set_cpu_freq(offs_t offset);
inline void div_prep_cpu_freq(offs_t offset);
TIMER_CALLBACK_MEMBER(div_set_cpu_freq);
};

View File

@ -65,25 +65,25 @@ license:CC0-1.0
<element name="text_p11"><image file="chess/br.svg"></image></element>
<element name="text_p12"><image file="chess/bp.svg"></image></element>
<element name="text_rb01a"><text string="Multi Move"><color red="0.83" green="0.82" blue="0.81" /></text></element>
<element name="text_rb01b"><text string="Player / Player"><color red="0.83" green="0.82" blue="0.81" /></text></element>
<element name="text_rb02a"><text string="Best Move"><color red="0.83" green="0.82" blue="0.81" /></text></element>
<element name="text_rb02b"><text string="Random"><color red="0.83" green="0.82" blue="0.81" /></text></element>
<element name="text_rb03"><text string="Sound"><color red="0.83" green="0.82" blue="0.81" /></text></element>
<element name="text_rb07"><text string="Set Level"><color red="0.83" green="0.82" blue="0.81" /></text></element>
<element name="text_rb08"><text string="Take Back"><color red="0.83" green="0.82" blue="0.81" /></text></element>
<element name="text_rb01a"><text string="Multi Move"><color red="0.81" green="0.8" blue="0.79" /></text></element>
<element name="text_rb01b"><text string="Player / Player"><color red="0.81" green="0.8" blue="0.79" /></text></element>
<element name="text_rb02a"><text string="Best Move"><color red="0.81" green="0.8" blue="0.79" /></text></element>
<element name="text_rb02b"><text string="Random"><color red="0.81" green="0.8" blue="0.79" /></text></element>
<element name="text_rb03"><text string="Sound"><color red="0.81" green="0.8" blue="0.79" /></text></element>
<element name="text_rb07"><text string="Set Level"><color red="0.81" green="0.8" blue="0.79" /></text></element>
<element name="text_rb08"><text string="Take Back"><color red="0.81" green="0.8" blue="0.79" /></text></element>
<element name="text_rb11"><text string="New Game"><color red="0.83" green="0.82" blue="0.81" /></text></element>
<element name="text_rb12a"><text string="Verify"><color red="0.83" green="0.82" blue="0.81" /></text></element>
<element name="text_rb12b"><text string="Set Up"><color red="0.83" green="0.82" blue="0.81" /></text></element>
<element name="text_rb13"><text string="Change Color"><color red="0.83" green="0.82" blue="0.81" /></text></element>
<element name="text_rb14"><text string="Clear Board"><color red="0.83" green="0.82" blue="0.81" /></text></element>
<element name="text_rb17a"><text string="Hint"><color red="0.83" green="0.82" blue="0.81" /></text></element>
<element name="text_rb17b"><text string="Show Moves"><color red="0.83" green="0.82" blue="0.81" /></text></element>
<element name="text_rb18"><text string="Go"><color red="0.83" green="0.82" blue="0.81" /></text></element>
<element name="text_rb11"><text string="New Game"><color red="0.81" green="0.8" blue="0.79" /></text></element>
<element name="text_rb12a"><text string="Verify"><color red="0.81" green="0.8" blue="0.79" /></text></element>
<element name="text_rb12b"><text string="Set Up"><color red="0.81" green="0.8" blue="0.79" /></text></element>
<element name="text_rb13"><text string="Change Color"><color red="0.81" green="0.8" blue="0.79" /></text></element>
<element name="text_rb14"><text string="Clear Board"><color red="0.81" green="0.8" blue="0.79" /></text></element>
<element name="text_rb17a"><text string="Hint"><color red="0.81" green="0.8" blue="0.79" /></text></element>
<element name="text_rb17b"><text string="Show Moves"><color red="0.81" green="0.8" blue="0.79" /></text></element>
<element name="text_rb18"><text string="Go"><color red="0.81" green="0.8" blue="0.79" /></text></element>
<element name="text_setup">
<rect><color red="0.5" green="0.37" blue="0.3" /></rect>
<rect><color red="0.35" green="0.26" blue="0.21" /></rect>
<text string="SET UP"><color red="0.83" green="0.82" blue="0.81" /></text>
</element>
@ -352,7 +352,8 @@ license:CC0-1.0
<view name="Internal Layout">
<bounds left="-12.5" right="114" top="-0.5" bottom="88.5" />
<element ref="cblack"><bounds x="3.5" y="2.5" width="102.5" height="81" /></element>
<element ref="cblack"><bounds x="3.5" y="2.5" width="90" height="81" /></element>
<element ref="brown"><bounds x="84.5" y="2.5" width="21.5" height="81" /></element>
<group ref="sb_board"><bounds x="4" y="3" width="80" height="80" /></group>
<element ref="cwhite"><bounds x="83.95" y="2.5" width="1" height="81" /></element>
@ -398,7 +399,7 @@ license:CC0-1.0
<!-- right side buttons -->
<element ref="cwhite"><bounds x="95.333" y="12.5" width="9.333" height="29" /></element>
<element ref="cblack"><bounds x="95.533" y="12.7" width="8.933" height="28.6" /></element>
<element ref="brown"><bounds x="95.533" y="12.7" width="8.933" height="28.6" /></element>
<element ref="text_setup"><bounds x="96.5" y="11.8" width="7" height="1.5" /></element>
<element ref="text_rb01a"><bounds x="86" y="4.2" width="10" height="1.5" /></element>