mirror of https://github.com/zeldaret/tmc.git
Match sub_080630A4
This commit is contained in:
parent
57886f751b
commit
912a7a563f
|
|
@ -1,175 +0,0 @@
|
|||
.syntax unified
|
||||
push {r4, r5, r6, lr}
|
||||
adds r4, r0, #0
|
||||
adds r0, #0x6d
|
||||
ldrb r0, [r0]
|
||||
cmp r0, #0
|
||||
beq _080630BA
|
||||
ldr r0, [r4, #0x6c]
|
||||
adds r0, #0x80
|
||||
lsls r0, r0, #0x14
|
||||
lsrs r5, r0, #0x17
|
||||
b _080630D0
|
||||
_080630BA:
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x6c
|
||||
ldrb r1, [r0]
|
||||
lsrs r1, r1, #6
|
||||
movs r0, #3
|
||||
eors r1, r0
|
||||
adds r1, #1
|
||||
movs r0, #0x10
|
||||
bl __divsi3
|
||||
asrs r5, r0, #1
|
||||
_080630D0:
|
||||
movs r0, #0x80
|
||||
lsls r0, r0, #1
|
||||
ldr r2, [r4, #0x70]
|
||||
cmp r2, r0
|
||||
bls _080630E4
|
||||
adds r0, r2, #0
|
||||
adds r0, #0x80
|
||||
lsls r0, r0, #0x14
|
||||
lsrs r3, r0, #0x17
|
||||
b _080630F4
|
||||
_080630E4:
|
||||
cmp r2, r0
|
||||
bne _080630EC
|
||||
movs r3, #0x10
|
||||
b _080630F4
|
||||
_080630EC:
|
||||
ldr r1, _08063110 @ =gUnk_0810C498
|
||||
lsrs r0, r2, #5
|
||||
adds r0, r0, r1
|
||||
ldrb r3, [r0]
|
||||
_080630F4:
|
||||
movs r6, #0x80
|
||||
lsls r6, r6, #9
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x5b
|
||||
ldrb r0, [r0]
|
||||
movs r1, #3
|
||||
ands r1, r0
|
||||
cmp r1, #2
|
||||
beq _08063144
|
||||
cmp r1, #2
|
||||
bgt _08063114
|
||||
cmp r1, #1
|
||||
beq _0806311A
|
||||
b _080631CA
|
||||
.align 2, 0
|
||||
_08063110: .4byte gUnk_0810C498
|
||||
_08063114:
|
||||
cmp r1, #3
|
||||
beq _0806317A
|
||||
b _080631CA
|
||||
_0806311A:
|
||||
adds r2, r4, #0
|
||||
adds r2, #0x29
|
||||
ldrb r1, [r2]
|
||||
movs r0, #0x39
|
||||
rsbs r0, r0, #0
|
||||
ands r0, r1
|
||||
strb r0, [r2]
|
||||
ldr r0, [r4, #0x6c]
|
||||
cmp r0, #0x80
|
||||
bls _08063132
|
||||
subs r0, r0, r5
|
||||
str r0, [r4, #0x6c]
|
||||
_08063132:
|
||||
lsls r1, r3, #1
|
||||
ldr r0, [r4, #0x70]
|
||||
adds r0, r0, r1
|
||||
str r0, [r4, #0x70]
|
||||
lsls r1, r6, #1
|
||||
ldr r0, [r4, #0x30]
|
||||
adds r0, r0, r1
|
||||
str r0, [r4, #0x30]
|
||||
b _080631CA
|
||||
_08063144:
|
||||
ldr r0, [r4, #0x6c]
|
||||
adds r0, r0, r5
|
||||
str r0, [r4, #0x6c]
|
||||
ldr r1, [r4, #0x70]
|
||||
movs r2, #0x80
|
||||
lsls r2, r2, #1
|
||||
cmp r1, r2
|
||||
bls _0806316C
|
||||
ldr r0, _08063168 @ =0x0000017F
|
||||
cmp r1, r0
|
||||
bhi _0806315C
|
||||
lsrs r3, r3, #1
|
||||
_0806315C:
|
||||
subs r0, r1, r3
|
||||
cmp r0, #0xff
|
||||
bhi _08063172
|
||||
str r2, [r4, #0x70]
|
||||
b _08063174
|
||||
.align 2, 0
|
||||
_08063168: .4byte 0x0000017F
|
||||
_0806316C:
|
||||
cmp r1, #0x80
|
||||
bls _08063174
|
||||
subs r0, r1, r3
|
||||
_08063172:
|
||||
str r0, [r4, #0x70]
|
||||
_08063174:
|
||||
ldr r0, [r4, #0x34]
|
||||
subs r0, r0, r6
|
||||
b _080631C8
|
||||
_0806317A:
|
||||
ldr r0, [r4, #0x6c]
|
||||
ldr r1, _080631B4 @ =0x0000033F
|
||||
cmp r0, r1
|
||||
bhi _08063186
|
||||
adds r0, r0, r5
|
||||
str r0, [r4, #0x6c]
|
||||
_08063186:
|
||||
cmp r2, r1
|
||||
bls _080631BC
|
||||
movs r2, #0x80
|
||||
lsls r2, r2, #1
|
||||
adds r0, r4, #0
|
||||
adds r1, r2, #0
|
||||
movs r3, #0
|
||||
bl SetAffineInfo
|
||||
adds r0, r4, #0
|
||||
movs r1, #0x11
|
||||
bl InitAnimationForceUpdate
|
||||
adds r1, r4, #0
|
||||
adds r1, #0x80
|
||||
movs r0, #0x11
|
||||
strh r0, [r1]
|
||||
ldr r2, _080631B8 @ =gActiveScriptInfo
|
||||
ldrb r1, [r2, #7]
|
||||
movs r0, #1
|
||||
orrs r0, r1
|
||||
strb r0, [r2, #7]
|
||||
b _080631DC
|
||||
.align 2, 0
|
||||
_080631B4: .4byte 0x0000033F
|
||||
_080631B8: .4byte gActiveScriptInfo
|
||||
_080631BC:
|
||||
lsls r0, r3, #1
|
||||
adds r0, r2, r0
|
||||
str r0, [r4, #0x70]
|
||||
ldr r0, [r4, #0x34]
|
||||
ldr r1, _080631E0 @ =0xFFFE0000
|
||||
adds r0, r0, r1
|
||||
_080631C8:
|
||||
str r0, [r4, #0x34]
|
||||
_080631CA:
|
||||
ldr r1, [r4, #0x6c]
|
||||
ldr r2, [r4, #0x70]
|
||||
adds r0, r4, #0
|
||||
movs r3, #0
|
||||
bl SetAffineInfo
|
||||
ldr r1, _080631E4 @ =gActiveScriptInfo
|
||||
movs r0, #0
|
||||
strb r0, [r1, #6]
|
||||
_080631DC:
|
||||
pop {r4, r5, r6, pc}
|
||||
.align 2, 0
|
||||
_080631E0: .4byte 0xFFFE0000
|
||||
_080631E4: .4byte gActiveScriptInfo
|
||||
.syntax divided
|
||||
|
|
@ -35916,16 +35916,6 @@
|
|||
"size": 8,
|
||||
"type": "animation"
|
||||
},
|
||||
{
|
||||
"path": "minishEzlo/gUnk_0810C48C.bin",
|
||||
"start": 1098892,
|
||||
"size": 12
|
||||
},
|
||||
{
|
||||
"path": "minishEzlo/gUnk_0810C498.bin",
|
||||
"start": 1098904,
|
||||
"size": 8
|
||||
},
|
||||
{
|
||||
"path": "animations/gSpriteAnimations_Mailbox_0.bin",
|
||||
"start": 1099796,
|
||||
|
|
|
|||
|
|
@ -1,11 +0,0 @@
|
|||
.include "asm/macros.inc"
|
||||
.include "constants/constants.inc"
|
||||
|
||||
.section .rodata
|
||||
.align 2
|
||||
|
||||
gUnk_0810C48C:: @ 0810C48C
|
||||
.incbin "minishEzlo/gUnk_0810C48C.bin"
|
||||
|
||||
gUnk_0810C498:: @ 0810C498
|
||||
.incbin "minishEzlo/gUnk_0810C498.bin"
|
||||
|
|
@ -1173,7 +1173,7 @@ SECTIONS {
|
|||
data/animations/npc/wheaton.o(.rodata);
|
||||
src/npc/pita.o(.rodata);
|
||||
data/animations/npc/pita.o(.rodata);
|
||||
data/const/npc/minishEzlo.o(.rodata);
|
||||
src/npc/minishEzlo.o(.rodata);
|
||||
data/animations/npc/minishEzlo.o(.rodata);
|
||||
data/const/npc/mailbox.o(.rodata);
|
||||
data/animations/npc/mailbox.o(.rodata);
|
||||
|
|
|
|||
|
|
@ -1,15 +1,28 @@
|
|||
#define NENT_DEPRECATED
|
||||
#include "entity.h"
|
||||
#include "sound.h"
|
||||
#include "script.h"
|
||||
#include "npc.h"
|
||||
|
||||
extern SpriteLoadData gUnk_0810C48C;
|
||||
typedef struct {
|
||||
Entity base;
|
||||
u32 filler;
|
||||
union SplitWord field_0x6c;
|
||||
u32 field_0x70;
|
||||
u8 filler2[0xC];
|
||||
s16 field_0x80;
|
||||
} MinishEzloEntity;
|
||||
|
||||
extern void sub_0806FF10(Entity* this, u32 param_2, u32 param_3);
|
||||
|
||||
void MinishEzlo(Entity* this) {
|
||||
static const SpriteLoadData gUnk_0810C48C[] = {
|
||||
{ 0x411c, 0x25, 0x4 },
|
||||
{ 0x11c, 0x25, 0x4 },
|
||||
{ 0x0, 0x0, 0x0 },
|
||||
};
|
||||
if (this->action == 0) {
|
||||
if (LoadExtraSpriteData(this, &gUnk_0810C48C) == 0) {
|
||||
if (LoadExtraSpriteData(this, gUnk_0810C48C) == 0) {
|
||||
return;
|
||||
}
|
||||
this->action += 1;
|
||||
|
|
@ -47,22 +60,92 @@ void MinishEzlo_Head(Entity* this) {
|
|||
} else {
|
||||
uVar3 = 0x11c;
|
||||
}
|
||||
SetExtraSpriteFrame(this, uVar2, (this->frame & 0xffffff7f) - 1);
|
||||
SetExtraSpriteFrame(this, uVar2, (this->frame & ~ANIM_DONE) - 1);
|
||||
SetExtraSpriteFrame(this, uVar1, this->frameIndex);
|
||||
sub_0806FF10(this, uVar1, uVar3);
|
||||
SetSpriteSubEntryOffsetData1(this, uVar1, uVar2);
|
||||
sub_0807000C(this);
|
||||
}
|
||||
|
||||
void sub_0806305C(Entity* this) {
|
||||
this->spritePriority.b1 = 0;
|
||||
this->spriteRendering.b0 = 3;
|
||||
*(u32*)&this->field_0x6c = 0x100;
|
||||
this->field_0x70.WORD = 0x100;
|
||||
SetAffineInfo(this, 0x100, 0x100, 0x0);
|
||||
InitAnimationForceUpdate(this, 0x10);
|
||||
this->field_0x80.HWORD = 0x10;
|
||||
void sub_0806305C(MinishEzloEntity* this) {
|
||||
super->spritePriority.b1 = 0;
|
||||
super->spriteRendering.b0 = 3;
|
||||
this->field_0x6c.WORD_U = 0x100;
|
||||
this->field_0x70 = 0x100;
|
||||
SetAffineInfo(super, 0x100, 0x100, 0x0);
|
||||
InitAnimationForceUpdate(super, 0x10);
|
||||
this->field_0x80 = 0x10;
|
||||
SoundReq(SFX_PLY_SHRINKING);
|
||||
}
|
||||
|
||||
ASM_FUNC("asm/non_matching/minishEzlo/sub_080630A4.inc", void sub_080630A4(Entity* this))
|
||||
void sub_080630A4(MinishEzloEntity* this) {
|
||||
static const u8 gUnk_0810C498[] = { 1, 1, 1, 1, 2, 4, 8, 16 };
|
||||
u32 uVar4;
|
||||
u32 uVar5;
|
||||
u32 uVar6;
|
||||
u32 uVar7;
|
||||
|
||||
if (this->field_0x6c.BYTES.byte1 != 0) {
|
||||
uVar5 = ((this->field_0x6c.WORD_U + 0x80) * 0x100000) >> 0x17;
|
||||
} else {
|
||||
uVar5 = (0x10 / ((this->field_0x6c.BYTES.byte0 >> 6 ^ 3) + 1)) >> 1;
|
||||
}
|
||||
|
||||
if (this->field_0x70 >= 0x101) {
|
||||
uVar4 = (this->field_0x70 + 0x80) * 0x100000 >> 0x17;
|
||||
} else {
|
||||
if (this->field_0x70 == 0x100) {
|
||||
uVar4 = 0x10;
|
||||
} else {
|
||||
uVar4 = gUnk_0810C498[this->field_0x70 >> 5];
|
||||
}
|
||||
}
|
||||
|
||||
uVar6 = Q_16_16(1);
|
||||
switch (super->frameSpriteSettings & 3) {
|
||||
case 1:
|
||||
super->spritePriority.b1 = 0;
|
||||
if (0x80 < this->field_0x6c.WORD_U) {
|
||||
this->field_0x6c.WORD_U -= uVar5;
|
||||
}
|
||||
this->field_0x70 += uVar4 * 2;
|
||||
super->y.WORD += uVar6 * 2;
|
||||
break;
|
||||
case 2:
|
||||
this->field_0x6c.WORD_U += uVar5;
|
||||
uVar7 = this->field_0x70;
|
||||
if (uVar7 >= 0x101) {
|
||||
if (uVar7 < 0x180) {
|
||||
uVar4 = uVar4 >> 1;
|
||||
}
|
||||
if (uVar7 - uVar4 < 0x100) {
|
||||
this->field_0x70 = 0x100;
|
||||
} else {
|
||||
this->field_0x70 = uVar7 - uVar4;
|
||||
}
|
||||
} else {
|
||||
if (0x80 < uVar7) {
|
||||
this->field_0x70 = uVar7 - uVar4;
|
||||
}
|
||||
}
|
||||
super->z.WORD -= uVar6;
|
||||
break;
|
||||
case 3:
|
||||
if (this->field_0x6c.WORD_U < 0x340) {
|
||||
this->field_0x6c.WORD_U += uVar5;
|
||||
}
|
||||
if (0x33f < this->field_0x70) {
|
||||
SetAffineInfo(super, 0x100, 0x100, 0);
|
||||
InitAnimationForceUpdate(super, 0x11);
|
||||
this->field_0x80 = 0x11;
|
||||
gActiveScriptInfo.flags |= 1;
|
||||
return;
|
||||
}
|
||||
this->field_0x70 += uVar4 * 2;
|
||||
super->z.WORD -= uVar6 * 2;
|
||||
break;
|
||||
}
|
||||
|
||||
SetAffineInfo(super, this->field_0x6c.WORD_U, this->field_0x70, 0);
|
||||
gActiveScriptInfo.commandSize = 0;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue