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);
|
asm/rem.o(.text);
|
||||||
src/npc/townMinish.o(.text);
|
src/npc/townMinish.o(.text);
|
||||||
asm/townMinish.o(.text);
|
asm/townMinish.o(.text);
|
||||||
asm/librari.o(.text);
|
src/npc/librari.o(.text);
|
||||||
asm/percy.o(.text);
|
asm/percy.o(.text);
|
||||||
asm/vaatiReborn.o(.text);
|
asm/vaatiReborn.o(.text);
|
||||||
src/npc/moblinLady.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