From f44b24255ccce9d8ba13890cc378106abf2a51db Mon Sep 17 00:00:00 2001 From: Roman971 <32455037+Roman971@users.noreply.github.com> Date: Wed, 2 Jun 2021 23:59:01 +0200 Subject: [PATCH] Match EnDaiku_UpdateText (En_Daiku OK) (#841) --- .../actors/ovl_En_Daiku/EnDaiku_UpdateText.s | 204 ------------------ data/overlays/actors/z_en_daiku.reloc.s | 13 -- spec | 4 - src/overlays/actors/ovl_En_Daiku/z_en_daiku.c | 33 +-- 4 files changed, 8 insertions(+), 246 deletions(-) delete mode 100644 asm/non_matchings/overlays/actors/ovl_En_Daiku/EnDaiku_UpdateText.s delete mode 100644 data/overlays/actors/z_en_daiku.reloc.s diff --git a/asm/non_matchings/overlays/actors/ovl_En_Daiku/EnDaiku_UpdateText.s b/asm/non_matchings/overlays/actors/ovl_En_Daiku/EnDaiku_UpdateText.s deleted file mode 100644 index ec7eb60303..0000000000 --- a/asm/non_matchings/overlays/actors/ovl_En_Daiku/EnDaiku_UpdateText.s +++ /dev/null @@ -1,204 +0,0 @@ -glabel EnDaiku_UpdateText -/* 00538 809E3068 27BDFFC8 */ addiu $sp, $sp, 0xFFC8 ## $sp = FFFFFFC8 -/* 0053C 809E306C AFBF001C */ sw $ra, 0x001C($sp) -/* 00540 809E3070 AFB00018 */ sw $s0, 0x0018($sp) -/* 00544 809E3074 8C8E01E4 */ lw $t6, 0x01E4($a0) ## 000001E4 -/* 00548 809E3078 24010002 */ addiu $at, $zero, 0x0002 ## $at = 00000002 -/* 0054C 809E307C 00808025 */ or $s0, $a0, $zero ## $s0 = 00000000 -/* 00550 809E3080 55C10006 */ bnel $t6, $at, .L809E309C -/* 00554 809E3084 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000 -/* 00558 809E3088 0C278BD4 */ jal EnDaiku_UpdateTalking -/* 0055C 809E308C 00000000 */ nop -/* 00560 809E3090 100000A4 */ beq $zero, $zero, .L809E3324 -/* 00564 809E3094 AE0201E4 */ sw $v0, 0x01E4($s0) ## 000001E4 -/* 00568 809E3098 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000 -.L809E309C: -/* 0056C 809E309C 0C00BC65 */ jal func_8002F194 -/* 00570 809E30A0 AFA5003C */ sw $a1, 0x003C($sp) -/* 00574 809E30A4 10400004 */ beq $v0, $zero, .L809E30B8 -/* 00578 809E30A8 8FA4003C */ lw $a0, 0x003C($sp) -/* 0057C 809E30AC 240F0002 */ addiu $t7, $zero, 0x0002 ## $t7 = 00000002 -/* 00580 809E30B0 1000009C */ beq $zero, $zero, .L809E3324 -/* 00584 809E30B4 AE0F01E4 */ sw $t7, 0x01E4($s0) ## 000001E4 -.L809E30B8: -/* 00588 809E30B8 02002825 */ or $a1, $s0, $zero ## $a1 = 00000000 -/* 0058C 809E30BC 27A6002E */ addiu $a2, $sp, 0x002E ## $a2 = FFFFFFF6 -/* 00590 809E30C0 0C00BCDD */ jal func_8002F374 -/* 00594 809E30C4 27A7002C */ addiu $a3, $sp, 0x002C ## $a3 = FFFFFFF4 -/* 00598 809E30C8 87A2002E */ lh $v0, 0x002E($sp) -/* 0059C 809E30CC 04400095 */ bltz $v0, .L809E3324 -/* 005A0 809E30D0 28410141 */ slti $at, $v0, 0x0141 -/* 005A4 809E30D4 10200093 */ beq $at, $zero, .L809E3324 -/* 005A8 809E30D8 87A2002C */ lh $v0, 0x002C($sp) -/* 005AC 809E30DC 04400091 */ bltz $v0, .L809E3324 -/* 005B0 809E30E0 284100F1 */ slti $at, $v0, 0x00F1 -/* 005B4 809E30E4 50200090 */ beql $at, $zero, .L809E3328 -/* 005B8 809E30E8 8FBF001C */ lw $ra, 0x001C($sp) -/* 005BC 809E30EC 8E1801E4 */ lw $t8, 0x01E4($s0) ## 000001E4 -/* 005C0 809E30F0 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000 -/* 005C4 809E30F4 8FA5003C */ lw $a1, 0x003C($sp) -/* 005C8 809E30F8 5700008B */ bnel $t8, $zero, .L809E3328 -/* 005CC 809E30FC 8FBF001C */ lw $ra, 0x001C($sp) -/* 005D0 809E3100 0C00BCB3 */ jal func_8002F2CC -/* 005D4 809E3104 3C0642C8 */ lui $a2, 0x42C8 ## $a2 = 42C80000 -/* 005D8 809E3108 24050001 */ addiu $a1, $zero, 0x0001 ## $a1 = 00000001 -/* 005DC 809E310C 14450085 */ bne $v0, $a1, .L809E3324 -/* 005E0 809E3110 8FB9003C */ lw $t9, 0x003C($sp) -/* 005E4 809E3114 872200A4 */ lh $v0, 0x00A4($t9) ## 000000A4 -/* 005E8 809E3118 2401000C */ addiu $at, $zero, 0x000C ## $at = 0000000C -/* 005EC 809E311C 54410030 */ bnel $v0, $at, .L809E31E0 -/* 005F0 809E3120 24010039 */ addiu $at, $zero, 0x0039 ## $at = 00000039 -/* 005F4 809E3124 8E02023C */ lw $v0, 0x023C($s0) ## 0000023C -/* 005F8 809E3128 3C048016 */ lui $a0, %hi(gSaveContext) -/* 005FC 809E312C 2484E660 */ addiu $a0, %lo(gSaveContext) -/* 00600 809E3130 30480010 */ andi $t0, $v0, 0x0010 ## $t0 = 00000000 -/* 00604 809E3134 11000025 */ beq $t0, $zero, .L809E31CC -/* 00608 809E3138 30590018 */ andi $t9, $v0, 0x0018 ## $t9 = 00000000 -/* 0060C 809E313C 94820EE6 */ lhu $v0, 0x0EE6($a0) ## 8015F546 -/* 00610 809E3140 00001825 */ or $v1, $zero, $zero ## $v1 = 00000000 -/* 00614 809E3144 240D605B */ addiu $t5, $zero, 0x605B ## $t5 = 0000605B -/* 00618 809E3148 30490001 */ andi $t1, $v0, 0x0001 ## $t1 = 00000000 -/* 0061C 809E314C 11200002 */ beq $t1, $zero, .L809E3158 -/* 00620 809E3150 304A0002 */ andi $t2, $v0, 0x0002 ## $t2 = 00000000 -/* 00624 809E3154 00A01825 */ or $v1, $a1, $zero ## $v1 = 00000001 -.L809E3158: -/* 00628 809E3158 11400002 */ beq $t2, $zero, .L809E3164 -/* 0062C 809E315C 304B0004 */ andi $t3, $v0, 0x0004 ## $t3 = 00000000 -/* 00630 809E3160 24630001 */ addiu $v1, $v1, 0x0001 ## $v1 = 00000002 -.L809E3164: -/* 00634 809E3164 11600002 */ beq $t3, $zero, .L809E3170 -/* 00638 809E3168 304C0008 */ andi $t4, $v0, 0x0008 ## $t4 = 00000000 -/* 0063C 809E316C 24630001 */ addiu $v1, $v1, 0x0001 ## $v1 = 00000003 -.L809E3170: -/* 00640 809E3170 11800002 */ beq $t4, $zero, .L809E317C -/* 00644 809E3174 00000000 */ nop -/* 00648 809E3178 24630001 */ addiu $v1, $v1, 0x0001 ## $v1 = 00000004 -.L809E317C: -/* 0064C 809E317C 1060000B */ beq $v1, $zero, .L809E31AC -/* 00650 809E3180 00000000 */ nop -/* 00654 809E3184 1065000B */ beq $v1, $a1, .L809E31B4 -/* 00658 809E3188 240E605C */ addiu $t6, $zero, 0x605C ## $t6 = 0000605C -/* 0065C 809E318C 24010002 */ addiu $at, $zero, 0x0002 ## $at = 00000002 -/* 00660 809E3190 1061000A */ beq $v1, $at, .L809E31BC -/* 00664 809E3194 240F605D */ addiu $t7, $zero, 0x605D ## $t7 = 0000605D -/* 00668 809E3198 24010003 */ addiu $at, $zero, 0x0003 ## $at = 00000003 -/* 0066C 809E319C 10610009 */ beq $v1, $at, .L809E31C4 -/* 00670 809E31A0 2418605E */ addiu $t8, $zero, 0x605E ## $t8 = 0000605E -/* 00674 809E31A4 10000060 */ beq $zero, $zero, .L809E3328 -/* 00678 809E31A8 8FBF001C */ lw $ra, 0x001C($sp) -.L809E31AC: -/* 0067C 809E31AC 1000005D */ beq $zero, $zero, .L809E3324 -/* 00680 809E31B0 A60D010E */ sh $t5, 0x010E($s0) ## 0000010E -.L809E31B4: -/* 00684 809E31B4 1000005B */ beq $zero, $zero, .L809E3324 -/* 00688 809E31B8 A60E010E */ sh $t6, 0x010E($s0) ## 0000010E -.L809E31BC: -/* 0068C 809E31BC 10000059 */ beq $zero, $zero, .L809E3324 -/* 00690 809E31C0 A60F010E */ sh $t7, 0x010E($s0) ## 0000010E -.L809E31C4: -/* 00694 809E31C4 10000057 */ beq $zero, $zero, .L809E3324 -/* 00698 809E31C8 A618010E */ sh $t8, 0x010E($s0) ## 0000010E -.L809E31CC: -/* 0069C 809E31CC 17200055 */ bne $t9, $zero, .L809E3324 -/* 006A0 809E31D0 24086007 */ addiu $t0, $zero, 0x6007 ## $t0 = 00006007 -/* 006A4 809E31D4 10000053 */ beq $zero, $zero, .L809E3324 -/* 006A8 809E31D8 A608010E */ sh $t0, 0x010E($s0) ## 0000010E -/* 006AC 809E31DC 24010039 */ addiu $at, $zero, 0x0039 ## $at = 00000039 -.L809E31E0: -/* 006B0 809E31E0 54410051 */ bnel $v0, $at, .L809E3328 -/* 006B4 809E31E4 8FBF001C */ lw $ra, 0x001C($sp) -/* 006B8 809E31E8 8602001C */ lh $v0, 0x001C($s0) ## 0000001C -/* 006BC 809E31EC 3C048016 */ lui $a0, %hi(gSaveContext) -/* 006C0 809E31F0 2484E660 */ addiu $a0, %lo(gSaveContext) -/* 006C4 809E31F4 30420003 */ andi $v0, $v0, 0x0003 ## $v0 = 00000000 -/* 006C8 809E31F8 1040000B */ beq $v0, $zero, .L809E3228 -/* 006CC 809E31FC 3C098012 */ lui $t1, %hi(gBitFlags+0xc) -/* 006D0 809E3200 10450014 */ beq $v0, $a1, .L809E3254 -/* 006D4 809E3204 3C048016 */ lui $a0, %hi(gSaveContext) -/* 006D8 809E3208 24010002 */ addiu $at, $zero, 0x0002 ## $at = 00000002 -/* 006DC 809E320C 10410025 */ beq $v0, $at, .L809E32A4 -/* 006E0 809E3210 3C048016 */ lui $a0, %hi(gSaveContext) -/* 006E4 809E3214 24010003 */ addiu $at, $zero, 0x0003 ## $at = 00000003 -/* 006E8 809E3218 10410036 */ beq $v0, $at, .L809E32F4 -/* 006EC 809E321C 3C048016 */ lui $a0, %hi(gSaveContext) -/* 006F0 809E3220 10000041 */ beq $zero, $zero, .L809E3328 -/* 006F4 809E3224 8FBF001C */ lw $ra, 0x001C($sp) -.L809E3228: -/* 006F8 809E3228 8D29712C */ lw $t1, %lo(gBitFlags+0xc)($t1) -/* 006FC 809E322C 8C8A00A4 */ lw $t2, 0x00A4($a0) ## 801600A4 -/* 00700 809E3230 240C6060 */ addiu $t4, $zero, 0x6060 ## $t4 = 00006060 -/* 00704 809E3234 240D605F */ addiu $t5, $zero, 0x605F ## $t5 = 0000605F -/* 00708 809E3238 012A5824 */ and $t3, $t1, $t2 -/* 0070C 809E323C 11600003 */ beq $t3, $zero, .L809E324C -/* 00710 809E3240 00000000 */ nop -/* 00714 809E3244 10000037 */ beq $zero, $zero, .L809E3324 -/* 00718 809E3248 A60C010E */ sh $t4, 0x010E($s0) ## 0000010E -.L809E324C: -/* 0071C 809E324C 10000035 */ beq $zero, $zero, .L809E3324 -/* 00720 809E3250 A60D010E */ sh $t5, 0x010E($s0) ## 0000010E -.L809E3254: -/* 00724 809E3254 2484E660 */ addiu $a0, %lo(gSaveContext) -/* 00728 809E3258 3C0E8012 */ lui $t6, %hi(gBitFlags+0xc) -/* 0072C 809E325C 8DCE712C */ lw $t6, %lo(gBitFlags+0xc)($t6) -/* 00730 809E3260 8C8F00A4 */ lw $t7, 0x00A4($a0) ## 8015E704 -/* 00734 809E3264 24196063 */ addiu $t9, $zero, 0x6063 ## $t9 = 00006063 -/* 00738 809E3268 01CFC024 */ and $t8, $t6, $t7 -/* 0073C 809E326C 53000004 */ beql $t8, $zero, .L809E3280 -/* 00740 809E3270 94880F26 */ lhu $t0, 0x0F26($a0) ## 8015F586 -/* 00744 809E3274 1000002B */ beq $zero, $zero, .L809E3324 -/* 00748 809E3278 A619010E */ sh $t9, 0x010E($s0) ## 0000010E -/* 0074C 809E327C 94880F26 */ lhu $t0, 0x0F26($a0) ## 8015F586 -.L809E3280: -/* 00750 809E3280 240A6061 */ addiu $t2, $zero, 0x6061 ## $t2 = 00006061 -/* 00754 809E3284 240B6062 */ addiu $t3, $zero, 0x6062 ## $t3 = 00006062 -/* 00758 809E3288 31090040 */ andi $t1, $t0, 0x0040 ## $t1 = 00000000 -/* 0075C 809E328C 15200003 */ bne $t1, $zero, .L809E329C -/* 00760 809E3290 00000000 */ nop -/* 00764 809E3294 10000023 */ beq $zero, $zero, .L809E3324 -/* 00768 809E3298 A60A010E */ sh $t2, 0x010E($s0) ## 0000010E -.L809E329C: -/* 0076C 809E329C 10000021 */ beq $zero, $zero, .L809E3324 -/* 00770 809E32A0 A60B010E */ sh $t3, 0x010E($s0) ## 0000010E -.L809E32A4: -/* 00774 809E32A4 2484E660 */ addiu $a0, %lo(gSaveContext) -/* 00778 809E32A8 3C0C8012 */ lui $t4, %hi(gBitFlags+0xc) -/* 0077C 809E32AC 8D8C712C */ lw $t4, %lo(gBitFlags+0xc)($t4) -/* 00780 809E32B0 8C8D00A4 */ lw $t5, 0x00A4($a0) ## 8015CD64 -/* 00784 809E32B4 240F6066 */ addiu $t7, $zero, 0x6066 ## $t7 = 00006066 -/* 00788 809E32B8 018D7024 */ and $t6, $t4, $t5 -/* 0078C 809E32BC 51C00004 */ beql $t6, $zero, .L809E32D0 -/* 00790 809E32C0 94980F26 */ lhu $t8, 0x0F26($a0) ## 8015DBE6 -/* 00794 809E32C4 10000017 */ beq $zero, $zero, .L809E3324 -/* 00798 809E32C8 A60F010E */ sh $t7, 0x010E($s0) ## 0000010E -/* 0079C 809E32CC 94980F26 */ lhu $t8, 0x0F26($a0) ## 8015DBE6 -.L809E32D0: -/* 007A0 809E32D0 24086064 */ addiu $t0, $zero, 0x6064 ## $t0 = 00006064 -/* 007A4 809E32D4 24096065 */ addiu $t1, $zero, 0x6065 ## $t1 = 00006065 -/* 007A8 809E32D8 33190100 */ andi $t9, $t8, 0x0100 ## $t9 = 00000000 -/* 007AC 809E32DC 17200003 */ bne $t9, $zero, .L809E32EC -/* 007B0 809E32E0 00000000 */ nop -/* 007B4 809E32E4 1000000F */ beq $zero, $zero, .L809E3324 -/* 007B8 809E32E8 A608010E */ sh $t0, 0x010E($s0) ## 0000010E -.L809E32EC: -/* 007BC 809E32EC 1000000D */ beq $zero, $zero, .L809E3324 -/* 007C0 809E32F0 A609010E */ sh $t1, 0x010E($s0) ## 0000010E -.L809E32F4: -/* 007C4 809E32F4 2484E660 */ addiu $a0, %lo(gSaveContext) -/* 007C8 809E32F8 3C0A8012 */ lui $t2, %hi(gBitFlags+0xc) -/* 007CC 809E32FC 8D4A712C */ lw $t2, %lo(gBitFlags+0xc)($t2) -/* 007D0 809E3300 8C8B00A4 */ lw $t3, 0x00A4($a0) ## 8015B3C4 -/* 007D4 809E3304 240D6068 */ addiu $t5, $zero, 0x6068 ## $t5 = 00006068 -/* 007D8 809E3308 240E6067 */ addiu $t6, $zero, 0x6067 ## $t6 = 00006067 -/* 007DC 809E330C 014B6024 */ and $t4, $t2, $t3 -/* 007E0 809E3310 51800004 */ beql $t4, $zero, .L809E3324 -/* 007E4 809E3314 A60E010E */ sh $t6, 0x010E($s0) ## 0000010E -/* 007E8 809E3318 10000002 */ beq $zero, $zero, .L809E3324 -/* 007EC 809E331C A60D010E */ sh $t5, 0x010E($s0) ## 0000010E -/* 007F0 809E3320 A60E010E */ sh $t6, 0x010E($s0) ## 0000010E -.L809E3324: -/* 007F4 809E3324 8FBF001C */ lw $ra, 0x001C($sp) -.L809E3328: -/* 007F8 809E3328 8FB00018 */ lw $s0, 0x0018($sp) -/* 007FC 809E332C 27BD0038 */ addiu $sp, $sp, 0x0038 ## $sp = 00000000 -/* 00800 809E3330 03E00008 */ jr $ra -/* 00804 809E3334 00000000 */ nop diff --git a/data/overlays/actors/z_en_daiku.reloc.s b/data/overlays/actors/z_en_daiku.reloc.s deleted file mode 100644 index 03cac17ca4..0000000000 --- a/data/overlays/actors/z_en_daiku.reloc.s +++ /dev/null @@ -1,13 +0,0 @@ -.include "macro.inc" - - # assembler directives - .set noat # allow manual use of $at - .set noreorder # don't insert nops after branches - .set gp=64 # allow use of 64-bit general purpose registers - -.section .rodata - -.balign 16 - -glabel D_809E41D0 - .incbin "baserom/ovl_En_Daiku", 0x16A0, 0x00000150 diff --git a/spec b/spec index 9efd513334..31e88230ce 100644 --- a/spec +++ b/spec @@ -2026,11 +2026,7 @@ endseg beginseg name "ovl_En_Daiku" include "build/src/overlays/actors/ovl_En_Daiku/z_en_daiku.o" -#ifdef NON_MATCHING include "build/src/overlays/actors/ovl_En_Daiku/ovl_En_Daiku_reloc.o" -#else - include "build/data/overlays/actors/z_en_daiku.reloc.o" -#endif endseg beginseg diff --git a/src/overlays/actors/ovl_En_Daiku/z_en_daiku.c b/src/overlays/actors/ovl_En_Daiku/z_en_daiku.c index f12051e693..72329751bc 100644 --- a/src/overlays/actors/ovl_En_Daiku/z_en_daiku.c +++ b/src/overlays/actors/ovl_En_Daiku/z_en_daiku.c @@ -260,11 +260,9 @@ s32 EnDaiku_UpdateTalking(EnDaiku* this, GlobalContext* globalCtx) { return newTalkState; } -#ifdef NON_MATCHING -// regalloc void EnDaiku_UpdateText(EnDaiku* this, GlobalContext* globalCtx) { - s32 wannabeV0; - s32 wannabeV1; + s32 carpenterType; + s32 freedCount; s16 sp2E; s16 sp2C; @@ -278,25 +276,14 @@ void EnDaiku_UpdateText(EnDaiku* this, GlobalContext* globalCtx) { func_8002F2CC(&this->actor, globalCtx, 100.0f) == 1) { if (globalCtx->sceneNum == SCENE_GERUDOWAY) { if (this->stateFlags & ENDAIKU_STATEFLAG_GERUDODEFEATED) { - // wannabeV0 uses v1 and wannabeV1 uses v0, the opposite is wanted - wannabeV0 = gSaveContext.eventChkInf[9]; - // moving the wannabeV1 initialization to its declaration fixes regalloc but breaks earlier codegen - wannabeV1 = 0; - - if (wannabeV0 & 1) { - wannabeV1++; - } - if (wannabeV0 & 2) { - wannabeV1++; - } - if (wannabeV0 & 4) { - wannabeV1++; - } - if (wannabeV0 & 8) { - wannabeV1++; + freedCount = 0; + for (carpenterType = 0; carpenterType < 4; carpenterType++) { + if (gSaveContext.eventChkInf[9] & (1 << carpenterType)) { + freedCount++; + } } - switch (wannabeV1) { + switch (freedCount) { case 0: this->actor.textId = 0x605B; break; @@ -357,10 +344,6 @@ void EnDaiku_UpdateText(EnDaiku* this, GlobalContext* globalCtx) { } } } -#else -void EnDaiku_UpdateText(EnDaiku* this, GlobalContext* globalCtx); -#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Daiku/EnDaiku_UpdateText.s") -#endif /** * The carpenter is idling in the tent.