mirror of https://github.com/zeldaret/tmc.git
Decompile the rest of rem
This commit is contained in:
parent
6206ff831a
commit
a9479d5cf2
|
|
@ -1,235 +0,0 @@
|
|||
.syntax unified
|
||||
push {r4, lr}
|
||||
sub sp, #8
|
||||
adds r4, r0, #0
|
||||
ldr r1, _0806A694 @ =gUnk_08112294
|
||||
mov r0, sp
|
||||
movs r2, #8
|
||||
bl memcpy
|
||||
ldrb r3, [r4, #0xc]
|
||||
cmp r3, #1
|
||||
beq _0806A6BE
|
||||
cmp r3, #1
|
||||
bgt _0806A698
|
||||
cmp r3, #0
|
||||
beq _0806A6A0
|
||||
b _0806A82A
|
||||
.align 2, 0
|
||||
_0806A694: .4byte gUnk_08112294
|
||||
_0806A698:
|
||||
cmp r3, #2
|
||||
bne _0806A69E
|
||||
b _0806A824
|
||||
_0806A69E:
|
||||
b _0806A82A
|
||||
_0806A6A0:
|
||||
movs r0, #1
|
||||
strb r0, [r4, #0xc]
|
||||
adds r2, r4, #0
|
||||
adds r2, #0x29
|
||||
ldrb r1, [r2]
|
||||
subs r0, #9
|
||||
ands r0, r1
|
||||
movs r1, #6
|
||||
orrs r0, r1
|
||||
strb r0, [r2]
|
||||
adds r0, r4, #0
|
||||
movs r1, #0x13
|
||||
bl InitializeAnimation
|
||||
b _0806A82A
|
||||
_0806A6BE:
|
||||
ldr r0, _0806A6E0 @ =gActiveScriptInfo
|
||||
ldr r0, [r0]
|
||||
movs r1, #0x80
|
||||
lsls r1, r1, #1
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
beq _0806A6E4
|
||||
movs r0, #0
|
||||
movs r1, #2
|
||||
strb r1, [r4, #0xc]
|
||||
adds r1, r4, #0
|
||||
adds r1, #0x63
|
||||
strb r0, [r1]
|
||||
subs r1, #1
|
||||
strb r0, [r1]
|
||||
b _0806A82A
|
||||
.align 2, 0
|
||||
_0806A6E0: .4byte gActiveScriptInfo
|
||||
_0806A6E4:
|
||||
ldr r0, [r4, #0x50]
|
||||
adds r0, #0x58
|
||||
ldrb r0, [r0]
|
||||
cmp r0, #9
|
||||
bne _0806A7C8
|
||||
adds r2, r4, #0
|
||||
adds r2, #0x29
|
||||
ldrb r0, [r2]
|
||||
movs r1, #8
|
||||
rsbs r1, r1, #0
|
||||
ands r1, r0
|
||||
movs r0, #3
|
||||
orrs r1, r0
|
||||
strb r1, [r2]
|
||||
ldrb r2, [r4, #0xe]
|
||||
cmp r2, #0
|
||||
bne _0806A724
|
||||
bl Random
|
||||
adds r2, r0, #0
|
||||
movs r1, #7
|
||||
ands r0, r1
|
||||
strb r0, [r4, #0xe]
|
||||
lsrs r0, r2, #8
|
||||
movs r1, #7
|
||||
ands r0, r1
|
||||
add r0, sp
|
||||
ldrb r1, [r0]
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x68
|
||||
strb r1, [r0]
|
||||
b _0806A75A
|
||||
_0806A724:
|
||||
ldr r0, _0806A780 @ =gRoomTransition
|
||||
ldr r0, [r0]
|
||||
movs r1, #3
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
bne _0806A75A
|
||||
subs r0, r2, #1
|
||||
strb r0, [r4, #0xe]
|
||||
adds r2, r4, #0
|
||||
adds r2, #0x62
|
||||
movs r0, #0
|
||||
ldrsb r0, [r2, r0]
|
||||
adds r1, r4, #0
|
||||
adds r1, #0x68
|
||||
cmp r0, #0
|
||||
bgt _0806A746
|
||||
strb r3, [r1]
|
||||
_0806A746:
|
||||
movs r0, #0
|
||||
ldrsb r0, [r2, r0]
|
||||
cmp r0, #0xf
|
||||
ble _0806A752
|
||||
movs r0, #0xff
|
||||
strb r0, [r1]
|
||||
_0806A752:
|
||||
ldrb r0, [r1]
|
||||
ldrb r1, [r2]
|
||||
adds r0, r0, r1
|
||||
strb r0, [r2]
|
||||
_0806A75A:
|
||||
ldrb r2, [r4, #0xf]
|
||||
cmp r2, #0
|
||||
bne _0806A784
|
||||
bl Random
|
||||
adds r2, r0, #0
|
||||
movs r1, #7
|
||||
ands r0, r1
|
||||
strb r0, [r4, #0xf]
|
||||
lsrs r0, r2, #8
|
||||
movs r1, #7
|
||||
ands r0, r1
|
||||
add r0, sp
|
||||
ldrb r1, [r0]
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x69
|
||||
strb r1, [r0]
|
||||
b _0806A82A
|
||||
.align 2, 0
|
||||
_0806A780: .4byte gRoomTransition
|
||||
_0806A784:
|
||||
ldr r0, _0806A7C4 @ =gRoomTransition
|
||||
ldr r0, [r0]
|
||||
lsrs r0, r0, #4
|
||||
movs r1, #3
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
bne _0806A82A
|
||||
subs r0, r2, #1
|
||||
strb r0, [r4, #0xf]
|
||||
adds r3, r4, #0
|
||||
adds r3, #0x63
|
||||
movs r0, #0
|
||||
ldrsb r0, [r3, r0]
|
||||
adds r2, r4, #0
|
||||
adds r2, #0x69
|
||||
cmp r0, #0
|
||||
blt _0806A7AA
|
||||
movs r0, #0xff
|
||||
strb r0, [r2]
|
||||
_0806A7AA:
|
||||
movs r1, #0
|
||||
ldrsb r1, [r3, r1]
|
||||
movs r0, #8
|
||||
rsbs r0, r0, #0
|
||||
cmp r1, r0
|
||||
bgt _0806A7BA
|
||||
movs r0, #1
|
||||
strb r0, [r2]
|
||||
_0806A7BA:
|
||||
ldrb r0, [r2]
|
||||
ldrb r1, [r3]
|
||||
adds r0, r0, r1
|
||||
strb r0, [r3]
|
||||
b _0806A82A
|
||||
.align 2, 0
|
||||
_0806A7C4: .4byte gRoomTransition
|
||||
_0806A7C8:
|
||||
adds r2, r4, #0
|
||||
adds r2, #0x29
|
||||
ldrb r0, [r2]
|
||||
movs r1, #8
|
||||
rsbs r1, r1, #0
|
||||
ands r1, r0
|
||||
movs r0, #6
|
||||
orrs r1, r0
|
||||
strb r1, [r2]
|
||||
adds r1, r4, #0
|
||||
adds r1, #0x62
|
||||
ldrb r0, [r1]
|
||||
movs r2, #0
|
||||
ldrsb r2, [r1, r2]
|
||||
cmp r2, #0
|
||||
beq _0806A7FE
|
||||
cmp r2, #0
|
||||
ble _0806A7F0
|
||||
subs r0, #1
|
||||
strb r0, [r1]
|
||||
_0806A7F0:
|
||||
ldrb r2, [r1]
|
||||
movs r0, #0
|
||||
ldrsb r0, [r1, r0]
|
||||
cmp r0, #0
|
||||
bge _0806A7FE
|
||||
adds r0, r2, #1
|
||||
strb r0, [r1]
|
||||
_0806A7FE:
|
||||
adds r1, r4, #0
|
||||
adds r1, #0x63
|
||||
ldrb r0, [r1]
|
||||
movs r2, #0
|
||||
ldrsb r2, [r1, r2]
|
||||
cmp r2, #0
|
||||
beq _0806A82A
|
||||
cmp r2, #0
|
||||
ble _0806A814
|
||||
subs r0, #1
|
||||
strb r0, [r1]
|
||||
_0806A814:
|
||||
ldrb r2, [r1]
|
||||
movs r0, #0
|
||||
ldrsb r0, [r1, r0]
|
||||
cmp r0, #0
|
||||
bge _0806A82A
|
||||
adds r0, r2, #1
|
||||
strb r0, [r1]
|
||||
b _0806A82A
|
||||
_0806A824:
|
||||
adds r0, r4, #0
|
||||
bl GetNextFrame
|
||||
_0806A82A:
|
||||
add sp, #8
|
||||
pop {r4, pc}
|
||||
.align 2, 0
|
||||
.syntax divided
|
||||
|
|
@ -1,153 +0,0 @@
|
|||
.syntax unified
|
||||
push {r4, r5, r6, r7, lr}
|
||||
mov r7, r8
|
||||
push {r7}
|
||||
adds r6, r0, #0
|
||||
adds r5, r1, #0
|
||||
ldrb r0, [r5, #0x18]
|
||||
cmp r0, #1
|
||||
beq _0806AB38
|
||||
cmp r0, #1
|
||||
bgt _0806AA6A
|
||||
cmp r0, #0
|
||||
beq _0806AA70
|
||||
b _0806AB64
|
||||
_0806AA6A:
|
||||
cmp r0, #2
|
||||
beq _0806AB5C
|
||||
b _0806AB64
|
||||
_0806AA70:
|
||||
str r0, [r5, #0x14]
|
||||
movs r0, #0x8f
|
||||
bl CheckLocalFlag
|
||||
cmp r0, #0
|
||||
bne _0806AA84
|
||||
ldr r2, _0806AA80 @ =gUnk_081122A8
|
||||
b _0806AA9A
|
||||
.align 2, 0
|
||||
_0806AA80: .4byte gUnk_081122A8
|
||||
_0806AA84:
|
||||
movs r0, #0x15
|
||||
bl GetInventoryValue
|
||||
cmp r0, #0
|
||||
bne _0806AA98
|
||||
ldr r2, _0806AA94 @ =gUnk_081122B0
|
||||
b _0806AA9A
|
||||
.align 2, 0
|
||||
_0806AA94: .4byte gUnk_081122B0
|
||||
_0806AA98:
|
||||
ldr r2, _0806AAD0 @ =gUnk_081122B8
|
||||
_0806AA9A:
|
||||
ldr r1, _0806AAD4 @ =gRoomVars
|
||||
ldr r0, [r1, #0x68]
|
||||
lsls r0, r0, #1
|
||||
adds r0, r0, r2
|
||||
ldrh r7, [r0]
|
||||
mov r8, r1
|
||||
mov r4, r8
|
||||
ldr r0, [r4, #0x68]
|
||||
adds r0, #1
|
||||
str r0, [r4, #0x68]
|
||||
cmp r0, #2
|
||||
bls _0806AAB6
|
||||
movs r0, #0
|
||||
str r0, [r4, #0x68]
|
||||
_0806AAB6:
|
||||
adds r0, r7, #0
|
||||
adds r1, r6, #0
|
||||
bl MessageNoOverlap
|
||||
ldr r0, [r5, #4]
|
||||
cmp r0, #1
|
||||
beq _0806AAEE
|
||||
cmp r0, #1
|
||||
blo _0806AAD8
|
||||
cmp r0, #2
|
||||
beq _0806AB02
|
||||
b _0806AB1C
|
||||
.align 2, 0
|
||||
_0806AAD0: .4byte gUnk_081122B8
|
||||
_0806AAD4: .4byte gRoomVars
|
||||
_0806AAD8:
|
||||
adds r0, r4, #0
|
||||
adds r0, #0xac
|
||||
str r6, [r0]
|
||||
adds r0, r6, #0
|
||||
movs r1, #7
|
||||
bl PrependEntityToList
|
||||
movs r0, #0xc0
|
||||
lsls r0, r0, #9
|
||||
str r0, [r6, #0x20]
|
||||
b _0806AB1C
|
||||
_0806AAEE:
|
||||
adds r0, r4, #0
|
||||
adds r0, #0xac
|
||||
ldr r0, [r0]
|
||||
movs r1, #7
|
||||
bl FindNextDuplicateID
|
||||
adds r1, r0, #0
|
||||
adds r0, r4, #0
|
||||
adds r0, #0xb0
|
||||
b _0806AB14
|
||||
_0806AB02:
|
||||
mov r0, r8
|
||||
adds r0, #0xb0
|
||||
ldr r0, [r0]
|
||||
movs r1, #7
|
||||
bl FindNextDuplicateID
|
||||
adds r1, r0, #0
|
||||
mov r0, r8
|
||||
adds r0, #0xb4
|
||||
_0806AB14:
|
||||
str r1, [r0]
|
||||
movs r0, #0xc0
|
||||
lsls r0, r0, #9
|
||||
str r0, [r1, #0x20]
|
||||
_0806AB1C:
|
||||
ldr r0, _0806AB34 @ =0x0000441E
|
||||
cmp r7, r0
|
||||
bne _0806AB2C
|
||||
movs r0, #0x8f
|
||||
bl SetLocalFlag
|
||||
movs r0, #1
|
||||
str r0, [r5, #0x14]
|
||||
_0806AB2C:
|
||||
movs r0, #1
|
||||
strb r0, [r5, #0x18]
|
||||
b _0806AB64
|
||||
.align 2, 0
|
||||
_0806AB34: .4byte 0x0000441E
|
||||
_0806AB38:
|
||||
ldr r0, _0806AB58 @ =gRoomVars
|
||||
ldr r1, [r5, #4]
|
||||
lsls r1, r1, #2
|
||||
adds r0, #0xac
|
||||
adds r1, r1, r0
|
||||
ldr r1, [r1]
|
||||
movs r2, #0x36
|
||||
ldrsh r0, [r1, r2]
|
||||
cmp r0, #0
|
||||
blt _0806AB64
|
||||
movs r0, #0xc0
|
||||
lsls r0, r0, #9
|
||||
str r0, [r1, #0x20]
|
||||
movs r0, #2
|
||||
strb r0, [r5, #0x18]
|
||||
b _0806AB64
|
||||
.align 2, 0
|
||||
_0806AB58: .4byte gRoomVars
|
||||
_0806AB5C:
|
||||
movs r1, #0x36
|
||||
ldrsh r0, [r6, r1]
|
||||
cmp r0, #0
|
||||
bge _0806AB6A
|
||||
_0806AB64:
|
||||
ldr r1, _0806AB70 @ =gActiveScriptInfo
|
||||
movs r0, #0
|
||||
strb r0, [r1, #6]
|
||||
_0806AB6A:
|
||||
pop {r3}
|
||||
mov r8, r3
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
.align 2, 0
|
||||
_0806AB70: .4byte gActiveScriptInfo
|
||||
.syntax divided
|
||||
|
|
@ -39028,36 +39028,6 @@
|
|||
"size": 22,
|
||||
"type": "animation"
|
||||
},
|
||||
{
|
||||
"path": "rem/gUnk_08112294.bin",
|
||||
"start": 1122964,
|
||||
"size": 8
|
||||
},
|
||||
{
|
||||
"path": "rem/gUnk_0811229C.bin",
|
||||
"start": 1122972,
|
||||
"size": 4
|
||||
},
|
||||
{
|
||||
"path": "rem/gUnk_081122A0.bin",
|
||||
"start": 1122976,
|
||||
"size": 8
|
||||
},
|
||||
{
|
||||
"path": "rem/gUnk_081122A8.bin",
|
||||
"start": 1122984,
|
||||
"size": 8
|
||||
},
|
||||
{
|
||||
"path": "rem/gUnk_081122B0.bin",
|
||||
"start": 1122992,
|
||||
"size": 8
|
||||
},
|
||||
{
|
||||
"path": "rem/gUnk_081122B8.bin",
|
||||
"start": 1123000,
|
||||
"size": 8
|
||||
},
|
||||
{
|
||||
"path": "animations/gSpriteAnimations_TownMinish_0.bin",
|
||||
"start": 1125480,
|
||||
|
|
|
|||
|
|
@ -1,40 +0,0 @@
|
|||
.include "asm/macros.inc"
|
||||
.include "constants/constants.inc"
|
||||
|
||||
.section .rodata
|
||||
.align 2
|
||||
|
||||
gUnk_08112260:: @ 08112260
|
||||
.4byte sub_0806a370
|
||||
.4byte sub_0806A5E8
|
||||
.4byte sub_0806A630
|
||||
.4byte sub_0806A674
|
||||
.4byte sub_0806A830
|
||||
.4byte sub_0806A890
|
||||
|
||||
gUnk_08112278:: @ 08112278
|
||||
.4byte sub_0806A3D8
|
||||
.4byte sub_0806A410
|
||||
.4byte sub_0806A458
|
||||
.4byte sub_0806A4CC
|
||||
.4byte sub_0806A550
|
||||
.4byte nullsub_503
|
||||
.4byte sub_0806A5C0
|
||||
|
||||
gUnk_08112294:: @ 08112294
|
||||
.incbin "rem/gUnk_08112294.bin"
|
||||
|
||||
gUnk_0811229C:: @ 0811229C
|
||||
.incbin "rem/gUnk_0811229C.bin"
|
||||
|
||||
gUnk_081122A0:: @ 081122A0
|
||||
.incbin "rem/gUnk_081122A0.bin"
|
||||
|
||||
gUnk_081122A8:: @ 081122A8
|
||||
.incbin "rem/gUnk_081122A8.bin"
|
||||
|
||||
gUnk_081122B0:: @ 081122B0
|
||||
.incbin "rem/gUnk_081122B0.bin"
|
||||
|
||||
gUnk_081122B8:: @ 081122B8
|
||||
.incbin "rem/gUnk_081122B8.bin"
|
||||
|
|
@ -1256,7 +1256,7 @@ SECTIONS {
|
|||
data/animations/npc/dog.o(.rodata);
|
||||
data/const/npc/syrup.o(.rodata);
|
||||
data/animations/npc/syrup.o(.rodata);
|
||||
data/const/npc/rem.o(.rodata);
|
||||
src/npc/rem.o(.rodata);
|
||||
data/animations/npc/rem.o(.rodata);
|
||||
data/const/npc/townMinish.o(.rodata);
|
||||
data/animations/npc/townMinish.o(.rodata);
|
||||
|
|
|
|||
205
src/npc/rem.c
205
src/npc/rem.c
|
|
@ -1,57 +1,66 @@
|
|||
#include "functions.h"
|
||||
#include "npc.h"
|
||||
#include "item.h"
|
||||
|
||||
extern void sub_0806A8C8(Entity*);
|
||||
|
||||
extern void (*gUnk_08112260[])(Entity*);
|
||||
extern void (*gUnk_08112278[])(Entity*);
|
||||
|
||||
extern void script_Rem;
|
||||
|
||||
extern u32 gUnk_0811229C;
|
||||
|
||||
extern void sub_0807F950(Entity* this, ScriptExecutionContext* context);
|
||||
|
||||
extern u8 gUnk_081122A0[];
|
||||
|
||||
void sub_0806A9B0(Entity*, ScriptExecutionContext*);
|
||||
|
||||
void sub_0806A914(Entity* this);
|
||||
|
||||
void sub_0806a370(Entity* this);
|
||||
void sub_0806A5E8(Entity* this);
|
||||
void sub_0806A630(Entity* this);
|
||||
void sub_0806A674(Entity* this);
|
||||
void sub_0806A830(Entity* this);
|
||||
void sub_0806A890(Entity* this);
|
||||
|
||||
void sub_0806A3D8(Entity* this);
|
||||
void sub_0806A410(Entity* this);
|
||||
void sub_0806A458(Entity* this);
|
||||
void sub_0806A4CC(Entity* this);
|
||||
void sub_0806A550(Entity* this);
|
||||
void nullsub_503(Entity* this);
|
||||
void sub_0806A5C0(Entity* this);
|
||||
|
||||
void Rem(Entity* this) {
|
||||
gUnk_08112260[this->type](this);
|
||||
static void (*const typeFuncs[])(Entity*) = {
|
||||
sub_0806a370, sub_0806A5E8, sub_0806A630, sub_0806A674, sub_0806A830, sub_0806A890,
|
||||
};
|
||||
typeFuncs[this->type](this);
|
||||
}
|
||||
|
||||
void sub_0806a370(Entity* this) {
|
||||
u8* pbVar1;
|
||||
static void (*const actionFuncs[])(Entity*) = {
|
||||
sub_0806A3D8, sub_0806A410, sub_0806A458, sub_0806A4CC, sub_0806A550, nullsub_503, sub_0806A5C0,
|
||||
};
|
||||
|
||||
gUnk_08112278[this->action](this);
|
||||
actionFuncs[this->action](this);
|
||||
ExecuteScriptForEntity(this, NULL);
|
||||
HandleEntity0x82Actions(this);
|
||||
UpdateAnimationSingleFrame(this);
|
||||
sub_0806ED78(this);
|
||||
if (this->animIndex == 0xf) {
|
||||
pbVar1 = &this->frame;
|
||||
if (*pbVar1 == 1) {
|
||||
*pbVar1 = 0;
|
||||
if (this->frame == 1) {
|
||||
this->frame = 0;
|
||||
SoundReq(SFX_218);
|
||||
}
|
||||
if (*pbVar1 == 2) {
|
||||
*pbVar1 = 0;
|
||||
if (this->frame == 2) {
|
||||
this->frame = 0;
|
||||
SoundReq(SFX_219);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_0806A3D8(Entity* this) {
|
||||
ScriptExecutionContext* uVar1;
|
||||
|
||||
this->action = 1;
|
||||
this->actionDelay = 0xb4;
|
||||
SetDefaultPriority(this, PRIO_MESSAGE);
|
||||
sub_0806A8C8(this);
|
||||
uVar1 = StartCutscene(this, &script_Rem);
|
||||
*(ScriptExecutionContext**)&this->cutsceneBeh = uVar1;
|
||||
*(ScriptExecutionContext**)&this->cutsceneBeh = StartCutscene(this, &script_Rem);
|
||||
sub_0807DD94(this, NULL);
|
||||
}
|
||||
|
||||
|
|
@ -59,7 +68,7 @@ void sub_0806A410(Entity* this) {
|
|||
switch (this->subAction) {
|
||||
case 0:
|
||||
if (--this->actionDelay == 0) {
|
||||
this->subAction = this->subAction + 1;
|
||||
this->subAction++;
|
||||
InitializeAnimation(this, 8);
|
||||
}
|
||||
break;
|
||||
|
|
@ -143,7 +152,7 @@ void sub_0806A550(Entity* this) {
|
|||
}
|
||||
}
|
||||
|
||||
void nullsub_503(void) {
|
||||
void nullsub_503(Entity* this) {
|
||||
}
|
||||
|
||||
void sub_0806A5C0(Entity* this) {
|
||||
|
|
@ -181,7 +190,88 @@ void sub_0806A630(Entity* this) {
|
|||
}
|
||||
}
|
||||
|
||||
ASM_FUNC("asm/non_matching/rem/sub_0806A674.inc", void sub_0806A674(Entity* this))
|
||||
void sub_0806A674(Entity* this) {
|
||||
static const u8 gUnk_08112294[] = { 0, -1, 0, 1, 0, -1, 0, 1 };
|
||||
u32 rand;
|
||||
u8 auStack16[8];
|
||||
|
||||
memcpy(auStack16, &gUnk_08112294, 8);
|
||||
switch (this->action) {
|
||||
case 0:
|
||||
this->action = 1;
|
||||
this->spritePriority.b0 = 6;
|
||||
InitializeAnimation(this, 0x13);
|
||||
break;
|
||||
case 1:
|
||||
if ((gActiveScriptInfo.syncFlags & 0x100) != 0) {
|
||||
this->action = 2;
|
||||
this->spriteOffsetY = 0;
|
||||
this->spriteOffsetX = 0;
|
||||
} else {
|
||||
if (this->parent->animIndex == 9) {
|
||||
this->spritePriority.b0 = 3;
|
||||
|
||||
if (this->actionDelay == 0) {
|
||||
rand = Random();
|
||||
this->actionDelay = rand & 7;
|
||||
this->field_0x68.HALF.LO = auStack16[rand >> 8 & 7];
|
||||
} else if ((gRoomTransition.frameCount & 3U) == 0) {
|
||||
this->actionDelay--;
|
||||
if ((s8)this->spriteOffsetX < 1) {
|
||||
this->field_0x68.HALF.LO = 1;
|
||||
}
|
||||
|
||||
if (0xf < (s8)this->spriteOffsetX) {
|
||||
this->field_0x68.HALF.LO = -1;
|
||||
}
|
||||
this->spriteOffsetX += this->field_0x68.HALF.LO;
|
||||
}
|
||||
|
||||
if (this->field_0xf == 0) {
|
||||
rand = Random();
|
||||
this->field_0xf = rand & 7;
|
||||
this->field_0x68.HALF.HI = auStack16[rand >> 8 & 7];
|
||||
} else if (((u32)gRoomTransition.frameCount >> 4 & 3) == 0) {
|
||||
this->field_0xf--;
|
||||
if (-1 < this->spriteOffsetY) {
|
||||
this->field_0x68.HALF.HI = -1;
|
||||
}
|
||||
|
||||
if (this->spriteOffsetY <= -8) {
|
||||
this->field_0x68.HALF.HI = 1;
|
||||
}
|
||||
this->spriteOffsetY += this->field_0x68.HALF.HI;
|
||||
}
|
||||
} else {
|
||||
this->spritePriority.b0 = 6;
|
||||
if ((s8)this->spriteOffsetX != 0) {
|
||||
if (0 < (s8)this->spriteOffsetX) {
|
||||
this->spriteOffsetX--;
|
||||
}
|
||||
|
||||
if ((s8)this->spriteOffsetX < 0) {
|
||||
this->spriteOffsetX++;
|
||||
}
|
||||
}
|
||||
|
||||
if (this->spriteOffsetY != 0) {
|
||||
if (0 < this->spriteOffsetY) {
|
||||
this->spriteOffsetY--;
|
||||
}
|
||||
|
||||
if (this->spriteOffsetY < 0) {
|
||||
this->spriteOffsetY++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
case 2:
|
||||
GetNextFrame(this);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_0806A830(Entity* this) {
|
||||
Entity* npc;
|
||||
|
|
@ -239,6 +329,7 @@ void sub_0806A914(Entity* this) {
|
|||
}
|
||||
|
||||
void sub_0806A93C(Entity* this) {
|
||||
static const u8 gUnk_0811229C[] = { 0, 6, 10, 16 };
|
||||
sub_08078778(this);
|
||||
sub_08078850(this, 0, 0, &gUnk_0811229C);
|
||||
}
|
||||
|
|
@ -266,6 +357,7 @@ void sub_0806A96C(Entity* this, ScriptExecutionContext* context) {
|
|||
}
|
||||
|
||||
void sub_0806A9B0(Entity* this, ScriptExecutionContext* context) {
|
||||
static const u8 gUnk_081122A0[] = { 60, 100, 200, 60, 100, 200, 80, 80 };
|
||||
this->action = 2;
|
||||
this->subAction = 0;
|
||||
this->actionDelay = gUnk_081122A0[Random() & 7];
|
||||
|
|
@ -290,7 +382,7 @@ void sub_0806AA18(Entity* this) {
|
|||
u32 index;
|
||||
if (this->field_0x6a.HWORD != 0) {
|
||||
index = 0x4408;
|
||||
} else if ((gRoomTransition.frameCount & 1U) == 0) {
|
||||
} else if ((gRoomTransition.frameCount & 1) == 0) {
|
||||
index = 0x4407;
|
||||
} else {
|
||||
index = 0x440d;
|
||||
|
|
@ -298,7 +390,68 @@ void sub_0806AA18(Entity* this) {
|
|||
MessageNoOverlap(index, this);
|
||||
}
|
||||
|
||||
ASM_FUNC("asm/non_matching/rem/sub_0806AA50.inc", void sub_0806AA50(Entity* this, ScriptExecutionContext* context))
|
||||
void sub_0806AA50(Entity* this, ScriptExecutionContext* context) {
|
||||
static const u16 gUnk_081122A8[] = { 0x441c, 0x441d, 0x441e, 0 };
|
||||
static const u16 gUnk_081122B0[] = { 0x441f, 0x4420, 0x4421, 0 };
|
||||
static const u16 gUnk_081122B8[] = { 0x4410, 0x4411, 0x4412, 0 };
|
||||
s32 messageIndex;
|
||||
Entity* pEnt;
|
||||
|
||||
switch (context->unk_18) {
|
||||
case 0:
|
||||
context->condition = 0;
|
||||
if (CheckLocalFlag(0x8f) == 0) {
|
||||
messageIndex = gUnk_081122A8[gRoomVars.animFlags];
|
||||
} else if (GetInventoryValue(ITEM_PEGASUS_BOOTS) == 0) {
|
||||
messageIndex = gUnk_081122B0[gRoomVars.animFlags];
|
||||
} else {
|
||||
messageIndex = gUnk_081122B8[gRoomVars.animFlags];
|
||||
}
|
||||
|
||||
if (++gRoomVars.animFlags > 2) {
|
||||
gRoomVars.animFlags = 0;
|
||||
}
|
||||
MessageNoOverlap(messageIndex, this);
|
||||
switch (context->intVariable) {
|
||||
case 0:
|
||||
gRoomVars.field_0xac[0] = this;
|
||||
PrependEntityToList(this, NPC);
|
||||
this->zVelocity = 0x18000;
|
||||
break;
|
||||
case 1:
|
||||
pEnt = FindNextDuplicateID(gRoomVars.field_0xac[0], NPC);
|
||||
gRoomVars.field_0xac[1] = pEnt;
|
||||
pEnt->zVelocity = 0x18000;
|
||||
break;
|
||||
case 2:
|
||||
pEnt = FindNextDuplicateID(gRoomVars.field_0xac[1], NPC);
|
||||
gRoomVars.field_0xac[2] = pEnt;
|
||||
pEnt->zVelocity = 0x18000;
|
||||
break;
|
||||
}
|
||||
if (messageIndex == 0x441e) {
|
||||
SetLocalFlag(0x8f);
|
||||
context->condition = 1;
|
||||
}
|
||||
context->unk_18 = 1;
|
||||
break;
|
||||
case 1:
|
||||
pEnt = ((Entity*)gRoomVars.field_0xac[context->intVariable]);
|
||||
if (pEnt->z.HALF.HI < 0) {
|
||||
break;
|
||||
}
|
||||
pEnt->zVelocity = 0x18000;
|
||||
context->unk_18 = 2;
|
||||
break;
|
||||
case 2:
|
||||
if (this->z.HALF.HI >= 0) {
|
||||
return;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
gActiveScriptInfo.commandSize = 0;
|
||||
}
|
||||
|
||||
void sub_0806AB74(Entity* this) {
|
||||
gRoomVars.field_0x3 = 1;
|
||||
|
|
@ -308,7 +461,7 @@ void sub_0806AB74(Entity* this) {
|
|||
}
|
||||
|
||||
void sub_0806AB9C(Entity* this, ScriptExecutionContext* context) {
|
||||
Entity* entity = FindEntity(NPC, REM, 7, 1, 0);
|
||||
Entity* entity = FindEntity(NPC, REM, NPC, 1, 0);
|
||||
if (entity != NULL) {
|
||||
DeleteEntity(entity);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue