fixed ticks to delay timer conversion

This commit is contained in:
2025-03-14 01:21:12 -04:00
parent 3c30d2a04f
commit af39b2ab07
2 changed files with 5 additions and 4 deletions

View File

@@ -145,16 +145,16 @@ void Interpreter::tick() {
case 0xF000: // several unique instructions
switch(inst & 0xF0FF) {
case 0xF007: // FX07 - read timer register
mvReg[iRegDst] = (mvSpecialReg[SR_T1] + mcTicksPerSecond - 1) / mcTicksPerSecond;
mvReg[iRegDst] = (mvSpecialReg[SR_T1] * scTimerFreq + (mcTicksPerSecond - 1)) / mcTicksPerSecond;
break;
case 0xF015: // FX15 - set timer register
mvSpecialReg[SR_T1] = mcTicksPerSecond * mvReg[iRegDst];
mvSpecialReg[SR_T1] = (mcTicksPerSecond * mvReg[iRegDst]) / scTimerFreq;
break;
case 0xF018: // FX18 - set sound timer register
if(mvSpecialReg[SR_T1] == 0 && mvReg[iRegDst] != 0) {
if(mvSpecialReg[SR_T2] == 0 && mvReg[iRegDst] != 0) {
mrBuzzer.on();
}
mvSpecialReg[SR_T1] = mcTicksPerSecond * mvReg[iRegDst];
mvSpecialReg[SR_T2] = (mcTicksPerSecond * mvReg[iRegDst]) / scTimerFreq;
break;
case 0xF01E: // FX1E - add to I
mvSpecialReg[SR_I] += mvReg[iRegDst];