From 30232481d99f9dbd97a7e676c6558bfc677f2e05 Mon Sep 17 00:00:00 2001 From: octorock <79596758+octorock@users.noreply.github.com> Date: Sat, 8 May 2021 00:25:17 +0200 Subject: [PATCH 1/6] Decompile din, farore and nayru --- asm/din.s | 139 ----------------------------------------------- asm/farore.s | 139 ----------------------------------------------- asm/nayru.s | 139 ----------------------------------------------- include/save.h | 3 +- linker.ld | 3 +- src/npc/din.c | 53 ++++++++++++++++++ src/npc/farore.c | 53 ++++++++++++++++++ src/npc/nayru.c | 53 ++++++++++++++++++ 8 files changed, 163 insertions(+), 419 deletions(-) delete mode 100644 asm/din.s delete mode 100644 asm/farore.s delete mode 100644 asm/nayru.s create mode 100644 src/npc/din.c create mode 100644 src/npc/farore.c create mode 100644 src/npc/nayru.c diff --git a/asm/din.s b/asm/din.s deleted file mode 100644 index 7a2fc2ad..00000000 --- a/asm/din.s +++ /dev/null @@ -1,139 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - - thumb_func_start Din -Din: @ 0x08064790 - push {r4, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xc] - cmp r0, #1 - beq _080647C2 - cmp r0, #1 - bgt _080647A4 - cmp r0, #0 - beq _080647AA - b _08064824 -_080647A4: - cmp r0, #2 - beq _0806480A - b _08064824 -_080647AA: - 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] - adds r0, r4, #0 - bl sub_0807DD50 - b _08064824 -_080647C2: - adds r2, r4, #0 - adds r2, #0x39 - movs r1, #0 - ldrsb r1, [r2, r1] - cmp r1, #2 - bne _08064800 - movs r0, #0 - strb r1, [r4, #0xc] - strb r0, [r2] - adds r0, r4, #0 - bl sub_0806F118 - adds r0, r4, #0 - adds r0, #0x58 - ldrb r1, [r0] - adds r0, #0x10 - strb r1, [r0] - ldr r1, _080647FC @ =gPlayerEntity - adds r0, r4, #0 - bl GetFacingDirection - bl sub_0806F5A4 - adds r1, r0, #0 - adds r0, r4, #0 - bl InitAnimationForceUpdate - b _08064824 - .align 2, 0 -_080647FC: .4byte gPlayerEntity -_08064800: - adds r0, r4, #0 - movs r1, #0 - bl sub_0807DD94 - b _08064824 -_0806480A: - adds r0, r4, #0 - bl UpdateFuseInteraction - cmp r0, #0 - beq _08064824 - movs r0, #1 - strb r0, [r4, #0xc] - adds r0, r4, #0 - adds r0, #0x68 - ldrb r1, [r0] - adds r0, r4, #0 - bl InitAnimationForceUpdate -_08064824: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_08064828 -sub_08064828: @ 0x08064828 - push {r4, r5, r6, lr} - adds r4, r0, #0 - bl sub_0801E99C - adds r5, r0, #0 - ldr r6, _08064858 @ =gSave - adds r0, r4, #0 - bl sub_08002632 - ldr r2, _0806485C @ =0x00000141 - adds r1, r6, r2 - adds r0, r0, r1 - ldrb r0, [r0] - cmp r0, #0 - beq _0806484E - ldrb r0, [r6, #8] - cmp r0, #6 - bhi _0806484E - movs r5, #0 -_0806484E: - adds r0, r4, #0 - adds r1, r5, #0 - bl sub_08078784 - pop {r4, r5, r6, pc} - .align 2, 0 -_08064858: .4byte gSave -_0806485C: .4byte 0x00000141 - - thumb_func_start Din_Fusion -Din_Fusion: @ 0x08064860 - push {lr} - adds r2, r0, #0 - ldrb r0, [r2, #0xc] - cmp r0, #0 - bne _08064886 - 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, #6 - bl InitAnimationForceUpdate - b _0806488C -_08064886: - adds r0, r2, #0 - bl UpdateAnimationSingleFrame -_0806488C: - pop {pc} - .align 2, 0 diff --git a/asm/farore.s b/asm/farore.s deleted file mode 100644 index 2f0d6d1e..00000000 --- a/asm/farore.s +++ /dev/null @@ -1,139 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - - thumb_func_start Farore -Farore: @ 0x08064990 - push {r4, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xc] - cmp r0, #1 - beq _080649C2 - cmp r0, #1 - bgt _080649A4 - cmp r0, #0 - beq _080649AA - b _08064A24 -_080649A4: - cmp r0, #2 - beq _08064A0A - b _08064A24 -_080649AA: - 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] - adds r0, r4, #0 - bl sub_0807DD50 - b _08064A24 -_080649C2: - adds r2, r4, #0 - adds r2, #0x39 - movs r1, #0 - ldrsb r1, [r2, r1] - cmp r1, #2 - bne _08064A00 - movs r0, #0 - strb r1, [r4, #0xc] - strb r0, [r2] - adds r0, r4, #0 - bl sub_0806F118 - adds r0, r4, #0 - adds r0, #0x58 - ldrb r1, [r0] - adds r0, #0x10 - strb r1, [r0] - ldr r1, _080649FC @ =gPlayerEntity - adds r0, r4, #0 - bl GetFacingDirection - bl sub_0806F5A4 - adds r1, r0, #0 - adds r0, r4, #0 - bl InitAnimationForceUpdate - b _08064A24 - .align 2, 0 -_080649FC: .4byte gPlayerEntity -_08064A00: - adds r0, r4, #0 - movs r1, #0 - bl sub_0807DD94 - b _08064A24 -_08064A0A: - adds r0, r4, #0 - bl UpdateFuseInteraction - cmp r0, #0 - beq _08064A24 - movs r0, #1 - strb r0, [r4, #0xc] - adds r0, r4, #0 - adds r0, #0x68 - ldrb r1, [r0] - adds r0, r4, #0 - bl InitAnimationForceUpdate -_08064A24: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_08064A28 -sub_08064A28: @ 0x08064A28 - push {r4, r5, r6, lr} - adds r4, r0, #0 - bl sub_0801E99C - adds r5, r0, #0 - ldr r6, _08064A58 @ =gSave - adds r0, r4, #0 - bl sub_08002632 - ldr r2, _08064A5C @ =0x00000141 - adds r1, r6, r2 - adds r0, r0, r1 - ldrb r0, [r0] - cmp r0, #0 - beq _08064A4E - ldrb r0, [r6, #8] - cmp r0, #6 - bhi _08064A4E - movs r5, #0 -_08064A4E: - adds r0, r4, #0 - adds r1, r5, #0 - bl sub_08078784 - pop {r4, r5, r6, pc} - .align 2, 0 -_08064A58: .4byte gSave -_08064A5C: .4byte 0x00000141 - - thumb_func_start Farore_Fusion -Farore_Fusion: @ 0x08064A60 - push {lr} - adds r2, r0, #0 - ldrb r0, [r2, #0xc] - cmp r0, #0 - bne _08064A86 - 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, #6 - bl InitAnimationForceUpdate - b _08064A8C -_08064A86: - adds r0, r2, #0 - bl UpdateAnimationSingleFrame -_08064A8C: - pop {pc} - .align 2, 0 diff --git a/asm/nayru.s b/asm/nayru.s deleted file mode 100644 index 004b0834..00000000 --- a/asm/nayru.s +++ /dev/null @@ -1,139 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - - thumb_func_start Nayru -Nayru: @ 0x08064890 - push {r4, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xc] - cmp r0, #1 - beq _080648C2 - cmp r0, #1 - bgt _080648A4 - cmp r0, #0 - beq _080648AA - b _08064924 -_080648A4: - cmp r0, #2 - beq _0806490A - b _08064924 -_080648AA: - 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] - adds r0, r4, #0 - bl sub_0807DD50 - b _08064924 -_080648C2: - adds r2, r4, #0 - adds r2, #0x39 - movs r1, #0 - ldrsb r1, [r2, r1] - cmp r1, #2 - bne _08064900 - movs r0, #0 - strb r1, [r4, #0xc] - strb r0, [r2] - adds r0, r4, #0 - bl sub_0806F118 - adds r0, r4, #0 - adds r0, #0x58 - ldrb r1, [r0] - adds r0, #0x10 - strb r1, [r0] - ldr r1, _080648FC @ =gPlayerEntity - adds r0, r4, #0 - bl GetFacingDirection - bl sub_0806F5A4 - adds r1, r0, #0 - adds r0, r4, #0 - bl InitAnimationForceUpdate - b _08064924 - .align 2, 0 -_080648FC: .4byte gPlayerEntity -_08064900: - adds r0, r4, #0 - movs r1, #0 - bl sub_0807DD94 - b _08064924 -_0806490A: - adds r0, r4, #0 - bl UpdateFuseInteraction - cmp r0, #0 - beq _08064924 - movs r0, #1 - strb r0, [r4, #0xc] - adds r0, r4, #0 - adds r0, #0x68 - ldrb r1, [r0] - adds r0, r4, #0 - bl InitAnimationForceUpdate -_08064924: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_08064928 -sub_08064928: @ 0x08064928 - push {r4, r5, r6, lr} - adds r4, r0, #0 - bl sub_0801E99C - adds r5, r0, #0 - ldr r6, _08064958 @ =gSave - adds r0, r4, #0 - bl sub_08002632 - ldr r2, _0806495C @ =0x00000141 - adds r1, r6, r2 - adds r0, r0, r1 - ldrb r0, [r0] - cmp r0, #0 - beq _0806494E - ldrb r0, [r6, #8] - cmp r0, #6 - bhi _0806494E - movs r5, #0 -_0806494E: - adds r0, r4, #0 - adds r1, r5, #0 - bl sub_08078784 - pop {r4, r5, r6, pc} - .align 2, 0 -_08064958: .4byte gSave -_0806495C: .4byte 0x00000141 - - thumb_func_start Nayru_Fusion -Nayru_Fusion: @ 0x08064960 - push {lr} - adds r2, r0, #0 - ldrb r0, [r2, #0xc] - cmp r0, #0 - bne _08064986 - 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, #6 - bl InitAnimationForceUpdate - b _0806498C -_08064986: - adds r0, r2, #0 - bl UpdateAnimationSingleFrame -_0806498C: - pop {pc} - .align 2, 0 diff --git a/include/save.h b/include/save.h index 6bc0819c..40434f8b 100644 --- a/include/save.h +++ b/include/save.h @@ -37,7 +37,8 @@ typedef struct { /*0x080*/ u8 playerName[FILENAME_LENGTH]; /*0x086*/ u8 filler86[0x22]; /*0x0A8*/ Stats stats; - /*0x0D0*/ u8 fillerD0[0x3c0]; + /*0x0D0*/ u8 fillerD0[0x71]; + /*0x141*/ u8 unk141[0x34f]; /*0x490*/ u32 unk490; /*0x494*/ u8 filler494[0x20]; } SaveFile; diff --git a/linker.ld b/linker.ld index fc72936e..6707cd9a 100644 --- a/linker.ld +++ b/linker.ld @@ -554,6 +554,7 @@ SECTIONS { src/npc/forestMinish.o(.text); src/npc/postman.o(.text); asm/postman.o(.text); + src/npc/npc5.o(.text); asm/npc5.o(.text); src/npc/townsperson.o(.text); asm/kid.o(.text); @@ -571,7 +572,7 @@ SECTIONS { src/npc/guard.o(.text); asm/guardWithSpear.o(.text); asm/castleMaid.o(.text); - asm/din.o(.text); + src/npc/din.o(.text); asm/nayru.o(.text); asm/farore.o(.text); asm/sturgeon.o(.text); diff --git a/src/npc/din.c b/src/npc/din.c new file mode 100644 index 00000000..2800f883 --- /dev/null +++ b/src/npc/din.c @@ -0,0 +1,53 @@ +#include "global.h" +#include "entity.h" +#include "npc.h" +#include "script.h" +#include "functions.h" +#include "save.h" + +extern u32 sub_08002632(Entity*); + +void Din(Entity* this) { + switch(this->action) { + case 0: + this->action = 1; + this->spriteSettings.b.draw = 1; + sub_0807DD50(this); + break; + case 1: + if (this->interactType ==2) { + this->action = 2; + this->interactType = 0; + sub_0806F118(this); + this->field_0x68.HALF.LO = this->animIndex; + InitAnimationForceUpdate(this, sub_0806F5A4(GetFacingDirection(this, &gPlayerEntity))); + } else { + sub_0807DD94(this, NULL); + } + break; + case 2: + if (UpdateFuseInteraction(this) != 0) { + this->action = 1; + InitAnimationForceUpdate(this, this->field_0x68.HALF.LO); + } + break; + } +} + +void sub_08064828(Entity* this) { + u32 tmp = sub_0801E99C(this); + if ((gSave.unk141[sub_08002632(this)] != 0) && (gSave.unk8 < 7)) { + tmp = 0; + } + sub_08078784(this, tmp); +} + +void Din_Fusion(Entity* this) { + if (this->action == 0) { + this->action += 1; + this->spriteSettings.b.draw = 1; + InitAnimationForceUpdate(this, 6); + } else { + UpdateAnimationSingleFrame(this); + } +} diff --git a/src/npc/farore.c b/src/npc/farore.c new file mode 100644 index 00000000..858217a6 --- /dev/null +++ b/src/npc/farore.c @@ -0,0 +1,53 @@ +#include "global.h" +#include "entity.h" +#include "npc.h" +#include "script.h" +#include "functions.h" +#include "save.h" + +extern u32 sub_08002632(Entity*); + +void Farore(Entity* this) { + switch(this->action) { + case 0: + this->action = 1; + this->spriteSettings.b.draw = 1; + sub_0807DD50(this); + break; + case 1: + if (this->interactType ==2) { + this->action = 2; + this->interactType = 0; + sub_0806F118(this); + this->field_0x68.HALF.LO = this->animIndex; + InitAnimationForceUpdate(this, sub_0806F5A4(GetFacingDirection(this, &gPlayerEntity))); + } else { + sub_0807DD94(this, NULL); + } + break; + case 2: + if (UpdateFuseInteraction(this) != 0) { + this->action = 1; + InitAnimationForceUpdate(this, this->field_0x68.HALF.LO); + } + break; + } +} + +void sub_08064A28(Entity* this) { + u32 tmp = sub_0801E99C(this); + if ((gSave.unk141[sub_08002632(this)] != 0) && (gSave.unk8 < 7)) { + tmp = 0; + } + sub_08078784(this, tmp); +} + +void Farore_Fusion(Entity* this) { + if (this->action == 0) { + this->action += 1; + this->spriteSettings.b.draw = 1; + InitAnimationForceUpdate(this, 6); + } else { + UpdateAnimationSingleFrame(this); + } +} diff --git a/src/npc/nayru.c b/src/npc/nayru.c new file mode 100644 index 00000000..fd8332a3 --- /dev/null +++ b/src/npc/nayru.c @@ -0,0 +1,53 @@ +#include "global.h" +#include "entity.h" +#include "npc.h" +#include "script.h" +#include "functions.h" +#include "save.h" + +extern u32 sub_08002632(Entity*); + +void Nayru(Entity* this) { + switch(this->action) { + case 0: + this->action = 1; + this->spriteSettings.b.draw = 1; + sub_0807DD50(this); + break; + case 1: + if (this->interactType ==2) { + this->action = 2; + this->interactType = 0; + sub_0806F118(this); + this->field_0x68.HALF.LO = this->animIndex; + InitAnimationForceUpdate(this, sub_0806F5A4(GetFacingDirection(this, &gPlayerEntity))); + } else { + sub_0807DD94(this, NULL); + } + break; + case 2: + if (UpdateFuseInteraction(this) != 0) { + this->action = 1; + InitAnimationForceUpdate(this, this->field_0x68.HALF.LO); + } + break; + } +} + +void sub_08064928(Entity* this) { + u32 tmp = sub_0801E99C(this); + if ((gSave.unk141[sub_08002632(this)] != 0) && (gSave.unk8 < 7)) { + tmp = 0; + } + sub_08078784(this, tmp); +} + +void Nayru_Fusion(Entity* this) { + if (this->action == 0) { + this->action += 1; + this->spriteSettings.b.draw = 1; + InitAnimationForceUpdate(this, 6); + } else { + UpdateAnimationSingleFrame(this); + } +} From 3f404fa46f573c963cc1907b68d9ec78a54a1fc6 Mon Sep 17 00:00:00 2001 From: octorock <79596758+octorock@users.noreply.github.com> Date: Sat, 8 May 2021 11:08:17 +0200 Subject: [PATCH 2/6] Decompile pita --- asm/pita.s | 129 ------------------------------------------------- linker.ld | 5 +- src/npc/pita.c | 68 ++++++++++++++++++++++++++ 3 files changed, 71 insertions(+), 131 deletions(-) create mode 100644 src/npc/pita.c diff --git a/asm/pita.s b/asm/pita.s index 2bdf320e..1ee5d2f4 100644 --- a/asm/pita.s +++ b/asm/pita.s @@ -7,134 +7,5 @@ .text - thumb_func_start Pita -Pita: @ 0x08062E60 - push {r4, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xc] - cmp r0, #0 - bne _08062E88 - adds r0, #1 - strb r0, [r4, #0xc] - adds r0, r4, #0 - movs r1, #2 - bl sub_0805E3A0 - adds r0, r4, #0 - adds r1, r4, #0 - bl ResolveEntityOnTop - ldr r0, _08062EB4 @ =gUnk_0810C428 - str r0, [r4, #0x48] - adds r0, r4, #0 - bl sub_0807DD64 -_08062E88: - adds r0, r4, #0 - movs r1, #0 - bl sub_0807DD94 - adds r0, r4, #0 - adds r0, #0x5a - ldrb r1, [r0] - movs r0, #1 - ands r0, r1 - cmp r0, #0 - beq _08062EB2 - ldrb r1, [r4, #0x14] - lsrs r1, r1, #1 - adds r0, r4, #0 - bl InitAnimationForceUpdate - adds r0, r4, #0 - adds r0, #0x58 - ldrb r1, [r0] - adds r0, #0x28 - strh r1, [r0] -_08062EB2: - pop {r4, pc} - .align 2, 0 -_08062EB4: .4byte gUnk_0810C428 - thumb_func_start sub_08062EB8 -sub_08062EB8: @ 0x08062EB8 - push {lr} - movs r0, #0x68 - movs r1, #0 - bl sub_0807CAA0 - movs r0, #0x69 - movs r1, #0 - bl sub_0807CAA0 - movs r0, #0x6a - movs r1, #0 - bl sub_0807CAA0 - movs r0, #0x6b - movs r1, #0 - bl sub_0807CAA0 - pop {pc} - thumb_func_start sub_08062EDC -sub_08062EDC: @ 0x08062EDC - push {r4, r5, r6, lr} - adds r6, r0, #0 - adds r5, r1, #0 - movs r0, #0x68 - bl GetInventoryValue - cmp r0, #0 - beq _08062EEE - movs r4, #0 -_08062EEE: - movs r0, #0x69 - bl GetInventoryValue - cmp r0, #0 - beq _08062EFA - movs r4, #1 -_08062EFA: - movs r0, #0x6a - bl GetInventoryValue - cmp r0, #0 - beq _08062F06 - movs r4, #2 -_08062F06: - movs r0, #0x6b - bl GetInventoryValue - cmp r0, #0 - beq _08062F12 - movs r4, #3 -_08062F12: - movs r0, #0x5b - bl CheckLocalFlag - cmp r0, #0 - bne _08062F24 - movs r0, #0x5b - bl SetLocalFlag - movs r4, #4 -_08062F24: - bl Random - movs r1, #0xff - ands r1, r0 - ldr r0, _08062F58 @ =gUnk_0810C430 - adds r0, r4, r0 - ldrb r0, [r0] - cmp r1, r0 - bhi _08062F68 - ldr r0, _08062F5C @ =gUnk_0810C435 - bl sub_080028F4 - adds r4, r0, #0 - ldr r0, _08062F60 @ =gUnk_0810C43D - adds r0, r4, r0 - ldrb r1, [r0] - movs r0, #0x5c - movs r2, #1 - bl sub_080A7C18 - ldr r0, _08062F64 @ =0x00003C05 - adds r1, r6, #0 - bl TextboxNoOverlap - movs r0, #1 - b _08062F6A - .align 2, 0 -_08062F58: .4byte gUnk_0810C430 -_08062F5C: .4byte gUnk_0810C435 -_08062F60: .4byte gUnk_0810C43D -_08062F64: .4byte 0x00003C05 -_08062F68: - movs r0, #0 -_08062F6A: - str r0, [r5, #0x14] - pop {r4, r5, r6, pc} - .align 2, 0 diff --git a/linker.ld b/linker.ld index 6707cd9a..62e2c4ab 100644 --- a/linker.ld +++ b/linker.ld @@ -562,6 +562,7 @@ SECTIONS { src/npc/stamp.o(.text); asm/marcy.o(.text); src/npc/wheaton.o(.text); + src/npc/pita.o(.text); asm/pita.o(.text); asm/minishEzlo.o(.text); src/npc/mailbox.o(.text); @@ -573,8 +574,8 @@ SECTIONS { asm/guardWithSpear.o(.text); asm/castleMaid.o(.text); src/npc/din.o(.text); - asm/nayru.o(.text); - asm/farore.o(.text); + src/npc/nayru.o(.text); + src/npc/farore.o(.text); asm/sturgeon.o(.text); src/npc/tingleSiblings.o(.text); asm/tingleSiblings.o(.text); diff --git a/src/npc/pita.c b/src/npc/pita.c new file mode 100644 index 00000000..0d43bda6 --- /dev/null +++ b/src/npc/pita.c @@ -0,0 +1,68 @@ +#include "entity.h" +#include "functions.h" +#include "script.h" +#include "flags.h" +#include "random.h" +#include "textbox.h" + +extern Hitbox gUnk_0810C428; + +extern u8 gUnk_0810C430[4]; +extern u8 gUnk_0810C435[]; +extern u8 gUnk_0810C43D[]; +extern u32 sub_080028F4(const u8*); + +void Pita(Entity* this) { + if (this->action == 0) { + this->action += 1; + sub_0805E3A0(this, 2); + ResolveEntityOnTop(this, this); + this->hitbox = &gUnk_0810C428; + sub_0807DD64(this); + } + sub_0807DD94(this, NULL); + if ((this->frames.all & 1) != 0) { + InitAnimationForceUpdate(this, (u32)(this->animationState >> 1)); + this->field_0x80.HWORD = this->animIndex; + } +} + +void sub_08062EB8(void) { + sub_0807CAA0(0x68,0); + sub_0807CAA0(0x69,0); + sub_0807CAA0(0x6a,0); + sub_0807CAA0(0x6b,0); +} + +bool32 sub_08062EDC(Entity* this, ScriptExecutionContext* context) { + u32 tmp; + u32 tmp2; + + if (GetInventoryValue(0x68) != 0) { + tmp = 0; + } + if (GetInventoryValue(0x69) != 0) { + tmp = 1; + } + if (GetInventoryValue(0x6a) != 0) { + tmp = 2; + } + if (GetInventoryValue(0x6b) != 0) { + tmp = 3; + } + if (CheckLocalFlag(0x5b) == 0) { + SetLocalFlag(0x5b); + tmp = 4; + } + if ((Random() & 0xff) > gUnk_0810C430[tmp]) { + context->condition = FALSE; + return FALSE; + } else { + tmp = sub_080028F4(gUnk_0810C435); + tmp2 = gUnk_0810C43D[tmp]; + sub_080A7C18(0x5c, tmp2, 1); + TextboxNoOverlap(0x3c05, this); + context->condition = TRUE; + return TRUE; + } +} From bbc78fd2d277c44b144e3d5d23fdb587b8d4ea74 Mon Sep 17 00:00:00 2001 From: octorock <79596758+octorock@users.noreply.github.com> Date: Tue, 11 May 2021 22:10:29 +0200 Subject: [PATCH 3/6] Decompile npc5 --- asm/non_matching/npc5/sub_08060FD0.inc | 104 ++ asm/non_matching/npc5/sub_08061170.inc | 53 + asm/non_matching/npc5/sub_080611D4.inc | 54 + asm/non_matching/npc5/sub_08061358.inc | 139 ++ asm/non_matching/npc5/sub_08061464.inc | 231 +++ asm/non_matching/npc5/sub_08061B18.inc | 38 + asm/npc5.s | 2330 ------------------------ linker.ld | 1 - src/npc/npc5.c | 943 ++++++++++ 9 files changed, 1562 insertions(+), 2331 deletions(-) create mode 100644 asm/non_matching/npc5/sub_08060FD0.inc create mode 100644 asm/non_matching/npc5/sub_08061170.inc create mode 100644 asm/non_matching/npc5/sub_080611D4.inc create mode 100644 asm/non_matching/npc5/sub_08061358.inc create mode 100644 asm/non_matching/npc5/sub_08061464.inc create mode 100644 asm/non_matching/npc5/sub_08061B18.inc delete mode 100644 asm/npc5.s create mode 100644 src/npc/npc5.c diff --git a/asm/non_matching/npc5/sub_08060FD0.inc b/asm/non_matching/npc5/sub_08060FD0.inc new file mode 100644 index 00000000..7f5cf29c --- /dev/null +++ b/asm/non_matching/npc5/sub_08060FD0.inc @@ -0,0 +1,104 @@ + .syntax unified + .text + +sub_08060FD0: @ 0x08060FD0 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #8 + adds r4, r0, #0 + mov sb, r1 + mov r8, r2 + movs r0, #0x2e + ldrsh r7, [r4, r0] + movs r1, #0x32 + ldrsh r6, [r4, r1] + mov r2, sb + subs r0, r2, r7 + mov r5, r8 + subs r1, r5, r6 + bl sub_080045DA + lsls r7, r7, #8 + lsls r6, r6, #8 + ldr r3, _08061058 @ =gSineTable + lsls r1, r0, #1 + adds r1, r1, r3 + movs r5, #0 + ldrsh r2, [r1, r5] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #1 + str r1, [sp] + adds r0, #0x40 + lsls r0, r0, #1 + adds r0, r0, r3 + movs r2, #0 + ldrsh r1, [r0, r2] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #1 + str r0, [sp, #4] + adds r4, #0x38 + ldrb r0, [r4] + ldr r5, _0806105C @ =gUnk_0200D654 + mov sl, r5 + cmp r0, #2 + beq _0806102E + ldr r0, _08061060 @ =gUnk_02027EB4 + mov sl, r0 +_0806102E: + adds r1, r7, #0 + cmp r7, #0 + bge _08061036 + adds r1, #0xff +_08061036: + asrs r5, r1, #8 + adds r2, r6, #0 + cmp r6, #0 + bge _08061040 + adds r2, #0xff +_08061040: + asrs r4, r2, #8 + mov r0, sl + adds r1, r5, #0 + adds r2, r4, #0 + movs r3, #6 + bl sub_080AE4CC + cmp r0, #0 + beq _08061064 + movs r0, #0 + b _08061084 + .align 2, 0 +_08061058: .4byte gSineTable +_0806105C: .4byte gUnk_0200D654 +_08061060: .4byte gUnk_02027EB4 +_08061064: + mov r1, sb + subs r0, r1, r5 + adds r0, #6 + cmp r0, #0xc + bhi _08061078 + mov r2, r8 + subs r0, r2, r4 + adds r0, #6 + cmp r0, #0xc + bls _08061082 +_08061078: + ldr r5, [sp] + adds r7, r7, r5 + ldr r0, [sp, #4] + subs r6, r6, r0 + b _0806102E +_08061082: + movs r0, #1 +_08061084: + add sp, #8 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7, pc} + + .syntax divided diff --git a/asm/non_matching/npc5/sub_08061170.inc b/asm/non_matching/npc5/sub_08061170.inc new file mode 100644 index 00000000..ffde2fbf --- /dev/null +++ b/asm/non_matching/npc5/sub_08061170.inc @@ -0,0 +1,53 @@ + .syntax unified + .text + +sub_08061170: @ 0x08061170 + push {r4, r5, lr} + adds r4, r0, #0 + bl UpdateAnimationSingleFrame + adds r0, r4, #0 + bl sub_080AF1EC + cmp r0, #0 + bne _080611CA + adds r0, r4, #0 + bl sub_080611D4 + adds r5, r0, #0 + cmp r5, #0xff + beq _080611C6 + movs r0, #6 + strb r0, [r4, #0xc] + adds r0, r4, #0 + movs r1, #1 + bl sub_08079FD4 + lsls r0, r0, #4 + subs r0, #4 + lsls r0, r0, #0xc + str r0, [r4, #0x20] + movs r1, #0x80 + lsls r1, r1, #1 + strh r1, [r4, #0x24] + strb r5, [r4, #0x15] + lsrs r1, r5, #2 + strb r1, [r4, #0x14] + lsrs r0, r0, #0x10 + cmp r0, #0 + beq _080611BE + adds r0, r4, #0 + movs r1, #0x14 + bl sub_08060E70 + b _080611C6 +_080611BE: + adds r0, r4, #0 + movs r1, #0x18 + bl sub_08060E70 +_080611C6: + movs r0, #0 + b _080611D2 +_080611CA: + adds r0, r4, #0 + bl sub_08016AD2 + movs r0, #1 +_080611D2: + pop {r4, r5, pc} + + .syntax divided diff --git a/asm/non_matching/npc5/sub_080611D4.inc b/asm/non_matching/npc5/sub_080611D4.inc new file mode 100644 index 00000000..97048cc0 --- /dev/null +++ b/asm/non_matching/npc5/sub_080611D4.inc @@ -0,0 +1,54 @@ + .syntax unified + .text + +sub_080611D4: @ 0x080611D4 + push {r4, lr} + adds r4, r0, #0 + ldrb r1, [r4, #0x14] + movs r0, #6 + ands r0, r1 + ldr r1, _08061218 @ =gUnk_0810AC4C + adds r0, r0, r1 + movs r1, #0 + ldrsb r1, [r0, r1] + movs r2, #1 + ldrsb r2, [r0, r2] + adds r0, r4, #0 + bl sub_080002B4 + adds r3, r0, #0 + ldr r2, _0806121C @ =gUnk_0810AC54 +_080611F4: + ldrb r0, [r2] + cmp r0, r3 + bne _08061220 + ldrb r0, [r2, #1] + ldrb r1, [r4, #0x14] + lsrs r0, r0, #2 + cmp r1, r0 + bne _08061220 + ldrb r0, [r4, #0xf] + adds r0, #1 + strb r0, [r4, #0xf] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #7 + bls _0806122A + ldrb r0, [r2, #1] + b _0806122C + .align 2, 0 +_08061218: .4byte gUnk_0810AC4C +_0806121C: .4byte gUnk_0810AC54 +_08061220: + adds r2, #2 + ldrb r0, [r2] + cmp r0, #0 + bne _080611F4 + strb r0, [r4, #0xf] +_0806122A: + movs r0, #0xff +_0806122C: + pop {r4, pc} + .align 2, 0 + + + .syntax divided diff --git a/asm/non_matching/npc5/sub_08061358.inc b/asm/non_matching/npc5/sub_08061358.inc new file mode 100644 index 00000000..ab2190cd --- /dev/null +++ b/asm/non_matching/npc5/sub_08061358.inc @@ -0,0 +1,139 @@ + .syntax unified + .text + +sub_08061358: @ 0x08061358 + push {r4, r5, r6, lr} + adds r4, r0, #0 + ldrb r5, [r4, #0xd] + cmp r5, #1 + beq _0806139C + cmp r5, #1 + bgt _0806136C + cmp r5, #0 + beq _08061376 + b _08061460 +_0806136C: + cmp r5, #2 + beq _080613D0 + cmp r5, #3 + beq _0806141E + b _08061460 +_08061376: + adds r0, r4, #0 + bl UpdateAnimationSingleFrame + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08061460 + movs r0, #1 + strb r0, [r4, #0xd] + movs r0, #0xf + strb r0, [r4, #0xe] + adds r0, r4, #0 + movs r1, #0 + bl sub_08060E70 + b _08061460 +_0806139C: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08061460 + bl Random + adds r6, r0, #0 + ands r5, r6 + cmp r5, #0 + beq _080613FA + movs r0, #2 + strb r0, [r4, #0xd] + ldr r3, _080613CC @ =gUnk_0810AC5D + ldrb r0, [r4, #0x14] + lsls r0, r0, #1 + lsrs r1, r6, #4 + movs r2, #3 + ands r1, r2 + adds r0, r0, r1 + adds r0, r0, r3 + b _0806143A + .align 2, 0 +_080613CC: .4byte gUnk_0810AC5D +_080613D0: + adds r0, r4, #0 + bl UpdateAnimationSingleFrame + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08061460 + movs r0, #0x18 + ands r0, r1 + lsrs r0, r0, #2 + strb r0, [r4, #0x14] + bl Random + adds r1, r0, #0 + movs r0, #1 + ands r1, r0 + cmp r1, #0 + beq _08061412 +_080613FA: + movs r0, #3 + strb r0, [r4, #0xd] + movs r0, #0x18 + ands r6, r0 + adds r0, r6, #0 + adds r0, #0x1e + strb r0, [r4, #0xe] + adds r0, r4, #0 + movs r1, #4 + bl sub_08060E70 + b _08061460 +_08061412: + strb r1, [r4, #0xd] + adds r0, r4, #0 + movs r1, #0x10 + bl sub_08060E70 + b _08061460 +_0806141E: + adds r0, r4, #0 + bl sub_08061170 + cmp r0, #0 + bne _08061448 + movs r0, #2 + strb r0, [r4, #0xd] + ldr r2, _08061444 @ =gUnk_0810AC5D + ldrb r0, [r4, #0x14] + lsls r0, r0, #1 + lsrs r1, r6, #4 + ands r1, r5 + adds r0, r0, r1 + adds r0, r0, r2 +_0806143A: + ldrb r1, [r0] + adds r0, r4, #0 + bl InitAnimationForceUpdate + b _08061460 + .align 2, 0 +_08061444: .4byte gUnk_0810AC5D +_08061448: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0 + bne _08061460 + strb r0, [r4, #0xd] + adds r0, r4, #0 + movs r1, #0x10 + bl sub_08060E70 +_08061460: + pop {r4, r5, r6, pc} + .align 2, 0 + + .syntax divided diff --git a/asm/non_matching/npc5/sub_08061464.inc b/asm/non_matching/npc5/sub_08061464.inc new file mode 100644 index 00000000..7a0f024a --- /dev/null +++ b/asm/non_matching/npc5/sub_08061464.inc @@ -0,0 +1,231 @@ + .syntax unified + .text + +sub_08061464: @ 0x08061464 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + adds r4, r0, #0 + mov r8, r1 + adds r5, r2, #0 + movs r0, #0x2e + ldrsh r7, [r4, r0] + movs r1, #0x32 + ldrsh r6, [r4, r1] + adds r0, r7, #0 + adds r1, r6, #0 + mov r2, r8 + adds r3, r5, #0 + bl sub_080045D4 + adds r0, #2 + movs r1, #0x1c + ands r0, r1 + lsrs r0, r0, #2 + cmp r0, #7 + bls _08061494 + b _08061612 +_08061494: + lsls r0, r0, #2 + ldr r1, _080614A0 @ =_080614A4 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080614A0: .4byte _080614A4 +_080614A4: @ jump table + .4byte _080614C4 @ case 0 + .4byte _080614E2 @ case 1 + .4byte _08061514 @ case 2 + .4byte _08061544 @ case 3 + .4byte _08061566 @ case 4 + .4byte _08061584 @ case 5 + .4byte _080615B4 @ case 6 + .4byte _080615E4 @ case 7 +_080614C4: + adds r0, r4, #0 + adds r0, #0x6e + strh r5, [r0] + movs r1, #0x2e + ldrsh r0, [r4, r1] + cmp r0, r8 + ble _08061504 + adds r2, r6, #0 + subs r2, #8 + adds r0, r4, #0 + adds r1, r7, #0 + mov r3, r8 + bl sub_08061630 + b _08061612 +_080614E2: + movs r0, #0x6e + adds r0, r0, r4 + mov sb, r0 + mov r1, r8 + strh r1, [r0] + adds r1, r7, #0 + adds r1, #8 + adds r0, r4, #0 + adds r2, r6, #0 + adds r3, r5, #0 + bl sub_08061720 + cmp r0, #0 + beq _08061500 + b _08061612 +_08061500: + mov r0, sb + strh r5, [r0] +_08061504: + adds r2, r6, #0 + subs r2, #8 + adds r0, r4, #0 + adds r1, r7, #0 + mov r3, r8 + bl sub_080616A8 + b _08061612 +_08061514: + adds r0, r4, #0 + adds r0, #0x6e + mov r1, r8 + strh r1, [r0] + movs r1, #0x32 + ldrsh r0, [r4, r1] + cmp r0, r5 + ble _08061534 + adds r1, r7, #0 + adds r1, #8 + adds r0, r4, #0 + adds r2, r6, #0 + adds r3, r5, #0 + bl sub_08061720 + b _08061612 +_08061534: + adds r1, r7, #0 + adds r1, #8 + adds r0, r4, #0 + adds r2, r6, #0 + adds r3, r5, #0 + bl sub_08061798 + b _08061612 +_08061544: + movs r0, #0x6e + adds r0, r0, r4 + mov sb, r0 + mov r1, r8 + strh r1, [r0] + adds r1, r7, #0 + adds r1, #8 + adds r0, r4, #0 + adds r2, r6, #0 + adds r3, r5, #0 + bl sub_08061798 + cmp r0, #0 + bne _08061612 + mov r0, sb + strh r5, [r0] + b _08061574 +_08061566: + adds r0, r4, #0 + adds r0, #0x6e + strh r5, [r0] + movs r1, #0x2e + ldrsh r0, [r4, r1] + cmp r0, r8 + bgt _080615A4 +_08061574: + adds r2, r6, #0 + adds r2, #8 + adds r0, r4, #0 + adds r1, r7, #0 + mov r3, r8 + bl sub_08061888 + b _08061612 +_08061584: + movs r0, #0x6e + adds r0, r0, r4 + mov sb, r0 + mov r1, r8 + strh r1, [r0] + adds r1, r7, #0 + subs r1, #8 + adds r0, r4, #0 + adds r2, r6, #0 + adds r3, r5, #0 + bl sub_08061978 + cmp r0, #0 + bne _08061612 + mov r0, sb + strh r5, [r0] +_080615A4: + adds r2, r6, #0 + adds r2, #8 + adds r0, r4, #0 + adds r1, r7, #0 + mov r3, r8 + bl sub_08061810 + b _08061612 +_080615B4: + adds r0, r4, #0 + adds r0, #0x6e + mov r1, r8 + strh r1, [r0] + movs r1, #0x32 + ldrsh r0, [r4, r1] + cmp r0, r5 + ble _080615D4 + adds r1, r7, #0 + subs r1, #8 + adds r0, r4, #0 + adds r2, r6, #0 + adds r3, r5, #0 + bl sub_08061900 + b _08061612 +_080615D4: + adds r1, r7, #0 + subs r1, #8 + adds r0, r4, #0 + adds r2, r6, #0 + adds r3, r5, #0 + bl sub_08061978 + b _08061612 +_080615E4: + movs r0, #0x6e + adds r0, r0, r4 + mov sb, r0 + mov r1, r8 + strh r1, [r0] + adds r1, r7, #0 + subs r1, #8 + adds r0, r4, #0 + adds r2, r6, #0 + adds r3, r5, #0 + bl sub_08061900 + cmp r0, #0 + bne _08061612 + mov r0, sb + strh r5, [r0] + adds r2, r6, #0 + subs r2, #8 + adds r0, r4, #0 + adds r1, r7, #0 + mov r3, r8 + bl sub_08061630 +_08061612: + ldr r0, [r4, #0x64] + ldrb r1, [r0] + movs r0, #8 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + bne _08061628 + movs r0, #3 + strb r0, [r4, #0xc] + strb r1, [r4, #0xd] +_08061628: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7, pc} + + .syntax divided diff --git a/asm/non_matching/npc5/sub_08061B18.inc b/asm/non_matching/npc5/sub_08061B18.inc new file mode 100644 index 00000000..f420ee89 --- /dev/null +++ b/asm/non_matching/npc5/sub_08061B18.inc @@ -0,0 +1,38 @@ + .syntax unified + .text + +sub_08061B18: @ 0x08061B18 + push {r4, lr} + adds r4, r0, #0 + adds r1, r4, #0 + adds r1, #0x39 + movs r0, #0 + ldrsb r0, [r1, r0] + cmp r0, #0 + beq _08061B54 + cmp r0, #1 + bne _08061B54 + movs r0, #0 + strb r0, [r1] + adds r0, r4, #0 + bl sub_08061AFC + ldr r2, [r4, #0x68] + ldrb r0, [r4, #0xe] + adds r1, r0, #1 + strb r1, [r4, #0xe] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x17 + adds r2, r2, r0 + ldrh r0, [r2, #2] + cmp r0, #0 + bne _08061B4C + strb r0, [r4, #0xe] +_08061B4C: + ldrh r0, [r2] + adds r1, r4, #0 + bl TextboxNoOverlap +_08061B54: + pop {r4, pc} + .align 2, 0 + + .syntax divided diff --git a/asm/npc5.s b/asm/npc5.s deleted file mode 100644 index a489d264..00000000 --- a/asm/npc5.s +++ /dev/null @@ -1,2330 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - - thumb_func_start NPC5 -NPC5: @ 0x080609E8 - push {lr} - ldr r2, _080609FC @ =gUnk_0810AC1C - ldrb r1, [r0, #0xa] - lsls r1, r1, #2 - adds r1, r1, r2 - ldr r1, [r1] - bl _call_via_r1 - pop {pc} - .align 2, 0 -_080609FC: .4byte gUnk_0810AC1C - - thumb_func_start sub_08060A00 -sub_08060A00: @ 0x08060A00 - push {r4, r5, lr} - adds r5, r0, #0 - ldr r0, _08060AD0 @ =gPlayerState - ldrb r1, [r0, #2] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _08060A44 - ldrb r0, [r5, #0xc] - cmp r0, #0 - beq _08060A52 - ldr r2, [r5, #0x64] - ldrb r1, [r2] - movs r0, #4 - ands r0, r1 - cmp r0, #0 - bne _08060A44 - movs r0, #4 - orrs r0, r1 - strb r0, [r2] - ldr r4, [r5, #0x64] - ldr r3, _08060AD4 @ =gPlayerEntity - ldrh r2, [r3, #0x2e] - movs r1, #0x10 - rsbs r1, r1, #0 - adds r0, r1, #0 - ands r0, r2 - adds r0, #8 - strh r0, [r4, #0xa] - ldr r2, [r5, #0x64] - ldrh r0, [r3, #0x32] - ands r1, r0 - adds r1, #8 - strh r1, [r2, #0xc] -_08060A44: - ldrb r0, [r5, #0xc] - cmp r0, #0 - beq _08060A52 - ldrb r0, [r5, #0x18] - lsls r0, r0, #0x1e - cmp r0, #0 - beq _08060A62 -_08060A52: - ldr r0, _08060AD8 @ =gUnk_0810AC2C - ldrb r1, [r5, #0xc] - lsls r1, r1, #2 - adds r1, r1, r0 - ldr r1, [r1] - adds r0, r5, #0 - bl _call_via_r1 -_08060A62: - ldrb r0, [r5, #0xc] - cmp r0, #0 - beq _08060A76 - ldr r1, [r5, #0x64] - ldr r2, _08060AD4 @ =gPlayerEntity - ldrh r0, [r2, #0x2e] - strh r0, [r1, #2] - ldr r1, [r5, #0x64] - ldrh r0, [r2, #0x32] - strh r0, [r1, #4] -_08060A76: - adds r2, r5, #0 - adds r2, #0x74 - ldr r4, _08060ADC @ =gRoomControls - ldrb r1, [r4, #5] - ldrh r0, [r2] - cmp r0, r1 - beq _08060ACE - strh r1, [r2] - ldr r0, _08060AD4 @ =gPlayerEntity - adds r1, r5, #0 - bl CopyPosition - 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] - movs r0, #0x90 - lsls r0, r0, #1 - strh r0, [r5, #0x24] - ldrb r1, [r4, #0x10] - lsls r0, r1, #1 - strb r0, [r5, #0x14] - lsls r1, r1, #0x19 - lsrs r1, r1, #0x19 - adds r0, r5, #0 - bl InitAnimationForceUpdate - bl Random - movs r1, #0x7f - ands r0, r1 - adds r0, #0x80 - adds r1, r5, #0 - adds r1, #0x59 - strb r0, [r1] - ldr r2, [r5, #0x64] - ldrb r1, [r2] - movs r0, #0xfb - ands r0, r1 - strb r0, [r2] -_08060ACE: - pop {r4, r5, pc} - .align 2, 0 -_08060AD0: .4byte gPlayerState -_08060AD4: .4byte gPlayerEntity -_08060AD8: .4byte gUnk_0810AC2C -_08060ADC: .4byte gRoomControls - - thumb_func_start sub_08060AE0 -sub_08060AE0: @ 0x08060AE0 - push {r4, lr} - adds r4, r0, #0 - movs r0, #0x14 - bl zMalloc - adds r1, r0, #0 - cmp r1, #0 - beq _08060B54 - str r1, [r4, #0x64] - movs r0, #0x20 - strb r0, [r1, #1] - movs r0, #1 - strb r0, [r4, #0xc] - ldrb r1, [r4, #0x10] - movs r0, #0x80 - orrs r0, r1 - strb r0, [r4, #0x10] - ldrb r1, [r4, #0x14] - movs r2, #3 - adds r0, r2, #0 - ands r0, r1 - strb r0, [r4, #0x14] - adds r1, r4, #0 - adds r1, #0x3c - movs r0, #7 - strb r0, [r1] - adds r1, #4 - movs r0, #0x48 - strb r0, [r1] - subs r1, #1 - movs r0, #0x49 - strb r0, [r1] - adds r0, r4, #0 - adds r0, #0x3b - strb r2, [r0] - ldr r0, _08060B58 @ =gUnk_080FD150 - str r0, [r4, #0x48] - ldrb r1, [r4, #0x17] - movs r0, #0xfe - ands r0, r1 - strb r0, [r4, #0x17] - adds r1, r4, #0 - adds r1, #0x6c - movs r0, #0xff - strb r0, [r1] - ldrb r1, [r4, #0x14] - adds r0, r4, #0 - bl sub_08060E70 - movs r0, #5 - movs r1, #2 - movs r2, #0 - bl CreateNPC - cmp r0, #0 - beq _08060B54 - str r4, [r0, #0x50] - str r0, [r4, #0x78] -_08060B54: - pop {r4, pc} - .align 2, 0 -_08060B58: .4byte gUnk_080FD150 - - thumb_func_start sub_08060B5C -sub_08060B5C: @ 0x08060B5C - push {r4, r5, lr} - adds r4, r0, #0 - bl sub_08061230 - cmp r0, #0 - bne _08060B9E - adds r0, r4, #0 - bl sub_08060F80 - adds r5, r0, #0 - cmp r5, #0 - bne _08060B98 - ldr r1, _08060B94 @ =gPlayerEntity - adds r0, r4, #0 - bl GetFacingDirection - ldrb r1, [r4, #0x14] - lsls r1, r1, #2 - subs r0, r0, r1 - adds r0, #4 - movs r1, #0x1f - ands r0, r1 - cmp r0, #8 - bhi _08060B98 - movs r0, #2 - strb r0, [r4, #0xc] - strb r5, [r4, #0xf] - b _08060B9E - .align 2, 0 -_08060B94: .4byte gPlayerEntity -_08060B98: - adds r0, r4, #0 - bl sub_08060EDC -_08060B9E: - pop {r4, r5, pc} - - thumb_func_start sub_08060BA0 -sub_08060BA0: @ 0x08060BA0 - push {r4, r5, lr} - adds r4, r0, #0 - bl sub_08061230 - cmp r0, #0 - beq _08060BAE - b _08060D74 -_08060BAE: - ldr r2, [r4, #0x64] - ldrb r1, [r2] - movs r0, #4 - ands r0, r1 - cmp r0, #0 - beq _08060C66 - movs r0, #8 - ands r0, r1 - cmp r0, #0 - beq _08060BF6 - movs r0, #0xf0 - lsls r0, r0, #1 - strh r0, [r4, #0x24] - ldrh r1, [r2, #0xe] - ldrh r2, [r2, #0x10] - adds r0, r4, #0 - movs r3, #0xc - bl sub_08061120 - adds r0, r4, #0 - bl sub_08061170 - ldr r0, [r4, #0x64] - ldrh r1, [r0, #0xe] - ldrh r2, [r0, #0x10] - adds r0, r4, #0 - movs r3, #4 - bl sub_0806FCB8 - cmp r0, #0 - bne _08060BEE - b _08060D54 -_08060BEE: - ldr r2, [r4, #0x64] - ldrb r1, [r2] - movs r0, #0xf7 - b _08060D36 -_08060BF6: - ldrh r1, [r2, #0xa] - ldrh r2, [r2, #0xc] - adds r0, r4, #0 - bl sub_08060FD0 - cmp r0, #0 - beq _08060C56 - ldr r0, [r4, #0x64] - ldrh r1, [r0, #0xa] - ldrh r2, [r0, #0xc] - adds r0, r4, #0 - movs r3, #4 - bl sub_0806FCB8 - cmp r0, #0 - beq _08060C38 - ldr r2, [r4, #0x64] - ldrb r1, [r2] - movs r0, #0xfb - ands r0, r1 - strb r0, [r2] - movs r0, #5 - strb r0, [r4, #0xc] - ldrb r0, [r5, #0x15] - strb r0, [r4, #0x15] - movs r0, #0xb0 - lsls r0, r0, #1 - strh r0, [r4, #0x24] - adds r0, r4, #0 - movs r1, #8 - bl sub_08060E70 - b _08060D54 -_08060C38: - movs r0, #0xf0 - lsls r0, r0, #1 - strh r0, [r4, #0x24] - movs r0, #0x2e - ldrsh r1, [r5, r0] - movs r0, #0x32 - ldrsh r2, [r5, r0] - adds r0, r4, #0 - movs r3, #0xc - bl sub_08061120 - adds r0, r4, #0 - bl sub_08061170 - b _08060D54 -_08060C56: - movs r0, #0x2e - ldrsh r1, [r5, r0] - movs r0, #0x32 - ldrsh r2, [r5, r0] - adds r0, r4, #0 - bl sub_08061464 - b _08060D54 -_08060C66: - ldr r5, _08060C98 @ =gPlayerEntity - movs r0, #0x2e - ldrsh r1, [r5, r0] - movs r0, #0x32 - ldrsh r2, [r5, r0] - adds r0, r4, #0 - bl sub_08060FD0 - cmp r0, #0 - beq _08060C9C - movs r0, #0x2e - ldrsh r1, [r5, r0] - movs r0, #0x32 - ldrsh r2, [r5, r0] - adds r0, r4, #0 - bl sub_08061090 - adds r0, r4, #0 - bl sub_08061170 - ldr r2, [r4, #0x64] - ldrb r1, [r2] - movs r0, #0xf5 - b _08060D36 - .align 2, 0 -_08060C98: .4byte gPlayerEntity -_08060C9C: - ldr r2, [r4, #0x64] - ldrb r1, [r2] - movs r0, #8 - ands r0, r1 - cmp r0, #0 - beq _08060CDA - movs r0, #0xf0 - lsls r0, r0, #1 - strh r0, [r4, #0x24] - ldrh r1, [r2, #0xe] - ldrh r2, [r2, #0x10] - adds r0, r4, #0 - movs r3, #0xc - bl sub_08061120 - adds r0, r4, #0 - bl sub_08061170 - ldr r0, [r4, #0x64] - ldrh r1, [r0, #0xe] - ldrh r2, [r0, #0x10] - adds r0, r4, #0 - movs r3, #4 - bl sub_0806FCB8 - cmp r0, #0 - beq _08060D54 - ldr r2, [r4, #0x64] - ldrb r1, [r2] - movs r0, #0xf7 - b _08060D36 -_08060CDA: - movs r0, #2 - ands r0, r1 - cmp r0, #0 - bne _08060CF4 - movs r0, #2 - orrs r0, r1 - strb r0, [r2] - ldr r1, [r4, #0x64] - ldrh r0, [r1, #2] - strh r0, [r1, #6] - ldr r1, [r4, #0x64] - ldrh r0, [r1, #4] - strh r0, [r1, #8] -_08060CF4: - ldr r0, [r4, #0x64] - ldrh r1, [r0, #6] - ldrh r2, [r0, #8] - adds r0, r4, #0 - bl sub_08060FD0 - cmp r0, #0 - beq _08060D3C - movs r0, #0xf0 - lsls r0, r0, #1 - strh r0, [r4, #0x24] - ldr r0, [r4, #0x64] - ldrh r1, [r0, #6] - ldrh r2, [r0, #8] - adds r0, r4, #0 - movs r3, #0xc - bl sub_08061120 - adds r0, r4, #0 - bl sub_08061170 - ldr r0, [r4, #0x64] - ldrh r1, [r0, #6] - ldrh r2, [r0, #8] - adds r0, r4, #0 - movs r3, #4 - bl sub_0806FCB8 - cmp r0, #0 - beq _08060D54 - ldr r2, [r4, #0x64] - ldrb r1, [r2] - movs r0, #0xfd -_08060D36: - ands r0, r1 - strb r0, [r2] - b _08060D54 -_08060D3C: - ldr r2, [r4, #0x64] - ldrb r1, [r2] - movs r0, #0xfd - ands r0, r1 - strb r0, [r2] - movs r0, #0x2e - ldrsh r1, [r5, r0] - movs r0, #0x32 - ldrsh r2, [r5, r0] - adds r0, r4, #0 - bl sub_08061464 -_08060D54: - adds r0, r4, #0 - bl sub_08060F80 - cmp r0, #0 - beq _08060D74 - movs r0, #1 - strb r0, [r4, #0xc] - ldr r2, [r4, #0x64] - ldrb r1, [r2] - movs r0, #0xfb - ands r0, r1 - strb r0, [r2] - adds r0, r4, #0 - movs r1, #0 - bl sub_08060E70 -_08060D74: - pop {r4, r5, pc} - .align 2, 0 - - thumb_func_start sub_08060D78 -sub_08060D78: @ 0x08060D78 - push {r4, r5, lr} - adds r4, r0, #0 - bl sub_08061358 - adds r0, r4, #0 - bl sub_08060F80 - cmp r0, #0 - beq _08060DCE - adds r0, r4, #0 - adds r0, #0x58 - ldrb r0, [r0] - subs r0, #0x20 - cmp r0, #0xf - bhi _08060DC2 - adds r5, r4, #0 - adds r5, #0x5a - ldrb r1, [r5] - movs r0, #7 - ands r0, r1 - cmp r0, #0 - beq _08060DB2 - adds r1, r4, #0 - adds r1, #0x59 - movs r0, #1 - strb r0, [r1] - adds r0, r4, #0 - bl UpdateAnimationSingleFrame -_08060DB2: - ldrb r1, [r5] - movs r0, #0x18 - ands r0, r1 - strb r0, [r4, #0x14] - adds r1, r4, #0 - adds r1, #0x6c - movs r0, #0xff - strb r0, [r1] -_08060DC2: - movs r0, #1 - strb r0, [r4, #0xc] - adds r0, r4, #0 - movs r1, #0 - bl sub_08060E70 -_08060DCE: - pop {r4, r5, pc} - - thumb_func_start sub_08060DD0 -sub_08060DD0: @ 0x08060DD0 - push {r4, lr} - adds r4, r0, #0 - bl UpdateAnimationSingleFrame - adds r0, r4, #0 - adds r0, #0x5a - ldrb r1, [r0] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _08060DF2 - movs r0, #1 - strb r0, [r4, #0xc] - adds r0, r4, #0 - movs r1, #0 - bl sub_08060E70 -_08060DF2: - pop {r4, pc} - - thumb_func_start sub_08060DF4 -sub_08060DF4: @ 0x08060DF4 - push {lr} - bl sub_08061170 - pop {pc} - - thumb_func_start sub_08060DFC -sub_08060DFC: @ 0x08060DFC - push {r4, lr} - adds r4, r0, #0 - bl sub_0806F69C - adds r0, r4, #0 - bl sub_08060E94 - movs r1, #0x80 - lsls r1, r1, #6 - adds r0, r4, #0 - bl sub_08003FC4 - cmp r0, #0 - bne _08060E32 - movs r0, #7 - strb r0, [r4, #0xc] - adds r1, r4, #0 - adds r1, #0x38 - movs r0, #1 - strb r0, [r1] - adds r0, r4, #0 - bl UpdateSpriteForCollisionLayer - adds r0, r4, #0 - movs r1, #0x1c - bl sub_08060E70 -_08060E32: - pop {r4, pc} - - thumb_func_start sub_08060E34 -sub_08060E34: @ 0x08060E34 - push {r4, lr} - adds r4, r0, #0 - bl UpdateAnimationSingleFrame - adds r0, r4, #0 - adds r0, #0x5a - ldrb r1, [r0] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _08060E68 - movs r0, #2 - strb r0, [r4, #0xc] - ldr r1, _08060E6C @ =gPlayerEntity - adds r0, r4, #0 - bl GetFacingDirection - adds r0, #4 - movs r1, #0x18 - ands r0, r1 - lsrs r0, r0, #2 - strb r0, [r4, #0x14] - adds r0, r4, #0 - movs r1, #8 - bl sub_08060E70 -_08060E68: - pop {r4, pc} - .align 2, 0 -_08060E6C: .4byte gPlayerEntity - - thumb_func_start sub_08060E70 -sub_08060E70: @ 0x08060E70 - push {lr} - adds r2, r0, #0 - adds r3, r1, #0 - ldrb r0, [r2, #0x14] - lsrs r0, r0, #1 - adds r1, r3, r0 - adds r0, r2, #0 - adds r0, #0x58 - ldrb r0, [r0] - cmp r1, r0 - beq _08060E92 - adds r0, r2, #0 - adds r0, #0x6c - strb r3, [r0] - adds r0, r2, #0 - bl InitAnimationForceUpdate -_08060E92: - pop {pc} - - thumb_func_start sub_08060E94 -sub_08060E94: @ 0x08060E94 - push {r4, lr} - adds r4, r0, #0 - ldr r0, [r4, #0x58] - ldr r1, _08060ECC @ =0x0080FF00 - ands r0, r1 - ldr r1, _08060ED0 @ =0x00800100 - cmp r0, r1 - bne _08060ED4 - adds r0, r4, #0 - adds r0, #0x58 - ldrb r0, [r0] - cmp r0, #3 - bhi _08060ED4 - ldrb r1, [r4, #0x14] - lsrs r1, r1, #1 - adds r0, r4, #0 - bl InitAnimationForceUpdate - bl Random - movs r1, #0x7f - ands r0, r1 - adds r0, #0x80 - adds r1, r4, #0 - adds r1, #0x59 - strb r0, [r1] - b _08060EDA - .align 2, 0 -_08060ECC: .4byte 0x0080FF00 -_08060ED0: .4byte 0x00800100 -_08060ED4: - adds r0, r4, #0 - bl UpdateAnimationSingleFrame -_08060EDA: - pop {r4, pc} - - thumb_func_start sub_08060EDC -sub_08060EDC: @ 0x08060EDC - push {r4, lr} - adds r4, r0, #0 - adds r0, #0x58 - ldrb r0, [r0] - subs r0, #0x20 - cmp r0, #0xf - bhi _08060F00 - adds r0, r4, #0 - adds r0, #0x5a - ldrb r1, [r0] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - bne _08060F00 - adds r0, r4, #0 - bl UpdateAnimationSingleFrame - b _08060F7C -_08060F00: - ldr r1, _08060F30 @ =gPlayerEntity - adds r0, r4, #0 - bl GetFacingDirection - ldrb r2, [r4, #0x14] - lsls r1, r2, #2 - subs r1, r0, r1 - adds r0, r1, #3 - movs r3, #0x1f - ands r0, r3 - cmp r0, #6 - ble _08060F4A - ands r1, r3 - cmp r1, #0xf - bgt _08060F34 - adds r1, r2, #0 - adds r1, #0x20 - adds r0, r4, #0 - bl InitAnimationForceUpdate - ldrb r0, [r4, #0x14] - adds r0, #1 - b _08060F42 - .align 2, 0 -_08060F30: .4byte gPlayerEntity -_08060F34: - adds r1, r2, #0 - adds r1, #0x28 - adds r0, r4, #0 - bl InitAnimationForceUpdate - ldrb r0, [r4, #0x14] - subs r0, #1 -_08060F42: - movs r1, #7 - ands r0, r1 - strb r0, [r4, #0x14] - b _08060F7C -_08060F4A: - movs r0, #1 - ands r2, r0 - cmp r2, #0 - bne _08060F7C - adds r0, r4, #0 - adds r0, #0x5a - ldrb r1, [r0] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _08060F76 - adds r0, r4, #0 - adds r0, #0x58 - ldrb r0, [r0] - subs r0, #0x20 - cmp r0, #0xf - bhi _08060F76 - adds r0, r4, #0 - movs r1, #0 - bl sub_08060E70 - b _08060F7C -_08060F76: - adds r0, r4, #0 - bl sub_08060E94 -_08060F7C: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_08060F80 -sub_08060F80: @ 0x08060F80 - push {r4, r5, lr} - adds r4, r0, #0 - ldr r5, _08060FC8 @ =gPlayerEntity - movs r0, #0x2e - ldrsh r1, [r5, r0] - movs r3, #0x32 - ldrsh r2, [r5, r3] - adds r0, r4, #0 - bl sub_08060FD0 - cmp r0, #0 - beq _08060FC2 - ldr r2, [r4, #0x64] - ldrb r1, [r2] - movs r0, #0xfb - ands r0, r1 - strb r0, [r2] - movs r1, #0x2e - ldrsh r0, [r5, r1] - movs r2, #0x2e - ldrsh r1, [r4, r2] - subs r0, r0, r1 - movs r3, #0x32 - ldrsh r1, [r5, r3] - movs r3, #0x32 - ldrsh r2, [r4, r3] - subs r1, r1, r2 - ldr r2, [r4, #0x64] - ldrb r2, [r2, #1] - bl sub_0806FCD0 - cmp r0, #0 - bne _08060FCC -_08060FC2: - movs r0, #0 - b _08060FCE - .align 2, 0 -_08060FC8: .4byte gPlayerEntity -_08060FCC: - movs r0, #1 -_08060FCE: - pop {r4, r5, pc} - - thumb_func_start sub_08060FD0 -sub_08060FD0: @ 0x08060FD0 - push {r4, r5, r6, r7, lr} - mov r7, sl - mov r6, sb - mov r5, r8 - push {r5, r6, r7} - sub sp, #8 - adds r4, r0, #0 - mov sb, r1 - mov r8, r2 - movs r0, #0x2e - ldrsh r7, [r4, r0] - movs r1, #0x32 - ldrsh r6, [r4, r1] - mov r2, sb - subs r0, r2, r7 - mov r5, r8 - subs r1, r5, r6 - bl sub_080045DA - lsls r7, r7, #8 - lsls r6, r6, #8 - ldr r3, _08061058 @ =gSineTable - lsls r1, r0, #1 - adds r1, r1, r3 - movs r5, #0 - ldrsh r2, [r1, r5] - lsls r1, r2, #1 - adds r1, r1, r2 - lsls r1, r1, #1 - str r1, [sp] - adds r0, #0x40 - lsls r0, r0, #1 - adds r0, r0, r3 - movs r2, #0 - ldrsh r1, [r0, r2] - lsls r0, r1, #1 - adds r0, r0, r1 - lsls r0, r0, #1 - str r0, [sp, #4] - adds r4, #0x38 - ldrb r0, [r4] - ldr r5, _0806105C @ =gUnk_0200D654 - mov sl, r5 - cmp r0, #2 - beq _0806102E - ldr r0, _08061060 @ =gUnk_02027EB4 - mov sl, r0 -_0806102E: - adds r1, r7, #0 - cmp r7, #0 - bge _08061036 - adds r1, #0xff -_08061036: - asrs r5, r1, #8 - adds r2, r6, #0 - cmp r6, #0 - bge _08061040 - adds r2, #0xff -_08061040: - asrs r4, r2, #8 - mov r0, sl - adds r1, r5, #0 - adds r2, r4, #0 - movs r3, #6 - bl sub_080AE4CC - cmp r0, #0 - beq _08061064 - movs r0, #0 - b _08061084 - .align 2, 0 -_08061058: .4byte gSineTable -_0806105C: .4byte gUnk_0200D654 -_08061060: .4byte gUnk_02027EB4 -_08061064: - mov r1, sb - subs r0, r1, r5 - adds r0, #6 - cmp r0, #0xc - bhi _08061078 - mov r2, r8 - subs r0, r2, r4 - adds r0, #6 - cmp r0, #0xc - bls _08061082 -_08061078: - ldr r5, [sp] - adds r7, r7, r5 - ldr r0, [sp, #4] - subs r6, r6, r0 - b _0806102E -_08061082: - movs r0, #1 -_08061084: - add sp, #8 - pop {r3, r4, r5} - mov r8, r3 - mov sb, r4 - mov sl, r5 - pop {r4, r5, r6, r7, pc} - - thumb_func_start sub_08061090 -sub_08061090: @ 0x08061090 - push {r4, r5, r6, lr} - adds r3, r0, #0 - adds r5, r1, #0 - adds r6, r2, #0 - ldr r1, _080610C8 @ =gPlayerEntity - movs r0, #0x2e - ldrsh r2, [r1, r0] - movs r4, #0x2e - ldrsh r0, [r3, r4] - subs r2, r2, r0 - movs r4, #0x32 - ldrsh r0, [r1, r4] - movs r4, #0x32 - ldrsh r1, [r3, r4] - subs r0, r0, r1 - adds r1, r2, #0 - muls r1, r2, r1 - adds r2, r0, #0 - muls r2, r0, r2 - adds r0, r2, #0 - adds r1, r1, r0 - ldr r0, _080610CC @ =0x000008FF - cmp r1, r0 - bgt _080610D0 - movs r0, #0x90 - lsls r0, r0, #1 - b _080610F0 - .align 2, 0 -_080610C8: .4byte gPlayerEntity -_080610CC: .4byte 0x000008FF -_080610D0: - ldr r0, _080610E4 @ =0x000018FF - cmp r1, r0 - bgt _080610EC - ldr r4, _080610E8 @ =0xFFFFF700 - adds r0, r1, r4 - asrs r0, r0, #4 - movs r1, #0x90 - lsls r1, r1, #1 - adds r0, r0, r1 - b _080610F0 - .align 2, 0 -_080610E4: .4byte 0x000018FF -_080610E8: .4byte 0xFFFFF700 -_080610EC: - movs r0, #0x88 - lsls r0, r0, #2 -_080610F0: - strh r0, [r3, #0x24] - movs r2, #0x24 - ldrsh r1, [r3, r2] - movs r0, #0x90 - lsls r0, r0, #1 - cmp r1, r0 - bne _08061102 - movs r4, #4 - b _0806110C -_08061102: - ldr r0, _0806111C @ =0x0000015F - movs r4, #0xc - cmp r1, r0 - bgt _0806110C - movs r4, #8 -_0806110C: - adds r0, r3, #0 - adds r1, r5, #0 - adds r2, r6, #0 - adds r3, r4, #0 - bl sub_08061120 - pop {r4, r5, r6, pc} - .align 2, 0 -_0806111C: .4byte 0x0000015F - - thumb_func_start sub_08061120 -sub_08061120: @ 0x08061120 - push {r4, r5, r6, r7, lr} - adds r6, r0, #0 - adds r4, r1, #0 - adds r5, r2, #0 - adds r7, r3, #0 - movs r1, #0x2e - ldrsh r0, [r6, r1] - movs r2, #0x32 - ldrsh r1, [r6, r2] - adds r2, r4, #0 - adds r3, r5, #0 - bl sub_080045D4 - strb r0, [r6, #0x15] - adds r0, r6, #0 - adds r0, #0x6c - ldrb r0, [r0] - cmp r7, r0 - bne _08061158 - ldrb r0, [r6, #0x15] - ldrb r1, [r6, #0x14] - lsls r1, r1, #2 - subs r0, r0, r1 - adds r0, #5 - movs r1, #0x1f - ands r0, r1 - cmp r0, #0xa - ble _0806116C -_08061158: - ldrb r0, [r6, #0x15] - adds r0, #4 - movs r1, #0x18 - ands r0, r1 - asrs r0, r0, #2 - strb r0, [r6, #0x14] - adds r0, r6, #0 - adds r1, r7, #0 - bl sub_08060E70 -_0806116C: - pop {r4, r5, r6, r7, pc} - .align 2, 0 - - thumb_func_start sub_08061170 -sub_08061170: @ 0x08061170 - push {r4, r5, lr} - adds r4, r0, #0 - bl UpdateAnimationSingleFrame - adds r0, r4, #0 - bl sub_080AF1EC - cmp r0, #0 - bne _080611CA - adds r0, r4, #0 - bl sub_080611D4 - adds r5, r0, #0 - cmp r5, #0xff - beq _080611C6 - movs r0, #6 - strb r0, [r4, #0xc] - adds r0, r4, #0 - movs r1, #1 - bl sub_08079FD4 - lsls r0, r0, #4 - subs r0, #4 - lsls r0, r0, #0xc - str r0, [r4, #0x20] - movs r1, #0x80 - lsls r1, r1, #1 - strh r1, [r4, #0x24] - strb r5, [r4, #0x15] - lsrs r1, r5, #2 - strb r1, [r4, #0x14] - lsrs r0, r0, #0x10 - cmp r0, #0 - beq _080611BE - adds r0, r4, #0 - movs r1, #0x14 - bl sub_08060E70 - b _080611C6 -_080611BE: - adds r0, r4, #0 - movs r1, #0x18 - bl sub_08060E70 -_080611C6: - movs r0, #0 - b _080611D2 -_080611CA: - adds r0, r4, #0 - bl sub_08016AD2 - movs r0, #1 -_080611D2: - pop {r4, r5, pc} - - thumb_func_start sub_080611D4 -sub_080611D4: @ 0x080611D4 - push {r4, lr} - adds r4, r0, #0 - ldrb r1, [r4, #0x14] - movs r0, #6 - ands r0, r1 - ldr r1, _08061218 @ =gUnk_0810AC4C - adds r0, r0, r1 - movs r1, #0 - ldrsb r1, [r0, r1] - movs r2, #1 - ldrsb r2, [r0, r2] - adds r0, r4, #0 - bl sub_080002B4 - adds r3, r0, #0 - ldr r2, _0806121C @ =gUnk_0810AC54 -_080611F4: - ldrb r0, [r2] - cmp r0, r3 - bne _08061220 - ldrb r0, [r2, #1] - ldrb r1, [r4, #0x14] - lsrs r0, r0, #2 - cmp r1, r0 - bne _08061220 - ldrb r0, [r4, #0xf] - adds r0, #1 - strb r0, [r4, #0xf] - lsls r0, r0, #0x18 - lsrs r0, r0, #0x18 - cmp r0, #7 - bls _0806122A - ldrb r0, [r2, #1] - b _0806122C - .align 2, 0 -_08061218: .4byte gUnk_0810AC4C -_0806121C: .4byte gUnk_0810AC54 -_08061220: - adds r2, #2 - ldrb r0, [r2] - cmp r0, #0 - bne _080611F4 - strb r0, [r4, #0xf] -_0806122A: - movs r0, #0xff -_0806122C: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_08061230 -sub_08061230: @ 0x08061230 - push {r4, lr} - adds r4, r0, #0 - ldr r0, [r4, #0x64] - ldrb r1, [r0] - movs r0, #1 - ands r0, r1 - cmp r0, #0 - bne _08061302 - adds r1, r4, #0 - adds r1, #0x41 - ldrb r3, [r1] - movs r0, #0x80 - ands r0, r3 - adds r2, r1, #0 - cmp r0, #0 - beq _0806133A - movs r0, #0x7f - ands r0, r3 - cmp r0, #0x1f - bhi _080612E8 - lsls r0, r0, #2 - ldr r1, _08061264 @ =_08061268 - adds r0, r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08061264: .4byte _08061268 -_08061268: @ jump table - .4byte _0806133A @ case 0 - .4byte _0806133A @ case 1 - .4byte _0806133A @ case 2 - .4byte _0806133A @ case 3 - .4byte _080612E8 @ case 4 - .4byte _080612E8 @ case 5 - .4byte _080612E8 @ case 6 - .4byte _080612E8 @ case 7 - .4byte _080612E8 @ case 8 - .4byte _080612E8 @ case 9 - .4byte _080612E8 @ case 10 - .4byte _080612E8 @ case 11 - .4byte _080612E8 @ case 12 - .4byte _080612E8 @ case 13 - .4byte _080612E8 @ case 14 - .4byte _0806133A @ case 15 - .4byte _080612E8 @ case 16 - .4byte _080612E8 @ case 17 - .4byte _080612E8 @ case 18 - .4byte _0806133A @ case 19 - .4byte _080612E8 @ case 20 - .4byte _080612E8 @ case 21 - .4byte _080612E8 @ case 22 - .4byte _080612E8 @ case 23 - .4byte _080612E8 @ case 24 - .4byte _080612E8 @ case 25 - .4byte _080612E8 @ case 26 - .4byte _0806133A @ case 27 - .4byte _080612E8 @ case 28 - .4byte _080612E8 @ case 29 - .4byte _0806133A @ case 30 - .4byte _0806133A @ case 31 -_080612E8: - ldr r2, [r4, #0x64] - ldrb r1, [r2] - movs r0, #1 - orrs r0, r1 - strb r0, [r2] - ldrb r1, [r4, #0x14] - lsrs r1, r1, #1 - adds r1, #0x40 - adds r0, r4, #0 - bl InitAnimationForceUpdate - movs r0, #1 - b _08061356 -_08061302: - adds r0, r4, #0 - bl UpdateAnimationSingleFrame - adds r0, r4, #0 - adds r0, #0x5a - ldrb r1, [r0] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - bne _0806131A - movs r0, #1 - b _08061356 -_0806131A: - ldr r2, [r4, #0x64] - ldrb r1, [r2] - movs r0, #0xfe - ands r0, r1 - strb r0, [r2] - adds r0, r4, #0 - adds r0, #0x6c - ldrb r1, [r4, #0x14] - lsrs r1, r1, #1 - ldrb r0, [r0] - adds r1, r1, r0 - adds r0, r4, #0 - bl InitAnimationForceUpdate - adds r2, r4, #0 - adds r2, #0x41 -_0806133A: - ldrb r0, [r2] - movs r1, #0x7f - ands r1, r0 - strb r1, [r2] - adds r1, r4, #0 - adds r1, #0x3d - ldrb r2, [r1] - movs r0, #0 - ldrsb r0, [r1, r0] - cmp r0, #0 - beq _08061354 - adds r0, r2, #1 - strb r0, [r1] -_08061354: - movs r0, #0 -_08061356: - pop {r4, pc} - - thumb_func_start sub_08061358 -sub_08061358: @ 0x08061358 - push {r4, r5, r6, lr} - adds r4, r0, #0 - ldrb r5, [r4, #0xd] - cmp r5, #1 - beq _0806139C - cmp r5, #1 - bgt _0806136C - cmp r5, #0 - beq _08061376 - b _08061460 -_0806136C: - cmp r5, #2 - beq _080613D0 - cmp r5, #3 - beq _0806141E - b _08061460 -_08061376: - adds r0, r4, #0 - bl UpdateAnimationSingleFrame - adds r0, r4, #0 - adds r0, #0x5a - ldrb r1, [r0] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _08061460 - movs r0, #1 - strb r0, [r4, #0xd] - movs r0, #0xf - strb r0, [r4, #0xe] - adds r0, r4, #0 - movs r1, #0 - bl sub_08060E70 - b _08061460 -_0806139C: - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _08061460 - bl Random - adds r6, r0, #0 - ands r5, r6 - cmp r5, #0 - beq _080613FA - movs r0, #2 - strb r0, [r4, #0xd] - ldr r3, _080613CC @ =gUnk_0810AC5D - ldrb r0, [r4, #0x14] - lsls r0, r0, #1 - lsrs r1, r6, #4 - movs r2, #3 - ands r1, r2 - adds r0, r0, r1 - adds r0, r0, r3 - b _0806143A - .align 2, 0 -_080613CC: .4byte gUnk_0810AC5D -_080613D0: - adds r0, r4, #0 - bl UpdateAnimationSingleFrame - adds r0, r4, #0 - adds r0, #0x5a - ldrb r1, [r0] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _08061460 - movs r0, #0x18 - ands r0, r1 - lsrs r0, r0, #2 - strb r0, [r4, #0x14] - bl Random - adds r1, r0, #0 - movs r0, #1 - ands r1, r0 - cmp r1, #0 - beq _08061412 -_080613FA: - movs r0, #3 - strb r0, [r4, #0xd] - movs r0, #0x18 - ands r6, r0 - adds r0, r6, #0 - adds r0, #0x1e - strb r0, [r4, #0xe] - adds r0, r4, #0 - movs r1, #4 - bl sub_08060E70 - b _08061460 -_08061412: - strb r1, [r4, #0xd] - adds r0, r4, #0 - movs r1, #0x10 - bl sub_08060E70 - b _08061460 -_0806141E: - adds r0, r4, #0 - bl sub_08061170 - cmp r0, #0 - bne _08061448 - movs r0, #2 - strb r0, [r4, #0xd] - ldr r2, _08061444 @ =gUnk_0810AC5D - ldrb r0, [r4, #0x14] - lsls r0, r0, #1 - lsrs r1, r6, #4 - ands r1, r5 - adds r0, r0, r1 - adds r0, r0, r2 -_0806143A: - ldrb r1, [r0] - adds r0, r4, #0 - bl InitAnimationForceUpdate - b _08061460 - .align 2, 0 -_08061444: .4byte gUnk_0810AC5D -_08061448: - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - lsrs r0, r0, #0x18 - cmp r0, #0 - bne _08061460 - strb r0, [r4, #0xd] - adds r0, r4, #0 - movs r1, #0x10 - bl sub_08060E70 -_08061460: - pop {r4, r5, r6, pc} - .align 2, 0 - - thumb_func_start sub_08061464 -sub_08061464: @ 0x08061464 - push {r4, r5, r6, r7, lr} - mov r7, sb - mov r6, r8 - push {r6, r7} - adds r4, r0, #0 - mov r8, r1 - adds r5, r2, #0 - movs r0, #0x2e - ldrsh r7, [r4, r0] - movs r1, #0x32 - ldrsh r6, [r4, r1] - adds r0, r7, #0 - adds r1, r6, #0 - mov r2, r8 - adds r3, r5, #0 - bl sub_080045D4 - adds r0, #2 - movs r1, #0x1c - ands r0, r1 - lsrs r0, r0, #2 - cmp r0, #7 - bls _08061494 - b _08061612 -_08061494: - lsls r0, r0, #2 - ldr r1, _080614A0 @ =_080614A4 - adds r0, r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080614A0: .4byte _080614A4 -_080614A4: @ jump table - .4byte _080614C4 @ case 0 - .4byte _080614E2 @ case 1 - .4byte _08061514 @ case 2 - .4byte _08061544 @ case 3 - .4byte _08061566 @ case 4 - .4byte _08061584 @ case 5 - .4byte _080615B4 @ case 6 - .4byte _080615E4 @ case 7 -_080614C4: - adds r0, r4, #0 - adds r0, #0x6e - strh r5, [r0] - movs r1, #0x2e - ldrsh r0, [r4, r1] - cmp r0, r8 - ble _08061504 - adds r2, r6, #0 - subs r2, #8 - adds r0, r4, #0 - adds r1, r7, #0 - mov r3, r8 - bl sub_08061630 - b _08061612 -_080614E2: - movs r0, #0x6e - adds r0, r0, r4 - mov sb, r0 - mov r1, r8 - strh r1, [r0] - adds r1, r7, #0 - adds r1, #8 - adds r0, r4, #0 - adds r2, r6, #0 - adds r3, r5, #0 - bl sub_08061720 - cmp r0, #0 - beq _08061500 - b _08061612 -_08061500: - mov r0, sb - strh r5, [r0] -_08061504: - adds r2, r6, #0 - subs r2, #8 - adds r0, r4, #0 - adds r1, r7, #0 - mov r3, r8 - bl sub_080616A8 - b _08061612 -_08061514: - adds r0, r4, #0 - adds r0, #0x6e - mov r1, r8 - strh r1, [r0] - movs r1, #0x32 - ldrsh r0, [r4, r1] - cmp r0, r5 - ble _08061534 - adds r1, r7, #0 - adds r1, #8 - adds r0, r4, #0 - adds r2, r6, #0 - adds r3, r5, #0 - bl sub_08061720 - b _08061612 -_08061534: - adds r1, r7, #0 - adds r1, #8 - adds r0, r4, #0 - adds r2, r6, #0 - adds r3, r5, #0 - bl sub_08061798 - b _08061612 -_08061544: - movs r0, #0x6e - adds r0, r0, r4 - mov sb, r0 - mov r1, r8 - strh r1, [r0] - adds r1, r7, #0 - adds r1, #8 - adds r0, r4, #0 - adds r2, r6, #0 - adds r3, r5, #0 - bl sub_08061798 - cmp r0, #0 - bne _08061612 - mov r0, sb - strh r5, [r0] - b _08061574 -_08061566: - adds r0, r4, #0 - adds r0, #0x6e - strh r5, [r0] - movs r1, #0x2e - ldrsh r0, [r4, r1] - cmp r0, r8 - bgt _080615A4 -_08061574: - adds r2, r6, #0 - adds r2, #8 - adds r0, r4, #0 - adds r1, r7, #0 - mov r3, r8 - bl sub_08061888 - b _08061612 -_08061584: - movs r0, #0x6e - adds r0, r0, r4 - mov sb, r0 - mov r1, r8 - strh r1, [r0] - adds r1, r7, #0 - subs r1, #8 - adds r0, r4, #0 - adds r2, r6, #0 - adds r3, r5, #0 - bl sub_08061978 - cmp r0, #0 - bne _08061612 - mov r0, sb - strh r5, [r0] -_080615A4: - adds r2, r6, #0 - adds r2, #8 - adds r0, r4, #0 - adds r1, r7, #0 - mov r3, r8 - bl sub_08061810 - b _08061612 -_080615B4: - adds r0, r4, #0 - adds r0, #0x6e - mov r1, r8 - strh r1, [r0] - movs r1, #0x32 - ldrsh r0, [r4, r1] - cmp r0, r5 - ble _080615D4 - adds r1, r7, #0 - subs r1, #8 - adds r0, r4, #0 - adds r2, r6, #0 - adds r3, r5, #0 - bl sub_08061900 - b _08061612 -_080615D4: - adds r1, r7, #0 - subs r1, #8 - adds r0, r4, #0 - adds r2, r6, #0 - adds r3, r5, #0 - bl sub_08061978 - b _08061612 -_080615E4: - movs r0, #0x6e - adds r0, r0, r4 - mov sb, r0 - mov r1, r8 - strh r1, [r0] - adds r1, r7, #0 - subs r1, #8 - adds r0, r4, #0 - adds r2, r6, #0 - adds r3, r5, #0 - bl sub_08061900 - cmp r0, #0 - bne _08061612 - mov r0, sb - strh r5, [r0] - adds r2, r6, #0 - subs r2, #8 - adds r0, r4, #0 - adds r1, r7, #0 - mov r3, r8 - bl sub_08061630 -_08061612: - ldr r0, [r4, #0x64] - ldrb r1, [r0] - movs r0, #8 - ands r0, r1 - lsls r0, r0, #0x18 - lsrs r1, r0, #0x18 - cmp r1, #0 - bne _08061628 - movs r0, #3 - strb r0, [r4, #0xc] - strb r1, [r4, #0xd] -_08061628: - pop {r3, r4} - mov r8, r3 - mov sb, r4 - pop {r4, r5, r6, r7, pc} - - thumb_func_start sub_08061630 -sub_08061630: @ 0x08061630 - push {r4, r5, r6, r7, lr} - mov r7, sb - mov r6, r8 - push {r6, r7} - adds r5, r0, #0 - adds r6, r1, #0 - adds r4, r2, #0 - mov sb, r3 - mov r8, r4 - adds r0, #0x38 - ldrb r0, [r0] - ldr r7, _08061650 @ =gUnk_02027EB4 - cmp r0, #2 - bne _0806168C - ldr r7, _08061654 @ =gUnk_0200D654 - b _0806168C - .align 2, 0 -_08061650: .4byte gUnk_02027EB4 -_08061654: .4byte gUnk_0200D654 -_08061658: - adds r0, r7, #0 - adds r1, r6, #0 - adds r2, r4, #0 - mov r3, sb - bl sub_08061A74 - cmp r0, #0 - beq _0806168A - ldr r0, [r5, #0x64] - strh r6, [r0, #0xe] - ldr r0, [r5, #0x64] - mov r1, r8 - strh r1, [r0, #0x10] - ldr r2, [r5, #0x64] - ldrb r1, [r2] - movs r0, #8 - orrs r0, r1 - strb r0, [r2] - adds r0, r5, #0 - adds r0, #0x6e - ldrh r0, [r0] - cmp r0, r4 - blt _0806168A - movs r0, #1 - b _0806169E -_0806168A: - subs r4, #8 -_0806168C: - adds r0, r7, #0 - adds r1, r6, #0 - adds r2, r4, #0 - movs r3, #6 - bl sub_080AE4CC - cmp r0, #0 - beq _08061658 - movs r0, #0 -_0806169E: - pop {r3, r4} - mov r8, r3 - mov sb, r4 - pop {r4, r5, r6, r7, pc} - .align 2, 0 - - thumb_func_start sub_080616A8 -sub_080616A8: @ 0x080616A8 - push {r4, r5, r6, r7, lr} - mov r7, sb - mov r6, r8 - push {r6, r7} - adds r5, r0, #0 - adds r6, r1, #0 - adds r4, r2, #0 - mov sb, r3 - mov r8, r4 - adds r0, #0x38 - ldrb r0, [r0] - ldr r7, _080616C8 @ =gUnk_02027EB4 - cmp r0, #2 - bne _08061704 - ldr r7, _080616CC @ =gUnk_0200D654 - b _08061704 - .align 2, 0 -_080616C8: .4byte gUnk_02027EB4 -_080616CC: .4byte gUnk_0200D654 -_080616D0: - adds r0, r7, #0 - adds r1, r6, #0 - adds r2, r4, #0 - mov r3, sb - bl sub_08061A1C - cmp r0, #0 - beq _08061702 - ldr r0, [r5, #0x64] - strh r6, [r0, #0xe] - ldr r0, [r5, #0x64] - mov r1, r8 - strh r1, [r0, #0x10] - ldr r2, [r5, #0x64] - ldrb r1, [r2] - movs r0, #8 - orrs r0, r1 - strb r0, [r2] - adds r0, r5, #0 - adds r0, #0x6e - ldrh r0, [r0] - cmp r0, r4 - blt _08061702 - movs r0, #1 - b _08061716 -_08061702: - subs r4, #8 -_08061704: - adds r0, r7, #0 - adds r1, r6, #0 - adds r2, r4, #0 - movs r3, #6 - bl sub_080AE4CC - cmp r0, #0 - beq _080616D0 - movs r0, #0 -_08061716: - pop {r3, r4} - mov r8, r3 - mov sb, r4 - pop {r4, r5, r6, r7, pc} - .align 2, 0 - - thumb_func_start sub_08061720 -sub_08061720: @ 0x08061720 - push {r4, r5, r6, r7, lr} - mov r7, sb - mov r6, r8 - push {r6, r7} - adds r5, r0, #0 - adds r4, r1, #0 - adds r6, r2, #0 - mov sb, r3 - mov r8, r4 - adds r0, #0x38 - ldrb r0, [r0] - ldr r7, _08061740 @ =gUnk_02027EB4 - cmp r0, #2 - bne _0806177C - ldr r7, _08061744 @ =gUnk_0200D654 - b _0806177C - .align 2, 0 -_08061740: .4byte gUnk_02027EB4 -_08061744: .4byte gUnk_0200D654 -_08061748: - adds r0, r7, #0 - adds r1, r4, #0 - adds r2, r6, #0 - mov r3, sb - bl sub_080619F0 - cmp r0, #0 - beq _0806177A - ldr r0, [r5, #0x64] - mov r1, r8 - strh r1, [r0, #0xe] - ldr r0, [r5, #0x64] - strh r6, [r0, #0x10] - ldr r2, [r5, #0x64] - ldrb r1, [r2] - movs r0, #8 - orrs r0, r1 - strb r0, [r2] - adds r0, r5, #0 - adds r0, #0x6e - ldrh r0, [r0] - cmp r0, r4 - bgt _0806177A - movs r0, #1 - b _0806178E -_0806177A: - adds r4, #8 -_0806177C: - adds r0, r7, #0 - adds r1, r4, #0 - adds r2, r6, #0 - movs r3, #6 - bl sub_080AE4CC - cmp r0, #0 - beq _08061748 - movs r0, #0 -_0806178E: - pop {r3, r4} - mov r8, r3 - mov sb, r4 - pop {r4, r5, r6, r7, pc} - .align 2, 0 - - thumb_func_start sub_08061798 -sub_08061798: @ 0x08061798 - push {r4, r5, r6, r7, lr} - mov r7, sb - mov r6, r8 - push {r6, r7} - adds r5, r0, #0 - adds r4, r1, #0 - adds r6, r2, #0 - mov sb, r3 - mov r8, r4 - adds r0, #0x38 - ldrb r0, [r0] - ldr r7, _080617B8 @ =gUnk_02027EB4 - cmp r0, #2 - bne _080617F4 - ldr r7, _080617BC @ =gUnk_0200D654 - b _080617F4 - .align 2, 0 -_080617B8: .4byte gUnk_02027EB4 -_080617BC: .4byte gUnk_0200D654 -_080617C0: - adds r0, r7, #0 - adds r1, r4, #0 - adds r2, r6, #0 - mov r3, sb - bl sub_08061A48 - cmp r0, #0 - beq _080617F2 - ldr r0, [r5, #0x64] - mov r1, r8 - strh r1, [r0, #0xe] - ldr r0, [r5, #0x64] - strh r6, [r0, #0x10] - ldr r2, [r5, #0x64] - ldrb r1, [r2] - movs r0, #8 - orrs r0, r1 - strb r0, [r2] - adds r0, r5, #0 - adds r0, #0x6e - ldrh r0, [r0] - cmp r0, r4 - bgt _080617F2 - movs r0, #1 - b _08061806 -_080617F2: - adds r4, #8 -_080617F4: - adds r0, r7, #0 - adds r1, r4, #0 - adds r2, r6, #0 - movs r3, #6 - bl sub_080AE4CC - cmp r0, #0 - beq _080617C0 - movs r0, #0 -_08061806: - pop {r3, r4} - mov r8, r3 - mov sb, r4 - pop {r4, r5, r6, r7, pc} - .align 2, 0 - - thumb_func_start sub_08061810 -sub_08061810: @ 0x08061810 - push {r4, r5, r6, r7, lr} - mov r7, sb - mov r6, r8 - push {r6, r7} - adds r5, r0, #0 - adds r6, r1, #0 - adds r4, r2, #0 - mov sb, r3 - mov r8, r4 - adds r0, #0x38 - ldrb r0, [r0] - ldr r7, _08061830 @ =gUnk_02027EB4 - cmp r0, #2 - bne _0806186C - ldr r7, _08061834 @ =gUnk_0200D654 - b _0806186C - .align 2, 0 -_08061830: .4byte gUnk_02027EB4 -_08061834: .4byte gUnk_0200D654 -_08061838: - adds r0, r7, #0 - adds r1, r6, #0 - adds r2, r4, #0 - mov r3, sb - bl sub_08061A74 - cmp r0, #0 - beq _0806186A - ldr r0, [r5, #0x64] - strh r6, [r0, #0xe] - ldr r0, [r5, #0x64] - mov r1, r8 - strh r1, [r0, #0x10] - ldr r2, [r5, #0x64] - ldrb r1, [r2] - movs r0, #8 - orrs r0, r1 - strb r0, [r2] - adds r0, r5, #0 - adds r0, #0x6e - ldrh r0, [r0] - cmp r0, r4 - bgt _0806186A - movs r0, #1 - b _0806187E -_0806186A: - adds r4, #8 -_0806186C: - adds r0, r7, #0 - adds r1, r6, #0 - adds r2, r4, #0 - movs r3, #6 - bl sub_080AE4CC - cmp r0, #0 - beq _08061838 - movs r0, #0 -_0806187E: - pop {r3, r4} - mov r8, r3 - mov sb, r4 - pop {r4, r5, r6, r7, pc} - .align 2, 0 - - thumb_func_start sub_08061888 -sub_08061888: @ 0x08061888 - push {r4, r5, r6, r7, lr} - mov r7, sb - mov r6, r8 - push {r6, r7} - adds r5, r0, #0 - adds r6, r1, #0 - adds r4, r2, #0 - mov sb, r3 - mov r8, r4 - adds r0, #0x38 - ldrb r0, [r0] - ldr r7, _080618A8 @ =gUnk_02027EB4 - cmp r0, #2 - bne _080618E4 - ldr r7, _080618AC @ =gUnk_0200D654 - b _080618E4 - .align 2, 0 -_080618A8: .4byte gUnk_02027EB4 -_080618AC: .4byte gUnk_0200D654 -_080618B0: - adds r0, r7, #0 - adds r1, r6, #0 - adds r2, r4, #0 - mov r3, sb - bl sub_08061A1C - cmp r0, #0 - beq _080618E2 - ldr r0, [r5, #0x64] - strh r6, [r0, #0xe] - ldr r0, [r5, #0x64] - mov r1, r8 - strh r1, [r0, #0x10] - ldr r2, [r5, #0x64] - ldrb r1, [r2] - movs r0, #8 - orrs r0, r1 - strb r0, [r2] - adds r0, r5, #0 - adds r0, #0x6e - ldrh r0, [r0] - cmp r0, r4 - bgt _080618E2 - movs r0, #1 - b _080618F6 -_080618E2: - adds r4, #8 -_080618E4: - adds r0, r7, #0 - adds r1, r6, #0 - adds r2, r4, #0 - movs r3, #6 - bl sub_080AE4CC - cmp r0, #0 - beq _080618B0 - movs r0, #0 -_080618F6: - pop {r3, r4} - mov r8, r3 - mov sb, r4 - pop {r4, r5, r6, r7, pc} - .align 2, 0 - - thumb_func_start sub_08061900 -sub_08061900: @ 0x08061900 - push {r4, r5, r6, r7, lr} - mov r7, sb - mov r6, r8 - push {r6, r7} - adds r5, r0, #0 - adds r4, r1, #0 - adds r6, r2, #0 - mov sb, r3 - mov r8, r4 - adds r0, #0x38 - ldrb r0, [r0] - ldr r7, _08061920 @ =gUnk_02027EB4 - cmp r0, #2 - bne _0806195C - ldr r7, _08061924 @ =gUnk_0200D654 - b _0806195C - .align 2, 0 -_08061920: .4byte gUnk_02027EB4 -_08061924: .4byte gUnk_0200D654 -_08061928: - adds r0, r7, #0 - adds r1, r4, #0 - adds r2, r6, #0 - mov r3, sb - bl sub_080619F0 - cmp r0, #0 - beq _0806195A - ldr r0, [r5, #0x64] - mov r1, r8 - strh r1, [r0, #0xe] - ldr r0, [r5, #0x64] - strh r6, [r0, #0x10] - ldr r2, [r5, #0x64] - ldrb r1, [r2] - movs r0, #8 - orrs r0, r1 - strb r0, [r2] - adds r0, r5, #0 - adds r0, #0x6e - ldrh r0, [r0] - cmp r0, r4 - blt _0806195A - movs r0, #1 - b _0806196E -_0806195A: - subs r4, #8 -_0806195C: - adds r0, r7, #0 - adds r1, r4, #0 - adds r2, r6, #0 - movs r3, #6 - bl sub_080AE4CC - cmp r0, #0 - beq _08061928 - movs r0, #0 -_0806196E: - pop {r3, r4} - mov r8, r3 - mov sb, r4 - pop {r4, r5, r6, r7, pc} - .align 2, 0 - - thumb_func_start sub_08061978 -sub_08061978: @ 0x08061978 - push {r4, r5, r6, r7, lr} - mov r7, sb - mov r6, r8 - push {r6, r7} - adds r5, r0, #0 - adds r4, r1, #0 - adds r6, r2, #0 - mov sb, r3 - mov r8, r4 - adds r0, #0x38 - ldrb r0, [r0] - ldr r7, _08061998 @ =gUnk_02027EB4 - cmp r0, #2 - bne _080619D4 - ldr r7, _0806199C @ =gUnk_0200D654 - b _080619D4 - .align 2, 0 -_08061998: .4byte gUnk_02027EB4 -_0806199C: .4byte gUnk_0200D654 -_080619A0: - adds r0, r7, #0 - adds r1, r4, #0 - adds r2, r6, #0 - mov r3, sb - bl sub_08061A48 - cmp r0, #0 - beq _080619D2 - ldr r0, [r5, #0x64] - mov r1, r8 - strh r1, [r0, #0xe] - ldr r0, [r5, #0x64] - strh r6, [r0, #0x10] - ldr r2, [r5, #0x64] - ldrb r1, [r2] - movs r0, #8 - orrs r0, r1 - strb r0, [r2] - adds r0, r5, #0 - adds r0, #0x6e - ldrh r0, [r0] - cmp r0, r4 - blt _080619D2 - movs r0, #1 - b _080619E6 -_080619D2: - subs r4, #8 -_080619D4: - adds r0, r7, #0 - adds r1, r4, #0 - adds r2, r6, #0 - movs r3, #6 - bl sub_080AE4CC - cmp r0, #0 - beq _080619A0 - movs r0, #0 -_080619E6: - pop {r3, r4} - mov r8, r3 - mov sb, r4 - pop {r4, r5, r6, r7, pc} - .align 2, 0 - - thumb_func_start sub_080619F0 -sub_080619F0: @ 0x080619F0 - push {r4, r5, r6, r7, lr} - adds r7, r0, #0 - adds r6, r1, #0 - adds r4, r2, #0 - adds r5, r3, #0 - cmp r5, r4 - bgt _08061A18 -_080619FE: - adds r0, r7, #0 - adds r1, r6, #0 - adds r2, r4, #0 - movs r3, #6 - bl sub_080AE4CC - cmp r0, #0 - beq _08061A12 - movs r0, #0 - b _08061A1A -_08061A12: - subs r4, #8 - cmp r5, r4 - ble _080619FE -_08061A18: - movs r0, #1 -_08061A1A: - pop {r4, r5, r6, r7, pc} - - thumb_func_start sub_08061A1C -sub_08061A1C: @ 0x08061A1C - push {r4, r5, r6, r7, lr} - adds r7, r0, #0 - adds r4, r1, #0 - adds r6, r2, #0 - adds r5, r3, #0 - cmp r5, r4 - blt _08061A44 -_08061A2A: - adds r0, r7, #0 - adds r1, r4, #0 - adds r2, r6, #0 - movs r3, #6 - bl sub_080AE4CC - cmp r0, #0 - beq _08061A3E - movs r0, #0 - b _08061A46 -_08061A3E: - adds r4, #8 - cmp r5, r4 - bge _08061A2A -_08061A44: - movs r0, #1 -_08061A46: - pop {r4, r5, r6, r7, pc} - - thumb_func_start sub_08061A48 -sub_08061A48: @ 0x08061A48 - push {r4, r5, r6, r7, lr} - adds r7, r0, #0 - adds r6, r1, #0 - adds r4, r2, #0 - adds r5, r3, #0 - cmp r5, r4 - blt _08061A70 -_08061A56: - adds r0, r7, #0 - adds r1, r6, #0 - adds r2, r4, #0 - movs r3, #6 - bl sub_080AE4CC - cmp r0, #0 - beq _08061A6A - movs r0, #0 - b _08061A72 -_08061A6A: - adds r4, #8 - cmp r5, r4 - bge _08061A56 -_08061A70: - movs r0, #1 -_08061A72: - pop {r4, r5, r6, r7, pc} - - thumb_func_start sub_08061A74 -sub_08061A74: @ 0x08061A74 - push {r4, r5, r6, r7, lr} - adds r7, r0, #0 - adds r4, r1, #0 - adds r6, r2, #0 - adds r5, r3, #0 - cmp r5, r4 - bgt _08061A9C -_08061A82: - adds r0, r7, #0 - adds r1, r4, #0 - adds r2, r6, #0 - movs r3, #6 - bl sub_080AE4CC - cmp r0, #0 - beq _08061A96 - movs r0, #0 - b _08061A9E -_08061A96: - subs r4, #8 - cmp r5, r4 - ble _08061A82 -_08061A9C: - movs r0, #1 -_08061A9E: - pop {r4, r5, r6, r7, pc} - - thumb_func_start sub_08061AA0 -sub_08061AA0: @ 0x08061AA0 - push {lr} - bl DeleteThisEntity - pop {pc} - - thumb_func_start sub_08061AA8 -sub_08061AA8: @ 0x08061AA8 - push {r4, lr} - adds r4, r0, #0 - ldr r1, _08061AC8 @ =gUnk_0810AC70 - ldrb r0, [r4, #0xc] - lsls r0, r0, #2 - adds r0, r0, r1 - ldr r1, [r0] - adds r0, r4, #0 - bl _call_via_r1 - ldr r0, [r4, #0x50] - adds r1, r4, #0 - bl CopyPosition - pop {r4, pc} - .align 2, 0 -_08061AC8: .4byte gUnk_0810AC70 - - thumb_func_start sub_08061ACC -sub_08061ACC: @ 0x08061ACC - push {r4, lr} - adds r4, r0, #0 - ldrb r1, [r4, #0x10] - movs r0, #0x20 - movs r2, #0 - orrs r0, r1 - strb r0, [r4, #0x10] - movs r0, #1 - strb r0, [r4, #0xc] - movs r0, #0xff - strb r0, [r4, #0xd] - strb r2, [r4, #0xe] - ldrb r1, [r4, #0x17] - movs r0, #0xfe - ands r0, r1 - strb r0, [r4, #0x17] - adds r0, r4, #0 - bl sub_08078778 - adds r0, r4, #0 - bl sub_08061AFC - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_08061AFC -sub_08061AFC: @ 0x08061AFC - push {lr} - adds r1, r0, #0 - movs r2, #0 - ldrb r0, [r1, #0xd] - cmp r0, #0 - beq _08061B12 - strb r2, [r1, #0xd] - ldr r0, _08061B14 @ =gUnk_0810B660 - ldr r0, [r0] - str r0, [r1, #0x68] - strb r2, [r1, #0xe] -_08061B12: - pop {pc} - .align 2, 0 -_08061B14: .4byte gUnk_0810B660 - - thumb_func_start sub_08061B18 -sub_08061B18: @ 0x08061B18 - push {r4, lr} - adds r4, r0, #0 - adds r1, r4, #0 - adds r1, #0x39 - movs r0, #0 - ldrsb r0, [r1, r0] - cmp r0, #0 - beq _08061B54 - cmp r0, #1 - bne _08061B54 - movs r0, #0 - strb r0, [r1] - adds r0, r4, #0 - bl sub_08061AFC - ldr r2, [r4, #0x68] - ldrb r0, [r4, #0xe] - adds r1, r0, #1 - strb r1, [r4, #0xe] - lsls r0, r0, #0x18 - lsrs r0, r0, #0x17 - adds r2, r2, r0 - ldrh r0, [r2, #2] - cmp r0, #0 - bne _08061B4C - strb r0, [r4, #0xe] -_08061B4C: - ldrh r0, [r2] - adds r1, r4, #0 - bl TextboxNoOverlap -_08061B54: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_08061B58 -sub_08061B58: @ 0x08061B58 - push {r4, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xc] - cmp r0, #0 - bne _08061B6E - movs r0, #1 - strb r0, [r4, #0xc] - adds r0, r4, #0 - movs r1, #2 - bl InitAnimationForceUpdate -_08061B6E: - ldr r0, _08061B88 @ =gScreenTransition - adds r0, #0x2c - ldrb r0, [r0] - cmp r0, #2 - bne _08061B7E - adds r0, r4, #0 - bl UpdateAnimationSingleFrame -_08061B7E: - adds r0, r4, #0 - bl sub_0806FD3C - pop {r4, pc} - .align 2, 0 -_08061B88: .4byte gScreenTransition diff --git a/linker.ld b/linker.ld index 62e2c4ab..7da2ddea 100644 --- a/linker.ld +++ b/linker.ld @@ -555,7 +555,6 @@ SECTIONS { src/npc/postman.o(.text); asm/postman.o(.text); src/npc/npc5.o(.text); - asm/npc5.o(.text); src/npc/townsperson.o(.text); asm/kid.o(.text); src/npc/npc9.o(.text); diff --git a/src/npc/npc5.c b/src/npc/npc5.c new file mode 100644 index 00000000..6d1a7699 --- /dev/null +++ b/src/npc/npc5.c @@ -0,0 +1,943 @@ +#include "global.h" +#include "entity.h" +#include "player.h" +#include "room.h" +#include "coord.h" +#include "random.h" +#include "utils.h" +#include "functions.h" +#include "textbox.h" + +extern void (*const gUnk_0810AC1C[])(Entity*); + +extern void (*const gUnk_0810AC2C[])(Entity*); + +typedef struct { + u8 unk_0; // u8 + u8 unk_0b; // u8 + u16 unk_1; // u16 + u16 unk_2; // u16 + u16 unk_3; + u16 unk_4; + u16 unk_5; // u16 + u16 unk_6; // u16 + u16 unk_7; // u16 + u16 unk_8; // u16 +} UnkHeap; + +extern Hitbox gUnk_080FD150; + +void sub_08060E70(Entity*, u32); + +u32 sub_08061230(Entity*); +u32 sub_08060F80(Entity*); +void sub_08060EDC(Entity*); +void sub_08061090(Entity*, u32, u32); + +bool32 sub_08060FD0(Entity*, u32, u32); +void sub_08061464(Entity*, u32, u32); +void sub_08061120(Entity*, u32, u32, u32); +bool32 sub_08061170(Entity*); + +void sub_08061358(Entity*); + +void sub_08060E94(Entity*); + +u32 sub_0806FCD0(u32, u32, u32); + +extern Entity gUnk_0200D654; +extern Entity gUnk_02027EB4; +extern bool32 sub_080AE4CC(Entity*, u32, u32, u32); + +extern u32 sub_080AF1EC(Entity*); +u32 sub_080611D4(Entity*); +extern u32 sub_08079FD4(Entity*, u32); +extern void sub_08016AD2(Entity*); + +extern struct { + s8 unk_0; + s8 unk_1; +} gUnk_0810AC4C[]; +extern u8 gUnk_0810AC54[8]; +extern u32 sub_080002B4(Entity*, u32, u32); + +extern u8 gUnk_0810AC5D; + +bool32 sub_08061630(Entity*, s32, s32, s32); +bool32 sub_08061720(Entity*, s32, s32, s32); +bool32 sub_080616A8(Entity*, s32, s32, s32); +bool32 sub_08061798(Entity*, s32, s32, s32); +bool32 sub_08061888(Entity*, s32, s32, s32); +bool32 sub_08061978(Entity*, s32, s32, s32); +bool32 sub_08061810(Entity*, s32, s32, s32); +bool32 sub_08061900(Entity*, s32, s32, s32); + +bool32 sub_08061A74(Entity*, s32, s32, s32); + +bool32 sub_08061A1C(Entity*, s32, s32, s32); + +bool32 sub_080619F0(Entity*, s32, s32, s32); + +bool32 sub_08061A48(Entity*, s32, s32, s32); + +extern void (*const gUnk_0810AC70[])(Entity*); + +void sub_08061AFC(Entity*); + +extern u16* gUnk_0810B660[8]; + +void NPC5(Entity* this) { + gUnk_0810AC1C[this->type](this); +} + +void sub_08060A00(Entity* this) { + u32 tmp; + + if ((gPlayerState.jumpStatus & 0x80) != 0) { + if (this->action != 0) { + if (((((UnkHeap*)this->myHeap)->unk_0) & 4) == 0) { + ((UnkHeap*)this->myHeap)->unk_0 |= 4; + ((UnkHeap*)this->myHeap)->unk_5 = (gPlayerEntity.x.HALF.HI & 0xfff0) + 8; + ((UnkHeap*)this->myHeap)->unk_6 = (gPlayerEntity.y.HALF.HI & 0xfff0) + 8; + } + } + } + + if ((this->action == 0) || (this->spriteSettings.b.draw != 0)) { + gUnk_0810AC2C[this->action](this); + } + + if (this->action != 0) { + ((UnkHeap*)this->myHeap)->unk_1 = gPlayerEntity.x.HALF.HI; + ((UnkHeap*)this->myHeap)->unk_2 = gPlayerEntity.y.HALF.HI; + } + if (this->field_0x74.HWORD != gRoomControls.roomID) { + this->field_0x74.HWORD = gRoomControls.roomID; + CopyPosition(&gPlayerEntity, this); + this->action = 1; + this->spriteSettings.b.draw = 1; + this->speed = 0x120; + tmp = gRoomControls.filler[0]; + this->animationState = tmp * 2; + InitAnimationForceUpdate(this, tmp << 0x19 >> 0x19); // TODO some conversion between u8 and u32? + this->frameDuration = (Random() & 0x7f) + 0x80; + ((UnkHeap*)this->myHeap)->unk_0 &= 0xfb; + } +} + +void sub_08060AE0(Entity* this) { + UnkHeap* heapObj; + Entity* otherNpc; + + heapObj = (UnkHeap*)zMalloc(0x14); // TODO UnkHeap struct should have size 0x14? + if (heapObj != NULL) { + this->myHeap = (u32*)heapObj; + heapObj->unk_0b = 0x20; + this->action = 1; + this->flags |= 0x80; + this->animationState &= 3; + this->field_0x3c = 7; + this->field_0x40 = 0x48; + this->damageType = 0x49; + this->flags2 = 3; + this->hitbox = &gUnk_080FD150; + this->field_0x17 &= 0xfe; + this->field_0x6c.HALF.LO = 0xff; + sub_08060E70(this, this->animationState); + otherNpc = CreateNPC(5, 2, 0); + if (otherNpc != NULL) { + otherNpc->parent = this; + *(Entity**)&this->field_0x78 = otherNpc; + } + } +} + +void sub_08060B5C(Entity* this) { + if (sub_08061230(this) == 0) { + if ((sub_08060F80(this) == 0) && + (((GetFacingDirection(this, &gPlayerEntity) + (this->animationState * -4) + 4) & 0x1f)) < 9) { + this->action = 2; + this->field_0xf = 0; + return; + } + sub_08060EDC(this); + } +} + +void sub_08060BA0(Entity* this) { + Entity* r5; + + if (sub_08061230(this) != 0) { + return; + } + if ((((UnkHeap*)this->myHeap)->unk_0 & 4) != 0) { + if ((((UnkHeap*)this->myHeap)->unk_0 & 8) != 0) { + this->speed = 0x1e0; + sub_08061120(this, ((UnkHeap*)this->myHeap)->unk_7, ((UnkHeap*)this->myHeap)->unk_8, 0xc); + sub_08061170(this); + if (sub_0806FCB8(this, ((UnkHeap*)this->myHeap)->unk_7, ((UnkHeap*)this->myHeap)->unk_8, 4) != 0) { + ((UnkHeap*)this->myHeap)->unk_0 &= 0xf7; + } + } else { + if (sub_08060FD0(this, ((UnkHeap*)this->myHeap)->unk_5, ((UnkHeap*)this->myHeap)->unk_6) != 0) { + if (sub_0806FCB8(this, ((UnkHeap*)this->myHeap)->unk_5, ((UnkHeap*)this->myHeap)->unk_6, 4) != 0) { + ((UnkHeap*)this->myHeap)->unk_0 &= 0xfb; + this->action = 5; + this->direction = r5->direction; + this->speed = 0x160; + sub_08060E70(this, 8); + } else { + this->speed = 0x1e0; + sub_08061120(this, r5->x.HALF.HI, r5->y.HALF.HI, 0xc); + sub_08061170(this); + } + } else { + sub_08061464(this, r5->x.HALF.HI, r5->y.HALF.HI); + } + } + + } else { + if (sub_08060FD0(this, gPlayerEntity.x.HALF.HI, gPlayerEntity.y.HALF.HI) != 0) { + sub_08061090(this, gPlayerEntity.x.HALF.HI, gPlayerEntity.y.HALF.HI); + sub_08061170(this); + ((UnkHeap*)this->myHeap)->unk_0 &= 0xf5; + } else { + ((UnkHeap*)this->myHeap) = (UnkHeap*)this->myHeap; + if ((((UnkHeap*)this->myHeap)->unk_0 & 8) != 0) { + this->speed = 0x1e0; + sub_08061120(this, ((UnkHeap*)this->myHeap)->unk_7, ((UnkHeap*)this->myHeap)->unk_8, 0xc); + sub_08061170(this); + if (sub_0806FCB8(this, ((UnkHeap*)this->myHeap)->unk_7, ((UnkHeap*)this->myHeap)->unk_8, 4) != 0) { + ((UnkHeap*)this->myHeap)->unk_0 &= 0xf7; + } + } else { + if ((((UnkHeap*)this->myHeap)->unk_0 & 2) == 0) { + ((UnkHeap*)this->myHeap)->unk_0 |= 2; + ((UnkHeap*)this->myHeap)->unk_3 = ((UnkHeap*)this->myHeap)->unk_1; + ((UnkHeap*)this->myHeap)->unk_4 = ((UnkHeap*)this->myHeap)->unk_2; + } + if (sub_08060FD0(this, ((UnkHeap*)this->myHeap)->unk_3, ((UnkHeap*)this->myHeap)->unk_4) != 0) { + this->speed = 0x1e0; + sub_08061120(this, ((UnkHeap*)this->myHeap)->unk_3, ((UnkHeap*)this->myHeap)->unk_4, 0xc); + sub_08061170(this); + if (sub_0806FCB8(this, ((UnkHeap*)this->myHeap)->unk_3, ((UnkHeap*)this->myHeap)->unk_4, 4) != 0) { + ((UnkHeap*)this->myHeap)->unk_0 &= 0xfd; + } + } else { + ((UnkHeap*)this->myHeap)->unk_0 &= 0xfd; + sub_08061464(this, gPlayerEntity.x.HALF.HI, gPlayerEntity.y.HALF.HI); + } + } + } + } + if (sub_08060F80(this) != 0) { + this->action = 1; + ((UnkHeap*)this->myHeap)->unk_0 &= 0xfb; + sub_08060E70(this, 0); + } +} + +void sub_08060D78(Entity* this) { + sub_08061358(this); + if (sub_08060F80(this) != 0) { + if ((u32)this->animIndex - 0x20 < 0x10) { + if ((this->frames.all & 7) != 0) { + this->frameDuration = 1; + UpdateAnimationSingleFrame(this); + } + this->animationState = this->frames.all & 0x18; + this->field_0x6c.HALF.LO = 0xff; + } + this->action = 1; + sub_08060E70(this, 0); + } +} + +void sub_08060DD0(Entity* this) { + UpdateAnimationSingleFrame(this); + if ((this->frames.all & 0x80) != 0) { + this->action = 1; + sub_08060E70(this, 0); + } +} + +void sub_08060DF4(Entity* this) { + sub_08061170(this); +} + +void sub_08060DFC(Entity* this) { + u32 uVar1; + + sub_0806F69C(this); + sub_08060E94(this); + uVar1 = sub_08003FC4(this, 0x2000); + if (uVar1 == 0) { + this->action = 7; + this->collisionLayer = 1; + UpdateSpriteForCollisionLayer(this); + sub_08060E70(this, 0x1c); + } +} + +void sub_08060E34(Entity* this) { + UpdateAnimationSingleFrame(this); + if ((this->frames.all & 0x80) != 0) { + this->action = 2; + this->animationState = DirectionToAnimationState(GetFacingDirection(this, &gPlayerEntity)) * 2; + sub_08060E70(this, 8); + } +} + +void sub_08060E70(Entity* this, u32 param) { + u32 tmp = param + this->animationState / 2; + if (tmp != this->animIndex) { + this->field_0x6c.HALF.LO = param; + InitAnimationForceUpdate(this, tmp); + } +} + +void sub_08060E94(Entity* this) { + if (((*(u32*)&this->animIndex & 0x80ff00) == 0x800100) && (this->animIndex < 4)) { + InitAnimationForceUpdate(this, (this->animationState >> 1)); + this->frameDuration = (Random() & 0x7f) + 0x80; + } else { + UpdateAnimationSingleFrame(this); + } +} + +void sub_08060EDC(Entity* this) { + s32 tmp; + + if (((u32)this->animIndex - 0x20 < 0x10) && ((this->frames.all & 0x80) == 0)) { + UpdateAnimationSingleFrame(this); + } else { + tmp = GetFacingDirection(this, &gPlayerEntity) + this->animationState * -4; + if (((tmp + 3) & 0x1f) >= 7) { + if ((tmp & 0x1f) < 0x10) { + InitAnimationForceUpdate(this, this->animationState + 0x20); + this->animationState = (this->animationState + 1) & 7; + } else { + InitAnimationForceUpdate(this, this->animationState + 0x28); + this->animationState = (this->animationState - 1) & 7; + } + } else { + if ((this->animationState & 1) == 0) { + if (((this->frames.all & 0x80) != 0) && (0xf >= (u32)this->animIndex - 0x20)) { + sub_08060E70(this, 0); + } else { + sub_08060E94(this); + } + } + } + } +} +u32 sub_08060F80(Entity* this) { + if (sub_08060FD0(this, (s32)gPlayerEntity.x.HALF.HI, (s32)gPlayerEntity.y.HALF.HI) == 0) { + return 0; + } + ((UnkHeap*)this->myHeap)->unk_0 &= 0xfb; + if (sub_0806FCD0(gPlayerEntity.x.HALF.HI - this->x.HALF.HI, gPlayerEntity.y.HALF.HI - this->y.HALF.HI, + ((UnkHeap*)this->myHeap)->unk_0b) != 0) { + return 1; + } + return 0; +} + +NONMATCH("asm/non_matching/npc5/sub_08060FD0.inc", bool32 sub_08060FD0(Entity* this, u32 a, u32 b)) { + u32 sVar1; + u32 sVar2; + u32 uVar3; + s32 iVar4; + s32 iVar5; + s32 iVar6; + u32 r6; + u32 r7; + Entity* puVar9; + r7 = this->x.HALF.HI; + r6 = this->y.HALF.HI; + // asm("c"); + uVar3 = sub_080045DA(a - r7, b - r6); + // asm("b"); + r7 = r7 << 8; + r6 = r6 << 8; + // asm("a"); + sVar1 = gSineTable[uVar3]; + // asm("b"); + sVar2 = gSineTable[uVar3 + 0x40]; + asm("c"); + puVar9 = &gUnk_0200D654; + if (this->collisionLayer != 2) { + puVar9 = &gUnk_02027EB4; + } +code0: + // for(;;) { + asm("k"); + if (r7 < 0) { + r7 += 0xff; + } + // asm("i"); + if (r6 < 0) { + // asm("j"); + r6 += 0xff; + } + // asm("k"); + // asm("m"); + if (sub_080AE4CC(puVar9, r7 >> 8, r6 >> 8, 6) != 0) { + return FALSE; + } + if (!(((a - (r7 >> 8)) + 6 < 0xd) && ((b - (r6 >> 8)) + 6 < 0xd))) { + r7 += sVar1 * 6; + r6 -= sVar2 * -6; + // asm("q"); + // asm("r"); + } else { + return TRUE; + + // asm("p"); + } + goto code0; +// }; +code4: + // asm("l"); + return FALSE; +} +END_NONMATCH + +void sub_08061090(Entity* this, u32 a, u32 b) { + s32 xDist; + s32 yDist; + s32 sqrDist; + u32 tmp; + + xDist = gPlayerEntity.x.HALF.HI - this->x.HALF.HI; + yDist = gPlayerEntity.y.HALF.HI - this->y.HALF.HI; + sqrDist = (xDist * xDist) + (yDist * yDist); + if (sqrDist < 0x900) { + this->speed = 0x120; + } else { + if (sqrDist < 0x1900) { + this->speed = ((sqrDist - 0x900) >> 4) + 0x120; + } else { + this->speed = 0x220; + } + } + if (this->speed == 0x120) { + tmp = 4; + } else if (this->speed < 0x160) { + tmp = 8; + } else { + tmp = 0xc; + } + sub_08061120(this, a, b, tmp); +} + +void sub_08061120(Entity* this, u32 param_a, u32 param_b, u32 param_c) { + this->direction = sub_080045D4(this->x.HALF.HI, this->y.HALF.HI, param_a, param_b); + if ((param_c != this->field_0x6c.HALF.LO) || (10 < ((this->direction + this->animationState * -4 + 5) & 0x1f))) { + this->animationState = DirectionRoundUp(this->direction) >> 2; + sub_08060E70(this, param_c); + } +} + +NONMATCH("asm/non_matching/npc5/sub_08061170.inc", bool32 sub_08061170(Entity* this)) { + u32 direction; + u32 tmp; + + UpdateAnimationSingleFrame(this); + if (sub_080AF1EC(this) == 0) { + direction = sub_080611D4(this); + if (direction != 0xff) { + this->action = 6; + tmp = (sub_08079FD4(this, 1) * 0x10 - 4); + // tmp <<= 0xc; + this->field_0x20 = tmp; + this->speed = 0x100; + this->direction = direction; + this->animationState = direction >> 2; + if (tmp >> 0x10 != 0) { + sub_08060E70(this, 0x14); + } else { + sub_08060E70(this, 0x18); + } + } + return FALSE; + } else { + sub_08016AD2(this); + return TRUE; + } +} +END_NONMATCH + +NONMATCH("asm/non_matching/npc5/sub_080611D4.inc", u32 sub_080611D4(Entity* this)) { + u8 bVar1; + u32 uVar2; + u8* pbVar3; + + u32 x; + s32 a; + s32 b; + x = this->animationState & 6; + // asm("a"); + a = gUnk_0810AC4C[x].unk_0; + // asm("c"); + b = gUnk_0810AC4C[x].unk_1; + // asm("d"); + uVar2 = sub_080002B4(this, a, b); +// asm("b"); +code4: + if ((gUnk_0810AC54[0] != uVar2 || (this->animationState != gUnk_0810AC54[1] >> 2))) { + // asm ("e"); + if (gUnk_0810AC54[2] == 0) { + this->field_0xf = 0; + return 0xff; + } + } + this->field_0xf += 1; + if (this->field_0xf < 8) { + return 0xff; + } + return gUnk_0810AC54[3]; +} +END_NONMATCH + +u32 sub_08061230(Entity* this) { + if ((((UnkHeap*)this->myHeap)->unk_0 & 1) == 0) { + if ((this->bitfield & 0x80) != 0) { + switch (this->bitfield & 0x7f) { + case 0: + case 1: + case 2: + case 3: + case 0xf: + case 0x13: + case 0x1b: + case 0x1e: + case 0x1f: + break; + default: + ((UnkHeap*)this->myHeap)->unk_0 = ((UnkHeap*)this->myHeap)->unk_0 | 1; + InitAnimationForceUpdate(this, (this->animationState >> 1) + 0x40); + return 1; + } + } + } else { + UpdateAnimationSingleFrame(this); + if ((this->frames.all & 0x80) == 0) { + return 1; + } + ((UnkHeap*)this->myHeap)->unk_0 &= 0xfe; + InitAnimationForceUpdate(this, this->field_0x6c.HALF.LO + (this->animationState >> 1)); + } + this->bitfield = this->bitfield & 0x7f; + if (this->iframes != 0) { + this->iframes += 1; + } + return 0; +} + +NONMATCH("asm/non_matching/npc5/sub_08061358.inc", void sub_08061358(Entity* this)) { + u8 bVar1; + u32 uVar2; + s32 iVar3; + u8 bVar4; + u32 unaff_r6; + + bVar4 = (u8)unaff_r6; + + switch (this->subAction) { + case 0: + UpdateAnimationSingleFrame(this); + if ((this->frames.all & 0x80) == 0) { + return; + } + this->subAction = 1; + this->actionDelay = 0xf; + sub_08060E70(this, 0); + return; + case 1: + this->actionDelay -= 1; + asm("x"); + if (this->actionDelay != 0) { + return; + } + uVar2 = Random(); + // bVar4 = (u8)uVar2; + if ((uVar2 & 1) == 0) + goto _080613FA; + this->subAction = 2; + iVar3 = (u32)this->animationState * 2 + (uVar2 >> 4 & 3); + InitAnimationForceUpdate(this, (u32)(u8)(&gUnk_0810AC5D)[iVar3 + 1]); + break; + case 2: + UpdateAnimationSingleFrame(this); + if ((this->frames.all & 0x80) == 0) { + return; + } + this->animationState = (u8)(((u8)this->frames.all & 0x18) >> 2); + uVar2 = Random(); + if ((uVar2 & 1) == 0) { + this->subAction = 0; + sub_08060E70(this, 0x10); + return; + } + _080613FA: + this->subAction = 3; + this->actionDelay = (bVar4 & 0x18) + 0x1e; + sub_08060E70(this, 4); + return; + case 3: + iVar3 = sub_08061170(this); + if (iVar3 != 0) { + this->subAction = this->actionDelay - 1; + this->actionDelay = this->subAction; + if (this->subAction != 0) { + return; + } + this->subAction = 0; + sub_08060E70(this, 0x10); + return; + } + this->subAction = 2; + iVar3 = (u32)this->animationState * 2 + (unaff_r6 >> 4 & 3); + InitAnimationForceUpdate(this, (u32)(u8)(&gUnk_0810AC5D)[iVar3 + 1]); + break; + } +} +END_NONMATCH + +NONMATCH("asm/non_matching/npc5/sub_08061464.inc", void sub_08061464(Entity* this, u32 param_a, u32 param_b)) { + u8 bVar1; + s16 sVar2; + s16 sVar3; + u16 uVar4; + u32 uVar6; + u32 uVar7; + s32 iVar8; + s32 iVar9; + s32 iVar10; + u16 uVar5; + + sVar2 = this->x.HALF.HI; + iVar10 = (s32)sVar2; + sVar3 = this->y.HALF.HI; + iVar9 = (s32)sVar3; + uVar6 = sub_080045D4(sVar2, sVar3, param_a, param_b); + // uVar7 = (uVar6 + 2) & 0x1c; + // if (7 < uVar7 >> 2) + // goto _08061612; + // uVar4 = (u16)param_b; + // uVar5 = (u16)param_a; + // asm("----"); + switch (uVar7) { + case 0: + this->field_0x6e.HALF.LO = uVar4; + if ((s32)param_a < this->x.HALF.HI) { + sub_08061630(this, iVar10, iVar9 + -8, param_a); + break; + } + goto _08061504; + case 4: + this->field_0x6e.HALF.LO = uVar5; + iVar8 = sub_08061720(this, iVar10 + 8, iVar9, param_b); + if (iVar8 != 0) + break; + this->field_0x6e.HALF.LO = uVar4; + _08061504: + sub_080616A8(this, iVar10, iVar9 + -8, param_a); + break; + case 8: + this->field_0x6e.HALF.LO = uVar5; + if ((s32)param_b < this->y.HALF.HI) { + sub_08061720(this, iVar10 + 8, iVar9, param_b); + } else { + sub_08061798(this, iVar10 + 8, iVar9, param_b); + } + break; + case 0xc: + this->field_0x6e.HALF.LO = uVar5; + iVar8 = sub_08061798(this, iVar10 + 8, iVar9, param_b); + if (iVar8 != 0) + break; + this->field_0x6e.HALF.LO = uVar4; + goto _08061574; + case 0x10: + this->field_0x6e.HALF.LO = uVar4; + if ((s32)param_a < this->x.HALF.HI) + goto _080615A4; + _08061574: + sub_08061888(this, iVar10, iVar9 + 8, param_a); + break; + case 0x14: + this->field_0x6e.HALF.LO = uVar5; + iVar8 = sub_08061978(this, iVar10 + -8, iVar9, param_b); + if (iVar8 != 0) + break; + this->field_0x6e.HALF.LO = uVar4; + _080615A4: + sub_08061810(this, iVar10, iVar9 + 8, param_a); + break; + case 0x18: + this->field_0x6e.HALF.LO = uVar5; + if ((s32)param_b < this->y.HALF.HI) { + sub_08061900(this, iVar10 + -8, iVar9, param_b); + } else { + sub_08061978(this, iVar10 + -8, iVar9, param_b); + } + break; + case 0x1c: + this->field_0x6e.HALF.LO = uVar5; + iVar8 = sub_08061900(this, iVar10 + -8, iVar9, param_b); + if (iVar8 == 0) { + this->field_0x6e.HALF.LO = uVar4; + sub_08061630(this, iVar10, iVar9 + -8, param_a); + } + } +_08061612: + bVar1 = ((UnkHeap*)this->myHeap)->unk_0; + if ((bVar1 & 8) == 0) { + this->action = 3; + this->subAction = bVar1 & 8; + } +} +END_NONMATCH + +bool32 sub_08061630(Entity* this, s32 x, s32 y, s32 param) { + u32 param_y = y; + Entity* entity = (this->collisionLayer == 2) ? &gUnk_0200D654 : &gUnk_02027EB4; + while (!sub_080AE4CC(entity, x, y, 6)) { + if (sub_08061A74(entity, x, y, param)) { + ((UnkHeap*)this->myHeap)->unk_7 = x; + ((UnkHeap*)this->myHeap)->unk_8 = param_y; + ((UnkHeap*)this->myHeap)->unk_0 |= 8; + if (this->field_0x6e.HWORD >= y) { + return TRUE; + } + } + y -= 8; + } + return FALSE; +} + +bool32 sub_080616A8(Entity* this, s32 x, s32 y, s32 param) { + u32 param_y = y; + Entity* entity = (this->collisionLayer == 2) ? &gUnk_0200D654 : &gUnk_02027EB4; + while (!sub_080AE4CC(entity, x, y, 6)) { + if (sub_08061A1C(entity, x, y, param)) { + ((UnkHeap*)this->myHeap)->unk_7 = x; + ((UnkHeap*)this->myHeap)->unk_8 = param_y; + ((UnkHeap*)this->myHeap)->unk_0 |= 8; + if (this->field_0x6e.HWORD >= y) { + return TRUE; + } + } + y -= 8; + } + return FALSE; +} + +bool32 sub_08061720(Entity* this, s32 x, s32 y, s32 param) { + u32 param_x = x; + Entity* entity = (this->collisionLayer == 2) ? &gUnk_0200D654 : &gUnk_02027EB4; + while (!sub_080AE4CC(entity, x, y, 6)) { + if (sub_080619F0(entity, x, y, param)) { + ((UnkHeap*)this->myHeap)->unk_7 = param_x; + ((UnkHeap*)this->myHeap)->unk_8 = y; + ((UnkHeap*)this->myHeap)->unk_0 |= 8; + if (this->field_0x6e.HWORD <= x) { + return TRUE; + } + } + x += 8; + } + return FALSE; +} + +bool32 sub_08061798(Entity* this, s32 x, s32 y, s32 param) { + u32 param_x = x; + Entity* entity = (this->collisionLayer == 2) ? &gUnk_0200D654 : &gUnk_02027EB4; + while (!sub_080AE4CC(entity, x, y, 6)) { + if (sub_08061A48(entity, x, y, param)) { + ((UnkHeap*)this->myHeap)->unk_7 = param_x; + ((UnkHeap*)this->myHeap)->unk_8 = y; + ((UnkHeap*)this->myHeap)->unk_0 |= 8; + if (this->field_0x6e.HWORD <= x) { + return TRUE; + } + } + x += 8; + } + return FALSE; +} + +bool32 sub_08061810(Entity* this, s32 x, s32 y, s32 param) { + u32 param_y = y; + Entity* entity = (this->collisionLayer == 2) ? &gUnk_0200D654 : &gUnk_02027EB4; + while (!sub_080AE4CC(entity, x, y, 6)) { + if (sub_08061A74(entity, x, y, param)) { + ((UnkHeap*)this->myHeap)->unk_7 = x; + ((UnkHeap*)this->myHeap)->unk_8 = param_y; + ((UnkHeap*)this->myHeap)->unk_0 |= 8; + if (this->field_0x6e.HWORD <= y) { + return TRUE; + } + } + y += 8; + } + return FALSE; +} + +bool32 sub_08061888(Entity* this, s32 x, s32 y, s32 param) { + u32 param_y = y; + Entity* entity = (this->collisionLayer == 2) ? &gUnk_0200D654 : &gUnk_02027EB4; + while (!sub_080AE4CC(entity, x, y, 6)) { + if (sub_08061A1C(entity, x, y, param)) { + ((UnkHeap*)this->myHeap)->unk_7 = x; + ((UnkHeap*)this->myHeap)->unk_8 = param_y; + ((UnkHeap*)this->myHeap)->unk_0 |= 8; + if (this->field_0x6e.HWORD <= y) { + return TRUE; + } + } + y += 8; + } + return FALSE; +} + +bool32 sub_08061900(Entity* this, s32 x, s32 y, s32 param) { + u32 param_x = x; + Entity* entity = (this->collisionLayer == 2) ? &gUnk_0200D654 : &gUnk_02027EB4; + while (!sub_080AE4CC(entity, x, y, 6)) { + if (sub_080619F0(entity, x, y, param)) { + ((UnkHeap*)this->myHeap)->unk_7 = param_x; + ((UnkHeap*)this->myHeap)->unk_8 = y; + ((UnkHeap*)this->myHeap)->unk_0 |= 8; + if (this->field_0x6e.HWORD >= x) { + return TRUE; + } + } + x -= 8; + } + return FALSE; +} + +bool32 sub_08061978(Entity* this, s32 x, s32 y, s32 param) { + u32 param_x = x; + Entity* entity = (this->collisionLayer == 2) ? &gUnk_0200D654 : &gUnk_02027EB4; + while (!sub_080AE4CC(entity, x, y, 6)) { + if (sub_08061A48(entity, x, y, param)) { + ((UnkHeap*)this->myHeap)->unk_7 = param_x; + ((UnkHeap*)this->myHeap)->unk_8 = y; + ((UnkHeap*)this->myHeap)->unk_0 |= 8; + if (this->field_0x6e.HWORD >= x) { + return TRUE; + } + } + x -= 8; + } + return FALSE; +} + +bool32 sub_080619F0(Entity* this, s32 x, s32 y, s32 param) { + while (param <= y) { + if (sub_080AE4CC(this, x, y, 6) != 0) { + return FALSE; + } + y -= 8; + } + return TRUE; +} + +bool32 sub_08061A1C(Entity* this, s32 x, s32 y, s32 param) { + while (param >= x) { + if (sub_080AE4CC(this, x, y, 6) != 0) { + return FALSE; + } + x += 8; + } + return TRUE; +} + +bool32 sub_08061A48(Entity* this, s32 x, s32 y, s32 param) { + while (param >= y) { + if (sub_080AE4CC(this, x, y, 6) != 0) { + return FALSE; + } + y += 8; + } + return TRUE; +} + +bool32 sub_08061A74(Entity* this, s32 x, s32 y, s32 param) { + while (param <= x) { + if (sub_080AE4CC(this, x, y, 6) != 0) { + return FALSE; + } + x -= 8; + } + return TRUE; +} + +void sub_08061AA0() { + DeleteThisEntity(); +} + +void sub_08061AA8(Entity* this) { + gUnk_0810AC70[this->action](this); + CopyPosition(this->parent, this); +} + +void sub_08061ACC(Entity* this) { + this->flags = this->flags | 0x20; + this->action = 1; + this->subAction = 0xff; + this->actionDelay = 0; + this->field_0x17 = this->field_0x17 & 0xfe; + sub_08078778(this); + sub_08061AFC(this); +} + +void sub_08061AFC(Entity* this) { + u32 tmp = 0; + if (this->subAction != 0) { + this->subAction = tmp; + *((u16**)&this->field_0x68) = gUnk_0810B660[0]; + this->actionDelay = 0; + } +} + +NONMATCH("asm/non_matching/npc5/sub_08061B18.inc", void sub_08061B18(Entity* this)) { + u8 bVar1; + u16* puVar2; + + typedef struct { + u16 unk_0; + u16 unk_2; + } Tmp; + + switch(this->interactType) { + case 0: + break; + case 1: + this->interactType = 0; + sub_08061AFC(this); + //puVar2 = (u16*)(*(int*)&this->field_0x68 + (((u32)this->actionDelay << 0x18) >> 0x17)); + // if puVar2[1] == 0 + if ((((Tmp**)&this->field_0x68))[++this->actionDelay]->unk_2 == 0) { + this->actionDelay = 0; + } + TextboxNoOverlap((u32)*puVar2, this); + break; + } +} +END_NONMATCH + +void sub_08061B58(Entity* this) { + if (this->action == 0) { + this->action = 1; + InitAnimationForceUpdate(this, 2); + } + if (gScreenTransition.field_0x24[8] == 2) { + UpdateAnimationSingleFrame(this); + } + sub_0806FD3C(this); +} From 8466d7e8e87b95fc6c751aad6a2ef8e4ffd6b614 Mon Sep 17 00:00:00 2001 From: octorock <79596758+octorock@users.noreply.github.com> Date: Wed, 12 May 2021 18:49:23 +0200 Subject: [PATCH 4/6] Decompile marcy --- asm/marcy.s | 158 ----------------------------------------------- linker.ld | 2 +- src/npc/din.c | 16 ++--- src/npc/farore.c | 16 ++--- src/npc/marcy.c | 63 +++++++++++++++++++ src/npc/nayru.c | 16 ++--- src/npc/npc5.c | 28 ++++----- src/npc/pita.c | 8 +-- 8 files changed, 106 insertions(+), 201 deletions(-) delete mode 100644 asm/marcy.s create mode 100644 src/npc/marcy.c diff --git a/asm/marcy.s b/asm/marcy.s deleted file mode 100644 index b8420d47..00000000 --- a/asm/marcy.s +++ /dev/null @@ -1,158 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - - thumb_func_start Marcy -Marcy: @ 0x08062CF0 - push {r4, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xc] - cmp r0, #0 - bne _08062D0C - adds r0, #1 - strb r0, [r4, #0xc] - adds r0, r4, #0 - movs r1, #2 - bl sub_0805E3A0 - adds r0, r4, #0 - bl sub_0807DD64 -_08062D0C: - adds r0, r4, #0 - movs r1, #0 - bl sub_0807DD94 - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_08062D18 -sub_08062D18: @ 0x08062D18 - push {r4, r5, r6, lr} - adds r5, r0, #0 - adds r6, r1, #0 - movs r4, #0 - movs r0, #0x4f - bl GetInventoryValue - cmp r0, #0 - beq _08062D36 - movs r0, #0x26 - bl CheckLocalFlag - cmp r0, #0 - bne _08062D36 - movs r4, #7 -_08062D36: - movs r0, #0x4e - bl GetInventoryValue - cmp r0, #0 - beq _08062D4C - movs r0, #0x25 - bl CheckLocalFlag - cmp r0, #0 - bne _08062D4C - movs r4, #6 -_08062D4C: - movs r0, #0x4d - bl GetInventoryValue - cmp r0, #0 - beq _08062D62 - movs r0, #0x24 - bl CheckLocalFlag - cmp r0, #0 - bne _08062D62 - movs r4, #5 -_08062D62: - movs r0, #0x4c - bl GetInventoryValue - cmp r0, #0 - beq _08062D78 - movs r0, #0x23 - bl CheckLocalFlag - cmp r0, #0 - bne _08062D78 - movs r4, #4 -_08062D78: - movs r0, #0x4b - bl GetInventoryValue - cmp r0, #0 - beq _08062D8E - movs r0, #0x22 - bl CheckLocalFlag - cmp r0, #0 - bne _08062D8E - movs r4, #3 -_08062D8E: - movs r0, #0x4a - bl GetInventoryValue - cmp r0, #0 - beq _08062DA4 - movs r0, #0x21 - bl CheckLocalFlag - cmp r0, #0 - bne _08062DA4 - movs r4, #2 -_08062DA4: - movs r0, #0x49 - bl GetInventoryValue - cmp r0, #0 - beq _08062DBA - movs r0, #0x20 - bl CheckLocalFlag - cmp r0, #0 - bne _08062DBA - movs r4, #1 -_08062DBA: - strb r4, [r5, #0xb] - movs r4, #0 - ldr r0, _08062DCC @ =0x00001C1F - bl CheckFlags - cmp r0, #0 - beq _08062DD0 - movs r4, #1 - b _08062DF0 - .align 2, 0 -_08062DCC: .4byte 0x00001C1F -_08062DD0: - movs r0, #0x8c - bl CheckLocalFlag - cmp r0, #0 - beq _08062DE4 - movs r4, #2 - movs r0, #0x8c - bl ClearLocalFlag - b _08062DF0 -_08062DE4: - movs r0, #0x8b - bl CheckLocalFlag - cmp r0, #0 - beq _08062DF0 - movs r4, #3 -_08062DF0: - ldr r0, _08062E08 @ =gUnk_0810C34C - lsls r1, r4, #1 - adds r1, r1, r0 - ldrh r0, [r1] - adds r1, r5, #0 - bl TextboxNoOverlap - cmp r4, #0 - bne _08062E0C - movs r0, #1 - b _08062E0E - .align 2, 0 -_08062E08: .4byte gUnk_0810C34C -_08062E0C: - movs r0, #0 -_08062E0E: - str r0, [r6, #0x14] - pop {r4, r5, r6, pc} - .align 2, 0 - - thumb_func_start sub_08062E14 -sub_08062E14: @ 0x08062E14 - push {lr} - movs r0, #0x8b - bl SetLocalFlag - pop {pc} - .align 2, 0 diff --git a/linker.ld b/linker.ld index 7da2ddea..b88eaad4 100644 --- a/linker.ld +++ b/linker.ld @@ -559,7 +559,7 @@ SECTIONS { asm/kid.o(.text); src/npc/npc9.o(.text); src/npc/stamp.o(.text); - asm/marcy.o(.text); + src/npc/marcy.o(.text); src/npc/wheaton.o(.text); src/npc/pita.o(.text); asm/pita.o(.text); diff --git a/src/npc/din.c b/src/npc/din.c index 2800f883..ec340fb1 100644 --- a/src/npc/din.c +++ b/src/npc/din.c @@ -8,23 +8,23 @@ extern u32 sub_08002632(Entity*); void Din(Entity* this) { - switch(this->action) { + switch (this->action) { case 0: this->action = 1; this->spriteSettings.b.draw = 1; sub_0807DD50(this); break; case 1: - if (this->interactType ==2) { - this->action = 2; - this->interactType = 0; - sub_0806F118(this); - this->field_0x68.HALF.LO = this->animIndex; - InitAnimationForceUpdate(this, sub_0806F5A4(GetFacingDirection(this, &gPlayerEntity))); + if (this->interactType == 2) { + this->action = 2; + this->interactType = 0; + sub_0806F118(this); + this->field_0x68.HALF.LO = this->animIndex; + InitAnimationForceUpdate(this, sub_0806F5A4(GetFacingDirection(this, &gPlayerEntity))); } else { sub_0807DD94(this, NULL); } - break; + break; case 2: if (UpdateFuseInteraction(this) != 0) { this->action = 1; diff --git a/src/npc/farore.c b/src/npc/farore.c index 858217a6..8629827a 100644 --- a/src/npc/farore.c +++ b/src/npc/farore.c @@ -8,23 +8,23 @@ extern u32 sub_08002632(Entity*); void Farore(Entity* this) { - switch(this->action) { + switch (this->action) { case 0: this->action = 1; this->spriteSettings.b.draw = 1; sub_0807DD50(this); break; case 1: - if (this->interactType ==2) { - this->action = 2; - this->interactType = 0; - sub_0806F118(this); - this->field_0x68.HALF.LO = this->animIndex; - InitAnimationForceUpdate(this, sub_0806F5A4(GetFacingDirection(this, &gPlayerEntity))); + if (this->interactType == 2) { + this->action = 2; + this->interactType = 0; + sub_0806F118(this); + this->field_0x68.HALF.LO = this->animIndex; + InitAnimationForceUpdate(this, sub_0806F5A4(GetFacingDirection(this, &gPlayerEntity))); } else { sub_0807DD94(this, NULL); } - break; + break; case 2: if (UpdateFuseInteraction(this) != 0) { this->action = 1; diff --git a/src/npc/marcy.c b/src/npc/marcy.c new file mode 100644 index 00000000..35e66f8f --- /dev/null +++ b/src/npc/marcy.c @@ -0,0 +1,63 @@ +#include "entity.h" +#include "functions.h" +#include "script.h" +#include "flags.h" +#include "textbox.h" + +extern u16 gUnk_0810C34C[]; + +void Marcy(Entity* this) { + if (this->action == 0) { + this->action += 1; + sub_0805E3A0(this, 2); + sub_0807DD64(this); + } + sub_0807DD94(this, NULL); +} + +void sub_08062D18(Entity* this, ScriptExecutionContext* context) { + u8 tmp = 0; + if ((GetInventoryValue(0x4f) != 0) && (CheckLocalFlag(0x26) == 0)) { + tmp = 7; + } + if ((GetInventoryValue(0x4e) != 0) && (CheckLocalFlag(0x25) == 0)) { + tmp = 6; + } + if ((GetInventoryValue(0x4d) != 0) && (CheckLocalFlag(0x24) == 0)) { + tmp = 5; + } + if ((GetInventoryValue(0x4c) != 0) && (CheckLocalFlag(0x23) == 0)) { + tmp = 4; + } + if ((GetInventoryValue(0x4b) != 0) && (CheckLocalFlag(0x22) == 0)) { + tmp = 3; + } + if ((GetInventoryValue(0x4a) != 0) && (CheckLocalFlag(0x21) == 0)) { + tmp = 2; + } + if ((GetInventoryValue(0x49) != 0) && (CheckLocalFlag(0x20) == 0)) { + tmp = 1; + } + this->type2 = tmp; + + tmp = 0; + if (CheckFlags(0x1c1f) != 0) { + tmp = 1; + } else if (CheckLocalFlag(0x8c) != 0) { + tmp = 2; + ClearLocalFlag(0x8c); + } else if (CheckLocalFlag(0x8b) != 0) { + tmp = 3; + } + + TextboxNoOverlap(gUnk_0810C34C[tmp], this); + if (tmp == 0) { + context->condition = TRUE; + } else { + context->condition = FALSE; + } +} + +void sub_08062E14(Entity* this, ScriptExecutionContext* context) { + SetLocalFlag(0x8b); +} diff --git a/src/npc/nayru.c b/src/npc/nayru.c index fd8332a3..7bfd89ba 100644 --- a/src/npc/nayru.c +++ b/src/npc/nayru.c @@ -8,23 +8,23 @@ extern u32 sub_08002632(Entity*); void Nayru(Entity* this) { - switch(this->action) { + switch (this->action) { case 0: this->action = 1; this->spriteSettings.b.draw = 1; sub_0807DD50(this); break; case 1: - if (this->interactType ==2) { - this->action = 2; - this->interactType = 0; - sub_0806F118(this); - this->field_0x68.HALF.LO = this->animIndex; - InitAnimationForceUpdate(this, sub_0806F5A4(GetFacingDirection(this, &gPlayerEntity))); + if (this->interactType == 2) { + this->action = 2; + this->interactType = 0; + sub_0806F118(this); + this->field_0x68.HALF.LO = this->animIndex; + InitAnimationForceUpdate(this, sub_0806F5A4(GetFacingDirection(this, &gPlayerEntity))); } else { sub_0807DD94(this, NULL); } - break; + break; case 2: if (UpdateFuseInteraction(this) != 0) { this->action = 1; diff --git a/src/npc/npc5.c b/src/npc/npc5.c index 6d1a7699..b8e9d488 100644 --- a/src/npc/npc5.c +++ b/src/npc/npc5.c @@ -908,25 +908,25 @@ void sub_08061AFC(Entity* this) { NONMATCH("asm/non_matching/npc5/sub_08061B18.inc", void sub_08061B18(Entity* this)) { u8 bVar1; u16* puVar2; - + typedef struct { u16 unk_0; u16 unk_2; } Tmp; - switch(this->interactType) { - case 0: - break; - case 1: - this->interactType = 0; - sub_08061AFC(this); - //puVar2 = (u16*)(*(int*)&this->field_0x68 + (((u32)this->actionDelay << 0x18) >> 0x17)); - // if puVar2[1] == 0 - if ((((Tmp**)&this->field_0x68))[++this->actionDelay]->unk_2 == 0) { - this->actionDelay = 0; - } - TextboxNoOverlap((u32)*puVar2, this); - break; + switch (this->interactType) { + case 0: + break; + case 1: + this->interactType = 0; + sub_08061AFC(this); + // puVar2 = (u16*)(*(int*)&this->field_0x68 + (((u32)this->actionDelay << 0x18) >> 0x17)); + // if puVar2[1] == 0 + if ((((Tmp**)&this->field_0x68))[++this->actionDelay]->unk_2 == 0) { + this->actionDelay = 0; + } + TextboxNoOverlap((u32)*puVar2, this); + break; } } END_NONMATCH diff --git a/src/npc/pita.c b/src/npc/pita.c index 0d43bda6..ebd369bc 100644 --- a/src/npc/pita.c +++ b/src/npc/pita.c @@ -28,10 +28,10 @@ void Pita(Entity* this) { } void sub_08062EB8(void) { - sub_0807CAA0(0x68,0); - sub_0807CAA0(0x69,0); - sub_0807CAA0(0x6a,0); - sub_0807CAA0(0x6b,0); + sub_0807CAA0(0x68, 0); + sub_0807CAA0(0x69, 0); + sub_0807CAA0(0x6a, 0); + sub_0807CAA0(0x6b, 0); } bool32 sub_08062EDC(Entity* this, ScriptExecutionContext* context) { From 54ae9dfa85b4dffae5d314ca27b3071f8f863509 Mon Sep 17 00:00:00 2001 From: octorock <79596758+octorock@users.noreply.github.com> Date: Fri, 14 May 2021 18:29:45 +0200 Subject: [PATCH 5/6] Decompile kid --- asm/non_matching/kid/Kid_Head.inc | 127 ++++++++ asm/non_matching/kid/sub_080621AC.inc | 173 ++++++++++ asm/non_matching/kid/sub_080622F4.inc | 275 ++++++++++++++++ asm/non_matching/kid/sub_0806252C.inc | 131 ++++++++ asm/non_matching/kid/sub_08062634.inc | 23 ++ asm/non_matching/kid/sub_0806265C.inc | 34 ++ asm/non_matching/kid/sub_080626E0.inc | 90 ++++++ asm/non_matching/kid/sub_08062948.inc | 142 ++++++++ linker.ld | 2 +- src/npc/kid.c | 444 ++++++++++++++++++++++++++ 10 files changed, 1440 insertions(+), 1 deletion(-) create mode 100644 asm/non_matching/kid/Kid_Head.inc create mode 100644 asm/non_matching/kid/sub_080621AC.inc create mode 100644 asm/non_matching/kid/sub_080622F4.inc create mode 100644 asm/non_matching/kid/sub_0806252C.inc create mode 100644 asm/non_matching/kid/sub_08062634.inc create mode 100644 asm/non_matching/kid/sub_0806265C.inc create mode 100644 asm/non_matching/kid/sub_080626E0.inc create mode 100644 asm/non_matching/kid/sub_08062948.inc create mode 100644 src/npc/kid.c diff --git a/asm/non_matching/kid/Kid_Head.inc b/asm/non_matching/kid/Kid_Head.inc new file mode 100644 index 00000000..4d98f33f --- /dev/null +++ b/asm/non_matching/kid/Kid_Head.inc @@ -0,0 +1,127 @@ + .syntax unified + .text + +Kid_Head: @ 0x08062834 + push {r4, r5, r6, r7, lr} + adds r5, r0, #0 + ldrb r4, [r5, #0xa] + lsls r0, r4, #2 + mov ip, r0 + ldr r2, _08062868 @ =gUnk_0810C0A0 + add r2, ip + adds r0, r5, #0 + adds r0, #0x5a + ldrb r3, [r0] + movs r1, #0x1f + adds r0, r1, #0 + ands r0, r3 + ldrb r3, [r2] + adds r6, r0, r3 + ldrb r0, [r5, #0x1e] + ands r1, r0 + ldrb r2, [r2, #1] + adds r7, r1, r2 + cmp r4, #8 + bhi _08062946 + ldr r0, _0806286C @ =_08062870 + add r0, ip + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08062868: .4byte gUnk_0810C0A0 +_0806286C: .4byte _08062870 @ jump table +_08062870: + .4byte _08062894 @ case 0 + .4byte _08062894 @ case 1 + .4byte _08062894 @ case 2 + .4byte _08062894 @ case 3 + .4byte _08062894 @ case 4 + .4byte _08062894 @ case 5 + .4byte _080628D8 @ case 6 + .4byte _08062922 @ case 7 + .4byte _08062922 @ case 8 +_08062894: + adds r0, r5, #0 + adds r0, #0x5b + ldrb r1, [r0] + movs r0, #0x30 + ands r0, r1 + lsrs r4, r0, #4 + cmp r4, #0 + beq _080628A6 + adds r4, #0x50 +_080628A6: + subs r4, #1 + adds r0, r5, #0 + movs r1, #0 + adds r2, r6, #0 + bl SetExtraSpriteFrame + adds r0, r5, #0 + movs r1, #1 + adds r2, r7, #0 + bl SetExtraSpriteFrame + adds r0, r5, #0 + movs r1, #2 + adds r2, r4, #0 + bl SetExtraSpriteFrame + adds r0, r5, #0 + movs r1, #1 + movs r2, #0 + bl SetSpriteSubEntryOffsetData1 + adds r0, r5, #0 + movs r1, #1 + movs r2, #2 + b _08062916 +_080628D8: + adds r0, r5, #0 + adds r0, #0x5b + ldrb r0, [r0] + movs r2, #0xf + ands r2, r0 + cmp r2, #0 + beq _080628E8 + adds r2, #0x93 +_080628E8: + subs r2, #1 + adds r0, r5, #0 + movs r1, #0 + bl SetExtraSpriteFrame + adds r0, r5, #0 + movs r1, #1 + adds r2, r6, #0 + bl SetExtraSpriteFrame + adds r0, r5, #0 + movs r1, #2 + adds r2, r7, #0 + bl SetExtraSpriteFrame + adds r0, r5, #0 + movs r1, #2 + movs r2, #1 + bl SetSpriteSubEntryOffsetData1 + adds r0, r5, #0 + movs r1, #1 + movs r2, #0 +_08062916: + bl SetSpriteSubEntryOffsetData2 + adds r0, r5, #0 + bl sub_0807000C + b _08062946 +_08062922: + adds r0, r5, #0 + movs r1, #0 + adds r2, r6, #0 + bl SetExtraSpriteFrame + adds r0, r5, #0 + movs r1, #1 + adds r2, r7, #0 + bl SetExtraSpriteFrame + adds r0, r5, #0 + movs r1, #1 + movs r2, #0 + bl SetSpriteSubEntryOffsetData1 + adds r0, r5, #0 + bl sub_0807000C +_08062946: + pop {r4, r5, r6, r7, pc} + + .syntax divided diff --git a/asm/non_matching/kid/sub_080621AC.inc b/asm/non_matching/kid/sub_080621AC.inc new file mode 100644 index 00000000..e474a346 --- /dev/null +++ b/asm/non_matching/kid/sub_080621AC.inc @@ -0,0 +1,173 @@ + .syntax unified + .text + +sub_080621AC: @ 0x080621AC + push {r4, r5, r6, lr} + adds r4, r0, #0 + ldrb r5, [r4, #0xc] + cmp r5, #1 + beq _08062234 + cmp r5, #1 + bgt _080621C0 + cmp r5, #0 + beq _080621CE + b _080622F2 +_080621C0: + cmp r5, #2 + bne _080621C6 + b _080622CC +_080621C6: + cmp r5, #3 + bne _080621CC + b _080622E4 +_080621CC: + b _080622F2 +_080621CE: + ldr r1, _0806221C @ =gUnk_0810BDC4 + ldrb r0, [r4, #0xa] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl LoadExtraSpriteData + cmp r0, #0 + bne _080621E4 + b _080622F2 +_080621E4: + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r0, [r4, #0xe] + strb r0, [r4, #0x14] + strb r5, [r4, #0xe] + adds r0, r4, #0 + adds r0, #0x68 + strb r5, [r0] + adds r0, #1 + strb r5, [r0] + adds r1, r4, #0 + adds r1, #0x6b + movs r0, #0xff + strb r0, [r1] + adds r0, r4, #0 + bl sub_0805ACC0 + adds r2, r0, #0 + cmp r2, #0 + bne _08062220 + ldrh r0, [r4, #0x2e] + adds r1, r4, #0 + adds r1, #0x6c + strh r0, [r1] + ldrh r0, [r4, #0x32] + adds r1, #2 + strh r0, [r1] + b _0806222C + .align 2, 0 +_0806221C: .4byte gUnk_0810BDC4 +_08062220: + lsrs r1, r2, #0x10 + adds r0, r4, #0 + adds r0, #0x6c + strh r1, [r0] + adds r0, #2 + strh r2, [r0] +_0806222C: + adds r0, r4, #0 + bl sub_0807DD50 + b _080622F2 +_08062234: + adds r5, r4, #0 + adds r5, #0x39 + movs r1, #0 + ldrsb r1, [r5, r1] + cmp r1, #2 + bne _08062252 + movs r1, #0 + movs r0, #3 + strb r0, [r4, #0xc] + strb r1, [r5] + adds r0, r4, #0 + bl sub_0806F118 + adds r5, #0x1f + b _0806229A +_08062252: + adds r0, r4, #0 + adds r0, #0x68 + movs r6, #0 + ldrsb r6, [r0, r6] + cmp r6, #0 + beq _08062274 + cmp r1, #0 + beq _0806226C + movs r1, #0 + movs r0, #2 + strb r0, [r4, #0xc] + strb r1, [r5] + b _0806228A +_0806226C: + adds r0, r4, #0 + bl sub_080622F4 + b _080622F2 +_08062274: + adds r0, r4, #0 + movs r1, #0 + bl sub_0807DD94 + movs r0, #0 + ldrsb r0, [r5, r0] + cmp r0, #0 + beq _080622F2 + movs r0, #2 + strb r0, [r4, #0xc] + strb r6, [r5] +_0806228A: + adds r0, r4, #0 + adds r0, #0x84 + ldr r1, [r0] + adds r0, r4, #0 + bl sub_0806265C + adds r5, r4, #0 + adds r5, #0x58 +_0806229A: + ldrb r0, [r5] + adds r1, r4, #0 + adds r1, #0x6b + strb r0, [r1] + ldrb r0, [r5] + cmp r0, #7 + bhi _080622F2 + ldr r1, _080622C8 @ =gPlayerEntity + adds r0, r4, #0 + bl GetFacingDirection + bl sub_0806F5A4 + ldrb r1, [r5] + movs r2, #4 + rsbs r2, r2, #0 + ands r1, r2 + adds r1, r1, r0 + adds r0, r4, #0 + bl InitializeAnimation + b _080622F2 + .align 2, 0 +_080622C8: .4byte gPlayerEntity +_080622CC: + adds r0, r4, #0 + bl GetNextFrame + ldr r0, _080622E0 @ =gTextBox + ldrb r1, [r0] + movs r0, #0x7f + ands r0, r1 + cmp r0, #0 + bne _080622F2 + b _080622EE + .align 2, 0 +_080622E0: .4byte gTextBox +_080622E4: + adds r0, r4, #0 + bl UpdateFuseInteraction + cmp r0, #0 + beq _080622F2 +_080622EE: + movs r0, #1 + strb r0, [r4, #0xc] +_080622F2: + pop {r4, r5, r6, pc} + .syntax divided diff --git a/asm/non_matching/kid/sub_080622F4.inc b/asm/non_matching/kid/sub_080622F4.inc new file mode 100644 index 00000000..94e8ae01 --- /dev/null +++ b/asm/non_matching/kid/sub_080622F4.inc @@ -0,0 +1,275 @@ + .syntax unified + .text + +sub_080622F4: @ 0x080622F4 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + adds r7, r0, #0 + ldr r0, _0806239C @ =gPlayerEntity + mov r8, r0 + ldrh r1, [r0, #0x2e] + ldr r3, _080623A0 @ =0xFFFF0000 + adds r0, r3, #0 + ands r0, r5 + orrs r0, r1 + mov r2, r8 + ldrh r1, [r2, #0x32] + lsls r1, r1, #0x10 + ldr r2, _080623A4 @ =0x0000FFFF + ands r0, r2 + adds r5, r0, #0 + orrs r5, r1 + mov r1, r8 + ldrh r0, [r1, #0x36] + ands r3, r6 + orrs r3, r0 + ldr r0, _080623A8 @ =gPlayerState + adds r0, #0xa8 + ldrb r0, [r0] + lsls r0, r0, #0x10 + ldr r2, _080623AC @ =0xFF00FFFF + ands r2, r3 + orrs r2, r0 + ldrb r1, [r1, #0x14] + movs r0, #0x3f + ands r1, r0 + lsls r1, r1, #0x18 + ldr r0, _080623B0 @ =0xC0FFFFFF + ands r0, r2 + orrs r0, r1 + mov r1, r8 + adds r1, #0x38 + ldrb r1, [r1] + lsls r1, r1, #0x1e + ldr r2, _080623B4 @ =0x3FFFFFFF + ands r0, r2 + adds r6, r0, #0 + orrs r6, r1 + ldr r4, [r7, #0x64] + ldrb r0, [r4, #6] + cmp r0, #0x16 + bne _080623BE + lsrs r0, r6, #0x10 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x16 + beq _080623BE + movs r2, #0x2e + ldrsh r1, [r7, r2] + mov r3, r8 + movs r2, #0x2e + ldrsh r0, [r3, r2] + subs r2, r1, r0 + movs r0, #0x32 + ldrsh r3, [r7, r0] + mov sb, r3 + mov r1, r8 + movs r3, #0x32 + ldrsh r0, [r1, r3] + mov r3, sb + subs r1, r3, r0 + cmp r2, #0 + bge _08062382 + rsbs r2, r2, #0 +_08062382: + cmp r1, #0 + bge _08062388 + rsbs r1, r1, #0 +_08062388: + cmp r2, #0x78 + bgt _08062390 + cmp r1, #0x50 + ble _080623B8 +_08062390: + adds r1, r7, #0 + adds r1, #0x68 + movs r0, #0 + strb r0, [r1] + b _080624F8 + .align 2, 0 +_0806239C: .4byte gPlayerEntity +_080623A0: .4byte 0xFFFF0000 +_080623A4: .4byte 0x0000FFFF +_080623A8: .4byte gPlayerState +_080623AC: .4byte 0xFF00FFFF +_080623B0: .4byte 0xC0FFFFFF +_080623B4: .4byte 0x3FFFFFFF +_080623B8: + adds r0, r7, #0 + bl sub_0806252C +_080623BE: + movs r0, #0 + mov sb, r0 + ldr r0, [r4] + cmp r5, r0 + bne _080623CE + ldr r0, [r4, #4] + cmp r6, r0 + beq _08062410 +_080623CE: + ldr r4, [r7, #0x64] + adds r4, #0x90 + movs r1, #0x69 + adds r1, r1, r7 + mov r8, r1 + adds r3, r7, #0 + adds r3, #0x38 + movs r2, #0x58 + adds r2, r2, r7 + mov ip, r2 + movs r2, #0x12 +_080623E4: + ldr r0, [r4] + ldr r1, [r4, #4] + str r0, [r4, #8] + str r1, [r4, #0xc] + subs r4, #8 + subs r2, #1 + cmp r2, #0 + bge _080623E4 + ldr r4, [r7, #0x64] + str r5, [r4] + str r6, [r4, #4] + movs r0, #4 + mov sb, r0 + mov r2, r8 + ldrb r1, [r2] + movs r0, #0 + ldrsb r0, [r2, r0] + cmp r0, #0 + ble _08062484 + subs r0, r1, #1 + strb r0, [r2] + b _08062484 +_08062410: + adds r4, #0x98 + movs r3, #4 + ldrsh r0, [r4, r3] + cmp r0, #0 + bge _08062442 + ldr r4, [r7, #0x64] + adds r4, #0x90 + movs r0, #0x69 + adds r0, r0, r7 + mov r8, r0 + adds r3, r7, #0 + adds r3, #0x38 + movs r1, #0x58 + adds r1, r1, r7 + mov ip, r1 + movs r2, #0x12 +_08062430: + ldr r0, [r4] + ldr r1, [r4, #4] + str r0, [r4, #8] + str r1, [r4, #0xc] + subs r4, #8 + subs r2, #1 + cmp r2, #0 + bge _08062430 + b _08062480 +_08062442: + ldr r1, _080624E8 @ =gPlayerEntity + movs r3, #0x2e + ldrsh r0, [r1, r3] + movs r2, #0x32 + ldrsh r1, [r1, r2] + ldrh r2, [r4] + ldrh r3, [r4, #2] + bl sub_080041E8 + lsrs r0, r0, #4 + movs r3, #0x69 + adds r3, r3, r7 + mov r8, r3 + adds r3, r7, #0 + adds r3, #0x38 + movs r1, #0x58 + adds r1, r1, r7 + mov ip, r1 + cmp r0, #0x18 + ble _08062484 + ldr r4, [r7, #0x64] + adds r4, #0x90 + movs r2, #0x12 +_08062470: + ldr r0, [r4] + ldr r1, [r4, #4] + str r0, [r4, #8] + str r1, [r4, #0xc] + subs r4, #8 + subs r2, #1 + cmp r2, #0 + bge _08062470 +_08062480: + movs r2, #4 + mov sb, r2 +_08062484: + ldr r4, [r7, #0x64] + adds r4, #0x98 + ldrh r0, [r4] + strh r0, [r7, #0x2e] + ldrh r0, [r4, #2] + strh r0, [r7, #0x32] + ldrh r0, [r4, #4] + strh r0, [r7, #0x36] + ldrb r0, [r4, #7] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1a + strb r0, [r7, #0x14] + ldrb r0, [r4, #7] + lsrs r0, r0, #6 + strb r0, [r3] + mov r1, r8 + ldrb r2, [r1] + movs r0, #0 + ldrsb r0, [r1, r0] + cmp r0, #0 + ble _080624B2 + subs r0, r2, #1 + strb r0, [r1] +_080624B2: + mov r2, sb + ldrb r0, [r7, #0x14] + lsrs r0, r0, #1 + add sb, r0 + ldrb r0, [r7, #0xa] + cmp r0, #6 + bne _080624C4 + movs r3, #0x10 + add sb, r3 +_080624C4: + mov r0, ip + ldrb r0, [r0] + cmp sb, r0 + beq _080624EC + cmp r2, #0 + bne _080624D8 + movs r0, #0 + ldrsb r0, [r1, r0] + cmp r0, #0 + bgt _080624EC +_080624D8: + adds r0, r7, #0 + mov r1, sb + bl InitAnimationForceUpdate + movs r0, #0x1e + mov r1, r8 + strb r0, [r1] + b _080624F2 + .align 2, 0 +_080624E8: .4byte gPlayerEntity +_080624EC: + adds r0, r7, #0 + bl UpdateAnimationSingleFrame +_080624F2: + adds r0, r7, #0 + bl sub_0800451C +_080624F8: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7, pc} + + .syntax divided diff --git a/asm/non_matching/kid/sub_0806252C.inc b/asm/non_matching/kid/sub_0806252C.inc new file mode 100644 index 00000000..c647a74c --- /dev/null +++ b/asm/non_matching/kid/sub_0806252C.inc @@ -0,0 +1,131 @@ + .syntax unified + .text + +sub_0806252C: @ 0x0806252C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + adds r7, r0, #0 + ldr r4, _08062618 @ =gPlayerEntity + ldrh r1, [r4, #0x2e] + ldr r3, _0806261C @ =0xFFFF0000 + adds r0, r3, #0 + ands r0, r5 + orrs r0, r1 + ldrh r1, [r4, #0x32] + lsls r1, r1, #0x10 + ldr r2, _08062620 @ =0x0000FFFF + ands r0, r2 + adds r5, r0, #0 + orrs r5, r1 + ldrh r0, [r4, #0x36] + ands r3, r6 + orrs r3, r0 + ldr r0, _08062624 @ =gPlayerState + adds r0, #0xa8 + ldrb r0, [r0] + lsls r0, r0, #0x10 + ldr r2, _08062628 @ =0xFF00FFFF + ands r2, r3 + orrs r2, r0 + ldrb r1, [r4, #0x14] + movs r0, #0x3f + ands r1, r0 + lsls r1, r1, #0x18 + ldr r0, _0806262C @ =0xC0FFFFFF + ands r0, r2 + orrs r0, r1 + adds r1, r4, #0 + adds r1, #0x38 + ldrb r1, [r1] + lsls r1, r1, #0x1e + ldr r2, _08062630 @ =0x3FFFFFFF + ands r0, r2 + adds r6, r0, #0 + orrs r6, r1 + movs r0, #0x2e + ldrsh r1, [r4, r0] + movs r2, #0x2e + ldrsh r0, [r7, r2] + subs r1, r1, r0 + mov sl, r1 + movs r0, #0x32 + ldrsh r1, [r4, r0] + movs r2, #0x32 + ldrsh r0, [r7, r2] + subs r1, r1, r0 + mov r8, r1 + mov r1, sl + lsls r0, r1, #0x10 + asrs r0, r0, #0x10 + movs r1, #0x14 + bl FixedDiv + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + mov sl, r0 + mov r2, r8 + lsls r0, r2, #0x10 + asrs r0, r0, #0x10 + movs r1, #0x14 + bl FixedDiv + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + mov r8, r0 + ldr r3, [r7, #0x64] + movs r0, #0 + mov sb, r0 + mov ip, r0 + movs r4, #0x13 +_080625C8: + mov r1, ip + asrs r0, r1, #8 + subs r0, r5, r0 + strh r0, [r3] + lsrs r0, r5, #0x10 + mov r2, sb + asrs r1, r2, #8 + subs r0, r0, r1 + strh r0, [r3, #2] + strh r6, [r3, #4] + lsrs r0, r6, #0x10 + strb r0, [r3, #6] + ldrb r0, [r7, #0x14] + movs r1, #0x3f + ands r1, r0 + ldrb r2, [r3, #7] + movs r0, #0x40 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3, #7] + adds r1, r7, #0 + adds r1, #0x38 + ldrb r1, [r1] + lsls r1, r1, #6 + movs r2, #0x3f + ands r0, r2 + orrs r0, r1 + strb r0, [r3, #7] + adds r3, #8 + add sb, r8 + add ip, sl + subs r4, #1 + cmp r4, #0 + bge _080625C8 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_08062618: .4byte gPlayerEntity +_0806261C: .4byte 0xFFFF0000 +_08062620: .4byte 0x0000FFFF +_08062624: .4byte gPlayerState +_08062628: .4byte 0xFF00FFFF +_0806262C: .4byte 0xC0FFFFFF +_08062630: .4byte 0x3FFFFFFF + + .syntax divided diff --git a/asm/non_matching/kid/sub_08062634.inc b/asm/non_matching/kid/sub_08062634.inc new file mode 100644 index 00000000..0fe2a5cf --- /dev/null +++ b/asm/non_matching/kid/sub_08062634.inc @@ -0,0 +1,23 @@ + .syntax unified + .text + +sub_08062634: @ 0x08062634 + push {r4, r5, lr} + adds r5, r0, #0 + ldrb r4, [r5, #0xb] + bl Random + movs r1, #1 + ands r1, r0 + ldr r0, _08062658 @ =gUnk_0810BDE8 + lsls r1, r1, #1 + lsls r4, r4, #2 + adds r1, r1, r4 + adds r1, r1, r0 + ldrh r0, [r1] + adds r1, r5, #0 + bl TextboxNoOverlap + pop {r4, r5, pc} + .align 2, 0 +_08062658: .4byte gUnk_0810BDE8 + + .syntax divided diff --git a/asm/non_matching/kid/sub_0806265C.inc b/asm/non_matching/kid/sub_0806265C.inc new file mode 100644 index 00000000..b4f5dcf9 --- /dev/null +++ b/asm/non_matching/kid/sub_0806265C.inc @@ -0,0 +1,34 @@ + .syntax unified + .text + +sub_0806265C: @ 0x0806265C + push {lr} + adds r2, r0, #0 + ldr r3, _08062674 @ =gSave + ldrb r0, [r3, #8] + cmp r0, #0 + bne _08062678 + movs r0, #0 + adds r1, r2, #0 + bl TextboxNoOverlap + b _08062690 + .align 2, 0 +_08062674: .4byte gSave +_08062678: + ldrb r0, [r2, #0xa] + lsls r1, r0, #3 + adds r1, r1, r0 + lsls r1, r1, #3 + ldr r0, _08062694 @ =gUnk_0810BE10 + adds r1, r1, r0 + ldrb r0, [r3, #8] + lsls r0, r0, #3 + adds r1, r1, r0 + adds r0, r2, #0 + bl ShowNPCDialogue +_08062690: + pop {pc} + .align 2, 0 +_08062694: .4byte gUnk_0810BE10 + + .syntax divided diff --git a/asm/non_matching/kid/sub_080626E0.inc b/asm/non_matching/kid/sub_080626E0.inc new file mode 100644 index 00000000..ebdce74f --- /dev/null +++ b/asm/non_matching/kid/sub_080626E0.inc @@ -0,0 +1,90 @@ + .syntax unified + .text + +sub_080626E0: @ 0x080626E0 + push {r4, r5, lr} + adds r5, r0, #0 + adds r4, r1, #0 + ldrb r0, [r4, #0x18] + cmp r0, #0 + bne _0806270E + adds r0, #1 + strb r0, [r4, #0x18] + movs r0, #0xa + strb r0, [r4, #0x19] + ldr r0, [r4, #8] + movs r1, #2 + orrs r0, r1 + str r0, [r4, #8] + ldrh r2, [r4, #4] + ldr r1, _08062778 @ =gRoomControls + ldrh r0, [r4, #6] + ldrh r3, [r1, #6] + adds r0, r0, r3 + strh r0, [r4, #0x1e] + ldrh r0, [r1, #8] + adds r0, r0, r2 + strh r0, [r4, #0x22] +_0806270E: + ldrb r0, [r4, #0x19] + subs r0, #1 + strb r0, [r4, #0x19] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0806274A + movs r0, #0xa + strb r0, [r4, #0x19] + movs r1, #0x1e + ldrsh r0, [r4, r1] + movs r2, #0x2e + ldrsh r1, [r5, r2] + subs r0, r0, r1 + movs r3, #0x22 + ldrsh r1, [r4, r3] + movs r3, #0x32 + ldrsh r2, [r5, r3] + subs r1, r1, r2 + bl sub_080045DA + strb r0, [r5, #0x15] + bl Random + movs r1, #0xb + bl __modsi3 + ldrb r1, [r5, #0x15] + adds r1, r1, r0 + subs r1, #5 + strb r1, [r5, #0x15] +_0806274A: + movs r0, #0x24 + ldrsh r1, [r5, r0] + ldrb r2, [r5, #0x15] + adds r0, r5, #0 + bl sub_0806F62C + movs r2, #0x2e + ldrsh r1, [r5, r2] + movs r3, #0x1e + ldrsh r0, [r4, r3] + subs r1, r1, r0 + lsls r1, r1, #8 + ldrh r0, [r5, #0x24] + lsls r0, r0, #0x10 + asrs r0, r0, #0x11 + adds r1, r1, r0 + movs r2, #0x24 + ldrsh r0, [r5, r2] + cmp r1, r0 + bhi _0806277C + ldrh r0, [r4, #0x1e] + strh r0, [r5, #0x2e] + b _08062782 + .align 2, 0 +_08062778: .4byte gRoomControls +_0806277C: + ldr r1, _08062784 @ =gActiveScriptInfo + movs r0, #0 + strb r0, [r1, #6] +_08062782: + pop {r4, r5, pc} + .align 2, 0 +_08062784: .4byte gActiveScriptInfo + + .syntax divided diff --git a/asm/non_matching/kid/sub_08062948.inc b/asm/non_matching/kid/sub_08062948.inc new file mode 100644 index 00000000..e698b073 --- /dev/null +++ b/asm/non_matching/kid/sub_08062948.inc @@ -0,0 +1,142 @@ + .syntax unified + .text + +sub_08062948: @ 0x08062948 + push {r4, r5, r6, lr} + adds r4, r0, #0 + adds r6, r1, #0 + ldrb r0, [r6, #0x18] + cmp r0, #0 + bne _080629B4 + adds r0, #1 + strb r0, [r6, #0x18] + bl Random + movs r1, #0x3f + ands r0, r1 + adds r0, #0x20 + strh r0, [r6, #0x12] + bl Random + adds r1, r0, #0 + movs r0, #0x18 + ands r1, r0 + ldrb r0, [r4, #0x15] + cmp r0, #8 + beq _08062990 + cmp r0, #8 + bgt _0806297E + cmp r0, #0 + beq _08062988 + b _080629A6 +_0806297E: + cmp r0, #0x10 + beq _08062998 + cmp r0, #0x18 + beq _080629A0 + b _080629A6 +_08062988: + cmp r1, #0x10 + bne _080629A6 + movs r1, #8 + b _080629A6 +_08062990: + cmp r1, #0x18 + bne _080629A6 + movs r1, #0x10 + b _080629A6 +_08062998: + cmp r1, #0 + bne _080629A6 + movs r1, #0x18 + b _080629A6 +_080629A0: + cmp r1, #8 + bne _080629A6 + movs r1, #0 +_080629A6: + strb r1, [r4, #0x15] + adds r0, r1, #0 + bl sub_0806F5B0 + strb r0, [r4, #0x14] + movs r0, #0x80 + strh r0, [r4, #0x24] +_080629B4: + ldrb r0, [r4, #0x14] + lsrs r0, r0, #1 + adds r1, r0, #4 + adds r5, r4, #0 + adds r5, #0x58 + ldrb r0, [r5] + cmp r1, r0 + beq _080629D2 + adds r0, r4, #0 + bl InitializeAnimation + ldrb r1, [r5] + adds r0, r4, #0 + adds r0, #0x80 + strh r1, [r0] +_080629D2: + adds r0, r4, #0 + bl ProcessMovement + movs r3, #0x2e + ldrsh r1, [r4, r3] + adds r2, r4, #0 + adds r2, #0x6c + movs r5, #0 + ldrsh r0, [r2, r5] + subs r1, r1, r0 + cmp r1, #0x10 + ble _080629F4 + ldrh r0, [r2] + adds r0, #0x10 + strh r0, [r4, #0x2e] + movs r0, #1 + strh r0, [r6, #0x12] +_080629F4: + movs r3, #0x10 + rsbs r3, r3, #0 + cmp r1, r3 + bge _08062A06 + ldrh r0, [r2] + subs r0, #0x10 + strh r0, [r4, #0x2e] + movs r0, #1 + strh r0, [r6, #0x12] +_08062A06: + movs r0, #0x32 + ldrsh r1, [r4, r0] + adds r2, r4, #0 + adds r2, #0x6e + movs r5, #0 + ldrsh r0, [r2, r5] + subs r1, r1, r0 + cmp r1, #0x10 + ble _08062A22 + ldrh r0, [r2] + adds r0, #0x10 + strh r0, [r4, #0x32] + movs r0, #1 + strh r0, [r6, #0x12] +_08062A22: + cmp r1, r3 + bge _08062A30 + ldrh r0, [r2] + subs r0, #0x10 + strh r0, [r4, #0x32] + movs r0, #1 + strh r0, [r6, #0x12] +_08062A30: + ldrh r0, [r6, #0x12] + subs r0, #1 + strh r0, [r6, #0x12] + lsls r0, r0, #0x10 + cmp r0, #0 + beq _08062A42 + ldr r1, _08062A44 @ =gActiveScriptInfo + movs r0, #0 + strb r0, [r1, #6] +_08062A42: + pop {r4, r5, r6, pc} + .align 2, 0 +_08062A44: .4byte gActiveScriptInfo + + .syntax divided diff --git a/linker.ld b/linker.ld index b88eaad4..06817df7 100644 --- a/linker.ld +++ b/linker.ld @@ -556,7 +556,7 @@ SECTIONS { asm/postman.o(.text); src/npc/npc5.o(.text); src/npc/townsperson.o(.text); - asm/kid.o(.text); + src/npc/kid.o(.text); src/npc/npc9.o(.text); src/npc/stamp.o(.text); src/npc/marcy.o(.text); diff --git a/src/npc/kid.c b/src/npc/kid.c new file mode 100644 index 00000000..f265106e --- /dev/null +++ b/src/npc/kid.c @@ -0,0 +1,444 @@ +#include "entity.h" +#include "functions.h" +#include "textbox.h" +#include "npc.h" +#include "script.h" +#include "utils.h" +#include "random.h" +#include "save.h" + +extern void (*const gUnk_0810BE0C[])(Entity*); +void sub_080621AC(Entity*); + +extern SpriteLoadData* gUnk_0810BDC4[]; + +void sub_080622F4(Entity*); +void sub_0806265C(Entity*, ScriptExecutionContext*); + +void sub_0806252C(Entity*); + +typedef struct { + u16 unk_0; /* u16 */ + u16 unk_2; /* u16 */ + u16 unk_4; /* u16 */ + u8 unk_6; + u8 unk_7; +} KidHeap; + +extern u16 gUnk_0810BDE8[]; + +extern Dialog gUnk_0810BE10[]; + +extern u8 gUnk_0810C0A0[]; + +extern SpriteLoadData* gUnk_0810BDC4[]; + +void Kid(Entity* this) { + if ((this->flags & 2) != 0) { + sub_080621AC(this); + } else { + gUnk_0810BE0C[this->action](this); + } +} + +void sub_080620F4(Entity* this) { + if (LoadExtraSpriteData(this, gUnk_0810BDC4[this->type]) != 0) { + this->animationState = 4; + this->field_0x68.HALF.LO = 0; + this->action = 1; + InitAnimationForceUpdate(this, 2); + sub_08078778(this); + } +} + +void sub_08062130(Entity* this) { + if (this->interactType != 0) { + this->action = 2; + InitAnimationForceUpdate(this, GetAnimationState(this)); + } + if (this->field_0xf++ >= 0x79) { + this->field_0xf = 0; + this->actionDelay = (this->actionDelay + 1) & 7; + if (this->type == 6) { + this->actionDelay = this->actionDelay + 0x10; + } + InitAnimationForceUpdate(this, this->actionDelay); + } else { + UpdateAnimationSingleFrame(this); + } + sub_0806ED78(this); +} + +void sub_08062194(Entity* this) { + TextboxNoOverlapFollow(0); + this->action = 1; + this->interactType = 0; +} + +NONMATCH("asm/non_matching/kid/sub_080621AC.inc", void sub_080621AC(Entity* this)) { + u32 tmp; + + switch (this->action) { + case 0: + if (LoadExtraSpriteData(this, gUnk_0810BDC4[this->type]) != 0) { + this->action = 1; + this->animationState = this->actionDelay; + this->actionDelay = 0; + this->field_0x68.HALF.LO = 0; + this->field_0x68.HALF.HI = 0; + this->field_0x6a.HALF.HI = 0xff; + tmp = sub_0805ACC0(this); + if (tmp == 0) { + this->field_0x6c.HWORD = this->x.HALF.HI; + this->field_0x6e.HWORD = this->y.HALF.HI; + } else { + this->field_0x6c.HWORD = tmp >> 0x10; + this->field_0x6e.HWORD = tmp; + } + sub_0807DD50(this); + } + break; + case 1: + if (this->interactType == 2) { + this->action = 3; + this->interactType = 0; + sub_0806F118(this); + } else { + if ((s8)this->field_0x68.HALF.LO != 0) { + if (this->interactType != 0) { + this->action = 2; + this->interactType = 0; + } else { + sub_080622F4(this); + return; + } + } else { + sub_0807DD94(this, NULL); + if (this->interactType != 0) { + this->action = 2; + this->interactType = 0; + } else { + return; + } + } + sub_0806265C(this, *(ScriptExecutionContext**)&this->cutsceneBeh); + } + // TODO this needs to be moved up somehow? + this->field_0x6a.HALF.HI = this->animIndex; + if (this->animIndex < 8) { + InitializeAnimation(this, (this->animIndex & 0xfffffffc) + + sub_0806F5A4(GetFacingDirection(this, &gPlayerEntity))); + } + break; + case 2: + GetNextFrame(this); + if ((gTextBox.doTextBox & 0x7f) == 0) { + this->action = 1; + } + break; + case 3: + if (UpdateFuseInteraction(this) != 0) { + this->action = 1; + } + break; + default: + break; + } +} +END_NONMATCH + +ASM_FUNC("asm/non_matching/kid/sub_080622F4.inc", void sub_080622F4(Entity* this)) + +void sub_08062500(Entity* this) { + this->myHeap = zMalloc(0xa0); + if (this->myHeap != NULL) { + this->field_0x68.HALF.LO = 1; + sub_080788E0(this); + this->hitbox = NULL; + sub_0806252C(this); + } +} + +NONMATCH("asm/non_matching/kid/sub_0806252C.inc", void sub_0806252C(Entity* this)) { + s16 sVar1; + s16 sVar2; + u16 uVar3; + u8 uVar4; + s16 r0; + s16 sVar5; + s16 sVar6; + u8 bVar7; + KidHeap* heapObj; + s32 loopVar; + s32 iVar10; + s32 iVar11; + + uVar4 = gPlayerState.field_0xa8; + uVar3 = gPlayerEntity.height.HALF.HI; + sVar2 = gPlayerEntity.y.HALF.HI; + sVar1 = gPlayerEntity.x.HALF.HI; + r0 = gPlayerEntity.y.HALF.HI - this->y.HALF.HI; + sVar5 = FixedDiv(gPlayerEntity.x.HALF.HI - this->x.HALF.HI, 0x14); + sVar6 = FixedDiv(r0, 0x14); + heapObj = (KidHeap*)this->myHeap; + iVar10 = 0; + iVar11 = 0; + loopVar = 0x13; + while (loopVar > -1) { + heapObj->unk_0 = sVar1 - (s16)((u32)iVar11 >> 8); + heapObj->unk_2 = sVar2 - (s16)((u32)iVar10 >> 8); + heapObj->unk_4 = uVar3; + heapObj->unk_6 = uVar4; + bVar7 = this->animationState & 0x3f; + heapObj->unk_7 = (heapObj->unk_7 & 0xc0) | bVar7; + heapObj->unk_7 = bVar7 | this->collisionLayer << 6; + heapObj = heapObj + 1; + iVar10 = iVar10 + sVar6; + iVar11 = iVar11 + sVar5; + loopVar = loopVar - 1; + }; +} +END_NONMATCH + +NONMATCH("asm/non_matching/kid/sub_08062634.inc", void sub_08062634(Entity* this)) { + u8 arr = this->type2; + u32 arr2 = arr * 2 + (Random() & 1); + u16 id = gUnk_0810BDE8[arr2]; + TextboxNoOverlap(id, this); +} +END_NONMATCH + +NONMATCH("asm/non_matching/kid/sub_0806265C.inc", void sub_0806265C(Entity* this, ScriptExecutionContext* context)) { + if (gSave.unk8 == 0) { + TextboxNoOverlap(0, this); + } else { + ShowNPCDialogue(this, &gUnk_0810BE10[this->type * 9 + gSave.unk8]); + } +} +END_NONMATCH + +void sub_08062698(Entity* this) { + this->speed = (Random() & 0x3f) + 0xc0; +} + +void sub_080626AC(Entity* this) { + this->actionDelay = (Random() & 0x1f) + 0x40; +} + +void sub_080626C0(Entity* this, ScriptExecutionContext* context) { + context->condition = 0; + if ((this->actionDelay != 0) && (--this->actionDelay == 0)) { + context->condition = 1; + } +} + +NONMATCH("asm/non_matching/kid/sub_080626E0.inc", void sub_080626E0(Entity* this, ScriptExecutionContext* context)) { + // TODO second parameter might be anything as this function does not seem to be called? + s16 sVar1; + u8 bVar2; + u8 cVar3; + s32 uVar4; + + if (context->unk_18 == 0) { + context->unk_18 += 1; + context->unk_19 = 10; + context->postScriptActions |= 2; + sVar1 = *(s16*)&context->intVariable; + context->x.HALF.HI = *((u16*)&context->intVariable + 2) + gRoomControls.roomOriginX; + context->y.HALF.HI = gRoomControls.roomOriginY + sVar1; + } + bVar2 = context->unk_19 - 1; + context->unk_19 = bVar2; + if (bVar2 == 0) { + context->unk_19 = 10; + uVar4 = sub_080045DA(context->x.HALF.HI - this->x.HALF.HI, context->y.HALF.HI - this->y.HALF.HI); + this->direction = (u8)uVar4; + uVar4 = Random(); + cVar3 = uVar4 % 0xb; + this->direction = (this->direction + cVar3) - 5; + } + sub_0806F62C(this, (s32)this->speed, (u32)this->direction); + if ((u32)(s32)this->speed < + (u32)((this->x.HALF.HI - context->x.HALF.HI) * 0x100 + ((s32)((u32)(u16)this->speed << 0x10) >> 0x11))) { + gActiveScriptInfo.commandSize = 0; + } else { + this->x.HALF.HI = context->x.HALF.HI; + } +} +END_NONMATCH + +void sub_08062788(Entity* this, ScriptExecutionContext* context) { + SetTile(0x4072, 0x60b, 1); + SetTile(0x4072, 0x60c, 1); + SetTile(0x4072, 0x60d, 1); + SetTile(0x4072, 0x64b, 1); + SetTile(0x4072, 0x64c, 1); + SetTile(0x4072, 0x64d, 1); +} + +void sub_080627E8(Entity* this, ScriptExecutionContext* context) { + sub_0807BA8C(0x60b, 1); + sub_0807BA8C(0x60c, 1); + sub_0807BA8C(0x60d, 1); + sub_0807BA8C(0x64b, 1); + sub_0807BA8C(0x64c, 1); + sub_0807BA8C(0x64d, 1); +} + +NONMATCH("asm/non_matching/kid/Kid_Head.inc", void Kid_Head(Entity* this)) { + s32 iVar1; + u32 uVar2; + u32 uVar3; + u32 uVar4; + + iVar1 = (u32)this->type * 4; + uVar3 = ((u8)this->frames.all & 0x1f) + (u32)gUnk_0810C0A0[iVar1]; + uVar4 = (this->frameIndex & 0x1f) + (u32)gUnk_0810C0A0[iVar1 + 1]; + switch (this->type) { + case 0: + case 1: + case 2: + case 3: + case 4: + case 5: + uVar2 = (this->frameSpriteSettings & 0x30) >> 4; + if (uVar2 != 0) { + uVar2 = uVar2 + 0x50; + } + SetExtraSpriteFrame(this, 0, uVar3); + SetExtraSpriteFrame(this, 1, uVar4); + SetExtraSpriteFrame(this, 2, uVar2 - 1); + SetSpriteSubEntryOffsetData1(this, 1, 0); + SetSpriteSubEntryOffsetData2(this, 1, 2); + sub_0807000C(this); + break; + case 6: + uVar2 = this->frameSpriteSettings & 0xf; + if ((this->frameSpriteSettings & 0xf) != 0) { + uVar2 = uVar2 + 0x93; + } + SetExtraSpriteFrame(this, 0, uVar2 - 1); + SetExtraSpriteFrame(this, 1, uVar3); + SetExtraSpriteFrame(this, 2, uVar4); + SetSpriteSubEntryOffsetData1(this, 2, 1); + SetSpriteSubEntryOffsetData2(this, 1, 0); + sub_0807000C(this); + break; + case 7: + case 8: + SetExtraSpriteFrame(this, 0, uVar3); + SetExtraSpriteFrame(this, 1, uVar4); + SetSpriteSubEntryOffsetData1(this, 1, 0); + sub_0807000C(this); + break; + default: + break; + } +} +END_NONMATCH + +NONMATCH("asm/non_matching/kid/sub_08062948.inc", void sub_08062948(Entity* this, ScriptExecutionContext* context)) { + u8 bVar1; + u16 uVar2; + u32 uVar3; + s32 iVar4; + s16* psVar5; + + if (context->unk_18 == 0) { + context->unk_18 += 1; + context->unk_12 = (Random() & 0x3f) + 0x20; + uVar3 = Random() & 0x18; + bVar1 = this->direction; + if (bVar1 != 8) { + if (bVar1 >= 9) { + if (bVar1 == 0x10) { + if (uVar3 == 0) { + uVar3 = 0x18; + } + } else { + if ((bVar1 == 0x18) && (uVar3 == 8)) { + uVar3 = 0; + } + } + } else { + if ((bVar1 == 0) && (uVar3 == 0x10)) { + uVar3 = 8; + } + } + } else { + if (uVar3 == 0x18) { + uVar3 = 0x10; + } + } + this->direction = (u8)uVar3; + uVar3 = sub_0806F5B0(uVar3); + this->animationState = (u8)uVar3; + this->speed = 0x80; + } + uVar3 = (this->animationState >> 1) + 4; + if (uVar3 != this->animIndex) { + InitializeAnimation(this, uVar3); + this->field_0x80.HALF.LO = (u16)this->animIndex; + } + ProcessMovement(this); + iVar4 = this->x.HALF.HI - this->field_0x6c.HALF.LO; + if (0x10 < iVar4) { + this->x.HALF.HI = this->field_0x6c.HALF.LO + 0x10; + context->unk_12 = 1; + } + if (iVar4 < -0x10) { + this->x.HALF.HI = this->field_0x6c.HALF.LO + -0x10; + context->unk_12 = 1; + } + iVar4 = this->y.HALF.HI - this->field_0x6e.HALF.LO; + if (0x10 < iVar4) { + this->y.HALF.HI = this->field_0x6e.HALF.LO + 0x10; + context->unk_12 = 1; + } + if (iVar4 < -0x10) { + this->y.HALF.HI = this->field_0x6e.HALF.LO + -0x10; + context->unk_12 = 1; + } + uVar2 = context->unk_12 - 1; + context->unk_12 = uVar2; + if (uVar2 != 0) { + gActiveScriptInfo.commandSize = 0; + } +} +END_NONMATCH + +void sub_08062A48(Entity* this, ScriptExecutionContext* context) { + this->field_0x6a.HALF.LO = sub_0801E99C(this); + sub_08078784(this, this->field_0x6a.HALF.LO); +} + +void Kid_Fusion(Entity* this) { + u32 tmp; + if (this->action == 0) { + if (LoadExtraSpriteData(this, gUnk_0810BDC4[this->type]) != 0) { + this->action = this->action + 1; + this->spriteSettings.b.draw = 1; + this->y.HALF.HI = this->y.HALF.HI + -8; + tmp = 6; + if (this->type == 6) { + tmp = 0x16; + } + InitializeAnimation(this, tmp); + } + } else { + GetNextFrame(this); + } +} + +// TODO does this belong to child or next, unused entity? +extern void (*const gUnk_0810C268[])(Entity*); + +void sub_08062AB8(Entity* this) { + gUnk_0810C268[this->action](this); +} + +void sub_08062AD0(Entity* this) { +} + +void sub_08062AD4(Entity* this) { +} From fce61af0b8b1c67692e05cd74303a6d0460a94bd Mon Sep 17 00:00:00 2001 From: octorock <79596758+octorock@users.noreply.github.com> Date: Thu, 27 May 2021 22:14:22 +0200 Subject: [PATCH 6/6] Split npc files --- asm/bigGoron.s | 1143 -------------- asm/bowUse.s | 8 - asm/brocco.s | 287 ---- asm/castleMaid.s | 352 ----- asm/castorWildsStatue.s | 546 ------- asm/cucco.s | 327 ---- asm/cuccoChick.s | 245 --- asm/drLeft.s | 166 --- asm/evilSpirit/sub_080862B8.inc | 100 -- asm/farmers.s | 205 --- asm/ghostBrothers.s | 553 ------- asm/gorman.s | 479 ------ asm/gregal.s | 386 ----- asm/guardWithSpear.s | 624 -------- asm/hiddenLadderDown.s | 7 - asm/hurdyGurdyMan.s | 209 --- asm/kid.s | 1319 ----------------- asm/kingDaltus.s | 255 ---- asm/librarians.s | 259 ---- asm/mama.s | 231 --- asm/ministerPotho.s | 251 ---- asm/mountainMinish.s | 587 -------- asm/non_matching/CreateItemDrop.inc | 1 - asm/non_matching/ForceEquipItem.inc | 2 - asm/non_matching/bigGoron/sub_0806D02C.inc | 74 + asm/non_matching/bigGoron/sub_0806D138.inc | 23 + asm/non_matching/bigGoron/sub_0806D164.inc | 52 + asm/non_matching/bigGoron/sub_0806D1D0.inc | 87 ++ asm/non_matching/bigGoron/sub_0806D520.inc | 96 ++ asm/non_matching/bigGoron/sub_0806D5D4.inc | 21 + asm/non_matching/bigGoron/sub_0806D67C.inc | 46 + asm/non_matching/brocco/sub_08063584.inc | 64 + asm/non_matching/button/sub_08081E6C.inc | 1 - asm/non_matching/castleMaid/sub_08064570.inc | 105 ++ asm/non_matching/castleMaid/sub_080646A4.inc | 127 ++ .../castorWildsStatue/sub_080675D4.inc | 131 ++ .../castorWildsStatue/sub_080676E0.inc | 63 + .../clothesRack/sub_0806DD90.inc} | 16 +- asm/non_matching/cucco/sub_0806E564.inc | 64 + asm/non_matching/cucco/sub_0806E5E4.inc | 50 + asm/non_matching/cucco/sub_0806E6A8.inc | 26 + asm/non_matching/cuccoChick/sub_0806E7B0.inc | 60 + asm/non_matching/farmers/Farmers.inc | 58 + asm/non_matching/farmers/sub_0806BC94.inc | 19 + .../ghostBrothers/GhostBrothers.inc | 41 + .../ghostBrothers/sub_08065C0C.inc | 98 ++ .../ghostBrothers/sub_08065D74.inc | 35 + .../ghostBrothers/sub_08065DB8.inc | 126 ++ .../ghostBrothers/sub_08065EDC.inc | 36 + asm/non_matching/gibdo/sub_08037810.inc | 86 -- asm/non_matching/gibdo/sub_08037A58.inc | 64 - asm/non_matching/gorman/sub_0806991C.inc | 69 + asm/non_matching/gorman/sub_080699AC.inc | 69 + .../guardWithSpear/sub_0806407C.inc | 140 ++ .../guardWithSpear/sub_08064198.inc | 144 ++ .../guardWithSpear/sub_080642B8.inc | 144 ++ .../guardWithSpear/sub_080643D8.inc | 40 + .../guardWithSpear/sub_08064428.inc | 37 + .../guardWithSpear/sub_080644C8.inc | 36 + asm/non_matching/helmasaur/sub_0802BD8C.inc | 47 - asm/non_matching/kid/Kid_Head.inc | 1 - asm/non_matching/kid/sub_080621AC.inc | 1 - asm/non_matching/kid/sub_080622F4.inc | 1 - asm/non_matching/kid/sub_0806252C.inc | 1 - asm/non_matching/kid/sub_08062634.inc | 1 - asm/non_matching/kid/sub_0806265C.inc | 1 - asm/non_matching/kid/sub_080626E0.inc | 1 - asm/non_matching/kid/sub_08062948.inc | 1 - asm/non_matching/librarians/Librarians.inc | 32 + asm/non_matching/librarians/sub_0806BA34.inc | 114 ++ asm/non_matching/m4a/CgbModVol.inc | 64 - asm/non_matching/manager15/sub_0805A9CC.inc | 1 - asm/non_matching/manager4/sub_0805795C.inc | 1 - asm/non_matching/managerC/sub_08058D34.inc | 1 - asm/non_matching/mazaal/sub_0803BA8C.inc | 129 -- .../minishEzlo/MinishEzlo_Head.inc | 54 + .../minishEzlo/sub_080630A4.inc} | 161 +- .../mountainMinish/MountainMinish_Head.inc | 67 + .../mountainMinish/sub_08067EF0.inc | 249 ++++ .../mountainMinish/sub_0806811C.inc | 62 + .../mountainMinish/sub_08068190.inc | 37 + asm/non_matching/npc23/sub_08066490.inc | 66 + asm/non_matching/npc23/sub_0806650C.inc | 57 + asm/non_matching/npc23/sub_08066570.inc | 59 + asm/non_matching/npc5/sub_08060FD0.inc | 1 - asm/non_matching/npc5/sub_08061170.inc | 1 - asm/non_matching/npc5/sub_080611D4.inc | 1 - asm/non_matching/npc5/sub_08061358.inc | 1 - asm/non_matching/npc5/sub_08061464.inc | 1 - asm/non_matching/npc5/sub_08061B18.inc | 1 - .../phonograph/sub_0806E964.inc} | 70 +- .../picolyteBottles/sub_0806DF74.inc | 34 + .../picolyteBottles/sub_0806E014.inc | 95 ++ .../picolyteBottles/sub_0806E140.inc | 78 + asm/non_matching/pina/sub_08063AC0.inc | 64 + .../postman/sub_0806076C.inc} | 146 +- asm/non_matching/postman/sub_080608E4.inc | 79 + asm/non_matching/rem/sub_0806A674.inc | 235 +++ asm/non_matching/rem/sub_0806AA50.inc | 153 ++ .../sittingPerson/SittingPerson_Head.inc | 42 + .../sittingPerson/sub_08063758.inc | 49 + .../sittingPerson/sub_08063850.inc | 19 + .../sittingPerson/sub_0806387C.inc | 66 + .../sittingPerson/sub_0806390C.inc | 27 + asm/non_matching/stockwell/sub_080650CC.inc | 107 ++ asm/non_matching/stockwell/sub_08065370.inc | 186 +++ asm/non_matching/sturgeon/Sturgeon.inc | 84 ++ asm/non_matching/sturgeon/sub_08064B88.inc | 83 ++ .../syrup/Syrup_Head.inc} | 10 +- .../tingleSiblings/sub_08064DE4.inc | 97 ++ .../tingleSiblings/sub_08064EE8.inc | 34 + .../tingleSiblings/sub_08064F28.inc | 121 ++ .../zeldaFollower/sub_08068318.inc} | 209 +-- .../zeldaFollower/sub_08068578.inc | 127 ++ asm/npc23.s | 420 ------ asm/npc58.s | 149 -- asm/ocarinaUpdate.s | 46 - asm/percy.s | 156 -- asm/picolyteBottles.s | 486 ------ asm/pina.s | 359 ----- asm/pita.s | 11 - asm/projectile/mv | 0 asm/rem.s | 1053 ------------- asm/sittingPerson.s | 412 ----- asm/stockwell.s | 662 --------- asm/sturgeon.s | 375 ----- asm/sub_08007DE0.s | 22 - asm/tingleSiblings.s | 331 ----- asm/windTribespeople.s | 199 --- include/enemy.h | 8 +- include/greatFairy.h | 1 - include/save.h | 3 +- include/structures.h | 3 +- include/utils.h | 7 + linker.ld | 63 +- src/enemy.c | 8 +- src/enemy/gibdo.c | 16 +- src/gba/m4a.c | 1 - src/manager/managerC.c | 7 +- src/npc/bigGoron.c | 337 ++++- src/npc/brocco.c | 93 ++ src/npc/castleMaid.c | 114 ++ src/npc/castorWildsStatue.c | 128 ++ src/npc/clothesRack.c | 6 + src/npc/cucco.c | 87 ++ src/npc/cuccoChick.c | 85 ++ src/npc/drLeft.c | 85 ++ src/npc/farmers.c | 58 + src/npc/ghostBrothers.c | 143 ++ src/npc/gorman.c | 138 ++ src/npc/gregal.c | 162 ++ src/npc/guardWithSpear.c | 45 + src/npc/hurdyGurdyMan.c | 88 ++ src/npc/kid.c | 7 +- src/npc/kingDaltus.c | 104 ++ src/npc/librarians.c | 61 + src/npc/mama.c | 98 ++ src/npc/minishEzlo.c | 44 + src/npc/ministerPotho.c | 106 ++ src/npc/mountainMinish.c | 109 ++ src/npc/npc23.c | 108 ++ src/npc/npc58.c | 54 + src/npc/percy.c | 61 + src/npc/phonograph.c | 33 + src/npc/picolyteBottle.c | 132 ++ src/npc/pina.c | 130 ++ src/npc/postman.c | 27 + src/npc/rem.c | 274 ++++ src/npc/sittingPerson.c | 95 ++ src/npc/stockwell.c | 156 ++ src/npc/sturgeon.c | 128 ++ src/npc/syrup.c | 2 + src/npc/tingleSiblings.c | 42 + src/npc/windTribespeople.c | 90 ++ src/npc/zeldaFollower.c | 40 +- 175 files changed, 8281 insertions(+), 14307 deletions(-) delete mode 100644 asm/bigGoron.s delete mode 100644 asm/bowUse.s delete mode 100644 asm/brocco.s delete mode 100644 asm/castleMaid.s delete mode 100644 asm/castorWildsStatue.s delete mode 100644 asm/cucco.s delete mode 100644 asm/cuccoChick.s delete mode 100644 asm/drLeft.s delete mode 100644 asm/evilSpirit/sub_080862B8.inc delete mode 100644 asm/farmers.s delete mode 100644 asm/ghostBrothers.s delete mode 100644 asm/gorman.s delete mode 100644 asm/gregal.s delete mode 100644 asm/guardWithSpear.s delete mode 100644 asm/hiddenLadderDown.s delete mode 100644 asm/hurdyGurdyMan.s delete mode 100644 asm/kid.s delete mode 100644 asm/kingDaltus.s delete mode 100644 asm/librarians.s delete mode 100644 asm/mama.s delete mode 100644 asm/ministerPotho.s delete mode 100644 asm/mountainMinish.s create mode 100644 asm/non_matching/bigGoron/sub_0806D02C.inc create mode 100644 asm/non_matching/bigGoron/sub_0806D138.inc create mode 100644 asm/non_matching/bigGoron/sub_0806D164.inc create mode 100644 asm/non_matching/bigGoron/sub_0806D1D0.inc create mode 100644 asm/non_matching/bigGoron/sub_0806D520.inc create mode 100644 asm/non_matching/bigGoron/sub_0806D5D4.inc create mode 100644 asm/non_matching/bigGoron/sub_0806D67C.inc create mode 100644 asm/non_matching/brocco/sub_08063584.inc create mode 100644 asm/non_matching/castleMaid/sub_08064570.inc create mode 100644 asm/non_matching/castleMaid/sub_080646A4.inc create mode 100644 asm/non_matching/castorWildsStatue/sub_080675D4.inc create mode 100644 asm/non_matching/castorWildsStatue/sub_080676E0.inc rename asm/{clothesRack.s => non_matching/clothesRack/sub_0806DD90.inc} (91%) create mode 100644 asm/non_matching/cucco/sub_0806E564.inc create mode 100644 asm/non_matching/cucco/sub_0806E5E4.inc create mode 100644 asm/non_matching/cucco/sub_0806E6A8.inc create mode 100644 asm/non_matching/cuccoChick/sub_0806E7B0.inc create mode 100644 asm/non_matching/farmers/Farmers.inc create mode 100644 asm/non_matching/farmers/sub_0806BC94.inc create mode 100644 asm/non_matching/ghostBrothers/GhostBrothers.inc create mode 100644 asm/non_matching/ghostBrothers/sub_08065C0C.inc create mode 100644 asm/non_matching/ghostBrothers/sub_08065D74.inc create mode 100644 asm/non_matching/ghostBrothers/sub_08065DB8.inc create mode 100644 asm/non_matching/ghostBrothers/sub_08065EDC.inc delete mode 100644 asm/non_matching/gibdo/sub_08037810.inc delete mode 100644 asm/non_matching/gibdo/sub_08037A58.inc create mode 100644 asm/non_matching/gorman/sub_0806991C.inc create mode 100644 asm/non_matching/gorman/sub_080699AC.inc create mode 100644 asm/non_matching/guardWithSpear/sub_0806407C.inc create mode 100644 asm/non_matching/guardWithSpear/sub_08064198.inc create mode 100644 asm/non_matching/guardWithSpear/sub_080642B8.inc create mode 100644 asm/non_matching/guardWithSpear/sub_080643D8.inc create mode 100644 asm/non_matching/guardWithSpear/sub_08064428.inc create mode 100644 asm/non_matching/guardWithSpear/sub_080644C8.inc delete mode 100644 asm/non_matching/helmasaur/sub_0802BD8C.inc create mode 100644 asm/non_matching/librarians/Librarians.inc create mode 100644 asm/non_matching/librarians/sub_0806BA34.inc delete mode 100644 asm/non_matching/m4a/CgbModVol.inc delete mode 100644 asm/non_matching/mazaal/sub_0803BA8C.inc create mode 100644 asm/non_matching/minishEzlo/MinishEzlo_Head.inc rename asm/{minishEzlo.s => non_matching/minishEzlo/sub_080630A4.inc} (52%) create mode 100644 asm/non_matching/mountainMinish/MountainMinish_Head.inc create mode 100644 asm/non_matching/mountainMinish/sub_08067EF0.inc create mode 100644 asm/non_matching/mountainMinish/sub_0806811C.inc create mode 100644 asm/non_matching/mountainMinish/sub_08068190.inc create mode 100644 asm/non_matching/npc23/sub_08066490.inc create mode 100644 asm/non_matching/npc23/sub_0806650C.inc create mode 100644 asm/non_matching/npc23/sub_08066570.inc rename asm/{phonograph.s => non_matching/phonograph/sub_0806E964.inc} (68%) create mode 100644 asm/non_matching/picolyteBottles/sub_0806DF74.inc create mode 100644 asm/non_matching/picolyteBottles/sub_0806E014.inc create mode 100644 asm/non_matching/picolyteBottles/sub_0806E140.inc create mode 100644 asm/non_matching/pina/sub_08063AC0.inc rename asm/{postman.s => non_matching/postman/sub_0806076C.inc} (55%) create mode 100644 asm/non_matching/postman/sub_080608E4.inc create mode 100644 asm/non_matching/rem/sub_0806A674.inc create mode 100644 asm/non_matching/rem/sub_0806AA50.inc create mode 100644 asm/non_matching/sittingPerson/SittingPerson_Head.inc create mode 100644 asm/non_matching/sittingPerson/sub_08063758.inc create mode 100644 asm/non_matching/sittingPerson/sub_08063850.inc create mode 100644 asm/non_matching/sittingPerson/sub_0806387C.inc create mode 100644 asm/non_matching/sittingPerson/sub_0806390C.inc create mode 100644 asm/non_matching/stockwell/sub_080650CC.inc create mode 100644 asm/non_matching/stockwell/sub_08065370.inc create mode 100644 asm/non_matching/sturgeon/Sturgeon.inc create mode 100644 asm/non_matching/sturgeon/sub_08064B88.inc rename asm/{syrup.s => non_matching/syrup/Syrup_Head.inc} (90%) create mode 100644 asm/non_matching/tingleSiblings/sub_08064DE4.inc create mode 100644 asm/non_matching/tingleSiblings/sub_08064EE8.inc create mode 100644 asm/non_matching/tingleSiblings/sub_08064F28.inc rename asm/{zeldaFollower.s => non_matching/zeldaFollower/sub_08068318.inc} (56%) create mode 100644 asm/non_matching/zeldaFollower/sub_08068578.inc delete mode 100644 asm/npc23.s delete mode 100644 asm/npc58.s delete mode 100644 asm/ocarinaUpdate.s delete mode 100644 asm/percy.s delete mode 100644 asm/picolyteBottles.s delete mode 100644 asm/pina.s delete mode 100644 asm/pita.s delete mode 100644 asm/projectile/mv delete mode 100644 asm/rem.s delete mode 100644 asm/sittingPerson.s delete mode 100644 asm/stockwell.s delete mode 100644 asm/sturgeon.s delete mode 100644 asm/sub_08007DE0.s delete mode 100644 asm/tingleSiblings.s delete mode 100644 asm/windTribespeople.s create mode 100644 src/npc/brocco.c create mode 100644 src/npc/castleMaid.c create mode 100644 src/npc/castorWildsStatue.c create mode 100644 src/npc/cucco.c create mode 100644 src/npc/cuccoChick.c create mode 100644 src/npc/drLeft.c create mode 100644 src/npc/farmers.c create mode 100644 src/npc/ghostBrothers.c create mode 100644 src/npc/gorman.c create mode 100644 src/npc/gregal.c create mode 100644 src/npc/guardWithSpear.c create mode 100644 src/npc/hurdyGurdyMan.c create mode 100644 src/npc/kingDaltus.c create mode 100644 src/npc/librarians.c create mode 100644 src/npc/mama.c create mode 100644 src/npc/minishEzlo.c create mode 100644 src/npc/ministerPotho.c create mode 100644 src/npc/mountainMinish.c create mode 100644 src/npc/npc23.c create mode 100644 src/npc/npc58.c create mode 100644 src/npc/phonograph.c create mode 100644 src/npc/picolyteBottle.c create mode 100644 src/npc/pina.c create mode 100644 src/npc/sittingPerson.c create mode 100644 src/npc/stockwell.c create mode 100644 src/npc/sturgeon.c diff --git a/asm/bigGoron.s b/asm/bigGoron.s deleted file mode 100644 index 8e59000e..00000000 --- a/asm/bigGoron.s +++ /dev/null @@ -1,1143 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_0806D02C -sub_0806D02C: @ 0x0806D02C - push {lr} - bl sub_0806D164 - ldr r2, _0806D0A8 @ =gScreen - ldrh r1, [r2] - movs r3, #0x80 - lsls r3, r3, #7 - adds r0, r3, #0 - orrs r0, r1 - strh r0, [r2] - adds r1, r2, #0 - adds r1, #0x60 - ldr r0, _0806D0AC @ =0x00003F3F - strh r0, [r1] - adds r1, #2 - movs r0, #0x3d - strh r0, [r1] - movs r1, #0x16 - ldrsh r0, [r2, r1] - rsbs r0, r0, #0 - movs r3, #0x80 - lsls r3, r3, #1 - adds r1, r0, r3 - cmp r0, #0 - bge _0806D060 - movs r0, #0 -_0806D060: - cmp r0, #0xf0 - ble _0806D066 - movs r0, #0xf0 -_0806D066: - cmp r1, #0 - bge _0806D06C - movs r1, #0 -_0806D06C: - cmp r1, #0xf0 - ble _0806D072 - movs r1, #0xf0 -_0806D072: - lsls r0, r0, #8 - orrs r0, r1 - adds r1, r2, #0 - adds r1, #0x5a - strh r0, [r1] - movs r1, #0x18 - ldrsh r0, [r2, r1] - rsbs r0, r0, #0 - adds r1, r0, r3 - cmp r0, #0 - bge _0806D08A - movs r0, #0 -_0806D08A: - cmp r0, #0xa0 - ble _0806D090 - movs r0, #0xa0 -_0806D090: - cmp r1, #0 - bge _0806D096 - movs r1, #0 -_0806D096: - cmp r1, #0xa0 - ble _0806D09C - movs r1, #0xa0 -_0806D09C: - lsls r0, r0, #8 - orrs r0, r1 - adds r1, r2, #0 - adds r1, #0x5e - strh r0, [r1] - pop {pc} - .align 2, 0 -_0806D0A8: .4byte gScreen -_0806D0AC: .4byte 0x00003F3F - - thumb_func_start sub_0806D0B0 -sub_0806D0B0: @ 0x0806D0B0 - push {r4, r5, lr} - adds r4, r0, #0 - ldr r0, _0806D0E8 @ =gUnk_0200B650 - movs r1, #0 - str r1, [r0] - movs r0, #0x30 - bl LoadGfxGroup - bl sub_0806D110 - ldr r5, _0806D0EC @ =gMapDataTopSpecial - movs r1, #0x80 - lsls r1, r1, #6 - adds r0, r5, #0 - bl MemClear - cmp r4, #0 - beq _0806D0DA - adds r0, r4, #0 - bl sub_0806D164 -_0806D0DA: - ldr r0, _0806D0F0 @ =gScreen - ldr r1, _0806D0F4 @ =0x00001D47 - strh r1, [r0, #0x14] - str r5, [r0, #0x1c] - movs r1, #1 - strh r1, [r0, #0x1a] - pop {r4, r5, pc} - .align 2, 0 -_0806D0E8: .4byte gUnk_0200B650 -_0806D0EC: .4byte gMapDataTopSpecial -_0806D0F0: .4byte gScreen -_0806D0F4: .4byte 0x00001D47 - - thumb_func_start sub_0806D0F8 -sub_0806D0F8: @ 0x0806D0F8 - push {lr} - movs r0, #7 - movs r1, #0x4c - movs r2, #7 - bl FindEntityByID - cmp r0, #0 - beq _0806D10C - bl sub_0806D0B0 -_0806D10C: - pop {pc} - .align 2, 0 - - thumb_func_start sub_0806D110 -sub_0806D110: @ 0x0806D110 - push {r4, r5, lr} - ldr r4, _0806D134 @ =gMapDataTopSpecial - movs r0, #0x80 - lsls r0, r0, #7 - adds r5, r4, r0 - adds r0, r4, #0 - adds r1, r5, #0 - bl sub_0806D138 - movs r0, #0x80 - lsls r0, r0, #4 - adds r4, r4, r0 - adds r5, #0x40 - adds r0, r4, #0 - adds r1, r5, #0 - bl sub_0806D138 - pop {r4, r5, pc} - .align 2, 0 -_0806D134: .4byte gMapDataTopSpecial - - thumb_func_start sub_0806D138 -sub_0806D138: @ 0x0806D138 - push {r4, r5, r6, lr} - adds r3, r0, #0 - movs r4, #0 - ldr r2, _0806D15C @ =0x040000D4 - ldr r6, _0806D160 @ =0x80000020 - movs r5, #0x80 - lsls r5, r5, #1 -_0806D146: - str r3, [r2] - str r1, [r2, #4] - str r6, [r2, #8] - ldr r0, [r2, #8] - adds r4, #1 - adds r3, #0x40 - adds r1, r1, r5 - cmp r4, #0x1f - bls _0806D146 - pop {r4, r5, r6, pc} - .align 2, 0 -_0806D15C: .4byte 0x040000D4 -_0806D160: .4byte 0x80000020 - - thumb_func_start sub_0806D164 -sub_0806D164: @ 0x0806D164 - push {r4, r5, r6, r7, lr} - ldr r5, _0806D1B8 @ =gRoomControls - movs r1, #0xa - ldrsh r2, [r5, r1] - movs r3, #0x2e - ldrsh r1, [r0, r3] - subs r2, r2, r1 - adds r2, #0xa0 - ldr r4, _0806D1BC @ =gScreen - movs r3, #0xf - adds r1, r2, #0 - ands r1, r3 - strh r1, [r4, #0x16] - ldrh r1, [r5, #0xc] - ldrh r0, [r0, #0x32] - subs r1, r1, r0 - adds r1, #0xb0 - strh r1, [r4, #0x18] - ldr r3, _0806D1C0 @ =gUnk_02006F00 - ldr r0, _0806D1C4 @ =0xFFFFC000 - adds r6, r3, r0 - movs r5, #0x20 - lsrs r2, r2, #4 - lsls r2, r2, #2 - adds r3, r2, r3 - adds r7, r4, #0 - ldr r1, _0806D1C8 @ =0x040000D4 - ldr r4, _0806D1CC @ =0x80000020 - movs r2, #0x80 - lsls r2, r2, #1 -_0806D1A0: - str r3, [r1] - str r6, [r1, #4] - str r4, [r1, #8] - ldr r0, [r1, #8] - adds r3, r3, r2 - adds r6, #0x40 - subs r5, #1 - cmp r5, #0 - bne _0806D1A0 - movs r0, #1 - strh r0, [r7, #0x1a] - pop {r4, r5, r6, r7, pc} - .align 2, 0 -_0806D1B8: .4byte gRoomControls -_0806D1BC: .4byte gScreen -_0806D1C0: .4byte gUnk_02006F00 -_0806D1C4: .4byte 0xFFFFC000 -_0806D1C8: .4byte 0x040000D4 -_0806D1CC: .4byte 0x80000020 - - thumb_func_start sub_0806D1D0 -sub_0806D1D0: @ 0x0806D1D0 - push {r4, r5, lr} - adds r4, r0, #0 - ldrb r5, [r4, #0xc] - cmp r5, #0 - bne _0806D21A - bl sub_0806D00C - cmp r0, #0 - bne _0806D1E6 - bl DeleteThisEntity -_0806D1E6: - movs r0, #1 - strb r0, [r4, #0xc] - ldrb r0, [r4, #0x1b] - movs r1, #0xc0 - orrs r0, r1 - strb r0, [r4, #0x1b] - ldrb r0, [r4, #0x19] - orrs r0, r1 - strb r0, [r4, #0x19] - adds r2, r4, #0 - adds r2, #0x29 - ldrb r0, [r2] - movs r1, #7 - orrs r0, r1 - strb r0, [r2] - ldrb r0, [r4, #0x18] - movs r1, #3 - orrs r0, r1 - strb r0, [r4, #0x18] - strb r5, [r4, #0x1e] - movs r0, #0x1e - strb r0, [r4, #0xe] - adds r0, r4, #0 - movs r1, #2 - bl sub_0805E3A0 -_0806D21A: - ldrb r0, [r4, #0xd] - cmp r0, #1 - beq _0806D25A - cmp r0, #1 - ble _0806D228 - cmp r0, #2 - beq _0806D25E -_0806D228: - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - movs r5, #0xff - lsls r0, r0, #0x18 - cmp r0, #0 - bne _0806D24A - bl Random - movs r1, #0x7f - ands r0, r1 - adds r0, #0x30 - strb r0, [r4, #0xe] - movs r0, #8 - strb r0, [r4, #0xf] - movs r0, #1 - strb r0, [r4, #0x1e] -_0806D24A: - ldrb r0, [r4, #0xf] - cmp r0, #0 - beq _0806D268 - subs r0, #1 - strb r0, [r4, #0xf] - ands r0, r5 - cmp r0, #0 - bne _0806D268 -_0806D25A: - strb r0, [r4, #0x1e] - b _0806D268 -_0806D25E: - ldrb r1, [r4, #0x18] - movs r0, #4 - rsbs r0, r0, #0 - ands r0, r1 - strb r0, [r4, #0x18] -_0806D268: - ldr r0, [r4, #0x50] - ldrh r1, [r0, #0x2e] - strh r1, [r4, #0x2e] - ldrh r0, [r0, #0x32] - strh r0, [r4, #0x32] - pop {r4, r5, pc} - - thumb_func_start sub_0806D274 -sub_0806D274: @ 0x0806D274 - push {r4, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xc] - cmp r0, #0 - bne _0806D2CA - adds r0, r4, #0 - bl sub_0806D00C - cmp r0, #0 - bne _0806D28C - bl DeleteThisEntity -_0806D28C: - movs r0, #1 - strb r0, [r4, #0xc] - ldrb r0, [r4, #0x1b] - movs r1, #0xc0 - orrs r0, r1 - strb r0, [r4, #0x1b] - ldrb r0, [r4, #0x19] - orrs r0, r1 - strb r0, [r4, #0x19] - adds r2, r4, #0 - adds r2, #0x29 - ldrb r0, [r2] - movs r1, #7 - orrs r0, r1 - strb r0, [r2] - movs r0, #2 - strb r0, [r4, #0x1e] - movs r0, #8 - strb r0, [r4, #0xe] - adds r0, r4, #0 - movs r1, #2 - bl sub_0805E3A0 - movs r0, #0x4c - movs r1, #3 - movs r2, #0 - bl CreateNPC - cmp r0, #0 - beq _0806D2CA - str r4, [r0, #0x54] -_0806D2CA: - ldrb r0, [r4, #0xd] - cmp r0, #4 - bhi _0806D2F4 - lsls r0, r0, #2 - ldr r1, _0806D2DC @ =_0806D2E0 - adds r0, r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0806D2DC: .4byte _0806D2E0 -_0806D2E0: @ jump table - .4byte _0806D2F4 @ case 0 - .4byte _0806D2F4 @ case 1 - .4byte _0806D31C @ case 2 - .4byte _0806D334 @ case 3 - .4byte _0806D338 @ case 4 -_0806D2F4: - ldr r0, _0806D318 @ =gTextBox - ldrb r1, [r0] - movs r0, #0x7f - ands r0, r1 - cmp r0, #0 - beq _0806D338 - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _0806D33C - movs r0, #8 - strb r0, [r4, #0xe] - ldrb r0, [r4, #0x1e] - movs r1, #1 - eors r0, r1 - b _0806D33A - .align 2, 0 -_0806D318: .4byte gTextBox -_0806D31C: - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _0806D33C - movs r0, #8 - strb r0, [r4, #0xe] - ldrb r0, [r4, #0x1e] - movs r1, #1 - eors r0, r1 - b _0806D33A -_0806D334: - movs r0, #4 - b _0806D33A -_0806D338: - movs r0, #2 -_0806D33A: - strb r0, [r4, #0x1e] -_0806D33C: - ldr r0, [r4, #0x50] - ldrh r1, [r0, #0x2e] - strh r1, [r4, #0x2e] - ldrh r0, [r0, #0x32] - strh r0, [r4, #0x32] - pop {r4, pc} - - thumb_func_start sub_0806D348 -sub_0806D348: @ 0x0806D348 - push {r4, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xc] - cmp r0, #0 - bne _0806D39A - adds r0, r4, #0 - bl sub_0806D00C - cmp r0, #0 - bne _0806D360 - bl DeleteThisEntity -_0806D360: - movs r0, #1 - strb r0, [r4, #0xc] - ldrb r0, [r4, #0x1b] - movs r1, #0xc0 - orrs r0, r1 - strb r0, [r4, #0x1b] - ldrb r0, [r4, #0x19] - orrs r0, r1 - strb r0, [r4, #0x19] - adds r2, r4, #0 - adds r2, #0x29 - ldrb r1, [r2] - movs r0, #8 - rsbs r0, r0, #0 - ands r0, r1 - movs r1, #6 - orrs r0, r1 - strb r0, [r2] - ldrb r1, [r4, #0x18] - movs r0, #4 - rsbs r0, r0, #0 - ands r0, r1 - strb r0, [r4, #0x18] - movs r0, #5 - strb r0, [r4, #0x1e] - adds r0, r4, #0 - movs r1, #2 - bl sub_0805E3A0 -_0806D39A: - ldr r0, [r4, #0x54] - ldrb r0, [r0, #0x1e] - cmp r0, #4 - bne _0806D3AA - ldrb r0, [r4, #0x18] - movs r1, #3 - orrs r0, r1 - b _0806D3B2 -_0806D3AA: - ldrb r1, [r4, #0x18] - movs r0, #4 - rsbs r0, r0, #0 - ands r0, r1 -_0806D3B2: - strb r0, [r4, #0x18] - ldr r0, [r4, #0x50] - ldrh r1, [r0, #0x2e] - strh r1, [r4, #0x2e] - ldrh r0, [r0, #0x32] - strh r0, [r4, #0x32] - pop {r4, pc} - - thumb_func_start sub_0806D3C0 -sub_0806D3C0: @ 0x0806D3C0 - push {r4, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xc] - cmp r0, #0 - bne _0806D3F4 - adds r0, r4, #0 - bl sub_0806D00C - cmp r0, #0 - bne _0806D3D8 - bl DeleteThisEntity -_0806D3D8: - movs r0, #1 - strb r0, [r4, #0xc] - ldr r0, _0806D3F0 @ =gUnk_080FD180 - str r0, [r4, #0x48] - adds r0, r4, #0 - movs r1, #2 - bl sub_0805E3A0 - adds r0, r4, #0 - bl sub_0807DD64 - b _0806D408 - .align 2, 0 -_0806D3F0: .4byte gUnk_080FD180 -_0806D3F4: - ldr r0, [r4, #0x50] - ldrh r0, [r0, #0x2e] - strh r0, [r4, #0x2e] - adds r0, r4, #0 - movs r1, #0 - bl ExecuteScriptForEntity - adds r0, r4, #0 - bl HandleEntity0x82Actions -_0806D408: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_0806D40C -sub_0806D40C: @ 0x0806D40C - push {lr} - ldrb r1, [r0, #0x18] - movs r2, #0x40 - orrs r1, r2 - strb r1, [r0, #0x18] - bl sub_0806D41C - pop {pc} - - thumb_func_start sub_0806D41C -sub_0806D41C: @ 0x0806D41C - push {r4, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xc] - cmp r0, #0 - bne _0806D45E - movs r0, #1 - strb r0, [r4, #0xc] - movs r0, #6 - strb r0, [r4, #0x1e] - adds r0, r4, #0 - bl sub_0807DD64 - adds r0, r4, #0 - movs r1, #0 - bl sub_0806D4C0 - adds r0, r4, #0 - movs r1, #1 - bl sub_0806D4C0 - adds r0, r4, #0 - movs r1, #2 - bl sub_0806D4C0 - adds r0, r4, #0 - movs r1, #3 - bl sub_0806D4C0 - adds r0, r4, #0 - movs r1, #2 - bl sub_0805E3A0 - b _0806D46C -_0806D45E: - adds r0, r4, #0 - movs r1, #0 - bl ExecuteScriptForEntity - adds r0, r4, #0 - bl HandleEntity0x82Actions -_0806D46C: - ldr r0, _0806D4A8 @ =gScreenTransition - ldr r0, [r0] - movs r1, #1 - ands r0, r1 - cmp r0, #0 - bne _0806D4BE - movs r1, #0x2e - ldrsh r0, [r4, r1] - subs r0, #0x20 - movs r2, #0x32 - ldrsh r1, [r4, r2] - movs r2, #0x40 - movs r3, #0x40 - bl CheckPlayerProximity - cmp r0, #0 - beq _0806D4AC - adds r2, r4, #0 - adds r2, #0x63 - ldrb r3, [r2] - movs r1, #0 - ldrsb r1, [r2, r1] - movs r0, #8 - rsbs r0, r0, #0 - cmp r1, r0 - ble _0806D4BE - subs r0, r3, #1 - strb r0, [r2] - b _0806D4BE - .align 2, 0 -_0806D4A8: .4byte gScreenTransition -_0806D4AC: - adds r1, r4, #0 - adds r1, #0x63 - ldrb r2, [r1] - movs r0, #0 - ldrsb r0, [r1, r0] - cmp r0, #0 - bge _0806D4BE - adds r0, r2, #1 - strb r0, [r1] -_0806D4BE: - pop {r4, pc} - - thumb_func_start sub_0806D4C0 -sub_0806D4C0: @ 0x0806D4C0 - push {r4, r5, lr} - adds r5, r0, #0 - adds r1, #6 - movs r0, #0x4c - movs r2, #0 - bl CreateNPC - adds r4, r0, #0 - cmp r4, #0 - beq _0806D4EE - str r5, [r4, #0x50] - adds r0, r5, #0 - adds r1, r4, #0 - bl CopyPosition - adds r0, r5, #0 - adds r1, r4, #0 - bl ResolveEntityOnTop - adds r0, r4, #0 - movs r1, #2 - bl sub_0805E3A0 -_0806D4EE: - pop {r4, r5, pc} - - thumb_func_start sub_0806D4F0 -sub_0806D4F0: @ 0x0806D4F0 - push {lr} - movs r1, #0 - bl sub_0806D520 - pop {pc} - .align 2, 0 - - thumb_func_start sub_0806D4FC -sub_0806D4FC: @ 0x0806D4FC - push {lr} - movs r1, #1 - bl sub_0806D520 - pop {pc} - .align 2, 0 - - thumb_func_start sub_0806D508 -sub_0806D508: @ 0x0806D508 - push {lr} - movs r1, #2 - bl sub_0806D520 - pop {pc} - .align 2, 0 - - thumb_func_start sub_0806D514 -sub_0806D514: @ 0x0806D514 - push {lr} - movs r1, #3 - bl sub_0806D520 - pop {pc} - .align 2, 0 - - thumb_func_start sub_0806D520 -sub_0806D520: @ 0x0806D520 - push {r4, lr} - adds r4, r0, #0 - adds r3, r1, #0 - ldrb r0, [r4, #0xc] - cmp r0, #0 - bne _0806D540 - movs r0, #1 - strb r0, [r4, #0xc] - ldr r0, _0806D5B0 @ =gUnk_08114100 - adds r0, r3, r0 - ldrb r0, [r0] - adds r0, #6 - strb r0, [r4, #0xf] - strb r0, [r4, #0x1e] - movs r0, #8 - strb r0, [r4, #0xe] -_0806D540: - ldr r0, [r4, #0x50] - ldrh r1, [r0, #0x2e] - strh r1, [r4, #0x2e] - ldrh r1, [r0, #0x32] - strh r1, [r4, #0x32] - adds r0, #0x62 - ldrb r0, [r0] - adds r1, r4, #0 - adds r1, #0x62 - strb r0, [r1] - ldr r0, [r4, #0x50] - adds r0, #0x63 - ldrb r0, [r0] - adds r1, #1 - strb r0, [r1] - ldr r0, [r4, #0x50] - ldrb r1, [r0, #0x1b] - lsrs r1, r1, #6 - lsls r1, r1, #6 - ldrb r2, [r4, #0x1b] - movs r0, #0x3f - ands r0, r2 - orrs r0, r1 - strb r0, [r4, #0x1b] - ldrb r0, [r4, #0xd] - cmp r0, #0 - bne _0806D590 - movs r1, #0x2e - ldrsh r0, [r4, r1] - lsls r1, r3, #4 - subs r0, r0, r1 - adds r0, #0xc - movs r2, #0x32 - ldrsh r1, [r4, r2] - movs r2, #0x18 - movs r3, #0x40 - bl CheckPlayerProximity - cmp r0, #0 - beq _0806D5B4 -_0806D590: - ldrb r1, [r4, #0x1e] - ldrb r0, [r4, #0xf] - adds r0, #2 - cmp r1, r0 - bge _0806D5D0 - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _0806D5D0 - movs r0, #8 - strb r0, [r4, #0xe] - ldrb r0, [r4, #0x1e] - adds r0, #1 - b _0806D5CE - .align 2, 0 -_0806D5B0: .4byte gUnk_08114100 -_0806D5B4: - ldrb r1, [r4, #0x1e] - ldrb r0, [r4, #0xf] - cmp r1, r0 - bls _0806D5D0 - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _0806D5D0 - movs r0, #8 - strb r0, [r4, #0xe] - subs r0, r1, #1 -_0806D5CE: - strb r0, [r4, #0x1e] -_0806D5D0: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_0806D5D4 -sub_0806D5D4: @ 0x0806D5D4 - push {lr} - bl sub_08053500 - movs r0, #0xd - bl IsItemEquipped - adds r1, r0, #0 - cmp r1, #2 - beq _0806D5F0 - ldr r0, _0806D5FC @ =gSave - adds r0, #0xb4 - adds r0, r1, r0 - movs r1, #0 - strb r1, [r0] -_0806D5F0: - movs r0, #0xd - movs r1, #0 - bl sub_0807CAA0 - pop {pc} - .align 2, 0 -_0806D5FC: .4byte gSave - - thumb_func_start sub_0806D600 -sub_0806D600: @ 0x0806D600 - push {lr} - movs r2, #0 - ldr r0, _0806D618 @ =gSave - ldr r3, _0806D61C @ =0x00000494 - adds r0, r0, r3 - ldr r0, [r0] - cmp r0, #0 - bne _0806D612 - movs r2, #1 -_0806D612: - str r2, [r1, #0x14] - pop {pc} - .align 2, 0 -_0806D618: .4byte gSave -_0806D61C: .4byte 0x00000494 - - thumb_func_start sub_0806D620 -sub_0806D620: @ 0x0806D620 - push {lr} - movs r0, #0xd - movs r1, #0 - bl sub_0807CAA0 - movs r0, #0xe - movs r1, #0 - movs r2, #0 - bl sub_080A7C18 - pop {pc} - .align 2, 0 - - thumb_func_start sub_0806D638 -sub_0806D638: @ 0x0806D638 - ldrh r1, [r0, #0x32] - subs r1, #0x20 - strh r1, [r0, #0x32] - bx lr - - thumb_func_start sub_0806D640 -sub_0806D640: @ 0x0806D640 - ldrh r1, [r0, #0x32] - adds r1, #0x20 - movs r2, #0 - strh r1, [r0, #0x32] - adds r0, #0x39 - strb r2, [r0] - bx lr - .align 2, 0 - - thumb_func_start sub_0806D650 -sub_0806D650: @ 0x0806D650 - movs r1, #2 - strb r1, [r0, #0xd] - bx lr - .align 2, 0 - - thumb_func_start sub_0806D658 -sub_0806D658: @ 0x0806D658 - ldr r1, [r1, #4] - strb r1, [r0, #0xd] - bx lr - .align 2, 0 - - thumb_func_start sub_0806D660 -sub_0806D660: @ 0x0806D660 - ldrb r1, [r0, #0x1b] - movs r2, #0xc0 - orrs r1, r2 - strb r1, [r0, #0x1b] - bx lr - .align 2, 0 - - thumb_func_start sub_0806D66C -sub_0806D66C: @ 0x0806D66C - ldrb r2, [r0, #0x1b] - movs r1, #0x3f - ands r1, r2 - movs r2, #0x80 - orrs r1, r2 - strb r1, [r0, #0x1b] - bx lr - .align 2, 0 - - thumb_func_start sub_0806D67C -sub_0806D67C: @ 0x0806D67C - push {r4, r5, r6, lr} - adds r5, r0, #0 - ldr r4, _0806D6CC @ =gUnk_08114104 - movs r0, #0 - ldrsb r0, [r4, r0] - movs r1, #1 - rsbs r1, r1, #0 - cmp r0, r1 - beq _0806D6CA - adds r6, r1, #0 -_0806D690: - movs r1, #0 - ldrsb r1, [r4, r1] - adds r0, r5, #0 - movs r2, #0x40 - bl CreateFx - adds r1, r0, #0 - cmp r1, #0 - beq _0806D6C0 - movs r0, #1 - ldrsb r0, [r4, r0] - ldrh r2, [r1, #0x2e] - adds r0, r0, r2 - strh r0, [r1, #0x2e] - movs r0, #2 - ldrsb r0, [r4, r0] - ldrh r2, [r1, #0x32] - adds r0, r0, r2 - strh r0, [r1, #0x32] - ldrb r0, [r4, #3] - strb r0, [r1, #0x15] - movs r0, #0x80 - lsls r0, r0, #1 - strh r0, [r1, #0x24] -_0806D6C0: - adds r4, #4 - movs r0, #0 - ldrsb r0, [r4, r0] - cmp r0, r6 - bne _0806D690 -_0806D6CA: - pop {r4, r5, r6, pc} - .align 2, 0 -_0806D6CC: .4byte gUnk_08114104 - - thumb_func_start sub_0806D6D0 -sub_0806D6D0: @ 0x0806D6D0 - push {r4, lr} - sub sp, #4 - movs r4, #0 - str r4, [sp] - movs r0, #7 - movs r1, #0x4c - movs r2, #7 - movs r3, #2 - bl FindEntity - adds r1, r0, #0 - cmp r1, #0 - beq _0806D6EE - movs r0, #2 - strb r0, [r1, #0xd] -_0806D6EE: - str r4, [sp] - movs r0, #7 - movs r1, #0x4c - movs r2, #7 - movs r3, #1 - bl FindEntity - adds r1, r0, #0 - cmp r1, #0 - beq _0806D706 - movs r0, #1 - strb r0, [r1, #0xd] -_0806D706: - add sp, #4 - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_0806D70C -sub_0806D70C: @ 0x0806D70C - push {r4, lr} - sub sp, #4 - movs r4, #0 - str r4, [sp] - movs r0, #7 - movs r1, #0x4c - movs r2, #7 - movs r3, #2 - bl FindEntity - adds r2, r0, #0 - cmp r2, #0 - beq _0806D728 - strb r4, [r2, #0xd] -_0806D728: - str r4, [sp] - movs r0, #7 - movs r1, #0x4c - movs r2, #7 - movs r3, #1 - bl FindEntity - adds r2, r0, #0 - cmp r2, #0 - beq _0806D746 - strb r4, [r2, #0xd] - ldrb r0, [r2, #0x18] - movs r1, #3 - orrs r0, r1 - strb r0, [r2, #0x18] -_0806D746: - add sp, #4 - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_0806D74C -sub_0806D74C: @ 0x0806D74C - push {r4, lr} - sub sp, #4 - movs r4, #0 - str r4, [sp] - movs r0, #7 - movs r1, #0x4c - movs r2, #7 - movs r3, #2 - bl FindEntity - adds r1, r0, #0 - cmp r1, #0 - beq _0806D76A - movs r0, #3 - strb r0, [r1, #0xd] -_0806D76A: - str r4, [sp] - movs r0, #7 - movs r1, #0x4c - movs r2, #7 - movs r3, #1 - bl FindEntity - adds r1, r0, #0 - cmp r1, #0 - beq _0806D782 - movs r0, #2 - strb r0, [r1, #0xd] -_0806D782: - add sp, #4 - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_0806D788 -sub_0806D788: @ 0x0806D788 - push {r4, lr} - sub sp, #4 - movs r4, #0 - str r4, [sp] - movs r0, #7 - movs r1, #0x4c - movs r2, #7 - movs r3, #2 - bl FindEntity - adds r1, r0, #0 - cmp r1, #0 - beq _0806D7A6 - movs r0, #4 - strb r0, [r1, #0xd] -_0806D7A6: - str r4, [sp] - movs r0, #7 - movs r1, #0x4c - movs r2, #7 - movs r3, #1 - bl FindEntity - adds r1, r0, #0 - cmp r1, #0 - beq _0806D7BE - movs r0, #1 - strb r0, [r1, #0xd] -_0806D7BE: - add sp, #4 - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_0806D7C4 -sub_0806D7C4: @ 0x0806D7C4 - push {r4, r5, lr} - sub sp, #4 - adds r4, r0, #0 - adds r5, r1, #0 - ldr r1, _0806D800 @ =gPlayerEntity - ldrh r0, [r1, #0x2e] - movs r2, #0 - strh r0, [r4, #0x2e] - ldrh r0, [r1, #0x32] - subs r0, #0x18 - strh r0, [r4, #0x32] - str r2, [sp] - movs r0, #7 - movs r1, #0x4c - movs r2, #7 - movs r3, #2 - bl FindEntity - cmp r0, #0 - beq _0806D7FC - movs r1, #0x2e - ldrsh r2, [r0, r1] - movs r1, #0x32 - ldrsh r3, [r0, r1] - adds r0, r4, #0 - adds r1, r5, #0 - bl sub_0807DEDC -_0806D7FC: - add sp, #4 - pop {r4, r5, pc} - .align 2, 0 -_0806D800: .4byte gPlayerEntity - - thumb_func_start sub_0806D804 -sub_0806D804: @ 0x0806D804 - push {r4, r5, lr} - sub sp, #4 - adds r4, r0, #0 - adds r5, r1, #0 - movs r0, #0 - str r0, [sp] - movs r0, #7 - movs r1, #0x4c - movs r2, #7 - movs r3, #2 - bl FindEntity - adds r1, r0, #0 - cmp r1, #0 - beq _0806D83A - ldrh r0, [r1, #0x2e] - strh r0, [r4, #0x2e] - ldrh r0, [r1, #0x32] - subs r0, #0x10 - strh r0, [r4, #0x32] - adds r2, r4, #0 - adds r2, #0x29 - ldrb r1, [r2] - movs r0, #0x39 - rsbs r0, r0, #0 - ands r0, r1 - strb r0, [r2] -_0806D83A: - ldr r0, _0806D854 @ =gPlayerEntity - movs r1, #0x2e - ldrsh r2, [r0, r1] - movs r1, #0x32 - ldrsh r3, [r0, r1] - subs r3, #0x10 - adds r0, r4, #0 - adds r1, r5, #0 - bl sub_0807DEDC - add sp, #4 - pop {r4, r5, pc} - .align 2, 0 -_0806D854: .4byte gPlayerEntity - - thumb_func_start sub_0806D858 -sub_0806D858: @ 0x0806D858 - adds r0, #0x29 - ldrb r2, [r0] - movs r1, #0x39 - rsbs r1, r1, #0 - ands r1, r2 - movs r2, #8 - orrs r1, r2 - strb r1, [r0] - bx lr - .align 2, 0 diff --git a/asm/bowUse.s b/asm/bowUse.s deleted file mode 100644 index 0d8cf868..00000000 --- a/asm/bowUse.s +++ /dev/null @@ -1,8 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - diff --git a/asm/brocco.s b/asm/brocco.s deleted file mode 100644 index 80ac6909..00000000 --- a/asm/brocco.s +++ /dev/null @@ -1,287 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - - thumb_func_start Brocco -Brocco: @ 0x08063524 - push {lr} - adds r2, r0, #0 - ldrb r1, [r2, #0x10] - movs r0, #2 - ands r0, r1 - cmp r0, #0 - beq _0806353A - adds r0, r2, #0 - bl sub_0806362C - b _08063540 -_0806353A: - adds r0, r2, #0 - bl sub_08063544 -_08063540: - pop {pc} - .align 2, 0 - - thumb_func_start sub_08063544 -sub_08063544: @ 0x08063544 - push {lr} - ldr r2, _08063558 @ =gUnk_0810CAA0 - ldrb r1, [r0, #0xc] - lsls r1, r1, #2 - adds r1, r1, r2 - ldr r1, [r1] - bl _call_via_r1 - pop {pc} - .align 2, 0 -_08063558: .4byte gUnk_0810CAA0 - - thumb_func_start sub_0806355C -sub_0806355C: @ 0x0806355C - push {r4, lr} - adds r4, r0, #0 - 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, #4 - bl InitAnimationForceUpdate - adds r0, r4, #0 - bl sub_08078778 - pop {r4, pc} - - thumb_func_start sub_08063584 -sub_08063584: @ 0x08063584 - push {r4, lr} - adds r4, r0, #0 - movs r1, #0x20 - movs r2, #0x20 - bl sub_0806ED9C - cmp r0, #0 - blt _080635B2 - ldrb r0, [r4, #0xf] - cmp r0, #0 - bne _080635B8 - bl Random - movs r1, #0x3f - ands r1, r0 - cmp r1, #0 - bne _080635B2 - movs r0, #1 - strb r0, [r4, #0xf] - adds r0, r4, #0 - movs r1, #0 - bl InitAnimationForceUpdate -_080635B2: - ldrb r0, [r4, #0xf] - cmp r0, #0 - beq _080635D0 -_080635B8: - adds r0, r4, #0 - bl UpdateAnimationSingleFrame - adds r0, r4, #0 - adds r0, #0x5a - ldrb r1, [r0] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _080635D0 - movs r0, #0 - strb r0, [r4, #0xf] -_080635D0: - adds r0, r4, #0 - adds r0, #0x39 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #0 - beq _080635FC - movs r0, #2 - strb r0, [r4, #0xc] - adds r0, r4, #0 - bl GetAnimationState - adds r1, r0, #0 - adds r1, #4 - adds r0, r4, #0 - bl InitAnimationForceUpdate - ldrb r0, [r4, #0xe] - ldr r1, _08063604 @ =0x00000A01 - adds r0, r0, r1 - bl TextboxNoOverlapFollow -_080635FC: - adds r0, r4, #0 - bl sub_0806ED78 - pop {r4, pc} - .align 2, 0 -_08063604: .4byte 0x00000A01 - - thumb_func_start sub_08063608 -sub_08063608: @ 0x08063608 - push {lr} - adds r2, r0, #0 - ldr r0, _08063628 @ =gTextBox - ldrb r0, [r0] - movs r1, #0x7f - ands r1, r0 - cmp r1, #0 - bne _08063626 - movs r0, #1 - strb r0, [r2, #0xc] - strb r1, [r2, #0xf] - adds r0, r2, #0 - movs r1, #4 - bl InitAnimationForceUpdate -_08063626: - pop {pc} - .align 2, 0 -_08063628: .4byte gTextBox - - thumb_func_start sub_0806362C -sub_0806362C: @ 0x0806362C - push {r4, lr} - adds r4, r0, #0 - ldrb r3, [r4, #0xc] - cmp r3, #1 - beq _08063662 - cmp r3, #1 - bgt _08063640 - cmp r3, #0 - beq _08063646 - b _080636D4 -_08063640: - cmp r3, #2 - beq _080636BA - b _080636D4 -_08063646: - 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] - adds r0, r4, #0 - adds r0, #0x69 - strb r3, [r0] - adds r0, r4, #0 - bl sub_0807DD64 -_08063662: - adds r2, r4, #0 - adds r2, #0x39 - movs r1, #0 - ldrsb r1, [r2, r1] - cmp r1, #2 - bne _080636A4 - movs r0, #0 - strb r1, [r4, #0xc] - strb r0, [r2] - adds r0, r4, #0 - adds r0, #0x58 - ldrb r0, [r0] - adds r1, r4, #0 - adds r1, #0x69 - strb r0, [r1] - ldr r1, _080636A0 @ =gPlayerEntity - adds r0, r4, #0 - bl GetFacingDirection - bl sub_0806F5A4 - adds r1, r0, #0 - adds r1, #4 - adds r0, r4, #0 - bl InitAnimationForceUpdate - adds r0, r4, #0 - bl sub_0806F118 - b _080636D4 - .align 2, 0 -_080636A0: .4byte gPlayerEntity -_080636A4: - adds r0, r4, #0 - movs r1, #0 - bl ExecuteScriptForEntity - adds r0, r4, #0 - bl HandleEntity0x82Actions - adds r0, r4, #0 - bl UpdateAnimationSingleFrame - b _080636D4 -_080636BA: - adds r0, r4, #0 - bl UpdateFuseInteraction - cmp r0, #0 - beq _080636D4 - movs r0, #1 - strb r0, [r4, #0xc] - adds r0, r4, #0 - adds r0, #0x69 - ldrb r1, [r0] - adds r0, r4, #0 - bl InitAnimationForceUpdate -_080636D4: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_080636D8 -sub_080636D8: @ 0x080636D8 - push {lr} - ldr r1, _080636EC @ =gSave - ldrb r1, [r1, #8] - lsls r1, r1, #3 - ldr r2, _080636F0 @ =gUnk_0810CAAC - adds r1, r1, r2 - bl ShowNPCDialogue - pop {pc} - .align 2, 0 -_080636EC: .4byte gSave -_080636F0: .4byte gUnk_0810CAAC - - thumb_func_start sub_080636F4 -sub_080636F4: @ 0x080636F4 - 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 Brocco_Fusion -Brocco_Fusion: @ 0x0806370C - push {lr} - adds r2, r0, #0 - ldrb r0, [r2, #0xc] - cmp r0, #0 - bne _08063738 - 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] - ldrh r0, [r2, #0x32] - subs r0, #4 - strh r0, [r2, #0x32] - adds r0, r2, #0 - movs r1, #2 - bl InitAnimationForceUpdate - b _0806373E -_08063738: - adds r0, r2, #0 - bl UpdateAnimationSingleFrame -_0806373E: - pop {pc} diff --git a/asm/castleMaid.s b/asm/castleMaid.s deleted file mode 100644 index f8f6d720..00000000 --- a/asm/castleMaid.s +++ /dev/null @@ -1,352 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - - thumb_func_start Maid -Maid: @ 0x08064508 - push {lr} - adds r2, r0, #0 - ldrb r1, [r2, #0x10] - movs r0, #2 - ands r0, r1 - cmp r0, #0 - beq _0806451E - adds r0, r2, #0 - bl sub_08064570 - b _08064522 -_0806451E: - bl DeleteThisEntity -_08064522: - pop {pc} - - thumb_func_start Maid_Head -Maid_Head: @ 0x08064524 - push {r4, r5, lr} - adds r4, r0, #0 - adds r0, #0x5a - ldrb r0, [r0] - movs r2, #0x7f - ands r2, r0 - ldrb r5, [r4, #0x1e] - ldrb r0, [r4, #9] - cmp r0, #0x16 - bne _08064540 - cmp r2, #0 - beq _08064548 - adds r2, #0xa - b _08064548 -_08064540: - cmp r2, #0 - beq _08064546 - adds r2, #0x1a -_08064546: - adds r5, #0x10 -_08064548: - subs r2, #1 - adds r0, r4, #0 - movs r1, #0 - bl SetExtraSpriteFrame - adds r0, r4, #0 - movs r1, #1 - adds r2, r5, #0 - bl SetExtraSpriteFrame - adds r0, r4, #0 - movs r1, #1 - movs r2, #0 - bl SetSpriteSubEntryOffsetData1 - adds r0, r4, #0 - bl sub_0807000C - pop {r4, r5, pc} - .align 2, 0 - - thumb_func_start sub_08064570 -sub_08064570: @ 0x08064570 - push {r4, r5, lr} - adds r4, r0, #0 - ldrb r5, [r4, #0xc] - cmp r5, #1 - beq _080645EA - cmp r5, #1 - bgt _08064584 - cmp r5, #0 - beq _0806458A - b _0806463C -_08064584: - cmp r5, #2 - beq _0806462C - b _0806463C -_0806458A: - ldrb r1, [r4, #9] - movs r0, #0x16 - eors r1, r0 - rsbs r0, r1, #0 - orrs r0, r1 - lsrs r0, r0, #0x1f - lsls r1, r0, #1 - adds r1, r1, r0 - lsls r1, r1, #2 - ldr r0, _080645D0 @ =gUnk_0810F874 - adds r1, r1, r0 - adds r0, r4, #0 - bl LoadExtraSpriteData - cmp r0, #0 - beq _0806463C - ldrb r0, [r4, #0xc] - adds r0, #1 - strb r0, [r4, #0xc] - strb r5, [r4, #0xe] - adds r0, r4, #0 - bl sub_0805ACC0 - adds r2, r0, #0 - cmp r2, #0 - bne _080645D4 - ldrh r0, [r4, #0x2e] - adds r1, r4, #0 - adds r1, #0x6c - strh r0, [r1] - ldrh r0, [r4, #0x32] - adds r1, #2 - strh r0, [r1] - b _080645E0 - .align 2, 0 -_080645D0: .4byte gUnk_0810F874 -_080645D4: - lsrs r1, r2, #0x10 - adds r0, r4, #0 - adds r0, #0x6c - strh r1, [r0] - adds r0, #2 - strh r2, [r0] -_080645E0: - movs r0, #0 - str r0, [r4, #0x68] - adds r0, r4, #0 - bl sub_0807DD50 -_080645EA: - adds r0, r4, #0 - movs r1, #0 - bl sub_0807DD94 - adds r2, r4, #0 - adds r2, #0x39 - movs r0, #0 - ldrsb r0, [r2, r0] - cmp r0, #0 - beq _0806463C - ldrb r0, [r4, #0xc] - adds r0, #1 - movs r1, #0 - strb r0, [r4, #0xc] - strb r1, [r2] - ldr r1, _08064628 @ =gPlayerEntity - adds r0, r4, #0 - bl GetFacingDirection - bl sub_0806F5A4 - adds r1, r0, #0 - adds r0, r4, #0 - bl InitializeAnimation - ldr r0, [r4, #0x68] - cmp r0, #0 - beq _0806463C - bl _call_via_r0 - b _0806463C - .align 2, 0 -_08064628: .4byte gPlayerEntity -_0806462C: - ldr r0, _08064640 @ =gTextBox - ldrb r1, [r0] - movs r0, #0x7f - ands r0, r1 - cmp r0, #0 - bne _0806463C - movs r0, #1 - strb r0, [r4, #0xc] -_0806463C: - pop {r4, r5, pc} - .align 2, 0 -_08064640: .4byte gTextBox - - thumb_func_start sub_08064644 -sub_08064644: @ 0x08064644 - ldr r1, [r1, #4] - str r1, [r0, #0x68] - bx lr - .align 2, 0 - - thumb_func_start sub_0806464C -sub_0806464C: @ 0x0806464C - push {r4, r5, lr} - adds r5, r0, #0 - movs r0, #0x15 - bl CheckGlobalFlag - cmp r0, #0 - beq _0806465E - movs r4, #2 - b _08064674 -_0806465E: - movs r0, #0xa0 - bl CheckLocalFlag - cmp r0, #0 - bne _08064672 - movs r4, #0 - movs r0, #0xa0 - bl SetLocalFlag - b _08064674 -_08064672: - movs r4, #1 -_08064674: - ldr r0, _08064684 @ =gUnk_0810F88C - lsls r1, r4, #1 - adds r1, r1, r0 - ldrh r0, [r1] - adds r1, r5, #0 - bl TextboxNoOverlap - pop {r4, r5, pc} - .align 2, 0 -_08064684: .4byte gUnk_0810F88C - - thumb_func_start sub_08064688 -sub_08064688: @ 0x08064688 - push {lr} - ldr r1, _0806469C @ =gSave - ldrb r1, [r1, #8] - lsls r1, r1, #3 - ldr r2, _080646A0 @ =gUnk_0810F894 - adds r1, r1, r2 - bl ShowNPCDialogue - pop {pc} - .align 2, 0 -_0806469C: .4byte gSave -_080646A0: .4byte gUnk_0810F894 - - thumb_func_start sub_080646A4 -sub_080646A4: @ 0x080646A4 - push {r4, r5, r6, lr} - adds r4, r0, #0 - adds r5, r1, #0 - ldrb r0, [r5, #0x18] - cmp r0, #0 - bne _08064710 - adds r0, #1 - strb r0, [r5, #0x18] - bl Random - movs r1, #0x3f - ands r0, r1 - adds r0, #0x20 - strh r0, [r5, #0x12] - bl Random - adds r1, r0, #0 - movs r0, #0x18 - ands r1, r0 - ldrb r0, [r4, #0x15] - cmp r0, #8 - beq _080646EC - cmp r0, #8 - bgt _080646DA - cmp r0, #0 - beq _080646E4 - b _08064702 -_080646DA: - cmp r0, #0x10 - beq _080646F4 - cmp r0, #0x18 - beq _080646FC - b _08064702 -_080646E4: - cmp r1, #0x10 - bne _08064702 - movs r1, #8 - b _08064702 -_080646EC: - cmp r1, #0x18 - bne _08064702 - movs r1, #0x10 - b _08064702 -_080646F4: - cmp r1, #0 - bne _08064702 - movs r1, #0x18 - b _08064702 -_080646FC: - cmp r1, #8 - bne _08064702 - movs r1, #0 -_08064702: - strb r1, [r4, #0x15] - adds r0, r1, #0 - bl sub_0806F5B0 - strb r0, [r4, #0x14] - movs r0, #0x80 - strh r0, [r4, #0x24] -_08064710: - ldr r0, [r5, #8] - movs r1, #2 - orrs r0, r1 - str r0, [r5, #8] - adds r0, r4, #0 - bl ProcessMovement - movs r0, #0x2e - ldrsh r1, [r4, r0] - adds r2, r4, #0 - adds r2, #0x6c - movs r3, #0 - ldrsh r0, [r2, r3] - subs r1, r1, r0 - cmp r1, #0x10 - ble _0806473A - ldrh r0, [r2] - adds r0, #0x10 - strh r0, [r4, #0x2e] - movs r0, #1 - strh r0, [r5, #0x12] -_0806473A: - movs r3, #0x10 - rsbs r3, r3, #0 - cmp r1, r3 - bge _0806474C - ldrh r0, [r2] - subs r0, #0x10 - strh r0, [r4, #0x2e] - movs r0, #1 - strh r0, [r5, #0x12] -_0806474C: - movs r6, #0x32 - ldrsh r1, [r4, r6] - adds r2, r4, #0 - adds r2, #0x6e - movs r6, #0 - ldrsh r0, [r2, r6] - subs r1, r1, r0 - cmp r1, #0x10 - ble _08064768 - ldrh r0, [r2] - adds r0, #0x10 - strh r0, [r4, #0x32] - movs r0, #1 - strh r0, [r5, #0x12] -_08064768: - cmp r1, r3 - bge _08064776 - ldrh r0, [r2] - subs r0, #0x10 - strh r0, [r4, #0x32] - movs r0, #1 - strh r0, [r5, #0x12] -_08064776: - ldrh r0, [r5, #0x12] - subs r0, #1 - strh r0, [r5, #0x12] - lsls r0, r0, #0x10 - cmp r0, #0 - beq _08064788 - ldr r1, _0806478C @ =gActiveScriptInfo - movs r0, #0 - strb r0, [r1, #6] -_08064788: - pop {r4, r5, r6, pc} - .align 2, 0 -_0806478C: .4byte gActiveScriptInfo diff --git a/asm/castorWildsStatue.s b/asm/castorWildsStatue.s deleted file mode 100644 index 53ada4bf..00000000 --- a/asm/castorWildsStatue.s +++ /dev/null @@ -1,546 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - - thumb_func_start CastorWildsStatue -CastorWildsStatue: @ 0x08067380 - push {r4, lr} - adds r4, r0, #0 - ldrb r1, [r4, #0x10] - movs r0, #2 - ands r0, r1 - cmp r0, #0 - beq _080673A4 - ldr r0, _080673A0 @ =gUnk_08110E5C - ldrb r1, [r4, #0xc] - lsls r1, r1, #2 - adds r1, r1, r0 - ldr r1, [r1] - adds r0, r4, #0 - bl _call_via_r1 - b _080673BA - .align 2, 0 -_080673A0: .4byte gUnk_08110E5C -_080673A4: - ldr r0, _080673BC @ =gUnk_08110E4C - ldrb r1, [r4, #0xc] - lsls r1, r1, #2 - adds r1, r1, r0 - ldr r1, [r1] - adds r0, r4, #0 - bl _call_via_r1 - adds r0, r4, #0 - bl sub_0806ED78 -_080673BA: - pop {r4, pc} - .align 2, 0 -_080673BC: .4byte gUnk_08110E4C - - thumb_func_start sub_080673C0 -sub_080673C0: @ 0x080673C0 - push {lr} - adds r2, r0, #0 - ldr r0, _080673D4 @ =gScreenTransition - adds r0, #0x2c - ldrb r0, [r0] - cmp r0, #0 - beq _080673D8 - movs r0, #3 - b _080673DA - .align 2, 0 -_080673D4: .4byte gScreenTransition -_080673D8: - movs r0, #1 -_080673DA: - strb r0, [r2, #0xc] - ldrb r1, [r2, #0xa] - movs r0, #1 - ands r0, r1 - strb r0, [r2, #0x1e] - cmp r0, #0 - bne _080673EC - ldr r0, _080673F0 @ =gUnk_08110E94 - str r0, [r2, #0x48] -_080673EC: - pop {pc} - .align 2, 0 -_080673F0: .4byte gUnk_08110E94 - - thumb_func_start sub_080673F4 -sub_080673F4: @ 0x080673F4 - push {lr} - adds r2, r0, #0 - adds r3, r2, #0 - adds r3, #0x39 - movs r0, #0 - ldrsb r0, [r3, r0] - cmp r0, #0 - beq _0806740C - movs r1, #0 - movs r0, #2 - strb r0, [r2, #0xc] - strb r1, [r3] -_0806740C: - pop {pc} - .align 2, 0 - - thumb_func_start sub_08067410 -sub_08067410: @ 0x08067410 - movs r1, #1 - strb r1, [r0, #0xc] - bx lr - .align 2, 0 - - thumb_func_start sub_08067418 -sub_08067418: @ 0x08067418 - push {r4, r5, r6, r7, lr} - adds r6, r0, #0 - movs r0, #1 - strb r0, [r6, #0xc] - movs r0, #0x2e - ldrsh r1, [r6, r0] - ldr r2, _08067488 @ =gRoomControls - ldrh r0, [r2, #6] - subs r1, r1, r0 - asrs r1, r1, #4 - movs r3, #0x3f - ands r1, r3 - movs r4, #0x32 - ldrsh r0, [r6, r4] - ldrh r2, [r2, #8] - subs r0, r0, r2 - asrs r0, r0, #4 - ands r0, r3 - lsls r0, r0, #6 - orrs r1, r0 - adds r7, r6, #0 - adds r7, #0x74 - strh r1, [r7] - ldrb r0, [r6, #0xa] - cmp r0, #0 - bne _08067494 - ldr r0, _0806748C @ =gUnk_08110E94 - str r0, [r6, #0x48] - ldr r5, _08067490 @ =0x00004022 - ldrh r1, [r7] - subs r1, #1 - adds r4, r6, #0 - adds r4, #0x38 - ldrb r2, [r4] - adds r0, r5, #0 - bl SetTile - ldrh r1, [r7] - ldrb r2, [r4] - adds r0, r5, #0 - bl SetTile - ldrh r1, [r7] - adds r1, #0x3f - ldrb r2, [r4] - adds r0, r5, #0 - bl SetTile - ldrh r1, [r7] - adds r1, #0x40 - ldrb r2, [r4] - adds r0, r5, #0 - bl SetTile - b _080674F8 - .align 2, 0 -_08067488: .4byte gRoomControls -_0806748C: .4byte gUnk_08110E94 -_08067490: .4byte 0x00004022 -_08067494: - adds r1, r6, #0 - adds r1, #0x38 - movs r0, #3 - strb r0, [r1] - ldrb r2, [r6, #0x1b] - movs r1, #0x3f - adds r0, r1, #0 - ands r0, r2 - movs r2, #0x40 - orrs r0, r2 - strb r0, [r6, #0x1b] - ldrb r0, [r6, #0x19] - ands r1, r0 - orrs r1, r2 - strb r1, [r6, #0x19] - adds r2, r6, #0 - adds r2, #0x29 - ldrb r1, [r2] - movs r0, #8 - rsbs r0, r0, #0 - ands r0, r1 - movs r1, #2 - orrs r0, r1 - strb r0, [r2] - movs r0, #0x1d - bl CheckLocalFlag - cmp r0, #0 - bne _080674F8 - ldr r4, _08067500 @ =0x00004022 - ldr r1, _08067504 @ =0x00000E81 - adds r0, r4, #0 - movs r2, #1 - bl SetTile - ldr r1, _08067508 @ =0x00000E82 - adds r0, r4, #0 - movs r2, #1 - bl SetTile - ldr r1, _0806750C @ =0x00000E83 - adds r0, r4, #0 - movs r2, #1 - bl SetTile - ldr r1, _08067510 @ =0x00000EC3 - adds r0, r4, #0 - movs r2, #1 - bl SetTile -_080674F8: - adds r0, r6, #0 - bl sub_0807DD50 - pop {r4, r5, r6, r7, pc} - .align 2, 0 -_08067500: .4byte 0x00004022 -_08067504: .4byte 0x00000E81 -_08067508: .4byte 0x00000E82 -_0806750C: .4byte 0x00000E83 -_08067510: .4byte 0x00000EC3 - - thumb_func_start sub_08067514 -sub_08067514: @ 0x08067514 - push {r4, lr} - adds r4, r0, #0 - movs r1, #0 - bl sub_0807DD94 - ldrb r0, [r4, #0xa] - cmp r0, #0 - bne _0806752A - adds r0, r4, #0 - bl sub_0806ED78 -_0806752A: - pop {r4, pc} - - thumb_func_start sub_0806752C -sub_0806752C: @ 0x0806752C - push {lr} - bl sub_0806FD3C - pop {pc} - - thumb_func_start sub_08067534 -sub_08067534: @ 0x08067534 - push {r4, r5, lr} - adds r5, r0, #0 - movs r4, #0 -_0806753A: - adds r0, r5, #0 - movs r1, #2 - movs r2, #0 - bl CreateFx - adds r1, r0, #0 - cmp r1, #0 - beq _08067560 - ldr r0, _08067578 @ =gUnk_08110E64 - adds r0, r4, r0 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - ldrh r2, [r1, #0x2e] - adds r0, r0, r2 - strh r0, [r1, #0x2e] - ldrh r0, [r1, #0x32] - adds r0, #0x1c - strh r0, [r1, #0x32] -_08067560: - adds r4, #1 - cmp r4, #1 - ble _0806753A - movs r0, #0xa6 - lsls r0, r0, #1 - bl EnqueueSFX - movs r0, #0x28 - movs r1, #4 - bl sub_08080964 - pop {r4, r5, pc} - .align 2, 0 -_08067578: .4byte gUnk_08110E64 - - thumb_func_start sub_0806757C -sub_0806757C: @ 0x0806757C - push {lr} - adds r2, r0, #0 - ldrb r0, [r2, #0xd] - cmp r0, #0 - beq _080675CC - cmp r0, #2 - bls _080675BC - ldr r0, _080675AC @ =0x00000E81 - movs r1, #1 - bl sub_0807BA8C - ldr r0, _080675B0 @ =0x00000E82 - movs r1, #1 - bl sub_0807BA8C - ldr r0, _080675B4 @ =0x00000E83 - movs r1, #1 - bl sub_0807BA8C - ldr r0, _080675B8 @ =0x00000EC3 - movs r1, #1 - bl sub_0807BA8C - b _080675CC - .align 2, 0 -_080675AC: .4byte 0x00000E81 -_080675B0: .4byte 0x00000E82 -_080675B4: .4byte 0x00000E83 -_080675B8: .4byte 0x00000EC3 -_080675BC: - ldr r0, _080675D0 @ =gUnk_08110E68 - ldrb r1, [r2, #0xd] - lsls r1, r1, #2 - adds r1, r1, r0 - ldr r1, [r1] - adds r0, r2, #0 - bl LoadFixedGFX -_080675CC: - pop {pc} - .align 2, 0 -_080675D0: .4byte gUnk_08110E68 - - thumb_func_start sub_080675D4 -sub_080675D4: @ 0x080675D4 - push {r4, r5, r6, r7, lr} - mov r7, r8 - push {r7} - adds r4, r0, #0 - ldr r5, _080676D0 @ =gUnk_08110E78 - ldrb r0, [r4, #0xd] - lsls r0, r0, #2 - adds r7, r0, #0 - subs r7, #0xc - movs r0, #0x3f - mov r8, r0 - movs r6, #8 -_080675EC: - adds r0, r4, #0 - movs r1, #2 - movs r2, #0 - bl CreateFx - adds r3, r0, #0 - cmp r3, #0 - beq _08067646 - movs r0, #0 - ldrsb r0, [r5, r0] - ldrh r1, [r3, #0x2e] - adds r0, r0, r1 - strh r0, [r3, #0x2e] - movs r0, #1 - ldrsb r0, [r5, r0] - ldrh r1, [r3, #0x32] - adds r0, r0, r1 - strh r0, [r3, #0x32] - strh r7, [r3, #0x36] - adds r0, r4, #0 - adds r0, #0x38 - ldrb r1, [r0] - adds r0, r3, #0 - adds r0, #0x38 - strb r1, [r0] - ldrb r1, [r4, #0x1b] - lsrs r1, r1, #6 - lsls r1, r1, #6 - ldrb r2, [r3, #0x1b] - mov r0, r8 - ands r0, r2 - orrs r0, r1 - strb r0, [r3, #0x1b] - ldrb r1, [r4, #0x19] - lsrs r1, r1, #6 - lsls r1, r1, #6 - ldrb r2, [r3, #0x19] - mov r0, r8 - ands r0, r2 - orrs r0, r1 - strb r0, [r3, #0x19] - adds r0, r4, #0 - adds r1, r3, #0 - bl ResolveEntityOnTop -_08067646: - subs r6, #1 - adds r5, #2 - cmp r6, #0 - bge _080675EC - ldr r5, _080676D4 @ =gUnk_08110E8A - movs r0, #0x3f - mov r8, r0 - movs r6, #3 -_08067656: - adds r0, r4, #0 - movs r1, #4 - movs r2, #0 - bl CreateFx - adds r3, r0, #0 - cmp r3, #0 - beq _080676B0 - movs r0, #0 - ldrsb r0, [r5, r0] - ldrh r1, [r3, #0x2e] - adds r0, r0, r1 - strh r0, [r3, #0x2e] - movs r0, #1 - ldrsb r0, [r5, r0] - ldrh r1, [r3, #0x32] - adds r0, r0, r1 - strh r0, [r3, #0x32] - strh r7, [r3, #0x36] - adds r0, r4, #0 - adds r0, #0x38 - ldrb r1, [r0] - adds r0, r3, #0 - adds r0, #0x38 - strb r1, [r0] - ldrb r1, [r4, #0x1b] - lsrs r1, r1, #6 - lsls r1, r1, #6 - ldrb r2, [r3, #0x1b] - mov r0, r8 - ands r0, r2 - orrs r0, r1 - strb r0, [r3, #0x1b] - ldrb r1, [r4, #0x19] - lsrs r1, r1, #6 - lsls r1, r1, #6 - ldrb r2, [r3, #0x19] - mov r0, r8 - ands r0, r2 - orrs r0, r1 - strb r0, [r3, #0x19] - adds r0, r4, #0 - adds r1, r3, #0 - bl ResolveEntityOnTop -_080676B0: - subs r6, #1 - adds r5, #2 - cmp r6, #0 - bge _08067656 - ldrb r0, [r4, #0xd] - cmp r0, #2 - bls _080676C8 - ldrb r1, [r4, #0x18] - movs r0, #4 - rsbs r0, r0, #0 - ands r0, r1 - strb r0, [r4, #0x18] -_080676C8: - pop {r3} - mov r8, r3 - pop {r4, r5, r6, r7, pc} - .align 2, 0 -_080676D0: .4byte gUnk_08110E78 -_080676D4: .4byte gUnk_08110E8A - - thumb_func_start sub_080676D8 -sub_080676D8: @ 0x080676D8 - ldrb r1, [r0, #0xd] - adds r1, #1 - strb r1, [r0, #0xd] - bx lr - - thumb_func_start sub_080676E0 -sub_080676E0: @ 0x080676E0 - push {lr} - adds r3, r0, #0 - adds r2, r1, #0 - ldrb r0, [r2, #0x18] - cmp r0, #1 - beq _08067706 - cmp r0, #1 - bgt _080676F6 - cmp r0, #0 - beq _080676FC - b _08067734 -_080676F6: - cmp r0, #2 - beq _08067722 - b _08067734 -_080676FC: - movs r0, #1 - strb r0, [r2, #0x18] - movs r0, #0x20 - strb r0, [r2, #0x19] - b _08067742 -_08067706: - ldrb r1, [r2, #0x19] - lsrs r0, r1, #1 - subs r0, #0x10 - strh r0, [r3, #0x36] - subs r1, #1 - strb r1, [r2, #0x19] - lsls r1, r1, #0x18 - cmp r1, #0 - bne _08067742 - movs r0, #2 - strb r0, [r2, #0x18] - movs r0, #0x24 - strb r0, [r2, #0x19] - b _08067742 -_08067722: - ldrb r0, [r2, #0x19] - subs r0, #1 - strb r0, [r2, #0x19] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _08067742 - movs r0, #3 - strb r0, [r2, #0x18] - b _08067742 -_08067734: - movs r1, #0xc0 - lsls r1, r1, #5 - adds r0, r3, #0 - bl sub_08003FC4 - cmp r0, #0 - beq _08067748 -_08067742: - ldr r1, _0806774C @ =gActiveScriptInfo - movs r0, #0 - strb r0, [r1, #6] -_08067748: - pop {pc} - .align 2, 0 -_0806774C: .4byte gActiveScriptInfo - - thumb_func_start CastorWildsStatue_Fusion -CastorWildsStatue_Fusion: @ 0x08067750 - push {r4, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xc] - cmp r0, #0 - bne _08067788 - 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] - ldrh r0, [r4, #0x32] - subs r0, #0x18 - strh r0, [r4, #0x32] - adds r0, r4, #0 - movs r1, #1 - bl InitializeAnimation - ldr r1, _08067784 @ =0x0000017B - adds r0, r4, #0 - bl sub_0801D2B4 - b _0806778E - .align 2, 0 -_08067784: .4byte 0x0000017B -_08067788: - adds r0, r4, #0 - bl GetNextFrame -_0806778E: - pop {r4, pc} diff --git a/asm/cucco.s b/asm/cucco.s deleted file mode 100644 index ccd70dd0..00000000 --- a/asm/cucco.s +++ /dev/null @@ -1,327 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start Cucco -Cucco: @ 0x0806E4A0 - push {lr} - ldr r2, _0806E4B4 @ =gUnk_081145B4 - ldrb r1, [r0, #0xc] - lsls r1, r1, #2 - adds r1, r1, r2 - ldr r1, [r1] - bl _call_via_r1 - pop {pc} - .align 2, 0 -_0806E4B4: .4byte gUnk_081145B4 - - thumb_func_start sub_0806E4B8 -sub_0806E4B8: @ 0x0806E4B8 - push {r4, r5, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xc] - adds r0, #1 - movs r5, #0 - strb r0, [r4, #0xc] - 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_080787A8 - adds r0, r4, #0 - movs r1, #2 - bl sub_0805E3A0 - strb r5, [r4, #0xd] - adds r0, r4, #0 - bl sub_0806E4EC - pop {r4, r5, pc} - .align 2, 0 - - thumb_func_start sub_0806E4EC -sub_0806E4EC: @ 0x0806E4EC - push {r4, r5, lr} - adds r5, r0, #0 - ldrb r0, [r5, #0xd] - cmp r0, #0 - bne _0806E50E - adds r0, #1 - strb r0, [r5, #0xd] - bl Random - movs r1, #0x1f - ands r0, r1 - adds r0, #0x3c - strb r0, [r5, #0xe] - adds r0, r5, #0 - movs r1, #0 - bl InitAnimationForceUpdate -_0806E50E: - ldrb r0, [r5, #0xe] - subs r0, #1 - strb r0, [r5, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _0806E552 - bl Random - movs r1, #1 - ands r1, r0 - cmp r1, #0 - beq _0806E52A - movs r0, #3 - b _0806E52C -_0806E52A: - movs r0, #2 -_0806E52C: - strb r0, [r5, #0xc] - movs r0, #0 - strb r0, [r5, #0xd] - bl Random - movs r1, #1 - ands r1, r0 - cmp r1, #0 - beq _0806E552 - ldr r4, _0806E560 @ =gUnk_081145C8 - bl Random - movs r1, #3 - ands r1, r0 - lsls r1, r1, #1 - adds r1, r1, r4 - ldrh r0, [r1] - bl EnqueueSFX -_0806E552: - adds r0, r5, #0 - bl sub_0806E65C - adds r0, r5, #0 - bl UpdateAnimationSingleFrame - pop {r4, r5, pc} - .align 2, 0 -_0806E560: .4byte gUnk_081145C8 - - thumb_func_start sub_0806E564 -sub_0806E564: @ 0x0806E564 - push {r4, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xd] - cmp r0, #0 - bne _0806E5AA - adds r0, #1 - strb r0, [r4, #0xd] - bl Random - movs r2, #1 - ands r0, r2 - cmp r0, #0 - beq _0806E590 - ldrb r0, [r4, #0x18] - lsls r1, r0, #0x19 - lsrs r1, r1, #0x1f - eors r1, r2 - lsls r1, r1, #6 - subs r2, #0x42 - ands r2, r0 - orrs r2, r1 - strb r2, [r4, #0x18] -_0806E590: - bl Random - movs r1, #1 - ands r0, r1 - adds r0, #1 - strb r0, [r4, #0xe] - movs r0, #0xc0 - lsls r0, r0, #9 - str r0, [r4, #0x20] - adds r0, r4, #0 - movs r1, #1 - bl InitAnimationForceUpdate -_0806E5AA: - movs r1, #0xa0 - lsls r1, r1, #6 - adds r0, r4, #0 - bl sub_08003FC4 - cmp r0, #0 - bne _0806E5D4 - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - lsrs r1, r0, #0x18 - cmp r1, #0 - bne _0806E5CE - movs r0, #1 - strb r0, [r4, #0xc] - strb r1, [r4, #0xd] - b _0806E5D4 -_0806E5CE: - movs r0, #0xc0 - lsls r0, r0, #9 - str r0, [r4, #0x20] -_0806E5D4: - adds r0, r4, #0 - bl sub_0806E65C - adds r0, r4, #0 - bl UpdateAnimationSingleFrame - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_0806E5E4 -sub_0806E5E4: @ 0x0806E5E4 - push {r4, r5, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xd] - cmp r0, #0 - bne _0806E622 - adds r0, #1 - strb r0, [r4, #0xd] - bl Random - movs r5, #1 - ands r0, r5 - cmp r0, #0 - beq _0806E612 - ldrb r0, [r4, #0x18] - lsls r1, r0, #0x19 - lsrs r1, r1, #0x1f - eors r1, r5 - lsls r1, r1, #6 - movs r2, #0x41 - rsbs r2, r2, #0 - ands r2, r0 - orrs r2, r1 - strb r2, [r4, #0x18] -_0806E612: - bl Random - adds r1, r0, #0 - ands r1, r5 - adds r1, #2 - adds r0, r4, #0 - bl InitAnimationForceUpdate -_0806E622: - adds r0, r4, #0 - adds r0, #0x5a - ldrb r1, [r0] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _0806E638 - movs r1, #0 - movs r0, #1 - strb r0, [r4, #0xc] - strb r1, [r4, #0xd] -_0806E638: - adds r0, r4, #0 - bl sub_0806E65C - adds r0, r4, #0 - bl UpdateAnimationSingleFrame - pop {r4, r5, pc} - .align 2, 0 - - thumb_func_start sub_0806E648 -sub_0806E648: @ 0x0806E648 - push {r4, lr} - adds r4, r0, #0 - bl UpdateFuseInteraction - cmp r0, #0 - beq _0806E658 - movs r0, #1 - strb r0, [r4, #0xc] -_0806E658: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_0806E65C -sub_0806E65C: @ 0x0806E65C - push {r4, lr} - adds r4, r0, #0 - adds r0, #0x39 - movs r2, #0 - ldrsb r2, [r0, r2] - cmp r2, #0 - beq _0806E6A6 - ldr r0, _0806E688 @ =gPlayerState - ldr r0, [r0, #0x30] - movs r1, #0x80 - ands r0, r1 - cmp r0, #0 - beq _0806E694 - cmp r2, #2 - bne _0806E68C - movs r0, #4 - strb r0, [r4, #0xc] - adds r0, r4, #0 - bl sub_0806F118 - b _0806E698 - .align 2, 0 -_0806E688: .4byte gPlayerState -_0806E68C: - adds r0, r4, #0 - bl sub_0806E6A8 - b _0806E698 -_0806E694: - bl sub_080791D0 -_0806E698: - movs r0, #0xd5 - bl SoundReq - adds r1, r4, #0 - adds r1, #0x39 - movs r0, #0 - strb r0, [r1] -_0806E6A6: - pop {r4, pc} - - thumb_func_start sub_0806E6A8 -sub_0806E6A8: @ 0x0806E6A8 - push {r4, r5, lr} - adds r4, r0, #0 - movs r5, #0 - bl sub_08002632 - ldr r1, _0806E6D4 @ =gSave - ldr r2, _0806E6D8 @ =0x000001C1 - adds r1, r1, r2 - adds r0, r0, r1 - ldrb r0, [r0] - cmp r0, #0xf3 - bne _0806E6C2 - movs r5, #1 -_0806E6C2: - ldr r0, _0806E6DC @ =gUnk_081145D0 - lsls r1, r5, #1 - adds r1, r1, r0 - ldrh r0, [r1] - adds r1, r4, #0 - bl TextboxNoOverlap - pop {r4, r5, pc} - .align 2, 0 -_0806E6D4: .4byte gSave -_0806E6D8: .4byte 0x000001C1 -_0806E6DC: .4byte gUnk_081145D0 - - thumb_func_start Cucco_Fusion -Cucco_Fusion: @ 0x0806E6E0 - push {lr} - adds r2, r0, #0 - ldrb r0, [r2, #0xc] - cmp r0, #0 - bne _0806E706 - 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, #1 - bl InitAnimationForceUpdate - b _0806E70C -_0806E706: - adds r0, r2, #0 - bl UpdateAnimationSingleFrame -_0806E70C: - pop {pc} - .align 2, 0 diff --git a/asm/cuccoChick.s b/asm/cuccoChick.s deleted file mode 100644 index dd10f79d..00000000 --- a/asm/cuccoChick.s +++ /dev/null @@ -1,245 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start CuccoChick -CuccoChick: @ 0x0806E710 - push {r4, lr} - adds r4, r0, #0 - ldr r1, _0806E72C @ =gUnk_081145D4 - ldrb r0, [r4, #0xc] - lsls r0, r0, #2 - adds r0, r0, r1 - ldr r1, [r0] - adds r0, r4, #0 - bl _call_via_r1 - adds r0, r4, #0 - bl sub_0806ED78 - pop {r4, pc} - .align 2, 0 -_0806E72C: .4byte gUnk_081145D4 - - thumb_func_start sub_0806E730 -sub_0806E730: @ 0x0806E730 - push {r4, r5, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xc] - adds r0, #1 - movs r5, #0 - strb r0, [r4, #0xc] - 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_080787A8 - adds r0, r4, #0 - movs r1, #2 - bl sub_0805E3A0 - strb r5, [r4, #0xd] - adds r0, r4, #0 - bl sub_0806E764 - pop {r4, r5, pc} - .align 2, 0 - - thumb_func_start sub_0806E764 -sub_0806E764: @ 0x0806E764 - push {r4, r5, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xd] - adds r5, r0, #0 - cmp r5, #0 - bne _0806E782 - adds r0, #1 - strb r0, [r4, #0xd] - bl Random - movs r1, #0x1f - ands r0, r1 - adds r0, #0x1e - strb r0, [r4, #0xe] - strb r5, [r4, #0x1e] -_0806E782: - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - lsrs r1, r0, #0x18 - cmp r1, #0 - bne _0806E7A8 - movs r0, #2 - strb r0, [r4, #0xc] - strb r1, [r4, #0xd] - bl Random - movs r1, #1 - ands r1, r0 - cmp r1, #0 - beq _0806E7A8 - movs r0, #0xd6 - bl EnqueueSFX -_0806E7A8: - adds r0, r4, #0 - bl sub_0806E838 - pop {r4, r5, pc} - - thumb_func_start sub_0806E7B0 -sub_0806E7B0: @ 0x0806E7B0 - push {r4, r5, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xd] - cmp r0, #0 - bne _0806E7F2 - adds r0, #1 - strb r0, [r4, #0xd] - bl Random - movs r5, #1 - ands r0, r5 - cmp r0, #0 - beq _0806E7DE - ldrb r0, [r4, #0x18] - lsls r1, r0, #0x19 - lsrs r1, r1, #0x1f - eors r1, r5 - lsls r1, r1, #6 - movs r2, #0x41 - rsbs r2, r2, #0 - ands r2, r0 - orrs r2, r1 - strb r2, [r4, #0x18] -_0806E7DE: - bl Random - movs r1, #3 - ands r0, r1 - adds r0, #1 - strb r0, [r4, #0xe] - movs r0, #0x80 - lsls r0, r0, #9 - str r0, [r4, #0x20] - strb r5, [r4, #0x1e] -_0806E7F2: - movs r1, #0xc0 - lsls r1, r1, #6 - adds r0, r4, #0 - bl sub_08003FC4 - cmp r0, #0 - bne _0806E81C - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - lsrs r1, r0, #0x18 - cmp r1, #0 - bne _0806E816 - movs r0, #1 - strb r0, [r4, #0xc] - strb r1, [r4, #0xd] - b _0806E81C -_0806E816: - movs r0, #0x80 - lsls r0, r0, #9 - str r0, [r4, #0x20] -_0806E81C: - adds r0, r4, #0 - bl sub_0806E838 - pop {r4, r5, pc} - - thumb_func_start sub_0806E824 -sub_0806E824: @ 0x0806E824 - push {r4, lr} - adds r4, r0, #0 - bl UpdateFuseInteraction - cmp r0, #0 - beq _0806E834 - movs r0, #1 - strb r0, [r4, #0xc] -_0806E834: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_0806E838 -sub_0806E838: @ 0x0806E838 - push {r4, lr} - adds r4, r0, #0 - adds r0, #0x39 - movs r2, #0 - ldrsb r2, [r0, r2] - cmp r2, #0 - beq _0806E882 - ldr r0, _0806E864 @ =gPlayerState - ldr r0, [r0, #0x30] - movs r1, #0x80 - ands r0, r1 - cmp r0, #0 - beq _0806E870 - cmp r2, #2 - bne _0806E868 - movs r0, #3 - strb r0, [r4, #0xc] - adds r0, r4, #0 - bl sub_0806F118 - b _0806E874 - .align 2, 0 -_0806E864: .4byte gPlayerState -_0806E868: - adds r0, r4, #0 - bl sub_0806E884 - b _0806E874 -_0806E870: - bl sub_080791D0 -_0806E874: - movs r0, #0xd6 - bl SoundReq - adds r1, r4, #0 - adds r1, #0x39 - movs r0, #0 - strb r0, [r1] -_0806E882: - pop {r4, pc} - - thumb_func_start sub_0806E884 -sub_0806E884: @ 0x0806E884 - push {lr} - adds r1, r0, #0 - ldr r0, _0806E890 @ =0x00000DB6 - bl TextboxNoOverlap - pop {pc} - .align 2, 0 -_0806E890: .4byte 0x00000DB6 - - thumb_func_start CuccoChick_Fusion -CuccoChick_Fusion: @ 0x0806E894 - push {r4, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xc] - cmp r0, #0 - bne _0806E8B6 - 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] - movs r0, #1 - strb r0, [r4, #0x1e] - b _0806E8CA -_0806E8B6: - movs r1, #0xc0 - lsls r1, r1, #6 - adds r0, r4, #0 - bl sub_08003FC4 - cmp r0, #0 - bne _0806E8CA - movs r0, #0x80 - lsls r0, r0, #9 - str r0, [r4, #0x20] -_0806E8CA: - pop {r4, pc} - diff --git a/asm/drLeft.s b/asm/drLeft.s deleted file mode 100644 index b575c71b..00000000 --- a/asm/drLeft.s +++ /dev/null @@ -1,166 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start DrLeft -DrLeft: @ 0x0806BF80 - push {r4, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xa] - cmp r0, #0 - bne _0806BFBE - ldrb r0, [r4, #0xc] - cmp r0, #0 - bne _0806BFA2 - adds r0, #1 - strb r0, [r4, #0xc] - adds r0, r4, #0 - movs r1, #2 - bl sub_0805E3A0 - adds r0, r4, #0 - bl sub_0807DD50 -_0806BFA2: - adds r0, r4, #0 - movs r1, #0 - bl ExecuteScriptForEntity - adds r0, r4, #0 - bl HandleEntity0x82Actions - adds r0, r4, #0 - bl GetNextFrame - adds r0, r4, #0 - bl sub_0806BFD8 - b _0806BFD4 -_0806BFBE: - ldrb r0, [r4, #0xc] - adds r1, r0, #0 - cmp r1, #0 - bne _0806BFD4 - adds r0, #1 - strb r0, [r4, #0xc] - strb r1, [r4, #0x1e] - adds r0, r4, #0 - adds r1, r4, #0 - bl sub_0806FAD8 -_0806BFD4: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_0806BFD8 -sub_0806BFD8: @ 0x0806BFD8 - push {r4, r5, lr} - adds r4, r0, #0 - adds r0, #0x5b - ldrb r0, [r0] - movs r5, #3 - adds r1, r5, #0 - ands r1, r0 - cmp r1, #1 - beq _0806BFF0 - cmp r1, #2 - beq _0806C002 - b _0806C00A -_0806BFF0: - bl Random - adds r1, r0, #0 - ands r1, r5 - adds r1, #0xc - adds r0, r4, #0 - bl InitializeAnimation - b _0806C00A -_0806C002: - adds r0, r4, #0 - movs r1, #0 - bl InitializeAnimation -_0806C00A: - pop {r4, r5, pc} - - thumb_func_start sub_0806C00C -sub_0806C00C: @ 0x0806C00C - push {lr} - adds r2, r1, #0 - adds r0, #0x5a - ldrb r1, [r0] - movs r0, #0x80 - ands r0, r1 - lsls r0, r0, #0x18 - lsrs r0, r0, #0x18 - cmp r0, #0 - beq _0806C022 - movs r0, #1 -_0806C022: - str r0, [r2, #0x14] - pop {pc} - .align 2, 0 - - thumb_func_start sub_0806C028 -sub_0806C028: @ 0x0806C028 - push {lr} - ldrb r2, [r0, #0x14] - lsrs r2, r2, #1 - ldr r1, [r1, #4] - adds r1, r1, r2 - bl InitializeAnimation - pop {pc} - - thumb_func_start sub_0806C038 -sub_0806C038: @ 0x0806C038 - push {r4, r5, lr} - adds r5, r0, #0 - ldr r0, _0806C074 @ =gSave - ldrb r0, [r0, #8] - subs r4, r0, #5 - cmp r4, #0 - beq _0806C048 - movs r4, #0 -_0806C048: - movs r0, #0x46 - bl GetInventoryValue - cmp r0, #0 - bne _0806C086 - movs r0, #0x3a - bl GetInventoryValue - cmp r0, #0 - bne _0806C078 - movs r4, #6 - movs r0, #0xaf - bl CheckLocalFlag - cmp r0, #0 - bne _0806C086 - movs r4, #5 - movs r0, #0xaf - bl SetLocalFlag - b _0806C086 - .align 2, 0 -_0806C074: .4byte gSave -_0806C078: - movs r4, #7 - movs r0, #0x3a - bl GetInventoryValue - cmp r0, #1 - bls _0806C086 - movs r4, #0 -_0806C086: - ldr r0, _0806C098 @ =gUnk_081133A4 - lsls r1, r4, #1 - adds r1, r1, r0 - ldrh r0, [r1] - adds r1, r5, #0 - bl TextboxNoOverlap - pop {r4, r5, pc} - .align 2, 0 -_0806C098: .4byte gUnk_081133A4 - - thumb_func_start sub_0806C09C -sub_0806C09C: @ 0x0806C09C - push {lr} - ldr r3, _0806C0AC @ =gUnk_081133B4 - movs r1, #1 - movs r2, #0 - bl sub_08078850 - pop {pc} - .align 2, 0 -_0806C0AC: .4byte gUnk_081133B4 diff --git a/asm/evilSpirit/sub_080862B8.inc b/asm/evilSpirit/sub_080862B8.inc deleted file mode 100644 index 329a5bec..00000000 --- a/asm/evilSpirit/sub_080862B8.inc +++ /dev/null @@ -1,100 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - push {r4, r5, lr} - adds r4, r0, #0 - movs r0, #0x63 - bl CheckLocalFlag - cmp r0, #0 - beq _080862CA - bl DeleteThisEntity -_080862CA: - movs r3, #1 - strb r3, [r4, #0xc] - ldr r1, _08086350 @ =gUnk_08120678 - ldrb r0, [r4, #0xa] - lsls r0, r0, #1 - adds r0, r0, r1 - ldrh r0, [r0] - adds r1, r4, #0 - adds r1, #0x7c - strh r0, [r1] - adds r2, r4, #0 - adds r2, #0x76 - strh r0, [r2] - ldrh r0, [r1] - subs r1, #2 - strh r0, [r1] - ldrb r0, [r4, #0xa] - cmp r0, #0 - bne _08086354 - adds r1, #6 - ldr r0, [r4, #0x2c] - str r0, [r1] - adds r1, #4 - ldr r0, [r4, #0x30] - str r0, [r1] - ldrb r1, [r4, #0x19] - movs r0, #0x3f - ands r0, r1 - strb r0, [r4, #0x19] - str r4, [r4, #0x50] - ldrb r0, [r4, #0x10] - movs r1, #0x80 - orrs r0, r1 - strb r0, [r4, #0x10] - adds r1, r4, #0 - adds r1, #0x3c - movs r0, #7 - strb r0, [r1] - adds r0, r4, #0 - adds r0, #0x3f - strb r3, [r0] - subs r1, #1 - movs r0, #4 - strb r0, [r1] - movs r2, #0 -_08086324: - adds r5, r2, #1 - adds r0, r4, #0 - movs r1, #0x18 - adds r2, r5, #0 - movs r3, #0 - bl CreateObjectWithParent - adds r1, r0, #0 - str r1, [r4, #0x54] - cmp r1, #0 - beq _08086346 - ldr r0, [r4, #0x50] - str r0, [r1, #0x50] - ldr r0, [r4, #0x54] - str r4, [r0, #0x54] - ldr r0, [r4, #0x54] - str r0, [r4, #0x50] -_08086346: - adds r2, r5, #0 - cmp r2, #3 - bls _08086324 - b _08086360 - .align 2, 0 -_08086350: .4byte gUnk_08120678 -_08086354: - ldrb r0, [r4, #0x19] - movs r1, #0x3f - ands r1, r0 - movs r0, #0x40 - orrs r1, r0 - strb r1, [r4, #0x19] -_08086360: - ldrb r1, [r4, #0xa] - adds r0, r4, #0 - bl InitializeAnimation - adds r0, r4, #0 - bl sub_08086370 - pop {r4, r5, pc} - .syntax divided diff --git a/asm/farmers.s b/asm/farmers.s deleted file mode 100644 index 485c065c..00000000 --- a/asm/farmers.s +++ /dev/null @@ -1,205 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - - thumb_func_start Farmers -Farmers: @ 0x0806BBE4 - push {r4, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xc] - cmp r0, #0 - bne _0806BC40 - ldrb r0, [r4, #0xa] - lsls r1, r0, #1 - adds r1, r1, r0 - lsls r1, r1, #2 - ldr r0, _0806BC28 @ =gUnk_08113140 - adds r1, r1, r0 - adds r0, r4, #0 - bl LoadExtraSpriteData - cmp r0, #0 - beq _0806BC54 - ldrb r0, [r4, #0xc] - adds r0, #1 - strb r0, [r4, #0xc] - ldrb r1, [r4, #0xe] - movs r0, #1 - ands r1, r0 - lsls r1, r1, #6 - ldrb r2, [r4, #0x18] - movs r0, #0x41 - rsbs r0, r0, #0 - ands r0, r2 - orrs r0, r1 - strb r0, [r4, #0x18] - lsls r0, r0, #0x19 - cmp r0, #0 - blt _0806BC2C - movs r0, #6 - b _0806BC2E - .align 2, 0 -_0806BC28: .4byte gUnk_08113140 -_0806BC2C: - movs r0, #2 -_0806BC2E: - strb r0, [r4, #0x14] - ldrb r0, [r4, #0x14] - strb r0, [r4, #0xe] - adds r0, r4, #0 - bl sub_0806BC58 - adds r0, r4, #0 - bl sub_0807DD64 -_0806BC40: - adds r0, r4, #0 - movs r1, #0 - bl ExecuteScriptForEntity - adds r0, r4, #0 - bl HandleEntity0x82Actions - adds r0, r4, #0 - bl GetNextFrame -_0806BC54: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_0806BC58 -sub_0806BC58: @ 0x0806BC58 - push {lr} - movs r1, #2 - bl sub_0805E3A0 - pop {pc} - .align 2, 0 - - thumb_func_start Farmers_Head -Farmers_Head: @ 0x0806BC64 - push {r4, lr} - adds r4, r0, #0 - adds r0, #0x5a - ldrb r0, [r0] - movs r2, #0x7f - ands r2, r0 - adds r0, r4, #0 - movs r1, #0 - bl SetExtraSpriteFrame - ldrb r2, [r4, #0x1e] - adds r0, r4, #0 - movs r1, #1 - bl SetExtraSpriteFrame - adds r0, r4, #0 - movs r1, #1 - movs r2, #0 - bl SetSpriteSubEntryOffsetData1 - adds r0, r4, #0 - bl sub_0807000C - pop {r4, pc} - - thumb_func_start sub_0806BC94 -sub_0806BC94: @ 0x0806BC94 - push {lr} - ldrb r3, [r0, #0x18] - lsls r3, r3, #0x19 - lsrs r3, r3, #0x1f - rsbs r2, r3, #0 - orrs r2, r3 - asrs r2, r2, #0x1f - movs r3, #8 - ands r2, r3 - ldr r1, [r1, #4] - adds r1, r1, r2 - ldrb r2, [r0, #0x14] - lsrs r2, r2, #1 - adds r1, r1, r2 - bl InitializeAnimation - pop {pc} - .align 2, 0 - - thumb_func_start sub_0806BCB8 -sub_0806BCB8: @ 0x0806BCB8 - ldrb r1, [r0, #0xe] - strb r1, [r0, #0x14] - bx lr - .align 2, 0 - - thumb_func_start sub_0806BCC0 -sub_0806BCC0: @ 0x0806BCC0 - push {lr} - adds r1, r0, #0 - ldrb r0, [r1, #0xa] - cmp r0, #0 - bne _0806BCD0 - adds r0, r1, #0 - bl sub_0806F188 -_0806BCD0: - pop {pc} - .align 2, 0 - - thumb_func_start sub_0806BCD4 -sub_0806BCD4: @ 0x0806BCD4 - push {r4, lr} - adds r4, r0, #0 - bl sub_0801E99C - adds r1, r0, #0 - adds r0, r4, #0 - bl sub_08078784 - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_0806BCE8 -sub_0806BCE8: @ 0x0806BCE8 - push {lr} - ldrb r1, [r0, #0xa] - lsls r1, r1, #3 - ldr r2, _0806BCF8 @ =gUnk_08113158 - adds r1, r1, r2 - bl ShowNPCDialogue - pop {pc} - .align 2, 0 -_0806BCF8: .4byte gUnk_08113158 - - thumb_func_start Farmers_Fusion -Farmers_Fusion: @ 0x0806BCFC - push {r4, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xc] - cmp r0, #0 - bne _0806BD4C - ldrb r0, [r4, #0xa] - lsls r1, r0, #1 - adds r1, r1, r0 - lsls r1, r1, #2 - ldr r0, _0806BD48 @ =gUnk_08113140 - adds r1, r1, r0 - adds r0, r4, #0 - bl LoadExtraSpriteData - cmp r0, #0 - beq _0806BD52 - 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 - movs r1, #0x41 - rsbs r1, r1, #0 - ands r0, r1 - strb r0, [r4, #0x18] - adds r0, r4, #0 - bl sub_0806BC58 - adds r0, r4, #0 - movs r1, #3 - bl InitAnimationForceUpdate - b _0806BD52 - .align 2, 0 -_0806BD48: .4byte gUnk_08113140 -_0806BD4C: - adds r0, r4, #0 - bl UpdateAnimationSingleFrame -_0806BD52: - pop {r4, pc} diff --git a/asm/ghostBrothers.s b/asm/ghostBrothers.s deleted file mode 100644 index d930929d..00000000 --- a/asm/ghostBrothers.s +++ /dev/null @@ -1,553 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - - thumb_func_start GhostBrothers -GhostBrothers: @ 0x08065BA4 - push {r4, lr} - adds r4, r0, #0 - ldrb r1, [r4, #0x10] - movs r0, #2 - ands r0, r1 - cmp r0, #0 - beq _08065BBA - adds r0, r4, #0 - bl sub_08065C0C - b _08065BEA -_08065BBA: - ldr r1, _08065BEC @ =gUnk_08110164 - ldrb r0, [r4, #0xa] - lsls r0, r0, #2 - adds r0, r0, r1 - ldr r1, [r0] - adds r0, r4, #0 - bl _call_via_r1 - ldrb r0, [r4, #0xa] - cmp r0, #2 - bhi _08065BEA - ldr r2, _08065BF0 @ =gUnk_0811015C - ldrb r0, [r4, #0xf] - adds r1, r0, #1 - strb r1, [r4, #0xf] - lsls r0, r0, #0x18 - lsrs r0, r0, #0x1b - movs r1, #7 - ands r0, r1 - adds r0, r0, r2 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - strh r0, [r4, #0x36] -_08065BEA: - pop {r4, pc} - .align 2, 0 -_08065BEC: .4byte gUnk_08110164 -_08065BF0: .4byte gUnk_0811015C - - thumb_func_start sub_08065BF4 -sub_08065BF4: @ 0x08065BF4 - push {lr} - ldr r2, _08065C08 @ =gUnk_0811017C - ldrb r1, [r0, #0xc] - lsls r1, r1, #2 - adds r1, r1, r2 - ldr r1, [r1] - bl _call_via_r1 - pop {pc} - .align 2, 0 -_08065C08: .4byte gUnk_0811017C - - thumb_func_start sub_08065C0C -sub_08065C0C: @ 0x08065C0C - push {r4, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xc] - cmp r0, #1 - beq _08065C42 - cmp r0, #1 - bgt _08065C20 - cmp r0, #0 - beq _08065C2A - b _08065CCA -_08065C20: - cmp r0, #2 - beq _08065C7E - cmp r0, #3 - beq _08065C8A - b _08065CCA -_08065C2A: - 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] - adds r0, r4, #0 - bl sub_0807DD50 - b _08065CCA -_08065C42: - adds r2, r4, #0 - adds r2, #0x39 - movs r1, #0 - ldrsb r1, [r2, r1] - cmp r1, #2 - bne _08065C74 - movs r0, #0 - strb r1, [r4, #0xc] - strb r0, [r2] - ldr r1, _08065C70 @ =gPlayerEntity - adds r0, r4, #0 - bl GetFacingDirection - bl sub_0806F5A4 - adds r1, r0, #0 - adds r0, r4, #0 - bl InitAnimationForceUpdate - adds r0, r4, #0 - bl sub_0806F118 - b _08065CCA - .align 2, 0 -_08065C70: .4byte gPlayerEntity -_08065C74: - adds r0, r4, #0 - movs r1, #0 - bl sub_0807DD94 - b _08065CCA -_08065C7E: - adds r0, r4, #0 - bl UpdateFuseInteraction - cmp r0, #0 - beq _08065CCA - b _08065CC6 -_08065C8A: - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _08065CCA - ldr r1, [r4, #0x6c] - ldrh r2, [r1] - ldr r0, _08065CB4 @ =0x0000FFFF - cmp r2, r0 - beq _08065CBC - ldr r0, _08065CB8 @ =gScreen - adds r0, #0x68 - strh r2, [r0] - adds r1, #2 - ldrh r0, [r1] - strb r0, [r4, #0xe] - adds r1, #2 - str r1, [r4, #0x6c] - b _08065CCA - .align 2, 0 -_08065CB4: .4byte 0x0000FFFF -_08065CB8: .4byte gScreen -_08065CBC: - ldrb r0, [r4, #0x18] - movs r1, #4 - rsbs r1, r1, #0 - ands r1, r0 - strb r1, [r4, #0x18] -_08065CC6: - movs r0, #1 - strb r0, [r4, #0xc] -_08065CCA: - pop {r4, pc} - - thumb_func_start sub_08065CCC -sub_08065CCC: @ 0x08065CCC - movs r1, #3 - strb r1, [r0, #0xc] - movs r1, #0x1e - strb r1, [r0, #0xe] - ldrb r2, [r0, #0x19] - subs r1, #0x2b - ands r1, r2 - movs r2, #4 - orrs r1, r2 - strb r1, [r0, #0x19] - ldr r1, _08065CF8 @ =gUnk_0811022E - str r1, [r0, #0x6c] - ldr r1, _08065CFC @ =gScreen - adds r2, r1, #0 - adds r2, #0x66 - movs r0, #0xfd - lsls r0, r0, #6 - strh r0, [r2] - adds r1, #0x68 - movs r0, #0x10 - strh r0, [r1] - bx lr - .align 2, 0 -_08065CF8: .4byte gUnk_0811022E -_08065CFC: .4byte gScreen - - thumb_func_start sub_08065D00 -sub_08065D00: @ 0x08065D00 - 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 sub_08065D18 -sub_08065D18: @ 0x08065D18 - push {r4, lr} - adds r4, r0, #0 - movs r1, #0 - movs r2, #1 - movs r0, #1 - strb r0, [r4, #0xc] - movs r0, #0x1e - strb r0, [r4, #0xe] - strb r1, [r4, #0xf] - ldrb r1, [r4, #0x18] - subs r0, #0x22 - ands r0, r1 - orrs r0, r2 - strb r0, [r4, #0x18] - ldrb r1, [r4, #0x19] - movs r0, #0xd - rsbs r0, r0, #0 - ands r0, r1 - movs r1, #4 - orrs r0, r1 - strb r0, [r4, #0x19] - ldr r0, _08065D6C @ =gUnk_08110188 - str r0, [r4, #0x6c] - adds r0, r4, #0 - movs r1, #2 - bl sub_0805E3A0 - adds r0, r4, #0 - movs r1, #2 - bl InitAnimationForceUpdate - ldr r1, _08065D70 @ =gScreen - adds r2, r1, #0 - adds r2, #0x66 - movs r0, #0xfd - lsls r0, r0, #6 - strh r0, [r2] - adds r1, #0x68 - movs r0, #0x80 - lsls r0, r0, #5 - strh r0, [r1] - pop {r4, pc} - .align 2, 0 -_08065D6C: .4byte gUnk_08110188 -_08065D70: .4byte gScreen - - thumb_func_start sub_08065D74 -sub_08065D74: @ 0x08065D74 - push {lr} - adds r1, r0, #0 - ldrb r0, [r1, #0xe] - subs r0, #1 - strb r0, [r1, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _08065DB4 - ldr r2, [r1, #0x6c] - ldrh r3, [r2] - ldr r0, _08065DA0 @ =0x0000FFFF - cmp r3, r0 - beq _08065DA8 - ldr r0, _08065DA4 @ =gScreen - adds r0, #0x68 - strh r3, [r0] - ldrh r0, [r2, #2] - strb r0, [r1, #0xe] - adds r0, r2, #4 - str r0, [r1, #0x6c] - b _08065DB4 - .align 2, 0 -_08065DA0: .4byte 0x0000FFFF -_08065DA4: .4byte gScreen -_08065DA8: - ldrb r0, [r1, #0xc] - adds r0, #1 - strb r0, [r1, #0xc] - movs r0, #0 - bl TextboxNoOverlapFollow -_08065DB4: - pop {pc} - .align 2, 0 - - thumb_func_start sub_08065DB8 -sub_08065DB8: @ 0x08065DB8 - push {r4, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xd] - cmp r0, #4 - bhi _08065E74 - lsls r0, r0, #2 - ldr r1, _08065DCC @ =_08065DD0 - adds r0, r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08065DCC: .4byte _08065DD0 -_08065DD0: @ jump table - .4byte _08065DE4 @ case 0 - .4byte _08065E08 @ case 1 - .4byte _08065EB0 @ case 2 - .4byte _08065E34 @ case 3 - .4byte _08065E4E @ case 4 -_08065DE4: - ldr r0, _08065E04 @ =gTextBox - ldrb r1, [r0] - movs r0, #0x7f - ands r0, r1 - cmp r0, #0 - bne _08065EB0 - ldrb r0, [r4, #0xd] - adds r0, #1 - strb r0, [r4, #0xd] - movs r0, #0x3c - strb r0, [r4, #0xe] - adds r0, r4, #0 - movs r1, #4 - bl InitAnimationForceUpdate - b _08065EB0 - .align 2, 0 -_08065E04: .4byte gTextBox -_08065E08: - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _08065EB0 - ldrb r0, [r4, #0xd] - adds r0, #1 - strb r0, [r4, #0xd] - movs r0, #0xb4 - strb r0, [r4, #0xe] - ldr r1, _08065E30 @ =gUnk_02018EB0 - ldrb r0, [r1, #1] - adds r0, #1 - strb r0, [r1, #1] - adds r0, r4, #0 - movs r1, #2 - bl InitAnimationForceUpdate - b _08065EB0 - .align 2, 0 -_08065E30: .4byte gUnk_02018EB0 -_08065E34: - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _08065EB0 - movs r0, #0 - bl TextboxNoOverlapFollow - ldrb r0, [r4, #0xd] - adds r0, #1 - strb r0, [r4, #0xd] - b _08065EB0 -_08065E4E: - ldr r0, _08065E6C @ =gTextBox - ldrb r1, [r0] - movs r0, #0x7f - ands r0, r1 - cmp r0, #0 - bne _08065EB0 - ldrb r0, [r4, #0xd] - adds r0, #1 - strb r0, [r4, #0xd] - movs r0, #0x1e - strb r0, [r4, #0xe] - ldr r0, _08065E70 @ =gUnk_0811022E - str r0, [r4, #0x6c] - b _08065EB0 - .align 2, 0 -_08065E6C: .4byte gTextBox -_08065E70: .4byte gUnk_0811022E -_08065E74: - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _08065EB0 - ldr r1, [r4, #0x6c] - ldrh r2, [r1] - ldr r0, _08065E9C @ =0x0000FFFF - cmp r2, r0 - beq _08065EA4 - ldr r0, _08065EA0 @ =gScreen - adds r0, #0x68 - strh r2, [r0] - ldrh r0, [r1, #2] - strb r0, [r4, #0xe] - adds r0, r1, #4 - str r0, [r4, #0x6c] - b _08065EB0 - .align 2, 0 -_08065E9C: .4byte 0x0000FFFF -_08065EA0: .4byte gScreen -_08065EA4: - ldr r1, _08065EB8 @ =gUnk_02018EB0 - ldrb r0, [r1] - adds r0, #1 - strb r0, [r1] - bl DeleteThisEntity -_08065EB0: - adds r0, r4, #0 - bl UpdateAnimationSingleFrame - pop {r4, pc} - .align 2, 0 -_08065EB8: .4byte gUnk_02018EB0 - - thumb_func_start sub_08065EBC -sub_08065EBC: @ 0x08065EBC - push {r4, lr} - adds r4, r0, #0 - ldr r1, _08065ED8 @ =gUnk_08110274 - ldrb r0, [r4, #0xc] - lsls r0, r0, #2 - adds r0, r0, r1 - ldr r1, [r0] - adds r0, r4, #0 - bl _call_via_r1 - adds r0, r4, #0 - bl sub_0806ED78 - pop {r4, pc} - .align 2, 0 -_08065ED8: .4byte gUnk_08110274 - - thumb_func_start sub_08065EDC -sub_08065EDC: @ 0x08065EDC - push {lr} - adds r2, r0, #0 - ldrb r0, [r2, #0xe] - subs r0, #1 - strb r0, [r2, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _08065F1C - ldr r1, [r2, #0x6c] - ldrh r3, [r1] - ldr r0, _08065F08 @ =0x0000FFFF - cmp r3, r0 - beq _08065F10 - ldr r0, _08065F0C @ =gScreen - adds r0, #0x68 - strh r3, [r0] - adds r1, #2 - ldrh r0, [r1] - strb r0, [r2, #0xe] - adds r1, #2 - str r1, [r2, #0x6c] - b _08065F1C - .align 2, 0 -_08065F08: .4byte 0x0000FFFF -_08065F0C: .4byte gScreen -_08065F10: - ldrb r0, [r2, #0xc] - adds r0, #1 - strb r0, [r2, #0xc] - adds r0, r2, #0 - bl sub_08078778 -_08065F1C: - pop {pc} - .align 2, 0 - - thumb_func_start sub_08065F20 -sub_08065F20: @ 0x08065F20 - push {r4, lr} - adds r4, r0, #0 - bl UpdateAnimationSingleFrame - adds r1, r4, #0 - adds r1, #0x39 - movs r0, #0 - ldrsb r0, [r1, r0] - cmp r0, #0 - beq _08065F5E - movs r0, #0 - strb r0, [r1] - bl TextboxNoOverlapFollow - adds r2, r4, #0 - adds r2, #0x58 - ldrb r0, [r2] - adds r0, #1 - strb r0, [r2] - ldr r1, _08065F60 @ =gUnk_0811033C - ldrb r0, [r2] - lsls r0, r0, #2 - adds r0, r0, r1 - ldr r0, [r0] - cmp r0, #0 - bne _08065F56 - strb r0, [r2] -_08065F56: - ldrb r1, [r2] - adds r0, r4, #0 - bl InitAnimationForceUpdate -_08065F5E: - pop {r4, pc} - .align 2, 0 -_08065F60: .4byte gUnk_0811033C - - thumb_func_start sub_08065F64 -sub_08065F64: @ 0x08065F64 - push {lr} - adds r3, r0, #0 - ldr r0, _08065F88 @ =gSave - ldrb r0, [r0, #8] - subs r0, #2 - cmp r0, #0 - bge _08065F74 - movs r0, #0 -_08065F74: - ldrb r1, [r3, #0xa] - lsls r1, r1, #6 - lsls r0, r0, #3 - ldr r2, _08065F8C @ =gUnk_08110280 - adds r0, r0, r2 - adds r1, r1, r0 - adds r0, r3, #0 - bl ShowNPCDialogue - pop {pc} - .align 2, 0 -_08065F88: .4byte gSave -_08065F8C: .4byte gUnk_08110280 - - thumb_func_start GhostBrothers_Fusion -GhostBrothers_Fusion: @ 0x08065F90 - push {lr} - adds r2, r0, #0 - ldrb r0, [r2, #0xc] - cmp r0, #0 - bne _08065FB6 - 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, #2 - bl InitAnimationForceUpdate - b _08065FBC -_08065FB6: - adds r0, r2, #0 - bl UpdateAnimationSingleFrame -_08065FBC: - pop {pc} - .align 2, 0 diff --git a/asm/gorman.s b/asm/gorman.s deleted file mode 100644 index 9760e2f9..00000000 --- a/asm/gorman.s +++ /dev/null @@ -1,479 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - - thumb_func_start Gorman -Gorman: @ 0x08069784 - push {lr} - adds r2, r0, #0 - ldrb r1, [r2, #0x10] - movs r0, #2 - ands r0, r1 - cmp r0, #0 - beq _0806979A - adds r0, r2, #0 - bl sub_08069838 - b _080697A0 -_0806979A: - adds r0, r2, #0 - bl sub_080697A4 -_080697A0: - pop {pc} - .align 2, 0 - - thumb_func_start sub_080697A4 -sub_080697A4: @ 0x080697A4 - push {r4, lr} - adds r4, r0, #0 - ldr r1, _080697C0 @ =gUnk_08111C48 - ldrb r0, [r4, #0xc] - lsls r0, r0, #2 - adds r0, r0, r1 - ldr r1, [r0] - adds r0, r4, #0 - bl _call_via_r1 - adds r0, r4, #0 - bl sub_0806ED78 - pop {r4, pc} - .align 2, 0 -_080697C0: .4byte gUnk_08111C48 - - thumb_func_start sub_080697C4 -sub_080697C4: @ 0x080697C4 - push {r4, lr} - adds r4, r0, #0 - ldr r1, _080697E8 @ =gUnk_08111C3C - bl LoadExtraSpriteData - cmp r0, #0 - beq _080697E4 - movs r0, #1 - strb r0, [r4, #0xc] - adds r0, r4, #0 - movs r1, #2 - bl InitializeAnimation - adds r0, r4, #0 - bl sub_08078778 -_080697E4: - pop {r4, pc} - .align 2, 0 -_080697E8: .4byte gUnk_08111C3C - - thumb_func_start sub_080697EC -sub_080697EC: @ 0x080697EC - push {r4, lr} - adds r4, r0, #0 - movs r1, #0x20 - movs r2, #0x20 - bl sub_0806ED9C - adds r1, r0, #0 - cmp r1, #0 - blt _0806981E - ldrb r0, [r4, #0xf] - cmp r0, #0 - bne _0806981A - movs r0, #0x10 - strb r0, [r4, #0xf] - adds r0, r4, #0 - adds r0, #0x58 - ldrb r0, [r0] - cmp r0, r1 - beq _0806981E - adds r0, r4, #0 - bl InitializeAnimation - b _0806981E -_0806981A: - subs r0, #1 - strb r0, [r4, #0xf] -_0806981E: - adds r1, r4, #0 - adds r1, #0x39 - movs r0, #0 - ldrsb r0, [r1, r0] - cmp r0, #0 - beq _08069834 - movs r0, #0 - strb r0, [r1] - adds r0, r4, #0 - bl sub_08069888 -_08069834: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_08069838 -sub_08069838: @ 0x08069838 - push {r4, r5, lr} - adds r4, r0, #0 - ldrb r5, [r4, #0xc] - cmp r5, #0 - bne _08069862 - ldr r1, _08069884 @ =gUnk_08111C3C - bl LoadExtraSpriteData - cmp r0, #0 - beq _08069880 - ldrb r0, [r4, #0xc] - adds r0, #1 - strb r0, [r4, #0xc] - adds r0, r4, #0 - adds r0, #0x68 - strb r5, [r0] - adds r0, #1 - strb r5, [r0] - adds r0, r4, #0 - bl sub_0807DD64 -_08069862: - adds r0, r4, #0 - movs r1, #0 - bl sub_0807DD94 - adds r1, r4, #0 - adds r1, #0x39 - movs r0, #0 - ldrsb r0, [r1, r0] - cmp r0, #0 - beq _08069880 - movs r0, #0 - strb r0, [r1] - adds r0, r4, #0 - bl sub_08069888 -_08069880: - pop {r4, r5, pc} - .align 2, 0 -_08069884: .4byte gUnk_08111C3C - - thumb_func_start sub_08069888 -sub_08069888: @ 0x08069888 - push {r4, r5, lr} - adds r5, r0, #0 - movs r0, #0x47 - bl CheckGlobalFlag - cmp r0, #0 - bne _080698A0 - movs r4, #0 - movs r0, #0x47 - bl SetGlobalFlag - b _08069906 -_080698A0: - movs r0, #0x2b - bl CheckGlobalFlag - cmp r0, #0 - bne _080698C2 - movs r0, #0x2c - bl CheckGlobalFlag - cmp r0, #0 - bne _080698C2 - movs r0, #0x2d - bl CheckGlobalFlag - cmp r0, #0 - bne _080698C2 - movs r4, #1 - b _08069906 -_080698C2: - movs r0, #0x18 - bl CheckGlobalFlag - cmp r0, #0 - bne _080698D0 - movs r4, #2 - b _08069906 -_080698D0: - movs r0, #0x48 - bl CheckGlobalFlag - cmp r0, #0 - bne _080698E4 - movs r4, #3 - movs r0, #0x48 - bl SetGlobalFlag - b _08069906 -_080698E4: - movs r0, #0x2e - bl CheckGlobalFlag - cmp r0, #0 - bne _08069904 - movs r0, #0x2f - bl CheckGlobalFlag - cmp r0, #0 - bne _08069904 - movs r0, #0x30 - bl CheckGlobalFlag - movs r4, #4 - cmp r0, #0 - beq _08069906 -_08069904: - movs r4, #5 -_08069906: - ldr r0, _08069918 @ =gUnk_08111C50 - lsls r1, r4, #1 - adds r1, r1, r0 - ldrh r0, [r1] - adds r1, r5, #0 - bl TextboxNoOverlap - pop {r4, r5, pc} - .align 2, 0 -_08069918: .4byte gUnk_08111C50 - - thumb_func_start sub_0806991C -sub_0806991C: @ 0x0806991C - push {r4, r5, r6, lr} - adds r5, r0, #0 - adds r4, r1, #0 - bl Random - movs r1, #0x1f - ands r0, r1 - adds r0, #0x3c - adds r1, r5, #0 - adds r1, #0x68 - movs r3, #0 - strb r0, [r1] - adds r0, r5, #0 - adds r0, #0x69 - movs r1, #0 - ldrsb r1, [r0, r1] - lsls r1, r1, #2 - ldr r0, _0806999C @ =gUnk_08111C5C - adds r1, r1, r0 - ldr r2, _080699A0 @ =gRoomControls - ldrh r0, [r1] - ldrh r6, [r2, #6] - adds r0, r0, r6 - strh r0, [r4, #0x1e] - ldrh r0, [r1, #2] - ldrh r2, [r2, #8] - adds r0, r0, r2 - strh r0, [r4, #0x22] - movs r0, #8 - strb r0, [r4, #0x19] - ldr r0, [r4, #8] - movs r1, #2 - orrs r0, r1 - str r0, [r4, #8] - str r3, [r4, #0x14] - movs r1, #0x1e - ldrsh r0, [r4, r1] - movs r2, #0x2e - ldrsh r1, [r5, r2] - subs r0, r0, r1 - movs r3, #0x22 - ldrsh r1, [r4, r3] - movs r6, #0x32 - ldrsh r2, [r5, r6] - subs r1, r1, r2 - bl sub_080045DA - strb r0, [r5, #0x15] - ldrb r2, [r5, #0x14] - movs r1, #0x80 - ands r1, r2 - ldr r2, _080699A4 @ =gUnk_08111C74 - lsls r0, r0, #0x18 - lsrs r0, r0, #0x1c - adds r0, r0, r2 - ldrb r0, [r0] - orrs r1, r0 - strb r1, [r5, #0x14] - ldr r2, _080699A8 @ =gActiveScriptInfo - ldrb r1, [r2, #7] - movs r0, #1 - orrs r0, r1 - strb r0, [r2, #7] - pop {r4, r5, r6, pc} - .align 2, 0 -_0806999C: .4byte gUnk_08111C5C -_080699A0: .4byte gRoomControls -_080699A4: .4byte gUnk_08111C74 -_080699A8: .4byte gActiveScriptInfo - - thumb_func_start sub_080699AC -sub_080699AC: @ 0x080699AC - push {r4, r5, r6, lr} - adds r5, r0, #0 - adds r4, r1, #0 - bl Random - movs r1, #0x1f - ands r0, r1 - adds r0, #0x3c - adds r1, r5, #0 - adds r1, #0x68 - movs r3, #0 - strb r0, [r1] - adds r0, r5, #0 - adds r0, #0x69 - movs r1, #0 - ldrsb r1, [r0, r1] - lsls r1, r1, #2 - ldr r0, _08069A2C @ =gUnk_08111C84 - adds r1, r1, r0 - ldr r2, _08069A30 @ =gRoomControls - ldrh r0, [r1] - ldrh r6, [r2, #6] - adds r0, r0, r6 - strh r0, [r4, #0x1e] - ldrh r0, [r1, #2] - ldrh r2, [r2, #8] - adds r0, r0, r2 - strh r0, [r4, #0x22] - movs r0, #8 - strb r0, [r4, #0x19] - ldr r0, [r4, #8] - movs r1, #2 - orrs r0, r1 - str r0, [r4, #8] - str r3, [r4, #0x14] - movs r1, #0x1e - ldrsh r0, [r4, r1] - movs r2, #0x2e - ldrsh r1, [r5, r2] - subs r0, r0, r1 - movs r3, #0x22 - ldrsh r1, [r4, r3] - movs r6, #0x32 - ldrsh r2, [r5, r6] - subs r1, r1, r2 - bl sub_080045DA - strb r0, [r5, #0x15] - ldrb r2, [r5, #0x14] - movs r1, #0x80 - ands r1, r2 - ldr r2, _08069A34 @ =gUnk_08111C8C - lsls r0, r0, #0x18 - lsrs r0, r0, #0x1c - adds r0, r0, r2 - ldrb r0, [r0] - orrs r1, r0 - strb r1, [r5, #0x14] - ldr r2, _08069A38 @ =gActiveScriptInfo - ldrb r1, [r2, #7] - movs r0, #1 - orrs r0, r1 - strb r0, [r2, #7] - pop {r4, r5, r6, pc} - .align 2, 0 -_08069A2C: .4byte gUnk_08111C84 -_08069A30: .4byte gRoomControls -_08069A34: .4byte gUnk_08111C8C -_08069A38: .4byte gActiveScriptInfo - - thumb_func_start sub_08069A3C -sub_08069A3C: @ 0x08069A3C - push {r4, lr} - adds r4, r0, #0 - bl Random - ldr r2, _08069A5C @ =gUnk_08111C9C - movs r1, #1 - ands r1, r0 - adds r4, #0x69 - movs r0, #0 - ldrsb r0, [r4, r0] - lsls r0, r0, #1 - adds r1, r1, r0 - adds r1, r1, r2 - ldrb r0, [r1] - strb r0, [r4] - pop {r4, pc} - .align 2, 0 -_08069A5C: .4byte gUnk_08111C9C - - thumb_func_start sub_08069A60 -sub_08069A60: @ 0x08069A60 - push {r4, lr} - adds r4, r0, #0 - bl Random - ldr r2, _08069A80 @ =gUnk_08111CA8 - movs r1, #1 - ands r1, r0 - adds r4, #0x69 - movs r0, #0 - ldrsb r0, [r4, r0] - lsls r0, r0, #1 - adds r1, r1, r0 - adds r1, r1, r2 - ldrb r0, [r1] - strb r0, [r4] - pop {r4, pc} - .align 2, 0 -_08069A80: .4byte gUnk_08111CA8 - - thumb_func_start sub_08069A84 -sub_08069A84: @ 0x08069A84 - push {r4, lr} - adds r4, r0, #0 - bl Random - ldr r2, _08069AA4 @ =gUnk_08111CB4 - movs r1, #1 - ands r1, r0 - adds r4, #0x69 - movs r0, #0 - ldrsb r0, [r4, r0] - lsls r0, r0, #1 - adds r1, r1, r0 - adds r1, r1, r2 - ldrb r0, [r1] - strb r0, [r4] - pop {r4, pc} - .align 2, 0 -_08069AA4: .4byte gUnk_08111CB4 - - thumb_func_start sub_08069AA8 -sub_08069AA8: @ 0x08069AA8 - push {r4, lr} - adds r4, r0, #0 - bl Random - ldr r2, _08069AC8 @ =gUnk_08111CB8 - movs r1, #1 - ands r1, r0 - adds r4, #0x69 - movs r0, #0 - ldrsb r0, [r4, r0] - lsls r0, r0, #1 - adds r1, r1, r0 - adds r1, r1, r2 - ldrb r0, [r1] - strb r0, [r4] - pop {r4, pc} - .align 2, 0 -_08069AC8: .4byte gUnk_08111CB8 - - thumb_func_start sub_08069ACC -sub_08069ACC: @ 0x08069ACC - push {lr} - adds r2, r1, #0 - adds r0, #0x68 - ldrb r1, [r0] - subs r1, #1 - strb r1, [r0] - lsls r1, r1, #0x18 - cmp r1, #0 - bgt _08069AE2 - movs r0, #1 - b _08069AE4 -_08069AE2: - movs r0, #0 -_08069AE4: - str r0, [r2, #0x14] - pop {pc} - - thumb_func_start Gorman_Head -Gorman_Head: @ 0x08069AE8 - push {r4, lr} - adds r4, r0, #0 - adds r0, #0x5a - ldrb r0, [r0] - movs r2, #7 - ands r2, r0 - adds r2, #0xf - adds r0, r4, #0 - movs r1, #0 - bl SetExtraSpriteFrame - ldrb r2, [r4, #0x1e] - adds r0, r4, #0 - movs r1, #1 - bl SetExtraSpriteFrame - adds r0, r4, #0 - movs r1, #1 - movs r2, #0 - bl SetSpriteSubEntryOffsetData1 - adds r0, r4, #0 - bl sub_0807000C - pop {r4, pc} - .align 2, 0 diff --git a/asm/gregal.s b/asm/gregal.s deleted file mode 100644 index 65a0271b..00000000 --- a/asm/gregal.s +++ /dev/null @@ -1,386 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - - thumb_func_start Gregal -Gregal: @ 0x0806CADC - push {lr} - ldr r2, _0806CAF0 @ =gUnk_08113D8C - ldrb r1, [r0, #0xa] - lsls r1, r1, #2 - adds r1, r1, r2 - ldr r1, [r1] - bl _call_via_r1 - pop {pc} - .align 2, 0 -_0806CAF0: .4byte gUnk_08113D8C - - thumb_func_start sub_0806CAF4 -sub_0806CAF4: @ 0x0806CAF4 - push {r4, r5, lr} - adds r5, r0, #0 - ldrb r0, [r5, #0xc] - cmp r0, #0 - bne _0806CB66 - adds r0, #1 - strb r0, [r5, #0xc] - adds r0, r5, #0 - movs r1, #2 - bl sub_0805E3A0 - movs r0, #0x4a - movs r1, #1 - movs r2, #0 - bl CreateNPC - adds r4, r0, #0 - cmp r4, #0 - beq _0806CB2C - str r5, [r4, #0x50] - adds r0, r5, #0 - adds r1, r4, #0 - bl CopyPosition - adds r0, r5, #0 - adds r1, r4, #0 - bl sub_0806FAD8 -_0806CB2C: - movs r0, #0x4a - movs r1, #2 - movs r2, #0 - bl CreateNPC - adds r4, r0, #0 - cmp r4, #0 - beq _0806CB4E - str r5, [r4, #0x50] - adds r0, r5, #0 - adds r1, r4, #0 - bl CopyPosition - adds r0, r5, #0 - adds r1, r4, #0 - bl ResolveEntityOnTop -_0806CB4E: - adds r0, r5, #0 - bl sub_0807DD64 - adds r0, r5, #0 - bl sub_08078778 - ldr r3, _0806CB7C @ =gUnk_08113D84 - ldrb r2, [r3, #4] - adds r0, r5, #0 - movs r1, #1 - bl sub_08078850 -_0806CB66: - adds r0, r5, #0 - movs r1, #0 - bl ExecuteScriptForEntity - adds r0, r5, #0 - bl HandleEntity0x82Actions - adds r0, r5, #0 - bl GetNextFrame - pop {r4, r5, pc} - .align 2, 0 -_0806CB7C: .4byte gUnk_08113D84 - - thumb_func_start sub_0806CB80 -sub_0806CB80: @ 0x0806CB80 - push {r4, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xc] - adds r1, r0, #0 - cmp r1, #0 - bne _0806CB9E - adds r0, #1 - strb r0, [r4, #0xc] - movs r0, #2 - strb r0, [r4, #0x14] - strb r1, [r4, #0x1e] - adds r0, r4, #0 - movs r1, #2 - bl sub_0805E3A0 -_0806CB9E: - ldr r0, [r4, #0x50] - cmp r0, #0 - beq _0806CBB0 - adds r0, #0x5a - ldrb r1, [r0] - movs r0, #3 - ands r0, r1 - adds r0, #0x21 - strb r0, [r4, #0x1e] -_0806CBB0: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_0806CBB4 -sub_0806CBB4: @ 0x0806CBB4 - push {r4, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xc] - cmp r0, #0 - bne _0806CBD6 - adds r0, #1 - strb r0, [r4, #0xc] - movs r0, #2 - strb r0, [r4, #0x14] - adds r0, r4, #0 - movs r1, #2 - bl sub_0805E3A0 - adds r0, r4, #0 - movs r1, #0x11 - bl InitializeAnimation -_0806CBD6: - adds r0, r4, #0 - bl GetNextFrame - ldr r1, [r4, #0x50] - cmp r1, #0 - beq _0806CC06 - ldrb r0, [r4, #0x18] - movs r3, #4 - rsbs r3, r3, #0 - adds r2, r3, #0 - ands r2, r0 - strb r2, [r4, #0x18] - adds r0, r1, #0 - adds r0, #0x5a - ldrb r1, [r0] - movs r0, #4 - ands r0, r1 - cmp r0, #0 - beq _0806CC06 - adds r0, r2, #0 - ands r0, r3 - movs r1, #1 - orrs r0, r1 - strb r0, [r4, #0x18] -_0806CC06: - pop {r4, pc} - - thumb_func_start sub_0806CC08 -sub_0806CC08: @ 0x0806CC08 - push {r4, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xc] - cmp r0, #1 - beq _0806CC40 - cmp r0, #1 - bgt _0806CC1C - cmp r0, #0 - beq _0806CC22 - b _0806CCB0 -_0806CC1C: - cmp r0, #2 - beq _0806CC96 - b _0806CCB0 -_0806CC22: - 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] - adds r0, r4, #0 - movs r1, #2 - bl sub_0805E3A0 - adds r0, r4, #0 - bl sub_0807DD64 -_0806CC40: - adds r2, r4, #0 - adds r2, #0x39 - movs r1, #0 - ldrsb r1, [r2, r1] - cmp r1, #2 - bne _0806CC80 - movs r0, #0 - strb r1, [r4, #0xc] - strb r0, [r2] - adds r0, r4, #0 - adds r0, #0x58 - ldrb r0, [r0] - adds r1, r4, #0 - adds r1, #0x69 - strb r0, [r1] - ldr r1, _0806CC7C @ =gPlayerEntity - adds r0, r4, #0 - bl GetFacingDirection - bl sub_0806F5A4 - adds r1, r0, #0 - adds r1, #8 - adds r0, r4, #0 - bl InitAnimationForceUpdate - adds r0, r4, #0 - bl sub_0806F118 - b _0806CCB0 - .align 2, 0 -_0806CC7C: .4byte gPlayerEntity -_0806CC80: - adds r0, r4, #0 - movs r1, #0 - bl ExecuteScriptForEntity - adds r0, r4, #0 - bl HandleEntity0x82Actions - adds r0, r4, #0 - bl GetNextFrame - b _0806CCB0 -_0806CC96: - adds r0, r4, #0 - bl UpdateFuseInteraction - cmp r0, #0 - beq _0806CCB0 - movs r0, #1 - strb r0, [r4, #0xc] - adds r0, r4, #0 - adds r0, #0x69 - ldrb r1, [r0] - adds r0, r4, #0 - bl InitAnimationForceUpdate -_0806CCB0: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_0806CCB4 -sub_0806CCB4: @ 0x0806CCB4 - push {lr} - adds r2, r1, #0 - adds r0, #0x5a - ldrb r1, [r0] - movs r0, #0x80 - ands r0, r1 - lsls r0, r0, #0x18 - lsrs r0, r0, #0x18 - cmp r0, #0 - beq _0806CCCA - movs r0, #1 -_0806CCCA: - str r0, [r2, #0x14] - pop {pc} - .align 2, 0 - - thumb_func_start sub_0806CCD0 -sub_0806CCD0: @ 0x0806CCD0 - push {r4, lr} - adds r3, r0, #0 - adds r4, r1, #0 - adds r0, #0x5b - ldrb r0, [r0] - movs r2, #0x3f - ands r2, r0 - cmp r2, #0 - beq _0806CCF4 - ldrb r1, [r3, #0x14] - lsrs r1, r1, #1 - adds r1, r2, r1 - adds r0, r3, #0 - bl InitializeAnimation - movs r0, #1 - str r0, [r4, #0x14] - b _0806CCF6 -_0806CCF4: - str r2, [r4, #0x14] -_0806CCF6: - pop {r4, pc} - - thumb_func_start sub_0806CCF8 -sub_0806CCF8: @ 0x0806CCF8 - push {lr} - movs r1, #0x85 - lsls r1, r1, #1 - bl sub_0801D2B4 - pop {pc} - - thumb_func_start sub_0806CD04 -sub_0806CD04: @ 0x0806CD04 - push {lr} - ldr r1, _0806CD10 @ =0x0000010B - bl sub_0801D2B4 - pop {pc} - .align 2, 0 -_0806CD10: .4byte 0x0000010B - - thumb_func_start sub_0806CD14 -sub_0806CD14: @ 0x0806CD14 - push {lr} - movs r1, #0x86 - lsls r1, r1, #1 - bl sub_0801D2B4 - pop {pc} - - thumb_func_start sub_0806CD20 -sub_0806CD20: @ 0x0806CD20 - push {lr} - ldr r1, _0806CD2C @ =0x0000010D - bl sub_0801D2B4 - pop {pc} - .align 2, 0 -_0806CD2C: .4byte 0x0000010D - - thumb_func_start sub_0806CD30 -sub_0806CD30: @ 0x0806CD30 - push {lr} - movs r1, #0x87 - lsls r1, r1, #1 - bl sub_0801D2B4 - pop {pc} - - thumb_func_start sub_0806CD3C -sub_0806CD3C: @ 0x0806CD3C - push {lr} - ldr r1, _0806CD48 @ =0x0000010F - bl sub_0801D2B4 - pop {pc} - .align 2, 0 -_0806CD48: .4byte 0x0000010F - - thumb_func_start sub_0806CD4C -sub_0806CD4C: @ 0x0806CD4C - push {lr} - movs r1, #0x88 - lsls r1, r1, #1 - bl sub_0801D2B4 - pop {pc} - - thumb_func_start sub_0806CD58 -sub_0806CD58: @ 0x0806CD58 - 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 Gregal_Fusion -Gregal_Fusion: @ 0x0806CD70 - push {r4, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xc] - cmp r0, #0 - bne _0806CD9E - 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 sub_0805E3A0 - adds r0, r4, #0 - movs r1, #6 - bl InitAnimationForceUpdate - b _0806CDA4 -_0806CD9E: - adds r0, r4, #0 - bl UpdateAnimationSingleFrame -_0806CDA4: - pop {r4, pc} - .align 2, 0 diff --git a/asm/guardWithSpear.s b/asm/guardWithSpear.s deleted file mode 100644 index 4d328260..00000000 --- a/asm/guardWithSpear.s +++ /dev/null @@ -1,624 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_0806407C -sub_0806407C: @ 0x0806407C - push {r4, r5, r6, lr} - adds r4, r0, #0 - adds r5, r1, #0 - ldrb r0, [r5, #0x18] - cmp r0, #0 - bne _080640E8 - adds r0, #1 - strb r0, [r5, #0x18] - bl Random - movs r1, #0x3f - ands r0, r1 - adds r0, #0x20 - strh r0, [r5, #0x12] - bl Random - adds r1, r0, #0 - movs r0, #0x18 - ands r1, r0 - ldrb r0, [r4, #0x15] - cmp r0, #8 - beq _080640C4 - cmp r0, #8 - bgt _080640B2 - cmp r0, #0 - beq _080640BC - b _080640DA -_080640B2: - cmp r0, #0x10 - beq _080640CC - cmp r0, #0x18 - beq _080640D4 - b _080640DA -_080640BC: - cmp r1, #0x10 - bne _080640DA - movs r1, #8 - b _080640DA -_080640C4: - cmp r1, #0x18 - bne _080640DA - movs r1, #0x10 - b _080640DA -_080640CC: - cmp r1, #0 - bne _080640DA - movs r1, #0x18 - b _080640DA -_080640D4: - cmp r1, #8 - bne _080640DA - movs r1, #0 -_080640DA: - strb r1, [r4, #0x15] - adds r0, r1, #0 - bl sub_0806F5B0 - strb r0, [r4, #0x14] - movs r0, #0x80 - strh r0, [r4, #0x24] -_080640E8: - ldrb r0, [r4, #0x14] - lsrs r2, r0, #1 - adds r1, r2, #4 - adds r0, r4, #0 - adds r0, #0x58 - ldrb r0, [r0] - cmp r1, r0 - beq _0806410A - adds r0, r4, #0 - adds r0, #0x70 - movs r1, #0 - ldrsb r1, [r0, r1] - adds r1, #4 - adds r1, r2, r1 - adds r0, r4, #0 - bl InitializeAnimation -_0806410A: - adds r0, r4, #0 - bl ProcessMovement - movs r0, #0x2e - ldrsh r1, [r4, r0] - adds r2, r4, #0 - adds r2, #0x68 - movs r3, #0 - ldrsh r0, [r2, r3] - subs r1, r1, r0 - cmp r1, #0x10 - ble _0806412C - ldrh r0, [r2] - adds r0, #0x10 - strh r0, [r4, #0x2e] - movs r0, #1 - strh r0, [r5, #0x12] -_0806412C: - movs r3, #0x10 - rsbs r3, r3, #0 - cmp r1, r3 - bge _0806413E - ldrh r0, [r2] - subs r0, #0x10 - strh r0, [r4, #0x2e] - movs r0, #1 - strh r0, [r5, #0x12] -_0806413E: - movs r6, #0x32 - ldrsh r1, [r4, r6] - adds r2, r4, #0 - adds r2, #0x6a - movs r6, #0 - ldrsh r0, [r2, r6] - subs r1, r1, r0 - cmp r1, #0x10 - ble _0806415A - ldrh r0, [r2] - adds r0, #0x10 - strh r0, [r4, #0x32] - movs r0, #1 - strh r0, [r5, #0x12] -_0806415A: - cmp r1, r3 - bge _08064168 - ldrh r0, [r2] - subs r0, #0x10 - strh r0, [r4, #0x32] - movs r0, #1 - strh r0, [r5, #0x12] -_08064168: - ldrh r0, [r5, #0x12] - subs r0, #1 - strh r0, [r5, #0x12] - lsls r0, r0, #0x10 - cmp r0, #0 - beq _0806417A - ldr r1, _0806417C @ =gActiveScriptInfo - movs r0, #0 - strb r0, [r1, #6] -_0806417A: - pop {r4, r5, r6, pc} - .align 2, 0 -_0806417C: .4byte gActiveScriptInfo - - thumb_func_start sub_08064180 -sub_08064180: @ 0x08064180 - push {lr} - movs r0, #7 - movs r1, #0x15 - movs r2, #7 - bl FindEntityByID - cmp r0, #0 - beq _08064194 - bl DeleteEntity -_08064194: - pop {pc} - .align 2, 0 - - thumb_func_start sub_08064198 -sub_08064198: @ 0x08064198 - push {r4, r5, r6, lr} - adds r5, r0, #0 - adds r4, r5, #0 - adds r4, #0x71 - ldrb r1, [r4] - movs r0, #0 - ldrsb r0, [r4, r0] - cmp r0, #0 - ble _080641AE - subs r0, r1, #1 - strb r0, [r4] -_080641AE: - ldr r0, _080641D8 @ =gPlayerEntity - movs r2, #0x32 - ldrsh r1, [r0, r2] - movs r2, #0x32 - ldrsh r0, [r5, r2] - subs r1, r1, r0 - cmp r1, #2 - ble _080641C0 - movs r1, #2 -_080641C0: - movs r0, #2 - rsbs r0, r0, #0 - cmp r1, r0 - bge _080641CA - adds r1, r0, #0 -_080641CA: - adds r6, r4, #0 - cmp r1, #0 - beq _08064256 - cmp r1, #0 - ble _080641DC - movs r0, #0x10 - b _080641DE - .align 2, 0 -_080641D8: .4byte gPlayerEntity -_080641DC: - movs r0, #0 -_080641DE: - strb r0, [r5, #0x15] - cmp r1, #0 - bge _080641E6 - rsbs r1, r1, #0 -_080641E6: - lsls r0, r1, #8 - strh r0, [r5, #0x24] - movs r0, #0x32 - ldrsh r4, [r5, r0] - adds r0, r5, #0 - bl ProcessMovement - movs r1, #0x32 - ldrsh r0, [r5, r1] - adds r6, r5, #0 - adds r6, #0x71 - cmp r4, r0 - beq _08064256 - ldr r0, _080642B0 @ =gPlayerEntity - movs r2, #0x24 - ldrsh r1, [r0, r2] - movs r0, #0xa0 - lsls r0, r0, #1 - cmp r1, r0 - ble _08064222 - ldr r0, _080642B4 @ =gScreenTransition - ldr r0, [r0] - movs r1, #6 - bl __modsi3 - cmp r0, #0 - bne _08064222 - adds r0, r5, #0 - bl CreateDustSmall -_08064222: - adds r4, r5, #0 - adds r4, #0x71 - movs r0, #0xa - strb r0, [r4] - ldrb r0, [r5, #0x15] - bl sub_0806F5B0 - strb r0, [r5, #0x14] - lsls r0, r0, #0x18 - lsrs r0, r0, #0x19 - adds r1, r5, #0 - adds r1, #0x70 - ldrb r1, [r1] - lsls r1, r1, #0x18 - asrs r1, r1, #0x18 - adds r1, #4 - adds r1, r0, r1 - adds r0, r5, #0 - adds r0, #0x58 - adds r6, r4, #0 - ldrb r0, [r0] - cmp r1, r0 - beq _08064256 - adds r0, r5, #0 - bl InitializeAnimation -_08064256: - movs r0, #0 - ldrsb r0, [r6, r0] - cmp r0, #0 - bne _0806428C - ldr r1, _080642B0 @ =gPlayerEntity - adds r0, r5, #0 - bl GetFacingDirection - bl sub_0806F5B0 - strb r0, [r5, #0x14] - lsls r0, r0, #0x18 - lsrs r0, r0, #0x19 - adds r1, r5, #0 - adds r1, #0x70 - ldrb r1, [r1] - lsls r1, r1, #0x18 - asrs r1, r1, #0x18 - adds r1, r0, r1 - adds r0, r5, #0 - adds r0, #0x58 - ldrb r0, [r0] - cmp r1, r0 - beq _0806428C - adds r0, r5, #0 - bl InitializeAnimation -_0806428C: - adds r0, r5, #0 - bl sub_0806ED78 - movs r0, #0x36 - ldrsh r4, [r5, r0] - ldr r0, _080642B0 @ =gPlayerEntity - ldrh r0, [r0, #0x36] - strh r0, [r5, #0x36] - cmp r4, #0 - bge _080642AC - lsls r0, r0, #0x10 - cmp r0, #0 - bne _080642AC - adds r0, r5, #0 - bl CreateDustSmall -_080642AC: - pop {r4, r5, r6, pc} - .align 2, 0 -_080642B0: .4byte gPlayerEntity -_080642B4: .4byte gScreenTransition - - thumb_func_start sub_080642B8 -sub_080642B8: @ 0x080642B8 - push {r4, r5, r6, lr} - adds r5, r0, #0 - adds r4, r5, #0 - adds r4, #0x71 - ldrb r1, [r4] - movs r0, #0 - ldrsb r0, [r4, r0] - cmp r0, #0 - ble _080642CE - subs r0, r1, #1 - strb r0, [r4] -_080642CE: - ldr r0, _080642F8 @ =gPlayerEntity - movs r2, #0x2e - ldrsh r1, [r0, r2] - movs r2, #0x2e - ldrsh r0, [r5, r2] - subs r1, r1, r0 - cmp r1, #2 - ble _080642E0 - movs r1, #2 -_080642E0: - movs r0, #2 - rsbs r0, r0, #0 - cmp r1, r0 - bge _080642EA - adds r1, r0, #0 -_080642EA: - adds r6, r4, #0 - cmp r1, #0 - beq _08064376 - cmp r1, #0 - ble _080642FC - movs r0, #8 - b _080642FE - .align 2, 0 -_080642F8: .4byte gPlayerEntity -_080642FC: - movs r0, #0x18 -_080642FE: - strb r0, [r5, #0x15] - cmp r1, #0 - bge _08064306 - rsbs r1, r1, #0 -_08064306: - lsls r0, r1, #8 - strh r0, [r5, #0x24] - movs r0, #0x2e - ldrsh r4, [r5, r0] - adds r0, r5, #0 - bl ProcessMovement - movs r1, #0x2e - ldrsh r0, [r5, r1] - adds r6, r5, #0 - adds r6, #0x71 - cmp r4, r0 - beq _08064376 - ldr r0, _080643D0 @ =gPlayerEntity - movs r2, #0x24 - ldrsh r1, [r0, r2] - movs r0, #0xa0 - lsls r0, r0, #1 - cmp r1, r0 - ble _08064342 - ldr r0, _080643D4 @ =gScreenTransition - ldr r0, [r0] - movs r1, #6 - bl __modsi3 - cmp r0, #0 - bne _08064342 - adds r0, r5, #0 - bl CreateDustSmall -_08064342: - adds r4, r5, #0 - adds r4, #0x71 - movs r0, #0xa - strb r0, [r4] - ldrb r0, [r5, #0x15] - bl sub_0806F5B0 - strb r0, [r5, #0x14] - lsls r0, r0, #0x18 - lsrs r0, r0, #0x19 - adds r1, r5, #0 - adds r1, #0x70 - ldrb r1, [r1] - lsls r1, r1, #0x18 - asrs r1, r1, #0x18 - adds r1, #4 - adds r1, r0, r1 - adds r0, r5, #0 - adds r0, #0x58 - adds r6, r4, #0 - ldrb r0, [r0] - cmp r1, r0 - beq _08064376 - adds r0, r5, #0 - bl InitializeAnimation -_08064376: - movs r0, #0 - ldrsb r0, [r6, r0] - cmp r0, #0 - bne _080643AC - ldr r1, _080643D0 @ =gPlayerEntity - adds r0, r5, #0 - bl GetFacingDirection - bl sub_0806F5B0 - strb r0, [r5, #0x14] - lsls r0, r0, #0x18 - lsrs r0, r0, #0x19 - adds r1, r5, #0 - adds r1, #0x70 - ldrb r1, [r1] - lsls r1, r1, #0x18 - asrs r1, r1, #0x18 - adds r1, r0, r1 - adds r0, r5, #0 - adds r0, #0x58 - ldrb r0, [r0] - cmp r1, r0 - beq _080643AC - adds r0, r5, #0 - bl InitializeAnimation -_080643AC: - adds r0, r5, #0 - bl sub_0806ED78 - movs r0, #0x36 - ldrsh r4, [r5, r0] - ldr r0, _080643D0 @ =gPlayerEntity - ldrh r0, [r0, #0x36] - strh r0, [r5, #0x36] - cmp r4, #0 - bge _080643CC - lsls r0, r0, #0x10 - cmp r0, #0 - bne _080643CC - adds r0, r5, #0 - bl CreateDustSmall -_080643CC: - pop {r4, r5, r6, pc} - .align 2, 0 -_080643D0: .4byte gPlayerEntity -_080643D4: .4byte gScreenTransition - - thumb_func_start sub_080643D8 -sub_080643D8: @ 0x080643D8 - push {r4, lr} - adds r4, r0, #0 - movs r0, #2 - bl CheckGlobalFlag - cmp r0, #0 - bne _080643EA - movs r3, #0 - b _08064406 -_080643EA: - movs r0, #2 - bl GetInventoryValue - cmp r0, #0 - bne _080643F8 - movs r3, #1 - b _08064406 -_080643F8: - movs r0, #3 - bl GetInventoryValue - movs r3, #3 - cmp r0, #0 - bne _08064406 - movs r3, #2 -_08064406: - ldrb r1, [r4, #0xb] - rsbs r0, r1, #0 - orrs r0, r1 - lsrs r0, r0, #0x1f - ldr r2, _08064424 @ =gUnk_0810F6D4 - lsls r1, r3, #1 - lsls r0, r0, #3 - adds r1, r1, r0 - adds r1, r1, r2 - ldrh r0, [r1] - adds r1, r4, #0 - bl TextboxNoOverlap - pop {r4, pc} - .align 2, 0 -_08064424: .4byte gUnk_0810F6D4 - - thumb_func_start sub_08064428 -sub_08064428: @ 0x08064428 - push {lr} - adds r3, r0, #0 - ldr r0, _0806444C @ =gSave - ldrb r0, [r0, #8] - subs r1, r0, #2 - cmp r1, #0 - bge _08064438 - movs r1, #0 -_08064438: - ldrb r2, [r3, #0xb] - movs r0, #0x80 - ands r0, r2 - cmp r0, #0 - bne _08064454 - ldrb r0, [r3, #0xb] - lsls r0, r0, #3 - ldr r1, _08064450 @ =gUnk_0810CF4C - b _08064460 - .align 2, 0 -_0806444C: .4byte gSave -_08064450: .4byte gUnk_0810CF4C -_08064454: - movs r0, #0x7f - ands r0, r2 - lsls r0, r0, #6 - lsls r1, r1, #3 - ldr r2, _0806446C @ =gUnk_0810D0A4 - adds r1, r1, r2 -_08064460: - adds r1, r0, r1 - adds r0, r3, #0 - bl ShowNPCDialogue - pop {pc} - .align 2, 0 -_0806446C: .4byte gUnk_0810D0A4 - - thumb_func_start sub_08064470 -sub_08064470: @ 0x08064470 - push {lr} - ldr r0, _08064484 @ =gPlayerState - adds r0, #0xab - ldrb r0, [r0] - cmp r0, #1 - beq _0806447E - movs r0, #0 -_0806447E: - str r0, [r1, #0x14] - pop {pc} - .align 2, 0 -_08064484: .4byte gPlayerState - - thumb_func_start sub_08064488 -sub_08064488: @ 0x08064488 - push {lr} - ldr r1, _080644A0 @ =gPlayerState - adds r0, r1, #0 - adds r0, #0xa8 - ldrb r0, [r0] - cmp r0, #2 - beq _0806449C - adds r1, #0xab - movs r0, #0 - strb r0, [r1] -_0806449C: - pop {pc} - .align 2, 0 -_080644A0: .4byte gPlayerState - - thumb_func_start sub_080644A4 -sub_080644A4: @ 0x080644A4 - ldr r0, _080644B0 @ =gPlayerState - adds r0, #0xab - movs r1, #0 - strb r1, [r0] - bx lr - .align 2, 0 -_080644B0: .4byte gPlayerState - - thumb_func_start sub_080644B4 -sub_080644B4: @ 0x080644B4 - push {lr} - adds r2, r1, #0 - movs r3, #0 - ldrb r1, [r0, #0x14] - ldr r0, [r2, #4] - cmp r1, r0 - bne _080644C4 - movs r3, #1 -_080644C4: - str r3, [r2, #0x14] - pop {pc} - - thumb_func_start sub_080644C8 -sub_080644C8: @ 0x080644C8 - push {r4, lr} - adds r2, r0, #0 - movs r1, #0x2e - ldrsh r0, [r2, r1] - ldr r3, _08064500 @ =gRoomControls - movs r4, #0xa - ldrsh r1, [r3, r4] - subs r1, r0, r1 - adds r0, r1, #0 - adds r0, #8 - cmp r0, #0 - blt _08064504 - adds r0, r1, #0 - subs r0, #8 - cmp r0, #0xf0 - bgt _08064504 - movs r0, #0x32 - ldrsh r1, [r2, r0] - movs r2, #0xc - ldrsh r0, [r3, r2] - subs r0, r1, r0 - cmp r0, #0 - blt _08064504 - subs r0, #0x18 - cmp r0, #0xa0 - bgt _08064504 - movs r0, #1 - b _08064506 - .align 2, 0 -_08064500: .4byte gRoomControls -_08064504: - movs r0, #0 -_08064506: - pop {r4, pc} diff --git a/asm/hiddenLadderDown.s b/asm/hiddenLadderDown.s deleted file mode 100644 index 9851257c..00000000 --- a/asm/hiddenLadderDown.s +++ /dev/null @@ -1,7 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text diff --git a/asm/hurdyGurdyMan.s b/asm/hurdyGurdyMan.s deleted file mode 100644 index 33d3bf98..00000000 --- a/asm/hurdyGurdyMan.s +++ /dev/null @@ -1,209 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start HurdyGurdyMan -HurdyGurdyMan: @ 0x0806E308 - push {r4, r5, lr} - adds r4, r0, #0 - ldrb r5, [r4, #0xc] - cmp r5, #1 - beq _0806E34C - cmp r5, #1 - bgt _0806E31C - cmp r5, #0 - beq _0806E322 - b _0806E3E0 -_0806E31C: - cmp r5, #2 - beq _0806E3C6 - b _0806E3E0 -_0806E322: - ldr r1, _0806E348 @ =gUnk_081144F0 - adds r0, r4, #0 - bl LoadExtraSpriteData - cmp r0, #0 - beq _0806E3E0 - movs r0, #1 - strb r0, [r4, #0xc] - adds r0, r4, #0 - adds r0, #0x69 - strb r5, [r0] - adds r0, r4, #0 - movs r1, #2 - bl sub_0805E3A0 - adds r0, r4, #0 - bl sub_0807DD50 - b _0806E3E0 - .align 2, 0 -_0806E348: .4byte gUnk_081144F0 -_0806E34C: - adds r2, r4, #0 - adds r2, #0x39 - movs r1, #0 - ldrsb r1, [r2, r1] - cmp r1, #2 - bne _0806E3BC - movs r0, #0 - strb r1, [r4, #0xc] - strb r0, [r2] - adds r0, r4, #0 - adds r0, #0x58 - ldrb r0, [r0] - adds r1, r4, #0 - adds r1, #0x69 - strb r0, [r1] - ldr r1, _0806E3B0 @ =gPlayerEntity - adds r0, r4, #0 - bl GetFacingDirection - bl sub_0806F5A4 - adds r1, r0, #0 - adds r0, r4, #0 - bl InitializeAnimation - adds r0, r4, #0 - bl sub_08002632 - ldr r1, _0806E3B4 @ =gUnk_08001A7C - lsls r0, r0, #2 - adds r0, r0, r1 - ldr r3, [r0] - adds r0, r4, #0 - adds r0, #0x68 - ldrb r0, [r0] - cmp r0, #0x32 - bne _0806E398 - adds r3, #6 -_0806E398: - ldrh r1, [r3] - ldrh r2, [r3, #2] - ldrh r3, [r3, #4] - adds r0, r4, #0 - bl sub_0801DFB4 - ldr r0, _0806E3B8 @ =gPlayerState - adds r0, #0x8b - movs r1, #3 - strb r1, [r0] - b _0806E3E0 - .align 2, 0 -_0806E3B0: .4byte gPlayerEntity -_0806E3B4: .4byte gUnk_08001A7C -_0806E3B8: .4byte gPlayerState -_0806E3BC: - adds r0, r4, #0 - movs r1, #0 - bl sub_0807DD94 - b _0806E3E0 -_0806E3C6: - adds r0, r4, #0 - bl UpdateFuseInteraction - cmp r0, #0 - beq _0806E3E0 - movs r0, #1 - strb r0, [r4, #0xc] - adds r0, r4, #0 - adds r0, #0x69 - ldrb r1, [r0] - adds r0, r4, #0 - bl InitializeAnimation -_0806E3E0: - pop {r4, r5, pc} - .align 2, 0 - - thumb_func_start HurdyGurdyMan_Head -HurdyGurdyMan_Head: @ 0x0806E3E4 - push {r4, lr} - adds r4, r0, #0 - adds r0, #0x5a - ldrb r2, [r0] - movs r0, #0x81 - rsbs r0, r0, #0 - ands r2, r0 - adds r2, #8 - adds r0, r4, #0 - movs r1, #0 - bl SetExtraSpriteFrame - ldrb r2, [r4, #0x1e] - adds r0, r4, #0 - movs r1, #1 - bl SetExtraSpriteFrame - adds r0, r4, #0 - movs r1, #1 - movs r2, #0 - bl SetSpriteSubEntryOffsetData1 - adds r0, r4, #0 - bl sub_0807000C - pop {r4, pc} - - thumb_func_start sub_0806E418 -sub_0806E418: @ 0x0806E418 - push {lr} - adds r2, r0, #0 - ldr r0, _0806E438 @ =gSave - ldrb r0, [r0, #8] - subs r0, #2 - cmp r0, #0 - bge _0806E428 - movs r0, #0 -_0806E428: - lsls r1, r0, #3 - ldr r0, _0806E43C @ =gUnk_081144FC - adds r1, r1, r0 - adds r0, r2, #0 - bl ShowNPCDialogue - pop {pc} - .align 2, 0 -_0806E438: .4byte gSave -_0806E43C: .4byte gUnk_081144FC - - thumb_func_start sub_0806E440 -sub_0806E440: @ 0x0806E440 - 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 HurdyGurdyMan_Fusion -HurdyGurdyMan_Fusion: @ 0x0806E458 - push {r4, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xc] - cmp r0, #0 - bne _0806E498 - ldr r1, _0806E494 @ =gUnk_081144F0 - adds r0, r4, #0 - bl LoadExtraSpriteData - cmp r0, #0 - beq _0806E49E - 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 sub_0805E3A0 - adds r0, r4, #0 - movs r1, #0xa - bl InitializeAnimation - b _0806E49E - .align 2, 0 -_0806E494: .4byte gUnk_081144F0 -_0806E498: - adds r0, r4, #0 - bl GetNextFrame -_0806E49E: - pop {r4, pc} diff --git a/asm/kid.s b/asm/kid.s deleted file mode 100644 index 59d6b6e7..00000000 --- a/asm/kid.s +++ /dev/null @@ -1,1319 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - - thumb_func_start Kid -Kid: @ 0x080620C8 - push {lr} - adds r2, r0, #0 - ldrb r1, [r2, #0x10] - movs r0, #2 - ands r0, r1 - cmp r0, #0 - beq _080620DE - adds r0, r2, #0 - bl sub_080621AC - b _080620EE -_080620DE: - ldr r0, _080620F0 @ =gUnk_0810BE0C - ldrb r1, [r2, #0xc] - lsls r1, r1, #2 - adds r1, r1, r0 - ldr r1, [r1] - adds r0, r2, #0 - bl _call_via_r1 -_080620EE: - pop {pc} - .align 2, 0 -_080620F0: .4byte gUnk_0810BE0C - - thumb_func_start sub_080620F4 -sub_080620F4: @ 0x080620F4 - push {r4, lr} - adds r4, r0, #0 - ldr r1, _0806212C @ =gUnk_0810BDC4 - ldrb r0, [r4, #0xa] - lsls r0, r0, #2 - adds r0, r0, r1 - ldr r1, [r0] - adds r0, r4, #0 - bl LoadExtraSpriteData - cmp r0, #0 - beq _0806212A - movs r1, #0 - movs r0, #4 - strb r0, [r4, #0x14] - adds r0, r4, #0 - adds r0, #0x68 - strb r1, [r0] - movs r0, #1 - strb r0, [r4, #0xc] - adds r0, r4, #0 - movs r1, #2 - bl InitAnimationForceUpdate - adds r0, r4, #0 - bl sub_08078778 -_0806212A: - pop {r4, pc} - .align 2, 0 -_0806212C: .4byte gUnk_0810BDC4 - - thumb_func_start sub_08062130 -sub_08062130: @ 0x08062130 - push {r4, lr} - adds r4, r0, #0 - adds r0, #0x39 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #0 - beq _08062152 - movs r0, #2 - strb r0, [r4, #0xc] - adds r0, r4, #0 - bl GetAnimationState - adds r1, r0, #0 - adds r0, r4, #0 - bl InitAnimationForceUpdate -_08062152: - ldrb r0, [r4, #0xf] - adds r1, r0, #1 - strb r1, [r4, #0xf] - lsls r0, r0, #0x18 - lsrs r0, r0, #0x18 - cmp r0, #0x78 - bls _08062184 - movs r0, #0 - strb r0, [r4, #0xf] - ldrb r0, [r4, #0xe] - adds r1, r0, #1 - movs r0, #7 - ands r1, r0 - strb r1, [r4, #0xe] - ldrb r0, [r4, #0xa] - cmp r0, #6 - bne _0806217A - adds r0, r1, #0 - adds r0, #0x10 - strb r0, [r4, #0xe] -_0806217A: - ldrb r1, [r4, #0xe] - adds r0, r4, #0 - bl InitAnimationForceUpdate - b _0806218A -_08062184: - adds r0, r4, #0 - bl UpdateAnimationSingleFrame -_0806218A: - adds r0, r4, #0 - bl sub_0806ED78 - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_08062194 -sub_08062194: @ 0x08062194 - push {r4, lr} - adds r4, r0, #0 - movs r0, #0 - bl TextboxNoOverlapFollow - movs r1, #0 - movs r0, #1 - strb r0, [r4, #0xc] - adds r4, #0x39 - strb r1, [r4] - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_080621AC -sub_080621AC: @ 0x080621AC - push {r4, r5, r6, lr} - adds r4, r0, #0 - ldrb r5, [r4, #0xc] - cmp r5, #1 - beq _08062234 - cmp r5, #1 - bgt _080621C0 - cmp r5, #0 - beq _080621CE - b _080622F2 -_080621C0: - cmp r5, #2 - bne _080621C6 - b _080622CC -_080621C6: - cmp r5, #3 - bne _080621CC - b _080622E4 -_080621CC: - b _080622F2 -_080621CE: - ldr r1, _0806221C @ =gUnk_0810BDC4 - ldrb r0, [r4, #0xa] - lsls r0, r0, #2 - adds r0, r0, r1 - ldr r1, [r0] - adds r0, r4, #0 - bl LoadExtraSpriteData - cmp r0, #0 - bne _080621E4 - b _080622F2 -_080621E4: - movs r0, #1 - strb r0, [r4, #0xc] - ldrb r0, [r4, #0xe] - strb r0, [r4, #0x14] - strb r5, [r4, #0xe] - adds r0, r4, #0 - adds r0, #0x68 - strb r5, [r0] - adds r0, #1 - strb r5, [r0] - adds r1, r4, #0 - adds r1, #0x6b - movs r0, #0xff - strb r0, [r1] - adds r0, r4, #0 - bl sub_0805ACC0 - adds r2, r0, #0 - cmp r2, #0 - bne _08062220 - ldrh r0, [r4, #0x2e] - adds r1, r4, #0 - adds r1, #0x6c - strh r0, [r1] - ldrh r0, [r4, #0x32] - adds r1, #2 - strh r0, [r1] - b _0806222C - .align 2, 0 -_0806221C: .4byte gUnk_0810BDC4 -_08062220: - lsrs r1, r2, #0x10 - adds r0, r4, #0 - adds r0, #0x6c - strh r1, [r0] - adds r0, #2 - strh r2, [r0] -_0806222C: - adds r0, r4, #0 - bl sub_0807DD50 - b _080622F2 -_08062234: - adds r5, r4, #0 - adds r5, #0x39 - movs r1, #0 - ldrsb r1, [r5, r1] - cmp r1, #2 - bne _08062252 - movs r1, #0 - movs r0, #3 - strb r0, [r4, #0xc] - strb r1, [r5] - adds r0, r4, #0 - bl sub_0806F118 - adds r5, #0x1f - b _0806229A -_08062252: - adds r0, r4, #0 - adds r0, #0x68 - movs r6, #0 - ldrsb r6, [r0, r6] - cmp r6, #0 - beq _08062274 - cmp r1, #0 - beq _0806226C - movs r1, #0 - movs r0, #2 - strb r0, [r4, #0xc] - strb r1, [r5] - b _0806228A -_0806226C: - adds r0, r4, #0 - bl sub_080622F4 - b _080622F2 -_08062274: - adds r0, r4, #0 - movs r1, #0 - bl sub_0807DD94 - movs r0, #0 - ldrsb r0, [r5, r0] - cmp r0, #0 - beq _080622F2 - movs r0, #2 - strb r0, [r4, #0xc] - strb r6, [r5] -_0806228A: - adds r0, r4, #0 - adds r0, #0x84 - ldr r1, [r0] - adds r0, r4, #0 - bl sub_0806265C - adds r5, r4, #0 - adds r5, #0x58 -_0806229A: - ldrb r0, [r5] - adds r1, r4, #0 - adds r1, #0x6b - strb r0, [r1] - ldrb r0, [r5] - cmp r0, #7 - bhi _080622F2 - ldr r1, _080622C8 @ =gPlayerEntity - adds r0, r4, #0 - bl GetFacingDirection - bl sub_0806F5A4 - ldrb r1, [r5] - movs r2, #4 - rsbs r2, r2, #0 - ands r1, r2 - adds r1, r1, r0 - adds r0, r4, #0 - bl InitializeAnimation - b _080622F2 - .align 2, 0 -_080622C8: .4byte gPlayerEntity -_080622CC: - adds r0, r4, #0 - bl GetNextFrame - ldr r0, _080622E0 @ =gTextBox - ldrb r1, [r0] - movs r0, #0x7f - ands r0, r1 - cmp r0, #0 - bne _080622F2 - b _080622EE - .align 2, 0 -_080622E0: .4byte gTextBox -_080622E4: - adds r0, r4, #0 - bl UpdateFuseInteraction - cmp r0, #0 - beq _080622F2 -_080622EE: - movs r0, #1 - strb r0, [r4, #0xc] -_080622F2: - pop {r4, r5, r6, pc} - - thumb_func_start sub_080622F4 -sub_080622F4: @ 0x080622F4 - push {r4, r5, r6, r7, lr} - mov r7, sb - mov r6, r8 - push {r6, r7} - adds r7, r0, #0 - ldr r0, _0806239C @ =gPlayerEntity - mov r8, r0 - ldrh r1, [r0, #0x2e] - ldr r3, _080623A0 @ =0xFFFF0000 - adds r0, r3, #0 - ands r0, r5 - orrs r0, r1 - mov r2, r8 - ldrh r1, [r2, #0x32] - lsls r1, r1, #0x10 - ldr r2, _080623A4 @ =0x0000FFFF - ands r0, r2 - adds r5, r0, #0 - orrs r5, r1 - mov r1, r8 - ldrh r0, [r1, #0x36] - ands r3, r6 - orrs r3, r0 - ldr r0, _080623A8 @ =gPlayerState - adds r0, #0xa8 - ldrb r0, [r0] - lsls r0, r0, #0x10 - ldr r2, _080623AC @ =0xFF00FFFF - ands r2, r3 - orrs r2, r0 - ldrb r1, [r1, #0x14] - movs r0, #0x3f - ands r1, r0 - lsls r1, r1, #0x18 - ldr r0, _080623B0 @ =0xC0FFFFFF - ands r0, r2 - orrs r0, r1 - mov r1, r8 - adds r1, #0x38 - ldrb r1, [r1] - lsls r1, r1, #0x1e - ldr r2, _080623B4 @ =0x3FFFFFFF - ands r0, r2 - adds r6, r0, #0 - orrs r6, r1 - ldr r4, [r7, #0x64] - ldrb r0, [r4, #6] - cmp r0, #0x16 - bne _080623BE - lsrs r0, r6, #0x10 - lsls r0, r0, #0x18 - lsrs r0, r0, #0x18 - cmp r0, #0x16 - beq _080623BE - movs r2, #0x2e - ldrsh r1, [r7, r2] - mov r3, r8 - movs r2, #0x2e - ldrsh r0, [r3, r2] - subs r2, r1, r0 - movs r0, #0x32 - ldrsh r3, [r7, r0] - mov sb, r3 - mov r1, r8 - movs r3, #0x32 - ldrsh r0, [r1, r3] - mov r3, sb - subs r1, r3, r0 - cmp r2, #0 - bge _08062382 - rsbs r2, r2, #0 -_08062382: - cmp r1, #0 - bge _08062388 - rsbs r1, r1, #0 -_08062388: - cmp r2, #0x78 - bgt _08062390 - cmp r1, #0x50 - ble _080623B8 -_08062390: - adds r1, r7, #0 - adds r1, #0x68 - movs r0, #0 - strb r0, [r1] - b _080624F8 - .align 2, 0 -_0806239C: .4byte gPlayerEntity -_080623A0: .4byte 0xFFFF0000 -_080623A4: .4byte 0x0000FFFF -_080623A8: .4byte gPlayerState -_080623AC: .4byte 0xFF00FFFF -_080623B0: .4byte 0xC0FFFFFF -_080623B4: .4byte 0x3FFFFFFF -_080623B8: - adds r0, r7, #0 - bl sub_0806252C -_080623BE: - movs r0, #0 - mov sb, r0 - ldr r0, [r4] - cmp r5, r0 - bne _080623CE - ldr r0, [r4, #4] - cmp r6, r0 - beq _08062410 -_080623CE: - ldr r4, [r7, #0x64] - adds r4, #0x90 - movs r1, #0x69 - adds r1, r1, r7 - mov r8, r1 - adds r3, r7, #0 - adds r3, #0x38 - movs r2, #0x58 - adds r2, r2, r7 - mov ip, r2 - movs r2, #0x12 -_080623E4: - ldr r0, [r4] - ldr r1, [r4, #4] - str r0, [r4, #8] - str r1, [r4, #0xc] - subs r4, #8 - subs r2, #1 - cmp r2, #0 - bge _080623E4 - ldr r4, [r7, #0x64] - str r5, [r4] - str r6, [r4, #4] - movs r0, #4 - mov sb, r0 - mov r2, r8 - ldrb r1, [r2] - movs r0, #0 - ldrsb r0, [r2, r0] - cmp r0, #0 - ble _08062484 - subs r0, r1, #1 - strb r0, [r2] - b _08062484 -_08062410: - adds r4, #0x98 - movs r3, #4 - ldrsh r0, [r4, r3] - cmp r0, #0 - bge _08062442 - ldr r4, [r7, #0x64] - adds r4, #0x90 - movs r0, #0x69 - adds r0, r0, r7 - mov r8, r0 - adds r3, r7, #0 - adds r3, #0x38 - movs r1, #0x58 - adds r1, r1, r7 - mov ip, r1 - movs r2, #0x12 -_08062430: - ldr r0, [r4] - ldr r1, [r4, #4] - str r0, [r4, #8] - str r1, [r4, #0xc] - subs r4, #8 - subs r2, #1 - cmp r2, #0 - bge _08062430 - b _08062480 -_08062442: - ldr r1, _080624E8 @ =gPlayerEntity - movs r3, #0x2e - ldrsh r0, [r1, r3] - movs r2, #0x32 - ldrsh r1, [r1, r2] - ldrh r2, [r4] - ldrh r3, [r4, #2] - bl sub_080041E8 - lsrs r0, r0, #4 - movs r3, #0x69 - adds r3, r3, r7 - mov r8, r3 - adds r3, r7, #0 - adds r3, #0x38 - movs r1, #0x58 - adds r1, r1, r7 - mov ip, r1 - cmp r0, #0x18 - ble _08062484 - ldr r4, [r7, #0x64] - adds r4, #0x90 - movs r2, #0x12 -_08062470: - ldr r0, [r4] - ldr r1, [r4, #4] - str r0, [r4, #8] - str r1, [r4, #0xc] - subs r4, #8 - subs r2, #1 - cmp r2, #0 - bge _08062470 -_08062480: - movs r2, #4 - mov sb, r2 -_08062484: - ldr r4, [r7, #0x64] - adds r4, #0x98 - ldrh r0, [r4] - strh r0, [r7, #0x2e] - ldrh r0, [r4, #2] - strh r0, [r7, #0x32] - ldrh r0, [r4, #4] - strh r0, [r7, #0x36] - ldrb r0, [r4, #7] - lsls r0, r0, #0x1a - lsrs r0, r0, #0x1a - strb r0, [r7, #0x14] - ldrb r0, [r4, #7] - lsrs r0, r0, #6 - strb r0, [r3] - mov r1, r8 - ldrb r2, [r1] - movs r0, #0 - ldrsb r0, [r1, r0] - cmp r0, #0 - ble _080624B2 - subs r0, r2, #1 - strb r0, [r1] -_080624B2: - mov r2, sb - ldrb r0, [r7, #0x14] - lsrs r0, r0, #1 - add sb, r0 - ldrb r0, [r7, #0xa] - cmp r0, #6 - bne _080624C4 - movs r3, #0x10 - add sb, r3 -_080624C4: - mov r0, ip - ldrb r0, [r0] - cmp sb, r0 - beq _080624EC - cmp r2, #0 - bne _080624D8 - movs r0, #0 - ldrsb r0, [r1, r0] - cmp r0, #0 - bgt _080624EC -_080624D8: - adds r0, r7, #0 - mov r1, sb - bl InitAnimationForceUpdate - movs r0, #0x1e - mov r1, r8 - strb r0, [r1] - b _080624F2 - .align 2, 0 -_080624E8: .4byte gPlayerEntity -_080624EC: - adds r0, r7, #0 - bl UpdateAnimationSingleFrame -_080624F2: - adds r0, r7, #0 - bl sub_0800451C -_080624F8: - pop {r3, r4} - mov r8, r3 - mov sb, r4 - pop {r4, r5, r6, r7, pc} - - thumb_func_start sub_08062500 -sub_08062500: @ 0x08062500 - push {r4, r5, lr} - adds r5, r0, #0 - movs r0, #0xa0 - bl zMalloc - str r0, [r5, #0x64] - cmp r0, #0 - beq _08062528 - adds r0, r5, #0 - adds r0, #0x68 - movs r4, #0 - movs r1, #1 - strb r1, [r0] - adds r0, r5, #0 - bl sub_080788E0 - str r4, [r5, #0x48] - adds r0, r5, #0 - bl sub_0806252C -_08062528: - pop {r4, r5, pc} - .align 2, 0 - - thumb_func_start sub_0806252C -sub_0806252C: @ 0x0806252C - push {r4, r5, r6, r7, lr} - mov r7, sl - mov r6, sb - mov r5, r8 - push {r5, r6, r7} - adds r7, r0, #0 - ldr r4, _08062618 @ =gPlayerEntity - ldrh r1, [r4, #0x2e] - ldr r3, _0806261C @ =0xFFFF0000 - adds r0, r3, #0 - ands r0, r5 - orrs r0, r1 - ldrh r1, [r4, #0x32] - lsls r1, r1, #0x10 - ldr r2, _08062620 @ =0x0000FFFF - ands r0, r2 - adds r5, r0, #0 - orrs r5, r1 - ldrh r0, [r4, #0x36] - ands r3, r6 - orrs r3, r0 - ldr r0, _08062624 @ =gPlayerState - adds r0, #0xa8 - ldrb r0, [r0] - lsls r0, r0, #0x10 - ldr r2, _08062628 @ =0xFF00FFFF - ands r2, r3 - orrs r2, r0 - ldrb r1, [r4, #0x14] - movs r0, #0x3f - ands r1, r0 - lsls r1, r1, #0x18 - ldr r0, _0806262C @ =0xC0FFFFFF - ands r0, r2 - orrs r0, r1 - adds r1, r4, #0 - adds r1, #0x38 - ldrb r1, [r1] - lsls r1, r1, #0x1e - ldr r2, _08062630 @ =0x3FFFFFFF - ands r0, r2 - adds r6, r0, #0 - orrs r6, r1 - movs r0, #0x2e - ldrsh r1, [r4, r0] - movs r2, #0x2e - ldrsh r0, [r7, r2] - subs r1, r1, r0 - mov sl, r1 - movs r0, #0x32 - ldrsh r1, [r4, r0] - movs r2, #0x32 - ldrsh r0, [r7, r2] - subs r1, r1, r0 - mov r8, r1 - mov r1, sl - lsls r0, r1, #0x10 - asrs r0, r0, #0x10 - movs r1, #0x14 - bl FixedDiv - lsls r0, r0, #0x10 - asrs r0, r0, #0x10 - mov sl, r0 - mov r2, r8 - lsls r0, r2, #0x10 - asrs r0, r0, #0x10 - movs r1, #0x14 - bl FixedDiv - lsls r0, r0, #0x10 - asrs r0, r0, #0x10 - mov r8, r0 - ldr r3, [r7, #0x64] - movs r0, #0 - mov sb, r0 - mov ip, r0 - movs r4, #0x13 -_080625C8: - mov r1, ip - asrs r0, r1, #8 - subs r0, r5, r0 - strh r0, [r3] - lsrs r0, r5, #0x10 - mov r2, sb - asrs r1, r2, #8 - subs r0, r0, r1 - strh r0, [r3, #2] - strh r6, [r3, #4] - lsrs r0, r6, #0x10 - strb r0, [r3, #6] - ldrb r0, [r7, #0x14] - movs r1, #0x3f - ands r1, r0 - ldrb r2, [r3, #7] - movs r0, #0x40 - rsbs r0, r0, #0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3, #7] - adds r1, r7, #0 - adds r1, #0x38 - ldrb r1, [r1] - lsls r1, r1, #6 - movs r2, #0x3f - ands r0, r2 - orrs r0, r1 - strb r0, [r3, #7] - adds r3, #8 - add sb, r8 - add ip, sl - subs r4, #1 - cmp r4, #0 - bge _080625C8 - pop {r3, r4, r5} - mov r8, r3 - mov sb, r4 - mov sl, r5 - pop {r4, r5, r6, r7, pc} - .align 2, 0 -_08062618: .4byte gPlayerEntity -_0806261C: .4byte 0xFFFF0000 -_08062620: .4byte 0x0000FFFF -_08062624: .4byte gPlayerState -_08062628: .4byte 0xFF00FFFF -_0806262C: .4byte 0xC0FFFFFF -_08062630: .4byte 0x3FFFFFFF - - thumb_func_start sub_08062634 -sub_08062634: @ 0x08062634 - push {r4, r5, lr} - adds r5, r0, #0 - ldrb r4, [r5, #0xb] - bl Random - movs r1, #1 - ands r1, r0 - ldr r0, _08062658 @ =gUnk_0810BDE8 - lsls r1, r1, #1 - lsls r4, r4, #2 - adds r1, r1, r4 - adds r1, r1, r0 - ldrh r0, [r1] - adds r1, r5, #0 - bl TextboxNoOverlap - pop {r4, r5, pc} - .align 2, 0 -_08062658: .4byte gUnk_0810BDE8 - - thumb_func_start sub_0806265C -sub_0806265C: @ 0x0806265C - push {lr} - adds r2, r0, #0 - ldr r3, _08062674 @ =gSave - ldrb r0, [r3, #8] - cmp r0, #0 - bne _08062678 - movs r0, #0 - adds r1, r2, #0 - bl TextboxNoOverlap - b _08062690 - .align 2, 0 -_08062674: .4byte gSave -_08062678: - ldrb r0, [r2, #0xa] - lsls r1, r0, #3 - adds r1, r1, r0 - lsls r1, r1, #3 - ldr r0, _08062694 @ =gUnk_0810BE10 - adds r1, r1, r0 - ldrb r0, [r3, #8] - lsls r0, r0, #3 - adds r1, r1, r0 - adds r0, r2, #0 - bl ShowNPCDialogue -_08062690: - pop {pc} - .align 2, 0 -_08062694: .4byte gUnk_0810BE10 - - thumb_func_start sub_08062698 -sub_08062698: @ 0x08062698 - push {r4, lr} - adds r4, r0, #0 - bl Random - movs r1, #0x3f - ands r0, r1 - adds r0, #0xc0 - strh r0, [r4, #0x24] - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_080626AC -sub_080626AC: @ 0x080626AC - push {r4, lr} - adds r4, r0, #0 - bl Random - movs r1, #0x1f - ands r0, r1 - adds r0, #0x40 - strb r0, [r4, #0xe] - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_080626C0 -sub_080626C0: @ 0x080626C0 - push {lr} - adds r2, r0, #0 - movs r0, #0 - str r0, [r1, #0x14] - ldrb r0, [r2, #0xe] - cmp r0, #0 - beq _080626DC - subs r0, #1 - strb r0, [r2, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _080626DC - movs r0, #1 - str r0, [r1, #0x14] -_080626DC: - pop {pc} - .align 2, 0 - - thumb_func_start sub_080626E0 -sub_080626E0: @ 0x080626E0 - push {r4, r5, lr} - adds r5, r0, #0 - adds r4, r1, #0 - ldrb r0, [r4, #0x18] - cmp r0, #0 - bne _0806270E - adds r0, #1 - strb r0, [r4, #0x18] - movs r0, #0xa - strb r0, [r4, #0x19] - ldr r0, [r4, #8] - movs r1, #2 - orrs r0, r1 - str r0, [r4, #8] - ldrh r2, [r4, #4] - ldr r1, _08062778 @ =gRoomControls - ldrh r0, [r4, #6] - ldrh r3, [r1, #6] - adds r0, r0, r3 - strh r0, [r4, #0x1e] - ldrh r0, [r1, #8] - adds r0, r0, r2 - strh r0, [r4, #0x22] -_0806270E: - ldrb r0, [r4, #0x19] - subs r0, #1 - strb r0, [r4, #0x19] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _0806274A - movs r0, #0xa - strb r0, [r4, #0x19] - movs r1, #0x1e - ldrsh r0, [r4, r1] - movs r2, #0x2e - ldrsh r1, [r5, r2] - subs r0, r0, r1 - movs r3, #0x22 - ldrsh r1, [r4, r3] - movs r3, #0x32 - ldrsh r2, [r5, r3] - subs r1, r1, r2 - bl sub_080045DA - strb r0, [r5, #0x15] - bl Random - movs r1, #0xb - bl __modsi3 - ldrb r1, [r5, #0x15] - adds r1, r1, r0 - subs r1, #5 - strb r1, [r5, #0x15] -_0806274A: - movs r0, #0x24 - ldrsh r1, [r5, r0] - ldrb r2, [r5, #0x15] - adds r0, r5, #0 - bl sub_0806F62C - movs r2, #0x2e - ldrsh r1, [r5, r2] - movs r3, #0x1e - ldrsh r0, [r4, r3] - subs r1, r1, r0 - lsls r1, r1, #8 - ldrh r0, [r5, #0x24] - lsls r0, r0, #0x10 - asrs r0, r0, #0x11 - adds r1, r1, r0 - movs r2, #0x24 - ldrsh r0, [r5, r2] - cmp r1, r0 - bhi _0806277C - ldrh r0, [r4, #0x1e] - strh r0, [r5, #0x2e] - b _08062782 - .align 2, 0 -_08062778: .4byte gRoomControls -_0806277C: - ldr r1, _08062784 @ =gActiveScriptInfo - movs r0, #0 - strb r0, [r1, #6] -_08062782: - pop {r4, r5, pc} - .align 2, 0 -_08062784: .4byte gActiveScriptInfo - - thumb_func_start sub_08062788 -sub_08062788: @ 0x08062788 - push {r4, lr} - ldr r4, _080627CC @ =0x00004072 - ldr r1, _080627D0 @ =0x0000060B - adds r0, r4, #0 - movs r2, #1 - bl SetTile - ldr r1, _080627D4 @ =0x0000060C - adds r0, r4, #0 - movs r2, #1 - bl SetTile - ldr r1, _080627D8 @ =0x0000060D - adds r0, r4, #0 - movs r2, #1 - bl SetTile - ldr r1, _080627DC @ =0x0000064B - adds r0, r4, #0 - movs r2, #1 - bl SetTile - ldr r1, _080627E0 @ =0x0000064C - adds r0, r4, #0 - movs r2, #1 - bl SetTile - ldr r1, _080627E4 @ =0x0000064D - adds r0, r4, #0 - movs r2, #1 - bl SetTile - pop {r4, pc} - .align 2, 0 -_080627CC: .4byte 0x00004072 -_080627D0: .4byte 0x0000060B -_080627D4: .4byte 0x0000060C -_080627D8: .4byte 0x0000060D -_080627DC: .4byte 0x0000064B -_080627E0: .4byte 0x0000064C -_080627E4: .4byte 0x0000064D - - thumb_func_start sub_080627E8 -sub_080627E8: @ 0x080627E8 - push {lr} - ldr r0, _0806281C @ =0x0000060B - movs r1, #1 - bl sub_0807BA8C - ldr r0, _08062820 @ =0x0000060C - movs r1, #1 - bl sub_0807BA8C - ldr r0, _08062824 @ =0x0000060D - movs r1, #1 - bl sub_0807BA8C - ldr r0, _08062828 @ =0x0000064B - movs r1, #1 - bl sub_0807BA8C - ldr r0, _0806282C @ =0x0000064C - movs r1, #1 - bl sub_0807BA8C - ldr r0, _08062830 @ =0x0000064D - movs r1, #1 - bl sub_0807BA8C - pop {pc} - .align 2, 0 -_0806281C: .4byte 0x0000060B -_08062820: .4byte 0x0000060C -_08062824: .4byte 0x0000060D -_08062828: .4byte 0x0000064B -_0806282C: .4byte 0x0000064C -_08062830: .4byte 0x0000064D - - thumb_func_start Kid_Head -Kid_Head: @ 0x08062834 - push {r4, r5, r6, r7, lr} - adds r5, r0, #0 - ldrb r4, [r5, #0xa] - lsls r0, r4, #2 - mov ip, r0 - ldr r2, _08062868 @ =gUnk_0810C0A0 - add r2, ip - adds r0, r5, #0 - adds r0, #0x5a - ldrb r3, [r0] - movs r1, #0x1f - adds r0, r1, #0 - ands r0, r3 - ldrb r3, [r2] - adds r6, r0, r3 - ldrb r0, [r5, #0x1e] - ands r1, r0 - ldrb r2, [r2, #1] - adds r7, r1, r2 - cmp r4, #8 - bhi _08062946 - ldr r0, _0806286C @ =_08062870 - add r0, ip - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08062868: .4byte gUnk_0810C0A0 -_0806286C: .4byte _08062870 @ jump table -_08062870: - .4byte _08062894 @ case 0 - .4byte _08062894 @ case 1 - .4byte _08062894 @ case 2 - .4byte _08062894 @ case 3 - .4byte _08062894 @ case 4 - .4byte _08062894 @ case 5 - .4byte _080628D8 @ case 6 - .4byte _08062922 @ case 7 - .4byte _08062922 @ case 8 -_08062894: - adds r0, r5, #0 - adds r0, #0x5b - ldrb r1, [r0] - movs r0, #0x30 - ands r0, r1 - lsrs r4, r0, #4 - cmp r4, #0 - beq _080628A6 - adds r4, #0x50 -_080628A6: - subs r4, #1 - adds r0, r5, #0 - movs r1, #0 - adds r2, r6, #0 - bl SetExtraSpriteFrame - adds r0, r5, #0 - movs r1, #1 - adds r2, r7, #0 - bl SetExtraSpriteFrame - adds r0, r5, #0 - movs r1, #2 - adds r2, r4, #0 - bl SetExtraSpriteFrame - adds r0, r5, #0 - movs r1, #1 - movs r2, #0 - bl SetSpriteSubEntryOffsetData1 - adds r0, r5, #0 - movs r1, #1 - movs r2, #2 - b _08062916 -_080628D8: - adds r0, r5, #0 - adds r0, #0x5b - ldrb r0, [r0] - movs r2, #0xf - ands r2, r0 - cmp r2, #0 - beq _080628E8 - adds r2, #0x93 -_080628E8: - subs r2, #1 - adds r0, r5, #0 - movs r1, #0 - bl SetExtraSpriteFrame - adds r0, r5, #0 - movs r1, #1 - adds r2, r6, #0 - bl SetExtraSpriteFrame - adds r0, r5, #0 - movs r1, #2 - adds r2, r7, #0 - bl SetExtraSpriteFrame - adds r0, r5, #0 - movs r1, #2 - movs r2, #1 - bl SetSpriteSubEntryOffsetData1 - adds r0, r5, #0 - movs r1, #1 - movs r2, #0 -_08062916: - bl SetSpriteSubEntryOffsetData2 - adds r0, r5, #0 - bl sub_0807000C - b _08062946 -_08062922: - adds r0, r5, #0 - movs r1, #0 - adds r2, r6, #0 - bl SetExtraSpriteFrame - adds r0, r5, #0 - movs r1, #1 - adds r2, r7, #0 - bl SetExtraSpriteFrame - adds r0, r5, #0 - movs r1, #1 - movs r2, #0 - bl SetSpriteSubEntryOffsetData1 - adds r0, r5, #0 - bl sub_0807000C -_08062946: - pop {r4, r5, r6, r7, pc} - - thumb_func_start sub_08062948 -sub_08062948: @ 0x08062948 - push {r4, r5, r6, lr} - adds r4, r0, #0 - adds r6, r1, #0 - ldrb r0, [r6, #0x18] - cmp r0, #0 - bne _080629B4 - adds r0, #1 - strb r0, [r6, #0x18] - bl Random - movs r1, #0x3f - ands r0, r1 - adds r0, #0x20 - strh r0, [r6, #0x12] - bl Random - adds r1, r0, #0 - movs r0, #0x18 - ands r1, r0 - ldrb r0, [r4, #0x15] - cmp r0, #8 - beq _08062990 - cmp r0, #8 - bgt _0806297E - cmp r0, #0 - beq _08062988 - b _080629A6 -_0806297E: - cmp r0, #0x10 - beq _08062998 - cmp r0, #0x18 - beq _080629A0 - b _080629A6 -_08062988: - cmp r1, #0x10 - bne _080629A6 - movs r1, #8 - b _080629A6 -_08062990: - cmp r1, #0x18 - bne _080629A6 - movs r1, #0x10 - b _080629A6 -_08062998: - cmp r1, #0 - bne _080629A6 - movs r1, #0x18 - b _080629A6 -_080629A0: - cmp r1, #8 - bne _080629A6 - movs r1, #0 -_080629A6: - strb r1, [r4, #0x15] - adds r0, r1, #0 - bl sub_0806F5B0 - strb r0, [r4, #0x14] - movs r0, #0x80 - strh r0, [r4, #0x24] -_080629B4: - ldrb r0, [r4, #0x14] - lsrs r0, r0, #1 - adds r1, r0, #4 - adds r5, r4, #0 - adds r5, #0x58 - ldrb r0, [r5] - cmp r1, r0 - beq _080629D2 - adds r0, r4, #0 - bl InitializeAnimation - ldrb r1, [r5] - adds r0, r4, #0 - adds r0, #0x80 - strh r1, [r0] -_080629D2: - adds r0, r4, #0 - bl ProcessMovement - movs r3, #0x2e - ldrsh r1, [r4, r3] - adds r2, r4, #0 - adds r2, #0x6c - movs r5, #0 - ldrsh r0, [r2, r5] - subs r1, r1, r0 - cmp r1, #0x10 - ble _080629F4 - ldrh r0, [r2] - adds r0, #0x10 - strh r0, [r4, #0x2e] - movs r0, #1 - strh r0, [r6, #0x12] -_080629F4: - movs r3, #0x10 - rsbs r3, r3, #0 - cmp r1, r3 - bge _08062A06 - ldrh r0, [r2] - subs r0, #0x10 - strh r0, [r4, #0x2e] - movs r0, #1 - strh r0, [r6, #0x12] -_08062A06: - movs r0, #0x32 - ldrsh r1, [r4, r0] - adds r2, r4, #0 - adds r2, #0x6e - movs r5, #0 - ldrsh r0, [r2, r5] - subs r1, r1, r0 - cmp r1, #0x10 - ble _08062A22 - ldrh r0, [r2] - adds r0, #0x10 - strh r0, [r4, #0x32] - movs r0, #1 - strh r0, [r6, #0x12] -_08062A22: - cmp r1, r3 - bge _08062A30 - ldrh r0, [r2] - subs r0, #0x10 - strh r0, [r4, #0x32] - movs r0, #1 - strh r0, [r6, #0x12] -_08062A30: - ldrh r0, [r6, #0x12] - subs r0, #1 - strh r0, [r6, #0x12] - lsls r0, r0, #0x10 - cmp r0, #0 - beq _08062A42 - ldr r1, _08062A44 @ =gActiveScriptInfo - movs r0, #0 - strb r0, [r1, #6] -_08062A42: - pop {r4, r5, r6, pc} - .align 2, 0 -_08062A44: .4byte gActiveScriptInfo - - thumb_func_start sub_08062A48 -sub_08062A48: @ 0x08062A48 - push {r4, lr} - adds r4, r0, #0 - bl sub_0801E99C - adds r1, r4, #0 - adds r1, #0x6a - strb r0, [r1] - ldrb r1, [r1] - adds r0, r4, #0 - bl sub_08078784 - pop {r4, pc} - - thumb_func_start Kid_Fusion -Kid_Fusion: @ 0x08062A60 - push {r4, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xc] - cmp r0, #0 - bne _08062AB0 - ldr r1, _08062AAC @ =gUnk_0810BDC4 - ldrb r0, [r4, #0xa] - lsls r0, r0, #2 - adds r0, r0, r1 - ldr r1, [r0] - adds r0, r4, #0 - bl LoadExtraSpriteData - cmp r0, #0 - beq _08062AB6 - 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] - ldrh r0, [r4, #0x32] - subs r0, #8 - strh r0, [r4, #0x32] - movs r1, #6 - ldrb r0, [r4, #0xa] - cmp r0, #6 - bne _08062AA2 - movs r1, #0x16 -_08062AA2: - adds r0, r4, #0 - bl InitializeAnimation - b _08062AB6 - .align 2, 0 -_08062AAC: .4byte gUnk_0810BDC4 -_08062AB0: - adds r0, r4, #0 - bl GetNextFrame -_08062AB6: - pop {r4, pc} - - thumb_func_start sub_08062AB8 -sub_08062AB8: @ 0x08062AB8 - push {lr} - ldr r2, _08062ACC @ =gUnk_0810C268 - ldrb r1, [r0, #0xc] - lsls r1, r1, #2 - adds r1, r1, r2 - ldr r1, [r1] - bl _call_via_r1 - pop {pc} - .align 2, 0 -_08062ACC: .4byte gUnk_0810C268 - - thumb_func_start sub_08062AD0 -sub_08062AD0: @ 0x08062AD0 - bx lr - .align 2, 0 - - thumb_func_start sub_08062AD4 -sub_08062AD4: @ 0x08062AD4 - bx lr - .align 2, 0 diff --git a/asm/kingDaltus.s b/asm/kingDaltus.s deleted file mode 100644 index e77fb2d8..00000000 --- a/asm/kingDaltus.s +++ /dev/null @@ -1,255 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start KingDaltus -KingDaltus: @ 0x080665E4 - push {r4, lr} - adds r4, r0, #0 - ldrb r1, [r4, #0x10] - movs r0, #2 - ands r0, r1 - cmp r0, #0 - beq _08066638 - adds r2, r4, #0 - adds r2, #0x39 - movs r1, #0 - ldrsb r1, [r2, r1] - cmp r1, #2 - bne _0806661E - movs r0, #0 - strb r0, [r2] - strb r1, [r4, #0xc] - ldr r1, _08066630 @ =gPlayerEntity - adds r0, r4, #0 - bl GetFacingDirection - bl sub_0806F5A4 - adds r1, r0, #0 - adds r0, r4, #0 - bl InitAnimationForceUpdate - adds r0, r4, #0 - bl sub_0806F118 -_0806661E: - ldr r0, _08066634 @ =gUnk_081104EC - ldrb r1, [r4, #0xc] - lsls r1, r1, #2 - adds r1, r1, r0 - ldr r1, [r1] - adds r0, r4, #0 - bl _call_via_r1 - b _0806664E - .align 2, 0 -_08066630: .4byte gPlayerEntity -_08066634: .4byte gUnk_081104EC -_08066638: - ldr r0, _08066650 @ =gUnk_081104E0 - ldrb r1, [r4, #0xc] - lsls r1, r1, #2 - adds r1, r1, r0 - ldr r1, [r1] - adds r0, r4, #0 - bl _call_via_r1 - adds r0, r4, #0 - bl sub_0806ED78 -_0806664E: - pop {r4, pc} - .align 2, 0 -_08066650: .4byte gUnk_081104E0 - - thumb_func_start sub_08066654 -sub_08066654: @ 0x08066654 - push {r4, lr} - adds r4, r0, #0 - 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] - 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 InitAnimationForceUpdate - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_08066688 -sub_08066688: @ 0x08066688 - push {r4, lr} - adds r4, r0, #0 - movs r1, #0x28 - movs r2, #0x28 - bl sub_0806ED9C - adds r1, r0, #0 - cmp r1, #0 - bge _0806669E - movs r1, #2 - b _080666B4 -_0806669E: - ldrb r0, [r4, #0xf] - cmp r0, #0 - bne _080666AA - movs r0, #0x10 - strb r0, [r4, #0xf] - b _080666B4 -_080666AA: - subs r0, #1 - strb r0, [r4, #0xf] - adds r0, r4, #0 - adds r0, #0x58 - ldrb r1, [r0] -_080666B4: - adds r0, r4, #0 - bl sub_0806F078 - cmp r0, #0 - bne _080666C4 - adds r0, r4, #0 - bl UpdateAnimationSingleFrame -_080666C4: - adds r2, r4, #0 - adds r2, #0x39 - movs r0, #0 - ldrsb r0, [r2, r0] - cmp r0, #0 - beq _080666D8 - movs r1, #0 - movs r0, #2 - strb r0, [r4, #0xc] - strb r1, [r2] -_080666D8: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_080666DC -sub_080666DC: @ 0x080666DC - movs r1, #1 - strb r1, [r0, #0xc] - bx lr - .align 2, 0 - - thumb_func_start sub_080666E4 -sub_080666E4: @ 0x080666E4 - push {r4, lr} - adds r4, r0, #0 - 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] - adds r0, r4, #0 - bl sub_0801E99C - adds r1, r4, #0 - adds r1, #0x68 - strb r0, [r1] - adds r0, r4, #0 - bl sub_0807DD50 - pop {r4, pc} - - thumb_func_start sub_0806670C -sub_0806670C: @ 0x0806670C - push {lr} - movs r1, #0 - bl sub_0807DD94 - pop {pc} - .align 2, 0 - - thumb_func_start sub_08066718 -sub_08066718: @ 0x08066718 - push {r4, lr} - adds r4, r0, #0 - bl UpdateFuseInteraction - cmp r0, #0 - beq _08066728 - movs r0, #1 - strb r0, [r4, #0xc] -_08066728: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_0806672C -sub_0806672C: @ 0x0806672C - push {lr} - adds r1, r0, #0 - adds r1, #0x68 - ldrb r1, [r1] - bl sub_08078784 - pop {pc} - .align 2, 0 - - thumb_func_start sub_0806673C -sub_0806673C: @ 0x0806673C - push {r4, lr} - adds r4, r0, #0 - movs r0, #2 - bl CheckGlobalFlag - cmp r0, #0 - bne _0806674E - movs r1, #0 - b _0806676A -_0806674E: - movs r0, #2 - bl GetInventoryValue - cmp r0, #0 - bne _0806675C - movs r1, #1 - b _0806676A -_0806675C: - movs r0, #3 - bl GetInventoryValue - movs r1, #3 - cmp r0, #0 - bne _0806676A - movs r1, #2 -_0806676A: - ldr r0, _0806677C @ =gUnk_081104F8 - lsls r1, r1, #1 - adds r1, r1, r0 - ldrh r0, [r1] - adds r1, r4, #0 - bl TextboxNoOverlap - pop {r4, pc} - .align 2, 0 -_0806677C: .4byte gUnk_081104F8 - - thumb_func_start KingDaltus_Fusion -KingDaltus_Fusion: @ 0x08066780 - push {lr} - adds r2, r0, #0 - ldrb r0, [r2, #0xc] - cmp r0, #0 - bne _080667A6 - 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, #6 - bl InitAnimationForceUpdate - b _080667AC -_080667A6: - adds r0, r2, #0 - bl UpdateAnimationSingleFrame -_080667AC: - pop {pc} - .align 2, 0 diff --git a/asm/librarians.s b/asm/librarians.s deleted file mode 100644 index f80ef358..00000000 --- a/asm/librarians.s +++ /dev/null @@ -1,259 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - - thumb_func_start Librarians -Librarians: @ 0x0806B9F0 - push {r4, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xc] - cmp r0, #0 - bne _0806BA18 - movs r0, #1 - strb r0, [r4, #0xc] - adds r0, r4, #0 - bl sub_0807DD50 - ldr r1, _0806BA30 @ =gUnk_08114F30 - ldrb r2, [r4, #0x19] - lsrs r0, r2, #6 - adds r0, r0, r1 - ldrb r1, [r0] - lsls r1, r1, #6 - movs r0, #0x3f - ands r0, r2 - orrs r0, r1 - strb r0, [r4, #0x19] -_0806BA18: - adds r0, r4, #0 - movs r1, #0 - bl ExecuteScriptForEntity - adds r0, r4, #0 - bl HandleEntity0x82Actions - adds r0, r4, #0 - bl GetNextFrame - pop {r4, pc} - .align 2, 0 -_0806BA30: .4byte gUnk_08114F30 - - thumb_func_start sub_0806BA34 -sub_0806BA34: @ 0x0806BA34 - push {r4, r5, r6, r7, lr} - mov r7, sb - mov r6, r8 - push {r6, r7} - mov sb, r0 - adds r4, r1, #0 - ldr r0, _0806BA58 @ =0x00004912 - mov r8, r0 - movs r0, #0 - str r0, [r4, #0x14] - movs r0, #0x73 - bl CheckLocalFlag - cmp r0, #0 - beq _0806BA60 - ldr r0, _0806BA5C @ =0x00004913 - mov r8, r0 - b _0806BB06 - .align 2, 0 -_0806BA58: .4byte 0x00004912 -_0806BA5C: .4byte 0x00004913 -_0806BA60: - movs r0, #0x39 - bl GetInventoryValue - adds r7, r0, #0 - movs r0, #0x3a - bl GetInventoryValue - adds r6, r0, #0 - movs r0, #0x3b - bl GetInventoryValue - adds r5, r0, #0 - cmp r7, #1 - bne _0806BA88 - ldr r0, _0806BA84 @ =0x00004906 - mov r8, r0 - str r7, [r4, #0x14] - b _0806BAA2 - .align 2, 0 -_0806BA84: .4byte 0x00004906 -_0806BA88: - cmp r6, #1 - bne _0806BA98 - ldr r0, _0806BA94 @ =0x00004907 - mov r8, r0 - str r6, [r4, #0x14] - b _0806BAA2 - .align 2, 0 -_0806BA94: .4byte 0x00004907 -_0806BA98: - cmp r5, #1 - bne _0806BAB4 - ldr r0, _0806BAB0 @ =0x00004908 - mov r8, r0 - str r5, [r4, #0x14] -_0806BAA2: - movs r0, #0x6b - bl SetLocalFlag - movs r0, #0x6a - bl SetLocalFlag - b _0806BB06 - .align 2, 0 -_0806BAB0: .4byte 0x00004908 -_0806BAB4: - movs r0, #0x6a - bl CheckLocalFlag - cmp r0, #0 - beq _0806BB06 - movs r0, #0x6b - bl CheckLocalFlag - cmp r0, #0 - bne _0806BAD0 - ldr r0, _0806BACC @ =0x00004901 - b _0806BAD6 - .align 2, 0 -_0806BACC: .4byte 0x00004901 -_0806BAD0: - cmp r7, #0 - bne _0806BAE4 - ldr r0, _0806BAE0 @ =0x00004902 -_0806BAD6: - mov r8, r0 - movs r0, #0x6b - bl SetLocalFlag - b _0806BB06 - .align 2, 0 -_0806BAE0: .4byte 0x00004902 -_0806BAE4: - cmp r6, #0 - bne _0806BAF8 - ldr r0, _0806BAF4 @ =0x00004903 - mov r8, r0 - movs r0, #0x6d - bl SetLocalFlag - b _0806BB06 - .align 2, 0 -_0806BAF4: .4byte 0x00004903 -_0806BAF8: - cmp r5, #0 - bne _0806BB06 - ldr r0, _0806BB18 @ =0x00004904 - mov r8, r0 - movs r0, #0x70 - bl SetLocalFlag -_0806BB06: - mov r0, r8 - mov r1, sb - bl TextboxNoOverlap - pop {r3, r4} - mov r8, r3 - mov sb, r4 - pop {r4, r5, r6, r7, pc} - .align 2, 0 -_0806BB18: .4byte 0x00004904 - - thumb_func_start sub_0806BB1C -sub_0806BB1C: @ 0x0806BB1C - push {r4, r5, r6, lr} - adds r5, r0, #0 - adds r6, r1, #0 - movs r4, #1 - rsbs r4, r4, #0 - movs r0, #0x39 - bl GetInventoryValue - cmp r0, #1 - bne _0806BB34 - movs r4, #0x39 - b _0806BB52 -_0806BB34: - movs r0, #0x3a - bl GetInventoryValue - cmp r0, #1 - bne _0806BB42 - movs r4, #0x3a - b _0806BB52 -_0806BB42: - movs r0, #0x3b - bl GetInventoryValue - cmp r0, #1 - bne _0806BB4E - movs r4, #0x3b -_0806BB4E: - cmp r4, #0 - ble _0806BB78 -_0806BB52: - ldr r0, [r6, #4] - cmp r0, #0 - bne _0806BB70 - adds r0, r5, #0 - adds r1, r4, #0 - bl sub_08095BE0 - adds r0, r5, #0 - movs r1, #0xc - bl InitializeAnimation - movs r0, #0xcd - bl SoundReq - b _0806BB78 -_0806BB70: - adds r0, r4, #0 - movs r1, #2 - bl sub_0807CAA0 -_0806BB78: - pop {r4, r5, r6, pc} - .align 2, 0 - - thumb_func_start sub_0806BB7C -sub_0806BB7C: @ 0x0806BB7C - push {r4, lr} - adds r4, r1, #0 - movs r0, #0 - str r0, [r4, #0x14] - movs r0, #0x39 - bl GetInventoryValue - cmp r0, #2 - bne _0806BBAC - movs r0, #0x3a - bl GetInventoryValue - cmp r0, #2 - bne _0806BBAC - movs r0, #0x3b - bl GetInventoryValue - cmp r0, #2 - bne _0806BBAC - movs r0, #0x73 - bl SetLocalFlag - movs r0, #1 - str r0, [r4, #0x14] -_0806BBAC: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_0806BBB0 -sub_0806BBB0: @ 0x0806BBB0 - push {r4, lr} - adds r4, r0, #0 - movs r0, #0x46 - bl GetInventoryValue - cmp r0, #0 - bne _0806BBCC - movs r0, #0x29 - bl CheckGlobalFlag - rsbs r1, r0, #0 - orrs r1, r0 - lsrs r1, r1, #0x1f - b _0806BBCE -_0806BBCC: - movs r1, #2 -_0806BBCE: - ldr r0, _0806BBE0 @ =gUnk_08113078 - lsls r1, r1, #1 - adds r1, r1, r0 - ldrh r0, [r1] - adds r1, r4, #0 - bl TextboxNoOverlap - pop {r4, pc} - .align 2, 0 -_0806BBE0: .4byte gUnk_08113078 diff --git a/asm/mama.s b/asm/mama.s deleted file mode 100644 index 252b21e6..00000000 --- a/asm/mama.s +++ /dev/null @@ -1,231 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - - thumb_func_start Mama -Mama: @ 0x0806C39C - push {r4, r5, lr} - adds r4, r0, #0 - ldrb r5, [r4, #0xc] - cmp r5, #1 - beq _0806C3E2 - cmp r5, #1 - bgt _0806C3B0 - cmp r5, #0 - beq _0806C3B6 - b _0806C450 -_0806C3B0: - cmp r5, #2 - beq _0806C436 - b _0806C450 -_0806C3B6: - adds r0, r4, #0 - bl sub_0806C454 - cmp r0, #0 - beq _0806C450 - 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 - adds r0, #0x69 - strb r5, [r0] - adds r0, r4, #0 - bl sub_0807DD50 - b _0806C450 -_0806C3E2: - adds r2, r4, #0 - adds r2, #0x39 - movs r1, #0 - ldrsb r1, [r2, r1] - cmp r1, #2 - bne _0806C420 - movs r0, #0 - strb r1, [r4, #0xc] - strb r0, [r2] - adds r0, r4, #0 - adds r0, #0x58 - ldrb r0, [r0] - adds r1, r4, #0 - adds r1, #0x69 - strb r0, [r1] - ldr r1, _0806C41C @ =gPlayerEntity - adds r0, r4, #0 - bl GetFacingDirection - bl sub_0806F5A4 - adds r1, r0, #0 - adds r0, r4, #0 - bl InitializeAnimation - adds r0, r4, #0 - bl sub_0806F118 - b _0806C450 - .align 2, 0 -_0806C41C: .4byte gPlayerEntity -_0806C420: - adds r0, r4, #0 - movs r1, #0 - bl ExecuteScriptForEntity - adds r0, r4, #0 - bl HandleEntity0x82Actions - adds r0, r4, #0 - bl GetNextFrame - b _0806C450 -_0806C436: - adds r0, r4, #0 - bl UpdateFuseInteraction - cmp r0, #0 - beq _0806C450 - movs r0, #1 - strb r0, [r4, #0xc] - adds r0, r4, #0 - adds r0, #0x69 - ldrb r1, [r0] - adds r0, r4, #0 - bl InitializeAnimation -_0806C450: - pop {r4, r5, pc} - .align 2, 0 - - thumb_func_start sub_0806C454 -sub_0806C454: @ 0x0806C454 - push {r4, lr} - adds r4, r0, #0 - ldr r1, _0806C470 @ =gUnk_08113754 - bl LoadExtraSpriteData - cmp r0, #0 - beq _0806C474 - adds r0, r4, #0 - movs r1, #2 - bl sub_0805E3A0 - movs r0, #1 - b _0806C476 - .align 2, 0 -_0806C470: .4byte gUnk_08113754 -_0806C474: - movs r0, #0 -_0806C476: - pop {r4, pc} - - thumb_func_start Mama_Head -Mama_Head: @ 0x0806C478 - push {r4, lr} - adds r4, r0, #0 - adds r0, #0x5a - ldrb r0, [r0] - movs r2, #0x7f - ands r2, r0 - adds r0, r4, #0 - movs r1, #0 - bl SetExtraSpriteFrame - ldrb r2, [r4, #0x1e] - adds r0, r4, #0 - movs r1, #1 - bl SetExtraSpriteFrame - adds r0, r4, #0 - movs r1, #1 - movs r2, #0 - bl SetSpriteSubEntryOffsetData1 - adds r0, r4, #0 - bl sub_0807000C - pop {r4, pc} - - thumb_func_start sub_0806C4A8 -sub_0806C4A8: @ 0x0806C4A8 - push {r4, r5, lr} - adds r4, r0, #0 - adds r5, r1, #0 - adds r0, #0x5a - ldrb r1, [r0] - movs r0, #0x80 - ands r0, r1 - lsls r0, r0, #0x18 - lsrs r0, r0, #0x18 - cmp r0, #0 - beq _0806C4D8 - adds r0, r4, #0 - bl GetAnimationState - adds r1, r0, #0 - cmp r1, #0 - bge _0806C4CC - movs r1, #3 -_0806C4CC: - lsls r0, r1, #1 - strb r0, [r4, #0x14] - adds r0, r4, #0 - bl InitAnimationForceUpdate - movs r0, #1 -_0806C4D8: - str r0, [r5, #0x14] - pop {r4, r5, pc} - - thumb_func_start sub_0806C4DC -sub_0806C4DC: @ 0x0806C4DC - push {lr} - ldr r1, _0806C4F0 @ =gSave - ldrb r1, [r1, #8] - lsls r1, r1, #3 - ldr r2, _0806C4F4 @ =gUnk_08113760 - adds r1, r1, r2 - bl ShowNPCDialogue - pop {pc} - .align 2, 0 -_0806C4F0: .4byte gSave -_0806C4F4: .4byte gUnk_08113760 - - thumb_func_start sub_0806C4F8 -sub_0806C4F8: @ 0x0806C4F8 - 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 Mama_Fusion -Mama_Fusion: @ 0x0806C510 - push {r4, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xc] - cmp r0, #0 - bne _0806C548 - adds r0, r4, #0 - bl sub_0806C454 - cmp r0, #0 - beq _0806C54E - 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] - ldrh r0, [r4, #0x32] - subs r0, #4 - strh r0, [r4, #0x32] - adds r0, r4, #0 - movs r1, #2 - bl InitializeAnimation - b _0806C54E -_0806C548: - adds r0, r4, #0 - bl GetNextFrame -_0806C54E: - pop {r4, pc} diff --git a/asm/ministerPotho.s b/asm/ministerPotho.s deleted file mode 100644 index ea0d3c95..00000000 --- a/asm/ministerPotho.s +++ /dev/null @@ -1,251 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start MinisterPotho -MinisterPotho: @ 0x080667B0 - push {r4, lr} - adds r4, r0, #0 - ldrb r1, [r4, #0x10] - movs r0, #2 - ands r0, r1 - cmp r0, #0 - beq _080667C6 - adds r0, r4, #0 - bl sub_08066864 - b _080667DC -_080667C6: - ldr r0, _080667E0 @ =gUnk_08110644 - ldrb r1, [r4, #0xc] - lsls r1, r1, #2 - adds r1, r1, r0 - ldr r1, [r1] - adds r0, r4, #0 - bl _call_via_r1 - adds r0, r4, #0 - bl sub_0806ED78 -_080667DC: - pop {r4, pc} - .align 2, 0 -_080667E0: .4byte gUnk_08110644 - - thumb_func_start sub_080667E4 -sub_080667E4: @ 0x080667E4 - push {r4, lr} - adds r4, r0, #0 - 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] - adds r0, r4, #0 - movs r1, #2 - bl InitAnimationForceUpdate - adds r0, r4, #0 - bl sub_08078778 - pop {r4, pc} - - thumb_func_start sub_08066808 -sub_08066808: @ 0x08066808 - push {r4, lr} - adds r4, r0, #0 - movs r1, #0x28 - movs r2, #0x28 - bl sub_0806ED9C - adds r1, r0, #0 - cmp r1, #0 - bge _0806681E - movs r1, #2 - b _08066834 -_0806681E: - ldrb r0, [r4, #0xf] - cmp r0, #0 - bne _0806682A - movs r0, #0x10 - strb r0, [r4, #0xf] - b _08066834 -_0806682A: - subs r0, #1 - strb r0, [r4, #0xf] - adds r0, r4, #0 - adds r0, #0x58 - ldrb r1, [r0] -_08066834: - adds r0, r4, #0 - bl sub_0806F078 - cmp r0, #0 - bne _08066844 - adds r0, r4, #0 - bl UpdateAnimationSingleFrame -_08066844: - adds r2, r4, #0 - adds r2, #0x39 - movs r0, #0 - ldrsb r0, [r2, r0] - cmp r0, #0 - beq _08066858 - movs r1, #0 - movs r0, #2 - strb r0, [r4, #0xc] - strb r1, [r2] -_08066858: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_0806685C -sub_0806685C: @ 0x0806685C - movs r1, #1 - strb r1, [r0, #0xc] - bx lr - .align 2, 0 - - thumb_func_start sub_08066864 -sub_08066864: @ 0x08066864 - push {r4, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xc] - cmp r0, #1 - beq _080668A2 - cmp r0, #1 - bgt _08066878 - cmp r0, #0 - beq _0806687E - b _080668EC -_08066878: - cmp r0, #2 - beq _080668DE - b _080668EC -_0806687E: - 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] - adds r0, r4, #0 - bl sub_0801E99C - adds r1, r4, #0 - adds r1, #0x68 - strb r0, [r1] - adds r0, r4, #0 - bl sub_0807DD50 - b _080668EC -_080668A2: - adds r2, r4, #0 - adds r2, #0x39 - movs r1, #0 - ldrsb r1, [r2, r1] - cmp r1, #2 - bne _080668D4 - movs r0, #0 - strb r1, [r4, #0xc] - strb r0, [r2] - ldr r1, _080668D0 @ =gPlayerEntity - adds r0, r4, #0 - bl GetFacingDirection - bl sub_0806F5A4 - adds r1, r0, #0 - adds r0, r4, #0 - bl InitAnimationForceUpdate - adds r0, r4, #0 - bl sub_0806F118 - b _080668EC - .align 2, 0 -_080668D0: .4byte gPlayerEntity -_080668D4: - adds r0, r4, #0 - movs r1, #0 - bl sub_0807DD94 - b _080668EC -_080668DE: - adds r0, r4, #0 - bl UpdateFuseInteraction - cmp r0, #0 - beq _080668EC - movs r0, #1 - strb r0, [r4, #0xc] -_080668EC: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_080668F0 -sub_080668F0: @ 0x080668F0 - push {r4, lr} - adds r4, r0, #0 - bl sub_0801E99C - adds r1, r0, #0 - adds r0, r4, #0 - bl sub_08078784 - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_08066904 -sub_08066904: @ 0x08066904 - push {r4, lr} - adds r4, r0, #0 - movs r0, #2 - bl CheckGlobalFlag - cmp r0, #0 - bne _08066916 - movs r1, #0 - b _08066932 -_08066916: - movs r0, #2 - bl GetInventoryValue - cmp r0, #0 - bne _08066924 - movs r1, #1 - b _08066932 -_08066924: - movs r0, #3 - bl GetInventoryValue - movs r1, #3 - cmp r0, #0 - bne _08066932 - movs r1, #2 -_08066932: - ldr r0, _08066944 @ =gUnk_08110650 - lsls r1, r1, #1 - adds r1, r1, r0 - ldrh r0, [r1] - adds r1, r4, #0 - bl TextboxNoOverlap - pop {r4, pc} - .align 2, 0 -_08066944: .4byte gUnk_08110650 - - thumb_func_start MinisterPotho_Fusion -MinisterPotho_Fusion: @ 0x08066948 - push {lr} - adds r2, r0, #0 - ldrb r0, [r2, #0xc] - cmp r0, #0 - bne _0806696E - 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, #6 - bl InitAnimationForceUpdate - b _08066974 -_0806696E: - adds r0, r2, #0 - bl UpdateAnimationSingleFrame -_08066974: - pop {pc} - .align 2, 0 diff --git a/asm/mountainMinish.s b/asm/mountainMinish.s deleted file mode 100644 index 3b8e7e7f..00000000 --- a/asm/mountainMinish.s +++ /dev/null @@ -1,587 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - - thumb_func_start MountainMinish -MountainMinish: @ 0x08067E2C - push {r4, lr} - adds r4, r0, #0 - ldrb r1, [r4, #0x10] - movs r0, #2 - ands r0, r1 - cmp r0, #0 - bne _08067E58 - ldr r0, _08067E54 @ =gUnk_08111368 - ldrb r1, [r4, #0xc] - lsls r1, r1, #2 - adds r1, r1, r0 - ldr r1, [r1] - adds r0, r4, #0 - bl _call_via_r1 - adds r0, r4, #0 - bl sub_0806ED78 - b _08067E5E - .align 2, 0 -_08067E54: .4byte gUnk_08111368 -_08067E58: - adds r0, r4, #0 - bl sub_08067EF0 -_08067E5E: - pop {r4, pc} - - thumb_func_start sub_08067E60 -sub_08067E60: @ 0x08067E60 - push {r4, lr} - adds r4, r0, #0 - ldr r1, _08067E84 @ =gUnk_08111358 - bl LoadExtraSpriteData - cmp r0, #0 - beq _08067E80 - movs r0, #1 - strb r0, [r4, #0xc] - adds r0, r4, #0 - bl sub_08078778 - adds r0, r4, #0 - movs r1, #2 - bl InitializeAnimation -_08067E80: - pop {r4, pc} - .align 2, 0 -_08067E84: .4byte gUnk_08111358 - - thumb_func_start sub_08067E88 -sub_08067E88: @ 0x08067E88 - push {r4, lr} - adds r4, r0, #0 - movs r1, #0x28 - movs r2, #0x28 - bl sub_0806ED9C - adds r1, r0, #0 - cmp r1, #0 - bge _08067E9E - movs r1, #2 - b _08067EB4 -_08067E9E: - ldrb r0, [r4, #0xf] - cmp r0, #0 - bne _08067EAA - movs r0, #0x10 - strb r0, [r4, #0xf] - b _08067EB4 -_08067EAA: - subs r0, #1 - strb r0, [r4, #0xf] - adds r0, r4, #0 - adds r0, #0x58 - ldrb r1, [r0] -_08067EB4: - adds r0, r4, #0 - bl sub_0806F078 - cmp r0, #0 - bne _08067EC4 - adds r0, r4, #0 - bl GetNextFrame -_08067EC4: - adds r1, r4, #0 - adds r1, #0x39 - movs r0, #0 - ldrsb r0, [r1, r0] - cmp r0, #0 - beq _08067EE4 - movs r0, #0 - strb r0, [r1] - movs r0, #2 - strb r0, [r4, #0xc] - ldrb r0, [r4, #0xe] - movs r1, #0x90 - lsls r1, r1, #5 - adds r0, r0, r1 - bl TextboxNoOverlapFollow -_08067EE4: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_08067EE8 -sub_08067EE8: @ 0x08067EE8 - movs r1, #1 - strb r1, [r0, #0xc] - bx lr - .align 2, 0 - - thumb_func_start sub_08067EF0 -sub_08067EF0: @ 0x08067EF0 - push {r4, r5, r6, r7, lr} - adds r5, r0, #0 - ldrb r4, [r5, #0xc] - cmp r4, #1 - beq _08067F58 - cmp r4, #1 - bgt _08067F04 - cmp r4, #0 - beq _08067F10 - b _0806801A -_08067F04: - cmp r4, #2 - beq _08067FDC - cmp r4, #3 - bne _08067F0E - b _08068000 -_08067F0E: - b _0806801A -_08067F10: - ldr r1, _08067F50 @ =gUnk_08111358 - adds r0, r5, #0 - bl LoadExtraSpriteData - cmp r0, #0 - bne _08067F1E - b _080680F0 -_08067F1E: - 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, #0xa] - 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 - ldr r1, _08067F54 @ =gUnk_08111304 - ldrb r0, [r5, #0xb] - adds r0, r0, r1 - ldrb r1, [r0] - b _08067FF2 - .align 2, 0 -_08067F50: .4byte gUnk_08111358 -_08067F54: .4byte gUnk_08111304 -_08067F58: - adds r4, r5, #0 - adds r4, #0x39 - movs r0, #0 - ldrsb r0, [r4, r0] - cmp r0, #2 - bne _08067F98 - movs r1, #0 - movs r0, #3 - strb r0, [r5, #0xc] - strb r1, [r4] - adds r0, r5, #0 - adds r0, #0x58 - ldrb r0, [r0] - adds r1, r5, #0 - adds r1, #0x69 - strb r0, [r1] - ldr r1, _08067F94 @ =gPlayerEntity - adds r0, r5, #0 - bl GetFacingDirection - bl sub_0806F5A4 - adds r1, r0, #0 - adds r0, r5, #0 - bl InitializeAnimation - adds r0, r5, #0 - bl sub_0806F118 - b _0806801A - .align 2, 0 -_08067F94: .4byte gPlayerEntity -_08067F98: - adds r0, r5, #0 - movs r1, #0 - bl ExecuteScriptForEntity - adds r0, r5, #0 - bl HandleEntity0x82Actions - ldrb r0, [r5, #0xb] - cmp r0, #3 - bne _0806801A - movs r0, #0 - ldrsb r0, [r4, r0] - cmp r0, #0 - beq _0806801A - movs r1, #0 - movs r0, #2 - strb r0, [r5, #0xc] - strb r1, [r4] - ldr r1, _08067FD8 @ =gPlayerEntity - adds r0, r5, #0 - bl GetFacingDirection - bl sub_0806F5A4 - adds r1, r0, #0 - adds r0, r5, #0 - bl InitializeAnimation - adds r0, r5, #0 - bl sub_08068190 - b _0806801A - .align 2, 0 -_08067FD8: .4byte gPlayerEntity -_08067FDC: - ldr r0, _08067FFC @ =gTextBox - ldrb r1, [r0] - movs r0, #0x7f - ands r0, r1 - cmp r0, #0 - bne _0806801A - movs r0, #1 - strb r0, [r5, #0xc] - ldrb r1, [r5, #0x14] - lsrs r1, r1, #1 - adds r1, #4 -_08067FF2: - adds r0, r5, #0 - bl InitializeAnimation - b _0806801A - .align 2, 0 -_08067FFC: .4byte gTextBox -_08068000: - adds r0, r5, #0 - bl UpdateFuseInteraction - cmp r0, #0 - beq _0806801A - movs r0, #1 - strb r0, [r5, #0xc] - adds r0, r5, #0 - adds r0, #0x69 - ldrb r1, [r0] - adds r0, r5, #0 - bl InitializeAnimation -_0806801A: - adds r0, r5, #0 - adds r0, #0x59 - ldrb r1, [r0] - adds r7, r0, #0 - cmp r1, #0xff - beq _0806802C - adds r0, r5, #0 - bl GetNextFrame -_0806802C: - adds r1, r5, #0 - adds r1, #0x5b - ldrb r2, [r1] - movs r0, #1 - ands r0, r2 - adds r6, r1, #0 - cmp r0, #0 - beq _0806807E - movs r0, #0xfe - ands r0, r2 - strb r0, [r6] - adds r0, r5, #0 - bl sub_080040A8 - cmp r0, #0 - bne _08068068 - ldr r4, _08068064 @ =gUnk_0811137A - bl Random - movs r1, #3 - bl __modsi3 - lsls r0, r0, #1 - adds r0, r0, r4 - ldrh r0, [r0] - bl SoundReq - b _0806807E - .align 2, 0 -_08068064: .4byte gUnk_0811137A -_08068068: - ldr r4, _080680F4 @ =gUnk_08111374 - bl Random - movs r1, #3 - bl __modsi3 - lsls r0, r0, #1 - adds r0, r0, r4 - ldrh r0, [r0] - bl EnqueueSFX -_0806807E: - ldrb r1, [r6] - movs r0, #2 - ands r0, r1 - cmp r0, #0 - beq _080680A8 - movs r0, #0xfd - ands r0, r1 - strb r0, [r6] - adds r0, r5, #0 - movs r1, #4 - movs r2, #0 - bl CreateFx - adds r1, r0, #0 - cmp r1, #0 - beq _080680A8 - ldr r3, _080680F8 @ =0xFFE80000 - adds r0, r5, #0 - movs r2, #0 - bl PositionRelative -_080680A8: - ldrb r1, [r6] - movs r0, #4 - ands r0, r1 - cmp r0, #0 - beq _080680D2 - movs r0, #0xfb - ands r0, r1 - strb r0, [r6] - adds r0, r5, #0 - movs r1, #0x3d - movs r2, #0x20 - bl CreateFx - adds r1, r0, #0 - cmp r1, #0 - beq _080680D2 - ldr r2, _080680FC @ =0xFFEC0000 - ldr r3, _08068100 @ =0xFFF60000 - adds r0, r5, #0 - bl PositionRelative -_080680D2: - ldrb r1, [r6] - movs r0, #8 - ands r0, r1 - cmp r0, #0 - beq _080680F0 - movs r0, #0xf7 - ands r0, r1 - strb r0, [r6] - bl Random - movs r1, #0x1f - ands r0, r1 - ldrb r1, [r7] - adds r0, r0, r1 - strb r0, [r7] -_080680F0: - pop {r4, r5, r6, r7, pc} - .align 2, 0 -_080680F4: .4byte gUnk_08111374 -_080680F8: .4byte 0xFFE80000 -_080680FC: .4byte 0xFFEC0000 -_08068100: .4byte 0xFFF60000 - - thumb_func_start sub_08068104 -sub_08068104: @ 0x08068104 - 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 sub_0806811C -sub_0806811C: @ 0x0806811C - push {r4, r5, r6, r7, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xe] - adds r7, r0, #0 - cmp r7, #0 - beq _0806812E - subs r0, #1 - strb r0, [r4, #0xe] - b _0806818A -_0806812E: - movs r0, #2 - strb r0, [r4, #0xe] - adds r0, r4, #0 - movs r1, #0x20 - movs r2, #0x20 - bl sub_0806EDD8 - adds r3, r0, #0 - cmp r3, #0 - bge _08068148 - ldrb r0, [r4, #0xa] - strb r0, [r4, #0x14] - lsls r3, r0, #2 -_08068148: - ldrb r0, [r4, #0x14] - lsrs r0, r0, #1 - lsls r0, r0, #5 - asrs r1, r3, #1 - lsls r1, r1, #1 - ldr r2, _0806818C @ =gUnk_08111284 - adds r1, r1, r2 - adds r0, r0, r1 - ldrb r6, [r0] - ldrb r5, [r0, #1] - movs r0, #0x80 - ands r0, r5 - cmp r0, #0 - beq _0806816C - adds r0, r3, #0 - bl sub_0806F5B0 - strb r0, [r4, #0x14] -_0806816C: - movs r0, #0x40 - orrs r6, r0 - adds r0, r4, #0 - adds r0, #0x5a - strb r6, [r0] - movs r0, #0x7f - ands r5, r0 - strb r5, [r4, #0x1e] - adds r0, r4, #0 - adds r0, #0x58 - strb r7, [r0] - adds r1, r4, #0 - adds r1, #0x59 - movs r0, #0xff - strb r0, [r1] -_0806818A: - pop {r4, r5, r6, r7, pc} - .align 2, 0 -_0806818C: .4byte gUnk_08111284 - - thumb_func_start sub_08068190 -sub_08068190: @ 0x08068190 - push {r4, r5, r6, lr} - adds r6, r0, #0 - ldrb r5, [r6, #0xb] - cmp r5, #8 - bls _0806819C - movs r5, #8 -_0806819C: - movs r0, #0x7e - bl CheckLocalFlag - rsbs r1, r0, #0 - orrs r1, r0 - lsrs r4, r1, #0x1f - movs r0, #0x41 - bl GetInventoryValue - cmp r0, #0 - beq _080681B4 - movs r4, #2 -_080681B4: - movs r0, #2 - bl GetInventoryValue - cmp r0, #0 - beq _080681C0 - movs r4, #3 -_080681C0: - ldr r2, _080681D4 @ =gUnk_0811130E - lsls r0, r4, #1 - lsls r1, r5, #3 - adds r0, r0, r1 - adds r0, r0, r2 - ldrh r0, [r0] - adds r1, r6, #0 - bl TextboxNoOverlap - pop {r4, r5, r6, pc} - .align 2, 0 -_080681D4: .4byte gUnk_0811130E - - thumb_func_start sub_080681D8 -sub_080681D8: @ 0x080681D8 - ldr r1, [r1, #4] - strb r1, [r0, #0xa] - bx lr - .align 2, 0 - - thumb_func_start MountainMinish_Head -MountainMinish_Head: @ 0x080681E0 - push {r4, r5, lr} - adds r5, r0, #0 - adds r0, #0x5a - ldrb r4, [r0] - movs r0, #0x81 - rsbs r0, r0, #0 - ands r4, r0 - ldrb r2, [r5, #0x1e] - adds r0, r5, #0 - movs r1, #1 - bl SetExtraSpriteFrame - movs r0, #0x40 - ands r0, r4 - cmp r0, #0 - beq _08068226 - movs r0, #0xe1 - rsbs r0, r0, #0 - ands r4, r0 - adds r2, r4, #4 - adds r0, r5, #0 - movs r1, #0 - bl SetExtraSpriteFrame - adds r0, r5, #0 - movs r1, #2 - movs r2, #0xff - bl SetExtraSpriteFrame - adds r0, r5, #0 - movs r1, #1 - movs r2, #0 - bl SetSpriteSubEntryOffsetData1 - b _08068268 -_08068226: - movs r0, #0x20 - ands r0, r4 - cmp r0, #0 - beq _08068254 - adds r0, r5, #0 - movs r1, #0 - movs r2, #0xff - bl SetExtraSpriteFrame - movs r0, #0xe1 - rsbs r0, r0, #0 - ands r4, r0 - adds r0, r5, #0 - movs r1, #2 - adds r2, r4, #0 - bl SetExtraSpriteFrame - adds r0, r5, #0 - movs r1, #1 - movs r2, #2 - bl SetSpriteSubEntryOffsetData1 - b _08068268 -_08068254: - adds r0, r5, #0 - movs r1, #0 - movs r2, #0xff - bl SetExtraSpriteFrame - adds r0, r5, #0 - movs r1, #2 - movs r2, #0xff - bl SetExtraSpriteFrame -_08068268: - adds r0, r5, #0 - bl sub_0807000C - pop {r4, r5, pc} - - thumb_func_start MountainMinish_Fusion -MountainMinish_Fusion: @ 0x08068270 - push {r4, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xc] - cmp r0, #0 - bne _080682A8 - ldr r1, _080682A4 @ =gUnk_08111358 - adds r0, r4, #0 - bl LoadExtraSpriteData - cmp r0, #0 - beq _080682AE - 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, #6 - bl InitializeAnimation - b _080682AE - .align 2, 0 -_080682A4: .4byte gUnk_08111358 -_080682A8: - adds r0, r4, #0 - bl GetNextFrame -_080682AE: - pop {r4, pc} diff --git a/asm/non_matching/CreateItemDrop.inc b/asm/non_matching/CreateItemDrop.inc index d84a8817..1ade408f 100644 --- a/asm/non_matching/CreateItemDrop.inc +++ b/asm/non_matching/CreateItemDrop.inc @@ -1,5 +1,4 @@ .syntax unified -CreateItemDrop: @ 0x08054754 push {r4, r5, r6, lr} adds r6, r0, #0 adds r4, r1, #0 diff --git a/asm/non_matching/ForceEquipItem.inc b/asm/non_matching/ForceEquipItem.inc index e12f3ea5..82b1212c 100644 --- a/asm/non_matching/ForceEquipItem.inc +++ b/asm/non_matching/ForceEquipItem.inc @@ -1,7 +1,5 @@ .syntax unified .text - -ForceEquipItem: @ 0x08054414 push {r4, r5, r6, r7, lr} adds r4, r0, #0 subs r0, r4, #1 diff --git a/asm/non_matching/bigGoron/sub_0806D02C.inc b/asm/non_matching/bigGoron/sub_0806D02C.inc new file mode 100644 index 00000000..61ecbbf4 --- /dev/null +++ b/asm/non_matching/bigGoron/sub_0806D02C.inc @@ -0,0 +1,74 @@ + .syntax unified + push {lr} + bl sub_0806D164 + ldr r2, _0806D0A8 @ =gScreen + ldrh r1, [r2] + movs r3, #0x80 + lsls r3, r3, #7 + adds r0, r3, #0 + orrs r0, r1 + strh r0, [r2] + adds r1, r2, #0 + adds r1, #0x60 + ldr r0, _0806D0AC @ =0x00003F3F + strh r0, [r1] + adds r1, #2 + movs r0, #0x3d + strh r0, [r1] + movs r1, #0x16 + ldrsh r0, [r2, r1] + rsbs r0, r0, #0 + movs r3, #0x80 + lsls r3, r3, #1 + adds r1, r0, r3 + cmp r0, #0 + bge _0806D060 + movs r0, #0 +_0806D060: + cmp r0, #0xf0 + ble _0806D066 + movs r0, #0xf0 +_0806D066: + cmp r1, #0 + bge _0806D06C + movs r1, #0 +_0806D06C: + cmp r1, #0xf0 + ble _0806D072 + movs r1, #0xf0 +_0806D072: + lsls r0, r0, #8 + orrs r0, r1 + adds r1, r2, #0 + adds r1, #0x5a + strh r0, [r1] + movs r1, #0x18 + ldrsh r0, [r2, r1] + rsbs r0, r0, #0 + adds r1, r0, r3 + cmp r0, #0 + bge _0806D08A + movs r0, #0 +_0806D08A: + cmp r0, #0xa0 + ble _0806D090 + movs r0, #0xa0 +_0806D090: + cmp r1, #0 + bge _0806D096 + movs r1, #0 +_0806D096: + cmp r1, #0xa0 + ble _0806D09C + movs r1, #0xa0 +_0806D09C: + lsls r0, r0, #8 + orrs r0, r1 + adds r1, r2, #0 + adds r1, #0x5e + strh r0, [r1] + pop {pc} + .align 2, 0 +_0806D0A8: .4byte gScreen +_0806D0AC: .4byte 0x00003F3F + .syntax divided diff --git a/asm/non_matching/bigGoron/sub_0806D138.inc b/asm/non_matching/bigGoron/sub_0806D138.inc new file mode 100644 index 00000000..d519da48 --- /dev/null +++ b/asm/non_matching/bigGoron/sub_0806D138.inc @@ -0,0 +1,23 @@ + .syntax unified + push {r4, r5, r6, lr} + adds r3, r0, #0 + movs r4, #0 + ldr r2, _0806D15C @ =0x040000D4 + ldr r6, _0806D160 @ =0x80000020 + movs r5, #0x80 + lsls r5, r5, #1 +_0806D146: + str r3, [r2] + str r1, [r2, #4] + str r6, [r2, #8] + ldr r0, [r2, #8] + adds r4, #1 + adds r3, #0x40 + adds r1, r1, r5 + cmp r4, #0x1f + bls _0806D146 + pop {r4, r5, r6, pc} + .align 2, 0 +_0806D15C: .4byte 0x040000D4 +_0806D160: .4byte 0x80000020 + .syntax divided diff --git a/asm/non_matching/bigGoron/sub_0806D164.inc b/asm/non_matching/bigGoron/sub_0806D164.inc new file mode 100644 index 00000000..118f34fe --- /dev/null +++ b/asm/non_matching/bigGoron/sub_0806D164.inc @@ -0,0 +1,52 @@ + .syntax unified + push {r4, r5, r6, r7, lr} + ldr r5, _0806D1B8 @ =gRoomControls + movs r1, #0xa + ldrsh r2, [r5, r1] + movs r3, #0x2e + ldrsh r1, [r0, r3] + subs r2, r2, r1 + adds r2, #0xa0 + ldr r4, _0806D1BC @ =gScreen + movs r3, #0xf + adds r1, r2, #0 + ands r1, r3 + strh r1, [r4, #0x16] + ldrh r1, [r5, #0xc] + ldrh r0, [r0, #0x32] + subs r1, r1, r0 + adds r1, #0xb0 + strh r1, [r4, #0x18] + ldr r3, _0806D1C0 @ =gUnk_02006F00 + ldr r0, _0806D1C4 @ =0xFFFFC000 + adds r6, r3, r0 + movs r5, #0x20 + lsrs r2, r2, #4 + lsls r2, r2, #2 + adds r3, r2, r3 + adds r7, r4, #0 + ldr r1, _0806D1C8 @ =0x040000D4 + ldr r4, _0806D1CC @ =0x80000020 + movs r2, #0x80 + lsls r2, r2, #1 +_0806D1A0: + str r3, [r1] + str r6, [r1, #4] + str r4, [r1, #8] + ldr r0, [r1, #8] + adds r3, r3, r2 + adds r6, #0x40 + subs r5, #1 + cmp r5, #0 + bne _0806D1A0 + movs r0, #1 + strh r0, [r7, #0x1a] + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0806D1B8: .4byte gRoomControls +_0806D1BC: .4byte gScreen +_0806D1C0: .4byte gUnk_02006F00 +_0806D1C4: .4byte 0xFFFFC000 +_0806D1C8: .4byte 0x040000D4 +_0806D1CC: .4byte 0x80000020 + .syntax divided diff --git a/asm/non_matching/bigGoron/sub_0806D1D0.inc b/asm/non_matching/bigGoron/sub_0806D1D0.inc new file mode 100644 index 00000000..07de3c4b --- /dev/null +++ b/asm/non_matching/bigGoron/sub_0806D1D0.inc @@ -0,0 +1,87 @@ + .syntax unified + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r5, [r4, #0xc] + cmp r5, #0 + bne _0806D21A + bl sub_0806D00C + cmp r0, #0 + bne _0806D1E6 + bl DeleteThisEntity +_0806D1E6: + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r0, [r4, #0x1b] + movs r1, #0xc0 + orrs r0, r1 + strb r0, [r4, #0x1b] + ldrb r0, [r4, #0x19] + orrs r0, r1 + strb r0, [r4, #0x19] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r0, [r2] + movs r1, #7 + orrs r0, r1 + strb r0, [r2] + ldrb r0, [r4, #0x18] + movs r1, #3 + orrs r0, r1 + strb r0, [r4, #0x18] + strb r5, [r4, #0x1e] + movs r0, #0x1e + strb r0, [r4, #0xe] + adds r0, r4, #0 + movs r1, #2 + bl sub_0805E3A0 +_0806D21A: + ldrb r0, [r4, #0xd] + cmp r0, #1 + beq _0806D25A + cmp r0, #1 + ble _0806D228 + cmp r0, #2 + beq _0806D25E +_0806D228: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + movs r5, #0xff + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0806D24A + bl Random + movs r1, #0x7f + ands r0, r1 + adds r0, #0x30 + strb r0, [r4, #0xe] + movs r0, #8 + strb r0, [r4, #0xf] + movs r0, #1 + strb r0, [r4, #0x1e] +_0806D24A: + ldrb r0, [r4, #0xf] + cmp r0, #0 + beq _0806D268 + subs r0, #1 + strb r0, [r4, #0xf] + ands r0, r5 + cmp r0, #0 + bne _0806D268 +_0806D25A: + strb r0, [r4, #0x1e] + b _0806D268 +_0806D25E: + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r4, #0x18] +_0806D268: + ldr r0, [r4, #0x50] + ldrh r1, [r0, #0x2e] + strh r1, [r4, #0x2e] + ldrh r0, [r0, #0x32] + strh r0, [r4, #0x32] + pop {r4, r5, pc} + .syntax divided diff --git a/asm/non_matching/bigGoron/sub_0806D520.inc b/asm/non_matching/bigGoron/sub_0806D520.inc new file mode 100644 index 00000000..f02c64da --- /dev/null +++ b/asm/non_matching/bigGoron/sub_0806D520.inc @@ -0,0 +1,96 @@ + .syntax unified + push {r4, lr} + adds r4, r0, #0 + adds r3, r1, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _0806D540 + movs r0, #1 + strb r0, [r4, #0xc] + ldr r0, _0806D5B0 @ =gUnk_08114100 + adds r0, r3, r0 + ldrb r0, [r0] + adds r0, #6 + strb r0, [r4, #0xf] + strb r0, [r4, #0x1e] + movs r0, #8 + strb r0, [r4, #0xe] +_0806D540: + ldr r0, [r4, #0x50] + ldrh r1, [r0, #0x2e] + strh r1, [r4, #0x2e] + ldrh r1, [r0, #0x32] + strh r1, [r4, #0x32] + adds r0, #0x62 + ldrb r0, [r0] + adds r1, r4, #0 + adds r1, #0x62 + strb r0, [r1] + ldr r0, [r4, #0x50] + adds r0, #0x63 + ldrb r0, [r0] + adds r1, #1 + strb r0, [r1] + ldr r0, [r4, #0x50] + ldrb r1, [r0, #0x1b] + lsrs r1, r1, #6 + lsls r1, r1, #6 + ldrb r2, [r4, #0x1b] + movs r0, #0x3f + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #0x1b] + ldrb r0, [r4, #0xd] + cmp r0, #0 + bne _0806D590 + movs r1, #0x2e + ldrsh r0, [r4, r1] + lsls r1, r3, #4 + subs r0, r0, r1 + adds r0, #0xc + movs r2, #0x32 + ldrsh r1, [r4, r2] + movs r2, #0x18 + movs r3, #0x40 + bl CheckPlayerProximity + cmp r0, #0 + beq _0806D5B4 +_0806D590: + ldrb r1, [r4, #0x1e] + ldrb r0, [r4, #0xf] + adds r0, #2 + cmp r1, r0 + bge _0806D5D0 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0806D5D0 + movs r0, #8 + strb r0, [r4, #0xe] + ldrb r0, [r4, #0x1e] + adds r0, #1 + b _0806D5CE + .align 2, 0 +_0806D5B0: .4byte gUnk_08114100 +_0806D5B4: + ldrb r1, [r4, #0x1e] + ldrb r0, [r4, #0xf] + cmp r1, r0 + bls _0806D5D0 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0806D5D0 + movs r0, #8 + strb r0, [r4, #0xe] + subs r0, r1, #1 +_0806D5CE: + strb r0, [r4, #0x1e] +_0806D5D0: + pop {r4, pc} + .align 2, 0 + .syntax divided diff --git a/asm/non_matching/bigGoron/sub_0806D5D4.inc b/asm/non_matching/bigGoron/sub_0806D5D4.inc new file mode 100644 index 00000000..82655104 --- /dev/null +++ b/asm/non_matching/bigGoron/sub_0806D5D4.inc @@ -0,0 +1,21 @@ + .syntax unified + push {lr} + bl sub_08053500 + movs r0, #0xd + bl IsItemEquipped + adds r1, r0, #0 + cmp r1, #2 + beq _0806D5F0 + ldr r0, _0806D5FC @ =gSave + adds r0, #0xb4 + adds r0, r1, r0 + movs r1, #0 + strb r1, [r0] +_0806D5F0: + movs r0, #0xd + movs r1, #0 + bl sub_0807CAA0 + pop {pc} + .align 2, 0 +_0806D5FC: .4byte gSave + .syntax divided diff --git a/asm/non_matching/bigGoron/sub_0806D67C.inc b/asm/non_matching/bigGoron/sub_0806D67C.inc new file mode 100644 index 00000000..0f5a1113 --- /dev/null +++ b/asm/non_matching/bigGoron/sub_0806D67C.inc @@ -0,0 +1,46 @@ + .syntax unified + push {r4, r5, r6, lr} + adds r5, r0, #0 + ldr r4, _0806D6CC @ =gUnk_08114104 + movs r0, #0 + ldrsb r0, [r4, r0] + movs r1, #1 + rsbs r1, r1, #0 + cmp r0, r1 + beq _0806D6CA + adds r6, r1, #0 +_0806D690: + movs r1, #0 + ldrsb r1, [r4, r1] + adds r0, r5, #0 + movs r2, #0x40 + bl CreateFx + adds r1, r0, #0 + cmp r1, #0 + beq _0806D6C0 + movs r0, #1 + ldrsb r0, [r4, r0] + ldrh r2, [r1, #0x2e] + adds r0, r0, r2 + strh r0, [r1, #0x2e] + movs r0, #2 + ldrsb r0, [r4, r0] + ldrh r2, [r1, #0x32] + adds r0, r0, r2 + strh r0, [r1, #0x32] + ldrb r0, [r4, #3] + strb r0, [r1, #0x15] + movs r0, #0x80 + lsls r0, r0, #1 + strh r0, [r1, #0x24] +_0806D6C0: + adds r4, #4 + movs r0, #0 + ldrsb r0, [r4, r0] + cmp r0, r6 + bne _0806D690 +_0806D6CA: + pop {r4, r5, r6, pc} + .align 2, 0 +_0806D6CC: .4byte gUnk_08114104 + .syntax divided diff --git a/asm/non_matching/brocco/sub_08063584.inc b/asm/non_matching/brocco/sub_08063584.inc new file mode 100644 index 00000000..25e669f5 --- /dev/null +++ b/asm/non_matching/brocco/sub_08063584.inc @@ -0,0 +1,64 @@ + .syntax unified + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x20 + movs r2, #0x20 + bl sub_0806ED9C + cmp r0, #0 + blt _080635B2 + ldrb r0, [r4, #0xf] + cmp r0, #0 + bne _080635B8 + bl Random + movs r1, #0x3f + ands r1, r0 + cmp r1, #0 + bne _080635B2 + movs r0, #1 + strb r0, [r4, #0xf] + adds r0, r4, #0 + movs r1, #0 + bl InitAnimationForceUpdate +_080635B2: + ldrb r0, [r4, #0xf] + cmp r0, #0 + beq _080635D0 +_080635B8: + adds r0, r4, #0 + bl UpdateAnimationSingleFrame + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080635D0 + movs r0, #0 + strb r0, [r4, #0xf] +_080635D0: + adds r0, r4, #0 + adds r0, #0x39 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #0 + beq _080635FC + movs r0, #2 + strb r0, [r4, #0xc] + adds r0, r4, #0 + bl GetAnimationState + adds r1, r0, #0 + adds r1, #4 + adds r0, r4, #0 + bl InitAnimationForceUpdate + ldrb r0, [r4, #0xe] + ldr r1, _08063604 @ =0x00000A01 + adds r0, r0, r1 + bl TextboxNoOverlapFollow +_080635FC: + adds r0, r4, #0 + bl sub_0806ED78 + pop {r4, pc} + .align 2, 0 +_08063604: .4byte 0x00000A01 + .syntax divided diff --git a/asm/non_matching/button/sub_08081E6C.inc b/asm/non_matching/button/sub_08081E6C.inc index d5774f1c..179e601a 100644 --- a/asm/non_matching/button/sub_08081E6C.inc +++ b/asm/non_matching/button/sub_08081E6C.inc @@ -1,5 +1,4 @@ -sub_08081E6C: @ 0x08081E6C push {r4, r5, r6, r7, lr} add r4, r0, #0 add r0, #0x74 diff --git a/asm/non_matching/castleMaid/sub_08064570.inc b/asm/non_matching/castleMaid/sub_08064570.inc new file mode 100644 index 00000000..abcae064 --- /dev/null +++ b/asm/non_matching/castleMaid/sub_08064570.inc @@ -0,0 +1,105 @@ + .syntax unified + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r5, [r4, #0xc] + cmp r5, #1 + beq _080645EA + cmp r5, #1 + bgt _08064584 + cmp r5, #0 + beq _0806458A + b _0806463C +_08064584: + cmp r5, #2 + beq _0806462C + b _0806463C +_0806458A: + ldrb r1, [r4, #9] + movs r0, #0x16 + eors r1, r0 + rsbs r0, r1, #0 + orrs r0, r1 + lsrs r0, r0, #0x1f + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #2 + ldr r0, _080645D0 @ =gUnk_0810F874 + adds r1, r1, r0 + adds r0, r4, #0 + bl LoadExtraSpriteData + cmp r0, #0 + beq _0806463C + ldrb r0, [r4, #0xc] + adds r0, #1 + strb r0, [r4, #0xc] + strb r5, [r4, #0xe] + adds r0, r4, #0 + bl sub_0805ACC0 + adds r2, r0, #0 + cmp r2, #0 + bne _080645D4 + ldrh r0, [r4, #0x2e] + adds r1, r4, #0 + adds r1, #0x6c + strh r0, [r1] + ldrh r0, [r4, #0x32] + adds r1, #2 + strh r0, [r1] + b _080645E0 + .align 2, 0 +_080645D0: .4byte gUnk_0810F874 +_080645D4: + lsrs r1, r2, #0x10 + adds r0, r4, #0 + adds r0, #0x6c + strh r1, [r0] + adds r0, #2 + strh r2, [r0] +_080645E0: + movs r0, #0 + str r0, [r4, #0x68] + adds r0, r4, #0 + bl sub_0807DD50 +_080645EA: + adds r0, r4, #0 + movs r1, #0 + bl sub_0807DD94 + adds r2, r4, #0 + adds r2, #0x39 + movs r0, #0 + ldrsb r0, [r2, r0] + cmp r0, #0 + beq _0806463C + ldrb r0, [r4, #0xc] + adds r0, #1 + movs r1, #0 + strb r0, [r4, #0xc] + strb r1, [r2] + ldr r1, _08064628 @ =gPlayerEntity + adds r0, r4, #0 + bl GetFacingDirection + bl sub_0806F5A4 + adds r1, r0, #0 + adds r0, r4, #0 + bl InitializeAnimation + ldr r0, [r4, #0x68] + cmp r0, #0 + beq _0806463C + bl _call_via_r0 + b _0806463C + .align 2, 0 +_08064628: .4byte gPlayerEntity +_0806462C: + ldr r0, _08064640 @ =gTextBox + ldrb r1, [r0] + movs r0, #0x7f + ands r0, r1 + cmp r0, #0 + bne _0806463C + movs r0, #1 + strb r0, [r4, #0xc] +_0806463C: + pop {r4, r5, pc} + .align 2, 0 +_08064640: .4byte gTextBox + .syntax divided diff --git a/asm/non_matching/castleMaid/sub_080646A4.inc b/asm/non_matching/castleMaid/sub_080646A4.inc new file mode 100644 index 00000000..a14b2422 --- /dev/null +++ b/asm/non_matching/castleMaid/sub_080646A4.inc @@ -0,0 +1,127 @@ + .syntax unified + push {r4, r5, r6, lr} + adds r4, r0, #0 + adds r5, r1, #0 + ldrb r0, [r5, #0x18] + cmp r0, #0 + bne _08064710 + adds r0, #1 + strb r0, [r5, #0x18] + bl Random + movs r1, #0x3f + ands r0, r1 + adds r0, #0x20 + strh r0, [r5, #0x12] + bl Random + adds r1, r0, #0 + movs r0, #0x18 + ands r1, r0 + ldrb r0, [r4, #0x15] + cmp r0, #8 + beq _080646EC + cmp r0, #8 + bgt _080646DA + cmp r0, #0 + beq _080646E4 + b _08064702 +_080646DA: + cmp r0, #0x10 + beq _080646F4 + cmp r0, #0x18 + beq _080646FC + b _08064702 +_080646E4: + cmp r1, #0x10 + bne _08064702 + movs r1, #8 + b _08064702 +_080646EC: + cmp r1, #0x18 + bne _08064702 + movs r1, #0x10 + b _08064702 +_080646F4: + cmp r1, #0 + bne _08064702 + movs r1, #0x18 + b _08064702 +_080646FC: + cmp r1, #8 + bne _08064702 + movs r1, #0 +_08064702: + strb r1, [r4, #0x15] + adds r0, r1, #0 + bl sub_0806F5B0 + strb r0, [r4, #0x14] + movs r0, #0x80 + strh r0, [r4, #0x24] +_08064710: + ldr r0, [r5, #8] + movs r1, #2 + orrs r0, r1 + str r0, [r5, #8] + adds r0, r4, #0 + bl ProcessMovement + movs r0, #0x2e + ldrsh r1, [r4, r0] + adds r2, r4, #0 + adds r2, #0x6c + movs r3, #0 + ldrsh r0, [r2, r3] + subs r1, r1, r0 + cmp r1, #0x10 + ble _0806473A + ldrh r0, [r2] + adds r0, #0x10 + strh r0, [r4, #0x2e] + movs r0, #1 + strh r0, [r5, #0x12] +_0806473A: + movs r3, #0x10 + rsbs r3, r3, #0 + cmp r1, r3 + bge _0806474C + ldrh r0, [r2] + subs r0, #0x10 + strh r0, [r4, #0x2e] + movs r0, #1 + strh r0, [r5, #0x12] +_0806474C: + movs r6, #0x32 + ldrsh r1, [r4, r6] + adds r2, r4, #0 + adds r2, #0x6e + movs r6, #0 + ldrsh r0, [r2, r6] + subs r1, r1, r0 + cmp r1, #0x10 + ble _08064768 + ldrh r0, [r2] + adds r0, #0x10 + strh r0, [r4, #0x32] + movs r0, #1 + strh r0, [r5, #0x12] +_08064768: + cmp r1, r3 + bge _08064776 + ldrh r0, [r2] + subs r0, #0x10 + strh r0, [r4, #0x32] + movs r0, #1 + strh r0, [r5, #0x12] +_08064776: + ldrh r0, [r5, #0x12] + subs r0, #1 + strh r0, [r5, #0x12] + lsls r0, r0, #0x10 + cmp r0, #0 + beq _08064788 + ldr r1, _0806478C @ =gActiveScriptInfo + movs r0, #0 + strb r0, [r1, #6] +_08064788: + pop {r4, r5, r6, pc} + .align 2, 0 +_0806478C: .4byte gActiveScriptInfo + .syntax divided diff --git a/asm/non_matching/castorWildsStatue/sub_080675D4.inc b/asm/non_matching/castorWildsStatue/sub_080675D4.inc new file mode 100644 index 00000000..f47dc575 --- /dev/null +++ b/asm/non_matching/castorWildsStatue/sub_080675D4.inc @@ -0,0 +1,131 @@ + .syntax unified + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r4, r0, #0 + ldr r5, _080676D0 @ =gUnk_08110E78 + ldrb r0, [r4, #0xd] + lsls r0, r0, #2 + adds r7, r0, #0 + subs r7, #0xc + movs r0, #0x3f + mov r8, r0 + movs r6, #8 +_080675EC: + adds r0, r4, #0 + movs r1, #2 + movs r2, #0 + bl CreateFx + adds r3, r0, #0 + cmp r3, #0 + beq _08067646 + movs r0, #0 + ldrsb r0, [r5, r0] + ldrh r1, [r3, #0x2e] + adds r0, r0, r1 + strh r0, [r3, #0x2e] + movs r0, #1 + ldrsb r0, [r5, r0] + ldrh r1, [r3, #0x32] + adds r0, r0, r1 + strh r0, [r3, #0x32] + strh r7, [r3, #0x36] + adds r0, r4, #0 + adds r0, #0x38 + ldrb r1, [r0] + adds r0, r3, #0 + adds r0, #0x38 + strb r1, [r0] + ldrb r1, [r4, #0x1b] + lsrs r1, r1, #6 + lsls r1, r1, #6 + ldrb r2, [r3, #0x1b] + mov r0, r8 + ands r0, r2 + orrs r0, r1 + strb r0, [r3, #0x1b] + ldrb r1, [r4, #0x19] + lsrs r1, r1, #6 + lsls r1, r1, #6 + ldrb r2, [r3, #0x19] + mov r0, r8 + ands r0, r2 + orrs r0, r1 + strb r0, [r3, #0x19] + adds r0, r4, #0 + adds r1, r3, #0 + bl ResolveEntityOnTop +_08067646: + subs r6, #1 + adds r5, #2 + cmp r6, #0 + bge _080675EC + ldr r5, _080676D4 @ =gUnk_08110E8A + movs r0, #0x3f + mov r8, r0 + movs r6, #3 +_08067656: + adds r0, r4, #0 + movs r1, #4 + movs r2, #0 + bl CreateFx + adds r3, r0, #0 + cmp r3, #0 + beq _080676B0 + movs r0, #0 + ldrsb r0, [r5, r0] + ldrh r1, [r3, #0x2e] + adds r0, r0, r1 + strh r0, [r3, #0x2e] + movs r0, #1 + ldrsb r0, [r5, r0] + ldrh r1, [r3, #0x32] + adds r0, r0, r1 + strh r0, [r3, #0x32] + strh r7, [r3, #0x36] + adds r0, r4, #0 + adds r0, #0x38 + ldrb r1, [r0] + adds r0, r3, #0 + adds r0, #0x38 + strb r1, [r0] + ldrb r1, [r4, #0x1b] + lsrs r1, r1, #6 + lsls r1, r1, #6 + ldrb r2, [r3, #0x1b] + mov r0, r8 + ands r0, r2 + orrs r0, r1 + strb r0, [r3, #0x1b] + ldrb r1, [r4, #0x19] + lsrs r1, r1, #6 + lsls r1, r1, #6 + ldrb r2, [r3, #0x19] + mov r0, r8 + ands r0, r2 + orrs r0, r1 + strb r0, [r3, #0x19] + adds r0, r4, #0 + adds r1, r3, #0 + bl ResolveEntityOnTop +_080676B0: + subs r6, #1 + adds r5, #2 + cmp r6, #0 + bge _08067656 + ldrb r0, [r4, #0xd] + cmp r0, #2 + bls _080676C8 + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r4, #0x18] +_080676C8: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_080676D0: .4byte gUnk_08110E78 +_080676D4: .4byte gUnk_08110E8A + .syntax divided diff --git a/asm/non_matching/castorWildsStatue/sub_080676E0.inc b/asm/non_matching/castorWildsStatue/sub_080676E0.inc new file mode 100644 index 00000000..dbf35d08 --- /dev/null +++ b/asm/non_matching/castorWildsStatue/sub_080676E0.inc @@ -0,0 +1,63 @@ + .syntax unified + push {lr} + adds r3, r0, #0 + adds r2, r1, #0 + ldrb r0, [r2, #0x18] + cmp r0, #1 + beq _08067706 + cmp r0, #1 + bgt _080676F6 + cmp r0, #0 + beq _080676FC + b _08067734 +_080676F6: + cmp r0, #2 + beq _08067722 + b _08067734 +_080676FC: + movs r0, #1 + strb r0, [r2, #0x18] + movs r0, #0x20 + strb r0, [r2, #0x19] + b _08067742 +_08067706: + ldrb r1, [r2, #0x19] + lsrs r0, r1, #1 + subs r0, #0x10 + strh r0, [r3, #0x36] + subs r1, #1 + strb r1, [r2, #0x19] + lsls r1, r1, #0x18 + cmp r1, #0 + bne _08067742 + movs r0, #2 + strb r0, [r2, #0x18] + movs r0, #0x24 + strb r0, [r2, #0x19] + b _08067742 +_08067722: + ldrb r0, [r2, #0x19] + subs r0, #1 + strb r0, [r2, #0x19] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08067742 + movs r0, #3 + strb r0, [r2, #0x18] + b _08067742 +_08067734: + movs r1, #0xc0 + lsls r1, r1, #5 + adds r0, r3, #0 + bl sub_08003FC4 + cmp r0, #0 + beq _08067748 +_08067742: + ldr r1, _0806774C @ =gActiveScriptInfo + movs r0, #0 + strb r0, [r1, #6] +_08067748: + pop {pc} + .align 2, 0 +_0806774C: .4byte gActiveScriptInfo + .syntax divided diff --git a/asm/clothesRack.s b/asm/non_matching/clothesRack/sub_0806DD90.inc similarity index 91% rename from asm/clothesRack.s rename to asm/non_matching/clothesRack/sub_0806DD90.inc index 77f17df6..f20d50cc 100644 --- a/asm/clothesRack.s +++ b/asm/non_matching/clothesRack/sub_0806DD90.inc @@ -1,13 +1,4 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - .syntax unified - - .text - - thumb_func_start sub_0806DD90 -sub_0806DD90: @ 0x0806DD90 push {r4, r5, r6, r7, lr} mov r7, sl mov r6, sb @@ -155,9 +146,4 @@ _0806DDC4: .align 2, 0 _0806DEC0: .4byte 0x00004072 _0806DEC4: .4byte gRoomControls - - thumb_func_start sub_0806DEC8 -sub_0806DEC8: @ 0x0806DEC8 - push {lr} - bl GetNextFrame - pop {pc} + .syntax divided diff --git a/asm/non_matching/cucco/sub_0806E564.inc b/asm/non_matching/cucco/sub_0806E564.inc new file mode 100644 index 00000000..81b21c45 --- /dev/null +++ b/asm/non_matching/cucco/sub_0806E564.inc @@ -0,0 +1,64 @@ + .syntax unified + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xd] + cmp r0, #0 + bne _0806E5AA + adds r0, #1 + strb r0, [r4, #0xd] + bl Random + movs r2, #1 + ands r0, r2 + cmp r0, #0 + beq _0806E590 + ldrb r0, [r4, #0x18] + lsls r1, r0, #0x19 + lsrs r1, r1, #0x1f + eors r1, r2 + lsls r1, r1, #6 + subs r2, #0x42 + ands r2, r0 + orrs r2, r1 + strb r2, [r4, #0x18] +_0806E590: + bl Random + movs r1, #1 + ands r0, r1 + adds r0, #1 + strb r0, [r4, #0xe] + movs r0, #0xc0 + lsls r0, r0, #9 + str r0, [r4, #0x20] + adds r0, r4, #0 + movs r1, #1 + bl InitAnimationForceUpdate +_0806E5AA: + movs r1, #0xa0 + lsls r1, r1, #6 + adds r0, r4, #0 + bl sub_08003FC4 + cmp r0, #0 + bne _0806E5D4 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + bne _0806E5CE + movs r0, #1 + strb r0, [r4, #0xc] + strb r1, [r4, #0xd] + b _0806E5D4 +_0806E5CE: + movs r0, #0xc0 + lsls r0, r0, #9 + str r0, [r4, #0x20] +_0806E5D4: + adds r0, r4, #0 + bl sub_0806E65C + adds r0, r4, #0 + bl UpdateAnimationSingleFrame + pop {r4, pc} + .align 2, 0 + .syntax divided diff --git a/asm/non_matching/cucco/sub_0806E5E4.inc b/asm/non_matching/cucco/sub_0806E5E4.inc new file mode 100644 index 00000000..2e2a651e --- /dev/null +++ b/asm/non_matching/cucco/sub_0806E5E4.inc @@ -0,0 +1,50 @@ + .syntax unified + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xd] + cmp r0, #0 + bne _0806E622 + adds r0, #1 + strb r0, [r4, #0xd] + bl Random + movs r5, #1 + ands r0, r5 + cmp r0, #0 + beq _0806E612 + ldrb r0, [r4, #0x18] + lsls r1, r0, #0x19 + lsrs r1, r1, #0x1f + eors r1, r5 + lsls r1, r1, #6 + movs r2, #0x41 + rsbs r2, r2, #0 + ands r2, r0 + orrs r2, r1 + strb r2, [r4, #0x18] +_0806E612: + bl Random + adds r1, r0, #0 + ands r1, r5 + adds r1, #2 + adds r0, r4, #0 + bl InitAnimationForceUpdate +_0806E622: + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0806E638 + movs r1, #0 + movs r0, #1 + strb r0, [r4, #0xc] + strb r1, [r4, #0xd] +_0806E638: + adds r0, r4, #0 + bl sub_0806E65C + adds r0, r4, #0 + bl UpdateAnimationSingleFrame + pop {r4, r5, pc} + .align 2, 0 + .syntax divided diff --git a/asm/non_matching/cucco/sub_0806E6A8.inc b/asm/non_matching/cucco/sub_0806E6A8.inc new file mode 100644 index 00000000..3088da67 --- /dev/null +++ b/asm/non_matching/cucco/sub_0806E6A8.inc @@ -0,0 +1,26 @@ + .syntax unified + push {r4, r5, lr} + adds r4, r0, #0 + movs r5, #0 + bl sub_08002632 + ldr r1, _0806E6D4 @ =gSave + ldr r2, _0806E6D8 @ =0x000001C1 + adds r1, r1, r2 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0xf3 + bne _0806E6C2 + movs r5, #1 +_0806E6C2: + ldr r0, _0806E6DC @ =gUnk_081145D0 + lsls r1, r5, #1 + adds r1, r1, r0 + ldrh r0, [r1] + adds r1, r4, #0 + bl TextboxNoOverlap + pop {r4, r5, pc} + .align 2, 0 +_0806E6D4: .4byte gSave +_0806E6D8: .4byte 0x000001C1 +_0806E6DC: .4byte gUnk_081145D0 + .syntax divided diff --git a/asm/non_matching/cuccoChick/sub_0806E7B0.inc b/asm/non_matching/cuccoChick/sub_0806E7B0.inc new file mode 100644 index 00000000..25c8580e --- /dev/null +++ b/asm/non_matching/cuccoChick/sub_0806E7B0.inc @@ -0,0 +1,60 @@ + .syntax unified + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xd] + cmp r0, #0 + bne _0806E7F2 + adds r0, #1 + strb r0, [r4, #0xd] + bl Random + movs r5, #1 + ands r0, r5 + cmp r0, #0 + beq _0806E7DE + ldrb r0, [r4, #0x18] + lsls r1, r0, #0x19 + lsrs r1, r1, #0x1f + eors r1, r5 + lsls r1, r1, #6 + movs r2, #0x41 + rsbs r2, r2, #0 + ands r2, r0 + orrs r2, r1 + strb r2, [r4, #0x18] +_0806E7DE: + bl Random + movs r1, #3 + ands r0, r1 + adds r0, #1 + strb r0, [r4, #0xe] + movs r0, #0x80 + lsls r0, r0, #9 + str r0, [r4, #0x20] + strb r5, [r4, #0x1e] +_0806E7F2: + movs r1, #0xc0 + lsls r1, r1, #6 + adds r0, r4, #0 + bl sub_08003FC4 + cmp r0, #0 + bne _0806E81C + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + bne _0806E816 + movs r0, #1 + strb r0, [r4, #0xc] + strb r1, [r4, #0xd] + b _0806E81C +_0806E816: + movs r0, #0x80 + lsls r0, r0, #9 + str r0, [r4, #0x20] +_0806E81C: + adds r0, r4, #0 + bl sub_0806E838 + pop {r4, r5, pc} + .syntax divided diff --git a/asm/non_matching/farmers/Farmers.inc b/asm/non_matching/farmers/Farmers.inc new file mode 100644 index 00000000..8e428da6 --- /dev/null +++ b/asm/non_matching/farmers/Farmers.inc @@ -0,0 +1,58 @@ + .syntax unified + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _0806BC40 + ldrb r0, [r4, #0xa] + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #2 + ldr r0, _0806BC28 @ =gUnk_08113140 + adds r1, r1, r0 + adds r0, r4, #0 + bl LoadExtraSpriteData + cmp r0, #0 + beq _0806BC54 + ldrb r0, [r4, #0xc] + adds r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0xe] + movs r0, #1 + ands r1, r0 + lsls r1, r1, #6 + ldrb r2, [r4, #0x18] + movs r0, #0x41 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #0x18] + lsls r0, r0, #0x19 + cmp r0, #0 + blt _0806BC2C + movs r0, #6 + b _0806BC2E + .align 2, 0 +_0806BC28: .4byte gUnk_08113140 +_0806BC2C: + movs r0, #2 +_0806BC2E: + strb r0, [r4, #0x14] + ldrb r0, [r4, #0x14] + strb r0, [r4, #0xe] + adds r0, r4, #0 + bl sub_0806BC58 + adds r0, r4, #0 + bl sub_0807DD64 +_0806BC40: + adds r0, r4, #0 + movs r1, #0 + bl ExecuteScriptForEntity + adds r0, r4, #0 + bl HandleEntity0x82Actions + adds r0, r4, #0 + bl GetNextFrame +_0806BC54: + pop {r4, pc} + .align 2, 0 + .syntax divided diff --git a/asm/non_matching/farmers/sub_0806BC94.inc b/asm/non_matching/farmers/sub_0806BC94.inc new file mode 100644 index 00000000..e6b32265 --- /dev/null +++ b/asm/non_matching/farmers/sub_0806BC94.inc @@ -0,0 +1,19 @@ + .syntax unified + push {lr} + ldrb r3, [r0, #0x18] + lsls r3, r3, #0x19 + lsrs r3, r3, #0x1f + rsbs r2, r3, #0 + orrs r2, r3 + asrs r2, r2, #0x1f + movs r3, #8 + ands r2, r3 + ldr r1, [r1, #4] + adds r1, r1, r2 + ldrb r2, [r0, #0x14] + lsrs r2, r2, #1 + adds r1, r1, r2 + bl InitializeAnimation + pop {pc} + .align 2, 0 + .syntax divided diff --git a/asm/non_matching/ghostBrothers/GhostBrothers.inc b/asm/non_matching/ghostBrothers/GhostBrothers.inc new file mode 100644 index 00000000..6f4d6ce3 --- /dev/null +++ b/asm/non_matching/ghostBrothers/GhostBrothers.inc @@ -0,0 +1,41 @@ + .syntax unified + push {r4, lr} + adds r4, r0, #0 + ldrb r1, [r4, #0x10] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _08065BBA + adds r0, r4, #0 + bl sub_08065C0C + b _08065BEA +_08065BBA: + ldr r1, _08065BEC @ =gUnk_08110164 + ldrb r0, [r4, #0xa] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + ldrb r0, [r4, #0xa] + cmp r0, #2 + bhi _08065BEA + ldr r2, _08065BF0 @ =gUnk_0811015C + ldrb r0, [r4, #0xf] + adds r1, r0, #1 + strb r1, [r4, #0xf] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x1b + movs r1, #7 + ands r0, r1 + adds r0, r0, r2 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + strh r0, [r4, #0x36] +_08065BEA: + pop {r4, pc} + .align 2, 0 +_08065BEC: .4byte gUnk_08110164 +_08065BF0: .4byte gUnk_0811015C + .syntax divided diff --git a/asm/non_matching/ghostBrothers/sub_08065C0C.inc b/asm/non_matching/ghostBrothers/sub_08065C0C.inc new file mode 100644 index 00000000..c308e49a --- /dev/null +++ b/asm/non_matching/ghostBrothers/sub_08065C0C.inc @@ -0,0 +1,98 @@ + .syntax unified + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #1 + beq _08065C42 + cmp r0, #1 + bgt _08065C20 + cmp r0, #0 + beq _08065C2A + b _08065CCA +_08065C20: + cmp r0, #2 + beq _08065C7E + cmp r0, #3 + beq _08065C8A + b _08065CCA +_08065C2A: + 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] + adds r0, r4, #0 + bl sub_0807DD50 + b _08065CCA +_08065C42: + adds r2, r4, #0 + adds r2, #0x39 + movs r1, #0 + ldrsb r1, [r2, r1] + cmp r1, #2 + bne _08065C74 + movs r0, #0 + strb r1, [r4, #0xc] + strb r0, [r2] + ldr r1, _08065C70 @ =gPlayerEntity + adds r0, r4, #0 + bl GetFacingDirection + bl sub_0806F5A4 + adds r1, r0, #0 + adds r0, r4, #0 + bl InitAnimationForceUpdate + adds r0, r4, #0 + bl sub_0806F118 + b _08065CCA + .align 2, 0 +_08065C70: .4byte gPlayerEntity +_08065C74: + adds r0, r4, #0 + movs r1, #0 + bl sub_0807DD94 + b _08065CCA +_08065C7E: + adds r0, r4, #0 + bl UpdateFuseInteraction + cmp r0, #0 + beq _08065CCA + b _08065CC6 +_08065C8A: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08065CCA + ldr r1, [r4, #0x6c] + ldrh r2, [r1] + ldr r0, _08065CB4 @ =0x0000FFFF + cmp r2, r0 + beq _08065CBC + ldr r0, _08065CB8 @ =gScreen + adds r0, #0x68 + strh r2, [r0] + adds r1, #2 + ldrh r0, [r1] + strb r0, [r4, #0xe] + adds r1, #2 + str r1, [r4, #0x6c] + b _08065CCA + .align 2, 0 +_08065CB4: .4byte 0x0000FFFF +_08065CB8: .4byte gScreen +_08065CBC: + ldrb r0, [r4, #0x18] + movs r1, #4 + rsbs r1, r1, #0 + ands r1, r0 + strb r1, [r4, #0x18] +_08065CC6: + movs r0, #1 + strb r0, [r4, #0xc] +_08065CCA: + pop {r4, pc} + .syntax divided diff --git a/asm/non_matching/ghostBrothers/sub_08065D74.inc b/asm/non_matching/ghostBrothers/sub_08065D74.inc new file mode 100644 index 00000000..eee44d0e --- /dev/null +++ b/asm/non_matching/ghostBrothers/sub_08065D74.inc @@ -0,0 +1,35 @@ + .syntax unified + push {lr} + adds r1, r0, #0 + ldrb r0, [r1, #0xe] + subs r0, #1 + strb r0, [r1, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08065DB4 + ldr r2, [r1, #0x6c] + ldrh r3, [r2] + ldr r0, _08065DA0 @ =0x0000FFFF + cmp r3, r0 + beq _08065DA8 + ldr r0, _08065DA4 @ =gScreen + adds r0, #0x68 + strh r3, [r0] + ldrh r0, [r2, #2] + strb r0, [r1, #0xe] + adds r0, r2, #4 + str r0, [r1, #0x6c] + b _08065DB4 + .align 2, 0 +_08065DA0: .4byte 0x0000FFFF +_08065DA4: .4byte gScreen +_08065DA8: + ldrb r0, [r1, #0xc] + adds r0, #1 + strb r0, [r1, #0xc] + movs r0, #0 + bl TextboxNoOverlapFollow +_08065DB4: + pop {pc} + .align 2, 0 + .syntax divided diff --git a/asm/non_matching/ghostBrothers/sub_08065DB8.inc b/asm/non_matching/ghostBrothers/sub_08065DB8.inc new file mode 100644 index 00000000..6e6e7d6e --- /dev/null +++ b/asm/non_matching/ghostBrothers/sub_08065DB8.inc @@ -0,0 +1,126 @@ + .syntax unified + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xd] + cmp r0, #4 + bhi _08065E74 + lsls r0, r0, #2 + ldr r1, _08065DCC @ =_08065DD0 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08065DCC: .4byte _08065DD0 +_08065DD0: @ jump table + .4byte _08065DE4 @ case 0 + .4byte _08065E08 @ case 1 + .4byte _08065EB0 @ case 2 + .4byte _08065E34 @ case 3 + .4byte _08065E4E @ case 4 +_08065DE4: + ldr r0, _08065E04 @ =gTextBox + ldrb r1, [r0] + movs r0, #0x7f + ands r0, r1 + cmp r0, #0 + bne _08065EB0 + ldrb r0, [r4, #0xd] + adds r0, #1 + strb r0, [r4, #0xd] + movs r0, #0x3c + strb r0, [r4, #0xe] + adds r0, r4, #0 + movs r1, #4 + bl InitAnimationForceUpdate + b _08065EB0 + .align 2, 0 +_08065E04: .4byte gTextBox +_08065E08: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08065EB0 + ldrb r0, [r4, #0xd] + adds r0, #1 + strb r0, [r4, #0xd] + movs r0, #0xb4 + strb r0, [r4, #0xe] + ldr r1, _08065E30 @ =gUnk_02018EB0 + ldrb r0, [r1, #1] + adds r0, #1 + strb r0, [r1, #1] + adds r0, r4, #0 + movs r1, #2 + bl InitAnimationForceUpdate + b _08065EB0 + .align 2, 0 +_08065E30: .4byte gUnk_02018EB0 +_08065E34: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08065EB0 + movs r0, #0 + bl TextboxNoOverlapFollow + ldrb r0, [r4, #0xd] + adds r0, #1 + strb r0, [r4, #0xd] + b _08065EB0 +_08065E4E: + ldr r0, _08065E6C @ =gTextBox + ldrb r1, [r0] + movs r0, #0x7f + ands r0, r1 + cmp r0, #0 + bne _08065EB0 + ldrb r0, [r4, #0xd] + adds r0, #1 + strb r0, [r4, #0xd] + movs r0, #0x1e + strb r0, [r4, #0xe] + ldr r0, _08065E70 @ =gUnk_0811022E + str r0, [r4, #0x6c] + b _08065EB0 + .align 2, 0 +_08065E6C: .4byte gTextBox +_08065E70: .4byte gUnk_0811022E +_08065E74: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08065EB0 + ldr r1, [r4, #0x6c] + ldrh r2, [r1] + ldr r0, _08065E9C @ =0x0000FFFF + cmp r2, r0 + beq _08065EA4 + ldr r0, _08065EA0 @ =gScreen + adds r0, #0x68 + strh r2, [r0] + ldrh r0, [r1, #2] + strb r0, [r4, #0xe] + adds r0, r1, #4 + str r0, [r4, #0x6c] + b _08065EB0 + .align 2, 0 +_08065E9C: .4byte 0x0000FFFF +_08065EA0: .4byte gScreen +_08065EA4: + ldr r1, _08065EB8 @ =gUnk_02018EB0 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + bl DeleteThisEntity +_08065EB0: + adds r0, r4, #0 + bl UpdateAnimationSingleFrame + pop {r4, pc} + .align 2, 0 +_08065EB8: .4byte gUnk_02018EB0 + .syntax divided diff --git a/asm/non_matching/ghostBrothers/sub_08065EDC.inc b/asm/non_matching/ghostBrothers/sub_08065EDC.inc new file mode 100644 index 00000000..429f2abe --- /dev/null +++ b/asm/non_matching/ghostBrothers/sub_08065EDC.inc @@ -0,0 +1,36 @@ + .syntax unified + push {lr} + adds r2, r0, #0 + ldrb r0, [r2, #0xe] + subs r0, #1 + strb r0, [r2, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08065F1C + ldr r1, [r2, #0x6c] + ldrh r3, [r1] + ldr r0, _08065F08 @ =0x0000FFFF + cmp r3, r0 + beq _08065F10 + ldr r0, _08065F0C @ =gScreen + adds r0, #0x68 + strh r3, [r0] + adds r1, #2 + ldrh r0, [r1] + strb r0, [r2, #0xe] + adds r1, #2 + str r1, [r2, #0x6c] + b _08065F1C + .align 2, 0 +_08065F08: .4byte 0x0000FFFF +_08065F0C: .4byte gScreen +_08065F10: + ldrb r0, [r2, #0xc] + adds r0, #1 + strb r0, [r2, #0xc] + adds r0, r2, #0 + bl sub_08078778 +_08065F1C: + pop {pc} + .align 2, 0 + .syntax divided diff --git a/asm/non_matching/gibdo/sub_08037810.inc b/asm/non_matching/gibdo/sub_08037810.inc deleted file mode 100644 index b4ce2803..00000000 --- a/asm/non_matching/gibdo/sub_08037810.inc +++ /dev/null @@ -1,86 +0,0 @@ - - - .syntax unified - - .text - - push {r4, r5, r6, lr} - adds r5, r0, #0 - adds r1, r5, #0 - adds r1, #0x76 - ldrb r0, [r1] - cmp r0, #0 - bne _080378A8 - adds r0, r5, #0 - movs r1, #1 - bl sub_08049FDC - cmp r0, #0 - beq _080378AC - ldr r6, _080378A4 @ =gUnk_020000B0 - ldr r0, [r6] - movs r2, #0x2e - ldrsh r1, [r0, r2] - movs r3, #0x32 - ldrsh r2, [r0, r3] - adds r0, r5, #0 - movs r3, #0x40 - bl sub_0806FCB8 - cmp r0, #0 - beq _080378AC - ldr r1, [r6] - adds r0, r5, #0 - bl GetFacingDirection - ldrb r1, [r5, #0x15] - subs r0, r0, r1 - adds r0, #6 - movs r1, #0x1f - ands r0, r1 - cmp r0, #0xc - bhi _080378AC - movs r0, #3 - strb r0, [r5, #0xc] - movs r4, #0x18 - movs r0, #0x18 - strb r0, [r5, #0xe] - movs r0, #8 - strb r0, [r5, #0xf] - movs r0, #0xc0 - strh r0, [r5, #0x24] - ldr r1, [r6] - adds r0, r5, #0 - bl GetFacingDirection - adds r0, #4 - ands r0, r4 - strb r0, [r5, #0x15] - lsrs r0, r0, #3 - strb r0, [r5, #0x14] - adds r1, r5, #0 - adds r1, #0x74 - movs r0, #0x96 - lsls r0, r0, #1 - strh r0, [r1] - ldr r2, [r6] - ldrh r1, [r2, #0x2e] - adds r0, r5, #0 - adds r0, #0x78 - strh r1, [r0] - ldrh r0, [r2, #0x32] - adds r3, r5, #0 - adds r3, #0x7a - strh r0, [r3] - ldrb r1, [r5, #0x14] - adds r0, r5, #0 - bl InitAnimationForceUpdate - movs r0, #1 - b _080378AE - .align 2, 0 -_080378A4: .4byte gUnk_020000B0 -_080378A8: - subs r0, #1 - strb r0, [r1] -_080378AC: - movs r0, #0 -_080378AE: - pop {r4, r5, r6, pc} - - .syntax divided diff --git a/asm/non_matching/gibdo/sub_08037A58.inc b/asm/non_matching/gibdo/sub_08037A58.inc deleted file mode 100644 index b973955f..00000000 --- a/asm/non_matching/gibdo/sub_08037A58.inc +++ /dev/null @@ -1,64 +0,0 @@ - - .syntax unified - - .text - - push {r4, lr} - adds r4, r0, #0 - bl sub_08037ACC - movs r0, #7 - strb r0, [r4, #0xc] - adds r2, r4, #0 - adds r2, #0x29 - ldrb r1, [r2] - subs r0, #0xf - ands r0, r1 - movs r1, #4 - orrs r0, r1 - strb r0, [r2] - adds r3, r4, #0 - adds r3, #0x3d - movs r0, #0 - ldrsb r0, [r3, r0] - cmp r0, #0 - bne _08037A84 - movs r0, #0xec - strb r0, [r3] -_08037A84: - adds r1, r4, #0 - adds r1, #0x3f - movs r0, #0x26 - strb r0, [r1] - adds r2, r4, #0 - adds r2, #0x3b - ldrb r0, [r2] - movs r1, #1 - orrs r0, r1 - strb r0, [r2] - movs r0, #0xf4 - strb r0, [r3] - ldrb r0, [r4, #0x14] - lsls r0, r0, #3 - movs r1, #0x10 - eors r0, r1 - adds r1, r4, #0 - adds r1, #0x3e - strb r0, [r1] - adds r1, #4 - movs r0, #8 - strb r0, [r1] - adds r1, #4 - movs r0, #0xc0 - lsls r0, r0, #1 - strh r0, [r1] - adds r1, #0x30 - movs r0, #0x3c - strb r0, [r1] - ldrb r1, [r4, #0x14] - adds r1, #0x10 - adds r0, r4, #0 - bl InitAnimationForceUpdate - pop {r4, pc} - .align 2, 0 - - .syntax divided diff --git a/asm/non_matching/gorman/sub_0806991C.inc b/asm/non_matching/gorman/sub_0806991C.inc new file mode 100644 index 00000000..d4115e2b --- /dev/null +++ b/asm/non_matching/gorman/sub_0806991C.inc @@ -0,0 +1,69 @@ + .syntax unified + push {r4, r5, r6, lr} + adds r5, r0, #0 + adds r4, r1, #0 + bl Random + movs r1, #0x1f + ands r0, r1 + adds r0, #0x3c + adds r1, r5, #0 + adds r1, #0x68 + movs r3, #0 + strb r0, [r1] + adds r0, r5, #0 + adds r0, #0x69 + movs r1, #0 + ldrsb r1, [r0, r1] + lsls r1, r1, #2 + ldr r0, _0806999C @ =gUnk_08111C5C + adds r1, r1, r0 + ldr r2, _080699A0 @ =gRoomControls + ldrh r0, [r1] + ldrh r6, [r2, #6] + adds r0, r0, r6 + strh r0, [r4, #0x1e] + ldrh r0, [r1, #2] + ldrh r2, [r2, #8] + adds r0, r0, r2 + strh r0, [r4, #0x22] + movs r0, #8 + strb r0, [r4, #0x19] + ldr r0, [r4, #8] + movs r1, #2 + orrs r0, r1 + str r0, [r4, #8] + str r3, [r4, #0x14] + movs r1, #0x1e + ldrsh r0, [r4, r1] + movs r2, #0x2e + ldrsh r1, [r5, r2] + subs r0, r0, r1 + movs r3, #0x22 + ldrsh r1, [r4, r3] + movs r6, #0x32 + ldrsh r2, [r5, r6] + subs r1, r1, r2 + bl sub_080045DA + strb r0, [r5, #0x15] + ldrb r2, [r5, #0x14] + movs r1, #0x80 + ands r1, r2 + ldr r2, _080699A4 @ =gUnk_08111C74 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x1c + adds r0, r0, r2 + ldrb r0, [r0] + orrs r1, r0 + strb r1, [r5, #0x14] + ldr r2, _080699A8 @ =gActiveScriptInfo + ldrb r1, [r2, #7] + movs r0, #1 + orrs r0, r1 + strb r0, [r2, #7] + pop {r4, r5, r6, pc} + .align 2, 0 +_0806999C: .4byte gUnk_08111C5C +_080699A0: .4byte gRoomControls +_080699A4: .4byte gUnk_08111C74 +_080699A8: .4byte gActiveScriptInfo + .syntax divided diff --git a/asm/non_matching/gorman/sub_080699AC.inc b/asm/non_matching/gorman/sub_080699AC.inc new file mode 100644 index 00000000..db5408e0 --- /dev/null +++ b/asm/non_matching/gorman/sub_080699AC.inc @@ -0,0 +1,69 @@ + .syntax unified + push {r4, r5, r6, lr} + adds r5, r0, #0 + adds r4, r1, #0 + bl Random + movs r1, #0x1f + ands r0, r1 + adds r0, #0x3c + adds r1, r5, #0 + adds r1, #0x68 + movs r3, #0 + strb r0, [r1] + adds r0, r5, #0 + adds r0, #0x69 + movs r1, #0 + ldrsb r1, [r0, r1] + lsls r1, r1, #2 + ldr r0, _08069A2C @ =gUnk_08111C84 + adds r1, r1, r0 + ldr r2, _08069A30 @ =gRoomControls + ldrh r0, [r1] + ldrh r6, [r2, #6] + adds r0, r0, r6 + strh r0, [r4, #0x1e] + ldrh r0, [r1, #2] + ldrh r2, [r2, #8] + adds r0, r0, r2 + strh r0, [r4, #0x22] + movs r0, #8 + strb r0, [r4, #0x19] + ldr r0, [r4, #8] + movs r1, #2 + orrs r0, r1 + str r0, [r4, #8] + str r3, [r4, #0x14] + movs r1, #0x1e + ldrsh r0, [r4, r1] + movs r2, #0x2e + ldrsh r1, [r5, r2] + subs r0, r0, r1 + movs r3, #0x22 + ldrsh r1, [r4, r3] + movs r6, #0x32 + ldrsh r2, [r5, r6] + subs r1, r1, r2 + bl sub_080045DA + strb r0, [r5, #0x15] + ldrb r2, [r5, #0x14] + movs r1, #0x80 + ands r1, r2 + ldr r2, _08069A34 @ =gUnk_08111C8C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x1c + adds r0, r0, r2 + ldrb r0, [r0] + orrs r1, r0 + strb r1, [r5, #0x14] + ldr r2, _08069A38 @ =gActiveScriptInfo + ldrb r1, [r2, #7] + movs r0, #1 + orrs r0, r1 + strb r0, [r2, #7] + pop {r4, r5, r6, pc} + .align 2, 0 +_08069A2C: .4byte gUnk_08111C84 +_08069A30: .4byte gRoomControls +_08069A34: .4byte gUnk_08111C8C +_08069A38: .4byte gActiveScriptInfo + .syntax divided diff --git a/asm/non_matching/guardWithSpear/sub_0806407C.inc b/asm/non_matching/guardWithSpear/sub_0806407C.inc new file mode 100644 index 00000000..21843fdf --- /dev/null +++ b/asm/non_matching/guardWithSpear/sub_0806407C.inc @@ -0,0 +1,140 @@ + .syntax unified + push {r4, r5, r6, lr} + adds r4, r0, #0 + adds r5, r1, #0 + ldrb r0, [r5, #0x18] + cmp r0, #0 + bne _080640E8 + adds r0, #1 + strb r0, [r5, #0x18] + bl Random + movs r1, #0x3f + ands r0, r1 + adds r0, #0x20 + strh r0, [r5, #0x12] + bl Random + adds r1, r0, #0 + movs r0, #0x18 + ands r1, r0 + ldrb r0, [r4, #0x15] + cmp r0, #8 + beq _080640C4 + cmp r0, #8 + bgt _080640B2 + cmp r0, #0 + beq _080640BC + b _080640DA +_080640B2: + cmp r0, #0x10 + beq _080640CC + cmp r0, #0x18 + beq _080640D4 + b _080640DA +_080640BC: + cmp r1, #0x10 + bne _080640DA + movs r1, #8 + b _080640DA +_080640C4: + cmp r1, #0x18 + bne _080640DA + movs r1, #0x10 + b _080640DA +_080640CC: + cmp r1, #0 + bne _080640DA + movs r1, #0x18 + b _080640DA +_080640D4: + cmp r1, #8 + bne _080640DA + movs r1, #0 +_080640DA: + strb r1, [r4, #0x15] + adds r0, r1, #0 + bl sub_0806F5B0 + strb r0, [r4, #0x14] + movs r0, #0x80 + strh r0, [r4, #0x24] +_080640E8: + ldrb r0, [r4, #0x14] + lsrs r2, r0, #1 + adds r1, r2, #4 + adds r0, r4, #0 + adds r0, #0x58 + ldrb r0, [r0] + cmp r1, r0 + beq _0806410A + adds r0, r4, #0 + adds r0, #0x70 + movs r1, #0 + ldrsb r1, [r0, r1] + adds r1, #4 + adds r1, r2, r1 + adds r0, r4, #0 + bl InitializeAnimation +_0806410A: + adds r0, r4, #0 + bl ProcessMovement + movs r0, #0x2e + ldrsh r1, [r4, r0] + adds r2, r4, #0 + adds r2, #0x68 + movs r3, #0 + ldrsh r0, [r2, r3] + subs r1, r1, r0 + cmp r1, #0x10 + ble _0806412C + ldrh r0, [r2] + adds r0, #0x10 + strh r0, [r4, #0x2e] + movs r0, #1 + strh r0, [r5, #0x12] +_0806412C: + movs r3, #0x10 + rsbs r3, r3, #0 + cmp r1, r3 + bge _0806413E + ldrh r0, [r2] + subs r0, #0x10 + strh r0, [r4, #0x2e] + movs r0, #1 + strh r0, [r5, #0x12] +_0806413E: + movs r6, #0x32 + ldrsh r1, [r4, r6] + adds r2, r4, #0 + adds r2, #0x6a + movs r6, #0 + ldrsh r0, [r2, r6] + subs r1, r1, r0 + cmp r1, #0x10 + ble _0806415A + ldrh r0, [r2] + adds r0, #0x10 + strh r0, [r4, #0x32] + movs r0, #1 + strh r0, [r5, #0x12] +_0806415A: + cmp r1, r3 + bge _08064168 + ldrh r0, [r2] + subs r0, #0x10 + strh r0, [r4, #0x32] + movs r0, #1 + strh r0, [r5, #0x12] +_08064168: + ldrh r0, [r5, #0x12] + subs r0, #1 + strh r0, [r5, #0x12] + lsls r0, r0, #0x10 + cmp r0, #0 + beq _0806417A + ldr r1, _0806417C @ =gActiveScriptInfo + movs r0, #0 + strb r0, [r1, #6] +_0806417A: + pop {r4, r5, r6, pc} + .align 2, 0 +_0806417C: .4byte gActiveScriptInfo + .syntax divided diff --git a/asm/non_matching/guardWithSpear/sub_08064198.inc b/asm/non_matching/guardWithSpear/sub_08064198.inc new file mode 100644 index 00000000..40e2c114 --- /dev/null +++ b/asm/non_matching/guardWithSpear/sub_08064198.inc @@ -0,0 +1,144 @@ + .syntax unified + push {r4, r5, r6, lr} + adds r5, r0, #0 + adds r4, r5, #0 + adds r4, #0x71 + ldrb r1, [r4] + movs r0, #0 + ldrsb r0, [r4, r0] + cmp r0, #0 + ble _080641AE + subs r0, r1, #1 + strb r0, [r4] +_080641AE: + ldr r0, _080641D8 @ =gPlayerEntity + movs r2, #0x32 + ldrsh r1, [r0, r2] + movs r2, #0x32 + ldrsh r0, [r5, r2] + subs r1, r1, r0 + cmp r1, #2 + ble _080641C0 + movs r1, #2 +_080641C0: + movs r0, #2 + rsbs r0, r0, #0 + cmp r1, r0 + bge _080641CA + adds r1, r0, #0 +_080641CA: + adds r6, r4, #0 + cmp r1, #0 + beq _08064256 + cmp r1, #0 + ble _080641DC + movs r0, #0x10 + b _080641DE + .align 2, 0 +_080641D8: .4byte gPlayerEntity +_080641DC: + movs r0, #0 +_080641DE: + strb r0, [r5, #0x15] + cmp r1, #0 + bge _080641E6 + rsbs r1, r1, #0 +_080641E6: + lsls r0, r1, #8 + strh r0, [r5, #0x24] + movs r0, #0x32 + ldrsh r4, [r5, r0] + adds r0, r5, #0 + bl ProcessMovement + movs r1, #0x32 + ldrsh r0, [r5, r1] + adds r6, r5, #0 + adds r6, #0x71 + cmp r4, r0 + beq _08064256 + ldr r0, _080642B0 @ =gPlayerEntity + movs r2, #0x24 + ldrsh r1, [r0, r2] + movs r0, #0xa0 + lsls r0, r0, #1 + cmp r1, r0 + ble _08064222 + ldr r0, _080642B4 @ =gScreenTransition + ldr r0, [r0] + movs r1, #6 + bl __modsi3 + cmp r0, #0 + bne _08064222 + adds r0, r5, #0 + bl CreateDustSmall +_08064222: + adds r4, r5, #0 + adds r4, #0x71 + movs r0, #0xa + strb r0, [r4] + ldrb r0, [r5, #0x15] + bl sub_0806F5B0 + strb r0, [r5, #0x14] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x19 + adds r1, r5, #0 + adds r1, #0x70 + ldrb r1, [r1] + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + adds r1, #4 + adds r1, r0, r1 + adds r0, r5, #0 + adds r0, #0x58 + adds r6, r4, #0 + ldrb r0, [r0] + cmp r1, r0 + beq _08064256 + adds r0, r5, #0 + bl InitializeAnimation +_08064256: + movs r0, #0 + ldrsb r0, [r6, r0] + cmp r0, #0 + bne _0806428C + ldr r1, _080642B0 @ =gPlayerEntity + adds r0, r5, #0 + bl GetFacingDirection + bl sub_0806F5B0 + strb r0, [r5, #0x14] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x19 + adds r1, r5, #0 + adds r1, #0x70 + ldrb r1, [r1] + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + adds r1, r0, r1 + adds r0, r5, #0 + adds r0, #0x58 + ldrb r0, [r0] + cmp r1, r0 + beq _0806428C + adds r0, r5, #0 + bl InitializeAnimation +_0806428C: + adds r0, r5, #0 + bl sub_0806ED78 + movs r0, #0x36 + ldrsh r4, [r5, r0] + ldr r0, _080642B0 @ =gPlayerEntity + ldrh r0, [r0, #0x36] + strh r0, [r5, #0x36] + cmp r4, #0 + bge _080642AC + lsls r0, r0, #0x10 + cmp r0, #0 + bne _080642AC + adds r0, r5, #0 + bl CreateDustSmall +_080642AC: + pop {r4, r5, r6, pc} + .align 2, 0 +_080642B0: .4byte gPlayerEntity +_080642B4: .4byte gScreenTransition + .syntax divided diff --git a/asm/non_matching/guardWithSpear/sub_080642B8.inc b/asm/non_matching/guardWithSpear/sub_080642B8.inc new file mode 100644 index 00000000..108c643e --- /dev/null +++ b/asm/non_matching/guardWithSpear/sub_080642B8.inc @@ -0,0 +1,144 @@ + .syntax unified + push {r4, r5, r6, lr} + adds r5, r0, #0 + adds r4, r5, #0 + adds r4, #0x71 + ldrb r1, [r4] + movs r0, #0 + ldrsb r0, [r4, r0] + cmp r0, #0 + ble _080642CE + subs r0, r1, #1 + strb r0, [r4] +_080642CE: + ldr r0, _080642F8 @ =gPlayerEntity + movs r2, #0x2e + ldrsh r1, [r0, r2] + movs r2, #0x2e + ldrsh r0, [r5, r2] + subs r1, r1, r0 + cmp r1, #2 + ble _080642E0 + movs r1, #2 +_080642E0: + movs r0, #2 + rsbs r0, r0, #0 + cmp r1, r0 + bge _080642EA + adds r1, r0, #0 +_080642EA: + adds r6, r4, #0 + cmp r1, #0 + beq _08064376 + cmp r1, #0 + ble _080642FC + movs r0, #8 + b _080642FE + .align 2, 0 +_080642F8: .4byte gPlayerEntity +_080642FC: + movs r0, #0x18 +_080642FE: + strb r0, [r5, #0x15] + cmp r1, #0 + bge _08064306 + rsbs r1, r1, #0 +_08064306: + lsls r0, r1, #8 + strh r0, [r5, #0x24] + movs r0, #0x2e + ldrsh r4, [r5, r0] + adds r0, r5, #0 + bl ProcessMovement + movs r1, #0x2e + ldrsh r0, [r5, r1] + adds r6, r5, #0 + adds r6, #0x71 + cmp r4, r0 + beq _08064376 + ldr r0, _080643D0 @ =gPlayerEntity + movs r2, #0x24 + ldrsh r1, [r0, r2] + movs r0, #0xa0 + lsls r0, r0, #1 + cmp r1, r0 + ble _08064342 + ldr r0, _080643D4 @ =gScreenTransition + ldr r0, [r0] + movs r1, #6 + bl __modsi3 + cmp r0, #0 + bne _08064342 + adds r0, r5, #0 + bl CreateDustSmall +_08064342: + adds r4, r5, #0 + adds r4, #0x71 + movs r0, #0xa + strb r0, [r4] + ldrb r0, [r5, #0x15] + bl sub_0806F5B0 + strb r0, [r5, #0x14] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x19 + adds r1, r5, #0 + adds r1, #0x70 + ldrb r1, [r1] + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + adds r1, #4 + adds r1, r0, r1 + adds r0, r5, #0 + adds r0, #0x58 + adds r6, r4, #0 + ldrb r0, [r0] + cmp r1, r0 + beq _08064376 + adds r0, r5, #0 + bl InitializeAnimation +_08064376: + movs r0, #0 + ldrsb r0, [r6, r0] + cmp r0, #0 + bne _080643AC + ldr r1, _080643D0 @ =gPlayerEntity + adds r0, r5, #0 + bl GetFacingDirection + bl sub_0806F5B0 + strb r0, [r5, #0x14] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x19 + adds r1, r5, #0 + adds r1, #0x70 + ldrb r1, [r1] + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + adds r1, r0, r1 + adds r0, r5, #0 + adds r0, #0x58 + ldrb r0, [r0] + cmp r1, r0 + beq _080643AC + adds r0, r5, #0 + bl InitializeAnimation +_080643AC: + adds r0, r5, #0 + bl sub_0806ED78 + movs r0, #0x36 + ldrsh r4, [r5, r0] + ldr r0, _080643D0 @ =gPlayerEntity + ldrh r0, [r0, #0x36] + strh r0, [r5, #0x36] + cmp r4, #0 + bge _080643CC + lsls r0, r0, #0x10 + cmp r0, #0 + bne _080643CC + adds r0, r5, #0 + bl CreateDustSmall +_080643CC: + pop {r4, r5, r6, pc} + .align 2, 0 +_080643D0: .4byte gPlayerEntity +_080643D4: .4byte gScreenTransition + .syntax divided diff --git a/asm/non_matching/guardWithSpear/sub_080643D8.inc b/asm/non_matching/guardWithSpear/sub_080643D8.inc new file mode 100644 index 00000000..75d9f6e8 --- /dev/null +++ b/asm/non_matching/guardWithSpear/sub_080643D8.inc @@ -0,0 +1,40 @@ + .syntax unified + push {r4, lr} + adds r4, r0, #0 + movs r0, #2 + bl CheckGlobalFlag + cmp r0, #0 + bne _080643EA + movs r3, #0 + b _08064406 +_080643EA: + movs r0, #2 + bl GetInventoryValue + cmp r0, #0 + bne _080643F8 + movs r3, #1 + b _08064406 +_080643F8: + movs r0, #3 + bl GetInventoryValue + movs r3, #3 + cmp r0, #0 + bne _08064406 + movs r3, #2 +_08064406: + ldrb r1, [r4, #0xb] + rsbs r0, r1, #0 + orrs r0, r1 + lsrs r0, r0, #0x1f + ldr r2, _08064424 @ =gUnk_0810F6D4 + lsls r1, r3, #1 + lsls r0, r0, #3 + adds r1, r1, r0 + adds r1, r1, r2 + ldrh r0, [r1] + adds r1, r4, #0 + bl TextboxNoOverlap + pop {r4, pc} + .align 2, 0 +_08064424: .4byte gUnk_0810F6D4 + .syntax divided diff --git a/asm/non_matching/guardWithSpear/sub_08064428.inc b/asm/non_matching/guardWithSpear/sub_08064428.inc new file mode 100644 index 00000000..9ac9ff63 --- /dev/null +++ b/asm/non_matching/guardWithSpear/sub_08064428.inc @@ -0,0 +1,37 @@ + .syntax unified + push {lr} + adds r3, r0, #0 + ldr r0, _0806444C @ =gSave + ldrb r0, [r0, #8] + subs r1, r0, #2 + cmp r1, #0 + bge _08064438 + movs r1, #0 +_08064438: + ldrb r2, [r3, #0xb] + movs r0, #0x80 + ands r0, r2 + cmp r0, #0 + bne _08064454 + ldrb r0, [r3, #0xb] + lsls r0, r0, #3 + ldr r1, _08064450 @ =gUnk_0810CF4C + b _08064460 + .align 2, 0 +_0806444C: .4byte gSave +_08064450: .4byte gUnk_0810CF4C +_08064454: + movs r0, #0x7f + ands r0, r2 + lsls r0, r0, #6 + lsls r1, r1, #3 + ldr r2, _0806446C @ =gUnk_0810D0A4 + adds r1, r1, r2 +_08064460: + adds r1, r0, r1 + adds r0, r3, #0 + bl ShowNPCDialogue + pop {pc} + .align 2, 0 +_0806446C: .4byte gUnk_0810D0A4 + .syntax divided diff --git a/asm/non_matching/guardWithSpear/sub_080644C8.inc b/asm/non_matching/guardWithSpear/sub_080644C8.inc new file mode 100644 index 00000000..a588e9e2 --- /dev/null +++ b/asm/non_matching/guardWithSpear/sub_080644C8.inc @@ -0,0 +1,36 @@ + .syntax unified + push {r4, lr} + adds r2, r0, #0 + movs r1, #0x2e + ldrsh r0, [r2, r1] + ldr r3, _08064500 @ =gRoomControls + movs r4, #0xa + ldrsh r1, [r3, r4] + subs r1, r0, r1 + adds r0, r1, #0 + adds r0, #8 + cmp r0, #0 + blt _08064504 + adds r0, r1, #0 + subs r0, #8 + cmp r0, #0xf0 + bgt _08064504 + movs r0, #0x32 + ldrsh r1, [r2, r0] + movs r2, #0xc + ldrsh r0, [r3, r2] + subs r0, r1, r0 + cmp r0, #0 + blt _08064504 + subs r0, #0x18 + cmp r0, #0xa0 + bgt _08064504 + movs r0, #1 + b _08064506 + .align 2, 0 +_08064500: .4byte gRoomControls +_08064504: + movs r0, #0 +_08064506: + pop {r4, pc} + .syntax divided diff --git a/asm/non_matching/helmasaur/sub_0802BD8C.inc b/asm/non_matching/helmasaur/sub_0802BD8C.inc deleted file mode 100644 index 3e53e7d0..00000000 --- a/asm/non_matching/helmasaur/sub_0802BD8C.inc +++ /dev/null @@ -1,47 +0,0 @@ - - .syntax unified - - .text - - push {r4, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xe] - cmp r0, #0 - beq _0802BD9C - subs r0, #1 - strb r0, [r4, #0xe] - b _0802BDDE -_0802BD9C: - adds r0, r4, #0 - movs r1, #1 - bl sub_08049FDC - cmp r0, #0 - beq _0802BDCA - adds r0, r4, #0 - movs r1, #1 - movs r2, #0x10 - bl sub_0804A024 - adds r1, r0, #0 - cmp r1, #0xff - beq _0802BDCA - adds r0, r4, #0 - adds r0, #0x79 - ldrb r0, [r0] - cmp r1, r0 - beq _0802BDCA - adds r0, r4, #0 - bl sub_0802C058 - b _0802BDDE -_0802BDCA: - adds r0, r4, #0 - bl sub_0802C020 - adds r1, r0, #0 - ldrb r0, [r4, #0x15] - cmp r1, r0 - beq _0802BDDE - adds r0, r4, #0 - bl sub_0802C058 -_0802BDDE: - pop {r4, pc} - - .syntax divided diff --git a/asm/non_matching/kid/Kid_Head.inc b/asm/non_matching/kid/Kid_Head.inc index 4d98f33f..acd3574a 100644 --- a/asm/non_matching/kid/Kid_Head.inc +++ b/asm/non_matching/kid/Kid_Head.inc @@ -1,7 +1,6 @@ .syntax unified .text -Kid_Head: @ 0x08062834 push {r4, r5, r6, r7, lr} adds r5, r0, #0 ldrb r4, [r5, #0xa] diff --git a/asm/non_matching/kid/sub_080621AC.inc b/asm/non_matching/kid/sub_080621AC.inc index e474a346..63614833 100644 --- a/asm/non_matching/kid/sub_080621AC.inc +++ b/asm/non_matching/kid/sub_080621AC.inc @@ -1,7 +1,6 @@ .syntax unified .text -sub_080621AC: @ 0x080621AC push {r4, r5, r6, lr} adds r4, r0, #0 ldrb r5, [r4, #0xc] diff --git a/asm/non_matching/kid/sub_080622F4.inc b/asm/non_matching/kid/sub_080622F4.inc index 94e8ae01..66a11664 100644 --- a/asm/non_matching/kid/sub_080622F4.inc +++ b/asm/non_matching/kid/sub_080622F4.inc @@ -1,7 +1,6 @@ .syntax unified .text -sub_080622F4: @ 0x080622F4 push {r4, r5, r6, r7, lr} mov r7, sb mov r6, r8 diff --git a/asm/non_matching/kid/sub_0806252C.inc b/asm/non_matching/kid/sub_0806252C.inc index c647a74c..c8148e64 100644 --- a/asm/non_matching/kid/sub_0806252C.inc +++ b/asm/non_matching/kid/sub_0806252C.inc @@ -1,7 +1,6 @@ .syntax unified .text -sub_0806252C: @ 0x0806252C push {r4, r5, r6, r7, lr} mov r7, sl mov r6, sb diff --git a/asm/non_matching/kid/sub_08062634.inc b/asm/non_matching/kid/sub_08062634.inc index 0fe2a5cf..8d76db7c 100644 --- a/asm/non_matching/kid/sub_08062634.inc +++ b/asm/non_matching/kid/sub_08062634.inc @@ -1,7 +1,6 @@ .syntax unified .text -sub_08062634: @ 0x08062634 push {r4, r5, lr} adds r5, r0, #0 ldrb r4, [r5, #0xb] diff --git a/asm/non_matching/kid/sub_0806265C.inc b/asm/non_matching/kid/sub_0806265C.inc index b4f5dcf9..7d7aa455 100644 --- a/asm/non_matching/kid/sub_0806265C.inc +++ b/asm/non_matching/kid/sub_0806265C.inc @@ -1,7 +1,6 @@ .syntax unified .text -sub_0806265C: @ 0x0806265C push {lr} adds r2, r0, #0 ldr r3, _08062674 @ =gSave diff --git a/asm/non_matching/kid/sub_080626E0.inc b/asm/non_matching/kid/sub_080626E0.inc index ebdce74f..c0a6e841 100644 --- a/asm/non_matching/kid/sub_080626E0.inc +++ b/asm/non_matching/kid/sub_080626E0.inc @@ -1,7 +1,6 @@ .syntax unified .text -sub_080626E0: @ 0x080626E0 push {r4, r5, lr} adds r5, r0, #0 adds r4, r1, #0 diff --git a/asm/non_matching/kid/sub_08062948.inc b/asm/non_matching/kid/sub_08062948.inc index e698b073..6e77f2ee 100644 --- a/asm/non_matching/kid/sub_08062948.inc +++ b/asm/non_matching/kid/sub_08062948.inc @@ -1,7 +1,6 @@ .syntax unified .text -sub_08062948: @ 0x08062948 push {r4, r5, r6, lr} adds r4, r0, #0 adds r6, r1, #0 diff --git a/asm/non_matching/librarians/Librarians.inc b/asm/non_matching/librarians/Librarians.inc new file mode 100644 index 00000000..80ec2181 --- /dev/null +++ b/asm/non_matching/librarians/Librarians.inc @@ -0,0 +1,32 @@ + .syntax unified + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _0806BA18 + movs r0, #1 + strb r0, [r4, #0xc] + adds r0, r4, #0 + bl sub_0807DD50 + ldr r1, _0806BA30 @ =gUnk_08114F30 + ldrb r2, [r4, #0x19] + lsrs r0, r2, #6 + adds r0, r0, r1 + ldrb r1, [r0] + lsls r1, r1, #6 + movs r0, #0x3f + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #0x19] +_0806BA18: + adds r0, r4, #0 + movs r1, #0 + bl ExecuteScriptForEntity + adds r0, r4, #0 + bl HandleEntity0x82Actions + adds r0, r4, #0 + bl GetNextFrame + pop {r4, pc} + .align 2, 0 +_0806BA30: .4byte gUnk_08114F30 + .syntax divided diff --git a/asm/non_matching/librarians/sub_0806BA34.inc b/asm/non_matching/librarians/sub_0806BA34.inc new file mode 100644 index 00000000..ca7a41f4 --- /dev/null +++ b/asm/non_matching/librarians/sub_0806BA34.inc @@ -0,0 +1,114 @@ + .syntax unified + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + mov sb, r0 + adds r4, r1, #0 + ldr r0, _0806BA58 @ =0x00004912 + mov r8, r0 + movs r0, #0 + str r0, [r4, #0x14] + movs r0, #0x73 + bl CheckLocalFlag + cmp r0, #0 + beq _0806BA60 + ldr r0, _0806BA5C @ =0x00004913 + mov r8, r0 + b _0806BB06 + .align 2, 0 +_0806BA58: .4byte 0x00004912 +_0806BA5C: .4byte 0x00004913 +_0806BA60: + movs r0, #0x39 + bl GetInventoryValue + adds r7, r0, #0 + movs r0, #0x3a + bl GetInventoryValue + adds r6, r0, #0 + movs r0, #0x3b + bl GetInventoryValue + adds r5, r0, #0 + cmp r7, #1 + bne _0806BA88 + ldr r0, _0806BA84 @ =0x00004906 + mov r8, r0 + str r7, [r4, #0x14] + b _0806BAA2 + .align 2, 0 +_0806BA84: .4byte 0x00004906 +_0806BA88: + cmp r6, #1 + bne _0806BA98 + ldr r0, _0806BA94 @ =0x00004907 + mov r8, r0 + str r6, [r4, #0x14] + b _0806BAA2 + .align 2, 0 +_0806BA94: .4byte 0x00004907 +_0806BA98: + cmp r5, #1 + bne _0806BAB4 + ldr r0, _0806BAB0 @ =0x00004908 + mov r8, r0 + str r5, [r4, #0x14] +_0806BAA2: + movs r0, #0x6b + bl SetLocalFlag + movs r0, #0x6a + bl SetLocalFlag + b _0806BB06 + .align 2, 0 +_0806BAB0: .4byte 0x00004908 +_0806BAB4: + movs r0, #0x6a + bl CheckLocalFlag + cmp r0, #0 + beq _0806BB06 + movs r0, #0x6b + bl CheckLocalFlag + cmp r0, #0 + bne _0806BAD0 + ldr r0, _0806BACC @ =0x00004901 + b _0806BAD6 + .align 2, 0 +_0806BACC: .4byte 0x00004901 +_0806BAD0: + cmp r7, #0 + bne _0806BAE4 + ldr r0, _0806BAE0 @ =0x00004902 +_0806BAD6: + mov r8, r0 + movs r0, #0x6b + bl SetLocalFlag + b _0806BB06 + .align 2, 0 +_0806BAE0: .4byte 0x00004902 +_0806BAE4: + cmp r6, #0 + bne _0806BAF8 + ldr r0, _0806BAF4 @ =0x00004903 + mov r8, r0 + movs r0, #0x6d + bl SetLocalFlag + b _0806BB06 + .align 2, 0 +_0806BAF4: .4byte 0x00004903 +_0806BAF8: + cmp r5, #0 + bne _0806BB06 + ldr r0, _0806BB18 @ =0x00004904 + mov r8, r0 + movs r0, #0x70 + bl SetLocalFlag +_0806BB06: + mov r0, r8 + mov r1, sb + bl TextboxNoOverlap + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0806BB18: .4byte 0x00004904 + .syntax divided diff --git a/asm/non_matching/m4a/CgbModVol.inc b/asm/non_matching/m4a/CgbModVol.inc deleted file mode 100644 index d1015d19..00000000 --- a/asm/non_matching/m4a/CgbModVol.inc +++ /dev/null @@ -1,64 +0,0 @@ - - .syntax unified - - .text - - push {r4, lr} - adds r2, r0, #0 - ldrb r0, [r2, #2] - ldrb r1, [r2, #3] - lsls r3, r0, #0x18 - lsrs r4, r3, #0x18 - lsls r0, r1, #0x18 - lsrs r1, r0, #0x18 - cmp r4, r1 - blo _080B0B0C - lsrs r0, r3, #0x19 - cmp r0, r1 - blo _080B0B18 - movs r0, #0xf - strb r0, [r2, #0x1b] - b _080B0B26 -_080B0B0C: - lsrs r0, r0, #0x19 - cmp r0, r4 - blo _080B0B18 - movs r0, #0xf0 - strb r0, [r2, #0x1b] - b _080B0B26 -_080B0B18: - movs r0, #0xff - strb r0, [r2, #0x1b] - ldrb r0, [r2, #2] - ldrb r1, [r2, #3] - adds r0, r0, r1 - lsrs r0, r0, #4 - b _080B0B36 -_080B0B26: - ldrb r0, [r2, #2] - ldrb r1, [r2, #3] - adds r0, r0, r1 - lsrs r0, r0, #4 - strb r0, [r2, #0xa] - cmp r0, #0xf - bls _080B0B38 - movs r0, #0xf -_080B0B36: - strb r0, [r2, #0xa] -_080B0B38: - ldrb r1, [r2, #0xa] - ldrb r0, [r2, #6] - muls r0, r1, r0 - adds r0, #0xf - asrs r0, r0, #4 - strb r0, [r2, #0x19] - ldrb r1, [r2, #0x1b] - ldrb r0, [r2, #0x1c] - ands r0, r1 - strb r0, [r2, #0x1b] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 - - .syntax divided diff --git a/asm/non_matching/manager15/sub_0805A9CC.inc b/asm/non_matching/manager15/sub_0805A9CC.inc index f1ce8e4d..a9cf2adc 100644 --- a/asm/non_matching/manager15/sub_0805A9CC.inc +++ b/asm/non_matching/manager15/sub_0805A9CC.inc @@ -1,4 +1,3 @@ -sub_0805A9CC: @ 0x0805A9CC push {r4, r5, lr} add r4, r0, #0 ldr r3, _0805AA4C @ =gScreen diff --git a/asm/non_matching/manager4/sub_0805795C.inc b/asm/non_matching/manager4/sub_0805795C.inc index 4f6c20b0..a74f41ed 100644 --- a/asm/non_matching/manager4/sub_0805795C.inc +++ b/asm/non_matching/manager4/sub_0805795C.inc @@ -1,4 +1,3 @@ -sub_0805795C: @ 0x0805795C push {r4, r5, r6, r7, lr} add r7, r0, #0 add r6, r1, #0 diff --git a/asm/non_matching/managerC/sub_08058D34.inc b/asm/non_matching/managerC/sub_08058D34.inc index 9f0aac05..dbbcd9e7 100644 --- a/asm/non_matching/managerC/sub_08058D34.inc +++ b/asm/non_matching/managerC/sub_08058D34.inc @@ -1,4 +1,3 @@ -sub_08058D34: @ 0x08058D34 push {r4, lr} mov r0, #0x28 bl LoadPaletteGroup diff --git a/asm/non_matching/mazaal/sub_0803BA8C.inc b/asm/non_matching/mazaal/sub_0803BA8C.inc deleted file mode 100644 index 3b0fd69f..00000000 --- a/asm/non_matching/mazaal/sub_0803BA8C.inc +++ /dev/null @@ -1,129 +0,0 @@ - - .syntax unified - - push {r4, r5, r6, lr} - adds r6, r0, #0 - adds r5, r1, #0 - movs r1, #0 - adds r4, r6, #0 - adds r4, #0x74 - ldrb r3, [r4] - movs r2, #0xe0 - ands r2, r3 - cmp r2, #0 - bne _0803BAEC - cmp r3, #0 - bne _0803BAD2 - adds r2, r6, #0 - adds r2, #0x75 - ldrb r0, [r2] - adds r0, #1 - strb r0, [r2] - lsls r0, r0, #0x18 - lsrs r0, r0, #0x18 - cmp r0, #9 - bls _0803BABA - strb r1, [r2] -_0803BABA: - ldrb r0, [r6, #0xa] - cmp r0, #2 - bne _0803BAC8 - ldr r1, _0803BAC4 @ =gUnk_080CFD30 - b _0803BACA - .align 2, 0 -_0803BAC4: .4byte gUnk_080CFD30 -_0803BAC8: - ldr r1, _0803BAE8 @ =gUnk_080CFD44 -_0803BACA: - ldrb r0, [r2] - lsls r0, r0, #1 - adds r0, r0, r1 - ldrh r1, [r0] -_0803BAD2: - adds r2, r6, #0 - adds r2, #0x74 - ldrb r0, [r2] - adds r0, #1 - strb r0, [r2] - cmp r5, r0 - bhi _0803BB18 - movs r0, #0 - strb r0, [r2] - b _0803BB18 - .align 2, 0 -_0803BAE8: .4byte gUnk_080CFD44 -_0803BAEC: - movs r0, #0x80 - ands r0, r2 - cmp r0, #0 - bne _0803BB18 - movs r0, #0x80 - orrs r0, r3 - strb r0, [r4] - movs r0, #0x20 - ands r2, r0 - cmp r2, #0 - beq _0803BB0C - ldr r1, _0803BB08 @ =gUnk_080CFD58 - b _0803BB0E - .align 2, 0 -_0803BB08: .4byte gUnk_080CFD58 -_0803BB0C: - ldr r1, _0803BB78 @ =gUnk_080CFD5C -_0803BB0E: - ldrb r0, [r6, #0xa] - subs r0, #2 - lsls r0, r0, #1 - adds r0, r0, r1 - ldrh r1, [r0] -_0803BB18: - cmp r1, #0 - beq _0803BB74 - adds r0, r6, #0 - bl sub_0801D2B4 - ldr r0, [r6, #0x50] - ldr r4, [r0, #0x78] - ldrb r1, [r6, #0x1a] - lsls r1, r1, #0x1c - lsrs r1, r1, #0x1c - ldrb r2, [r4, #0x1a] - movs r3, #0x10 - rsbs r3, r3, #0 - adds r0, r3, #0 - ands r0, r2 - orrs r0, r1 - strb r0, [r4, #0x1a] - ldr r0, [r6, #0x50] - ldr r5, [r0, #0x78] - ldrb r1, [r6, #0x1a] - lsls r1, r1, #0x1c - lsrs r1, r1, #0x18 - ldrb r4, [r5, #0x1a] - movs r2, #0xf - adds r0, r2, #0 - ands r0, r4 - orrs r0, r1 - strb r0, [r5, #0x1a] - ldr r0, [r6, #0x50] - ldr r4, [r0, #0x54] - ldrb r0, [r6, #0x1a] - lsls r0, r0, #0x1c - lsrs r0, r0, #0x1c - ldrb r1, [r4, #0x1a] - ands r3, r1 - orrs r3, r0 - strb r3, [r4, #0x1a] - ldr r0, [r6, #0x50] - ldr r3, [r0, #0x54] - ldrb r0, [r6, #0x1a] - lsls r0, r0, #0x1c - lsrs r0, r0, #0x18 - ldrb r1, [r3, #0x1a] - ands r2, r1 - orrs r2, r0 - strb r2, [r3, #0x1a] -_0803BB74: - pop {r4, r5, r6, pc} - .align 2, 0 -_0803BB78: .4byte gUnk_080CFD5C - .syntax divided diff --git a/asm/non_matching/minishEzlo/MinishEzlo_Head.inc b/asm/non_matching/minishEzlo/MinishEzlo_Head.inc new file mode 100644 index 00000000..f0742d98 --- /dev/null +++ b/asm/non_matching/minishEzlo/MinishEzlo_Head.inc @@ -0,0 +1,54 @@ + .syntax unified + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + adds r0, #0x5b + ldrb r1, [r0] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _08063006 + movs r6, #1 + movs r5, #0 + b _0806300A +_08063006: + movs r6, #0 + movs r5, #1 +_0806300A: + adds r0, r4, #0 + adds r0, #0x5b + ldrb r1, [r0] + movs r0, #8 + ands r0, r1 + movs r7, #0x8e + lsls r7, r7, #1 + cmp r0, #0 + beq _0806301E + movs r7, #0x16 +_0806301E: + adds r0, r4, #0 + adds r0, #0x5a + ldrb r2, [r0] + movs r0, #0x81 + rsbs r0, r0, #0 + ands r2, r0 + subs r2, #1 + adds r0, r4, #0 + adds r1, r6, #0 + bl SetExtraSpriteFrame + ldrb r2, [r4, #0x1e] + adds r0, r4, #0 + adds r1, r5, #0 + bl SetExtraSpriteFrame + adds r0, r4, #0 + adds r1, r5, #0 + adds r2, r7, #0 + bl sub_0806FF10 + adds r0, r4, #0 + adds r1, r5, #0 + adds r2, r6, #0 + bl SetSpriteSubEntryOffsetData1 + adds r0, r4, #0 + bl sub_0807000C + pop {r4, r5, r6, r7, pc} + .align 2, 0 + .syntax divided diff --git a/asm/minishEzlo.s b/asm/non_matching/minishEzlo/sub_080630A4.inc similarity index 52% rename from asm/minishEzlo.s rename to asm/non_matching/minishEzlo/sub_080630A4.inc index e6c2ea60..4a041f21 100644 --- a/asm/minishEzlo.s +++ b/asm/non_matching/minishEzlo/sub_080630A4.inc @@ -1,164 +1,4 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - .syntax unified - - .text - - - thumb_func_start MinishEzlo -MinishEzlo: @ 0x08062F70 - push {r4, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xc] - cmp r0, #0 - bne _08062FA0 - ldr r1, _08062FE8 @ =gUnk_0810C48C - adds r0, r4, #0 - bl LoadExtraSpriteData - cmp r0, #0 - beq _08062FE4 - ldrb r0, [r4, #0xc] - adds r0, #1 - strb r0, [r4, #0xc] - ldrb r0, [r4, #0xe] - lsls r0, r0, #1 - strb r0, [r4, #0x14] - adds r0, r4, #0 - movs r1, #2 - bl sub_0805E3A0 - adds r0, r4, #0 - bl sub_0807DD50 -_08062FA0: - adds r0, r4, #0 - movs r1, #0 - bl ExecuteScriptForEntity - adds r0, r4, #0 - bl HandleEntity0x82Actions - adds r0, r4, #0 - bl GetNextFrame - adds r4, #0x5b - ldrb r1, [r4] - movs r0, #0x10 - ands r0, r1 - cmp r0, #0 - beq _08062FCC - movs r0, #0xef - ands r0, r1 - strb r0, [r4] - ldr r0, _08062FEC @ =0x000001CF - bl EnqueueSFX -_08062FCC: - ldrb r1, [r4] - movs r0, #0x20 - ands r0, r1 - cmp r0, #0 - beq _08062FE4 - movs r0, #0xdf - ands r0, r1 - strb r0, [r4] - movs r0, #0x88 - lsls r0, r0, #2 - bl EnqueueSFX -_08062FE4: - pop {r4, pc} - .align 2, 0 -_08062FE8: .4byte gUnk_0810C48C -_08062FEC: .4byte 0x000001CF - - thumb_func_start MinishEzlo_Head -MinishEzlo_Head: @ 0x08062FF0 - push {r4, r5, r6, r7, lr} - adds r4, r0, #0 - adds r0, #0x5b - ldrb r1, [r0] - movs r0, #4 - ands r0, r1 - cmp r0, #0 - beq _08063006 - movs r6, #1 - movs r5, #0 - b _0806300A -_08063006: - movs r6, #0 - movs r5, #1 -_0806300A: - adds r0, r4, #0 - adds r0, #0x5b - ldrb r1, [r0] - movs r0, #8 - ands r0, r1 - movs r7, #0x8e - lsls r7, r7, #1 - cmp r0, #0 - beq _0806301E - movs r7, #0x16 -_0806301E: - adds r0, r4, #0 - adds r0, #0x5a - ldrb r2, [r0] - movs r0, #0x81 - rsbs r0, r0, #0 - ands r2, r0 - subs r2, #1 - adds r0, r4, #0 - adds r1, r6, #0 - bl SetExtraSpriteFrame - ldrb r2, [r4, #0x1e] - adds r0, r4, #0 - adds r1, r5, #0 - bl SetExtraSpriteFrame - adds r0, r4, #0 - adds r1, r5, #0 - adds r2, r7, #0 - bl sub_0806FF10 - adds r0, r4, #0 - adds r1, r5, #0 - adds r2, r6, #0 - bl SetSpriteSubEntryOffsetData1 - adds r0, r4, #0 - bl sub_0807000C - pop {r4, r5, r6, r7, pc} - .align 2, 0 - - thumb_func_start sub_0806305C -sub_0806305C: @ 0x0806305C - push {r4, lr} - adds r4, r0, #0 - adds r2, r4, #0 - adds r2, #0x29 - ldrb r1, [r2] - movs r0, #0x39 - rsbs r0, r0, #0 - ands r0, r1 - strb r0, [r2] - ldrb r0, [r4, #0x19] - movs r1, #3 - orrs r0, r1 - strb r0, [r4, #0x19] - movs r2, #0x80 - lsls r2, r2, #1 - str r2, [r4, #0x6c] - str r2, [r4, #0x70] - adds r0, r4, #0 - adds r1, r2, #0 - movs r3, #0 - bl sub_0805EC9C - adds r0, r4, #0 - movs r1, #0x10 - bl InitAnimationForceUpdate - adds r4, #0x80 - movs r0, #0x10 - strh r0, [r4] - ldr r0, _080630A0 @ =0x0000016F - bl SoundReq - pop {r4, pc} - .align 2, 0 -_080630A0: .4byte 0x0000016F - - thumb_func_start sub_080630A4 -sub_080630A4: @ 0x080630A4 push {r4, r5, r6, lr} adds r4, r0, #0 adds r0, #0x6d @@ -332,3 +172,4 @@ _080631DC: .align 2, 0 _080631E0: .4byte 0xFFFE0000 _080631E4: .4byte gActiveScriptInfo + .syntax divided diff --git a/asm/non_matching/mountainMinish/MountainMinish_Head.inc b/asm/non_matching/mountainMinish/MountainMinish_Head.inc new file mode 100644 index 00000000..b51e3e3c --- /dev/null +++ b/asm/non_matching/mountainMinish/MountainMinish_Head.inc @@ -0,0 +1,67 @@ + .syntax unified + push {r4, r5, lr} + adds r5, r0, #0 + adds r0, #0x5a + ldrb r4, [r0] + movs r0, #0x81 + rsbs r0, r0, #0 + ands r4, r0 + ldrb r2, [r5, #0x1e] + adds r0, r5, #0 + movs r1, #1 + bl SetExtraSpriteFrame + movs r0, #0x40 + ands r0, r4 + cmp r0, #0 + beq _08068226 + movs r0, #0xe1 + rsbs r0, r0, #0 + ands r4, r0 + adds r2, r4, #4 + adds r0, r5, #0 + movs r1, #0 + bl SetExtraSpriteFrame + adds r0, r5, #0 + movs r1, #2 + movs r2, #0xff + bl SetExtraSpriteFrame + adds r0, r5, #0 + movs r1, #1 + movs r2, #0 + bl SetSpriteSubEntryOffsetData1 + b _08068268 +_08068226: + movs r0, #0x20 + ands r0, r4 + cmp r0, #0 + beq _08068254 + adds r0, r5, #0 + movs r1, #0 + movs r2, #0xff + bl SetExtraSpriteFrame + movs r0, #0xe1 + rsbs r0, r0, #0 + ands r4, r0 + adds r0, r5, #0 + movs r1, #2 + adds r2, r4, #0 + bl SetExtraSpriteFrame + adds r0, r5, #0 + movs r1, #1 + movs r2, #2 + bl SetSpriteSubEntryOffsetData1 + b _08068268 +_08068254: + adds r0, r5, #0 + movs r1, #0 + movs r2, #0xff + bl SetExtraSpriteFrame + adds r0, r5, #0 + movs r1, #2 + movs r2, #0xff + bl SetExtraSpriteFrame +_08068268: + adds r0, r5, #0 + bl sub_0807000C + pop {r4, r5, pc} + .syntax divided diff --git a/asm/non_matching/mountainMinish/sub_08067EF0.inc b/asm/non_matching/mountainMinish/sub_08067EF0.inc new file mode 100644 index 00000000..3087d0e6 --- /dev/null +++ b/asm/non_matching/mountainMinish/sub_08067EF0.inc @@ -0,0 +1,249 @@ + .syntax unified + push {r4, r5, r6, r7, lr} + adds r5, r0, #0 + ldrb r4, [r5, #0xc] + cmp r4, #1 + beq _08067F58 + cmp r4, #1 + bgt _08067F04 + cmp r4, #0 + beq _08067F10 + b _0806801A +_08067F04: + cmp r4, #2 + beq _08067FDC + cmp r4, #3 + bne _08067F0E + b _08068000 +_08067F0E: + b _0806801A +_08067F10: + ldr r1, _08067F50 @ =gUnk_08111358 + adds r0, r5, #0 + bl LoadExtraSpriteData + cmp r0, #0 + bne _08067F1E + b _080680F0 +_08067F1E: + 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, #0xa] + 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 + ldr r1, _08067F54 @ =gUnk_08111304 + ldrb r0, [r5, #0xb] + adds r0, r0, r1 + ldrb r1, [r0] + b _08067FF2 + .align 2, 0 +_08067F50: .4byte gUnk_08111358 +_08067F54: .4byte gUnk_08111304 +_08067F58: + adds r4, r5, #0 + adds r4, #0x39 + movs r0, #0 + ldrsb r0, [r4, r0] + cmp r0, #2 + bne _08067F98 + movs r1, #0 + movs r0, #3 + strb r0, [r5, #0xc] + strb r1, [r4] + adds r0, r5, #0 + adds r0, #0x58 + ldrb r0, [r0] + adds r1, r5, #0 + adds r1, #0x69 + strb r0, [r1] + ldr r1, _08067F94 @ =gPlayerEntity + adds r0, r5, #0 + bl GetFacingDirection + bl sub_0806F5A4 + adds r1, r0, #0 + adds r0, r5, #0 + bl InitializeAnimation + adds r0, r5, #0 + bl sub_0806F118 + b _0806801A + .align 2, 0 +_08067F94: .4byte gPlayerEntity +_08067F98: + adds r0, r5, #0 + movs r1, #0 + bl ExecuteScriptForEntity + adds r0, r5, #0 + bl HandleEntity0x82Actions + ldrb r0, [r5, #0xb] + cmp r0, #3 + bne _0806801A + movs r0, #0 + ldrsb r0, [r4, r0] + cmp r0, #0 + beq _0806801A + movs r1, #0 + movs r0, #2 + strb r0, [r5, #0xc] + strb r1, [r4] + ldr r1, _08067FD8 @ =gPlayerEntity + adds r0, r5, #0 + bl GetFacingDirection + bl sub_0806F5A4 + adds r1, r0, #0 + adds r0, r5, #0 + bl InitializeAnimation + adds r0, r5, #0 + bl sub_08068190 + b _0806801A + .align 2, 0 +_08067FD8: .4byte gPlayerEntity +_08067FDC: + ldr r0, _08067FFC @ =gTextBox + ldrb r1, [r0] + movs r0, #0x7f + ands r0, r1 + cmp r0, #0 + bne _0806801A + movs r0, #1 + strb r0, [r5, #0xc] + ldrb r1, [r5, #0x14] + lsrs r1, r1, #1 + adds r1, #4 +_08067FF2: + adds r0, r5, #0 + bl InitializeAnimation + b _0806801A + .align 2, 0 +_08067FFC: .4byte gTextBox +_08068000: + adds r0, r5, #0 + bl UpdateFuseInteraction + cmp r0, #0 + beq _0806801A + movs r0, #1 + strb r0, [r5, #0xc] + adds r0, r5, #0 + adds r0, #0x69 + ldrb r1, [r0] + adds r0, r5, #0 + bl InitializeAnimation +_0806801A: + adds r0, r5, #0 + adds r0, #0x59 + ldrb r1, [r0] + adds r7, r0, #0 + cmp r1, #0xff + beq _0806802C + adds r0, r5, #0 + bl GetNextFrame +_0806802C: + adds r1, r5, #0 + adds r1, #0x5b + ldrb r2, [r1] + movs r0, #1 + ands r0, r2 + adds r6, r1, #0 + cmp r0, #0 + beq _0806807E + movs r0, #0xfe + ands r0, r2 + strb r0, [r6] + adds r0, r5, #0 + bl sub_080040A8 + cmp r0, #0 + bne _08068068 + ldr r4, _08068064 @ =gUnk_0811137A + bl Random + movs r1, #3 + bl __modsi3 + lsls r0, r0, #1 + adds r0, r0, r4 + ldrh r0, [r0] + bl SoundReq + b _0806807E + .align 2, 0 +_08068064: .4byte gUnk_0811137A +_08068068: + ldr r4, _080680F4 @ =gUnk_08111374 + bl Random + movs r1, #3 + bl __modsi3 + lsls r0, r0, #1 + adds r0, r0, r4 + ldrh r0, [r0] + bl EnqueueSFX +_0806807E: + ldrb r1, [r6] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _080680A8 + movs r0, #0xfd + ands r0, r1 + strb r0, [r6] + adds r0, r5, #0 + movs r1, #4 + movs r2, #0 + bl CreateFx + adds r1, r0, #0 + cmp r1, #0 + beq _080680A8 + ldr r3, _080680F8 @ =0xFFE80000 + adds r0, r5, #0 + movs r2, #0 + bl PositionRelative +_080680A8: + ldrb r1, [r6] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _080680D2 + movs r0, #0xfb + ands r0, r1 + strb r0, [r6] + adds r0, r5, #0 + movs r1, #0x3d + movs r2, #0x20 + bl CreateFx + adds r1, r0, #0 + cmp r1, #0 + beq _080680D2 + ldr r2, _080680FC @ =0xFFEC0000 + ldr r3, _08068100 @ =0xFFF60000 + adds r0, r5, #0 + bl PositionRelative +_080680D2: + ldrb r1, [r6] + movs r0, #8 + ands r0, r1 + cmp r0, #0 + beq _080680F0 + movs r0, #0xf7 + ands r0, r1 + strb r0, [r6] + bl Random + movs r1, #0x1f + ands r0, r1 + ldrb r1, [r7] + adds r0, r0, r1 + strb r0, [r7] +_080680F0: + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_080680F4: .4byte gUnk_08111374 +_080680F8: .4byte 0xFFE80000 +_080680FC: .4byte 0xFFEC0000 +_08068100: .4byte 0xFFF60000 + .syntax divided diff --git a/asm/non_matching/mountainMinish/sub_0806811C.inc b/asm/non_matching/mountainMinish/sub_0806811C.inc new file mode 100644 index 00000000..fc57bc7d --- /dev/null +++ b/asm/non_matching/mountainMinish/sub_0806811C.inc @@ -0,0 +1,62 @@ + .syntax unified + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xe] + adds r7, r0, #0 + cmp r7, #0 + beq _0806812E + subs r0, #1 + strb r0, [r4, #0xe] + b _0806818A +_0806812E: + movs r0, #2 + strb r0, [r4, #0xe] + adds r0, r4, #0 + movs r1, #0x20 + movs r2, #0x20 + bl sub_0806EDD8 + adds r3, r0, #0 + cmp r3, #0 + bge _08068148 + ldrb r0, [r4, #0xa] + strb r0, [r4, #0x14] + lsls r3, r0, #2 +_08068148: + ldrb r0, [r4, #0x14] + lsrs r0, r0, #1 + lsls r0, r0, #5 + asrs r1, r3, #1 + lsls r1, r1, #1 + ldr r2, _0806818C @ =gUnk_08111284 + adds r1, r1, r2 + adds r0, r0, r1 + ldrb r6, [r0] + ldrb r5, [r0, #1] + movs r0, #0x80 + ands r0, r5 + cmp r0, #0 + beq _0806816C + adds r0, r3, #0 + bl sub_0806F5B0 + strb r0, [r4, #0x14] +_0806816C: + movs r0, #0x40 + orrs r6, r0 + adds r0, r4, #0 + adds r0, #0x5a + strb r6, [r0] + movs r0, #0x7f + ands r5, r0 + strb r5, [r4, #0x1e] + adds r0, r4, #0 + adds r0, #0x58 + strb r7, [r0] + adds r1, r4, #0 + adds r1, #0x59 + movs r0, #0xff + strb r0, [r1] +_0806818A: + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0806818C: .4byte gUnk_08111284 + .syntax divided diff --git a/asm/non_matching/mountainMinish/sub_08068190.inc b/asm/non_matching/mountainMinish/sub_08068190.inc new file mode 100644 index 00000000..496f19d5 --- /dev/null +++ b/asm/non_matching/mountainMinish/sub_08068190.inc @@ -0,0 +1,37 @@ + .syntax unified + push {r4, r5, r6, lr} + adds r6, r0, #0 + ldrb r5, [r6, #0xb] + cmp r5, #8 + bls _0806819C + movs r5, #8 +_0806819C: + movs r0, #0x7e + bl CheckLocalFlag + rsbs r1, r0, #0 + orrs r1, r0 + lsrs r4, r1, #0x1f + movs r0, #0x41 + bl GetInventoryValue + cmp r0, #0 + beq _080681B4 + movs r4, #2 +_080681B4: + movs r0, #2 + bl GetInventoryValue + cmp r0, #0 + beq _080681C0 + movs r4, #3 +_080681C0: + ldr r2, _080681D4 @ =gUnk_0811130E + lsls r0, r4, #1 + lsls r1, r5, #3 + adds r0, r0, r1 + adds r0, r0, r2 + ldrh r0, [r0] + adds r1, r6, #0 + bl TextboxNoOverlap + pop {r4, r5, r6, pc} + .align 2, 0 +_080681D4: .4byte gUnk_0811130E + .syntax divided diff --git a/asm/non_matching/npc23/sub_08066490.inc b/asm/non_matching/npc23/sub_08066490.inc new file mode 100644 index 00000000..87549b7f --- /dev/null +++ b/asm/non_matching/npc23/sub_08066490.inc @@ -0,0 +1,66 @@ + .syntax unified + push {r4, r5, r6, lr} + mov ip, r0 + adds r5, r1, #0 + ldrb r1, [r0, #0xb] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _0806650A + mov r1, ip + ldrh r0, [r1, #0x2e] + adds r1, #0x86 + strh r0, [r1] + mov r0, ip + adds r0, #0x7e + ldrh r2, [r0] + adds r0, #4 + ldrh r0, [r0] + adds r3, r2, r0 + subs r4, r2, r0 + movs r6, #0x2e + ldrsh r0, [r5, r6] + cmp r0, r3 + bge _080664C6 + cmp r0, r4 + ble _080664C6 + adds r2, r0, #0 + b _080664D2 +_080664C6: + movs r2, #0x2e + ldrsh r0, [r5, r2] + adds r2, r4, #0 + cmp r0, r3 + blt _080664D2 + adds r2, r3, #0 +_080664D2: + ldrh r0, [r1] + cmp r0, r2 + bne _080664F0 + mov r1, ip + adds r1, #0x84 + ldrh r0, [r1] + cmp r0, #1 + bne _0806650A + movs r0, #0 + strh r0, [r1] + mov r0, ip + movs r1, #2 + bl InitializeAnimation + b _0806650A +_080664F0: + mov r6, ip + strh r2, [r6, #0x2e] + mov r1, ip + adds r1, #0x84 + ldrh r0, [r1] + cmp r0, #0 + bne _0806650A + movs r0, #1 + strh r0, [r1] + mov r0, ip + movs r1, #6 + bl InitializeAnimation +_0806650A: + pop {r4, r5, r6, pc} + .syntax divided diff --git a/asm/non_matching/npc23/sub_0806650C.inc b/asm/non_matching/npc23/sub_0806650C.inc new file mode 100644 index 00000000..f545b4db --- /dev/null +++ b/asm/non_matching/npc23/sub_0806650C.inc @@ -0,0 +1,57 @@ + .syntax unified + push {r4, r5, r6, r7, lr} + adds r3, r0, #0 + movs r4, #0 + ldr r1, _0806652C @ =gPlayerEntity + ldrh r5, [r1, #0x2e] + adds r7, r5, #0 + ldrh r2, [r1, #0x32] + adds r0, #0x80 + ldrh r0, [r0] + adds r0, #0x10 + adds r6, r1, #0 + cmp r2, r0 + bge _08066530 + movs r4, #4 + b _0806654C + .align 2, 0 +_0806652C: .4byte gPlayerEntity +_08066530: + adds r0, r3, #0 + adds r0, #0x7e + ldrh r1, [r0] + adds r0, r1, #2 + cmp r5, r0 + bge _0806653E + movs r4, #2 +_0806653E: + adds r0, r1, #6 + cmp r7, r0 + ble _08066546 + movs r4, #6 +_08066546: + cmp r4, #0 + bne _0806654C + strh r4, [r6, #0x24] +_0806654C: + ldrb r0, [r6, #0xc] + cmp r0, #0xf + beq _0806656A + cmp r4, #0 + bne _0806655A + movs r0, #0 + b _0806656C +_0806655A: + movs r0, #8 + movs r1, #0 + movs r2, #0 + bl sub_08078AC0 + strb r4, [r6, #0x14] + lsls r0, r4, #2 + strb r0, [r6, #0x15] +_0806656A: + movs r0, #1 +_0806656C: + pop {r4, r5, r6, r7, pc} + .align 2, 0 + .syntax divided diff --git a/asm/non_matching/npc23/sub_08066570.inc b/asm/non_matching/npc23/sub_08066570.inc new file mode 100644 index 00000000..00dc26d9 --- /dev/null +++ b/asm/non_matching/npc23/sub_08066570.inc @@ -0,0 +1,59 @@ + .syntax unified + push {r4, r5, r6, lr} + adds r5, r0, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080665DE + ldrb r0, [r5, #0xc] + cmp r0, #3 + beq _080665DE + ldr r4, _080665E0 @ =gPlayerEntity + adds r0, r5, #0 + adds r1, r4, #0 + movs r2, #0x50 + bl sub_0806FC80 + cmp r0, #0 + beq _080665DE + adds r0, r5, #0 + adds r1, r4, #0 + bl GetFacingDirection + adds r3, r0, #0 + movs r6, #1 + movs r1, #0x18 + adds r4, r3, #0 + ands r4, r1 + ldrb r0, [r5, #0x15] + adds r2, r1, #0 + ands r2, r0 + cmp r2, r4 + bne _080665C8 + adds r2, r3, #5 + movs r1, #7 + ands r2, r1 + ldrb r0, [r5, #0x15] + adds r0, #5 + ands r0, r1 + cmp r0, #2 + bhi _080665C8 + cmp r2, #2 + bhi _080665C8 + movs r6, #0 +_080665C8: + cmp r6, #0 + beq _080665DE + strb r3, [r5, #0x15] + adds r3, #4 + movs r0, #0x18 + ands r3, r0 + lsrs r3, r3, #3 + adds r0, r5, #0 + adds r1, r3, #0 + bl InitializeAnimation +_080665DE: + pop {r4, r5, r6, pc} + .align 2, 0 +_080665E0: .4byte gPlayerEntity + .syntax divided diff --git a/asm/non_matching/npc5/sub_08060FD0.inc b/asm/non_matching/npc5/sub_08060FD0.inc index 7f5cf29c..4e81f326 100644 --- a/asm/non_matching/npc5/sub_08060FD0.inc +++ b/asm/non_matching/npc5/sub_08060FD0.inc @@ -1,7 +1,6 @@ .syntax unified .text -sub_08060FD0: @ 0x08060FD0 push {r4, r5, r6, r7, lr} mov r7, sl mov r6, sb diff --git a/asm/non_matching/npc5/sub_08061170.inc b/asm/non_matching/npc5/sub_08061170.inc index ffde2fbf..fe9d7f84 100644 --- a/asm/non_matching/npc5/sub_08061170.inc +++ b/asm/non_matching/npc5/sub_08061170.inc @@ -1,7 +1,6 @@ .syntax unified .text -sub_08061170: @ 0x08061170 push {r4, r5, lr} adds r4, r0, #0 bl UpdateAnimationSingleFrame diff --git a/asm/non_matching/npc5/sub_080611D4.inc b/asm/non_matching/npc5/sub_080611D4.inc index 97048cc0..c30d3dda 100644 --- a/asm/non_matching/npc5/sub_080611D4.inc +++ b/asm/non_matching/npc5/sub_080611D4.inc @@ -1,7 +1,6 @@ .syntax unified .text -sub_080611D4: @ 0x080611D4 push {r4, lr} adds r4, r0, #0 ldrb r1, [r4, #0x14] diff --git a/asm/non_matching/npc5/sub_08061358.inc b/asm/non_matching/npc5/sub_08061358.inc index ab2190cd..fa9f4f14 100644 --- a/asm/non_matching/npc5/sub_08061358.inc +++ b/asm/non_matching/npc5/sub_08061358.inc @@ -1,7 +1,6 @@ .syntax unified .text -sub_08061358: @ 0x08061358 push {r4, r5, r6, lr} adds r4, r0, #0 ldrb r5, [r4, #0xd] diff --git a/asm/non_matching/npc5/sub_08061464.inc b/asm/non_matching/npc5/sub_08061464.inc index 7a0f024a..aaba9f38 100644 --- a/asm/non_matching/npc5/sub_08061464.inc +++ b/asm/non_matching/npc5/sub_08061464.inc @@ -1,7 +1,6 @@ .syntax unified .text -sub_08061464: @ 0x08061464 push {r4, r5, r6, r7, lr} mov r7, sb mov r6, r8 diff --git a/asm/non_matching/npc5/sub_08061B18.inc b/asm/non_matching/npc5/sub_08061B18.inc index f420ee89..7875a8d3 100644 --- a/asm/non_matching/npc5/sub_08061B18.inc +++ b/asm/non_matching/npc5/sub_08061B18.inc @@ -1,7 +1,6 @@ .syntax unified .text -sub_08061B18: @ 0x08061B18 push {r4, lr} adds r4, r0, #0 adds r1, r4, #0 diff --git a/asm/phonograph.s b/asm/non_matching/phonograph/sub_0806E964.inc similarity index 68% rename from asm/phonograph.s rename to asm/non_matching/phonograph/sub_0806E964.inc index dc6a64f8..0f7e9760 100644 --- a/asm/phonograph.s +++ b/asm/non_matching/phonograph/sub_0806E964.inc @@ -1,50 +1,4 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - .syntax unified - - .text - - thumb_func_start Phonograph -Phonograph: @ 0x0806E91C - push {r4, r5, lr} - adds r5, r0, #0 - ldrb r0, [r5, #0xc] - cmp r0, #0 - bne _0806E950 - adds r0, #1 - strb r0, [r5, #0xc] - ldrb r1, [r5, #0x18] - movs r0, #4 - rsbs r0, r0, #0 - ands r0, r1 - movs r1, #1 - orrs r0, r1 - strb r0, [r5, #0x18] - adds r1, r5, #0 - adds r1, #0x68 - movs r4, #0 - movs r0, #1 - strh r0, [r1] - adds r1, #2 - ldr r0, _0806E960 @ =0x0000FFFF - strh r0, [r1] - adds r0, r5, #0 - bl sub_0807DD64 - strb r4, [r5, #0x1e] -_0806E950: - adds r0, r5, #0 - movs r1, #0 - bl ExecuteScriptForEntity - adds r0, r5, #0 - bl HandleEntity0x82Actions - pop {r4, r5, pc} - .align 2, 0 -_0806E960: .4byte 0x0000FFFF - - thumb_func_start sub_0806E964 -sub_0806E964: @ 0x0806E964 push {r4, r5, r6, r7, lr} mov r7, sb mov r6, r8 @@ -225,26 +179,4 @@ _0806EAAA: .align 2, 0 _0806EAB4: .4byte 0x80010000 _0806EAB8: .4byte gActiveScriptInfo - - thumb_func_start sub_0806EABC -sub_0806EABC: @ 0x0806EABC - push {r4, lr} - adds r4, r1, #0 - bl sub_08050384 - ldr r1, _0806EAE0 @ =gUnk_020227E8 - ldr r2, _0806EAE4 @ =0x00202020 - adds r0, r4, #0 - bl sub_08057044 - ldr r0, _0806EAE8 @ =0x00003302 - ldr r1, _0806EAEC @ =gUnk_081146B8 - bl sub_0805F46C - ldr r1, _0806EAF0 @ =gScreen - movs r0, #1 - strh r0, [r1, #0xe] - pop {r4, pc} - .align 2, 0 -_0806EAE0: .4byte gUnk_020227E8 -_0806EAE4: .4byte 0x00202020 -_0806EAE8: .4byte 0x00003302 -_0806EAEC: .4byte gUnk_081146B8 -_0806EAF0: .4byte gScreen + .syntax divided diff --git a/asm/non_matching/picolyteBottles/sub_0806DF74.inc b/asm/non_matching/picolyteBottles/sub_0806DF74.inc new file mode 100644 index 00000000..b18ebae9 --- /dev/null +++ b/asm/non_matching/picolyteBottles/sub_0806DF74.inc @@ -0,0 +1,34 @@ + .syntax unified + push {r4, lr} + adds r4, r0, #0 + movs r1, #0 + bl sub_0807DD94 + ldrb r0, [r4, #0xe] + cmp r0, #0xff + beq _0806DFB0 + adds r0, r4, #0 + adds r0, #0x44 + ldrb r0, [r0] + cmp r0, #0 + beq _0806DF96 + ldr r1, [r4, #0x70] + ldrb r0, [r1, #0xe] + adds r0, #1 + strb r0, [r1, #0xe] +_0806DF96: + ldr r1, [r4, #0x68] + ldrb r0, [r1, #0xe] + adds r0, #1 + strb r0, [r1, #0xe] + ldr r1, [r4, #0x6c] + ldrb r0, [r1, #0xe] + adds r0, #1 + strb r0, [r1, #0xe] + movs r0, #0xff + strb r0, [r4, #0xe] + movs r0, #0 + bl SetRoomFlag +_0806DFB0: + pop {r4, pc} + .align 2, 0 + .syntax divided diff --git a/asm/non_matching/picolyteBottles/sub_0806E014.inc b/asm/non_matching/picolyteBottles/sub_0806E014.inc new file mode 100644 index 00000000..f00a6ec0 --- /dev/null +++ b/asm/non_matching/picolyteBottles/sub_0806E014.inc @@ -0,0 +1,95 @@ + .syntax unified + push {r4, r5, r6, r7, lr} + adds r5, r0, #0 + bl Random + movs r1, #0x70 + ands r1, r0 + lsrs r4, r1, #4 + movs r0, #0xff + strb r0, [r5, #0xb] + movs r0, #1 + rsbs r0, r0, #0 + adds r7, r0, #0 + strb r0, [r5, #0xe] + movs r0, #0x93 + bl CheckLocalFlag + adds r1, r0, #0 + cmp r1, #0 + bne _0806E088 + adds r0, r5, #0 + adds r0, #0x44 + strb r1, [r0] + lsls r1, r4, #1 + ldr r0, _0806E084 @ =gUnk_081142CC + adds r6, r1, r0 + ldr r1, [r5, #0x68] + ldrb r0, [r6] + strb r0, [r1, #0xf] + ldr r1, [r5, #0x68] + movs r4, #0x90 + lsls r4, r4, #0xf + adds r0, r5, #0 + adds r2, r4, #0 + adds r3, r4, #0 + bl PositionRelative + ldr r1, [r5, #0x6c] + ldrb r0, [r6, #1] + strb r0, [r1, #0xf] + ldr r1, [r5, #0x6c] + movs r2, #0xd0 + lsls r2, r2, #0xf + adds r0, r5, #0 + adds r3, r4, #0 + bl PositionRelative + ldr r1, [r5, #0x70] + ldrb r0, [r1, #0xf] + orrs r0, r7 + strb r0, [r1, #0xf] + ldr r1, [r5, #0x70] + adds r0, r5, #0 + bl CopyPosition + b _0806E0D6 + .align 2, 0 +_0806E084: .4byte gUnk_081142CC +_0806E088: + adds r1, r5, #0 + adds r1, #0x44 + movs r0, #1 + strb r0, [r1] + lsls r1, r4, #2 + ldr r0, _0806E0D8 @ =gUnk_081142DC + adds r6, r1, r0 + ldr r1, [r5, #0x68] + ldrb r0, [r6] + strb r0, [r1, #0xf] + ldr r1, [r5, #0x68] + movs r2, #0xe0 + lsls r2, r2, #0xe + movs r4, #0x90 + lsls r4, r4, #0xf + adds r0, r5, #0 + adds r3, r4, #0 + bl PositionRelative + ldr r1, [r5, #0x6c] + ldrb r0, [r6, #1] + strb r0, [r1, #0xf] + ldr r1, [r5, #0x6c] + movs r2, #0xb0 + lsls r2, r2, #0xf + adds r0, r5, #0 + adds r3, r4, #0 + bl PositionRelative + ldr r1, [r5, #0x70] + ldrb r0, [r6, #2] + strb r0, [r1, #0xf] + ldr r1, [r5, #0x70] + movs r2, #0xf0 + lsls r2, r2, #0xf + adds r0, r5, #0 + adds r3, r4, #0 + bl PositionRelative +_0806E0D6: + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0806E0D8: .4byte gUnk_081142DC + .syntax divided diff --git a/asm/non_matching/picolyteBottles/sub_0806E140.inc b/asm/non_matching/picolyteBottles/sub_0806E140.inc new file mode 100644 index 00000000..f20da175 --- /dev/null +++ b/asm/non_matching/picolyteBottles/sub_0806E140.inc @@ -0,0 +1,78 @@ + .syntax unified + push {r4, r5, lr} + adds r3, r0, #0 + adds r5, r1, #0 + ldrb r1, [r3, #0xb] + cmp r1, #0 + beq _0806E1AC + movs r0, #1 + str r0, [r5, #0x14] + adds r1, r3, #0 + adds r1, #0x74 + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] + adds r1, #2 + ldrh r2, [r1] + adds r0, r3, #0 + adds r0, #0x44 + ldrb r0, [r0] + adds r4, r1, #0 + cmp r0, #0 + bne _0806E16E + lsls r0, r2, #1 + b _0806E172 +_0806E16E: + lsls r0, r2, #1 + adds r0, r0, r2 +_0806E172: + strh r0, [r4] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r1, _0806E18C @ =0x000003E7 + cmp r0, r1 + bls _0806E194 + strh r1, [r4] + movs r0, #0 + str r0, [r5, #0x14] + ldr r0, _0806E190 @ =0x0000421B + bl TextboxNoOverlapFollow + b _0806E1C0 + .align 2, 0 +_0806E18C: .4byte 0x000003E7 +_0806E190: .4byte 0x0000421B +_0806E194: + ldr r0, _0806E1A4 @ =0x00004218 + bl TextboxNoOverlapFollow + ldr r1, _0806E1A8 @ =gTextBox + ldrh r0, [r4] + str r0, [r1, #0x10] + b _0806E1C0 + .align 2, 0 +_0806E1A4: .4byte 0x00004218 +_0806E1A8: .4byte gTextBox +_0806E1AC: + str r1, [r5, #0x14] + adds r0, r3, #0 + adds r0, #0x74 + strh r1, [r0] + adds r4, r3, #0 + adds r4, #0x76 + strh r1, [r4] + ldr r0, _0806E1D4 @ =0x0000421C + bl TextboxNoOverlapFollow +_0806E1C0: + ldr r1, _0806E1D8 @ =gScreenTransition + ldrh r0, [r4] + strh r0, [r1, #6] + ldr r2, _0806E1DC @ =gActiveScriptInfo + ldrb r1, [r2, #7] + movs r0, #1 + orrs r0, r1 + strb r0, [r2, #7] + pop {r4, r5, pc} + .align 2, 0 +_0806E1D4: .4byte 0x0000421C +_0806E1D8: .4byte gScreenTransition +_0806E1DC: .4byte gActiveScriptInfo + .syntax divided diff --git a/asm/non_matching/pina/sub_08063AC0.inc b/asm/non_matching/pina/sub_08063AC0.inc new file mode 100644 index 00000000..e08da02c --- /dev/null +++ b/asm/non_matching/pina/sub_08063AC0.inc @@ -0,0 +1,64 @@ + .syntax unified + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x20 + movs r2, #0x20 + bl sub_0806ED9C + cmp r0, #0 + blt _08063AEE + ldrb r0, [r4, #0xf] + cmp r0, #0 + bne _08063AF4 + bl Random + movs r1, #0x3f + ands r1, r0 + cmp r1, #0 + bne _08063AEE + adds r0, r4, #0 + movs r1, #0 + bl InitAnimationForceUpdate + movs r0, #1 + strb r0, [r4, #0xf] +_08063AEE: + ldrb r0, [r4, #0xf] + cmp r0, #0 + beq _08063B0C +_08063AF4: + adds r0, r4, #0 + bl UpdateAnimationSingleFrame + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08063B0C + movs r0, #0 + strb r0, [r4, #0xf] +_08063B0C: + adds r0, r4, #0 + adds r0, #0x39 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #0 + beq _08063B38 + movs r0, #2 + strb r0, [r4, #0xc] + adds r0, r4, #0 + bl GetAnimationState + adds r1, r0, #0 + adds r1, #4 + adds r0, r4, #0 + bl InitAnimationForceUpdate + ldrb r0, [r4, #0xe] + ldr r1, _08063B40 @ =0x00000A01 + adds r0, r0, r1 + bl TextboxNoOverlapFollow +_08063B38: + adds r0, r4, #0 + bl sub_0806ED78 + pop {r4, pc} + .align 2, 0 +_08063B40: .4byte 0x00000A01 + .syntax divided diff --git a/asm/postman.s b/asm/non_matching/postman/sub_0806076C.inc similarity index 55% rename from asm/postman.s rename to asm/non_matching/postman/sub_0806076C.inc index 98732474..086d9be1 100644 --- a/asm/postman.s +++ b/asm/non_matching/postman/sub_0806076C.inc @@ -1,13 +1,4 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - .syntax unified - - .text - - thumb_func_start sub_0806076C -sub_0806076C: @ 0x0806076C push {r4, r5, r6, r7, lr} mov r7, sl mov r6, sb @@ -192,139 +183,4 @@ _080608D8: mov sb, r4 mov sl, r5 pop {r4, r5, r6, r7, pc} - - thumb_func_start sub_080608E4 -sub_080608E4: @ 0x080608E4 - push {r4, r5, r6, r7, lr} - adds r4, r0, #0 - adds r5, r1, #0 - movs r0, #0 - str r0, [r5, #0x14] - ldr r0, [r4, #0x34] - cmp r0, #0 - blt _08060970 - adds r0, r4, #0 - adds r0, #0x38 - ldrb r1, [r0] - ldr r6, _08060974 @ =gPlayerEntity - cmp r1, #1 - bne _0806090A - adds r0, r6, #0 - adds r0, #0x38 - ldrb r0, [r0] - cmp r0, #2 - beq _08060970 -_0806090A: - cmp r1, #2 - bne _08060918 - adds r0, r6, #0 - adds r0, #0x38 - ldrb r0, [r0] - cmp r0, #1 - beq _08060970 -_08060918: - ldr r2, [r5, #4] - lsls r2, r2, #4 - ldrb r0, [r4, #0x14] - lsrs r0, r0, #1 - lsls r0, r0, #2 - ldr r1, _08060978 @ =gUnk_0810AA70 - adds r0, r0, r1 - adds r2, r2, r0 - movs r0, #0x2e - ldrsh r1, [r4, r0] - movs r0, #0 - ldrsb r0, [r2, r0] - adds r1, r1, r0 - movs r7, #0x32 - ldrsh r3, [r4, r7] - movs r0, #1 - ldrsb r0, [r2, r0] - adds r3, r3, r0 - movs r7, #0x2e - ldrsh r0, [r6, r7] - subs r1, r0, r1 - movs r7, #0x32 - ldrsh r0, [r6, r7] - subs r3, r0, r3 - movs r0, #2 - ldrsb r0, [r2, r0] - adds r1, r1, r0 - ldrb r2, [r2, #3] - lsls r2, r2, #0x18 - asrs r2, r2, #0x18 - adds r3, r3, r2 - lsls r0, r0, #1 - cmp r0, r1 - bls _08060970 - lsls r0, r2, #1 - cmp r0, r3 - bls _08060970 - movs r0, #1 - str r0, [r5, #0x14] - adds r1, r4, #0 - adds r1, #0x6a - ldrh r0, [r1] - adds r0, #2 - strh r0, [r1] -_08060970: - pop {r4, r5, r6, r7, pc} - .align 2, 0 -_08060974: .4byte gPlayerEntity -_08060978: .4byte gUnk_0810AA70 - - thumb_func_start Postman_Fusion -Postman_Fusion: @ 0x0806097C - push {lr} - adds r2, r0, #0 - ldrb r0, [r2, #0xc] - cmp r0, #0 - bne _080609A2 - 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, #2 - bl InitAnimationForceUpdate - b _080609A8 -_080609A2: - adds r0, r2, #0 - bl UpdateAnimationSingleFrame -_080609A8: - pop {pc} - .align 2, 0 - - thumb_func_start CreateZeldaFollower -CreateZeldaFollower: @ 0x080609AC - push {r4, lr} - movs r0, #0x1c - bl CheckGlobalFlag - cmp r0, #0 - beq _080609E0 - movs r0, #0x2e - movs r1, #0 - movs r2, #0 - bl CreateNPC - adds r4, r0, #0 - cmp r4, #0 - beq _080609E0 - ldr r0, _080609E4 @ =gPlayerEntity - adds r1, r4, #0 - bl CopyPosition - ldrb r1, [r4, #0x10] - movs r0, #0x20 - orrs r0, r1 - strb r0, [r4, #0x10] - adds r0, r4, #0 - bl GetAnimationState - strb r0, [r4, #0x14] -_080609E0: - pop {r4, pc} - .align 2, 0 -_080609E4: .4byte gPlayerEntity + .syntax divided diff --git a/asm/non_matching/postman/sub_080608E4.inc b/asm/non_matching/postman/sub_080608E4.inc new file mode 100644 index 00000000..52c2bf03 --- /dev/null +++ b/asm/non_matching/postman/sub_080608E4.inc @@ -0,0 +1,79 @@ + .syntax unified + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + adds r5, r1, #0 + movs r0, #0 + str r0, [r5, #0x14] + ldr r0, [r4, #0x34] + cmp r0, #0 + blt _08060970 + adds r0, r4, #0 + adds r0, #0x38 + ldrb r1, [r0] + ldr r6, _08060974 @ =gPlayerEntity + cmp r1, #1 + bne _0806090A + adds r0, r6, #0 + adds r0, #0x38 + ldrb r0, [r0] + cmp r0, #2 + beq _08060970 +_0806090A: + cmp r1, #2 + bne _08060918 + adds r0, r6, #0 + adds r0, #0x38 + ldrb r0, [r0] + cmp r0, #1 + beq _08060970 +_08060918: + ldr r2, [r5, #4] + lsls r2, r2, #4 + ldrb r0, [r4, #0x14] + lsrs r0, r0, #1 + lsls r0, r0, #2 + ldr r1, _08060978 @ =gUnk_0810AA70 + adds r0, r0, r1 + adds r2, r2, r0 + movs r0, #0x2e + ldrsh r1, [r4, r0] + movs r0, #0 + ldrsb r0, [r2, r0] + adds r1, r1, r0 + movs r7, #0x32 + ldrsh r3, [r4, r7] + movs r0, #1 + ldrsb r0, [r2, r0] + adds r3, r3, r0 + movs r7, #0x2e + ldrsh r0, [r6, r7] + subs r1, r0, r1 + movs r7, #0x32 + ldrsh r0, [r6, r7] + subs r3, r0, r3 + movs r0, #2 + ldrsb r0, [r2, r0] + adds r1, r1, r0 + ldrb r2, [r2, #3] + lsls r2, r2, #0x18 + asrs r2, r2, #0x18 + adds r3, r3, r2 + lsls r0, r0, #1 + cmp r0, r1 + bls _08060970 + lsls r0, r2, #1 + cmp r0, r3 + bls _08060970 + movs r0, #1 + str r0, [r5, #0x14] + adds r1, r4, #0 + adds r1, #0x6a + ldrh r0, [r1] + adds r0, #2 + strh r0, [r1] +_08060970: + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_08060974: .4byte gPlayerEntity +_08060978: .4byte gUnk_0810AA70 + .syntax divided diff --git a/asm/non_matching/rem/sub_0806A674.inc b/asm/non_matching/rem/sub_0806A674.inc new file mode 100644 index 00000000..d95609e6 --- /dev/null +++ b/asm/non_matching/rem/sub_0806A674.inc @@ -0,0 +1,235 @@ + .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 @ =gScreenTransition + 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 gScreenTransition +_0806A784: + ldr r0, _0806A7C4 @ =gScreenTransition + 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 gScreenTransition +_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 diff --git a/asm/non_matching/rem/sub_0806AA50.inc b/asm/non_matching/rem/sub_0806AA50.inc new file mode 100644 index 00000000..8d40bee1 --- /dev/null +++ b/asm/non_matching/rem/sub_0806AA50.inc @@ -0,0 +1,153 @@ + .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 TextboxNoOverlap + 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 diff --git a/asm/non_matching/sittingPerson/SittingPerson_Head.inc b/asm/non_matching/sittingPerson/SittingPerson_Head.inc new file mode 100644 index 00000000..5e2a7ef9 --- /dev/null +++ b/asm/non_matching/sittingPerson/SittingPerson_Head.inc @@ -0,0 +1,42 @@ + .syntax unified + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r5, [r4, #0xa] + lsls r5, r5, #2 + ldr r0, _080639C8 @ =gUnk_0810CBC0 + adds r5, r5, r0 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r0, [r0] + movs r2, #0xf + ands r2, r0 + ldrb r0, [r5] + adds r2, r2, r0 + adds r0, r4, #0 + movs r1, #0 + bl SetExtraSpriteFrame + ldr r2, _080639CC @ =gUnk_0810CD88 + ldrb r1, [r4, #0x1e] + movs r0, #3 + ands r0, r1 + ldrb r1, [r4, #0xa] + lsls r1, r1, #2 + adds r0, r0, r1 + adds r0, r0, r2 + ldrb r2, [r0] + ldrb r0, [r5, #1] + adds r2, r2, r0 + adds r0, r4, #0 + movs r1, #1 + bl SetExtraSpriteFrame + adds r0, r4, #0 + movs r1, #1 + movs r2, #0 + bl SetSpriteSubEntryOffsetData1 + adds r0, r4, #0 + bl sub_0807000C + pop {r4, r5, pc} + .align 2, 0 +_080639C8: .4byte gUnk_0810CBC0 +_080639CC: .4byte gUnk_0810CD88 + .syntax divided diff --git a/asm/non_matching/sittingPerson/sub_08063758.inc b/asm/non_matching/sittingPerson/sub_08063758.inc new file mode 100644 index 00000000..8684d941 --- /dev/null +++ b/asm/non_matching/sittingPerson/sub_08063758.inc @@ -0,0 +1,49 @@ + .syntax unified + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xa] + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #2 + ldr r0, _08063794 @ =gUnk_0810CB78 + adds r1, r1, r0 + adds r0, r4, #0 + bl LoadExtraSpriteData + cmp r0, #0 + beq _080637B4 + movs r2, #1 + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0xe] + ands r1, r2 + lsls r1, r1, #6 + ldrb r2, [r4, #0x18] + subs r0, #0x42 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #0x18] + lsls r0, r0, #0x19 + cmp r0, #0 + blt _08063798 + movs r0, #6 + b _0806379A + .align 2, 0 +_08063794: .4byte gUnk_0810CB78 +_08063798: + movs r0, #2 +_0806379A: + strb r0, [r4, #0x14] + ldrb r0, [r4, #0x14] + movs r1, #0 + strb r0, [r4, #0xe] + adds r0, r4, #0 + adds r0, #0x69 + strb r1, [r0] + adds r0, r4, #0 + bl sub_0807DD50 + adds r0, r4, #0 + bl sub_080637B8 +_080637B4: + pop {r4, pc} + .align 2, 0 + .syntax divided diff --git a/asm/non_matching/sittingPerson/sub_08063850.inc b/asm/non_matching/sittingPerson/sub_08063850.inc new file mode 100644 index 00000000..7ecf28e3 --- /dev/null +++ b/asm/non_matching/sittingPerson/sub_08063850.inc @@ -0,0 +1,19 @@ + .syntax unified + push {lr} + ldrb r3, [r0, #0x18] + lsls r3, r3, #0x19 + lsrs r3, r3, #0x1f + rsbs r2, r3, #0 + orrs r2, r3 + asrs r2, r2, #0x1f + movs r3, #4 + ands r2, r3 + ldr r1, [r1, #4] + adds r1, r1, r2 + ldrb r2, [r0, #0x14] + lsrs r2, r2, #1 + adds r1, r1, r2 + bl InitializeAnimation + pop {pc} + .align 2, 0 + .syntax divided diff --git a/asm/non_matching/sittingPerson/sub_0806387C.inc b/asm/non_matching/sittingPerson/sub_0806387C.inc new file mode 100644 index 00000000..1ebc3a3c --- /dev/null +++ b/asm/non_matching/sittingPerson/sub_0806387C.inc @@ -0,0 +1,66 @@ + .syntax unified + push {r4, r5, r6, lr} + adds r6, r0, #0 + movs r4, #3 + movs r0, #0xda + bl CheckLocalFlag + cmp r0, #0 + bne _08063896 + movs r4, #0 + movs r0, #0xda + bl SetLocalFlag + b _080638D6 +_08063896: + movs r0, #0xd1 + bl CheckLocalFlag + cmp r0, #0 + bne _080638D6 + movs r5, #0 + movs r4, #1 +_080638A4: + ldr r0, _080638F8 @ =gUnk_02002B0E + adds r1, r4, #0 + bl ReadBit + cmp r0, #0 + beq _080638B2 + adds r5, #1 +_080638B2: + adds r4, #1 + cmp r4, #0x82 + ble _080638A4 + movs r4, #1 + cmp r5, #0x81 + ble _080638D6 + movs r4, #2 + movs r0, #0xd1 + bl SetLocalFlag + ldr r0, _080638FC @ =0x00000A17 + movs r1, #1 + bl sub_0807BA8C + ldr r0, _08063900 @ =0x00000A57 + movs r1, #1 + bl sub_0807BA8C +_080638D6: + ldr r0, _08063904 @ =gSave + ldrb r0, [r0, #8] + subs r1, r0, #6 + cmp r1, #0 + bge _080638E2 + movs r1, #0 +_080638E2: + ldr r2, _08063908 @ =gUnk_0810CBE4 + lsls r0, r4, #1 + lsls r1, r1, #3 + adds r0, r0, r1 + adds r0, r0, r2 + ldrh r0, [r0] + adds r1, r6, #0 + bl TextboxNoOverlap + pop {r4, r5, r6, pc} + .align 2, 0 +_080638F8: .4byte gUnk_02002B0E +_080638FC: .4byte 0x00000A17 +_08063900: .4byte 0x00000A57 +_08063904: .4byte gSave +_08063908: .4byte gUnk_0810CBE4 + .syntax divided diff --git a/asm/non_matching/sittingPerson/sub_0806390C.inc b/asm/non_matching/sittingPerson/sub_0806390C.inc new file mode 100644 index 00000000..acde9c97 --- /dev/null +++ b/asm/non_matching/sittingPerson/sub_0806390C.inc @@ -0,0 +1,27 @@ + .syntax unified + push {r4, r5, lr} + adds r4, r0, #0 + movs r5, #1 + movs r0, #0xd9 + bl CheckLocalFlag + cmp r0, #0 + bne _0806392E + movs r5, #0 + movs r0, #0xd9 + bl SetLocalFlag + adds r0, r4, #0 + adds r0, #0x84 + ldr r1, [r0] + movs r0, #1 + str r0, [r1, #0x14] +_0806392E: + ldr r0, _08063940 @ =gUnk_0810CC04 + lsls r1, r5, #1 + adds r1, r1, r0 + ldrh r0, [r1] + adds r1, r4, #0 + bl TextboxNoOverlap + pop {r4, r5, pc} + .align 2, 0 +_08063940: .4byte gUnk_0810CC04 + .syntax divided diff --git a/asm/non_matching/stockwell/sub_080650CC.inc b/asm/non_matching/stockwell/sub_080650CC.inc new file mode 100644 index 00000000..bdd7f568 --- /dev/null +++ b/asm/non_matching/stockwell/sub_080650CC.inc @@ -0,0 +1,107 @@ + .syntax unified + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r5, r0, #0 + ldr r6, _080650F8 @ =gRoomVars + ldr r0, [r6, #0x68] + movs r1, #1 + ands r0, r1 + cmp r0, #0 + beq _08065100 + movs r1, #0 + movs r0, #4 + strb r0, [r5, #0xc] + strb r1, [r5, #0xd] + adds r0, r5, #0 + adds r0, #0x84 + ldr r0, [r0] + ldr r1, _080650FC @ =script_080143C0 + bl InitScriptExecutionContext + b _080651A6 + .align 2, 0 +_080650F8: .4byte gRoomVars +_080650FC: .4byte script_080143C0 +_08065100: + adds r2, r5, #0 + adds r2, #0x5a + ldrb r1, [r2] + movs r0, #0x20 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0 + bne _0806517C + adds r3, r5, #0 + adds r3, #0x39 + movs r0, #0 + ldrsb r0, [r3, r0] + cmp r0, #0 + beq _0806517C + strb r4, [r3] + ldrb r0, [r5, #0xc] + adds r0, #1 + strb r0, [r5, #0xc] + adds r0, r5, #0 + movs r1, #7 + bl InitializeAnimation + ldrb r0, [r6, #6] + cmp r0, #0 + bne _0806513C + ldr r7, _08065138 @ =0x00002C01 + b _0806515E + .align 2, 0 +_08065138: .4byte 0x00002C01 +_0806513C: + ldrb r0, [r6, #6] + bl GetSaleItemConfirmMessageID + adds r7, r0, #0 + ldrb r0, [r6, #6] + bl GetItemPrice + mov r8, r0 + movs r0, #4 + strb r0, [r5, #0xc] + strb r4, [r5, #0xd] + adds r0, r5, #0 + adds r0, #0x84 + ldr r0, [r0] + ldr r1, _08065174 @ =script_08014384 + bl InitScriptExecutionContext +_0806515E: + adds r0, r7, #0 + adds r1, r5, #0 + bl TextboxNoOverlap + ldr r1, _08065178 @ =gTextBox + mov r2, r8 + lsls r0, r2, #0x10 + lsrs r0, r0, #0x10 + str r0, [r1, #0x10] + b _080651A6 + .align 2, 0 +_08065174: .4byte script_08014384 +_08065178: .4byte gTextBox +_0806517C: + ldrb r1, [r2] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + beq _080651A0 + ldr r4, _0806519C @ =gUnk_0810FDB8 + bl Random + movs r1, #0xf + ands r1, r0 + adds r1, r1, r4 + ldrb r1, [r1] + adds r0, r5, #0 + bl InitializeAnimation + b _080651A6 + .align 2, 0 +_0806519C: .4byte gUnk_0810FDB8 +_080651A0: + adds r0, r5, #0 + bl GetNextFrame +_080651A6: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + .syntax divided diff --git a/asm/non_matching/stockwell/sub_08065370.inc b/asm/non_matching/stockwell/sub_08065370.inc new file mode 100644 index 00000000..e8beb8c8 --- /dev/null +++ b/asm/non_matching/stockwell/sub_08065370.inc @@ -0,0 +1,186 @@ + .syntax unified + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + adds r4, r0, #0 + mov r8, r1 + movs r6, #1 + ldr r0, _0806539C @ =gRoomVars + ldrb r5, [r0, #6] + movs r0, #0 + mov sb, r0 + cmp r5, #0x66 + beq _0806541A + cmp r5, #0x66 + bhi _080653AA + cmp r5, #0x61 + beq _08065426 + cmp r5, #0x61 + bhi _080653A0 + cmp r5, #0xd + beq _080653D0 + b _0806543C + .align 2, 0 +_0806539C: .4byte gRoomVars +_080653A0: + cmp r5, #0x64 + beq _08065414 + cmp r5, #0x65 + beq _08065420 + b _0806543C +_080653AA: + cmp r5, #0x6c + blo _0806543C + cmp r5, #0x6d + bls _080653EC + cmp r5, #0x6f + bhi _0806543C + ldr r2, _080653C8 @ =gQuiverSizes + ldr r1, _080653CC @ =gSave + adds r0, r1, #0 + adds r0, #0xaf + ldrb r0, [r0] + adds r0, r0, r2 + adds r1, #0xad + b _080653FA + .align 2, 0 +_080653C8: .4byte gQuiverSizes +_080653CC: .4byte gSave +_080653D0: + movs r0, #0xd + bl GetInventoryValue + cmp r0, #0 + bne _080653E4 + movs r0, #0xe + bl GetInventoryValue + cmp r0, #0 + beq _0806543C +_080653E4: + ldr r0, _080653E8 @ =0x00002C0B + b _080654C2 + .align 2, 0 +_080653E8: .4byte 0x00002C0B +_080653EC: + ldr r2, _08065408 @ =gBombBagSizes + ldr r1, _0806540C @ =gSave + adds r0, r1, #0 + adds r0, #0xae + ldrb r0, [r0] + adds r0, r0, r2 + adds r1, #0xac +_080653FA: + ldrb r0, [r0] + ldrb r1, [r1] + cmp r0, r1 + bhi _0806543C + ldr r0, _08065410 @ =0x00002C0E + b _080654C2 + .align 2, 0 +_08065408: .4byte gBombBagSizes +_0806540C: .4byte gSave +_08065410: .4byte 0x00002C0E +_08065414: + movs r1, #0x55 + mov sb, r1 + b _0806543C +_0806541A: + movs r0, #0x56 + mov sb, r0 + b _0806543C +_08065420: + movs r1, #0xcd + mov sb, r1 + b _0806543C +_08065426: + ldr r0, _08065494 @ =gSave + adds r0, #0xc2 + ldrh r1, [r0] + ldr r0, _08065498 @ =0x000003E6 + cmp r1, r0 + bls _0806543C + ldr r0, _0806549C @ =0x00002C0E + adds r1, r4, #0 + bl TextboxNoOverlap + movs r6, #0 +_0806543C: + cmp r6, #0 + beq _080654C8 + adds r0, r5, #0 + bl GetItemPrice + adds r6, r0, #0 + ldr r7, _08065494 @ =gSave + adds r0, r7, #0 + adds r0, #0xc0 + ldrh r0, [r0] + cmp r6, r0 + bhi _080654C0 + rsbs r0, r6, #0 + bl ModRupees + ldr r4, _080654A0 @ =gRoomVars + ldrb r1, [r4, #7] + adds r0, r5, #0 + movs r2, #2 + bl sub_080A7C18 + movs r0, #0 + strb r0, [r4, #6] + strb r0, [r4, #7] + movs r0, #1 + mov r1, r8 + str r0, [r1, #0x14] + mov r0, sb + cmp r0, #0 + beq _0806547C + bl SetLocalFlag +_0806547C: + ldr r1, [r7, #0x5c] + movs r0, #2 + rsbs r0, r0, #0 + cmp r1, r0 + bhi _0806548A + adds r0, r1, #1 + str r0, [r7, #0x5c] +_0806548A: + ldr r0, [r7, #0x5c] + cmp r0, #9 + bls _080654A8 + ldr r0, _080654A4 @ =0x00002C11 + b _080654B6 + .align 2, 0 +_08065494: .4byte gSave +_08065498: .4byte 0x000003E6 +_0806549C: .4byte 0x00002C0E +_080654A0: .4byte gRoomVars +_080654A4: .4byte 0x00002C11 +_080654A8: + cmp r6, #0x63 + bls _080654B4 + ldr r0, _080654B0 @ =0x00002C10 + b _080654B6 + .align 2, 0 +_080654B0: .4byte 0x00002C10 +_080654B4: + ldr r0, _080654BC @ =0x00002C0F +_080654B6: + mov r1, r8 + str r0, [r1, #4] + b _080654CE + .align 2, 0 +_080654BC: .4byte 0x00002C0F +_080654C0: + ldr r0, _080654D8 @ =0x00002C0D +_080654C2: + adds r1, r4, #0 + bl TextboxNoOverlap +_080654C8: + movs r0, #0 + mov r1, r8 + str r0, [r1, #0x14] +_080654CE: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_080654D8: .4byte 0x00002C0D + .syntax divided diff --git a/asm/non_matching/sturgeon/Sturgeon.inc b/asm/non_matching/sturgeon/Sturgeon.inc new file mode 100644 index 00000000..b5d0f078 --- /dev/null +++ b/asm/non_matching/sturgeon/Sturgeon.inc @@ -0,0 +1,84 @@ + .syntax unified + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r1, [r4, #0x10] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + bne _08064ABC + ldr r0, _08064AB8 @ =gUnk_0810FA44 + ldrb r1, [r4, #0xc] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r4, #0 + bl _call_via_r1 + adds r0, r4, #0 + bl sub_0806ED78 + b _08064B42 + .align 2, 0 +_08064AB8: .4byte gUnk_0810FA44 +_08064ABC: + ldrb r1, [r4, #0xc] + adds r5, r1, #0 + cmp r5, #0 + bne _08064AE4 + ldr r1, _08064AE0 @ =gUnk_0810FA38 + adds r0, r4, #0 + bl LoadExtraSpriteData + cmp r0, #0 + beq _08064B42 + movs r0, #1 + strb r0, [r4, #0xc] + strb r5, [r4, #0xe] + adds r0, r4, #0 + bl sub_0807DD50 + b _08064B42 + .align 2, 0 +_08064AE0: .4byte gUnk_0810FA38 +_08064AE4: + movs r0, #0x80 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #0 + beq _08064B00 + adds r0, r4, #0 + bl UpdateFuseInteraction + cmp r0, #0 + beq _08064B42 + movs r0, #1 + strb r0, [r4, #0xc] + b _08064B42 +_08064B00: + adds r2, r4, #0 + adds r2, #0x39 + movs r0, #0 + ldrsb r0, [r2, r0] + cmp r0, #2 + bne _08064B34 + movs r0, #0xff + orrs r0, r1 + strb r0, [r4, #0xc] + strb r3, [r2] + ldr r1, _08064B30 @ =gPlayerEntity + adds r0, r4, #0 + bl GetFacingDirection + bl sub_0806F5A4 + adds r1, r0, #0 + adds r0, r4, #0 + bl InitAnimationForceUpdate + adds r0, r4, #0 + bl sub_0806F118 + b _08064B42 + .align 2, 0 +_08064B30: .4byte gPlayerEntity +_08064B34: + adds r0, r4, #0 + movs r1, #0 + bl sub_0807DD94 + adds r0, r4, #0 + bl sub_08064C9C +_08064B42: + pop {r4, r5, pc} + .syntax divided diff --git a/asm/non_matching/sturgeon/sub_08064B88.inc b/asm/non_matching/sturgeon/sub_08064B88.inc new file mode 100644 index 00000000..c1b3a290 --- /dev/null +++ b/asm/non_matching/sturgeon/sub_08064B88.inc @@ -0,0 +1,83 @@ + .syntax unified + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r4, #0 + adds r5, #0x39 + movs r0, #0 + ldrsb r0, [r5, r0] + cmp r0, #1 + beq _08064BFA + cmp r0, #1 + bgt _08064BA2 + cmp r0, #0 + beq _08064BA8 + b _08064BFA +_08064BA2: + cmp r0, #2 + beq _08064BCE + b _08064BFA +_08064BA8: + adds r0, r4, #0 + bl sub_0806EE20 + adds r2, r0, #0 + adds r0, r4, #0 + adds r0, #0x3e + ldrb r0, [r0] + strb r0, [r4, #0x14] + cmp r2, #0 + beq _08064BC6 + movs r1, #0x7f + ands r1, r2 + adds r0, r4, #0 + bl InitializeAnimation +_08064BC6: + adds r0, r4, #0 + bl GetNextFrame + b _08064C28 +_08064BCE: + movs r0, #3 + strb r0, [r4, #0xc] + adds r0, r4, #0 + bl GetAnimationState + adds r1, r0, #0 + cmp r1, #0 + bge _08064BE0 + ldrb r1, [r4, #0x14] +_08064BE0: + adds r0, r4, #0 + adds r0, #0x58 + ldrb r0, [r0] + strb r0, [r4, #0xf] + adds r0, r4, #0 + bl InitializeAnimation + movs r0, #0 + strb r0, [r5] + adds r0, r4, #0 + bl sub_0806F118 + b _08064C28 +_08064BFA: + movs r0, #2 + strb r0, [r4, #0xc] + adds r0, r4, #0 + bl GetAnimationState + adds r1, r0, #0 + cmp r1, #0 + bge _08064C0C + ldrb r1, [r4, #0x14] +_08064C0C: + adds r0, r4, #0 + adds r0, #0x58 + ldrb r0, [r0] + strb r0, [r4, #0xf] + adds r0, r4, #0 + bl InitializeAnimation + adds r1, r4, #0 + adds r1, #0x39 + movs r0, #0 + strb r0, [r1] + adds r0, r4, #0 + bl sub_08064CD8 +_08064C28: + pop {r4, r5, pc} + .align 2, 0 + .syntax divided diff --git a/asm/syrup.s b/asm/non_matching/syrup/Syrup_Head.inc similarity index 90% rename from asm/syrup.s rename to asm/non_matching/syrup/Syrup_Head.inc index 35ecf185..bfc12df8 100644 --- a/asm/syrup.s +++ b/asm/non_matching/syrup/Syrup_Head.inc @@ -1,13 +1,4 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - .syntax unified - - .text - - thumb_func_start Syrup_Head -Syrup_Head: @ 0x0806A2B4 push {r4, r5, r6, lr} mov r6, sb mov r5, r8 @@ -81,3 +72,4 @@ Syrup_Head: @ 0x0806A2B4 .align 2, 0 _0806A350: .4byte gUnk_081121E4 _0806A354: .4byte gUnk_08112204 + .syntax divided diff --git a/asm/non_matching/tingleSiblings/sub_08064DE4.inc b/asm/non_matching/tingleSiblings/sub_08064DE4.inc new file mode 100644 index 00000000..d6ca6b67 --- /dev/null +++ b/asm/non_matching/tingleSiblings/sub_08064DE4.inc @@ -0,0 +1,97 @@ + .syntax unified + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #1 + beq _08064E1A + cmp r0, #1 + bgt _08064DF8 + cmp r0, #0 + beq _08064DFE + b _08064E6A +_08064DF8: + cmp r0, #2 + beq _08064E56 + b _08064E6A +_08064DFE: + 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] + movs r0, #4 + strb r0, [r4, #0x14] + adds r0, r4, #0 + bl sub_0807DD50 + b _08064E6A +_08064E1A: + adds r2, r4, #0 + adds r2, #0x39 + movs r1, #0 + ldrsb r1, [r2, r1] + cmp r1, #2 + bne _08064E4C + movs r0, #0 + strb r1, [r4, #0xc] + strb r0, [r2] + ldr r1, _08064E48 @ =gPlayerEntity + adds r0, r4, #0 + bl GetFacingDirection + bl sub_0806F5A4 + adds r1, r0, #0 + adds r0, r4, #0 + bl InitAnimationForceUpdate + adds r0, r4, #0 + bl sub_0806F118 + b _08064E6A + .align 2, 0 +_08064E48: .4byte gPlayerEntity +_08064E4C: + adds r0, r4, #0 + movs r1, #0 + bl sub_0807DD94 + b _08064E6A +_08064E56: + adds r0, r4, #0 + bl UpdateFuseInteraction + cmp r0, #0 + beq _08064E6A + movs r0, #1 + strb r0, [r4, #0xc] + adds r0, r4, #0 + bl sub_0801E99C +_08064E6A: + adds r2, r4, #0 + adds r2, #0x5a + ldrb r1, [r2] + movs r5, #0xf + ands r5, r1 + adds r0, r5, #0 + eors r0, r1 + strb r0, [r2] + cmp r5, #0 + beq _08064EA0 + movs r1, #0x29 + cmp r5, #3 + bne _08064E86 + movs r1, #0x2a +_08064E86: + adds r0, r4, #0 + movs r2, #0 + bl CreateFx + adds r2, r0, #0 + cmp r2, #0 + beq _08064EA0 + cmp r5, #2 + bne _08064EA0 + ldrb r0, [r2, #0x18] + movs r1, #0x40 + orrs r0, r1 + strb r0, [r2, #0x18] +_08064EA0: + pop {r4, r5, pc} + .align 2, 0 + .syntax divided diff --git a/asm/non_matching/tingleSiblings/sub_08064EE8.inc b/asm/non_matching/tingleSiblings/sub_08064EE8.inc new file mode 100644 index 00000000..f5ac250c --- /dev/null +++ b/asm/non_matching/tingleSiblings/sub_08064EE8.inc @@ -0,0 +1,34 @@ + .syntax unified + push {r4, r5, lr} + adds r4, r0, #0 + bl UpdateAnimationSingleFrame + adds r2, r4, #0 + adds r2, #0x5a + ldrb r1, [r2] + movs r5, #0xf + ands r5, r1 + adds r0, r5, #0 + eors r0, r1 + strb r0, [r2] + cmp r5, #0 + beq _08064F26 + movs r1, #0x2a + cmp r5, #3 + beq _08064F0C + movs r1, #0x29 +_08064F0C: + adds r0, r4, #0 + movs r2, #0 + bl CreateFx + adds r2, r0, #0 + cmp r2, #0 + beq _08064F26 + cmp r5, #2 + bne _08064F26 + ldrb r0, [r2, #0x18] + movs r1, #0x40 + orrs r0, r1 + strb r0, [r2, #0x18] +_08064F26: + pop {r4, r5, pc} + .syntax divided diff --git a/asm/non_matching/tingleSiblings/sub_08064F28.inc b/asm/non_matching/tingleSiblings/sub_08064F28.inc new file mode 100644 index 00000000..837f5fc0 --- /dev/null +++ b/asm/non_matching/tingleSiblings/sub_08064F28.inc @@ -0,0 +1,121 @@ + .syntax unified + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r6, r0, #0 + mov r8, r1 + movs r0, #0 + str r0, [r1, #0x14] + ldr r1, _08064F60 @ =gUnk_0810FC50 + ldrb r0, [r6, #0xa] + adds r0, r0, r1 + ldrb r7, [r0] + adds r0, r7, #0 + bl CheckRoomFlag + cmp r0, #0 + bne _08064F84 + ldr r4, _08064F64 @ =gSave + adds r0, r6, #0 + bl sub_08002632 + ldr r1, _08064F68 @ =0x00000141 + adds r4, r4, r1 + adds r0, r0, r4 + ldrb r4, [r0] + cmp r4, #1 + bls _08064F6C + movs r5, #3 + b _08064F7E + .align 2, 0 +_08064F60: .4byte gUnk_0810FC50 +_08064F64: .4byte gSave +_08064F68: .4byte 0x00000141 +_08064F6C: + movs r0, #0xc + bl GetInventoryValue + movs r5, #2 + cmp r0, #0 + bne _08064F7E + rsbs r0, r4, #0 + orrs r0, r4 + lsrs r5, r0, #0x1f +_08064F7E: + movs r4, #1 + rsbs r4, r4, #0 + b _08064FD2 +_08064F84: + movs r0, #0x3a + bl CheckGlobalFlag + cmp r0, #0 + bne _08064FCE + ldr r0, _08064FB0 @ =gSave + ldr r1, _08064FB4 @ =0x00000117 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #0x64 + subs r4, r0, r1 + cmp r4, #0 + bgt _08064FB8 + movs r5, #8 + movs r4, #0 + movs r0, #0x3a + bl SetGlobalFlag + movs r0, #1 + mov r1, r8 + str r0, [r1, #0x14] + b _08064FD2 + .align 2, 0 +_08064FB0: .4byte gSave +_08064FB4: .4byte 0x00000117 +_08064FB8: + movs r5, #7 + cmp r4, #9 + ble _08064FC0 + movs r5, #6 +_08064FC0: + cmp r4, #0x27 + ble _08064FC6 + movs r5, #5 +_08064FC6: + cmp r4, #0x45 + ble _08064FD2 + movs r5, #4 + b _08064FD2 +_08064FCE: + movs r5, #8 + movs r4, #0 +_08064FD2: + ldr r2, _08065008 @ =gUnk_0810FC08 + ldrb r1, [r6, #0xa] + lsls r0, r1, #3 + adds r0, r0, r1 + adds r0, r0, r5 + lsls r0, r0, #1 + adds r0, r0, r2 + ldrh r0, [r0] + adds r1, r6, #0 + bl TextboxNoOverlap + cmp r4, #0 + ble _08064FF4 + ldr r1, _0806500C @ =gTextBox + lsls r0, r4, #0x10 + lsrs r0, r0, #0x10 + str r0, [r1, #0x10] +_08064FF4: + adds r0, r7, #0 + bl CheckRoomFlag + cmp r0, #0 + bne _08065010 + adds r0, r7, #0 + bl SetRoomFlag + b _08065016 + .align 2, 0 +_08065008: .4byte gUnk_0810FC08 +_0806500C: .4byte gTextBox +_08065010: + adds r0, r7, #0 + bl ClearRoomFlag +_08065016: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + .syntax divided diff --git a/asm/zeldaFollower.s b/asm/non_matching/zeldaFollower/sub_08068318.inc similarity index 56% rename from asm/zeldaFollower.s rename to asm/non_matching/zeldaFollower/sub_08068318.inc index 51994bf1..620448a5 100644 --- a/asm/zeldaFollower.s +++ b/asm/non_matching/zeldaFollower/sub_08068318.inc @@ -1,13 +1,4 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - .syntax unified - - .text - - thumb_func_start sub_08068318 -sub_08068318: @ 0x08068318 push {r4, r5, r6, r7, lr} mov r7, sb mov r6, r8 @@ -293,202 +284,4 @@ _08068542: mov sb, r4 pop {r4, r5, r6, r7, pc} .align 2, 0 - - thumb_func_start sub_0806854C -sub_0806854C: @ 0x0806854C - push {r4, r5, lr} - adds r5, r0, #0 - movs r0, #0xa0 - bl zMalloc - str r0, [r5, #0x64] - cmp r0, #0 - beq _08068574 - adds r0, r5, #0 - adds r0, #0x68 - movs r4, #0 - movs r1, #1 - strb r1, [r0] - adds r0, r5, #0 - bl sub_080788E0 - str r4, [r5, #0x48] - adds r0, r5, #0 - bl sub_08068578 -_08068574: - pop {r4, r5, pc} - .align 2, 0 - - thumb_func_start sub_08068578 -sub_08068578: @ 0x08068578 - push {r4, r5, r6, r7, lr} - mov r7, sl - mov r6, sb - mov r5, r8 - push {r5, r6, r7} - adds r7, r0, #0 - ldr r4, _08068664 @ =gPlayerEntity - ldrh r1, [r4, #0x2e] - ldr r3, _08068668 @ =0xFFFF0000 - adds r0, r3, #0 - ands r0, r5 - orrs r0, r1 - ldrh r1, [r4, #0x32] - lsls r1, r1, #0x10 - ldr r2, _0806866C @ =0x0000FFFF - ands r0, r2 - adds r5, r0, #0 - orrs r5, r1 - ldrh r0, [r4, #0x36] - ands r3, r6 - orrs r3, r0 - ldr r0, _08068670 @ =gPlayerState - adds r0, #0xa8 - ldrb r0, [r0] - lsls r0, r0, #0x10 - ldr r2, _08068674 @ =0xFF00FFFF - ands r2, r3 - orrs r2, r0 - ldrb r1, [r4, #0x14] - movs r0, #0x3f - ands r1, r0 - lsls r1, r1, #0x18 - ldr r0, _08068678 @ =0xC0FFFFFF - ands r0, r2 - orrs r0, r1 - adds r1, r4, #0 - adds r1, #0x38 - ldrb r1, [r1] - lsls r1, r1, #0x1e - ldr r2, _0806867C @ =0x3FFFFFFF - ands r0, r2 - adds r6, r0, #0 - orrs r6, r1 - movs r0, #0x2e - ldrsh r1, [r4, r0] - movs r2, #0x2e - ldrsh r0, [r7, r2] - subs r1, r1, r0 - mov sl, r1 - movs r0, #0x32 - ldrsh r1, [r4, r0] - movs r2, #0x32 - ldrsh r0, [r7, r2] - subs r1, r1, r0 - mov r8, r1 - mov r1, sl - lsls r0, r1, #0x10 - asrs r0, r0, #0x10 - movs r1, #0x14 - bl FixedDiv - lsls r0, r0, #0x10 - asrs r0, r0, #0x10 - mov sl, r0 - mov r2, r8 - lsls r0, r2, #0x10 - asrs r0, r0, #0x10 - movs r1, #0x14 - bl FixedDiv - lsls r0, r0, #0x10 - asrs r0, r0, #0x10 - mov r8, r0 - ldr r3, [r7, #0x64] - movs r0, #0 - mov sb, r0 - mov ip, r0 - movs r4, #0x13 -_08068614: - mov r1, ip - asrs r0, r1, #8 - subs r0, r5, r0 - strh r0, [r3] - lsrs r0, r5, #0x10 - mov r2, sb - asrs r1, r2, #8 - subs r0, r0, r1 - strh r0, [r3, #2] - strh r6, [r3, #4] - lsrs r0, r6, #0x10 - strb r0, [r3, #6] - ldrb r0, [r7, #0x14] - movs r1, #0x3f - ands r1, r0 - ldrb r2, [r3, #7] - movs r0, #0x40 - rsbs r0, r0, #0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3, #7] - adds r1, r7, #0 - adds r1, #0x38 - ldrb r1, [r1] - lsls r1, r1, #6 - movs r2, #0x3f - ands r0, r2 - orrs r0, r1 - strb r0, [r3, #7] - adds r3, #8 - add sb, r8 - add ip, sl - subs r4, #1 - cmp r4, #0 - bge _08068614 - pop {r3, r4, r5} - mov r8, r3 - mov sb, r4 - mov sl, r5 - pop {r4, r5, r6, r7, pc} - .align 2, 0 -_08068664: .4byte gPlayerEntity -_08068668: .4byte 0xFFFF0000 -_0806866C: .4byte 0x0000FFFF -_08068670: .4byte gPlayerState -_08068674: .4byte 0xFF00FFFF -_08068678: .4byte 0xC0FFFFFF -_0806867C: .4byte 0x3FFFFFFF - - thumb_func_start sub_08068680 -sub_08068680: @ 0x08068680 - adds r2, r1, #0 - adds r2, #0x68 - movs r0, #0 - strb r0, [r2] - ldrb r2, [r1, #0x18] - subs r0, #4 - ands r0, r2 - strb r0, [r1, #0x18] - bx lr - .align 2, 0 - - thumb_func_start sub_08068694 -sub_08068694: @ 0x08068694 - push {r4, lr} - adds r4, r1, #0 - adds r2, r4, #0 - adds r2, #0x68 - movs r3, #1 - movs r1, #1 - strb r1, [r2] - ldrb r2, [r4, #0x18] - subs r1, #5 - ands r1, r2 - orrs r1, r3 - strb r1, [r4, #0x18] - ldrb r0, [r0, #0x14] - strb r0, [r4, #0x14] - adds r0, r4, #0 - bl sub_08068578 - ldrb r1, [r4, #0x14] - lsrs r1, r1, #1 - adds r0, r4, #0 - bl InitAnimationForceUpdate - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_080686C4 -sub_080686C4: @ 0x080686C4 - push {lr} - adds r0, r1, #0 - ldrh r1, [r0, #0x32] - subs r1, #0x10 - strh r1, [r0, #0x32] - bl sub_08068578 - pop {pc} + .syntax divided diff --git a/asm/non_matching/zeldaFollower/sub_08068578.inc b/asm/non_matching/zeldaFollower/sub_08068578.inc new file mode 100644 index 00000000..dea71d3a --- /dev/null +++ b/asm/non_matching/zeldaFollower/sub_08068578.inc @@ -0,0 +1,127 @@ + .syntax unified + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + adds r7, r0, #0 + ldr r4, _08068664 @ =gPlayerEntity + ldrh r1, [r4, #0x2e] + ldr r3, _08068668 @ =0xFFFF0000 + adds r0, r3, #0 + ands r0, r5 + orrs r0, r1 + ldrh r1, [r4, #0x32] + lsls r1, r1, #0x10 + ldr r2, _0806866C @ =0x0000FFFF + ands r0, r2 + adds r5, r0, #0 + orrs r5, r1 + ldrh r0, [r4, #0x36] + ands r3, r6 + orrs r3, r0 + ldr r0, _08068670 @ =gPlayerState + adds r0, #0xa8 + ldrb r0, [r0] + lsls r0, r0, #0x10 + ldr r2, _08068674 @ =0xFF00FFFF + ands r2, r3 + orrs r2, r0 + ldrb r1, [r4, #0x14] + movs r0, #0x3f + ands r1, r0 + lsls r1, r1, #0x18 + ldr r0, _08068678 @ =0xC0FFFFFF + ands r0, r2 + orrs r0, r1 + adds r1, r4, #0 + adds r1, #0x38 + ldrb r1, [r1] + lsls r1, r1, #0x1e + ldr r2, _0806867C @ =0x3FFFFFFF + ands r0, r2 + adds r6, r0, #0 + orrs r6, r1 + movs r0, #0x2e + ldrsh r1, [r4, r0] + movs r2, #0x2e + ldrsh r0, [r7, r2] + subs r1, r1, r0 + mov sl, r1 + movs r0, #0x32 + ldrsh r1, [r4, r0] + movs r2, #0x32 + ldrsh r0, [r7, r2] + subs r1, r1, r0 + mov r8, r1 + mov r1, sl + lsls r0, r1, #0x10 + asrs r0, r0, #0x10 + movs r1, #0x14 + bl FixedDiv + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + mov sl, r0 + mov r2, r8 + lsls r0, r2, #0x10 + asrs r0, r0, #0x10 + movs r1, #0x14 + bl FixedDiv + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + mov r8, r0 + ldr r3, [r7, #0x64] + movs r0, #0 + mov sb, r0 + mov ip, r0 + movs r4, #0x13 +_08068614: + mov r1, ip + asrs r0, r1, #8 + subs r0, r5, r0 + strh r0, [r3] + lsrs r0, r5, #0x10 + mov r2, sb + asrs r1, r2, #8 + subs r0, r0, r1 + strh r0, [r3, #2] + strh r6, [r3, #4] + lsrs r0, r6, #0x10 + strb r0, [r3, #6] + ldrb r0, [r7, #0x14] + movs r1, #0x3f + ands r1, r0 + ldrb r2, [r3, #7] + movs r0, #0x40 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3, #7] + adds r1, r7, #0 + adds r1, #0x38 + ldrb r1, [r1] + lsls r1, r1, #6 + movs r2, #0x3f + ands r0, r2 + orrs r0, r1 + strb r0, [r3, #7] + adds r3, #8 + add sb, r8 + add ip, sl + subs r4, #1 + cmp r4, #0 + bge _08068614 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_08068664: .4byte gPlayerEntity +_08068668: .4byte 0xFFFF0000 +_0806866C: .4byte 0x0000FFFF +_08068670: .4byte gPlayerState +_08068674: .4byte 0xFF00FFFF +_08068678: .4byte 0xC0FFFFFF +_0806867C: .4byte 0x3FFFFFFF + .syntax divided diff --git a/asm/npc23.s b/asm/npc23.s deleted file mode 100644 index bed87076..00000000 --- a/asm/npc23.s +++ /dev/null @@ -1,420 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - - thumb_func_start NPC23 -NPC23: @ 0x080662D8 - push {r4, lr} - adds r4, r0, #0 - ldr r1, _080662F4 @ =gUnk_081104C8 - ldrb r0, [r4, #0xc] - lsls r0, r0, #2 - adds r0, r0, r1 - ldr r1, [r0] - adds r0, r4, #0 - bl _call_via_r1 - adds r0, r4, #0 - bl sub_0806ED78 - pop {r4, pc} - .align 2, 0 -_080662F4: .4byte gUnk_081104C8 - - thumb_func_start sub_080662F8 -sub_080662F8: @ 0x080662F8 - push {r4, r5, lr} - adds r5, r0, #0 - movs r4, #0 - movs r2, #1 - movs r0, #1 - strb r0, [r5, #0xc] - strb r4, [r5, #0xd] - ldrb r1, [r5, #0x18] - subs r0, #5 - ands r0, r1 - orrs r0, r2 - strb r0, [r5, #0x18] - ldrb r0, [r5, #0xa] - lsls r0, r0, #1 - strb r0, [r5, #0x14] - ldrb r1, [r5, #0xa] - adds r0, r5, #0 - bl InitializeAnimation - ldrh r0, [r5, #0x2e] - adds r1, r5, #0 - adds r1, #0x7e - strh r0, [r1] - ldrh r1, [r5, #0x32] - adds r0, r5, #0 - adds r0, #0x80 - strh r1, [r0] - adds r0, #6 - strh r4, [r0] - ldrb r0, [r5, #0xe] - adds r1, r5, #0 - adds r1, #0x82 - strh r0, [r1] - ldr r0, _08066354 @ =gPlayerEntity - str r0, [r5, #0x50] - adds r0, r5, #0 - adds r0, #0x84 - strh r4, [r0] - ldr r1, [r5, #0x50] - adds r0, r5, #0 - bl sub_08066490 - adds r0, r5, #0 - bl sub_08078778 - pop {r4, r5, pc} - .align 2, 0 -_08066354: .4byte gPlayerEntity - - thumb_func_start sub_08066358 -sub_08066358: @ 0x08066358 - push {r4, r5, lr} - adds r4, r0, #0 - adds r1, r4, #0 - adds r1, #0x39 - movs r0, #0 - ldrsb r0, [r1, r0] - cmp r0, #0 - beq _080663B8 - movs r5, #0 - strb r5, [r1] - movs r0, #0 - bl TextboxNoOverlapFollow - ldrb r1, [r4, #0xb] - movs r0, #0x10 - ands r0, r1 - cmp r0, #0 - beq _080663C0 - movs r0, #3 - strb r0, [r4, #0xc] - strb r5, [r4, #0xd] - adds r0, r4, #0 - adds r0, #0x7e - ldrh r0, [r0] - movs r2, #0x2e - ldrsh r1, [r4, r2] - subs r0, r0, r1 - cmp r0, #8 - ble _08066396 - movs r0, #8 - b _08066398 -_08066396: - movs r0, #0x18 -_08066398: - strb r0, [r4, #0x15] - movs r0, #0x80 - strh r0, [r4, #0x24] - adds r1, r4, #0 - adds r1, #0x84 - movs r2, #1 - movs r0, #1 - strh r0, [r1] - ldr r0, _080663B4 @ =gUnk_02034490 - strb r2, [r0] - adds r0, r4, #0 - bl sub_080788E0 - b _080663C0 - .align 2, 0 -_080663B4: .4byte gUnk_02034490 -_080663B8: - ldr r1, [r4, #0x50] - adds r0, r4, #0 - bl sub_08066490 -_080663C0: - adds r0, r4, #0 - bl GetNextFrame - adds r0, r4, #0 - bl sub_08066570 - pop {r4, r5, pc} - .align 2, 0 - - thumb_func_start nullsub_110 -nullsub_110: @ 0x080663D0 - bx lr - .align 2, 0 - - thumb_func_start sub_080663D4 -sub_080663D4: @ 0x080663D4 - push {r4, lr} - adds r4, r0, #0 - movs r0, #0x2e - ldrsh r1, [r4, r0] - adds r0, r4, #0 - adds r0, #0x7e - ldrh r0, [r0] - subs r0, #8 - cmp r1, r0 - bne _08066410 - ldr r0, _0806640C @ =gPlayerEntity - ldrb r0, [r0, #0xc] - cmp r0, #0xf - beq _0806642E - movs r0, #0 - movs r1, #4 - strb r1, [r4, #0xc] - strb r0, [r4, #0x15] - strh r0, [r4, #0x24] - adds r1, r4, #0 - adds r1, #0x84 - strh r0, [r1] - adds r0, r4, #0 - movs r1, #2 - bl InitializeAnimation - b _0806642E - .align 2, 0 -_0806640C: .4byte gPlayerEntity -_08066410: - ldrb r0, [r4, #0xd] - cmp r0, #0 - bne _08066428 - ldrb r1, [r4, #0x15] - lsrs r1, r1, #3 - adds r1, #4 - adds r0, r4, #0 - bl InitializeAnimation - ldrb r0, [r4, #0xd] - adds r0, #1 - strb r0, [r4, #0xd] -_08066428: - adds r0, r4, #0 - bl ProcessMovement -_0806642E: - bl sub_08078B48 - adds r0, r4, #0 - bl GetNextFrame - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_0806643C -sub_0806643C: @ 0x0806643C - push {r4, r5, lr} - adds r5, r0, #0 - bl sub_0806650C - adds r4, r0, #0 - cmp r4, #0 - bne _08066462 - movs r0, #5 - strb r0, [r5, #0xc] - ldr r0, _0806646C @ =gRoomControls - str r4, [r0, #0x30] - movs r0, #0x40 - movs r1, #0 - movs r2, #0 - bl sub_08078AC0 - ldr r0, _08066470 @ =gPlayerEntity - strb r4, [r0, #0x14] - strb r4, [r0, #0x15] -_08066462: - adds r0, r5, #0 - bl GetNextFrame - pop {r4, r5, pc} - .align 2, 0 -_0806646C: .4byte gRoomControls -_08066470: .4byte gPlayerEntity - - thumb_func_start sub_08066474 -sub_08066474: @ 0x08066474 - push {lr} - ldr r0, _08066488 @ =gPlayerEntity - ldrb r0, [r0, #0xc] - cmp r0, #0xf - beq _08066484 - ldr r1, _0806648C @ =gUnk_02034490 - movs r0, #0 - strb r0, [r1] -_08066484: - pop {pc} - .align 2, 0 -_08066488: .4byte gPlayerEntity -_0806648C: .4byte gUnk_02034490 - - thumb_func_start sub_08066490 -sub_08066490: @ 0x08066490 - push {r4, r5, r6, lr} - mov ip, r0 - adds r5, r1, #0 - ldrb r1, [r0, #0xb] - movs r0, #0x10 - ands r0, r1 - cmp r0, #0 - beq _0806650A - mov r1, ip - ldrh r0, [r1, #0x2e] - adds r1, #0x86 - strh r0, [r1] - mov r0, ip - adds r0, #0x7e - ldrh r2, [r0] - adds r0, #4 - ldrh r0, [r0] - adds r3, r2, r0 - subs r4, r2, r0 - movs r6, #0x2e - ldrsh r0, [r5, r6] - cmp r0, r3 - bge _080664C6 - cmp r0, r4 - ble _080664C6 - adds r2, r0, #0 - b _080664D2 -_080664C6: - movs r2, #0x2e - ldrsh r0, [r5, r2] - adds r2, r4, #0 - cmp r0, r3 - blt _080664D2 - adds r2, r3, #0 -_080664D2: - ldrh r0, [r1] - cmp r0, r2 - bne _080664F0 - mov r1, ip - adds r1, #0x84 - ldrh r0, [r1] - cmp r0, #1 - bne _0806650A - movs r0, #0 - strh r0, [r1] - mov r0, ip - movs r1, #2 - bl InitializeAnimation - b _0806650A -_080664F0: - mov r6, ip - strh r2, [r6, #0x2e] - mov r1, ip - adds r1, #0x84 - ldrh r0, [r1] - cmp r0, #0 - bne _0806650A - movs r0, #1 - strh r0, [r1] - mov r0, ip - movs r1, #6 - bl InitializeAnimation -_0806650A: - pop {r4, r5, r6, pc} - - thumb_func_start sub_0806650C -sub_0806650C: @ 0x0806650C - push {r4, r5, r6, r7, lr} - adds r3, r0, #0 - movs r4, #0 - ldr r1, _0806652C @ =gPlayerEntity - ldrh r5, [r1, #0x2e] - adds r7, r5, #0 - ldrh r2, [r1, #0x32] - adds r0, #0x80 - ldrh r0, [r0] - adds r0, #0x10 - adds r6, r1, #0 - cmp r2, r0 - bge _08066530 - movs r4, #4 - b _0806654C - .align 2, 0 -_0806652C: .4byte gPlayerEntity -_08066530: - adds r0, r3, #0 - adds r0, #0x7e - ldrh r1, [r0] - adds r0, r1, #2 - cmp r5, r0 - bge _0806653E - movs r4, #2 -_0806653E: - adds r0, r1, #6 - cmp r7, r0 - ble _08066546 - movs r4, #6 -_08066546: - cmp r4, #0 - bne _0806654C - strh r4, [r6, #0x24] -_0806654C: - ldrb r0, [r6, #0xc] - cmp r0, #0xf - beq _0806656A - cmp r4, #0 - bne _0806655A - movs r0, #0 - b _0806656C -_0806655A: - movs r0, #8 - movs r1, #0 - movs r2, #0 - bl sub_08078AC0 - strb r4, [r6, #0x14] - lsls r0, r4, #2 - strb r0, [r6, #0x15] -_0806656A: - movs r0, #1 -_0806656C: - pop {r4, r5, r6, r7, pc} - .align 2, 0 - - thumb_func_start sub_08066570 -sub_08066570: @ 0x08066570 - push {r4, r5, r6, lr} - adds r5, r0, #0 - adds r0, #0x5a - ldrb r1, [r0] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _080665DE - ldrb r0, [r5, #0xc] - cmp r0, #3 - beq _080665DE - ldr r4, _080665E0 @ =gPlayerEntity - adds r0, r5, #0 - adds r1, r4, #0 - movs r2, #0x50 - bl sub_0806FC80 - cmp r0, #0 - beq _080665DE - adds r0, r5, #0 - adds r1, r4, #0 - bl GetFacingDirection - adds r3, r0, #0 - movs r6, #1 - movs r1, #0x18 - adds r4, r3, #0 - ands r4, r1 - ldrb r0, [r5, #0x15] - adds r2, r1, #0 - ands r2, r0 - cmp r2, r4 - bne _080665C8 - adds r2, r3, #5 - movs r1, #7 - ands r2, r1 - ldrb r0, [r5, #0x15] - adds r0, #5 - ands r0, r1 - cmp r0, #2 - bhi _080665C8 - cmp r2, #2 - bhi _080665C8 - movs r6, #0 -_080665C8: - cmp r6, #0 - beq _080665DE - strb r3, [r5, #0x15] - adds r3, #4 - movs r0, #0x18 - ands r3, r0 - lsrs r3, r3, #3 - adds r0, r5, #0 - adds r1, r3, #0 - bl InitializeAnimation -_080665DE: - pop {r4, r5, r6, pc} - .align 2, 0 -_080665E0: .4byte gPlayerEntity diff --git a/asm/npc58.s b/asm/npc58.s deleted file mode 100644 index d095899a..00000000 --- a/asm/npc58.s +++ /dev/null @@ -1,149 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start NPC58 -NPC58: @ 0x0806EAF4 - push {r4, r5, r6, r7, lr} - adds r6, r0, #0 - ldrb r0, [r6, #0xc] - cmp r0, #0 - bne _0806EB48 - ldr r1, _0806EBA0 @ =gUnk_081146D0 - adds r0, r6, #0 - bl LoadExtraSpriteData - cmp r0, #0 - beq _0806EBA8 - ldrb r0, [r6, #0xc] - adds r0, #1 - strb r0, [r6, #0xc] - ldrb r1, [r6, #0x18] - movs r0, #4 - rsbs r0, r0, #0 - ands r0, r1 - movs r1, #2 - orrs r0, r1 - strb r0, [r6, #0x18] - ldrb r2, [r6, #0x19] - movs r1, #0x3f - adds r0, r1, #0 - ands r0, r2 - strb r0, [r6, #0x19] - adds r3, r6, #0 - adds r3, #0x29 - ldrb r2, [r3] - movs r0, #8 - rsbs r0, r0, #0 - ands r0, r2 - strb r0, [r3] - ldrb r0, [r6, #0x1b] - ands r1, r0 - movs r0, #0x40 - orrs r1, r0 - strb r1, [r6, #0x1b] - movs r0, #0x78 - strh r0, [r6, #0x2e] - movs r0, #0x10 - strh r0, [r6, #0x32] -_0806EB48: - ldr r7, [r6, #0x50] - cmp r7, #0 - beq _0806EBA4 - adds r0, r7, #0 - adds r0, #0x68 - movs r1, #0 - ldrsh r4, [r0, r1] - movs r5, #0x96 - lsls r5, r5, #2 - adds r0, r4, #0 - adds r1, r5, #0 - bl __divsi3 - adds r1, r6, #0 - adds r1, #0x68 - strh r0, [r1] - adds r0, r4, #0 - adds r1, r5, #0 - bl __modsi3 - adds r4, r0, #0 - movs r1, #0x3c - bl __divsi3 - adds r1, r6, #0 - adds r1, #0x6a - strh r0, [r1] - adds r0, r4, #0 - movs r1, #0x3c - bl __modsi3 - movs r1, #6 - bl __divsi3 - adds r1, r6, #0 - adds r1, #0x6c - strh r0, [r1] - ldr r0, [r7, #4] - cmp r0, #0 - bne _0806EBA8 - bl DeleteThisEntity - b _0806EBA8 - .align 2, 0 -_0806EBA0: .4byte gUnk_081146D0 -_0806EBA4: - bl DeleteThisEntity -_0806EBA8: - pop {r4, r5, r6, r7, pc} - .align 2, 0 - - thumb_func_start NPC58_Head -NPC58_Head: @ 0x0806EBAC - push {r4, lr} - adds r4, r0, #0 - movs r0, #0xff - strb r0, [r4, #0x1e] - adds r0, r4, #0 - adds r0, #0x68 - movs r1, #0 - ldrsh r2, [r0, r1] - adds r0, r4, #0 - movs r1, #0 - bl SetExtraSpriteFrame - adds r0, r4, #0 - adds r0, #0x6a - movs r1, #0 - ldrsh r2, [r0, r1] - adds r0, r4, #0 - movs r1, #1 - bl SetExtraSpriteFrame - adds r0, r4, #0 - adds r0, #0x6c - movs r1, #0 - ldrsh r2, [r0, r1] - adds r0, r4, #0 - movs r1, #2 - bl SetExtraSpriteFrame - adds r0, r4, #0 - movs r1, #3 - movs r2, #0xa - bl SetExtraSpriteFrame - movs r2, #0xc - rsbs r2, r2, #0 - adds r0, r4, #0 - movs r1, #0 - movs r3, #0 - bl sub_0806FFBC - movs r2, #4 - rsbs r2, r2, #0 - adds r0, r4, #0 - movs r1, #1 - movs r3, #0 - bl sub_0806FFBC - adds r0, r4, #0 - movs r1, #2 - movs r2, #0xc - movs r3, #0 - bl sub_0806FFBC - adds r0, r4, #0 - bl sub_0807000C - pop {r4, pc} - .align 2, 0 diff --git a/asm/ocarinaUpdate.s b/asm/ocarinaUpdate.s deleted file mode 100644 index 9b509008..00000000 --- a/asm/ocarinaUpdate.s +++ /dev/null @@ -1,46 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start OcarinaUpdate -OcarinaUpdate: @ 0x08076C2C - push {r4, r5, r6, lr} - adds r5, r0, #0 - adds r6, r1, #0 - bl UpdateItemAnim - ldrb r1, [r5, #0xe] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _08076C6E - ldr r0, _08076C70 @ =gPlayerEntity - ldrb r2, [r0, #0x10] - movs r4, #0 - movs r1, #0x80 - orrs r1, r2 - strb r1, [r0, #0x10] - ldr r2, _08076C74 @ =gPlayerState - ldr r1, [r2, #0x30] - ldr r3, _08076C78 @ =0xEFFFFFFF - ands r1, r3 - str r1, [r2, #0x30] - adds r2, #0x27 - strb r4, [r2] - ldr r1, _08076C7C @ =gUnk_02034490 - strb r4, [r1] - bl CreateBird - bl UnfreezeTime - adds r0, r5, #0 - adds r1, r6, #0 - bl sub_08077E78 -_08076C6E: - pop {r4, r5, r6, pc} - .align 2, 0 -_08076C70: .4byte gPlayerEntity -_08076C74: .4byte gPlayerState -_08076C78: .4byte 0xEFFFFFFF -_08076C7C: .4byte gUnk_02034490 diff --git a/asm/percy.s b/asm/percy.s deleted file mode 100644 index d00ceec6..00000000 --- a/asm/percy.s +++ /dev/null @@ -1,156 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_0806B540 -sub_0806B540: @ 0x0806B540 - push {r4, lr} - adds r2, r0, #0 - adds r0, #0x84 - ldr r4, [r0] - ldrb r0, [r4, #0x18] - cmp r0, #1 - beq _0806B588 - cmp r0, #1 - bgt _0806B558 - cmp r0, #0 - beq _0806B562 - b _0806B600 -_0806B558: - cmp r0, #2 - beq _0806B5AC - cmp r0, #3 - beq _0806B5EE - b _0806B600 -_0806B562: - ldr r0, _0806B584 @ =0x00002312 - adds r1, r2, #0 - bl TextboxNoOverlap - movs r0, #0x3f - bl CheckLocalFlag - cmp r0, #0 - bne _0806B606 - ldrb r0, [r4, #0x18] - adds r0, #1 - strb r0, [r4, #0x18] - movs r0, #0x3f - bl SetLocalFlag - b _0806B600 - .align 2, 0 -_0806B584: .4byte 0x00002312 -_0806B588: - ldr r0, _0806B5A4 @ =gTextBox - ldrb r1, [r0] - movs r0, #0x7f - ands r0, r1 - cmp r0, #0 - bne _0806B600 - movs r0, #2 - strb r0, [r4, #0x18] - ldr r0, _0806B5A8 @ =0x00002315 - adds r1, r2, #0 - bl TextboxNoOverlap - b _0806B600 - .align 2, 0 -_0806B5A4: .4byte gTextBox -_0806B5A8: .4byte 0x00002315 -_0806B5AC: - ldr r0, _0806B5D4 @ =gTextBox - ldrb r1, [r0] - movs r0, #0x7f - ands r0, r1 - cmp r0, #0 - bne _0806B600 - movs r0, #3 - strb r0, [r4, #0x18] - ldr r0, _0806B5D8 @ =gSave - adds r0, #0xbb - ldrb r0, [r0] - cmp r0, #0 - beq _0806B5DC - movs r0, #0x58 - movs r1, #0 - movs r2, #0 - bl sub_080A7C18 - b _0806B5E6 - .align 2, 0 -_0806B5D4: .4byte gTextBox -_0806B5D8: .4byte gSave -_0806B5DC: - movs r0, #0x3f - movs r1, #0x64 - movs r2, #0 - bl sub_080A7C18 -_0806B5E6: - movs r0, #0xf - bl SetRoomFlag - b _0806B600 -_0806B5EE: - ldr r0, _0806B5FC @ =gPlayerEntity - ldrb r0, [r0, #0xc] - cmp r0, #8 - beq _0806B600 - movs r0, #0x2d - strh r0, [r4, #0x10] - b _0806B606 - .align 2, 0 -_0806B5FC: .4byte gPlayerEntity -_0806B600: - ldr r1, _0806B608 @ =gActiveScriptInfo - movs r0, #0 - strb r0, [r1, #6] -_0806B606: - pop {r4, pc} - .align 2, 0 -_0806B608: .4byte gActiveScriptInfo - - thumb_func_start sub_0806B60C -sub_0806B60C: @ 0x0806B60C - 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 Percy_Fusion -Percy_Fusion: @ 0x0806B624 - push {r4, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xc] - cmp r0, #0 - bne _0806B65C - ldr r1, _0806B658 @ =gUnk_08112E1C - adds r0, r4, #0 - bl LoadExtraSpriteData - cmp r0, #0 - beq _0806B662 - 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 _0806B662 - .align 2, 0 -_0806B658: .4byte gUnk_08112E1C -_0806B65C: - adds r0, r4, #0 - bl GetNextFrame -_0806B662: - pop {r4, pc} diff --git a/asm/picolyteBottles.s b/asm/picolyteBottles.s deleted file mode 100644 index 0930627e..00000000 --- a/asm/picolyteBottles.s +++ /dev/null @@ -1,486 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - - thumb_func_start PicolyteBottle -PicolyteBottle: @ 0x0806DED0 - push {r4, lr} - adds r4, r0, #0 - ldr r1, _0806DEF8 @ =gUnk_081142BC - ldrb r0, [r4, #0xc] - lsls r0, r0, #2 - adds r0, r0, r1 - ldr r1, [r0] - adds r0, r4, #0 - bl _call_via_r1 - ldrb r0, [r4, #0xa] - cmp r0, #0 - bne _0806DEF4 - ldr r2, _0806DEFC @ =gPlayerState - ldrb r1, [r2, #0x1a] - movs r0, #0x80 - orrs r0, r1 - strb r0, [r2, #0x1a] -_0806DEF4: - pop {r4, pc} - .align 2, 0 -_0806DEF8: .4byte gUnk_081142BC -_0806DEFC: .4byte gPlayerState - - thumb_func_start sub_0806DF00 -sub_0806DF00: @ 0x0806DF00 - push {r4, r5, lr} - adds r4, r0, #0 - ldrb r5, [r4, #0xa] - cmp r5, #0 - bne _0806DF5C - movs r0, #1 - strb r0, [r4, #0xc] - movs r0, #0x51 - movs r1, #1 - movs r2, #0 - bl CreateNPC - str r0, [r4, #0x68] - str r4, [r0, #0x50] - movs r0, #0x51 - movs r1, #1 - movs r2, #1 - bl CreateNPC - str r0, [r4, #0x6c] - str r4, [r0, #0x50] - movs r0, #0x51 - movs r1, #1 - movs r2, #2 - bl CreateNPC - str r0, [r4, #0x70] - str r4, [r0, #0x50] - adds r0, r4, #0 - adds r0, #0x74 - strh r5, [r0] - adds r0, #2 - movs r1, #0xa - strh r1, [r0] - ldr r0, _0806DF58 @ =gScreenTransition - strh r1, [r0, #6] - adds r0, r4, #0 - bl sub_0806E014 - adds r0, r4, #0 - bl sub_0807DD50 - b _0806DF6E - .align 2, 0 -_0806DF58: .4byte gScreenTransition -_0806DF5C: - ldr r0, _0806DF70 @ =gUnk_080FD150 - str r0, [r4, #0x48] - adds r1, r4, #0 - adds r1, #0x38 - movs r0, #1 - strb r0, [r1] - adds r0, r4, #0 - bl sub_0806E0DC -_0806DF6E: - pop {r4, r5, pc} - .align 2, 0 -_0806DF70: .4byte gUnk_080FD150 - - thumb_func_start sub_0806DF74 -sub_0806DF74: @ 0x0806DF74 - push {r4, lr} - adds r4, r0, #0 - movs r1, #0 - bl sub_0807DD94 - ldrb r0, [r4, #0xe] - cmp r0, #0xff - beq _0806DFB0 - adds r0, r4, #0 - adds r0, #0x44 - ldrb r0, [r0] - cmp r0, #0 - beq _0806DF96 - ldr r1, [r4, #0x70] - ldrb r0, [r1, #0xe] - adds r0, #1 - strb r0, [r1, #0xe] -_0806DF96: - ldr r1, [r4, #0x68] - ldrb r0, [r1, #0xe] - adds r0, #1 - strb r0, [r1, #0xe] - ldr r1, [r4, #0x6c] - ldrb r0, [r1, #0xe] - adds r0, #1 - strb r0, [r1, #0xe] - movs r0, #0xff - strb r0, [r4, #0xe] - movs r0, #0 - bl SetRoomFlag -_0806DFB0: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_0806DFB4 -sub_0806DFB4: @ 0x0806DFB4 - push {r4, lr} - adds r4, r0, #0 - adds r1, r4, #0 - adds r1, #0x39 - movs r2, #0 - ldrsb r2, [r1, r2] - cmp r2, #0 - beq _0806DFD6 - movs r0, #0 - strb r0, [r1] - ldr r1, [r4, #0x50] - ldrb r0, [r4, #0xb] - strb r0, [r1, #0xe] - ldr r1, [r4, #0x50] - ldrb r0, [r4, #0xf] - strb r0, [r1, #0xb] - b _0806E00C -_0806DFD6: - ldrb r0, [r4, #0xe] - cmp r0, #0 - beq _0806E00C - strb r2, [r4, #0xe] - ldrb r2, [r4, #0xf] - movs r0, #0x35 - movs r1, #2 - bl CreateObject - adds r1, r0, #0 - cmp r1, #0 - beq _0806DFF8 - str r4, [r1, #0x50] - str r1, [r4, #0x54] - adds r0, r4, #0 - bl CopyPosition -_0806DFF8: - adds r0, r4, #0 - bl sub_080788E0 - adds r0, r4, #0 - adds r0, #0x76 - ldrh r1, [r0] - movs r0, #0x74 - movs r2, #2 - bl sub_0807B7D8 -_0806E00C: - pop {r4, pc} - .align 2, 0 - - thumb_func_start nullsub_111 -nullsub_111: @ 0x0806E010 - bx lr - .align 2, 0 - - thumb_func_start sub_0806E014 -sub_0806E014: @ 0x0806E014 - push {r4, r5, r6, r7, lr} - adds r5, r0, #0 - bl Random - movs r1, #0x70 - ands r1, r0 - lsrs r4, r1, #4 - movs r0, #0xff - strb r0, [r5, #0xb] - movs r0, #1 - rsbs r0, r0, #0 - adds r7, r0, #0 - strb r0, [r5, #0xe] - movs r0, #0x93 - bl CheckLocalFlag - adds r1, r0, #0 - cmp r1, #0 - bne _0806E088 - adds r0, r5, #0 - adds r0, #0x44 - strb r1, [r0] - lsls r1, r4, #1 - ldr r0, _0806E084 @ =gUnk_081142CC - adds r6, r1, r0 - ldr r1, [r5, #0x68] - ldrb r0, [r6] - strb r0, [r1, #0xf] - ldr r1, [r5, #0x68] - movs r4, #0x90 - lsls r4, r4, #0xf - adds r0, r5, #0 - adds r2, r4, #0 - adds r3, r4, #0 - bl PositionRelative - ldr r1, [r5, #0x6c] - ldrb r0, [r6, #1] - strb r0, [r1, #0xf] - ldr r1, [r5, #0x6c] - movs r2, #0xd0 - lsls r2, r2, #0xf - adds r0, r5, #0 - adds r3, r4, #0 - bl PositionRelative - ldr r1, [r5, #0x70] - ldrb r0, [r1, #0xf] - orrs r0, r7 - strb r0, [r1, #0xf] - ldr r1, [r5, #0x70] - adds r0, r5, #0 - bl CopyPosition - b _0806E0D6 - .align 2, 0 -_0806E084: .4byte gUnk_081142CC -_0806E088: - adds r1, r5, #0 - adds r1, #0x44 - movs r0, #1 - strb r0, [r1] - lsls r1, r4, #2 - ldr r0, _0806E0D8 @ =gUnk_081142DC - adds r6, r1, r0 - ldr r1, [r5, #0x68] - ldrb r0, [r6] - strb r0, [r1, #0xf] - ldr r1, [r5, #0x68] - movs r2, #0xe0 - lsls r2, r2, #0xe - movs r4, #0x90 - lsls r4, r4, #0xf - adds r0, r5, #0 - adds r3, r4, #0 - bl PositionRelative - ldr r1, [r5, #0x6c] - ldrb r0, [r6, #1] - strb r0, [r1, #0xf] - ldr r1, [r5, #0x6c] - movs r2, #0xb0 - lsls r2, r2, #0xf - adds r0, r5, #0 - adds r3, r4, #0 - bl PositionRelative - ldr r1, [r5, #0x70] - ldrb r0, [r6, #2] - strb r0, [r1, #0xf] - ldr r1, [r5, #0x70] - movs r2, #0xf0 - lsls r2, r2, #0xf - adds r0, r5, #0 - adds r3, r4, #0 - bl PositionRelative -_0806E0D6: - pop {r4, r5, r6, r7, pc} - .align 2, 0 -_0806E0D8: .4byte gUnk_081142DC - - thumb_func_start sub_0806E0DC -sub_0806E0DC: @ 0x0806E0DC - push {r4, r5, r6, lr} - adds r4, r0, #0 - movs r6, #0 - strb r6, [r4, #0xe] - ldrb r0, [r4, #0xf] - cmp r0, #0xff - beq _0806E138 - movs r0, #2 - strb r0, [r4, #0xc] - movs r0, #0x2e - ldrsh r1, [r4, r0] - ldr r2, _0806E134 @ =gRoomControls - ldrh r0, [r2, #6] - subs r1, r1, r0 - asrs r1, r1, #4 - movs r3, #0x3f - ands r1, r3 - movs r5, #0x32 - ldrsh r0, [r4, r5] - ldrh r2, [r2, #8] - subs r0, r0, r2 - asrs r0, r0, #4 - ands r0, r3 - lsls r0, r0, #6 - orrs r1, r0 - adds r5, r4, #0 - adds r5, #0x76 - strh r1, [r5] - ldr r0, [r4, #0x54] - cmp r0, #0 - beq _0806E120 - bl DeleteEntity - str r6, [r4, #0x54] -_0806E120: - adds r0, r4, #0 - bl sub_08078828 - ldrh r1, [r5] - movs r0, #0x73 - movs r2, #2 - bl sub_0807B7D8 - b _0806E13C - .align 2, 0 -_0806E134: .4byte gRoomControls -_0806E138: - movs r0, #3 - strb r0, [r4, #0xc] -_0806E13C: - pop {r4, r5, r6, pc} - .align 2, 0 - - thumb_func_start sub_0806E140 -sub_0806E140: @ 0x0806E140 - push {r4, r5, lr} - adds r3, r0, #0 - adds r5, r1, #0 - ldrb r1, [r3, #0xb] - cmp r1, #0 - beq _0806E1AC - movs r0, #1 - str r0, [r5, #0x14] - adds r1, r3, #0 - adds r1, #0x74 - ldrh r0, [r1] - adds r0, #1 - strh r0, [r1] - adds r1, #2 - ldrh r2, [r1] - adds r0, r3, #0 - adds r0, #0x44 - ldrb r0, [r0] - adds r4, r1, #0 - cmp r0, #0 - bne _0806E16E - lsls r0, r2, #1 - b _0806E172 -_0806E16E: - lsls r0, r2, #1 - adds r0, r0, r2 -_0806E172: - strh r0, [r4] - lsls r0, r0, #0x10 - lsrs r0, r0, #0x10 - ldr r1, _0806E18C @ =0x000003E7 - cmp r0, r1 - bls _0806E194 - strh r1, [r4] - movs r0, #0 - str r0, [r5, #0x14] - ldr r0, _0806E190 @ =0x0000421B - bl TextboxNoOverlapFollow - b _0806E1C0 - .align 2, 0 -_0806E18C: .4byte 0x000003E7 -_0806E190: .4byte 0x0000421B -_0806E194: - ldr r0, _0806E1A4 @ =0x00004218 - bl TextboxNoOverlapFollow - ldr r1, _0806E1A8 @ =gTextBox - ldrh r0, [r4] - str r0, [r1, #0x10] - b _0806E1C0 - .align 2, 0 -_0806E1A4: .4byte 0x00004218 -_0806E1A8: .4byte gTextBox -_0806E1AC: - str r1, [r5, #0x14] - adds r0, r3, #0 - adds r0, #0x74 - strh r1, [r0] - adds r4, r3, #0 - adds r4, #0x76 - strh r1, [r4] - ldr r0, _0806E1D4 @ =0x0000421C - bl TextboxNoOverlapFollow -_0806E1C0: - ldr r1, _0806E1D8 @ =gScreenTransition - ldrh r0, [r4] - strh r0, [r1, #6] - ldr r2, _0806E1DC @ =gActiveScriptInfo - ldrb r1, [r2, #7] - movs r0, #1 - orrs r0, r1 - strb r0, [r2, #7] - pop {r4, r5, pc} - .align 2, 0 -_0806E1D4: .4byte 0x0000421C -_0806E1D8: .4byte gScreenTransition -_0806E1DC: .4byte gActiveScriptInfo - - thumb_func_start sub_0806E1E0 -sub_0806E1E0: @ 0x0806E1E0 - push {r4, lr} - adds r4, r0, #0 - bl sub_0806E014 - ldr r0, [r4, #0x68] - bl sub_0806E0DC - ldr r0, [r4, #0x6c] - bl sub_0806E0DC - ldr r0, [r4, #0x70] - bl sub_0806E0DC - pop {r4, pc} - - thumb_func_start sub_0806E1FC -sub_0806E1FC: @ 0x0806E1FC - push {lr} - ldr r0, _0806E208 @ =gUnk_0813AD4C - bl DoExitTransition - pop {pc} - .align 2, 0 -_0806E208: .4byte gUnk_0813AD4C - - thumb_func_start sub_0806E20C -sub_0806E20C: @ 0x0806E20C - push {r4, lr} - ldr r4, _0806E224 @ =gScreenTransition - ldrh r0, [r4, #6] - cmp r0, #0 - beq _0806E230 - ldr r0, _0806E228 @ =0x0000421F - bl TextboxNoOverlapFollow - ldr r1, _0806E22C @ =gTextBox - ldrh r0, [r4, #6] - str r0, [r1, #0x10] - b _0806E236 - .align 2, 0 -_0806E224: .4byte gScreenTransition -_0806E228: .4byte 0x0000421F -_0806E22C: .4byte gTextBox -_0806E230: - ldr r0, _0806E238 @ =0x00004220 - bl TextboxNoOverlapFollow -_0806E236: - pop {r4, pc} - .align 2, 0 -_0806E238: .4byte 0x00004220 - - thumb_func_start sub_0806E23C -sub_0806E23C: @ 0x0806E23C - push {lr} - ldr r1, _0806E24C @ =gScreenTransition - ldrh r0, [r1, #6] - cmp r0, #0 - beq _0806E24A - bl ModRupees -_0806E24A: - pop {pc} - .align 2, 0 -_0806E24C: .4byte gScreenTransition - - thumb_func_start sub_0806E250 -sub_0806E250: @ 0x0806E250 - push {r4, lr} - adds r4, r1, #0 - movs r0, #0 - str r0, [r4, #0x14] - movs r0, #0x31 - bl CheckKinstoneFused - cmp r0, #0 - beq _0806E266 - movs r0, #1 - str r0, [r4, #0x14] -_0806E266: - ldr r2, _0806E274 @ =gActiveScriptInfo - ldrb r1, [r2, #7] - movs r0, #1 - orrs r0, r1 - strb r0, [r2, #7] - pop {r4, pc} - .align 2, 0 -_0806E274: .4byte gActiveScriptInfo diff --git a/asm/pina.s b/asm/pina.s deleted file mode 100644 index c92b8889..00000000 --- a/asm/pina.s +++ /dev/null @@ -1,359 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - - thumb_func_start Pina -Pina: @ 0x08063A60 - push {lr} - adds r2, r0, #0 - ldrb r1, [r2, #0x10] - movs r0, #2 - ands r0, r1 - cmp r0, #0 - beq _08063A76 - adds r0, r2, #0 - bl sub_08063B68 - b _08063A7C -_08063A76: - adds r0, r2, #0 - bl sub_08063A80 -_08063A7C: - pop {pc} - .align 2, 0 - - thumb_func_start sub_08063A80 -sub_08063A80: @ 0x08063A80 - push {lr} - ldr r2, _08063A94 @ =gUnk_0810CDF8 - ldrb r1, [r0, #0xc] - lsls r1, r1, #2 - adds r1, r1, r2 - ldr r1, [r1] - bl _call_via_r1 - pop {pc} - .align 2, 0 -_08063A94: .4byte gUnk_0810CDF8 - - thumb_func_start sub_08063A98 -sub_08063A98: @ 0x08063A98 - push {r4, lr} - adds r4, r0, #0 - 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, #4 - bl InitAnimationForceUpdate - adds r0, r4, #0 - bl sub_08078778 - pop {r4, pc} - - thumb_func_start sub_08063AC0 -sub_08063AC0: @ 0x08063AC0 - push {r4, lr} - adds r4, r0, #0 - movs r1, #0x20 - movs r2, #0x20 - bl sub_0806ED9C - cmp r0, #0 - blt _08063AEE - ldrb r0, [r4, #0xf] - cmp r0, #0 - bne _08063AF4 - bl Random - movs r1, #0x3f - ands r1, r0 - cmp r1, #0 - bne _08063AEE - adds r0, r4, #0 - movs r1, #0 - bl InitAnimationForceUpdate - movs r0, #1 - strb r0, [r4, #0xf] -_08063AEE: - ldrb r0, [r4, #0xf] - cmp r0, #0 - beq _08063B0C -_08063AF4: - adds r0, r4, #0 - bl UpdateAnimationSingleFrame - adds r0, r4, #0 - adds r0, #0x5a - ldrb r1, [r0] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _08063B0C - movs r0, #0 - strb r0, [r4, #0xf] -_08063B0C: - adds r0, r4, #0 - adds r0, #0x39 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #0 - beq _08063B38 - movs r0, #2 - strb r0, [r4, #0xc] - adds r0, r4, #0 - bl GetAnimationState - adds r1, r0, #0 - adds r1, #4 - adds r0, r4, #0 - bl InitAnimationForceUpdate - ldrb r0, [r4, #0xe] - ldr r1, _08063B40 @ =0x00000A01 - adds r0, r0, r1 - bl TextboxNoOverlapFollow -_08063B38: - adds r0, r4, #0 - bl sub_0806ED78 - pop {r4, pc} - .align 2, 0 -_08063B40: .4byte 0x00000A01 - - thumb_func_start sub_08063B44 -sub_08063B44: @ 0x08063B44 - push {lr} - adds r2, r0, #0 - ldr r0, _08063B64 @ =gTextBox - ldrb r0, [r0] - movs r1, #0x7f - ands r1, r0 - cmp r1, #0 - bne _08063B62 - movs r0, #1 - strb r0, [r2, #0xc] - strb r1, [r2, #0xf] - adds r0, r2, #0 - movs r1, #4 - bl InitAnimationForceUpdate -_08063B62: - pop {pc} - .align 2, 0 -_08063B64: .4byte gTextBox - - thumb_func_start sub_08063B68 -sub_08063B68: @ 0x08063B68 - push {r4, lr} - adds r4, r0, #0 - ldrb r3, [r4, #0xc] - cmp r3, #1 - beq _08063B9E - cmp r3, #1 - bgt _08063B7C - cmp r3, #0 - beq _08063B82 - b _08063C10 -_08063B7C: - cmp r3, #2 - beq _08063BF6 - b _08063C10 -_08063B82: - 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] - adds r0, r4, #0 - adds r0, #0x69 - strb r3, [r0] - adds r0, r4, #0 - bl sub_0807DD64 -_08063B9E: - adds r2, r4, #0 - adds r2, #0x39 - movs r1, #0 - ldrsb r1, [r2, r1] - cmp r1, #2 - bne _08063BE0 - movs r0, #0 - strb r1, [r4, #0xc] - strb r0, [r2] - adds r0, r4, #0 - adds r0, #0x58 - ldrb r0, [r0] - adds r1, r4, #0 - adds r1, #0x69 - strb r0, [r1] - ldr r1, _08063BDC @ =gPlayerEntity - adds r0, r4, #0 - bl GetFacingDirection - bl sub_0806F5A4 - adds r1, r0, #0 - adds r1, #4 - adds r0, r4, #0 - bl InitAnimationForceUpdate - adds r0, r4, #0 - bl sub_0806F118 - b _08063C10 - .align 2, 0 -_08063BDC: .4byte gPlayerEntity -_08063BE0: - adds r0, r4, #0 - movs r1, #0 - bl ExecuteScriptForEntity - adds r0, r4, #0 - bl HandleEntity0x82Actions - adds r0, r4, #0 - bl UpdateAnimationSingleFrame - b _08063C10 -_08063BF6: - adds r0, r4, #0 - bl UpdateFuseInteraction - cmp r0, #0 - beq _08063C10 - movs r0, #1 - strb r0, [r4, #0xc] - adds r0, r4, #0 - adds r0, #0x69 - ldrb r1, [r0] - adds r0, r4, #0 - bl InitAnimationForceUpdate -_08063C10: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_08063C14 -sub_08063C14: @ 0x08063C14 - push {lr} - movs r0, #7 - movs r1, #0x14 - bl DeepFindEntityByID - cmp r0, #0 - beq _08063C28 - movs r1, #8 - bl InitAnimationForceUpdate -_08063C28: - pop {pc} - .align 2, 0 - - thumb_func_start sub_08063C2C -sub_08063C2C: @ 0x08063C2C - push {lr} - movs r0, #7 - movs r1, #0x14 - bl DeepFindEntityByID - cmp r0, #0 - beq _08063C40 - movs r1, #4 - bl InitAnimationForceUpdate -_08063C40: - pop {pc} - .align 2, 0 - - thumb_func_start sub_08063C44 -sub_08063C44: @ 0x08063C44 - push {lr} - movs r0, #7 - movs r1, #0x14 - bl DeepFindEntityByID - cmp r0, #0 - beq _08063C58 - movs r1, #0 - bl InitAnimationForceUpdate -_08063C58: - pop {pc} - .align 2, 0 - - thumb_func_start sub_08063C5C -sub_08063C5C: @ 0x08063C5C - push {lr} - movs r0, #7 - movs r1, #0x14 - bl DeepFindEntityByID - cmp r0, #0 - beq _08063C70 - movs r1, #9 - bl InitAnimationForceUpdate -_08063C70: - pop {pc} - .align 2, 0 - - thumb_func_start sub_08063C74 -sub_08063C74: @ 0x08063C74 - push {lr} - movs r0, #7 - movs r1, #0x14 - bl DeepFindEntityByID - cmp r0, #0 - beq _08063C8C - movs r2, #0x18 - rsbs r2, r2, #0 - movs r1, #8 - bl CreateSpeechBubbleExclamationMark -_08063C8C: - pop {pc} - .align 2, 0 - - thumb_func_start sub_08063C90 -sub_08063C90: @ 0x08063C90 - push {lr} - ldr r1, _08063CA4 @ =gSave - ldrb r1, [r1, #8] - lsls r1, r1, #3 - ldr r2, _08063CA8 @ =gUnk_0810CE04 - adds r1, r1, r2 - bl ShowNPCDialogue - pop {pc} - .align 2, 0 -_08063CA4: .4byte gSave -_08063CA8: .4byte gUnk_0810CE04 - - thumb_func_start sub_08063CAC -sub_08063CAC: @ 0x08063CAC - 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 Pina_Fusion -Pina_Fusion: @ 0x08063CC4 - push {lr} - adds r2, r0, #0 - ldrb r0, [r2, #0xc] - cmp r0, #0 - bne _08063CF0 - 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] - ldrh r0, [r2, #0x32] - subs r0, #4 - strh r0, [r2, #0x32] - adds r0, r2, #0 - movs r1, #2 - bl InitAnimationForceUpdate - b _08063CF6 -_08063CF0: - adds r0, r2, #0 - bl UpdateAnimationSingleFrame -_08063CF6: - pop {pc} diff --git a/asm/pita.s b/asm/pita.s deleted file mode 100644 index 1ee5d2f4..00000000 --- a/asm/pita.s +++ /dev/null @@ -1,11 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - - - diff --git a/asm/projectile/mv b/asm/projectile/mv deleted file mode 100644 index e69de29b..00000000 diff --git a/asm/rem.s b/asm/rem.s deleted file mode 100644 index 4f86ff07..00000000 --- a/asm/rem.s +++ /dev/null @@ -1,1053 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_0806A410 -sub_0806A410: @ 0x0806A410 - push {lr} - adds r2, r0, #0 - ldrb r0, [r2, #0xd] - cmp r0, #0 - beq _0806A420 - cmp r0, #1 - beq _0806A43C - b _0806A456 -_0806A420: - ldrb r0, [r2, #0xe] - subs r0, #1 - strb r0, [r2, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _0806A456 - ldrb r0, [r2, #0xd] - adds r0, #1 - strb r0, [r2, #0xd] - adds r0, r2, #0 - movs r1, #8 - bl InitializeAnimation - b _0806A456 -_0806A43C: - adds r0, r2, #0 - adds r0, #0x5a - ldrb r1, [r0] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _0806A456 - adds r0, r2, #0 - adds r0, #0x84 - ldr r1, [r0] - adds r0, r2, #0 - bl sub_0806A9B0 -_0806A456: - pop {pc} - - thumb_func_start sub_0806A458 -sub_0806A458: @ 0x0806A458 - push {lr} - adds r2, r0, #0 - ldrb r0, [r2, #0xd] - cmp r0, #1 - beq _0806A486 - cmp r0, #1 - bgt _0806A46C - cmp r0, #0 - beq _0806A472 - b _0806A4CA -_0806A46C: - cmp r0, #2 - beq _0806A4A8 - b _0806A4CA -_0806A472: - ldrb r0, [r2, #0xe] - subs r0, #1 - strb r0, [r2, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _0806A4CA - ldrb r0, [r2, #0xd] - adds r0, #1 - strb r0, [r2, #0xd] - b _0806A4CA -_0806A486: - adds r0, r2, #0 - adds r0, #0x5a - ldrb r1, [r0] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _0806A4CA - movs r0, #2 - strb r0, [r2, #0xd] - adds r0, r2, #0 - movs r1, #0xa - bl InitializeAnimation - movs r0, #0x62 - bl ClearLocalFlag - b _0806A4CA -_0806A4A8: - adds r0, r2, #0 - adds r0, #0x5a - ldrb r1, [r0] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _0806A4CA - movs r0, #0 - movs r1, #1 - strb r1, [r2, #0xc] - strb r0, [r2, #0xd] - movs r0, #0x3c - strb r0, [r2, #0xe] - adds r0, r2, #0 - movs r1, #2 - bl InitializeAnimation -_0806A4CA: - pop {pc} - - thumb_func_start sub_0806A4CC -sub_0806A4CC: @ 0x0806A4CC - push {r4, lr} - adds r4, r0, #0 - ldrb r2, [r4, #0xd] - cmp r2, #0 - beq _0806A4E0 - cmp r2, #1 - beq _0806A52C - movs r0, #0xb4 - strb r0, [r4, #0xe] - b _0806A54C -_0806A4E0: - adds r0, r4, #0 - adds r0, #0x5a - ldrb r1, [r0] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _0806A54C - adds r0, r4, #0 - adds r0, #0x58 - ldrb r0, [r0] - subs r0, #8 - lsls r0, r0, #0x18 - lsrs r0, r0, #0x18 - cmp r0, #1 - bhi _0806A512 - movs r0, #1 - strb r0, [r4, #0xd] - adds r1, r4, #0 - adds r1, #0x6a - strh r0, [r1] - adds r0, r4, #0 - movs r1, #0xa - bl InitializeAnimation - b _0806A54C -_0806A512: - movs r0, #2 - strb r0, [r4, #0xd] - adds r0, r4, #0 - adds r0, #0x6a - strh r2, [r0] - adds r0, r4, #0 - bl GetAnimationState - adds r1, r0, #0 - adds r0, r4, #0 - bl InitializeAnimation - b _0806A54C -_0806A52C: - adds r0, r4, #0 - adds r0, #0x5a - ldrb r1, [r0] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _0806A54C - movs r0, #2 - strb r0, [r4, #0xd] - adds r0, r4, #0 - bl GetAnimationState - adds r1, r0, #0 - adds r0, r4, #0 - bl InitializeAnimation -_0806A54C: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_0806A550 -sub_0806A550: @ 0x0806A550 - push {r4, r5, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xd] - cmp r0, #0 - bne _0806A568 - movs r0, #1 - strb r0, [r4, #0xd] - adds r0, r4, #0 - movs r1, #0xc - bl InitializeAnimation - b _0806A5B0 -_0806A568: - adds r5, r4, #0 - adds r5, #0x5a - ldrb r0, [r5] - cmp r0, #1 - bne _0806A590 - movs r0, #0 - strb r0, [r5] - movs r0, #8 - movs r1, #2 - bl sub_08080964 - ldr r2, _0806A5B4 @ =gActiveScriptInfo - ldr r0, [r2] - movs r1, #0x80 - lsls r1, r1, #1 - orrs r0, r1 - str r0, [r2] - ldr r0, _0806A5B8 @ =0x0000011B - bl SoundReq -_0806A590: - ldrb r1, [r5] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _0806A5B0 - movs r1, #0 - movs r0, #5 - strb r0, [r4, #0xc] - strb r1, [r4, #0xd] - adds r0, r4, #0 - movs r1, #0xd - bl InitializeAnimation - adds r0, r4, #0 - bl sub_0806A914 -_0806A5B0: - pop {r4, r5, pc} - .align 2, 0 -_0806A5B4: .4byte gActiveScriptInfo -_0806A5B8: .4byte 0x0000011B - - thumb_func_start nullsub_503 -nullsub_503: @ 0x0806A5BC - bx lr - .align 2, 0 - - thumb_func_start sub_0806A5C0 -sub_0806A5C0: @ 0x0806A5C0 - push {r4, lr} - adds r4, r0, #0 - bl GetNextFrame - adds r0, r4, #0 - adds r0, #0x5a - ldrb r1, [r0] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _0806A5E6 - bl Random - movs r1, #3 - ands r1, r0 - adds r1, #4 - adds r0, r4, #0 - bl InitializeAnimation -_0806A5E6: - pop {r4, pc} - - thumb_func_start sub_0806A5E8 -sub_0806A5E8: @ 0x0806A5E8 - push {r4, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xc] - cmp r0, #0 - bne _0806A60A - movs r0, #1 - strb r0, [r4, #0xc] - adds r0, r4, #0 - movs r1, #0x10 - bl InitializeAnimation - bl Random - movs r1, #0x3f - ands r0, r1 - adds r0, #0x3c - strb r0, [r4, #0xe] -_0806A60A: - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _0806A628 - bl Random - movs r1, #0x3f - ands r0, r1 - adds r0, #0x78 - strb r0, [r4, #0xe] - movs r0, #0xcc - bl SoundReq -_0806A628: - adds r0, r4, #0 - bl GetNextFrame - pop {r4, pc} - - thumb_func_start sub_0806A630 -sub_0806A630: @ 0x0806A630 - push {r4, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xc] - cmp r0, #0 - bne _0806A646 - movs r0, #1 - strb r0, [r4, #0xc] - adds r0, r4, #0 - movs r1, #0x12 - bl InitializeAnimation -_0806A646: - ldr r0, _0806A670 @ =gActiveScriptInfo - ldr r0, [r0] - movs r1, #0x80 - lsls r1, r1, #1 - ands r0, r1 - cmp r0, #0 - beq _0806A65A - adds r0, r4, #0 - bl GetNextFrame -_0806A65A: - adds r1, r4, #0 - adds r1, #0x5a - ldrb r0, [r1] - cmp r0, #1 - bne _0806A66E - movs r0, #0 - strb r0, [r1] - movs r0, #0x72 - bl SoundReq -_0806A66E: - pop {r4, pc} - .align 2, 0 -_0806A670: .4byte gActiveScriptInfo - - thumb_func_start sub_0806A674 -sub_0806A674: @ 0x0806A674 - 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 @ =gScreenTransition - 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 gScreenTransition -_0806A784: - ldr r0, _0806A7C4 @ =gScreenTransition - 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 gScreenTransition -_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 - - thumb_func_start sub_0806A830 -sub_0806A830: @ 0x0806A830 - push {r4, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xc] - cmp r0, #0 - bne _0806A84E - movs r0, #1 - strb r0, [r4, #0xc] - adds r0, r4, #0 - movs r1, #0x14 - bl InitializeAnimation - adds r0, r4, #0 - movs r1, #2 - bl sub_0805E3A0 -_0806A84E: - ldr r0, _0806A88C @ =gActiveScriptInfo - ldr r0, [r0] - movs r1, #0x80 - lsls r1, r1, #2 - ands r0, r1 - cmp r0, #0 - beq _0806A860 - bl DeleteThisEntity -_0806A860: - adds r0, r4, #0 - bl GetNextFrame - adds r1, r4, #0 - adds r1, #0x5a - ldrb r0, [r1] - cmp r0, #1 - bne _0806A88A - movs r0, #0 - strb r0, [r1] - movs r0, #0x37 - movs r1, #5 - movs r2, #0 - bl CreateNPC - adds r1, r0, #0 - cmp r1, #0 - beq _0806A88A - adds r0, r4, #0 - bl PositionEntityOnTop -_0806A88A: - pop {r4, pc} - .align 2, 0 -_0806A88C: .4byte gActiveScriptInfo - - thumb_func_start sub_0806A890 -sub_0806A890: @ 0x0806A890 - push {r4, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xc] - cmp r0, #0 - bne _0806A8AE - movs r0, #1 - strb r0, [r4, #0xc] - adds r0, r4, #0 - movs r1, #0x15 - bl InitializeAnimation - adds r0, r4, #0 - movs r1, #2 - bl sub_0805E3A0 -_0806A8AE: - adds r0, r4, #0 - bl GetNextFrame - adds r0, r4, #0 - adds r0, #0x5a - ldrb r1, [r0] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _0806A8C6 - bl DeleteThisEntity -_0806A8C6: - pop {r4, pc} - - thumb_func_start sub_0806A8C8 -sub_0806A8C8: @ 0x0806A8C8 - push {r4, r5, lr} - adds r5, r0, #0 - movs r0, #0x60 - bl CheckLocalFlag - cmp r0, #0 - bne _0806A8F0 - movs r0, #0x37 - movs r1, #2 - movs r2, #0 - bl CreateNPC - adds r4, r0, #0 - cmp r4, #0 - beq _0806A8F0 - adds r0, r5, #0 - adds r1, r4, #0 - bl CopyPosition - str r5, [r4, #0x50] -_0806A8F0: - movs r0, #0x37 - movs r1, #3 - movs r2, #0 - bl CreateNPC - adds r4, r0, #0 - cmp r4, #0 - beq _0806A910 - adds r0, r5, #0 - adds r1, r4, #0 - bl CopyPosition - ldrh r0, [r4, #0x32] - adds r0, #2 - strh r0, [r4, #0x32] - str r5, [r4, #0x50] -_0806A910: - pop {r4, r5, pc} - .align 2, 0 - - thumb_func_start sub_0806A914 -sub_0806A914: @ 0x0806A914 - push {r4, r5, lr} - adds r5, r0, #0 - movs r0, #0x37 - movs r1, #1 - movs r2, #0 - bl CreateNPC - adds r4, r0, #0 - cmp r4, #0 - beq _0806A938 - adds r0, r5, #0 - adds r1, r4, #0 - bl CopyPosition - adds r0, r5, #0 - adds r1, r4, #0 - bl ResolveEntityOnTop -_0806A938: - pop {r4, r5, pc} - .align 2, 0 - - thumb_func_start sub_0806A93C -sub_0806A93C: @ 0x0806A93C - push {r4, lr} - adds r4, r0, #0 - bl sub_08078778 - ldr r3, _0806A954 @ =gUnk_0811229C - adds r0, r4, #0 - movs r1, #0 - movs r2, #0 - bl sub_08078850 - pop {r4, pc} - .align 2, 0 -_0806A954: .4byte gUnk_0811229C - - thumb_func_start sub_0806A958 -sub_0806A958: @ 0x0806A958 - push {lr} - ldrb r0, [r0, #0xc] - cmp r0, #5 - beq _0806A966 - ldr r1, _0806A968 @ =gActiveScriptInfo - movs r0, #0 - strb r0, [r1, #6] -_0806A966: - pop {pc} - .align 2, 0 -_0806A968: .4byte gActiveScriptInfo - - thumb_func_start sub_0806A96C -sub_0806A96C: @ 0x0806A96C - push {r4, lr} - adds r2, r0, #0 - movs r3, #0 - str r3, [r1, #0x14] - movs r0, #0x39 - adds r0, r0, r2 - mov ip, r0 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #0 - beq _0806A9A8 - ldrb r0, [r2, #0xc] - cmp r0, #3 - beq _0806A992 - movs r0, #3 - strb r0, [r2, #0xc] - strb r3, [r2, #0xd] - b _0806A9A8 -_0806A992: - ldrb r0, [r2, #0xd] - cmp r0, #1 - bls _0806A9A8 - mov r4, ip - strb r3, [r4] - movs r0, #1 - str r0, [r1, #0x14] - ldr r2, _0806A9AC @ =gActiveScriptInfo - ldrb r1, [r2, #7] - orrs r0, r1 - strb r0, [r2, #7] -_0806A9A8: - pop {r4, pc} - .align 2, 0 -_0806A9AC: .4byte gActiveScriptInfo - - thumb_func_start sub_0806A9B0 -sub_0806A9B0: @ 0x0806A9B0 - push {r4, lr} - adds r4, r0, #0 - movs r1, #0 - movs r0, #2 - strb r0, [r4, #0xc] - strb r1, [r4, #0xd] - bl Random - ldr r2, _0806A9E4 @ =gUnk_081122A0 - movs r1, #7 - ands r1, r0 - adds r1, r1, r2 - ldrb r0, [r1] - strb r0, [r4, #0xe] - adds r1, r4, #0 - adds r1, #0x80 - movs r0, #9 - strh r0, [r1] - adds r0, r4, #0 - movs r1, #9 - bl InitializeAnimation - movs r0, #0x62 - bl SetLocalFlag - pop {r4, pc} - .align 2, 0 -_0806A9E4: .4byte gUnk_081122A0 - - thumb_func_start sub_0806A9E8 -sub_0806A9E8: @ 0x0806A9E8 - push {r4, r5, lr} - adds r5, r0, #0 - movs r0, #0x37 - movs r1, #4 - movs r2, #0 - bl CreateNPC - adds r4, r0, #0 - cmp r4, #0 - beq _0806AA0C - adds r0, r5, #0 - adds r1, r4, #0 - bl CopyPosition - adds r0, r5, #0 - adds r1, r4, #0 - bl sub_0806FAD8 -_0806AA0C: - pop {r4, r5, pc} - .align 2, 0 - - thumb_func_start sub_0806AA10 -sub_0806AA10: @ 0x0806AA10 - push {lr} - bl sub_0806A914 - pop {pc} - - thumb_func_start sub_0806AA18 -sub_0806AA18: @ 0x0806AA18 - push {lr} - adds r2, r0, #0 - adds r0, #0x6a - ldrh r0, [r0] - cmp r0, #0 - beq _0806AA2C - ldr r1, _0806AA28 @ =0x00004408 - b _0806AA3C - .align 2, 0 -_0806AA28: .4byte 0x00004408 -_0806AA2C: - ldr r0, _0806AA48 @ =gScreenTransition - ldr r0, [r0] - movs r1, #1 - ands r0, r1 - ldr r1, _0806AA4C @ =0x0000440D - cmp r0, #0 - bne _0806AA3C - subs r1, #6 -_0806AA3C: - adds r0, r1, #0 - adds r1, r2, #0 - bl TextboxNoOverlap - pop {pc} - .align 2, 0 -_0806AA48: .4byte gScreenTransition -_0806AA4C: .4byte 0x0000440D - - thumb_func_start sub_0806AA50 -sub_0806AA50: @ 0x0806AA50 - 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 TextboxNoOverlap - 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 - - thumb_func_start sub_0806AB74 -sub_0806AB74: @ 0x0806AB74 - push {lr} - adds r2, r0, #0 - ldr r1, _0806AB94 @ =gRoomVars - movs r0, #1 - strb r0, [r1, #3] - movs r1, #0x32 - ldrsh r0, [r2, r1] - ldr r1, _0806AB98 @ =gRoomControls - ldrh r1, [r1, #8] - subs r0, r0, r1 - cmp r0, #0xa7 - bgt _0806AB92 - adds r0, r1, #0 - adds r0, #0xa8 - strh r0, [r2, #0x32] -_0806AB92: - pop {pc} - .align 2, 0 -_0806AB94: .4byte gRoomVars -_0806AB98: .4byte gRoomControls - - thumb_func_start sub_0806AB9C -sub_0806AB9C: @ 0x0806AB9C - push {r4, r5, lr} - sub sp, #4 - adds r4, r0, #0 - adds r5, r1, #0 - movs r0, #0 - str r0, [sp] - movs r0, #7 - movs r1, #0x37 - movs r2, #7 - movs r3, #1 - bl FindEntity - cmp r0, #0 - beq _0806ABBC - bl DeleteEntity -_0806ABBC: - adds r0, r4, #0 - adds r1, r5, #0 - bl sub_0807F950 - add sp, #4 - pop {r4, r5, pc} diff --git a/asm/sittingPerson.s b/asm/sittingPerson.s deleted file mode 100644 index 74e7db0e..00000000 --- a/asm/sittingPerson.s +++ /dev/null @@ -1,412 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - - thumb_func_start SittingPerson -SittingPerson: @ 0x08063740 - push {lr} - ldr r2, _08063754 @ =gUnk_0810CBD8 - ldrb r1, [r0, #0xc] - lsls r1, r1, #2 - adds r1, r1, r2 - ldr r1, [r1] - bl _call_via_r1 - pop {pc} - .align 2, 0 -_08063754: .4byte gUnk_0810CBD8 - - thumb_func_start sub_08063758 -sub_08063758: @ 0x08063758 - push {r4, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xa] - lsls r1, r0, #1 - adds r1, r1, r0 - lsls r1, r1, #2 - ldr r0, _08063794 @ =gUnk_0810CB78 - adds r1, r1, r0 - adds r0, r4, #0 - bl LoadExtraSpriteData - cmp r0, #0 - beq _080637B4 - movs r2, #1 - movs r0, #1 - strb r0, [r4, #0xc] - ldrb r1, [r4, #0xe] - ands r1, r2 - lsls r1, r1, #6 - ldrb r2, [r4, #0x18] - subs r0, #0x42 - ands r0, r2 - orrs r0, r1 - strb r0, [r4, #0x18] - lsls r0, r0, #0x19 - cmp r0, #0 - blt _08063798 - movs r0, #6 - b _0806379A - .align 2, 0 -_08063794: .4byte gUnk_0810CB78 -_08063798: - movs r0, #2 -_0806379A: - strb r0, [r4, #0x14] - ldrb r0, [r4, #0x14] - movs r1, #0 - strb r0, [r4, #0xe] - adds r0, r4, #0 - adds r0, #0x69 - strb r1, [r0] - adds r0, r4, #0 - bl sub_0807DD50 - adds r0, r4, #0 - bl sub_080637B8 -_080637B4: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_080637B8 -sub_080637B8: @ 0x080637B8 - push {r4, r5, lr} - adds r4, r0, #0 - adds r2, r4, #0 - adds r2, #0x39 - movs r1, #0 - ldrsb r1, [r2, r1] - cmp r1, #2 - bne _08063804 - movs r0, #0 - strb r1, [r4, #0xc] - strb r0, [r2] - adds r0, r4, #0 - adds r0, #0x58 - ldrb r0, [r0] - adds r1, r4, #0 - adds r1, #0x69 - strb r0, [r1] - ldr r1, _08063800 @ =gPlayerEntity - adds r0, r4, #0 - bl GetFacingDirection - bl sub_0806F5A4 - adds r1, r0, #0 - ldrb r0, [r4, #0x18] - lsls r0, r0, #0x19 - cmp r0, #0 - bge _080637F2 - adds r1, #4 -_080637F2: - adds r0, r4, #0 - bl InitializeAnimation - adds r0, r4, #0 - bl sub_0806F118 - b _0806382E - .align 2, 0 -_08063800: .4byte gPlayerEntity -_08063804: - adds r0, r4, #0 - movs r1, #0 - bl ExecuteScriptForEntity - adds r0, r4, #0 - bl HandleEntity0x82Actions - adds r5, r4, #0 - adds r5, #0x59 - ldrb r0, [r5] - cmp r0, #0xfe - bne _08063828 - bl Random - movs r1, #0x1f - ands r0, r1 - adds r0, #0x1e - strb r0, [r5] -_08063828: - adds r0, r4, #0 - bl GetNextFrame -_0806382E: - pop {r4, r5, pc} - - thumb_func_start sub_08063830 -sub_08063830: @ 0x08063830 - push {r4, lr} - adds r4, r0, #0 - bl UpdateFuseInteraction - cmp r0, #0 - beq _0806384C - movs r0, #1 - strb r0, [r4, #0xc] - adds r0, r4, #0 - adds r0, #0x69 - ldrb r1, [r0] - adds r0, r4, #0 - bl InitializeAnimation -_0806384C: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_08063850 -sub_08063850: @ 0x08063850 - push {lr} - ldrb r3, [r0, #0x18] - lsls r3, r3, #0x19 - lsrs r3, r3, #0x1f - rsbs r2, r3, #0 - orrs r2, r3 - asrs r2, r2, #0x1f - movs r3, #4 - ands r2, r3 - ldr r1, [r1, #4] - adds r1, r1, r2 - ldrb r2, [r0, #0x14] - lsrs r2, r2, #1 - adds r1, r1, r2 - bl InitializeAnimation - pop {pc} - .align 2, 0 - - thumb_func_start sub_08063874 -sub_08063874: @ 0x08063874 - ldrb r1, [r0, #0xe] - strb r1, [r0, #0x14] - bx lr - .align 2, 0 - - thumb_func_start sub_0806387C -sub_0806387C: @ 0x0806387C - push {r4, r5, r6, lr} - adds r6, r0, #0 - movs r4, #3 - movs r0, #0xda - bl CheckLocalFlag - cmp r0, #0 - bne _08063896 - movs r4, #0 - movs r0, #0xda - bl SetLocalFlag - b _080638D6 -_08063896: - movs r0, #0xd1 - bl CheckLocalFlag - cmp r0, #0 - bne _080638D6 - movs r5, #0 - movs r4, #1 -_080638A4: - ldr r0, _080638F8 @ =gUnk_02002B0E - adds r1, r4, #0 - bl ReadBit - cmp r0, #0 - beq _080638B2 - adds r5, #1 -_080638B2: - adds r4, #1 - cmp r4, #0x82 - ble _080638A4 - movs r4, #1 - cmp r5, #0x81 - ble _080638D6 - movs r4, #2 - movs r0, #0xd1 - bl SetLocalFlag - ldr r0, _080638FC @ =0x00000A17 - movs r1, #1 - bl sub_0807BA8C - ldr r0, _08063900 @ =0x00000A57 - movs r1, #1 - bl sub_0807BA8C -_080638D6: - ldr r0, _08063904 @ =gSave - ldrb r0, [r0, #8] - subs r1, r0, #6 - cmp r1, #0 - bge _080638E2 - movs r1, #0 -_080638E2: - ldr r2, _08063908 @ =gUnk_0810CBE4 - lsls r0, r4, #1 - lsls r1, r1, #3 - adds r0, r0, r1 - adds r0, r0, r2 - ldrh r0, [r0] - adds r1, r6, #0 - bl TextboxNoOverlap - pop {r4, r5, r6, pc} - .align 2, 0 -_080638F8: .4byte gUnk_02002B0E -_080638FC: .4byte 0x00000A17 -_08063900: .4byte 0x00000A57 -_08063904: .4byte gSave -_08063908: .4byte gUnk_0810CBE4 - - thumb_func_start sub_0806390C -sub_0806390C: @ 0x0806390C - push {r4, r5, lr} - adds r4, r0, #0 - movs r5, #1 - movs r0, #0xd9 - bl CheckLocalFlag - cmp r0, #0 - bne _0806392E - movs r5, #0 - movs r0, #0xd9 - bl SetLocalFlag - adds r0, r4, #0 - adds r0, #0x84 - ldr r1, [r0] - movs r0, #1 - str r0, [r1, #0x14] -_0806392E: - ldr r0, _08063940 @ =gUnk_0810CC04 - lsls r1, r5, #1 - adds r1, r1, r0 - ldrh r0, [r1] - adds r1, r4, #0 - bl TextboxNoOverlap - pop {r4, r5, pc} - .align 2, 0 -_08063940: .4byte gUnk_0810CC04 - - thumb_func_start sub_08063944 -sub_08063944: @ 0x08063944 - push {lr} - adds r3, r0, #0 - movs r0, #0 - str r0, [r1, #0x14] - ldr r0, _0806396C @ =gSave - ldrb r0, [r0, #8] - subs r0, #2 - cmp r0, #0 - bge _08063958 - movs r0, #0 -_08063958: - ldrb r1, [r3, #0xb] - lsls r1, r1, #6 - lsls r0, r0, #3 - ldr r2, _08063970 @ =gUnk_0810CC08 - adds r0, r0, r2 - adds r1, r1, r0 - adds r0, r3, #0 - bl ShowNPCDialogue - pop {pc} - .align 2, 0 -_0806396C: .4byte gSave -_08063970: .4byte gUnk_0810CC08 - - thumb_func_start SittingPerson_Head -SittingPerson_Head: @ 0x08063974 - push {r4, r5, lr} - adds r4, r0, #0 - ldrb r5, [r4, #0xa] - lsls r5, r5, #2 - ldr r0, _080639C8 @ =gUnk_0810CBC0 - adds r5, r5, r0 - adds r0, r4, #0 - adds r0, #0x5a - ldrb r0, [r0] - movs r2, #0xf - ands r2, r0 - ldrb r0, [r5] - adds r2, r2, r0 - adds r0, r4, #0 - movs r1, #0 - bl SetExtraSpriteFrame - ldr r2, _080639CC @ =gUnk_0810CD88 - ldrb r1, [r4, #0x1e] - movs r0, #3 - ands r0, r1 - ldrb r1, [r4, #0xa] - lsls r1, r1, #2 - adds r0, r0, r1 - adds r0, r0, r2 - ldrb r2, [r0] - ldrb r0, [r5, #1] - adds r2, r2, r0 - adds r0, r4, #0 - movs r1, #1 - bl SetExtraSpriteFrame - adds r0, r4, #0 - movs r1, #1 - movs r2, #0 - bl SetSpriteSubEntryOffsetData1 - adds r0, r4, #0 - bl sub_0807000C - pop {r4, r5, pc} - .align 2, 0 -_080639C8: .4byte gUnk_0810CBC0 -_080639CC: .4byte gUnk_0810CD88 - - thumb_func_start sub_080639D0 -sub_080639D0: @ 0x080639D0 - 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 SittingPerson_Fusion -SittingPerson_Fusion: @ 0x080639E8 - push {r4, r5, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xc] - cmp r0, #0 - bne _08063A40 - ldrb r0, [r4, #0xa] - lsls r1, r0, #1 - adds r1, r1, r0 - lsls r1, r1, #2 - ldr r0, _08063A3C @ =gUnk_0810CB78 - adds r1, r1, r0 - adds r0, r4, #0 - bl LoadExtraSpriteData - cmp r0, #0 - beq _08063A5C - 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 - movs r1, #0x41 - rsbs r1, r1, #0 - ands r0, r1 - strb r0, [r4, #0x18] - ldrh r0, [r4, #0x32] - subs r0, #4 - strh r0, [r4, #0x32] - adds r0, r4, #0 - movs r1, #2 - bl InitializeAnimation - ldrb r1, [r4, #0xa] - adds r0, r4, #0 - bl sub_08096208 - b _08063A5C - .align 2, 0 -_08063A3C: .4byte gUnk_0810CB78 -_08063A40: - adds r5, r4, #0 - adds r5, #0x59 - ldrb r0, [r5] - cmp r0, #0xfe - bne _08063A56 - bl Random - movs r1, #0x1f - ands r0, r1 - adds r0, #0x1e - strb r0, [r5] -_08063A56: - adds r0, r4, #0 - bl GetNextFrame -_08063A5C: - pop {r4, r5, pc} - .align 2, 0 diff --git a/asm/stockwell.s b/asm/stockwell.s deleted file mode 100644 index 6d91bf82..00000000 --- a/asm/stockwell.s +++ /dev/null @@ -1,662 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - - thumb_func_start Stockwell -Stockwell: @ 0x08065054 - push {r4, lr} - adds r4, r0, #0 - ldr r1, _0806507C @ =gUnk_0810FDA4 - ldrb r0, [r4, #0xc] - lsls r0, r0, #2 - adds r0, r0, r1 - ldr r1, [r0] - adds r0, r4, #0 - bl _call_via_r1 - adds r0, r4, #0 - adds r0, #0x84 - ldr r1, [r0] - adds r0, r4, #0 - bl ExecuteScript - adds r0, r4, #0 - bl sub_0806ED78 - pop {r4, pc} - .align 2, 0 -_0806507C: .4byte gUnk_0810FDA4 - - thumb_func_start sub_08065080 -sub_08065080: @ 0x08065080 - push {r4, lr} - adds r4, r0, #0 - 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] - adds r0, r4, #0 - movs r1, #2 - bl sub_0805E3A0 - adds r0, r4, #0 - movs r1, #4 - bl InitializeAnimation - adds r0, r4, #0 - bl sub_08078778 - ldr r3, _080650C4 @ =gUnk_0810FDA0 - adds r0, r4, #0 - movs r1, #0 - movs r2, #0 - bl sub_08078850 - ldr r1, _080650C8 @ =script_080142B0 - adds r0, r4, #0 - bl StartCutscene - adds r4, #0x84 - str r0, [r4] - pop {r4, pc} - .align 2, 0 -_080650C4: .4byte gUnk_0810FDA0 -_080650C8: .4byte script_080142B0 - - thumb_func_start sub_080650CC -sub_080650CC: @ 0x080650CC - push {r4, r5, r6, r7, lr} - mov r7, r8 - push {r7} - adds r5, r0, #0 - ldr r6, _080650F8 @ =gRoomVars - ldr r0, [r6, #0x68] - movs r1, #1 - ands r0, r1 - cmp r0, #0 - beq _08065100 - movs r1, #0 - movs r0, #4 - strb r0, [r5, #0xc] - strb r1, [r5, #0xd] - adds r0, r5, #0 - adds r0, #0x84 - ldr r0, [r0] - ldr r1, _080650FC @ =script_080143C0 - bl InitScriptExecutionContext - b _080651A6 - .align 2, 0 -_080650F8: .4byte gRoomVars -_080650FC: .4byte script_080143C0 -_08065100: - adds r2, r5, #0 - adds r2, #0x5a - ldrb r1, [r2] - movs r0, #0x20 - ands r0, r1 - lsls r0, r0, #0x18 - lsrs r4, r0, #0x18 - cmp r4, #0 - bne _0806517C - adds r3, r5, #0 - adds r3, #0x39 - movs r0, #0 - ldrsb r0, [r3, r0] - cmp r0, #0 - beq _0806517C - strb r4, [r3] - ldrb r0, [r5, #0xc] - adds r0, #1 - strb r0, [r5, #0xc] - adds r0, r5, #0 - movs r1, #7 - bl InitializeAnimation - ldrb r0, [r6, #6] - cmp r0, #0 - bne _0806513C - ldr r7, _08065138 @ =0x00002C01 - b _0806515E - .align 2, 0 -_08065138: .4byte 0x00002C01 -_0806513C: - ldrb r0, [r6, #6] - bl GetSaleItemConfirmMessageID - adds r7, r0, #0 - ldrb r0, [r6, #6] - bl GetItemPrice - mov r8, r0 - movs r0, #4 - strb r0, [r5, #0xc] - strb r4, [r5, #0xd] - adds r0, r5, #0 - adds r0, #0x84 - ldr r0, [r0] - ldr r1, _08065174 @ =script_08014384 - bl InitScriptExecutionContext -_0806515E: - adds r0, r7, #0 - adds r1, r5, #0 - bl TextboxNoOverlap - ldr r1, _08065178 @ =gTextBox - mov r2, r8 - lsls r0, r2, #0x10 - lsrs r0, r0, #0x10 - str r0, [r1, #0x10] - b _080651A6 - .align 2, 0 -_08065174: .4byte script_08014384 -_08065178: .4byte gTextBox -_0806517C: - ldrb r1, [r2] - movs r0, #0x40 - ands r0, r1 - cmp r0, #0 - beq _080651A0 - ldr r4, _0806519C @ =gUnk_0810FDB8 - bl Random - movs r1, #0xf - ands r1, r0 - adds r1, r1, r4 - ldrb r1, [r1] - adds r0, r5, #0 - bl InitializeAnimation - b _080651A6 - .align 2, 0 -_0806519C: .4byte gUnk_0810FDB8 -_080651A0: - adds r0, r5, #0 - bl GetNextFrame -_080651A6: - pop {r3} - mov r8, r3 - pop {r4, r5, r6, r7, pc} - - thumb_func_start sub_080651AC -sub_080651AC: @ 0x080651AC - push {r4, lr} - adds r4, r0, #0 - bl GetNextFrame - ldr r0, _080651D4 @ =gTextBox - ldrb r0, [r0] - movs r1, #0x7f - ands r1, r0 - cmp r1, #0 - bne _080651D2 - adds r0, r4, #0 - adds r0, #0x39 - strb r1, [r0] - movs r0, #1 - strb r0, [r4, #0xc] - adds r0, r4, #0 - movs r1, #4 - bl InitializeAnimation -_080651D2: - pop {r4, pc} - .align 2, 0 -_080651D4: .4byte gTextBox - - thumb_func_start sub_080651D8 -sub_080651D8: @ 0x080651D8 - push {r4, lr} - adds r4, r0, #0 - bl GetNextFrame - ldr r1, _080651F4 @ =gUnk_0810FDC8 - ldrb r0, [r4, #0xd] - lsls r0, r0, #2 - adds r0, r0, r1 - ldr r1, [r0] - adds r0, r4, #0 - bl _call_via_r1 - pop {r4, pc} - .align 2, 0 -_080651F4: .4byte gUnk_0810FDC8 - - thumb_func_start sub_080651F8 -sub_080651F8: @ 0x080651F8 - push {r4, lr} - adds r4, r0, #0 - adds r0, #0x5a - ldrb r1, [r0] - movs r0, #0x20 - ands r0, r1 - cmp r0, #0 - bne _0806522A - movs r0, #1 - strb r0, [r4, #0xd] - movs r0, #0x3c - strb r0, [r4, #0xe] - adds r0, r4, #0 - movs r1, #1 - bl InitializeAnimation - movs r2, #0x18 - rsbs r2, r2, #0 - adds r0, r4, #0 - movs r1, #8 - bl CreateSpeechBubbleExclamationMark - movs r0, #1 - bl sub_08078A90 -_0806522A: - pop {r4, pc} - - thumb_func_start sub_0806522C -sub_0806522C: @ 0x0806522C - push {lr} - adds r1, r0, #0 - ldrb r0, [r1, #0xe] - subs r0, #1 - strb r0, [r1, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _08065248 - ldrb r0, [r1, #0xd] - adds r0, #1 - strb r0, [r1, #0xd] - ldr r0, _0806524C @ =0x00002C16 - bl TextboxNoOverlap -_08065248: - pop {pc} - .align 2, 0 -_0806524C: .4byte 0x00002C16 - - thumb_func_start sub_08065250 -sub_08065250: @ 0x08065250 - push {r4, lr} - adds r4, r0, #0 - bl sub_08056338 - adds r1, r0, #0 - cmp r1, #0 - beq _08065264 - cmp r1, #1 - beq _0806527E - b _0806528A -_08065264: - ldrb r0, [r4, #0xd] - adds r0, #1 - strb r0, [r4, #0xd] - movs r0, #0x1e - strb r0, [r4, #0xe] - strb r1, [r4, #0xf] - movs r2, #0x18 - rsbs r2, r2, #0 - adds r0, r4, #0 - movs r1, #8 - bl CreateSpeechBubbleExclamationMark - b _0806528A -_0806527E: - movs r0, #0 - movs r1, #7 - strb r1, [r4, #0xd] - strb r0, [r4, #0xe] - movs r0, #2 - strb r0, [r4, #0xf] -_0806528A: - pop {r4, pc} - - thumb_func_start sub_0806528C -sub_0806528C: @ 0x0806528C - push {lr} - adds r1, r0, #0 - ldrb r0, [r1, #0xe] - subs r0, #1 - strb r0, [r1, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _080652A8 - ldrb r0, [r1, #0xd] - adds r0, #1 - strb r0, [r1, #0xd] - ldr r0, _080652AC @ =0x00002C18 - bl TextboxNoOverlap -_080652A8: - pop {pc} - .align 2, 0 -_080652AC: .4byte 0x00002C18 - - thumb_func_start sub_080652B0 -sub_080652B0: @ 0x080652B0 - push {lr} - adds r2, r0, #0 - ldr r0, _080652DC @ =gTextBox - ldrb r1, [r0] - movs r0, #0x7f - ands r0, r1 - cmp r0, #0 - bne _080652DA - ldrb r0, [r2, #0xd] - adds r0, #1 - strb r0, [r2, #0xd] - movs r0, #0xa - strb r0, [r2, #0xe] - ldr r1, _080652E0 @ =gRoomVars - ldrb r0, [r2, #0xf] - str r0, [r1, #0x68] - movs r0, #0x36 - movs r1, #0 - movs r2, #0 - bl CreateItemEntity -_080652DA: - pop {pc} - .align 2, 0 -_080652DC: .4byte gTextBox -_080652E0: .4byte gRoomVars - - thumb_func_start sub_080652E4 -sub_080652E4: @ 0x080652E4 - push {lr} - adds r1, r0, #0 - ldrb r0, [r1, #0xe] - cmp r0, #0 - beq _080652F4 - subs r0, #1 - strb r0, [r1, #0xe] - b _08065308 -_080652F4: - ldr r0, _0806530C @ =gPlayerEntity - ldrb r0, [r0, #0xc] - cmp r0, #8 - beq _08065308 - ldrb r0, [r1, #0xd] - adds r0, #1 - strb r0, [r1, #0xd] - ldr r0, _08065310 @ =0x00002C19 - bl TextboxNoOverlap -_08065308: - pop {pc} - .align 2, 0 -_0806530C: .4byte gPlayerEntity -_08065310: .4byte 0x00002C19 - - thumb_func_start sub_08065314 -sub_08065314: @ 0x08065314 - push {lr} - adds r2, r0, #0 - ldr r0, _08065334 @ =gTextBox - ldrb r1, [r0] - movs r0, #0x7f - ands r0, r1 - cmp r0, #0 - bne _08065332 - ldrb r0, [r2, #0xd] - adds r0, #1 - strb r0, [r2, #0xd] - movs r0, #3 - movs r1, #3 - bl MenuFadeIn -_08065332: - pop {pc} - .align 2, 0 -_08065334: .4byte gTextBox - - thumb_func_start sub_08065338 -sub_08065338: @ 0x08065338 - push {lr} - adds r2, r0, #0 - ldr r0, _08065360 @ =gTextBox - ldrb r0, [r0] - movs r1, #0x7f - ands r1, r0 - cmp r1, #0 - bne _0806535C - movs r0, #1 - strb r0, [r2, #0xc] - strb r1, [r2, #0xd] - ldr r1, _08065364 @ =gRoomVars - ldrb r0, [r2, #0xf] - str r0, [r1, #0x68] - adds r0, r2, #0 - movs r1, #4 - bl InitializeAnimation -_0806535C: - pop {pc} - .align 2, 0 -_08065360: .4byte gTextBox -_08065364: .4byte gRoomVars - - thumb_func_start sub_08065368 -sub_08065368: @ 0x08065368 - push {lr} - bl GetNextFrame - pop {pc} - - thumb_func_start sub_08065370 -sub_08065370: @ 0x08065370 - push {r4, r5, r6, r7, lr} - mov r7, sb - mov r6, r8 - push {r6, r7} - adds r4, r0, #0 - mov r8, r1 - movs r6, #1 - ldr r0, _0806539C @ =gRoomVars - ldrb r5, [r0, #6] - movs r0, #0 - mov sb, r0 - cmp r5, #0x66 - beq _0806541A - cmp r5, #0x66 - bhi _080653AA - cmp r5, #0x61 - beq _08065426 - cmp r5, #0x61 - bhi _080653A0 - cmp r5, #0xd - beq _080653D0 - b _0806543C - .align 2, 0 -_0806539C: .4byte gRoomVars -_080653A0: - cmp r5, #0x64 - beq _08065414 - cmp r5, #0x65 - beq _08065420 - b _0806543C -_080653AA: - cmp r5, #0x6c - blo _0806543C - cmp r5, #0x6d - bls _080653EC - cmp r5, #0x6f - bhi _0806543C - ldr r2, _080653C8 @ =gQuiverSizes - ldr r1, _080653CC @ =gSave - adds r0, r1, #0 - adds r0, #0xaf - ldrb r0, [r0] - adds r0, r0, r2 - adds r1, #0xad - b _080653FA - .align 2, 0 -_080653C8: .4byte gQuiverSizes -_080653CC: .4byte gSave -_080653D0: - movs r0, #0xd - bl GetInventoryValue - cmp r0, #0 - bne _080653E4 - movs r0, #0xe - bl GetInventoryValue - cmp r0, #0 - beq _0806543C -_080653E4: - ldr r0, _080653E8 @ =0x00002C0B - b _080654C2 - .align 2, 0 -_080653E8: .4byte 0x00002C0B -_080653EC: - ldr r2, _08065408 @ =gBombBagSizes - ldr r1, _0806540C @ =gSave - adds r0, r1, #0 - adds r0, #0xae - ldrb r0, [r0] - adds r0, r0, r2 - adds r1, #0xac -_080653FA: - ldrb r0, [r0] - ldrb r1, [r1] - cmp r0, r1 - bhi _0806543C - ldr r0, _08065410 @ =0x00002C0E - b _080654C2 - .align 2, 0 -_08065408: .4byte gBombBagSizes -_0806540C: .4byte gSave -_08065410: .4byte 0x00002C0E -_08065414: - movs r1, #0x55 - mov sb, r1 - b _0806543C -_0806541A: - movs r0, #0x56 - mov sb, r0 - b _0806543C -_08065420: - movs r1, #0xcd - mov sb, r1 - b _0806543C -_08065426: - ldr r0, _08065494 @ =gSave - adds r0, #0xc2 - ldrh r1, [r0] - ldr r0, _08065498 @ =0x000003E6 - cmp r1, r0 - bls _0806543C - ldr r0, _0806549C @ =0x00002C0E - adds r1, r4, #0 - bl TextboxNoOverlap - movs r6, #0 -_0806543C: - cmp r6, #0 - beq _080654C8 - adds r0, r5, #0 - bl GetItemPrice - adds r6, r0, #0 - ldr r7, _08065494 @ =gSave - adds r0, r7, #0 - adds r0, #0xc0 - ldrh r0, [r0] - cmp r6, r0 - bhi _080654C0 - rsbs r0, r6, #0 - bl ModRupees - ldr r4, _080654A0 @ =gRoomVars - ldrb r1, [r4, #7] - adds r0, r5, #0 - movs r2, #2 - bl sub_080A7C18 - movs r0, #0 - strb r0, [r4, #6] - strb r0, [r4, #7] - movs r0, #1 - mov r1, r8 - str r0, [r1, #0x14] - mov r0, sb - cmp r0, #0 - beq _0806547C - bl SetLocalFlag -_0806547C: - ldr r1, [r7, #0x5c] - movs r0, #2 - rsbs r0, r0, #0 - cmp r1, r0 - bhi _0806548A - adds r0, r1, #1 - str r0, [r7, #0x5c] -_0806548A: - ldr r0, [r7, #0x5c] - cmp r0, #9 - bls _080654A8 - ldr r0, _080654A4 @ =0x00002C11 - b _080654B6 - .align 2, 0 -_08065494: .4byte gSave -_08065498: .4byte 0x000003E6 -_0806549C: .4byte 0x00002C0E -_080654A0: .4byte gRoomVars -_080654A4: .4byte 0x00002C11 -_080654A8: - cmp r6, #0x63 - bls _080654B4 - ldr r0, _080654B0 @ =0x00002C10 - b _080654B6 - .align 2, 0 -_080654B0: .4byte 0x00002C10 -_080654B4: - ldr r0, _080654BC @ =0x00002C0F -_080654B6: - mov r1, r8 - str r0, [r1, #4] - b _080654CE - .align 2, 0 -_080654BC: .4byte 0x00002C0F -_080654C0: - ldr r0, _080654D8 @ =0x00002C0D -_080654C2: - adds r1, r4, #0 - bl TextboxNoOverlap -_080654C8: - movs r0, #0 - mov r1, r8 - str r0, [r1, #0x14] -_080654CE: - pop {r3, r4} - mov r8, r3 - mov sb, r4 - pop {r4, r5, r6, r7, pc} - .align 2, 0 -_080654D8: .4byte 0x00002C0D - - thumb_func_start sub_080654DC -sub_080654DC: @ 0x080654DC - push {lr} - movs r2, #0x18 - rsbs r2, r2, #0 - movs r1, #8 - bl CreateSpeechBubbleQuestionMark - pop {pc} - .align 2, 0 - - thumb_func_start sub_080654EC -sub_080654EC: @ 0x080654EC - push {lr} - movs r2, #0x18 - rsbs r2, r2, #0 - movs r1, #8 - bl CreateSpeechBubbleExclamationMark - pop {pc} - .align 2, 0 - - thumb_func_start sub_080654FC -sub_080654FC: @ 0x080654FC - push {lr} - adds r0, #0x5a - ldrb r1, [r0] - movs r0, #0x20 - ands r0, r1 - cmp r0, #0 - beq _08065518 - ldr r1, _08065514 @ =gActiveScriptInfo - movs r0, #0 - strb r0, [r1, #6] - b _08065522 - .align 2, 0 -_08065514: .4byte gActiveScriptInfo -_08065518: - ldr r2, _08065524 @ =gActiveScriptInfo - ldrb r1, [r2, #7] - movs r0, #1 - orrs r0, r1 - strb r0, [r2, #7] -_08065522: - pop {pc} - .align 2, 0 -_08065524: .4byte gActiveScriptInfo - - thumb_func_start sub_08065528 -sub_08065528: @ 0x08065528 - ldr r2, _08065530 @ =gRoomVars - ldr r0, [r1, #4] - str r0, [r2, #0x68] - bx lr - .align 2, 0 -_08065530: .4byte gRoomVars diff --git a/asm/sturgeon.s b/asm/sturgeon.s deleted file mode 100644 index 66a5193b..00000000 --- a/asm/sturgeon.s +++ /dev/null @@ -1,375 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - - thumb_func_start Sturgeon -Sturgeon: @ 0x08064A90 - push {r4, r5, lr} - adds r4, r0, #0 - ldrb r1, [r4, #0x10] - movs r0, #2 - ands r0, r1 - cmp r0, #0 - bne _08064ABC - ldr r0, _08064AB8 @ =gUnk_0810FA44 - ldrb r1, [r4, #0xc] - lsls r1, r1, #2 - adds r1, r1, r0 - ldr r1, [r1] - adds r0, r4, #0 - bl _call_via_r1 - adds r0, r4, #0 - bl sub_0806ED78 - b _08064B42 - .align 2, 0 -_08064AB8: .4byte gUnk_0810FA44 -_08064ABC: - ldrb r1, [r4, #0xc] - adds r5, r1, #0 - cmp r5, #0 - bne _08064AE4 - ldr r1, _08064AE0 @ =gUnk_0810FA38 - adds r0, r4, #0 - bl LoadExtraSpriteData - cmp r0, #0 - beq _08064B42 - movs r0, #1 - strb r0, [r4, #0xc] - strb r5, [r4, #0xe] - adds r0, r4, #0 - bl sub_0807DD50 - b _08064B42 - .align 2, 0 -_08064AE0: .4byte gUnk_0810FA38 -_08064AE4: - movs r0, #0x80 - ands r0, r1 - lsls r0, r0, #0x18 - lsrs r3, r0, #0x18 - cmp r3, #0 - beq _08064B00 - adds r0, r4, #0 - bl UpdateFuseInteraction - cmp r0, #0 - beq _08064B42 - movs r0, #1 - strb r0, [r4, #0xc] - b _08064B42 -_08064B00: - adds r2, r4, #0 - adds r2, #0x39 - movs r0, #0 - ldrsb r0, [r2, r0] - cmp r0, #2 - bne _08064B34 - movs r0, #0xff - orrs r0, r1 - strb r0, [r4, #0xc] - strb r3, [r2] - ldr r1, _08064B30 @ =gPlayerEntity - adds r0, r4, #0 - bl GetFacingDirection - bl sub_0806F5A4 - adds r1, r0, #0 - adds r0, r4, #0 - bl InitAnimationForceUpdate - adds r0, r4, #0 - bl sub_0806F118 - b _08064B42 - .align 2, 0 -_08064B30: .4byte gPlayerEntity -_08064B34: - adds r0, r4, #0 - movs r1, #0 - bl sub_0807DD94 - adds r0, r4, #0 - bl sub_08064C9C -_08064B42: - pop {r4, r5, pc} - - thumb_func_start sub_08064B44 -sub_08064B44: @ 0x08064B44 - push {r4, lr} - adds r4, r0, #0 - ldr r1, _08064B80 @ =gUnk_0810FA38 - bl LoadExtraSpriteData - cmp r0, #0 - beq _08064B7E - adds r0, r4, #0 - movs r1, #2 - bl InitializeAnimation - ldr r1, _08064B84 @ =gUnk_0810FA5A - adds r0, r4, #0 - movs r2, #0 - bl sub_0806EE04 - adds r0, r4, #0 - bl sub_08064CC0 - movs r1, #0 - movs r2, #1 - movs r0, #1 - strb r0, [r4, #0xc] - strb r1, [r4, #0xd] - ldrb r1, [r4, #0x18] - subs r0, #5 - ands r0, r1 - orrs r0, r2 - strb r0, [r4, #0x18] -_08064B7E: - pop {r4, pc} - .align 2, 0 -_08064B80: .4byte gUnk_0810FA38 -_08064B84: .4byte gUnk_0810FA5A - - thumb_func_start sub_08064B88 -sub_08064B88: @ 0x08064B88 - push {r4, r5, lr} - adds r4, r0, #0 - adds r5, r4, #0 - adds r5, #0x39 - movs r0, #0 - ldrsb r0, [r5, r0] - cmp r0, #1 - beq _08064BFA - cmp r0, #1 - bgt _08064BA2 - cmp r0, #0 - beq _08064BA8 - b _08064BFA -_08064BA2: - cmp r0, #2 - beq _08064BCE - b _08064BFA -_08064BA8: - adds r0, r4, #0 - bl sub_0806EE20 - adds r2, r0, #0 - adds r0, r4, #0 - adds r0, #0x3e - ldrb r0, [r0] - strb r0, [r4, #0x14] - cmp r2, #0 - beq _08064BC6 - movs r1, #0x7f - ands r1, r2 - adds r0, r4, #0 - bl InitializeAnimation -_08064BC6: - adds r0, r4, #0 - bl GetNextFrame - b _08064C28 -_08064BCE: - movs r0, #3 - strb r0, [r4, #0xc] - adds r0, r4, #0 - bl GetAnimationState - adds r1, r0, #0 - cmp r1, #0 - bge _08064BE0 - ldrb r1, [r4, #0x14] -_08064BE0: - adds r0, r4, #0 - adds r0, #0x58 - ldrb r0, [r0] - strb r0, [r4, #0xf] - adds r0, r4, #0 - bl InitializeAnimation - movs r0, #0 - strb r0, [r5] - adds r0, r4, #0 - bl sub_0806F118 - b _08064C28 -_08064BFA: - movs r0, #2 - strb r0, [r4, #0xc] - adds r0, r4, #0 - bl GetAnimationState - adds r1, r0, #0 - cmp r1, #0 - bge _08064C0C - ldrb r1, [r4, #0x14] -_08064C0C: - adds r0, r4, #0 - adds r0, #0x58 - ldrb r0, [r0] - strb r0, [r4, #0xf] - adds r0, r4, #0 - bl InitializeAnimation - adds r1, r4, #0 - adds r1, #0x39 - movs r0, #0 - strb r0, [r1] - adds r0, r4, #0 - bl sub_08064CD8 -_08064C28: - pop {r4, r5, pc} - .align 2, 0 - - thumb_func_start sub_08064C2C -sub_08064C2C: @ 0x08064C2C - push {lr} - adds r2, r0, #0 - ldr r0, _08064C4C @ =gTextBox - ldrb r1, [r0] - movs r0, #0x7f - ands r0, r1 - cmp r0, #0 - bne _08064C48 - movs r0, #1 - strb r0, [r2, #0xc] - ldrb r1, [r2, #0xf] - adds r0, r2, #0 - bl InitializeAnimation -_08064C48: - pop {pc} - .align 2, 0 -_08064C4C: .4byte gTextBox - - thumb_func_start sub_08064C50 -sub_08064C50: @ 0x08064C50 - push {r4, lr} - adds r4, r0, #0 - bl UpdateFuseInteraction - cmp r0, #0 - beq _08064C68 - movs r0, #1 - strb r0, [r4, #0xc] - ldrb r1, [r4, #0xf] - adds r0, r4, #0 - bl InitializeAnimation -_08064C68: - pop {r4, pc} - .align 2, 0 - - thumb_func_start Sturgeon_Head -Sturgeon_Head: @ 0x08064C6C - push {r4, lr} - adds r4, r0, #0 - adds r0, #0x5a - ldrb r0, [r0] - movs r2, #0x3f - ands r2, r0 - adds r0, r4, #0 - movs r1, #0 - bl SetExtraSpriteFrame - ldrb r2, [r4, #0x1e] - adds r0, r4, #0 - movs r1, #1 - bl SetExtraSpriteFrame - adds r0, r4, #0 - movs r1, #1 - movs r2, #0 - bl SetSpriteSubEntryOffsetData1 - adds r0, r4, #0 - bl sub_0807000C - pop {r4, pc} - - thumb_func_start sub_08064C9C -sub_08064C9C: @ 0x08064C9C - push {lr} - adds r2, r0, #0 - ldrb r0, [r2, #0xe] - cmp r0, #0 - beq _08064CB8 - ldr r0, _08064CBC @ =gScreenTransition - ldr r0, [r0] - movs r1, #3 - ands r0, r1 - cmp r0, #0 - bne _08064CB8 - adds r0, r2, #0 - bl CreateDust -_08064CB8: - pop {pc} - .align 2, 0 -_08064CBC: .4byte gScreenTransition - - thumb_func_start sub_08064CC0 -sub_08064CC0: @ 0x08064CC0 - 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 sub_08064CD8 -sub_08064CD8: @ 0x08064CD8 - push {r4, r5, lr} - adds r5, r0, #0 - movs r4, #2 - movs r0, #0x46 - bl GetInventoryValue - cmp r0, #0 - bne _08064CF4 - movs r0, #0x73 - bl CheckLocalFlag - rsbs r1, r0, #0 - orrs r1, r0 - lsrs r4, r1, #0x1f -_08064CF4: - ldr r0, _08064D04 @ =gUnk_0810FA54 - lsls r1, r4, #1 - adds r1, r1, r0 - ldrh r0, [r1] - adds r1, r5, #0 - bl TextboxNoOverlap - pop {r4, r5, pc} - .align 2, 0 -_08064D04: .4byte gUnk_0810FA54 - - thumb_func_start sub_08064D08 -sub_08064D08: @ 0x08064D08 - movs r1, #1 - strb r1, [r0, #0xe] - bx lr - .align 2, 0 - - thumb_func_start sub_08064D10 -sub_08064D10: @ 0x08064D10 - movs r1, #0 - strb r1, [r0, #0xe] - bx lr - .align 2, 0 - - thumb_func_start Sturgeon_Fusion -Sturgeon_Fusion: @ 0x08064D18 - push {r4, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xc] - cmp r0, #0 - bne _08064D50 - ldr r1, _08064D4C @ =gUnk_0810FA38 - adds r0, r4, #0 - bl LoadExtraSpriteData - cmp r0, #0 - beq _08064D56 - 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, #6 - bl InitializeAnimation - b _08064D56 - .align 2, 0 -_08064D4C: .4byte gUnk_0810FA38 -_08064D50: - adds r0, r4, #0 - bl GetNextFrame -_08064D56: - pop {r4, pc} diff --git a/asm/sub_08007DE0.s b/asm/sub_08007DE0.s deleted file mode 100644 index 6c4e5b03..00000000 --- a/asm/sub_08007DE0.s +++ /dev/null @@ -1,22 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_08007DE0 -sub_08007DE0: @ 0x08007DE0 - subs r1, #4 -_08007DE2: - adds r1, #4 - ldrh r3, [r1] - cmp r3, #0 - beq _08007DF2 - cmp r0, r3 - bne _08007DE2 - ldrh r3, [r1, #2] - movs r2, #1 -_08007DF2: - bx lr diff --git a/asm/tingleSiblings.s b/asm/tingleSiblings.s deleted file mode 100644 index f90adb6c..00000000 --- a/asm/tingleSiblings.s +++ /dev/null @@ -1,331 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_08064DE4 -sub_08064DE4: @ 0x08064DE4 - push {r4, r5, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xc] - cmp r0, #1 - beq _08064E1A - cmp r0, #1 - bgt _08064DF8 - cmp r0, #0 - beq _08064DFE - b _08064E6A -_08064DF8: - cmp r0, #2 - beq _08064E56 - b _08064E6A -_08064DFE: - 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] - movs r0, #4 - strb r0, [r4, #0x14] - adds r0, r4, #0 - bl sub_0807DD50 - b _08064E6A -_08064E1A: - adds r2, r4, #0 - adds r2, #0x39 - movs r1, #0 - ldrsb r1, [r2, r1] - cmp r1, #2 - bne _08064E4C - movs r0, #0 - strb r1, [r4, #0xc] - strb r0, [r2] - ldr r1, _08064E48 @ =gPlayerEntity - adds r0, r4, #0 - bl GetFacingDirection - bl sub_0806F5A4 - adds r1, r0, #0 - adds r0, r4, #0 - bl InitAnimationForceUpdate - adds r0, r4, #0 - bl sub_0806F118 - b _08064E6A - .align 2, 0 -_08064E48: .4byte gPlayerEntity -_08064E4C: - adds r0, r4, #0 - movs r1, #0 - bl sub_0807DD94 - b _08064E6A -_08064E56: - adds r0, r4, #0 - bl UpdateFuseInteraction - cmp r0, #0 - beq _08064E6A - movs r0, #1 - strb r0, [r4, #0xc] - adds r0, r4, #0 - bl sub_0801E99C -_08064E6A: - adds r2, r4, #0 - adds r2, #0x5a - ldrb r1, [r2] - movs r5, #0xf - ands r5, r1 - adds r0, r5, #0 - eors r0, r1 - strb r0, [r2] - cmp r5, #0 - beq _08064EA0 - movs r1, #0x29 - cmp r5, #3 - bne _08064E86 - movs r1, #0x2a -_08064E86: - adds r0, r4, #0 - movs r2, #0 - bl CreateFx - adds r2, r0, #0 - cmp r2, #0 - beq _08064EA0 - cmp r5, #2 - bne _08064EA0 - ldrb r0, [r2, #0x18] - movs r1, #0x40 - orrs r0, r1 - strb r0, [r2, #0x18] -_08064EA0: - pop {r4, r5, pc} - .align 2, 0 - - thumb_func_start sub_08064EA4 -sub_08064EA4: @ 0x08064EA4 - push {r4, r5, lr} - adds r4, r0, #0 - bl sub_0801E99C - adds r5, r4, #0 - adds r5, #0x68 - strb r0, [r5] - ldrb r0, [r4, #0xa] - cmp r0, #0 - beq _08064EBE - cmp r0, #3 - beq _08064EC2 - b _08064ED8 -_08064EBE: - movs r0, #0x59 - b _08064EC4 -_08064EC2: - movs r0, #0x5a -_08064EC4: - bl CheckKinstoneFused - cmp r0, #0 - beq _08064ED8 - movs r0, #0xc - bl GetInventoryValue - cmp r0, #0 - bne _08064ED8 - strb r0, [r5] -_08064ED8: - adds r0, r4, #0 - adds r0, #0x68 - ldrb r1, [r0] - adds r0, r4, #0 - bl sub_08078784 - pop {r4, r5, pc} - .align 2, 0 - - thumb_func_start sub_08064EE8 -sub_08064EE8: @ 0x08064EE8 - push {r4, r5, lr} - adds r4, r0, #0 - bl UpdateAnimationSingleFrame - adds r2, r4, #0 - adds r2, #0x5a - ldrb r1, [r2] - movs r5, #0xf - ands r5, r1 - adds r0, r5, #0 - eors r0, r1 - strb r0, [r2] - cmp r5, #0 - beq _08064F26 - movs r1, #0x2a - cmp r5, #3 - beq _08064F0C - movs r1, #0x29 -_08064F0C: - adds r0, r4, #0 - movs r2, #0 - bl CreateFx - adds r2, r0, #0 - cmp r2, #0 - beq _08064F26 - cmp r5, #2 - bne _08064F26 - ldrb r0, [r2, #0x18] - movs r1, #0x40 - orrs r0, r1 - strb r0, [r2, #0x18] -_08064F26: - pop {r4, r5, pc} - - thumb_func_start sub_08064F28 -sub_08064F28: @ 0x08064F28 - push {r4, r5, r6, r7, lr} - mov r7, r8 - push {r7} - adds r6, r0, #0 - mov r8, r1 - movs r0, #0 - str r0, [r1, #0x14] - ldr r1, _08064F60 @ =gUnk_0810FC50 - ldrb r0, [r6, #0xa] - adds r0, r0, r1 - ldrb r7, [r0] - adds r0, r7, #0 - bl CheckRoomFlag - cmp r0, #0 - bne _08064F84 - ldr r4, _08064F64 @ =gSave - adds r0, r6, #0 - bl sub_08002632 - ldr r1, _08064F68 @ =0x00000141 - adds r4, r4, r1 - adds r0, r0, r4 - ldrb r4, [r0] - cmp r4, #1 - bls _08064F6C - movs r5, #3 - b _08064F7E - .align 2, 0 -_08064F60: .4byte gUnk_0810FC50 -_08064F64: .4byte gSave -_08064F68: .4byte 0x00000141 -_08064F6C: - movs r0, #0xc - bl GetInventoryValue - movs r5, #2 - cmp r0, #0 - bne _08064F7E - rsbs r0, r4, #0 - orrs r0, r4 - lsrs r5, r0, #0x1f -_08064F7E: - movs r4, #1 - rsbs r4, r4, #0 - b _08064FD2 -_08064F84: - movs r0, #0x3a - bl CheckGlobalFlag - cmp r0, #0 - bne _08064FCE - ldr r0, _08064FB0 @ =gSave - ldr r1, _08064FB4 @ =0x00000117 - adds r0, r0, r1 - ldrb r1, [r0] - movs r0, #0x64 - subs r4, r0, r1 - cmp r4, #0 - bgt _08064FB8 - movs r5, #8 - movs r4, #0 - movs r0, #0x3a - bl SetGlobalFlag - movs r0, #1 - mov r1, r8 - str r0, [r1, #0x14] - b _08064FD2 - .align 2, 0 -_08064FB0: .4byte gSave -_08064FB4: .4byte 0x00000117 -_08064FB8: - movs r5, #7 - cmp r4, #9 - ble _08064FC0 - movs r5, #6 -_08064FC0: - cmp r4, #0x27 - ble _08064FC6 - movs r5, #5 -_08064FC6: - cmp r4, #0x45 - ble _08064FD2 - movs r5, #4 - b _08064FD2 -_08064FCE: - movs r5, #8 - movs r4, #0 -_08064FD2: - ldr r2, _08065008 @ =gUnk_0810FC08 - ldrb r1, [r6, #0xa] - lsls r0, r1, #3 - adds r0, r0, r1 - adds r0, r0, r5 - lsls r0, r0, #1 - adds r0, r0, r2 - ldrh r0, [r0] - adds r1, r6, #0 - bl TextboxNoOverlap - cmp r4, #0 - ble _08064FF4 - ldr r1, _0806500C @ =gTextBox - lsls r0, r4, #0x10 - lsrs r0, r0, #0x10 - str r0, [r1, #0x10] -_08064FF4: - adds r0, r7, #0 - bl CheckRoomFlag - cmp r0, #0 - bne _08065010 - adds r0, r7, #0 - bl SetRoomFlag - b _08065016 - .align 2, 0 -_08065008: .4byte gUnk_0810FC08 -_0806500C: .4byte gTextBox -_08065010: - adds r0, r7, #0 - bl ClearRoomFlag -_08065016: - pop {r3} - mov r8, r3 - pop {r4, r5, r6, r7, pc} - - thumb_func_start TingleSiblings_Fusion -TingleSiblings_Fusion: @ 0x0806501C - push {lr} - adds r2, r0, #0 - ldrb r0, [r2, #0xc] - cmp r0, #0 - bne _0806504A - 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] - movs r1, #6 - ldrb r0, [r2, #0xa] - cmp r0, #0 - bne _08065042 - movs r1, #0xa -_08065042: - adds r0, r2, #0 - bl InitAnimationForceUpdate - b _08065050 -_0806504A: - adds r0, r2, #0 - bl sub_08064EE8 -_08065050: - pop {pc} - .align 2, 0 diff --git a/asm/windTribespeople.s b/asm/windTribespeople.s deleted file mode 100644 index 0c4770e5..00000000 --- a/asm/windTribespeople.s +++ /dev/null @@ -1,199 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_0806C978 -sub_0806C978: @ 0x0806C978 - push {r4, lr} - adds r4, r0, #0 - movs r0, #0x58 - bl CheckGlobalFlag - rsbs r1, r0, #0 - orrs r1, r0 - lsrs r1, r1, #0x1f - ldr r0, _0806C998 @ =gUnk_08113B12 - lsls r1, r1, #1 - adds r1, r1, r0 - ldrh r0, [r1] - adds r1, r4, #0 - bl TextboxNoOverlap - pop {r4, pc} - .align 2, 0 -_0806C998: .4byte gUnk_08113B12 - - thumb_func_start sub_0806C99C -sub_0806C99C: @ 0x0806C99C - push {r4, r5, lr} - adds r5, r0, #0 - movs r0, #0x58 - bl CheckGlobalFlag - rsbs r1, r0, #0 - orrs r1, r0 - asrs r4, r1, #0x1f - movs r0, #2 - ands r4, r0 - movs r0, #0x63 - bl CheckLocalFlag - cmp r0, #0 - beq _0806C9BC - adds r4, #1 -_0806C9BC: - ldr r0, _0806C9CC @ =gUnk_08113B16 - lsls r1, r4, #1 - adds r1, r1, r0 - ldrh r0, [r1] - adds r1, r5, #0 - bl TextboxNoOverlap - pop {r4, r5, pc} - .align 2, 0 -_0806C9CC: .4byte gUnk_08113B16 - - thumb_func_start sub_0806C9D0 -sub_0806C9D0: @ 0x0806C9D0 - push {r4, r5, lr} - adds r5, r0, #0 - movs r4, #0 - movs r0, #0x64 - bl CheckLocalFlag - cmp r0, #0 - bne _0806C9E2 - movs r4, #1 -_0806C9E2: - ldr r0, _0806C9F4 @ =gUnk_08113B1E - lsls r1, r4, #1 - adds r1, r1, r0 - ldrh r0, [r1] - adds r1, r5, #0 - bl TextboxNoOverlap - pop {r4, r5, pc} - .align 2, 0 -_0806C9F4: .4byte gUnk_08113B1E - - thumb_func_start sub_0806C9F8 -sub_0806C9F8: @ 0x0806C9F8 - push {r4, lr} - adds r4, r0, #0 - movs r0, #0x58 - bl CheckGlobalFlag - rsbs r1, r0, #0 - orrs r1, r0 - lsrs r1, r1, #0x1f - ldr r0, _0806CA18 @ =gUnk_08113B22 - lsls r1, r1, #1 - adds r1, r1, r0 - ldrh r0, [r1] - adds r1, r4, #0 - bl TextboxNoOverlap - pop {r4, pc} - .align 2, 0 -_0806CA18: .4byte gUnk_08113B22 - - thumb_func_start sub_0806CA1C -sub_0806CA1C: @ 0x0806CA1C - push {lr} - adds r1, r0, #0 - ldr r0, _0806CA28 @ =0x0000251B - bl TextboxNoOverlap - pop {pc} - .align 2, 0 -_0806CA28: .4byte 0x0000251B - - thumb_func_start sub_0806CA2C -sub_0806CA2C: @ 0x0806CA2C - push {lr} - adds r1, r0, #0 - ldr r0, _0806CA38 @ =0x00002527 - bl TextboxNoOverlap - pop {pc} - .align 2, 0 -_0806CA38: .4byte 0x00002527 - - thumb_func_start sub_0806CA3C -sub_0806CA3C: @ 0x0806CA3C - push {lr} - ldr r1, _0806CA48 @ =gUnk_08113B28 - bl ShowNPCDialogue - pop {pc} - .align 2, 0 -_0806CA48: .4byte gUnk_08113B28 - - thumb_func_start sub_0806CA4C -sub_0806CA4C: @ 0x0806CA4C - push {lr} - ldr r1, _0806CA58 @ =gUnk_08113B30 - bl ShowNPCDialogue - pop {pc} - .align 2, 0 -_0806CA58: .4byte gUnk_08113B30 - - thumb_func_start sub_0806CA5C -sub_0806CA5C: @ 0x0806CA5C - push {r4, lr} - adds r4, r1, #0 - ldr r3, _0806CA8C @ =gUnk_08113B38 - ldrb r1, [r4, #0x18] - adds r2, r1, #1 - strb r2, [r4, #0x18] - lsls r1, r1, #0x18 - lsrs r1, r1, #0x18 - adds r1, r1, r3 - ldrb r1, [r1] - strh r1, [r4, #0x10] - ldrb r0, [r0, #0xb] - cmp r0, #0xa - bne _0806CA7E - movs r0, #0xe8 - bl EnqueueSFX -_0806CA7E: - ldrh r0, [r4, #0x10] - cmp r0, #0 - beq _0806CA8A - ldr r1, _0806CA90 @ =gActiveScriptInfo - movs r0, #0 - strb r0, [r1, #6] -_0806CA8A: - pop {r4, pc} - .align 2, 0 -_0806CA8C: .4byte gUnk_08113B38 -_0806CA90: .4byte gActiveScriptInfo - - thumb_func_start WindTribespeople_Fusion -WindTribespeople_Fusion: @ 0x0806CA94 - push {r4, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xc] - cmp r0, #0 - bne _0806CAD4 - ldrb r1, [r4, #0xa] - lsls r1, r1, #4 - ldr r0, _0806CAD0 @ =gUnk_08113A1C - adds r1, r1, r0 - adds r0, r4, #0 - bl LoadExtraSpriteData - cmp r0, #0 - beq _0806CADA - 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, #6 - bl InitializeAnimation - b _0806CADA - .align 2, 0 -_0806CAD0: .4byte gUnk_08113A1C -_0806CAD4: - adds r0, r4, #0 - bl GetNextFrame -_0806CADA: - pop {r4, pc} diff --git a/include/enemy.h b/include/enemy.h index 655af99a..cdfdfafe 100644 --- a/include/enemy.h +++ b/include/enemy.h @@ -5,7 +5,7 @@ #include "entity.h" typedef enum { - /*0x00*/ OCTOROCK, + /*0x00*/ OCTOROK, /*0x01*/ CHUCHU, /*0x02*/ LEEVER, /*0x03*/ PEAHAT, @@ -62,10 +62,10 @@ typedef enum { /*0x36*/ MAZAAL_HEAD, /*0x37*/ MAZAAL_MACRO, /*0x38*/ MAZAAL_HAND, - /*0x39*/ OCTOROCK_BOSS, + /*0x39*/ OCTOROK_BOSS, /*0x3a*/ FLYING_POT, /*0x3b*/ GOBDO, - /*0x3c*/ OCTOROCK_GOLDEN, + /*0x3c*/ OCTOROK_GOLDEN, /*0x3d*/ TEKTITE_GOLDEN, /*0x3e*/ ROPE_GOLDEN, /*0x3f*/ CLOUD_PIRANHA, @@ -90,7 +90,7 @@ typedef enum { /*0x52*/ VAATI_ARM, /*0x53*/ DUST, /*0x54*/ VAATI_BALL, - /*0x55*/ OCTOROCK2, + /*0x55*/ OCTOROK2, /*0x56*/ SLIME, /*0x57*/ MINI_SLIME, /*0x58*/ FIREBALL_GUY, diff --git a/include/greatFairy.h b/include/greatFairy.h index fd325b6c..39d3e539 100644 --- a/include/greatFairy.h +++ b/include/greatFairy.h @@ -22,7 +22,6 @@ extern void (*const gUnk_081207A4[])(Entity*); extern u32 gUnk_0810C2E4; extern const s16 GreatFairy_RippleOffsets[10]; -extern u32 gUnk_02034350; extern u8 gUnk_0812079C[8]; extern s8 gUnk_081207AC[]; diff --git a/include/save.h b/include/save.h index 40434f8b..65258dee 100644 --- a/include/save.h +++ b/include/save.h @@ -40,7 +40,8 @@ typedef struct { /*0x0D0*/ u8 fillerD0[0x71]; /*0x141*/ u8 unk141[0x34f]; /*0x490*/ u32 unk490; - /*0x494*/ u8 filler494[0x20]; + /*0x494*/ u32 unk494; + /*0x498*/ u8 filler498[0x1C]; } SaveFile; extern SaveFile gSave; diff --git a/include/structures.h b/include/structures.h index 11d66ac8..4b5d3e17 100644 --- a/include/structures.h +++ b/include/structures.h @@ -36,7 +36,8 @@ extern struct_02000010 gUnk_02000010; typedef struct { s32 frameCount; // regular frame count? does anything reset it? - u8 field_0x4[0x4]; + u8 field_0x4[0x2]; + u16 field_0x8; bool8 transitioningOut; u8 transitionType; // transition when changing areas u16 field_0xa; // seems to be a tile type diff --git a/include/utils.h b/include/utils.h index 040eacee..0634700e 100644 --- a/include/utils.h +++ b/include/utils.h @@ -1,3 +1,8 @@ +#ifndef UTILS_H +#define UTILS_H + +#include "global.h" + typedef struct { u16 heldKeys; u16 newKeys; @@ -62,3 +67,5 @@ void zFree(void* ptr); * @param updateHUD bool32 Request refresh of HUD layer (bg 0) */ void DispReset(bool32 updateHUD); + +#endif \ No newline at end of file diff --git a/linker.ld b/linker.ld index 06817df7..a4280231 100644 --- a/linker.ld +++ b/linker.ld @@ -553,7 +553,6 @@ SECTIONS { src/npc/festari.o(.text); src/npc/forestMinish.o(.text); src/npc/postman.o(.text); - asm/postman.o(.text); src/npc/npc5.o(.text); src/npc/townsperson.o(.text); src/npc/kid.o(.text); @@ -562,90 +561,82 @@ SECTIONS { src/npc/marcy.o(.text); src/npc/wheaton.o(.text); src/npc/pita.o(.text); - asm/pita.o(.text); - asm/minishEzlo.o(.text); + src/npc/minishEzlo.o(.text); src/npc/mailbox.o(.text); src/npc/beedle.o(.text); - asm/brocco.o(.text); - asm/sittingPerson.o(.text); - asm/pina.o(.text); + src/npc/brocco.o(.text); + src/npc/sittingPerson.o(.text); + src/npc/pina.o(.text); src/npc/guard.o(.text); - asm/guardWithSpear.o(.text); - asm/castleMaid.o(.text); + src/npc/guardWithSpear.o(.text); + src/npc/castleMaid.o(.text); src/npc/din.o(.text); src/npc/nayru.o(.text); src/npc/farore.o(.text); - asm/sturgeon.o(.text); + src/npc/sturgeon.o(.text); src/npc/tingleSiblings.o(.text); - asm/tingleSiblings.o(.text); - asm/stockwell.o(.text); + src/npc/stockwell.o(.text); src/npc/talon.o(.text); src/npc/malon.o(.text); src/npc/epona.o(.text); src/npc/milkCart.o(.text); - asm/ghostBrothers.o(.text); + src/npc/ghostBrothers.o(.text); src/npc/smith.o(.text); - asm/npc23.o(.text); - asm/kingDaltus.o(.text); - asm/ministerPotho.o(.text); + src/npc/npc23.o(.text); + src/npc/kingDaltus.o(.text); + src/npc/ministerPotho.o(.text); src/npc/npc26.o(.text); asm/vaati.o(.text); src/npc/zelda.o(.text); src/npc/mutoh.o(.text); src/npc/carpenter.o(.text); - asm/castorWildsStatue.o(.text); + src/npc/castorWildsStatue.o(.text); src/npc/cat.o(.text); - asm/mountainMinish.o(.text); + src/npc/mountainMinish.o(.text); src/npc/zeldaFollower.o(.text); - asm/zeldaFollower.o(.text); src/npc/melari.o(.text); src/npc/bladeBrothers.o(.text); src/npc/cow.o(.text); src/npc/goron.o(.text); src/npc/goronMerchant.o(.text); - asm/gorman.o(.text); + src/npc/gorman.o(.text); src/npc/dog.o(.text); src/npc/syrup.o(.text); - asm/syrup.o(.text); src/npc/rem.o(.text); - asm/rem.o(.text); + src/npc/rem.o(.text); src/npc/townMinish.o(.text); src/npc/librari.o(.text); src/npc/percy.o(.text); - asm/percy.o(.text); asm/vaatiReborn.o(.text); src/npc/moblinLady.o(.text); - asm/librarians.o(.text); - asm/farmers.o(.text); + src/npc/librarians.o(.text); + src/npc/farmers.o(.text); src/npc/carlov.o(.text); src/npc/dampe.o(.text); - asm/drLeft.o(.text); + src/npc/drLeft.o(.text); src/npc/kingGustaf.o(.text); src/npc/gina.o(.text); src/npc/simon.o(.text); src/npc/anju.o(.text); - asm/mama.o(.text); + src/npc/mama.o(.text); src/npc/emma.o(.text); src/npc/teachers.o(.text); src/npc/windTribespeople.o(.text); - asm/windTribespeople.o(.text); - asm/gregal.o(.text); + src/npc/gregal.o(.text); src/npc/mayorHagen.o(.text); src/npc/bigGoron.o(.text); - asm/bigGoron.o(.text); src/npc/ezloCap.o(.text); src/npc/npc4E.o(.text); src/npc/npc4F.o(.text); src/npc/clothesRack.o(.text); - asm/clothesRack.o(.text); - asm/picolyteBottles.o(.text); + src/npc/picolyteBottle.o(.text); src/npc/smallTownMinish.o(.text); - asm/hurdyGurdyMan.o(.text); - asm/cucco.o(.text); - asm/cuccoChick.o(.text); + src/npc/hurdyGurdyMan.o(.text); + src/npc/cucco.o(.text); + src/npc/cuccoChick.o(.text); src/npc/fusionMenuNPC.o(.text); - asm/phonograph.o(.text); - asm/npc58.o(.text); + src/npc/phonograph.o(.text); + src/npc/npc58.o(.text); /* END npcs */ asm/code_0806EC20.o(.text); src/createNPC.o(.text); diff --git a/src/enemy.c b/src/enemy.c index 38c96f98..88f48905 100644 --- a/src/enemy.c +++ b/src/enemy.c @@ -4,7 +4,7 @@ // clang-format off void (*const gEnemyFunctions[])(Entity* ent) = { - [OCTOROCK] = Octorok, + [OCTOROK] = Octorok, [CHUCHU] = Chuchu, [LEEVER] = Leever, [PEAHAT] = Peahat, @@ -61,10 +61,10 @@ void (*const gEnemyFunctions[])(Entity* ent) = { [MAZAAL_HEAD] = MazaalHead, [MAZAAL_MACRO] = MazaalMacro, [MAZAAL_HAND] = MazaalHand, - [OCTOROCK_BOSS] = OctorokBoss, + [OCTOROK_BOSS] = OctorokBoss, [FLYING_POT] = FlyingPot, [GOBDO] = Gibdo, - [OCTOROCK_GOLDEN] = OctorokGolden, + [OCTOROK_GOLDEN] = OctorokGolden, [TEKTITE_GOLDEN] = TektiteGolden, [ROPE_GOLDEN] = RopeGolden, [CLOUD_PIRANHA] = CloudPiranha, @@ -89,7 +89,7 @@ void (*const gEnemyFunctions[])(Entity* ent) = { [VAATI_ARM] = VaatiArm, [DUST] = Dust, [VAATI_BALL] = VaatiBall, - [OCTOROCK2] = Octorok, + [OCTOROK2] = Octorok, [SLIME] = Slime, [MINI_SLIME] = MiniSlime, [FIREBALL_GUY] = FireballGuy, diff --git a/src/enemy/gibdo.c b/src/enemy/gibdo.c index 3a318a4d..7f6d04e6 100644 --- a/src/enemy/gibdo.c +++ b/src/enemy/gibdo.c @@ -223,8 +223,8 @@ void sub_080377B0(Entity* this) { this->animationState = this->direction / 8; InitAnimationForceUpdate(this, this->animationState + 4); } -// Nonmatching -NONMATCH("asm/non_matching/gibdo/sub_08037810.inc", u32 sub_08037810(Entity* this)) { + +u32 sub_08037810(Entity* this) { u32 x; u32 y; if (this->field_0x76.HALF.LO == 0) { @@ -236,9 +236,8 @@ NONMATCH("asm/non_matching/gibdo/sub_08037810.inc", u32 sub_08037810(Entity* thi this->actionDelay = 0x18; this->field_0xf = 0x8; this->speed = 0xc0; - y = DirectionRoundUp(GetFacingDirection(this, gUnk_020000B0)); - this->direction = y; - this->animationState = y / 8; + this->direction = DirectionRoundUp(GetFacingDirection(this, gUnk_020000B0)); + this->animationState = this->direction >> 3; this->field_0x74.HWORD = 300; this->field_0x78.HWORD = gUnk_020000B0->x.HALF.HI; this->field_0x7a.HWORD = gUnk_020000B0->y.HALF.HI; @@ -252,7 +251,6 @@ NONMATCH("asm/non_matching/gibdo/sub_08037810.inc", u32 sub_08037810(Entity* thi } return 0; } -END_NONMATCH u32 sub_080378B0(Entity* this) { if (this->field_0x76.HALF.HI == 0) { @@ -333,12 +331,11 @@ void sub_08037A14(Entity* this) { CopyPosition(this, this->field_0x4c); InitAnimationForceUpdate(this, this->animationState + 0xc); } -// Not match // Take Damage maybe? -NONMATCH("asm/non_matching/gibdo/sub_08037A58.inc", void sub_08037A58(Entity* this)) { +void sub_08037A58(Entity* this) { sub_08037ACC(this); this->action = 7; - this->spritePriority.b0 = (this->spritePriority.b0 & 0xf8) | 4; + this->spritePriority.b0 = 4; if (this->iframes == 0) { this->iframes = 0xec; } @@ -351,7 +348,6 @@ NONMATCH("asm/non_matching/gibdo/sub_08037A58.inc", void sub_08037A58(Entity* th this->field_0x76.HALF.LO = 0x3c; InitAnimationForceUpdate(this, this->animationState + 0x10); } -END_NONMATCH void sub_08037ACC(Entity* this) { gPlayerState.flags.all &= 0xFFFFFEFF; diff --git a/src/gba/m4a.c b/src/gba/m4a.c index bcd552d9..38c5c9d0 100644 --- a/src/gba/m4a.c +++ b/src/gba/m4a.c @@ -1,6 +1,5 @@ #include "global.h" #include "gba/m4a.h" - #include "gba/gba.h" // ASCII encoding of 'Smsh' in reverse diff --git a/src/manager/managerC.c b/src/manager/managerC.c index f1965a35..fdc1d480 100644 --- a/src/manager/managerC.c +++ b/src/manager/managerC.c @@ -278,17 +278,22 @@ void sub_08058CFC() { } NONMATCH("asm/non_matching/managerC/sub_08058D34.inc", void sub_08058D34()) { + u16 tmp; LoadPaletteGroup(0x28); MemCopy(gUnk_02017700, gUnk_02017700 + 0x240, 0x20); gUsedPalettes |= 0x200000; LoadGfxGroup(0x16); + tmp = gScreen.lcd.displayControl; gScreen.lcd.displayControl |= 1; gScreen.affine.bg2Control = 0xBC82; - gScreen.bg.bg1xOffset = 0x5E86; + gScreen.bg.bg1Control = 0x5E86; + gScreen.bg.bg1xOffset = 0; gScreen.bg.bg1yOffset = 0; gScreen.bg.bg1Tilemap = 0; gScreen.controls.layerFXControl = 0x3456; + gScreen.controls.alphaBlend = 0x909; + gArea.musicIndex = gArea.pMusicIndex; gUnk_02000070 = 0; if (CheckGlobalFlag(LV1TARU_OPEN)) { diff --git a/src/npc/bigGoron.c b/src/npc/bigGoron.c index c3032d54..1a6ac60a 100644 --- a/src/npc/bigGoron.c +++ b/src/npc/bigGoron.c @@ -6,11 +6,36 @@ #include "random.h" #include "audio.h" #include "functions.h" +#include "script.h" +#include "save.h" +#include "screen.h" +#include "utils.h" +#include "textbox.h" extern void (*gUnk_081140D4[])(Entity*); extern u16 gUnk_081140CC[]; +void sub_0806D520(Entity*, u32); + +void sub_0806D41C(Entity* this); + +extern u8 gMapDataTopSpecial[]; + +void sub_0806D138(u8* param_1, u8* param_2); + +extern void sub_08053500(void); + +extern u32 gUnk_0200B650; +void sub_0806D110(void); +void sub_0806D164(Entity* this); + +extern Hitbox gUnk_080FD180; +Entity* sub_0806D00C(Entity* this); + +void sub_0806D4C0(Entity*, u32); +extern u32 CheckPlayerProximity(u32, u32, u32, u32); + void BigGoron(Entity* this) { gUnk_081140D4[this->type](this); } @@ -54,11 +79,313 @@ void sub_0806CF30(Entity* this) { sub_0806D02C(this); } -void sub_0806D00C(Entity* this) { - Entity* pEVar1; +Entity* sub_0806D00C(Entity* this) { + Entity* entity = FindEntity(7, 76, 7, 0, 0); + if (entity != NULL) { + this->parent = entity; + } + return entity; +} - pEVar1 = FindEntity(7, 76, 7, 0, 0); - if (pEVar1 != NULL) { - this->parent = pEVar1; +ASM_FUNC("asm/non_matching/bigGoron/sub_0806D02C.inc", void sub_0806D02C(Entity* this)) + +void sub_0806D0B0(Entity* this) { + gUnk_0200B650 = 0; + LoadGfxGroup(0x30); + sub_0806D110(); + MemClear(&gMapDataTopSpecial, 0x2000); + if (this != NULL) { + sub_0806D164(this); + } + gScreen.bg.bg1Control = 0x1d47; + gScreen.bg.bg1Tilemap = &gMapDataTopSpecial; + gScreen.bg.bg1Updated = 1; +} + +void sub_0806D0F8(void) { + Entity* entity = FindEntityByID(7, 0x4c, 7); + if (entity != NULL) { + sub_0806D0B0(entity); } } + +void sub_0806D110(void) { + u8* tmp = gMapDataTopSpecial; + u8* tmp2 = tmp + 0x4000; + sub_0806D138(tmp, tmp2); + tmp += 0x800; + tmp2 += 0x40; + sub_0806D138(tmp, tmp2); +} + +ASM_FUNC("asm/non_matching/bigGoron/sub_0806D138.inc", void sub_0806D138(u8* param_1, u8* param_2)) + +ASM_FUNC("asm/non_matching/bigGoron/sub_0806D164.inc", void sub_0806D164(Entity* this)) + +ASM_FUNC("asm/non_matching/bigGoron/sub_0806D1D0.inc", void sub_0806D1D0(Entity* this)) + +void sub_0806D274(Entity* this) { + Entity* npc; + + if (this->action == 0) { + if (sub_0806D00C(this) == NULL) { + DeleteThisEntity(); + } + this->action = 1; + this->spriteOrientation.flipY = 3; + this->spriteRendering.b3 = 3; + this->spritePriority.b0 = 7; + this->frameIndex = 2; + this->actionDelay = 8; + sub_0805E3A0(this, 2); + npc = CreateNPC(0x4c, 3, 0); + if (npc != NULL) { + npc->attachedEntity = this; + } + } + switch (this->subAction) { + case 0: + case 1: + default: + if ((gTextBox.doTextBox & 0x7f) == 0) { + this->frameIndex = 2; + break; + } + if (--this->actionDelay == 0) { + this->actionDelay = 8; + this->frameIndex ^= 1; + } + break; + case 2: + if (--this->actionDelay == 0) { + this->actionDelay = 8; + this->frameIndex ^= 1; + } + break; + case 3: + this->frameIndex = 4; + break; + case 4: + this->frameIndex = 2; + break; + } + this->x.HALF.HI = this->parent->x.HALF.HI; + this->y.HALF.HI = this->parent->y.HALF.HI; +} + +void sub_0806D348(Entity* this) { + if (this->action == 0) { + if (sub_0806D00C(this) == NULL) { + DeleteThisEntity(); + } + this->action = 1; + this->spriteOrientation.flipY = 3; + this->spriteRendering.b3 = 3; + this->spritePriority.b0 = 6; + this->spriteSettings.b.draw = 0; + this->frameIndex = 5; + sub_0805E3A0(this, 2); + } + if (this->attachedEntity->frameIndex == 4) { + this->spriteSettings.b.draw = 3; + } else { + this->spriteSettings.b.draw = 0; + } + this->x.HALF.HI = this->parent->x.HALF.HI; + this->y.HALF.HI = this->parent->y.HALF.HI; +} + +void sub_0806D3C0(Entity* this) { + if (this->action == 0) { + if (sub_0806D00C(this) == NULL) { + DeleteThisEntity(); + } + this->action = 1; + this->hitbox = &gUnk_080FD180; + sub_0805E3A0(this, 2); + sub_0807DD64(this); + } else { + this->x.HALF.HI = this->parent->x.HALF.HI; + ExecuteScriptForEntity(this, NULL); + HandleEntity0x82Actions(this); + } +} + +void sub_0806D40C(Entity* this) { + this->spriteSettings.b.flipX = 1; + sub_0806D41C(this); +} + +void sub_0806D41C(Entity* this) { + if (this->action == 0) { + this->action = 1; + this->frameIndex = 6; + sub_0807DD64(this); + sub_0806D4C0(this, 0); + sub_0806D4C0(this, 1); + sub_0806D4C0(this, 2); + sub_0806D4C0(this, 3); + sub_0805E3A0(this, 2); + } else { + ExecuteScriptForEntity(this, NULL); + HandleEntity0x82Actions(this); + } + if ((gScreenTransition.frameCount & 1) == 0) { + if (CheckPlayerProximity(this->x.HALF.HI - 0x20, this->y.HALF.HI, 0x40, 0x40) != 0) { + if (this->spriteOffsetY > -8) { + this->spriteOffsetY -= 1; + } + } else { + if (this->spriteOffsetY < 0) { + this->spriteOffsetY += 1; + } + } + } +} + +void sub_0806D4C0(Entity* this, u32 param) { + Entity* npc = CreateNPC(0x4c, param + 6, 0); + if (npc != NULL) { + npc->parent = this; + CopyPosition(this, npc); + ResolveEntityOnTop(this, npc); + sub_0805E3A0(npc, 2); + } +} + +void sub_0806D4F0(Entity* this) { + sub_0806D520(this, 0); +} + +void sub_0806D4FC(Entity* this) { + sub_0806D520(this, 1); +} + +void sub_0806D508(Entity* this) { + sub_0806D520(this, 2); +} + +void sub_0806D514(Entity* this) { + sub_0806D520(this, 3); +} + +ASM_FUNC("asm/non_matching/bigGoron/sub_0806D520.inc", void sub_0806D520(Entity* this, u32 param)) + +// TODO itemOnA and itemOnB would need to be in array? +NONMATCH("asm/non_matching/bigGoron/sub_0806D5D4.inc", void sub_0806D5D4(void)) { + u32 itemSlot; + + sub_08053500(); + itemSlot = IsItemEquipped(0xd); + if (itemSlot != 2) { + ((u8*)&gSave.stats.itemOnA)[itemSlot] = 0; + } + sub_0807CAA0(0xd, 0); +} +END_NONMATCH + +void sub_0806D600(Entity* this, ScriptExecutionContext* context) { + context->condition = gSave.unk494 == 0; +} + +void sub_0806D620(void) { + sub_0807CAA0(0xd, 0); + sub_080A7C18(0xe, 0, 0); +} + +void sub_0806D638(Entity* this) { + this->y.HALF.HI -= 0x20; +} + +void sub_0806D640(Entity* this) { + this->y.HALF.HI += 0x20; + this->interactType = 0; +} + +void sub_0806D650(Entity* this) { + this->subAction = 2; +} + +void sub_0806D658(Entity* this, ScriptExecutionContext* context) { + this->subAction = context->intVariable; +} + +void sub_0806D660(Entity* this) { + this->spriteOrientation.flipY = 3; +} + +void sub_0806D66C(Entity* this) { + this->spriteOrientation.flipY = 2; +} + +ASM_FUNC("asm/non_matching/bigGoron/sub_0806D67C.inc", void sub_0806D67C(Entity* this)) + +void sub_0806D6D0(void) { + Entity* entity = FindEntity(7, 0x4c, 7, 2, 0); + if (entity != NULL) { + entity->subAction = 2; + } + entity = FindEntity(7, 0x4c, 7, 1, 0); + if (entity != NULL) { + entity->subAction = 1; + } +} + +void sub_0806D70C(void) { + Entity* entity = FindEntity(7, 0x4c, 7, 2, 0); + if (entity != NULL) { + entity->subAction = 0; + } + entity = FindEntity(7, 0x4c, 7, 1, 0); + if (entity != NULL) { + entity->subAction = 0; + entity->spriteSettings.b.draw = 3; + } +} + +void sub_0806D74C(void) { + Entity* entity = FindEntity(7, 0x4c, 7, 2, 0); + if (entity != NULL) { + entity->subAction = 3; + } + entity = FindEntity(7, 0x4c, 7, 1, 0); + if (entity != NULL) { + entity->subAction = 2; + } +} + +void sub_0806D788(void) { + Entity* entity = FindEntity(7, 0x4c, 7, 2, 0); + if (entity != NULL) { + entity->subAction = 4; + } + entity = FindEntity(7, 0x4c, 7, 1, 0); + if (entity != NULL) { + entity->subAction = 1; + } +} + +void sub_0806D7C4(Entity* this, ScriptExecutionContext* context) { + Entity* entity; + + this->x.HALF.HI = gPlayerEntity.x.HALF.HI; + this->y.HALF.HI = gPlayerEntity.y.HALF.HI - 0x18; + entity = FindEntity(7, 0x4c, 7, 2, 0); + if (entity != NULL) { + sub_0807DEDC(this, context, entity->x.HALF.HI, entity->y.HALF.HI); + } +} + +void sub_0806D804(Entity* this, ScriptExecutionContext* context) { + Entity* entity = FindEntity(7, 0x4c, 7, 2, 0); + if (entity != NULL) { + this->x.HALF.HI = entity->x.HALF.HI; + this->y.HALF.HI = entity->y.HALF.HI - 0x10; + this->spritePriority.b1 = 0; + } + sub_0807DEDC(this, context, gPlayerEntity.x.HALF.HI, gPlayerEntity.y.HALF.HI - 0x10); +} + +void sub_0806D858(Entity* this) { + this->spritePriority.b1 = 1; +} diff --git a/src/npc/brocco.c b/src/npc/brocco.c new file mode 100644 index 00000000..46ec7aa5 --- /dev/null +++ b/src/npc/brocco.c @@ -0,0 +1,93 @@ +#include "entity.h" +#include "functions.h" +#include "textbox.h" +#include "save.h" +#include "npc.h" +#include "script.h" + +void sub_08063544(Entity*); +void sub_0806362C(Entity*); + +extern void (*gUnk_0810CAA0[])(Entity*); + +extern Dialog gUnk_0810CAAC[]; + +void Brocco(Entity* this) { + if ((this->flags & 2) != 0) { + sub_0806362C(this); + } else { + sub_08063544(this); + } +} + +void sub_08063544(Entity* this) { + gUnk_0810CAA0[this->action](this); +} + +void sub_0806355C(Entity* this) { + this->action = this->action + 1; + this->spriteSettings.b.draw = 1; + InitAnimationForceUpdate(this, 4); + sub_08078778(this); +} + +ASM_FUNC("asm/non_matching/brocco/sub_08063584.inc", void sub_08063584(Entity* this)) + +void sub_08063608(Entity* this) { + u8 tmp = gTextBox.doTextBox & 0x7f; + if (tmp == 0) { + this->action = 1; + this->field_0xf = tmp; + InitAnimationForceUpdate(this, 4); + } +} + +void sub_0806362C(Entity* this) { + switch (this->action) { + case 0: + this->action = 1; + this->spriteSettings.b.draw = 1; + this->field_0x68.HALF.HI = 0; + sub_0807DD64(this); + case 1: + if (this->interactType == 2) { + this->action = 2; + this->interactType = 0; + this->field_0x68.HALF.HI = this->animIndex; + InitAnimationForceUpdate(this, sub_0806F5A4(GetFacingDirection(this, &gPlayerEntity)) + 4); + sub_0806F118(this); + } else { + ExecuteScriptForEntity(this, NULL); + HandleEntity0x82Actions(this); + UpdateAnimationSingleFrame(this); + } + break; + case 2: + if (UpdateFuseInteraction(this) == 0) { + return; + } + this->action = 1; + InitAnimationForceUpdate(this, this->field_0x68.HALF.HI); + break; + } +} + +void sub_080636D8(Entity* this) { + ShowNPCDialogue(this, &gUnk_0810CAAC[gSave.unk8]); +} + +void sub_080636F4(Entity* this) { + this->field_0x68.HALF.LO = sub_0801E99C(this); + sub_08078784(this, this->field_0x68.HALF.LO); +} + +void Brocco_Fusion(Entity* this) { + if (this->action == 0) { + this->action += 1; + this->spriteSettings.b.draw = 1; + this->y.HALF.HI -= 4; + InitAnimationForceUpdate(this, 2); + } else { + UpdateAnimationSingleFrame(this); + } +} diff --git a/src/npc/castleMaid.c b/src/npc/castleMaid.c new file mode 100644 index 00000000..606c1974 --- /dev/null +++ b/src/npc/castleMaid.c @@ -0,0 +1,114 @@ +#include "entity.h" +#include "script.h" +#include "save.h" +#include "functions.h" +#include "flags.h" +#include "textbox.h" + +extern Dialog gUnk_0810F894[]; + +void sub_08064570(Entity* this); + +extern u16 gUnk_0810F88C[]; + +extern SpriteLoadData gUnk_0810F874[]; +extern u32 _call_via_r0(u32*); + +void Maid(Entity* this) { + if ((this->flags & 2) != 0) { + sub_08064570(this); + } else { + DeleteThisEntity(); + } +} + +void Maid_Head(Entity* this) { + u32 uVar2; + u32 uVar3; + + uVar2 = this->frames.all & 0x7f; + uVar3 = this->frameIndex; + if (this->id == 0x16) { + if ((this->frames.all & 0x7f) != 0) { + uVar2 += 10; + } + } else { + if ((this->frames.all & 0x7f) != 0) { + uVar2 += 0x1a; + } + uVar3 += 0x10; + } + SetExtraSpriteFrame(this, 0, uVar2 - 1); + SetExtraSpriteFrame(this, 1, uVar3); + SetSpriteSubEntryOffsetData1(this, 1, 0); + sub_0807000C(this); +} + +NONMATCH("asm/non_matching/castleMaid/sub_08064570.inc", void sub_08064570(Entity* this)) { + u8 bVar1; + u32 tmp; + + switch (this->action) { + case 0: + // (&gUnk_0810F874[((s32)-(this->id ^ 0x16) >> 0x1f) * -0xc])) + // TODO fix this array access + tmp = -(this->id ^ 0x16); + if (LoadExtraSpriteData(this, &gUnk_0810F874[(BOOLCAST(tmp)) * 2 + tmp]) == 0) { + return; + } + this->action += 1; + this->actionDelay = 0; + tmp = sub_0805ACC0(this); + if (tmp == 0) { + this->field_0x6c.HWORD = this->x.HALF.HI; + this->field_0x6e.HWORD = this->y.HALF.HI; + } else { + this->field_0x6c.HWORD = tmp >> 0x10; + this->field_0x6e.HWORD = tmp; + } + *(u32*)&this->field_0x68 = 0; + sub_0807DD50(this); + case 1: + sub_0807DD94(this, NULL); + if (this->interactType != 0) { + this->action += 1; + this->interactType = 0; + InitializeAnimation(this, sub_0806F5A4(GetFacingDirection(this, &gPlayerEntity))); + if (*(void**)&this->field_0x68 != NULL) { + _call_via_r0(*(void**)&this->field_0x68); + } + } + break; + case 2: + if ((gTextBox.doTextBox & 0x7f) != 0) { + return; + } + this->action = 1; + break; + } +} +END_NONMATCH + +void sub_08064644(Entity* this, ScriptExecutionContext* context) { + *(u32*)&this->field_0x68 = context->intVariable; +} + +void sub_0806464C(Entity* this) { + s32 tmp; + if (CheckGlobalFlag(0x15) != 0) { + tmp = 2; + } else if (CheckLocalFlag(0xa0) == 0) { + tmp = 0; + SetLocalFlag(0xa0); + } else { + tmp = 1; + } + TextboxNoOverlap(gUnk_0810F88C[tmp], this); +} + +void sub_08064688(Entity* this) { + ShowNPCDialogue(this, &gUnk_0810F894[gSave.unk8]); +} + +ASM_FUNC("asm/non_matching/castleMaid/sub_080646A4.inc", + void sub_080646A4(Entity* this, ScriptExecutionContext* context)) diff --git a/src/npc/castorWildsStatue.c b/src/npc/castorWildsStatue.c new file mode 100644 index 00000000..4ce8bb80 --- /dev/null +++ b/src/npc/castorWildsStatue.c @@ -0,0 +1,128 @@ +#include "entity.h" +#include "script.h" +#include "functions.h" +#include "flags.h" + +extern Hitbox gUnk_08110E94; + +extern void (*gUnk_08110E4C[])(Entity*); +extern void (*gUnk_08110E5C[])(Entity*); + +extern s8 gUnk_08110E64[]; + +extern u32 gUnk_08110E68[]; + +void CastorWildsStatue(Entity* this) { + if ((this->flags & 2) != 0) { + gUnk_08110E5C[this->action](this); + } else { + gUnk_08110E4C[this->action](this); + sub_0806ED78(this); + } +} + +void sub_080673C0(Entity* this) { + if (gScreenTransition.field_0x24[8] != 0) { + this->action = 3; + } else { + this->action = 1; + } + this->frameIndex = this->type & 1; + if ((this->type & 1) == 0) { + this->hitbox = &gUnk_08110E94; + } +} + +void sub_080673F4(Entity* this) { + if (this->interactType != 0) { + this->action = 2; + this->interactType = 0; + } +} + +void sub_08067410(Entity* this) { + this->action = 1; +} + +void sub_08067418(Entity* this) { + this->action = 1; + this->field_0x74.HWORD = COORD_TO_TILE(this); + if (this->type == 0) { + this->hitbox = &gUnk_08110E94; + SetTile(0x4022, this->field_0x74.HWORD - 1, this->collisionLayer); + SetTile(0x4022, this->field_0x74.HWORD, this->collisionLayer); + SetTile(0x4022, this->field_0x74.HWORD + 0x3f, this->collisionLayer); + SetTile(0x4022, this->field_0x74.HWORD + 0x40, this->collisionLayer); + } else { + this->collisionLayer = 3; + this->spriteOrientation.flipY = 1; + this->spriteRendering.b3 = 1; + this->spritePriority.b0 = 2; + if (CheckLocalFlag(0x1d) == 0) { + SetTile(0x4022, 0xe81, 1); + SetTile(0x4022, 0xe82, 1); + SetTile(0x4022, 0xe83, 1); + SetTile(0x4022, 0xec3, 1); + } + } + sub_0807DD50(this); +} + +void sub_08067514(Entity* this) { + sub_0807DD94(this, NULL); + if (this->type == 0) { + sub_0806ED78(this); + } +} + +void sub_0806752C(Entity* this) { + sub_0806FD3C(this); +} + +void sub_08067534(Entity* this) { + Entity* entity; + s32 i; + for (i = 0; i < 2; ++i) { + entity = CreateFx(this, 2, 0); + if (entity != NULL) { + entity->x.HALF.HI += gUnk_08110E64[i]; + entity->y.HALF.HI += 0x1c; + } + } + EnqueueSFX(0x14c); + sub_08080964(0x28, 4); +} + +void sub_0806757C(Entity* this) { + if (this->subAction != 0) { + if (this->subAction >= 3) { + sub_0807BA8C(0xe81, 1); + sub_0807BA8C(0xe82, 1); + sub_0807BA8C(0xe83, 1); + sub_0807BA8C(0xec3, 1); + } else { + LoadFixedGFX(this, gUnk_08110E68[this->subAction]); + } + } +} + +ASM_FUNC("asm/non_matching/castorWildsStatue/sub_080675D4.inc", void sub_080675D4(Entity* this)) + +void sub_080676D8(Entity* this) { + this->subAction += 1; +} + +ASM_FUNC("asm/non_matching/castorWildsStatue/sub_080676E0.inc", + void sub_080676E0(Entity* this, ScriptExecutionContext* context)) + +void CastorWildsStatue_Fusion(Entity* this) { + if (this->action == 0) { + this->action += 1; + this->spriteSettings.b.draw = 1; + this->y.HALF.HI -= 0x18; + InitializeAnimation(this, 1); + sub_0801D2B4(this, 0x17b); + } else { + GetNextFrame(this); + } +} diff --git a/src/npc/clothesRack.c b/src/npc/clothesRack.c index 9dd18b37..c103f5f3 100644 --- a/src/npc/clothesRack.c +++ b/src/npc/clothesRack.c @@ -6,3 +6,9 @@ extern void (*gUnk_0811423C[])(Entity*); void ClothesRack(Entity* this) { gUnk_0811423C[this->action](this); } + +ASM_FUNC("asm/non_matching/clothesRack/sub_0806DD90.inc", void sub_0806DD90(Entity* this)) + +void sub_0806DEC8(Entity* this) { + GetNextFrame(this); +} diff --git a/src/npc/cucco.c b/src/npc/cucco.c new file mode 100644 index 00000000..abfe0904 --- /dev/null +++ b/src/npc/cucco.c @@ -0,0 +1,87 @@ +#include "entity.h" +#include "functions.h" +#include "npc.h" +#include "audio.h" +#include "random.h" + +extern void (*const gUnk_081145B4[])(Entity*); + +void sub_0806E4EC(Entity*); + +void sub_0806E6A8(Entity*); + +extern u16 gUnk_081145C8[]; +void sub_0806E65C(Entity* this); + +void Cucco(Entity* this) { + gUnk_081145B4[this->action](this); +} + +void sub_0806E4B8(Entity* this) { + this->action += 1; + this->field_0x68.HALF.LO = sub_0801E99C(this); + sub_080787A8(this, this->field_0x68.HALF.LO); + sub_0805E3A0(this, 2); + this->subAction = 0; + sub_0806E4EC(this); +} + +void sub_0806E4EC(Entity* this) { + if (this->subAction == 0) { + this->subAction += 1; + this->actionDelay = (Random() & 0x1f) + 0x3c; + InitAnimationForceUpdate(this, 0); + } + if (--this->actionDelay == 0) { + if ((Random() & 1) != 0) { + this->action = 3; + } else { + this->action = 2; + } + this->subAction = 0; + if ((Random() & 1) != 0) { + EnqueueSFX(gUnk_081145C8[Random() & 3]); + } + } + sub_0806E65C(this); + UpdateAnimationSingleFrame(this); +} + +ASM_FUNC("asm/non_matching/cucco/sub_0806E564.inc", void sub_0806E564(Entity* this)) + +ASM_FUNC("asm/non_matching/cucco/sub_0806E5E4.inc", void sub_0806E5E4(Entity* this)) + +void sub_0806E648(Entity* this) { + if (UpdateFuseInteraction(this) != 0) { + this->action = 1; + } +} + +void sub_0806E65C(Entity* this) { + if (this->interactType != 0) { + if ((gPlayerState.flags.all & 0x80) != 0) { + if (this->interactType == 2) { + this->action = 4; + sub_0806F118(this); + } else { + sub_0806E6A8(this); + } + } else { + sub_080791D0(); + } + SoundReq(SFX_VO_CUCCO_CALL); + this->interactType = 0; + } +} + +ASM_FUNC("asm/non_matching/cucco/sub_0806E6A8.inc", void sub_0806E6A8(Entity* this)) + +void Cucco_Fusion(Entity* this) { + if (this->action == 0) { + this->action += 1; + this->spriteSettings.b.draw = 1; + InitAnimationForceUpdate(this, 1); + } else { + UpdateAnimationSingleFrame(this); + } +} diff --git a/src/npc/cuccoChick.c b/src/npc/cuccoChick.c new file mode 100644 index 00000000..a1963b41 --- /dev/null +++ b/src/npc/cuccoChick.c @@ -0,0 +1,85 @@ +#include "entity.h" +#include "textbox.h" +#include "npc.h" +#include "functions.h" +#include "random.h" +#include "audio.h" + +extern void (*const gUnk_081145D4[])(Entity*); + +void sub_0806E764(Entity*); + +void sub_0806E838(Entity* this); + +void sub_0806E884(Entity* this); + +void CuccoChick(Entity* this) { + gUnk_081145D4[this->action](this); + sub_0806ED78(this); +} + +void sub_0806E730(Entity* this) { + this->action += 1; + this->field_0x68.HALF.LO = sub_0801E99C(this); + sub_080787A8(this, this->field_0x68.HALF.LO); + sub_0805E3A0(this, 2); + this->subAction = 0; + sub_0806E764(this); +} + +void sub_0806E764(Entity* this) { + if (this->subAction == 0) { + this->subAction += 1; + this->actionDelay = (Random() & 0x1f) + 0x1e; + this->frameIndex = 0; + } + if (--this->actionDelay == 0) { + this->action = 2; + this->subAction = 0; + if ((Random() & 1) != 0) { + EnqueueSFX(0xd6); + } + } + sub_0806E838(this); +} + +ASM_FUNC("asm/non_matching/cuccoChick/sub_0806E7B0.inc", void sub_0806E7B0(Entity* this)) + +void sub_0806E824(Entity* this) { + if (UpdateFuseInteraction(this) != 0) { + this->action = 1; + } +} + +void sub_0806E838(Entity* this) { + if (this->interactType != 0) { + if ((gPlayerState.flags.all & 0x80) != 0) { + if (this->interactType == 2) { + this->action = 3; + sub_0806F118(this); + } else { + sub_0806E884(this); + } + } else { + sub_080791D0(); + } + SoundReq(SFX_VO_CHEEP); + this->interactType = 0; + } +} + +void sub_0806E884(Entity* this) { + TextboxNoOverlap(0xdb6, this); +} + +void CuccoChick_Fusion(Entity* this) { + if (this->action == 0) { + this->action += 1; + this->spriteSettings.b.draw = 1; + this->frameIndex = 1; + } else { + if (sub_08003FC4(this, 0x3000) == 0) { + this->field_0x20 = 0x10000; + } + } +} diff --git a/src/npc/drLeft.c b/src/npc/drLeft.c new file mode 100644 index 00000000..65863d72 --- /dev/null +++ b/src/npc/drLeft.c @@ -0,0 +1,85 @@ +#include "entity.h" +#include "script.h" +#include "random.h" +#include "functions.h" +#include "save.h" +#include "textbox.h" +#include "flags.h" + +extern void sub_08078850(Entity*, u32, u8, u32*); +extern u32 gUnk_081133B4; + +void sub_0806BFD8(Entity* this); + +extern u16 gUnk_081133A4[]; + +void DrLeft(Entity* this) { + if (this->type == 0) { + if (this->action == 0) { + this->action += 1; + sub_0805E3A0(this, 2); + sub_0807DD50(this); + } + ExecuteScriptForEntity(this, NULL); + HandleEntity0x82Actions(this); + GetNextFrame(this); + sub_0806BFD8(this); + } else { + if (this->action == 0) { + this->action += 1; + this->frameIndex = 0; + sub_0806FAD8(this, this); + } + } +} + +void sub_0806BFD8(Entity* this) { + switch (this->frameSpriteSettings & 3) { + case 1: + InitializeAnimation(this, (Random() & 3) + 0xc); + break; + case 2: + InitializeAnimation(this, 0); + break; + } +} + +void sub_0806C00C(Entity* this, ScriptExecutionContext* context) { + if ((this->frames.all & 0x80) != 0) { + context->condition = 1; + } else { + context->condition = 0; + } +} + +void sub_0806C028(Entity* this, ScriptExecutionContext* context) { + InitializeAnimation(this, context->intVariable + this->animationState / 2); +} + +void sub_0806C038(Entity* this) { + s32 index; + + index = gSave.unk8 - 5; + if (index != 0) { + index = 0; + } + if (GetInventoryValue(0x46) == 0) { + if (GetInventoryValue(0x3a) == 0) { + index = 6; + if (CheckLocalFlag(0xaf) == 0) { + index = 5; + SetLocalFlag(0xaf); + } + } else { + index = 7; + if (GetInventoryValue(0x3a) > 1) { + index = 0; + } + } + } + TextboxNoOverlap(gUnk_081133A4[index], this); +} + +void sub_0806C09C(Entity* this) { + sub_08078850(this, 1, 0, &gUnk_081133B4); +} diff --git a/src/npc/farmers.c b/src/npc/farmers.c new file mode 100644 index 00000000..61f1be97 --- /dev/null +++ b/src/npc/farmers.c @@ -0,0 +1,58 @@ +#include "entity.h" +#include "script.h" +#include "functions.h" + +extern Dialog gUnk_08113158[]; + +extern void sub_0806F188(Entity*); + +extern SpriteLoadData gUnk_08113140[]; +void sub_0806BC58(Entity* this); + +ASM_FUNC("asm/non_matching/farmers/Farmers.inc", void Farmers(Entity* this)) + +void sub_0806BC58(Entity* this) { + sub_0805E3A0(this, 2); +} + +void Farmers_Head(Entity* this) { + SetExtraSpriteFrame(this, 0, this->frames.all & 0x7f); + SetExtraSpriteFrame(this, 1, this->frameIndex); + SetSpriteSubEntryOffsetData1(this, 1, 0); + sub_0807000C(this); +} + +ASM_FUNC("asm/non_matching/farmers/sub_0806BC94.inc", void sub_0806BC94(Entity* this, ScriptExecutionContext* context)) + +void sub_0806BCB8(Entity* this) { + this->animationState = this->actionDelay; +} + +void sub_0806BCC0(Entity* this) { + if (this->type == 0) { + sub_0806F188(this); + } +} + +void sub_0806BCD4(Entity* this) { + sub_08078784(this, sub_0801E99C(this)); +} + +void sub_0806BCE8(Entity* this) { + ShowNPCDialogue(this, &gUnk_08113158[this->type]); +} + +void Farmers_Fusion(Entity* this) { + + if (this->action == 0) { + if (LoadExtraSpriteData(this, &gUnk_08113140[this->type * 3]) != 0) { + this->action = this->action + 1; + this->spriteSettings.b.draw = 1; + this->spriteSettings.b.flipX = 0; + sub_0806BC58(this); + InitAnimationForceUpdate(this, 3); + } + } else { + UpdateAnimationSingleFrame(this); + } +} diff --git a/src/npc/ghostBrothers.c b/src/npc/ghostBrothers.c new file mode 100644 index 00000000..31bedabb --- /dev/null +++ b/src/npc/ghostBrothers.c @@ -0,0 +1,143 @@ +#include "entity.h" +#include "functions.h" +#include "save.h" +#include "screen.h" +#include "textbox.h" +#include "npc.h" +#include "script.h" + +extern void (*const gUnk_0811017C[])(Entity*); + +extern void (*const gUnk_08110274[])(Entity*); + +extern Dialog gUnk_08110280[]; + +extern u32 gUnk_0811022E; + +extern u32 gUnk_0811033C[]; + +extern u32 gUnk_08110188; + +ASM_FUNC("asm/non_matching/ghostBrothers/GhostBrothers.inc", void GhostBrothers(Entity* this)) + +void sub_08065BF4(Entity* this) { + gUnk_0811017C[this->action](this); +} + +NONMATCH("asm/non_matching/ghostBrothers/sub_08065C0C.inc", void sub_08065C0C(Entity* this)) { + u8 bVar1; + u32 uVar2; + u16* puVar3; + + switch (this->action) { + case 0: + this->action = 1; + this->spriteSettings.b.draw = 1; + sub_0807DD50(this); + break; + case 1: + if (this->interactType == 2) { + this->action = 2; + this->interactType = 0; + InitAnimationForceUpdate(this, sub_0806F5A4(GetFacingDirection(this, &gPlayerEntity))); + sub_0806F118(this); + } else { + sub_0807DD94(this, NULL); + } + break; + case 2: + if (UpdateFuseInteraction(this) == 0) { + return; + } + + this->action = 1; + break; + case 3: + if (--this->actionDelay != 0) { + return; + } + // TODO this is still wrong! + puVar3 = *(u16**)&this->field_0x6c.HWORD; + if (*puVar3 != 0xffff) { + gScreen.controls.alphaBlend = *puVar3; + this->actionDelay = (u8)puVar3[1]; + *(u16**)&this->field_0x6c = puVar3 + 2; + return; + } + + this->spriteSettings.b.draw = 0; + + this->action = 1; + break; + } +} +END_NONMATCH + +void sub_08065CCC(Entity* this) { + this->action = 3; + this->actionDelay = 0x1e; + this->spriteRendering.alphaBlend = 1; + *(u32**)&this->field_0x6c = &gUnk_0811022E; + gScreen.controls.layerFXControl = 0x3f40; + gScreen.controls.alphaBlend = 0x10; +} + +void sub_08065D00(Entity* this) { + this->field_0x68.HALF.LO = sub_0801E99C(this); + sub_08078784(this, this->field_0x68.HALF.LO); +} + +void sub_08065D18(Entity* this) { + this->action = 1; + this->actionDelay = 0x1e; + this->field_0xf = 0; + this->spriteSettings.b.draw = 1; + this->spriteRendering.alphaBlend = 1; + *(u32**)&this->field_0x6c = &gUnk_08110188; + sub_0805E3A0(this, 2); + InitAnimationForceUpdate(this, 2); + gScreen.controls.layerFXControl = 0x3f40; + gScreen.controls.alphaBlend = 0x1000; +} + +ASM_FUNC("asm/non_matching/ghostBrothers/sub_08065D74.inc", void sub_08065D74(Entity* this)) + +ASM_FUNC("asm/non_matching/ghostBrothers/sub_08065DB8.inc", void sub_08065DB8(Entity* this)) + +void sub_08065EBC(Entity* this) { + gUnk_08110274[this->action](this); + sub_0806ED78(this); +} + +ASM_FUNC("asm/non_matching/ghostBrothers/sub_08065EDC.inc", void sub_08065EDC(Entity* this)) + +void sub_08065F20(Entity* this) { + UpdateAnimationSingleFrame(this); + if (this->interactType != 0) { + this->interactType = 0; + TextboxNoOverlapFollow(0); + this->animIndex += 1; + if (gUnk_0811033C[this->animIndex] == 0) { + this->animIndex = 0; + } + InitAnimationForceUpdate(this, this->animIndex); + } +} + +void sub_08065F64(Entity* this) { + s32 tmp = gSave.unk8 - 2; + if (tmp < 0) { + tmp = 0; + } + ShowNPCDialogue(this, gUnk_08110280 + this->type * 8 + tmp); +} + +void GhostBrothers_Fusion(Entity* this) { + if (this->action == 0) { + this->action += 1; + this->spriteSettings.b.draw = 1; + InitAnimationForceUpdate(this, 2); + } else { + UpdateAnimationSingleFrame(this); + } +} diff --git a/src/npc/gorman.c b/src/npc/gorman.c new file mode 100644 index 00000000..861a29d8 --- /dev/null +++ b/src/npc/gorman.c @@ -0,0 +1,138 @@ +#include "entity.h" +#include "script.h" +#include "functions.h" +#include "random.h" +#include "flags.h" +#include "textbox.h" + +extern void (*const gUnk_08111C48[])(Entity*); + +void sub_080697A4(Entity* this); +void sub_08069838(Entity* this); + +extern SpriteLoadData gUnk_08111C3C; + +extern u8 gUnk_08111C9C[]; + +extern u8 gUnk_08111CA8[]; + +extern u8 gUnk_08111CB4[]; + +extern u8 gUnk_08111CB8[]; + +void sub_08069888(Entity* this); + +extern u16 gUnk_08111C50[]; + +void Gorman(Entity* this) { + if ((this->flags & 2) != 0) { + sub_08069838(this); + } else { + sub_080697A4(this); + } +} + +void sub_080697A4(Entity* this) { + gUnk_08111C48[this->action](this); + sub_0806ED78(this); +} + +void sub_080697C4(Entity* this) { + if (LoadExtraSpriteData(this, &gUnk_08111C3C) != 0) { + this->action = 1; + InitializeAnimation(this, 2); + sub_08078778(this); + } +} + +void sub_080697EC(Entity* this) { + s32 tmp; + + tmp = sub_0806ED9C(this, 0x20, 0x20); + if (tmp >= 0) { + if (this->field_0xf == 0) { + this->field_0xf = 0x10; + if (this->animIndex != tmp) { + InitializeAnimation(this, tmp); + } + } else { + this->field_0xf -= 1; + } + } + if (this->interactType != 0) { + this->interactType = 0; + sub_08069888(this); + } +} + +void sub_08069838(Entity* this) { + if (this->action == 0) { + if (LoadExtraSpriteData(this, &gUnk_08111C3C) == 0) { + return; + } + this->action += 1; + this->field_0x68.HALF.LO = 0; + this->field_0x68.HALF.HI = 0; + sub_0807DD64(this); + } + sub_0807DD94(this, NULL); + if (this->interactType != 0) { + this->interactType = 0; + sub_08069888(this); + } +} + +void sub_08069888(Entity* this) { + s32 index; + if (CheckGlobalFlag(0x47) == 0) { + index = 0; + SetGlobalFlag(0x47); + } else if (((CheckGlobalFlag(0x2b) == 0) && (CheckGlobalFlag(0x2c) == 0)) && (CheckGlobalFlag(0x2d) == 0)) { + index = 1; + } else if (CheckGlobalFlag(0x18) == 0) { + index = 2; + } else if (CheckGlobalFlag(0x48) == 0) { + index = 3; + SetGlobalFlag(0x48); + } else if ((CheckGlobalFlag(0x2e) == 0) && (CheckGlobalFlag(0x2f) == 0)) { + index = CheckGlobalFlag(0x30) ? 5 : 4; + } else { + index = 5; + } + TextboxNoOverlap(gUnk_08111C50[index], this); +} + +ASM_FUNC("asm/non_matching/gorman/sub_0806991C.inc", void sub_0806991C(Entity* this, ScriptExecutionContext* context)) + +ASM_FUNC("asm/non_matching/gorman/sub_080699AC.inc", void sub_080699AC(Entity* this, ScriptExecutionContext* context)) + +void sub_08069A3C(Entity* this) { + this->field_0x68.HALF.HI = gUnk_08111C9C[(Random() & 1) + (s8)this->field_0x68.HALF.HI * 2]; +} + +void sub_08069A60(Entity* this) { + this->field_0x68.HALF.HI = gUnk_08111CA8[(Random() & 1) + (s8)this->field_0x68.HALF.HI * 2]; +} + +void sub_08069A84(Entity* this) { + this->field_0x68.HALF.HI = gUnk_08111CB4[(Random() & 1) + (s8)this->field_0x68.HALF.HI * 2]; +} + +void sub_08069AA8(Entity* this) { + this->field_0x68.HALF.HI = gUnk_08111CB8[(Random() & 1) + (s8)this->field_0x68.HALF.HI * 2]; +} + +void sub_08069ACC(Entity* this, ScriptExecutionContext* context) { + if (--this->field_0x68.HALF.LO * 0x1000000 < 1) { + context->condition = 1; + } else { + context->condition = 0; + } +} + +void Gorman_Head(Entity* this) { + SetExtraSpriteFrame(this, 0, (this->frames.all & 7) + 0xf); + SetExtraSpriteFrame(this, 1, this->frameIndex); + SetSpriteSubEntryOffsetData1(this, 1, 0); + sub_0807000C(this); +} diff --git a/src/npc/gregal.c b/src/npc/gregal.c new file mode 100644 index 00000000..790385bb --- /dev/null +++ b/src/npc/gregal.c @@ -0,0 +1,162 @@ +#include "entity.h" +#include "script.h" +#include "functions.h" +#include "npc.h" + +void sub_0801D2B4(Entity*, u32); + +extern void (*gUnk_08113D8C[])(Entity*); + +extern void sub_08078850(Entity*, u32, u8, u32*); +extern u32 gUnk_08113D84[]; + +void Gregal(Entity* this) { + gUnk_08113D8C[this->type](this); +} + +void sub_0806CAF4(Entity* this) { + Entity* npc; + + if (this->action == 0) { + this->action += 1; + sub_0805E3A0(this, 2); + npc = CreateNPC(0x4a, 1, 0); + if (npc != NULL) { + npc->parent = this; + CopyPosition(this, npc); + sub_0806FAD8(this, npc); + } + npc = CreateNPC(0x4a, 2, 0); + if (npc != NULL) { + npc->parent = this; + CopyPosition(this, npc); + ResolveEntityOnTop(this, npc); + } + sub_0807DD64(this); + sub_08078778(this); + sub_08078850(this, 1, gUnk_08113D84[1], gUnk_08113D84); + } + ExecuteScriptForEntity(this, NULL); + HandleEntity0x82Actions(this); + GetNextFrame(this); +} + +void sub_0806CB80(Entity* this) { + if (this->action == 0) { + this->action += 1; + this->animationState = 2; + this->frameIndex = 0; + sub_0805E3A0(this, 2); + } + if (this->parent != NULL) { + this->frameIndex = (this->parent->frames.all & 3) + 0x21; + } +} + +void sub_0806CBB4(Entity* this) { + if (this->action == 0) { + this->action += 1; + this->animationState = 2; + sub_0805E3A0(this, 2); + InitializeAnimation(this, 0x11); + } + GetNextFrame(this); + if (this->parent != NULL) { + this->spriteSettings.b.draw = 0; + if ((this->parent->frames.all & 4) != 0) { + this->spriteSettings.b.draw = 1; + } + } +} + +void sub_0806CC08(Entity* this) { + switch (this->action) { + case 0: + this->action = 1; + this->spriteSettings.b.draw = 1; + sub_0805E3A0(this, 2); + sub_0807DD64(this); + case 1: + if (this->interactType == 2) { + this->action = 2; + this->interactType = 0; + this->field_0x68.HALF.HI = this->animIndex; + InitAnimationForceUpdate(this, sub_0806F5A4(GetFacingDirection(this, &gPlayerEntity)) + 8); + sub_0806F118(this); + } else { + ExecuteScriptForEntity(this, NULL); + HandleEntity0x82Actions(this); + GetNextFrame(this); + } + break; + case 2: + if (UpdateFuseInteraction(this) == 0) { + return; + } + this->action = 1; + InitAnimationForceUpdate(this, this->field_0x68.HALF.HI); + break; + } +} + +void sub_0806CCB4(Entity* this, ScriptExecutionContext* context) { + if ((this->frames.all & 0x80) != 0) { + context->condition = 1; + } else { + context->condition = 0; + } +} + +void sub_0806CCD0(Entity* this, ScriptExecutionContext* context) { + u32 tmp = this->frameSpriteSettings & 0x3f; + if ((this->frameSpriteSettings & 0x3f) != 0) { + InitializeAnimation(this, tmp + (this->animationState >> 1)); + context->condition = 1; + } else { + context->condition = tmp; + } +} + +void sub_0806CCF8(Entity* this) { + sub_0801D2B4(this, 0x10a); +} + +void sub_0806CD04(Entity* this) { + sub_0801D2B4(this, 0x10b); +} + +void sub_0806CD14(Entity* this) { + sub_0801D2B4(this, 0x10c); +} + +void sub_0806CD20(Entity* this) { + sub_0801D2B4(this, 0x10d); +} + +void sub_0806CD30(Entity* this) { + sub_0801D2B4(this, 0x10e); +} + +void sub_0806CD3C(Entity* this) { + sub_0801D2B4(this, 0x10f); +} + +void sub_0806CD4C(Entity* this) { + sub_0801D2B4(this, 0x110); +} + +void sub_0806CD58(Entity* this) { + this->field_0x68.HALF.LO = sub_0801E99C(this); + sub_08078784(this, this->field_0x68.HALF.LO); +} + +void Gregal_Fusion(Entity* this) { + if (this->action == 0) { + this->action += 1; + this->spriteSettings.b.draw = 1; + sub_0805E3A0(this, 2); + InitAnimationForceUpdate(this, 6); + } else { + UpdateAnimationSingleFrame(this); + } +} diff --git a/src/npc/guardWithSpear.c b/src/npc/guardWithSpear.c new file mode 100644 index 00000000..0332ce5f --- /dev/null +++ b/src/npc/guardWithSpear.c @@ -0,0 +1,45 @@ +#include "entity.h" +#include "script.h" +#include "player.h" + +ASM_FUNC("asm/non_matching/guardWithSpear/sub_0806407C.inc", + void sub_0806407C(Entity* this, ScriptExecutionContext* context)) + +void sub_08064180(void) { + Entity* entity = FindEntityByID(7, 0x15, 7); + if (entity != NULL) { + DeleteEntity(entity); + } +} + +ASM_FUNC("asm/non_matching/guardWithSpear/sub_08064198.inc", void sub_08064198(Entity* this)) + +ASM_FUNC("asm/non_matching/guardWithSpear/sub_080642B8.inc", void sub_080642B8(Entity* this)) + +ASM_FUNC("asm/non_matching/guardWithSpear/sub_080643D8.inc", void sub_080643D8(Entity* this)) + +ASM_FUNC("asm/non_matching/guardWithSpear/sub_08064428.inc", void sub_08064428(Entity* this)) + +void sub_08064470(Entity* this, ScriptExecutionContext* context) { + if (gPlayerState.field_0xab == 1) { + context->condition = 1; + } else { + context->condition = 0; + } +} + +void sub_08064488(void) { + if (gPlayerState.field_0xa8 != 2) { + gPlayerState.field_0xab = 0; + } +} + +void sub_080644A4(void) { + gPlayerState.field_0xab = 0; +} + +void sub_080644B4(Entity* this, ScriptExecutionContext* context) { + context->condition = this->animationState == context->intVariable; +} + +ASM_FUNC("asm/non_matching/guardWithSpear/sub_080644C8.inc", void sub_080644C8(Entity* this)) diff --git a/src/npc/hurdyGurdyMan.c b/src/npc/hurdyGurdyMan.c new file mode 100644 index 00000000..fd0dd3d5 --- /dev/null +++ b/src/npc/hurdyGurdyMan.c @@ -0,0 +1,88 @@ +#include "entity.h" +#include "functions.h" +#include "save.h" +#include "npc.h" +#include "script.h" + +extern Dialog gUnk_081144FC[]; + +extern SpriteLoadData gUnk_081144F0; + +extern u32 sub_08002632(Entity*); +extern u16* gUnk_08001A7C[]; + +void HurdyGurdyMan(Entity* this) { + u32 index; + u16* pointerToArray; + + switch (this->action) { + case 0: + if (LoadExtraSpriteData(this, &gUnk_081144F0) != 0) { + this->action = 1; + this->field_0x68.HALF.HI = 0; + sub_0805E3A0(this, 2); + sub_0807DD50(this); + } + break; + case 1: + if (this->interactType == 2) { + this->action = 2; + this->interactType = 0; + this->field_0x68.HALF.HI = this->animIndex; + InitializeAnimation(this, sub_0806F5A4(GetFacingDirection(this, &gPlayerEntity))); + index = sub_08002632(this); + pointerToArray = gUnk_08001A7C[index]; + if (this->field_0x68.HALF.LO == 0x32) { + pointerToArray = pointerToArray + 3; + } + sub_0801DFB4(this, (u32)*pointerToArray, (u32)pointerToArray[1], (u32)pointerToArray[2]); + gPlayerState.field_0x8b = 3; + } else { + sub_0807DD94(this, NULL); + } + + break; + case 2: + if ((UpdateFuseInteraction(this) != 0)) { + this->action = 1; + InitializeAnimation(this, this->field_0x68.HALF.HI); + } + break; + } +} + +void HurdyGurdyMan_Head(Entity* this) { + SetExtraSpriteFrame(this, 0, (this->frames.all & 0xffffff7f) + 8); + SetExtraSpriteFrame(this, 1, this->frameIndex); + SetSpriteSubEntryOffsetData1(this, 1, 0); + sub_0807000C(this); +} + +void sub_0806E418(Entity* this) { + s32 tmp = gSave.unk8 - 2; + if (tmp < 0) { + tmp = 0; + } + ShowNPCDialogue(this, &gUnk_081144FC[tmp]); +} + +void sub_0806E440(Entity* this) { + this->field_0x68.HALF.LO = sub_0801E99C(this); + sub_08078784(this, this->field_0x68.HALF.LO); +} + +void HurdyGurdyMan_Fusion(Entity* this) { + u32 uVar1; + + if (this->action == 0) { + uVar1 = LoadExtraSpriteData(this, &gUnk_081144F0); + if (uVar1 != 0) { + this->action += 1; + this->spriteSettings.b.draw = 1; + sub_0805E3A0(this, 2); + InitializeAnimation(this, 10); + } + } else { + GetNextFrame(this); + } +} diff --git a/src/npc/kid.c b/src/npc/kid.c index f265106e..e4c4c80a 100644 --- a/src/npc/kid.c +++ b/src/npc/kid.c @@ -201,10 +201,9 @@ NONMATCH("asm/non_matching/kid/sub_0806252C.inc", void sub_0806252C(Entity* this END_NONMATCH NONMATCH("asm/non_matching/kid/sub_08062634.inc", void sub_08062634(Entity* this)) { - u8 arr = this->type2; - u32 arr2 = arr * 2 + (Random() & 1); - u16 id = gUnk_0810BDE8[arr2]; - TextboxNoOverlap(id, this); + u32 a = this->type2; + u32 b = (Random() & 1); + TextboxNoOverlap(*((u16*)gUnk_0810BDE8 + b + a * 2), this); } END_NONMATCH diff --git a/src/npc/kingDaltus.c b/src/npc/kingDaltus.c new file mode 100644 index 00000000..714ed1f6 --- /dev/null +++ b/src/npc/kingDaltus.c @@ -0,0 +1,104 @@ +#include "entity.h" +#include "script.h" +#include "functions.h" +#include "npc.h" +#include "flags.h" +#include "textbox.h" + +extern u16 gUnk_081104F8[]; + +extern void (*const gUnk_081104E0[])(Entity*); +extern void (*const gUnk_081104EC[])(Entity*); + +void KingDaltus(Entity* this) { + if ((this->flags & 2) != 0) { + if (this->interactType == 2) { + this->interactType = 0; + this->action = 2; + InitAnimationForceUpdate(this, sub_0806F5A4(GetFacingDirection(this, &gPlayerEntity))); + sub_0806F118(this); + } + gUnk_081104EC[this->action](this); + } else { + gUnk_081104E0[this->action](this); + sub_0806ED78(this); + } +} + +void sub_08066654(Entity* this) { + this->action = 1; + this->spriteSettings.b.draw = 1; + this->field_0x68.HALF.LO = sub_0801E99C(this); + sub_08078784(this, this->field_0x68.HALF.LO); + InitAnimationForceUpdate(this, 2); +} + +void sub_08066688(Entity* this) { + s32 tmp = sub_0806ED9C(this, 0x28, 0x28); + if (tmp < 0) { + tmp = 2; + } else { + if (this->field_0xf == 0) { + this->field_0xf = 0x10; + } else { + this->field_0xf -= 1; + tmp = this->animIndex; + } + } + if (sub_0806F078(this, tmp) == 0) { + UpdateAnimationSingleFrame(this); + } + if (this->interactType != 0) { + this->action = 2; + this->interactType = 0; + } +} + +void sub_080666DC(Entity* this) { + this->action = 1; +} + +void sub_080666E4(Entity* this) { + this->action = 1; + this->spriteSettings.b.draw = 1; + this->field_0x68.HALF.LO = sub_0801E99C(this); + sub_0807DD50(this); +} + +void sub_0806670C(Entity* this) { + sub_0807DD94(this, NULL); +} + +void sub_08066718(Entity* this) { + if (UpdateFuseInteraction(this) != 0) { + this->action = 1; + } +} + +void sub_0806672C(Entity* this) { + sub_08078784(this, this->field_0x68.HALF.LO); +} + +void sub_0806673C(Entity* this) { + u32 index; + if (CheckGlobalFlag(2) == 0) { + index = 0; + } else if (GetInventoryValue(2) == 0) { + index = 1; + } else if (GetInventoryValue(3) == 0) { + index = 2; + } else { + index = 3; + } + TextboxNoOverlap(gUnk_081104F8[index], this); +} + +void KingDaltus_Fusion(Entity* this) { + if (this->action == 0) { + this->action += 1; + this->spriteSettings.b.draw = 1; + InitAnimationForceUpdate(this, 6); + } else { + UpdateAnimationSingleFrame(this); + } +} diff --git a/src/npc/librarians.c b/src/npc/librarians.c new file mode 100644 index 00000000..f88ecc6d --- /dev/null +++ b/src/npc/librarians.c @@ -0,0 +1,61 @@ +#include "entity.h" +#include "script.h" +#include "functions.h" +#include "flags.h" +#include "textbox.h" +#include "audio.h" + +extern u16 gUnk_08113078[]; + +extern void sub_08095BE0(Entity*, u32); + +ASM_FUNC("asm/non_matching/librarians/Librarians.inc", void Librarians(Entity* this)) + +ASM_FUNC("asm/non_matching/librarians/sub_0806BA34.inc", + void sub_0806BA34(Entity* this, ScriptExecutionContext* context)) + +void sub_0806BB1C(Entity* this, ScriptExecutionContext* context) { + s32 tmp; + + tmp = 0xffffffff; + if (GetInventoryValue(0x39) == 1) { + tmp = 0x39; + } else if (GetInventoryValue(0x3a) == 1) { + tmp = 0x3a; + } else { + if (GetInventoryValue(0x3b) == 1) { + tmp = 0x3b; + } + if (tmp < 1) { + return; + } + } + if (context->intVariable == 0) { + sub_08095BE0(this, tmp); + InitializeAnimation(this, 0xc); + SoundReq(SFX_TASK_COMPLETE); + } else { + sub_0807CAA0(tmp, 2); + } +} + +void sub_0806BB7C(Entity* this, ScriptExecutionContext* context) { + context->condition = 0; + if ((GetInventoryValue(0x39) == 2) && (GetInventoryValue(0x3a) == 2) && (GetInventoryValue(0x3b) == 2)) { + SetLocalFlag(0x73); + context->condition = 1; + } +} + +void sub_0806BBB0(Entity* this) { + u32 flag; + u32 tmp; + + if (GetInventoryValue(0x46) == 0) { + flag = CheckGlobalFlag(0x29); + tmp = BOOLCAST(flag); + } else { + tmp = 2; + } + TextboxNoOverlap(gUnk_08113078[tmp], this); +} diff --git a/src/npc/mama.c b/src/npc/mama.c new file mode 100644 index 00000000..661684a7 --- /dev/null +++ b/src/npc/mama.c @@ -0,0 +1,98 @@ +#include "entity.h" +#include "script.h" +#include "functions.h" +#include "save.h" +#include "npc.h" + +extern Dialog gUnk_08113760[]; + +extern SpriteLoadData gUnk_08113754; + +bool32 sub_0806C454(Entity* this); + +void Mama(Entity* this) { + switch (this->action) { + case 0: + if (sub_0806C454(this) != 0) { + this->action = 1; + this->spriteSettings.b.draw = 1; + this->animationState = this->actionDelay; + this->field_0x68.HALF.HI = 0; + sub_0807DD50(this); + } + break; + case 1: + if (this->interactType == 2) { + this->action = 2; + this->interactType = 0; + this->field_0x68.HALF.HI = this->animIndex; + InitializeAnimation(this, sub_0806F5A4(GetFacingDirection(this, &gPlayerEntity))); + sub_0806F118(this); + } else { + ExecuteScriptForEntity(this, NULL); + HandleEntity0x82Actions(this); + GetNextFrame(this); + } + break; + + case 2: + if (UpdateFuseInteraction(this) != 0) { + this->action = 1; + InitializeAnimation(this, this->field_0x68.HALF.HI); + } + break; + } +} + +bool32 sub_0806C454(Entity* this) { + if (LoadExtraSpriteData(this, &gUnk_08113754) == 0) { + return FALSE; + } else { + sub_0805E3A0(this, 2); + return TRUE; + } +} + +void Mama_Head(Entity* this) { + SetExtraSpriteFrame(this, 0, this->frames.all & 0x7f); + SetExtraSpriteFrame(this, 1, this->frameIndex); + SetSpriteSubEntryOffsetData1(this, 1, 0); + sub_0807000C(this); +} + +void sub_0806C4A8(Entity* this, ScriptExecutionContext* context) { + s32 tmp; + if ((this->frames.all & 0x80) != 0) { + tmp = GetAnimationState(this); + if (tmp < 0) { + tmp = 3; + } + this->animationState = tmp * 2; + InitAnimationForceUpdate(this, tmp); + context->condition = 1; + } else { + context->condition = 0; + } +} + +void sub_0806C4DC(Entity* this) { + ShowNPCDialogue(this, &gUnk_08113760[gSave.unk8]); +} + +void sub_0806C4F8(Entity* this) { + this->field_0x68.HALF.LO = sub_0801E99C(this); + sub_08078784(this, this->field_0x68.HALF.LO); +} + +void Mama_Fusion(Entity* this) { + if (this->action == 0) { + if (sub_0806C454(this) != 0) { + this->action += 1; + this->spriteSettings.b.draw = 1; + this->y.HALF.HI -= 4; + InitializeAnimation(this, 2); + } + } else { + GetNextFrame(this); + } +} diff --git a/src/npc/minishEzlo.c b/src/npc/minishEzlo.c new file mode 100644 index 00000000..2ab3ac16 --- /dev/null +++ b/src/npc/minishEzlo.c @@ -0,0 +1,44 @@ +#include "entity.h" +#include "functions.h" +#include "script.h" +#include "audio.h" + +extern SpriteLoadData gUnk_0810C48C; + +void MinishEzlo(Entity* this) { + if (this->action == 0) { + if (LoadExtraSpriteData(this, &gUnk_0810C48C) == 0) { + return; + } + this->action += 1; + this->animationState = this->actionDelay * 2; + sub_0805E3A0(this, 2); + sub_0807DD50(this); + } + ExecuteScriptForEntity(this, NULL); + HandleEntity0x82Actions(this); + GetNextFrame(this); + if ((this->frameSpriteSettings & 0x10) != 0) { + this->frameSpriteSettings &= 0xef; + EnqueueSFX(SFX_ELEMENT_CHARGE); + } + if ((this->frameSpriteSettings & 0x20) != 0) { + this->frameSpriteSettings &= 0xdf; + EnqueueSFX(SFX_220); + } +} + +ASM_FUNC("asm/non_matching/minishEzlo/MinishEzlo_Head.inc", void MinishEzlo_Head(Entity* this)) + +void sub_0806305C(Entity* this) { + this->spritePriority.b1 = 0; + this->spriteRendering.b0 = 3; + *(u32*)&this->field_0x6c = 0x100; + this->field_0x70.WORD = 0x100; + sub_0805EC9C(this, 0x100, 0x100, 0x0); + InitAnimationForceUpdate(this, 0x10); + this->field_0x80.HWORD = 0x10; + SoundReq(SFX_PLY_SHRINKING); +} + +ASM_FUNC("asm/non_matching/minishEzlo/sub_080630A4.inc", void sub_080630A4(Entity* this)) diff --git a/src/npc/ministerPotho.c b/src/npc/ministerPotho.c new file mode 100644 index 00000000..5beb9499 --- /dev/null +++ b/src/npc/ministerPotho.c @@ -0,0 +1,106 @@ +#include "entity.h" +#include "functions.h" +#include "flags.h" +#include "textbox.h" +#include "script.h" +#include "npc.h" + +extern void (*const gUnk_08110644[])(Entity*); +void sub_08066864(Entity*); + +extern u16 gUnk_08110650[]; + +void MinisterPotho(Entity* this) { + if ((this->flags & 2) != 0) { + sub_08066864(this); + } else { + gUnk_08110644[this->action](this); + sub_0806ED78(this); + } +} + +void sub_080667E4(Entity* this) { + this->action = 1; + this->spriteSettings.b.draw = 1; + InitAnimationForceUpdate(this, 2); + sub_08078778(this); +} + +void sub_08066808(Entity* this) { + s32 tmp = sub_0806ED9C(this, 0x28, 0x28); + if (tmp < 0) { + tmp = 2; + } else { + if (this->field_0xf == 0) { + this->field_0xf = 0x10; + } else { + this->field_0xf -= 1; + tmp = this->animIndex; + } + } + if (sub_0806F078(this, tmp) == 0) { + UpdateAnimationSingleFrame(this); + } + if (this->interactType != 0) { + this->action = 2; + this->interactType = 0; + } +} + +void sub_0806685C(Entity* this) { + this->action = 1; +} + +void sub_08066864(Entity* this) { + switch (this->action) { + case 0: + this->action = 1; + this->spriteSettings.b.draw = 1; + this->field_0x68.HALF.LO = sub_0801E99C(this); + sub_0807DD50(this); + break; + case 1: + if (this->interactType == 2) { + this->action = 2; + this->interactType = 0; + InitAnimationForceUpdate(this, sub_0806F5A4(GetFacingDirection(this, &gPlayerEntity))); + sub_0806F118(this); + } else { + sub_0807DD94(this, NULL); + } + break; + case 2: + if (UpdateFuseInteraction(this) != 0) { + this->action = 1; + } + break; + } +} + +void sub_080668F0(Entity* this) { + sub_08078784(this, sub_0801E99C(this)); +} + +void sub_08066904(Entity* this) { + u32 index; + if (CheckGlobalFlag(2) == 0) { + index = 0; + } else if (GetInventoryValue(2) == 0) { + index = 1; + } else if (GetInventoryValue(3) == 0) { + index = 2; + } else { + index = 3; + } + TextboxNoOverlap(gUnk_08110650[index], this); +} + +void MinisterPotho_Fusion(Entity* this) { + if (this->action == 0) { + this->action += 1; + this->spriteSettings.b.draw = 1; + InitAnimationForceUpdate(this, 6); + } else { + UpdateAnimationSingleFrame(this); + } +} diff --git a/src/npc/mountainMinish.c b/src/npc/mountainMinish.c new file mode 100644 index 00000000..b295b57d --- /dev/null +++ b/src/npc/mountainMinish.c @@ -0,0 +1,109 @@ +#include "entity.h" +#include "script.h" +#include "functions.h" +#include "textbox.h" +#include "flags.h" + +extern SpriteLoadData gUnk_08111358; + +extern void (*const gUnk_08111368[])(Entity*); +void sub_08067EF0(Entity*); + +extern SpriteLoadData gUnk_08111358; + +extern u16 gUnk_0811130E[]; + +void MountainMinish(Entity* this) { + if ((this->flags & 2) == 0) { + gUnk_08111368[this->action](this); + sub_0806ED78(this); + } else { + sub_08067EF0(this); + } +} + +void sub_08067E60(Entity* this) { + if (LoadExtraSpriteData(this, &gUnk_08111358) != 0) { + this->action = 1; + sub_08078778(this); + InitializeAnimation(this, 2); + } +} + +void sub_08067E88(Entity* this) { + s32 tmp; + + tmp = sub_0806ED9C(this, 0x28, 0x28); + if (tmp < 0) { + tmp = 2; + } else { + if (this->field_0xf == 0) { + this->field_0xf = 0x10; + } else { + this->field_0xf = this->field_0xf - 1; + tmp = this->animIndex; + } + } + if (sub_0806F078(this, tmp) == 0) { + GetNextFrame(this); + } + if (this->interactType != 0) { + this->interactType = 0; + this->action = 2; + TextboxNoOverlapFollow(this->actionDelay + 0x1200); + } +} + +void sub_08067EE8(Entity* this) { + this->action = 1; +} + +ASM_FUNC("asm/non_matching/mountainMinish/sub_08067EF0.inc", void sub_08067EF0(Entity* this)) + +void sub_08068104(Entity* this) { + this->field_0x68.HALF.LO = sub_0801E99C(this); + sub_08078784(this, this->field_0x68.HALF.LO); +} + +ASM_FUNC("asm/non_matching/mountainMinish/sub_0806811C.inc", void sub_0806811C(Entity* this)) + +NONMATCH("asm/non_matching/mountainMinish/sub_08068190.inc", void sub_08068190(Entity* this)) { + u32 uVar1; + u32 uVar2; + u32 uVar3; + + uVar3 = this->type2; + if (uVar3 > 8) { + uVar3 = 8; + } + uVar1 = CheckLocalFlag(0x7e); + uVar2 = BOOLCAST(uVar1); + if (GetInventoryValue(0x41) != 0) { + uVar2 = 2; + } + if (GetInventoryValue(2) != 0) { + uVar2 = 3; + } + + // TODO unable to devide the array access variables by two without breaking everything + TextboxNoOverlap(gUnk_0811130E[uVar2 * 2 + uVar3 * 8], this); +} +END_NONMATCH + +void sub_080681D8(Entity* this, ScriptExecutionContext* context) { + this->type = context->intVariable; +} + +ASM_FUNC("asm/non_matching/mountainMinish/MountainMinish_Head.inc", void MountainMinish_Head(Entity* this)) + +void MountainMinish_Fusion(Entity* this) { + if (this->action == 0) { + if (LoadExtraSpriteData(this, &gUnk_08111358) != 0) { + this->action += 1; + this->spriteSettings.b.draw = 1; + InitializeAnimation(this, 6); + } + } else { + GetNextFrame(this); + } +} diff --git a/src/npc/npc23.c b/src/npc/npc23.c new file mode 100644 index 00000000..6320a7fe --- /dev/null +++ b/src/npc/npc23.c @@ -0,0 +1,108 @@ +#include "entity.h" +#include "script.h" +#include "player.h" +#include "structures.h" +#include "functions.h" +#include "structures.h" +#include "textbox.h" + +extern void (*const gUnk_081104C8[])(Entity*); + +bool32 sub_0806650C(Entity*); +extern void sub_08078AC0(u32, u32, u32); + +void sub_08066490(Entity*, Entity*); + +void sub_08066570(Entity* this); + +void NPC23(Entity* this) { + gUnk_081104C8[this->action](this); + sub_0806ED78(this); +} + +void sub_080662F8(Entity* this) { + this->action = 1; + this->subAction = 0; + this->spriteSettings.b.draw = 1; + this->animationState = this->type << 1; + InitializeAnimation(this, this->type); + this->field_0x7c.HALF.HI = this->x.HALF.HI; + this->field_0x80.HWORD = this->y.HALF.HI; + this->field_0x86.HWORD = 0; + this->field_0x82.HWORD = this->actionDelay; + this->parent = &gPlayerEntity; + this->cutsceneBeh.HWORD = 0; + sub_08066490(this, this->parent); + sub_08078778(this); +} + +void sub_08066358(Entity* this) { + if (this->interactType != 0) { + this->interactType = 0; + TextboxNoOverlapFollow(0); + if ((this->type2 & 0x10) != 0) { + this->action = 3; + this->subAction = 0; + if ((this->field_0x7c.HALF_U.HI - this->x.HALF.HI) > 8) { + this->direction = 8; + } else { + this->direction = 0x18; + } + this->speed = 0x80; + this->cutsceneBeh.HWORD = 1; + gUnk_02034490[0] = 1; + sub_080788E0(this); + } + } else { + sub_08066490(this, this->parent); + } + GetNextFrame(this); + sub_08066570(this); +} + +void nullsub_110(void) { +} + +void sub_080663D4(Entity* this) { + if (this->x.HALF.HI == this->field_0x7c.HALF_U.HI - 8) { + if (gPlayerEntity.action != 0xf) { + this->action = 4; + this->direction = 0; + this->speed = 0; + this->cutsceneBeh.HWORD = 0; + InitializeAnimation(this, 2); + } + } else { + if (this->subAction == 0) { + InitializeAnimation(this, (this->direction >> 3) + 4); + this->subAction = this->subAction + 1; + } + ProcessMovement(this); + } + sub_08078B48(); + GetNextFrame(this); +} + +void sub_0806643C(Entity* this) { + bool32 tmp = sub_0806650C(this); + if (tmp == FALSE) { + this->action = 5; + gRoomControls.cameraTarget = NULL; + sub_08078AC0(0x40, 0, 0); + gPlayerEntity.animationState = 0; + gPlayerEntity.direction = 0; + } + GetNextFrame(this); +} + +void sub_08066474(void) { + if (gPlayerEntity.action != 0xf) { + gUnk_02034490[0] = 0; + } +} + +ASM_FUNC("asm/non_matching/npc23/sub_08066490.inc", void sub_08066490(Entity* this, Entity* entity)) + +ASM_FUNC("asm/non_matching/npc23/sub_0806650C.inc", bool32 sub_0806650C(Entity* this)) + +ASM_FUNC("asm/non_matching/npc23/sub_08066570.inc", void sub_08066570(Entity* this)) diff --git a/src/npc/npc58.c b/src/npc/npc58.c new file mode 100644 index 00000000..c6558930 --- /dev/null +++ b/src/npc/npc58.c @@ -0,0 +1,54 @@ +#include "entity.h" +#include "functions.h" + +extern void sub_0806FFBC(Entity*, u32, u32, u32); + +extern SpriteLoadData gUnk_081146D0; + +void NPC58(Entity* this) { + s32 sVar1; + s32 uVar2; + s32 uVar4; + Entity* entity; + + if (this->action == 0) { + if (LoadExtraSpriteData(this, &gUnk_081146D0) == 0) { + return; + } + this->action += 1; + this->spriteSettings.b.draw = 2; + this->spriteRendering.b3 = 0; + this->spritePriority.b0 = 0; + this->spriteOrientation.flipY = 1; + this->x.HALF.HI = 0x78; + this->y.HALF.HI = 0x10; + } + entity = this->parent; + if (entity != NULL) { + sVar1 = *(s16*)&entity->field_0x68.HWORD; + uVar2 = (s32)sVar1 / 600; + this->field_0x68.HWORD = uVar2; + uVar4 = (s32)sVar1 % 600; + this->field_0x6a.HWORD = uVar4 / 0x3c; + uVar4 = uVar4 % 0x3c; + uVar2 = uVar4 / 6; + this->field_0x6c.HWORD = uVar2; + if (entity->next == NULL) { + DeleteThisEntity(); + } + } else { + DeleteThisEntity(); + } +} + +void NPC58_Head(Entity* this) { + this->frameIndex = 0xff; + SetExtraSpriteFrame(this, 0, (s16)this->field_0x68.HWORD); + SetExtraSpriteFrame(this, 1, (s16)this->field_0x6a.HWORD); + SetExtraSpriteFrame(this, 2, (s16)this->field_0x6c.HWORD); + SetExtraSpriteFrame(this, 3, 10); + sub_0806FFBC(this, 0, 0xfffffff4, 0); + sub_0806FFBC(this, 1, 0xfffffffc, 0); + sub_0806FFBC(this, 2, 0xc, 0); + sub_0807000C(this); +} diff --git a/src/npc/percy.c b/src/npc/percy.c index 3c5c8a01..5bd1fc37 100644 --- a/src/npc/percy.c +++ b/src/npc/percy.c @@ -5,6 +5,7 @@ #include "functions.h" #include "flags.h" #include "script.h" +#include "save.h" extern void sub_0806B41C(Entity*); extern void sub_0806B3CC(Entity*); @@ -16,6 +17,8 @@ extern u16 gUnk_08112E54[4]; extern Dialog gUnk_08112E2C[5]; extern SpriteLoadData gUnk_08112E1C; +extern SpriteLoadData gUnk_08112E1C; + void Percy_Head(Entity* this) { SetExtraSpriteFrame(this, 0, (this->frameSpriteSettings & 0x3f) + 0x13); SetExtraSpriteFrame(this, 1, (this->frames.all & 0x7f) + 0xb); @@ -105,3 +108,61 @@ void sub_0806B504(Entity* this) { TextboxNoOverlap(gUnk_08112E54[idx], this); } + +void sub_0806B540(Entity* this) { + ScriptExecutionContext* context; + + context = *(ScriptExecutionContext**)&this->cutsceneBeh; + switch (context->unk_18) { + case 0: + TextboxNoOverlap(0x2312, this); + if (CheckLocalFlag(0x3f) != 0) { + return; + } + context->unk_18 += 1; + SetLocalFlag(0x3f); + break; + case 1: + if ((gTextBox.doTextBox & 0x7f) == 0) { + context->unk_18 = 2; + TextboxNoOverlap(0x2315, this); + } + break; + case 2: + if ((gTextBox.doTextBox & 0x7f) == 0) { + context->unk_18 = 3; + if (gSave.stats.filler3[0] != 0) { + sub_080A7C18(0x58, 0, 0); + } else { + sub_080A7C18(0x3f, 100, 0); + } + SetRoomFlag(0xf); + } + break; + case 3: + if ((gPlayerEntity.action != 8)) { + context->wait = 0x2d; + return; + } + break; + } + + gActiveScriptInfo.commandSize = 0; +} + +void sub_0806B60C(Entity* this) { + this->field_0x68.HALF.LO = sub_0801E99C(this); + sub_08078784(this, this->field_0x68.HALF.LO); +} + +void Percy_Fusion(Entity* this) { + if (this->action == 0) { + if (LoadExtraSpriteData(this, &gUnk_08112E1C) != 0) { + this->action += 1; + this->spriteSettings.b.draw = 1; + InitializeAnimation(this, 2); + } + } else { + GetNextFrame(this); + } +} diff --git a/src/npc/phonograph.c b/src/npc/phonograph.c new file mode 100644 index 00000000..0b26b4db --- /dev/null +++ b/src/npc/phonograph.c @@ -0,0 +1,33 @@ +#include "entity.h" +#include "script.h" +#include "functions.h" +#include "fileScreen.h" +#include "screen.h" + +extern void sub_08057044(u32, struct_020227E8*, u32); +extern u32 gUnk_081146B8; + +extern u16 gBG0Settings[]; + +void Phonograph(Entity* this) { + if (this->action == 0) { + this->action += 1; + this->spriteSettings.b.draw = 1; + this->field_0x68.HWORD = 1; + this->field_0x6a.HWORD = 0xffff; + sub_0807DD64(this); + this->frameIndex = 0; + } + ExecuteScriptForEntity(this, NULL); + HandleEntity0x82Actions(this); +} + +ASM_FUNC("asm/non_matching/phonograph/sub_0806E964.inc", + void sub_0806E964(Entity* this, ScriptExecutionContext* context)) + +void sub_0806EABC(Entity* this, u32 param) { + sub_08050384(); + sub_08057044(param, &gUnk_020227E8, 0x202020); + sub_0805F46C(0x3302, &gUnk_081146B8); + gScreen.bg.bg0Updated = 1; +} diff --git a/src/npc/picolyteBottle.c b/src/npc/picolyteBottle.c new file mode 100644 index 00000000..720cdf61 --- /dev/null +++ b/src/npc/picolyteBottle.c @@ -0,0 +1,132 @@ +#include "entity.h" +#include "script.h" +#include "structures.h" +#include "functions.h" +#include "textbox.h" + +extern void DoExitTransition(ScreenTransitionData*); +extern ScreenTransitionData gUnk_0813AD4C; + +void sub_0806E014(Entity* this); +void sub_0806E0DC(Entity* this); + +extern void (*const gUnk_081142BC[])(Entity*); + +extern void sub_08078828(Entity*); + +extern Hitbox gUnk_080FD150; + +void PicolyteBottle(Entity* this) { + gUnk_081142BC[this->action](this); + if (this->type == 0) { + gPlayerState.field_0x1a[0] |= 0x80; + } +} + +void sub_0806DF00(Entity* this) { + Entity* npc; + + if (this->type == 0) { + this->action = 1; + npc = CreateNPC(0x51, 1, 0); + *(Entity**)&this->field_0x68 = npc; + npc->parent = this; + npc = CreateNPC(0x51, 1, 1); + *(Entity**)&this->field_0x6c = npc; + npc->parent = this; + npc = CreateNPC(0x51, 1, 2); + *(Entity**)&this->field_0x70 = npc; + npc->parent = this; + this->field_0x74.HWORD = 0; + this->field_0x76.HWORD = 10; + gScreenTransition.field_0x8 = 10; + sub_0806E014(this); + sub_0807DD50(this); + } else { + this->hitbox = &gUnk_080FD150; + this->collisionLayer = 1; + sub_0806E0DC(this); + } +} + +ASM_FUNC("asm/non_matching/picolyteBottles/sub_0806DF74.inc", void sub_0806DF74(Entity* this)) + +void sub_0806DFB4(Entity* this) { + Entity* obj; + + if (this->interactType != 0) { + this->interactType = 0; + this->parent->actionDelay = this->type2; + this->parent->type2 = this->field_0xf; + } else { + if (this->actionDelay != 0) { + this->actionDelay = 0; + obj = CreateObject(0x35, 2, this->field_0xf); + if (obj != NULL) { + obj->parent = this; + this->attachedEntity = obj; + CopyPosition(this, obj); + } + sub_080788E0(this); + sub_0807B7D8(0x74, this->field_0x76.HWORD, 2); + } + } +} + +void nullsub_111(void) { +} + +ASM_FUNC("asm/non_matching/picolyteBottles/sub_0806E014.inc", void sub_0806E014(Entity* this)) + +void sub_0806E0DC(Entity* this) { + this->actionDelay = 0; + if (this->field_0xf != 0xff) { + this->action = 2; + this->field_0x76.HWORD = TILE(this->x.HALF.HI, this->y.HALF.HI); + if (this->attachedEntity != NULL) { + DeleteEntity(this->attachedEntity); + this->attachedEntity = NULL; + } + sub_08078828(this); + sub_0807B7D8(0x73, this->field_0x76.HWORD, 2); + } else { + this->action = 3; + } +} + +ASM_FUNC("asm/non_matching/picolyteBottles/sub_0806E140.inc", + void sub_0806E140(Entity* this, ScriptExecutionContext* context)) + +void sub_0806E1E0(Entity* this) { + sub_0806E014(this); + sub_0806E0DC(*(Entity**)&this->field_0x68); + sub_0806E0DC(*(Entity**)&this->field_0x6c); + sub_0806E0DC(*(Entity**)&this->field_0x70); +} + +void sub_0806E1FC(Entity* this) { + DoExitTransition(&gUnk_0813AD4C); +} + +void sub_0806E20C(void) { + if (gScreenTransition.field_0x8 != 0) { + TextboxNoOverlapFollow(0x421f); + gTextBox.field_0x10 = gScreenTransition.field_0x8; + } else { + TextboxNoOverlapFollow(0x4220); + } +} + +void sub_0806E23C(void) { + if (gScreenTransition.field_0x8 != 0) { + ModRupees(gScreenTransition.field_0x8); + } +} + +void sub_0806E250(Entity* this, ScriptExecutionContext* context) { + context->condition = 0; + if (CheckKinstoneFused(0x31) != 0) { + context->condition = 1; + } + gActiveScriptInfo.flags |= 1; +} diff --git a/src/npc/pina.c b/src/npc/pina.c new file mode 100644 index 00000000..0acf265f --- /dev/null +++ b/src/npc/pina.c @@ -0,0 +1,130 @@ +#include "entity.h" +#include "functions.h" +#include "textbox.h" +#include "save.h" +#include "script.h" +#include "npc.h" + +void sub_08063B68(Entity* this); +void sub_08063A80(Entity* this); + +extern void (*gUnk_0810CDF8[])(Entity*); + +extern void CreateSpeechBubbleExclamationMark(Entity*, u32, u32); + +extern Dialog gUnk_0810CE04[]; + +void Pina(Entity* this) { + if ((this->flags & 2) != 0) { + sub_08063B68(this); + } else { + sub_08063A80(this); + } +} + +void sub_08063A80(Entity* this) { + gUnk_0810CDF8[this->action](this); +} + +void sub_08063A98(Entity* this) { + this->action += 1; + this->spriteSettings.b.draw = 1; + InitAnimationForceUpdate(this, 4); + sub_08078778(this); +} + +ASM_FUNC("asm/non_matching/pina/sub_08063AC0.inc", void sub_08063AC0(Entity* this)) + +void sub_08063B44(Entity* this) { + u8 tmp = gTextBox.doTextBox & 0x7f; + if (tmp == 0) { + this->action = 1; + this->field_0xf = tmp; + InitAnimationForceUpdate(this, 4); + } +} + +void sub_08063B68(Entity* this) { + switch (this->action) { + case 0: + this->action = 1; + this->spriteSettings.b.draw = 1; + this->field_0x68.HALF.HI = 0; + sub_0807DD64(this); + case 1: + if (this->interactType == 2) { + this->action = 2; + this->interactType = 0; + this->field_0x68.HALF.HI = this->animIndex; + InitAnimationForceUpdate(this, sub_0806F5A4(GetFacingDirection(this, &gPlayerEntity)) + 4); + sub_0806F118(this); + } else { + ExecuteScriptForEntity(this, NULL); + HandleEntity0x82Actions(this); + UpdateAnimationSingleFrame(this); + } + break; + case 2: + if (UpdateFuseInteraction(this) == 0) { + return; + } + this->action = 1; + InitAnimationForceUpdate(this, this->field_0x68.HALF.HI); + break; + } +} + +void sub_08063C14(void) { + Entity* entity = DeepFindEntityByID(7, 0x14); + if (entity != NULL) { + InitAnimationForceUpdate(entity, 8); + } +} + +void sub_08063C2C(void) { + Entity* entity = DeepFindEntityByID(7, 0x14); + if (entity != NULL) { + InitAnimationForceUpdate(entity, 4); + } +} + +void sub_08063C44(void) { + Entity* entity = DeepFindEntityByID(7, 0x14); + if (entity != NULL) { + InitAnimationForceUpdate(entity, 0); + } +} + +void sub_08063C5C(void) { + Entity* entity = DeepFindEntityByID(7, 0x14); + if (entity != NULL) { + InitAnimationForceUpdate(entity, 9); + } +} + +void sub_08063C74(void) { + Entity* entity = DeepFindEntityByID(7, 0x14); + if (entity != NULL) { + CreateSpeechBubbleExclamationMark(entity, 8, 0xffffffe8); + } +} + +void sub_08063C90(Entity* this) { + ShowNPCDialogue(this, &gUnk_0810CE04[gSave.unk8]); +} + +void sub_08063CAC(Entity* this) { + this->field_0x68.HALF.LO = sub_0801E99C(this); + sub_08078784(this, this->field_0x68.HALF.LO); +} + +void Pina_Fusion(Entity* this) { + if (this->action == 0) { + this->action += 1; + this->spriteSettings.b.draw = 1; + this->y.HALF.HI -= 4; + InitAnimationForceUpdate(this, 2); + } else { + UpdateAnimationSingleFrame(this); + } +} diff --git a/src/npc/postman.c b/src/npc/postman.c index 34694306..40a482e4 100644 --- a/src/npc/postman.c +++ b/src/npc/postman.c @@ -8,6 +8,7 @@ #include "structures.h" #include "save.h" #include "script.h" +#include "flags.h" extern void sub_08060528(Entity*); extern void sub_0806EE04(Entity*, void*, u32); @@ -202,3 +203,29 @@ void sub_0806075C(Entity* this) { this->field_0x68.HALF.LO = 0xb; this->field_0x68.HALF.HI = 0xff; } + +ASM_FUNC("asm/non_matching/postman/sub_0806076C.inc", void sub_0806076C(Entity* this, ScriptExecutionContext* context)) + +ASM_FUNC("asm/non_matching/postman/sub_080608E4.inc", void sub_080608E4(Entity* this, ScriptExecutionContext* context)) + +void Postman_Fusion(Entity* this) { + if (this->action == 0) { + this->action += 1; + this->spriteSettings.b.draw = 1; + InitAnimationForceUpdate(this, 2); + } else { + UpdateAnimationSingleFrame(this); + } +} + +void CreateZeldaFollower(void) { + Entity* npc; + if (CheckGlobalFlag(0x1c) != 0) { + npc = CreateNPC(0x2e, 0, 0); + if (npc != NULL) { + CopyPosition(&gPlayerEntity, npc); + npc->flags |= 0x20; + npc->animationState = GetAnimationState(npc); + } + } +} diff --git a/src/npc/rem.c b/src/npc/rem.c index de3e0fb5..eec31fe9 100644 --- a/src/npc/rem.c +++ b/src/npc/rem.c @@ -3,6 +3,9 @@ #include "script.h" #include "audio.h" #include "functions.h" +#include "random.h" +#include "flags.h" +#include "textbox.h" extern void sub_0806A8C8(Entity*); @@ -11,6 +14,17 @@ extern void (*gUnk_08112278[])(Entity*); extern void script_08012F0C; +extern void sub_08078850(Entity*, u32, u32, u32*); +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 Rem(Entity* this) { gUnk_08112260[this->type](this); } @@ -47,3 +61,263 @@ void sub_0806A3D8(Entity* this) { *(ScriptExecutionContext**)&this->cutsceneBeh = uVar1; sub_0807DD94(this, NULL); } + +void sub_0806A410(Entity* this) { + switch (this->subAction) { + case 0: + if (--this->actionDelay == 0) { + this->subAction = this->subAction + 1; + InitializeAnimation(this, 8); + } + break; + case 1: + if (((this->frames.all & 0x80) != 0)) { + sub_0806A9B0(this, *(ScriptExecutionContext**)&this->cutsceneBeh); + } + break; + } +} + +void sub_0806A458(Entity* this) { + switch (this->subAction) { + case 0: + if (--this->actionDelay == 0) { + this->subAction += 1; + } + break; + case 1: + if ((this->frames.all & 0x80) != 0) { + this->subAction = 2; + InitializeAnimation(this, 10); + ClearLocalFlag(0x62); + } + break; + case 2: + if (((this->frames.all & 0x80) != 0)) { + this->action = 1; + this->subAction = 0; + this->actionDelay = 0x3c; + InitializeAnimation(this, 2); + } + break; + } +} + +void sub_0806A4CC(Entity* this) { + switch (this->subAction) { + case 0: + if ((this->frames.all & 0x80) != 0) { + if ((u8)(this->animIndex - 8) < 2) { + this->subAction = 1; + this->field_0x6a.HWORD = 1; + InitializeAnimation(this, 10); + } else { + this->subAction = 2; + this->field_0x6a.HWORD = 0; + InitializeAnimation(this, GetAnimationState(this)); + } + break; + case 1: + if ((this->frames.all & 0x80) != 0) { + this->subAction = 2; + InitializeAnimation(this, GetAnimationState(this)); + } + break; + default: + this->actionDelay = 0xb4; + break; + } + } +} + +void sub_0806A550(Entity* this) { + if (this->subAction == 0) { + this->subAction = 1; + InitializeAnimation(this, 0xc); + } else { + if (this->frames.all == 1) { + this->frames.all = 0; + sub_08080964(8, 2); + gActiveScriptInfo.unk_00 |= 0x100; + SoundReq(SFX_11B); + } + if ((this->frames.all & 0x80) != 0) { + this->action = 5; + this->subAction = 0; + InitializeAnimation(this, 0xd); + sub_0806A914(this); + } + } +} + +void nullsub_503(void) { +} + +void sub_0806A5C0(Entity* this) { + GetNextFrame(this); + if ((this->frames.all & 0x80) != 0) { + InitializeAnimation(this, (Random() & 3) + 4); + } +} + +void sub_0806A5E8(Entity* this) { + if (this->action == 0) { + this->action = 1; + InitializeAnimation(this, 0x10); + this->actionDelay = (Random() & 0x3f) + 0x3c; + } + this->actionDelay -= 1; + if (this->actionDelay == 0) { + this->actionDelay = (Random() & 0x3f) + 0x78; + SoundReq(SFX_REM_SLEEP); + } + GetNextFrame(this); +} + +void sub_0806A630(Entity* this) { + if (this->action == 0) { + this->action = 1; + InitializeAnimation(this, 0x12); + } + if ((gActiveScriptInfo.unk_00 & 0x100) != 0) { + GetNextFrame(this); + } + if (this->frames.all == 1) { + this->frames.all = 0; + SoundReq(SFX_SECRET); + } +} + +ASM_FUNC("asm/non_matching/rem/sub_0806A674.inc", void sub_0806A674(Entity* this)) + +void sub_0806A830(Entity* this) { + Entity* npc; + + if (this->action == 0) { + this->action = 1; + InitializeAnimation(this, 0x14); + sub_0805E3A0(this, 2); + } + if ((gActiveScriptInfo.unk_00 & 0x200) != 0) { + DeleteThisEntity(); + } + GetNextFrame(this); + if (this->frames.all == 1) { + this->frames.all = 0; + npc = CreateNPC(0x37, 5, 0); + if (npc != NULL) { + PositionEntityOnTop(this, npc); + } + } +} + +void sub_0806A890(Entity* this) { + if (this->action == 0) { + this->action = 1; + InitializeAnimation(this, 0x15); + sub_0805E3A0(this, 2); + } + GetNextFrame(this); + if ((this->frames.all & 0x80) != 0) { + DeleteThisEntity(); + } +} + +void sub_0806A8C8(Entity* this) { + Entity* entity; + if ((CheckLocalFlag(0x60) == 0) && (entity = CreateNPC(0x37, 2, 0), entity != NULL)) { + CopyPosition(this, entity); + entity->parent = this; + } + entity = CreateNPC(0x37, 3, 0); + if (entity != NULL) { + CopyPosition(this, entity); + entity->y.HALF.HI += 2; + entity->parent = this; + } +} + +void sub_0806A914(Entity* this) { + Entity* npc = CreateNPC(0x37, 1, 0); + if (npc != NULL) { + CopyPosition(this, npc); + ResolveEntityOnTop(this, npc); + } +} + +void sub_0806A93C(Entity* this) { + sub_08078778(this); + sub_08078850(this, 0, 0, &gUnk_0811229C); +} + +void sub_0806A958(Entity* this) { + if (this->action != 5) { + gActiveScriptInfo.commandSize = 0; + } +} + +void sub_0806A96C(Entity* this, ScriptExecutionContext* context) { + context->condition = 0; + if (this->interactType != 0) { + if (this->action != 3) { + this->action = 3; + this->subAction = 0; + } else { + if (this->subAction > 1) { + this->interactType = 0; + context->condition = 1; + gActiveScriptInfo.flags |= 1; + } + } + } +} + +void sub_0806A9B0(Entity* this, ScriptExecutionContext* context) { + this->action = 2; + this->subAction = 0; + this->actionDelay = gUnk_081122A0[Random() & 7]; + this->field_0x80.HWORD = 9; + InitializeAnimation(this, 9); + SetLocalFlag(0x62); +} + +void sub_0806A9E8(Entity* this) { + Entity* npc = CreateNPC(0x37, 4, 0); + if (npc != NULL) { + CopyPosition(this, npc); + sub_0806FAD8(this, npc); + } +} + +void sub_0806AA10(Entity* this) { + sub_0806A914(this); +} + +void sub_0806AA18(Entity* this) { + u32 index; + if (this->field_0x6a.HWORD != 0) { + index = 0x4408; + } else if ((gScreenTransition.frameCount & 1U) == 0) { + index = 0x4407; + } else { + index = 0x440d; + } + TextboxNoOverlap(index, this); +} + +ASM_FUNC("asm/non_matching/rem/sub_0806AA50.inc", void sub_0806AA50(Entity* this, ScriptExecutionContext* context)) + +void sub_0806AB74(Entity* this) { + gRoomVars.filler[3] = 1; + if ((s32)(this->y.HALF.HI - (u32)gRoomControls.roomOriginY) < 0xa8) { + this->y.HALF.HI = gRoomControls.roomOriginY + 0xa8; + } +} + +void sub_0806AB9C(Entity* this, ScriptExecutionContext* context) { + Entity* entity = FindEntity(7, 0x37, 7, 1, 0); + if (entity != NULL) { + DeleteEntity(entity); + } + sub_0807F950(this, context); +} diff --git a/src/npc/sittingPerson.c b/src/npc/sittingPerson.c new file mode 100644 index 00000000..34f8eaff --- /dev/null +++ b/src/npc/sittingPerson.c @@ -0,0 +1,95 @@ +#include "entity.h" +#include "script.h" +#include "npc.h" +#include "functions.h" +#include "save.h" +#include "random.h" + +extern void (*gUnk_0810CBD8[])(Entity*); + +extern Dialog gUnk_0810CC08[]; + +extern SpriteLoadData gUnk_0810CB78[]; +extern void sub_08096208(Entity*, u32); + +void SittingPerson(Entity* this) { + gUnk_0810CBD8[this->action](this); +} + +ASM_FUNC("asm/non_matching/sittingPerson/sub_08063758.inc", void sub_08063758(Entity* this)) + +void sub_080637B8(Entity* this) { + u32 tmp; + + if (this->interactType == 2) { + this->action = 2; + this->interactType = 0; + this->field_0x68.HALF.HI = this->animIndex; + tmp = sub_0806F5A4(GetFacingDirection(this, &gPlayerEntity)); + if ((this->spriteSettings.raw * 0x2000000) < 0) { + tmp += 4; + } + InitializeAnimation(this, tmp); + sub_0806F118(this); + } else { + ExecuteScriptForEntity(this, NULL); + HandleEntity0x82Actions(this); + if (this->frameDuration == 0xfe) { + this->frameDuration = (Random() & 0x1f) + 0x1e; + } + GetNextFrame(this); + } +} + +void sub_08063830(Entity* this) { + if (UpdateFuseInteraction(this) != 0) { + this->action = 1; + InitializeAnimation(this, this->field_0x68.HALF.HI); + } +} + +ASM_FUNC("asm/non_matching/sittingPerson/sub_08063850.inc", void sub_08063850(Entity* this)) + +void sub_08063874(Entity* this) { + this->animationState = this->actionDelay; +} + +ASM_FUNC("asm/non_matching/sittingPerson/sub_0806387C.inc", void sub_0806387C(Entity* this)) + +ASM_FUNC("asm/non_matching/sittingPerson/sub_0806390C.inc", void sub_0806390C(Entity* this)) + +void sub_08063944(Entity* this, ScriptExecutionContext* context) { + s32 tmp; + + context->condition = 0; + tmp = gSave.unk8 - 2; + if (tmp < 0) { + tmp = 0; + } + ShowNPCDialogue(this, gUnk_0810CC08 + this->type2 * 8 + tmp); +} + +ASM_FUNC("asm/non_matching/sittingPerson/SittingPerson_Head.inc", void SittingPerson_Head(Entity* this)) + +void sub_080639D0(Entity* this) { + this->field_0x68.HALF.LO = sub_0801E99C(this); + sub_08078784(this, this->field_0x68.HALF.LO); +} + +void SittingPerson_Fusion(Entity* this) { + if (this->action == 0) { + if (LoadExtraSpriteData(this, &gUnk_0810CB78[this->type * 3]) != 0) { + this->action += 1; + this->spriteSettings.b.draw = 1; + this->spriteSettings.b.flipX = 0; + this->y.HALF.HI -= 4; + InitializeAnimation(this, 2); + sub_08096208(this, this->type); + } + } else { + if (this->frameDuration == 0xfe) { + this->frameDuration = (Random() & 0x1f) + 0x1e; + } + GetNextFrame(this); + } +} diff --git a/src/npc/stockwell.c b/src/npc/stockwell.c new file mode 100644 index 00000000..17138947 --- /dev/null +++ b/src/npc/stockwell.c @@ -0,0 +1,156 @@ +#include "entity.h" +#include "script.h" +#include "room.h" +#include "textbox.h" +#include "functions.h" + +extern void CreateSpeechBubbleQuestionMark(Entity*, u32, u32); +extern void CreateSpeechBubbleExclamationMark(Entity*, u32, u32); + +extern void (*const gUnk_0810FDC8[])(Entity*); + +extern void (*const gUnk_0810FDA4[])(Entity*); + +extern bool32 sub_08056338(void); + +extern void sub_08078850(Entity*, u32, u8, u32*); +extern u32 gUnk_0810FDA0; +extern u16 script_080142B0; + +void Stockwell(Entity* this) { + gUnk_0810FDA4[this->action](this); + ExecuteScript(this, *(ScriptExecutionContext**)&this->cutsceneBeh); + sub_0806ED78(this); +} + +void sub_08065080(Entity* this) { + ScriptExecutionContext* context; + + this->action = 1; + this->spriteSettings.b.draw = 1; + sub_0805E3A0(this, 2); + InitializeAnimation(this, 4); + sub_08078778(this); + sub_08078850(this, 0, 0, &gUnk_0810FDA0); + context = StartCutscene(this, &script_080142B0); + *(ScriptExecutionContext**)&this->cutsceneBeh = context; +} + +ASM_FUNC("asm/non_matching/stockwell/sub_080650CC.inc", void sub_080650CC(Entity* this)) + +void sub_080651AC(Entity* this) { + GetNextFrame(this); + if ((gTextBox.doTextBox & 0x7f) == 0) { + this->interactType = gTextBox.doTextBox & 0x7f; + this->action = 1; + InitializeAnimation(this, 4); + } +} + +void sub_080651D8(Entity* this) { + GetNextFrame(this); + gUnk_0810FDC8[this->subAction](this); +} + +void sub_080651F8(Entity* this) { + if ((this->frames.all & 0x20) == 0) { + this->subAction = 1; + this->actionDelay = 0x3c; + InitializeAnimation(this, 1); + CreateSpeechBubbleExclamationMark(this, 8, 0xffffffe8); + sub_08078A90(1); + } +} + +void sub_0806522C(Entity* this) { + if (--this->actionDelay == 0) { + ++this->subAction; + TextboxNoOverlap(0x2c16, this); + } +} + +void sub_08065250(Entity* this) { + switch (sub_08056338()) { + case 0: + this->subAction += 1; + this->actionDelay = 0x1e; + this->field_0xf = 0; + CreateSpeechBubbleExclamationMark(this, 8, 0xffffffe8); + break; + case 1: + this->subAction = 7; + this->actionDelay = 0; + this->field_0xf = 2; + break; + } +} + +void sub_0806528C(Entity* this) { + if (--this->actionDelay == 0) { + ++this->subAction; + TextboxNoOverlap(0x2c18, this); + } +} + +void sub_080652B0(Entity* this) { + if ((gTextBox.doTextBox & 0x7f) == 0) { + this->subAction += 1; + this->actionDelay = 10; + gRoomVars.greatFairyState = this->field_0xf; + CreateItemEntity(0x36, 0, 0); + } +} + +void sub_080652E4(Entity* this) { + if (this->actionDelay != 0) { + this->actionDelay -= 1; + } else { + if (gPlayerEntity.action != 8) { + this->subAction += 1; + TextboxNoOverlap(0x2c19, this); + } + } +} + +void sub_08065314(Entity* this) { + if ((gTextBox.doTextBox & 0x7f) == 0) { + this->subAction += 1; + MenuFadeIn(3, 3); + } +} + +void sub_08065338(Entity* this) { + if ((gTextBox.doTextBox & 0x7f) == 0) { + this->action = 1; + this->subAction = gTextBox.doTextBox & 0x7f; + gRoomVars.greatFairyState = this->field_0xf; + InitializeAnimation(this, 4); + } +} + +void sub_08065368(Entity* this) { + GetNextFrame(this); +} + +ASM_FUNC("asm/non_matching/stockwell/sub_08065370.inc", + void sub_08065370(Entity* this, ScriptExecutionContext* context)) + +void sub_080654DC(Entity* this) { + CreateSpeechBubbleQuestionMark(this, 8, 0xffffffe8); +} + +void sub_080654EC(Entity* this) { + CreateSpeechBubbleExclamationMark(this, 8, 0xffffffe8); +} + +void sub_080654FC(Entity* this) { + if ((this->frames.all & 0x20) != 0) { + gActiveScriptInfo.commandSize = 0; + } else { + gActiveScriptInfo.flags |= 1; + } +} + +void sub_08065528(Entity* this, ScriptExecutionContext* context) { + gRoomVars.greatFairyState = context->intVariable; +} diff --git a/src/npc/sturgeon.c b/src/npc/sturgeon.c new file mode 100644 index 00000000..7f2ce06b --- /dev/null +++ b/src/npc/sturgeon.c @@ -0,0 +1,128 @@ +#include "entity.h" +#include "functions.h" +#include "npc.h" +#include "textbox.h" +#include "createObject.h" +#include "flags.h" +#include "script.h" + +extern u16 gUnk_0810FA54[]; + +extern SpriteLoadData gUnk_0810FA38; + +extern void sub_0806EE04(Entity*, void*, u32); +extern u32 gUnk_0810FA5A; +void sub_08064CC0(Entity* this); + +extern void (*const gUnk_0810FA44[])(Entity*); +void sub_08064C9C(Entity* this); + +NONMATCH("asm/non_matching/sturgeon/Sturgeon.inc", void Sturgeon(Entity* this)) { + u8 uVar2; + + if ((this->flags & 2) == 0) { + gUnk_0810FA44[this->action](this); + sub_0806ED78(this); + } else { + uVar2 = this->action; + if (uVar2 == 0) { + if (LoadExtraSpriteData(this, &gUnk_0810FA38) != 0) { + this->action = 1; + this->actionDelay = 0; + sub_0807DD50(this); + } + } else { + if ((uVar2 & 0x80) != 0) { + if (UpdateFuseInteraction(this) != 0) { + this->action = 1; + } + } else { + if (this->interactType == 2) { + this->action = 0xff; + this->interactType = uVar2 & 0x80; + InitAnimationForceUpdate(this, sub_0806F5A4(GetFacingDirection(this, &gPlayerEntity))); + sub_0806F118(this); + } else { + sub_0807DD94(this, NULL); + sub_08064C9C(this); + } + } + } + } +} +END_NONMATCH + +void sub_08064B44(Entity* this) { + if (LoadExtraSpriteData(this, &gUnk_0810FA38) != 0) { + InitializeAnimation(this, 2); + sub_0806EE04(this, &gUnk_0810FA5A, 0); + sub_08064CC0(this); + this->action = 1; + this->subAction = 0; + this->spriteSettings.b.draw = 1; + } +} + +ASM_FUNC("asm/non_matching/sturgeon/sub_08064B88.inc", void sub_08064B88(Entity* this)) + +void sub_08064C2C(Entity* this) { + if ((gTextBox.doTextBox & 0x7f) == 0) { + this->action = 1; + InitializeAnimation(this, (u32)this->field_0xf); + } +} + +void sub_08064C50(Entity* this) { + if (UpdateFuseInteraction(this) != 0) { + this->action = 1; + InitializeAnimation(this, this->field_0xf); + } +} + +void Sturgeon_Head(Entity* this) { + SetExtraSpriteFrame(this, 0, (u8)this->frames.all & 0x3f); + SetExtraSpriteFrame(this, 1, (u32)this->frameIndex); + SetSpriteSubEntryOffsetData1(this, 1, 0); + sub_0807000C(this); +} + +void sub_08064C9C(Entity* this) { + if ((this->actionDelay != 0) && ((gScreenTransition.frameCount & 3U) == 0)) { + CreateDust(this); + } +} + +void sub_08064CC0(Entity* this) { + this->field_0x68.HALF.LO = sub_0801E99C(this); + sub_08078784(this, this->field_0x68.HALF.LO); +} + +void sub_08064CD8(Entity* this) { + u32 flag; + u32 tmp = 2; + if (GetInventoryValue(0x46) == 0) { + flag = CheckLocalFlag(0x73); + tmp = BOOLCAST(flag); + } + TextboxNoOverlap(gUnk_0810FA54[tmp], this); +} + +void sub_08064D08(Entity* this) { + this->actionDelay = 1; +} + +void sub_08064D10(Entity* this) { + this->actionDelay = 0; +} + +void Sturgeon_Fusion(Entity* this) { + if (this->action == 0) { + if (LoadExtraSpriteData(this, &gUnk_0810FA38) != 0) { + this->action += 1; + this->spriteSettings.b.draw = 1; + InitializeAnimation(this, 6); + } + } else { + GetNextFrame(this); + } +} diff --git a/src/npc/syrup.c b/src/npc/syrup.c index 5e71f5b4..f201422c 100644 --- a/src/npc/syrup.c +++ b/src/npc/syrup.c @@ -60,3 +60,5 @@ NONMATCH("asm/non_matching/syrup/sub_0806A26C.inc", void sub_0806A26C(Entity* th } } END_NONMATCH + +ASM_FUNC("asm/non_matching/syrup/Syrup_Head.inc", void Syrup_Head(Entity* this)) diff --git a/src/npc/tingleSiblings.c b/src/npc/tingleSiblings.c index b3d56ae8..f5bcaf5b 100644 --- a/src/npc/tingleSiblings.c +++ b/src/npc/tingleSiblings.c @@ -2,6 +2,8 @@ #include "entity.h" #include "npc.h" #include "textbox.h" +#include "script.h" +#include "functions.h" extern void sub_08064DE4(Entity*); extern void sub_08064D78(Entity*); @@ -79,3 +81,43 @@ void sub_08064DE4(Entity* this) { } } }*/ +ASM_FUNC("asm/non_matching/tingleSiblings/sub_08064DE4.inc", void sub_08064DE4(Entity* this)) + +void sub_08064EA4(Entity* this) { + this->field_0x68.HALF.LO = sub_0801E99C(this); + switch (this->type) { + case 0: + if ((CheckKinstoneFused(0x59) != 0) && (GetInventoryValue(0xc) == 0)) { + this->field_0x68.HALF.LO = 0; + } + break; + case 3: + if ((CheckKinstoneFused(0x5a) != 0) && (GetInventoryValue(0xc) == 0)) { + this->field_0x68.HALF.LO = 0; + } + break; + default: + break; + } + sub_08078784(this, this->field_0x68.HALF.LO); +} + +ASM_FUNC("asm/non_matching/tingleSiblings/sub_08064EE8.inc", void sub_08064EE8(Entity* this)) + +ASM_FUNC("asm/non_matching/tingleSiblings/sub_08064F28.inc", + void sub_08064F28(Entity* this, ScriptExecutionContext* context)) + +void TingleSiblings_Fusion(Entity* this) { + u32 tmp; + if (this->action == 0) { + this->action += 1; + this->spriteSettings.b.draw = 1; + tmp = 6; + if (this->type == 0) { + tmp = 10; + } + InitAnimationForceUpdate(this, tmp); + } else { + sub_08064EE8(this); + } +} diff --git a/src/npc/windTribespeople.c b/src/npc/windTribespeople.c index 65968f30..677ce4f3 100644 --- a/src/npc/windTribespeople.c +++ b/src/npc/windTribespeople.c @@ -18,6 +18,22 @@ extern u16 script_08014A80; extern Dialog gUnk_08113ABC[]; extern u16 gUnk_08113B0C[]; +extern Dialog gUnk_08113B28; + +extern Dialog gUnk_08113B30; + +extern u16 gUnk_08113B12[]; + +extern u16 gUnk_08113B22[]; + +extern u16 gUnk_08113B1E[]; + +extern u16 gUnk_08113B16[]; + +extern u8 gUnk_08113B38[]; + +extern SpriteLoadData gUnk_08113A1C[]; + void WindTribespeople(Entity* this) { gUnk_08113A7C[this->action](this); } @@ -126,3 +142,77 @@ void sub_0806C944(Entity* this) { } TextboxNoOverlap(gUnk_08113B0C[iVar2], this); } + +void sub_0806C978(Entity* this) { + u32 flag; + u32 flagAsBool; + flag = CheckGlobalFlag(0x58); + flagAsBool = BOOLCAST(flag); + TextboxNoOverlap(gUnk_08113B12[flagAsBool], this); +} + +void sub_0806C99C(Entity* this) { + s32 flag; + u32 flagAsBool; + + flag = CheckGlobalFlag(0x58); + flagAsBool = BOOLCAST(flag) & 2; + if (CheckLocalFlag(99) != 0) { + flagAsBool += 1; + } + TextboxNoOverlap(gUnk_08113B16[flagAsBool], this); +} + +void sub_0806C9D0(Entity* this) { + u32 tmp = 0; + if (CheckLocalFlag(100) == 0) { + tmp = 1; + } + TextboxNoOverlap(gUnk_08113B1E[tmp], this); +} + +void sub_0806C9F8(Entity* this) { + u32 flag; + u32 flagAsBool; + flag = CheckGlobalFlag(0x58); + flagAsBool = BOOLCAST(flag); + TextboxNoOverlap(gUnk_08113B22[flagAsBool], this); +} + +void sub_0806CA1C(Entity* this) { + TextboxNoOverlap(0x251b, this); +} + +void sub_0806CA2C(Entity* this) { + TextboxNoOverlap(0x2527, this); +} + +void sub_0806CA3C(Entity* this) { + ShowNPCDialogue(this, &gUnk_08113B28); +} + +void sub_0806CA4C(Entity* this) { + ShowNPCDialogue(this, &gUnk_08113B30); +} + +void sub_0806CA5C(Entity* this, ScriptExecutionContext* context) { + context->wait = gUnk_08113B38[context->unk_18++]; + if (this->type2 == 10) { + EnqueueSFX(0xe8); + } + if (context->wait != 0) { + gActiveScriptInfo.commandSize = 0; + } +} + +void WindTribespeople_Fusion(Entity* this) { + if (this->action == 0) { + if (LoadExtraSpriteData(this, &gUnk_08113A1C[this->type * 4]) != 0) { + this->action += 1; + this->spriteSettings.b.draw = 1; + InitializeAnimation(this, 6); + } + } else { + GetNextFrame(this); + } +} diff --git a/src/npc/zeldaFollower.c b/src/npc/zeldaFollower.c index 6f5866b2..649abd41 100644 --- a/src/npc/zeldaFollower.c +++ b/src/npc/zeldaFollower.c @@ -1,9 +1,13 @@ #include "global.h" #include "entity.h" #include "functions.h" +#include "script.h" +#include "utils.h" extern void sub_08068318(Entity*); -extern void sub_0806854C(Entity*, u32); +extern void sub_0806854C(Entity*, u32*); + +void sub_08068578(Entity* this); void ZeldaFollower(Entity* this) { if (this->action == 0) { @@ -14,7 +18,7 @@ void ZeldaFollower(Entity* this) { this->field_0x68.HALF.HI = 0; sub_0805E3A0(this, 2); InitAnimationForceUpdate(this, 0); - sub_0806854C(this, 0); + sub_0806854C(this, NULL); } if ((s8)this->field_0x68.HALF.LO != 0) { sub_08068318(this); @@ -22,3 +26,35 @@ void ZeldaFollower(Entity* this) { this->spriteSettings.b.draw = FALSE; } } + +ASM_FUNC("asm/non_matching/zeldaFollower/sub_08068318.inc", void sub_08068318(Entity* this)) + +void sub_0806854C(Entity* this, u32* none) { + this->myHeap = zMalloc(0xa0); + if (this->myHeap != NULL) { + this->field_0x68.HALF.LO = 1; + sub_080788E0(this); + this->hitbox = NULL; + sub_08068578(this); + } +} + +ASM_FUNC("asm/non_matching/zeldaFollower/sub_08068578.inc", void sub_08068578(Entity* this)) + +void sub_08068680(Entity* this, Entity* entity) { + entity->field_0x68.HALF.LO = 0; + entity->spriteSettings.b.draw = 0; +} + +void sub_08068694(Entity* this, Entity* entity) { + entity->field_0x68.HALF.LO = 1; + entity->spriteSettings.b.draw = 1; + entity->animationState = this->animationState; + sub_08068578(entity); + InitAnimationForceUpdate(entity, entity->animationState / 2); +} + +void sub_080686C4(Entity* this, Entity* entity) { + entity->y.HALF.HI -= 0x10; + sub_08068578(entity); +}