Greatly improve automatic symbol finding in the disassembler. Code still needs to be cleaned up a bit

This commit is contained in:
rozlette
2020-01-16 13:06:32 -06:00
parent 30daa16255
commit 50019e85ad
11 changed files with 23994 additions and 15437 deletions
+31
View File
@@ -270,6 +270,15 @@ void __ll_mod(void); // func_80088A38
void __ll_rshift(void); // func_80088AD4
void __osExceptionPreamble(void); // func_80088B00
void __osException(void); // func_80088B10
void func_80088D48(void); // func_80088D48
void func_80088D54(void); // func_80088D54
void func_80088D60(void); // func_80088D60
void func_80088D80(void); // func_80088D80
void func_80088DC4(void); // func_80088DC4
void func_80088F2C(void); // func_80088F2C
void func_80088F88(void); // func_80088F88
void func_80088FA8(void); // func_80088FA8
void func_80088FE0(void); // func_80088FE0
void send_mesg(void); // func_8008905C
void handle_CpU(void); // func_80089110
void __osEnqueueAndYield(OSThread** param_1); // func_80089144
@@ -6169,6 +6178,7 @@ void func_808CCBE4(void); // func_808CCBE4
void func_808CCCF0(void); // func_808CCCF0
void func_808CCDE4(void); // func_808CCDE4
void func_808CCEE4(void); // func_808CCEE4
UNK_TYPE4 func_808CD020(UNK_TYPE4 param_1, int param_2, UNK_PTR param_3, UNK_TYPE4 param_4, short* param_5, int param_6); // func_808CD020
void func_808CD08C(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5); // func_808CD08C
void func_808CD238(void); // func_808CD238
void func_808CD740(void); // func_808CD740
@@ -6307,6 +6317,26 @@ void func_808D75F0(void); // func_808D75F0
void func_808D7714(void); // func_808D7714
void func_808D77B8(void); // func_808D77B8
void func_808D77DC(void); // func_808D77DC
UNK_TYPE4 func_808D78D0(Actor* param_1); // func_808D78D0
unsigned int func_808D7928(Actor* param_1); // func_808D7928
void func_808D7954(Actor* param_1); // func_808D7954
void func_808D7A04(void); // func_808D7A04
int func_808D7A14(int param_1); // func_808D7A14
void func_808D7A40(UNK_PTR param_1, UNK_PTR param_2); // func_808D7A40
void func_808D7A68(int param_1, GlobalContext* param_2); // func_808D7A68
void func_808D7C64(int param_1, GlobalContext* param_2); // func_808D7C64
void func_808D7DC4(int param_1, GlobalContext* param_2); // func_808D7DC4
void func_808D7E14(unsigned int param_1, GlobalContext* param_2); // func_808D7E14
void func_808D7F0C(unsigned int param_1, GlobalContext* param_2); // func_808D7F0C
void func_808D7F2C(int param_1); // func_808D7F2C
void func_808D7FFC(int param_1); // func_808D7FFC
void func_808D8014(int param_1, GlobalContext* param_2); // func_808D8014
void func_808D8074(int param_1, unsigned int param_2); // func_808D8074
void func_808D814C(int param_1, int param_2); // func_808D814C
void func_808D82CC(int param_1); // func_808D82CC
void func_808D84F4(unsigned int param_1); // func_808D84F4
void func_808D8678(unsigned int param_1, GlobalContext* param_2); // func_808D8678
void func_808D8720(int param_1); // func_808D8720
void func_808D8940(void); // func_808D8940
void func_808D8B58(void); // func_808D8B58
void func_808D8D60(void); // func_808D8D60
@@ -6455,6 +6485,7 @@ void func_808E45A0(void); // func_808E45A0
void func_808E4654(void); // func_808E4654
void func_808E4740(void); // func_808E4740
void func_808E47E8(void); // func_808E47E8
void func_808E491C(int param_1); // func_808E491C
void func_808E4984(void); // func_808E4984
void func_808E4AC8(void); // func_808E4AC8
void func_808E4C18(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5); // func_808E4C18
+4239 -563
View File
File diff suppressed because it is too large Load Diff
+1
View File
@@ -826,6 +826,7 @@ SECTIONS
}
. += 0x1070; /* TODO we are skipping a file that we don't currently disassemble */
func_808D78D0 = 0x808D78D0;
ovl_En_Sw :
{
-1
View File
@@ -620,5 +620,4 @@
('decomp/', 'ovl_En_Invisible_Ruppe', 0x80C258A0, ((0x80C25B30, 0x80C25BBF),),()),
('decomp/', 'ovl_Obj_Ending', 0x80C25BC0, ((0x80C25CC0, 0x80C25D3F),),()),
('decomp/', 'ovl_En_Rsn', 0x80C25D40, ((0x80C25FF0, 0x80C2609F),),()),
}
+31
View File
@@ -267,6 +267,15 @@
0x80088AD4:("__ll_rshift","void","void"),
0x80088B00:("__osExceptionPreamble","void","void"),
0x80088B10:("__osException","void","void"),
0x80088D48:("func_80088D48","void","void"),
0x80088D54:("func_80088D54","void","void"),
0x80088D60:("func_80088D60","void","void"),
0x80088D80:("func_80088D80","void","void"),
0x80088DC4:("func_80088DC4","void","void"),
0x80088F2C:("func_80088F2C","void","void"),
0x80088F88:("func_80088F88","void","void"),
0x80088FA8:("func_80088FA8","void","void"),
0x80088FE0:("func_80088FE0","void","void"),
0x8008905C:("send_mesg","void","void"),
0x80089110:("handle_CpU","void","void"),
0x80089144:("__osEnqueueAndYield","void","OSThread** param_1"),
@@ -6163,6 +6172,7 @@
0x808CCCF0:("func_808CCCF0","void","void"),
0x808CCDE4:("func_808CCDE4","void","void"),
0x808CCEE4:("func_808CCEE4","void","void"),
0x808CD020:("func_808CD020","UNK_TYPE4","UNK_TYPE4 param_1, int param_2, UNK_PTR param_3, UNK_TYPE4 param_4, short* param_5, int param_6"),
0x808CD08C:("func_808CD08C","void","UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5"),
0x808CD238:("func_808CD238","void","void"),
0x808CD740:("func_808CD740","void","void"),
@@ -6301,6 +6311,26 @@
0x808D7714:("func_808D7714","void","void"),
0x808D77B8:("func_808D77B8","void","void"),
0x808D77DC:("func_808D77DC","void","void"),
0x808D78D0:("func_808D78D0","UNK_TYPE4","Actor* param_1"),
0x808D7928:("func_808D7928","unsigned int","Actor* param_1"),
0x808D7954:("func_808D7954","void","Actor* param_1"),
0x808D7A04:("func_808D7A04","void","void"),
0x808D7A14:("func_808D7A14","int","int param_1"),
0x808D7A40:("func_808D7A40","void","UNK_PTR param_1, UNK_PTR param_2"),
0x808D7A68:("func_808D7A68","void","int param_1, GlobalContext* param_2"),
0x808D7C64:("func_808D7C64","void","int param_1, GlobalContext* param_2"),
0x808D7DC4:("func_808D7DC4","void","int param_1, GlobalContext* param_2"),
0x808D7E14:("func_808D7E14","void","unsigned int param_1, GlobalContext* param_2"),
0x808D7F0C:("func_808D7F0C","void","unsigned int param_1, GlobalContext* param_2"),
0x808D7F2C:("func_808D7F2C","void","int param_1"),
0x808D7FFC:("func_808D7FFC","void","int param_1"),
0x808D8014:("func_808D8014","void","int param_1, GlobalContext* param_2"),
0x808D8074:("func_808D8074","void","int param_1, unsigned int param_2"),
0x808D814C:("func_808D814C","void","int param_1, int param_2"),
0x808D82CC:("func_808D82CC","void","int param_1"),
0x808D84F4:("func_808D84F4","void","unsigned int param_1"),
0x808D8678:("func_808D8678","void","unsigned int param_1, GlobalContext* param_2"),
0x808D8720:("func_808D8720","void","int param_1"),
0x808D8940:("func_808D8940","void","void"),
0x808D8B58:("func_808D8B58","void","void"),
0x808D8D60:("func_808D8D60","void","void"),
@@ -6449,6 +6479,7 @@
0x808E4654:("func_808E4654","void","void"),
0x808E4740:("func_808E4740","void","void"),
0x808E47E8:("func_808E47E8","void","void"),
0x808E491C:("func_808E491C","void","int param_1"),
0x808E4984:("func_808E4984","void","void"),
0x808E4AC8:("func_808E4AC8","void","void"),
0x808E4C18:("func_808E4C18","void","UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5"),
+11 -11
View File
@@ -1,13 +1,13 @@
# Follows the format of Address:(Name, Type, Array Info)
# Follows the format of Address:(Name, Type, Array Info, Size)
{
0x80000300:("osTvType","UNK_TYPE",""),
0x80000304:("osRomType","UNK_TYPE",""),
0x80000308:("osRomBase","UNK_TYPE",""),
0x8000030C:("osResetType","UNK_TYPE",""),
0x80000310:("osCicId","UNK_TYPE",""),
0x80000314:("osVersion","UNK_TYPE",""),
0x80000318:("osMemSize","UNK_TYPE",""),
0x8000031C:("D_8000031C","UNK_TYPE",""),
0x80000500:("D_80000500","UNK_TYPE",""),
0x80025D00:("D_80025D00","UNK_TYPE",""),
0x80000300:("osTvType","UNK_TYPE","",0x4),
0x80000304:("osRomType","UNK_TYPE","",0x4),
0x80000308:("osRomBase","UNK_TYPE","",0x4),
0x8000030C:("osResetType","UNK_TYPE","",0x4),
0x80000310:("osCicId","UNK_TYPE","",0x4),
0x80000314:("osVersion","UNK_TYPE","",0x4),
0x80000318:("osMemSize","UNK_TYPE","",0x4),
0x8000031C:("D_8000031C","UNK_TYPE","",0x4), # TODO size
0x80000500:("D_80000500","UNK_TYPE","",0x1), # TODO size
0x80025D00:("D_80025D00","UNK_TYPE","",0x1), # TODO size
}
+19006 -14736
View File
File diff suppressed because it is too large Load Diff
+64 -64
View File
@@ -1,68 +1,68 @@
# Follows the format of Address:(Name, Type, Array Info)
# Follows the format of Address:(Name, Type, Array Info, Size)
{
# NOTE These symbols could be one of two symbols: the start of a file or the end of a file before it.
# The choice for disassembly is arbitrary but in code it should be the one that makes sense.
0x0001A500:("dmadata_vrom_start","u32",""), # Start of dmadata
0x00020700:("dmadata_vrom_end","u32",""), # Byte immediately after end of dmadata
0x00046AF0:("Audioseq_vrom_start","UNK_TYPE",""),
0x00097F70:("Audioseq_vrom_end","UNK_TYPE",""),
0x0065D000:("link_animetion_vrom_start","UNK_TYPE",""),
0x00957000:("","UNK_TYPE",""), # ovl_kaleido_scope uses this. It is the start of vrom for a null entry in dmadata???
0x009ECEC0:("","UNK_TYPE",""), # ovl_kaleido_scope uses this. It is the end of vrom for a null entry in dmadata???
0x009ED000:("","UNK_TYPE",""), # ovl_kaleido_scope uses this. It is the start of vrom for a null entry in dmadata???
0x009F4700:("","UNK_TYPE",""), # ovl_kaleido_scope uses this. It is the end of vrom for a null entry in dmadata???
0x009F5000:("icon_item_field_static_vrom_start","UNK_TYPE",""),
0x00A09AF0:("icon_item_field_static_vrom_end","UNK_TYPE",""),
0x00A0A000:("icon_item_dungeon_static_vrom_start","UNK_TYPE",""),
0x00A0EB80:("icon_item_dungeon_static_vrom_end","UNK_TYPE",""),
0x00A0F000:("icon_item_gameover_static_vrom_start","UNK_TYPE",""),
0x00A12300:("icon_item_gameover_static_vrom_end","UNK_TYPE",""),
0x00A13000:("_013_0x00963540_vrom_start","UNK_TYPE",""),
0x00A1BA00:("_013_0x00963540_vrom_end","UNK_TYPE",""),
0x00A1C000:("_014_0x00967260_vrom_start","UNK_TYPE",""),
0x00A1C2E0:("_014_0x00967260_vrom_end","UNK_TYPE",""),
0x00A1D000:("map_i_static_vrom_start","UNK_TYPE",""),
0x00A1E310:("map_grand_static_vrom_start","UNK_TYPE",""),
0x00A27660:("item_name_static_vrom_start","UNK_TYPE",""),
0x00A352F0:("map_name_static_vrom_start","UNK_TYPE",""),
0x00A36C10:("_019_0x00980f60_vrom_start","UNK_TYPE",""),
0x00A7BEE0:("_020_0x009c6230_vrom_start","UNK_TYPE",""),
0x00A807A0:("_020_0x009c6230_vrom_end","UNK_TYPE",""),
0x00A8C000:("_022_0x009caaf0_vrom_start","UNK_TYPE",""),
0x00A92A10:("_023_0x009d1500_vrom_start","UNK_TYPE",""),
0x00A990E0:("_023_0x009d1500_vrom_end","UNK_TYPE",""),
0x00A9A000:("_024_0x009d3760_vrom_start","UNK_TYPE",""),
0x00ABFC00:("_024_0x009d3760_vrom_end","UNK_TYPE",""),
0x00AC0000:("do_action_static_vrom_start","UNK_TYPE",""),
0x00AC4000:("message_static_vrom_start","UNK_TYPE",""),
0x00ACA000:("message_texture_static_vrom_start","UNK_TYPE",""),
0x00ACC000:("nes_font_static_vrom_start","UNK_TYPE",""),
0x00AD1000:("en_message_data_static_vrom_start","UNK_TYPE",""),
0x00B3B000:("staff_message_data_static_vrom_start","UNK_TYPE",""),
0x00B3C000:("code_vrom_start","UNK_TYPE",""),
0x00C7A4E0:("code_vrom_end","UNK_TYPE",""),
0x01E85000:("nintendo_rogo_static_vrom_start","UNK_TYPE",""),
0x01E87DC0:("nintendo_rogo_static_vrom_end","UNK_TYPE",""),
0x01E88000:("title_static_vrom_start","UNK_TYPE",""),
0x01EB9730:("title_static_vrom_end","UNK_TYPE",""),
0x01EBA000:("_1124_0x0163f490_vrom_start","UNK_TYPE",""),
0x01EBB280:("_1124_0x0163f490_vrom_end","UNK_TYPE",""),
0x01EBC000:("_1125_0x0163fc10_vrom_start","UNK_TYPE",""),
0x01EBC680:("_1125_0x0163fc10_vrom_end","UNK_TYPE",""),
0x01EBD000:("_1126_0x0163ffc0_vrom_start","UNK_TYPE",""),
0x01EC8B20:("_1126_0x0163ffc0_vrom_end","UNK_TYPE",""),
0x01EC9000:("_1127_0x01643d50_vrom_start","UNK_TYPE",""),
0x01EC9F30:("_1127_0x01643d50_vrom_end","UNK_TYPE",""),
0x01ECA000:("_1128_0x01644c80_vrom_start","UNK_TYPE",""),
0x01ED3B00:("_1128_0x01644c80_vrom_end","UNK_TYPE",""),
0x01ED4000:("_1129_0x01646b60_vrom_start","UNK_TYPE",""),
0x01EDDB00:("_1129_0x01646b60_vrom_end","UNK_TYPE",""),
0x01EDE000:("_1130_0x01649020_vrom_start","UNK_TYPE",""),
0x01EE7B00:("_1130_0x01649020_vrom_end","UNK_TYPE",""),
0x01EE8000:("_1131_0x0164ad90_vrom_start","UNK_TYPE",""),
0x01EF1B00:("_1131_0x0164ad90_vrom_end","UNK_TYPE",""),
0x01EF2000:("vr_fine_static_vrom_start","UNK_TYPE",""),
0x01EFE000:("vr_cloud_static_vrom_start","UNK_TYPE",""),
0x01F0A000:("vr_pal_static_vrom_start","UNK_TYPE",""),
0x01F0A200:("vr_pal_static_vrom_end","UNK_TYPE",""),
0x0001A500:("dmadata_vrom_start","u32","",0x4), # Start of dmadata
0x00020700:("dmadata_vrom_end","u32","",0x4), # Byte immediately after end of dmadata
0x00046AF0:("Audioseq_vrom_start","UNK_TYPE","",0x4),
0x00097F70:("Audioseq_vrom_end","UNK_TYPE","",0x4),
0x0065D000:("link_animetion_vrom_start","UNK_TYPE","",0x4),
0x00957000:("","UNK_TYPE","",0x4), # ovl_kaleido_scope uses this. It is the start of vrom for a null entry in dmadata???
0x009ECEC0:("","UNK_TYPE","",0x4), # ovl_kaleido_scope uses this. It is the end of vrom for a null entry in dmadata???
0x009ED000:("","UNK_TYPE","",0x4), # ovl_kaleido_scope uses this. It is the start of vrom for a null entry in dmadata???
0x009F4700:("","UNK_TYPE","",0x4), # ovl_kaleido_scope uses this. It is the end of vrom for a null entry in dmadata???
0x009F5000:("icon_item_field_static_vrom_start","UNK_TYPE","",0x4),
0x00A09AF0:("icon_item_field_static_vrom_end","UNK_TYPE","",0x4),
0x00A0A000:("icon_item_dungeon_static_vrom_start","UNK_TYPE","",0x4),
0x00A0EB80:("icon_item_dungeon_static_vrom_end","UNK_TYPE","",0x4),
0x00A0F000:("icon_item_gameover_static_vrom_start","UNK_TYPE","",0x4),
0x00A12300:("icon_item_gameover_static_vrom_end","UNK_TYPE","",0x4),
0x00A13000:("_013_0x00963540_vrom_start","UNK_TYPE","",0x4),
0x00A1BA00:("_013_0x00963540_vrom_end","UNK_TYPE","",0x4),
0x00A1C000:("_014_0x00967260_vrom_start","UNK_TYPE","",0x4),
0x00A1C2E0:("_014_0x00967260_vrom_end","UNK_TYPE","",0x4),
0x00A1D000:("map_i_static_vrom_start","UNK_TYPE","",0x4),
0x00A1E310:("map_grand_static_vrom_start","UNK_TYPE","",0x4),
0x00A27660:("item_name_static_vrom_start","UNK_TYPE","",0x4),
0x00A352F0:("map_name_static_vrom_start","UNK_TYPE","",0x4),
0x00A36C10:("_019_0x00980f60_vrom_start","UNK_TYPE","",0x4),
0x00A7BEE0:("_020_0x009c6230_vrom_start","UNK_TYPE","",0x4),
0x00A807A0:("_020_0x009c6230_vrom_end","UNK_TYPE","",0x4),
0x00A8C000:("_022_0x009caaf0_vrom_start","UNK_TYPE","",0x4),
0x00A92A10:("_023_0x009d1500_vrom_start","UNK_TYPE","",0x4),
0x00A990E0:("_023_0x009d1500_vrom_end","UNK_TYPE","",0x4),
0x00A9A000:("_024_0x009d3760_vrom_start","UNK_TYPE","",0x4),
0x00ABFC00:("_024_0x009d3760_vrom_end","UNK_TYPE","",0x4),
0x00AC0000:("do_action_static_vrom_start","UNK_TYPE","",0x4),
0x00AC4000:("message_static_vrom_start","UNK_TYPE","",0x4),
0x00ACA000:("message_texture_static_vrom_start","UNK_TYPE","",0x4),
0x00ACC000:("nes_font_static_vrom_start","UNK_TYPE","",0x4),
0x00AD1000:("en_message_data_static_vrom_start","UNK_TYPE","",0x4),
0x00B3B000:("staff_message_data_static_vrom_start","UNK_TYPE","",0x4),
0x00B3C000:("code_vrom_start","UNK_TYPE","",0x4),
0x00C7A4E0:("code_vrom_end","UNK_TYPE","",0x4),
0x01E85000:("nintendo_rogo_static_vrom_start","UNK_TYPE","",0x4),
0x01E87DC0:("nintendo_rogo_static_vrom_end","UNK_TYPE","",0x4),
0x01E88000:("title_static_vrom_start","UNK_TYPE","",0x4),
0x01EB9730:("title_static_vrom_end","UNK_TYPE","",0x4),
0x01EBA000:("_1124_0x0163f490_vrom_start","UNK_TYPE","",0x4),
0x01EBB280:("_1124_0x0163f490_vrom_end","UNK_TYPE","",0x4),
0x01EBC000:("_1125_0x0163fc10_vrom_start","UNK_TYPE","",0x4),
0x01EBC680:("_1125_0x0163fc10_vrom_end","UNK_TYPE","",0x4),
0x01EBD000:("_1126_0x0163ffc0_vrom_start","UNK_TYPE","",0x4),
0x01EC8B20:("_1126_0x0163ffc0_vrom_end","UNK_TYPE","",0x4),
0x01EC9000:("_1127_0x01643d50_vrom_start","UNK_TYPE","",0x4),
0x01EC9F30:("_1127_0x01643d50_vrom_end","UNK_TYPE","",0x4),
0x01ECA000:("_1128_0x01644c80_vrom_start","UNK_TYPE","",0x4),
0x01ED3B00:("_1128_0x01644c80_vrom_end","UNK_TYPE","",0x4),
0x01ED4000:("_1129_0x01646b60_vrom_start","UNK_TYPE","",0x4),
0x01EDDB00:("_1129_0x01646b60_vrom_end","UNK_TYPE","",0x4),
0x01EDE000:("_1130_0x01649020_vrom_start","UNK_TYPE","",0x4),
0x01EE7B00:("_1130_0x01649020_vrom_end","UNK_TYPE","",0x4),
0x01EE8000:("_1131_0x0164ad90_vrom_start","UNK_TYPE","",0x4),
0x01EF1B00:("_1131_0x0164ad90_vrom_end","UNK_TYPE","",0x4),
0x01EF2000:("vr_fine_static_vrom_start","UNK_TYPE","",0x4),
0x01EFE000:("vr_cloud_static_vrom_start","UNK_TYPE","",0x4),
0x01F0A000:("vr_pal_static_vrom_start","UNK_TYPE","",0x4),
0x01F0A200:("vr_pal_static_vrom_end","UNK_TYPE","",0x4),
}
+285 -61
View File
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -18,7 +18,7 @@ if __name__ == '__main__':
writing = False
lines = f.readlines()
for line in lines:
if line.startswith('glabel'):
if line.startswith('glabel') and not line.startswith('glabel .L'):
if current_file != None:
current_file.close()
func_name = line.split()[1]
+325
View File
File diff suppressed because it is too large Load Diff