mirror of
https://github.com/zeldaret/tmc
synced 2026-08-18 21:48:21 -04:00
smoke.c, teachers.c OK
This commit is contained in:
-142
@@ -1,142 +0,0 @@
|
||||
.include "asm/macros.inc"
|
||||
|
||||
.include "constants/constants.inc"
|
||||
|
||||
.syntax unified
|
||||
|
||||
.text
|
||||
|
||||
|
||||
thumb_func_start Smoke
|
||||
Smoke: @ 0x0808A3F4
|
||||
push {lr}
|
||||
ldr r2, _0808A408 @ =gUnk_08121060
|
||||
ldrb r1, [r0, #0xa]
|
||||
lsls r1, r1, #2
|
||||
adds r1, r1, r2
|
||||
ldr r1, [r1]
|
||||
bl _call_via_r1
|
||||
pop {pc}
|
||||
.align 2, 0
|
||||
_0808A408: .4byte gUnk_08121060
|
||||
|
||||
thumb_func_start sub_0808A40C
|
||||
sub_0808A40C: @ 0x0808A40C
|
||||
push {r4, r5, lr}
|
||||
adds r4, r0, #0
|
||||
ldrb r0, [r4, #0xc]
|
||||
cmp r0, #0
|
||||
bne _0808A41E
|
||||
movs r0, #1
|
||||
strb r0, [r4, #0xc]
|
||||
movs r0, #0x28
|
||||
strb r0, [r4, #0xe]
|
||||
_0808A41E:
|
||||
ldrb r0, [r4, #0xe]
|
||||
subs r0, #1
|
||||
strb r0, [r4, #0xe]
|
||||
lsls r0, r0, #0x18
|
||||
cmp r0, #0
|
||||
bne _0808A466
|
||||
bl Random
|
||||
movs r1, #0x1f
|
||||
ands r0, r1
|
||||
movs r1, #0x40
|
||||
subs r1, r1, r0
|
||||
strb r1, [r4, #0xe]
|
||||
movs r0, #0x2d
|
||||
movs r1, #1
|
||||
movs r2, #0
|
||||
bl CreateObject
|
||||
adds r5, r0, #0
|
||||
cmp r5, #0
|
||||
beq _0808A466
|
||||
adds r0, r4, #0
|
||||
adds r1, r5, #0
|
||||
bl CopyPosition
|
||||
bl Random
|
||||
ldr r2, _0808A468 @ =gUnk_08121068
|
||||
movs r1, #7
|
||||
ands r1, r0
|
||||
adds r1, r1, r2
|
||||
movs r0, #0
|
||||
ldrsb r0, [r1, r0]
|
||||
ldrh r1, [r5, #0x2e]
|
||||
adds r0, r0, r1
|
||||
strh r0, [r5, #0x2e]
|
||||
_0808A466:
|
||||
pop {r4, r5, pc}
|
||||
.align 2, 0
|
||||
_0808A468: .4byte gUnk_08121068
|
||||
|
||||
thumb_func_start sub_0808A46C
|
||||
sub_0808A46C: @ 0x0808A46C
|
||||
push {lr}
|
||||
ldr r2, _0808A480 @ =gUnk_08121070
|
||||
ldrb r1, [r0, #0xc]
|
||||
lsls r1, r1, #2
|
||||
adds r1, r1, r2
|
||||
ldr r1, [r1]
|
||||
bl _call_via_r1
|
||||
pop {pc}
|
||||
.align 2, 0
|
||||
_0808A480: .4byte gUnk_08121070
|
||||
|
||||
thumb_func_start sub_0808A484
|
||||
sub_0808A484: @ 0x0808A484
|
||||
push {r4, lr}
|
||||
movs r3, #1
|
||||
movs r1, #1
|
||||
strb r1, [r0, #0xc]
|
||||
ldrb r2, [r0, #0x18]
|
||||
subs r1, #5
|
||||
ands r1, r2
|
||||
orrs r1, r3
|
||||
strb r1, [r0, #0x18]
|
||||
movs r1, #0x40
|
||||
strh r1, [r0, #0x24]
|
||||
movs r1, #6
|
||||
strb r1, [r0, #0x15]
|
||||
ldrb r3, [r0, #0x19]
|
||||
movs r2, #0x3f
|
||||
adds r1, r2, #0
|
||||
ands r1, r3
|
||||
movs r4, #0x40
|
||||
orrs r1, r4
|
||||
strb r1, [r0, #0x19]
|
||||
movs r1, #0x29
|
||||
adds r1, r1, r0
|
||||
mov ip, r1
|
||||
ldrb r3, [r1]
|
||||
movs r1, #8
|
||||
rsbs r1, r1, #0
|
||||
ands r1, r3
|
||||
mov r3, ip
|
||||
strb r1, [r3]
|
||||
ldrb r1, [r0, #0x1b]
|
||||
ands r2, r1
|
||||
orrs r2, r4
|
||||
strb r2, [r0, #0x1b]
|
||||
movs r1, #0x28
|
||||
bl InitializeAnimation
|
||||
pop {r4, pc}
|
||||
.align 2, 0
|
||||
|
||||
thumb_func_start sub_0808A4D0
|
||||
sub_0808A4D0: @ 0x0808A4D0
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
bl GetNextFrame
|
||||
adds r0, r4, #0
|
||||
bl sub_0806F69C
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x5a
|
||||
ldrb r1, [r0]
|
||||
movs r0, #0x80
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
beq _0808A4F2
|
||||
adds r0, r4, #0
|
||||
bl DeleteEntity
|
||||
_0808A4F2:
|
||||
pop {r4, pc}
|
||||
-240
@@ -1,240 +0,0 @@
|
||||
.include "asm/macros.inc"
|
||||
|
||||
.include "constants/constants.inc"
|
||||
|
||||
.syntax unified
|
||||
|
||||
.text
|
||||
|
||||
|
||||
thumb_func_start Teachers
|
||||
Teachers: @ 0x0806C5A8
|
||||
push {r4, r5, lr}
|
||||
adds r5, r0, #0
|
||||
ldrb r4, [r5, #0xc]
|
||||
cmp r4, #1
|
||||
beq _0806C604
|
||||
cmp r4, #1
|
||||
bgt _0806C5BC
|
||||
cmp r4, #0
|
||||
beq _0806C5C2
|
||||
b _0806C670
|
||||
_0806C5BC:
|
||||
cmp r4, #2
|
||||
beq _0806C656
|
||||
b _0806C670
|
||||
_0806C5C2:
|
||||
ldrb r1, [r5, #0xa]
|
||||
lsls r1, r1, #4
|
||||
ldr r0, _0806C600 @ =gUnk_08113910
|
||||
adds r1, r1, r0
|
||||
adds r0, r5, #0
|
||||
bl LoadExtraSpriteData
|
||||
cmp r0, #0
|
||||
beq _0806C670
|
||||
movs r2, #1
|
||||
movs r0, #1
|
||||
strb r0, [r5, #0xc]
|
||||
ldrb r1, [r5, #0x18]
|
||||
subs r0, #5
|
||||
ands r0, r1
|
||||
orrs r0, r2
|
||||
strb r0, [r5, #0x18]
|
||||
ldrb r0, [r5, #0xe]
|
||||
strb r0, [r5, #0x14]
|
||||
adds r0, r5, #0
|
||||
adds r0, #0x69
|
||||
strb r4, [r0]
|
||||
adds r0, r5, #0
|
||||
movs r1, #2
|
||||
bl sub_0805E3A0
|
||||
adds r0, r5, #0
|
||||
bl sub_0807DD50
|
||||
b _0806C670
|
||||
.align 2, 0
|
||||
_0806C600: .4byte gUnk_08113910
|
||||
_0806C604:
|
||||
adds r2, r5, #0
|
||||
adds r2, #0x39
|
||||
movs r1, #0
|
||||
ldrsb r1, [r2, r1]
|
||||
cmp r1, #2
|
||||
bne _0806C64C
|
||||
movs r0, #0
|
||||
strb r1, [r5, #0xc]
|
||||
strb r0, [r2]
|
||||
adds r4, r5, #0
|
||||
adds r4, #0x58
|
||||
ldrb r0, [r4]
|
||||
adds r1, r5, #0
|
||||
adds r1, #0x69
|
||||
strb r0, [r1]
|
||||
ldr r1, _0806C648 @ =gLinkEntity
|
||||
adds r0, r5, #0
|
||||
bl GetFacingDirection
|
||||
bl sub_0806F5A4
|
||||
ldrb r1, [r4]
|
||||
movs r2, #4
|
||||
rsbs r2, r2, #0
|
||||
ands r1, r2
|
||||
adds r1, r1, r0
|
||||
adds r0, r5, #0
|
||||
bl InitializeAnimation
|
||||
adds r0, r5, #0
|
||||
bl sub_0806F118
|
||||
b _0806C670
|
||||
.align 2, 0
|
||||
_0806C648: .4byte gLinkEntity
|
||||
_0806C64C:
|
||||
adds r0, r5, #0
|
||||
movs r1, #0
|
||||
bl sub_0807DD94
|
||||
b _0806C670
|
||||
_0806C656:
|
||||
adds r0, r5, #0
|
||||
bl UpdateFuseInteraction
|
||||
cmp r0, #0
|
||||
beq _0806C670
|
||||
movs r0, #1
|
||||
strb r0, [r5, #0xc]
|
||||
adds r0, r5, #0
|
||||
adds r0, #0x69
|
||||
ldrb r1, [r0]
|
||||
adds r0, r5, #0
|
||||
bl InitializeAnimation
|
||||
_0806C670:
|
||||
pop {r4, r5, pc}
|
||||
.align 2, 0
|
||||
|
||||
thumb_func_start sub_0806C674
|
||||
sub_0806C674: @ 0x0806C674
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
bl sub_0801E99C
|
||||
adds r1, r4, #0
|
||||
adds r1, #0x68
|
||||
strb r0, [r1]
|
||||
ldrb r1, [r1]
|
||||
adds r0, r4, #0
|
||||
bl sub_08078784
|
||||
pop {r4, pc}
|
||||
|
||||
thumb_func_start Teachers_Head
|
||||
Teachers_Head: @ 0x0806C68C
|
||||
push {r4, r5, r6, lr}
|
||||
adds r4, r0, #0
|
||||
adds r0, #0x5a
|
||||
ldrb r2, [r0]
|
||||
movs r0, #0x81
|
||||
rsbs r0, r0, #0
|
||||
ands r2, r0
|
||||
ldrb r6, [r4, #0x1e]
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x5b
|
||||
ldrb r0, [r0]
|
||||
movs r5, #0x3f
|
||||
ands r5, r0
|
||||
ldrb r0, [r4, #0xa]
|
||||
cmp r0, #0
|
||||
bne _0806C6D2
|
||||
adds r2, #3
|
||||
adds r0, r4, #0
|
||||
movs r1, #0
|
||||
bl SetExtraSpriteFrame
|
||||
adds r0, r4, #0
|
||||
movs r1, #1
|
||||
adds r2, r6, #0
|
||||
bl SetExtraSpriteFrame
|
||||
adds r0, r4, #0
|
||||
movs r1, #1
|
||||
movs r2, #0
|
||||
bl SetSpriteSubEntryOffsetData1
|
||||
adds r0, r4, #0
|
||||
bl sub_0807000C
|
||||
b _0806C70A
|
||||
_0806C6D2:
|
||||
adds r2, #6
|
||||
adds r0, r4, #0
|
||||
movs r1, #0
|
||||
bl SetExtraSpriteFrame
|
||||
adds r2, r5, #3
|
||||
adds r0, r4, #0
|
||||
movs r1, #1
|
||||
bl SetExtraSpriteFrame
|
||||
adds r0, r4, #0
|
||||
movs r1, #2
|
||||
adds r2, r6, #0
|
||||
bl SetExtraSpriteFrame
|
||||
adds r0, r4, #0
|
||||
movs r1, #2
|
||||
movs r2, #1
|
||||
bl SetSpriteSubEntryOffsetData1
|
||||
adds r0, r4, #0
|
||||
movs r1, #2
|
||||
movs r2, #0
|
||||
bl SetSpriteSubEntryOffsetData2
|
||||
adds r0, r4, #0
|
||||
bl sub_0807000C
|
||||
_0806C70A:
|
||||
pop {r4, r5, r6, pc}
|
||||
|
||||
thumb_func_start sub_0806C70C
|
||||
sub_0806C70C: @ 0x0806C70C
|
||||
push {lr}
|
||||
adds r3, r0, #0
|
||||
ldr r0, _0806C730 @ =gUnk_02002A40
|
||||
ldrb r0, [r0, #8]
|
||||
subs r0, #2
|
||||
cmp r0, #0
|
||||
bge _0806C71C
|
||||
movs r0, #0
|
||||
_0806C71C:
|
||||
ldrb r1, [r3, #0xa]
|
||||
lsls r1, r1, #6
|
||||
lsls r0, r0, #3
|
||||
ldr r2, _0806C734 @ =gUnk_08113930
|
||||
adds r0, r0, r2
|
||||
adds r1, r1, r0
|
||||
adds r0, r3, #0
|
||||
bl ShowNPCDialogue
|
||||
pop {pc}
|
||||
.align 2, 0
|
||||
_0806C730: .4byte gUnk_02002A40
|
||||
_0806C734: .4byte gUnk_08113930
|
||||
|
||||
thumb_func_start Teachers_Fusion
|
||||
Teachers_Fusion: @ 0x0806C738
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
ldrb r0, [r4, #0xc]
|
||||
cmp r0, #0
|
||||
bne _0806C778
|
||||
ldrb r1, [r4, #0xa]
|
||||
lsls r1, r1, #4
|
||||
ldr r0, _0806C774 @ =gUnk_08113910
|
||||
adds r1, r1, r0
|
||||
adds r0, r4, #0
|
||||
bl LoadExtraSpriteData
|
||||
cmp r0, #0
|
||||
beq _0806C77E
|
||||
ldrb r0, [r4, #0xc]
|
||||
adds r0, #1
|
||||
strb r0, [r4, #0xc]
|
||||
ldrb r1, [r4, #0x18]
|
||||
movs r0, #4
|
||||
rsbs r0, r0, #0
|
||||
ands r0, r1
|
||||
movs r1, #1
|
||||
orrs r0, r1
|
||||
strb r0, [r4, #0x18]
|
||||
adds r0, r4, #0
|
||||
movs r1, #2
|
||||
bl InitializeAnimation
|
||||
b _0806C77E
|
||||
.align 2, 0
|
||||
_0806C774: .4byte gUnk_08113910
|
||||
_0806C778:
|
||||
adds r0, r4, #0
|
||||
bl GetNextFrame
|
||||
_0806C77E:
|
||||
pop {r4, pc}
|
||||
@@ -608,7 +608,7 @@ SECTIONS {
|
||||
asm/anju.o(.text);
|
||||
asm/mama.o(.text);
|
||||
src/emma.o(.text);
|
||||
asm/teachers.o(.text);
|
||||
src/teachers.o(.text);
|
||||
src/windTribespeople.o(.text);
|
||||
asm/windTribespeople.o(.text);
|
||||
asm/gregal.o(.text);
|
||||
@@ -704,7 +704,7 @@ SECTIONS {
|
||||
asm/object2A.o(.text);
|
||||
asm/object2B.o(.text);
|
||||
asm/beanstalk.o(.text);
|
||||
asm/smoke.o(.text);
|
||||
src/smoke.o(.text);
|
||||
asm/pushableRock.o(.text);
|
||||
asm/hittableLever.o(.text);
|
||||
asm/object30.o(.text);
|
||||
|
||||
+60
@@ -0,0 +1,60 @@
|
||||
#include "global.h"
|
||||
#include "entity.h"
|
||||
|
||||
extern u32 Random(void);
|
||||
extern void CopyPosition(Entity*, Entity*);
|
||||
extern void sub_0806F69C(Entity*);
|
||||
extern void DeleteEntity(Entity*);
|
||||
|
||||
extern void (*const gUnk_08121060[])(Entity*);
|
||||
extern void (*const gUnk_08121070[])(Entity*);
|
||||
|
||||
extern s8 gUnk_08121068[];
|
||||
|
||||
void Smoke(Entity* this) {
|
||||
gUnk_08121060[this->entityType.form](this);
|
||||
}
|
||||
|
||||
void sub_0808A40C(Entity *this)
|
||||
{
|
||||
Entity *ent;
|
||||
|
||||
if (this->action == 0) {
|
||||
this->action = 1;
|
||||
this->actionDelay = 0x28;
|
||||
}
|
||||
if (--this->actionDelay == 0) {
|
||||
this->actionDelay = 0x40 - (Random() & 0x1f);
|
||||
ent = CreateObject(0x2d, 1, 0);
|
||||
if (ent != NULL) {
|
||||
CopyPosition(this,ent);
|
||||
ent->x.HALF.HI += gUnk_08121068[(Random() & 7)];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_0808A46C(Entity *this)
|
||||
{
|
||||
gUnk_08121070[this->action](this);
|
||||
}
|
||||
|
||||
void sub_0808A484(Entity *this)
|
||||
{
|
||||
this->action = 1;
|
||||
this->spriteSettings.b.draw = TRUE;
|
||||
this->nonPlanarMovement = 0x40;
|
||||
this->direction = 6;
|
||||
this->spriteRendering.b3 = 1;
|
||||
this->spritePriority.b0 = 0;
|
||||
this->spriteOrientation.flipY = 1;
|
||||
InitializeAnimation(this, 0x28);
|
||||
}
|
||||
|
||||
void sub_0808A4D0(Entity *this)
|
||||
{
|
||||
GetNextFrame(this);
|
||||
sub_0806F69C(this);
|
||||
if (this->frames.b.f3) {
|
||||
DeleteEntity(this);
|
||||
}
|
||||
}
|
||||
+113
@@ -0,0 +1,113 @@
|
||||
#include "global.h"
|
||||
#include "entity.h"
|
||||
#include "link.h"
|
||||
|
||||
typedef struct {
|
||||
u8 filler[8];
|
||||
u8 unk;
|
||||
} struct_02002A40;
|
||||
|
||||
extern SpriteLoadData gUnk_08113910[];
|
||||
extern void sub_0805E3A0(Entity*, u32);
|
||||
extern void sub_0807DD50(Entity*);
|
||||
extern u32 GetFacingDirection(Entity*, Entity*);
|
||||
extern u32 sub_0806F5A4(u32);
|
||||
extern void sub_0806F118(Entity*);
|
||||
extern void sub_0807DD94(Entity*, u32);
|
||||
extern u32 sub_0801E99C();
|
||||
extern void sub_08078784(Entity*, u32);
|
||||
extern u32 UpdateFuseInteraction(Entity*);
|
||||
extern void sub_0807000C(Entity*);
|
||||
extern void ShowNPCDialogue(Entity*, u16*);
|
||||
|
||||
extern struct_02002A40 gUnk_02002A40;
|
||||
extern u16 gUnk_08113930[];
|
||||
|
||||
void Teachers(Entity* this) {
|
||||
switch (this->action) {
|
||||
case 0:
|
||||
if (LoadExtraSpriteData(this, &gUnk_08113910[this->entityType.form * 4])) {
|
||||
this->action = 1;
|
||||
this->spriteSettings.b.draw = TRUE;
|
||||
this->animationState = this->actionDelay;
|
||||
this->field_0x69 = 0;
|
||||
sub_0805E3A0(this, 2);
|
||||
sub_0807DD50(this);
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if (this->interactType == 2) {
|
||||
this->action = 2;
|
||||
this->interactType = 0;
|
||||
this->field_0x69 = this->animIndex;
|
||||
InitializeAnimation(this,
|
||||
(this->animIndex & -4) + sub_0806F5A4(GetFacingDirection(this, &gLinkEntity)));
|
||||
sub_0806F118(this);
|
||||
} else {
|
||||
sub_0807DD94(this, 0);
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
if (UpdateFuseInteraction(this)) {
|
||||
this->action = 1;
|
||||
InitializeAnimation(this, this->field_0x69);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_0806C674(Entity *this)
|
||||
{
|
||||
this->field_0x68 = sub_0801E99C();
|
||||
sub_08078784(this, this->field_0x68);
|
||||
}
|
||||
|
||||
void Teachers_Head(Entity *this)
|
||||
{
|
||||
u8 bVar1;
|
||||
u8 bVar2;
|
||||
u32 uVar3;
|
||||
|
||||
|
||||
uVar3 = this->frames.all & -0x81;
|
||||
bVar1 = this->frameIndex;
|
||||
bVar2 = this->frameSpriteSettings & 0x3f;
|
||||
if ((this->entityType).form == 0) {
|
||||
SetExtraSpriteFrame(this,0, (uVar3 + 3));
|
||||
SetExtraSpriteFrame(this,1, bVar1);
|
||||
SetSpriteSubEntryOffsetData1(this, 1, 0);
|
||||
sub_0807000C(this);
|
||||
}
|
||||
else {
|
||||
SetExtraSpriteFrame(this, 0, (uVar3 + 6));
|
||||
SetExtraSpriteFrame(this, 1, ((bVar2) + 3));
|
||||
SetExtraSpriteFrame(this, 2, bVar1);
|
||||
SetSpriteSubEntryOffsetData1(this, 2, 1);
|
||||
SetSpriteSubEntryOffsetData2(this, 2, 0);
|
||||
sub_0807000C(this);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_0806C70C(Entity *this)
|
||||
{
|
||||
int offset;
|
||||
|
||||
offset = gUnk_02002A40.unk - 2;
|
||||
if (offset < 0) {
|
||||
offset = 0;
|
||||
}
|
||||
ShowNPCDialogue(this, gUnk_08113930 + this->entityType.form * 0x20 + offset * 4);
|
||||
}
|
||||
|
||||
void Teachers_Fusion(Entity *this)
|
||||
{
|
||||
if (this->action == 0) {
|
||||
if (LoadExtraSpriteData(this, &gUnk_08113910[this->entityType.form * 4])) {
|
||||
this->action++;
|
||||
this->spriteSettings.b.draw = TRUE;
|
||||
InitializeAnimation(this, 2);
|
||||
}
|
||||
}
|
||||
else {
|
||||
GetNextFrame(this);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user