Fix
This commit is contained in:
@@ -52,21 +52,21 @@ EXTSYM dmadata
|
||||
%macro restoredl 0
|
||||
mov dword[flagnz],0
|
||||
test dl,80h
|
||||
jz near %%noneg
|
||||
jz %%noneg
|
||||
or dword[flagnz],10000h
|
||||
%%noneg
|
||||
test dl,2h
|
||||
jnz near %%zero
|
||||
jnz %%zero
|
||||
or dword[flagnz],1
|
||||
%%zero
|
||||
mov dword[flagc],0
|
||||
test dl,01h
|
||||
jz near %%nocarry
|
||||
jz %%nocarry
|
||||
mov dword[flagc],0FFh
|
||||
%%nocarry
|
||||
mov dword[flago],0
|
||||
test dl,40h
|
||||
jz near %%nov
|
||||
jz %%nov
|
||||
mov dword[flago],0FFh
|
||||
%%nov
|
||||
%endmacro
|
||||
@@ -799,25 +799,21 @@ COPemulmode
|
||||
sub ebx,[initaddrl]
|
||||
add bx,2
|
||||
mov [xpc],bx
|
||||
|
||||
mov cx,[xs]
|
||||
mov al,[xpb]
|
||||
call membank0w8
|
||||
|
||||
dec cx
|
||||
or cx,word[stackor]
|
||||
mov al,[xpc+1]
|
||||
call membank0w8
|
||||
|
||||
dec cx
|
||||
or cx,word[stackor]
|
||||
mov al,[xpc]
|
||||
call membank0w8
|
||||
|
||||
dec cx
|
||||
or cx,word[stackor]
|
||||
|
||||
mov [xs],cx
|
||||
mov eax,[wramdata]
|
||||
mov bx,[xs]
|
||||
mov cl,[xpb]
|
||||
mov [eax+ebx],cl
|
||||
dec bx
|
||||
or bx,word[stackor]
|
||||
mov cl,[xpc+1]
|
||||
mov [eax+ebx],cl
|
||||
dec bx
|
||||
or bx,word[stackor]
|
||||
mov cl,[xpc]
|
||||
mov [eax+ebx],cl
|
||||
dec bx
|
||||
or bx,word[stackor]
|
||||
mov [xs],bx
|
||||
xor eax,eax
|
||||
xor bh,bh
|
||||
mov ax,[esi]
|
||||
@@ -842,25 +838,20 @@ COPemulmode
|
||||
sub ebx,[initaddrl]
|
||||
inc bx
|
||||
mov [xpc],bx
|
||||
|
||||
mov cx,[xs]
|
||||
mov al,[xpc+1]
|
||||
call membank0w8
|
||||
|
||||
dec cx
|
||||
or cx,word[stackor]
|
||||
mov al,[xpc]
|
||||
call membank0w8
|
||||
|
||||
dec cx
|
||||
or cx,word[stackor]
|
||||
|
||||
mov eax,[wramdata]
|
||||
mov bx,[xs]
|
||||
mov cl,[xpc+1]
|
||||
mov [eax+ebx],cl
|
||||
dec bx
|
||||
or bx,word[stackor]
|
||||
mov cl,[xpc]
|
||||
mov [eax+ebx],cl
|
||||
dec bx
|
||||
or bx,word[stackor]
|
||||
xor eax,eax
|
||||
mov [xs],cx
|
||||
|
||||
mov [xs],bx
|
||||
mov ax,[esi]
|
||||
xor bh,bh
|
||||
|
||||
mov [xpc],ax
|
||||
mov bl,[xpb]
|
||||
test eax,8000h
|
||||
@@ -894,23 +885,17 @@ COPemulmode
|
||||
sub ebx,[initaddrl]
|
||||
inc bx
|
||||
mov [xpc],bx
|
||||
|
||||
mov cx,[xs]
|
||||
mov al,[xpc+1]
|
||||
call membank0w8
|
||||
|
||||
dec cx
|
||||
or cx,word[stackor]
|
||||
mov al,[xpc]
|
||||
call membank0w8
|
||||
|
||||
dec cx
|
||||
or cx,word[stackor]
|
||||
|
||||
xor eax,eax
|
||||
mov [xs],cx
|
||||
|
||||
|
||||
mov eax,[wramdata]
|
||||
mov bx,[xs]
|
||||
mov cl,[xpc+1]
|
||||
mov [eax+ebx],cl
|
||||
dec bx
|
||||
or bx,word[stackor]
|
||||
mov cl,[xpc]
|
||||
mov [eax+ebx],cl
|
||||
dec bx
|
||||
or bx,word[stackor]
|
||||
mov [xs],bx
|
||||
xor eax,eax
|
||||
xor bh,bh
|
||||
mov cx,[esi]
|
||||
@@ -1228,21 +1213,21 @@ COPemulmode
|
||||
%endmacro
|
||||
|
||||
%macro POPMacroP 0
|
||||
mov cx,[xs]
|
||||
inc cx
|
||||
and cx,word[stackand]
|
||||
call membank0r8
|
||||
mov [xs],cx
|
||||
|
||||
mov eax,[wramdata]
|
||||
mov bx,[xs]
|
||||
inc bx
|
||||
and bx,word[stackand]
|
||||
mov cl,[eax+ebx]
|
||||
mov [xs],bx
|
||||
xor bh,bh
|
||||
mov dl,al
|
||||
mov dl,cl
|
||||
restoredl
|
||||
test byte[xe],01h
|
||||
jnz near .emul
|
||||
mov bl,dl
|
||||
mov edi,[tableadc+ebx*4]
|
||||
test dl,00010000b
|
||||
jnz near .setx
|
||||
jnz .setx
|
||||
endloop
|
||||
.setx
|
||||
mov byte[xx+1],0
|
||||
@@ -1319,55 +1304,41 @@ COPemulmode
|
||||
%endmacro
|
||||
|
||||
%macro RTIMacro 0
|
||||
mov byte[doirqnext],0
|
||||
cmp byte[nmistatus],3
|
||||
jne near .nodis658162
|
||||
jne .nodis658162
|
||||
test byte[curexecstate],01h
|
||||
jz near .nodis65816
|
||||
jz .nodis65816
|
||||
and byte[curexecstate],0FEh
|
||||
call changeexecloop
|
||||
.nodis65816
|
||||
cmp byte[curexecstate],0
|
||||
jne near .nn
|
||||
jne .nn
|
||||
xor dh,dh
|
||||
.nn
|
||||
.nodis658162
|
||||
mov byte[curnmi],0
|
||||
test byte[xe],1
|
||||
jne near emulRTI
|
||||
|
||||
mov cx,[xs]
|
||||
inc cx
|
||||
and cx,word[stackand]
|
||||
call membank0r8
|
||||
mov [xs],cx
|
||||
|
||||
mov dl,al
|
||||
mov eax,[wramdata]
|
||||
mov bx,[xs]
|
||||
inc bx
|
||||
and bx,word[stackand]
|
||||
mov dl,[eax+ebx]
|
||||
restoredl
|
||||
|
||||
mov cx,[xs]
|
||||
inc cx
|
||||
and cx,word[stackand]
|
||||
xor eax,eax
|
||||
call membank0r8
|
||||
mov [xpc],al
|
||||
|
||||
inc cx
|
||||
and cx,word[stackand]
|
||||
xor eax,eax
|
||||
call membank0r8
|
||||
mov [xpc+1],al
|
||||
|
||||
inc cx
|
||||
and cx,word[stackand]
|
||||
xor eax,eax
|
||||
call membank0r8
|
||||
inc bx
|
||||
and bx,word[stackand]
|
||||
mov cl,[eax+ebx]
|
||||
inc bx
|
||||
and bx,word[stackand]
|
||||
mov ch,[eax+ebx]
|
||||
inc bx
|
||||
and bx,word[stackand]
|
||||
mov al,[eax+ebx]
|
||||
mov [xpb],al
|
||||
mov [xs],cx
|
||||
|
||||
mov [xs],bx
|
||||
xor bh,bh
|
||||
xor eax,eax
|
||||
mov ax,[xpc]
|
||||
mov ax,cx
|
||||
mov bl,dl
|
||||
mov edi,[tableadc+ebx*4]
|
||||
mov bl,[xpb]
|
||||
@@ -1387,7 +1358,7 @@ COPemulmode
|
||||
mov [initaddrl],esi
|
||||
add esi,eax
|
||||
test dl,00010000b
|
||||
jnz near .setx
|
||||
jnz .setx
|
||||
endloop
|
||||
.setx
|
||||
mov byte[xx+1],0
|
||||
@@ -1410,40 +1381,29 @@ COPemulmode
|
||||
endloop
|
||||
|
||||
emulRTI
|
||||
mov cx,[xs]
|
||||
inc cx
|
||||
and cx,word[stackand]
|
||||
call membank0r8
|
||||
mov [xs],cx
|
||||
|
||||
mov dl,al
|
||||
mov eax,[wramdata]
|
||||
mov bx,[xs]
|
||||
inc bx
|
||||
and bx,word[stackand]
|
||||
mov dl,[eax+ebx]
|
||||
or dl,00110000b
|
||||
restoredl
|
||||
|
||||
mov cx,[xs]
|
||||
inc cx
|
||||
and cx,word[stackand]
|
||||
xor eax,eax
|
||||
call membank0r8
|
||||
mov [xpc],al
|
||||
|
||||
inc cx
|
||||
and cx,word[stackand]
|
||||
xor eax,eax
|
||||
call membank0r8
|
||||
mov [xpc+1],al
|
||||
mov [xs],cx
|
||||
|
||||
|
||||
inc bx
|
||||
and bx,word[stackand]
|
||||
mov cl,[eax+ebx]
|
||||
inc bx
|
||||
and bx,word[stackand]
|
||||
mov ch,[eax+ebx]
|
||||
mov [xs],bx
|
||||
xor bh,bh
|
||||
xor eax,eax
|
||||
mov ax,[xpc]
|
||||
mov ax,cx
|
||||
mov bl,dl
|
||||
mov edi,[tableadc+ebx*4]
|
||||
xor bl,bl
|
||||
mov [xpc],ax
|
||||
test eax,8000h
|
||||
jz near .loweraddr
|
||||
jz .loweraddr
|
||||
mov esi,[snesmmap+ebx*4]
|
||||
mov [initaddrl],esi
|
||||
add esi,eax
|
||||
@@ -1456,49 +1416,27 @@ emulRTI
|
||||
%endmacro
|
||||
|
||||
%macro RTLMacro 0
|
||||
|
||||
mov cx,[xs]
|
||||
inc cx
|
||||
and cx,word[stackand]
|
||||
xor eax,eax
|
||||
call membank0r8
|
||||
mov [xpc],al
|
||||
|
||||
inc cx
|
||||
and cx,word[stackand]
|
||||
xor eax,eax
|
||||
call membank0r8
|
||||
mov [xpc+1],al
|
||||
|
||||
inc cx
|
||||
and cx,word[stackand]
|
||||
xor eax,eax
|
||||
call membank0r8
|
||||
mov eax,[wramdata]
|
||||
mov bx,[xs]
|
||||
inc bx
|
||||
and bx,word[stackand]
|
||||
mov cl,[eax+ebx]
|
||||
inc bx
|
||||
and bx,word[stackand]
|
||||
mov ch,[eax+ebx]
|
||||
inc bx
|
||||
and bx,word[stackand]
|
||||
mov al,[eax+ebx]
|
||||
mov [xpb],al
|
||||
|
||||
; inc bx
|
||||
; and bx,word[stackand]
|
||||
; mov cl,[eax+ebx]
|
||||
|
||||
; inc bx
|
||||
; and bx,word[stackand]
|
||||
; mov ch,[eax+ebx]
|
||||
|
||||
; inc bx
|
||||
; and bx,word[stackand]
|
||||
; mov al,[eax+ebx]
|
||||
|
||||
; mov [xpb],al
|
||||
|
||||
mov [xs],cx
|
||||
mov [xs],bx
|
||||
xor bh,bh
|
||||
xor eax,eax
|
||||
mov ax,[xpc]
|
||||
mov ax,cx
|
||||
inc ax
|
||||
mov bl,[xpb]
|
||||
mov [xpc],ax
|
||||
test eax,8000h
|
||||
jz near .loweraddr
|
||||
jz .loweraddr
|
||||
mov esi,[snesmmap+ebx*4]
|
||||
mov [initaddrl],esi
|
||||
add esi,eax
|
||||
@@ -1511,27 +1449,23 @@ emulRTI
|
||||
%endmacro
|
||||
|
||||
%macro RTSMacro 0
|
||||
|
||||
mov cx,[xs]
|
||||
inc cx
|
||||
and cx,word[stackand]
|
||||
call membank0r8
|
||||
mov [xpc],al
|
||||
|
||||
inc cx
|
||||
and cx,word[stackand]
|
||||
call membank0r8
|
||||
mov [xpc+1],al
|
||||
|
||||
mov [xs],cx
|
||||
mov eax,[wramdata]
|
||||
mov bx,[xs]
|
||||
inc bx
|
||||
and bx,word[stackand]
|
||||
mov cl,[eax+ebx]
|
||||
inc bx
|
||||
and bx,word[stackand]
|
||||
mov ch,[eax+ebx]
|
||||
mov [xs],bx
|
||||
xor bh,bh
|
||||
xor eax,eax
|
||||
mov ax,[xpc]
|
||||
mov ax,cx
|
||||
inc ax
|
||||
mov [xpc],ax
|
||||
mov bl,[xpb]
|
||||
test eax,8000h
|
||||
jz near .loweraddr
|
||||
jz .loweraddr
|
||||
mov esi,[snesmmap+ebx*4]
|
||||
mov [initaddrl],esi
|
||||
add esi,eax
|
||||
|
||||
Reference in New Issue
Block a user