From 5c52c0dc7605ccdcd1765f08826ad824e7e02367 Mon Sep 17 00:00:00 2001 From: pagefault <> Date: Sat, 8 Sep 2001 00:03:13 +0000 Subject: [PATCH] Code optimisations --- zsnes/src/cpu/dspproc.asm | 12 ++++++++---- zsnes/src/cpu/execute.asm | 21 ++++++++++++++------- zsnes/src/cpu/memory.asm | 39 ++++++++++++++++++++++++++------------- zsnes/src/cpu/regs.inc | 3 ++- zsnes/src/cpu/regsw.inc | 3 ++- zsnes/src/cpu/stable.asm | 3 ++- zsnes/src/cpu/table.asm | 3 ++- zsnes/src/cpu/tableb.asm | 3 ++- zsnes/src/cpu/tablec.asm | 3 ++- 9 files changed, 60 insertions(+), 30 deletions(-) diff --git a/zsnes/src/cpu/dspproc.asm b/zsnes/src/cpu/dspproc.asm index be2f2a82..32af77f0 100644 --- a/zsnes/src/cpu/dspproc.asm +++ b/zsnes/src/cpu/dspproc.asm @@ -527,7 +527,8 @@ NEWSYM AdjustFrequency mov [ebx],ax add ebx,2 sub edx,2 - loop .intrploop + dec ecx + jnz .intrploop jmp .notgaussian .cubicspline ; Copy from CubicSpline to DSPInterP @@ -545,7 +546,8 @@ NEWSYM AdjustFrequency mov [edx],ax add ebx,2 add edx,2 - loop .intrploopb + dec ecx + jnz .intrploopb .notgaussian @@ -2117,7 +2119,8 @@ BRRDecode: mov word[edi],ax mov word[edi+2],ax add edi,4 - loop .nloop + dec ecx + jnz .nloop mov [NoisePtr],ebx pop ecx ret @@ -5674,7 +5677,8 @@ NEWSYM ProcessVoice816 mov [edi],ebx mov [edi+4],eax add edi,8 - loop .revstloop + dec ecx + jnz .revstloop .norevstereo cmp byte[LowPassFilterType],1 diff --git a/zsnes/src/cpu/execute.asm b/zsnes/src/cpu/execute.asm index 1132abd1..43a2126b 100644 --- a/zsnes/src/cpu/execute.asm +++ b/zsnes/src/cpu/execute.asm @@ -585,7 +585,8 @@ NEWSYM BackupCVFrame movq [ebx+8],mm1 add edx,16 add ebx,16 - loop .loop + dec ecx + jnz .loop .end pop eax @@ -679,7 +680,8 @@ NEWSYM RestoreCVFrame movq [edx+8],mm1 add edx,16 add ebx,16 - loop .loop + dec ecx + jnz .loop .end pop eax @@ -1040,7 +1042,8 @@ NEWSYM continueprog .loopa mov [esi],al inc esi - loop .loopa + dec ecx + jnz .loopa mov byte[romloadskip],0 mov byte[debuggeron],0 @@ -1071,7 +1074,8 @@ NEWSYM reexecute mov [esi],al .notclear inc esi - loop .loopa + dec ecx + jnz .loopa reexecutenokeys jmp reexecuteb2 @@ -1088,7 +1092,8 @@ NEWSYM reexecuteb mov [esi],al .notclear inc esi - loop .loopa + dec ecx + jnz .loopa %endif reexecuteb2: ; temporary sprite displayer @@ -3040,7 +3045,8 @@ NEWSYM cpuover mov al,[ebx+1] mov [ebx],al inc ebx - loop .chatsendloop + dec ecx + jnz .chatsendloop mov byte[chatstrL],0 mov dword[chatTL],10 mov dword[chatRTL],8*60 @@ -3619,7 +3625,8 @@ NEWSYM cpuover mov al,[esi] add bx,ax inc esi - loop .quitloop + dec ecx + jnz .quitloop mov [valuea],bx popad add [valuea],dh diff --git a/zsnes/src/cpu/memory.asm b/zsnes/src/cpu/memory.asm index a5245733..45a1318d 100644 --- a/zsnes/src/cpu/memory.asm +++ b/zsnes/src/cpu/memory.asm @@ -89,7 +89,8 @@ C4ProcessVectors: sub ah,80h add ax,bx inc esi - loop .spotloop + dec ecx + jnz .spotloop add edi,3 dec dx jnz .loop @@ -184,7 +185,8 @@ C4Edit: .next add ebx,4 dec byte[ebx+1] - loop .next + dec ecx + jnz .next popad .notmove cmp byte[pressed+21h],0 @@ -199,7 +201,8 @@ C4Edit: add byte[ebx],2 .noflipx dec byte[ebx] - loop .next2 + dec ecx + jnz .next2 popad .notmove2 cmp byte[pressed+22h],0 @@ -210,7 +213,8 @@ C4Edit: .next3 add ebx,4 inc byte[ebx+1] - loop .next3 + dec ecx + jnz .next3 popad .notmove3 cmp byte[pressed+23h],0 @@ -225,7 +229,8 @@ C4Edit: sub byte[ebx],2 .noflipx2 inc byte[ebx] - loop .next4 + dec ecx + jnz .next4 popad .notmove4 cmp byte[pressed+10h],0 @@ -239,7 +244,8 @@ C4Edit: mov [edx],al inc ebx inc edx - loop .copylp + dec ecx + jnz .copylp popad .notcopy cmp byte[pressed+11h],0 @@ -253,7 +259,8 @@ C4Edit: mov [ebx],al inc ebx inc edx - loop .pastelp + dec ecx + jnz .pastelp popad .notpaste @@ -594,7 +601,8 @@ C4ConvOAM: mov [esi],al inc edi inc esi - loop .next + dec ecx + jnz .next ret .addx dw 0 .addy dw 0 @@ -873,7 +881,8 @@ NEWSYM InitC4 .c4loopb mov dword[esi],0 add esi,4 - loop .c4loopb + dec ecx + jnz .c4loopb popad ret @@ -1438,7 +1447,8 @@ C4SprDisintegrate: .lp mov byte[edi],0 inc edi - loop .lp + dec ecx + jnz .lp mov esi,[C4Ram] add esi,2000h @@ -1828,7 +1838,8 @@ WireFrameB: .loop mov dword[esi],0 add esi,4 - loop .loop + dec ecx + jnz .loop call DrawWireFrame mov esi,[C4Ram] @@ -1893,7 +1904,8 @@ C4WireFrame: add ax,50h mov [esi+5],ax add esi,10h - loop .loop + dec ecx + jnz .loop ; Uses 6001,6005,6600,6602,6605 mov esi,[C4Ram] @@ -4876,7 +4888,8 @@ NEWSYM memaccessbankr8sdd1 cmp dword[edx],eax je .found2 add edx,12 - loop .loop + dec ecx + jnz .loop jmp .notfound .found2 mov eax,[edx+4] diff --git a/zsnes/src/cpu/regs.inc b/zsnes/src/cpu/regs.inc index 96343774..6f38d531 100644 --- a/zsnes/src/cpu/regs.inc +++ b/zsnes/src/cpu/regs.inc @@ -44,7 +44,8 @@ NEWSYM initregr .loopa mov [edi],eax add edi,4 - loop .loopa + dec ecx + jnz .loopa ; Set all valid register accesses setreg 2100h*4,reg2100r setreg 2134h*4,reg2134r diff --git a/zsnes/src/cpu/regsw.inc b/zsnes/src/cpu/regsw.inc index add4e9be..6e7e395a 100644 --- a/zsnes/src/cpu/regsw.inc +++ b/zsnes/src/cpu/regsw.inc @@ -50,7 +50,8 @@ NEWSYM initregw .loopa mov [edi],eax add edi,4 - loop .loopa + dec ecx + jnz .loopa ; Set all valid register accesses setregw 2100h*4,reg2100w setregw 2101h*4,reg2101w diff --git a/zsnes/src/cpu/stable.asm b/zsnes/src/cpu/stable.asm index 3acc23f2..e93bb133 100644 --- a/zsnes/src/cpu/stable.asm +++ b/zsnes/src/cpu/stable.asm @@ -105,7 +105,8 @@ NEWSYM SA1inittable mov eax,esi stosd pop eax - loop .loopa + dec ecx + jnz .loopa ; Set CPU addresses mov edi,SA1tableA diff --git a/zsnes/src/cpu/table.asm b/zsnes/src/cpu/table.asm index fa87f82d..585ca099 100644 --- a/zsnes/src/cpu/table.asm +++ b/zsnes/src/cpu/table.asm @@ -251,7 +251,8 @@ NEWSYM inittable mov eax,esi stosd pop eax - loop .loopa + dec ecx + jnz .loopa ; Set CPU addresses ; First, set all addresses to invalid diff --git a/zsnes/src/cpu/tableb.asm b/zsnes/src/cpu/tableb.asm index 07a6a2b5..148532e0 100644 --- a/zsnes/src/cpu/tableb.asm +++ b/zsnes/src/cpu/tableb.asm @@ -101,7 +101,8 @@ NEWSYM inittableb mov eax,esi stosd pop eax - loop .loopa + dec ecx + jnz .loopa ; Set CPU addresses ; First, set all addresses to invalid diff --git a/zsnes/src/cpu/tablec.asm b/zsnes/src/cpu/tablec.asm index 23547e1e..3863ba59 100644 --- a/zsnes/src/cpu/tablec.asm +++ b/zsnes/src/cpu/tablec.asm @@ -101,7 +101,8 @@ NEWSYM inittablec mov eax,esi stosd pop eax - loop .loopa + dec ecx + jnz .loopa ; Set CPU addresses ; First, set all addresses to invalid