Patches:
*Fixed a small bug that would keep searching for a place to hook even after an offset was found git-svn-id: svn://localhost/Users/andi/Downloads/code/trunk@7 be6c1b03-d731-4111-a574-e37d80d43941
This commit is contained in:
parent
9689929b4a
commit
0eca7bf37c
69
Patches.c
69
Patches.c
@ -408,12 +408,10 @@ void DoPatches( char *ptr, u32 size, u32 SectionOffset )
|
|||||||
write32(0x00003194, 0x48000028);
|
write32(0x00003194, 0x48000028);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Reset Found
|
// Reset Found
|
||||||
for( k=0; k < sizeof(FPatterns)/sizeof(FuncPattern); ++k )
|
for( k=0; k < sizeof(FPatterns)/sizeof(FuncPattern); ++k )
|
||||||
FPatterns[k].Found = 0;
|
FPatterns[k].Found = 0;
|
||||||
|
|
||||||
|
|
||||||
if( ConfigGetConfig(DML_CFG_NMM) )
|
if( ConfigGetConfig(DML_CFG_NMM) )
|
||||||
DoCardPatches( ptr, size, SectionOffset );
|
DoCardPatches( ptr, size, SectionOffset );
|
||||||
|
|
||||||
@ -633,39 +631,7 @@ void DoPatches( char *ptr, u32 size, u32 SectionOffset )
|
|||||||
PatchCount |= 8;
|
PatchCount |= 8;
|
||||||
}
|
}
|
||||||
|
|
||||||
if( (PatchCount & 32) == 0 )
|
if( (PatchCount & 16) == 0 )
|
||||||
{
|
|
||||||
if( (read32( (u32)ptr + i + 0 ) & 0xFFFF) == 0xCC00 && // Game
|
|
||||||
(read32( (u32)ptr + i + 4 ) & 0xFFFF) == 0x6000 &&
|
|
||||||
(read32( (u32)ptr + i +12 ) & 0xFFFF) == 0x001C
|
|
||||||
)
|
|
||||||
{
|
|
||||||
u32 Offset = (u32)ptr + i;
|
|
||||||
|
|
||||||
dbgprintf("Patch:[cbForStateBusy] 0x%08X\n", Offset + SectionOffset );
|
|
||||||
|
|
||||||
write32( Offset, 0x3C80C000 );
|
|
||||||
write32( Offset+4, 0x38842F30 );
|
|
||||||
|
|
||||||
PatchCount |= 32;
|
|
||||||
|
|
||||||
} else if( (read32( (u32)ptr + i + 0 ) & 0xFFFF) == 0xCC00 && // Loader
|
|
||||||
(read32( (u32)ptr + i + 4 ) & 0xFFFF) == 0x6018 &&
|
|
||||||
(read32( (u32)ptr + i +12 ) & 0xFFFF) == 0x001C
|
|
||||||
)
|
|
||||||
{
|
|
||||||
u32 Offset = (u32)ptr + i;
|
|
||||||
|
|
||||||
dbgprintf("Patch:[cbForStateBusy] 0x%08X\n", Offset + SectionOffset );
|
|
||||||
|
|
||||||
write32( Offset, 0x3C60C000 );
|
|
||||||
write32( Offset+4, 0x80832F48 );
|
|
||||||
|
|
||||||
PatchCount |= 32;
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if( ConfigGetConfig(DML_CFG_CHEATS) || ConfigGetConfig( DML_CFG_DEBUGGER ) )
|
if( ConfigGetConfig(DML_CFG_CHEATS) || ConfigGetConfig( DML_CFG_DEBUGGER ) )
|
||||||
{
|
{
|
||||||
// OSSleepThread(Pattern 1)
|
// OSSleepThread(Pattern 1)
|
||||||
@ -744,6 +710,39 @@ void DoPatches( char *ptr, u32 size, u32 SectionOffset )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if( (PatchCount & 32) == 0 )
|
||||||
|
{
|
||||||
|
if( (read32( (u32)ptr + i + 0 ) & 0xFFFF) == 0xCC00 && // Game
|
||||||
|
(read32( (u32)ptr + i + 4 ) & 0xFFFF) == 0x6000 &&
|
||||||
|
(read32( (u32)ptr + i +12 ) & 0xFFFF) == 0x001C
|
||||||
|
)
|
||||||
|
{
|
||||||
|
u32 Offset = (u32)ptr + i;
|
||||||
|
|
||||||
|
dbgprintf("Patch:[cbForStateBusy] 0x%08X\n", Offset + SectionOffset );
|
||||||
|
|
||||||
|
write32( Offset, 0x3C80C000 );
|
||||||
|
write32( Offset+4, 0x38842F30 );
|
||||||
|
|
||||||
|
PatchCount |= 32;
|
||||||
|
|
||||||
|
} else if( (read32( (u32)ptr + i + 0 ) & 0xFFFF) == 0xCC00 && // Loader
|
||||||
|
(read32( (u32)ptr + i + 4 ) & 0xFFFF) == 0x6018 &&
|
||||||
|
(read32( (u32)ptr + i +12 ) & 0xFFFF) == 0x001C
|
||||||
|
)
|
||||||
|
{
|
||||||
|
u32 Offset = (u32)ptr + i;
|
||||||
|
|
||||||
|
dbgprintf("Patch:[cbForStateBusy] 0x%08X\n", Offset + SectionOffset );
|
||||||
|
|
||||||
|
write32( Offset, 0x3C60C000 );
|
||||||
|
write32( Offset+4, 0x80832F48 );
|
||||||
|
|
||||||
|
PatchCount |= 32;
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if( ConfigGetConfig(DML_CFG_CHEATS) )
|
if( ConfigGetConfig(DML_CFG_CHEATS) )
|
||||||
{
|
{
|
||||||
if( PatchCount == 63 )
|
if( PatchCount == 63 )
|
||||||
|
Loading…
Reference in New Issue
Block a user