1
0
Fork 0
mirror of https://github.com/zeldaret/oot.git synced 2025-05-10 11:03:46 +00:00

Match EnDaiku_UpdateText (En_Daiku OK) (#841)

This commit is contained in:
Roman971 2021-06-02 23:59:01 +02:00 committed by GitHub
parent 2efeeff7c7
commit f44b24255c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 8 additions and 246 deletions

View file

@ -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

View file

@ -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

4
spec
View file

@ -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

View file

@ -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.