Decompile dyntexUpdateOcean

This commit is contained in:
Ryan Dwyer 2022-06-27 18:34:51 +10:00
parent b8e7387eb1
commit 0684cb1fa0
1 changed files with 35 additions and 211 deletions

View File

@ -58,9 +58,6 @@ struct dyntexvtx {
s16 t;
};
const char var7f1b5960[] = "modula";
const char var7f1b5968[] = "ripsize";
s32 g_DyntexVerticesMax;
s32 g_DyntexTypesMax;
s32 g_DyntexRoomsMax;
@ -75,22 +72,6 @@ bool g_DyntexTypePopulated = false;
s32 g_DyntexRoomsCount = 0;
s32 g_DyntexTypesCount = 0;
s32 g_DyntexVerticesCount = 0;
u32 var8007f6fc = 0x00000041;
u32 var8007f700 = 0x00000016;
u32 var8007f704 = 0x0000001d;
u32 var8007f708 = 0x0000004a;
u32 var8007f70c = 0x00000006;
u32 var8007f710 = 0x00000006;
u32 var8007f714 = 0x00000038;
u32 var8007f718 = 0x000003d5;
u32 var8007f71c = 0x00000018;
u32 var8007f720 = 0x00000018;
u32 var8007f724 = 0x00000034;
u32 var8007f728 = 0x000002f7;
u32 var8007f72c = 0x00000012;
u32 var8007f730 = 0x00000012;
void dyntexUpdateOcean(struct gfxvtx *vertices, struct dyntextype *type);
void dyntexUpdateLinear(struct gfxvtx *vertices, struct dyntextype *type)
{
@ -130,198 +111,28 @@ void dyntexUpdateMonitor(struct gfxvtx *vertices, struct dyntextype *type)
}
}
GLOBAL_ASM(
glabel dyntexUpdateOcean
.late_rodata
glabel var7f1b5970
.word 0x40c907a9
.text
/* f13b8a0: 27bdffb8 */ addiu $sp,$sp,-72
/* f13b8a4: 3c018006 */ lui $at,%hi(var80061634)
/* f13b8a8: c4241634 */ lwc1 $f4,%lo(var80061634)($at)
/* f13b8ac: 3c0140a0 */ lui $at,0x40a0
/* f13b8b0: 44813000 */ mtc1 $at,$f6
/* f13b8b4: afb50040 */ sw $s5,0x40($sp)
/* f13b8b8: afb20034 */ sw $s2,0x34($sp)
/* f13b8bc: 00a09025 */ or $s2,$a1,$zero
/* f13b8c0: 0080a825 */ or $s5,$a0,$zero
/* f13b8c4: f7b80020 */ sdc1 $f24,0x20($sp)
/* f13b8c8: afbf0044 */ sw $ra,0x44($sp)
/* f13b8cc: 3c047f1b */ lui $a0,%hi(var7f1b5960)
/* f13b8d0: 3c058008 */ lui $a1,%hi(var8007f700)
/* f13b8d4: 46062602 */ mul.s $f24,$f4,$f6
/* f13b8d8: afb4003c */ sw $s4,0x3c($sp)
/* f13b8dc: afb30038 */ sw $s3,0x38($sp)
/* f13b8e0: afb10030 */ sw $s1,0x30($sp)
/* f13b8e4: afb0002c */ sw $s0,0x2c($sp)
/* f13b8e8: f7b60018 */ sdc1 $f22,0x18($sp)
/* f13b8ec: f7b40010 */ sdc1 $f20,0x10($sp)
/* f13b8f0: 24a5f700 */ addiu $a1,$a1,%lo(var8007f700)
/* f13b8f4: 0c0036cc */ jal mainOverrideVariable
/* f13b8f8: 24845960 */ addiu $a0,$a0,%lo(var7f1b5960)
/* f13b8fc: 3c047f1b */ lui $a0,%hi(var7f1b5968)
/* f13b900: 3c058008 */ lui $a1,%hi(var8007f6fc)
/* f13b904: 24a5f6fc */ addiu $a1,$a1,%lo(var8007f6fc)
/* f13b908: 0c0036cc */ jal mainOverrideVariable
/* f13b90c: 24845968 */ addiu $a0,$a0,%lo(var7f1b5968)
/* f13b910: 924e0001 */ lbu $t6,0x1($s2)
/* f13b914: 00009825 */ or $s3,$zero,$zero
/* f13b918: 00008025 */ or $s0,$zero,$zero
/* f13b91c: 19c00083 */ blez $t6,.L0f13bb2c
/* f13b920: 3c017f1b */ lui $at,%hi(var7f1b5970)
/* f13b924: 3c11800a */ lui $s1,%hi(g_DyntexVertices)
/* f13b928: 2631418c */ addiu $s1,$s1,%lo(g_DyntexVertices)
/* f13b92c: c4365970 */ lwc1 $f22,%lo(var7f1b5970)($at)
/* f13b930: 96580002 */ lhu $t8,0x2($s2)
.L0f13b934:
/* f13b934: 8e2f0000 */ lw $t7,0x0($s1)
/* f13b938: 3c0b8008 */ lui $t3,%hi(var8007f700)
/* f13b93c: 0018c880 */ sll $t9,$t8,0x2
/* f13b940: 0338c823 */ subu $t9,$t9,$t8
/* f13b944: 0019c840 */ sll $t9,$t9,0x1
/* f13b948: 01f94021 */ addu $t0,$t7,$t9
/* f13b94c: 8d6bf700 */ lw $t3,%lo(var8007f700)($t3)
/* f13b950: 01101021 */ addu $v0,$t0,$s0
/* f13b954: 844a0004 */ lh $t2,0x4($v0)
/* f13b958: 94490000 */ lhu $t1,0x0($v0)
/* f13b95c: 448b9000 */ mtc1 $t3,$f18
/* f13b960: 014b001b */ divu $zero,$t2,$t3
/* f13b964: 00006010 */ mfhi $t4
/* f13b968: 448c4000 */ mtc1 $t4,$f8
/* f13b96c: 0135a021 */ addu $s4,$t1,$s5
/* f13b970: 15600002 */ bnez $t3,.L0f13b97c
/* f13b974: 00000000 */ nop
/* f13b978: 0007000d */ break 0x7
.L0f13b97c:
/* f13b97c: 468042a0 */ cvt.s.w $f10,$f8
/* f13b980: 05810004 */ bgez $t4,.L0f13b994
/* f13b984: 3c014f80 */ lui $at,0x4f80
/* f13b988: 44818000 */ mtc1 $at,$f16
/* f13b98c: 00000000 */ nop
/* f13b990: 46105280 */ add.s $f10,$f10,$f16
.L0f13b994:
/* f13b994: 05610005 */ bgez $t3,.L0f13b9ac
/* f13b998: 46809120 */ cvt.s.w $f4,$f18
/* f13b99c: 3c014f80 */ lui $at,0x4f80
/* f13b9a0: 44813000 */ mtc1 $at,$f6
/* f13b9a4: 00000000 */ nop
/* f13b9a8: 46062100 */ add.s $f4,$f4,$f6
.L0f13b9ac:
/* f13b9ac: 46045203 */ div.s $f8,$f10,$f4
/* f13b9b0: 46184400 */ add.s $f16,$f8,$f24
/* f13b9b4: 46168502 */ mul.s $f20,$f16,$f22
/* f13b9b8: 0c0068f7 */ jal sinf
/* f13b9bc: 4600a306 */ mov.s $f12,$f20
/* f13b9c0: 964e0002 */ lhu $t6,0x2($s2)
/* f13b9c4: 3c098008 */ lui $t1,%hi(var8007f6fc)
/* f13b9c8: 8d29f6fc */ lw $t1,%lo(var8007f6fc)($t1)
/* f13b9cc: 8e2d0000 */ lw $t5,0x0($s1)
/* f13b9d0: 000ec080 */ sll $t8,$t6,0x2
/* f13b9d4: 030ec023 */ subu $t8,$t8,$t6
/* f13b9d8: 0018c040 */ sll $t8,$t8,0x1
/* f13b9dc: 44899000 */ mtc1 $t1,$f18
/* f13b9e0: 01b87821 */ addu $t7,$t5,$t8
/* f13b9e4: 01f0c821 */ addu $t9,$t7,$s0
/* f13b9e8: 87280004 */ lh $t0,0x4($t9)
/* f13b9ec: 05210005 */ bgez $t1,.L0f13ba04
/* f13b9f0: 468091a0 */ cvt.s.w $f6,$f18
/* f13b9f4: 3c014f80 */ lui $at,0x4f80
/* f13b9f8: 44815000 */ mtc1 $at,$f10
/* f13b9fc: 00000000 */ nop
/* f13ba00: 460a3180 */ add.s $f6,$f6,$f10
.L0f13ba04:
/* f13ba04: 46060102 */ mul.s $f4,$f0,$f6
/* f13ba08: 3c014f80 */ lui $at,0x4f80
/* f13ba0c: 4600220d */ trunc.w.s $f8,$f4
/* f13ba10: 440c4000 */ mfc1 $t4,$f8
/* f13ba14: 00000000 */ nop
/* f13ba18: 000c5c00 */ sll $t3,$t4,0x10
/* f13ba1c: 000b7403 */ sra $t6,$t3,0x10
/* f13ba20: 01c86821 */ addu $t5,$t6,$t0
/* f13ba24: a68d000a */ sh $t5,0xa($s4)
/* f13ba28: 964f0002 */ lhu $t7,0x2($s2)
/* f13ba2c: 8e380000 */ lw $t8,0x0($s1)
/* f13ba30: 3c0e8008 */ lui $t6,%hi(var8007f700)
/* f13ba34: 000fc880 */ sll $t9,$t7,0x2
/* f13ba38: 032fc823 */ subu $t9,$t9,$t7
/* f13ba3c: 0019c840 */ sll $t9,$t9,0x1
/* f13ba40: 03194821 */ addu $t1,$t8,$t9
/* f13ba44: 01305021 */ addu $t2,$t1,$s0
/* f13ba48: 854c0002 */ lh $t4,0x2($t2)
/* f13ba4c: 8dcef700 */ lw $t6,%lo(var8007f700)($t6)
/* f13ba50: 258b0016 */ addiu $t3,$t4,0x16
/* f13ba54: 016e001b */ divu $zero,$t3,$t6
/* f13ba58: 00004010 */ mfhi $t0
/* f13ba5c: 44888000 */ mtc1 $t0,$f16
/* f13ba60: 15c00002 */ bnez $t6,.L0f13ba6c
/* f13ba64: 00000000 */ nop
/* f13ba68: 0007000d */ break 0x7
.L0f13ba6c:
/* f13ba6c: 448e3000 */ mtc1 $t6,$f6
/* f13ba70: 05010004 */ bgez $t0,.L0f13ba84
/* f13ba74: 468084a0 */ cvt.s.w $f18,$f16
/* f13ba78: 44815000 */ mtc1 $at,$f10
/* f13ba7c: 00000000 */ nop
/* f13ba80: 460a9480 */ add.s $f18,$f18,$f10
.L0f13ba84:
/* f13ba84: 05c10005 */ bgez $t6,.L0f13ba9c
/* f13ba88: 46803120 */ cvt.s.w $f4,$f6
/* f13ba8c: 3c014f80 */ lui $at,0x4f80
/* f13ba90: 44814000 */ mtc1 $at,$f8
/* f13ba94: 00000000 */ nop
/* f13ba98: 46082100 */ add.s $f4,$f4,$f8
.L0f13ba9c:
/* f13ba9c: 46049403 */ div.s $f16,$f18,$f4
/* f13baa0: 46188280 */ add.s $f10,$f16,$f24
/* f13baa4: 46165502 */ mul.s $f20,$f10,$f22
/* f13baa8: 0c0068f4 */ jal cosf
/* f13baac: 4600a306 */ mov.s $f12,$f20
/* f13bab0: 964f0002 */ lhu $t7,0x2($s2)
/* f13bab4: 3c0c8008 */ lui $t4,%hi(var8007f6fc)
/* f13bab8: 8d8cf6fc */ lw $t4,%lo(var8007f6fc)($t4)
/* f13babc: 8e2d0000 */ lw $t5,0x0($s1)
/* f13bac0: 000fc080 */ sll $t8,$t7,0x2
/* f13bac4: 030fc023 */ subu $t8,$t8,$t7
/* f13bac8: 0018c040 */ sll $t8,$t8,0x1
/* f13bacc: 448c3000 */ mtc1 $t4,$f6
/* f13bad0: 01b8c821 */ addu $t9,$t5,$t8
/* f13bad4: 03304821 */ addu $t1,$t9,$s0
/* f13bad8: 852a0002 */ lh $t2,0x2($t1)
/* f13badc: 05810005 */ bgez $t4,.L0f13baf4
/* f13bae0: 46803220 */ cvt.s.w $f8,$f6
/* f13bae4: 3c014f80 */ lui $at,0x4f80
/* f13bae8: 44819000 */ mtc1 $at,$f18
/* f13baec: 00000000 */ nop
/* f13baf0: 46124200 */ add.s $f8,$f8,$f18
.L0f13baf4:
/* f13baf4: 46080102 */ mul.s $f4,$f0,$f8
/* f13baf8: 26730001 */ addiu $s3,$s3,0x1
/* f13bafc: 26100006 */ addiu $s0,$s0,0x6
/* f13bb00: 4600240d */ trunc.w.s $f16,$f4
/* f13bb04: 44088000 */ mfc1 $t0,$f16
/* f13bb08: 00000000 */ nop
/* f13bb0c: 00087400 */ sll $t6,$t0,0x10
/* f13bb10: 000e7c03 */ sra $t7,$t6,0x10
/* f13bb14: 01ea6821 */ addu $t5,$t7,$t2
/* f13bb18: a68d0008 */ sh $t5,0x8($s4)
/* f13bb1c: 92580001 */ lbu $t8,0x1($s2)
/* f13bb20: 0278082a */ slt $at,$s3,$t8
/* f13bb24: 5420ff83 */ bnezl $at,.L0f13b934
/* f13bb28: 96580002 */ lhu $t8,0x2($s2)
.L0f13bb2c:
/* f13bb2c: 8fbf0044 */ lw $ra,0x44($sp)
/* f13bb30: d7b40010 */ ldc1 $f20,0x10($sp)
/* f13bb34: d7b60018 */ ldc1 $f22,0x18($sp)
/* f13bb38: d7b80020 */ ldc1 $f24,0x20($sp)
/* f13bb3c: 8fb0002c */ lw $s0,0x2c($sp)
/* f13bb40: 8fb10030 */ lw $s1,0x30($sp)
/* f13bb44: 8fb20034 */ lw $s2,0x34($sp)
/* f13bb48: 8fb30038 */ lw $s3,0x38($sp)
/* f13bb4c: 8fb4003c */ lw $s4,0x3c($sp)
/* f13bb50: 8fb50040 */ lw $s5,0x40($sp)
/* f13bb54: 03e00008 */ jr $ra
/* f13bb58: 27bd0048 */ addiu $sp,$sp,0x48
);
void dyntexUpdateOcean(struct gfxvtx *vertices, struct dyntextype *type)
{
f32 f24 = var80061634 * 5.0f;
f32 angle;
s32 i;
static u32 ripsize = 65;
static u32 modula = 22;
mainOverrideVariable("modula", &modula);
mainOverrideVariable("ripsize", &ripsize);
for (i = 0; i < type->numvertices; i++) {
struct gfxvtx *vertex = (struct gfxvtx *)((s32)vertices + g_DyntexVertices[type->vertexlistoffset + i].offset);
angle = ((g_DyntexVertices[type->vertexlistoffset + i].t % modula) / (f32) modula + f24) * M_BADTAU;
vertex->unk0a = g_DyntexVertices[type->vertexlistoffset + i].t + (s16) (sinf(angle) * ripsize);
angle = (((g_DyntexVertices[type->vertexlistoffset + i].s + 22) % modula) / (f32) modula + f24) * M_BADTAU;
vertex->unk08 = g_DyntexVertices[type->vertexlistoffset + i].s + (s16) (cosf(angle) * ripsize);
}
}
void dyntexUpdateArrows(struct gfxvtx *vertices, struct dyntextype *type)
{
@ -594,6 +405,19 @@ void dyntexReset(void)
if (size1);
}
u32 var8007f704 = 0x0000001d;
u32 var8007f708 = 0x0000004a;
u32 var8007f70c = 0x00000006;
u32 var8007f710 = 0x00000006;
u32 var8007f714 = 0x00000038;
u32 var8007f718 = 0x000003d5;
u32 var8007f71c = 0x00000018;
u32 var8007f720 = 0x00000018;
u32 var8007f724 = 0x00000034;
u32 var8007f728 = 0x000002f7;
u32 var8007f72c = 0x00000012;
u32 var8007f730 = 0x00000012;
void dyntex0f13c4e8(void)
{
// empty