This commit is contained in:
theo 2020-06-09 01:47:11 -07:00
parent 5ed687df73
commit 9bf674b087
15 changed files with 11017 additions and 11043 deletions

View File

@ -68,7 +68,7 @@ _08001230:
beq _0800123E
strb r1, [r0, #0xe]
movs r1, #4
ldr r3, _0800135C @ =sub_08004276
ldr r3, _0800135C @ =UpdateSpriteAnimation
bx r3
_0800123E:
ldr r3, _08001360 @ =sub_080043B4
@ -238,7 +238,7 @@ _08001352:
bx lr
.align 2, 0
_08001358: .4byte gEnemyFunctions
_0800135C: .4byte sub_08004276
_0800135C: .4byte UpdateSpriteAnimation
_08001360: .4byte sub_080043B4
_08001364: .4byte 0x00001800
_08001368: .4byte gUnk_080012C8

View File

@ -431,8 +431,8 @@ UpdateSprite: @ 0x08004260
sub_08004274: @ 0x08004274
movs r1, #1
non_word_aligned_thumb_func_start sub_08004276
sub_08004276: @ 0x08004276
non_word_aligned_thumb_func_start UpdateSpriteAnimation
UpdateSpriteAnimation: @ 0x08004276
movs r3, #0x59
ldrb r2, [r0, r3]
subs r2, r2, r1
@ -478,7 +478,7 @@ sub_080042B8: @ 0x080042B8
non_word_aligned_thumb_func_start sub_080042BA
sub_080042BA: @ 0x080042BA
push {lr}
bl sub_08004276
bl UpdateSpriteAnimation
_080042C0:
pop {r1}
mov lr, r1

View File

@ -97,8 +97,8 @@ UpdateSprite: @ 0x08004260
sub_08004274: @ 0x08004274
movs r1, #1
non_word_aligned_thumb_func_start sub_08004276
sub_08004276: @ 0x08004276
non_word_aligned_thumb_func_start UpdateSpriteAnimation
UpdateSpriteAnimation: @ 0x08004276
movs r3, #0x59
ldrb r2, [r0, r3]
subs r2, r2, r1
@ -144,7 +144,7 @@ sub_080042B8: @ 0x080042B8
non_word_aligned_thumb_func_start sub_080042BA
sub_080042BA: @ 0x080042BA
push {lr}
bl sub_08004276
bl UpdateSpriteAnimation
_080042C0:
pop {r1}
mov lr, r1

File diff suppressed because it is too large Load Diff

10563
asm/code_0801EE18.s Normal file

File diff suppressed because it is too large Load Diff

View File

@ -8802,7 +8802,7 @@ sub_0802805C: @ 0x0802805C
push {r4, r5, lr}
adds r5, r0, #0
movs r1, #2
bl sub_08004276
bl UpdateSpriteAnimation
bl sub_0807953C
cmp r0, #0
beq _0802807E

View File

@ -769,7 +769,7 @@ sub_080293B4: @ 0x080293B4
adds r1, r1, r3
ldrb r2, [r1]
movs r1, #0xff
bl sub_0804A7E0
bl CreateDeathFx
pop {pc}
.align 2, 0
_080293D4: .4byte gUnk_080CCC34

View File

@ -1490,7 +1490,7 @@ sub_0802BD10: @ 0x0802BD10
ands r1, r2
strb r1, [r0, #0x10]
movs r1, #2
bl sub_08004276
bl UpdateSpriteAnimation
pop {pc}
.align 2, 0
@ -1632,7 +1632,7 @@ sub_0802BE18: @ 0x0802BE18
push {r4, lr}
adds r4, r0, #0
movs r1, #2
bl sub_08004276
bl UpdateSpriteAnimation
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
@ -8613,7 +8613,7 @@ sub_0802F284: @ 0x0802F284
bls _0802F298
adds r0, r4, #0
movs r1, #2
bl sub_08004276
bl UpdateSpriteAnimation
b _0802F29E
_0802F298:
adds r0, r4, #0
@ -10809,7 +10809,7 @@ sub_08030338: @ 0x08030338
_0803034C:
adds r0, r4, #0
movs r1, #3
bl sub_08004276
bl UpdateSpriteAnimation
adds r0, r4, #0
adds r0, #0x84
ldr r0, [r0]
@ -13287,7 +13287,7 @@ sub_080315BC: @ 0x080315BC
strb r0, [r4, #0xe]
adds r0, r4, #0
movs r1, #2
bl sub_08004276
bl UpdateSpriteAnimation
b _080315FC
_080315D4:
adds r0, r4, #0
@ -18505,7 +18505,7 @@ sub_08033C94: @ 0x08033C94
push {r4, lr}
adds r4, r0, #0
movs r1, #3
bl sub_08004276
bl UpdateSpriteAnimation
adds r1, r4, #0
adds r1, #0x79
ldrb r0, [r1]

View File

@ -8116,7 +8116,7 @@ _08037CD6:
adds r0, r4, #0
movs r1, #0xff
movs r2, #0x58
bl sub_0804A7E0
bl CreateDeathFx
pop {r4, pc}
.align 2, 0
@ -8158,7 +8158,7 @@ _08037D1C:
_08037D26:
adds r0, r4, #0
movs r1, #2
bl sub_08004276
bl UpdateSpriteAnimation
adds r0, r4, #0
bl sub_080AEF88
cmp r0, #0
@ -8183,7 +8183,7 @@ sub_08037D54: @ 0x08037D54
push {r4, lr}
adds r4, r0, #0
movs r1, #2
bl sub_08004276
bl UpdateSpriteAnimation
adds r2, r4, #0
adds r2, #0x5a
ldrb r1, [r2]
@ -8457,7 +8457,7 @@ _08037F6E:
_08037F78:
adds r0, r4, #0
movs r1, #0xff
bl sub_0804A7E0
bl CreateDeathFx
pop {r4, pc}
.align 2, 0
@ -8513,7 +8513,7 @@ sub_08037FE0: @ 0x08037FE0
push {r4, lr}
adds r4, r0, #0
movs r1, #2
bl sub_08004276
bl UpdateSpriteAnimation
ldrb r0, [r4, #0xe]
adds r2, r0, #0
cmp r2, #0
@ -8567,7 +8567,7 @@ sub_08038048: @ 0x08038048
push {r4, r5, r6, lr}
adds r4, r0, #0
movs r1, #2
bl sub_08004276
bl UpdateSpriteAnimation
adds r0, r4, #0
bl sub_080AEF88
movs r0, #0x36
@ -8669,7 +8669,7 @@ sub_08038110: @ 0x08038110
push {r4, lr}
adds r4, r0, #0
movs r1, #2
bl sub_08004276
bl UpdateSpriteAnimation
adds r0, r4, #0
adds r0, #0x5a
ldrb r1, [r0]
@ -8829,7 +8829,7 @@ _0803824A:
adds r0, r4, #0
movs r1, #0xff
movs r2, #0x58
bl sub_0804A7E0
bl CreateDeathFx
pop {r4, pc}
.align 2, 0
@ -8887,7 +8887,7 @@ _080382B8: .4byte gLinkEntity
_080382BC:
adds r0, r4, #0
movs r1, #2
bl sub_08004276
bl UpdateSpriteAnimation
adds r0, r4, #0
bl sub_080AEF88
cmp r0, #0
@ -8929,7 +8929,7 @@ sub_08038304: @ 0x08038304
push {r4, r5, r6, lr}
adds r4, r0, #0
movs r1, #2
bl sub_08004276
bl UpdateSpriteAnimation
adds r0, r4, #0
bl sub_080AEF88
cmp r0, #0
@ -11182,7 +11182,7 @@ sub_08039418: @ 0x08039418
adds r0, r1, #0
movs r1, #0xf3
movs r2, #0
bl sub_0804A7E0
bl CreateDeathFx
b _08039434
_0803942E:
adds r0, r1, #0
@ -22035,7 +22035,7 @@ sub_0803E570: @ 0x0803E570
push {lr}
movs r1, #0xff
movs r2, #0x57
bl sub_0804A7E0
bl CreateDeathFx
pop {pc}
thumb_func_start nullsub_20
@ -22824,7 +22824,7 @@ sub_0803EB34: @ 0x0803EB34
push {lr}
movs r1, #0xff
movs r2, #0x57
bl sub_0804A7E0
bl CreateDeathFx
pop {pc}
thumb_func_start nullsub_21
@ -44329,7 +44329,7 @@ _08048C6C:
bl UpdateSprite
adds r0, r4, #0
movs r1, #7
bl sub_08004276
bl UpdateSpriteAnimation
adds r1, r6, #0
ldrb r4, [r4, #0xa]
lsls r1, r4
@ -44357,7 +44357,7 @@ _08048CBC:
movs r1, #0x1c
ands r1, r0
adds r0, r4, #0
bl sub_08004276
bl UpdateSpriteAnimation
_08048CE4:
adds r0, r4, #0
bl sub_08004274
@ -47976,11 +47976,11 @@ sub_0804A7D4: @ 0x0804A7D4
push {lr}
ldrb r1, [r0, #9]
movs r2, #0
bl sub_0804A7E0
bl CreateDeathFx
pop {pc}
thumb_func_start sub_0804A7E0
sub_0804A7E0: @ 0x0804A7E0
thumb_func_start CreateDeathFx
CreateDeathFx: @ 0x0804A7E0
push {r4, r5, r6, r7, lr}
mov r7, sl
mov r6, sb

View File

@ -4732,7 +4732,7 @@ sub_08089848: @ 0x08089848
ands r1, r0
adds r1, #1
adds r0, r4, #0
bl sub_08004276
bl UpdateSpriteAnimation
pop {r4, pc}
.align 2, 0
_08089870: .4byte gUnk_08120D90

246
asm/octorok.s Normal file
View File

@ -0,0 +1,246 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start sub_0801EC2C
sub_0801EC2C: @ 0x0801EC2C
push {r4, r5, lr}
adds r5, r0, #0
bl sub_080AEF88
adds r0, r5, #0
bl sub_08004274
ldrb r0, [r5, #0xe]
subs r0, #1
strb r0, [r5, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _0801EC7E
adds r0, r5, #0
bl sub_0801EDEC
cmp r0, #0
beq _0801EC78
ldr r1, _0801EC74 @ =gUnk_080CA174
ldrb r0, [r5, #0xa]
adds r0, r0, r1
ldrb r4, [r0]
bl Random
movs r1, #3
ands r0, r1
cmp r4, r0
bhi _0801EC78
strb r1, [r5, #0xc]
ldrb r1, [r5, #0x14]
adds r1, #4
adds r0, r5, #0
bl UpdateSprite
b _0801EC7E
.align 2, 0
_0801EC74: .4byte gUnk_080CA174
_0801EC78:
adds r0, r5, #0
bl sub_0801ECFC
_0801EC7E:
pop {r4, r5, pc}
thumb_func_start sub_0801EC80
sub_0801EC80: @ 0x0801EC80
push {r4, r5, lr}
adds r4, r0, #0
bl sub_08004274
adds r5, r4, #0
adds r5, #0x5a
ldrb r1, [r5]
movs r0, #1
ands r0, r1
cmp r0, #0
beq _0801ECD8
adds r0, r4, #0
movs r1, #1
movs r2, #0
bl sub_0804A98C
adds r2, r0, #0
cmp r2, #0
beq _0801ECD8
ldrb r0, [r4, #0x15]
strb r0, [r2, #0x15]
ldrb r1, [r4, #0x15]
lsrs r1, r1, #2
ldr r0, _0801ECF0 @ =gUnk_080CA176
adds r1, r1, r0
movs r0, #0
ldrsb r0, [r1, r0]
ldrh r3, [r2, #0x2e]
adds r0, r0, r3
strh r0, [r2, #0x2e]
movs r0, #1
ldrsb r0, [r1, r0]
ldrh r1, [r2, #0x32]
adds r0, r0, r1
strh r0, [r2, #0x32]
ldr r0, _0801ECF4 @ =0x0000FFFD
strh r0, [r2, #0x36]
ldrb r1, [r5]
movs r0, #0xfe
ands r0, r1
strb r0, [r5]
ldr r0, _0801ECF8 @ =0x0000018D
bl sub_08004488
_0801ECD8:
adds r0, r4, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _0801ECEC
adds r0, r4, #0
bl sub_0801ECFC
_0801ECEC:
pop {r4, r5, pc}
.align 2, 0
_0801ECF0: .4byte gUnk_080CA176
_0801ECF4: .4byte 0x0000FFFD
_0801ECF8: .4byte 0x0000018D
thumb_func_start sub_0801ECFC
sub_0801ECFC: @ 0x0801ECFC
push {r4, lr}
adds r4, r0, #0
movs r0, #1
strb r0, [r4, #0xc]
bl Random
movs r1, #0x38
ands r0, r1
adds r0, #0x18
strb r0, [r4, #0xe]
pop {r4, pc}
.align 2, 0
thumb_func_start sub_0801ED14
sub_0801ED14: @ 0x0801ED14
push {r4, r5, lr}
adds r5, r0, #0
ldrb r0, [r5, #0xa]
cmp r0, #2
beq _0801ED7E
adds r0, r5, #0
bl sub_08049FA0
cmp r0, #0
beq _0801ED4C
ldrb r0, [r5, #0xa]
cmp r0, #1
bne _0801ED46
bl Random
movs r1, #3
ands r1, r0
cmp r1, #0
bne _0801ED46
adds r0, r5, #0
movs r1, #1
bl sub_08049FDC
cmp r0, #0
bne _0801EDC4
_0801ED46:
bl Random
b _0801EDD0
_0801ED4C:
bl Random
movs r1, #3
ands r1, r0
cmp r1, #0
beq _0801ED78
adds r0, r5, #0
bl sub_08049EE4
adds r4, r0, #0
bl Random
ldr r2, _0801ED74 @ =gUnk_080CA17E
movs r1, #1
ands r1, r0
adds r1, r1, r2
ldrb r0, [r1]
adds r0, r0, r4
b _0801EDD0
.align 2, 0
_0801ED74: .4byte gUnk_080CA17E
_0801ED78:
bl Random
b _0801EDD0
_0801ED7E:
adds r0, r5, #0
movs r1, #1
bl sub_08049FDC
cmp r0, #0
bne _0801EDC4
adds r0, r5, #0
bl sub_08049FA0
cmp r0, #0
beq _0801ED9A
bl Random
b _0801EDD0
_0801ED9A:
bl Random
movs r1, #3
ands r1, r0
cmp r1, #0
beq _0801EDC4
adds r0, r5, #0
bl sub_08049EE4
adds r4, r0, #0
bl Random
ldr r2, _0801EDC0 @ =gUnk_080CA17E
movs r1, #1
ands r1, r0
adds r1, r1, r2
ldrb r0, [r1]
adds r0, r0, r4
b _0801EDD0
.align 2, 0
_0801EDC0: .4byte gUnk_080CA17E
_0801EDC4:
ldr r0, _0801EDE8 @ =gUnk_020000B0
ldr r1, [r0]
adds r0, r5, #0
bl sub_080045C4
adds r0, #4
_0801EDD0:
movs r1, #0x18
ands r0, r1
strb r0, [r5, #0x15]
ldrb r0, [r5, #0x15]
lsrs r0, r0, #3
strb r0, [r5, #0x14]
ldrb r1, [r5, #0x14]
adds r0, r5, #0
bl UpdateSprite
pop {r4, r5, pc}
.align 2, 0
_0801EDE8: .4byte gUnk_020000B0
thumb_func_start sub_0801EDEC
sub_0801EDEC: @ 0x0801EDEC
push {r4, lr}
adds r4, r0, #0
movs r0, #1
bl sub_08049DF4
adds r1, r0, #0
cmp r1, #0
beq _0801EE12
adds r0, r4, #0
bl sub_080045C4
adds r0, #4
movs r1, #0x18
ands r0, r1
ldrb r4, [r4, #0x15]
cmp r0, r4
bne _0801EE12
movs r0, #1
b _0801EE14
_0801EE12:
movs r0, #0
_0801EE14:
pop {r4, pc}
.align 2, 0

View File

@ -0,0 +1,28 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.text
.syntax unified
push {r4, lr}
adds r4, r0, #0
bl sub_0804A720
ldrb r0, [r4, #0xa]
cmp r0, #2
beq _0801EBDE
bl Random
movs r1, #3
ands r0, r1
_0801EBDE:
strb r0, [r4, #0x14]
movs r0, #0x12
strb r0, [r4, #0x1c]
adds r0, r4, #0
bl sub_0801ECFC
ldrb r1, [r4, #0x14]
adds r0, r4, #0
bl UpdateSprite
pop {r4, pc}
.syntax divided

View File

@ -3304,10 +3304,10 @@ gUnk_080CA06C:: @ 080CA06C
gUnk_080CA11C:: @ 080CA11C
.incbin "baserom.gba", 0x0CA11C, 0x0000014
gUnk_080CA130:: @ 080CA130
gOctorok:: @ 080CA130
.incbin "baserom.gba", 0x0CA130, 0x0000018
gUnk_080CA148:: @ 080CA148
gOctorokIdle:: @ 080CA148
.incbin "baserom.gba", 0x0CA148, 0x0000010
gUnk_080CA158:: @ 080CA158

View File

@ -317,6 +317,9 @@ SECTIONS {
asm/readKeyInput.o(.text);
asm/code_0801D714.o(.text);
asm/code_0801D79C.o(.text);
src/octorok.o(.text);
asm/octorok.o(.text);
asm/code_0801EE18.o(.text);
asm/createSluggula.o(.text);
asm/code_08023E10.o(.text);
asm/doItemTrade.o(.text);

140
src/octorok.c Normal file
View File

@ -0,0 +1,140 @@
#include "global.h"
#include "entity.h"
extern void sub_0800129E();
extern void sub_0804A9AC();
extern void sub_0804AA30();
extern void sub_0804A9FC();
extern void sub_0804A7D4();
extern void CreateDeathFx();
extern void sub_0801ECFC();
extern u32 sub_0806F520();
extern void UpdateSprite();
extern void sub_0806F4E8();
extern void sub_0806F3E4();
extern void UpdateSpriteAnimation();
extern void sub_0804A720();
extern u32 Random();
extern void sub_0801ED14();
extern void sub_08004274();
extern void (*gOctorok[2]);
extern void (*gOctorokIdle[4])(Entity *);
extern void (*gUnk_080CA158[4])(Entity *);
extern u8 gUnk_080CA170[8];
//Main
void sub_0801EAB0(Entity *ent)
{
sub_0800129E(ent, gOctorok);
sub_0804A9AC(ent, 0, 1, -16);
}
//Idle
void sub_0801EAD0(Entity *ent)
{
gOctorokIdle[ent->action](ent);
}
//Touch player
void sub_0801EAE8(Entity *ent)
{
if (ent->field_0x43 != 0) {
sub_0804A9FC(ent, 28);
}
sub_0804AA30(ent, gOctorok);
}
//Death
void sub_0801EB0C(Entity *ent)
{
if ((ent->entityType).parameter1 == 0) {
sub_0804A7D4(ent);
}
else {
CreateDeathFx(ent, 241, 0);
}
}
void sub_0801EB2C(Entity *ent)
{
s32 iVar1;
if ((ent->previousActionFlag < 3) && (iVar1 = sub_0806F520(ent), iVar1 == 0)) {
sub_0801ECFC(ent);
UpdateSprite(ent, ent->animationState);
}
else {
gUnk_080CA158[ent->previousActionFlag](ent);
}
}
void sub_0801EB68(Entity *ent)
{
ent->previousActionFlag = 1;
ent->filler[1] = 60;
}
void sub_0801EB74(Entity *ent)
{
sub_0806F4E8(ent);
}
void sub_0801EB7C(Entity *ent)
{
sub_0806F3E4(ent);
}
void sub_0801EB84(Entity *ent)
{
ent->flags = ent->flags & 127;
UpdateSpriteAnimation(ent, 2);
}
void nullsub_3()
{
}
void sub_0801EB9C(Entity *ent)
{
if ((ent->flags & 128) != 0) {
ent->flags = ent->flags | 128;
ent->field_0x3a = ent->field_0x3a & 251;
}
else {
ent->currentHealth = 0;
}
}
//Init
#ifdef NON_MATCHING
void sub_0801EBC8(Entity *ent)
{
sub_0804A720();
ent->animationState = (ent->entityType).parameter1 == 2 ? (ent->entityType).parameter1 : Random() & 3;
ent->filler[0] = 18;
sub_0801ECFC(ent);
UpdateSprite(ent,ent->animationState);
}
#else
NAKED
void sub_0801EBC8(Entity *ent)
{
asm(".include \"asm/octorok/sub_0801EBC8.inc\"");
}
#endif
void sub_0801EBF4(Entity *ent)
{
u8 bVar1;
u32 uVar2;
bVar1 = ent->parameter3 -= 1;
if (bVar1 == 0) {
ent->action = 2;
uVar2 = Random();
ent->parameter3 = gUnk_080CA170[uVar2 & 3];
sub_0801ED14(ent);
}
sub_08004274(ent);
}