1
0
mirror of https://github.com/blawar/ooot.git synced 2024-07-02 09:03:36 +00:00

Merge pull request #32 from ethteck/ovl_Bg_Spot09_Obj

Decompiled ovl_Bg_Spot09_Obj
This commit is contained in:
fig02 2020-03-24 18:27:40 -04:00 committed by GitHub
commit 00f10c9f71
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
19 changed files with 202 additions and 466 deletions

View File

@ -1,19 +0,0 @@
glabel BgSpot09Obj_Destroy
/* 0035C 808B1E3C 27BDFFE8 */ addiu $sp, $sp, 0xFFE8 ## $sp = FFFFFFE8
/* 00360 808B1E40 AFBF0014 */ sw $ra, 0x0014($sp)
/* 00364 808B1E44 AFA40018 */ sw $a0, 0x0018($sp)
/* 00368 808B1E48 848F001C */ lh $t7, 0x001C($a0) ## 0000001C
/* 0036C 808B1E4C 00807025 */ or $t6, $a0, $zero ## $t6 = 00000000
/* 00370 808B1E50 00A02025 */ or $a0, $a1, $zero ## $a0 = 00000000
/* 00374 808B1E54 11E00003 */ beq $t7, $zero, .L808B1E64
/* 00378 808B1E58 24A50810 */ addiu $a1, $a1, 0x0810 ## $a1 = 00000810
/* 0037C 808B1E5C 0C00FB56 */ jal DynaPolyInfo_Free
## DynaPolyInfo_delReserve
/* 00380 808B1E60 8DC6014C */ lw $a2, 0x014C($t6) ## 0000014C
.L808B1E64:
/* 00384 808B1E64 8FBF0014 */ lw $ra, 0x0014($sp)
/* 00388 808B1E68 27BD0018 */ addiu $sp, $sp, 0x0018 ## $sp = 00000000
/* 0038C 808B1E6C 03E00008 */ jr $ra
/* 00390 808B1E70 00000000 */ nop

View File

@ -1,64 +0,0 @@
glabel BgSpot09Obj_Draw
/* 003A0 808B1E80 27BDFFC0 */ addiu $sp, $sp, 0xFFC0 ## $sp = FFFFFFC0
/* 003A4 808B1E84 AFB00014 */ sw $s0, 0x0014($sp)
/* 003A8 808B1E88 00808025 */ or $s0, $a0, $zero ## $s0 = 00000000
/* 003AC 808B1E8C AFBF001C */ sw $ra, 0x001C($sp)
/* 003B0 808B1E90 AFB10018 */ sw $s1, 0x0018($sp)
/* 003B4 808B1E94 860E001C */ lh $t6, 0x001C($s0) ## 0000001C
/* 003B8 808B1E98 00A08825 */ or $s1, $a1, $zero ## $s1 = 00000000
/* 003BC 808B1E9C 00A02025 */ or $a0, $a1, $zero ## $a0 = 00000000
/* 003C0 808B1EA0 3C05808B */ lui $a1, %hi(D_808B1FC8) ## $a1 = 808B0000
/* 003C4 808B1EA4 000E7880 */ sll $t7, $t6, 2
/* 003C8 808B1EA8 00AF2821 */ addu $a1, $a1, $t7
/* 003CC 808B1EAC 0C00D498 */ jal Draw_DListOpa
/* 003D0 808B1EB0 8CA51FC8 */ lw $a1, %lo(D_808B1FC8)($a1)
/* 003D4 808B1EB4 8618001C */ lh $t8, 0x001C($s0) ## 0000001C
/* 003D8 808B1EB8 24010003 */ addiu $at, $zero, 0x0003 ## $at = 00000003
/* 003DC 808B1EBC 27A4002C */ addiu $a0, $sp, 0x002C ## $a0 = FFFFFFEC
/* 003E0 808B1EC0 17010024 */ bne $t8, $at, .L808B1F54
/* 003E4 808B1EC4 3C06808B */ lui $a2, %hi(D_808B207C) ## $a2 = 808B0000
/* 003E8 808B1EC8 8E250000 */ lw $a1, 0x0000($s1) ## 00000000
/* 003EC 808B1ECC 24C6207C */ addiu $a2, $a2, %lo(D_808B207C) ## $a2 = 808B207C
/* 003F0 808B1ED0 24070184 */ addiu $a3, $zero, 0x0184 ## $a3 = 00000184
/* 003F4 808B1ED4 0C031AB1 */ jal func_800C6AC4
/* 003F8 808B1ED8 00A08025 */ or $s0, $a1, $zero ## $s0 = 00000000
/* 003FC 808B1EDC 0C024F61 */ jal func_80093D84
/* 00400 808B1EE0 8E240000 */ lw $a0, 0x0000($s1) ## 00000000
/* 00404 808B1EE4 8E0202D0 */ lw $v0, 0x02D0($s0) ## 000002D0
/* 00408 808B1EE8 3C08DA38 */ lui $t0, 0xDA38 ## $t0 = DA380000
/* 0040C 808B1EEC 35080003 */ ori $t0, $t0, 0x0003 ## $t0 = DA380003
/* 00410 808B1EF0 24590008 */ addiu $t9, $v0, 0x0008 ## $t9 = 00000008
/* 00414 808B1EF4 AE1902D0 */ sw $t9, 0x02D0($s0) ## 000002D0
/* 00418 808B1EF8 AC480000 */ sw $t0, 0x0000($v0) ## 00000000
/* 0041C 808B1EFC 8E240000 */ lw $a0, 0x0000($s1) ## 00000000
/* 00420 808B1F00 3C05808B */ lui $a1, %hi(D_808B2094) ## $a1 = 808B0000
/* 00424 808B1F04 24A52094 */ addiu $a1, $a1, %lo(D_808B2094) ## $a1 = 808B2094
/* 00428 808B1F08 24060187 */ addiu $a2, $zero, 0x0187 ## $a2 = 00000187
/* 0042C 808B1F0C 0C0346A2 */ jal Matrix_NewMtx
/* 00430 808B1F10 AFA20028 */ sw $v0, 0x0028($sp)
/* 00434 808B1F14 8FA30028 */ lw $v1, 0x0028($sp)
/* 00438 808B1F18 3C0B0601 */ lui $t3, 0x0601 ## $t3 = 06010000
/* 0043C 808B1F1C 256B8010 */ addiu $t3, $t3, 0x8010 ## $t3 = 06008010
/* 00440 808B1F20 AC620004 */ sw $v0, 0x0004($v1) ## 00000004
/* 00444 808B1F24 8E0202D0 */ lw $v0, 0x02D0($s0) ## 000002D0
/* 00448 808B1F28 3C0ADE00 */ lui $t2, 0xDE00 ## $t2 = DE000000
/* 0044C 808B1F2C 3C06808B */ lui $a2, %hi(D_808B20AC) ## $a2 = 808B0000
/* 00450 808B1F30 24490008 */ addiu $t1, $v0, 0x0008 ## $t1 = 00000008
/* 00454 808B1F34 AE0902D0 */ sw $t1, 0x02D0($s0) ## 000002D0
/* 00458 808B1F38 AC4B0004 */ sw $t3, 0x0004($v0) ## 00000004
/* 0045C 808B1F3C AC4A0000 */ sw $t2, 0x0000($v0) ## 00000000
/* 00460 808B1F40 8E250000 */ lw $a1, 0x0000($s1) ## 00000000
/* 00464 808B1F44 24C620AC */ addiu $a2, $a2, %lo(D_808B20AC) ## $a2 = 808B20AC
/* 00468 808B1F48 27A4002C */ addiu $a0, $sp, 0x002C ## $a0 = FFFFFFEC
/* 0046C 808B1F4C 0C031AD5 */ jal func_800C6B54
/* 00470 808B1F50 2407018C */ addiu $a3, $zero, 0x018C ## $a3 = 0000018C
.L808B1F54:
/* 00474 808B1F54 8FBF001C */ lw $ra, 0x001C($sp)
/* 00478 808B1F58 8FB00014 */ lw $s0, 0x0014($sp)
/* 0047C 808B1F5C 8FB10018 */ lw $s1, 0x0018($sp)
/* 00480 808B1F60 03E00008 */ jr $ra
/* 00484 808B1F64 27BD0040 */ addiu $sp, $sp, 0x0040 ## $sp = 00000000
/* 00488 808B1F68 00000000 */ nop
/* 0048C 808B1F6C 00000000 */ nop

View File

@ -1,57 +0,0 @@
glabel BgSpot09Obj_Init
/* 002A4 808B1D84 27BDFFE0 */ addiu $sp, $sp, 0xFFE0 ## $sp = FFFFFFE0
/* 002A8 808B1D88 AFB00018 */ sw $s0, 0x0018($sp)
/* 002AC 808B1D8C 3C068016 */ lui $a2, 0x8016 ## $a2 = 80160000
/* 002B0 808B1D90 94C6F546 */ lhu $a2, -0x0ABA($a2) ## 8015F546
/* 002B4 808B1D94 00808025 */ or $s0, $a0, $zero ## $s0 = 00000000
/* 002B8 808B1D98 AFBF001C */ sw $ra, 0x001C($sp)
/* 002BC 808B1D9C AFA50024 */ sw $a1, 0x0024($sp)
/* 002C0 808B1DA0 3C04808B */ lui $a0, %hi(D_808B1FE0) ## $a0 = 808B0000
/* 002C4 808B1DA4 24841FE0 */ addiu $a0, $a0, %lo(D_808B1FE0) ## $a0 = 808B1FE0
/* 002C8 808B1DA8 8605001C */ lh $a1, 0x001C($s0) ## 0000001C
/* 002CC 808B1DAC 0C00084C */ jal osSyncPrintf
/* 002D0 808B1DB0 30C6000F */ andi $a2, $a2, 0x000F ## $a2 = 00000000
/* 002D4 808B1DB4 860E001C */ lh $t6, 0x001C($s0) ## 0000001C
/* 002D8 808B1DB8 3C04808B */ lui $a0, %hi(D_808B2018) ## $a0 = 808B0000
/* 002DC 808B1DBC 3C05808B */ lui $a1, %hi(D_808B2064) ## $a1 = 808B0000
/* 002E0 808B1DC0 31CF00FF */ andi $t7, $t6, 0x00FF ## $t7 = 00000000
/* 002E4 808B1DC4 A60F001C */ sh $t7, 0x001C($s0) ## 0000001C
/* 002E8 808B1DC8 8607001C */ lh $a3, 0x001C($s0) ## 0000001C
/* 002EC 808B1DCC 24A52064 */ addiu $a1, $a1, %lo(D_808B2064) ## $a1 = 808B2064
/* 002F0 808B1DD0 24842018 */ addiu $a0, $a0, %lo(D_808B2018) ## $a0 = 808B2018
/* 002F4 808B1DD4 04E00003 */ bltz $a3, .L808B1DE4
/* 002F8 808B1DD8 28E10005 */ slti $at, $a3, 0x0005
/* 002FC 808B1DDC 54200004 */ bnel $at, $zero, .L808B1DF0
/* 00300 808B1DE0 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
.L808B1DE4:
/* 00304 808B1DE4 0C00084C */ jal osSyncPrintf
/* 00308 808B1DE8 24060142 */ addiu $a2, $zero, 0x0142 ## $a2 = 00000142
/* 0030C 808B1DEC 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
.L808B1DF0:
/* 00310 808B1DF0 0C22C71C */ jal func_808B1C70
/* 00314 808B1DF4 8FA50024 */ lw $a1, 0x0024($sp)
/* 00318 808B1DF8 14400005 */ bne $v0, $zero, .L808B1E10
/* 0031C 808B1DFC 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
/* 00320 808B1E00 0C00B55C */ jal Actor_Kill
/* 00324 808B1E04 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
/* 00328 808B1E08 10000008 */ beq $zero, $zero, .L808B1E2C
/* 0032C 808B1E0C 8FBF001C */ lw $ra, 0x001C($sp)
.L808B1E10:
/* 00330 808B1E10 0C22C751 */ jal func_808B1D44
/* 00334 808B1E14 8FA50024 */ lw $a1, 0x0024($sp)
/* 00338 808B1E18 54400004 */ bnel $v0, $zero, .L808B1E2C
/* 0033C 808B1E1C 8FBF001C */ lw $ra, 0x001C($sp)
/* 00340 808B1E20 0C00B55C */ jal Actor_Kill
/* 00344 808B1E24 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
/* 00348 808B1E28 8FBF001C */ lw $ra, 0x001C($sp)
.L808B1E2C:
/* 0034C 808B1E2C 8FB00018 */ lw $s0, 0x0018($sp)
/* 00350 808B1E30 27BD0020 */ addiu $sp, $sp, 0x0020 ## $sp = 00000000
/* 00354 808B1E34 03E00008 */ jr $ra
/* 00358 808B1E38 00000000 */ nop

View File

@ -1,6 +0,0 @@
glabel BgSpot09Obj_Update
/* 00394 808B1E74 AFA40000 */ sw $a0, 0x0000($sp)
/* 00398 808B1E78 03E00008 */ jr $ra
/* 0039C 808B1E7C AFA50004 */ sw $a1, 0x0004($sp)

View File

@ -1,62 +0,0 @@
glabel func_808B1AE0
/* 00000 808B1AE0 3C028016 */ lui $v0, 0x8016 ## $v0 = 80160000
/* 00004 808B1AE4 2442E660 */ addiu $v0, $v0, 0xE660 ## $v0 = 8015E660
/* 00008 808B1AE8 8C4E1360 */ lw $t6, 0x1360($v0) ## 8015F9C0
/* 0000C 808B1AEC AFA50004 */ sw $a1, 0x0004($sp)
/* 00010 808B1AF0 29C10004 */ slti $at, $t6, 0x0004
/* 00014 808B1AF4 54200005 */ bnel $at, $zero, .L808B1B0C
/* 00018 808B1AF8 94430EE6 */ lhu $v1, 0x0EE6($v0) ## 8015F546
/* 0001C 808B1AFC 8482001C */ lh $v0, 0x001C($a0) ## 0000001C
/* 00020 808B1B00 03E00008 */ jr $ra
/* 00024 808B1B04 2C420001 */ sltiu $v0, $v0, 0x0001
.L808B1B08:
/* 00028 808B1B08 94430EE6 */ lhu $v1, 0x0EE6($v0) ## 8015F546
.L808B1B0C:
/* 0002C 808B1B0C 8C4F0004 */ lw $t7, 0x0004($v0) ## 8015E664
/* 00030 808B1B10 24010011 */ addiu $at, $zero, 0x0011 ## $at = 00000011
/* 00034 808B1B14 3063000F */ andi $v1, $v1, 0x000F ## $v1 = 00000000
/* 00038 808B1B18 3863000F */ xori $v1, $v1, 0x000F ## $v1 = 0000000F
/* 0003C 808B1B1C 11E00003 */ beq $t7, $zero, .L808B1B2C
/* 00040 808B1B20 2C630001 */ sltiu $v1, $v1, 0x0001
/* 00044 808B1B24 10000002 */ beq $zero, $zero, .L808B1B30
/* 00048 808B1B28 24020005 */ addiu $v0, $zero, 0x0005 ## $v0 = 00000005
.L808B1B2C:
/* 0004C 808B1B2C 24020011 */ addiu $v0, $zero, 0x0011 ## $v0 = 00000011
.L808B1B30:
/* 00050 808B1B30 54410016 */ bnel $v0, $at, .L808B1B8C
/* 00054 808B1B34 8482001C */ lh $v0, 0x001C($a0) ## 0000001C
/* 00058 808B1B38 8482001C */ lh $v0, 0x001C($a0) ## 0000001C
/* 0005C 808B1B3C 24010001 */ addiu $at, $zero, 0x0001 ## $at = 00000001
/* 00060 808B1B40 10400009 */ beq $v0, $zero, .L808B1B68
/* 00064 808B1B44 00000000 */ nop
/* 00068 808B1B48 10410009 */ beq $v0, $at, .L808B1B70
/* 0006C 808B1B4C 24010003 */ addiu $at, $zero, 0x0003 ## $at = 00000003
/* 00070 808B1B50 1041000B */ beq $v0, $at, .L808B1B80
/* 00074 808B1B54 24010004 */ addiu $at, $zero, 0x0004 ## $at = 00000004
/* 00078 808B1B58 10410007 */ beq $v0, $at, .L808B1B78
/* 0007C 808B1B5C 00000000 */ nop
/* 00080 808B1B60 1000000D */ beq $zero, $zero, .L808B1B98
/* 00084 808B1B64 00001025 */ or $v0, $zero, $zero ## $v0 = 00000000
.L808B1B68:
/* 00088 808B1B68 03E00008 */ jr $ra
/* 0008C 808B1B6C 00001025 */ or $v0, $zero, $zero ## $v0 = 00000000
.L808B1B70:
/* 00090 808B1B70 03E00008 */ jr $ra
/* 00094 808B1B74 2C620001 */ sltiu $v0, $v1, 0x0001
.L808B1B78:
/* 00098 808B1B78 03E00008 */ jr $ra
/* 0009C 808B1B7C 00601025 */ or $v0, $v1, $zero ## $v0 = 0000000F
.L808B1B80:
/* 000A0 808B1B80 03E00008 */ jr $ra
/* 000A4 808B1B84 24020001 */ addiu $v0, $zero, 0x0001 ## $v0 = 00000001
.L808B1B88:
/* 000A8 808B1B88 8482001C */ lh $v0, 0x001C($a0) ## 0000001C
.L808B1B8C:
/* 000AC 808B1B8C 38420002 */ xori $v0, $v0, 0x0002 ## $v0 = 00000003
/* 000B0 808B1B90 03E00008 */ jr $ra
/* 000B4 808B1B94 2C420001 */ sltiu $v0, $v0, 0x0001
.L808B1B98:
/* 000B8 808B1B98 03E00008 */ jr $ra
/* 000BC 808B1B9C 00000000 */ nop

View File

@ -1,26 +0,0 @@
glabel func_808B1BA0
/* 000C0 808B1BA0 27BDFFE8 */ addiu $sp, $sp, 0xFFE8 ## $sp = FFFFFFE8
/* 000C4 808B1BA4 AFBF0014 */ sw $ra, 0x0014($sp)
/* 000C8 808B1BA8 AFA5001C */ sw $a1, 0x001C($sp)
/* 000CC 808B1BAC 848E001C */ lh $t6, 0x001C($a0) ## 0000001C
/* 000D0 808B1BB0 24010003 */ addiu $at, $zero, 0x0003 ## $at = 00000003
/* 000D4 808B1BB4 3C053DCC */ lui $a1, 0x3DCC ## $a1 = 3DCC0000
/* 000D8 808B1BB8 15C10005 */ bne $t6, $at, .L808B1BD0
/* 000DC 808B1BBC 00000000 */ nop
/* 000E0 808B1BC0 0C00B58B */ jal Actor_SetScale
/* 000E4 808B1BC4 34A5CCCD */ ori $a1, $a1, 0xCCCD ## $a1 = 3DCCCCCD
/* 000E8 808B1BC8 10000004 */ beq $zero, $zero, .L808B1BDC
/* 000EC 808B1BCC 8FBF0014 */ lw $ra, 0x0014($sp)
.L808B1BD0:
/* 000F0 808B1BD0 0C00B58B */ jal Actor_SetScale
/* 000F4 808B1BD4 3C053F80 */ lui $a1, 0x3F80 ## $a1 = 3F800000
/* 000F8 808B1BD8 8FBF0014 */ lw $ra, 0x0014($sp)
.L808B1BDC:
/* 000FC 808B1BDC 27BD0018 */ addiu $sp, $sp, 0x0018 ## $sp = 00000000
/* 00100 808B1BE0 24020001 */ addiu $v0, $zero, 0x0001 ## $v0 = 00000001
/* 00104 808B1BE4 03E00008 */ jr $ra
/* 00108 808B1BE8 00000000 */ nop

View File

@ -1,40 +0,0 @@
glabel func_808B1BEC
/* 0010C 808B1BEC 27BDFFD0 */ addiu $sp, $sp, 0xFFD0 ## $sp = FFFFFFD0
/* 00110 808B1BF0 AFBF001C */ sw $ra, 0x001C($sp)
/* 00114 808B1BF4 AFB00018 */ sw $s0, 0x0018($sp)
/* 00118 808B1BF8 AFA50034 */ sw $a1, 0x0034($sp)
/* 0011C 808B1BFC AFA00028 */ sw $zero, 0x0028($sp)
/* 00120 808B1C00 848E001C */ lh $t6, 0x001C($a0) ## 0000001C
/* 00124 808B1C04 3C18808B */ lui $t8, %hi(D_808B1F90) ## $t8 = 808B0000
/* 00128 808B1C08 00808025 */ or $s0, $a0, $zero ## $s0 = 00000000
/* 0012C 808B1C0C 000E7880 */ sll $t7, $t6, 2
/* 00130 808B1C10 030FC021 */ addu $t8, $t8, $t7
/* 00134 808B1C14 8F181F90 */ lw $t8, %lo(D_808B1F90)($t8)
/* 00138 808B1C18 53000011 */ beql $t8, $zero, .L808B1C60
/* 0013C 808B1C1C 8FBF001C */ lw $ra, 0x001C($sp)
/* 00140 808B1C20 0C010D20 */ jal DynaPolyInfo_SetActorMove
/* 00144 808B1C24 00002825 */ or $a1, $zero, $zero ## $a1 = 00000000
/* 00148 808B1C28 8619001C */ lh $t9, 0x001C($s0) ## 0000001C
/* 0014C 808B1C2C 3C04808B */ lui $a0, %hi(D_808B1F90) ## $a0 = 808B0000
/* 00150 808B1C30 27A50028 */ addiu $a1, $sp, 0x0028 ## $a1 = FFFFFFF8
/* 00154 808B1C34 00194080 */ sll $t0, $t9, 2
/* 00158 808B1C38 00882021 */ addu $a0, $a0, $t0
/* 0015C 808B1C3C 0C010620 */ jal DynaPolyInfo_Alloc
/* 00160 808B1C40 8C841F90 */ lw $a0, %lo(D_808B1F90)($a0)
/* 00164 808B1C44 8FA40034 */ lw $a0, 0x0034($sp)
/* 00168 808B1C48 02003025 */ or $a2, $s0, $zero ## $a2 = 00000000
/* 0016C 808B1C4C 8FA70028 */ lw $a3, 0x0028($sp)
/* 00170 808B1C50 0C00FA9D */ jal DynaPolyInfo_RegisterActor
## DynaPolyInfo_setActor
/* 00174 808B1C54 24850810 */ addiu $a1, $a0, 0x0810 ## $a1 = 00000810
/* 00178 808B1C58 AE02014C */ sw $v0, 0x014C($s0) ## 0000014C
/* 0017C 808B1C5C 8FBF001C */ lw $ra, 0x001C($sp)
.L808B1C60:
/* 00180 808B1C60 8FB00018 */ lw $s0, 0x0018($sp)
/* 00184 808B1C64 27BD0030 */ addiu $sp, $sp, 0x0030 ## $sp = 00000000
/* 00188 808B1C68 03E00008 */ jr $ra
/* 0018C 808B1C6C 24020001 */ addiu $v0, $zero, 0x0001 ## $v0 = 00000001

View File

@ -1,37 +0,0 @@
glabel func_808B1C70
/* 00190 808B1C70 27BDFFD8 */ addiu $sp, $sp, 0xFFD8 ## $sp = FFFFFFD8
/* 00194 808B1C74 AFB30020 */ sw $s3, 0x0020($sp)
/* 00198 808B1C78 AFB00014 */ sw $s0, 0x0014($sp)
/* 0019C 808B1C7C AFB2001C */ sw $s2, 0x001C($sp)
/* 001A0 808B1C80 AFB10018 */ sw $s1, 0x0018($sp)
/* 001A4 808B1C84 3C10808B */ lui $s0, %hi(D_808B1FA4) ## $s0 = 808B0000
/* 001A8 808B1C88 3C13808B */ lui $s3, %hi(D_808B1FB0) ## $s3 = 808B0000
/* 001AC 808B1C8C 00808825 */ or $s1, $a0, $zero ## $s1 = 00000000
/* 001B0 808B1C90 00A09025 */ or $s2, $a1, $zero ## $s2 = 00000000
/* 001B4 808B1C94 AFBF0024 */ sw $ra, 0x0024($sp)
/* 001B8 808B1C98 26731FB0 */ addiu $s3, $s3, %lo(D_808B1FB0) ## $s3 = 808B1FB0
/* 001BC 808B1C9C 26101FA4 */ addiu $s0, $s0, %lo(D_808B1FA4) ## $s0 = 808B1FA4
/* 001C0 808B1CA0 8E190000 */ lw $t9, 0x0000($s0) ## 808B1FA4
.L808B1CA4:
/* 001C4 808B1CA4 02202025 */ or $a0, $s1, $zero ## $a0 = 00000000
/* 001C8 808B1CA8 02402825 */ or $a1, $s2, $zero ## $a1 = 00000000
/* 001CC 808B1CAC 0320F809 */ jalr $ra, $t9
/* 001D0 808B1CB0 00000000 */ nop
/* 001D4 808B1CB4 14400003 */ bne $v0, $zero, .L808B1CC4
/* 001D8 808B1CB8 26100004 */ addiu $s0, $s0, 0x0004 ## $s0 = 808B1FA8
/* 001DC 808B1CBC 10000004 */ beq $zero, $zero, .L808B1CD0
/* 001E0 808B1CC0 00001025 */ or $v0, $zero, $zero ## $v0 = 00000000
.L808B1CC4:
/* 001E4 808B1CC4 5613FFF7 */ bnel $s0, $s3, .L808B1CA4
/* 001E8 808B1CC8 8E190000 */ lw $t9, 0x0000($s0) ## 808B1FA8
/* 001EC 808B1CCC 24020001 */ addiu $v0, $zero, 0x0001 ## $v0 = 00000001
.L808B1CD0:
/* 001F0 808B1CD0 8FBF0024 */ lw $ra, 0x0024($sp)
/* 001F4 808B1CD4 8FB00014 */ lw $s0, 0x0014($sp)
/* 001F8 808B1CD8 8FB10018 */ lw $s1, 0x0018($sp)
/* 001FC 808B1CDC 8FB2001C */ lw $s2, 0x001C($sp)
/* 00200 808B1CE0 8FB30020 */ lw $s3, 0x0020($sp)
/* 00204 808B1CE4 03E00008 */ jr $ra
/* 00208 808B1CE8 27BD0028 */ addiu $sp, $sp, 0x0028 ## $sp = 00000000

View File

@ -1,15 +0,0 @@
glabel func_808B1CEC
/* 0020C 808B1CEC 27BDFFE8 */ addiu $sp, $sp, 0xFFE8 ## $sp = FFFFFFE8
/* 00210 808B1CF0 AFA5001C */ sw $a1, 0x001C($sp)
/* 00214 808B1CF4 AFBF0014 */ sw $ra, 0x0014($sp)
/* 00218 808B1CF8 3C05808B */ lui $a1, %hi(D_808B1FB0) ## $a1 = 808B0000
/* 0021C 808B1CFC 0C01E037 */ jal Actor_ProcessInitChain
/* 00220 808B1D00 24A51FB0 */ addiu $a1, $a1, %lo(D_808B1FB0) ## $a1 = 808B1FB0
/* 00224 808B1D04 8FBF0014 */ lw $ra, 0x0014($sp)
/* 00228 808B1D08 27BD0018 */ addiu $sp, $sp, 0x0018 ## $sp = 00000000
/* 0022C 808B1D0C 24020001 */ addiu $v0, $zero, 0x0001 ## $v0 = 00000001
/* 00230 808B1D10 03E00008 */ jr $ra
/* 00234 808B1D14 00000000 */ nop

View File

@ -1,15 +0,0 @@
glabel func_808B1D18
/* 00238 808B1D18 27BDFFE8 */ addiu $sp, $sp, 0xFFE8 ## $sp = FFFFFFE8
/* 0023C 808B1D1C AFA5001C */ sw $a1, 0x001C($sp)
/* 00240 808B1D20 AFBF0014 */ sw $ra, 0x0014($sp)
/* 00244 808B1D24 3C05808B */ lui $a1, %hi(D_808B1FBC) ## $a1 = 808B0000
/* 00248 808B1D28 0C01E037 */ jal Actor_ProcessInitChain
/* 0024C 808B1D2C 24A51FBC */ addiu $a1, $a1, %lo(D_808B1FBC) ## $a1 = 808B1FBC
/* 00250 808B1D30 8FBF0014 */ lw $ra, 0x0014($sp)
/* 00254 808B1D34 27BD0018 */ addiu $sp, $sp, 0x0018 ## $sp = 00000000
/* 00258 808B1D38 24020001 */ addiu $v0, $zero, 0x0001 ## $v0 = 00000001
/* 0025C 808B1D3C 03E00008 */ jr $ra
/* 00260 808B1D40 00000000 */ nop

View File

@ -1,21 +0,0 @@
glabel func_808B1D44
/* 00264 808B1D44 27BDFFE8 */ addiu $sp, $sp, 0xFFE8 ## $sp = FFFFFFE8
/* 00268 808B1D48 AFBF0014 */ sw $ra, 0x0014($sp)
/* 0026C 808B1D4C 848E001C */ lh $t6, 0x001C($a0) ## 0000001C
/* 00270 808B1D50 24010003 */ addiu $at, $zero, 0x0003 ## $at = 00000003
/* 00274 808B1D54 15C10005 */ bne $t6, $at, .L808B1D6C
/* 00278 808B1D58 00000000 */ nop
/* 0027C 808B1D5C 0C22C746 */ jal func_808B1D18
/* 00280 808B1D60 00000000 */ nop
/* 00284 808B1D64 10000004 */ beq $zero, $zero, .L808B1D78
/* 00288 808B1D68 8FBF0014 */ lw $ra, 0x0014($sp)
.L808B1D6C:
/* 0028C 808B1D6C 0C22C73B */ jal func_808B1CEC
/* 00290 808B1D70 00000000 */ nop
/* 00294 808B1D74 8FBF0014 */ lw $ra, 0x0014($sp)
.L808B1D78:
/* 00298 808B1D78 27BD0018 */ addiu $sp, $sp, 0x0018 ## $sp = 00000000
/* 0029C 808B1D7C 03E00008 */ jr $ra
/* 002A0 808B1D80 00000000 */ nop

View File

@ -1,28 +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 purposee registers
.section .data
glabel Bg_Spot09_Obj_InitVars
.word 0x00B80100, 0x00000000, 0x00AE0000, 0x00000168
.word BgSpot09Obj_Init
.word BgSpot09Obj_Destroy
.word BgSpot09Obj_Update
.word BgSpot09Obj_Draw
glabel D_808B1F90
.word 0x00000000, 0x06005520, 0x0600283C, 0x06008458, 0x06007580
glabel D_808B1FA4
.word func_808B1BEC
.word func_808B1AE0
.word func_808B1BA0
glabel D_808B1FB0
.word 0xB0F41C20, 0xB0F80BB8, 0x30FC1C20
glabel D_808B1FBC
.word 0xB0F41C20, 0xB0F80320, 0x30FC05DC
glabel D_808B1FC8
.word 0x06000100, 0x06003970, 0x06001120, 0x06007D40, 0x06006210, 0x00000000

View File

@ -1,11 +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 purposee registers
.section .rodata
glabel D_808B20D0
.incbin "baserom/ovl_Bg_Spot09_Obj", 0x5F0, 0x000000B0

View File

@ -1,38 +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 purposee registers
.section .rodata
glabel D_808B1FE0
.asciz "Spot09 Object [arg_data : 0x%04x]( 0x%x)\n"
.balign 4
glabel D_808B2018
.asciz "Error : Spot 09 object arg_data (%s %d)(arg_data 0x%04x)\n"
.balign 4
glabel D_808B2064
.asciz "../z_bg_spot09_obj.c"
.balign 4
glabel D_808B207C
.asciz "../z_bg_spot09_obj.c"
.balign 4
glabel D_808B2094
.asciz "../z_bg_spot09_obj.c"
.balign 4
glabel D_808B20AC
.word 0x2E2E2F7A, 0x5F62675F, 0x73706F74, 0x30395F6F, 0x626A2E63, 0x00000000, 0x00000000, 0x00000000, 0x00000000

45
diff.py
View File

@ -16,14 +16,16 @@ def fail(msg):
print(msg, file=sys.stderr)
sys.exit(1)
MISSING_PREREQUISITES = "Missing prerequisite python module {}. " \
"Run `python3 -m pip install --user colorama ansiwrap attrs watchdog python-Levenshtein` to install prerequisites (python-Levenshtein only needed for --algorithm=levenshtein)."
try:
import attr
from colorama import Fore, Style, Back
import ansiwrap
import watchdog
except ModuleNotFoundError as e:
fail(f"Missing prerequisite python module {e.name}. "
"Run `python3 -m pip install --user colorama ansiwrap attrs watchdog` to install prerequisites.")
fail(MISSING_PREREQUISITES.format(e.name))
# Prefer to use diff_settings.py from the current working directory
sys.path.insert(0, '.')
@ -66,6 +68,8 @@ parser.add_argument('-w', '--watch', dest='watch', action='store_true',
"Recommended in combination with -m.")
parser.add_argument('--width', dest='column_width', type=int, default=50,
help="Sets the width of the left and right view column.")
parser.add_argument('--algorithm', dest='algorithm', default='difflib',
choices=['levenshtein', 'difflib'], help="Diff algorithm to use.")
# Project-specific flags, e.g. different versions/make arguments.
if hasattr(diff_settings, "add_custom_arguments"):
@ -106,6 +110,12 @@ FS_WATCH_EXTENSIONS = ['.c', '.h']
# ==== LOGIC ====
if args.algorithm == 'levenshtein':
try:
import Levenshtein
except ModuleNotFoundError as e:
fail(MISSING_PREREQUISITES.format(e.name))
binutils_prefix = None
for binutils_cand in ['mips-linux-gnu-', 'mips64-elf-']:
@ -449,6 +459,32 @@ def color_branch_imms(br1, br2):
br2 = f'{Fore.LIGHTBLUE_EX}{br2}{Style.RESET_ALL}'
return br1, br2
def diff_sequences_difflib(seq1, seq2):
differ = difflib.SequenceMatcher(a=seq1, b=seq2, autojunk=False)
return differ.get_opcodes()
def diff_sequences(seq1, seq2):
if (args.algorithm != 'levenshtein' or len(seq1) * len(seq2) > 4 * 10**8 or
len(seq1) + len(seq2) >= 0x110000):
return diff_sequences_difflib(seq1, seq2)
# The Levenshtein library assumes that we compare strings, not lists. Convert.
# (Per the check above we know we have fewer than 0x110000 unique elements, so chr() works.)
remapping = {}
def remap(seq):
seq = seq[:]
for i in range(len(seq)):
val = remapping.get(seq[i])
if val is None:
val = chr(len(remapping))
remapping[seq[i]] = val
seq[i] = val
return ''.join(seq)
seq1 = remap(seq1)
seq2 = remap(seq2)
return Levenshtein.opcodes(seq1, seq2)
def do_diff(basedump, mydump):
asm_lines1 = basedump.split('\n')
asm_lines2 = mydump.split('\n')
@ -477,8 +513,7 @@ def do_diff(basedump, mydump):
btset.add(bt + ":")
sc.color_symbol(bt + ":")
differ: difflib.SequenceMatcher = difflib.SequenceMatcher(a=mnemonics1, b=mnemonics2, autojunk=False)
for (tag, i1, i2, j1, j2) in differ.get_opcodes():
for (tag, i1, i2, j1, j2) in diff_sequences(mnemonics1, mnemonics2):
lines1 = asm_lines1[i1:i2]
lines2 = asm_lines2[j1:j2]
@ -791,7 +826,7 @@ def main():
display.progress("Building...")
ret = run_make(make_target, capture_output=True)
if ret.returncode != 0:
display.update(ret.stderr.decode() or ret.stdout.decode(), error=True)
display.update(ret.stderr.decode('utf-8-sig', 'replace') or ret.stdout.decode('utf-8-sig', 'replace'), error=True)
continue
mydump = run_objdump(mycmd)
display.update(mydump, error=False)

