Fixed interleaved rom loading code

This commit is contained in:
pagefault
2003-04-03 14:31:52 +00:00
parent 983a00a18e
commit 66fd3b6a6b

View File

@@ -6018,6 +6018,103 @@ NEWSYM CheckROMType
call SetAddressingModes call SetAddressingModes
call GenerateBank0Table call GenerateBank0Table
call headerhack2 call headerhack2
mov byte[intldone],0
xor eax,eax
xor ebx,ebx
xor edx,edx
mov eax,[NumofBanks]
imul eax,32768
shr eax,1
mov esi,[romdata]
add esi,7FC0h
add esi,eax
add esi,28
mov ebx,[esi]
inc esi
mov edx,[esi]
shl edx,16
add ebx,edx
inc esi
add ebx,[esi]
inc esi
mov edx,[esi]
shl edx,16
add ebx,edx
cmp bx,0FFFFh
jne .interlcheck2
mov esi,[romdata]
add esi,7FC0h
add esi,eax
add esi,25
cmp byte[esi],14
jae .interlcheck2
mov esi,[romdata]
add esi,7FC0h
add esi,eax
add esi,21
cmp byte[esi],32
je near .interleaved
cmp byte[esi],35
je near .interleaved
cmp byte[esi],48
je near .interleaved
cmp byte[esi],50
je near .interleaved
cmp byte[esi],83
je near .interleaved
.interlcheck2
xor ebx,ebx
xor edx,edx
mov esi,[romdata]
add esi,7FC0h
add esi,28
mov ebx,[esi]
inc esi
mov edx,[esi]
shl edx,16
add ebx,edx
inc esi
add ebx,[esi]
inc esi
mov edx,[esi]
shl edx,16
add ebx,edx
cmp bx,0FFFFh
jne near .nointerlcheck
mov esi,[romdata]
add esi,7FC0h
add esi,25
cmp byte[esi],14
jae .nointerlcheck
mov esi,[romdata]
add esi,7FC0h
add esi,21
cmp byte[esi],33
je .interleaved
cmp byte[esi],49
je .interleaved
cmp byte[esi],53
je .interleaved
cmp byte[esi],50
je .interleaved
cmp byte[esi],58
je .interleaved
jmp .nointerlcheck
.interleaved
cmp byte[finterleave],1
je .doneinterl
.interleaved2
mov byte[intldone],1
call UnInterleave
mov byte[romtype],2
jmp .doneinterl
.nointerlcheck
cmp byte[finterleave],1
je .interleaved2
.doneinterl
mov byte[ROMTypeNOTFound],0 mov byte[ROMTypeNOTFound],0
; check reset vectors ; check reset vectors
; RES Hardware 00FFFC.D 00FFFC,D 1 ; RES Hardware 00FFFC.D 00FFFC,D 1
@@ -6175,106 +6272,8 @@ NEWSYM CheckROMType
mov [romtype],al mov [romtype],al
mov byte[forceromtype],0 mov byte[forceromtype],0
mov byte[ROMTypeNOTFound],0 mov byte[ROMTypeNOTFound],0
jmp .doneinterl
.noforce .noforce
mov byte[intldone],0
cmp byte[romtype],1
jne near .nointerlcheck
xor eax,eax
xor ebx,ebx
xor edx,edx
mov eax,[NumofBanks]
imul eax,32768
shr eax,1
mov esi,[romdata]
add esi,7FC0h
add esi,eax
add esi,28
mov ebx,[esi]
inc esi
mov edx,[esi]
shl edx,16
add ebx,edx
inc esi
add ebx,[esi]
inc esi
mov edx,[esi]
shl edx,16
add ebx,edx
cmp bx,0FFFFh
jne .interlcheck2
mov esi,[romdata]
add esi,7FC0h
add esi,eax
add esi,25
cmp byte[esi],14
jae .interlcheck2
mov esi,[romdata]
add esi,7FC0h
add esi,eax
add esi,21
cmp byte[esi],32
je near .interleaved
cmp byte[esi],35
je near .interleaved
cmp byte[esi],48
je near .interleaved
cmp byte[esi],50
je near .interleaved
cmp byte[esi],83
je near .interleaved
.interlcheck2
xor ebx,ebx
xor edx,edx
mov esi,[romdata]
add esi,7FC0h
add esi,28
mov ebx,[esi]
inc esi
mov edx,[esi]
shl edx,16
add ebx,edx
inc esi
add ebx,[esi]
inc esi
mov edx,[esi]
shl edx,16
add ebx,edx
cmp bx,0FFFFh
jne near .nointerlcheck
mov esi,[romdata]
add esi,7FC0h
add esi,25
cmp byte[esi],14
jae .nointerlcheck
mov esi,[romdata]
add esi,7FC0h
add esi,21
cmp byte[esi],33
je .interleaved
cmp byte[esi],49
je .interleaved
cmp byte[esi],53
je .interleaved
cmp byte[esi],50
je .interleaved
cmp byte[esi],58
je .interleaved
jmp .nointerlcheck
.interleaved
cmp byte[finterleave],1
je .doneinterl
.interleaved2
mov byte[intldone],1
call UnInterleave
mov byte[romtype],2
jmp .doneinterl
.nointerlcheck
cmp byte[finterleave],1
je .interleaved2
.doneinterl
mov esi,[romdata] mov esi,[romdata]
add esi,0FFC0h add esi,0FFC0h
mov byte[disablespcclr],0 mov byte[disablespcclr],0