Fixed interleaved rom loading code
This commit is contained in:
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user