From 55293e4f6e566493866a15bf85e48a5d8234d768 Mon Sep 17 00:00:00 2001 From: Ryan Myers Date: Thu, 26 Jun 2025 07:32:25 -0400 Subject: [PATCH] Clean up math_util.s (#649) * Update some submodules, and tweak some printf code to more closely match the exact names and style of the official glibc version * Update some offsets * Clean up math_util.s, and figure out how to fix the sins functions just being labels. Now the elf file properly shows up as a function with the correct offset. * Fix tables, and clean up some float values --- include/macro.inc | 7 + src/game_ui.h | 4 +- src/hasm/math_util.s | 2898 ++++++++++++++------------ src/printf.c | 48 +- tools/asm-differ | 2 +- tools/m2c | 2 +- ver/symbols/symbol_addrs.jpn.v79.txt | 4 +- ver/symbols/symbol_addrs.pal.v77.txt | 4 +- ver/symbols/symbol_addrs.pal.v80.txt | 4 +- ver/symbols/symbol_addrs.us.v77.txt | 4 +- ver/symbols/symbol_addrs.us.v80.txt | 4 +- 11 files changed, 1562 insertions(+), 1419 deletions(-) diff --git a/include/macro.inc b/include/macro.inc index 483f19dd..798dba02 100644 --- a/include/macro.inc +++ b/include/macro.inc @@ -29,3 +29,10 @@ \label: .ent \label .endm + +# Used for alternative entries for Sin functions +.macro altleaf label + .global \label + \label: + .aent \label +.endm diff --git a/src/game_ui.h b/src/game_ui.h index bf11bf52..393fea79 100644 --- a/src/game_ui.h +++ b/src/game_ui.h @@ -351,8 +351,8 @@ typedef struct HudElement { /* 0x06 */ s16 spriteID; /* 0x08 */ f32 scale; /* 0x0C */ Vec3f pos; - /* 0x14 */ s16 spriteOffset; - /* 0x16 */ union { + /* 0x18 */ s16 spriteOffset; + /* 0x1A */ union { u8 filler[4]; // Ensures this union is 6 bytes, since Rare never actually use more than four. HudElement_ChallengeEggs challengeEggs; HudElement_RaceStartGo raceStartGo; diff --git a/src/hasm/math_util.s b/src/hasm/math_util.s index 4ba65515..0614f316 100644 --- a/src/hasm/math_util.s +++ b/src/hasm/math_util.s @@ -11,1400 +11,1536 @@ glabel gIntDisFlag .word 0x00000000 glabel gCurrentRNGSeed -.word 0x5141564D # Some magic number related to RNG? +.word 0x5141564D /* 'QAVM' */ glabel gPrevRNGSeed -.word 0x5141564D +.word 0x5141564D /* 'QAVM' */ +/* 1025 unsigned 16 bit integer values 0-1024 */ glabel gSineTable -.half 0x0000, 0x0032, 0x0065, 0x0097, 0x00C9, 0x00FB, 0x012E, 0x0160, 0x0192, 0x01C4, 0x01F7, 0x0229, 0x025B, 0x028D, 0x02C0, 0x02F2, 0x0324, 0x0356, 0x0389, 0x03BB, 0x03ED, 0x041F, 0x0452, 0x0484, 0x04B6, 0x04E8, 0x051B, 0x054D, 0x057F, 0x05B1, 0x05E3, 0x0616, 0x0648, 0x067A, 0x06AC, 0x06DE, 0x0711, 0x0743, 0x0775, 0x07A7, 0x07D9, 0x080C, 0x083E, 0x0870, 0x08A2, 0x08D4, 0x0906, 0x0938, 0x096B, 0x099D, 0x09CF, 0x0A01, 0x0A33, 0x0A65, 0x0A97, 0x0AC9, 0x0AFB, 0x0B2D, 0x0B60, 0x0B92, 0x0BC4, 0x0BF6, 0x0C28, 0x0C5A, 0x0C8C, 0x0CBE, 0x0CF0, 0x0D22, 0x0D54, 0x0D86, 0x0DB8, 0x0DEA, 0x0E1C, 0x0E4E, 0x0E80, 0x0EB2, 0x0EE4, 0x0F15, 0x0F47, 0x0F79, 0x0FAB, 0x0FDD, 0x100F, 0x1041, 0x1073, 0x10A4, 0x10D6, 0x1108, 0x113A, 0x116C, 0x119E, 0x11CF, 0x1201, 0x1233, 0x1265, 0x1296, 0x12C8, 0x12FA, 0x132B, 0x135D, 0x138F, 0x13C1, 0x13F2, 0x1424, 0x1455, 0x1487, 0x14B9, 0x14EA, 0x151C, 0x154D, 0x157F, 0x15B1, 0x15E2, 0x1614, 0x1645, 0x1677, 0x16A8, 0x16DA, 0x170B, 0x173C, 0x176E, 0x179F, 0x17D1, 0x1802, 0x1833, 0x1865, 0x1896, 0x18C7, 0x18F9, 0x192A, 0x195B, 0x198D, 0x19BE, 0x19EF, 0x1A20, 0x1A51, 0x1A83, 0x1AB4, 0x1AE5, 0x1B16, 0x1B47, 0x1B78, 0x1BA9, 0x1BDA, 0x1C0C, 0x1C3D, 0x1C6E, 0x1C9F, 0x1CD0, 0x1D01, 0x1D31, 0x1D62, 0x1D93, 0x1DC4, 0x1DF5, 0x1E26, 0x1E57, 0x1E88, 0x1EB8, 0x1EE9, 0x1F1A, 0x1F4B, 0x1F7B, 0x1FAC, 0x1FDD, 0x200E, 0x203E, 0x206F, 0x209F, 0x20D0, 0x2101, 0x2131, 0x2162, 0x2192, 0x21C3, 0x21F3, 0x2224, 0x2254, 0x2284, 0x22B5, 0x22E5, 0x2316, 0x2346, 0x2376, 0x23A7, 0x23D7, 0x2407, 0x2437, 0x2467, 0x2498, 0x24C8, 0x24F8, 0x2528, 0x2558, 0x2588, 0x25B8, 0x25E8, 0x2618, 0x2648, 0x2678, 0x26A8, 0x26D8, 0x2708, 0x2738, 0x2768, 0x2797, 0x27C7, 0x27F7, 0x2827, 0x2856, 0x2886, 0x28B6, 0x28E5, 0x2915, 0x2945, 0x2974, 0x29A4, 0x29D3, 0x2A03, 0x2A32, 0x2A62, 0x2A91, 0x2AC1, 0x2AF0, 0x2B1F, 0x2B4F, 0x2B7E, 0x2BAD, 0x2BDC, 0x2C0C, 0x2C3B, 0x2C6A, 0x2C99, 0x2CC8, 0x2CF7, 0x2D26, 0x2D55, 0x2D84, 0x2DB3, 0x2DE2, 0x2E11, 0x2E40, 0x2E6F, 0x2E9E, 0x2ECC, 0x2EFB, 0x2F2A, 0x2F59, 0x2F87, 0x2FB6, 0x2FE5, 0x3013, 0x3042, 0x3070, 0x309F, 0x30CD, 0x30FC, 0x312A, 0x3159, 0x3187, 0x31B5, 0x31E4, 0x3212, 0x3240, 0x326E, 0x329D, 0x32CB, 0x32F9, 0x3327, 0x3355, 0x3383, 0x33B1, 0x33DF, 0x340D, 0x343B, 0x3469, 0x3497, 0x34C4, 0x34F2, 0x3520, 0x354E, 0x357B, 0x35A9, 0x35D7, 0x3604, 0x3632, 0x365F, 0x368D, 0x36BA, 0x36E8, 0x3715, 0x3742, 0x3770, 0x379D, 0x37CA, 0x37F7, 0x3825, 0x3852, 0x387F, 0x38AC, 0x38D9, 0x3906, 0x3933, 0x3960, 0x398D, 0x39BA, 0x39E7, 0x3A13, 0x3A40, 0x3A6D, 0x3A9A, 0x3AC6, 0x3AF3, 0x3B20, 0x3B4C, 0x3B79, 0x3BA5, 0x3BD2, 0x3BFE, 0x3C2A, 0x3C57, 0x3C83, 0x3CAF, 0x3CDC, 0x3D08, 0x3D34, 0x3D60, 0x3D8C, 0x3DB8, 0x3DE4, 0x3E10, 0x3E3C, 0x3E68, 0x3E94, 0x3EC0, 0x3EEC, 0x3F17, 0x3F43, 0x3F6F, 0x3F9A, 0x3FC6, 0x3FF1, 0x401D, 0x4048, 0x4074, 0x409F, 0x40CB, 0x40F6, 0x4121, 0x414D, 0x4178, 0x41A3, 0x41CE, 0x41F9, 0x4224, 0x424F, 0x427A, 0x42A5, 0x42D0, 0x42FB, 0x4326, 0x4351, 0x437B, 0x43A6, 0x43D1, 0x43FB, 0x4426, 0x4450, 0x447B, 0x44A5, 0x44D0, 0x44FA, 0x4524, 0x454F, 0x4579, 0x45A3, 0x45CD, 0x45F7, 0x4621, 0x464B, 0x4675, 0x469F, 0x46C9, 0x46F3, 0x471D, 0x4747, 0x4770, 0x479A, 0x47C4, 0x47ED, 0x4817, 0x4840, 0x486A, 0x4893, 0x48BD, 0x48E6, 0x490F, 0x4939, 0x4962, 0x498B, 0x49B4, 0x49DD, 0x4A06, 0x4A2F, 0x4A58, 0x4A81, 0x4AAA, 0x4AD3, 0x4AFB, 0x4B24, 0x4B4D, 0x4B75, 0x4B9E, 0x4BC7, 0x4BEF, 0x4C17, 0x4C40, 0x4C68, 0x4C91, 0x4CB9, 0x4CE1, 0x4D09, 0x4D31, 0x4D59, 0x4D81, 0x4DA9, 0x4DD1, 0x4DF9, 0x4E21, 0x4E49, 0x4E71, 0x4E98, 0x4EC0, 0x4EE8, 0x4F0F, 0x4F37, 0x4F5E, 0x4F85, 0x4FAD, 0x4FD4, 0x4FFB, 0x5023, 0x504A, 0x5071, 0x5098, 0x50BF, 0x50E6, 0x510D, 0x5134, 0x515B, 0x5181, 0x51A8, 0x51CF, 0x51F5, 0x521C, 0x5243, 0x5269, 0x5290, 0x52B6, 0x52DC, 0x5303, 0x5329, 0x534F, 0x5375, 0x539B, 0x53C1, 0x53E7, 0x540D, 0x5433, 0x5459, 0x547F, 0x54A4, 0x54CA, 0x54F0, 0x5515, 0x553B, 0x5560, 0x5586, 0x55AB, 0x55D0, 0x55F6, 0x561B, 0x5640, 0x5665, 0x568A, 0x56AF, 0x56D4, 0x56F9, 0x571E, 0x5743, 0x5767, 0x578C, 0x57B1, 0x57D5, 0x57FA, 0x581E, 0x5843, 0x5867, 0x588C, 0x58B0, 0x58D4, 0x58F8, 0x591C, 0x5940, 0x5964, 0x5988, 0x59AC, 0x59D0, 0x59F4, 0x5A18, 0x5A3B, 0x5A5F, 0x5A82, 0x5AA6, 0x5AC9, 0x5AED, 0x5B10, 0x5B34, 0x5B57, 0x5B7A, 0x5B9D, 0x5BC0, 0x5BE3, 0x5C06, 0x5C29, 0x5C4C, 0x5C6F, 0x5C91, 0x5CB4, 0x5CD7, 0x5CF9, 0x5D1C, 0x5D3E, 0x5D61, 0x5D83, 0x5DA5, 0x5DC8, 0x5DEA, 0x5E0C, 0x5E2E, 0x5E50, 0x5E72, 0x5E94, 0x5EB6, 0x5ED7, 0x5EF9, 0x5F1B, 0x5F3C, 0x5F5E, 0x5F80, 0x5FA1, 0x5FC2, 0x5FE4, 0x6005, 0x6026, 0x6047, 0x6068, 0x6089, 0x60AA, 0x60CB, 0x60EC, 0x610D, 0x612E, 0x614E, 0x616F, 0x6190, 0x61B0, 0x61D1, 0x61F1, 0x6211, 0x6232, 0x6252, 0x6272, 0x6292, 0x62B2, 0x62D2, 0x62F2, 0x6312, 0x6332, 0x6351, 0x6371, 0x6391, 0x63B0, 0x63D0, 0x63EF, 0x640F, 0x642E, 0x644D, 0x646C, 0x648B, 0x64AB, 0x64CA, 0x64E9, 0x6507, 0x6526, 0x6545, 0x6564, 0x6582, 0x65A1, 0x65C0, 0x65DE, 0x65FC, 0x661B, 0x6639, 0x6657, 0x6675, 0x6693, 0x66B2, 0x66D0, 0x66ED, 0x670B, 0x6729, 0x6747, 0x6764, 0x6782, 0x67A0, 0x67BD, 0x67DA, 0x67F8, 0x6815, 0x6832, 0x6850, 0x686D, 0x688A, 0x68A7, 0x68C4, 0x68E0, 0x68FD, 0x691A, 0x6937, 0x6953, 0x6970, 0x698C, 0x69A9, 0x69C5, 0x69E1, 0x69FD, 0x6A1A, 0x6A36, 0x6A52, 0x6A6E, 0x6A89, 0x6AA5, 0x6AC1, 0x6ADD, 0x6AF8, 0x6B14, 0x6B30, 0x6B4B, 0x6B66, 0x6B82, 0x6B9D, 0x6BB8, 0x6BD3, 0x6BEE, 0x6C09, 0x6C24, 0x6C3F, 0x6C5A, 0x6C75, 0x6C8F, 0x6CAA, 0x6CC4, 0x6CDF, 0x6CF9, 0x6D14, 0x6D2E, 0x6D48, 0x6D62, 0x6D7C, 0x6D96, 0x6DB0, 0x6DCA, 0x6DE4, 0x6DFE, 0x6E17, 0x6E31, 0x6E4A, 0x6E64, 0x6E7D, 0x6E97, 0x6EB0, 0x6EC9, 0x6EE2, 0x6EFB, 0x6F14, 0x6F2D, 0x6F46, 0x6F5F, 0x6F78, 0x6F90, 0x6FA9, 0x6FC2, 0x6FDA, 0x6FF2, 0x700B, 0x7023, 0x703B, 0x7053, 0x706B, 0x7083, 0x709B, 0x70B3, 0x70CB, 0x70E3, 0x70FA, 0x7112, 0x712A, 0x7141, 0x7158, 0x7170, 0x7187, 0x719E, 0x71B5, 0x71CC, 0x71E3, 0x71FA, 0x7211, 0x7228, 0x723F, 0x7255, 0x726C, 0x7282, 0x7299, 0x72AF, 0x72C5, 0x72DC, 0x72F2, 0x7308, 0x731E, 0x7334, 0x734A, 0x735F, 0x7375, 0x738B, 0x73A0, 0x73B6, 0x73CB, 0x73E1, 0x73F6, 0x740B, 0x7421, 0x7436, 0x744B, 0x7460, 0x7475, 0x7489, 0x749E, 0x74B3, 0x74C7, 0x74DC, 0x74F0, 0x7505, 0x7519, 0x752D, 0x7542, 0x7556, 0x756A, 0x757E, 0x7592, 0x75A6, 0x75B9, 0x75CD, 0x75E1, 0x75F4, 0x7608, 0x761B, 0x762E, 0x7642, 0x7655, 0x7668, 0x767B, 0x768E, 0x76A1, 0x76B4, 0x76C7, 0x76D9, 0x76EC, 0x76FE, 0x7711, 0x7723, 0x7736, 0x7748, 0x775A, 0x776C, 0x777E, 0x7790, 0x77A2, 0x77B4, 0x77C6, 0x77D8, 0x77E9, 0x77FB, 0x780C, 0x781E, 0x782F, 0x7840, 0x7851, 0x7863, 0x7874, 0x7885, 0x7895, 0x78A6, 0x78B7, 0x78C8, 0x78D8, 0x78E9, 0x78F9, 0x790A, 0x791A, 0x792A, 0x793A, 0x794A, 0x795B, 0x796A, 0x797A, 0x798A, 0x799A, 0x79AA, 0x79B9, 0x79C9, 0x79D8, 0x79E7, 0x79F7, 0x7A06, 0x7A15, 0x7A24, 0x7A33, 0x7A42, 0x7A51, 0x7A60, 0x7A6E, 0x7A7D, 0x7A8C, 0x7A9A, 0x7AA8, 0x7AB7, 0x7AC5, 0x7AD3, 0x7AE1, 0x7AEF, 0x7AFD, 0x7B0B, 0x7B19, 0x7B27, 0x7B34, 0x7B42, 0x7B50, 0x7B5D, 0x7B6A, 0x7B78, 0x7B85, 0x7B92, 0x7B9F, 0x7BAC, 0x7BB9, 0x7BC6, 0x7BD3, 0x7BDF, 0x7BEC, 0x7BF9, 0x7C05, 0x7C11, 0x7C1E, 0x7C2A, 0x7C36, 0x7C42, 0x7C4E, 0x7C5A, 0x7C66, 0x7C72, 0x7C7E, 0x7C89, 0x7C95, 0x7CA0, 0x7CAC, 0x7CB7, 0x7CC2, 0x7CCE, 0x7CD9, 0x7CE4, 0x7CEF, 0x7CFA, 0x7D05, 0x7D0F, 0x7D1A, 0x7D25, 0x7D2F, 0x7D3A, 0x7D44, 0x7D4E, 0x7D58, 0x7D63, 0x7D6D, 0x7D77, 0x7D81, 0x7D8A, 0x7D94, 0x7D9E, 0x7DA7, 0x7DB1, 0x7DBA, 0x7DC4, 0x7DCD, 0x7DD6, 0x7DE0, 0x7DE9, 0x7DF2, 0x7DFB, 0x7E03, 0x7E0C, 0x7E15, 0x7E1E, 0x7E26, 0x7E2F, 0x7E37, 0x7E3F, 0x7E48, 0x7E50, 0x7E58, 0x7E60, 0x7E68, 0x7E70, 0x7E78, 0x7E7F, 0x7E87, 0x7E8E, 0x7E96, 0x7E9D, 0x7EA5, 0x7EAC, 0x7EB3, 0x7EBA, 0x7EC1, 0x7EC8, 0x7ECF, 0x7ED6, 0x7EDD, 0x7EE3, 0x7EEA, 0x7EF0, 0x7EF7, 0x7EFD, 0x7F03, 0x7F0A, 0x7F10, 0x7F16, 0x7F1C, 0x7F22, 0x7F27, 0x7F2D, 0x7F33, 0x7F38, 0x7F3E, 0x7F43, 0x7F49, 0x7F4E, 0x7F53, 0x7F58, 0x7F5D, 0x7F62, 0x7F67, 0x7F6C, 0x7F71, 0x7F75, 0x7F7A, 0x7F7E, 0x7F83, 0x7F87, 0x7F8B, 0x7F90, 0x7F94, 0x7F98, 0x7F9C, 0x7FA0, 0x7FA3, 0x7FA7, 0x7FAB, 0x7FAE, 0x7FB2, 0x7FB5, 0x7FB9, 0x7FBC, 0x7FBF, 0x7FC2, 0x7FC5, 0x7FC8, 0x7FCB, 0x7FCE, 0x7FD1, 0x7FD3, 0x7FD6, 0x7FD9, 0x7FDB, 0x7FDD, 0x7FE0, 0x7FE2, 0x7FE4, 0x7FE6, 0x7FE8, 0x7FEA, 0x7FEC, 0x7FED, 0x7FEF, 0x7FF1, 0x7FF2, 0x7FF4, 0x7FF5, 0x7FF6, 0x7FF7, 0x7FF8, 0x7FF9, 0x7FFA, 0x7FFB, 0x7FFC, 0x7FFD, 0x7FFE, 0x7FFE, 0x7FFF, 0x7FFF, 0x7FFF, 0x8000, 0x8000, 0x8000, 0x8000 +.half 0x0000, 0x0032, 0x0065, 0x0097, 0x00C9, 0x00FB, 0x012E, 0x0160, 0x0192, 0x01C4, 0x01F7, 0x0229, 0x025B, 0x028D, 0x02C0 +.half 0x02F2, 0x0324, 0x0356, 0x0389, 0x03BB, 0x03ED, 0x041F, 0x0452, 0x0484, 0x04B6, 0x04E8, 0x051B, 0x054D, 0x057F, 0x05B1 +.half 0x05E3, 0x0616, 0x0648, 0x067A, 0x06AC, 0x06DE, 0x0711, 0x0743, 0x0775, 0x07A7, 0x07D9, 0x080C, 0x083E, 0x0870, 0x08A2 +.half 0x08D4, 0x0906, 0x0938, 0x096B, 0x099D, 0x09CF, 0x0A01, 0x0A33, 0x0A65, 0x0A97, 0x0AC9, 0x0AFB, 0x0B2D, 0x0B60, 0x0B92 +.half 0x0BC4, 0x0BF6, 0x0C28, 0x0C5A, 0x0C8C, 0x0CBE, 0x0CF0, 0x0D22, 0x0D54, 0x0D86, 0x0DB8, 0x0DEA, 0x0E1C, 0x0E4E, 0x0E80 +.half 0x0EB2, 0x0EE4, 0x0F15, 0x0F47, 0x0F79, 0x0FAB, 0x0FDD, 0x100F, 0x1041, 0x1073, 0x10A4, 0x10D6, 0x1108, 0x113A, 0x116C +.half 0x119E, 0x11CF, 0x1201, 0x1233, 0x1265, 0x1296, 0x12C8, 0x12FA, 0x132B, 0x135D, 0x138F, 0x13C1, 0x13F2, 0x1424, 0x1455 +.half 0x1487, 0x14B9, 0x14EA, 0x151C, 0x154D, 0x157F, 0x15B1, 0x15E2, 0x1614, 0x1645, 0x1677, 0x16A8, 0x16DA, 0x170B, 0x173C +.half 0x176E, 0x179F, 0x17D1, 0x1802, 0x1833, 0x1865, 0x1896, 0x18C7, 0x18F9, 0x192A, 0x195B, 0x198D, 0x19BE, 0x19EF, 0x1A20 +.half 0x1A51, 0x1A83, 0x1AB4, 0x1AE5, 0x1B16, 0x1B47, 0x1B78, 0x1BA9, 0x1BDA, 0x1C0C, 0x1C3D, 0x1C6E, 0x1C9F, 0x1CD0, 0x1D01 +.half 0x1D31, 0x1D62, 0x1D93, 0x1DC4, 0x1DF5, 0x1E26, 0x1E57, 0x1E88, 0x1EB8, 0x1EE9, 0x1F1A, 0x1F4B, 0x1F7B, 0x1FAC, 0x1FDD +.half 0x200E, 0x203E, 0x206F, 0x209F, 0x20D0, 0x2101, 0x2131, 0x2162, 0x2192, 0x21C3, 0x21F3, 0x2224, 0x2254, 0x2284, 0x22B5 +.half 0x22E5, 0x2316, 0x2346, 0x2376, 0x23A7, 0x23D7, 0x2407, 0x2437, 0x2467, 0x2498, 0x24C8, 0x24F8, 0x2528, 0x2558, 0x2588 +.half 0x25B8, 0x25E8, 0x2618, 0x2648, 0x2678, 0x26A8, 0x26D8, 0x2708, 0x2738, 0x2768, 0x2797, 0x27C7, 0x27F7, 0x2827, 0x2856 +.half 0x2886, 0x28B6, 0x28E5, 0x2915, 0x2945, 0x2974, 0x29A4, 0x29D3, 0x2A03, 0x2A32, 0x2A62, 0x2A91, 0x2AC1, 0x2AF0, 0x2B1F +.half 0x2B4F, 0x2B7E, 0x2BAD, 0x2BDC, 0x2C0C, 0x2C3B, 0x2C6A, 0x2C99, 0x2CC8, 0x2CF7, 0x2D26, 0x2D55, 0x2D84, 0x2DB3, 0x2DE2 +.half 0x2E11, 0x2E40, 0x2E6F, 0x2E9E, 0x2ECC, 0x2EFB, 0x2F2A, 0x2F59, 0x2F87, 0x2FB6, 0x2FE5, 0x3013, 0x3042, 0x3070, 0x309F +.half 0x30CD, 0x30FC, 0x312A, 0x3159, 0x3187, 0x31B5, 0x31E4, 0x3212, 0x3240, 0x326E, 0x329D, 0x32CB, 0x32F9, 0x3327, 0x3355 +.half 0x3383, 0x33B1, 0x33DF, 0x340D, 0x343B, 0x3469, 0x3497, 0x34C4, 0x34F2, 0x3520, 0x354E, 0x357B, 0x35A9, 0x35D7, 0x3604 +.half 0x3632, 0x365F, 0x368D, 0x36BA, 0x36E8, 0x3715, 0x3742, 0x3770, 0x379D, 0x37CA, 0x37F7, 0x3825, 0x3852, 0x387F, 0x38AC +.half 0x38D9, 0x3906, 0x3933, 0x3960, 0x398D, 0x39BA, 0x39E7, 0x3A13, 0x3A40, 0x3A6D, 0x3A9A, 0x3AC6, 0x3AF3, 0x3B20, 0x3B4C +.half 0x3B79, 0x3BA5, 0x3BD2, 0x3BFE, 0x3C2A, 0x3C57, 0x3C83, 0x3CAF, 0x3CDC, 0x3D08, 0x3D34, 0x3D60, 0x3D8C, 0x3DB8, 0x3DE4 +.half 0x3E10, 0x3E3C, 0x3E68, 0x3E94, 0x3EC0, 0x3EEC, 0x3F17, 0x3F43, 0x3F6F, 0x3F9A, 0x3FC6, 0x3FF1, 0x401D, 0x4048, 0x4074 +.half 0x409F, 0x40CB, 0x40F6, 0x4121, 0x414D, 0x4178, 0x41A3, 0x41CE, 0x41F9, 0x4224, 0x424F, 0x427A, 0x42A5, 0x42D0, 0x42FB +.half 0x4326, 0x4351, 0x437B, 0x43A6, 0x43D1, 0x43FB, 0x4426, 0x4450, 0x447B, 0x44A5, 0x44D0, 0x44FA, 0x4524, 0x454F, 0x4579 +.half 0x45A3, 0x45CD, 0x45F7, 0x4621, 0x464B, 0x4675, 0x469F, 0x46C9, 0x46F3, 0x471D, 0x4747, 0x4770, 0x479A, 0x47C4, 0x47ED +.half 0x4817, 0x4840, 0x486A, 0x4893, 0x48BD, 0x48E6, 0x490F, 0x4939, 0x4962, 0x498B, 0x49B4, 0x49DD, 0x4A06, 0x4A2F, 0x4A58 +.half 0x4A81, 0x4AAA, 0x4AD3, 0x4AFB, 0x4B24, 0x4B4D, 0x4B75, 0x4B9E, 0x4BC7, 0x4BEF, 0x4C17, 0x4C40, 0x4C68, 0x4C91, 0x4CB9 +.half 0x4CE1, 0x4D09, 0x4D31, 0x4D59, 0x4D81, 0x4DA9, 0x4DD1, 0x4DF9, 0x4E21, 0x4E49, 0x4E71, 0x4E98, 0x4EC0, 0x4EE8, 0x4F0F +.half 0x4F37, 0x4F5E, 0x4F85, 0x4FAD, 0x4FD4, 0x4FFB, 0x5023, 0x504A, 0x5071, 0x5098, 0x50BF, 0x50E6, 0x510D, 0x5134, 0x515B +.half 0x5181, 0x51A8, 0x51CF, 0x51F5, 0x521C, 0x5243, 0x5269, 0x5290, 0x52B6, 0x52DC, 0x5303, 0x5329, 0x534F, 0x5375, 0x539B +.half 0x53C1, 0x53E7, 0x540D, 0x5433, 0x5459, 0x547F, 0x54A4, 0x54CA, 0x54F0, 0x5515, 0x553B, 0x5560, 0x5586, 0x55AB, 0x55D0 +.half 0x55F6, 0x561B, 0x5640, 0x5665, 0x568A, 0x56AF, 0x56D4, 0x56F9, 0x571E, 0x5743, 0x5767, 0x578C, 0x57B1, 0x57D5, 0x57FA +.half 0x581E, 0x5843, 0x5867, 0x588C, 0x58B0, 0x58D4, 0x58F8, 0x591C, 0x5940, 0x5964, 0x5988, 0x59AC, 0x59D0, 0x59F4, 0x5A18 +.half 0x5A3B, 0x5A5F, 0x5A82, 0x5AA6, 0x5AC9, 0x5AED, 0x5B10, 0x5B34, 0x5B57, 0x5B7A, 0x5B9D, 0x5BC0, 0x5BE3, 0x5C06, 0x5C29 +.half 0x5C4C, 0x5C6F, 0x5C91, 0x5CB4, 0x5CD7, 0x5CF9, 0x5D1C, 0x5D3E, 0x5D61, 0x5D83, 0x5DA5, 0x5DC8, 0x5DEA, 0x5E0C, 0x5E2E +.half 0x5E50, 0x5E72, 0x5E94, 0x5EB6, 0x5ED7, 0x5EF9, 0x5F1B, 0x5F3C, 0x5F5E, 0x5F80, 0x5FA1, 0x5FC2, 0x5FE4, 0x6005, 0x6026 +.half 0x6047, 0x6068, 0x6089, 0x60AA, 0x60CB, 0x60EC, 0x610D, 0x612E, 0x614E, 0x616F, 0x6190, 0x61B0, 0x61D1, 0x61F1, 0x6211 +.half 0x6232, 0x6252, 0x6272, 0x6292, 0x62B2, 0x62D2, 0x62F2, 0x6312, 0x6332, 0x6351, 0x6371, 0x6391, 0x63B0, 0x63D0, 0x63EF +.half 0x640F, 0x642E, 0x644D, 0x646C, 0x648B, 0x64AB, 0x64CA, 0x64E9, 0x6507, 0x6526, 0x6545, 0x6564, 0x6582, 0x65A1, 0x65C0 +.half 0x65DE, 0x65FC, 0x661B, 0x6639, 0x6657, 0x6675, 0x6693, 0x66B2, 0x66D0, 0x66ED, 0x670B, 0x6729, 0x6747, 0x6764, 0x6782 +.half 0x67A0, 0x67BD, 0x67DA, 0x67F8, 0x6815, 0x6832, 0x6850, 0x686D, 0x688A, 0x68A7, 0x68C4, 0x68E0, 0x68FD, 0x691A, 0x6937 +.half 0x6953, 0x6970, 0x698C, 0x69A9, 0x69C5, 0x69E1, 0x69FD, 0x6A1A, 0x6A36, 0x6A52, 0x6A6E, 0x6A89, 0x6AA5, 0x6AC1, 0x6ADD +.half 0x6AF8, 0x6B14, 0x6B30, 0x6B4B, 0x6B66, 0x6B82, 0x6B9D, 0x6BB8, 0x6BD3, 0x6BEE, 0x6C09, 0x6C24, 0x6C3F, 0x6C5A, 0x6C75 +.half 0x6C8F, 0x6CAA, 0x6CC4, 0x6CDF, 0x6CF9, 0x6D14, 0x6D2E, 0x6D48, 0x6D62, 0x6D7C, 0x6D96, 0x6DB0, 0x6DCA, 0x6DE4, 0x6DFE +.half 0x6E17, 0x6E31, 0x6E4A, 0x6E64, 0x6E7D, 0x6E97, 0x6EB0, 0x6EC9, 0x6EE2, 0x6EFB, 0x6F14, 0x6F2D, 0x6F46, 0x6F5F, 0x6F78 +.half 0x6F90, 0x6FA9, 0x6FC2, 0x6FDA, 0x6FF2, 0x700B, 0x7023, 0x703B, 0x7053, 0x706B, 0x7083, 0x709B, 0x70B3, 0x70CB, 0x70E3 +.half 0x70FA, 0x7112, 0x712A, 0x7141, 0x7158, 0x7170, 0x7187, 0x719E, 0x71B5, 0x71CC, 0x71E3, 0x71FA, 0x7211, 0x7228, 0x723F +.half 0x7255, 0x726C, 0x7282, 0x7299, 0x72AF, 0x72C5, 0x72DC, 0x72F2, 0x7308, 0x731E, 0x7334, 0x734A, 0x735F, 0x7375, 0x738B +.half 0x73A0, 0x73B6, 0x73CB, 0x73E1, 0x73F6, 0x740B, 0x7421, 0x7436, 0x744B, 0x7460, 0x7475, 0x7489, 0x749E, 0x74B3, 0x74C7 +.half 0x74DC, 0x74F0, 0x7505, 0x7519, 0x752D, 0x7542, 0x7556, 0x756A, 0x757E, 0x7592, 0x75A6, 0x75B9, 0x75CD, 0x75E1, 0x75F4 +.half 0x7608, 0x761B, 0x762E, 0x7642, 0x7655, 0x7668, 0x767B, 0x768E, 0x76A1, 0x76B4, 0x76C7, 0x76D9, 0x76EC, 0x76FE, 0x7711 +.half 0x7723, 0x7736, 0x7748, 0x775A, 0x776C, 0x777E, 0x7790, 0x77A2, 0x77B4, 0x77C6, 0x77D8, 0x77E9, 0x77FB, 0x780C, 0x781E +.half 0x782F, 0x7840, 0x7851, 0x7863, 0x7874, 0x7885, 0x7895, 0x78A6, 0x78B7, 0x78C8, 0x78D8, 0x78E9, 0x78F9, 0x790A, 0x791A +.half 0x792A, 0x793A, 0x794A, 0x795B, 0x796A, 0x797A, 0x798A, 0x799A, 0x79AA, 0x79B9, 0x79C9, 0x79D8, 0x79E7, 0x79F7, 0x7A06 +.half 0x7A15, 0x7A24, 0x7A33, 0x7A42, 0x7A51, 0x7A60, 0x7A6E, 0x7A7D, 0x7A8C, 0x7A9A, 0x7AA8, 0x7AB7, 0x7AC5, 0x7AD3, 0x7AE1 +.half 0x7AEF, 0x7AFD, 0x7B0B, 0x7B19, 0x7B27, 0x7B34, 0x7B42, 0x7B50, 0x7B5D, 0x7B6A, 0x7B78, 0x7B85, 0x7B92, 0x7B9F, 0x7BAC +.half 0x7BB9, 0x7BC6, 0x7BD3, 0x7BDF, 0x7BEC, 0x7BF9, 0x7C05, 0x7C11, 0x7C1E, 0x7C2A, 0x7C36, 0x7C42, 0x7C4E, 0x7C5A, 0x7C66 +.half 0x7C72, 0x7C7E, 0x7C89, 0x7C95, 0x7CA0, 0x7CAC, 0x7CB7, 0x7CC2, 0x7CCE, 0x7CD9, 0x7CE4, 0x7CEF, 0x7CFA, 0x7D05, 0x7D0F +.half 0x7D1A, 0x7D25, 0x7D2F, 0x7D3A, 0x7D44, 0x7D4E, 0x7D58, 0x7D63, 0x7D6D, 0x7D77, 0x7D81, 0x7D8A, 0x7D94, 0x7D9E, 0x7DA7 +.half 0x7DB1, 0x7DBA, 0x7DC4, 0x7DCD, 0x7DD6, 0x7DE0, 0x7DE9, 0x7DF2, 0x7DFB, 0x7E03, 0x7E0C, 0x7E15, 0x7E1E, 0x7E26, 0x7E2F +.half 0x7E37, 0x7E3F, 0x7E48, 0x7E50, 0x7E58, 0x7E60, 0x7E68, 0x7E70, 0x7E78, 0x7E7F, 0x7E87, 0x7E8E, 0x7E96, 0x7E9D, 0x7EA5 +.half 0x7EAC, 0x7EB3, 0x7EBA, 0x7EC1, 0x7EC8, 0x7ECF, 0x7ED6, 0x7EDD, 0x7EE3, 0x7EEA, 0x7EF0, 0x7EF7, 0x7EFD, 0x7F03, 0x7F0A +.half 0x7F10, 0x7F16, 0x7F1C, 0x7F22, 0x7F27, 0x7F2D, 0x7F33, 0x7F38, 0x7F3E, 0x7F43, 0x7F49, 0x7F4E, 0x7F53, 0x7F58, 0x7F5D +.half 0x7F62, 0x7F67, 0x7F6C, 0x7F71, 0x7F75, 0x7F7A, 0x7F7E, 0x7F83, 0x7F87, 0x7F8B, 0x7F90, 0x7F94, 0x7F98, 0x7F9C, 0x7FA0 +.half 0x7FA3, 0x7FA7, 0x7FAB, 0x7FAE, 0x7FB2, 0x7FB5, 0x7FB9, 0x7FBC, 0x7FBF, 0x7FC2, 0x7FC5, 0x7FC8, 0x7FCB, 0x7FCE, 0x7FD1 +.half 0x7FD3, 0x7FD6, 0x7FD9, 0x7FDB, 0x7FDD, 0x7FE0, 0x7FE2, 0x7FE4, 0x7FE6, 0x7FE8, 0x7FEA, 0x7FEC, 0x7FED, 0x7FEF, 0x7FF1 +.half 0x7FF2, 0x7FF4, 0x7FF5, 0x7FF6, 0x7FF7, 0x7FF8, 0x7FF9, 0x7FFA, 0x7FFB, 0x7FFC, 0x7FFD, 0x7FFE, 0x7FFE, 0x7FFF, 0x7FFF +.half 0x7FFF, 0x8000, 0x8000, 0x8000, 0x8000 +/* 1025 unsigned 16 bit integer values 0-1024 */ glabel gArcTanTable -.half 0x0000, 0x000A, 0x0014, 0x001F, 0x0029, 0x0033, 0x003D, 0x0047, 0x0051, 0x005C, 0x0066, 0x0070, 0x007A, 0x0084, 0x008F, 0x0099, 0x00A3, 0x00AD, 0x00B7, 0x00C2, 0x00CC, 0x00D6, 0x00E0, 0x00EA, 0x00F4, 0x00FF, 0x0109, 0x0113, 0x011D, 0x0127, 0x0131, 0x013C, 0x0146, 0x0150, 0x015A, 0x0164, 0x016F, 0x0179, 0x0183, 0x018D, 0x0197, 0x01A1, 0x01AC, 0x01B6, 0x01C0, 0x01CA, 0x01D4, 0x01DE, 0x01E9, 0x01F3, 0x01FD, 0x0207, 0x0211, 0x021B, 0x0226, 0x0230, 0x023A, 0x0244, 0x024E, 0x0258, 0x0262, 0x026D, 0x0277, 0x0281, 0x028B, 0x0295, 0x029F, 0x02A9, 0x02B4, 0x02BE, 0x02C8, 0x02D2, 0x02DC, 0x02E6, 0x02F0, 0x02FB, 0x0305, 0x030F, 0x0319, 0x0323, 0x032D, 0x0337, 0x0341, 0x034C, 0x0356, 0x0360, 0x036A, 0x0374, 0x037E, 0x0388, 0x0392, 0x039C, 0x03A7, 0x03B1, 0x03BB, 0x03C5, 0x03CF, 0x03D9, 0x03E3, 0x03ED, 0x03F7, 0x0401, 0x040C, 0x0416, 0x0420, 0x042A, 0x0434, 0x043E, 0x0448, 0x0452, 0x045C, 0x0466, 0x0470, 0x047A, 0x0484, 0x048E, 0x0499, 0x04A3, 0x04AD, 0x04B7, 0x04C1, 0x04CB, 0x04D5, 0x04DF, 0x04E9, 0x04F3, 0x04FD, 0x0507, 0x0511, 0x051B, 0x0525, 0x052F, 0x0539, 0x0543, 0x054D, 0x0557, 0x0561, 0x056B, 0x0575, 0x057F, 0x0589, 0x0593, 0x059D, 0x05A7, 0x05B1, 0x05BB, 0x05C5, 0x05CF, 0x05D9, 0x05E3, 0x05ED, 0x05F7, 0x0601, 0x060B, 0x0615, 0x061F, 0x0629, 0x0633, 0x063D, 0x0647, 0x0651, 0x065B, 0x0665, 0x066E, 0x0678, 0x0682, 0x068C, 0x0696, 0x06A0, 0x06AA, 0x06B4, 0x06BE, 0x06C8, 0x06D2, 0x06DC, 0x06E5, 0x06EF, 0x06F9, 0x0703, 0x070D, 0x0717, 0x0721, 0x072B, 0x0735, 0x073E, 0x0748, 0x0752, 0x075C, 0x0766, 0x0770, 0x077A, 0x0783, 0x078D, 0x0797, 0x07A1, 0x07AB, 0x07B5, 0x07BE, 0x07C8, 0x07D2, 0x07DC, 0x07E6, 0x07EF, 0x07F9, 0x0803, 0x080D, 0x0817, 0x0820, 0x082A, 0x0834, 0x083E, 0x0848, 0x0851, 0x085B, 0x0865, 0x086F, 0x0878, 0x0882, 0x088C, 0x0896, 0x089F, 0x08A9, 0x08B3, 0x08BD, 0x08C6, 0x08D0, 0x08DA, 0x08E3, 0x08ED, 0x08F7, 0x0901, 0x090A, 0x0914, 0x091E, 0x0927, 0x0931, 0x093B, 0x0944, 0x094E, 0x0958, 0x0961, 0x096B, 0x0975, 0x097E, 0x0988, 0x0992, 0x099B, 0x09A5, 0x09AE, 0x09B8, 0x09C2, 0x09CB, 0x09D5, 0x09DE, 0x09E8, 0x09F2, 0x09FB, 0x0A05, 0x0A0E, 0x0A18, 0x0A22, 0x0A2B, 0x0A35, 0x0A3E, 0x0A48, 0x0A51, 0x0A5B, 0x0A64, 0x0A6E, 0x0A77, 0x0A81, 0x0A8B, 0x0A94, 0x0A9E, 0x0AA7, 0x0AB1, 0x0ABA, 0x0AC4, 0x0ACD, 0x0AD7, 0x0AE0, 0x0AE9, 0x0AF3, 0x0AFC, 0x0B06, 0x0B0F, 0x0B19, 0x0B22, 0x0B2C, 0x0B35, 0x0B3F, 0x0B48, 0x0B51, 0x0B5B, 0x0B64, 0x0B6E, 0x0B77, 0x0B80, 0x0B8A, 0x0B93, 0x0B9D, 0x0BA6, 0x0BAF, 0x0BB9, 0x0BC2, 0x0BCB, 0x0BD5, 0x0BDE, 0x0BE7, 0x0BF1, 0x0BFA, 0x0C03, 0x0C0D, 0x0C16, 0x0C1F, 0x0C29, 0x0C32, 0x0C3B, 0x0C45, 0x0C4E, 0x0C57, 0x0C60, 0x0C6A, 0x0C73, 0x0C7C, 0x0C86, 0x0C8F, 0x0C98, 0x0CA1, 0x0CAB, 0x0CB4, 0x0CBD, 0x0CC6, 0x0CCF, 0x0CD9, 0x0CE2, 0x0CEB, 0x0CF4, 0x0CFD, 0x0D07, 0x0D10, 0x0D19, 0x0D22, 0x0D2B, 0x0D34, 0x0D3E, 0x0D47, 0x0D50, 0x0D59, 0x0D62, 0x0D6B, 0x0D74, 0x0D7D, 0x0D87, 0x0D90, 0x0D99, 0x0DA2, 0x0DAB, 0x0DB4, 0x0DBD, 0x0DC6, 0x0DCF, 0x0DD8, 0x0DE1, 0x0DEA, 0x0DF3, 0x0DFC, 0x0E05, 0x0E0F, 0x0E18, 0x0E21, 0x0E2A, 0x0E33, 0x0E3C, 0x0E45, 0x0E4E, 0x0E56, 0x0E5F, 0x0E68, 0x0E71, 0x0E7A, 0x0E83, 0x0E8C, 0x0E95, 0x0E9E, 0x0EA7, 0x0EB0, 0x0EB9, 0x0EC2, 0x0ECB, 0x0ED4, 0x0EDC, 0x0EE5, 0x0EEE, 0x0EF7, 0x0F00, 0x0F09, 0x0F12, 0x0F1B, 0x0F23, 0x0F2C, 0x0F35, 0x0F3E, 0x0F47, 0x0F50, 0x0F58, 0x0F61, 0x0F6A, 0x0F73, 0x0F7C, 0x0F84, 0x0F8D, 0x0F96, 0x0F9F, 0x0FA7, 0x0FB0, 0x0FB9, 0x0FC2, 0x0FCA, 0x0FD3, 0x0FDC, 0x0FE5, 0x0FED, 0x0FF6, 0x0FFF, 0x1007, 0x1010, 0x1019, 0x1021, 0x102A, 0x1033, 0x103B, 0x1044, 0x104D, 0x1055, 0x105E, 0x1067, 0x106F, 0x1078, 0x1080, 0x1089, 0x1092, 0x109A, 0x10A3, 0x10AB, 0x10B4, 0x10BC, 0x10C5, 0x10CE, 0x10D6, 0x10DF, 0x10E7, 0x10F0, 0x10F8, 0x1101, 0x1109, 0x1112, 0x111A, 0x1123, 0x112B, 0x1134, 0x113C, 0x1145, 0x114D, 0x1156, 0x115E, 0x1166, 0x116F, 0x1177, 0x1180, 0x1188, 0x1191, 0x1199, 0x11A1, 0x11AA, 0x11B2, 0x11BB, 0x11C3, 0x11CB, 0x11D4, 0x11DC, 0x11E4, 0x11ED, 0x11F5, 0x11FD, 0x1206, 0x120E, 0x1216, 0x121F, 0x1227, 0x122F, 0x1237, 0x1240, 0x1248, 0x1250, 0x1259, 0x1261, 0x1269, 0x1271, 0x127A, 0x1282, 0x128A, 0x1292, 0x129A, 0x12A3, 0x12AB, 0x12B3, 0x12BB, 0x12C3, 0x12CC, 0x12D4, 0x12DC, 0x12E4, 0x12EC, 0x12F4, 0x12FC, 0x1305, 0x130D, 0x1315, 0x131D, 0x1325, 0x132D, 0x1335, 0x133D, 0x1345, 0x134D, 0x1355, 0x135E, 0x1366, 0x136E, 0x1376, 0x137E, 0x1386, 0x138E, 0x1396, 0x139E, 0x13A6, 0x13AE, 0x13B6, 0x13BE, 0x13C6, 0x13CE, 0x13D6, 0x13DE, 0x13E6, 0x13ED, 0x13F5, 0x13FD, 0x1405, 0x140D, 0x1415, 0x141D, 0x1425, 0x142D, 0x1435, 0x143D, 0x1444, 0x144C, 0x1454, 0x145C, 0x1464, 0x146C, 0x1473, 0x147B, 0x1483, 0x148B, 0x1493, 0x149B, 0x14A2, 0x14AA, 0x14B2, 0x14BA, 0x14C1, 0x14C9, 0x14D1, 0x14D9, 0x14E0, 0x14E8, 0x14F0, 0x14F8, 0x14FF, 0x1507, 0x150F, 0x1516, 0x151E, 0x1526, 0x152D, 0x1535, 0x153D, 0x1544, 0x154C, 0x1554, 0x155B, 0x1563, 0x156B, 0x1572, 0x157A, 0x1581, 0x1589, 0x1591, 0x1598, 0x15A0, 0x15A7, 0x15AF, 0x15B7, 0x15BE, 0x15C6, 0x15CD, 0x15D5, 0x15DC, 0x15E4, 0x15EB, 0x15F3, 0x15FA, 0x1602, 0x1609, 0x1611, 0x1618, 0x1620, 0x1627, 0x162F, 0x1636, 0x163E, 0x1645, 0x164C, 0x1654, 0x165B, 0x1663, 0x166A, 0x1671, 0x1679, 0x1680, 0x1688, 0x168F, 0x1696, 0x169E, 0x16A5, 0x16AC, 0x16B4, 0x16BB, 0x16C2, 0x16CA, 0x16D1, 0x16D8, 0x16E0, 0x16E7, 0x16EE, 0x16F6, 0x16FD, 0x1704, 0x170B, 0x1713, 0x171A, 0x1721, 0x1728, 0x1730, 0x1737, 0x173E, 0x1745, 0x174C, 0x1754, 0x175B, 0x1762, 0x1769, 0x1770, 0x1778, 0x177F, 0x1786, 0x178D, 0x1794, 0x179B, 0x17A2, 0x17AA, 0x17B1, 0x17B8, 0x17BF, 0x17C6, 0x17CD, 0x17D4, 0x17DB, 0x17E2, 0x17E9, 0x17F0, 0x17F7, 0x17FE, 0x1806, 0x180D, 0x1814, 0x181B, 0x1822, 0x1829, 0x1830, 0x1837, 0x183E, 0x1845, 0x184C, 0x1853, 0x185A, 0x1860, 0x1867, 0x186E, 0x1875, 0x187C, 0x1883, 0x188A, 0x1891, 0x1898, 0x189F, 0x18A6, 0x18AD, 0x18B3, 0x18BA, 0x18C1, 0x18C8, 0x18CF, 0x18D6, 0x18DD, 0x18E3, 0x18EA, 0x18F1, 0x18F8, 0x18FF, 0x1906, 0x190C, 0x1913, 0x191A, 0x1921, 0x1928, 0x192E, 0x1935, 0x193C, 0x1943, 0x1949, 0x1950, 0x1957, 0x195D, 0x1964, 0x196B, 0x1972, 0x1978, 0x197F, 0x1986, 0x198C, 0x1993, 0x199A, 0x19A0, 0x19A7, 0x19AE, 0x19B4, 0x19BB, 0x19C2, 0x19C8, 0x19CF, 0x19D5, 0x19DC, 0x19E3, 0x19E9, 0x19F0, 0x19F6, 0x19FD, 0x1A04, 0x1A0A, 0x1A11, 0x1A17, 0x1A1E, 0x1A24, 0x1A2B, 0x1A31, 0x1A38, 0x1A3E, 0x1A45, 0x1A4B, 0x1A52, 0x1A58, 0x1A5F, 0x1A65, 0x1A6C, 0x1A72, 0x1A79, 0x1A7F, 0x1A86, 0x1A8C, 0x1A93, 0x1A99, 0x1A9F, 0x1AA6, 0x1AAC, 0x1AB3, 0x1AB9, 0x1AC0, 0x1AC6, 0x1ACC, 0x1AD3, 0x1AD9, 0x1ADF, 0x1AE6, 0x1AEC, 0x1AF2, 0x1AF9, 0x1AFF, 0x1B05, 0x1B0C, 0x1B12, 0x1B18, 0x1B1F, 0x1B25, 0x1B2B, 0x1B32, 0x1B38, 0x1B3E, 0x1B44, 0x1B4B, 0x1B51, 0x1B57, 0x1B5D, 0x1B64, 0x1B6A, 0x1B70, 0x1B76, 0x1B7D, 0x1B83, 0x1B89, 0x1B8F, 0x1B95, 0x1B9C, 0x1BA2, 0x1BA8, 0x1BAE, 0x1BB4, 0x1BBA, 0x1BC1, 0x1BC7, 0x1BCD, 0x1BD3, 0x1BD9, 0x1BDF, 0x1BE5, 0x1BEB, 0x1BF2, 0x1BF8, 0x1BFE, 0x1C04, 0x1C0A, 0x1C10, 0x1C16, 0x1C1C, 0x1C22, 0x1C28, 0x1C2E, 0x1C34, 0x1C3A, 0x1C40, 0x1C46, 0x1C4C, 0x1C52, 0x1C58, 0x1C5E, 0x1C64, 0x1C6A, 0x1C70, 0x1C76, 0x1C7C, 0x1C82, 0x1C88, 0x1C8E, 0x1C94, 0x1C9A, 0x1CA0, 0x1CA6, 0x1CAC, 0x1CB2, 0x1CB8, 0x1CBE, 0x1CC3, 0x1CC9, 0x1CCF, 0x1CD5, 0x1CDB, 0x1CE1, 0x1CE7, 0x1CED, 0x1CF3, 0x1CF8, 0x1CFE, 0x1D04, 0x1D0A, 0x1D10, 0x1D16, 0x1D1B, 0x1D21, 0x1D27, 0x1D2D, 0x1D33, 0x1D38, 0x1D3E, 0x1D44, 0x1D4A, 0x1D4F, 0x1D55, 0x1D5B, 0x1D61, 0x1D66, 0x1D6C, 0x1D72, 0x1D78, 0x1D7D, 0x1D83, 0x1D89, 0x1D8E, 0x1D94, 0x1D9A, 0x1DA0, 0x1DA5, 0x1DAB, 0x1DB1, 0x1DB6, 0x1DBC, 0x1DC2, 0x1DC7, 0x1DCD, 0x1DD3, 0x1DD8, 0x1DDE, 0x1DE3, 0x1DE9, 0x1DEF, 0x1DF4, 0x1DFA, 0x1DFF, 0x1E05, 0x1E0B, 0x1E10, 0x1E16, 0x1E1B, 0x1E21, 0x1E26, 0x1E2C, 0x1E32, 0x1E37, 0x1E3D, 0x1E42, 0x1E48, 0x1E4D, 0x1E53, 0x1E58, 0x1E5E, 0x1E63, 0x1E69, 0x1E6E, 0x1E74, 0x1E79, 0x1E7F, 0x1E84, 0x1E8A, 0x1E8F, 0x1E94, 0x1E9A, 0x1E9F, 0x1EA5, 0x1EAA, 0x1EB0, 0x1EB5, 0x1EBA, 0x1EC0, 0x1EC5, 0x1ECB, 0x1ED0, 0x1ED5, 0x1EDB, 0x1EE0, 0x1EE6, 0x1EEB, 0x1EF0, 0x1EF6, 0x1EFB, 0x1F00, 0x1F06, 0x1F0B, 0x1F10, 0x1F16, 0x1F1B, 0x1F20, 0x1F26, 0x1F2B, 0x1F30, 0x1F36, 0x1F3B, 0x1F40, 0x1F45, 0x1F4B, 0x1F50, 0x1F55, 0x1F5A, 0x1F60, 0x1F65, 0x1F6A, 0x1F6F, 0x1F75, 0x1F7A, 0x1F7F, 0x1F84, 0x1F8A, 0x1F8F, 0x1F94, 0x1F99, 0x1F9E, 0x1FA4, 0x1FA9, 0x1FAE, 0x1FB3, 0x1FB8, 0x1FBD, 0x1FC3, 0x1FC8, 0x1FCD, 0x1FD2, 0x1FD7, 0x1FDC, 0x1FE1, 0x1FE6, 0x1FEC, 0x1FF1, 0x1FF6, 0x1FFB, 0x2000 +.half 0x0000, 0x000A, 0x0014, 0x001F, 0x0029, 0x0033, 0x003D, 0x0047, 0x0051, 0x005C, 0x0066, 0x0070, 0x007A, 0x0084, 0x008F +.half 0x0099, 0x00A3, 0x00AD, 0x00B7, 0x00C2, 0x00CC, 0x00D6, 0x00E0, 0x00EA, 0x00F4, 0x00FF, 0x0109, 0x0113, 0x011D, 0x0127 +.half 0x0131, 0x013C, 0x0146, 0x0150, 0x015A, 0x0164, 0x016F, 0x0179, 0x0183, 0x018D, 0x0197, 0x01A1, 0x01AC, 0x01B6, 0x01C0 +.half 0x01CA, 0x01D4, 0x01DE, 0x01E9, 0x01F3, 0x01FD, 0x0207, 0x0211, 0x021B, 0x0226, 0x0230, 0x023A, 0x0244, 0x024E, 0x0258 +.half 0x0262, 0x026D, 0x0277, 0x0281, 0x028B, 0x0295, 0x029F, 0x02A9, 0x02B4, 0x02BE, 0x02C8, 0x02D2, 0x02DC, 0x02E6, 0x02F0 +.half 0x02FB, 0x0305, 0x030F, 0x0319, 0x0323, 0x032D, 0x0337, 0x0341, 0x034C, 0x0356, 0x0360, 0x036A, 0x0374, 0x037E, 0x0388 +.half 0x0392, 0x039C, 0x03A7, 0x03B1, 0x03BB, 0x03C5, 0x03CF, 0x03D9, 0x03E3, 0x03ED, 0x03F7, 0x0401, 0x040C, 0x0416, 0x0420 +.half 0x042A, 0x0434, 0x043E, 0x0448, 0x0452, 0x045C, 0x0466, 0x0470, 0x047A, 0x0484, 0x048E, 0x0499, 0x04A3, 0x04AD, 0x04B7 +.half 0x04C1, 0x04CB, 0x04D5, 0x04DF, 0x04E9, 0x04F3, 0x04FD, 0x0507, 0x0511, 0x051B, 0x0525, 0x052F, 0x0539, 0x0543, 0x054D +.half 0x0557, 0x0561, 0x056B, 0x0575, 0x057F, 0x0589, 0x0593, 0x059D, 0x05A7, 0x05B1, 0x05BB, 0x05C5, 0x05CF, 0x05D9, 0x05E3 +.half 0x05ED, 0x05F7, 0x0601, 0x060B, 0x0615, 0x061F, 0x0629, 0x0633, 0x063D, 0x0647, 0x0651, 0x065B, 0x0665, 0x066E, 0x0678 +.half 0x0682, 0x068C, 0x0696, 0x06A0, 0x06AA, 0x06B4, 0x06BE, 0x06C8, 0x06D2, 0x06DC, 0x06E5, 0x06EF, 0x06F9, 0x0703, 0x070D +.half 0x0717, 0x0721, 0x072B, 0x0735, 0x073E, 0x0748, 0x0752, 0x075C, 0x0766, 0x0770, 0x077A, 0x0783, 0x078D, 0x0797, 0x07A1 +.half 0x07AB, 0x07B5, 0x07BE, 0x07C8, 0x07D2, 0x07DC, 0x07E6, 0x07EF, 0x07F9, 0x0803, 0x080D, 0x0817, 0x0820, 0x082A, 0x0834 +.half 0x083E, 0x0848, 0x0851, 0x085B, 0x0865, 0x086F, 0x0878, 0x0882, 0x088C, 0x0896, 0x089F, 0x08A9, 0x08B3, 0x08BD, 0x08C6 +.half 0x08D0, 0x08DA, 0x08E3, 0x08ED, 0x08F7, 0x0901, 0x090A, 0x0914, 0x091E, 0x0927, 0x0931, 0x093B, 0x0944, 0x094E, 0x0958 +.half 0x0961, 0x096B, 0x0975, 0x097E, 0x0988, 0x0992, 0x099B, 0x09A5, 0x09AE, 0x09B8, 0x09C2, 0x09CB, 0x09D5, 0x09DE, 0x09E8 +.half 0x09F2, 0x09FB, 0x0A05, 0x0A0E, 0x0A18, 0x0A22, 0x0A2B, 0x0A35, 0x0A3E, 0x0A48, 0x0A51, 0x0A5B, 0x0A64, 0x0A6E, 0x0A77 +.half 0x0A81, 0x0A8B, 0x0A94, 0x0A9E, 0x0AA7, 0x0AB1, 0x0ABA, 0x0AC4, 0x0ACD, 0x0AD7, 0x0AE0, 0x0AE9, 0x0AF3, 0x0AFC, 0x0B06 +.half 0x0B0F, 0x0B19, 0x0B22, 0x0B2C, 0x0B35, 0x0B3F, 0x0B48, 0x0B51, 0x0B5B, 0x0B64, 0x0B6E, 0x0B77, 0x0B80, 0x0B8A, 0x0B93 +.half 0x0B9D, 0x0BA6, 0x0BAF, 0x0BB9, 0x0BC2, 0x0BCB, 0x0BD5, 0x0BDE, 0x0BE7, 0x0BF1, 0x0BFA, 0x0C03, 0x0C0D, 0x0C16, 0x0C1F +.half 0x0C29, 0x0C32, 0x0C3B, 0x0C45, 0x0C4E, 0x0C57, 0x0C60, 0x0C6A, 0x0C73, 0x0C7C, 0x0C86, 0x0C8F, 0x0C98, 0x0CA1, 0x0CAB +.half 0x0CB4, 0x0CBD, 0x0CC6, 0x0CCF, 0x0CD9, 0x0CE2, 0x0CEB, 0x0CF4, 0x0CFD, 0x0D07, 0x0D10, 0x0D19, 0x0D22, 0x0D2B, 0x0D34 +.half 0x0D3E, 0x0D47, 0x0D50, 0x0D59, 0x0D62, 0x0D6B, 0x0D74, 0x0D7D, 0x0D87, 0x0D90, 0x0D99, 0x0DA2, 0x0DAB, 0x0DB4, 0x0DBD +.half 0x0DC6, 0x0DCF, 0x0DD8, 0x0DE1, 0x0DEA, 0x0DF3, 0x0DFC, 0x0E05, 0x0E0F, 0x0E18, 0x0E21, 0x0E2A, 0x0E33, 0x0E3C, 0x0E45 +.half 0x0E4E, 0x0E56, 0x0E5F, 0x0E68, 0x0E71, 0x0E7A, 0x0E83, 0x0E8C, 0x0E95, 0x0E9E, 0x0EA7, 0x0EB0, 0x0EB9, 0x0EC2, 0x0ECB +.half 0x0ED4, 0x0EDC, 0x0EE5, 0x0EEE, 0x0EF7, 0x0F00, 0x0F09, 0x0F12, 0x0F1B, 0x0F23, 0x0F2C, 0x0F35, 0x0F3E, 0x0F47, 0x0F50 +.half 0x0F58, 0x0F61, 0x0F6A, 0x0F73, 0x0F7C, 0x0F84, 0x0F8D, 0x0F96, 0x0F9F, 0x0FA7, 0x0FB0, 0x0FB9, 0x0FC2, 0x0FCA, 0x0FD3 +.half 0x0FDC, 0x0FE5, 0x0FED, 0x0FF6, 0x0FFF, 0x1007, 0x1010, 0x1019, 0x1021, 0x102A, 0x1033, 0x103B, 0x1044, 0x104D, 0x1055 +.half 0x105E, 0x1067, 0x106F, 0x1078, 0x1080, 0x1089, 0x1092, 0x109A, 0x10A3, 0x10AB, 0x10B4, 0x10BC, 0x10C5, 0x10CE, 0x10D6 +.half 0x10DF, 0x10E7, 0x10F0, 0x10F8, 0x1101, 0x1109, 0x1112, 0x111A, 0x1123, 0x112B, 0x1134, 0x113C, 0x1145, 0x114D, 0x1156 +.half 0x115E, 0x1166, 0x116F, 0x1177, 0x1180, 0x1188, 0x1191, 0x1199, 0x11A1, 0x11AA, 0x11B2, 0x11BB, 0x11C3, 0x11CB, 0x11D4 +.half 0x11DC, 0x11E4, 0x11ED, 0x11F5, 0x11FD, 0x1206, 0x120E, 0x1216, 0x121F, 0x1227, 0x122F, 0x1237, 0x1240, 0x1248, 0x1250 +.half 0x1259, 0x1261, 0x1269, 0x1271, 0x127A, 0x1282, 0x128A, 0x1292, 0x129A, 0x12A3, 0x12AB, 0x12B3, 0x12BB, 0x12C3, 0x12CC +.half 0x12D4, 0x12DC, 0x12E4, 0x12EC, 0x12F4, 0x12FC, 0x1305, 0x130D, 0x1315, 0x131D, 0x1325, 0x132D, 0x1335, 0x133D, 0x1345 +.half 0x134D, 0x1355, 0x135E, 0x1366, 0x136E, 0x1376, 0x137E, 0x1386, 0x138E, 0x1396, 0x139E, 0x13A6, 0x13AE, 0x13B6, 0x13BE +.half 0x13C6, 0x13CE, 0x13D6, 0x13DE, 0x13E6, 0x13ED, 0x13F5, 0x13FD, 0x1405, 0x140D, 0x1415, 0x141D, 0x1425, 0x142D, 0x1435 +.half 0x143D, 0x1444, 0x144C, 0x1454, 0x145C, 0x1464, 0x146C, 0x1473, 0x147B, 0x1483, 0x148B, 0x1493, 0x149B, 0x14A2, 0x14AA +.half 0x14B2, 0x14BA, 0x14C1, 0x14C9, 0x14D1, 0x14D9, 0x14E0, 0x14E8, 0x14F0, 0x14F8, 0x14FF, 0x1507, 0x150F, 0x1516, 0x151E +.half 0x1526, 0x152D, 0x1535, 0x153D, 0x1544, 0x154C, 0x1554, 0x155B, 0x1563, 0x156B, 0x1572, 0x157A, 0x1581, 0x1589, 0x1591 +.half 0x1598, 0x15A0, 0x15A7, 0x15AF, 0x15B7, 0x15BE, 0x15C6, 0x15CD, 0x15D5, 0x15DC, 0x15E4, 0x15EB, 0x15F3, 0x15FA, 0x1602 +.half 0x1609, 0x1611, 0x1618, 0x1620, 0x1627, 0x162F, 0x1636, 0x163E, 0x1645, 0x164C, 0x1654, 0x165B, 0x1663, 0x166A, 0x1671 +.half 0x1679, 0x1680, 0x1688, 0x168F, 0x1696, 0x169E, 0x16A5, 0x16AC, 0x16B4, 0x16BB, 0x16C2, 0x16CA, 0x16D1, 0x16D8, 0x16E0 +.half 0x16E7, 0x16EE, 0x16F6, 0x16FD, 0x1704, 0x170B, 0x1713, 0x171A, 0x1721, 0x1728, 0x1730, 0x1737, 0x173E, 0x1745, 0x174C +.half 0x1754, 0x175B, 0x1762, 0x1769, 0x1770, 0x1778, 0x177F, 0x1786, 0x178D, 0x1794, 0x179B, 0x17A2, 0x17AA, 0x17B1, 0x17B8 +.half 0x17BF, 0x17C6, 0x17CD, 0x17D4, 0x17DB, 0x17E2, 0x17E9, 0x17F0, 0x17F7, 0x17FE, 0x1806, 0x180D, 0x1814, 0x181B, 0x1822 +.half 0x1829, 0x1830, 0x1837, 0x183E, 0x1845, 0x184C, 0x1853, 0x185A, 0x1860, 0x1867, 0x186E, 0x1875, 0x187C, 0x1883, 0x188A +.half 0x1891, 0x1898, 0x189F, 0x18A6, 0x18AD, 0x18B3, 0x18BA, 0x18C1, 0x18C8, 0x18CF, 0x18D6, 0x18DD, 0x18E3, 0x18EA, 0x18F1 +.half 0x18F8, 0x18FF, 0x1906, 0x190C, 0x1913, 0x191A, 0x1921, 0x1928, 0x192E, 0x1935, 0x193C, 0x1943, 0x1949, 0x1950, 0x1957 +.half 0x195D, 0x1964, 0x196B, 0x1972, 0x1978, 0x197F, 0x1986, 0x198C, 0x1993, 0x199A, 0x19A0, 0x19A7, 0x19AE, 0x19B4, 0x19BB +.half 0x19C2, 0x19C8, 0x19CF, 0x19D5, 0x19DC, 0x19E3, 0x19E9, 0x19F0, 0x19F6, 0x19FD, 0x1A04, 0x1A0A, 0x1A11, 0x1A17, 0x1A1E +.half 0x1A24, 0x1A2B, 0x1A31, 0x1A38, 0x1A3E, 0x1A45, 0x1A4B, 0x1A52, 0x1A58, 0x1A5F, 0x1A65, 0x1A6C, 0x1A72, 0x1A79, 0x1A7F +.half 0x1A86, 0x1A8C, 0x1A93, 0x1A99, 0x1A9F, 0x1AA6, 0x1AAC, 0x1AB3, 0x1AB9, 0x1AC0, 0x1AC6, 0x1ACC, 0x1AD3, 0x1AD9, 0x1ADF +.half 0x1AE6, 0x1AEC, 0x1AF2, 0x1AF9, 0x1AFF, 0x1B05, 0x1B0C, 0x1B12, 0x1B18, 0x1B1F, 0x1B25, 0x1B2B, 0x1B32, 0x1B38, 0x1B3E +.half 0x1B44, 0x1B4B, 0x1B51, 0x1B57, 0x1B5D, 0x1B64, 0x1B6A, 0x1B70, 0x1B76, 0x1B7D, 0x1B83, 0x1B89, 0x1B8F, 0x1B95, 0x1B9C +.half 0x1BA2, 0x1BA8, 0x1BAE, 0x1BB4, 0x1BBA, 0x1BC1, 0x1BC7, 0x1BCD, 0x1BD3, 0x1BD9, 0x1BDF, 0x1BE5, 0x1BEB, 0x1BF2, 0x1BF8 +.half 0x1BFE, 0x1C04, 0x1C0A, 0x1C10, 0x1C16, 0x1C1C, 0x1C22, 0x1C28, 0x1C2E, 0x1C34, 0x1C3A, 0x1C40, 0x1C46, 0x1C4C, 0x1C52 +.half 0x1C58, 0x1C5E, 0x1C64, 0x1C6A, 0x1C70, 0x1C76, 0x1C7C, 0x1C82, 0x1C88, 0x1C8E, 0x1C94, 0x1C9A, 0x1CA0, 0x1CA6, 0x1CAC +.half 0x1CB2, 0x1CB8, 0x1CBE, 0x1CC3, 0x1CC9, 0x1CCF, 0x1CD5, 0x1CDB, 0x1CE1, 0x1CE7, 0x1CED, 0x1CF3, 0x1CF8, 0x1CFE, 0x1D04 +.half 0x1D0A, 0x1D10, 0x1D16, 0x1D1B, 0x1D21, 0x1D27, 0x1D2D, 0x1D33, 0x1D38, 0x1D3E, 0x1D44, 0x1D4A, 0x1D4F, 0x1D55, 0x1D5B +.half 0x1D61, 0x1D66, 0x1D6C, 0x1D72, 0x1D78, 0x1D7D, 0x1D83, 0x1D89, 0x1D8E, 0x1D94, 0x1D9A, 0x1DA0, 0x1DA5, 0x1DAB, 0x1DB1 +.half 0x1DB6, 0x1DBC, 0x1DC2, 0x1DC7, 0x1DCD, 0x1DD3, 0x1DD8, 0x1DDE, 0x1DE3, 0x1DE9, 0x1DEF, 0x1DF4, 0x1DFA, 0x1DFF, 0x1E05 +.half 0x1E0B, 0x1E10, 0x1E16, 0x1E1B, 0x1E21, 0x1E26, 0x1E2C, 0x1E32, 0x1E37, 0x1E3D, 0x1E42, 0x1E48, 0x1E4D, 0x1E53, 0x1E58 +.half 0x1E5E, 0x1E63, 0x1E69, 0x1E6E, 0x1E74, 0x1E79, 0x1E7F, 0x1E84, 0x1E8A, 0x1E8F, 0x1E94, 0x1E9A, 0x1E9F, 0x1EA5, 0x1EAA +.half 0x1EB0, 0x1EB5, 0x1EBA, 0x1EC0, 0x1EC5, 0x1ECB, 0x1ED0, 0x1ED5, 0x1EDB, 0x1EE0, 0x1EE6, 0x1EEB, 0x1EF0, 0x1EF6, 0x1EFB +.half 0x1F00, 0x1F06, 0x1F0B, 0x1F10, 0x1F16, 0x1F1B, 0x1F20, 0x1F26, 0x1F2B, 0x1F30, 0x1F36, 0x1F3B, 0x1F40, 0x1F45, 0x1F4B +.half 0x1F50, 0x1F55, 0x1F5A, 0x1F60, 0x1F65, 0x1F6A, 0x1F6F, 0x1F75, 0x1F7A, 0x1F7F, 0x1F84, 0x1F8A, 0x1F8F, 0x1F94, 0x1F99 +.half 0x1F9E, 0x1FA4, 0x1FA9, 0x1FAE, 0x1FB3, 0x1FB8, 0x1FBD, 0x1FC3, 0x1FC8, 0x1FCD, 0x1FD2, 0x1FD7, 0x1FDC, 0x1FE1, 0x1FE6 +.half 0x1FEC, 0x1FF1, 0x1FF6, 0x1FFB, 0x2000 .section .text, "ax" -/* Generated by spimdisasm 1.30.0 */ - /* Official Name: disableInterrupts */ leaf interrupts_disable -/* 70110 8006F510 3C08800E */ lui $t0, %hi(gIntDisFlag) -/* 70114 8006F514 8108D430 */ lb $t0, %lo(gIntDisFlag)($t0) -/* 70118 8006F518 11000006 */ beqz $t0, .L8006F534 -/* 7011C 8006F51C 40086000 */ mfc0 $t0, $12 /* handwritten instruction */ -/* 70120 8006F520 2401FFFE */ addiu $at, $zero, -0x2 -/* 70124 8006F524 01014824 */ and $t1, $t0, $at -/* 70128 8006F528 40896000 */ mtc0 $t1, $12 /* handwritten instruction */ -/* 7012C 8006F52C 31020001 */ andi $v0, $t0, 0x1 -/* 70130 8006F530 00000000 */ nop +lui $t0, %hi(gIntDisFlag) +lb $t0, %lo(gIntDisFlag)($t0) +beqz $t0, .L8006F534 + mfc0 $t0, $12 +addiu $at, $zero, -0x2 +and $t1, $t0, $at +mtc0 $t1, $12 +andi $v0, $t0, 0x1 +nop .L8006F534: -/* 70134 8006F534 03E00008 */ jr $ra -/* 70138 8006F538 00000000 */ nop +jr $ra + nop .end interrupts_disable /* Official Name: enableInterrupts */ leaf interrupts_enable -/* 7013C 8006F53C 3C08800E */ lui $t0, %hi(gIntDisFlag) -/* 70140 8006F540 8108D430 */ lb $t0, %lo(gIntDisFlag)($t0) -/* 70144 8006F544 11000005 */ beqz $t0, .L8006F55C -/* 70148 8006F548 40086000 */ mfc0 $t0, $12 /* handwritten instruction */ -/* 7014C 8006F54C 01044025 */ or $t0, $t0, $a0 -/* 70150 8006F550 40886000 */ mtc0 $t0, $12 /* handwritten instruction */ -/* 70154 8006F554 00000000 */ nop -/* 70158 8006F558 00000000 */ nop +lui $t0, %hi(gIntDisFlag) +lb $t0, %lo(gIntDisFlag)($t0) +beqz $t0, .L8006F55C + mfc0 $t0, $12 +or $t0, $t0, $a0 +mtc0 $t0, $12 +nop +nop .L8006F55C: -/* 7015C 8006F55C 03E00008 */ jr $ra -/* 70160 8006F560 00000000 */ nop +jr $ra + nop .end interrupts_enable /* Official Name: setIntDisFlag */ leaf set_gIntDisFlag -/* 70164 8006F564 3C01800E */ lui $at, %hi(gIntDisFlag) -/* 70168 8006F568 03E00008 */ jr $ra -/* 7016C 8006F56C A024D430 */ sb $a0, %lo(gIntDisFlag)($at) +lui $at, %hi(gIntDisFlag) +jr $ra + sb $a0, %lo(gIntDisFlag)($at) .end set_gIntDisFlag /* Official Name: getIntDisFlag */ leaf get_gIntDisFlag -/* 70170 8006F570 3C02800E */ lui $v0, %hi(gIntDisFlag) -/* 70174 8006F574 03E00008 */ jr $ra -/* 70178 8006F578 9042D430 */ lbu $v0, %lo(gIntDisFlag)($v0) +lui $v0, %hi(gIntDisFlag) +jr $ra + lbu $v0, %lo(gIntDisFlag)($v0) .end get_gIntDisFlag leaf mtx_to_mtxs -/* 7017C 8006F57C 34080004 */ ori $t0, $zero, 0x4 -/* 70180 8006F580 3C0FFFFF */ lui $t7, (0xFFFF0000 >> 16) +ori $t0, $zero, 0x4 +lui $t7, 0xFFFF .L8006F584: -/* 70184 8006F584 8C890000 */ lw $t1, 0x0($a0) -/* 70188 8006F588 8C8A0020 */ lw $t2, 0x20($a0) -/* 7018C 8006F58C 8C8B0004 */ lw $t3, 0x4($a0) -/* 70190 8006F590 8C8C0024 */ lw $t4, 0x24($a0) -/* 70194 8006F594 A4A90004 */ sh $t1, 0x4($a1) -/* 70198 8006F598 A4AA0006 */ sh $t2, 0x6($a1) -/* 7019C 8006F59C A4AB000C */ sh $t3, 0xC($a1) -/* 701A0 8006F5A0 A4AC000E */ sh $t4, 0xE($a1) -/* 701A4 8006F5A4 00094C02 */ srl $t1, $t1, 16 -/* 701A8 8006F5A8 000A5402 */ srl $t2, $t2, 16 -/* 701AC 8006F5AC 000B5C02 */ srl $t3, $t3, 16 -/* 701B0 8006F5B0 000C6402 */ srl $t4, $t4, 16 -/* 701B4 8006F5B4 24840008 */ addiu $a0, $a0, 0x8 -/* 701B8 8006F5B8 A4A90000 */ sh $t1, 0x0($a1) -/* 701BC 8006F5BC A4AA0002 */ sh $t2, 0x2($a1) -/* 701C0 8006F5C0 A4AB0008 */ sh $t3, 0x8($a1) -/* 701C4 8006F5C4 A4AC000A */ sh $t4, 0xA($a1) -/* 701C8 8006F5C8 20A50010 */ addi $a1, $a1, 0x10 /* handwritten instruction */ -/* 701CC 8006F5CC 2508FFFF */ addiu $t0, $t0, -0x1 -/* 701D0 8006F5D0 5500FFEC */ bnel $t0, $zero, .L8006F584 -/* 701D4 8006F5D4 00000000 */ nop -/* 701D8 8006F5D8 03E00008 */ jr $ra -/* 701DC 8006F5DC 00000000 */ nop +lw $t1, 0x0($a0) +lw $t2, 0x20($a0) +lw $t3, 0x4($a0) +lw $t4, 0x24($a0) +sh $t1, 0x4($a1) +sh $t2, 0x6($a1) +sh $t3, 0xC($a1) +sh $t4, 0xE($a1) +srl $t1, $t1, 16 +srl $t2, $t2, 16 +srl $t3, $t3, 16 +srl $t4, $t4, 16 +addiu $a0, $a0, 0x8 +sh $t1, 0x0($a1) +sh $t2, 0x2($a1) +sh $t3, 0x8($a1) +sh $t4, 0xA($a1) +addi $a1, $a1, 0x10 +addiu $t0, $t0, -0x1 +bnel $t0, $zero, .L8006F584 + nop +jr $ra + nop .end mtx_to_mtxs leaf mtxf_to_mtxs -/* 701E0 8006F5E0 3C014780 */ lui $at, (0x47800000 >> 16) -/* 701E4 8006F5E4 44816000 */ mtc1 $at, $f12 -/* 701E8 8006F5E8 34080004 */ ori $t0, $zero, 0x4 +li.s $at, 65536.0 +mtc1 $at, $f12 +ori $t0, $zero, 0x4 .L8006F5EC: -/* 701EC 8006F5EC C4840000 */ lwc1 $f4, 0x0($a0) -/* 701F0 8006F5F0 C4860004 */ lwc1 $f6, 0x4($a0) -/* 701F4 8006F5F4 C4880008 */ lwc1 $f8, 0x8($a0) -/* 701F8 8006F5F8 460C2102 */ mul.s $f4, $f4, $f12 -/* 701FC 8006F5FC C48A000C */ lwc1 $f10, 0xC($a0) -/* 70200 8006F600 24840010 */ addiu $a0, $a0, 0x10 -/* 70204 8006F604 460C3182 */ mul.s $f6, $f6, $f12 -/* 70208 8006F608 2508FFFF */ addiu $t0, $t0, -0x1 -/* 7020C 8006F60C 24A50010 */ addiu $a1, $a1, 0x10 -/* 70210 8006F610 460C4202 */ mul.s $f8, $f8, $f12 -/* 70214 8006F614 00000000 */ nop -/* 70218 8006F618 460C5282 */ mul.s $f10, $f10, $f12 -/* 7021C 8006F61C 4600210D */ trunc.w.s $f4, $f4 -/* 70220 8006F620 4600318D */ trunc.w.s $f6, $f6 -/* 70224 8006F624 E4A4FFF0 */ swc1 $f4, -0x10($a1) -/* 70228 8006F628 4600420D */ trunc.w.s $f8, $f8 -/* 7022C 8006F62C E4A6FFF4 */ swc1 $f6, -0xC($a1) -/* 70230 8006F630 4600528D */ trunc.w.s $f10, $f10 -/* 70234 8006F634 E4A8FFF8 */ swc1 $f8, -0x8($a1) -/* 70238 8006F638 E4AAFFFC */ swc1 $f10, -0x4($a1) -/* 7023C 8006F63C 5500FFEB */ bnel $t0, $zero, .L8006F5EC -/* 70240 8006F640 00000000 */ nop -/* 70244 8006F644 03E00008 */ jr $ra -/* 70248 8006F648 00000000 */ nop +lwc1 $f4, 0x0($a0) +lwc1 $f6, 0x4($a0) +lwc1 $f8, 0x8($a0) +mul.s $f4, $f4, $f12 +lwc1 $f10, 0xC($a0) +addiu $a0, $a0, 0x10 +mul.s $f6, $f6, $f12 +addiu $t0, $t0, -0x1 +addiu $a1, $a1, 0x10 +mul.s $f8, $f8, $f12 +nop +mul.s $f10, $f10, $f12 +trunc.w.s $f4, $f4 +trunc.w.s $f6, $f6 +swc1 $f4, -0x10($a1) +trunc.w.s $f8, $f8 +swc1 $f6, -0xC($a1) +trunc.w.s $f10, $f10 +swc1 $f8, -0x8($a1) +swc1 $f10, -0x4($a1) +bnel $t0, $zero, .L8006F5EC + nop +jr $ra + nop .end mtxf_to_mtxs /* Official Name: mathMtxXFMF */ leaf mtxf_transform_point -/* 7024C 8006F64C 44856000 */ mtc1 $a1, $f12 -/* 70250 8006F650 C4840000 */ lwc1 $f4, 0x0($a0) -/* 70254 8006F654 44867000 */ mtc1 $a2, $f14 -/* 70258 8006F658 C4880010 */ lwc1 $f8, 0x10($a0) -/* 7025C 8006F65C 460C2182 */ mul.s $f6, $f4, $f12 -/* 70260 8006F660 44878000 */ mtc1 $a3, $f16 -/* 70264 8006F664 C4840020 */ lwc1 $f4, 0x20($a0) -/* 70268 8006F668 460E4282 */ mul.s $f10, $f8, $f14 -/* 7026C 8006F66C 8FAE0010 */ lw $t6, 0x10($sp) -/* 70270 8006F670 46102202 */ mul.s $f8, $f4, $f16 -/* 70274 8006F674 460A3480 */ add.s $f18, $f6, $f10 -/* 70278 8006F678 C48A0030 */ lwc1 $f10, 0x30($a0) -/* 7027C 8006F67C 46089180 */ add.s $f6, $f18, $f8 -/* 70280 8006F680 46065100 */ add.s $f4, $f10, $f6 -/* 70284 8006F684 E5C40000 */ swc1 $f4, 0x0($t6) -/* 70288 8006F688 C4920004 */ lwc1 $f18, 0x4($a0) -/* 7028C 8006F68C C48A0014 */ lwc1 $f10, 0x14($a0) -/* 70290 8006F690 8FAF0014 */ lw $t7, 0x14($sp) -/* 70294 8006F694 460C9202 */ mul.s $f8, $f18, $f12 -/* 70298 8006F698 C4920024 */ lwc1 $f18, 0x24($a0) -/* 7029C 8006F69C 460E5182 */ mul.s $f6, $f10, $f14 -/* 702A0 8006F6A0 46064100 */ add.s $f4, $f8, $f6 -/* 702A4 8006F6A4 46109282 */ mul.s $f10, $f18, $f16 -/* 702A8 8006F6A8 C4860034 */ lwc1 $f6, 0x34($a0) -/* 702AC 8006F6AC 460A2200 */ add.s $f8, $f4, $f10 -/* 702B0 8006F6B0 46083480 */ add.s $f18, $f6, $f8 -/* 702B4 8006F6B4 E5F20000 */ swc1 $f18, 0x0($t7) -/* 702B8 8006F6B8 C4840008 */ lwc1 $f4, 0x8($a0) -/* 702BC 8006F6BC C4860018 */ lwc1 $f6, 0x18($a0) -/* 702C0 8006F6C0 8FB80018 */ lw $t8, 0x18($sp) -/* 702C4 8006F6C4 460C2282 */ mul.s $f10, $f4, $f12 -/* 702C8 8006F6C8 C4840028 */ lwc1 $f4, 0x28($a0) -/* 702CC 8006F6CC 460E3202 */ mul.s $f8, $f6, $f14 -/* 702D0 8006F6D0 46085480 */ add.s $f18, $f10, $f8 -/* 702D4 8006F6D4 46102182 */ mul.s $f6, $f4, $f16 -/* 702D8 8006F6D8 C4880038 */ lwc1 $f8, 0x38($a0) -/* 702DC 8006F6DC 46069280 */ add.s $f10, $f18, $f6 -/* 702E0 8006F6E0 460A4100 */ add.s $f4, $f8, $f10 -/* 702E4 8006F6E4 03E00008 */ jr $ra -/* 702E8 8006F6E8 E7040000 */ swc1 $f4, 0x0($t8) +mtc1 $a1, $f12 +lwc1 $f4, 0x0($a0) +mtc1 $a2, $f14 +lwc1 $f8, 0x10($a0) +mul.s $f6, $f4, $f12 +mtc1 $a3, $f16 +lwc1 $f4, 0x20($a0) +mul.s $f10, $f8, $f14 +lw $t6, 0x10($sp) +mul.s $f8, $f4, $f16 +add.s $f18, $f6, $f10 +lwc1 $f10, 0x30($a0) +add.s $f6, $f18, $f8 +add.s $f4, $f10, $f6 +swc1 $f4, 0x0($t6) +lwc1 $f18, 0x4($a0) +lwc1 $f10, 0x14($a0) +lw $t7, 0x14($sp) +mul.s $f8, $f18, $f12 +lwc1 $f18, 0x24($a0) +mul.s $f6, $f10, $f14 +add.s $f4, $f8, $f6 +mul.s $f10, $f18, $f16 +lwc1 $f6, 0x34($a0) +add.s $f8, $f4, $f10 +add.s $f18, $f6, $f8 +swc1 $f18, 0x0($t7) +lwc1 $f4, 0x8($a0) +lwc1 $f6, 0x18($a0) +lw $t8, 0x18($sp) +mul.s $f10, $f4, $f12 +lwc1 $f4, 0x28($a0) +mul.s $f8, $f6, $f14 +add.s $f18, $f10, $f8 +mul.s $f6, $f4, $f16 +lwc1 $f8, 0x38($a0) +add.s $f10, $f18, $f6 +add.s $f4, $f8, $f10 +jr $ra + swc1 $f4, 0x0($t8) .end mtxf_transform_point /* Official Name: mathMtxFastXFMF */ leaf mtxf_transform_dir -/* 702EC 8006F6EC C4A40000 */ lwc1 $f4, 0x0($a1) -/* 702F0 8006F6F0 C48A0000 */ lwc1 $f10, 0x0($a0) -/* 702F4 8006F6F4 C4A60004 */ lwc1 $f6, 0x4($a1) -/* 702F8 8006F6F8 C48C0010 */ lwc1 $f12, 0x10($a0) -/* 702FC 8006F6FC 460A2282 */ mul.s $f10, $f4, $f10 -/* 70300 8006F700 C4A80008 */ lwc1 $f8, 0x8($a1) -/* 70304 8006F704 C48E0020 */ lwc1 $f14, 0x20($a0) -/* 70308 8006F708 460C3302 */ mul.s $f12, $f6, $f12 -/* 7030C 8006F70C 460C5300 */ add.s $f12, $f10, $f12 -/* 70310 8006F710 460E4382 */ mul.s $f14, $f8, $f14 -/* 70314 8006F714 C48A0004 */ lwc1 $f10, 0x4($a0) -/* 70318 8006F718 460A2282 */ mul.s $f10, $f4, $f10 -/* 7031C 8006F71C 460E6400 */ add.s $f16, $f12, $f14 -/* 70320 8006F720 C48C0014 */ lwc1 $f12, 0x14($a0) -/* 70324 8006F724 C48E0024 */ lwc1 $f14, 0x24($a0) -/* 70328 8006F728 460C3302 */ mul.s $f12, $f6, $f12 -/* 7032C 8006F72C E4D00000 */ swc1 $f16, 0x0($a2) -/* 70330 8006F730 460E4382 */ mul.s $f14, $f8, $f14 -/* 70334 8006F734 460C5300 */ add.s $f12, $f10, $f12 -/* 70338 8006F738 C48A0008 */ lwc1 $f10, 0x8($a0) -/* 7033C 8006F73C 460E6400 */ add.s $f16, $f12, $f14 -/* 70340 8006F740 460A2282 */ mul.s $f10, $f4, $f10 -/* 70344 8006F744 C48C0018 */ lwc1 $f12, 0x18($a0) -/* 70348 8006F748 C48E0028 */ lwc1 $f14, 0x28($a0) -/* 7034C 8006F74C E4D00004 */ swc1 $f16, 0x4($a2) -/* 70350 8006F750 460C3302 */ mul.s $f12, $f6, $f12 -/* 70354 8006F754 460C5300 */ add.s $f12, $f10, $f12 -/* 70358 8006F758 460E4382 */ mul.s $f14, $f8, $f14 -/* 7035C 8006F75C 460E6380 */ add.s $f14, $f12, $f14 -/* 70360 8006F760 03E00008 */ jr $ra -/* 70364 8006F764 E4CE0008 */ swc1 $f14, 0x8($a2) +lwc1 $f4, 0x0($a1) +lwc1 $f10, 0x0($a0) +lwc1 $f6, 0x4($a1) +lwc1 $f12, 0x10($a0) +mul.s $f10, $f4, $f10 +lwc1 $f8, 0x8($a1) +lwc1 $f14, 0x20($a0) +mul.s $f12, $f6, $f12 +add.s $f12, $f10, $f12 +mul.s $f14, $f8, $f14 +lwc1 $f10, 0x4($a0) +mul.s $f10, $f4, $f10 +add.s $f16, $f12, $f14 +lwc1 $f12, 0x14($a0) +lwc1 $f14, 0x24($a0) +mul.s $f12, $f6, $f12 +swc1 $f16, 0x0($a2) +mul.s $f14, $f8, $f14 +add.s $f12, $f10, $f12 +lwc1 $f10, 0x8($a0) +add.s $f16, $f12, $f14 +mul.s $f10, $f4, $f10 +lwc1 $f12, 0x18($a0) +lwc1 $f14, 0x28($a0) +swc1 $f16, 0x4($a2) +mul.s $f12, $f6, $f12 +add.s $f12, $f10, $f12 +mul.s $f14, $f8, $f14 +add.s $f14, $f12, $f14 +jr $ra + swc1 $f14, 0x8($a2) .end mtxf_transform_dir /* Official Name: mathMtxCatF */ leaf mtxf_mul -/* 70368 8006F768 27BDFFF8 */ addiu $sp, $sp, -0x8 -/* 7036C 8006F76C F7A20000 */ sdc1 $f2, 0x0($sp) -/* 70370 8006F770 34080004 */ ori $t0, $zero, 0x4 +addiu $sp, $sp, -0x8 +sdc1 $f2, 0x0($sp) +ori $t0, $zero, 0x4 .L8006F774: -/* 70374 8006F774 C4820000 */ lwc1 $f2, 0x0($a0) -/* 70378 8006F778 C4AA0000 */ lwc1 $f10, 0x0($a1) -/* 7037C 8006F77C C4840004 */ lwc1 $f4, 0x4($a0) -/* 70380 8006F780 C4AC0010 */ lwc1 $f12, 0x10($a1) -/* 70384 8006F784 460A1282 */ mul.s $f10, $f2, $f10 -/* 70388 8006F788 C4860008 */ lwc1 $f6, 0x8($a0) -/* 7038C 8006F78C C4AE0020 */ lwc1 $f14, 0x20($a1) -/* 70390 8006F790 460C2302 */ mul.s $f12, $f4, $f12 -/* 70394 8006F794 C488000C */ lwc1 $f8, 0xC($a0) -/* 70398 8006F798 C4B00030 */ lwc1 $f16, 0x30($a1) -/* 7039C 8006F79C 460E3382 */ mul.s $f14, $f6, $f14 -/* 703A0 8006F7A0 24840010 */ addiu $a0, $a0, 0x10 -/* 703A4 8006F7A4 24C60010 */ addiu $a2, $a2, 0x10 -/* 703A8 8006F7A8 46104402 */ mul.s $f16, $f8, $f16 -/* 703AC 8006F7AC 2508FFFF */ addiu $t0, $t0, -0x1 -/* 703B0 8006F7B0 460E6380 */ add.s $f14, $f12, $f14 -/* 703B4 8006F7B4 C4AC0014 */ lwc1 $f12, 0x14($a1) -/* 703B8 8006F7B8 46105400 */ add.s $f16, $f10, $f16 -/* 703BC 8006F7BC C4AA0004 */ lwc1 $f10, 0x4($a1) -/* 703C0 8006F7C0 460A1282 */ mul.s $f10, $f2, $f10 -/* 703C4 8006F7C4 46107480 */ add.s $f18, $f14, $f16 -/* 703C8 8006F7C8 C4AE0024 */ lwc1 $f14, 0x24($a1) -/* 703CC 8006F7CC 460C2302 */ mul.s $f12, $f4, $f12 -/* 703D0 8006F7D0 C4B00034 */ lwc1 $f16, 0x34($a1) -/* 703D4 8006F7D4 E4D2FFF0 */ swc1 $f18, -0x10($a2) -/* 703D8 8006F7D8 460E3382 */ mul.s $f14, $f6, $f14 -/* 703DC 8006F7DC 00000000 */ nop -/* 703E0 8006F7E0 46104402 */ mul.s $f16, $f8, $f16 -/* 703E4 8006F7E4 460E6380 */ add.s $f14, $f12, $f14 -/* 703E8 8006F7E8 C4AC0018 */ lwc1 $f12, 0x18($a1) -/* 703EC 8006F7EC 46105400 */ add.s $f16, $f10, $f16 -/* 703F0 8006F7F0 C4AA0008 */ lwc1 $f10, 0x8($a1) -/* 703F4 8006F7F4 460A1282 */ mul.s $f10, $f2, $f10 -/* 703F8 8006F7F8 46107480 */ add.s $f18, $f14, $f16 -/* 703FC 8006F7FC C4AE0028 */ lwc1 $f14, 0x28($a1) -/* 70400 8006F800 460C2302 */ mul.s $f12, $f4, $f12 -/* 70404 8006F804 C4B00038 */ lwc1 $f16, 0x38($a1) -/* 70408 8006F808 E4D2FFF4 */ swc1 $f18, -0xC($a2) -/* 7040C 8006F80C 460E3382 */ mul.s $f14, $f6, $f14 -/* 70410 8006F810 00000000 */ nop -/* 70414 8006F814 46104402 */ mul.s $f16, $f8, $f16 -/* 70418 8006F818 460E6380 */ add.s $f14, $f12, $f14 -/* 7041C 8006F81C C4AC001C */ lwc1 $f12, 0x1C($a1) -/* 70420 8006F820 46105400 */ add.s $f16, $f10, $f16 -/* 70424 8006F824 C4AA000C */ lwc1 $f10, 0xC($a1) -/* 70428 8006F828 460A1282 */ mul.s $f10, $f2, $f10 -/* 7042C 8006F82C 46107480 */ add.s $f18, $f14, $f16 -/* 70430 8006F830 C4AE002C */ lwc1 $f14, 0x2C($a1) -/* 70434 8006F834 460C2302 */ mul.s $f12, $f4, $f12 -/* 70438 8006F838 C4B0003C */ lwc1 $f16, 0x3C($a1) -/* 7043C 8006F83C E4D2FFF8 */ swc1 $f18, -0x8($a2) -/* 70440 8006F840 460E3382 */ mul.s $f14, $f6, $f14 -/* 70444 8006F844 00000000 */ nop -/* 70448 8006F848 46104402 */ mul.s $f16, $f8, $f16 -/* 7044C 8006F84C 460E6380 */ add.s $f14, $f12, $f14 -/* 70450 8006F850 46105400 */ add.s $f16, $f10, $f16 -/* 70454 8006F854 46107480 */ add.s $f18, $f14, $f16 -/* 70458 8006F858 E4D2FFFC */ swc1 $f18, -0x4($a2) -/* 7045C 8006F85C 5500FFC5 */ bnel $t0, $zero, .L8006F774 -/* 70460 8006F860 00000000 */ nop -/* 70464 8006F864 D7A20000 */ ldc1 $f2, 0x0($sp) -/* 70468 8006F868 03E00008 */ jr $ra -/* 7046C 8006F86C 27BD0008 */ addiu $sp, $sp, 0x8 +lwc1 $f2, 0x0($a0) +lwc1 $f10, 0x0($a1) +lwc1 $f4, 0x4($a0) +lwc1 $f12, 0x10($a1) +mul.s $f10, $f2, $f10 +lwc1 $f6, 0x8($a0) +lwc1 $f14, 0x20($a1) +mul.s $f12, $f4, $f12 +lwc1 $f8, 0xC($a0) +lwc1 $f16, 0x30($a1) +mul.s $f14, $f6, $f14 +addiu $a0, $a0, 0x10 +addiu $a2, $a2, 0x10 +mul.s $f16, $f8, $f16 +addiu $t0, $t0, -0x1 +add.s $f14, $f12, $f14 +lwc1 $f12, 0x14($a1) +add.s $f16, $f10, $f16 +lwc1 $f10, 0x4($a1) +mul.s $f10, $f2, $f10 +add.s $f18, $f14, $f16 +lwc1 $f14, 0x24($a1) +mul.s $f12, $f4, $f12 +lwc1 $f16, 0x34($a1) +swc1 $f18, -0x10($a2) +mul.s $f14, $f6, $f14 +nop +mul.s $f16, $f8, $f16 +add.s $f14, $f12, $f14 +lwc1 $f12, 0x18($a1) +add.s $f16, $f10, $f16 +lwc1 $f10, 0x8($a1) +mul.s $f10, $f2, $f10 +add.s $f18, $f14, $f16 +lwc1 $f14, 0x28($a1) +mul.s $f12, $f4, $f12 +lwc1 $f16, 0x38($a1) +swc1 $f18, -0xC($a2) +mul.s $f14, $f6, $f14 +nop +mul.s $f16, $f8, $f16 +add.s $f14, $f12, $f14 +lwc1 $f12, 0x1C($a1) +add.s $f16, $f10, $f16 +lwc1 $f10, 0xC($a1) +mul.s $f10, $f2, $f10 +add.s $f18, $f14, $f16 +lwc1 $f14, 0x2C($a1) +mul.s $f12, $f4, $f12 +lwc1 $f16, 0x3C($a1) +swc1 $f18, -0x8($a2) +mul.s $f14, $f6, $f14 +nop +mul.s $f16, $f8, $f16 +add.s $f14, $f12, $f14 +add.s $f16, $f10, $f16 +add.s $f18, $f14, $f16 +swc1 $f18, -0x4($a2) +bnel $t0, $zero, .L8006F774 + nop +ldc1 $f2, 0x0($sp) +jr $ra + addiu $sp, $sp, 0x8 .end mtxf_mul /* Official Name: mathMtxF2L */ leaf mtxf_to_mtx -/* 70470 8006F870 3C014780 */ lui $at, (0x47800000 >> 16) -/* 70474 8006F874 44816000 */ mtc1 $at, $f12 -/* 70478 8006F878 34080004 */ ori $t0, $zero, 0x4 +li.s $at, 65536.0 +mtc1 $at, $f12 +ori $t0, $zero, 0x4 .L8006F87C: -/* 7047C 8006F87C C4840000 */ lwc1 $f4, 0x0($a0) -/* 70480 8006F880 C4860004 */ lwc1 $f6, 0x4($a0) -/* 70484 8006F884 C4880008 */ lwc1 $f8, 0x8($a0) -/* 70488 8006F888 460C2102 */ mul.s $f4, $f4, $f12 -/* 7048C 8006F88C C48A000C */ lwc1 $f10, 0xC($a0) -/* 70490 8006F890 24840010 */ addiu $a0, $a0, 0x10 -/* 70494 8006F894 460C3182 */ mul.s $f6, $f6, $f12 -/* 70498 8006F898 24A50008 */ addiu $a1, $a1, 0x8 -/* 7049C 8006F89C 2508FFFF */ addiu $t0, $t0, -0x1 -/* 704A0 8006F8A0 460C4202 */ mul.s $f8, $f8, $f12 -/* 704A4 8006F8A4 00000000 */ nop -/* 704A8 8006F8A8 460C5282 */ mul.s $f10, $f10, $f12 -/* 704AC 8006F8AC 46002124 */ cvt.w.s $f4, $f4 -/* 704B0 8006F8B0 460031A4 */ cvt.w.s $f6, $f6 -/* 704B4 8006F8B4 44092000 */ mfc1 $t1, $f4 -/* 704B8 8006F8B8 46004224 */ cvt.w.s $f8, $f8 -/* 704BC 8006F8BC 440A3000 */ mfc1 $t2, $f6 -/* 704C0 8006F8C0 A4A90018 */ sh $t1, 0x18($a1) -/* 704C4 8006F8C4 460052A4 */ cvt.w.s $f10, $f10 -/* 704C8 8006F8C8 440B4000 */ mfc1 $t3, $f8 -/* 704CC 8006F8CC A4AA001A */ sh $t2, 0x1A($a1) -/* 704D0 8006F8D0 00094C02 */ srl $t1, $t1, 16 -/* 704D4 8006F8D4 440C5000 */ mfc1 $t4, $f10 -/* 704D8 8006F8D8 A4AB001C */ sh $t3, 0x1C($a1) -/* 704DC 8006F8DC 000A5402 */ srl $t2, $t2, 16 -/* 704E0 8006F8E0 A4AC001E */ sh $t4, 0x1E($a1) -/* 704E4 8006F8E4 000B5C02 */ srl $t3, $t3, 16 -/* 704E8 8006F8E8 000C6402 */ srl $t4, $t4, 16 -/* 704EC 8006F8EC A4A9FFF8 */ sh $t1, -0x8($a1) -/* 704F0 8006F8F0 A4AAFFFA */ sh $t2, -0x6($a1) -/* 704F4 8006F8F4 A4ABFFFC */ sh $t3, -0x4($a1) -/* 704F8 8006F8F8 A4ACFFFE */ sh $t4, -0x2($a1) -/* 704FC 8006F8FC 5500FFDF */ bnel $t0, $zero, .L8006F87C -/* 70500 8006F900 00000000 */ nop -/* 70504 8006F904 03E00008 */ jr $ra -/* 70508 8006F908 00000000 */ nop +lwc1 $f4, 0x0($a0) +lwc1 $f6, 0x4($a0) +lwc1 $f8, 0x8($a0) +mul.s $f4, $f4, $f12 +lwc1 $f10, 0xC($a0) +addiu $a0, $a0, 0x10 +mul.s $f6, $f6, $f12 +addiu $a1, $a1, 0x8 +addiu $t0, $t0, -0x1 +mul.s $f8, $f8, $f12 +nop +mul.s $f10, $f10, $f12 +cvt.w.s $f4, $f4 +cvt.w.s $f6, $f6 +mfc1 $t1, $f4 +cvt.w.s $f8, $f8 +mfc1 $t2, $f6 +sh $t1, 0x18($a1) +cvt.w.s $f10, $f10 +mfc1 $t3, $f8 +sh $t2, 0x1A($a1) +srl $t1, $t1, 16 +mfc1 $t4, $f10 +sh $t3, 0x1C($a1) +srl $t2, $t2, 16 +sh $t4, 0x1E($a1) +srl $t3, $t3, 16 +srl $t4, $t4, 16 +sh $t1, -0x8($a1) +sh $t2, -0x6($a1) +sh $t3, -0x4($a1) +sh $t4, -0x2($a1) +bnel $t0, $zero, .L8006F87C + nop +jr $ra + nop .end mtxf_to_mtx /* Official Name: mathSeed */ leaf set_rng_seed -/* 7050C 8006F90C 3C01800E */ lui $at, %hi(gCurrentRNGSeed) -/* 70510 8006F910 03E00008 */ jr $ra -/* 70514 8006F914 AC24D434 */ sw $a0, %lo(gCurrentRNGSeed)($at) +lui $at, %hi(gCurrentRNGSeed) +jr $ra + sw $a0, %lo(gCurrentRNGSeed)($at) .end set_rng_seed leaf save_rng_seed -/* 70518 8006F918 3C04800E */ lui $a0, %hi(gCurrentRNGSeed) -/* 7051C 8006F91C 8C84D434 */ lw $a0, %lo(gCurrentRNGSeed)($a0) -/* 70520 8006F920 3C01800E */ lui $at, %hi(gPrevRNGSeed) -/* 70524 8006F924 03E00008 */ jr $ra -/* 70528 8006F928 AC24D438 */ sw $a0, %lo(gPrevRNGSeed)($at) +lui $a0, %hi(gCurrentRNGSeed) +lw $a0, %lo(gCurrentRNGSeed)($a0) +lui $at, %hi(gPrevRNGSeed) +jr $ra + sw $a0, %lo(gPrevRNGSeed)($at) .end save_rng_seed leaf load_rng_seed -/* 7052C 8006F92C 3C04800E */ lui $a0, %hi(gPrevRNGSeed) -/* 70530 8006F930 8C84D438 */ lw $a0, %lo(gPrevRNGSeed)($a0) -/* 70534 8006F934 3C01800E */ lui $at, %hi(gCurrentRNGSeed) -/* 70538 8006F938 03E00008 */ jr $ra -/* 7053C 8006F93C AC24D434 */ sw $a0, %lo(gCurrentRNGSeed)($at) +lui $a0, %hi(gPrevRNGSeed) +lw $a0, %lo(gPrevRNGSeed)($a0) +lui $at, %hi(gCurrentRNGSeed) +jr $ra + sw $a0, %lo(gCurrentRNGSeed)($at) .end load_rng_seed leaf get_rng_seed -/* 70540 8006F940 3C02800E */ lui $v0, %hi(gCurrentRNGSeed) -/* 70544 8006F944 03E00008 */ jr $ra -/* 70548 8006F948 8C42D434 */ lw $v0, %lo(gCurrentRNGSeed)($v0) +lui $v0, %hi(gCurrentRNGSeed) +jr $ra + lw $v0, %lo(gCurrentRNGSeed)($v0) .end get_rng_seed /* Official Name: mathRnd */ leaf rand_range -/* 7054C 8006F94C 3C08800E */ lui $t0, %hi(gCurrentRNGSeed) -/* 70550 8006F950 8D08D434 */ lw $t0, %lo(gCurrentRNGSeed)($t0) -/* 70554 8006F954 3C01800E */ lui $at, %hi(gCurrentRNGSeed) -/* 70558 8006F958 00A42822 */ sub $a1, $a1, $a0 /* handwritten instruction */ -/* 7055C 8006F95C 00084FFC */ dsll32 $t1, $t0, 31 -/* 70560 8006F960 000857F8 */ dsll $t2, $t0, 31 -/* 70564 8006F964 00094FFA */ dsrl $t1, $t1, 31 -/* 70568 8006F968 000A503E */ dsrl32 $t2, $t2, 0 -/* 7056C 8006F96C 00085B3C */ dsll32 $t3, $t0, 12 -/* 70570 8006F970 012A4825 */ or $t1, $t1, $t2 -/* 70574 8006F974 000B583E */ dsrl32 $t3, $t3, 0 -/* 70578 8006F978 012B4826 */ xor $t1, $t1, $t3 -/* 7057C 8006F97C 00095D3A */ dsrl $t3, $t1, 20 -/* 70580 8006F980 316B0FFF */ andi $t3, $t3, 0xFFF -/* 70584 8006F984 01694026 */ xor $t0, $t3, $t1 -/* 70588 8006F988 AC28D434 */ sw $t0, %lo(gCurrentRNGSeed)($at) -/* 7058C 8006F98C 20A50001 */ addi $a1, $a1, 0x1 /* handwritten instruction */ -/* 70590 8006F990 01044023 */ subu $t0, $t0, $a0 -/* 70594 8006F994 0105001B */ divu $zero, $t0, $a1 -/* 70598 8006F998 00004012 */ mflo $t0 -/* 7059C 8006F99C 00001010 */ mfhi $v0 -/* 705A0 8006F9A0 00441020 */ add $v0, $v0, $a0 /* handwritten instruction */ -/* 705A4 8006F9A4 14A00002 */ bnez $a1, .L8006F9B0 -/* 705A8 8006F9A8 00000000 */ nop -/* 705AC 8006F9AC 0007000D */ break 7 +lui $t0, %hi(gCurrentRNGSeed) +lw $t0, %lo(gCurrentRNGSeed)($t0) +lui $at, %hi(gCurrentRNGSeed) +sub $a1, $a1, $a0 +dsll32 $t1, $t0, 31 +dsll $t2, $t0, 31 +dsrl $t1, $t1, 31 +dsrl32 $t2, $t2, 0 +dsll32 $t3, $t0, 12 +or $t1, $t1, $t2 +dsrl32 $t3, $t3, 0 +xor $t1, $t1, $t3 +dsrl $t3, $t1, 20 +andi $t3, $t3, 0xFFF +xor $t0, $t3, $t1 +sw $t0, %lo(gCurrentRNGSeed)($at) +addi $a1, $a1, 0x1 +subu $t0, $t0, $a0 +divu $zero, $t0, $a1 +mflo $t0 +mfhi $v0 +add $v0, $v0, $a0 +bnez $a1, .L8006F9B0 + nop +break 7 .L8006F9B0: -/* 705B0 8006F9B0 03E00008 */ jr $ra -/* 705B4 8006F9B4 00000000 */ nop +jr $ra + nop .end rand_range /* Official Name: fastShortReflection */ leaf vec3s_reflect -/* 705B8 8006F9B8 84880000 */ lh $t0, 0x0($a0) -/* 705BC 8006F9BC 84AB0000 */ lh $t3, 0x0($a1) -/* 705C0 8006F9C0 84890002 */ lh $t1, 0x2($a0) -/* 705C4 8006F9C4 84AC0002 */ lh $t4, 0x2($a1) -/* 705C8 8006F9C8 010B0018 */ mult $t0, $t3 -/* 705CC 8006F9CC 848A0004 */ lh $t2, 0x4($a0) -/* 705D0 8006F9D0 84AD0004 */ lh $t5, 0x4($a1) -/* 705D4 8006F9D4 00007012 */ mflo $t6 -/* 705D8 8006F9D8 00000000 */ nop -/* 705DC 8006F9DC 00000000 */ nop -/* 705E0 8006F9E0 012C0018 */ mult $t1, $t4 -/* 705E4 8006F9E4 00007812 */ mflo $t7 -/* 705E8 8006F9E8 01CF7020 */ add $t6, $t6, $t7 /* handwritten instruction */ -/* 705EC 8006F9EC 00000000 */ nop -/* 705F0 8006F9F0 014D0018 */ mult $t2, $t5 -/* 705F4 8006F9F4 0000C012 */ mflo $t8 -/* 705F8 8006F9F8 01D87020 */ add $t6, $t6, $t8 /* handwritten instruction */ -/* 705FC 8006F9FC 000E7303 */ sra $t6, $t6, 12 -/* 70600 8006FA00 01CB0018 */ mult $t6, $t3 -/* 70604 8006FA04 00005812 */ mflo $t3 -/* 70608 8006FA08 000B5B43 */ sra $t3, $t3, 13 -/* 7060C 8006FA0C 01685822 */ sub $t3, $t3, $t0 /* handwritten instruction */ -/* 70610 8006FA10 01CC0018 */ mult $t6, $t4 -/* 70614 8006FA14 A48B0006 */ sh $t3, 0x6($a0) -/* 70618 8006FA18 00006012 */ mflo $t4 -/* 7061C 8006FA1C 000C6343 */ sra $t4, $t4, 13 -/* 70620 8006FA20 01896022 */ sub $t4, $t4, $t1 /* handwritten instruction */ -/* 70624 8006FA24 01CD0018 */ mult $t6, $t5 -/* 70628 8006FA28 A48C0008 */ sh $t4, 0x8($a0) -/* 7062C 8006FA2C 00006812 */ mflo $t5 -/* 70630 8006FA30 000D6B43 */ sra $t5, $t5, 13 -/* 70634 8006FA34 01A86822 */ sub $t5, $t5, $t0 /* handwritten instruction */ -/* 70638 8006FA38 03E00008 */ jr $ra -/* 7063C 8006FA3C A48D000A */ sh $t5, 0xA($a0) +lh $t0, 0x0($a0) +lh $t3, 0x0($a1) +lh $t1, 0x2($a0) +lh $t4, 0x2($a1) +mult $t0, $t3 +lh $t2, 0x4($a0) +lh $t5, 0x4($a1) +mflo $t6 +nop +nop +mult $t1, $t4 +mflo $t7 +add $t6, $t6, $t7 +nop +mult $t2, $t5 +mflo $t8 +add $t6, $t6, $t8 +sra $t6, $t6, 12 +mult $t6, $t3 +mflo $t3 +sra $t3, $t3, 13 +sub $t3, $t3, $t0 +mult $t6, $t4 +sh $t3, 0x6($a0) +mflo $t4 +sra $t4, $t4, 13 +sub $t4, $t4, $t1 +mult $t6, $t5 +sh $t4, 0x8($a0) +mflo $t5 +sra $t5, $t5, 13 +sub $t5, $t5, $t0 +jr $ra + sh $t5, 0xA($a0) .end vec3s_reflect leaf mtx_to_mtxs_2 -/* 70640 8006FA40 340A0010 */ ori $t2, $zero, 0x10 -/* 70644 8006FA44 016B5826 */ xor $t3, $t3, $t3 +ori $t2, $zero, 0x10 +xor $t3, $t3, $t3 .L8006FA48: -/* 70648 8006FA48 84880000 */ lh $t0, 0x0($a0) -/* 7064C 8006FA4C 94890020 */ lhu $t1, 0x20($a0) -/* 70650 8006FA50 20840002 */ addi $a0, $a0, 0x2 /* handwritten instruction */ -/* 70654 8006FA54 00084400 */ sll $t0, $t0, 16 -/* 70658 8006FA58 01094025 */ or $t0, $t0, $t1 -/* 7065C 8006FA5C ACA80000 */ sw $t0, 0x0($a1) -/* 70660 8006FA60 20A50004 */ addi $a1, $a1, 0x4 /* handwritten instruction */ -/* 70664 8006FA64 256B0001 */ addiu $t3, $t3, 0x1 -/* 70668 8006FA68 556AFFF7 */ bnel $t3, $t2, .L8006FA48 -/* 7066C 8006FA6C 00000000 */ nop -/* 70670 8006FA70 03E00008 */ jr $ra -/* 70674 8006FA74 00000000 */ nop +lh $t0, 0x0($a0) +lhu $t1, 0x20($a0) +addi $a0, $a0, 0x2 +sll $t0, $t0, 16 +or $t0, $t0, $t1 +sw $t0, 0x0($a1) +addi $a1, $a1, 0x4 +addiu $t3, $t3, 0x1 +bnel $t3, $t2, .L8006FA48 + nop +jr $ra + nop .end mtx_to_mtxs_2 leaf mtxs_transform_point -/* 70678 8006FA78 84A80000 */ lh $t0, 0x0($a1) -/* 7067C 8006FA7C 8C8B0000 */ lw $t3, 0x0($a0) -/* 70680 8006FA80 84A90002 */ lh $t1, 0x2($a1) -/* 70684 8006FA84 84AA0004 */ lh $t2, 0x4($a1) -/* 70688 8006FA88 010B0018 */ mult $t0, $t3 -/* 7068C 8006FA8C 8C8B0010 */ lw $t3, 0x10($a0) -/* 70690 8006FA90 00006012 */ mflo $t4 -/* 70694 8006FA94 00000000 */ nop -/* 70698 8006FA98 00000000 */ nop -/* 7069C 8006FA9C 012B0018 */ mult $t1, $t3 -/* 706A0 8006FAA0 8C8B0020 */ lw $t3, 0x20($a0) -/* 706A4 8006FAA4 00006812 */ mflo $t5 -/* 706A8 8006FAA8 018D6020 */ add $t4, $t4, $t5 /* handwritten instruction */ -/* 706AC 8006FAAC 00000000 */ nop -/* 706B0 8006FAB0 014B0018 */ mult $t2, $t3 -/* 706B4 8006FAB4 8C8B0030 */ lw $t3, 0x30($a0) -/* 706B8 8006FAB8 00007012 */ mflo $t6 -/* 706BC 8006FABC 018E6020 */ add $t4, $t4, $t6 /* handwritten instruction */ -/* 706C0 8006FAC0 018B6020 */ add $t4, $t4, $t3 /* handwritten instruction */ -/* 706C4 8006FAC4 000C6403 */ sra $t4, $t4, 16 -/* 706C8 8006FAC8 A4AC0000 */ sh $t4, 0x0($a1) -/* 706CC 8006FACC 8C8B0004 */ lw $t3, 0x4($a0) -/* 706D0 8006FAD0 010B0018 */ mult $t0, $t3 -/* 706D4 8006FAD4 8C8B0014 */ lw $t3, 0x14($a0) -/* 706D8 8006FAD8 00006012 */ mflo $t4 -/* 706DC 8006FADC 00000000 */ nop -/* 706E0 8006FAE0 00000000 */ nop -/* 706E4 8006FAE4 012B0018 */ mult $t1, $t3 -/* 706E8 8006FAE8 8C8B0024 */ lw $t3, 0x24($a0) -/* 706EC 8006FAEC 00006812 */ mflo $t5 -/* 706F0 8006FAF0 018D6020 */ add $t4, $t4, $t5 /* handwritten instruction */ -/* 706F4 8006FAF4 00000000 */ nop -/* 706F8 8006FAF8 014B0018 */ mult $t2, $t3 -/* 706FC 8006FAFC 8C8B0034 */ lw $t3, 0x34($a0) -/* 70700 8006FB00 00007012 */ mflo $t6 -/* 70704 8006FB04 018E6020 */ add $t4, $t4, $t6 /* handwritten instruction */ -/* 70708 8006FB08 018B6020 */ add $t4, $t4, $t3 /* handwritten instruction */ -/* 7070C 8006FB0C 000C6403 */ sra $t4, $t4, 16 -/* 70710 8006FB10 A4AC0002 */ sh $t4, 0x2($a1) -/* 70714 8006FB14 8C8B0008 */ lw $t3, 0x8($a0) -/* 70718 8006FB18 010B0018 */ mult $t0, $t3 -/* 7071C 8006FB1C 8C8B0018 */ lw $t3, 0x18($a0) -/* 70720 8006FB20 00006012 */ mflo $t4 -/* 70724 8006FB24 00000000 */ nop -/* 70728 8006FB28 00000000 */ nop -/* 7072C 8006FB2C 012B0018 */ mult $t1, $t3 -/* 70730 8006FB30 8C8B0028 */ lw $t3, 0x28($a0) -/* 70734 8006FB34 00006812 */ mflo $t5 -/* 70738 8006FB38 018D6020 */ add $t4, $t4, $t5 /* handwritten instruction */ -/* 7073C 8006FB3C 00000000 */ nop -/* 70740 8006FB40 014B0018 */ mult $t2, $t3 -/* 70744 8006FB44 8C8B0038 */ lw $t3, 0x38($a0) -/* 70748 8006FB48 00007012 */ mflo $t6 -/* 7074C 8006FB4C 018E6020 */ add $t4, $t4, $t6 /* handwritten instruction */ -/* 70750 8006FB50 018B6020 */ add $t4, $t4, $t3 /* handwritten instruction */ -/* 70754 8006FB54 000C6403 */ sra $t4, $t4, 16 -/* 70758 8006FB58 03E00008 */ jr $ra -/* 7075C 8006FB5C A4AC0004 */ sh $t4, 0x4($a1) +lh $t0, 0x0($a1) +lw $t3, 0x0($a0) +lh $t1, 0x2($a1) +lh $t2, 0x4($a1) +mult $t0, $t3 +lw $t3, 0x10($a0) +mflo $t4 +nop +nop +mult $t1, $t3 +lw $t3, 0x20($a0) +mflo $t5 +add $t4, $t4, $t5 +nop +mult $t2, $t3 +lw $t3, 0x30($a0) +mflo $t6 +add $t4, $t4, $t6 +add $t4, $t4, $t3 +sra $t4, $t4, 16 +sh $t4, 0x0($a1) +lw $t3, 0x4($a0) +mult $t0, $t3 +lw $t3, 0x14($a0) +mflo $t4 +nop +nop +mult $t1, $t3 +lw $t3, 0x24($a0) +mflo $t5 +add $t4, $t4, $t5 +nop +mult $t2, $t3 +lw $t3, 0x34($a0) +mflo $t6 +add $t4, $t4, $t6 +add $t4, $t4, $t3 +sra $t4, $t4, 16 +sh $t4, 0x2($a1) +lw $t3, 0x8($a0) +mult $t0, $t3 +lw $t3, 0x18($a0) +mflo $t4 +nop +nop +mult $t1, $t3 +lw $t3, 0x28($a0) +mflo $t5 +add $t4, $t4, $t5 +nop +mult $t2, $t3 +lw $t3, 0x38($a0) +mflo $t6 +add $t4, $t4, $t6 +add $t4, $t4, $t3 +sra $t4, $t4, 16 +jr $ra + sh $t4, 0x4($a1) .end mtxs_transform_point leaf mtxs_transform_dir -/* 70760 8006FB60 8C8B0000 */ lw $t3, 0x0($a0) -/* 70764 8006FB64 84A80000 */ lh $t0, 0x0($a1) -/* 70768 8006FB68 84A90002 */ lh $t1, 0x2($a1) -/* 7076C 8006FB6C 84AA0004 */ lh $t2, 0x4($a1) -/* 70770 8006FB70 010B0018 */ mult $t0, $t3 -/* 70774 8006FB74 8C8B0010 */ lw $t3, 0x10($a0) -/* 70778 8006FB78 00006012 */ mflo $t4 -/* 7077C 8006FB7C 00000000 */ nop -/* 70780 8006FB80 00000000 */ nop -/* 70784 8006FB84 012B0018 */ mult $t1, $t3 -/* 70788 8006FB88 8C8B0020 */ lw $t3, 0x20($a0) -/* 7078C 8006FB8C 00006812 */ mflo $t5 -/* 70790 8006FB90 018D6020 */ add $t4, $t4, $t5 /* handwritten instruction */ -/* 70794 8006FB94 00000000 */ nop -/* 70798 8006FB98 014B0018 */ mult $t2, $t3 -/* 7079C 8006FB9C 8C8B0004 */ lw $t3, 0x4($a0) -/* 707A0 8006FBA0 00007012 */ mflo $t6 -/* 707A4 8006FBA4 018E6020 */ add $t4, $t4, $t6 /* handwritten instruction */ -/* 707A8 8006FBA8 000C6403 */ sra $t4, $t4, 16 -/* 707AC 8006FBAC 010B0018 */ mult $t0, $t3 -/* 707B0 8006FBB0 A4AC0000 */ sh $t4, 0x0($a1) -/* 707B4 8006FBB4 8C8B0014 */ lw $t3, 0x14($a0) -/* 707B8 8006FBB8 00006012 */ mflo $t4 -/* 707BC 8006FBBC 00000000 */ nop -/* 707C0 8006FBC0 00000000 */ nop -/* 707C4 8006FBC4 012B0018 */ mult $t1, $t3 -/* 707C8 8006FBC8 8C8B0024 */ lw $t3, 0x24($a0) -/* 707CC 8006FBCC 00006812 */ mflo $t5 -/* 707D0 8006FBD0 018D6020 */ add $t4, $t4, $t5 /* handwritten instruction */ -/* 707D4 8006FBD4 00000000 */ nop -/* 707D8 8006FBD8 014B0018 */ mult $t2, $t3 -/* 707DC 8006FBDC 8C8B0008 */ lw $t3, 0x8($a0) -/* 707E0 8006FBE0 00007012 */ mflo $t6 -/* 707E4 8006FBE4 018E6020 */ add $t4, $t4, $t6 /* handwritten instruction */ -/* 707E8 8006FBE8 000C6403 */ sra $t4, $t4, 16 -/* 707EC 8006FBEC 010B0018 */ mult $t0, $t3 -/* 707F0 8006FBF0 A4AC0002 */ sh $t4, 0x2($a1) -/* 707F4 8006FBF4 8C8B0018 */ lw $t3, 0x18($a0) -/* 707F8 8006FBF8 00006012 */ mflo $t4 -/* 707FC 8006FBFC 00000000 */ nop -/* 70800 8006FC00 00000000 */ nop -/* 70804 8006FC04 012B0018 */ mult $t1, $t3 -/* 70808 8006FC08 8C8B0028 */ lw $t3, 0x28($a0) -/* 7080C 8006FC0C 00006812 */ mflo $t5 -/* 70810 8006FC10 018D6020 */ add $t4, $t4, $t5 /* handwritten instruction */ -/* 70814 8006FC14 00000000 */ nop -/* 70818 8006FC18 014B0018 */ mult $t2, $t3 -/* 7081C 8006FC1C 00007012 */ mflo $t6 -/* 70820 8006FC20 018E6020 */ add $t4, $t4, $t6 /* handwritten instruction */ -/* 70824 8006FC24 000C6403 */ sra $t4, $t4, 16 -/* 70828 8006FC28 03E00008 */ jr $ra -/* 7082C 8006FC2C A4AC0004 */ sh $t4, 0x4($a1) +lw $t3, 0x0($a0) +lh $t0, 0x0($a1) +lh $t1, 0x2($a1) +lh $t2, 0x4($a1) +mult $t0, $t3 +lw $t3, 0x10($a0) +mflo $t4 +nop +nop +mult $t1, $t3 +lw $t3, 0x20($a0) +mflo $t5 +add $t4, $t4, $t5 +nop +mult $t2, $t3 +lw $t3, 0x4($a0) +mflo $t6 +add $t4, $t4, $t6 +sra $t4, $t4, 16 +mult $t0, $t3 +sh $t4, 0x0($a1) +lw $t3, 0x14($a0) +mflo $t4 +nop +nop +mult $t1, $t3 +lw $t3, 0x24($a0) +mflo $t5 +add $t4, $t4, $t5 +nop +mult $t2, $t3 +lw $t3, 0x8($a0) +mflo $t6 +add $t4, $t4, $t6 +sra $t4, $t4, 16 +mult $t0, $t3 +sh $t4, 0x2($a1) +lw $t3, 0x18($a0) +mflo $t4 +nop +nop +mult $t1, $t3 +lw $t3, 0x28($a0) +mflo $t5 +add $t4, $t4, $t5 +nop +mult $t2, $t3 +mflo $t6 +add $t4, $t4, $t6 +sra $t4, $t4, 16 +jr $ra + sh $t4, 0x4($a1) .end mtxs_transform_dir leaf mtxf_from_transform -/* 70830 8006FC30 27BDFFF8 */ addiu $sp, $sp, -0x8 -/* 70834 8006FC34 3C013780 */ lui $at, (0x37800000 >> 16) -/* 70838 8006FC38 FFBF0000 */ sd $ra, 0x0($sp) -/* 7083C 8006FC3C 00803825 */ or $a3, $a0, $zero -/* 70840 8006FC40 44819000 */ mtc1 $at, $f18 -/* 70844 8006FC44 0C01C20C */ jal sins_s16 -/* 70848 8006FC48 84A40000 */ lh $a0, 0x0($a1) -/* 7084C 8006FC4C 44820000 */ mtc1 $v0, $f0 -/* 70850 8006FC50 84A40000 */ lh $a0, 0x0($a1) -/* 70854 8006FC54 46800020 */ cvt.s.w $f0, $f0 -/* 70858 8006FC58 46120002 */ mul.s $f0, $f0, $f18 -/* 7085C 8006FC5C 0C01C20B */ jal coss_s16 -/* 70860 8006FC60 00000000 */ nop -/* 70864 8006FC64 44821000 */ mtc1 $v0, $f2 -/* 70868 8006FC68 84A40002 */ lh $a0, 0x2($a1) -/* 7086C 8006FC6C 468010A0 */ cvt.s.w $f2, $f2 -/* 70870 8006FC70 46121082 */ mul.s $f2, $f2, $f18 -/* 70874 8006FC74 0C01C20C */ jal sins_s16 -/* 70878 8006FC78 00000000 */ nop -/* 7087C 8006FC7C 44822000 */ mtc1 $v0, $f4 -/* 70880 8006FC80 84A40002 */ lh $a0, 0x2($a1) -/* 70884 8006FC84 46802120 */ cvt.s.w $f4, $f4 -/* 70888 8006FC88 46122102 */ mul.s $f4, $f4, $f18 -/* 7088C 8006FC8C 0C01C20B */ jal coss_s16 -/* 70890 8006FC90 00000000 */ nop -/* 70894 8006FC94 44823000 */ mtc1 $v0, $f6 -/* 70898 8006FC98 84A40004 */ lh $a0, 0x4($a1) -/* 7089C 8006FC9C 468031A0 */ cvt.s.w $f6, $f6 -/* 708A0 8006FCA0 46123182 */ mul.s $f6, $f6, $f18 -/* 708A4 8006FCA4 0C01C20C */ jal sins_s16 -/* 708A8 8006FCA8 00000000 */ nop -/* 708AC 8006FCAC 44824000 */ mtc1 $v0, $f8 -/* 708B0 8006FCB0 84A40004 */ lh $a0, 0x4($a1) -/* 708B4 8006FCB4 46804220 */ cvt.s.w $f8, $f8 -/* 708B8 8006FCB8 46124202 */ mul.s $f8, $f8, $f18 -/* 708BC 8006FCBC 0C01C20B */ jal coss_s16 -/* 708C0 8006FCC0 00000000 */ nop -/* 708C4 8006FCC4 44825000 */ mtc1 $v0, $f10 -/* 708C8 8006FCC8 8CAA0008 */ lw $t2, 0x8($a1) -/* 708CC 8006FCCC ACE0000C */ sw $zero, 0xC($a3) -/* 708D0 8006FCD0 468052A0 */ cvt.s.w $f10, $f10 -/* 708D4 8006FCD4 ACE0001C */ sw $zero, 0x1C($a3) -/* 708D8 8006FCD8 ACE0002C */ sw $zero, 0x2C($a3) -/* 708DC 8006FCDC 3C013F80 */ lui $at, (0x3F800000 >> 16) -/* 708E0 8006FCE0 46125282 */ mul.s $f10, $f10, $f18 -/* 708E4 8006FCE4 00000000 */ nop -/* 708E8 8006FCE8 46002402 */ mul.s $f16, $f4, $f0 -/* 708EC 8006FCEC 00000000 */ nop -/* 708F0 8006FCF0 46088402 */ mul.s $f16, $f16, $f8 -/* 708F4 8006FCF4 00000000 */ nop -/* 708F8 8006FCF8 46025482 */ mul.s $f18, $f10, $f2 -/* 708FC 8006FCFC 46128400 */ add.s $f16, $f16, $f18 -/* 70900 8006FD00 448A9000 */ mtc1 $t2, $f18 -/* 70904 8006FD04 00000000 */ nop -/* 70908 8006FD08 46128402 */ mul.s $f16, $f16, $f18 -/* 7090C 8006FD0C E4F00000 */ swc1 $f16, 0x0($a3) -/* 70910 8006FD10 46064402 */ mul.s $f16, $f8, $f6 -/* 70914 8006FD14 00000000 */ nop -/* 70918 8006FD18 46128402 */ mul.s $f16, $f16, $f18 -/* 7091C 8006FD1C E4F00004 */ swc1 $f16, 0x4($a3) -/* 70920 8006FD20 46022402 */ mul.s $f16, $f4, $f2 -/* 70924 8006FD24 00000000 */ nop -/* 70928 8006FD28 46088402 */ mul.s $f16, $f16, $f8 -/* 7092C 8006FD2C 00000000 */ nop -/* 70930 8006FD30 46005482 */ mul.s $f18, $f10, $f0 -/* 70934 8006FD34 46128401 */ sub.s $f16, $f16, $f18 -/* 70938 8006FD38 448A9000 */ mtc1 $t2, $f18 -/* 7093C 8006FD3C 00000000 */ nop -/* 70940 8006FD40 46128402 */ mul.s $f16, $f16, $f18 -/* 70944 8006FD44 E4F00008 */ swc1 $f16, 0x8($a3) -/* 70948 8006FD48 46002402 */ mul.s $f16, $f4, $f0 -/* 7094C 8006FD4C 00000000 */ nop -/* 70950 8006FD50 460A8402 */ mul.s $f16, $f16, $f10 -/* 70954 8006FD54 00000000 */ nop -/* 70958 8006FD58 46024482 */ mul.s $f18, $f8, $f2 -/* 7095C 8006FD5C 46128401 */ sub.s $f16, $f16, $f18 -/* 70960 8006FD60 448A9000 */ mtc1 $t2, $f18 -/* 70964 8006FD64 00000000 */ nop -/* 70968 8006FD68 46128402 */ mul.s $f16, $f16, $f18 -/* 7096C 8006FD6C E4F00010 */ swc1 $f16, 0x10($a3) -/* 70970 8006FD70 46065402 */ mul.s $f16, $f10, $f6 -/* 70974 8006FD74 00000000 */ nop -/* 70978 8006FD78 46128402 */ mul.s $f16, $f16, $f18 -/* 7097C 8006FD7C E4F00014 */ swc1 $f16, 0x14($a3) -/* 70980 8006FD80 46022402 */ mul.s $f16, $f4, $f2 -/* 70984 8006FD84 00000000 */ nop -/* 70988 8006FD88 460A8402 */ mul.s $f16, $f16, $f10 -/* 7098C 8006FD8C 00000000 */ nop -/* 70990 8006FD90 46004482 */ mul.s $f18, $f8, $f0 -/* 70994 8006FD94 46128400 */ add.s $f16, $f16, $f18 -/* 70998 8006FD98 448A9000 */ mtc1 $t2, $f18 -/* 7099C 8006FD9C 00000000 */ nop -/* 709A0 8006FDA0 46128402 */ mul.s $f16, $f16, $f18 -/* 709A4 8006FDA4 E4F00018 */ swc1 $f16, 0x18($a3) -/* 709A8 8006FDA8 46003402 */ mul.s $f16, $f6, $f0 -/* 709AC 8006FDAC 00000000 */ nop -/* 709B0 8006FDB0 46128402 */ mul.s $f16, $f16, $f18 -/* 709B4 8006FDB4 E4F00020 */ swc1 $f16, 0x20($a3) -/* 709B8 8006FDB8 46122402 */ mul.s $f16, $f4, $f18 -/* 709BC 8006FDBC 46008407 */ neg.s $f16, $f16 -/* 709C0 8006FDC0 E4F00024 */ swc1 $f16, 0x24($a3) -/* 709C4 8006FDC4 46023402 */ mul.s $f16, $f6, $f2 -/* 709C8 8006FDC8 00000000 */ nop -/* 709CC 8006FDCC 46128402 */ mul.s $f16, $f16, $f18 -/* 709D0 8006FDD0 44819000 */ mtc1 $at, $f18 -/* 709D4 8006FDD4 E4F00028 */ swc1 $f16, 0x28($a3) -/* 709D8 8006FDD8 8CA8000C */ lw $t0, 0xC($a1) -/* 709DC 8006FDDC ACE80030 */ sw $t0, 0x30($a3) -/* 709E0 8006FDE0 8CA80010 */ lw $t0, 0x10($a1) -/* 709E4 8006FDE4 ACE80034 */ sw $t0, 0x34($a3) -/* 709E8 8006FDE8 8CA80014 */ lw $t0, 0x14($a1) -/* 709EC 8006FDEC E4F2003C */ swc1 $f18, 0x3C($a3) -/* 709F0 8006FDF0 ACE80038 */ sw $t0, 0x38($a3) -/* 709F4 8006FDF4 DFBF0000 */ ld $ra, 0x0($sp) -/* 709F8 8006FDF8 27BD0008 */ addiu $sp, $sp, 0x8 -/* 709FC 8006FDFC 03E00008 */ jr $ra -/* 70A00 8006FE00 00000000 */ nop +addiu $sp, $sp, -0x8 +li.s $at, 0.0000152587890625 /* (1.0f / 0x10000) */ +sd $ra, 0x0($sp) +or $a3, $a0, $zero +mtc1 $at, $f18 +jal sins_s16 + lh $a0, 0x0($a1) +mtc1 $v0, $f0 +lh $a0, 0x0($a1) +cvt.s.w $f0, $f0 +mul.s $f0, $f0, $f18 +jal coss_s16 + nop +mtc1 $v0, $f2 +lh $a0, 0x2($a1) +cvt.s.w $f2, $f2 +mul.s $f2, $f2, $f18 +jal sins_s16 + nop +mtc1 $v0, $f4 +lh $a0, 0x2($a1) +cvt.s.w $f4, $f4 +mul.s $f4, $f4, $f18 +jal coss_s16 + nop +mtc1 $v0, $f6 +lh $a0, 0x4($a1) +cvt.s.w $f6, $f6 +mul.s $f6, $f6, $f18 +jal sins_s16 + nop +mtc1 $v0, $f8 +lh $a0, 0x4($a1) +cvt.s.w $f8, $f8 +mul.s $f8, $f8, $f18 +jal coss_s16 + nop +mtc1 $v0, $f10 +lw $t2, 0x8($a1) +sw $zero, 0xC($a3) +cvt.s.w $f10, $f10 +sw $zero, 0x1C($a3) +sw $zero, 0x2C($a3) +li.s $at, 1.0 +mul.s $f10, $f10, $f18 +nop +mul.s $f16, $f4, $f0 +nop +mul.s $f16, $f16, $f8 +nop +mul.s $f18, $f10, $f2 +add.s $f16, $f16, $f18 +mtc1 $t2, $f18 +nop +mul.s $f16, $f16, $f18 +swc1 $f16, 0x0($a3) +mul.s $f16, $f8, $f6 +nop +mul.s $f16, $f16, $f18 +swc1 $f16, 0x4($a3) +mul.s $f16, $f4, $f2 +nop +mul.s $f16, $f16, $f8 +nop +mul.s $f18, $f10, $f0 +sub.s $f16, $f16, $f18 +mtc1 $t2, $f18 +nop +mul.s $f16, $f16, $f18 +swc1 $f16, 0x8($a3) +mul.s $f16, $f4, $f0 +nop +mul.s $f16, $f16, $f10 +nop +mul.s $f18, $f8, $f2 +sub.s $f16, $f16, $f18 +mtc1 $t2, $f18 +nop +mul.s $f16, $f16, $f18 +swc1 $f16, 0x10($a3) +mul.s $f16, $f10, $f6 +nop +mul.s $f16, $f16, $f18 +swc1 $f16, 0x14($a3) +mul.s $f16, $f4, $f2 +nop +mul.s $f16, $f16, $f10 +nop +mul.s $f18, $f8, $f0 +add.s $f16, $f16, $f18 +mtc1 $t2, $f18 +nop +mul.s $f16, $f16, $f18 +swc1 $f16, 0x18($a3) +mul.s $f16, $f6, $f0 +nop +mul.s $f16, $f16, $f18 +swc1 $f16, 0x20($a3) +mul.s $f16, $f4, $f18 +neg.s $f16, $f16 +swc1 $f16, 0x24($a3) +mul.s $f16, $f6, $f2 +nop +mul.s $f16, $f16, $f18 +mtc1 $at, $f18 +swc1 $f16, 0x28($a3) +lw $t0, 0xC($a1) +sw $t0, 0x30($a3) +lw $t0, 0x10($a1) +sw $t0, 0x34($a3) +lw $t0, 0x14($a1) +swc1 $f18, 0x3C($a3) +sw $t0, 0x38($a3) +ld $ra, 0x0($sp) +addiu $sp, $sp, 0x8 +jr $ra + nop .end mtxf_from_transform /* Official Name: mathSquashY */ leaf mtxf_scale_y -/* 70A04 8006FE04 44859000 */ mtc1 $a1, $f18 -/* 70A08 8006FE08 C4900010 */ lwc1 $f16, 0x10($a0) -/* 70A0C 8006FE0C 46128402 */ mul.s $f16, $f16, $f18 -/* 70A10 8006FE10 E4900010 */ swc1 $f16, 0x10($a0) -/* 70A14 8006FE14 C4F00014 */ lwc1 $f16, 0x14($a3) -/* 70A18 8006FE18 46128402 */ mul.s $f16, $f16, $f18 -/* 70A1C 8006FE1C E4900014 */ swc1 $f16, 0x14($a0) -/* 70A20 8006FE20 C4900018 */ lwc1 $f16, 0x18($a0) -/* 70A24 8006FE24 46128402 */ mul.s $f16, $f16, $f18 -/* 70A28 8006FE28 03E00008 */ jr $ra -/* 70A2C 8006FE2C E4900018 */ swc1 $f16, 0x18($a0) +mtc1 $a1, $f18 +lwc1 $f16, 0x10($a0) +mul.s $f16, $f16, $f18 +swc1 $f16, 0x10($a0) +lwc1 $f16, 0x14($a3) +mul.s $f16, $f16, $f18 +swc1 $f16, 0x14($a0) +lwc1 $f16, 0x18($a0) +mul.s $f16, $f16, $f18 +jr $ra + swc1 $f16, 0x18($a0) .end mtxf_scale_y /* Official Name: mathTransY */ leaf mtxf_translate_y -/* 70A30 8006FE30 44858000 */ mtc1 $a1, $f16 -/* 70A34 8006FE34 C4800010 */ lwc1 $f0, 0x10($a0) -/* 70A38 8006FE38 C4840014 */ lwc1 $f4, 0x14($a0) -/* 70A3C 8006FE3C C4880018 */ lwc1 $f8, 0x18($a0) -/* 70A40 8006FE40 46100002 */ mul.s $f0, $f0, $f16 -/* 70A44 8006FE44 C4820030 */ lwc1 $f2, 0x30($a0) -/* 70A48 8006FE48 C4860034 */ lwc1 $f6, 0x34($a0) -/* 70A4C 8006FE4C 46102102 */ mul.s $f4, $f4, $f16 -/* 70A50 8006FE50 C48A0038 */ lwc1 $f10, 0x38($a0) -/* 70A54 8006FE54 46104202 */ mul.s $f8, $f8, $f16 -/* 70A58 8006FE58 46020000 */ add.s $f0, $f0, $f2 -/* 70A5C 8006FE5C 46062100 */ add.s $f4, $f4, $f6 -/* 70A60 8006FE60 E4800030 */ swc1 $f0, 0x30($a0) -/* 70A64 8006FE64 460A4200 */ add.s $f8, $f8, $f10 -/* 70A68 8006FE68 E4840034 */ swc1 $f4, 0x34($a0) -/* 70A6C 8006FE6C 03E00008 */ jr $ra -/* 70A70 8006FE70 E4880038 */ swc1 $f8, 0x38($a0) +mtc1 $a1, $f16 +lwc1 $f0, 0x10($a0) +lwc1 $f4, 0x14($a0) +lwc1 $f8, 0x18($a0) +mul.s $f0, $f0, $f16 +lwc1 $f2, 0x30($a0) +lwc1 $f6, 0x34($a0) +mul.s $f4, $f4, $f16 +lwc1 $f10, 0x38($a0) +mul.s $f8, $f8, $f16 +add.s $f0, $f0, $f2 +add.s $f4, $f4, $f6 +swc1 $f0, 0x30($a0) +add.s $f8, $f8, $f10 +swc1 $f4, 0x34($a0) +jr $ra + swc1 $f8, 0x38($a0) .end mtxf_translate_y /* Official Name: mathRpyXyzMtx */ leaf mtxf_from_inverse_transform -/* 70A74 8006FE74 27BDFFF8 */ addiu $sp, $sp, -0x8 -/* 70A78 8006FE78 3C013780 */ lui $at, (0x37800000 >> 16) -/* 70A7C 8006FE7C FFBF0000 */ sd $ra, 0x0($sp) -/* 70A80 8006FE80 00803825 */ or $a3, $a0, $zero -/* 70A84 8006FE84 44819000 */ mtc1 $at, $f18 -/* 70A88 8006FE88 0C01C20C */ jal sins_s16 -/* 70A8C 8006FE8C 84A40000 */ lh $a0, 0x0($a1) -/* 70A90 8006FE90 44820000 */ mtc1 $v0, $f0 -/* 70A94 8006FE94 84A40000 */ lh $a0, 0x0($a1) -/* 70A98 8006FE98 46800020 */ cvt.s.w $f0, $f0 -/* 70A9C 8006FE9C 46120002 */ mul.s $f0, $f0, $f18 -/* 70AA0 8006FEA0 0C01C20B */ jal coss_s16 -/* 70AA4 8006FEA4 00000000 */ nop -/* 70AA8 8006FEA8 44821000 */ mtc1 $v0, $f2 -/* 70AAC 8006FEAC 84A40002 */ lh $a0, 0x2($a1) -/* 70AB0 8006FEB0 468010A0 */ cvt.s.w $f2, $f2 -/* 70AB4 8006FEB4 46121082 */ mul.s $f2, $f2, $f18 -/* 70AB8 8006FEB8 0C01C20C */ jal sins_s16 -/* 70ABC 8006FEBC 00000000 */ nop -/* 70AC0 8006FEC0 44822000 */ mtc1 $v0, $f4 -/* 70AC4 8006FEC4 84A40002 */ lh $a0, 0x2($a1) -/* 70AC8 8006FEC8 46802120 */ cvt.s.w $f4, $f4 -/* 70ACC 8006FECC 46122102 */ mul.s $f4, $f4, $f18 -/* 70AD0 8006FED0 0C01C20B */ jal coss_s16 -/* 70AD4 8006FED4 00000000 */ nop -/* 70AD8 8006FED8 44823000 */ mtc1 $v0, $f6 -/* 70ADC 8006FEDC 84A40004 */ lh $a0, 0x4($a1) -/* 70AE0 8006FEE0 468031A0 */ cvt.s.w $f6, $f6 -/* 70AE4 8006FEE4 46123182 */ mul.s $f6, $f6, $f18 -/* 70AE8 8006FEE8 0C01C20C */ jal sins_s16 -/* 70AEC 8006FEEC 00000000 */ nop -/* 70AF0 8006FEF0 44824000 */ mtc1 $v0, $f8 -/* 70AF4 8006FEF4 84A40004 */ lh $a0, 0x4($a1) -/* 70AF8 8006FEF8 46804220 */ cvt.s.w $f8, $f8 -/* 70AFC 8006FEFC 46124202 */ mul.s $f8, $f8, $f18 -/* 70B00 8006FF00 0C01C20B */ jal coss_s16 -/* 70B04 8006FF04 00000000 */ nop -/* 70B08 8006FF08 44825000 */ mtc1 $v0, $f10 -/* 70B0C 8006FF0C ACE0000C */ sw $zero, 0xC($a3) -/* 70B10 8006FF10 E4E40018 */ swc1 $f4, 0x18($a3) -/* 70B14 8006FF14 468052A0 */ cvt.s.w $f10, $f10 -/* 70B18 8006FF18 ACE0001C */ sw $zero, 0x1C($a3) -/* 70B1C 8006FF1C ACE0002C */ sw $zero, 0x2C($a3) -/* 70B20 8006FF20 3C013F80 */ lui $at, (0x3F800000 >> 16) -/* 70B24 8006FF24 46125282 */ mul.s $f10, $f10, $f18 -/* 70B28 8006FF28 00000000 */ nop -/* 70B2C 8006FF2C 46082402 */ mul.s $f16, $f4, $f8 -/* 70B30 8006FF30 00000000 */ nop -/* 70B34 8006FF34 46008402 */ mul.s $f16, $f16, $f0 -/* 70B38 8006FF38 00000000 */ nop -/* 70B3C 8006FF3C 460A1482 */ mul.s $f18, $f2, $f10 -/* 70B40 8006FF40 46109401 */ sub.s $f16, $f18, $f16 -/* 70B44 8006FF44 E4F00000 */ swc1 $f16, 0x0($a3) -/* 70B48 8006FF48 460A2402 */ mul.s $f16, $f4, $f10 -/* 70B4C 8006FF4C 00000000 */ nop -/* 70B50 8006FF50 46008402 */ mul.s $f16, $f16, $f0 -/* 70B54 8006FF54 00000000 */ nop -/* 70B58 8006FF58 46081482 */ mul.s $f18, $f2, $f8 -/* 70B5C 8006FF5C 46128400 */ add.s $f16, $f16, $f18 -/* 70B60 8006FF60 E4F00004 */ swc1 $f16, 0x4($a3) -/* 70B64 8006FF64 46060402 */ mul.s $f16, $f0, $f6 -/* 70B68 8006FF68 46008407 */ neg.s $f16, $f16 -/* 70B6C 8006FF6C E4F00008 */ swc1 $f16, 0x8($a3) -/* 70B70 8006FF70 46083402 */ mul.s $f16, $f6, $f8 -/* 70B74 8006FF74 46008407 */ neg.s $f16, $f16 -/* 70B78 8006FF78 E4F00010 */ swc1 $f16, 0x10($a3) -/* 70B7C 8006FF7C 460A3402 */ mul.s $f16, $f6, $f10 -/* 70B80 8006FF80 E4F00014 */ swc1 $f16, 0x14($a3) -/* 70B84 8006FF84 46082402 */ mul.s $f16, $f4, $f8 -/* 70B88 8006FF88 00000000 */ nop -/* 70B8C 8006FF8C 46028402 */ mul.s $f16, $f16, $f2 -/* 70B90 8006FF90 00000000 */ nop -/* 70B94 8006FF94 460A0482 */ mul.s $f18, $f0, $f10 -/* 70B98 8006FF98 46128400 */ add.s $f16, $f16, $f18 -/* 70B9C 8006FF9C E4F00020 */ swc1 $f16, 0x20($a3) -/* 70BA0 8006FFA0 460A2402 */ mul.s $f16, $f4, $f10 -/* 70BA4 8006FFA4 00000000 */ nop -/* 70BA8 8006FFA8 46028402 */ mul.s $f16, $f16, $f2 -/* 70BAC 8006FFAC 00000000 */ nop -/* 70BB0 8006FFB0 46080482 */ mul.s $f18, $f0, $f8 -/* 70BB4 8006FFB4 46109401 */ sub.s $f16, $f18, $f16 -/* 70BB8 8006FFB8 C4F20000 */ lwc1 $f18, 0x0($a3) -/* 70BBC 8006FFBC E4F00024 */ swc1 $f16, 0x24($a3) -/* 70BC0 8006FFC0 46061402 */ mul.s $f16, $f2, $f6 -/* 70BC4 8006FFC4 E4F00028 */ swc1 $f16, 0x28($a3) -/* 70BC8 8006FFC8 C4A0000C */ lwc1 $f0, 0xC($a1) -/* 70BCC 8006FFCC C4A20010 */ lwc1 $f2, 0x10($a1) -/* 70BD0 8006FFD0 C4F00010 */ lwc1 $f16, 0x10($a3) -/* 70BD4 8006FFD4 46009482 */ mul.s $f18, $f18, $f0 -/* 70BD8 8006FFD8 C4A40014 */ lwc1 $f4, 0x14($a1) -/* 70BDC 8006FFDC 46028402 */ mul.s $f16, $f16, $f2 -/* 70BE0 8006FFE0 46128400 */ add.s $f16, $f16, $f18 -/* 70BE4 8006FFE4 C4F20020 */ lwc1 $f18, 0x20($a3) -/* 70BE8 8006FFE8 46049482 */ mul.s $f18, $f18, $f4 -/* 70BEC 8006FFEC 46128400 */ add.s $f16, $f16, $f18 -/* 70BF0 8006FFF0 C4F20004 */ lwc1 $f18, 0x4($a3) -/* 70BF4 8006FFF4 E4F00030 */ swc1 $f16, 0x30($a3) -/* 70BF8 8006FFF8 46009482 */ mul.s $f18, $f18, $f0 -/* 70BFC 8006FFFC C4F00014 */ lwc1 $f16, 0x14($a3) -/* 70C00 80070000 46028402 */ mul.s $f16, $f16, $f2 -/* 70C04 80070004 46128400 */ add.s $f16, $f16, $f18 -/* 70C08 80070008 C4F20024 */ lwc1 $f18, 0x24($a3) -/* 70C0C 8007000C 46049482 */ mul.s $f18, $f18, $f4 -/* 70C10 80070010 46128400 */ add.s $f16, $f16, $f18 -/* 70C14 80070014 C4F20008 */ lwc1 $f18, 0x8($a3) -/* 70C18 80070018 E4F00034 */ swc1 $f16, 0x34($a3) -/* 70C1C 8007001C 46009482 */ mul.s $f18, $f18, $f0 -/* 70C20 80070020 C4F00018 */ lwc1 $f16, 0x18($a3) -/* 70C24 80070024 46028402 */ mul.s $f16, $f16, $f2 -/* 70C28 80070028 46128400 */ add.s $f16, $f16, $f18 -/* 70C2C 8007002C C4F20028 */ lwc1 $f18, 0x28($a3) -/* 70C30 80070030 46049482 */ mul.s $f18, $f18, $f4 -/* 70C34 80070034 46128400 */ add.s $f16, $f16, $f18 -/* 70C38 80070038 E4F00038 */ swc1 $f16, 0x38($a3) -/* 70C3C 8007003C 44818000 */ mtc1 $at, $f16 -/* 70C40 80070040 00000000 */ nop -/* 70C44 80070044 E4F0003C */ swc1 $f16, 0x3C($a3) -/* 70C48 80070048 DFBF0000 */ ld $ra, 0x0($sp) -/* 70C4C 8007004C 27BD0008 */ addiu $sp, $sp, 0x8 -/* 70C50 80070050 03E00008 */ jr $ra -/* 70C54 80070054 00000000 */ nop +addiu $sp, $sp, -0x8 +li.s $at, 0.0000152587890625 /* (1.0f / 0x10000) */ +sd $ra, 0x0($sp) +or $a3, $a0, $zero +mtc1 $at, $f18 +jal sins_s16 + lh $a0, 0x0($a1) +mtc1 $v0, $f0 +lh $a0, 0x0($a1) +cvt.s.w $f0, $f0 +mul.s $f0, $f0, $f18 +jal coss_s16 + nop +mtc1 $v0, $f2 +lh $a0, 0x2($a1) +cvt.s.w $f2, $f2 +mul.s $f2, $f2, $f18 +jal sins_s16 + nop +mtc1 $v0, $f4 +lh $a0, 0x2($a1) +cvt.s.w $f4, $f4 +mul.s $f4, $f4, $f18 +jal coss_s16 + nop +mtc1 $v0, $f6 +lh $a0, 0x4($a1) +cvt.s.w $f6, $f6 +mul.s $f6, $f6, $f18 +jal sins_s16 + nop +mtc1 $v0, $f8 +lh $a0, 0x4($a1) +cvt.s.w $f8, $f8 +mul.s $f8, $f8, $f18 +jal coss_s16 + nop +mtc1 $v0, $f10 +sw $zero, 0xC($a3) +swc1 $f4, 0x18($a3) +cvt.s.w $f10, $f10 +sw $zero, 0x1C($a3) +sw $zero, 0x2C($a3) +li.s $at, 1.0 +mul.s $f10, $f10, $f18 +nop +mul.s $f16, $f4, $f8 +nop +mul.s $f16, $f16, $f0 +nop +mul.s $f18, $f2, $f10 +sub.s $f16, $f18, $f16 +swc1 $f16, 0x0($a3) +mul.s $f16, $f4, $f10 +nop +mul.s $f16, $f16, $f0 +nop +mul.s $f18, $f2, $f8 +add.s $f16, $f16, $f18 +swc1 $f16, 0x4($a3) +mul.s $f16, $f0, $f6 +neg.s $f16, $f16 +swc1 $f16, 0x8($a3) +mul.s $f16, $f6, $f8 +neg.s $f16, $f16 +swc1 $f16, 0x10($a3) +mul.s $f16, $f6, $f10 +swc1 $f16, 0x14($a3) +mul.s $f16, $f4, $f8 +nop +mul.s $f16, $f16, $f2 +nop +mul.s $f18, $f0, $f10 +add.s $f16, $f16, $f18 +swc1 $f16, 0x20($a3) +mul.s $f16, $f4, $f10 +nop +mul.s $f16, $f16, $f2 +nop +mul.s $f18, $f0, $f8 +sub.s $f16, $f18, $f16 +lwc1 $f18, 0x0($a3) +swc1 $f16, 0x24($a3) +mul.s $f16, $f2, $f6 +swc1 $f16, 0x28($a3) +lwc1 $f0, 0xC($a1) +lwc1 $f2, 0x10($a1) +lwc1 $f16, 0x10($a3) +mul.s $f18, $f18, $f0 +lwc1 $f4, 0x14($a1) +mul.s $f16, $f16, $f2 +add.s $f16, $f16, $f18 +lwc1 $f18, 0x20($a3) +mul.s $f18, $f18, $f4 +add.s $f16, $f16, $f18 +lwc1 $f18, 0x4($a3) +swc1 $f16, 0x30($a3) +mul.s $f18, $f18, $f0 +lwc1 $f16, 0x14($a3) +mul.s $f16, $f16, $f2 +add.s $f16, $f16, $f18 +lwc1 $f18, 0x24($a3) +mul.s $f18, $f18, $f4 +add.s $f16, $f16, $f18 +lwc1 $f18, 0x8($a3) +swc1 $f16, 0x34($a3) +mul.s $f18, $f18, $f0 +lwc1 $f16, 0x18($a3) +mul.s $f16, $f16, $f2 +add.s $f16, $f16, $f18 +lwc1 $f18, 0x28($a3) +mul.s $f18, $f18, $f4 +add.s $f16, $f16, $f18 +swc1 $f16, 0x38($a3) +mtc1 $at, $f16 +nop +swc1 $f16, 0x3C($a3) +ld $ra, 0x0($sp) +addiu $sp, $sp, 0x8 +jr $ra + nop .end mtxf_from_inverse_transform leaf func_80070058 -/* 70C58 80070058 27BDFFF8 */ addiu $sp, $sp, -0x8 -/* 70C5C 8007005C 3C013780 */ lui $at, (0x37800000 >> 16) -/* 70C60 80070060 FFBF0000 */ sd $ra, 0x0($sp) -/* 70C64 80070064 00803825 */ or $a3, $a0, $zero -/* 70C68 80070068 44819000 */ mtc1 $at, $f18 -/* 70C6C 8007006C 0C01C20C */ jal sins_s16 -/* 70C70 80070070 84A40000 */ lh $a0, 0x0($a1) -/* 70C74 80070074 44820000 */ mtc1 $v0, $f0 -/* 70C78 80070078 84A40000 */ lh $a0, 0x0($a1) -/* 70C7C 8007007C 46800020 */ cvt.s.w $f0, $f0 -/* 70C80 80070080 46120002 */ mul.s $f0, $f0, $f18 -/* 70C84 80070084 0C01C20B */ jal coss_s16 -/* 70C88 80070088 00000000 */ nop -/* 70C8C 8007008C 44821000 */ mtc1 $v0, $f2 -/* 70C90 80070090 84A40002 */ lh $a0, 0x2($a1) -/* 70C94 80070094 468010A0 */ cvt.s.w $f2, $f2 -/* 70C98 80070098 46121082 */ mul.s $f2, $f2, $f18 -/* 70C9C 8007009C 0C01C20C */ jal sins_s16 -/* 70CA0 800700A0 00000000 */ nop -/* 70CA4 800700A4 44822000 */ mtc1 $v0, $f4 -/* 70CA8 800700A8 84A40002 */ lh $a0, 0x2($a1) -/* 70CAC 800700AC 46802120 */ cvt.s.w $f4, $f4 -/* 70CB0 800700B0 46122102 */ mul.s $f4, $f4, $f18 -/* 70CB4 800700B4 0C01C20B */ jal coss_s16 -/* 70CB8 800700B8 00000000 */ nop -/* 70CBC 800700BC 44823000 */ mtc1 $v0, $f6 -/* 70CC0 800700C0 84A40004 */ lh $a0, 0x4($a1) -/* 70CC4 800700C4 468031A0 */ cvt.s.w $f6, $f6 -/* 70CC8 800700C8 46123182 */ mul.s $f6, $f6, $f18 -/* 70CCC 800700CC 0C01C20C */ jal sins_s16 -/* 70CD0 800700D0 00000000 */ nop -/* 70CD4 800700D4 44824000 */ mtc1 $v0, $f8 -/* 70CD8 800700D8 84A40004 */ lh $a0, 0x4($a1) -/* 70CDC 800700DC 46804220 */ cvt.s.w $f8, $f8 -/* 70CE0 800700E0 46124202 */ mul.s $f8, $f8, $f18 -/* 70CE4 800700E4 0C01C20B */ jal coss_s16 -/* 70CE8 800700E8 00000000 */ nop -/* 70CEC 800700EC 44825000 */ mtc1 $v0, $f10 -/* 70CF0 800700F0 3C013F80 */ lui $at, (0x3F800000 >> 16) -/* 70CF4 800700F4 ACE0000C */ sw $zero, 0xC($a3) -/* 70CF8 800700F8 468052A0 */ cvt.s.w $f10, $f10 -/* 70CFC 800700FC ACE0001C */ sw $zero, 0x1C($a3) -/* 70D00 80070100 ACE0002C */ sw $zero, 0x2C($a3) -/* 70D04 80070104 46125282 */ mul.s $f10, $f10, $f18 -/* 70D08 80070108 44819000 */ mtc1 $at, $f18 -/* 70D0C 8007010C 46060302 */ mul.s $f12, $f0, $f6 -/* 70D10 80070110 E4F2003C */ swc1 $f18, 0x3C($a3) -/* 70D14 80070114 DFBF0000 */ ld $ra, 0x0($sp) -/* 70D18 80070118 27BD0008 */ addiu $sp, $sp, 0x8 -/* 70D1C 8007011C 460A1382 */ mul.s $f14, $f2, $f10 -/* 70D20 80070120 00000000 */ nop -/* 70D24 80070124 46080402 */ mul.s $f16, $f0, $f8 -/* 70D28 80070128 03E00008 */ jr $ra -/* 70D2C 8007012C 00000000 */ nop +addiu $sp, $sp, -0x8 +li.s $at, 0.0000152587890625 /* (1.0f / 0x10000) */ +sd $ra, 0x0($sp) +or $a3, $a0, $zero +mtc1 $at, $f18 +jal sins_s16 + lh $a0, 0x0($a1) +mtc1 $v0, $f0 +lh $a0, 0x0($a1) +cvt.s.w $f0, $f0 +mul.s $f0, $f0, $f18 +jal coss_s16 + nop +mtc1 $v0, $f2 +lh $a0, 0x2($a1) +cvt.s.w $f2, $f2 +mul.s $f2, $f2, $f18 +jal sins_s16 + nop +mtc1 $v0, $f4 +lh $a0, 0x2($a1) +cvt.s.w $f4, $f4 +mul.s $f4, $f4, $f18 +jal coss_s16 + nop +mtc1 $v0, $f6 +lh $a0, 0x4($a1) +cvt.s.w $f6, $f6 +mul.s $f6, $f6, $f18 +jal sins_s16 + nop +mtc1 $v0, $f8 +lh $a0, 0x4($a1) +cvt.s.w $f8, $f8 +mul.s $f8, $f8, $f18 +jal coss_s16 + nop +mtc1 $v0, $f10 +li.s $at, 1.0 +sw $zero, 0xC($a3) +cvt.s.w $f10, $f10 +sw $zero, 0x1C($a3) +sw $zero, 0x2C($a3) +mul.s $f10, $f10, $f18 +mtc1 $at, $f18 +mul.s $f12, $f0, $f6 +swc1 $f18, 0x3C($a3) +ld $ra, 0x0($sp) +addiu $sp, $sp, 0x8 +mul.s $f14, $f2, $f10 +nop +mul.s $f16, $f0, $f8 +jr $ra + nop .end func_80070058 leaf mtxf_billboard -/* 70D30 80070130 27BDFFF8 */ addiu $sp, $sp, -0x8 -/* 70D34 80070134 00E0C825 */ or $t9, $a3, $zero -/* 70D38 80070138 3C013780 */ lui $at, (0x37800000 >> 16) -/* 70D3C 8007013C FFBF0000 */ sd $ra, 0x0($sp) -/* 70D40 80070140 00803825 */ or $a3, $a0, $zero -/* 70D44 80070144 44819000 */ mtc1 $at, $f18 -/* 70D48 80070148 0C01C20C */ jal sins_s16 -/* 70D4C 8007014C 00A02025 */ or $a0, $a1, $zero -/* 70D50 80070150 44824000 */ mtc1 $v0, $f8 -/* 70D54 80070154 00A02025 */ or $a0, $a1, $zero -/* 70D58 80070158 46804220 */ cvt.s.w $f8, $f8 -/* 70D5C 8007015C 46124202 */ mul.s $f8, $f8, $f18 -/* 70D60 80070160 0C01C20B */ jal coss_s16 -/* 70D64 80070164 00000000 */ nop -/* 70D68 80070168 44825000 */ mtc1 $v0, $f10 -/* 70D6C 8007016C 44868000 */ mtc1 $a2, $f16 -/* 70D70 80070170 3C013F80 */ lui $at, (0x3F800000 >> 16) -/* 70D74 80070174 468052A0 */ cvt.s.w $f10, $f10 -/* 70D78 80070178 E4F00028 */ swc1 $f16, 0x28($a3) -/* 70D7C 8007017C ACE00008 */ sw $zero, 0x8($a3) -/* 70D80 80070180 ACE0000C */ sw $zero, 0xC($a3) -/* 70D84 80070184 ACE00018 */ sw $zero, 0x18($a3) -/* 70D88 80070188 ACE0001C */ sw $zero, 0x1C($a3) -/* 70D8C 8007018C 46125282 */ mul.s $f10, $f10, $f18 -/* 70D90 80070190 44999000 */ mtc1 $t9, $f18 -/* 70D94 80070194 ACE00020 */ sw $zero, 0x20($a3) -/* 70D98 80070198 ACE00024 */ sw $zero, 0x24($a3) -/* 70D9C 8007019C ACE0002C */ sw $zero, 0x2C($a3) -/* 70DA0 800701A0 ACE00030 */ sw $zero, 0x30($a3) -/* 70DA4 800701A4 ACE00034 */ sw $zero, 0x34($a3) -/* 70DA8 800701A8 46105282 */ mul.s $f10, $f10, $f16 -/* 70DAC 800701AC ACE00038 */ sw $zero, 0x38($a3) -/* 70DB0 800701B0 46104202 */ mul.s $f8, $f8, $f16 -/* 70DB4 800701B4 44818000 */ mtc1 $at, $f16 -/* 70DB8 800701B8 E4EA0000 */ swc1 $f10, 0x0($a3) -/* 70DBC 800701BC 46125282 */ mul.s $f10, $f10, $f18 -/* 70DC0 800701C0 E4F0003C */ swc1 $f16, 0x3C($a3) -/* 70DC4 800701C4 E4E80004 */ swc1 $f8, 0x4($a3) -/* 70DC8 800701C8 46004207 */ neg.s $f8, $f8 -/* 70DCC 800701CC E4E80010 */ swc1 $f8, 0x10($a3) -/* 70DD0 800701D0 E4EA0014 */ swc1 $f10, 0x14($a3) -/* 70DD4 800701D4 DFBF0000 */ ld $ra, 0x0($sp) -/* 70DD8 800701D8 27BD0008 */ addiu $sp, $sp, 0x8 -/* 70DDC 800701DC 03E00008 */ jr $ra -/* 70DE0 800701E0 00000000 */ nop +addiu $sp, $sp, -0x8 +or $t9, $a3, $zero +li.s $at, 0.0000152587890625 /* (1.0f / 0x10000) */ +sd $ra, 0x0($sp) +or $a3, $a0, $zero +mtc1 $at, $f18 +jal sins_s16 + or $a0, $a1, $zero +mtc1 $v0, $f8 +or $a0, $a1, $zero +cvt.s.w $f8, $f8 +mul.s $f8, $f8, $f18 +jal coss_s16 + nop +mtc1 $v0, $f10 +mtc1 $a2, $f16 +li.s $at, 1.0 +cvt.s.w $f10, $f10 +swc1 $f16, 0x28($a3) +sw $zero, 0x8($a3) +sw $zero, 0xC($a3) +sw $zero, 0x18($a3) +sw $zero, 0x1C($a3) +mul.s $f10, $f10, $f18 +mtc1 $t9, $f18 +sw $zero, 0x20($a3) +sw $zero, 0x24($a3) +sw $zero, 0x2C($a3) +sw $zero, 0x30($a3) +sw $zero, 0x34($a3) +mul.s $f10, $f10, $f16 +sw $zero, 0x38($a3) +mul.s $f8, $f8, $f16 +mtc1 $at, $f16 +swc1 $f10, 0x0($a3) +mul.s $f10, $f10, $f18 +swc1 $f16, 0x3C($a3) +swc1 $f8, 0x4($a3) +neg.s $f8, $f8 +swc1 $f8, 0x10($a3) +swc1 $f10, 0x14($a3) +ld $ra, 0x0($sp) +addiu $sp, $sp, 0x8 +jr $ra + nop .end mtxf_billboard leaf vec3s_rotate_rpy -/* 70DE4 800701E4 27BDFFF8 */ addiu $sp, $sp, -0x8 -/* 70DE8 800701E8 FFBF0000 */ sd $ra, 0x0($sp) -/* 70DEC 800701EC 00803025 */ or $a2, $a0, $zero -/* 70DF0 800701F0 84AB0000 */ lh $t3, 0x0($a1) -/* 70DF4 800701F4 84AC0002 */ lh $t4, 0x2($a1) -/* 70DF8 800701F8 84AD0004 */ lh $t5, 0x4($a1) -/* 70DFC 800701FC 0C01C20C */ jal sins_s16 -/* 70E00 80070200 84C40000 */ lh $a0, 0x0($a2) -/* 70E04 80070204 00407025 */ or $t6, $v0, $zero -/* 70E08 80070208 0C01C20B */ jal coss_s16 -/* 70E0C 8007020C 84C40000 */ lh $a0, 0x0($a2) -/* 70E10 80070210 016E0018 */ mult $t3, $t6 -/* 70E14 80070214 00407825 */ or $t7, $v0, $zero -/* 70E18 80070218 84C40002 */ lh $a0, 0x2($a2) -/* 70E1C 8007021C 00004012 */ mflo $t0 -/* 70E20 80070220 00000000 */ nop -/* 70E24 80070224 00000000 */ nop -/* 70E28 80070228 018E0018 */ mult $t4, $t6 -/* 70E2C 8007022C 00004812 */ mflo $t1 -/* 70E30 80070230 00000000 */ nop -/* 70E34 80070234 00000000 */ nop -/* 70E38 80070238 016F0018 */ mult $t3, $t7 -/* 70E3C 8007023C 00005812 */ mflo $t3 -/* 70E40 80070240 01695822 */ sub $t3, $t3, $t1 /* handwritten instruction */ -/* 70E44 80070244 000B5C03 */ sra $t3, $t3, 16 -/* 70E48 80070248 018F0018 */ mult $t4, $t7 -/* 70E4C 8007024C 00006012 */ mflo $t4 -/* 70E50 80070250 01886020 */ add $t4, $t4, $t0 /* handwritten instruction */ -/* 70E54 80070254 0C01C20C */ jal sins_s16 -/* 70E58 80070258 000C6403 */ sra $t4, $t4, 16 -/* 70E5C 8007025C 00407025 */ or $t6, $v0, $zero -/* 70E60 80070260 0C01C20B */ jal coss_s16 -/* 70E64 80070264 84C40002 */ lh $a0, 0x2($a2) -/* 70E68 80070268 018E0018 */ mult $t4, $t6 -/* 70E6C 8007026C 00407825 */ or $t7, $v0, $zero -/* 70E70 80070270 84C40004 */ lh $a0, 0x4($a2) -/* 70E74 80070274 00004012 */ mflo $t0 -/* 70E78 80070278 00000000 */ nop -/* 70E7C 8007027C 00000000 */ nop -/* 70E80 80070280 01AE0018 */ mult $t5, $t6 -/* 70E84 80070284 00004812 */ mflo $t1 -/* 70E88 80070288 00000000 */ nop -/* 70E8C 8007028C 00000000 */ nop -/* 70E90 80070290 018F0018 */ mult $t4, $t7 -/* 70E94 80070294 00006012 */ mflo $t4 -/* 70E98 80070298 01896022 */ sub $t4, $t4, $t1 /* handwritten instruction */ -/* 70E9C 8007029C 000C6403 */ sra $t4, $t4, 16 -/* 70EA0 800702A0 01AF0018 */ mult $t5, $t7 -/* 70EA4 800702A4 00006812 */ mflo $t5 -/* 70EA8 800702A8 01A86820 */ add $t5, $t5, $t0 /* handwritten instruction */ -/* 70EAC 800702AC 0C01C20C */ jal sins_s16 -/* 70EB0 800702B0 000D6C03 */ sra $t5, $t5, 16 -/* 70EB4 800702B4 00407025 */ or $t6, $v0, $zero -/* 70EB8 800702B8 0C01C20B */ jal coss_s16 -/* 70EBC 800702BC 84C40004 */ lh $a0, 0x4($a2) -/* 70EC0 800702C0 016E0018 */ mult $t3, $t6 -/* 70EC4 800702C4 00407825 */ or $t7, $v0, $zero -/* 70EC8 800702C8 A4AC0002 */ sh $t4, 0x2($a1) -/* 70ECC 800702CC 00004012 */ mflo $t0 -/* 70ED0 800702D0 00000000 */ nop -/* 70ED4 800702D4 00000000 */ nop -/* 70ED8 800702D8 01AE0018 */ mult $t5, $t6 -/* 70EDC 800702DC 00004812 */ mflo $t1 -/* 70EE0 800702E0 00000000 */ nop -/* 70EE4 800702E4 00000000 */ nop -/* 70EE8 800702E8 016F0018 */ mult $t3, $t7 -/* 70EEC 800702EC 00005812 */ mflo $t3 -/* 70EF0 800702F0 01695820 */ add $t3, $t3, $t1 /* handwritten instruction */ -/* 70EF4 800702F4 000B5C03 */ sra $t3, $t3, 16 -/* 70EF8 800702F8 01AF0018 */ mult $t5, $t7 -/* 70EFC 800702FC A4AB0000 */ sh $t3, 0x0($a1) -/* 70F00 80070300 00006812 */ mflo $t5 -/* 70F04 80070304 01A86822 */ sub $t5, $t5, $t0 /* handwritten instruction */ -/* 70F08 80070308 000D6C03 */ sra $t5, $t5, 16 -/* 70F0C 8007030C A4AD0004 */ sh $t5, 0x4($a1) -/* 70F10 80070310 DFBF0000 */ ld $ra, 0x0($sp) -/* 70F14 80070314 27BD0008 */ addiu $sp, $sp, 0x8 -/* 70F18 80070318 03E00008 */ jr $ra -/* 70F1C 8007031C 00000000 */ nop +addiu $sp, $sp, -0x8 +sd $ra, 0x0($sp) +or $a2, $a0, $zero +lh $t3, 0x0($a1) +lh $t4, 0x2($a1) +lh $t5, 0x4($a1) +jal sins_s16 + lh $a0, 0x0($a2) +or $t6, $v0, $zero +jal coss_s16 + lh $a0, 0x0($a2) +mult $t3, $t6 +or $t7, $v0, $zero +lh $a0, 0x2($a2) +mflo $t0 +nop +nop +mult $t4, $t6 +mflo $t1 +nop +nop +mult $t3, $t7 +mflo $t3 +sub $t3, $t3, $t1 +sra $t3, $t3, 16 +mult $t4, $t7 +mflo $t4 +add $t4, $t4, $t0 +jal sins_s16 + sra $t4, $t4, 16 +or $t6, $v0, $zero +jal coss_s16 + lh $a0, 0x2($a2) +mult $t4, $t6 +or $t7, $v0, $zero +lh $a0, 0x4($a2) +mflo $t0 +nop +nop +mult $t5, $t6 +mflo $t1 +nop +nop +mult $t4, $t7 +mflo $t4 +sub $t4, $t4, $t1 +sra $t4, $t4, 16 +mult $t5, $t7 +mflo $t5 +add $t5, $t5, $t0 +jal sins_s16 + sra $t5, $t5, 16 +or $t6, $v0, $zero +jal coss_s16 + lh $a0, 0x4($a2) +mult $t3, $t6 +or $t7, $v0, $zero +sh $t4, 0x2($a1) +mflo $t0 +nop +nop +mult $t5, $t6 +mflo $t1 +nop +nop +mult $t3, $t7 +mflo $t3 +add $t3, $t3, $t1 +sra $t3, $t3, 16 +mult $t5, $t7 +sh $t3, 0x0($a1) +mflo $t5 +sub $t5, $t5, $t0 +sra $t5, $t5, 16 +sh $t5, 0x4($a1) +ld $ra, 0x0($sp) +addiu $sp, $sp, 0x8 +jr $ra + nop .end vec3s_rotate_rpy /* Official Name: mathOneFloatRPY */ leaf vec3f_rotate -/* 70F20 80070320 27BDFFF8 */ addiu $sp, $sp, -0x8 -/* 70F24 80070324 FFBF0000 */ sd $ra, 0x0($sp) -/* 70F28 80070328 00803025 */ or $a2, $a0, $zero -/* 70F2C 8007032C C4A40000 */ lwc1 $f4, 0x0($a1) -/* 70F30 80070330 C4A60004 */ lwc1 $f6, 0x4($a1) -/* 70F34 80070334 C4A80008 */ lwc1 $f8, 0x8($a1) -/* 70F38 80070338 0C01C1F1 */ jal sins_f -/* 70F3C 8007033C 84C40004 */ lh $a0, 0x4($a2) -/* 70F40 80070340 46002282 */ mul.s $f10, $f4, $f0 -/* 70F44 80070344 84C40004 */ lh $a0, 0x4($a2) -/* 70F48 80070348 46003302 */ mul.s $f12, $f6, $f0 -/* 70F4C 8007034C 0C01C1FE */ jal coss_f -/* 70F50 80070350 00000000 */ nop -/* 70F54 80070354 46002102 */ mul.s $f4, $f4, $f0 -/* 70F58 80070358 84C40002 */ lh $a0, 0x2($a2) -/* 70F5C 8007035C 46003182 */ mul.s $f6, $f6, $f0 -/* 70F60 80070360 460C2101 */ sub.s $f4, $f4, $f12 -/* 70F64 80070364 0C01C1F1 */ jal sins_f -/* 70F68 80070368 460A3180 */ add.s $f6, $f6, $f10 -/* 70F6C 8007036C 46003282 */ mul.s $f10, $f6, $f0 -/* 70F70 80070370 84C40002 */ lh $a0, 0x2($a2) -/* 70F74 80070374 46004302 */ mul.s $f12, $f8, $f0 -/* 70F78 80070378 0C01C1FE */ jal coss_f -/* 70F7C 8007037C 00000000 */ nop -/* 70F80 80070380 46003182 */ mul.s $f6, $f6, $f0 -/* 70F84 80070384 84C40000 */ lh $a0, 0x0($a2) -/* 70F88 80070388 46004202 */ mul.s $f8, $f8, $f0 -/* 70F8C 8007038C 460C3181 */ sub.s $f6, $f6, $f12 -/* 70F90 80070390 0C01C1F1 */ jal sins_f -/* 70F94 80070394 460A4200 */ add.s $f8, $f8, $f10 -/* 70F98 80070398 46002282 */ mul.s $f10, $f4, $f0 -/* 70F9C 8007039C 84C40000 */ lh $a0, 0x0($a2) -/* 70FA0 800703A0 46004302 */ mul.s $f12, $f8, $f0 -/* 70FA4 800703A4 0C01C1FE */ jal coss_f -/* 70FA8 800703A8 00000000 */ nop -/* 70FAC 800703AC 46002102 */ mul.s $f4, $f4, $f0 -/* 70FB0 800703B0 E4A60004 */ swc1 $f6, 0x4($a1) -/* 70FB4 800703B4 46004202 */ mul.s $f8, $f8, $f0 -/* 70FB8 800703B8 460C2100 */ add.s $f4, $f4, $f12 -/* 70FBC 800703BC 460A4201 */ sub.s $f8, $f8, $f10 -/* 70FC0 800703C0 E4A40000 */ swc1 $f4, 0x0($a1) -/* 70FC4 800703C4 E4A80008 */ swc1 $f8, 0x8($a1) -/* 70FC8 800703C8 DFBF0000 */ ld $ra, 0x0($sp) -/* 70FCC 800703CC 27BD0008 */ addiu $sp, $sp, 0x8 -/* 70FD0 800703D0 03E00008 */ jr $ra -/* 70FD4 800703D4 00000000 */ nop +addiu $sp, $sp, -0x8 +sd $ra, 0x0($sp) +or $a2, $a0, $zero +lwc1 $f4, 0x0($a1) +lwc1 $f6, 0x4($a1) +lwc1 $f8, 0x8($a1) +jal sins_f + lh $a0, 0x4($a2) +mul.s $f10, $f4, $f0 +lh $a0, 0x4($a2) +mul.s $f12, $f6, $f0 +jal coss_f + nop +mul.s $f4, $f4, $f0 +lh $a0, 0x2($a2) +mul.s $f6, $f6, $f0 +sub.s $f4, $f4, $f12 +jal sins_f + add.s $f6, $f6, $f10 +mul.s $f10, $f6, $f0 +lh $a0, 0x2($a2) +mul.s $f12, $f8, $f0 +jal coss_f + nop +mul.s $f6, $f6, $f0 +lh $a0, 0x0($a2) +mul.s $f8, $f8, $f0 +sub.s $f6, $f6, $f12 +jal sins_f + add.s $f8, $f8, $f10 +mul.s $f10, $f4, $f0 +lh $a0, 0x0($a2) +mul.s $f12, $f8, $f0 +jal coss_f + nop +mul.s $f4, $f4, $f0 +swc1 $f6, 0x4($a1) +mul.s $f8, $f8, $f0 +add.s $f4, $f4, $f12 +sub.s $f8, $f8, $f10 +swc1 $f4, 0x0($a1) +swc1 $f8, 0x8($a1) +ld $ra, 0x0($sp) +addiu $sp, $sp, 0x8 +jr $ra + nop .end vec3f_rotate /* Official Name: mathOneFloatYPR */ leaf vec3f_rotate_ypr -/* 70FD8 800703D8 27BDFFF8 */ addiu $sp, $sp, -0x8 -/* 70FDC 800703DC FFBF0000 */ sd $ra, 0x0($sp) -/* 70FE0 800703E0 00803025 */ or $a2, $a0, $zero -/* 70FE4 800703E4 C4A40000 */ lwc1 $f4, 0x0($a1) -/* 70FE8 800703E8 C4A60004 */ lwc1 $f6, 0x4($a1) -/* 70FEC 800703EC C4A80008 */ lwc1 $f8, 0x8($a1) -/* 70FF0 800703F0 0C01C1F1 */ jal sins_f -/* 70FF4 800703F4 84C40000 */ lh $a0, 0x0($a2) -/* 70FF8 800703F8 46002282 */ mul.s $f10, $f4, $f0 -/* 70FFC 800703FC 84C40000 */ lh $a0, 0x0($a2) -/* 71000 80070400 46004302 */ mul.s $f12, $f8, $f0 -/* 71004 80070404 0C01C1FE */ jal coss_f -/* 71008 80070408 00000000 */ nop -/* 7100C 8007040C 46002102 */ mul.s $f4, $f4, $f0 -/* 71010 80070410 84C40002 */ lh $a0, 0x2($a2) -/* 71014 80070414 46004202 */ mul.s $f8, $f8, $f0 -/* 71018 80070418 460C2100 */ add.s $f4, $f4, $f12 -/* 7101C 8007041C 0C01C1F1 */ jal sins_f -/* 71020 80070420 460A4201 */ sub.s $f8, $f8, $f10 -/* 71024 80070424 46003282 */ mul.s $f10, $f6, $f0 -/* 71028 80070428 84C40002 */ lh $a0, 0x2($a2) -/* 7102C 8007042C 46004302 */ mul.s $f12, $f8, $f0 -/* 71030 80070430 0C01C1FE */ jal coss_f -/* 71034 80070434 00000000 */ nop -/* 71038 80070438 46003182 */ mul.s $f6, $f6, $f0 -/* 7103C 8007043C 84C40004 */ lh $a0, 0x4($a2) -/* 71040 80070440 46004202 */ mul.s $f8, $f8, $f0 -/* 71044 80070444 460C3181 */ sub.s $f6, $f6, $f12 -/* 71048 80070448 0C01C1F1 */ jal sins_f -/* 7104C 8007044C 460A4200 */ add.s $f8, $f8, $f10 -/* 71050 80070450 46002282 */ mul.s $f10, $f4, $f0 -/* 71054 80070454 84C40004 */ lh $a0, 0x4($a2) -/* 71058 80070458 46003302 */ mul.s $f12, $f6, $f0 -/* 7105C 8007045C 0C01C1FE */ jal coss_f -/* 71060 80070460 00000000 */ nop -/* 71064 80070464 46002102 */ mul.s $f4, $f4, $f0 -/* 71068 80070468 E4A80008 */ swc1 $f8, 0x8($a1) -/* 7106C 8007046C 46003182 */ mul.s $f6, $f6, $f0 -/* 71070 80070470 460C2101 */ sub.s $f4, $f4, $f12 -/* 71074 80070474 460A3180 */ add.s $f6, $f6, $f10 -/* 71078 80070478 E4A40000 */ swc1 $f4, 0x0($a1) -/* 7107C 8007047C E4A60004 */ swc1 $f6, 0x4($a1) -/* 71080 80070480 DFBF0000 */ ld $ra, 0x0($sp) -/* 71084 80070484 27BD0008 */ addiu $sp, $sp, 0x8 -/* 71088 80070488 03E00008 */ jr $ra -/* 7108C 8007048C 00000000 */ nop +addiu $sp, $sp, -0x8 +sd $ra, 0x0($sp) +or $a2, $a0, $zero +lwc1 $f4, 0x0($a1) +lwc1 $f6, 0x4($a1) +lwc1 $f8, 0x8($a1) +jal sins_f + lh $a0, 0x0($a2) +mul.s $f10, $f4, $f0 +lh $a0, 0x0($a2) +mul.s $f12, $f8, $f0 +jal coss_f + nop +mul.s $f4, $f4, $f0 +lh $a0, 0x2($a2) +mul.s $f8, $f8, $f0 +add.s $f4, $f4, $f12 +jal sins_f + sub.s $f8, $f8, $f10 +mul.s $f10, $f6, $f0 +lh $a0, 0x2($a2) +mul.s $f12, $f8, $f0 +jal coss_f + nop +mul.s $f6, $f6, $f0 +lh $a0, 0x4($a2) +mul.s $f8, $f8, $f0 +sub.s $f6, $f6, $f12 +jal sins_f + add.s $f8, $f8, $f10 +mul.s $f10, $f4, $f0 +lh $a0, 0x4($a2) +mul.s $f12, $f6, $f0 +jal coss_f + nop +mul.s $f4, $f4, $f0 +swc1 $f8, 0x8($a1) +mul.s $f6, $f6, $f0 +sub.s $f4, $f4, $f12 +add.s $f6, $f6, $f10 +swc1 $f4, 0x0($a1) +swc1 $f6, 0x4($a1) +ld $ra, 0x0($sp) +addiu $sp, $sp, 0x8 +jr $ra + nop .end vec3f_rotate_ypr /* Official Name: mathOneFloatPY */ leaf vec3f_rotate_py -/* 71090 80070490 27BDFFF8 */ addiu $sp, $sp, -0x8 -/* 71094 80070494 FFBF0000 */ sd $ra, 0x0($sp) -/* 71098 80070498 00803025 */ or $a2, $a0, $zero -/* 7109C 8007049C C4A80008 */ lwc1 $f8, 0x8($a1) -/* 710A0 800704A0 0C01C1F1 */ jal sins_f -/* 710A4 800704A4 84C40002 */ lh $a0, 0x2($a2) -/* 710A8 800704A8 46004182 */ mul.s $f6, $f8, $f0 -/* 710AC 800704AC 0C01C1FE */ jal coss_f -/* 710B0 800704B0 84C40002 */ lh $a0, 0x2($a2) -/* 710B4 800704B4 46004202 */ mul.s $f8, $f8, $f0 -/* 710B8 800704B8 46003187 */ neg.s $f6, $f6 -/* 710BC 800704BC 0C01C1F1 */ jal sins_f -/* 710C0 800704C0 84C40000 */ lh $a0, 0x0($a2) -/* 710C4 800704C4 46004102 */ mul.s $f4, $f8, $f0 -/* 710C8 800704C8 0C01C1FE */ jal coss_f -/* 710CC 800704CC 84C40000 */ lh $a0, 0x0($a2) -/* 710D0 800704D0 46004202 */ mul.s $f8, $f8, $f0 -/* 710D4 800704D4 E4A40000 */ swc1 $f4, 0x0($a1) -/* 710D8 800704D8 E4A60004 */ swc1 $f6, 0x4($a1) -/* 710DC 800704DC E4A80008 */ swc1 $f8, 0x8($a1) -/* 710E0 800704E0 DFBF0000 */ ld $ra, 0x0($sp) -/* 710E4 800704E4 27BD0008 */ addiu $sp, $sp, 0x8 -/* 710E8 800704E8 03E00008 */ jr $ra -/* 710EC 800704EC 00000000 */ nop +addiu $sp, $sp, -0x8 +sd $ra, 0x0($sp) +or $a2, $a0, $zero +lwc1 $f8, 0x8($a1) +jal sins_f + lh $a0, 0x2($a2) +mul.s $f6, $f8, $f0 +jal coss_f + lh $a0, 0x2($a2) +mul.s $f8, $f8, $f0 +neg.s $f6, $f6 +jal sins_f + lh $a0, 0x0($a2) +mul.s $f4, $f8, $f0 +jal coss_f + lh $a0, 0x0($a2) +mul.s $f8, $f8, $f0 +swc1 $f4, 0x0($a1) +swc1 $f6, 0x4($a1) +swc1 $f8, 0x8($a1) +ld $ra, 0x0($sp) +addiu $sp, $sp, 0x8 +jr $ra + nop .end vec3f_rotate_py /* Official Name: mathXZInTri */ leaf tri2d_xz_contains_point -/* 710F0 800704F0 8FAE0010 */ lw $t6, 0x10($sp) -/* 710F4 800704F4 84C80000 */ lh $t0, 0x0($a2) -/* 710F8 800704F8 84C90004 */ lh $t1, 0x4($a2) -/* 710FC 800704FC 84EB0004 */ lh $t3, 0x4($a3) -/* 71100 80070500 85CC0000 */ lh $t4, 0x0($t6) -/* 71104 80070504 85CD0004 */ lh $t5, 0x4($t6) -/* 71108 80070508 00887022 */ sub $t6, $a0, $t0 /* handwritten instruction */ -/* 7110C 8007050C 01697822 */ sub $t7, $t3, $t1 /* handwritten instruction */ -/* 71110 80070510 01CF0019 */ multu $t6, $t7 -/* 71114 80070514 84EA0000 */ lh $t2, 0x0($a3) -/* 71118 80070518 00A9C822 */ sub $t9, $a1, $t1 /* handwritten instruction */ -/* 7111C 8007051C 24020000 */ addiu $v0, $zero, 0x0 -/* 71120 80070520 0148C022 */ sub $t8, $t2, $t0 /* handwritten instruction */ -/* 71124 80070524 34070001 */ ori $a3, $zero, 0x1 -/* 71128 80070528 00007012 */ mflo $t6 -/* 7112C 8007052C 00007012 */ mflo $t6 -/* 71130 80070530 00000000 */ nop -/* 71134 80070534 00000000 */ nop -/* 71138 80070538 03190019 */ multu $t8, $t9 -/* 7113C 8007053C 00007812 */ mflo $t7 -/* 71140 80070540 0000C012 */ mflo $t8 -/* 71144 80070544 01CF7022 */ sub $t6, $t6, $t7 /* handwritten instruction */ -/* 71148 80070548 05C30003 */ bgezl $t6, .L80070558 -/* 7114C 8007054C 008A7022 */ sub $t6, $a0, $t2 /* handwritten instruction */ -/* 71150 80070550 00E73826 */ xor $a3, $a3, $a3 -/* 71154 80070554 008A7022 */ sub $t6, $a0, $t2 /* handwritten instruction */ +lw $t6, 0x10($sp) +lh $t0, 0x0($a2) +lh $t1, 0x4($a2) +lh $t3, 0x4($a3) +lh $t4, 0x0($t6) +lh $t5, 0x4($t6) +sub $t6, $a0, $t0 +sub $t7, $t3, $t1 +multu $t6, $t7 +lh $t2, 0x0($a3) +sub $t9, $a1, $t1 +addiu $v0, $zero, 0x0 +sub $t8, $t2, $t0 +ori $a3, $zero, 0x1 +mflo $t6 +mflo $t6 +nop +nop +multu $t8, $t9 +mflo $t7 +mflo $t8 +sub $t6, $t6, $t7 +bgezl $t6, .L80070558 + sub $t6, $a0, $t2 +xor $a3, $a3, $a3 +sub $t6, $a0, $t2 .L80070558: -/* 71158 80070558 01AB7822 */ sub $t7, $t5, $t3 /* handwritten instruction */ -/* 7115C 8007055C 01CF0019 */ multu $t6, $t7 -/* 71160 80070560 018AC022 */ sub $t8, $t4, $t2 /* handwritten instruction */ -/* 71164 80070564 00ABC822 */ sub $t9, $a1, $t3 /* handwritten instruction */ -/* 71168 80070568 34060001 */ ori $a2, $zero, 0x1 -/* 7116C 8007056C 00007012 */ mflo $t6 -/* 71170 80070570 00007012 */ mflo $t6 -/* 71174 80070574 00000000 */ nop -/* 71178 80070578 00000000 */ nop -/* 7117C 8007057C 03190019 */ multu $t8, $t9 -/* 71180 80070580 00007812 */ mflo $t7 -/* 71184 80070584 0000C012 */ mflo $t8 -/* 71188 80070588 01CF7022 */ sub $t6, $t6, $t7 /* handwritten instruction */ -/* 7118C 8007058C 05C10002 */ bgez $t6, .L80070598 -/* 71190 80070590 00000000 */ nop -/* 71194 80070594 00C63026 */ xor $a2, $a2, $a2 +sub $t7, $t5, $t3 +multu $t6, $t7 +sub $t8, $t4, $t2 +sub $t9, $a1, $t3 +ori $a2, $zero, 0x1 +mflo $t6 +mflo $t6 +nop +nop +multu $t8, $t9 +mflo $t7 +mflo $t8 +sub $t6, $t6, $t7 +bgez $t6, .L80070598 + nop +xor $a2, $a2, $a2 .L80070598: -/* 71198 80070598 14E60015 */ bne $a3, $a2, .L800705F0 -/* 7119C 8007059C 00000000 */ nop -/* 711A0 800705A0 008C7022 */ sub $t6, $a0, $t4 /* handwritten instruction */ -/* 711A4 800705A4 012D7822 */ sub $t7, $t1, $t5 /* handwritten instruction */ -/* 711A8 800705A8 01CF0019 */ multu $t6, $t7 -/* 711AC 800705AC 010CC022 */ sub $t8, $t0, $t4 /* handwritten instruction */ -/* 711B0 800705B0 00ADC822 */ sub $t9, $a1, $t5 /* handwritten instruction */ -/* 711B4 800705B4 34050001 */ ori $a1, $zero, 0x1 -/* 711B8 800705B8 00007012 */ mflo $t6 -/* 711BC 800705BC 00007012 */ mflo $t6 -/* 711C0 800705C0 00000000 */ nop -/* 711C4 800705C4 00000000 */ nop -/* 711C8 800705C8 03190019 */ multu $t8, $t9 -/* 711CC 800705CC 00007812 */ mflo $t7 -/* 711D0 800705D0 0000C012 */ mflo $t8 -/* 711D4 800705D4 01CF7022 */ sub $t6, $t6, $t7 /* handwritten instruction */ -/* 711D8 800705D8 05C10002 */ bgez $t6, .L800705E4 -/* 711DC 800705DC 00000000 */ nop -/* 711E0 800705E0 00A52826 */ xor $a1, $a1, $a1 +bne $a3, $a2, .L800705F0 + nop +sub $t6, $a0, $t4 +sub $t7, $t1, $t5 +multu $t6, $t7 +sub $t8, $t0, $t4 +sub $t9, $a1, $t5 +ori $a1, $zero, 0x1 +mflo $t6 +mflo $t6 +nop +nop +multu $t8, $t9 +mflo $t7 +mflo $t8 +sub $t6, $t6, $t7 +bgez $t6, .L800705E4 + nop +xor $a1, $a1, $a1 .L800705E4: -/* 711E4 800705E4 14A60002 */ bne $a1, $a2, .L800705F0 -/* 711E8 800705E8 00000000 */ nop -/* 711EC 800705EC 34020001 */ ori $v0, $zero, 0x1 +bne $a1, $a2, .L800705F0 + nop +ori $v0, $zero, 0x1 .L800705F0: -/* 711F0 800705F0 03E00008 */ jr $ra -/* 711F4 800705F4 00000000 */ nop +jr $ra + nop .end tri2d_xz_contains_point /* Official Name: mathTranslateMtx */ leaf mtxf_from_translation -/* 711F8 800705F8 00804025 */ or $t0, $a0, $zero -/* 711FC 800705FC 25090040 */ addiu $t1, $t0, 0x40 +or $t0, $a0, $zero +addiu $t1, $t0, 0x40 .L80070600: -/* 71200 80070600 25080004 */ addiu $t0, $t0, 0x4 -/* 71204 80070604 1528FFFE */ bne $t1, $t0, .L80070600 -/* 71208 80070608 AD00FFFC */ sw $zero, -0x4($t0) -/* 7120C 8007060C 3C013F80 */ lui $at, (0x3F800000 >> 16) -/* 71210 80070610 44819000 */ mtc1 $at, $f18 -/* 71214 80070614 00000000 */ nop -/* 71218 80070618 E4920000 */ swc1 $f18, 0x0($a0) -/* 7121C 8007061C E4920014 */ swc1 $f18, 0x14($a0) -/* 71220 80070620 E4920028 */ swc1 $f18, 0x28($a0) -/* 71224 80070624 E492003C */ swc1 $f18, 0x3C($a0) -/* 71228 80070628 AC850030 */ sw $a1, 0x30($a0) -/* 7122C 8007062C AC860034 */ sw $a2, 0x34($a0) -/* 71230 80070630 03E00008 */ jr $ra -/* 71234 80070634 AC870038 */ sw $a3, 0x38($a0) +addiu $t0, $t0, 0x4 +bne $t1, $t0, .L80070600 + sw $zero, -0x4($t0) +li.s $at, 1.0 +mtc1 $at, $f18 +nop +swc1 $f18, 0x0($a0) +swc1 $f18, 0x14($a0) +swc1 $f18, 0x28($a0) +swc1 $f18, 0x3C($a0) +sw $a1, 0x30($a0) +sw $a2, 0x34($a0) +jr $ra + sw $a3, 0x38($a0) .end mtxf_from_translation /* Official Name: mathScaleMtx */ leaf mtxf_from_scale -/* 71238 80070638 00804025 */ or $t0, $a0, $zero -/* 7123C 8007063C 25090040 */ addiu $t1, $t0, 0x40 +or $t0, $a0, $zero +addiu $t1, $t0, 0x40 .L80070640: -/* 71240 80070640 25080004 */ addiu $t0, $t0, 0x4 -/* 71244 80070644 1528FFFE */ bne $t1, $t0, .L80070640 -/* 71248 80070648 AD00FFFC */ sw $zero, -0x4($t0) -/* 7124C 8007064C 3C013F80 */ lui $at, (0x3F800000 >> 16) -/* 71250 80070650 44819000 */ mtc1 $at, $f18 -/* 71254 80070654 00000000 */ nop -/* 71258 80070658 E492003C */ swc1 $f18, 0x3C($a0) -/* 7125C 8007065C AC850000 */ sw $a1, 0x0($a0) -/* 71260 80070660 AC860014 */ sw $a2, 0x14($a0) -/* 71264 80070664 03E00008 */ jr $ra -/* 71268 80070668 AC870028 */ sw $a3, 0x28($a0) +addiu $t0, $t0, 0x4 +bne $t1, $t0, .L80070640 + sw $zero, -0x4($t0) +li.s $at, 1.0 +mtc1 $at, $f18 +nop +swc1 $f18, 0x3C($a0) +sw $a1, 0x0($a0) +sw $a2, 0x14($a0) +jr $ra + sw $a3, 0x28($a0) .end mtxf_from_scale leaf atan2s -/* 7126C 8007066C 00854025 */ or $t0, $a0, $a1 -/* 71270 80070670 14080003 */ bne $zero, $t0, .L80070680 -/* 71274 80070674 00000000 */ nop -/* 71278 80070678 03E00008 */ jr $ra -/* 7127C 8007067C 24020000 */ addiu $v0, $zero, 0x0 +or $t0, $a0, $a1 +bne $zero, $t0, .L80070680 + nop +jr $ra + addiu $v0, $zero, 0x0 .L80070680: -/* 71280 80070680 04800005 */ bltz $a0, .L80070698 -/* 71284 80070684 00000000 */ nop -/* 71288 80070688 04A2000B */ bltzl $a1, .L800706B8 -/* 7128C 8007068C 00052823 */ negu $a1, $a1 -/* 71290 80070690 0801C1B2 */ j .L800706C8 -/* 71294 80070694 24020000 */ addiu $v0, $zero, 0x0 +bltz $a0, .L80070698 + nop +bltzl $a1, .L800706B8 + negu $a1, $a1 +j .L800706C8 + addiu $v0, $zero, 0x0 .L80070698: -/* 71298 80070698 04A00003 */ bltz $a1, .L800706A8 -/* 7129C 8007069C 00042023 */ negu $a0, $a0 -/* 712A0 800706A0 0801C1AF */ j .L800706BC -/* 712A4 800706A4 3402C000 */ ori $v0, $zero, 0xC000 +bltz $a1, .L800706A8 + negu $a0, $a0 +j .L800706BC + ori $v0, $zero, 0xC000 .L800706A8: -/* 712A8 800706A8 00052823 */ negu $a1, $a1 -/* 712AC 800706AC 0801C1B2 */ j .L800706C8 -/* 712B0 800706B0 34028000 */ ori $v0, $zero, 0x8000 -/* 712B4 800706B4 00052823 */ negu $a1, $a1 +negu $a1, $a1 +j .L800706C8 + ori $v0, $zero, 0x8000 +negu $a1, $a1 .L800706B8: -/* 712B8 800706B8 24024000 */ addiu $v0, $zero, 0x4000 +addiu $v0, $zero, 0x4000 .L800706BC: -/* 712BC 800706BC 00852026 */ xor $a0, $a0, $a1 -/* 712C0 800706C0 00852826 */ xor $a1, $a0, $a1 -/* 712C4 800706C4 00852026 */ xor $a0, $a0, $a1 +xor $a0, $a0, $a1 +xor $a1, $a0, $a1 +xor $a0, $a0, $a1 .L800706C8: -/* 712C8 800706C8 00854023 */ subu $t0, $a0, $a1 -/* 712CC 800706CC 05020012 */ bltzl $t0, .L80070718 -/* 712D0 800706D0 000442F8 */ dsll $t0, $a0, 11 -/* 712D4 800706D4 000542F8 */ dsll $t0, $a1, 11 -/* 712D8 800706D8 0104001F */ ddivu $zero, $t0, $a0 -/* 712DC 800706DC 3C09800E */ lui $t1, %hi(gArcTanTable) -/* 712E0 800706E0 2529DC3E */ addiu $t1, $t1, %lo(gArcTanTable) -/* 712E4 800706E4 24424000 */ addiu $v0, $v0, 0x4000 -/* 712E8 800706E8 14800002 */ bnez $a0, .L800706F4 -/* 712EC 800706EC 00000000 */ nop -/* 712F0 800706F0 0007000D */ break 7 +subu $t0, $a0, $a1 +bltzl $t0, .L80070718 + dsll $t0, $a0, 11 +dsll $t0, $a1, 11 +ddivu $zero, $t0, $a0 +lui $t1, %hi(gArcTanTable) +addiu $t1, $t1, %lo(gArcTanTable) +addiu $v0, $v0, 0x4000 +bnez $a0, .L800706F4 + nop +break 7 .L800706F4: -/* 712F4 800706F4 00004012 */ mflo $t0 -/* 712F8 800706F8 00004012 */ mflo $t0 -/* 712FC 800706FC 31080FFE */ andi $t0, $t0, 0xFFE -/* 71300 80070700 01284821 */ addu $t1, $t1, $t0 -/* 71304 80070704 85280000 */ lh $t0, 0x0($t1) -/* 71308 80070708 00481023 */ subu $v0, $v0, $t0 -/* 7130C 8007070C 03E00008 */ jr $ra -/* 71310 80070710 3042FFFF */ andi $v0, $v0, 0xFFFF -/* 71314 80070714 000442F8 */ dsll $t0, $a0, 11 +mflo $t0 +mflo $t0 +andi $t0, $t0, 0xFFE +addu $t1, $t1, $t0 +lh $t0, 0x0($t1) +subu $v0, $v0, $t0 +jr $ra + andi $v0, $v0, 0xFFFF +dsll $t0, $a0, 11 .L80070718: -/* 71318 80070718 0105001F */ ddivu $zero, $t0, $a1 -/* 7131C 8007071C 3C09800E */ lui $t1, %hi(gArcTanTable) -/* 71320 80070720 2529DC3E */ addiu $t1, $t1, %lo(gArcTanTable) -/* 71324 80070724 14A00002 */ bnez $a1, .L80070730 -/* 71328 80070728 00000000 */ nop -/* 7132C 8007072C 0007000D */ break 7 +ddivu $zero, $t0, $a1 +lui $t1, %hi(gArcTanTable) +addiu $t1, $t1, %lo(gArcTanTable) +bnez $a1, .L80070730 + nop +break 7 .L80070730: -/* 71330 80070730 00004012 */ mflo $t0 -/* 71334 80070734 00004012 */ mflo $t0 -/* 71338 80070738 31080FFE */ andi $t0, $t0, 0xFFE -/* 7133C 8007073C 01284821 */ addu $t1, $t1, $t0 -/* 71340 80070740 85280000 */ lh $t0, 0x0($t1) -/* 71344 80070744 00481021 */ addu $v0, $v0, $t0 -/* 71348 80070748 03E00008 */ jr $ra -/* 7134C 8007074C 3042FFFF */ andi $v0, $v0, 0xFFFF +mflo $t0 +mflo $t0 +andi $t0, $t0, 0xFFE +addu $t1, $t1, $t0 +lh $t0, 0x0($t1) +addu $v0, $v0, $t0 +jr $ra + andi $v0, $v0, 0xFFFF .end atan2s leaf arctan2_f -/* 71350 80070750 3C01437F */ lui $at, (0x437F0000 >> 16) -/* 71354 80070754 44810000 */ mtc1 $at, $f0 -/* 71358 80070758 00000000 */ nop -/* 7135C 8007075C 46006302 */ mul.s $f12, $f12, $f0 -/* 71360 80070760 00000000 */ nop -/* 71364 80070764 46007382 */ mul.s $f14, $f14, $f0 -/* 71368 80070768 46006324 */ cvt.w.s $f12, $f12 -/* 7136C 8007076C 460073A4 */ cvt.w.s $f14, $f14 -/* 71370 80070770 44046000 */ mfc1 $a0, $f12 -/* 71374 80070774 44057000 */ mfc1 $a1, $f14 -/* 71378 80070778 0801C19B */ j atan2s -/* 7137C 8007077C 00000000 */ nop +li.s $at, 255.0 +mtc1 $at, $f0 +nop +mul.s $f12, $f12, $f0 +nop +mul.s $f14, $f14, $f0 +cvt.w.s $f12, $f12 +cvt.w.s $f14, $f14 +mfc1 $a0, $f12 +mfc1 $a1, $f14 +j atan2s + nop .end arctan2_f leaf fix32_sqrt -/* 71380 80070780 44840000 */ mtc1 $a0, $f0 -/* 71384 80070784 3C014780 */ lui $at, (0x47800000 >> 16) -/* 71388 80070788 44811000 */ mtc1 $at, $f2 -/* 7138C 8007078C 46800020 */ cvt.s.w $f0, $f0 -/* 71390 80070790 46020003 */ div.s $f0, $f0, $f2 -/* 71394 80070794 46000004 */ sqrt.s $f0, $f0 -/* 71398 80070798 46020002 */ mul.s $f0, $f0, $f2 -/* 7139C 8007079C 46000024 */ cvt.w.s $f0, $f0 -/* 713A0 800707A0 44020000 */ mfc1 $v0, $f0 -/* 713A4 800707A4 03E00008 */ jr $ra -/* 713A8 800707A8 00000000 */ nop +mtc1 $a0, $f0 +li.s $at, 65536.0 +mtc1 $at, $f2 +cvt.s.w $f0, $f0 +div.s $f0, $f0, $f2 +sqrt.s $f0, $f0 +mul.s $f0, $f0, $f2 +cvt.w.s $f0, $f0 +mfc1 $v0, $f0 +jr $ra + nop .end fix32_sqrt leaf bad_int_sqrt -/* 713AC 800707AC 44840000 */ mtc1 $a0, $f0 -/* 713B0 800707B0 00000000 */ nop -/* 713B4 800707B4 46000004 */ sqrt.s $f0, $f0 -/* 713B8 800707B8 44020000 */ mfc1 $v0, $f0 -/* 713BC 800707BC 03E00008 */ jr $ra -/* 713C0 800707C0 00000000 */ nop +mtc1 $a0, $f0 +nop +sqrt.s $f0, $f0 +mfc1 $v0, $f0 +jr $ra + nop .end bad_int_sqrt leaf sins_f -/* 713C4 800707C4 27BDFFF8 */ addiu $sp, $sp, -0x8 -/* 713C8 800707C8 FFBF0000 */ sd $ra, 0x0($sp) -/* 713CC 800707CC 0C01C20C */ jal sins_s16 -/* 713D0 800707D0 00000000 */ nop -/* 713D4 800707D4 44820000 */ mtc1 $v0, $f0 -/* 713D8 800707D8 3C013780 */ lui $at, (0x37800000 >> 16) -/* 713DC 800707DC 44811000 */ mtc1 $at, $f2 -/* 713E0 800707E0 46800020 */ cvt.s.w $f0, $f0 -/* 713E4 800707E4 DFBF0000 */ ld $ra, 0x0($sp) -/* 713E8 800707E8 27BD0008 */ addiu $sp, $sp, 0x8 -/* 713EC 800707EC 46020002 */ mul.s $f0, $f0, $f2 -/* 713F0 800707F0 03E00008 */ jr $ra -/* 713F4 800707F4 00000000 */ nop +addiu $sp, $sp, -0x8 +sd $ra, 0x0($sp) +jal sins_s16 + nop +mtc1 $v0, $f0 +li.s $at, 0.0000152587890625 /* (1.0f / 0x10000) */ +mtc1 $at, $f2 +cvt.s.w $f0, $f0 +ld $ra, 0x0($sp) +addiu $sp, $sp, 0x8 +mul.s $f0, $f0, $f2 +jr $ra + nop .end sins_f leaf coss_f -/* 713F8 800707F8 27BDFFF8 */ addiu $sp, $sp, -0x8 -/* 713FC 800707FC FFBF0000 */ sd $ra, 0x0($sp) -/* 71400 80070800 0C01C20B */ jal coss_s16 -/* 71404 80070804 00000000 */ nop -/* 71408 80070808 44820000 */ mtc1 $v0, $f0 -/* 7140C 8007080C 3C013780 */ lui $at, (0x37800000 >> 16) -/* 71410 80070810 44811000 */ mtc1 $at, $f2 -/* 71414 80070814 46800020 */ cvt.s.w $f0, $f0 -/* 71418 80070818 DFBF0000 */ ld $ra, 0x0($sp) -/* 7141C 8007081C 27BD0008 */ addiu $sp, $sp, 0x8 -/* 71420 80070820 46020002 */ mul.s $f0, $f0, $f2 -/* 71424 80070824 03E00008 */ jr $ra -/* 71428 80070828 00000000 */ nop +addiu $sp, $sp, -0x8 +sd $ra, 0x0($sp) +jal coss_s16 + nop +mtc1 $v0, $f0 +li.s $at, 0.0000152587890625 /* (1.0f / 0x10000) */ +mtc1 $at, $f2 +cvt.s.w $f0, $f0 +ld $ra, 0x0($sp) +addiu $sp, $sp, 0x8 +mul.s $f0, $f0, $f2 +jr $ra + nop .end coss_f /* Official Name: mathCosInterp */ @@ -1413,7 +1549,7 @@ addiu $a0, $a0, 0x4000 /* Fall through */ /* Official Name: mathSinInterp */ -glabel sins_s16 +altleaf sins_s16 sll $v0, $a0, 17 bgezl $v0, .L80070844 srl $t2, $a0, 3 @@ -1447,7 +1583,7 @@ addiu $a0, $a0, 0x4000 /* Fall through */ /* Official Name: mathSin */ -glabel sins_2 +altleaf sins_2 sll $v0, $a0, 17 bgezl $v0, .L800708A4 srl $t2, $a0, 3 @@ -1469,172 +1605,172 @@ nop .end coss_2 leaf calc_dyn_lighting_for_level_segment -/* 714D0 800708D0 8CA90000 */ lw $t1, 0x0($a1) -/* 714D4 800708D4 8CAA0004 */ lw $t2, 0x4($a1) -/* 714D8 800708D8 8CAB0008 */ lw $t3, 0x8($a1) -/* 714DC 800708DC 94880020 */ lhu $t0, 0x20($a0) -/* 714E0 800708E0 8C86000C */ lw $a2, 0xC($a0) -/* 714E4 800708E4 8C85002C */ lw $a1, 0x2C($a0) -/* 714E8 800708E8 8C840000 */ lw $a0, 0x0($a0) -/* 714EC 800708EC 00421026 */ xor $v0, $v0, $v0 +lw $t1, 0x0($a1) +lw $t2, 0x4($a1) +lw $t3, 0x8($a1) +lhu $t0, 0x20($a0) +lw $a2, 0xC($a0) +lw $a1, 0x2C($a0) +lw $a0, 0x0($a0) +xor $v0, $v0, $v0 .L800708F0: -/* 714F0 800708F0 90CC0006 */ lbu $t4, 0x6($a2) -/* 714F4 800708F4 258CFF01 */ addiu $t4, $t4, -0xFF -/* 714F8 800708F8 51800043 */ beql $t4, $zero, .L80070A08 -/* 714FC 800708FC 94CC0002 */ lhu $t4, 0x2($a2) -/* 71500 80070900 5040000C */ beql $v0, $zero, .L80070934 -/* 71504 80070904 00000000 */ nop -/* 71508 80070908 340C000A */ ori $t4, $zero, 0xA -/* 7150C 8007090C 004C0019 */ multu $v0, $t4 -/* 71510 80070910 340D000A */ ori $t5, $zero, 0xA -/* 71514 80070914 00006012 */ mflo $t4 -/* 71518 80070918 008C2021 */ addu $a0, $a0, $t4 -/* 7151C 8007091C 00000000 */ nop -/* 71520 80070920 004D0019 */ multu $v0, $t5 -/* 71524 80070924 00421026 */ xor $v0, $v0, $v0 -/* 71528 80070928 00006812 */ mflo $t5 -/* 7152C 8007092C 00AD2821 */ addu $a1, $a1, $t5 -/* 71530 80070930 00000000 */ nop +lbu $t4, 0x6($a2) +addiu $t4, $t4, -0xFF +beql $t4, $zero, .L80070A08 + lhu $t4, 0x2($a2) +beql $v0, $zero, .L80070934 + nop +ori $t4, $zero, 0xA +multu $v0, $t4 +ori $t5, $zero, 0xA +mflo $t4 +addu $a0, $a0, $t4 +nop +multu $v0, $t5 +xor $v0, $v0, $v0 +mflo $t5 +addu $a1, $a1, $t5 +nop .L80070934: -/* 71534 80070934 94CD0002 */ lhu $t5, 0x2($a2) -/* 71538 80070938 94CC000E */ lhu $t4, 0xE($a2) -/* 7153C 8007093C 24C6000C */ addiu $a2, $a2, 0xC -/* 71540 80070940 018D6023 */ subu $t4, $t4, $t5 +lhu $t5, 0x2($a2) +lhu $t4, 0xE($a2) +addiu $a2, $a2, 0xC +subu $t4, $t4, $t5 .L80070944: -/* 71544 80070944 84AD0000 */ lh $t5, 0x0($a1) -/* 71548 80070948 84AE0002 */ lh $t6, 0x2($a1) -/* 7154C 8007094C 84AF0004 */ lh $t7, 0x4($a1) -/* 71550 80070950 01A90018 */ mult $t5, $t1 -/* 71554 80070954 90B80007 */ lbu $t8, 0x7($a1) -/* 71558 80070958 90A70006 */ lbu $a3, 0x6($a1) -/* 7155C 8007095C 90B90008 */ lbu $t9, 0x8($a1) -/* 71560 80070960 0018C400 */ sll $t8, $t8, 16 -/* 71564 80070964 90A30009 */ lbu $v1, 0x9($a1) -/* 71568 80070968 00F8C025 */ or $t8, $a3, $t8 -/* 7156C 8007096C 00006812 */ mflo $t5 -/* 71570 80070970 00000000 */ nop -/* 71574 80070974 00000000 */ nop -/* 71578 80070978 01CA0018 */ mult $t6, $t2 -/* 7157C 8007097C 00007012 */ mflo $t6 -/* 71580 80070980 01AE6820 */ add $t5, $t5, $t6 /* handwritten instruction */ -/* 71584 80070984 00000000 */ nop -/* 71588 80070988 01EB0018 */ mult $t7, $t3 -/* 7158C 8007098C 00007812 */ mflo $t7 -/* 71590 80070990 01AF6820 */ add $t5, $t5, $t7 /* handwritten instruction */ -/* 71594 80070994 19A00007 */ blez $t5, .L800709B4 -/* 71598 80070998 00000000 */ nop -/* 7159C 8007099C 000D6D82 */ srl $t5, $t5, 22 -/* 715A0 800709A0 006D1821 */ addu $v1, $v1, $t5 -/* 715A4 800709A4 2C6D0081 */ sltiu $t5, $v1, 0x81 -/* 715A8 800709A8 15A00002 */ bnez $t5, .L800709B4 -/* 715AC 800709AC 00000000 */ nop -/* 715B0 800709B0 34030080 */ ori $v1, $zero, 0x80 +lh $t5, 0x0($a1) +lh $t6, 0x2($a1) +lh $t7, 0x4($a1) +mult $t5, $t1 +lbu $t8, 0x7($a1) +lbu $a3, 0x6($a1) +lbu $t9, 0x8($a1) +sll $t8, $t8, 16 +lbu $v1, 0x9($a1) +or $t8, $a3, $t8 +mflo $t5 +nop +nop +mult $t6, $t2 +mflo $t6 +add $t5, $t5, $t6 +nop +mult $t7, $t3 +mflo $t7 +add $t5, $t5, $t7 +blez $t5, .L800709B4 + nop +srl $t5, $t5, 22 +addu $v1, $v1, $t5 +sltiu $t5, $v1, 0x81 +bnez $t5, .L800709B4 + nop +ori $v1, $zero, 0x80 .L800709B4: -/* 715B4 800709B4 00780019 */ multu $v1, $t8 -/* 715B8 800709B8 24A5000A */ addiu $a1, $a1, 0xA -/* 715BC 800709BC 258CFFFF */ addiu $t4, $t4, -0x1 -/* 715C0 800709C0 2484000A */ addiu $a0, $a0, 0xA -/* 715C4 800709C4 0000C012 */ mflo $t8 -/* 715C8 800709C8 0018C1C2 */ srl $t8, $t8, 7 -/* 715CC 800709CC A098FFFC */ sb $t8, -0x4($a0) -/* 715D0 800709D0 00790019 */ multu $v1, $t9 -/* 715D4 800709D4 0018C402 */ srl $t8, $t8, 16 -/* 715D8 800709D8 A098FFFD */ sb $t8, -0x3($a0) -/* 715DC 800709DC 0000C812 */ mflo $t9 -/* 715E0 800709E0 0019C9C2 */ srl $t9, $t9, 7 -/* 715E4 800709E4 A099FFFE */ sb $t9, -0x2($a0) -/* 715E8 800709E8 5580FFD6 */ bnel $t4, $zero, .L80070944 -/* 715EC 800709EC 00000000 */ nop -/* 715F0 800709F0 2508FFFF */ addiu $t0, $t0, -0x1 -/* 715F4 800709F4 5500FFBE */ bnel $t0, $zero, .L800708F0 -/* 715F8 800709F8 00000000 */ nop -/* 715FC 800709FC 03E00008 */ jr $ra -/* 71600 80070A00 00000000 */ nop +multu $v1, $t8 +addiu $a1, $a1, 0xA +addiu $t4, $t4, -0x1 +addiu $a0, $a0, 0xA +mflo $t8 +srl $t8, $t8, 7 +sb $t8, -0x4($a0) +multu $v1, $t9 +srl $t8, $t8, 16 +sb $t8, -0x3($a0) +mflo $t9 +srl $t9, $t9, 7 +sb $t9, -0x2($a0) +bnel $t4, $zero, .L80070944 + nop +addiu $t0, $t0, -0x1 +bnel $t0, $zero, .L800708F0 + nop +jr $ra + nop .end calc_dyn_lighting_for_level_segment leaf func_80070A04 -/* 71604 80070A04 94CC0002 */ lhu $t4, 0x2($a2) +lhu $t4, 0x2($a2) .L80070A08: -/* 71608 80070A08 94CD000E */ lhu $t5, 0xE($a2) -/* 7160C 80070A0C 24C6000C */ addiu $a2, $a2, 0xC -/* 71610 80070A10 2508FFFF */ addiu $t0, $t0, -0x1 -/* 71614 80070A14 01AC6023 */ subu $t4, $t5, $t4 -/* 71618 80070A18 004C1021 */ addu $v0, $v0, $t4 -/* 7161C 80070A1C 5500FFB4 */ bnel $t0, $zero, .L800708F0 -/* 71620 80070A20 00000000 */ nop -/* 71624 80070A24 03E00008 */ jr $ra -/* 71628 80070A28 00000000 */ nop +lhu $t5, 0xE($a2) +addiu $a2, $a2, 0xC +addiu $t0, $t0, -0x1 +subu $t4, $t5, $t4 +addu $v0, $v0, $t4 +bnel $t0, $zero, .L800708F0 + nop +jr $ra + nop .end func_80070A04 leaf area_triangle_2d -/* 7162C 80070A2C 44862000 */ mtc1 $a2, $f4 -/* 71630 80070A30 46006006 */ mov.s $f0, $f12 -/* 71634 80070A34 44873000 */ mtc1 $a3, $f6 -/* 71638 80070A38 46002301 */ sub.s $f12, $f4, $f0 -/* 7163C 80070A3C 46007086 */ mov.s $f2, $f14 -/* 71640 80070A40 C7A80010 */ lwc1 $f8, 0x10($sp) -/* 71644 80070A44 46023381 */ sub.s $f14, $f6, $f2 -/* 71648 80070A48 460C6302 */ mul.s $f12, $f12, $f12 -/* 7164C 80070A4C C7AA0014 */ lwc1 $f10, 0x14($sp) -/* 71650 80070A50 46044401 */ sub.s $f16, $f8, $f4 -/* 71654 80070A54 460E7382 */ mul.s $f14, $f14, $f14 -/* 71658 80070A58 3C013F00 */ lui $at, (0x3F000000 >> 16) -/* 7165C 80070A5C 46065481 */ sub.s $f18, $f10, $f6 -/* 71660 80070A60 46108402 */ mul.s $f16, $f16, $f16 -/* 71664 80070A64 46080001 */ sub.s $f0, $f0, $f8 -/* 71668 80070A68 46129482 */ mul.s $f18, $f18, $f18 -/* 7166C 80070A6C 460A1081 */ sub.s $f2, $f2, $f10 -/* 71670 80070A70 46000002 */ mul.s $f0, $f0, $f0 -/* 71674 80070A74 44815000 */ mtc1 $at, $f10 -/* 71678 80070A78 460E6300 */ add.s $f12, $f12, $f14 -/* 7167C 80070A7C 46021082 */ mul.s $f2, $f2, $f2 -/* 71680 80070A80 46128400 */ add.s $f16, $f16, $f18 -/* 71684 80070A84 46006304 */ sqrt.s $f12, $f12 -/* 71688 80070A88 46008404 */ sqrt.s $f16, $f16 -/* 7168C 80070A8C 46020000 */ add.s $f0, $f0, $f2 -/* 71690 80070A90 44801000 */ mtc1 $zero, $f2 -/* 71694 80070A94 46106480 */ add.s $f18, $f12, $f16 -/* 71698 80070A98 46000004 */ sqrt.s $f0, $f0 -/* 7169C 80070A9C 46009480 */ add.s $f18, $f18, $f0 -/* 716A0 80070AA0 46125482 */ mul.s $f18, $f10, $f18 -/* 716A4 80070AA4 460C9101 */ sub.s $f4, $f18, $f12 -/* 716A8 80070AA8 46009201 */ sub.s $f8, $f18, $f0 -/* 716AC 80070AAC 46122002 */ mul.s $f0, $f4, $f18 -/* 716B0 80070AB0 46109181 */ sub.s $f6, $f18, $f16 -/* 716B4 80070AB4 46083182 */ mul.s $f6, $f6, $f8 -/* 716B8 80070AB8 00000000 */ nop -/* 716BC 80070ABC 46060002 */ mul.s $f0, $f0, $f6 -/* 716C0 80070AC0 4602003C */ c.lt.s $f0, $f2 -/* 716C4 80070AC4 45020002 */ bc1fl .L80070AD0 -/* 716C8 80070AC8 00000000 */ nop -/* 716CC 80070ACC 46001006 */ mov.s $f0, $f2 +mtc1 $a2, $f4 +mov.s $f0, $f12 +mtc1 $a3, $f6 +sub.s $f12, $f4, $f0 +mov.s $f2, $f14 +lwc1 $f8, 0x10($sp) +sub.s $f14, $f6, $f2 +mul.s $f12, $f12, $f12 +lwc1 $f10, 0x14($sp) +sub.s $f16, $f8, $f4 +mul.s $f14, $f14, $f14 +li.s $at, 0.5 +sub.s $f18, $f10, $f6 +mul.s $f16, $f16, $f16 +sub.s $f0, $f0, $f8 +mul.s $f18, $f18, $f18 +sub.s $f2, $f2, $f10 +mul.s $f0, $f0, $f0 +mtc1 $at, $f10 +add.s $f12, $f12, $f14 +mul.s $f2, $f2, $f2 +add.s $f16, $f16, $f18 +sqrt.s $f12, $f12 +sqrt.s $f16, $f16 +add.s $f0, $f0, $f2 +mtc1 $zero, $f2 +add.s $f18, $f12, $f16 +sqrt.s $f0, $f0 +add.s $f18, $f18, $f0 +mul.s $f18, $f10, $f18 +sub.s $f4, $f18, $f12 +sub.s $f8, $f18, $f0 +mul.s $f0, $f4, $f18 +sub.s $f6, $f18, $f16 +mul.s $f6, $f6, $f8 +nop +mul.s $f0, $f0, $f6 +c.lt.s $f0, $f2 +bc1fl .L80070AD0 + nop +mov.s $f0, $f2 .L80070AD0: -/* 716D0 80070AD0 03E00008 */ jr $ra -/* 716D4 80070AD4 46000004 */ sqrt.s $f0, $f0 +jr $ra + sqrt.s $f0, $f0 .end area_triangle_2d leaf set_breakpoint -/* 716D8 80070AD8 34840001 */ ori $a0, $a0, 0x1 -/* 716DC 80070ADC 40849000 */ mtc0 $a0, $18 /* handwritten instruction */ -/* 716E0 80070AE0 2408000F */ addiu $t0, $zero, 0xF -/* 716E4 80070AE4 40889800 */ mtc0 $t0, $19 /* handwritten instruction */ -/* 716E8 80070AE8 00000000 */ nop -/* 716EC 80070AEC 00000000 */ nop -/* 716F0 80070AF0 00000000 */ nop -/* 716F4 80070AF4 00000000 */ nop -/* 716F8 80070AF8 00000000 */ nop -/* 716FC 80070AFC 03E00008 */ jr $ra -/* 71700 80070B00 00000000 */ nop +ori $a0, $a0, 0x1 +mtc0 $a0, $18 +addiu $t0, $zero, 0xF +mtc0 $t0, $19 +nop +nop +nop +nop +nop +jr $ra + nop .end set_breakpoint leaf dmacopy_doubleword -/* 71704 80070B04 DC880000 */ ld $t0, 0x0($a0) -/* 71708 80070B08 DC890008 */ ld $t1, 0x8($a0) -/* 7170C 80070B0C 20A50010 */ addi $a1, $a1, 0x10 /* handwritten instruction */ -/* 71710 80070B10 20840010 */ addi $a0, $a0, 0x10 /* handwritten instruction */ -/* 71714 80070B14 FCA8FFF0 */ sd $t0, -0x10($a1) -/* 71718 80070B18 14A6FFFA */ bne $a1, $a2, dmacopy_doubleword -/* 7171C 80070B1C FCA9FFF8 */ sd $t1, -0x8($a1) -/* 71720 80070B20 03E00008 */ jr $ra -/* 71724 80070B24 00000000 */ nop +ld $t0, 0x0($a0) +ld $t1, 0x8($a0) +addi $a1, $a1, 0x10 +addi $a0, $a0, 0x10 +sd $t0, -0x10($a1) +bne $a1, $a2, dmacopy_doubleword + sd $t1, -0x8($a1) +jr $ra + nop .end dmacopy_doubleword diff --git a/src/printf.c b/src/printf.c index caeb3071..42a6eb6b 100644 --- a/src/printf.c +++ b/src/printf.c @@ -142,16 +142,6 @@ Gfx dDebugFontSettings[] = { /*******************************/ -/************ .rodata ************/ - -const char gLowerCase[] = "0123456789abcdefghijklmnopqrstuvwxyz"; -const char gUpperCase[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; -const char D_800E8C50[] = ""; -const char D_800E8C54[] = "(null)"; -const char D_800E8C5C[] = "(nil)"; - -/*********************************/ - /************ .bss ************/ TextureHeader *gTexture[3]; @@ -174,20 +164,24 @@ char *gDebugPrintBufferEnd; /******************************/ +const char _itoa_lower_digits[] = "0123456789abcdefghijklmnopqrstuvwxyz"; +const char _itoa_upper_digits[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; + /** * Standard C Library function that converts integers to strings. + * Exact match to glibc 1.09 version. */ -char *_itoa(u64 n, char *outBuffer, u32 radix, s32 useUpperCase) { - char *alphabet; - char *buffer; +char *_itoa(unsigned long long int n, char *buflim, unsigned int base, int upper_case) { + /* Base-36 digits for numbers. */ + const char *alphabet = upper_case ? _itoa_upper_digits : _itoa_lower_digits; + register char *bp = buflim; - alphabet = (useUpperCase) ? (char *) gUpperCase : (char *) gLowerCase; - - for (buffer = outBuffer; n > 0; n /= radix) { - *(--buffer) = alphabet[n % radix]; + while (n > 0) { + *(--bp) = alphabet[n % base]; + n /= base; } - return buffer; + return bp; } /** @@ -199,15 +193,18 @@ void sprintfSetSpacingCodes(s32 setting) { } /** + * Exact match to glibc 1.09 version. * Official name: sprintf */ UNUSED int sprintf(char *s, const char *format, ...) { - s32 ret; - va_list args; - va_start(args, format); - ret = vsprintf(s, format, args); - va_end(args); - return ret; + va_list arg; + int done; + + va_start(arg, format); + done = vsprintf(s, format, arg); + va_end(arg); + + return done; } #define outchar(x) \ @@ -934,6 +931,9 @@ int vsprintf(char *s, const char *fmt, va_list args) { } #else #pragma GLOBAL_ASM("asm/nonmatchings/printf/vsprintf.s") +const char D_800E8C50[] = ""; +const char D_800E8C54[] = "(null)"; +const char D_800E8C5C[] = "(nil)"; #endif /** diff --git a/tools/asm-differ b/tools/asm-differ index ddb2fad1..093360aa 160000 --- a/tools/asm-differ +++ b/tools/asm-differ @@ -1 +1 @@ -Subproject commit ddb2fad1b73d4d7483d483fb833cad4564a5fc01 +Subproject commit 093360aa31f90e67216ed1971c4087516cc7b940 diff --git a/tools/m2c b/tools/m2c index 4caccf86..3ae39f5c 160000 --- a/tools/m2c +++ b/tools/m2c @@ -1 +1 @@ -Subproject commit 4caccf86a027bf52b9132a8ae9331cb3210305a8 +Subproject commit 3ae39f5c6ae26624f3089cc28b9718ffeb7aef51 diff --git a/ver/symbols/symbol_addrs.jpn.v79.txt b/ver/symbols/symbol_addrs.jpn.v79.txt index 6f52bc92..73f7fc68 100644 --- a/ver/symbols/symbol_addrs.jpn.v79.txt +++ b/ver/symbols/symbol_addrs.jpn.v79.txt @@ -3454,8 +3454,8 @@ D_800E8B10 = 0x800EA5C0; D_800E8B44 = 0x800EA5F4; // printf.c .rodata size:0x270 -gLowerCase = 0x800EA6B0; // type:asciz force_not_migration:true defined:true -gUpperCase = 0x800EA6D8; // type:asciz force_not_migration:true defined:true +_itoa_lower_digits = 0x800EA6B0; // type:asciz force_not_migration:true defined:true +_itoa_upper_digits = 0x800EA6D8; // type:asciz force_not_migration:true defined:true D_800E8C50 = 0x800EA700; // type:asciz force_not_migration:true defined:true D_800E8C54 = 0x800EA704; // type:asciz force_not_migration:true defined:true D_800E8C5C = 0x800EA70C; // type:asciz force_not_migration:true defined:true diff --git a/ver/symbols/symbol_addrs.pal.v77.txt b/ver/symbols/symbol_addrs.pal.v77.txt index 14e4feef..f7370f92 100644 --- a/ver/symbols/symbol_addrs.pal.v77.txt +++ b/ver/symbols/symbol_addrs.pal.v77.txt @@ -3203,8 +3203,8 @@ D_800E8AB4 = 0x800E8B44; D_800E8AD8 = 0x800E8B68; D_800E8B10 = 0x800E8BA0; D_800E8B44 = 0x800E8BD4; -gLowerCase = 0x800E8C90; // type:asciz force_not_migration:true defined:true -gUpperCase = 0x800E8CB8; // type:asciz force_not_migration:true defined:true +_itoa_lower_digits = 0x800E8C90; // type:asciz force_not_migration:true defined:true +_itoa_upper_digits = 0x800E8CB8; // type:asciz force_not_migration:true defined:true D_800E8C50 = 0x800E8CE0; // type:asciz force_not_migration:true defined:true D_800E8C54 = 0x800E8CE4; // type:asciz force_not_migration:true defined:true D_800E8C5C = 0x800E8CEC; // type:asciz force_not_migration:true defined:true diff --git a/ver/symbols/symbol_addrs.pal.v80.txt b/ver/symbols/symbol_addrs.pal.v80.txt index 8f13b656..b91b2a68 100644 --- a/ver/symbols/symbol_addrs.pal.v80.txt +++ b/ver/symbols/symbol_addrs.pal.v80.txt @@ -3133,8 +3133,8 @@ D_800E8AB4 = 0x800E90C4; D_800E8AD8 = 0x800E90E8; D_800E8B10 = 0x800E9120; D_800E8B44 = 0x800E9154; -gLowerCase = 0x800E9210; // type:asciz force_not_migration:true defined:true -gUpperCase = 0x800E9238; // type:asciz force_not_migration:true defined:true +_itoa_lower_digits = 0x800E9210; // type:asciz force_not_migration:true defined:true +_itoa_upper_digits = 0x800E9238; // type:asciz force_not_migration:true defined:true D_800E8C50 = 0x800E9260; // type:asciz force_not_migration:true defined:true D_800E8C54 = 0x800E9264; // type:asciz force_not_migration:true defined:true D_800E8C5C = 0x800E926C; // type:asciz force_not_migration:true defined:true diff --git a/ver/symbols/symbol_addrs.us.v77.txt b/ver/symbols/symbol_addrs.us.v77.txt index c8cfdcfd..d2f83eca 100644 --- a/ver/symbols/symbol_addrs.us.v77.txt +++ b/ver/symbols/symbol_addrs.us.v77.txt @@ -3554,8 +3554,8 @@ D_800E8B10 = 0x800E8B10; D_800E8B44 = 0x800E8B44; // printf.c .rodata size:0x270 -gLowerCase = 0x800E8C00; // type:asciz force_not_migration:true defined:true -gUpperCase = 0x800E8C28; // type:asciz force_not_migration:true defined:true +_itoa_lower_digits = 0x800E8C00; // type:asciz force_not_migration:true defined:true +_itoa_upper_digits = 0x800E8C28; // type:asciz force_not_migration:true defined:true D_800E8C50 = 0x800E8C50; // type:asciz force_not_migration:true defined:true D_800E8C54 = 0x800E8C54; // type:asciz force_not_migration:true defined:true D_800E8C5C = 0x800E8C5C; // type:asciz force_not_migration:true defined:true diff --git a/ver/symbols/symbol_addrs.us.v80.txt b/ver/symbols/symbol_addrs.us.v80.txt index 58e830c0..2553d2ab 100644 --- a/ver/symbols/symbol_addrs.us.v80.txt +++ b/ver/symbols/symbol_addrs.us.v80.txt @@ -3129,8 +3129,8 @@ D_800E8AB4 = 0x800E9034; D_800E8AD8 = 0x800E9058; D_800E8B10 = 0x800E9090; D_800E8B44 = 0x800E90C4; -gLowerCase = 0x800E9180; // type:asciz force_not_migration:true defined:true -gUpperCase = 0x800E91A8; // type:asciz force_not_migration:true defined:true +_itoa_lower_digits = 0x800E9180; // type:asciz force_not_migration:true defined:true +_itoa_upper_digits = 0x800E91A8; // type:asciz force_not_migration:true defined:true D_800E8C50 = 0x800E91D0; // type:asciz force_not_migration:true defined:true D_800E8C54 = 0x800E91D4; // type:asciz force_not_migration:true defined:true D_800E8C5C = 0x800E91DC; // type:asciz force_not_migration:true defined:true