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
|
cmp dword[curromspace],0
|
||||||
je near .failed
|
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
|
call convertsram
|
||||||
mov byte[SramExists],0
|
mov byte[SramExists],0
|
||||||
|
|
||||||
@@ -3499,14 +3438,12 @@ NEWSYM loadfileGUI
|
|||||||
call Output_Text
|
call Output_Text
|
||||||
.inguib
|
.inguib
|
||||||
|
|
||||||
mov eax,[.curfileofs]
|
mov eax,dword[curromspace]
|
||||||
|
mov dword[.curfileofs],eax
|
||||||
mov [NumofBytes],eax
|
mov [NumofBytes],eax
|
||||||
shr eax,15
|
shr eax,15
|
||||||
mov [NumofBanks],eax
|
mov [NumofBanks],eax
|
||||||
|
|
||||||
mov eax,[.curfileofs]
|
|
||||||
shr eax,15
|
|
||||||
mov [NumofBanks],eax
|
|
||||||
cmp byte[.fail],0
|
cmp byte[.fail],0
|
||||||
je .notfailed
|
je .notfailed
|
||||||
mov byte[yesoutofmemory],1
|
mov byte[yesoutofmemory],1
|
||||||
@@ -4417,9 +4354,6 @@ NEWSYM SetupROM
|
|||||||
ret
|
ret
|
||||||
|
|
||||||
NEWSYM CheckROMType
|
NEWSYM CheckROMType
|
||||||
call SetAddressingModes
|
|
||||||
call GenerateBank0Table
|
|
||||||
|
|
||||||
pushad
|
pushad
|
||||||
call BankCheck
|
call BankCheck
|
||||||
popad
|
popad
|
||||||
@@ -4428,6 +4362,67 @@ NEWSYM CheckROMType
|
|||||||
call MirrorROM
|
call MirrorROM
|
||||||
popad
|
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
|
; Chip Detection
|
||||||
mov byte[SFXEnable],0
|
mov byte[SFXEnable],0
|
||||||
mov byte[C4Enable],0
|
mov byte[C4Enable],0
|
||||||
|
|||||||
@@ -362,6 +362,8 @@ void MirrorROM()
|
|||||||
{
|
{
|
||||||
ROM[ROMSize++] = ROM[StartMirror++];
|
ROM[ROMSize++] = ROM[StartMirror++];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
NumofBanks = curromspace >> 15;
|
||||||
}
|
}
|
||||||
|
|
||||||
//File loading code
|
//File loading code
|
||||||
@@ -605,22 +607,40 @@ void SplitSupport()
|
|||||||
!ROM[Hi+21] && !ROM[Hi+22] && !ROM[Hi+23])
|
!ROM[Hi+21] && !ROM[Hi+22] && !ROM[Hi+23])
|
||||||
{
|
{
|
||||||
curromspace = 0;
|
curromspace = 0;
|
||||||
|
if (maxromspace < 0x280000) { return; }
|
||||||
memcpy(ROM+0x200000, ROM, 0x80000);
|
memcpy(ROM+0x200000, ROM, 0x80000);
|
||||||
strcpy(ZOpenFileName, "SAMEGAME.ZIP");
|
strcpy(ZOpenFileName, "SAMEGAME.ZIP");
|
||||||
loadZipFile();
|
loadZipFile();
|
||||||
if (curromspace == 0x100200)
|
if ((curromspace & 0x7FFF) == 512)
|
||||||
{
|
{
|
||||||
memmove(ROM, ROM+512, 0x100000);
|
memmove(ROM, ROM+512, 0x200000);
|
||||||
|
curromspace -= 512;
|
||||||
}
|
}
|
||||||
else if (curromspace != 0x100000)
|
if (!curromspace) { return; }
|
||||||
{
|
memcpy(ROM+0x100000, ROM, 0x100000); //Mirror 8 to 16
|
||||||
curromspace = 0;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
memcpy(ROM+0x100000, ROM, 0x100000);
|
|
||||||
curromspace = 0x280000;
|
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;
|
extern bool Sup48mbit;
|
||||||
|
|||||||
Reference in New Issue
Block a user