From 368dd13309521745921ca8b0b9ac8e2e4bc89bfa Mon Sep 17 00:00:00 2001 From: tudnai Date: Sat, 2 May 2020 22:04:22 -0700 Subject: [PATCH] - Fixed disk acceleration algorithm - Some tiny speed optimizations --- src/cpu/6502.c | 2 +- src/dev/disk/disk.c | 10 +++++----- src/dev/mem/mmio.h | 6 +++--- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/cpu/6502.c b/src/cpu/6502.c index 77487d8..9177aa6 100644 --- a/src/cpu/6502.c +++ b/src/cpu/6502.c @@ -35,7 +35,7 @@ unsigned long long int inst_cnt = 0; //const unsigned int fps = 30; const unsigned long long default_MHz_6502 = 1.023 * M; // 2 * M; // 4 * M; // 8 * M; // 16 * M; // 128 * M; // 256 * M; // 512 * M; -const unsigned long long startup_MHz_6502 = 25 * M; +const unsigned long long startup_MHz_6502 = 32 * M; unsigned long long MHz_6502 = default_MHz_6502; unsigned long long clk_6502_per_frm = startup_MHz_6502 / fps; unsigned long long clk_6502_per_frm_set = default_MHz_6502 / fps; diff --git a/src/dev/disk/disk.c b/src/dev/disk/disk.c index 869b93f..0bb19c9 100644 --- a/src/dev/disk/disk.c +++ b/src/dev/disk/disk.c @@ -17,9 +17,9 @@ disk_t disk = { 0, // clk_since_last_read }; -const int diskAccelerator_frames = 1; -int diskAccelerator_count = 10000; -int diskAccelerator_speed = 25; // less than actual CPU speed means no acceleration +const int diskAccelerator_frames = 2; +int diskAccelerator_count = 15; +int diskAccelerator_speed = 25 * M / fps; // less than actual CPU speed means no acceleration //const unsigned long long clk_6502_per_frm_diskAccelerator = 25 * M / fps; // disk acceleration bumps up CPU clock to 25 MHz //const unsigned long long clk_diskAcceleratorTimeout = 1000ULL; @@ -46,8 +46,8 @@ const int position_to_direction[8][8] = { void disk_accelerator_speedup() { - if ( diskAccelerator_speed > clk_6502_per_frm ) { - clk_6502_per_frm = diskAccelerator_speed * M / fps; // clk_6502_per_frm_diskAccelerator; + if ( diskAccelerator_speed >= clk_6502_per_frm ) { + clk_6502_per_frm = diskAccelerator_speed; // clk_6502_per_frm_diskAccelerator; diskAccelerator_count = diskAccelerator_frames; } } diff --git a/src/dev/mem/mmio.h b/src/dev/mem/mmio.h index 5ddce83..4f452c6 100644 --- a/src/dev/mem/mmio.h +++ b/src/dev/mem/mmio.h @@ -996,7 +996,7 @@ INLINE uint8_t addr_zp() { return fetch(); } INLINE uint8_t src_zp() { - return memread8(addr_zp()); + return memread8_low(addr_zp()); } INLINE uint8_t * dest_zp() { return WRLOMEM + addr_zp(); @@ -1059,7 +1059,7 @@ INLINE uint8_t addr_zp_X() { return fetch() + m6502.X; } INLINE uint8_t src_zp_X() { - return memread8(addr_zp_X()); + return memread8_low(addr_zp_X()); } INLINE uint8_t * dest_zp_X() { return WRLOMEM + addr_zp_X(); @@ -1075,7 +1075,7 @@ INLINE uint8_t addr_zp_Y() { return fetch() + m6502.Y; } INLINE uint8_t src_zp_Y() { - return memread8(addr_zp_Y()); + return memread8_low(addr_zp_Y()); } INLINE uint8_t * dest_zp_Y() { return WRLOMEM + addr_zp_Y();