librari.c OK

This commit is contained in:
theo3 2020-07-23 23:50:37 -07:00
parent 2d286c0b34
commit 45298f8a96
3 changed files with 108 additions and 247 deletions

View File

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

View File

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

107
src/npc/librari.c Normal file
View File

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