From 6dc12c44c50335b997b3edef44676b11a4714369 Mon Sep 17 00:00:00 2001 From: viciious Date: Fri, 25 Aug 2023 12:01:00 +0300 Subject: [PATCH] Update Z80 driver --- src-md/z80_vgm.s80 | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src-md/z80_vgm.s80 b/src-md/z80_vgm.s80 index 8d69e4452..cd0550bbf 100644 --- a/src-md/z80_vgm.s80 +++ b/src-md/z80_vgm.s80 @@ -184,8 +184,13 @@ waiting ; timer ticks ~= sample delay * 1.2 calc_timer LD HL,(LOCAL_MEM+FM_SMPL) - LD BC,HL #if ACCURATE + LD BC,54928 ; 65535 / 1.1953125 + OR A ; clear carry + SBC HL,BC + JR NC,overflow + ADD HL,BC + LD BC,HL SRL B RR C SRL B @@ -203,23 +208,22 @@ calc_timer SRL B RR C ; samples/128 ADD HL,BC - JR C,overflow POP BC ADD HL,BC - JR C,overflow POP BC ADD HL,BC ; ticks = samples * 1.1953125 + JR set_timer #else + LD BC,HL SRL B RR C SRL B RR C ; samples >> 2 ADD HL,BC ; ticks = samples * 1.25 -#endif JR NC,set_timer +#endif overflow - LD HL,$FFFF ; saturate to word ($FFFF) - + LD HL,$FFFF set_timer LD (LOCAL_MEM+FM_TICL),HL ; save total ticks LD (LOCAL_MEM+FM_TTTL),HL ; ticks for timer A = ticks