From 2b19923238ad0516ca66fb4446a7d55d3d358bf7 Mon Sep 17 00:00:00 2001 From: David Benepe Date: Mon, 7 Jun 2021 15:44:39 -0500 Subject: [PATCH] Added bss for unknown_001050, unknown_003260, and unknown_005740 --- asm/entrypoint.s | 12 +- .../unknown_003260/audioNewThread.s | 8 +- bss.txt | 1165 +++++++++++++++++ src/unknown_001050.c | 74 +- src/unknown_003260.c | 52 +- src/unknown_005740.c | 22 + tools/python/generate_ld.py | 20 +- tools/python/undefined_sym_fix.py | 54 +- undefined_syms.txt | 145 +- 9 files changed, 1411 insertions(+), 141 deletions(-) create mode 100644 bss.txt diff --git a/asm/entrypoint.s b/asm/entrypoint.s index 1adf1b38..0e10d93f 100644 --- a/asm/entrypoint.s +++ b/asm/entrypoint.s @@ -8,11 +8,15 @@ .set noreorder # dont insert nops after branches .set gp=64 # 64-bit instructions are used +.section .text + +# .word __BSS_SECTION_SIZE # Should equal 0x41490 + glabel entrypoint -/* 001000 80000400 3C08800F */ lui $t0, %hi(D_800EBF60) # $t0, 0x800f -/* 001004 80000404 3C090004 */ lui $t1, (0x00041490 >> 16) # lui $t1, 4 -/* 001008 80000408 2508BF60 */ addiu $t0, %lo(D_800EBF60) # addiu $t0, $t0, -0x40a0 -/* 00100C 8000040C 35291490 */ ori $t1, (0x00041490 & 0xFFFF) # ori $t1, $t1, 0x1490 +/* 001000 80000400 3C08800F */ lui $t0, %hi(gBssSectionStart) # $t0, 0x800f +/* 001004 80000404 3C090004 */ lui $t1, (0x41490 >> 16) # lui $t1, 4 +/* 001008 80000408 2508BF60 */ addiu $t0, %lo(gBssSectionStart) # addiu $t0, $t0, -0x40a0 +/* 00100C 8000040C 35291490 */ ori $t1, (0x41490 & 0xFFFF) # ori $t1, $t1, 0x1490 .L80000410: /* 001010 80000410 2129FFF8 */ addi $t1, $t1, -8 /* 001014 80000414 AD000000 */ sw $zero, ($t0) diff --git a/asm/non_matchings/unknown_003260/audioNewThread.s b/asm/non_matchings/unknown_003260/audioNewThread.s index f9c51000..1713d444 100644 --- a/asm/non_matchings/unknown_003260/audioNewThread.s +++ b/asm/non_matchings/unknown_003260/audioNewThread.s @@ -109,10 +109,10 @@ glabel audioNewThread /* 0033F8 800027F8 3C028012 */ lui $v0, %hi(D_80119240) # $v0, 0x8012 /* 0033FC 800027FC 24429240 */ addiu $v0, %lo(D_80119240) # addiu $v0, $v0, -0x6dc0 /* 003400 80002800 3C128012 */ lui $s2, %hi(D_80119240) # $s2, 0x8012 -/* 003404 80002804 3C108012 */ lui $s0, %hi(D_80119254) # $s0, 0x8012 +/* 003404 80002804 3C108012 */ lui $s0, %hi(D_80119240+20) # $s0, 0x8012 /* 003408 80002808 AC400004 */ sw $zero, 4($v0) /* 00340C 8000280C AC400000 */ sw $zero, ($v0) -/* 003410 80002810 26109254 */ addiu $s0, %lo(D_80119254) # addiu $s0, $s0, -0x6dac +/* 003410 80002810 26109254 */ addiu $s0, %lo(D_80119240+20) # addiu $s0, $s0, -0x6dac /* 003414 80002814 26529240 */ addiu $s2, %lo(D_80119240) # addiu $s2, $s2, -0x6dc0 /* 003418 80002818 00008825 */ move $s1, $zero .L8000281C: @@ -203,9 +203,9 @@ glabel audioNewThread /* 00355C 8000295C 0C01C3BE */ jal func_80070EF8 /* 003560 80002960 00801025 */ move $v0, $a0 /* 003564 80002964 3C108011 */ lui $s0, %hi(D_80115F98) # $s0, 0x8011 -/* 003568 80002968 3C118011 */ lui $s1, %hi(D_80115FA4) # $s1, 0x8011 +/* 003568 80002968 3C118011 */ lui $s1, %hi(D_80115FA0+4) # $s1, 0x8011 /* 00356C 8000296C 00401825 */ move $v1, $v0 -/* 003570 80002970 26315FA4 */ addiu $s1, %lo(D_80115FA4) # addiu $s1, $s1, 0x5fa4 +/* 003570 80002970 26315FA4 */ addiu $s1, %lo(D_80115FA0+4) # addiu $s1, $s1, 0x5fa4 /* 003574 80002974 26105F98 */ addiu $s0, %lo(D_80115F98) # addiu $s0, $s0, 0x5f98 .L80002978: /* 003578 80002978 8E660014 */ lw $a2, 0x14($s3) diff --git a/bss.txt b/bss.txt new file mode 100644 index 00000000..3d486755 --- /dev/null +++ b/bss.txt @@ -0,0 +1,1165 @@ +unknown_001050 + + +unknown_003260 + + +unknown_005740 + + +unknown_00BC20 +D_8011AD20; +D_8011AD21; +D_8011AD22; +D_8011AD24; +D_8011AD25; +D_8011AD26; +D_8011AD28; +D_8011AD30; +D_8011AD34; +D_8011AD38; +D_8011AD3C; +D_8011AD3D; +D_8011AD3E; +D_8011AD40; +D_8011AD44; +D_8011AD45; +D_8011AD46; +D_8011AD48; +D_8011AD4A; +D_8011AD4C; +D_8011AD4E; +D_8011AD50; +D_8011AD51; +D_8011AD52; +D_8011AD53; +D_8011AD58; +D_8011AD5C; +D_8011AD60; +D_8011AD64; +D_8011AD68; +D_8011AD6C; +D_8011AD70; +D_8011AD78; +D_8011ADA0; +D_8011ADA4; +D_8011ADA8; +D_8011ADAC; +D_8011ADB0; +D_8011ADB4; +D_8011ADB8; +D_8011ADBC; +D_8011ADC0; +D_8011ADC4; +D_8011ADC5; +D_8011ADC8; +D_8011ADCC; +D_8011ADD0; +D_8011ADD4; +D_8011ADD5; +D_8011ADD8; +D_8011AE00; +D_8011AE01; +D_8011AE02; +D_8011AE03; +D_8011AE08; +D_8011AE48; +D_8011AE4C; +D_8011AE50; +D_8011AE54; +objPtrList; +objCount; +D_8011AE60; +D_8011AE64; +D_8011AE68; +D_8011AE6C; +D_8011AE70; +D_8011AE74; +D_8011AE78; +D_8011AE7A; +D_8011AE7C; +D_8011AE7E; +D_8011AE80; +D_8011AE82; +D_8011AE84; +D_8011AE88; +D_8011AE8C; +D_8011AE90; +D_8011AE94; +D_8011AE98; +D_8011AEA0; +D_8011AEA4; +D_8011AEA8; +D_8011AEB0; +D_8011AEB8; +D_8011AEBC; +D_8011AEC0; +particlePtrList; +particleCount; +D_8011AECC; +D_8011AED0; +D_8011AED4; +D_8011AED8; +D_8011AEDC; +D_8011AEE0; +playerStructArray_Ptr; +D_8011AEE8; +D_8011AEEC; +playerCount; +D_8011AEF4; +D_8011AEF5; +D_8011AEF6; +D_8011AEF7; +D_8011AEF8; +D_8011AEFC; +D_8011AF00; +D_8011AF04; +D_8011AF08; +D_8011AF10; +D_8011AF18; +D_8011AF2C; +D_8011AF30; +D_8011AF60; +D_8011AF68; +D_8011AFE8; +D_8011AFEE; +D_8011AFF4; +D_8011AFF8; +D_8011AFFC; +D_8011B000; +D_8011B004; +D_8011B008; +D_8011B010; +D_8011B020; +D_8011B048; +D_8011B058; +D_8011B068; +D_8011B078; +D_8011B07B; + + +unknown_0255E0 +D_8011B0A0; +D_8011B0A4; +D_8011B0A8; +D_8011B0AC; +D_8011B0B0; +D_8011B0B4; +D_8011B0B8; +D_8011B0BC; +D_8011B0C0; +D_8011B0C4; +D_8011B0C8; +D_8011B0CC; +D_8011B0D0; +D_8011B0D4; +D_8011B0DC; +D_8011B0E0; +D_8011B0E1; +D_8011B0E2; +D_8011B0E3; +D_8011B0E4; +D_8011B0E8; +D_8011B0EC; +D_8011B0F0; +D_8011B0F4; +D_8011B0F8; +D_8011B0FC; +D_8011B100; +D_8011B104; +D_8011B108; +D_8011B10C; +D_8011B110; +D_8011B114; +D_8011B118; +D_8011B120; +D_8011B320; +D_8011B330; +D_8011C230; +D_8011C238; +D_8011C3B8; +D_8011C8B8; +D_8011D0B8; +D_8011D0BC; +D_8011D0C0; +D_8011D0C4; +D_8011D0C8; +D_8011D0CC; +D_8011D0CE; +D_8011D0D0; +D_8011D0D4; +D_8011D0D8; +D_8011D0DC; +D_8011D0E0; +D_8011D0E4; +D_8011D0E8; +D_8011D0EC; +D_8011D0F0; +D_8011D0F4; +D_8011D0F8; +D_8011D128; +D_8011D164; +D_8011D2B8; +D_8011D308; +D_8011D30C; +D_8011D310; +D_8011D314; +D_8011D318; +D_8011D31C; +D_8011D320; +D_8011D330; +D_8011D338; +D_8011D348; +D_8011D350; +D_8011D360; +D_8011D364; +D_8011D368; +D_8011D36C; +D_8011D370; +D_8011D374; +D_8011D378; +D_8011D37C; +D_8011D380; +D_8011D384; +D_8011D388; +D_8011D468; +D_8011D474; +D_8011D478; +D_8011D47C; +D_8011D480; +D_8011D488; +D_8011D490; +D_8011D498; +D_8011D49C; +D_8011D49E; +D_8011D4A0; +D_8011D4A4; +D_8011D4A8; +D_8011D4AC; +D_8011D4B0; +D_8011D4B4; +D_8011D4B6; +D_8011D4B8; +D_8011D4BA; +D_8011D4BC; + + +unknown_032760 +D_8011D4C0; +D_8011D4C4; +D_8011D4C8; +D_8011D4CC; +D_8011D4D0; + + +unknown_0348C0 +D_8011D4D4; +D_8011D4D8; +D_8011D4DC; +D_8011D4E0; +D_8011D4E2; + + +unknown_043920 +D_8011D4F0; +D_8011D4F8; +D_8011D504; +D_8011D508; +D_8011D510; +D_8011D528; +D_8011D52C; +D_8011D530; +D_8011D534; +D_8011D538; +D_8011D53C; +D_8011D540; +D_8011D544; +D_8011D548; +D_8011D54C; +D_8011D550; +D_8011D552; +D_8011D553; +D_8011D554; +D_8011D558; +D_8011D55C; +D_8011D560; +D_8011D564; +D_8011D568; +D_8011D56C; +D_8011D570; +D_8011D574; +D_8011D578; +D_8011D57C; +D_8011D580; +D_8011D581; +D_8011D582; +D_8011D583; +D_8011D584; +D_8011D585; +D_8011D586; +D_8011D588; +D_8011D589; +D_8011D58A; +D_8011D58B; +D_8011D58C; +D_8011D58D; +D_8011D58E; +D_8011D58F; +D_8011D590; +D_8011D598; +D_8011D59C; +D_8011D59D; +D_8011D59E; +D_8011D5A0; +D_8011D5A4; +D_8011D5A8; +D_8011D5AC; +D_8011D5AE; +D_8011D5B0; +D_8011D5B4; +D_8011D5B8; +D_8011D5BA; +D_8011D5BB; +D_8011D5BC; + + +unknown_05CEF0 +D_8011D5C0; +D_8011D5C4; +D_8011D5C8; +D_8011D5CC; + + +unknown_05DCD0 +D_8011D5D0; +D_8011D5D1; +D_8011D5E0; +D_8011D5E1; + + +unknown_05F0C0 +D_8011D5F0; +D_8011D5F1; + + +unknown_05F690 +D_8011D600; +D_8011D601; +D_8011D610; +D_8011D611; +D_8011D620; +D_8011D624; +D_8011D628; +D_8011D62C; +D_8011D630; +D_8011D634; +D_8011D638; +D_8011D63C; +D_8011D640; +D_8011D644; + + +unknown_0667D0 +D_8011D750; +D_8011D758; +D_8011F758; +D_8011F760; +D_8011F910; +D_8011FFF0; +D_80120001; + + +unknown_080500 +D_80120004; + + +unknown_00BC20 +D_80120010; + + +unknown_09F8F0 +D_8012004B; +D_80120AC0; + + +unknown_066AA0 +D_80120AC4; +D_80120AF4; +D_80120BD0; +D_80120BD4; +D_80120CE0; +D_80120CE4; +D_80120CE8; +D_80120CF0; +D_80120D08; +D_80120D0C; +D_80120D10; +D_80120D14; +D_80120D15; +D_80120D18; +D_80120D1C; +D_80120D20; +D_80120D28; +D_80120D40; +D_80120D58; +D_80120D6C; +D_80120D70; +D_80120D74; +D_80120D88; +D_80120DA0; +D_80120EE0; +D_80120F20; +D_80120F60; +D_80120FA0; +D_80120FE0; +D_80121020; +D_80121060; +D_801210A0; +D_801210E0; +D_801210F8; +D_801210FC; +D_80121100; +D_80121103; +D_80121110; +D_80121128; +D_80121140; +D_80121148; +D_80121150; +D_80121151; +D_80121152; +D_80121153; +D_80121160; +D_80121164; +D_80121168; +D_8012116C; +D_80121170; +D_80121174; +D_80121178; +D_8012117C; +D_80121180; +D_801211C0; + + +unknown_06B2B0 +D_801211C8; +D_801211F0; +D_801211F8; +D_80121200; +D_80121204; +D_80121208; +D_80121210; +D_80121214; +D_80121218; +D_80121220; +D_80121224; +D_80121228; +D_80121250; +D_80121260; +D_801234E8; +D_801234EC; +D_801234F0; +D_801234F4; +D_801234F8; +D_801234FC; +D_80123500; +D_80123504; +D_80123508; +D_8012350C; +gSettingsPtr; +D_80123514; +gIsPaused; +D_80123516; +D_80123518; +D_8012351C; +D_80123520; +D_80123524; +D_80123525; +D_80123526; +D_80123528; +D_8012352C; +D_80123530; +D_80123534; +D_80123538; +D_80123544; +D_80123548; +D_80123560; + + +unknown_071730 +D_80123580; +D_80123588; +D_801235C0; +D_801235C8; +D_80123DC8; +D_80123DCC; +D_80123DD0; +D_80123ED0; +D_80123FD0; +D_80123FF0; + + +unknown_072E50 +D_80124010; +D_80124018; +D_801241B8; +D_801241E0; +D_801241E4; +D_801241E5; +D_801241E6; +D_801241E7; +D_801241E8; +D_801241EC; +D_801241F0; +D_801241F4; + + +unknown_0777A0 +D_80124200; +D_80124218; +D_80124220; +D_80124238; +D_80124278; +D_80124290; + + +unknown_078050 +D_801242A0; +D_801246A0; +D_80125EA0; +D_80125EB8; +D_80125EC0; +D_80125ED8; +D_80125EF0; +D_80125F10; +D_80125F30; +D_80125F31; +D_80125F32; +D_80125F33; +D_80125F34; +D_80125F35; +D_80125F36; +D_80125F37; +D_80125F38; +D_80125F3C; +D_80125F40; +D_80126020; +D_80126100; + + +unknown_079F50 +D_80126110; +D_80126114; +D_80126118; +D_8012611C; +D_80126120; +D_80126124; +D_80126170; +D_80126174; + + +unknown_07AF10 +D_80126178; +D_80126180; +D_801261A0; +D_80126260; +D_801262B0; +D_801262B8; +D_801262C0; +D_801262C8; +D_801262CC; +D_801262D0; +D_801262D4; +D_801262D8; +D_801262DC; +D_801262E0; +D_801262E4; +D_80126308; +D_80126309; +D_80126310; + + +unknown_07B870 +D_80126320; +D_80126328; +D_8012632C; +D_80126330; +D_80126338; +D_8012633C; +D_80126340; +D_80126344; +D_80126348; +D_8012634C; +D_80126350; +D_80126354; +D_80126358; +D_8012635C; +D_80126360; +D_80126364; +D_80126368; +D_8012636C; +D_80126370; +D_80126374; +D_80126378; +D_8012637C; +D_80126380; +D_80126382; +D_80126384; + + +unknown_080500 +D_80126390; +D_80126394; +D_80126398; +D_8012639C; +D_801263A0; +D_801263A4; +D_801263A8; +D_801263AC; +D_801263B0; +D_801263B4; +D_801263B8; +D_801263BC; +D_801263C0; +D_801263C4; +D_801263C8; +D_801263CC; +D_801263D0; +D_801263D4; +D_801263D5; +D_801263D6; +D_801263D7; +D_801263D8; +D_801263DC; +D_801263E0; +players_character_array; +D_801263F0; +D_801263F8; +D_80126418; +D_80126420; +D_80126428; +D_80126430; +D_80126431; +D_80126438; +D_80126448; +D_8012644C; +D_80126450; +D_80126454; +D_80126458; +D_8012645C; +D_8012645D; +D_80126460; +D_80126464; +D_80126465; +D_80126468; +D_8012646C; +D_80126470; +D_80126474; +D_80126478; +D_8012647C; +D_80126480; +D_80126484; +D_80126488; +D_8012648C; +D_80126490; +D_80126494; +D_80126498; +D_801264A0; +D_801264D0; +D_801264D4; +D_801264D8; +D_801264DC; +D_801264E2; +D_801264E4; +D_801264EC; +D_801264F8; +D_80126504; +D_80126508; +D_8012650E; +D_80126510; +D_80126516; +D_80126518; +D_80126520; +D_80126530; +D_80126534; +D_80126538; +D_8012653C; +D_80126540; +D_80126541; +D_80126548; +D_80126550; +D_8012665C; +D_80126660; +D_80126664; +D_80126750; +D_801267D0; +D_801267D8; +D_801267E4; +D_801267E8; +D_801267EC; +D_801267F0; +D_80126804; +D_80126808; +D_8012680C; +D_80126810; +D_80126814; +D_80126818; +D_80126820; +D_80126824; +D_80126828; +D_80126830; +D_80126838; +D_8012683A; +D_8012683C; +D_80126840; +D_80126844; +D_80126848; +D_8012684C; +D_80126850; +D_80126854; +D_80126858; +D_8012685C; +D_80126860; +D_80126864; +D_80126868; +D_8012686C; +D_80126870; +D_80126874; +D_80126878; +D_801268D8; +D_801268DC; +D_801268E0; +D_801268E8; +D_80126918; +D_80126924; +D_80126928; +D_8012692C; +D_80126930; +p1_vehicle; +p2_vehicle; +D_801269C4; +D_801269C8; +D_801269CC; +D_801269D0; +D_801269DC; +D_801269E0; +D_801269E4; +D_801269E8; +D_801269EC; +D_801269F0; +D_801269F4; +D_801269F8; +D_801269FC; +D_80126A00; +D_80126A04; +D_80126A08; +D_80126A0C; +D_80126A10; +D_80126A14; +D_80126A18; +D_80126A1C; +D_80126A20; +D_80126A30; +D_80126A34; +D_80126A38; +D_80126A3C; +D_80126A40; +D_80126A60; +D_80126A64; +D_80126A68; +D_80126A6C; +D_80126A70; +D_80126A74; +D_80126A78; +D_80126A80; +D_80126A90; +D_80126A94; +D_80126A98; +D_80126AA0; +D_80126AE0; +D_80126B20; +D_80126B60; +D_80126B70; +D_80126BB0; +D_80126BB4; +D_80126BB8; +D_80126BBC; +D_80126BC0; +D_80126BC4; +D_80126BC8; +D_80126BCC; +D_80126BD0; +D_80126BD4; +D_80126BD8; +D_80126BDC; +D_80126BE0; +D_80126BE4; +D_80126BE8; +D_80126BEC; +D_80126BF0; +D_80126C10; +D_80126C14; +D_80126C18; +D_80126C1C; +D_80126C20; +D_80126C24; +D_80126C28; +D_80126C2C; +D_80126C30; +D_80126C34; +D_80126C38; +D_80126C3C; +D_80126C40; +D_80126C42; +D_80126C44; +D_80126C46; +D_80126C48; +D_80126C4C; +D_80126C50; +D_80126C54; +D_80126C57; +D_80126C58; +D_80126C6C; +D_80126C70; +D_80126C74; +D_80126C78; +D_80126C80; +D_80126CC0; + + +unknown_09F8F0 +D_80126CD0; +D_80126CD1; +D_80126CD2; +D_80126CD3; +D_80126CD4; +D_80126CD5; +D_80126CD8; +D_80126CDC; +D_80126CE0; +D_80126CEC; +D_80126CF0; +D_80126CF4; +D_80126CF8; +D_80126CFC; +D_80126D00; +D_80126D04; +D_80126D08; +D_80126D0C; +D_80126D10; +D_80126D14; +D_80126D18; +D_80126D1C; +D_80126D20; +D_80126D24; +D_80126D28; +D_80126D2C; +D_80126D30; +D_80126D34; +D_80126D35; +D_80126D36; +D_80126D37; +D_80126D38; +D_80126D3C; +D_80126D40; +D_80126D44; +D_80126D48; +D_80126D4C; +D_80126D50; +D_80126D54; +D_80126D55; +D_80126D56; +D_80126D58; +D_80126D5C; +D_80126D60; +D_80126D64; +D_80126D65; +D_80126D66; +D_80126D67; +D_80126D68; +D_80126D69; +D_80126D6C; +D_80126D70; +D_80126D71; +D_80126D74; +D_80126D78; +D_80126D7C; +D_80126D80; +D_80127180; +D_80127184; +D_80127188; +D_80127189; +D_8012718A; +D_8012718B; +D_8012718C; +D_80127190; +D_80127194; + + +unknown_078050 +D_801271B0; + + +unknown_09F8F0 +D_80127BB0; +D_80127BB4; +D_80127BB8; +D_80127BF8; +D_80127C00; +D_80127C04; +D_80127C08; +D_80127C0C; +D_80127C10; +D_80127C14; +D_80127C18; +D_80127C1C; +D_80127C20; +D_80127C24; +D_80127C28; +D_80127C2C; +D_80127C30; +D_80127C40; +D_80127C80; + + +unknown_0AEE70 +D_80127C88; +D_80127CA0; +D_80127CA4; +D_80127CA8; +D_80127CAC; +D_80127CAE; +D_80127CB0; +D_80127CB2; +D_80127CB4; +D_80127CB8; +D_80127CBC; +D_80127CC0; +D_80127CC4; +D_80127CC8; +D_80127CCC; +D_80127CD0; +D_80127CD2; +D_80127CD8; +D_801285D8; +D_801295E0; +D_80129790; +D_801297A8; +D_801297C8; +D_801297E8; +D_80129800; +D_80129824; +D_8012982C; +D_80129834; +D_8012983C; +D_80129844; +D_8012984C; +D_80129854; +D_8012985C; +D_80129864; +D_8012986C; +D_80129874; +D_8012987C; +D_80129884; +D_8012988C; +D_80129894; +D_8012989C; +D_801298A4; +D_801298AC; +D_801298B4; +D_801298BC; +D_801298C4; +D_801298CC; +D_801298D4; +D_801298DC; +D_801298E4; +D_801298EC; +D_801298F4; +D_801298FC; +D_80129904; +D_80129918; +D_8012991C; +D_80129920; +D_80129924; +D_801299B0; + + +unknown_0C4800 +piThreadStack; +D_80129BB0; +D_80129FB0; +D_80129FBC; + + +unknown_0B8920 +D_80129FC0; +D_80129FC4; +D_80129FC8; +D_80129FCC; +D_80129FE8; +D_80129FF0; +D_8012A008; +D_8012A00C; +D_8012A018; +D_8012A01C; +D_8012A020; +D_8012A028; +D_8012A078; +D_8012A07C; +D_8012A080; +D_8012A084; +D_8012A088; +D_8012A08C; +D_8012A090; +D_8012A094; +D_8012A098; +D_8012A09C; +D_8012A0A0; +D_8012A0A4; +D_8012A0A8; +D_8012A0AC; +D_8012A0B0; +D_8012A0B4; +D_8012A0B8; +D_8012A0BC; +D_8012A0C0; +D_8012A0C4; +D_8012A0C8; +D_8012A0CC; +D_8012A0D0; +D_8012A0D4; +D_8012A0D8; +D_8012A0DC; +D_8012A0E0; +D_8012A0E8; +D_8012A1E8; +D_8012A5E8; +D_8012A5F4; +D_8012A600; +D_8012A720; +D_8012A724; +D_8012A728; +D_8012A730; +D_8012A734; +D_8012A735; +D_8012A736; +D_8012A737; +D_8012A738; +D_8012A73C; +D_8012A740; +D_8012A744; +D_8012A748; +D_8012A74C; +D_8012A750; +D_8012A754; +D_8012A758; +D_8012A75C; +D_8012A760; +D_8012A764; +D_8012A768; +D_8012A76C; +D_8012A770; +D_8012A774; +D_8012A778; +D_8012A77C; +D_8012A780; +D_8012A784; +D_8012A785; +D_8012A786; +D_8012A787; +D_8012A788; +D_8012A789; +D_8012A78A; +D_8012A78C; +D_8012A78E; +D_8012A790; +D_8012A798; +D_8012A7A0; +D_8012A7A4; +D_8012A7A8; +D_8012A7AA; +D_8012A7AC; +D_8012A7AE; +D_8012A7B0; +D_8012A7B2; +D_8012A7B4; +D_8012A7B6; +D_8012A7B8; +D_8012A7BA; +D_8012A7C0; +D_8012A7C8; +D_8012A7D0; +D_8012A7D4; +D_8012A7E0; +D_8012A7E4; +D_8012A7E8; +D_8012A7EC; +D_8012A7F0; +D_8012A7F4; + + +unknown_0C4800 +piThread; +piEventQueue; +piEventBuf; +gzip_bit_buffer; +gzip_num_bits; +D_8012AAD8; +D_8012AAE0; + + +unknown_0C7F50 +D_8012AAF0; +D_8012ACA0; +D_8012ACB8; + + +osViMgr +viThreadStack; +D_8012CCC0; +__osEventStateTab; + + +unknown_0CD820 +D_8012CD50; +D_8012CD8C; +D_8012CD90; +__osMaxControllers; +D_8012CDB8; +D_8012CDD0; +__osPfsPifRam; +D_8012CE1C; + + +unknown_0CE200 +D_8012CE20; +D_8012CE28; +D_8012CE40; +D_8012CE7C; + + +osViMgr +viThread; +viEventQueue; +viEventBuf; +viRetraceMsg; +viCounterMsg; +D_8012D190; + + +unknown_0D29F0 +D_8012D1A0; + + +unknown_0D3020 +D_8012D1E0; +piAccessQueue; +__osCurrentTime; +D_8012D224; +__osBaseCounter; +D_8012D22C; +D_8012D230; +D_8012D240; + + +unknown_071730 +D_8012D3F0; \ No newline at end of file diff --git a/src/unknown_001050.c b/src/unknown_001050.c index fbc5a998..c7296133 100644 --- a/src/unknown_001050.c +++ b/src/unknown_001050.c @@ -49,8 +49,12 @@ const char D_800E49BC[] = "Invalid midi sequence index\n"; /************ .bss ************/ -u8 D_800EBF60; -extern ALHeap gALHeap; +#define AUDIO_HEAP_SIZE 0x29D88 + +// The audio heap is located at the start of the BSS section. +u8 gBssSectionStart[AUDIO_HEAP_SIZE]; + +ALHeap gALHeap; /* Unknown size */ typedef struct unk80115CF8 { @@ -58,16 +62,16 @@ typedef struct unk80115CF8 { s16 unk2; } unk80115CF8; -extern ALSeqFile *ALSeqFile_80115CF8; -extern void *D_80115CFC; +ALSeqFile *ALSeqFile_80115CF8; +void *D_80115CFC; -extern u8 D_80115D04; -extern u8 D_80115D05; -extern s32 musicTempo; - -extern ALBankFile *ALBankFile_80115D10; - -extern ALBankFile *ALBankFile_80115D14; +void *D_80115D00; +u8 D_80115D04; +u8 D_80115D05; +s32 musicTempo; +u32 *D_80115D0C; +ALBankFile *ALBankFile_80115D10; +ALBankFile *ALBankFile_80115D14; /* Size: 0x0A bytes */ typedef struct unk80115D18 { @@ -76,7 +80,7 @@ typedef struct unk80115D18 { u8 pad8[2]; } unk80115D18; -extern unk80115D18* D_80115D18; +unk80115D18 *D_80115D18; /* Size: 3 bytes */ typedef struct unk80115D1C { @@ -84,26 +88,27 @@ typedef struct unk80115D1C { u8 unk1; u8 unk2; } unk80115D1C; -extern void *D_80115D00; -extern u32 *D_80115D0C; -extern unk80115D1C* D_80115D1C; -extern s32 D_80115D20; -extern s32 D_80115D24; -extern u32 D_80115D28; -extern u32 D_80115D2C; -extern s16 D_80115D30; -extern s32 D_80115D38; -extern s32 D_80115D3C; -extern u8 D_80115D40; -extern u8 D_80115D41; -extern unk80115D48 D_80115D48[8]; -extern ALCSeq D_80115D88; -extern ALCSeq D_80115E80; -extern u8 D_80115F78; -extern u8 D_80115F79; -extern s32 D_80115F7C; -extern u32 D_80115F84; -extern u32 D_80115F88; +unk80115D1C* D_80115D1C; + +s32 D_80115D20; +s32 D_80115D24; +u32 D_80115D28; +u32 D_80115D2C; +s16 D_80115D30; +f32 D_80115D34; +s32 D_80115D38; +s32 D_80115D3C; +u8 D_80115D40; +u8 D_80115D41; +unk80115D48 D_80115D48[8]; +ALCSeq D_80115D88; +ALCSeq D_80115E80; +u8 D_80115F78; +u8 D_80115F79; +s32 D_80115F7C; +s32 D_80115F80; +u32 D_80115F84; +u32 D_80115F88; /******************************/ @@ -132,7 +137,7 @@ void audio_init(u32 arg0){ audioMgrConfig audConfig; seq_max_len = 0; - alHeapInit(&gALHeap, &D_800EBF60, 0x00029D88); + alHeapInit(&gALHeap, gBssSectionStart, 0x00029D88); reg_s2 = func_80076C58(38); ALBankFile_80115D14 = (ALBankFile*) func_80070C9C(reg_s2[2] - reg_s2[1], 0x00FFFFFF); @@ -559,9 +564,6 @@ u8 musicIsPlaying(void) { return (alCSPGetState(gMusicPlayer) == AL_PLAYING); } - -extern f32 D_80115D34; - #if 1 GLOBAL_ASM("asm/non_matchings/unknown_001050/func_800015F8.s") #else diff --git a/src/unknown_003260.c b/src/unknown_003260.c index 8237bcb2..d4f461d8 100644 --- a/src/unknown_003260.c +++ b/src/unknown_003260.c @@ -32,6 +32,21 @@ typedef union { }ALSndpEvent; +/* Unknown Size */ +typedef struct unk800DC6BC { + ALPlayer node; + ALEventQueue evtq; + ALEvent nextEvent; + ALSynth *drvr; + u32 unk3C; + unk800DC6BC_40 *unk40; + s32 unk44; + s32 unk48; + s32 frameTime; + ALMicroTime nextDelta; + ALMicroTime curTime; +} unk800DC6BC; //ALSndPlayer + typedef struct unk80119240 { ALLink node; @@ -99,20 +114,29 @@ const char D_800E4B80[] = "WARNING: Attempt to stop NULL sound aborted\n"; /************ .bss ************/ -extern s32 D_80115F90; -extern ALHeap* D_80115F94; -extern OSThread audioThread; -extern OSMesgQueue OSMesgQueue_80116160; -extern OSMesg D_80116178; -extern OSMesgQueue D_80116198; -extern OSMesg D_801161B0; -extern ALGlobals ALGlobals_801161D0; -extern s32 D_80119230; -extern unk80119240 D_80119240[0x31]; -extern s32 D_8011962C; -extern OSMesgQueue D_80119AF0; -extern OSMesg D_80119B08; -extern u16* D_80119C28; +s32 D_80115F90; +ALHeap* D_80115F94; +s32 D_80115F98[2]; +s32 D_80115FA0[3]; +OSThread audioThread; +OSMesgQueue OSMesgQueue_80116160; +OSMesg D_80116178[8]; +OSMesgQueue D_80116198; +OSMesg D_801161B0[8]; +ALGlobals ALGlobals_801161D0; +s32 D_80116220[3076]; +s32 D_80119230[3]; +unk80119240 D_80119240[50]; +s32 D_80119628; +s32 D_8011962C; +s32 D_80119630; +s32 D_80119634; +s32 D_80119638[2]; +s32 D_80119640[300]; +OSMesgQueue D_80119AF0; +OSMesg D_80119B08[72]; +u16* D_80119C28; + extern f32 D_80126170; /******************************/ diff --git a/src/unknown_005740.c b/src/unknown_005740.c index 39c65d26..36709afe 100644 --- a/src/unknown_005740.c +++ b/src/unknown_005740.c @@ -14,6 +14,28 @@ s32 D_800DC6D8 = 1; // Currently unknown, might be a different type. /*******************************/ +/************ .bss ************/ + +s32 D_80119C30[2]; +s32 D_80119C38; +s32 D_80119C3C; +s32 D_80119C40; +s32 D_80119C44; +s32 D_80119C48; +s32 D_80119C4C; +s32 D_80119C50[2]; +s32 D_80119C58; +s32 D_80119C5C; +s32 D_80119C60[670]; +s32 D_8011A6D8; +s32 D_8011A6DC; +s32 D_8011A6E0[334]; +s32 D_8011AC18; +s32 D_8011AC1C; +s32 D_8011AC20[64]; + +/******************************/ + GLOBAL_ASM("asm/non_matchings/unknown_005740/func_80004B40.s") GLOBAL_ASM("asm/non_matchings/unknown_005740/func_800050D0.s") GLOBAL_ASM("asm/non_matchings/unknown_005740/func_80005254.s") diff --git a/tools/python/generate_ld.py b/tools/python/generate_ld.py index 8f3a4c70..4c67e61a 100644 --- a/tools/python/generate_ld.py +++ b/tools/python/generate_ld.py @@ -116,8 +116,18 @@ class GenerateLD: self.gen_line('romPos += SIZEOF(.rodata);') self.gen_newline() + def gen_ucode_data_section(self): + self.gen_line('.ucodeData . : AT(romPos)') + self.gen_open_block() + self.gen_line(BUILD_DIR + '/asm/assets/ucode_data.o(.text);') + self.gen_close_block() + self.gen_line('romPos += SIZEOF(.ucodeData);') + self.gen_newline() + def gen_bss_section(self): - self.gen_line('.bss.noload (NOLOAD):') + self.gen_line('__BSS_SECTION_SIZE = SIZEOF(.bss.noload);') + self.gen_newline() + self.gen_line('.bss.noload . (NOLOAD): SUBALIGN(4)') self.gen_open_block() for file in self.files: if file[0] not in LATE_DATA_FILES: @@ -127,14 +137,6 @@ class GenerateLD: self.gen_close_block() self.gen_newline() - def gen_ucode_data_section(self): - self.gen_line('.ucodeData . : AT(romPos)') - self.gen_open_block() - self.gen_line(BUILD_DIR + '/asm/assets/ucode_data.o(.text);') - self.gen_close_block() - self.gen_line('romPos += SIZEOF(.ucodeData);') - self.gen_newline() - def gen_assets_section(self): self.gen_line('__ASSETS_LUT_START = romPos;'); self.gen_line('__ASSETS_LUT_END = __ASSETS_LUT_START + ' + hex((((self.assets.numAssets + 2) * 4) + 15) & 0xFFFFFFF0) + ';'); diff --git a/tools/python/undefined_sym_fix.py b/tools/python/undefined_sym_fix.py index cae892c0..a7b4047b 100644 --- a/tools/python/undefined_sym_fix.py +++ b/tools/python/undefined_sym_fix.py @@ -1,5 +1,6 @@ import subprocess import sys +import re import subprocess import argparse @@ -55,6 +56,55 @@ def fixDoubleLoads(): i += 1 save_syms(syms) -#fixBadLabel() -fixDoubleLoads() +def getMatches(string, regex): + out = [] + matches = re.finditer(regex, string, re.MULTILINE) + for matchNum, match in enumerate(matches, start=1): + start = match.start() + end = match.end() + out.append((string[start:end], match.groups(), (start, end))) + return out + +FILE_REGEX = r"(?:lib/)?(?:(?:src/)|(?:asm/non_matchings/))([^/.]*)" +def getFiles(symbol): + command = subprocess.run(['fgrep', '-ri', symbol], capture_output=True) + outLines = command.stdout.decode("utf-8").split('\n') + fileNames = [] + for outLine in outLines: + if 'src' in outLine or 'asm' in outLine: + match = getMatches(outLine, FILE_REGEX)[0][1][0] + if match not in fileNames: + fileNames.append(match) + return fileNames + +def getBss(): + currentFile = '' + out = [] + syms = load_syms() + for sym in syms: + if ' = ' in sym: + symSplit = sym.split(' = ') + symbol = symSplit[0] + address = int(symSplit[1][2:-1], 16) + if address >= 0x80115CE8 and address <= 0x8012D3F0: + try: + files = getFiles(symbol) + if currentFile not in files: + if len(files) == 1: + if currentFile != '': + out.append('\n') + currentFile = files[0] + out.append(currentFile) + else: + print(symbol, files, 'Cannot tell which file to use!') + except IndexError: + print('Error with symbol: ' + symbol) + out.append(sym) + with open('bss.txt', 'w') as outFile: + outFile.write('\n'.join(out)) + + +fixBadLabel() +#fixDoubleLoads() +#getBss() diff --git a/undefined_syms.txt b/undefined_syms.txt index 6d5c0064..d622687f 100755 --- a/undefined_syms.txt +++ b/undefined_syms.txt @@ -25,78 +25,79 @@ osAppNMIBuffer = 0x8000031C; D_800E0001 = 0x800E0001; eqpower = 0x800E37A0; -gALHeap = 0x80115CE8; -ALSeqFile_80115CF8 = 0x80115CF8; -D_80115CFC = 0x80115CFC; -D_80115D00 = 0x80115D00; -D_80115D04 = 0x80115D04; -D_80115D05 = 0x80115D05; -musicTempo = 0x80115D08; -D_80115D0C = 0x80115D0C; -ALBankFile_80115D10 = 0x80115D10; -ALBankFile_80115D14 = 0x80115D14; -D_80115D18 = 0x80115D18; -D_80115D1C = 0x80115D1C; -D_80115D20 = 0x80115D20; -D_80115D24 = 0x80115D24; -D_80115D28 = 0x80115D28; -D_80115D2C = 0x80115D2C; -D_80115D30 = 0x80115D30; -D_80115D34 = 0x80115D34; -D_80115D38 = 0x80115D38; -D_80115D3C = 0x80115D3C; -D_80115D40 = 0x80115D40; -D_80115D41 = 0x80115D41; -D_80115D48 = 0x80115D48; -D_80115D88 = 0x80115D88; -D_80115E80 = 0x80115E80; -D_80115F78 = 0x80115F78; -D_80115F79 = 0x80115F79; -D_80115F7C = 0x80115F7C; -D_80115F80 = 0x80115F80; -D_80115F84 = 0x80115F84; -D_80115F88 = 0x80115F88; -D_80115F90 = 0x80115F90; -D_80115F94 = 0x80115F94; -D_80115F98 = 0x80115F98; -D_80115FA0 = 0x80115FA0; -D_80115FA4 = 0x80115FA4; -audioThread = 0x80115FB0; -OSMesgQueue_80116160 = 0x80116160; -D_80116178 = 0x80116178; -D_80116198 = 0x80116198; -D_801161B0 = 0x801161B0; -ALGlobals_801161D0 = 0x801161D0; -D_80116220 = 0x80116220; -D_80119230 = 0x80119230; -D_80119240 = 0x80119240; -D_80119254 = 0x80119254; -D_80119628 = 0x80119628; -D_8011962C = 0x8011962C; -D_80119630 = 0x80119630; -D_80119634 = 0x80119634; -D_80119638 = 0x80119638; -D_80119640 = 0x80119640; -D_80119AF0 = 0x80119AF0; -D_80119B08 = 0x80119B08; -D_80119C28 = 0x80119C28; -D_80119C30 = 0x80119C30; -D_80119C38 = 0x80119C38; -D_80119C3C = 0x80119C3C; -D_80119C40 = 0x80119C40; -D_80119C44 = 0x80119C44; -D_80119C48 = 0x80119C48; -D_80119C4C = 0x80119C4C; -D_80119C50 = 0x80119C50; -D_80119C58 = 0x80119C58; -D_80119C5C = 0x80119C5C; -D_80119C60 = 0x80119C60; -D_8011A6D8 = 0x8011A6D8; -D_8011A6DC = 0x8011A6DC; -D_8011A6E0 = 0x8011A6E0; -D_8011AC18 = 0x8011AC18; -D_8011AC1C = 0x8011AC1C; -D_8011AC20 = 0x8011AC20; +/gALHeap = 0x80115CE8; +/ALSeqFile_80115CF8 = 0x80115CF8; +/D_80115CFC = 0x80115CFC; +/D_80115D00 = 0x80115D00; +/D_80115D04 = 0x80115D04; +/D_80115D05 = 0x80115D05; +/musicTempo = 0x80115D08; +/D_80115D0C = 0x80115D0C; +/ALBankFile_80115D10 = 0x80115D10; +/ALBankFile_80115D14 = 0x80115D14; +/D_80115D18 = 0x80115D18; +/D_80115D1C = 0x80115D1C; +/D_80115D20 = 0x80115D20; +/D_80115D24 = 0x80115D24; +/D_80115D28 = 0x80115D28; +/D_80115D2C = 0x80115D2C; +/D_80115D30 = 0x80115D30; +/D_80115D34 = 0x80115D34; +/D_80115D38 = 0x80115D38; +/D_80115D3C = 0x80115D3C; +/D_80115D40 = 0x80115D40; +/D_80115D41 = 0x80115D41; +/D_80115D48 = 0x80115D48; +/D_80115D88 = 0x80115D88; +/D_80115E80 = 0x80115E80; +/D_80115F78 = 0x80115F78; +/D_80115F79 = 0x80115F79; +/D_80115F7C = 0x80115F7C; +/D_80115F80 = 0x80115F80; +/D_80115F84 = 0x80115F84; +/D_80115F88 = 0x80115F88; + +/D_80115F90 = 0x80115F90; +/D_80115F94 = 0x80115F94; +/D_80115F98 = 0x80115F98; +/D_80115FA0 = 0x80115FA0; +/audioThread = 0x80115FB0; +/OSMesgQueue_80116160 = 0x80116160; +/D_80116178 = 0x80116178; +/D_80116198 = 0x80116198; +/D_801161B0 = 0x801161B0; +/ALGlobals_801161D0 = 0x801161D0; +/D_80116220 = 0x80116220; +/D_80119230 = 0x80119230; +/D_80119240 = 0x80119240; +/D_80119628 = 0x80119628; +/D_8011962C = 0x8011962C; +/D_80119630 = 0x80119630; +/D_80119634 = 0x80119634; +/D_80119638 = 0x80119638; +/D_80119640 = 0x80119640; +/D_80119AF0 = 0x80119AF0; +/D_80119B08 = 0x80119B08; +/D_80119C28 = 0x80119C28; + +/D_80119C30 = 0x80119C30; +/D_80119C38 = 0x80119C38; +/D_80119C3C = 0x80119C3C; +/D_80119C40 = 0x80119C40; +/D_80119C44 = 0x80119C44; +/D_80119C48 = 0x80119C48; +/D_80119C4C = 0x80119C4C; +/D_80119C50 = 0x80119C50; +/D_80119C58 = 0x80119C58; +/D_80119C5C = 0x80119C5C; +/D_80119C60 = 0x80119C60; +/D_8011A6D8 = 0x8011A6D8; +/D_8011A6DC = 0x8011A6DC; +/D_8011A6E0 = 0x8011A6E0; +/D_8011AC18 = 0x8011AC18; +/D_8011AC1C = 0x8011AC1C; +/D_8011AC20 = 0x8011AC20; + D_8011AD20 = 0x8011AD20; D_8011AD21 = 0x8011AD21; D_8011AD22 = 0x8011AD22;