Match sub_080ACF2C and put const data in playerItemHeldObject

This commit is contained in:
Tal Hayon 2022-04-20 22:09:14 +03:00
parent 1208153d25
commit 26b9110180
6 changed files with 66 additions and 142 deletions

View File

@ -1,81 +0,0 @@
.syntax unified
push {r4, r5, r6, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xd]
adds r0, #1
strb r0, [r4, #0xd]
ldr r0, _080ACF60 @ =gUnk_081320E4
str r0, [r4, #0x48]
ldr r5, [r4, #0x54]
adds r6, r5, #0
cmp r5, #0
beq _080ACF64
ldr r0, [r5, #0x2c]
str r0, [r4, #0x2c]
ldr r0, [r5, #0x30]
str r0, [r4, #0x30]
ldr r0, [r5, #0x34]
str r0, [r4, #0x34]
adds r0, r5, #0
adds r0, #0x38
ldrb r1, [r0]
adds r0, r4, #0
adds r0, #0x38
strb r1, [r0]
ldrb r0, [r5, #0x16]
strb r0, [r4, #0x16]
b _080ACFB6
.align 2, 0
_080ACF60: .4byte gUnk_081320E4
_080ACF64:
adds r5, r4, #0
str r4, [r4, #0x54]
movs r0, #2
strb r0, [r4, #0xc]
ldr r3, _080ACFC8 @ =gUnk_081320B8
ldrb r0, [r4, #0xf]
lsls r0, r0, #2
adds r0, r0, r3
ldrb r1, [r0, #1]
movs r0, #0xf
ands r1, r0
ldrb r2, [r4, #0x1a]
movs r0, #0x10
rsbs r0, r0, #0
ands r0, r2
orrs r0, r1
strb r0, [r4, #0x1a]
ldrb r1, [r4, #0x18]
movs r0, #4
rsbs r0, r0, #0
ands r0, r1
movs r1, #1
orrs r0, r1
strb r0, [r4, #0x18]
strb r6, [r4, #0x16]
ldrb r0, [r4, #0xf]
lsls r0, r0, #2
adds r0, r0, r3
ldrb r1, [r0, #2]
adds r0, r4, #0
adds r0, #0x60
strh r1, [r0]
ldrb r0, [r4, #0xf]
lsls r0, r0, #2
adds r0, r0, r3
ldrb r1, [r0]
adds r0, r4, #0
bl InitializeAnimation
bl sub_08078D60
_080ACFB6:
ldrb r1, [r5, #8]
adds r0, r4, #0
adds r0, #0x6c
strh r1, [r0]
ldrb r1, [r5, #9]
adds r0, #2
strh r1, [r0]
pop {r4, r5, r6, pc}
.align 2, 0
_080ACFC8: .4byte gUnk_081320B8
.syntax divided

View File

@ -45161,31 +45161,6 @@
"DEMO_JP": -2268
}
},
{
"path": "playerItemHeldObject/gUnk_081320B8.bin",
"start": 1253560,
"size": 12
},
{
"path": "playerItemHeldObject/gUnk_081320C4.bin",
"start": 1253572,
"size": 8
},
{
"path": "playerItemHeldObject/gUnk_081320CC.bin",
"start": 1253580,
"size": 8
},
{
"path": "playerItemHeldObject/gUnk_081320D4.bin",
"start": 1253588,
"size": 16
},
{
"path": "playerItemHeldObject/gUnk_081320E4.bin",
"start": 1253604,
"size": 12
},
{
"offsets": {
"DEMO_JP": -988

View File

@ -1,26 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.section .rodata
.align 2
gUnk_081320A8:: @ 081320A8
.4byte sub_080ACF2C
.4byte sub_080ACFCC
.4byte sub_080AD040
.4byte sub_080AD274
gUnk_081320B8:: @ 081320B8
.incbin "playerItemHeldObject/gUnk_081320B8.bin"
gUnk_081320C4:: @ 081320C4
.incbin "playerItemHeldObject/gUnk_081320C4.bin"
gUnk_081320CC:: @ 081320CC
.incbin "playerItemHeldObject/gUnk_081320CC.bin"
gUnk_081320D4:: @ 081320D4
.incbin "playerItemHeldObject/gUnk_081320D4.bin"
gUnk_081320E4:: @ 081320E4
.incbin "playerItemHeldObject/gUnk_081320E4.bin"

View File

@ -403,6 +403,7 @@ u32 sub_0807AC54(Entity*);
void sub_080792D8(void);
u32 sub_08078F74(Entity*);
void sub_0807879C(Entity*);
void sub_08078D60(void);
void PlayerSetNormalAndCollide(void);
bool32 PlayerTryDropObject(ItemBehavior* arg0, u32 unk);
void InitItemGetSequence(u32, u32, u32);

View File

@ -1639,7 +1639,7 @@ SECTIONS {
src/projectile/v3TennisBallProjectile.o(.rodata);
src/playerItem/playerItemGust.o(.rodata);
src/flagDebug.o(.rodata);
data/const/playerItem/playerItemHeldObject.o(.rodata);
src/playerItem/playerItemHeldObject.o(.rodata);
src/title.o(.rodata);
src/projectile.o(.rodata);
src/playerItem/playerItemGustJar.o(.rodata);

View File

@ -13,8 +13,6 @@
#include "new_player.h"
#include "player.h"
extern void (*const gUnk_081320A8[])(Entity*);
typedef struct {
Entity base;
u8 unk_68[4];
@ -23,20 +21,65 @@ typedef struct {
} PlayerItemHeldObjectEntity;
extern bool32 ProcessMovement10(Entity*);
extern const s8 gUnk_081320C4[];
typedef struct {
u8 unk0;
u8 unk1;
u8 unk2;
u8 unk3;
} struct_gUnk_081320B8;
bool32 sub_080AD32C(PlayerItemHeldObjectEntity*);
void sub_080AD27C(PlayerItemHeldObjectEntity*);
void sub_080ACF2C(PlayerItemHeldObjectEntity*);
void sub_080ACFCC(PlayerItemHeldObjectEntity*);
void sub_080AD040(PlayerItemHeldObjectEntity*);
void sub_080AD274(PlayerItemHeldObjectEntity*);
u32 sub_0806F8DC(Entity*);
extern const u16 gUnk_081320CC[];
extern const u32 gUnk_081320D4[];
void PlayerItemHeldObject(Entity* this) {
gUnk_081320A8[this->subAction](this);
static void (*const subActionFuncs[])(PlayerItemHeldObjectEntity*) = {
sub_080ACF2C,
sub_080ACFCC,
sub_080AD040,
sub_080AD274,
};
subActionFuncs[this->subAction]((PlayerItemHeldObjectEntity*)this);
}
ASM_FUNC("asm/non_matching/playerItem13/sub_080ACF2C.inc", void sub_080ACF2C(Entity* this))
static const Hitbox3D gUnk_081320E4;
void sub_080ACF2C(PlayerItemHeldObjectEntity* this) {
static const struct_gUnk_081320B8 gUnk_081320B8[] = { { 0, 2, 0xe8, 0 }, { 0, 5, 0xe0, 0 }, { 0, 5, 0xf2, 0 } };
PlayerItemHeldObjectEntity* child;
PlayerItemHeldObjectEntity* child2;
const struct_gUnk_081320B8* ptr;
u32 temp;
super->subAction++;
super->hitbox = (Hitbox*)&gUnk_081320E4;
child = (PlayerItemHeldObjectEntity*)super->child;
child2 = child;
if (child != NULL) {
super->x = (child->base).x;
super->y = (child->base).y;
super->z = (child->base).z;
super->collisionLayer = (child->base).collisionLayer;
super->carryFlags = (child->base).carryFlags;
} else {
child = this;
super->child = super;
super->action = 2;
ptr = gUnk_081320B8;
super->palette.b.b0 = temp = ptr[super->subtimer].unk1;
super->spriteSettings.draw = 1;
super->carryFlags = (int)child2;
super->spriteVramOffset = ptr[super->subtimer].unk2;
InitializeAnimation(super, ptr[super->subtimer].unk0);
sub_08078D60();
}
this->unk_6c = (child->base).kind;
this->unk_6e = (child->base).id;
}
void sub_080ACFCC(PlayerItemHeldObjectEntity* this) {
Entity* child = super->child;
@ -60,6 +103,9 @@ void sub_080ACFCC(PlayerItemHeldObjectEntity* this) {
}
void sub_080AD040(PlayerItemHeldObjectEntity* this) {
static const s8 gUnk_081320C4[] = {
0, -6, 6, 0, 0, 6, -6, 0,
};
PlayerItemHeldObjectEntity* child;
u32 tile;
u32 tmp;
@ -177,11 +223,18 @@ void sub_080AD040(PlayerItemHeldObjectEntity* this) {
}
}
void sub_080AD274(Entity* this) {
void sub_080AD274(PlayerItemHeldObjectEntity* this) {
DeleteThisEntity();
}
void sub_080AD27C(PlayerItemHeldObjectEntity* this) {
static const u16 gUnk_081320CC[] = {
0x400,
0x200,
0x200,
0x200,
};
static const u32 gUnk_081320D4[] = { Q_16_16(0), Q_16_16(0.5), Q_16_16(1.25), Q_16_16(1.25) };
u32 tmp;
PlayerItemHeldObjectEntity* child = (PlayerItemHeldObjectEntity*)super->child;
gNewPlayerEntity.unk_74 = NULL;
@ -217,3 +270,5 @@ bool32 sub_080AD32C(PlayerItemHeldObjectEntity* this) {
}
return result;
}
static const Hitbox3D gUnk_081320E4 = { 0, 0, { 6, 3, 3, 6 }, 4, 4, 0x10, { 0, 0, 0 } };