Fix for OBC1
This commit is contained in:
@@ -657,6 +657,7 @@ C4Data dd 0
|
|||||||
C4sprites dd 0
|
C4sprites dd 0
|
||||||
OBClog dd 0
|
OBClog dd 0
|
||||||
NumSprites db 0
|
NumSprites db 0
|
||||||
|
OBCOldRegArray db 0
|
||||||
|
|
||||||
NEWSYM InitOBC
|
NEWSYM InitOBC
|
||||||
pushad
|
pushad
|
||||||
@@ -697,6 +698,18 @@ OBCSprites:
|
|||||||
add edi,1800h
|
add edi,1800h
|
||||||
add byte[OBCRegArray],2
|
add byte[OBCRegArray],2
|
||||||
and byte[OBCRegArray],0FEh
|
and byte[OBCRegArray],0FEh
|
||||||
|
cmp byte[OBCRegArray],0FEh
|
||||||
|
je .ohno
|
||||||
|
cmp byte[OBCRegArray],0
|
||||||
|
je .ohno
|
||||||
|
jmp .okay
|
||||||
|
.ohno
|
||||||
|
mov al,[OBCOldRegArray]
|
||||||
|
mov [OBCRegArray],al
|
||||||
|
jmp .loop
|
||||||
|
.okay
|
||||||
|
mov al,[OBCRegArray]
|
||||||
|
mov [OBCOldRegArray],al
|
||||||
.loop
|
.loop
|
||||||
cmp byte[OBCRegArray],0
|
cmp byte[OBCRegArray],0
|
||||||
je .nomore
|
je .nomore
|
||||||
@@ -746,9 +759,6 @@ OBCSprites:
|
|||||||
|
|
||||||
OBCClear:
|
OBCClear:
|
||||||
call OBCSprites
|
call OBCSprites
|
||||||
mov dword[OBCRegArray],0
|
|
||||||
mov dword[OBCRegArray+4],0
|
|
||||||
mov byte[OBCRegArray],0FEh
|
|
||||||
mov byte[clearmem],1
|
mov byte[clearmem],1
|
||||||
mov dword[OBClog],0
|
mov dword[OBClog],0
|
||||||
ret
|
ret
|
||||||
@@ -775,6 +785,20 @@ clearmem db 0
|
|||||||
OBCRegs:
|
OBCRegs:
|
||||||
pushad
|
pushad
|
||||||
sub ecx,1FF0h
|
sub ecx,1FF0h
|
||||||
|
|
||||||
|
cmp byte[clearmem],0
|
||||||
|
je near .noclearmem
|
||||||
|
cmp ecx,6
|
||||||
|
je .okay
|
||||||
|
popad
|
||||||
|
ret
|
||||||
|
.okay
|
||||||
|
mov dword[OBCRegArray],0
|
||||||
|
mov dword[OBCRegArray+4],0
|
||||||
|
mov byte[OBCRegArray],0FEh
|
||||||
|
mov byte[clearmem],0
|
||||||
|
.noclearmem
|
||||||
|
|
||||||
mov ebx,[C4Ram]
|
mov ebx,[C4Ram]
|
||||||
add ebx,1000h
|
add ebx,1000h
|
||||||
add ebx,[OBClog]
|
add ebx,[OBClog]
|
||||||
@@ -790,17 +814,7 @@ OBCRegs:
|
|||||||
mov [OBCRegArray+4],bx
|
mov [OBCRegArray+4],bx
|
||||||
mov [OBCRegArray+6],bx
|
mov [OBCRegArray+6],bx
|
||||||
.notsix
|
.notsix
|
||||||
cmp byte[clearmem],0
|
|
||||||
je near .noclearmem
|
|
||||||
mov ebx,[C4Ram]
|
|
||||||
mov edx,1000h
|
|
||||||
.next
|
|
||||||
mov byte[ebx],0
|
|
||||||
inc ebx
|
|
||||||
dec edx
|
|
||||||
jnz .next
|
|
||||||
mov byte[clearmem],0
|
|
||||||
.noclearmem
|
|
||||||
xor ebx,ebx
|
xor ebx,ebx
|
||||||
mov bl,[OBCRegArray+ecx]
|
mov bl,[OBCRegArray+ecx]
|
||||||
cmp byte[OBCIncArray+ecx],1
|
cmp byte[OBCIncArray+ecx],1
|
||||||
@@ -2901,8 +2915,8 @@ NEWSYM regaccessbankw16
|
|||||||
push ecx
|
push ecx
|
||||||
sub ecx,6000h
|
sub ecx,6000h
|
||||||
and ecx,1fffh
|
and ecx,1fffh
|
||||||
mov ebx,[C4Ram]
|
; mov ebx,[C4Ram]
|
||||||
mov [ebx+ecx],ax
|
; mov [ebx+ecx],ax
|
||||||
mov ebx,[C4RamW]
|
mov ebx,[C4RamW]
|
||||||
push eax
|
push eax
|
||||||
call dword near [ebx+ecx*4]
|
call dword near [ebx+ecx*4]
|
||||||
|
|||||||
Reference in New Issue
Block a user