From b7f8765d72d62571a95e0e65ce455151892df831 Mon Sep 17 00:00:00 2001 From: MegaMech Date: Fri, 24 Dec 2021 20:31:54 -0700 Subject: [PATCH] Decomped more crash_screen, code_80280650, fixed import shortcut (#115) * Decomped more crash_screen, code_80280650, fixed import shortcut --- asm/bss_800040C0.s | 21 - .../code_80280650/func_80280650.s | 3 - .../code_80280650/func_80280658.s | 29 -- .../code_80280650/func_802806C8.s | 31 -- .../code_80280650/func_80280734.s | 15 - .../code_80280650/func_8028080C.s | 19 - .../code_80280650/func_80280850.s | 14 - .../code_80280650/func_80280884.s | 3 - .../code_80280650/func_8028093C.s | 63 --- .../code_80280650/func_80280FA0.s | 3 - .../code_80280650/func_80280FA8.s | 3 - .../code_80280650/func_80280FB0.s | 20 - .../code_80280650/func_80280FFC.s | 5 - .../code_80280650/func_8028100C.s | 5 - .../code_80280650/func_8028150C.s | 6 - .../code_80280650/func_80281520.s | 3 - .../code_80280650/func_80281528.s | 3 - .../code_80280650/func_80281530.s | 3 - .../code_80280650/func_80281538.s | 3 - .../code_80280650/func_80281540.s | 3 - .../code_80280650/func_80281548.s | 52 --- asm/non_matchings/crash_screen/crash_screen.s | 428 ------------------ .../crash_screen/create_debug_thread.s | 25 - .../crash_screen/func_800046AC.s | 4 - .../crash_screen/get_faulted_thread.s | 33 -- .../crash_screen/start_debug_thread.s | 10 - data/data_credits_128480.s | 10 +- import | 2 +- include/types.h | 80 ++++ mk64.ld | 2 +- src/code_80057C60.c | 2 +- src/code_80280650.c | 395 ++++++---------- src/code_80281780.h | 2 +- src/crash_screen.c | 148 +++--- src/main.c | 2 +- src/math_util.c | 8 +- 36 files changed, 312 insertions(+), 1146 deletions(-) delete mode 100644 asm/bss_800040C0.s delete mode 100644 asm/non_matchings/code_80280650/func_80280650.s delete mode 100644 asm/non_matchings/code_80280650/func_80280658.s delete mode 100644 asm/non_matchings/code_80280650/func_802806C8.s delete mode 100644 asm/non_matchings/code_80280650/func_80280734.s delete mode 100644 asm/non_matchings/code_80280650/func_8028080C.s delete mode 100644 asm/non_matchings/code_80280650/func_80280850.s delete mode 100644 asm/non_matchings/code_80280650/func_80280884.s delete mode 100644 asm/non_matchings/code_80280650/func_8028093C.s delete mode 100644 asm/non_matchings/code_80280650/func_80280FA0.s delete mode 100644 asm/non_matchings/code_80280650/func_80280FA8.s delete mode 100644 asm/non_matchings/code_80280650/func_80280FB0.s delete mode 100644 asm/non_matchings/code_80280650/func_80280FFC.s delete mode 100644 asm/non_matchings/code_80280650/func_8028100C.s delete mode 100644 asm/non_matchings/code_80280650/func_8028150C.s delete mode 100644 asm/non_matchings/code_80280650/func_80281520.s delete mode 100644 asm/non_matchings/code_80280650/func_80281528.s delete mode 100644 asm/non_matchings/code_80280650/func_80281530.s delete mode 100644 asm/non_matchings/code_80280650/func_80281538.s delete mode 100644 asm/non_matchings/code_80280650/func_80281540.s delete mode 100644 asm/non_matchings/code_80280650/func_80281548.s delete mode 100644 asm/non_matchings/crash_screen/crash_screen.s delete mode 100644 asm/non_matchings/crash_screen/create_debug_thread.s delete mode 100644 asm/non_matchings/crash_screen/func_800046AC.s delete mode 100644 asm/non_matchings/crash_screen/get_faulted_thread.s delete mode 100644 asm/non_matchings/crash_screen/start_debug_thread.s diff --git a/asm/bss_800040C0.s b/asm/bss_800040C0.s deleted file mode 100644 index f90f83949..000000000 --- a/asm/bss_800040C0.s +++ /dev/null @@ -1,21 +0,0 @@ -.include "macros.inc" - -.section .bss - -glabel D_80162790 -.skip 1456 - -glabel D_80162D40 -.skip 24 - -glabel D_80162D58 -.skip 4 - -glabel pFramebuffer -.skip 4 - -glabel D_80162D60 -.skip 4 - -glabel D_80162D64 -.skip 12 diff --git a/asm/non_matchings/code_80280650/func_80280650.s b/asm/non_matchings/code_80280650/func_80280650.s deleted file mode 100644 index c76e0a021..000000000 --- a/asm/non_matchings/code_80280650/func_80280650.s +++ /dev/null @@ -1,3 +0,0 @@ -glabel func_80280650 -/* 123C90 80280650 03E00008 */ jr $ra -/* 123C94 80280654 00000000 */ nop diff --git a/asm/non_matchings/code_80280650/func_80280658.s b/asm/non_matchings/code_80280650/func_80280658.s deleted file mode 100644 index fdbcce458..000000000 --- a/asm/non_matchings/code_80280650/func_80280658.s +++ /dev/null @@ -1,29 +0,0 @@ -glabel func_80280658 -/* 123C98 80280658 8C820028 */ lw $v0, 0x28($a0) -/* 123C9C 8028065C 844E0002 */ lh $t6, 2($v0) -/* 123CA0 80280660 448E2000 */ mtc1 $t6, $f4 -/* 123CA4 80280664 00000000 */ nop -/* 123CA8 80280668 468021A0 */ cvt.s.w $f6, $f4 -/* 123CAC 8028066C E4860010 */ swc1 $f6, 0x10($a0) -/* 123CB0 80280670 844F0004 */ lh $t7, 4($v0) -/* 123CB4 80280674 448F4000 */ mtc1 $t7, $f8 -/* 123CB8 80280678 00000000 */ nop -/* 123CBC 8028067C 468042A0 */ cvt.s.w $f10, $f8 -/* 123CC0 80280680 E48A0014 */ swc1 $f10, 0x14($a0) -/* 123CC4 80280684 84580006 */ lh $t8, 6($v0) -/* 123CC8 80280688 44988000 */ mtc1 $t8, $f16 -/* 123CCC 8028068C 00000000 */ nop -/* 123CD0 80280690 468084A0 */ cvt.s.w $f18, $f16 -/* 123CD4 80280694 E4920018 */ swc1 $f18, 0x18($a0) -/* 123CD8 80280698 80590008 */ lb $t9, 8($v0) -/* 123CDC 8028069C 00194200 */ sll $t0, $t9, 8 -/* 123CE0 802806A0 A488000A */ sh $t0, 0xa($a0) -/* 123CE4 802806A4 80490009 */ lb $t1, 9($v0) -/* 123CE8 802806A8 00095200 */ sll $t2, $t1, 8 -/* 123CEC 802806AC A48A000C */ sh $t2, 0xc($a0) -/* 123CF0 802806B0 804B000A */ lb $t3, 0xa($v0) -/* 123CF4 802806B4 000B6200 */ sll $t4, $t3, 8 -/* 123CF8 802806B8 A48C000E */ sh $t4, 0xe($a0) -/* 123CFC 802806BC 844D0000 */ lh $t5, ($v0) -/* 123D00 802806C0 03E00008 */ jr $ra -/* 123D04 802806C4 A48D0004 */ sh $t5, 4($a0) diff --git a/asm/non_matchings/code_80280650/func_802806C8.s b/asm/non_matchings/code_80280650/func_802806C8.s deleted file mode 100644 index 8c0a0aff7..000000000 --- a/asm/non_matchings/code_80280650/func_802806C8.s +++ /dev/null @@ -1,31 +0,0 @@ -glabel func_802806C8 -/* 123D08 802806C8 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* 123D0C 802806CC 3C048028 */ lui $a0, %hi(D_802874F8) # $a0, 0x8028 -/* 123D10 802806D0 AFBF0014 */ sw $ra, 0x14($sp) -/* 123D14 802806D4 8C8474F8 */ lw $a0, %lo(D_802874F8)($a0) -/* 123D18 802806D8 00001025 */ move $v0, $zero -/* 123D1C 802806DC 240300C8 */ li $v1, 200 -.L802806E0: -/* 123D20 802806E0 8C8E0000 */ lw $t6, ($a0) -/* 123D24 802806E4 24420001 */ addiu $v0, $v0, 1 -/* 123D28 802806E8 31CF0001 */ andi $t7, $t6, 1 -/* 123D2C 802806EC 15E0000A */ bnez $t7, .L80280718 -/* 123D30 802806F0 2405004C */ li $a1, 76 -/* 123D34 802806F4 0C033698 */ jal bzero -/* 123D38 802806F8 AFA4001C */ sw $a0, 0x1c($sp) -/* 123D3C 802806FC 8FA2001C */ lw $v0, 0x1c($sp) -/* 123D40 80280700 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 123D44 80280704 44812000 */ mtc1 $at, $f4 -/* 123D48 80280708 24180001 */ li $t8, 1 -/* 123D4C 8028070C AC580000 */ sw $t8, ($v0) -/* 123D50 80280710 10000004 */ b .L80280724 -/* 123D54 80280714 E4440024 */ swc1 $f4, 0x24($v0) -.L80280718: -/* 123D58 80280718 1443FFF1 */ bne $v0, $v1, .L802806E0 -/* 123D5C 8028071C 2484004C */ addiu $a0, $a0, 0x4c -/* 123D60 80280720 00001025 */ move $v0, $zero -.L80280724: -/* 123D64 80280724 8FBF0014 */ lw $ra, 0x14($sp) -/* 123D68 80280728 27BD0028 */ addiu $sp, $sp, 0x28 -/* 123D6C 8028072C 03E00008 */ jr $ra -/* 123D70 80280730 00000000 */ nop diff --git a/asm/non_matchings/code_80280650/func_80280734.s b/asm/non_matchings/code_80280650/func_80280734.s deleted file mode 100644 index 1b914399e..000000000 --- a/asm/non_matchings/code_80280650/func_80280734.s +++ /dev/null @@ -1,15 +0,0 @@ -glabel func_80280734 -/* 123D74 80280734 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 123D78 80280738 AFBF0014 */ sw $ra, 0x14($sp) -/* 123D7C 8028073C 0C0A01B2 */ jal func_802806C8 -/* 123D80 80280740 AFA40020 */ sw $a0, 0x20($sp) -/* 123D84 80280744 8FAE0020 */ lw $t6, 0x20($sp) -/* 123D88 80280748 AFA2001C */ sw $v0, 0x1c($sp) -/* 123D8C 8028074C 00402025 */ move $a0, $v0 -/* 123D90 80280750 0C0A0196 */ jal func_80280658 -/* 123D94 80280754 AC4E0028 */ sw $t6, 0x28($v0) -/* 123D98 80280758 8FBF0014 */ lw $ra, 0x14($sp) -/* 123D9C 8028075C 8FA2001C */ lw $v0, 0x1c($sp) -/* 123DA0 80280760 27BD0020 */ addiu $sp, $sp, 0x20 -/* 123DA4 80280764 03E00008 */ jr $ra -/* 123DA8 80280768 00000000 */ nop diff --git a/asm/non_matchings/code_80280650/func_8028080C.s b/asm/non_matchings/code_80280650/func_8028080C.s deleted file mode 100644 index c4d8b3faa..000000000 --- a/asm/non_matchings/code_80280650/func_8028080C.s +++ /dev/null @@ -1,19 +0,0 @@ -glabel func_8028080C -/* 123E4C 8028080C 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 123E50 80280810 AFBF0014 */ sw $ra, 0x14($sp) -/* 123E54 80280814 0C0A01DB */ jal func_8028076C -/* 123E58 80280818 00000000 */ nop -/* 123E5C 8028081C 44822000 */ mtc1 $v0, $f4 -/* 123E60 80280820 8FBF0014 */ lw $ra, 0x14($sp) -/* 123E64 80280824 04410005 */ bgez $v0, .L8028083C -/* 123E68 80280828 468021A0 */ cvt.s.w $f6, $f4 -/* 123E6C 8028082C 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 -/* 123E70 80280830 44814000 */ mtc1 $at, $f8 -/* 123E74 80280834 00000000 */ nop -/* 123E78 80280838 46083180 */ add.s $f6, $f6, $f8 -.L8028083C: -/* 123E7C 8028083C 3C014780 */ li $at, 0x47800000 # 65536.000000 -/* 123E80 80280840 44815000 */ mtc1 $at, $f10 -/* 123E84 80280844 27BD0018 */ addiu $sp, $sp, 0x18 -/* 123E88 80280848 03E00008 */ jr $ra -/* 123E8C 8028084C 460A3003 */ div.s $f0, $f6, $f10 diff --git a/asm/non_matchings/code_80280650/func_80280850.s b/asm/non_matchings/code_80280650/func_80280850.s deleted file mode 100644 index 6cf9fd34a..000000000 --- a/asm/non_matchings/code_80280650/func_80280850.s +++ /dev/null @@ -1,14 +0,0 @@ -glabel func_80280850 -/* 123E90 80280850 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 123E94 80280854 AFBF0014 */ sw $ra, 0x14($sp) -/* 123E98 80280858 0C0A0203 */ jal func_8028080C -/* 123E9C 8028085C E7AC0018 */ swc1 $f12, 0x18($sp) -/* 123EA0 80280860 C7A20018 */ lwc1 $f2, 0x18($sp) -/* 123EA4 80280864 3C013F00 */ li $at, 0x3F000000 # 0.500000 -/* 123EA8 80280868 44813000 */ mtc1 $at, $f6 -/* 123EAC 8028086C 46020102 */ mul.s $f4, $f0, $f2 -/* 123EB0 80280870 8FBF0014 */ lw $ra, 0x14($sp) -/* 123EB4 80280874 27BD0018 */ addiu $sp, $sp, 0x18 -/* 123EB8 80280878 46061202 */ mul.s $f8, $f2, $f6 -/* 123EBC 8028087C 03E00008 */ jr $ra -/* 123EC0 80280880 46082001 */ sub.s $f0, $f4, $f8 diff --git a/asm/non_matchings/code_80280650/func_80280884.s b/asm/non_matchings/code_80280650/func_80280884.s deleted file mode 100644 index dbf719533..000000000 --- a/asm/non_matchings/code_80280650/func_80280884.s +++ /dev/null @@ -1,3 +0,0 @@ -glabel func_80280884 -/* 123EC4 80280884 03E00008 */ jr $ra -/* 123EC8 80280888 00000000 */ nop diff --git a/asm/non_matchings/code_80280650/func_8028093C.s b/asm/non_matchings/code_80280650/func_8028093C.s deleted file mode 100644 index 551d91b45..000000000 --- a/asm/non_matchings/code_80280650/func_8028093C.s +++ /dev/null @@ -1,63 +0,0 @@ -glabel func_8028093C -/* 123F7C 8028093C 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 123F80 80280940 AFBF001C */ sw $ra, 0x1c($sp) -/* 123F84 80280944 AFB00018 */ sw $s0, 0x18($sp) -/* 123F88 80280948 8C8E0044 */ lw $t6, 0x44($a0) -/* 123F8C 8028094C 00808025 */ move $s0, $a0 -/* 123F90 80280950 29C1001E */ slti $at, $t6, 0x1e -/* 123F94 80280954 10200012 */ beqz $at, .L802809A0 -/* 123F98 80280958 3C014020 */ li $at, 0x40200000 # 2.500000 -/* 123F9C 8028095C 44813000 */ mtc1 $at, $f6 -/* 123FA0 80280960 C4840014 */ lwc1 $f4, 0x14($a0) -/* 123FA4 80280964 3C018028 */ lui $at, %hi(D_80286B74) # $at, 0x8028 -/* 123FA8 80280968 46062200 */ add.s $f8, $f4, $f6 -/* 123FAC 8028096C E4880014 */ swc1 $f8, 0x14($a0) -/* 123FB0 80280970 0C0A0214 */ jal func_80280850 -/* 123FB4 80280974 C42C6B74 */ lwc1 $f12, %lo(D_80286B74)($at) -/* 123FB8 80280978 C60A0010 */ lwc1 $f10, 0x10($s0) -/* 123FBC 8028097C 3C018028 */ lui $at, %hi(D_80286B78) # $at, 0x8028 -/* 123FC0 80280980 46005400 */ add.s $f16, $f10, $f0 -/* 123FC4 80280984 E6100010 */ swc1 $f16, 0x10($s0) -/* 123FC8 80280988 0C0A0214 */ jal func_80280850 -/* 123FCC 8028098C C42C6B78 */ lwc1 $f12, %lo(D_80286B78)($at) -/* 123FD0 80280990 C6120018 */ lwc1 $f18, 0x18($s0) -/* 123FD4 80280994 46009100 */ add.s $f4, $f18, $f0 -/* 123FD8 80280998 1000001E */ b .L80280A14 -/* 123FDC 8028099C E6040018 */ swc1 $f4, 0x18($s0) -.L802809A0: -/* 123FE0 802809A0 8E0F002C */ lw $t7, 0x2c($s0) -/* 123FE4 802809A4 24010004 */ li $at, 4 -/* 123FE8 802809A8 3C048028 */ lui $a0, %hi(D_80284E7C) # $a0, 0x8028 -/* 123FEC 802809AC 55E1001A */ bnel $t7, $at, .L80280A18 -/* 123FF0 802809B0 8FBF001C */ lw $ra, 0x1c($sp) -/* 123FF4 802809B4 0C0A01CD */ jal func_80280734 -/* 123FF8 802809B8 24844E7C */ addiu $a0, %lo(D_80284E7C) # addiu $a0, $a0, 0x4e7c -/* 123FFC 802809BC C6060010 */ lwc1 $f6, 0x10($s0) -/* 124000 802809C0 3C018028 */ lui $at, %hi(D_80286B7C) # $at, 0x8028 -/* 124004 802809C4 C4206B7C */ lwc1 $f0, %lo(D_80286B7C)($at) -/* 124008 802809C8 E4460010 */ swc1 $f6, 0x10($v0) -/* 12400C 802809CC C6080014 */ lwc1 $f8, 0x14($s0) -/* 124010 802809D0 3C088028 */ lui $t0, %hi(D_80284E40) # 0x8028 -/* 124014 802809D4 240900FF */ li $t1, 255 -/* 124018 802809D8 E4480014 */ swc1 $f8, 0x14($v0) -/* 12401C 802809DC C60A0018 */ lwc1 $f10, 0x18($s0) -/* 124020 802809E0 240AFFEF */ li $t2, -17 -/* 124024 802809E4 240B0064 */ li $t3, 100 -/* 124028 802809E8 E44A0018 */ swc1 $f10, 0x18($v0) -/* 12402C 802809EC 8E180048 */ lw $t8, 0x48($s0) -/* 124030 802809F0 0018C880 */ sll $t9, $t8, 2 -/* 124034 802809F4 01194021 */ addu $t0, $t0, $t9 -/* 124038 802809F8 8D084E40 */ lw $t0, %lo(D_80284E40)($t0) # 0x4e40($t0) -/* 12403C 802809FC AC49003C */ sw $t1, 0x3c($v0) -/* 124040 80280A00 AC4A0040 */ sw $t2, 0x40($v0) -/* 124044 80280A04 AC4B0044 */ sw $t3, 0x44($v0) -/* 124048 80280A08 E4400034 */ swc1 $f0, 0x34($v0) -/* 12404C 80280A0C E4400038 */ swc1 $f0, 0x38($v0) -/* 124050 80280A10 AC480030 */ sw $t0, 0x30($v0) -.L80280A14: -/* 124054 80280A14 8FBF001C */ lw $ra, 0x1c($sp) -.L80280A18: -/* 124058 80280A18 8FB00018 */ lw $s0, 0x18($sp) -/* 12405C 80280A1C 27BD0020 */ addiu $sp, $sp, 0x20 -/* 124060 80280A20 03E00008 */ jr $ra -/* 124064 80280A24 00000000 */ nop diff --git a/asm/non_matchings/code_80280650/func_80280FA0.s b/asm/non_matchings/code_80280650/func_80280FA0.s deleted file mode 100644 index b2ac95a79..000000000 --- a/asm/non_matchings/code_80280650/func_80280FA0.s +++ /dev/null @@ -1,3 +0,0 @@ -glabel func_80280FA0 -/* 1245E0 80280FA0 03E00008 */ jr $ra -/* 1245E4 80280FA4 AFA40000 */ sw $a0, ($sp) diff --git a/asm/non_matchings/code_80280650/func_80280FA8.s b/asm/non_matchings/code_80280650/func_80280FA8.s deleted file mode 100644 index 416188713..000000000 --- a/asm/non_matchings/code_80280650/func_80280FA8.s +++ /dev/null @@ -1,3 +0,0 @@ -glabel func_80280FA8 -/* 1245E8 80280FA8 03E00008 */ jr $ra -/* 1245EC 80280FAC AFA40000 */ sw $a0, ($sp) diff --git a/asm/non_matchings/code_80280650/func_80280FB0.s b/asm/non_matchings/code_80280650/func_80280FB0.s deleted file mode 100644 index dd13554d8..000000000 --- a/asm/non_matchings/code_80280650/func_80280FB0.s +++ /dev/null @@ -1,20 +0,0 @@ -glabel func_80280FB0 -/* 1245F0 80280FB0 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 1245F4 80280FB4 AFBF0014 */ sw $ra, 0x14($sp) -/* 1245F8 80280FB8 3C018028 */ lui $at, %hi(D_802874E0) # $at, 0x8028 -/* 1245FC 80280FBC AC2074E0 */ sw $zero, %lo(D_802874E0)($at) -/* 124600 80280FC0 0C0A9EDC */ jal func_802A7B70 -/* 124604 80280FC4 24043B60 */ li $a0, 15200 -/* 124608 80280FC8 3C038028 */ lui $v1, %hi(D_802874F8) # $v1, 0x8028 -/* 12460C 80280FCC 246374F8 */ addiu $v1, %lo(D_802874F8) # addiu $v1, $v1, 0x74f8 -/* 124610 80280FD0 AC620000 */ sw $v0, ($v1) -/* 124614 80280FD4 00402025 */ move $a0, $v0 -/* 124618 80280FD8 0C033698 */ jal bzero -/* 12461C 80280FDC 24053B60 */ li $a1, 15200 -/* 124620 80280FE0 3C048028 */ lui $a0, %hi(D_80284E88) # $a0, 0x8028 -/* 124624 80280FE4 0C0A01CD */ jal func_80280734 -/* 124628 80280FE8 24844E88 */ addiu $a0, %lo(D_80284E88) # addiu $a0, $a0, 0x4e88 -/* 12462C 80280FEC 8FBF0014 */ lw $ra, 0x14($sp) -/* 124630 80280FF0 27BD0018 */ addiu $sp, $sp, 0x18 -/* 124634 80280FF4 03E00008 */ jr $ra -/* 124638 80280FF8 00000000 */ nop diff --git a/asm/non_matchings/code_80280650/func_80280FFC.s b/asm/non_matchings/code_80280650/func_80280FFC.s deleted file mode 100644 index 2c539a072..000000000 --- a/asm/non_matchings/code_80280650/func_80280FFC.s +++ /dev/null @@ -1,5 +0,0 @@ -glabel func_80280FFC -/* 12463C 80280FFC 240E0001 */ li $t6, 1 -/* 124640 80281000 3C018028 */ lui $at, %hi(D_802874F4) # 0x8028 -/* 124644 80281004 03E00008 */ jr $ra -/* 124648 80281008 A02E74F4 */ sb $t6, %lo(D_802874F4)($at) # 0x74f4($at) diff --git a/asm/non_matchings/code_80280650/func_8028100C.s b/asm/non_matchings/code_80280650/func_8028100C.s deleted file mode 100644 index 624dfa8ba..000000000 --- a/asm/non_matchings/code_80280650/func_8028100C.s +++ /dev/null @@ -1,5 +0,0 @@ -glabel func_8028100C -/* 12464C 8028100C AFA40000 */ sw $a0, ($sp) -/* 124650 80281010 AFA50004 */ sw $a1, 4($sp) -/* 124654 80281014 03E00008 */ jr $ra -/* 124658 80281018 AFA60008 */ sw $a2, 8($sp) diff --git a/asm/non_matchings/code_80280650/func_8028150C.s b/asm/non_matchings/code_80280650/func_8028150C.s deleted file mode 100644 index 1c273d66e..000000000 --- a/asm/non_matchings/code_80280650/func_8028150C.s +++ /dev/null @@ -1,6 +0,0 @@ -glabel func_8028150C -/* 124B4C 8028150C 3C0E8015 */ lui $t6, %hi(gDisplayListHead) # $t6, 0x8015 -/* 124B50 80281510 8DCE0298 */ lw $t6, %lo(gDisplayListHead)($t6) -/* 124B54 80281514 3C018028 */ lui $at, %hi(D_802874D4) # 0x8028 -/* 124B58 80281518 03E00008 */ jr $ra -/* 124B5C 8028151C AC2E74D4 */ sw $t6, %lo(D_802874D4)($at) # 0x74d4($at) diff --git a/asm/non_matchings/code_80280650/func_80281520.s b/asm/non_matchings/code_80280650/func_80281520.s deleted file mode 100644 index 16ef3259f..000000000 --- a/asm/non_matchings/code_80280650/func_80281520.s +++ /dev/null @@ -1,3 +0,0 @@ -glabel func_80281520 -/* 124B60 80281520 03E00008 */ jr $ra -/* 124B64 80281524 00000000 */ nop diff --git a/asm/non_matchings/code_80280650/func_80281528.s b/asm/non_matchings/code_80280650/func_80281528.s deleted file mode 100644 index 72b3b619c..000000000 --- a/asm/non_matchings/code_80280650/func_80281528.s +++ /dev/null @@ -1,3 +0,0 @@ -glabel func_80281528 -/* 124B68 80281528 03E00008 */ jr $ra -/* 124B6C 8028152C 00000000 */ nop diff --git a/asm/non_matchings/code_80280650/func_80281530.s b/asm/non_matchings/code_80280650/func_80281530.s deleted file mode 100644 index 50f9f89e2..000000000 --- a/asm/non_matchings/code_80280650/func_80281530.s +++ /dev/null @@ -1,3 +0,0 @@ -glabel func_80281530 -/* 124B70 80281530 03E00008 */ jr $ra -/* 124B74 80281534 00000000 */ nop diff --git a/asm/non_matchings/code_80280650/func_80281538.s b/asm/non_matchings/code_80280650/func_80281538.s deleted file mode 100644 index 0e0c18a84..000000000 --- a/asm/non_matchings/code_80280650/func_80281538.s +++ /dev/null @@ -1,3 +0,0 @@ -glabel func_80281538 -/* 124B78 80281538 03E00008 */ jr $ra -/* 124B7C 8028153C 00000000 */ nop diff --git a/asm/non_matchings/code_80280650/func_80281540.s b/asm/non_matchings/code_80280650/func_80281540.s deleted file mode 100644 index 376e089c7..000000000 --- a/asm/non_matchings/code_80280650/func_80281540.s +++ /dev/null @@ -1,3 +0,0 @@ -glabel func_80281540 -/* 124B80 80281540 03E00008 */ jr $ra -/* 124B84 80281544 00000000 */ nop diff --git a/asm/non_matchings/code_80280650/func_80281548.s b/asm/non_matchings/code_80280650/func_80281548.s deleted file mode 100644 index 7d38ab24e..000000000 --- a/asm/non_matchings/code_80280650/func_80281548.s +++ /dev/null @@ -1,52 +0,0 @@ -glabel func_80281548 -/* 124B88 80281548 3C018015 */ lui $at, %hi(D_80150112) # $at, 0x8015 -/* 124B8C 8028154C 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 124B90 80281550 A4200112 */ sh $zero, %lo(D_80150112)($at) -/* 124B94 80281554 AFBF0014 */ sw $ra, 0x14($sp) -/* 124B98 80281558 3C018028 */ lui $at, %hi(D_802874FC) # $at, 0x8028 -/* 124B9C 8028155C 0C0A0584 */ jal func_80281610 -/* 124BA0 80281560 AC2074FC */ sw $zero, %lo(D_802874FC)($at) -/* 124BA4 80281564 0C00A3DC */ jal func_80028F70 -/* 124BA8 80281568 00000000 */ nop -/* 124BAC 8028156C 0C0089D1 */ jal func_80022744 -/* 124BB0 80281570 00000000 */ nop -/* 124BB4 80281574 0C0166B2 */ jal func_80059AC8 -/* 124BB8 80281578 00000000 */ nop -/* 124BBC 8028157C 0C0166B2 */ jal func_80059AC8 -/* 124BC0 80281580 00000000 */ nop -/* 124BC4 80281584 0C01681C */ jal func_8005A070 -/* 124BC8 80281588 00000000 */ nop -/* 124BCC 8028158C 3C0E8028 */ lui $t6, %hi(D_802874F4) # $t6, 0x8028 -/* 124BD0 80281590 81CE74F4 */ lb $t6, %lo(D_802874F4)($t6) -/* 124BD4 80281594 11C00005 */ beqz $t6, .L802815AC -/* 124BD8 80281598 00000000 */ nop -/* 124BDC 8028159C 0C007053 */ jal func_8001C14C -/* 124BE0 802815A0 00000000 */ nop -/* 124BE4 802815A4 0C0025F8 */ jal func_800097E0 -/* 124BE8 802815A8 00000000 */ nop -.L802815AC: -/* 124BEC 802815AC 0C0A0740 */ jal func_80281D00 -/* 124BF0 802815B0 00000000 */ nop -/* 124BF4 802815B4 0C0A0550 */ jal func_80281540 -/* 124BF8 802815B8 00000000 */ nop -/* 124BFC 802815BC 3C058015 */ lui $a1, %hi(gDisplayListHead) # $a1, 0x8015 -/* 124C00 802815C0 24A50298 */ addiu $a1, %lo(gDisplayListHead) # addiu $a1, $a1, 0x298 -/* 124C04 802815C4 8CA20000 */ lw $v0, ($a1) -/* 124C08 802815C8 3C18E900 */ lui $t8, 0xe900 -/* 124C0C 802815CC 3C08B800 */ lui $t0, 0xb800 -/* 124C10 802815D0 244F0008 */ addiu $t7, $v0, 8 -/* 124C14 802815D4 ACAF0000 */ sw $t7, ($a1) -/* 124C18 802815D8 AC400004 */ sw $zero, 4($v0) -/* 124C1C 802815DC AC580000 */ sw $t8, ($v0) -/* 124C20 802815E0 8CA20000 */ lw $v0, ($a1) -/* 124C24 802815E4 24590008 */ addiu $t9, $v0, 8 -/* 124C28 802815E8 ACB90000 */ sw $t9, ($a1) -/* 124C2C 802815EC AC400004 */ sw $zero, 4($v0) -/* 124C30 802815F0 AC480000 */ sw $t0, ($v0) -/* 124C34 802815F4 8FBF0014 */ lw $ra, 0x14($sp) -/* 124C38 802815F8 27BD0018 */ addiu $sp, $sp, 0x18 -/* 124C3C 802815FC 03E00008 */ jr $ra -/* 124C40 80281600 00000000 */ nop - -/* 124C44 80281604 00000000 */ nop -/* 124C48 80281608 00000000 */ nop diff --git a/asm/non_matchings/crash_screen/crash_screen.s b/asm/non_matchings/crash_screen/crash_screen.s deleted file mode 100644 index 20ae71df4..000000000 --- a/asm/non_matchings/crash_screen/crash_screen.s +++ /dev/null @@ -1,428 +0,0 @@ - -glabel crash_screen_draw_square -/* 004D44 80004144 27BDFFD0 */ addiu $sp, $sp, -0x30 -/* 004D48 80004148 AFB40028 */ sw $s4, 0x28($sp) -/* 004D4C 8000414C AFB30024 */ sw $s3, 0x24($sp) -/* 004D50 80004150 AFB20020 */ sw $s2, 0x20($sp) -/* 004D54 80004154 AFB00018 */ sw $s0, 0x18($sp) -/* 004D58 80004158 00809825 */ move $s3, $a0 -/* 004D5C 8000415C AFBF002C */ sw $ra, 0x2c($sp) -/* 004D60 80004160 AFB1001C */ sw $s1, 0x1c($sp) -/* 004D64 80004164 2410002E */ li $s0, 46 -/* 004D68 80004168 24120028 */ li $s2, 40 -/* 004D6C 8000416C 2414002C */ li $s4, 44 -/* 004D70 80004170 240D0006 */ li $t5, 6 -/* 004D74 80004174 240C0006 */ li $t4, 6 -/* 004D78 80004178 240B0006 */ li $t3, 6 -/* 004D7C 8000417C 240A0006 */ li $t2, 6 -/* 004D80 80004180 24090006 */ li $t1, 6 -/* 004D84 80004184 3407FFFF */ li $a3, 65535 -/* 004D88 80004188 3406F801 */ li $a2, 63489 -.L8000418C: -/* 004D8C 8000418C 0250082A */ slt $at, $s2, $s0 -/* 004D90 80004190 10200032 */ beqz $at, .L8000425C -/* 004D94 80004194 02408825 */ move $s1, $s2 -/* 004D98 80004198 0250082A */ slt $at, $s2, $s0 -.L8000419C: -/* 004D9C 8000419C 1020002C */ beqz $at, .L80004250 -/* 004DA0 800041A0 02401825 */ move $v1, $s2 -/* 004DA4 800041A4 00117080 */ sll $t6, $s1, 2 -/* 004DA8 800041A8 01D17021 */ addu $t6, $t6, $s1 -/* 004DAC 800041AC 02122023 */ subu $a0, $s0, $s2 -/* 004DB0 800041B0 30880003 */ andi $t0, $a0, 3 -/* 004DB4 800041B4 000E79C0 */ sll $t7, $t6, 7 -/* 004DB8 800041B8 1100000C */ beqz $t0, .L800041EC -/* 004DBC 800041BC 026FF821 */ addu $ra, $s3, $t7 -/* 004DC0 800041C0 0003C040 */ sll $t8, $v1, 1 -/* 004DC4 800041C4 03F81021 */ addu $v0, $ra, $t8 -/* 004DC8 800041C8 01122821 */ addu $a1, $t0, $s2 -.L800041CC: -/* 004DCC 800041CC 15240003 */ bne $t1, $a0, .L800041DC -/* 004DD0 800041D0 24630001 */ addiu $v1, $v1, 1 -/* 004DD4 800041D4 10000002 */ b .L800041E0 -/* 004DD8 800041D8 A4460000 */ sh $a2, ($v0) -.L800041DC: -/* 004DDC 800041DC A4470000 */ sh $a3, ($v0) -.L800041E0: -/* 004DE0 800041E0 14A3FFFA */ bne $a1, $v1, .L800041CC -/* 004DE4 800041E4 24420002 */ addiu $v0, $v0, 2 -/* 004DE8 800041E8 10700019 */ beq $v1, $s0, .L80004250 -.L800041EC: -/* 004DEC 800041EC 00032840 */ sll $a1, $v1, 1 -/* 004DF0 800041F0 03E51021 */ addu $v0, $ra, $a1 -/* 004DF4 800041F4 00104040 */ sll $t0, $s0, 1 -.L800041F8: -/* 004DF8 800041F8 15440003 */ bne $t2, $a0, .L80004208 -/* 004DFC 800041FC 24A50008 */ addiu $a1, $a1, 8 -/* 004E00 80004200 10000002 */ b .L8000420C -/* 004E04 80004204 A4460000 */ sh $a2, ($v0) -.L80004208: -/* 004E08 80004208 A4470000 */ sh $a3, ($v0) -.L8000420C: -/* 004E0C 8000420C 55640004 */ bnel $t3, $a0, .L80004220 -/* 004E10 80004210 A4470002 */ sh $a3, 2($v0) -/* 004E14 80004214 10000002 */ b .L80004220 -/* 004E18 80004218 A4460002 */ sh $a2, 2($v0) -/* 004E1C 8000421C A4470002 */ sh $a3, 2($v0) -.L80004220: -/* 004E20 80004220 55840004 */ bnel $t4, $a0, .L80004234 -/* 004E24 80004224 A4470004 */ sh $a3, 4($v0) -/* 004E28 80004228 10000002 */ b .L80004234 -/* 004E2C 8000422C A4460004 */ sh $a2, 4($v0) -/* 004E30 80004230 A4470004 */ sh $a3, 4($v0) -.L80004234: -/* 004E34 80004234 55A40004 */ bnel $t5, $a0, .L80004248 -/* 004E38 80004238 A4470006 */ sh $a3, 6($v0) -/* 004E3C 8000423C 10000002 */ b .L80004248 -/* 004E40 80004240 A4460006 */ sh $a2, 6($v0) -/* 004E44 80004244 A4470006 */ sh $a3, 6($v0) -.L80004248: -/* 004E48 80004248 14A8FFEB */ bne $a1, $t0, .L800041F8 -/* 004E4C 8000424C 24420008 */ addiu $v0, $v0, 8 -.L80004250: -/* 004E50 80004250 26310001 */ addiu $s1, $s1, 1 -/* 004E54 80004254 5630FFD1 */ bnel $s1, $s0, .L8000419C -/* 004E58 80004258 0250082A */ slt $at, $s2, $s0 -.L8000425C: -/* 004E5C 8000425C 2610FFFF */ addiu $s0, $s0, -1 -/* 004E60 80004260 1690FFCA */ bne $s4, $s0, .L8000418C -/* 004E64 80004264 26520001 */ addiu $s2, $s2, 1 -/* 004E68 80004268 0C033624 */ jal osWritebackDCacheAll -/* 004E6C 8000426C 00000000 */ nop -/* 004E70 80004270 0C033684 */ jal osViSwapBuffer -/* 004E74 80004274 02602025 */ move $a0, $s3 -/* 004E78 80004278 8FBF002C */ lw $ra, 0x2c($sp) -/* 004E7C 8000427C 8FB00018 */ lw $s0, 0x18($sp) -/* 004E80 80004280 8FB1001C */ lw $s1, 0x1c($sp) -/* 004E84 80004284 8FB20020 */ lw $s2, 0x20($sp) -/* 004E88 80004288 8FB30024 */ lw $s3, 0x24($sp) -/* 004E8C 8000428C 8FB40028 */ lw $s4, 0x28($sp) -/* 004E90 80004290 03E00008 */ jr $ra -/* 004E94 80004294 27BD0030 */ addiu $sp, $sp, 0x30 - -glabel crash_screen_draw_info -/* 004E98 80004298 27BDFFD0 */ addiu $sp, $sp, -0x30 -/* 004E9C 8000429C AFB50028 */ sw $s5, 0x28($sp) -/* 004EA0 800042A0 AFB30020 */ sw $s3, 0x20($sp) -/* 004EA4 800042A4 00A09825 */ move $s3, $a1 -/* 004EA8 800042A8 0080A825 */ move $s5, $a0 -/* 004EAC 800042AC 3C09800E */ lui $t1, %hi(D_800DC670) # $t1, 0x800e -/* 004EB0 800042B0 AFBF002C */ sw $ra, 0x2c($sp) -/* 004EB4 800042B4 AFB40024 */ sw $s4, 0x24($sp) -/* 004EB8 800042B8 AFB2001C */ sw $s2, 0x1c($sp) -/* 004EBC 800042BC AFB10018 */ sw $s1, 0x18($sp) -/* 004EC0 800042C0 AFB00014 */ sw $s0, 0x14($sp) -/* 004EC4 800042C4 2529C670 */ addiu $t1, %lo(D_800DC670) # addiu $t1, $t1, -0x3990 -/* 004EC8 800042C8 24040001 */ li $a0, 1 -/* 004ECC 800042CC 24050078 */ li $a1, 120 -/* 004ED0 800042D0 00004025 */ move $t0, $zero -/* 004ED4 800042D4 240A0018 */ li $t2, 24 -/* 004ED8 800042D8 8D2E0000 */ lw $t6, ($t1) -.L800042DC: -/* 004EDC 800042DC 00003025 */ move $a2, $zero -/* 004EE0 800042E0 01CA0019 */ multu $t6, $t2 -/* 004EE4 800042E4 00007812 */ mflo $t7 -/* 004EE8 800042E8 01E81021 */ addu $v0, $t7, $t0 -/* 004EEC 800042EC 24420030 */ addiu $v0, $v0, 0x30 -/* 004EF0 800042F0 0002C080 */ sll $t8, $v0, 2 -/* 004EF4 800042F4 0302C021 */ addu $t8, $t8, $v0 -/* 004EF8 800042F8 0018C9C0 */ sll $t9, $t8, 7 -/* 004EFC 800042FC 02B93821 */ addu $a3, $s5, $t9 -.L80004300: -/* 004F00 80004300 00001825 */ move $v1, $zero -/* 004F04 80004304 00E01025 */ move $v0, $a3 -.L80004308: -/* 004F08 80004308 24630004 */ addiu $v1, $v1, 4 -/* 004F0C 8000430C A44400CA */ sh $a0, 0xca($v0) -/* 004F10 80004310 A44400CC */ sh $a0, 0xcc($v0) -/* 004F14 80004314 A44400CE */ sh $a0, 0xce($v0) -/* 004F18 80004318 24420008 */ addiu $v0, $v0, 8 -/* 004F1C 8000431C 1465FFFA */ bne $v1, $a1, .L80004308 -/* 004F20 80004320 A44400C0 */ sh $a0, 0xc0($v0) -/* 004F24 80004324 24C60001 */ addiu $a2, $a2, 1 -/* 004F28 80004328 28C10010 */ slti $at, $a2, 0x10 -/* 004F2C 8000432C 1420FFF4 */ bnez $at, .L80004300 -/* 004F30 80004330 24E70280 */ addiu $a3, $a3, 0x280 -/* 004F34 80004334 25080014 */ addiu $t0, $t0, 0x14 -/* 004F38 80004338 2901003C */ slti $at, $t0, 0x3c -/* 004F3C 8000433C 5420FFE7 */ bnel $at, $zero, .L800042DC -/* 004F40 80004340 8D2E0000 */ lw $t6, ($t1) -/* 004F44 80004344 8D2B0000 */ lw $t3, ($t1) -/* 004F48 80004348 8E670014 */ lw $a3, 0x14($s3) -/* 004F4C 8000434C 02A02025 */ move $a0, $s5 -/* 004F50 80004350 016A0019 */ multu $t3, $t2 -/* 004F54 80004354 30EC000F */ andi $t4, $a3, 0xf -/* 004F58 80004358 01803825 */ move $a3, $t4 -/* 004F5C 8000435C 2405006C */ li $a1, 108 -/* 004F60 80004360 00001012 */ mflo $v0 -/* 004F64 80004364 24500035 */ addiu $s0, $v0, 0x35 -/* 004F68 80004368 0C001030 */ jal crash_screen_draw_glyph -/* 004F6C 8000436C 02003025 */ move $a2, $s0 -/* 004F70 80004370 02A02025 */ move $a0, $s5 -/* 004F74 80004374 24050074 */ li $a1, 116 -/* 004F78 80004378 02003025 */ move $a2, $s0 -/* 004F7C 8000437C 0C001030 */ jal crash_screen_draw_glyph -/* 004F80 80004380 24070010 */ li $a3, 16 -/* 004F84 80004384 26720020 */ addiu $s2, $s3, 0x20 -/* 004F88 80004388 8E5400FC */ lw $s4, 0xfc($s2) -/* 004F8C 8000438C 241100B4 */ li $s1, 180 -.L80004390: -/* 004F90 80004390 02A02025 */ move $a0, $s5 -/* 004F94 80004394 02202825 */ move $a1, $s1 -/* 004F98 80004398 02003025 */ move $a2, $s0 -/* 004F9C 8000439C 0C001030 */ jal crash_screen_draw_glyph -/* 004FA0 800043A0 3287000F */ andi $a3, $s4, 0xf -/* 004FA4 800043A4 2631FFF8 */ addiu $s1, $s1, -8 -/* 004FA8 800043A8 2A21007C */ slti $at, $s1, 0x7c -/* 004FAC 800043AC 00146902 */ srl $t5, $s4, 4 -/* 004FB0 800043B0 1020FFF7 */ beqz $at, .L80004390 -/* 004FB4 800043B4 01A0A025 */ move $s4, $t5 -/* 004FB8 800043B8 8E510100 */ lw $s1, 0x100($s2) -/* 004FBC 800043BC 02A02025 */ move $a0, $s5 -/* 004FC0 800043C0 240500BC */ li $a1, 188 -/* 004FC4 800043C4 00117082 */ srl $t6, $s1, 2 -/* 004FC8 800043C8 31D1001F */ andi $s1, $t6, 0x1f -/* 004FCC 800043CC 02003025 */ move $a2, $s0 -/* 004FD0 800043D0 0C001030 */ jal crash_screen_draw_glyph -/* 004FD4 800043D4 24070010 */ li $a3, 16 -/* 004FD8 800043D8 02A02025 */ move $a0, $s5 -/* 004FDC 800043DC 240500C4 */ li $a1, 196 -/* 004FE0 800043E0 02003025 */ move $a2, $s0 -/* 004FE4 800043E4 0C001030 */ jal crash_screen_draw_glyph -/* 004FE8 800043E8 00113902 */ srl $a3, $s1, 4 -/* 004FEC 800043EC 02A02025 */ move $a0, $s5 -/* 004FF0 800043F0 240500CC */ li $a1, 204 -/* 004FF4 800043F4 02003025 */ move $a2, $s0 -/* 004FF8 800043F8 0C001030 */ jal crash_screen_draw_glyph -/* 004FFC 800043FC 3227000F */ andi $a3, $s1, 0xf -/* 005000 80004400 8E5400E4 */ lw $s4, 0xe4($s2) -/* 005004 80004404 241100B4 */ li $s1, 180 -.L80004408: -/* 005008 80004408 02A02025 */ move $a0, $s5 -/* 00500C 8000440C 02202825 */ move $a1, $s1 -/* 005010 80004410 24060049 */ li $a2, 73 -/* 005014 80004414 0C001030 */ jal crash_screen_draw_glyph -/* 005018 80004418 3287000F */ andi $a3, $s4, 0xf -/* 00501C 8000441C 2631FFF8 */ addiu $s1, $s1, -8 -/* 005020 80004420 2A21007C */ slti $at, $s1, 0x7c -/* 005024 80004424 00145902 */ srl $t3, $s4, 4 -/* 005028 80004428 1020FFF7 */ beqz $at, .L80004408 -/* 00502C 8000442C 0160A025 */ move $s4, $t3 -/* 005030 80004430 8E4200FC */ lw $v0, 0xfc($s2) -/* 005034 80004434 2401FFFC */ li $at, -4 -/* 005038 80004438 241100B4 */ li $s1, 180 -/* 00503C 8000443C 00416024 */ and $t4, $v0, $at -/* 005040 80004440 3C018000 */ lui $at, (0x80000001 >> 16) # lui $at, 0x8000 -/* 005044 80004444 34210001 */ ori $at, (0x80000001 & 0xFFFF) # ori $at, $at, 1 -/* 005048 80004448 0181082B */ sltu $at, $t4, $at -/* 00504C 8000444C 14200006 */ bnez $at, .L80004468 -/* 005050 80004450 3C01803F */ lui $at, (0x803FFF7F >> 16) # lui $at, 0x803f -/* 005054 80004454 3421FF7F */ ori $at, (0x803FFF7F & 0xFFFF) # ori $at, $at, 0xff7f -/* 005058 80004458 0181082B */ sltu $at, $t4, $at -/* 00505C 8000445C 10200002 */ beqz $at, .L80004468 -/* 005060 80004460 00000000 */ nop -/* 005064 80004464 8D940000 */ lw $s4, ($t4) -.L80004468: -/* 005068 80004468 02A02025 */ move $a0, $s5 -/* 00506C 8000446C 02202825 */ move $a1, $s1 -/* 005070 80004470 2406005D */ li $a2, 93 -/* 005074 80004474 0C001030 */ jal crash_screen_draw_glyph -/* 005078 80004478 3287000F */ andi $a3, $s4, 0xf -/* 00507C 8000447C 2631FFF8 */ addiu $s1, $s1, -8 -/* 005080 80004480 2A21007C */ slti $at, $s1, 0x7c -/* 005084 80004484 00146902 */ srl $t5, $s4, 4 -/* 005088 80004488 1020FFF7 */ beqz $at, .L80004468 -/* 00508C 8000448C 01A0A025 */ move $s4, $t5 -/* 005090 80004490 0C033624 */ jal osWritebackDCacheAll -/* 005094 80004494 00000000 */ nop -/* 005098 80004498 0C033684 */ jal osViSwapBuffer -/* 00509C 8000449C 02A02025 */ move $a0, $s5 -/* 0050A0 800044A0 8FBF002C */ lw $ra, 0x2c($sp) -/* 0050A4 800044A4 8FB00014 */ lw $s0, 0x14($sp) -/* 0050A8 800044A8 8FB10018 */ lw $s1, 0x18($sp) -/* 0050AC 800044AC 8FB2001C */ lw $s2, 0x1c($sp) -/* 0050B0 800044B0 8FB30020 */ lw $s3, 0x20($sp) -/* 0050B4 800044B4 8FB40024 */ lw $s4, 0x24($sp) -/* 0050B8 800044B8 8FB50028 */ lw $s5, 0x28($sp) -/* 0050BC 800044BC 03E00008 */ jr $ra -/* 0050C0 800044C0 27BD0030 */ addiu $sp, $sp, 0x30 - -glabel get_faulted_thread -/* 0050C4 800044C4 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 0050C8 800044C8 AFBF0014 */ sw $ra, 0x14($sp) -/* 0050CC 800044CC 0C03384C */ jal __osGetCurrFaultedThread -/* 0050D0 800044D0 00000000 */ nop -/* 0050D4 800044D4 8C4E0004 */ lw $t6, 4($v0) -/* 0050D8 800044D8 2404FFFF */ li $a0, -1 -/* 0050DC 800044DC 00401825 */ move $v1, $v0 -/* 0050E0 800044E0 108E0010 */ beq $a0, $t6, .L80004524 -/* 0050E4 800044E4 8FBF0014 */ lw $ra, 0x14($sp) -/* 0050E8 800044E8 8C420004 */ lw $v0, 4($v0) -.L800044EC: -/* 0050EC 800044EC 18400009 */ blez $v0, .L80004514 -/* 0050F0 800044F0 28410080 */ slti $at, $v0, 0x80 -/* 0050F4 800044F4 50200008 */ beql $at, $zero, .L80004518 -/* 0050F8 800044F8 8C63000C */ lw $v1, 0xc($v1) -/* 0050FC 800044FC 946F0012 */ lhu $t7, 0x12($v1) -/* 005100 80004500 31F80003 */ andi $t8, $t7, 3 -/* 005104 80004504 53000004 */ beql $t8, $zero, .L80004518 -/* 005108 80004508 8C63000C */ lw $v1, 0xc($v1) -/* 00510C 8000450C 10000006 */ b .L80004528 -/* 005110 80004510 00601025 */ move $v0, $v1 -.L80004514: -/* 005114 80004514 8C63000C */ lw $v1, 0xc($v1) -.L80004518: -/* 005118 80004518 8C620004 */ lw $v0, 4($v1) -/* 00511C 8000451C 1482FFF3 */ bne $a0, $v0, .L800044EC -/* 005120 80004520 00000000 */ nop -.L80004524: -/* 005124 80004524 00001025 */ move $v0, $zero -.L80004528: -/* 005128 80004528 03E00008 */ jr $ra -/* 00512C 8000452C 27BD0018 */ addiu $sp, $sp, 0x18 - -glabel thread9_crash_screen -/* 005130 80004530 27BDFFB8 */ addiu $sp, $sp, -0x48 -/* 005134 80004534 AFB70030 */ sw $s7, 0x30($sp) -/* 005138 80004538 3C178016 */ lui $s7, %hi(D_80162D40) # $s7, 0x8016 -/* 00513C 8000453C 26F72D40 */ addiu $s7, %lo(D_80162D40) # addiu $s7, $s7, 0x2d40 -/* 005140 80004540 AFBF0034 */ sw $ra, 0x34($sp) -/* 005144 80004544 AFA40048 */ sw $a0, 0x48($sp) -/* 005148 80004548 AFB6002C */ sw $s6, 0x2c($sp) -/* 00514C 8000454C AFB50028 */ sw $s5, 0x28($sp) -/* 005150 80004550 AFB40024 */ sw $s4, 0x24($sp) -/* 005154 80004554 AFB30020 */ sw $s3, 0x20($sp) -/* 005158 80004558 AFB2001C */ sw $s2, 0x1c($sp) -/* 00515C 8000455C AFB10018 */ sw $s1, 0x18($sp) -/* 005160 80004560 AFB00014 */ sw $s0, 0x14($sp) -/* 005164 80004564 2404000C */ li $a0, 12 -/* 005168 80004568 02E02825 */ move $a1, $s7 -/* 00516C 8000456C 0C033380 */ jal osSetEventMesg -/* 005170 80004570 24060010 */ li $a2, 16 -/* 005174 80004574 2404000A */ li $a0, 10 -/* 005178 80004578 02E02825 */ move $a1, $s7 -/* 00517C 8000457C 0C033380 */ jal osSetEventMesg -/* 005180 80004580 24060010 */ li $a2, 16 -/* 005184 80004584 3C108016 */ lui $s0, %hi(D_80162D60) # $s0, 0x8016 -/* 005188 80004588 26102D60 */ addiu $s0, %lo(D_80162D60) # addiu $s0, $s0, 0x2d60 -/* 00518C 8000458C 3C158016 */ lui $s5, %hi(pFramebuffer) # $s5, 0x8016 -/* 005190 80004590 3C14800E */ lui $s4, %hi(D_800DC670) # $s4, 0x800e -/* 005194 80004594 3C12800E */ lui $s2, %hi(D_800DC4BC) # $s2, 0x800e -/* 005198 80004598 3C11800E */ lui $s1, %hi(D_800DC6FC) # $s1, 0x800e -/* 00519C 8000459C AE000000 */ sw $zero, ($s0) -/* 0051A0 800045A0 2631C6FC */ addiu $s1, %lo(D_800DC6FC) # addiu $s1, $s1, -0x3904 -/* 0051A4 800045A4 2652C4BC */ addiu $s2, %lo(D_800DC4BC) # addiu $s2, $s2, -0x3b44 -/* 0051A8 800045A8 2694C670 */ addiu $s4, %lo(D_800DC670) # addiu $s4, $s4, -0x3990 -/* 0051AC 800045AC 26B52D5C */ addiu $s5, %lo(pFramebuffer) # addiu $s5, $s5, 0x2d5c -/* 0051B0 800045B0 27B60044 */ addiu $s6, $sp, 0x44 -/* 0051B4 800045B4 3413FFFF */ li $s3, 65535 -.L800045B8: -/* 0051B8 800045B8 02E02025 */ move $a0, $s7 -.L800045BC: -/* 0051BC 800045BC 02C02825 */ move $a1, $s6 -/* 0051C0 800045C0 0C0335D4 */ jal osRecvMesg -/* 0051C4 800045C4 24060001 */ li $a2, 1 -/* 0051C8 800045C8 0C001131 */ jal get_faulted_thread -/* 0051CC 800045CC 00000000 */ nop -/* 0051D0 800045D0 3C018016 */ lui $at, %hi(D_80162D64) # $at, 0x8016 -/* 0051D4 800045D4 1040FFF8 */ beqz $v0, .L800045B8 -/* 0051D8 800045D8 AC222D64 */ sw $v0, %lo(D_80162D64)($at) -/* 0051DC 800045DC 8E820000 */ lw $v0, ($s4) -/* 0051E0 800045E0 5440001F */ bnel $v0, $zero, .L80004660 -/* 0051E4 800045E4 28410005 */ slti $at, $v0, 5 -/* 0051E8 800045E8 0C001051 */ jal crash_screen_draw_square -/* 0051EC 800045EC 8EA40000 */ lw $a0, ($s5) -.L800045F0: -/* 0051F0 800045F0 0C00028A */ jal read_controllers -/* 0051F4 800045F4 00000000 */ nop -/* 0051F8 800045F8 8E4E0000 */ lw $t6, ($s2) -/* 0051FC 800045FC 95C20006 */ lhu $v0, 6($t6) -/* 005200 80004600 1040FFFB */ beqz $v0, .L800045F0 -/* 005204 80004604 00000000 */ nop -/* 005208 80004608 8E030000 */ lw $v1, ($s0) -/* 00520C 8000460C 00037840 */ sll $t7, $v1, 1 -/* 005210 80004610 022FC021 */ addu $t8, $s1, $t7 -/* 005214 80004614 97190000 */ lhu $t9, ($t8) -/* 005218 80004618 24680001 */ addiu $t0, $v1, 1 -/* 00521C 8000461C 54590004 */ bnel $v0, $t9, .L80004630 -/* 005220 80004620 AE000000 */ sw $zero, ($s0) -/* 005224 80004624 10000002 */ b .L80004630 -/* 005228 80004628 AE080000 */ sw $t0, ($s0) -/* 00522C 8000462C AE000000 */ sw $zero, ($s0) -.L80004630: -/* 005230 80004630 8E090000 */ lw $t1, ($s0) -/* 005234 80004634 00095040 */ sll $t2, $t1, 1 -/* 005238 80004638 022A5821 */ addu $t3, $s1, $t2 -/* 00523C 8000463C 956C0000 */ lhu $t4, ($t3) -/* 005240 80004640 166CFFEB */ bne $s3, $t4, .L800045F0 -/* 005244 80004644 00000000 */ nop -/* 005248 80004648 3C058016 */ lui $a1, %hi(D_80162D64) # $a1, 0x8016 -/* 00524C 8000464C 8CA52D64 */ lw $a1, %lo(D_80162D64)($a1) -/* 005250 80004650 0C0010A6 */ jal crash_screen_draw_info -/* 005254 80004654 8EA40000 */ lw $a0, ($s5) -/* 005258 80004658 8E820000 */ lw $v0, ($s4) -/* 00525C 8000465C 28410005 */ slti $at, $v0, 5 -.L80004660: -/* 005260 80004660 5020FFD6 */ beql $at, $zero, .L800045BC -/* 005264 80004664 02E02025 */ move $a0, $s7 -/* 005268 80004668 244D0001 */ addiu $t5, $v0, 1 -/* 00526C 8000466C 1000FFD2 */ b .L800045B8 -/* 005270 80004670 AE8D0000 */ sw $t5, ($s4) -/* 005274 80004674 00000000 */ nop -/* 005278 80004678 00000000 */ nop -/* 00527C 8000467C 00000000 */ nop -/* 005280 80004680 8FBF0034 */ lw $ra, 0x34($sp) -/* 005284 80004684 8FB00014 */ lw $s0, 0x14($sp) -/* 005288 80004688 8FB10018 */ lw $s1, 0x18($sp) -/* 00528C 8000468C 8FB2001C */ lw $s2, 0x1c($sp) -/* 005290 80004690 8FB30020 */ lw $s3, 0x20($sp) -/* 005294 80004694 8FB40024 */ lw $s4, 0x24($sp) -/* 005298 80004698 8FB50028 */ lw $s5, 0x28($sp) -/* 00529C 8000469C 8FB6002C */ lw $s6, 0x2c($sp) -/* 0052A0 800046A0 8FB70030 */ lw $s7, 0x30($sp) -/* 0052A4 800046A4 03E00008 */ jr $ra -/* 0052A8 800046A8 27BD0048 */ addiu $sp, $sp, 0x48 - -glabel func_800046AC -/* 0052AC 800046AC 3C018016 */ lui $at, %hi(pFramebuffer) # 0x8016 -/* 0052B0 800046B0 03E00008 */ jr $ra -/* 0052B4 800046B4 AC242D5C */ sw $a0, %lo(pFramebuffer)($at) # 0x2d5c($at) - -glabel create_debug_thread -/* 0052B8 800046B8 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 0052BC 800046BC AFBF001C */ sw $ra, 0x1c($sp) -/* 0052C0 800046C0 3C048016 */ lui $a0, %hi(D_80162D40) # $a0, 0x8016 -/* 0052C4 800046C4 3C058016 */ lui $a1, %hi(D_80162D58) # $a1, 0x8016 -/* 0052C8 800046C8 24A52D58 */ addiu $a1, %lo(D_80162D58) # addiu $a1, $a1, 0x2d58 -/* 0052CC 800046CC 24842D40 */ addiu $a0, %lo(D_80162D40) # addiu $a0, $a0, 0x2d40 -/* 0052D0 800046D0 0C033358 */ jal osCreateMesgQueue -/* 0052D4 800046D4 24060001 */ li $a2, 1 -/* 0052D8 800046D8 3C0E8016 */ lui $t6, %hi(D_80162D40) # $t6, 0x8016 -/* 0052DC 800046DC 25CE2D40 */ addiu $t6, %lo(D_80162D40) # addiu $t6, $t6, 0x2d40 -/* 0052E0 800046E0 3C048016 */ lui $a0, %hi(D_80162790) # $a0, 0x8016 -/* 0052E4 800046E4 3C068000 */ lui $a2, %hi(thread9_crash_screen) # $a2, 0x8000 -/* 0052E8 800046E8 240F007F */ li $t7, 127 -/* 0052EC 800046EC AFAF0014 */ sw $t7, 0x14($sp) -/* 0052F0 800046F0 24C64530 */ addiu $a2, %lo(thread9_crash_screen) # addiu $a2, $a2, 0x4530 -/* 0052F4 800046F4 24842790 */ addiu $a0, %lo(D_80162790) # addiu $a0, $a0, 0x2790 -/* 0052F8 800046F8 AFAE0010 */ sw $t6, 0x10($sp) -/* 0052FC 800046FC 24050009 */ li $a1, 9 -/* 005300 80004700 0C032FDC */ jal osCreateThread -/* 005304 80004704 00003825 */ move $a3, $zero -/* 005308 80004708 8FBF001C */ lw $ra, 0x1c($sp) -/* 00530C 8000470C 27BD0020 */ addiu $sp, $sp, 0x20 -/* 005310 80004710 03E00008 */ jr $ra -/* 005314 80004714 00000000 */ nop - -glabel start_debug_thread -/* 005318 80004718 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 00531C 8000471C AFBF0014 */ sw $ra, 0x14($sp) -/* 005320 80004720 3C048016 */ lui $a0, %hi(D_80162790) # $a0, 0x8016 -/* 005324 80004724 0C0330D8 */ jal osStartThread -/* 005328 80004728 24842790 */ addiu $a0, %lo(D_80162790) # addiu $a0, $a0, 0x2790 -/* 00532C 8000472C 8FBF0014 */ lw $ra, 0x14($sp) -/* 005330 80004730 27BD0018 */ addiu $sp, $sp, 0x18 -/* 005334 80004734 03E00008 */ jr $ra -/* 005338 80004738 00000000 */ nop - -/* 00533C 8000473C 00000000 */ nop diff --git a/asm/non_matchings/crash_screen/create_debug_thread.s b/asm/non_matchings/crash_screen/create_debug_thread.s deleted file mode 100644 index 88185252a..000000000 --- a/asm/non_matchings/crash_screen/create_debug_thread.s +++ /dev/null @@ -1,25 +0,0 @@ -glabel create_debug_thread -/* 0052B8 800046B8 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 0052BC 800046BC AFBF001C */ sw $ra, 0x1c($sp) -/* 0052C0 800046C0 3C048016 */ lui $a0, %hi(D_80162D40) # $a0, 0x8016 -/* 0052C4 800046C4 3C058016 */ lui $a1, %hi(D_80162D58) # $a1, 0x8016 -/* 0052C8 800046C8 24A52D58 */ addiu $a1, %lo(D_80162D58) # addiu $a1, $a1, 0x2d58 -/* 0052CC 800046CC 24842D40 */ addiu $a0, %lo(D_80162D40) # addiu $a0, $a0, 0x2d40 -/* 0052D0 800046D0 0C033358 */ jal osCreateMesgQueue -/* 0052D4 800046D4 24060001 */ li $a2, 1 -/* 0052D8 800046D8 3C0E8016 */ lui $t6, %hi(D_80162D40) # $t6, 0x8016 -/* 0052DC 800046DC 25CE2D40 */ addiu $t6, %lo(D_80162D40) # addiu $t6, $t6, 0x2d40 -/* 0052E0 800046E0 3C048016 */ lui $a0, %hi(D_80162790) # $a0, 0x8016 -/* 0052E4 800046E4 3C068000 */ lui $a2, %hi(thread9_crash_screen) # $a2, 0x8000 -/* 0052E8 800046E8 240F007F */ li $t7, 127 -/* 0052EC 800046EC AFAF0014 */ sw $t7, 0x14($sp) -/* 0052F0 800046F0 24C64530 */ addiu $a2, %lo(thread9_crash_screen) # addiu $a2, $a2, 0x4530 -/* 0052F4 800046F4 24842790 */ addiu $a0, %lo(D_80162790) # addiu $a0, $a0, 0x2790 -/* 0052F8 800046F8 AFAE0010 */ sw $t6, 0x10($sp) -/* 0052FC 800046FC 24050009 */ li $a1, 9 -/* 005300 80004700 0C032FDC */ jal osCreateThread -/* 005304 80004704 00003825 */ move $a3, $zero -/* 005308 80004708 8FBF001C */ lw $ra, 0x1c($sp) -/* 00530C 8000470C 27BD0020 */ addiu $sp, $sp, 0x20 -/* 005310 80004710 03E00008 */ jr $ra -/* 005314 80004714 00000000 */ nop diff --git a/asm/non_matchings/crash_screen/func_800046AC.s b/asm/non_matchings/crash_screen/func_800046AC.s deleted file mode 100644 index 8b1233fe6..000000000 --- a/asm/non_matchings/crash_screen/func_800046AC.s +++ /dev/null @@ -1,4 +0,0 @@ -glabel func_800046AC -/* 0052AC 800046AC 3C018016 */ lui $at, %hi(pFramebuffer) # 0x8016 -/* 0052B0 800046B0 03E00008 */ jr $ra -/* 0052B4 800046B4 AC242D5C */ sw $a0, %lo(pFramebuffer)($at) # 0x2d5c($at) diff --git a/asm/non_matchings/crash_screen/get_faulted_thread.s b/asm/non_matchings/crash_screen/get_faulted_thread.s deleted file mode 100644 index 655d59009..000000000 --- a/asm/non_matchings/crash_screen/get_faulted_thread.s +++ /dev/null @@ -1,33 +0,0 @@ -glabel get_faulted_thread -/* 0050C4 800044C4 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 0050C8 800044C8 AFBF0014 */ sw $ra, 0x14($sp) -/* 0050CC 800044CC 0C03384C */ jal __osGetCurrFaultedThread -/* 0050D0 800044D0 00000000 */ nop -/* 0050D4 800044D4 8C4E0004 */ lw $t6, 4($v0) -/* 0050D8 800044D8 2404FFFF */ li $a0, -1 -/* 0050DC 800044DC 00401825 */ move $v1, $v0 -/* 0050E0 800044E0 108E0010 */ beq $a0, $t6, .L80004524 -/* 0050E4 800044E4 8FBF0014 */ lw $ra, 0x14($sp) -/* 0050E8 800044E8 8C420004 */ lw $v0, 4($v0) -.L800044EC: -/* 0050EC 800044EC 18400009 */ blez $v0, .L80004514 -/* 0050F0 800044F0 28410080 */ slti $at, $v0, 0x80 -/* 0050F4 800044F4 50200008 */ beql $at, $zero, .L80004518 -/* 0050F8 800044F8 8C63000C */ lw $v1, 0xc($v1) -/* 0050FC 800044FC 946F0012 */ lhu $t7, 0x12($v1) -/* 005100 80004500 31F80003 */ andi $t8, $t7, 3 -/* 005104 80004504 53000004 */ beql $t8, $zero, .L80004518 -/* 005108 80004508 8C63000C */ lw $v1, 0xc($v1) -/* 00510C 8000450C 10000006 */ b .L80004528 -/* 005110 80004510 00601025 */ move $v0, $v1 -.L80004514: -/* 005114 80004514 8C63000C */ lw $v1, 0xc($v1) -.L80004518: -/* 005118 80004518 8C620004 */ lw $v0, 4($v1) -/* 00511C 8000451C 1482FFF3 */ bne $a0, $v0, .L800044EC -/* 005120 80004520 00000000 */ nop -.L80004524: -/* 005124 80004524 00001025 */ move $v0, $zero -.L80004528: -/* 005128 80004528 03E00008 */ jr $ra -/* 00512C 8000452C 27BD0018 */ addiu $sp, $sp, 0x18 diff --git a/asm/non_matchings/crash_screen/start_debug_thread.s b/asm/non_matchings/crash_screen/start_debug_thread.s deleted file mode 100644 index a32edd5b4..000000000 --- a/asm/non_matchings/crash_screen/start_debug_thread.s +++ /dev/null @@ -1,10 +0,0 @@ -glabel start_debug_thread -/* 005318 80004718 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 00531C 8000471C AFBF0014 */ sw $ra, 0x14($sp) -/* 005320 80004720 3C048016 */ lui $a0, %hi(D_80162790) # $a0, 0x8016 -/* 005324 80004724 0C0330D8 */ jal osStartThread -/* 005328 80004728 24842790 */ addiu $a0, %lo(D_80162790) # addiu $a0, $a0, 0x2790 -/* 00532C 8000472C 8FBF0014 */ lw $ra, 0x14($sp) -/* 005330 80004730 27BD0018 */ addiu $sp, $sp, 0x18 -/* 005334 80004734 03E00008 */ jr $ra -/* 005338 80004738 00000000 */ nop diff --git a/data/data_credits_128480.s b/data/data_credits_128480.s index 77d6cc798..09734860e 100644 --- a/data/data_credits_128480.s +++ b/data/data_credits_128480.s @@ -6,11 +6,11 @@ # 128480-12AAE0 [2660] # D_8028461C -glabel D_80284E40 -.word 0x00FF4080 -.word 0x008040FF -.word 0x0040FF40 -.word 0x00FFFF40 +#glabel D_80284E40 +#.word 0x00FF4080 +#.word 0x008040FF +#.word 0x0040FF40 +#.word 0x00FFFF40 glabel D_80284E50 .word 0x007F2040 diff --git a/import b/import index b51ef534b..1468fd6af 100755 --- a/import +++ b/import @@ -1,4 +1,4 @@ #!/bin/bash -python3 tools/decomp-permuter/import.py $1 $2 $3 +python3 tools/decomp-permuter/import.py $1 $2 $3 $4 $5 diff --git a/include/types.h b/include/types.h index a21fd261f..1793f7d8e 100644 --- a/include/types.h +++ b/include/types.h @@ -65,6 +65,86 @@ struct UnkStruct_800DC5EC { s32 pad2; }; +struct UnkStruct_80280658 { + s32 unk0; + s16 unk4; + s16 unk6; + s8 unk8; + s8 unk9; + s16 unkA; + s16 unkC; + s16 unkE; + f32 unk10; + f32 unk14; + f32 unk18; + f32 unk1C; + f32 unk20; + f32 unk24; + struct UnkStruct_80280658_2 *unk28; + s32 unk2C; + s32 unk30; + f32 unk34; + f32 unk38; + s32 unk3C; + s32 unk40; + s32 unk44; + s32 unk48; +}; + +struct UnkStruct_80280658_2 { + s16 unk0; + s16 unk2; + s16 unk4; + s16 unk6; + s8 unk8; + s8 unk9; + s8 unkA; + f32 unkC; +}; + +struct UnkStruct_8028088C { + s32 unk0; + s16 unk4; + s16 unk6; + s8 unk8; + s8 unk9; + s16 unkA; + s16 unkC; + s16 unkE; + f32 unk10; + f32 unk14; + f32 unk18; + f32 unk1C; + f32 unk20; + f32 unk24; + struct UnkStruct_80280658_2 *unk28; + s16 unk2C; + s16 unk2E; + s16 unk30; + s16 unk32; + s16 unk34; + s16 unk36; + s32 unk38; + s32 unk3C; +}; + +// Camera path struct? Or something like that. For GP race won scene? +struct UnkStruct_80287500 { + Vec3f unk0; // xyz coordinates? + f32 unkC; + f32 unk10; + f32 unk14; // rotation? + s32 unk18; + s32 unk1C; + f32 unk20; + f32 unk24; + f32 unk28; + f32 unk2C; + f32 unk30; + f32 unk34; + s32 unk38; +}; + struct UnkStruct_800DDB40 { u32 unk0; u32 unk4; diff --git a/mk64.ld b/mk64.ld index 893987d05..a359cbfec 100644 --- a/mk64.ld +++ b/mk64.ld @@ -268,7 +268,6 @@ SECTIONS BUILD_DIR/src/profiler.o(.bss); BUILD_DIR/src/crash_screen.o(.bss); - BUILD_DIR/asm/bss_800040C0.o(.bss); BUILD_DIR/asm/bss_80004740.o(.bss); BUILD_DIR/src/staff_ghosts.o(.bss); BUILD_DIR/asm/bss_80005FD0.o(.bss); @@ -359,6 +358,7 @@ SECTIONS BUILD_DIR/src/code_80281780.o(.text); BUILD_DIR/src/code_80281C40.o(.text); BUILD_DIR/src/code_80281FA0.o(.text); + BUILD_DIR/src/code_80280650.o(.data); BUILD_DIR/data/data_credits_128480.o(.data); } END_SEG(code_80280000) diff --git a/src/code_80057C60.c b/src/code_80057C60.c index 365ba40a9..488fe43a3 100644 --- a/src/code_80057C60.c +++ b/src/code_80057C60.c @@ -11221,7 +11221,7 @@ extern s32 D_8018D4BC; extern s32 D_8018D4C0; extern s32 *gDisplayListHead; -void func_8006BB34(void *arg0, s32 arg1, s16 arg2, s16 arg3) { +void func_8006BB34(struct UnkStruct_8028088C arg0*, s32 arg1, s16 arg2, s16 arg3) { ? sp108; f32 sp104; f32 sp100; diff --git a/src/code_80280650.c b/src/code_80280650.c index 3106cdd38..fa30634f2 100644 --- a/src/code_80280650.c +++ b/src/code_80280650.c @@ -1,21 +1,20 @@ #include #include +#include +#include +#include "main.h" + +extern struct UnkStruct_80280658 *D_802874F8; +extern Gfx *gDisplayListHead; +extern struct GfxPool *gGfxPool; -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 void func_80280650(void) { } -#else -GLOBAL_ASM("asm/non_matchings/code_80280650/func_80280650.s") -#endif -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -void func_80280658(void *arg0) { - void *temp_v0; +void func_80280658(struct UnkStruct_80280658 *arg0) { + struct UnkStruct_80280658_2 *temp_v0 = arg0->unk28; - temp_v0 = arg0->unk28; arg0->unk10 = temp_v0->unk2; arg0->unk14 = temp_v0->unk4; arg0->unk18 = temp_v0->unk6; @@ -24,60 +23,35 @@ void func_80280658(void *arg0) { arg0->unkE = temp_v0->unkA << 8; arg0->unk4 = temp_v0->unk0; } -#else -GLOBAL_ASM("asm/non_matchings/code_80280650/func_80280658.s") -#endif -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -extern void *D_802874F8; +struct UnkStruct_80280658 *func_802806C8(void) { + //struct UnkStruct_80280658 *sp1C; + //s32 temp_v0; + s32 pad[2]; + struct UnkStruct_80280658 *phi_a0 = D_802874F8; + s32 i; -void *func_802806C8(void) { - void *sp1C; - s32 temp_v0; - void *phi_a0; - s32 phi_v0; + for (i = 0; i < 0xC8 ; i++) { - phi_a0 = D_802874F8; - phi_v0 = 0; -loop_1: - temp_v0 = phi_v0 + 1; - phi_v0 = temp_v0; - if ((*phi_a0 & 1) == 0) { - sp1C = phi_a0; - bzero(phi_a0, 0x4C); - sp1C->unk0 = 1; - sp1C->unk24 = 1.0f; - return sp1C; + if ((phi_a0->unk0 & 1) == 0) { + bzero(phi_a0, 0x4C); + phi_a0->unk0 = 1; + phi_a0->unk24 = 1.0f; + return phi_a0; + } + + phi_a0++; } - phi_a0 += 0x4C; - if (temp_v0 == 0xC8) { - return NULL; - } - goto loop_1; + return NULL; } -#else -GLOBAL_ASM("asm/non_matchings/code_80280650/func_802806C8.s") -#endif -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -? func_80280658(void *); // extern -void *func_802806C8(); // extern +struct UnkStruct_80280658 *func_80280734(struct UnkStruct_80280658 *arg0) { + struct UnkStruct_80280658 *temp_v0 = func_802806C8(); -void *func_80280734(s32 arg0) { - void *sp1C; - void *temp_v0; - - temp_v0 = func_802806C8(); - sp1C = temp_v0; temp_v0->unk28 = arg0; func_80280658(temp_v0); return temp_v0; } -#else -GLOBAL_ASM("asm/non_matchings/code_80280650/func_80280734.s") -#endif #ifdef MIPS_TO_C //generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 @@ -92,23 +66,25 @@ u16 func_8028076C(void) { u16 temp_v0; u16 phi_v0; - temp_v0 = D_80284E60; - phi_v0 = temp_v0; - if (temp_v0 == 0x560A) { + //temp_v0 = D_80284E60; + phi_v0 = D_80284E60; + + if (D_80284E60 == 0x560A) { D_80284E60 = 0; phi_v0 = 0 & 0xFFFF; } + temp_t8 = (phi_v0 << 8) ^ phi_v0; temp_a1 = temp_t8 & 0xFF; temp_t4 = (temp_a1 << 8) + ((temp_t8 & 0xFF00) >> 8); temp_t5 = ((temp_a1 * 2) ^ temp_t4) & 0xFFFF; D_80284E60 = temp_t4; if ((temp_t5 & 1) == 0) { - temp_v0_2 = ((temp_t5 >> 1) ^ 0xFF80) & 0xFFFF; - if (temp_v0_2 == 0xAA55) { + D_80284E60 = ((temp_t5 >> 1) ^ 0xFF80) & 0xFFFF; + if (D_80284E60 == 0xAA55) { D_80284E60 = 0; } else { - D_80284E60 = temp_v0_2 ^ 0x1FF4; + D_80284E60 = D_80284E60 ^ 0x1FF4; } } else { D_80284E60 = (temp_t5 >> 1) ^ 0xFF80 ^ 0x8180; @@ -119,55 +95,40 @@ u16 func_8028076C(void) { GLOBAL_ASM("asm/non_matchings/code_80280650/func_8028076C.s") #endif -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -u32 func_8028076C(); // extern +u16 func_8028076C(); f32 func_8028080C(void) { return func_8028076C() / 65536.0f; } -#else -GLOBAL_ASM("asm/non_matchings/code_80280650/func_8028080C.s") -#endif -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -f32 func_8028080C(); // extern +f32 func_8028080C(); f32 func_80280850(f32 arg0) { return (func_8028080C() * arg0) - (arg0 * 0.5f); } -#else -GLOBAL_ASM("asm/non_matchings/code_80280650/func_80280850.s") -#endif -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 void func_80280884(void) { } -#else -GLOBAL_ASM("asm/non_matchings/code_80280650/func_80280884.s") -#endif -#ifdef MIPS_TO_C +#ifdef NON_MATCHING //generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -? func_8006BB34(void *, ?, s16, s16); // extern -f32 sins(u16); // extern +void func_8006BB34(struct UnkStruct_8028088C*, s32, s16, s16); // extern +f32 sins(u16); extern f32 D_80286B70; extern s16 D_802874CA; -void func_8028088C(void *arg0) { +void func_8028088C(struct UnkStruct_8028088C *arg0) { f32 temp_f0; s32 temp_at; s32 temp_t3; - func_8006BB34(arg0 + 0x10, 0x3F800000, arg0->unk2E, arg0->unk2C); - arg0->unk14 = arg0->unk14 + D_80286B70; + func_8006BB34(arg0+1, 0x3F800000, arg0->unk2E, arg0->unk2C); + arg0->unk14 += D_80286B70; temp_f0 = sins(arg0->unk30); temp_t3 = arg0->unk3C + 1; temp_at = temp_t3 < 0x321; - arg0->unk30 = arg0->unk30 + arg0->unk32; + arg0->unk30 += arg0->unk32; arg0->unk3C = temp_t3; arg0->unk2E = temp_f0 * arg0->unk34; if (temp_at == 0) { @@ -181,82 +142,73 @@ void func_8028088C(void *arg0) { GLOBAL_ASM("asm/non_matchings/code_80280650/func_8028088C.s") #endif -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -void *func_80280734(? *); // extern -f32 func_80280850(f32); // extern -extern ? D_80284E40; -extern ? D_80284E7C; +s32 D_80284E40[] = { + 0x00FF4080, 0x008040FF, 0x0040FF40, 0x00FFFF40 +}; + +extern struct UnkStruct_80280658 *D_80284E7C; extern f32 D_80286B74; extern f32 D_80286B78; extern f32 D_80286B7C; -void func_8028093C(void *arg0) { +void func_8028093C(struct UnkStruct_80280658 *arg0) { + struct UnkStruct_80280658 *temp_v0; f32 temp_f0; - void *temp_v0; if (arg0->unk44 < 0x1E) { - arg0->unk14 = arg0->unk14 + 2.5f; - arg0->unk10 = arg0->unk10 + func_80280850(D_80286B74); - arg0->unk18 = arg0->unk18 + func_80280850(D_80286B78); - return; - } - if (arg0->unk2C == 4) { + arg0->unk14 += 2.5f; + arg0->unk10 += func_80280850(D_80286B74); + arg0->unk18 += func_80280850(D_80286B78); + } else if (arg0->unk2C == 4) { temp_v0 = func_80280734(&D_80284E7C); temp_f0 = D_80286B7C; temp_v0->unk10 = arg0->unk10; temp_v0->unk14 = arg0->unk14; temp_v0->unk18 = arg0->unk18; + temp_v0->unk30 = D_80284E40[arg0->unk48]; temp_v0->unk3C = 0xFF; temp_v0->unk40 = -0x11; temp_v0->unk44 = 0x64; temp_v0->unk34 = temp_f0; temp_v0->unk38 = temp_f0; - temp_v0->unk30 = *(&D_80284E40 + (arg0->unk48 * 4)); } } -#else -GLOBAL_ASM("asm/non_matchings/code_80280650/func_8028093C.s") -#endif #ifdef MIPS_TO_C //generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -? func_80021E10(f32, f32 *, s32, s32); // extern -? func_80022180(f32, void *, f32 *); // extern +void func_80021E10(f32, f32 *, s32, s32); // extern +void func_80022180(f32, struct GfxPool*, f32*); // extern extern s16 D_80164AF0; -extern ? D_80287500; -extern void *gDisplayListHead; +extern struct UnkStruct_80287500 *D_80287500; += void func_80280A28(s32 arg0, s32 arg1, f32 arg2) { - f32 sp48; - f32 sp44; - f32 sp40; - f32 sp38; - f32 sp34; - f32 sp30; - f32 sp28; - f32 sp24; - f32 sp20; - f32 temp_f12; - void *temp_v1; - temp_f12 = arg2; - arg2 = temp_f12; - func_80021E10(temp_f12, &sp20, arg0, arg1); - sp20 = D_80287500.unk0 * arg2; - sp24 = D_80287500.unk10 * arg2; - sp28 = D_80287500.unk20 * arg2; - sp30 = D_80287500.unk4 * arg2; - sp34 = D_80287500.unk14 * arg2; - sp38 = D_80287500.unk24 * arg2; - sp40 = D_80287500.unk8 * arg2; - sp44 = D_80287500.unk18 * arg2; - sp48 = D_80287500.unk28 * arg2; - func_80022180(arg2, gGfxPool + (D_80164AF0 << 6) + 0xFAC0, &sp20); - temp_v1 = gDisplayListHead; - gDisplayListHead = temp_v1 + 8; - temp_v1->unk0 = 0x1020040; - temp_v1->unk4 = (gGfxPool + (D_80164AF0 << 6) + 0xFAC0) & 0x1FFFFFFF; + f32 sp20[14]; + //f32 temp_f12; + Gfx *temp_v1; + + //temp_f12 = arg2; + //arg2 = temp_f12; + func_80021E10(arg2, &sp20, arg0, arg1); + sp20[0] = D_80287500->unk0[0] * arg2; + sp20[1] = D_80287500->unk10 * arg2; + sp20[2] = D_80287500->unk20 * arg2; + sp20[3] = D_80287500->unk0[1] * arg2; + sp20[4] = D_80287500->unk14 * arg2; + sp20[5] = D_80287500->unk24 * arg2; + sp20[6] = D_80287500->unk0[2] * arg2; + sp20[7] = D_80287500->unk18 * arg2; + sp20[8] = D_80287500->unk28 * arg2; + func_80022180(arg2, &gGfxPool->buffer[D_80164AF0] + 0xFAC0, &sp20); + + gSPMatrix(gDisplayListHead, VIRTUAL_TO_PHYSICAL(&gGfxPool->buffer[D_80164AF0 << 6] + 0xFAC0), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + + + //temp_v1 = gDisplayListHead; + //gDisplayListHead = temp_v1 + 8; + //temp_v1->words.w0 = 0x01020040; + //temp_v1->words.w1 = VIRTUAL_TO_PHYSICAL(&gGfxPool->buffer[D_80164AF0 << 6] + 0xFAC0); } #else GLOBAL_ASM("asm/non_matchings/code_80280650/func_80280A28.s") @@ -264,41 +216,53 @@ GLOBAL_ASM("asm/non_matchings/code_80280650/func_80280A28.s") #ifdef MIPS_TO_C //generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -? func_8004B35C(s16, s16, s16, s16); // extern -? func_80280A28(?, f32 *, s16 *, ?); // extern -extern ? D_0D008DB8; -extern ? D_0D008E48; +//? func_8004B35C(s16, s16, s16, s16); // extern +//? func_80280A28(?, f32 *, s16 *, ?); // extern +extern u8 D_0D008DB8; +extern u8 D_0D008E48; extern s16 D_80164AF0; extern s32 D_8018D48C; -extern void *gDisplayListHead; -void func_80280B50(void *arg0, ? arg1, s32 arg2, s16 arg3) { - f32 sp54; - f32 sp50; - f32 sp4C; - s16 sp48; - s16 sp46; - s16 sp44; +struct UnkStruct80280B50 { + s32 unk0; + s32 unk4; + s32 unk8; +}; +extern Camera *camera1; + +void func_80280B50(struct UnkStruct80280B50 *arg0, s32 arg1, s32 arg2, s16 arg3) { + f32 sp54 = arg0->unk8; + f32 sp50 = arg0->unk4; + f32 sp4C = arg0->unk0; + s16 sp48 = 0; + s32 sp46 = camera1->unk26; + s16 sp44 = 0; void *sp1C; - s16 *temp_a1; - void *temp_v0; - void *temp_v0_2; - void *temp_v0_3; - void *temp_v0_4; - void *temp_v0_5; - void *temp_v0_6; - void *temp_v0_7; - void *temp_v0_8; - void *temp_v0_9; + //s16 *temp_a1 = &sp44; - sp4C = arg0->unk0; - temp_a1 = &sp44; - sp50 = arg0->unk4; - sp44 = 0; - sp54 = arg0->unk8; - sp48 = 0; - sp46 = camera1->unk26; - func_80280A28(arg1, &sp4C, temp_a1, arg1); + //sp4C = arg0->unk0; + //temp_a1 = &sp44; + //sp50 = arg0->unk4; + //sp44 = 0; + //sp54 = arg0->unk8; + //sp48 = 0; + //sp46 = camera1->unk26; + func_80280A28(arg1, &sp4C, &sp44, arg1); + + gSPDisplayList(gDisplayListHead++, D_0D008DB8); + gDPSetTextureImage(gDisplayListHead++, G_IM_FMT_IA, G_IM_SIZ_16b, 1, D_8018D48C); + gDPSetTile(gDisplayListHead++, G_IM_FMT_IA, G_IM_SIZ_16b, 0, 0x0000, G_TX_LOADTILE, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD); + gDPLoadSync(gDisplayListHead++); + gDPLoadBlock(gDisplayListHead++, 1, 0, 0, 4082, 0); + gDPPipeSync(gDisplayListHead++); + gDPSetTile(gDisplayListHead++, G_IM_FMT_IA, G_IM_SIZ_8b, 4, 0x0000, G_TX_RENDERTILE, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD); + gDPSetTileSize(gDisplayListHead++, G_TX_RENDERTILE, 0, 0, 0x7C0, 0x7C0); + + func_8004B35C((arg2 >> 0x10) & 0xFF, (arg2 >> 8) & 0xFF, arg2 & 0xFF, arg3); + + gSPDisplayList(gDisplayListHead, D_0D008E48); + D_80164AF0++; +/* temp_v0 = gDisplayListHead; gDisplayListHead = temp_v0 + 8; temp_v0->unk0 = 0x6000000; @@ -328,16 +292,22 @@ void func_80280B50(void *arg0, ? arg1, s32 arg2, s16 arg3) { temp_v0_7->unk4 = 0; temp_v0_7->unk0 = 0xF5680800; temp_v0_8 = gDisplayListHead; + + gDisplayListHead = temp_v0_8 + 8; sp1C = temp_v0_8; temp_v0_8->unk4 = 0x7C07C; temp_v0_8->unk0 = 0xF2000000; + + func_8004B35C((arg2 >> 0x10) & 0xFF, (arg2 >> 8) & 0xFF, arg2 & 0xFF, arg3); + + temp_v0_9 = gDisplayListHead; gDisplayListHead = temp_v0_9 + 8; temp_v0_9->unk0 = 0x6000000; temp_v0_9->unk4 = &D_0D008E48; - D_80164AF0 = D_80164AF0 + 1; + */; } #else GLOBAL_ASM("asm/non_matchings/code_80280650/func_80280B50.s") @@ -410,63 +380,35 @@ block_12: GLOBAL_ASM("asm/non_matchings/code_80280650/func_80280D1C.s") #endif -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 void func_80280FA0(s32 arg0) { } -#else -GLOBAL_ASM("asm/non_matchings/code_80280650/func_80280FA0.s") -#endif -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 void func_80280FA8(s32 arg0) { } -#else -GLOBAL_ASM("asm/non_matchings/code_80280650/func_80280FA8.s") -#endif -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -? func_80280734(? *); // extern -extern ? D_80284E88; +struct UnkStruct_80280658 *func_80280734(struct UnkStruct_80280658*); +extern s32 D_80284E88; extern s32 D_802874E0; -extern s32 D_802874F8; void func_80280FB0(void) { - s32 temp_v0; - D_802874E0 = 0; - temp_v0 = func_802A7B70(0x3B60); - D_802874F8 = temp_v0; - bzero(temp_v0, 0x3B60); + + D_802874F8 = func_802A7B70(0x3B60); + bzero(D_802874F8, 0x3B60); func_80280734(&D_80284E88); } -#else -GLOBAL_ASM("asm/non_matchings/code_80280650/func_80280FB0.s") -#endif -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 extern s8 D_802874F4; void func_80280FFC(void) { D_802874F4 = 1; } -#else -GLOBAL_ASM("asm/non_matchings/code_80280650/func_80280FFC.s") -#endif -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -void func_8028100C(s32 arg0, ? arg1, ? arg2) { +void func_8028100C(s32 arg0, s32 arg1, s32 arg2) { } -#else -GLOBAL_ASM("asm/non_matchings/code_80280650/func_8028100C.s") -#endif #ifdef MIPS_TO_C //generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 @@ -638,78 +580,34 @@ loop_2: GLOBAL_ASM("asm/non_matchings/code_80280650/func_80281438.s") #endif -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 extern s32 D_802874D4; -extern s32 gDisplayListHead; void func_8028150C(void) { D_802874D4 = gDisplayListHead; } -#else -GLOBAL_ASM("asm/non_matchings/code_80280650/func_8028150C.s") -#endif -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 void func_80281520(void) { } -#else -GLOBAL_ASM("asm/non_matchings/code_80280650/func_80281520.s") -#endif -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 void func_80281528(void) { } -#else -GLOBAL_ASM("asm/non_matchings/code_80280650/func_80281528.s") -#endif -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 void func_80281530(void) { } -#else -GLOBAL_ASM("asm/non_matchings/code_80280650/func_80281530.s") -#endif -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 void func_80281538(void) { } -#else -GLOBAL_ASM("asm/non_matchings/code_80280650/func_80281538.s") -#endif -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 void func_80281540(void) { } -#else -GLOBAL_ASM("asm/non_matchings/code_80280650/func_80281540.s") -#endif -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -? func_800097E0(); // extern -? func_8001C14C(); // extern -? func_80022744(); // extern -? func_80028F70(); // extern -? func_80059AC8(); // extern -? func_8005A070(); // extern -? func_80281540(); // extern -? func_80281610(); // extern -? func_80281D00(); // extern extern s16 D_80150112; -extern s8 D_802874F4; extern s32 D_802874FC; -extern void *gDisplayListHead; void func_80281548(void) { void *temp_v0; @@ -729,15 +627,6 @@ void func_80281548(void) { } func_80281D00(); func_80281540(); - temp_v0 = gDisplayListHead; - gDisplayListHead = temp_v0 + 8; - temp_v0->unk4 = 0; - temp_v0->unk0 = 0xE9000000; - temp_v0_2 = gDisplayListHead; - gDisplayListHead = temp_v0_2 + 8; - temp_v0_2->unk4 = 0; - temp_v0_2->unk0 = 0xB8000000; + gDPFullSync(gDisplayListHead++); + gSPEndDisplayList(gDisplayListHead++); } -#else -GLOBAL_ASM("asm/non_matchings/code_80280650/func_80281548.s") -#endif diff --git a/src/code_80281780.h b/src/code_80281780.h index b51805157..ab2e0b344 100644 --- a/src/code_80281780.h +++ b/src/code_80281780.h @@ -35,7 +35,7 @@ extern s32 D_80287554; extern f32 D_801647A4; extern f32 D_80150130; -extern s32 D_8015F728; +extern s32 gPrevLoadedAddress; extern s32 D_8015F734; extern s32 D_8015F730; diff --git a/src/crash_screen.c b/src/crash_screen.c index 437404037..e2e8b3238 100644 --- a/src/crash_screen.c +++ b/src/crash_screen.c @@ -15,7 +15,7 @@ void crash_screen_draw_info(uint_ptr arg0, void *arg1); // static void crash_screen_draw_square(uint_ptr arg0); // static void create_debug_thread(); // static void func_800040C0(s32 arg0, s32 arg1, s32 arg2, u32 arg3); // static -void func_800046AC(s32 arg0); // static +void crash_screen_set_framebuffer(s32 arg0); // static void *get_faulted_thread(); // static void start_debug_thread(); // static void thread9_crash_screen(s32 arg0); // static @@ -31,6 +31,23 @@ extern s32 D_80162D60; extern void *D_80162D64; */ + + +OSThread D_80162790; +ALIGNED8 u8 gDebugThreadStack[0x400]; +OSMesgQueue D_80162D40; +OSMesg D_80162D58; +uintptr_t pFramebuffer; +s32 D_80162D60; +void *D_80162D64; + +extern void osSetEventMesg(OSEvent, OSMesgQueue *, OSMesg); +extern s32 osRecvMesg(OSMesgQueue *, OSMesg *, s32); +extern void read_controllers(); + +extern struct Controller *D_800DC4BC; + + u32 D_800DC670 = 0; u8 crashScreenFont[][8] = { @@ -284,58 +301,69 @@ loop_3: GLOBAL_ASM("asm/non_matchings/crash_screen/crash_screen_draw_info.s") #endif -#ifdef MIPS_TO_C -//generated by mips_to_c commit bd0364fa19633bd6201f8007e2d0a7ed87825909 -void *__osGetCurrFaultedThread(); /* extern */ +OSThread *get_faulted_thread(void) { + OSThread *thread; -void *get_faulted_thread(void) { - s32 temp_v0_2; - void *temp_v0; - void *temp_v1; - s32 phi_v0; - void *phi_v1; - - temp_v0 = __osGetCurrFaultedThread(); - phi_v1 = temp_v0; - if (temp_v0->unk4 != -1) { - phi_v0 = temp_v0->unk4; -loop_2: - if ((phi_v0 > 0) && (phi_v0 < 0x80) && ((phi_v1->unk12 & 3) != 0)) { - return phi_v1; + thread = __osGetCurrFaultedThread(); + while (thread->priority != -1) { + if (thread->priority > OS_PRIORITY_IDLE && thread->priority <= OS_PRIORITY_APPMAX + && (thread->flags & 3) != 0) { + return thread; } - temp_v1 = phi_v1->unkC; - temp_v0_2 = temp_v1->unk4; - phi_v0 = temp_v0_2; - phi_v1 = temp_v1; - if (temp_v0_2 == -1) { - goto block_7; - } - goto loop_2; + thread = thread->tlnext; } -block_7: return NULL; } -#else -GLOBAL_ASM("asm/non_matchings/crash_screen/get_faulted_thread.s") -#endif #ifdef MIPS_TO_C //generated by mips_to_c commit bd0364fa19633bd6201f8007e2d0a7ed87825909 -? crash_screen_draw_info(s32, s32); /* extern */ -? crash_screen_draw_square(s32); /* extern */ -s32 get_faulted_thread(); /* extern */ -? osRecvMesg(? *, ? *, ?); /* extern */ -? osSetEventMesg(?, ? *, ?); /* extern */ -? read_controllers(); /* extern */ -extern void *D_800DC4BC; -extern s32 D_800DC670; -extern ? D_800DC6FC; -extern ? D_80162D40; -extern s32 D_80162D60; -extern s32 D_80162D64; -extern s32 pFramebuffer; -void thread9_crash_screen(s32 arg0) { +//OSThread *get_faulted_thread(); +void crash_screen_draw_square(s32, void*); +void crash_screen_draw_info(s32, void*); + +void thread9_crash_screen(UNUSED s32 arg0) { + OSMesg mesg; + OSThread *thread; + //s32 pad[2]; + u16 temp_v0_2; + + osSetEventMesg(OS_EVENT_FAULT, &D_80162D40, (OSMesg) 16); + osSetEventMesg(OS_EVENT_CPU_BREAK, &D_80162D40, (OSMesg) 16); + D_80162D60 = 0; + loop_1: + do { + do { + osRecvMesg(&D_80162D40, &mesg, 1); + thread = get_faulted_thread(); + } while (thread == NULL); + + if (D_800DC670 == 0) { + crash_screen_draw_square(pFramebuffer, D_80162D64); + do { + //temp_v0_2 = D_800DC4BC->buttonPressed; + //loop_4: + do { + read_controllers(); + } + while (temp_v0_2 == 0); + //if (temp_v0_2 == 0) { + //goto loop_4; + //} + //temp_v1 = D_80162D60; + //} while (thread == NULL); + if (temp_v0_2 == D_800DC6FC[D_80162D60]) { + D_80162D60++; + } else { + D_80162D60 = 0; + } + } while (D_800DC6FC[D_80162D60] != 0xFFFF); + crash_screen_draw_info(pFramebuffer, D_80162D64); + } +} while (D_800DC670 >= 5); + D_800DC670++; + goto loop_1; + /* ? sp44; s32 temp_v0; s32 temp_v1; @@ -374,47 +402,23 @@ loop_4: } D_800DC670 += 1; goto loop_1; + */ } #else GLOBAL_ASM("asm/non_matchings/crash_screen/thread9_crash_screen.s") #endif -#ifdef MIPS_TO_C -//generated by mips_to_c commit bd0364fa19633bd6201f8007e2d0a7ed87825909 -extern s32 pFramebuffer; - -void func_800046AC(s32 arg0) { +void crash_screen_set_framebuffer(s32 arg0) { pFramebuffer = arg0; } -#else -GLOBAL_ASM("asm/non_matchings/crash_screen/func_800046AC.s") -#endif -#ifdef MIPS_TO_C -//generated by mips_to_c commit bd0364fa19633bd6201f8007e2d0a7ed87825909 -? osCreateMesgQueue(? *, ? *, ?); /* extern */ -? osCreateThread(? *, ?, ? *, ?, ? *, s32); /* extern */ -extern ? D_80162790; -extern ? D_80162D40; -extern ? D_80162D58; -extern ? thread9_crash_screen; +extern void thread9_crash_screen(); void create_debug_thread(void) { osCreateMesgQueue(&D_80162D40, &D_80162D58, 1); - osCreateThread(&D_80162790, 9, &thread9_crash_screen, 0, &D_80162D40, 0x7F); + osCreateThread((OSThread *) &D_80162790, 9, (void *)thread9_crash_screen, 0, &D_80162D40, 0x7F); } -#else -GLOBAL_ASM("asm/non_matchings/crash_screen/create_debug_thread.s") -#endif - -#ifdef MIPS_TO_C -//generated by mips_to_c commit bd0364fa19633bd6201f8007e2d0a7ed87825909 -? osStartThread(? *); /* extern */ -extern ? D_80162790; void start_debug_thread(void) { osStartThread(&D_80162790); } -#else -GLOBAL_ASM("asm/non_matchings/crash_screen/start_debug_thread.s") -#endif diff --git a/src/main.c b/src/main.c index f0ee3f18a..71560a8a4 100644 --- a/src/main.c +++ b/src/main.c @@ -493,7 +493,7 @@ void display_and_vsync(void) { osViSwapBuffer((void *) PHYSICAL_TO_VIRTUAL(gPhysicalFramebuffers[sRenderedFramebuffer])); profiler_log_thread5_time(4); osRecvMesg(&D_8014EF70, &gMainReceivedMesg, 1); - func_800046AC(gPhysicalFramebuffers[sRenderedFramebuffer]); + crash_screen_set_framebuffer(gPhysicalFramebuffers[sRenderedFramebuffer]); if (++sRenderedFramebuffer == 3) { sRenderedFramebuffer = 0; } diff --git a/src/math_util.c b/src/math_util.c index 49a6a0428..29d8fa8f3 100644 --- a/src/math_util.c +++ b/src/math_util.c @@ -1577,10 +1577,10 @@ GLOBAL_ASM("asm/non_matchings/math_util/func_802B7830.s") #ifdef MIPS_TO_C //generated by mips_to_c commit bd0364fa19633bd6201f8007e2d0a7ed87825909 -u32 func_802B7830(); /* extern */ +//s16 func_802B7830(); /* extern */ -f32 func_802B79B8(void) { - return func_802B7830(); +f32 func_802B79B8(f32 arg0) { + return func_802B7830(arg0, 0.0f); } #else GLOBAL_ASM("asm/non_matchings/math_util/func_802B79B8.s") @@ -1660,7 +1660,7 @@ GLOBAL_ASM("asm/non_matchings/math_util/func_802B7B50.s") //generated by mips_to_c commit bd0364fa19633bd6201f8007e2d0a7ed87825909 //This function did not have a glabel in the original assembly, as such it may //be unused/unnamed -? func_802B79B8(?); /* extern */ +//? func_802B79B8(?); /* extern */ void func_802B7C18(void) { func_802B79B8(0x3F800000);