Actor_CollisionCheck_SetAT Actor_CollisionCheck_SetAC Ok

This commit is contained in:
mzxrules 2020-03-31 21:56:06 -04:00
parent 8819cde650
commit 7d65fa528b
3 changed files with 64 additions and 181 deletions

View File

@ -1,17 +1,4 @@
.rdata
glabel D_8013A840
.asciz "pcl_obj->data_type <= CL_DATA_LBL_SWRD"
.balign 4
glabel D_8013A868
.asciz "../z_collision_check.c"
.balign 4
glabel D_8013A880
.asciz "CollisionCheck_setAT():\n"
# EUC-JP: | Index cannot be added due to over index
.balign 4
glabel D_8013A8BC
.asciz "pcl_obj->data_type <= CL_DATA_LBL_SWRD"
.balign 4
@ -31,82 +18,7 @@ glabel D_8013A94C
.balign 4
.text
glabel Actor_CollisionCheck_SetAT
/* AD493C 8005D79C 27BDFFE0 */ addiu $sp, $sp, -0x20
/* AD4940 8005D7A0 AFBF001C */ sw $ra, 0x1c($sp)
/* AD4944 8005D7A4 AFB00018 */ sw $s0, 0x18($sp)
/* AD4948 8005D7A8 00C08025 */ move $s0, $a2
/* AD494C 8005D7AC AFA40020 */ sw $a0, 0x20($sp)
/* AD4950 8005D7B0 0C03034A */ jal func_800C0D28
/* AD4954 8005D7B4 AFA50024 */ sw $a1, 0x24($sp)
/* AD4958 8005D7B8 24010001 */ li $at, 1
/* AD495C 8005D7BC 14410003 */ bne $v0, $at, .L8005D7CC
/* AD4960 8005D7C0 8FA70024 */ lw $a3, 0x24($sp)
/* AD4964 8005D7C4 10000034 */ b .L8005D898
/* AD4968 8005D7C8 2402FFFF */ li $v0, -1
.L8005D7CC:
/* AD496C 8005D7CC 92020015 */ lbu $v0, 0x15($s0)
/* AD4970 8005D7D0 3C048014 */ lui $a0, %hi(D_8013A840) # $a0, 0x8014
/* AD4974 8005D7D4 2484A840 */ addiu $a0, %lo(D_8013A840) # addiu $a0, $a0, -0x57c0
/* AD4978 8005D7D8 28410004 */ slti $at, $v0, 4
/* AD497C 8005D7DC 14200007 */ bnez $at, .L8005D7FC
/* AD4980 8005D7E0 3C058014 */ lui $a1, %hi(D_8013A868) # $a1, 0x8014
/* AD4984 8005D7E4 24A5A868 */ addiu $a1, %lo(D_8013A868) # addiu $a1, $a1, -0x5798
/* AD4988 8005D7E8 24060BB5 */ li $a2, 2997
/* AD498C 8005D7EC 0C0007FC */ jal __assert
/* AD4990 8005D7F0 AFA70024 */ sw $a3, 0x24($sp)
/* AD4994 8005D7F4 8FA70024 */ lw $a3, 0x24($sp)
/* AD4998 8005D7F8 92020015 */ lbu $v0, 0x15($s0)
.L8005D7FC:
/* AD499C 8005D7FC 00027080 */ sll $t6, $v0, 2
/* AD49A0 8005D800 3C198012 */ lui $t9, %hi(D_8011DEF8)
/* AD49A4 8005D804 032EC821 */ addu $t9, $t9, $t6
/* AD49A8 8005D808 8F39DEF8 */ lw $t9, %lo(D_8011DEF8)($t9)
/* AD49AC 8005D80C 8FA40020 */ lw $a0, 0x20($sp)
/* AD49B0 8005D810 02002825 */ move $a1, $s0
/* AD49B4 8005D814 0320F809 */ jalr $t9
/* AD49B8 8005D818 AFA70024 */ sw $a3, 0x24($sp)
/* AD49BC 8005D81C 8E030000 */ lw $v1, ($s0)
/* AD49C0 8005D820 8FA70024 */ lw $a3, 0x24($sp)
/* AD49C4 8005D824 50600007 */ beql $v1, $zero, .L8005D844
/* AD49C8 8005D828 84E30000 */ lh $v1, ($a3)
/* AD49CC 8005D82C 8C6F0130 */ lw $t7, 0x130($v1)
/* AD49D0 8005D830 55E00004 */ bnezl $t7, .L8005D844
/* AD49D4 8005D834 84E30000 */ lh $v1, ($a3)
/* AD49D8 8005D838 10000017 */ b .L8005D898
/* AD49DC 8005D83C 2402FFFF */ li $v0, -1
/* AD49E0 8005D840 84E30000 */ lh $v1, ($a3)
.L8005D844:
/* AD49E4 8005D844 3C048014 */ lui $a0, %hi(D_8013A880) # $a0, 0x8014
/* AD49E8 8005D848 28610032 */ slti $at, $v1, 0x32
/* AD49EC 8005D84C 54200006 */ bnezl $at, .L8005D868
/* AD49F0 8005D850 94F80002 */ lhu $t8, 2($a3)
/* AD49F4 8005D854 0C00084C */ jal osSyncPrintf
/* AD49F8 8005D858 2484A880 */ addiu $a0, %lo(D_8013A880) # addiu $a0, $a0, -0x5780
/* AD49FC 8005D85C 1000000E */ b .L8005D898
/* AD4A00 8005D860 2402FFFF */ li $v0, -1
/* AD4A04 8005D864 94F80002 */ lhu $t8, 2($a3)
.L8005D868:
/* AD4A08 8005D868 00034880 */ sll $t1, $v1, 2
/* AD4A0C 8005D86C 00E95021 */ addu $t2, $a3, $t1
/* AD4A10 8005D870 33080001 */ andi $t0, $t8, 1
/* AD4A14 8005D874 51000004 */ beql $t0, $zero, .L8005D888
/* AD4A18 8005D878 AD500004 */ sw $s0, 4($t2)
/* AD4A1C 8005D87C 10000006 */ b .L8005D898
/* AD4A20 8005D880 2402FFFF */ li $v0, -1
/* AD4A24 8005D884 AD500004 */ sw $s0, 4($t2)
.L8005D888:
/* AD4A28 8005D888 84EB0000 */ lh $t3, ($a3)
/* AD4A2C 8005D88C 00601025 */ move $v0, $v1
/* AD4A30 8005D890 256C0001 */ addiu $t4, $t3, 1
/* AD4A34 8005D894 A4EC0000 */ sh $t4, ($a3)
.L8005D898:
/* AD4A38 8005D898 8FBF001C */ lw $ra, 0x1c($sp)
/* AD4A3C 8005D89C 8FB00018 */ lw $s0, 0x18($sp)
/* AD4A40 8005D8A0 27BD0020 */ addiu $sp, $sp, 0x20
/* AD4A44 8005D8A4 03E00008 */ jr $ra
/* AD4A48 8005D8A8 00000000 */ nop
glabel func_8005D8AC
/* AD4A4C 8005D8AC 27BDFFE0 */ addiu $sp, $sp, -0x20
/* AD4A50 8005D8B0 AFBF001C */ sw $ra, 0x1c($sp)
/* AD4A54 8005D8B4 AFB10018 */ sw $s1, 0x18($sp)

