core2/code_98CB0.c progress
This commit is contained in:
@@ -17,7 +17,7 @@
|
||||
<text x="22.0" y="14">core2</text>
|
||||
</g>
|
||||
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
|
||||
<text x="78.5" y="15" fill="#010101" fill-opacity=".3">82.0707%</text>
|
||||
<text x="77.5" y="14">82.0707%</text>
|
||||
<text x="78.5" y="15" fill="#010101" fill-opacity=".3">82.1194%</text>
|
||||
<text x="77.5" y="14">82.1194%</text>
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1.0 KiB |
@@ -19,10 +19,12 @@ struct unkfunc_80304ED0 *func_80304ED0(void*, f32 *);
|
||||
void func_8031CD44(s32, s32, f32, f32, s32);
|
||||
void func_80256E24(f32 *, f32, f32, f32, f32, f32);
|
||||
|
||||
#define OBSCURE(ptr) (((((s32)(ptr) ^ 0x746DF219) & 0xFF) + ((((s32)(ptr) >> 0x18) & 0xFF) << 0x18) + ((((s32)(ptr) >> 8) & 0xFFFF) << 8)) ^ 0x19)
|
||||
|
||||
|
||||
/* .data */
|
||||
extern s32 D_8036DDF0;
|
||||
|
||||
|
||||
/* .bss */
|
||||
struct {
|
||||
s32 unk0;
|
||||
@@ -38,12 +40,30 @@ struct {
|
||||
|
||||
u8 D_803831F8[0x21]; //copy of D_803831D0
|
||||
|
||||
|
||||
/* .code */
|
||||
#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_98CB0/func_8031FC40.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_98CB0/func_8031FE40.s")
|
||||
u32 func_8031FE40(void) {
|
||||
u8 *obscured_addr;
|
||||
u32 var_v1;
|
||||
u32 var_a2;
|
||||
u32 var_v0;
|
||||
|
||||
#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_98CB0/func_8031FEC0.s")
|
||||
var_v1 = 0xDE1C05;
|
||||
var_v0 = 0x25;
|
||||
obscured_addr = (u8*)OBSCURE(&D_803831A0.unk8[0]);
|
||||
for(var_a2 = 0; var_a2 < var_v0; var_a2++){
|
||||
var_v1 += ((var_v1 % 4) + var_a2) * obscured_addr[var_a2];
|
||||
}
|
||||
return var_v1;
|
||||
}
|
||||
|
||||
void func_8031FEC0(void) {
|
||||
u32 *obscured_addr;
|
||||
obscured_addr = (u32*)OBSCURE(&D_803831A0.unk4);
|
||||
*obscured_addr = func_8031FE40();
|
||||
}
|
||||
|
||||
s32 func_8031FF1C(s32 index) {
|
||||
return func_803200A4(D_803831A0.unk8, index);
|
||||
@@ -132,29 +152,19 @@ s32 func_80320240(void){return 1;}
|
||||
|
||||
s32 func_80320248(void){return 1;}
|
||||
|
||||
// regalloc
|
||||
// s32 func_80320250(void) {
|
||||
// s32 addr = (s32) &D_803831D0.unk8[0];
|
||||
// u32 checksum = 0x6CE9E91F;
|
||||
// s32 len = 25;
|
||||
// s32 scrambled;
|
||||
// u32 i;
|
||||
u32 func_80320250(void) {
|
||||
u32 checksum = 0x6CE9E91F;
|
||||
u8 *obscured_addr = (u8*)OBSCURE(&D_803831D0.unk8[0]);
|
||||
s32 len = 25;
|
||||
u32 i;
|
||||
|
||||
// // Scrambles the input address
|
||||
// scrambled = (addr ^ 0x746DF219) & 0xFF; // scrambled = (low byte of addr) ^ 0x19
|
||||
// scrambled += (addr >> 0x18) << 0x18; // scrambled = (high byte of addr | low byte of addr) ^ 0x19
|
||||
// scrambled += ((addr >> 8) & 0xFFFF) << 8; // scrambled = addr ^ 0x19
|
||||
// // Unscrambles the input address
|
||||
|
||||
// for (i = 0; i < len; i++) {
|
||||
// s32 val = ((u8*)(scrambled ^ 0x19))[i];
|
||||
// checksum = val ^ (((checksum + val & 0xF) << 0x18) ^ (checksum >> 3));
|
||||
// }
|
||||
|
||||
// return checksum;
|
||||
// }
|
||||
#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_98CB0/func_80320250.s")
|
||||
for (i = 0; i < len; i++) {
|
||||
s32 val = obscured_addr[i];
|
||||
checksum = val ^ (((checksum + val & 0xF) << 0x18) ^ (checksum >> 3));
|
||||
}
|
||||
|
||||
return checksum;
|
||||
}
|
||||
|
||||
void func_803202D0(void) {
|
||||
s32 addr = (s32) &D_803831D0.unk0;
|
||||
@@ -187,16 +197,11 @@ s32 func_80320320(void) {
|
||||
return checksum;
|
||||
}
|
||||
|
||||
// regalloc
|
||||
// void func_803203A0(void) {
|
||||
// s32 addr = (s32) &D_803831D0.unk4;
|
||||
// s32 scrambled;
|
||||
// scrambled = (addr ^ 0x746DF219) & 0xFF; // scrambled = (low byte of addr) ^ 0x19
|
||||
// scrambled += (addr >> 0x18) << 0x18; // scrambled = (high byte of addr | low byte of addr) ^ 0x19
|
||||
// scrambled += ((addr >> 8) & 0xFFFF) << 8; // scrambled = addr ^ 0x19
|
||||
// *(s32*)(scrambled ^ 0x19) = func_80320320();
|
||||
// }
|
||||
#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_98CB0/func_803203A0.s")
|
||||
void func_803203A0(void) {
|
||||
u32 *obscured_addr = (u32*)OBSCURE(&D_803831D0.unk4);
|
||||
|
||||
*obscured_addr = func_80320320();
|
||||
}
|
||||
|
||||
s32 func_803203FC(s32 index) {
|
||||
return func_803200A4(D_803831D0.unk8, index);
|
||||
|
Reference in New Issue
Block a user