swordsmanNewsletter.c OK

This commit is contained in:
theo3 2020-07-10 22:34:55 -07:00
parent 1bd6c3b5a4
commit 02cb79b6c4
5 changed files with 85 additions and 221 deletions

View File

@ -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}

View File

@ -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

View File

@ -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);

View File

@ -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();
}
}

31
src/swordsmanNewsletter.c Normal file
View File

@ -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);
}
}