View File

@ -1,17 +1,4 @@
.rdata
glabel D_8013A988
.asciz "pcl_obj->data_type <= CL_DATA_LBL_SWRD"
.balign 4
glabel D_8013A9B0
.asciz "../z_collision_check.c"
.balign 4
glabel D_8013A9C8
.asciz "CollisionCheck_setAC():\n"
# EUC-JP: | Index exceeded and cannot be added
.balign 4
glabel D_8013AA04
.asciz "pcl_obj->data_type <= CL_DATA_LBL_SWRD"
.balign 4
@ -31,82 +18,7 @@ glabel D_8013AA94
.balign 4
.text
glabel Actor_CollisionCheck_SetAC
/* AD4B94 8005D9F4 27BDFFE0 */ addiu $sp, $sp, -0x20
/* AD4B98 8005D9F8 AFBF001C */ sw $ra, 0x1c($sp)
/* AD4B9C 8005D9FC AFB00018 */ sw $s0, 0x18($sp)
/* AD4BA0 8005DA00 00C08025 */ move $s0, $a2
/* AD4BA4 8005DA04 AFA40020 */ sw $a0, 0x20($sp)
/* AD4BA8 8005DA08 0C03034A */ jal func_800C0D28
/* AD4BAC 8005DA0C AFA50024 */ sw $a1, 0x24($sp)
/* AD4BB0 8005DA10 24010001 */ li $at, 1
/* AD4BB4 8005DA14 14410003 */ bne $v0, $at, .L8005DA24
/* AD4BB8 8005DA18 8FA70024 */ lw $a3, 0x24($sp)
/* AD4BBC 8005DA1C 10000034 */ b .L8005DAF0
/* AD4BC0 8005DA20 2402FFFF */ li $v0, -1
.L8005DA24:
/* AD4BC4 8005DA24 92020015 */ lbu $v0, 0x15($s0)
/* AD4BC8 8005DA28 3C048014 */ lui $a0, %hi(D_8013A988) # $a0, 0x8014
/* AD4BCC 8005DA2C 2484A988 */ addiu $a0, %lo(D_8013A988) # addiu $a0, $a0, -0x5678
/* AD4BD0 8005DA30 28410004 */ slti $at, $v0, 4
/* AD4BD4 8005DA34 14200007 */ bnez $at, .L8005DA54
/* AD4BD8 8005DA38 3C058014 */ lui $a1, %hi(D_8013A9B0) # $a1, 0x8014
/* AD4BDC 8005DA3C 24A5A9B0 */ addiu $a1, %lo(D_8013A9B0) # addiu $a1, $a1, -0x5650
/* AD4BE0 8005DA40 24060C2A */ li $a2, 3114
/* AD4BE4 8005DA44 0C0007FC */ jal __assert
/* AD4BE8 8005DA48 AFA70024 */ sw $a3, 0x24($sp)
/* AD4BEC 8005DA4C 8FA70024 */ lw $a3, 0x24($sp)
/* AD4BF0 8005DA50 92020015 */ lbu $v0, 0x15($s0)
.L8005DA54:
/* AD4BF4 8005DA54 00027080 */ sll $t6, $v0, 2
/* AD4BF8 8005DA58 3C198012 */ lui $t9, %hi(D_8011DF08)
/* AD4BFC 8005DA5C 032EC821 */ addu $t9, $t9, $t6
/* AD4C00 8005DA60 8F39DF08 */ lw $t9, %lo(D_8011DF08)($t9)
/* AD4C04 8005DA64 8FA40020 */ lw $a0, 0x20($sp)
/* AD4C08 8005DA68 02002825 */ move $a1, $s0
/* AD4C0C 8005DA6C 0320F809 */ jalr $t9
/* AD4C10 8005DA70 AFA70024 */ sw $a3, 0x24($sp)
/* AD4C14 8005DA74 8E030000 */ lw $v1, ($s0)
/* AD4C18 8005DA78 8FA70024 */ lw $a3, 0x24($sp)
/* AD4C1C 8005DA7C 50600007 */ beql $v1, $zero, .L8005DA9C
/* AD4C20 8005DA80 8CE300CC */ lw $v1, 0xcc($a3)
/* AD4C24 8005DA84 8C6F0130 */ lw $t7, 0x130($v1)
/* AD4C28 8005DA88 55E00004 */ bnezl $t7, .L8005DA9C
/* AD4C2C 8005DA8C 8CE300CC */ lw $v1, 0xcc($a3)
/* AD4C30 8005DA90 10000017 */ b .L8005DAF0
/* AD4C34 8005DA94 2402FFFF */ li $v0, -1
/* AD4C38 8005DA98 8CE300CC */ lw $v1, 0xcc($a3)
.L8005DA9C:
/* AD4C3C 8005DA9C 3C048014 */ lui $a0, %hi(D_8013A9C8) # $a0, 0x8014
/* AD4C40 8005DAA0 2861003C */ slti $at, $v1, 0x3c
/* AD4C44 8005DAA4 54200006 */ bnezl $at, .L8005DAC0
/* AD4C48 8005DAA8 94F80002 */ lhu $t8, 2($a3)
/* AD4C4C 8005DAAC 0C00084C */ jal osSyncPrintf
/* AD4C50 8005DAB0 2484A9C8 */ addiu $a0, %lo(D_8013A9C8) # addiu $a0, $a0, -0x5638
/* AD4C54 8005DAB4 1000000E */ b .L8005DAF0
/* AD4C58 8005DAB8 2402FFFF */ li $v0, -1
/* AD4C5C 8005DABC 94F80002 */ lhu $t8, 2($a3)
.L8005DAC0:
/* AD4C60 8005DAC0 00034880 */ sll $t1, $v1, 2
/* AD4C64 8005DAC4 00E95021 */ addu $t2, $a3, $t1
/* AD4C68 8005DAC8 33080001 */ andi $t0, $t8, 1
/* AD4C6C 8005DACC 51000004 */ beql $t0, $zero, .L8005DAE0
/* AD4C70 8005DAD0 AD5000D0 */ sw $s0, 0xd0($t2)
/* AD4C74 8005DAD4 10000006 */ b .L8005DAF0
/* AD4C78 8005DAD8 2402FFFF */ li $v0, -1
/* AD4C7C 8005DADC AD5000D0 */ sw $s0, 0xd0($t2)
.L8005DAE0:
/* AD4C80 8005DAE0 8CEB00CC */ lw $t3, 0xcc($a3)
/* AD4C84 8005DAE4 00601025 */ move $v0, $v1
/* AD4C88 8005DAE8 256C0001 */ addiu $t4, $t3, 1
/* AD4C8C 8005DAEC ACEC00CC */ sw $t4, 0xcc($a3)
.L8005DAF0:
/* AD4C90 8005DAF0 8FBF001C */ lw $ra, 0x1c($sp)
/* AD4C94 8005DAF4 8FB00018 */ lw $s0, 0x18($sp)
/* AD4C98 8005DAF8 27BD0020 */ addiu $sp, $sp, 0x20
/* AD4C9C 8005DAFC 03E00008 */ jr $ra
/* AD4CA0 8005DB00 00000000 */ nop
glabel func_8005DB04
/* AD4CA4 8005DB04 27BDFFE0 */ addiu $sp, $sp, -0x20
/* AD4CA8 8005DB08 AFBF001C */ sw $ra, 0x1c($sp)
/* AD4CAC 8005DB0C AFB10018 */ sw $s1, 0x18($sp)

