diff --git a/.gitignore b/.gitignore index 6a84bb3e38..4fdcf98fa3 100644 --- a/.gitignore +++ b/.gitignore @@ -15,6 +15,7 @@ expected/ # Build artifacts build.ninja *.ld +*.elf *.z64 *.Yay0 *.msg.h @@ -28,6 +29,8 @@ build.ninja # Assets /*assets +*.bin +*.o # Star Rod /sprite/SpriteTable.xml diff --git a/.vscode/settings.json b/.vscode/settings.json index 8c9fc41e75..56b12a823d 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -31,5 +31,14 @@ }, "files.associations": { "*.h": "c", + "random": "c", + "array": "c", + "deque": "c", + "string": "c", + "unordered_map": "c", + "vector": "c", + "string_view": "c", + "initializer_list": "c", + "ranges": "c" }, } diff --git a/asm/data/code_1060_len_310.rodata.s b/asm/data/code_1060_len_310.rodata.s new file mode 100644 index 0000000000..b3e031650e --- /dev/null +++ b/asm/data/code_1060_len_310.rodata.s @@ -0,0 +1,6 @@ +.include "macro.inc" + +.section .rodata + +glabel D_80097D30 +.ascii "File:%s Line:%d %s \n\0\0\0" diff --git a/asm/data/code_6EAC0.data.s b/asm/data/code_6EAC0.data.s index 17783004c1..e78604e770 100644 --- a/asm/data/code_6EAC0.data.s +++ b/asm/data/code_6EAC0.data.s @@ -28,198 +28,3 @@ glabel nuContPakGameCode glabel nuContCallBack .word 0x00000000, 0x80093CA8, 0x02000000, 0x00000000 - -glabel nuContRmbSearchTime -.word 0x0000012C, contRmbRetrace, contRmbCheckMesg, contRmbStartMesg, contRmbStopMesg, contRmbForceStopMesg, contRmbForceStopEndMesg, 0x00000000 - -glabel nuContRmbCallBack -.word 0x00000000, 0x80093CE4, 0x03000000, 0x00000000 - -glabel nuGfxFunc -.word 0x00000000 - -glabel nuGfxPreNMIFunc -.word 0x00000000, 0x00000000, 0x00000000 - -glabel D_80093D20 -.word 0x00000000, contRetrace, contReadData, contReadNW, contQuery, 0x00000000 - -glabel D_80093D38 -.word 0x00000000, 0x80093D24, 0x01000000, 0x00000000, 0x00000000, 0x00000000 - -glabel D_80093D50 -.word 0x00000000 - -glabel D_80093D54 -.word 0x00000000 - -glabel D_80093D58 -.word 0x00000000 - -glabel D_80093D5C -.word 0x00000000 - -glabel D_80093D60 -.word 0x00000000 - -glabel D_80093D64 -.word 0x00000000 - -glabel D_80093D68 -.word 0x00000000 - -glabel D_80093D6C -.word 0x00000000 - -glabel D_80093D70 -.word 0x800B4518, 0x800B1B08, 0x00000000, 0x00000000 - -glabel D_80093D80 -.word 0x00000001, 0x00000000, 0x00000000, 0x00000000 - -glabel D_80093D90 -.word 0x00000000, 0x00000000, 0x00000000, 0x00000000 - -glabel D_80093DA0 -.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - -glabel D_80093DB0 -.word 0x00000000, 0x00000000, 0x00000000, 0x00000000 - -glabel D_80093DC0 -.float 0.017453292, 0.0, 0.0, 0.0 - -glabel D_80093DD0 -.float 0.017453292, 0.0, 0.0, 0.0 - -glabel D_80093DE0 -.short 0x0000, 0x0032, 0x0064, 0x0096, 0x00C9, 0x00FB, 0x012D, 0x0160, 0x0192, 0x01C4, 0x01F7, 0x0229, 0x025B, 0x028E, 0x02C0, 0x02F2, 0x0324, 0x0357, 0x0389, 0x03BB, 0x03EE, 0x0420, 0x0452, 0x0484, 0x04B7, 0x04E9, 0x051B, 0x054E, 0x0580, 0x05B2, 0x05E4, 0x0617, 0x0649, 0x067B, 0x06AD, 0x06E0, 0x0712, 0x0744, 0x0776, 0x07A9, 0x07DB, 0x080D, 0x083F, 0x0871, 0x08A4, 0x08D6, 0x0908, 0x093A, 0x096C, 0x099F, 0x09D1, 0x0A03, 0x0A35, 0x0A67, 0x0A99, 0x0ACB, 0x0AFE, 0x0B30, 0x0B62, 0x0B94, 0x0BC6, 0x0BF8, 0x0C2A, 0x0C5C, 0x0C8E, 0x0CC0, 0x0CF2, 0x0D25, 0x0D57, 0x0D89, 0x0DBB, 0x0DED, 0x0E1F, 0x0E51, 0x0E83, 0x0EB5, 0x0EE7, 0x0F19, 0x0F4B, 0x0F7C, 0x0FAE, 0x0FE0, 0x1012, 0x1044, 0x1076, 0x10A8, 0x10DA, 0x110C, 0x113E, 0x116F, 0x11A1, 0x11D3, 0x1205, 0x1237, 0x1269, 0x129A, 0x12CC, 0x12FE, 0x1330, 0x1361, 0x1393, 0x13C5, 0x13F6, 0x1428, 0x145A, 0x148C, 0x14BD, 0x14EF, 0x1520, 0x1552, 0x1584, 0x15B5, 0x15E7, 0x1618, 0x164A, 0x167B, 0x16AD, 0x16DF, 0x1710, 0x1741, 0x1773, 0x17A4, 0x17D6, 0x1807, 0x1839, 0x186A, 0x189B, 0x18CD, 0x18FE, 0x1930, 0x1961, 0x1992, 0x19C3, 0x19F5, 0x1A26, 0x1A57, 0x1A88, 0x1ABA, 0x1AEB, 0x1B1C, 0x1B4D, 0x1B7E, 0x1BAF, 0x1BE1, 0x1C12, 0x1C43, 0x1C74, 0x1CA5, 0x1CD6, 0x1D07, 0x1D38, 0x1D69, 0x1D9A, 0x1DCB, 0x1DFC, 0x1E2D, 0x1E5D, 0x1E8E, 0x1EBF, 0x1EF0, 0x1F21, 0x1F52, 0x1F82, 0x1FB3, 0x1FE4, 0x2015, 0x2045, 0x2076, 0x20A7, 0x20D7, 0x2108, 0x2139, 0x2169, 0x219A, 0x21CA, 0x21FB, 0x222B, 0x225C, 0x228C, 0x22BD, 0x22ED, 0x231D, 0x234E, 0x237E, 0x23AE, 0x23DF, 0x240F, 0x243F, 0x2470, 0x24A0, 0x24D0, 0x2500, 0x2530, 0x2560, 0x2591, 0x25C1, 0x25F1, 0x2621, 0x2651, 0x2681, 0x26B1, 0x26E1, 0x2711, 0x2740, 0x2770, 0x27A0, 0x27D0, 0x2800, 0x2830, 0x285F, 0x288F, 0x28BF, 0x28EE, 0x291E, 0x294E, 0x297D, 0x29AD, 0x29DD, 0x2A0C, 0x2A3C, 0x2A6B, 0x2A9B, 0x2ACA, 0x2AF9, 0x2B29, 0x2B58, 0x2B87, 0x2BB7, 0x2BE6, 0x2C15, 0x2C44, 0x2C74, 0x2CA3, 0x2CD2, 0x2D01, 0x2D30, 0x2D5F, 0x2D8E, 0x2DBD, 0x2DEC, 0x2E1B, 0x2E4A, 0x2E79, 0x2EA8, 0x2ED7, 0x2F06, 0x2F34, 0x2F63, 0x2F92, 0x2FC0, 0x2FEF, 0x301E, 0x304C, 0x307B, 0x30A9, 0x30D8, 0x3107, 0x3135, 0x3163, 0x3192, 0x31C0, 0x31EF, 0x321D, 0x324B, 0x3279, 0x32A8, 0x32D6, 0x3304, 0x3332, 0x3360, 0x338E, 0x33BC, 0x33EA, 0x3418, 0x3446, 0x3474, 0x34A2, 0x34D0, 0x34FE, 0x352B, 0x3559, 0x3587, 0x35B5, 0x35E2, 0x3610, 0x363D, 0x366B, 0x3698, 0x36C6, 0x36F3, 0x3721, 0x374E, 0x377C, 0x37A9, 0x37D6, 0x3803, 0x3831, 0x385E, 0x388B, 0x38B8, 0x38E5, 0x3912, 0x393F, 0x396C, 0x3999, 0x39C6, 0x39F3, 0x3A20, 0x3A4D, 0x3A79, 0x3AA6, 0x3AD3, 0x3B00, 0x3B2C, 0x3B59, 0x3B85, 0x3BB2, 0x3BDE, 0x3C0B, 0x3C37, 0x3C64, 0x3C90, 0x3CBC, 0x3CE9, 0x3D15, 0x3D41, 0x3D6D, 0x3D99, 0x3DC5, 0x3DF1, 0x3E1D, 0x3E49, 0x3E75, 0x3EA1, 0x3ECD, 0x3EF9, 0x3F25, 0x3F50, 0x3F7C, 0x3FA8, 0x3FD3, 0x3FFF, 0x402B, 0x4056, 0x4082, 0x40AD, 0x40D8, 0x4104, 0x412F, 0x415A, 0x4186, 0x41B1, 0x41DC, 0x4207, 0x4232, 0x425D, 0x4288, 0x42B3, 0x42DE, 0x4309, 0x4334, 0x435F, 0x4389, 0x43B4, 0x43DF, 0x4409, 0x4434, 0x445F, 0x4489, 0x44B4, 0x44DE, 0x4508, 0x4533, 0x455D, 0x4587, 0x45B1, 0x45DC, 0x4606, 0x4630, 0x465A, 0x4684, 0x46AE, 0x46D8, 0x4702, 0x472C, 0x4755, 0x477F, 0x47A9, 0x47D2, 0x47FC, 0x4826, 0x484F, 0x4879, 0x48A2, 0x48CC, 0x48F5, 0x491E, 0x4948, 0x4971, 0x499A, 0x49C3, 0x49EC, 0x4A15, 0x4A3E, 0x4A67, 0x4A90, 0x4AB9, 0x4AE2, 0x4B0B, 0x4B33, 0x4B5C, 0x4B85, 0x4BAD, 0x4BD6, 0x4BFE, 0x4C27, 0x4C4F, 0x4C78, 0x4CA0, 0x4CC8, 0x4CF0, 0x4D19, 0x4D41, 0x4D69, 0x4D91, 0x4DB9, 0x4DE1, 0x4E09, 0x4E31, 0x4E58, 0x4E80, 0x4EA8, 0x4ED0, 0x4EF7, 0x4F1F, 0x4F46, 0x4F6E, 0x4F95, 0x4FBD, 0x4FE4, 0x500B, 0x5032, 0x505A, 0x5081, 0x50A8, 0x50CF, 0x50F6, 0x511D, 0x5144, 0x516B, 0x5191, 0x51B8, 0x51DF, 0x5205, 0x522C, 0x5253, 0x5279, 0x52A0, 0x52C6, 0x52EC, 0x5313, 0x5339, 0x535F, 0x5385, 0x53AB, 0x53D1, 0x53F7, 0x541D, 0x5443, 0x5469, 0x548F, 0x54B5, 0x54DA, 0x5500, 0x5525, 0x554B, 0x5571, 0x5596, 0x55BB, 0x55E1, 0x5606, 0x562B, 0x5650, 0x5675, 0x569B, 0x56C0, 0x56E5, 0x5709, 0x572E, 0x5753, 0x5778, 0x579D, 0x57C1, 0x57E6, 0x580A, 0x582F, 0x5853, 0x5878, 0x589C, 0x58C0, 0x58E5, 0x5909, 0x592D, 0x5951, 0x5975, 0x5999, 0x59BD, 0x59E1, 0x5A04, 0x5A28, 0x5A4C, 0x5A6F, 0x5A93, 0x5AB7, 0x5ADA, 0x5AFD, 0x5B21, 0x5B44, 0x5B67, 0x5B8B, 0x5BAE, 0x5BD1, 0x5BF4, 0x5C17, 0x5C3A, 0x5C5D, 0x5C7F, 0x5CA2, 0x5CC5, 0x5CE7, 0x5D0A, 0x5D2D, 0x5D4F, 0x5D71, 0x5D94, 0x5DB6, 0x5DD8, 0x5DFA, 0x5E1D, 0x5E3F, 0x5E61, 0x5E83, 0x5EA5, 0x5EC6, 0x5EE8, 0x5F0A, 0x5F2C, 0x5F4D, 0x5F6F, 0x5F90, 0x5FB2, 0x5FD3, 0x5FF4, 0x6016, 0x6037, 0x6058, 0x6079, 0x609A, 0x60BB, 0x60DC, 0x60FD, 0x611E, 0x613E, 0x615F, 0x6180, 0x61A0, 0x61C1, 0x61E1, 0x6202, 0x6222, 0x6242, 0x6263, 0x6283, 0x62A3, 0x62C3, 0x62E3, 0x6303, 0x6323, 0x6342, 0x6362, 0x6382, 0x63A1, 0x63C1, 0x63E0, 0x6400, 0x641F, 0x643F, 0x645E, 0x647D, 0x649C, 0x64BB, 0x64DA, 0x64F9, 0x6518, 0x6537, 0x6556, 0x6574, 0x6593, 0x65B2, 0x65D0, 0x65EF, 0x660D, 0x662B, 0x664A, 0x6668, 0x6686, 0x66A4, 0x66C2, 0x66E0, 0x66FE, 0x671C, 0x673A, 0x6757, 0x6775, 0x6792, 0x67B0, 0x67CD, 0x67EB, 0x6808, 0x6825, 0x6843, 0x6860, 0x687D, 0x689A, 0x68B7, 0x68D4, 0x68F1, 0x690D, 0x692A, 0x6947, 0x6963, 0x6980, 0x699C, 0x69B9, 0x69D5, 0x69F1, 0x6A0E, 0x6A2A, 0x6A46, 0x6A62, 0x6A7E, 0x6A9A, 0x6AB5, 0x6AD1, 0x6AED, 0x6B08, 0x6B24, 0x6B40, 0x6B5B, 0x6B76, 0x6B92, 0x6BAD, 0x6BC8, 0x6BE3, 0x6BFE, 0x6C19, 0x6C34, 0x6C4F, 0x6C6A, 0x6C84, 0x6C9F, 0x6CBA, 0x6CD4, 0x6CEF, 0x6D09, 0x6D23, 0x6D3E, 0x6D58, 0x6D72, 0x6D8C, 0x6DA6, 0x6DC0, 0x6DDA, 0x6DF3, 0x6E0D, 0x6E27, 0x6E40, 0x6E5A, 0x6E73, 0x6E8D, 0x6EA6, 0x6EBF, 0x6ED9, 0x6EF2, 0x6F0B, 0x6F24, 0x6F3D, 0x6F55, 0x6F6E, 0x6F87, 0x6FA0, 0x6FB8, 0x6FD1, 0x6FE9, 0x7002, 0x701A, 0x7032, 0x704A, 0x7062, 0x707A, 0x7092, 0x70AA, 0x70C2, 0x70DA, 0x70F2, 0x7109, 0x7121, 0x7138, 0x7150, 0x7167, 0x717E, 0x7196, 0x71AD, 0x71C4, 0x71DB, 0x71F2, 0x7209, 0x7220, 0x7236, 0x724D, 0x7264, 0x727A, 0x7291, 0x72A7, 0x72BD, 0x72D4, 0x72EA, 0x7300, 0x7316, 0x732C, 0x7342, 0x7358, 0x736E, 0x7383, 0x7399, 0x73AE, 0x73C4, 0x73D9, 0x73EF, 0x7404, 0x7419, 0x742E, 0x7443, 0x7458, 0x746D, 0x7482, 0x7497, 0x74AC, 0x74C0, 0x74D5, 0x74EA, 0x74FE, 0x7512, 0x7527, 0x753B, 0x754F, 0x7563, 0x7577, 0x758B, 0x759F, 0x75B3, 0x75C7, 0x75DA, 0x75EE, 0x7601, 0x7615, 0x7628, 0x763B, 0x764F, 0x7662, 0x7675, 0x7688, 0x769B, 0x76AE, 0x76C1, 0x76D3, 0x76E6, 0x76F9, 0x770B, 0x771E, 0x7730, 0x7742, 0x7754, 0x7767, 0x7779, 0x778B, 0x779D, 0x77AF, 0x77C0, 0x77D2, 0x77E4, 0x77F5, 0x7807, 0x7818, 0x782A, 0x783B, 0x784C, 0x785D, 0x786E, 0x787F, 0x7890, 0x78A1, 0x78B2, 0x78C3, 0x78D3, 0x78E4, 0x78F4, 0x7905, 0x7915, 0x7925, 0x7936, 0x7946, 0x7956, 0x7966, 0x7976, 0x7985, 0x7995, 0x79A5, 0x79B5, 0x79C4, 0x79D4, 0x79E3, 0x79F2, 0x7A02, 0x7A11, 0x7A20, 0x7A2F, 0x7A3E, 0x7A4D, 0x7A5B, 0x7A6A, 0x7A79, 0x7A87, 0x7A96, 0x7AA4, 0x7AB3, 0x7AC1, 0x7ACF, 0x7ADD, 0x7AEB, 0x7AF9, 0x7B07, 0x7B15, 0x7B23, 0x7B31, 0x7B3E, 0x7B4C, 0x7B59, 0x7B67, 0x7B74, 0x7B81, 0x7B8E, 0x7B9B, 0x7BA8, 0x7BB5, 0x7BC2, 0x7BCF, 0x7BDC, 0x7BE8, 0x7BF5, 0x7C02, 0x7C0E, 0x7C1A, 0x7C27, 0x7C33, 0x7C3F, 0x7C4B, 0x7C57, 0x7C63, 0x7C6F, 0x7C7A, 0x7C86, 0x7C92, 0x7C9D, 0x7CA9, 0x7CB4, 0x7CBF, 0x7CCB, 0x7CD6, 0x7CE1, 0x7CEC, 0x7CF7, 0x7D02, 0x7D0C, 0x7D17, 0x7D22, 0x7D2C, 0x7D37, 0x7D41, 0x7D4B, 0x7D56, 0x7D60, 0x7D6A, 0x7D74, 0x7D7E, 0x7D88, 0x7D91, 0x7D9B, 0x7DA5, 0x7DAE, 0x7DB8, 0x7DC1, 0x7DCB, 0x7DD4, 0x7DDD, 0x7DE6, 0x7DEF, 0x7DF8, 0x7E01, 0x7E0A, 0x7E13, 0x7E1B, 0x7E24, 0x7E2C, 0x7E35, 0x7E3D, 0x7E45, 0x7E4D, 0x7E56, 0x7E5E, 0x7E66, 0x7E6D, 0x7E75, 0x7E7D, 0x7E85, 0x7E8C, 0x7E94, 0x7E9B, 0x7EA3, 0x7EAA, 0x7EB1, 0x7EB8, 0x7EBF, 0x7EC6, 0x7ECD, 0x7ED4, 0x7EDB, 0x7EE1, 0x7EE8, 0x7EEE, 0x7EF5, 0x7EFB, 0x7F01, 0x7F08, 0x7F0E, 0x7F14, 0x7F1A, 0x7F20, 0x7F25, 0x7F2B, 0x7F31, 0x7F36, 0x7F3C, 0x7F41, 0x7F47, 0x7F4C, 0x7F51, 0x7F56, 0x7F5B, 0x7F60, 0x7F65, 0x7F6A, 0x7F6F, 0x7F74, 0x7F78, 0x7F7D, 0x7F81, 0x7F85, 0x7F8A, 0x7F8E, 0x7F92, 0x7F96, 0x7F9A, 0x7F9E, 0x7FA2, 0x7FA6, 0x7FA9, 0x7FAD, 0x7FB0, 0x7FB4, 0x7FB7, 0x7FBA, 0x7FBE, 0x7FC1, 0x7FC4, 0x7FC7, 0x7FCA, 0x7FCC, 0x7FCF, 0x7FD2, 0x7FD4, 0x7FD7, 0x7FD9, 0x7FDC, 0x7FDE, 0x7FE0, 0x7FE2, 0x7FE4, 0x7FE6, 0x7FE8, 0x7FEA, 0x7FEC, 0x7FED, 0x7FEF, 0x7FF1, 0x7FF2, 0x7FF3, 0x7FF5, 0x7FF6, 0x7FF7, 0x7FF8, 0x7FF9, 0x7FFA, 0x7FFB, 0x7FFB, 0x7FFC, 0x7FFD, 0x7FFD, 0x7FFE, 0x7FFE, 0x7FFE, 0x7FFE, 0x7FFE, 0x7FFF - -glabel D_800945E0 -.ascii " \0\0\0\0" - -glabel D_80094604 -.word 0x30303030, 0x30303030, 0x30303030, 0x30303030, 0x30303030, 0x30303030, 0x30303030, 0x30303030, 0x00000000, 0x00000000, 0x00000000 - -glabel D_80094630 -.word 0x00000000, 0x00000000, 0x00000000, 0x00000000 - -glabel D_80094640 -.word 0x00000000, 0x00000000, 0x00000000, 0x00000000 - -glabel D_80094650 -.word 0x00000000, 0xFFFFFFFF - -glabel D_80094658 -.word D_80094650 - -glabel D_8009465C -.word D_80094650 - -glabel D_80094660 -.word 0x00000000 - -glabel D_80094664 -.word 0x00000000, 0x00000000, 0x00000000 - -glabel D_80094670 -.word 0x800D9210, 0x00000000, 0x00000000, 0x00000000 - -glabel D_80094680 -.word 0x00000000 - -glabel D_80094684 -.word 0x00000000 - -glabel D_80094688 -.word 0x00000000 - -glabel D_8009468C -.word 0x00000000 - -glabel D_80094690 -.word 0x00000000 - -glabel D_80094694 -.word 0x00000000 - -glabel D_80094698 -.word 0x00000000 - -glabel D_8009469C -.word 0x00000000 - -glabel osViModeTable -.word 0x00000000, 0x0000320E, 0x00000140, 0x03E52239, 0x0000020D, 0x00000C15, 0x0C150C15, 0x006C02EC, 0x00000200, 0x00000000, 0x00000280, 0x00000400, 0x002501FF, 0x000E0204, 0x00000002, 0x00000280, 0x00000400, 0x002501FF, 0x000E0204, 0x00000002, 0x01000000, 0x0000324E, 0x00000140, 0x03E52239, 0x0000020C, 0x00000C15, 0x0C150C15, 0x006C02EC, 0x00000200, 0x00000000, 0x00000280, 0x01000400, 0x002301FD, 0x000E0204, 0x00000002, 0x00000280, 0x03000400, 0x002501FF, 0x000E0204, 0x00000002, 0x02000000, 0x0000311E, 0x00000140, 0x03E52239, 0x0000020D, 0x00000C15, 0x0C150C15, 0x006C02EC, 0x00000200, 0x00000000, 0x00000280, 0x00000400, 0x002501FF, 0x000E0204, 0x00000002, 0x00000280, 0x00000400, 0x002501FF, 0x000E0204, 0x00000002, 0x03000000, 0x0000305E, 0x00000140, 0x03E52239, 0x0000020C, 0x00000C15, 0x0C150C15, 0x006C02EC, 0x00000200, 0x00000000, 0x00000280, 0x01000400, 0x002301FD, 0x000E0204, 0x00000002, 0x00000280, 0x03000400, 0x002501FF, 0x000E0204, 0x00000002, 0x04000000, 0x0000330F, 0x00000140, 0x03E52239, 0x0000020D, 0x00000C15, 0x0C150C15, 0x006C02EC, 0x00000200, 0x00000000, 0x00000500, 0x00000400, 0x002501FF, 0x000E0204, 0x00000002, 0x00000500, 0x00000400, 0x002501FF, 0x000E0204, 0x00000002, 0x05000000, 0x0000324F, 0x00000140, 0x03E52239, 0x0000020C, 0x00000C15, 0x0C150C15, 0x006C02EC, 0x00000200, 0x00000000, 0x00000500, 0x01000400, 0x002301FD, 0x000E0204, 0x00000002, 0x00000500, 0x03000400, 0x002501FF, 0x000E0204, 0x00000002, 0x06000000, 0x0000301F, 0x00000140, 0x03E52239, 0x0000020D, 0x00000C15, 0x0C150C15, 0x006C02EC, 0x00000200, 0x00000000, 0x00000500, 0x00000400, 0x002501FF, 0x000E0204, 0x00000002, 0x00000500, 0x00000400, 0x002501FF, 0x000E0204, 0x00000002, 0x07000000, 0x0000305F, 0x00000140, 0x03E52239, 0x0000020C, 0x00000C15, 0x0C150C15, 0x006C02EC, 0x00000200, 0x00000000, 0x00000500, 0x01000400, 0x002301FD, 0x000E0204, 0x00000002, 0x00000500, 0x03000400, 0x002501FF, 0x000E0204, 0x00000002, 0x08000000, 0x0000324E, 0x00000500, 0x03E52239, 0x0000020C, 0x00000C15, 0x0C150C15, 0x006C02EC, 0x00000400, 0x00000000, 0x00000500, 0x00000400, 0x002301FD, 0x000E0204, 0x00000002, 0x00000A00, 0x00000400, 0x002501FF, 0x000E0204, 0x00000002, 0x09000000, 0x0000324E, 0x00000280, 0x03E52239, 0x0000020C, 0x00000C15, 0x0C150C15, 0x006C02EC, 0x00000400, 0x00000000, 0x00000500, 0x02000800, 0x002301FD, 0x000E0204, 0x00000002, 0x00000A00, 0x02000800, 0x002501FF, 0x000E0204, 0x00000002, 0x0A000000, 0x0000305E, 0x00000500, 0x03E52239, 0x0000020C, 0x00000C15, 0x0C150C15, 0x006C02EC, 0x00000400, 0x00000000, 0x00000500, 0x00000400, 0x002301FD, 0x000E0204, 0x00000002, 0x00000A00, 0x00000400, 0x002501FF, 0x000E0204, 0x00000002, 0x0B000000, 0x0000305E, 0x00000280, 0x03E52239, 0x0000020C, 0x00000C15, 0x0C150C15, 0x006C02EC, 0x00000400, 0x00000000, 0x00000500, 0x02000800, 0x002301FD, 0x000E0204, 0x00000002, 0x00000A00, 0x02000800, 0x002501FF, 0x000E0204, 0x00000002, 0x0C000000, 0x0000334F, 0x00000500, 0x03E52239, 0x0000020C, 0x00000C15, 0x0C150C15, 0x006C02EC, 0x00000400, 0x00000000, 0x00000A00, 0x00000400, 0x002301FD, 0x000E0204, 0x00000002, 0x00001400, 0x00000400, 0x002501FF, 0x000E0204, 0x00000002, 0x0D000000, 0x0000324F, 0x00000280, 0x03E52239, 0x0000020C, 0x00000C15, 0x0C150C15, 0x006C02EC, 0x00000400, 0x00000000, 0x00000A00, 0x02000800, 0x002301FD, 0x000E0204, 0x00000002, 0x00001400, 0x02000800, 0x002501FF, 0x000E0204, 0x00000002, 0x0E000000, 0x0000320E, 0x00000140, 0x04541E3A, 0x00000271, 0x00170C69, 0x0C6F0C6D, 0x00800300, 0x00000200, 0x00000000, 0x00000280, 0x00000400, 0x005F0239, 0x0009026B, 0x00000002, 0x00000280, 0x00000400, 0x005F0239, 0x0009026B, 0x00000002, 0x0F000000, 0x0000324E, 0x00000140, 0x04541E3A, 0x00000270, 0x00170C69, 0x0C6F0C6D, 0x00800300, 0x00000200, 0x00000000, 0x00000280, 0x01000400, 0x005D0237, 0x0009026B, 0x00000002, 0x00000280, 0x03000400, 0x005F0239, 0x000D0269, 0x00000002, 0x10000000, 0x0000311E, 0x00000140, 0x04541E3A, 0x00000271, 0x00170C69, 0x0C6F0C6D, 0x00800300, 0x00000200, 0x00000000, 0x00000280, 0x00000400, 0x005F0239, 0x0009026B, 0x00000002, 0x00000280, 0x00000400, 0x005F0239, 0x0009026B, 0x00000002, 0x11000000, 0x0000305E, 0x00000140, 0x04541E3A, 0x00000270, 0x00170C69, 0x0C6F0C6D, 0x00800300, 0x00000200, 0x00000000, 0x00000280, 0x01000400, 0x005D0237, 0x0009026B, 0x00000002, 0x00000280, 0x03000400, 0x005F0239, 0x000D0269, 0x00000002, 0x12000000, 0x0000330F, 0x00000140, 0x04541E3A, 0x00000271, 0x00170C69, 0x0C6F0C6D, 0x00800300, 0x00000200, 0x00000000, 0x00000500, 0x00000400, 0x005F0239, 0x0009026B, 0x00000002, 0x00000500, 0x00000400, 0x005F0239, 0x0009026B, 0x00000002, 0x13000000, 0x0000324F, 0x00000140, 0x04541E3A, 0x00000270, 0x00170C69, 0x0C6F0C6D, 0x00800300, 0x00000200, 0x00000000, 0x00000500, 0x01000400, 0x005D0237, 0x0009026B, 0x00000002, 0x00000500, 0x03000400, 0x005F0239, 0x000D0269, 0x00000002, 0x14000000, 0x0000301F, 0x00000140, 0x04541E3A, 0x00000271, 0x00170C69, 0x0C6F0C6D, 0x00800300, 0x00000200, 0x00000000, 0x00000500, 0x00000400, 0x005F0239, 0x0009026B, 0x00000002, 0x00000500, 0x00000400, 0x005F0239, 0x0009026B, 0x00000002, 0x15000000, 0x0000305F, 0x00000140, 0x04541E3A, 0x00000270, 0x00170C69, 0x0C6F0C6D, 0x00800300, 0x00000200, 0x00000000, 0x00000500, 0x01000400, 0x005D0237, 0x0009026B, 0x00000002, 0x00000500, 0x03000400, 0x005F0239, 0x000D0269, 0x00000002, 0x16000000, 0x0000324E, 0x00000500, 0x04541E3A, 0x00000270, 0x00170C69, 0x0C6F0C6D, 0x00800300, 0x00000400, 0x00000000, 0x00000500, 0x00000400, 0x005D0237, 0x0009026B, 0x00000002, 0x00000A00, 0x00000400, 0x005F0239, 0x000D0269, 0x00000002, 0x17000000, 0x0000324E, 0x00000280, 0x04541E3A, 0x00000270, 0x00170C69, 0x0C6F0C6D, 0x00800300, 0x00000400, 0x00000000, 0x00000500, 0x02000800, 0x005D0237, 0x0009026B, 0x00000002, 0x00000A00, 0x02000800, 0x005F0239, 0x000D0269, 0x00000002, 0x18000000, 0x0000305E, 0x00000500, 0x04541E3A, 0x00000270, 0x00170C69, 0x0C6F0C6D, 0x00800300, 0x00000400, 0x00000000, 0x00000500, 0x00000400, 0x005D0237, 0x0009026B, 0x00000002, 0x00000A00, 0x00000400, 0x005F0239, 0x000D0269, 0x00000002, 0x19000000, 0x0000305E, 0x00000280, 0x04541E3A, 0x00000270, 0x00170C69, 0x0C6F0C6D, 0x00800300, 0x00000400, 0x00000000, 0x00000500, 0x02000800, 0x005D0237, 0x0009026B, 0x00000002, 0x00000A00, 0x02000800, 0x005F0239, 0x000D0269, 0x00000002, 0x1A000000, 0x0000334F, 0x00000500, 0x04541E3A, 0x00000270, 0x00170C69, 0x0C6F0C6D, 0x00800300, 0x00000400, 0x00000000, 0x00000A00, 0x00000400, 0x005D0237, 0x0009026B, 0x00000002, 0x00001400, 0x00000400, 0x005F0239, 0x000D0269, 0x00000002, 0x1B000000, 0x0000324F, 0x00000280, 0x04541E3A, 0x00000270, 0x00170C69, 0x0C6F0C6D, 0x00800300, 0x00000400, 0x00000000, 0x00000A00, 0x02000800, 0x005D0237, 0x0009026B, 0x00000002, 0x00001400, 0x02000800, 0x005F0239, 0x000D0269, 0x00000002, 0x1C000000, 0x0000320E, 0x00000140, 0x04651E39, 0x0000020D, 0x00040C11, 0x0C190C1A, 0x006C02EC, 0x00000200, 0x00000000, 0x00000280, 0x00000400, 0x002501FF, 0x000E0204, 0x00000002, 0x00000280, 0x00000400, 0x002501FF, 0x000E0204, 0x00000002, 0x1D000000, 0x0000324E, 0x00000140, 0x04651E39, 0x0000020C, 0x00000C10, 0x0C1C0C1C, 0x006C02EC, 0x00000200, 0x00000000, 0x00000280, 0x01000400, 0x002301FD, 0x000B0202, 0x00000002, 0x00000280, 0x03000400, 0x002501FF, 0x000E0204, 0x00000002, 0x1E000000, 0x0000311E, 0x00000140, 0x04651E39, 0x0000020D, 0x00040C11, 0x0C190C1A, 0x006C02EC, 0x00000200, 0x00000000, 0x00000280, 0x00000400, 0x002501FF, 0x000E0204, 0x00000002, 0x00000280, 0x00000400, 0x002501FF, 0x000E0204, 0x00000002, 0x1F000000, 0x0000305E, 0x00000140, 0x04651E39, 0x0000020C, 0x00000C10, 0x0C1C0C1C, 0x006C02EC, 0x00000200, 0x00000000, 0x00000280, 0x01000400, 0x002301FD, 0x000B0202, 0x00000002, 0x00000280, 0x03000400, 0x002501FF, 0x000E0204, 0x00000002, 0x20000000, 0x0000330F, 0x00000140, 0x04651E39, 0x0000020D, 0x00040C11, 0x0C190C1A, 0x006C02EC, 0x00000200, 0x00000000, 0x00000500, 0x00000400, 0x002501FF, 0x000E0204, 0x00000002, 0x00000500, 0x00000400, 0x002501FF, 0x000E0204, 0x00000002, 0x21000000, 0x0000324F, 0x00000140, 0x04651E39, 0x0000020C, 0x00000C10, 0x0C1C0C1C, 0x006C02EC, 0x00000200, 0x00000000, 0x00000500, 0x01000400, 0x002301FD, 0x000B0202, 0x00000002, 0x00000500, 0x03000400, 0x002501FF, 0x000E0204, 0x00000002, 0x22000000, 0x0000301F, 0x00000140, 0x04651E39, 0x0000020D, 0x00040C11, 0x0C190C1A, 0x006C02EC, 0x00000200, 0x00000000, 0x00000500, 0x00000400, 0x002501FF, 0x000E0204, 0x00000002, 0x00000500, 0x00000400, 0x002501FF, 0x000E0204, 0x00000002, 0x23000000, 0x0000305F, 0x00000140, 0x04651E39, 0x0000020C, 0x00000C10, 0x0C1C0C1C, 0x006C02EC, 0x00000200, 0x00000000, 0x00000500, 0x01000400, 0x002301FD, 0x000B0202, 0x00000002, 0x00000500, 0x03000400, 0x002501FF, 0x000E0204, 0x00000002, 0x24000000, 0x0000324E, 0x00000500, 0x04651E39, 0x0000020C, 0x00000C10, 0x0C1C0C1C, 0x006C02EC, 0x00000400, 0x00000000, 0x00000500, 0x00000400, 0x002301FD, 0x000B0202, 0x00000002, 0x00000A00, 0x00000400, 0x002501FF, 0x000E0204, 0x00000002, 0x25000000, 0x0000324E, 0x00000280, 0x04651E39, 0x0000020C, 0x00000C10, 0x0C1C0C1C, 0x006C02EC, 0x00000400, 0x00000000, 0x00000500, 0x02000800, 0x002301FD, 0x000B0202, 0x00000002, 0x00000A00, 0x02000800, 0x002501FF, 0x000E0204, 0x00000002, 0x26000000, 0x0000305E, 0x00000500, 0x04651E39, 0x0000020C, 0x00000C10, 0x0C1C0C1C, 0x006C02EC, 0x00000400, 0x00000000, 0x00000500, 0x00000400, 0x002301FD, 0x000B0202, 0x00000002, 0x00000A00, 0x00000400, 0x002501FF, 0x000E0204, 0x00000002, 0x27000000, 0x0000305E, 0x00000280, 0x04651E39, 0x0000020C, 0x00000C10, 0x0C1C0C1C, 0x006C02EC, 0x00000400, 0x00000000, 0x00000500, 0x02000800, 0x002301FD, 0x000B0202, 0x00000002, 0x00000A00, 0x02000800, 0x002501FF, 0x000E0204, 0x00000002, 0x28000000, 0x0000334F, 0x00000500, 0x04651E39, 0x0000020C, 0x00000C10, 0x0C1C0C1C, 0x006C02EC, 0x00000400, 0x00000000, 0x00000A00, 0x00000400, 0x002301FD, 0x000B0202, 0x00000002, 0x00001400, 0x00000400, 0x002501FF, 0x000E0204, 0x00000002, 0x29000000, 0x0000324F, 0x00000280, 0x04651E39, 0x0000020C, 0x00000C10, 0x0C1C0C1C, 0x006C02EC, 0x00000400, 0x00000000, 0x00000A00, 0x02000800, 0x002301FD, 0x000B0202, 0x00000002, 0x00001400, 0x02000800, 0x002501FF, 0x000E0204, 0x00000002, 0x2A000000, 0x0000320E, 0x00000140, 0x04541E3A, 0x00000271, 0x00170C69, 0x0C6F0C6D, 0x00800300, 0x00000200, 0x00000000, 0x00000280, 0x00000400, 0x002F0269, 0x0009026B, 0x00000002, 0x00000280, 0x00000400, 0x002F0269, 0x0009026B, 0x00000002, 0x2B000000, 0x0000324E, 0x00000140, 0x04541E3A, 0x00000270, 0x00170C69, 0x0C6F0C6D, 0x00800300, 0x00000200, 0x00000000, 0x00000280, 0x01000400, 0x002D0267, 0x0009026B, 0x00000002, 0x00000280, 0x03000400, 0x002F0269, 0x000D0269, 0x00000002, 0x2C000000, 0x0000311E, 0x00000140, 0x04541E3A, 0x00000271, 0x00170C69, 0x0C6F0C6D, 0x00800300, 0x00000200, 0x00000000, 0x00000280, 0x00000400, 0x002F0269, 0x0009026B, 0x00000002, 0x00000280, 0x00000400, 0x002F0269, 0x0009026B, 0x00000002, 0x2D000000, 0x0000305E, 0x00000140, 0x04541E3A, 0x00000270, 0x00170C69, 0x0C6F0C6D, 0x00800300, 0x00000200, 0x00000000, 0x00000280, 0x01000400, 0x002D0267, 0x0009026B, 0x00000002, 0x00000280, 0x03000400, 0x002F0269, 0x000D0269, 0x00000002, 0x2E000000, 0x0000330F, 0x00000140, 0x04541E3A, 0x00000271, 0x00170C69, 0x0C6F0C6D, 0x00800300, 0x00000200, 0x00000000, 0x00000500, 0x00000400, 0x002F0269, 0x0009026B, 0x00000002, 0x00000500, 0x00000400, 0x002F0269, 0x0009026B, 0x00000002, 0x2F000000, 0x0000324F, 0x00000140, 0x04541E3A, 0x00000270, 0x00170C69, 0x0C6F0C6D, 0x00800300, 0x00000200, 0x00000000, 0x00000500, 0x01000400, 0x002D0267, 0x0009026B, 0x00000002, 0x00000500, 0x03000400, 0x002F0269, 0x000D0269, 0x00000002, 0x30000000, 0x0000301F, 0x00000140, 0x04541E3A, 0x00000271, 0x00170C69, 0x0C6F0C6D, 0x00800300, 0x00000200, 0x00000000, 0x00000500, 0x00000400, 0x002F0269, 0x0009026B, 0x00000002, 0x00000500, 0x00000400, 0x002F0269, 0x0009026B, 0x00000002, 0x31000000, 0x0000305F, 0x00000140, 0x04541E3A, 0x00000270, 0x00170C69, 0x0C6F0C6D, 0x00800300, 0x00000200, 0x00000000, 0x00000500, 0x01000400, 0x002D0267, 0x0009026B, 0x00000002, 0x00000500, 0x03000400, 0x002F0269, 0x000D0269, 0x00000002, 0x32000000, 0x0000324E, 0x00000500, 0x04541E3A, 0x00000270, 0x00170C69, 0x0C6F0C6D, 0x00800300, 0x00000400, 0x00000000, 0x00000500, 0x00000400, 0x002D0267, 0x0009026B, 0x00000002, 0x00000A00, 0x00000400, 0x002F0269, 0x000D0269, 0x00000002, 0x33000000, 0x0000324E, 0x00000280, 0x04541E3A, 0x00000270, 0x00170C69, 0x0C6F0C6D, 0x00800300, 0x00000400, 0x00000000, 0x00000500, 0x02000800, 0x002D0267, 0x0009026B, 0x00000002, 0x00000A00, 0x02000800, 0x002F0269, 0x000D0269, 0x00000002, 0x34000000, 0x0000305E, 0x00000500, 0x04541E3A, 0x00000270, 0x00170C69, 0x0C6F0C6D, 0x00800300, 0x00000400, 0x00000000, 0x00000500, 0x00000400, 0x002D0267, 0x0009026B, 0x00000002, 0x00000A00, 0x00000400, 0x002F0269, 0x000D0269, 0x00000002, 0x35000000, 0x0000305E, 0x00000280, 0x04541E3A, 0x00000270, 0x00170C69, 0x0C6F0C6D, 0x00800300, 0x00000400, 0x00000000, 0x00000500, 0x02000800, 0x002D0267, 0x0009026B, 0x00000002, 0x00000A00, 0x02000800, 0x002F0269, 0x000D0269, 0x00000002, 0x36000000, 0x0000334F, 0x00000500, 0x04541E3A, 0x00000270, 0x00170C69, 0x0C6F0C6D, 0x00800300, 0x00000400, 0x00000000, 0x00000A00, 0x00000400, 0x002D0267, 0x0009026B, 0x00000002, 0x00001400, 0x00000400, 0x002F0269, 0x000D0269, 0x00000002, 0x37000000, 0x0000324F, 0x00000280, 0x04541E3A, 0x00000270, 0x00170C69, 0x0C6F0C6D, 0x00800300, 0x00000400, 0x00000000, 0x00000A00, 0x02000800, 0x002D0267, 0x0009026B, 0x00000002, 0x00001400, 0x02000800, 0x002F0269, 0x000D0269, 0x00000002 - -glabel D_80095820 -.word 0x02000000, 0x0000311E, 0x00000140, 0x03E52239, 0x0000020D, 0x00000C15, 0x0C150C15, 0x006C02EC, 0x00000200, 0x00000000, 0x00000280, 0x00000400, 0x002501FF, 0x000E0204, 0x00000002, 0x00000280, 0x00000400, 0x002501FF, 0x000E0204, 0x00000002 - -glabel D_80095870 -.word 0x1E000000, 0x0000311E, 0x00000140, 0x04651E39, 0x0000020D, 0x00040C11, 0x0C190C1A, 0x006C02EC, 0x00000200, 0x00000000, 0x00000280, 0x00000400, 0x002501FF, 0x000E0204, 0x00000002, 0x00000280, 0x00000400, 0x002501FF, 0x000E0204, 0x00000002 - -glabel D_800958C0 -.float 0.017453292, 0.0, 0.0, 0.0 - -glabel D_800958D0 -.word 0xFFFFFFFF - -glabel D_800958D4 -.byte 0xFA, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - -glabel D_800958E0 -.word 0xFFFFFFFF, 0x00000000, 0x00000000, 0x00000000 - -glabel D_800958F0 -.word 0x00000000 - -glabel D_800958F4 -.word 0x03B9ACA0 - -glabel D_800958F8 -.word 0x02E6D354 - -glabel D_800958FC -.word 0x00000000 - -glabel D_80095900 -.word 0x003FFF01, 0x00000000, 0x00000000, 0x00000000 - -glabel D_80095910 -.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 - -glabel D_80095938 -.word 0x00000000, 0x00000000 - -glabel D_80095940 -.ascii "0123456789abcdef\0\0\0\0" - -glabel D_80095954 -.word 0x30313233, 0x34353637, 0x38394142, 0x43444546, 0x00000000, 0x00000000, 0x00000000 - -glabel D_80095970 -.short 0x0000 - -glabel D_80095972 -.short 0x0000 - -glabel D_80095974 -.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - -glabel D_800959A2 -.short 0x0000 - -glabel D_800959A4 -.word 0x00000000 - -glabel D_800959A8 -.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 - -glabel D_800959D0 -.word D_80095970 - -glabel D_800959D4 -.word 0x800959A0, 0x00000000, 0x00000000 - -glabel D_800959E0 -.word 0x10000000, 0x0000311E, 0x00000140, 0x04541E3A, 0x00000271, 0x00170C69, 0x0C6F0C6D, 0x00800300, 0x00000200, 0x00000000, 0x00000280, 0x00000400, 0x005F0239, 0x0009026B, 0x00000002, 0x00000280, 0x00000400, 0x005F0239, 0x0009026B, 0x00000002 diff --git a/asm/data/code_6F110.data.s b/asm/data/code_6F110.data.s new file mode 100644 index 0000000000..341964f0b0 --- /dev/null +++ b/asm/data/code_6F110.data.s @@ -0,0 +1,192 @@ +.include "macro.inc" + +.section .data + +glabel nuGfxFunc +.word 0x00000000 + +glabel nuGfxPreNMIFunc +.word 0x00000000, 0x00000000, 0x00000000 + +glabel D_80093D20 +.word 0x00000000, contRetrace, contReadData, contReadNW, contQuery, 0x00000000 + +glabel D_80093D38 +.word 0x00000000, 0x80093D24, 0x01000000, 0x00000000, 0x00000000, 0x00000000 + +glabel D_80093D50 +.word 0x00000000 + +glabel D_80093D54 +.word 0x00000000 + +glabel D_80093D58 +.word 0x00000000 + +glabel D_80093D5C +.word 0x00000000 + +glabel D_80093D60 +.word 0x00000000 + +glabel D_80093D64 +.word 0x00000000 + +glabel D_80093D68 +.word 0x00000000 + +glabel D_80093D6C +.word 0x00000000 + +glabel D_80093D70 +.word 0x800B4518, 0x800B1B08, 0x00000000, 0x00000000 + +glabel D_80093D80 +.word 0x00000001, 0x00000000, 0x00000000, 0x00000000 + +glabel D_80093D90 +.word 0x00000000, 0x00000000, 0x00000000, 0x00000000 + +glabel D_80093DA0 +.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + +glabel D_80093DB0 +.word 0x00000000, 0x00000000, 0x00000000, 0x00000000 + +glabel D_80093DC0 +.float 0.017453292, 0.0, 0.0, 0.0 + +glabel D_80093DD0 +.float 0.017453292, 0.0, 0.0, 0.0 + +glabel D_80093DE0 +.short 0x0000, 0x0032, 0x0064, 0x0096, 0x00C9, 0x00FB, 0x012D, 0x0160, 0x0192, 0x01C4, 0x01F7, 0x0229, 0x025B, 0x028E, 0x02C0, 0x02F2, 0x0324, 0x0357, 0x0389, 0x03BB, 0x03EE, 0x0420, 0x0452, 0x0484, 0x04B7, 0x04E9, 0x051B, 0x054E, 0x0580, 0x05B2, 0x05E4, 0x0617, 0x0649, 0x067B, 0x06AD, 0x06E0, 0x0712, 0x0744, 0x0776, 0x07A9, 0x07DB, 0x080D, 0x083F, 0x0871, 0x08A4, 0x08D6, 0x0908, 0x093A, 0x096C, 0x099F, 0x09D1, 0x0A03, 0x0A35, 0x0A67, 0x0A99, 0x0ACB, 0x0AFE, 0x0B30, 0x0B62, 0x0B94, 0x0BC6, 0x0BF8, 0x0C2A, 0x0C5C, 0x0C8E, 0x0CC0, 0x0CF2, 0x0D25, 0x0D57, 0x0D89, 0x0DBB, 0x0DED, 0x0E1F, 0x0E51, 0x0E83, 0x0EB5, 0x0EE7, 0x0F19, 0x0F4B, 0x0F7C, 0x0FAE, 0x0FE0, 0x1012, 0x1044, 0x1076, 0x10A8, 0x10DA, 0x110C, 0x113E, 0x116F, 0x11A1, 0x11D3, 0x1205, 0x1237, 0x1269, 0x129A, 0x12CC, 0x12FE, 0x1330, 0x1361, 0x1393, 0x13C5, 0x13F6, 0x1428, 0x145A, 0x148C, 0x14BD, 0x14EF, 0x1520, 0x1552, 0x1584, 0x15B5, 0x15E7, 0x1618, 0x164A, 0x167B, 0x16AD, 0x16DF, 0x1710, 0x1741, 0x1773, 0x17A4, 0x17D6, 0x1807, 0x1839, 0x186A, 0x189B, 0x18CD, 0x18FE, 0x1930, 0x1961, 0x1992, 0x19C3, 0x19F5, 0x1A26, 0x1A57, 0x1A88, 0x1ABA, 0x1AEB, 0x1B1C, 0x1B4D, 0x1B7E, 0x1BAF, 0x1BE1, 0x1C12, 0x1C43, 0x1C74, 0x1CA5, 0x1CD6, 0x1D07, 0x1D38, 0x1D69, 0x1D9A, 0x1DCB, 0x1DFC, 0x1E2D, 0x1E5D, 0x1E8E, 0x1EBF, 0x1EF0, 0x1F21, 0x1F52, 0x1F82, 0x1FB3, 0x1FE4, 0x2015, 0x2045, 0x2076, 0x20A7, 0x20D7, 0x2108, 0x2139, 0x2169, 0x219A, 0x21CA, 0x21FB, 0x222B, 0x225C, 0x228C, 0x22BD, 0x22ED, 0x231D, 0x234E, 0x237E, 0x23AE, 0x23DF, 0x240F, 0x243F, 0x2470, 0x24A0, 0x24D0, 0x2500, 0x2530, 0x2560, 0x2591, 0x25C1, 0x25F1, 0x2621, 0x2651, 0x2681, 0x26B1, 0x26E1, 0x2711, 0x2740, 0x2770, 0x27A0, 0x27D0, 0x2800, 0x2830, 0x285F, 0x288F, 0x28BF, 0x28EE, 0x291E, 0x294E, 0x297D, 0x29AD, 0x29DD, 0x2A0C, 0x2A3C, 0x2A6B, 0x2A9B, 0x2ACA, 0x2AF9, 0x2B29, 0x2B58, 0x2B87, 0x2BB7, 0x2BE6, 0x2C15, 0x2C44, 0x2C74, 0x2CA3, 0x2CD2, 0x2D01, 0x2D30, 0x2D5F, 0x2D8E, 0x2DBD, 0x2DEC, 0x2E1B, 0x2E4A, 0x2E79, 0x2EA8, 0x2ED7, 0x2F06, 0x2F34, 0x2F63, 0x2F92, 0x2FC0, 0x2FEF, 0x301E, 0x304C, 0x307B, 0x30A9, 0x30D8, 0x3107, 0x3135, 0x3163, 0x3192, 0x31C0, 0x31EF, 0x321D, 0x324B, 0x3279, 0x32A8, 0x32D6, 0x3304, 0x3332, 0x3360, 0x338E, 0x33BC, 0x33EA, 0x3418, 0x3446, 0x3474, 0x34A2, 0x34D0, 0x34FE, 0x352B, 0x3559, 0x3587, 0x35B5, 0x35E2, 0x3610, 0x363D, 0x366B, 0x3698, 0x36C6, 0x36F3, 0x3721, 0x374E, 0x377C, 0x37A9, 0x37D6, 0x3803, 0x3831, 0x385E, 0x388B, 0x38B8, 0x38E5, 0x3912, 0x393F, 0x396C, 0x3999, 0x39C6, 0x39F3, 0x3A20, 0x3A4D, 0x3A79, 0x3AA6, 0x3AD3, 0x3B00, 0x3B2C, 0x3B59, 0x3B85, 0x3BB2, 0x3BDE, 0x3C0B, 0x3C37, 0x3C64, 0x3C90, 0x3CBC, 0x3CE9, 0x3D15, 0x3D41, 0x3D6D, 0x3D99, 0x3DC5, 0x3DF1, 0x3E1D, 0x3E49, 0x3E75, 0x3EA1, 0x3ECD, 0x3EF9, 0x3F25, 0x3F50, 0x3F7C, 0x3FA8, 0x3FD3, 0x3FFF, 0x402B, 0x4056, 0x4082, 0x40AD, 0x40D8, 0x4104, 0x412F, 0x415A, 0x4186, 0x41B1, 0x41DC, 0x4207, 0x4232, 0x425D, 0x4288, 0x42B3, 0x42DE, 0x4309, 0x4334, 0x435F, 0x4389, 0x43B4, 0x43DF, 0x4409, 0x4434, 0x445F, 0x4489, 0x44B4, 0x44DE, 0x4508, 0x4533, 0x455D, 0x4587, 0x45B1, 0x45DC, 0x4606, 0x4630, 0x465A, 0x4684, 0x46AE, 0x46D8, 0x4702, 0x472C, 0x4755, 0x477F, 0x47A9, 0x47D2, 0x47FC, 0x4826, 0x484F, 0x4879, 0x48A2, 0x48CC, 0x48F5, 0x491E, 0x4948, 0x4971, 0x499A, 0x49C3, 0x49EC, 0x4A15, 0x4A3E, 0x4A67, 0x4A90, 0x4AB9, 0x4AE2, 0x4B0B, 0x4B33, 0x4B5C, 0x4B85, 0x4BAD, 0x4BD6, 0x4BFE, 0x4C27, 0x4C4F, 0x4C78, 0x4CA0, 0x4CC8, 0x4CF0, 0x4D19, 0x4D41, 0x4D69, 0x4D91, 0x4DB9, 0x4DE1, 0x4E09, 0x4E31, 0x4E58, 0x4E80, 0x4EA8, 0x4ED0, 0x4EF7, 0x4F1F, 0x4F46, 0x4F6E, 0x4F95, 0x4FBD, 0x4FE4, 0x500B, 0x5032, 0x505A, 0x5081, 0x50A8, 0x50CF, 0x50F6, 0x511D, 0x5144, 0x516B, 0x5191, 0x51B8, 0x51DF, 0x5205, 0x522C, 0x5253, 0x5279, 0x52A0, 0x52C6, 0x52EC, 0x5313, 0x5339, 0x535F, 0x5385, 0x53AB, 0x53D1, 0x53F7, 0x541D, 0x5443, 0x5469, 0x548F, 0x54B5, 0x54DA, 0x5500, 0x5525, 0x554B, 0x5571, 0x5596, 0x55BB, 0x55E1, 0x5606, 0x562B, 0x5650, 0x5675, 0x569B, 0x56C0, 0x56E5, 0x5709, 0x572E, 0x5753, 0x5778, 0x579D, 0x57C1, 0x57E6, 0x580A, 0x582F, 0x5853, 0x5878, 0x589C, 0x58C0, 0x58E5, 0x5909, 0x592D, 0x5951, 0x5975, 0x5999, 0x59BD, 0x59E1, 0x5A04, 0x5A28, 0x5A4C, 0x5A6F, 0x5A93, 0x5AB7, 0x5ADA, 0x5AFD, 0x5B21, 0x5B44, 0x5B67, 0x5B8B, 0x5BAE, 0x5BD1, 0x5BF4, 0x5C17, 0x5C3A, 0x5C5D, 0x5C7F, 0x5CA2, 0x5CC5, 0x5CE7, 0x5D0A, 0x5D2D, 0x5D4F, 0x5D71, 0x5D94, 0x5DB6, 0x5DD8, 0x5DFA, 0x5E1D, 0x5E3F, 0x5E61, 0x5E83, 0x5EA5, 0x5EC6, 0x5EE8, 0x5F0A, 0x5F2C, 0x5F4D, 0x5F6F, 0x5F90, 0x5FB2, 0x5FD3, 0x5FF4, 0x6016, 0x6037, 0x6058, 0x6079, 0x609A, 0x60BB, 0x60DC, 0x60FD, 0x611E, 0x613E, 0x615F, 0x6180, 0x61A0, 0x61C1, 0x61E1, 0x6202, 0x6222, 0x6242, 0x6263, 0x6283, 0x62A3, 0x62C3, 0x62E3, 0x6303, 0x6323, 0x6342, 0x6362, 0x6382, 0x63A1, 0x63C1, 0x63E0, 0x6400, 0x641F, 0x643F, 0x645E, 0x647D, 0x649C, 0x64BB, 0x64DA, 0x64F9, 0x6518, 0x6537, 0x6556, 0x6574, 0x6593, 0x65B2, 0x65D0, 0x65EF, 0x660D, 0x662B, 0x664A, 0x6668, 0x6686, 0x66A4, 0x66C2, 0x66E0, 0x66FE, 0x671C, 0x673A, 0x6757, 0x6775, 0x6792, 0x67B0, 0x67CD, 0x67EB, 0x6808, 0x6825, 0x6843, 0x6860, 0x687D, 0x689A, 0x68B7, 0x68D4, 0x68F1, 0x690D, 0x692A, 0x6947, 0x6963, 0x6980, 0x699C, 0x69B9, 0x69D5, 0x69F1, 0x6A0E, 0x6A2A, 0x6A46, 0x6A62, 0x6A7E, 0x6A9A, 0x6AB5, 0x6AD1, 0x6AED, 0x6B08, 0x6B24, 0x6B40, 0x6B5B, 0x6B76, 0x6B92, 0x6BAD, 0x6BC8, 0x6BE3, 0x6BFE, 0x6C19, 0x6C34, 0x6C4F, 0x6C6A, 0x6C84, 0x6C9F, 0x6CBA, 0x6CD4, 0x6CEF, 0x6D09, 0x6D23, 0x6D3E, 0x6D58, 0x6D72, 0x6D8C, 0x6DA6, 0x6DC0, 0x6DDA, 0x6DF3, 0x6E0D, 0x6E27, 0x6E40, 0x6E5A, 0x6E73, 0x6E8D, 0x6EA6, 0x6EBF, 0x6ED9, 0x6EF2, 0x6F0B, 0x6F24, 0x6F3D, 0x6F55, 0x6F6E, 0x6F87, 0x6FA0, 0x6FB8, 0x6FD1, 0x6FE9, 0x7002, 0x701A, 0x7032, 0x704A, 0x7062, 0x707A, 0x7092, 0x70AA, 0x70C2, 0x70DA, 0x70F2, 0x7109, 0x7121, 0x7138, 0x7150, 0x7167, 0x717E, 0x7196, 0x71AD, 0x71C4, 0x71DB, 0x71F2, 0x7209, 0x7220, 0x7236, 0x724D, 0x7264, 0x727A, 0x7291, 0x72A7, 0x72BD, 0x72D4, 0x72EA, 0x7300, 0x7316, 0x732C, 0x7342, 0x7358, 0x736E, 0x7383, 0x7399, 0x73AE, 0x73C4, 0x73D9, 0x73EF, 0x7404, 0x7419, 0x742E, 0x7443, 0x7458, 0x746D, 0x7482, 0x7497, 0x74AC, 0x74C0, 0x74D5, 0x74EA, 0x74FE, 0x7512, 0x7527, 0x753B, 0x754F, 0x7563, 0x7577, 0x758B, 0x759F, 0x75B3, 0x75C7, 0x75DA, 0x75EE, 0x7601, 0x7615, 0x7628, 0x763B, 0x764F, 0x7662, 0x7675, 0x7688, 0x769B, 0x76AE, 0x76C1, 0x76D3, 0x76E6, 0x76F9, 0x770B, 0x771E, 0x7730, 0x7742, 0x7754, 0x7767, 0x7779, 0x778B, 0x779D, 0x77AF, 0x77C0, 0x77D2, 0x77E4, 0x77F5, 0x7807, 0x7818, 0x782A, 0x783B, 0x784C, 0x785D, 0x786E, 0x787F, 0x7890, 0x78A1, 0x78B2, 0x78C3, 0x78D3, 0x78E4, 0x78F4, 0x7905, 0x7915, 0x7925, 0x7936, 0x7946, 0x7956, 0x7966, 0x7976, 0x7985, 0x7995, 0x79A5, 0x79B5, 0x79C4, 0x79D4, 0x79E3, 0x79F2, 0x7A02, 0x7A11, 0x7A20, 0x7A2F, 0x7A3E, 0x7A4D, 0x7A5B, 0x7A6A, 0x7A79, 0x7A87, 0x7A96, 0x7AA4, 0x7AB3, 0x7AC1, 0x7ACF, 0x7ADD, 0x7AEB, 0x7AF9, 0x7B07, 0x7B15, 0x7B23, 0x7B31, 0x7B3E, 0x7B4C, 0x7B59, 0x7B67, 0x7B74, 0x7B81, 0x7B8E, 0x7B9B, 0x7BA8, 0x7BB5, 0x7BC2, 0x7BCF, 0x7BDC, 0x7BE8, 0x7BF5, 0x7C02, 0x7C0E, 0x7C1A, 0x7C27, 0x7C33, 0x7C3F, 0x7C4B, 0x7C57, 0x7C63, 0x7C6F, 0x7C7A, 0x7C86, 0x7C92, 0x7C9D, 0x7CA9, 0x7CB4, 0x7CBF, 0x7CCB, 0x7CD6, 0x7CE1, 0x7CEC, 0x7CF7, 0x7D02, 0x7D0C, 0x7D17, 0x7D22, 0x7D2C, 0x7D37, 0x7D41, 0x7D4B, 0x7D56, 0x7D60, 0x7D6A, 0x7D74, 0x7D7E, 0x7D88, 0x7D91, 0x7D9B, 0x7DA5, 0x7DAE, 0x7DB8, 0x7DC1, 0x7DCB, 0x7DD4, 0x7DDD, 0x7DE6, 0x7DEF, 0x7DF8, 0x7E01, 0x7E0A, 0x7E13, 0x7E1B, 0x7E24, 0x7E2C, 0x7E35, 0x7E3D, 0x7E45, 0x7E4D, 0x7E56, 0x7E5E, 0x7E66, 0x7E6D, 0x7E75, 0x7E7D, 0x7E85, 0x7E8C, 0x7E94, 0x7E9B, 0x7EA3, 0x7EAA, 0x7EB1, 0x7EB8, 0x7EBF, 0x7EC6, 0x7ECD, 0x7ED4, 0x7EDB, 0x7EE1, 0x7EE8, 0x7EEE, 0x7EF5, 0x7EFB, 0x7F01, 0x7F08, 0x7F0E, 0x7F14, 0x7F1A, 0x7F20, 0x7F25, 0x7F2B, 0x7F31, 0x7F36, 0x7F3C, 0x7F41, 0x7F47, 0x7F4C, 0x7F51, 0x7F56, 0x7F5B, 0x7F60, 0x7F65, 0x7F6A, 0x7F6F, 0x7F74, 0x7F78, 0x7F7D, 0x7F81, 0x7F85, 0x7F8A, 0x7F8E, 0x7F92, 0x7F96, 0x7F9A, 0x7F9E, 0x7FA2, 0x7FA6, 0x7FA9, 0x7FAD, 0x7FB0, 0x7FB4, 0x7FB7, 0x7FBA, 0x7FBE, 0x7FC1, 0x7FC4, 0x7FC7, 0x7FCA, 0x7FCC, 0x7FCF, 0x7FD2, 0x7FD4, 0x7FD7, 0x7FD9, 0x7FDC, 0x7FDE, 0x7FE0, 0x7FE2, 0x7FE4, 0x7FE6, 0x7FE8, 0x7FEA, 0x7FEC, 0x7FED, 0x7FEF, 0x7FF1, 0x7FF2, 0x7FF3, 0x7FF5, 0x7FF6, 0x7FF7, 0x7FF8, 0x7FF9, 0x7FFA, 0x7FFB, 0x7FFB, 0x7FFC, 0x7FFD, 0x7FFD, 0x7FFE, 0x7FFE, 0x7FFE, 0x7FFE, 0x7FFE, 0x7FFF + +glabel D_800945E0 +.ascii " \0\0\0\0" + +glabel D_80094604 +.word 0x30303030, 0x30303030, 0x30303030, 0x30303030, 0x30303030, 0x30303030, 0x30303030, 0x30303030, 0x00000000, 0x00000000, 0x00000000 + +glabel D_80094630 +.word 0x00000000, 0x00000000, 0x00000000, 0x00000000 + +glabel D_80094640 +.word 0x00000000, 0x00000000, 0x00000000, 0x00000000 + +glabel D_80094650 +.word 0x00000000, 0xFFFFFFFF + +glabel D_80094658 +.word D_80094650 + +glabel D_8009465C +.word D_80094650 + +glabel D_80094660 +.word 0x00000000 + +glabel D_80094664 +.word 0x00000000, 0x00000000, 0x00000000 + +glabel D_80094670 +.word 0x800D9210, 0x00000000, 0x00000000, 0x00000000 + +glabel D_80094680 +.word 0x00000000 + +glabel D_80094684 +.word 0x00000000 + +glabel D_80094688 +.word 0x00000000 + +glabel D_8009468C +.word 0x00000000 + +glabel D_80094690 +.word 0x00000000 + +glabel D_80094694 +.word 0x00000000 + +glabel D_80094698 +.word 0x00000000 + +glabel D_8009469C +.word 0x00000000 + +glabel osViModeTable +.word 0x00000000, 0x0000320E, 0x00000140, 0x03E52239, 0x0000020D, 0x00000C15, 0x0C150C15, 0x006C02EC, 0x00000200, 0x00000000, 0x00000280, 0x00000400, 0x002501FF, 0x000E0204, 0x00000002, 0x00000280, 0x00000400, 0x002501FF, 0x000E0204, 0x00000002, 0x01000000, 0x0000324E, 0x00000140, 0x03E52239, 0x0000020C, 0x00000C15, 0x0C150C15, 0x006C02EC, 0x00000200, 0x00000000, 0x00000280, 0x01000400, 0x002301FD, 0x000E0204, 0x00000002, 0x00000280, 0x03000400, 0x002501FF, 0x000E0204, 0x00000002, 0x02000000, 0x0000311E, 0x00000140, 0x03E52239, 0x0000020D, 0x00000C15, 0x0C150C15, 0x006C02EC, 0x00000200, 0x00000000, 0x00000280, 0x00000400, 0x002501FF, 0x000E0204, 0x00000002, 0x00000280, 0x00000400, 0x002501FF, 0x000E0204, 0x00000002, 0x03000000, 0x0000305E, 0x00000140, 0x03E52239, 0x0000020C, 0x00000C15, 0x0C150C15, 0x006C02EC, 0x00000200, 0x00000000, 0x00000280, 0x01000400, 0x002301FD, 0x000E0204, 0x00000002, 0x00000280, 0x03000400, 0x002501FF, 0x000E0204, 0x00000002, 0x04000000, 0x0000330F, 0x00000140, 0x03E52239, 0x0000020D, 0x00000C15, 0x0C150C15, 0x006C02EC, 0x00000200, 0x00000000, 0x00000500, 0x00000400, 0x002501FF, 0x000E0204, 0x00000002, 0x00000500, 0x00000400, 0x002501FF, 0x000E0204, 0x00000002, 0x05000000, 0x0000324F, 0x00000140, 0x03E52239, 0x0000020C, 0x00000C15, 0x0C150C15, 0x006C02EC, 0x00000200, 0x00000000, 0x00000500, 0x01000400, 0x002301FD, 0x000E0204, 0x00000002, 0x00000500, 0x03000400, 0x002501FF, 0x000E0204, 0x00000002, 0x06000000, 0x0000301F, 0x00000140, 0x03E52239, 0x0000020D, 0x00000C15, 0x0C150C15, 0x006C02EC, 0x00000200, 0x00000000, 0x00000500, 0x00000400, 0x002501FF, 0x000E0204, 0x00000002, 0x00000500, 0x00000400, 0x002501FF, 0x000E0204, 0x00000002, 0x07000000, 0x0000305F, 0x00000140, 0x03E52239, 0x0000020C, 0x00000C15, 0x0C150C15, 0x006C02EC, 0x00000200, 0x00000000, 0x00000500, 0x01000400, 0x002301FD, 0x000E0204, 0x00000002, 0x00000500, 0x03000400, 0x002501FF, 0x000E0204, 0x00000002, 0x08000000, 0x0000324E, 0x00000500, 0x03E52239, 0x0000020C, 0x00000C15, 0x0C150C15, 0x006C02EC, 0x00000400, 0x00000000, 0x00000500, 0x00000400, 0x002301FD, 0x000E0204, 0x00000002, 0x00000A00, 0x00000400, 0x002501FF, 0x000E0204, 0x00000002, 0x09000000, 0x0000324E, 0x00000280, 0x03E52239, 0x0000020C, 0x00000C15, 0x0C150C15, 0x006C02EC, 0x00000400, 0x00000000, 0x00000500, 0x02000800, 0x002301FD, 0x000E0204, 0x00000002, 0x00000A00, 0x02000800, 0x002501FF, 0x000E0204, 0x00000002, 0x0A000000, 0x0000305E, 0x00000500, 0x03E52239, 0x0000020C, 0x00000C15, 0x0C150C15, 0x006C02EC, 0x00000400, 0x00000000, 0x00000500, 0x00000400, 0x002301FD, 0x000E0204, 0x00000002, 0x00000A00, 0x00000400, 0x002501FF, 0x000E0204, 0x00000002, 0x0B000000, 0x0000305E, 0x00000280, 0x03E52239, 0x0000020C, 0x00000C15, 0x0C150C15, 0x006C02EC, 0x00000400, 0x00000000, 0x00000500, 0x02000800, 0x002301FD, 0x000E0204, 0x00000002, 0x00000A00, 0x02000800, 0x002501FF, 0x000E0204, 0x00000002, 0x0C000000, 0x0000334F, 0x00000500, 0x03E52239, 0x0000020C, 0x00000C15, 0x0C150C15, 0x006C02EC, 0x00000400, 0x00000000, 0x00000A00, 0x00000400, 0x002301FD, 0x000E0204, 0x00000002, 0x00001400, 0x00000400, 0x002501FF, 0x000E0204, 0x00000002, 0x0D000000, 0x0000324F, 0x00000280, 0x03E52239, 0x0000020C, 0x00000C15, 0x0C150C15, 0x006C02EC, 0x00000400, 0x00000000, 0x00000A00, 0x02000800, 0x002301FD, 0x000E0204, 0x00000002, 0x00001400, 0x02000800, 0x002501FF, 0x000E0204, 0x00000002, 0x0E000000, 0x0000320E, 0x00000140, 0x04541E3A, 0x00000271, 0x00170C69, 0x0C6F0C6D, 0x00800300, 0x00000200, 0x00000000, 0x00000280, 0x00000400, 0x005F0239, 0x0009026B, 0x00000002, 0x00000280, 0x00000400, 0x005F0239, 0x0009026B, 0x00000002, 0x0F000000, 0x0000324E, 0x00000140, 0x04541E3A, 0x00000270, 0x00170C69, 0x0C6F0C6D, 0x00800300, 0x00000200, 0x00000000, 0x00000280, 0x01000400, 0x005D0237, 0x0009026B, 0x00000002, 0x00000280, 0x03000400, 0x005F0239, 0x000D0269, 0x00000002, 0x10000000, 0x0000311E, 0x00000140, 0x04541E3A, 0x00000271, 0x00170C69, 0x0C6F0C6D, 0x00800300, 0x00000200, 0x00000000, 0x00000280, 0x00000400, 0x005F0239, 0x0009026B, 0x00000002, 0x00000280, 0x00000400, 0x005F0239, 0x0009026B, 0x00000002, 0x11000000, 0x0000305E, 0x00000140, 0x04541E3A, 0x00000270, 0x00170C69, 0x0C6F0C6D, 0x00800300, 0x00000200, 0x00000000, 0x00000280, 0x01000400, 0x005D0237, 0x0009026B, 0x00000002, 0x00000280, 0x03000400, 0x005F0239, 0x000D0269, 0x00000002, 0x12000000, 0x0000330F, 0x00000140, 0x04541E3A, 0x00000271, 0x00170C69, 0x0C6F0C6D, 0x00800300, 0x00000200, 0x00000000, 0x00000500, 0x00000400, 0x005F0239, 0x0009026B, 0x00000002, 0x00000500, 0x00000400, 0x005F0239, 0x0009026B, 0x00000002, 0x13000000, 0x0000324F, 0x00000140, 0x04541E3A, 0x00000270, 0x00170C69, 0x0C6F0C6D, 0x00800300, 0x00000200, 0x00000000, 0x00000500, 0x01000400, 0x005D0237, 0x0009026B, 0x00000002, 0x00000500, 0x03000400, 0x005F0239, 0x000D0269, 0x00000002, 0x14000000, 0x0000301F, 0x00000140, 0x04541E3A, 0x00000271, 0x00170C69, 0x0C6F0C6D, 0x00800300, 0x00000200, 0x00000000, 0x00000500, 0x00000400, 0x005F0239, 0x0009026B, 0x00000002, 0x00000500, 0x00000400, 0x005F0239, 0x0009026B, 0x00000002, 0x15000000, 0x0000305F, 0x00000140, 0x04541E3A, 0x00000270, 0x00170C69, 0x0C6F0C6D, 0x00800300, 0x00000200, 0x00000000, 0x00000500, 0x01000400, 0x005D0237, 0x0009026B, 0x00000002, 0x00000500, 0x03000400, 0x005F0239, 0x000D0269, 0x00000002, 0x16000000, 0x0000324E, 0x00000500, 0x04541E3A, 0x00000270, 0x00170C69, 0x0C6F0C6D, 0x00800300, 0x00000400, 0x00000000, 0x00000500, 0x00000400, 0x005D0237, 0x0009026B, 0x00000002, 0x00000A00, 0x00000400, 0x005F0239, 0x000D0269, 0x00000002, 0x17000000, 0x0000324E, 0x00000280, 0x04541E3A, 0x00000270, 0x00170C69, 0x0C6F0C6D, 0x00800300, 0x00000400, 0x00000000, 0x00000500, 0x02000800, 0x005D0237, 0x0009026B, 0x00000002, 0x00000A00, 0x02000800, 0x005F0239, 0x000D0269, 0x00000002, 0x18000000, 0x0000305E, 0x00000500, 0x04541E3A, 0x00000270, 0x00170C69, 0x0C6F0C6D, 0x00800300, 0x00000400, 0x00000000, 0x00000500, 0x00000400, 0x005D0237, 0x0009026B, 0x00000002, 0x00000A00, 0x00000400, 0x005F0239, 0x000D0269, 0x00000002, 0x19000000, 0x0000305E, 0x00000280, 0x04541E3A, 0x00000270, 0x00170C69, 0x0C6F0C6D, 0x00800300, 0x00000400, 0x00000000, 0x00000500, 0x02000800, 0x005D0237, 0x0009026B, 0x00000002, 0x00000A00, 0x02000800, 0x005F0239, 0x000D0269, 0x00000002, 0x1A000000, 0x0000334F, 0x00000500, 0x04541E3A, 0x00000270, 0x00170C69, 0x0C6F0C6D, 0x00800300, 0x00000400, 0x00000000, 0x00000A00, 0x00000400, 0x005D0237, 0x0009026B, 0x00000002, 0x00001400, 0x00000400, 0x005F0239, 0x000D0269, 0x00000002, 0x1B000000, 0x0000324F, 0x00000280, 0x04541E3A, 0x00000270, 0x00170C69, 0x0C6F0C6D, 0x00800300, 0x00000400, 0x00000000, 0x00000A00, 0x02000800, 0x005D0237, 0x0009026B, 0x00000002, 0x00001400, 0x02000800, 0x005F0239, 0x000D0269, 0x00000002, 0x1C000000, 0x0000320E, 0x00000140, 0x04651E39, 0x0000020D, 0x00040C11, 0x0C190C1A, 0x006C02EC, 0x00000200, 0x00000000, 0x00000280, 0x00000400, 0x002501FF, 0x000E0204, 0x00000002, 0x00000280, 0x00000400, 0x002501FF, 0x000E0204, 0x00000002, 0x1D000000, 0x0000324E, 0x00000140, 0x04651E39, 0x0000020C, 0x00000C10, 0x0C1C0C1C, 0x006C02EC, 0x00000200, 0x00000000, 0x00000280, 0x01000400, 0x002301FD, 0x000B0202, 0x00000002, 0x00000280, 0x03000400, 0x002501FF, 0x000E0204, 0x00000002, 0x1E000000, 0x0000311E, 0x00000140, 0x04651E39, 0x0000020D, 0x00040C11, 0x0C190C1A, 0x006C02EC, 0x00000200, 0x00000000, 0x00000280, 0x00000400, 0x002501FF, 0x000E0204, 0x00000002, 0x00000280, 0x00000400, 0x002501FF, 0x000E0204, 0x00000002, 0x1F000000, 0x0000305E, 0x00000140, 0x04651E39, 0x0000020C, 0x00000C10, 0x0C1C0C1C, 0x006C02EC, 0x00000200, 0x00000000, 0x00000280, 0x01000400, 0x002301FD, 0x000B0202, 0x00000002, 0x00000280, 0x03000400, 0x002501FF, 0x000E0204, 0x00000002, 0x20000000, 0x0000330F, 0x00000140, 0x04651E39, 0x0000020D, 0x00040C11, 0x0C190C1A, 0x006C02EC, 0x00000200, 0x00000000, 0x00000500, 0x00000400, 0x002501FF, 0x000E0204, 0x00000002, 0x00000500, 0x00000400, 0x002501FF, 0x000E0204, 0x00000002, 0x21000000, 0x0000324F, 0x00000140, 0x04651E39, 0x0000020C, 0x00000C10, 0x0C1C0C1C, 0x006C02EC, 0x00000200, 0x00000000, 0x00000500, 0x01000400, 0x002301FD, 0x000B0202, 0x00000002, 0x00000500, 0x03000400, 0x002501FF, 0x000E0204, 0x00000002, 0x22000000, 0x0000301F, 0x00000140, 0x04651E39, 0x0000020D, 0x00040C11, 0x0C190C1A, 0x006C02EC, 0x00000200, 0x00000000, 0x00000500, 0x00000400, 0x002501FF, 0x000E0204, 0x00000002, 0x00000500, 0x00000400, 0x002501FF, 0x000E0204, 0x00000002, 0x23000000, 0x0000305F, 0x00000140, 0x04651E39, 0x0000020C, 0x00000C10, 0x0C1C0C1C, 0x006C02EC, 0x00000200, 0x00000000, 0x00000500, 0x01000400, 0x002301FD, 0x000B0202, 0x00000002, 0x00000500, 0x03000400, 0x002501FF, 0x000E0204, 0x00000002, 0x24000000, 0x0000324E, 0x00000500, 0x04651E39, 0x0000020C, 0x00000C10, 0x0C1C0C1C, 0x006C02EC, 0x00000400, 0x00000000, 0x00000500, 0x00000400, 0x002301FD, 0x000B0202, 0x00000002, 0x00000A00, 0x00000400, 0x002501FF, 0x000E0204, 0x00000002, 0x25000000, 0x0000324E, 0x00000280, 0x04651E39, 0x0000020C, 0x00000C10, 0x0C1C0C1C, 0x006C02EC, 0x00000400, 0x00000000, 0x00000500, 0x02000800, 0x002301FD, 0x000B0202, 0x00000002, 0x00000A00, 0x02000800, 0x002501FF, 0x000E0204, 0x00000002, 0x26000000, 0x0000305E, 0x00000500, 0x04651E39, 0x0000020C, 0x00000C10, 0x0C1C0C1C, 0x006C02EC, 0x00000400, 0x00000000, 0x00000500, 0x00000400, 0x002301FD, 0x000B0202, 0x00000002, 0x00000A00, 0x00000400, 0x002501FF, 0x000E0204, 0x00000002, 0x27000000, 0x0000305E, 0x00000280, 0x04651E39, 0x0000020C, 0x00000C10, 0x0C1C0C1C, 0x006C02EC, 0x00000400, 0x00000000, 0x00000500, 0x02000800, 0x002301FD, 0x000B0202, 0x00000002, 0x00000A00, 0x02000800, 0x002501FF, 0x000E0204, 0x00000002, 0x28000000, 0x0000334F, 0x00000500, 0x04651E39, 0x0000020C, 0x00000C10, 0x0C1C0C1C, 0x006C02EC, 0x00000400, 0x00000000, 0x00000A00, 0x00000400, 0x002301FD, 0x000B0202, 0x00000002, 0x00001400, 0x00000400, 0x002501FF, 0x000E0204, 0x00000002, 0x29000000, 0x0000324F, 0x00000280, 0x04651E39, 0x0000020C, 0x00000C10, 0x0C1C0C1C, 0x006C02EC, 0x00000400, 0x00000000, 0x00000A00, 0x02000800, 0x002301FD, 0x000B0202, 0x00000002, 0x00001400, 0x02000800, 0x002501FF, 0x000E0204, 0x00000002, 0x2A000000, 0x0000320E, 0x00000140, 0x04541E3A, 0x00000271, 0x00170C69, 0x0C6F0C6D, 0x00800300, 0x00000200, 0x00000000, 0x00000280, 0x00000400, 0x002F0269, 0x0009026B, 0x00000002, 0x00000280, 0x00000400, 0x002F0269, 0x0009026B, 0x00000002, 0x2B000000, 0x0000324E, 0x00000140, 0x04541E3A, 0x00000270, 0x00170C69, 0x0C6F0C6D, 0x00800300, 0x00000200, 0x00000000, 0x00000280, 0x01000400, 0x002D0267, 0x0009026B, 0x00000002, 0x00000280, 0x03000400, 0x002F0269, 0x000D0269, 0x00000002, 0x2C000000, 0x0000311E, 0x00000140, 0x04541E3A, 0x00000271, 0x00170C69, 0x0C6F0C6D, 0x00800300, 0x00000200, 0x00000000, 0x00000280, 0x00000400, 0x002F0269, 0x0009026B, 0x00000002, 0x00000280, 0x00000400, 0x002F0269, 0x0009026B, 0x00000002, 0x2D000000, 0x0000305E, 0x00000140, 0x04541E3A, 0x00000270, 0x00170C69, 0x0C6F0C6D, 0x00800300, 0x00000200, 0x00000000, 0x00000280, 0x01000400, 0x002D0267, 0x0009026B, 0x00000002, 0x00000280, 0x03000400, 0x002F0269, 0x000D0269, 0x00000002, 0x2E000000, 0x0000330F, 0x00000140, 0x04541E3A, 0x00000271, 0x00170C69, 0x0C6F0C6D, 0x00800300, 0x00000200, 0x00000000, 0x00000500, 0x00000400, 0x002F0269, 0x0009026B, 0x00000002, 0x00000500, 0x00000400, 0x002F0269, 0x0009026B, 0x00000002, 0x2F000000, 0x0000324F, 0x00000140, 0x04541E3A, 0x00000270, 0x00170C69, 0x0C6F0C6D, 0x00800300, 0x00000200, 0x00000000, 0x00000500, 0x01000400, 0x002D0267, 0x0009026B, 0x00000002, 0x00000500, 0x03000400, 0x002F0269, 0x000D0269, 0x00000002, 0x30000000, 0x0000301F, 0x00000140, 0x04541E3A, 0x00000271, 0x00170C69, 0x0C6F0C6D, 0x00800300, 0x00000200, 0x00000000, 0x00000500, 0x00000400, 0x002F0269, 0x0009026B, 0x00000002, 0x00000500, 0x00000400, 0x002F0269, 0x0009026B, 0x00000002, 0x31000000, 0x0000305F, 0x00000140, 0x04541E3A, 0x00000270, 0x00170C69, 0x0C6F0C6D, 0x00800300, 0x00000200, 0x00000000, 0x00000500, 0x01000400, 0x002D0267, 0x0009026B, 0x00000002, 0x00000500, 0x03000400, 0x002F0269, 0x000D0269, 0x00000002, 0x32000000, 0x0000324E, 0x00000500, 0x04541E3A, 0x00000270, 0x00170C69, 0x0C6F0C6D, 0x00800300, 0x00000400, 0x00000000, 0x00000500, 0x00000400, 0x002D0267, 0x0009026B, 0x00000002, 0x00000A00, 0x00000400, 0x002F0269, 0x000D0269, 0x00000002, 0x33000000, 0x0000324E, 0x00000280, 0x04541E3A, 0x00000270, 0x00170C69, 0x0C6F0C6D, 0x00800300, 0x00000400, 0x00000000, 0x00000500, 0x02000800, 0x002D0267, 0x0009026B, 0x00000002, 0x00000A00, 0x02000800, 0x002F0269, 0x000D0269, 0x00000002, 0x34000000, 0x0000305E, 0x00000500, 0x04541E3A, 0x00000270, 0x00170C69, 0x0C6F0C6D, 0x00800300, 0x00000400, 0x00000000, 0x00000500, 0x00000400, 0x002D0267, 0x0009026B, 0x00000002, 0x00000A00, 0x00000400, 0x002F0269, 0x000D0269, 0x00000002, 0x35000000, 0x0000305E, 0x00000280, 0x04541E3A, 0x00000270, 0x00170C69, 0x0C6F0C6D, 0x00800300, 0x00000400, 0x00000000, 0x00000500, 0x02000800, 0x002D0267, 0x0009026B, 0x00000002, 0x00000A00, 0x02000800, 0x002F0269, 0x000D0269, 0x00000002, 0x36000000, 0x0000334F, 0x00000500, 0x04541E3A, 0x00000270, 0x00170C69, 0x0C6F0C6D, 0x00800300, 0x00000400, 0x00000000, 0x00000A00, 0x00000400, 0x002D0267, 0x0009026B, 0x00000002, 0x00001400, 0x00000400, 0x002F0269, 0x000D0269, 0x00000002, 0x37000000, 0x0000324F, 0x00000280, 0x04541E3A, 0x00000270, 0x00170C69, 0x0C6F0C6D, 0x00800300, 0x00000400, 0x00000000, 0x00000A00, 0x02000800, 0x002D0267, 0x0009026B, 0x00000002, 0x00001400, 0x02000800, 0x002F0269, 0x000D0269, 0x00000002 + +glabel D_80095820 +.word 0x02000000, 0x0000311E, 0x00000140, 0x03E52239, 0x0000020D, 0x00000C15, 0x0C150C15, 0x006C02EC, 0x00000200, 0x00000000, 0x00000280, 0x00000400, 0x002501FF, 0x000E0204, 0x00000002, 0x00000280, 0x00000400, 0x002501FF, 0x000E0204, 0x00000002 + +glabel D_80095870 +.word 0x1E000000, 0x0000311E, 0x00000140, 0x04651E39, 0x0000020D, 0x00040C11, 0x0C190C1A, 0x006C02EC, 0x00000200, 0x00000000, 0x00000280, 0x00000400, 0x002501FF, 0x000E0204, 0x00000002, 0x00000280, 0x00000400, 0x002501FF, 0x000E0204, 0x00000002 + +glabel D_800958C0 +.float 0.017453292, 0.0, 0.0, 0.0 + +glabel D_800958D0 +.word 0xFFFFFFFF + +glabel D_800958D4 +.byte 0xFA, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + +glabel D_800958E0 +.word 0xFFFFFFFF, 0x00000000, 0x00000000, 0x00000000 + +glabel D_800958F0 +.word 0x00000000 + +glabel D_800958F4 +.word 0x03B9ACA0 + +glabel D_800958F8 +.word 0x02E6D354 + +glabel D_800958FC +.word 0x00000000 + +glabel D_80095900 +.word 0x003FFF01, 0x00000000, 0x00000000, 0x00000000 + +glabel D_80095910 +.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 + +glabel D_80095938 +.word 0x00000000, 0x00000000 + +glabel D_80095940 +.ascii "0123456789abcdef\0\0\0\0" + +glabel D_80095954 +.word 0x30313233, 0x34353637, 0x38394142, 0x43444546, 0x00000000, 0x00000000, 0x00000000 + +glabel D_80095970 +.short 0x0000 + +glabel D_80095972 +.short 0x0000 + +glabel D_80095974 +.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + +glabel D_800959A2 +.short 0x0000 + +glabel D_800959A4 +.word 0x00000000 + +glabel D_800959A8 +.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 + +glabel D_800959D0 +.word D_80095970 + +glabel D_800959D4 +.word 0x800959A0, 0x00000000, 0x00000000 + +glabel D_800959E0 +.word 0x10000000, 0x0000311E, 0x00000140, 0x04541E3A, 0x00000271, 0x00170C69, 0x0C6F0C6D, 0x00800300, 0x00000200, 0x00000000, 0x00000280, 0x00000400, 0x005F0239, 0x0009026B, 0x00000002, 0x00000280, 0x00000400, 0x005F0239, 0x0009026B, 0x00000002 diff --git a/asm/data/code_73130.rodata.s b/asm/data/code_73130.rodata.s deleted file mode 100644 index 92cd12587b..0000000000 --- a/asm/data/code_73130.rodata.s +++ /dev/null @@ -1,10 +0,0 @@ -.include "macro.inc" - -.section .rodata - -glabel D_80097D30 -.ascii "File:%s Line:%d %s -\0\0\0" - -glabel jtbl_80097D48 -.word L800270B4_24B4, L800270E4_24E4, L8002710C_250C, L80027134_2534, L80027168_2568, 0 diff --git a/asm/nonmatchings/code_1000_len_60/entry_point.s b/asm/entry_point.s similarity index 90% rename from asm/nonmatchings/code_1000_len_60/entry_point.s rename to asm/entry_point.s index 835e9d57c9..82c4afc4d5 100644 --- a/asm/nonmatchings/code_1000_len_60/entry_point.s +++ b/asm/entry_point.s @@ -1,5 +1,11 @@ +.include "macro.inc" + +# assembler directives .set noat # allow manual use of $at .set noreorder # don't insert nops after branches +.set gp=64 # allow use of 64-bit general purpose registers + +.section .text, "ax" glabel entry_point /* 1000 80025C00 3C08800A */ lui $t0, %hi(D_8009A5B0) diff --git a/asm/nonmatchings/code_10400_len_d30/func_80035704.s b/asm/nonmatchings/code_10400_len_d30/func_80035704.s index 1a7ba8ef63..84ceb7eb36 100644 --- a/asm/nonmatchings/code_10400_len_d30/func_80035704.s +++ b/asm/nonmatchings/code_10400_len_d30/func_80035704.s @@ -116,9 +116,9 @@ glabel L80035814_10C14 /* 10CA0 800358A0 8E040000 */ lw $a0, ($s0) /* 10CA4 800358A4 84830086 */ lh $v1, 0x86($a0) /* 10CA8 800358A8 00031900 */ sll $v1, $v1, 4 -/* 10CAC 800358AC 3C058009 */ lui $a1, %hi(D_800934F4) +/* 10CAC 800358AC 3C058009 */ lui $a1, %hi(gAreas+0x4) /* 10CB0 800358B0 00A32821 */ addu $a1, $a1, $v1 -/* 10CB4 800358B4 8CA534F4 */ lw $a1, %lo(D_800934F4)($a1) +/* 10CB4 800358B4 8CA534F4 */ lw $a1, %lo(gAreas+0x4)($a1) /* 10CB8 800358B8 8483008C */ lh $v1, 0x8c($a0) /* 10CBC 800358BC 0040902D */ daddu $s2, $v0, $zero /* 10CC0 800358C0 A0800070 */ sb $zero, 0x70($a0) diff --git a/asm/nonmatchings/code_1370_len_7d0/gfxPreNMI_Callback.s b/asm/nonmatchings/code_1370_len_7d0/gfxPreNMI_Callback.s deleted file mode 100644 index 7e8203daa4..0000000000 --- a/asm/nonmatchings/code_1370_len_7d0/gfxPreNMI_Callback.s +++ /dev/null @@ -1,17 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel gfxPreNMI_Callback -/* 1B0C 8002670C 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 1B10 80026710 24020001 */ addiu $v0, $zero, 1 -/* 1B14 80026714 AFBF0010 */ sw $ra, 0x10($sp) -/* 1B18 80026718 3C018007 */ lui $at, %hi(D_80073E00) -/* 1B1C 8002671C AC223E00 */ sw $v0, %lo(D_80073E00)($at) -/* 1B20 80026720 0C018028 */ jal nuContRmbForceStop -/* 1B24 80026724 00000000 */ nop -/* 1B28 80026728 8FBF0010 */ lw $ra, 0x10($sp) -/* 1B2C 8002672C 03E00008 */ jr $ra -/* 1B30 80026730 27BD0018 */ addiu $sp, $sp, 0x18 -/* 1B34 80026734 00000000 */ nop -/* 1B38 80026738 00000000 */ nop -/* 1B3C 8002673C 00000000 */ nop diff --git a/asm/nonmatchings/code_1370_len_7d0/gfxRetrace_Callback.s b/asm/nonmatchings/code_1370_len_7d0/gfxRetrace_Callback.s deleted file mode 100644 index 9ace369168..0000000000 --- a/asm/nonmatchings/code_1370_len_7d0/gfxRetrace_Callback.s +++ /dev/null @@ -1,73 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel gfxRetrace_Callback -/* 145C 8002605C 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 1460 80026060 AFB10014 */ sw $s1, 0x14($sp) -/* 1464 80026064 3C118007 */ lui $s1, %hi(D_80073E00) -/* 1468 80026068 26313E00 */ addiu $s1, $s1, %lo(D_80073E00) -/* 146C 8002606C AFBF0018 */ sw $ra, 0x18($sp) -/* 1470 80026070 AFB00010 */ sw $s0, 0x10($sp) -/* 1474 80026074 8E230000 */ lw $v1, ($s1) -/* 1478 80026078 10600022 */ beqz $v1, .L80026104 -/* 147C 8002607C 0080802D */ daddu $s0, $a0, $zero -/* 1480 80026080 24020001 */ addiu $v0, $zero, 1 -/* 1484 80026084 14620016 */ bne $v1, $v0, .L800260E0 -/* 1488 80026088 00000000 */ nop -/* 148C 8002608C 0C017CB4 */ jal nuGfxTaskAllEndWait -/* 1490 80026090 00000000 */ nop -/* 1494 80026094 16000012 */ bnez $s0, .L800260E0 -/* 1498 80026098 00000000 */ nop -/* 149C 8002609C 0C019A6C */ jal osViGetCurrentFramebuffer -/* 14A0 800260A0 00000000 */ nop -/* 14A4 800260A4 3C10800A */ lui $s0, %hi(D_8009A680) -/* 14A8 800260A8 2610A680 */ addiu $s0, $s0, %lo(D_8009A680) -/* 14AC 800260AC 0200202D */ daddu $a0, $s0, $zero -/* 14B0 800260B0 AE020008 */ sw $v0, 8($s0) -/* 14B4 800260B4 AE020004 */ sw $v0, 4($s0) -/* 14B8 800260B8 AE020000 */ sw $v0, ($s0) -/* 14BC 800260BC 3C018007 */ lui $at, %hi(D_80073E04) -/* 14C0 800260C0 AC223E04 */ sw $v0, %lo(D_80073E04)($at) -/* 14C4 800260C4 0C017CBC */ jal nuGfxSetCfb -/* 14C8 800260C8 24050003 */ addiu $a1, $zero, 3 -/* 14CC 800260CC 8E040000 */ lw $a0, ($s0) -/* 14D0 800260D0 0C019C08 */ jal osViSwapBuffer -/* 14D4 800260D4 00000000 */ nop -/* 14D8 800260D8 24020002 */ addiu $v0, $zero, 2 -/* 14DC 800260DC AE220000 */ sw $v0, ($s1) -.L800260E0: -/* 14E0 800260E0 3C038007 */ lui $v1, %hi(D_80073E00) -/* 14E4 800260E4 8C633E00 */ lw $v1, %lo(D_80073E00)($v1) -/* 14E8 800260E8 24020002 */ addiu $v0, $zero, 2 -/* 14EC 800260EC 14620018 */ bne $v1, $v0, .L80026150 -/* 14F0 800260F0 00000000 */ nop -/* 14F4 800260F4 0C009859 */ jal gfx_task_main -/* 14F8 800260F8 00000000 */ nop -/* 14FC 800260FC 08009854 */ j .L80026150 -/* 1500 80026100 00000000 */ nop -.L80026104: -/* 1504 80026104 3C038007 */ lui $v1, %hi(D_80073E0A) -/* 1508 80026108 24633E0A */ addiu $v1, $v1, %lo(D_80073E0A) -/* 150C 8002610C 94620000 */ lhu $v0, ($v1) -/* 1510 80026110 38420001 */ xori $v0, $v0, 1 -/* 1514 80026114 1440000E */ bnez $v0, .L80026150 -/* 1518 80026118 A4620000 */ sh $v0, ($v1) -/* 151C 8002611C 0C0099D0 */ jal step_game_loop -/* 1520 80026120 00000000 */ nop -/* 1524 80026124 3C038007 */ lui $v1, %hi(D_80073E08) -/* 1528 80026128 24633E08 */ addiu $v1, $v1, %lo(D_80073E08) -/* 152C 8002612C 24020001 */ addiu $v0, $zero, 1 -/* 1530 80026130 A4620000 */ sh $v0, ($v1) -/* 1534 80026134 2A020003 */ slti $v0, $s0, 3 -/* 1538 80026138 10400005 */ beqz $v0, .L80026150 -/* 153C 8002613C 00000000 */ nop -/* 1540 80026140 0C009A7B */ jal gfx_task_background -/* 1544 80026144 A4600000 */ sh $zero, ($v1) -/* 1548 80026148 0C009AC2 */ jal gfx_draw_frame -/* 154C 8002614C 00000000 */ nop -.L80026150: -/* 1550 80026150 8FBF0018 */ lw $ra, 0x18($sp) -/* 1554 80026154 8FB10014 */ lw $s1, 0x14($sp) -/* 1558 80026158 8FB00010 */ lw $s0, 0x10($sp) -/* 155C 8002615C 03E00008 */ jr $ra -/* 1560 80026160 27BD0020 */ addiu $sp, $sp, 0x20 diff --git a/asm/nonmatchings/code_181810/LoadBattleDmaData.s b/asm/nonmatchings/code_181810/LoadBattleDmaData.s index a4cf4927a4..af74d40c9c 100644 --- a/asm/nonmatchings/code_181810/LoadBattleDmaData.s +++ b/asm/nonmatchings/code_181810/LoadBattleDmaData.s @@ -12,9 +12,9 @@ glabel LoadBattleDmaData /* 181F20 80253640 9084C4EA */ lbu $a0, %lo(gBattleStatus+0x47A)($a0) /* 181F24 80253644 00621821 */ addu $v1, $v1, $v0 /* 181F28 80253648 00042140 */ sll $a0, $a0, 5 -/* 181F2C 8025364C 3C028009 */ lui $v0, %hi(D_80095A4C) +/* 181F2C 8025364C 3C028009 */ lui $v0, %hi(gBattleAreas+0x1C) /* 181F30 80253650 00441021 */ addu $v0, $v0, $a0 -/* 181F34 80253654 8C425A4C */ lw $v0, %lo(D_80095A4C)($v0) +/* 181F34 80253654 8C425A4C */ lw $v0, %lo(gBattleAreas+0x1C)($v0) /* 181F38 80253658 00031880 */ sll $v1, $v1, 2 /* 181F3C 8025365C 00431021 */ addu $v0, $v0, $v1 /* 181F40 80253660 5040000E */ beql $v0, $zero, .L8025369C diff --git a/asm/nonmatchings/code_197F40/LoadBattleSection.s b/asm/nonmatchings/code_197F40/LoadBattleSection.s index bb7ac554e4..fb8e221fea 100644 --- a/asm/nonmatchings/code_197F40/LoadBattleSection.s +++ b/asm/nonmatchings/code_197F40/LoadBattleSection.s @@ -7,8 +7,8 @@ glabel LoadBattleSection /* 1986CC 80269DEC 8C82000C */ lw $v0, 0xc($a0) /* 1986D0 80269DF0 0C0B1EAF */ jal get_variable /* 1986D4 80269DF4 8C450000 */ lw $a1, ($v0) -/* 1986D8 80269DF8 3C038009 */ lui $v1, %hi(D_80095A30) -/* 1986DC 80269DFC 24635A30 */ addiu $v1, $v1, %lo(D_80095A30) +/* 1986D8 80269DF8 3C038009 */ lui $v1, %hi(gBattleAreas) +/* 1986DC 80269DFC 24635A30 */ addiu $v1, $v1, %lo(gBattleAreas) /* 1986E0 80269E00 00021140 */ sll $v0, $v0, 5 /* 1986E4 80269E04 00431021 */ addu $v0, $v0, $v1 /* 1986E8 80269E08 8C440004 */ lw $a0, 4($v0) diff --git a/asm/nonmatchings/code_1b40_len_20b0/func_80027088.s b/asm/nonmatchings/code_1b40_len_20b0/func_80027088.s index ade00e9525..d3066091e1 100644 --- a/asm/nonmatchings/code_1b40_len_20b0/func_80027088.s +++ b/asm/nonmatchings/code_1b40_len_20b0/func_80027088.s @@ -1,6 +1,13 @@ .set noat # allow manual use of $at .set noreorder # don't insert nops after branches +.section .rodata + +glabel jtbl_80097D48 +.word L800270B4_24B4, L800270E4_24E4, L8002710C_250C, L80027134_2534, L80027168_2568, 0 + +.section .text + glabel func_80027088 /* 2488 80027088 27BDFFE8 */ addiu $sp, $sp, -0x18 /* 248C 8002708C 0080282D */ daddu $a1, $a0, $zero diff --git a/asm/nonmatchings/code_23680/DoBasicAI.s b/asm/nonmatchings/code_23680/DoBasicAI.s new file mode 100644 index 0000000000..f3935f5d06 --- /dev/null +++ b/asm/nonmatchings/code_23680/DoBasicAI.s @@ -0,0 +1,179 @@ +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches + +glabel DoBasicAI +/* 2587C 8004A47C 27BDFFB0 */ addiu $sp, $sp, -0x50 +/* 25880 8004A480 AFB20038 */ sw $s2, 0x38($sp) +/* 25884 8004A484 0080902D */ daddu $s2, $a0, $zero +/* 25888 8004A488 AFBF0048 */ sw $ra, 0x48($sp) +/* 2588C 8004A48C AFB50044 */ sw $s5, 0x44($sp) +/* 25890 8004A490 AFB40040 */ sw $s4, 0x40($sp) +/* 25894 8004A494 AFB3003C */ sw $s3, 0x3c($sp) +/* 25898 8004A498 AFB10034 */ sw $s1, 0x34($sp) +/* 2589C 8004A49C AFB00030 */ sw $s0, 0x30($sp) +/* 258A0 8004A4A0 8E510148 */ lw $s1, 0x148($s2) +/* 258A4 8004A4A4 86240008 */ lh $a0, 8($s1) +/* 258A8 8004A4A8 0C00EABB */ jal get_npc_unsafe +/* 258AC 8004A4AC 00A0802D */ daddu $s0, $a1, $zero +/* 258B0 8004A4B0 8E43000C */ lw $v1, 0xc($s2) +/* 258B4 8004A4B4 0240202D */ daddu $a0, $s2, $zero +/* 258B8 8004A4B8 8C650000 */ lw $a1, ($v1) +/* 258BC 8004A4BC 0C0B1EAF */ jal get_variable +/* 258C0 8004A4C0 0040A82D */ daddu $s5, $v0, $zero +/* 258C4 8004A4C4 AFA00010 */ sw $zero, 0x10($sp) +/* 258C8 8004A4C8 8E2300D0 */ lw $v1, 0xd0($s1) +/* 258CC 8004A4CC 8C630030 */ lw $v1, 0x30($v1) +/* 258D0 8004A4D0 AFA30014 */ sw $v1, 0x14($sp) +/* 258D4 8004A4D4 8E2300D0 */ lw $v1, 0xd0($s1) +/* 258D8 8004A4D8 8C63001C */ lw $v1, 0x1c($v1) +/* 258DC 8004A4DC AFA30018 */ sw $v1, 0x18($sp) +/* 258E0 8004A4E0 8E2300D0 */ lw $v1, 0xd0($s1) +/* 258E4 8004A4E4 8C630024 */ lw $v1, 0x24($v1) +/* 258E8 8004A4E8 AFA3001C */ sw $v1, 0x1c($sp) +/* 258EC 8004A4EC 8E2300D0 */ lw $v1, 0xd0($s1) +/* 258F0 8004A4F0 8C630028 */ lw $v1, 0x28($v1) +/* 258F4 8004A4F4 27B40010 */ addiu $s4, $sp, 0x10 +/* 258F8 8004A4F8 AFA30020 */ sw $v1, 0x20($sp) +/* 258FC 8004A4FC 8E2300D0 */ lw $v1, 0xd0($s1) +/* 25900 8004A500 3C014282 */ lui $at, 0x4282 +/* 25904 8004A504 44810000 */ mtc1 $at, $f0 +/* 25908 8004A508 8C63002C */ lw $v1, 0x2c($v1) +/* 2590C 8004A50C 0040982D */ daddu $s3, $v0, $zero +/* 25910 8004A510 E7A00028 */ swc1 $f0, 0x28($sp) +/* 25914 8004A514 A7A0002C */ sh $zero, 0x2c($sp) +/* 25918 8004A518 16000005 */ bnez $s0, .L8004A530 +/* 2591C 8004A51C AFA30024 */ sw $v1, 0x24($sp) +/* 25920 8004A520 8E2200B0 */ lw $v0, 0xb0($s1) +/* 25924 8004A524 30420004 */ andi $v0, $v0, 4 +/* 25928 8004A528 1040002B */ beqz $v0, .L8004A5D8 +/* 2592C 8004A52C 00000000 */ nop +.L8004A530: +/* 25930 8004A530 2404F7FF */ addiu $a0, $zero, -0x801 +/* 25934 8004A534 AE400070 */ sw $zero, 0x70($s2) +/* 25938 8004A538 A6A0008E */ sh $zero, 0x8e($s5) +/* 2593C 8004A53C 8E2200CC */ lw $v0, 0xcc($s1) +/* 25940 8004A540 8EA30000 */ lw $v1, ($s5) +/* 25944 8004A544 8C420000 */ lw $v0, ($v0) +/* 25948 8004A548 00641824 */ and $v1, $v1, $a0 +/* 2594C 8004A54C AEA30000 */ sw $v1, ($s5) +/* 25950 8004A550 AEA20028 */ sw $v0, 0x28($s5) +/* 25954 8004A554 8E2200D0 */ lw $v0, 0xd0($s1) +/* 25958 8004A558 8C420034 */ lw $v0, 0x34($v0) +/* 2595C 8004A55C 54400005 */ bnel $v0, $zero, .L8004A574 +/* 25960 8004A560 2402FDFF */ addiu $v0, $zero, -0x201 +/* 25964 8004A564 34620200 */ ori $v0, $v1, 0x200 +/* 25968 8004A568 2403FFF7 */ addiu $v1, $zero, -9 +/* 2596C 8004A56C 0801295F */ j .L8004A57C +/* 25970 8004A570 00431024 */ and $v0, $v0, $v1 +.L8004A574: +/* 25974 8004A574 00621024 */ and $v0, $v1, $v0 +/* 25978 8004A578 34420008 */ ori $v0, $v0, 8 +.L8004A57C: +/* 2597C 8004A57C AEA20000 */ sw $v0, ($s5) +/* 25980 8004A580 8E2200B0 */ lw $v0, 0xb0($s1) +/* 25984 8004A584 30420004 */ andi $v0, $v0, 4 +/* 25988 8004A588 10400004 */ beqz $v0, .L8004A59C +/* 2598C 8004A58C 24020063 */ addiu $v0, $zero, 0x63 +/* 25990 8004A590 AE420070 */ sw $v0, 0x70($s2) +/* 25994 8004A594 0801296D */ j .L8004A5B4 +/* 25998 8004A598 AE400074 */ sw $zero, 0x74($s2) +.L8004A59C: +/* 2599C 8004A59C 8E220000 */ lw $v0, ($s1) +/* 259A0 8004A5A0 3C034000 */ lui $v1, 0x4000 +/* 259A4 8004A5A4 00431024 */ and $v0, $v0, $v1 +/* 259A8 8004A5A8 10400002 */ beqz $v0, .L8004A5B4 +/* 259AC 8004A5AC 2402000C */ addiu $v0, $zero, 0xc +/* 259B0 8004A5B0 AE420070 */ sw $v0, 0x70($s2) +.L8004A5B4: +/* 259B4 8004A5B4 3C05BFFF */ lui $a1, 0xbfff +/* 259B8 8004A5B8 34A5FFFF */ ori $a1, $a1, 0xffff +/* 259BC 8004A5BC 2404FFFB */ addiu $a0, $zero, -5 +/* 259C0 8004A5C0 8E2200B0 */ lw $v0, 0xb0($s1) +/* 259C4 8004A5C4 8E230000 */ lw $v1, ($s1) +/* 259C8 8004A5C8 00441024 */ and $v0, $v0, $a0 +/* 259CC 8004A5CC 00651824 */ and $v1, $v1, $a1 +/* 259D0 8004A5D0 AE2200B0 */ sw $v0, 0xb0($s1) +/* 259D4 8004A5D4 AE230000 */ sw $v1, ($s1) +.L8004A5D8: +/* 259D8 8004A5D8 8E430070 */ lw $v1, 0x70($s2) +/* 259DC 8004A5DC 2C620064 */ sltiu $v0, $v1, 0x64 +/* 259E0 8004A5E0 10400038 */ beqz $v0, .L8004A6C4 +/* 259E4 8004A5E4 00031080 */ sll $v0, $v1, 2 +/* 259E8 8004A5E8 3C01800A */ lui $at, %hi(jtbl_80098728) +/* 259EC 8004A5EC 00220821 */ addu $at, $at, $v0 +/* 259F0 8004A5F0 8C228728 */ lw $v0, %lo(jtbl_80098728)($at) +/* 259F4 8004A5F4 00400008 */ jr $v0 +/* 259F8 8004A5F8 00000000 */ nop +glabel L8004A5FC_259FC +/* 259FC 8004A5FC 0240202D */ daddu $a0, $s2, $zero +/* 25A00 8004A600 0260282D */ daddu $a1, $s3, $zero +/* 25A04 8004A604 0C012568 */ jal func_800495A0 +/* 25A08 8004A608 0280302D */ daddu $a2, $s4, $zero +glabel L8004A60C_25A0C +/* 25A0C 8004A60C 0240202D */ daddu $a0, $s2, $zero +/* 25A10 8004A610 0260282D */ daddu $a1, $s3, $zero +/* 25A14 8004A614 0C0125AE */ jal func_800496B8 +/* 25A18 8004A618 0280302D */ daddu $a2, $s4, $zero +/* 25A1C 8004A61C 080129B1 */ j .L8004A6C4 +/* 25A20 8004A620 00000000 */ nop +glabel L8004A624_25A24 +/* 25A24 8004A624 0240202D */ daddu $a0, $s2, $zero +/* 25A28 8004A628 0260282D */ daddu $a1, $s3, $zero +/* 25A2C 8004A62C 0C0126D1 */ jal base_UnkNpcAIFunc1 +/* 25A30 8004A630 0280302D */ daddu $a2, $s4, $zero +glabel L8004A634_25A34 +/* 25A34 8004A634 0240202D */ daddu $a0, $s2, $zero +/* 25A38 8004A638 0260282D */ daddu $a1, $s3, $zero +/* 25A3C 8004A63C 0C012701 */ jal func_80049C04 +/* 25A40 8004A640 0280302D */ daddu $a2, $s4, $zero +/* 25A44 8004A644 080129B1 */ j .L8004A6C4 +/* 25A48 8004A648 00000000 */ nop +glabel L8004A64C_25A4C +/* 25A4C 8004A64C 0240202D */ daddu $a0, $s2, $zero +/* 25A50 8004A650 0260282D */ daddu $a1, $s3, $zero +/* 25A54 8004A654 0C01278F */ jal func_80049E3C +/* 25A58 8004A658 0280302D */ daddu $a2, $s4, $zero +glabel L8004A65C_25A5C +/* 25A5C 8004A65C 0240202D */ daddu $a0, $s2, $zero +/* 25A60 8004A660 0260282D */ daddu $a1, $s3, $zero +/* 25A64 8004A664 0C0127B3 */ jal func_80049ECC +/* 25A68 8004A668 0280302D */ daddu $a2, $s4, $zero +/* 25A6C 8004A66C 080129B1 */ j .L8004A6C4 +/* 25A70 8004A670 00000000 */ nop +glabel L8004A674_25A74 +/* 25A74 8004A674 0240202D */ daddu $a0, $s2, $zero +/* 25A78 8004A678 0260282D */ daddu $a1, $s3, $zero +/* 25A7C 8004A67C 0C0127DF */ jal func_80049F7C +/* 25A80 8004A680 0280302D */ daddu $a2, $s4, $zero +glabel L8004A684_25A84 +/* 25A84 8004A684 0240202D */ daddu $a0, $s2, $zero +/* 25A88 8004A688 0260282D */ daddu $a1, $s3, $zero +/* 25A8C 8004A68C 0C012849 */ jal func_8004A124 +/* 25A90 8004A690 0280302D */ daddu $a2, $s4, $zero +/* 25A94 8004A694 8E430070 */ lw $v1, 0x70($s2) +/* 25A98 8004A698 2402000E */ addiu $v0, $zero, 0xe +/* 25A9C 8004A69C 14620009 */ bne $v1, $v0, .L8004A6C4 +/* 25AA0 8004A6A0 00000000 */ nop +glabel L8004A6A4_25AA4 +/* 25AA4 8004A6A4 0240202D */ daddu $a0, $s2, $zero +/* 25AA8 8004A6A8 0260282D */ daddu $a1, $s3, $zero +/* 25AAC 8004A6AC 0C0128FA */ jal func_8004A3E8 +/* 25AB0 8004A6B0 0280302D */ daddu $a2, $s4, $zero +/* 25AB4 8004A6B4 080129B1 */ j .L8004A6C4 +/* 25AB8 8004A6B8 00000000 */ nop +glabel L8004A6BC_25ABC +/* 25ABC 8004A6BC 0C0129CF */ jal func_8004A73C +/* 25AC0 8004A6C0 0240202D */ daddu $a0, $s2, $zero +.L8004A6C4: +glabel L8004A6C4_25AC4 +/* 25AC4 8004A6C4 8FBF0048 */ lw $ra, 0x48($sp) +/* 25AC8 8004A6C8 8FB50044 */ lw $s5, 0x44($sp) +/* 25ACC 8004A6CC 8FB40040 */ lw $s4, 0x40($sp) +/* 25AD0 8004A6D0 8FB3003C */ lw $s3, 0x3c($sp) +/* 25AD4 8004A6D4 8FB20038 */ lw $s2, 0x38($sp) +/* 25AD8 8004A6D8 8FB10034 */ lw $s1, 0x34($sp) +/* 25ADC 8004A6DC 8FB00030 */ lw $s0, 0x30($sp) +/* 25AE0 8004A6E0 0000102D */ daddu $v0, $zero, $zero +/* 25AE4 8004A6E4 03E00008 */ jr $ra +/* 25AE8 8004A6E8 27BD0050 */ addiu $sp, $sp, 0x50 +/* 25AEC 8004A6EC 00000000 */ nop diff --git a/asm/nonmatchings/code_23680/func_80048E34.s b/asm/nonmatchings/code_23680/func_80048E34.s new file mode 100644 index 0000000000..4b76451088 --- /dev/null +++ b/asm/nonmatchings/code_23680/func_80048E34.s @@ -0,0 +1,62 @@ +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches + +glabel func_80048E34 +/* 24234 80048E34 27BDFFE0 */ addiu $sp, $sp, -0x20 +/* 24238 80048E38 AFB00010 */ sw $s0, 0x10($sp) +/* 2423C 80048E3C 0080802D */ daddu $s0, $a0, $zero +/* 24240 80048E40 AFB20018 */ sw $s2, 0x18($sp) +/* 24244 80048E44 00A0902D */ daddu $s2, $a1, $zero +/* 24248 80048E48 AFBF001C */ sw $ra, 0x1c($sp) +/* 2424C 80048E4C AFB10014 */ sw $s1, 0x14($sp) +/* 24250 80048E50 8E02003C */ lw $v0, 0x3c($s0) +/* 24254 80048E54 10400005 */ beqz $v0, .L80048E6C +/* 24258 80048E58 00C0882D */ daddu $s1, $a2, $zero +/* 2425C 80048E5C 8E040054 */ lw $a0, 0x54($s0) +/* 24260 80048E60 0C0B102B */ jal kill_script_by_ID +/* 24264 80048E64 00000000 */ nop +/* 24268 80048E68 AE00003C */ sw $zero, 0x3c($s0) +.L80048E6C: +/* 2426C 80048E6C 8E0200BC */ lw $v0, 0xbc($s0) +/* 24270 80048E70 10400004 */ beqz $v0, .L80048E84 +/* 24274 80048E74 00000000 */ nop +/* 24278 80048E78 0C0B102B */ jal kill_script_by_ID +/* 2427C 80048E7C 8E0400C0 */ lw $a0, 0xc0($s0) +/* 24280 80048E80 AE0000BC */ sw $zero, 0xbc($s0) +.L80048E84: +/* 24284 80048E84 8E020024 */ lw $v0, 0x24($s0) +/* 24288 80048E88 1040000C */ beqz $v0, .L80048EBC +/* 2428C 80048E8C 2405000A */ addiu $a1, $zero, 0xa +/* 24290 80048E90 0040202D */ daddu $a0, $v0, $zero +/* 24294 80048E94 24060020 */ addiu $a2, $zero, 0x20 +/* 24298 80048E98 0C0B0CF8 */ jal start_script +/* 2429C 80048E9C AE1100C8 */ sw $s1, 0xc8($s0) +/* 242A0 80048EA0 0040202D */ daddu $a0, $v0, $zero +/* 242A4 80048EA4 AE04003C */ sw $a0, 0x3c($s0) +/* 242A8 80048EA8 8C820144 */ lw $v0, 0x144($a0) +/* 242AC 80048EAC 86030008 */ lh $v1, 8($s0) +/* 242B0 80048EB0 AE020054 */ sw $v0, 0x54($s0) +/* 242B4 80048EB4 AC83014C */ sw $v1, 0x14c($a0) +/* 242B8 80048EB8 AC900148 */ sw $s0, 0x148($a0) +.L80048EBC: +/* 242BC 80048EBC 8E0200B8 */ lw $v0, 0xb8($s0) +/* 242C0 80048EC0 1040000C */ beqz $v0, .L80048EF4 +/* 242C4 80048EC4 2405000A */ addiu $a1, $zero, 0xa +/* 242C8 80048EC8 0040202D */ daddu $a0, $v0, $zero +/* 242CC 80048ECC 24060020 */ addiu $a2, $zero, 0x20 +/* 242D0 80048ED0 0C0B0CF8 */ jal start_script +/* 242D4 80048ED4 AE1200C4 */ sw $s2, 0xc4($s0) +/* 242D8 80048ED8 0040202D */ daddu $a0, $v0, $zero +/* 242DC 80048EDC AE0400BC */ sw $a0, 0xbc($s0) +/* 242E0 80048EE0 8C820144 */ lw $v0, 0x144($a0) +/* 242E4 80048EE4 86030008 */ lh $v1, 8($s0) +/* 242E8 80048EE8 AE0200C0 */ sw $v0, 0xc0($s0) +/* 242EC 80048EEC AC83014C */ sw $v1, 0x14c($a0) +/* 242F0 80048EF0 AC900148 */ sw $s0, 0x148($a0) +.L80048EF4: +/* 242F4 80048EF4 8FBF001C */ lw $ra, 0x1c($sp) +/* 242F8 80048EF8 8FB20018 */ lw $s2, 0x18($sp) +/* 242FC 80048EFC 8FB10014 */ lw $s1, 0x14($sp) +/* 24300 80048F00 8FB00010 */ lw $s0, 0x10($sp) +/* 24304 80048F04 03E00008 */ jr $ra +/* 24308 80048F08 27BD0020 */ addiu $sp, $sp, 0x20 diff --git a/asm/nonmatchings/code_23680/func_80048F0C.s b/asm/nonmatchings/code_23680/func_80048F0C.s new file mode 100644 index 0000000000..f5c89fea64 --- /dev/null +++ b/asm/nonmatchings/code_23680/func_80048F0C.s @@ -0,0 +1,59 @@ +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches + +glabel func_80048F0C +/* 2430C 80048F0C 27BDFFD0 */ addiu $sp, $sp, -0x30 +/* 24310 80048F10 AFB50024 */ sw $s5, 0x24($sp) +/* 24314 80048F14 3C15800B */ lui $s5, %hi(gCurrentEncounter) +/* 24318 80048F18 26B50F10 */ addiu $s5, $s5, %lo(gCurrentEncounter) +/* 2431C 80048F1C AFBF0028 */ sw $ra, 0x28($sp) +/* 24320 80048F20 AFB40020 */ sw $s4, 0x20($sp) +/* 24324 80048F24 AFB3001C */ sw $s3, 0x1c($sp) +/* 24328 80048F28 AFB20018 */ sw $s2, 0x18($sp) +/* 2432C 80048F2C AFB10014 */ sw $s1, 0x14($sp) +/* 24330 80048F30 AFB00010 */ sw $s0, 0x10($sp) +/* 24334 80048F34 82A2001C */ lb $v0, 0x1c($s5) +/* 24338 80048F38 1840001C */ blez $v0, .L80048FAC +/* 2433C 80048F3C 0000982D */ daddu $s3, $zero, $zero +/* 24340 80048F40 02A0A02D */ daddu $s4, $s5, $zero +.L80048F44: +/* 24344 80048F44 8E920028 */ lw $s2, 0x28($s4) +/* 24348 80048F48 12400013 */ beqz $s2, .L80048F98 +/* 2434C 80048F4C 00000000 */ nop +/* 24350 80048F50 8E420000 */ lw $v0, ($s2) +/* 24354 80048F54 18400010 */ blez $v0, .L80048F98 +/* 24358 80048F58 0000802D */ daddu $s0, $zero, $zero +/* 2435C 80048F5C 0240882D */ daddu $s1, $s2, $zero +.L80048F60: +/* 24360 80048F60 8E230004 */ lw $v1, 4($s1) +/* 24364 80048F64 10600007 */ beqz $v1, .L80048F84 +/* 24368 80048F68 00000000 */ nop +/* 2436C 80048F6C 8C620000 */ lw $v0, ($v1) +/* 24370 80048F70 30420020 */ andi $v0, $v0, 0x20 +/* 24374 80048F74 14400003 */ bnez $v0, .L80048F84 +/* 24378 80048F78 00000000 */ nop +/* 2437C 80048F7C 0C00EABB */ jal get_npc_unsafe +/* 24380 80048F80 84640008 */ lh $a0, 8($v1) +.L80048F84: +/* 24384 80048F84 8E420000 */ lw $v0, ($s2) +/* 24388 80048F88 26100001 */ addiu $s0, $s0, 1 +/* 2438C 80048F8C 0202102A */ slt $v0, $s0, $v0 +/* 24390 80048F90 1440FFF3 */ bnez $v0, .L80048F60 +/* 24394 80048F94 26310004 */ addiu $s1, $s1, 4 +.L80048F98: +/* 24398 80048F98 82A2001C */ lb $v0, 0x1c($s5) +/* 2439C 80048F9C 26730001 */ addiu $s3, $s3, 1 +/* 243A0 80048FA0 0262102A */ slt $v0, $s3, $v0 +/* 243A4 80048FA4 1440FFE7 */ bnez $v0, .L80048F44 +/* 243A8 80048FA8 26940004 */ addiu $s4, $s4, 4 +.L80048FAC: +/* 243AC 80048FAC 8FBF0028 */ lw $ra, 0x28($sp) +/* 243B0 80048FB0 8FB50024 */ lw $s5, 0x24($sp) +/* 243B4 80048FB4 8FB40020 */ lw $s4, 0x20($sp) +/* 243B8 80048FB8 8FB3001C */ lw $s3, 0x1c($sp) +/* 243BC 80048FBC 8FB20018 */ lw $s2, 0x18($sp) +/* 243C0 80048FC0 8FB10014 */ lw $s1, 0x14($sp) +/* 243C4 80048FC4 8FB00010 */ lw $s0, 0x10($sp) +/* 243C8 80048FC8 0000102D */ daddu $v0, $zero, $zero +/* 243CC 80048FCC 03E00008 */ jr $ra +/* 243D0 80048FD0 27BD0030 */ addiu $sp, $sp, 0x30 diff --git a/asm/nonmatchings/code_23680/func_800490B4.s b/asm/nonmatchings/code_23680/func_800490B4.s new file mode 100644 index 0000000000..dd0c306256 --- /dev/null +++ b/asm/nonmatchings/code_23680/func_800490B4.s @@ -0,0 +1,224 @@ +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches + +glabel func_800490B4 +/* 244B4 800490B4 27BDFFA0 */ addiu $sp, $sp, -0x60 +/* 244B8 800490B8 F7B60050 */ sdc1 $f22, 0x50($sp) +/* 244BC 800490BC 4486B000 */ mtc1 $a2, $f22 +/* 244C0 800490C0 F7B80058 */ sdc1 $f24, 0x58($sp) +/* 244C4 800490C4 4487C000 */ mtc1 $a3, $f24 +/* 244C8 800490C8 AFB10034 */ sw $s1, 0x34($sp) +/* 244CC 800490CC 0080882D */ daddu $s1, $a0, $zero +/* 244D0 800490D0 AFB3003C */ sw $s3, 0x3c($sp) +/* 244D4 800490D4 00A0982D */ daddu $s3, $a1, $zero +/* 244D8 800490D8 AFBF0044 */ sw $ra, 0x44($sp) +/* 244DC 800490DC AFB40040 */ sw $s4, 0x40($sp) +/* 244E0 800490E0 AFB20038 */ sw $s2, 0x38($sp) +/* 244E4 800490E4 AFB00030 */ sw $s0, 0x30($sp) +/* 244E8 800490E8 F7B40048 */ sdc1 $f20, 0x48($sp) +/* 244EC 800490EC 86640008 */ lh $a0, 8($s3) +/* 244F0 800490F0 0C00EABB */ jal get_npc_unsafe +/* 244F4 800490F4 93B40073 */ lbu $s4, 0x73($sp) +/* 244F8 800490F8 0040802D */ daddu $s0, $v0, $zero +/* 244FC 800490FC 8E6200B0 */ lw $v0, 0xb0($s3) +/* 24500 80049100 3C128011 */ lui $s2, %hi(gPlayerStatus) +/* 24504 80049104 2652EFC8 */ addiu $s2, $s2, %lo(gPlayerStatus) +/* 24508 80049108 30420002 */ andi $v0, $v0, 2 +/* 2450C 8004910C 144000AC */ bnez $v0, .L800493C0 +/* 24510 80049110 0000102D */ daddu $v0, $zero, $zero +/* 24514 80049114 3C048011 */ lui $a0, %hi(D_8010EBB0) +/* 24518 80049118 2484EBB0 */ addiu $a0, $a0, %lo(D_8010EBB0) +/* 2451C 8004911C 80830003 */ lb $v1, 3($a0) +/* 24520 80049120 24020009 */ addiu $v0, $zero, 9 +/* 24524 80049124 14620008 */ bne $v1, $v0, .L80049148 +/* 24528 80049128 24020007 */ addiu $v0, $zero, 7 +/* 2452C 8004912C 80820000 */ lb $v0, ($a0) +/* 24530 80049130 10400005 */ beqz $v0, .L80049148 +/* 24534 80049134 24020007 */ addiu $v0, $zero, 7 +/* 24538 80049138 9622001C */ lhu $v0, 0x1c($s1) +/* 2453C 8004913C 30420001 */ andi $v0, $v0, 1 +/* 24540 80049140 1040009E */ beqz $v0, .L800493BC +/* 24544 80049144 24020007 */ addiu $v0, $zero, 7 +.L80049148: +/* 24548 80049148 14620008 */ bne $v1, $v0, .L8004916C +/* 2454C 8004914C 00000000 */ nop +/* 24550 80049150 80820000 */ lb $v0, ($a0) +/* 24554 80049154 10400005 */ beqz $v0, .L8004916C +/* 24558 80049158 00000000 */ nop +/* 2455C 8004915C 9622001C */ lhu $v0, 0x1c($s1) +/* 24560 80049160 30420001 */ andi $v0, $v0, 1 +/* 24564 80049164 10400096 */ beqz $v0, .L800493C0 +/* 24568 80049168 0000102D */ daddu $v0, $zero, $zero +.L8004916C: +/* 2456C 8004916C 8E220000 */ lw $v0, ($s1) +/* 24570 80049170 04400093 */ bltz $v0, .L800493C0 +/* 24574 80049174 0000102D */ daddu $v0, $zero, $zero +/* 24578 80049178 C600003C */ lwc1 $f0, 0x3c($s0) +/* 2457C 8004917C C642002C */ lwc1 $f2, 0x2c($s2) +/* 24580 80049180 46020001 */ sub.s $f0, $f0, $f2 +/* 24584 80049184 C6220018 */ lwc1 $f2, 0x18($s1) +/* 24588 80049188 46000005 */ abs.s $f0, $f0 +/* 2458C 8004918C 4600103E */ c.le.s $f2, $f0 +/* 24590 80049190 00000000 */ nop +/* 24594 80049194 45000005 */ bc1f .L800491AC +/* 24598 80049198 00000000 */ nop +/* 2459C 8004919C 9622001C */ lhu $v0, 0x1c($s1) +/* 245A0 800491A0 30420002 */ andi $v0, $v0, 2 +/* 245A4 800491A4 10400086 */ beqz $v0, .L800493C0 +/* 245A8 800491A8 0000102D */ daddu $v0, $zero, $zero +.L800491AC: +/* 245AC 800491AC 8E220010 */ lw $v0, 0x10($s1) +/* 245B0 800491B0 8E230014 */ lw $v1, 0x14($s1) +/* 245B4 800491B4 00431025 */ or $v0, $v0, $v1 +/* 245B8 800491B8 10400014 */ beqz $v0, .L8004920C +/* 245BC 800491BC 00000000 */ nop +/* 245C0 800491C0 C6200008 */ lwc1 $f0, 8($s1) +/* 245C4 800491C4 46800020 */ cvt.s.w $f0, $f0 +/* 245C8 800491C8 44050000 */ mfc1 $a1, $f0 +/* 245CC 800491CC C620000C */ lwc1 $f0, 0xc($s1) +/* 245D0 800491D0 46800020 */ cvt.s.w $f0, $f0 +/* 245D4 800491D4 44060000 */ mfc1 $a2, $f0 +/* 245D8 800491D8 C6400030 */ lwc1 $f0, 0x30($s2) +/* 245DC 800491DC 8E470028 */ lw $a3, 0x28($s2) +/* 245E0 800491E0 E7A00010 */ swc1 $f0, 0x10($sp) +/* 245E4 800491E4 C6200010 */ lwc1 $f0, 0x10($s1) +/* 245E8 800491E8 46800020 */ cvt.s.w $f0, $f0 +/* 245EC 800491EC E7A00014 */ swc1 $f0, 0x14($sp) +/* 245F0 800491F0 C6200014 */ lwc1 $f0, 0x14($s1) +/* 245F4 800491F4 46800020 */ cvt.s.w $f0, $f0 +/* 245F8 800491F8 E7A00018 */ swc1 $f0, 0x18($sp) +/* 245FC 800491FC 0C0123F5 */ jal is_point_within_region +/* 24600 80049200 8E240004 */ lw $a0, 4($s1) +/* 24604 80049204 1440006E */ bnez $v0, .L800493C0 +/* 24608 80049208 0000102D */ daddu $v0, $zero, $zero +.L8004920C: +/* 2460C 8004920C 824300B4 */ lb $v1, 0xb4($s2) +/* 24610 80049210 2402001D */ addiu $v0, $zero, 0x1d +/* 24614 80049214 1062006A */ beq $v1, $v0, .L800493C0 +/* 24618 80049218 0000102D */ daddu $v0, $zero, $zero +/* 2461C 8004921C 926200AC */ lbu $v0, 0xac($s3) +/* 24620 80049220 30420001 */ andi $v0, $v0, 1 +/* 24624 80049224 1040002C */ beqz $v0, .L800492D8 +/* 24628 80049228 00000000 */ nop +/* 2462C 8004922C C60C0038 */ lwc1 $f12, 0x38($s0) +/* 24630 80049230 860200A8 */ lh $v0, 0xa8($s0) +/* 24634 80049234 3C013FE0 */ lui $at, 0x3fe0 +/* 24638 80049238 44810800 */ mtc1 $at, $f1 +/* 2463C 8004923C 44800000 */ mtc1 $zero, $f0 +/* 24640 80049240 44821000 */ mtc1 $v0, $f2 +/* 24644 80049244 00000000 */ nop +/* 24648 80049248 468010A1 */ cvt.d.w $f2, $f2 +/* 2464C 8004924C 46201082 */ mul.d $f2, $f2, $f0 +/* 24650 80049250 00000000 */ nop +/* 24654 80049254 C60E0040 */ lwc1 $f14, 0x40($s0) +/* 24658 80049258 8E460028 */ lw $a2, 0x28($s2) +/* 2465C 8004925C 8E470030 */ lw $a3, 0x30($s2) +/* 24660 80049260 46006106 */ mov.s $f4, $f12 +/* 24664 80049264 C600003C */ lwc1 $f0, 0x3c($s0) +/* 24668 80049268 46007186 */ mov.s $f6, $f14 +/* 2466C 8004926C 46000021 */ cvt.d.s $f0, $f0 +/* 24670 80049270 46220000 */ add.d $f0, $f0, $f2 +/* 24674 80049274 E7A40020 */ swc1 $f4, 0x20($sp) +/* 24678 80049278 E7A60028 */ swc1 $f6, 0x28($sp) +/* 2467C 8004927C 46200020 */ cvt.s.d $f0, $f0 +/* 24680 80049280 0C00A7B5 */ jal dist2D +/* 24684 80049284 E7A00024 */ swc1 $f0, 0x24($sp) +/* 24688 80049288 C60C0038 */ lwc1 $f12, 0x38($s0) +/* 2468C 8004928C C60E0040 */ lwc1 $f14, 0x40($s0) +/* 24690 80049290 8E460028 */ lw $a2, 0x28($s2) +/* 24694 80049294 8E470030 */ lw $a3, 0x30($s2) +/* 24698 80049298 0C00A720 */ jal atan2 +/* 2469C 8004929C 46000506 */ mov.s $f20, $f0 +/* 246A0 800492A0 3C040005 */ lui $a0, 5 +/* 246A4 800492A4 27A50020 */ addiu $a1, $sp, 0x20 +/* 246A8 800492A8 27A60024 */ addiu $a2, $sp, 0x24 +/* 246AC 800492AC 3C013DCC */ lui $at, 0x3dcc +/* 246B0 800492B0 3421CCCD */ ori $at, $at, 0xcccd +/* 246B4 800492B4 44811000 */ mtc1 $at, $f2 +/* 246B8 800492B8 27A70028 */ addiu $a3, $sp, 0x28 +/* 246BC 800492BC E7B40010 */ swc1 $f20, 0x10($sp) +/* 246C0 800492C0 E7A00014 */ swc1 $f0, 0x14($sp) +/* 246C4 800492C4 E7A20018 */ swc1 $f2, 0x18($sp) +/* 246C8 800492C8 0C037711 */ jal func_800DDC44 +/* 246CC 800492CC E7A2001C */ swc1 $f2, 0x1c($sp) +/* 246D0 800492D0 1440003B */ bnez $v0, .L800493C0 +/* 246D4 800492D4 0000102D */ daddu $v0, $zero, $zero +.L800492D8: +/* 246D8 800492D8 8E220000 */ lw $v0, ($s1) +/* 246DC 800492DC 14400003 */ bnez $v0, .L800492EC +/* 246E0 800492E0 00000000 */ nop +/* 246E4 800492E4 080124BD */ j .L800492F4 +/* 246E8 800492E8 0000102D */ daddu $v0, $zero, $zero +.L800492EC: +/* 246EC 800492EC 0C00A67F */ jal rand_int +/* 246F0 800492F0 24440001 */ addiu $a0, $v0, 1 +.L800492F4: +/* 246F4 800492F4 14400032 */ bnez $v0, .L800493C0 +/* 246F8 800492F8 0000102D */ daddu $v0, $zero, $zero +/* 246FC 800492FC 926200AC */ lbu $v0, 0xac($s3) +/* 24700 80049300 30420002 */ andi $v0, $v0, 2 +/* 24704 80049304 10400010 */ beqz $v0, .L80049348 +/* 24708 80049308 24020001 */ addiu $v0, $zero, 1 +/* 2470C 8004930C 824300B4 */ lb $v1, 0xb4($s2) +/* 24710 80049310 14620005 */ bne $v1, $v0, .L80049328 +/* 24714 80049314 24020002 */ addiu $v0, $zero, 2 +/* 24718 80049318 3C01800A */ lui $at, %hi(D_80098710) +/* 2471C 8004931C D4228710 */ ldc1 $f2, %lo(D_80098710)($at) +/* 24720 80049320 080124CF */ j .L8004933C +/* 24724 80049324 4600B021 */ cvt.d.s $f0, $f22 +.L80049328: +/* 24728 80049328 14620007 */ bne $v1, $v0, .L80049348 +/* 2472C 8004932C 00000000 */ nop +/* 24730 80049330 3C01800A */ lui $at, %hi(D_80098718) +/* 24734 80049334 D4228718 */ ldc1 $f2, %lo(D_80098718)($at) +/* 24738 80049338 4600B021 */ cvt.d.s $f0, $f22 +.L8004933C: +/* 2473C 8004933C 46220002 */ mul.d $f0, $f0, $f2 +/* 24740 80049340 00000000 */ nop +/* 24744 80049344 462005A0 */ cvt.s.d $f22, $f0 +.L80049348: +/* 24748 80049348 C6000038 */ lwc1 $f0, 0x38($s0) +/* 2474C 8004934C C6020040 */ lwc1 $f2, 0x40($s0) +/* 24750 80049350 328200FF */ andi $v0, $s4, 0xff +/* 24754 80049354 E7A00020 */ swc1 $f0, 0x20($sp) +/* 24758 80049358 10400005 */ beqz $v0, .L80049370 +/* 2475C 8004935C E7A20028 */ swc1 $f2, 0x28($sp) +/* 24760 80049360 4406C000 */ mfc1 $a2, $f24 +/* 24764 80049364 8E07000C */ lw $a3, 0xc($s0) +/* 24768 80049368 080124E4 */ j .L80049390 +/* 2476C 8004936C 27A40020 */ addiu $a0, $sp, 0x20 +.L80049370: +/* 24770 80049370 C6020034 */ lwc1 $f2, 0x34($s0) +/* 24774 80049374 3C014387 */ lui $at, 0x4387 +/* 24778 80049378 44810000 */ mtc1 $at, $f0 +/* 2477C 8004937C 00000000 */ nop +/* 24780 80049380 46020001 */ sub.s $f0, $f0, $f2 +/* 24784 80049384 27A40020 */ addiu $a0, $sp, 0x20 +/* 24788 80049388 4406C000 */ mfc1 $a2, $f24 +/* 2478C 8004938C 44070000 */ mfc1 $a3, $f0 +.L80049390: +/* 24790 80049390 0C00A7E7 */ jal add_vec2D_polar +/* 24794 80049394 27A50028 */ addiu $a1, $sp, 0x28 +/* 24798 80049398 C7AC0020 */ lwc1 $f12, 0x20($sp) +/* 2479C 8004939C C7AE0028 */ lwc1 $f14, 0x28($sp) +/* 247A0 800493A0 8E460028 */ lw $a2, 0x28($s2) +/* 247A4 800493A4 0C00A7B5 */ jal dist2D +/* 247A8 800493A8 8E470030 */ lw $a3, 0x30($s2) +/* 247AC 800493AC 4616003E */ c.le.s $f0, $f22 +/* 247B0 800493B0 00000000 */ nop +/* 247B4 800493B4 45010002 */ bc1t .L800493C0 +/* 247B8 800493B8 24020001 */ addiu $v0, $zero, 1 +.L800493BC: +/* 247BC 800493BC 0000102D */ daddu $v0, $zero, $zero +.L800493C0: +/* 247C0 800493C0 8FBF0044 */ lw $ra, 0x44($sp) +/* 247C4 800493C4 8FB40040 */ lw $s4, 0x40($sp) +/* 247C8 800493C8 8FB3003C */ lw $s3, 0x3c($sp) +/* 247CC 800493CC 8FB20038 */ lw $s2, 0x38($sp) +/* 247D0 800493D0 8FB10034 */ lw $s1, 0x34($sp) +/* 247D4 800493D4 8FB00030 */ lw $s0, 0x30($sp) +/* 247D8 800493D8 D7B80058 */ ldc1 $f24, 0x58($sp) +/* 247DC 800493DC D7B60050 */ ldc1 $f22, 0x50($sp) +/* 247E0 800493E0 D7B40048 */ ldc1 $f20, 0x48($sp) +/* 247E4 800493E4 03E00008 */ jr $ra +/* 247E8 800493E8 27BD0060 */ addiu $sp, $sp, 0x60 diff --git a/asm/nonmatchings/code_23680/func_800493EC.s b/asm/nonmatchings/code_23680/func_800493EC.s new file mode 100644 index 0000000000..bd31e62728 --- /dev/null +++ b/asm/nonmatchings/code_23680/func_800493EC.s @@ -0,0 +1,60 @@ +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches + +glabel func_800493EC +/* 247EC 800493EC 27BDFFC8 */ addiu $sp, $sp, -0x38 +/* 247F0 800493F0 F7B60030 */ sdc1 $f22, 0x30($sp) +/* 247F4 800493F4 4486B000 */ mtc1 $a2, $f22 +/* 247F8 800493F8 AFB00018 */ sw $s0, 0x18($sp) +/* 247FC 800493FC AFBF0024 */ sw $ra, 0x24($sp) +/* 24800 80049400 AFB20020 */ sw $s2, 0x20($sp) +/* 24804 80049404 AFB1001C */ sw $s1, 0x1c($sp) +/* 24808 80049408 F7B40028 */ sdc1 $f20, 0x28($sp) +/* 2480C 8004940C 84840008 */ lh $a0, 8($a0) +/* 24810 80049410 4487A000 */ mtc1 $a3, $f20 +/* 24814 80049414 0C00EABB */ jal get_npc_unsafe +/* 24818 80049418 00A0802D */ daddu $s0, $a1, $zero +/* 2481C 8004941C 3C128011 */ lui $s2, %hi(gPlayerStatus) +/* 24820 80049420 2652EFC8 */ addiu $s2, $s2, %lo(gPlayerStatus) +/* 24824 80049424 0600001D */ bltz $s0, .L8004949C +/* 24828 80049428 0040882D */ daddu $s1, $v0, $zero +/* 2482C 8004942C 12000003 */ beqz $s0, .L8004943C +/* 24830 80049430 0000102D */ daddu $v0, $zero, $zero +/* 24834 80049434 0C00A67F */ jal rand_int +/* 24838 80049438 26040001 */ addiu $a0, $s0, 1 +.L8004943C: +/* 2483C 8004943C 14400018 */ bnez $v0, .L800494A0 +/* 24840 80049440 0000102D */ daddu $v0, $zero, $zero +/* 24844 80049444 27A40010 */ addiu $a0, $sp, 0x10 +/* 24848 80049448 C6220034 */ lwc1 $f2, 0x34($s1) +/* 2484C 8004944C 3C014387 */ lui $at, 0x4387 +/* 24850 80049450 44810000 */ mtc1 $at, $f0 +/* 24854 80049454 4406A000 */ mfc1 $a2, $f20 +/* 24858 80049458 46020001 */ sub.s $f0, $f0, $f2 +/* 2485C 8004945C C6260038 */ lwc1 $f6, 0x38($s1) +/* 24860 80049460 C6240040 */ lwc1 $f4, 0x40($s1) +/* 24864 80049464 44070000 */ mfc1 $a3, $f0 +/* 24868 80049468 27A50014 */ addiu $a1, $sp, 0x14 +/* 2486C 8004946C E7A60010 */ swc1 $f6, 0x10($sp) +/* 24870 80049470 0C00A7E7 */ jal add_vec2D_polar +/* 24874 80049474 E7A40014 */ swc1 $f4, 0x14($sp) +/* 24878 80049478 8E460028 */ lw $a2, 0x28($s2) +/* 2487C 8004947C 8E470030 */ lw $a3, 0x30($s2) +/* 24880 80049480 C7AC0010 */ lwc1 $f12, 0x10($sp) +/* 24884 80049484 0C00A7B5 */ jal dist2D +/* 24888 80049488 C7AE0014 */ lwc1 $f14, 0x14($sp) +/* 2488C 8004948C 4616003E */ c.le.s $f0, $f22 +/* 24890 80049490 00000000 */ nop +/* 24894 80049494 45010002 */ bc1t .L800494A0 +/* 24898 80049498 24020001 */ addiu $v0, $zero, 1 +.L8004949C: +/* 2489C 8004949C 0000102D */ daddu $v0, $zero, $zero +.L800494A0: +/* 248A0 800494A0 8FBF0024 */ lw $ra, 0x24($sp) +/* 248A4 800494A4 8FB20020 */ lw $s2, 0x20($sp) +/* 248A8 800494A8 8FB1001C */ lw $s1, 0x1c($sp) +/* 248AC 800494AC 8FB00018 */ lw $s0, 0x18($sp) +/* 248B0 800494B0 D7B60030 */ ldc1 $f22, 0x30($sp) +/* 248B4 800494B4 D7B40028 */ ldc1 $f20, 0x28($sp) +/* 248B8 800494B8 03E00008 */ jr $ra +/* 248BC 800494BC 27BD0038 */ addiu $sp, $sp, 0x38 diff --git a/asm/nonmatchings/code_23680/func_800494C0.s b/asm/nonmatchings/code_23680/func_800494C0.s new file mode 100644 index 0000000000..8811077329 --- /dev/null +++ b/asm/nonmatchings/code_23680/func_800494C0.s @@ -0,0 +1,42 @@ +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches + +glabel func_800494C0 +/* 248C0 800494C0 27BDFFD8 */ addiu $sp, $sp, -0x28 +/* 248C4 800494C4 AFB1001C */ sw $s1, 0x1c($sp) +/* 248C8 800494C8 0080882D */ daddu $s1, $a0, $zero +/* 248CC 800494CC AFB20020 */ sw $s2, 0x20($sp) +/* 248D0 800494D0 00A0902D */ daddu $s2, $a1, $zero +/* 248D4 800494D4 AFBF0024 */ sw $ra, 0x24($sp) +/* 248D8 800494D8 AFB00018 */ sw $s0, 0x18($sp) +/* 248DC 800494DC 822400A4 */ lb $a0, 0xa4($s1) +/* 248E0 800494E0 0C00FB3A */ jal get_enemy +/* 248E4 800494E4 00C0802D */ daddu $s0, $a2, $zero +/* 248E8 800494E8 3C03FFFF */ lui $v1, 0xffff +/* 248EC 800494EC 02031824 */ and $v1, $s0, $v1 +/* 248F0 800494F0 34650002 */ ori $a1, $v1, 2 +/* 248F4 800494F4 32100001 */ andi $s0, $s0, 1 +/* 248F8 800494F8 12000003 */ beqz $s0, .L80049508 +/* 248FC 800494FC 0040182D */ daddu $v1, $v0, $zero +/* 24900 80049500 3C020001 */ lui $v0, 1 +/* 24904 80049504 00A22825 */ or $a1, $a1, $v0 +.L80049508: +/* 24908 80049508 8C620018 */ lw $v0, 0x18($v1) +/* 2490C 8004950C 9442002A */ lhu $v0, 0x2a($v0) +/* 24910 80049510 30420020 */ andi $v0, $v0, 0x20 +/* 24914 80049514 10400002 */ beqz $v0, .L80049520 +/* 24918 80049518 3C020002 */ lui $v0, 2 +/* 2491C 8004951C 00A22825 */ or $a1, $a1, $v0 +.L80049520: +/* 24920 80049520 C6200040 */ lwc1 $f0, 0x40($s1) +/* 24924 80049524 E7A00010 */ swc1 $f0, 0x10($sp) +/* 24928 80049528 8E260038 */ lw $a2, 0x38($s1) +/* 2492C 8004952C 8E27003C */ lw $a3, 0x3c($s1) +/* 24930 80049530 0C052757 */ jal play_sound_at_position +/* 24934 80049534 0240202D */ daddu $a0, $s2, $zero +/* 24938 80049538 8FBF0024 */ lw $ra, 0x24($sp) +/* 2493C 8004953C 8FB20020 */ lw $s2, 0x20($sp) +/* 24940 80049540 8FB1001C */ lw $s1, 0x1c($sp) +/* 24944 80049544 8FB00018 */ lw $s0, 0x18($sp) +/* 24948 80049548 03E00008 */ jr $ra +/* 2494C 8004954C 27BD0028 */ addiu $sp, $sp, 0x28 diff --git a/asm/nonmatchings/code_23680/func_80049550.s b/asm/nonmatchings/code_23680/func_80049550.s new file mode 100644 index 0000000000..f7cf11c50d --- /dev/null +++ b/asm/nonmatchings/code_23680/func_80049550.s @@ -0,0 +1,25 @@ +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches + +glabel func_80049550 +/* 24950 80049550 27BDFFE0 */ addiu $sp, $sp, -0x20 +/* 24954 80049554 AFB00010 */ sw $s0, 0x10($sp) +/* 24958 80049558 0080802D */ daddu $s0, $a0, $zero +/* 2495C 8004955C AFBF0018 */ sw $ra, 0x18($sp) +/* 24960 80049560 AFB10014 */ sw $s1, 0x14($sp) +/* 24964 80049564 8E020148 */ lw $v0, 0x148($s0) +/* 24968 80049568 84440008 */ lh $a0, 8($v0) +/* 2496C 8004956C 0C00EABB */ jal get_npc_unsafe +/* 24970 80049570 00A0882D */ daddu $s1, $a1, $zero +/* 24974 80049574 9443008E */ lhu $v1, 0x8e($v0) +/* 24978 80049578 2463FFFF */ addiu $v1, $v1, -1 +/* 2497C 8004957C A443008E */ sh $v1, 0x8e($v0) +/* 24980 80049580 00031C00 */ sll $v1, $v1, 0x10 +/* 24984 80049584 58600001 */ blezl $v1, .L8004958C +/* 24988 80049588 AE110070 */ sw $s1, 0x70($s0) +.L8004958C: +/* 2498C 8004958C 8FBF0018 */ lw $ra, 0x18($sp) +/* 24990 80049590 8FB10014 */ lw $s1, 0x14($sp) +/* 24994 80049594 8FB00010 */ lw $s0, 0x10($sp) +/* 24998 80049598 03E00008 */ jr $ra +/* 2499C 8004959C 27BD0020 */ addiu $sp, $sp, 0x20 diff --git a/asm/nonmatchings/code_23680/func_800495A0.s b/asm/nonmatchings/code_23680/func_800495A0.s new file mode 100644 index 0000000000..cf4485b412 --- /dev/null +++ b/asm/nonmatchings/code_23680/func_800495A0.s @@ -0,0 +1,76 @@ +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches + +glabel func_800495A0 +/* 249A0 800495A0 27BDFFD8 */ addiu $sp, $sp, -0x28 +/* 249A4 800495A4 AFB3001C */ sw $s3, 0x1c($sp) +/* 249A8 800495A8 0080982D */ daddu $s3, $a0, $zero +/* 249AC 800495AC AFBF0020 */ sw $ra, 0x20($sp) +/* 249B0 800495B0 AFB20018 */ sw $s2, 0x18($sp) +/* 249B4 800495B4 AFB10014 */ sw $s1, 0x14($sp) +/* 249B8 800495B8 AFB00010 */ sw $s0, 0x10($sp) +/* 249BC 800495BC 8E710148 */ lw $s1, 0x148($s3) +/* 249C0 800495C0 86240008 */ lh $a0, 8($s1) +/* 249C4 800495C4 0C00EABB */ jal get_npc_unsafe +/* 249C8 800495C8 00A0902D */ daddu $s2, $a1, $zero +/* 249CC 800495CC 8E440004 */ lw $a0, 4($s2) +/* 249D0 800495D0 0040802D */ daddu $s0, $v0, $zero +/* 249D4 800495D4 00041FC2 */ srl $v1, $a0, 0x1f +/* 249D8 800495D8 00832021 */ addu $a0, $a0, $v1 +/* 249DC 800495DC 00042043 */ sra $a0, $a0, 1 +/* 249E0 800495E0 0C00A67F */ jal rand_int +/* 249E4 800495E4 24840001 */ addiu $a0, $a0, 1 +/* 249E8 800495E8 8E430004 */ lw $v1, 4($s2) +/* 249EC 800495EC 2404003C */ addiu $a0, $zero, 0x3c +/* 249F0 800495F0 00032FC2 */ srl $a1, $v1, 0x1f +/* 249F4 800495F4 00651821 */ addu $v1, $v1, $a1 +/* 249F8 800495F8 00031843 */ sra $v1, $v1, 1 +/* 249FC 800495FC 00621821 */ addu $v1, $v1, $v0 +/* 24A00 80049600 0C00A67F */ jal rand_int +/* 24A04 80049604 A603008E */ sh $v1, 0x8e($s0) +/* 24A08 80049608 C60C000C */ lwc1 $f12, 0xc($s0) +/* 24A0C 8004960C 44820000 */ mtc1 $v0, $f0 +/* 24A10 80049610 00000000 */ nop +/* 24A14 80049614 46800020 */ cvt.s.w $f0, $f0 +/* 24A18 80049618 46006300 */ add.s $f12, $f12, $f0 +/* 24A1C 8004961C 3C0141F0 */ lui $at, 0x41f0 +/* 24A20 80049620 44810000 */ mtc1 $at, $f0 +/* 24A24 80049624 0C00A6C9 */ jal clamp_angle +/* 24A28 80049628 46006301 */ sub.s $f12, $f12, $f0 +/* 24A2C 8004962C E600000C */ swc1 $f0, 0xc($s0) +/* 24A30 80049630 8E2200CC */ lw $v0, 0xcc($s1) +/* 24A34 80049634 8C420004 */ lw $v0, 4($v0) +/* 24A38 80049638 AE020028 */ sw $v0, 0x28($s0) +/* 24A3C 8004963C AE600074 */ sw $zero, 0x74($s3) +/* 24A40 80049640 8E2200D0 */ lw $v0, 0xd0($s1) +/* 24A44 80049644 8C420014 */ lw $v0, 0x14($v0) +/* 24A48 80049648 04410004 */ bgez $v0, .L8004965C +/* 24A4C 8004964C 00000000 */ nop +/* 24A50 80049650 C6400000 */ lwc1 $f0, ($s2) +/* 24A54 80049654 0801259F */ j .L8004967C +/* 24A58 80049658 E6000018 */ swc1 $f0, 0x18($s0) +.L8004965C: +/* 24A5C 8004965C 3C01800A */ lui $at, %hi(D_80098720) +/* 24A60 80049660 D4228720 */ ldc1 $f2, %lo(D_80098720)($at) +/* 24A64 80049664 44820000 */ mtc1 $v0, $f0 +/* 24A68 80049668 00000000 */ nop +/* 24A6C 8004966C 46800021 */ cvt.d.w $f0, $f0 +/* 24A70 80049670 46220003 */ div.d $f0, $f0, $f2 +/* 24A74 80049674 46200020 */ cvt.s.d $f0, $f0 +/* 24A78 80049678 E6000018 */ swc1 $f0, 0x18($s0) +.L8004967C: +/* 24A7C 8004967C 8E2200B0 */ lw $v0, 0xb0($s1) +/* 24A80 80049680 2403FFBF */ addiu $v1, $zero, -0x41 +/* 24A84 80049684 00431024 */ and $v0, $v0, $v1 +/* 24A88 80049688 2403FFDF */ addiu $v1, $zero, -0x21 +/* 24A8C 8004968C 00431024 */ and $v0, $v0, $v1 +/* 24A90 80049690 AE2200B0 */ sw $v0, 0xb0($s1) +/* 24A94 80049694 24020001 */ addiu $v0, $zero, 1 +/* 24A98 80049698 AE620070 */ sw $v0, 0x70($s3) +/* 24A9C 8004969C 8FBF0020 */ lw $ra, 0x20($sp) +/* 24AA0 800496A0 8FB3001C */ lw $s3, 0x1c($sp) +/* 24AA4 800496A4 8FB20018 */ lw $s2, 0x18($sp) +/* 24AA8 800496A8 8FB10014 */ lw $s1, 0x14($sp) +/* 24AAC 800496AC 8FB00010 */ lw $s0, 0x10($sp) +/* 24AB0 800496B0 03E00008 */ jr $ra +/* 24AB4 800496B4 27BD0028 */ addiu $sp, $sp, 0x28 diff --git a/asm/nonmatchings/code_23680/func_800496B8.s b/asm/nonmatchings/code_23680/func_800496B8.s new file mode 100644 index 0000000000..e53409d06e --- /dev/null +++ b/asm/nonmatchings/code_23680/func_800496B8.s @@ -0,0 +1,305 @@ +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches + +glabel func_800496B8 +/* 24AB8 800496B8 27BDFFA0 */ addiu $sp, $sp, -0x60 +/* 24ABC 800496BC AFB3004C */ sw $s3, 0x4c($sp) +/* 24AC0 800496C0 0080982D */ daddu $s3, $a0, $zero +/* 24AC4 800496C4 AFB40050 */ sw $s4, 0x50($sp) +/* 24AC8 800496C8 00A0A02D */ daddu $s4, $a1, $zero +/* 24ACC 800496CC AFBF0058 */ sw $ra, 0x58($sp) +/* 24AD0 800496D0 AFB50054 */ sw $s5, 0x54($sp) +/* 24AD4 800496D4 AFB20048 */ sw $s2, 0x48($sp) +/* 24AD8 800496D8 AFB10044 */ sw $s1, 0x44($sp) +/* 24ADC 800496DC AFB00040 */ sw $s0, 0x40($sp) +/* 24AE0 800496E0 8E710148 */ lw $s1, 0x148($s3) +/* 24AE4 800496E4 00C0902D */ daddu $s2, $a2, $zero +/* 24AE8 800496E8 86240008 */ lh $a0, 8($s1) +/* 24AEC 800496EC 0C00EABB */ jal get_npc_unsafe +/* 24AF0 800496F0 0000A82D */ daddu $s5, $zero, $zero +/* 24AF4 800496F4 8E830014 */ lw $v1, 0x14($s4) +/* 24AF8 800496F8 0460005D */ bltz $v1, .L80049870 +/* 24AFC 800496FC 0040802D */ daddu $s0, $v0, $zero +/* 24B00 80049700 8E620074 */ lw $v0, 0x74($s3) +/* 24B04 80049704 1C400059 */ bgtz $v0, .L8004986C +/* 24B08 80049708 2442FFFF */ addiu $v0, $v0, -1 +/* 24B0C 8004970C 0240202D */ daddu $a0, $s2, $zero +/* 24B10 80049710 AE630074 */ sw $v1, 0x74($s3) +/* 24B14 80049714 AFA00010 */ sw $zero, 0x10($sp) +/* 24B18 80049718 8E86000C */ lw $a2, 0xc($s4) +/* 24B1C 8004971C 8E870010 */ lw $a3, 0x10($s4) +/* 24B20 80049720 0C01242D */ jal func_800490B4 +/* 24B24 80049724 0220282D */ daddu $a1, $s1, $zero +/* 24B28 80049728 1040004E */ beqz $v0, .L80049864 +/* 24B2C 8004972C 00000000 */ nop +/* 24B30 80049730 C60C0038 */ lwc1 $f12, 0x38($s0) +/* 24B34 80049734 3C02800F */ lui $v0, %hi(gPlayerStatusPtr) +/* 24B38 80049738 8C427B30 */ lw $v0, %lo(gPlayerStatusPtr)($v0) +/* 24B3C 8004973C C60E0040 */ lwc1 $f14, 0x40($s0) +/* 24B40 80049740 C602003C */ lwc1 $f2, 0x3c($s0) +/* 24B44 80049744 46006006 */ mov.s $f0, $f12 +/* 24B48 80049748 8C460028 */ lw $a2, 0x28($v0) +/* 24B4C 8004974C 8C470030 */ lw $a3, 0x30($v0) +/* 24B50 80049750 46007106 */ mov.s $f4, $f14 +/* 24B54 80049754 E7A00028 */ swc1 $f0, 0x28($sp) +/* 24B58 80049758 E7A2002C */ swc1 $f2, 0x2c($sp) +/* 24B5C 8004975C 0C00A720 */ jal atan2 +/* 24B60 80049760 E7A40030 */ swc1 $f4, 0x30($sp) +/* 24B64 80049764 C6820018 */ lwc1 $f2, 0x18($s4) +/* 24B68 80049768 E7A00038 */ swc1 $f0, 0x38($sp) +/* 24B6C 8004976C E7A00014 */ swc1 $f0, 0x14($sp) +/* 24B70 80049770 E7A20010 */ swc1 $f2, 0x10($sp) +/* 24B74 80049774 860200A8 */ lh $v0, 0xa8($s0) +/* 24B78 80049778 27A50028 */ addiu $a1, $sp, 0x28 +/* 24B7C 8004977C 44820000 */ mtc1 $v0, $f0 +/* 24B80 80049780 00000000 */ nop +/* 24B84 80049784 46800020 */ cvt.s.w $f0, $f0 +/* 24B88 80049788 E7A00018 */ swc1 $f0, 0x18($sp) +/* 24B8C 8004978C 860200A6 */ lh $v0, 0xa6($s0) +/* 24B90 80049790 27A6002C */ addiu $a2, $sp, 0x2c +/* 24B94 80049794 44820000 */ mtc1 $v0, $f0 +/* 24B98 80049798 00000000 */ nop +/* 24B9C 8004979C 46800020 */ cvt.s.w $f0, $f0 +/* 24BA0 800497A0 E7A0001C */ swc1 $f0, 0x1c($sp) +/* 24BA4 800497A4 8E040080 */ lw $a0, 0x80($s0) +/* 24BA8 800497A8 0C037711 */ jal func_800DDC44 +/* 24BAC 800497AC 27A70030 */ addiu $a3, $sp, 0x30 +/* 24BB0 800497B0 1440002C */ bnez $v0, .L80049864 +/* 24BB4 800497B4 0200202D */ daddu $a0, $s0, $zero +/* 24BB8 800497B8 240502F4 */ addiu $a1, $zero, 0x2f4 +/* 24BBC 800497BC C7A00038 */ lwc1 $f0, 0x38($sp) +/* 24BC0 800497C0 3C060020 */ lui $a2, 0x20 +/* 24BC4 800497C4 0C012530 */ jal func_800494C0 +/* 24BC8 800497C8 E600000C */ swc1 $f0, 0xc($s0) +/* 24BCC 800497CC 02A0202D */ daddu $a0, $s5, $zero +/* 24BD0 800497D0 0200282D */ daddu $a1, $s0, $zero +/* 24BD4 800497D4 0000302D */ daddu $a2, $zero, $zero +/* 24BD8 800497D8 84A300A8 */ lh $v1, 0xa8($a1) +/* 24BDC 800497DC 3C013F80 */ lui $at, 0x3f80 +/* 24BE0 800497E0 44810000 */ mtc1 $at, $f0 +/* 24BE4 800497E4 3C014000 */ lui $at, 0x4000 +/* 24BE8 800497E8 44811000 */ mtc1 $at, $f2 +/* 24BEC 800497EC 3C01C1A0 */ lui $at, 0xc1a0 +/* 24BF0 800497F0 44812000 */ mtc1 $at, $f4 +/* 24BF4 800497F4 2402000F */ addiu $v0, $zero, 0xf +/* 24BF8 800497F8 AFA2001C */ sw $v0, 0x1c($sp) +/* 24BFC 800497FC 44833000 */ mtc1 $v1, $f6 +/* 24C00 80049800 00000000 */ nop +/* 24C04 80049804 468031A0 */ cvt.s.w $f6, $f6 +/* 24C08 80049808 44073000 */ mfc1 $a3, $f6 +/* 24C0C 8004980C 27A20034 */ addiu $v0, $sp, 0x34 +/* 24C10 80049810 AFA20020 */ sw $v0, 0x20($sp) +/* 24C14 80049814 E7A00010 */ swc1 $f0, 0x10($sp) +/* 24C18 80049818 E7A20014 */ swc1 $f2, 0x14($sp) +/* 24C1C 8004981C 0C01BFA4 */ jal fx_emote +/* 24C20 80049820 E7A40018 */ swc1 $f4, 0x18($sp) +/* 24C24 80049824 2403FFBF */ addiu $v1, $zero, -0x41 +/* 24C28 80049828 8E2200B0 */ lw $v0, 0xb0($s1) +/* 24C2C 8004982C 8E240018 */ lw $a0, 0x18($s1) +/* 24C30 80049830 00431024 */ and $v0, $v0, $v1 +/* 24C34 80049834 2403FFDF */ addiu $v1, $zero, -0x21 +/* 24C38 80049838 00431024 */ and $v0, $v0, $v1 +/* 24C3C 8004983C AE2200B0 */ sw $v0, 0xb0($s1) +/* 24C40 80049840 9482002A */ lhu $v0, 0x2a($a0) +/* 24C44 80049844 30420001 */ andi $v0, $v0, 1 +/* 24C48 80049848 10400003 */ beqz $v0, .L80049858 +/* 24C4C 8004984C 2402000A */ addiu $v0, $zero, 0xa +/* 24C50 80049850 080126C8 */ j .L80049B20 +/* 24C54 80049854 AE620070 */ sw $v0, 0x70($s3) +.L80049858: +/* 24C58 80049858 2402000C */ addiu $v0, $zero, 0xc +/* 24C5C 8004985C 080126C8 */ j .L80049B20 +/* 24C60 80049860 AE620070 */ sw $v0, 0x70($s3) +.L80049864: +/* 24C64 80049864 8E620074 */ lw $v0, 0x74($s3) +/* 24C68 80049868 2442FFFF */ addiu $v0, $v0, -1 +.L8004986C: +/* 24C6C 8004986C AE620074 */ sw $v0, 0x74($s3) +.L80049870: +/* 24C70 80049870 8E2300D0 */ lw $v1, 0xd0($s1) +/* 24C74 80049874 C6000040 */ lwc1 $f0, 0x40($s0) +/* 24C78 80049878 C4620000 */ lwc1 $f2, ($v1) +/* 24C7C 8004987C 468010A0 */ cvt.s.w $f2, $f2 +/* 24C80 80049880 C4640008 */ lwc1 $f4, 8($v1) +/* 24C84 80049884 46802120 */ cvt.s.w $f4, $f4 +/* 24C88 80049888 E7A00010 */ swc1 $f0, 0x10($sp) +/* 24C8C 8004988C 8E2200D0 */ lw $v0, 0xd0($s1) +/* 24C90 80049890 44051000 */ mfc1 $a1, $f2 +/* 24C94 80049894 C440000C */ lwc1 $f0, 0xc($v0) +/* 24C98 80049898 46800020 */ cvt.s.w $f0, $f0 +/* 24C9C 8004989C E7A00014 */ swc1 $f0, 0x14($sp) +/* 24CA0 800498A0 8E2200D0 */ lw $v0, 0xd0($s1) +/* 24CA4 800498A4 44062000 */ mfc1 $a2, $f4 +/* 24CA8 800498A8 C4400010 */ lwc1 $f0, 0x10($v0) +/* 24CAC 800498AC 46800020 */ cvt.s.w $f0, $f0 +/* 24CB0 800498B0 E7A00018 */ swc1 $f0, 0x18($sp) +/* 24CB4 800498B4 8C640018 */ lw $a0, 0x18($v1) +/* 24CB8 800498B8 0C0123F5 */ jal is_point_within_region +/* 24CBC 800498BC 8E070038 */ lw $a3, 0x38($s0) +/* 24CC0 800498C0 10400064 */ beqz $v0, .L80049A54 +/* 24CC4 800498C4 00000000 */ nop +/* 24CC8 800498C8 8E060038 */ lw $a2, 0x38($s0) +/* 24CCC 800498CC 8E2200D0 */ lw $v0, 0xd0($s1) +/* 24CD0 800498D0 8E070040 */ lw $a3, 0x40($s0) +/* 24CD4 800498D4 C44C0000 */ lwc1 $f12, ($v0) +/* 24CD8 800498D8 46806320 */ cvt.s.w $f12, $f12 +/* 24CDC 800498DC C44E0008 */ lwc1 $f14, 8($v0) +/* 24CE0 800498E0 0C00A7B5 */ jal dist2D +/* 24CE4 800498E4 468073A0 */ cvt.s.w $f14, $f14 +/* 24CE8 800498E8 C6020018 */ lwc1 $f2, 0x18($s0) +/* 24CEC 800498EC 4600103C */ c.lt.s $f2, $f0 +/* 24CF0 800498F0 00000000 */ nop +/* 24CF4 800498F4 45000057 */ bc1f .L80049A54 +/* 24CF8 800498F8 00000000 */ nop +/* 24CFC 800498FC 8E2300B0 */ lw $v1, 0xb0($s1) +/* 24D00 80049900 30620020 */ andi $v0, $v1, 0x20 +/* 24D04 80049904 14400002 */ bnez $v0, .L80049910 +/* 24D08 80049908 34620060 */ ori $v0, $v1, 0x60 +/* 24D0C 8004990C AE2200B0 */ sw $v0, 0xb0($s1) +.L80049910: +/* 24D10 80049910 8E2200B0 */ lw $v0, 0xb0($s1) +/* 24D14 80049914 30420040 */ andi $v0, $v0, 0x40 +/* 24D18 80049918 10400013 */ beqz $v0, .L80049968 +/* 24D1C 8004991C 00000000 */ nop +/* 24D20 80049920 C60C0038 */ lwc1 $f12, 0x38($s0) +/* 24D24 80049924 8E2200D0 */ lw $v0, 0xd0($s1) +/* 24D28 80049928 C60E0040 */ lwc1 $f14, 0x40($s0) +/* 24D2C 8004992C C4460000 */ lwc1 $f6, ($v0) +/* 24D30 80049930 468031A0 */ cvt.s.w $f6, $f6 +/* 24D34 80049934 44063000 */ mfc1 $a2, $f6 +/* 24D38 80049938 C4460008 */ lwc1 $f6, 8($v0) +/* 24D3C 8004993C 468031A0 */ cvt.s.w $f6, $f6 +/* 24D40 80049940 44073000 */ mfc1 $a3, $f6 +/* 24D44 80049944 0C00A720 */ jal atan2 +/* 24D48 80049948 00000000 */ nop +/* 24D4C 8004994C 0C00A6C9 */ jal clamp_angle +/* 24D50 80049950 46000306 */ mov.s $f12, $f0 +/* 24D54 80049954 E600000C */ swc1 $f0, 0xc($s0) +/* 24D58 80049958 8E2200B0 */ lw $v0, 0xb0($s1) +/* 24D5C 8004995C 2403FFBF */ addiu $v1, $zero, -0x41 +/* 24D60 80049960 00431024 */ and $v0, $v0, $v1 +/* 24D64 80049964 AE2200B0 */ sw $v0, 0xb0($s1) +.L80049968: +/* 24D68 80049968 C6000018 */ lwc1 $f0, 0x18($s0) +/* 24D6C 8004996C C6020038 */ lwc1 $f2, 0x38($s0) +/* 24D70 80049970 46000021 */ cvt.d.s $f0, $f0 +/* 24D74 80049974 E7A20028 */ swc1 $f2, 0x28($sp) +/* 24D78 80049978 C602003C */ lwc1 $f2, 0x3c($s0) +/* 24D7C 8004997C C6040040 */ lwc1 $f4, 0x40($s0) +/* 24D80 80049980 46200000 */ add.d $f0, $f0, $f0 +/* 24D84 80049984 E7A2002C */ swc1 $f2, 0x2c($sp) +/* 24D88 80049988 E7A40030 */ swc1 $f4, 0x30($sp) +/* 24D8C 8004998C 46200020 */ cvt.s.d $f0, $f0 +/* 24D90 80049990 E7A00010 */ swc1 $f0, 0x10($sp) +/* 24D94 80049994 C600000C */ lwc1 $f0, 0xc($s0) +/* 24D98 80049998 E7A00014 */ swc1 $f0, 0x14($sp) +/* 24D9C 8004999C 860200A8 */ lh $v0, 0xa8($s0) +/* 24DA0 800499A0 27A50028 */ addiu $a1, $sp, 0x28 +/* 24DA4 800499A4 44820000 */ mtc1 $v0, $f0 +/* 24DA8 800499A8 00000000 */ nop +/* 24DAC 800499AC 46800020 */ cvt.s.w $f0, $f0 +/* 24DB0 800499B0 E7A00018 */ swc1 $f0, 0x18($sp) +/* 24DB4 800499B4 860200A6 */ lh $v0, 0xa6($s0) +/* 24DB8 800499B8 27A6002C */ addiu $a2, $sp, 0x2c +/* 24DBC 800499BC 44820000 */ mtc1 $v0, $f0 +/* 24DC0 800499C0 00000000 */ nop +/* 24DC4 800499C4 46800020 */ cvt.s.w $f0, $f0 +/* 24DC8 800499C8 E7A0001C */ swc1 $f0, 0x1c($sp) +/* 24DCC 800499CC 8E040080 */ lw $a0, 0x80($s0) +/* 24DD0 800499D0 0C037711 */ jal func_800DDC44 +/* 24DD4 800499D4 27A70030 */ addiu $a3, $sp, 0x30 +/* 24DD8 800499D8 10400026 */ beqz $v0, .L80049A74 +/* 24DDC 800499DC 24150001 */ addiu $s5, $zero, 1 +/* 24DE0 800499E0 C60C0038 */ lwc1 $f12, 0x38($s0) +/* 24DE4 800499E4 8E2200D0 */ lw $v0, 0xd0($s1) +/* 24DE8 800499E8 C60E0040 */ lwc1 $f14, 0x40($s0) +/* 24DEC 800499EC C4460000 */ lwc1 $f6, ($v0) +/* 24DF0 800499F0 468031A0 */ cvt.s.w $f6, $f6 +/* 24DF4 800499F4 44063000 */ mfc1 $a2, $f6 +/* 24DF8 800499F8 C4460008 */ lwc1 $f6, 8($v0) +/* 24DFC 800499FC 468031A0 */ cvt.s.w $f6, $f6 +/* 24E00 80049A00 44073000 */ mfc1 $a3, $f6 +/* 24E04 80049A04 0C00A720 */ jal atan2 +/* 24E08 80049A08 00000000 */ nop +/* 24E0C 80049A0C 0C00A6C9 */ jal clamp_angle +/* 24E10 80049A10 46000306 */ mov.s $f12, $f0 +/* 24E14 80049A14 0200202D */ daddu $a0, $s0, $zero +/* 24E18 80049A18 27A60038 */ addiu $a2, $sp, 0x38 +/* 24E1C 80049A1C 0000382D */ daddu $a3, $zero, $zero +/* 24E20 80049A20 2403FFBF */ addiu $v1, $zero, -0x41 +/* 24E24 80049A24 E7A00038 */ swc1 $f0, 0x38($sp) +/* 24E28 80049A28 8E2200B0 */ lw $v0, 0xb0($s1) +/* 24E2C 80049A2C 3C0540A0 */ lui $a1, 0x40a0 +/* 24E30 80049A30 00431024 */ and $v0, $v0, $v1 +/* 24E34 80049A34 AE2200B0 */ sw $v0, 0xb0($s1) +/* 24E38 80049A38 AFA00010 */ sw $zero, 0x10($sp) +/* 24E3C 80049A3C 0C0129E1 */ jal func_8004A784 +/* 24E40 80049A40 AFA00014 */ sw $zero, 0x14($sp) +/* 24E44 80049A44 C7A00038 */ lwc1 $f0, 0x38($sp) +/* 24E48 80049A48 E600000C */ swc1 $f0, 0xc($s0) +/* 24E4C 80049A4C 0801269D */ j .L80049A74 +/* 24E50 80049A50 24150001 */ addiu $s5, $zero, 1 +.L80049A54: +/* 24E54 80049A54 8E2300B0 */ lw $v1, 0xb0($s1) +/* 24E58 80049A58 30620020 */ andi $v0, $v1, 0x20 +/* 24E5C 80049A5C 10400005 */ beqz $v0, .L80049A74 +/* 24E60 80049A60 2402FFDF */ addiu $v0, $zero, -0x21 +/* 24E64 80049A64 00621024 */ and $v0, $v1, $v0 +/* 24E68 80049A68 2403FFBF */ addiu $v1, $zero, -0x41 +/* 24E6C 80049A6C 00431024 */ and $v0, $v0, $v1 +/* 24E70 80049A70 AE2200B0 */ sw $v0, 0xb0($s1) +.L80049A74: +/* 24E74 80049A74 8E2200D0 */ lw $v0, 0xd0($s1) +/* 24E78 80049A78 8C43000C */ lw $v1, 0xc($v0) +/* 24E7C 80049A7C 8C420010 */ lw $v0, 0x10($v0) +/* 24E80 80049A80 00621825 */ or $v1, $v1, $v0 +/* 24E84 80049A84 00751825 */ or $v1, $v1, $s5 +/* 24E88 80049A88 10600008 */ beqz $v1, .L80049AAC +/* 24E8C 80049A8C 00000000 */ nop +/* 24E90 80049A90 8602008C */ lh $v0, 0x8c($s0) +/* 24E94 80049A94 14400022 */ bnez $v0, .L80049B20 +/* 24E98 80049A98 00000000 */ nop +/* 24E9C 80049A9C 8E050018 */ lw $a1, 0x18($s0) +/* 24EA0 80049AA0 8E06000C */ lw $a2, 0xc($s0) +/* 24EA4 80049AA4 0C00EA95 */ jal npc_move_heading +/* 24EA8 80049AA8 0200202D */ daddu $a0, $s0, $zero +.L80049AAC: +/* 24EAC 80049AAC 8E820004 */ lw $v0, 4($s4) +/* 24EB0 80049AB0 1840001B */ blez $v0, .L80049B20 +/* 24EB4 80049AB4 00000000 */ nop +/* 24EB8 80049AB8 9602008E */ lhu $v0, 0x8e($s0) +/* 24EBC 80049ABC 2442FFFF */ addiu $v0, $v0, -1 +/* 24EC0 80049AC0 A602008E */ sh $v0, 0x8e($s0) +/* 24EC4 80049AC4 00021400 */ sll $v0, $v0, 0x10 +/* 24EC8 80049AC8 1C400015 */ bgtz $v0, .L80049B20 +/* 24ECC 80049ACC 240403E8 */ addiu $a0, $zero, 0x3e8 +/* 24ED0 80049AD0 24020002 */ addiu $v0, $zero, 2 +/* 24ED4 80049AD4 0C00A67F */ jal rand_int +/* 24ED8 80049AD8 AE620070 */ sw $v0, 0x70($s3) +/* 24EDC 80049ADC 3C035555 */ lui $v1, 0x5555 +/* 24EE0 80049AE0 34635556 */ ori $v1, $v1, 0x5556 +/* 24EE4 80049AE4 00430018 */ mult $v0, $v1 +/* 24EE8 80049AE8 000227C3 */ sra $a0, $v0, 0x1f +/* 24EEC 80049AEC 00004010 */ mfhi $t0 +/* 24EF0 80049AF0 01042023 */ subu $a0, $t0, $a0 +/* 24EF4 80049AF4 00041840 */ sll $v1, $a0, 1 +/* 24EF8 80049AF8 00641821 */ addu $v1, $v1, $a0 +/* 24EFC 80049AFC 00431023 */ subu $v0, $v0, $v1 +/* 24F00 80049B00 24420002 */ addiu $v0, $v0, 2 +/* 24F04 80049B04 AE620074 */ sw $v0, 0x74($s3) +/* 24F08 80049B08 8E82002C */ lw $v0, 0x2c($s4) +/* 24F0C 80049B0C 58400004 */ blezl $v0, .L80049B20 +/* 24F10 80049B10 AE600070 */ sw $zero, 0x70($s3) +/* 24F14 80049B14 8E820008 */ lw $v0, 8($s4) +/* 24F18 80049B18 58400001 */ blezl $v0, .L80049B20 +/* 24F1C 80049B1C AE600070 */ sw $zero, 0x70($s3) +.L80049B20: +/* 24F20 80049B20 8FBF0058 */ lw $ra, 0x58($sp) +/* 24F24 80049B24 8FB50054 */ lw $s5, 0x54($sp) +/* 24F28 80049B28 8FB40050 */ lw $s4, 0x50($sp) +/* 24F2C 80049B2C 8FB3004C */ lw $s3, 0x4c($sp) +/* 24F30 80049B30 8FB20048 */ lw $s2, 0x48($sp) +/* 24F34 80049B34 8FB10044 */ lw $s1, 0x44($sp) +/* 24F38 80049B38 8FB00040 */ lw $s0, 0x40($sp) +/* 24F3C 80049B3C 03E00008 */ jr $ra +/* 24F40 80049B40 27BD0060 */ addiu $sp, $sp, 0x60 diff --git a/asm/nonmatchings/code_23680/func_80049C04.s b/asm/nonmatchings/code_23680/func_80049C04.s new file mode 100644 index 0000000000..f737a68a6e --- /dev/null +++ b/asm/nonmatchings/code_23680/func_80049C04.s @@ -0,0 +1,151 @@ +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches + +glabel func_80049C04 +/* 25004 80049C04 27BDFFA8 */ addiu $sp, $sp, -0x58 +/* 25008 80049C08 AFB40048 */ sw $s4, 0x48($sp) +/* 2500C 80049C0C 0080A02D */ daddu $s4, $a0, $zero +/* 25010 80049C10 AFBF004C */ sw $ra, 0x4c($sp) +/* 25014 80049C14 AFB30044 */ sw $s3, 0x44($sp) +/* 25018 80049C18 AFB20040 */ sw $s2, 0x40($sp) +/* 2501C 80049C1C AFB1003C */ sw $s1, 0x3c($sp) +/* 25020 80049C20 AFB00038 */ sw $s0, 0x38($sp) +/* 25024 80049C24 F7B40050 */ sdc1 $f20, 0x50($sp) +/* 25028 80049C28 8E920148 */ lw $s2, 0x148($s4) +/* 2502C 80049C2C 00A0982D */ daddu $s3, $a1, $zero +/* 25030 80049C30 86440008 */ lh $a0, 8($s2) +/* 25034 80049C34 0C00EABB */ jal get_npc_unsafe +/* 25038 80049C38 00C0882D */ daddu $s1, $a2, $zero +/* 2503C 80049C3C 8E630014 */ lw $v1, 0x14($s3) +/* 25040 80049C40 0460004F */ bltz $v1, .L80049D80 +/* 25044 80049C44 0040802D */ daddu $s0, $v0, $zero +/* 25048 80049C48 0220202D */ daddu $a0, $s1, $zero +/* 2504C 80049C4C AFA00010 */ sw $zero, 0x10($sp) +/* 25050 80049C50 8E660024 */ lw $a2, 0x24($s3) +/* 25054 80049C54 8E670028 */ lw $a3, 0x28($s3) +/* 25058 80049C58 0C01242D */ jal func_800490B4 +/* 2505C 80049C5C 0240282D */ daddu $a1, $s2, $zero +/* 25060 80049C60 10400047 */ beqz $v0, .L80049D80 +/* 25064 80049C64 00000000 */ nop +/* 25068 80049C68 3C02800F */ lui $v0, %hi(gPlayerStatusPtr) +/* 2506C 80049C6C 8C427B30 */ lw $v0, %lo(gPlayerStatusPtr)($v0) +/* 25070 80049C70 C60C0038 */ lwc1 $f12, 0x38($s0) +/* 25074 80049C74 C602003C */ lwc1 $f2, 0x3c($s0) +/* 25078 80049C78 C6040040 */ lwc1 $f4, 0x40($s0) +/* 2507C 80049C7C 46006006 */ mov.s $f0, $f12 +/* 25080 80049C80 8C460028 */ lw $a2, 0x28($v0) +/* 25084 80049C84 8C470030 */ lw $a3, 0x30($v0) +/* 25088 80049C88 46002386 */ mov.s $f14, $f4 +/* 2508C 80049C8C E7A00028 */ swc1 $f0, 0x28($sp) +/* 25090 80049C90 E7A2002C */ swc1 $f2, 0x2c($sp) +/* 25094 80049C94 0C00A720 */ jal atan2 +/* 25098 80049C98 E7A40030 */ swc1 $f4, 0x30($sp) +/* 2509C 80049C9C C6620018 */ lwc1 $f2, 0x18($s3) +/* 250A0 80049CA0 46000506 */ mov.s $f20, $f0 +/* 250A4 80049CA4 E7B40014 */ swc1 $f20, 0x14($sp) +/* 250A8 80049CA8 E7A20010 */ swc1 $f2, 0x10($sp) +/* 250AC 80049CAC 860200A8 */ lh $v0, 0xa8($s0) +/* 250B0 80049CB0 27A50028 */ addiu $a1, $sp, 0x28 +/* 250B4 80049CB4 44820000 */ mtc1 $v0, $f0 +/* 250B8 80049CB8 00000000 */ nop +/* 250BC 80049CBC 46800020 */ cvt.s.w $f0, $f0 +/* 250C0 80049CC0 E7A00018 */ swc1 $f0, 0x18($sp) +/* 250C4 80049CC4 860200A6 */ lh $v0, 0xa6($s0) +/* 250C8 80049CC8 27A6002C */ addiu $a2, $sp, 0x2c +/* 250CC 80049CCC 44820000 */ mtc1 $v0, $f0 +/* 250D0 80049CD0 00000000 */ nop +/* 250D4 80049CD4 46800020 */ cvt.s.w $f0, $f0 +/* 250D8 80049CD8 E7A0001C */ swc1 $f0, 0x1c($sp) +/* 250DC 80049CDC 8E040080 */ lw $a0, 0x80($s0) +/* 250E0 80049CE0 0C037711 */ jal func_800DDC44 +/* 250E4 80049CE4 27A70030 */ addiu $a3, $sp, 0x30 +/* 250E8 80049CE8 14400025 */ bnez $v0, .L80049D80 +/* 250EC 80049CEC 0200202D */ daddu $a0, $s0, $zero +/* 250F0 80049CF0 240502F4 */ addiu $a1, $zero, 0x2f4 +/* 250F4 80049CF4 3C060020 */ lui $a2, 0x20 +/* 250F8 80049CF8 0C012530 */ jal func_800494C0 +/* 250FC 80049CFC E614000C */ swc1 $f20, 0xc($s0) +/* 25100 80049D00 0000202D */ daddu $a0, $zero, $zero +/* 25104 80049D04 0200282D */ daddu $a1, $s0, $zero +/* 25108 80049D08 0000302D */ daddu $a2, $zero, $zero +/* 2510C 80049D0C 84A300A8 */ lh $v1, 0xa8($a1) +/* 25110 80049D10 3C013F80 */ lui $at, 0x3f80 +/* 25114 80049D14 44810000 */ mtc1 $at, $f0 +/* 25118 80049D18 3C014000 */ lui $at, 0x4000 +/* 2511C 80049D1C 44811000 */ mtc1 $at, $f2 +/* 25120 80049D20 3C01C1A0 */ lui $at, 0xc1a0 +/* 25124 80049D24 44812000 */ mtc1 $at, $f4 +/* 25128 80049D28 2402000F */ addiu $v0, $zero, 0xf +/* 2512C 80049D2C AFA2001C */ sw $v0, 0x1c($sp) +/* 25130 80049D30 44833000 */ mtc1 $v1, $f6 +/* 25134 80049D34 00000000 */ nop +/* 25138 80049D38 468031A0 */ cvt.s.w $f6, $f6 +/* 2513C 80049D3C 44073000 */ mfc1 $a3, $f6 +/* 25140 80049D40 27A20034 */ addiu $v0, $sp, 0x34 +/* 25144 80049D44 AFA20020 */ sw $v0, 0x20($sp) +/* 25148 80049D48 E7A00010 */ swc1 $f0, 0x10($sp) +/* 2514C 80049D4C E7A20014 */ swc1 $f2, 0x14($sp) +/* 25150 80049D50 0C01BFA4 */ jal fx_emote +/* 25154 80049D54 E7A40018 */ swc1 $f4, 0x18($sp) +/* 25158 80049D58 8E420018 */ lw $v0, 0x18($s2) +/* 2515C 80049D5C 9442002A */ lhu $v0, 0x2a($v0) +/* 25160 80049D60 30420001 */ andi $v0, $v0, 1 +/* 25164 80049D64 10400003 */ beqz $v0, .L80049D74 +/* 25168 80049D68 2402000A */ addiu $v0, $zero, 0xa +/* 2516C 80049D6C 08012786 */ j .L80049E18 +/* 25170 80049D70 AE820070 */ sw $v0, 0x70($s4) +.L80049D74: +/* 25174 80049D74 2402000C */ addiu $v0, $zero, 0xc +/* 25178 80049D78 08012786 */ j .L80049E18 +/* 2517C 80049D7C AE820070 */ sw $v0, 0x70($s4) +.L80049D80: +/* 25180 80049D80 8602008C */ lh $v0, 0x8c($s0) +/* 25184 80049D84 14400024 */ bnez $v0, .L80049E18 +/* 25188 80049D88 00000000 */ nop +/* 2518C 80049D8C 9602008E */ lhu $v0, 0x8e($s0) +/* 25190 80049D90 2442FFFF */ addiu $v0, $v0, -1 +/* 25194 80049D94 A602008E */ sh $v0, 0x8e($s0) +/* 25198 80049D98 00021400 */ sll $v0, $v0, 0x10 +/* 2519C 80049D9C 1C40001E */ bgtz $v0, .L80049E18 +/* 251A0 80049DA0 00000000 */ nop +/* 251A4 80049DA4 8E820074 */ lw $v0, 0x74($s4) +/* 251A8 80049DA8 2442FFFF */ addiu $v0, $v0, -1 +/* 251AC 80049DAC 10400019 */ beqz $v0, .L80049E14 +/* 251B0 80049DB0 AE820074 */ sw $v0, 0x74($s4) +/* 251B4 80049DB4 8E420018 */ lw $v0, 0x18($s2) +/* 251B8 80049DB8 9442002A */ lhu $v0, 0x2a($v0) +/* 251BC 80049DBC 30420010 */ andi $v0, $v0, 0x10 +/* 251C0 80049DC0 14400007 */ bnez $v0, .L80049DE0 +/* 251C4 80049DC4 00000000 */ nop +/* 251C8 80049DC8 C600000C */ lwc1 $f0, 0xc($s0) +/* 251CC 80049DCC 3C014334 */ lui $at, 0x4334 +/* 251D0 80049DD0 44816000 */ mtc1 $at, $f12 +/* 251D4 80049DD4 0C00A6C9 */ jal clamp_angle +/* 251D8 80049DD8 460C0300 */ add.s $f12, $f0, $f12 +/* 251DC 80049DDC E600000C */ swc1 $f0, 0xc($s0) +.L80049DE0: +/* 251E0 80049DE0 8E640008 */ lw $a0, 8($s3) +/* 251E4 80049DE4 000417C2 */ srl $v0, $a0, 0x1f +/* 251E8 80049DE8 00822021 */ addu $a0, $a0, $v0 +/* 251EC 80049DEC 00042043 */ sra $a0, $a0, 1 +/* 251F0 80049DF0 0C00A67F */ jal rand_int +/* 251F4 80049DF4 24840001 */ addiu $a0, $a0, 1 +/* 251F8 80049DF8 8E630008 */ lw $v1, 8($s3) +/* 251FC 80049DFC 000327C2 */ srl $a0, $v1, 0x1f +/* 25200 80049E00 00641821 */ addu $v1, $v1, $a0 +/* 25204 80049E04 00031843 */ sra $v1, $v1, 1 +/* 25208 80049E08 00621821 */ addu $v1, $v1, $v0 +/* 2520C 80049E0C 08012786 */ j .L80049E18 +/* 25210 80049E10 A603008E */ sh $v1, 0x8e($s0) +.L80049E14: +/* 25214 80049E14 AE800070 */ sw $zero, 0x70($s4) +.L80049E18: +/* 25218 80049E18 8FBF004C */ lw $ra, 0x4c($sp) +/* 2521C 80049E1C 8FB40048 */ lw $s4, 0x48($sp) +/* 25220 80049E20 8FB30044 */ lw $s3, 0x44($sp) +/* 25224 80049E24 8FB20040 */ lw $s2, 0x40($sp) +/* 25228 80049E28 8FB1003C */ lw $s1, 0x3c($sp) +/* 2522C 80049E2C 8FB00038 */ lw $s0, 0x38($sp) +/* 25230 80049E30 D7B40050 */ ldc1 $f20, 0x50($sp) +/* 25234 80049E34 03E00008 */ jr $ra +/* 25238 80049E38 27BD0058 */ addiu $sp, $sp, 0x58 diff --git a/asm/nonmatchings/code_23680/func_80049E3C.s b/asm/nonmatchings/code_23680/func_80049E3C.s new file mode 100644 index 0000000000..49174f5647 --- /dev/null +++ b/asm/nonmatchings/code_23680/func_80049E3C.s @@ -0,0 +1,40 @@ +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches + +glabel func_80049E3C +/* 2523C 80049E3C 27BDFFE0 */ addiu $sp, $sp, -0x20 +/* 25240 80049E40 AFB20018 */ sw $s2, 0x18($sp) +/* 25244 80049E44 0080902D */ daddu $s2, $a0, $zero +/* 25248 80049E48 AFBF001C */ sw $ra, 0x1c($sp) +/* 2524C 80049E4C AFB10014 */ sw $s1, 0x14($sp) +/* 25250 80049E50 AFB00010 */ sw $s0, 0x10($sp) +/* 25254 80049E54 8E510148 */ lw $s1, 0x148($s2) +/* 25258 80049E58 0C00EABB */ jal get_npc_unsafe +/* 2525C 80049E5C 86240008 */ lh $a0, 8($s1) +/* 25260 80049E60 0040802D */ daddu $s0, $v0, $zero +/* 25264 80049E64 0200202D */ daddu $a0, $s0, $zero +/* 25268 80049E68 240503E1 */ addiu $a1, $zero, 0x3e1 +/* 2526C 80049E6C 0C012530 */ jal func_800494C0 +/* 25270 80049E70 0000302D */ daddu $a2, $zero, $zero +/* 25274 80049E74 8E2200CC */ lw $v0, 0xcc($s1) +/* 25278 80049E78 3C014120 */ lui $at, 0x4120 +/* 2527C 80049E7C 44812000 */ mtc1 $at, $f4 +/* 25280 80049E80 3C014020 */ lui $at, 0x4020 +/* 25284 80049E84 44810000 */ mtc1 $at, $f0 +/* 25288 80049E88 C602003C */ lwc1 $f2, 0x3c($s0) +/* 2528C 80049E8C 8C430010 */ lw $v1, 0x10($v0) +/* 25290 80049E90 8E020000 */ lw $v0, ($s0) +/* 25294 80049E94 E604001C */ swc1 $f4, 0x1c($s0) +/* 25298 80049E98 E6000014 */ swc1 $f0, 0x14($s0) +/* 2529C 80049E9C E6020064 */ swc1 $f2, 0x64($s0) +/* 252A0 80049EA0 34420800 */ ori $v0, $v0, 0x800 +/* 252A4 80049EA4 AE020000 */ sw $v0, ($s0) +/* 252A8 80049EA8 2402000B */ addiu $v0, $zero, 0xb +/* 252AC 80049EAC AE030028 */ sw $v1, 0x28($s0) +/* 252B0 80049EB0 AE420070 */ sw $v0, 0x70($s2) +/* 252B4 80049EB4 8FBF001C */ lw $ra, 0x1c($sp) +/* 252B8 80049EB8 8FB20018 */ lw $s2, 0x18($sp) +/* 252BC 80049EBC 8FB10014 */ lw $s1, 0x14($sp) +/* 252C0 80049EC0 8FB00010 */ lw $s0, 0x10($sp) +/* 252C4 80049EC4 03E00008 */ jr $ra +/* 252C8 80049EC8 27BD0020 */ addiu $sp, $sp, 0x20 diff --git a/asm/nonmatchings/code_23680/func_80049ECC.s b/asm/nonmatchings/code_23680/func_80049ECC.s new file mode 100644 index 0000000000..2953486c16 --- /dev/null +++ b/asm/nonmatchings/code_23680/func_80049ECC.s @@ -0,0 +1,51 @@ +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches + +glabel func_80049ECC +/* 252CC 80049ECC 27BDFFE8 */ addiu $sp, $sp, -0x18 +/* 252D0 80049ED0 AFB00010 */ sw $s0, 0x10($sp) +/* 252D4 80049ED4 0080802D */ daddu $s0, $a0, $zero +/* 252D8 80049ED8 AFBF0014 */ sw $ra, 0x14($sp) +/* 252DC 80049EDC 8E020148 */ lw $v0, 0x148($s0) +/* 252E0 80049EE0 0C00EABB */ jal get_npc_unsafe +/* 252E4 80049EE4 84440008 */ lh $a0, 8($v0) +/* 252E8 80049EE8 0040202D */ daddu $a0, $v0, $zero +/* 252EC 80049EEC C480001C */ lwc1 $f0, 0x1c($a0) +/* 252F0 80049EF0 44801000 */ mtc1 $zero, $f2 +/* 252F4 80049EF4 44801800 */ mtc1 $zero, $f3 +/* 252F8 80049EF8 46000021 */ cvt.d.s $f0, $f0 +/* 252FC 80049EFC 4622003E */ c.le.d $f0, $f2 +/* 25300 80049F00 00000000 */ nop +/* 25304 80049F04 45000009 */ bc1f .L80049F2C +/* 25308 80049F08 0000182D */ daddu $v1, $zero, $zero +/* 2530C 80049F0C C480003C */ lwc1 $f0, 0x3c($a0) +/* 25310 80049F10 C4820064 */ lwc1 $f2, 0x64($a0) +/* 25314 80049F14 4602003E */ c.le.s $f0, $f2 +/* 25318 80049F18 00000000 */ nop +/* 2531C 80049F1C 45000003 */ bc1f .L80049F2C +/* 25320 80049F20 00000000 */ nop +/* 25324 80049F24 E482003C */ swc1 $f2, 0x3c($a0) +/* 25328 80049F28 24030001 */ addiu $v1, $zero, 1 +.L80049F2C: +/* 2532C 80049F2C 14600009 */ bnez $v1, .L80049F54 +/* 25330 80049F30 2403F7FF */ addiu $v1, $zero, -0x801 +/* 25334 80049F34 C484003C */ lwc1 $f4, 0x3c($a0) +/* 25338 80049F38 C480001C */ lwc1 $f0, 0x1c($a0) +/* 2533C 80049F3C 46002100 */ add.s $f4, $f4, $f0 +/* 25340 80049F40 C4820014 */ lwc1 $f2, 0x14($a0) +/* 25344 80049F44 46020001 */ sub.s $f0, $f0, $f2 +/* 25348 80049F48 E484003C */ swc1 $f4, 0x3c($a0) +/* 2534C 80049F4C 080127DB */ j .L80049F6C +/* 25350 80049F50 E480001C */ swc1 $f0, 0x1c($a0) +.L80049F54: +/* 25354 80049F54 8C820000 */ lw $v0, ($a0) +/* 25358 80049F58 AC80001C */ sw $zero, 0x1c($a0) +/* 2535C 80049F5C 00431024 */ and $v0, $v0, $v1 +/* 25360 80049F60 AC820000 */ sw $v0, ($a0) +/* 25364 80049F64 2402000C */ addiu $v0, $zero, 0xc +/* 25368 80049F68 AE020070 */ sw $v0, 0x70($s0) +.L80049F6C: +/* 2536C 80049F6C 8FBF0014 */ lw $ra, 0x14($sp) +/* 25370 80049F70 8FB00010 */ lw $s0, 0x10($sp) +/* 25374 80049F74 03E00008 */ jr $ra +/* 25378 80049F78 27BD0018 */ addiu $sp, $sp, 0x18 diff --git a/asm/nonmatchings/code_23680/func_80049F7C.s b/asm/nonmatchings/code_23680/func_80049F7C.s new file mode 100644 index 0000000000..e55a4ab24e --- /dev/null +++ b/asm/nonmatchings/code_23680/func_80049F7C.s @@ -0,0 +1,115 @@ +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches + +glabel func_80049F7C +/* 2537C 80049F7C 27BDFFD0 */ addiu $sp, $sp, -0x30 +/* 25380 80049F80 AFB40020 */ sw $s4, 0x20($sp) +/* 25384 80049F84 0080A02D */ daddu $s4, $a0, $zero +/* 25388 80049F88 AFBF0024 */ sw $ra, 0x24($sp) +/* 2538C 80049F8C AFB3001C */ sw $s3, 0x1c($sp) +/* 25390 80049F90 AFB20018 */ sw $s2, 0x18($sp) +/* 25394 80049F94 AFB10014 */ sw $s1, 0x14($sp) +/* 25398 80049F98 AFB00010 */ sw $s0, 0x10($sp) +/* 2539C 80049F9C F7B40028 */ sdc1 $f20, 0x28($sp) +/* 253A0 80049FA0 8E930148 */ lw $s3, 0x148($s4) +/* 253A4 80049FA4 86640008 */ lh $a0, 8($s3) +/* 253A8 80049FA8 0C00EABB */ jal get_npc_unsafe +/* 253AC 80049FAC 00A0902D */ daddu $s2, $a1, $zero +/* 253B0 80049FB0 3C04800F */ lui $a0, %hi(gPlayerStatusPtr) +/* 253B4 80049FB4 8C847B30 */ lw $a0, %lo(gPlayerStatusPtr)($a0) +/* 253B8 80049FB8 908300B4 */ lbu $v1, 0xb4($a0) +/* 253BC 80049FBC 0040802D */ daddu $s0, $v0, $zero +/* 253C0 80049FC0 2462FFFD */ addiu $v0, $v1, -3 +/* 253C4 80049FC4 2C420003 */ sltiu $v0, $v0, 3 +/* 253C8 80049FC8 14400006 */ bnez $v0, .L80049FE4 +/* 253CC 80049FCC 0000882D */ daddu $s1, $zero, $zero +/* 253D0 80049FD0 00031600 */ sll $v0, $v1, 0x18 +/* 253D4 80049FD4 00021603 */ sra $v0, $v0, 0x18 +/* 253D8 80049FD8 24030008 */ addiu $v1, $zero, 8 +/* 253DC 80049FDC 1443000F */ bne $v0, $v1, .L8004A01C +/* 253E0 80049FE0 00000000 */ nop +.L80049FE4: +/* 253E4 80049FE4 C60C0038 */ lwc1 $f12, 0x38($s0) +/* 253E8 80049FE8 C60E0040 */ lwc1 $f14, 0x40($s0) +/* 253EC 80049FEC 8C860028 */ lw $a2, 0x28($a0) +/* 253F0 80049FF0 0C00A7B5 */ jal dist2D +/* 253F4 80049FF4 8C870030 */ lw $a3, 0x30($a0) +/* 253F8 80049FF8 860200A6 */ lh $v0, 0xa6($s0) +/* 253FC 80049FFC 46000021 */ cvt.d.s $f0, $f0 +/* 25400 8004A000 44821000 */ mtc1 $v0, $f2 +/* 25404 8004A004 00000000 */ nop +/* 25408 8004A008 468010A1 */ cvt.d.w $f2, $f2 +/* 2540C 8004A00C 4622003C */ c.lt.d $f0, $f2 +/* 25410 8004A010 00000000 */ nop +/* 25414 8004A014 45030001 */ bc1tl .L8004A01C +/* 25418 8004A018 24110001 */ addiu $s1, $zero, 1 +.L8004A01C: +/* 2541C 8004A01C 56200031 */ bnel $s1, $zero, .L8004A0E4 +/* 25420 8004A020 A600008E */ sh $zero, 0x8e($s0) +/* 25424 8004A024 C60C0038 */ lwc1 $f12, 0x38($s0) +/* 25428 8004A028 3C02800F */ lui $v0, %hi(gPlayerStatusPtr) +/* 2542C 8004A02C 8C427B30 */ lw $v0, %lo(gPlayerStatusPtr)($v0) +/* 25430 8004A030 C60E0040 */ lwc1 $f14, 0x40($s0) +/* 25434 8004A034 8C460028 */ lw $a2, 0x28($v0) +/* 25438 8004A038 0C00A720 */ jal atan2 +/* 2543C 8004A03C 8C470030 */ lw $a3, 0x30($v0) +/* 25440 8004A040 46000506 */ mov.s $f20, $f0 +/* 25444 8004A044 C60C000C */ lwc1 $f12, 0xc($s0) +/* 25448 8004A048 0C00A70A */ jal get_clamped_angle_diff +/* 2544C 8004A04C 4600A386 */ mov.s $f14, $f20 +/* 25450 8004A050 46000086 */ mov.s $f2, $f0 +/* 25454 8004A054 8E42001C */ lw $v0, 0x1c($s2) +/* 25458 8004A058 46001005 */ abs.s $f0, $f2 +/* 2545C 8004A05C 44822000 */ mtc1 $v0, $f4 +/* 25460 8004A060 00000000 */ nop +/* 25464 8004A064 46802120 */ cvt.s.w $f4, $f4 +/* 25468 8004A068 4600203C */ c.lt.s $f4, $f0 +/* 2546C 8004A06C 00000000 */ nop +/* 25470 8004A070 4500000D */ bc1f .L8004A0A8 +/* 25474 8004A074 00000000 */ nop +/* 25478 8004A078 44800000 */ mtc1 $zero, $f0 +/* 2547C 8004A07C C614000C */ lwc1 $f20, 0xc($s0) +/* 25480 8004A080 4600103C */ c.lt.s $f2, $f0 +/* 25484 8004A084 00000000 */ nop +/* 25488 8004A088 45000006 */ bc1f .L8004A0A4 +/* 2548C 8004A08C 00021023 */ negu $v0, $v0 +/* 25490 8004A090 44820000 */ mtc1 $v0, $f0 +/* 25494 8004A094 00000000 */ nop +/* 25498 8004A098 46800020 */ cvt.s.w $f0, $f0 +/* 2549C 8004A09C 0801282A */ j .L8004A0A8 +/* 254A0 8004A0A0 4600A500 */ add.s $f20, $f20, $f0 +.L8004A0A4: +/* 254A4 8004A0A4 4604A500 */ add.s $f20, $f20, $f4 +.L8004A0A8: +/* 254A8 8004A0A8 0C00A6C9 */ jal clamp_angle +/* 254AC 8004A0AC 4600A306 */ mov.s $f12, $f20 +/* 254B0 8004A0B0 E600000C */ swc1 $f0, 0xc($s0) +/* 254B4 8004A0B4 8E440020 */ lw $a0, 0x20($s2) +/* 254B8 8004A0B8 000417C2 */ srl $v0, $a0, 0x1f +/* 254BC 8004A0BC 00822021 */ addu $a0, $a0, $v0 +/* 254C0 8004A0C0 00042043 */ sra $a0, $a0, 1 +/* 254C4 8004A0C4 0C00A67F */ jal rand_int +/* 254C8 8004A0C8 24840001 */ addiu $a0, $a0, 1 +/* 254CC 8004A0CC 8E430020 */ lw $v1, 0x20($s2) +/* 254D0 8004A0D0 000327C2 */ srl $a0, $v1, 0x1f +/* 254D4 8004A0D4 00641821 */ addu $v1, $v1, $a0 +/* 254D8 8004A0D8 00031843 */ sra $v1, $v1, 1 +/* 254DC 8004A0DC 00621821 */ addu $v1, $v1, $v0 +/* 254E0 8004A0E0 A603008E */ sh $v1, 0x8e($s0) +.L8004A0E4: +/* 254E4 8004A0E4 8E6200CC */ lw $v0, 0xcc($s3) +/* 254E8 8004A0E8 8C42000C */ lw $v0, 0xc($v0) +/* 254EC 8004A0EC AE020028 */ sw $v0, 0x28($s0) +/* 254F0 8004A0F0 C6400018 */ lwc1 $f0, 0x18($s2) +/* 254F4 8004A0F4 2402000D */ addiu $v0, $zero, 0xd +/* 254F8 8004A0F8 E6000018 */ swc1 $f0, 0x18($s0) +/* 254FC 8004A0FC AE820070 */ sw $v0, 0x70($s4) +/* 25500 8004A100 8FBF0024 */ lw $ra, 0x24($sp) +/* 25504 8004A104 8FB40020 */ lw $s4, 0x20($sp) +/* 25508 8004A108 8FB3001C */ lw $s3, 0x1c($sp) +/* 2550C 8004A10C 8FB20018 */ lw $s2, 0x18($sp) +/* 25510 8004A110 8FB10014 */ lw $s1, 0x14($sp) +/* 25514 8004A114 8FB00010 */ lw $s0, 0x10($sp) +/* 25518 8004A118 D7B40028 */ ldc1 $f20, 0x28($sp) +/* 2551C 8004A11C 03E00008 */ jr $ra +/* 25520 8004A120 27BD0030 */ addiu $sp, $sp, 0x30 diff --git a/asm/nonmatchings/code_23680/func_8004A124.s b/asm/nonmatchings/code_23680/func_8004A124.s new file mode 100644 index 0000000000..1a71f3a782 --- /dev/null +++ b/asm/nonmatchings/code_23680/func_8004A124.s @@ -0,0 +1,188 @@ +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches + +glabel func_8004A124 +/* 25524 8004A124 27BDFFA8 */ addiu $sp, $sp, -0x58 +/* 25528 8004A128 AFB30044 */ sw $s3, 0x44($sp) +/* 2552C 8004A12C 0080982D */ daddu $s3, $a0, $zero +/* 25530 8004A130 AFBF0048 */ sw $ra, 0x48($sp) +/* 25534 8004A134 AFB20040 */ sw $s2, 0x40($sp) +/* 25538 8004A138 AFB1003C */ sw $s1, 0x3c($sp) +/* 2553C 8004A13C AFB00038 */ sw $s0, 0x38($sp) +/* 25540 8004A140 F7B40050 */ sdc1 $f20, 0x50($sp) +/* 25544 8004A144 8E720148 */ lw $s2, 0x148($s3) +/* 25548 8004A148 00A0882D */ daddu $s1, $a1, $zero +/* 2554C 8004A14C 86440008 */ lh $a0, 8($s2) +/* 25550 8004A150 0C00EABB */ jal get_npc_unsafe +/* 25554 8004A154 00C0802D */ daddu $s0, $a2, $zero +/* 25558 8004A158 0200202D */ daddu $a0, $s0, $zero +/* 2555C 8004A15C 0240282D */ daddu $a1, $s2, $zero +/* 25560 8004A160 24030001 */ addiu $v1, $zero, 1 +/* 25564 8004A164 AFA30010 */ sw $v1, 0x10($sp) +/* 25568 8004A168 8E260024 */ lw $a2, 0x24($s1) +/* 2556C 8004A16C 8E270028 */ lw $a3, 0x28($s1) +/* 25570 8004A170 0C01242D */ jal func_800490B4 +/* 25574 8004A174 0040802D */ daddu $s0, $v0, $zero +/* 25578 8004A178 1440001D */ bnez $v0, .L8004A1F0 +/* 2557C 8004A17C 24040002 */ addiu $a0, $zero, 2 +/* 25580 8004A180 0200282D */ daddu $a1, $s0, $zero +/* 25584 8004A184 0000302D */ daddu $a2, $zero, $zero +/* 25588 8004A188 860300A8 */ lh $v1, 0xa8($s0) +/* 2558C 8004A18C 3C013F80 */ lui $at, 0x3f80 +/* 25590 8004A190 44810000 */ mtc1 $at, $f0 +/* 25594 8004A194 3C014000 */ lui $at, 0x4000 +/* 25598 8004A198 44811000 */ mtc1 $at, $f2 +/* 2559C 8004A19C 3C01C1A0 */ lui $at, 0xc1a0 +/* 255A0 8004A1A0 44812000 */ mtc1 $at, $f4 +/* 255A4 8004A1A4 2402000F */ addiu $v0, $zero, 0xf +/* 255A8 8004A1A8 AFA2001C */ sw $v0, 0x1c($sp) +/* 255AC 8004A1AC 44833000 */ mtc1 $v1, $f6 +/* 255B0 8004A1B0 00000000 */ nop +/* 255B4 8004A1B4 468031A0 */ cvt.s.w $f6, $f6 +/* 255B8 8004A1B8 44073000 */ mfc1 $a3, $f6 +/* 255BC 8004A1BC 27A20028 */ addiu $v0, $sp, 0x28 +/* 255C0 8004A1C0 AFA20020 */ sw $v0, 0x20($sp) +/* 255C4 8004A1C4 E7A00010 */ swc1 $f0, 0x10($sp) +/* 255C8 8004A1C8 E7A20014 */ swc1 $f2, 0x14($sp) +/* 255CC 8004A1CC 0C01BFA4 */ jal fx_emote +/* 255D0 8004A1D0 E7A40018 */ swc1 $f4, 0x18($sp) +/* 255D4 8004A1D4 8E4200CC */ lw $v0, 0xcc($s2) +/* 255D8 8004A1D8 8C430000 */ lw $v1, ($v0) +/* 255DC 8004A1DC 24020014 */ addiu $v0, $zero, 0x14 +/* 255E0 8004A1E0 A602008E */ sh $v0, 0x8e($s0) +/* 255E4 8004A1E4 2402000E */ addiu $v0, $zero, 0xe +/* 255E8 8004A1E8 080128F1 */ j .L8004A3C4 +/* 255EC 8004A1EC AE030028 */ sw $v1, 0x28($s0) +.L8004A1F0: +/* 255F0 8004A1F0 8E420018 */ lw $v0, 0x18($s2) +/* 255F4 8004A1F4 9442002A */ lhu $v0, 0x2a($v0) +/* 255F8 8004A1F8 30420004 */ andi $v0, $v0, 4 +/* 255FC 8004A1FC 1040004A */ beqz $v0, .L8004A328 +/* 25600 8004A200 0200202D */ daddu $a0, $s0, $zero +/* 25604 8004A204 3C02800F */ lui $v0, %hi(gPlayerStatusPtr) +/* 25608 8004A208 8C427B30 */ lw $v0, %lo(gPlayerStatusPtr)($v0) +/* 2560C 8004A20C C60C0038 */ lwc1 $f12, 0x38($s0) +/* 25610 8004A210 C60E0040 */ lwc1 $f14, 0x40($s0) +/* 25614 8004A214 8C460028 */ lw $a2, 0x28($v0) +/* 25618 8004A218 0C00A7B5 */ jal dist2D +/* 2561C 8004A21C 8C470030 */ lw $a3, 0x30($v0) +/* 25620 8004A220 C6020018 */ lwc1 $f2, 0x18($s0) +/* 25624 8004A224 3C014014 */ lui $at, 0x4014 +/* 25628 8004A228 44812800 */ mtc1 $at, $f5 +/* 2562C 8004A22C 44802000 */ mtc1 $zero, $f4 +/* 25630 8004A230 460010A1 */ cvt.d.s $f2, $f2 +/* 25634 8004A234 46241082 */ mul.d $f2, $f2, $f4 +/* 25638 8004A238 00000000 */ nop +/* 2563C 8004A23C 46000021 */ cvt.d.s $f0, $f0 +/* 25640 8004A240 4620103C */ c.lt.d $f2, $f0 +/* 25644 8004A244 00000000 */ nop +/* 25648 8004A248 45000036 */ bc1f .L8004A324 +/* 2564C 8004A24C 27A5002C */ addiu $a1, $sp, 0x2c +/* 25650 8004A250 C6000038 */ lwc1 $f0, 0x38($s0) +/* 25654 8004A254 C602003C */ lwc1 $f2, 0x3c($s0) +/* 25658 8004A258 C6040040 */ lwc1 $f4, 0x40($s0) +/* 2565C 8004A25C 3C013F80 */ lui $at, 0x3f80 +/* 25660 8004A260 4481A000 */ mtc1 $at, $f20 +/* 25664 8004A264 E7A0002C */ swc1 $f0, 0x2c($sp) +/* 25668 8004A268 E7A20030 */ swc1 $f2, 0x30($sp) +/* 2566C 8004A26C E7A40034 */ swc1 $f4, 0x34($sp) +/* 25670 8004A270 E7B40010 */ swc1 $f20, 0x10($sp) +/* 25674 8004A274 C600000C */ lwc1 $f0, 0xc($s0) +/* 25678 8004A278 E7A00014 */ swc1 $f0, 0x14($sp) +/* 2567C 8004A27C 860200A8 */ lh $v0, 0xa8($s0) +/* 25680 8004A280 44820000 */ mtc1 $v0, $f0 +/* 25684 8004A284 00000000 */ nop +/* 25688 8004A288 46800020 */ cvt.s.w $f0, $f0 +/* 2568C 8004A28C E7A00018 */ swc1 $f0, 0x18($sp) +/* 25690 8004A290 860200A6 */ lh $v0, 0xa6($s0) +/* 25694 8004A294 27A60030 */ addiu $a2, $sp, 0x30 +/* 25698 8004A298 44820000 */ mtc1 $v0, $f0 +/* 2569C 8004A29C 00000000 */ nop +/* 256A0 8004A2A0 46800020 */ cvt.s.w $f0, $f0 +/* 256A4 8004A2A4 E7A0001C */ swc1 $f0, 0x1c($sp) +/* 256A8 8004A2A8 8E040080 */ lw $a0, 0x80($s0) +/* 256AC 8004A2AC 0C037711 */ jal func_800DDC44 +/* 256B0 8004A2B0 27A70034 */ addiu $a3, $sp, 0x34 +/* 256B4 8004A2B4 1040001B */ beqz $v0, .L8004A324 +/* 256B8 8004A2B8 0200282D */ daddu $a1, $s0, $zero +/* 256BC 8004A2BC 24040002 */ addiu $a0, $zero, 2 +/* 256C0 8004A2C0 0000302D */ daddu $a2, $zero, $zero +/* 256C4 8004A2C4 860300A8 */ lh $v1, 0xa8($s0) +/* 256C8 8004A2C8 3C014000 */ lui $at, 0x4000 +/* 256CC 8004A2CC 44810000 */ mtc1 $at, $f0 +/* 256D0 8004A2D0 3C01C1A0 */ lui $at, 0xc1a0 +/* 256D4 8004A2D4 44811000 */ mtc1 $at, $f2 +/* 256D8 8004A2D8 2402000C */ addiu $v0, $zero, 0xc +/* 256DC 8004A2DC AFA2001C */ sw $v0, 0x1c($sp) +/* 256E0 8004A2E0 44833000 */ mtc1 $v1, $f6 +/* 256E4 8004A2E4 00000000 */ nop +/* 256E8 8004A2E8 468031A0 */ cvt.s.w $f6, $f6 +/* 256EC 8004A2EC 44073000 */ mfc1 $a3, $f6 +/* 256F0 8004A2F0 27A20028 */ addiu $v0, $sp, 0x28 +/* 256F4 8004A2F4 E7B40010 */ swc1 $f20, 0x10($sp) +/* 256F8 8004A2F8 AFA20020 */ sw $v0, 0x20($sp) +/* 256FC 8004A2FC E7A00014 */ swc1 $f0, 0x14($sp) +/* 25700 8004A300 0C01BFA4 */ jal fx_emote +/* 25704 8004A304 E7A20018 */ swc1 $f2, 0x18($sp) +/* 25708 8004A308 8E4200CC */ lw $v0, 0xcc($s2) +/* 2570C 8004A30C 8C430000 */ lw $v1, ($v0) +/* 25710 8004A310 2402000F */ addiu $v0, $zero, 0xf +/* 25714 8004A314 A602008E */ sh $v0, 0x8e($s0) +/* 25718 8004A318 2402000E */ addiu $v0, $zero, 0xe +/* 2571C 8004A31C 080128F1 */ j .L8004A3C4 +/* 25720 8004A320 AE030028 */ sw $v1, 0x28($s0) +.L8004A324: +/* 25724 8004A324 0200202D */ daddu $a0, $s0, $zero +.L8004A328: +/* 25728 8004A328 0C00F598 */ jal func_8003D660 +/* 2572C 8004A32C 24050001 */ addiu $a1, $zero, 1 +/* 25730 8004A330 8E050018 */ lw $a1, 0x18($s0) +/* 25734 8004A334 8E06000C */ lw $a2, 0xc($s0) +/* 25738 8004A338 0C00EA95 */ jal npc_move_heading +/* 2573C 8004A33C 0200202D */ daddu $a0, $s0, $zero +/* 25740 8004A340 C6000018 */ lwc1 $f0, 0x18($s0) +/* 25744 8004A344 3C014020 */ lui $at, 0x4020 +/* 25748 8004A348 44811800 */ mtc1 $at, $f3 +/* 2574C 8004A34C 44801000 */ mtc1 $zero, $f2 +/* 25750 8004A350 46000021 */ cvt.d.s $f0, $f0 +/* 25754 8004A354 4620103C */ c.lt.d $f2, $f0 +/* 25758 8004A358 00000000 */ nop +/* 2575C 8004A35C 45000012 */ bc1f .L8004A3A8 +/* 25760 8004A360 00000000 */ nop +/* 25764 8004A364 3C028007 */ lui $v0, %hi(gGameStatusPtr) +/* 25768 8004A368 8C42419C */ lw $v0, %lo(gGameStatusPtr)($v0) +/* 2576C 8004A36C 94430134 */ lhu $v1, 0x134($v0) +/* 25770 8004A370 3C02CCCC */ lui $v0, 0xcccc +/* 25774 8004A374 3442CCCD */ ori $v0, $v0, 0xcccd +/* 25778 8004A378 00620019 */ multu $v1, $v0 +/* 2577C 8004A37C 00004010 */ mfhi $t0 +/* 25780 8004A380 00082082 */ srl $a0, $t0, 2 +/* 25784 8004A384 00041080 */ sll $v0, $a0, 2 +/* 25788 8004A388 00441021 */ addu $v0, $v0, $a0 +/* 2578C 8004A38C 00621823 */ subu $v1, $v1, $v0 +/* 25790 8004A390 3063FFFF */ andi $v1, $v1, 0xffff +/* 25794 8004A394 14600004 */ bnez $v1, .L8004A3A8 +/* 25798 8004A398 0200202D */ daddu $a0, $s0, $zero +/* 2579C 8004A39C 240520C1 */ addiu $a1, $zero, 0x20c1 +/* 257A0 8004A3A0 0C012530 */ jal func_800494C0 +/* 257A4 8004A3A4 0000302D */ daddu $a2, $zero, $zero +.L8004A3A8: +/* 257A8 8004A3A8 8602008E */ lh $v0, 0x8e($s0) +/* 257AC 8004A3AC 9603008E */ lhu $v1, 0x8e($s0) +/* 257B0 8004A3B0 18400003 */ blez $v0, .L8004A3C0 +/* 257B4 8004A3B4 2462FFFF */ addiu $v0, $v1, -1 +/* 257B8 8004A3B8 080128F2 */ j .L8004A3C8 +/* 257BC 8004A3BC A602008E */ sh $v0, 0x8e($s0) +.L8004A3C0: +/* 257C0 8004A3C0 2402000C */ addiu $v0, $zero, 0xc +.L8004A3C4: +/* 257C4 8004A3C4 AE620070 */ sw $v0, 0x70($s3) +.L8004A3C8: +/* 257C8 8004A3C8 8FBF0048 */ lw $ra, 0x48($sp) +/* 257CC 8004A3CC 8FB30044 */ lw $s3, 0x44($sp) +/* 257D0 8004A3D0 8FB20040 */ lw $s2, 0x40($sp) +/* 257D4 8004A3D4 8FB1003C */ lw $s1, 0x3c($sp) +/* 257D8 8004A3D8 8FB00038 */ lw $s0, 0x38($sp) +/* 257DC 8004A3DC D7B40050 */ ldc1 $f20, 0x50($sp) +/* 257E0 8004A3E0 03E00008 */ jr $ra +/* 257E4 8004A3E4 27BD0058 */ addiu $sp, $sp, 0x58 diff --git a/asm/nonmatchings/code_23680/func_8004A3E8.s b/asm/nonmatchings/code_23680/func_8004A3E8.s new file mode 100644 index 0000000000..c6cf0daf40 --- /dev/null +++ b/asm/nonmatchings/code_23680/func_8004A3E8.s @@ -0,0 +1,42 @@ +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches + +glabel func_8004A3E8 +/* 257E8 8004A3E8 27BDFFE0 */ addiu $sp, $sp, -0x20 +/* 257EC 8004A3EC AFB20018 */ sw $s2, 0x18($sp) +/* 257F0 8004A3F0 0080902D */ daddu $s2, $a0, $zero +/* 257F4 8004A3F4 AFBF001C */ sw $ra, 0x1c($sp) +/* 257F8 8004A3F8 AFB10014 */ sw $s1, 0x14($sp) +/* 257FC 8004A3FC AFB00010 */ sw $s0, 0x10($sp) +/* 25800 8004A400 8E510148 */ lw $s1, 0x148($s2) +/* 25804 8004A404 0C00EABB */ jal get_npc_unsafe +/* 25808 8004A408 86240008 */ lh $a0, 8($s1) +/* 2580C 8004A40C 0040802D */ daddu $s0, $v0, $zero +/* 25810 8004A410 9602008E */ lhu $v0, 0x8e($s0) +/* 25814 8004A414 2442FFFF */ addiu $v0, $v0, -1 +/* 25818 8004A418 A602008E */ sh $v0, 0x8e($s0) +/* 2581C 8004A41C 00021400 */ sll $v0, $v0, 0x10 +/* 25820 8004A420 14400010 */ bnez $v0, .L8004A464 +/* 25824 8004A424 00000000 */ nop +/* 25828 8004A428 8E2200D0 */ lw $v0, 0xd0($s1) +/* 2582C 8004A42C C60C0038 */ lwc1 $f12, 0x38($s0) +/* 25830 8004A430 C60E0040 */ lwc1 $f14, 0x40($s0) +/* 25834 8004A434 C4420000 */ lwc1 $f2, ($v0) +/* 25838 8004A438 468010A0 */ cvt.s.w $f2, $f2 +/* 2583C 8004A43C 44061000 */ mfc1 $a2, $f2 +/* 25840 8004A440 C4420008 */ lwc1 $f2, 8($v0) +/* 25844 8004A444 468010A0 */ cvt.s.w $f2, $f2 +/* 25848 8004A448 44071000 */ mfc1 $a3, $f2 +/* 2584C 8004A44C 0C00A720 */ jal atan2 +/* 25850 8004A450 00000000 */ nop +/* 25854 8004A454 0C00A6C9 */ jal clamp_angle +/* 25858 8004A458 46000306 */ mov.s $f12, $f0 +/* 2585C 8004A45C E600000C */ swc1 $f0, 0xc($s0) +/* 25860 8004A460 AE400070 */ sw $zero, 0x70($s2) +.L8004A464: +/* 25864 8004A464 8FBF001C */ lw $ra, 0x1c($sp) +/* 25868 8004A468 8FB20018 */ lw $s2, 0x18($sp) +/* 2586C 8004A46C 8FB10014 */ lw $s1, 0x14($sp) +/* 25870 8004A470 8FB00010 */ lw $s0, 0x10($sp) +/* 25874 8004A474 03E00008 */ jr $ra +/* 25878 8004A478 27BD0020 */ addiu $sp, $sp, 0x20 diff --git a/asm/nonmatchings/code_20ec0_len_5040/get_coin_drop_amount.s b/asm/nonmatchings/code_23680/get_coin_drop_amount.s similarity index 100% rename from asm/nonmatchings/code_20ec0_len_5040/get_coin_drop_amount.s rename to asm/nonmatchings/code_23680/get_coin_drop_amount.s diff --git a/asm/nonmatchings/code_23680/spawn_drops.s b/asm/nonmatchings/code_23680/spawn_drops.s new file mode 100644 index 0000000000..6c6865cc64 --- /dev/null +++ b/asm/nonmatchings/code_23680/spawn_drops.s @@ -0,0 +1,752 @@ +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches + +glabel spawn_drops +/* 23680 80048280 27BDFF68 */ addiu $sp, $sp, -0x98 +/* 23684 80048284 AFA40098 */ sw $a0, 0x98($sp) +/* 23688 80048288 8FA80098 */ lw $t0, 0x98($sp) +/* 2368C 8004828C AFBF0064 */ sw $ra, 0x64($sp) +/* 23690 80048290 AFBE0060 */ sw $fp, 0x60($sp) +/* 23694 80048294 AFB7005C */ sw $s7, 0x5c($sp) +/* 23698 80048298 AFB60058 */ sw $s6, 0x58($sp) +/* 2369C 8004829C AFB50054 */ sw $s5, 0x54($sp) +/* 236A0 800482A0 AFB40050 */ sw $s4, 0x50($sp) +/* 236A4 800482A4 AFB3004C */ sw $s3, 0x4c($sp) +/* 236A8 800482A8 AFB20048 */ sw $s2, 0x48($sp) +/* 236AC 800482AC AFB10044 */ sw $s1, 0x44($sp) +/* 236B0 800482B0 AFB00040 */ sw $s0, 0x40($sp) +/* 236B4 800482B4 F7BE0090 */ sdc1 $f30, 0x90($sp) +/* 236B8 800482B8 F7BC0088 */ sdc1 $f28, 0x88($sp) +/* 236BC 800482BC F7BA0080 */ sdc1 $f26, 0x80($sp) +/* 236C0 800482C0 F7B80078 */ sdc1 $f24, 0x78($sp) +/* 236C4 800482C4 F7B60070 */ sdc1 $f22, 0x70($sp) +/* 236C8 800482C8 F7B40068 */ sdc1 $f20, 0x68($sp) +/* 236CC 800482CC AFA0002C */ sw $zero, 0x2c($sp) +/* 236D0 800482D0 84840008 */ lh $a0, 8($a0) +/* 236D4 800482D4 8D0800D4 */ lw $t0, 0xd4($t0) +/* 236D8 800482D8 0000902D */ daddu $s2, $zero, $zero +/* 236DC 800482DC 0C00EABB */ jal get_npc_unsafe +/* 236E0 800482E0 AFA80020 */ sw $t0, 0x20($sp) +/* 236E4 800482E4 0040802D */ daddu $s0, $v0, $zero +/* 236E8 800482E8 3C038007 */ lui $v1, %hi(gCurrentCameraID) +/* 236EC 800482EC 8C637410 */ lw $v1, %lo(gCurrentCameraID)($v1) +/* 236F0 800482F0 3C04800B */ lui $a0, %hi(gCameras) +/* 236F4 800482F4 24841D80 */ addiu $a0, $a0, %lo(gCameras) +/* 236F8 800482F8 00031080 */ sll $v0, $v1, 2 +/* 236FC 800482FC 00431021 */ addu $v0, $v0, $v1 +/* 23700 80048300 00021080 */ sll $v0, $v0, 2 +/* 23704 80048304 00431023 */ subu $v0, $v0, $v1 +/* 23708 80048308 000218C0 */ sll $v1, $v0, 3 +/* 2370C 8004830C 00431021 */ addu $v0, $v0, $v1 +/* 23710 80048310 000210C0 */ sll $v0, $v0, 3 +/* 23714 80048314 00448821 */ addu $s1, $v0, $a0 +.L80048318: +/* 23718 80048318 0C044181 */ jal get_shadow_by_index +/* 2371C 8004831C 0240202D */ daddu $a0, $s2, $zero +/* 23720 80048320 14400004 */ bnez $v0, .L80048334 +/* 23724 80048324 26520001 */ addiu $s2, $s2, 1 +/* 23728 80048328 8FA8002C */ lw $t0, 0x2c($sp) +/* 2372C 8004832C 25080001 */ addiu $t0, $t0, 1 +/* 23730 80048330 AFA8002C */ sw $t0, 0x2c($sp) +.L80048334: +/* 23734 80048334 2A42003C */ slti $v0, $s2, 0x3c +/* 23738 80048338 1440FFF7 */ bnez $v0, .L80048318 +/* 2373C 8004833C 0000F02D */ daddu $fp, $zero, $zero +/* 23740 80048340 C620006C */ lwc1 $f0, 0x6c($s1) +/* 23744 80048344 3C0142B4 */ lui $at, 0x42b4 +/* 23748 80048348 44816000 */ mtc1 $at, $f12 +/* 2374C 8004834C 3C038015 */ lui $v1, %hi(D_8014B7F0) +/* 23750 80048350 8C63B7F0 */ lw $v1, %lo(D_8014B7F0)($v1) +/* 23754 80048354 240200F6 */ addiu $v0, $zero, 0xf6 +/* 23758 80048358 AFA00024 */ sw $zero, 0x24($sp) +/* 2375C 8004835C 460C0300 */ add.s $f12, $f0, $f12 +/* 23760 80048360 00431023 */ subu $v0, $v0, $v1 +/* 23764 80048364 0C00A6C9 */ jal clamp_angle +/* 23768 80048368 AFA20028 */ sw $v0, 0x28($sp) +/* 2376C 8004836C 4600010D */ trunc.w.s $f4, $f0 +/* 23770 80048370 44162000 */ mfc1 $s6, $f4 +/* 23774 80048374 960200A8 */ lhu $v0, 0xa8($s0) +/* 23778 80048378 8FA80020 */ lw $t0, 0x20($sp) +/* 2377C 8004837C C602003C */ lwc1 $f2, 0x3c($s0) +/* 23780 80048380 00021400 */ sll $v0, $v0, 0x10 +/* 23784 80048384 00021C03 */ sra $v1, $v0, 0x10 +/* 23788 80048388 000217C2 */ srl $v0, $v0, 0x1f +/* 2378C 8004838C 00621821 */ addu $v1, $v1, $v0 +/* 23790 80048390 00031843 */ sra $v1, $v1, 1 +/* 23794 80048394 44830000 */ mtc1 $v1, $f0 +/* 23798 80048398 00000000 */ nop +/* 2379C 8004839C 46800020 */ cvt.s.w $f0, $f0 +/* 237A0 800483A0 46001080 */ add.s $f2, $f2, $f0 +/* 237A4 800483A4 91110001 */ lbu $s1, 1($t0) +/* 237A8 800483A8 03C0B82D */ daddu $s7, $fp, $zero +/* 237AC 800483AC E7A20038 */ swc1 $f2, 0x38($sp) +/* 237B0 800483B0 C6040038 */ lwc1 $f4, 0x38($s0) +/* 237B4 800483B4 E7A40034 */ swc1 $f4, 0x34($sp) +/* 237B8 800483B8 C61E0040 */ lwc1 $f30, 0x40($s0) +/* 237BC 800483BC 0C00A67F */ jal rand_int +/* 237C0 800483C0 24040064 */ addiu $a0, $zero, 0x64 +/* 237C4 800483C4 0051102A */ slt $v0, $v0, $s1 +/* 237C8 800483C8 10400061 */ beqz $v0, .L80048550 +/* 237CC 800483CC 03C0902D */ daddu $s2, $fp, $zero +/* 237D0 800483D0 03C0202D */ daddu $a0, $fp, $zero +/* 237D4 800483D4 24050002 */ addiu $a1, $zero, 2 +/* 237D8 800483D8 8FA30020 */ lw $v1, 0x20($sp) +.L800483DC: +/* 237DC 800483DC 84620002 */ lh $v0, 2($v1) +/* 237E0 800483E0 10400009 */ beqz $v0, .L80048408 +/* 237E4 800483E4 24630006 */ addiu $v1, $v1, 6 +/* 237E8 800483E8 8FA80020 */ lw $t0, 0x20($sp) +/* 237EC 800483EC 26520001 */ addiu $s2, $s2, 1 +/* 237F0 800483F0 01051021 */ addu $v0, $t0, $a1 +/* 237F4 800483F4 84420002 */ lh $v0, 2($v0) +/* 237F8 800483F8 00822021 */ addu $a0, $a0, $v0 +/* 237FC 800483FC 2A420008 */ slti $v0, $s2, 8 +/* 23800 80048400 1440FFF6 */ bnez $v0, .L800483DC +/* 23804 80048404 24A50006 */ addiu $a1, $a1, 6 +.L80048408: +/* 23808 80048408 0C00A67F */ jal rand_int +/* 2380C 8004840C 0000A82D */ daddu $s5, $zero, $zero +/* 23810 80048410 0040882D */ daddu $s1, $v0, $zero +/* 23814 80048414 02A0902D */ daddu $s2, $s5, $zero +/* 23818 80048418 24140004 */ addiu $s4, $zero, 4 +/* 2381C 8004841C 8FB00020 */ lw $s0, 0x20($sp) +/* 23820 80048420 24130002 */ addiu $s3, $zero, 2 +/* 23824 80048424 AFA00030 */ sw $zero, 0x30($sp) +.L80048428: +/* 23828 80048428 86020002 */ lh $v0, 2($s0) +/* 2382C 8004842C 10400017 */ beqz $v0, .L8004848C +/* 23830 80048430 00000000 */ nop +/* 23834 80048434 8FA80020 */ lw $t0, 0x20($sp) +/* 23838 80048438 01131021 */ addu $v0, $t0, $s3 +/* 2383C 8004843C 01141821 */ addu $v1, $t0, $s4 +/* 23840 80048440 84420002 */ lh $v0, 2($v0) +/* 23844 80048444 84640002 */ lh $a0, 2($v1) +/* 23848 80048448 18800005 */ blez $a0, .L80048460 +/* 2384C 8004844C 02A2A821 */ addu $s5, $s5, $v0 +/* 23850 80048450 0C05152F */ jal get_global_flag +/* 23854 80048454 24840714 */ addiu $a0, $a0, 0x714 +/* 23858 80048458 54400007 */ bnel $v0, $zero, .L80048478 +/* 2385C 8004845C 26940006 */ addiu $s4, $s4, 6 +.L80048460: +/* 23860 80048460 02B1102A */ slt $v0, $s5, $s1 +/* 23864 80048464 54400004 */ bnel $v0, $zero, .L80048478 +/* 23868 80048468 26940006 */ addiu $s4, $s4, 6 +/* 2386C 8004846C 86100002 */ lh $s0, 2($s0) +/* 23870 80048470 08012123 */ j .L8004848C +/* 23874 80048474 AFB00030 */ sw $s0, 0x30($sp) +.L80048478: +/* 23878 80048478 26730006 */ addiu $s3, $s3, 6 +/* 2387C 8004847C 26520001 */ addiu $s2, $s2, 1 +/* 23880 80048480 2A420008 */ slti $v0, $s2, 8 +/* 23884 80048484 1440FFE8 */ bnez $v0, .L80048428 +/* 23888 80048488 26100006 */ addiu $s0, $s0, 6 +.L8004848C: +/* 2388C 8004848C 8FA80098 */ lw $t0, 0x98($sp) +/* 23890 80048490 8FA80030 */ lw $t0, 0x30($sp) +/* 23894 80048494 1100002E */ beqz $t0, .L80048550 +/* 23898 80048498 24020004 */ addiu $v0, $zero, 4 +/* 2389C 8004849C 0100202D */ daddu $a0, $t0, $zero +/* 238A0 800484A0 00171840 */ sll $v1, $s7, 1 +/* 238A4 800484A4 00771821 */ addu $v1, $v1, $s7 +/* 238A8 800484A8 AFA20010 */ sw $v0, 0x10($sp) +/* 238AC 800484AC 00431004 */ sllv $v0, $v1, $v0 +/* 238B0 800484B0 00431023 */ subu $v0, $v0, $v1 +/* 238B4 800484B4 000210C0 */ sll $v0, $v0, 3 +/* 238B8 800484B8 8FA50034 */ lw $a1, 0x34($sp) +/* 238BC 800484BC 8FA60038 */ lw $a2, 0x38($sp) +/* 238C0 800484C0 4407F000 */ mfc1 $a3, $f30 +/* 238C4 800484C4 8FA80024 */ lw $t0, 0x24($sp) +/* 238C8 800484C8 02C21021 */ addu $v0, $s6, $v0 +/* 238CC 800484CC AFA20018 */ sw $v0, 0x18($sp) +/* 238D0 800484D0 AFA0001C */ sw $zero, 0x1c($sp) +/* 238D4 800484D4 0C04C4FD */ jal make_item_entity +/* 238D8 800484D8 AFA80014 */ sw $t0, 0x14($sp) +/* 238DC 800484DC 44960000 */ mtc1 $s6, $f0 +/* 238E0 800484E0 00000000 */ nop +/* 238E4 800484E4 46800021 */ cvt.d.w $f0, $f0 +/* 238E8 800484E8 27DE0001 */ addiu $fp, $fp, 1 +/* 238EC 800484EC 2BC2000C */ slti $v0, $fp, 0xc +/* 238F0 800484F0 3C01403E */ lui $at, 0x403e +/* 238F4 800484F4 44811800 */ mtc1 $at, $f3 +/* 238F8 800484F8 44801000 */ mtc1 $zero, $f2 +/* 238FC 800484FC 8FA80024 */ lw $t0, 0x24($sp) +/* 23900 80048500 46220000 */ add.d $f0, $f0, $f2 +/* 23904 80048504 25080002 */ addiu $t0, $t0, 2 +/* 23908 80048508 AFA80024 */ sw $t0, 0x24($sp) +/* 2390C 8004850C 4620010D */ trunc.w.d $f4, $f0 +/* 23910 80048510 44162000 */ mfc1 $s6, $f4 +/* 23914 80048514 14400004 */ bnez $v0, .L80048528 +/* 23918 80048518 00121040 */ sll $v0, $s2, 1 +/* 2391C 8004851C 26F70001 */ addiu $s7, $s7, 1 +/* 23920 80048520 0017B0C0 */ sll $s6, $s7, 3 +/* 23924 80048524 0000F02D */ daddu $fp, $zero, $zero +.L80048528: +/* 23928 80048528 00521021 */ addu $v0, $v0, $s2 +/* 2392C 8004852C 24420002 */ addiu $v0, $v0, 2 +/* 23930 80048530 8FA80020 */ lw $t0, 0x20($sp) +/* 23934 80048534 00021040 */ sll $v0, $v0, 1 +/* 23938 80048538 01021021 */ addu $v0, $t0, $v0 +/* 2393C 8004853C 84440002 */ lh $a0, 2($v0) +/* 23940 80048540 04800003 */ bltz $a0, .L80048550 +/* 23944 80048544 00000000 */ nop +/* 23948 80048548 0C051514 */ jal set_global_flag +/* 2394C 8004854C 24840715 */ addiu $a0, $a0, 0x715 +.L80048550: +/* 23950 80048550 3C02800B */ lui $v0, %hi(gCurrentEncounter+0x13) +/* 23954 80048554 80420F23 */ lb $v0, %lo(gCurrentEncounter+0x13)($v0) +/* 23958 80048558 10400026 */ beqz $v0, .L800485F4 +/* 2395C 8004855C 24040093 */ addiu $a0, $zero, 0x93 +/* 23960 80048560 24020004 */ addiu $v0, $zero, 4 +/* 23964 80048564 00171840 */ sll $v1, $s7, 1 +/* 23968 80048568 00771821 */ addu $v1, $v1, $s7 +/* 2396C 8004856C AFA20010 */ sw $v0, 0x10($sp) +/* 23970 80048570 00431004 */ sllv $v0, $v1, $v0 +/* 23974 80048574 00431023 */ subu $v0, $v0, $v1 +/* 23978 80048578 000210C0 */ sll $v0, $v0, 3 +/* 2397C 8004857C 8FA50034 */ lw $a1, 0x34($sp) +/* 23980 80048580 8FA60038 */ lw $a2, 0x38($sp) +/* 23984 80048584 4407F000 */ mfc1 $a3, $f30 +/* 23988 80048588 8FA80024 */ lw $t0, 0x24($sp) +/* 2398C 8004858C 02C21021 */ addu $v0, $s6, $v0 +/* 23990 80048590 3C01800B */ lui $at, %hi(gCurrentEncounter+0x13) +/* 23994 80048594 A0200F23 */ sb $zero, %lo(gCurrentEncounter+0x13)($at) +/* 23998 80048598 AFA20018 */ sw $v0, 0x18($sp) +/* 2399C 8004859C AFA0001C */ sw $zero, 0x1c($sp) +/* 239A0 800485A0 0C04C4FD */ jal make_item_entity +/* 239A4 800485A4 AFA80014 */ sw $t0, 0x14($sp) +/* 239A8 800485A8 44960000 */ mtc1 $s6, $f0 +/* 239AC 800485AC 00000000 */ nop +/* 239B0 800485B0 46800021 */ cvt.d.w $f0, $f0 +/* 239B4 800485B4 27DE0001 */ addiu $fp, $fp, 1 +/* 239B8 800485B8 2BC2000C */ slti $v0, $fp, 0xc +/* 239BC 800485BC 3C01403E */ lui $at, 0x403e +/* 239C0 800485C0 44811800 */ mtc1 $at, $f3 +/* 239C4 800485C4 44801000 */ mtc1 $zero, $f2 +/* 239C8 800485C8 8FA80024 */ lw $t0, 0x24($sp) +/* 239CC 800485CC 46220000 */ add.d $f0, $f0, $f2 +/* 239D0 800485D0 25080002 */ addiu $t0, $t0, 2 +/* 239D4 800485D4 AFA80024 */ sw $t0, 0x24($sp) +/* 239D8 800485D8 4620010D */ trunc.w.d $f4, $f0 +/* 239DC 800485DC 44162000 */ mfc1 $s6, $f4 +/* 239E0 800485E0 14400005 */ bnez $v0, .L800485F8 +/* 239E4 800485E4 0000882D */ daddu $s1, $zero, $zero +/* 239E8 800485E8 26F70001 */ addiu $s7, $s7, 1 +/* 239EC 800485EC 0017B0C0 */ sll $s6, $s7, 3 +/* 239F0 800485F0 0000F02D */ daddu $fp, $zero, $zero +.L800485F4: +/* 239F4 800485F4 0000882D */ daddu $s1, $zero, $zero +.L800485F8: +/* 239F8 800485F8 0220902D */ daddu $s2, $s1, $zero +/* 239FC 800485FC 24150006 */ addiu $s5, $zero, 6 +/* 23A00 80048600 24140004 */ addiu $s4, $zero, 4 +/* 23A04 80048604 8FB00020 */ lw $s0, 0x20($sp) +/* 23A08 80048608 3C0146FF */ lui $at, 0x46ff +/* 23A0C 8004860C 3421FE00 */ ori $at, $at, 0xfe00 +/* 23A10 80048610 4481D000 */ mtc1 $at, $f26 +/* 23A14 80048614 3C0142C8 */ lui $at, 0x42c8 +/* 23A18 80048618 4481E000 */ mtc1 $at, $f28 +/* 23A1C 8004861C 3C028011 */ lui $v0, %hi(gPlayerData+0x2) +/* 23A20 80048620 8042F292 */ lb $v0, %lo(gPlayerData+0x2)($v0) +/* 23A24 80048624 3C038011 */ lui $v1, %hi(gPlayerData+0x3) +/* 23A28 80048628 8063F293 */ lb $v1, %lo(gPlayerData+0x3)($v1) +/* 23A2C 8004862C 24130002 */ addiu $s3, $zero, 2 +/* 23A30 80048630 AFA00030 */ sw $zero, 0x30($sp) +/* 23A34 80048634 44821000 */ mtc1 $v0, $f2 +/* 23A38 80048638 00000000 */ nop +/* 23A3C 8004863C 468010A0 */ cvt.s.w $f2, $f2 +/* 23A40 80048640 44830000 */ mtc1 $v1, $f0 +/* 23A44 80048644 00000000 */ nop +/* 23A48 80048648 46800020 */ cvt.s.w $f0, $f0 +/* 23A4C 8004864C 46001603 */ div.s $f24, $f2, $f0 +.L80048650: +/* 23A50 80048650 8FA80020 */ lw $t0, 0x20($sp) +/* 23A54 80048654 86030032 */ lh $v1, 0x32($s0) +/* 23A58 80048658 01131021 */ addu $v0, $t0, $s3 +/* 23A5C 8004865C 4483B000 */ mtc1 $v1, $f22 +/* 23A60 80048660 00000000 */ nop +/* 23A64 80048664 4680B5A0 */ cvt.s.w $f22, $f22 +/* 23A68 80048668 461AB583 */ div.s $f22, $f22, $f26 +/* 23A6C 8004866C 84420032 */ lh $v0, 0x32($v0) +/* 23A70 80048670 4616C03E */ c.le.s $f24, $f22 +/* 23A74 80048674 4482A000 */ mtc1 $v0, $f20 +/* 23A78 80048678 00000000 */ nop +/* 23A7C 8004867C 4680A520 */ cvt.s.w $f20, $f20 +/* 23A80 80048680 45000034 */ bc1f .L80048754 +/* 23A84 80048684 461AA503 */ div.s $f20, $f20, $f26 +/* 23A88 80048688 0C00A67F */ jal rand_int +/* 23A8C 8004868C 24040064 */ addiu $a0, $zero, 0x64 +/* 23A90 80048690 461CA082 */ mul.s $f2, $f20, $f28 +/* 23A94 80048694 00000000 */ nop +/* 23A98 80048698 44820000 */ mtc1 $v0, $f0 +/* 23A9C 8004869C 00000000 */ nop +/* 23AA0 800486A0 46800020 */ cvt.s.w $f0, $f0 +/* 23AA4 800486A4 4602003E */ c.le.s $f0, $f2 +/* 23AA8 800486A8 00000000 */ nop +/* 23AAC 800486AC 4502002A */ bc1fl .L80048758 +/* 23AB0 800486B0 26B50008 */ addiu $s5, $s5, 8 +/* 23AB4 800486B4 0000802D */ daddu $s0, $zero, $zero +/* 23AB8 800486B8 8FA80020 */ lw $t0, 0x20($sp) +/* 23ABC 800486BC 44900000 */ mtc1 $s0, $f0 +/* 23AC0 800486C0 00000000 */ nop +/* 23AC4 800486C4 46800020 */ cvt.s.w $f0, $f0 +/* 23AC8 800486C8 01141021 */ addu $v0, $t0, $s4 +/* 23ACC 800486CC 01151821 */ addu $v1, $t0, $s5 +/* 23AD0 800486D0 84420032 */ lh $v0, 0x32($v0) +/* 23AD4 800486D4 84630032 */ lh $v1, 0x32($v1) +/* 23AD8 800486D8 4482B000 */ mtc1 $v0, $f22 +/* 23ADC 800486DC 00000000 */ nop +/* 23AE0 800486E0 4680B5A0 */ cvt.s.w $f22, $f22 +/* 23AE4 800486E4 4483A000 */ mtc1 $v1, $f20 +/* 23AE8 800486E8 00000000 */ nop +/* 23AEC 800486EC 4680A520 */ cvt.s.w $f20, $f20 +/* 23AF0 800486F0 4616003C */ c.lt.s $f0, $f22 +/* 23AF4 800486F4 00000000 */ nop +/* 23AF8 800486F8 4500001D */ bc1f .L80048770 +/* 23AFC 800486FC 461AA503 */ div.s $f20, $f20, $f26 +.L80048700: +/* 23B00 80048700 0C00A67F */ jal rand_int +/* 23B04 80048704 24040064 */ addiu $a0, $zero, 0x64 +/* 23B08 80048708 461CA082 */ mul.s $f2, $f20, $f28 +/* 23B0C 8004870C 00000000 */ nop +/* 23B10 80048710 44820000 */ mtc1 $v0, $f0 +/* 23B14 80048714 00000000 */ nop +/* 23B18 80048718 46800020 */ cvt.s.w $f0, $f0 +/* 23B1C 8004871C 4602003E */ c.le.s $f0, $f2 +/* 23B20 80048720 00000000 */ nop +/* 23B24 80048724 45030001 */ bc1tl .L8004872C +/* 23B28 80048728 26310001 */ addiu $s1, $s1, 1 +.L8004872C: +/* 23B2C 8004872C 26100001 */ addiu $s0, $s0, 1 +/* 23B30 80048730 44900000 */ mtc1 $s0, $f0 +/* 23B34 80048734 00000000 */ nop +/* 23B38 80048738 46800020 */ cvt.s.w $f0, $f0 +/* 23B3C 8004873C 4616003C */ c.lt.s $f0, $f22 +/* 23B40 80048740 00000000 */ nop +/* 23B44 80048744 4500000A */ bc1f .L80048770 +/* 23B48 80048748 00000000 */ nop +/* 23B4C 8004874C 080121C0 */ j .L80048700 +/* 23B50 80048750 00000000 */ nop +.L80048754: +/* 23B54 80048754 26B50008 */ addiu $s5, $s5, 8 +.L80048758: +/* 23B58 80048758 26940008 */ addiu $s4, $s4, 8 +/* 23B5C 8004875C 26730008 */ addiu $s3, $s3, 8 +/* 23B60 80048760 26520001 */ addiu $s2, $s2, 1 +/* 23B64 80048764 2A420008 */ slti $v0, $s2, 8 +/* 23B68 80048768 1440FFB9 */ bnez $v0, .L80048650 +/* 23B6C 8004876C 26100008 */ addiu $s0, $s0, 8 +.L80048770: +/* 23B70 80048770 0C03A752 */ jal is_ability_active +/* 23B74 80048774 2404002B */ addiu $a0, $zero, 0x2b +/* 23B78 80048778 10400005 */ beqz $v0, .L80048790 +/* 23B7C 8004877C 00000000 */ nop +/* 23B80 80048780 0C00A67F */ jal rand_int +/* 23B84 80048784 24040002 */ addiu $a0, $zero, 2 +/* 23B88 80048788 26230001 */ addiu $v1, $s1, 1 +/* 23B8C 8004878C 00628821 */ addu $s1, $v1, $v0 +.L80048790: +/* 23B90 80048790 8FA80098 */ lw $t0, 0x98($sp) +/* 23B94 80048794 8D020000 */ lw $v0, ($t0) +/* 23B98 80048798 3C030080 */ lui $v1, 0x80 +/* 23B9C 8004879C 00431024 */ and $v0, $v0, $v1 +/* 23BA0 800487A0 54400001 */ bnel $v0, $zero, .L800487A8 +/* 23BA4 800487A4 0000882D */ daddu $s1, $zero, $zero +.L800487A8: +/* 23BA8 800487A8 12200002 */ beqz $s1, .L800487B4 +/* 23BAC 800487AC 24080156 */ addiu $t0, $zero, 0x156 +/* 23BB0 800487B0 AFA80030 */ sw $t0, 0x30($sp) +.L800487B4: +/* 23BB4 800487B4 8FA80028 */ lw $t0, 0x28($sp) +/* 23BB8 800487B8 00111040 */ sll $v0, $s1, 1 +/* 23BBC 800487BC 0102102A */ slt $v0, $t0, $v0 +/* 23BC0 800487C0 10400004 */ beqz $v0, .L800487D4 +/* 23BC4 800487C4 000817C2 */ srl $v0, $t0, 0x1f +/* 23BC8 800487C8 01021021 */ addu $v0, $t0, $v0 +/* 23BCC 800487CC 00028843 */ sra $s1, $v0, 1 +/* 23BD0 800487D0 8FA80028 */ lw $t0, 0x28($sp) +.L800487D4: +/* 23BD4 800487D4 00111040 */ sll $v0, $s1, 1 +/* 23BD8 800487D8 01024023 */ subu $t0, $t0, $v0 +/* 23BDC 800487DC AFA80028 */ sw $t0, 0x28($sp) +/* 23BE0 800487E0 8FA8002C */ lw $t0, 0x2c($sp) +/* 23BE4 800487E4 0111102A */ slt $v0, $t0, $s1 +/* 23BE8 800487E8 54400002 */ bnel $v0, $zero, .L800487F4 +/* 23BEC 800487EC 0100882D */ daddu $s1, $t0, $zero +/* 23BF0 800487F0 8FA8002C */ lw $t0, 0x2c($sp) +.L800487F4: +/* 23BF4 800487F4 0000902D */ daddu $s2, $zero, $zero +/* 23BF8 800487F8 01114023 */ subu $t0, $t0, $s1 +/* 23BFC 800487FC 1A200029 */ blez $s1, .L800488A4 +/* 23C00 80048800 AFA8002C */ sw $t0, 0x2c($sp) +/* 23C04 80048804 24130004 */ addiu $s3, $zero, 4 +/* 23C08 80048808 3C01403E */ lui $at, 0x403e +/* 23C0C 8004880C 4481A800 */ mtc1 $at, $f21 +/* 23C10 80048810 4480A000 */ mtc1 $zero, $f20 +/* 23C14 80048814 00171840 */ sll $v1, $s7, 1 +/* 23C18 80048818 00771821 */ addu $v1, $v1, $s7 +/* 23C1C 8004881C 02631004 */ sllv $v0, $v1, $s3 +/* 23C20 80048820 00431023 */ subu $v0, $v0, $v1 +/* 23C24 80048824 000280C0 */ sll $s0, $v0, 3 +.L80048828: +/* 23C28 80048828 8FA50034 */ lw $a1, 0x34($sp) +/* 23C2C 8004882C 8FA60038 */ lw $a2, 0x38($sp) +/* 23C30 80048830 4407F000 */ mfc1 $a3, $f30 +/* 23C34 80048834 8FA40030 */ lw $a0, 0x30($sp) +/* 23C38 80048838 8FA80024 */ lw $t0, 0x24($sp) +/* 23C3C 8004883C 02D01021 */ addu $v0, $s6, $s0 +/* 23C40 80048840 AFB30010 */ sw $s3, 0x10($sp) +/* 23C44 80048844 AFA20018 */ sw $v0, 0x18($sp) +/* 23C48 80048848 AFA0001C */ sw $zero, 0x1c($sp) +/* 23C4C 8004884C 0C04C4FD */ jal make_item_entity +/* 23C50 80048850 AFA80014 */ sw $t0, 0x14($sp) +/* 23C54 80048854 44960000 */ mtc1 $s6, $f0 +/* 23C58 80048858 00000000 */ nop +/* 23C5C 8004885C 46800021 */ cvt.d.w $f0, $f0 +/* 23C60 80048860 27DE0001 */ addiu $fp, $fp, 1 +/* 23C64 80048864 2BC2000C */ slti $v0, $fp, 0xc +/* 23C68 80048868 8FA80024 */ lw $t0, 0x24($sp) +/* 23C6C 8004886C 46340000 */ add.d $f0, $f0, $f20 +/* 23C70 80048870 25080002 */ addiu $t0, $t0, 2 +/* 23C74 80048874 AFA80024 */ sw $t0, 0x24($sp) +/* 23C78 80048878 4620010D */ trunc.w.d $f4, $f0 +/* 23C7C 8004887C 44162000 */ mfc1 $s6, $f4 +/* 23C80 80048880 14400005 */ bnez $v0, .L80048898 +/* 23C84 80048884 26520001 */ addiu $s2, $s2, 1 +/* 23C88 80048888 0000F02D */ daddu $fp, $zero, $zero +/* 23C8C 8004888C 26100168 */ addiu $s0, $s0, 0x168 +/* 23C90 80048890 26F70001 */ addiu $s7, $s7, 1 +/* 23C94 80048894 0017B0C0 */ sll $s6, $s7, 3 +.L80048898: +/* 23C98 80048898 0251102A */ slt $v0, $s2, $s1 +/* 23C9C 8004889C 1440FFE2 */ bnez $v0, .L80048828 +/* 23CA0 800488A0 00000000 */ nop +.L800488A4: +/* 23CA4 800488A4 0000882D */ daddu $s1, $zero, $zero +/* 23CA8 800488A8 0220902D */ daddu $s2, $s1, $zero +/* 23CAC 800488AC 24150006 */ addiu $s5, $zero, 6 +/* 23CB0 800488B0 24140004 */ addiu $s4, $zero, 4 +/* 23CB4 800488B4 8FB00020 */ lw $s0, 0x20($sp) +/* 23CB8 800488B8 3C0146FF */ lui $at, 0x46ff +/* 23CBC 800488BC 3421FE00 */ ori $at, $at, 0xfe00 +/* 23CC0 800488C0 4481D000 */ mtc1 $at, $f26 +/* 23CC4 800488C4 3C0142C8 */ lui $at, 0x42c8 +/* 23CC8 800488C8 4481E000 */ mtc1 $at, $f28 +/* 23CCC 800488CC 3C028011 */ lui $v0, %hi(gPlayerData+0x5) +/* 23CD0 800488D0 8042F295 */ lb $v0, %lo(gPlayerData+0x5)($v0) +/* 23CD4 800488D4 3C038011 */ lui $v1, %hi(gPlayerData+0x6) +/* 23CD8 800488D8 8063F296 */ lb $v1, %lo(gPlayerData+0x6)($v1) +/* 23CDC 800488DC 24130002 */ addiu $s3, $zero, 2 +/* 23CE0 800488E0 AFA00030 */ sw $zero, 0x30($sp) +/* 23CE4 800488E4 44821000 */ mtc1 $v0, $f2 +/* 23CE8 800488E8 00000000 */ nop +/* 23CEC 800488EC 468010A0 */ cvt.s.w $f2, $f2 +/* 23CF0 800488F0 44830000 */ mtc1 $v1, $f0 +/* 23CF4 800488F4 00000000 */ nop +/* 23CF8 800488F8 46800020 */ cvt.s.w $f0, $f0 +/* 23CFC 800488FC 46001603 */ div.s $f24, $f2, $f0 +.L80048900: +/* 23D00 80048900 8FA80020 */ lw $t0, 0x20($sp) +/* 23D04 80048904 86030072 */ lh $v1, 0x72($s0) +/* 23D08 80048908 01131021 */ addu $v0, $t0, $s3 +/* 23D0C 8004890C 4483B000 */ mtc1 $v1, $f22 +/* 23D10 80048910 00000000 */ nop +/* 23D14 80048914 4680B5A0 */ cvt.s.w $f22, $f22 +/* 23D18 80048918 461AB583 */ div.s $f22, $f22, $f26 +/* 23D1C 8004891C 84420072 */ lh $v0, 0x72($v0) +/* 23D20 80048920 4616C03E */ c.le.s $f24, $f22 +/* 23D24 80048924 4482A000 */ mtc1 $v0, $f20 +/* 23D28 80048928 00000000 */ nop +/* 23D2C 8004892C 4680A520 */ cvt.s.w $f20, $f20 +/* 23D30 80048930 45000034 */ bc1f .L80048A04 +/* 23D34 80048934 461AA503 */ div.s $f20, $f20, $f26 +/* 23D38 80048938 0C00A67F */ jal rand_int +/* 23D3C 8004893C 24040064 */ addiu $a0, $zero, 0x64 +/* 23D40 80048940 461CA082 */ mul.s $f2, $f20, $f28 +/* 23D44 80048944 00000000 */ nop +/* 23D48 80048948 44820000 */ mtc1 $v0, $f0 +/* 23D4C 8004894C 00000000 */ nop +/* 23D50 80048950 46800020 */ cvt.s.w $f0, $f0 +/* 23D54 80048954 4602003E */ c.le.s $f0, $f2 +/* 23D58 80048958 00000000 */ nop +/* 23D5C 8004895C 4502002A */ bc1fl .L80048A08 +/* 23D60 80048960 26B50008 */ addiu $s5, $s5, 8 +/* 23D64 80048964 0000802D */ daddu $s0, $zero, $zero +/* 23D68 80048968 8FA80020 */ lw $t0, 0x20($sp) +/* 23D6C 8004896C 44900000 */ mtc1 $s0, $f0 +/* 23D70 80048970 00000000 */ nop +/* 23D74 80048974 46800020 */ cvt.s.w $f0, $f0 +/* 23D78 80048978 01141021 */ addu $v0, $t0, $s4 +/* 23D7C 8004897C 01151821 */ addu $v1, $t0, $s5 +/* 23D80 80048980 84420072 */ lh $v0, 0x72($v0) +/* 23D84 80048984 84630072 */ lh $v1, 0x72($v1) +/* 23D88 80048988 4482B000 */ mtc1 $v0, $f22 +/* 23D8C 8004898C 00000000 */ nop +/* 23D90 80048990 4680B5A0 */ cvt.s.w $f22, $f22 +/* 23D94 80048994 4483A000 */ mtc1 $v1, $f20 +/* 23D98 80048998 00000000 */ nop +/* 23D9C 8004899C 4680A520 */ cvt.s.w $f20, $f20 +/* 23DA0 800489A0 4616003C */ c.lt.s $f0, $f22 +/* 23DA4 800489A4 00000000 */ nop +/* 23DA8 800489A8 4500001D */ bc1f .L80048A20 +/* 23DAC 800489AC 461AA503 */ div.s $f20, $f20, $f26 +.L800489B0: +/* 23DB0 800489B0 0C00A67F */ jal rand_int +/* 23DB4 800489B4 24040064 */ addiu $a0, $zero, 0x64 +/* 23DB8 800489B8 461CA082 */ mul.s $f2, $f20, $f28 +/* 23DBC 800489BC 00000000 */ nop +/* 23DC0 800489C0 44820000 */ mtc1 $v0, $f0 +/* 23DC4 800489C4 00000000 */ nop +/* 23DC8 800489C8 46800020 */ cvt.s.w $f0, $f0 +/* 23DCC 800489CC 4602003E */ c.le.s $f0, $f2 +/* 23DD0 800489D0 00000000 */ nop +/* 23DD4 800489D4 45030001 */ bc1tl .L800489DC +/* 23DD8 800489D8 26310001 */ addiu $s1, $s1, 1 +.L800489DC: +/* 23DDC 800489DC 26100001 */ addiu $s0, $s0, 1 +/* 23DE0 800489E0 44900000 */ mtc1 $s0, $f0 +/* 23DE4 800489E4 00000000 */ nop +/* 23DE8 800489E8 46800020 */ cvt.s.w $f0, $f0 +/* 23DEC 800489EC 4616003C */ c.lt.s $f0, $f22 +/* 23DF0 800489F0 00000000 */ nop +/* 23DF4 800489F4 4500000A */ bc1f .L80048A20 +/* 23DF8 800489F8 00000000 */ nop +/* 23DFC 800489FC 0801226C */ j .L800489B0 +/* 23E00 80048A00 00000000 */ nop +.L80048A04: +/* 23E04 80048A04 26B50008 */ addiu $s5, $s5, 8 +.L80048A08: +/* 23E08 80048A08 26940008 */ addiu $s4, $s4, 8 +/* 23E0C 80048A0C 26730008 */ addiu $s3, $s3, 8 +/* 23E10 80048A10 26520001 */ addiu $s2, $s2, 1 +/* 23E14 80048A14 2A420008 */ slti $v0, $s2, 8 +/* 23E18 80048A18 1440FFB9 */ bnez $v0, .L80048900 +/* 23E1C 80048A1C 26100008 */ addiu $s0, $s0, 8 +.L80048A20: +/* 23E20 80048A20 0C03A752 */ jal is_ability_active +/* 23E24 80048A24 2404002C */ addiu $a0, $zero, 0x2c +/* 23E28 80048A28 10400005 */ beqz $v0, .L80048A40 +/* 23E2C 80048A2C 00000000 */ nop +/* 23E30 80048A30 0C00A67F */ jal rand_int +/* 23E34 80048A34 24040002 */ addiu $a0, $zero, 2 +/* 23E38 80048A38 26230001 */ addiu $v1, $s1, 1 +/* 23E3C 80048A3C 00628821 */ addu $s1, $v1, $v0 +.L80048A40: +/* 23E40 80048A40 8FA80098 */ lw $t0, 0x98($sp) +/* 23E44 80048A44 8D020000 */ lw $v0, ($t0) +/* 23E48 80048A48 3C030080 */ lui $v1, 0x80 +/* 23E4C 80048A4C 00431024 */ and $v0, $v0, $v1 +/* 23E50 80048A50 54400001 */ bnel $v0, $zero, .L80048A58 +/* 23E54 80048A54 0000882D */ daddu $s1, $zero, $zero +.L80048A58: +/* 23E58 80048A58 12200002 */ beqz $s1, .L80048A64 +/* 23E5C 80048A5C 2408015B */ addiu $t0, $zero, 0x15b +/* 23E60 80048A60 AFA80030 */ sw $t0, 0x30($sp) +.L80048A64: +/* 23E64 80048A64 8FA80028 */ lw $t0, 0x28($sp) +/* 23E68 80048A68 00111040 */ sll $v0, $s1, 1 +/* 23E6C 80048A6C 0102102A */ slt $v0, $t0, $v0 +/* 23E70 80048A70 10400004 */ beqz $v0, .L80048A84 +/* 23E74 80048A74 000817C2 */ srl $v0, $t0, 0x1f +/* 23E78 80048A78 01021021 */ addu $v0, $t0, $v0 +/* 23E7C 80048A7C 00028843 */ sra $s1, $v0, 1 +/* 23E80 80048A80 8FA80028 */ lw $t0, 0x28($sp) +.L80048A84: +/* 23E84 80048A84 00111040 */ sll $v0, $s1, 1 +/* 23E88 80048A88 01024023 */ subu $t0, $t0, $v0 +/* 23E8C 80048A8C AFA80028 */ sw $t0, 0x28($sp) +/* 23E90 80048A90 8FA8002C */ lw $t0, 0x2c($sp) +/* 23E94 80048A94 0111102A */ slt $v0, $t0, $s1 +/* 23E98 80048A98 54400002 */ bnel $v0, $zero, .L80048AA4 +/* 23E9C 80048A9C 0100882D */ daddu $s1, $t0, $zero +/* 23EA0 80048AA0 8FA8002C */ lw $t0, 0x2c($sp) +.L80048AA4: +/* 23EA4 80048AA4 0000902D */ daddu $s2, $zero, $zero +/* 23EA8 80048AA8 01114023 */ subu $t0, $t0, $s1 +/* 23EAC 80048AAC 1A200029 */ blez $s1, .L80048B54 +/* 23EB0 80048AB0 AFA8002C */ sw $t0, 0x2c($sp) +/* 23EB4 80048AB4 24130004 */ addiu $s3, $zero, 4 +/* 23EB8 80048AB8 3C01403E */ lui $at, 0x403e +/* 23EBC 80048ABC 4481A800 */ mtc1 $at, $f21 +/* 23EC0 80048AC0 4480A000 */ mtc1 $zero, $f20 +/* 23EC4 80048AC4 00171840 */ sll $v1, $s7, 1 +/* 23EC8 80048AC8 00771821 */ addu $v1, $v1, $s7 +/* 23ECC 80048ACC 02631004 */ sllv $v0, $v1, $s3 +/* 23ED0 80048AD0 00431023 */ subu $v0, $v0, $v1 +/* 23ED4 80048AD4 000280C0 */ sll $s0, $v0, 3 +.L80048AD8: +/* 23ED8 80048AD8 8FA50034 */ lw $a1, 0x34($sp) +/* 23EDC 80048ADC 8FA60038 */ lw $a2, 0x38($sp) +/* 23EE0 80048AE0 4407F000 */ mfc1 $a3, $f30 +/* 23EE4 80048AE4 8FA40030 */ lw $a0, 0x30($sp) +/* 23EE8 80048AE8 8FA80024 */ lw $t0, 0x24($sp) +/* 23EEC 80048AEC 02D01021 */ addu $v0, $s6, $s0 +/* 23EF0 80048AF0 AFB30010 */ sw $s3, 0x10($sp) +/* 23EF4 80048AF4 AFA20018 */ sw $v0, 0x18($sp) +/* 23EF8 80048AF8 AFA0001C */ sw $zero, 0x1c($sp) +/* 23EFC 80048AFC 0C04C4FD */ jal make_item_entity +/* 23F00 80048B00 AFA80014 */ sw $t0, 0x14($sp) +/* 23F04 80048B04 44960000 */ mtc1 $s6, $f0 +/* 23F08 80048B08 00000000 */ nop +/* 23F0C 80048B0C 46800021 */ cvt.d.w $f0, $f0 +/* 23F10 80048B10 27DE0001 */ addiu $fp, $fp, 1 +/* 23F14 80048B14 2BC2000C */ slti $v0, $fp, 0xc +/* 23F18 80048B18 8FA80024 */ lw $t0, 0x24($sp) +/* 23F1C 80048B1C 46340000 */ add.d $f0, $f0, $f20 +/* 23F20 80048B20 25080002 */ addiu $t0, $t0, 2 +/* 23F24 80048B24 AFA80024 */ sw $t0, 0x24($sp) +/* 23F28 80048B28 4620010D */ trunc.w.d $f4, $f0 +/* 23F2C 80048B2C 44162000 */ mfc1 $s6, $f4 +/* 23F30 80048B30 14400005 */ bnez $v0, .L80048B48 +/* 23F34 80048B34 26520001 */ addiu $s2, $s2, 1 +/* 23F38 80048B38 0000F02D */ daddu $fp, $zero, $zero +/* 23F3C 80048B3C 26100168 */ addiu $s0, $s0, 0x168 +/* 23F40 80048B40 26F70001 */ addiu $s7, $s7, 1 +/* 23F44 80048B44 0017B0C0 */ sll $s6, $s7, 3 +.L80048B48: +/* 23F48 80048B48 0251102A */ slt $v0, $s2, $s1 +/* 23F4C 80048B4C 1440FFE2 */ bnez $v0, .L80048AD8 +/* 23F50 80048B50 00000000 */ nop +.L80048B54: +/* 23F54 80048B54 24080157 */ addiu $t0, $zero, 0x157 +/* 23F58 80048B58 AFA80030 */ sw $t0, 0x30($sp) +/* 23F5C 80048B5C 8FA80020 */ lw $t0, 0x20($sp) +/* 23F60 80048B60 851000B2 */ lh $s0, 0xb2($t0) +/* 23F64 80048B64 850400B4 */ lh $a0, 0xb4($t0) +/* 23F68 80048B68 0090102A */ slt $v0, $a0, $s0 +/* 23F6C 80048B6C 10400003 */ beqz $v0, .L80048B7C +/* 23F70 80048B70 0200882D */ daddu $s1, $s0, $zero +/* 23F74 80048B74 0080802D */ daddu $s0, $a0, $zero +/* 23F78 80048B78 0220202D */ daddu $a0, $s1, $zero +.L80048B7C: +/* 23F7C 80048B7C 06010003 */ bgez $s0, .L80048B8C +/* 23F80 80048B80 00908823 */ subu $s1, $a0, $s0 +/* 23F84 80048B84 080122E5 */ j .L80048B94 +/* 23F88 80048B88 00902023 */ subu $a0, $a0, $s0 +.L80048B8C: +/* 23F8C 80048B8C 12200005 */ beqz $s1, .L80048BA4 +/* 23F90 80048B90 0220202D */ daddu $a0, $s1, $zero +.L80048B94: +/* 23F94 80048B94 0C00A67F */ jal rand_int +/* 23F98 80048B98 00000000 */ nop +/* 23F9C 80048B9C 080122EA */ j .L80048BA8 +/* 23FA0 80048BA0 00508821 */ addu $s1, $v0, $s0 +.L80048BA4: +/* 23FA4 80048BA4 0200882D */ daddu $s1, $s0, $zero +.L80048BA8: +/* 23FA8 80048BA8 06220001 */ bltzl $s1, .L80048BB0 +/* 23FAC 80048BAC 0000882D */ daddu $s1, $zero, $zero +.L80048BB0: +/* 23FB0 80048BB0 3C02800B */ lui $v0, %hi(gCurrentEncounter+0xE) +/* 23FB4 80048BB4 84420F1E */ lh $v0, %lo(gCurrentEncounter+0xE)($v0) +/* 23FB8 80048BB8 24040019 */ addiu $a0, $zero, 0x19 +/* 23FBC 80048BBC 0C03A752 */ jal is_ability_active +/* 23FC0 80048BC0 02228821 */ addu $s1, $s1, $v0 +/* 23FC4 80048BC4 10400007 */ beqz $v0, .L80048BE4 +/* 23FC8 80048BC8 00000000 */ nop +/* 23FCC 80048BCC 3C02800B */ lui $v0, %hi(gCurrentEncounter+0xC) +/* 23FD0 80048BD0 90420F1C */ lbu $v0, %lo(gCurrentEncounter+0xC)($v0) +/* 23FD4 80048BD4 3C01800B */ lui $at, %hi(gCurrentEncounter+0xC) +/* 23FD8 80048BD8 A0200F1C */ sb $zero, %lo(gCurrentEncounter+0xC)($at) +/* 23FDC 80048BDC 00021042 */ srl $v0, $v0, 1 +/* 23FE0 80048BE0 02228821 */ addu $s1, $s1, $v0 +.L80048BE4: +/* 23FE4 80048BE4 3C02800B */ lui $v0, %hi(gCurrentEncounter+0xB) +/* 23FE8 80048BE8 80420F1B */ lb $v0, %lo(gCurrentEncounter+0xB)($v0) +/* 23FEC 80048BEC 10400004 */ beqz $v0, .L80048C00 +/* 23FF0 80048BF0 00111040 */ sll $v0, $s1, 1 +/* 23FF4 80048BF4 3C01800B */ lui $at, %hi(gCurrentEncounter+0xB) +/* 23FF8 80048BF8 A0200F1B */ sb $zero, %lo(gCurrentEncounter+0xB)($at) +/* 23FFC 80048BFC 02228821 */ addu $s1, $s1, $v0 +.L80048C00: +/* 24000 80048C00 0C03A752 */ jal is_ability_active +/* 24004 80048C04 24040010 */ addiu $a0, $zero, 0x10 +/* 24008 80048C08 54400001 */ bnel $v0, $zero, .L80048C10 +/* 2400C 80048C0C 00118840 */ sll $s1, $s1, 1 +.L80048C10: +/* 24010 80048C10 2A220015 */ slti $v0, $s1, 0x15 +/* 24014 80048C14 50400001 */ beql $v0, $zero, .L80048C1C +/* 24018 80048C18 24110014 */ addiu $s1, $zero, 0x14 +.L80048C1C: +/* 2401C 80048C1C 8FA80098 */ lw $t0, 0x98($sp) +/* 24020 80048C20 8D020000 */ lw $v0, ($t0) +/* 24024 80048C24 3C030080 */ lui $v1, 0x80 +/* 24028 80048C28 00431024 */ and $v0, $v0, $v1 +/* 2402C 80048C2C 54400001 */ bnel $v0, $zero, .L80048C34 +/* 24030 80048C30 0000882D */ daddu $s1, $zero, $zero +.L80048C34: +/* 24034 80048C34 8FA80028 */ lw $t0, 0x28($sp) +/* 24038 80048C38 00111040 */ sll $v0, $s1, 1 +/* 2403C 80048C3C 0102102A */ slt $v0, $t0, $v0 +/* 24040 80048C40 10400003 */ beqz $v0, .L80048C50 +/* 24044 80048C44 000817C2 */ srl $v0, $t0, 0x1f +/* 24048 80048C48 01021021 */ addu $v0, $t0, $v0 +/* 2404C 80048C4C 00028843 */ sra $s1, $v0, 1 +.L80048C50: +/* 24050 80048C50 8FA8002C */ lw $t0, 0x2c($sp) +/* 24054 80048C54 0111102A */ slt $v0, $t0, $s1 +/* 24058 80048C58 54400001 */ bnel $v0, $zero, .L80048C60 +/* 2405C 80048C5C 0100882D */ daddu $s1, $t0, $zero +.L80048C60: +/* 24060 80048C60 1A200029 */ blez $s1, .L80048D08 +/* 24064 80048C64 0000902D */ daddu $s2, $zero, $zero +/* 24068 80048C68 24130004 */ addiu $s3, $zero, 4 +/* 2406C 80048C6C 3C01403E */ lui $at, 0x403e +/* 24070 80048C70 4481A800 */ mtc1 $at, $f21 +/* 24074 80048C74 4480A000 */ mtc1 $zero, $f20 +/* 24078 80048C78 00171840 */ sll $v1, $s7, 1 +/* 2407C 80048C7C 00771821 */ addu $v1, $v1, $s7 +/* 24080 80048C80 02631004 */ sllv $v0, $v1, $s3 +/* 24084 80048C84 00431023 */ subu $v0, $v0, $v1 +/* 24088 80048C88 000280C0 */ sll $s0, $v0, 3 +.L80048C8C: +/* 2408C 80048C8C 8FA50034 */ lw $a1, 0x34($sp) +/* 24090 80048C90 8FA60038 */ lw $a2, 0x38($sp) +/* 24094 80048C94 4407F000 */ mfc1 $a3, $f30 +/* 24098 80048C98 8FA40030 */ lw $a0, 0x30($sp) +/* 2409C 80048C9C 8FA80024 */ lw $t0, 0x24($sp) +/* 240A0 80048CA0 02D01021 */ addu $v0, $s6, $s0 +/* 240A4 80048CA4 AFB30010 */ sw $s3, 0x10($sp) +/* 240A8 80048CA8 AFA20018 */ sw $v0, 0x18($sp) +/* 240AC 80048CAC AFA0001C */ sw $zero, 0x1c($sp) +/* 240B0 80048CB0 0C04C4FD */ jal make_item_entity +/* 240B4 80048CB4 AFA80014 */ sw $t0, 0x14($sp) +/* 240B8 80048CB8 44960000 */ mtc1 $s6, $f0 +/* 240BC 80048CBC 00000000 */ nop +/* 240C0 80048CC0 46800021 */ cvt.d.w $f0, $f0 +/* 240C4 80048CC4 27DE0001 */ addiu $fp, $fp, 1 +/* 240C8 80048CC8 2BC2000C */ slti $v0, $fp, 0xc +/* 240CC 80048CCC 8FA80024 */ lw $t0, 0x24($sp) +/* 240D0 80048CD0 46340000 */ add.d $f0, $f0, $f20 +/* 240D4 80048CD4 25080002 */ addiu $t0, $t0, 2 +/* 240D8 80048CD8 AFA80024 */ sw $t0, 0x24($sp) +/* 240DC 80048CDC 4620010D */ trunc.w.d $f4, $f0 +/* 240E0 80048CE0 44162000 */ mfc1 $s6, $f4 +/* 240E4 80048CE4 14400005 */ bnez $v0, .L80048CFC +/* 240E8 80048CE8 26520001 */ addiu $s2, $s2, 1 +/* 240EC 80048CEC 0000F02D */ daddu $fp, $zero, $zero +/* 240F0 80048CF0 26100168 */ addiu $s0, $s0, 0x168 +/* 240F4 80048CF4 26F70001 */ addiu $s7, $s7, 1 +/* 240F8 80048CF8 0017B0C0 */ sll $s6, $s7, 3 +.L80048CFC: +/* 240FC 80048CFC 0251102A */ slt $v0, $s2, $s1 +/* 24100 80048D00 1440FFE2 */ bnez $v0, .L80048C8C +/* 24104 80048D04 00000000 */ nop +.L80048D08: +/* 24108 80048D08 8FBF0064 */ lw $ra, 0x64($sp) +/* 2410C 80048D0C 8FBE0060 */ lw $fp, 0x60($sp) +/* 24110 80048D10 8FB7005C */ lw $s7, 0x5c($sp) +/* 24114 80048D14 8FB60058 */ lw $s6, 0x58($sp) +/* 24118 80048D18 8FB50054 */ lw $s5, 0x54($sp) +/* 2411C 80048D1C 8FB40050 */ lw $s4, 0x50($sp) +/* 24120 80048D20 8FB3004C */ lw $s3, 0x4c($sp) +/* 24124 80048D24 8FB20048 */ lw $s2, 0x48($sp) +/* 24128 80048D28 8FB10044 */ lw $s1, 0x44($sp) +/* 2412C 80048D2C 8FB00040 */ lw $s0, 0x40($sp) +/* 24130 80048D30 D7BE0090 */ ldc1 $f30, 0x90($sp) +/* 24134 80048D34 D7BC0088 */ ldc1 $f28, 0x88($sp) +/* 24138 80048D38 D7BA0080 */ ldc1 $f26, 0x80($sp) +/* 2413C 80048D3C D7B80078 */ ldc1 $f24, 0x78($sp) +/* 24140 80048D40 D7B60070 */ ldc1 $f22, 0x70($sp) +/* 24144 80048D44 D7B40068 */ ldc1 $f20, 0x68($sp) +/* 24148 80048D48 03E00008 */ jr $ra +/* 2414C 80048D4C 27BD0098 */ addiu $sp, $sp, 0x98 diff --git a/asm/nonmatchings/code_20ec0_len_5040/func_8004A6F0.s b/asm/nonmatchings/code_25AF0/func_8004A6F0.s similarity index 100% rename from asm/nonmatchings/code_20ec0_len_5040/func_8004A6F0.s rename to asm/nonmatchings/code_25AF0/func_8004A6F0.s diff --git a/asm/nonmatchings/code_20ec0_len_5040/func_8004A73C.s b/asm/nonmatchings/code_25AF0/func_8004A73C.s similarity index 100% rename from asm/nonmatchings/code_20ec0_len_5040/func_8004A73C.s rename to asm/nonmatchings/code_25AF0/func_8004A73C.s diff --git a/asm/nonmatchings/code_20ec0_len_5040/func_8004A784.s b/asm/nonmatchings/code_25AF0/func_8004A784.s similarity index 100% rename from asm/nonmatchings/code_20ec0_len_5040/func_8004A784.s rename to asm/nonmatchings/code_25AF0/func_8004A784.s diff --git a/asm/nonmatchings/code_2BF90/func_80050B90.s b/asm/nonmatchings/code_2BF90/func_80050B90.s new file mode 100644 index 0000000000..b9413f94a3 --- /dev/null +++ b/asm/nonmatchings/code_2BF90/func_80050B90.s @@ -0,0 +1,45 @@ +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches + +glabel func_80050B90 +/* 2BF90 80050B90 27BDFFD8 */ addiu $sp, $sp, -0x28 +/* 2BF94 80050B94 AFB00010 */ sw $s0, 0x10($sp) +/* 2BF98 80050B98 0080802D */ daddu $s0, $a0, $zero +/* 2BF9C 80050B9C AFB3001C */ sw $s3, 0x1c($sp) +/* 2BFA0 80050BA0 00E0982D */ daddu $s3, $a3, $zero +/* 2BFA4 80050BA4 AFB10014 */ sw $s1, 0x14($sp) +/* 2BFA8 80050BA8 00A0882D */ daddu $s1, $a1, $zero +/* 2BFAC 80050BAC AFB20018 */ sw $s2, 0x18($sp) +/* 2BFB0 80050BB0 00C0902D */ daddu $s2, $a2, $zero +/* 2BFB4 80050BB4 24050834 */ addiu $a1, $zero, 0x834 +/* 2BFB8 80050BB8 AFBF0020 */ sw $ra, 0x20($sp) +/* 2BFBC 80050BBC 0C0153A4 */ jal func_80054E90 +/* 2BFC0 80050BC0 0000302D */ daddu $a2, $zero, $zero +/* 2BFC4 80050BC4 0000182D */ daddu $v1, $zero, $zero +/* 2BFC8 80050BC8 24060001 */ addiu $a2, $zero, 1 +/* 2BFCC 80050BCC 3C057F00 */ lui $a1, 0x7f00 +/* 2BFD0 80050BD0 24040024 */ addiu $a0, $zero, 0x24 +.L80050BD4: +/* 2BFD4 80050BD4 02041021 */ addu $v0, $s0, $a0 +/* 2BFD8 80050BD8 A0430014 */ sb $v1, 0x14($v0) +/* 2BFDC 80050BDC 24630001 */ addiu $v1, $v1, 1 +/* 2BFE0 80050BE0 AC460018 */ sw $a2, 0x18($v0) +/* 2BFE4 80050BE4 AC450038 */ sw $a1, 0x38($v0) +/* 2BFE8 80050BE8 28620004 */ slti $v0, $v1, 4 +/* 2BFEC 80050BEC 1440FFF9 */ bnez $v0, .L80050BD4 +/* 2BFF0 80050BF0 248401E4 */ addiu $a0, $a0, 0x1e4 +/* 2BFF4 80050BF4 24020001 */ addiu $v0, $zero, 1 +/* 2BFF8 80050BF8 AE020004 */ sw $v0, 4($s0) +/* 2BFFC 80050BFC 24020002 */ addiu $v0, $zero, 2 +/* 2C000 80050C00 AE130000 */ sw $s3, ($s0) +/* 2C004 80050C04 AE02000C */ sw $v0, 0xc($s0) +/* 2C008 80050C08 AE020008 */ sw $v0, 8($s0) +/* 2C00C 80050C0C A2110022 */ sb $s1, 0x22($s0) +/* 2C010 80050C10 A2120023 */ sb $s2, 0x23($s0) +/* 2C014 80050C14 8FBF0020 */ lw $ra, 0x20($sp) +/* 2C018 80050C18 8FB3001C */ lw $s3, 0x1c($sp) +/* 2C01C 80050C1C 8FB20018 */ lw $s2, 0x18($sp) +/* 2C020 80050C20 8FB10014 */ lw $s1, 0x14($sp) +/* 2C024 80050C24 8FB00010 */ lw $s0, 0x10($sp) +/* 2C028 80050C28 03E00008 */ jr $ra +/* 2C02C 80050C2C 27BD0028 */ addiu $sp, $sp, 0x28 diff --git a/asm/nonmatchings/code_2BF90/func_80050C64.s b/asm/nonmatchings/code_2BF90/func_80050C64.s new file mode 100644 index 0000000000..49e1ce14c1 --- /dev/null +++ b/asm/nonmatchings/code_2BF90/func_80050C64.s @@ -0,0 +1,20 @@ +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches + +glabel func_80050C64 +/* 2C064 80050C64 3C03800A */ lui $v1, %hi(D_8009A628) +/* 2C068 80050C68 8C63A628 */ lw $v1, %lo(D_8009A628)($v1) +/* 2C06C 80050C6C 00041100 */ sll $v0, $a0, 4 +/* 2C070 80050C70 00441023 */ subu $v0, $v0, $a0 +/* 2C074 80050C74 000210C0 */ sll $v0, $v0, 3 +/* 2C078 80050C78 00441021 */ addu $v0, $v0, $a0 +/* 2C07C 80050C7C 00021080 */ sll $v0, $v0, 2 +/* 2C080 80050C80 24420024 */ addiu $v0, $v0, 0x24 +/* 2C084 80050C84 14A00003 */ bnez $a1, .L80050C94 +/* 2C088 80050C88 00621821 */ addu $v1, $v1, $v0 +/* 2C08C 80050C8C 03E00008 */ jr $ra +/* 2C090 80050C90 A0600025 */ sb $zero, 0x25($v1) +.L80050C94: +/* 2C094 80050C94 24020002 */ addiu $v0, $zero, 2 +/* 2C098 80050C98 03E00008 */ jr $ra +/* 2C09C 80050C9C A0620025 */ sb $v0, 0x25($v1) diff --git a/asm/nonmatchings/code_2BF90/func_80050CA0.s b/asm/nonmatchings/code_2BF90/func_80050CA0.s new file mode 100644 index 0000000000..92cda6417c --- /dev/null +++ b/asm/nonmatchings/code_2BF90/func_80050CA0.s @@ -0,0 +1,51 @@ +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches + +glabel func_80050CA0 +/* 2C0A0 80050CA0 27BDFFE0 */ addiu $sp, $sp, -0x20 +/* 2C0A4 80050CA4 0080302D */ daddu $a2, $a0, $zero +/* 2C0A8 80050CA8 AFB20018 */ sw $s2, 0x18($sp) +/* 2C0AC 80050CAC 00A0902D */ daddu $s2, $a1, $zero +/* 2C0B0 80050CB0 AFB10014 */ sw $s1, 0x14($sp) +/* 2C0B4 80050CB4 0000882D */ daddu $s1, $zero, $zero +/* 2C0B8 80050CB8 00061900 */ sll $v1, $a2, 4 +/* 2C0BC 80050CBC 00661823 */ subu $v1, $v1, $a2 +/* 2C0C0 80050CC0 000318C0 */ sll $v1, $v1, 3 +/* 2C0C4 80050CC4 00661821 */ addu $v1, $v1, $a2 +/* 2C0C8 80050CC8 00031880 */ sll $v1, $v1, 2 +/* 2C0CC 80050CCC 24630024 */ addiu $v1, $v1, 0x24 +/* 2C0D0 80050CD0 3C04800A */ lui $a0, %hi(D_8009A628) +/* 2C0D4 80050CD4 8C84A628 */ lw $a0, %lo(D_8009A628)($a0) +/* 2C0D8 80050CD8 00061080 */ sll $v0, $a2, 2 +/* 2C0DC 80050CDC AFBF001C */ sw $ra, 0x1c($sp) +/* 2C0E0 80050CE0 AFB00010 */ sw $s0, 0x10($sp) +/* 2C0E4 80050CE4 00821021 */ addu $v0, $a0, $v0 +/* 2C0E8 80050CE8 8C450010 */ lw $a1, 0x10($v0) +/* 2C0EC 80050CEC 10A00010 */ beqz $a1, .L80050D30 +/* 2C0F0 80050CF0 00838021 */ addu $s0, $a0, $v1 +/* 2C0F4 80050CF4 8E020020 */ lw $v0, 0x20($s0) +/* 2C0F8 80050CF8 5440000E */ bnel $v0, $zero, .L80050D34 +/* 2C0FC 80050CFC 24110001 */ addiu $s1, $zero, 1 +/* 2C100 80050D00 0C014429 */ jal func_800510A4 +/* 2C104 80050D04 00000000 */ nop +/* 2C108 80050D08 1240000A */ beqz $s2, .L80050D34 +/* 2C10C 80050D0C 0200202D */ daddu $a0, $s0, $zero +/* 2C110 80050D10 2402007F */ addiu $v0, $zero, 0x7f +/* 2C114 80050D14 A4920028 */ sh $s2, 0x28($a0) +/* 2C118 80050D18 A080002A */ sb $zero, 0x2a($a0) +/* 2C11C 80050D1C A082002B */ sb $v0, 0x2b($a0) +/* 2C120 80050D20 0C014354 */ jal func_80050D50 +/* 2C124 80050D24 A0800026 */ sb $zero, 0x26($a0) +/* 2C128 80050D28 0801434E */ j .L80050D38 +/* 2C12C 80050D2C 0220102D */ daddu $v0, $s1, $zero +.L80050D30: +/* 2C130 80050D30 24110002 */ addiu $s1, $zero, 2 +.L80050D34: +/* 2C134 80050D34 0220102D */ daddu $v0, $s1, $zero +.L80050D38: +/* 2C138 80050D38 8FBF001C */ lw $ra, 0x1c($sp) +/* 2C13C 80050D3C 8FB20018 */ lw $s2, 0x18($sp) +/* 2C140 80050D40 8FB10014 */ lw $s1, 0x14($sp) +/* 2C144 80050D44 8FB00010 */ lw $s0, 0x10($sp) +/* 2C148 80050D48 03E00008 */ jr $ra +/* 2C14C 80050D4C 27BD0020 */ addiu $sp, $sp, 0x20 diff --git a/asm/nonmatchings/code_2BF90/func_80050D50.s b/asm/nonmatchings/code_2BF90/func_80050D50.s new file mode 100644 index 0000000000..d1475534b4 --- /dev/null +++ b/asm/nonmatchings/code_2BF90/func_80050D50.s @@ -0,0 +1,58 @@ +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches + +glabel func_80050D50 +/* 2C150 80050D50 0080302D */ daddu $a2, $a0, $zero +/* 2C154 80050D54 240300FF */ addiu $v1, $zero, 0xff +/* 2C158 80050D58 90C2002A */ lbu $v0, 0x2a($a2) +/* 2C15C 80050D5C 94C50028 */ lhu $a1, 0x28($a2) +/* 2C160 80050D60 14430004 */ bne $v0, $v1, .L80050D74 +/* 2C164 80050D64 24A2FF06 */ addiu $v0, $a1, -0xfa +/* 2C168 80050D68 80C20038 */ lb $v0, 0x38($a2) +/* 2C16C 80050D6C A0C2002A */ sb $v0, 0x2a($a2) +/* 2C170 80050D70 24A2FF06 */ addiu $v0, $a1, -0xfa +.L80050D74: +/* 2C174 80050D74 3042FFFF */ andi $v0, $v0, 0xffff +/* 2C178 80050D78 2C422617 */ sltiu $v0, $v0, 0x2617 +/* 2C17C 80050D7C 10400022 */ beqz $v0, .L80050E08 +/* 2C180 80050D80 3C041CF0 */ lui $a0, 0x1cf0 +/* 2C184 80050D84 34846ADB */ ori $a0, $a0, 0x6adb +/* 2C188 80050D88 30A3FFFF */ andi $v1, $a1, 0xffff +/* 2C18C 80050D8C 00031080 */ sll $v0, $v1, 2 +/* 2C190 80050D90 00431021 */ addu $v0, $v0, $v1 +/* 2C194 80050D94 00021040 */ sll $v0, $v0, 1 +/* 2C198 80050D98 00440019 */ multu $v0, $a0 +/* 2C19C 80050D9C 90C3002B */ lbu $v1, 0x2b($a2) +/* 2C1A0 80050DA0 00002010 */ mfhi $a0 +/* 2C1A4 80050DA4 00441023 */ subu $v0, $v0, $a0 +/* 2C1A8 80050DA8 00021042 */ srl $v0, $v0, 1 +/* 2C1AC 80050DAC 00822021 */ addu $a0, $a0, $v0 +/* 2C1B0 80050DB0 90C2002A */ lbu $v0, 0x2a($a2) +/* 2C1B4 80050DB4 00042182 */ srl $a0, $a0, 6 +/* 2C1B8 80050DB8 00621823 */ subu $v1, $v1, $v0 +/* 2C1BC 80050DBC 00031E00 */ sll $v1, $v1, 0x18 +/* 2C1C0 80050DC0 3082FFFF */ andi $v0, $a0, 0xffff +/* 2C1C4 80050DC4 14400002 */ bnez $v0, .L80050DD0 +/* 2C1C8 80050DC8 0062001A */ div $zero, $v1, $v0 +/* 2C1CC 80050DCC 0007000D */ break 7 +.L80050DD0: +/* 2C1D0 80050DD0 2401FFFF */ addiu $at, $zero, -1 +/* 2C1D4 80050DD4 14410004 */ bne $v0, $at, .L80050DE8 +/* 2C1D8 80050DD8 3C018000 */ lui $at, 0x8000 +/* 2C1DC 80050DDC 14610002 */ bne $v1, $at, .L80050DE8 +/* 2C1E0 80050DE0 00000000 */ nop +/* 2C1E4 80050DE4 0006000D */ break 6 +.L80050DE8: +/* 2C1E8 80050DE8 00001812 */ mflo $v1 +/* 2C1EC 80050DEC 90C5002B */ lbu $a1, 0x2b($a2) +/* 2C1F0 80050DF0 90C2002A */ lbu $v0, 0x2a($a2) +/* 2C1F4 80050DF4 A0C50042 */ sb $a1, 0x42($a2) +/* 2C1F8 80050DF8 A4C40040 */ sh $a0, 0x40($a2) +/* 2C1FC 80050DFC 00021600 */ sll $v0, $v0, 0x18 +/* 2C200 80050E00 ACC20038 */ sw $v0, 0x38($a2) +/* 2C204 80050E04 ACC3003C */ sw $v1, 0x3c($a2) +.L80050E08: +/* 2C208 80050E08 A4C00028 */ sh $zero, 0x28($a2) +/* 2C20C 80050E0C A0C0002A */ sb $zero, 0x2a($a2) +/* 2C210 80050E10 03E00008 */ jr $ra +/* 2C214 80050E14 A0C0002B */ sb $zero, 0x2b($a2) diff --git a/asm/nonmatchings/code_2BF90/func_80050E18.s b/asm/nonmatchings/code_2BF90/func_80050E18.s new file mode 100644 index 0000000000..e6fd996388 --- /dev/null +++ b/asm/nonmatchings/code_2BF90/func_80050E18.s @@ -0,0 +1,33 @@ +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches + +glabel func_80050E18 +/* 2C218 80050E18 00041100 */ sll $v0, $a0, 4 +/* 2C21C 80050E1C 00441023 */ subu $v0, $v0, $a0 +/* 2C220 80050E20 000210C0 */ sll $v0, $v0, 3 +/* 2C224 80050E24 00441021 */ addu $v0, $v0, $a0 +/* 2C228 80050E28 00021080 */ sll $v0, $v0, 2 +/* 2C22C 80050E2C 3C03800A */ lui $v1, %hi(D_8009A628) +/* 2C230 80050E30 8C63A628 */ lw $v1, %lo(D_8009A628)($v1) +/* 2C234 80050E34 24420024 */ addiu $v0, $v0, 0x24 +/* 2C238 80050E38 00621821 */ addu $v1, $v1, $v0 +/* 2C23C 80050E3C 8C620004 */ lw $v0, 4($v1) +/* 2C240 80050E40 1040000E */ beqz $v0, .L80050E7C +/* 2C244 80050E44 00000000 */ nop +/* 2C248 80050E48 8C620008 */ lw $v0, 8($v1) +/* 2C24C 80050E4C 1040000B */ beqz $v0, .L80050E7C +/* 2C250 80050E50 00000000 */ nop +/* 2C254 80050E54 10A00008 */ beqz $a1, .L80050E78 +/* 2C258 80050E58 24020003 */ addiu $v0, $zero, 3 +/* 2C25C 80050E5C 240200FF */ addiu $v0, $zero, 0xff +/* 2C260 80050E60 A062002A */ sb $v0, 0x2a($v1) +/* 2C264 80050E64 24020002 */ addiu $v0, $zero, 2 +/* 2C268 80050E68 A4650028 */ sh $a1, 0x28($v1) +/* 2C26C 80050E6C A060002B */ sb $zero, 0x2b($v1) +/* 2C270 80050E70 03E00008 */ jr $ra +/* 2C274 80050E74 A0620026 */ sb $v0, 0x26($v1) +.L80050E78: +/* 2C278 80050E78 A0620024 */ sb $v0, 0x24($v1) +.L80050E7C: +/* 2C27C 80050E7C 03E00008 */ jr $ra +/* 2C280 80050E80 00000000 */ nop diff --git a/asm/nonmatchings/code_2BF90/func_80050E84.s b/asm/nonmatchings/code_2BF90/func_80050E84.s new file mode 100644 index 0000000000..75f1b02c0f --- /dev/null +++ b/asm/nonmatchings/code_2BF90/func_80050E84.s @@ -0,0 +1,34 @@ +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches + +glabel func_80050E84 +/* 2C284 80050E84 00041100 */ sll $v0, $a0, 4 +/* 2C288 80050E88 00441023 */ subu $v0, $v0, $a0 +/* 2C28C 80050E8C 000210C0 */ sll $v0, $v0, 3 +/* 2C290 80050E90 00441021 */ addu $v0, $v0, $a0 +/* 2C294 80050E94 00021080 */ sll $v0, $v0, 2 +/* 2C298 80050E98 3C03800A */ lui $v1, %hi(D_8009A628) +/* 2C29C 80050E9C 8C63A628 */ lw $v1, %lo(D_8009A628)($v1) +/* 2C2A0 80050EA0 24420024 */ addiu $v0, $v0, 0x24 +/* 2C2A4 80050EA4 00621821 */ addu $v1, $v1, $v0 +/* 2C2A8 80050EA8 8C620004 */ lw $v0, 4($v1) +/* 2C2AC 80050EAC 1040000E */ beqz $v0, .L80050EE8 +/* 2C2B0 80050EB0 00000000 */ nop +/* 2C2B4 80050EB4 8C620008 */ lw $v0, 8($v1) +/* 2C2B8 80050EB8 1040000B */ beqz $v0, .L80050EE8 +/* 2C2BC 80050EBC 24020001 */ addiu $v0, $zero, 1 +/* 2C2C0 80050EC0 10A00003 */ beqz $a1, .L80050ED0 +/* 2C2C4 80050EC4 A0620024 */ sb $v0, 0x24($v1) +/* 2C2C8 80050EC8 080143B6 */ j .L80050ED8 +/* 2C2CC 80050ECC A4650028 */ sh $a1, 0x28($v1) +.L80050ED0: +/* 2C2D0 80050ED0 240200FA */ addiu $v0, $zero, 0xfa +/* 2C2D4 80050ED4 A4620028 */ sh $v0, 0x28($v1) +.L80050ED8: +/* 2C2D8 80050ED8 2402007F */ addiu $v0, $zero, 0x7f +/* 2C2DC 80050EDC A060002A */ sb $zero, 0x2a($v1) +/* 2C2E0 80050EE0 A062002B */ sb $v0, 0x2b($v1) +/* 2C2E4 80050EE4 A0600026 */ sb $zero, 0x26($v1) +.L80050EE8: +/* 2C2E8 80050EE8 03E00008 */ jr $ra +/* 2C2EC 80050EEC 00000000 */ nop diff --git a/asm/nonmatchings/code_2BF90/func_80050EF0.s b/asm/nonmatchings/code_2BF90/func_80050EF0.s new file mode 100644 index 0000000000..592b76bcf4 --- /dev/null +++ b/asm/nonmatchings/code_2BF90/func_80050EF0.s @@ -0,0 +1,35 @@ +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches + +glabel func_80050EF0 +/* 2C2F0 80050EF0 00041100 */ sll $v0, $a0, 4 +/* 2C2F4 80050EF4 00441023 */ subu $v0, $v0, $a0 +/* 2C2F8 80050EF8 000210C0 */ sll $v0, $v0, 3 +/* 2C2FC 80050EFC 00441021 */ addu $v0, $v0, $a0 +/* 2C300 80050F00 00021080 */ sll $v0, $v0, 2 +/* 2C304 80050F04 3C03800A */ lui $v1, %hi(D_8009A628) +/* 2C308 80050F08 8C63A628 */ lw $v1, %lo(D_8009A628)($v1) +/* 2C30C 80050F0C 24420024 */ addiu $v0, $v0, 0x24 +/* 2C310 80050F10 00621821 */ addu $v1, $v1, $v0 +/* 2C314 80050F14 8C620004 */ lw $v0, 4($v1) +/* 2C318 80050F18 10400010 */ beqz $v0, .L80050F5C +/* 2C31C 80050F1C 00000000 */ nop +/* 2C320 80050F20 8C620008 */ lw $v0, 8($v1) +/* 2C324 80050F24 1040000D */ beqz $v0, .L80050F5C +/* 2C328 80050F28 00000000 */ nop +/* 2C32C 80050F2C 90620024 */ lbu $v0, 0x24($v1) +/* 2C330 80050F30 10400005 */ beqz $v0, .L80050F48 +/* 2C334 80050F34 00000000 */ nop +/* 2C338 80050F38 AC600008 */ sw $zero, 8($v1) +/* 2C33C 80050F3C AC600020 */ sw $zero, 0x20($v1) +/* 2C340 80050F40 03E00008 */ jr $ra +/* 2C344 80050F44 A0600024 */ sb $zero, 0x24($v1) +.L80050F48: +/* 2C348 80050F48 3C028008 */ lui $v0, %hi(D_80078520) +/* 2C34C 80050F4C 24428520 */ addiu $v0, $v0, %lo(D_80078520) +/* 2C350 80050F50 AC620008 */ sw $v0, 8($v1) +/* 2C354 80050F54 24020001 */ addiu $v0, $zero, 1 +/* 2C358 80050F58 AC620018 */ sw $v0, 0x18($v1) +.L80050F5C: +/* 2C35C 80050F5C 03E00008 */ jr $ra +/* 2C360 80050F60 00000000 */ nop diff --git a/asm/nonmatchings/code_2BF90/func_80050F64.s b/asm/nonmatchings/code_2BF90/func_80050F64.s new file mode 100644 index 0000000000..b33439e0f0 --- /dev/null +++ b/asm/nonmatchings/code_2BF90/func_80050F64.s @@ -0,0 +1,34 @@ +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches + +glabel func_80050F64 +/* 2C364 80050F64 00041100 */ sll $v0, $a0, 4 +/* 2C368 80050F68 00441023 */ subu $v0, $v0, $a0 +/* 2C36C 80050F6C 000210C0 */ sll $v0, $v0, 3 +/* 2C370 80050F70 00441021 */ addu $v0, $v0, $a0 +/* 2C374 80050F74 00021080 */ sll $v0, $v0, 2 +/* 2C378 80050F78 3C03800A */ lui $v1, %hi(D_8009A628) +/* 2C37C 80050F7C 8C63A628 */ lw $v1, %lo(D_8009A628)($v1) +/* 2C380 80050F80 24420024 */ addiu $v0, $v0, 0x24 +/* 2C384 80050F84 00621821 */ addu $v1, $v1, $v0 +/* 2C388 80050F88 8C620004 */ lw $v0, 4($v1) +/* 2C38C 80050F8C 1040000E */ beqz $v0, .L80050FC8 +/* 2C390 80050F90 00000000 */ nop +/* 2C394 80050F94 8C620008 */ lw $v0, 8($v1) +/* 2C398 80050F98 1040000B */ beqz $v0, .L80050FC8 +/* 2C39C 80050F9C 00000000 */ nop +/* 2C3A0 80050FA0 10A00003 */ beqz $a1, .L80050FB0 +/* 2C3A4 80050FA4 240200FA */ addiu $v0, $zero, 0xfa +/* 2C3A8 80050FA8 080143ED */ j .L80050FB4 +/* 2C3AC 80050FAC A4650028 */ sh $a1, 0x28($v1) +.L80050FB0: +/* 2C3B0 80050FB0 A4620028 */ sh $v0, 0x28($v1) +.L80050FB4: +/* 2C3B4 80050FB4 240200FF */ addiu $v0, $zero, 0xff +/* 2C3B8 80050FB8 A062002A */ sb $v0, 0x2a($v1) +/* 2C3BC 80050FBC 24020001 */ addiu $v0, $zero, 1 +/* 2C3C0 80050FC0 A060002B */ sb $zero, 0x2b($v1) +/* 2C3C4 80050FC4 A0620026 */ sb $v0, 0x26($v1) +.L80050FC8: +/* 2C3C8 80050FC8 03E00008 */ jr $ra +/* 2C3CC 80050FCC 00000000 */ nop diff --git a/asm/nonmatchings/code_2BF90/func_80050FD0.s b/asm/nonmatchings/code_2BF90/func_80050FD0.s new file mode 100644 index 0000000000..50ea0d38f7 --- /dev/null +++ b/asm/nonmatchings/code_2BF90/func_80050FD0.s @@ -0,0 +1,41 @@ +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches + +glabel func_80050FD0 +/* 2C3D0 80050FD0 00041100 */ sll $v0, $a0, 4 +/* 2C3D4 80050FD4 00441023 */ subu $v0, $v0, $a0 +/* 2C3D8 80050FD8 000210C0 */ sll $v0, $v0, 3 +/* 2C3DC 80050FDC 00441021 */ addu $v0, $v0, $a0 +/* 2C3E0 80050FE0 00021080 */ sll $v0, $v0, 2 +/* 2C3E4 80050FE4 3C03800A */ lui $v1, %hi(D_8009A628) +/* 2C3E8 80050FE8 8C63A628 */ lw $v1, %lo(D_8009A628)($v1) +/* 2C3EC 80050FEC 24420024 */ addiu $v0, $v0, 0x24 +/* 2C3F0 80050FF0 00621821 */ addu $v1, $v1, $v0 +/* 2C3F4 80050FF4 8C620004 */ lw $v0, 4($v1) +/* 2C3F8 80050FF8 10400013 */ beqz $v0, .L80051048 +/* 2C3FC 80050FFC 00000000 */ nop +/* 2C400 80051000 8C620008 */ lw $v0, 8($v1) +/* 2C404 80051004 10400010 */ beqz $v0, .L80051048 +/* 2C408 80051008 00000000 */ nop +/* 2C40C 8005100C 1CC00003 */ bgtz $a2, .L8005101C +/* 2C410 80051010 28C20080 */ slti $v0, $a2, 0x80 +/* 2C414 80051014 08014409 */ j .L80051024 +/* 2C418 80051018 24060001 */ addiu $a2, $zero, 1 +.L8005101C: +/* 2C41C 8005101C 50400001 */ beql $v0, $zero, .L80051024 +/* 2C420 80051020 2406007F */ addiu $a2, $zero, 0x7f +.L80051024: +/* 2C424 80051024 10A00003 */ beqz $a1, .L80051034 +/* 2C428 80051028 240200FA */ addiu $v0, $zero, 0xfa +/* 2C42C 8005102C 0801440E */ j .L80051038 +/* 2C430 80051030 A4650028 */ sh $a1, 0x28($v1) +.L80051034: +/* 2C434 80051034 A4620028 */ sh $v0, 0x28($v1) +.L80051038: +/* 2C438 80051038 240200FF */ addiu $v0, $zero, 0xff +/* 2C43C 8005103C A062002A */ sb $v0, 0x2a($v1) +/* 2C440 80051040 A066002B */ sb $a2, 0x2b($v1) +/* 2C444 80051044 A0600026 */ sb $zero, 0x26($v1) +.L80051048: +/* 2C448 80051048 03E00008 */ jr $ra +/* 2C44C 8005104C 00000000 */ nop diff --git a/asm/nonmatchings/code_2BF90/func_80051050.s b/asm/nonmatchings/code_2BF90/func_80051050.s new file mode 100644 index 0000000000..4843baf201 --- /dev/null +++ b/asm/nonmatchings/code_2BF90/func_80051050.s @@ -0,0 +1,26 @@ +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches + +glabel func_80051050 +/* 2C450 80051050 00041100 */ sll $v0, $a0, 4 +/* 2C454 80051054 00441023 */ subu $v0, $v0, $a0 +/* 2C458 80051058 000210C0 */ sll $v0, $v0, 3 +/* 2C45C 8005105C 00441021 */ addu $v0, $v0, $a0 +/* 2C460 80051060 00021080 */ sll $v0, $v0, 2 +/* 2C464 80051064 3C03800A */ lui $v1, %hi(D_8009A628) +/* 2C468 80051068 8C63A628 */ lw $v1, %lo(D_8009A628)($v1) +/* 2C46C 8005106C 24420024 */ addiu $v0, $v0, 0x24 +/* 2C470 80051070 00621821 */ addu $v1, $v1, $v0 +/* 2C474 80051074 8C620004 */ lw $v0, 4($v1) +/* 2C478 80051078 10400008 */ beqz $v0, .L8005109C +/* 2C47C 8005107C 0000202D */ daddu $a0, $zero, $zero +/* 2C480 80051080 8C620008 */ lw $v0, 8($v1) +/* 2C484 80051084 10400005 */ beqz $v0, .L8005109C +/* 2C488 80051088 00000000 */ nop +/* 2C48C 8005108C 90620024 */ lbu $v0, 0x24($v1) +/* 2C490 80051090 10400002 */ beqz $v0, .L8005109C +/* 2C494 80051094 24040001 */ addiu $a0, $zero, 1 +/* 2C498 80051098 24040002 */ addiu $a0, $zero, 2 +.L8005109C: +/* 2C49C 8005109C 03E00008 */ jr $ra +/* 2C4A0 800510A0 0080102D */ daddu $v0, $a0, $zero diff --git a/asm/nonmatchings/code_2BF90/func_800510A4.s b/asm/nonmatchings/code_2BF90/func_800510A4.s new file mode 100644 index 0000000000..e35710649e --- /dev/null +++ b/asm/nonmatchings/code_2BF90/func_800510A4.s @@ -0,0 +1,76 @@ +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches + +glabel func_800510A4 +/* 2C4A4 800510A4 27BDFFD8 */ addiu $sp, $sp, -0x28 +/* 2C4A8 800510A8 AFB3001C */ sw $s3, 0x1c($sp) +/* 2C4AC 800510AC 0080982D */ daddu $s3, $a0, $zero +/* 2C4B0 800510B0 AFB00010 */ sw $s0, 0x10($sp) +/* 2C4B4 800510B4 00A0802D */ daddu $s0, $a1, $zero +/* 2C4B8 800510B8 AFB10014 */ sw $s1, 0x14($sp) +/* 2C4BC 800510BC 00C0882D */ daddu $s1, $a2, $zero +/* 2C4C0 800510C0 00111100 */ sll $v0, $s1, 4 +/* 2C4C4 800510C4 00511023 */ subu $v0, $v0, $s1 +/* 2C4C8 800510C8 000210C0 */ sll $v0, $v0, 3 +/* 2C4CC 800510CC 00511021 */ addu $v0, $v0, $s1 +/* 2C4D0 800510D0 00021080 */ sll $v0, $v0, 2 +/* 2C4D4 800510D4 24420024 */ addiu $v0, $v0, 0x24 +/* 2C4D8 800510D8 AFB20018 */ sw $s2, 0x18($sp) +/* 2C4DC 800510DC 02629021 */ addu $s2, $s3, $v0 +/* 2C4E0 800510E0 0240202D */ daddu $a0, $s2, $zero +/* 2C4E4 800510E4 240501E4 */ addiu $a1, $zero, 0x1e4 +/* 2C4E8 800510E8 AFBF0020 */ sw $ra, 0x20($sp) +/* 2C4EC 800510EC 0C0153A4 */ jal func_80054E90 +/* 2C4F0 800510F0 0000302D */ daddu $a2, $zero, $zero +/* 2C4F4 800510F4 AE500000 */ sw $s0, ($s2) +/* 2C4F8 800510F8 96030010 */ lhu $v1, 0x10($s0) +/* 2C4FC 800510FC 24020001 */ addiu $v0, $zero, 1 +/* 2C500 80051100 AE420018 */ sw $v0, 0x18($s2) +/* 2C504 80051104 3C027F00 */ lui $v0, 0x7f00 +/* 2C508 80051108 AE420038 */ sw $v0, 0x38($s2) +/* 2C50C 8005110C 2402007F */ addiu $v0, $zero, 0x7f +/* 2C510 80051110 A2420042 */ sb $v0, 0x42($s2) +/* 2C514 80051114 0200102D */ daddu $v0, $s0, $zero +/* 2C518 80051118 A2510014 */ sb $s1, 0x14($s2) +/* 2C51C 8005111C 02038021 */ addu $s0, $s0, $v1 +/* 2C520 80051120 AE500008 */ sw $s0, 8($s2) +/* 2C524 80051124 AE500010 */ sw $s0, 0x10($s2) +/* 2C528 80051128 AE50000C */ sw $s0, 0xc($s2) +/* 2C52C 8005112C AE500004 */ sw $s0, 4($s2) +/* 2C530 80051130 8C420008 */ lw $v0, 8($v0) +/* 2C534 80051134 8E430000 */ lw $v1, ($s2) +/* 2C538 80051138 AE420020 */ sw $v0, 0x20($s2) +/* 2C53C 8005113C 9062000C */ lbu $v0, 0xc($v1) +/* 2C540 80051140 AE420030 */ sw $v0, 0x30($s2) +/* 2C544 80051144 24420010 */ addiu $v0, $v0, 0x10 +/* 2C548 80051148 AE420034 */ sw $v0, 0x34($s2) +/* 2C54C 8005114C 2C420019 */ sltiu $v0, $v0, 0x19 +/* 2C550 80051150 14400003 */ bnez $v0, .L80051160 +/* 2C554 80051154 0000282D */ daddu $a1, $zero, $zero +/* 2C558 80051158 24020018 */ addiu $v0, $zero, 0x18 +/* 2C55C 8005115C AE420034 */ sw $v0, 0x34($s2) +.L80051160: +/* 2C560 80051160 3C067FFF */ lui $a2, 0x7fff +/* 2C564 80051164 34C6FFFF */ ori $a2, $a2, 0xffff +/* 2C568 80051168 24070040 */ addiu $a3, $zero, 0x40 +/* 2C56C 8005116C 24040044 */ addiu $a0, $zero, 0x44 +.L80051170: +/* 2C570 80051170 02441821 */ addu $v1, $s2, $a0 +/* 2C574 80051174 8E620000 */ lw $v0, ($s3) +/* 2C578 80051178 8C420004 */ lw $v0, 4($v0) +/* 2C57C 8005117C 24A50001 */ addiu $a1, $a1, 1 +/* 2C580 80051180 AC660018 */ sw $a2, 0x18($v1) +/* 2C584 80051184 A0670024 */ sb $a3, 0x24($v1) +/* 2C588 80051188 AC620000 */ sw $v0, ($v1) +/* 2C58C 8005118C 28A2000A */ slti $v0, $a1, 0xa +/* 2C590 80051190 1440FFF7 */ bnez $v0, .L80051170 +/* 2C594 80051194 24840028 */ addiu $a0, $a0, 0x28 +/* 2C598 80051198 24020001 */ addiu $v0, $zero, 1 +/* 2C59C 8005119C A2420043 */ sb $v0, 0x43($s2) +/* 2C5A0 800511A0 8FBF0020 */ lw $ra, 0x20($sp) +/* 2C5A4 800511A4 8FB3001C */ lw $s3, 0x1c($sp) +/* 2C5A8 800511A8 8FB20018 */ lw $s2, 0x18($sp) +/* 2C5AC 800511AC 8FB10014 */ lw $s1, 0x14($sp) +/* 2C5B0 800511B0 8FB00010 */ lw $s0, 0x10($sp) +/* 2C5B4 800511B4 03E00008 */ jr $ra +/* 2C5B8 800511B8 27BD0028 */ addiu $sp, $sp, 0x28 diff --git a/asm/nonmatchings/code_28910_len_5090/func_800511BC.s b/asm/nonmatchings/code_2BF90/func_800511BC.s similarity index 100% rename from asm/nonmatchings/code_28910_len_5090/func_800511BC.s rename to asm/nonmatchings/code_2BF90/func_800511BC.s diff --git a/asm/nonmatchings/code_2BF90/func_80051334.s b/asm/nonmatchings/code_2BF90/func_80051334.s new file mode 100644 index 0000000000..36dae0e8ac --- /dev/null +++ b/asm/nonmatchings/code_2BF90/func_80051334.s @@ -0,0 +1,77 @@ +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches + +glabel func_80051334 +/* 2C734 80051334 8CA30000 */ lw $v1, ($a1) +/* 2C738 80051338 9067000D */ lbu $a3, 0xd($v1) +/* 2C73C 8005133C 10E0003B */ beqz $a3, .L8005142C +/* 2C740 80051340 00000000 */ nop +/* 2C744 80051344 9462000E */ lhu $v0, 0xe($v1) +/* 2C748 80051348 10400038 */ beqz $v0, .L8005142C +/* 2C74C 8005134C 24E7FFFF */ addiu $a3, $a3, -1 +/* 2C750 80051350 24090001 */ addiu $t1, $zero, 1 +/* 2C754 80051354 00624021 */ addu $t0, $v1, $v0 +/* 2C758 80051358 25040006 */ addiu $a0, $t0, 6 +.L8005135C: +/* 2C75C 8005135C 91030000 */ lbu $v1, ($t0) +/* 2C760 80051360 00031080 */ sll $v0, $v1, 2 +/* 2C764 80051364 00431021 */ addu $v0, $v0, $v1 +/* 2C768 80051368 000210C0 */ sll $v0, $v0, 3 +/* 2C76C 8005136C 24420044 */ addiu $v0, $v0, 0x44 +/* 2C770 80051370 9083FFFB */ lbu $v1, -5($a0) +/* 2C774 80051374 14600014 */ bnez $v1, .L800513C8 +/* 2C778 80051378 00A23021 */ addu $a2, $a1, $v0 +/* 2C77C 8005137C 9482FFFC */ lhu $v0, -4($a0) +/* 2C780 80051380 A4C20014 */ sh $v0, 0x14($a2) +/* 2C784 80051384 8482FFFE */ lh $v0, -2($a0) +/* 2C788 80051388 8483FFFC */ lh $v1, -4($a0) +/* 2C78C 8005138C 00021400 */ sll $v0, $v0, 0x10 +/* 2C790 80051390 14600002 */ bnez $v1, .L8005139C +/* 2C794 80051394 0043001A */ div $zero, $v0, $v1 +/* 2C798 80051398 0007000D */ break 7 +.L8005139C: +/* 2C79C 8005139C 2401FFFF */ addiu $at, $zero, -1 +/* 2C7A0 800513A0 14610004 */ bne $v1, $at, .L800513B4 +/* 2C7A4 800513A4 3C018000 */ lui $at, 0x8000 +/* 2C7A8 800513A8 14410002 */ bne $v0, $at, .L800513B4 +/* 2C7AC 800513AC 00000000 */ nop +/* 2C7B0 800513B0 0006000D */ break 6 +.L800513B4: +/* 2C7B4 800513B4 00001012 */ mflo $v0 +/* 2C7B8 800513B8 ACC20010 */ sw $v0, 0x10($a2) +/* 2C7BC 800513BC 94820000 */ lhu $v0, ($a0) +/* 2C7C0 800513C0 08014506 */ j .L80051418 +/* 2C7C4 800513C4 A4C20016 */ sh $v0, 0x16($a2) +.L800513C8: +/* 2C7C8 800513C8 54690014 */ bnel $v1, $t1, .L8005141C +/* 2C7CC 800513CC 24840008 */ addiu $a0, $a0, 8 +/* 2C7D0 800513D0 9482FFFC */ lhu $v0, -4($a0) +/* 2C7D4 800513D4 A4C20020 */ sh $v0, 0x20($a2) +/* 2C7D8 800513D8 8482FFFE */ lh $v0, -2($a0) +/* 2C7DC 800513DC 8483FFFC */ lh $v1, -4($a0) +/* 2C7E0 800513E0 00021400 */ sll $v0, $v0, 0x10 +/* 2C7E4 800513E4 14600002 */ bnez $v1, .L800513F0 +/* 2C7E8 800513E8 0043001A */ div $zero, $v0, $v1 +/* 2C7EC 800513EC 0007000D */ break 7 +.L800513F0: +/* 2C7F0 800513F0 2401FFFF */ addiu $at, $zero, -1 +/* 2C7F4 800513F4 14610004 */ bne $v1, $at, .L80051408 +/* 2C7F8 800513F8 3C018000 */ lui $at, 0x8000 +/* 2C7FC 800513FC 14410002 */ bne $v0, $at, .L80051408 +/* 2C800 80051400 00000000 */ nop +/* 2C804 80051404 0006000D */ break 6 +.L80051408: +/* 2C808 80051408 00001012 */ mflo $v0 +/* 2C80C 8005140C ACC2001C */ sw $v0, 0x1c($a2) +/* 2C810 80051410 94820000 */ lhu $v0, ($a0) +/* 2C814 80051414 A4C20022 */ sh $v0, 0x22($a2) +.L80051418: +/* 2C818 80051418 24840008 */ addiu $a0, $a0, 8 +.L8005141C: +/* 2C81C 8005141C 25080008 */ addiu $t0, $t0, 8 +/* 2C820 80051420 00E0102D */ daddu $v0, $a3, $zero +/* 2C824 80051424 1440FFCD */ bnez $v0, .L8005135C +/* 2C828 80051428 24E7FFFF */ addiu $a3, $a3, -1 +.L8005142C: +/* 2C82C 8005142C 03E00008 */ jr $ra +/* 2C830 80051430 00000000 */ nop diff --git a/asm/nonmatchings/code_2BF90/func_80051434.s b/asm/nonmatchings/code_2BF90/func_80051434.s new file mode 100644 index 0000000000..029e68fdef --- /dev/null +++ b/asm/nonmatchings/code_2BF90/func_80051434.s @@ -0,0 +1,941 @@ +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches + +glabel func_80051434 +/* 2C834 80051434 27BDFF90 */ addiu $sp, $sp, -0x70 +/* 2C838 80051438 AFB5005C */ sw $s5, 0x5c($sp) +/* 2C83C 8005143C 00A0A82D */ daddu $s5, $a1, $zero +/* 2C840 80051440 AFB00048 */ sw $s0, 0x48($sp) +/* 2C844 80051444 0000802D */ daddu $s0, $zero, $zero +/* 2C848 80051448 27A50010 */ addiu $a1, $sp, 0x10 +/* 2C84C 8005144C AFBF006C */ sw $ra, 0x6c($sp) +/* 2C850 80051450 AFBE0068 */ sw $fp, 0x68($sp) +/* 2C854 80051454 AFB70064 */ sw $s7, 0x64($sp) +/* 2C858 80051458 AFB60060 */ sw $s6, 0x60($sp) +/* 2C85C 8005145C AFB40058 */ sw $s4, 0x58($sp) +/* 2C860 80051460 AFB30054 */ sw $s3, 0x54($sp) +/* 2C864 80051464 AFB20050 */ sw $s2, 0x50($sp) +/* 2C868 80051468 AFB1004C */ sw $s1, 0x4c($sp) +/* 2C86C 8005146C AFA40070 */ sw $a0, 0x70($sp) +/* 2C870 80051470 8C880000 */ lw $t0, ($a0) +/* 2C874 80051474 27A40020 */ addiu $a0, $sp, 0x20 +/* 2C878 80051478 A3A00034 */ sb $zero, 0x34($sp) +/* 2C87C 8005147C AFA80030 */ sw $t0, 0x30($sp) +.L80051480: +/* 2C880 80051480 00B01021 */ addu $v0, $a1, $s0 +/* 2C884 80051484 00901821 */ addu $v1, $a0, $s0 +/* 2C888 80051488 26100001 */ addiu $s0, $s0, 1 +/* 2C88C 8005148C A0400000 */ sb $zero, ($v0) +/* 2C890 80051490 2E020010 */ sltiu $v0, $s0, 0x10 +/* 2C894 80051494 1440FFFA */ bnez $v0, .L80051480 +/* 2C898 80051498 A0600000 */ sb $zero, ($v1) +/* 2C89C 8005149C 92A20043 */ lbu $v0, 0x43($s5) +/* 2C8A0 800514A0 24100001 */ addiu $s0, $zero, 1 +/* 2C8A4 800514A4 14500005 */ bne $v0, $s0, .L800514BC +/* 2C8A8 800514A8 00000000 */ nop +/* 2C8AC 800514AC 8FA40070 */ lw $a0, 0x70($sp) +/* 2C8B0 800514B0 0C01487A */ jal func_800521E8 +/* 2C8B4 800514B4 02A0282D */ daddu $a1, $s5, $zero +/* 2C8B8 800514B8 A2A00043 */ sb $zero, 0x43($s5) +.L800514BC: +/* 2C8BC 800514BC 96A20040 */ lhu $v0, 0x40($s5) +/* 2C8C0 800514C0 10400024 */ beqz $v0, .L80051554 +/* 2C8C4 800514C4 0000B02D */ daddu $s6, $zero, $zero +/* 2C8C8 800514C8 8EA20038 */ lw $v0, 0x38($s5) +/* 2C8CC 800514CC 8EA4003C */ lw $a0, 0x3c($s5) +/* 2C8D0 800514D0 96A30040 */ lhu $v1, 0x40($s5) +/* 2C8D4 800514D4 00441021 */ addu $v0, $v0, $a0 +/* 2C8D8 800514D8 2463FFFF */ addiu $v1, $v1, -1 +/* 2C8DC 800514DC A6A30040 */ sh $v1, 0x40($s5) +/* 2C8E0 800514E0 3063FFFF */ andi $v1, $v1, 0xffff +/* 2C8E4 800514E4 14600018 */ bnez $v1, .L80051548 +/* 2C8E8 800514E8 AEA20038 */ sw $v0, 0x38($s5) +/* 2C8EC 800514EC 92A20042 */ lbu $v0, 0x42($s5) +/* 2C8F0 800514F0 92A30026 */ lbu $v1, 0x26($s5) +/* 2C8F4 800514F4 00021600 */ sll $v0, $v0, 0x18 +/* 2C8F8 800514F8 10600013 */ beqz $v1, .L80051548 +/* 2C8FC 800514FC AEA20038 */ sw $v0, 0x38($s5) +/* 2C900 80051500 1470000D */ bne $v1, $s0, .L80051538 +/* 2C904 80051504 24020002 */ addiu $v0, $zero, 2 +/* 2C908 80051508 3C028008 */ lui $v0, %hi(D_80078520) +/* 2C90C 8005150C 24428520 */ addiu $v0, $v0, %lo(D_80078520) +/* 2C910 80051510 AEA20008 */ sw $v0, 8($s5) +/* 2C914 80051514 08014552 */ j .L80051548 +/* 2C918 80051518 AEA30018 */ sw $v1, 0x18($s5) +.L8005151C: +/* 2C91C 8005151C 8FA40070 */ lw $a0, 0x70($sp) +/* 2C920 80051520 02A0282D */ daddu $a1, $s5, $zero +/* 2C924 80051524 AEA00008 */ sw $zero, 8($s5) +/* 2C928 80051528 0C01487A */ jal func_800521E8 +/* 2C92C 8005152C AEA00020 */ sw $zero, 0x20($s5) +/* 2C930 80051530 0801482F */ j .L800520BC +/* 2C934 80051534 00000000 */ nop +.L80051538: +/* 2C938 80051538 14620004 */ bne $v1, $v0, .L8005154C +/* 2C93C 8005153C 24080001 */ addiu $t0, $zero, 1 +/* 2C940 80051540 24020003 */ addiu $v0, $zero, 3 +/* 2C944 80051544 A2A20024 */ sb $v0, 0x24($s5) +.L80051548: +/* 2C948 80051548 24080001 */ addiu $t0, $zero, 1 +.L8005154C: +/* 2C94C 8005154C A3A80034 */ sb $t0, 0x34($sp) +/* 2C950 80051550 0000B02D */ daddu $s6, $zero, $zero +.L80051554: +/* 2C954 80051554 27A80020 */ addiu $t0, $sp, 0x20 +/* 2C958 80051558 AFA80038 */ sw $t0, 0x38($sp) +/* 2C95C 8005155C 241E0044 */ addiu $fp, $zero, 0x44 +.L80051560: +/* 2C960 80051560 02BE9821 */ addu $s3, $s5, $fp +/* 2C964 80051564 86620014 */ lh $v0, 0x14($s3) +/* 2C968 80051568 96630014 */ lhu $v1, 0x14($s3) +/* 2C96C 8005156C 10400042 */ beqz $v0, .L80051678 +/* 2C970 80051570 2462FFFF */ addiu $v0, $v1, -1 +/* 2C974 80051574 A6620014 */ sh $v0, 0x14($s3) +/* 2C978 80051578 00021400 */ sll $v0, $v0, 0x10 +/* 2C97C 8005157C 10400005 */ beqz $v0, .L80051594 +/* 2C980 80051580 00000000 */ nop +/* 2C984 80051584 8E62000C */ lw $v0, 0xc($s3) +/* 2C988 80051588 8E630010 */ lw $v1, 0x10($s3) +/* 2C98C 8005158C 08014567 */ j .L8005159C +/* 2C990 80051590 00431021 */ addu $v0, $v0, $v1 +.L80051594: +/* 2C994 80051594 86620016 */ lh $v0, 0x16($s3) +/* 2C998 80051598 00021400 */ sll $v0, $v0, 0x10 +.L8005159C: +/* 2C99C 8005159C AE62000C */ sw $v0, 0xc($s3) +/* 2C9A0 800515A0 00162400 */ sll $a0, $s6, 0x10 +/* 2C9A4 800515A4 8EB00030 */ lw $s0, 0x30($s5) +/* 2C9A8 800515A8 8EA30014 */ lw $v1, 0x14($s5) +/* 2C9AC 800515AC 8EA20034 */ lw $v0, 0x34($s5) +/* 2C9B0 800515B0 0202102B */ sltu $v0, $s0, $v0 +/* 2C9B4 800515B4 10400030 */ beqz $v0, .L80051678 +/* 2C9B8 800515B8 0064B821 */ addu $s7, $v1, $a0 +/* 2C9BC 800515BC 001010C0 */ sll $v0, $s0, 3 +/* 2C9C0 800515C0 00501021 */ addu $v0, $v0, $s0 +/* 2C9C4 800515C4 000210C0 */ sll $v0, $v0, 3 +/* 2C9C8 800515C8 24541320 */ addiu $s4, $v0, 0x1320 +.L800515CC: +/* 2C9CC 800515CC 8EA20030 */ lw $v0, 0x30($s5) +/* 2C9D0 800515D0 8FA80070 */ lw $t0, 0x70($sp) +/* 2C9D4 800515D4 02021023 */ subu $v0, $s0, $v0 +/* 2C9D8 800515D8 000210C0 */ sll $v0, $v0, 3 +/* 2C9DC 800515DC 244207B4 */ addiu $v0, $v0, 0x7b4 +/* 2C9E0 800515E0 01029021 */ addu $s2, $t0, $v0 +/* 2C9E4 800515E4 8E420000 */ lw $v0, ($s2) +/* 2C9E8 800515E8 3C08FFFF */ lui $t0, 0xffff +/* 2C9EC 800515EC 00481024 */ and $v0, $v0, $t0 +/* 2C9F0 800515F0 1457001C */ bne $v0, $s7, .L80051664 +/* 2C9F4 800515F4 00000000 */ nop +/* 2C9F8 800515F8 8FA80030 */ lw $t0, 0x30($sp) +/* 2C9FC 800515FC 01148821 */ addu $s1, $t0, $s4 +/* 2CA00 80051600 8FA80070 */ lw $t0, 0x70($sp) +/* 2CA04 80051604 92230045 */ lbu $v1, 0x45($s1) +/* 2CA08 80051608 91020022 */ lbu $v0, 0x22($t0) +/* 2CA0C 8005160C 14620015 */ bne $v1, $v0, .L80051664 +/* 2CA10 80051610 24080009 */ addiu $t0, $zero, 9 +/* 2CA14 80051614 12C80013 */ beq $s6, $t0, .L80051664 +/* 2CA18 80051618 00000000 */ nop +/* 2CA1C 8005161C 86420004 */ lh $v0, 4($s2) +/* 2CA20 80051620 8664000C */ lh $a0, 0xc($s3) +/* 2CA24 80051624 0C014E3E */ jal func_800538F8 +/* 2CA28 80051628 00442021 */ addu $a0, $v0, $a0 +/* 2CA2C 8005162C 8E620000 */ lw $v0, ($s3) +/* 2CA30 80051630 C4420020 */ lwc1 $f2, 0x20($v0) +/* 2CA34 80051634 46020002 */ mul.s $f0, $f0, $f2 +/* 2CA38 80051638 00000000 */ nop +/* 2CA3C 8005163C 92220043 */ lbu $v0, 0x43($s1) +/* 2CA40 80051640 34420008 */ ori $v0, $v0, 8 +/* 2CA44 80051644 A2220043 */ sb $v0, 0x43($s1) +/* 2CA48 80051648 E6200004 */ swc1 $f0, 4($s1) +/* 2CA4C 8005164C 8EA20030 */ lw $v0, 0x30($s5) +/* 2CA50 80051650 8FA80038 */ lw $t0, 0x38($sp) +/* 2CA54 80051654 02021023 */ subu $v0, $s0, $v0 +/* 2CA58 80051658 01021021 */ addu $v0, $t0, $v0 +/* 2CA5C 8005165C 24080001 */ addiu $t0, $zero, 1 +/* 2CA60 80051660 A0480000 */ sb $t0, ($v0) +.L80051664: +/* 2CA64 80051664 8EA20034 */ lw $v0, 0x34($s5) +/* 2CA68 80051668 26100001 */ addiu $s0, $s0, 1 +/* 2CA6C 8005166C 0202102B */ sltu $v0, $s0, $v0 +/* 2CA70 80051670 1440FFD6 */ bnez $v0, .L800515CC +/* 2CA74 80051674 26940048 */ addiu $s4, $s4, 0x48 +.L80051678: +/* 2CA78 80051678 26D60001 */ addiu $s6, $s6, 1 +/* 2CA7C 8005167C 2EC2000A */ sltiu $v0, $s6, 0xa +/* 2CA80 80051680 1440FFB7 */ bnez $v0, .L80051560 +/* 2CA84 80051684 27DE0028 */ addiu $fp, $fp, 0x28 +/* 2CA88 80051688 0000B02D */ daddu $s6, $zero, $zero +/* 2CA8C 8005168C 3C06FFFF */ lui $a2, 0xffff +/* 2CA90 80051690 24050044 */ addiu $a1, $zero, 0x44 +.L80051694: +/* 2CA94 80051694 02A59821 */ addu $s3, $s5, $a1 +/* 2CA98 80051698 86620020 */ lh $v0, 0x20($s3) +/* 2CA9C 8005169C 96630020 */ lhu $v1, 0x20($s3) +/* 2CAA0 800516A0 1040003F */ beqz $v0, .L800517A0 +/* 2CAA4 800516A4 2462FFFF */ addiu $v0, $v1, -1 +/* 2CAA8 800516A8 A6620020 */ sh $v0, 0x20($s3) +/* 2CAAC 800516AC 00021400 */ sll $v0, $v0, 0x10 +/* 2CAB0 800516B0 10400005 */ beqz $v0, .L800516C8 +/* 2CAB4 800516B4 00000000 */ nop +/* 2CAB8 800516B8 8E620018 */ lw $v0, 0x18($s3) +/* 2CABC 800516BC 8E63001C */ lw $v1, 0x1c($s3) +/* 2CAC0 800516C0 080145B4 */ j .L800516D0 +/* 2CAC4 800516C4 00431021 */ addu $v0, $v0, $v1 +.L800516C8: +/* 2CAC8 800516C8 86620022 */ lh $v0, 0x22($s3) +/* 2CACC 800516CC 00021400 */ sll $v0, $v0, 0x10 +.L800516D0: +/* 2CAD0 800516D0 AE620018 */ sw $v0, 0x18($s3) +/* 2CAD4 800516D4 00162400 */ sll $a0, $s6, 0x10 +/* 2CAD8 800516D8 8EB00030 */ lw $s0, 0x30($s5) +/* 2CADC 800516DC 8EA30014 */ lw $v1, 0x14($s5) +/* 2CAE0 800516E0 8EA20034 */ lw $v0, 0x34($s5) +/* 2CAE4 800516E4 0202102B */ sltu $v0, $s0, $v0 +/* 2CAE8 800516E8 1040002D */ beqz $v0, .L800517A0 +/* 2CAEC 800516EC 0064B821 */ addu $s7, $v1, $a0 +/* 2CAF0 800516F0 001010C0 */ sll $v0, $s0, 3 +/* 2CAF4 800516F4 00501021 */ addu $v0, $v0, $s0 +/* 2CAF8 800516F8 000210C0 */ sll $v0, $v0, 3 +/* 2CAFC 800516FC 24441320 */ addiu $a0, $v0, 0x1320 +.L80051700: +/* 2CB00 80051700 8EA20030 */ lw $v0, 0x30($s5) +/* 2CB04 80051704 8FA80070 */ lw $t0, 0x70($sp) +/* 2CB08 80051708 02021023 */ subu $v0, $s0, $v0 +/* 2CB0C 8005170C 000210C0 */ sll $v0, $v0, 3 +/* 2CB10 80051710 244207B4 */ addiu $v0, $v0, 0x7b4 +/* 2CB14 80051714 01029021 */ addu $s2, $t0, $v0 +/* 2CB18 80051718 8E420000 */ lw $v0, ($s2) +/* 2CB1C 8005171C 00461024 */ and $v0, $v0, $a2 +/* 2CB20 80051720 1457001A */ bne $v0, $s7, .L8005178C +/* 2CB24 80051724 00000000 */ nop +/* 2CB28 80051728 8FA80030 */ lw $t0, 0x30($sp) +/* 2CB2C 8005172C 01048821 */ addu $s1, $t0, $a0 +/* 2CB30 80051730 8FA80070 */ lw $t0, 0x70($sp) +/* 2CB34 80051734 92230045 */ lbu $v1, 0x45($s1) +/* 2CB38 80051738 91020022 */ lbu $v0, 0x22($t0) +/* 2CB3C 8005173C 14620013 */ bne $v1, $v0, .L8005178C +/* 2CB40 80051740 00000000 */ nop +/* 2CB44 80051744 92430001 */ lbu $v1, 1($s2) +/* 2CB48 80051748 00031080 */ sll $v0, $v1, 2 +/* 2CB4C 8005174C 00431021 */ addu $v0, $v0, $v1 +/* 2CB50 80051750 000210C0 */ sll $v0, $v0, 3 +/* 2CB54 80051754 00559821 */ addu $s3, $v0, $s5 +/* 2CB58 80051758 82A30038 */ lb $v1, 0x38($s5) +/* 2CB5C 8005175C 8662005C */ lh $v0, 0x5c($s3) +/* 2CB60 80051760 00620018 */ mult $v1, $v0 +/* 2CB64 80051764 00004012 */ mflo $t0 +/* 2CB68 80051768 82420006 */ lb $v0, 6($s2) +/* 2CB6C 8005176C 00000000 */ nop +/* 2CB70 80051770 01020018 */ mult $t0, $v0 +/* 2CB74 80051774 9222003D */ lbu $v0, 0x3d($s1) +/* 2CB78 80051778 34420020 */ ori $v0, $v0, 0x20 +/* 2CB7C 8005177C A222003D */ sb $v0, 0x3d($s1) +/* 2CB80 80051780 00004012 */ mflo $t0 +/* 2CB84 80051784 00081383 */ sra $v0, $t0, 0xe +/* 2CB88 80051788 A6220040 */ sh $v0, 0x40($s1) +.L8005178C: +/* 2CB8C 8005178C 8EA20034 */ lw $v0, 0x34($s5) +/* 2CB90 80051790 26100001 */ addiu $s0, $s0, 1 +/* 2CB94 80051794 0202102B */ sltu $v0, $s0, $v0 +/* 2CB98 80051798 1440FFD9 */ bnez $v0, .L80051700 +/* 2CB9C 8005179C 24840048 */ addiu $a0, $a0, 0x48 +.L800517A0: +/* 2CBA0 800517A0 26D60001 */ addiu $s6, $s6, 1 +/* 2CBA4 800517A4 2EC2000A */ sltiu $v0, $s6, 0xa +/* 2CBA8 800517A8 1440FFBA */ bnez $v0, .L80051694 +/* 2CBAC 800517AC 24A50028 */ addiu $a1, $a1, 0x28 +/* 2CBB0 800517B0 8EA20018 */ lw $v0, 0x18($s5) +/* 2CBB4 800517B4 2442FFFF */ addiu $v0, $v0, -1 +/* 2CBB8 800517B8 1C400240 */ bgtz $v0, .L800520BC +/* 2CBBC 800517BC AEA20018 */ sw $v0, 0x18($s5) +/* 2CBC0 800517C0 1440023E */ bnez $v0, .L800520BC +/* 2CBC4 800517C4 00000000 */ nop +/* 2CBC8 800517C8 241E0001 */ addiu $fp, $zero, 1 +/* 2CBCC 800517CC 27A80010 */ addiu $t0, $sp, 0x10 +/* 2CBD0 800517D0 AFA80040 */ sw $t0, 0x40($sp) +/* 2CBD4 800517D4 27A80020 */ addiu $t0, $sp, 0x20 +/* 2CBD8 800517D8 AFA8003C */ sw $t0, 0x3c($sp) +.L800517DC: +/* 2CBDC 800517DC 0C014874 */ jal func_800521D0 +/* 2CBE0 800517E0 02A0202D */ daddu $a0, $s5, $zero +/* 2CBE4 800517E4 0040802D */ daddu $s0, $v0, $zero +/* 2CBE8 800517E8 00101600 */ sll $v0, $s0, 0x18 +/* 2CBEC 800517EC 0440000E */ bltz $v0, .L80051828 +/* 2CBF0 800517F0 320300FF */ andi $v1, $s0, 0xff +/* 2CBF4 800517F4 1060FF49 */ beqz $v1, .L8005151C +/* 2CBF8 800517F8 2C620078 */ sltiu $v0, $v1, 0x78 +/* 2CBFC 800517FC 5440022C */ bnel $v0, $zero, .L800520B0 +/* 2CC00 80051800 AEA30018 */ sw $v1, 0x18($s5) +/* 2CC04 80051804 0C014874 */ jal func_800521D0 +/* 2CC08 80051808 02A0202D */ daddu $a0, $s5, $zero +/* 2CC0C 8005180C 32030007 */ andi $v1, $s0, 7 +/* 2CC10 80051810 00031A00 */ sll $v1, $v1, 8 +/* 2CC14 80051814 304200FF */ andi $v0, $v0, 0xff +/* 2CC18 80051818 00621821 */ addu $v1, $v1, $v0 +/* 2CC1C 8005181C 24630078 */ addiu $v1, $v1, 0x78 +/* 2CC20 80051820 0801482C */ j .L800520B0 +/* 2CC24 80051824 AEA30018 */ sw $v1, 0x18($s5) +.L80051828: +/* 2CC28 80051828 0C014874 */ jal func_800521D0 +/* 2CC2C 8005182C 02A0202D */ daddu $a0, $s5, $zero +/* 2CC30 80051830 3216000F */ andi $s6, $s0, 0xf +/* 2CC34 80051834 00161880 */ sll $v1, $s6, 2 +/* 2CC38 80051838 00761821 */ addu $v1, $v1, $s6 +/* 2CC3C 8005183C 000318C0 */ sll $v1, $v1, 3 +/* 2CC40 80051840 24630044 */ addiu $v1, $v1, 0x44 +/* 2CC44 80051844 02A39821 */ addu $s3, $s5, $v1 +/* 2CC48 80051848 0040B82D */ daddu $s7, $v0, $zero +/* 2CC4C 8005184C 320300F0 */ andi $v1, $s0, 0xf0 +/* 2CC50 80051850 240200B0 */ addiu $v0, $zero, 0xb0 +/* 2CC54 80051854 1062018E */ beq $v1, $v0, .L80051E90 +/* 2CC58 80051858 286200B1 */ slti $v0, $v1, 0xb1 +/* 2CC5C 8005185C 1040000E */ beqz $v0, .L80051898 +/* 2CC60 80051860 24020090 */ addiu $v0, $zero, 0x90 +/* 2CC64 80051864 10620047 */ beq $v1, $v0, .L80051984 +/* 2CC68 80051868 28620091 */ slti $v0, $v1, 0x91 +/* 2CC6C 8005186C 10400005 */ beqz $v0, .L80051884 +/* 2CC70 80051870 24020080 */ addiu $v0, $zero, 0x80 +/* 2CC74 80051874 10620011 */ beq $v1, $v0, .L800518BC +/* 2CC78 80051878 00000000 */ nop +/* 2CC7C 8005187C 0801482C */ j .L800520B0 +/* 2CC80 80051880 00000000 */ nop +.L80051884: +/* 2CC84 80051884 240200A0 */ addiu $v0, $zero, 0xa0 +/* 2CC88 80051888 10620111 */ beq $v1, $v0, .L80051CD0 +/* 2CC8C 8005188C 32E20080 */ andi $v0, $s7, 0x80 +/* 2CC90 80051890 0801482C */ j .L800520B0 +/* 2CC94 80051894 00000000 */ nop +.L80051898: +/* 2CC98 80051898 240200E0 */ addiu $v0, $zero, 0xe0 +/* 2CC9C 8005189C 106201C8 */ beq $v1, $v0, .L80051FC0 +/* 2CCA0 800518A0 286200E1 */ slti $v0, $v1, 0xe1 +/* 2CCA4 800518A4 10400202 */ beqz $v0, .L800520B0 +/* 2CCA8 800518A8 240200C0 */ addiu $v0, $zero, 0xc0 +/* 2CCAC 800518AC 106201B7 */ beq $v1, $v0, .L80051F8C +/* 2CCB0 800518B0 00000000 */ nop +/* 2CCB4 800518B4 0801482C */ j .L800520B0 +/* 2CCB8 800518B8 00000000 */ nop +.L800518BC: +/* 2CCBC 800518BC 92A20025 */ lbu $v0, 0x25($s5) +/* 2CCC0 800518C0 144001FB */ bnez $v0, .L800520B0 +/* 2CCC4 800518C4 00161400 */ sll $v0, $s6, 0x10 +/* 2CCC8 800518C8 8EB00030 */ lw $s0, 0x30($s5) +/* 2CCCC 800518CC 8EA40014 */ lw $a0, 0x14($s5) +/* 2CCD0 800518D0 8EA30034 */ lw $v1, 0x34($s5) +/* 2CCD4 800518D4 00822021 */ addu $a0, $a0, $v0 +/* 2CCD8 800518D8 32E200FF */ andi $v0, $s7, 0xff +/* 2CCDC 800518DC 00021200 */ sll $v0, $v0, 8 +/* 2CCE0 800518E0 0203182B */ sltu $v1, $s0, $v1 +/* 2CCE4 800518E4 106001F2 */ beqz $v1, .L800520B0 +/* 2CCE8 800518E8 0082B821 */ addu $s7, $a0, $v0 +/* 2CCEC 800518EC 001010C0 */ sll $v0, $s0, 3 +/* 2CCF0 800518F0 00501021 */ addu $v0, $v0, $s0 +/* 2CCF4 800518F4 000210C0 */ sll $v0, $v0, 3 +/* 2CCF8 800518F8 24441320 */ addiu $a0, $v0, 0x1320 +.L800518FC: +/* 2CCFC 800518FC 8EA20030 */ lw $v0, 0x30($s5) +/* 2CD00 80051900 8FA80070 */ lw $t0, 0x70($sp) +/* 2CD04 80051904 02021023 */ subu $v0, $s0, $v0 +/* 2CD08 80051908 000210C0 */ sll $v0, $v0, 3 +/* 2CD0C 8005190C 01021821 */ addu $v1, $t0, $v0 +/* 2CD10 80051910 8C6207B4 */ lw $v0, 0x7b4($v1) +/* 2CD14 80051914 1457000C */ bne $v0, $s7, .L80051948 +/* 2CD18 80051918 00000000 */ nop +/* 2CD1C 8005191C 8FA80030 */ lw $t0, 0x30($sp) +/* 2CD20 80051920 A07E07B7 */ sb $fp, 0x7b7($v1) +/* 2CD24 80051924 01048821 */ addu $s1, $t0, $a0 +/* 2CD28 80051928 8FA80070 */ lw $t0, 0x70($sp) +/* 2CD2C 8005192C 92230045 */ lbu $v1, 0x45($s1) +/* 2CD30 80051930 91020022 */ lbu $v0, 0x22($t0) +/* 2CD34 80051934 14620004 */ bne $v1, $v0, .L80051948 +/* 2CD38 80051938 00000000 */ nop +/* 2CD3C 8005193C 9222003D */ lbu $v0, 0x3d($s1) +/* 2CD40 80051940 34420010 */ ori $v0, $v0, 0x10 +/* 2CD44 80051944 A222003D */ sb $v0, 0x3d($s1) +.L80051948: +/* 2CD48 80051948 8EA20034 */ lw $v0, 0x34($s5) +/* 2CD4C 8005194C 26100001 */ addiu $s0, $s0, 1 +/* 2CD50 80051950 0202102B */ sltu $v0, $s0, $v0 +/* 2CD54 80051954 1440FFE9 */ bnez $v0, .L800518FC +/* 2CD58 80051958 24840048 */ addiu $a0, $a0, 0x48 +/* 2CD5C 8005195C 0801482C */ j .L800520B0 +/* 2CD60 80051960 00000000 */ nop +.L80051964: +/* 2CD64 80051964 0C014E31 */ jal func_800538C4 +/* 2CD68 80051968 320500FF */ andi $a1, $s0, 0xff +/* 2CD6C 8005196C 0801468F */ j .L80051A3C +/* 2CD70 80051970 00000000 */ nop +.L80051974: +/* 2CD74 80051974 0C014E31 */ jal func_800538C4 +/* 2CD78 80051978 320500FF */ andi $a1, $s0, 0xff +/* 2CD7C 8005197C 080146A8 */ j .L80051AA0 +/* 2CD80 80051980 00000000 */ nop +.L80051984: +/* 2CD84 80051984 0C014874 */ jal func_800521D0 +/* 2CD88 80051988 02A0202D */ daddu $a0, $s5, $zero +/* 2CD8C 8005198C 92A30025 */ lbu $v1, 0x25($s5) +/* 2CD90 80051990 146001C7 */ bnez $v1, .L800520B0 +/* 2CD94 80051994 0040A02D */ daddu $s4, $v0, $zero +/* 2CD98 80051998 8EB00030 */ lw $s0, 0x30($s5) +/* 2CD9C 8005199C 8EA40034 */ lw $a0, 0x34($s5) +/* 2CDA0 800519A0 0204102B */ sltu $v0, $s0, $a0 +/* 2CDA4 800519A4 10400012 */ beqz $v0, .L800519F0 +/* 2CDA8 800519A8 001010C0 */ sll $v0, $s0, 3 +/* 2CDAC 800519AC 00501021 */ addu $v0, $v0, $s0 +/* 2CDB0 800519B0 000210C0 */ sll $v0, $v0, 3 +/* 2CDB4 800519B4 24431320 */ addiu $v1, $v0, 0x1320 +/* 2CDB8 800519B8 8FA80030 */ lw $t0, 0x30($sp) +.L800519BC: +/* 2CDBC 800519BC 01038821 */ addu $s1, $t0, $v1 +/* 2CDC0 800519C0 92220045 */ lbu $v0, 0x45($s1) +/* 2CDC4 800519C4 10400005 */ beqz $v0, .L800519DC +/* 2CDC8 800519C8 00000000 */ nop +/* 2CDCC 800519CC 26100001 */ addiu $s0, $s0, 1 +/* 2CDD0 800519D0 0204102B */ sltu $v0, $s0, $a0 +/* 2CDD4 800519D4 1440FFF9 */ bnez $v0, .L800519BC +/* 2CDD8 800519D8 24630048 */ addiu $v1, $v1, 0x48 +.L800519DC: +/* 2CDDC 800519DC 8EA20034 */ lw $v0, 0x34($s5) +/* 2CDE0 800519E0 0202102B */ sltu $v0, $s0, $v0 +/* 2CDE4 800519E4 14400032 */ bnez $v0, .L80051AB0 +/* 2CDE8 800519E8 00000000 */ nop +/* 2CDEC 800519EC 8EB00030 */ lw $s0, 0x30($s5) +.L800519F0: +/* 2CDF0 800519F0 8EA30034 */ lw $v1, 0x34($s5) +/* 2CDF4 800519F4 0203102B */ sltu $v0, $s0, $v1 +/* 2CDF8 800519F8 10400014 */ beqz $v0, .L80051A4C +/* 2CDFC 800519FC 001010C0 */ sll $v0, $s0, 3 +/* 2CE00 80051A00 0060202D */ daddu $a0, $v1, $zero +/* 2CE04 80051A04 00501021 */ addu $v0, $v0, $s0 +/* 2CE08 80051A08 000210C0 */ sll $v0, $v0, 3 +/* 2CE0C 80051A0C 8FA80070 */ lw $t0, 0x70($sp) +/* 2CE10 80051A10 24431320 */ addiu $v1, $v0, 0x1320 +/* 2CE14 80051A14 91050022 */ lbu $a1, 0x22($t0) +/* 2CE18 80051A18 8FA80030 */ lw $t0, 0x30($sp) +.L80051A1C: +/* 2CE1C 80051A1C 01038821 */ addu $s1, $t0, $v1 +/* 2CE20 80051A20 92220045 */ lbu $v0, 0x45($s1) +/* 2CE24 80051A24 5045FFCF */ beql $v0, $a1, .L80051964 +/* 2CE28 80051A28 0220202D */ daddu $a0, $s1, $zero +/* 2CE2C 80051A2C 26100001 */ addiu $s0, $s0, 1 +/* 2CE30 80051A30 0204102B */ sltu $v0, $s0, $a0 +/* 2CE34 80051A34 1440FFF9 */ bnez $v0, .L80051A1C +/* 2CE38 80051A38 24630048 */ addiu $v1, $v1, 0x48 +.L80051A3C: +/* 2CE3C 80051A3C 8EA20034 */ lw $v0, 0x34($s5) +/* 2CE40 80051A40 0202102B */ sltu $v0, $s0, $v0 +/* 2CE44 80051A44 1440001A */ bnez $v0, .L80051AB0 +/* 2CE48 80051A48 00000000 */ nop +.L80051A4C: +/* 2CE4C 80051A4C 8EB00030 */ lw $s0, 0x30($s5) +/* 2CE50 80051A50 8EA30034 */ lw $v1, 0x34($s5) +/* 2CE54 80051A54 0203102B */ sltu $v0, $s0, $v1 +/* 2CE58 80051A58 10400195 */ beqz $v0, .L800520B0 +/* 2CE5C 80051A5C 001010C0 */ sll $v0, $s0, 3 +/* 2CE60 80051A60 0060202D */ daddu $a0, $v1, $zero +/* 2CE64 80051A64 00501021 */ addu $v0, $v0, $s0 +/* 2CE68 80051A68 000210C0 */ sll $v0, $v0, 3 +/* 2CE6C 80051A6C 8FA80070 */ lw $t0, 0x70($sp) +/* 2CE70 80051A70 24431320 */ addiu $v1, $v0, 0x1320 +/* 2CE74 80051A74 91050022 */ lbu $a1, 0x22($t0) +/* 2CE78 80051A78 8FA80030 */ lw $t0, 0x30($sp) +.L80051A7C: +/* 2CE7C 80051A7C 01038821 */ addu $s1, $t0, $v1 +/* 2CE80 80051A80 92220045 */ lbu $v0, 0x45($s1) +/* 2CE84 80051A84 0045102B */ sltu $v0, $v0, $a1 +/* 2CE88 80051A88 5440FFBA */ bnel $v0, $zero, .L80051974 +/* 2CE8C 80051A8C 0220202D */ daddu $a0, $s1, $zero +/* 2CE90 80051A90 26100001 */ addiu $s0, $s0, 1 +/* 2CE94 80051A94 0204102B */ sltu $v0, $s0, $a0 +/* 2CE98 80051A98 1440FFF8 */ bnez $v0, .L80051A7C +/* 2CE9C 80051A9C 24630048 */ addiu $v1, $v1, 0x48 +.L80051AA0: +/* 2CEA0 80051AA0 8EA20034 */ lw $v0, 0x34($s5) +/* 2CEA4 80051AA4 0202102B */ sltu $v0, $s0, $v0 +/* 2CEA8 80051AA8 10400181 */ beqz $v0, .L800520B0 +/* 2CEAC 80051AAC 00000000 */ nop +.L80051AB0: +/* 2CEB0 80051AB0 8EA20030 */ lw $v0, 0x30($s5) +/* 2CEB4 80051AB4 8FA80040 */ lw $t0, 0x40($sp) +/* 2CEB8 80051AB8 02021023 */ subu $v0, $s0, $v0 +/* 2CEBC 80051ABC 01021021 */ addu $v0, $t0, $v0 +/* 2CEC0 80051AC0 A05E0000 */ sb $fp, ($v0) +/* 2CEC4 80051AC4 8EA20030 */ lw $v0, 0x30($s5) +/* 2CEC8 80051AC8 8FA8003C */ lw $t0, 0x3c($sp) +/* 2CECC 80051ACC 02021023 */ subu $v0, $s0, $v0 +/* 2CED0 80051AD0 01021021 */ addu $v0, $t0, $v0 +/* 2CED4 80051AD4 A05E0000 */ sb $fp, ($v0) +/* 2CED8 80051AD8 8EA20030 */ lw $v0, 0x30($s5) +/* 2CEDC 80051ADC 8FA80070 */ lw $t0, 0x70($sp) +/* 2CEE0 80051AE0 8EA30014 */ lw $v1, 0x14($s5) +/* 2CEE4 80051AE4 02021023 */ subu $v0, $s0, $v0 +/* 2CEE8 80051AE8 000210C0 */ sll $v0, $v0, 3 +/* 2CEEC 80051AEC 244207B4 */ addiu $v0, $v0, 0x7b4 +/* 2CEF0 80051AF0 01029021 */ addu $s2, $t0, $v0 +/* 2CEF4 80051AF4 00161400 */ sll $v0, $s6, 0x10 +/* 2CEF8 80051AF8 00621821 */ addu $v1, $v1, $v0 +/* 2CEFC 80051AFC 32E200FF */ andi $v0, $s7, 0xff +/* 2CF00 80051B00 00021200 */ sll $v0, $v0, 8 +/* 2CF04 80051B04 00621821 */ addu $v1, $v1, $v0 +/* 2CF08 80051B08 AE430000 */ sw $v1, ($s2) +/* 2CF0C 80051B0C 92620026 */ lbu $v0, 0x26($s3) +/* 2CF10 80051B10 30420001 */ andi $v0, $v0, 1 +/* 2CF14 80051B14 50400002 */ beql $v0, $zero, .L80051B20 +/* 2CF18 80051B18 A2400007 */ sb $zero, 7($s2) +/* 2CF1C 80051B1C A25E0007 */ sb $fp, 7($s2) +.L80051B20: +/* 2CF20 80051B20 24080009 */ addiu $t0, $zero, 9 +/* 2CF24 80051B24 12C80033 */ beq $s6, $t0, .L80051BF4 +/* 2CF28 80051B28 32E3007F */ andi $v1, $s7, 0x7f +/* 2CF2C 80051B2C 92620026 */ lbu $v0, 0x26($s3) +/* 2CF30 80051B30 30420001 */ andi $v0, $v0, 1 +/* 2CF34 80051B34 50400002 */ beql $v0, $zero, .L80051B40 +/* 2CF38 80051B38 A2400007 */ sb $zero, 7($s2) +/* 2CF3C 80051B3C A25E0007 */ sb $fp, 7($s2) +.L80051B40: +/* 2CF40 80051B40 3284007F */ andi $a0, $s4, 0x7f +/* 2CF44 80051B44 8E620000 */ lw $v0, ($s3) +/* 2CF48 80051B48 32E3007F */ andi $v1, $s7, 0x7f +/* 2CF4C 80051B4C 9445001E */ lhu $a1, 0x1e($v0) +/* 2CF50 80051B50 00031040 */ sll $v0, $v1, 1 +/* 2CF54 80051B54 00431021 */ addu $v0, $v0, $v1 +/* 2CF58 80051B58 000210C0 */ sll $v0, $v0, 3 +/* 2CF5C 80051B5C 00431021 */ addu $v0, $v0, $v1 +/* 2CF60 80051B60 00021080 */ sll $v0, $v0, 2 +/* 2CF64 80051B64 A2440006 */ sb $a0, 6($s2) +/* 2CF68 80051B68 00451023 */ subu $v0, $v0, $a1 +/* 2CF6C 80051B6C A6420004 */ sh $v0, 4($s2) +/* 2CF70 80051B70 82A30038 */ lb $v1, 0x38($s5) +/* 2CF74 80051B74 86620018 */ lh $v0, 0x18($s3) +/* 2CF78 80051B78 00620018 */ mult $v1, $v0 +/* 2CF7C 80051B7C 00004012 */ mflo $t0 +/* 2CF80 80051B80 00000000 */ nop +/* 2CF84 80051B84 00000000 */ nop +/* 2CF88 80051B88 01040018 */ mult $t0, $a0 +/* 2CF8C 80051B8C 00004012 */ mflo $t0 +/* 2CF90 80051B90 00081383 */ sra $v0, $t0, 0xe +/* 2CF94 80051B94 A6220040 */ sh $v0, 0x40($s1) +/* 2CF98 80051B98 86420004 */ lh $v0, 4($s2) +/* 2CF9C 80051B9C 8664000C */ lh $a0, 0xc($s3) +/* 2CFA0 80051BA0 0C014E3E */ jal func_800538F8 +/* 2CFA4 80051BA4 00442021 */ addu $a0, $v0, $a0 +/* 2CFA8 80051BA8 8E620000 */ lw $v0, ($s3) +/* 2CFAC 80051BAC C4420020 */ lwc1 $f2, 0x20($v0) +/* 2CFB0 80051BB0 46020002 */ mul.s $f0, $f0, $f2 +/* 2CFB4 80051BB4 00000000 */ nop +/* 2CFB8 80051BB8 E6200004 */ swc1 $f0, 4($s1) +/* 2CFBC 80051BBC 92620024 */ lbu $v0, 0x24($s3) +/* 2CFC0 80051BC0 A222000E */ sb $v0, 0xe($s1) +/* 2CFC4 80051BC4 92620025 */ lbu $v0, 0x25($s3) +/* 2CFC8 80051BC8 A222000F */ sb $v0, 0xf($s1) +/* 2CFCC 80051BCC 8E620000 */ lw $v0, ($s3) +/* 2CFD0 80051BD0 AE220000 */ sw $v0, ($s1) +/* 2CFD4 80051BD4 8FA80070 */ lw $t0, 0x70($sp) +/* 2CFD8 80051BD8 91020023 */ lbu $v0, 0x23($t0) +/* 2CFDC 80051BDC A2220010 */ sb $v0, 0x10($s1) +/* 2CFE0 80051BE0 8E620004 */ lw $v0, 4($s3) +/* 2CFE4 80051BE4 AE220014 */ sw $v0, 0x14($s1) +/* 2CFE8 80051BE8 8E620008 */ lw $v0, 8($s3) +/* 2CFEC 80051BEC 0801472D */ j .L80051CB4 +/* 2CFF0 80051BF0 AE220018 */ sw $v0, 0x18($s1) +.L80051BF4: +/* 2CFF4 80051BF4 A2400007 */ sb $zero, 7($s2) +/* 2CFF8 80051BF8 8FA80070 */ lw $t0, 0x70($sp) +/* 2CFFC 80051BFC 00031040 */ sll $v0, $v1, 1 +/* 2D000 80051C00 8D040000 */ lw $a0, ($t0) +/* 2D004 80051C04 00431021 */ addu $v0, $v0, $v1 +/* 2D008 80051C08 8C900054 */ lw $s0, 0x54($a0) +/* 2D00C 80051C0C 00021080 */ sll $v0, $v0, 2 +/* 2D010 80051C10 02028021 */ addu $s0, $s0, $v0 +/* 2D014 80051C14 96060000 */ lhu $a2, ($s0) +/* 2D018 80051C18 26270014 */ addiu $a3, $s1, 0x14 +/* 2D01C 80051C1C 00062A02 */ srl $a1, $a2, 8 +/* 2D020 80051C20 0C014EFA */ jal func_80053BE8 +/* 2D024 80051C24 30C600FF */ andi $a2, $a2, 0xff +/* 2D028 80051C28 AE220000 */ sw $v0, ($s1) +/* 2D02C 80051C2C 96030002 */ lhu $v1, 2($s0) +/* 2D030 80051C30 9442001E */ lhu $v0, 0x1e($v0) +/* 2D034 80051C34 00621823 */ subu $v1, $v1, $v0 +/* 2D038 80051C38 A6430004 */ sh $v1, 4($s2) +/* 2D03C 80051C3C 92030004 */ lbu $v1, 4($s0) +/* 2D040 80051C40 3282007F */ andi $v0, $s4, 0x7f +/* 2D044 80051C44 00430018 */ mult $v0, $v1 +/* 2D048 80051C48 00004012 */ mflo $t0 +/* 2D04C 80051C4C 000819C3 */ sra $v1, $t0, 7 +/* 2D050 80051C50 A2430006 */ sb $v1, 6($s2) +/* 2D054 80051C54 82A40038 */ lb $a0, 0x38($s5) +/* 2D058 80051C58 86620018 */ lh $v0, 0x18($s3) +/* 2D05C 80051C5C 00820018 */ mult $a0, $v0 +/* 2D060 80051C60 00004012 */ mflo $t0 +/* 2D064 80051C64 00031E00 */ sll $v1, $v1, 0x18 +/* 2D068 80051C68 00031E03 */ sra $v1, $v1, 0x18 +/* 2D06C 80051C6C 01030018 */ mult $t0, $v1 +/* 2D070 80051C70 00004012 */ mflo $t0 +/* 2D074 80051C74 00081383 */ sra $v0, $t0, 0xe +/* 2D078 80051C78 A6220040 */ sh $v0, 0x40($s1) +/* 2D07C 80051C7C 0C014E3E */ jal func_800538F8 +/* 2D080 80051C80 86440004 */ lh $a0, 4($s2) +/* 2D084 80051C84 8E220000 */ lw $v0, ($s1) +/* 2D088 80051C88 C4420020 */ lwc1 $f2, 0x20($v0) +/* 2D08C 80051C8C 46020002 */ mul.s $f0, $f0, $f2 +/* 2D090 80051C90 00000000 */ nop +/* 2D094 80051C94 E6200004 */ swc1 $f0, 4($s1) +/* 2D098 80051C98 92020005 */ lbu $v0, 5($s0) +/* 2D09C 80051C9C A222000E */ sb $v0, 0xe($s1) +/* 2D0A0 80051CA0 92020006 */ lbu $v0, 6($s0) +/* 2D0A4 80051CA4 A222000F */ sb $v0, 0xf($s1) +/* 2D0A8 80051CA8 8FA80070 */ lw $t0, 0x70($sp) +/* 2D0AC 80051CAC 91020023 */ lbu $v0, 0x23($t0) +/* 2D0B0 80051CB0 A2220010 */ sb $v0, 0x10($s1) +.L80051CB4: +/* 2D0B4 80051CB4 24020002 */ addiu $v0, $zero, 2 +/* 2D0B8 80051CB8 A2220043 */ sb $v0, 0x43($s1) +/* 2D0BC 80051CBC 8FA80070 */ lw $t0, 0x70($sp) +/* 2D0C0 80051CC0 91020022 */ lbu $v0, 0x22($t0) +/* 2D0C4 80051CC4 A2220045 */ sb $v0, 0x45($s1) +/* 2D0C8 80051CC8 0801482C */ j .L800520B0 +/* 2D0CC 80051CCC A2220044 */ sb $v0, 0x44($s1) +.L80051CD0: +/* 2D0D0 80051CD0 1040002C */ beqz $v0, .L80051D84 +/* 2D0D4 80051CD4 32E2007F */ andi $v0, $s7, 0x7f +/* 2D0D8 80051CD8 00162400 */ sll $a0, $s6, 0x10 +/* 2D0DC 80051CDC A2620024 */ sb $v0, 0x24($s3) +/* 2D0E0 80051CE0 8EB00030 */ lw $s0, 0x30($s5) +/* 2D0E4 80051CE4 8EA30014 */ lw $v1, 0x14($s5) +/* 2D0E8 80051CE8 8EA20034 */ lw $v0, 0x34($s5) +/* 2D0EC 80051CEC 0202102B */ sltu $v0, $s0, $v0 +/* 2D0F0 80051CF0 104000EF */ beqz $v0, .L800520B0 +/* 2D0F4 80051CF4 0064B821 */ addu $s7, $v1, $a0 +/* 2D0F8 80051CF8 001010C0 */ sll $v0, $s0, 3 +/* 2D0FC 80051CFC 00501021 */ addu $v0, $v0, $s0 +/* 2D100 80051D00 000210C0 */ sll $v0, $v0, 3 +/* 2D104 80051D04 24441320 */ addiu $a0, $v0, 0x1320 +.L80051D08: +/* 2D108 80051D08 8EA20030 */ lw $v0, 0x30($s5) +/* 2D10C 80051D0C 8FA80070 */ lw $t0, 0x70($sp) +/* 2D110 80051D10 02021023 */ subu $v0, $s0, $v0 +/* 2D114 80051D14 000210C0 */ sll $v0, $v0, 3 +/* 2D118 80051D18 00489021 */ addu $s2, $v0, $t0 +/* 2D11C 80051D1C 8E4207B4 */ lw $v0, 0x7b4($s2) +/* 2D120 80051D20 3C08FFFF */ lui $t0, 0xffff +/* 2D124 80051D24 00481024 */ and $v0, $v0, $t0 +/* 2D128 80051D28 1457000F */ bne $v0, $s7, .L80051D68 +/* 2D12C 80051D2C 00000000 */ nop +/* 2D130 80051D30 8FA80030 */ lw $t0, 0x30($sp) +/* 2D134 80051D34 01048821 */ addu $s1, $t0, $a0 +/* 2D138 80051D38 8FA80070 */ lw $t0, 0x70($sp) +/* 2D13C 80051D3C 92230045 */ lbu $v1, 0x45($s1) +/* 2D140 80051D40 91020022 */ lbu $v0, 0x22($t0) +/* 2D144 80051D44 14620008 */ bne $v1, $v0, .L80051D68 +/* 2D148 80051D48 24080009 */ addiu $t0, $zero, 9 +/* 2D14C 80051D4C 12C80006 */ beq $s6, $t0, .L80051D68 +/* 2D150 80051D50 00000000 */ nop +/* 2D154 80051D54 92220043 */ lbu $v0, 0x43($s1) +/* 2D158 80051D58 92630024 */ lbu $v1, 0x24($s3) +/* 2D15C 80051D5C 34420010 */ ori $v0, $v0, 0x10 +/* 2D160 80051D60 A223000E */ sb $v1, 0xe($s1) +/* 2D164 80051D64 A2220043 */ sb $v0, 0x43($s1) +.L80051D68: +/* 2D168 80051D68 8EA20034 */ lw $v0, 0x34($s5) +/* 2D16C 80051D6C 26100001 */ addiu $s0, $s0, 1 +/* 2D170 80051D70 0202102B */ sltu $v0, $s0, $v0 +/* 2D174 80051D74 1440FFE4 */ bnez $v0, .L80051D08 +/* 2D178 80051D78 24840048 */ addiu $a0, $a0, 0x48 +/* 2D17C 80051D7C 0801482C */ j .L800520B0 +/* 2D180 80051D80 00000000 */ nop +.L80051D84: +/* 2D184 80051D84 00171E00 */ sll $v1, $s7, 0x18 +/* 2D188 80051D88 10600005 */ beqz $v1, .L80051DA0 +/* 2D18C 80051D8C AE630018 */ sw $v1, 0x18($s3) +/* 2D190 80051D90 3C0200FF */ lui $v0, 0xff +/* 2D194 80051D94 3442FFFF */ ori $v0, $v0, 0xffff +/* 2D198 80051D98 00621025 */ or $v0, $v1, $v0 +/* 2D19C 80051D9C AE620018 */ sw $v0, 0x18($s3) +.L80051DA0: +/* 2D1A0 80051DA0 00162400 */ sll $a0, $s6, 0x10 +/* 2D1A4 80051DA4 8EB00030 */ lw $s0, 0x30($s5) +/* 2D1A8 80051DA8 8EA30014 */ lw $v1, 0x14($s5) +/* 2D1AC 80051DAC 8EA20034 */ lw $v0, 0x34($s5) +/* 2D1B0 80051DB0 0202102B */ sltu $v0, $s0, $v0 +/* 2D1B4 80051DB4 104000BE */ beqz $v0, .L800520B0 +/* 2D1B8 80051DB8 0064B821 */ addu $s7, $v1, $a0 +/* 2D1BC 80051DBC 001010C0 */ sll $v0, $s0, 3 +/* 2D1C0 80051DC0 00501021 */ addu $v0, $v0, $s0 +/* 2D1C4 80051DC4 000210C0 */ sll $v0, $v0, 3 +/* 2D1C8 80051DC8 24441320 */ addiu $a0, $v0, 0x1320 +.L80051DCC: +/* 2D1CC 80051DCC 8EA20030 */ lw $v0, 0x30($s5) +/* 2D1D0 80051DD0 8FA80070 */ lw $t0, 0x70($sp) +/* 2D1D4 80051DD4 02021023 */ subu $v0, $s0, $v0 +/* 2D1D8 80051DD8 000210C0 */ sll $v0, $v0, 3 +/* 2D1DC 80051DDC 244207B4 */ addiu $v0, $v0, 0x7b4 +/* 2D1E0 80051DE0 01029021 */ addu $s2, $t0, $v0 +/* 2D1E4 80051DE4 8E420000 */ lw $v0, ($s2) +/* 2D1E8 80051DE8 3C08FFFF */ lui $t0, 0xffff +/* 2D1EC 80051DEC 00481024 */ and $v0, $v0, $t0 +/* 2D1F0 80051DF0 14570020 */ bne $v0, $s7, .L80051E74 +/* 2D1F4 80051DF4 00000000 */ nop +/* 2D1F8 80051DF8 8FA80030 */ lw $t0, 0x30($sp) +/* 2D1FC 80051DFC 01048821 */ addu $s1, $t0, $a0 +/* 2D200 80051E00 8FA80070 */ lw $t0, 0x70($sp) +/* 2D204 80051E04 92230045 */ lbu $v1, 0x45($s1) +/* 2D208 80051E08 91020022 */ lbu $v0, 0x22($t0) +/* 2D20C 80051E0C 14620019 */ bne $v1, $v0, .L80051E74 +/* 2D210 80051E10 00000000 */ nop +/* 2D214 80051E14 82A30038 */ lb $v1, 0x38($s5) +/* 2D218 80051E18 86620018 */ lh $v0, 0x18($s3) +/* 2D21C 80051E1C 00620018 */ mult $v1, $v0 +/* 2D220 80051E20 00004012 */ mflo $t0 +/* 2D224 80051E24 82420006 */ lb $v0, 6($s2) +/* 2D228 80051E28 00000000 */ nop +/* 2D22C 80051E2C 01020018 */ mult $t0, $v0 +/* 2D230 80051E30 00004012 */ mflo $t0 +/* 2D234 80051E34 00081383 */ sra $v0, $t0, 0xe +/* 2D238 80051E38 A6220040 */ sh $v0, 0x40($s1) +/* 2D23C 80051E3C 8EA20030 */ lw $v0, 0x30($s5) +/* 2D240 80051E40 8FA80040 */ lw $t0, 0x40($sp) +/* 2D244 80051E44 02021023 */ subu $v0, $s0, $v0 +/* 2D248 80051E48 01021021 */ addu $v0, $t0, $v0 +/* 2D24C 80051E4C 90420000 */ lbu $v0, ($v0) +/* 2D250 80051E50 14400008 */ bnez $v0, .L80051E74 +/* 2D254 80051E54 00000000 */ nop +/* 2D258 80051E58 9222003D */ lbu $v0, 0x3d($s1) +/* 2D25C 80051E5C 34420020 */ ori $v0, $v0, 0x20 +/* 2D260 80051E60 A222003D */ sb $v0, 0x3d($s1) +/* 2D264 80051E64 8EA20030 */ lw $v0, 0x30($s5) +/* 2D268 80051E68 02021023 */ subu $v0, $s0, $v0 +/* 2D26C 80051E6C 01021021 */ addu $v0, $t0, $v0 +/* 2D270 80051E70 A05E0000 */ sb $fp, ($v0) +.L80051E74: +/* 2D274 80051E74 8EA20034 */ lw $v0, 0x34($s5) +/* 2D278 80051E78 26100001 */ addiu $s0, $s0, 1 +/* 2D27C 80051E7C 0202102B */ sltu $v0, $s0, $v0 +/* 2D280 80051E80 1440FFD2 */ bnez $v0, .L80051DCC +/* 2D284 80051E84 24840048 */ addiu $a0, $a0, 0x48 +/* 2D288 80051E88 0801482C */ j .L800520B0 +/* 2D28C 80051E8C 00000000 */ nop +.L80051E90: +/* 2D290 80051E90 0C014874 */ jal func_800521D0 +/* 2D294 80051E94 02A0202D */ daddu $a0, $s5, $zero +/* 2D298 80051E98 0040A02D */ daddu $s4, $v0, $zero +/* 2D29C 80051E9C 32E300FF */ andi $v1, $s7, 0xff +/* 2D2A0 80051EA0 24020067 */ addiu $v0, $zero, 0x67 +/* 2D2A4 80051EA4 10620013 */ beq $v1, $v0, .L80051EF4 +/* 2D2A8 80051EA8 28620068 */ slti $v0, $v1, 0x68 +/* 2D2AC 80051EAC 10400005 */ beqz $v0, .L80051EC4 +/* 2D2B0 80051EB0 24020066 */ addiu $v0, $zero, 0x66 +/* 2D2B4 80051EB4 1062000A */ beq $v1, $v0, .L80051EE0 +/* 2D2B8 80051EB8 32820001 */ andi $v0, $s4, 1 +/* 2D2BC 80051EBC 0801482C */ j .L800520B0 +/* 2D2C0 80051EC0 00000000 */ nop +.L80051EC4: +/* 2D2C4 80051EC4 24020068 */ addiu $v0, $zero, 0x68 +/* 2D2C8 80051EC8 10620027 */ beq $v1, $v0, .L80051F68 +/* 2D2CC 80051ECC 24020069 */ addiu $v0, $zero, 0x69 +/* 2D2D0 80051ED0 10620027 */ beq $v1, $v0, .L80051F70 +/* 2D2D4 80051ED4 328300FF */ andi $v1, $s4, 0xff +/* 2D2D8 80051ED8 0801482C */ j .L800520B0 +/* 2D2DC 80051EDC 00000000 */ nop +.L80051EE0: +/* 2D2E0 80051EE0 00021080 */ sll $v0, $v0, 2 +/* 2D2E4 80051EE4 8EA30008 */ lw $v1, 8($s5) +/* 2D2E8 80051EE8 02A21021 */ addu $v0, $s5, $v0 +/* 2D2EC 80051EEC 0801482C */ j .L800520B0 +/* 2D2F0 80051EF0 AC43000C */ sw $v1, 0xc($v0) +.L80051EF4: +/* 2D2F4 80051EF4 3282007C */ andi $v0, $s4, 0x7c +/* 2D2F8 80051EF8 00022882 */ srl $a1, $v0, 2 +/* 2D2FC 80051EFC 10A00013 */ beqz $a1, .L80051F4C +/* 2D300 80051F00 32840001 */ andi $a0, $s4, 1 +/* 2D304 80051F04 02A41821 */ addu $v1, $s5, $a0 +/* 2D308 80051F08 9062002C */ lbu $v0, 0x2c($v1) +/* 2D30C 80051F0C 10400009 */ beqz $v0, .L80051F34 +/* 2D310 80051F10 2442FFFF */ addiu $v0, $v0, -1 +/* 2D314 80051F14 A062002C */ sb $v0, 0x2c($v1) +/* 2D318 80051F18 304200FF */ andi $v0, $v0, 0xff +/* 2D31C 80051F1C 10400064 */ beqz $v0, .L800520B0 +/* 2D320 80051F20 00041080 */ sll $v0, $a0, 2 +/* 2D324 80051F24 02A21021 */ addu $v0, $s5, $v0 +/* 2D328 80051F28 8C42000C */ lw $v0, 0xc($v0) +/* 2D32C 80051F2C 0801482C */ j .L800520B0 +/* 2D330 80051F30 AEA20008 */ sw $v0, 8($s5) +.L80051F34: +/* 2D334 80051F34 00041080 */ sll $v0, $a0, 2 +/* 2D338 80051F38 02A21021 */ addu $v0, $s5, $v0 +/* 2D33C 80051F3C 8C42000C */ lw $v0, 0xc($v0) +/* 2D340 80051F40 AEA20008 */ sw $v0, 8($s5) +/* 2D344 80051F44 0801482C */ j .L800520B0 +/* 2D348 80051F48 A065002C */ sb $a1, 0x2c($v1) +.L80051F4C: +/* 2D34C 80051F4C 00041080 */ sll $v0, $a0, 2 +/* 2D350 80051F50 02A21021 */ addu $v0, $s5, $v0 +/* 2D354 80051F54 8C42000C */ lw $v0, 0xc($v0) +/* 2D358 80051F58 AEA20008 */ sw $v0, 8($s5) +/* 2D35C 80051F5C 02A41021 */ addu $v0, $s5, $a0 +/* 2D360 80051F60 0801482C */ j .L800520B0 +/* 2D364 80051F64 A040002C */ sb $zero, 0x2c($v0) +.L80051F68: +/* 2D368 80051F68 0801482C */ j .L800520B0 +/* 2D36C 80051F6C A2740025 */ sb $s4, 0x25($s3) +.L80051F70: +/* 2D370 80051F70 24020001 */ addiu $v0, $zero, 1 +/* 2D374 80051F74 1462004E */ bne $v1, $v0, .L800520B0 +/* 2D378 80051F78 00000000 */ nop +/* 2D37C 80051F7C 92620026 */ lbu $v0, 0x26($s3) +/* 2D380 80051F80 34420001 */ ori $v0, $v0, 1 +/* 2D384 80051F84 0801482C */ j .L800520B0 +/* 2D388 80051F88 A2620026 */ sb $v0, 0x26($s3) +.L80051F8C: +/* 2D38C 80051F8C 0C014874 */ jal func_800521D0 +/* 2D390 80051F90 02A0202D */ daddu $a0, $s5, $zero +/* 2D394 80051F94 24080009 */ addiu $t0, $zero, 9 +/* 2D398 80051F98 12C80045 */ beq $s6, $t0, .L800520B0 +/* 2D39C 80051F9C 0040A02D */ daddu $s4, $v0, $zero +/* 2D3A0 80051FA0 32E500FF */ andi $a1, $s7, 0xff +/* 2D3A4 80051FA4 8FA80070 */ lw $t0, 0x70($sp) +/* 2D3A8 80051FA8 328600FF */ andi $a2, $s4, 0xff +/* 2D3AC 80051FAC 8D040000 */ lw $a0, ($t0) +/* 2D3B0 80051FB0 0C014EFA */ jal func_80053BE8 +/* 2D3B4 80051FB4 26670004 */ addiu $a3, $s3, 4 +/* 2D3B8 80051FB8 0801482C */ j .L800520B0 +/* 2D3BC 80051FBC AE620000 */ sw $v0, ($s3) +.L80051FC0: +/* 2D3C0 80051FC0 0C014874 */ jal func_800521D0 +/* 2D3C4 80051FC4 02A0202D */ daddu $a0, $s5, $zero +/* 2D3C8 80051FC8 00171E00 */ sll $v1, $s7, 0x18 +/* 2D3CC 80051FCC 304200FF */ andi $v0, $v0, 0xff +/* 2D3D0 80051FD0 00021400 */ sll $v0, $v0, 0x10 +/* 2D3D4 80051FD4 00621821 */ addu $v1, $v1, $v0 +/* 2D3D8 80051FD8 00162400 */ sll $a0, $s6, 0x10 +/* 2D3DC 80051FDC AE63000C */ sw $v1, 0xc($s3) +/* 2D3E0 80051FE0 8EB00030 */ lw $s0, 0x30($s5) +/* 2D3E4 80051FE4 8EA30014 */ lw $v1, 0x14($s5) +/* 2D3E8 80051FE8 8EA20034 */ lw $v0, 0x34($s5) +/* 2D3EC 80051FEC 0202102B */ sltu $v0, $s0, $v0 +/* 2D3F0 80051FF0 1040002F */ beqz $v0, .L800520B0 +/* 2D3F4 80051FF4 0064B821 */ addu $s7, $v1, $a0 +/* 2D3F8 80051FF8 001010C0 */ sll $v0, $s0, 3 +/* 2D3FC 80051FFC 00501021 */ addu $v0, $v0, $s0 +/* 2D400 80052000 000210C0 */ sll $v0, $v0, 3 +/* 2D404 80052004 24541320 */ addiu $s4, $v0, 0x1320 +.L80052008: +/* 2D408 80052008 8EA20030 */ lw $v0, 0x30($s5) +/* 2D40C 8005200C 8FA80070 */ lw $t0, 0x70($sp) +/* 2D410 80052010 02021023 */ subu $v0, $s0, $v0 +/* 2D414 80052014 000210C0 */ sll $v0, $v0, 3 +/* 2D418 80052018 244207B4 */ addiu $v0, $v0, 0x7b4 +/* 2D41C 8005201C 01029021 */ addu $s2, $t0, $v0 +/* 2D420 80052020 8E420000 */ lw $v0, ($s2) +/* 2D424 80052024 3C08FFFF */ lui $t0, 0xffff +/* 2D428 80052028 00481024 */ and $v0, $v0, $t0 +/* 2D42C 8005202C 1457001B */ bne $v0, $s7, .L8005209C +/* 2D430 80052030 00000000 */ nop +/* 2D434 80052034 8FA80030 */ lw $t0, 0x30($sp) +/* 2D438 80052038 01148821 */ addu $s1, $t0, $s4 +/* 2D43C 8005203C 8FA80070 */ lw $t0, 0x70($sp) +/* 2D440 80052040 92230045 */ lbu $v1, 0x45($s1) +/* 2D444 80052044 91020022 */ lbu $v0, 0x22($t0) +/* 2D448 80052048 14620014 */ bne $v1, $v0, .L8005209C +/* 2D44C 8005204C 24080009 */ addiu $t0, $zero, 9 +/* 2D450 80052050 12C80012 */ beq $s6, $t0, .L8005209C +/* 2D454 80052054 00000000 */ nop +/* 2D458 80052058 86420004 */ lh $v0, 4($s2) +/* 2D45C 8005205C 8664000C */ lh $a0, 0xc($s3) +/* 2D460 80052060 0C014E3E */ jal func_800538F8 +/* 2D464 80052064 00442021 */ addu $a0, $v0, $a0 +/* 2D468 80052068 8E620000 */ lw $v0, ($s3) +/* 2D46C 8005206C C4420020 */ lwc1 $f2, 0x20($v0) +/* 2D470 80052070 46020002 */ mul.s $f0, $f0, $f2 +/* 2D474 80052074 00000000 */ nop +/* 2D478 80052078 92220043 */ lbu $v0, 0x43($s1) +/* 2D47C 8005207C 34420008 */ ori $v0, $v0, 8 +/* 2D480 80052080 A2220043 */ sb $v0, 0x43($s1) +/* 2D484 80052084 E6200004 */ swc1 $f0, 4($s1) +/* 2D488 80052088 8EA20030 */ lw $v0, 0x30($s5) +/* 2D48C 8005208C 8FA8003C */ lw $t0, 0x3c($sp) +/* 2D490 80052090 02021023 */ subu $v0, $s0, $v0 +/* 2D494 80052094 01021021 */ addu $v0, $t0, $v0 +/* 2D498 80052098 A05E0000 */ sb $fp, ($v0) +.L8005209C: +/* 2D49C 8005209C 8EA20034 */ lw $v0, 0x34($s5) +/* 2D4A0 800520A0 26100001 */ addiu $s0, $s0, 1 +/* 2D4A4 800520A4 0202102B */ sltu $v0, $s0, $v0 +/* 2D4A8 800520A8 1440FFD7 */ bnez $v0, .L80052008 +/* 2D4AC 800520AC 26940048 */ addiu $s4, $s4, 0x48 +.L800520B0: +/* 2D4B0 800520B0 8EA20018 */ lw $v0, 0x18($s5) +/* 2D4B4 800520B4 1040FDC9 */ beqz $v0, .L800517DC +/* 2D4B8 800520B8 00000000 */ nop +.L800520BC: +/* 2D4BC 800520BC 93A20034 */ lbu $v0, 0x34($sp) +/* 2D4C0 800520C0 10400037 */ beqz $v0, .L800521A0 +/* 2D4C4 800520C4 00000000 */ nop +/* 2D4C8 800520C8 8EB00030 */ lw $s0, 0x30($s5) +/* 2D4CC 800520CC 8EA20034 */ lw $v0, 0x34($s5) +/* 2D4D0 800520D0 0202102B */ sltu $v0, $s0, $v0 +/* 2D4D4 800520D4 10400032 */ beqz $v0, .L800521A0 +/* 2D4D8 800520D8 001010C0 */ sll $v0, $s0, 3 +/* 2D4DC 800520DC 3C07FF00 */ lui $a3, 0xff00 +/* 2D4E0 800520E0 27A60010 */ addiu $a2, $sp, 0x10 +/* 2D4E4 800520E4 00501021 */ addu $v0, $v0, $s0 +/* 2D4E8 800520E8 000210C0 */ sll $v0, $v0, 3 +/* 2D4EC 800520EC 24451320 */ addiu $a1, $v0, 0x1320 +.L800520F0: +/* 2D4F0 800520F0 8EA20030 */ lw $v0, 0x30($s5) +/* 2D4F4 800520F4 8FA80070 */ lw $t0, 0x70($sp) +/* 2D4F8 800520F8 02022023 */ subu $a0, $s0, $v0 +/* 2D4FC 800520FC 000410C0 */ sll $v0, $a0, 3 +/* 2D500 80052100 244207B4 */ addiu $v0, $v0, 0x7b4 +/* 2D504 80052104 01029021 */ addu $s2, $t0, $v0 +/* 2D508 80052108 8E420000 */ lw $v0, ($s2) +/* 2D50C 8005210C 8EA30014 */ lw $v1, 0x14($s5) +/* 2D510 80052110 00471024 */ and $v0, $v0, $a3 +/* 2D514 80052114 1443001D */ bne $v0, $v1, .L8005218C +/* 2D518 80052118 00000000 */ nop +/* 2D51C 8005211C 8FA80030 */ lw $t0, 0x30($sp) +/* 2D520 80052120 01058821 */ addu $s1, $t0, $a1 +/* 2D524 80052124 8FA80070 */ lw $t0, 0x70($sp) +/* 2D528 80052128 92230045 */ lbu $v1, 0x45($s1) +/* 2D52C 8005212C 91020022 */ lbu $v0, 0x22($t0) +/* 2D530 80052130 14620016 */ bne $v1, $v0, .L8005218C +/* 2D534 80052134 00C41021 */ addu $v0, $a2, $a0 +/* 2D538 80052138 90420000 */ lbu $v0, ($v0) +/* 2D53C 8005213C 14400013 */ bnez $v0, .L8005218C +/* 2D540 80052140 00000000 */ nop +/* 2D544 80052144 92430001 */ lbu $v1, 1($s2) +/* 2D548 80052148 00031080 */ sll $v0, $v1, 2 +/* 2D54C 8005214C 00431021 */ addu $v0, $v0, $v1 +/* 2D550 80052150 000210C0 */ sll $v0, $v0, 3 +/* 2D554 80052154 00559821 */ addu $s3, $v0, $s5 +/* 2D558 80052158 82A30038 */ lb $v1, 0x38($s5) +/* 2D55C 8005215C 8662005C */ lh $v0, 0x5c($s3) +/* 2D560 80052160 00620018 */ mult $v1, $v0 +/* 2D564 80052164 00004012 */ mflo $t0 +/* 2D568 80052168 82420006 */ lb $v0, 6($s2) +/* 2D56C 8005216C 00000000 */ nop +/* 2D570 80052170 01020018 */ mult $t0, $v0 +/* 2D574 80052174 9222003D */ lbu $v0, 0x3d($s1) +/* 2D578 80052178 34420020 */ ori $v0, $v0, 0x20 +/* 2D57C 8005217C A222003D */ sb $v0, 0x3d($s1) +/* 2D580 80052180 00004012 */ mflo $t0 +/* 2D584 80052184 00081383 */ sra $v0, $t0, 0xe +/* 2D588 80052188 A6220040 */ sh $v0, 0x40($s1) +.L8005218C: +/* 2D58C 8005218C 8EA20034 */ lw $v0, 0x34($s5) +/* 2D590 80052190 26100001 */ addiu $s0, $s0, 1 +/* 2D594 80052194 0202102B */ sltu $v0, $s0, $v0 +/* 2D598 80052198 1440FFD5 */ bnez $v0, .L800520F0 +/* 2D59C 8005219C 24A50048 */ addiu $a1, $a1, 0x48 +.L800521A0: +/* 2D5A0 800521A0 8FBF006C */ lw $ra, 0x6c($sp) +/* 2D5A4 800521A4 8FBE0068 */ lw $fp, 0x68($sp) +/* 2D5A8 800521A8 8FB70064 */ lw $s7, 0x64($sp) +/* 2D5AC 800521AC 8FB60060 */ lw $s6, 0x60($sp) +/* 2D5B0 800521B0 8FB5005C */ lw $s5, 0x5c($sp) +/* 2D5B4 800521B4 8FB40058 */ lw $s4, 0x58($sp) +/* 2D5B8 800521B8 8FB30054 */ lw $s3, 0x54($sp) +/* 2D5BC 800521BC 8FB20050 */ lw $s2, 0x50($sp) +/* 2D5C0 800521C0 8FB1004C */ lw $s1, 0x4c($sp) +/* 2D5C4 800521C4 8FB00048 */ lw $s0, 0x48($sp) +/* 2D5C8 800521C8 03E00008 */ jr $ra +/* 2D5CC 800521CC 27BD0070 */ addiu $sp, $sp, 0x70 diff --git a/asm/nonmatchings/code_2BF90/func_800521D0.s b/asm/nonmatchings/code_2BF90/func_800521D0.s new file mode 100644 index 0000000000..af9aa206f6 --- /dev/null +++ b/asm/nonmatchings/code_2BF90/func_800521D0.s @@ -0,0 +1,10 @@ +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches + +glabel func_800521D0 +/* 2D5D0 800521D0 8C830008 */ lw $v1, 8($a0) +/* 2D5D4 800521D4 90620000 */ lbu $v0, ($v1) +/* 2D5D8 800521D8 24630001 */ addiu $v1, $v1, 1 +/* 2D5DC 800521DC AC830008 */ sw $v1, 8($a0) +/* 2D5E0 800521E0 03E00008 */ jr $ra +/* 2D5E4 800521E4 304200FF */ andi $v0, $v0, 0xff diff --git a/asm/nonmatchings/code_2BF90/func_800521E8.s b/asm/nonmatchings/code_2BF90/func_800521E8.s new file mode 100644 index 0000000000..1ae6b9b813 --- /dev/null +++ b/asm/nonmatchings/code_2BF90/func_800521E8.s @@ -0,0 +1,55 @@ +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches + +glabel func_800521E8 +/* 2D5E8 800521E8 27BDFFD8 */ addiu $sp, $sp, -0x28 +/* 2D5EC 800521EC AFB3001C */ sw $s3, 0x1c($sp) +/* 2D5F0 800521F0 00A0982D */ daddu $s3, $a1, $zero +/* 2D5F4 800521F4 AFBF0024 */ sw $ra, 0x24($sp) +/* 2D5F8 800521F8 AFB40020 */ sw $s4, 0x20($sp) +/* 2D5FC 800521FC AFB20018 */ sw $s2, 0x18($sp) +/* 2D600 80052200 AFB10014 */ sw $s1, 0x14($sp) +/* 2D604 80052204 AFB00010 */ sw $s0, 0x10($sp) +/* 2D608 80052208 8E700030 */ lw $s0, 0x30($s3) +/* 2D60C 8005220C 8E620034 */ lw $v0, 0x34($s3) +/* 2D610 80052210 0202102B */ sltu $v0, $s0, $v0 +/* 2D614 80052214 1040001C */ beqz $v0, .L80052288 +/* 2D618 80052218 0080A02D */ daddu $s4, $a0, $zero +/* 2D61C 8005221C 001010C0 */ sll $v0, $s0, 3 +/* 2D620 80052220 00501021 */ addu $v0, $v0, $s0 +/* 2D624 80052224 000210C0 */ sll $v0, $v0, 3 +/* 2D628 80052228 24521320 */ addiu $s2, $v0, 0x1320 +.L8005222C: +/* 2D62C 8005222C 8E620030 */ lw $v0, 0x30($s3) +/* 2D630 80052230 02021023 */ subu $v0, $s0, $v0 +/* 2D634 80052234 000210C0 */ sll $v0, $v0, 3 +/* 2D638 80052238 244207B4 */ addiu $v0, $v0, 0x7b4 +/* 2D63C 8005223C 02828821 */ addu $s1, $s4, $v0 +/* 2D640 80052240 92230000 */ lbu $v1, ($s1) +/* 2D644 80052244 92620014 */ lbu $v0, 0x14($s3) +/* 2D648 80052248 1462000A */ bne $v1, $v0, .L80052274 +/* 2D64C 8005224C 00000000 */ nop +/* 2D650 80052250 8E820000 */ lw $v0, ($s4) +/* 2D654 80052254 00522021 */ addu $a0, $v0, $s2 +/* 2D658 80052258 90830045 */ lbu $v1, 0x45($a0) +/* 2D65C 8005225C 92820022 */ lbu $v0, 0x22($s4) +/* 2D660 80052260 54620004 */ bnel $v1, $v0, .L80052274 +/* 2D664 80052264 AE200000 */ sw $zero, ($s1) +/* 2D668 80052268 0C014E31 */ jal func_800538C4 +/* 2D66C 8005226C 320500FF */ andi $a1, $s0, 0xff +/* 2D670 80052270 AE200000 */ sw $zero, ($s1) +.L80052274: +/* 2D674 80052274 8E620034 */ lw $v0, 0x34($s3) +/* 2D678 80052278 26100001 */ addiu $s0, $s0, 1 +/* 2D67C 8005227C 0202102B */ sltu $v0, $s0, $v0 +/* 2D680 80052280 1440FFEA */ bnez $v0, .L8005222C +/* 2D684 80052284 26520048 */ addiu $s2, $s2, 0x48 +.L80052288: +/* 2D688 80052288 8FBF0024 */ lw $ra, 0x24($sp) +/* 2D68C 8005228C 8FB40020 */ lw $s4, 0x20($sp) +/* 2D690 80052290 8FB3001C */ lw $s3, 0x1c($sp) +/* 2D694 80052294 8FB20018 */ lw $s2, 0x18($sp) +/* 2D698 80052298 8FB10014 */ lw $s1, 0x14($sp) +/* 2D69C 8005229C 8FB00010 */ lw $s0, 0x10($sp) +/* 2D6A0 800522A0 03E00008 */ jr $ra +/* 2D6A4 800522A4 27BD0028 */ addiu $sp, $sp, 0x28 diff --git a/asm/nonmatchings/code_2BF90/func_800522A8.s b/asm/nonmatchings/code_2BF90/func_800522A8.s new file mode 100644 index 0000000000..8b439539a9 --- /dev/null +++ b/asm/nonmatchings/code_2BF90/func_800522A8.s @@ -0,0 +1,40 @@ +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches + +glabel func_800522A8 +/* 2D6A8 800522A8 24A901D4 */ addiu $t1, $a1, 0x1d4 +/* 2D6AC 800522AC 8CA70030 */ lw $a3, 0x30($a1) +/* 2D6B0 800522B0 8CA20034 */ lw $v0, 0x34($a1) +/* 2D6B4 800522B4 00E2102B */ sltu $v0, $a3, $v0 +/* 2D6B8 800522B8 1040001A */ beqz $v0, .L80052324 +/* 2D6BC 800522BC 0000402D */ daddu $t0, $zero, $zero +/* 2D6C0 800522C0 24A601D6 */ addiu $a2, $a1, 0x1d6 +.L800522C4: +/* 2D6C4 800522C4 8CA20030 */ lw $v0, 0x30($a1) +/* 2D6C8 800522C8 00E21023 */ subu $v0, $a3, $v0 +/* 2D6CC 800522CC 000210C0 */ sll $v0, $v0, 3 +/* 2D6D0 800522D0 244207B4 */ addiu $v0, $v0, 0x7b4 +/* 2D6D4 800522D4 00821821 */ addu $v1, $a0, $v0 +/* 2D6D8 800522D8 90620007 */ lbu $v0, 7($v1) +/* 2D6DC 800522DC 1040000C */ beqz $v0, .L80052310 +/* 2D6E0 800522E0 00000000 */ nop +/* 2D6E4 800522E4 90620001 */ lbu $v0, 1($v1) +/* 2D6E8 800522E8 A1220000 */ sb $v0, ($t1) +/* 2D6EC 800522EC 90620002 */ lbu $v0, 2($v1) +/* 2D6F0 800522F0 25080001 */ addiu $t0, $t0, 1 +/* 2D6F4 800522F4 A0C2FFFF */ sb $v0, -1($a2) +/* 2D6F8 800522F8 90620006 */ lbu $v0, 6($v1) +/* 2D6FC 800522FC 25290004 */ addiu $t1, $t1, 4 +/* 2D700 80052300 A0C20000 */ sb $v0, ($a2) +/* 2D704 80052304 2D020004 */ sltiu $v0, $t0, 4 +/* 2D708 80052308 10400006 */ beqz $v0, .L80052324 +/* 2D70C 8005230C 24C60004 */ addiu $a2, $a2, 4 +.L80052310: +/* 2D710 80052310 8CA20034 */ lw $v0, 0x34($a1) +/* 2D714 80052314 24E70001 */ addiu $a3, $a3, 1 +/* 2D718 80052318 00E2102B */ sltu $v0, $a3, $v0 +/* 2D71C 8005231C 1440FFE9 */ bnez $v0, .L800522C4 +/* 2D720 80052320 00000000 */ nop +.L80052324: +/* 2D724 80052324 03E00008 */ jr $ra +/* 2D728 80052328 00000000 */ nop diff --git a/asm/nonmatchings/code_2BF90/func_8005232C.s b/asm/nonmatchings/code_2BF90/func_8005232C.s new file mode 100644 index 0000000000..4d1cf3c6a5 --- /dev/null +++ b/asm/nonmatchings/code_2BF90/func_8005232C.s @@ -0,0 +1,172 @@ +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches + +glabel func_8005232C +/* 2D72C 8005232C 27BDFFC8 */ addiu $sp, $sp, -0x38 +/* 2D730 80052330 AFB60028 */ sw $s6, 0x28($sp) +/* 2D734 80052334 0080B02D */ daddu $s6, $a0, $zero +/* 2D738 80052338 AFB40020 */ sw $s4, 0x20($sp) +/* 2D73C 8005233C 00A0A02D */ daddu $s4, $a1, $zero +/* 2D740 80052340 AFBF0030 */ sw $ra, 0x30($sp) +/* 2D744 80052344 AFB7002C */ sw $s7, 0x2c($sp) +/* 2D748 80052348 AFB50024 */ sw $s5, 0x24($sp) +/* 2D74C 8005234C AFB3001C */ sw $s3, 0x1c($sp) +/* 2D750 80052350 AFB20018 */ sw $s2, 0x18($sp) +/* 2D754 80052354 AFB10014 */ sw $s1, 0x14($sp) +/* 2D758 80052358 AFB00010 */ sw $s0, 0x10($sp) +/* 2D75C 8005235C 92820025 */ lbu $v0, 0x25($s4) +/* 2D760 80052360 8ED70000 */ lw $s7, ($s6) +/* 2D764 80052364 14400081 */ bnez $v0, .L8005256C +/* 2D768 80052368 0000A82D */ daddu $s5, $zero, $zero +.L8005236C: +/* 2D76C 8005236C 00151080 */ sll $v0, $s5, 2 +/* 2D770 80052370 244201D4 */ addiu $v0, $v0, 0x1d4 +/* 2D774 80052374 02829821 */ addu $s3, $s4, $v0 +/* 2D778 80052378 92620001 */ lbu $v0, 1($s3) +/* 2D77C 8005237C 50400076 */ beql $v0, $zero, .L80052558 +/* 2D780 80052380 26B50001 */ addiu $s5, $s5, 1 +/* 2D784 80052384 92620000 */ lbu $v0, ($s3) +/* 2D788 80052388 8E900030 */ lw $s0, 0x30($s4) +/* 2D78C 8005238C 8E840034 */ lw $a0, 0x34($s4) +/* 2D790 80052390 00021880 */ sll $v1, $v0, 2 +/* 2D794 80052394 00621821 */ addu $v1, $v1, $v0 +/* 2D798 80052398 000318C0 */ sll $v1, $v1, 3 +/* 2D79C 8005239C 24630044 */ addiu $v1, $v1, 0x44 +/* 2D7A0 800523A0 0204102B */ sltu $v0, $s0, $a0 +/* 2D7A4 800523A4 10400012 */ beqz $v0, .L800523F0 +/* 2D7A8 800523A8 02839021 */ addu $s2, $s4, $v1 +/* 2D7AC 800523AC 001010C0 */ sll $v0, $s0, 3 +/* 2D7B0 800523B0 00501021 */ addu $v0, $v0, $s0 +/* 2D7B4 800523B4 000210C0 */ sll $v0, $v0, 3 +/* 2D7B8 800523B8 24431320 */ addiu $v1, $v0, 0x1320 +.L800523BC: +/* 2D7BC 800523BC 02E38821 */ addu $s1, $s7, $v1 +/* 2D7C0 800523C0 92220045 */ lbu $v0, 0x45($s1) +/* 2D7C4 800523C4 10400005 */ beqz $v0, .L800523DC +/* 2D7C8 800523C8 00000000 */ nop +/* 2D7CC 800523CC 26100001 */ addiu $s0, $s0, 1 +/* 2D7D0 800523D0 0204102B */ sltu $v0, $s0, $a0 +/* 2D7D4 800523D4 1440FFF9 */ bnez $v0, .L800523BC +/* 2D7D8 800523D8 24630048 */ addiu $v1, $v1, 0x48 +.L800523DC: +/* 2D7DC 800523DC 8E820034 */ lw $v0, 0x34($s4) +/* 2D7E0 800523E0 0202102B */ sltu $v0, $s0, $v0 +/* 2D7E4 800523E4 1440001C */ bnez $v0, .L80052458 +/* 2D7E8 800523E8 00000000 */ nop +/* 2D7EC 800523EC 8E900030 */ lw $s0, 0x30($s4) +.L800523F0: +/* 2D7F0 800523F0 8E820034 */ lw $v0, 0x34($s4) +/* 2D7F4 800523F4 0202102B */ sltu $v0, $s0, $v0 +/* 2D7F8 800523F8 10400056 */ beqz $v0, .L80052554 +/* 2D7FC 800523FC 001010C0 */ sll $v0, $s0, 3 +/* 2D800 80052400 00501021 */ addu $v0, $v0, $s0 +/* 2D804 80052404 000210C0 */ sll $v0, $v0, 3 +/* 2D808 80052408 24441320 */ addiu $a0, $v0, 0x1320 +.L8005240C: +/* 2D80C 8005240C 02E48821 */ addu $s1, $s7, $a0 +/* 2D810 80052410 92220045 */ lbu $v0, 0x45($s1) +/* 2D814 80052414 92C30022 */ lbu $v1, 0x22($s6) +/* 2D818 80052418 0043102B */ sltu $v0, $v0, $v1 +/* 2D81C 8005241C 50400006 */ beql $v0, $zero, .L80052438 +/* 2D820 80052420 26100001 */ addiu $s0, $s0, 1 +/* 2D824 80052424 0220202D */ daddu $a0, $s1, $zero +/* 2D828 80052428 0C014E31 */ jal func_800538C4 +/* 2D82C 8005242C 320500FF */ andi $a1, $s0, 0xff +/* 2D830 80052430 08014912 */ j .L80052448 +/* 2D834 80052434 00000000 */ nop +.L80052438: +/* 2D838 80052438 8E820034 */ lw $v0, 0x34($s4) +/* 2D83C 8005243C 0202102B */ sltu $v0, $s0, $v0 +/* 2D840 80052440 1440FFF2 */ bnez $v0, .L8005240C +/* 2D844 80052444 24840048 */ addiu $a0, $a0, 0x48 +.L80052448: +/* 2D848 80052448 8E820034 */ lw $v0, 0x34($s4) +/* 2D84C 8005244C 0202102B */ sltu $v0, $s0, $v0 +/* 2D850 80052450 50400041 */ beql $v0, $zero, .L80052558 +/* 2D854 80052454 26B50001 */ addiu $s5, $s5, 1 +.L80052458: +/* 2D858 80052458 8E850030 */ lw $a1, 0x30($s4) +/* 2D85C 8005245C 92640000 */ lbu $a0, ($s3) +/* 2D860 80052460 8E830014 */ lw $v1, 0x14($s4) +/* 2D864 80052464 92620001 */ lbu $v0, 1($s3) +/* 2D868 80052468 02052823 */ subu $a1, $s0, $a1 +/* 2D86C 8005246C 000528C0 */ sll $a1, $a1, 3 +/* 2D870 80052470 24A507B4 */ addiu $a1, $a1, 0x7b4 +/* 2D874 80052474 02C52821 */ addu $a1, $s6, $a1 +/* 2D878 80052478 00042400 */ sll $a0, $a0, 0x10 +/* 2D87C 8005247C 00641821 */ addu $v1, $v1, $a0 +/* 2D880 80052480 00021200 */ sll $v0, $v0, 8 +/* 2D884 80052484 00621821 */ addu $v1, $v1, $v0 +/* 2D888 80052488 ACA30000 */ sw $v1, ($a1) +/* 2D88C 8005248C 92630001 */ lbu $v1, 1($s3) +/* 2D890 80052490 8E440000 */ lw $a0, ($s2) +/* 2D894 80052494 3063007F */ andi $v1, $v1, 0x7f +/* 2D898 80052498 00031040 */ sll $v0, $v1, 1 +/* 2D89C 8005249C 00431021 */ addu $v0, $v0, $v1 +/* 2D8A0 800524A0 000210C0 */ sll $v0, $v0, 3 +/* 2D8A4 800524A4 00431021 */ addu $v0, $v0, $v1 +/* 2D8A8 800524A8 9483001E */ lhu $v1, 0x1e($a0) +/* 2D8AC 800524AC 00021080 */ sll $v0, $v0, 2 +/* 2D8B0 800524B0 00431023 */ subu $v0, $v0, $v1 +/* 2D8B4 800524B4 A4A20004 */ sh $v0, 4($a1) +/* 2D8B8 800524B8 92630002 */ lbu $v1, 2($s3) +/* 2D8BC 800524BC 3063007F */ andi $v1, $v1, 0x7f +/* 2D8C0 800524C0 A0A30006 */ sb $v1, 6($a1) +/* 2D8C4 800524C4 82840038 */ lb $a0, 0x38($s4) +/* 2D8C8 800524C8 86420018 */ lh $v0, 0x18($s2) +/* 2D8CC 800524CC 00820018 */ mult $a0, $v0 +/* 2D8D0 800524D0 00003012 */ mflo $a2 +/* 2D8D4 800524D4 00000000 */ nop +/* 2D8D8 800524D8 00000000 */ nop +/* 2D8DC 800524DC 00C30018 */ mult $a2, $v1 +/* 2D8E0 800524E0 00003012 */ mflo $a2 +/* 2D8E4 800524E4 00061383 */ sra $v0, $a2, 0xe +/* 2D8E8 800524E8 A6220040 */ sh $v0, 0x40($s1) +/* 2D8EC 800524EC 84A20004 */ lh $v0, 4($a1) +/* 2D8F0 800524F0 8644000C */ lh $a0, 0xc($s2) +/* 2D8F4 800524F4 0C014E3E */ jal func_800538F8 +/* 2D8F8 800524F8 00442021 */ addu $a0, $v0, $a0 +/* 2D8FC 800524FC 8E420000 */ lw $v0, ($s2) +/* 2D900 80052500 C4420020 */ lwc1 $f2, 0x20($v0) +/* 2D904 80052504 46020002 */ mul.s $f0, $f0, $f2 +/* 2D908 80052508 00000000 */ nop +/* 2D90C 8005250C E6200004 */ swc1 $f0, 4($s1) +/* 2D910 80052510 92420024 */ lbu $v0, 0x24($s2) +/* 2D914 80052514 A222000E */ sb $v0, 0xe($s1) +/* 2D918 80052518 92420025 */ lbu $v0, 0x25($s2) +/* 2D91C 8005251C A222000F */ sb $v0, 0xf($s1) +/* 2D920 80052520 8E420000 */ lw $v0, ($s2) +/* 2D924 80052524 AE220000 */ sw $v0, ($s1) +/* 2D928 80052528 92C20023 */ lbu $v0, 0x23($s6) +/* 2D92C 8005252C A2220010 */ sb $v0, 0x10($s1) +/* 2D930 80052530 8E420004 */ lw $v0, 4($s2) +/* 2D934 80052534 AE220014 */ sw $v0, 0x14($s1) +/* 2D938 80052538 8E430008 */ lw $v1, 8($s2) +/* 2D93C 8005253C 24020002 */ addiu $v0, $zero, 2 +/* 2D940 80052540 A2220043 */ sb $v0, 0x43($s1) +/* 2D944 80052544 AE230018 */ sw $v1, 0x18($s1) +/* 2D948 80052548 92C20022 */ lbu $v0, 0x22($s6) +/* 2D94C 8005254C A2220045 */ sb $v0, 0x45($s1) +/* 2D950 80052550 A2220044 */ sb $v0, 0x44($s1) +.L80052554: +/* 2D954 80052554 26B50001 */ addiu $s5, $s5, 1 +.L80052558: +/* 2D958 80052558 2EA20004 */ sltiu $v0, $s5, 4 +/* 2D95C 8005255C A2600000 */ sb $zero, ($s3) +/* 2D960 80052560 A2600001 */ sb $zero, 1($s3) +/* 2D964 80052564 1440FF81 */ bnez $v0, .L8005236C +/* 2D968 80052568 A2600002 */ sb $zero, 2($s3) +.L8005256C: +/* 2D96C 8005256C 8FBF0030 */ lw $ra, 0x30($sp) +/* 2D970 80052570 8FB7002C */ lw $s7, 0x2c($sp) +/* 2D974 80052574 8FB60028 */ lw $s6, 0x28($sp) +/* 2D978 80052578 8FB50024 */ lw $s5, 0x24($sp) +/* 2D97C 8005257C 8FB40020 */ lw $s4, 0x20($sp) +/* 2D980 80052580 8FB3001C */ lw $s3, 0x1c($sp) +/* 2D984 80052584 8FB20018 */ lw $s2, 0x18($sp) +/* 2D988 80052588 8FB10014 */ lw $s1, 0x14($sp) +/* 2D98C 8005258C 8FB00010 */ lw $s0, 0x10($sp) +/* 2D990 80052590 03E00008 */ jr $ra +/* 2D994 80052594 27BD0038 */ addiu $sp, $sp, 0x38 +/* 2D998 80052598 00000000 */ nop +/* 2D99C 8005259C 00000000 */ nop diff --git a/asm/nonmatchings/code_303c0_len_3e10/func_80055068.s b/asm/nonmatchings/code_30450/func_80055068.s similarity index 100% rename from asm/nonmatchings/code_303c0_len_3e10/func_80055068.s rename to asm/nonmatchings/code_30450/func_80055068.s diff --git a/asm/nonmatchings/code_303c0_len_3e10/func_8005513C.s b/asm/nonmatchings/code_30450/func_8005513C.s similarity index 100% rename from asm/nonmatchings/code_303c0_len_3e10/func_8005513C.s rename to asm/nonmatchings/code_30450/func_8005513C.s diff --git a/asm/nonmatchings/code_303c0_len_3e10/func_800558D4.s b/asm/nonmatchings/code_30450/func_800558D4.s similarity index 100% rename from asm/nonmatchings/code_303c0_len_3e10/func_800558D4.s rename to asm/nonmatchings/code_30450/func_800558D4.s diff --git a/asm/nonmatchings/code_303c0_len_3e10/func_8005591C.s b/asm/nonmatchings/code_30450/func_8005591C.s similarity index 100% rename from asm/nonmatchings/code_303c0_len_3e10/func_8005591C.s rename to asm/nonmatchings/code_30450/func_8005591C.s diff --git a/asm/nonmatchings/code_303c0_len_3e10/func_80055970.s b/asm/nonmatchings/code_30450/func_80055970.s similarity index 100% rename from asm/nonmatchings/code_303c0_len_3e10/func_80055970.s rename to asm/nonmatchings/code_30450/func_80055970.s diff --git a/asm/nonmatchings/code_303c0_len_3e10/func_80055A18.s b/asm/nonmatchings/code_30450/func_80055A18.s similarity index 100% rename from asm/nonmatchings/code_303c0_len_3e10/func_80055A18.s rename to asm/nonmatchings/code_30450/func_80055A18.s diff --git a/asm/nonmatchings/code_303c0_len_3e10/func_80055A6C.s b/asm/nonmatchings/code_30450/func_80055A6C.s similarity index 100% rename from asm/nonmatchings/code_303c0_len_3e10/func_80055A6C.s rename to asm/nonmatchings/code_30450/func_80055A6C.s diff --git a/asm/nonmatchings/code_303c0_len_3e10/func_80055ABC.s b/asm/nonmatchings/code_30450/func_80055ABC.s similarity index 100% rename from asm/nonmatchings/code_303c0_len_3e10/func_80055ABC.s rename to asm/nonmatchings/code_30450/func_80055ABC.s diff --git a/asm/nonmatchings/code_303c0_len_3e10/func_80055AF0.s b/asm/nonmatchings/code_30450/func_80055AF0.s similarity index 100% rename from asm/nonmatchings/code_303c0_len_3e10/func_80055AF0.s rename to asm/nonmatchings/code_30450/func_80055AF0.s diff --git a/asm/nonmatchings/code_303c0_len_3e10/func_80055B28.s b/asm/nonmatchings/code_30450/func_80055B28.s similarity index 100% rename from asm/nonmatchings/code_303c0_len_3e10/func_80055B28.s rename to asm/nonmatchings/code_30450/func_80055B28.s diff --git a/asm/nonmatchings/code_303c0_len_3e10/func_80055B80.s b/asm/nonmatchings/code_30450/func_80055B80.s similarity index 100% rename from asm/nonmatchings/code_303c0_len_3e10/func_80055B80.s rename to asm/nonmatchings/code_30450/func_80055B80.s diff --git a/asm/nonmatchings/code_303c0_len_3e10/func_80055BB8.s b/asm/nonmatchings/code_30450/func_80055BB8.s similarity index 100% rename from asm/nonmatchings/code_303c0_len_3e10/func_80055BB8.s rename to asm/nonmatchings/code_30450/func_80055BB8.s diff --git a/asm/nonmatchings/code_303c0_len_3e10/func_80055BF0.s b/asm/nonmatchings/code_30450/func_80055BF0.s similarity index 100% rename from asm/nonmatchings/code_303c0_len_3e10/func_80055BF0.s rename to asm/nonmatchings/code_30450/func_80055BF0.s diff --git a/asm/nonmatchings/code_303c0_len_3e10/func_80055C2C.s b/asm/nonmatchings/code_30450/func_80055C2C.s similarity index 100% rename from asm/nonmatchings/code_303c0_len_3e10/func_80055C2C.s rename to asm/nonmatchings/code_30450/func_80055C2C.s diff --git a/asm/nonmatchings/code_303c0_len_3e10/func_80055C64.s b/asm/nonmatchings/code_30450/func_80055C64.s similarity index 100% rename from asm/nonmatchings/code_303c0_len_3e10/func_80055C64.s rename to asm/nonmatchings/code_30450/func_80055C64.s diff --git a/asm/nonmatchings/code_303c0_len_3e10/func_80055C94.s b/asm/nonmatchings/code_30450/func_80055C94.s similarity index 100% rename from asm/nonmatchings/code_303c0_len_3e10/func_80055C94.s rename to asm/nonmatchings/code_30450/func_80055C94.s diff --git a/asm/nonmatchings/code_303c0_len_3e10/func_80055CC4.s b/asm/nonmatchings/code_30450/func_80055CC4.s similarity index 100% rename from asm/nonmatchings/code_303c0_len_3e10/func_80055CC4.s rename to asm/nonmatchings/code_30450/func_80055CC4.s diff --git a/asm/nonmatchings/code_303c0_len_3e10/func_80055CE8.s b/asm/nonmatchings/code_30450/func_80055CE8.s similarity index 100% rename from asm/nonmatchings/code_303c0_len_3e10/func_80055CE8.s rename to asm/nonmatchings/code_30450/func_80055CE8.s diff --git a/asm/nonmatchings/code_303c0_len_3e10/func_80055D38.s b/asm/nonmatchings/code_30450/func_80055D38.s similarity index 100% rename from asm/nonmatchings/code_303c0_len_3e10/func_80055D38.s rename to asm/nonmatchings/code_30450/func_80055D38.s diff --git a/asm/nonmatchings/code_303c0_len_3e10/func_80055D8C.s b/asm/nonmatchings/code_30450/func_80055D8C.s similarity index 100% rename from asm/nonmatchings/code_303c0_len_3e10/func_80055D8C.s rename to asm/nonmatchings/code_30450/func_80055D8C.s diff --git a/asm/nonmatchings/code_303c0_len_3e10/func_80055DDC.s b/asm/nonmatchings/code_30450/func_80055DDC.s similarity index 100% rename from asm/nonmatchings/code_303c0_len_3e10/func_80055DDC.s rename to asm/nonmatchings/code_30450/func_80055DDC.s diff --git a/asm/nonmatchings/code_303c0_len_3e10/func_80055E48.s b/asm/nonmatchings/code_30450/func_80055E48.s similarity index 100% rename from asm/nonmatchings/code_303c0_len_3e10/func_80055E48.s rename to asm/nonmatchings/code_30450/func_80055E48.s diff --git a/asm/nonmatchings/code_303c0_len_3e10/func_80055EB4.s b/asm/nonmatchings/code_30450/func_80055EB4.s similarity index 100% rename from asm/nonmatchings/code_303c0_len_3e10/func_80055EB4.s rename to asm/nonmatchings/code_30450/func_80055EB4.s diff --git a/asm/nonmatchings/code_303c0_len_3e10/func_800560BC.s b/asm/nonmatchings/code_30450/func_800560BC.s similarity index 100% rename from asm/nonmatchings/code_303c0_len_3e10/func_800560BC.s rename to asm/nonmatchings/code_30450/func_800560BC.s diff --git a/asm/nonmatchings/code_303c0_len_3e10/func_8005610C.s b/asm/nonmatchings/code_30450/func_8005610C.s similarity index 100% rename from asm/nonmatchings/code_303c0_len_3e10/func_8005610C.s rename to asm/nonmatchings/code_30450/func_8005610C.s diff --git a/asm/nonmatchings/code_31650/func_80058050.s b/asm/nonmatchings/code_33450/func_80058050.s similarity index 100% rename from asm/nonmatchings/code_31650/func_80058050.s rename to asm/nonmatchings/code_33450/func_80058050.s diff --git a/asm/nonmatchings/code_31650/func_80058B20.s b/asm/nonmatchings/code_33450/func_80058B20.s similarity index 100% rename from asm/nonmatchings/code_31650/func_80058B20.s rename to asm/nonmatchings/code_33450/func_80058B20.s diff --git a/asm/nonmatchings/code_31650/func_80058C6C.s b/asm/nonmatchings/code_33450/func_80058C6C.s similarity index 100% rename from asm/nonmatchings/code_31650/func_80058C6C.s rename to asm/nonmatchings/code_33450/func_80058C6C.s diff --git a/asm/nonmatchings/os/code_3cd00_len_5f0/osContGetInitData.s b/asm/nonmatchings/code_3CF80/osContGetInitData.s similarity index 100% rename from asm/nonmatchings/os/code_3cd00_len_5f0/osContGetInitData.s rename to asm/nonmatchings/code_3CF80/osContGetInitData.s diff --git a/asm/nonmatchings/os/code_3cd00_len_5f0/osContInit.s b/asm/nonmatchings/code_3CF80/osContInit.s similarity index 100% rename from asm/nonmatchings/os/code_3cd00_len_5f0/osContInit.s rename to asm/nonmatchings/code_3CF80/osContInit.s diff --git a/asm/nonmatchings/os/code_3cd00_len_5f0/osPackRequestData.s b/asm/nonmatchings/code_3CF80/osPackRequestData.s similarity index 100% rename from asm/nonmatchings/os/code_3cd00_len_5f0/osPackRequestData.s rename to asm/nonmatchings/code_3CF80/osPackRequestData.s diff --git a/asm/nonmatchings/os/code_3fa50_len_f60/_Printf.s b/asm/nonmatchings/code_3FEA0/_Printf.s similarity index 100% rename from asm/nonmatchings/os/code_3fa50_len_f60/_Printf.s rename to asm/nonmatchings/code_3FEA0/_Printf.s diff --git a/asm/nonmatchings/os/code_3fa50_len_f60/_Putfld.s b/asm/nonmatchings/code_3FEA0/_Putfld.s similarity index 100% rename from asm/nonmatchings/os/code_3fa50_len_f60/_Putfld.s rename to asm/nonmatchings/code_3FEA0/_Putfld.s diff --git a/asm/nonmatchings/os/code_3fa50_len_f60/proutSprintf.s b/asm/nonmatchings/code_3FEA0/proutSprintf.s similarity index 100% rename from asm/nonmatchings/os/code_3fa50_len_f60/proutSprintf.s rename to asm/nonmatchings/code_3FEA0/proutSprintf.s diff --git a/asm/nonmatchings/os/code_3fa50_len_f60/sprintf.s b/asm/nonmatchings/code_3FEA0/sprintf.s similarity index 100% rename from asm/nonmatchings/os/code_3fa50_len_f60/sprintf.s rename to asm/nonmatchings/code_3FEA0/sprintf.s diff --git a/asm/nonmatchings/os/code_40e10_len_240/osSpTaskLoad.s b/asm/nonmatchings/code_40E10/osSpTaskLoad.s similarity index 100% rename from asm/nonmatchings/os/code_40e10_len_240/osSpTaskLoad.s rename to asm/nonmatchings/code_40E10/osSpTaskLoad.s diff --git a/asm/nonmatchings/os/code_40e10_len_240/osSpTaskStartGo.s b/asm/nonmatchings/code_40E10/osSpTaskStartGo.s similarity index 100% rename from asm/nonmatchings/os/code_40e10_len_240/osSpTaskStartGo.s rename to asm/nonmatchings/code_40E10/osSpTaskStartGo.s diff --git a/asm/nonmatchings/code_41880/osInsertTimer.s b/asm/nonmatchings/code_41880/osInsertTimer.s new file mode 100644 index 0000000000..ee5a6fe0dd --- /dev/null +++ b/asm/nonmatchings/code_41880/osInsertTimer.s @@ -0,0 +1,76 @@ +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches + +glabel osInsertTimer +/* 41A90 80066690 27BDFFE0 */ addiu $sp, $sp, -0x20 +/* 41A94 80066694 AFB20018 */ sw $s2, 0x18($sp) +/* 41A98 80066698 00809021 */ addu $s2, $a0, $zero +/* 41A9C 8006669C AFBF001C */ sw $ra, 0x1c($sp) +/* 41AA0 800666A0 AFB10014 */ sw $s1, 0x14($sp) +/* 41AA4 800666A4 0C01ACD8 */ jal __osDisableInt +/* 41AA8 800666A8 AFB00010 */ sw $s0, 0x10($sp) +/* 41AAC 800666AC 3C038009 */ lui $v1, %hi(D_80094670) +/* 41AB0 800666B0 8C634670 */ lw $v1, %lo(D_80094670)($v1) +/* 41AB4 800666B4 8C660000 */ lw $a2, ($v1) +/* 41AB8 800666B8 8E500010 */ lw $s0, 0x10($s2) +/* 41ABC 800666BC 8E510014 */ lw $s1, 0x14($s2) +/* 41AC0 800666C0 10C30017 */ beq $a2, $v1, .L80066720 +/* 41AC4 800666C4 00403821 */ addu $a3, $v0, $zero +/* 41AC8 800666C8 080199BE */ j .L800666F8 +/* 41ACC 800666CC 00000000 */ nop +.L800666D0: +/* 41AD0 800666D0 8CC20010 */ lw $v0, 0x10($a2) +/* 41AD4 800666D4 8CC30014 */ lw $v1, 0x14($a2) +/* 41AD8 800666D8 8CC60000 */ lw $a2, ($a2) +/* 41ADC 800666DC 3C048009 */ lui $a0, %hi(D_80094670) +/* 41AE0 800666E0 8C844670 */ lw $a0, %lo(D_80094670)($a0) +/* 41AE4 800666E4 0223282B */ sltu $a1, $s1, $v1 +/* 41AE8 800666E8 02238823 */ subu $s1, $s1, $v1 +/* 41AEC 800666EC 02028023 */ subu $s0, $s0, $v0 +/* 41AF0 800666F0 10C4000B */ beq $a2, $a0, .L80066720 +/* 41AF4 800666F4 02058023 */ subu $s0, $s0, $a1 +.L800666F8: +/* 41AF8 800666F8 8CC30010 */ lw $v1, 0x10($a2) +/* 41AFC 800666FC 0070102B */ sltu $v0, $v1, $s0 +/* 41B00 80066700 1440FFF3 */ bnez $v0, .L800666D0 +/* 41B04 80066704 00000000 */ nop +/* 41B08 80066708 16030005 */ bne $s0, $v1, .L80066720 +/* 41B0C 8006670C 00000000 */ nop +/* 41B10 80066710 8CC20014 */ lw $v0, 0x14($a2) +/* 41B14 80066714 0051102B */ sltu $v0, $v0, $s1 +/* 41B18 80066718 1440FFED */ bnez $v0, .L800666D0 +/* 41B1C 8006671C 00000000 */ nop +.L80066720: +/* 41B20 80066720 3C028009 */ lui $v0, %hi(D_80094670) +/* 41B24 80066724 8C424670 */ lw $v0, %lo(D_80094670)($v0) +/* 41B28 80066728 AE500010 */ sw $s0, 0x10($s2) +/* 41B2C 8006672C AE510014 */ sw $s1, 0x14($s2) +/* 41B30 80066730 50C2000A */ beql $a2, $v0, .L8006675C +/* 41B34 80066734 AE460000 */ sw $a2, ($s2) +/* 41B38 80066738 8CC20010 */ lw $v0, 0x10($a2) +/* 41B3C 8006673C 8CC30014 */ lw $v1, 0x14($a2) +/* 41B40 80066740 0071202B */ sltu $a0, $v1, $s1 +/* 41B44 80066744 00711823 */ subu $v1, $v1, $s1 +/* 41B48 80066748 00501023 */ subu $v0, $v0, $s0 +/* 41B4C 8006674C 00441023 */ subu $v0, $v0, $a0 +/* 41B50 80066750 ACC20010 */ sw $v0, 0x10($a2) +/* 41B54 80066754 ACC30014 */ sw $v1, 0x14($a2) +/* 41B58 80066758 AE460000 */ sw $a2, ($s2) +.L8006675C: +/* 41B5C 8006675C 8CC20004 */ lw $v0, 4($a2) +/* 41B60 80066760 AE420004 */ sw $v0, 4($s2) +/* 41B64 80066764 8CC20004 */ lw $v0, 4($a2) +/* 41B68 80066768 00E02021 */ addu $a0, $a3, $zero +/* 41B6C 8006676C AC520000 */ sw $s2, ($v0) +/* 41B70 80066770 0C01ACF4 */ jal __osRestoreInt +/* 41B74 80066774 ACD20004 */ sw $s2, 4($a2) +/* 41B78 80066778 02001021 */ addu $v0, $s0, $zero +/* 41B7C 8006677C 02201821 */ addu $v1, $s1, $zero +/* 41B80 80066780 8FBF001C */ lw $ra, 0x1c($sp) +/* 41B84 80066784 8FB20018 */ lw $s2, 0x18($sp) +/* 41B88 80066788 8FB10014 */ lw $s1, 0x14($sp) +/* 41B8C 8006678C 8FB00010 */ lw $s0, 0x10($sp) +/* 41B90 80066790 03E00008 */ jr $ra +/* 41B94 80066794 27BD0020 */ addiu $sp, $sp, 0x20 +/* 41B98 80066798 00000000 */ nop +/* 41B9C 8006679C 00000000 */ nop diff --git a/asm/nonmatchings/code_41880/osSetTimerIntr.s b/asm/nonmatchings/code_41880/osSetTimerIntr.s new file mode 100644 index 0000000000..ec1a81b983 --- /dev/null +++ b/asm/nonmatchings/code_41880/osSetTimerIntr.s @@ -0,0 +1,38 @@ +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches + +glabel osSetTimerIntr +/* 41A10 80066610 27BDFFD8 */ addiu $sp, $sp, -0x28 +/* 41A14 80066614 AFB30020 */ sw $s3, 0x20($sp) +/* 41A18 80066618 AFB2001C */ sw $s2, 0x1c($sp) +/* 41A1C 8006661C 00809021 */ addu $s2, $a0, $zero +/* 41A20 80066620 00A09821 */ addu $s3, $a1, $zero +/* 41A24 80066624 AFBF0024 */ sw $ra, 0x24($sp) +/* 41A28 80066628 16400007 */ bnez $s2, .L80066648 +/* 41A2C 8006662C AFB00018 */ sw $s0, 0x18($sp) +/* 41A30 80066630 16400003 */ bnez $s2, .L80066640 +/* 41A34 80066634 2E6201D4 */ sltiu $v0, $s3, 0x1d4 +/* 41A38 80066638 10400003 */ beqz $v0, .L80066648 +/* 41A3C 8006663C 00000000 */ nop +.L80066640: +/* 41A40 80066640 24120000 */ addiu $s2, $zero, 0 +/* 41A44 80066644 241301D4 */ addiu $s3, $zero, 0x1d4 +.L80066648: +/* 41A48 80066648 0C01ACD8 */ jal __osDisableInt +/* 41A4C 8006664C 00000000 */ nop +/* 41A50 80066650 0C019680 */ jal osGetCount +/* 41A54 80066654 00408021 */ addu $s0, $v0, $zero +/* 41A58 80066658 3C01800A */ lui $at, %hi(D_8009A62C) +/* 41A5C 8006665C AC22A62C */ sw $v0, %lo(D_8009A62C)($at) +/* 41A60 80066660 00402821 */ addu $a1, $v0, $zero +/* 41A64 80066664 00002021 */ addu $a0, $zero, $zero +/* 41A68 80066668 0C01B1A0 */ jal osSetCompare +/* 41A6C 8006666C 02652021 */ addu $a0, $s3, $a1 +/* 41A70 80066670 0C01ACF4 */ jal __osRestoreInt +/* 41A74 80066674 02002021 */ addu $a0, $s0, $zero +/* 41A78 80066678 8FBF0024 */ lw $ra, 0x24($sp) +/* 41A7C 8006667C 8FB30020 */ lw $s3, 0x20($sp) +/* 41A80 80066680 8FB2001C */ lw $s2, 0x1c($sp) +/* 41A84 80066684 8FB00018 */ lw $s0, 0x18($sp) +/* 41A88 80066688 03E00008 */ jr $ra +/* 41A8C 8006668C 27BD0028 */ addiu $sp, $sp, 0x28 diff --git a/asm/nonmatchings/code_41880/osTimerInterrupt.s b/asm/nonmatchings/code_41880/osTimerInterrupt.s new file mode 100644 index 0000000000..2330fb1c3b --- /dev/null +++ b/asm/nonmatchings/code_41880/osTimerInterrupt.s @@ -0,0 +1,90 @@ +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches + +glabel osTimerInterrupt +/* 418D4 800664D4 3C038009 */ lui $v1, %hi(D_80094670) +/* 418D8 800664D8 8C634670 */ lw $v1, %lo(D_80094670)($v1) +/* 418DC 800664DC 27BDFFE8 */ addiu $sp, $sp, -0x18 +/* 418E0 800664E0 AFBF0014 */ sw $ra, 0x14($sp) +/* 418E4 800664E4 AFB00010 */ sw $s0, 0x10($sp) +/* 418E8 800664E8 8C620000 */ lw $v0, ($v1) +/* 418EC 800664EC 10430044 */ beq $v0, $v1, .L80066600 +/* 418F0 800664F0 00000000 */ nop +.L800664F4: +/* 418F4 800664F4 3C028009 */ lui $v0, %hi(D_80094670) +/* 418F8 800664F8 8C424670 */ lw $v0, %lo(D_80094670)($v0) +/* 418FC 800664FC 8C500000 */ lw $s0, ($v0) +/* 41900 80066500 16020006 */ bne $s0, $v0, .L8006651C +/* 41904 80066504 00000000 */ nop +/* 41908 80066508 0C01B1A0 */ jal osSetCompare +/* 4190C 8006650C 00002021 */ addu $a0, $zero, $zero +/* 41910 80066510 3C01800A */ lui $at, %hi(D_8009A62C) +/* 41914 80066514 08019980 */ j .L80066600 +/* 41918 80066518 AC20A62C */ sw $zero, %lo(D_8009A62C)($at) +.L8006651C: +/* 4191C 8006651C 0C019680 */ jal osGetCount +/* 41920 80066520 00000000 */ nop +/* 41924 80066524 3C03800A */ lui $v1, %hi(D_8009A62C) +/* 41928 80066528 8C63A62C */ lw $v1, %lo(D_8009A62C)($v1) +/* 4192C 8006652C 3C01800A */ lui $at, %hi(D_8009A62C) +/* 41930 80066530 AC22A62C */ sw $v0, %lo(D_8009A62C)($at) +/* 41934 80066534 00431023 */ subu $v0, $v0, $v1 +/* 41938 80066538 8E030010 */ lw $v1, 0x10($s0) +/* 4193C 8006653C 00403821 */ addu $a3, $v0, $zero +/* 41940 80066540 00003021 */ addu $a2, $zero, $zero +/* 41944 80066544 00C3102B */ sltu $v0, $a2, $v1 +/* 41948 80066548 14400007 */ bnez $v0, .L80066568 +/* 4194C 8006654C 00000000 */ nop +/* 41950 80066550 14660010 */ bne $v1, $a2, .L80066594 +/* 41954 80066554 00000000 */ nop +/* 41958 80066558 8E020014 */ lw $v0, 0x14($s0) +/* 4195C 8006655C 00E2102B */ sltu $v0, $a3, $v0 +/* 41960 80066560 1040000C */ beqz $v0, .L80066594 +/* 41964 80066564 00000000 */ nop +.L80066568: +/* 41968 80066568 8E040010 */ lw $a0, 0x10($s0) +/* 4196C 8006656C 8E050014 */ lw $a1, 0x14($s0) +/* 41970 80066570 00A7102B */ sltu $v0, $a1, $a3 +/* 41974 80066574 00A72823 */ subu $a1, $a1, $a3 +/* 41978 80066578 00862023 */ subu $a0, $a0, $a2 +/* 4197C 8006657C 00822023 */ subu $a0, $a0, $v0 +/* 41980 80066580 AE040010 */ sw $a0, 0x10($s0) +/* 41984 80066584 0C019984 */ jal osSetTimerIntr +/* 41988 80066588 AE050014 */ sw $a1, 0x14($s0) +/* 4198C 8006658C 08019980 */ j .L80066600 +/* 41990 80066590 00000000 */ nop +.L80066594: +/* 41994 80066594 8E030004 */ lw $v1, 4($s0) +/* 41998 80066598 8E020000 */ lw $v0, ($s0) +/* 4199C 8006659C AC620000 */ sw $v0, ($v1) +/* 419A0 800665A0 8E030000 */ lw $v1, ($s0) +/* 419A4 800665A4 8E020004 */ lw $v0, 4($s0) +/* 419A8 800665A8 AC620004 */ sw $v0, 4($v1) +/* 419AC 800665AC 8E040018 */ lw $a0, 0x18($s0) +/* 419B0 800665B0 AE000000 */ sw $zero, ($s0) +/* 419B4 800665B4 10800004 */ beqz $a0, .L800665C8 +/* 419B8 800665B8 AE000004 */ sw $zero, 4($s0) +/* 419BC 800665BC 8E05001C */ lw $a1, 0x1c($s0) +/* 419C0 800665C0 0C019608 */ jal osSendMesg +/* 419C4 800665C4 00003021 */ addu $a2, $zero, $zero +.L800665C8: +/* 419C8 800665C8 8E020008 */ lw $v0, 8($s0) +/* 419CC 800665CC 14400004 */ bnez $v0, .L800665E0 +/* 419D0 800665D0 00000000 */ nop +/* 419D4 800665D4 8E02000C */ lw $v0, 0xc($s0) +/* 419D8 800665D8 1040FFC6 */ beqz $v0, .L800664F4 +/* 419DC 800665DC 00000000 */ nop +.L800665E0: +/* 419E0 800665E0 8E020008 */ lw $v0, 8($s0) +/* 419E4 800665E4 8E03000C */ lw $v1, 0xc($s0) +/* 419E8 800665E8 02002021 */ addu $a0, $s0, $zero +/* 419EC 800665EC AC820010 */ sw $v0, 0x10($a0) +/* 419F0 800665F0 0C0199A4 */ jal osInsertTimer +/* 419F4 800665F4 AC830014 */ sw $v1, 0x14($a0) +/* 419F8 800665F8 0801993D */ j .L800664F4 +/* 419FC 800665FC 00000000 */ nop +.L80066600: +/* 41A00 80066600 8FBF0014 */ lw $ra, 0x14($sp) +/* 41A04 80066604 8FB00010 */ lw $s0, 0x10($sp) +/* 41A08 80066608 03E00008 */ jr $ra +/* 41A0C 8006660C 27BD0018 */ addiu $sp, $sp, 0x18 diff --git a/asm/nonmatchings/code_41880/osTimerServicesInit.s b/asm/nonmatchings/code_41880/osTimerServicesInit.s new file mode 100644 index 0000000000..8e8dbd8ff5 --- /dev/null +++ b/asm/nonmatchings/code_41880/osTimerServicesInit.s @@ -0,0 +1,25 @@ +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches + +glabel osTimerServicesInit +/* 41880 80066480 3C028009 */ lui $v0, %hi(D_80094670) +/* 41884 80066484 8C424670 */ lw $v0, %lo(D_80094670)($v0) +/* 41888 80066488 00002021 */ addu $a0, $zero, $zero +/* 4188C 8006648C 00002821 */ addu $a1, $zero, $zero +/* 41890 80066490 3C01800A */ lui $at, %hi(D_8009A608) +/* 41894 80066494 AC24A608 */ sw $a0, %lo(D_8009A608)($at) +/* 41898 80066498 3C01800A */ lui $at, %hi(D_8009A60C) +/* 4189C 8006649C AC25A60C */ sw $a1, %lo(D_8009A60C)($at) +/* 418A0 800664A0 3C01800A */ lui $at, %hi(D_8009A5C8) +/* 418A4 800664A4 AC20A5C8 */ sw $zero, %lo(D_8009A5C8)($at) +/* 418A8 800664A8 3C01800A */ lui $at, %hi(D_8009A5E4) +/* 418AC 800664AC AC20A5E4 */ sw $zero, %lo(D_8009A5E4)($at) +/* 418B0 800664B0 AC440010 */ sw $a0, 0x10($v0) +/* 418B4 800664B4 AC450014 */ sw $a1, 0x14($v0) +/* 418B8 800664B8 AC440008 */ sw $a0, 8($v0) +/* 418BC 800664BC AC45000C */ sw $a1, 0xc($v0) +/* 418C0 800664C0 AC420004 */ sw $v0, 4($v0) +/* 418C4 800664C4 AC420000 */ sw $v0, ($v0) +/* 418C8 800664C8 AC400018 */ sw $zero, 0x18($v0) +/* 418CC 800664CC 03E00008 */ jr $ra +/* 418D0 800664D0 AC40001C */ sw $zero, 0x1c($v0) diff --git a/asm/nonmatchings/code_42e0_len_1f60/func_80029860.s b/asm/nonmatchings/code_42e0_len_1f60/func_80029860.s deleted file mode 100644 index e3bbeaaab3..0000000000 --- a/asm/nonmatchings/code_42e0_len_1f60/func_80029860.s +++ /dev/null @@ -1,44 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel func_80029860 -/* 4C60 80029860 27BDFFA0 */ addiu $sp, $sp, -0x60 -/* 4C64 80029864 AFB20050 */ sw $s2, 0x50($sp) -/* 4C68 80029868 0080902D */ daddu $s2, $a0, $zero -/* 4C6C 8002986C AFB40058 */ sw $s4, 0x58($sp) -/* 4C70 80029870 00A0A02D */ daddu $s4, $a1, $zero -/* 4C74 80029874 AFB30054 */ sw $s3, 0x54($sp) -/* 4C78 80029878 00C0982D */ daddu $s3, $a2, $zero -/* 4C7C 8002987C 0260282D */ daddu $a1, $s3, $zero -/* 4C80 80029880 AFBF005C */ sw $ra, 0x5c($sp) -/* 4C84 80029884 AFB1004C */ sw $s1, 0x4c($sp) -/* 4C88 80029888 0C018614 */ jal osWritebackDCache -/* 4C8C 8002988C AFB00048 */ sw $s0, 0x48($sp) -/* 4C90 80029890 27B00028 */ addiu $s0, $sp, 0x28 -/* 4C94 80029894 0200202D */ daddu $a0, $s0, $zero -/* 4C98 80029898 27B10040 */ addiu $s1, $sp, 0x40 -/* 4C9C 8002989C 0220282D */ daddu $a1, $s1, $zero -/* 4CA0 800298A0 0C019560 */ jal osCreateMesgQueue -/* 4CA4 800298A4 24060001 */ addiu $a2, $zero, 1 -/* 4CA8 800298A8 27A50010 */ addiu $a1, $sp, 0x10 -/* 4CAC 800298AC 3C04800A */ lui $a0, %hi(carthandle) -/* 4CB0 800298B0 8C84A638 */ lw $a0, %lo(carthandle)($a0) -/* 4CB4 800298B4 24060001 */ addiu $a2, $zero, 1 -/* 4CB8 800298B8 A3A00012 */ sb $zero, 0x12($sp) -/* 4CBC 800298BC AFB00014 */ sw $s0, 0x14($sp) -/* 4CC0 800298C0 AFB20018 */ sw $s2, 0x18($sp) -/* 4CC4 800298C4 AFB4001C */ sw $s4, 0x1c($sp) -/* 4CC8 800298C8 0C018388 */ jal osEPiStartDma -/* 4CCC 800298CC AFB30020 */ sw $s3, 0x20($sp) -/* 4CD0 800298D0 0200202D */ daddu $a0, $s0, $zero -/* 4CD4 800298D4 0220282D */ daddu $a1, $s1, $zero -/* 4CD8 800298D8 0C0195BC */ jal osRecvMesg -/* 4CDC 800298DC 24060001 */ addiu $a2, $zero, 1 -/* 4CE0 800298E0 8FBF005C */ lw $ra, 0x5c($sp) -/* 4CE4 800298E4 8FB40058 */ lw $s4, 0x58($sp) -/* 4CE8 800298E8 8FB30054 */ lw $s3, 0x54($sp) -/* 4CEC 800298EC 8FB20050 */ lw $s2, 0x50($sp) -/* 4CF0 800298F0 8FB1004C */ lw $s1, 0x4c($sp) -/* 4CF4 800298F4 8FB00048 */ lw $s0, 0x48($sp) -/* 4CF8 800298F8 03E00008 */ jr $ra -/* 4CFC 800298FC 27BD0060 */ addiu $sp, $sp, 0x60 diff --git a/asm/nonmatchings/os/code_43200_len_7c0/osPfsAllocateFile.s b/asm/nonmatchings/code_43590/osPfsAllocateFile.s similarity index 100% rename from asm/nonmatchings/os/code_43200_len_7c0/osPfsAllocateFile.s rename to asm/nonmatchings/code_43590/osPfsAllocateFile.s diff --git a/asm/nonmatchings/os/code_43200_len_7c0/osPfsDeclearPage.s b/asm/nonmatchings/code_43590/osPfsDeclearPage.s similarity index 100% rename from asm/nonmatchings/os/code_43200_len_7c0/osPfsDeclearPage.s rename to asm/nonmatchings/code_43590/osPfsDeclearPage.s diff --git a/asm/nonmatchings/os/code_44380_len_4e0/osPfsCheckRamArea.s b/asm/nonmatchings/code_44490/osPfsCheckRamArea.s similarity index 100% rename from asm/nonmatchings/os/code_44380_len_4e0/osPfsCheckRamArea.s rename to asm/nonmatchings/code_44490/osPfsCheckRamArea.s diff --git a/asm/nonmatchings/os/code_44380_len_4e0/osPfsInitPak.s b/asm/nonmatchings/code_44490/osPfsInitPak.s similarity index 100% rename from asm/nonmatchings/os/code_44380_len_4e0/osPfsInitPak.s rename to asm/nonmatchings/code_44490/osPfsInitPak.s diff --git a/asm/nonmatchings/os/code_44380_len_4e0/osPfsNumFiles.s b/asm/nonmatchings/code_44490/osPfsNumFiles.s similarity index 100% rename from asm/nonmatchings/os/code_44380_len_4e0/osPfsNumFiles.s rename to asm/nonmatchings/code_44490/osPfsNumFiles.s diff --git a/asm/nonmatchings/code_7B440/func_800E205C.s b/asm/nonmatchings/code_7B440/func_800E205C.s index 564504de3a..bb58301144 100644 --- a/asm/nonmatchings/code_7B440/func_800E205C.s +++ b/asm/nonmatchings/code_7B440/func_800E205C.s @@ -114,9 +114,9 @@ glabel func_800E205C /* 7B6B8 800E2208 84C30086 */ lh $v1, 0x86($a2) /* 7B6BC 800E220C 84C2008C */ lh $v0, 0x8c($a2) /* 7B6C0 800E2210 00031900 */ sll $v1, $v1, 4 -/* 7B6C4 800E2214 3C018009 */ lui $at, %hi(D_800934F4) +/* 7B6C4 800E2214 3C018009 */ lui $at, %hi(gAreas+0x4) /* 7B6C8 800E2218 00230821 */ addu $at, $at, $v1 -/* 7B6CC 800E221C 8C2334F4 */ lw $v1, %lo(D_800934F4)($at) +/* 7B6CC 800E221C 8C2334F4 */ lw $v1, %lo(gAreas+0x4)($at) /* 7B6D0 800E2220 00021140 */ sll $v0, $v0, 5 /* 7B6D4 800E2224 00431021 */ addu $v0, $v0, $v1 /* 7B6D8 800E2228 8C440004 */ lw $a0, 4($v0) diff --git a/asm/nonmatchings/code_8560/create_cameras_a.s b/asm/nonmatchings/code_8800/create_cameras_a.s similarity index 100% rename from asm/nonmatchings/code_8560/create_cameras_a.s rename to asm/nonmatchings/code_8800/create_cameras_a.s diff --git a/asm/nonmatchings/code_8560/create_cameras_b.s b/asm/nonmatchings/code_8800/create_cameras_b.s similarity index 100% rename from asm/nonmatchings/code_8560/create_cameras_b.s rename to asm/nonmatchings/code_8800/create_cameras_b.s diff --git a/asm/nonmatchings/code_8560/func_8002E82C.s b/asm/nonmatchings/code_8800/func_8002E82C.s similarity index 100% rename from asm/nonmatchings/code_8560/func_8002E82C.s rename to asm/nonmatchings/code_8800/func_8002E82C.s diff --git a/asm/nonmatchings/code_8560/get_screen_coords.s b/asm/nonmatchings/code_8800/get_screen_coords.s similarity index 100% rename from asm/nonmatchings/code_8560/get_screen_coords.s rename to asm/nonmatchings/code_8800/get_screen_coords.s diff --git a/asm/nonmatchings/code_8560/initialize_next_camera.s b/asm/nonmatchings/code_8800/initialize_next_camera.s similarity index 100% rename from asm/nonmatchings/code_8560/initialize_next_camera.s rename to asm/nonmatchings/code_8800/initialize_next_camera.s diff --git a/asm/nonmatchings/code_8560/render_frame.s b/asm/nonmatchings/code_8800/render_frame.s similarity index 100% rename from asm/nonmatchings/code_8560/render_frame.s rename to asm/nonmatchings/code_8800/render_frame.s diff --git a/asm/nonmatchings/code_8560/set_cam_viewport.s b/asm/nonmatchings/code_8800/set_cam_viewport.s similarity index 100% rename from asm/nonmatchings/code_8560/set_cam_viewport.s rename to asm/nonmatchings/code_8800/set_cam_viewport.s diff --git a/asm/nonmatchings/code_8560/update_cameras.s b/asm/nonmatchings/code_8800/update_cameras.s similarity index 100% rename from asm/nonmatchings/code_8560/update_cameras.s rename to asm/nonmatchings/code_8800/update_cameras.s diff --git a/asm/nonmatchings/code_ad90_len_2880/do_camera_type_3.s b/asm/nonmatchings/code_B0E0/do_camera_type_3.s similarity index 100% rename from asm/nonmatchings/code_ad90_len_2880/do_camera_type_3.s rename to asm/nonmatchings/code_B0E0/do_camera_type_3.s diff --git a/asm/nonmatchings/code_ad90_len_2880/do_camera_type_5.s b/asm/nonmatchings/code_B0E0/do_camera_type_5.s similarity index 100% rename from asm/nonmatchings/code_ad90_len_2880/do_camera_type_5.s rename to asm/nonmatchings/code_B0E0/do_camera_type_5.s diff --git a/asm/nonmatchings/code_ad90_len_2880/do_camera_type_unused.s b/asm/nonmatchings/code_B0E0/do_camera_type_unused.s similarity index 100% rename from asm/nonmatchings/code_ad90_len_2880/do_camera_type_unused.s rename to asm/nonmatchings/code_B0E0/do_camera_type_unused.s diff --git a/asm/nonmatchings/code_ad90_len_2880/func_80030210.s b/asm/nonmatchings/code_B0E0/func_80030210.s similarity index 100% rename from asm/nonmatchings/code_ad90_len_2880/func_80030210.s rename to asm/nonmatchings/code_B0E0/func_80030210.s diff --git a/asm/nonmatchings/code_ad90_len_2880/func_8003034C.s b/asm/nonmatchings/code_B0E0/func_8003034C.s similarity index 100% rename from asm/nonmatchings/code_ad90_len_2880/func_8003034C.s rename to asm/nonmatchings/code_B0E0/func_8003034C.s diff --git a/asm/nonmatchings/code_ad90_len_2880/test_ray_zone_aabb.s b/asm/nonmatchings/code_B0E0/test_ray_zone_aabb.s similarity index 100% rename from asm/nonmatchings/code_ad90_len_2880/test_ray_zone_aabb.s rename to asm/nonmatchings/code_B0E0/test_ray_zone_aabb.s diff --git a/asm/nonmatchings/code_B0E0/update_camera_from_zone.s b/asm/nonmatchings/code_B0E0/update_camera_from_zone.s new file mode 100644 index 0000000000..6f58546ffe --- /dev/null +++ b/asm/nonmatchings/code_B0E0/update_camera_from_zone.s @@ -0,0 +1,1061 @@ +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches + +glabel update_camera_from_zone +/* B8FC 800304FC 27BDFF80 */ addiu $sp, $sp, -0x80 +/* B900 80030500 AFB20030 */ sw $s2, 0x30($sp) +/* B904 80030504 00A0902D */ daddu $s2, $a1, $zero +/* B908 80030508 AFB40038 */ sw $s4, 0x38($sp) +/* B90C 8003050C 00C0A02D */ daddu $s4, $a2, $zero +/* B910 80030510 AFB30034 */ sw $s3, 0x34($sp) +/* B914 80030514 00E0982D */ daddu $s3, $a3, $zero +/* B918 80030518 AFB1002C */ sw $s1, 0x2c($sp) +/* B91C 8003051C AFBF0048 */ sw $ra, 0x48($sp) +/* B920 80030520 AFB70044 */ sw $s7, 0x44($sp) +/* B924 80030524 AFB60040 */ sw $s6, 0x40($sp) +/* B928 80030528 AFB5003C */ sw $s5, 0x3c($sp) +/* B92C 8003052C AFB00028 */ sw $s0, 0x28($sp) +/* B930 80030530 F7BE0078 */ sdc1 $f30, 0x78($sp) +/* B934 80030534 F7BC0070 */ sdc1 $f28, 0x70($sp) +/* B938 80030538 F7BA0068 */ sdc1 $f26, 0x68($sp) +/* B93C 8003053C F7B80060 */ sdc1 $f24, 0x60($sp) +/* B940 80030540 F7B60058 */ sdc1 $f22, 0x58($sp) +/* B944 80030544 F7B40050 */ sdc1 $f20, 0x50($sp) +/* B948 80030548 8E900000 */ lw $s0, ($s4) +/* B94C 8003054C C7B80094 */ lwc1 $f24, 0x94($sp) +/* B950 80030550 C7BE0098 */ lwc1 $f30, 0x98($sp) +/* B954 80030554 C7BA009C */ lwc1 $f26, 0x9c($sp) +/* B958 80030558 8FB500AC */ lw $s5, 0xac($sp) +/* B95C 8003055C 8FB600B0 */ lw $s6, 0xb0($sp) +/* B960 80030560 8FB700B4 */ lw $s7, 0xb4($sp) +/* B964 80030564 26020002 */ addiu $v0, $s0, 2 +/* B968 80030568 2C420002 */ sltiu $v0, $v0, 2 +/* B96C 8003056C 144000C4 */ bnez $v0, .L80030880 +/* B970 80030570 0240882D */ daddu $s1, $s2, $zero +/* B974 80030574 16000005 */ bnez $s0, .L8003058C +/* B978 80030578 00000000 */ nop +/* B97C 8003057C E6580010 */ swc1 $f24, 0x10($s2) +/* B980 80030580 E65E0014 */ swc1 $f30, 0x14($s2) +/* B984 80030584 0800C220 */ j .L80030880 +/* B988 80030588 E65A0018 */ swc1 $f26, 0x18($s2) +.L8003058C: +/* B98C 8003058C 8E030000 */ lw $v1, ($s0) +/* B990 80030590 2C620007 */ sltiu $v0, $v1, 7 +/* B994 80030594 104000BA */ beqz $v0, .L80030880 +/* B998 80030598 00031080 */ sll $v0, $v1, 2 +/* B99C 8003059C 3C01800A */ lui $at, %hi(jtbl_80098210) +/* B9A0 800305A0 00220821 */ addu $at, $at, $v0 +/* B9A4 800305A4 8C228210 */ lw $v0, %lo(jtbl_80098210)($at) +/* B9A8 800305A8 00400008 */ jr $v0 +/* B9AC 800305AC 00000000 */ nop +glabel L800305B0_B9B0 +/* B9B0 800305B0 8E020028 */ lw $v0, 0x28($s0) +/* B9B4 800305B4 504000B0 */ beql $v0, $zero, .L80030878 +/* B9B8 800305B8 E6380010 */ swc1 $f24, 0x10($s1) +/* B9BC 800305BC C60A0014 */ lwc1 $f10, 0x14($s0) +/* B9C0 800305C0 C60C0020 */ lwc1 $f12, 0x20($s0) +/* B9C4 800305C4 460C5281 */ sub.s $f10, $f10, $f12 +/* B9C8 800305C8 C6000018 */ lwc1 $f0, 0x18($s0) +/* B9CC 800305CC 46005287 */ neg.s $f10, $f10 +/* B9D0 800305D0 46005280 */ add.s $f10, $f10, $f0 +/* B9D4 800305D4 460A0201 */ sub.s $f8, $f0, $f10 +/* B9D8 800305D8 46084102 */ mul.s $f4, $f8, $f8 +/* B9DC 800305DC 00000000 */ nop +/* B9E0 800305E0 C606000C */ lwc1 $f6, 0xc($s0) +/* B9E4 800305E4 46003181 */ sub.s $f6, $f6, $f0 +/* B9E8 800305E8 460C3180 */ add.s $f6, $f6, $f12 +/* B9EC 800305EC 46066301 */ sub.s $f12, $f12, $f6 +/* B9F0 800305F0 460C6382 */ mul.s $f14, $f12, $f12 +/* B9F4 800305F4 00000000 */ nop +/* B9F8 800305F8 460AC081 */ sub.s $f2, $f24, $f10 +/* B9FC 800305FC 46081082 */ mul.s $f2, $f2, $f8 +/* BA00 80030600 00000000 */ nop +/* BA04 80030604 4606D001 */ sub.s $f0, $f26, $f6 +/* BA08 80030608 460C0002 */ mul.s $f0, $f0, $f12 +/* BA0C 8003060C 00000000 */ nop +/* BA10 80030610 460E2100 */ add.s $f4, $f4, $f14 +/* BA14 80030614 46001080 */ add.s $f2, $f2, $f0 +/* BA18 80030618 46041103 */ div.s $f4, $f2, $f4 +/* BA1C 8003061C 46082202 */ mul.s $f8, $f4, $f8 +/* BA20 80030620 00000000 */ nop +/* BA24 80030624 460C2102 */ mul.s $f4, $f4, $f12 +/* BA28 80030628 00000000 */ nop +/* BA2C 8003062C 460A4200 */ add.s $f8, $f8, $f10 +/* BA30 80030630 46062100 */ add.s $f4, $f4, $f6 +/* BA34 80030634 E63E0014 */ swc1 $f30, 0x14($s1) +/* BA38 80030638 E6280010 */ swc1 $f8, 0x10($s1) +/* BA3C 8003063C 0800C220 */ j .L80030880 +/* BA40 80030640 E6240018 */ swc1 $f4, 0x18($s1) +glabel L80030644_BA44 +/* BA44 80030644 C60E000C */ lwc1 $f14, 0xc($s0) +/* BA48 80030648 C61C0018 */ lwc1 $f28, 0x18($s0) +/* BA4C 8003064C 460EE201 */ sub.s $f8, $f28, $f14 +/* BA50 80030650 46084502 */ mul.s $f20, $f8, $f8 +/* BA54 80030654 00000000 */ nop +/* BA58 80030658 460EC081 */ sub.s $f2, $f24, $f14 +/* BA5C 8003065C 46081082 */ mul.s $f2, $f2, $f8 +/* BA60 80030660 00000000 */ nop +/* BA64 80030664 E7BC0010 */ swc1 $f28, 0x10($sp) +/* BA68 80030668 C60C0014 */ lwc1 $f12, 0x14($s0) +/* BA6C 8003066C C61C0020 */ lwc1 $f28, 0x20($s0) +/* BA70 80030670 460CE181 */ sub.s $f6, $f28, $f12 +/* BA74 80030674 46063482 */ mul.s $f18, $f6, $f6 +/* BA78 80030678 00000000 */ nop +/* BA7C 8003067C 460CD001 */ sub.s $f0, $f26, $f12 +/* BA80 80030680 46060002 */ mul.s $f0, $f0, $f6 +/* BA84 80030684 00000000 */ nop +/* BA88 80030688 4612A100 */ add.s $f4, $f20, $f18 +/* BA8C 8003068C 46001080 */ add.s $f2, $f2, $f0 +/* BA90 80030690 46041103 */ div.s $f4, $f2, $f4 +/* BA94 80030694 46082002 */ mul.s $f0, $f4, $f8 +/* BA98 80030698 00000000 */ nop +/* BA9C 8003069C 46062102 */ mul.s $f4, $f4, $f6 +/* BAA0 800306A0 00000000 */ nop +/* BAA4 800306A4 460E0400 */ add.s $f16, $f0, $f14 +/* BAA8 800306A8 46007586 */ mov.s $f22, $f14 +/* BAAC 800306AC 46004386 */ mov.s $f14, $f8 +/* BAB0 800306B0 46168201 */ sub.s $f8, $f16, $f22 +/* BAB4 800306B4 46087082 */ mul.s $f2, $f14, $f8 +/* BAB8 800306B8 00000000 */ nop +/* BABC 800306BC 460C2280 */ add.s $f10, $f4, $f12 +/* BAC0 800306C0 46006106 */ mov.s $f4, $f12 +/* BAC4 800306C4 46003306 */ mov.s $f12, $f6 +/* BAC8 800306C8 46045181 */ sub.s $f6, $f10, $f4 +/* BACC 800306CC 46066002 */ mul.s $f0, $f12, $f6 +/* BAD0 800306D0 00000000 */ nop +/* BAD4 800306D4 4610C501 */ sub.s $f20, $f24, $f16 +/* BAD8 800306D8 460AD481 */ sub.s $f18, $f26, $f10 +/* BADC 800306DC 46001080 */ add.s $f2, $f2, $f0 +/* BAE0 800306E0 44800000 */ mtc1 $zero, $f0 +/* BAE4 800306E4 00000000 */ nop +/* BAE8 800306E8 4600103C */ c.lt.s $f2, $f0 +/* BAEC 800306EC 00000000 */ nop +/* BAF0 800306F0 45000004 */ bc1f .L80030704 +/* BAF4 800306F4 E7BC0020 */ swc1 $f28, 0x20($sp) +/* BAF8 800306F8 4600B406 */ mov.s $f16, $f22 +/* BAFC 800306FC 0800C1D1 */ j .L80030744 +/* BB00 80030700 46002286 */ mov.s $f10, $f4 +.L80030704: +/* BB04 80030704 46084082 */ mul.s $f2, $f8, $f8 +/* BB08 80030708 00000000 */ nop +/* BB0C 8003070C 46063182 */ mul.s $f6, $f6, $f6 +/* BB10 80030710 00000000 */ nop +/* BB14 80030714 460E7002 */ mul.s $f0, $f14, $f14 +/* BB18 80030718 00000000 */ nop +/* BB1C 8003071C 460C6102 */ mul.s $f4, $f12, $f12 +/* BB20 80030720 00000000 */ nop +/* BB24 80030724 46061080 */ add.s $f2, $f2, $f6 +/* BB28 80030728 46040000 */ add.s $f0, $f0, $f4 +/* BB2C 8003072C 4602003C */ c.lt.s $f0, $f2 +/* BB30 80030730 00000000 */ nop +/* BB34 80030734 45000003 */ bc1f .L80030744 +/* BB38 80030738 00000000 */ nop +/* BB3C 8003073C C7B00010 */ lwc1 $f16, 0x10($sp) +/* BB40 80030740 C7AA0020 */ lwc1 $f10, 0x20($sp) +.L80030744: +/* BB44 80030744 8E020028 */ lw $v0, 0x28($s0) +/* BB48 80030748 54400004 */ bnel $v0, $zero, .L8003075C +/* BB4C 8003074C E6300010 */ swc1 $f16, 0x10($s1) +/* BB50 80030750 46148400 */ add.s $f16, $f16, $f20 +/* BB54 80030754 46125280 */ add.s $f10, $f10, $f18 +/* BB58 80030758 E6300010 */ swc1 $f16, 0x10($s1) +.L8003075C: +/* BB5C 8003075C E63E0014 */ swc1 $f30, 0x14($s1) +/* BB60 80030760 0800C220 */ j .L80030880 +/* BB64 80030764 E62A0018 */ swc1 $f10, 0x18($s1) +glabel L80030768_BB68 +/* BB68 80030768 8E020028 */ lw $v0, 0x28($s0) +/* BB6C 8003076C 50400042 */ beql $v0, $zero, .L80030878 +/* BB70 80030770 E6380010 */ swc1 $f24, 0x10($s1) +/* BB74 80030774 C600000C */ lwc1 $f0, 0xc($s0) +/* BB78 80030778 4600C581 */ sub.s $f22, $f24, $f0 +/* BB7C 8003077C 4616B082 */ mul.s $f2, $f22, $f22 +/* BB80 80030780 00000000 */ nop +/* BB84 80030784 C6000014 */ lwc1 $f0, 0x14($s0) +/* BB88 80030788 4600D501 */ sub.s $f20, $f26, $f0 +/* BB8C 8003078C 4614A002 */ mul.s $f0, $f20, $f20 +/* BB90 80030790 00000000 */ nop +/* BB94 80030794 46001600 */ add.s $f24, $f2, $f0 +/* BB98 80030798 44800000 */ mtc1 $zero, $f0 +/* BB9C 8003079C 00000000 */ nop +/* BBA0 800307A0 4600C032 */ c.eq.s $f24, $f0 +/* BBA4 800307A4 00000000 */ nop +/* BBA8 800307A8 45010035 */ bc1t .L80030880 +/* BBAC 800307AC 00000000 */ nop +/* BBB0 800307B0 4600C184 */ sqrt.s $f6, $f24 +/* BBB4 800307B4 46063032 */ c.eq.s $f6, $f6 +/* BBB8 800307B8 00000000 */ nop +/* BBBC 800307BC 45010004 */ bc1t .L800307D0 +/* BBC0 800307C0 00000000 */ nop +/* BBC4 800307C4 0C0187BC */ jal sqrtf +/* BBC8 800307C8 4600C306 */ mov.s $f12, $f24 +/* BBCC 800307CC 46000186 */ mov.s $f6, $f0 +.L800307D0: +/* BBD0 800307D0 C6040018 */ lwc1 $f4, 0x18($s0) +/* BBD4 800307D4 C600000C */ lwc1 $f0, 0xc($s0) +/* BBD8 800307D8 46002101 */ sub.s $f4, $f4, $f0 +/* BBDC 800307DC 46042102 */ mul.s $f4, $f4, $f4 +/* BBE0 800307E0 00000000 */ nop +/* BBE4 800307E4 C6020014 */ lwc1 $f2, 0x14($s0) +/* BBE8 800307E8 C6000020 */ lwc1 $f0, 0x20($s0) +/* BBEC 800307EC 46020001 */ sub.s $f0, $f0, $f2 +/* BBF0 800307F0 46000002 */ mul.s $f0, $f0, $f0 +/* BBF4 800307F4 00000000 */ nop +/* BBF8 800307F8 3C013F80 */ lui $at, 0x3f80 +/* BBFC 800307FC 44811000 */ mtc1 $at, $f2 +/* BC00 80030800 46002300 */ add.s $f12, $f4, $f0 +/* BC04 80030804 46061603 */ div.s $f24, $f2, $f6 +/* BC08 80030808 46006084 */ sqrt.s $f2, $f12 +/* BC0C 8003080C 46021032 */ c.eq.s $f2, $f2 +/* BC10 80030810 00000000 */ nop +/* BC14 80030814 45010004 */ bc1t .L80030828 +/* BC18 80030818 00000000 */ nop +/* BC1C 8003081C 0C0187BC */ jal sqrtf +/* BC20 80030820 00000000 */ nop +/* BC24 80030824 46000086 */ mov.s $f2, $f0 +.L80030828: +/* BC28 80030828 4602B002 */ mul.s $f0, $f22, $f2 +/* BC2C 8003082C 00000000 */ nop +/* BC30 80030830 4602A102 */ mul.s $f4, $f20, $f2 +/* BC34 80030834 00000000 */ nop +/* BC38 80030838 46180002 */ mul.s $f0, $f0, $f24 +/* BC3C 8003083C 00000000 */ nop +/* BC40 80030840 C602000C */ lwc1 $f2, 0xc($s0) +/* BC44 80030844 46001080 */ add.s $f2, $f2, $f0 +/* BC48 80030848 46182102 */ mul.s $f4, $f4, $f24 +/* BC4C 8003084C 00000000 */ nop +/* BC50 80030850 E63E0014 */ swc1 $f30, 0x14($s1) +/* BC54 80030854 E6220010 */ swc1 $f2, 0x10($s1) +/* BC58 80030858 C6000014 */ lwc1 $f0, 0x14($s0) +/* BC5C 8003085C 46040000 */ add.s $f0, $f0, $f4 +/* BC60 80030860 0800C220 */ j .L80030880 +/* BC64 80030864 E6200018 */ swc1 $f0, 0x18($s1) +glabel L80030868_BC68 +/* BC68 80030868 2402FFFF */ addiu $v0, $zero, -1 +/* BC6C 8003086C 0800C220 */ j .L80030880 +/* BC70 80030870 AE820000 */ sw $v0, ($s4) +glabel L80030874_BC74 +/* BC74 80030874 E6380010 */ swc1 $f24, 0x10($s1) +.L80030878: +/* BC78 80030878 E63E0014 */ swc1 $f30, 0x14($s1) +/* BC7C 8003087C E63A0018 */ swc1 $f26, 0x18($s1) +.L80030880: +glabel L80030880_BC80 +/* BC80 80030880 8FA20090 */ lw $v0, 0x90($sp) +/* BC84 80030884 C7B800A0 */ lwc1 $f24, 0xa0($sp) +/* BC88 80030888 C7BE00A4 */ lwc1 $f30, 0xa4($sp) +/* BC8C 8003088C 8C500000 */ lw $s0, ($v0) +/* BC90 80030890 C7BA00A8 */ lwc1 $f26, 0xa8($sp) +/* BC94 80030894 16000005 */ bnez $s0, .L800308AC +/* BC98 80030898 0260882D */ daddu $s1, $s3, $zero +/* BC9C 8003089C E6780010 */ swc1 $f24, 0x10($s3) +/* BCA0 800308A0 E67E0014 */ swc1 $f30, 0x14($s3) +/* BCA4 800308A4 0800C4F0 */ j .L800313C0 +/* BCA8 800308A8 E67A0018 */ swc1 $f26, 0x18($s3) +.L800308AC: +/* BCAC 800308AC 8E030000 */ lw $v1, ($s0) +/* BCB0 800308B0 2C620007 */ sltiu $v0, $v1, 7 +/* BCB4 800308B4 10400279 */ beqz $v0, .L8003129C +/* BCB8 800308B8 00031080 */ sll $v0, $v1, 2 +/* BCBC 800308BC 3C01800A */ lui $at, %hi(jtbl_80098230) +/* BCC0 800308C0 00220821 */ addu $at, $at, $v0 +/* BCC4 800308C4 8C228230 */ lw $v0, %lo(jtbl_80098230)($at) +/* BCC8 800308C8 00400008 */ jr $v0 +/* BCCC 800308CC 00000000 */ nop +glabel L800308D0_BCD0 +/* BCD0 800308D0 C6020018 */ lwc1 $f2, 0x18($s0) +/* BCD4 800308D4 C600000C */ lwc1 $f0, 0xc($s0) +/* BCD8 800308D8 46001081 */ sub.s $f2, $f2, $f0 +/* BCDC 800308DC C6000014 */ lwc1 $f0, 0x14($s0) +/* BCE0 800308E0 44061000 */ mfc1 $a2, $f2 +/* BCE4 800308E4 C6020020 */ lwc1 $f2, 0x20($s0) +/* BCE8 800308E8 4480A000 */ mtc1 $zero, $f20 +/* BCEC 800308EC 46001081 */ sub.s $f2, $f2, $f0 +/* BCF0 800308F0 4600A306 */ mov.s $f12, $f20 +/* BCF4 800308F4 44071000 */ mfc1 $a3, $f2 +/* BCF8 800308F8 0C00A720 */ jal atan2 +/* BCFC 800308FC 4600A386 */ mov.s $f14, $f20 +/* BD00 80030900 E6200000 */ swc1 $f0, ($s1) +/* BD04 80030904 C6000004 */ lwc1 $f0, 4($s0) +/* BD08 80030908 4614003C */ c.lt.s $f0, $f20 +/* BD0C 8003090C 00000000 */ nop +/* BD10 80030910 45030001 */ bc1tl .L80030918 +/* BD14 80030914 46000007 */ neg.s $f0, $f0 +.L80030918: +/* BD18 80030918 E6200004 */ swc1 $f0, 4($s1) +/* BD1C 8003091C C6000008 */ lwc1 $f0, 8($s0) +/* BD20 80030920 E6200008 */ swc1 $f0, 8($s1) +/* BD24 80030924 C6000024 */ lwc1 $f0, 0x24($s0) +/* BD28 80030928 E620000C */ swc1 $f0, 0xc($s1) +/* BD2C 8003092C 8E020028 */ lw $v0, 0x28($s0) +/* BD30 80030930 50400023 */ beql $v0, $zero, .L800309C0 +/* BD34 80030934 E6380010 */ swc1 $f24, 0x10($s1) +/* BD38 80030938 C60A0014 */ lwc1 $f10, 0x14($s0) +/* BD3C 8003093C C60C0020 */ lwc1 $f12, 0x20($s0) +/* BD40 80030940 460C5281 */ sub.s $f10, $f10, $f12 +/* BD44 80030944 C6000018 */ lwc1 $f0, 0x18($s0) +/* BD48 80030948 46005287 */ neg.s $f10, $f10 +/* BD4C 8003094C 46005280 */ add.s $f10, $f10, $f0 +/* BD50 80030950 460A0201 */ sub.s $f8, $f0, $f10 +/* BD54 80030954 46084102 */ mul.s $f4, $f8, $f8 +/* BD58 80030958 00000000 */ nop +/* BD5C 8003095C C606000C */ lwc1 $f6, 0xc($s0) +/* BD60 80030960 46003181 */ sub.s $f6, $f6, $f0 +/* BD64 80030964 460C3180 */ add.s $f6, $f6, $f12 +/* BD68 80030968 46066301 */ sub.s $f12, $f12, $f6 +/* BD6C 8003096C 460C6382 */ mul.s $f14, $f12, $f12 +/* BD70 80030970 00000000 */ nop +/* BD74 80030974 460AC081 */ sub.s $f2, $f24, $f10 +/* BD78 80030978 46081082 */ mul.s $f2, $f2, $f8 +/* BD7C 8003097C 00000000 */ nop +/* BD80 80030980 4606D001 */ sub.s $f0, $f26, $f6 +/* BD84 80030984 460C0002 */ mul.s $f0, $f0, $f12 +/* BD88 80030988 00000000 */ nop +/* BD8C 8003098C 460E2100 */ add.s $f4, $f4, $f14 +/* BD90 80030990 46001080 */ add.s $f2, $f2, $f0 +/* BD94 80030994 46041103 */ div.s $f4, $f2, $f4 +/* BD98 80030998 46082202 */ mul.s $f8, $f4, $f8 +/* BD9C 8003099C 00000000 */ nop +/* BDA0 800309A0 460C2102 */ mul.s $f4, $f4, $f12 +/* BDA4 800309A4 00000000 */ nop +/* BDA8 800309A8 460A4200 */ add.s $f8, $f8, $f10 +/* BDAC 800309AC 46062100 */ add.s $f4, $f4, $f6 +/* BDB0 800309B0 E63E0014 */ swc1 $f30, 0x14($s1) +/* BDB4 800309B4 E6280010 */ swc1 $f8, 0x10($s1) +/* BDB8 800309B8 0800C2D4 */ j .L80030B50 +/* BDBC 800309BC E6240018 */ swc1 $f4, 0x18($s1) +.L800309C0: +/* BDC0 800309C0 E63E0014 */ swc1 $f30, 0x14($s1) +/* BDC4 800309C4 0800C2D4 */ j .L80030B50 +/* BDC8 800309C8 E63A0018 */ swc1 $f26, 0x18($s1) +glabel L800309CC_BDCC +/* BDCC 800309CC C6020018 */ lwc1 $f2, 0x18($s0) +/* BDD0 800309D0 C600000C */ lwc1 $f0, 0xc($s0) +/* BDD4 800309D4 46001581 */ sub.s $f22, $f2, $f0 +/* BDD8 800309D8 C6020020 */ lwc1 $f2, 0x20($s0) +/* BDDC 800309DC C6000014 */ lwc1 $f0, 0x14($s0) +/* BDE0 800309E0 46001081 */ sub.s $f2, $f2, $f0 +/* BDE4 800309E4 44806000 */ mtc1 $zero, $f12 +/* BDE8 800309E8 4600B587 */ neg.s $f22, $f22 +/* BDEC 800309EC 4407B000 */ mfc1 $a3, $f22 +/* BDF0 800309F0 44061000 */ mfc1 $a2, $f2 +/* BDF4 800309F4 0C00A720 */ jal atan2 +/* BDF8 800309F8 46006386 */ mov.s $f14, $f12 +/* BDFC 800309FC E6200000 */ swc1 $f0, ($s1) +/* BE00 80030A00 C6000004 */ lwc1 $f0, 4($s0) +/* BE04 80030A04 4480E000 */ mtc1 $zero, $f28 +/* BE08 80030A08 00000000 */ nop +/* BE0C 80030A0C 461C003C */ c.lt.s $f0, $f28 +/* BE10 80030A10 00000000 */ nop +/* BE14 80030A14 45030001 */ bc1tl .L80030A1C +/* BE18 80030A18 46000007 */ neg.s $f0, $f0 +.L80030A1C: +/* BE1C 80030A1C E6200004 */ swc1 $f0, 4($s1) +/* BE20 80030A20 C6000008 */ lwc1 $f0, 8($s0) +/* BE24 80030A24 E6200008 */ swc1 $f0, 8($s1) +/* BE28 80030A28 C6000024 */ lwc1 $f0, 0x24($s0) +/* BE2C 80030A2C E620000C */ swc1 $f0, 0xc($s1) +/* BE30 80030A30 C60E000C */ lwc1 $f14, 0xc($s0) +/* BE34 80030A34 C61C0018 */ lwc1 $f28, 0x18($s0) +/* BE38 80030A38 460EE201 */ sub.s $f8, $f28, $f14 +/* BE3C 80030A3C 46084502 */ mul.s $f20, $f8, $f8 +/* BE40 80030A40 00000000 */ nop +/* BE44 80030A44 460EC081 */ sub.s $f2, $f24, $f14 +/* BE48 80030A48 46081082 */ mul.s $f2, $f2, $f8 +/* BE4C 80030A4C 00000000 */ nop +/* BE50 80030A50 E7BC0014 */ swc1 $f28, 0x14($sp) +/* BE54 80030A54 C60C0014 */ lwc1 $f12, 0x14($s0) +/* BE58 80030A58 C61C0020 */ lwc1 $f28, 0x20($s0) +/* BE5C 80030A5C 460CE181 */ sub.s $f6, $f28, $f12 +/* BE60 80030A60 46063482 */ mul.s $f18, $f6, $f6 +/* BE64 80030A64 00000000 */ nop +/* BE68 80030A68 460CD001 */ sub.s $f0, $f26, $f12 +/* BE6C 80030A6C 46060002 */ mul.s $f0, $f0, $f6 +/* BE70 80030A70 00000000 */ nop +/* BE74 80030A74 4612A100 */ add.s $f4, $f20, $f18 +/* BE78 80030A78 46001080 */ add.s $f2, $f2, $f0 +/* BE7C 80030A7C 46041103 */ div.s $f4, $f2, $f4 +/* BE80 80030A80 46082002 */ mul.s $f0, $f4, $f8 +/* BE84 80030A84 00000000 */ nop +/* BE88 80030A88 46062102 */ mul.s $f4, $f4, $f6 +/* BE8C 80030A8C 00000000 */ nop +/* BE90 80030A90 460E0400 */ add.s $f16, $f0, $f14 +/* BE94 80030A94 46007586 */ mov.s $f22, $f14 +/* BE98 80030A98 46004386 */ mov.s $f14, $f8 +/* BE9C 80030A9C 46168201 */ sub.s $f8, $f16, $f22 +/* BEA0 80030AA0 46087002 */ mul.s $f0, $f14, $f8 +/* BEA4 80030AA4 00000000 */ nop +/* BEA8 80030AA8 460C2280 */ add.s $f10, $f4, $f12 +/* BEAC 80030AAC 46006106 */ mov.s $f4, $f12 +/* BEB0 80030AB0 46003306 */ mov.s $f12, $f6 +/* BEB4 80030AB4 46045181 */ sub.s $f6, $f10, $f4 +/* BEB8 80030AB8 46066082 */ mul.s $f2, $f12, $f6 +/* BEBC 80030ABC 00000000 */ nop +/* BEC0 80030AC0 4610C501 */ sub.s $f20, $f24, $f16 +/* BEC4 80030AC4 E7BC0018 */ swc1 $f28, 0x18($sp) +/* BEC8 80030AC8 46020000 */ add.s $f0, $f0, $f2 +/* BECC 80030ACC 4480E000 */ mtc1 $zero, $f28 +/* BED0 80030AD0 00000000 */ nop +/* BED4 80030AD4 461C003C */ c.lt.s $f0, $f28 +/* BED8 80030AD8 00000000 */ nop +/* BEDC 80030ADC 45000004 */ bc1f .L80030AF0 +/* BEE0 80030AE0 460AD481 */ sub.s $f18, $f26, $f10 +/* BEE4 80030AE4 4600B406 */ mov.s $f16, $f22 +/* BEE8 80030AE8 0800C2CC */ j .L80030B30 +/* BEEC 80030AEC 46002286 */ mov.s $f10, $f4 +.L80030AF0: +/* BEF0 80030AF0 46084082 */ mul.s $f2, $f8, $f8 +/* BEF4 80030AF4 00000000 */ nop +/* BEF8 80030AF8 46063182 */ mul.s $f6, $f6, $f6 +/* BEFC 80030AFC 00000000 */ nop +/* BF00 80030B00 460E7002 */ mul.s $f0, $f14, $f14 +/* BF04 80030B04 00000000 */ nop +/* BF08 80030B08 460C6102 */ mul.s $f4, $f12, $f12 +/* BF0C 80030B0C 00000000 */ nop +/* BF10 80030B10 46061080 */ add.s $f2, $f2, $f6 +/* BF14 80030B14 46040000 */ add.s $f0, $f0, $f4 +/* BF18 80030B18 4602003C */ c.lt.s $f0, $f2 +/* BF1C 80030B1C 00000000 */ nop +/* BF20 80030B20 45000003 */ bc1f .L80030B30 +/* BF24 80030B24 00000000 */ nop +/* BF28 80030B28 C7B00014 */ lwc1 $f16, 0x14($sp) +/* BF2C 80030B2C C7AA0018 */ lwc1 $f10, 0x18($sp) +.L80030B30: +/* BF30 80030B30 8E020028 */ lw $v0, 0x28($s0) +/* BF34 80030B34 54400004 */ bnel $v0, $zero, .L80030B48 +/* BF38 80030B38 E6300010 */ swc1 $f16, 0x10($s1) +/* BF3C 80030B3C 46148400 */ add.s $f16, $f16, $f20 +/* BF40 80030B40 46125280 */ add.s $f10, $f10, $f18 +/* BF44 80030B44 E6300010 */ swc1 $f16, 0x10($s1) +.L80030B48: +/* BF48 80030B48 E63E0014 */ swc1 $f30, 0x14($s1) +/* BF4C 80030B4C E62A0018 */ swc1 $f10, 0x18($s1) +.L80030B50: +/* BF50 80030B50 12E0021B */ beqz $s7, .L800313C0 +/* BF54 80030B54 00000000 */ nop +/* BF58 80030B58 C6C00000 */ lwc1 $f0, ($s6) +/* BF5C 80030B5C 3C013F80 */ lui $at, 0x3f80 +/* BF60 80030B60 44812000 */ mtc1 $at, $f4 +/* BF64 80030B64 00000000 */ nop +/* BF68 80030B68 46040032 */ c.eq.s $f0, $f4 +/* BF6C 80030B6C 00000000 */ nop +/* BF70 80030B70 450101CA */ bc1t .L8003129C +/* BF74 80030B74 00000000 */ nop +/* BF78 80030B78 8E840000 */ lw $a0, ($s4) +/* BF7C 80030B7C 24820002 */ addiu $v0, $a0, 2 +/* BF80 80030B80 2C420003 */ sltiu $v0, $v0, 3 +/* BF84 80030B84 144001C5 */ bnez $v0, .L8003129C +/* BF88 80030B88 00000000 */ nop +/* BF8C 80030B8C 8C830000 */ lw $v1, ($a0) +/* BF90 80030B90 8E020000 */ lw $v0, ($s0) +/* BF94 80030B94 146201C1 */ bne $v1, $v0, .L8003129C +/* BF98 80030B98 00000000 */ nop +/* BF9C 80030B9C C4820004 */ lwc1 $f2, 4($a0) +/* BFA0 80030BA0 C6000004 */ lwc1 $f0, 4($s0) +/* BFA4 80030BA4 46001032 */ c.eq.s $f2, $f0 +/* BFA8 80030BA8 00000000 */ nop +/* BFAC 80030BAC 450001BB */ bc1f .L8003129C +/* BFB0 80030BB0 00000000 */ nop +/* BFB4 80030BB4 C4820008 */ lwc1 $f2, 8($a0) +/* BFB8 80030BB8 C6000008 */ lwc1 $f0, 8($s0) +/* BFBC 80030BBC 46001032 */ c.eq.s $f2, $f0 +/* BFC0 80030BC0 00000000 */ nop +/* BFC4 80030BC4 450001B5 */ bc1f .L8003129C +/* BFC8 80030BC8 00000000 */ nop +/* BFCC 80030BCC C4820024 */ lwc1 $f2, 0x24($a0) +/* BFD0 80030BD0 C6000024 */ lwc1 $f0, 0x24($s0) +/* BFD4 80030BD4 46001032 */ c.eq.s $f2, $f0 +/* BFD8 80030BD8 00000000 */ nop +/* BFDC 80030BDC 450001AF */ bc1f .L8003129C +/* BFE0 80030BE0 00000000 */ nop +/* BFE4 80030BE4 8C830028 */ lw $v1, 0x28($a0) +/* BFE8 80030BE8 8E020028 */ lw $v0, 0x28($s0) +/* BFEC 80030BEC 546201AB */ bnel $v1, $v0, .L8003129C +/* BFF0 80030BF0 E6C40000 */ swc1 $f4, ($s6) +/* BFF4 80030BF4 0800C4A7 */ j .L8003129C +/* BFF8 80030BF8 00000000 */ nop +glabel L80030BFC_BFFC +/* BFFC 80030BFC C6040004 */ lwc1 $f4, 4($s0) +/* C000 80030C00 44800000 */ mtc1 $zero, $f0 +/* C004 80030C04 00000000 */ nop +/* C008 80030C08 4600203C */ c.lt.s $f4, $f0 +/* C00C 80030C0C 00000000 */ nop +/* C010 80030C10 45000008 */ bc1f .L80030C34 +/* C014 80030C14 00000000 */ nop +/* C018 80030C18 C600000C */ lwc1 $f0, 0xc($s0) +/* C01C 80030C1C 4600C581 */ sub.s $f22, $f24, $f0 +/* C020 80030C20 C6020014 */ lwc1 $f2, 0x14($s0) +/* C024 80030C24 46002007 */ neg.s $f0, $f4 +/* C028 80030C28 E6200004 */ swc1 $f0, 4($s1) +/* C02C 80030C2C 0800C312 */ j .L80030C48 +/* C030 80030C30 4602D501 */ sub.s $f20, $f26, $f2 +.L80030C34: +/* C034 80030C34 C600000C */ lwc1 $f0, 0xc($s0) +/* C038 80030C38 46180581 */ sub.s $f22, $f0, $f24 +/* C03C 80030C3C C6000014 */ lwc1 $f0, 0x14($s0) +/* C040 80030C40 E6240004 */ swc1 $f4, 4($s1) +/* C044 80030C44 461A0501 */ sub.s $f20, $f0, $f26 +.L80030C48: +/* C048 80030C48 4406B000 */ mfc1 $a2, $f22 +/* C04C 80030C4C 44806000 */ mtc1 $zero, $f12 +/* C050 80030C50 4407A000 */ mfc1 $a3, $f20 +/* C054 80030C54 0C00A720 */ jal atan2 +/* C058 80030C58 46006386 */ mov.s $f14, $f12 +/* C05C 80030C5C E6200000 */ swc1 $f0, ($s1) +/* C060 80030C60 C6000008 */ lwc1 $f0, 8($s0) +/* C064 80030C64 E6200008 */ swc1 $f0, 8($s1) +/* C068 80030C68 C6000024 */ lwc1 $f0, 0x24($s0) +/* C06C 80030C6C E620000C */ swc1 $f0, 0xc($s1) +/* C070 80030C70 8E020028 */ lw $v0, 0x28($s0) +/* C074 80030C74 5040003E */ beql $v0, $zero, .L80030D70 +/* C078 80030C78 E6380010 */ swc1 $f24, 0x10($s1) +/* C07C 80030C7C C600000C */ lwc1 $f0, 0xc($s0) +/* C080 80030C80 4600C581 */ sub.s $f22, $f24, $f0 +/* C084 80030C84 4616B082 */ mul.s $f2, $f22, $f22 +/* C088 80030C88 00000000 */ nop +/* C08C 80030C8C C6000014 */ lwc1 $f0, 0x14($s0) +/* C090 80030C90 4600D501 */ sub.s $f20, $f26, $f0 +/* C094 80030C94 4614A002 */ mul.s $f0, $f20, $f20 +/* C098 80030C98 00000000 */ nop +/* C09C 80030C9C 46001600 */ add.s $f24, $f2, $f0 +/* C0A0 80030CA0 4480E000 */ mtc1 $zero, $f28 +/* C0A4 80030CA4 00000000 */ nop +/* C0A8 80030CA8 461CC032 */ c.eq.s $f24, $f28 +/* C0AC 80030CAC 00000000 */ nop +/* C0B0 80030CB0 45010031 */ bc1t .L80030D78 +/* C0B4 80030CB4 00000000 */ nop +/* C0B8 80030CB8 4600C184 */ sqrt.s $f6, $f24 +/* C0BC 80030CBC 46063032 */ c.eq.s $f6, $f6 +/* C0C0 80030CC0 00000000 */ nop +/* C0C4 80030CC4 45010004 */ bc1t .L80030CD8 +/* C0C8 80030CC8 00000000 */ nop +/* C0CC 80030CCC 0C0187BC */ jal sqrtf +/* C0D0 80030CD0 4600C306 */ mov.s $f12, $f24 +/* C0D4 80030CD4 46000186 */ mov.s $f6, $f0 +.L80030CD8: +/* C0D8 80030CD8 C6040018 */ lwc1 $f4, 0x18($s0) +/* C0DC 80030CDC C600000C */ lwc1 $f0, 0xc($s0) +/* C0E0 80030CE0 46002101 */ sub.s $f4, $f4, $f0 +/* C0E4 80030CE4 46042102 */ mul.s $f4, $f4, $f4 +/* C0E8 80030CE8 00000000 */ nop +/* C0EC 80030CEC C6020014 */ lwc1 $f2, 0x14($s0) +/* C0F0 80030CF0 C6000020 */ lwc1 $f0, 0x20($s0) +/* C0F4 80030CF4 46020001 */ sub.s $f0, $f0, $f2 +/* C0F8 80030CF8 46000002 */ mul.s $f0, $f0, $f0 +/* C0FC 80030CFC 00000000 */ nop +/* C100 80030D00 3C013F80 */ lui $at, 0x3f80 +/* C104 80030D04 44811000 */ mtc1 $at, $f2 +/* C108 80030D08 46002300 */ add.s $f12, $f4, $f0 +/* C10C 80030D0C 46061603 */ div.s $f24, $f2, $f6 +/* C110 80030D10 46006084 */ sqrt.s $f2, $f12 +/* C114 80030D14 46021032 */ c.eq.s $f2, $f2 +/* C118 80030D18 00000000 */ nop +/* C11C 80030D1C 45010004 */ bc1t .L80030D30 +/* C120 80030D20 00000000 */ nop +/* C124 80030D24 0C0187BC */ jal sqrtf +/* C128 80030D28 00000000 */ nop +/* C12C 80030D2C 46000086 */ mov.s $f2, $f0 +.L80030D30: +/* C130 80030D30 4602B002 */ mul.s $f0, $f22, $f2 +/* C134 80030D34 00000000 */ nop +/* C138 80030D38 4602A102 */ mul.s $f4, $f20, $f2 +/* C13C 80030D3C 00000000 */ nop +/* C140 80030D40 46180002 */ mul.s $f0, $f0, $f24 +/* C144 80030D44 00000000 */ nop +/* C148 80030D48 C602000C */ lwc1 $f2, 0xc($s0) +/* C14C 80030D4C 46001080 */ add.s $f2, $f2, $f0 +/* C150 80030D50 46182102 */ mul.s $f4, $f4, $f24 +/* C154 80030D54 00000000 */ nop +/* C158 80030D58 E63E0014 */ swc1 $f30, 0x14($s1) +/* C15C 80030D5C E6220010 */ swc1 $f2, 0x10($s1) +/* C160 80030D60 C6000014 */ lwc1 $f0, 0x14($s0) +/* C164 80030D64 46040000 */ add.s $f0, $f0, $f4 +/* C168 80030D68 0800C35E */ j .L80030D78 +/* C16C 80030D6C E6200018 */ swc1 $f0, 0x18($s1) +.L80030D70: +/* C170 80030D70 E63E0014 */ swc1 $f30, 0x14($s1) +/* C174 80030D74 E63A0018 */ swc1 $f26, 0x18($s1) +.L80030D78: +/* C178 80030D78 12E00191 */ beqz $s7, .L800313C0 +/* C17C 80030D7C 00000000 */ nop +/* C180 80030D80 C6C00000 */ lwc1 $f0, ($s6) +/* C184 80030D84 3C013F80 */ lui $at, 0x3f80 +/* C188 80030D88 44812000 */ mtc1 $at, $f4 +/* C18C 80030D8C 00000000 */ nop +/* C190 80030D90 46040032 */ c.eq.s $f0, $f4 +/* C194 80030D94 00000000 */ nop +/* C198 80030D98 45010140 */ bc1t .L8003129C +/* C19C 80030D9C 00000000 */ nop +/* C1A0 80030DA0 8E840000 */ lw $a0, ($s4) +/* C1A4 80030DA4 24820002 */ addiu $v0, $a0, 2 +/* C1A8 80030DA8 2C420003 */ sltiu $v0, $v0, 3 +/* C1AC 80030DAC 1440013B */ bnez $v0, .L8003129C +/* C1B0 80030DB0 00000000 */ nop +/* C1B4 80030DB4 8C830000 */ lw $v1, ($a0) +/* C1B8 80030DB8 8E020000 */ lw $v0, ($s0) +/* C1BC 80030DBC 14620137 */ bne $v1, $v0, .L8003129C +/* C1C0 80030DC0 00000000 */ nop +/* C1C4 80030DC4 C4820004 */ lwc1 $f2, 4($a0) +/* C1C8 80030DC8 C6000004 */ lwc1 $f0, 4($s0) +/* C1CC 80030DCC 46001032 */ c.eq.s $f2, $f0 +/* C1D0 80030DD0 00000000 */ nop +/* C1D4 80030DD4 45000131 */ bc1f .L8003129C +/* C1D8 80030DD8 00000000 */ nop +/* C1DC 80030DDC C4820008 */ lwc1 $f2, 8($a0) +/* C1E0 80030DE0 C6000008 */ lwc1 $f0, 8($s0) +/* C1E4 80030DE4 46001032 */ c.eq.s $f2, $f0 +/* C1E8 80030DE8 00000000 */ nop +/* C1EC 80030DEC 4500012B */ bc1f .L8003129C +/* C1F0 80030DF0 00000000 */ nop +/* C1F4 80030DF4 C4820024 */ lwc1 $f2, 0x24($a0) +/* C1F8 80030DF8 C6000024 */ lwc1 $f0, 0x24($s0) +/* C1FC 80030DFC 46001032 */ c.eq.s $f2, $f0 +/* C200 80030E00 00000000 */ nop +/* C204 80030E04 45000125 */ bc1f .L8003129C +/* C208 80030E08 00000000 */ nop +/* C20C 80030E0C 8C830028 */ lw $v1, 0x28($a0) +/* C210 80030E10 8E020028 */ lw $v0, 0x28($s0) +/* C214 80030E14 10620121 */ beq $v1, $v0, .L8003129C +/* C218 80030E18 00000000 */ nop +/* C21C 80030E1C C482000C */ lwc1 $f2, 0xc($a0) +/* C220 80030E20 C600000C */ lwc1 $f0, 0xc($s0) +/* C224 80030E24 46001032 */ c.eq.s $f2, $f0 +/* C228 80030E28 00000000 */ nop +/* C22C 80030E2C 4500011B */ bc1f .L8003129C +/* C230 80030E30 00000000 */ nop +/* C234 80030E34 C4820014 */ lwc1 $f2, 0x14($a0) +/* C238 80030E38 C6000014 */ lwc1 $f0, 0x14($s0) +/* C23C 80030E3C 46001032 */ c.eq.s $f2, $f0 +/* C240 80030E40 00000000 */ nop +/* C244 80030E44 45030115 */ bc1tl .L8003129C +/* C248 80030E48 E6C40000 */ swc1 $f4, ($s6) +/* C24C 80030E4C 0800C4A7 */ j .L8003129C +/* C250 80030E50 00000000 */ nop +glabel L80030E54_C254 +/* C254 80030E54 8E020028 */ lw $v0, 0x28($s0) +/* C258 80030E58 1440005D */ bnez $v0, .L80030FD0 +/* C25C 80030E5C 00000000 */ nop +/* C260 80030E60 C612000C */ lwc1 $f18, 0xc($s0) +/* C264 80030E64 C6100018 */ lwc1 $f16, 0x18($s0) +/* C268 80030E68 C60A0014 */ lwc1 $f10, 0x14($s0) +/* C26C 80030E6C C60C0020 */ lwc1 $f12, 0x20($s0) +/* C270 80030E70 C6040010 */ lwc1 $f4, 0x10($s0) +/* C274 80030E74 C60E001C */ lwc1 $f14, 0x1c($s0) +/* C278 80030E78 46109032 */ c.eq.s $f18, $f16 +/* C27C 80030E7C 00000000 */ nop +/* C280 80030E80 45000007 */ bc1f .L80030EA0 +/* C284 80030E84 46048201 */ sub.s $f8, $f16, $f4 +/* C288 80030E88 460C5032 */ c.eq.s $f10, $f12 +/* C28C 80030E8C 00000000 */ nop +/* C290 80030E90 45000003 */ bc1f .L80030EA0 +/* C294 80030E94 00000000 */ nop +/* C298 80030E98 46002486 */ mov.s $f18, $f4 +/* C29C 80030E9C 46007286 */ mov.s $f10, $f14 +.L80030EA0: +/* C2A0 80030EA0 44800000 */ mtc1 $zero, $f0 +/* C2A4 80030EA4 00000000 */ nop +/* C2A8 80030EA8 46004032 */ c.eq.s $f8, $f0 +/* C2AC 80030EAC 00000000 */ nop +/* C2B0 80030EB0 45020017 */ bc1fl .L80030F10 +/* C2B4 80030EB4 460C5181 */ sub.s $f6, $f10, $f12 +/* C2B8 80030EB8 46128181 */ sub.s $f6, $f16, $f18 +/* C2BC 80030EBC 46064102 */ mul.s $f4, $f8, $f6 +/* C2C0 80030EC0 00000000 */ nop +/* C2C4 80030EC4 461A6081 */ sub.s $f2, $f12, $f26 +/* C2C8 80030EC8 46081082 */ mul.s $f2, $f2, $f8 +/* C2CC 80030ECC 00000000 */ nop +/* C2D0 80030ED0 460C5281 */ sub.s $f10, $f10, $f12 +/* C2D4 80030ED4 460E6201 */ sub.s $f8, $f12, $f14 +/* C2D8 80030ED8 4610C001 */ sub.s $f0, $f24, $f16 +/* C2DC 80030EDC 46081083 */ div.s $f2, $f2, $f8 +/* C2E0 80030EE0 46020000 */ add.s $f0, $f0, $f2 +/* C2E4 80030EE4 46005082 */ mul.s $f2, $f10, $f0 +/* C2E8 80030EE8 00000000 */ nop +/* C2EC 80030EEC 46003182 */ mul.s $f6, $f6, $f0 +/* C2F0 80030EF0 00000000 */ nop +/* C2F4 80030EF4 46082103 */ div.s $f4, $f4, $f8 +/* C2F8 80030EF8 460A2101 */ sub.s $f4, $f4, $f10 +/* C2FC 80030EFC 46041083 */ div.s $f2, $f2, $f4 +/* C300 80030F00 46181200 */ add.s $f8, $f2, $f24 +/* C304 80030F04 46043183 */ div.s $f6, $f6, $f4 +/* C308 80030F08 0800C3D8 */ j .L80030F60 +/* C30C 80030F0C 461A3000 */ add.s $f0, $f6, $f26 +.L80030F10: +/* C310 80030F10 460E6081 */ sub.s $f2, $f12, $f14 +/* C314 80030F14 46023102 */ mul.s $f4, $f6, $f2 +/* C318 80030F18 00000000 */ nop +/* C31C 80030F1C 46188001 */ sub.s $f0, $f16, $f24 +/* C320 80030F20 46020002 */ mul.s $f0, $f0, $f2 +/* C324 80030F24 00000000 */ nop +/* C328 80030F28 460CD081 */ sub.s $f2, $f26, $f12 +/* C32C 80030F2C 46080003 */ div.s $f0, $f0, $f8 +/* C330 80030F30 46001080 */ add.s $f2, $f2, $f0 +/* C334 80030F34 46023182 */ mul.s $f6, $f6, $f2 +/* C338 80030F38 00000000 */ nop +/* C33C 80030F3C 46128001 */ sub.s $f0, $f16, $f18 +/* C340 80030F40 46020082 */ mul.s $f2, $f0, $f2 +/* C344 80030F44 00000000 */ nop +/* C348 80030F48 46082103 */ div.s $f4, $f4, $f8 +/* C34C 80030F4C 46002101 */ sub.s $f4, $f4, $f0 +/* C350 80030F50 46043183 */ div.s $f6, $f6, $f4 +/* C354 80030F54 46183200 */ add.s $f8, $f6, $f24 +/* C358 80030F58 46041083 */ div.s $f2, $f2, $f4 +/* C35C 80030F5C 461A1000 */ add.s $f0, $f2, $f26 +.L80030F60: +/* C360 80030F60 E6280010 */ swc1 $f8, 0x10($s1) +/* C364 80030F64 E63E0014 */ swc1 $f30, 0x14($s1) +/* C368 80030F68 12A0003E */ beqz $s5, .L80031064 +/* C36C 80030F6C E6200018 */ swc1 $f0, 0x18($s1) +/* C370 80030F70 C6020018 */ lwc1 $f2, 0x18($s0) +/* C374 80030F74 C600000C */ lwc1 $f0, 0xc($s0) +/* C378 80030F78 46001081 */ sub.s $f2, $f2, $f0 +/* C37C 80030F7C C6000014 */ lwc1 $f0, 0x14($s0) +/* C380 80030F80 44061000 */ mfc1 $a2, $f2 +/* C384 80030F84 C6020020 */ lwc1 $f2, 0x20($s0) +/* C388 80030F88 4480A000 */ mtc1 $zero, $f20 +/* C38C 80030F8C 46001081 */ sub.s $f2, $f2, $f0 +/* C390 80030F90 4600A306 */ mov.s $f12, $f20 +/* C394 80030F94 44071000 */ mfc1 $a3, $f2 +/* C398 80030F98 0C00A720 */ jal atan2 +/* C39C 80030F9C 4600A386 */ mov.s $f14, $f20 +/* C3A0 80030FA0 E6200000 */ swc1 $f0, ($s1) +/* C3A4 80030FA4 C6000004 */ lwc1 $f0, 4($s0) +/* C3A8 80030FA8 4614003C */ c.lt.s $f0, $f20 +/* C3AC 80030FAC 00000000 */ nop +/* C3B0 80030FB0 45030001 */ bc1tl .L80030FB8 +/* C3B4 80030FB4 46000007 */ neg.s $f0, $f0 +.L80030FB8: +/* C3B8 80030FB8 E6200004 */ swc1 $f0, 4($s1) +/* C3BC 80030FBC C6000008 */ lwc1 $f0, 8($s0) +/* C3C0 80030FC0 E6200008 */ swc1 $f0, 8($s1) +/* C3C4 80030FC4 C6000024 */ lwc1 $f0, 0x24($s0) +/* C3C8 80030FC8 0800C419 */ j .L80031064 +/* C3CC 80030FCC E620000C */ swc1 $f0, 0xc($s1) +.L80030FD0: +/* C3D0 80030FD0 12A0001D */ beqz $s5, .L80031048 +/* C3D4 80030FD4 00000000 */ nop +/* C3D8 80030FD8 C6020018 */ lwc1 $f2, 0x18($s0) +/* C3DC 80030FDC C600000C */ lwc1 $f0, 0xc($s0) +/* C3E0 80030FE0 46001081 */ sub.s $f2, $f2, $f0 +/* C3E4 80030FE4 C6000014 */ lwc1 $f0, 0x14($s0) +/* C3E8 80030FE8 44061000 */ mfc1 $a2, $f2 +/* C3EC 80030FEC C6020020 */ lwc1 $f2, 0x20($s0) +/* C3F0 80030FF0 4480A000 */ mtc1 $zero, $f20 +/* C3F4 80030FF4 46001081 */ sub.s $f2, $f2, $f0 +/* C3F8 80030FF8 4600A306 */ mov.s $f12, $f20 +/* C3FC 80030FFC 44071000 */ mfc1 $a3, $f2 +/* C400 80031000 0C00A720 */ jal atan2 +/* C404 80031004 4600A386 */ mov.s $f14, $f20 +/* C408 80031008 E6200000 */ swc1 $f0, ($s1) +/* C40C 8003100C C6000004 */ lwc1 $f0, 4($s0) +/* C410 80031010 4614003C */ c.lt.s $f0, $f20 +/* C414 80031014 00000000 */ nop +/* C418 80031018 45030001 */ bc1tl .L80031020 +/* C41C 8003101C 46000007 */ neg.s $f0, $f0 +.L80031020: +/* C420 80031020 E6200004 */ swc1 $f0, 4($s1) +/* C424 80031024 C6000008 */ lwc1 $f0, 8($s0) +/* C428 80031028 E6200008 */ swc1 $f0, 8($s1) +/* C42C 8003102C C6000024 */ lwc1 $f0, 0x24($s0) +/* C430 80031030 E620000C */ swc1 $f0, 0xc($s1) +/* C434 80031034 C6000018 */ lwc1 $f0, 0x18($s0) +/* C438 80031038 E6200010 */ swc1 $f0, 0x10($s1) +/* C43C 8003103C C6000020 */ lwc1 $f0, 0x20($s0) +/* C440 80031040 0800C418 */ j .L80031060 +/* C444 80031044 E6200018 */ swc1 $f0, 0x18($s1) +.L80031048: +/* C448 80031048 52E00006 */ beql $s7, $zero, .L80031064 +/* C44C 8003104C E63E0014 */ swc1 $f30, 0x14($s1) +/* C450 80031050 C6400010 */ lwc1 $f0, 0x10($s2) +/* C454 80031054 E6200010 */ swc1 $f0, 0x10($s1) +/* C458 80031058 C6400018 */ lwc1 $f0, 0x18($s2) +/* C45C 8003105C E6200018 */ swc1 $f0, 0x18($s1) +.L80031060: +/* C460 80031060 E63E0014 */ swc1 $f30, 0x14($s1) +.L80031064: +/* C464 80031064 0800C4A6 */ j .L80031298 +/* C468 80031068 2402FFFF */ addiu $v0, $zero, -1 +glabel L8003106C_C46C +/* C46C 8003106C 8E020028 */ lw $v0, 0x28($s0) +/* C470 80031070 1440003A */ bnez $v0, .L8003115C +/* C474 80031074 00000000 */ nop +/* C478 80031078 C60C0010 */ lwc1 $f12, 0x10($s0) +/* C47C 8003107C C6060018 */ lwc1 $f6, 0x18($s0) +/* C480 80031080 460C3181 */ sub.s $f6, $f6, $f12 +/* C484 80031084 46063102 */ mul.s $f4, $f6, $f6 +/* C488 80031088 00000000 */ nop +/* C48C 8003108C C60A001C */ lwc1 $f10, 0x1c($s0) +/* C490 80031090 C6080020 */ lwc1 $f8, 0x20($s0) +/* C494 80031094 460A4201 */ sub.s $f8, $f8, $f10 +/* C498 80031098 46084382 */ mul.s $f14, $f8, $f8 +/* C49C 8003109C 00000000 */ nop +/* C4A0 800310A0 460CC081 */ sub.s $f2, $f24, $f12 +/* C4A4 800310A4 46061082 */ mul.s $f2, $f2, $f6 +/* C4A8 800310A8 00000000 */ nop +/* C4AC 800310AC 460AD001 */ sub.s $f0, $f26, $f10 +/* C4B0 800310B0 46080002 */ mul.s $f0, $f0, $f8 +/* C4B4 800310B4 00000000 */ nop +/* C4B8 800310B8 460E2100 */ add.s $f4, $f4, $f14 +/* C4BC 800310BC 46001080 */ add.s $f2, $f2, $f0 +/* C4C0 800310C0 46041103 */ div.s $f4, $f2, $f4 +/* C4C4 800310C4 46062182 */ mul.s $f6, $f4, $f6 +/* C4C8 800310C8 00000000 */ nop +/* C4CC 800310CC 46082102 */ mul.s $f4, $f4, $f8 +/* C4D0 800310D0 00000000 */ nop +/* C4D4 800310D4 460C3080 */ add.s $f2, $f6, $f12 +/* C4D8 800310D8 44800000 */ mtc1 $zero, $f0 +/* C4DC 800310DC 460A2100 */ add.s $f4, $f4, $f10 +/* C4E0 800310E0 E63E0014 */ swc1 $f30, 0x14($s1) +/* C4E4 800310E4 E6220010 */ swc1 $f2, 0x10($s1) +/* C4E8 800310E8 E6240018 */ swc1 $f4, 0x18($s1) +/* C4EC 800310EC C6080004 */ lwc1 $f8, 4($s0) +/* C4F0 800310F0 4600403C */ c.lt.s $f8, $f0 +/* C4F4 800310F4 00000000 */ nop +/* C4F8 800310F8 45000008 */ bc1f .L8003111C +/* C4FC 800310FC 00000000 */ nop +/* C500 80031100 C600000C */ lwc1 $f0, 0xc($s0) +/* C504 80031104 46001581 */ sub.s $f22, $f2, $f0 +/* C508 80031108 C6020014 */ lwc1 $f2, 0x14($s0) +/* C50C 8003110C 46004007 */ neg.s $f0, $f8 +/* C510 80031110 E6200004 */ swc1 $f0, 4($s1) +/* C514 80031114 0800C44C */ j .L80031130 +/* C518 80031118 46022501 */ sub.s $f20, $f4, $f2 +.L8003111C: +/* C51C 8003111C C600000C */ lwc1 $f0, 0xc($s0) +/* C520 80031120 46020581 */ sub.s $f22, $f0, $f2 +/* C524 80031124 C6000014 */ lwc1 $f0, 0x14($s0) +/* C528 80031128 E6280004 */ swc1 $f8, 4($s1) +/* C52C 8003112C 46040501 */ sub.s $f20, $f0, $f4 +.L80031130: +/* C530 80031130 4406B000 */ mfc1 $a2, $f22 +/* C534 80031134 44806000 */ mtc1 $zero, $f12 +/* C538 80031138 4407A000 */ mfc1 $a3, $f20 +/* C53C 8003113C 0C00A720 */ jal atan2 +/* C540 80031140 46006386 */ mov.s $f14, $f12 +/* C544 80031144 E6200000 */ swc1 $f0, ($s1) +/* C548 80031148 C6000008 */ lwc1 $f0, 8($s0) +/* C54C 8003114C E6200008 */ swc1 $f0, 8($s1) +/* C550 80031150 C6000024 */ lwc1 $f0, 0x24($s0) +/* C554 80031154 0800C482 */ j .L80031208 +/* C558 80031158 E620000C */ swc1 $f0, 0xc($s1) +.L8003115C: +/* C55C 8003115C 12A00023 */ beqz $s5, .L800311EC +/* C560 80031160 00000000 */ nop +/* C564 80031164 C6060004 */ lwc1 $f6, 4($s0) +/* C568 80031168 44800000 */ mtc1 $zero, $f0 +/* C56C 8003116C 00000000 */ nop +/* C570 80031170 4600303C */ c.lt.s $f6, $f0 +/* C574 80031174 00000000 */ nop +/* C578 80031178 4500000A */ bc1f .L800311A4 +/* C57C 8003117C 00000000 */ nop +/* C580 80031180 C6020018 */ lwc1 $f2, 0x18($s0) +/* C584 80031184 C600000C */ lwc1 $f0, 0xc($s0) +/* C588 80031188 46001581 */ sub.s $f22, $f2, $f0 +/* C58C 8003118C C6040020 */ lwc1 $f4, 0x20($s0) +/* C590 80031190 C6020014 */ lwc1 $f2, 0x14($s0) +/* C594 80031194 46003007 */ neg.s $f0, $f6 +/* C598 80031198 E6200004 */ swc1 $f0, 4($s1) +/* C59C 8003119C 0800C470 */ j .L800311C0 +/* C5A0 800311A0 46022501 */ sub.s $f20, $f4, $f2 +.L800311A4: +/* C5A4 800311A4 C602000C */ lwc1 $f2, 0xc($s0) +/* C5A8 800311A8 C6000018 */ lwc1 $f0, 0x18($s0) +/* C5AC 800311AC 46001581 */ sub.s $f22, $f2, $f0 +/* C5B0 800311B0 C6020014 */ lwc1 $f2, 0x14($s0) +/* C5B4 800311B4 C6000020 */ lwc1 $f0, 0x20($s0) +/* C5B8 800311B8 E6260004 */ swc1 $f6, 4($s1) +/* C5BC 800311BC 46001501 */ sub.s $f20, $f2, $f0 +.L800311C0: +/* C5C0 800311C0 4406B000 */ mfc1 $a2, $f22 +/* C5C4 800311C4 44806000 */ mtc1 $zero, $f12 +/* C5C8 800311C8 4407A000 */ mfc1 $a3, $f20 +/* C5CC 800311CC 0C00A720 */ jal atan2 +/* C5D0 800311D0 46006386 */ mov.s $f14, $f12 +/* C5D4 800311D4 E6200000 */ swc1 $f0, ($s1) +/* C5D8 800311D8 C6000008 */ lwc1 $f0, 8($s0) +/* C5DC 800311DC E6200008 */ swc1 $f0, 8($s1) +/* C5E0 800311E0 C6000024 */ lwc1 $f0, 0x24($s0) +/* C5E4 800311E4 0800C47D */ j .L800311F4 +/* C5E8 800311E8 E620000C */ swc1 $f0, 0xc($s1) +.L800311EC: +/* C5EC 800311EC 52E00006 */ beql $s7, $zero, .L80031208 +/* C5F0 800311F0 E63E0014 */ swc1 $f30, 0x14($s1) +.L800311F4: +/* C5F4 800311F4 C6000018 */ lwc1 $f0, 0x18($s0) +/* C5F8 800311F8 E6200010 */ swc1 $f0, 0x10($s1) +/* C5FC 800311FC C6000020 */ lwc1 $f0, 0x20($s0) +/* C600 80031200 E6200018 */ swc1 $f0, 0x18($s1) +/* C604 80031204 E63E0014 */ swc1 $f30, 0x14($s1) +.L80031208: +/* C608 80031208 0800C4A6 */ j .L80031298 +/* C60C 8003120C 2402FFFF */ addiu $v0, $zero, -1 +glabel L80031210_C610 +/* C610 80031210 E6380010 */ swc1 $f24, 0x10($s1) +/* C614 80031214 E63E0014 */ swc1 $f30, 0x14($s1) +/* C618 80031218 0800C4A7 */ j .L8003129C +/* C61C 8003121C E63A0018 */ swc1 $f26, 0x18($s1) +glabel L80031220_C620 +/* C620 80031220 C6020018 */ lwc1 $f2, 0x18($s0) +/* C624 80031224 C600000C */ lwc1 $f0, 0xc($s0) +/* C628 80031228 46001081 */ sub.s $f2, $f2, $f0 +/* C62C 8003122C C6000014 */ lwc1 $f0, 0x14($s0) +/* C630 80031230 44061000 */ mfc1 $a2, $f2 +/* C634 80031234 C6020020 */ lwc1 $f2, 0x20($s0) +/* C638 80031238 4480A000 */ mtc1 $zero, $f20 +/* C63C 8003123C 46001081 */ sub.s $f2, $f2, $f0 +/* C640 80031240 4600A306 */ mov.s $f12, $f20 +/* C644 80031244 44071000 */ mfc1 $a3, $f2 +/* C648 80031248 0C00A720 */ jal atan2 +/* C64C 8003124C 4600A386 */ mov.s $f14, $f20 +/* C650 80031250 E6200000 */ swc1 $f0, ($s1) +/* C654 80031254 C6000004 */ lwc1 $f0, 4($s0) +/* C658 80031258 4614003C */ c.lt.s $f0, $f20 +/* C65C 8003125C 00000000 */ nop +/* C660 80031260 45030001 */ bc1tl .L80031268 +/* C664 80031264 46000007 */ neg.s $f0, $f0 +.L80031268: +/* C668 80031268 E6200004 */ swc1 $f0, 4($s1) +/* C66C 8003126C C6000008 */ lwc1 $f0, 8($s0) +/* C670 80031270 E6200008 */ swc1 $f0, 8($s1) +/* C674 80031274 C6000024 */ lwc1 $f0, 0x24($s0) +/* C678 80031278 E620000C */ swc1 $f0, 0xc($s1) +/* C67C 8003127C C6000018 */ lwc1 $f0, 0x18($s0) +/* C680 80031280 E6200010 */ swc1 $f0, 0x10($s1) +/* C684 80031284 C600001C */ lwc1 $f0, 0x1c($s0) +/* C688 80031288 E6200014 */ swc1 $f0, 0x14($s1) +/* C68C 8003128C C6000020 */ lwc1 $f0, 0x20($s0) +/* C690 80031290 2402FFFE */ addiu $v0, $zero, -2 +/* C694 80031294 E6200018 */ swc1 $f0, 0x18($s1) +.L80031298: +/* C698 80031298 AE820000 */ sw $v0, ($s4) +.L8003129C: +/* C69C 8003129C 12E00048 */ beqz $s7, .L800313C0 +/* C6A0 800312A0 24020005 */ addiu $v0, $zero, 5 +/* C6A4 800312A4 8E030000 */ lw $v1, ($s0) +/* C6A8 800312A8 10620007 */ beq $v1, $v0, .L800312C8 +/* C6AC 800312AC 00000000 */ nop +/* C6B0 800312B0 C6420000 */ lwc1 $f2, ($s2) +/* C6B4 800312B4 C6600000 */ lwc1 $f0, ($s3) +/* C6B8 800312B8 46001032 */ c.eq.s $f2, $f0 +/* C6BC 800312BC 00000000 */ nop +/* C6C0 800312C0 4501003F */ bc1t .L800313C0 +/* C6C4 800312C4 00000000 */ nop +.L800312C8: +/* C6C8 800312C8 C6400000 */ lwc1 $f0, ($s2) +/* C6CC 800312CC C6620000 */ lwc1 $f2, ($s3) +/* C6D0 800312D0 46020001 */ sub.s $f0, $f0, $f2 +/* C6D4 800312D4 3C014040 */ lui $at, 0x4040 +/* C6D8 800312D8 44811000 */ mtc1 $at, $f2 +/* C6DC 800312DC 46000005 */ abs.s $f0, $f0 +/* C6E0 800312E0 4602003C */ c.lt.s $f0, $f2 +/* C6E4 800312E4 00000000 */ nop +/* C6E8 800312E8 45000035 */ bc1f .L800313C0 +/* C6EC 800312EC 00000000 */ nop +/* C6F0 800312F0 C6400004 */ lwc1 $f0, 4($s2) +/* C6F4 800312F4 C6620004 */ lwc1 $f2, 4($s3) +/* C6F8 800312F8 46020001 */ sub.s $f0, $f0, $f2 +/* C6FC 800312FC 3C014120 */ lui $at, 0x4120 +/* C700 80031300 44812000 */ mtc1 $at, $f4 +/* C704 80031304 46000005 */ abs.s $f0, $f0 +/* C708 80031308 4604003C */ c.lt.s $f0, $f4 +/* C70C 8003130C 00000000 */ nop +/* C710 80031310 4500002B */ bc1f .L800313C0 +/* C714 80031314 00000000 */ nop +/* C718 80031318 C6400008 */ lwc1 $f0, 8($s2) +/* C71C 8003131C C6620008 */ lwc1 $f2, 8($s3) +/* C720 80031320 46020001 */ sub.s $f0, $f0, $f2 +/* C724 80031324 3C013F80 */ lui $at, 0x3f80 +/* C728 80031328 44813000 */ mtc1 $at, $f6 +/* C72C 8003132C 46000005 */ abs.s $f0, $f0 +/* C730 80031330 4606003C */ c.lt.s $f0, $f6 +/* C734 80031334 00000000 */ nop +/* C738 80031338 45000021 */ bc1f .L800313C0 +/* C73C 8003133C 00000000 */ nop +/* C740 80031340 C640000C */ lwc1 $f0, 0xc($s2) +/* C744 80031344 C662000C */ lwc1 $f2, 0xc($s3) +/* C748 80031348 46020001 */ sub.s $f0, $f0, $f2 +/* C74C 8003134C 46000005 */ abs.s $f0, $f0 +/* C750 80031350 4606003C */ c.lt.s $f0, $f6 +/* C754 80031354 00000000 */ nop +/* C758 80031358 45000019 */ bc1f .L800313C0 +/* C75C 8003135C 00000000 */ nop +/* C760 80031360 C6400010 */ lwc1 $f0, 0x10($s2) +/* C764 80031364 C6620010 */ lwc1 $f2, 0x10($s3) +/* C768 80031368 46020001 */ sub.s $f0, $f0, $f2 +/* C76C 8003136C 46000005 */ abs.s $f0, $f0 +/* C770 80031370 4604003C */ c.lt.s $f0, $f4 +/* C774 80031374 00000000 */ nop +/* C778 80031378 45000011 */ bc1f .L800313C0 +/* C77C 8003137C 00000000 */ nop +/* C780 80031380 C6400014 */ lwc1 $f0, 0x14($s2) +/* C784 80031384 C6620014 */ lwc1 $f2, 0x14($s3) +/* C788 80031388 46020001 */ sub.s $f0, $f0, $f2 +/* C78C 8003138C 46000005 */ abs.s $f0, $f0 +/* C790 80031390 4604003C */ c.lt.s $f0, $f4 +/* C794 80031394 00000000 */ nop +/* C798 80031398 45000009 */ bc1f .L800313C0 +/* C79C 8003139C 00000000 */ nop +/* C7A0 800313A0 C6400018 */ lwc1 $f0, 0x18($s2) +/* C7A4 800313A4 C6620018 */ lwc1 $f2, 0x18($s3) +/* C7A8 800313A8 46020001 */ sub.s $f0, $f0, $f2 +/* C7AC 800313AC 46000005 */ abs.s $f0, $f0 +/* C7B0 800313B0 4604003C */ c.lt.s $f0, $f4 +/* C7B4 800313B4 00000000 */ nop +/* C7B8 800313B8 45030001 */ bc1tl .L800313C0 +/* C7BC 800313BC E6C60000 */ swc1 $f6, ($s6) +.L800313C0: +/* C7C0 800313C0 8E830000 */ lw $v1, ($s4) +/* C7C4 800313C4 2402FFFF */ addiu $v0, $zero, -1 +/* C7C8 800313C8 14620021 */ bne $v1, $v0, .L80031450 +/* C7CC 800313CC 00000000 */ nop +/* C7D0 800313D0 12E00010 */ beqz $s7, .L80031414 +/* C7D4 800313D4 00000000 */ nop +/* C7D8 800313D8 C6460010 */ lwc1 $f6, 0x10($s2) +/* C7DC 800313DC C6600010 */ lwc1 $f0, 0x10($s3) +/* C7E0 800313E0 C6440014 */ lwc1 $f4, 0x14($s2) +/* C7E4 800313E4 46003181 */ sub.s $f6, $f6, $f0 +/* C7E8 800313E8 C6600014 */ lwc1 $f0, 0x14($s3) +/* C7EC 800313EC C6420018 */ lwc1 $f2, 0x18($s2) +/* C7F0 800313F0 46002101 */ sub.s $f4, $f4, $f0 +/* C7F4 800313F4 C6600018 */ lwc1 $f0, 0x18($s3) +/* C7F8 800313F8 46001081 */ sub.s $f2, $f2, $f0 +/* C7FC 800313FC 3C01800A */ lui $at, %hi(D_800A08E4) +/* C800 80031400 E42608E4 */ swc1 $f6, %lo(D_800A08E4)($at) +/* C804 80031404 3C01800A */ lui $at, %hi(D_800A08E8) +/* C808 80031408 E42408E8 */ swc1 $f4, %lo(D_800A08E8)($at) +/* C80C 8003140C 3C01800A */ lui $at, %hi(D_800A08EC) +/* C810 80031410 E42208EC */ swc1 $f2, %lo(D_800A08EC)($at) +.L80031414: +/* C814 80031414 C6600010 */ lwc1 $f0, 0x10($s3) +/* C818 80031418 3C01800A */ lui $at, %hi(D_800A08E4) +/* C81C 8003141C C42208E4 */ lwc1 $f2, %lo(D_800A08E4)($at) +/* C820 80031420 46020000 */ add.s $f0, $f0, $f2 +/* C824 80031424 3C01800A */ lui $at, %hi(D_800A08E8) +/* C828 80031428 C42208E8 */ lwc1 $f2, %lo(D_800A08E8)($at) +/* C82C 8003142C E6400010 */ swc1 $f0, 0x10($s2) +/* C830 80031430 C6600014 */ lwc1 $f0, 0x14($s3) +/* C834 80031434 46020000 */ add.s $f0, $f0, $f2 +/* C838 80031438 3C01800A */ lui $at, %hi(D_800A08EC) +/* C83C 8003143C C42208EC */ lwc1 $f2, %lo(D_800A08EC)($at) +/* C840 80031440 E6400014 */ swc1 $f0, 0x14($s2) +/* C844 80031444 C6600018 */ lwc1 $f0, 0x18($s3) +/* C848 80031448 46020000 */ add.s $f0, $f0, $f2 +/* C84C 8003144C E6400018 */ swc1 $f0, 0x18($s2) +.L80031450: +/* C850 80031450 8FBF0048 */ lw $ra, 0x48($sp) +/* C854 80031454 8FB70044 */ lw $s7, 0x44($sp) +/* C858 80031458 8FB60040 */ lw $s6, 0x40($sp) +/* C85C 8003145C 8FB5003C */ lw $s5, 0x3c($sp) +/* C860 80031460 8FB40038 */ lw $s4, 0x38($sp) +/* C864 80031464 8FB30034 */ lw $s3, 0x34($sp) +/* C868 80031468 8FB20030 */ lw $s2, 0x30($sp) +/* C86C 8003146C 8FB1002C */ lw $s1, 0x2c($sp) +/* C870 80031470 8FB00028 */ lw $s0, 0x28($sp) +/* C874 80031474 D7BE0078 */ ldc1 $f30, 0x78($sp) +/* C878 80031478 D7BC0070 */ ldc1 $f28, 0x70($sp) +/* C87C 8003147C D7BA0068 */ ldc1 $f26, 0x68($sp) +/* C880 80031480 D7B80060 */ ldc1 $f24, 0x60($sp) +/* C884 80031484 D7B60058 */ ldc1 $f22, 0x58($sp) +/* C888 80031488 D7B40050 */ ldc1 $f20, 0x50($sp) +/* C88C 8003148C 03E00008 */ jr $ra +/* C890 80031490 27BD0080 */ addiu $sp, $sp, 0x80 diff --git a/asm/nonmatchings/code_EC2610/func_80240410_EC2610.s b/asm/nonmatchings/code_EC2610/func_80240410_EC2610.s index e87d2c5ad8..1ef2cefee2 100644 --- a/asm/nonmatchings/code_EC2610/func_80240410_EC2610.s +++ b/asm/nonmatchings/code_EC2610/func_80240410_EC2610.s @@ -11,7 +11,7 @@ glabel func_80240410_EC2610 /* EC2628 80240428 F7B80028 */ sdc1 $f24, 0x28($sp) /* EC262C 8024042C 4487C000 */ mtc1 $a3, $f24 /* EC2630 80240430 AFBF0014 */ sw $ra, 0x14($sp) -/* EC2634 80240434 0C01B198 */ jal osGetCause +/* EC2634 80240434 0C01B198 */ jal __osGetCause /* EC2638 80240438 0080802D */ daddu $s0, $a0, $zero /* EC263C 8024043C 4616A582 */ mul.s $f22, $f20, $f22 /* EC2640 80240440 00000000 */ nop diff --git a/asm/nonmatchings/code_EC7590/func_802403E0_EC7590.s b/asm/nonmatchings/code_EC7590/func_802403E0_EC7590.s index 8b2ed6b867..4606c83841 100644 --- a/asm/nonmatchings/code_EC7590/func_802403E0_EC7590.s +++ b/asm/nonmatchings/code_EC7590/func_802403E0_EC7590.s @@ -11,7 +11,7 @@ glabel func_802403E0_EC7590 /* EC75A8 802403F8 F7B80028 */ sdc1 $f24, 0x28($sp) /* EC75AC 802403FC 4487C000 */ mtc1 $a3, $f24 /* EC75B0 80240400 AFBF0014 */ sw $ra, 0x14($sp) -/* EC75B4 80240404 0C01B198 */ jal osGetCause +/* EC75B4 80240404 0C01B198 */ jal __osGetCause /* EC75B8 80240408 0080802D */ daddu $s0, $a0, $zero /* EC75BC 8024040C 4616A582 */ mul.s $f22, $f20, $f22 /* EC75C0 80240410 00000000 */ nop diff --git a/asm/nonmatchings/code_ECB930/func_80241C30_ECB930.s b/asm/nonmatchings/code_ECB930/func_80241C30_ECB930.s index 60e633f007..7a89fb3937 100644 --- a/asm/nonmatchings/code_ECB930/func_80241C30_ECB930.s +++ b/asm/nonmatchings/code_ECB930/func_80241C30_ECB930.s @@ -11,7 +11,7 @@ glabel func_80241C30_ECB930 /* ECB948 80241C48 F7B80028 */ sdc1 $f24, 0x28($sp) /* ECB94C 80241C4C 4487C000 */ mtc1 $a3, $f24 /* ECB950 80241C50 AFBF0014 */ sw $ra, 0x14($sp) -/* ECB954 80241C54 0C01B198 */ jal osGetCause +/* ECB954 80241C54 0C01B198 */ jal __osGetCause /* ECB958 80241C58 0080802D */ daddu $s0, $a0, $zero /* ECB95C 80241C5C 4616A582 */ mul.s $f22, $f20, $f22 /* ECB960 80241C60 00000000 */ nop diff --git a/asm/nonmatchings/code_ED00D0/func_802400E0_ED00D0.s b/asm/nonmatchings/code_ED00D0/func_802400E0_ED00D0.s index 10dca3368e..e28b8ec000 100644 --- a/asm/nonmatchings/code_ED00D0/func_802400E0_ED00D0.s +++ b/asm/nonmatchings/code_ED00D0/func_802400E0_ED00D0.s @@ -11,7 +11,7 @@ glabel func_802400E0_ED00D0 /* ED00E8 802400F8 F7B80028 */ sdc1 $f24, 0x28($sp) /* ED00EC 802400FC 4487C000 */ mtc1 $a3, $f24 /* ED00F0 80240100 AFBF0014 */ sw $ra, 0x14($sp) -/* ED00F4 80240104 0C01B198 */ jal osGetCause +/* ED00F4 80240104 0C01B198 */ jal __osGetCause /* ED00F8 80240108 0080802D */ daddu $s0, $a0, $zero /* ED00FC 8024010C 4616A582 */ mul.s $f22, $f20, $f22 /* ED0100 80240110 00000000 */ nop diff --git a/asm/nonmatchings/code_ED5540/func_80241320_ED5540.s b/asm/nonmatchings/code_ED5540/func_80241320_ED5540.s index 1fa03b9c17..683cd5a42f 100644 --- a/asm/nonmatchings/code_ED5540/func_80241320_ED5540.s +++ b/asm/nonmatchings/code_ED5540/func_80241320_ED5540.s @@ -11,7 +11,7 @@ glabel func_80241320_ED5540 /* ED5558 80241338 F7B80028 */ sdc1 $f24, 0x28($sp) /* ED555C 8024133C 4487C000 */ mtc1 $a3, $f24 /* ED5560 80241340 AFBF0014 */ sw $ra, 0x14($sp) -/* ED5564 80241344 0C01B198 */ jal osGetCause +/* ED5564 80241344 0C01B198 */ jal __osGetCause /* ED5568 80241348 0080802D */ daddu $s0, $a0, $zero /* ED556C 8024134C 4616A582 */ mul.s $f22, $f20, $f22 /* ED5570 80241350 00000000 */ nop diff --git a/asm/nonmatchings/code_EDC020/func_80240040_EDC020.s b/asm/nonmatchings/code_EDC020/func_80240040_EDC020.s index 122ff36cad..093dbf5582 100644 --- a/asm/nonmatchings/code_EDC020/func_80240040_EDC020.s +++ b/asm/nonmatchings/code_EDC020/func_80240040_EDC020.s @@ -11,7 +11,7 @@ glabel func_80240040_EDC020 /* EDC038 80240058 F7B80028 */ sdc1 $f24, 0x28($sp) /* EDC03C 8024005C 4487C000 */ mtc1 $a3, $f24 /* EDC040 80240060 AFBF0014 */ sw $ra, 0x14($sp) -/* EDC044 80240064 0C01B198 */ jal osGetCause +/* EDC044 80240064 0C01B198 */ jal __osGetCause /* EDC048 80240068 0080802D */ daddu $s0, $a0, $zero /* EDC04C 8024006C 4616A582 */ mul.s $f22, $f20, $f22 /* EDC050 80240070 00000000 */ nop diff --git a/asm/nonmatchings/code_EE65B0/func_80240504_EE6AB4.s b/asm/nonmatchings/code_EE65B0/func_80240504_EE6AB4.s index 4db04b902e..7ce53a2706 100644 --- a/asm/nonmatchings/code_EE65B0/func_80240504_EE6AB4.s +++ b/asm/nonmatchings/code_EE65B0/func_80240504_EE6AB4.s @@ -7,7 +7,7 @@ glabel func_80240504_EE6AB4 /* EE6ABC 8024050C AFB00060 */ sw $s0, 0x60($sp) /* EE6AC0 80240510 F7B60070 */ sdc1 $f22, 0x70($sp) /* EE6AC4 80240514 F7B40068 */ sdc1 $f20, 0x68($sp) -/* EE6AC8 80240518 0C01B198 */ jal osGetCause +/* EE6AC8 80240518 0C01B198 */ jal __osGetCause /* EE6ACC 8024051C 27A40010 */ addiu $a0, $sp, 0x10 /* EE6AD0 80240520 3C108024 */ lui $s0, %hi(D_80243B44_EEA0F4) /* EE6AD4 80240524 26103B44 */ addiu $s0, $s0, %lo(D_80243B44_EEA0F4) diff --git a/asm/nonmatchings/code_EF8010/func_80240590_EF8010.s b/asm/nonmatchings/code_EF8010/func_80240590_EF8010.s index 5a0ababfe0..7929a43588 100644 --- a/asm/nonmatchings/code_EF8010/func_80240590_EF8010.s +++ b/asm/nonmatchings/code_EF8010/func_80240590_EF8010.s @@ -11,7 +11,7 @@ glabel func_80240590_EF8010 /* EF8028 802405A8 F7B80028 */ sdc1 $f24, 0x28($sp) /* EF802C 802405AC 4487C000 */ mtc1 $a3, $f24 /* EF8030 802405B0 AFBF0014 */ sw $ra, 0x14($sp) -/* EF8034 802405B4 0C01B198 */ jal osGetCause +/* EF8034 802405B4 0C01B198 */ jal __osGetCause /* EF8038 802405B8 0080802D */ daddu $s0, $a0, $zero /* EF803C 802405BC 4616A582 */ mul.s $f22, $f20, $f22 /* EF8040 802405C0 00000000 */ nop diff --git a/asm/nonmatchings/code_ebd0_len_6a0/func_80033BC0.s b/asm/nonmatchings/code_ebd0_len_6a0/func_80033BC0.s index 674c6d59f5..a80220e161 100644 --- a/asm/nonmatchings/code_ebd0_len_6a0/func_80033BC0.s +++ b/asm/nonmatchings/code_ebd0_len_6a0/func_80033BC0.s @@ -43,9 +43,9 @@ glabel func_80033BC0 /* F058 80033C58 84830086 */ lh $v1, 0x86($a0) /* F05C 80033C5C 8482008C */ lh $v0, 0x8c($a0) /* F060 80033C60 00031900 */ sll $v1, $v1, 4 -/* F064 80033C64 3C018009 */ lui $at, %hi(D_800934F4) +/* F064 80033C64 3C018009 */ lui $at, %hi(gAreas+0x4) /* F068 80033C68 00230821 */ addu $at, $at, $v1 -/* F06C 80033C6C 8C2334F4 */ lw $v1, %lo(D_800934F4)($at) +/* F06C 80033C6C 8C2334F4 */ lw $v1, %lo(gAreas+0x4)($at) /* F070 80033C70 00021140 */ sll $v0, $v0, 5 /* F074 80033C74 0C0902AA */ jal func_80240AA8_B5ED58 /* F078 80033C78 00628821 */ addu $s1, $v1, $v0 diff --git a/asm/nonmatchings/code_f270_len_1190/func_80034C3C.s b/asm/nonmatchings/code_f270_len_1190/func_80034C3C.s index 5e6ab17c30..c57520ea96 100644 --- a/asm/nonmatchings/code_f270_len_1190/func_80034C3C.s +++ b/asm/nonmatchings/code_f270_len_1190/func_80034C3C.s @@ -66,9 +66,9 @@ glabel func_80034C3C /* 10124 80034D24 8E040000 */ lw $a0, ($s0) /* 10128 80034D28 84830086 */ lh $v1, 0x86($a0) /* 1012C 80034D2C 00031900 */ sll $v1, $v1, 4 -/* 10130 80034D30 3C068009 */ lui $a2, %hi(D_800934F4) +/* 10130 80034D30 3C068009 */ lui $a2, %hi(gAreas+0x4) /* 10134 80034D34 00C33021 */ addu $a2, $a2, $v1 -/* 10138 80034D38 8CC634F4 */ lw $a2, %lo(D_800934F4)($a2) +/* 10138 80034D38 8CC634F4 */ lw $a2, %lo(gAreas+0x4)($a2) /* 1013C 80034D3C 0040902D */ daddu $s2, $v0, $zero /* 10140 80034D40 A0800070 */ sb $zero, 0x70($a0) /* 10144 80034D44 8484008C */ lh $a0, 0x8c($a0) diff --git a/asm/nonmatchings/os/code_3b4a0_len_270/nuContRmbForceStop.s b/asm/nonmatchings/os/code_3b4a0_len_270/nuContRmbForceStop.s deleted file mode 100644 index 019133c2c1..0000000000 --- a/asm/nonmatchings/os/code_3b4a0_len_270/nuContRmbForceStop.s +++ /dev/null @@ -1,12 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel nuContRmbForceStop -/* 3B4A0 800600A0 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 3B4A4 800600A4 24040304 */ addiu $a0, $zero, 0x304 -/* 3B4A8 800600A8 AFBF0010 */ sw $ra, 0x10($sp) -/* 3B4AC 800600AC 0C00B3CA */ jal nuSiSendMesg -/* 3B4B0 800600B0 0000282D */ daddu $a1, $zero, $zero -/* 3B4B4 800600B4 8FBF0010 */ lw $ra, 0x10($sp) -/* 3B4B8 800600B8 03E00008 */ jr $ra -/* 3B4BC 800600BC 27BD0018 */ addiu $sp, $sp, 0x18 diff --git a/asm/nonmatchings/os/code_3b4a0_len_270/nuContRmbForceStopEnd.s b/asm/nonmatchings/os/code_3b4a0_len_270/nuContRmbForceStopEnd.s deleted file mode 100644 index 767887e1f8..0000000000 --- a/asm/nonmatchings/os/code_3b4a0_len_270/nuContRmbForceStopEnd.s +++ /dev/null @@ -1,12 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel nuContRmbForceStopEnd -/* 3B4C0 800600C0 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 3B4C4 800600C4 24040305 */ addiu $a0, $zero, 0x305 -/* 3B4C8 800600C8 AFBF0010 */ sw $ra, 0x10($sp) -/* 3B4CC 800600CC 0C00B3CA */ jal nuSiSendMesg -/* 3B4D0 800600D0 0000282D */ daddu $a1, $zero, $zero -/* 3B4D4 800600D4 8FBF0010 */ lw $ra, 0x10($sp) -/* 3B4D8 800600D8 03E00008 */ jr $ra -/* 3B4DC 800600DC 27BD0018 */ addiu $sp, $sp, 0x18 diff --git a/asm/nonmatchings/os/code_3b4a0_len_270/nuGfxThreadStart.s b/asm/nonmatchings/os/code_3b4a0_len_270/nuGfxThreadStart.s deleted file mode 100644 index 23a0118128..0000000000 --- a/asm/nonmatchings/os/code_3b4a0_len_270/nuGfxThreadStart.s +++ /dev/null @@ -1,26 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel nuGfxThreadStart -/* 3B5F0 800601F0 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 3B5F4 800601F4 AFB00018 */ sw $s0, 0x18($sp) -/* 3B5F8 800601F8 3C10800B */ lui $s0, %hi(D_800B1B90) -/* 3B5FC 800601FC 26101B90 */ addiu $s0, $s0, %lo(D_800B1B90) -/* 3B600 80060200 0200202D */ daddu $a0, $s0, $zero -/* 3B604 80060204 3C02800B */ lui $v0, %hi(D_800AE6D0) -/* 3B608 80060208 2442E6D0 */ addiu $v0, $v0, %lo(D_800AE6D0) -/* 3B60C 8006020C AFA20010 */ sw $v0, 0x10($sp) -/* 3B610 80060210 24020032 */ addiu $v0, $zero, 0x32 -/* 3B614 80060214 24050004 */ addiu $a1, $zero, 4 -/* 3B618 80060218 3C068006 */ lui $a2, %hi(nuGfxThread) -/* 3B61C 8006021C 24C60248 */ addiu $a2, $a2, %lo(nuGfxThread) -/* 3B620 80060220 0000382D */ daddu $a3, $zero, $zero -/* 3B624 80060224 AFBF001C */ sw $ra, 0x1c($sp) -/* 3B628 80060228 0C019798 */ jal osCreateThread -/* 3B62C 8006022C AFA20014 */ sw $v0, 0x14($sp) -/* 3B630 80060230 0C019808 */ jal osStartThread -/* 3B634 80060234 0200202D */ daddu $a0, $s0, $zero -/* 3B638 80060238 8FBF001C */ lw $ra, 0x1c($sp) -/* 3B63C 8006023C 8FB00018 */ lw $s0, 0x18($sp) -/* 3B640 80060240 03E00008 */ jr $ra -/* 3B644 80060244 27BD0020 */ addiu $sp, $sp, 0x20 diff --git a/asm/nonmatchings/os/code_40E10/osSpTaskLoad.s b/asm/nonmatchings/os/code_40E10/osSpTaskLoad.s new file mode 100644 index 0000000000..ef02ce804e --- /dev/null +++ b/asm/nonmatchings/os/code_40E10/osSpTaskLoad.s @@ -0,0 +1,147 @@ +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches + +glabel osSpTaskLoad +/* 40E10 80065A10 27BDFFE0 */ addiu $sp, $sp, -0x20 +/* 40E14 80065A14 AFB00010 */ sw $s0, 0x10($sp) +/* 40E18 80065A18 00808021 */ addu $s0, $a0, $zero +/* 40E1C 80065A1C AFB10014 */ sw $s1, 0x14($sp) +/* 40E20 80065A20 3C11800B */ lui $s1, %hi(D_800AF8C0) +/* 40E24 80065A24 2631F8C0 */ addiu $s1, $s1, %lo(D_800AF8C0) +/* 40E28 80065A28 02202821 */ addu $a1, $s1, $zero +/* 40E2C 80065A2C AFBF0018 */ sw $ra, 0x18($sp) +/* 40E30 80065A30 0C019194 */ jal bcopy +/* 40E34 80065A34 24060040 */ addiu $a2, $zero, 0x40 +/* 40E38 80065A38 3C04800B */ lui $a0, %hi(D_800AF8D0) +/* 40E3C 80065A3C 8C84F8D0 */ lw $a0, %lo(D_800AF8D0)($a0) +/* 40E40 80065A40 10800005 */ beqz $a0, .L80065A58 +/* 40E44 80065A44 00000000 */ nop +/* 40E48 80065A48 0C0187A4 */ jal osVirtualToPhysical +/* 40E4C 80065A4C 00000000 */ nop +/* 40E50 80065A50 3C01800B */ lui $at, %hi(D_800AF8D0) +/* 40E54 80065A54 AC22F8D0 */ sw $v0, %lo(D_800AF8D0)($at) +.L80065A58: +/* 40E58 80065A58 3C04800B */ lui $a0, %hi(D_800AF8D8) +/* 40E5C 80065A5C 8C84F8D8 */ lw $a0, %lo(D_800AF8D8)($a0) +/* 40E60 80065A60 10800005 */ beqz $a0, .L80065A78 +/* 40E64 80065A64 00000000 */ nop +/* 40E68 80065A68 0C0187A4 */ jal osVirtualToPhysical +/* 40E6C 80065A6C 00000000 */ nop +/* 40E70 80065A70 3C01800B */ lui $at, %hi(D_800AF8D8) +/* 40E74 80065A74 AC22F8D8 */ sw $v0, %lo(D_800AF8D8)($at) +.L80065A78: +/* 40E78 80065A78 3C04800B */ lui $a0, %hi(D_800AF8E0) +/* 40E7C 80065A7C 8C84F8E0 */ lw $a0, %lo(D_800AF8E0)($a0) +/* 40E80 80065A80 10800005 */ beqz $a0, .L80065A98 +/* 40E84 80065A84 00000000 */ nop +/* 40E88 80065A88 0C0187A4 */ jal osVirtualToPhysical +/* 40E8C 80065A8C 00000000 */ nop +/* 40E90 80065A90 3C01800B */ lui $at, %hi(D_800AF8E0) +/* 40E94 80065A94 AC22F8E0 */ sw $v0, %lo(D_800AF8E0)($at) +.L80065A98: +/* 40E98 80065A98 3C04800B */ lui $a0, %hi(D_800AF8E8) +/* 40E9C 80065A9C 8C84F8E8 */ lw $a0, %lo(D_800AF8E8)($a0) +/* 40EA0 80065AA0 10800005 */ beqz $a0, .L80065AB8 +/* 40EA4 80065AA4 00000000 */ nop +/* 40EA8 80065AA8 0C0187A4 */ jal osVirtualToPhysical +/* 40EAC 80065AAC 00000000 */ nop +/* 40EB0 80065AB0 3C01800B */ lui $at, %hi(D_800AF8E8) +/* 40EB4 80065AB4 AC22F8E8 */ sw $v0, %lo(D_800AF8E8)($at) +.L80065AB8: +/* 40EB8 80065AB8 3C04800B */ lui $a0, %hi(D_800AF8EC) +/* 40EBC 80065ABC 8C84F8EC */ lw $a0, %lo(D_800AF8EC)($a0) +/* 40EC0 80065AC0 10800005 */ beqz $a0, .L80065AD8 +/* 40EC4 80065AC4 00000000 */ nop +/* 40EC8 80065AC8 0C0187A4 */ jal osVirtualToPhysical +/* 40ECC 80065ACC 00000000 */ nop +/* 40ED0 80065AD0 3C01800B */ lui $at, %hi(D_800AF8EC) +/* 40ED4 80065AD4 AC22F8EC */ sw $v0, %lo(D_800AF8EC)($at) +.L80065AD8: +/* 40ED8 80065AD8 3C04800B */ lui $a0, %hi(D_800AF8F0) +/* 40EDC 80065ADC 8C84F8F0 */ lw $a0, %lo(D_800AF8F0)($a0) +/* 40EE0 80065AE0 10800005 */ beqz $a0, .L80065AF8 +/* 40EE4 80065AE4 00000000 */ nop +/* 40EE8 80065AE8 0C0187A4 */ jal osVirtualToPhysical +/* 40EEC 80065AEC 00000000 */ nop +/* 40EF0 80065AF0 3C01800B */ lui $at, %hi(D_800AF8F0) +/* 40EF4 80065AF4 AC22F8F0 */ sw $v0, %lo(D_800AF8F0)($at) +.L80065AF8: +/* 40EF8 80065AF8 3C04800B */ lui $a0, %hi(D_800AF8F8) +/* 40EFC 80065AFC 8C84F8F8 */ lw $a0, %lo(D_800AF8F8)($a0) +/* 40F00 80065B00 10800005 */ beqz $a0, .L80065B18 +/* 40F04 80065B04 00000000 */ nop +/* 40F08 80065B08 0C0187A4 */ jal osVirtualToPhysical +/* 40F0C 80065B0C 00000000 */ nop +/* 40F10 80065B10 3C01800B */ lui $at, %hi(D_800AF8F8) +/* 40F14 80065B14 AC22F8F8 */ sw $v0, %lo(D_800AF8F8)($at) +.L80065B18: +/* 40F18 80065B18 3C02800B */ lui $v0, %hi(D_800AF8C4) +/* 40F1C 80065B1C 8C42F8C4 */ lw $v0, %lo(D_800AF8C4)($v0) +/* 40F20 80065B20 30420001 */ andi $v0, $v0, 1 +/* 40F24 80065B24 10400019 */ beqz $v0, .L80065B8C +/* 40F28 80065B28 02202021 */ addu $a0, $s1, $zero +/* 40F2C 80065B2C 3C02800B */ lui $v0, %hi(D_800AF8F8) +/* 40F30 80065B30 8C42F8F8 */ lw $v0, %lo(D_800AF8F8)($v0) +/* 40F34 80065B34 3C03800B */ lui $v1, %hi(D_800AF8FC) +/* 40F38 80065B38 8C63F8FC */ lw $v1, %lo(D_800AF8FC)($v1) +/* 40F3C 80065B3C 3C01800B */ lui $at, %hi(D_800AF8D8) +/* 40F40 80065B40 AC22F8D8 */ sw $v0, %lo(D_800AF8D8)($at) +/* 40F44 80065B44 3C01800B */ lui $at, %hi(D_800AF8DC) +/* 40F48 80065B48 AC23F8DC */ sw $v1, %lo(D_800AF8DC)($at) +/* 40F4C 80065B4C 8E020004 */ lw $v0, 4($s0) +/* 40F50 80065B50 2403FFFE */ addiu $v1, $zero, -2 +/* 40F54 80065B54 00431024 */ and $v0, $v0, $v1 +/* 40F58 80065B58 AE020004 */ sw $v0, 4($s0) +/* 40F5C 80065B5C 3C02800B */ lui $v0, %hi(D_800AF8C4) +/* 40F60 80065B60 8C42F8C4 */ lw $v0, %lo(D_800AF8C4)($v0) +/* 40F64 80065B64 30420004 */ andi $v0, $v0, 4 +/* 40F68 80065B68 10400008 */ beqz $v0, .L80065B8C +/* 40F6C 80065B6C 3C03A000 */ lui $v1, 0xa000 +/* 40F70 80065B70 8E020038 */ lw $v0, 0x38($s0) +/* 40F74 80065B74 24420BFC */ addiu $v0, $v0, 0xbfc +/* 40F78 80065B78 00431025 */ or $v0, $v0, $v1 +/* 40F7C 80065B7C 8C420000 */ lw $v0, ($v0) +/* 40F80 80065B80 3C01800B */ lui $at, %hi(D_800AF8D0) +/* 40F84 80065B84 AC22F8D0 */ sw $v0, %lo(D_800AF8D0)($at) +/* 40F88 80065B88 02202021 */ addu $a0, $s1, $zero +.L80065B8C: +/* 40F8C 80065B8C 0C018614 */ jal osWritebackDCache +/* 40F90 80065B90 24050040 */ addiu $a1, $zero, 0x40 +/* 40F94 80065B94 0C01B1BC */ jal osSpSetStatus +/* 40F98 80065B98 24042B00 */ addiu $a0, $zero, 0x2b00 +/* 40F9C 80065B9C 2410FFFF */ addiu $s0, $zero, -1 +/* 40FA0 80065BA0 3C040400 */ lui $a0, 0x400 +.L80065BA4: +/* 40FA4 80065BA4 0C01B1C0 */ jal osSpSetPc +/* 40FA8 80065BA8 34841000 */ ori $a0, $a0, 0x1000 +/* 40FAC 80065BAC 1050FFFD */ beq $v0, $s0, .L80065BA4 +/* 40FB0 80065BB0 3C040400 */ lui $a0, 0x400 +/* 40FB4 80065BB4 2410FFFF */ addiu $s0, $zero, -1 +/* 40FB8 80065BB8 24040001 */ addiu $a0, $zero, 1 +.L80065BBC: +/* 40FBC 80065BBC 3C050400 */ lui $a1, 0x400 +/* 40FC0 80065BC0 34A50FC0 */ ori $a1, $a1, 0xfc0 +/* 40FC4 80065BC4 02203021 */ addu $a2, $s1, $zero +/* 40FC8 80065BC8 0C01B1CC */ jal osSpRawStartDma +/* 40FCC 80065BCC 24070040 */ addiu $a3, $zero, 0x40 +/* 40FD0 80065BD0 1050FFFA */ beq $v0, $s0, .L80065BBC +/* 40FD4 80065BD4 24040001 */ addiu $a0, $zero, 1 +.L80065BD8: +/* 40FD8 80065BD8 0C01B1B0 */ jal osSpDeviceBusy +/* 40FDC 80065BDC 00000000 */ nop +/* 40FE0 80065BE0 1440FFFD */ bnez $v0, .L80065BD8 +/* 40FE4 80065BE4 24040001 */ addiu $a0, $zero, 1 +/* 40FE8 80065BE8 2410FFFF */ addiu $s0, $zero, -1 +.L80065BEC: +/* 40FEC 80065BEC 8E260008 */ lw $a2, 8($s1) +/* 40FF0 80065BF0 8E27000C */ lw $a3, 0xc($s1) +/* 40FF4 80065BF4 3C050400 */ lui $a1, 0x400 +/* 40FF8 80065BF8 0C01B1CC */ jal osSpRawStartDma +/* 40FFC 80065BFC 34A51000 */ ori $a1, $a1, 0x1000 +/* 41000 80065C00 1050FFFA */ beq $v0, $s0, .L80065BEC +/* 41004 80065C04 24040001 */ addiu $a0, $zero, 1 +/* 41008 80065C08 8FBF0018 */ lw $ra, 0x18($sp) +/* 4100C 80065C0C 8FB10014 */ lw $s1, 0x14($sp) +/* 41010 80065C10 8FB00010 */ lw $s0, 0x10($sp) +/* 41014 80065C14 03E00008 */ jr $ra +/* 41018 80065C18 27BD0020 */ addiu $sp, $sp, 0x20 diff --git a/asm/nonmatchings/os/code_40E10/osSpTaskStartGo.s b/asm/nonmatchings/os/code_40E10/osSpTaskStartGo.s new file mode 100644 index 0000000000..5c63f5a265 --- /dev/null +++ b/asm/nonmatchings/os/code_40E10/osSpTaskStartGo.s @@ -0,0 +1,18 @@ +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches + +glabel osSpTaskStartGo +/* 4101C 80065C1C 27BDFFE8 */ addiu $sp, $sp, -0x18 +/* 41020 80065C20 AFBF0010 */ sw $ra, 0x10($sp) +.L80065C24: +/* 41024 80065C24 0C01B1B0 */ jal osSpDeviceBusy +/* 41028 80065C28 00000000 */ nop +/* 4102C 80065C2C 1440FFFD */ bnez $v0, .L80065C24 +/* 41030 80065C30 00000000 */ nop +/* 41034 80065C34 0C01B1BC */ jal osSpSetStatus +/* 41038 80065C38 24040125 */ addiu $a0, $zero, 0x125 +/* 4103C 80065C3C 8FBF0010 */ lw $ra, 0x10($sp) +/* 41040 80065C40 03E00008 */ jr $ra +/* 41044 80065C44 27BD0018 */ addiu $sp, $sp, 0x18 +/* 41048 80065C48 00000000 */ nop +/* 4104C 80065C4C 00000000 */ nop diff --git a/asm/nonmatchings/os/code_45a50_len_3a0/__osInitialize_common.s b/asm/nonmatchings/os/code_45a50_len_3a0/__osInitialize_common.s index 4bfb22c61c..a8d98903a4 100644 --- a/asm/nonmatchings/os/code_45a50_len_3a0/__osInitialize_common.s +++ b/asm/nonmatchings/os/code_45a50_len_3a0/__osInitialize_common.s @@ -169,7 +169,7 @@ glabel __osInitialize_common /* 45D84 8006A984 3442D354 */ ori $v0, $v0, 0xd354 .L8006A988: /* 45D88 8006A988 3C018009 */ lui $at, %hi(D_800958F8) -/* 45D8C 8006A98C 0C01B198 */ jal osGetCause +/* 45D8C 8006A98C 0C01B198 */ jal __osGetCause /* 45D90 8006A990 AC2258F8 */ sw $v0, %lo(D_800958F8)($at) /* 45D94 8006A994 30421000 */ andi $v0, $v0, 0x1000 /* 45D98 8006A998 10400003 */ beqz $v0, .L8006A9A8 diff --git a/asm/nonmatchings/os/code_4ac90_len_3910/load_battle_section.s b/asm/nonmatchings/os/code_4ac90_len_3910/load_battle_section.s index 5c5242a357..6c89df2543 100644 --- a/asm/nonmatchings/os/code_4ac90_len_3910/load_battle_section.s +++ b/asm/nonmatchings/os/code_4ac90_len_3910/load_battle_section.s @@ -5,8 +5,8 @@ glabel load_battle_section /* 4DFDC 80072BDC 27BDFFE0 */ addiu $sp, $sp, -0x20 /* 4DFE0 80072BE0 3C02800E */ lui $v0, %hi(gBattleStatus+0x47A) /* 4DFE4 80072BE4 9042C4EA */ lbu $v0, %lo(gBattleStatus+0x47A)($v0) -/* 4DFE8 80072BE8 3C038009 */ lui $v1, %hi(D_80095A30) -/* 4DFEC 80072BEC 24635A30 */ addiu $v1, $v1, %lo(D_80095A30) +/* 4DFE8 80072BE8 3C038009 */ lui $v1, %hi(gBattleAreas) +/* 4DFEC 80072BEC 24635A30 */ addiu $v1, $v1, %lo(gBattleAreas) /* 4DFF0 80072BF0 AFBF0018 */ sw $ra, 0x18($sp) /* 4DFF4 80072BF4 AFB10014 */ sw $s1, 0x14($sp) /* 4DFF8 80072BF8 AFB00010 */ sw $s0, 0x10($sp) diff --git a/asm/nonmatchings/os/code_3d330_len_990/guFrustum.s b/asm/nonmatchings/os/guFrustum/guFrustum.s similarity index 100% rename from asm/nonmatchings/os/code_3d330_len_990/guFrustum.s rename to asm/nonmatchings/os/guFrustum/guFrustum.s diff --git a/asm/nonmatchings/os/code_3d330_len_990/guFrustumF.s b/asm/nonmatchings/os/guFrustum/guFrustumF.s similarity index 100% rename from asm/nonmatchings/os/code_3d330_len_990/guFrustumF.s rename to asm/nonmatchings/os/guFrustum/guFrustumF.s diff --git a/asm/nonmatchings/os/code_3d330_len_990/guLookAt.s b/asm/nonmatchings/os/guLookAt/guLookAt.s similarity index 100% rename from asm/nonmatchings/os/code_3d330_len_990/guLookAt.s rename to asm/nonmatchings/os/guLookAt/guLookAt.s diff --git a/asm/nonmatchings/os/code_3d330_len_990/guLookAtF.s b/asm/nonmatchings/os/guLookAt/guLookAtF.s similarity index 100% rename from asm/nonmatchings/os/code_3d330_len_990/guLookAtF.s rename to asm/nonmatchings/os/guLookAt/guLookAtF.s diff --git a/asm/nonmatchings/os/code_42780_len_120/guMtxIdent.s b/asm/nonmatchings/os/guMtxIdent/guMtxIdent.s similarity index 100% rename from asm/nonmatchings/os/code_42780_len_120/guMtxIdent.s rename to asm/nonmatchings/os/guMtxIdent/guMtxIdent.s diff --git a/asm/nonmatchings/os/code_42e70_len_390/guRotate.s b/asm/nonmatchings/os/guRotate/guRotate.s similarity index 100% rename from asm/nonmatchings/os/code_42e70_len_390/guRotate.s rename to asm/nonmatchings/os/guRotate/guRotate.s diff --git a/asm/nonmatchings/os/code_42e70_len_390/guRotateF.s b/asm/nonmatchings/os/guRotate/guRotateF.s similarity index 100% rename from asm/nonmatchings/os/code_42e70_len_390/guRotateF.s rename to asm/nonmatchings/os/guRotate/guRotateF.s diff --git a/asm/nonmatchings/os/code_3b4a0_len_270/nuPiReadRomOverlay.s b/asm/nonmatchings/os/nusys/code_3B4A0/nuPiReadRomOverlay.s similarity index 100% rename from asm/nonmatchings/os/code_3b4a0_len_270/nuPiReadRomOverlay.s rename to asm/nonmatchings/os/nusys/code_3B4A0/nuPiReadRomOverlay.s diff --git a/asm/nonmatchings/os/code_7e40_len_3f0/nuGfxTaskMgr.s b/asm/nonmatchings/os/nusys/code_7e40_len_3f0/nuGfxTaskMgr.s similarity index 100% rename from asm/nonmatchings/os/code_7e40_len_3f0/nuGfxTaskMgr.s rename to asm/nonmatchings/os/nusys/code_7e40_len_3f0/nuGfxTaskMgr.s diff --git a/asm/nonmatchings/os/code_7e40_len_3f0/nuGfxTaskMgrInit.s b/asm/nonmatchings/os/nusys/code_7e40_len_3f0/nuGfxTaskMgrInit.s similarity index 100% rename from asm/nonmatchings/os/code_7e40_len_3f0/nuGfxTaskMgrInit.s rename to asm/nonmatchings/os/nusys/code_7e40_len_3f0/nuGfxTaskMgrInit.s diff --git a/asm/nonmatchings/os/code_7e40_len_3f0/nuGfxTaskStart.s b/asm/nonmatchings/os/nusys/code_7e40_len_3f0/nuGfxTaskStart.s similarity index 100% rename from asm/nonmatchings/os/code_7e40_len_3f0/nuGfxTaskStart.s rename to asm/nonmatchings/os/nusys/code_7e40_len_3f0/nuGfxTaskStart.s diff --git a/asm/nonmatchings/os/nusys/nuContRmbMgr/nuContRmbMgrInit.s b/asm/nonmatchings/os/nusys/nuContRmbMgr/nuContRmbMgrInit.s deleted file mode 100644 index 501fb72843..0000000000 --- a/asm/nonmatchings/os/nusys/nuContRmbMgr/nuContRmbMgrInit.s +++ /dev/null @@ -1,29 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel nuContRmbMgrInit -/* 3B08C 8005FC8C 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 3B090 8005FC90 AFBF0010 */ sw $ra, 0x10($sp) -/* 3B094 8005FC94 0000202D */ daddu $a0, $zero, $zero -/* 3B098 8005FC98 24050002 */ addiu $a1, $zero, 2 -/* 3B09C 8005FC9C 0080182D */ daddu $v1, $a0, $zero -.L8005FCA0: -/* 3B0A0 8005FCA0 3C01800B */ lui $at, 0x800b -/* 3B0A4 8005FCA4 00230821 */ addu $at, $at, $v1 -/* 3B0A8 8005FCA8 A0251D46 */ sb $a1, 0x1d46($at) -/* 3B0AC 8005FCAC 3C01800B */ lui $at, 0x800b -/* 3B0B0 8005FCB0 00230821 */ addu $at, $at, $v1 -/* 3B0B4 8005FCB4 A0201D47 */ sb $zero, 0x1d47($at) -/* 3B0B8 8005FCB8 3C01800B */ lui $at, 0x800b -/* 3B0BC 8005FCBC 00230821 */ addu $at, $at, $v1 -/* 3B0C0 8005FCC0 A4241D44 */ sh $a0, 0x1d44($at) -/* 3B0C4 8005FCC4 24840001 */ addiu $a0, $a0, 1 -/* 3B0C8 8005FCC8 2C820004 */ sltiu $v0, $a0, 4 -/* 3B0CC 8005FCCC 1440FFF4 */ bnez $v0, .L8005FCA0 -/* 3B0D0 8005FCD0 2463000A */ addiu $v1, $v1, 0xa -/* 3B0D4 8005FCD4 3C048009 */ lui $a0, %hi(nuContRmbCallBack) -/* 3B0D8 8005FCD8 0C0180FC */ jal nuSiCallBackAdd -/* 3B0DC 8005FCDC 24843D00 */ addiu $a0, $a0, %lo(nuContRmbCallBack) -/* 3B0E0 8005FCE0 8FBF0010 */ lw $ra, 0x10($sp) -/* 3B0E4 8005FCE4 03E00008 */ jr $ra -/* 3B0E8 8005FCE8 27BD0018 */ addiu $sp, $sp, 0x18 diff --git a/asm/nonmatchings/os/code_3b390_len_110/nuContRmbModeSet.s b/asm/nonmatchings/os/nusys/nuContRmbModeSet/nuContRmbModeSet.s similarity index 100% rename from asm/nonmatchings/os/code_3b390_len_110/nuContRmbModeSet.s rename to asm/nonmatchings/os/nusys/nuContRmbModeSet/nuContRmbModeSet.s diff --git a/asm/nonmatchings/os/code_3b4a0_len_270/nuGfxThread.s b/asm/nonmatchings/os/nusys/nuGfxThread/nuGfxThread2.s similarity index 99% rename from asm/nonmatchings/os/code_3b4a0_len_270/nuGfxThread.s rename to asm/nonmatchings/os/nusys/nuGfxThread/nuGfxThread2.s index 59f2f20ab2..d656ea144f 100644 --- a/asm/nonmatchings/os/code_3b4a0_len_270/nuGfxThread.s +++ b/asm/nonmatchings/os/nusys/nuGfxThread/nuGfxThread2.s @@ -1,7 +1,7 @@ .set noat # allow manual use of $at .set noreorder # don't insert nops after branches -glabel nuGfxThread +glabel nuGfxThread2 /* 3B648 80060248 27BDFFC8 */ addiu $sp, $sp, -0x38 /* 3B64C 8006024C AFB00028 */ sw $s0, 0x28($sp) /* 3B650 80060250 3C10800B */ lui $s0, %hi(D_800B42F0) diff --git a/asm/nonmatchings/os/osCreateMesgQueue/osCreateMesgQueue.s b/asm/nonmatchings/os/osCreateMesgQueue/osCreateMesgQueue.s new file mode 100644 index 0000000000..1f35b77342 --- /dev/null +++ b/asm/nonmatchings/os/osCreateMesgQueue/osCreateMesgQueue.s @@ -0,0 +1,16 @@ +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches + +glabel osCreateMesgQueue +/* 40980 80065580 3C028009 */ lui $v0, %hi(D_80094650) +/* 40984 80065584 24424650 */ addiu $v0, $v0, %lo(D_80094650) +/* 40988 80065588 AC820000 */ sw $v0, ($a0) +/* 4098C 8006558C AC820004 */ sw $v0, 4($a0) +/* 40990 80065590 AC800008 */ sw $zero, 8($a0) +/* 40994 80065594 AC80000C */ sw $zero, 0xc($a0) +/* 40998 80065598 AC860010 */ sw $a2, 0x10($a0) +/* 4099C 8006559C 03E00008 */ jr $ra +/* 409A0 800655A0 AC850014 */ sw $a1, 0x14($a0) +/* 409A4 800655A4 00000000 */ nop +/* 409A8 800655A8 00000000 */ nop +/* 409AC 800655AC 00000000 */ nop diff --git a/asm/nonmatchings/os/osSiRawStartDma/osSiRawStartDma.s b/asm/nonmatchings/os/osSiRawStartDma/osSiRawStartDma.s new file mode 100644 index 0000000000..d4ea6abb27 --- /dev/null +++ b/asm/nonmatchings/os/osSiRawStartDma/osSiRawStartDma.s @@ -0,0 +1,53 @@ +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches + +glabel osSiRawStartDma +/* 410C0 80065CC0 27BDFFE0 */ addiu $sp, $sp, -0x20 +/* 410C4 80065CC4 3C02A480 */ lui $v0, 0xa480 +/* 410C8 80065CC8 34420018 */ ori $v0, $v0, 0x18 +/* 410CC 80065CCC AFBF0018 */ sw $ra, 0x18($sp) +/* 410D0 80065CD0 AFB10014 */ sw $s1, 0x14($sp) +/* 410D4 80065CD4 AFB00010 */ sw $s0, 0x10($sp) +/* 410D8 80065CD8 8C420000 */ lw $v0, ($v0) +/* 410DC 80065CDC 00808021 */ addu $s0, $a0, $zero +/* 410E0 80065CE0 30420003 */ andi $v0, $v0, 3 +/* 410E4 80065CE4 10400003 */ beqz $v0, .L80065CF4 +/* 410E8 80065CE8 00A08821 */ addu $s1, $a1, $zero +/* 410EC 80065CEC 08019754 */ j .L80065D50 +/* 410F0 80065CF0 2402FFFF */ addiu $v0, $zero, -1 +.L80065CF4: +/* 410F4 80065CF4 24020001 */ addiu $v0, $zero, 1 +/* 410F8 80065CF8 16020003 */ bne $s0, $v0, .L80065D08 +/* 410FC 80065CFC 02202021 */ addu $a0, $s1, $zero +/* 41100 80065D00 0C018614 */ jal osWritebackDCache +/* 41104 80065D04 24050040 */ addiu $a1, $zero, 0x40 +.L80065D08: +/* 41108 80065D08 0C0187A4 */ jal osVirtualToPhysical +/* 4110C 80065D0C 02202021 */ addu $a0, $s1, $zero +/* 41110 80065D10 3C03A480 */ lui $v1, 0xa480 +/* 41114 80065D14 AC620000 */ sw $v0, ($v1) +/* 41118 80065D18 56000003 */ bnel $s0, $zero, .L80065D28 +/* 4111C 80065D1C 3C03A480 */ lui $v1, 0xa480 +/* 41120 80065D20 0801974B */ j .L80065D2C +/* 41124 80065D24 34630004 */ ori $v1, $v1, 4 +.L80065D28: +/* 41128 80065D28 34630010 */ ori $v1, $v1, 0x10 +.L80065D2C: +/* 4112C 80065D2C 3C021FC0 */ lui $v0, 0x1fc0 +/* 41130 80065D30 344207C0 */ ori $v0, $v0, 0x7c0 +/* 41134 80065D34 AC620000 */ sw $v0, ($v1) +/* 41138 80065D38 16000005 */ bnez $s0, .L80065D50 +/* 4113C 80065D3C 00001021 */ addu $v0, $zero, $zero +/* 41140 80065D40 02202021 */ addu $a0, $s1, $zero +/* 41144 80065D44 0C0185C8 */ jal osInvalDCache +/* 41148 80065D48 24050040 */ addiu $a1, $zero, 0x40 +/* 4114C 80065D4C 00001021 */ addu $v0, $zero, $zero +.L80065D50: +/* 41150 80065D50 8FBF0018 */ lw $ra, 0x18($sp) +/* 41154 80065D54 8FB10014 */ lw $s1, 0x14($sp) +/* 41158 80065D58 8FB00010 */ lw $s0, 0x10($sp) +/* 4115C 80065D5C 03E00008 */ jr $ra +/* 41160 80065D60 27BD0020 */ addiu $sp, $sp, 0x20 +/* 41164 80065D64 00000000 */ nop +/* 41168 80065D68 00000000 */ nop +/* 4116C 80065D6C 00000000 */ nop diff --git a/asm/nonmatchings/os/osSpTaskYield/osSpTaskYield.s b/asm/nonmatchings/os/osSpTaskYield/osSpTaskYield.s new file mode 100644 index 0000000000..f2df926325 --- /dev/null +++ b/asm/nonmatchings/os/osSpTaskYield/osSpTaskYield.s @@ -0,0 +1,12 @@ +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches + +glabel osSpTaskYield +/* 41050 80065C50 27BDFFE8 */ addiu $sp, $sp, -0x18 +/* 41054 80065C54 AFBF0010 */ sw $ra, 0x10($sp) +/* 41058 80065C58 0C01B1BC */ jal osSpSetStatus +/* 4105C 80065C5C 24040400 */ addiu $a0, $zero, 0x400 +/* 41060 80065C60 8FBF0010 */ lw $ra, 0x10($sp) +/* 41064 80065C64 03E00008 */ jr $ra +/* 41068 80065C68 27BD0018 */ addiu $sp, $sp, 0x18 +/* 4106C 80065C6C 00000000 */ nop diff --git a/asm/nonmatchings/os/osSpTaskYielded/osSpTaskYielded.s b/asm/nonmatchings/os/osSpTaskYielded/osSpTaskYielded.s new file mode 100644 index 0000000000..cafca33adc --- /dev/null +++ b/asm/nonmatchings/os/osSpTaskYielded/osSpTaskYielded.s @@ -0,0 +1,25 @@ +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches + +glabel osSpTaskYielded +/* 41070 80065C70 27BDFFE8 */ addiu $sp, $sp, -0x18 +/* 41074 80065C74 AFB00010 */ sw $s0, 0x10($sp) +/* 41078 80065C78 AFBF0014 */ sw $ra, 0x14($sp) +/* 4107C 80065C7C 0C01B1B8 */ jal osSpGetStatus +/* 41080 80065C80 00808021 */ addu $s0, $a0, $zero +/* 41084 80065C84 00022202 */ srl $a0, $v0, 8 +/* 41088 80065C88 30420080 */ andi $v0, $v0, 0x80 +/* 4108C 80065C8C 10400006 */ beqz $v0, .L80065CA8 +/* 41090 80065C90 30840001 */ andi $a0, $a0, 1 +/* 41094 80065C94 8E020004 */ lw $v0, 4($s0) +/* 41098 80065C98 2403FFFD */ addiu $v1, $zero, -3 +/* 4109C 80065C9C 00441025 */ or $v0, $v0, $a0 +/* 410A0 80065CA0 00431024 */ and $v0, $v0, $v1 +/* 410A4 80065CA4 AE020004 */ sw $v0, 4($s0) +.L80065CA8: +/* 410A8 80065CA8 00801021 */ addu $v0, $a0, $zero +/* 410AC 80065CAC 8FBF0014 */ lw $ra, 0x14($sp) +/* 410B0 80065CB0 8FB00010 */ lw $s0, 0x10($sp) +/* 410B4 80065CB4 03E00008 */ jr $ra +/* 410B8 80065CB8 27BD0018 */ addiu $sp, $sp, 0x18 +/* 410BC 80065CBC 00000000 */ nop diff --git a/asm/nonmatchings/os/code_42780_len_120/osViRepeatLine.s b/asm/nonmatchings/os/osViRepeatLine/osViRepeatLine.s similarity index 100% rename from asm/nonmatchings/os/code_42780_len_120/osViRepeatLine.s rename to asm/nonmatchings/os/osViRepeatLine/osViRepeatLine.s diff --git a/asm/nonmatchings/os/code_3cd00_len_5f0/osVirtualToPhysical.s b/asm/nonmatchings/os/osVirtualToPhysical/osVirtualToPhysical.s similarity index 100% rename from asm/nonmatchings/os/code_3cd00_len_5f0/osVirtualToPhysical.s rename to asm/nonmatchings/os/osVirtualToPhysical/osVirtualToPhysical.s diff --git a/asm/nonmatchings/world/world/get_map_IDs_by_name.s b/asm/nonmatchings/world/world/get_map_IDs_by_name.s index 77abe36b12..fe201b37f4 100644 --- a/asm/nonmatchings/world/world/get_map_IDs_by_name.s +++ b/asm/nonmatchings/world/world/get_map_IDs_by_name.s @@ -47,9 +47,9 @@ glabel get_map_IDs_by_name /* 36094 8005AC94 26310020 */ addiu $s1, $s1, 0x20 .L8005AC98: /* 36098 8005AC98 26520010 */ addiu $s2, $s2, 0x10 -/* 3609C 8005AC9C 3C048009 */ lui $a0, %hi(D_800934F4) +/* 3609C 8005AC9C 3C048009 */ lui $a0, %hi(gAreas+0x4) /* 360A0 8005ACA0 00922021 */ addu $a0, $a0, $s2 -/* 360A4 8005ACA4 8C8434F4 */ lw $a0, %lo(D_800934F4)($a0) +/* 360A4 8005ACA4 8C8434F4 */ lw $a0, %lo(gAreas+0x4)($a0) /* 360A8 8005ACA8 3C028009 */ lui $v0, %hi(gAreas) /* 360AC 8005ACAC 244234F0 */ addiu $v0, $v0, %lo(gAreas) /* 360B0 8005ACB0 1480FFE4 */ bnez $a0, .L8005AC44 diff --git a/asm/nonmatchings/world/world/load_map_by_IDs.s b/asm/nonmatchings/world/world/load_map_by_IDs.s index 10c18bbfd7..ebae6a40f0 100644 --- a/asm/nonmatchings/world/world/load_map_by_IDs.s +++ b/asm/nonmatchings/world/world/load_map_by_IDs.s @@ -64,9 +64,9 @@ glabel load_map_by_IDs /* 35BD4 8005A7D4 AC400144 */ sw $zero, 0x144($v0) /* 35BD8 8005A7D8 00111400 */ sll $v0, $s1, 0x10 /* 35BDC 8005A7DC 00021303 */ sra $v0, $v0, 0xc -/* 35BE0 8005A7E0 3C018009 */ lui $at, %hi(D_800934F4) +/* 35BE0 8005A7E0 3C018009 */ lui $at, %hi(gAreas+0x4) /* 35BE4 8005A7E4 00220821 */ addu $at, $at, $v0 -/* 35BE8 8005A7E8 8C2234F4 */ lw $v0, %lo(D_800934F4)($at) +/* 35BE8 8005A7E8 8C2234F4 */ lw $v0, %lo(gAreas+0x4)($at) /* 35BEC 8005A7EC 00031AC3 */ sra $v1, $v1, 0xb /* 35BF0 8005A7F0 00439021 */ addu $s2, $v0, $v1 /* 35BF4 8005A7F4 8E460000 */ lw $a2, ($s2) diff --git a/asm/nonmatchings/os/code_46c70_len_e00/osGetCause.s b/asm/os/__osGetCause.s similarity index 63% rename from asm/nonmatchings/os/code_46c70_len_e00/osGetCause.s rename to asm/os/__osGetCause.s index 3926dc04fb..207e40e1b1 100644 --- a/asm/nonmatchings/os/code_46c70_len_e00/osGetCause.s +++ b/asm/os/__osGetCause.s @@ -1,7 +1,13 @@ +.include "macro.inc" + +# assembler directives .set noat # allow manual use of $at .set noreorder # don't insert nops after branches +.set gp=64 # allow use of 64-bit general purpose registers -glabel osGetCause +.section .text, "ax" + +glabel __osGetCause /* 47A60 8006C660 40026800 */ mfc0 $v0, $13 /* 47A64 8006C664 03E00008 */ jr $ra /* 47A68 8006C668 00000000 */ nop diff --git a/asm/nonmatchings/os/code_40c20_len_1f0/osGetCount.s b/asm/os/osGetCount.s similarity index 67% rename from asm/nonmatchings/os/code_40c20_len_1f0/osGetCount.s rename to asm/os/osGetCount.s index ed1e89a39e..9a3d517575 100644 --- a/asm/nonmatchings/os/code_40c20_len_1f0/osGetCount.s +++ b/asm/os/osGetCount.s @@ -1,5 +1,11 @@ +.include "macro.inc" + +# assembler directives .set noat # allow manual use of $at .set noreorder # don't insert nops after branches +.set gp=64 # allow use of 64-bit general purpose registers + +.section .text, "ax" glabel osGetCount /* 40E00 80065A00 40024800 */ mfc0 $v0, $9 diff --git a/configure.py b/configure.py index 4fb58169fb..cb3adf6d3f 100755 --- a/configure.py +++ b/configure.py @@ -209,9 +209,9 @@ async def main(): # split assets print("Splitting segments from baserom", end="") split.main( - args.baserom, "tools/splat.yaml", ".", + args.baserom, [ "ld", "bin", "Yay0", "PaperMarioMapFS", "PaperMarioMessages", "img", "PaperMarioNpcSprites" ], False, False, diff --git a/include/common_structs.h b/include/common_structs.h index 617a2ae422..2b0fb9c55f 100644 --- a/include/common_structs.h +++ b/include/common_structs.h @@ -1721,7 +1721,7 @@ typedef struct { /* 0x00018 */ Light l2[2]; /* 0x00030 */ Matrix4s camPerspMatrix[8]; // could only be length 4, unsure /* 0x00230 */ s32 mainGfx[0x4100]; - /* 0x10630 */ s32 smallGfx[0x400]; // used by func 800269EC + /* 0x10630 */ s32 smallGfx[0x400]; // used by gfx_task_background /* 0x11630 */ Matrix4s matrixStack[0x200]; } DisplayContext; // size = 0x19630 diff --git a/include/functions.h b/include/functions.h index 5b52bb43bc..d73f525ae3 100644 --- a/include/functions.h +++ b/include/functions.h @@ -37,6 +37,9 @@ s32 create_entity(StaticEntityData*, s32, s32, s32, s32, s32); void func_80070550(s32, f32, f32, f32, f32, f32, s32, s32); void func_802E263C(Entity* entity); +void step_game_loop(void); +s32 resume_all_group(s32 groupFlags); + void create_shadow_callback(Shadow* entity); void func_802E10F4(Entity* entity); void func_802E114C(void); diff --git a/src/battle/area_dig/6DE060.c b/src/battle/area_dig/6DE0D0.c similarity index 100% rename from src/battle/area_dig/6DE060.c rename to src/battle/area_dig/6DE0D0.c diff --git a/src/battle/area_kmr_part_1/goomba.c b/src/battle/area_kmr_part_1/goomba.c index f59c60cbc2..06ed0220cc 100644 --- a/src/battle/area_kmr_part_1/goomba.c +++ b/src/battle/area_kmr_part_1/goomba.c @@ -292,7 +292,7 @@ Script goomba_dispatch = SCRIPT({ UseIdleAnimation(ActorID_SELF, 1); }); -f32 D_8021A194[] = { +f32 D_8021A194_432B34[] = { 0.000000f, 0.017452f, 0.034899f, 0.052336f, 0.069756f, 0.087156f, 0.104528f, 0.121869f, 0.139173f, 0.156434f, 0.173648f, 0.190809f, 0.207912f, 0.224951f, 0.241922f, 0.258819f, 0.275637f, 0.292372f, 0.309017f, 0.325568f, 0.342020f, 0.358368f, 0.374607f, 0.390731f, diff --git a/src/battle/battle.c b/src/battle/battle.c index 8b1514a456..40034dd54a 100644 --- a/src/battle/battle.c +++ b/src/battle/battle.c @@ -368,11 +368,11 @@ BattleArea gBattleAreas[0x30] = { }; // possibly a jump table -const s32 jtbl_8009A578_75978[] = { +const s32 jtbl_8009A578[] = { 0x80072F38, 0x80072F4C, 0x80072F64, 0x80072F90, 0x80072FA8, 0x00000000, }; // possibly a jump table -const s32 jtbl_8009A590_75990[] = { +const s32 jtbl_8009A590[] = { 0x8007301C, 0x80073070, 0x80073094, 0x800730CC, 0x800730F8, }; diff --git a/src/code_1000_len_60.c b/src/code_1000_len_60.c deleted file mode 100644 index 07cee9c00d..0000000000 --- a/src/code_1000_len_60.c +++ /dev/null @@ -1,3 +0,0 @@ -#include "common.h" - -INCLUDE_ASM(s32, "code_1000_len_60", entry_point); diff --git a/src/code_1060_len_310.c b/src/code_1060_len_310.c index 3d05508e2d..f57ac3f759 100644 --- a/src/code_1060_len_310.c +++ b/src/code_1060_len_310.c @@ -79,9 +79,9 @@ u32 func_80025D74(void* arg0, const unsigned char* str, s32 count) { return 1; } -extern const char D_80097D30[]; +extern const char D_80097D30[]; // "File:%s Line:%d %s \n\0\0\0" void func_80025F44(char* arg0, char* file, s32 line, char* arg3) { - func_80025CFC(&D_80097D30, file, line, arg0); + func_80025CFC(D_80097D30, file, line, arg0); PANIC(); } diff --git a/src/code_1370_len_7d0.c b/src/code_1370_len_7d0.c index cc625385a0..99129707d6 100644 --- a/src/code_1370_len_7d0.c +++ b/src/code_1370_len_7d0.c @@ -1,20 +1,28 @@ #include "common.h" #include "nu/nusys.h" -void gfxRetrace_Callback(void); +void gfxRetrace_Callback(s32); void gfxPreNMI_Callback(void); +void gfx_task_main(void); + +extern s32* D_80073E00; +extern s32 D_80073E04; +extern s16 D_80073E08; +extern s16 D_80073E0A; +extern s32* D_8009A680; #ifdef NON_MATCHING // Control flow issue w/ PANIC void boot_main(void) { OSViMode* viMode; if (osTvType == OS_TV_NTSC) { - viMode = &osViModeTable[56]; + viMode = &osViModeTable[OS_TV_NTSC]; } else if (osTvType == OS_TV_MPAL) { - viMode = &osViModeTable[57]; + viMode = &osViModeTable[OS_TV_MPAL]; } else { PANIC(); } + osViSetMode(viMode); osViSetSpecialFeatures(OS_VI_GAMMA_OFF | OS_VI_GAMMA_DITHER_OFF | OS_VI_DIVOT_ON | OS_VI_DITHER_FILTER_ON); @@ -41,8 +49,51 @@ void boot_main(void) { INCLUDE_ASM(void, "code_1370_len_7d0", boot_main, void); #endif -INCLUDE_ASM(void, "code_1370_len_7d0", gfxRetrace_Callback, void); +void gfxRetrace_Callback(s32 arg0) { + s32* temp_80073E00 = &D_80073E00; -INCLUDE_ASM(s32, "code_1370_len_7d0", gfx_task_main); + if (*temp_80073E00 != 0) { + if (*temp_80073E00 == 1) { + nuGfxTaskAllEndWait(); + if (arg0 == 0) { + void* fb = osViGetCurrentFramebuffer(); + s32* temp_8009A680 = &D_8009A680; -INCLUDE_ASM(void, "code_1370_len_7d0", gfxPreNMI_Callback, void); + temp_8009A680[2] = fb; + temp_8009A680[1] = fb; + temp_8009A680[0] = fb; + D_80073E04 = fb; + nuGfxSetCfb(temp_8009A680, 3); + osViSwapBuffer(*temp_8009A680); + *temp_80073E00 = 2; + } + } + if (D_80073E00 == 2) { + gfx_task_main(); + } + } else { + s16* temp_80073E0A = &D_80073E0A; + + *temp_80073E0A ^= 1; + if (*temp_80073E0A == 0) { + s16* temp_80073E08; + + step_game_loop(); + temp_80073E08 = &D_80073E08; + *temp_80073E08 = 1; + + if (arg0 < 3) { + *temp_80073E08 = 0; + gfx_task_background(); + gfx_draw_frame(); + } + } + } +} + +INCLUDE_ASM(void, "code_1370_len_7d0", gfx_task_main); + +void gfxPreNMI_Callback(void) { + D_80073E00 = 1; + nuContRmbForceStop(); +} diff --git a/src/code_1b40_len_20b0.c b/src/code_1b40_len_20b0.c index b27206c02c..d681036c56 100644 --- a/src/code_1b40_len_20b0.c +++ b/src/code_1b40_len_20b0.c @@ -31,7 +31,7 @@ extern int D_802EB3D0[]; extern u8 D_80074021; extern s32 D_8009A5D8; -INCLUDE_ASM(s32, "code_1b40_len_20b0", step_game_loop); +INCLUDE_ASM(void, "code_1b40_len_20b0", step_game_loop); INCLUDE_ASM(s32, "code_1b40_len_20b0", gfx_task_background); @@ -110,7 +110,42 @@ void load_engine_data(void) { INCLUDE_ASM(s32, "code_1b40_len_20b0", load_engine_data); #endif +//weird ordering issue +#ifdef NON_MATCHING +void func_80027088(s32 arg0) { + switch (arg0) { + case 0: + D_8009A5D8 = arg0; + *D_8009A650 &= ~0xF00; + resume_all_group(3); + break; + case 1: + D_8009A5D8 = arg0; + *D_8009A650 &= ~0xE00; + *D_8009A650 |= 0x100; + suspend_all_group(1); + break; + case 2: + D_8009A5D8 = arg0; + *D_8009A650 &= ~0xC00; + *D_8009A650 |= 0x300; + suspend_all_group(2); + break; + case 3: + D_8009A5D8 = arg0; + *D_8009A650 &= ~0x800; + *D_8009A650 |= 0x700; + suspend_all_group(2); + break; + case 4: + D_8009A5D8 = arg0; + *D_8009A650 |= 0xF00; + break; + } +} +#else INCLUDE_ASM(void, "code_1b40_len_20b0", func_80027088, s32 arg0); +#endif s32 func_80027190(void) { return D_8009A5D8; diff --git a/src/code_20ec0_len_5040.c b/src/code_20ec0_len_5040.c index 0608b8bbbb..5c31794c38 100644 --- a/src/code_20ec0_len_5040.c +++ b/src/code_20ec0_len_5040.c @@ -98,123 +98,3 @@ INCLUDE_ASM(s32, "code_20ec0_len_5040", func_80048170); INCLUDE_ASM(s32, "code_20ec0_len_5040", func_80048200); INCLUDE_ASM(s32, "code_20ec0_len_5040", func_8004824C); - -INCLUDE_ASM(s32, "code_20ec0_len_5040", spawn_drops); - -// The issues here are only in the beginning where max and min are flipped -#ifdef NON_MATCHING -s32 get_coin_drop_amount(Enemy* enemy) { - EncounterStatus* currentEncounter = &gCurrentEncounter; - s16* dropTables = enemy->dropTables; - s32 t1; - s32 t2; - s32 amt; - s32 diff; - s32 max; - s32 min; - - t1 = dropTables[89]; - t2 = dropTables[90]; - - min = t1; - max = t2; - - if (max < min) { - min = t2; - max = t1; - } - - diff = max - min; - - amt = min; - if ((min < 0) || (diff != 0)) { - amt = rand_int(diff) + min; - } - - if (amt < 0) { - amt = 0; - } - - if (is_ability_active(Ability_PAY_OFF)) { - amt += currentEncounter->damageTaken / 2; - } - - if (currentEncounter->merleeCoinBonus != 0) { - amt *= 3; - } - - if (is_ability_active(Ability_MONEY_MONEY)) { - amt *= 2; - } - - amt += currentEncounter->coinsEarned; - - if (enemy->flags & 0x840000) { - amt = 0; - } - - if (amt > 20) { - amt = 20; - } - - return amt; -} -#else -INCLUDE_ASM(s32, "code_20ec0_len_5040", get_coin_drop_amount); -#endif - -INCLUDE_ASM(s32, "code_20ec0_len_5040", func_80048E34); - -INCLUDE_ASM(s32, "code_20ec0_len_5040", func_80048F0C); - -s32 is_point_within_region(s32 shape, f32 pointX, f32 pointY, f32 centerX, f32 centerY, f32 sizeX, f32 sizeZ) { - f32 dist1; - f32 dist2; - - switch (shape) { - case 0: - dist1 = dist2D(pointX, pointY, centerX, centerY); - return (sizeX < dist1); - case 1: - dist1 = dist2D(pointX, 0, centerX, 0); - dist2 = dist2D(0, pointY, 0, centerY); - return ((sizeX < dist1) || (sizeZ < dist2)); - default: - return FALSE; - } -} - -INCLUDE_ASM(s32, "code_20ec0_len_5040", func_800490B4, s32 arg0, Enemy* arg1, f32 arg2, s32 arg3, s32 arg4); - -INCLUDE_ASM(s32, "code_20ec0_len_5040", func_800493EC); - -INCLUDE_ASM(s32, "code_20ec0_len_5040", func_800494C0, Npc* npc, s32 arg1, s32 arg2); - -INCLUDE_ASM(s32, "code_20ec0_len_5040", func_80049550); - -INCLUDE_ASM(s32, "code_20ec0_len_5040", func_800495A0); - -INCLUDE_ASM(s32, "code_20ec0_len_5040", func_800496B8); - -#define NAMESPACE base -#include "world/common/UnkNpcAIFunc1.inc.c" - -INCLUDE_ASM(s32, "code_20ec0_len_5040", func_80049C04); - -INCLUDE_ASM(s32, "code_20ec0_len_5040", func_80049E3C); - -INCLUDE_ASM(s32, "code_20ec0_len_5040", func_80049ECC); - -INCLUDE_ASM(s32, "code_20ec0_len_5040", func_80049F7C); - -INCLUDE_ASM(s32, "code_20ec0_len_5040", func_8004A124); - -INCLUDE_ASM(s32, "code_20ec0_len_5040", func_8004A3E8); - -INCLUDE_ASM(s32, "code_20ec0_len_5040", DoBasicAI, ScriptInstance* script, s32 isInitialCall); - -INCLUDE_ASM(s32, "code_20ec0_len_5040", func_8004A6F0); - -INCLUDE_ASM(s32, "code_20ec0_len_5040", func_8004A73C); - -INCLUDE_ASM(s32, "code_20ec0_len_5040", func_8004A784); diff --git a/src/code_23680.c b/src/code_23680.c new file mode 100644 index 0000000000..53d1891b3a --- /dev/null +++ b/src/code_23680.c @@ -0,0 +1,116 @@ +#include "common.h" +#include "map.h" + +INCLUDE_ASM(s32, "code_23680", spawn_drops); + +// The issues here are only in the beginning where max and min are flipped +#ifdef NON_MATCHING +s32 get_coin_drop_amount(Enemy* enemy) { + EncounterStatus* currentEncounter = &gCurrentEncounter; + s16* dropTables = enemy->dropTables; + s32 t1; + s32 t2; + s32 amt; + s32 diff; + s32 max; + s32 min; + + t1 = dropTables[89]; + t2 = dropTables[90]; + + min = t1; + max = t2; + + if (max < min) { + min = t2; + max = t1; + } + + diff = max - min; + + amt = min; + if ((min < 0) || (diff != 0)) { + amt = rand_int(diff) + min; + } + + if (amt < 0) { + amt = 0; + } + + if (is_ability_active(Ability_PAY_OFF)) { + amt += currentEncounter->damageTaken / 2; + } + + if (currentEncounter->merleeCoinBonus != 0) { + amt *= 3; + } + + if (is_ability_active(Ability_MONEY_MONEY)) { + amt *= 2; + } + + amt += currentEncounter->coinsEarned; + + if (enemy->flags & 0x840000) { + amt = 0; + } + + if (amt > 20) { + amt = 20; + } + + return amt; +} +#else +INCLUDE_ASM(s32, "code_23680", get_coin_drop_amount); +#endif + +INCLUDE_ASM(s32, "code_23680", func_80048E34); + +INCLUDE_ASM(s32, "code_23680", func_80048F0C); + +s32 is_point_within_region(s32 shape, f32 pointX, f32 pointY, f32 centerX, f32 centerY, f32 sizeX, f32 sizeZ) { + f32 dist1; + f32 dist2; + + switch (shape) { + case 0: + dist1 = dist2D(pointX, pointY, centerX, centerY); + return (sizeX < dist1); + case 1: + dist1 = dist2D(pointX, 0, centerX, 0); + dist2 = dist2D(0, pointY, 0, centerY); + return ((sizeX < dist1) || (sizeZ < dist2)); + default: + return FALSE; + } +} + +INCLUDE_ASM(s32, "code_23680", func_800490B4, s32 arg0, Enemy* arg1, f32 arg2, s32 arg3, s32 arg4); + +INCLUDE_ASM(s32, "code_23680", func_800493EC); + +INCLUDE_ASM(s32, "code_23680", func_800494C0, Npc* npc, s32 arg1, s32 arg2); + +INCLUDE_ASM(s32, "code_23680", func_80049550); + +INCLUDE_ASM(s32, "code_23680", func_800495A0); + +INCLUDE_ASM(s32, "code_23680", func_800496B8); + +#define NAMESPACE base +#include "world/common/UnkNpcAIFunc1.inc.c" + +INCLUDE_ASM(s32, "code_23680", func_80049C04); + +INCLUDE_ASM(s32, "code_23680", func_80049E3C); + +INCLUDE_ASM(s32, "code_23680", func_80049ECC); + +INCLUDE_ASM(s32, "code_23680", func_80049F7C); + +INCLUDE_ASM(s32, "code_23680", func_8004A124); + +INCLUDE_ASM(s32, "code_23680", func_8004A3E8); + +INCLUDE_ASM(s32, "code_23680", DoBasicAI, ScriptInstance* script, s32 isInitialCall); diff --git a/src/code_25AF0.c b/src/code_25AF0.c new file mode 100644 index 0000000000..4c9a8611cd --- /dev/null +++ b/src/code_25AF0.c @@ -0,0 +1,7 @@ +#include "common.h" + +INCLUDE_ASM(s32, "code_25AF0", func_8004A6F0); + +INCLUDE_ASM(s32, "code_25AF0", func_8004A73C); + +INCLUDE_ASM(s32, "code_25AF0", func_8004A784); diff --git a/src/code_28910_len_5090.c b/src/code_28910_len_5090.c index 0a5d163bca..6982347325 100644 --- a/src/code_28910_len_5090.c +++ b/src/code_28910_len_5090.c @@ -467,104 +467,3 @@ INCLUDE_ASM(s32, "code_28910_len_5090", func_80050888); INCLUDE_ASM(s32, "code_28910_len_5090", func_80050900); INCLUDE_ASM(s32, "code_28910_len_5090", func_80050970); - -INCLUDE_ASM(s32, "code_28910_len_5090", func_80050B90); - -s32 func_80050C30(u32 arg0) { - if (D_8009A628->unk_20 <= arg0) { - return 3; - } else { - return 0; - } -} - -void func_80050C54(s32 arg0, s8 arg1) { - D_8009A628->unk_21 = arg1; -} - -INCLUDE_ASM(s32, "code_28910_len_5090", func_80050C64); - -INCLUDE_ASM(s32, "code_28910_len_5090", func_80050CA0); - -INCLUDE_ASM(void, "code_28910_len_5090", func_80050D50, UnkAl1E4* arg0); - -INCLUDE_ASM(s32, "code_28910_len_5090", func_80050E18); - -INCLUDE_ASM(s32, "code_28910_len_5090", func_80050E84); - -INCLUDE_ASM(s32, "code_28910_len_5090", func_80050EF0); - -INCLUDE_ASM(s32, "code_28910_len_5090", func_80050F64); - -INCLUDE_ASM(s32, "code_28910_len_5090", func_80050FD0); - -INCLUDE_ASM(s32, "code_28910_len_5090", func_80051050); - -INCLUDE_ASM(s32, "code_28910_len_5090", func_800510A4); - -// Something wrong with the switch control flow -#ifdef NON_MATCHING -void func_800511BC(UnkAl834* arg0) { - u32 i; - s32 j; - - for (i = 0; i < ARRAY_COUNT(arg0->unk_7B4); i++) { - UnkAl8* temp = &arg0->unk_7B4[i]; - - if ((temp->unk_00.u8[3] == 1) && (arg0->unk_00->unk_1320[i].unk_45 != arg0->unk_22)) { - temp->unk_00.s32 = 0; - } - } - - for (j = 0; j < ARRAY_COUNT(arg0->unk_24); j++) { - UnkAl1E4* temp = &arg0->unk_24[j]; - - if (temp->unk_08 != 0) { - if (arg0->unk_21 != 0) { - func_80051334(arg0, temp); - } - - switch (temp->unk_24) { - case 3: - temp->unk_24 = 2; - func_800522A8(arg0, temp); - func_800521E8(arg0, temp); - break; - case 1: - temp->unk_24 = 0; - if (temp->unk_28 != 0) { - func_80050D50(temp); - } - func_8005232C(arg0, temp); - break; - case 0: - if (temp->unk_28 != 0) { - func_80050D50(temp); - } - if (temp->unk_25 == 2) { - func_800521E8(arg0, temp); - temp->unk_25 = 1; - } - func_80051434(arg0, temp); - break; - } - } - } - - arg0->unk_21 = 0; -} -#else -INCLUDE_ASM(void, "code_28910_len_5090", func_800511BC, UnkAl834* arg0); -#endif - -INCLUDE_ASM(void, "code_28910_len_5090", func_80051334, UnkAl834* arg0, UnkAl1E4* arg1); - -INCLUDE_ASM(void, "code_28910_len_5090", func_80051434, UnkAl834* arg0, UnkAl1E4* arg1); - -INCLUDE_ASM(s32, "code_28910_len_5090", func_800521D0); - -INCLUDE_ASM(void, "code_28910_len_5090", func_800521E8, UnkAl834* arg0, UnkAl1E4* arg1); - -INCLUDE_ASM(void, "code_28910_len_5090", func_800522A8, UnkAl834* arg0, UnkAl1E4* arg1); - -INCLUDE_ASM(void, "code_28910_len_5090", func_8005232C, UnkAl834* arg0, UnkAl1E4* arg1); diff --git a/src/code_2BF90.c b/src/code_2BF90.c new file mode 100644 index 0000000000..23fb162c1e --- /dev/null +++ b/src/code_2BF90.c @@ -0,0 +1,102 @@ +#include "audio.h" + +INCLUDE_ASM(s32, "code_2BF90", func_80050B90); + +s32 func_80050C30(u32 arg0) { + if (D_8009A628->unk_20 <= arg0) { + return 3; + } else { + return 0; + } +} + +void func_80050C54(s32 arg0, s8 arg1) { + D_8009A628->unk_21 = arg1; +} + +INCLUDE_ASM(s32, "code_2BF90", func_80050C64); + +INCLUDE_ASM(s32, "code_2BF90", func_80050CA0); + +INCLUDE_ASM(void, "code_2BF90", func_80050D50, UnkAl1E4* arg0); + +INCLUDE_ASM(s32, "code_2BF90", func_80050E18); + +INCLUDE_ASM(s32, "code_2BF90", func_80050E84); + +INCLUDE_ASM(s32, "code_2BF90", func_80050EF0); + +INCLUDE_ASM(s32, "code_2BF90", func_80050F64); + +INCLUDE_ASM(s32, "code_2BF90", func_80050FD0); + +INCLUDE_ASM(s32, "code_2BF90", func_80051050); + +INCLUDE_ASM(s32, "code_2BF90", func_800510A4); + +// Something wrong with the switch control flow +#ifdef NON_MATCHING +void func_800511BC(UnkAl834* arg0) { + u32 i; + s32 j; + + for (i = 0; i < ARRAY_COUNT(arg0->unk_7B4); i++) { + UnkAl8* temp = &arg0->unk_7B4[i]; + + if ((temp->unk_00.u8[3] == 1) && (arg0->unk_00->unk_1320[i].unk_45 != arg0->unk_22)) { + temp->unk_00.s32 = 0; + } + } + + for (j = 0; j < ARRAY_COUNT(arg0->unk_24); j++) { + UnkAl1E4* temp = &arg0->unk_24[j]; + + if (temp->unk_08 != 0) { + if (arg0->unk_21 != 0) { + func_80051334(arg0, temp); + } + + switch (temp->unk_24) { + case 3: + temp->unk_24 = 2; + func_800522A8(arg0, temp); + func_800521E8(arg0, temp); + break; + case 1: + temp->unk_24 = 0; + if (temp->unk_28 != 0) { + func_80050D50(temp); + } + func_8005232C(arg0, temp); + break; + case 0: + if (temp->unk_28 != 0) { + func_80050D50(temp); + } + if (temp->unk_25 == 2) { + func_800521E8(arg0, temp); + temp->unk_25 = 1; + } + func_80051434(arg0, temp); + break; + } + } + } + + arg0->unk_21 = 0; +} +#else +INCLUDE_ASM(void, "code_2BF90", func_800511BC, UnkAl834* arg0); +#endif + +INCLUDE_ASM(void, "code_2BF90", func_80051334, UnkAl834* arg0, UnkAl1E4* arg1); + +INCLUDE_ASM(void, "code_2BF90", func_80051434, UnkAl834* arg0, UnkAl1E4* arg1); + +INCLUDE_ASM(s32, "code_2BF90", func_800521D0); + +INCLUDE_ASM(void, "code_2BF90", func_800521E8, UnkAl834* arg0, UnkAl1E4* arg1); + +INCLUDE_ASM(void, "code_2BF90", func_800522A8, UnkAl834* arg0, UnkAl1E4* arg1); + +INCLUDE_ASM(void, "code_2BF90", func_8005232C, UnkAl834* arg0, UnkAl1E4* arg1); diff --git a/src/code_303c0_len_3e10.c b/src/code_303c0_len_3e10.c index b02a5d000b..7d1831a2b4 100644 --- a/src/code_303c0_len_3e10.c +++ b/src/code_303c0_len_3e10.c @@ -1,461 +1,4 @@ #include "common.h" #include "audio.h" -s32 D_80078DB0 = 0; -u16 D_80078DB4 = 0; -u16 D_80078DB6 = 0; - -// chunks of data, not sure what -s32 D_80078DB8[] = { 0x025E0350, 0x04640554, 0x00000000, }; -s32 D_80078DC4[] = { 0x0264036E, 0x045A0000, }; -s32 D_80078DCC[] = { 0x025F0000, }; -s32 D_80078DD0[] = { 0x0546065A, 0x075A0864, 0x00000000, }; -s32 D_80078DDC[] = { 0x05000600, 0x07000800, 0x09000A00, 0x0B000C00, 0x0D000E00, 0x0F001000, 0x00000000, }; -s32 D_80078DF8[] = { 0x05640666, 0x0758086E, 0x09000A00, 0x0B000C00, 0x0D000E00, 0x0F001000, 0x00000000, }; -s32 D_80078E14[] = { 0x05640666, 0x0758086E, 0x097E0A58, 0x0B640C00, 0x0D000E00, 0x0F001000, 0x00000000, }; -s32 D_80078E30[] = { 0x05640666, 0x0758086E, 0x097E0A58, 0x0B640C64, 0x0D6A0E64, 0x0F64106E, 0x00000000, 0x00000000, }; - INCLUDE_ASM(void, "code_303c0_len_3e10", al_LoadBKHeaders, UnkAl19E0* arg0, ALHeap* arg1); - -void func_80055050(void) { - D_80078DB4 = 1; - D_80078DB0 = 0; -} - -INCLUDE_ASM(void, "code_303c0_len_3e10", func_80055068, u32 arg0); - -void func_80055110(UnkAlA9C* arg0) { - s32 i; - - for (i = 0; i < 8; i++) { - arg0->unk_238[i] = 0; - } - - arg0->unk_25B = 0; - arg0->unk_25A = 0; - arg0->unk_259 = 0; - arg0->unk_258 = 0; -} - -INCLUDE_ASM(s32, "code_303c0_len_3e10", func_8005513C); - -void func_800551E0(s32 arg0, u8 arg1, s8 arg2) { - UnkAl6CC* sym = D_8009A640; - s16 a1temp = arg1 * 256; - - if (a1temp != 0) { - a1temp |= 0xFF; - } - - if (arg2 < 0) { - arg2 = 0x7F; - } - - func_8004B6D8(sym, arg0, a1temp, 0, arg2); -} - -void func_80055240(s32 arg0, u8 arg1, s8 arg2, s16 arg3) { - UnkAl6CC* sym = D_8009A640; - s16 a1temp = arg1 * 256; - - if (a1temp != 0) { - a1temp |= 0xFF; - } - - if (arg2 < 0) { - arg2 = 0x7F; - } - - if (arg3 > 0x960) { - arg3 = 0x960; - } else if (arg3 < -0x960) { - arg3 = -0x960; - } - - func_8004B6D8(sym, arg0, a1temp, arg3, arg2); -} - -void func_800552D0(s32 arg0, u8 arg1, s8 arg2) { - UnkAl6CC* sym = D_8009A640; - s16 a1temp = arg1 * 256; - - if (a1temp != 0) { - a1temp |= 0xFF; - } - - if (arg2 < 0) { - arg2 = 0x7F; - } - - func_8004B6D8(sym, arg0 | 0x1000, a1temp, 0, arg2); -} - -void func_80055330(s32 arg0, u8 arg1, s8 arg2, s16 arg3) { - UnkAl6CC* sym = D_8009A640; - s16 a1temp = arg1 * 256; - - if (a1temp != 0) { - a1temp |= 0xFF; - } - - if (arg2 < 0) { - arg2 = 0x7F; - } - - if (arg3 > 0x960) { - arg3 = 0x960; - } else if (arg3 < -0x960) { - arg3 = -0x960; - } - - func_8004B6D8(sym, arg0 | 0x1000, a1temp, arg3, arg2); -} - -void func_800553C0(s32 arg0) { - func_8004B6D8(D_8009A640, arg0 | 0x8000, 0, 0, 0); -} - -void func_800553F4(void) { - D_8009A640->unk_168 = 1; -} - -void func_80055408(s32 arg0, s16 arg1, s16 arg2, s32 arg3) { - func_8004B6D8(D_8009A640, arg0, arg1, arg2, arg3); -} - -s32 func_80055448(s32 arg0) { - return func_80053F80(arg0); -} - -s32 func_80055464(s32 arg0, s32 arg1) { - if (func_80050C30(arg0) == 0) { - func_80050CA0(arg0, arg1); - } -} - -s32 func_800554A4(s32 arg0) { - s32 ret = func_80050C30(arg0); - - if (ret == 0) { - func_80050EF0(arg0); - } - - return ret; -} - -s32 func_800554E8(s32 arg0, s32 arg1) { - s32 ret = func_80050C30(arg0); - - if (ret == 0) { - func_80050F64(arg0, arg1); - } - - return ret; -} - -s32 func_8005553C(s32 arg0, s32 arg1) { - s32 ret = func_80050C30(arg0); - - if (ret == 0) { - func_80050E18(arg0, arg1); - } - - return ret; -} - -s32 func_80055590(s32 arg0, s32 arg1) { - s32 ret = func_80050C30(arg0); - - if (ret == 0) { - func_80050E84(arg0, arg1); - } - - return ret; -} - -void func_800555E4(s32 arg0) { - if (func_80050C30(arg0) == 0) { - func_80051050(arg0); - } -} - -s32 func_80055618(s32 arg0, s32 arg1) { - s32 ret = func_80050C30(arg0); - - if (ret == 0) { - func_80050C54(arg0, arg1); - } - - return ret; -} - -s32 func_8005566C(s32 arg0, s32 arg1, s32 arg2) { - s32 ret = func_80050C30(arg0); - - if (ret == 0) { - func_80050FD0(arg0, arg1, arg2); - } - - return ret; -} - -s32 func_800556D0(s32 arg0) { - s32 ret = func_80050C30(arg0); - - if (ret == 0) { - func_80050C64(arg0, 1); - } - - return ret; -} - -s32 func_80055718(s32 arg0) { - s32 ret = func_80050C30(arg0); - - if (ret == 0) { - func_80050C64(arg0, 0); - } - - return ret; -} - -void func_80055760(s32 arg0) { - u32 i; - s32 lim = 4; - - D_80078DB6 = 0xFF; - - for (i = 0; i < lim; i++) { - if (func_80055464(i, 0) != 0) { - return; - } - } - - func_80055848(arg0); -} - -s32 func_800557CC(s32 arg0) { - u32 i; - s32 lim = 4; - s32 phi_v1; - - for (i = 0; i < lim; i++) { - if (i == D_80078DB6) { - phi_v1 = func_800554E8(i, arg0); - } else { - phi_v1 = func_800554A4(i); - } - - if (phi_v1 != 0) { - break; - } - } - return phi_v1; -} - -s32 func_80055848(s32 arg0) { - s32 lim = 4; - s32 phi_v1 = 0; - - if (arg0 != D_80078DB6) { - u32 i; - - for (i = 0; i < lim; i++) { - if (i == arg0) { - phi_v1 = func_80055718(arg0); - } else { - phi_v1 = func_800556D0(i); - } - - if (phi_v1 != 0) { - break; - } - } - - if (phi_v1 == 0) { - D_80078DB6 = arg0; - } - } - - return phi_v1; -} - -INCLUDE_ASM(s32, "code_303c0_len_3e10", func_800558D4); - -INCLUDE_ASM(s32, "code_303c0_len_3e10", func_8005591C); - -INCLUDE_ASM(s32, "code_303c0_len_3e10", func_80055970); - -s32 func_800559C4(UNK_TYPE arg0) { - return func_8004DA0C(arg0); -} - -void func_800559E0(void) { - func_8004DA74(); -} - -void func_800559FC(void) { - func_8004DAE0(); -} - -INCLUDE_ASM(s32, "code_303c0_len_3e10", func_80055A18); - -INCLUDE_ASM(s32, "code_303c0_len_3e10", func_80055A6C); - -INCLUDE_ASM(s32, "code_303c0_len_3e10", func_80055ABC); - -INCLUDE_ASM(s32, "code_303c0_len_3e10", func_80055AF0); - -INCLUDE_ASM(s32, "code_303c0_len_3e10", func_80055B28); - -INCLUDE_ASM(s32, "code_303c0_len_3e10", func_80055B80); - -INCLUDE_ASM(s32, "code_303c0_len_3e10", func_80055BB8); - -INCLUDE_ASM(s32, "code_303c0_len_3e10", func_80055BF0); - -INCLUDE_ASM(s32, "code_303c0_len_3e10", func_80055C2C); - -INCLUDE_ASM(s32, "code_303c0_len_3e10", func_80055C64); - -INCLUDE_ASM(s32, "code_303c0_len_3e10", func_80055C94); - -INCLUDE_ASM(s32, "code_303c0_len_3e10", func_80055CC4); - -INCLUDE_ASM(s32, "code_303c0_len_3e10", func_80055CE8); - -INCLUDE_ASM(s32, "code_303c0_len_3e10", func_80055D38); - -INCLUDE_ASM(s32, "code_303c0_len_3e10", func_80055D8C); - -INCLUDE_ASM(s32, "code_303c0_len_3e10", func_80055DDC); - -INCLUDE_ASM(s32, "code_303c0_len_3e10", func_80055E48); - -// needs rodata -#ifdef NON_MATCHING -s32* func_80055EB4(s32 arg0) { - s32* ret = NULL; - - switch (arg0) { - case 0: - ret = &D_80078DB8; - break; - case 1: - ret = &D_80078DC4; - break; - case 2: - ret = &D_80078DCC; - break; - case 3: - ret = &D_80078DD0; - break; - case 4: - ret = &D_80078DDC; - break; - case 5: - ret = &D_80078DF8; - break; - case 6: - ret = &D_80078E14; - break; - case 7: - ret = &D_80078E30; - break; - } - - return ret; -} -#else -INCLUDE_ASM(s32, "code_303c0_len_3e10", func_80055EB4); -#endif - -s32 func_80055F58(s32 arg0, u32 arg1, u32 arg2) { - s32* subroutine_arg4; - s32* subroutine_arg5; - s32 temp_s2 = func_80055CE8(arg0, &subroutine_arg4, &subroutine_arg5); - - if (temp_s2 == 0) { - if (arg2 > 0x7F) { - arg2 = 0x7F; - } - if (arg1 > 0xF) { - arg1 = 0xF; - } - func_8005083C(subroutine_arg5, arg1, 0x60, (u8)arg2); // todo remove cast when func is defined - } - return temp_s2; -} - -s32 func_80055FD4(s32 arg0, s32 arg1) { - return func_80055F58(arg0, arg1, 0); -} - -s32 func_80055FF0(s32 arg0, s32 arg1) { - return func_80055F58(arg0, arg1, 0x3F); -} - -s32 func_8005600C(s32 arg0, s32 arg1) { - return func_80055F58(arg0, arg1, 0x7F); -} - -s32 func_80056028(s32 arg0, u8 arg1) { - return func_800506C8(arg0, arg1); -} - -s32 func_80056044(s32 arg0, u8 arg1) { - return func_800506C8(arg0, arg1 | 0x57000000); -} - -s32 func_80056068(s32 arg0, u8 arg1) { - return func_800506C8(arg0, arg1 | 0x7F000000); -} - -void func_8005608C(s32* arg0, s32* arg1) { - UnkAl19E0* temp_v0 = D_8009A5C0; - - *arg0 = temp_v0->unk_94; - *arg1 = temp_v0->unk_98; -} - -void func_800560A8(void) { - D_8009A5C0->unk_9C = 1; -} - -INCLUDE_ASM(s32, "code_303c0_len_3e10", func_800560BC); - -INCLUDE_ASM(void, "code_303c0_len_3e10", func_8005610C, void); - -void func_80056144(UnkFuncAl arg0, s32 arg1) { - D_8009A5C0->unk_A4[arg1] = arg0; -} - -void func_8005615C(void) { - func_80056D5C(1); - func_80054DA8(0); -} - -void func_80056180(void) { - func_80056D5C(0); - func_80054DA8(1); -} - -void func_800561A4(s32 arg0) { - func_80054CE0(1, arg0); -} - -void func_800561C4(s32 arg0) { - func_80054CE0(16, arg0); -} - -void func_800561E4(s32 arg0) { - func_80054D74(16, arg0); -} - -void func_80056204(void) { - func_8004BA54(D_8009A640, 0); -} - -void func_80056228(void) { - func_8004BA54(D_8009A640, 1); -} diff --git a/src/code_30450.c b/src/code_30450.c new file mode 100644 index 0000000000..baa5ef2105 --- /dev/null +++ b/src/code_30450.c @@ -0,0 +1,459 @@ +#include "common.h" +#include "audio.h" + +s32 D_80078DB0 = 0; +u16 D_80078DB4 = 0; +u16 D_80078DB6 = 0; + +// chunks of data, not sure what +s32 D_80078DB8[] = { 0x025E0350, 0x04640554, 0x00000000, }; +s32 D_80078DC4[] = { 0x0264036E, 0x045A0000, }; +s32 D_80078DCC[] = { 0x025F0000, }; +s32 D_80078DD0[] = { 0x0546065A, 0x075A0864, 0x00000000, }; +s32 D_80078DDC[] = { 0x05000600, 0x07000800, 0x09000A00, 0x0B000C00, 0x0D000E00, 0x0F001000, 0x00000000, }; +s32 D_80078DF8[] = { 0x05640666, 0x0758086E, 0x09000A00, 0x0B000C00, 0x0D000E00, 0x0F001000, 0x00000000, }; +s32 D_80078E14[] = { 0x05640666, 0x0758086E, 0x097E0A58, 0x0B640C00, 0x0D000E00, 0x0F001000, 0x00000000, }; +s32 D_80078E30[] = { 0x05640666, 0x0758086E, 0x097E0A58, 0x0B640C64, 0x0D6A0E64, 0x0F64106E, 0x00000000, 0x00000000, }; + +void func_80055050(void) { + D_80078DB4 = 1; + D_80078DB0 = 0; +} + +INCLUDE_ASM(void, "code_30450", func_80055068, u32 arg0); + +void func_80055110(UnkAlA9C* arg0) { + s32 i; + + for (i = 0; i < 8; i++) { + arg0->unk_238[i] = 0; + } + + arg0->unk_25B = 0; + arg0->unk_25A = 0; + arg0->unk_259 = 0; + arg0->unk_258 = 0; +} + +INCLUDE_ASM(s32, "code_30450", func_8005513C); + +void func_800551E0(s32 arg0, u8 arg1, s8 arg2) { + UnkAl6CC* sym = D_8009A640; + s16 a1temp = arg1 * 256; + + if (a1temp != 0) { + a1temp |= 0xFF; + } + + if (arg2 < 0) { + arg2 = 0x7F; + } + + func_8004B6D8(sym, arg0, a1temp, 0, arg2); +} + +void func_80055240(s32 arg0, u8 arg1, s8 arg2, s16 arg3) { + UnkAl6CC* sym = D_8009A640; + s16 a1temp = arg1 * 256; + + if (a1temp != 0) { + a1temp |= 0xFF; + } + + if (arg2 < 0) { + arg2 = 0x7F; + } + + if (arg3 > 0x960) { + arg3 = 0x960; + } else if (arg3 < -0x960) { + arg3 = -0x960; + } + + func_8004B6D8(sym, arg0, a1temp, arg3, arg2); +} + +void func_800552D0(s32 arg0, u8 arg1, s8 arg2) { + UnkAl6CC* sym = D_8009A640; + s16 a1temp = arg1 * 256; + + if (a1temp != 0) { + a1temp |= 0xFF; + } + + if (arg2 < 0) { + arg2 = 0x7F; + } + + func_8004B6D8(sym, arg0 | 0x1000, a1temp, 0, arg2); +} + +void func_80055330(s32 arg0, u8 arg1, s8 arg2, s16 arg3) { + UnkAl6CC* sym = D_8009A640; + s16 a1temp = arg1 * 256; + + if (a1temp != 0) { + a1temp |= 0xFF; + } + + if (arg2 < 0) { + arg2 = 0x7F; + } + + if (arg3 > 0x960) { + arg3 = 0x960; + } else if (arg3 < -0x960) { + arg3 = -0x960; + } + + func_8004B6D8(sym, arg0 | 0x1000, a1temp, arg3, arg2); +} + +void func_800553C0(s32 arg0) { + func_8004B6D8(D_8009A640, arg0 | 0x8000, 0, 0, 0); +} + +void func_800553F4(void) { + D_8009A640->unk_168 = 1; +} + +void func_80055408(s32 arg0, s16 arg1, s16 arg2, s32 arg3) { + func_8004B6D8(D_8009A640, arg0, arg1, arg2, arg3); +} + +s32 func_80055448(s32 arg0) { + return func_80053F80(arg0); +} + +s32 func_80055464(s32 arg0, s32 arg1) { + if (func_80050C30(arg0) == 0) { + func_80050CA0(arg0, arg1); + } +} + +s32 func_800554A4(s32 arg0) { + s32 ret = func_80050C30(arg0); + + if (ret == 0) { + func_80050EF0(arg0); + } + + return ret; +} + +s32 func_800554E8(s32 arg0, s32 arg1) { + s32 ret = func_80050C30(arg0); + + if (ret == 0) { + func_80050F64(arg0, arg1); + } + + return ret; +} + +s32 func_8005553C(s32 arg0, s32 arg1) { + s32 ret = func_80050C30(arg0); + + if (ret == 0) { + func_80050E18(arg0, arg1); + } + + return ret; +} + +s32 func_80055590(s32 arg0, s32 arg1) { + s32 ret = func_80050C30(arg0); + + if (ret == 0) { + func_80050E84(arg0, arg1); + } + + return ret; +} + +void func_800555E4(s32 arg0) { + if (func_80050C30(arg0) == 0) { + func_80051050(arg0); + } +} + +s32 func_80055618(s32 arg0, s32 arg1) { + s32 ret = func_80050C30(arg0); + + if (ret == 0) { + func_80050C54(arg0, arg1); + } + + return ret; +} + +s32 func_8005566C(s32 arg0, s32 arg1, s32 arg2) { + s32 ret = func_80050C30(arg0); + + if (ret == 0) { + func_80050FD0(arg0, arg1, arg2); + } + + return ret; +} + +s32 func_800556D0(s32 arg0) { + s32 ret = func_80050C30(arg0); + + if (ret == 0) { + func_80050C64(arg0, 1); + } + + return ret; +} + +s32 func_80055718(s32 arg0) { + s32 ret = func_80050C30(arg0); + + if (ret == 0) { + func_80050C64(arg0, 0); + } + + return ret; +} + +void func_80055760(s32 arg0) { + u32 i; + s32 lim = 4; + + D_80078DB6 = 0xFF; + + for (i = 0; i < lim; i++) { + if (func_80055464(i, 0) != 0) { + return; + } + } + + func_80055848(arg0); +} + +s32 func_800557CC(s32 arg0) { + u32 i; + s32 lim = 4; + s32 phi_v1; + + for (i = 0; i < lim; i++) { + if (i == D_80078DB6) { + phi_v1 = func_800554E8(i, arg0); + } else { + phi_v1 = func_800554A4(i); + } + + if (phi_v1 != 0) { + break; + } + } + return phi_v1; +} + +s32 func_80055848(s32 arg0) { + s32 lim = 4; + s32 phi_v1 = 0; + + if (arg0 != D_80078DB6) { + u32 i; + + for (i = 0; i < lim; i++) { + if (i == arg0) { + phi_v1 = func_80055718(arg0); + } else { + phi_v1 = func_800556D0(i); + } + + if (phi_v1 != 0) { + break; + } + } + + if (phi_v1 == 0) { + D_80078DB6 = arg0; + } + } + + return phi_v1; +} + +INCLUDE_ASM(s32, "code_30450", func_800558D4); + +INCLUDE_ASM(s32, "code_30450", func_8005591C); + +INCLUDE_ASM(s32, "code_30450", func_80055970); + +s32 func_800559C4(UNK_TYPE arg0) { + return func_8004DA0C(arg0); +} + +void func_800559E0(void) { + func_8004DA74(); +} + +void func_800559FC(void) { + func_8004DAE0(); +} + +INCLUDE_ASM(s32, "code_30450", func_80055A18); + +INCLUDE_ASM(s32, "code_30450", func_80055A6C); + +INCLUDE_ASM(s32, "code_30450", func_80055ABC); + +INCLUDE_ASM(s32, "code_30450", func_80055AF0); + +INCLUDE_ASM(s32, "code_30450", func_80055B28); + +INCLUDE_ASM(s32, "code_30450", func_80055B80); + +INCLUDE_ASM(s32, "code_30450", func_80055BB8); + +INCLUDE_ASM(s32, "code_30450", func_80055BF0); + +INCLUDE_ASM(s32, "code_30450", func_80055C2C); + +INCLUDE_ASM(s32, "code_30450", func_80055C64); + +INCLUDE_ASM(s32, "code_30450", func_80055C94); + +INCLUDE_ASM(s32, "code_30450", func_80055CC4); + +INCLUDE_ASM(s32, "code_30450", func_80055CE8); + +INCLUDE_ASM(s32, "code_30450", func_80055D38); + +INCLUDE_ASM(s32, "code_30450", func_80055D8C); + +INCLUDE_ASM(s32, "code_30450", func_80055DDC); + +INCLUDE_ASM(s32, "code_30450", func_80055E48); + +// needs rodata +#ifdef NON_MATCHING +s32* func_80055EB4(s32 arg0) { + s32* ret = NULL; + + switch (arg0) { + case 0: + ret = &D_80078DB8; + break; + case 1: + ret = &D_80078DC4; + break; + case 2: + ret = &D_80078DCC; + break; + case 3: + ret = &D_80078DD0; + break; + case 4: + ret = &D_80078DDC; + break; + case 5: + ret = &D_80078DF8; + break; + case 6: + ret = &D_80078E14; + break; + case 7: + ret = &D_80078E30; + break; + } + + return ret; +} +#else +INCLUDE_ASM(s32, "code_30450", func_80055EB4); +#endif + +s32 func_80055F58(s32 arg0, u32 arg1, u32 arg2) { + s32* subroutine_arg4; + s32* subroutine_arg5; + s32 temp_s2 = func_80055CE8(arg0, &subroutine_arg4, &subroutine_arg5); + + if (temp_s2 == 0) { + if (arg2 > 0x7F) { + arg2 = 0x7F; + } + if (arg1 > 0xF) { + arg1 = 0xF; + } + func_8005083C(subroutine_arg5, arg1, 0x60, (u8)arg2); // todo remove cast when func is defined + } + return temp_s2; +} + +s32 func_80055FD4(s32 arg0, s32 arg1) { + return func_80055F58(arg0, arg1, 0); +} + +s32 func_80055FF0(s32 arg0, s32 arg1) { + return func_80055F58(arg0, arg1, 0x3F); +} + +s32 func_8005600C(s32 arg0, s32 arg1) { + return func_80055F58(arg0, arg1, 0x7F); +} + +s32 func_80056028(s32 arg0, u8 arg1) { + return func_800506C8(arg0, arg1); +} + +s32 func_80056044(s32 arg0, u8 arg1) { + return func_800506C8(arg0, arg1 | 0x57000000); +} + +s32 func_80056068(s32 arg0, u8 arg1) { + return func_800506C8(arg0, arg1 | 0x7F000000); +} + +void func_8005608C(s32* arg0, s32* arg1) { + UnkAl19E0* temp_v0 = D_8009A5C0; + + *arg0 = temp_v0->unk_94; + *arg1 = temp_v0->unk_98; +} + +void func_800560A8(void) { + D_8009A5C0->unk_9C = 1; +} + +INCLUDE_ASM(s32, "code_30450", func_800560BC); + +INCLUDE_ASM(void, "code_30450", func_8005610C, void); + +void func_80056144(UnkFuncAl arg0, s32 arg1) { + D_8009A5C0->unk_A4[arg1] = arg0; +} + +void func_8005615C(void) { + func_80056D5C(1); + func_80054DA8(0); +} + +void func_80056180(void) { + func_80056D5C(0); + func_80054DA8(1); +} + +void func_800561A4(s32 arg0) { + func_80054CE0(1, arg0); +} + +void func_800561C4(s32 arg0) { + func_80054CE0(16, arg0); +} + +void func_800561E4(s32 arg0) { + func_80054D74(16, arg0); +} + +void func_80056204(void) { + func_8004BA54(D_8009A640, 0); +} + +void func_80056228(void) { + func_8004BA54(D_8009A640, 1); +} diff --git a/src/code_31650.c b/src/code_31650.c index 7a03bc9b01..b549618c5f 100644 --- a/src/code_31650.c +++ b/src/code_31650.c @@ -233,9 +233,3 @@ void func_80057FD8(u8* src, u8* dst, s32 size) { } INCLUDE_ASM(s32, "code_31650", func_80058004); - -INCLUDE_ASM(s32, "code_31650", func_80058050); - -INCLUDE_ASM(s32, "code_31650", func_80058B20); - -INCLUDE_ASM(s32, "code_31650", func_80058C6C); diff --git a/src/code_33450.c b/src/code_33450.c new file mode 100644 index 0000000000..1fe6d2f79e --- /dev/null +++ b/src/code_33450.c @@ -0,0 +1,7 @@ +#include "common.h" + +INCLUDE_ASM(s32, "code_33450", func_80058050); + +INCLUDE_ASM(s32, "code_33450", func_80058B20); + +INCLUDE_ASM(s32, "code_33450", func_80058C6C); diff --git a/src/code_3CF80.c b/src/code_3CF80.c new file mode 100644 index 0000000000..54468a7e3f --- /dev/null +++ b/src/code_3CF80.c @@ -0,0 +1,7 @@ +#include "common.h" + +INCLUDE_ASM(s32, "code_3CF80", osContInit, OSMesgQueue* arg0, u8* arg1, OSContStatus* arg2); + +INCLUDE_ASM(s32, "code_3CF80", osContGetInitData); + +INCLUDE_ASM(s32, "code_3CF80", osPackRequestData); diff --git a/src/code_3FEA0.c b/src/code_3FEA0.c new file mode 100644 index 0000000000..9369d74276 --- /dev/null +++ b/src/code_3FEA0.c @@ -0,0 +1,9 @@ +#include "common.h" + +INCLUDE_ASM(s32, "code_3FEA0", _Printf); + +INCLUDE_ASM(s32, "code_3FEA0", _Putfld); + +INCLUDE_ASM(int, "code_3FEA0", sprintf, char* s, const char* fmt, ...); + +INCLUDE_ASM(s32, "code_3FEA0", proutSprintf); diff --git a/src/code_40E10.c b/src/code_40E10.c new file mode 100644 index 0000000000..ab0648719c --- /dev/null +++ b/src/code_40E10.c @@ -0,0 +1,5 @@ +#include "common.h" + +INCLUDE_ASM(void, "code_40E10", osSpTaskLoad, OSTask* tp); + +INCLUDE_ASM(void, "code_40E10", osSpTaskStartGo, OSTask* tp); diff --git a/src/code_41880.c b/src/code_41880.c new file mode 100644 index 0000000000..5c2fb083e5 --- /dev/null +++ b/src/code_41880.c @@ -0,0 +1,9 @@ +#include "common.h" + +INCLUDE_ASM(s32, "code_41880", osTimerServicesInit); + +INCLUDE_ASM(s32, "code_41880", osTimerInterrupt); + +INCLUDE_ASM(s32, "code_41880", osSetTimerIntr); + +INCLUDE_ASM(s32, "code_41880", osInsertTimer); diff --git a/src/code_42e0_len_1f60.c b/src/code_42e0_len_1f60.c index e745399244..ebd5af4e9f 100644 --- a/src/code_42e0_len_1f60.c +++ b/src/code_42e0_len_1f60.c @@ -191,7 +191,23 @@ s32 func_800297D4(s32 romStart, s32 romEnd, void* vramDest) { return length; } -INCLUDE_ASM(void, "code_42e0_len_1f60", func_80029860, s32 romStart, s32 vramDest, s32 length); +void func_80029860(s32 dramAddr, s32 devAddr, s32 size) { + OSIoMesg osIoMesg; + OSMesg osMesg; + OSMesgQueue osMesgQueue; + + osWritebackDCache(dramAddr, size); + osCreateMesgQueue(&osMesgQueue, &osMesg, 1); + + osIoMesg.hdr.pri = 0; + osIoMesg.hdr.retQueue = &osMesgQueue; + osIoMesg.dramAddr = dramAddr; + osIoMesg.devAddr = devAddr; + osIoMesg.size = size; + + osEPiStartDma(carthandle, &osIoMesg, 1); + osRecvMesg(&osMesgQueue, &osMesg, 1); +} s32 _advance_rng(void) { s32* rngVal = &gRandSeed; @@ -229,7 +245,31 @@ s32 func_80029994(s32 arg0) { return result; } +// Issue with the negation at the beginning +#ifdef NON_MATCHING +s32 rand_int(s32 arg0) { + s32 ret; + + if (arg0 < 0) { + arg0 = -arg0; + } + + ret = 0; + if (arg0 != 0) { + if (arg0 == 1) { + return (func_80029994(1000) < 501) ^ 1; + } + if (arg0 != 100) { + return func_80029994(arg0); + } + ret = func_80029994(1009) / 10; + } + + return ret; +} +#else INCLUDE_ASM(s32, "code_42e0_len_1f60", rand_int, s32 arg0); +#endif f32 signF(f32 val) { f32 sign; @@ -348,8 +388,31 @@ f32 cos_deg(f32 angle) { INCLUDE_ASM(f32, "code_42e0_len_1f60", update_lerp, Easing easing, f32 start, f32 end, s32 elapsed, s32 duration); -INCLUDE_ASM(s32, "code_42e0_len_1f60", func_8002A904); +//void func_8002A904(u8 arg0, u8 arg1, u8 arg2, u8 arg3, u16 arg4, u16 arg5, u16 arg6, u16 arg7); +INCLUDE_ASM(void, "code_42e0_len_1f60", func_8002A904, u8 arg0, u8 arg1, u8 arg2, u8 arg3, u16 arg4, u16 arg5, u16 arg6, u16 arg7); INCLUDE_ASM(s32, "code_42e0_len_1f60", func_8002AAC4); +// void func_8002AAC4(s16 arg0, s16 arg1, s16 arg2, s16 arg3, u16 arg4, u16 arg5, u16 arg6, u16 arg7) { +// s16 phi_t0; +// s16 phi_t1; +// s16 phi_t2; +// s16 phi_t3; + +// phi_t0 = arg0; +// phi_t2 = arg2; +// if (arg2 < arg0) { +// phi_t0 = arg2; +// phi_t2 = arg0; +// } + +// phi_t1 = arg1; +// phi_t3 = arg3; +// if (arg3 < arg1) { +// phi_t1 = arg3; +// phi_t3 = arg1; +// } + +// func_8002A904(arg4, arg5, arg6, arg7, phi_t0, phi_t1, phi_t2, phi_t3); +// } INCLUDE_ASM(s32, "code_42e0_len_1f60", func_8002AB5C); diff --git a/src/code_43590.c b/src/code_43590.c new file mode 100644 index 0000000000..f5cf5e4732 --- /dev/null +++ b/src/code_43590.c @@ -0,0 +1,6 @@ +#include "common.h" + +INCLUDE_ASM(s32, "code_43590", osPfsAllocateFile, OSPfs* pfs, u16 unk1, u32 unk2, u8* unk3, u8* unk4, + int unk5, s32* unk6); + +INCLUDE_ASM(s32, "code_43590", osPfsDeclearPage); diff --git a/src/code_44490.c b/src/code_44490.c new file mode 100644 index 0000000000..d20d0dad30 --- /dev/null +++ b/src/code_44490.c @@ -0,0 +1,7 @@ +#include "common.h" + +INCLUDE_ASM(s32, "code_44490", osPfsNumFiles, OSPfs* pfs, s32* unk1, s32* unk2); + +INCLUDE_ASM(s32, "code_44490", osPfsInitPak, OSMesgQueue* queue, OSPfs* pfs, int unk1); + +INCLUDE_ASM(s32, "code_44490", osPfsCheckRamArea); diff --git a/src/code_8560.c b/src/code_8560.c index c9df80593e..99fdfd8ffb 100644 --- a/src/code_8560.c +++ b/src/code_8560.c @@ -1,53 +1,3 @@ #include "common.h" INCLUDE_ASM(s32, "code_8560", func_8002D160); - -INCLUDE_ASM(s32, "code_8560", update_cameras); - -INCLUDE_ASM(s32, "code_8560", render_frame); - -INCLUDE_ASM(s32, "code_8560", create_cameras_a); - -INCLUDE_ASM(s32, "code_8560", create_cameras_b); - -INCLUDE_ASM(s32, "code_8560", initialize_next_camera); - -INCLUDE_ASM(void, "code_8560", set_cam_viewport, s16 id, s16 x, s16 y, s16 width, s16 height); - -void get_cam_viewport(s32 camID, u16* x, u16* y, u16* width, u16* height) { - *width = CAM(camID)->viewportW; - *height = CAM(camID)->viewportH; - *x = CAM(camID)->viewportStartX; - *y = CAM(camID)->viewportStartY; -} - -INCLUDE_ASM(void, "code_8560", get_screen_coords, Cam camID, f32 x, f32 y, f32 z, f32* outX, f32* outY, f32* outZ); - -s32 func_8002E754(s32 camID, s32 x, s32 y) { - s32 startX = CAM(camID)->viewportStartX; - s32 startY = CAM(camID)->viewportStartY; - s32 endX = startX + CAM(camID)->viewportW; - s32 endY = startY + CAM(camID)->viewportH; - - if (x < startX) { - return TRUE; - } else if (x > endX) { - return TRUE; - } else if (y < startY) { - return TRUE; - } else if (y > endY) { - return TRUE; - } else { - return FALSE; - } -} - - -void func_8002E7CC(s32 camID, s32* x, s32* y, s32* width, s32* height) { - *x = CAM(camID)->viewportStartX; - *y = CAM(camID)->viewportStartY; - *width = CAM(camID)->viewportStartX + CAM(camID)->viewportW; - *height = CAM(camID)->viewportStartY + CAM(camID)->viewportH; -} - -INCLUDE_ASM(s32, "code_8560", func_8002E82C); diff --git a/src/code_8800.c b/src/code_8800.c new file mode 100644 index 0000000000..7443611065 --- /dev/null +++ b/src/code_8800.c @@ -0,0 +1,50 @@ +#include "common.h" + +INCLUDE_ASM(s32, "code_8800", update_cameras); + +INCLUDE_ASM(s32, "code_8800", render_frame); + +INCLUDE_ASM(s32, "code_8800", create_cameras_a); + +INCLUDE_ASM(s32, "code_8800", create_cameras_b); + +INCLUDE_ASM(s32, "code_8800", initialize_next_camera); + +INCLUDE_ASM(void, "code_8800", set_cam_viewport, s16 id, s16 x, s16 y, s16 width, s16 height); + +void get_cam_viewport(s32 camID, u16* x, u16* y, u16* width, u16* height) { + *width = CAM(camID)->viewportW; + *height = CAM(camID)->viewportH; + *x = CAM(camID)->viewportStartX; + *y = CAM(camID)->viewportStartY; +} + +INCLUDE_ASM(void, "code_8800", get_screen_coords, Cam camID, f32 x, f32 y, f32 z, f32* outX, f32* outY, f32* outZ); + +s32 func_8002E754(s32 camID, s32 x, s32 y) { + s32 startX = CAM(camID)->viewportStartX; + s32 startY = CAM(camID)->viewportStartY; + s32 endX = startX + CAM(camID)->viewportW; + s32 endY = startY + CAM(camID)->viewportH; + + if (x < startX) { + return TRUE; + } else if (x > endX) { + return TRUE; + } else if (y < startY) { + return TRUE; + } else if (y > endY) { + return TRUE; + } else { + return FALSE; + } +} + +void func_8002E7CC(s32 camID, s32* x, s32* y, s32* width, s32* height) { + *x = CAM(camID)->viewportStartX; + *y = CAM(camID)->viewportStartY; + *width = CAM(camID)->viewportStartX + CAM(camID)->viewportW; + *height = CAM(camID)->viewportStartY + CAM(camID)->viewportH; +} + +INCLUDE_ASM(s32, "code_8800", func_8002E82C); diff --git a/src/code_B0E0.c b/src/code_B0E0.c new file mode 100644 index 0000000000..93276b559e --- /dev/null +++ b/src/code_B0E0.c @@ -0,0 +1,18 @@ +#include "common.h" + +INCLUDE_ASM(s32, "code_B0E0", do_camera_type_unused); + +INCLUDE_ASM(s32, "code_B0E0", do_camera_type_5); + +INCLUDE_ASM(s32, "code_B0E0", func_80030210); + +INCLUDE_ASM(s32, "code_B0E0", func_8003034C); + +void func_80030450(void) { +} + +INCLUDE_ASM(s32, "code_B0E0", test_ray_zone_aabb); + +INCLUDE_ASM(s32, "code_B0E0", update_camera_from_zone); + +INCLUDE_ASM(s32, "code_B0E0", do_camera_type_3); diff --git a/src/code_ad90_len_2880.c b/src/code_ad90_len_2880.c index 5ccd5d314d..f9f0cb54a4 100644 --- a/src/code_ad90_len_2880.c +++ b/src/code_ad90_len_2880.c @@ -1,20 +1,3 @@ #include "common.h" INCLUDE_ASM(s32, "code_ad90_len_2880", do_camera_type_6); - -INCLUDE_ASM(s32, "code_ad90_len_2880", do_camera_type_unused); - -INCLUDE_ASM(s32, "code_ad90_len_2880", do_camera_type_5); - -INCLUDE_ASM(s32, "code_ad90_len_2880", func_80030210); - -INCLUDE_ASM(s32, "code_ad90_len_2880", func_8003034C); - -void func_80030450(void) { -} - -INCLUDE_ASM(s32, "code_ad90_len_2880", test_ray_zone_aabb); - -INCLUDE_ASM(s32, "code_ad90_len_2880", update_camera_from_zone); - -INCLUDE_ASM(s32, "code_ad90_len_2880", do_camera_type_3); diff --git a/src/os/code_39cb0_len_100.c b/src/os/code_39cb0_len_100.c index f14ff4d712..1b505b6cc2 100644 --- a/src/os/code_39cb0_len_100.c +++ b/src/os/code_39cb0_len_100.c @@ -6,7 +6,7 @@ // TODO: create src/os/nusys/nuSched.h? extern u64 nuScStack[NU_SC_STACK_SIZE / sizeof(u64)]; -//void (*nuIdleFunc)(void) = NULL; +static void (*nuIdleFunc)(void); void nuBoot(void) { osInitialize(); // __osInitialize_common diff --git a/src/os/code_3b390_len_110.c b/src/os/code_3b390_len_110.c deleted file mode 100644 index 9163cf304c..0000000000 --- a/src/os/code_3b390_len_110.c +++ /dev/null @@ -1,3 +0,0 @@ -#include "common.h" - -INCLUDE_ASM(s32, "os/code_3b390_len_110", nuContRmbModeSet); diff --git a/src/os/code_3b4a0_len_270.c b/src/os/code_3b4a0_len_270.c deleted file mode 100644 index 9e8a0ae387..0000000000 --- a/src/os/code_3b4a0_len_270.c +++ /dev/null @@ -1,11 +0,0 @@ -#include "common.h" - -INCLUDE_ASM(s32, "os/code_3b4a0_len_270", nuContRmbForceStop); - -INCLUDE_ASM(s32, "os/code_3b4a0_len_270", nuContRmbForceStopEnd); - -INCLUDE_ASM(s32, "os/code_3b4a0_len_270", nuPiReadRomOverlay); - -INCLUDE_ASM(s32, "os/code_3b4a0_len_270", nuGfxThreadStart); - -INCLUDE_ASM(s32, "os/code_3b4a0_len_270", nuGfxThread); diff --git a/src/os/code_3cd00_len_5f0.c b/src/os/code_3cd00_len_5f0.c index abdaf89721..fcd23ad7e7 100644 --- a/src/os/code_3cd00_len_5f0.c +++ b/src/os/code_3cd00_len_5f0.c @@ -9,11 +9,3 @@ INCLUDE_ASM(s32, "os/code_3cd00_len_5f0", osContStartReadData, OSMesgQueue* queu INCLUDE_ASM(void, "os/code_3cd00_len_5f0", osContGetReadData, OSContPad* pad); INCLUDE_ASM(s32, "os/code_3cd00_len_5f0", osPackReadData); - -INCLUDE_ASM(s32, "os/code_3cd00_len_5f0", osContInit, OSMesgQueue* queue, u8* unk, OSContStatus* status); - -INCLUDE_ASM(s32, "os/code_3cd00_len_5f0", osContGetInitData); - -INCLUDE_ASM(s32, "os/code_3cd00_len_5f0", osPackRequestData); - -INCLUDE_ASM(u32, "os/code_3cd00_len_5f0", osVirtualToPhysical, void* virt); diff --git a/src/os/code_3d330_len_990.c b/src/os/code_3d330_len_990.c deleted file mode 100644 index 49137d6d60..0000000000 --- a/src/os/code_3d330_len_990.c +++ /dev/null @@ -1,13 +0,0 @@ -#include "common.h" - -INCLUDE_ASM(void, "os/code_3d330_len_990", guFrustumF, float mf[4][4], float l, float r, float b, float t, float n, - float f, float scale); - -INCLUDE_ASM(void, "os/code_3d330_len_990", guFrustum, Mtx* m, float l, float r, float b, float t, float n, float f, - float scale); - -INCLUDE_ASM(void, "os/code_3d330_len_990", guLookAtF, float mf[4][4], float xEye, float yEye, float zEye, float xAt, - float yAt, float zAt, float xUp, float yUp, float zUp); - -INCLUDE_ASM(void, "os/code_3d330_len_990", guLookAt, Mtx* m, float xEye, float yEye, float zEye, float xAt, float yAt, - float zAt, float xUp, float yUp, float zUp); diff --git a/src/os/code_3fa50_len_f60.c b/src/os/code_3fa50_len_f60.c index 8758333659..7162a73909 100644 --- a/src/os/code_3fa50_len_f60.c +++ b/src/os/code_3fa50_len_f60.c @@ -9,13 +9,3 @@ INCLUDE_ASM(s32, "os/code_3fa50_len_f60", strchr); INCLUDE_ASM(s32, "os/code_3fa50_len_f60", strlen); INCLUDE_ASM(s32, "os/code_3fa50_len_f60", memcpy); - -INCLUDE_ASM(s32, "os/code_3fa50_len_f60", _Printf); - -INCLUDE_ASM(s32, "os/code_3fa50_len_f60", _Putfld); - -INCLUDE_ASM(int, "os/code_3fa50_len_f60", sprintf, char* s, const char* fmt, ...); - -INCLUDE_ASM(s32, "os/code_3fa50_len_f60", proutSprintf); - -INCLUDE_ASM(void, "os/code_3fa50_len_f60", osCreateMesgQueue, OSMesgQueue* queue, OSMesg* mesg, s32 unk); diff --git a/src/os/code_40E10.c b/src/os/code_40E10.c new file mode 100644 index 0000000000..142cf0773c --- /dev/null +++ b/src/os/code_40E10.c @@ -0,0 +1,5 @@ +#include "common.h" + +INCLUDE_ASM(void, "os/code_40E10", osSpTaskLoad, OSTask* tp); + +INCLUDE_ASM(void, "os/code_40E10", osSpTaskStartGo, OSTask* tp); diff --git a/src/os/code_40c20_len_1f0.c b/src/os/code_40c20_len_1f0.c index bda8480ade..3251efda3c 100644 --- a/src/os/code_40c20_len_1f0.c +++ b/src/os/code_40c20_len_1f0.c @@ -3,5 +3,3 @@ INCLUDE_ASM(s32, "os/code_40c20_len_1f0", osSendMesg, OSMesgQueue* queue, OSMesg mesg, s32 unk); INCLUDE_ASM(void, "os/code_40c20_len_1f0", osSetEventMesg, OSEvent event, OSMesgQueue* queue, OSMesg mesg); - -INCLUDE_ASM(u32, "os/code_40c20_len_1f0", osGetCount, void); diff --git a/src/os/code_40e10_len_240.c b/src/os/code_40e10_len_240.c deleted file mode 100644 index dafec23b7a..0000000000 --- a/src/os/code_40e10_len_240.c +++ /dev/null @@ -1,5 +0,0 @@ -#include "common.h" - -INCLUDE_ASM(void, "os/code_40e10_len_240", osSpTaskLoad, OSTask* tp); - -INCLUDE_ASM(void, "os/code_40e10_len_240", osSpTaskStartGo, OSTask* tp); diff --git a/src/os/code_41050_len_120.c b/src/os/code_41050_len_120.c index dd945c2990..ca86eaeb0a 100644 --- a/src/os/code_41050_len_120.c +++ b/src/os/code_41050_len_120.c @@ -1,7 +1,3 @@ #include "common.h" INCLUDE_ASM(void, "os/code_41050_len_120", osSpTaskYield, void); - -INCLUDE_ASM(OSYieldResult, "os/code_41050_len_120", osSpTaskYielded, OSTask* tp); - -INCLUDE_ASM(s32, "os/code_41050_len_120", osSiRawStartDma); diff --git a/src/os/code_41750_len_450.c b/src/os/code_41750_len_450.c index 14d1c6e331..7cd2939c44 100644 --- a/src/os/code_41750_len_450.c +++ b/src/os/code_41750_len_450.c @@ -2,11 +2,3 @@ INCLUDE_ASM(int, "os/code_41750_len_450", osSetTimer, OSTimer* timer, OSTime start, OSTime end, OSMesgQueue* queue, OSMesg mesg); - -INCLUDE_ASM(s32, "os/code_41750_len_450", osTimerServicesInit); - -INCLUDE_ASM(s32, "os/code_41750_len_450", osTimerInterrupt); - -INCLUDE_ASM(s32, "os/code_41750_len_450", osSetTimerIntr); - -INCLUDE_ASM(s32, "os/code_41750_len_450", osInsertTimer); diff --git a/src/os/code_42780_len_120.c b/src/os/code_42780_len_120.c index ddad57fbe6..3326616e99 100644 --- a/src/os/code_42780_len_120.c +++ b/src/os/code_42780_len_120.c @@ -1,7 +1,3 @@ #include "common.h" INCLUDE_ASM(void, "os/code_42780_len_120", osViBlack, u8 unk); - -INCLUDE_ASM(void, "os/code_42780_len_120", osViRepeatLine, u8 unk); - -INCLUDE_ASM(void, "os/code_42780_len_120", guMtxIdent, Mtx* m); diff --git a/src/os/code_42e70_len_390.c b/src/os/code_42e70_len_390.c index 64574a8977..46e0a42925 100644 --- a/src/os/code_42e70_len_390.c +++ b/src/os/code_42e70_len_390.c @@ -2,7 +2,3 @@ INCLUDE_ASM(void, "os/code_42e70_len_390", guMtxXFMF, float mf[4][4], float x, float y, float z, float* ox, float* oy, float* oz); - -INCLUDE_ASM(void, "os/code_42e70_len_390", guRotateF, float mf[4][4], float a, float x, float y, float z); - -INCLUDE_ASM(void, "os/code_42e70_len_390", guRotate, Mtx* m, float a, float x, float y, float z); diff --git a/src/os/code_43200_len_7c0.c b/src/os/code_43200_len_7c0.c index 1f8faaec1a..82ebd410c3 100644 --- a/src/os/code_43200_len_7c0.c +++ b/src/os/code_43200_len_7c0.c @@ -3,8 +3,3 @@ INCLUDE_ASM(s32, "os/code_43200_len_7c0", __osMotorAccess, OSPfs* pfs, s32 unk); INCLUDE_ASM(s32, "os/code_43200_len_7c0", osMotorInit, OSMesgQueue* queue, OSPfs* pfs, int unk); - -INCLUDE_ASM(s32, "os/code_43200_len_7c0", osPfsAllocateFile, OSPfs* pfs, u16 unk1, u32 unk2, u8* unk3, u8* unk4, - int unk5, s32* unk6); - -INCLUDE_ASM(s32, "os/code_43200_len_7c0", osPfsDeclearPage); diff --git a/src/os/code_44380_len_4e0.c b/src/os/code_44380_len_4e0.c index a95c787054..6f375b3b5b 100644 --- a/src/os/code_44380_len_4e0.c +++ b/src/os/code_44380_len_4e0.c @@ -1,9 +1,3 @@ #include "common.h" INCLUDE_ASM(s32, "os/code_44380_len_4e0", osPfsFreeBlocks, OSPfs* pfs, s32* unk1); - -INCLUDE_ASM(s32, "os/code_44380_len_4e0", osPfsNumFiles, OSPfs* pfs, s32* unk1, s32* unk2); - -INCLUDE_ASM(s32, "os/code_44380_len_4e0", osPfsInitPak, OSMesgQueue* queue, OSPfs* pfs, int unk1); - -INCLUDE_ASM(s32, "os/code_44380_len_4e0", osPfsCheckRamArea); diff --git a/src/os/code_46c70_len_e00.c b/src/os/code_46c70_len_e00.c index c3cc957ad0..f164425340 100644 --- a/src/os/code_46c70_len_e00.c +++ b/src/os/code_46c70_len_e00.c @@ -9,5 +9,3 @@ INCLUDE_ASM(s32, "os/code_46c70_len_e00", _Ldtob); INCLUDE_ASM(s32, "os/code_46c70_len_e00", _Ldunscale); INCLUDE_ASM(s32, "os/code_46c70_len_e00", _Genld); - -INCLUDE_ASM(s32, "os/code_46c70_len_e00", osGetCause); diff --git a/src/os/code_7e40_len_3f0.c b/src/os/code_7e40_len_3f0.c deleted file mode 100644 index 077ad44f8b..0000000000 --- a/src/os/code_7e40_len_3f0.c +++ /dev/null @@ -1,7 +0,0 @@ -#include "common.h" - -INCLUDE_ASM(s32, "os/code_7e40_len_3f0", nuGfxTaskMgr); - -INCLUDE_ASM(s32, "os/code_7e40_len_3f0", nuGfxTaskMgrInit); - -INCLUDE_ASM(s32, "os/code_7e40_len_3f0", nuGfxTaskStart); diff --git a/src/os/guFrustum.c b/src/os/guFrustum.c new file mode 100644 index 0000000000..9e4cddf9cf --- /dev/null +++ b/src/os/guFrustum.c @@ -0,0 +1,7 @@ +#include "common.h" + +INCLUDE_ASM(void, "os/guFrustum", guFrustumF, float mf[4][4], float l, float r, float b, float t, float n, + float f, float scale); + +INCLUDE_ASM(void, "os/guFrustum", guFrustum, Mtx* m, float l, float r, float b, float t, float n, float f, + float scale); diff --git a/src/os/guLookAt.c b/src/os/guLookAt.c new file mode 100644 index 0000000000..63e8423b3d --- /dev/null +++ b/src/os/guLookAt.c @@ -0,0 +1,7 @@ +#include "common.h" + +INCLUDE_ASM(void, "os/guLookAt", guLookAtF, float mf[4][4], float xEye, float yEye, float zEye, float xAt, + float yAt, float zAt, float xUp, float yUp, float zUp); + +INCLUDE_ASM(void, "os/guLookAt", guLookAt, Mtx* m, float xEye, float yEye, float zEye, float xAt, float yAt, + float zAt, float xUp, float yUp, float zUp); diff --git a/src/os/guMtxIdent.c b/src/os/guMtxIdent.c new file mode 100644 index 0000000000..d5f4bedcb5 --- /dev/null +++ b/src/os/guMtxIdent.c @@ -0,0 +1,3 @@ +#include "common.h" + +INCLUDE_ASM(void, "os/guMtxIdent", guMtxIdent, Mtx* m); diff --git a/src/os/guRotate.c b/src/os/guRotate.c new file mode 100644 index 0000000000..a652b1f269 --- /dev/null +++ b/src/os/guRotate.c @@ -0,0 +1,5 @@ +#include "common.h" + +INCLUDE_ASM(void, "os/guRotate", guRotateF, float mf[4][4], float a, float x, float y, float z); + +INCLUDE_ASM(void, "os/guRotate", guRotate, Mtx* m, float a, float x, float y, float z); diff --git a/src/os/nusys/code_3B4A0.c b/src/os/nusys/code_3B4A0.c new file mode 100644 index 0000000000..91ac185c0c --- /dev/null +++ b/src/os/nusys/code_3B4A0.c @@ -0,0 +1,12 @@ +#include "common.h" +#include "nu/nusys.h" + +void nuContRmbForceStop(void) { + nuSiSendMesg(NU_CONT_RMB_FORCESTOP_MSG, NULL); +} + +void nuContRmbForceStopEnd(void) { + nuSiSendMesg(NU_CONT_RMB_FORCESTOPEND_MSG, NULL); +} + +INCLUDE_ASM(void, "os/nusys/code_3B4A0", nuPiReadRomOverlay, NUPiOverlaySegment* segment); diff --git a/src/os/nusys/code_7e40_len_3f0.c b/src/os/nusys/code_7e40_len_3f0.c new file mode 100644 index 0000000000..aa8ed825cf --- /dev/null +++ b/src/os/nusys/code_7e40_len_3f0.c @@ -0,0 +1,7 @@ +#include "common.h" + +INCLUDE_ASM(s32, "os/nusys/code_7e40_len_3f0", nuGfxTaskMgr); + +INCLUDE_ASM(s32, "os/nusys/code_7e40_len_3f0", nuGfxTaskMgrInit); + +INCLUDE_ASM(s32, "os/nusys/code_7e40_len_3f0", nuGfxTaskStart); diff --git a/src/os/nusys/nuContRmbMgr.c b/src/os/nusys/nuContRmbMgr.c index 6d459e797c..776af78ec8 100644 --- a/src/os/nusys/nuContRmbMgr.c +++ b/src/os/nusys/nuContRmbMgr.c @@ -1,6 +1,19 @@ #include "common.h" #include "nu/nusys.h" +s32 contRmbRetrace(NUSiCommonMesg* mesg); +s32 contRmbCheckMesg(NUSiCommonMesg* mesg); +s32 contRmbStartMesg(NUSiCommonMesg* mesg); +s32 contRmbStopMesg(NUSiCommonMesg* mesg); +s32 contRmbForceStopMesg(NUSiCommonMesg* mesg); +s32 contRmbForceStopEndMesg(NUSiCommonMesg* mesg); + +u32 nuContRmbSearchTime = 300; + +s32 D_80093CE4[] = { contRmbRetrace, contRmbCheckMesg, contRmbStartMesg, contRmbStopMesg, contRmbForceStopMesg, contRmbForceStopEndMesg, NULL}; + +NUCallBackList nuContRmbCallBack = {.next = NULL, .func = D_80093CE4, .majorNo = 0x300, .funcNum = 0}; + s32 contRmbControl(NUContRmbCtl* rmbCtl, u32 contNo) { s32 ret = 0; u32 cnt; @@ -93,8 +106,6 @@ s32 contRmbRetrace(NUSiCommonMesg* mesg) { return 0; } -#ifdef NON_MATCHING -// Will match when data is decompiled. void nuContRmbMgrInit(void) { u32 i; @@ -106,9 +117,6 @@ void nuContRmbMgrInit(void) { nuSiCallBackAdd(&nuContRmbCallBack); } -#else -INCLUDE_ASM(void, "os/nusys/nuContRmbMgr", nuContRmbMgrInit); -#endif void nuContRmbMgrRemove(void) { nuSiCallBackRemove(&nuContRmbCallBack); diff --git a/src/os/nusys/nuContRmbModeSet.c b/src/os/nusys/nuContRmbModeSet.c new file mode 100644 index 0000000000..c9d28a8243 --- /dev/null +++ b/src/os/nusys/nuContRmbModeSet.c @@ -0,0 +1,3 @@ +#include "common.h" + +INCLUDE_ASM(s32, "os/nusys/nuContRmbModeSet", nuContRmbModeSet); diff --git a/src/os/nusys/nuGfxThread.c b/src/os/nusys/nuGfxThread.c new file mode 100644 index 0000000000..c9233554d4 --- /dev/null +++ b/src/os/nusys/nuGfxThread.c @@ -0,0 +1,14 @@ +#include "common.h" +#include "nu/nusys.h" + +void nuGfxThread2(void); + +extern s32 D_800AE6D0; +extern OSThread D_800B1B90; + +void nuGfxThreadStart(void) { + osCreateThread(&D_800B1B90, 4, nuGfxThread2, NULL, &D_800AE6D0, NU_GFX_THREAD_PRI); + osStartThread(&D_800B1B90); +} + +INCLUDE_ASM(void, "os/nusys/nuGfxThread", nuGfxThread2); diff --git a/src/os/osCreateMesgQueue.c b/src/os/osCreateMesgQueue.c new file mode 100644 index 0000000000..8ea2baa205 --- /dev/null +++ b/src/os/osCreateMesgQueue.c @@ -0,0 +1,3 @@ +#include "common.h" + +INCLUDE_ASM(void, "os/osCreateMesgQueue", osCreateMesgQueue, OSMesgQueue* queue, OSMesg* mesg, s32 unk); diff --git a/src/os/osSiRawStartDma.c b/src/os/osSiRawStartDma.c new file mode 100644 index 0000000000..3c2c534df8 --- /dev/null +++ b/src/os/osSiRawStartDma.c @@ -0,0 +1,3 @@ +#include "common.h" + +INCLUDE_ASM(s32, "os/osSiRawStartDma", osSiRawStartDma); diff --git a/src/os/osSpTaskYield.c b/src/os/osSpTaskYield.c new file mode 100644 index 0000000000..fb5f39de37 --- /dev/null +++ b/src/os/osSpTaskYield.c @@ -0,0 +1,3 @@ +#include "common.h" + +INCLUDE_ASM(void, "os/osSpTaskYield", osSpTaskYield); diff --git a/src/os/osSpTaskYielded.c b/src/os/osSpTaskYielded.c new file mode 100644 index 0000000000..cbf589f726 --- /dev/null +++ b/src/os/osSpTaskYielded.c @@ -0,0 +1,3 @@ +#include "common.h" + +INCLUDE_ASM(OSYieldResult, "os/osSpTaskYielded", osSpTaskYielded, OSTask* tp); diff --git a/src/os/osViRepeatLine.c b/src/os/osViRepeatLine.c new file mode 100644 index 0000000000..e8f2e3b599 --- /dev/null +++ b/src/os/osViRepeatLine.c @@ -0,0 +1,3 @@ +#include "common.h" + +INCLUDE_ASM(void, "os/osViRepeatLine", osViRepeatLine, u8 unk); diff --git a/src/os/osVirtualToPhysical.c b/src/os/osVirtualToPhysical.c new file mode 100644 index 0000000000..ab2deaa706 --- /dev/null +++ b/src/os/osVirtualToPhysical.c @@ -0,0 +1,3 @@ +#include "common.h" + +INCLUDE_ASM(u32, "os/osVirtualToPhysical", osVirtualToPhysical, void* virt); diff --git a/src/world/partner/goombario.c b/src/world/partner/goombario.c index 4d1b698c79..5f5cf5a2c9 100644 --- a/src/world/partner/goombario.c +++ b/src/world/partner/goombario.c @@ -77,7 +77,7 @@ void world_goombario_pre_battle(s32 arg0) { INCLUDE_ASM(void, "world/partner/goombario", world_goombario_pre_battle, s32 arg0); #endif -s32 D_802BDC40[] = { +s32 D_802BDC40_317B60[] = { 0x00000015, 0x001B0000, 0x00000018, 0x001B0000, 0x00000016, 0x001B0001, 0x00000019, 0x001B0001, 0x00000017, 0x001B0003, 0x0000001A, 0x001B0003, 0x0000000D, 0x001B0005, 0x0000000E, 0x001B0005, 0x0000000F, 0x001B0006, 0x00000010, 0x001B0006, 0x0000000B, 0x001B0007, 0x0000000C, 0x001B0008, @@ -94,7 +94,7 @@ Script world_goombario_take_out = SCRIPT({ func_802BD188_3170A8(); }); -s32 D_802BDD88 = 0x802BDF40; +s32 D_802BDD88_317CA8 = 0x802BDF40; Script world_goombario_update = SCRIPT({ func_802BD1D0_3170F0(); diff --git a/src/world/partner/goompa.c b/src/world/partner/goompa.c index a7ca93eaed..51dcaea667 100644 --- a/src/world/partner/goompa.c +++ b/src/world/partner/goompa.c @@ -36,7 +36,7 @@ Script world_goompa_take_out = SCRIPT({ GoompaTakeOut(); }); -s32 D_802BD58C = 0x802BD600; +s32 D_802BD58C_324E9C = 0x802BD600; Script world_goompa_update = SCRIPT({ func_802BD14C_324A5C(); diff --git a/tools/m2ctx.py b/tools/m2ctx.py index 59821b9c5c..d77e76447b 100755 --- a/tools/m2ctx.py +++ b/tools/m2ctx.py @@ -26,7 +26,7 @@ def get_c_file(directory): def import_c_file(in_file): in_file = os.path.relpath(in_file, root_dir) - cpp_command = ["gcc", "-E", "-P", "-Iinclude", "-Isrc", "-D_LANGUAGE_C", "-ffreestanding", "-DF3DEX_GBI_2", in_file] + cpp_command = ["gcc", "-E", "-P", "-Iinclude", "-Isrc", "-Ibuild/include" ,"-D_LANGUAGE_C", "-ffreestanding", "-DF3DEX_GBI_2", in_file] try: return subprocess.check_output(cpp_command, cwd=root_dir, encoding="utf-8") except subprocess.CalledProcessError: diff --git a/tools/splat.yaml b/tools/splat.yaml index bd589b0ea8..659e839478 100644 --- a/tools/splat.yaml +++ b/tools/splat.yaml @@ -9,6 +9,8 @@ options: extensions: splat_ext symbol_addrs_path: tools/symbol_addrs.txt platform: n64 + out_dir: ../ + target_path: baserom.z64 assets_dir: assets segments: - name: header @@ -29,7 +31,7 @@ segments: vram: 0x80025C00 subalign: 8 subsections: - - [0x1000, c, code_1000_len_60] + - [0x1000, hasm, entry_point] - [0x1060, c, code_1060_len_310] - [0x1370, c, code_1370_len_7d0] - [0x1b40, c, code_1b40_len_20b0] @@ -39,11 +41,13 @@ segments: - [0x6240, c, code_6240_len_c00] - [0x6e40, c, code_6e40_len_500] - [0x7340, c, code_7340_len_b00] - - [0x7e40, c, os/code_7e40_len_3f0] + - [0x7e40, c, os/nusys/code_7e40_len_3f0] - [0x8230, c, os/nusys/nuSiMgr] - [0x8560, c] + - [0x8800, c] - [0x9d10, c, code_9d10_len_1080] - [0xad90, c, code_ad90_len_2880] + - [0xB0E0, c] - [0xd610, c, code_d610_len_1330] - [0xe940, c, code_e940_len_290] - [0xebd0, c, code_ebd0_len_6a0] @@ -58,13 +62,18 @@ segments: - [0x1a1f0, c, code_1a1f0_len_5390] - [0x1f580, c, code_1f580_len_1940] - [0x20ec0, c, code_20ec0_len_5040] + - [0x23680, c] + - [0x25AF0, c] - [0x25f00, c, code_25f00_len_940] - [0x26840, c, code_26840_len_20d0] - [0x28910, c, code_28910_len_5090] + - [0x2BF90, c] - [0x2d9a0, c, code_2d9a0_len_890] - [0x2e230, c, code_2e230_len_2190] - [0x303c0, c, code_303c0_len_3e10] + - [0x30450, c] - [0x31650, c, code_31650] + - [0x33450, c] - [0x341d0, c, code_341d0] - [0x35ac0, c, world/world] - [0x362a0, c, code_362a0_len_2f70] @@ -83,11 +92,12 @@ segments: - [0x3aa10, c, os/nusys/nuContInit] - [0x3aa50, c, os/nusys/nuContDataGet] - [0x3aab0, c, os/nusys/nuContPakMgr] - - [0x3af10, c, os/nusys/nuContRmbMgr] + - [0x3AD20, c, os/nusys/nuContRmbMgr] - [0x3b290, c, os/nusys/nuContRmbStart] - [0x3b2f0, c, os/nusys/nuContRmbCheck] - - [0x3b390, c, os/code_3b390_len_110] - - [0x3b4a0, c, os/code_3b4a0_len_270] + - [0x3b390, c, os/nusys/nuContRmbModeSet] + - [0x3b4a0, c, os/nusys/code_3B4A0] + - [0x3B5F0, c, os/nusys/nuGfxThread] # End of nusys - [0x3b710, c, os/code_3b710_len_40] - [0x3b750, c, os/code_3b750_len_20] - [0x3b770, c, os/code_3b770_len_80] @@ -109,9 +119,12 @@ segments: - [0x3cc50, c, os/code_3cc50_len_80] - [0x3ccd0, c, os/code_3ccd0_len_30] - [0x3cd00, c, os/code_3cd00_len_5f0] + - [0x3CF80, c] + - [0x3D290, c, os/osVirtualToPhysical] - [0x3d2f0, c, os/code_3d2f0_len_10] - [0x3d300, c, os/code_3d300_len_30] - - [0x3d330, c, os/code_3d330_len_990] + - [0x3d330, c, os/guFrustum] + - [0x3D5B0, c, os/guLookAt] - [0x3dcc0, c, os/code_3dcc0_len_a60] - [0x3e720, c, os/code_3e720_len_5f0] - [0x3ed10, c, os/guOrtho] @@ -120,11 +133,16 @@ segments: - [0x3f6d0, c, os/code_3f6d0_len_320] - [0x3f9f0, c, os/code_3f9f0_len_60] - [0x3fa50, c, os/code_3fa50_len_f60] + - [0x3FEA0, c] + - [0x40980, c, os/osCreateMesgQueue] - [0x409b0, c, os/code_409b0_len_140] - [0x40af0, c, os/code_40af0_len_130] - [0x40c20, c, os/code_40c20_len_1f0] - - [0x40e10, c, os/code_40e10_len_240] - - [0x41050, c, os/code_41050_len_120] + - [0x40E00, hasm, os/osGetCount] + - [0x40E10, c] + - [0x41050, c, os/osSpTaskYield] + - [0x41070, c, os/osSpTaskYielded] + - [0x410C0, c, os/osSiRawStartDma] - [0x41170, c, os/code_41170_len_f0] - [0x41260, c, os/osCreateThread] - [0x41330, c, os/osGetThreadPri] @@ -137,6 +155,7 @@ segments: - [0x416a0, c, os/code_416a0_len_90] - [0x41730, c, os/code_41730_len_20] - [0x41750, c, os/code_41750_len_450] + - [0x41880, c] - [0x41ba0, c, os/code_41ba0_len_c0] - [0x41c60, c, os/code_41c60_len_c0] - [0x41d20, c, os/code_41d20_len_40] @@ -152,6 +171,8 @@ segments: - [0x42420, c, os/code_42420_len_50] - [0x42470, c, os/code_42470_len_310] - [0x42780, c, os/code_42780_len_120] + - [0x427E0, c, os/osViRepeatLine] + - [0x42840, c, os/guMtxIdent] - [0x428a0, c, os/guMtxIdentF] - [0x42900, c, os/code_42900_len_80] - [0x42980, c, os/code_42980_len_80] @@ -163,11 +184,14 @@ segments: - [0x42d60, c, os/code_42d60_len_80] - [0x42de0, c, os/code_42de0_len_90] - [0x42e70, c, os/code_42e70_len_390] + - [0x42F20, c, os/guRotate] - [0x43200, c, os/code_43200_len_7c0] + - [0x43590, c] - [0x439c0, c, os/code_439c0_len_220] - [0x43be0, c, os/code_43be0_len_5e0] - [0x441c0, c, os/code_441c0_len_1c0] - [0x44380, c, os/code_44380_len_4e0] + - [0x44490, c] - [0x44860, c, os/code_44860_len_60] - [0x448c0, c, os/code_448c0_len_210] - [0x44ad0, c, os/code_44ad0_len_70] @@ -184,6 +208,7 @@ segments: - [0x46ae0, c, os/code_46ae0_len_170] - [0x46c50, c, os/code_46c50_len_20] - [0x46c70, c, os/code_46c70_len_e00] + - [0x47A60, hasm, os/__osGetCause] - [0x47a70, c, os/code_47a70_len_10] - [0x47a80, c, os/code_47a80_len_10] - [0x47a90, c, os/code_47a90_len_50] @@ -212,19 +237,24 @@ segments: - [0x4F9D0, data, code_6240_len_c00] - [0x53570, .data, code_25f00_len_940] - [0x53590, data, code_26840_len_20d0] - - [0x541B0, .data, code_303c0_len_3e10] + - [0x541B0, .data, code_30450] - [0x54250, .data, code_31650] - [0x542E0, data, code_31650] - [0x6B450, .data, world/world] - [0x6EAC0, data] # has scripts + - [0x6F0E0, .data, os/nusys/nuContRmbMgr] + - [0x6F110, data] # has scripts? - [0x70E30, .data, battle/battle] - [0x71430, data] - - [0x73130, rodata] + - [0x73130, rodata, code_1060_len_310] + - [0x73148, .rodata, code_1b40_len_20b0] - [0x73160, .rodata, code_42e0_len_1f60] - [0x73200, rodata] - [0x73DA0, .rodata, world/world] - [0x74EA0, rodata] - [0x75240, .rodata, battle/battle] # ram 80099E40 + # bss starts at 0x8009A5B0 + - [0x75240, .bss, os/code_39cb0_len_100, 0x800] # we need at least this much bss space until this file - type: code start: 0x759B0 vram: 0x800DC500 @@ -2036,7 +2066,7 @@ segments: - [0x6DDDC0, c] - [0x6DDE90, c] - [0x6DE000, c] - - [0x6DE060, c] + - [0x6DE0D0, c] - [0x6DE1A0, c] - [0x6DE1F0, c] - [0x6DE3A0, c] diff --git a/tools/splat/.gitrepo b/tools/splat/.gitrepo index 548fd4514b..eb69d5b960 100644 --- a/tools/splat/.gitrepo +++ b/tools/splat/.gitrepo @@ -6,7 +6,7 @@ [subrepo] remote = https://github.com/ethteck/splat.git branch = master - commit = 7e40c55d56f779521350fa881aa4dbdf30032a8c - parent = 68e927503b880c53ebb03a74030479ca519eb9bc + commit = e8f767532226d2c9d8f84400d5652e4d60b20262 + parent = 39ea4c7a86197cf7a4bd244ee55520c0be051c52 method = merge cmdver = 0.4.3 diff --git a/tools/splat/CHANGELOG.md b/tools/splat/CHANGELOG.md index bf49629f2d..6ae663b00e 100644 --- a/tools/splat/CHANGELOG.md +++ b/tools/splat/CHANGELOG.md @@ -37,3 +37,10 @@ There's also a new option, `create_new_c_files`, which disables the creation of I am also working on adding bss support as well. It should almost be all set, aside from the changes needed in the linker script. **Breaking change**: The `files` field in `code` segments should now be renamed to `subsections`. + +### 0.6.3: More refactoring +**Breaking Change**: The command line args to split.py have changed. Currently, only the config path is now a required argument to splat. The old `rom` and `outdir` parameters are now optional (`--rom`, `--outdir`). Now, you can add rom and out directory paths in the yaml. + +The `out_dir` option specifies a directory relative to the config file. If your config file is in a subdirectory of the main repo, you can set `out_dir: ../`, for example. + +The `target_path` option spcifies a path to the binary file to split, relative to the `out_dir`. If your `baserom.z64` is in the top-level of the repo, you can set `target_path: baserom.z64`, for example. diff --git a/tools/splat/segtypes/n64/bin.py b/tools/splat/segtypes/n64/bin.py index 7b9e831a8f..4420493911 100644 --- a/tools/splat/segtypes/n64/bin.py +++ b/tools/splat/segtypes/n64/bin.py @@ -1,11 +1,12 @@ import os from segtypes.n64.segment import N64Segment from pathlib import Path +from segtypes.segment import Segment class N64SegBin(N64Segment): def split(self, rom_bytes, base_path): - out_dir = self.create_split_dir(base_path, self.options.get("assets_dir", "bin")) + out_dir = Segment.create_split_dir(base_path, self.options.get("assets_dir", "bin")) bin_path = os.path.join(out_dir, self.name + ".bin") Path(bin_path).parent.mkdir(parents=True, exist_ok=True) diff --git a/tools/splat/segtypes/n64/code.py b/tools/splat/segtypes/n64/code.py index 740e620126..30e646fc73 100644 --- a/tools/splat/segtypes/n64/code.py +++ b/tools/splat/segtypes/n64/code.py @@ -1,9 +1,12 @@ -from typing import get_args from capstone import * from capstone.mips import * from collections import OrderedDict from segtypes.n64.segment import N64Segment +from segtypes.segment import Segment +from segtypes.n64.palette import N64SegPalette +from segtypes.n64.ci4 import N64SegCi4 +import png import os from pathlib import Path, PurePath import re @@ -11,41 +14,13 @@ import sys from util import floats from util.symbol import Symbol - -STRIP_C_COMMENTS_RE = re.compile( - r'//.*?$|/\*.*?\*/|\'(?:\\.|[^\\\'])*\'|"(?:\\.|[^\\"])*"', - re.DOTALL | re.MULTILINE -) - -C_FUNC_RE = re.compile( - r"^(static\s+)?[^\s]+\s+([^\s(]+)\(([^;)]*)\)[^;]+?{", - re.MULTILINE -) - double_mnemonics = ["ldc1", "sdc1"] word_mnemonics = ["addiu", "sw", "lw", "jtbl"] float_mnemonics = ["lwc1", "swc1"] short_mnemonics = ["addiu", "lh", "sh", "lhu"] byte_mnemonics = ["lb", "sb", "lbu"] -def strip_c_comments(text): - def replacer(match): - s = match.group(0) - if s.startswith("/"): - return " " - else: - return s - return re.sub(STRIP_C_COMMENTS_RE, replacer, text) - - -def get_funcs_defined_in_c(c_file): - with open(c_file, "r") as f: - text = strip_c_comments(f.read()) - - return set(m.group(2) for m in C_FUNC_RE.finditer(text)) - class Subsegment(): - def __init__(self, start, end, name, type, vram, args): self.rom_start = start self.rom_end = end @@ -104,8 +79,166 @@ class Subsegment(): def should_run(self, options): return self.type in options["modes"] or "all" in options["modes"] + def get_generic_out_path(self, base_path, options): + return os.path.join( + base_path, + self.get_out_subdir(options), + self.name + "." + self.get_ext() + ) + + def split_inner(self, segment, rom_bytes, base_path, generic_out_path): + pass + + def split(self, segment, rom_bytes, base_path): + if self.should_run(segment.options) and not self.name.startswith("."): + self.split_inner(segment, rom_bytes, base_path, self.get_generic_out_path(base_path, segment.options)) + + @staticmethod + def get_subclass(typ): + if typ in ["data", ".data", "rodata", ".rodata"]: + return DataSubsegment + elif typ in ["bss", ".bss"]: + return BssSubsegment + elif typ == "bin": + return BinSubsegment + elif typ in ["c", "asm", "hasm"]: + return CodeSubsegment + elif typ == "palette": + return PaletteSubsegment + else: + return Subsegment + +class CodeSubsegment(Subsegment): + md = Cs(CS_ARCH_MIPS, CS_MODE_MIPS64 + CS_MODE_BIG_ENDIAN) + md.detail = True + md.skipdata = True + + STRIP_C_COMMENTS_RE = re.compile( + r'//.*?$|/\*.*?\*/|\'(?:\\.|[^\\\'])*\'|"(?:\\.|[^\\"])*"', + re.DOTALL | re.MULTILINE + ) + + C_FUNC_RE = re.compile( + r"^(static\s+)?[^\s]+\s+([^\s(]+)\(([^;)]*)\)[^;]+?{", + re.MULTILINE + ) + + def strip_c_comments(text): + def replacer(match): + s = match.group(0) + if s.startswith("/"): + return " " + else: + return s + return re.sub(CodeSubsegment.STRIP_C_COMMENTS_RE, replacer, text) + + @staticmethod + def get_funcs_defined_in_c(c_file): + with open(c_file, "r") as f: + text = CodeSubsegment.strip_c_comments(f.read()) + + return set(m.group(2) for m in CodeSubsegment.C_FUNC_RE.finditer(text)) + + @staticmethod + def get_asm_header(): + ret = [] + + ret.append(".include \"macro.inc\"") + ret.append("") + ret.append("# assembler directives") + ret.append(".set noat # allow manual use of $at") + ret.append(".set noreorder # don't insert nops after branches") + ret.append(".set gp=64 # allow use of 64-bit general purpose registers") + ret.append("") + ret.append(".section .text, \"ax\"") + ret.append("") + + return ret + + def split_inner(self, segment, rom_bytes, base_path, generic_out_path): + if not self.rom_start == self.rom_end: + asm_out_dir = Segment.create_split_dir(base_path, "asm") + + rom_addr = self.rom_start + + insns = [insn for insn in CodeSubsegment.md.disasm(rom_bytes[self.rom_start : self.rom_end], self.vram_start)] + + funcs = segment.process_insns(insns, rom_addr) + + # TODO: someday make func a subclass of symbol and store this disasm info there too + for func in funcs: + segment.get_symbol(func, type="func", create=True, define=True, local_only=True) + + funcs = segment.determine_symbols(funcs) + segment.gather_jumptable_labels(rom_bytes) + funcs_text = segment.add_labels(funcs) + + if self.type == "c": + if os.path.exists(generic_out_path): + defined_funcs = CodeSubsegment.get_funcs_defined_in_c(generic_out_path) + segment.mark_c_funcs_as_defined(defined_funcs) + else: + defined_funcs = set() + + asm_out_dir = Segment.create_split_dir(base_path, os.path.join("asm", "nonmatchings")) + + for func in funcs_text: + func_name = segment.get_symbol(func, type="func", local_only=True).name + + if func_name not in defined_funcs: + segment.create_c_asm_file(funcs_text, func, asm_out_dir, self, func_name) + + if not os.path.exists(generic_out_path) and self.options.get("create_new_c_files", True): + self.create_c_file(funcs_text, self, asm_out_dir, base_path, generic_out_path) + else: + out_lines = self.get_asm_header() + for func in funcs_text: + out_lines.extend(funcs_text[func][0]) + out_lines.append("") + + outpath = Path(os.path.join(asm_out_dir, self.name + ".s")) + outpath.parent.mkdir(parents=True, exist_ok=True) + + with open(outpath, "w", newline="\n") as f: + f.write("\n".join(out_lines)) + +class DataSubsegment(Subsegment): + def split_inner(self, segment, rom_bytes, base_path, generic_out_path): + asm_out_dir = Segment.create_split_dir(base_path, os.path.join("asm", "data")) + + outpath = Path(os.path.join(asm_out_dir, self.name + f".{self.type}.s")) + outpath.parent.mkdir(parents=True, exist_ok=True) + + file_text = segment.disassemble_data(self, rom_bytes) + if file_text: + with open(outpath, "w", newline="\n") as f: + f.write(file_text) + +class BssSubsegment(DataSubsegment): + def __init__(self, start, end, name, type, vram, args): + super().__init__(start, end, name, type, vram, args) + self.size = self.args[0] + self.vram_end = self.vram_start + self.size + +class BinSubsegment(Subsegment): + def split_inner(self, segment, rom_bytes, base_path, generic_out_path): + Path(generic_out_path).parent.mkdir(parents=True, exist_ok=True) + with open(generic_out_path, "wb") as f: + f.write(rom_bytes[self.rom_start : self.rom_end]) + +class PaletteSubsegment(Subsegment): + def should_run(self, options): + return super().should_run(options) or "img" in options["modes"] + + def split_inner(self, segment, rom_bytes, base_path, generic_out_path): + img_bytes = rom_bytes[self.rom_start : self.rom_end] + + palette = N64SegPalette.parse_palette(img_bytes) + segment.palettes[self.name] = palette class N64SegCode(N64Segment): + palettes = {} + def parse_subsegments(self, segment_yaml): prefix = self.name if self.name.endswith("/") else f"{self.name}_" @@ -141,7 +274,9 @@ class N64SegCode(N64Segment): vram = self.rom_to_ram(start) - ret.append(Subsegment(start, end, name, typ, vram, args)) + subsegment_class = Subsegment.get_subclass(typ) + + ret.append(subsegment_class(start, end, name, typ, vram, args)) prev_start = start return ret @@ -165,6 +300,22 @@ class N64SegCode(N64Segment): def get_default_name(addr): return f"code_{addr:X}" + def get_ld_files(self): + def transform(sub): + subdir = sub.get_out_subdir(self.options) + obj_type = sub.get_ld_obj_type(".text") + ext = sub.get_ext() + + return subdir, f"{sub.name}.{ext}", obj_type, sub.rom_start + + return [transform(file) for file in self.subsegments] + + def get_ld_section_name(self): + path = PurePath(self.name) + name = path.name if path.name != "" else path.parent + + return f"code_{name}" + def retrieve_symbol(self, d, k, t): if k not in d: return None @@ -239,21 +390,6 @@ class N64SegCode(N64Segment): return ret - def get_asm_header(self): - ret = [] - - ret.append(".include \"macro.inc\"") - ret.append("") - ret.append("# assembler directives") - ret.append(".set noat # allow manual use of $at") - ret.append(".set noreorder # don't insert nops after branches") - ret.append(".set gp=64 # allow use of 64-bit general purpose registers") - ret.append("") - ret.append(".section .text, \"ax\"") - ret.append("") - - return ret - def get_gcc_inc_header(self): ret = [] ret.append(".set noat # allow manual use of $at") @@ -276,6 +412,7 @@ class N64SegCode(N64Segment): def process_insns(self, insns, rom_addr): ret = OrderedDict() + func_addr = None func = [] end_func = False labels = [] @@ -781,149 +918,25 @@ class N64SegCode(N64Segment): print(f"Wrote {sub.name} to {c_path}") def split(self, rom_bytes, base_path): - md = Cs(CS_ARCH_MIPS, CS_MODE_MIPS64 + CS_MODE_BIG_ENDIAN) - md.detail = True - md.skipdata = True - - palettes = {} - for sub in self.subsegments: - if sub.type in ["asm", "hasm", "c"]: - if not sub.should_run(self.options): - continue + sub.split(self, rom_bytes, base_path) - if sub.rom_start == sub.rom_end: - continue - - asm_out_dir = self.create_split_dir(base_path, "asm") - - rom_addr = sub.rom_start - - insns = [insn for insn in md.disasm(rom_bytes[sub.rom_start: sub.rom_end], sub.vram_start)] - - funcs = self.process_insns(insns, rom_addr) - - # TODO: someday make func a subclass of symbol and store this disasm info there too - for func in funcs: - self.get_symbol(func, type="func", create=True, define=True, local_only=True) - - funcs = self.determine_symbols(funcs) - self.gather_jumptable_labels(rom_bytes) - funcs_text = self.add_labels(funcs) - - if sub.type == "c": - c_path = os.path.join( - base_path, - sub.get_out_subdir(self.options), - sub.name + "." + sub.get_ext() - ) - - if os.path.exists(c_path): - defined_funcs = get_funcs_defined_in_c(c_path) - self.mark_c_funcs_as_defined(defined_funcs) - else: - defined_funcs = set() - - asm_out_dir = self.create_split_dir(base_path, os.path.join("asm", "nonmatchings")) - - for func in funcs_text: - func_name = self.get_symbol(func, type="func", local_only=True).name - - if func_name not in defined_funcs: - self.create_c_asm_file(funcs_text, func, asm_out_dir, sub, func_name) - - if not os.path.exists(c_path) and self.options.get("create_new_c_files", True): - self.create_c_file(funcs_text, sub, asm_out_dir, base_path, c_path) - else: - out_lines = self.get_asm_header() - for func in funcs_text: - out_lines.extend(funcs_text[func][0]) - out_lines.append("") - - outpath = Path(os.path.join(asm_out_dir, sub.name + ".s")) - outpath.parent.mkdir(parents=True, exist_ok=True) - - with open(outpath, "w", newline="\n") as f: - f.write("\n".join(out_lines)) - - elif sub.type in ["data", "rodata", "bss"] and sub.should_run(self.options): - asm_out_dir = self.create_split_dir(base_path, os.path.join("asm", "data")) - - outpath = Path(os.path.join(asm_out_dir, sub.name + f".{sub.type}.s")) - outpath.parent.mkdir(parents=True, exist_ok=True) - - file_text = self.disassemble_data(sub, rom_bytes) - if file_text: - with open(outpath, "w", newline="\n") as f: - f.write(file_text) - - elif sub.type == "bin" and sub.should_run(self.options): - bin_path = os.path.join( - base_path, - sub.get_out_subdir(self.options), - sub.name + "." + sub.get_ext() - ) - - Path(bin_path).parent.mkdir(parents=True, exist_ok=True) - with open(bin_path, "wb") as f: - f.write(rom_bytes[sub.rom_start : sub.rom_end]) - - elif sub.type in ["i4", "i8", "ia4", "ia8", "ia16", "rgba16", "rgba32", "ci4", "ci8"]: - pass - - elif sub.type == "palette": - from segtypes.n64.palette import N64SegPalette - - out_path = os.path.join( - base_path, - sub.get_out_subdir(self.options), - sub.name + "." + sub.get_ext() - ) + # TODO hack for images: move at some point + for sub in self.subsegments: + if sub.type == "ci4" and (sub.should_run(self.options) or "img" in self.options["modes"]): + generic_out_path = sub.get_generic_out_path(base_path, self.options) img_bytes = rom_bytes[sub.rom_start : sub.rom_end] - palette = N64SegPalette.parse_palette(img_bytes) - palettes[sub.name] = palette - - import png - - for sub in self.subsegments: - img_bytes = rom_bytes[sub.rom_start : sub.rom_end] - - out_path = os.path.join( - base_path, - sub.get_out_subdir(self.options), - sub.name + "." + sub.get_ext() - ) - - if sub.type == "ci4" and (sub.should_run(self.options) or "img" in self.options["modes"]): - from segtypes.n64.ci4 import N64SegCi4 - width, height = sub.args - palette = palettes[sub.name] + palette = self.palettes[sub.name] image = N64SegCi4.parse_image(img_bytes, width, height) w = png.Writer(width, height, palette=palette) - Path(out_path).parent.mkdir(parents=True, exist_ok=True) - with open(out_path, "wb") as f: + Path(generic_out_path).parent.mkdir(parents=True, exist_ok=True) + with open(generic_out_path, "wb") as f: w.write_array(f, image) # TODO other image types # TODO write orphaned palettes - - def get_ld_files(self): - def transform(sub): - subdir = sub.get_out_subdir(self.options) - obj_type = sub.get_ld_obj_type(".text") - ext = sub.get_ext() - - return subdir, f"{sub.name}.{ext}", obj_type, sub.rom_start - - return [transform(file) for file in self.subsegments] - - def get_ld_section_name(self): - path = PurePath(self.name) - name = path.name if path.name != "" else path.parent - - return f"code_{name}" diff --git a/tools/splat/segtypes/n64/header.py b/tools/splat/segtypes/n64/header.py index 4a4e3919a9..1256aa4dfc 100644 --- a/tools/splat/segtypes/n64/header.py +++ b/tools/splat/segtypes/n64/header.py @@ -1,6 +1,7 @@ import os from segtypes.n64.segment import N64Segment from pathlib import Path +from segtypes.segment import Segment class N64SegHeader(N64Segment): def should_run(self): @@ -18,7 +19,7 @@ class N64SegHeader(N64Segment): return f".{typ} {dstr} /* {comment} */" def split(self, rom_bytes, base_path): - out_dir = self.create_split_dir(base_path, "asm") + out_dir = Segment.create_split_dir(base_path, "asm") encoding = self.options.get("header_encoding", "ASCII") diff --git a/tools/splat/segtypes/segment.py b/tools/splat/segtypes/segment.py index 1516f6a3fa..baf4b1b060 100644 --- a/tools/splat/segtypes/segment.py +++ b/tools/splat/segtypes/segment.py @@ -94,12 +94,14 @@ class Segment: return self.rom_start + ram_addr - self.vram_start - def create_split_dir(self, base_path, subdir): + @staticmethod + def create_split_dir(base_path, subdir): out_dir = Path(base_path, subdir) out_dir.mkdir(parents=True, exist_ok=True) return out_dir - def create_parent_dir(self, base_path, filename): + @staticmethod + def create_parent_dir(base_path, filename): out_dir = Path(base_path, filename).parent out_dir.mkdir(parents=True, exist_ok=True) return out_dir diff --git a/tools/splat/split.py b/tools/splat/split.py index 92bd7ab16a..b582a0f66f 100755 --- a/tools/splat/split.py +++ b/tools/splat/split.py @@ -12,12 +12,13 @@ from segtypes.segment import parse_segment_type from segtypes.n64.code import N64SegCode from util import log from util.symbol import Symbol +import sys parser = argparse.ArgumentParser( description="Split a rom given a rom, a config, and output directory") -parser.add_argument("rom", help="path to a .z64 rom") parser.add_argument("config", help="path to a compatible config .yaml file") -parser.add_argument("outdir", help="a directory in which to extract the rom") +parser.add_argument("--rom", help="path to a .z64 rom") +parser.add_argument("--outdir", help="a directory in which to extract the rom") parser.add_argument("--modes", nargs="+", default="all") parser.add_argument("--verbose", action="store_true", help="Enable debug logging") @@ -133,20 +134,6 @@ def gather_symbols(symbol_addrs_path, undefined_syms_path): rom_addr = int(info.split(":")[1], 0) sym.rom = rom_addr symbols.append(sym) - - # Maybe let's not use this - if os.path.exists(undefined_syms_path): - with open(undefined_syms_path) as f: - us_lines = f.readlines() - - for line in us_lines: - line = line.strip() - if not line == "" and not line.startswith("//"): - line_split = line.split("=") - name = line_split[0].strip() - addr = int(line_split[1].strip()[:-1], 0) - symbols.append(Symbol(addr, given_name=name)) - return symbols @@ -196,11 +183,7 @@ def initialize_segments(options, config_path, config_segments): seen_segment_names = set() ret = [] - for i, segment in enumerate(config_segments): - if len(segment) == 1: - # We're at the end - continue - + for i, segment in enumerate(config_segments[:-1]): seg_type = parse_segment_type(segment) platform = get_platform(options) @@ -266,13 +249,7 @@ def get_segment_symbols(segment, all_symbols, all_segments): return seg_syms, other_syms -def main(rom_path, config_path, repo_path, modes, verbose, ignore_cache=False): - with open(rom_path, "rb") as f: - rom_bytes = f.read() - - # Create main output dir - Path(repo_path).mkdir(parents=True, exist_ok=True) - +def main(config_path, out_dir, target_path, modes, verbose, ignore_cache=False): # Load config with open(config_path) as f: config = yaml.safe_load(f.read()) @@ -281,10 +258,31 @@ def main(rom_path, config_path, repo_path, modes, verbose, ignore_cache=False): options["modes"] = modes options["verbose"] = verbose - symbol_addrs_path = get_symbol_addrs_path(repo_path, options) - undefined_syms_path = get_undefined_syms_path(repo_path, options) + if not out_dir: + out_dir = options.get("out_dir", None) + if not out_dir: + print("Error: Output dir not specified as a command line arg or via the config yaml (out_dir)") + sys.exit(2) + else: + out_dir = os.path.join(Path(config_path).parent, out_dir) + + if not target_path: + target_path = options.get("target_path", None) + if not target_path: + print("Error: Target binary path not specified as a command line arg or via the config yaml (target_path)") + sys.exit(2) + else: + target_path = os.path.join(out_dir, target_path) + + with open(target_path, "rb") as f: + rom_bytes = f.read() + + # Create main output dir + Path(out_dir).mkdir(parents=True, exist_ok=True) + + symbol_addrs_path = get_symbol_addrs_path(out_dir, options) + undefined_syms_path = get_undefined_syms_path(out_dir, options) all_symbols = gather_symbols(symbol_addrs_path, undefined_syms_path) - isolated_symbols = {} symbol_ranges = [s for s in all_symbols if s.size > 4] platform = get_platform(options) @@ -296,7 +294,7 @@ def main(rom_path, config_path, repo_path, modes, verbose, ignore_cache=False): seg_cached = {} # Load cache - cache_path = get_cache_path(repo_path, options) + cache_path = get_cache_path(out_dir, options) try: with open(cache_path, "rb") as f: cache = pickle.load(f) @@ -316,15 +314,15 @@ def main(rom_path, config_path, repo_path, modes, verbose, ignore_cache=False): segment.check() - tp = segment.type + typ = segment.type if segment.type == "bin" and segment.is_name_default(): - tp = "unk" + typ = "unk" - if tp not in seg_sizes: - seg_sizes[tp] = 0 - seg_split[tp] = 0 - seg_cached[tp] = 0 - seg_sizes[tp] += segment.size + if typ not in seg_sizes: + seg_sizes[typ] = 0 + seg_split[typ] = 0 + seg_cached[typ] = 0 + seg_sizes[typ] += segment.size if len(segment.errors) == 0: if segment.should_run(): @@ -332,18 +330,18 @@ def main(rom_path, config_path, repo_path, modes, verbose, ignore_cache=False): cached = segment.cache() if not ignore_cache and cached == cache.get(segment.unique_id()): # Cache hit - seg_cached[tp] += 1 + seg_cached[typ] += 1 else: # Cache miss; split cache[segment.unique_id()] = cached segment.did_run = True - segment.split(rom_bytes, repo_path) + segment.split(rom_bytes, out_dir) if len(segment.errors) == 0: processed_segments.append(segment) - seg_split[tp] += 1 + seg_split[typ] += 1 log.dot(status=segment.status()) ld_sections.append(segment.get_ld_section()) @@ -356,15 +354,13 @@ def main(rom_path, config_path, repo_path, modes, verbose, ignore_cache=False): if "ld" in options["modes"] or "all" in options["modes"]: if verbose: log.write(f"saving {config['basename']}.ld") - write_ldscript(config['basename'], repo_path, ld_sections, options) + write_ldscript(config['basename'], out_dir, ld_sections, options) undefined_syms_to_write = [s for s in all_symbols if s.referenced and not s.defined and not s.type == "func"] undefined_funcs_to_write = [s for s in all_symbols if s.referenced and not s.defined and s.type == "func"] # Write undefined_funcs_auto.txt - undefined_funcs_auto_path = get_undefined_funcs_auto_path(repo_path, options) - if verbose: - log.write(f"saving {undefined_funcs_auto_path}") + undefined_funcs_auto_path = get_undefined_funcs_auto_path(out_dir, options) to_write = undefined_funcs_to_write if len(to_write) > 0: @@ -373,9 +369,8 @@ def main(rom_path, config_path, repo_path, modes, verbose, ignore_cache=False): f.write(f"{symbol.name} = 0x{symbol.vram_start:X};\n") # write undefined_syms_auto.txt - undefined_syms_auto_path = get_undefined_syms_auto_path(repo_path, options) - if verbose: - log.write(f"saving {undefined_syms_auto_path}") + undefined_syms_auto_path = get_undefined_syms_auto_path(out_dir, options) + to_write = undefined_syms_to_write if len(to_write) > 0: with open(undefined_syms_auto_path, "w", newline="\n") as f: @@ -397,9 +392,9 @@ def main(rom_path, config_path, repo_path, modes, verbose, ignore_cache=False): rest_size = 0 total_size = len(rom_bytes) - for tp in seg_sizes: - if tp != "unk": - rest_size += seg_sizes[tp] + for typ in seg_sizes: + if typ != "unk": + rest_size += seg_sizes[typ] assert(unk_size + rest_size == total_size) @@ -407,11 +402,11 @@ def main(rom_path, config_path, repo_path, modes, verbose, ignore_cache=False): unk_ratio = unk_size / total_size log.write(f"Split {fmt_size(rest_size)} ({known_ratio:.2%}) in defined segments") - for tp in seg_sizes: - if tp != "unk": - tmp_size = seg_sizes[tp] + for typ in seg_sizes: + if typ != "unk": + tmp_size = seg_sizes[typ] tmp_ratio = tmp_size / total_size - log.write(f"{tp:>20}: {fmt_size(tmp_size):>8} ({tmp_ratio:.2%}) {Fore.GREEN}{seg_split[tp]} split{Style.RESET_ALL}, {Style.DIM}{seg_cached[tp]} cached") + log.write(f"{typ:>20}: {fmt_size(tmp_size):>8} ({tmp_ratio:.2%}) {Fore.GREEN}{seg_split[typ]} split{Style.RESET_ALL}, {Style.DIM}{seg_cached[typ]} cached") log.write(f"{'unknown':>20}: {fmt_size(unk_size):>8} ({unk_ratio:.2%}) from unknown bin files") # Save cache @@ -425,5 +420,5 @@ def main(rom_path, config_path, repo_path, modes, verbose, ignore_cache=False): if __name__ == "__main__": args = parser.parse_args() - error_code = main(args.rom, args.config, args.outdir, args.modes, args.verbose, not args.new) + error_code = main(args.config, args.outdir, args.rom, args.modes, args.verbose, not args.new) exit(error_code) diff --git a/tools/symbol_addrs.txt b/tools/symbol_addrs.txt index 7fcd3a36e8..5b2bccf615 100644 --- a/tools/symbol_addrs.txt +++ b/tools/symbol_addrs.txt @@ -324,7 +324,7 @@ nuContRmbForceStop = 0x800600A0; // type:func rom:0x3B4A0 nuContRmbForceStopEnd = 0x800600C0; // type:func rom:0x3B4C0 nuPiReadRomOverlay = 0x800600E0; // type:func rom:0x3B4E0 nuGfxThreadStart = 0x800601F0; // type:func rom:0x3B5F0 -nuGfxThread = 0x80060248; // type:func rom:0x3B648 +nuGfxThread2 = 0x80060248; // type:func rom:0x3B648 nuGfxSwapCfbFuncSet = 0x80060310; // type:func rom:0x3B710 nuGfxSwapCfb = 0x80060350; // type:func rom:0x3B750 nuGfxRetraceWait = 0x80060370; // type:func rom:0x3B770 @@ -513,7 +513,7 @@ _Litob = 0x8006B980; // type:func rom:0x46D80 _Ldtob = 0x8006BBD0; // type:func rom:0x46FD0 _Ldunscale = 0x8006C01C; // type:func rom:0x4741C _Genld = 0x8006C0B4; // type:func rom:0x474B4 -osGetCause = 0x8006C660; // type:func rom:0x47A60 +__osGetCause = 0x8006C660; // type:func rom:0x47A60 osGetSR = 0x8006C670; // type:func rom:0x47A70 osSetCompare = 0x8006C680; // type:func rom:0x47A80 osSetFpcCsr = 0x8006C690; // type:func rom:0x47A90 @@ -576,12 +576,13 @@ D_80078DB0 = 0x80078DB0; // rom:0x541B0 D_80078DB4 = 0x80078DB4; // rom:0x541B4 gEffectTable = 0x8007F214; gItemTable = 0x800878E0; // size:0x2D80 -gAreas = 0x800934F0; +gAreas = 0x800934F0; // type:data size:0x1D0 nuAuDmaState = 0x800A3BD0; nuAuDmaBuf = 0x800A3BE0; gCurrentEncounter = 0x800B0F10; // size:0xB0 gBattleState = 0x800DC068; gBattleStatus = 0x800DC070; // size:0x490 +gBattleAreas = 0x80095A30; // type:data size:0x600 test_below_player = 0x800DDFD0; // type:func rom:0x77480 trace_below_player = 0x800DE54C; // type:func rom:0x779FC collision_check_above = 0x800DE7E4; // type:func rom:0x77C94 @@ -5911,6 +5912,7 @@ func_802A2468_798428 = 0x802A2468; // type:func rom:0x798428 func_802BD754_31D2C4 = 0x802BD754; // type:func rom:0x31D2C4 func_80245D6C_8065EC = 0x80245D6C; // type:func rom:0x8065EC func_80241FE8_D3C5B8 = 0x80241FE8; // type:func rom:0xD3C5B8 +func_80242040_8B20B0 = 0x80242040; // type:func rom:0x8B20B0 func_802BCC80_E2D3B0 = 0x802BCC80; // type:func rom:0xE2D3B0 func_80240520_C9C820 = 0x80240520; // type:func rom:0xC9C820 func_80240A7C_8B0AEC = 0x80240A7C; // type:func rom:0x8B0AEC @@ -10408,3 +10410,6 @@ func_8004C0E4 = 0x8004C0E4; // type:func func_8004D324 = 0x8004D324; // type:func func_8004B748 = 0x8004B748; // type:func func_8004D428 = 0x8004D428; // type:func +gBattleItemTable = 0x80293C04; // type:data +func_8006A9F0 = 0x8006A9F0; // type:func rom:0x45B74 +rdpstateinit_dl = 0x80093BB8; // type:data diff --git a/undefined_syms.txt b/undefined_syms.txt index dc9e2f9f48..7f1a94e568 100644 --- a/undefined_syms.txt +++ b/undefined_syms.txt @@ -50,8 +50,12 @@ spiked_goomba = 0x8021B0AC; paragoomba = 0x8021CD00; StartRumbleWithParams = 0x80267D9C; rdpstateinit_dl = 0x80093bb8; +D_802BFEFC = 0x802BFEFC; D_802E9170 = 0x802E9170; D_802E91F0 = 0x802E91F0; D_802E9270 = 0x802E9270; D_802E92B0 = 0x802E92B0; +D_802E98E0 = 0x802E98E0; +D_802E9904 = 0x802E9904; +D_802E99DC = 0x802E99DC; nusched = 0x800DA440; diff --git a/undefined_syms_auto.txt b/undefined_syms_auto.txt index 13194753f8..cc80e99042 100644 --- a/undefined_syms_auto.txt +++ b/undefined_syms_auto.txt @@ -11,6 +11,7 @@ nuAuDmaBuf = 0x800A3BE0; gCurrentEncounter = 0x800B0F10; gBattleState = 0x800DC068; gBattleStatus = 0x800DC070; +gBattleAreas = 0x80095A30; gPartnerAnimations = 0x800F8348; gPlayerStatus = 0x8010EFC8; gPlayerData = 0x8010F290; @@ -201,10 +202,6 @@ gScriptListCount = 0x802DAC98; gCurrentPrintContext = 0x802DB260; gRandSeed = 0x80074410; gSpriteHeapPtr = 0x8034F800; -func_80243880_95EA80 = 0x80243880; -func_80246500_806D80 = 0x80246500; -func_80242040_8B20B0 = 0x80242040; -func_802440E8_804968 = 0x802440E8; D_A4700000 = 0xA4700000; D_A4300000 = 0xA4300000; D_A4300004 = 0xA4300004; @@ -311,7 +308,6 @@ D_800D9620 = 0x800D9620; D_800A0900 = 0x800A0900; D_800A0904 = 0x800A0904; D_800A0908 = 0x800A0908; -D_800934F4 = 0x800934F4; D_800D9230 = 0x800D9230; D_80210000 = 0x80210000; D_800B0CF0 = 0x800B0CF0; @@ -583,7 +579,6 @@ D_800B1B10 = 0x800B1B10; D_800B1B0E = 0x800B1B0E; D_800B1B0F = 0x800B1B0F; D_8009A660 = 0x8009A660; -D_8006A9F0 = 0x8006A9F0; D_8000030C = 0x8000030C; D_8000031C = 0x8000031C; D_800B0D08 = 0x800B0D08; @@ -615,7 +610,6 @@ D_800B0C50 = 0x800B0C50; D_800B0C40 = 0x800B0C40; D_800DC064 = 0x800DC064; D_800DC060 = 0x800DC060; -D_80095A30 = 0x80095A30; jtbl_8009A578 = 0x8009A578; jtbl_8009A590 = 0x8009A590; D_8010C970 = 0x8010C970; @@ -1427,7 +1421,6 @@ D_80080730 = 0x80080730; D_80080760 = 0x80080760; D_80080790 = 0x80080790; D_800807C0 = 0x800807C0; -D_80095A4C = 0x80095A4C; D_8029FB78 = 0x8029FB78; D_8029FB74 = 0x8029FB74; D_8029FB50 = 0x8029FB50; @@ -1518,7 +1511,6 @@ D_802BE300 = 0x802BE300; D_802BE30C = 0x802BE30C; D_802BE304 = 0x802BE304; D_8010EBB1 = 0x8010EBB1; -D_802BFEFC = 0x802BFEFC; D_802BFF00 = 0x802BFF00; D_802BFF04 = 0x802BFF04; D_802BFF08 = 0x802BFF08;