mirror of https://github.com/zeldaret/tmc.git
swordsmanNewsletter.c OK
This commit is contained in:
parent
1bd6c3b5a4
commit
02cb79b6c4
157
asm/object49.s
157
asm/object49.s
|
|
@ -6,163 +6,6 @@
|
|||
|
||||
.text
|
||||
|
||||
thumb_func_start sub_0808F244
|
||||
sub_0808F244: @ 0x0808F244
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
ldr r3, [r4, #0x50]
|
||||
ldrb r1, [r3, #0x18]
|
||||
lsls r1, r1, #0x1e
|
||||
lsrs r1, r1, #0x1e
|
||||
ldrb r2, [r4, #0x18]
|
||||
movs r0, #4
|
||||
rsbs r0, r0, #0
|
||||
ands r0, r2
|
||||
orrs r0, r1
|
||||
strb r0, [r4, #0x18]
|
||||
ldrh r0, [r3, #0x32]
|
||||
adds r0, #3
|
||||
movs r2, #0
|
||||
strh r0, [r4, #0x32]
|
||||
ldr r1, [r4, #0x54]
|
||||
adds r0, r1, #0
|
||||
adds r0, #0x62
|
||||
ldrb r0, [r0]
|
||||
lsls r0, r0, #0x18
|
||||
asrs r0, r0, #0x18
|
||||
ldrh r1, [r1, #0x2e]
|
||||
adds r0, r0, r1
|
||||
strh r0, [r4, #0x2e]
|
||||
str r2, [r4, #0x34]
|
||||
movs r0, #0x36
|
||||
ldrsh r1, [r3, r0]
|
||||
movs r0, #0x80
|
||||
subs r0, r0, r1
|
||||
str r0, [r4, #0x74]
|
||||
movs r0, #0x36
|
||||
ldrsh r1, [r3, r0]
|
||||
movs r0, #0x80
|
||||
lsls r0, r0, #1
|
||||
subs r0, r0, r1
|
||||
str r0, [r4, #0x78]
|
||||
adds r3, #0x7f
|
||||
ldrb r0, [r3]
|
||||
str r0, [r4, #0x70]
|
||||
adds r0, r4, #0
|
||||
bl sub_0808F2B0
|
||||
ldr r0, [r4, #0x50]
|
||||
adds r0, #0x6d
|
||||
ldrb r1, [r0]
|
||||
movs r0, #2
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
beq _0808F2AC
|
||||
bl DeleteThisEntity
|
||||
_0808F2AC:
|
||||
pop {r4, pc}
|
||||
.align 2, 0
|
||||
|
||||
thumb_func_start sub_0808F2B0
|
||||
sub_0808F2B0: @ 0x0808F2B0
|
||||
push {lr}
|
||||
ldr r1, [r0, #0x74]
|
||||
ldr r2, [r0, #0x78]
|
||||
ldr r3, [r0, #0x70]
|
||||
bl sub_0805EC9C
|
||||
pop {pc}
|
||||
.align 2, 0
|
||||
|
||||
thumb_func_start sub_0808F2C0
|
||||
sub_0808F2C0: @ 0x0808F2C0
|
||||
push {r4, r5, r6, lr}
|
||||
adds r5, r0, #0
|
||||
ldrb r0, [r5, #0xc]
|
||||
adds r6, r0, #0
|
||||
cmp r6, #0
|
||||
bne _0808F322
|
||||
adds r0, #1
|
||||
strb r0, [r5, #0xc]
|
||||
ldr r4, [r5, #0x50]
|
||||
ldrb r2, [r4, #0x19]
|
||||
lsrs r2, r2, #6
|
||||
lsls r2, r2, #6
|
||||
ldrb r3, [r5, #0x19]
|
||||
movs r1, #0x3f
|
||||
adds r0, r1, #0
|
||||
ands r0, r3
|
||||
orrs r0, r2
|
||||
strb r0, [r5, #0x19]
|
||||
ldrb r0, [r4, #0x1b]
|
||||
lsrs r0, r0, #6
|
||||
lsls r0, r0, #6
|
||||
ldrb r2, [r5, #0x1b]
|
||||
ands r1, r2
|
||||
orrs r1, r0
|
||||
strb r1, [r5, #0x1b]
|
||||
ldrb r1, [r5, #0x18]
|
||||
movs r0, #4
|
||||
rsbs r0, r0, #0
|
||||
ands r0, r1
|
||||
movs r1, #1
|
||||
orrs r0, r1
|
||||
strb r0, [r5, #0x18]
|
||||
adds r2, r5, #0
|
||||
adds r2, #0x29
|
||||
ldrb r0, [r2]
|
||||
movs r1, #7
|
||||
orrs r0, r1
|
||||
strb r0, [r2]
|
||||
str r6, [r5, #0x34]
|
||||
ldr r1, [r5, #0x50]
|
||||
ldrh r0, [r1, #0x32]
|
||||
adds r0, #3
|
||||
strh r0, [r5, #0x32]
|
||||
ldrh r0, [r1, #0x2e]
|
||||
strh r0, [r5, #0x2e]
|
||||
adds r0, r5, #0
|
||||
movs r1, #3
|
||||
bl InitializeAnimation
|
||||
_0808F322:
|
||||
ldr r2, [r5, #0x50]
|
||||
movs r1, #0x36
|
||||
ldrsh r0, [r2, r1]
|
||||
cmp r0, #0
|
||||
bne _0808F334
|
||||
ldr r0, [r2, #0x74]
|
||||
str r0, [r5, #0x74]
|
||||
ldr r0, [r2, #0x78]
|
||||
b _0808F34C
|
||||
_0808F334:
|
||||
movs r0, #0x36
|
||||
ldrsh r1, [r2, r0]
|
||||
movs r0, #0x80
|
||||
lsls r0, r0, #2
|
||||
subs r0, r0, r1
|
||||
str r0, [r5, #0x74]
|
||||
movs r0, #0x36
|
||||
ldrsh r1, [r2, r0]
|
||||
lsls r1, r1, #1
|
||||
movs r0, #0xc0
|
||||
lsls r0, r0, #2
|
||||
subs r0, r0, r1
|
||||
_0808F34C:
|
||||
str r0, [r5, #0x78]
|
||||
movs r0, #0
|
||||
str r0, [r5, #0x70]
|
||||
adds r0, r5, #0
|
||||
bl sub_0808F2B0
|
||||
ldr r1, [r5, #0x78]
|
||||
adds r0, r5, #0
|
||||
movs r2, #8
|
||||
movs r3, #2
|
||||
bl sub_0806FCF4
|
||||
ldrb r0, [r5, #0xc]
|
||||
cmp r0, #0xff
|
||||
bne _0808F36E
|
||||
bl DeleteThisEntity
|
||||
_0808F36E:
|
||||
pop {r4, r5, r6, pc}
|
||||
|
||||
thumb_func_start sub_0808F370
|
||||
sub_0808F370: @ 0x0808F370
|
||||
push {r4, lr}
|
||||
|
|
|
|||
|
|
@ -1,63 +0,0 @@
|
|||
.include "asm/macros.inc"
|
||||
|
||||
.include "constants/constants.inc"
|
||||
|
||||
.syntax unified
|
||||
|
||||
.text
|
||||
|
||||
|
||||
thumb_func_start SwordsmanNewsletter
|
||||
SwordsmanNewsletter: @ 0x080933C0
|
||||
push {lr}
|
||||
ldr r2, _080933D4 @ =gUnk_081228B0
|
||||
ldrb r1, [r0, #0xc]
|
||||
lsls r1, r1, #2
|
||||
adds r1, r1, r2
|
||||
ldr r1, [r1]
|
||||
bl _call_via_r1
|
||||
pop {pc}
|
||||
.align 2, 0
|
||||
_080933D4: .4byte gUnk_081228B0
|
||||
|
||||
thumb_func_start sub_080933D8
|
||||
sub_080933D8: @ 0x080933D8
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
movs r0, #1
|
||||
strb r0, [r4, #0xc]
|
||||
ldrb r0, [r4, #0xa]
|
||||
strb r0, [r4, #0x1e]
|
||||
adds r0, r4, #0
|
||||
bl UpdateSpriteForCollisionLayer
|
||||
ldr r0, _080933F8 @ =gUnk_081228A8
|
||||
str r0, [r4, #0x48]
|
||||
adds r0, r4, #0
|
||||
bl sub_080787B4
|
||||
pop {r4, pc}
|
||||
.align 2, 0
|
||||
_080933F8: .4byte gUnk_081228A8
|
||||
|
||||
thumb_func_start sub_080933FC
|
||||
sub_080933FC: @ 0x080933FC
|
||||
push {lr}
|
||||
adds r2, r0, #0
|
||||
adds r1, r2, #0
|
||||
adds r1, #0x39
|
||||
movs r0, #0
|
||||
ldrsb r0, [r1, r0]
|
||||
cmp r0, #0
|
||||
beq _08093420
|
||||
movs r0, #0
|
||||
strb r0, [r1]
|
||||
ldr r1, _08093424 @ =gUnk_081228B8
|
||||
ldrb r0, [r2, #0xa]
|
||||
lsls r0, r0, #1
|
||||
adds r0, r0, r1
|
||||
ldrh r0, [r0]
|
||||
adds r1, r2, #0
|
||||
bl TextboxNoOverlap
|
||||
_08093420:
|
||||
pop {pc}
|
||||
.align 2, 0
|
||||
_08093424: .4byte gUnk_081228B8
|
||||
|
|
@ -758,7 +758,7 @@ SECTIONS {
|
|||
asm/houseDoorInterior.o(.text);
|
||||
asm/whirlwind.o(.text);
|
||||
asm/objectBlockingStairs.o(.text);
|
||||
asm/swordsmanNewsletter.o(.text);
|
||||
src/swordsmanNewsletter.o(.text);
|
||||
asm/object61.o(.text);
|
||||
asm/giantTwig.o(.text);
|
||||
asm/object63.o(.text);
|
||||
|
|
|
|||
|
|
@ -8,11 +8,13 @@ void sub_0808F14C(Entity*);
|
|||
extern void PlaySFX(u32);
|
||||
extern void sub_0806FCF4(Entity*, u32, u32, u32);
|
||||
extern void sub_0808F244(Entity*);
|
||||
extern void sub_0805EC9C(Entity*, u32, u32, u32);
|
||||
|
||||
extern void (*const gUnk_08121E5C[])(Entity*);
|
||||
extern void (*const gUnk_08121E88[])(Entity*);
|
||||
extern void (*const gUnk_08121E98[])(Entity*);
|
||||
|
||||
|
||||
void Object49(Entity* this) {
|
||||
gUnk_08121E5C[this->entityType.form](this);
|
||||
}
|
||||
|
|
@ -99,4 +101,55 @@ void sub_0808F1F8(Entity *this)
|
|||
this->spritePriority.b0 = 7;
|
||||
InitializeAnimation(this, 1);
|
||||
sub_0808F244(this);
|
||||
}
|
||||
|
||||
void sub_0808F244(Entity *this)
|
||||
{
|
||||
|
||||
this->spriteSettings.b.draw = this->parent->spriteSettings.b.draw;
|
||||
this->y.HALF.HI = this->parent->y.HALF.HI + 3;
|
||||
this->x.HALF.HI = (*(s8*)&this->attachedEntity->spriteOffsetX + this->attachedEntity->x.HALF.HI);
|
||||
this->height.WORD = 0;
|
||||
*(u32 *)&this->field_0x74 = 0x80 - this->parent->height.HALF.HI;
|
||||
*(u32 *)&this->field_0x78 = 0x100 - this->parent->height.HALF.HI;
|
||||
*(u32 *)&this->field_0x70 = *((u8 *)&this->parent->field_0x7c + 3);
|
||||
sub_0808F2B0(this);
|
||||
if ((this->parent->field_0x6d & 2) != 0) {
|
||||
DeleteThisEntity();
|
||||
}
|
||||
}
|
||||
|
||||
void sub_0808F2B0(Entity *this)
|
||||
{
|
||||
sub_0805EC9C(this, *(u32 *)&this->field_0x74, *(u32 *)&this->field_0x78, this->field_0x70);
|
||||
}
|
||||
|
||||
void sub_0808F2C0(Entity *this)
|
||||
{
|
||||
if (this->action == 0) {
|
||||
this->action++;
|
||||
this->spriteRendering.b3 = this->parent->spriteRendering.b3;
|
||||
this->spriteOrientation.flipY = this->parent->spriteOrientation.flipY;
|
||||
this->spriteSettings.b.draw = 1;
|
||||
this->spritePriority.b0 = 7;
|
||||
this->height.WORD = 0;
|
||||
|
||||
this->y.HALF.HI = this->parent->y.HALF.HI + 3;
|
||||
this->x.HALF.HI = this->parent->x.HALF.HI;
|
||||
InitializeAnimation(this,3);
|
||||
}
|
||||
if (this->parent->height.HALF.HI == 0) {
|
||||
*(u32 *)&this->field_0x74 = *(u32 *)&this->parent->field_0x74;
|
||||
*(u32 *)&this->field_0x78 = *(u32 *)&this->parent->field_0x78;
|
||||
}
|
||||
else {
|
||||
*(u32 *)&this->field_0x74 = 0x200 - this->parent->height.HALF.HI;
|
||||
*(u32 *)&this->field_0x78 = this->parent->height.HALF.HI * -2 + 0x300;
|
||||
}
|
||||
*(u32 *)&this->field_0x70 = 0;
|
||||
sub_0808F2B0(this);
|
||||
sub_0806FCF4(this,*(u32 *)&this->field_0x78,8,2);
|
||||
if (this->action == 0xff) {
|
||||
DeleteThisEntity();
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,31 @@
|
|||
#include "global.h"
|
||||
#include "entity.h"
|
||||
#include "textbox.h"
|
||||
|
||||
extern void sub_080787B4(Entity*);
|
||||
|
||||
extern void (*const gUnk_081228B0[])(Entity*);
|
||||
|
||||
extern BoundingBox gUnk_081228A8;
|
||||
extern u16 gUnk_081228B8[];
|
||||
|
||||
void SwordsmanNewsletter(Entity* this) {
|
||||
gUnk_081228B0[this->action](this);
|
||||
}
|
||||
|
||||
void sub_080933D8(Entity *this)
|
||||
{
|
||||
this->action = 1;
|
||||
this->frameIndex = this->entityType.form;
|
||||
UpdateSpriteForCollisionLayer(this);
|
||||
this->boundingBox = &gUnk_081228A8;
|
||||
sub_080787B4(this);
|
||||
}
|
||||
|
||||
void sub_080933FC(Entity *this)
|
||||
{
|
||||
if (this->interactType != 0) {
|
||||
this->interactType = 0;
|
||||
TextboxNoOverlap(gUnk_081228B8[this->entityType.form], this);
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue