mirror of
https://github.com/zeldaret/tmc
synced 2026-07-09 23:01:43 -04:00
string prep
This commit is contained in:
@@ -0,0 +1,330 @@
|
||||
//
|
||||
|
||||
// #define DEF_FLAGS( name, ... ) \
|
||||
// const char* const name##_flags[] = { \
|
||||
// "BEGIN", \
|
||||
// __VA_ARGS__ \
|
||||
// "END" \
|
||||
// };
|
||||
|
||||
// DEF_FLAGS(global, "a",
|
||||
// "b");
|
||||
|
||||
extern const char* gUnk_0812B204;
|
||||
extern const char* gUnk_0812B1F8;
|
||||
extern const char* gUnk_0812B1EC;
|
||||
extern const char* gUnk_0812B1E0;
|
||||
extern const char* gUnk_0812B1D4;
|
||||
extern const char* gUnk_0812B1C8;
|
||||
extern const char* gUnk_0812B1BC;
|
||||
extern const char* gUnk_0812B1B0;
|
||||
extern const char* gUnk_0812B1A4;
|
||||
extern const char* gUnk_0812B198;
|
||||
extern const char* gUnk_0812B18C;
|
||||
extern const char* gUnk_0812B180;
|
||||
extern const char* gUnk_0812B174;
|
||||
extern const char* gUnk_0812B168;
|
||||
extern const char* gUnk_0812B15C;
|
||||
extern const char* gUnk_0812B150;
|
||||
extern const char* gUnk_0812B144;
|
||||
extern const char* gUnk_0812B138;
|
||||
extern const char* gUnk_0812B124;
|
||||
extern const char* gUnk_0812B11C;
|
||||
extern const char* gUnk_0812B110;
|
||||
extern const char* gUnk_0812B104;
|
||||
extern const char* gUnk_0812B0FC;
|
||||
extern const char* gUnk_0812B0EC;
|
||||
extern const char* gUnk_0812B0DC;
|
||||
extern const char* gUnk_0812B0CC;
|
||||
extern const char* gUnk_0812B0BC;
|
||||
extern const char* gUnk_0812B0AC;
|
||||
extern const char* gUnk_0812B0A0;
|
||||
extern const char* gUnk_0812B098;
|
||||
extern const char* gUnk_0812B08C;
|
||||
extern const char* gUnk_0812B07C;
|
||||
extern const char* gUnk_0812B06C;
|
||||
extern const char* gUnk_0812B05C;
|
||||
extern const char* gUnk_0812B050;
|
||||
extern const char* gUnk_0812B044;
|
||||
extern const char* gUnk_0812B034;
|
||||
extern const char* gUnk_0812B028;
|
||||
extern const char* gUnk_0812B018;
|
||||
extern const char* gUnk_0812B010;
|
||||
extern const char* gUnk_0812B004;
|
||||
extern const char* gUnk_0812AFF4;
|
||||
extern const char* gUnk_0812AFE0;
|
||||
extern const char* gUnk_0812AFCC;
|
||||
extern const char* gUnk_0812AFB8;
|
||||
extern const char* gUnk_0812AFA4;
|
||||
extern const char* gUnk_0812AF94;
|
||||
extern const char* gUnk_0812AF84;
|
||||
extern const char* gUnk_0812AF70;
|
||||
extern const char* gUnk_0812AF64;
|
||||
extern const char* gUnk_0812AF58;
|
||||
extern const char* gUnk_0812AF4C;
|
||||
extern const char* gUnk_0812AF40;
|
||||
extern const char* gUnk_0812AF34;
|
||||
extern const char* gUnk_0812AF28;
|
||||
extern const char* gUnk_0812AF1C;
|
||||
extern const char* gUnk_0812AF10;
|
||||
extern const char* gUnk_0812AF04;
|
||||
extern const char* gUnk_0812AEF4;
|
||||
extern const char* gUnk_0812AEEC;
|
||||
extern const char* gUnk_0812AEE4;
|
||||
extern const char* gUnk_0812AEDC;
|
||||
extern const char* gUnk_0812AEC8;
|
||||
extern const char* gUnk_0812AEB4;
|
||||
extern const char* gUnk_0812AEA0;
|
||||
extern const char* gUnk_0812AE8C;
|
||||
extern const char* gUnk_0812AE7C;
|
||||
extern const char* gUnk_0812AE6C;
|
||||
extern const char* gUnk_0812AE5C;
|
||||
extern const char* gUnk_0812AE48;
|
||||
extern const char* gUnk_0812AE38;
|
||||
extern const char* gUnk_0812AE24;
|
||||
extern const char* gUnk_0812AE14;
|
||||
extern const char* gUnk_0812AE0C;
|
||||
extern const char* gUnk_0812ADFC;
|
||||
extern const char* gUnk_0812ADEC;
|
||||
extern const char* gUnk_0812ADDC;
|
||||
extern const char* gUnk_0812ADCC;
|
||||
extern const char* gUnk_0812ADBC;
|
||||
extern const char* gUnk_0812ADB0;
|
||||
extern const char* gUnk_0812ADA0;
|
||||
extern const char* gUnk_0812AD98;
|
||||
extern const char* gUnk_0812AD8C;
|
||||
extern const char* gUnk_0812AD7C;
|
||||
extern const char* gUnk_0812AD70;
|
||||
extern const char* gUnk_0812AD64;
|
||||
extern const char* gUnk_0812AD54;
|
||||
extern const char* gUnk_0812AD40;
|
||||
extern const char* gUnk_0812AD30;
|
||||
extern const char* gUnk_0812AD20;
|
||||
extern const char* gUnk_0812AD0C;
|
||||
extern const char* gUnk_0812AD00;
|
||||
extern const char* gUnk_0812ACF0;
|
||||
extern const char* gUnk_0812ACE4;
|
||||
extern const char* gUnk_0812ACD8;
|
||||
extern const char* gUnk_0812ACCC;
|
||||
extern const char* gUnk_0812ACC0;
|
||||
extern const char* gUnk_0812ACB0;
|
||||
extern const char* gUnk_0812ACA4;
|
||||
extern const char* gUnk_0812AC94;
|
||||
#ifndef EU
|
||||
extern const char* gUnk_0812AC88;
|
||||
#endif
|
||||
extern const char* gUnk_0812AC84;
|
||||
|
||||
const char** const globalFlagNames[] = {
|
||||
&gUnk_0812B204,
|
||||
&gUnk_0812B1F8,
|
||||
&gUnk_0812B1EC,
|
||||
&gUnk_0812B1E0,
|
||||
&gUnk_0812B1D4,
|
||||
&gUnk_0812B1C8,
|
||||
&gUnk_0812B1BC,
|
||||
&gUnk_0812B1B0,
|
||||
&gUnk_0812B1A4,
|
||||
&gUnk_0812B198,
|
||||
&gUnk_0812B18C,
|
||||
&gUnk_0812B180,
|
||||
&gUnk_0812B174,
|
||||
&gUnk_0812B168,
|
||||
&gUnk_0812B15C,
|
||||
&gUnk_0812B150,
|
||||
&gUnk_0812B144,
|
||||
&gUnk_0812B138,
|
||||
&gUnk_0812B124,
|
||||
&gUnk_0812B11C,
|
||||
&gUnk_0812B110,
|
||||
&gUnk_0812B104,
|
||||
&gUnk_0812B0FC,
|
||||
&gUnk_0812B0EC,
|
||||
&gUnk_0812B0DC,
|
||||
&gUnk_0812B0CC,
|
||||
&gUnk_0812B0BC,
|
||||
&gUnk_0812B0AC,
|
||||
&gUnk_0812B0A0,
|
||||
&gUnk_0812B098,
|
||||
&gUnk_0812B08C,
|
||||
&gUnk_0812B07C,
|
||||
&gUnk_0812B06C,
|
||||
&gUnk_0812B05C,
|
||||
&gUnk_0812B050,
|
||||
&gUnk_0812B044,
|
||||
&gUnk_0812B034,
|
||||
&gUnk_0812B028,
|
||||
&gUnk_0812B018,
|
||||
&gUnk_0812B010,
|
||||
&gUnk_0812B004,
|
||||
&gUnk_0812AFF4,
|
||||
&gUnk_0812AFE0,
|
||||
&gUnk_0812AFCC,
|
||||
&gUnk_0812AFB8,
|
||||
&gUnk_0812AFA4,
|
||||
&gUnk_0812AF94,
|
||||
&gUnk_0812AF84,
|
||||
&gUnk_0812AF70,
|
||||
&gUnk_0812AF64,
|
||||
&gUnk_0812AF58,
|
||||
&gUnk_0812AF4C,
|
||||
&gUnk_0812AF40,
|
||||
&gUnk_0812AF34,
|
||||
&gUnk_0812AF28,
|
||||
&gUnk_0812AF1C,
|
||||
&gUnk_0812AF10,
|
||||
&gUnk_0812AF04,
|
||||
&gUnk_0812AEF4,
|
||||
&gUnk_0812AEEC,
|
||||
&gUnk_0812AEE4,
|
||||
&gUnk_0812AEDC,
|
||||
&gUnk_0812AEC8,
|
||||
&gUnk_0812AEB4,
|
||||
&gUnk_0812AEA0,
|
||||
&gUnk_0812AE8C,
|
||||
&gUnk_0812AE7C,
|
||||
&gUnk_0812AE6C,
|
||||
&gUnk_0812AE5C,
|
||||
&gUnk_0812AE48,
|
||||
&gUnk_0812AE38,
|
||||
&gUnk_0812AE24,
|
||||
&gUnk_0812AE14,
|
||||
&gUnk_0812AE0C,
|
||||
&gUnk_0812ADFC,
|
||||
&gUnk_0812ADEC,
|
||||
&gUnk_0812ADDC,
|
||||
&gUnk_0812ADCC,
|
||||
&gUnk_0812ADBC,
|
||||
&gUnk_0812ADB0,
|
||||
&gUnk_0812ADA0,
|
||||
&gUnk_0812AD98,
|
||||
&gUnk_0812AD8C,
|
||||
&gUnk_0812AD7C,
|
||||
&gUnk_0812AD70,
|
||||
&gUnk_0812AD64,
|
||||
&gUnk_0812AD54,
|
||||
&gUnk_0812AD40,
|
||||
&gUnk_0812AD30,
|
||||
&gUnk_0812AD20,
|
||||
&gUnk_0812AD0C,
|
||||
&gUnk_0812AD00,
|
||||
&gUnk_0812ACF0,
|
||||
&gUnk_0812ACE4,
|
||||
&gUnk_0812ACD8,
|
||||
&gUnk_0812ACCC,
|
||||
&gUnk_0812ACC0,
|
||||
&gUnk_0812ACB0,
|
||||
&gUnk_0812ACA4,
|
||||
&gUnk_0812AC94,
|
||||
#ifndef EU
|
||||
&gUnk_0812AC88,
|
||||
#endif
|
||||
&gUnk_0812AC84,
|
||||
};
|
||||
|
||||
// const char* globalFlagNames[] = {
|
||||
// "BEGIN",
|
||||
// "LV0_CLEAR",
|
||||
// "LV1_CLEAR",
|
||||
// "LV2_CLEAR",
|
||||
// "LV3_CLEAR",
|
||||
// "LV4_CLEAR",
|
||||
// "LV5_CLEAR",
|
||||
// "LV6_CLEAR",
|
||||
// "LV7_CLEAR",
|
||||
// "LV8_CLEAR",
|
||||
// "MACHI_SET_1",
|
||||
// "MACHI_SET_2",
|
||||
// "MACHI_SET_3",
|
||||
// "MACHI_SET_4",
|
||||
// "MACHI_SET_5",
|
||||
// "MACHI_SET_6",
|
||||
// "MACHI_SET_7",
|
||||
// "MACHI_SET_8",
|
||||
// "MACHI_MACHIHOKORI",
|
||||
// "START",
|
||||
// "EZERO_1ST",
|
||||
// "TABIDACHI",
|
||||
// "LV1TARU",
|
||||
// "LV1TARU_OPEN",
|
||||
// "TATEKAKE_HOUSE",
|
||||
// "TATEKAKE_TOCHU",
|
||||
// "WATERBEAN_OUT",
|
||||
// "WATERBEAN_PUT",
|
||||
// "ZELDA_CHASE",
|
||||
// "INLOCK",
|
||||
// "DASHBOOTS",
|
||||
// "LEFT_DOOR_OPEN",
|
||||
// "HAKA_KEY_LOST",
|
||||
// "HAKA_KEY_FOUND",
|
||||
// "ENTRANCE_OK",
|
||||
// "TATSUMAKI",
|
||||
// "KUMOTATSUMAKI",
|
||||
// "KAITENGIRI",
|
||||
// "DAIKAITENGIRI",
|
||||
// "GATOTSU",
|
||||
// "KABUTOWARI",
|
||||
// "MIZUKAKI_START",
|
||||
// "MIZUKAKI_HARIFALL",
|
||||
// "RENTED_HOUSE_DIN",
|
||||
// "RENTED_HOUSE_NAYRU",
|
||||
// "RENTED_HOUSE_FARORE",
|
||||
// "NEW_HOUSE_DIN",
|
||||
// "NEW_HOUSE_NAYRU",
|
||||
// "NEW_HOUSE_FARORE",
|
||||
// "OUGONTEKI_A",
|
||||
// "OUGONTEKI_B",
|
||||
// "OUGONTEKI_C",
|
||||
// "OUGONTEKI_D",
|
||||
// "OUGONTEKI_E",
|
||||
// "OUGONTEKI_F",
|
||||
// "OUGONTEKI_G",
|
||||
// "OUGONTEKI_H",
|
||||
// "OUGONTEKI_I",
|
||||
// "KAKERA_COMPLETE",
|
||||
// "DRUG_1",
|
||||
// "DRUG_2",
|
||||
// "DRUG_3",
|
||||
// "GORON_KAKERA_LV2",
|
||||
// "GORON_KAKERA_LV3",
|
||||
// "GORON_KAKERA_LV4",
|
||||
// "GORON_KAKERA_LV5",
|
||||
// "GORON_KAKERA_L",
|
||||
// "GORON_KAKERA_M",
|
||||
// "GORON_KAKERA_R",
|
||||
// "CHIKATSURO_SHUTTER",
|
||||
// "ENTRANCE_USED",
|
||||
// "GOMAN_RENTED_HOUSE",
|
||||
// "GOMAN_NEW_HOUSE",
|
||||
// "OUTDOOR",
|
||||
// "POWERGLOVE_HINT",
|
||||
// "ANJU_LV_BIT0",
|
||||
// "ANJU_LV_BIT1",
|
||||
// "ANJU_LV_BIT2",
|
||||
// "ANJU_LV_BIT3",
|
||||
// "ANJU_HEART",
|
||||
// "MAROYA_WAKEUP",
|
||||
// "ENDING",
|
||||
// "WARP_1ST",
|
||||
// "WARP_MONUMENT",
|
||||
// "DRUG_COUNT",
|
||||
// "GAMECLEAR",
|
||||
// "WHITE_SWORD_END",
|
||||
// "SOUGEN_06_HASHIGO",
|
||||
// "WARP_EVENT_END",
|
||||
// "FIGURE_ALLCOMP",
|
||||
// "AKINDO_BOTTLE_SELL",
|
||||
// "BIN_DOGFOOD",
|
||||
// "TINGLE_TALK1ST",
|
||||
// "SEIIKI_BGM",
|
||||
// "ENTRANCE_0",
|
||||
// "ENTRANCE_1",
|
||||
// "ENTRANCE_2",
|
||||
// "MIZUKAKI_NECHAN",
|
||||
// "MAZE_CLEAR",
|
||||
// "TINY_ENTRANCE",
|
||||
// #ifndef EU
|
||||
// "CASTLE_BGM",
|
||||
// #endif
|
||||
// "END",
|
||||
// };
|
||||
@@ -1,16 +1,73 @@
|
||||
#include "entity.h"
|
||||
#include "player.h"
|
||||
#include "functions.h"
|
||||
#include "random.h"
|
||||
|
||||
extern void (*const gUnk_0812AA80[])(Entity*);
|
||||
|
||||
extern Hitbox* gUnk_0812AAD8[];
|
||||
bool32 sub_080ACDB0(Entity*);
|
||||
|
||||
void sub_080ACC78(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) {
|
||||
if ((gPlayerState.field_0x1c & 0x7f) != 1) {
|
||||
@@ -27,7 +84,7 @@ void sub_080ACC04(Entity* this) {
|
||||
this->speed = 0x200;
|
||||
this->flags |= 0xa0;
|
||||
this->field_0x3c = 2;
|
||||
this->hitbox = gUnk_0812AAD8[this->type];
|
||||
this->hitbox = (Hitbox*)gUnk_0812AAD8[this->type];
|
||||
this->field_0x70.WORD = 0x10;
|
||||
sub_080ACDB0(this);
|
||||
sub_0801766C(this);
|
||||
@@ -40,7 +97,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))
|
||||
|
||||
|
||||
Reference in New Issue
Block a user