Fixed mapping issue. Added support for SD Gundam GX add ons.
This commit is contained in:
@@ -3410,67 +3410,6 @@ NEWSYM loadfileGUI
|
||||
cmp dword[curromspace],0
|
||||
je near .failed
|
||||
|
||||
|
||||
mov eax,dword[curromspace]
|
||||
mov dword[.curfileofs],eax
|
||||
|
||||
mov byte[lorommapmode2],0
|
||||
mov esi,[romdata]
|
||||
cmp dword[esi+207FC0h],'DERB'
|
||||
jne .noderby96
|
||||
cmp dword[esi+207FC4h],'Y ST'
|
||||
jne .noderby96
|
||||
cmp dword[esi+207FC8h],'ALLI'
|
||||
jne .noderby96
|
||||
cmp dword[esi+207FCDh],'N 96'
|
||||
jne .noderby96
|
||||
mov byte[lorommapmode2],1
|
||||
.noderby96
|
||||
cmp dword[esi+7FC0h],'SOUN'
|
||||
jne .nosoundnovel
|
||||
cmp dword[esi+7FC4h],'D NO'
|
||||
jne .nosoundnovel
|
||||
cmp dword[esi+7FC8h],'VEL-'
|
||||
jne .nosoundnovel
|
||||
cmp dword[esi+7FCDh],'COOL'
|
||||
jne .nosoundnovel
|
||||
mov byte[lorommapmode2],1
|
||||
.nosoundnovel
|
||||
|
||||
jmp .skipall
|
||||
; scan for branches
|
||||
mov esi,06A5h
|
||||
add esi,[romdata]
|
||||
mov ecx,80h
|
||||
.loopcheck
|
||||
cmp byte[esi],48h
|
||||
je .yes
|
||||
cmp byte[esi],8Bh
|
||||
je .yes
|
||||
cmp byte[esi],0Bh
|
||||
je .yes
|
||||
cmp byte[esi],4Bh
|
||||
je .yes
|
||||
cmp byte[esi],08h
|
||||
je .yes
|
||||
cmp byte[esi],0DAh
|
||||
je .yes
|
||||
cmp byte[esi],5Ah
|
||||
je .yes
|
||||
jmp .no
|
||||
.yes
|
||||
pushad
|
||||
mov al,byte[esi]
|
||||
mov al,80h
|
||||
sub al,cl
|
||||
call printhex8
|
||||
popad
|
||||
.no
|
||||
add esi,8000h
|
||||
dec ecx
|
||||
jnz .loopcheck
|
||||
.skipall
|
||||
|
||||
call convertsram
|
||||
mov byte[SramExists],0
|
||||
|
||||
@@ -3499,14 +3438,12 @@ NEWSYM loadfileGUI
|
||||
call Output_Text
|
||||
.inguib
|
||||
|
||||
mov eax,[.curfileofs]
|
||||
mov eax,dword[curromspace]
|
||||
mov dword[.curfileofs],eax
|
||||
mov [NumofBytes],eax
|
||||
shr eax,15
|
||||
mov [NumofBanks],eax
|
||||
|
||||
mov eax,[.curfileofs]
|
||||
shr eax,15
|
||||
mov [NumofBanks],eax
|
||||
cmp byte[.fail],0
|
||||
je .notfailed
|
||||
mov byte[yesoutofmemory],1
|
||||
@@ -4417,9 +4354,6 @@ NEWSYM SetupROM
|
||||
ret
|
||||
|
||||
NEWSYM CheckROMType
|
||||
call SetAddressingModes
|
||||
call GenerateBank0Table
|
||||
|
||||
pushad
|
||||
call BankCheck
|
||||
popad
|
||||
@@ -4428,6 +4362,67 @@ NEWSYM CheckROMType
|
||||
call MirrorROM
|
||||
popad
|
||||
|
||||
|
||||
mov byte[lorommapmode2],0
|
||||
mov esi,[romdata]
|
||||
cmp dword[esi+207FC0h],'DERB'
|
||||
jne .noderby96
|
||||
cmp dword[esi+207FC4h],'Y ST'
|
||||
jne .noderby96
|
||||
cmp dword[esi+207FC8h],'ALLI'
|
||||
jne .noderby96
|
||||
cmp dword[esi+207FCDh],'N 96'
|
||||
jne .noderby96
|
||||
mov byte[lorommapmode2],1
|
||||
.noderby96
|
||||
cmp dword[esi+7FC0h],'SOUN'
|
||||
jne .nosoundnovel
|
||||
cmp dword[esi+7FC4h],'D NO'
|
||||
jne .nosoundnovel
|
||||
cmp dword[esi+7FC8h],'VEL-'
|
||||
jne .nosoundnovel
|
||||
cmp dword[esi+7FCDh],'COOL'
|
||||
jne .nosoundnovel
|
||||
mov byte[lorommapmode2],1
|
||||
.nosoundnovel
|
||||
|
||||
jmp .skipall
|
||||
; scan for branches
|
||||
mov esi,06A5h
|
||||
add esi,[romdata]
|
||||
mov ecx,80h
|
||||
.loopcheck
|
||||
cmp byte[esi],48h
|
||||
je .yes
|
||||
cmp byte[esi],8Bh
|
||||
je .yes
|
||||
cmp byte[esi],0Bh
|
||||
je .yes
|
||||
cmp byte[esi],4Bh
|
||||
je .yes
|
||||
cmp byte[esi],08h
|
||||
je .yes
|
||||
cmp byte[esi],0DAh
|
||||
je .yes
|
||||
cmp byte[esi],5Ah
|
||||
je .yes
|
||||
jmp .no
|
||||
.yes
|
||||
pushad
|
||||
mov al,byte[esi]
|
||||
mov al,80h
|
||||
sub al,cl
|
||||
call printhex8
|
||||
popad
|
||||
.no
|
||||
add esi,8000h
|
||||
dec ecx
|
||||
jnz .loopcheck
|
||||
.skipall
|
||||
|
||||
call SetAddressingModes
|
||||
call GenerateBank0Table
|
||||
|
||||
; Chip Detection
|
||||
mov byte[SFXEnable],0
|
||||
mov byte[C4Enable],0
|
||||
|
||||
@@ -362,6 +362,8 @@ void MirrorROM()
|
||||
{
|
||||
ROM[ROMSize++] = ROM[StartMirror++];
|
||||
}
|
||||
|
||||
NumofBanks = curromspace >> 15;
|
||||
}
|
||||
|
||||
//File loading code
|
||||
@@ -605,22 +607,40 @@ void SplitSupport()
|
||||
!ROM[Hi+21] && !ROM[Hi+22] && !ROM[Hi+23])
|
||||
{
|
||||
curromspace = 0;
|
||||
if (maxromspace < 0x280000) { return; }
|
||||
memcpy(ROM+0x200000, ROM, 0x80000);
|
||||
strcpy(ZOpenFileName, "SAMEGAME.ZIP");
|
||||
loadZipFile();
|
||||
if (curromspace == 0x100200)
|
||||
if ((curromspace & 0x7FFF) == 512)
|
||||
{
|
||||
memmove(ROM, ROM+512, 0x100000);
|
||||
memmove(ROM, ROM+512, 0x200000);
|
||||
curromspace -= 512;
|
||||
}
|
||||
else if (curromspace != 0x100000)
|
||||
{
|
||||
curromspace = 0;
|
||||
return;
|
||||
}
|
||||
memcpy(ROM+0x100000, ROM, 0x100000);
|
||||
if (!curromspace) { return; }
|
||||
memcpy(ROM+0x100000, ROM, 0x100000); //Mirror 8 to 16
|
||||
curromspace = 0x280000;
|
||||
}
|
||||
|
||||
//SD Gundam G-Next add on
|
||||
if (ROM[Lo+26] == 0x33 && curromspace == 0x80000 &&
|
||||
!ROM[Lo+21] && !ROM[Lo+22] && !ROM[Lo+23] && !strncmp(ROM+Lo, "GNEXT", 5))
|
||||
{
|
||||
curromspace = 0;
|
||||
if (maxromspace < 0x480000) { return; }
|
||||
memcpy(ROM+0x400000, ROM, 0x80000);
|
||||
strcpy(ZOpenFileName, "G-NEXT.ZIP");
|
||||
loadZipFile();
|
||||
if ((curromspace & 0x7FFF) == 512)
|
||||
{
|
||||
memmove(ROM, ROM+512, 0x400000);
|
||||
curromspace -= 512;
|
||||
}
|
||||
if (!curromspace) { return; }
|
||||
memcpy(ROM+0x180000, ROM+0x100000, 0x80000); //Mirror 12 to 16
|
||||
memcpy(ROM+0x200000, ROM, 0x200000); //Mirror 16 to 32
|
||||
curromspace = 0x480000;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
extern bool Sup48mbit;
|
||||
|
||||
Reference in New Issue
Block a user