mirror of
https://github.com/array-in-a-matrix/SAROO.git
synced 2025-04-02 10:31:43 -04:00
增加KOF95与UltraMan的支持
This commit is contained in:
parent
e800891291
commit
8928b7da73
1 changed files with 134 additions and 62 deletions
|
@ -59,34 +59,22 @@ void CHEAT_patch(void)
|
||||||
|
|
||||||
/**********************************************************/
|
/**********************************************************/
|
||||||
// KAITEI_DAISENSOU (Japan) 海底大战争日版 第一关后半部分会有音乐丢失情况
|
// KAITEI_DAISENSOU (Japan) 海底大战争日版 第一关后半部分会有音乐丢失情况
|
||||||
|
void KAITEI_DAISENSOU_handle1(void)
|
||||||
|
{
|
||||||
|
cdc_read_sector(2462+150, 0x54f00, (void*)0x22400000);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void KAITEI_DAISENSOU_handle2(void)
|
||||||
|
{
|
||||||
|
memcpy((u8*)0x2AA000, (u8*)0x22400000, 0x54f00);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void KAITEI_DAISENSOU_patch(void)
|
void KAITEI_DAISENSOU_patch(void)
|
||||||
{
|
{
|
||||||
//*(u16*)(0x6074D60) = 0x9;
|
*(u32*)(0x6007324) = (u32)KAITEI_DAISENSOU_handle1;
|
||||||
*(u8*)(0x0600A2e5) = 0x30;
|
*(u32*)(0x60044E0) = (u32)KAITEI_DAISENSOU_handle2;
|
||||||
*(u16*)(0x0600A316) = 0x9;
|
|
||||||
|
|
||||||
/*
|
|
||||||
*(u32*)(0x600A374) = 0x2FE6E600;
|
|
||||||
*(u32*)(0x600A378) = 0x4F22E500;
|
|
||||||
*(u32*)(0x600A37c) = 0xDE0AD30B;
|
|
||||||
*(u32*)(0x600A380) = 0x430B64E2;
|
|
||||||
*(u32*)(0x600A384) = 0xE501D30A;
|
|
||||||
*(u32*)(0x600A388) = 0x430B64E2;
|
|
||||||
*(u32*)(0x600A38c) = 0x950AD30B;
|
|
||||||
*(u32*)(0x600A390) = 0x430B64E2;
|
|
||||||
*(u32*)(0x600A394) = 0xD308D707;
|
|
||||||
*(u32*)(0x600A398) = 0xD6099503;
|
|
||||||
*(u32*)(0x600A39c) = 0x64E24F26;
|
|
||||||
*(u32*)(0x600A3a0) = 0x432B6EF6;
|
|
||||||
*(u32*)(0x600A3a4) = 0x00AA0009;
|
|
||||||
*(u32*)(0x600A3a8) = 0x06098028;
|
|
||||||
*(u32*)(0x600A3ac) = 0x060724B4;
|
|
||||||
*(u32*)(0x600A3b0) = 0x06072C2C;
|
|
||||||
*(u32*)(0x600A3b4) = 0x00054F00;
|
|
||||||
*(u32*)(0x600A3b8) = 0x060727A4;
|
|
||||||
*(u32*)(0x600A3bc) = 0x06072D3E;
|
|
||||||
*(u32*)(0x600A3c0) = 0x002AA000;
|
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -174,6 +162,86 @@ void Metal_Slug_A_patch(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*********************************************************/
|
||||||
|
// ULTRAMAN
|
||||||
|
// 2MB ROM cart
|
||||||
|
void jump_06b0(void)
|
||||||
|
{
|
||||||
|
void (*go)(void) = (void*)(0x04c8);
|
||||||
|
go();
|
||||||
|
*(u32*)(0x25fe00b8) = 0x13;
|
||||||
|
go = (void*)0x1800;
|
||||||
|
go();
|
||||||
|
|
||||||
|
*(u32*)(0x25fe00b0) = 0x34403440;
|
||||||
|
*(u32*)(0x25fe00b8) = 0x13;
|
||||||
|
|
||||||
|
SF = 1;
|
||||||
|
COMREG = 0x19;
|
||||||
|
while(SF&1);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void jump_copy_code(int type)
|
||||||
|
{
|
||||||
|
for(int i=0; i<0x200000; i+=4)
|
||||||
|
(REG32(0x22000000+i)) = (REG32(0x22400000+i));
|
||||||
|
void (*go)(void) = (void*)type;
|
||||||
|
go();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void card_init(void)
|
||||||
|
{
|
||||||
|
*(u32*)(0x06000358) = 0x7d600;
|
||||||
|
*(u32*)(0x0600026c) = 0x186c;
|
||||||
|
*(u32*)(0x06000320) = 0x6000c80;
|
||||||
|
memcpy((u8*)0x200000, jump_copy_code, 0x60);
|
||||||
|
memcpy((u8*)0x6000c80, jump_06b0, 0x60);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void ULTRAMAN_patch(void)
|
||||||
|
{
|
||||||
|
need_bup = 0;
|
||||||
|
|
||||||
|
if(*(u32*)(0x6002fb4)==0x06004000){
|
||||||
|
read_file("/SAROO/ISO/ULTRAMAN.BIN", 0, 0x200000, (void*)0x22400000);
|
||||||
|
card_init();
|
||||||
|
void (*go)(int);
|
||||||
|
go = (void*)0x200000;
|
||||||
|
go(0x6002222);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*********************************************************/
|
||||||
|
// KOF95
|
||||||
|
// 2MB ROM cart
|
||||||
|
void kof95_handle(void)
|
||||||
|
{
|
||||||
|
if(*(u32*)(0x6002234)== 0x14401FF0) *(u32*)(0x6002234) = 0x34403440;
|
||||||
|
if(*(u32*)(0x600230c)== 0x14401FF0) *(u32*)(0x600230c) = 0x34403440;
|
||||||
|
if(*(u32*)(0x6002300)== 0x1FF01FF0) *(u32*)(0x6002300) = 0x34403440;
|
||||||
|
|
||||||
|
read_file("/SAROO/ISO/KOF95.BIN", 0, 0x200000, (void*)0x22400000);
|
||||||
|
card_init();
|
||||||
|
|
||||||
|
void (*go)(int);
|
||||||
|
go = (void*)0x200000;
|
||||||
|
go(0x6002048);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void kof95_patch(void)
|
||||||
|
{
|
||||||
|
need_bup = 0;
|
||||||
|
|
||||||
|
if(*(u32*)(0x6002e28)==0x0607CD80)
|
||||||
|
*(u32*)(0x607CDC4) = (u32)kof95_handle;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**********************************************************/
|
/**********************************************************/
|
||||||
// KOF96
|
// KOF96
|
||||||
// 1MB RAM cart only
|
// 1MB RAM cart only
|
||||||
|
@ -361,7 +429,7 @@ void mshvssf_patch(void)
|
||||||
|
|
||||||
|
|
||||||
/**********************************************************/
|
/**********************************************************/
|
||||||
// WAKUWAKU7 火热火热7 未修复
|
// WAKUWAKU7 火热火热7
|
||||||
void WAKU7_patch(void)
|
void WAKU7_patch(void)
|
||||||
{
|
{
|
||||||
ssctrl_set(MASK_EXMEM, CS0_RAM1M);
|
ssctrl_set(MASK_EXMEM, CS0_RAM1M);
|
||||||
|
@ -369,7 +437,6 @@ void WAKU7_patch(void)
|
||||||
*(u16*)(0x0601C16C) = 0x9;
|
*(u16*)(0x0601C16C) = 0x9;
|
||||||
*(u8*) (0x0601244d) = 0xa;
|
*(u8*) (0x0601244d) = 0xa;
|
||||||
|
|
||||||
|
|
||||||
*(u32*)(0x06011E64+0x00) = 0xD207D108;
|
*(u32*)(0x06011E64+0x00) = 0xD207D108;
|
||||||
*(u32*)(0x06011E64+0x04) = 0x60436322;
|
*(u32*)(0x06011E64+0x04) = 0x60436322;
|
||||||
*(u32*)(0x06011E64+0x08) = 0x44087370;
|
*(u32*)(0x06011E64+0x08) = 0x44087370;
|
||||||
|
@ -380,12 +447,11 @@ void WAKU7_patch(void)
|
||||||
*(u32*)(0x06011E64+0x1c) = 0x432B6422;
|
*(u32*)(0x06011E64+0x1c) = 0x432B6422;
|
||||||
*(u32*)(0x06011E64+0x20) = 0x0603439C;
|
*(u32*)(0x06011E64+0x20) = 0x0603439C;
|
||||||
*(u32*)(0x06011E64+0x24) = 0x02000F04;
|
*(u32*)(0x06011E64+0x24) = 0x02000F04;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**********************************************************/
|
/**********************************************************/
|
||||||
// FIGHTERS_HISTORY 斗士的历史 未修复
|
// FIGHTERS_HISTORY 斗士的历史
|
||||||
void FIGHTERS_HISTORY_patch(void)
|
void FIGHTERS_HISTORY_patch(void)
|
||||||
{
|
{
|
||||||
ssctrl_set(MASK_EXMEM, CS0_RAM1M);
|
ssctrl_set(MASK_EXMEM, CS0_RAM1M);
|
||||||
|
@ -397,7 +463,7 @@ void FIGHTERS_HISTORY_patch(void)
|
||||||
|
|
||||||
|
|
||||||
/**********************************************************/
|
/**********************************************************/
|
||||||
// Final Fight Revenge (Japan) 快打旋风复仇 未修复
|
// Final Fight Revenge (Japan) 快打旋风复仇
|
||||||
|
|
||||||
void FINAL_FIGHT_REVENGE_patch(void)
|
void FINAL_FIGHT_REVENGE_patch(void)
|
||||||
{
|
{
|
||||||
|
@ -408,6 +474,7 @@ void FINAL_FIGHT_REVENGE_patch(void)
|
||||||
/**********************************************************/
|
/**********************************************************/
|
||||||
|
|
||||||
int skip_patch = 0;
|
int skip_patch = 0;
|
||||||
|
int need_bup = 1;
|
||||||
|
|
||||||
typedef struct _game_db {
|
typedef struct _game_db {
|
||||||
char *id;
|
char *id;
|
||||||
|
@ -417,48 +484,52 @@ typedef struct _game_db {
|
||||||
|
|
||||||
|
|
||||||
GAME_DB game_dbs[] = {
|
GAME_DB game_dbs[] = {
|
||||||
|
{"T-1229G", "VAMPIRE_SAVIOR", VAMPIRE_SAVIOR_patch},
|
||||||
|
{"T-14411G", "GROOVE_ON_FIGHT", GROOVE_ON_FIGHT_patch},
|
||||||
|
{"T-22205G", "NOEL3", NOEL3_patch},
|
||||||
|
{"T-20109G", "FRIENDS", FRIENDS_patch},
|
||||||
|
{"T-1245G", "DND2", DND2_patch},
|
||||||
|
{"T-1521G", "ASTRA", ASTRA_SUPERSTARS_patch},
|
||||||
|
{"T-9904G", "cotton2", cotton2_patch},
|
||||||
|
{"T-9906G", "cotton1", cotton1_patch},
|
||||||
|
|
||||||
|
{"T-1230G", "POCKET_FIGHTER", POCKET_FIGHTER_patch},
|
||||||
|
{"T-1246G", "SF_ZERO3", SF_ZERO3_patch},
|
||||||
|
|
||||||
{"T-1229G", "VAMPIRE_SAVIOR", VAMPIRE_SAVIOR_patch},
|
{"T-3111G V1.002", "Metal_Slug", Metal_Slug_patch},
|
||||||
{"T-14411G", "GROOVE_ON_FIGHT", GROOVE_ON_FIGHT_patch},
|
{"T-3111G V1.005", "Metal_Slug_A", Metal_Slug_A_patch},
|
||||||
{"T-22205G", "NOEL3", NOEL3_patch},
|
{"T-3101G", "KOF95", kof95_patch},
|
||||||
{"T-20109G", "FRIENDS", FRIENDS_patch},
|
{"T-3108G", "KOF96", kof96_patch},
|
||||||
{"T-1245G", "DND2", DND2_patch},
|
{"T-3121G", "KOF97", kof97_patch},
|
||||||
{"T-1521G", "ASTRA", ASTRA_SUPERSTARS_patch},
|
{"T-3104G", "SamuraiSp3", smrsp3_patch},
|
||||||
{"T-9904G", "cotton2", cotton2_patch},
|
{"T-3116G", "SamuraiSp4", smrsp4_patch},
|
||||||
{"T-9906G", "cotton1", cotton1_patch},
|
{"T-3105G", "REAL_BOUT", REAL_BOUT_patch},
|
||||||
|
{"T-3119G V1.001", "REAL_BOUT_SP_v1", REAL_BOUT_SP_v1_patch},
|
||||||
|
{"T-3119G V1.002", "REAL_BOUT_SP_v2", REAL_BOUT_SP_v2_patch},
|
||||||
|
{"T-10001G V1.000", "KAITEI_DAISENSOU", KAITEI_DAISENSOU_patch},
|
||||||
|
{"T-15006G V1.004", "KAITEI_DAISENSOU", KAITEI_DAISENSOU_patch},
|
||||||
|
|
||||||
{"T-1230G", "POCKET_FIGHTER", POCKET_FIGHTER_patch},
|
{"T-13308G", "ULTRAMAN", ULTRAMAN_patch},
|
||||||
{"T-1246G", "SF_ZERO3", SF_ZERO3_patch},
|
{"T-16509G", "SRMP7", srmp7_patch},
|
||||||
|
{"T-16510G", "SRMP7SP", srmp7_patch},
|
||||||
|
|
||||||
{"T-3111G V1.002", "Metal_Slug", Metal_Slug_patch},
|
{"T-1515G", "WAKU7", WAKU7_patch},
|
||||||
{"T-3111G V1.005", "Metal_Slug_A", Metal_Slug_A_patch},
|
{"GS-9107", "FIGHTERS", FIGHTERS_HISTORY_patch},
|
||||||
{"T-3108G", "KOF96", kof96_patch},
|
{"T-1248G", "FINAL_FIGHT_REVENGE",FINAL_FIGHT_REVENGE_patch},
|
||||||
{"T-3121G", "KOF97", kof97_patch},
|
{"T-1226G", "XMENVSSF", xmvsf_patch},
|
||||||
{"T-3104G", "SamuraiSp3", smrsp3_patch},
|
{"T-1215G", "MARVEL_SUPER", MARVEL_SUPER_patch},
|
||||||
{"T-3116G", "SamuraiSp4", smrsp4_patch},
|
{"T-1238G V1.000", "MSH_VS_SF", mshvssf_patch},
|
||||||
{"T-3105G", "REAL_BOUT", REAL_BOUT_patch},
|
|
||||||
{"T-3119G V1.001", "REAL_BOUT_SP_v1", REAL_BOUT_SP_v1_patch},
|
|
||||||
{"T-3119G V1.002", "REAL_BOUT_SP_v2", REAL_BOUT_SP_v2_patch},
|
|
||||||
{"T-15006G V1.004", "KAITEI_DAISENSOU", KAITEI_DAISENSOU_patch},
|
|
||||||
|
|
||||||
{"T-16509G", "SRMP7", srmp7_patch},
|
|
||||||
{"T-16510G", "SRMP7SP", srmp7_patch},
|
|
||||||
|
|
||||||
{"T-1515G", "WAKU7", WAKU7_patch},
|
|
||||||
{"GS-9107", "FIGHTERS", FIGHTERS_HISTORY_patch},
|
|
||||||
{"T-1248G", "FINAL_FIGHT_REVENGE", FINAL_FIGHT_REVENGE_patch},
|
|
||||||
{"T-1226G", "XMENVSSF", xmvsf_patch},
|
|
||||||
{"T-1215G", "MARVEL_SUPER", MARVEL_SUPER_patch},
|
|
||||||
{"T-1238G V1.000", "MSH_VS_SF", mshvssf_patch},
|
|
||||||
{NULL,},
|
{NULL,},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
void patch_game(char *id)
|
void patch_game(char *id)
|
||||||
{
|
{
|
||||||
GAME_DB *gdb = &game_dbs[0];
|
GAME_DB *gdb = &game_dbs[0];
|
||||||
|
|
||||||
CHEAT_ADDRES = 0;
|
CHEAT_ADDRES = 0;
|
||||||
|
need_bup = 1;
|
||||||
|
|
||||||
if(skip_patch)
|
if(skip_patch)
|
||||||
return;
|
return;
|
||||||
|
@ -510,3 +581,4 @@ void patch_game(char *id)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue