1
0
Fork 0
mirror of https://github.com/zeldaret/oot.git synced 2025-02-20 13:55:26 +00:00

Decompiles fcurve_skelanime, code_8006C510, and actor MagicWind (#135)

* decompile z_fcurve_skelanime and code_8006C510

* format

* Decomp Magic_Wind

* PR Updates

* add space between ActorFunc and MagicWindFunc

* missing pr updates
This commit is contained in:
krimtonz 2020-05-19 15:27:25 -05:00 committed by GitHub
parent c599318a17
commit b8b334f90a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
32 changed files with 1309 additions and 864 deletions

View file

@ -25,7 +25,7 @@ glabel D_8013BAFC
.balign 4
.text
glabel func_8006CBAC
glabel SkelCurve_DrawLimb
/* AE3D4C 8006CBAC 27BDFF68 */ addiu $sp, $sp, -0x98
/* AE3D50 8006CBB0 AFBF002C */ sw $ra, 0x2c($sp)
/* AE3D54 8006CBB4 AFB00028 */ sw $s0, 0x28($sp)
@ -243,7 +243,7 @@ glabel func_8006CBAC
/* AE4088 8006CEE8 8FAD00B0 */ lw $t5, 0xb0($sp)
/* AE408C 8006CEEC AFB00010 */ sw $s0, 0x10($sp)
/* AE4090 8006CEF0 AFA90014 */ sw $t1, 0x14($sp)
/* AE4094 8006CEF4 0C01B2EB */ jal func_8006CBAC
/* AE4094 8006CEF4 0C01B2EB */ jal SkelCurve_DrawLimb
/* AE4098 8006CEF8 AFAD0018 */ sw $t5, 0x18($sp)
.L8006CEFC:
/* AE409C 8006CEFC 0C034221 */ jal Matrix_Pull
@ -260,7 +260,7 @@ glabel func_8006CBAC
/* AE40C8 8006CF28 8FAF00B0 */ lw $t7, 0xb0($sp)
/* AE40CC 8006CF2C AFB00010 */ sw $s0, 0x10($sp)
/* AE40D0 8006CF30 AFB80014 */ sw $t8, 0x14($sp)
/* AE40D4 8006CF34 0C01B2EB */ jal func_8006CBAC
/* AE40D4 8006CF34 0C01B2EB */ jal SkelCurve_DrawLimb
/* AE40D8 8006CF38 AFAF0018 */ sw $t7, 0x18($sp)
/* AE40DC 8006CF3C 8FB90098 */ lw $t9, 0x98($sp)
.L8006CF40:

View file

@ -1,12 +0,0 @@
glabel func_8006C750
/* AE38F0 8006C750 44800000 */ mtc1 $zero, $f0
/* AE38F4 8006C754 A0800000 */ sb $zero, ($a0)
/* AE38F8 8006C758 AC800004 */ sw $zero, 4($a0)
/* AE38FC 8006C75C AC800008 */ sw $zero, 8($a0)
/* AE3900 8006C760 AC80001C */ sw $zero, 0x1c($a0)
/* AE3904 8006C764 E4800018 */ swc1 $f0, 0x18($a0)
/* AE3908 8006C768 E4800014 */ swc1 $f0, 0x14($a0)
/* AE390C 8006C76C E4800010 */ swc1 $f0, 0x10($a0)
/* AE3910 8006C770 03E00008 */ jr $ra
/* AE3914 8006C774 E480000C */ swc1 $f0, 0xc($a0)

View file

@ -1,74 +0,0 @@
.rdata
glabel D_8013B9E0
.asciz "../z_fcurve_data_skelanime.c"
.balign 4
glabel D_8013BA00
.asciz "this->now_joint != NULL"
.balign 4
glabel D_8013BA18
.asciz "../z_fcurve_data_skelanime.c"
.balign 4
.text
glabel func_8006C778
/* AE3918 8006C778 00067100 */ sll $t6, $a2, 4
/* AE391C 8006C77C 3C088016 */ lui $t0, %hi(gSegments) # $t0, 0x8016
/* AE3920 8006C780 000E7F02 */ srl $t7, $t6, 0x1c
/* AE3924 8006C784 25086FA8 */ addiu $t0, %lo(gSegments) # addiu $t0, $t0, 0x6fa8
/* AE3928 8006C788 000FC080 */ sll $t8, $t7, 2
/* AE392C 8006C78C 27BDFFE0 */ addiu $sp, $sp, -0x20
/* AE3930 8006C790 0118C821 */ addu $t9, $t0, $t8
/* AE3934 8006C794 8F2B0000 */ lw $t3, ($t9)
/* AE3938 8006C798 3C0900FF */ lui $t1, (0x00FFFFFF >> 16) # lui $t1, 0xff
/* AE393C 8006C79C 3529FFFF */ ori $t1, (0x00FFFFFF & 0xFFFF) # ori $t1, $t1, 0xffff
/* AE3940 8006C7A0 00C96024 */ and $t4, $a2, $t1
/* AE3944 8006C7A4 3C0A8000 */ lui $t2, 0x8000
/* AE3948 8006C7A8 016C6821 */ addu $t5, $t3, $t4
/* AE394C 8006C7AC AFBF001C */ sw $ra, 0x1c($sp)
/* AE3950 8006C7B0 AFB00018 */ sw $s0, 0x18($sp)
/* AE3954 8006C7B4 AFA40020 */ sw $a0, 0x20($sp)
/* AE3958 8006C7B8 AFA60028 */ sw $a2, 0x28($sp)
/* AE395C 8006C7BC AFA7002C */ sw $a3, 0x2c($sp)
/* AE3960 8006C7C0 01AA1021 */ addu $v0, $t5, $t2
/* AE3964 8006C7C4 904E0004 */ lbu $t6, 4($v0)
/* AE3968 8006C7C8 00A08025 */ move $s0, $a1
/* AE396C 8006C7CC 2406007D */ li $a2, 125
/* AE3970 8006C7D0 A0AE0000 */ sb $t6, ($a1)
/* AE3974 8006C7D4 8C430000 */ lw $v1, ($v0)
/* AE3978 8006C7D8 90A40000 */ lbu $a0, ($a1)
/* AE397C 8006C7DC 00037900 */ sll $t7, $v1, 4
/* AE3980 8006C7E0 000FC702 */ srl $t8, $t7, 0x1c
/* AE3984 8006C7E4 0018C880 */ sll $t9, $t8, 2
/* AE3988 8006C7E8 01195821 */ addu $t3, $t0, $t9
/* AE398C 8006C7EC 8D6C0000 */ lw $t4, ($t3)
/* AE3990 8006C7F0 00696824 */ and $t5, $v1, $t1
/* AE3994 8006C7F4 00800821 */ addu $at, $a0, $zero
/* AE3998 8006C7F8 018D7021 */ addu $t6, $t4, $t5
/* AE399C 8006C7FC 01CA7821 */ addu $t7, $t6, $t2
/* AE39A0 8006C800 ACAF0004 */ sw $t7, 4($a1)
/* AE39A4 8006C804 000420C0 */ sll $a0, $a0, 3
/* AE39A8 8006C808 00812021 */ addu $a0, $a0, $at
/* AE39AC 8006C80C 3C058014 */ lui $a1, %hi(D_8013B9E0) # $a1, 0x8014
/* AE39B0 8006C810 24A5B9E0 */ addiu $a1, %lo(D_8013B9E0) # addiu $a1, $a1, -0x4620
/* AE39B4 8006C814 0C01EBB8 */ jal ZeldaArena_MallocDebug
/* AE39B8 8006C818 00042040 */ sll $a0, $a0, 1
/* AE39BC 8006C81C 14400007 */ bnez $v0, .L8006C83C
/* AE39C0 8006C820 AE02001C */ sw $v0, 0x1c($s0)
/* AE39C4 8006C824 3C048014 */ lui $a0, %hi(D_8013BA00) # $a0, 0x8014
/* AE39C8 8006C828 3C058014 */ lui $a1, %hi(D_8013BA18)
/* AE39CC 8006C82C 24A5BA18 */ addiu $a1, %lo(D_8013BA18) # addiu $a1, $a1, -0x45e8
/* AE39D0 8006C830 2484BA00 */ addiu $a0, %lo(D_8013BA00) # addiu $a0, $a0, -0x4600
/* AE39D4 8006C834 0C0007FC */ jal __assert
/* AE39D8 8006C838 2406007F */ li $a2, 127
.L8006C83C:
/* AE39DC 8006C83C 44802000 */ mtc1 $zero, $f4
/* AE39E0 8006C840 24020001 */ li $v0, 1
/* AE39E4 8006C844 E6040018 */ swc1 $f4, 0x18($s0)
/* AE39E8 8006C848 8FBF001C */ lw $ra, 0x1c($sp)
/* AE39EC 8006C84C 8FB00018 */ lw $s0, 0x18($sp)
/* AE39F0 8006C850 27BD0020 */ addiu $sp, $sp, 0x20
/* AE39F4 8006C854 03E00008 */ jr $ra
/* AE39F8 8006C858 00000000 */ nop

View file

@ -1,23 +0,0 @@
.rdata
glabel D_8013BA38
.asciz "../z_fcurve_data_skelanime.c"
.balign 4
.text
glabel func_8006C85C
/* AE39FC 8006C85C 27BDFFE8 */ addiu $sp, $sp, -0x18
/* AE3A00 8006C860 AFBF0014 */ sw $ra, 0x14($sp)
/* AE3A04 8006C864 AFA40018 */ sw $a0, 0x18($sp)
/* AE3A08 8006C868 8CA4001C */ lw $a0, 0x1c($a1)
/* AE3A0C 8006C86C 3C058014 */ lui $a1, %hi(D_8013BA38) # $a1, 0x8014
/* AE3A10 8006C870 24A5BA38 */ addiu $a1, %lo(D_8013BA38) # addiu $a1, $a1, -0x45c8
/* AE3A14 8006C874 50800004 */ beql $a0, $zero, .L8006C888
/* AE3A18 8006C878 8FBF0014 */ lw $ra, 0x14($sp)
/* AE3A1C 8006C87C 0C01EC35 */ jal ZeldaArena_FreeDebug
/* AE3A20 8006C880 24060092 */ li $a2, 146
/* AE3A24 8006C884 8FBF0014 */ lw $ra, 0x14($sp)
.L8006C888:
/* AE3A28 8006C888 27BD0018 */ addiu $sp, $sp, 0x18
/* AE3A2C 8006C88C 03E00008 */ jr $ra
/* AE3A30 8006C890 00000000 */ nop

View file

@ -1,14 +0,0 @@
glabel func_8006C894
/* AE3A34 8006C894 44866000 */ mtc1 $a2, $f12
/* AE3A38 8006C898 C4840014 */ lwc1 $f4, 0x14($a0)
/* AE3A3C 8006C89C 44877000 */ mtc1 $a3, $f14
/* AE3A40 8006C8A0 46046181 */ sub.s $f6, $f12, $f4
/* AE3A44 8006C8A4 E48E0010 */ swc1 $f14, 0x10($a0)
/* AE3A48 8006C8A8 E486000C */ swc1 $f6, 0xc($a0)
/* AE3A4C 8006C8AC C7A80010 */ lwc1 $f8, 0x10($sp)
/* AE3A50 8006C8B0 E4880018 */ swc1 $f8, 0x18($a0)
/* AE3A54 8006C8B4 C7AA0014 */ lwc1 $f10, 0x14($sp)
/* AE3A58 8006C8B8 AC850008 */ sw $a1, 8($a0)
/* AE3A5C 8006C8BC 03E00008 */ jr $ra
/* AE3A60 8006C8C0 E48A0014 */ swc1 $f10, 0x14($a0)

View file

@ -1,204 +0,0 @@
.late_rodata
glabel D_8013BB1C
.float 182.04445
.text
glabel func_8006C8C4
/* AE3A64 8006C8C4 27BDFF90 */ addiu $sp, $sp, -0x70
/* AE3A68 8006C8C8 AFBF0054 */ sw $ra, 0x54($sp)
/* AE3A6C 8006C8CC AFBE0050 */ sw $fp, 0x50($sp)
/* AE3A70 8006C8D0 AFB7004C */ sw $s7, 0x4c($sp)
/* AE3A74 8006C8D4 AFB60048 */ sw $s6, 0x48($sp)
/* AE3A78 8006C8D8 AFB50044 */ sw $s5, 0x44($sp)
/* AE3A7C 8006C8DC AFB40040 */ sw $s4, 0x40($sp)
/* AE3A80 8006C8E0 AFB3003C */ sw $s3, 0x3c($sp)
/* AE3A84 8006C8E4 AFB20038 */ sw $s2, 0x38($sp)
/* AE3A88 8006C8E8 AFB10034 */ sw $s1, 0x34($sp)
/* AE3A8C 8006C8EC AFB00030 */ sw $s0, 0x30($sp)
/* AE3A90 8006C8F0 F7B80028 */ sdc1 $f24, 0x28($sp)
/* AE3A94 8006C8F4 F7B60020 */ sdc1 $f22, 0x20($sp)
/* AE3A98 8006C8F8 F7B40018 */ sdc1 $f20, 0x18($sp)
/* AE3A9C 8006C8FC AFA40070 */ sw $a0, 0x70($sp)
/* AE3AA0 8006C900 AFA50074 */ sw $a1, 0x74($sp)
/* AE3AA4 8006C904 AFA00058 */ sw $zero, 0x58($sp)
/* AE3AA8 8006C908 8CA30008 */ lw $v1, 8($a1)
/* AE3AAC 8006C90C 3C088016 */ lui $t0, %hi(gSegments) # $t0, 0x8016
/* AE3AB0 8006C910 25086FA8 */ addiu $t0, %lo(gSegments) # addiu $t0, $t0, 0x6fa8
/* AE3AB4 8006C914 00037900 */ sll $t7, $v1, 4
/* AE3AB8 8006C918 000FC702 */ srl $t8, $t7, 0x1c
/* AE3ABC 8006C91C 0018C880 */ sll $t9, $t8, 2
/* AE3AC0 8006C920 01195821 */ addu $t3, $t0, $t9
/* AE3AC4 8006C924 8D6C0000 */ lw $t4, ($t3)
/* AE3AC8 8006C928 3C0900FF */ lui $t1, (0x00FFFFFF >> 16) # lui $t1, 0xff
/* AE3ACC 8006C92C 3529FFFF */ ori $t1, (0x00FFFFFF & 0xFFFF) # ori $t1, $t1, 0xffff
/* AE3AD0 8006C930 00696824 */ and $t5, $v1, $t1
/* AE3AD4 8006C934 3C0A8000 */ li $t2, 0x80000000 # 0.000000
/* AE3AD8 8006C938 018D7821 */ addu $t7, $t4, $t5
/* AE3ADC 8006C93C 01EA1021 */ addu $v0, $t7, $t2
/* AE3AE0 8006C940 8C440000 */ lw $a0, ($v0)
/* AE3AE4 8006C944 8C460004 */ lw $a2, 4($v0)
/* AE3AE8 8006C948 8C470008 */ lw $a3, 8($v0)
/* AE3AEC 8006C94C 0004C100 */ sll $t8, $a0, 4
/* AE3AF0 8006C950 0018CF02 */ srl $t9, $t8, 0x1c
/* AE3AF4 8006C954 00195880 */ sll $t3, $t9, 2
/* AE3AF8 8006C958 010B6021 */ addu $t4, $t0, $t3
/* AE3AFC 8006C95C 8D8D0000 */ lw $t5, ($t4)
/* AE3B00 8006C960 0006C900 */ sll $t9, $a2, 4
/* AE3B04 8006C964 00195F02 */ srl $t3, $t9, 0x1c
/* AE3B08 8006C968 00897824 */ and $t7, $a0, $t1
/* AE3B0C 8006C96C 000B6080 */ sll $t4, $t3, 2
/* AE3B10 8006C970 01AFC021 */ addu $t8, $t5, $t7
/* AE3B14 8006C974 010C6821 */ addu $t5, $t0, $t4
/* AE3B18 8006C978 00075900 */ sll $t3, $a3, 4
/* AE3B1C 8006C97C 8DAF0000 */ lw $t7, ($t5)
/* AE3B20 8006C980 000B6702 */ srl $t4, $t3, 0x1c
/* AE3B24 8006C984 000C6880 */ sll $t5, $t4, 2
/* AE3B28 8006C988 030A9821 */ addu $s3, $t8, $t2
/* AE3B2C 8006C98C 3C0C8016 */ lui $t4, %hi(gGameInfo)
/* AE3B30 8006C990 8D8CFA90 */ lw $t4, %lo(gGameInfo)($t4)
/* AE3B34 8006C994 00C9C024 */ and $t8, $a2, $t1
/* AE3B38 8006C998 01F8C821 */ addu $t9, $t7, $t8
/* AE3B3C 8006C99C 010D7821 */ addu $t7, $t0, $t5
/* AE3B40 8006C9A0 858D0110 */ lh $t5, 0x110($t4)
/* AE3B44 8006C9A4 C4A20014 */ lwc1 $f2, 0x14($a1)
/* AE3B48 8006C9A8 3C013F00 */ li $at, 0x3F000000 # 0.000000
/* AE3B4C 8006C9AC 448D2000 */ mtc1 $t5, $f4
/* AE3B50 8006C9B0 44815000 */ mtc1 $at, $f10
/* AE3B54 8006C9B4 44806000 */ mtc1 $zero, $f12
/* AE3B58 8006C9B8 468021A0 */ cvt.s.w $f6, $f4
/* AE3B5C 8006C9BC C4B20018 */ lwc1 $f18, 0x18($a1)
/* AE3B60 8006C9C0 8DF80000 */ lw $t8, ($t7)
/* AE3B64 8006C9C4 032AA021 */ addu $s4, $t9, $t2
/* AE3B68 8006C9C8 00E9C824 */ and $t9, $a3, $t1
/* AE3B6C 8006C9CC 4602603E */ c.le.s $f12, $f2
/* AE3B70 8006C9D0 46061202 */ mul.s $f8, $f2, $f6
/* AE3B74 8006C9D4 03195821 */ addu $t3, $t8, $t9
/* AE3B78 8006C9D8 016AA821 */ addu $s5, $t3, $t2
/* AE3B7C 8006C9DC 8CB0001C */ lw $s0, 0x1c($a1)
/* AE3B80 8006C9E0 3C0142C8 */ li $at, 0x42C80000 # 0.000000
/* AE3B84 8006C9E4 2417000C */ li $s7, 12
/* AE3B88 8006C9E8 241E0001 */ li $fp, 1
/* AE3B8C 8006C9EC 460A4402 */ mul.s $f16, $f8, $f10
/* AE3B90 8006C9F0 46109100 */ add.s $f4, $f18, $f16
/* AE3B94 8006C9F4 45000008 */ bc1f .L8006CA18
/* AE3B98 8006C9F8 E4A40018 */ swc1 $f4, 0x18($a1)
/* AE3B9C 8006C9FC 8FAF0074 */ lw $t7, 0x74($sp)
/* AE3BA0 8006CA00 C5E00010 */ lwc1 $f0, 0x10($t7)
/* AE3BA4 8006CA04 C5E60018 */ lwc1 $f6, 0x18($t7)
/* AE3BA8 8006CA08 4606003C */ c.lt.s $f0, $f6
/* AE3BAC 8006CA0C 00000000 */ nop
/* AE3BB0 8006CA10 4503000C */ bc1tl .L8006CA44
/* AE3BB4 8006CA14 8FB90074 */ lw $t9, 0x74($sp)
.L8006CA18:
/* AE3BB8 8006CA18 460C103C */ c.lt.s $f2, $f12
/* AE3BBC 8006CA1C 8FB80074 */ lw $t8, 0x74($sp)
/* AE3BC0 8006CA20 4502000C */ bc1fl .L8006CA54
/* AE3BC4 8006CA24 8FAC0074 */ lw $t4, 0x74($sp)
/* AE3BC8 8006CA28 C7000010 */ lwc1 $f0, 0x10($t8)
/* AE3BCC 8006CA2C C7080018 */ lwc1 $f8, 0x18($t8)
/* AE3BD0 8006CA30 4600403C */ c.lt.s $f8, $f0
/* AE3BD4 8006CA34 00000000 */ nop
/* AE3BD8 8006CA38 45020006 */ bc1fl .L8006CA54
/* AE3BDC 8006CA3C 8FAC0074 */ lw $t4, 0x74($sp)
/* AE3BE0 8006CA40 8FB90074 */ lw $t9, 0x74($sp)
.L8006CA44:
/* AE3BE4 8006CA44 240B0001 */ li $t3, 1
/* AE3BE8 8006CA48 E7200018 */ swc1 $f0, 0x18($t9)
/* AE3BEC 8006CA4C AFAB0058 */ sw $t3, 0x58($sp)
/* AE3BF0 8006CA50 8FAC0074 */ lw $t4, 0x74($sp)
.L8006CA54:
/* AE3BF4 8006CA54 AFA0005C */ sw $zero, 0x5c($sp)
/* AE3BF8 8006CA58 918D0000 */ lbu $t5, ($t4)
/* AE3BFC 8006CA5C 59A00044 */ blezl $t5, .L8006CB70
/* AE3C00 8006CA60 8FBF0054 */ lw $ra, 0x54($sp)
/* AE3C04 8006CA64 4481C000 */ mtc1 $at, $f24
/* AE3C08 8006CA68 3C018014 */ lui $at, %hi(D_8013BB1C)
/* AE3C0C 8006CA6C C436BB1C */ lwc1 $f22, %lo(D_8013BB1C)($at)
/* AE3C10 8006CA70 3C014480 */ li $at, 0x44800000 # 0.000000
/* AE3C14 8006CA74 4481A000 */ mtc1 $at, $f20
/* AE3C18 8006CA78 24160003 */ li $s6, 3
/* AE3C1C 8006CA7C 00009025 */ move $s2, $zero
.L8006CA80:
/* AE3C20 8006CA80 00008825 */ move $s1, $zero
.L8006CA84:
/* AE3C24 8006CA84 92660000 */ lbu $a2, ($s3)
/* AE3C28 8006CA88 8FB90074 */ lw $t9, 0x74($sp)
/* AE3C2C 8006CA8C 02802825 */ move $a1, $s4
/* AE3C30 8006CA90 14C0000E */ bnez $a2, .L8006CACC
/* AE3C34 8006CA94 00000000 */ nop
/* AE3C38 8006CA98 96AE0000 */ lhu $t6, ($s5)
/* AE3C3C 8006CA9C 3C014F80 */ li $at, 0x4F800000 # 0.000000
/* AE3C40 8006CAA0 448E5000 */ mtc1 $t6, $f10
/* AE3C44 8006CAA4 05C10004 */ bgez $t6, .L8006CAB8
/* AE3C48 8006CAA8 46805020 */ cvt.s.w $f0, $f10
/* AE3C4C 8006CAAC 44819000 */ mtc1 $at, $f18
/* AE3C50 8006CAB0 00000000 */ nop
/* AE3C54 8006CAB4 46120000 */ add.s $f0, $f0, $f18
.L8006CAB8:
/* AE3C58 8006CAB8 4600040D */ trunc.w.s $f16, $f0
/* AE3C5C 8006CABC 26B50002 */ addiu $s5, $s5, 2
/* AE3C60 8006CAC0 44188000 */ mfc1 $t8, $f16
/* AE3C64 8006CAC4 1000001A */ b .L8006CB30
/* AE3C68 8006CAC8 A6180000 */ sh $t8, ($s0)
.L8006CACC:
/* AE3C6C 8006CACC 0C01B16A */ jal func_8006C5A8
/* AE3C70 8006CAD0 C72C0018 */ lwc1 $f12, 0x18($t9)
/* AE3C74 8006CAD4 926B0000 */ lbu $t3, ($s3)
/* AE3C78 8006CAD8 01770019 */ multu $t3, $s7
/* AE3C7C 8006CADC 00006012 */ mflo $t4
/* AE3C80 8006CAE0 028CA021 */ addu $s4, $s4, $t4
/* AE3C84 8006CAE4 16400006 */ bnez $s2, .L8006CB00
/* AE3C88 8006CAE8 00000000 */ nop
/* AE3C8C 8006CAEC 46140102 */ mul.s $f4, $f0, $f20
/* AE3C90 8006CAF0 4600218D */ trunc.w.s $f6, $f4
/* AE3C94 8006CAF4 440E3000 */ mfc1 $t6, $f6
/* AE3C98 8006CAF8 1000000D */ b .L8006CB30
/* AE3C9C 8006CAFC A60E0000 */ sh $t6, ($s0)
.L8006CB00:
/* AE3CA0 8006CB00 165E0006 */ bne $s2, $fp, .L8006CB1C
/* AE3CA4 8006CB04 00000000 */ nop
/* AE3CA8 8006CB08 46160202 */ mul.s $f8, $f0, $f22
/* AE3CAC 8006CB0C 4600428D */ trunc.w.s $f10, $f8
/* AE3CB0 8006CB10 44185000 */ mfc1 $t8, $f10
/* AE3CB4 8006CB14 10000006 */ b .L8006CB30
/* AE3CB8 8006CB18 A6180000 */ sh $t8, ($s0)
.L8006CB1C:
/* AE3CBC 8006CB1C 46180482 */ mul.s $f18, $f0, $f24
/* AE3CC0 8006CB20 4600940D */ trunc.w.s $f16, $f18
/* AE3CC4 8006CB24 440B8000 */ mfc1 $t3, $f16
/* AE3CC8 8006CB28 00000000 */ nop
/* AE3CCC 8006CB2C A60B0000 */ sh $t3, ($s0)
.L8006CB30:
/* AE3CD0 8006CB30 26310001 */ addiu $s1, $s1, 1
/* AE3CD4 8006CB34 26730001 */ addiu $s3, $s3, 1
/* AE3CD8 8006CB38 1636FFD2 */ bne $s1, $s6, .L8006CA84
/* AE3CDC 8006CB3C 26100002 */ addiu $s0, $s0, 2
/* AE3CE0 8006CB40 26520001 */ addiu $s2, $s2, 1
/* AE3CE4 8006CB44 5656FFCF */ bnel $s2, $s6, .L8006CA84
/* AE3CE8 8006CB48 00008825 */ move $s1, $zero
/* AE3CEC 8006CB4C 8FAC005C */ lw $t4, 0x5c($sp)
/* AE3CF0 8006CB50 8FAE0074 */ lw $t6, 0x74($sp)
/* AE3CF4 8006CB54 258D0001 */ addiu $t5, $t4, 1
/* AE3CF8 8006CB58 AFAD005C */ sw $t5, 0x5c($sp)
/* AE3CFC 8006CB5C 91CF0000 */ lbu $t7, ($t6)
/* AE3D00 8006CB60 01AF082A */ slt $at, $t5, $t7
/* AE3D04 8006CB64 5420FFC6 */ bnezl $at, .L8006CA80
/* AE3D08 8006CB68 00009025 */ move $s2, $zero
/* AE3D0C 8006CB6C 8FBF0054 */ lw $ra, 0x54($sp)
.L8006CB70:
/* AE3D10 8006CB70 8FA20058 */ lw $v0, 0x58($sp)
/* AE3D14 8006CB74 D7B40018 */ ldc1 $f20, 0x18($sp)
/* AE3D18 8006CB78 D7B60020 */ ldc1 $f22, 0x20($sp)
/* AE3D1C 8006CB7C D7B80028 */ ldc1 $f24, 0x28($sp)
/* AE3D20 8006CB80 8FB00030 */ lw $s0, 0x30($sp)
/* AE3D24 8006CB84 8FB10034 */ lw $s1, 0x34($sp)
/* AE3D28 8006CB88 8FB20038 */ lw $s2, 0x38($sp)
/* AE3D2C 8006CB8C 8FB3003C */ lw $s3, 0x3c($sp)
/* AE3D30 8006CB90 8FB40040 */ lw $s4, 0x40($sp)
/* AE3D34 8006CB94 8FB50044 */ lw $s5, 0x44($sp)
/* AE3D38 8006CB98 8FB60048 */ lw $s6, 0x48($sp)
/* AE3D3C 8006CB9C 8FB7004C */ lw $s7, 0x4c($sp)
/* AE3D40 8006CBA0 8FBE0050 */ lw $fp, 0x50($sp)
/* AE3D44 8006CBA4 03E00008 */ jr $ra
/* AE3D48 8006CBA8 27BD0070 */ addiu $sp, $sp, 0x70

View file

@ -1,20 +0,0 @@
glabel func_8006CF6C
/* AE410C 8006CF6C 27BDFFD8 */ addiu $sp, $sp, -0x28
/* AE4110 8006CF70 AFBF0024 */ sw $ra, 0x24($sp)
/* AE4114 8006CF74 AFA40028 */ sw $a0, 0x28($sp)
/* AE4118 8006CF78 8CCE001C */ lw $t6, 0x1c($a2)
/* AE411C 8006CF7C 00A02025 */ move $a0, $a1
/* AE4120 8006CF80 00002825 */ move $a1, $zero
/* AE4124 8006CF84 11C00007 */ beqz $t6, .L8006CFA4
/* AE4128 8006CF88 8FAF0038 */ lw $t7, 0x38($sp)
/* AE412C 8006CF8C 8FB8003C */ lw $t8, 0x3c($sp)
/* AE4130 8006CF90 8FB90040 */ lw $t9, 0x40($sp)
/* AE4134 8006CF94 AFAF0010 */ sw $t7, 0x10($sp)
/* AE4138 8006CF98 AFB80014 */ sw $t8, 0x14($sp)
/* AE413C 8006CF9C 0C01B2EB */ jal func_8006CBAC
/* AE4140 8006CFA0 AFB90018 */ sw $t9, 0x18($sp)
.L8006CFA4:
/* AE4144 8006CFA4 8FBF0024 */ lw $ra, 0x24($sp)
/* AE4148 8006CFA8 27BD0028 */ addiu $sp, $sp, 0x28
/* AE414C 8006CFAC 03E00008 */ jr $ra
/* AE4150 8006CFB0 00000000 */ nop

View file

@ -13,7 +13,7 @@ glabel DemoEffect_Destroy
/* 009F0 80971940 14410003 */ bne $v0, $at, .L80971950
.L80971944:
/* 009F4 80971944 00E02025 */ or $a0, $a3, $zero ## $a0 = 00000000
/* 009F8 80971948 0C01B217 */ jal func_8006C85C
/* 009F8 80971948 0C01B217 */ jal SkelCurve_Destroy
/* 009FC 8097194C 24C5014C */ addiu $a1, $a2, 0x014C ## $a1 = 0000014C
.L80971950:
/* 00A00 80971950 8FBF0014 */ lw $ra, 0x0014($sp)

View file

@ -558,7 +558,7 @@ glabel L80971774
/* 00844 80971794 A200017B */ sb $zero, 0x017B($s0) ## 0000017B
/* 00848 80971798 A20F017C */ sb $t7, 0x017C($s0) ## 0000017C
/* 0084C 8097179C A202017D */ sb $v0, 0x017D($s0) ## 0000017D
/* 00850 809717A0 0C01B1D4 */ jal func_8006C750
/* 00850 809717A0 0C01B1D4 */ jal SkelCurve_Clear
/* 00854 809717A4 2604014C */ addiu $a0, $s0, 0x014C ## $a0 = 0000014C
/* 00858 809717A8 1000004A */ beq $zero, $zero, .L809718D4
/* 0085C 809717AC A6000188 */ sh $zero, 0x0188($s0) ## 00000188

View file

@ -36,7 +36,7 @@ glabel func_80971DFC
/* 00EDC 80971E2C AFB8002C */ sw $t8, 0x002C($sp)
/* 00EE0 80971E30 24E70050 */ addiu $a3, $a3, 0x0050 ## $a3 = 06000050
/* 00EE4 80971E34 24C612E8 */ addiu $a2, $a2, 0x12E8 ## $a2 = 060012E8
/* 00EE8 80971E38 0C01B1DE */ jal func_8006C778
/* 00EE8 80971E38 0C01B1DE */ jal SkelCurve_Init
/* 00EEC 80971E3C 02002825 */ or $a1, $s0, $zero ## $a1 = 0000014C
/* 00EF0 80971E40 14400006 */ bne $v0, $zero, .L80971E5C
/* 00EF4 80971E44 3C048097 */ lui $a0, %hi(D_809768FC) ## $a0 = 80970000
@ -66,10 +66,10 @@ glabel func_80971DFC
/* 00F48 80971E98 44071000 */ mfc1 $a3, $f2
/* 00F4C 80971E9C 24A50050 */ addiu $a1, $a1, 0x0050 ## $a1 = 06000050
/* 00F50 80971EA0 E7A00010 */ swc1 $f0, 0x0010($sp)
/* 00F54 80971EA4 0C01B225 */ jal func_8006C894
/* 00F54 80971EA4 0C01B225 */ jal SkelCurve_SetAnim
/* 00F58 80971EA8 E7A40014 */ swc1 $f4, 0x0014($sp)
/* 00F5C 80971EAC 8FA40034 */ lw $a0, 0x0034($sp)
/* 00F60 80971EB0 0C01B231 */ jal func_8006C8C4
/* 00F60 80971EB0 0C01B231 */ jal SkelCurve_Update
/* 00F64 80971EB4 02002825 */ or $a1, $s0, $zero ## $a1 = 0000014C
/* 00F68 80971EB8 8FA40030 */ lw $a0, 0x0030($sp)
/* 00F6C 80971EBC 3C198097 */ lui $t9, %hi(func_80972344) ## $t9 = 80970000
@ -120,10 +120,10 @@ glabel func_80971DFC
/* 01008 80971F58 44071000 */ mfc1 $a3, $f2
/* 0100C 80971F5C 24A50050 */ addiu $a1, $a1, 0x0050 ## $a1 = 06000050
/* 01010 80971F60 E7A20010 */ swc1 $f2, 0x0010($sp)
/* 01014 80971F64 0C01B225 */ jal func_8006C894
/* 01014 80971F64 0C01B225 */ jal SkelCurve_SetAnim
/* 01018 80971F68 E7A60014 */ swc1 $f6, 0x0014($sp)
/* 0101C 80971F6C 8FA40034 */ lw $a0, 0x0034($sp)
/* 01020 80971F70 0C01B231 */ jal func_8006C8C4
/* 01020 80971F70 0C01B231 */ jal SkelCurve_Update
/* 01024 80971F74 02002825 */ or $a1, $s0, $zero ## $a1 = 0000014C
/* 01028 80971F78 8FAD0030 */ lw $t5, 0x0030($sp)
/* 0102C 80971F7C 3C0C8097 */ lui $t4, %hi(func_809721D0) ## $t4 = 80970000
@ -147,10 +147,10 @@ glabel func_80971DFC
/* 01068 80971FB8 24A50050 */ addiu $a1, $a1, 0x0050 ## $a1 = 06000050
/* 0106C 80971FBC 02002025 */ or $a0, $s0, $zero ## $a0 = 0000014C
/* 01070 80971FC0 E7A00010 */ swc1 $f0, 0x0010($sp)
/* 01074 80971FC4 0C01B225 */ jal func_8006C894
/* 01074 80971FC4 0C01B225 */ jal SkelCurve_SetAnim
/* 01078 80971FC8 E7A00014 */ swc1 $f0, 0x0014($sp)
/* 0107C 80971FCC 8FA40034 */ lw $a0, 0x0034($sp)
/* 01080 80971FD0 0C01B231 */ jal func_8006C8C4
/* 01080 80971FD0 0C01B231 */ jal SkelCurve_Update
/* 01084 80971FD4 02002825 */ or $a1, $s0, $zero ## $a1 = 0000014C
/* 01088 80971FD8 8FB80030 */ lw $t8, 0x0030($sp)
/* 0108C 80971FDC 3C0F8097 */ lui $t7, %hi(func_80972008) ## $t7 = 80970000

View file

@ -23,7 +23,7 @@ glabel func_80972008
/* 0110C 8097205C 24C5014C */ addiu $a1, $a2, 0x014C ## $a1 = 0000014C
.L80972060:
/* 01110 80972060 AFA50024 */ sw $a1, 0x0024($sp)
/* 01114 80972064 0C01B231 */ jal func_8006C8C4
/* 01114 80972064 0C01B231 */ jal SkelCurve_Update
/* 01118 80972068 8FA4002C */ lw $a0, 0x002C($sp)
/* 0111C 8097206C 1040000B */ beq $v0, $zero, .L8097209C
/* 01120 80972070 8FA40024 */ lw $a0, 0x0024($sp)
@ -35,7 +35,7 @@ glabel func_80972008
/* 01138 80972088 3C063F80 */ lui $a2, 0x3F80 ## $a2 = 3F800000
/* 0113C 8097208C 3C074270 */ lui $a3, 0x4270 ## $a3 = 42700000
/* 01140 80972090 E7A40010 */ swc1 $f4, 0x0010($sp)
/* 01144 80972094 0C01B225 */ jal func_8006C894
/* 01144 80972094 0C01B225 */ jal SkelCurve_SetAnim
/* 01148 80972098 E7A60014 */ swc1 $f6, 0x0014($sp)
.L8097209C:
/* 0114C 8097209C 8FBF001C */ lw $ra, 0x001C($sp)

View file

@ -8,7 +8,7 @@ glabel func_80972344
/* 0140C 8097235C 8FA50028 */ lw $a1, 0x0028($sp)
/* 01410 80972360 8FA4002C */ lw $a0, 0x002C($sp)
/* 01414 80972364 24A5014C */ addiu $a1, $a1, 0x014C ## $a1 = 0000014C
/* 01418 80972368 0C01B231 */ jal func_8006C8C4
/* 01418 80972368 0C01B231 */ jal SkelCurve_Update
/* 0141C 8097236C AFA50024 */ sw $a1, 0x0024($sp)
/* 01420 80972370 10400010 */ beq $v0, $zero, .L809723B4
/* 01424 80972374 8FA40024 */ lw $a0, 0x0024($sp)
@ -20,7 +20,7 @@ glabel func_80972344
/* 0143C 8097238C 3C063F80 */ lui $a2, 0x3F80 ## $a2 = 3F800000
/* 01440 80972390 3C074270 */ lui $a3, 0x4270 ## $a3 = 42700000
/* 01444 80972394 E7A40010 */ swc1 $f4, 0x0010($sp)
/* 01448 80972398 0C01B225 */ jal func_8006C894
/* 01448 80972398 0C01B225 */ jal SkelCurve_SetAnim
/* 0144C 8097239C E7A60014 */ swc1 $f6, 0x0014($sp)
/* 01450 809723A0 8FA20028 */ lw $v0, 0x0028($sp)
/* 01454 809723A4 3C0E8097 */ lui $t6, %hi(func_80972288) ## $t6 = 80970000

View file

@ -59,7 +59,7 @@ glabel func_80976404
/* 0556C 809764BC 8FA5005C */ lw $a1, 0x005C($sp)
/* 05570 809764C0 AFA00010 */ sw $zero, 0x0010($sp)
/* 05574 809764C4 2486014C */ addiu $a2, $a0, 0x014C ## $a2 = 0000014C
/* 05578 809764C8 0C01B3DB */ jal func_8006CF6C
/* 05578 809764C8 0C01B3DB */ jal SkelCurve_Draw
/* 0557C 809764CC AFA40018 */ sw $a0, 0x0018($sp)
/* 05580 809764D0 3C068097 */ lui $a2, %hi(D_80976C44) ## $a2 = 80970000
/* 05584 809764D4 24C66C44 */ addiu $a2, $a2, %lo(D_80976C44) ## $a2 = 80976C44

View file

@ -3,7 +3,7 @@ glabel DemoTreLgt_Destroy
/* 00070 80993730 00803025 */ or $a2, $a0, $zero ## $a2 = 00000000
/* 00074 80993734 AFBF0014 */ sw $ra, 0x0014($sp)
/* 00078 80993738 00A02025 */ or $a0, $a1, $zero ## $a0 = 00000000
/* 0007C 8099373C 0C01B217 */ jal func_8006C85C
/* 0007C 8099373C 0C01B217 */ jal SkelCurve_Destroy
/* 00080 80993740 24C5014C */ addiu $a1, $a2, 0x014C ## $a1 = 0000014C
/* 00084 80993744 8FBF0014 */ lw $ra, 0x0014($sp)
/* 00088 80993748 27BD0018 */ addiu $sp, $sp, 0x0018 ## $sp = 00000000

View file

@ -33,7 +33,7 @@ glabel DemoTreLgt_Draw
/* 0066C 80993D2C AFA00010 */ sw $zero, 0x0010($sp)
/* 00670 80993D30 8FA5005C */ lw $a1, 0x005C($sp)
/* 00674 80993D34 AFA40018 */ sw $a0, 0x0018($sp)
/* 00678 80993D38 0C01B3DB */ jal func_8006CF6C
/* 00678 80993D38 0C01B3DB */ jal SkelCurve_Draw
/* 0067C 80993D3C 2486014C */ addiu $a2, $a0, 0x014C ## $a2 = 0000014C
/* 00680 80993D40 3C068099 */ lui $a2, %hi(D_80993E40) ## $a2 = 80990000
/* 00684 80993D44 24C63E40 */ addiu $a2, $a2, %lo(D_80993E40) ## $a2 = 80993E40

View file

@ -9,7 +9,7 @@ glabel DemoTreLgt_Init
/* 0001C 809936DC 3C078099 */ lui $a3, %hi(D_80993DB0) ## $a3 = 80990000
/* 00020 809936E0 8CE73DB0 */ lw $a3, %lo(D_80993DB0)($a3)
/* 00024 809936E4 24C65EB8 */ addiu $a2, $a2, 0x5EB8 ## $a2 = 06005EB8
/* 00028 809936E8 0C01B1DE */ jal func_8006C778
/* 00028 809936E8 0C01B1DE */ jal SkelCurve_Init
/* 0002C 809936EC 2605014C */ addiu $a1, $s0, 0x014C ## $a1 = 0000014C
/* 00030 809936F0 14400003 */ bne $v0, $zero, .L80993700
/* 00034 809936F4 3C048099 */ lui $a0, %hi(D_80993DC0) ## $a0 = 80990000

View file

@ -27,10 +27,10 @@ glabel func_809937B4
/* 00158 80993818 AFA40020 */ sw $a0, 0x0020($sp)
/* 0015C 8099381C 8CA53DB0 */ lw $a1, %lo(D_80993DB0)($a1)
/* 00160 80993820 E7A00014 */ swc1 $f0, 0x0014($sp)
/* 00164 80993824 0C01B225 */ jal func_8006C894
/* 00164 80993824 0C01B225 */ jal SkelCurve_SetAnim
/* 00168 80993828 E7AC0010 */ swc1 $f12, 0x0010($sp)
/* 0016C 8099382C 8FA40034 */ lw $a0, 0x0034($sp)
/* 00170 80993830 0C01B231 */ jal func_8006C8C4
/* 00170 80993830 0C01B231 */ jal SkelCurve_Update
/* 00174 80993834 8FA50020 */ lw $a1, 0x0020($sp)
/* 00178 80993838 8FBF001C */ lw $ra, 0x001C($sp)
/* 0017C 8099383C 27BD0030 */ addiu $sp, $sp, 0x0030 ## $sp = 00000000

View file

@ -174,7 +174,7 @@ glabel func_80993848
.L80993AC8:
/* 00408 80993AC8 8FA4002C */ lw $a0, 0x002C($sp)
.L80993ACC:
/* 0040C 80993ACC 0C01B231 */ jal func_8006C8C4
/* 0040C 80993ACC 0C01B231 */ jal SkelCurve_Update
/* 00410 80993AD0 2605014C */ addiu $a1, $s0, 0x014C ## $a1 = 0000014C
/* 00414 80993AD4 50400004 */ beql $v0, $zero, .L80993AE8
/* 00418 80993AD8 8FBF0024 */ lw $ra, 0x0024($sp)

View file

@ -18,7 +18,7 @@ glabel MagicWind_Destroy
/* 00158 80B8B258 AFBF0014 */ sw $ra, 0x0014($sp)
/* 0015C 80B8B25C AFA5001C */ sw $a1, 0x001C($sp)
/* 00160 80B8B260 00A02025 */ or $a0, $a1, $zero ## $a0 = 00000000
/* 00164 80B8B264 0C01B217 */ jal func_8006C85C
/* 00164 80B8B264 0C01B217 */ jal SkelCurve_Destroy
/* 00168 80B8B268 24C5014C */ addiu $a1, $a2, 0x014C ## $a1 = 0000014C
/* 0016C 80B8B26C 0C021DB2 */ jal func_800876C8
/* 00170 80B8B270 8FA4001C */ lw $a0, 0x001C($sp)

View file

@ -39,7 +39,7 @@ glabel MagicWind_Draw
/* 00718 80B8B818 AFA00018 */ sw $zero, 0x0018($sp)
/* 0071C 80B8B81C AFA00010 */ sw $zero, 0x0010($sp)
/* 00720 80B8B820 8FA50054 */ lw $a1, 0x0054($sp)
/* 00724 80B8B824 0C01B3DB */ jal func_8006CF6C
/* 00724 80B8B824 0C01B3DB */ jal SkelCurve_Draw
/* 00728 80B8B828 2486014C */ addiu $a2, $a0, 0x014C ## $a2 = 0000014C
.L80B8B82C:
/* 0072C 80B8B82C 3C0680B9 */ lui $a2, %hi(D_80B8CEAC) ## $a2 = 80B90000

View file

@ -30,7 +30,7 @@ glabel MagicWind_Init
/* 00030 80B8B130 24E7CD50 */ addiu $a3, $a3, %lo(D_80B8CD50) ## $a3 = 80B8CD50
/* 00034 80B8B134 24C6CD90 */ addiu $a2, $a2, %lo(D_80B8CD90) ## $a2 = 80B8CD90
/* 00038 80B8B138 AFA50028 */ sw $a1, 0x0028($sp)
/* 0003C 80B8B13C 0C01B1DE */ jal func_8006C778
/* 0003C 80B8B13C 0C01B1DE */ jal SkelCurve_Init
/* 00040 80B8B140 AFAF0030 */ sw $t7, 0x0030($sp)
/* 00044 80B8B144 14400003 */ bne $v0, $zero, .L80B8B154
/* 00048 80B8B148 3C0480B9 */ lui $a0, %hi(D_80B8CDB0) ## $a0 = 80B90000
@ -59,7 +59,7 @@ glabel MagicWind_Init
/* 00098 80B8B198 24A5CD50 */ addiu $a1, $a1, %lo(D_80B8CD50) ## $a1 = 80B8CD50
/* 0009C 80B8B19C 8FA40028 */ lw $a0, 0x0028($sp)
/* 000A0 80B8B1A0 E7A20010 */ swc1 $f2, 0x0010($sp)
/* 000A4 80B8B1A4 0C01B225 */ jal func_8006C894
/* 000A4 80B8B1A4 0C01B225 */ jal SkelCurve_SetAnim
/* 000A8 80B8B1A8 E7A40014 */ swc1 $f4, 0x0014($sp)
/* 000AC 80B8B1AC 2419001D */ addiu $t9, $zero, 0x001D ## $t9 = 0000001D
/* 000B0 80B8B1B0 3C0580B9 */ lui $a1, %hi(func_80B8B3C8) ## $a1 = 80B90000
@ -80,7 +80,7 @@ glabel MagicWind_Init
/* 000E8 80B8B1E8 44071000 */ mfc1 $a3, $f2
/* 000EC 80B8B1EC 24A5CD50 */ addiu $a1, $a1, %lo(D_80B8CD50) ## $a1 = 80B8CD50
/* 000F0 80B8B1F0 E7A00010 */ swc1 $f0, 0x0010($sp)
/* 000F4 80B8B1F4 0C01B225 */ jal func_8006C894
/* 000F4 80B8B1F4 0C01B225 */ jal SkelCurve_SetAnim
/* 000F8 80B8B1F8 E7A60014 */ swc1 $f6, 0x0014($sp)
/* 000FC 80B8B1FC 3C0580B9 */ lui $a1, %hi(func_80B8B564) ## $a1 = 80B90000
/* 00100 80B8B200 24A5B564 */ addiu $a1, $a1, %lo(func_80B8B564) ## $a1 = 80B8B564

View file

@ -50,7 +50,7 @@ glabel func_80B8B3C8
/* 00344 80B8B444 8FA40020 */ lw $a0, 0x0020($sp)
/* 00348 80B8B448 8FA50020 */ lw $a1, 0x0020($sp)
/* 0034C 80B8B44C 8FA40024 */ lw $a0, 0x0024($sp)
/* 00350 80B8B450 0C01B231 */ jal func_8006C8C4
/* 00350 80B8B450 0C01B231 */ jal SkelCurve_Update
/* 00354 80B8B454 24A5014C */ addiu $a1, $a1, 0x014C ## $a1 = 0000014C
.L80B8B458:
/* 00358 80B8B458 8FBF0014 */ lw $ra, 0x0014($sp)

View file

@ -4,7 +4,7 @@ glabel func_80B8B468
/* 00370 80B8B470 00A02025 */ or $a0, $a1, $zero ## $a0 = 00000000
/* 00374 80B8B474 8FA50018 */ lw $a1, 0x0018($sp)
/* 00378 80B8B478 AFBF0014 */ sw $ra, 0x0014($sp)
/* 0037C 80B8B47C 0C01B231 */ jal func_8006C8C4
/* 0037C 80B8B47C 0C01B231 */ jal SkelCurve_Update
/* 00380 80B8B480 24A5014C */ addiu $a1, $a1, 0x014C ## $a1 = 0000014C
/* 00384 80B8B484 10400007 */ beq $v0, $zero, .L80B8B4A4
/* 00388 80B8B488 8FA40018 */ lw $a0, 0x0018($sp)

View file

@ -4,7 +4,7 @@ glabel func_80B8B564
/* 0046C 80B8B56C 00A02025 */ or $a0, $a1, $zero ## $a0 = 00000000
/* 00470 80B8B570 8FA50018 */ lw $a1, 0x0018($sp)
/* 00474 80B8B574 AFBF0014 */ sw $ra, 0x0014($sp)
/* 00478 80B8B578 0C01B231 */ jal func_8006C8C4
/* 00478 80B8B578 0C01B231 */ jal SkelCurve_Update
/* 0047C 80B8B57C 24A5014C */ addiu $a1, $a1, 0x014C ## $a1 = 0000014C
/* 00480 80B8B580 50400004 */ beql $v0, $zero, .L80B8B594
/* 00484 80B8B584 8FBF0014 */ lw $ra, 0x0014($sp)

View file

@ -868,9 +868,16 @@ void Flags_UnsetAllEnv(GlobalContext* globalCtx);
void Flags_SetEnv(GlobalContext* globalCtx, s16 flag);
void Flags_UnsetEnv(GlobalContext* globalCtx, s16 flag);
s32 Flags_GetEnv(GlobalContext* globalCtx, s16 flag);
// ? func_8006C510(?);
// ? func_8006C5A8(?);
// ? func_8006CBAC(?);
f32 func_8006C5A8(f32 target, TransformData* transData, s32 refIdx);
void SkelCurve_Clear(SkelAnimeCurve* skelCurve);
s32 SkelCurve_Init(GlobalContext* globalCtx, SkelAnimeCurve* skelCurve, SkelCurveLimbList* limbListSeg,
TransformData* transData);
void SkelCurve_Destroy(GlobalContext* globalCtx, SkelAnimeCurve* skelCurve);
void SkelCurve_SetAnim(SkelAnimeCurve* skelCurve, TransformUpdateIndex* transUpdIdx, f32 arg2, f32 animFinalFrame,
f32 animCurFrame, f32 animSpeed);
s32 SkelCurve_Update(GlobalContext* globalCtx, SkelAnimeCurve* skelCurve);
void SkelCurve_Draw(Actor* actor, GlobalContext* globalCtx, SkelAnimeCurve* skelCurve,
OverrideCurveLimbDraw overrideLimbDraw, PostCurveLimbDraw postLimbDraw, s32 lod, Actor* actor2);
// ? func_8006CFC0(?);
// ? func_8006D074(?);
// ? func_8006D0AC(?);

View file

@ -188,4 +188,53 @@ typedef void (*AnimationEntryCallback)(struct GlobalContext*, AnimationEntryType
extern u32 link_animetion_segment;
// fcurve_skelanime structs
typedef struct {
/* 0x0000 */ u16 unk_00; // appears to be flags
/* 0x0002 */ s16 unk_02;
/* 0x0004 */ s16 unk_04;
/* 0x0006 */ s16 unk_06;
/* 0x0008 */ f32 unk_08;
} TransformData; // size = 0xC
typedef struct {
/* 0x0000 */ u8* refIndex;
/* 0x0004 */ TransformData *transformData;
/* 0x0008 */ s16* copyValues;
/* 0x000C */ s16 unk_0C;
/* 0x000E */ s16 unk_10;
} TransformUpdateIndex; // size 0x10
typedef struct {
/* 0x0000 */ u8 firstChildIdx;
/* 0x0001 */ u8 nextLimbIdx;
/* 0x0004 */ Gfx* dList[2];
} SkelCurveLimb; // size >= 0x8
typedef struct {
/* 0x0000 */ SkelCurveLimb** limbs;
/* 0x0004 */ u8 limbCount;
} SkelCurveLimbList; // size = 0x8
typedef struct {
/* 0x0000 */ Vec3s scale;
/* 0x0006 */ Vec3s rot;
/* 0x000C */ Vec3s pos;
} LimbTransform; // size = 0x12
typedef struct {
/* 0x0000 */ u8 limbCount;
/* 0x0004 */ SkelCurveLimb** limbList;
/* 0x0008 */ TransformUpdateIndex *transUpdIdx;
/* 0x000C */ f32 unk_0C; // seems to be unused
/* 0x0010 */ f32 animFinalFrame;
/* 0x0014 */ f32 animSpeed;
/* 0x0018 */ f32 animCurFrame;
/* 0x001C */ LimbTransform* transforms;
} SkelAnimeCurve; // size = 0x20
typedef s32 (*OverrideCurveLimbDraw)(struct GlobalContext* globalCtx, SkelAnimeCurve* skelCuve, s32 limbIndex, struct Actor* actor);
typedef void (*PostCurveLimbDraw)(struct GlobalContext* globalCtx, SkelAnimeCurve* skelCuve, s32 limbIndex, struct Actor* actor);
#endif

3
spec
View file

@ -3600,8 +3600,7 @@ endseg
beginseg
name "ovl_Magic_Wind"
include "build/src/overlays/actors/ovl_Magic_Wind/z_magic_wind.o"
include "build/data/overlays/actors/z_magic_wind.data.o"
include "build/data/overlays/actors/z_magic_wind.reloc.o"
include "build/src/overlays/actors/ovl_Magic_Wind/z_magic_wind_reloc.o"
endseg
beginseg

View file

@ -1,6 +1,41 @@
#include <ultra64.h>
#include <global.h>
#pragma GLOBAL_ASM("asm/non_matchings/code/code_8006C510/func_8006C510.s")
f32 func_8006C510(f32 arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4, f32 arg5) {
char pad[0x1C];
f32 sq = SQ(arg0);
f32 cube = sq * arg0;
#pragma GLOBAL_ASM("asm/non_matchings/code/code_8006C510/func_8006C5A8.s")
return (((cube + cube) - sq * 3.0f) + 1.0f) * arg2 + (sq * 3.0f - (cube + cube)) * arg3 +
((cube - (sq + sq)) + arg0) * arg4 * arg1 + (cube - sq) * arg5 * arg1;
}
f32 func_8006C5A8(f32 target, TransformData* transData, s32 refIdx) {
s32 i;
s32 j;
if (target <= transData->unk_02) {
return transData->unk_08;
}
if (target >= transData[refIdx - 1].unk_02) {
return transData[refIdx - 1].unk_08;
}
for (i = 0;; i++) {
j = i + 1;
if (transData[j].unk_02 > target) {
if (transData[i].unk_00 & 1) {
return transData[i].unk_08;
} else if (transData[i].unk_00 & 2) {
return transData[i].unk_08 +
((target - (f32)transData[i].unk_02) / ((f32)transData[j].unk_02 - (f32)transData[i].unk_02)) *
(transData[j].unk_08 - transData[i].unk_08);
} else {
f32 diff = (f32)transData[j].unk_02 - (f32)transData[i].unk_02;
return func_8006C510((target - transData[i].unk_02) / ((f32)transData[j].unk_02 - transData[i].unk_02),
diff * (1.0f / 30.0f), transData[i].unk_08, transData[j].unk_08,
transData[i].unk_06, transData[j].unk_04);
}
}
}
}

View file

@ -1,16 +1,188 @@
#include <ultra64.h>
#include <global.h>
#pragma GLOBAL_ASM("asm/non_matchings/code/z_fcurve_data_skelanime/func_8006C750.s")
void SkelCurve_Clear(SkelAnimeCurve* skelCurve) {
skelCurve->limbCount = 0;
skelCurve->limbList = NULL;
skelCurve->transUpdIdx = NULL;
skelCurve->animCurFrame = 0.0f;
skelCurve->animSpeed = 0.0f;
skelCurve->animFinalFrame = 0.0f;
skelCurve->transforms = NULL;
skelCurve->unk_0C = 0.0f;
}
#pragma GLOBAL_ASM("asm/non_matchings/code/z_fcurve_data_skelanime/func_8006C778.s")
s32 SkelCurve_Init(GlobalContext* globalCtx, SkelAnimeCurve* skelCurve, SkelCurveLimbList* limbListSeg,
TransformData* transData) {
SkelCurveLimb** limbs;
SkelCurveLimbList* limbList = SEGMENTED_TO_VIRTUAL(limbListSeg);
#pragma GLOBAL_ASM("asm/non_matchings/code/z_fcurve_data_skelanime/func_8006C85C.s")
skelCurve->limbCount = limbList->limbCount;
skelCurve->limbList = SEGMENTED_TO_VIRTUAL(limbList->limbs);
#pragma GLOBAL_ASM("asm/non_matchings/code/z_fcurve_data_skelanime/func_8006C894.s")
skelCurve->transforms = ZeldaArena_MallocDebug(sizeof(*skelCurve->transforms) * skelCurve->limbCount,
"../z_fcurve_data_skelanime.c", 125);
if (skelCurve->transforms == NULL) {
__assert("this->now_joint != NULL", "../z_fcurve_data_skelanime.c", 127);
}
do {
skelCurve->animCurFrame = 0.0f;
} while (0);
return 1;
}
#pragma GLOBAL_ASM("asm/non_matchings/code/z_fcurve_data_skelanime/func_8006C8C4.s")
void SkelCurve_Destroy(GlobalContext* globalCtx, SkelAnimeCurve* skelCurve) {
if (skelCurve->transforms != NULL) {
ZeldaArena_FreeDebug(skelCurve->transforms, "../z_fcurve_data_skelanime.c", 146);
}
}
#pragma GLOBAL_ASM("asm/non_matchings/code/z_fcurve_data_skelanime/func_8006CBAC.s")
void SkelCurve_SetAnim(SkelAnimeCurve* skelCurve, TransformUpdateIndex* transUpdIdx, f32 arg2, f32 animFinalFrame,
f32 animCurFrame, f32 animSpeed) {
skelCurve->unk_0C = arg2 - skelCurve->animSpeed;
skelCurve->animFinalFrame = animFinalFrame;
skelCurve->animCurFrame = animCurFrame;
skelCurve->animSpeed = animSpeed;
skelCurve->transUpdIdx = transUpdIdx;
}
#pragma GLOBAL_ASM("asm/non_matchings/code/z_fcurve_data_skelanime/func_8006CF6C.s")
s32 SkelCurve_Update(GlobalContext* globalCtx, SkelAnimeCurve* skelCurve) {
s16* transforms;
u8* transformRefIdx;
TransformUpdateIndex* transformIndex;
u16* transformCopyValues;
s32 i;
s32 ret;
s32 k;
TransformData* transData;
f32 transformValue;
s32 j;
ret = 0;
transformIndex = SEGMENTED_TO_VIRTUAL(skelCurve->transUpdIdx);
transformRefIdx = SEGMENTED_TO_VIRTUAL(transformIndex->refIndex);
transData = SEGMENTED_TO_VIRTUAL(transformIndex->transformData);
transformCopyValues = SEGMENTED_TO_VIRTUAL(transformIndex->copyValues);
transforms = (s16*)skelCurve->transforms;
skelCurve->animCurFrame += skelCurve->animSpeed * R_UPDATE_RATE * 0.5f;
if ((skelCurve->animSpeed >= 0.0f && skelCurve->animCurFrame > skelCurve->animFinalFrame) ||
(skelCurve->animSpeed < 0.0f && skelCurve->animCurFrame < skelCurve->animFinalFrame)) {
skelCurve->animCurFrame = skelCurve->animFinalFrame;
ret = 1;
}
for (i = 0; i < skelCurve->limbCount; i++) {
for (j = 0; j < 3; j++) {
for (k = 0; k < 3; k++, transformRefIdx++, transforms++) {
if (*transformRefIdx == 0) {
transformValue = *transformCopyValues;
*transforms = transformValue;
transformCopyValues++;
} else {
transformValue = func_8006C5A8(skelCurve->animCurFrame, transData, *transformRefIdx);
transData += *transformRefIdx;
if (j == 0) {
*transforms = transformValue * 1024.0f;
} else if (j == 1) {
*transforms = transformValue * (32768.0f / 180.0f);
} else {
*transforms = transformValue * 100.0f;
}
}
}
}
}
return ret;
}
#ifdef NON_MATCHING
// Very minor stack alloc, lod = 0 gSPMatrix places gfxPtr at stack + 0x4c instead of 0x50
void SkelCurve_DrawLimb(GlobalContext* globalCtx, s32 limbIndex, SkelAnimeCurve* skelCurve,
OverrideCurveLimbDraw overrideLimbDraw, PostCurveLimbDraw postLimbDraw, s32 lod, Actor* actor) {
SkelCurveLimb* limb = SEGMENTED_TO_VIRTUAL(skelCurve->limbList[limbIndex]);
Gfx* dispRefs[5];
Vec3f scale;
Vec3s rot;
Vec3f pos;
Gfx* d;
Vec3s* transform;
GraphicsContext* gfxCtx = globalCtx->state.gfxCtx;
s32 pad;
Graph_OpenDisps(dispRefs, globalCtx->state.gfxCtx, "../z_fcurve_data_skelanime.c", 279);
Matrix_Push();
if (overrideLimbDraw == NULL ||
(overrideLimbDraw != NULL && overrideLimbDraw(globalCtx, skelCurve, limbIndex, actor))) {
transform = &skelCurve->transforms[limbIndex];
scale.x = transform->x * (1.0f / 1024.0f);
scale.y = transform->y * (1.0f / 1024.0f);
scale.z = transform->z * (1.0f / 1024.0f);
transform++;
rot.x = transform->x;
rot.y = transform->y;
rot.z = transform->z;
transform++;
pos.x = transform->x;
pos.y = transform->y;
pos.z = transform->z;
Matrix_JointPosition(&pos, &rot);
Matrix_Scale(scale.x, scale.y, scale.z, MTXMODE_APPLY);
if (lod == 0) {
d = limb->dList[0];
if (d != NULL) {
gSPMatrix(gfxCtx->polyOpa.p++,
Matrix_NewMtx(globalCtx->state.gfxCtx, "../z_fcurve_data_skelanime.c", 321),
G_MTX_LOAD | G_MTX_NOPUSH | G_MTX_MODELVIEW);
gSPDisplayList(gfxCtx->polyOpa.p++, d);
}
} else if (lod == 1) {
d = limb->dList[0];
if (d != NULL) {
gSPMatrix(gfxCtx->polyOpa.p++,
Matrix_NewMtx(globalCtx->state.gfxCtx, "../z_fcurve_data_skelanime.c", 332),
G_MTX_LOAD | G_MTX_NOPUSH | G_MTX_MODELVIEW);
gSPDisplayList(gfxCtx->polyOpa.p++, d);
}
d = limb->dList[1];
if (d != NULL) {
gSPMatrix(gfxCtx->polyXlu.p++,
Matrix_NewMtx(globalCtx->state.gfxCtx, "../z_fcurve_data_skelanime.c", 338),
G_MTX_LOAD | G_MTX_NOPUSH | G_MTX_MODELVIEW);
gSPDisplayList(gfxCtx->polyXlu.p++, d);
}
} else {
// FcSkeletonInfo_draw_child (): Not supported
osSyncPrintf("FcSkeletonInfo_draw_child():未対応\n");
}
}
if (postLimbDraw != NULL) {
postLimbDraw(globalCtx, skelCurve, limbIndex, actor);
}
if (limb->firstChildIdx != LIMB_DONE) {
SkelCurve_DrawLimb(globalCtx, limb->firstChildIdx, skelCurve, overrideLimbDraw, postLimbDraw, lod, actor);
}
Matrix_Pull();
if (limb->nextLimbIdx != LIMB_DONE) {
SkelCurve_DrawLimb(globalCtx, limb->nextLimbIdx, skelCurve, overrideLimbDraw, postLimbDraw, lod, actor);
}
Graph_CloseDisps(dispRefs, globalCtx->state.gfxCtx, "../z_fcurve_data_skelanime.c", 371);
}
#else
#pragma GLOBAL_ASM("asm/non_matchings/code/z_fcurve_data_skelanime/SkelCurve_DrawLimb.s")
#endif
void SkelCurve_Draw(Actor* actor, GlobalContext* globalCtx, SkelAnimeCurve* skelCurve,
OverrideCurveLimbDraw overrideLimbDraw, PostCurveLimbDraw postLimbDraw, s32 lod, Actor* actor2) {
if (skelCurve->transforms != NULL) {
SkelCurve_DrawLimb(globalCtx, 0, skelCurve, overrideLimbDraw, postLimbDraw, lod, actor2);
}
}

View file

@ -15,7 +15,12 @@ void MagicWind_Destroy(Actor* thisx, GlobalContext* globalCtx);
void MagicWind_Update(Actor* thisx, GlobalContext* globalCtx);
void MagicWind_Draw(Actor* thisx, GlobalContext* globalCtx);
/*
void MagicWind_Shrink(MagicWind* this, GlobalContext* globalCtx);
void MagicWind_WaitForTimer(MagicWind* this, GlobalContext* globalCtx);
void MagicWind_FadeOut(MagicWind* this, GlobalContext* globalCtx);
void MagicWind_WaitAtFullSize(MagicWind* this, GlobalContext* globalCtx);
void MagicWind_Grow(MagicWind* this, GlobalContext* globalCtx);
const ActorInit Magic_Wind_InitVars = {
ACTOR_MAGIC_WIND,
ACTORTYPE_ITEMACTION,
@ -27,27 +32,233 @@ const ActorInit Magic_Wind_InitVars = {
(ActorFunc)MagicWind_Update,
(ActorFunc)MagicWind_Draw,
};
*/
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Magic_Wind/func_80B8B100.s")
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Magic_Wind/MagicWind_Init.s")
#include "z_magic_wind_gfx.c"
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Magic_Wind/MagicWind_Destroy.s")
u8 sTransformRefIdx[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Magic_Wind/func_80B8B2A8.s")
s16 sCopyValues[] = {
0x0400, 0x0400, 0x0400, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0200, 0x0200, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x02CD, 0x02CD, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
};
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Magic_Wind/func_80B8B3C8.s")
TransformData sTransformData[] = {
{
0x000C,
0x0001,
0x0001,
0x0001,
0.0f,
},
{
0x0014,
0x003C,
0x0000,
0x0000,
1.5f,
},
{
0x000C,
0x0001,
0x0001,
0x0001,
0.0f,
},
{
0x0014,
0x003C,
0x0000,
0x0000,
1.0f,
},
};
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Magic_Wind/func_80B8B468.s")
TransformUpdateIndex sTransformUpdIdx = {
sTransformRefIdx, sTransformData, sCopyValues, 0x0001, 0x0003C,
};
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Magic_Wind/func_80B8B4B4.s")
SkelCurveLimb sRootLimb = {
0x01,
0xFF,
{
NULL,
NULL,
},
};
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Magic_Wind/func_80B8B500.s")
SkelCurveLimb sInnerCylinder = {
0xFF,
0x02,
{
NULL,
sInnerCylinderDList,
},
};
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Magic_Wind/func_80B8B564.s")
SkelCurveLimb sOuterCylinder = {
0xFF,
0xFF,
{
NULL,
sOuterCylinderDList,
},
};
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Magic_Wind/MagicWind_Update.s")
SkelCurveLimb* sLimbs[] = {
&sRootLimb,
&sInnerCylinder,
&sOuterCylinder,
};
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Magic_Wind/func_80B8B5F4.s")
SkelCurveLimbList sLimbList = {
sLimbs,
0x03,
};
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Magic_Wind/MagicWind_Draw.s")
u8 sAlphaUpdVals[] = {
0x00, 0x03, 0x04, 0x07, 0x09, 0x0A, 0x0D, 0x0F, 0x11, 0x12, 0x15, 0x16, 0x19, 0x1B, 0x1C, 0x1F, 0x21, 0x23,
};
void MagicWind_SetupAction(MagicWind* this, MagicWindFunc actionFunc) {
this->actionFunc = actionFunc;
}
void MagicWind_Init(Actor* thisx, GlobalContext* globalCtx) {
MagicWind* this = THIS;
Player* player = PLAYER;
if (SkelCurve_Init(globalCtx, &this->skelCurve, &sLimbList, &sTransformUpdIdx) == 0) {
// Magic_Wind_Actor_ct (): Construct failed
osSyncPrintf("Magic_Wind_Actor_ct():コンストラクト失敗\n");
}
this->actor.room = -1;
switch (this->actor.params) {
case 0:
SkelCurve_SetAnim(&this->skelCurve, &sTransformUpdIdx, 0.0f, 60.0f, 0.0f, 1.0f);
this->timer = 29;
MagicWind_SetupAction(this, MagicWind_WaitForTimer);
break;
case 1:
SkelCurve_SetAnim(&this->skelCurve, &sTransformUpdIdx, 60.0f, 0.0f, 60.0f, -1.0f);
MagicWind_SetupAction(this, MagicWind_Shrink);
// "Indicates start" = %s
// Means start
LOG_STRING("表示開始", "../z_magic_wind.c", 486);
func_8002F7DC(player, 0x087B);
break;
}
}
void MagicWind_Destroy(Actor* thisx, GlobalContext* globalCtx) {
MagicWind* this = THIS;
SkelCurve_Destroy(globalCtx, &this->skelCurve);
func_800876C8(globalCtx);
// wipe out
LOG_STRING("消滅", "../z_magic_wind.c", 505);
}
void MagicWind_UpdateAlpha(f32 alpha) {
s32 i;
for (i = 0; i < ARRAY_COUNT(sAlphaUpdVals); i++) {
sCylinderVtx[sAlphaUpdVals[i]].n.a = alpha * 255.0f;
}
}
void MagicWind_WaitForTimer(MagicWind* this, GlobalContext* globalCtx) {
Player* player = PLAYER;
if (this->timer > 0) {
this->timer--;
return;
}
// Means start
LOG_STRING("表示開始", "../z_magic_wind.c", 539);
func_8002F7DC(&player->actor, 0x87A);
MagicWind_UpdateAlpha(1.0f);
MagicWind_SetupAction(this, MagicWind_Grow);
SkelCurve_Update(globalCtx, &this->skelCurve);
}
void MagicWind_Grow(MagicWind* this, GlobalContext* globalCtx) {
if (SkelCurve_Update(globalCtx, &this->skelCurve)) {
MagicWind_SetupAction(this, MagicWind_WaitAtFullSize);
this->timer = 50;
}
}
void MagicWind_WaitAtFullSize(MagicWind* this, GlobalContext* globalCtx) {
if (this->timer > 0) {
this->timer--;
} else {
MagicWind_SetupAction(this, MagicWind_FadeOut);
this->timer = 30;
}
}
void MagicWind_FadeOut(MagicWind* this, GlobalContext* globalCtx) {
if (this->timer > 0) {
MagicWind_UpdateAlpha((f32)this->timer * (1.0f / 30.0f));
this->timer--;
} else {
Actor_Kill(&this->actor);
}
}
void MagicWind_Shrink(MagicWind* this, GlobalContext* globalCtx) {
if (SkelCurve_Update(globalCtx, &this->skelCurve)) {
Actor_Kill(&this->actor);
}
}
void MagicWind_Update(Actor* thisx, GlobalContext* globalCtx) {
MagicWind* this = THIS;
if (globalCtx->msgCtx.msgMode == 0xD || globalCtx->msgCtx.msgMode == 0x11) {
Actor_Kill(thisx);
return;
}
this->actionFunc(this, globalCtx);
}
s32 MagicWind_OverrideLimbDraw(GlobalContext* globalCtx, SkelAnimeCurve* skelCurve, s32 limbIndex, Actor* thisx) {
MagicWind* this = THIS;
GraphicsContext* gfxCtx = globalCtx->state.gfxCtx;
Gfx* dispRefs[4];
Graph_OpenDisps(dispRefs, globalCtx->state.gfxCtx, "../z_magic_wind.c", 615);
if (limbIndex == 1) {
gSPSegment(gfxCtx->polyXlu.p++, 8,
Gfx_TwoTexScroll(globalCtx->state.gfxCtx, 0, (globalCtx->state.frames * 9) & 0xFF,
0xFF - ((globalCtx->state.frames * 0xF) & 0xFF), 0x40, 0x40, 1,
(globalCtx->state.frames * 0xF) & 0xFF,
0xFF - ((globalCtx->state.frames * 0x1E) & 0xFF), 0x40, 0x40));
} else if (limbIndex == 2) {
gSPSegment(gfxCtx->polyXlu.p++, 9,
Gfx_TwoTexScroll(globalCtx->state.gfxCtx, 0, (globalCtx->state.frames * 3) & 0xFF,
0xFF - ((globalCtx->state.frames * 5) & 0xFF), 0x40, 0x40, 1,
(globalCtx->state.frames * 6) & 0xFF,
0xFF - ((globalCtx->state.frames * 0xA) & 0xFF), 0x40, 0x40));
}
Graph_CloseDisps(dispRefs, globalCtx->state.gfxCtx, "../z_magic_wind.c", 646);
return 1;
}
void MagicWind_Draw(Actor* thisx, GlobalContext* globalCtx) {
s32 pad;
MagicWind* this = THIS;
GraphicsContext* gfxCtx = globalCtx->state.gfxCtx;
Gfx* dispRefs[4];
Graph_OpenDisps(dispRefs, gfxCtx, "../z_magic_wind.c", 661);
if (this->actionFunc != MagicWind_WaitForTimer) {
gfxCtx->polyXlu.p = Gfx_CallSetupDL(gfxCtx->polyXlu.p, 25);
SkelCurve_Draw(thisx, globalCtx, &this->skelCurve, MagicWind_OverrideLimbDraw, NULL, 1, NULL);
}
Graph_CloseDisps(dispRefs, gfxCtx, "../z_magic_wind.c", 673);
}

View file

@ -6,9 +6,13 @@
struct MagicWind;
typedef void (*MagicWindFunc)(struct MagicWind* this, GlobalContext* globalCtx);
typedef struct MagicWind {
/* 0x0000 */ Actor actor;
/* 0x014C */ char unk_14C[0x28];
/* 0x014C */ SkelAnimeCurve skelCurve;
/* 0x016C */ s16 timer;
/* 0x0170 */ MagicWindFunc actionFunc;
} MagicWind; // size = 0x0174
extern const ActorInit Magic_Wind_InitVars;

View file

@ -0,0 +1,315 @@
#include <global.h>
Vtx sCylinderVtx[] = {
VTX(0, 0, -6000, 1024, 2048, 0xFF, 0xFF, 0xFF, 0xFF),
VTX(-4243, 12800, -4243, 1280, 0, 0xFF, 0xFF, 0xFF, 0x00),
VTX(0, 12800, -6000, 1024, 0, 0xFF, 0xFF, 0xFF, 0x00),
VTX(-4243, 0, -4243, 1280, 2048, 0xFF, 0xFF, 0xFF, 0xFF),
VTX(0, 0, 6000, 0, 2048, 0xFF, 0xFF, 0xFF, 0xFF),
VTX(4243, 12800, 4243, 256, 0, 0xFF, 0xFF, 0xFF, 0x00),
VTX(0, 12800, 6000, 0, 0, 0xFF, 0xFF, 0xFF, 0x00),
VTX(4243, 0, 4243, 256, 2048, 0xFF, 0xFF, 0xFF, 0xFF),
VTX(-6000, 12800, 0, 1536, 0, 0xFF, 0xFF, 0xFF, 0x00),
VTX(-6000, 0, 0, 1536, 2048, 0xFF, 0xFF, 0xFF, 0xFF),
VTX(4243, 0, -4243, 768, 2048, 0xFF, 0xFF, 0xFF, 0xFF),
VTX(4243, 12800, -4243, 768, 0, 0xFF, 0xFF, 0xFF, 0x00),
VTX(-4243, 12800, 4243, 1792, 0, 0xFF, 0xFF, 0xFF, 0x00),
VTX(-4243, 0, 4243, 1792, 2048, 0xFF, 0xFF, 0xFF, 0xFF),
VTX(6000, 12800, 0, 512, 0, 0xFF, 0xFF, 0xFF, 0x00),
VTX(6000, 0, 0, 512, 2048, 0xFF, 0xFF, 0xFF, 0xFF),
VTX(0, 12800, 6000, 2048, 0, 0xFF, 0xFF, 0xFF, 0x00),
VTX(0, 0, 6000, 2048, 2048, 0xFF, 0xFF, 0xFF, 0xFF),
// 2nd Set
VTX(0, 0, -6000, 1024, 2048, 0xFF, 0xFF, 0xFF, 0xFF),
VTX(-4243, 12800, -4243, 1280, 0, 0xFF, 0xFF, 0xFF, 0x00),
VTX(0, 12800, -6000, 1024, 0, 0xFF, 0xFF, 0xFF, 0x00),
VTX(-4243, 0, -4243, 1280, 2048, 0xFF, 0xFF, 0xFF, 0xFF),
VTX(0, 0, 6000, 0, 2048, 0xFF, 0xFF, 0xFF, 0xFF),
VTX(4243, 12800, 4243, 256, 0, 0xFF, 0xFF, 0xFF, 0x00),
VTX(0, 12800, 6000, 0, 0, 0xFF, 0xFF, 0xFF, 0x00),
VTX(4243, 0, 4243, 256, 2048, 0xFF, 0xFF, 0xFF, 0xFF),
VTX(-6000, 12800, 0, 1536, 0, 0xFF, 0xFF, 0xFF, 0x00),
VTX(-6000, 0, 0, 1536, 2048, 0xFF, 0xFF, 0xFF, 0xFF),
VTX(4243, 0, -4243, 768, 2048, 0xFF, 0xFF, 0xFF, 0xFF),
VTX(4243, 12800, -4243, 768, 0, 0xFF, 0xFF, 0xFF, 0x00),
VTX(-4243, 12800, 4243, 1792, 0, 0xFF, 0xFF, 0xFF, 0x00),
VTX(-4243, 0, 4243, 1792, 2048, 0xFF, 0xFF, 0xFF, 0xFF),
VTX(6000, 12800, 0, 512, 0, 0xFF, 0xFF, 0xFF, 0x00),
VTX(6000, 0, 0, 512, 2048, 0xFF, 0xFF, 0xFF, 0xFF),
VTX(0, 12800, 6000, 2048, 0, 0xFF, 0xFF, 0xFF, 0x00),
VTX(0, 0, 6000, 2048, 2048, 0xFF, 0xFF, 0xFF, 0xFF),
};
char sWindEffTexture[] = {
0x06, 0x19, 0x28, 0x43, 0x66, 0x82, 0xA0, 0xAE, 0xA3, 0x93, 0x76, 0x56, 0x32, 0x12, 0x00, 0x00, 0x03, 0x15, 0x25,
0x39, 0x57, 0x81, 0xAD, 0xBC, 0xA4, 0x7B, 0x5D, 0x45, 0x33, 0x20, 0x24, 0x38, 0x33, 0x1F, 0x26, 0x4F, 0x71, 0x8C,
0xB2, 0xC9, 0xC7, 0xAE, 0x87, 0x57, 0x33, 0x24, 0x11, 0x00, 0x00, 0x05, 0x1C, 0x3B, 0x5E, 0x7D, 0x90, 0x93, 0x85,
0x76, 0x78, 0x81, 0x70, 0x3E, 0x14, 0x01, 0x16, 0x27, 0x33, 0x4F, 0x6C, 0x84, 0x96, 0x9A, 0x9B, 0x8C, 0x70, 0x4F,
0x27, 0x09, 0x00, 0x00, 0x05, 0x15, 0x29, 0x43, 0x68, 0x96, 0xB9, 0xB7, 0x99, 0x6E, 0x4C, 0x34, 0x2A, 0x20, 0x26,
0x31, 0x2B, 0x20, 0x2F, 0x4D, 0x66, 0x8F, 0xB5, 0xC0, 0xB4, 0x97, 0x6B, 0x46, 0x31, 0x1E, 0x07, 0x00, 0x00, 0x0C,
0x27, 0x4C, 0x6B, 0x8C, 0x9E, 0x9A, 0x8B, 0x7A, 0x7A, 0x7C, 0x66, 0x42, 0x1E, 0x0B, 0x27, 0x30, 0x3E, 0x61, 0x7C,
0x8F, 0x97, 0xA0, 0xA2, 0x87, 0x6F, 0x51, 0x2A, 0x0C, 0x00, 0x00, 0x09, 0x1D, 0x35, 0x59, 0x83, 0xAC, 0xC0, 0xB5,
0x8E, 0x5E, 0x3E, 0x2E, 0x28, 0x25, 0x24, 0x27, 0x26, 0x28, 0x39, 0x4D, 0x6C, 0xA0, 0xB8, 0xB3, 0xA0, 0x7A, 0x58,
0x40, 0x2E, 0x13, 0x00, 0x00, 0x06, 0x1B, 0x3B, 0x5D, 0x84, 0xA9, 0xB2, 0xAD, 0x99, 0x8B, 0x8F, 0x87, 0x67, 0x43,
0x25, 0x1C, 0x2D, 0x3A, 0x4F, 0x73, 0x8D, 0x9D, 0xA8, 0xAB, 0x9F, 0x85, 0x72, 0x5B, 0x36, 0x16, 0x03, 0x00, 0x11,
0x29, 0x48, 0x72, 0xA0, 0xC6, 0xC7, 0xAC, 0x80, 0x52, 0x36, 0x28, 0x27, 0x23, 0x1B, 0x1E, 0x24, 0x2E, 0x3A, 0x50,
0x7B, 0xA6, 0xB3, 0xA6, 0x8F, 0x68, 0x4D, 0x39, 0x24, 0x08, 0x00, 0x00, 0x11, 0x2D, 0x4F, 0x73, 0xA2, 0xC1, 0xC8,
0xBD, 0xAF, 0xB2, 0xB4, 0x95, 0x65, 0x40, 0x2B, 0x25, 0x30, 0x48, 0x5E, 0x7D, 0x96, 0xA9, 0xB4, 0xAC, 0x9B, 0x8A,
0x79, 0x60, 0x3A, 0x1B, 0x0B, 0x0A, 0x1A, 0x35, 0x5C, 0x8B, 0xBC, 0xD6, 0xC9, 0xA0, 0x73, 0x4D, 0x2F, 0x1E, 0x20,
0x1D, 0x11, 0x19, 0x28, 0x31, 0x38, 0x53, 0x83, 0xA2, 0xA9, 0x9D, 0x81, 0x5B, 0x42, 0x30, 0x1D, 0x02, 0x00, 0x06,
0x1D, 0x3C, 0x61, 0x8D, 0xBA, 0xD8, 0xDB, 0xC7, 0xC7, 0xCE, 0xC1, 0x8C, 0x5C, 0x44, 0x35, 0x27, 0x3A, 0x58, 0x6C,
0x84, 0x9B, 0xAF, 0xB4, 0xAE, 0xA3, 0x91, 0x78, 0x52, 0x2E, 0x17, 0x11, 0x14, 0x26, 0x48, 0x72, 0xA4, 0xD4, 0xDF,
0xC7, 0x99, 0x72, 0x53, 0x32, 0x1C, 0x1F, 0x1B, 0x19, 0x2A, 0x39, 0x3C, 0x46, 0x63, 0x8A, 0xA0, 0xA3, 0x96, 0x73,
0x51, 0x3D, 0x30, 0x1C, 0x02, 0x00, 0x10, 0x2A, 0x4D, 0x79, 0xA6, 0xD5, 0xEF, 0xE6, 0xD5, 0xD0, 0xC8, 0xAB, 0x77,
0x57, 0x4F, 0x3F, 0x2E, 0x44, 0x63, 0x77, 0x87, 0x9F, 0xAD, 0xB3, 0xB7, 0xAF, 0x90, 0x64, 0x39, 0x1C, 0x11, 0x14,
0x1F, 0x38, 0x5C, 0x8A, 0xBF, 0xE8, 0xE7, 0xC6, 0x9E, 0x7F, 0x64, 0x48, 0x31, 0x2B, 0x31, 0x3F, 0x4C, 0x4E, 0x53,
0x66, 0x80, 0x96, 0xA4, 0xA3, 0x8E, 0x66, 0x4F, 0x47, 0x3B, 0x1F, 0x06, 0x06, 0x1C, 0x3A, 0x63, 0x93, 0xC2, 0xEF,
0xFC, 0xED, 0xDD, 0xC2, 0xA4, 0x85, 0x64, 0x5A, 0x5A, 0x43, 0x38, 0x48, 0x66, 0x7A, 0x8A, 0xA0, 0xAA, 0xB2, 0xBC,
0xAB, 0x78, 0x45, 0x21, 0x10, 0x0D, 0x19, 0x2F, 0x4D, 0x72, 0xA3, 0xD7, 0xF7, 0xED, 0xCC, 0xAE, 0x94, 0x7F, 0x69,
0x53, 0x52, 0x63, 0x65, 0x5E, 0x5C, 0x69, 0x80, 0x97, 0xA4, 0xAA, 0xA1, 0x80, 0x60, 0x5B, 0x5E, 0x4C, 0x27, 0x0D,
0x12, 0x2B, 0x4E, 0x7B, 0xAB, 0xDE, 0xFF, 0xFD, 0xEC, 0xD2, 0xA5, 0x7A, 0x69, 0x62, 0x66, 0x61, 0x45, 0x40, 0x4D,
0x62, 0x79, 0x8D, 0xA3, 0xAB, 0xB3, 0xB0, 0x89, 0x52, 0x28, 0x12, 0x0A, 0x10, 0x25, 0x43, 0x63, 0x8C, 0xBE, 0xEA,
0xFF, 0xF7, 0xDE, 0xC4, 0xB0, 0x9F, 0x8B, 0x7C, 0x8B, 0x89, 0x6F, 0x62, 0x66, 0x77, 0x8C, 0xA3, 0xB2, 0xAF, 0x99,
0x73, 0x67, 0x73, 0x72, 0x58, 0x33, 0x1C, 0x23, 0x3D, 0x65, 0x91, 0xC4, 0xF2, 0xFF, 0xF5, 0xDD, 0xBA, 0x8A, 0x66,
0x6E, 0x79, 0x79, 0x66, 0x4A, 0x47, 0x57, 0x65, 0x7D, 0x95, 0xAA, 0xB5, 0xB3, 0x94, 0x5C, 0x2E, 0x16, 0x0B, 0x0B,
0x1B, 0x39, 0x59, 0x7D, 0xA6, 0xD5, 0xF9, 0xFF, 0xFF, 0xF5, 0xE0, 0xCC, 0xB8, 0xAC, 0xAB, 0xA9, 0x8D, 0x6F, 0x66,
0x71, 0x86, 0x9D, 0xAE, 0xBC, 0xAE, 0x8E, 0x76, 0x80, 0x8A, 0x7C, 0x60, 0x44, 0x33, 0x38, 0x52, 0x7B, 0xAA, 0xDD,
0xFE, 0xFF, 0xE7, 0xC9, 0xA4, 0x7F, 0x76, 0x90, 0x9B, 0x86, 0x6B, 0x52, 0x50, 0x63, 0x76, 0x8B, 0xA1, 0xB9, 0xC0,
0xAA, 0x75, 0x3A, 0x19, 0x12, 0x12, 0x19, 0x2E, 0x50, 0x75, 0x9B, 0xC1, 0xE7, 0xFF, 0xFF, 0xFF, 0xFF, 0xF5, 0xDF,
0xCC, 0xC7, 0xB6, 0x9A, 0x7D, 0x67, 0x69, 0x85, 0xA0, 0xB0, 0xC0, 0xC1, 0xA8, 0x8C, 0x87, 0x99, 0x96, 0x7B, 0x65,
0x5B, 0x52, 0x52, 0x6B, 0x90, 0xC2, 0xEC, 0xFF, 0xFB, 0xDD, 0xBD, 0xA1, 0x90, 0x9B, 0xB2, 0xA9, 0x82, 0x68, 0x61,
0x5E, 0x6B, 0x81, 0x9E, 0xB4, 0xCA, 0xC4, 0x9D, 0x5C, 0x28, 0x15, 0x1C, 0x27, 0x30, 0x47, 0x6E, 0x96, 0xB8, 0xD7,
0xF2, 0xFB, 0xF9, 0xFA, 0xFF, 0xF9, 0xE7, 0xD6, 0xBF, 0x9E, 0x7F, 0x67, 0x5D, 0x75, 0xA1, 0xB0, 0xBE, 0xCC, 0xC0,
0xA3, 0x94, 0x9B, 0xA8, 0x96, 0x78, 0x70, 0x78, 0x73, 0x71, 0x80, 0xA6, 0xD6, 0xF1, 0xF6, 0xF2, 0xDD, 0xC4, 0xB7,
0xB4, 0xBD, 0xB9, 0xA0, 0x79, 0x6D, 0x6F, 0x6B, 0x6D, 0x87, 0xAC, 0xCA, 0xD5, 0xC0, 0x8E, 0x4F, 0x28, 0x23, 0x31,
0x3F, 0x4C, 0x69, 0x93, 0xB5, 0xCE, 0xE3, 0xED, 0xEA, 0xE5, 0xE6, 0xEC, 0xF1, 0xE5, 0xCD, 0xAA, 0x8A, 0x6F, 0x5E,
0x67, 0x8D, 0xB2, 0xB7, 0xC8, 0xD1, 0xBF, 0xA4, 0x99, 0xA1, 0xA4, 0x8E, 0x7D, 0x86, 0x95, 0x8F, 0x87, 0x94, 0xBD,
0xDF, 0xE6, 0xE7, 0xE9, 0xE1, 0xDD, 0xD6, 0xD0, 0xC8, 0xAC, 0x98, 0x7B, 0x76, 0x75, 0x69, 0x6E, 0x8E, 0xB7, 0xDD,
0xDB, 0xB9, 0x84, 0x54, 0x39, 0x39, 0x45, 0x53, 0x68, 0x8D, 0xB6, 0xCB, 0xD6, 0xDF, 0xDE, 0xD7, 0xD3, 0xD4, 0xDE,
0xE2, 0xD7, 0xBD, 0x9F, 0x80, 0x69, 0x6C, 0x87, 0xA3, 0xBA, 0xC4, 0xD4, 0xD6, 0xC2, 0xA9, 0x96, 0x93, 0x90, 0x87,
0x8D, 0x9E, 0xAA, 0xA0, 0x96, 0xA6, 0xC9, 0xD8, 0xD1, 0xD2, 0xDC, 0xE5, 0xE9, 0xE1, 0xD4, 0xBD, 0xA0, 0x94, 0x82,
0x77, 0x67, 0x5E, 0x71, 0x95, 0xC7, 0xEB, 0xDC, 0xB0, 0x87, 0x69, 0x54, 0x4E, 0x51, 0x63, 0x84, 0xAE, 0xD0, 0xD1,
0xD0, 0xD3, 0xCE, 0xC9, 0xC7, 0xC7, 0xCE, 0xD0, 0xC7, 0xAF, 0x96, 0x79, 0x6F, 0x82, 0x9F, 0xB5, 0xC7, 0xD7, 0xE3,
0xDD, 0xC8, 0xA9, 0x87, 0x76, 0x77, 0x89, 0x9F, 0xB0, 0xB4, 0xA5, 0xA0, 0xB2, 0xC7, 0xC8, 0xB8, 0xBC, 0xCA, 0xD8,
0xDB, 0xD8, 0xC8, 0xAC, 0x97, 0x86, 0x76, 0x62, 0x51, 0x59, 0x73, 0xA1, 0xDF, 0xF7, 0xD3, 0xA8, 0x95, 0x86, 0x73,
0x5C, 0x59, 0x71, 0x9F, 0xC8, 0xD3, 0xCA, 0xC9, 0xCA, 0xC2, 0xBA, 0xB8, 0xB7, 0xBA, 0xBF, 0xB7, 0xA3, 0x90, 0x76,
0x7B, 0x94, 0xAA, 0xC3, 0xD3, 0xE1, 0xF0, 0xE2, 0xC6, 0xA2, 0x73, 0x58, 0x65, 0x8C, 0xAB, 0xB7, 0xB3, 0xA5, 0xA9,
0xB4, 0xBC, 0xAF, 0xA0, 0xA4, 0xB3, 0xC1, 0xD0, 0xD1, 0xB7, 0x99, 0x85, 0x70, 0x53, 0x40, 0x47, 0x5A, 0x7B, 0xB8,
0xF6, 0xF6, 0xC8, 0xA3, 0xA0, 0x9F, 0x85, 0x65, 0x63, 0x85, 0xB6, 0xCE, 0xCB, 0xC9, 0xCC, 0xC4, 0xB0, 0xA2, 0xA1,
0xA4, 0xAA, 0xB2, 0xAD, 0x9D, 0x8E, 0x79, 0x89, 0xA5, 0xBC, 0xCB, 0xCE, 0xDE, 0xF2, 0xDE, 0xBD, 0x96, 0x61, 0x46,
0x60, 0x8D, 0xAE, 0xB3, 0xAE, 0xAB, 0xB4, 0xB5, 0xAA, 0x90, 0x86, 0x8D, 0xA0, 0xBA, 0xD2, 0xCA, 0xA4, 0x82, 0x70,
0x5B, 0x36, 0x30, 0x46, 0x5C, 0x8D, 0xD2, 0xFC, 0xEC, 0xC4, 0xA8, 0xA5, 0xA4, 0x8B, 0x71, 0x75, 0x9E, 0xC1, 0xCC,
0xCA, 0xCD, 0xCD, 0xB6, 0x91, 0x80, 0x85, 0x93, 0xA0, 0xAB, 0xAA, 0x9A, 0x90, 0x85, 0x97, 0xB7, 0xC6, 0xBD, 0xB9,
0xD6, 0xEB, 0xD8, 0xB4, 0x86, 0x5A, 0x45, 0x62, 0x8D, 0xA6, 0xAB, 0xB2, 0xB9, 0xBF, 0xB3, 0x8E, 0x72, 0x6E, 0x7D,
0xA2, 0xCA, 0xD0, 0xB5, 0x8E, 0x70, 0x65, 0x50, 0x38, 0x34, 0x43, 0x5D, 0xA0, 0xE0, 0xF4, 0xE6, 0xCA, 0xAE, 0xA3,
0x9A, 0x8D, 0x83, 0x90, 0xB2, 0xC9, 0xCC, 0xCC, 0xCD, 0xBF, 0x98, 0x6B, 0x5D, 0x6F, 0x85, 0xA1, 0xB2, 0xAC, 0x9B,
0x95, 0x8F, 0x9F, 0xAE, 0xA5, 0x97, 0xA5, 0xCE, 0xE5, 0xD4, 0xAC, 0x83, 0x63, 0x56, 0x6B, 0x8C, 0x9E, 0xAC, 0xBF,
0xCA, 0xC3, 0x9F, 0x70, 0x5A, 0x62, 0x86, 0xBF, 0xD7, 0xBD, 0x9A, 0x80, 0x6D, 0x65, 0x54, 0x4C, 0x3F, 0x40, 0x63,
0xAD, 0xDD, 0xEA, 0xE2, 0xCE, 0xAC, 0x9A, 0x93, 0x90, 0x9A, 0xAF, 0xC1, 0xCC, 0xC8, 0xC8, 0xBF, 0x9E, 0x70, 0x48,
0x47, 0x63, 0x84, 0xB0, 0xB9, 0xAD, 0x9A, 0x91, 0x8E, 0x8D, 0x7D, 0x6F, 0x76, 0x99, 0xC4, 0xDE, 0xD4, 0xAF, 0x8D,
0x73, 0x70, 0x7C, 0x91, 0xA2, 0xB7, 0xCB, 0xD0, 0xB0, 0x7F, 0x5A, 0x52, 0x6D, 0xAA, 0xDC, 0xCA, 0xA1, 0x8D, 0x7D,
0x71, 0x6F, 0x68, 0x5C, 0x40, 0x42, 0x71, 0xB6, 0xD8, 0xE2, 0xDB, 0xC4, 0x9F, 0x95, 0x94, 0x98, 0xB3, 0xC9, 0xC9,
0xC3, 0xBE, 0xB8, 0xA1, 0x76, 0x4D, 0x33, 0x3D, 0x66, 0x96, 0xC0, 0xB6, 0xA5, 0x97, 0x82, 0x77, 0x60, 0x42, 0x46,
0x65, 0x91, 0xBD, 0xD5, 0xD9, 0xBD, 0x9E, 0x8D, 0x8B, 0x97, 0xA6, 0xB4, 0xC6, 0xCD, 0xBA, 0x90, 0x66, 0x52, 0x5D,
0x8C, 0xCB, 0xD7, 0xAD, 0x93, 0x8A, 0x80, 0x76, 0x7B, 0x7B, 0x5B, 0x3C, 0x4A, 0x80, 0xC2, 0xDF, 0xD9, 0xC6, 0xA0,
0x8E, 0x9A, 0x9E, 0xA4, 0xC7, 0xD4, 0xC2, 0xB7, 0xB0, 0xA2, 0x80, 0x52, 0x34, 0x2E, 0x47, 0x7F, 0xAB, 0xBF, 0xAC,
0x94, 0x7C, 0x5E, 0x4E, 0x30, 0x1D, 0x35, 0x60, 0x8D, 0xB6, 0xCE, 0xDD, 0xCD, 0xB6, 0xA8, 0xA4, 0xB4, 0xC4, 0xCC,
0xCD, 0xBC, 0x9A, 0x76, 0x5A, 0x57, 0x73, 0xA8, 0xCA, 0xBF, 0x9E, 0x8F, 0x89, 0x7D, 0x7B, 0x81, 0x71, 0x4A, 0x3B,
0x58, 0x8D, 0xD0, 0xE1, 0xC9, 0x99, 0x72, 0x87, 0xA9, 0xB0, 0xB3, 0xD1, 0xD2, 0xB7, 0xAC, 0xA2, 0x8C, 0x65, 0x3B,
0x29, 0x3C, 0x6C, 0x9B, 0xB4, 0xB0, 0x9B, 0x72, 0x4C, 0x38, 0x2A, 0x15, 0x11, 0x33, 0x5D, 0x8A, 0xB3, 0xC7, 0xDB,
0xE2, 0xD0, 0xBE, 0xB6, 0xCE, 0xDE, 0xD8, 0xC3, 0xA2, 0x81, 0x65, 0x56, 0x5E, 0x85, 0xA5, 0xAD, 0xAE, 0x9B, 0x8D,
0x86, 0x82, 0x7D, 0x70, 0x51, 0x36, 0x3B, 0x63, 0x99, 0xD0, 0xD1, 0xA1, 0x64, 0x58, 0x89, 0xB7, 0xBD, 0xBA, 0xD0,
0xC9, 0xB0, 0xA2, 0x95, 0x79, 0x52, 0x2F, 0x2F, 0x5E, 0x91, 0xA5, 0xA9, 0x9A, 0x79, 0x4C, 0x2D, 0x25, 0x1C, 0x0F,
0x12, 0x30, 0x59, 0x87, 0xAB, 0xBF, 0xDC, 0xF5, 0xE3, 0xC9, 0xC0, 0xE1, 0xE7, 0xD3, 0xB3, 0x8F, 0x71, 0x59, 0x4F,
0x5E, 0x80, 0x8D, 0x95, 0xA3, 0x97, 0x86, 0x83, 0x85, 0x6F, 0x50, 0x39, 0x26, 0x3B, 0x6F, 0xA2, 0xB9, 0xA0, 0x67,
0x46, 0x54, 0x8C, 0xB6, 0xB9, 0xC1, 0xD0, 0xBF, 0xA9, 0x99, 0x84, 0x63, 0x42, 0x30, 0x44, 0x79, 0x99, 0x9A, 0x93,
0x80, 0x58, 0x38, 0x27, 0x23, 0x1A, 0x12, 0x16, 0x25, 0x52, 0x7B, 0x9B, 0xB8, 0xDB, 0xFE, 0xEB, 0xD0, 0xCA, 0xDF,
0xD6, 0xC4, 0xA4, 0x82, 0x64, 0x4A, 0x42, 0x54, 0x6C, 0x77, 0x86, 0x96, 0x89, 0x79, 0x77, 0x75, 0x5B, 0x39, 0x28,
0x20, 0x47, 0x7F, 0xA3, 0x8D, 0x5A, 0x3D, 0x45, 0x5C, 0x85, 0xA3, 0xB2, 0xCE, 0xD1, 0xB3, 0xA0, 0x8F, 0x71, 0x4E,
0x3A, 0x3E, 0x56, 0x7A, 0x83, 0x7C, 0x78, 0x66, 0x4E, 0x3D, 0x2D, 0x20, 0x1A, 0x1C, 0x20, 0x23, 0x45, 0x67, 0x8A,
0xAF, 0xD3, 0xF6, 0xE7, 0xD7, 0xCD, 0xC8, 0xBC, 0xAE, 0x99, 0x72, 0x56, 0x3A, 0x31, 0x45, 0x58, 0x6C, 0x7B, 0x82,
0x75, 0x66, 0x62, 0x58, 0x4C, 0x35, 0x24, 0x2D, 0x5E, 0x8B, 0x9D, 0x60, 0x29, 0x2D, 0x4F, 0x5D, 0x70, 0x8D, 0xB5,
0xDC, 0xC4, 0xA8, 0x9A, 0x83, 0x5D, 0x40, 0x42, 0x4C, 0x59, 0x65, 0x60, 0x5D, 0x60, 0x54, 0x50, 0x47, 0x32, 0x1C,
0x1A, 0x2D, 0x3E, 0x34, 0x33, 0x51, 0x79, 0xA4, 0xC3, 0xE3, 0xE1, 0xD6, 0xC3, 0xAB, 0x9D, 0x97, 0x8B, 0x62, 0x44,
0x27, 0x1F, 0x34, 0x49, 0x61, 0x6C, 0x6C, 0x64, 0x5C, 0x50, 0x44, 0x43, 0x43, 0x3A, 0x4A, 0x75, 0x90, 0x8E, 0x48,
0x17, 0x28, 0x51, 0x50, 0x5A, 0x8C, 0xBC, 0xD3, 0xB3, 0xA0, 0x98, 0x77, 0x50, 0x46, 0x4F, 0x4E, 0x4F, 0x4C, 0x47,
0x4C, 0x4F, 0x4D, 0x4D, 0x46, 0x32, 0x1B, 0x26, 0x50, 0x66, 0x4A, 0x2A, 0x42, 0x73, 0x9D, 0xB2, 0xD4, 0xD9, 0xCB,
0xB2, 0x8C, 0x7F, 0x84, 0x7A, 0x52, 0x32, 0x1B, 0x10, 0x23, 0x3B, 0x4C, 0x53, 0x59, 0x5D, 0x5B, 0x48, 0x40, 0x4C,
0x5D, 0x66, 0x6B, 0x81, 0x8D, 0x80, 0x42, 0x16, 0x24, 0x44, 0x3B, 0x58, 0x94, 0xB3, 0xC1, 0xAA, 0xA2, 0x94, 0x6F,
0x54, 0x54, 0x56, 0x47, 0x3D, 0x3D, 0x3C, 0x43, 0x45, 0x47, 0x4A, 0x45, 0x36, 0x2D, 0x52, 0x7C, 0x79, 0x53, 0x29,
0x3F, 0x73, 0x99, 0xAB, 0xC7, 0xCD, 0xBD, 0x98, 0x70, 0x6C, 0x73, 0x6B, 0x47, 0x27, 0x14, 0x08, 0x11, 0x28, 0x32,
0x39, 0x4D, 0x5D, 0x5A, 0x4F, 0x51, 0x68, 0x8D, 0x8E, 0x80, 0x81, 0x85, 0x71, 0x38, 0x13, 0x1C, 0x2F, 0x33, 0x62,
0x8F, 0xA6, 0xBD, 0xB0, 0xA8, 0x8C, 0x77, 0x64, 0x5E, 0x56, 0x3F, 0x2F, 0x2E, 0x31, 0x3F, 0x43, 0x45, 0x4D, 0x4E,
0x50, 0x6B, 0x99, 0x9B, 0x7D, 0x5A, 0x2D, 0x3F, 0x71, 0x9B, 0xAB, 0xBC, 0xC0, 0xA3, 0x80, 0x5D, 0x5E, 0x63, 0x5C,
0x44, 0x2A, 0x1C, 0x0B, 0x0B, 0x19, 0x21, 0x2D, 0x44, 0x60, 0x63, 0x67, 0x71, 0x97, 0xB4, 0x9D, 0x84, 0x79, 0x73,
0x5B, 0x21, 0x10, 0x17, 0x24, 0x34, 0x62, 0x86, 0xA3, 0xC2, 0xBD, 0xA8, 0x8D, 0x86, 0x75, 0x6B, 0x58, 0x3C, 0x21,
0x15, 0x24, 0x42, 0x4C, 0x4E, 0x57, 0x65, 0x8A, 0xC3, 0xCB, 0xAB, 0x84, 0x60, 0x31, 0x3E, 0x6E, 0x98, 0xAD, 0xB3,
0xB2, 0x8C, 0x71, 0x50, 0x54, 0x5A, 0x58, 0x4D, 0x3E, 0x2F, 0x1E, 0x15, 0x15, 0x1E, 0x2F, 0x45, 0x62, 0x7A, 0x87,
0xA0, 0xBD, 0xAA, 0x8D, 0x7B, 0x69, 0x52, 0x3C, 0x11, 0x15, 0x1E, 0x1E, 0x32, 0x5B, 0x82, 0xA4, 0xC8, 0xBE, 0xA5,
0x97, 0x91, 0x83, 0x79, 0x5D, 0x3C, 0x1A, 0x0F, 0x25, 0x4C, 0x60, 0x61, 0x65, 0x8C, 0xCA, 0xF7, 0xDE, 0xB9, 0x8D,
0x64, 0x36, 0x3B, 0x66, 0x90, 0xAA, 0xA8, 0x9F, 0x81, 0x62, 0x46, 0x50, 0x5A, 0x64, 0x61, 0x52, 0x42, 0x35, 0x25,
0x19, 0x20, 0x38, 0x4F, 0x68, 0x8D, 0xAC, 0xC3, 0xAB, 0x77, 0x6B, 0x67, 0x4E, 0x30, 0x1D, 0x14, 0x23, 0x25, 0x17,
0x32, 0x58, 0x7C, 0xA3, 0xC0, 0xB3, 0xA1, 0x9A, 0x97, 0x8D, 0x82, 0x60, 0x3C, 0x1E, 0x1E, 0x39, 0x5C, 0x7A, 0x76,
0x82, 0xBA, 0xE5, 0xFF, 0xEB, 0xC2, 0x94, 0x68, 0x3D, 0x32, 0x5C, 0x82, 0x9E, 0x9B, 0x8C, 0x69, 0x48, 0x44, 0x56,
0x6E, 0x81, 0x76, 0x63, 0x57, 0x4A, 0x2F, 0x1F, 0x2A, 0x44, 0x5B, 0x78, 0xA0, 0xC6, 0xAF, 0x72, 0x42, 0x42, 0x44,
0x2E, 0x11, 0x0A, 0x21, 0x2A, 0x21, 0x13, 0x32, 0x53, 0x79, 0x9A, 0xB0, 0xA5, 0x96, 0x97, 0x9D, 0x91, 0x83, 0x5C,
0x43, 0x33, 0x39, 0x4F, 0x73, 0x90, 0x90, 0xAC, 0xD3, 0xE6, 0xFF, 0xF4, 0xC4, 0x98, 0x6B, 0x40, 0x28, 0x4F, 0x6F,
0x8E, 0x8B, 0x6C, 0x39, 0x30, 0x4E, 0x6C, 0x93, 0x9B, 0x87, 0x79, 0x6F, 0x56, 0x31, 0x26, 0x38, 0x51, 0x68, 0x87,
0xB2, 0xB3, 0x7B, 0x47, 0x1F, 0x19, 0x1E, 0x0F, 0x00, 0x0F, 0x2A, 0x27, 0x16, 0x0B, 0x30, 0x51, 0x77, 0x8C, 0xA0,
0x98, 0x8E, 0x96, 0xA2, 0x99, 0x7F, 0x5E, 0x54, 0x50, 0x51, 0x61, 0x8A, 0x9E, 0xAE, 0xC8, 0xD9, 0xF0, 0xFF, 0xF9,
0xC7, 0x93, 0x67, 0x44, 0x1C, 0x3C, 0x60, 0x7F, 0x6E, 0x36, 0x14, 0x35, 0x67, 0x87, 0xA8, 0xA2, 0x9D, 0x96, 0x7A,
0x4D, 0x2D, 0x2E, 0x45, 0x61, 0x76, 0x96, 0xAA, 0x87, 0x5D, 0x39, 0x12, 0x00, 0x03, 0x00, 0x0D, 0x21, 0x27, 0x19,
0x08, 0x06, 0x2E, 0x52, 0x71, 0x80, 0x95, 0x91, 0x8F, 0x9A, 0xAA, 0xA0, 0x80, 0x6B, 0x6F, 0x6B, 0x65, 0x70, 0x97,
0xAB, 0xC3, 0xD4, 0xE9, 0xFE, 0xFF, 0xFB, 0xC2, 0x89, 0x66, 0x44, 0x0D, 0x2B, 0x50, 0x64, 0x38, 0x0F, 0x1D, 0x58,
0x84, 0x94, 0x9F, 0xA0, 0xB3, 0xA2, 0x69, 0x38, 0x29, 0x39, 0x58, 0x6F, 0x81, 0x9D, 0x95, 0x77, 0x5D, 0x3F, 0x17,
0x00, 0x00, 0x11, 0x2D, 0x35, 0x17, 0x05, 0x01, 0x06, 0x2F, 0x52, 0x6B, 0x7A, 0x8F, 0x94, 0x99, 0xA4, 0xAF, 0xA3,
0x8B, 0x80, 0x85, 0x7D, 0x75, 0x7F, 0xA5, 0xBA, 0xD1, 0xE5, 0xFC, 0xFF, 0xFF, 0xF6, 0xBA, 0x8C, 0x6C, 0x39, 0x06,
0x1C, 0x3B, 0x33, 0x0C, 0x15, 0x42, 0x79, 0x91, 0x8C, 0x95, 0xA9, 0xB8, 0x8F, 0x4F, 0x2F, 0x34, 0x4F, 0x6E, 0x7B,
0x89, 0x9A, 0x91, 0x81, 0x68, 0x4A, 0x23, 0x06, 0x1A, 0x3B, 0x4D, 0x3D, 0x07, 0x00, 0x05, 0x0B, 0x2E, 0x50, 0x6B,
0x7B, 0x8F, 0x9A, 0xA5, 0xAB, 0xAD, 0xA8, 0xA2, 0x96, 0x8C, 0x89, 0x81, 0x90, 0xB4, 0xC3, 0xDE, 0xF4, 0xFF, 0xFF,
0xFF, 0xEF, 0xC0, 0x9E, 0x6B, 0x29, 0x02, 0x11, 0x19, 0x0A, 0x11, 0x34, 0x5B, 0x7F, 0x8C, 0x87, 0x9E, 0xB3, 0xA0,
0x70, 0x46, 0x3A, 0x51, 0x70, 0x83, 0x85, 0x8B, 0xA1, 0xA1, 0x8F, 0x6E, 0x50, 0x31, 0x29, 0x51, 0x6C, 0x60, 0x33,
0x08, 0x07, 0x10, 0x12, 0x29, 0x50, 0x73, 0x81, 0x93, 0xA4, 0xA9, 0xA9, 0xAC, 0xB9, 0xB8, 0x98, 0x8C, 0x8C, 0x8D,
0xA2, 0xB9, 0xC8, 0xE3, 0xF6, 0xFF, 0xFF, 0xF3, 0xF4, 0xD1, 0xA2, 0x5C, 0x17, 0x01, 0x06, 0x02, 0x0D, 0x30, 0x45,
0x5E, 0x70, 0x81, 0x8E, 0xA8, 0xA9, 0x7F, 0x63, 0x4F, 0x59, 0x7D, 0x97, 0x97, 0x8D, 0x90, 0xB2, 0xB4, 0x91, 0x6C,
0x58, 0x54, 0x66, 0x8F, 0x89, 0x5E, 0x27, 0x23, 0x24, 0x21, 0x16, 0x29, 0x59, 0x7D, 0x85, 0x97, 0xA8, 0xA0, 0xA4,
0xB8, 0xCC, 0xBD, 0x93, 0x8C, 0x8C, 0x95, 0xA6, 0xBA, 0xCE, 0xE3, 0xFA, 0xFF, 0xFA, 0xF5, 0xFF, 0xD5, 0x94, 0x48,
0x0C, 0x00, 0x00, 0x09, 0x2A, 0x44, 0x44, 0x5B, 0x66, 0x81, 0x9B, 0xA4, 0x93, 0x72, 0x67, 0x66, 0x82, 0xAB, 0xB5,
0xA5, 0x98, 0xA0, 0xBE, 0xB5, 0x8B, 0x6C, 0x6C, 0x8F, 0xAD, 0xB6, 0x8E, 0x5A, 0x2E, 0x4F, 0x49, 0x31, 0x1E, 0x34,
0x64, 0x82, 0x87, 0x94, 0xA0, 0x99, 0xAD, 0xC8, 0xD1, 0xB9, 0x99, 0x8D, 0x8D, 0x91, 0xA2, 0xB9, 0xD4, 0xEB, 0xFD,
0xFA, 0xF5, 0xFF, 0xFF, 0xC6, 0x7D, 0x3E, 0x11, 0x05, 0x0D, 0x21, 0x3A, 0x44, 0x44, 0x5C, 0x69, 0x8B, 0xA2, 0x9A,
0x8B, 0x78, 0x78, 0x85, 0xAA, 0xC7, 0xC0, 0xAF, 0xA8, 0xAD, 0xB7, 0xAA, 0x85, 0x77, 0x94, 0xCE, 0xE1, 0xC0, 0x8F,
0x65, 0x4F, 0x7B, 0x62, 0x3E, 0x2F, 0x48, 0x6D, 0x7D, 0x81, 0x8F, 0x96, 0x9F, 0xBC, 0xCC, 0xCE, 0xBF, 0xA8, 0x93,
0x87, 0x89, 0x9E, 0xBA, 0xDC, 0xF2, 0xF4, 0xEC, 0xF5, 0xFF, 0xFA, 0xB0, 0x73, 0x48, 0x30, 0x31, 0x3C, 0x3D, 0x39,
0x40, 0x47, 0x5E, 0x72, 0x96, 0xA0, 0x98, 0x93, 0x89, 0x90, 0xA4, 0xC0, 0xC8, 0xC2, 0xB8, 0xB4, 0xAD, 0xAA, 0xA2,
0x8A, 0x97, 0xCC, 0xFC, 0xF6, 0xC4, 0x9D, 0x87, 0x82, 0x94, 0x68, 0x4E, 0x49, 0x5D, 0x72, 0x70, 0x7C, 0x90, 0x9A,
0xB2, 0xC3, 0xCD, 0xD6, 0xCD, 0xB4, 0x97, 0x83, 0x87, 0xA3, 0xC6, 0xE3, 0xEF, 0xE9, 0xDF, 0xEF, 0xFF, 0xE7, 0xA8,
0x7F, 0x67, 0x68, 0x70, 0x6B, 0x53, 0x39, 0x3F, 0x49, 0x5E, 0x7F, 0x9B, 0xA0, 0xA2, 0x9F, 0x9A, 0xA9, 0xB3, 0xBD,
0xBF, 0xBD, 0xBC, 0xB7, 0xA5, 0xA2, 0xA4, 0xA4, 0xCB, 0xFB, 0xFF, 0xFB, 0xD4, 0xBE, 0xB7, 0xAF, 0x97, 0x6C, 0x62,
0x67, 0x72, 0x76, 0x6D, 0x80, 0x95, 0xAB, 0xC1, 0xCA, 0xD9, 0xE7, 0xD7, 0xB9, 0x9A, 0x87, 0x91, 0xB2, 0xD2, 0xE5,
0xE7, 0xDB, 0xD1, 0xE7, 0xFE, 0xE0, 0xB4, 0x9D, 0x97, 0xA0, 0x99, 0x7B, 0x5D, 0x3B, 0x3F, 0x4A, 0x63, 0x8E, 0x9F,
0xAA, 0xAE, 0xA6, 0xA8, 0xB2, 0xAD, 0xB3, 0xB4, 0xB6, 0xBE, 0xB6, 0xA2, 0xA2, 0xB8, 0xD0, 0xFB, 0xFF, 0xFF, 0xFE,
0xEC, 0xE5, 0xDF, 0xC8, 0x96, 0x78, 0x7D, 0x87, 0x7D, 0x7C, 0x7B, 0x8B, 0x9F, 0xB3, 0xC9, 0xDB, 0xEF, 0xF1, 0xDB,
0xBA, 0x9F, 0x91, 0xA2, 0xC3, 0xD9, 0xDC, 0xD3, 0xBF, 0xC0, 0xDE, 0xFB, 0xEC, 0xD5, 0xC9, 0xC6, 0xBD, 0xA2, 0x79,
0x5B, 0x38, 0x3C, 0x54, 0x76, 0x9E, 0xA5, 0xB7, 0xB8, 0xAC, 0xAC, 0xAD, 0xA8, 0xAC, 0xAD, 0xB6, 0xBE, 0xB4, 0xA5,
0xAF, 0xD7, 0xF0, 0xFF, 0xFF, 0xFF, 0xFB, 0xFC, 0xFF, 0xF3, 0xCA, 0x9E, 0x90, 0x9D, 0x96, 0x81, 0x86, 0x8A, 0x9D,
0xAA, 0xB7, 0xD4, 0xF2, 0xFF, 0xF5, 0xD9, 0xBA, 0xA4, 0xA1, 0xB7, 0xD5, 0xD6, 0xBD, 0xA6, 0x9F, 0xAF, 0xD0, 0xEF,
0xFB, 0xFA, 0xED, 0xDF, 0xC1, 0x9B, 0x70, 0x51, 0x32, 0x44, 0x6E, 0x94, 0xA6, 0xA9, 0xBF, 0xC1, 0xB3, 0xAC, 0xA8,
0xA5, 0xA9, 0xAF, 0xBC, 0xBE, 0xB7, 0xB5, 0xC8, 0xE0, 0xF2, 0xFF, 0xFF, 0xF3, 0xEA, 0xF7, 0xFF, 0xF3, 0xC7, 0xB0,
0xB0, 0xAB, 0x8A, 0x81, 0x89, 0x91, 0xA2, 0xAC, 0xC6, 0xE5, 0xFF, 0xFF, 0xF7, 0xD9, 0xBD, 0xAD, 0xB3, 0xCC, 0xD8,
0xB9, 0x86, 0x76, 0x81, 0x9D, 0xBC, 0xDB, 0xF9, 0xFF, 0xF7, 0xE0, 0xBA, 0x8E, 0x65, 0x45, 0x34, 0x61, 0x94, 0xA4,
0x9F, 0xA6, 0xC4, 0xCC, 0xC0, 0xAF, 0xA9, 0xAA, 0xB2, 0xBE, 0xC0, 0xBF, 0xC2, 0xCB, 0xCD, 0xCC, 0xDE, 0xF3, 0xEA,
0xD2, 0xD5, 0xE5, 0xF1, 0xEA, 0xC7, 0xC8, 0xC0, 0x9D, 0x79, 0x78, 0x7F, 0x8A, 0x93, 0xA5, 0xD2, 0xF5, 0xFF, 0xFF,
0xF7, 0xD9, 0xC3, 0xBC, 0xC4, 0xCD, 0xBA, 0x83, 0x52, 0x52, 0x68, 0x85, 0xA4, 0xC9, 0xEB, 0xFB, 0xED, 0xD7, 0xAE,
0x80, 0x59, 0x40, 0x48, 0x87, 0xA9, 0x93, 0x8F, 0xA5, 0xCE, 0xDE, 0xD0, 0xBA, 0xB3, 0xBA, 0xC7, 0xCB, 0xC2, 0xC3,
0xCD, 0xCE, 0xB8, 0xB0, 0xC2, 0xCB, 0xBD, 0xB7, 0xC1, 0xD2, 0xE0, 0xE1, 0xCC, 0xCA, 0xAB, 0x84, 0x6C, 0x66, 0x69,
0x72, 0x80, 0xA1, 0xD5, 0xFF, 0xFF, 0xFF, 0xF6, 0xDD, 0xCE, 0xCA, 0xC2, 0xAC, 0x86, 0x50, 0x2E, 0x36, 0x4F, 0x6E,
0x94, 0xBD, 0xE1, 0xF3, 0xE1, 0xCC, 0x9F, 0x70, 0x54, 0x50, 0x6E, 0x98, 0x97, 0x7C, 0x89, 0xAD, 0xE0, 0xF0, 0xDC,
0xCB, 0xC8, 0xD4, 0xD9, 0xD0, 0xC7, 0xC8, 0xC8, 0xB8, 0x9A, 0x93, 0x98, 0x97, 0x9A, 0xA1, 0xB3, 0xC7, 0xD5, 0xDC,
0xD0, 0xAA, 0x81, 0x6B, 0x5A, 0x51, 0x51, 0x5B, 0x76, 0xA2, 0xD5, 0xFC, 0xFF, 0xFF, 0xF6, 0xE5, 0xD9, 0xC7, 0xA5,
0x80, 0x58, 0x30, 0x16, 0x1C, 0x36, 0x5C, 0x8A, 0xB8, 0xDC, 0xEC, 0xD9, 0xC0, 0x8D, 0x67, 0x60, 0x6E, 0x86, 0x85,
0x7A, 0x7B, 0x90, 0xBF, 0xF4, 0xFD, 0xEA, 0xE1, 0xE3, 0xE8, 0xDF, 0xD2, 0xCB, 0xC3, 0xB4, 0x9A, 0x7F, 0x70, 0x6B,
0x71, 0x83, 0x94, 0xAD, 0xC2, 0xD0, 0xD2, 0xC4, 0x7B, 0x5B, 0x4A, 0x3E, 0x38, 0x3A, 0x4D, 0x73, 0xA4, 0xD1, 0xEF,
0xFF, 0xFF, 0xF9, 0xEA, 0xD7, 0xAF, 0x85, 0x5E, 0x3C, 0x1F, 0x09, 0x08, 0x25, 0x51, 0x84, 0xB5, 0xD7, 0xE7, 0xD1,
0xAF, 0x80, 0x67, 0x6E, 0x85, 0x7F, 0x6B, 0x70, 0x89, 0xA6, 0xD9, 0xFF, 0xFF, 0xFB, 0xFA, 0xFB, 0xEF, 0xDD, 0xD4,
0xCB, 0xB4, 0x98, 0x7F, 0x65, 0x50, 0x50, 0x5D, 0x73, 0x91, 0xAD, 0xC1, 0xCA, 0xC0, 0xA3, 0x58, 0x3F, 0x2F, 0x21,
0x1B, 0x27, 0x46, 0x76, 0xA4, 0xC6, 0xE3, 0xFF, 0xFF, 0xFB, 0xE8, 0xC4, 0x97, 0x70, 0x4D, 0x2E, 0x15, 0x02, 0x00,
0x1B, 0x4E, 0x83, 0xB3, 0xD4, 0xDC, 0xC2, 0xA2, 0x7A, 0x6C, 0x7B, 0x87, 0x70, 0x66, 0x78, 0x9B, 0xC4, 0xF1, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xEB, 0xD6, 0xD0, 0xC1, 0xA1, 0x7C, 0x62, 0x48, 0x3D, 0x47, 0x57, 0x73, 0x96, 0xAE, 0xC0,
0xBF, 0xA6, 0x7B, 0x3F, 0x2D, 0x1F, 0x13, 0x0B, 0x1A, 0x43, 0x76, 0x9F, 0xC1, 0xE3, 0xFF, 0xFF, 0xF7, 0xDB, 0xAE,
0x84, 0x61, 0x42, 0x26, 0x0F, 0x00, 0x00, 0x17, 0x4D, 0x84, 0xB6, 0xD0, 0xCC, 0xB3, 0x98, 0x79, 0x75, 0x83, 0x82,
0x73, 0x72, 0x8B, 0xB8, 0xE1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xE0, 0xC8, 0xC1, 0xAF, 0x89, 0x5B, 0x3F, 0x31,
0x35, 0x44, 0x5A, 0x7D, 0xA0, 0xB3, 0xBA, 0xAD, 0x86, 0x5C, 0x31, 0x23, 0x19, 0x0D, 0x08, 0x13, 0x40, 0x71, 0x9F,
0xC9, 0xF3, 0xFF, 0xFF, 0xEF, 0xC8, 0x9A, 0x73, 0x53, 0x39, 0x21, 0x0C, 0x02, 0x06, 0x1C, 0x51, 0x8B, 0xB7, 0xC7,
0xBC, 0xA2, 0x8E, 0x7F, 0x7C, 0x85, 0x85, 0x84, 0x86, 0xA5, 0xD6, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0xCB,
0xB2, 0xAC, 0x96, 0x66, 0x35, 0x20, 0x25, 0x31, 0x47, 0x67, 0x91, 0xB3, 0xB6, 0xAF, 0x94, 0x69, 0x48, 0x2A, 0x1F,
0x13, 0x09, 0x08, 0x19, 0x3E, 0x73, 0xAD, 0xE3, 0xFF, 0xFF, 0xFD, 0xDE, 0xB2, 0x87, 0x64, 0x48, 0x32, 0x1F, 0x0C,
0x08, 0x14, 0x27, 0x5B, 0x8F, 0xB3, 0xBC, 0xAA, 0x8F, 0x87, 0x82, 0x81, 0x86, 0x91, 0x98, 0xA0, 0xC3, 0xEB, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xDD, 0xAD, 0x96, 0x8E, 0x71, 0x3E, 0x17, 0x0F, 0x1D, 0x32, 0x52, 0x7C, 0xAA, 0xC3,
0xB5, 0xA0, 0x7C, 0x56, 0x3C, 0x28, 0x1C, 0x0B, 0x05, 0x0C, 0x21, 0x45, 0x83, 0xCB, 0xFF, 0xFF, 0xFF, 0xF2, 0xCA,
0x9B, 0x73, 0x54, 0x3D, 0x2D, 0x1C, 0x10, 0x16, 0x28, 0x3A, 0x64, 0x94, 0xAF, 0xAF, 0x9B, 0x82, 0x82, 0x81, 0x82,
0x89, 0x9D, 0xAA, 0xBC, 0xDF, 0xFA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF1, 0xC1, 0x8F, 0x76, 0x69, 0x48, 0x1D, 0x05,
0x06, 0x1A, 0x3B, 0x65, 0x95, 0xBE, 0xC7, 0xAB, 0x8E, 0x69, 0x46, 0x33, 0x28, 0x15, 0x00, 0x01, 0x13, 0x2F, 0x57,
0xA1, 0xED, 0xFF, 0xFF, 0xFF, 0xDF, 0xB2, 0x83, 0x60, 0x46, 0x35, 0x27, 0x1D, 0x1C, 0x29, 0x3C, 0x49, 0x6E, 0x97,
0xA9, 0xA5, 0x8E, 0x79, 0x7A, 0x7B, 0x7C, 0x89, 0xA5, 0xBD, 0xD4, 0xEF, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDB,
0xA4, 0x77, 0x58, 0x44, 0x25, 0x08, 0x00, 0x02, 0x1E, 0x4A, 0x7C, 0xA9, 0xC7, 0xBC, 0x9D, 0x7C, 0x5A, 0x3B, 0x2F,
0x27, 0x0C, 0x00, 0x02, 0x1A, 0x3F, 0x73, 0xC3, 0xFE, 0xFF, 0xFF, 0xF4, 0xC9, 0x97, 0x6B, 0x4E, 0x3B, 0x2D, 0x23,
0x25, 0x2D, 0x3C, 0x48, 0x57, 0x7C, 0x9A, 0xA6, 0x9B, 0x81, 0x71, 0x6D, 0x70, 0x73, 0x85, 0xB2, 0xCE, 0xDC, 0xE5,
0xF3, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0xBD, 0x8B, 0x62, 0x3E, 0x26, 0x0F, 0x00, 0x00, 0x07, 0x2B, 0x5E, 0x91, 0xB4,
0xC0, 0xAC, 0x8D, 0x6D, 0x4E, 0x38, 0x32, 0x26, 0x03, 0x00, 0x06, 0x21, 0x52, 0x94, 0xD6, 0xFF, 0xFF, 0xFF, 0xE1,
0xAE, 0x7B, 0x56, 0x3F, 0x2E, 0x23, 0x24, 0x30, 0x3D, 0x47, 0x50, 0x67, 0x8C, 0xA3, 0xA6, 0x8F, 0x73, 0x64, 0x5E,
0x65, 0x6D, 0x87, 0xBA, 0xCD, 0xC7, 0xCE, 0xEB, 0xFF, 0xFF, 0xFF, 0xFE, 0xD3, 0xA1, 0x77, 0x4E, 0x2B, 0x13, 0x02,
0x00, 0x00, 0x10, 0x3A, 0x72, 0x9F, 0xB3, 0xB4, 0x9D, 0x7B, 0x60, 0x4A, 0x43, 0x3E, 0x20, 0x00, 0x00, 0x0A, 0x2A,
0x66, 0xA4, 0xD9, 0xFF, 0xFF, 0xF4, 0xCB, 0x93, 0x65, 0x45, 0x32, 0x21, 0x1B, 0x28, 0x3A, 0x46, 0x4D, 0x5A, 0x78,
0x9E, 0xAF, 0xA2, 0x81, 0x64, 0x54, 0x52, 0x5D, 0x6F, 0x8D, 0xB3, 0xB0, 0xA8, 0xBF, 0xE3, 0xFF, 0xFF, 0xFF, 0xE9,
0xB8, 0x8D, 0x67, 0x3F, 0x1D, 0x07, 0x00, 0x00, 0x02, 0x1D, 0x48, 0x82, 0xA0, 0xAD, 0xAB, 0x8D, 0x6F, 0x59, 0x57,
0x5A, 0x48, 0x11, 0x00, 0x00, 0x0D, 0x35, 0x72, 0xAA, 0xDE, 0xFF, 0xFF, 0xE0, 0xAC, 0x79, 0x51, 0x34, 0x24, 0x16,
0x16, 0x2A, 0x3D, 0x47, 0x50, 0x66, 0x8B, 0xAF, 0xB4, 0x9D, 0x71, 0x52, 0x48, 0x45, 0x53, 0x6E, 0x83, 0x8F, 0x87,
0x8F, 0xB3, 0xD9, 0xFB, 0xFF, 0xF6, 0xCC, 0xA0, 0x7D, 0x5D, 0x32, 0x10, 0x00, 0x00, 0x00, 0x0D, 0x2A, 0x5A, 0x86,
0x9E, 0xA6, 0x9D, 0x7D, 0x65, 0x62, 0x70, 0x6E, 0x45, 0x00, 0x00, 0x03, 0x15, 0x3D, 0x77, 0xAF, 0xDD, 0xF0, 0xE6,
0xBA, 0x86, 0x5E, 0x39, 0x23, 0x14, 0x0C, 0x14, 0x2A, 0x3C, 0x46, 0x54, 0x72, 0x9E, 0xB6, 0xAF, 0x8C, 0x63, 0x49,
0x3A, 0x35, 0x47, 0x5B, 0x61, 0x61, 0x68, 0x7F, 0xA6, 0xD0, 0xE9, 0xED, 0xD7, 0xAC, 0x89, 0x71, 0x4A, 0x21, 0x07,
0x00, 0x00, 0x05, 0x1A, 0x3A, 0x62, 0x87, 0x9A, 0x97, 0x87, 0x6D, 0x66, 0x76, 0x7D, 0x60, 0x26, 0x00, 0x01, 0x0B,
0x25, 0x4A, 0x7F, 0xB0, 0xD3, 0xDB, 0xC1, 0x95, 0x6B, 0x49, 0x2A, 0x14, 0x06, 0x07, 0x14, 0x2A, 0x39, 0x46, 0x5E,
0x83, 0xAD, 0xB7, 0x9F, 0x75, 0x5D, 0x49, 0x2D, 0x29, 0x3B, 0x46, 0x3E, 0x3C, 0x54, 0x76, 0xA0, 0xC1, 0xD5, 0xD7,
0xBF, 0x9B, 0x7C, 0x5C, 0x31, 0x17, 0x05, 0x00, 0x00, 0x0C, 0x26, 0x45, 0x69, 0x8B, 0x91, 0x8B, 0x78, 0x69, 0x76,
0x85, 0x6D, 0x30, 0x02, 0x00, 0x09, 0x1A, 0x35, 0x5D, 0x85, 0xA9, 0xC6, 0xBF, 0xA1, 0x80, 0x5E, 0x3D, 0x1F, 0x07,
0x00, 0x05, 0x16, 0x27, 0x35, 0x4C, 0x6D, 0x99, 0xB9, 0xB2, 0x8A, 0x68, 0x58, 0x42, 0x25, 0x24, 0x39, 0x3C, 0x28,
0x29, 0x4E, 0x77, 0x98, 0xB5, 0xCC, 0xD0, 0xB7, 0x98, 0x70, 0x40, 0x26, 0x15, 0x05, 0x00, 0x02, 0x14, 0x30, 0x51,
0x78, 0x8C, 0x8F, 0x86, 0x73, 0x72, 0x82, 0x83, 0x4E, 0x12, 0x00,
};
Gfx sInnerCylinderDList[] = {
gsDPPipeSync(),
gsDPSetTextureLUT(G_TT_NONE),
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),
gsDPLoadTextureBlock(sWindEffTexture, G_IM_FMT_I, G_IM_SIZ_8b, 64, 64, 0, G_TX_NOMIRROR | G_TX_WRAP,
G_TX_NOMIRROR | G_TX_WRAP, 6, 6, G_TX_NOLOD, G_TX_NOLOD),
gsDPLoadMultiBlock(sWindEffTexture, 0x0100, 1, G_IM_FMT_I, G_IM_SIZ_8b, 64, 64, 0, G_TX_NOMIRROR | G_TX_WRAP,
G_TX_NOMIRROR | G_TX_WRAP, 6, 6, 14, 14),
gsDPSetCombineLERP(TEXEL1, PRIMITIVE, PRIM_LOD_FRAC, TEXEL0, TEXEL1, TEXEL0, PRIM_LOD_FRAC, TEXEL0, PRIMITIVE,
ENVIRONMENT, COMBINED, ENVIRONMENT, COMBINED, 0, SHADE, 0),
gsDPSetRenderMode(G_RM_PASS, G_RM_AA_ZB_XLU_SURF2),
gsSPClearGeometryMode(G_CULL_BACK | G_FOG | G_LIGHTING | G_TEXTURE_GEN | G_TEXTURE_GEN_LINEAR),
gsDPSetPrimColor(0, 0x80, 0xFF, 0xFF, 0xAA, 0xFF),
gsDPSetEnvColor(0x96, 0xFF, 0x00, 0x00),
gsSPDisplayList(0x08000000),
gsSPVertex(&sCylinderVtx[0], 18, 0),
gsSP2Triangles(0, 1, 2, 0, 0, 3, 1, 0),
gsSP2Triangles(4, 5, 6, 0, 4, 7, 5, 0),
gsSP2Triangles(3, 8, 1, 0, 3, 9, 8, 0),
gsSP2Triangles(10, 2, 11, 0, 10, 0, 2, 0),
gsSP2Triangles(9, 12, 8, 0, 9, 13, 12, 0),
gsSP2Triangles(7, 14, 5, 0, 7, 15, 14, 0),
gsSP2Triangles(15, 11, 14, 0, 15, 10, 11, 0),
gsSP2Triangles(13, 16, 12, 0, 13, 17, 16, 0),
gsSPEndDisplayList(),
};
Gfx sOuterCylinderDList[] = {
gsDPPipeSync(),
gsDPSetTextureLUT(G_TT_NONE),
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),
gsDPLoadTextureBlock(sWindEffTexture, G_IM_FMT_I, G_IM_SIZ_8b, 64, 64, 0, G_TX_NOMIRROR | G_TX_WRAP,
G_TX_NOMIRROR | G_TX_WRAP, 6, 6, G_TX_NOLOD, G_TX_NOLOD),
gsDPLoadMultiBlock(sWindEffTexture, 0x0100, 1, G_IM_FMT_I, G_IM_SIZ_8b, 64, 64, 0, G_TX_NOMIRROR | G_TX_WRAP,
G_TX_NOMIRROR | G_TX_WRAP, 6, 6, 15, 15),
gsDPSetCombineLERP(TEXEL1, PRIMITIVE, PRIM_LOD_FRAC, TEXEL0, TEXEL1, TEXEL0, PRIM_LOD_FRAC, TEXEL0, PRIMITIVE,
ENVIRONMENT, COMBINED, ENVIRONMENT, COMBINED, 0, SHADE, 0),
gsDPSetRenderMode(G_RM_PASS, G_RM_AA_ZB_XLU_SURF2),
gsSPClearGeometryMode(G_CULL_BACK | G_FOG | G_LIGHTING | G_TEXTURE_GEN | G_TEXTURE_GEN_LINEAR),
gsDPSetPrimColor(0, 0x80, 0xFF, 0xFF, 0xAA, 0xFF),
gsDPSetEnvColor(0x00, 0x96, 0x00, 0x00),
gsSPDisplayList(0x09000000),
gsSPVertex(&sCylinderVtx[18], 18, 0),
gsSP2Triangles(0, 1, 2, 0, 0, 3, 1, 0),
gsSP2Triangles(4, 5, 6, 0, 4, 7, 5, 0),
gsSP2Triangles(3, 8, 1, 0, 3, 9, 8, 0),
gsSP2Triangles(10, 2, 11, 0, 10, 0, 2, 0),
gsSP2Triangles(9, 12, 8, 0, 9, 13, 12, 0),
gsSP2Triangles(7, 14, 5, 0, 7, 15, 14, 0),
gsSP2Triangles(15, 11, 14, 0, 15, 10, 11, 0),
gsSP2Triangles(13, 16, 12, 0, 13, 17, 16, 0),
gsSPEndDisplayList(),
};