mirror of https://github.com/zeldaret/tmc.git
librari.c OK
This commit is contained in:
parent
2d286c0b34
commit
45298f8a96
246
asm/librari.s
246
asm/librari.s
|
|
@ -1,246 +0,0 @@
|
|||
.include "asm/macros.inc"
|
||||
|
||||
.include "constants/constants.inc"
|
||||
|
||||
.syntax unified
|
||||
|
||||
.text
|
||||
|
||||
|
||||
thumb_func_start Librari
|
||||
Librari: @ 0x0806B1CC
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
ldrb r0, [r4, #0xc]
|
||||
cmp r0, #1
|
||||
beq _0806B21E
|
||||
cmp r0, #1
|
||||
bgt _0806B1E0
|
||||
cmp r0, #0
|
||||
beq _0806B1E6
|
||||
b _0806B25C
|
||||
_0806B1E0:
|
||||
cmp r0, #2
|
||||
beq _0806B24E
|
||||
b _0806B25C
|
||||
_0806B1E6:
|
||||
movs r2, #1
|
||||
movs r0, #1
|
||||
strb r0, [r4, #0xc]
|
||||
ldrb r1, [r4, #0x18]
|
||||
subs r0, #5
|
||||
ands r0, r1
|
||||
orrs r0, r2
|
||||
strb r0, [r4, #0x18]
|
||||
ldrb r0, [r4, #0xe]
|
||||
strb r0, [r4, #0x14]
|
||||
adds r0, r4, #0
|
||||
bl sub_0801E99C
|
||||
adds r1, r4, #0
|
||||
adds r1, #0x68
|
||||
strb r0, [r1]
|
||||
ldrb r1, [r1]
|
||||
adds r0, r4, #0
|
||||
bl sub_08078784
|
||||
adds r0, r4, #0
|
||||
movs r1, #2
|
||||
bl sub_0805E3A0
|
||||
adds r0, r4, #0
|
||||
bl sub_0807DD50
|
||||
b _0806B25C
|
||||
_0806B21E:
|
||||
adds r2, r4, #0
|
||||
adds r2, #0x39
|
||||
movs r1, #0
|
||||
ldrsb r1, [r2, r1]
|
||||
cmp r1, #2
|
||||
bne _0806B238
|
||||
movs r0, #0
|
||||
strb r1, [r4, #0xc]
|
||||
strb r0, [r2]
|
||||
adds r0, r4, #0
|
||||
bl sub_0806F118
|
||||
b _0806B25C
|
||||
_0806B238:
|
||||
adds r0, r4, #0
|
||||
movs r1, #0
|
||||
bl sub_0807DDAC
|
||||
adds r0, r4, #0
|
||||
bl sub_0807DDE4
|
||||
adds r0, r4, #0
|
||||
bl UpdateAnimationSingleFrame
|
||||
b _0806B25C
|
||||
_0806B24E:
|
||||
adds r0, r4, #0
|
||||
bl UpdateFuseInteraction
|
||||
cmp r0, #0
|
||||
beq _0806B25C
|
||||
movs r0, #1
|
||||
strb r0, [r4, #0xc]
|
||||
_0806B25C:
|
||||
pop {r4, pc}
|
||||
.align 2, 0
|
||||
|
||||
thumb_func_start sub_0806B260
|
||||
sub_0806B260: @ 0x0806B260
|
||||
push {r4, r5, r6, lr}
|
||||
adds r6, r0, #0
|
||||
adds r5, r1, #0
|
||||
movs r0, #0
|
||||
str r0, [r5, #0x14]
|
||||
movs r0, #0x46
|
||||
bl GetInventoryValue
|
||||
cmp r0, #0
|
||||
bne _0806B29E
|
||||
movs r0, #0x29
|
||||
bl CheckGlobalFlag
|
||||
cmp r0, #0
|
||||
beq _0806B286
|
||||
movs r4, #2
|
||||
movs r0, #1
|
||||
str r0, [r5, #0x14]
|
||||
b _0806B2A0
|
||||
_0806B286:
|
||||
movs r0, #0x7a
|
||||
bl CheckLocalFlag
|
||||
cmp r0, #0
|
||||
bne _0806B29A
|
||||
movs r4, #0
|
||||
movs r0, #0x7a
|
||||
bl SetLocalFlag
|
||||
b _0806B2A0
|
||||
_0806B29A:
|
||||
movs r4, #1
|
||||
b _0806B2A0
|
||||
_0806B29E:
|
||||
movs r4, #3
|
||||
_0806B2A0:
|
||||
ldr r0, _0806B2B0 @ =gUnk_08112D48
|
||||
lsls r1, r4, #1
|
||||
adds r1, r1, r0
|
||||
ldrh r0, [r1]
|
||||
adds r1, r6, #0
|
||||
bl TextboxNoOverlap
|
||||
pop {r4, r5, r6, pc}
|
||||
.align 2, 0
|
||||
_0806B2B0: .4byte gUnk_08112D48
|
||||
|
||||
thumb_func_start sub_0806B2B4
|
||||
sub_0806B2B4: @ 0x0806B2B4
|
||||
push {r4, r5, lr}
|
||||
adds r5, r0, #0
|
||||
movs r0, #0xb3
|
||||
bl CheckLocalFlag
|
||||
cmp r0, #0
|
||||
beq _0806B314
|
||||
movs r0, #0
|
||||
bl CheckRoomFlag
|
||||
cmp r0, #0
|
||||
bne _0806B2D6
|
||||
movs r4, #1
|
||||
movs r0, #0
|
||||
bl SetRoomFlag
|
||||
b _0806B316
|
||||
_0806B2D6:
|
||||
movs r0, #1
|
||||
bl CheckRoomFlag
|
||||
cmp r0, #0
|
||||
bne _0806B2EA
|
||||
movs r4, #2
|
||||
movs r0, #1
|
||||
bl SetRoomFlag
|
||||
b _0806B316
|
||||
_0806B2EA:
|
||||
movs r0, #2
|
||||
bl CheckRoomFlag
|
||||
cmp r0, #0
|
||||
bne _0806B2FE
|
||||
movs r4, #3
|
||||
movs r0, #2
|
||||
bl SetRoomFlag
|
||||
b _0806B316
|
||||
_0806B2FE:
|
||||
movs r4, #4
|
||||
movs r0, #0
|
||||
bl ClearRoomFlag
|
||||
movs r0, #1
|
||||
bl ClearRoomFlag
|
||||
movs r0, #2
|
||||
bl ClearRoomFlag
|
||||
b _0806B316
|
||||
_0806B314:
|
||||
movs r4, #0
|
||||
_0806B316:
|
||||
ldr r0, _0806B328 @ =gUnk_08112D50
|
||||
lsls r1, r4, #1
|
||||
adds r1, r1, r0
|
||||
ldrh r0, [r1]
|
||||
adds r1, r5, #0
|
||||
bl TextboxNoOverlap
|
||||
pop {r4, r5, pc}
|
||||
.align 2, 0
|
||||
_0806B328: .4byte gUnk_08112D50
|
||||
|
||||
thumb_func_start Librari_Fusion
|
||||
Librari_Fusion: @ 0x0806B32C
|
||||
push {lr}
|
||||
adds r2, r0, #0
|
||||
ldrb r0, [r2, #0xc]
|
||||
cmp r0, #0
|
||||
bne _0806B352
|
||||
adds r0, #1
|
||||
strb r0, [r2, #0xc]
|
||||
ldrb r1, [r2, #0x18]
|
||||
movs r0, #4
|
||||
rsbs r0, r0, #0
|
||||
ands r0, r1
|
||||
movs r1, #1
|
||||
orrs r0, r1
|
||||
strb r0, [r2, #0x18]
|
||||
adds r0, r2, #0
|
||||
movs r1, #9
|
||||
bl InitAnimationForceUpdate
|
||||
b _0806B358
|
||||
_0806B352:
|
||||
adds r0, r2, #0
|
||||
bl UpdateAnimationSingleFrame
|
||||
_0806B358:
|
||||
pop {pc}
|
||||
.align 2, 0
|
||||
|
||||
thumb_func_start Percy_Head
|
||||
Percy_Head: @ 0x0806B35C
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
adds r0, #0x5b
|
||||
ldrb r0, [r0]
|
||||
movs r2, #0x3f
|
||||
ands r2, r0
|
||||
adds r2, #0x13
|
||||
adds r0, r4, #0
|
||||
movs r1, #0
|
||||
bl SetExtraSpriteFrame
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x5a
|
||||
ldrb r0, [r0]
|
||||
movs r2, #0x7f
|
||||
ands r2, r0
|
||||
adds r2, #0xb
|
||||
adds r0, r4, #0
|
||||
movs r1, #1
|
||||
bl SetExtraSpriteFrame
|
||||
ldrb r2, [r4, #0x1e]
|
||||
adds r0, r4, #0
|
||||
movs r1, #2
|
||||
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
|
||||
pop {r4, pc}
|
||||
|
|
@ -595,7 +595,7 @@ SECTIONS {
|
|||
asm/rem.o(.text);
|
||||
src/npc/townMinish.o(.text);
|
||||
asm/townMinish.o(.text);
|
||||
asm/librari.o(.text);
|
||||
src/npc/librari.o(.text);
|
||||
asm/percy.o(.text);
|
||||
asm/vaatiReborn.o(.text);
|
||||
src/npc/moblinLady.o(.text);
|
||||
|
|
|
|||
|
|
@ -0,0 +1,107 @@
|
|||
#include "global.h"
|
||||
#include "entity.h"
|
||||
#include "npc.h"
|
||||
#include "flags.h"
|
||||
#include "textbox.h"
|
||||
#include "functions.h"
|
||||
|
||||
extern u16 gUnk_08112D48[];
|
||||
|
||||
void Librari(Entity* this) {
|
||||
switch (this->action) {
|
||||
case 0:
|
||||
this->action = 1;
|
||||
this->spriteSettings.b.draw = TRUE;
|
||||
this->animationState = this->actionDelay;
|
||||
this->field_0x68 = sub_0801E99C(this);
|
||||
sub_08078784(this, this->field_0x68);
|
||||
sub_0805E3A0(this, 2);
|
||||
sub_0807DD50(this);
|
||||
break;
|
||||
case 1:
|
||||
if (this->interactType == 2) {
|
||||
this->action = 2;
|
||||
this->interactType = 0;
|
||||
sub_0806F118(this);
|
||||
} else {
|
||||
sub_0807DDAC(this, 0);
|
||||
sub_0807DDE4(this);
|
||||
UpdateAnimationSingleFrame(this);
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
if (UpdateFuseInteraction(this)) {
|
||||
this->action = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_0806B260(Entity* this, u32 arg1) {
|
||||
u32 index;
|
||||
|
||||
*(u32*)(arg1 + 0x14) = 0;
|
||||
// flippers
|
||||
if (!GetInventoryValue(0x46)) {
|
||||
if (CheckGlobalFlag(0x29)) {
|
||||
index = 2;
|
||||
*(u32*)(arg1 + 0x14) = 1;
|
||||
} else if (!CheckLocalFlag(0x7a)) {
|
||||
index = 0;
|
||||
SetLocalFlag(0x7a);
|
||||
} else {
|
||||
index = 1;
|
||||
}
|
||||
} else {
|
||||
index = 3;
|
||||
}
|
||||
TextboxNoOverlap(gUnk_08112D48[index], this);
|
||||
}
|
||||
|
||||
extern u16 gUnk_08112D50[];
|
||||
|
||||
void sub_0806b2b4(Entity* this) {
|
||||
u32 index;
|
||||
|
||||
if (CheckLocalFlag(0xb3)) {
|
||||
if (!CheckRoomFlag(0)) {
|
||||
index = 1;
|
||||
SetRoomFlag(0);
|
||||
} else if (!CheckRoomFlag(1)) {
|
||||
index = 2;
|
||||
SetRoomFlag(1);
|
||||
} else if (!CheckRoomFlag(2)) {
|
||||
index = 3;
|
||||
SetRoomFlag(2);
|
||||
} else {
|
||||
index = 4;
|
||||
ClearRoomFlag(0);
|
||||
ClearRoomFlag(1);
|
||||
ClearRoomFlag(2);
|
||||
}
|
||||
} else {
|
||||
index = 0;
|
||||
}
|
||||
TextboxNoOverlap(gUnk_08112D50[index], this);
|
||||
}
|
||||
|
||||
void Librari_Fusion(Entity *this)
|
||||
{
|
||||
if (this->action == 0) {
|
||||
this->action++;
|
||||
this->spriteSettings.b.draw = TRUE;
|
||||
InitAnimationForceUpdate(this, 9);
|
||||
}
|
||||
else {
|
||||
UpdateAnimationSingleFrame(this);
|
||||
}
|
||||
}
|
||||
|
||||
void Percy_Head(Entity *this) // ???
|
||||
{
|
||||
SetExtraSpriteFrame(this, 0, (this->frameSpriteSettings & 0x3f) + 0x13);
|
||||
SetExtraSpriteFrame(this, 1, (this->frames.all & 0x7f) + 0xb);
|
||||
SetExtraSpriteFrame(this, 2, this->frameIndex);
|
||||
SetSpriteSubEntryOffsetData1(this, 2, 1);
|
||||
SetSpriteSubEntryOffsetData2(this, 2, 0);
|
||||
sub_0807000C(this);
|
||||
}
|
||||
Loading…
Reference in New Issue