mirror of https://github.com/zeldaret/tmc.git
Match sub_0802757C
This commit is contained in:
parent
ae5e255bd6
commit
23d2badc61
|
|
@ -8,201 +8,6 @@
|
|||
|
||||
|
||||
|
||||
thumb_func_start sub_0802757C
|
||||
sub_0802757C: @ 0x0802757C
|
||||
push {r4, r5, r6, r7, lr}
|
||||
mov r7, sl
|
||||
mov r6, sb
|
||||
mov r5, r8
|
||||
push {r5, r6, r7}
|
||||
adds r5, r0, #0
|
||||
adds r6, r5, #0
|
||||
adds r6, #0x7d
|
||||
ldrb r1, [r6]
|
||||
cmp r1, #0
|
||||
beq _080275BA
|
||||
ldrb r0, [r5, #0xa]
|
||||
cmp r0, #1
|
||||
beq _080275AE
|
||||
ldr r0, [r5, #0x54]
|
||||
adds r0, #0x7d
|
||||
ldrb r0, [r0]
|
||||
movs r1, #0x83
|
||||
adds r1, r1, r5
|
||||
mov sl, r1
|
||||
cmp r0, #0
|
||||
beq _08027676
|
||||
movs r0, #0
|
||||
strb r0, [r6]
|
||||
b _08027676
|
||||
_080275AE:
|
||||
subs r0, r1, #1
|
||||
strb r0, [r6]
|
||||
movs r2, #0x83
|
||||
adds r2, r2, r5
|
||||
mov sl, r2
|
||||
b _08027676
|
||||
_080275BA:
|
||||
movs r0, #0x85
|
||||
adds r0, r0, r5
|
||||
mov ip, r0
|
||||
ldrb r1, [r0]
|
||||
mov sb, r1
|
||||
cmp r1, #1
|
||||
bne _0802761E
|
||||
adds r1, r5, #0
|
||||
adds r1, #0x82
|
||||
adds r0, r5, #0
|
||||
adds r0, #0x86
|
||||
ldrh r0, [r0]
|
||||
ldrh r2, [r1]
|
||||
adds r0, r0, r2
|
||||
strh r0, [r1]
|
||||
adds r0, r5, #0
|
||||
adds r0, #0x83
|
||||
adds r2, r5, #0
|
||||
adds r2, #0x81
|
||||
movs r4, #0
|
||||
ldrsb r4, [r0, r4]
|
||||
movs r3, #0
|
||||
ldrsb r3, [r2, r3]
|
||||
mov r8, r1
|
||||
mov sl, r0
|
||||
adds r7, r2, #0
|
||||
cmp r4, r3
|
||||
blt _08027676
|
||||
movs r0, #0
|
||||
mov r1, ip
|
||||
strb r0, [r1]
|
||||
ldrb r0, [r5, #0xa]
|
||||
cmp r0, #1
|
||||
bne _08027616
|
||||
ldr r1, [r5, #0x50]
|
||||
adds r0, r1, #0
|
||||
adds r0, #0x81
|
||||
ldrb r0, [r0]
|
||||
lsls r0, r0, #8
|
||||
adds r1, #0x86
|
||||
ldrh r1, [r1]
|
||||
bl __divsi3
|
||||
adds r0, #1
|
||||
strb r0, [r6]
|
||||
b _0802761A
|
||||
_08027616:
|
||||
mov r2, sb
|
||||
strb r2, [r6]
|
||||
_0802761A:
|
||||
ldrb r0, [r7]
|
||||
b _08027670
|
||||
_0802761E:
|
||||
adds r2, r5, #0
|
||||
adds r2, #0x82
|
||||
adds r1, r5, #0
|
||||
adds r1, #0x86
|
||||
ldrh r0, [r2]
|
||||
ldrh r1, [r1]
|
||||
subs r0, r0, r1
|
||||
strh r0, [r2]
|
||||
adds r1, r5, #0
|
||||
adds r1, #0x83
|
||||
movs r4, #0
|
||||
ldrsb r4, [r1, r4]
|
||||
adds r0, r5, #0
|
||||
adds r0, #0x81
|
||||
ldrb r3, [r0]
|
||||
mov r8, r2
|
||||
mov sl, r1
|
||||
adds r7, r0, #0
|
||||
cmn r4, r3
|
||||
bgt _08027676
|
||||
movs r1, #1
|
||||
mov r2, ip
|
||||
strb r1, [r2]
|
||||
ldrb r0, [r5, #0xa]
|
||||
cmp r0, #1
|
||||
bne _0802766A
|
||||
ldr r1, [r5, #0x50]
|
||||
adds r0, r1, #0
|
||||
adds r0, #0x81
|
||||
ldrb r0, [r0]
|
||||
lsls r0, r0, #8
|
||||
adds r1, #0x86
|
||||
ldrh r1, [r1]
|
||||
bl __divsi3
|
||||
adds r0, #1
|
||||
strb r0, [r6]
|
||||
b _0802766C
|
||||
_0802766A:
|
||||
strb r1, [r6]
|
||||
_0802766C:
|
||||
ldrb r0, [r7]
|
||||
rsbs r0, r0, #0
|
||||
_08027670:
|
||||
lsls r0, r0, #8
|
||||
mov r1, r8
|
||||
strh r0, [r1]
|
||||
_08027676:
|
||||
ldr r2, [r5, #0x50]
|
||||
adds r0, r2, #0
|
||||
adds r0, #0x63
|
||||
movs r1, #0
|
||||
ldrsb r1, [r0, r1]
|
||||
lsls r1, r1, #0x10
|
||||
ldr r0, [r2, #0x30]
|
||||
adds r0, r0, r1
|
||||
str r0, [r5, #0x30]
|
||||
adds r0, r2, #0
|
||||
adds r0, #0x62
|
||||
movs r1, #0
|
||||
ldrsb r1, [r0, r1]
|
||||
lsls r1, r1, #0x10
|
||||
ldr r0, [r2, #0x2c]
|
||||
adds r0, r0, r1
|
||||
str r0, [r5, #0x2c]
|
||||
ldrb r1, [r5, #0xe]
|
||||
lsls r1, r1, #8
|
||||
mov r0, sl
|
||||
ldrb r2, [r0]
|
||||
adds r0, r5, #0
|
||||
bl LinearMoveAngle
|
||||
ldrb r0, [r5, #0xa]
|
||||
cmp r0, #1
|
||||
beq _080276D2
|
||||
ldr r1, [r5, #0x54]
|
||||
ldr r0, [r5, #0x30]
|
||||
str r0, [r1, #0x30]
|
||||
ldr r1, [r5, #0x54]
|
||||
ldr r0, [r5, #0x2c]
|
||||
str r0, [r1, #0x2c]
|
||||
ldr r0, [r5, #0x54]
|
||||
ldrb r1, [r0, #0xe]
|
||||
lsls r1, r1, #8
|
||||
adds r2, r0, #0
|
||||
adds r2, #0x83
|
||||
ldrb r2, [r2]
|
||||
bl LinearMoveAngle
|
||||
ldr r0, [r5, #0x68]
|
||||
ldr r1, [r5, #0x54]
|
||||
ldrb r2, [r1, #0xa]
|
||||
bl sub_080279AC
|
||||
_080276D2:
|
||||
ldr r0, [r5, #0x68]
|
||||
ldrb r2, [r5, #0xa]
|
||||
adds r1, r5, #0
|
||||
bl sub_080279AC
|
||||
mov r1, sl
|
||||
ldrb r0, [r1]
|
||||
rsbs r0, r0, #0
|
||||
adds r1, r5, #0
|
||||
adds r1, #0x7f
|
||||
strb r0, [r1]
|
||||
pop {r3, r4, r5}
|
||||
mov r8, r3
|
||||
mov sb, r4
|
||||
mov sl, r5
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
.align 2, 0
|
||||
|
||||
thumb_func_start sub_080276F4
|
||||
sub_080276F4: @ 0x080276F4
|
||||
push {r4, r5, r6, r7, lr}
|
||||
|
|
|
|||
|
|
@ -41,7 +41,7 @@ typedef struct _ChuchuBossEntity {
|
|||
union SplitWord unk_78;
|
||||
u8 unk_7c;
|
||||
u8 unk_7d;
|
||||
u16 unk_7e;
|
||||
union SplitHWord unk_7e;
|
||||
u8 unk_80;
|
||||
u8 unk_81;
|
||||
union SplitHWord unk_82;
|
||||
|
|
@ -330,7 +330,7 @@ NONMATCH("asm/non_matching/chuchuBoss/sub_08025DD8.inc", void sub_08025DD8(Chuch
|
|||
super->spritePriority.b0 = gUnk_080CC1B8[super->type & 3].unk_01;
|
||||
this->unk_74.HALF.HI = 0xa0;
|
||||
this->unk_78.HALF.HI = 0xa0;
|
||||
this->unk_7e = 0;
|
||||
this->unk_7e.HWORD = 0;
|
||||
super->spriteRendering.b0 = 3;
|
||||
if ((super->type & 3) == 1) {
|
||||
InitAnimationForceUpdate(super, 0);
|
||||
|
|
@ -435,7 +435,7 @@ END_NONMATCH
|
|||
|
||||
void sub_08026060(ChuchuBossEntity* this) {
|
||||
gUnk_080CC1C8[super->type](this);
|
||||
SetAffineInfo(super, this->unk_74.HALF_U.HI, this->unk_78.HALF_U.HI, this->unk_7e);
|
||||
SetAffineInfo(super, this->unk_74.HALF_U.HI, this->unk_78.HALF_U.HI, this->unk_7e.HWORD);
|
||||
}
|
||||
|
||||
void sub_08026090(ChuchuBossEntity* this) {
|
||||
|
|
@ -1412,3 +1412,55 @@ void sub_08027548(ChuchuBossEntity* this, u32 param_2) {
|
|||
this->unk_7d = 0;
|
||||
sub_080276F4(this, 0, param_2);
|
||||
}
|
||||
|
||||
void sub_0802757C(ChuchuBossEntity* this) {
|
||||
u32 cVar2;
|
||||
|
||||
if (this->unk_7d != 0) {
|
||||
if (super->type != 1) {
|
||||
if (((ChuchuBossEntity*)super->child)->unk_7d != 0) {
|
||||
this->unk_7d = 0;
|
||||
}
|
||||
} else {
|
||||
this->unk_7d--;
|
||||
}
|
||||
} else {
|
||||
if (*(u8*)((int)this + 0x85) == 1) {
|
||||
this->unk_82.HWORD += *(u16*)((int)this + 0x86);
|
||||
if ((s8)this->unk_82.HALF.HI >= (s8)this->unk_81) {
|
||||
*(u8*)((int)this + 0x85) = 0;
|
||||
if (super->type == 1) {
|
||||
this->unk_7d =
|
||||
(((ChuchuBossEntity*)super->parent)->unk_81 << 8) / *(u16*)((int)super->parent + 0x86) + 1;
|
||||
} else {
|
||||
this->unk_7d = 1;
|
||||
}
|
||||
this->unk_82.HWORD = this->unk_81 << 8;
|
||||
}
|
||||
} else {
|
||||
this->unk_82.HWORD -= *(u16*)((int)this + 0x86);
|
||||
if ((s8)this->unk_82.HALF.HI <= -this->unk_81) {
|
||||
cVar2 = 1;
|
||||
*(u8*)((int)this + 0x85) = cVar2;
|
||||
if (super->type == 1) {
|
||||
this->unk_7d =
|
||||
(((ChuchuBossEntity*)super->parent)->unk_81 << 8) / *(u16*)((int)super->parent + 0x86) + 1;
|
||||
} else {
|
||||
this->unk_7d = 1;
|
||||
}
|
||||
this->unk_82.HWORD = (-this->unk_81) << 8;
|
||||
}
|
||||
}
|
||||
}
|
||||
super->y.WORD = super->parent->y.WORD + super->parent->spriteOffsetY * 0x10000;
|
||||
super->x.WORD = super->parent->x.WORD + (s8)super->parent->spriteOffsetX * 0x10000;
|
||||
LinearMoveAngle(super, super->timer << 8, this->unk_82.HALF.HI);
|
||||
if (super->type != 1) {
|
||||
super->child->y.WORD = super->y.WORD;
|
||||
super->child->x.WORD = super->x.WORD;
|
||||
LinearMoveAngle(super->child, super->child->timer << 8, ((ChuchuBossEntity*)super->child)->unk_82.HALF.HI);
|
||||
sub_080279AC(this->unk_68, super->child, super->child->type);
|
||||
}
|
||||
sub_080279AC(this->unk_68, this, super->type);
|
||||
this->unk_7e.HALF.HI = -this->unk_82.HALF.HI;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue