1
0
mirror of https://github.com/zeldaret/oot.git synced 2024-09-21 04:24:43 +00:00

Fix some non matchings in actors and parameter (#540)

* Fix some non matchings in actors and parameter

- `EnTuboTrap_HandleImpact` from `z_en_tubo_trap.c` (fully matching)
- `func_80ADA35C` from `z_en_po_sisters.c` (fully matching)
- `func_80B0B81C` from `z_en_stream.c` (fully matching)
- `Item_Give` from `z_parameter.c` (1 non matching left)

* Rectify bss ordering comment
This commit is contained in:
Roman971 2020-12-18 01:12:22 +01:00 committed by GitHub
parent 0376242365
commit 83e53bbaf2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
12 changed files with 53 additions and 2110 deletions

File diff suppressed because it is too large Load Diff

View File

@ -1,96 +0,0 @@
glabel func_80ADA35C
/* 013CC 80ADA35C 27BDFFD0 */ addiu $sp, $sp, 0xFFD0 ## $sp = FFFFFFD0
/* 013D0 80ADA360 AFBF001C */ sw $ra, 0x001C($sp)
/* 013D4 80ADA364 AFB00018 */ sw $s0, 0x0018($sp)
/* 013D8 80ADA368 8C8F0190 */ lw $t7, 0x0190($a0) ## 00000190
/* 013DC 80ADA36C 3C0E80AE */ lui $t6, %hi(func_80ADBF58) ## $t6 = 80AE0000
/* 013E0 80ADA370 25CEBF58 */ addiu $t6, $t6, %lo(func_80ADBF58) ## $t6 = 80ADBF58
/* 013E4 80ADA374 00808025 */ or $s0, $a0, $zero ## $s0 = 00000000
/* 013E8 80ADA378 15CF0003 */ bne $t6, $t7, .L80ADA388
/* 013EC 80ADA37C 8CA31C44 */ lw $v1, 0x1C44($a1) ## 00001C44
/* 013F0 80ADA380 1000000E */ beq $zero, $zero, .L80ADA3BC
/* 013F4 80ADA384 C480000C */ lwc1 $f0, 0x000C($a0) ## 0000000C
.L80ADA388:
/* 013F8 80ADA388 92020194 */ lbu $v0, 0x0194($s0) ## 00000194
/* 013FC 80ADA38C 24010003 */ addiu $at, $zero, 0x0003 ## $at = 00000003
/* 01400 80ADA390 50400003 */ beql $v0, $zero, .L80ADA3A0
/* 01404 80ADA394 3C0140A0 */ lui $at, 0x40A0 ## $at = 40A00000
/* 01408 80ADA398 14410005 */ bne $v0, $at, .L80ADA3B0
/* 0140C 80ADA39C 3C0140A0 */ lui $at, 0x40A0 ## $at = 40A00000
.L80ADA3A0:
/* 01410 80ADA3A0 44813000 */ mtc1 $at, $f6 ## $f6 = 5.00
/* 01414 80ADA3A4 C4640028 */ lwc1 $f4, 0x0028($v1) ## 00000028
/* 01418 80ADA3A8 10000004 */ beq $zero, $zero, .L80ADA3BC
/* 0141C 80ADA3AC 46062000 */ add.s $f0, $f4, $f6
.L80ADA3B0:
/* 01420 80ADA3B0 3C014450 */ lui $at, 0x4450 ## $at = 44500000
/* 01424 80ADA3B4 44810000 */ mtc1 $at, $f0 ## $f0 = 832.00
/* 01428 80ADA3B8 00000000 */ nop
.L80ADA3BC:
/* 0142C 80ADA3BC 44050000 */ mfc1 $a1, $f0
/* 01430 80ADA3C0 26040028 */ addiu $a0, $s0, 0x0028 ## $a0 = 00000028
/* 01434 80ADA3C4 3C063F00 */ lui $a2, 0x3F00 ## $a2 = 3F000000
/* 01438 80ADA3C8 0C01E107 */ jal Math_SmoothScaleMaxF
/* 0143C 80ADA3CC 3C074040 */ lui $a3, 0x4040 ## $a3 = 40400000
/* 01440 80ADA3D0 92020196 */ lbu $v0, 0x0196($s0) ## 00000196
/* 01444 80ADA3D4 24180020 */ addiu $t8, $zero, 0x0020 ## $t8 = 00000020
/* 01448 80ADA3D8 14400003 */ bne $v0, $zero, .L80ADA3E8
/* 0144C 80ADA3DC 00000000 */ nop
/* 01450 80ADA3E0 A2180196 */ sb $t8, 0x0196($s0) ## 00000196
/* 01454 80ADA3E4 330200FF */ andi $v0, $t8, 0x00FF ## $v0 = 00000020
.L80ADA3E8:
/* 01458 80ADA3E8 10400004 */ beq $v0, $zero, .L80ADA3FC
/* 0145C 80ADA3EC 00401825 */ or $v1, $v0, $zero ## $v1 = 00000020
/* 01460 80ADA3F0 2459FFFF */ addiu $t9, $v0, 0xFFFF ## $t9 = 0000001F
/* 01464 80ADA3F4 A2190196 */ sb $t9, 0x0196($s0) ## 00000196
/* 01468 80ADA3F8 332300FF */ andi $v1, $t9, 0x00FF ## $v1 = 0000001F
.L80ADA3FC:
/* 0146C 80ADA3FC 00602025 */ or $a0, $v1, $zero ## $a0 = 0000001F
/* 01470 80ADA400 000426C0 */ sll $a0, $a0, 27
/* 01474 80ADA404 0C01DE1C */ jal Math_Sins
## sins?
/* 01478 80ADA408 00042403 */ sra $a0, $a0, 16
/* 0147C 80ADA40C 0C03F66B */ jal Math_Rand_ZeroOne
## Rand.Next() float
/* 01480 80ADA410 E7A00020 */ swc1 $f0, 0x0020($sp)
/* 01484 80ADA414 3C014000 */ lui $at, 0x4000 ## $at = 40000000
/* 01488 80ADA418 44814000 */ mtc1 $at, $f8 ## $f8 = 2.00
/* 0148C 80ADA41C 3C013F00 */ lui $at, 0x3F00 ## $at = 3F000000
/* 01490 80ADA420 44815000 */ mtc1 $at, $f10 ## $f10 = 0.50
/* 01494 80ADA424 C7A40020 */ lwc1 $f4, 0x0020($sp)
/* 01498 80ADA428 92080231 */ lbu $t0, 0x0231($s0) ## 00000231
/* 0149C 80ADA42C 46005402 */ mul.s $f16, $f10, $f0
/* 014A0 80ADA430 C60A0028 */ lwc1 $f10, 0x0028($s0) ## 00000028
/* 014A4 80ADA434 240100FF */ addiu $at, $zero, 0x00FF ## $at = 000000FF
/* 014A8 80ADA438 46104480 */ add.s $f18, $f8, $f16
/* 014AC 80ADA43C 46049182 */ mul.s $f6, $f18, $f4
/* 014B0 80ADA440 46065200 */ add.s $f8, $f10, $f6
/* 014B4 80ADA444 15010013 */ bne $t0, $at, .L80ADA494
/* 014B8 80ADA448 E6080028 */ swc1 $f8, 0x0028($s0) ## 00000028
/* 014BC 80ADA44C 8E020190 */ lw $v0, 0x0190($s0) ## 00000190
/* 014C0 80ADA450 3C0980AE */ lui $t1, %hi(func_80ADA8C0) ## $t1 = 80AE0000
/* 014C4 80ADA454 2529A8C0 */ addiu $t1, $t1, %lo(func_80ADA8C0) ## $t1 = 80ADA8C0
/* 014C8 80ADA458 1122000E */ beq $t1, $v0, .L80ADA494
/* 014CC 80ADA45C 3C0A80AE */ lui $t2, %hi(func_80ADA7F0) ## $t2 = 80AE0000
/* 014D0 80ADA460 254AA7F0 */ addiu $t2, $t2, %lo(func_80ADA7F0) ## $t2 = 80ADA7F0
/* 014D4 80ADA464 1142000B */ beq $t2, $v0, .L80ADA494
/* 014D8 80ADA468 3C0B80AE */ lui $t3, %hi(func_80ADAC70) ## $t3 = 80AE0000
/* 014DC 80ADA46C 256BAC70 */ addiu $t3, $t3, %lo(func_80ADAC70) ## $t3 = 80ADAC70
/* 014E0 80ADA470 15620006 */ bne $t3, $v0, .L80ADA48C
/* 014E4 80ADA474 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
/* 014E8 80ADA478 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
/* 014EC 80ADA47C 0C00BE5D */ jal func_8002F974
/* 014F0 80ADA480 24053072 */ addiu $a1, $zero, 0x3072 ## $a1 = 00003072
/* 014F4 80ADA484 10000004 */ beq $zero, $zero, .L80ADA498
/* 014F8 80ADA488 8FBF001C */ lw $ra, 0x001C($sp)
.L80ADA48C:
/* 014FC 80ADA48C 0C00BE5D */ jal func_8002F974
/* 01500 80ADA490 24053071 */ addiu $a1, $zero, 0x3071 ## $a1 = 00003071
.L80ADA494:
/* 01504 80ADA494 8FBF001C */ lw $ra, 0x001C($sp)
.L80ADA498:
/* 01508 80ADA498 8FB00018 */ lw $s0, 0x0018($sp)
/* 0150C 80ADA49C 27BD0030 */ addiu $sp, $sp, 0x0030 ## $sp = 00000000
/* 01510 80ADA4A0 03E00008 */ jr $ra
/* 01514 80ADA4A4 00000000 */ nop

View File

@ -1,74 +0,0 @@
glabel func_80B0B81C
/* 0007C 80B0B81C C4A40000 */ lwc1 $f4, 0x0000($a1) ## 00000000
/* 00080 80B0B820 C4860000 */ lwc1 $f6, 0x0000($a0) ## 00000000
/* 00084 80B0B824 44876000 */ mtc1 $a3, $f12 ## $f12 = 0.00
/* 00088 80B0B828 3C014248 */ lui $at, 0x4248 ## $at = 42480000
/* 0008C 80B0B82C 46062201 */ sub.s $f8, $f4, $f6
/* 00090 80B0B830 00001825 */ or $v1, $zero, $zero ## $v1 = 00000000
/* 00094 80B0B834 E4C80000 */ swc1 $f8, 0x0000($a2) ## 00000000
/* 00098 80B0B838 C4840004 */ lwc1 $f4, 0x0004($a0) ## 00000004
/* 0009C 80B0B83C C4AA0004 */ lwc1 $f10, 0x0004($a1) ## 00000004
/* 000A0 80B0B840 C4C20000 */ lwc1 $f2, 0x0000($a2) ## 00000000
/* 000A4 80B0B844 46045181 */ sub.s $f6, $f10, $f4
/* 000A8 80B0B848 E4C60004 */ swc1 $f6, 0x0004($a2) ## 00000004
/* 000AC 80B0B84C C48A0008 */ lwc1 $f10, 0x0008($a0) ## 00000008
/* 000B0 80B0B850 C4A80008 */ lwc1 $f8, 0x0008($a1) ## 00000008
/* 000B4 80B0B854 46021182 */ mul.s $f6, $f2, $f2
/* 000B8 80B0B858 C4D20004 */ lwc1 $f18, 0x0004($a2) ## 00000004
/* 000BC 80B0B85C 460A4101 */ sub.s $f4, $f8, $f10
/* 000C0 80B0B860 44805000 */ mtc1 $zero, $f10 ## $f10 = 0.00
/* 000C4 80B0B864 E4C40008 */ swc1 $f4, 0x0008($a2) ## 00000008
/* 000C8 80B0B868 C4D00008 */ lwc1 $f16, 0x0008($a2) ## 00000008
/* 000CC 80B0B86C 46108202 */ mul.s $f8, $f16, $f16
/* 000D0 80B0B870 46083000 */ add.s $f0, $f6, $f8
/* 000D4 80B0B874 460C5102 */ mul.s $f4, $f10, $f12
/* 000D8 80B0B878 44813000 */ mtc1 $at, $f6 ## $f6 = 50.00
/* 000DC 80B0B87C 3C014320 */ lui $at, 0x4320 ## $at = 43200000
/* 000E0 80B0B880 46000004 */ sqrt.s $f0, $f0
/* 000E4 80B0B884 46062382 */ mul.s $f14, $f4, $f6
/* 000E8 80B0B888 4612703E */ c.le.s $f14, $f18
/* 000EC 80B0B88C 00000000 */ nop
/* 000F0 80B0B890 4502001D */ bc1fl .L80B0B908
/* 000F4 80B0B894 460E903E */ c.le.s $f18, $f14
/* 000F8 80B0B898 44814000 */ mtc1 $at, $f8 ## $f8 = 160.00
/* 000FC 80B0B89C 3C014248 */ lui $at, 0x4248 ## $at = 42480000
/* 00100 80B0B8A0 44812000 */ mtc1 $at, $f4 ## $f4 = 50.00
/* 00104 80B0B8A4 460C4282 */ mul.s $f10, $f8, $f12
/* 00108 80B0B8A8 00000000 */ nop
/* 0010C 80B0B8AC 46045082 */ mul.s $f2, $f10, $f4
/* 00110 80B0B8B0 4602903E */ c.le.s $f18, $f2
/* 00114 80B0B8B4 00000000 */ nop
/* 00118 80B0B8B8 45000012 */ bc1f .L80B0B904
/* 0011C 80B0B8BC 00000000 */ nop
/* 00120 80B0B8C0 460E9181 */ sub.s $f6, $f18, $f14
/* 00124 80B0B8C4 3C0141E0 */ lui $at, 0x41E0 ## $at = 41E00000
/* 00128 80B0B8C8 44818000 */ mtc1 $at, $f16 ## $f16 = 28.00
/* 0012C 80B0B8CC 460E1101 */ sub.s $f4, $f2, $f14
/* 00130 80B0B8D0 E4C60004 */ swc1 $f6, 0x0004($a2) ## 00000004
/* 00134 80B0B8D4 C4D20004 */ lwc1 $f18, 0x0004($a2) ## 00000004
/* 00138 80B0B8D8 3C014296 */ lui $at, 0x4296 ## $at = 42960000
/* 0013C 80B0B8DC 44814000 */ mtc1 $at, $f8 ## $f8 = 75.00
/* 00140 80B0B8E0 46049183 */ div.s $f6, $f18, $f4
/* 00144 80B0B8E4 46104281 */ sub.s $f10, $f8, $f16
/* 00148 80B0B8E8 46065202 */ mul.s $f8, $f10, $f6
/* 0014C 80B0B8EC 46104300 */ add.s $f12, $f8, $f16
/* 00150 80B0B8F0 460C003E */ c.le.s $f0, $f12
/* 00154 80B0B8F4 00000000 */ nop
/* 00158 80B0B8F8 45020003 */ bc1fl .L80B0B908
/* 0015C 80B0B8FC 460E903E */ c.le.s $f18, $f14
/* 00160 80B0B900 24030001 */ addiu $v1, $zero, 0x0001 ## $v1 = 00000001
.L80B0B904:
/* 00164 80B0B904 460E903E */ c.le.s $f18, $f14
.L80B0B908:
/* 00168 80B0B908 3C0141E0 */ lui $at, 0x41E0 ## $at = 41E00000
/* 0016C 80B0B90C 44818000 */ mtc1 $at, $f16 ## $f16 = 28.00
/* 00170 80B0B910 45000006 */ bc1f .L80B0B92C
/* 00174 80B0B914 00000000 */ nop
/* 00178 80B0B918 4610003E */ c.le.s $f0, $f16
/* 0017C 80B0B91C 00000000 */ nop
/* 00180 80B0B920 45000002 */ bc1f .L80B0B92C
/* 00184 80B0B924 00000000 */ nop
/* 00188 80B0B928 24030002 */ addiu $v1, $zero, 0x0002 ## $v1 = 00000002
.L80B0B92C:
/* 0018C 80B0B92C 03E00008 */ jr $ra
/* 00190 80B0B930 00601025 */ or $v0, $v1, $zero ## $v0 = 00000002

View File

@ -1,158 +0,0 @@
glabel EnTuboTrap_HandleImpact
/* 00618 80B25F08 27BDFFD0 */ addiu $sp, $sp, 0xFFD0 ## $sp = FFFFFFD0
/* 0061C 80B25F0C AFBF001C */ sw $ra, 0x001C($sp)
/* 00620 80B25F10 AFB10018 */ sw $s1, 0x0018($sp)
/* 00624 80B25F14 AFB00014 */ sw $s0, 0x0014($sp)
/* 00628 80B25F18 8CA61C44 */ lw $a2, 0x1C44($a1) ## 00001C44
/* 0062C 80B25F1C 00808025 */ or $s0, $a0, $zero ## $s0 = 00000000
/* 00630 80B25F20 00A08825 */ or $s1, $a1, $zero ## $s1 = 00000000
/* 00634 80B25F24 AFA60028 */ sw $a2, 0x0028($sp)
/* 00638 80B25F28 948E0088 */ lhu $t6, 0x0088($a0) ## 00000088
/* 0063C 80B25F2C 3C014170 */ lui $at, 0x4170 ## $at = 41700000
/* 00640 80B25F30 31CF0020 */ andi $t7, $t6, 0x0020 ## $t7 = 00000000
/* 00644 80B25F34 51E00016 */ beql $t7, $zero, .L80B25F90
/* 00648 80B25F38 92020170 */ lbu $v0, 0x0170($s0) ## 00000170
/* 0064C 80B25F3C 44812000 */ mtc1 $at, $f4 ## $f4 = 15.00
/* 00650 80B25F40 C4860084 */ lwc1 $f6, 0x0084($a0) ## 00000084
/* 00654 80B25F44 4606203C */ c.lt.s $f4, $f6
/* 00658 80B25F48 00000000 */ nop
/* 0065C 80B25F4C 45020010 */ bc1fl .L80B25F90
/* 00660 80B25F50 92020170 */ lbu $v0, 0x0170($s0) ## 00000170
/* 00664 80B25F54 0C2C9723 */ jal EnTuboTrap_SpawnEffectsInWater
/* 00668 80B25F58 00000000 */ nop
/* 0066C 80B25F5C 02202025 */ or $a0, $s1, $zero ## $a0 = 00000000
/* 00670 80B25F60 26050024 */ addiu $a1, $s0, 0x0024 ## $a1 = 00000024
/* 00674 80B25F64 24060028 */ addiu $a2, $zero, 0x0028 ## $a2 = 00000028
/* 00678 80B25F68 0C01AEB6 */ jal Audio_PlaySoundAtPosition
/* 0067C 80B25F6C 24072817 */ addiu $a3, $zero, 0x2817 ## $a3 = 00002817
/* 00680 80B25F70 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
/* 00684 80B25F74 0C2C966E */ jal EnTuboTrap_DropCollectible
/* 00688 80B25F78 02202825 */ or $a1, $s1, $zero ## $a1 = 00000000
/* 0068C 80B25F7C 0C00B55C */ jal Actor_Kill
/* 00690 80B25F80 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
/* 00694 80B25F84 10000065 */ beq $zero, $zero, .L80B2611C
/* 00698 80B25F88 8FBF001C */ lw $ra, 0x001C($sp)
/* 0069C 80B25F8C 92020170 */ lbu $v0, 0x0170($s0) ## 00000170
.L80B25F90:
/* 006A0 80B25F90 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
/* 006A4 80B25F94 02202825 */ or $a1, $s1, $zero ## $a1 = 00000000
/* 006A8 80B25F98 30580004 */ andi $t8, $v0, 0x0004 ## $t8 = 00000000
/* 006AC 80B25F9C 13000015 */ beq $t8, $zero, .L80B25FF4
/* 006B0 80B25FA0 3059FFFB */ andi $t9, $v0, 0xFFFB ## $t9 = 00000000
/* 006B4 80B25FA4 0C2C9686 */ jal EnTuboTrap_SpawnEffectsOnLand
/* 006B8 80B25FA8 A2190170 */ sb $t9, 0x0170($s0) ## 00000170
/* 006BC 80B25FAC 26050024 */ addiu $a1, $s0, 0x0024 ## $a1 = 00000024
/* 006C0 80B25FB0 AFA50024 */ sw $a1, 0x0024($sp)
/* 006C4 80B25FB4 02202025 */ or $a0, $s1, $zero ## $a0 = 00000000
/* 006C8 80B25FB8 24060028 */ addiu $a2, $zero, 0x0028 ## $a2 = 00000028
/* 006CC 80B25FBC 0C01AEB6 */ jal Audio_PlaySoundAtPosition
/* 006D0 80B25FC0 24071808 */ addiu $a3, $zero, 0x1808 ## $a3 = 00001808
/* 006D4 80B25FC4 8FA50024 */ lw $a1, 0x0024($sp)
/* 006D8 80B25FC8 02202025 */ or $a0, $s1, $zero ## $a0 = 00000000
/* 006DC 80B25FCC 24060028 */ addiu $a2, $zero, 0x0028 ## $a2 = 00000028
/* 006E0 80B25FD0 0C01AEB6 */ jal Audio_PlaySoundAtPosition
/* 006E4 80B25FD4 24072887 */ addiu $a3, $zero, 0x2887 ## $a3 = 00002887
/* 006E8 80B25FD8 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
/* 006EC 80B25FDC 0C2C966E */ jal EnTuboTrap_DropCollectible
/* 006F0 80B25FE0 02202825 */ or $a1, $s1, $zero ## $a1 = 00000000
/* 006F4 80B25FE4 0C00B55C */ jal Actor_Kill
/* 006F8 80B25FE8 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
/* 006FC 80B25FEC 1000004B */ beq $zero, $zero, .L80B2611C
/* 00700 80B25FF0 8FBF001C */ lw $ra, 0x001C($sp)
.L80B25FF4:
/* 00704 80B25FF4 92030171 */ lbu $v1, 0x0171($s0) ## 00000171
/* 00708 80B25FF8 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
/* 0070C 80B25FFC 304A0002 */ andi $t2, $v0, 0x0002 ## $t2 = 00000000
/* 00710 80B26000 30680002 */ andi $t0, $v1, 0x0002 ## $t0 = 00000000
/* 00714 80B26004 11000016 */ beq $t0, $zero, .L80B26060
/* 00718 80B26008 3069FFFD */ andi $t1, $v1, 0xFFFD ## $t1 = 00000000
/* 0071C 80B2600C A2090171 */ sb $t1, 0x0171($s0) ## 00000171
/* 00720 80B26010 0C2C9686 */ jal EnTuboTrap_SpawnEffectsOnLand
/* 00724 80B26014 02202825 */ or $a1, $s1, $zero ## $a1 = 00000000
/* 00728 80B26018 26050024 */ addiu $a1, $s0, 0x0024 ## $a1 = 00000024
/* 0072C 80B2601C AFA50024 */ sw $a1, 0x0024($sp)
/* 00730 80B26020 02202025 */ or $a0, $s1, $zero ## $a0 = 00000000
/* 00734 80B26024 24060028 */ addiu $a2, $zero, 0x0028 ## $a2 = 00000028
/* 00738 80B26028 0C01AEB6 */ jal Audio_PlaySoundAtPosition
/* 0073C 80B2602C 24072802 */ addiu $a3, $zero, 0x2802 ## $a3 = 00002802
/* 00740 80B26030 8FA50024 */ lw $a1, 0x0024($sp)
/* 00744 80B26034 02202025 */ or $a0, $s1, $zero ## $a0 = 00000000
/* 00748 80B26038 24060028 */ addiu $a2, $zero, 0x0028 ## $a2 = 00000028
/* 0074C 80B2603C 0C01AEB6 */ jal Audio_PlaySoundAtPosition
/* 00750 80B26040 24072887 */ addiu $a3, $zero, 0x2887 ## $a3 = 00002887
/* 00754 80B26044 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
/* 00758 80B26048 0C2C966E */ jal EnTuboTrap_DropCollectible
/* 0075C 80B2604C 02202825 */ or $a1, $s1, $zero ## $a1 = 00000000
/* 00760 80B26050 0C00B55C */ jal Actor_Kill
/* 00764 80B26054 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
/* 00768 80B26058 10000030 */ beq $zero, $zero, .L80B2611C
/* 0076C 80B2605C 8FBF001C */ lw $ra, 0x001C($sp)
.L80B26060:
/* 00770 80B26060 5140001B */ beql $t2, $zero, .L80B260D0
/* 00774 80B26064 96020088 */ lhu $v0, 0x0088($s0) ## 00000088
/* 00778 80B26068 8E0C0164 */ lw $t4, 0x0164($s0) ## 00000164
/* 0077C 80B2606C 304BFFFD */ andi $t3, $v0, 0xFFFD ## $t3 = 00000000
/* 00780 80B26070 A20B0170 */ sb $t3, 0x0170($s0) ## 00000170
/* 00784 80B26074 14CC0015 */ bne $a2, $t4, .L80B260CC
/* 00788 80B26078 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
/* 0078C 80B2607C 0C2C9686 */ jal EnTuboTrap_SpawnEffectsOnLand
/* 00790 80B26080 02202825 */ or $a1, $s1, $zero ## $a1 = 00000000
/* 00794 80B26084 02202025 */ or $a0, $s1, $zero ## $a0 = 00000000
/* 00798 80B26088 26050024 */ addiu $a1, $s0, 0x0024 ## $a1 = 00000024
/* 0079C 80B2608C 24060028 */ addiu $a2, $zero, 0x0028 ## $a2 = 00000028
/* 007A0 80B26090 0C01AEB6 */ jal Audio_PlaySoundAtPosition
/* 007A4 80B26094 24072887 */ addiu $a3, $zero, 0x2887 ## $a3 = 00002887
/* 007A8 80B26098 8FA50028 */ lw $a1, 0x0028($sp)
/* 007AC 80B2609C 02202025 */ or $a0, $s1, $zero ## $a0 = 00000000
/* 007B0 80B260A0 24060028 */ addiu $a2, $zero, 0x0028 ## $a2 = 00000028
/* 007B4 80B260A4 2407083E */ addiu $a3, $zero, 0x083E ## $a3 = 0000083E
/* 007B8 80B260A8 0C01AEB6 */ jal Audio_PlaySoundAtPosition
/* 007BC 80B260AC 24A50024 */ addiu $a1, $a1, 0x0024 ## $a1 = 00000024
/* 007C0 80B260B0 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
/* 007C4 80B260B4 0C2C966E */ jal EnTuboTrap_DropCollectible
/* 007C8 80B260B8 02202825 */ or $a1, $s1, $zero ## $a1 = 00000000
/* 007CC 80B260BC 0C00B55C */ jal Actor_Kill
/* 007D0 80B260C0 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
/* 007D4 80B260C4 10000015 */ beq $zero, $zero, .L80B2611C
/* 007D8 80B260C8 8FBF001C */ lw $ra, 0x001C($sp)
.L80B260CC:
/* 007DC 80B260CC 96020088 */ lhu $v0, 0x0088($s0) ## 00000088
.L80B260D0:
/* 007E0 80B260D0 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
/* 007E4 80B260D4 304D0008 */ andi $t5, $v0, 0x0008 ## $t5 = 00000000
/* 007E8 80B260D8 15A00003 */ bne $t5, $zero, .L80B260E8
/* 007EC 80B260DC 304E0001 */ andi $t6, $v0, 0x0001 ## $t6 = 00000000
/* 007F0 80B260E0 51C0000E */ beql $t6, $zero, .L80B2611C
/* 007F4 80B260E4 8FBF001C */ lw $ra, 0x001C($sp)
.L80B260E8:
/* 007F8 80B260E8 0C2C9686 */ jal EnTuboTrap_SpawnEffectsOnLand
/* 007FC 80B260EC 02202825 */ or $a1, $s1, $zero ## $a1 = 00000000
/* 00800 80B260F0 02202025 */ or $a0, $s1, $zero ## $a0 = 00000000
/* 00804 80B260F4 26050024 */ addiu $a1, $s0, 0x0024 ## $a1 = 00000024
/* 00808 80B260F8 24060028 */ addiu $a2, $zero, 0x0028 ## $a2 = 00000028
/* 0080C 80B260FC 0C01AEB6 */ jal Audio_PlaySoundAtPosition
/* 00810 80B26100 24072887 */ addiu $a3, $zero, 0x2887 ## $a3 = 00002887
/* 00814 80B26104 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
/* 00818 80B26108 0C2C966E */ jal EnTuboTrap_DropCollectible
/* 0081C 80B2610C 02202825 */ or $a1, $s1, $zero ## $a1 = 00000000
/* 00820 80B26110 0C00B55C */ jal Actor_Kill
/* 00824 80B26114 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
/* 00828 80B26118 8FBF001C */ lw $ra, 0x001C($sp)
.L80B2611C:
/* 0082C 80B2611C 8FB00014 */ lw $s0, 0x0014($sp)
/* 00830 80B26120 8FB10018 */ lw $s1, 0x0018($sp)
/* 00834 80B26124 03E00008 */ jr $ra
/* 00838 80B26128 27BD0030 */ addiu $sp, $sp, 0x0030 ## $sp = 00000000

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_80ADD8D0
.incbin "baserom/ovl_En_Po_Sisters", 0x4940, 0x00000480

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_80B0BD20
.incbin "baserom/ovl_En_Stream", 0x580, 0x00000090

View File

@ -1,6 +0,0 @@
.section .rodata
.balign 16
D_80B265E0:
.incbin "baserom/ovl_En_Tubo_Trap", 0xCF0, 0x000000D0

12
spec
View File

@ -2855,11 +2855,7 @@ endseg
beginseg
name "ovl_En_Po_Sisters"
include "build/src/overlays/actors/ovl_En_Po_Sisters/z_en_po_sisters.o"
#ifdef NON_MATCHING
include "build/src/overlays/actors/ovl_En_Po_Sisters/ovl_En_Po_Sisters_reloc.o"
#else
include "build/data/overlays/actors/z_en_po_sisters.reloc.o"
#endif
endseg
beginseg
@ -3007,11 +3003,7 @@ endseg
beginseg
name "ovl_En_Stream"
include "build/src/overlays/actors/ovl_En_Stream/z_en_stream.o"
#ifdef NON_MATCHING
include "build/src/overlays/actors/ovl_En_Stream/ovl_En_Stream_reloc.o"
#else
include "build/data/overlays/actors/z_en_stream.reloc.o"
#endif
endseg
beginseg
@ -3123,11 +3115,7 @@ endseg
beginseg
name "ovl_En_Tubo_Trap"
include "build/src/overlays/actors/ovl_En_Tubo_Trap/z_en_tubo_trap.o"
#ifdef NON_MATCHING
include "build/src/overlays/actors/ovl_En_Tubo_Trap/ovl_En_Tubo_Trap_reloc.o"
#else
include "build/data/overlays/actors/z_en_tubo_trap.reloc.o"
#endif
endseg
beginseg

View File

@ -1304,15 +1304,10 @@ void func_80084BF4(GlobalContext* globalCtx, u16 flag) {
s16 sAmmoRefillCounts[] = { 5, 10, 20, 30, 5, 10, 30, 0, 5, 20, 1, 5, 20, 50, 200, 10 };
#ifdef NON_MATCHING
// regalloc, minor ordering and stack usage differences
u8 Item_Give(GlobalContext* globalCtx, u8 item) {
s16 i;
s16 slot;
s16 oldItem;
s16 bottleSlot;
s16 prevTradeItem;
s8 bombCount;
s16 temp;
slot = SLOT(item);
if (item >= ITEM_STICKS_5) {
@ -1571,16 +1566,12 @@ u8 Item_Give(GlobalContext* globalCtx, u8 item) {
} else if (item == ITEM_BOMB) {
// Translates to: "Bomb Bomb Bomb Bomb Bomb Bomb Bomb"
osSyncPrintf(" 爆弾 爆弾 爆弾 爆弾 爆弾 爆弾 爆弾 \n");
bombCount = AMMO(ITEM_BOMB) + 1;
AMMO(ITEM_BOMB) = bombCount;
if (bombCount > CUR_CAPACITY(UPG_BOMB_BAG)) {
if ((AMMO(ITEM_BOMB) += 1) > CUR_CAPACITY(UPG_BOMB_BAG)) {
AMMO(ITEM_BOMB) = CUR_CAPACITY(UPG_BOMB_BAG);
}
return ITEM_NONE;
} else if ((item >= ITEM_BOMBS_5) && (item <= ITEM_BOMBS_30)) {
bombCount = AMMO(ITEM_BOMB) + sAmmoRefillCounts[item - ITEM_BOMBS_5];
AMMO(ITEM_BOMB) = bombCount;
if (bombCount > CUR_CAPACITY(UPG_BOMB_BAG)) {
if ((AMMO(ITEM_BOMB) += sAmmoRefillCounts[item - ITEM_BOMBS_5]) > CUR_CAPACITY(UPG_BOMB_BAG)) {
AMMO(ITEM_BOMB) = CUR_CAPACITY(UPG_BOMB_BAG);
}
return ITEM_NONE;
@ -1713,50 +1704,52 @@ u8 Item_Give(GlobalContext* globalCtx, u8 item) {
Rupees_ChangeBy(sAmmoRefillCounts[item - ITEM_RUPEE_GREEN + 10]);
return ITEM_NONE;
} else if (item == ITEM_BOTTLE) {
temp = SLOT(item);
for (i = 0; i < 4; i++) {
if (gSaveContext.inventory.items[SLOT(item) + i] == ITEM_NONE) {
gSaveContext.inventory.items[SLOT(item) + i] = item;
if (gSaveContext.inventory.items[temp + i] == ITEM_NONE) {
gSaveContext.inventory.items[temp + i] = item;
return ITEM_NONE;
}
}
} else if (((item >= ITEM_POTION_RED) && (item <= ITEM_POE)) || (item == ITEM_MILK)) {
bottleSlot = SLOT(item);
temp = SLOT(item);
if ((item != ITEM_MILK_BOTTLE) && (item != ITEM_LETTER_RUTO)) {
if (item == ITEM_MILK) {
item = ITEM_MILK_BOTTLE;
bottleSlot = SLOT(item);
temp = SLOT(item);
}
for (i = 0; i < 4; i++) {
if (gSaveContext.inventory.items[bottleSlot + i] == ITEM_BOTTLE) {
if (gSaveContext.inventory.items[temp + i] == ITEM_BOTTLE) {
// Translates to: "Item_Pt(1)=%d Item_Pt(2)=%d Item_Pt(3)=%d Empty Bottle=%d Content=%d"
osSyncPrintf("Item_Pt(1)=%d Item_Pt(2)=%d Item_Pt(3)=%d 空瓶=%d 中味=%d\n",
gSaveContext.equips.cButtonSlots[0], gSaveContext.equips.cButtonSlots[1],
gSaveContext.equips.cButtonSlots[2], bottleSlot + i, item);
gSaveContext.equips.cButtonSlots[2], temp + i, item);
if ((bottleSlot + i) == gSaveContext.equips.cButtonSlots[0]) {
if ((temp + i) == gSaveContext.equips.cButtonSlots[0]) {
gSaveContext.equips.buttonItems[1] = item;
Interface_LoadItemIcon2(globalCtx, 1);
gSaveContext.buttonStatus[1] = BTN_ENABLED;
} else if ((bottleSlot + i) == gSaveContext.equips.cButtonSlots[1]) {
} else if ((temp + i) == gSaveContext.equips.cButtonSlots[1]) {
gSaveContext.equips.buttonItems[2] = item;
Interface_LoadItemIcon2(globalCtx, 2);
gSaveContext.buttonStatus[2] = BTN_ENABLED;
} else if ((bottleSlot + i) == gSaveContext.equips.cButtonSlots[2]) {
} else if ((temp + i) == gSaveContext.equips.cButtonSlots[2]) {
gSaveContext.equips.buttonItems[3] = item;
Interface_LoadItemIcon1(globalCtx, 3);
gSaveContext.buttonStatus[3] = BTN_ENABLED;
}
gSaveContext.inventory.items[bottleSlot + i] = item;
gSaveContext.inventory.items[temp + i] = item;
return ITEM_NONE;
}
}
} else {
for (i = 0; i < 4; i++) {
if (gSaveContext.inventory.items[bottleSlot + i] == ITEM_NONE) {
gSaveContext.inventory.items[bottleSlot + i] = item;
if (gSaveContext.inventory.items[temp + i] == ITEM_NONE) {
gSaveContext.inventory.items[temp + i] = item;
return ITEM_NONE;
}
}
@ -1766,12 +1759,12 @@ u8 Item_Give(GlobalContext* globalCtx, u8 item) {
gSaveContext.itemGetInf[1] |= 0x8000;
}
prevTradeItem = INV_CONTENT(item);
temp = INV_CONTENT(item);
INV_CONTENT(item) = item;
if (prevTradeItem != ITEM_NONE) {
if (temp != ITEM_NONE) {
for (i = 1; i < 4; i++) {
if (prevTradeItem == gSaveContext.equips.buttonItems[i]) {
if (temp == gSaveContext.equips.buttonItems[i]) {
if (item != ITEM_SOLD_OUT) {
gSaveContext.equips.buttonItems[i] = item;
Interface_LoadItemIcon1(globalCtx, i);
@ -1786,20 +1779,17 @@ u8 Item_Give(GlobalContext* globalCtx, u8 item) {
return ITEM_NONE;
}
oldItem = gSaveContext.inventory.items[slot];
osSyncPrintf("Item_Register(%d)=%d %d\n", slot, item, oldItem);
temp = gSaveContext.inventory.items[slot];
osSyncPrintf("Item_Register(%d)=%d %d\n", slot, item, temp);
INV_CONTENT(item) = item;
return oldItem;
return temp;
}
#else
#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/Item_Give.s")
#endif
u8 Item_CheckObtainability(u8 item) {
s16 i;
s16 slot;
s32 bottleSlot;
s32 temp;
slot = SLOT(item);
if (item >= ITEM_STICKS_5) {
@ -1898,22 +1888,22 @@ u8 Item_CheckObtainability(u8 item) {
} else if (item == ITEM_BOTTLE) {
return ITEM_NONE;
} else if (((item >= ITEM_POTION_RED) && (item <= ITEM_POE)) || (item == ITEM_MILK)) {
bottleSlot = SLOT(item);
temp = SLOT(item);
if ((item != ITEM_MILK_BOTTLE) && (item != ITEM_LETTER_RUTO)) {
if (item == ITEM_MILK) {
item = ITEM_MILK_BOTTLE;
bottleSlot = SLOT(item);
temp = SLOT(item);
}
for (i = 0; i < 4; i++) {
if (gSaveContext.inventory.items[bottleSlot + i] == ITEM_BOTTLE) {
if (gSaveContext.inventory.items[temp + i] == ITEM_BOTTLE) {
return ITEM_NONE;
}
}
} else {
for (i = 0; i < 4; i++) {
if (gSaveContext.inventory.items[bottleSlot + i] == ITEM_NONE) {
if (gSaveContext.inventory.items[temp + i] == ITEM_NONE) {
return ITEM_NONE;
}
}
@ -3055,6 +3045,13 @@ u16 D_80125B54 = 0xC220; // unused
u16 D_80125B58 = 0xC20C; // unused
s16 D_80125B5C[] = { 91, 91 }; // unused
// Due to an unknown reason, bss ordering changes within the 5 static variables in the function below.
// In order to restore the correct order, we need a specific number of bss variables in the file before that point.
// For this, we introduce 3 dummy variables which end up in padding at the end of the file's bss, so they don't actually take space.
s8 sBssDummy1;
s8 sBssDummy2;
s8 sBssDummy3;
#ifdef NON_MATCHING
// mostly regalloc, minor ordering and stack usage differences
void Interface_Draw(GlobalContext* globalCtx) {

View File

@ -524,8 +524,6 @@ void func_80ADA2BC(EnPoSisters* this, GlobalContext* globalCtx) {
this->actionFunc = func_80ADBF58;
}
#ifdef NON_MATCHING
// Single register swap
void func_80ADA35C(EnPoSisters* this, GlobalContext* globalCtx) {
f32 targetY;
Player* player = PLAYER;
@ -538,11 +536,11 @@ void func_80ADA35C(EnPoSisters* this, GlobalContext* globalCtx) {
targetY = 832.0f;
}
Math_SmoothScaleMaxF(&this->actor.posRot.pos.y, targetY, 0.5f, 3.0f);
if (this->unk_196 == 0) {
if (!this->unk_196) {
this->unk_196 = 32;
}
if (this->unk_196 != 0U) { // U improves codegen from missing move + regalloc to just regalloc
this->unk_196 -= 1U;
if (this->unk_196 != 0) {
this->unk_196--;
}
this->actor.posRot.pos.y += (2.0f + 0.5f * Math_Rand_ZeroOne()) * Math_Sins(this->unk_196 * 0x800);
if (this->unk_22E.a == 255 && this->actionFunc != func_80ADA8C0 && this->actionFunc != func_80ADA7F0) {
@ -553,9 +551,6 @@ void func_80ADA35C(EnPoSisters* this, GlobalContext* globalCtx) {
}
}
}
#else
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Po_Sisters/func_80ADA35C.s")
#endif
void func_80ADA4A8(EnPoSisters* this, GlobalContext* globalCtx) {
SkelAnime_FrameUpdateMatrix(&this->skelAnime);

View File

@ -52,34 +52,35 @@ void EnStream_Init(Actor* thisx, GlobalContext* globalCtx) {
void EnStream_Destroy(Actor* thisx, GlobalContext* globalCtx) {
}
#ifdef NON_MATCHING
// regalloc differences, checks if the player is range of the vortex
// Checks if the player is in range of the vortex
s32 func_80B0B81C(Vec3f* vortexPosRot, Vec3f* playerPosRot, Vec3f* posDifference, f32 vortexYScale) {
s32 ret = 0;
f32 smallConstant = 28;
f32 lowerBounds = 0 * vortexYScale * 50;
f32 upperBounds = 160 * vortexYScale * 50;
f32 smallConstant = 28.0f;
f32 upperBounds = 160 * vortexYScale * 50.0f;
f32 lowerBounds = 0 * vortexYScale * 50.0f;
f32 xzDist;
f32 range;
posDifference->x = playerPosRot->x - vortexPosRot->x;
posDifference->y = playerPosRot->y - vortexPosRot->y;
posDifference->z = playerPosRot->z - vortexPosRot->z;
xzDist = sqrtf(SQ(posDifference->x) + SQ(posDifference->z));
if (lowerBounds <= posDifference->y && posDifference->y <= upperBounds) {
posDifference->y = posDifference->y - lowerBounds;
if (xzDist <= (((75 - smallConstant) * (posDifference->y / (upperBounds - lowerBounds))) + 28)) {
posDifference->y -= lowerBounds;
range = ((75.0f - smallConstant) * (posDifference->y / (upperBounds - lowerBounds))) + 28.0f;
if (xzDist <= range) {
ret = 1;
}
}
if ((posDifference->y <= lowerBounds) && (xzDist <= 28)) {
if ((posDifference->y <= lowerBounds) && (xzDist <= 28.0f)) {
ret = 2;
}
return ret;
}
#else
s32 func_80B0B81C(Vec3f* vortexPos, Vec3f* playerPos, Vec3f* posDifference, f32 vortexYScale);
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Stream/func_80B0B81C.s")
#endif
void EnStream_SuckPlayer(EnStream* this, GlobalContext* globalCtx) {
Player* player = PLAYER;

View File

@ -156,10 +156,9 @@ void EnTuboTrap_SpawnEffectsInWater(EnTuboTrap* this, GlobalContext* globalCtx)
}
}
#ifdef NON_MATCHING
void EnTuboTrap_HandleImpact(EnTuboTrap* this, GlobalContext* globalCtx) {
s32 pad;
Player* player = PLAYER;
Player* player2 = PLAYER;
if ((this->actor.bgCheckFlags & 0x20) && (this->actor.waterY > 15.0f)) {
EnTuboTrap_SpawnEffectsInWater(this, globalCtx);
@ -194,7 +193,7 @@ void EnTuboTrap_HandleImpact(EnTuboTrap* this, GlobalContext* globalCtx) {
if (this->collider.base.at == &player->actor) {
EnTuboTrap_SpawnEffectsOnLand(this, globalCtx);
Audio_PlaySoundAtPosition(globalCtx, &this->actor.posRot.pos, 40, NA_SE_EV_POT_BROKEN);
Audio_PlaySoundAtPosition(globalCtx, &player->actor.posRot.pos, 40, NA_SE_PL_BODY_HIT);
Audio_PlaySoundAtPosition(globalCtx, &player2->actor.posRot.pos, 40, NA_SE_PL_BODY_HIT);
EnTuboTrap_DropCollectible(this, globalCtx);
Actor_Kill(&this->actor);
return;
@ -209,9 +208,6 @@ void EnTuboTrap_HandleImpact(EnTuboTrap* this, GlobalContext* globalCtx) {
return;
}
}
#else
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Tubo_Trap/EnTuboTrap_HandleImpact.s")
#endif
void EnTuboTrap_WaitForProximity(EnTuboTrap* this, GlobalContext* globalCtx) {
Player* player = PLAYER;