Game fixes
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -521,6 +521,7 @@ BRKemulmode
|
|||||||
%endmacro
|
%endmacro
|
||||||
|
|
||||||
%macro COPMacro 0
|
%macro COPMacro 0
|
||||||
|
int 3h
|
||||||
inc esi
|
inc esi
|
||||||
test byte[xe],1
|
test byte[xe],1
|
||||||
jne near COPemulmode
|
jne near COPemulmode
|
||||||
@@ -790,21 +791,25 @@ COPemulmode
|
|||||||
sub ebx,[initaddrl]
|
sub ebx,[initaddrl]
|
||||||
add bx,2
|
add bx,2
|
||||||
mov [xpc],bx
|
mov [xpc],bx
|
||||||
mov eax,[wramdata]
|
|
||||||
mov bx,[xs]
|
mov cx,[xs]
|
||||||
mov cl,[xpb]
|
mov al,[xpb]
|
||||||
mov [eax+ebx],cl
|
call membank0w8
|
||||||
dec bx
|
|
||||||
or bx,word[stackor]
|
dec cx
|
||||||
mov cl,[xpc+1]
|
or cx,word[stackor]
|
||||||
mov [eax+ebx],cl
|
mov al,[xpc+1]
|
||||||
dec bx
|
call membank0w8
|
||||||
or bx,word[stackor]
|
|
||||||
mov cl,[xpc]
|
dec cx
|
||||||
mov [eax+ebx],cl
|
or cx,word[stackor]
|
||||||
dec bx
|
mov al,[xpc]
|
||||||
or bx,word[stackor]
|
call membank0w8
|
||||||
mov [xs],bx
|
|
||||||
|
dec cx
|
||||||
|
or cx,word[stackor]
|
||||||
|
|
||||||
|
mov [xs],cx
|
||||||
xor eax,eax
|
xor eax,eax
|
||||||
xor bh,bh
|
xor bh,bh
|
||||||
mov ax,[esi]
|
mov ax,[esi]
|
||||||
@@ -829,20 +834,25 @@ COPemulmode
|
|||||||
sub ebx,[initaddrl]
|
sub ebx,[initaddrl]
|
||||||
inc bx
|
inc bx
|
||||||
mov [xpc],bx
|
mov [xpc],bx
|
||||||
mov eax,[wramdata]
|
|
||||||
mov bx,[xs]
|
mov cx,[xs]
|
||||||
mov cl,[xpc+1]
|
mov al,[xpc+1]
|
||||||
mov [eax+ebx],cl
|
call membank0w8
|
||||||
dec bx
|
|
||||||
or bx,word[stackor]
|
dec cx
|
||||||
mov cl,[xpc]
|
or cx,word[stackor]
|
||||||
mov [eax+ebx],cl
|
mov al,[xpc]
|
||||||
dec bx
|
call membank0w8
|
||||||
or bx,word[stackor]
|
|
||||||
|
dec cx
|
||||||
|
or cx,word[stackor]
|
||||||
|
|
||||||
xor eax,eax
|
xor eax,eax
|
||||||
mov [xs],bx
|
mov [xs],cx
|
||||||
|
|
||||||
mov ax,[esi]
|
mov ax,[esi]
|
||||||
xor bh,bh
|
xor bh,bh
|
||||||
|
|
||||||
mov [xpc],ax
|
mov [xpc],ax
|
||||||
mov bl,[xpb]
|
mov bl,[xpb]
|
||||||
test eax,8000h
|
test eax,8000h
|
||||||
@@ -876,17 +886,23 @@ COPemulmode
|
|||||||
sub ebx,[initaddrl]
|
sub ebx,[initaddrl]
|
||||||
inc bx
|
inc bx
|
||||||
mov [xpc],bx
|
mov [xpc],bx
|
||||||
mov eax,[wramdata]
|
|
||||||
mov bx,[xs]
|
mov cx,[xs]
|
||||||
mov cl,[xpc+1]
|
mov al,[xpc+1]
|
||||||
mov [eax+ebx],cl
|
call membank0w8
|
||||||
dec bx
|
|
||||||
or bx,word[stackor]
|
dec cx
|
||||||
mov cl,[xpc]
|
or cx,word[stackor]
|
||||||
mov [eax+ebx],cl
|
mov al,[xpc]
|
||||||
dec bx
|
call membank0w8
|
||||||
or bx,word[stackor]
|
|
||||||
mov [xs],bx
|
dec cx
|
||||||
|
or cx,word[stackor]
|
||||||
|
|
||||||
|
xor eax,eax
|
||||||
|
mov [xs],cx
|
||||||
|
|
||||||
|
|
||||||
xor eax,eax
|
xor eax,eax
|
||||||
xor bh,bh
|
xor bh,bh
|
||||||
mov cx,[esi]
|
mov cx,[esi]
|
||||||
@@ -1034,7 +1050,6 @@ COPemulmode
|
|||||||
%endmacro
|
%endmacro
|
||||||
|
|
||||||
%macro PUSHMacro8b 1
|
%macro PUSHMacro8b 1
|
||||||
mov eax,[wramdata]
|
|
||||||
mov cx,[xs]
|
mov cx,[xs]
|
||||||
mov al,%1
|
mov al,%1
|
||||||
call membank0w8
|
call membank0w8
|
||||||
@@ -1045,7 +1060,6 @@ COPemulmode
|
|||||||
%endmacro
|
%endmacro
|
||||||
|
|
||||||
%macro PUSHMacro8bp 0
|
%macro PUSHMacro8bp 0
|
||||||
mov eax,[wramdata]
|
|
||||||
makedl
|
makedl
|
||||||
mov cx,[xs]
|
mov cx,[xs]
|
||||||
mov al,dl
|
mov al,dl
|
||||||
@@ -1155,7 +1169,6 @@ COPemulmode
|
|||||||
%endmacro
|
%endmacro
|
||||||
|
|
||||||
%macro POPMacro8b 1
|
%macro POPMacro8b 1
|
||||||
mov eax,[wramdata]
|
|
||||||
mov cx,[xs]
|
mov cx,[xs]
|
||||||
inc cx
|
inc cx
|
||||||
and cx,word[stackand]
|
and cx,word[stackand]
|
||||||
@@ -1167,7 +1180,6 @@ COPemulmode
|
|||||||
%endmacro
|
%endmacro
|
||||||
|
|
||||||
%macro POPMacro16b 2
|
%macro POPMacro16b 2
|
||||||
mov eax,[wramdata]
|
|
||||||
mov cx,[xs]
|
mov cx,[xs]
|
||||||
inc cx
|
inc cx
|
||||||
and cx,word[stackand]
|
and cx,word[stackand]
|
||||||
@@ -1185,7 +1197,6 @@ COPemulmode
|
|||||||
%endmacro
|
%endmacro
|
||||||
|
|
||||||
%macro POPMacro16bd 2
|
%macro POPMacro16bd 2
|
||||||
mov eax,[wramdata]
|
|
||||||
mov cx,[xs]
|
mov cx,[xs]
|
||||||
inc cx
|
inc cx
|
||||||
and cx,word[stackand]
|
and cx,word[stackand]
|
||||||
@@ -1204,14 +1215,15 @@ COPemulmode
|
|||||||
%endmacro
|
%endmacro
|
||||||
|
|
||||||
%macro POPMacroP 0
|
%macro POPMacroP 0
|
||||||
mov eax,[wramdata]
|
|
||||||
mov bx,[xs]
|
mov cx,[xs]
|
||||||
inc bx
|
inc cx
|
||||||
and bx,word[stackand]
|
and cx,word[stackand]
|
||||||
mov cl,[eax+ebx]
|
call membank0r8
|
||||||
mov [xs],bx
|
mov [xs],cx
|
||||||
|
|
||||||
xor bh,bh
|
xor bh,bh
|
||||||
mov dl,cl
|
mov dl,al
|
||||||
restoredl
|
restoredl
|
||||||
test byte[xe],01h
|
test byte[xe],01h
|
||||||
jnz .emul
|
jnz .emul
|
||||||
@@ -1311,26 +1323,38 @@ COPemulmode
|
|||||||
mov byte[curnmi],0
|
mov byte[curnmi],0
|
||||||
test byte[xe],1
|
test byte[xe],1
|
||||||
jne near emulRTI
|
jne near emulRTI
|
||||||
mov eax,[wramdata]
|
|
||||||
mov bx,[xs]
|
mov cx,[xs]
|
||||||
inc bx
|
inc cx
|
||||||
and bx,word[stackand]
|
and cx,word[stackand]
|
||||||
mov dl,[eax+ebx]
|
call membank0r8
|
||||||
|
mov [xs],cx
|
||||||
|
mov dl,al
|
||||||
restoredl
|
restoredl
|
||||||
inc bx
|
|
||||||
and bx,word[stackand]
|
mov cx,[xs]
|
||||||
mov cl,[eax+ebx]
|
inc cx
|
||||||
inc bx
|
and cx,word[stackand]
|
||||||
and bx,word[stackand]
|
xor eax,eax
|
||||||
mov ch,[eax+ebx]
|
call membank0r8
|
||||||
inc bx
|
mov [xpc],al
|
||||||
and bx,word[stackand]
|
|
||||||
mov al,[eax+ebx]
|
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 [xpb],al
|
mov [xpb],al
|
||||||
mov [xs],bx
|
mov [xs],cx
|
||||||
|
|
||||||
xor bh,bh
|
xor bh,bh
|
||||||
xor eax,eax
|
xor eax,eax
|
||||||
mov ax,cx
|
mov ax,[xpc]
|
||||||
mov bl,dl
|
mov bl,dl
|
||||||
mov edi,[tablead+ebx*4]
|
mov edi,[tablead+ebx*4]
|
||||||
mov bl,[xpb]
|
mov bl,[xpb]
|
||||||
@@ -1373,23 +1397,34 @@ COPemulmode
|
|||||||
endloop
|
endloop
|
||||||
|
|
||||||
emulRTI
|
emulRTI
|
||||||
mov eax,[wramdata]
|
mov cx,[xs]
|
||||||
mov bx,[xs]
|
inc cx
|
||||||
inc bx
|
and cx,word[stackand]
|
||||||
and bx,word[stackand]
|
call membank0r8
|
||||||
mov dl,[eax+ebx]
|
mov [xs],cx
|
||||||
|
|
||||||
|
mov dl,al
|
||||||
or dl,00110000b
|
or dl,00110000b
|
||||||
restoredl
|
restoredl
|
||||||
inc bx
|
|
||||||
and bx,word[stackand]
|
mov cx,[xs]
|
||||||
mov cl,[eax+ebx]
|
inc cx
|
||||||
inc bx
|
and cx,word[stackand]
|
||||||
and bx,word[stackand]
|
xor eax,eax
|
||||||
mov ch,[eax+ebx]
|
call membank0r8
|
||||||
mov [xs],bx
|
mov [xpc],al
|
||||||
|
|
||||||
|
inc cx
|
||||||
|
and cx,word[stackand]
|
||||||
|
xor eax,eax
|
||||||
|
call membank0r8
|
||||||
|
mov [xpc+1],al
|
||||||
|
mov [xs],cx
|
||||||
|
|
||||||
|
|
||||||
xor bh,bh
|
xor bh,bh
|
||||||
xor eax,eax
|
xor eax,eax
|
||||||
mov ax,cx
|
mov ax,[xpc]
|
||||||
mov bl,dl
|
mov bl,dl
|
||||||
mov edi,[tablead+ebx*4]
|
mov edi,[tablead+ebx*4]
|
||||||
xor bl,bl
|
xor bl,bl
|
||||||
@@ -1408,22 +1443,43 @@ emulRTI
|
|||||||
%endmacro
|
%endmacro
|
||||||
|
|
||||||
%macro RTLMacro 0
|
%macro RTLMacro 0
|
||||||
mov eax,[wramdata]
|
mov cx,[xs]
|
||||||
mov bx,[xs]
|
inc cx
|
||||||
inc bx
|
and cx,word[stackand]
|
||||||
and bx,word[stackand]
|
xor eax,eax
|
||||||
mov cl,[eax+ebx]
|
call membank0r8
|
||||||
inc bx
|
mov [xpc],al
|
||||||
and bx,word[stackand]
|
|
||||||
mov ch,[eax+ebx]
|
inc cx
|
||||||
inc bx
|
and cx,word[stackand]
|
||||||
and bx,word[stackand]
|
xor eax,eax
|
||||||
mov al,[eax+ebx]
|
call membank0r8
|
||||||
|
mov [xpc+1],al
|
||||||
|
|
||||||
|
inc cx
|
||||||
|
and cx,word[stackand]
|
||||||
|
xor eax,eax
|
||||||
|
call membank0r8
|
||||||
mov [xpb],al
|
mov [xpb],al
|
||||||
mov [xs],bx
|
|
||||||
|
; 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
|
||||||
xor bh,bh
|
xor bh,bh
|
||||||
xor eax,eax
|
xor eax,eax
|
||||||
mov ax,cx
|
mov ax,[xpc]
|
||||||
inc ax
|
inc ax
|
||||||
mov bl,[xpb]
|
mov bl,[xpb]
|
||||||
mov [xpc],ax
|
mov [xpc],ax
|
||||||
@@ -1441,18 +1497,22 @@ emulRTI
|
|||||||
%endmacro
|
%endmacro
|
||||||
|
|
||||||
%macro RTSMacro 0
|
%macro RTSMacro 0
|
||||||
mov eax,[wramdata]
|
|
||||||
mov bx,[xs]
|
mov cx,[xs]
|
||||||
inc bx
|
inc cx
|
||||||
and bx,word[stackand]
|
and cx,word[stackand]
|
||||||
mov cl,[eax+ebx]
|
call membank0r8
|
||||||
inc bx
|
mov [xpc],al
|
||||||
and bx,word[stackand]
|
|
||||||
mov ch,[eax+ebx]
|
inc cx
|
||||||
mov [xs],bx
|
and cx,word[stackand]
|
||||||
|
call membank0r8
|
||||||
|
mov [xpc+1],al
|
||||||
|
|
||||||
|
mov [xs],cx
|
||||||
xor bh,bh
|
xor bh,bh
|
||||||
xor eax,eax
|
xor eax,eax
|
||||||
mov ax,cx
|
mov ax,[xpc]
|
||||||
inc ax
|
inc ax
|
||||||
mov [xpc],ax
|
mov [xpc],ax
|
||||||
mov bl,[xpb]
|
mov bl,[xpb]
|
||||||
|
|||||||
@@ -519,6 +519,7 @@ BRKemulmode
|
|||||||
%endmacro
|
%endmacro
|
||||||
|
|
||||||
%macro COPMacro 0
|
%macro COPMacro 0
|
||||||
|
int 3h
|
||||||
inc esi
|
inc esi
|
||||||
test byte[xe],1
|
test byte[xe],1
|
||||||
jne near COPemulmode
|
jne near COPemulmode
|
||||||
@@ -789,21 +790,25 @@ COPemulmode
|
|||||||
sub ebx,[initaddrl]
|
sub ebx,[initaddrl]
|
||||||
add bx,2
|
add bx,2
|
||||||
mov [xpc],bx
|
mov [xpc],bx
|
||||||
mov eax,[wramdata]
|
|
||||||
mov bx,[xs]
|
mov cx,[xs]
|
||||||
mov cl,[xpb]
|
mov al,[xpb]
|
||||||
mov [eax+ebx],cl
|
call membank0w8
|
||||||
dec bx
|
|
||||||
or bx,word[stackor]
|
dec cx
|
||||||
mov cl,[xpc+1]
|
or cx,word[stackor]
|
||||||
mov [eax+ebx],cl
|
mov al,[xpc+1]
|
||||||
dec bx
|
call membank0w8
|
||||||
or bx,word[stackor]
|
|
||||||
mov cl,[xpc]
|
dec cx
|
||||||
mov [eax+ebx],cl
|
or cx,word[stackor]
|
||||||
dec bx
|
mov al,[xpc]
|
||||||
or bx,word[stackor]
|
call membank0w8
|
||||||
mov [xs],bx
|
|
||||||
|
dec cx
|
||||||
|
or cx,word[stackor]
|
||||||
|
|
||||||
|
mov [xs],cx
|
||||||
xor eax,eax
|
xor eax,eax
|
||||||
xor bh,bh
|
xor bh,bh
|
||||||
mov ax,[esi]
|
mov ax,[esi]
|
||||||
@@ -828,20 +833,25 @@ COPemulmode
|
|||||||
sub ebx,[initaddrl]
|
sub ebx,[initaddrl]
|
||||||
inc bx
|
inc bx
|
||||||
mov [xpc],bx
|
mov [xpc],bx
|
||||||
mov eax,[wramdata]
|
|
||||||
mov bx,[xs]
|
mov cx,[xs]
|
||||||
mov cl,[xpc+1]
|
mov al,[xpc+1]
|
||||||
mov [eax+ebx],cl
|
call membank0w8
|
||||||
dec bx
|
|
||||||
or bx,word[stackor]
|
dec cx
|
||||||
mov cl,[xpc]
|
or cx,word[stackor]
|
||||||
mov [eax+ebx],cl
|
mov al,[xpc]
|
||||||
dec bx
|
call membank0w8
|
||||||
or bx,word[stackor]
|
|
||||||
|
dec cx
|
||||||
|
or cx,word[stackor]
|
||||||
|
|
||||||
xor eax,eax
|
xor eax,eax
|
||||||
mov [xs],bx
|
mov [xs],cx
|
||||||
|
|
||||||
mov ax,[esi]
|
mov ax,[esi]
|
||||||
xor bh,bh
|
xor bh,bh
|
||||||
|
|
||||||
mov [xpc],ax
|
mov [xpc],ax
|
||||||
mov bl,[xpb]
|
mov bl,[xpb]
|
||||||
test eax,8000h
|
test eax,8000h
|
||||||
@@ -875,17 +885,23 @@ COPemulmode
|
|||||||
sub ebx,[initaddrl]
|
sub ebx,[initaddrl]
|
||||||
inc bx
|
inc bx
|
||||||
mov [xpc],bx
|
mov [xpc],bx
|
||||||
mov eax,[wramdata]
|
|
||||||
mov bx,[xs]
|
mov cx,[xs]
|
||||||
mov cl,[xpc+1]
|
mov al,[xpc+1]
|
||||||
mov [eax+ebx],cl
|
call membank0w8
|
||||||
dec bx
|
|
||||||
or bx,word[stackor]
|
dec cx
|
||||||
mov cl,[xpc]
|
or cx,word[stackor]
|
||||||
mov [eax+ebx],cl
|
mov al,[xpc]
|
||||||
dec bx
|
call membank0w8
|
||||||
or bx,word[stackor]
|
|
||||||
mov [xs],bx
|
dec cx
|
||||||
|
or cx,word[stackor]
|
||||||
|
|
||||||
|
xor eax,eax
|
||||||
|
mov [xs],cx
|
||||||
|
|
||||||
|
|
||||||
xor eax,eax
|
xor eax,eax
|
||||||
xor bh,bh
|
xor bh,bh
|
||||||
mov cx,[esi]
|
mov cx,[esi]
|
||||||
@@ -1033,7 +1049,6 @@ COPemulmode
|
|||||||
%endmacro
|
%endmacro
|
||||||
|
|
||||||
%macro PUSHMacro8b 1
|
%macro PUSHMacro8b 1
|
||||||
mov eax,[wramdata]
|
|
||||||
mov cx,[xs]
|
mov cx,[xs]
|
||||||
mov al,%1
|
mov al,%1
|
||||||
call membank0w8
|
call membank0w8
|
||||||
@@ -1044,7 +1059,6 @@ COPemulmode
|
|||||||
%endmacro
|
%endmacro
|
||||||
|
|
||||||
%macro PUSHMacro8bp 0
|
%macro PUSHMacro8bp 0
|
||||||
mov eax,[wramdata]
|
|
||||||
makedl
|
makedl
|
||||||
mov cx,[xs]
|
mov cx,[xs]
|
||||||
mov al,dl
|
mov al,dl
|
||||||
@@ -1154,7 +1168,6 @@ COPemulmode
|
|||||||
%endmacro
|
%endmacro
|
||||||
|
|
||||||
%macro POPMacro8b 1
|
%macro POPMacro8b 1
|
||||||
mov eax,[wramdata]
|
|
||||||
mov cx,[xs]
|
mov cx,[xs]
|
||||||
inc cx
|
inc cx
|
||||||
and cx,word[stackand]
|
and cx,word[stackand]
|
||||||
@@ -1166,7 +1179,6 @@ COPemulmode
|
|||||||
%endmacro
|
%endmacro
|
||||||
|
|
||||||
%macro POPMacro16b 2
|
%macro POPMacro16b 2
|
||||||
mov eax,[wramdata]
|
|
||||||
mov cx,[xs]
|
mov cx,[xs]
|
||||||
inc cx
|
inc cx
|
||||||
and cx,word[stackand]
|
and cx,word[stackand]
|
||||||
@@ -1184,7 +1196,6 @@ COPemulmode
|
|||||||
%endmacro
|
%endmacro
|
||||||
|
|
||||||
%macro POPMacro16bd 2
|
%macro POPMacro16bd 2
|
||||||
mov eax,[wramdata]
|
|
||||||
mov cx,[xs]
|
mov cx,[xs]
|
||||||
inc cx
|
inc cx
|
||||||
and cx,word[stackand]
|
and cx,word[stackand]
|
||||||
@@ -1203,14 +1214,15 @@ COPemulmode
|
|||||||
%endmacro
|
%endmacro
|
||||||
|
|
||||||
%macro POPMacroP 0
|
%macro POPMacroP 0
|
||||||
mov eax,[wramdata]
|
|
||||||
mov bx,[xs]
|
mov cx,[xs]
|
||||||
inc bx
|
inc cx
|
||||||
and bx,word[stackand]
|
and cx,word[stackand]
|
||||||
mov cl,[eax+ebx]
|
call membank0r8
|
||||||
mov [xs],bx
|
mov [xs],cx
|
||||||
|
|
||||||
xor bh,bh
|
xor bh,bh
|
||||||
mov dl,cl
|
mov dl,al
|
||||||
restoredl
|
restoredl
|
||||||
test byte[xe],01h
|
test byte[xe],01h
|
||||||
jnz .emul
|
jnz .emul
|
||||||
@@ -1294,6 +1306,7 @@ COPemulmode
|
|||||||
%endmacro
|
%endmacro
|
||||||
|
|
||||||
%macro RTIMacro 0
|
%macro RTIMacro 0
|
||||||
|
mov byte[doirqnext],0
|
||||||
cmp byte[nmistatus],3
|
cmp byte[nmistatus],3
|
||||||
jne .nodis658162
|
jne .nodis658162
|
||||||
test byte[curexecstate],01h
|
test byte[curexecstate],01h
|
||||||
@@ -1309,26 +1322,39 @@ COPemulmode
|
|||||||
mov byte[curnmi],0
|
mov byte[curnmi],0
|
||||||
test byte[xe],1
|
test byte[xe],1
|
||||||
jne near emulRTI
|
jne near emulRTI
|
||||||
mov eax,[wramdata]
|
|
||||||
mov bx,[xs]
|
mov cx,[xs]
|
||||||
inc bx
|
inc cx
|
||||||
and bx,word[stackand]
|
and cx,word[stackand]
|
||||||
mov dl,[eax+ebx]
|
call membank0r8
|
||||||
|
mov [xs],cx
|
||||||
|
|
||||||
|
mov dl,al
|
||||||
restoredl
|
restoredl
|
||||||
inc bx
|
|
||||||
and bx,word[stackand]
|
mov cx,[xs]
|
||||||
mov cl,[eax+ebx]
|
inc cx
|
||||||
inc bx
|
and cx,word[stackand]
|
||||||
and bx,word[stackand]
|
xor eax,eax
|
||||||
mov ch,[eax+ebx]
|
call membank0r8
|
||||||
inc bx
|
mov [xpc],al
|
||||||
and bx,word[stackand]
|
|
||||||
mov al,[eax+ebx]
|
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 [xpb],al
|
mov [xpb],al
|
||||||
mov [xs],bx
|
mov [xs],cx
|
||||||
|
|
||||||
xor bh,bh
|
xor bh,bh
|
||||||
xor eax,eax
|
xor eax,eax
|
||||||
mov ax,cx
|
mov ax,[xpc]
|
||||||
mov bl,dl
|
mov bl,dl
|
||||||
mov edi,[tableadb+ebx*4]
|
mov edi,[tableadb+ebx*4]
|
||||||
mov bl,[xpb]
|
mov bl,[xpb]
|
||||||
@@ -1371,23 +1397,34 @@ COPemulmode
|
|||||||
endloop
|
endloop
|
||||||
|
|
||||||
emulRTI
|
emulRTI
|
||||||
mov eax,[wramdata]
|
mov cx,[xs]
|
||||||
mov bx,[xs]
|
inc cx
|
||||||
inc bx
|
and cx,word[stackand]
|
||||||
and bx,word[stackand]
|
call membank0r8
|
||||||
mov dl,[eax+ebx]
|
mov [xs],cx
|
||||||
|
|
||||||
|
mov dl,al
|
||||||
or dl,00110000b
|
or dl,00110000b
|
||||||
restoredl
|
restoredl
|
||||||
inc bx
|
|
||||||
and bx,word[stackand]
|
mov cx,[xs]
|
||||||
mov cl,[eax+ebx]
|
inc cx
|
||||||
inc bx
|
and cx,word[stackand]
|
||||||
and bx,word[stackand]
|
xor eax,eax
|
||||||
mov ch,[eax+ebx]
|
call membank0r8
|
||||||
mov [xs],bx
|
mov [xpc],al
|
||||||
|
|
||||||
|
inc cx
|
||||||
|
and cx,word[stackand]
|
||||||
|
xor eax,eax
|
||||||
|
call membank0r8
|
||||||
|
mov [xpc+1],al
|
||||||
|
mov [xs],cx
|
||||||
|
|
||||||
|
|
||||||
xor bh,bh
|
xor bh,bh
|
||||||
xor eax,eax
|
xor eax,eax
|
||||||
mov ax,cx
|
mov ax,[xpc]
|
||||||
mov bl,dl
|
mov bl,dl
|
||||||
mov edi,[tableadb+ebx*4]
|
mov edi,[tableadb+ebx*4]
|
||||||
xor bl,bl
|
xor bl,bl
|
||||||
@@ -1406,22 +1443,44 @@ emulRTI
|
|||||||
%endmacro
|
%endmacro
|
||||||
|
|
||||||
%macro RTLMacro 0
|
%macro RTLMacro 0
|
||||||
mov eax,[wramdata]
|
|
||||||
mov bx,[xs]
|
mov cx,[xs]
|
||||||
inc bx
|
inc cx
|
||||||
and bx,word[stackand]
|
and cx,word[stackand]
|
||||||
mov cl,[eax+ebx]
|
xor eax,eax
|
||||||
inc bx
|
call membank0r8
|
||||||
and bx,word[stackand]
|
mov [xpc],al
|
||||||
mov ch,[eax+ebx]
|
|
||||||
inc bx
|
inc cx
|
||||||
and bx,word[stackand]
|
and cx,word[stackand]
|
||||||
mov al,[eax+ebx]
|
xor eax,eax
|
||||||
|
call membank0r8
|
||||||
|
mov [xpc+1],al
|
||||||
|
|
||||||
|
inc cx
|
||||||
|
and cx,word[stackand]
|
||||||
|
xor eax,eax
|
||||||
|
call membank0r8
|
||||||
mov [xpb],al
|
mov [xpb],al
|
||||||
mov [xs],bx
|
|
||||||
|
; 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
|
||||||
xor bh,bh
|
xor bh,bh
|
||||||
xor eax,eax
|
xor eax,eax
|
||||||
mov ax,cx
|
mov ax,[xpc]
|
||||||
inc ax
|
inc ax
|
||||||
mov bl,[xpb]
|
mov bl,[xpb]
|
||||||
mov [xpc],ax
|
mov [xpc],ax
|
||||||
@@ -1439,18 +1498,22 @@ emulRTI
|
|||||||
%endmacro
|
%endmacro
|
||||||
|
|
||||||
%macro RTSMacro 0
|
%macro RTSMacro 0
|
||||||
mov eax,[wramdata]
|
|
||||||
mov bx,[xs]
|
mov cx,[xs]
|
||||||
inc bx
|
inc cx
|
||||||
and bx,word[stackand]
|
and cx,word[stackand]
|
||||||
mov cl,[eax+ebx]
|
call membank0r8
|
||||||
inc bx
|
mov [xpc],al
|
||||||
and bx,word[stackand]
|
|
||||||
mov ch,[eax+ebx]
|
inc cx
|
||||||
mov [xs],bx
|
and cx,word[stackand]
|
||||||
|
call membank0r8
|
||||||
|
mov [xpc+1],al
|
||||||
|
|
||||||
|
mov [xs],cx
|
||||||
xor bh,bh
|
xor bh,bh
|
||||||
xor eax,eax
|
xor eax,eax
|
||||||
mov ax,cx
|
mov ax,[xpc]
|
||||||
inc ax
|
inc ax
|
||||||
mov [xpc],ax
|
mov [xpc],ax
|
||||||
mov bl,[xpb]
|
mov bl,[xpb]
|
||||||
|
|||||||
@@ -52,21 +52,21 @@ EXTSYM dmadata
|
|||||||
%macro restoredl 0
|
%macro restoredl 0
|
||||||
mov dword[flagnz],0
|
mov dword[flagnz],0
|
||||||
test dl,80h
|
test dl,80h
|
||||||
jz %%noneg
|
jz near %%noneg
|
||||||
or dword[flagnz],10000h
|
or dword[flagnz],10000h
|
||||||
%%noneg
|
%%noneg
|
||||||
test dl,2h
|
test dl,2h
|
||||||
jnz %%zero
|
jnz near %%zero
|
||||||
or dword[flagnz],1
|
or dword[flagnz],1
|
||||||
%%zero
|
%%zero
|
||||||
mov dword[flagc],0
|
mov dword[flagc],0
|
||||||
test dl,01h
|
test dl,01h
|
||||||
jz %%nocarry
|
jz near %%nocarry
|
||||||
mov dword[flagc],0FFh
|
mov dword[flagc],0FFh
|
||||||
%%nocarry
|
%%nocarry
|
||||||
mov dword[flago],0
|
mov dword[flago],0
|
||||||
test dl,40h
|
test dl,40h
|
||||||
jz %%nov
|
jz near %%nov
|
||||||
mov dword[flago],0FFh
|
mov dword[flago],0FFh
|
||||||
%%nov
|
%%nov
|
||||||
%endmacro
|
%endmacro
|
||||||
@@ -529,6 +529,7 @@ BRKemulmode
|
|||||||
%endmacro
|
%endmacro
|
||||||
|
|
||||||
%macro COPMacro 0
|
%macro COPMacro 0
|
||||||
|
int 3h
|
||||||
inc esi
|
inc esi
|
||||||
test byte[xe],1
|
test byte[xe],1
|
||||||
jne near COPemulmode
|
jne near COPemulmode
|
||||||
@@ -799,21 +800,25 @@ COPemulmode
|
|||||||
sub ebx,[initaddrl]
|
sub ebx,[initaddrl]
|
||||||
add bx,2
|
add bx,2
|
||||||
mov [xpc],bx
|
mov [xpc],bx
|
||||||
mov eax,[wramdata]
|
|
||||||
mov bx,[xs]
|
mov cx,[xs]
|
||||||
mov cl,[xpb]
|
mov al,[xpb]
|
||||||
mov [eax+ebx],cl
|
call membank0w8
|
||||||
dec bx
|
|
||||||
or bx,word[stackor]
|
dec cx
|
||||||
mov cl,[xpc+1]
|
or cx,word[stackor]
|
||||||
mov [eax+ebx],cl
|
mov al,[xpc+1]
|
||||||
dec bx
|
call membank0w8
|
||||||
or bx,word[stackor]
|
|
||||||
mov cl,[xpc]
|
dec cx
|
||||||
mov [eax+ebx],cl
|
or cx,word[stackor]
|
||||||
dec bx
|
mov al,[xpc]
|
||||||
or bx,word[stackor]
|
call membank0w8
|
||||||
mov [xs],bx
|
|
||||||
|
dec cx
|
||||||
|
or cx,word[stackor]
|
||||||
|
|
||||||
|
mov [xs],cx
|
||||||
xor eax,eax
|
xor eax,eax
|
||||||
xor bh,bh
|
xor bh,bh
|
||||||
mov ax,[esi]
|
mov ax,[esi]
|
||||||
@@ -838,20 +843,25 @@ COPemulmode
|
|||||||
sub ebx,[initaddrl]
|
sub ebx,[initaddrl]
|
||||||
inc bx
|
inc bx
|
||||||
mov [xpc],bx
|
mov [xpc],bx
|
||||||
mov eax,[wramdata]
|
|
||||||
mov bx,[xs]
|
mov cx,[xs]
|
||||||
mov cl,[xpc+1]
|
mov al,[xpc+1]
|
||||||
mov [eax+ebx],cl
|
call membank0w8
|
||||||
dec bx
|
|
||||||
or bx,word[stackor]
|
dec cx
|
||||||
mov cl,[xpc]
|
or cx,word[stackor]
|
||||||
mov [eax+ebx],cl
|
mov al,[xpc]
|
||||||
dec bx
|
call membank0w8
|
||||||
or bx,word[stackor]
|
|
||||||
|
dec cx
|
||||||
|
or cx,word[stackor]
|
||||||
|
|
||||||
xor eax,eax
|
xor eax,eax
|
||||||
mov [xs],bx
|
mov [xs],cx
|
||||||
|
|
||||||
mov ax,[esi]
|
mov ax,[esi]
|
||||||
xor bh,bh
|
xor bh,bh
|
||||||
|
|
||||||
mov [xpc],ax
|
mov [xpc],ax
|
||||||
mov bl,[xpb]
|
mov bl,[xpb]
|
||||||
test eax,8000h
|
test eax,8000h
|
||||||
@@ -885,17 +895,23 @@ COPemulmode
|
|||||||
sub ebx,[initaddrl]
|
sub ebx,[initaddrl]
|
||||||
inc bx
|
inc bx
|
||||||
mov [xpc],bx
|
mov [xpc],bx
|
||||||
mov eax,[wramdata]
|
|
||||||
mov bx,[xs]
|
mov cx,[xs]
|
||||||
mov cl,[xpc+1]
|
mov al,[xpc+1]
|
||||||
mov [eax+ebx],cl
|
call membank0w8
|
||||||
dec bx
|
|
||||||
or bx,word[stackor]
|
dec cx
|
||||||
mov cl,[xpc]
|
or cx,word[stackor]
|
||||||
mov [eax+ebx],cl
|
mov al,[xpc]
|
||||||
dec bx
|
call membank0w8
|
||||||
or bx,word[stackor]
|
|
||||||
mov [xs],bx
|
dec cx
|
||||||
|
or cx,word[stackor]
|
||||||
|
|
||||||
|
xor eax,eax
|
||||||
|
mov [xs],cx
|
||||||
|
|
||||||
|
|
||||||
xor eax,eax
|
xor eax,eax
|
||||||
xor bh,bh
|
xor bh,bh
|
||||||
mov cx,[esi]
|
mov cx,[esi]
|
||||||
@@ -1213,21 +1229,21 @@ COPemulmode
|
|||||||
%endmacro
|
%endmacro
|
||||||
|
|
||||||
%macro POPMacroP 0
|
%macro POPMacroP 0
|
||||||
mov eax,[wramdata]
|
mov cx,[xs]
|
||||||
mov bx,[xs]
|
inc cx
|
||||||
inc bx
|
and cx,word[stackand]
|
||||||
and bx,word[stackand]
|
call membank0r8
|
||||||
mov cl,[eax+ebx]
|
mov [xs],cx
|
||||||
mov [xs],bx
|
|
||||||
xor bh,bh
|
xor bh,bh
|
||||||
mov dl,cl
|
mov dl,al
|
||||||
restoredl
|
restoredl
|
||||||
test byte[xe],01h
|
test byte[xe],01h
|
||||||
jnz near .emul
|
jnz near .emul
|
||||||
mov bl,dl
|
mov bl,dl
|
||||||
mov edi,[tableadc+ebx*4]
|
mov edi,[tableadc+ebx*4]
|
||||||
test dl,00010000b
|
test dl,00010000b
|
||||||
jnz .setx
|
jnz near .setx
|
||||||
endloop
|
endloop
|
||||||
.setx
|
.setx
|
||||||
mov byte[xx+1],0
|
mov byte[xx+1],0
|
||||||
@@ -1304,41 +1320,55 @@ COPemulmode
|
|||||||
%endmacro
|
%endmacro
|
||||||
|
|
||||||
%macro RTIMacro 0
|
%macro RTIMacro 0
|
||||||
|
mov byte[doirqnext],0
|
||||||
cmp byte[nmistatus],3
|
cmp byte[nmistatus],3
|
||||||
jne .nodis658162
|
jne near .nodis658162
|
||||||
test byte[curexecstate],01h
|
test byte[curexecstate],01h
|
||||||
jz .nodis65816
|
jz near .nodis65816
|
||||||
and byte[curexecstate],0FEh
|
and byte[curexecstate],0FEh
|
||||||
call changeexecloop
|
call changeexecloop
|
||||||
.nodis65816
|
.nodis65816
|
||||||
cmp byte[curexecstate],0
|
cmp byte[curexecstate],0
|
||||||
jne .nn
|
jne near .nn
|
||||||
xor dh,dh
|
xor dh,dh
|
||||||
.nn
|
.nn
|
||||||
.nodis658162
|
.nodis658162
|
||||||
mov byte[curnmi],0
|
mov byte[curnmi],0
|
||||||
test byte[xe],1
|
test byte[xe],1
|
||||||
jne near emulRTI
|
jne near emulRTI
|
||||||
mov eax,[wramdata]
|
|
||||||
mov bx,[xs]
|
mov cx,[xs]
|
||||||
inc bx
|
inc cx
|
||||||
and bx,word[stackand]
|
and cx,word[stackand]
|
||||||
mov dl,[eax+ebx]
|
call membank0r8
|
||||||
|
mov [xs],cx
|
||||||
|
|
||||||
|
mov dl,al
|
||||||
restoredl
|
restoredl
|
||||||
inc bx
|
|
||||||
and bx,word[stackand]
|
mov cx,[xs]
|
||||||
mov cl,[eax+ebx]
|
inc cx
|
||||||
inc bx
|
and cx,word[stackand]
|
||||||
and bx,word[stackand]
|
xor eax,eax
|
||||||
mov ch,[eax+ebx]
|
call membank0r8
|
||||||
inc bx
|
mov [xpc],al
|
||||||
and bx,word[stackand]
|
|
||||||
mov al,[eax+ebx]
|
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 [xpb],al
|
mov [xpb],al
|
||||||
mov [xs],bx
|
mov [xs],cx
|
||||||
|
|
||||||
xor bh,bh
|
xor bh,bh
|
||||||
xor eax,eax
|
xor eax,eax
|
||||||
mov ax,cx
|
mov ax,[xpc]
|
||||||
mov bl,dl
|
mov bl,dl
|
||||||
mov edi,[tableadc+ebx*4]
|
mov edi,[tableadc+ebx*4]
|
||||||
mov bl,[xpb]
|
mov bl,[xpb]
|
||||||
@@ -1358,7 +1388,7 @@ COPemulmode
|
|||||||
mov [initaddrl],esi
|
mov [initaddrl],esi
|
||||||
add esi,eax
|
add esi,eax
|
||||||
test dl,00010000b
|
test dl,00010000b
|
||||||
jnz .setx
|
jnz near .setx
|
||||||
endloop
|
endloop
|
||||||
.setx
|
.setx
|
||||||
mov byte[xx+1],0
|
mov byte[xx+1],0
|
||||||
@@ -1381,29 +1411,40 @@ COPemulmode
|
|||||||
endloop
|
endloop
|
||||||
|
|
||||||
emulRTI
|
emulRTI
|
||||||
mov eax,[wramdata]
|
mov cx,[xs]
|
||||||
mov bx,[xs]
|
inc cx
|
||||||
inc bx
|
and cx,word[stackand]
|
||||||
and bx,word[stackand]
|
call membank0r8
|
||||||
mov dl,[eax+ebx]
|
mov [xs],cx
|
||||||
|
|
||||||
|
mov dl,al
|
||||||
or dl,00110000b
|
or dl,00110000b
|
||||||
restoredl
|
restoredl
|
||||||
inc bx
|
|
||||||
and bx,word[stackand]
|
mov cx,[xs]
|
||||||
mov cl,[eax+ebx]
|
inc cx
|
||||||
inc bx
|
and cx,word[stackand]
|
||||||
and bx,word[stackand]
|
xor eax,eax
|
||||||
mov ch,[eax+ebx]
|
call membank0r8
|
||||||
mov [xs],bx
|
mov [xpc],al
|
||||||
|
|
||||||
|
inc cx
|
||||||
|
and cx,word[stackand]
|
||||||
|
xor eax,eax
|
||||||
|
call membank0r8
|
||||||
|
mov [xpc+1],al
|
||||||
|
mov [xs],cx
|
||||||
|
|
||||||
|
|
||||||
xor bh,bh
|
xor bh,bh
|
||||||
xor eax,eax
|
xor eax,eax
|
||||||
mov ax,cx
|
mov ax,[xpc]
|
||||||
mov bl,dl
|
mov bl,dl
|
||||||
mov edi,[tableadc+ebx*4]
|
mov edi,[tableadc+ebx*4]
|
||||||
xor bl,bl
|
xor bl,bl
|
||||||
mov [xpc],ax
|
mov [xpc],ax
|
||||||
test eax,8000h
|
test eax,8000h
|
||||||
jz .loweraddr
|
jz near .loweraddr
|
||||||
mov esi,[snesmmap+ebx*4]
|
mov esi,[snesmmap+ebx*4]
|
||||||
mov [initaddrl],esi
|
mov [initaddrl],esi
|
||||||
add esi,eax
|
add esi,eax
|
||||||
@@ -1416,27 +1457,49 @@ emulRTI
|
|||||||
%endmacro
|
%endmacro
|
||||||
|
|
||||||
%macro RTLMacro 0
|
%macro RTLMacro 0
|
||||||
mov eax,[wramdata]
|
|
||||||
mov bx,[xs]
|
mov cx,[xs]
|
||||||
inc bx
|
inc cx
|
||||||
and bx,word[stackand]
|
and cx,word[stackand]
|
||||||
mov cl,[eax+ebx]
|
xor eax,eax
|
||||||
inc bx
|
call membank0r8
|
||||||
and bx,word[stackand]
|
mov [xpc],al
|
||||||
mov ch,[eax+ebx]
|
|
||||||
inc bx
|
inc cx
|
||||||
and bx,word[stackand]
|
and cx,word[stackand]
|
||||||
mov al,[eax+ebx]
|
xor eax,eax
|
||||||
|
call membank0r8
|
||||||
|
mov [xpc+1],al
|
||||||
|
|
||||||
|
inc cx
|
||||||
|
and cx,word[stackand]
|
||||||
|
xor eax,eax
|
||||||
|
call membank0r8
|
||||||
mov [xpb],al
|
mov [xpb],al
|
||||||
mov [xs],bx
|
|
||||||
|
; 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
|
||||||
xor bh,bh
|
xor bh,bh
|
||||||
xor eax,eax
|
xor eax,eax
|
||||||
mov ax,cx
|
mov ax,[xpc]
|
||||||
inc ax
|
inc ax
|
||||||
mov bl,[xpb]
|
mov bl,[xpb]
|
||||||
mov [xpc],ax
|
mov [xpc],ax
|
||||||
test eax,8000h
|
test eax,8000h
|
||||||
jz .loweraddr
|
jz near .loweraddr
|
||||||
mov esi,[snesmmap+ebx*4]
|
mov esi,[snesmmap+ebx*4]
|
||||||
mov [initaddrl],esi
|
mov [initaddrl],esi
|
||||||
add esi,eax
|
add esi,eax
|
||||||
@@ -1449,23 +1512,27 @@ emulRTI
|
|||||||
%endmacro
|
%endmacro
|
||||||
|
|
||||||
%macro RTSMacro 0
|
%macro RTSMacro 0
|
||||||
mov eax,[wramdata]
|
|
||||||
mov bx,[xs]
|
mov cx,[xs]
|
||||||
inc bx
|
inc cx
|
||||||
and bx,word[stackand]
|
and cx,word[stackand]
|
||||||
mov cl,[eax+ebx]
|
call membank0r8
|
||||||
inc bx
|
mov [xpc],al
|
||||||
and bx,word[stackand]
|
|
||||||
mov ch,[eax+ebx]
|
inc cx
|
||||||
mov [xs],bx
|
and cx,word[stackand]
|
||||||
|
call membank0r8
|
||||||
|
mov [xpc+1],al
|
||||||
|
|
||||||
|
mov [xs],cx
|
||||||
xor bh,bh
|
xor bh,bh
|
||||||
xor eax,eax
|
xor eax,eax
|
||||||
mov ax,cx
|
mov ax,[xpc]
|
||||||
inc ax
|
inc ax
|
||||||
mov [xpc],ax
|
mov [xpc],ax
|
||||||
mov bl,[xpb]
|
mov bl,[xpb]
|
||||||
test eax,8000h
|
test eax,8000h
|
||||||
jz .loweraddr
|
jz near .loweraddr
|
||||||
mov esi,[snesmmap+ebx*4]
|
mov esi,[snesmmap+ebx*4]
|
||||||
mov [initaddrl],esi
|
mov [initaddrl],esi
|
||||||
add esi,eax
|
add esi,eax
|
||||||
|
|||||||
@@ -66,6 +66,14 @@ NEWSYM initregr
|
|||||||
setreg 2180h*4,reg2180r
|
setreg 2180h*4,reg2180r
|
||||||
setreg 4016h*4,reg4016r
|
setreg 4016h*4,reg4016r
|
||||||
setreg 4017h*4,reg4017r
|
setreg 4017h*4,reg4017r
|
||||||
|
|
||||||
|
setreg 420Ah*4,reg420Ar
|
||||||
|
setreg 420Bh*4,reg420Br
|
||||||
|
setreg 420Ch*4,reg420Cr
|
||||||
|
setreg 420Dh*4,reg420Dr
|
||||||
|
setreg 420Eh*4,reg420Er
|
||||||
|
setreg 420Fh*4,reg420Fr
|
||||||
|
|
||||||
setreg 4210h*4,reg4210r
|
setreg 4210h*4,reg4210r
|
||||||
setreg 4211h*4,reg4211r
|
setreg 4211h*4,reg4211r
|
||||||
setreg 4212h*4,reg4212r
|
setreg 4212h*4,reg4212r
|
||||||
@@ -888,6 +896,15 @@ reg4017r:
|
|||||||
rol dword[JoyENow],1
|
rol dword[JoyENow],1
|
||||||
ret
|
ret
|
||||||
|
|
||||||
|
reg420Ar:
|
||||||
|
reg420Br:
|
||||||
|
reg420Cr:
|
||||||
|
reg420Dr:
|
||||||
|
reg420Er:
|
||||||
|
reg420Fr:
|
||||||
|
xor al,al
|
||||||
|
ret
|
||||||
|
|
||||||
; NMI Check Register
|
; NMI Check Register
|
||||||
reg4210r:
|
reg4210r:
|
||||||
mov al,[NMIEnab]
|
mov al,[NMIEnab]
|
||||||
@@ -896,17 +913,12 @@ reg4210r:
|
|||||||
mov byte[NMIEnab],01h
|
mov byte[NMIEnab],01h
|
||||||
.nmi
|
.nmi
|
||||||
mov byte[curnmi],0
|
mov byte[curnmi],0
|
||||||
|
|
||||||
ret
|
ret
|
||||||
|
|
||||||
; Video IRQ Register
|
; Video IRQ Register
|
||||||
reg4211r:
|
reg4211r:
|
||||||
mov al,[irqon]
|
mov al,[irqon]
|
||||||
mov byte[irqon],0
|
mov byte[irqon],0
|
||||||
cmp dh,[cycphb]
|
|
||||||
jae .nohblank
|
|
||||||
or al,40h
|
|
||||||
.nohblank
|
|
||||||
ret
|
ret
|
||||||
|
|
||||||
; H/V Blank Flag & Joystick Controller Enable Flag
|
; H/V Blank Flag & Joystick Controller Enable Flag
|
||||||
|
|||||||
@@ -534,29 +534,29 @@ BRKemulmode
|
|||||||
mov ebx,esi
|
mov ebx,esi
|
||||||
sub ebx,eax
|
sub ebx,eax
|
||||||
mov [xpc],bx
|
mov [xpc],bx
|
||||||
mov eax,[wramdata]
|
|
||||||
mov bx,[SA1xs]
|
mov cx,[SA1xs]
|
||||||
mov cl,[SA1xpb]
|
mov al,[SA1xpb]
|
||||||
mov [eax+ebx],cl
|
call membank0w8
|
||||||
dec bx
|
dec cx
|
||||||
and bx,word[stackand]
|
mov al,[xpc+1]
|
||||||
or bx,word[stackor]
|
call membank0w8
|
||||||
mov cl,[xpc+1]
|
dec cx
|
||||||
mov [eax+ebx],cl
|
or cx,word[stackor]
|
||||||
dec bx
|
|
||||||
and bx,word[stackand]
|
mov al,[xpc]
|
||||||
or bx,word[stackor]
|
call membank0w8
|
||||||
mov cl,[xpc]
|
dec cx
|
||||||
mov [eax+ebx],cl
|
or cx,word[stackor]
|
||||||
dec bx
|
|
||||||
and bx,word[stackand]
|
|
||||||
or bx,word[stackor]
|
|
||||||
makedl
|
makedl
|
||||||
mov [eax+ebx],dl
|
mov al,dl
|
||||||
dec bx
|
call membank0w8
|
||||||
and bx,word[stackand]
|
dec cx
|
||||||
or bx,word[stackor]
|
or cx,word[stackor]
|
||||||
mov [SA1xs],bx
|
|
||||||
|
mov [SA1xs],cx
|
||||||
|
|
||||||
xor bh,bh
|
xor bh,bh
|
||||||
mov bl,byte[xirqb]
|
mov bl,byte[xirqb]
|
||||||
mov [SA1xpb],bl
|
mov [SA1xpb],bl
|
||||||
|
|||||||
@@ -3922,11 +3922,7 @@ ZipDeleteRecurse:
|
|||||||
SPC7110Allocated db 0
|
SPC7110Allocated db 0
|
||||||
SPC7110DIRA db 'FEOEZSP7',0
|
SPC7110DIRA db 'FEOEZSP7',0
|
||||||
SPC7110DIRB db 'SMHT-SP7',0
|
SPC7110DIRB db 'SMHT-SP7',0
|
||||||
%ifdef __LINUX__
|
|
||||||
SDD1DIRA db 'socnsdd1',0
|
|
||||||
%else
|
|
||||||
SDD1DIRA db 'SOCNSDD1',0
|
SDD1DIRA db 'SOCNSDD1',0
|
||||||
%endif
|
|
||||||
SDD1DIRB db 'SFA2SDD1',0
|
SDD1DIRB db 'SFA2SDD1',0
|
||||||
SPC7110IndexName db 'INDEX.BIN',0
|
SPC7110IndexName db 'INDEX.BIN',0
|
||||||
SPC7110DirEntry db '*.BIN',0
|
SPC7110DirEntry db '*.BIN',0
|
||||||
@@ -4494,6 +4490,90 @@ NEWSYM loadfileGUI
|
|||||||
mov byte[lorommapmode2],1
|
mov byte[lorommapmode2],1
|
||||||
.nosoundnovel
|
.nosoundnovel
|
||||||
|
|
||||||
|
cmp dword[esi+7FC0h],'HONK'
|
||||||
|
jne near .nothonk
|
||||||
|
cmp dword[esi+7FC4h],'AKUH'
|
||||||
|
jne near .nothonk
|
||||||
|
cmp dword[esi+7FC8h],'A IG'
|
||||||
|
jne near .nothonk
|
||||||
|
cmp dword[esi+7FCCh],'O GO'
|
||||||
|
jne near .nothonk
|
||||||
|
cmp dword[esi+7FD0h],'SEI '
|
||||||
|
jne near .nothonk
|
||||||
|
|
||||||
|
mov esi,.romtable
|
||||||
|
mov eax,16
|
||||||
|
mov ebx,16
|
||||||
|
.honkl1
|
||||||
|
mov [esi],bl
|
||||||
|
add esi,2
|
||||||
|
add ebx,1
|
||||||
|
sub eax,1
|
||||||
|
jne .honkl1
|
||||||
|
|
||||||
|
mov esi,.romtable
|
||||||
|
inc esi
|
||||||
|
mov eax,16
|
||||||
|
mov ebx,0
|
||||||
|
.honkl2
|
||||||
|
mov [esi],bl
|
||||||
|
add esi,2
|
||||||
|
add ebx,1
|
||||||
|
sub eax,1
|
||||||
|
jne .honkl2
|
||||||
|
|
||||||
|
mov esi,.romtableb
|
||||||
|
mov eax,32
|
||||||
|
mov ebx,0
|
||||||
|
.honkl3
|
||||||
|
mov [esi],bl
|
||||||
|
add esi,1
|
||||||
|
add ebx,1
|
||||||
|
sub eax,1
|
||||||
|
jne .honkl3
|
||||||
|
|
||||||
|
xor eax,eax
|
||||||
|
xor ebx,ebx
|
||||||
|
|
||||||
|
mov eax,0 ; current dest bank
|
||||||
|
.honkswapbanks
|
||||||
|
mov bl,[.romtable+eax] ; current source bank
|
||||||
|
|
||||||
|
xor ecx,ecx
|
||||||
|
.honkfindbank
|
||||||
|
inc ecx
|
||||||
|
cmp byte [.romtableb-1+ecx],bl
|
||||||
|
jne .honkfindbank
|
||||||
|
dec ecx
|
||||||
|
|
||||||
|
mov dl, [.romtableb+eax]
|
||||||
|
mov byte [.romtableb+ecx],dl
|
||||||
|
mov byte [.romtableb+eax],cl
|
||||||
|
|
||||||
|
mov esi,eax
|
||||||
|
shl esi,15
|
||||||
|
add esi,[romdata]
|
||||||
|
|
||||||
|
mov edi,ecx
|
||||||
|
shl edi,15
|
||||||
|
add edi,[romdata]
|
||||||
|
|
||||||
|
mov edx,0
|
||||||
|
.honkcopybank
|
||||||
|
mov bl,[esi+edx]
|
||||||
|
mov bh,[edi+edx]
|
||||||
|
mov [esi+edx],bh
|
||||||
|
mov [edi+edx],bl
|
||||||
|
inc edx
|
||||||
|
cmp edx,32768
|
||||||
|
jne .honkcopybank
|
||||||
|
|
||||||
|
inc eax
|
||||||
|
cmp eax,32
|
||||||
|
jne .honkswapbanks
|
||||||
|
|
||||||
|
.nothonk
|
||||||
|
|
||||||
cmp dword[esi+207FC0h],'WIZA'
|
cmp dword[esi+207FC0h],'WIZA'
|
||||||
jne near .notwiz4
|
jne near .notwiz4
|
||||||
cmp dword[esi+207FC4h],'RDRY'
|
cmp dword[esi+207FC4h],'RDRY'
|
||||||
@@ -4502,58 +4582,82 @@ NEWSYM loadfileGUI
|
|||||||
jne near .notwiz4
|
jne near .notwiz4
|
||||||
cmp dword[esi+207FCDh],'EN 4'
|
cmp dword[esi+207FCDh],'EN 4'
|
||||||
jne near .notwiz4
|
jne near .notwiz4
|
||||||
mov eax,100000h
|
|
||||||
.loopwiz4
|
.loopwiz4
|
||||||
mov bl,[esi]
|
mov esi,.romtable
|
||||||
mov bh,[esi+200000h]
|
mov eax,64
|
||||||
mov [esi+200000h],bl
|
mov ebx,64
|
||||||
mov [esi],bh
|
.wiz4l1
|
||||||
inc esi
|
mov [esi],bl
|
||||||
dec eax
|
add esi,2
|
||||||
jnz .loopwiz4
|
add ebx,1
|
||||||
jmp .notwiz4
|
sub eax,1
|
||||||
|
jne .wiz4l1
|
||||||
|
|
||||||
pushad
|
mov esi,.romtable
|
||||||
mov edi,mode7tab+256
|
inc esi
|
||||||
mov ecx,256
|
mov eax,64
|
||||||
xor al,al
|
mov ebx,0
|
||||||
.nextlb2
|
.wiz4l2
|
||||||
mov [edi],al
|
mov [esi],bl
|
||||||
inc al
|
add esi,2
|
||||||
inc edi
|
add ebx,1
|
||||||
|
sub eax,1
|
||||||
|
jne .wiz4l2
|
||||||
|
|
||||||
|
mov esi,.romtableb
|
||||||
|
mov eax,128
|
||||||
|
mov ebx,0
|
||||||
|
.wiz4l3
|
||||||
|
mov [esi],bl
|
||||||
|
add esi,1
|
||||||
|
add ebx,1
|
||||||
|
sub eax,1
|
||||||
|
jne .wiz4l3
|
||||||
|
|
||||||
|
xor eax,eax
|
||||||
|
xor ebx,ebx
|
||||||
|
|
||||||
|
mov eax,0 ; current dest bank
|
||||||
|
.wiz4swapbanks
|
||||||
|
mov bl,[.romtable+eax] ; current source bank
|
||||||
|
|
||||||
|
xor ecx,ecx
|
||||||
|
.wiz4findbank
|
||||||
|
inc ecx
|
||||||
|
cmp byte [.romtableb-1+ecx],bl
|
||||||
|
jne .wiz4findbank
|
||||||
dec ecx
|
dec ecx
|
||||||
jnz .nextlb2
|
|
||||||
mov edi,mode7tab+256
|
mov dl, [.romtableb+eax]
|
||||||
; 0,4,8,C
|
mov byte [.romtableb+ecx],dl
|
||||||
; 0,64,1,65,2,... (1st 3MB, 1st 1MB)
|
mov byte [.romtableb+eax],cl
|
||||||
; (2nd 4MB?, 2nd 2MB)
|
|
||||||
mov dl,4
|
mov esi,eax
|
||||||
.nextl2
|
shl esi,15
|
||||||
mov eax,4
|
add esi,[romdata]
|
||||||
sub al,dl
|
|
||||||
mov bl,[.table+eax*2]
|
mov edi,ecx
|
||||||
mov bh,[.table+eax*2+1]
|
shl edi,15
|
||||||
mov ecx,16
|
add edi,[romdata]
|
||||||
.nextl
|
|
||||||
mov [edi],bl
|
mov edx,0
|
||||||
mov [edi+1],bh
|
.wiz4copybank
|
||||||
inc bl
|
mov bl,[esi+edx]
|
||||||
inc bh
|
mov bh,[edi+edx]
|
||||||
add edi,2
|
mov [esi+edx],bh
|
||||||
dec ecx
|
mov [edi+edx],bl
|
||||||
jnz .nextl
|
inc edx
|
||||||
add bl,16
|
cmp edx,32768
|
||||||
add bh,16
|
jne .wiz4copybank
|
||||||
dec dl
|
|
||||||
jnz .nextl2
|
inc eax
|
||||||
jmp .skiptable
|
cmp eax,128
|
||||||
; O O O O ? ? ? ?
|
jne .wiz4swapbanks
|
||||||
.table db 0,64,96+16,32+16,32,96,0+16,64+16
|
|
||||||
.skiptable
|
jmp near .notwiz4
|
||||||
mov dword[NumofBanks],20h*4
|
|
||||||
call SwapTable256
|
.romtable times 128 db 0
|
||||||
call UnInterleave
|
.romtableb times 128 db 0
|
||||||
popad
|
|
||||||
.notwiz4
|
.notwiz4
|
||||||
|
|
||||||
jmp .skipall
|
jmp .skipall
|
||||||
|
|||||||
Reference in New Issue
Block a user