Fix for OBC1

This commit is contained in:
zsknight
2001-05-17 03:26:47 +00:00
parent 75a42ab0f3
commit e2fef11ddd

View File

@@ -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]