mirror of
https://github.com/mauiaaron/apple2.git
synced 2024-12-25 09:29:48 +00:00
Lightly refactor max CPU speed checks
- Better naming of the pivot point (@4.0x CPU) - Use floating point values divisible by 2 as the constants
This commit is contained in:
parent
f53dbea81e
commit
dcb35226b7
@ -796,24 +796,18 @@ void c_interface_parameters()
|
|||||||
switch (i + cur_off)
|
switch (i + cur_off)
|
||||||
{
|
{
|
||||||
case OPT_CPU:
|
case OPT_CPU:
|
||||||
if (cpu_scale_factor >= CPU_SCALE_FASTEST)
|
if (cpu_scale_factor > CPU_SCALE_FASTEST_PIVOT) {
|
||||||
{
|
|
||||||
snprintf(temp, TEMPSIZE, "Fastest");
|
snprintf(temp, TEMPSIZE, "Fastest");
|
||||||
}
|
} else {
|
||||||
else
|
snprintf(temp, TEMPSIZE, "%d%%", (int)roundf((cpu_scale_factor * 100.0)));
|
||||||
{
|
|
||||||
snprintf(temp, TEMPSIZE, "%d%%", (int)(cpu_scale_factor * 100.0));
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case OPT_ALTCPU:
|
case OPT_ALTCPU:
|
||||||
if (cpu_altscale_factor >= CPU_SCALE_FASTEST)
|
if (cpu_altscale_factor > CPU_SCALE_FASTEST_PIVOT) {
|
||||||
{
|
|
||||||
snprintf(temp, TEMPSIZE, "Fastest");
|
snprintf(temp, TEMPSIZE, "Fastest");
|
||||||
}
|
} else {
|
||||||
else
|
snprintf(temp, TEMPSIZE, "%d%%", (int)roundf((cpu_altscale_factor * 100.0)));
|
||||||
{
|
|
||||||
snprintf(temp, TEMPSIZE, "%d%%", (int)(cpu_altscale_factor * 100.0));
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -966,19 +960,25 @@ void c_interface_parameters()
|
|||||||
switch (option)
|
switch (option)
|
||||||
{
|
{
|
||||||
case OPT_CPU:
|
case OPT_CPU:
|
||||||
cpu_scale_factor -= (cpu_scale_factor <= 1.0) ? CPU_SCALE_STEP_DIV : CPU_SCALE_STEP;
|
if (cpu_scale_factor > CPU_SCALE_FASTEST_PIVOT) {
|
||||||
if (cpu_scale_factor < CPU_SCALE_SLOWEST)
|
cpu_scale_factor = CPU_SCALE_FASTEST_PIVOT;
|
||||||
{
|
} else {
|
||||||
cpu_scale_factor = CPU_SCALE_SLOWEST;
|
cpu_scale_factor = roundf((cpu_scale_factor - ((cpu_scale_factor <= 1.0) ? CPU_SCALE_STEP_DIV : CPU_SCALE_STEP)) * 100.f) / 100.f;
|
||||||
|
if (cpu_scale_factor < CPU_SCALE_SLOWEST) {
|
||||||
|
cpu_scale_factor = CPU_SCALE_SLOWEST;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
prefs_setFloatValue(PREF_DOMAIN_VM, PREF_CPU_SCALE, roundf(cpu_scale_factor * 100.f));
|
prefs_setFloatValue(PREF_DOMAIN_VM, PREF_CPU_SCALE, roundf(cpu_scale_factor * 100.f));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case OPT_ALTCPU:
|
case OPT_ALTCPU:
|
||||||
cpu_altscale_factor -= (cpu_altscale_factor <= 1.0) ? CPU_SCALE_STEP_DIV : CPU_SCALE_STEP;
|
if (cpu_altscale_factor > CPU_SCALE_FASTEST_PIVOT) {
|
||||||
if (cpu_altscale_factor < CPU_SCALE_SLOWEST)
|
cpu_altscale_factor = CPU_SCALE_FASTEST_PIVOT;
|
||||||
{
|
} else {
|
||||||
cpu_altscale_factor = CPU_SCALE_SLOWEST;
|
cpu_altscale_factor = roundf((cpu_altscale_factor - ((cpu_altscale_factor <= 1.0) ? CPU_SCALE_STEP_DIV : CPU_SCALE_STEP)) * 100.f) / 100.f;
|
||||||
|
if (cpu_altscale_factor < CPU_SCALE_SLOWEST) {
|
||||||
|
cpu_altscale_factor = CPU_SCALE_SLOWEST;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
prefs_setFloatValue(PREF_DOMAIN_VM, PREF_CPU_SCALE_ALT, roundf(cpu_altscale_factor * 100.f));
|
prefs_setFloatValue(PREF_DOMAIN_VM, PREF_CPU_SCALE_ALT, roundf(cpu_altscale_factor * 100.f));
|
||||||
break;
|
break;
|
||||||
@ -1051,18 +1051,16 @@ void c_interface_parameters()
|
|||||||
switch (option)
|
switch (option)
|
||||||
{
|
{
|
||||||
case OPT_CPU:
|
case OPT_CPU:
|
||||||
cpu_scale_factor += (cpu_scale_factor < 1.0) ? CPU_SCALE_STEP_DIV : CPU_SCALE_STEP;
|
cpu_scale_factor = roundf((cpu_scale_factor + ((cpu_scale_factor < 1.0) ? CPU_SCALE_STEP_DIV : CPU_SCALE_STEP)) * 100.f) / 100.f;
|
||||||
if (cpu_scale_factor >= CPU_SCALE_FASTEST)
|
if (cpu_scale_factor > CPU_SCALE_FASTEST_PIVOT) {
|
||||||
{
|
|
||||||
cpu_scale_factor = CPU_SCALE_FASTEST;
|
cpu_scale_factor = CPU_SCALE_FASTEST;
|
||||||
}
|
}
|
||||||
prefs_setFloatValue(PREF_DOMAIN_VM, PREF_CPU_SCALE, roundf(cpu_scale_factor * 100.f));
|
prefs_setFloatValue(PREF_DOMAIN_VM, PREF_CPU_SCALE, roundf(cpu_scale_factor * 100.f));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case OPT_ALTCPU:
|
case OPT_ALTCPU:
|
||||||
cpu_altscale_factor += (cpu_altscale_factor < 1.0) ? CPU_SCALE_STEP_DIV : CPU_SCALE_STEP;
|
cpu_altscale_factor = roundf((cpu_altscale_factor + ((cpu_altscale_factor < 1.0) ? CPU_SCALE_STEP_DIV : CPU_SCALE_STEP)) * 100.f) / 100.f;
|
||||||
if (cpu_altscale_factor >= CPU_SCALE_FASTEST)
|
if (cpu_altscale_factor > CPU_SCALE_FASTEST_PIVOT) {
|
||||||
{
|
|
||||||
cpu_altscale_factor = CPU_SCALE_FASTEST;
|
cpu_altscale_factor = CPU_SCALE_FASTEST;
|
||||||
}
|
}
|
||||||
prefs_setFloatValue(PREF_DOMAIN_VM, PREF_CPU_SCALE_ALT, roundf(cpu_altscale_factor * 100.f));
|
prefs_setFloatValue(PREF_DOMAIN_VM, PREF_CPU_SCALE_ALT, roundf(cpu_altscale_factor * 100.f));
|
||||||
|
@ -261,8 +261,8 @@ void c_keys_handle_input(int scancode, int pressed, int is_cooked)
|
|||||||
|
|
||||||
double scale = (alt_speed_enabled ? cpu_altscale_factor : cpu_scale_factor);
|
double scale = (alt_speed_enabled ? cpu_altscale_factor : cpu_scale_factor);
|
||||||
int percent_scale = (int)round(scale * 100);
|
int percent_scale = (int)round(scale * 100);
|
||||||
if (scale == CPU_SCALE_FASTEST) {
|
if (scale > CPU_SCALE_FASTEST_PIVOT) {
|
||||||
scale = CPU_SCALE_FASTEST0;
|
scale = CPU_SCALE_FASTEST_PIVOT;
|
||||||
percent_scale = (int)round(scale * 100);
|
percent_scale = (int)round(scale * 100);
|
||||||
} else {
|
} else {
|
||||||
if (percent_scale > 100) {
|
if (percent_scale > 100) {
|
||||||
|
10
src/timing.c
10
src/timing.c
@ -132,7 +132,7 @@ struct timespec timespec_add(struct timespec start, unsigned long nsecs) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void _timing_initialize(double scale) {
|
static void _timing_initialize(double scale) {
|
||||||
is_fullspeed = (scale >= CPU_SCALE_FASTEST);
|
is_fullspeed = (scale > CPU_SCALE_FASTEST_PIVOT);
|
||||||
if (!is_fullspeed) {
|
if (!is_fullspeed) {
|
||||||
cycles_persec_target = CLK_6502 * scale;
|
cycles_persec_target = CLK_6502 * scale;
|
||||||
}
|
}
|
||||||
@ -249,7 +249,7 @@ bool cpu_isPaused(void) {
|
|||||||
#if !MOBILE_DEVICE
|
#if !MOBILE_DEVICE
|
||||||
bool timing_shouldAutoAdjustSpeed(void) {
|
bool timing_shouldAutoAdjustSpeed(void) {
|
||||||
double speed = alt_speed_enabled ? cpu_altscale_factor : cpu_scale_factor;
|
double speed = alt_speed_enabled ? cpu_altscale_factor : cpu_scale_factor;
|
||||||
return auto_adjust_speed && (speed < CPU_SCALE_FASTEST);
|
return auto_adjust_speed && (speed <= CPU_SCALE_FASTEST_PIVOT);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -505,7 +505,7 @@ static void *cpu_thread(void *dummyptr) {
|
|||||||
video_isDirty(A2_DIRTY_FLAG) || (disk6.motor_off && (disk_motor_time.tv_sec || disk_motor_time.tv_nsec > DISK_MOTOR_QUIET_NSECS))) )
|
video_isDirty(A2_DIRTY_FLAG) || (disk6.motor_off && (disk_motor_time.tv_sec || disk_motor_time.tv_nsec > DISK_MOTOR_QUIET_NSECS))) )
|
||||||
{
|
{
|
||||||
double speed = alt_speed_enabled ? cpu_altscale_factor : cpu_scale_factor;
|
double speed = alt_speed_enabled ? cpu_altscale_factor : cpu_scale_factor;
|
||||||
if (speed < CPU_SCALE_FASTEST) {
|
if (speed <= CPU_SCALE_FASTEST_PIVOT) {
|
||||||
TIMING_LOG("auto switching to configured speed");
|
TIMING_LOG("auto switching to configured speed");
|
||||||
_timing_initialize(speed);
|
_timing_initialize(speed);
|
||||||
}
|
}
|
||||||
@ -599,14 +599,14 @@ static void vm_prefsChanged(const char *domain) {
|
|||||||
if (cpu_scale_factor < CPU_SCALE_SLOWEST) {
|
if (cpu_scale_factor < CPU_SCALE_SLOWEST) {
|
||||||
cpu_scale_factor = CPU_SCALE_SLOWEST;
|
cpu_scale_factor = CPU_SCALE_SLOWEST;
|
||||||
}
|
}
|
||||||
if (cpu_scale_factor > CPU_SCALE_FASTEST) {
|
if (cpu_scale_factor > CPU_SCALE_FASTEST_PIVOT) {
|
||||||
cpu_scale_factor = CPU_SCALE_FASTEST;
|
cpu_scale_factor = CPU_SCALE_FASTEST;
|
||||||
}
|
}
|
||||||
cpu_altscale_factor = prefs_parseFloatValue(PREF_DOMAIN_VM, PREF_CPU_SCALE_ALT, &fVal) ? fVal / 100.f : 1.f;
|
cpu_altscale_factor = prefs_parseFloatValue(PREF_DOMAIN_VM, PREF_CPU_SCALE_ALT, &fVal) ? fVal / 100.f : 1.f;
|
||||||
if (cpu_altscale_factor < CPU_SCALE_SLOWEST) {
|
if (cpu_altscale_factor < CPU_SCALE_SLOWEST) {
|
||||||
cpu_altscale_factor = CPU_SCALE_SLOWEST;
|
cpu_altscale_factor = CPU_SCALE_SLOWEST;
|
||||||
}
|
}
|
||||||
if (cpu_altscale_factor > CPU_SCALE_FASTEST) {
|
if (cpu_altscale_factor > CPU_SCALE_FASTEST_PIVOT) {
|
||||||
cpu_altscale_factor = CPU_SCALE_FASTEST;
|
cpu_altscale_factor = CPU_SCALE_FASTEST;
|
||||||
}
|
}
|
||||||
#ifdef AUDIO_ENABLED
|
#ifdef AUDIO_ENABLED
|
||||||
|
@ -44,8 +44,8 @@
|
|||||||
#define CLK_6502_INT ((unsigned int)CLK_6502)
|
#define CLK_6502_INT ((unsigned int)CLK_6502)
|
||||||
|
|
||||||
#define CPU_SCALE_SLOWEST 0.25
|
#define CPU_SCALE_SLOWEST 0.25
|
||||||
#define CPU_SCALE_FASTEST0 4.0
|
#define CPU_SCALE_FASTEST_PIVOT 4.0
|
||||||
#define CPU_SCALE_FASTEST 4.05
|
#define CPU_SCALE_FASTEST (CPU_SCALE_FASTEST_PIVOT + 0.0625)
|
||||||
#ifdef INTERFACE_CLASSIC
|
#ifdef INTERFACE_CLASSIC
|
||||||
# define CPU_SCALE_STEP_DIV 0.01
|
# define CPU_SCALE_STEP_DIV 0.01
|
||||||
# define CPU_SCALE_STEP 0.05
|
# define CPU_SCALE_STEP 0.05
|
||||||
|
@ -286,7 +286,7 @@ static void _animation_showCPUSpeed(void) {
|
|||||||
cpuTemplate[0][1] = ' ';
|
cpuTemplate[0][1] = ' ';
|
||||||
cpuTemplate[0][2] = buf[0];
|
cpuTemplate[0][2] = buf[0];
|
||||||
cpuTemplate[0][3] = buf[1];
|
cpuTemplate[0][3] = buf[1];
|
||||||
} else if (scale >= CPU_SCALE_FASTEST) {
|
} else if (scale > CPU_SCALE_FASTEST_PIVOT) {
|
||||||
cpuTemplate[0][1] = 'm';
|
cpuTemplate[0][1] = 'm';
|
||||||
cpuTemplate[0][2] = 'a';
|
cpuTemplate[0][2] = 'a';
|
||||||
cpuTemplate[0][3] = 'x';
|
cpuTemplate[0][3] = 'x';
|
||||||
|
Loading…
Reference in New Issue
Block a user