4
spec
View File

@ -1456,9 +1456,7 @@ endseg
beginseg
name "ovl_Bg_Spot09_Obj"
include "build/src/overlays/actors/ovl_Bg_Spot09_Obj/z_bg_spot09_obj.o"
include "build/data/overlays/actors/z_bg_spot09_obj.data.o"
include "build/data/overlays/actors/z_bg_spot09_obj.rodata.o"
include "build/data/overlays/actors/z_bg_spot09_obj.reloc.o"
include "build/src/overlays/actors/ovl_Bg_Spot09_Obj/z_bg_spot09_obj_reloc.o"
endseg
beginseg

View File

@ -1,14 +1,23 @@
/*
* File: z_bg_spot09_obj.c
* Overlay: ovl_Bg_Spot09_Obj
* Description:
*/
#include "z_bg_spot09_obj.h"
#define ROOM 0x00
#define FLAGS 0x00000000
void BgSpot09Obj_Init(BgSpot09Obj* this, GlobalContext* globalCtx);
void BgSpot09Obj_Destroy(BgSpot09Obj* this, GlobalContext* globalCtx);
void BgSpot09Obj_Update(BgSpot09Obj* this, GlobalContext* globalCtx);
void BgSpot09Obj_Draw(BgSpot09Obj* this, GlobalContext* globalCtx);
static void BgSpot09Obj_Init(BgSpot09Obj* this, GlobalContext* globalCtx);
static void BgSpot09Obj_Destroy(BgSpot09Obj* this, GlobalContext* globalCtx);
static void BgSpot09Obj_Update(BgSpot09Obj* this, GlobalContext* globalCtx);
static void BgSpot09Obj_Draw(BgSpot09Obj* this, GlobalContext* globalCtx);
static s32 func_808B1AE0(BgSpot09Obj* this, GlobalContext* globalCtx);
static s32 func_808B1BA0(BgSpot09Obj* this, GlobalContext* globalCtx);
static s32 func_808B1BEC(BgSpot09Obj* this, GlobalContext* globalCtx);
/*
const ActorInit Bg_Spot09_Obj_InitVars = {
ACTOR_BG_SPOT09_OBJ,
ACTORTYPE_BG,
@ -21,25 +30,155 @@ const ActorInit Bg_Spot09_Obj_InitVars = {
(ActorFunc)BgSpot09Obj_Update,
(ActorFunc)BgSpot09Obj_Draw,
};
*/
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Bg_Spot09_Obj/func_808B1AE0.s")
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Bg_Spot09_Obj/func_808B1BA0.s")
static u32 D_808B1F90[] = { 0x00000000, 0x06005520, 0x0600283C, 0x06008458, 0x06007580 };
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Bg_Spot09_Obj/func_808B1BEC.s")
static s32 (*D_808B1FA4[])(BgSpot09Obj* this, GlobalContext* globalCtx) = {
func_808B1BEC,
func_808B1AE0,
func_808B1BA0,
};
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Bg_Spot09_Obj/func_808B1C70.s")
static InitChainEntry initChain1[] = {
ICHAIN_F32(unk_F4, 7200, ICHAIN_CONTINUE),
ICHAIN_F32(unk_F8, 3000, ICHAIN_CONTINUE),
ICHAIN_F32(unk_FC, 7200, ICHAIN_STOP),
};
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Bg_Spot09_Obj/func_808B1CEC.s")
static InitChainEntry initChain2[] = {
ICHAIN_F32(unk_F4, 7200, ICHAIN_CONTINUE),
ICHAIN_F32(unk_F8, 800, ICHAIN_CONTINUE),
ICHAIN_F32(unk_FC, 1500, ICHAIN_STOP),
};
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Bg_Spot09_Obj/func_808B1D18.s")
static u32 dlists[] = { 0x06000100, 0x06003970, 0x06001120, 0x06007D40, 0x06006210 };
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Bg_Spot09_Obj/func_808B1D44.s")
extern UNK_TYPE D_06008010;
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Bg_Spot09_Obj/BgSpot09Obj_Init.s")
static s32 func_808B1AE0(BgSpot09Obj* this, GlobalContext* globalCtx) {
s32 carpentersRescued;
Actor* thisx = &this->dyna.actor;
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Bg_Spot09_Obj/BgSpot09Obj_Destroy.s")
if (gSaveContext.scene_setup_index >= 4) {
return thisx->params == 0;
}
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Bg_Spot09_Obj/BgSpot09Obj_Update.s")
carpentersRescued = (gSaveContext.event_chk_inf[9] & 0xF) == 0xF;
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Bg_Spot09_Obj/BgSpot09Obj_Draw.s")
if (LINK_AGE_IN_YEARS == YEARS_ADULT) {
switch (thisx->params) {
case 0:
return 0;
case 1:
return !carpentersRescued;
case 4:
return carpentersRescued;
case 3:
return 1;
}
} else {
return thisx->params == 2;
}
return 0;
}
static s32 func_808B1BA0(BgSpot09Obj* this, GlobalContext* globalCtx) {
Actor* thisx = &this->dyna.actor;
if (thisx->params == 3) {
Actor_SetScale(thisx, 0.1f);
} else {
Actor_SetScale(thisx, 1.0f);
}
return 1;
}
static s32 func_808B1BEC(BgSpot09Obj* this, GlobalContext* globalCtx) {
Actor* thisx = &this->dyna.actor;
s32 localC = 0;
s32 pad[2];
if (D_808B1F90[thisx->params] != 0) {
DynaPolyInfo_SetActorMove(thisx, 0);
DynaPolyInfo_Alloc(D_808B1F90[thisx->params], &localC);
this->dyna.dynaPolyId = DynaPolyInfo_RegisterActor(globalCtx, &globalCtx->colCtx.dyna, thisx, localC);
}
return 1;
}
static s32 func_808B1C70(BgSpot09Obj* this, GlobalContext* globalCtx) {
s32 i;
for (i = 0; i < ARRAY_COUNT(D_808B1FA4); i++) {
if (!D_808B1FA4[i](this, globalCtx)) {
return 0;
}
}
return 1;
}
static s32 func_808B1CEC(BgSpot09Obj* this, GlobalContext* globalCtx) {
Actor_ProcessInitChain(&this->dyna.actor, &initChain1);
return 1;
}
static s32 func_808B1D18(BgSpot09Obj* this, GlobalContext* globalCtx) {
Actor_ProcessInitChain(&this->dyna.actor, &initChain2);
return 1;
}
static s32 func_808B1D44(BgSpot09Obj* this, GlobalContext* globalCtx) {
if (this->dyna.actor.params == 3) {
return func_808B1D18(this, globalCtx);
} else {
return func_808B1CEC(this, globalCtx);
}
}
static void BgSpot09Obj_Init(BgSpot09Obj* this, GlobalContext* globalCtx) {
Actor* thisx = &this->dyna.actor;
osSyncPrintf("Spot09 Object [arg_data : 0x%04x](大工救出フラグ 0x%x)\n", thisx->params,
gSaveContext.event_chk_inf[9] & 0xF);
thisx->params &= 0xFF;
if ((thisx->params < 0) || (thisx->params >= 5)) {
osSyncPrintf("Error : Spot 09 object の arg_data が判別出来ない(%s %d)(arg_data 0x%04x)\n",
"../z_bg_spot09_obj.c", 322, thisx->params);
}
if (!func_808B1C70(this, globalCtx)) {
Actor_Kill(thisx);
} else if (!func_808B1D44(this, globalCtx)) {
Actor_Kill(thisx);
}
}
static void BgSpot09Obj_Destroy(BgSpot09Obj* this, GlobalContext* globalCtx) {
DynaCollisionContext* dynaColCtx = &globalCtx->colCtx.dyna;
Actor* thisx = &this->dyna.actor;
if (thisx->params != 0) {
DynaPolyInfo_Free(globalCtx, dynaColCtx, this->dyna.dynaPolyId);
}
}
static void BgSpot09Obj_Update(BgSpot09Obj* this, GlobalContext* globalCtx) {
}
static void BgSpot09Obj_Draw(BgSpot09Obj* this, GlobalContext* globalCtx) {
Actor* thisx = &this->dyna.actor;
GraphicsContext* gfxCtx;
Gfx* gfxArr[3];
Draw_DListOpa(globalCtx, dlists[thisx->params]);
if (thisx->params == 3) {
gfxCtx = globalCtx->state.gfxCtx;
func_800C6AC4(gfxArr, globalCtx->state.gfxCtx, "../z_bg_spot09_obj.c", 388);
func_80093D84(globalCtx->state.gfxCtx);
gSPMatrix(gfxCtx->polyXlu.p++, Matrix_NewMtx(globalCtx->state.gfxCtx, "../z_bg_spot09_obj.c", 391),
G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
gSPDisplayList(gfxCtx->polyXlu.p++, &D_06008010);
func_800C6B54(gfxArr, globalCtx->state.gfxCtx, "../z_bg_spot09_obj.c", 396);
}
}

View File

@ -5,8 +5,8 @@
#include <global.h>
typedef struct {
/* 0x0000 */ Actor actor;
/* 0x014C */ char unk_14C[0x1C];
/* 0x0000 */ DynaPolyActor dyna;
/* 0x0164 */ char unk_164[0x04];
} BgSpot09Obj; // size = 0x0168
extern const ActorInit Bg_Spot09_Obj_InitVars;

View File

@ -149,6 +149,9 @@ DL_VASE = 0x06000000;
// z_door_toki
DOOR_TOKI_COLLISION_DATA = 0x06007888;
// z_bg_spot09_obj
D_06008010 = 0x06008010;
// z_bg_spot18_futa
DL_SPOT18_FUTA = 0x06000368;
DL_SPOT18_FUTA2 = 0x06000150;