mirror of https://github.com/zeldaret/oot.git
func_8005C964 OK
This commit is contained in:
parent
cd0d4b1f11
commit
3191f36e3f
|
|
@ -1,97 +0,0 @@
|
|||
.rdata
|
||||
glabel D_8013A768
|
||||
.asciz "../z_collision_check.c"
|
||||
.balign 4
|
||||
|
||||
glabel D_8013A780
|
||||
.asciz "\x1b[31m"
|
||||
.balign 4
|
||||
|
||||
glabel D_8013A788
|
||||
.asciz "ClObjTris_set3():zelda_malloc()出来ません\n"
|
||||
# EUC-JP: 出来ません。 | Can not.
|
||||
.balign 4
|
||||
|
||||
glabel D_8013A7B4
|
||||
.asciz "\x1b[m"
|
||||
.balign 4
|
||||
|
||||
.text
|
||||
glabel func_8005C964
|
||||
/* AD3B04 8005C964 27BDFFD0 */ addiu $sp, $sp, -0x30
|
||||
/* AD3B08 8005C968 AFBF002C */ sw $ra, 0x2c($sp)
|
||||
/* AD3B0C 8005C96C AFB30024 */ sw $s3, 0x24($sp)
|
||||
/* AD3B10 8005C970 AFB20020 */ sw $s2, 0x20($sp)
|
||||
/* AD3B14 8005C974 00A09025 */ move $s2, $a1
|
||||
/* AD3B18 8005C978 00809825 */ move $s3, $a0
|
||||
/* AD3B1C 8005C97C AFB40028 */ sw $s4, 0x28($sp)
|
||||
/* AD3B20 8005C980 AFB1001C */ sw $s1, 0x1c($sp)
|
||||
/* AD3B24 8005C984 AFB00018 */ sw $s0, 0x18($sp)
|
||||
/* AD3B28 8005C988 0C016DBB */ jal func_8005B6EC
|
||||
/* AD3B2C 8005C98C AFA7003C */ sw $a3, 0x3c($sp)
|
||||
/* AD3B30 8005C990 8FAE003C */ lw $t6, 0x3c($sp)
|
||||
/* AD3B34 8005C994 3C058014 */ lui $a1, %hi(D_8013A768) # $a1, 0x8014
|
||||
/* AD3B38 8005C998 24A5A768 */ addiu $a1, %lo(D_8013A768) # addiu $a1, $a1, -0x5898
|
||||
/* AD3B3C 8005C99C 8DCF0008 */ lw $t7, 8($t6)
|
||||
/* AD3B40 8005C9A0 2406086C */ li $a2, 2156
|
||||
/* AD3B44 8005C9A4 000F2080 */ sll $a0, $t7, 2
|
||||
/* AD3B48 8005C9A8 008F2023 */ subu $a0, $a0, $t7
|
||||
/* AD3B4C 8005C9AC 000420C0 */ sll $a0, $a0, 3
|
||||
/* AD3B50 8005C9B0 008F2023 */ subu $a0, $a0, $t7
|
||||
/* AD3B54 8005C9B4 00042080 */ sll $a0, $a0, 2
|
||||
/* AD3B58 8005C9B8 0C01EBB8 */ jal ZeldaArena_MallocDebug
|
||||
/* AD3B5C 8005C9BC AE4F0018 */ sw $t7, 0x18($s2)
|
||||
/* AD3B60 8005C9C0 1440000D */ bnez $v0, .L8005C9F8
|
||||
/* AD3B64 8005C9C4 AE42001C */ sw $v0, 0x1c($s2)
|
||||
/* AD3B68 8005C9C8 3C048014 */ lui $a0, %hi(D_8013A780) # $a0, 0x8014
|
||||
/* AD3B6C 8005C9CC AE400018 */ sw $zero, 0x18($s2)
|
||||
/* AD3B70 8005C9D0 0C00084C */ jal osSyncPrintf
|
||||
/* AD3B74 8005C9D4 2484A780 */ addiu $a0, %lo(D_8013A780) # addiu $a0, $a0, -0x5880
|
||||
/* AD3B78 8005C9D8 3C048014 */ lui $a0, %hi(D_8013A788) # $a0, 0x8014
|
||||
/* AD3B7C 8005C9DC 0C00084C */ jal osSyncPrintf
|
||||
/* AD3B80 8005C9E0 2484A788 */ addiu $a0, %lo(D_8013A788) # addiu $a0, $a0, -0x5878
|
||||
/* AD3B84 8005C9E4 3C048014 */ lui $a0, %hi(D_8013A7B4) # $a0, 0x8014
|
||||
/* AD3B88 8005C9E8 0C00084C */ jal osSyncPrintf
|
||||
/* AD3B8C 8005C9EC 2484A7B4 */ addiu $a0, %lo(D_8013A7B4) # addiu $a0, $a0, -0x584c
|
||||
/* AD3B90 8005C9F0 1000001D */ b .L8005CA68
|
||||
/* AD3B94 8005C9F4 00001025 */ move $v0, $zero
|
||||
.L8005C9F8:
|
||||
/* AD3B98 8005C9F8 8E590018 */ lw $t9, 0x18($s2)
|
||||
/* AD3B9C 8005C9FC 2414005C */ li $s4, 92
|
||||
/* AD3BA0 8005CA00 8E50001C */ lw $s0, 0x1c($s2)
|
||||
/* AD3BA4 8005CA04 03340019 */ multu $t9, $s4
|
||||
/* AD3BA8 8005CA08 8FB8003C */ lw $t8, 0x3c($sp)
|
||||
/* AD3BAC 8005CA0C 8F11000C */ lw $s1, 0xc($t8)
|
||||
/* AD3BB0 8005CA10 00004012 */ mflo $t0
|
||||
/* AD3BB4 8005CA14 02084821 */ addu $t1, $s0, $t0
|
||||
/* AD3BB8 8005CA18 0209082B */ sltu $at, $s0, $t1
|
||||
/* AD3BBC 8005CA1C 10200011 */ beqz $at, .L8005CA64
|
||||
/* AD3BC0 8005CA20 02602025 */ move $a0, $s3
|
||||
.L8005CA24:
|
||||
/* AD3BC4 8005CA24 0C0171B0 */ jal func_8005C6C0
|
||||
/* AD3BC8 8005CA28 02002825 */ move $a1, $s0
|
||||
/* AD3BCC 8005CA2C 02602025 */ move $a0, $s3
|
||||
/* AD3BD0 8005CA30 02002825 */ move $a1, $s0
|
||||
/* AD3BD4 8005CA34 0C0171CC */ jal func_8005C730
|
||||
/* AD3BD8 8005CA38 02203025 */ move $a2, $s1
|
||||
/* AD3BDC 8005CA3C 8E4B0018 */ lw $t3, 0x18($s2)
|
||||
/* AD3BE0 8005CA40 8E4A001C */ lw $t2, 0x1c($s2)
|
||||
/* AD3BE4 8005CA44 2610005C */ addiu $s0, $s0, 0x5c
|
||||
/* AD3BE8 8005CA48 01740019 */ multu $t3, $s4
|
||||
/* AD3BEC 8005CA4C 2631003C */ addiu $s1, $s1, 0x3c
|
||||
/* AD3BF0 8005CA50 00006012 */ mflo $t4
|
||||
/* AD3BF4 8005CA54 014C6821 */ addu $t5, $t2, $t4
|
||||
/* AD3BF8 8005CA58 020D082B */ sltu $at, $s0, $t5
|
||||
/* AD3BFC 8005CA5C 5420FFF1 */ bnezl $at, .L8005CA24
|
||||
/* AD3C00 8005CA60 02602025 */ move $a0, $s3
|
||||
.L8005CA64:
|
||||
/* AD3C04 8005CA64 24020001 */ li $v0, 1
|
||||
.L8005CA68:
|
||||
/* AD3C08 8005CA68 8FBF002C */ lw $ra, 0x2c($sp)
|
||||
/* AD3C0C 8005CA6C 8FB00018 */ lw $s0, 0x18($sp)
|
||||
/* AD3C10 8005CA70 8FB1001C */ lw $s1, 0x1c($sp)
|
||||
/* AD3C14 8005CA74 8FB20020 */ lw $s2, 0x20($sp)
|
||||
/* AD3C18 8005CA78 8FB30024 */ lw $s3, 0x24($sp)
|
||||
/* AD3C1C 8005CA7C 8FB40028 */ lw $s4, 0x28($sp)
|
||||
/* AD3C20 8005CA80 03E00008 */ jr $ra
|
||||
/* AD3C24 8005CA84 27BD0030 */ addiu $sp, $sp, 0x30
|
||||
|
|
@ -373,6 +373,10 @@ typedef struct {
|
|||
/* 0x30 */ float normalDist;
|
||||
} ColliderTriItemDim; //size = 0x34
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ Vec3f poly[3];
|
||||
} ColliderTriItemDimInit; //size = 0x24
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ ColliderBody body;
|
||||
/* 0x28 */ ColliderTriItemDim dim;
|
||||
|
|
@ -380,8 +384,8 @@ typedef struct {
|
|||
|
||||
typedef struct {
|
||||
/* 0x00 */ ColliderBodyInit body;
|
||||
/* 0x18 */ ColliderTriItemDim dim;
|
||||
} ColliderTriItemInit;
|
||||
/* 0x18 */ ColliderTriItemDimInit dim;
|
||||
} ColliderTriItemInit; //size 0x3C
|
||||
|
||||
typedef struct
|
||||
{
|
||||
|
|
@ -390,6 +394,13 @@ typedef struct
|
|||
/* 0x1C */ ColliderTriItem* list;
|
||||
} ColliderTris; //size = 0x20
|
||||
|
||||
typedef struct
|
||||
{
|
||||
/* 0x00 */ ColliderInit body;
|
||||
/* 0x08 */ s32 count;
|
||||
/* 0x0C */ ColliderTriItemInit* list;
|
||||
} ColliderTrisInit;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
/* 0x00 */ Actor* actor;
|
||||
|
|
|
|||
|
|
@ -595,7 +595,7 @@ s32 func_8005C5F8(GlobalContext* globalCtx, ColliderTriItemDim* dim)
|
|||
}
|
||||
|
||||
//Copy ColliderTriItemDim
|
||||
s32 func_8005C608(GlobalContext* globalCtx, ColliderTriItemDim* dest, ColliderTriItemDim* src)
|
||||
s32 func_8005C608(GlobalContext* globalCtx, ColliderTriItemDim* dest, ColliderTriItemDimInit* src)
|
||||
{
|
||||
Vec3f* d;
|
||||
Vec3f* s;
|
||||
|
|
@ -702,8 +702,33 @@ s32 func_8005C8C8(GlobalContext* globalCtx, ColliderTris* tris) {
|
|||
return 1;
|
||||
}
|
||||
|
||||
//ClObjTris_set3 (maskB = 0x10)
|
||||
s32 func_8005C964(GlobalContext* globalCtx, ColliderTris* dest, Actor* actor, ColliderTrisInit* src) {
|
||||
ColliderTriItem* destNext;
|
||||
ColliderTriItemInit* srcNext;
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_collision_check/func_8005C964.s")
|
||||
func_8005B6EC(globalCtx, &dest->base, actor, &src->body);
|
||||
dest->count = src->count;
|
||||
dest->list = ZeldaArena_MallocDebug(dest->count * sizeof(ColliderTriItem), "../z_collision_check.c", 2156);
|
||||
if (dest->list == NULL) {
|
||||
dest->count = 0;
|
||||
osSyncPrintf("\x1b[31m");
|
||||
osSyncPrintf("ClObjTris_set3():zelda_malloc()出来ません\n"); //EUC-JP: 出来ません。 | Can not.
|
||||
osSyncPrintf("\x1b[m");
|
||||
return 0;
|
||||
}
|
||||
destNext = dest->list;
|
||||
srcNext = src->list;
|
||||
|
||||
while (destNext < dest->list + dest->count)
|
||||
{
|
||||
func_8005C6C0(globalCtx, destNext);
|
||||
func_8005C730(globalCtx, destNext, srcNext);
|
||||
destNext++;
|
||||
srcNext++;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_collision_check/func_8005CA88.s")
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue