diff --git a/asm/non_matchings/code/z_collision_check/func_8005C2BC.s b/asm/non_matchings/code/z_collision_check/func_8005C2BC.s deleted file mode 100644 index eaa0a3c1b5..0000000000 --- a/asm/non_matchings/code/z_collision_check/func_8005C2BC.s +++ /dev/null @@ -1,25 +0,0 @@ -glabel func_8005C2BC -/* AD345C 8005C2BC 27BDFFF0 */ addiu $sp, $sp, -0x10 -/* AD3460 8005C2C0 3C0E8012 */ lui $t6, %hi(D_8011DE6C) # $t6, 0x8012 -/* AD3464 8005C2C4 AFA40010 */ sw $a0, 0x10($sp) -/* AD3468 8005C2C8 25CEDE6C */ addiu $t6, %lo(D_8011DE6C) # addiu $t6, $t6, -0x2194 -/* AD346C 8005C2CC 8DD80000 */ lw $t8, ($t6) -/* AD3470 8005C2D0 27A30004 */ addiu $v1, $sp, 4 -/* AD3474 8005C2D4 24020001 */ li $v0, 1 -/* AD3478 8005C2D8 AC780000 */ sw $t8, ($v1) -/* AD347C 8005C2DC 8DCF0004 */ lw $t7, 4($t6) -/* AD3480 8005C2E0 8C680000 */ lw $t0, ($v1) -/* AD3484 8005C2E4 AC6F0004 */ sw $t7, 4($v1) -/* AD3488 8005C2E8 8DD80008 */ lw $t8, 8($t6) -/* AD348C 8005C2EC AC780008 */ sw $t8, 8($v1) -/* AD3490 8005C2F0 A8A80000 */ swl $t0, ($a1) -/* AD3494 8005C2F4 B8A80003 */ swr $t0, 3($a1) -/* AD3498 8005C2F8 8C790004 */ lw $t9, 4($v1) -/* AD349C 8005C2FC A8B90004 */ swl $t9, 4($a1) -/* AD34A0 8005C300 B8B90007 */ swr $t9, 7($a1) -/* AD34A4 8005C304 8C680008 */ lw $t0, 8($v1) -/* AD34A8 8005C308 27BD0010 */ addiu $sp, $sp, 0x10 -/* AD34AC 8005C30C A8A80008 */ swl $t0, 8($a1) -/* AD34B0 8005C310 03E00008 */ jr $ra -/* AD34B4 8005C314 B8A8000B */ swr $t0, 0xb($a1) - diff --git a/asm/non_matchings/code/z_collision_check/func_8005D218.s b/asm/non_matchings/code/z_collision_check/func_8005D218.s index 9781bb067e..f6573dfb81 100644 --- a/asm/non_matchings/code/z_collision_check/func_8005D218.s +++ b/asm/non_matchings/code/z_collision_check/func_8005D218.s @@ -1,3 +1,9 @@ +.section .data + +glabel D_8011DEEC + .incbin "baserom.z64", 0xB9508C, 0xC + +.text glabel func_8005D218 /* AD43B8 8005D218 27BDFFD0 */ addiu $sp, $sp, -0x30 /* AD43BC 8005D21C AFBF0014 */ sw $ra, 0x14($sp) diff --git a/asm/non_matchings/code/z_collision_check/func_8005DC4C.s b/asm/non_matchings/code/z_collision_check/func_8005DC4C.s index b7d9b3663b..d9a223cc94 100644 --- a/asm/non_matchings/code/z_collision_check/func_8005DC4C.s +++ b/asm/non_matchings/code/z_collision_check/func_8005DC4C.s @@ -12,29 +12,6 @@ glabel D_8013AB10 # EUC-JP: インデックスがオーバして追加不能 | Index exceeded and cannot be added .balign 4 -glabel D_8013AB4C - .asciz "pcl_obj->data_type <= CL_DATA_LBL_SWRD" - .balign 4 - -glabel D_8013AB74 - .asciz "../z_collision_check.c" - .balign 4 - -glabel D_8013AB8C - .asciz "CollisionCheck_setOC_SAC():全データ数より大きいところに登録しようとしている。\n" - # EUC-JP: 全データ数より大きいところに登録しようとしている。| You are trying to register a location that is larger than the total number of data. - .balign 4 - -glabel D_8013ABDC - .asciz "CollisionCheck_setOC():インデックスがオーバして追加不能\n" - # EUC-JP: インデックスがオーバして追加不能 | Index exceeded and cannot be added - .balign 4 - -glabel D_8013AC18 - .asciz "CollisionCheck_setOCLine():インデックスがオーバして追加不能\n" - # EUC-JP: インデックスがオーバして追加不能 | Index exceeded and cannot be added - .balign 4 - .text glabel Actor_CollisionCheck_SetOT /* AD4DEC 8005DC4C 27BDFFE0 */ addiu $sp, $sp, -0x20 @@ -111,133 +88,3 @@ glabel Actor_CollisionCheck_SetOT /* AD4EF0 8005DD50 27BD0020 */ addiu $sp, $sp, 0x20 /* AD4EF4 8005DD54 03E00008 */ jr $ra /* AD4EF8 8005DD58 00000000 */ nop - -/* AD4EFC 8005DD5C 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* AD4F00 8005DD60 AFBF001C */ sw $ra, 0x1c($sp) -/* AD4F04 8005DD64 AFB10018 */ sw $s1, 0x18($sp) -/* AD4F08 8005DD68 AFB00014 */ sw $s0, 0x14($sp) -/* AD4F0C 8005DD6C 00A08025 */ move $s0, $a1 -/* AD4F10 8005DD70 00C08825 */ move $s1, $a2 -/* AD4F14 8005DD74 AFA40020 */ sw $a0, 0x20($sp) -/* AD4F18 8005DD78 0C03034A */ jal func_800C0D28 -/* AD4F1C 8005DD7C AFA7002C */ sw $a3, 0x2c($sp) -/* AD4F20 8005DD80 24010001 */ li $at, 1 -/* AD4F24 8005DD84 14410003 */ bne $v0, $at, .L8005DD94 -/* AD4F28 8005DD88 8FA7002C */ lw $a3, 0x2c($sp) -/* AD4F2C 8005DD8C 1000003E */ b .L8005DE88 -/* AD4F30 8005DD90 2402FFFF */ li $v0, -1 -.L8005DD94: -/* AD4F34 8005DD94 92220015 */ lbu $v0, 0x15($s1) -/* AD4F38 8005DD98 3C048014 */ lui $a0, %hi(D_8013AB4C) # $a0, 0x8014 -/* AD4F3C 8005DD9C 2484AB4C */ addiu $a0, %lo(D_8013AB4C) # addiu $a0, $a0, -0x54b4 -/* AD4F40 8005DDA0 28410004 */ slti $at, $v0, 4 -/* AD4F44 8005DDA4 14200007 */ bnez $at, .L8005DDC4 -/* AD4F48 8005DDA8 3C058014 */ lui $a1, %hi(D_8013AB74) # $a1, 0x8014 -/* AD4F4C 8005DDAC 24A5AB74 */ addiu $a1, %lo(D_8013AB74) # addiu $a1, $a1, -0x548c -/* AD4F50 8005DDB0 24060CCA */ li $a2, 3274 -/* AD4F54 8005DDB4 0C0007FC */ jal __assert -/* AD4F58 8005DDB8 AFA7002C */ sw $a3, 0x2c($sp) -/* AD4F5C 8005DDBC 8FA7002C */ lw $a3, 0x2c($sp) -/* AD4F60 8005DDC0 92220015 */ lbu $v0, 0x15($s1) -.L8005DDC4: -/* AD4F64 8005DDC4 00027080 */ sll $t6, $v0, 2 -/* AD4F68 8005DDC8 3C198012 */ lui $t9, %hi(D_8011DF18) -/* AD4F6C 8005DDCC 032EC821 */ addu $t9, $t9, $t6 -/* AD4F70 8005DDD0 8F39DF18 */ lw $t9, %lo(D_8011DF18)($t9) -/* AD4F74 8005DDD4 8FA40020 */ lw $a0, 0x20($sp) -/* AD4F78 8005DDD8 02202825 */ move $a1, $s1 -/* AD4F7C 8005DDDC 0320F809 */ jalr $t9 -/* AD4F80 8005DDE0 AFA7002C */ sw $a3, 0x2c($sp) -/* AD4F84 8005DDE4 8E230000 */ lw $v1, ($s1) -/* AD4F88 8005DDE8 8FA7002C */ lw $a3, 0x2c($sp) -/* AD4F8C 8005DDEC 50600007 */ beql $v1, $zero, .L8005DE0C -/* AD4F90 8005DDF0 96180002 */ lhu $t8, 2($s0) -/* AD4F94 8005DDF4 8C6F0130 */ lw $t7, 0x130($v1) -/* AD4F98 8005DDF8 55E00004 */ bnezl $t7, .L8005DE0C -/* AD4F9C 8005DDFC 96180002 */ lhu $t8, 2($s0) -/* AD4FA0 8005DE00 10000021 */ b .L8005DE88 -/* AD4FA4 8005DE04 2402FFFF */ li $v0, -1 -/* AD4FA8 8005DE08 96180002 */ lhu $t8, 2($s0) -.L8005DE0C: -/* AD4FAC 8005DE0C 33080001 */ andi $t0, $t8, 1 -/* AD4FB0 8005DE10 5100000E */ beql $t0, $zero, .L8005DE4C -/* AD4FB4 8005DE14 8E0201C0 */ lw $v0, 0x1c0($s0) -/* AD4FB8 8005DE18 8E0901C0 */ lw $t1, 0x1c0($s0) -/* AD4FBC 8005DE1C 00075080 */ sll $t2, $a3, 2 -/* AD4FC0 8005DE20 3C048014 */ lui $a0, %hi(D_8013AB8C) # $a0, 0x8014 -/* AD4FC4 8005DE24 00E9082A */ slt $at, $a3, $t1 -/* AD4FC8 8005DE28 14200005 */ bnez $at, .L8005DE40 -/* AD4FCC 8005DE2C 020A5821 */ addu $t3, $s0, $t2 -/* AD4FD0 8005DE30 0C00084C */ jal osSyncPrintf -/* AD4FD4 8005DE34 2484AB8C */ addiu $a0, %lo(D_8013AB8C) # addiu $a0, $a0, -0x5474 -/* AD4FD8 8005DE38 10000013 */ b .L8005DE88 -/* AD4FDC 8005DE3C 2402FFFF */ li $v0, -1 -.L8005DE40: -/* AD4FE0 8005DE40 10000010 */ b .L8005DE84 -/* AD4FE4 8005DE44 AD710004 */ sw $s1, 4($t3) -/* AD4FE8 8005DE48 8E0201C0 */ lw $v0, 0x1c0($s0) -.L8005DE4C: -/* AD4FEC 8005DE4C 3C048014 */ lui $a0, %hi(D_8013ABDC) # $a0, 0x8014 -/* AD4FF0 8005DE50 28410032 */ slti $at, $v0, 0x32 -/* AD4FF4 8005DE54 14200005 */ bnez $at, .L8005DE6C -/* AD4FF8 8005DE58 00026080 */ sll $t4, $v0, 2 -/* AD4FFC 8005DE5C 0C00084C */ jal osSyncPrintf -/* AD5000 8005DE60 2484ABDC */ addiu $a0, %lo(D_8013ABDC) # addiu $a0, $a0, -0x5424 -/* AD5004 8005DE64 10000008 */ b .L8005DE88 -/* AD5008 8005DE68 2402FFFF */ li $v0, -1 -.L8005DE6C: -/* AD500C 8005DE6C 020C6821 */ addu $t5, $s0, $t4 -/* AD5010 8005DE70 ADB101C4 */ sw $s1, 0x1c4($t5) -/* AD5014 8005DE74 8E0E01C0 */ lw $t6, 0x1c0($s0) -/* AD5018 8005DE78 00403825 */ move $a3, $v0 -/* AD501C 8005DE7C 25D90001 */ addiu $t9, $t6, 1 -/* AD5020 8005DE80 AE1901C0 */ sw $t9, 0x1c0($s0) -.L8005DE84: -/* AD5024 8005DE84 00E01025 */ move $v0, $a3 -.L8005DE88: -/* AD5028 8005DE88 8FBF001C */ lw $ra, 0x1c($sp) -/* AD502C 8005DE8C 8FB00014 */ lw $s0, 0x14($sp) -/* AD5030 8005DE90 8FB10018 */ lw $s1, 0x18($sp) -/* AD5034 8005DE94 03E00008 */ jr $ra -/* AD5038 8005DE98 27BD0020 */ addiu $sp, $sp, 0x20 - -/* AD503C 8005DE9C 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* AD5040 8005DEA0 AFBF0014 */ sw $ra, 0x14($sp) -/* AD5044 8005DEA4 AFA40018 */ sw $a0, 0x18($sp) -/* AD5048 8005DEA8 AFA60020 */ sw $a2, 0x20($sp) -/* AD504C 8005DEAC 0C03034A */ jal func_800C0D28 -/* AD5050 8005DEB0 AFA5001C */ sw $a1, 0x1c($sp) -/* AD5054 8005DEB4 24010001 */ li $at, 1 -/* AD5058 8005DEB8 14410003 */ bne $v0, $at, .L8005DEC8 -/* AD505C 8005DEBC 8FA7001C */ lw $a3, 0x1c($sp) -/* AD5060 8005DEC0 10000016 */ b .L8005DF1C -/* AD5064 8005DEC4 2402FFFF */ li $v0, -1 -.L8005DEC8: -/* AD5068 8005DEC8 8FA40018 */ lw $a0, 0x18($sp) -/* AD506C 8005DECC 8FA50020 */ lw $a1, 0x20($sp) -/* AD5070 8005DED0 0C0174E9 */ jal func_8005D3A4 -/* AD5074 8005DED4 AFA7001C */ sw $a3, 0x1c($sp) -/* AD5078 8005DED8 8FA7001C */ lw $a3, 0x1c($sp) -/* AD507C 8005DEDC 3C048014 */ lui $a0, %hi(D_8013AC18) # $a0, 0x8014 -/* AD5080 8005DEE0 8FAE0020 */ lw $t6, 0x20($sp) -/* AD5084 8005DEE4 8CE3028C */ lw $v1, 0x28c($a3) -/* AD5088 8005DEE8 28610003 */ slti $at, $v1, 3 -/* AD508C 8005DEEC 14200005 */ bnez $at, .L8005DF04 -/* AD5090 8005DEF0 00037880 */ sll $t7, $v1, 2 -/* AD5094 8005DEF4 0C00084C */ jal osSyncPrintf -/* AD5098 8005DEF8 2484AC18 */ addiu $a0, %lo(D_8013AC18) # addiu $a0, $a0, -0x53e8 -/* AD509C 8005DEFC 10000007 */ b .L8005DF1C -/* AD50A0 8005DF00 2402FFFF */ li $v0, -1 -.L8005DF04: -/* AD50A4 8005DF04 00EFC021 */ addu $t8, $a3, $t7 -/* AD50A8 8005DF08 AF0E0290 */ sw $t6, 0x290($t8) -/* AD50AC 8005DF0C 8CF9028C */ lw $t9, 0x28c($a3) -/* AD50B0 8005DF10 00601025 */ move $v0, $v1 -/* AD50B4 8005DF14 27280001 */ addiu $t0, $t9, 1 -/* AD50B8 8005DF18 ACE8028C */ sw $t0, 0x28c($a3) -.L8005DF1C: -/* AD50BC 8005DF1C 8FBF0014 */ lw $ra, 0x14($sp) -/* AD50C0 8005DF20 27BD0018 */ addiu $sp, $sp, 0x18 -/* AD50C4 8005DF24 03E00008 */ jr $ra -/* AD50C8 8005DF28 00000000 */ nop - diff --git a/asm/non_matchings/code/z_collision_check/func_8005DD5C.s b/asm/non_matchings/code/z_collision_check/func_8005DD5C.s new file mode 100644 index 0000000000..bf75dee3cf --- /dev/null +++ b/asm/non_matchings/code/z_collision_check/func_8005DD5C.s @@ -0,0 +1,155 @@ +.rdata +glabel D_8013AB4C + .asciz "pcl_obj->data_type <= CL_DATA_LBL_SWRD" + .balign 4 + +glabel D_8013AB74 + .asciz "../z_collision_check.c" + .balign 4 + +glabel D_8013AB8C + .asciz "CollisionCheck_setOC_SAC():全データ数より大きいところに登録しようとしている。\n" + # EUC-JP: 全データ数より大きいところに登録しようとしている。| You are trying to register a location that is larger than the total number of data. + .balign 4 + +glabel D_8013ABDC + .asciz "CollisionCheck_setOC():インデックスがオーバして追加不能\n" + # EUC-JP: インデックスがオーバして追加不能 | Index exceeded and cannot be added + .balign 4 + +glabel D_8013AC18 + .asciz "CollisionCheck_setOCLine():インデックスがオーバして追加不能\n" + # EUC-JP: インデックスがオーバして追加不能 | Index exceeded and cannot be added + .balign 4 + +.text +glabel func_8005DD5C +/* AD4EFC 8005DD5C 27BDFFE0 */ addiu $sp, $sp, -0x20 +/* AD4F00 8005DD60 AFBF001C */ sw $ra, 0x1c($sp) +/* AD4F04 8005DD64 AFB10018 */ sw $s1, 0x18($sp) +/* AD4F08 8005DD68 AFB00014 */ sw $s0, 0x14($sp) +/* AD4F0C 8005DD6C 00A08025 */ move $s0, $a1 +/* AD4F10 8005DD70 00C08825 */ move $s1, $a2 +/* AD4F14 8005DD74 AFA40020 */ sw $a0, 0x20($sp) +/* AD4F18 8005DD78 0C03034A */ jal func_800C0D28 +/* AD4F1C 8005DD7C AFA7002C */ sw $a3, 0x2c($sp) +/* AD4F20 8005DD80 24010001 */ li $at, 1 +/* AD4F24 8005DD84 14410003 */ bne $v0, $at, .L8005DD94 +/* AD4F28 8005DD88 8FA7002C */ lw $a3, 0x2c($sp) +/* AD4F2C 8005DD8C 1000003E */ b .L8005DE88 +/* AD4F30 8005DD90 2402FFFF */ li $v0, -1 +.L8005DD94: +/* AD4F34 8005DD94 92220015 */ lbu $v0, 0x15($s1) +/* AD4F38 8005DD98 3C048014 */ lui $a0, %hi(D_8013AB4C) # $a0, 0x8014 +/* AD4F3C 8005DD9C 2484AB4C */ addiu $a0, %lo(D_8013AB4C) # addiu $a0, $a0, -0x54b4 +/* AD4F40 8005DDA0 28410004 */ slti $at, $v0, 4 +/* AD4F44 8005DDA4 14200007 */ bnez $at, .L8005DDC4 +/* AD4F48 8005DDA8 3C058014 */ lui $a1, %hi(D_8013AB74) # $a1, 0x8014 +/* AD4F4C 8005DDAC 24A5AB74 */ addiu $a1, %lo(D_8013AB74) # addiu $a1, $a1, -0x548c +/* AD4F50 8005DDB0 24060CCA */ li $a2, 3274 +/* AD4F54 8005DDB4 0C0007FC */ jal __assert +/* AD4F58 8005DDB8 AFA7002C */ sw $a3, 0x2c($sp) +/* AD4F5C 8005DDBC 8FA7002C */ lw $a3, 0x2c($sp) +/* AD4F60 8005DDC0 92220015 */ lbu $v0, 0x15($s1) +.L8005DDC4: +/* AD4F64 8005DDC4 00027080 */ sll $t6, $v0, 2 +/* AD4F68 8005DDC8 3C198012 */ lui $t9, %hi(D_8011DF18) +/* AD4F6C 8005DDCC 032EC821 */ addu $t9, $t9, $t6 +/* AD4F70 8005DDD0 8F39DF18 */ lw $t9, %lo(D_8011DF18)($t9) +/* AD4F74 8005DDD4 8FA40020 */ lw $a0, 0x20($sp) +/* AD4F78 8005DDD8 02202825 */ move $a1, $s1 +/* AD4F7C 8005DDDC 0320F809 */ jalr $t9 +/* AD4F80 8005DDE0 AFA7002C */ sw $a3, 0x2c($sp) +/* AD4F84 8005DDE4 8E230000 */ lw $v1, ($s1) +/* AD4F88 8005DDE8 8FA7002C */ lw $a3, 0x2c($sp) +/* AD4F8C 8005DDEC 50600007 */ beql $v1, $zero, .L8005DE0C +/* AD4F90 8005DDF0 96180002 */ lhu $t8, 2($s0) +/* AD4F94 8005DDF4 8C6F0130 */ lw $t7, 0x130($v1) +/* AD4F98 8005DDF8 55E00004 */ bnezl $t7, .L8005DE0C +/* AD4F9C 8005DDFC 96180002 */ lhu $t8, 2($s0) +/* AD4FA0 8005DE00 10000021 */ b .L8005DE88 +/* AD4FA4 8005DE04 2402FFFF */ li $v0, -1 +/* AD4FA8 8005DE08 96180002 */ lhu $t8, 2($s0) +.L8005DE0C: +/* AD4FAC 8005DE0C 33080001 */ andi $t0, $t8, 1 +/* AD4FB0 8005DE10 5100000E */ beql $t0, $zero, .L8005DE4C +/* AD4FB4 8005DE14 8E0201C0 */ lw $v0, 0x1c0($s0) +/* AD4FB8 8005DE18 8E0901C0 */ lw $t1, 0x1c0($s0) +/* AD4FBC 8005DE1C 00075080 */ sll $t2, $a3, 2 +/* AD4FC0 8005DE20 3C048014 */ lui $a0, %hi(D_8013AB8C) # $a0, 0x8014 +/* AD4FC4 8005DE24 00E9082A */ slt $at, $a3, $t1 +/* AD4FC8 8005DE28 14200005 */ bnez $at, .L8005DE40 +/* AD4FCC 8005DE2C 020A5821 */ addu $t3, $s0, $t2 +/* AD4FD0 8005DE30 0C00084C */ jal osSyncPrintf +/* AD4FD4 8005DE34 2484AB8C */ addiu $a0, %lo(D_8013AB8C) # addiu $a0, $a0, -0x5474 +/* AD4FD8 8005DE38 10000013 */ b .L8005DE88 +/* AD4FDC 8005DE3C 2402FFFF */ li $v0, -1 +.L8005DE40: +/* AD4FE0 8005DE40 10000010 */ b .L8005DE84 +/* AD4FE4 8005DE44 AD710004 */ sw $s1, 4($t3) +/* AD4FE8 8005DE48 8E0201C0 */ lw $v0, 0x1c0($s0) +.L8005DE4C: +/* AD4FEC 8005DE4C 3C048014 */ lui $a0, %hi(D_8013ABDC) # $a0, 0x8014 +/* AD4FF0 8005DE50 28410032 */ slti $at, $v0, 0x32 +/* AD4FF4 8005DE54 14200005 */ bnez $at, .L8005DE6C +/* AD4FF8 8005DE58 00026080 */ sll $t4, $v0, 2 +/* AD4FFC 8005DE5C 0C00084C */ jal osSyncPrintf +/* AD5000 8005DE60 2484ABDC */ addiu $a0, %lo(D_8013ABDC) # addiu $a0, $a0, -0x5424 +/* AD5004 8005DE64 10000008 */ b .L8005DE88 +/* AD5008 8005DE68 2402FFFF */ li $v0, -1 +.L8005DE6C: +/* AD500C 8005DE6C 020C6821 */ addu $t5, $s0, $t4 +/* AD5010 8005DE70 ADB101C4 */ sw $s1, 0x1c4($t5) +/* AD5014 8005DE74 8E0E01C0 */ lw $t6, 0x1c0($s0) +/* AD5018 8005DE78 00403825 */ move $a3, $v0 +/* AD501C 8005DE7C 25D90001 */ addiu $t9, $t6, 1 +/* AD5020 8005DE80 AE1901C0 */ sw $t9, 0x1c0($s0) +.L8005DE84: +/* AD5024 8005DE84 00E01025 */ move $v0, $a3 +.L8005DE88: +/* AD5028 8005DE88 8FBF001C */ lw $ra, 0x1c($sp) +/* AD502C 8005DE8C 8FB00014 */ lw $s0, 0x14($sp) +/* AD5030 8005DE90 8FB10018 */ lw $s1, 0x18($sp) +/* AD5034 8005DE94 03E00008 */ jr $ra +/* AD5038 8005DE98 27BD0020 */ addiu $sp, $sp, 0x20 + +/* AD503C 8005DE9C 27BDFFE8 */ addiu $sp, $sp, -0x18 +/* AD5040 8005DEA0 AFBF0014 */ sw $ra, 0x14($sp) +/* AD5044 8005DEA4 AFA40018 */ sw $a0, 0x18($sp) +/* AD5048 8005DEA8 AFA60020 */ sw $a2, 0x20($sp) +/* AD504C 8005DEAC 0C03034A */ jal func_800C0D28 +/* AD5050 8005DEB0 AFA5001C */ sw $a1, 0x1c($sp) +/* AD5054 8005DEB4 24010001 */ li $at, 1 +/* AD5058 8005DEB8 14410003 */ bne $v0, $at, .L8005DEC8 +/* AD505C 8005DEBC 8FA7001C */ lw $a3, 0x1c($sp) +/* AD5060 8005DEC0 10000016 */ b .L8005DF1C +/* AD5064 8005DEC4 2402FFFF */ li $v0, -1 +.L8005DEC8: +/* AD5068 8005DEC8 8FA40018 */ lw $a0, 0x18($sp) +/* AD506C 8005DECC 8FA50020 */ lw $a1, 0x20($sp) +/* AD5070 8005DED0 0C0174E9 */ jal func_8005D3A4 +/* AD5074 8005DED4 AFA7001C */ sw $a3, 0x1c($sp) +/* AD5078 8005DED8 8FA7001C */ lw $a3, 0x1c($sp) +/* AD507C 8005DEDC 3C048014 */ lui $a0, %hi(D_8013AC18) # $a0, 0x8014 +/* AD5080 8005DEE0 8FAE0020 */ lw $t6, 0x20($sp) +/* AD5084 8005DEE4 8CE3028C */ lw $v1, 0x28c($a3) +/* AD5088 8005DEE8 28610003 */ slti $at, $v1, 3 +/* AD508C 8005DEEC 14200005 */ bnez $at, .L8005DF04 +/* AD5090 8005DEF0 00037880 */ sll $t7, $v1, 2 +/* AD5094 8005DEF4 0C00084C */ jal osSyncPrintf +/* AD5098 8005DEF8 2484AC18 */ addiu $a0, %lo(D_8013AC18) # addiu $a0, $a0, -0x53e8 +/* AD509C 8005DEFC 10000007 */ b .L8005DF1C +/* AD50A0 8005DF00 2402FFFF */ li $v0, -1 +.L8005DF04: +/* AD50A4 8005DF04 00EFC021 */ addu $t8, $a3, $t7 +/* AD50A8 8005DF08 AF0E0290 */ sw $t6, 0x290($t8) +/* AD50AC 8005DF0C 8CF9028C */ lw $t9, 0x28c($a3) +/* AD50B0 8005DF10 00601025 */ move $v0, $v1 +/* AD50B4 8005DF14 27280001 */ addiu $t0, $t9, 1 +/* AD50B8 8005DF18 ACE8028C */ sw $t0, 0x28c($a3) +.L8005DF1C: +/* AD50BC 8005DF1C 8FBF0014 */ lw $ra, 0x14($sp) +/* AD50C0 8005DF20 27BD0018 */ addiu $sp, $sp, 0x18 +/* AD50C4 8005DF24 03E00008 */ jr $ra +/* AD50C8 8005DF28 00000000 */ nop + diff --git a/data/z_collision_check.data.s b/data/z_collision_check.data.s index 25251580a0..d7ccf22dfc 100644 --- a/data/z_collision_check.data.s +++ b/data/z_collision_check.data.s @@ -7,45 +7,6 @@ .section .data -glabel D_8011DE00 - .incbin "baserom.z64", 0xB94FA0, 0x18 - -glabel D_8011DE18 - .incbin "baserom.z64", 0xB94FB8, 0x8 - -glabel D_8011DE20 - .incbin "baserom.z64", 0xB94FC0, 0xC - -glabel D_8011DE2C - .incbin "baserom.z64", 0xB94FCC, 0x28 - -glabel D_8011DE54 - .incbin "baserom.z64", 0xB94FF4, 0x18 - -glabel D_8011DE6C - .incbin "baserom.z64", 0xB9500C, 0xC - -glabel D_8011DE78 - .incbin "baserom.z64", 0xB95018, 0x34 - -glabel D_8011DEAC - .incbin "baserom.z64", 0xB9504C, 0x40 - -glabel D_8011DEEC - .incbin "baserom.z64", 0xB9508C, 0xC - -glabel D_8011DEF8 - .incbin "baserom.z64", 0xB95098, 0x10 - -glabel D_8011DF08 - .incbin "baserom.z64", 0xB950A8, 0x10 - -glabel D_8011DF18 - .incbin "baserom.z64", 0xB950B8, 0x10 - -glabel D_8011DF28 - .incbin "baserom.z64", 0xB950C8, 0x18 - glabel D_8011DF40 .incbin "baserom.z64", 0xB950E0, 0x1 diff --git a/include/functions.h b/include/functions.h index 3310cd4712..c30c3458b5 100644 --- a/include/functions.h +++ b/include/functions.h @@ -719,9 +719,9 @@ void func_8005D400(UNK_TYPE, UNK_TYPE); // ? func_8005D40C(?); // ? func_8005D4DC(?); // ? func_8005D62C(?); -s32 Actor_CollisionCheck_SetAT(GlobalContext* globalCtx, CollisionCheckContext* simpleBodyGroups, ColliderCylinder* collision); -s32 Actor_CollisionCheck_SetAC(GlobalContext* globalCtx, CollisionCheckContext* simpleBodyGroups, ColliderCylinder* collision); -s32 Actor_CollisionCheck_SetOT(GlobalContext* globalCtx, CollisionCheckContext* simpleBodyGroups, ColliderCylinder* collision); +s32 Actor_CollisionCheck_SetAT(GlobalContext* globalCtx, CollisionCheckContext* simpleBodyGroups, Collider* collision); +s32 Actor_CollisionCheck_SetAC(GlobalContext* globalCtx, CollisionCheckContext* simpleBodyGroups, Collider* collision); +s32 Actor_CollisionCheck_SetOT(GlobalContext* globalCtx, CollisionCheckContext* simpleBodyGroups, Collider* collision); // ? func_8005DF2C(?); // ? func_8005DF50(?); // ? func_8005DF74(?); diff --git a/src/code/z_collision_check.c b/src/code/z_collision_check.c index 0ed1dc6f90..cd5497e3ca 100644 --- a/src/code/z_collision_check.c +++ b/src/code/z_collision_check.c @@ -12,12 +12,11 @@ void func_8005B280(GraphicsContext* gfx, Vec3f* vA, Vec3f* vB, Vec3f* vC) //draw poly #pragma GLOBAL_ASM("asm/non_matchings/code/z_collision_check/func_8005B2AC.s") -extern Collider D_8011DE00; - //Init Collider s32 func_8005B65C(GlobalContext* globalCtx, Collider* collision) { - *collision = D_8011DE00; + static Collider init = { NULL, NULL, NULL, NULL, 0, 0, 0, 0, 3, 4 }; + *collision = init; return 1; } @@ -87,11 +86,10 @@ void func_8005B79C(GlobalContext* globalCtx, Collider* collision) collision->maskB &= ~0x1; } -extern ColliderTouch D_8011DE18; - //Initialize ColliderTouch s32 func_8005B7C0(GlobalContext* globalCtx, ColliderTouch* touch) { - *touch = D_8011DE18; + static ColliderTouch init = { 0, 0, 0 }; + *touch = init; return 1; } @@ -115,12 +113,11 @@ void func_8005B818(GlobalContext* globalCtx, ColliderBody* body) } -extern ColliderBump D_8011DE20; - //Initialize ColliderBump s32 func_8005B824(GlobalContext* globalCtx, ColliderBump* bump) { - *bump = D_8011DE20; + static ColliderBump init = { (s32)0xFFCFFFFF, 0, 0, 0, 0, 0 }; + *bump = init; return 1; } @@ -139,11 +136,14 @@ s32 func_8005B860(GlobalContext* globalCtx, ColliderBump* bump, ColliderBumpInit return 1; } -extern ColliderBody D_8011DE2C; - //Initialize ColliderBody s32 func_8005B884(GlobalContext* globalCtx, ColliderBody* body) { - *body = D_8011DE2C; + static ColliderBody init = { + { 0, 0, 0 }, + { (s32)0xFFCFFFFF, 0, 0, 0, 0, 0 }, + 0, 0, 0, 0, 0, NULL, 0, NULL, + }; + *body = init; func_8005B7C0(globalCtx, &body->toucher); func_8005B824(globalCtx, &body->bumper); return 1; @@ -194,11 +194,10 @@ void func_8005BA1C(GlobalContext* globalCtx, ColliderBody* body) body->flags2 &= ~0x2; } -extern ColliderJntSphItemDim D_8011DE54; - //initialize JntSphItemDim s32 func_8005BA30(GlobalContext* globalCtx, ColliderJntSphItemDim* dim) { - *dim = D_8011DE54; + static ColliderJntSphItemDim init = { 0 }; + *dim = init; return 1; } @@ -242,21 +241,18 @@ s32 func_8005BB48(GlobalContext* globalCtx, ColliderJntSphItem* dest, ColliderJn } //Set CollisionBody Property -//arg1 could be wrong type s32 func_8005BB8C(GlobalContext* globalCtx, ColliderJntSphItem* collider) { func_8005B9B0(globalCtx, &collider->body); return 1; } //Set CollisionBody Property -//TODO: arg1 could be wrong type s32 func_8005BBB0(GlobalContext* globalCtx, ColliderJntSphItem* collider) { func_8005B9E8(globalCtx, &collider->body); return 1; } //Set CollisionBody Property -//arg1 could be wrong type s32 func_8005BBD4(GlobalContext* globalCtx, ColliderJntSphItem* collider) { func_8005BA1C(globalCtx, &collider->body); return 1; @@ -269,6 +265,7 @@ s32 func_8005BBF8(GlobalContext* globalCtx, ColliderJntSph* collision) { collision->list = NULL; return 1; } + //Destruct ColliderJntSph (malloc) s32 func_8005BC28(GlobalContext* globalCtx, ColliderJntSph* collider) { ColliderJntSphItem* next; @@ -473,19 +470,12 @@ s32 func_8005C234(GlobalContext* globalCtx, ColliderJntSph* collider) { return 1; } -#ifdef NON_MATCHING //Initialize ColliderCylinderDim -//matching, but needs data section imported s32 func_8005C2BC(GlobalContext* globalCtx, ColliderCylinderDim* dim) { - ColliderCylinderDim init = { 0, 0, 0, 0, 0, 0 }; //TODO: this is D_8011DE6C; + ColliderCylinderDim init = { }; *dim = init; return 1; } -#else -//Initialize ColliderCylinderDim -s32 func_8005C2BC(GlobalContext* globalCtx, ColliderCylinderDim* dim); -#pragma GLOBAL_ASM("asm/non_matchings/code/z_collision_check/func_8005C2BC.s") -#endif // NON_MATCHING //Destruct ColliderCylinderDim s32 func_8005C318(GlobalContext* globalCtx, ColliderCylinderDim* dim) @@ -569,12 +559,11 @@ s32 func_8005C578(GlobalContext* globalCtx, ColliderCylinder* collision) return 1; } -extern ColliderTrisItemDim D_8011DE78; - //Initialize ColliderTrisItemDim s32 func_8005C5B0(GlobalContext* globalCtx, ColliderTrisItemDim* dim) { - *dim = D_8011DE78; + static ColliderTrisItemDim init = { 0 }; + *dim = init; return 1; } @@ -629,7 +618,6 @@ s32 func_8005C730(GlobalContext* globalCtx, ColliderTrisItem* dest, ColliderTris return 1; } - s32 func_8005C774(GlobalContext* globalCtx, ColliderTrisItem* item) { func_8005B9B0(globalCtx, &item->body); return 1; @@ -747,7 +735,6 @@ s32 func_8005CA88(GlobalContext* globalCtx, ColliderTris* dest, Actor* actor, Co return 1; } - //SetInit ColliderTris s32 func_8005CBAC(GlobalContext* globalCtx, ColliderTris* dest, Actor* actor, ColliderTrisInit* src, ColliderTrisItem* list) { ColliderTrisItem* destNext; @@ -774,7 +761,6 @@ s32 func_8005CBAC(GlobalContext* globalCtx, ColliderTris* dest, Actor* actor, Co return 1; } - //Set ColliderTris collider body property s32 func_8005CC98(GlobalContext* globalCtx, ColliderTris* collider) { ColliderTrisItem* next; @@ -823,10 +809,13 @@ s32 func_8005CDD0(GlobalContext* globalCtx, ColliderTris* collider) { return 1; } -extern ColliderQuadDim D_8011DEAC; //Initialize ColliderQuadDim s32 func_8005CE6C(GlobalContext* globalCtx, ColliderQuadDim* dim) { - *dim = D_8011DEAC; + static ColliderQuadDim init = { + { {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0} }, + {0, 0, 0}, {0, 0, 0}, 1.0E38f, + }; + *dim = init; return 1; } @@ -922,6 +911,11 @@ s32 func_8005D1E0(GlobalContext* globalCtx, ColliderQuad* collision) #pragma GLOBAL_ASM("asm/non_matchings/code/z_collision_check/func_8005D218.s") +u32 D_8011DEF8[] = { 0x8005C124, 0x8005C508, 0x8005CC98, 0x8005D160 }; +u32 D_8011DF08[] = { 0x8005C1AC, 0x8005C540, 0x8005CD34, 0x8005D1A8 }; +u32 D_8011DF18[] = { 0x8005C234, 0x8005C578, 0x8005CDD0, 0x8005D1E0 }; +u32 D_8011DF28[] = { 0x8005DF9C, 0x8005DFAC, 0x8005E10C, 0x8005E26C, 0x8005E2A4, 0x8005E2C8 }; + #pragma GLOBAL_ASM("asm/non_matchings/code/z_collision_check/func_8005D334.s") #pragma GLOBAL_ASM("asm/non_matchings/code/z_collision_check/func_8005D3A4.s") @@ -935,7 +929,6 @@ void func_8005D3BC(GlobalContext* globalCtx, CollisionCheckContext* check) { AREG(23) = 1; } - void func_8005D400(UNK_TYPE arg0, UNK_TYPE arg1) { @@ -986,8 +979,42 @@ void func_8005D4C8(GlobalContext* globalCtx, CollisionCheckContext* check) { #pragma GLOBAL_ASM("asm/non_matchings/code/z_collision_check/func_8005D9F4.s") -//CollisionCheck_SetOC() +//CollisionCheck_SetOT() #pragma GLOBAL_ASM("asm/non_matchings/code/z_collision_check/func_8005DC4C.s") +/* +s32 Actor_CollisionCheck_SetOT(GlobalContext* globalCtx, CollisionCheckContext* simpleBodyGroups, Collider* collision) { + s32 temp_v0; + void* temp_a3; + + temp_a3 = arg1; + if (func_800C0D28() == 1) { + return -1; + } + if (arg2->unk15 >= 4) { + __assert("pcl_obj->data_type <= CL_DATA_LBL_SWRD", "../z_collision_check.c", 3229); + } + arg1 = (void*)arg1; + *(&D_8011DF18 + (arg2->unk15 * 4))(arg0, arg2, arg1); + if (arg2->unk0 != 0) { + if (arg2->unk0->unk130 == 0) { + return -1; + } + } + if (arg1->unk1C0 >= 0x32) { + osSyncPrintf(&D_8013AB10, arg1); + return -1; + } + if ((arg1->unk2 & 1) != 0) { + return -1; + } + (arg1 + (arg1->unk1C0 * 4))->unk1C4 = arg2; + temp_v0 = arg1->unk1C0; + arg1->unk1C0 = (s32)(arg1->unk1C0 + 1); + return temp_v0; +} +*/ + +#pragma GLOBAL_ASM("asm/non_matchings/code/z_collision_check/func_8005DD5C.s") #pragma GLOBAL_ASM("asm/non_matchings/code/z_collision_check/func_8005DF2C.s")