Decompile doorUpdateTiles
This commit is contained in:
parent
79b846c163
commit
3ffe50ac34
|
|
@ -5811,7 +5811,7 @@ bool aiSetDoorOpen(void)
|
|||
door->fracspeed = 0;
|
||||
door->lastopen60 = g_Vars.lvframe60;
|
||||
door->mode = 0;
|
||||
func0f08c54c(door);
|
||||
doorUpdateTiles(door);
|
||||
doorActivatePortal(door);
|
||||
func0f0926bc(door->base.prop, 1, 0xffff);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -69546,429 +69546,125 @@ void doorGetBbox(struct doorobj *door, struct modelrodata_bbox *dst)
|
|||
}
|
||||
}
|
||||
|
||||
GLOBAL_ASM(
|
||||
glabel func0f08c54c
|
||||
.late_rodata
|
||||
glabel var7f1aaf28
|
||||
.word 0x3c8ef461
|
||||
glabel var7f1aaf2c
|
||||
.word 0x40c907a9
|
||||
glabel var7f1aaf30
|
||||
.word 0x3c8ef461
|
||||
glabel var7f1aaf34
|
||||
.word 0x3c8ef461
|
||||
glabel var7f1aaf38
|
||||
.word 0x40c907a9
|
||||
glabel var7f1aaf3c
|
||||
.word 0x3c8ef461
|
||||
glabel var7f1aaf40
|
||||
.word 0x461c4000
|
||||
glabel var7f1aaf44
|
||||
.word 0x3ecccccd
|
||||
glabel var7f1aaf48
|
||||
.word 0x3ecccccd
|
||||
.text
|
||||
/* f08c54c: 27bdfec8 */ addiu $sp,$sp,-312
|
||||
/* f08c550: afbf0024 */ sw $ra,0x24($sp)
|
||||
/* f08c554: afb00020 */ sw $s0,0x20($sp)
|
||||
/* f08c558: 948e0070 */ lhu $t6,0x70($a0)
|
||||
/* f08c55c: 00808025 */ or $s0,$a0,$zero
|
||||
/* f08c560: 31cf0080 */ andi $t7,$t6,0x80
|
||||
/* f08c564: 51e00018 */ beqzl $t7,.L0f08c5c8
|
||||
/* f08c568: 96020072 */ lhu $v0,0x72($s0)
|
||||
/* f08c56c: c4840098 */ lwc1 $f4,0x98($a0)
|
||||
/* f08c570: c486007c */ lwc1 $f6,0x7c($a0)
|
||||
/* f08c574: c48a008c */ lwc1 $f10,0x8c($a0)
|
||||
/* f08c578: 8c980014 */ lw $t8,0x14($a0)
|
||||
/* f08c57c: 46062202 */ mul.s $f8,$f4,$f6
|
||||
/* f08c580: 460a4400 */ add.s $f16,$f8,$f10
|
||||
/* f08c584: e7100008 */ swc1 $f16,0x8($t8)
|
||||
/* f08c588: c484007c */ lwc1 $f4,0x7c($a0)
|
||||
/* f08c58c: c492009c */ lwc1 $f18,0x9c($a0)
|
||||
/* f08c590: c4880090 */ lwc1 $f8,0x90($a0)
|
||||
/* f08c594: 8c990014 */ lw $t9,0x14($a0)
|
||||
/* f08c598: 46049182 */ mul.s $f6,$f18,$f4
|
||||
/* f08c59c: 46083280 */ add.s $f10,$f6,$f8
|
||||
/* f08c5a0: e72a000c */ swc1 $f10,0xc($t9)
|
||||
/* f08c5a4: c492007c */ lwc1 $f18,0x7c($a0)
|
||||
/* f08c5a8: c49000a0 */ lwc1 $f16,0xa0($a0)
|
||||
/* f08c5ac: c4860094 */ lwc1 $f6,0x94($a0)
|
||||
/* f08c5b0: 8c880014 */ lw $t0,0x14($a0)
|
||||
/* f08c5b4: 46128102 */ mul.s $f4,$f16,$f18
|
||||
/* f08c5b8: 46062200 */ add.s $f8,$f4,$f6
|
||||
/* f08c5bc: 100000df */ b .L0f08c93c
|
||||
/* f08c5c0: e5080010 */ swc1 $f8,0x10($t0)
|
||||
/* f08c5c4: 96020072 */ lhu $v0,0x72($s0)
|
||||
.L0f08c5c8:
|
||||
/* f08c5c8: 24010005 */ addiu $at,$zero,0x5
|
||||
/* f08c5cc: 2405003a */ addiu $a1,$zero,0x3a
|
||||
/* f08c5d0: 10410006 */ beq $v0,$at,.L0f08c5ec
|
||||
/* f08c5d4: 27a6002c */ addiu $a2,$sp,0x2c
|
||||
/* f08c5d8: 24010009 */ addiu $at,$zero,0x9
|
||||
/* f08c5dc: 10410003 */ beq $v0,$at,.L0f08c5ec
|
||||
/* f08c5e0: 2401000a */ addiu $at,$zero,0xa
|
||||
/* f08c5e4: 544100d6 */ bnel $v0,$at,.L0f08c940
|
||||
/* f08c5e8: 02002025 */ or $a0,$s0,$zero
|
||||
.L0f08c5ec:
|
||||
/* f08c5ec: 0fc456ac */ jal padUnpack
|
||||
/* f08c5f0: 86040006 */ lh $a0,0x6($s0)
|
||||
/* f08c5f4: c7aa0044 */ lwc1 $f10,0x44($sp)
|
||||
/* f08c5f8: c7b00064 */ lwc1 $f16,0x64($sp)
|
||||
/* f08c5fc: c7a80048 */ lwc1 $f8,0x48($sp)
|
||||
/* f08c600: c7a4002c */ lwc1 $f4,0x2c($sp)
|
||||
/* f08c604: 46105482 */ mul.s $f18,$f10,$f16
|
||||
/* f08c608: 24010009 */ addiu $at,$zero,0x9
|
||||
/* f08c60c: c7a00060 */ lwc1 $f0,0x60($sp)
|
||||
/* f08c610: 46104282 */ mul.s $f10,$f8,$f16
|
||||
/* f08c614: c7a8004c */ lwc1 $f8,0x4c($sp)
|
||||
/* f08c618: 46049180 */ add.s $f6,$f18,$f4
|
||||
/* f08c61c: c7b20030 */ lwc1 $f18,0x30($sp)
|
||||
/* f08c620: 46125100 */ add.s $f4,$f10,$f18
|
||||
/* f08c624: 46104282 */ mul.s $f10,$f8,$f16
|
||||
/* f08c628: c7b20034 */ lwc1 $f18,0x34($sp)
|
||||
/* f08c62c: e7a6008c */ swc1 $f6,0x8c($sp)
|
||||
/* f08c630: e7a40090 */ swc1 $f4,0x90($sp)
|
||||
/* f08c634: c7b00050 */ lwc1 $f16,0x50($sp)
|
||||
/* f08c638: 46125200 */ add.s $f8,$f10,$f18
|
||||
/* f08c63c: e7a80094 */ swc1 $f8,0x94($sp)
|
||||
/* f08c640: 96020072 */ lhu $v0,0x72($s0)
|
||||
/* f08c644: 5441000e */ bnel $v0,$at,.L0f08c680
|
||||
/* f08c648: 2401000a */ addiu $at,$zero,0xa
|
||||
/* f08c64c: 46008282 */ mul.s $f10,$f16,$f0
|
||||
/* f08c650: c7b00054 */ lwc1 $f16,0x54($sp)
|
||||
/* f08c654: 460a3480 */ add.s $f18,$f6,$f10
|
||||
/* f08c658: 46008182 */ mul.s $f6,$f16,$f0
|
||||
/* f08c65c: e7b2008c */ swc1 $f18,0x8c($sp)
|
||||
/* f08c660: c7b20058 */ lwc1 $f18,0x58($sp)
|
||||
/* f08c664: 46009402 */ mul.s $f16,$f18,$f0
|
||||
/* f08c668: 46062280 */ add.s $f10,$f4,$f6
|
||||
/* f08c66c: e7aa0090 */ swc1 $f10,0x90($sp)
|
||||
/* f08c670: 46104100 */ add.s $f4,$f8,$f16
|
||||
/* f08c674: 10000038 */ b .L0f08c758
|
||||
/* f08c678: e7a40094 */ swc1 $f4,0x94($sp)
|
||||
/* f08c67c: 2401000a */ addiu $at,$zero,0xa
|
||||
.L0f08c680:
|
||||
/* f08c680: 14410011 */ bne $v0,$at,.L0f08c6c8
|
||||
/* f08c684: c7a0006c */ lwc1 $f0,0x6c($sp)
|
||||
/* f08c688: c7aa0038 */ lwc1 $f10,0x38($sp)
|
||||
/* f08c68c: c7a6008c */ lwc1 $f6,0x8c($sp)
|
||||
/* f08c690: c7a4003c */ lwc1 $f4,0x3c($sp)
|
||||
/* f08c694: 46005482 */ mul.s $f18,$f10,$f0
|
||||
/* f08c698: c7b00090 */ lwc1 $f16,0x90($sp)
|
||||
/* f08c69c: 46002282 */ mul.s $f10,$f4,$f0
|
||||
/* f08c6a0: 46123200 */ add.s $f8,$f6,$f18
|
||||
/* f08c6a4: c7b20094 */ lwc1 $f18,0x94($sp)
|
||||
/* f08c6a8: 460a8180 */ add.s $f6,$f16,$f10
|
||||
/* f08c6ac: e7a8008c */ swc1 $f8,0x8c($sp)
|
||||
/* f08c6b0: c7a80040 */ lwc1 $f8,0x40($sp)
|
||||
/* f08c6b4: e7a60090 */ swc1 $f6,0x90($sp)
|
||||
/* f08c6b8: 46004102 */ mul.s $f4,$f8,$f0
|
||||
/* f08c6bc: 46049400 */ add.s $f16,$f18,$f4
|
||||
/* f08c6c0: 10000025 */ b .L0f08c758
|
||||
/* f08c6c4: e7b00094 */ swc1 $f16,0x94($sp)
|
||||
.L0f08c6c8:
|
||||
/* f08c6c8: 8e090008 */ lw $t1,0x8($s0)
|
||||
/* f08c6cc: c7a0005c */ lwc1 $f0,0x5c($sp)
|
||||
/* f08c6d0: c7a6008c */ lwc1 $f6,0x8c($sp)
|
||||
/* f08c6d4: 00095080 */ sll $t2,$t1,0x2
|
||||
/* f08c6d8: 05410012 */ bgez $t2,.L0f08c724
|
||||
/* f08c6dc: c7aa0050 */ lwc1 $f10,0x50($sp)
|
||||
/* f08c6e0: c7a00060 */ lwc1 $f0,0x60($sp)
|
||||
/* f08c6e4: c7a60050 */ lwc1 $f6,0x50($sp)
|
||||
/* f08c6e8: c7aa008c */ lwc1 $f10,0x8c($sp)
|
||||
/* f08c6ec: c7b00054 */ lwc1 $f16,0x54($sp)
|
||||
/* f08c6f0: 46003202 */ mul.s $f8,$f6,$f0
|
||||
/* f08c6f4: c7a40090 */ lwc1 $f4,0x90($sp)
|
||||
/* f08c6f8: 46008182 */ mul.s $f6,$f16,$f0
|
||||
/* f08c6fc: 46085480 */ add.s $f18,$f10,$f8
|
||||
/* f08c700: c7a80094 */ lwc1 $f8,0x94($sp)
|
||||
/* f08c704: 46062280 */ add.s $f10,$f4,$f6
|
||||
/* f08c708: e7b2008c */ swc1 $f18,0x8c($sp)
|
||||
/* f08c70c: c7b20058 */ lwc1 $f18,0x58($sp)
|
||||
/* f08c710: e7aa0090 */ swc1 $f10,0x90($sp)
|
||||
/* f08c714: 46009402 */ mul.s $f16,$f18,$f0
|
||||
/* f08c718: 46104100 */ add.s $f4,$f8,$f16
|
||||
/* f08c71c: 1000000e */ b .L0f08c758
|
||||
/* f08c720: e7a40094 */ swc1 $f4,0x94($sp)
|
||||
.L0f08c724:
|
||||
/* f08c724: 46005482 */ mul.s $f18,$f10,$f0
|
||||
/* f08c728: c7a40054 */ lwc1 $f4,0x54($sp)
|
||||
/* f08c72c: c7b00090 */ lwc1 $f16,0x90($sp)
|
||||
/* f08c730: 46002282 */ mul.s $f10,$f4,$f0
|
||||
/* f08c734: 46123200 */ add.s $f8,$f6,$f18
|
||||
/* f08c738: c7b20094 */ lwc1 $f18,0x94($sp)
|
||||
/* f08c73c: 460a8180 */ add.s $f6,$f16,$f10
|
||||
/* f08c740: e7a8008c */ swc1 $f8,0x8c($sp)
|
||||
/* f08c744: c7a80058 */ lwc1 $f8,0x58($sp)
|
||||
/* f08c748: e7a60090 */ swc1 $f6,0x90($sp)
|
||||
/* f08c74c: 46004102 */ mul.s $f4,$f8,$f0
|
||||
/* f08c750: 46049400 */ add.s $f16,$f18,$f4
|
||||
/* f08c754: e7b00094 */ swc1 $f16,0x94($sp)
|
||||
.L0f08c758:
|
||||
/* f08c758: c60a008c */ lwc1 $f10,0x8c($s0)
|
||||
/* f08c75c: c7a6008c */ lwc1 $f6,0x8c($sp)
|
||||
/* f08c760: c7a40090 */ lwc1 $f4,0x90($sp)
|
||||
/* f08c764: 26040098 */ addiu $a0,$s0,0x98
|
||||
/* f08c768: 46065201 */ sub.s $f8,$f10,$f6
|
||||
/* f08c76c: c7a60094 */ lwc1 $f6,0x94($sp)
|
||||
/* f08c770: 27a500dc */ addiu $a1,$sp,0xdc
|
||||
/* f08c774: e7a80080 */ swc1 $f8,0x80($sp)
|
||||
/* f08c778: c6120090 */ lwc1 $f18,0x90($s0)
|
||||
/* f08c77c: 46049401 */ sub.s $f16,$f18,$f4
|
||||
/* f08c780: e7b00084 */ swc1 $f16,0x84($sp)
|
||||
/* f08c784: c60a0094 */ lwc1 $f10,0x94($s0)
|
||||
/* f08c788: 46065201 */ sub.s $f8,$f10,$f6
|
||||
/* f08c78c: 0c005755 */ jal mtx3ToMtx4
|
||||
/* f08c790: e7a80088 */ swc1 $f8,0x88($sp)
|
||||
/* f08c794: 27a40080 */ addiu $a0,$sp,0x80
|
||||
/* f08c798: 0c0059b7 */ jal mtx4LoadTranslation
|
||||
/* f08c79c: 27a50098 */ addiu $a1,$sp,0x98
|
||||
/* f08c7a0: 27a40098 */ addiu $a0,$sp,0x98
|
||||
/* f08c7a4: 0c00567f */ jal mtx4MultMtx4InPlace
|
||||
/* f08c7a8: 27a500dc */ addiu $a1,$sp,0xdc
|
||||
/* f08c7ac: 96020072 */ lhu $v0,0x72($s0)
|
||||
/* f08c7b0: 24010009 */ addiu $at,$zero,0x9
|
||||
/* f08c7b4: 5441001a */ bnel $v0,$at,.L0f08c820
|
||||
/* f08c7b8: 2401000a */ addiu $at,$zero,0xa
|
||||
/* f08c7bc: 8e0b0008 */ lw $t3,0x8($s0)
|
||||
/* f08c7c0: 3c017f1b */ lui $at,%hi(var7f1aaf28)
|
||||
/* f08c7c4: 000b6080 */ sll $t4,$t3,0x2
|
||||
/* f08c7c8: 0583000d */ bgezl $t4,.L0f08c800
|
||||
/* f08c7cc: c606007c */ lwc1 $f6,0x7c($s0)
|
||||
/* f08c7d0: 3c017f1b */ lui $at,%hi(var7f1aaf2c)
|
||||
/* f08c7d4: c424af28 */ lwc1 $f4,%lo(var7f1aaf28)($at)
|
||||
/* f08c7d8: c612007c */ lwc1 $f18,0x7c($s0)
|
||||
/* f08c7dc: 3c017f1b */ lui $at,%hi(var7f1aaf30)
|
||||
/* f08c7e0: c42aaf2c */ lwc1 $f10,%lo(var7f1aaf2c)($at)
|
||||
/* f08c7e4: 46049402 */ mul.s $f16,$f18,$f4
|
||||
/* f08c7e8: 27a50098 */ addiu $a1,$sp,0x98
|
||||
/* f08c7ec: 0c005900 */ jal mtx4LoadZRotation
|
||||
/* f08c7f0: 46105301 */ sub.s $f12,$f10,$f16
|
||||
/* f08c7f4: 1000003d */ b .L0f08c8ec
|
||||
/* f08c7f8: 27a40098 */ addiu $a0,$sp,0x98
|
||||
/* f08c7fc: c606007c */ lwc1 $f6,0x7c($s0)
|
||||
.L0f08c800:
|
||||
/* f08c800: c428af30 */ lwc1 $f8,%lo(var7f1aaf30)($at)
|
||||
/* f08c804: 27a50098 */ addiu $a1,$sp,0x98
|
||||
/* f08c808: 46083302 */ mul.s $f12,$f6,$f8
|
||||
/* f08c80c: 0c005900 */ jal mtx4LoadZRotation
|
||||
/* f08c810: 00000000 */ nop
|
||||
/* f08c814: 10000035 */ b .L0f08c8ec
|
||||
/* f08c818: 27a40098 */ addiu $a0,$sp,0x98
|
||||
/* f08c81c: 2401000a */ addiu $at,$zero,0xa
|
||||
.L0f08c820:
|
||||
/* f08c820: 5441001c */ bnel $v0,$at,.L0f08c894
|
||||
/* f08c824: 8e0f0008 */ lw $t7,0x8($s0)
|
||||
/* f08c828: 8e0d0008 */ lw $t5,0x8($s0)
|
||||
/* f08c82c: 27a40098 */ addiu $a0,$sp,0x98
|
||||
/* f08c830: 8fa60050 */ lw $a2,0x50($sp)
|
||||
/* f08c834: 000d7080 */ sll $t6,$t5,0x2
|
||||
/* f08c838: 05c1000f */ bgez $t6,.L0f08c878
|
||||
/* f08c83c: 8fa70054 */ lw $a3,0x54($sp)
|
||||
/* f08c840: 3c0143b4 */ lui $at,0x43b4
|
||||
/* f08c844: 44819000 */ mtc1 $at,$f18
|
||||
/* f08c848: c604007c */ lwc1 $f4,0x7c($s0)
|
||||
/* f08c84c: c7b00058 */ lwc1 $f16,0x58($sp)
|
||||
/* f08c850: 27a40098 */ addiu $a0,$sp,0x98
|
||||
/* f08c854: 46049281 */ sub.s $f10,$f18,$f4
|
||||
/* f08c858: 8fa60050 */ lw $a2,0x50($sp)
|
||||
/* f08c85c: 8fa70054 */ lw $a3,0x54($sp)
|
||||
/* f08c860: e7b00010 */ swc1 $f16,0x10($sp)
|
||||
/* f08c864: 44055000 */ mfc1 $a1,$f10
|
||||
/* f08c868: 0c0012a0 */ jal guRotateF
|
||||
/* f08c86c: 00000000 */ nop
|
||||
/* f08c870: 1000001e */ b .L0f08c8ec
|
||||
/* f08c874: 27a40098 */ addiu $a0,$sp,0x98
|
||||
.L0f08c878:
|
||||
/* f08c878: c7a60058 */ lwc1 $f6,0x58($sp)
|
||||
/* f08c87c: 8e05007c */ lw $a1,0x7c($s0)
|
||||
/* f08c880: 0c0012a0 */ jal guRotateF
|
||||
/* f08c884: e7a60010 */ swc1 $f6,0x10($sp)
|
||||
/* f08c888: 10000018 */ b .L0f08c8ec
|
||||
/* f08c88c: 27a40098 */ addiu $a0,$sp,0x98
|
||||
/* f08c890: 8e0f0008 */ lw $t7,0x8($s0)
|
||||
.L0f08c894:
|
||||
/* f08c894: 3c017f1b */ lui $at,%hi(var7f1aaf34)
|
||||
/* f08c898: 000fc080 */ sll $t8,$t7,0x2
|
||||
/* f08c89c: 0703000d */ bgezl $t8,.L0f08c8d4
|
||||
/* f08c8a0: c610007c */ lwc1 $f16,0x7c($s0)
|
||||
/* f08c8a4: 3c017f1b */ lui $at,%hi(var7f1aaf38)
|
||||
/* f08c8a8: c432af34 */ lwc1 $f18,%lo(var7f1aaf34)($at)
|
||||
/* f08c8ac: c608007c */ lwc1 $f8,0x7c($s0)
|
||||
/* f08c8b0: 3c017f1b */ lui $at,%hi(var7f1aaf3c)
|
||||
/* f08c8b4: c42aaf38 */ lwc1 $f10,%lo(var7f1aaf38)($at)
|
||||
/* f08c8b8: 46124102 */ mul.s $f4,$f8,$f18
|
||||
/* f08c8bc: 27a50098 */ addiu $a1,$sp,0x98
|
||||
/* f08c8c0: 0c0058dd */ jal mtx4LoadYRotation
|
||||
/* f08c8c4: 46045301 */ sub.s $f12,$f10,$f4
|
||||
/* f08c8c8: 10000008 */ b .L0f08c8ec
|
||||
/* f08c8cc: 27a40098 */ addiu $a0,$sp,0x98
|
||||
/* f08c8d0: c610007c */ lwc1 $f16,0x7c($s0)
|
||||
.L0f08c8d4:
|
||||
/* f08c8d4: c426af3c */ lwc1 $f6,%lo(var7f1aaf3c)($at)
|
||||
/* f08c8d8: 27a50098 */ addiu $a1,$sp,0x98
|
||||
/* f08c8dc: 46068302 */ mul.s $f12,$f16,$f6
|
||||
/* f08c8e0: 0c0058dd */ jal mtx4LoadYRotation
|
||||
/* f08c8e4: 00000000 */ nop
|
||||
/* f08c8e8: 27a40098 */ addiu $a0,$sp,0x98
|
||||
.L0f08c8ec:
|
||||
/* f08c8ec: 0c00567f */ jal mtx4MultMtx4InPlace
|
||||
/* f08c8f0: 27a500dc */ addiu $a1,$sp,0xdc
|
||||
/* f08c8f4: 27a4008c */ addiu $a0,$sp,0x8c
|
||||
/* f08c8f8: 0c0059b7 */ jal mtx4LoadTranslation
|
||||
/* f08c8fc: 27a50098 */ addiu $a1,$sp,0x98
|
||||
/* f08c900: 27a40098 */ addiu $a0,$sp,0x98
|
||||
/* f08c904: 0c00567f */ jal mtx4MultMtx4InPlace
|
||||
/* f08c908: 27a500dc */ addiu $a1,$sp,0xdc
|
||||
/* f08c90c: 27a400dc */ addiu $a0,$sp,0xdc
|
||||
/* f08c910: 0c005768 */ jal mtx4ToMtx3
|
||||
/* f08c914: 2605001c */ addiu $a1,$s0,0x1c
|
||||
/* f08c918: c7a8010c */ lwc1 $f8,0x10c($sp)
|
||||
/* f08c91c: 8e190014 */ lw $t9,0x14($s0)
|
||||
/* f08c920: e7280008 */ swc1 $f8,0x8($t9)
|
||||
/* f08c924: 8e080014 */ lw $t0,0x14($s0)
|
||||
/* f08c928: c7b20110 */ lwc1 $f18,0x110($sp)
|
||||
/* f08c92c: e512000c */ swc1 $f18,0xc($t0)
|
||||
/* f08c930: 8e090014 */ lw $t1,0x14($s0)
|
||||
/* f08c934: c7aa0114 */ lwc1 $f10,0x114($sp)
|
||||
/* f08c938: e52a0010 */ swc1 $f10,0x10($t1)
|
||||
.L0f08c93c:
|
||||
/* f08c93c: 02002025 */ or $a0,$s0,$zero
|
||||
.L0f08c940:
|
||||
/* f08c940: 0fc23121 */ jal doorGetBbox
|
||||
/* f08c944: 27a5011c */ addiu $a1,$sp,0x11c
|
||||
/* f08c948: c604007c */ lwc1 $f4,0x7c($s0)
|
||||
/* f08c94c: c6100060 */ lwc1 $f16,0x60($s0)
|
||||
/* f08c950: 3c01ff7f */ lui $at,0xff7f
|
||||
/* f08c954: 3421ffff */ ori $at,$at,0xffff
|
||||
/* f08c958: 4604803e */ c.le.s $f16,$f4
|
||||
/* f08c95c: 00000000 */ nop
|
||||
/* f08c960: 45020007 */ bc1fl .L0f08c980
|
||||
/* f08c964: 8e0c0040 */ lw $t4,0x40($s0)
|
||||
/* f08c968: 8e0a0040 */ lw $t2,0x40($s0)
|
||||
/* f08c96c: 3c010080 */ lui $at,0x80
|
||||
/* f08c970: 01415825 */ or $t3,$t2,$at
|
||||
/* f08c974: 10000065 */ b .L0f08cb0c
|
||||
/* f08c978: ae0b0040 */ sw $t3,0x40($s0)
|
||||
/* f08c97c: 8e0c0040 */ lw $t4,0x40($s0)
|
||||
.L0f08c980:
|
||||
/* f08c980: 960e0070 */ lhu $t6,0x70($s0)
|
||||
/* f08c984: 8e060044 */ lw $a2,0x44($s0)
|
||||
/* f08c988: 01816824 */ and $t5,$t4,$at
|
||||
/* f08c98c: 31cf0020 */ andi $t7,$t6,0x20
|
||||
/* f08c990: 15e00011 */ bnez $t7,.L0f08c9d8
|
||||
/* f08c994: ae0d0040 */ sw $t5,0x40($s0)
|
||||
/* f08c998: 02002025 */ or $a0,$s0,$zero
|
||||
/* f08c99c: 27a500dc */ addiu $a1,$sp,0xdc
|
||||
/* f08c9a0: 0fc23109 */ jal func0f08c424
|
||||
/* f08c9a4: afa600d8 */ sw $a2,0xd8($sp)
|
||||
/* f08c9a8: 8fa600d8 */ lw $a2,0xd8($sp)
|
||||
/* f08c9ac: 27a4011c */ addiu $a0,$sp,0x11c
|
||||
/* f08c9b0: 0fc19d09 */ jal func0f067424
|
||||
/* f08c9b4: 27a500dc */ addiu $a1,$sp,0xdc
|
||||
/* f08c9b8: 96180072 */ lhu $t8,0x72($s0)
|
||||
/* f08c9bc: 24010004 */ addiu $at,$zero,0x4
|
||||
/* f08c9c0: 8fa600d8 */ lw $a2,0xd8($sp)
|
||||
/* f08c9c4: 57010005 */ bnel $t8,$at,.L0f08c9dc
|
||||
/* f08c9c8: 96020072 */ lhu $v0,0x72($s0)
|
||||
/* f08c9cc: 96190070 */ lhu $t9,0x70($s0)
|
||||
/* f08c9d0: 37280020 */ ori $t0,$t9,0x20
|
||||
/* f08c9d4: a6080070 */ sh $t0,0x70($s0)
|
||||
.L0f08c9d8:
|
||||
/* f08c9d8: 96020072 */ lhu $v0,0x72($s0)
|
||||
.L0f08c9dc:
|
||||
/* f08c9dc: 24010004 */ addiu $at,$zero,0x4
|
||||
/* f08c9e0: 27a4011c */ addiu $a0,$sp,0x11c
|
||||
/* f08c9e4: 14410009 */ bne $v0,$at,.L0f08ca0c
|
||||
/* f08c9e8: 2605001c */ addiu $a1,$s0,0x1c
|
||||
/* f08c9ec: 0fc19a57 */ jal func0f06695c
|
||||
/* f08c9f0: afa600d8 */ sw $a2,0xd8($sp)
|
||||
/* f08c9f4: c6060090 */ lwc1 $f6,0x90($s0)
|
||||
/* f08c9f8: 8fa600d8 */ lw $a2,0xd8($sp)
|
||||
/* f08c9fc: 46060200 */ add.s $f8,$f0,$f6
|
||||
/* f08ca00: e4c80008 */ swc1 $f8,0x8($a2)
|
||||
/* f08ca04: 10000016 */ b .L0f08ca60
|
||||
/* f08ca08: 96020072 */ lhu $v0,0x72($s0)
|
||||
.L0f08ca0c:
|
||||
/* f08ca0c: 24010008 */ addiu $at,$zero,0x8
|
||||
/* f08ca10: 5441000a */ bnel $v0,$at,.L0f08ca3c
|
||||
/* f08ca14: 960a0070 */ lhu $t2,0x70($s0)
|
||||
/* f08ca18: 8e090014 */ lw $t1,0x14($s0)
|
||||
/* f08ca1c: 3c017f1b */ lui $at,%hi(var7f1aaf40)
|
||||
/* f08ca20: c42aaf40 */ lwc1 $f10,%lo(var7f1aaf40)($at)
|
||||
/* f08ca24: c532000c */ lwc1 $f18,0xc($t1)
|
||||
/* f08ca28: 460a9101 */ sub.s $f4,$f18,$f10
|
||||
/* f08ca2c: e4c40008 */ swc1 $f4,0x8($a2)
|
||||
/* f08ca30: 1000000b */ b .L0f08ca60
|
||||
/* f08ca34: 96020072 */ lhu $v0,0x72($s0)
|
||||
/* f08ca38: 960a0070 */ lhu $t2,0x70($s0)
|
||||
.L0f08ca3c:
|
||||
/* f08ca3c: 3c01447a */ lui $at,0x447a
|
||||
/* f08ca40: 314b0001 */ andi $t3,$t2,0x1
|
||||
/* f08ca44: 51600007 */ beqzl $t3,.L0f08ca64
|
||||
/* f08ca48: 3c01447a */ lui $at,0x447a
|
||||
/* f08ca4c: 44810000 */ mtc1 $at,$f0
|
||||
/* f08ca50: c4d00008 */ lwc1 $f16,0x8($a2)
|
||||
/* f08ca54: 46008181 */ sub.s $f6,$f16,$f0
|
||||
/* f08ca58: e4c60008 */ swc1 $f6,0x8($a2)
|
||||
/* f08ca5c: 96020072 */ lhu $v0,0x72($s0)
|
||||
.L0f08ca60:
|
||||
/* f08ca60: 3c01447a */ lui $at,0x447a
|
||||
.L0f08ca64:
|
||||
/* f08ca64: 44810000 */ mtc1 $at,$f0
|
||||
/* f08ca68: 24010006 */ addiu $at,$zero,0x6
|
||||
/* f08ca6c: 14410008 */ bne $v0,$at,.L0f08ca90
|
||||
/* f08ca70: 3c017f1b */ lui $at,%hi(var7f1aaf44)
|
||||
/* f08ca74: c428af44 */ lwc1 $f8,%lo(var7f1aaf44)($at)
|
||||
/* f08ca78: c612005c */ lwc1 $f18,0x5c($s0)
|
||||
/* f08ca7c: c604007c */ lwc1 $f4,0x7c($s0)
|
||||
/* f08ca80: 46124282 */ mul.s $f10,$f8,$f18
|
||||
/* f08ca84: 4604503c */ c.lt.s $f10,$f4
|
||||
/* f08ca88: 00000000 */ nop
|
||||
/* f08ca8c: 4501000a */ bc1t .L0f08cab8
|
||||
.L0f08ca90:
|
||||
/* f08ca90: 24010007 */ addiu $at,$zero,0x7
|
||||
/* f08ca94: 1441000e */ bne $v0,$at,.L0f08cad0
|
||||
/* f08ca98: 3c017f1b */ lui $at,%hi(var7f1aaf48)
|
||||
/* f08ca9c: c430af48 */ lwc1 $f16,%lo(var7f1aaf48)($at)
|
||||
/* f08caa0: c606005c */ lwc1 $f6,0x5c($s0)
|
||||
/* f08caa4: c612007c */ lwc1 $f18,0x7c($s0)
|
||||
/* f08caa8: 46068202 */ mul.s $f8,$f16,$f6
|
||||
/* f08caac: 4612403c */ c.lt.s $f8,$f18
|
||||
/* f08cab0: 00000000 */ nop
|
||||
/* f08cab4: 45000006 */ bc1f .L0f08cad0
|
||||
.L0f08cab8:
|
||||
/* f08cab8: 3c014248 */ lui $at,0x4248
|
||||
/* f08cabc: 44812000 */ mtc1 $at,$f4
|
||||
/* f08cac0: c4ca0008 */ lwc1 $f10,0x8($a2)
|
||||
/* f08cac4: 46045400 */ add.s $f16,$f10,$f4
|
||||
/* f08cac8: 10000010 */ b .L0f08cb0c
|
||||
/* f08cacc: e4d00004 */ swc1 $f16,0x4($a2)
|
||||
.L0f08cad0:
|
||||
/* f08cad0: 24010008 */ addiu $at,$zero,0x8
|
||||
/* f08cad4: 54410007 */ bnel $v0,$at,.L0f08caf4
|
||||
/* f08cad8: 960d0070 */ lhu $t5,0x70($s0)
|
||||
/* f08cadc: 8e0c0014 */ lw $t4,0x14($s0)
|
||||
/* f08cae0: c586000c */ lwc1 $f6,0xc($t4)
|
||||
/* f08cae4: 46003200 */ add.s $f8,$f6,$f0
|
||||
/* f08cae8: 10000008 */ b .L0f08cb0c
|
||||
/* f08caec: e4c80004 */ swc1 $f8,0x4($a2)
|
||||
/* f08caf0: 960d0070 */ lhu $t5,0x70($s0)
|
||||
.L0f08caf4:
|
||||
/* f08caf4: 31ae0001 */ andi $t6,$t5,0x1
|
||||
/* f08caf8: 51c00005 */ beqzl $t6,.L0f08cb10
|
||||
/* f08cafc: 8fbf0024 */ lw $ra,0x24($sp)
|
||||
/* f08cb00: c4d20004 */ lwc1 $f18,0x4($a2)
|
||||
/* f08cb04: 46009280 */ add.s $f10,$f18,$f0
|
||||
/* f08cb08: e4ca0004 */ swc1 $f10,0x4($a2)
|
||||
.L0f08cb0c:
|
||||
/* f08cb0c: 8fbf0024 */ lw $ra,0x24($sp)
|
||||
.L0f08cb10:
|
||||
/* f08cb10: 8fb00020 */ lw $s0,0x20($sp)
|
||||
/* f08cb14: 27bd0138 */ addiu $sp,$sp,0x138
|
||||
/* f08cb18: 03e00008 */ jr $ra
|
||||
/* f08cb1c: 00000000 */ nop
|
||||
);
|
||||
void doorUpdateTiles(struct doorobj *door)
|
||||
{
|
||||
struct modelrodata_bbox bbox;
|
||||
Mtxf spdc;
|
||||
struct tiletype3 *geo;
|
||||
Mtxf sp98;
|
||||
struct coord sp8c;
|
||||
struct coord sp80;
|
||||
struct pad pad;
|
||||
|
||||
if (door->doorflags & DOORFLAG_0080) {
|
||||
door->base.prop->pos.x = door->unk98.x * door->frac + door->startpos.x;
|
||||
door->base.prop->pos.y = door->unk98.y * door->frac + door->startpos.y;
|
||||
door->base.prop->pos.z = door->unk98.z * door->frac + door->startpos.z;
|
||||
} else if (door->doortype == DOORTYPE_SWINGING
|
||||
|| door->doortype == DOORTYPE_AZTECCHAIR
|
||||
|| door->doortype == DOORTYPE_HULL) {
|
||||
// @bug: LOOK is not loaded but is used below
|
||||
// It doesn't appear to make any difference though
|
||||
padUnpack(door->base.pad, PADFIELD_POS | PADFIELD_UP | PADFIELD_NORMAL | PADFIELD_BBOX, &pad);
|
||||
|
||||
sp8c.x = pad.pos.x + pad.up.x * pad.bbox.ymin;
|
||||
sp8c.y = pad.pos.y + pad.up.y * pad.bbox.ymin;
|
||||
sp8c.z = pad.pos.z + pad.up.z * pad.bbox.ymin;
|
||||
|
||||
if (door->doortype == DOORTYPE_AZTECCHAIR) {
|
||||
sp8c.x += pad.normal.x * pad.bbox.xmax;
|
||||
sp8c.y += pad.normal.y * pad.bbox.xmax;
|
||||
sp8c.z += pad.normal.z * pad.bbox.xmax;
|
||||
} else if (door->doortype == DOORTYPE_HULL) {
|
||||
sp8c.x += pad.look.x * pad.bbox.zmin;
|
||||
sp8c.y += pad.look.y * pad.bbox.zmin;
|
||||
sp8c.z += pad.look.z * pad.bbox.zmin;
|
||||
} else {
|
||||
if (door->base.flags & OBJFLAG_DOOR_OPENTOFRONT) {
|
||||
sp8c.x += pad.normal.x * pad.bbox.xmax;
|
||||
sp8c.y += pad.normal.y * pad.bbox.xmax;
|
||||
sp8c.z += pad.normal.z * pad.bbox.xmax;
|
||||
} else {
|
||||
sp8c.x += pad.normal.x * pad.bbox.xmin;
|
||||
sp8c.y += pad.normal.y * pad.bbox.xmin;
|
||||
sp8c.z += pad.normal.z * pad.bbox.xmin;
|
||||
}
|
||||
}
|
||||
|
||||
sp80.x = door->startpos.x - sp8c.x;
|
||||
sp80.y = door->startpos.y - sp8c.y;
|
||||
sp80.z = door->startpos.z - sp8c.z;
|
||||
|
||||
mtx3ToMtx4(door->mtx98, &spdc);
|
||||
mtx4LoadTranslation(&sp80, &sp98);
|
||||
mtx4MultMtx4InPlace(&sp98, &spdc);
|
||||
|
||||
if (door->doortype == DOORTYPE_AZTECCHAIR) {
|
||||
if (door->base.flags & OBJFLAG_DOOR_OPENTOFRONT) {
|
||||
mtx4LoadZRotation(M_BADTAU - door->frac * 0.017450513318181f, &sp98);
|
||||
} else {
|
||||
mtx4LoadZRotation(door->frac * 0.017450513318181f, &sp98);
|
||||
}
|
||||
} else if (door->doortype == DOORTYPE_HULL) {
|
||||
if (door->base.flags & OBJFLAG_DOOR_OPENTOFRONT) {
|
||||
guRotateF(sp98.m, 360 - door->frac, pad.normal.x, pad.normal.y, pad.normal.z);
|
||||
} else {
|
||||
guRotateF(sp98.m, door->frac, pad.normal.x, pad.normal.y, pad.normal.z);
|
||||
}
|
||||
} else {
|
||||
if (door->base.flags & OBJFLAG_DOOR_OPENTOFRONT) {
|
||||
mtx4LoadYRotation(M_BADTAU - door->frac * 0.017450513318181f, &sp98);
|
||||
} else {
|
||||
mtx4LoadYRotation(door->frac * 0.017450513318181f, &sp98);
|
||||
}
|
||||
}
|
||||
|
||||
mtx4MultMtx4InPlace(&sp98, &spdc);
|
||||
mtx4LoadTranslation(&sp8c, &sp98);
|
||||
mtx4MultMtx4InPlace(&sp98, &spdc);
|
||||
mtx4ToMtx3(&spdc, door->base.realrot);
|
||||
|
||||
door->base.prop->pos.x = spdc.m[3][0];
|
||||
door->base.prop->pos.y = spdc.m[3][1];
|
||||
door->base.prop->pos.z = spdc.m[3][2];
|
||||
}
|
||||
|
||||
doorGetBbox(door, &bbox);
|
||||
|
||||
if (door->frac >= door->perimfrac) {
|
||||
door->base.hidden |= OBJHFLAG_00800000;
|
||||
return;
|
||||
}
|
||||
|
||||
geo = door->base.geo3;
|
||||
door->base.hidden &= ~OBJHFLAG_00800000;
|
||||
|
||||
if ((door->doorflags & DOORFLAG_0020) == 0) {
|
||||
func0f08c424(door, &spdc);
|
||||
func0f067424(&bbox, &spdc, geo);
|
||||
|
||||
if (door->doortype == DOORTYPE_VERTICAL) {
|
||||
door->doorflags |= DOORFLAG_0020;
|
||||
}
|
||||
}
|
||||
|
||||
if (door->doortype == DOORTYPE_VERTICAL) {
|
||||
geo->ymin = door->startpos.y + func0f06695c(&bbox, door->base.realrot);
|
||||
} else if (door->doortype == DOORTYPE_FALLAWAY) {
|
||||
geo->ymin = door->base.prop->pos.y - 10000;
|
||||
} else if (door->doorflags & DOORFLAG_0001) {
|
||||
geo->ymin -= 1000;
|
||||
}
|
||||
|
||||
if ((door->doortype == DOORTYPE_EYE && door->frac > 0.4f * door->maxfrac)
|
||||
|| (door->doortype == DOORTYPE_IRIS && door->frac > 0.4f * door->maxfrac)) {
|
||||
geo->ymax = geo->ymin + 50;
|
||||
} else if (door->doortype == DOORTYPE_FALLAWAY) {
|
||||
geo->ymax = door->base.prop->pos.y + 1000;
|
||||
} else if (door->doorflags & DOORFLAG_0001) {
|
||||
geo->ymax += 1000;
|
||||
}
|
||||
}
|
||||
|
||||
GLOBAL_ASM(
|
||||
glabel func0f08cb20
|
||||
|
|
@ -70685,7 +70381,7 @@ struct prop *doorInit(struct doorobj *door, struct coord *pos, Mtxf *mtx, s16 *r
|
|||
|
||||
propDeregisterRooms(prop);
|
||||
roomsCopy(sp28, prop->rooms);
|
||||
func0f08c54c(door);
|
||||
doorUpdateTiles(door);
|
||||
func0f069c70(&door->base, false, true);
|
||||
func0f08d3dc(door);
|
||||
|
||||
|
|
@ -71669,7 +71365,7 @@ void doorsCalcFrac(struct doorobj *door)
|
|||
while (loopdoor) {
|
||||
struct prop *loopprop;
|
||||
|
||||
func0f08c54c(loopdoor);
|
||||
doorUpdateTiles(loopdoor);
|
||||
func0f0923d4(&loopdoor->base);
|
||||
|
||||
loopprop = loopdoor->base.prop;
|
||||
|
|
@ -71777,7 +71473,7 @@ void doorsCalcFrac(struct doorobj *door)
|
|||
loopdoor->fracspeed = 0;
|
||||
loopdoor->frac = *(f32 *)&loopdoor->lastcalc60;
|
||||
|
||||
func0f08c54c(loopdoor);
|
||||
doorUpdateTiles(loopdoor);
|
||||
func0f0923d4(&loopdoor->base);
|
||||
func0f08d460(loopdoor);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -672,10 +672,12 @@
|
|||
#define DIFFBIT_PA 0x04
|
||||
#define DIFFBIT_PD 0x08
|
||||
|
||||
#define DOORFLAG_0001 0x0001
|
||||
#define DOORFLAG_WINDOWED 0x0002
|
||||
#define DOORFLAG_0004 0x0004
|
||||
#define DOORFLAG_FLIP 0x0008
|
||||
#define DOORFLAG_AUTOMATIC 0x0010
|
||||
#define DOORFLAG_0020 0x0020
|
||||
#define DOORFLAG_ROTATEDPAD 0x0040
|
||||
#define DOORFLAG_0080 0x0080
|
||||
#define DOORFLAG_0100 0x0100
|
||||
|
|
|
|||
|
|
@ -52,7 +52,7 @@ f32 func0f0669ec(struct modelrodata_bbox *bbox, f32 realrot[3][3]);
|
|||
f32 func0f066a1c(struct modelrodata_bbox *bbox, f32 arg1, f32 arg2, f32 arg3);
|
||||
f32 func0f066abc(struct modelrodata_bbox *bbox, f32 arg1, f32 arg2, f32 arg3);
|
||||
u32 func0f066b5c(void);
|
||||
u32 func0f067424(void);
|
||||
void func0f067424(struct modelrodata_bbox *bbox, Mtxf *mtx, struct tiletype3 *tile);
|
||||
u32 func0f0674bc(void);
|
||||
bool func0f0675c8(struct coord *coord, f32 arg1, struct modelrodata_bbox *arg2, Mtxf *arg3);
|
||||
bool func0f0677ac(struct coord *coord, f32 *arg1, struct coord *pos, struct coord *normal, struct coord *up, struct coord *look, f32 xmin, f32 xmax, f32 ymin, f32 ymax, f32 zmin, f32 zmax);
|
||||
|
|
@ -303,7 +303,7 @@ bool doorIsRangeEmpty(struct doorobj *door);
|
|||
void doorsCheckAutomatic(void);
|
||||
void func0f08c424(struct doorobj *door, Mtxf *matrix);
|
||||
void doorGetBbox(struct doorobj *door, struct modelrodata_bbox *dst);
|
||||
void func0f08c54c(struct doorobj *door);
|
||||
void doorUpdateTiles(struct doorobj *door);
|
||||
void func0f08cb20(struct doorobj *door, struct gfxvtx *vertices1, struct gfxvtx *vertices2, s32 numvertices);
|
||||
void func0f08d3dc(struct doorobj *door);
|
||||
void func0f08d460(struct doorobj *door);
|
||||
|
|
|
|||
Loading…
Reference in New Issue