mirror of
https://github.com/Rainchus/mp1.git
synced 2024-11-23 04:59:47 +00:00
various building updates, ovl_5E compiled w/ rodata/data
This commit is contained in:
parent
b11b47b164
commit
64ba4ee3c9
4
Makefile
4
Makefile
@ -85,9 +85,9 @@ ENDLINE := \n'
|
||||
|
||||
ASFLAGS := -G 0 -I include -mips3 -mabi=32
|
||||
CFLAGS := -G0 -mips3 -mgp32 -mfp32 -Wa,--vr4300mul-off -D_LANGUAGE_C
|
||||
CPPFLAGS := -I include -I include/PR -I include/engine -I include/gcc -I $(BUILD_DIR)/include -I src -DF3DEX_GBI_2
|
||||
CPPFLAGS := -I. -I include -I include/PR -I include/engine -I include/gcc -I $(BUILD_DIR)/include -I src -DF3DEX_GBI_2
|
||||
LDFLAGS := -T symbol_addrs.txt -T undefined_syms.txt -T undefined_funcs.txt -T undefined_funcs_auto.txt -T undefined_syms_auto.txt -T $(LD_SCRIPT) -Map $(LD_MAP) --no-check-sections
|
||||
CHECK_WARNINGS := -Wall -Wextra -Wno-format-security -Wno-unused-parameter -Wno-sign-compare -Wno-unused-variable -Wno-pointer-to-int-cast -Wno-int-to-pointer-cast -m32
|
||||
CHECK_WARNINGS := -Wall -Wextra -Wunused-but-set-variable -Wno-format-security -Wno-unused-parameter -Wno-sign-compare -Wno-unused-variable -Wno-pointer-to-int-cast -Wno-int-to-pointer-cast -m32
|
||||
CFLAGS_CHECK := -fsyntax-only -fsigned-char -nostdinc -fno-builtin -D CC_CHECK -D _LANGUAGE_C -std=gnu90 $(CHECK_WARNINGS)
|
||||
|
||||
ifneq ($(CHECK),1)
|
||||
|
16
configure.py
16
configure.py
@ -20,15 +20,15 @@ else:
|
||||
|
||||
# fix patch applied by mod_configure if it exist
|
||||
# open the file for reading
|
||||
with open('src/engine/gameman.c', 'r') as f:
|
||||
filedata = f.read()
|
||||
# with open('src/engine/gameman.c', 'r') as f:
|
||||
# filedata = f.read()
|
||||
|
||||
# replace the string 'cPerFrameFunction' with 'SleepVProcess'
|
||||
newdata = filedata.replace('cPerFrameFunction', 'SleepVProcess')
|
||||
# # replace the string 'cPerFrameFunction' with 'SleepVProcess'
|
||||
# newdata = filedata.replace('cPerFrameFunction', 'SleepVProcess')
|
||||
|
||||
# open the file for writing and write the updated content
|
||||
with open('src/engine/gameman.c', 'w') as f:
|
||||
f.write(newdata)
|
||||
# # open the file for writing and write the updated content
|
||||
# with open('src/engine/gameman.c', 'w') as f:
|
||||
# f.write(newdata)
|
||||
|
||||
with open('build.ninja', 'w') as f:
|
||||
f.write(f'DETECTED_OS = {DETECTED_OS}\n')
|
||||
@ -46,7 +46,7 @@ header = (
|
||||
'CFLAGS = -G0 -mips3 -mgp32 -mfp32 -Wa,--vr4300mul-off -D_LANGUAGE_C\n'
|
||||
'CPPFLAGS = -I. -I include -I include/PR -I include/engine -I include/gcc -I build/include -I src -DF3DEX_GBI_2 -DNDEBUG\n'
|
||||
'LDFLAGS = -T symbol_addrs.txt -T undefined_syms.txt -T undefined_funcs.txt -T undefined_funcs_auto.txt -T undefined_syms_auto.txt -T $LD_SCRIPT -Map $LD_MAP --no-check-sections\n'
|
||||
'CHECK_WARNINGS = -Wall -Wextra -Wno-format-security -Wno-unused-parameter -Wno-sign-compare -Wno-unused-variable -Wno-pointer-to-int-cast -Wno-int-to-pointer-cast -m32\n'
|
||||
'CHECK_WARNINGS = -Wall -Wextra -Wunused-but-set-variable -Wno-format-security -Wno-unused-parameter -Wno-sign-compare -Wno-unused-variable -Wno-pointer-to-int-cast -Wno-int-to-pointer-cast -m32\n'
|
||||
'CFLAGS_CHECK = -fsyntax-only -fsigned-char -nostdinc -fno-builtin -D CC_CHECK -D _LANGUAGE_C -std=gnu90 $CHECK_WARNINGS\n'
|
||||
'AS = mips-linux-gnu-as\n'
|
||||
'LD = mips-linux-gnu-ld\n'
|
||||
|
@ -15,7 +15,7 @@ typedef struct OverlayInfo {
|
||||
|
||||
|
||||
extern u8 D_800C1C70;
|
||||
extern OverlayInfo D_800C1C74[];
|
||||
extern OverlayInfo overlay_table[];
|
||||
extern Vec4f D_800C2F94[];
|
||||
extern Vec3f D_800C2F04[];
|
||||
extern Vec3f D_800C2F4C[];
|
||||
|
@ -80,7 +80,7 @@ void func_8004E0E8(s32);
|
||||
Process* func_80041C04(s16);
|
||||
void SetPlayerLandedSpaceType(s16, u8);
|
||||
void ShowPlayerCoinChange(s32, s32);
|
||||
void func_800415CC(s16, s16);
|
||||
void func_800415CC(s16, s32);
|
||||
Process* func_800419D8(s16);
|
||||
Process* func_80048000(s32);
|
||||
void func_8005884C(Vec3f*);
|
||||
|
@ -1528,8 +1528,8 @@ segments:
|
||||
exclusive_ram_id: minigame
|
||||
subsegments:
|
||||
- [0x298AE0, c]
|
||||
- type: bin
|
||||
start: 0x29A2C0
|
||||
- [0x29A2C0, .data, 298AE0]
|
||||
- [0x29A3D0, .rodata, 298AE0]
|
||||
- type: code
|
||||
start: 0x29A400
|
||||
vram: 0x800F65E0
|
||||
|
@ -36,7 +36,7 @@ header = (
|
||||
'CFLAGS = -G0 -mips3 -mgp32 -mfp32 -Wa,--vr4300mul-off -D_LANGUAGE_C\n'
|
||||
'CPPFLAGS = -I. -I include -I include/PR -I include/engine -I include/gcc -I build/include -I src -DF3DEX_GBI_2 -DNDEBUG\n'
|
||||
'LDFLAGS = -T symbol_addrs.txt -T undefined_syms.txt -T undefined_funcs.txt -T undefined_funcs_auto.txt -T undefined_syms_auto.txt -T $LD_SCRIPT -Map $LD_MAP --no-check-sections\n'
|
||||
'CHECK_WARNINGS = -Wall -Wextra -Wno-format-security -Wno-unused-parameter -Wno-sign-compare -Wno-unused-variable -Wno-pointer-to-int-cast -Wno-int-to-pointer-cast -m32\n'
|
||||
'CHECK_WARNINGS = -Wall -Wextra -Wunused-but-set-variable -Wno-format-security -Wno-unused-parameter -Wno-sign-compare -Wno-unused-variable -Wno-pointer-to-int-cast -Wno-int-to-pointer-cast -m32\n'
|
||||
'CFLAGS_CHECK = -fsyntax-only -fsigned-char -nostdinc -fno-builtin -D CC_CHECK -D _LANGUAGE_C -std=gnu90 $CHECK_WARNINGS\n'
|
||||
'AS = mips-linux-gnu-as\n'
|
||||
'LD = mips-linux-gnu-ld\n'
|
||||
@ -121,23 +121,23 @@ with open('asm/nonmatchings/59E80/func_8005B6D0.s', 'w') as file:
|
||||
file.writelines(lines)
|
||||
|
||||
|
||||
# define the path to the file we want to modify
|
||||
filepath = "src/engine/gameman.c"
|
||||
# # define the path to the file we want to modify
|
||||
# filepath = "src/engine/gameman.c"
|
||||
|
||||
# read in the contents of the file
|
||||
with open(filepath, "r") as f:
|
||||
filedata = f.read()
|
||||
# # read in the contents of the file
|
||||
# with open(filepath, "r") as f:
|
||||
# filedata = f.read()
|
||||
|
||||
# define the text we want to search for and replace
|
||||
old_text = "void func_8001A454(void) {\n while (1) {\n SleepVProcess();"
|
||||
new_text = "void func_8001A454(void) {\n while (1) {\n cPerFrameFunction();"
|
||||
# # define the text we want to search for and replace
|
||||
# old_text = "void func_8001A454(void) {\n while (1) {\n SleepVProcess();"
|
||||
# new_text = "void func_8001A454(void) {\n while (1) {\n cPerFrameFunction();"
|
||||
|
||||
# do the replacement
|
||||
filedata = filedata.replace(old_text, new_text)
|
||||
# # do the replacement
|
||||
# filedata = filedata.replace(old_text, new_text)
|
||||
|
||||
# write the modified contents back to the file
|
||||
with open(filepath, "w") as f:
|
||||
f.write(filedata)
|
||||
# # write the modified contents back to the file
|
||||
# with open(filepath, "w") as f:
|
||||
# f.write(filedata)
|
||||
|
||||
file_path = "src/mod/mod_boot_func_hook.s"
|
||||
|
||||
@ -174,21 +174,21 @@ J 0x8005B730
|
||||
nop
|
||||
""")
|
||||
|
||||
file_path = "src/mod/mod_main.c"
|
||||
# file_path = "src/mod/mod_main.c"
|
||||
|
||||
if not os.path.exists(file_path):
|
||||
with open(file_path, "w") as f:
|
||||
f.write("""\
|
||||
#include "common.h"
|
||||
# if not os.path.exists(file_path):
|
||||
# with open(file_path, "w") as f:
|
||||
# f.write("""\
|
||||
# #include "common.h"
|
||||
|
||||
void cBootFunction(void) {
|
||||
//
|
||||
}
|
||||
# void cBootFunction(void) {
|
||||
# //
|
||||
# }
|
||||
|
||||
void cPerFrameFunction(void) {
|
||||
SleepVProcess(); //restore from hook
|
||||
}
|
||||
""")
|
||||
# void cPerFrameFunction(void) {
|
||||
# SleepVProcess(); //restore from hook
|
||||
# }
|
||||
# """)
|
||||
|
||||
|
||||
|
||||
|
@ -1,5 +1,6 @@
|
||||
compiler_command = "tools/gcc_2.7.2/linux/gcc -w -Ibuild/include -Iinclude -Isrc -Iassets/us -D_LANGUAGE_C -D_FINALROM -DVERSION=us -DF3DEX_GBI_2 -D_MIPS_SZLONG=32 -nostdinc -c -O1 -G0 -mips3 -mgp32 -mfp32 -fno-common -B tools/gcc_2.7.2/linux/ -Wuninitialized -Wmissing-braces -Wimplicit -Wredundant-decls -Wstrict-prototypes -DPERMUTER"
|
||||
compiler_command = "tools/gcc_2.7.2/linux/gcc -w -I. -I include -I include/PR -I include/engine -I include/gcc -D_LANGUAGE_C -D_FINALROM -DVERSION=us -DF3DEX_GBI_2 -D_MIPS_SZLONG=32 -nostdinc -c -O1 -G0 -mips3 -mgp32 -mfp32 -fno-common -B tools/gcc_2.7.2/linux/ -Wuninitialized -Wmissing-braces -Wimplicit -Wredundant-decls -Wstrict-prototypes -DPERMUTER"
|
||||
assembler_command = "mips-linux-gnu-as -EB -march=vr4300 -mtune=vr4300 -Iinclude -G 0 -I include -mips3 -mabi=32"
|
||||
compiler_type = "gcc"
|
||||
|
||||
[preserve_macros]
|
||||
"gs?[DS]P.*" = "void"
|
||||
|
@ -3,7 +3,7 @@
|
||||
|
||||
/* TODO: set .data here. */
|
||||
// u8 D_800C1C70;
|
||||
// OverlayInfo D_800C1C74[];
|
||||
// OverlayInfo overlay_table[];
|
||||
// Vec4f D_800C2F94[];
|
||||
// Vec3f D_800C2F04[];
|
||||
// Vec3f D_800C2F4C[];
|
||||
@ -44,12 +44,12 @@ void LoadOverlay(s32 overlayIndex) {
|
||||
u8 *bss_end;
|
||||
u8 *temp;
|
||||
|
||||
rom_start = D_800C1C74[overlayIndex].rom_start;
|
||||
rom_end = D_800C1C74[overlayIndex].rom_end;
|
||||
bss_start = D_800C1C74[overlayIndex].bss_start;
|
||||
bss_end = D_800C1C74[overlayIndex].bss_end;
|
||||
rom_start = overlay_table[overlayIndex].rom_start;
|
||||
rom_end = overlay_table[overlayIndex].rom_end;
|
||||
bss_start = overlay_table[overlayIndex].bss_start;
|
||||
bss_end = overlay_table[overlayIndex].bss_end;
|
||||
|
||||
HuRomDmaCodeRead(rom_start, D_800C1C74[overlayIndex].ram_start, rom_end - rom_start);
|
||||
HuRomDmaCodeRead(rom_start, overlay_table[overlayIndex].ram_start, rom_end - rom_start);
|
||||
|
||||
temp = bss_start;
|
||||
while (bss_start < bss_end) {
|
||||
|
@ -26,6 +26,6 @@ void func_800F8608_284848(void);
|
||||
void func_800F8C6C_284EAC(void);
|
||||
void func_800F8DF4_285034(void);
|
||||
void func_800F8C20_284E60(unkObjectStruct*);
|
||||
void func_8004DBD4(s32, u8); //for some reason defined differently between files
|
||||
void func_8004DBD4(s32, u8);
|
||||
void func_800F8B1C_284D5C(void);
|
||||
|
||||
|
@ -1,6 +1,97 @@
|
||||
#include "common.h"
|
||||
#include "298AE0.h"
|
||||
|
||||
Object* D_800F7DC0_29A2C0 = 0;
|
||||
Object* D_800F7DC4_29A2C4 = 0;
|
||||
s32 D_800F7DC8_29A2C8 = 0;
|
||||
s32 D_800F7DCC_29A2CC = 0;
|
||||
s32 D_800F7DD0_29A2D0 = 0;
|
||||
|
||||
Vec3f D_800F7DD4_29A2D4 = {-115.0f, 0.0f, 1120.0f};
|
||||
Vec3f D_800F7DE0_29A2E0 = {115.0f, 0.0f, 1520.0f};
|
||||
Vec3f D_800F7DEC_29A2EC = {0.0f, 0.0f, 1250.0f};
|
||||
|
||||
typedef struct unk_ovl5E_Struct0 {
|
||||
s32 unk0;
|
||||
s32 unk4;
|
||||
s32 unk8;
|
||||
s32 unkC;
|
||||
s32 unk10;
|
||||
s32 unk14;
|
||||
s32 unk18;
|
||||
} unk_ovl5E_Struct0;
|
||||
|
||||
s32 D_800F7DF8_29A2F8[] = {
|
||||
0x00000004, 0x000A00E7,
|
||||
0x000A00E8, 0x000A00E9,
|
||||
0x000A00EC
|
||||
};
|
||||
|
||||
unk_ovl5E_Struct0 D_800F7E0C_29A30C[] = {
|
||||
{
|
||||
0x00000006, 0x00010003,
|
||||
0x00010000, 0x000A008B,
|
||||
0x00010018, 0x0001000F,
|
||||
0x0001003F
|
||||
}
|
||||
};
|
||||
|
||||
unk_ovl5E_Struct0 D_800F7E28_29A328[] = {
|
||||
{
|
||||
0x00000006, 0x00020003,
|
||||
0x00020000, 0x000A008C,
|
||||
0x00020018, 0x0002000F,
|
||||
0x0002003F
|
||||
}
|
||||
};
|
||||
|
||||
unk_ovl5E_Struct0 D_800F7E44_29A344[] = {
|
||||
{
|
||||
0x00000006, 0x00060003,
|
||||
0x00060000, 0x000A008D,
|
||||
0x00060018, 0x0006000F,
|
||||
0x0006003F
|
||||
}
|
||||
};
|
||||
|
||||
unk_ovl5E_Struct0 D_800F7E60_29A360[] = {
|
||||
{
|
||||
0x00000006, 0x00030003,
|
||||
0x00030000, 0x000A008E,
|
||||
0x00030018, 0x0003000F,
|
||||
0x0003003F
|
||||
}
|
||||
};
|
||||
|
||||
unk_ovl5E_Struct0 D_800F7E7C_29A37C[] = {
|
||||
{
|
||||
0x00000006, 0x00040003,
|
||||
0x00040000, 0x000A008F,
|
||||
0x00040018, 0x0004000F,
|
||||
0x0004003F
|
||||
}
|
||||
};
|
||||
|
||||
unk_ovl5E_Struct0 D_800F7E98_29A398[] = {
|
||||
{
|
||||
0x00000006, 0x00050003,
|
||||
0x00050000, 0x000A0090,
|
||||
0x00050018, 0x0005000F,
|
||||
0x0005003F
|
||||
}
|
||||
};
|
||||
|
||||
unk_ovl5E_Struct0* D_800F7EB4_29A3B4[] = {
|
||||
D_800F7E0C_29A30C,
|
||||
D_800F7E28_29A328,
|
||||
D_800F7E44_29A344,
|
||||
D_800F7E60_29A360,
|
||||
D_800F7E7C_29A37C,
|
||||
D_800F7E98_29A398
|
||||
};
|
||||
|
||||
const u8 D_800F7ED0_29A3D0[4] = {1, 2, 4, 8};
|
||||
|
||||
void func_800F65E0_298AE0(void) {
|
||||
D_800F7F00 = D_800ED5DD;
|
||||
InitObjSystem(50, 50);
|
||||
@ -22,7 +113,7 @@ void func_800F65E0_298AE0(void) {
|
||||
}
|
||||
}
|
||||
|
||||
void func_800F66D8_298BD8(s32 arg0) {
|
||||
s32 func_800F66D8_298BD8(s32 arg0) {
|
||||
s16 sp18[4];
|
||||
unk_ovl_5E sp20;
|
||||
s32 i;
|
||||
@ -49,12 +140,312 @@ void func_800F66D8_298BD8(s32 arg0) {
|
||||
} else {
|
||||
func_800710A4(sp18[0], sp18[1], sp18[2], sp18[3]);
|
||||
}
|
||||
func_8006FCF0(arg0, 0, 1);
|
||||
return func_8006FCF0(arg0, 0, 1);
|
||||
}
|
||||
|
||||
INCLUDE_ASM(s32, "ovl_5E_StarVisitEternalStar/298AE0", func_800F6898_298D98);
|
||||
void SleepProcess(s32);
|
||||
void func_80040780(u8);
|
||||
void func_800415B0(u8, s32);
|
||||
s8 func_800415E8(u8);
|
||||
s32 func_8004D8A4(void);
|
||||
void func_8004DBD4(s32, u8);
|
||||
void func_80055994(u8, s32);
|
||||
extern s32 D_800F3FF0;
|
||||
extern u16 D_800F5460[];
|
||||
|
||||
INCLUDE_ASM(s32, "ovl_5E_StarVisitEternalStar/298AE0", func_800F76D4_299BD4);
|
||||
|
||||
void func_800F6898_298D98(void) {
|
||||
Object* Obj;
|
||||
f32 temp_f20;
|
||||
s32 windowID;
|
||||
s32 var_s0;
|
||||
s32 var_s2;
|
||||
s32 temp_s1;
|
||||
s32 i;
|
||||
u8 array[2];
|
||||
Vec3f* vec;
|
||||
|
||||
func_80040780(D_800F7F00);
|
||||
func_800415CC(D_800F7F00, (((GetRandomByte() & 0xFF) % 3) & 0xFF) + 8);
|
||||
SleepProcess(0x14);
|
||||
func_8004F4D4(D_800F7F08, 0, 2);
|
||||
func_8004E3E0(0, &D_800F7DEC_29A2EC, 0x14, D_800F7F08);
|
||||
SleepProcess(0xF);
|
||||
func_8004F4D4(D_800F7F08, 3, 0);
|
||||
func_8004F40C(D_800F7F08, 1, 2);
|
||||
func_8004EE14(0, D_800F32A0, 0xA, D_800F7F08);
|
||||
func_8004F9F4(D_800F7F0C, D_800F7F08->coords.x, D_800F7F08->coords.y - 22.0f, D_800F7F08->coords.z + 50.0f, 1);
|
||||
SleepProcess(3);
|
||||
func_8004F9F4(D_800F7F0C, D_800F7F08->coords.x + 20.0f, D_800F7F08->coords.y - 22.0f, D_800F7F08->coords.z + 50.0f, 1);
|
||||
SleepProcess(3);
|
||||
func_8004F9F4(D_800F7F0C, D_800F7F08->coords.x - 20.0f, D_800F7F08->coords.y - 22.0f, D_800F7F08->coords.z + 50.0f, 1);
|
||||
SleepProcess(4);
|
||||
|
||||
var_s0 = 0;
|
||||
var_s2 = 0;
|
||||
temp_s1 = 0;
|
||||
|
||||
while (var_s0 != 2) {
|
||||
switch (var_s0) {
|
||||
case 0:
|
||||
if (((gPlayers[D_800F7F00].unk_06 & 1) && (var_s2 >= 0xF)) || (!(gPlayers[D_800F7F00].unk_06 & 1) && (D_800F5460[gPlayers[D_800F7F00].flags] & 0x8000))) {
|
||||
var_s0 = 1;
|
||||
func_8003E81C(D_800F7F08, 2, 0);
|
||||
func_8004F40C(D_800F7F08, 1, 2);
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if (++temp_s1 == 5) {
|
||||
var_s0 = 2;
|
||||
func_800413B0(D_800F7F00);
|
||||
}
|
||||
break;
|
||||
}
|
||||
var_s2++;
|
||||
SleepVProcess();
|
||||
}
|
||||
|
||||
SleepProcess(0x28);
|
||||
array[0] = func_800415E8(D_800F7F00);
|
||||
func_800405DC(D_800F7F00);
|
||||
func_8004F4D4(D_800F7F08, 0, 2);
|
||||
func_8004E3E0(0, &D_800F7DE0_29A2E0, 0x14, D_800F7F08);
|
||||
SleepProcess(0xF);
|
||||
func_8004F4D4(D_800F7F08, 3, 0);
|
||||
func_8004F40C(D_800F7F08, 1, 2);
|
||||
func_8004EE14(0, &D_800F7DD4_29A2D4, 0xA, D_800F7F08);
|
||||
func_8004F9F4(D_800F7F0C, D_800F7F08->coords.x, D_800F7F08->coords.y - 22.0f, D_800F7F08->coords.z + 50.0f, 1);
|
||||
SleepProcess(3);
|
||||
func_8004F9F4(D_800F7F0C, D_800F7F08->coords.x + 20.0f, D_800F7F08->coords.y - 22.0f, D_800F7F08->coords.z + 50.0f, 1);
|
||||
SleepProcess(3);
|
||||
func_8004F9F4(D_800F7F0C, D_800F7F08->coords.x - 20.0f, D_800F7F08->coords.y - 22.0f, D_800F7F08->coords.z + 50.0f, 1);
|
||||
SleepProcess(4);
|
||||
func_80040780(D_800F7F00);
|
||||
|
||||
while (1) {
|
||||
array[1] = GetRandomByte() % 10 + 1;
|
||||
if (array[1] == array[0]) {
|
||||
continue;
|
||||
} else {
|
||||
func_800415CC(D_800F7F00, array[1]);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
SleepProcess(0x14);
|
||||
func_8004F4D4(D_800F7F04, 3, 2);
|
||||
func_8004E3E0(0, &D_800F7DEC_29A2EC, 0x14, D_800F7F04);
|
||||
SleepProcess(0xF);
|
||||
func_8004F4D4(D_800F7F04, -1, 2);
|
||||
func_8004EE14(0, D_800F32A0, 0xA, D_800F7F04);
|
||||
SleepProcess(0xA);
|
||||
|
||||
var_s2 = 0;
|
||||
temp_s1 = 0;
|
||||
var_s0 = 0;
|
||||
|
||||
while (var_s0 != 2) {
|
||||
switch (var_s0) {
|
||||
case 0:
|
||||
if ((var_s2 >= 0xF)) {
|
||||
var_s0 = 1;
|
||||
func_8003E81C(D_800F7F04, 0, 0);
|
||||
func_8004F40C(D_800F7F04, -1, 2);
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if (++temp_s1 == 5) {
|
||||
var_s0 = 2;
|
||||
func_800413B0(D_800F7F00);
|
||||
}
|
||||
break;
|
||||
}
|
||||
var_s2++;
|
||||
SleepVProcess();
|
||||
}
|
||||
|
||||
SleepProcess(0x28);
|
||||
array[1] = func_800415E8(D_800F7F00);
|
||||
func_800405DC(D_800F7F00);
|
||||
func_800415B0(D_800F7F00, D_800F3FF0);
|
||||
func_8004F4D4(D_800F7F04, 3, 2);
|
||||
func_8004EE14(0, &D_800F7DD4_29A2D4, 0xA, D_800F7F04);
|
||||
SleepProcess(0xA);
|
||||
func_8004E3E0(0, &D_800F7DD4_29A2D4, 0x14, D_800F7F04);
|
||||
SleepProcess(0xF);
|
||||
func_8004F4D4(D_800F7F04, -1, 2);
|
||||
func_8004EE14(0, &D_800F7DE0_29A2E0, 0xA, D_800F7F04);
|
||||
SleepProcess(0xA);
|
||||
if (array[0] > array[1]) {
|
||||
windowID = CreateTextWindow(0x3C, 0x3C, 0xE, 3);
|
||||
LoadStringIntoWindow(windowID, (void* )0x206, -1, -1);
|
||||
func_8006E070(windowID, 0);
|
||||
ShowTextWindow(windowID);
|
||||
func_8004DBD4(windowID, D_800F7F00);
|
||||
HideTextWindow(windowID);
|
||||
func_8004F4D4(D_800F7F04, 2, 0);
|
||||
func_8004F504(D_800F7F04);
|
||||
func_800500A4();
|
||||
PlaySound(0x44);
|
||||
PlaySound(0x6D);
|
||||
D_800F7DC0_29A2C0 = CreateObject(0x40U, NULL);
|
||||
func_800A0D00(&D_800F7DC0_29A2C0->coords, D_800F7DD4_29A2D4.x, D_800F7DD4_29A2D4.y + 200.0f, D_800F7DD4_29A2D4.z);
|
||||
func_800A0D00(&D_800F7DC0_29A2C0->xScale, 0.5f, 0.5f, 0.5f);
|
||||
D_800F7DC4_29A2C4 = func_80042728(D_800F7DC0_29A2C0, 0);
|
||||
|
||||
for (i = 0; i < 0xB5; i += 5) {
|
||||
func_800A0D00(&D_800F7DC0_29A2C0->coords, D_800F7DD4_29A2D4.x + (((D_800F7DE0_29A2E0.x - D_800F7DD4_29A2D4.x) * i) / 180.0f), D_800F7DD4_29A2D4.y + 200.0f + (sinf(i * 0.017453292519943295) * 100.0f), D_800F7DD4_29A2D4.z + (((D_800F7DE0_29A2E0.z - D_800F7DD4_29A2D4.z) * i) / 180.0));
|
||||
Obj = D_800F7DC0_29A2C0;
|
||||
Obj->unk_18.x = sinf((i * 0xA) * 0.017453292519943295);
|
||||
Obj = D_800F7DC0_29A2C0;
|
||||
Obj->unk_18.z = cosf((i * 0xA) * 0.017453292519943295);
|
||||
SleepVProcess();
|
||||
}
|
||||
|
||||
PlaySound(0x474);
|
||||
func_80055994(D_800F7F00, 1);
|
||||
func_800503B0(D_800F7F00, 4);
|
||||
DestroyObject(D_800F7DC0_29A2C0);
|
||||
D_800F7DC0_29A2C0 = NULL;
|
||||
func_800427D4(D_800F7DC4_29A2C4);
|
||||
D_800F7DC4_29A2C4 = NULL;
|
||||
func_80021CDC(*D_800F7F08->unk_3C->unk_40, gPlayers[D_800F7F00].characterID, 0x81);
|
||||
func_8004CCD0(&D_800F7F08->coords, &D_800F32A0->coords, &D_800F7F08->unk_18);
|
||||
func_8003E81C(D_800F7F08, 4, 0U);
|
||||
gPlayers[D_800F7F00].starAmount++;
|
||||
D_800F7DD0_29A2D0 = func_8004D8A4();
|
||||
SleepProcess(0x24);
|
||||
func_80060468(0x443, gPlayers[D_800F7F00].characterID);
|
||||
SleepProcess(0x30);
|
||||
func_80050160();
|
||||
D_800F7DCC_29A2CC = 1;
|
||||
return;
|
||||
}
|
||||
|
||||
if (gPlayers[D_800F7F00].starAmount == 0) {
|
||||
windowID = CreateTextWindow(0x50, 0x3C, 0xE, 3);
|
||||
LoadStringIntoWindow(windowID, (void* )0x204, -1, -1);
|
||||
func_8006E070(windowID, 0);
|
||||
ShowTextWindow(windowID);
|
||||
func_8004DBD4(windowID, D_800F7F00);
|
||||
HideTextWindow(windowID);
|
||||
func_8004F4D4(D_800F7F04, 1, 2);
|
||||
} else {
|
||||
windowID = CreateTextWindow(0x50, 0x3C, 0xB, 3);
|
||||
LoadStringIntoWindow(windowID, (void* )0x205, -1, -1);
|
||||
func_8006E070(windowID, 0);
|
||||
ShowTextWindow(windowID);
|
||||
func_8004DBD4(windowID, D_800F7F00);
|
||||
HideTextWindow(windowID);
|
||||
}
|
||||
|
||||
func_8004F4D4(D_800F7F08, 5, 0);
|
||||
func_8004F504(D_800F7F08);
|
||||
|
||||
if (gPlayers[D_800F7F00].starAmount != 0) {
|
||||
func_800500A4();
|
||||
PlaySound(0x44);
|
||||
PlaySound(0x6D);
|
||||
gPlayers[D_800F7F00].starAmount--;
|
||||
func_800503B0((s32) D_800F7F00, 6);
|
||||
D_800F7DC0_29A2C0 = CreateObject(0x40U, NULL);
|
||||
func_800A0D00(&D_800F7DC0_29A2C0->coords, D_800F7DE0_29A2E0.x, D_800F7DE0_29A2E0.y + 200.0f, D_800F7DE0_29A2E0.z);
|
||||
func_800A0D00(&D_800F7DC0_29A2C0->xScale, 0.5f, 0.5f, 0.5f);
|
||||
D_800F7DC4_29A2C4 = func_80042728(D_800F7DC0_29A2C0, 0);
|
||||
|
||||
for (i = 0; i < 0xB5; i += 5) {
|
||||
func_800A0D00(&D_800F7DC0_29A2C0->coords, D_800F7DE0_29A2E0.x + (((D_800F7DD4_29A2D4.x - D_800F7DE0_29A2E0.x) * i) / 180.0f), (D_800F7DE0_29A2E0.y + 200.0f) + (sinf(i * 0.017453292519943295) * 100.0f), D_800F7DE0_29A2E0.z + (((D_800F7DD4_29A2D4.z - D_800F7DE0_29A2E0.z) * i) / 180.0));
|
||||
Obj = D_800F7DC0_29A2C0;
|
||||
Obj->unk_18.x = sinf((i * 0xA * 0.017453292519943295));
|
||||
Obj = D_800F7DC0_29A2C0;
|
||||
Obj->unk_18.z = cosf((i * 0xA * 0.017453292519943295));
|
||||
SleepVProcess();
|
||||
}
|
||||
|
||||
PlaySound(0x474);
|
||||
func_80055994(D_800F7F00, 2);
|
||||
DestroyObject(D_800F7DC0_29A2C0);
|
||||
D_800F7DC0_29A2C0 = NULL;
|
||||
func_800427D4(D_800F7DC4_29A2C4);
|
||||
D_800F7DC4_29A2C4 = NULL;
|
||||
func_8004F4D4(D_800F7F04, 1, 0);
|
||||
func_8004F40C(D_800F7F04, -1, 2);
|
||||
SleepProcess(0x24);
|
||||
SleepProcess(0x30);
|
||||
func_80050160();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void func_800F76D4_299BD4(void) {
|
||||
s32 windowID;
|
||||
s32 temp_s0;
|
||||
|
||||
if (D_800C597A == 0) {
|
||||
func_800421E0();
|
||||
SleepProcess(0x10);
|
||||
PlaySound(0xF0);
|
||||
SleepProcess(10);
|
||||
} else {
|
||||
SleepProcess(8);
|
||||
}
|
||||
|
||||
if (gPlayers[D_800F7F00].starAmount >= 99) {
|
||||
windowID = CreateTextWindow(0x78, 0x3C, 0xC, 4);
|
||||
LoadStringIntoWindow(windowID, (void*)0x207, -1, -1);
|
||||
func_8006E070(windowID, 0);
|
||||
ShowTextWindow(windowID);
|
||||
func_8004DBD4(windowID, D_800F7F00);
|
||||
HideTextWindow(windowID);
|
||||
}
|
||||
else if (gPlayers[D_800F7F00].coinAmount < 20) {
|
||||
windowID = CreateTextWindow(0x78, 0x28, 0xC, 6);
|
||||
LoadStringIntoWindow(windowID, (void*)0x200, -1, -1);
|
||||
func_8006E070(windowID, 0);
|
||||
ShowTextWindow(windowID);
|
||||
func_8004DBD4(windowID, D_800F7F00);
|
||||
HideTextWindow(windowID);
|
||||
} else {
|
||||
windowID = CreateTextWindow(0x6E, 0x28, 0xC, 7);
|
||||
LoadStringIntoWindow(windowID, (void*)0x201, -1, -1);
|
||||
func_8006E070(windowID, 0);
|
||||
ShowTextWindow(windowID);
|
||||
while ((func_8006FCC0(windowID)) != 0) {
|
||||
SleepVProcess();
|
||||
}
|
||||
|
||||
temp_s0 = func_800F66D8_298BD8(windowID);
|
||||
HideTextWindow(windowID);
|
||||
|
||||
if (temp_s0 == 2) {
|
||||
D_800F7DC8_29A2C8 = 1;
|
||||
} else if (temp_s0 == 1) {
|
||||
windowID = CreateTextWindow(0x78, 0x50, 9, 2);
|
||||
LoadStringIntoWindow(windowID, (void*)0x202, -1, -1);
|
||||
func_8006E070(windowID, 0);
|
||||
ShowTextWindow(windowID);
|
||||
func_8004DBD4(windowID, D_800F7F00);
|
||||
HideTextWindow(windowID);
|
||||
} else {
|
||||
func_80055960(D_800F7F00, -0x14);
|
||||
SleepProcess(0x1E);
|
||||
windowID = CreateTextWindow(0x32, 0x3C, 0x13, 3);
|
||||
LoadStringIntoWindow(windowID, (void*)0x203, -1, -1);
|
||||
func_8006E070(windowID, 0);
|
||||
ShowTextWindow(windowID);
|
||||
func_8004DBD4(windowID, D_800F7F00);
|
||||
HideTextWindow(windowID);
|
||||
func_800F6898_298D98();
|
||||
}
|
||||
}
|
||||
|
||||
D_800F5144 = 1;
|
||||
|
||||
while (1) {
|
||||
SleepVProcess();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void func_800F7978_299E78(void) {
|
||||
if (func_80072718() == 0) {
|
||||
@ -64,22 +455,22 @@ void func_800F7978_299E78(void) {
|
||||
func_80070ED4();
|
||||
func_80041370();
|
||||
func_800405DC(D_800F7F00);
|
||||
if (D_800F7DC8 == 0) {
|
||||
if (D_800F7DC8_29A2C8 == 0) {
|
||||
func_8005DFB8(1);
|
||||
return;
|
||||
}
|
||||
func_8004F284();
|
||||
func_8004F28C(0x5E, D_800F7DC8);
|
||||
func_8004F28C(0x5E, D_800F7DC8_29A2C8);
|
||||
}
|
||||
}
|
||||
|
||||
void func_800F7A08_299F08(unkObjectStruct* arg0) {
|
||||
if (D_800F5144 != 0) {
|
||||
if (D_800F7DC8 != 0) {
|
||||
if (D_800F7DC8_29A2C8 != 0) {
|
||||
func_800726AC(6, 8);
|
||||
} else {
|
||||
if (D_800F7DCC != 0) {
|
||||
if (D_800F7DD0 == 1) {
|
||||
if (D_800F7DCC_29A2CC != 0) {
|
||||
if (D_800F7DD0_29A2D0 == 1) {
|
||||
func_800601D4(0x20);
|
||||
}
|
||||
}
|
||||
@ -94,27 +485,49 @@ void func_800F7A90_299F90(void) {
|
||||
func_8004F2AC();
|
||||
func_8004F8DC();
|
||||
D_800F7F0C = func_8004F954(0x26, 0x20);
|
||||
D_800F7F04 = CreateObject(0x78, &D_800F7DF8);
|
||||
D_800F7F04->coords.x = D_800F7DD4.x;
|
||||
D_800F7F04->coords.y = D_800F7DD4.y;
|
||||
D_800F7F04->coords.z = D_800F7DD4.z;
|
||||
D_800F7F04 = CreateObject(0x78, &D_800F7DF8_29A2F8);
|
||||
D_800F7F04->coords.x = D_800F7DD4_29A2D4.x;
|
||||
D_800F7F04->coords.y = D_800F7DD4_29A2D4.y;
|
||||
D_800F7F04->coords.z = D_800F7DD4_29A2D4.z;
|
||||
D_800F7F04->xScale = D_800F7F04->yScale = D_800F7F04->zScale = 1.5f;
|
||||
D_800F7F08 = CreateObject(func_80052F04(D_800F7F00), D_800F7EB4[gPlayers[D_800F7F00].characterID]);
|
||||
D_800F7F08->coords.x = D_800F7DE0.x;
|
||||
D_800F7F08->coords.y = D_800F7DE0.y;
|
||||
D_800F7F08->coords.z = D_800F7DE0.z;
|
||||
D_800F7F08 = CreateObject(func_80052F04(D_800F7F00), D_800F7EB4_29A3B4[gPlayers[D_800F7F00].characterID]);
|
||||
D_800F7F08->coords.x = D_800F7DE0_29A2E0.x;
|
||||
D_800F7F08->coords.y = D_800F7DE0_29A2E0.y;
|
||||
D_800F7F08->coords.z = D_800F7DE0_29A2E0.z;
|
||||
func_80021B14(*D_800F7F08->unk_3C->unk_40, gPlayers[D_800F7F00].characterID, 0x80);
|
||||
func_8004CCD0(&D_800F7F08->coords, &D_800F7F04->coords, &D_800F7F08->unk_18);
|
||||
func_8004CCD0(&D_800F7F04->coords, &D_800F7F08->coords, &D_800F7F04->unk_18);
|
||||
func_80052E84(D_800F7F00);
|
||||
func_8003E664(gPlayers[D_800F7F00].playerObj);
|
||||
(gPlayers[D_800F7F00].playerObj)->coords.x = D_800F7DEC.x;
|
||||
(gPlayers[D_800F7F00].playerObj)->coords.y = D_800F7DEC.y;
|
||||
(gPlayers[D_800F7F00].playerObj)->coords.z = D_800F7DEC.z;
|
||||
(gPlayers[D_800F7F00].playerObj)->coords.x = D_800F7DEC_29A2EC.x;
|
||||
(gPlayers[D_800F7F00].playerObj)->coords.y = D_800F7DEC_29A2EC.y;
|
||||
(gPlayers[D_800F7F00].playerObj)->coords.z = D_800F7DEC_29A2EC.z;
|
||||
}
|
||||
|
||||
INCLUDE_ASM(s32, "ovl_5E_StarVisitEternalStar/298AE0", func_800F7C88_29A188);
|
||||
void func_800F7C88_29A188(void) {
|
||||
DestroyObject(D_800F7F08);
|
||||
DestroyObject(D_800F7F04);
|
||||
|
||||
INCLUDE_ASM(s32, "ovl_5E_StarVisitEternalStar/298AE0", func_800F7CF8_29A1F8);
|
||||
if (D_800F7DC0_29A2C0 != NULL) {
|
||||
DestroyObject(D_800F7DC0_29A2C0);
|
||||
}
|
||||
if (D_800F7DC4_29A2C4 != NULL) {
|
||||
func_800427D4(D_800F7DC4_29A2C4);
|
||||
}
|
||||
|
||||
INCLUDE_ASM(s32, "ovl_5E_StarVisitEternalStar/298AE0", func_800F7D98_29A298);
|
||||
func_80052FD4(D_800F7F00);
|
||||
func_8004F2EC();
|
||||
}
|
||||
|
||||
void func_800F7CF8_29A1F8(void) {
|
||||
func_800178A0(1);
|
||||
func_80017660(0, 0.0f, 0.0f, 320.0f, 240.0f);
|
||||
func_800176C4(0, 640.0f, 480.0f, 511.0f, 640.0f, 480.0f, 511.0f);
|
||||
LoadBackgroundData(&D_FE2310);
|
||||
LoadBackgroundIndex(0x47);
|
||||
}
|
||||
|
||||
void func_800F7D98_29A298(void) {
|
||||
func_8004A140();
|
||||
func_80049F0C();
|
||||
}
|
||||
|
@ -6,11 +6,7 @@ typedef struct unk_ovl_5E {
|
||||
/* 0x00 */ u8 unk_00[4];
|
||||
} unk_ovl_5E;
|
||||
|
||||
extern Vec3f D_800F32D0;
|
||||
extern Vec3f D_800F7DD4;
|
||||
extern Vec3f D_800F7DE0;
|
||||
extern Vec3f D_800F7DEC;
|
||||
extern Vec3f D_800F7DF8;
|
||||
|
||||
extern unkObjectStruct* D_800F7EB4[];
|
||||
extern u8 D_800F7F00;
|
||||
extern Object* D_800F7F04;
|
||||
@ -29,3 +25,21 @@ void func_800F7D98_29A298(void);
|
||||
extern s32 D_800F7DC8;
|
||||
extern unk_ovl_5E D_800F7ED0;
|
||||
extern u8 D_800F7F00;
|
||||
extern Object* D_800F7DC0;
|
||||
extern Object* D_800F7DC4;
|
||||
void SleepProcess(s32);
|
||||
void func_8004DBD4(s32, u8);
|
||||
s32 func_800F66D8_298BD8(s32);
|
||||
void func_800F6898_298D98(void);
|
||||
void SleepProcess(s32);
|
||||
void func_80040780(u8);
|
||||
void func_800415B0(u8, s32);
|
||||
s8 func_800415E8(u8);
|
||||
s32 func_8004D8A4(void);
|
||||
void func_8004DBD4(s32, u8);
|
||||
void func_80055994(u8, s32);
|
||||
extern s32 D_800F3FF0;
|
||||
extern u16 D_800F5460[];
|
||||
extern Vec3f D_800F7DD4;
|
||||
extern Vec3f D_800F7DE0;
|
||||
|
||||
|
@ -13,6 +13,7 @@ Vec3f vec1;
|
||||
Vec3f vec2;
|
||||
} unkUserData;
|
||||
|
||||
void func_8005B860(s32);
|
||||
extern testStruct2 D_800F6F00[];
|
||||
void func_8005C3FC(s32, s32);
|
||||
void func_8005CC3C(void);
|
||||
|
@ -13,6 +13,8 @@ Vec3f vec1;
|
||||
Vec3f vec2;
|
||||
} unkUserData;
|
||||
|
||||
void func_8005CC3C(void);
|
||||
void func_8005C3FC(s32, s32);
|
||||
extern s16 D_800ED154;
|
||||
void func_8005B860(s32);
|
||||
void func_800F67BC_2FA2FC(void);
|
||||
|
@ -469,6 +469,8 @@ sprintf = 0x8008C490;
|
||||
proutSprintf = 0x8008C4E8;
|
||||
osSyncPrintf = 0x8008C520;
|
||||
|
||||
overlay_table = 0x800C1C74;
|
||||
|
||||
aisetfreq_rodata_0000 = 0x800CC640;
|
||||
osViClock = 0x800C7728;
|
||||
__CartRomHandle = 0x800F2A80;
|
||||
|
79
tools/asm_sizes.py
Executable file
79
tools/asm_sizes.py
Executable file
@ -0,0 +1,79 @@
|
||||
#! /usr/bin/python3
|
||||
|
||||
import json
|
||||
import glob
|
||||
import os
|
||||
import argparse
|
||||
from enum import IntEnum
|
||||
|
||||
|
||||
script_dir = os.path.dirname(os.path.realpath(__file__))
|
||||
asm_dir = script_dir + "/../asm/nonmatchings"
|
||||
|
||||
modes = [ "min", "max", "avg", "total", "size" ]
|
||||
|
||||
sizes = {}
|
||||
|
||||
funcs = {}
|
||||
|
||||
|
||||
# Calculate the number of instructions in a .s file
|
||||
def calc_insns(f_path):
|
||||
ret = 0
|
||||
with open(f_path) as f:
|
||||
f_lines = f.readlines()
|
||||
for line in f_lines:
|
||||
if line.startswith("/* "):
|
||||
ret += 1
|
||||
funcs[f_path.split("/")[-1][:-2]] = ret
|
||||
return ret
|
||||
|
||||
|
||||
# Calculate different data points for each .c files and store them as a Tuple
|
||||
def do_dir(root, dir):
|
||||
max = 0
|
||||
min = 0
|
||||
total = 0
|
||||
|
||||
files = glob.glob(os.path.join(root, dir) + "/*.s")
|
||||
|
||||
for f in files:
|
||||
amt = calc_insns(f)
|
||||
if amt > max:
|
||||
max = amt
|
||||
if min == 0 or amt < min:
|
||||
min = amt
|
||||
total += amt
|
||||
|
||||
avg = 0 if len(files) == 0 else total / len(files)
|
||||
|
||||
sizes[root + "/" + dir] = ((min, max, total, avg, len(files)))
|
||||
|
||||
|
||||
parser = argparse.ArgumentParser(description="A tool to receive information about the number of non-matching .s files "
|
||||
+"per .c file, or the size of .s files, measured by their number of instructions. "
|
||||
+"Option -p is used by default if no option is specified.")
|
||||
group = parser.add_mutually_exclusive_group()
|
||||
group.add_argument("-f", "--files", help="Default. Print the number of non-matching .s files per .c file, ordered by size.", action='store_true', required=False)
|
||||
group.add_argument("-a", "--alphabetical", help="Print the size of .s files, ordered by name.", action='store_true', required=False)
|
||||
group.add_argument("-s", "--size", help="Print the size of .s files, ordered by size.", action='store_true', required=False)
|
||||
parser.add_argument("-l", "--limit", help="Only print the .c --files that are greater than or equal to the value.", type=int, default=0, required=False)
|
||||
parser.add_argument("-m", "--mode", help="Switches between output modes for --files. Allowed values are: {min, max, avg, total, size}.", choices=modes, default="size", metavar='', required=False)
|
||||
|
||||
args = parser.parse_args()
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
for root, dirs, files in os.walk(asm_dir):
|
||||
for asm_dir in dirs:
|
||||
do_dir(root, asm_dir)
|
||||
|
||||
if args.alphabetical:
|
||||
print(json.dumps(dict(sorted(funcs.items(), key=lambda f: f[0])), indent=4))
|
||||
elif args.size:
|
||||
print(json.dumps(dict(sorted(funcs.items(), key=lambda f: f[1])), indent=4))
|
||||
else:
|
||||
for thing in sorted(sizes.keys(), key=lambda x: sizes[x][modes.index(args.mode)]):
|
||||
val = sizes[thing][modes.index(args.mode)]
|
||||
if val > args.limit:
|
||||
print(thing.split("nonmatchings/")[1].ljust(50) + str(val))
|
9
tools/find_duplicates.py
Normal file → Executable file
9
tools/find_duplicates.py
Normal file → Executable file
@ -11,12 +11,12 @@ import sys
|
||||
|
||||
script_dir = os.path.dirname(os.path.realpath(__file__))
|
||||
root_dir = script_dir + "/../"
|
||||
asm_dir = root_dir + "asm/"
|
||||
asm_dir = root_dir + "asm/nonmatchings/"
|
||||
build_dir = root_dir + "build/"
|
||||
|
||||
|
||||
def read_rom():
|
||||
with open(root_dir + "/baserom.us.z64", "rb") as f:
|
||||
with open(root_dir + "baserom.us.z64", "rb") as f:
|
||||
return f.read()
|
||||
|
||||
|
||||
@ -205,11 +205,6 @@ def all_matches(all_funcs_flag):
|
||||
i += 1
|
||||
print("File matching progress: {:%}".format(i / (len(s_files) - iter_limit)), end='\r')
|
||||
|
||||
# symbol doesn't exists?
|
||||
if file not in map_offsets:
|
||||
to_match_files.remove(file)
|
||||
continue
|
||||
|
||||
if get_symbol_length(file) < 16:
|
||||
to_match_files.remove(file)
|
||||
continue
|
||||
|
@ -99,6 +99,7 @@ def main(args):
|
||||
"color": color.hex,
|
||||
}))
|
||||
else:
|
||||
print (f" Matching Size:{matching_size}\n Nonmatching Size:{nonmatching_size}\n Calculated Size:{matching_size + nonmatching_size}\n Total Size:{total_size}\n")
|
||||
if matching_size + nonmatching_size != total_size:
|
||||
print("Warning: category/total size mismatch!\n")
|
||||
print(f"{len(matching_funcs)} matched functions / {len(all_funcs)} total ({funcs_matching_ratio:.2f}%)")
|
||||
|
Loading…
Reference in New Issue
Block a user