View File

@ -993,9 +993,68 @@ u32 D_8011DF28[] = { 0x8005DF9C, 0x8005DFAC, 0x8005E10C, 0x8005E26C, 0x8005E2A4,
#pragma GLOBAL_ASM("asm/non_matchings/code/z_collision_check/func_8005D62C.s")
#pragma GLOBAL_ASM("asm/non_matchings/code/z_collision_check/func_8005D79C.s")
s32 Actor_CollisionCheck_SetAT(GlobalContext* globalCtx, CollisionCheckContext* check, Collider* collider) {
s32 index;
#pragma GLOBAL_ASM("asm/non_matchings/code/z_collision_check/func_8005D9F4.s")
if (func_800C0D28(globalCtx) == 1) {
return -1;
}
if (collider->type >= 4) {
__assert("pcl_obj->data_type <= CL_DATA_LBL_SWRD", "../z_collision_check.c", 2997);
}
check = (void*)check;
(*&D_8011DEF8[collider->type])(globalCtx, collider);
if (collider->actor != NULL) {
if (collider->actor->update == NULL) {
return -1;
}
}
if (check->colAtCount >= 50) {
osSyncPrintf("CollisionCheck_setAT():インデックスがオーバーして追加不能\n");
//EUC-JP: インデックスがオーバーして追加不能 | Index exceeded and cannot be added
return -1;
}
if (check->unk2 & 1) {
return -1;
}
index = check->colAtCount;
check->colAt[check->colAtCount++] = collider;
return index;
}
#pragma GLOBAL_ASM("asm/non_matchings/code/z_collision_check/func_8005D8AC.s")
s32 Actor_CollisionCheck_SetAC(GlobalContext* globalCtx, CollisionCheckContext* check, Collider* collider) {
s32 index;
if (func_800C0D28(globalCtx) == 1) {
return -1;
}
if (collider->type >= 4) {
__assert("pcl_obj->data_type <= CL_DATA_LBL_SWRD", "../z_collision_check.c", 3114);
}
check = (void*)check;
(*&D_8011DF08[collider->type])(globalCtx, collider);
if (collider->actor != NULL) {
if (collider->actor->update == NULL) {
return -1;
}
}
if (check->colAcCount >= 60) {
osSyncPrintf("CollisionCheck_setAC():インデックスがオーバして追加不能\n");
//EUC-JP: インデックスがオーバして追加不能 | Index exceeded and cannot be added
return -1;
}
if (check->unk2 & 1) {
return -1;
}
index = check->colAcCount;
check->colAc[check->colAcCount++] = collider;
return index;
}
#pragma GLOBAL_ASM("asm/non_matchings/code/z_collision_check/func_8005DB04.s")
//TODO: rename to CollisionCheck_SetOC()
s32 Actor_CollisionCheck_SetOT(GlobalContext* globalCtx, CollisionCheckContext* check, Collider* collider) {
@ -1019,7 +1078,7 @@ s32 Actor_CollisionCheck_SetOT(GlobalContext* globalCtx, CollisionCheckContext*
//EUC-JP: インデックスがオーバして追加不能 | Index exceeded and cannot be added
return -1;
}
if ((check->unk2 & 1) != 0) {
if (check->unk2 & 1) {
return -1;
}
index = check->colOcCount;