From 24b79880d085c23e127ffcf851d6dd55455513f9 Mon Sep 17 00:00:00 2001 From: b1ackmai1er Date: Sun, 3 May 2020 23:05:08 +0800 Subject: [PATCH] Update ay38910.asm code optimizations --- Source/HBIOS/ay38910.asm | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/Source/HBIOS/ay38910.asm b/Source/HBIOS/ay38910.asm index 6e109b4e..624bb82f 100644 --- a/Source/HBIOS/ay38910.asm +++ b/Source/HBIOS/ay38910.asm @@ -58,7 +58,7 @@ AY_IDAT .EQU 0 ; NO INSTANCE DATA ASSOCIATED WITH THIS DEVICE ; ; DEVICE CAPABILITIES AND CONFIGURATION ; -SBCV2004 .EQU 0 ; USE SBC-V2-004 HALF CLOCK DIVIDER +SBCV2004 .EQU 0 ; USE SBC-V2-004 HALF CLOCK DIVIDER ; AY_TONECNT .EQU 3 ; COUNT NUMBER OF TONE CHANNELS AY_NOISECNT .EQU 1 ; COUNT NUMBER OF NOISE CHANNELS @@ -129,11 +129,13 @@ AY_INIT: ;====================================================================== ; AY_SETV: + PUSH BC LD B,AY_TONECNT ; NUMBER OF CHANNELS LD D,AY_R8AVOL ; BASE REGISTER FOR VOLUME AY_SV: CALL AY_WRTPSG ; CYCLING THROUGH ALL CHANNELS INC D DJNZ AY_SV + POP BC RET ; ;====================================================================== @@ -219,8 +221,9 @@ AY_NOTE: JR NC, AY_NOTE1 ; INCOMING HL DOES NOT MAP INTO AY3NOTETBL ; ADD HL, DE ; RESTORE HL - EX DE,HL - LD HL, AY3NOTETBL ; HL = AY3NOTETBL + HL +; EX DE,HL +; LD HL, AY3NOTETBL ; HL = AY3NOTETBL + HL + LD DE, AY3NOTETBL ; HL = AY3NOTETBL + HL ADD HL, DE ; LD A, (HL) ; RETRIEVE PERIOD COUNT FROM AY3NOTETBL @@ -288,11 +291,13 @@ AY_PLAY: AUDTRACE_CR ; INC HL ; NEXT BYTE - LD E,(HL) - SRL E ; MAP THE VOLUME - SRL E ; FROM 00-FF - SRL E ; TO 00-0F - SRL E + LD A,(HL) ; PENDING VOLUME + RRCA ; MAP THE VOLUME + RRCA ; FROM 00-FF + RRCA ; TO 00-0F + RRCA + AND $0F + LD E,A CALL AY_WRTPSG ; SET VOL (E) IN CHANNEL REG (D) ; POP DE ; RECALL CHANNEL