mirror of https://github.com/zeldaret/tmc.git
dump flags to c
This commit is contained in:
parent
26b053266a
commit
207d70ad77
|
@ -1,168 +0,0 @@
|
||||||
.syntax unified
|
|
||||||
push {r4, r5, r6, r7, lr}
|
|
||||||
adds r4, r0, #0
|
|
||||||
ldrb r2, [r4, #0xa]
|
|
||||||
ldr r0, _080ACD20 @ =gScreenTransition
|
|
||||||
ldr r0, [r0]
|
|
||||||
adds r0, r2, r0
|
|
||||||
movs r1, #1
|
|
||||||
ands r0, r1
|
|
||||||
cmp r0, #0
|
|
||||||
beq _080ACCF8
|
|
||||||
ldr r0, _080ACD24 @ =gUnk_0812AAAC
|
|
||||||
lsls r1, r2, #2
|
|
||||||
adds r1, r1, r0
|
|
||||||
ldr r7, [r1]
|
|
||||||
ldr r0, [r4, #0x74]
|
|
||||||
adds r0, r7, r0
|
|
||||||
ldrb r0, [r0]
|
|
||||||
lsls r0, r0, #0x18
|
|
||||||
asrs r0, r0, #0x18
|
|
||||||
cmp r0, #0
|
|
||||||
bne _080ACCA4
|
|
||||||
str r0, [r4, #0x74]
|
|
||||||
_080ACCA4:
|
|
||||||
ldr r0, [r4, #0x74]
|
|
||||||
adds r0, r7, r0
|
|
||||||
movs r2, #0
|
|
||||||
ldrsb r2, [r0, r2]
|
|
||||||
movs r3, #1
|
|
||||||
ldrsb r3, [r0, r3]
|
|
||||||
adds r0, r4, #0
|
|
||||||
movs r1, #0xe
|
|
||||||
bl sub_08008782
|
|
||||||
adds r5, r0, #0
|
|
||||||
cmp r5, #0
|
|
||||||
beq _080ACCF2
|
|
||||||
ldrb r1, [r5, #5]
|
|
||||||
ldrb r2, [r5, #2]
|
|
||||||
movs r0, #0x11
|
|
||||||
bl CreateObject
|
|
||||||
adds r6, r0, #0
|
|
||||||
cmp r6, #0
|
|
||||||
beq _080ACCF2
|
|
||||||
ldrb r0, [r5, #3]
|
|
||||||
strb r0, [r6, #0xe]
|
|
||||||
ldr r0, [r4, #0x74]
|
|
||||||
adds r0, r7, r0
|
|
||||||
ldrb r0, [r0]
|
|
||||||
lsls r0, r0, #0x18
|
|
||||||
asrs r0, r0, #0x18
|
|
||||||
ldrh r1, [r4, #0x2e]
|
|
||||||
adds r0, r0, r1
|
|
||||||
strh r0, [r6, #0x2e]
|
|
||||||
ldr r0, [r4, #0x74]
|
|
||||||
adds r0, r0, r7
|
|
||||||
ldrb r0, [r0, #1]
|
|
||||||
lsls r0, r0, #0x18
|
|
||||||
asrs r0, r0, #0x18
|
|
||||||
ldrh r1, [r4, #0x32]
|
|
||||||
adds r0, r0, r1
|
|
||||||
strh r0, [r6, #0x32]
|
|
||||||
_080ACCF2:
|
|
||||||
ldr r0, [r4, #0x74]
|
|
||||||
adds r0, #2
|
|
||||||
str r0, [r4, #0x74]
|
|
||||||
_080ACCF8:
|
|
||||||
ldr r2, [r4, #0x54]
|
|
||||||
cmp r2, #0
|
|
||||||
bne _080ACD08
|
|
||||||
ldr r0, [r4, #0x70]
|
|
||||||
cmp r0, #2
|
|
||||||
bls _080ACD08
|
|
||||||
movs r0, #1
|
|
||||||
str r0, [r4, #0x70]
|
|
||||||
_080ACD08:
|
|
||||||
ldr r0, [r4, #0x70]
|
|
||||||
subs r0, #1
|
|
||||||
str r0, [r4, #0x70]
|
|
||||||
movs r1, #1
|
|
||||||
rsbs r1, r1, #0
|
|
||||||
cmp r0, r1
|
|
||||||
bne _080ACDAE
|
|
||||||
cmp r2, #0
|
|
||||||
bne _080ACD28
|
|
||||||
movs r0, #2
|
|
||||||
b _080ACD32
|
|
||||||
.align 2, 0
|
|
||||||
_080ACD20: .4byte gScreenTransition
|
|
||||||
_080ACD24: .4byte gUnk_0812AAAC
|
|
||||||
_080ACD28:
|
|
||||||
ldr r0, _080ACD74 @ =gUnk_0812AABC
|
|
||||||
ldrb r1, [r4, #0xa]
|
|
||||||
adds r1, r1, r0
|
|
||||||
movs r0, #0
|
|
||||||
ldrsb r0, [r1, r0]
|
|
||||||
_080ACD32:
|
|
||||||
str r0, [r4, #0x70]
|
|
||||||
movs r0, #0x17
|
|
||||||
movs r1, #0
|
|
||||||
movs r2, #0
|
|
||||||
bl CreateObject
|
|
||||||
adds r6, r0, #0
|
|
||||||
cmp r6, #0
|
|
||||||
beq _080ACDAE
|
|
||||||
bl Random
|
|
||||||
adds r2, r0, #0
|
|
||||||
movs r0, #0xf
|
|
||||||
ands r2, r0
|
|
||||||
ldr r3, [r4, #0x48]
|
|
||||||
ldrb r1, [r3, #6]
|
|
||||||
cmp r1, r2
|
|
||||||
bge _080ACD58
|
|
||||||
adds r2, r1, #0
|
|
||||||
_080ACD58:
|
|
||||||
movs r0, #1
|
|
||||||
ands r0, r2
|
|
||||||
cmp r0, #0
|
|
||||||
beq _080ACD62
|
|
||||||
rsbs r2, r2, #0
|
|
||||||
_080ACD62:
|
|
||||||
ldrb r0, [r4, #0x14]
|
|
||||||
lsrs r0, r0, #1
|
|
||||||
cmp r0, #1
|
|
||||||
beq _080ACD9C
|
|
||||||
cmp r0, #1
|
|
||||||
bgt _080ACD78
|
|
||||||
cmp r0, #0
|
|
||||||
beq _080ACD82
|
|
||||||
b _080ACDAE
|
|
||||||
.align 2, 0
|
|
||||||
_080ACD74: .4byte gUnk_0812AABC
|
|
||||||
_080ACD78:
|
|
||||||
cmp r0, #2
|
|
||||||
beq _080ACD8C
|
|
||||||
cmp r0, #3
|
|
||||||
beq _080ACDA2
|
|
||||||
b _080ACDAE
|
|
||||||
_080ACD82:
|
|
||||||
ldrb r0, [r3, #7]
|
|
||||||
ldrh r1, [r4, #0x32]
|
|
||||||
subs r1, r1, r0
|
|
||||||
strh r1, [r6, #0x32]
|
|
||||||
b _080ACD94
|
|
||||||
_080ACD8C:
|
|
||||||
ldrh r0, [r4, #0x32]
|
|
||||||
ldrb r3, [r3, #7]
|
|
||||||
adds r0, r0, r3
|
|
||||||
strh r0, [r6, #0x32]
|
|
||||||
_080ACD94:
|
|
||||||
ldrh r0, [r4, #0x2e]
|
|
||||||
adds r0, r0, r2
|
|
||||||
strh r0, [r6, #0x2e]
|
|
||||||
b _080ACDAE
|
|
||||||
_080ACD9C:
|
|
||||||
ldrh r0, [r4, #0x2e]
|
|
||||||
adds r0, r0, r1
|
|
||||||
b _080ACDA6
|
|
||||||
_080ACDA2:
|
|
||||||
ldrh r0, [r4, #0x2e]
|
|
||||||
subs r0, r0, r1
|
|
||||||
_080ACDA6:
|
|
||||||
strh r0, [r6, #0x2e]
|
|
||||||
ldrh r0, [r4, #0x32]
|
|
||||||
adds r0, r0, r2
|
|
||||||
strh r0, [r6, #0x32]
|
|
||||||
_080ACDAE:
|
|
||||||
pop {r4, r5, r6, r7, pc}
|
|
||||||
.syntax divided
|
|
|
@ -4,41 +4,7 @@
|
||||||
.section .rodata
|
.section .rodata
|
||||||
.align 2
|
.align 2
|
||||||
|
|
||||||
gUnk_0812AA88:: @ 0812AA88
|
xxx::
|
||||||
.incbin "baserom.gba", 0x12AA88, 0x0000009
|
|
||||||
|
|
||||||
gUnk_0812AA91:: @ 0812AA91
|
|
||||||
.incbin "baserom.gba", 0x12AA91, 0x0000009
|
|
||||||
|
|
||||||
gUnk_0812AA9A:: @ 0812AA9A
|
|
||||||
.incbin "baserom.gba", 0x12AA9A, 0x0000012
|
|
||||||
|
|
||||||
gUnk_0812AAAC:: @ 0812AAAC
|
|
||||||
.4byte gUnk_0812AA88
|
|
||||||
.4byte gUnk_0812AA91
|
|
||||||
.4byte gUnk_0812AA91
|
|
||||||
.4byte gUnk_0812AA9A
|
|
||||||
|
|
||||||
gUnk_0812AABC:: @ 0812AABC
|
|
||||||
.incbin "baserom.gba", 0x12AABC, 0x0000004
|
|
||||||
|
|
||||||
gUnk_0812AAC0:: @ 0812AAC0
|
|
||||||
.incbin "baserom.gba", 0x12AAC0, 0x0000008
|
|
||||||
|
|
||||||
gUnk_0812AAC8:: @ 0812AAC8
|
|
||||||
.incbin "baserom.gba", 0x12AAC8, 0x0000008
|
|
||||||
|
|
||||||
gUnk_0812AAD0:: @ 0812AAD0
|
|
||||||
.incbin "baserom.gba", 0x12AAD0, 0x0000008
|
|
||||||
|
|
||||||
gUnk_0812AAD8:: @ 0812AAD8
|
|
||||||
.4byte gUnk_0812AAC0
|
|
||||||
.4byte gUnk_0812AAC8
|
|
||||||
.4byte gUnk_0812AAC8
|
|
||||||
.4byte gUnk_0812AAD0
|
|
||||||
|
|
||||||
gUnk_0812AAE8:: @ 0812AAE8
|
|
||||||
.4byte 0x10100c00
|
|
||||||
.4byte gUnk_0812B204
|
.4byte gUnk_0812B204
|
||||||
.4byte gUnk_0812B1F8
|
.4byte gUnk_0812B1F8
|
||||||
.4byte gUnk_0812B1EC
|
.4byte gUnk_0812B1EC
|
||||||
|
|
|
@ -1715,7 +1715,9 @@ data/const/object/object1D.o(.rodata);
|
||||||
data/animations/projectile/gyorgMaleEnergyProjectile.o(.rodata);
|
data/animations/projectile/gyorgMaleEnergyProjectile.o(.rodata);
|
||||||
src/projectile/v3TennisBallProjectile.o(.rodata);
|
src/projectile/v3TennisBallProjectile.o(.rodata);
|
||||||
data/const/playerItem/playerItem10.o(.rodata);
|
data/const/playerItem/playerItem10.o(.rodata);
|
||||||
data/data_0812AA88.o(.rodata);
|
src/playerItem/playerItem10.o(.rodata);
|
||||||
|
/*data/data_0812AA88.o(.rodata);*/
|
||||||
|
src/flagDebug.o(.rodata);
|
||||||
data/const/playerItem/playerItem13.o(.rodata);
|
data/const/playerItem/playerItem13.o(.rodata);
|
||||||
src/intro.o(.rodata);
|
src/intro.o(.rodata);
|
||||||
data/data_081320FC.o(.rodata);
|
data/data_081320FC.o(.rodata);
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,16 +1,77 @@
|
||||||
#include "entity.h"
|
#include "entity.h"
|
||||||
#include "player.h"
|
#include "player.h"
|
||||||
#include "functions.h"
|
#include "functions.h"
|
||||||
|
#include "random.h"
|
||||||
|
|
||||||
extern void (*const gUnk_0812AA80[])(Entity*);
|
extern void (*const gUnk_0812AA80[])(Entity*);
|
||||||
|
|
||||||
extern Hitbox* gUnk_0812AAD8[];
|
|
||||||
bool32 sub_080ACDB0(Entity*);
|
bool32 sub_080ACDB0(Entity*);
|
||||||
|
|
||||||
void sub_080ACC78(Entity*);
|
void sub_080ACC78(Entity*);
|
||||||
void sub_080ACECC(Entity*);
|
void sub_080ACECC(Entity*);
|
||||||
|
|
||||||
extern u8 gUnk_0812AAE8[];
|
typedef struct {
|
||||||
|
u16 bits;
|
||||||
|
u8 type2;
|
||||||
|
u8 actionDelay;
|
||||||
|
u8 _4;
|
||||||
|
u8 type;
|
||||||
|
u16 tileID;
|
||||||
|
} Obj11;
|
||||||
|
|
||||||
|
Obj11* sub_08008782(Entity*, u32, u32, u32);
|
||||||
|
|
||||||
|
const s8 gUnk_0812AA88[] = {
|
||||||
|
-4, -4, 4, -4, -4, 4, 4, 4, 0,
|
||||||
|
};
|
||||||
|
|
||||||
|
const s8 gUnk_0812AA91[] = {
|
||||||
|
-5, -5, 5, -5, -5, 5, 5, 5, 0,
|
||||||
|
};
|
||||||
|
|
||||||
|
const s8 gUnk_0812AA9A[] = {
|
||||||
|
-9, -9, 1, -9, 9, -9, -9, 1, 9, 1, -9, 9, 1, 9, 9, 9, 0, 0,
|
||||||
|
};
|
||||||
|
|
||||||
|
const s8* const gUnk_0812AAAC[] = {
|
||||||
|
gUnk_0812AA88,
|
||||||
|
gUnk_0812AA91,
|
||||||
|
gUnk_0812AA91,
|
||||||
|
gUnk_0812AA9A,
|
||||||
|
};
|
||||||
|
|
||||||
|
const s8 gUnk_0812AABC[] = {
|
||||||
|
0x78,
|
||||||
|
0x50,
|
||||||
|
0x28,
|
||||||
|
0x4,
|
||||||
|
};
|
||||||
|
|
||||||
|
const Hitbox gUnk_0812AAC0 = {
|
||||||
|
0, 0, 4, 2, 2, 4, 4, 4,
|
||||||
|
};
|
||||||
|
|
||||||
|
const Hitbox gUnk_0812AAC8 = {
|
||||||
|
0, 0, 4, 3, 3, 4, 9, 9,
|
||||||
|
};
|
||||||
|
|
||||||
|
const Hitbox gUnk_0812AAD0 = {
|
||||||
|
0, 0, 8, 7, 7, 8, 14, 14,
|
||||||
|
};
|
||||||
|
|
||||||
|
const Hitbox* const gUnk_0812AAD8[] = {
|
||||||
|
&gUnk_0812AAC0,
|
||||||
|
&gUnk_0812AAC8,
|
||||||
|
&gUnk_0812AAC8,
|
||||||
|
&gUnk_0812AAD0,
|
||||||
|
};
|
||||||
|
|
||||||
|
const u8 gUnk_0812AAE8[] = {
|
||||||
|
0,
|
||||||
|
12,
|
||||||
|
16,
|
||||||
|
16,
|
||||||
|
};
|
||||||
|
|
||||||
void PlayerItem10(Entity* this) {
|
void PlayerItem10(Entity* this) {
|
||||||
if ((gPlayerState.field_0x1c & 0x7f) != 1) {
|
if ((gPlayerState.field_0x1c & 0x7f) != 1) {
|
||||||
|
@ -27,7 +88,7 @@ void sub_080ACC04(Entity* this) {
|
||||||
this->speed = 0x200;
|
this->speed = 0x200;
|
||||||
this->flags |= 0xa0;
|
this->flags |= 0xa0;
|
||||||
this->field_0x3c = 2;
|
this->field_0x3c = 2;
|
||||||
this->hitbox = gUnk_0812AAD8[this->type];
|
this->hitbox = (Hitbox*)gUnk_0812AAD8[this->type];
|
||||||
this->field_0x70.WORD = 0x10;
|
this->field_0x70.WORD = 0x10;
|
||||||
sub_080ACDB0(this);
|
sub_080ACDB0(this);
|
||||||
sub_0801766C(this);
|
sub_0801766C(this);
|
||||||
|
@ -40,7 +101,72 @@ void sub_080ACC5C(Entity* this) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ASM_FUNC("asm/non_matching/playerItem10/sub_080ACC78.inc", void sub_080ACC78(Entity* this))
|
void sub_080ACC78(Entity* this) {
|
||||||
|
s32 width;
|
||||||
|
Obj11* o;
|
||||||
|
Entity* child;
|
||||||
|
s32 offset;
|
||||||
|
const s8* puVar8;
|
||||||
|
|
||||||
|
if ((this->type + gScreenTransition.frameCount) & 1) {
|
||||||
|
puVar8 = gUnk_0812AAAC[this->type];
|
||||||
|
if (puVar8[*(u32*)&this->field_0x74] == 0) {
|
||||||
|
*(u32*)&this->field_0x74 = 0;
|
||||||
|
}
|
||||||
|
o = sub_08008782(this, 0xe, puVar8[*(u32*)&this->field_0x74], puVar8[*(u32*)&this->field_0x74 + 1]);
|
||||||
|
if (o != NULL) {
|
||||||
|
child = CreateObject(0x11, o->type, o->type2);
|
||||||
|
if (child != NULL) {
|
||||||
|
child->actionDelay = o->actionDelay;
|
||||||
|
child->x.HALF.HI = puVar8[*(u32*)&this->field_0x74] + this->x.HALF.HI;
|
||||||
|
child->y.HALF.HI = puVar8[*(u32*)&this->field_0x74 + 1] + this->y.HALF.HI;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
*(u32*)&this->field_0x74 += 2;
|
||||||
|
}
|
||||||
|
if (this->attachedEntity == NULL && (u32)this->field_0x70.WORD > 2) {
|
||||||
|
this->field_0x70.WORD = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (--this->field_0x70.WORD != -1) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (this->attachedEntity == NULL) {
|
||||||
|
this->field_0x70.WORD = 2;
|
||||||
|
} else {
|
||||||
|
this->field_0x70.WORD = gUnk_0812AABC[this->type];
|
||||||
|
}
|
||||||
|
child = CreateObject(0x17, 0, 0);
|
||||||
|
if (child == NULL) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
offset = Random() % 16;
|
||||||
|
width = this->hitbox->width;
|
||||||
|
if (width < offset) {
|
||||||
|
offset = width;
|
||||||
|
}
|
||||||
|
if (offset & 1) {
|
||||||
|
offset = -offset;
|
||||||
|
}
|
||||||
|
switch (this->animationState >> 1) {
|
||||||
|
case 0:
|
||||||
|
child->y.HALF.HI = this->y.HALF.HI - this->hitbox->height;
|
||||||
|
child->x.HALF.HI = this->x.HALF.HI + offset;
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
child->y.HALF.HI = this->y.HALF.HI + this->hitbox->height;
|
||||||
|
child->x.HALF.HI = this->x.HALF.HI + offset;
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
child->x.HALF.HI = this->x.HALF.HI + this->hitbox->width;
|
||||||
|
child->y.HALF.HI = this->y.HALF.HI + offset;
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
child->x.HALF.HI = this->x.HALF.HI - this->hitbox->width;
|
||||||
|
child->y.HALF.HI = this->y.HALF.HI + offset;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
ASM_FUNC("asm/non_matching/playerItem10/sub_080ACDB0.inc", bool32 sub_080ACDB0(Entity* this))
|
ASM_FUNC("asm/non_matching/playerItem10/sub_080ACDB0.inc", bool32 sub_080ACDB0(Entity* this))
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue