diff --git a/asm/Kyoto/Basics/RAssertDolphin.s b/asm/Kyoto/Basics/RAssertDolphin.s index 5b641490..ef573932 100644 --- a/asm/Kyoto/Basics/RAssertDolphin.s +++ b/asm/Kyoto/Basics/RAssertDolphin.s @@ -8,8 +8,8 @@ .section .sbss, "wa" .balign 8 -.global lbl_805A9248 -lbl_805A9248: +.global CallFatal +CallFatal: .skip 0x4 .global rs_debugger_buffer_size rs_debugger_buffer_size: @@ -156,7 +156,7 @@ lbl_802D6AAC: /* 802D6ABC 002D3A1C 7C 60 07 75 */ extsb. r0, r3 /* 802D6AC0 002D3A20 40 82 00 60 */ bne lbl_802D6B20 /* 802D6AC4 002D3A24 A0 81 00 20 */ lhz r4, 0x20(r1) -/* 802D6AC8 002D3A28 80 62 C5 88 */ lwz r3, lbl_805AE2A8@sda21(r2) +/* 802D6AC8 002D3A28 80 62 C5 88 */ lwz r3, ExitButtons@sda21(r2) /* 802D6ACC 002D3A2C 70 80 0C 10 */ andi. r0, r4, 0xc10 /* 802D6AD0 002D3A30 90 61 00 10 */ stw r3, 0x10(r1) /* 802D6AD4 002D3A34 2C 00 0C 10 */ cmpwi r0, 0xc10 @@ -186,27 +186,27 @@ lbl_802D6B20: /* 802D6B28 002D3A88 38 60 00 00 */ li r3, 0x0 /* 802D6B2C 002D3A8C 48 0B 29 5D */ bl VISetBlack /* 802D6B30 002D3A90 48 0B 27 BD */ bl VIFlush -/* 802D6B34 002D3A94 3C 60 80 3D */ lis r3, lbl_803D6AB8@ha +/* 802D6B34 002D3A94 3C 60 80 3D */ lis r3, "@stringBase0"@ha /* 802D6B38 002D3A98 57 5F 04 3E */ clrlwi r31, r26, 16 -/* 802D6B3C 002D3A9C 38 63 6C 98 */ addi r3, r3, lbl_803D6AB8@l +/* 802D6B3C 002D3A9C 38 63 6C 98 */ addi r3, r3, "@stringBase0"@l /* 802D6B40 002D3AA0 7F E4 FB 78 */ mr r4, r31 /* 802D6B44 002D3AA4 4C C6 31 82 */ crclr 6 /* 802D6B48 002D3AA8 48 0A 90 41 */ bl OSReport -/* 802D6B4C 002D3AAC 3C 60 80 3D */ lis r3, lbl_803D6AB8@ha -/* 802D6B50 002D3AB0 80 82 82 88 */ lwz r4, lbl_805A9FA8@sda21(r2) -/* 802D6B54 002D3AB4 38 63 6C 98 */ addi r3, r3, lbl_803D6AB8@l +/* 802D6B4C 002D3AAC 3C 60 80 3D */ lis r3, "@stringBase0"@ha +/* 802D6B50 002D3AB0 80 82 82 88 */ lwz r4, BuildTime@sda21(r2) +/* 802D6B54 002D3AB4 38 63 6C 98 */ addi r3, r3, "@stringBase0"@l /* 802D6B58 002D3AB8 38 63 00 25 */ addi r3, r3, 0x25 /* 802D6B5C 002D3ABC 4C C6 31 82 */ crclr 6 /* 802D6B60 002D3AC0 48 0A 90 29 */ bl OSReport -/* 802D6B64 002D3AC4 3C 60 80 3D */ lis r3, lbl_803D6AB8@ha +/* 802D6B64 002D3AC4 3C 60 80 3D */ lis r3, "@stringBase0"@ha /* 802D6B68 002D3AC8 7F 64 DB 78 */ mr r4, r27 -/* 802D6B6C 002D3ACC 38 63 6C 98 */ addi r3, r3, lbl_803D6AB8@l +/* 802D6B6C 002D3ACC 38 63 6C 98 */ addi r3, r3, "@stringBase0"@l /* 802D6B70 002D3AD0 38 63 00 29 */ addi r3, r3, 0x29 /* 802D6B74 002D3AD4 4C C6 31 82 */ crclr 6 /* 802D6B78 002D3AD8 48 0A 90 11 */ bl OSReport -/* 802D6B7C 002D3ADC 3C 60 80 3D */ lis r3, lbl_803D6AB8@ha +/* 802D6B7C 002D3ADC 3C 60 80 3D */ lis r3, "@stringBase0"@ha /* 802D6B80 002D3AE0 7F 79 DB 78 */ mr r25, r27 -/* 802D6B84 002D3AE4 3B 03 6C 98 */ addi r24, r3, lbl_803D6AB8@l +/* 802D6B84 002D3AE4 3B 03 6C 98 */ addi r24, r3, "@stringBase0"@l /* 802D6B88 002D3AE8 3A E0 00 00 */ li r23, 0x0 lbl_802D6B8C: /* 802D6B8C 002D3AEC 81 19 00 40 */ lwz r8, 0x40(r25) @@ -222,23 +222,23 @@ lbl_802D6B8C: /* 802D6BB4 002D3B14 3B 39 00 04 */ addi r25, r25, 0x4 /* 802D6BB8 002D3B18 28 17 00 10 */ cmplwi r23, 0x10 /* 802D6BBC 002D3B1C 41 80 FF D0 */ blt lbl_802D6B8C -/* 802D6BC0 002D3B20 3C 60 80 3D */ lis r3, lbl_803D6AB8@ha +/* 802D6BC0 002D3B20 3C 60 80 3D */ lis r3, "@stringBase0"@ha /* 802D6BC4 002D3B24 80 9B 00 84 */ lwz r4, 0x84(r27) -/* 802D6BC8 002D3B28 38 63 6C 98 */ addi r3, r3, lbl_803D6AB8@l +/* 802D6BC8 002D3B28 38 63 6C 98 */ addi r3, r3, "@stringBase0"@l /* 802D6BCC 002D3B2C 80 BB 00 80 */ lwz r5, 0x80(r27) /* 802D6BD0 002D3B30 38 63 00 9D */ addi r3, r3, 0x9d /* 802D6BD4 002D3B34 4C C6 31 82 */ crclr 6 /* 802D6BD8 002D3B38 48 0A 8F B1 */ bl OSReport -/* 802D6BDC 002D3B3C 3C 60 80 3D */ lis r3, lbl_803D6AB8@ha +/* 802D6BDC 002D3B3C 3C 60 80 3D */ lis r3, "@stringBase0"@ha /* 802D6BE0 002D3B40 80 9B 01 98 */ lwz r4, 0x198(r27) -/* 802D6BE4 002D3B44 38 63 6C 98 */ addi r3, r3, lbl_803D6AB8@l +/* 802D6BE4 002D3B44 38 63 6C 98 */ addi r3, r3, "@stringBase0"@l /* 802D6BE8 002D3B48 80 BB 01 9C */ lwz r5, 0x19c(r27) /* 802D6BEC 002D3B4C 38 63 00 CC */ addi r3, r3, 0xcc /* 802D6BF0 002D3B50 4C C6 31 82 */ crclr 6 /* 802D6BF4 002D3B54 48 0A 8F 95 */ bl OSReport -/* 802D6BF8 002D3B58 3C 60 80 3D */ lis r3, lbl_803D6AB8@ha +/* 802D6BF8 002D3B58 3C 60 80 3D */ lis r3, "@stringBase0"@ha /* 802D6BFC 002D3B5C 7F 84 E3 78 */ mr r4, r28 -/* 802D6C00 002D3B60 38 63 6C 98 */ addi r3, r3, lbl_803D6AB8@l +/* 802D6C00 002D3B60 38 63 6C 98 */ addi r3, r3, "@stringBase0"@l /* 802D6C04 002D3B64 7F A5 EB 78 */ mr r5, r29 /* 802D6C08 002D3B68 38 63 00 FB */ addi r3, r3, 0xfb /* 802D6C0C 002D3B6C 4C C6 31 82 */ crclr 6 @@ -247,9 +247,9 @@ lbl_802D6B8C: /* 802D6C18 002D3B78 2C 18 00 00 */ cmpwi r24, 0x0 /* 802D6C1C 002D3B7C 41 82 00 2C */ beq lbl_802D6C48 /* 802D6C20 002D3B80 3C 80 80 48 */ lis r4, rs_debugger_buffer@ha -/* 802D6C24 002D3B84 3C 60 80 3D */ lis r3, lbl_803D6AB8@ha +/* 802D6C24 002D3B84 3C 60 80 3D */ lis r3, "@stringBase0"@ha /* 802D6C28 002D3B88 38 04 99 80 */ addi r0, r4, rs_debugger_buffer@l -/* 802D6C2C 002D3B8C 38 83 6C 98 */ addi r4, r3, lbl_803D6AB8@l +/* 802D6C2C 002D3B8C 38 83 6C 98 */ addi r4, r3, "@stringBase0"@l /* 802D6C30 002D3B90 7C 60 C2 14 */ add r3, r0, r24 /* 802D6C34 002D3B94 38 84 01 2A */ addi r4, r4, 0x12a /* 802D6C38 002D3B98 4C C6 31 82 */ crclr 6 @@ -257,9 +257,9 @@ lbl_802D6B8C: /* 802D6C40 002D3BA0 7F 18 1A 14 */ add r24, r24, r3 /* 802D6C44 002D3BA4 48 00 00 28 */ b lbl_802D6C6C lbl_802D6C48: -/* 802D6C48 002D3BA8 3C 80 80 3D */ lis r4, lbl_803D6AB8@ha +/* 802D6C48 002D3BA8 3C 80 80 3D */ lis r4, "@stringBase0"@ha /* 802D6C4C 002D3BAC 3C 60 80 48 */ lis r3, rs_debugger_buffer@ha -/* 802D6C50 002D3BB0 38 84 6C 98 */ addi r4, r4, lbl_803D6AB8@l +/* 802D6C50 002D3BB0 38 84 6C 98 */ addi r4, r4, "@stringBase0"@l /* 802D6C54 002D3BB4 7F E5 FB 78 */ mr r5, r31 /* 802D6C58 002D3BB8 38 63 99 80 */ addi r3, r3, rs_debugger_buffer@l /* 802D6C5C 002D3BBC 38 84 01 39 */ addi r4, r4, 0x139 @@ -268,17 +268,17 @@ lbl_802D6C48: /* 802D6C68 002D3BC8 7F 18 1A 14 */ add r24, r24, r3 lbl_802D6C6C: /* 802D6C6C 002D3BCC 3C 80 80 48 */ lis r4, rs_debugger_buffer@ha -/* 802D6C70 002D3BD0 3C 60 80 3D */ lis r3, lbl_803D6AB8@ha +/* 802D6C70 002D3BD0 3C 60 80 3D */ lis r3, "@stringBase0"@ha /* 802D6C74 002D3BD4 38 04 99 80 */ addi r0, r4, rs_debugger_buffer@l -/* 802D6C78 002D3BD8 80 A2 82 88 */ lwz r5, lbl_805A9FA8@sda21(r2) -/* 802D6C7C 002D3BDC 38 83 6C 98 */ addi r4, r3, lbl_803D6AB8@l +/* 802D6C78 002D3BD8 80 A2 82 88 */ lwz r5, BuildTime@sda21(r2) +/* 802D6C7C 002D3BDC 38 83 6C 98 */ addi r4, r3, "@stringBase0"@l /* 802D6C80 002D3BE0 7C 60 C2 14 */ add r3, r0, r24 /* 802D6C84 002D3BE4 38 84 00 25 */ addi r4, r4, 0x25 /* 802D6C88 002D3BE8 4C C6 31 82 */ crclr 6 /* 802D6C8C 002D3BEC 48 0B 72 2D */ bl sprintf /* 802D6C90 002D3BF0 3C A0 80 48 */ lis r5, rs_debugger_buffer@ha -/* 802D6C94 002D3BF4 3C 80 80 3D */ lis r4, lbl_803D6AB8@ha -/* 802D6C98 002D3BF8 38 84 6C 98 */ addi r4, r4, lbl_803D6AB8@l +/* 802D6C94 002D3BF4 3C 80 80 3D */ lis r4, "@stringBase0"@ha +/* 802D6C98 002D3BF8 38 84 6C 98 */ addi r4, r4, "@stringBase0"@l /* 802D6C9C 002D3BFC 7F D8 1A 14 */ add r30, r24, r3 /* 802D6CA0 002D3C00 38 05 99 80 */ addi r0, r5, rs_debugger_buffer@l /* 802D6CA4 002D3C04 80 BB 01 98 */ lwz r5, 0x198(r27) @@ -292,10 +292,10 @@ lbl_802D6C6C: /* 802D6CC4 002D3C24 28 00 00 0F */ cmplwi r0, 0xf /* 802D6CC8 002D3C28 40 82 00 2C */ bne lbl_802D6CF4 /* 802D6CCC 002D3C2C 3C 80 80 48 */ lis r4, rs_debugger_buffer@ha -/* 802D6CD0 002D3C30 3C 60 80 3D */ lis r3, lbl_803D6AB8@ha +/* 802D6CD0 002D3C30 3C 60 80 3D */ lis r3, "@stringBase0"@ha /* 802D6CD4 002D3C34 38 04 99 80 */ addi r0, r4, rs_debugger_buffer@l /* 802D6CD8 002D3C38 7F 85 E3 78 */ mr r5, r28 -/* 802D6CDC 002D3C3C 38 83 6C 98 */ addi r4, r3, lbl_803D6AB8@l +/* 802D6CDC 002D3C3C 38 83 6C 98 */ addi r4, r3, "@stringBase0"@l /* 802D6CE0 002D3C40 7C 60 F2 14 */ add r3, r0, r30 /* 802D6CE4 002D3C44 38 84 01 6E */ addi r4, r4, 0x16e /* 802D6CE8 002D3C48 4C C6 31 82 */ crclr 6 @@ -303,25 +303,25 @@ lbl_802D6C6C: /* 802D6CF0 002D3C50 7F DE 1A 14 */ add r30, r30, r3 lbl_802D6CF4: /* 802D6CF4 002D3C54 3C 80 80 48 */ lis r4, rs_debugger_buffer@ha -/* 802D6CF8 002D3C58 3C 60 80 3D */ lis r3, lbl_803D6AB8@ha +/* 802D6CF8 002D3C58 3C 60 80 3D */ lis r3, "@stringBase0"@ha /* 802D6CFC 002D3C5C 38 04 99 80 */ addi r0, r4, rs_debugger_buffer@l -/* 802D6D00 002D3C60 38 83 6C 98 */ addi r4, r3, lbl_803D6AB8@l +/* 802D6D00 002D3C60 38 83 6C 98 */ addi r4, r3, "@stringBase0"@l /* 802D6D04 002D3C64 7C 60 F2 14 */ add r3, r0, r30 /* 802D6D08 002D3C68 38 84 01 74 */ addi r4, r4, 0x174 /* 802D6D0C 002D3C6C 4C C6 31 82 */ crclr 6 /* 802D6D10 002D3C70 48 0B 71 A9 */ bl sprintf -/* 802D6D14 002D3C74 3C 80 80 3D */ lis r4, lbl_803D6AB8@ha +/* 802D6D14 002D3C74 3C 80 80 3D */ lis r4, "@stringBase0"@ha /* 802D6D18 002D3C78 7F DE 1A 14 */ add r30, r30, r3 -/* 802D6D1C 002D3C7C 38 64 6C 98 */ addi r3, r4, lbl_803D6AB8@l +/* 802D6D1C 002D3C7C 38 64 6C 98 */ addi r3, r4, "@stringBase0"@l /* 802D6D20 002D3C80 38 63 01 77 */ addi r3, r3, 0x177 /* 802D6D24 002D3C84 4C C6 31 82 */ crclr 6 /* 802D6D28 002D3C88 48 0A 8E 61 */ bl OSReport /* 802D6D2C 002D3C8C 3C A0 80 00 */ lis r5, 0x80000400@ha -/* 802D6D30 002D3C90 3C 80 80 3D */ lis r4, lbl_803D6AB8@ha +/* 802D6D30 002D3C90 3C 80 80 3D */ lis r4, "@stringBase0"@ha /* 802D6D34 002D3C94 3C 60 80 48 */ lis r3, rs_debugger_buffer@ha /* 802D6D38 002D3C98 83 FB 00 04 */ lwz r31, 0x4(r27) /* 802D6D3C 002D3C9C 3B 05 04 00 */ addi r24, r5, 0x80000400@l -/* 802D6D40 002D3CA0 3B 84 6C 98 */ addi r28, r4, lbl_803D6AB8@l +/* 802D6D40 002D3CA0 3B 84 6C 98 */ addi r28, r4, "@stringBase0"@l /* 802D6D44 002D3CA4 3B 43 99 80 */ addi r26, r3, rs_debugger_buffer@l /* 802D6D48 002D3CA8 3A E0 00 00 */ li r23, 0x0 /* 802D6D4C 002D3CAC 3F 20 81 80 */ lis r25, 0x8180 @@ -347,17 +347,17 @@ lbl_802D6D54: /* 802D6D98 002D3CF8 7F DE 1A 14 */ add r30, r30, r3 /* 802D6D9C 002D3CFC 48 00 00 44 */ b lbl_802D6DE0 lbl_802D6DA0: -/* 802D6DA0 002D3D00 3C 60 80 3D */ lis r3, lbl_803D6AB8@ha +/* 802D6DA0 002D3D00 3C 60 80 3D */ lis r3, "@stringBase0"@ha /* 802D6DA4 002D3D04 7F E4 FB 78 */ mr r4, r31 -/* 802D6DA8 002D3D08 38 63 6C 98 */ addi r3, r3, lbl_803D6AB8@l +/* 802D6DA8 002D3D08 38 63 6C 98 */ addi r3, r3, "@stringBase0"@l /* 802D6DAC 002D3D0C 38 63 01 D0 */ addi r3, r3, 0x1d0 /* 802D6DB0 002D3D10 4C C6 31 82 */ crclr 6 /* 802D6DB4 002D3D14 48 0A 8D D5 */ bl OSReport /* 802D6DB8 002D3D18 3C 80 80 48 */ lis r4, rs_debugger_buffer@ha -/* 802D6DBC 002D3D1C 3C 60 80 3D */ lis r3, lbl_803D6AB8@ha +/* 802D6DBC 002D3D1C 3C 60 80 3D */ lis r3, "@stringBase0"@ha /* 802D6DC0 002D3D20 38 04 99 80 */ addi r0, r4, rs_debugger_buffer@l /* 802D6DC4 002D3D24 7F E5 FB 78 */ mr r5, r31 -/* 802D6DC8 002D3D28 38 83 6C 98 */ addi r4, r3, lbl_803D6AB8@l +/* 802D6DC8 002D3D28 38 83 6C 98 */ addi r4, r3, "@stringBase0"@l /* 802D6DCC 002D3D2C 7C 60 F2 14 */ add r3, r0, r30 /* 802D6DD0 002D3D30 38 84 01 E3 */ addi r4, r4, 0x1e3 /* 802D6DD4 002D3D34 4C C6 31 82 */ crclr 6 @@ -375,19 +375,19 @@ lbl_802D6DE4: /* 802D6DFC 002D3D5C 3A F7 00 01 */ addi r23, r23, 0x1 /* 802D6E00 002D3D60 41 80 FF 54 */ blt lbl_802D6D54 lbl_802D6E04: -/* 802D6E04 002D3D64 3C 60 80 3D */ lis r3, lbl_803D6AB8@ha +/* 802D6E04 002D3D64 3C 60 80 3D */ lis r3, "@stringBase0"@ha /* 802D6E08 002D3D68 80 9B 01 98 */ lwz r4, 0x198(r27) -/* 802D6E0C 002D3D6C 38 63 6C 98 */ addi r3, r3, lbl_803D6AB8@l +/* 802D6E0C 002D3D6C 38 63 6C 98 */ addi r3, r3, "@stringBase0"@l /* 802D6E10 002D3D70 7F A5 EB 78 */ mr r5, r29 /* 802D6E14 002D3D74 38 63 01 F4 */ addi r3, r3, 0x1f4 /* 802D6E18 002D3D78 4C C6 31 82 */ crclr 6 /* 802D6E1C 002D3D7C 48 0A 8D 6D */ bl OSReport -/* 802D6E20 002D3D80 88 0D A6 88 */ lbz r0, lbl_805A9248@sda21(r13) +/* 802D6E20 002D3D80 88 0D A6 88 */ lbz r0, CallFatal@sda21(r13) /* 802D6E24 002D3D84 28 00 00 00 */ cmplwi r0, 0x0 /* 802D6E28 002D3D88 40 82 00 28 */ bne lbl_802D6E50 -/* 802D6E2C 002D3D8C 80 82 C5 80 */ lwz r4, lbl_805AE2A0@sda21(r2) +/* 802D6E2C 002D3D8C 80 82 C5 80 */ lwz r4, bg@sda21(r2) /* 802D6E30 002D3D90 3C 60 80 48 */ lis r3, rs_debugger_buffer@ha -/* 802D6E34 002D3D94 80 02 C5 84 */ lwz r0, lbl_805AE2A4@sda21(r2) +/* 802D6E34 002D3D94 80 02 C5 84 */ lwz r0, fg@sda21(r2) /* 802D6E38 002D3D98 38 A3 99 80 */ addi r5, r3, rs_debugger_buffer@l /* 802D6E3C 002D3D9C 90 81 00 08 */ stw r4, 0x8(r1) /* 802D6E40 002D3DA0 38 61 00 0C */ addi r3, r1, 0xc @@ -443,7 +443,7 @@ lbl_802D69D0: /* 802D69DC 002D393C 7C 00 07 75 */ extsb. r0, r0 /* 802D69E0 002D3940 40 82 00 60 */ bne lbl_802D6A40 /* 802D69E4 002D3944 A0 81 00 20 */ lhz r4, 0x20(r1) -/* 802D69E8 002D3948 80 62 C5 88 */ lwz r3, lbl_805AE2A8@sda21(r2) +/* 802D69E8 002D3948 80 62 C5 88 */ lwz r3, ExitButtons@sda21(r2) /* 802D69EC 002D394C 70 80 0C 10 */ andi. r0, r4, 0xc10 /* 802D69F0 002D3950 90 61 00 10 */ stw r3, 0x10(r1) /* 802D69F4 002D3954 2C 00 0C 10 */ cmpwi r0, 0xc10 @@ -473,27 +473,27 @@ lbl_802D6A40: /* 802D6A48 002D39A8 38 60 00 00 */ li r3, 0 /* 802D6A4C 002D39AC 48 0B 28 61 */ bl VISetBlack /* 802D6A50 002D39B0 48 0B 26 C1 */ bl VIFlush -/* 802D6A54 002D39B4 3C 60 80 3D */ lis r3, lbl_803D6AB8@ha +/* 802D6A54 002D39B4 3C 60 80 3D */ lis r3, "@stringBase0"@ha /* 802D6A58 002D39B8 57 5F 04 3E */ clrlwi r31, r26, 0x10 -/* 802D6A5C 002D39BC 38 63 6A B8 */ addi r3, r3, lbl_803D6AB8@l +/* 802D6A5C 002D39BC 38 63 6A B8 */ addi r3, r3, "@stringBase0"@l /* 802D6A60 002D39C0 7F E4 FB 78 */ mr r4, r31 /* 802D6A64 002D39C4 4C C6 31 82 */ crclr 6 /* 802D6A68 002D39C8 48 0A 8F 45 */ bl OSReport -/* 802D6A6C 002D39CC 3C 60 80 3D */ lis r3, lbl_803D6AB8@ha -/* 802D6A70 002D39D0 80 82 82 88 */ lwz r4, lbl_805A9FA8@sda21(r2) -/* 802D6A74 002D39D4 38 63 6A B8 */ addi r3, r3, lbl_803D6AB8@l +/* 802D6A6C 002D39CC 3C 60 80 3D */ lis r3, "@stringBase0"@ha +/* 802D6A70 002D39D0 80 82 82 88 */ lwz r4, BuildTime@sda21(r2) +/* 802D6A74 002D39D4 38 63 6A B8 */ addi r3, r3, "@stringBase0"@l /* 802D6A78 002D39D8 38 63 00 25 */ addi r3, r3, 0x25 /* 802D6A7C 002D39DC 4C C6 31 82 */ crclr 6 /* 802D6A80 002D39E0 48 0A 8F 2D */ bl OSReport -/* 802D6A84 002D39E4 3C 60 80 3D */ lis r3, lbl_803D6AB8@ha +/* 802D6A84 002D39E4 3C 60 80 3D */ lis r3, "@stringBase0"@ha /* 802D6A88 002D39E8 7F 64 DB 78 */ mr r4, r27 -/* 802D6A8C 002D39EC 38 63 6A B8 */ addi r3, r3, lbl_803D6AB8@l +/* 802D6A8C 002D39EC 38 63 6A B8 */ addi r3, r3, "@stringBase0"@l /* 802D6A90 002D39F0 38 63 00 29 */ addi r3, r3, 0x29 /* 802D6A94 002D39F4 4C C6 31 82 */ crclr 6 /* 802D6A98 002D39F8 48 0A 8F 15 */ bl OSReport -/* 802D6A9C 002D39FC 3C 60 80 3D */ lis r3, lbl_803D6AB8@ha +/* 802D6A9C 002D39FC 3C 60 80 3D */ lis r3, "@stringBase0"@ha /* 802D6AA0 002D3A00 7F 79 DB 78 */ mr r25, r27 -/* 802D6AA4 002D3A04 3B 03 6A B8 */ addi r24, r3, lbl_803D6AB8@l +/* 802D6AA4 002D3A04 3B 03 6A B8 */ addi r24, r3, "@stringBase0"@l /* 802D6AA8 002D3A08 3A E0 00 00 */ li r23, 0 lbl_802D6AAC: /* 802D6AAC 002D3A0C 81 19 00 40 */ lwz r8, 0x40(r25) @@ -509,23 +509,23 @@ lbl_802D6AAC: /* 802D6AD4 002D3A34 3B 39 00 04 */ addi r25, r25, 4 /* 802D6AD8 002D3A38 28 17 00 10 */ cmplwi r23, 0x10 /* 802D6ADC 002D3A3C 41 80 FF D0 */ blt lbl_802D6AAC -/* 802D6AE0 002D3A40 3C 60 80 3D */ lis r3, lbl_803D6AB8@ha +/* 802D6AE0 002D3A40 3C 60 80 3D */ lis r3, "@stringBase0"@ha /* 802D6AE4 002D3A44 80 9B 00 84 */ lwz r4, 0x84(r27) -/* 802D6AE8 002D3A48 38 63 6A B8 */ addi r3, r3, lbl_803D6AB8@l +/* 802D6AE8 002D3A48 38 63 6A B8 */ addi r3, r3, "@stringBase0"@l /* 802D6AEC 002D3A4C 80 BB 00 80 */ lwz r5, 0x80(r27) /* 802D6AF0 002D3A50 38 63 00 9D */ addi r3, r3, 0x9d /* 802D6AF4 002D3A54 4C C6 31 82 */ crclr 6 /* 802D6AF8 002D3A58 48 0A 8E B5 */ bl OSReport -/* 802D6AFC 002D3A5C 3C 60 80 3D */ lis r3, lbl_803D6AB8@ha +/* 802D6AFC 002D3A5C 3C 60 80 3D */ lis r3, "@stringBase0"@ha /* 802D6B00 002D3A60 80 9B 01 98 */ lwz r4, 0x198(r27) -/* 802D6B04 002D3A64 38 63 6A B8 */ addi r3, r3, lbl_803D6AB8@l +/* 802D6B04 002D3A64 38 63 6A B8 */ addi r3, r3, "@stringBase0"@l /* 802D6B08 002D3A68 80 BB 01 9C */ lwz r5, 0x19c(r27) /* 802D6B0C 002D3A6C 38 63 00 CC */ addi r3, r3, 0xcc /* 802D6B10 002D3A70 4C C6 31 82 */ crclr 6 /* 802D6B14 002D3A74 48 0A 8E 99 */ bl OSReport -/* 802D6B18 002D3A78 3C 60 80 3D */ lis r3, lbl_803D6AB8@ha +/* 802D6B18 002D3A78 3C 60 80 3D */ lis r3, "@stringBase0"@ha /* 802D6B1C 002D3A7C 7F 84 E3 78 */ mr r4, r28 -/* 802D6B20 002D3A80 38 63 6A B8 */ addi r3, r3, lbl_803D6AB8@l +/* 802D6B20 002D3A80 38 63 6A B8 */ addi r3, r3, "@stringBase0"@l /* 802D6B24 002D3A84 7F A5 EB 78 */ mr r5, r29 /* 802D6B28 002D3A88 38 63 00 FB */ addi r3, r3, 0xfb /* 802D6B2C 002D3A8C 4C C6 31 82 */ crclr 6 @@ -534,9 +534,9 @@ lbl_802D6AAC: /* 802D6B38 002D3A98 2C 18 00 00 */ cmpwi r24, 0 /* 802D6B3C 002D3A9C 41 82 00 2C */ beq lbl_802D6B68 /* 802D6B40 002D3AA0 3C 80 80 48 */ lis r4, rs_debugger_buffer@ha -/* 802D6B44 002D3AA4 3C 60 80 3D */ lis r3, lbl_803D6AB8@ha +/* 802D6B44 002D3AA4 3C 60 80 3D */ lis r3, "@stringBase0"@ha /* 802D6B48 002D3AA8 38 04 97 A0 */ addi r0, r4, rs_debugger_buffer@l -/* 802D6B4C 002D3AAC 38 83 6A B8 */ addi r4, r3, lbl_803D6AB8@l +/* 802D6B4C 002D3AAC 38 83 6A B8 */ addi r4, r3, "@stringBase0"@l /* 802D6B50 002D3AB0 7C 60 C2 14 */ add r3, r0, r24 /* 802D6B54 002D3AB4 38 84 01 2A */ addi r4, r4, 0x12a /* 802D6B58 002D3AB8 4C C6 31 82 */ crclr 6 @@ -544,9 +544,9 @@ lbl_802D6AAC: /* 802D6B60 002D3AC0 7F 18 1A 14 */ add r24, r24, r3 /* 802D6B64 002D3AC4 48 00 00 28 */ b lbl_802D6B8C lbl_802D6B68: -/* 802D6B68 002D3AC8 3C 80 80 3D */ lis r4, lbl_803D6AB8@ha +/* 802D6B68 002D3AC8 3C 80 80 3D */ lis r4, "@stringBase0"@ha /* 802D6B6C 002D3ACC 3C 60 80 48 */ lis r3, rs_debugger_buffer@ha -/* 802D6B70 002D3AD0 38 84 6A B8 */ addi r4, r4, lbl_803D6AB8@l +/* 802D6B70 002D3AD0 38 84 6A B8 */ addi r4, r4, "@stringBase0"@l /* 802D6B74 002D3AD4 7F E5 FB 78 */ mr r5, r31 /* 802D6B78 002D3AD8 38 63 97 A0 */ addi r3, r3, rs_debugger_buffer@l /* 802D6B7C 002D3ADC 38 84 01 39 */ addi r4, r4, 0x139 @@ -555,17 +555,17 @@ lbl_802D6B68: /* 802D6B88 002D3AE8 7F 18 1A 14 */ add r24, r24, r3 lbl_802D6B8C: /* 802D6B8C 002D3AEC 3C 80 80 48 */ lis r4, rs_debugger_buffer@ha -/* 802D6B90 002D3AF0 3C 60 80 3D */ lis r3, lbl_803D6AB8@ha +/* 802D6B90 002D3AF0 3C 60 80 3D */ lis r3, "@stringBase0"@ha /* 802D6B94 002D3AF4 38 04 97 A0 */ addi r0, r4, rs_debugger_buffer@l -/* 802D6B98 002D3AF8 80 A2 82 88 */ lwz r5, lbl_805A9FA8@sda21(r2) -/* 802D6B9C 002D3AFC 38 83 6A B8 */ addi r4, r3, lbl_803D6AB8@l +/* 802D6B98 002D3AF8 80 A2 82 88 */ lwz r5, BuildTime@sda21(r2) +/* 802D6B9C 002D3AFC 38 83 6A B8 */ addi r4, r3, "@stringBase0"@l /* 802D6BA0 002D3B00 7C 60 C2 14 */ add r3, r0, r24 /* 802D6BA4 002D3B04 38 84 00 25 */ addi r4, r4, 0x25 /* 802D6BA8 002D3B08 4C C6 31 82 */ crclr 6 /* 802D6BAC 002D3B0C 48 0B 71 31 */ bl sprintf /* 802D6BB0 002D3B10 3C A0 80 48 */ lis r5, rs_debugger_buffer@ha -/* 802D6BB4 002D3B14 3C 80 80 3D */ lis r4, lbl_803D6AB8@ha -/* 802D6BB8 002D3B18 38 84 6A B8 */ addi r4, r4, lbl_803D6AB8@l +/* 802D6BB4 002D3B14 3C 80 80 3D */ lis r4, "@stringBase0"@ha +/* 802D6BB8 002D3B18 38 84 6A B8 */ addi r4, r4, "@stringBase0"@l /* 802D6BBC 002D3B1C 7F D8 1A 14 */ add r30, r24, r3 /* 802D6BC0 002D3B20 38 05 97 A0 */ addi r0, r5, rs_debugger_buffer@l /* 802D6BC4 002D3B24 80 BB 01 98 */ lwz r5, 0x198(r27) @@ -579,10 +579,10 @@ lbl_802D6B8C: /* 802D6BE4 002D3B44 28 00 00 0F */ cmplwi r0, 0xf /* 802D6BE8 002D3B48 40 82 00 2C */ bne lbl_802D6C14 /* 802D6BEC 002D3B4C 3C 80 80 48 */ lis r4, rs_debugger_buffer@ha -/* 802D6BF0 002D3B50 3C 60 80 3D */ lis r3, lbl_803D6AB8@ha +/* 802D6BF0 002D3B50 3C 60 80 3D */ lis r3, "@stringBase0"@ha /* 802D6BF4 002D3B54 38 04 97 A0 */ addi r0, r4, rs_debugger_buffer@l /* 802D6BF8 002D3B58 7F 85 E3 78 */ mr r5, r28 -/* 802D6BFC 002D3B5C 38 83 6A B8 */ addi r4, r3, lbl_803D6AB8@l +/* 802D6BFC 002D3B5C 38 83 6A B8 */ addi r4, r3, "@stringBase0"@l /* 802D6C00 002D3B60 7C 60 F2 14 */ add r3, r0, r30 /* 802D6C04 002D3B64 38 84 01 6E */ addi r4, r4, 0x16e /* 802D6C08 002D3B68 4C C6 31 82 */ crclr 6 @@ -590,25 +590,25 @@ lbl_802D6B8C: /* 802D6C10 002D3B70 7F DE 1A 14 */ add r30, r30, r3 lbl_802D6C14: /* 802D6C14 002D3B74 3C 80 80 48 */ lis r4, rs_debugger_buffer@ha -/* 802D6C18 002D3B78 3C 60 80 3D */ lis r3, lbl_803D6AB8@ha +/* 802D6C18 002D3B78 3C 60 80 3D */ lis r3, "@stringBase0"@ha /* 802D6C1C 002D3B7C 38 04 97 A0 */ addi r0, r4, rs_debugger_buffer@l -/* 802D6C20 002D3B80 38 83 6A B8 */ addi r4, r3, lbl_803D6AB8@l +/* 802D6C20 002D3B80 38 83 6A B8 */ addi r4, r3, "@stringBase0"@l /* 802D6C24 002D3B84 7C 60 F2 14 */ add r3, r0, r30 /* 802D6C28 002D3B88 38 84 01 74 */ addi r4, r4, 0x174 /* 802D6C2C 002D3B8C 4C C6 31 82 */ crclr 6 /* 802D6C30 002D3B90 48 0B 70 AD */ bl sprintf -/* 802D6C34 002D3B94 3C 80 80 3D */ lis r4, lbl_803D6AB8@ha +/* 802D6C34 002D3B94 3C 80 80 3D */ lis r4, "@stringBase0"@ha /* 802D6C38 002D3B98 7F DE 1A 14 */ add r30, r30, r3 -/* 802D6C3C 002D3B9C 38 64 6A B8 */ addi r3, r4, lbl_803D6AB8@l +/* 802D6C3C 002D3B9C 38 64 6A B8 */ addi r3, r4, "@stringBase0"@l /* 802D6C40 002D3BA0 38 63 01 77 */ addi r3, r3, 0x177 /* 802D6C44 002D3BA4 4C C6 31 82 */ crclr 6 /* 802D6C48 002D3BA8 48 0A 8D 65 */ bl OSReport /* 802D6C4C 002D3BAC 3C A0 80 00 */ lis r5, 0x80000400@ha -/* 802D6C50 002D3BB0 3C 80 80 3D */ lis r4, lbl_803D6AB8@ha +/* 802D6C50 002D3BB0 3C 80 80 3D */ lis r4, "@stringBase0"@ha /* 802D6C54 002D3BB4 3C 60 80 48 */ lis r3, rs_debugger_buffer@ha /* 802D6C58 002D3BB8 83 FB 00 04 */ lwz r31, 4(r27) /* 802D6C5C 002D3BBC 3B 05 04 00 */ addi r24, r5, 0x80000400@l -/* 802D6C60 002D3BC0 3B 84 6A B8 */ addi r28, r4, lbl_803D6AB8@l +/* 802D6C60 002D3BC0 3B 84 6A B8 */ addi r28, r4, "@stringBase0"@l /* 802D6C64 002D3BC4 3B 43 97 A0 */ addi r26, r3, rs_debugger_buffer@l /* 802D6C68 002D3BC8 3A E0 00 00 */ li r23, 0 /* 802D6C6C 002D3BCC 3F 20 81 80 */ lis r25, 0x8180 @@ -634,17 +634,17 @@ lbl_802D6C74: /* 802D6CB8 002D3C18 7F DE 1A 14 */ add r30, r30, r3 /* 802D6CBC 002D3C1C 48 00 00 44 */ b lbl_802D6D00 lbl_802D6CC0: -/* 802D6CC0 002D3C20 3C 60 80 3D */ lis r3, lbl_803D6AB8@ha +/* 802D6CC0 002D3C20 3C 60 80 3D */ lis r3, "@stringBase0"@ha /* 802D6CC4 002D3C24 7F E4 FB 78 */ mr r4, r31 -/* 802D6CC8 002D3C28 38 63 6A B8 */ addi r3, r3, lbl_803D6AB8@l +/* 802D6CC8 002D3C28 38 63 6A B8 */ addi r3, r3, "@stringBase0"@l /* 802D6CCC 002D3C2C 38 63 01 D0 */ addi r3, r3, 0x1d0 /* 802D6CD0 002D3C30 4C C6 31 82 */ crclr 6 /* 802D6CD4 002D3C34 48 0A 8C D9 */ bl OSReport /* 802D6CD8 002D3C38 3C 80 80 48 */ lis r4, rs_debugger_buffer@ha -/* 802D6CDC 002D3C3C 3C 60 80 3D */ lis r3, lbl_803D6AB8@ha +/* 802D6CDC 002D3C3C 3C 60 80 3D */ lis r3, "@stringBase0"@ha /* 802D6CE0 002D3C40 38 04 97 A0 */ addi r0, r4, rs_debugger_buffer@l /* 802D6CE4 002D3C44 7F E5 FB 78 */ mr r5, r31 -/* 802D6CE8 002D3C48 38 83 6A B8 */ addi r4, r3, lbl_803D6AB8@l +/* 802D6CE8 002D3C48 38 83 6A B8 */ addi r4, r3, "@stringBase0"@l /* 802D6CEC 002D3C4C 7C 60 F2 14 */ add r3, r0, r30 /* 802D6CF0 002D3C50 38 84 01 E3 */ addi r4, r4, 0x1e3 /* 802D6CF4 002D3C54 4C C6 31 82 */ crclr 6 @@ -662,19 +662,19 @@ lbl_802D6D04: /* 802D6D1C 002D3C7C 3A F7 00 01 */ addi r23, r23, 1 /* 802D6D20 002D3C80 41 80 FF 54 */ blt lbl_802D6C74 lbl_802D6D24: -/* 802D6D24 002D3C84 3C 60 80 3D */ lis r3, lbl_803D6AB8@ha +/* 802D6D24 002D3C84 3C 60 80 3D */ lis r3, "@stringBase0"@ha /* 802D6D28 002D3C88 80 9B 01 98 */ lwz r4, 0x198(r27) -/* 802D6D2C 002D3C8C 38 63 6A B8 */ addi r3, r3, lbl_803D6AB8@l +/* 802D6D2C 002D3C8C 38 63 6A B8 */ addi r3, r3, "@stringBase0"@l /* 802D6D30 002D3C90 7F A5 EB 78 */ mr r5, r29 /* 802D6D34 002D3C94 38 63 01 F4 */ addi r3, r3, 0x1f4 /* 802D6D38 002D3C98 4C C6 31 82 */ crclr 6 /* 802D6D3C 002D3C9C 48 0A 8C 71 */ bl OSReport -/* 802D6D40 002D3CA0 88 0D A6 88 */ lbz r0, lbl_805A9248@sda21(r13) +/* 802D6D40 002D3CA0 88 0D A6 88 */ lbz r0, CallFatal@sda21(r13) /* 802D6D44 002D3CA4 28 00 00 00 */ cmplwi r0, 0 /* 802D6D48 002D3CA8 40 82 00 28 */ bne lbl_802D6D70 -/* 802D6D4C 002D3CAC 80 82 C5 80 */ lwz r4, lbl_805AE2A0@sda21(r2) +/* 802D6D4C 002D3CAC 80 82 C5 80 */ lwz r4, bg@sda21(r2) /* 802D6D50 002D3CB0 3C 60 80 48 */ lis r3, rs_debugger_buffer@ha -/* 802D6D54 002D3CB4 80 02 C5 84 */ lwz r0, lbl_805AE2A4@sda21(r2) +/* 802D6D54 002D3CB4 80 02 C5 84 */ lwz r0, fg@sda21(r2) /* 802D6D58 002D3CB8 38 A3 97 A0 */ addi r5, r3, rs_debugger_buffer@l /* 802D6D5C 002D3CBC 90 81 00 08 */ stw r4, 8(r1) /* 802D6D60 002D3CC0 38 61 00 0C */ addi r3, r1, 0xc @@ -692,18 +692,18 @@ lbl_802D6D70: .section .sdata2, "a" .balign 8 -.global lbl_805AE2A0 -lbl_805AE2A0: +.global bg +bg: # ROM: 0x3FAB40 .4byte 0x80000000 -.global lbl_805AE2A4 -lbl_805AE2A4: +.global fg +fg: # ROM: 0x3FAB44 .4byte 0xFFFFFF00 -.global lbl_805AE2A8 -lbl_805AE2A8: +.global ExitButtons +ExitButtons: # ROM: 0x3FAB48 .4byte 0x02010408 .4byte 0 @@ -711,8 +711,8 @@ lbl_805AE2A8: .section .rodata .balign 8 -.global lbl_803D6AB8 -lbl_803D6AB8: +.global "@stringBase0" +"@stringBase0": # ROM: 0x3D3AB8 .asciz "Unhandled exception %d - Production\n" .byte 0x25, 0x73, 0x0A @@ -746,4 +746,3 @@ lbl_803D6AB8: .4byte 0x00307825 .asciz "08x: 0x%08x 0x%08x" .balign 4 - diff --git a/asm/MetroidPrime/CFrontEndUI.s b/asm/MetroidPrime/CFrontEndUI.s index a753c1c8..8c2a754f 100644 --- a/asm/MetroidPrime/CFrontEndUI.s +++ b/asm/MetroidPrime/CFrontEndUI.s @@ -116,11 +116,7 @@ lbl_803CC540: .global MetroidBuildInfo MetroidBuildInfo: - .ascii "!#$MetroidBuildInfo!#$" -.global BuildString -BuildString: - # Replaced after build - .asciz "PAD_PAD_PAD_PAD_PAD_PAD_PAD_PAD_PAD" + .ascii "!#$MetroidBuildInfo!#$PAD_PAD_PAD_PAD_PAD_PAD_PAD_PAD_PAD" .balign 4 .global lbl_803CC5C4 @@ -432,10 +428,10 @@ lbl_805A6D0C: .section .sdata2, "a" .balign 8 -.global lbl_805A9FA8 -lbl_805A9FA8: +.global BuildTime +BuildTime: # ROM: 0x3F6848 - .4byte BuildString + .4byte MetroidBuildInfo+22 .global lbl_805A9FAC lbl_805A9FAC: @@ -4021,7 +4017,6 @@ lbl_8001EB40: lbl_8001EB58: /* 8001EB58 0001BAB8 80 01 00 14 */ lwz r0, 0x14(r1) /* 8001EB5C 0001BABC 7C 08 03 A6 */ mtlr r0 -.global lbl_8001EB60 lbl_8001EB60: /* 8001EB60 0001BAC0 38 21 00 10 */ addi r1, r1, 0x10 /* 8001EB64 0001BAC4 4E 80 00 20 */ blr @@ -7378,7 +7373,6 @@ SetUIText__13SGBALinkFrameF7EUIType: /* 80021B4C 0001EAAC 7C 03 00 2E */ lwzx r0, r3, r0 /* 80021B50 0001EAB0 7C 09 03 A6 */ mtctr r0 /* 80021B54 0001EAB4 4E 80 04 20 */ bctr -.global lbl_80021B58 lbl_80021B58: /* 80021B58 0001EAB8 3A 80 00 49 */ li r20, 0x49 /* 80021B5C 0001EABC 3B C0 00 52 */ li r30, 0x52 @@ -7386,7 +7380,6 @@ lbl_80021B58: /* 80021B64 0001EAC4 3B 20 00 01 */ li r25, 1 /* 80021B68 0001EAC8 3B 60 00 01 */ li r27, 1 /* 80021B6C 0001EACC 48 00 00 D4 */ b lbl_80021C40 -.global lbl_80021B70 lbl_80021B70: /* 80021B70 0001EAD0 3A 80 00 44 */ li r20, 0x44 /* 80021B74 0001EAD4 3B C0 00 52 */ li r30, 0x52 @@ -7395,7 +7388,6 @@ lbl_80021B70: /* 80021B80 0001EAE0 3B 80 00 01 */ li r28, 1 /* 80021B84 0001EAE4 3B 60 00 01 */ li r27, 1 /* 80021B88 0001EAE8 48 00 00 B8 */ b lbl_80021C40 -.global lbl_80021B8C lbl_80021B8C: /* 80021B8C 0001EAEC 3A 80 00 4A */ li r20, 0x4a /* 80021B90 0001EAF0 3B C0 00 52 */ li r30, 0x52 @@ -7404,7 +7396,6 @@ lbl_80021B8C: /* 80021B9C 0001EAFC 3B 40 00 01 */ li r26, 1 /* 80021BA0 0001EB00 3B 00 00 01 */ li r24, 1 /* 80021BA4 0001EB04 48 00 00 9C */ b lbl_80021C40 -.global lbl_80021BA8 lbl_80021BA8: /* 80021BA8 0001EB08 3A 80 00 4B */ li r20, 0x4b /* 80021BAC 0001EB0C 3B C0 00 52 */ li r30, 0x52 @@ -7412,7 +7403,6 @@ lbl_80021BA8: /* 80021BB4 0001EB14 3B A0 00 01 */ li r29, 1 /* 80021BB8 0001EB18 3B 00 00 01 */ li r24, 1 /* 80021BBC 0001EB1C 48 00 00 84 */ b lbl_80021C40 -.global lbl_80021BC0 lbl_80021BC0: /* 80021BC0 0001EB20 3A 80 00 4C */ li r20, 0x4c /* 80021BC4 0001EB24 3B C0 00 52 */ li r30, 0x52 @@ -7421,7 +7411,6 @@ lbl_80021BC0: /* 80021BD0 0001EB30 3B 00 00 01 */ li r24, 1 /* 80021BD4 0001EB34 3B 40 00 01 */ li r26, 1 /* 80021BD8 0001EB38 48 00 00 68 */ b lbl_80021C40 -.global lbl_80021BDC lbl_80021BDC: /* 80021BDC 0001EB3C 80 75 00 04 */ lwz r3, 4(r21) /* 80021BE0 0001EB40 48 22 70 5D */ bl StartLink__11CGBASupportFv @@ -7430,7 +7419,6 @@ lbl_80021BDC: /* 80021BEC 0001EB4C 3B 00 00 01 */ li r24, 1 /* 80021BF0 0001EB50 3A E0 00 01 */ li r23, 1 /* 80021BF4 0001EB54 48 00 00 4C */ b lbl_80021C40 -.global lbl_80021BF8 lbl_80021BF8: /* 80021BF8 0001EB58 3A 80 00 45 */ li r20, 0x45 /* 80021BFC 0001EB5C 3B C0 00 52 */ li r30, 0x52 @@ -7441,7 +7429,6 @@ lbl_80021BF8: /* 80021C10 0001EB70 3B 40 00 01 */ li r26, 1 /* 80021C14 0001EB74 3B 00 00 01 */ li r24, 1 /* 80021C18 0001EB78 48 00 00 28 */ b lbl_80021C40 -.global lbl_80021C1C lbl_80021C1C: /* 80021C1C 0001EB7C 88 75 00 40 */ lbz r3, 0x40(r21) /* 80021C20 0001EB80 3B E0 00 53 */ li r31, 0x53 @@ -7452,7 +7439,6 @@ lbl_80021C1C: /* 80021C34 0001EB94 7C 03 FE 70 */ srawi r3, r0, 0x1f /* 80021C38 0001EB98 38 03 00 47 */ addi r0, r3, 0x47 /* 80021C3C 0001EB9C 7C 14 03 78 */ mr r20, r0 -.global lbl_80021C40 lbl_80021C40: /* 80021C40 0001EBA0 38 61 00 38 */ addi r3, r1, 0x38 /* 80021C44 0001EBA4 38 8D 81 4C */ addi r4, r13, lbl_805A6D0C@sda21 diff --git a/configure.py b/configure.py index ecb255ef..3c04e28b 100755 --- a/configure.py +++ b/configure.py @@ -25,7 +25,7 @@ LIBS = [ ["MetroidPrime/CAxisAngle", True], ["MetroidPrime/CEulerAngles", False], ["MetroidPrime/CArchMsgParmUserInput", True], - "MetroidPrime/CFrontEndUI", + ["MetroidPrime/CFrontEndUI", False], ["MetroidPrime/CInputGenerator", False], ["MetroidPrime/CMainFlow", False], "MetroidPrime/CMFGame", @@ -471,7 +471,7 @@ LIBS = [ ["Kyoto/Alloc/CCallStackDolphin", True], ["Kyoto/Basics/COsContextDolphin", True], ["Kyoto/Basics/CSWDataDolphin", True], - ["Kyoto/Basics/RAssertDolphin", False], + ["Kyoto/Basics/RAssertDolphin", True], ["Kyoto/Animation/CAnimation", True], ["Kyoto/Animation/CAnimationManager", False], "Kyoto/Animation/CAnimationSet", diff --git a/include/Kyoto/Alloc/CMediumAllocPool.hpp b/include/Kyoto/Alloc/CMediumAllocPool.hpp index 21411f65..f947df71 100644 --- a/include/Kyoto/Alloc/CMediumAllocPool.hpp +++ b/include/Kyoto/Alloc/CMediumAllocPool.hpp @@ -5,17 +5,16 @@ #include struct SMediumAllocPuddle { - SMediumAllocPuddle(uint numBlocks, void* ptr, const bool unk); + SMediumAllocPuddle(const uint numBlocks, void* data, const bool canErase); ~SMediumAllocPuddle(); void* FindFree(uint blockCount); void* FindFreeEntry(uint blockCount); void Free(const void* ptr); - const uint GetUnkx10() const { return x10_; } const uint GetNumBlocks() const { return x14_numBlocks; } const uint GetNumAllocs() const { return x18_numAllocs; } const uint GetNumEntries() const { return x1c_numEntries; } - const bool GetUnk2() const { return x20_unk2; } + const bool CanErase() const { return x20_canErase; } const uint GetPtrOffset(const void* ptr) const { return (uchar*)ptr - x0_mainData.get(); } static ushort GetBlockOffset(const void* ptrA, const void* ptrB); static void InitBookKeeping(uchar* bookKeepingPtr, const ushort blockCount); @@ -24,11 +23,11 @@ private: rstl::auto_ptr< void > x0_mainData; uchar* x8_bookKeeping; uchar* xc_cachedBookKeepingAddr; - uint x10_; + uint x10_unused; uint x14_numBlocks; uint x18_numAllocs; uint x1c_numEntries; - bool x20_unk2 : 1; + bool x20_canErase : 1; }; class CMediumAllocPool { diff --git a/include/Kyoto/Basics/RAssertDolphin.hpp b/include/Kyoto/Basics/RAssertDolphin.hpp index 27c54d0d..c8cdfe36 100644 --- a/include/Kyoto/Basics/RAssertDolphin.hpp +++ b/include/Kyoto/Basics/RAssertDolphin.hpp @@ -5,6 +5,12 @@ #include "dolphin/os.h" +#define BUILD_INFO_TAG "!#$MetroidBuildInfo!#$" +#define BUILD_TIME_DUMMY "PAD_PAD_PAD_PAD_PAD_PAD_PAD_PAD_PAD" +#define BUILD_INFO BUILD_INFO_TAG BUILD_TIME_DUMMY +#define BUILD_INFO_TAG_SIZE sizeof(BUILD_INFO_TAG) - 1 + +extern const char* BuildTime; void rs_debugger_printf(const char* format, ...); void ErrorHandler(OSError code, OSContext* context, int, int); void SetErrorHandlers(); diff --git a/include/MetroidPrime/CFrontEndUI.hpp b/include/MetroidPrime/CFrontEndUI.hpp index 970f5b67..4db00baf 100644 --- a/include/MetroidPrime/CFrontEndUI.hpp +++ b/include/MetroidPrime/CFrontEndUI.hpp @@ -5,8 +5,26 @@ class CFrontEndUI : public CIOWin { public: + struct SFusionBonusFrame { + struct SGBALinkFrame { + enum EUIType { + kUIT_Empty = -1, + kUIT_InsertPak = 0, + kUIT_ConnectSocket = 1, + kUIT_PressStartAndSelect = 2, + kUIT_BeginLink = 3, + kUIT_Linking = 4, + kUIT_LinkFailed = 5, + kUIT_LinkCompleteOrLinking = 6, + kUIT_TurnOffGBA = 7, + kUIT_Complete = 8, + kUIT_Cancelled = 9 + }; + }; + }; CFrontEndUI(); + EMessageReturn OnMessage(const CArchitectureMessage& message, CArchitectureQueue& queue); private: diff --git a/include/dolphin/gx/GXGeometry.h b/include/dolphin/gx/GXGeometry.h index a3caceb5..632ebc69 100644 --- a/include/dolphin/gx/GXGeometry.h +++ b/include/dolphin/gx/GXGeometry.h @@ -25,7 +25,7 @@ void GXSetArray(GXAttr attr, const void* data, u8 stride); #endif void GXInvalidateVtxCache(void); -static void GXSetTexCoordGen(GXTexCoordID dst_coord, GXTexGenType func, +static inline void GXSetTexCoordGen(GXTexCoordID dst_coord, GXTexGenType func, GXTexGenSrc src_param, u32 mtx) { GXSetTexCoordGen2(dst_coord, func, src_param, mtx, GX_FALSE, GX_PTIDENTITY); } diff --git a/libc/stdio.h b/libc/stdio.h index 9937d4d0..d688e162 100644 --- a/libc/stdio.h +++ b/libc/stdio.h @@ -120,9 +120,9 @@ enum __ReadProcActions { __GetChar, __UngetChar, __CheckForError }; int puts(const char* s); int printf(const char*, ...); -int sprintf(char* s, const char* format, ...); -int vprintf(const char* format, va_list arg); -int vsprintf(char* s, const char* format, va_list arg); +size_t sprintf(char* s, const char* format, ...); +size_t vprintf(const char* format, va_list arg); +size_t vsprintf(char* s, const char* format, va_list arg); size_t fread(const void*, size_t memb_size, size_t num_memb, FILE*); size_t fwrite(const void*, size_t memb_size, size_t num_memb, FILE*); int fseek(FILE* file, long offset, int mode); diff --git a/src/Kyoto/Alloc/CMediumAllocPool.cpp b/src/Kyoto/Alloc/CMediumAllocPool.cpp index 71995421..084e6e68 100644 --- a/src/Kyoto/Alloc/CMediumAllocPool.cpp +++ b/src/Kyoto/Alloc/CMediumAllocPool.cpp @@ -20,7 +20,7 @@ void* CMediumAllocPool::Alloc(uint len) { void* ret; uint blockCount = 1; if (len >= 32) { - blockCount = (len + 31) >> 5; + blockCount = (len + 31) / 32; } ret = puddle->FindFree(blockCount); @@ -44,13 +44,13 @@ void* CMediumAllocPool::Alloc(uint len) { } int CMediumAllocPool::Free(const void* ptr) { - rstl::list::node* node = x0_list.begin().get_node(); + rstl::list< SMediumAllocPuddle >::node* node = x0_list.begin().get_node(); for (; node != x0_list.end().get_node(); node = node->get_next()) { SMediumAllocPuddle* puddle = node->get_value(); if (puddle->GetPtrOffset(ptr) < puddle->GetNumEntries() * 32) { puddle->Free(ptr); - if (node->get_value()->GetNumAllocs() == 0 && node->get_value()->GetUnk2()) { - if (x18_lastNodePrev == node ) { + if (node->get_value()->GetNumAllocs() == 0 && node->get_value()->CanErase()) { + if (x18_lastNodePrev == node) { x18_lastNodePrev = x0_list.begin().get_node(); } @@ -90,22 +90,22 @@ uint CMediumAllocPool::GetNumBlocksAvailable() { } /* this is such a hack... */ -#pragma inline_max_size(325) +#pragma inline_max_size(250) void CMediumAllocPool::AddPuddle(uint len, void* data, const bool unk) { x0_list.push_back(SMediumAllocPuddle(len, data, unk)); x18_lastNodePrev = x0_list.end().get_node(); x18_lastNodePrev = x18_lastNodePrev->get_prev(); } -SMediumAllocPuddle::SMediumAllocPuddle(const uint numBlocks, void* data, const bool unk) +SMediumAllocPuddle::SMediumAllocPuddle(const uint numBlocks, void* data, const bool canErase) : x0_mainData(data) , x8_bookKeeping((uchar*)data + numBlocks * 32) , xc_cachedBookKeepingAddr(nullptr) -, x10_(-1) +, x10_unused(-1) , x14_numBlocks(numBlocks) , x18_numAllocs(0) , x1c_numEntries(numBlocks) -, x20_unk2(unk) { +, x20_canErase(canErase) { SMediumAllocPuddle::InitBookKeeping(x8_bookKeeping, numBlocks); } @@ -131,17 +131,61 @@ void* SMediumAllocPuddle::FindFree(uint blockCount) { return ret; } -void* SMediumAllocPuddle::FindFreeEntry(uint numBlocks) { return nullptr; } +void* SMediumAllocPuddle::FindFreeEntry(uint numBlocks) { + if (GetNumBlocks() >= numBlocks) { + uchar* cachedBookPtr = xc_cachedBookKeepingAddr; + uchar* bookPtr = x8_bookKeeping; + + if (cachedBookPtr == nullptr) { + cachedBookPtr = bookPtr; + } + + uchar* ptr2 = bookPtr + GetNumEntries(); + uchar* ptr1 = cachedBookPtr; + do { + + if ((*ptr1 & 0x80) == 0 || ptr1 == ptr2) { + if (ptr1 == ptr2) { + ptr1 = bookPtr; + } else { + ptr1 += *ptr1; + } + } else { + uint offset = GetBlockOffset(ptr1, ptr2); + + if (offset >= numBlocks) { + if ((ushort)(offset - numBlocks)) { + SMediumAllocPuddle::InitBookKeeping(ptr1 + numBlocks, offset - numBlocks); + } + + xc_cachedBookKeepingAddr = ptr1; + return ptr1; + } + + ptr1 += offset; + + if (ptr1 == cachedBookPtr) { + break; + } + + if (ptr1 == ptr2) { + ptr1 = bookPtr; + } + } + } while (ptr1 != cachedBookPtr); + } + return nullptr; +} void SMediumAllocPuddle::Free(const void* ptr) {} ushort SMediumAllocPuddle::GetBlockOffset(const void* ptr1, const void* ptr2) { unsigned char tmp = (uchar*)ptr2 - (uchar*)ptr1 > 1 ? ((uchar*)ptr1)[1] : 0; - ushort x = tmp + (*(uchar*)(ptr1) & 0x7f) * 0x100; + ushort x = tmp + (*(uchar*)(ptr1)&0x7f) * 0x100; if ((x & 0x6000) == 0) { return x; - } + } return (x & 0x6000u) == 0x6000u ? 3 : (((x & 0x6000u) != 0x4000) ? 0 : 1) + 1; } diff --git a/src/Kyoto/Basics/RAssertDolphin.cpp b/src/Kyoto/Basics/RAssertDolphin.cpp index ece4629a..1dd06004 100644 --- a/src/Kyoto/Basics/RAssertDolphin.cpp +++ b/src/Kyoto/Basics/RAssertDolphin.cpp @@ -6,107 +6,125 @@ #include "dolphin/pad.h" #include "dolphin/vi.h" -#include #include +#include -static const char* buildTime = "Build v1.088 10/29/2002 2:21:25"; +static bool CallFatal = false; static char rs_debugger_buffer[1024]; static int rs_debugger_buffer_size; -static bool DAT_805a9248; +static const GXColor bg = {128, 0, 0, 0}; +static const GXColor fg = {255, 255, 255, 0}; +static const uchar ExitButtons[4] = {PAD_BUTTON_RIGHT, PAD_BUTTON_LEFT, PAD_BUTTON_DOWN, + PAD_BUTTON_UP}; -void ErrorHandler(OSError code, OSContext* context, int arg1, int arg2) { - uint loopExitCriteria; +static void hack() { + static const char* tmp1 = "%s\0\n"; + static const char* tmp2 = "0x%08x: 0x%08x 0x%08x"; +} + +void ErrorHandler(OSError code, OSContext* context, int dsisr, int dar) { OSContext newContext; + uint loopExitCriteria; PADStatus pads[4]; - uint local_60; + uchar local_60[4]; + u32* gpr; + uint i; + uint len; - if (code != 15 || ((arg1 & 0x10) == 0 && (arg2 < 0x1800001))) { - OSProtectRange(3, 0, 0, 3); - loopExitCriteria = 0; - PADControlMotor(0, 0); - VISetBlack(1); - VIFlush(); - while (loopExitCriteria < 4) { + if (code == 15 && ((dsisr & 0x10) != 0 || ((uint)dar > 0x1800000))) { + return; + } + + OSProtectRange(3, 0, 0, 3); + loopExitCriteria = 0; + PADControlMotor(0, 0); + VISetBlack(1); + VIFlush(); + +#if VERSION >= 1 + OSClearContext(&newContext); + OSSetCurrentContext(&newContext); + OSEnableInterrupts(); +#endif + + while (loopExitCriteria < 4) { + PADRead(pads); + +#if VERSION >= 1 + while (pads[1].err == PAD_ERR_NO_CONTROLLER) { + PADReset(PAD_CHAN1_BIT); PADRead(pads); - if (pads[1].err == 0) { - local_60 = 0x2010408; - if ((pads[1].button & 0xc10) == 0xc10) { - if ((pads[1].button & 0xf) != 0) { - if ((pads[1].button & loopExitCriteria) == 0) { // TODO: wrong logic with loopExitCriteria - if ((loopExitCriteria != 0) && - pads[1].button == 0) { // TODO: wrong logic with pads[1].button - loopExitCriteria = 0; - } - } else { - loopExitCriteria += 1; - } + } +#endif + + if (pads[1].err == PAD_ERR_NONE) { + *(uint*)local_60 = *(uint*)ExitButtons; + if ((pads[1].button & 0xc10) == 0xc10) { + if ((pads[1].button & 0xf) != 0) { + if ((pads[1].button & local_60[loopExitCriteria]) != 0) { + loopExitCriteria += 1; + + } else if ((loopExitCriteria != 0) && + ((pads[1].button & local_60[loopExitCriteria - 1]) == 0)) { + loopExitCriteria = 0; } - } else { - loopExitCriteria = 0; } + } else { + loopExitCriteria = 0; } } - VISetBlack(0); - VIFlush(); - OSReport("Unhandled exception %d - Production\n", code); - OSReport("%s\n", buildTime); - OSReport("------------------------- Context 0x%08x -------------------------\n", context); + } + VISetBlack(0); + VIFlush(); - int i = 0; - do { - OSReport("r%-2d = 0x%08x (%14d) r%-2d = 0x%08x (%14d)\n", i, context->gpr[i], - context->gpr[i], i + 0x10, context->gpr[i + 0x10], context->gpr[i + 0x10]); - i += 1; - } while (i < 0x10); + OSReport("Unhandled exception %d - Production\n", code); + OSReport("%s\n", BuildTime); + OSReport("------------------------- Context 0x%08x -------------------------\n", context); - OSReport("LR = 0x%08x CR = 0x%08x\n", context->lr, context->cr); - OSReport("SRR0 = 0x%08x SRR1 = 0x%08x\n", context->srr0, context->srr1); - OSReport("DSISR= 0x%08x DAR = 0x%08x\n", arg1, arg2); + for (i = 0; i < 16; ++i) { + OSReport("r%-2d = 0x%08x (%14d) r%-2d = 0x%08x (%14d)\n", i, context->gpr[i], + context->gpr[i], i + 0x10, context->gpr[i + 0x10], context->gpr[i + 0x10]); + } - if (rs_debugger_buffer_size == 0) { - i = sprintf(rs_debugger_buffer, "Exception %d - Production\n", code); + OSReport("LR = 0x%08x CR = 0x%08x\n", context->lr, context->cr); + OSReport("SRR0 = 0x%08x SRR1 = 0x%08x\n", context->srr0, context->srr1); + OSReport("DSISR= 0x%08x DAR = 0x%08x\n", dsisr, dar); + + len = rs_debugger_buffer_size; + if (rs_debugger_buffer_size != 0) { + len += sprintf(rs_debugger_buffer + rs_debugger_buffer_size, " - Production\n"); + } else { + len += sprintf(rs_debugger_buffer, "Exception %d - Production\n", code); + } + + len += sprintf(rs_debugger_buffer + len, "%s\n", BuildTime); + len += sprintf(rs_debugger_buffer + len, "IP: 0x%8.8x Mem: 0x%8.8x", context->srr0, dar); + + if (code == 15) { + len += sprintf(rs_debugger_buffer + len, " - %d", dsisr); + } + + len += sprintf(rs_debugger_buffer + len, "\n\n"); + + OSReport("\nAddress: Back Chain LR Save\n"); + gpr = (u32*)context->gpr[1]; + for (i = 0; gpr != NULL && gpr != (void*)0xFFFFFFFF && i++ < 16;) { + if (gpr > (void*)0x80000400 && gpr < (void*)0x81800000) { + OSReport("0x%08x: 0x%08x 0x%08x\n", gpr, *gpr, gpr[1]); + len += sprintf(rs_debugger_buffer + len, "0x%08x: 0x%08x 0x%08x\n", gpr, *gpr, gpr[1]); } else { - i = sprintf(rs_debugger_buffer + rs_debugger_buffer_size, " - Production\n"); + OSReport("0x%08x: BAD PTR\n", gpr); + sprintf(rs_debugger_buffer + len, "0x%08x: BAD PTR\n", gpr); + break; } - int j = sprintf(rs_debugger_buffer + rs_debugger_buffer_size + i, "%s\n", buildTime); - int bufferIndex = rs_debugger_buffer_size + i + j; - bufferIndex += - sprintf(rs_debugger_buffer + bufferIndex, "IP: 0x%8.8x Mem: 0x%8.8x", context->srr0, arg2); - if (code == 0xf) { - bufferIndex += sprintf(rs_debugger_buffer + bufferIndex, " - %d", arg1); - } - bufferIndex += sprintf(rs_debugger_buffer + bufferIndex, "\n\n"); + gpr = (u32*)*gpr; + } - OSReport("\nAddress: Back Chain LR Save\n"); - - uint stackPtr = context->gpr[1]; - bool check; - i = 0; - while (true) { - if (((stackPtr == NULL) || (stackPtr == 0xffffffff)) || (check = 0xf < i, i += 1, check)) { - break; - } - if ((stackPtr < 0x80000401) || (0x817fffff < stackPtr)) { - OSReport("0x%08x: BAD PTR\n", stackPtr); - sprintf(rs_debugger_buffer + j, "0x%08x: BAD PTR\n", stackPtr); - break; - } - uint* asPtr = (uint*)stackPtr; - - OSReport("0x%08x: 0x%08x 0x%08x\n", stackPtr, *asPtr, asPtr[1]); - bufferIndex += - sprintf(rs_debugger_buffer + j, "0x%08x: 0x%08x 0x%08x\n", stackPtr, *asPtr, asPtr[1]); - stackPtr = *asPtr; - } - OSReport("\nInstruction at 0x%x (read from SRR0) attempted to access invalid address 0x%x " - "(read from DAR)\n", - context->srr0, arg2); - - if (!DAT_805a9248) { - GXColor fg; // = &DAT_80000000; - GXColor bg; // = 0xffffff00; - OSFatal(fg, bg, rs_debugger_buffer); - } + OSReport("\nInstruction at 0x%x (read from SRR0) attempted to access invalid address 0x%x (read " + "from DAR)\n", + context->srr0, dar); + if (!CallFatal) { + OSFatal(fg, bg, rs_debugger_buffer); } }