Files
tmc/src/enemy/chuchuBoss.c
T
2022-02-12 20:03:27 +01:00

201 lines
4.2 KiB
C

/**
* @file chuchuBoss.c
* @ingroup Enemies
*
* @brief Chuchu Boss enemy
*/
#include "enemy.h"
#include "functions.h"
extern void (*const ChuchuBoss_Functions[])(Entity*);
extern void (*const gUnk_080CC1B0[])(Entity*);
extern const u8 gUnk_080CC1B8[];
extern void (*const gUnk_080CC1C8[])(Entity*);
extern void (*const gUnk_080CC1DC[])(Entity*);
extern void (*const gUnk_080CC20C[])(Entity*);
extern const u8 gUnk_080CC234[];
extern const u8 gUnk_080CC24F[];
extern void (*const gUnk_080CC258[])(Entity*);
extern void (*const gUnk_080CC264[])(Entity*);
extern void (*const gUnk_080CC26C[])(Entity*);
extern const u8 gUnk_080CC278[];
extern const u16 gUnk_080CC27C[];
extern const u16 gUnk_080CC29C[];
extern const u16 gUnk_080CC2BC[];
extern const s8 gUnk_080CC2DC[];
void ChuchuBoss(Entity* this) {
ChuchuBoss_Functions[GetNextFunction(this)]((Entity*)this);
}
void ChuchuBoss_OnKnockback(Entity* this) {
GenericKnockback(this);
if (this->type == 0) {
sub_08027870(this);
}
}
void ChuchuBoss_OnTick(Entity*);
void ChuchuBoss_OnDeath(Entity*);
void sub_08025DD8(Entity*);
void sub_08026060(Entity*);
void sub_08026110(Entity*);
void sub_080272D4(Entity*);
void sub_0802720C(Entity*);
void sub_08026090(Entity*);
void sub_0802626C(Entity*);
void sub_08026580(Entity*);
void sub_08026634(Entity*);
void sub_08026750(Entity*);
void sub_0802686C(Entity*);
void sub_080268C8(Entity*);
void sub_0802694C(Entity*);
void sub_08026C40(Entity*);
void sub_08026E1C(Entity*);
void sub_08026FA4(Entity*);
void sub_08027064(Entity*);
void sub_08026F1C(Entity*);
void sub_080262A8(Entity*);
void sub_08026328(Entity*);
void sub_08026358(Entity*);
void sub_080263B4(Entity*);
void sub_08026414(Entity*);
void sub_0802647C(Entity*);
void sub_080264AC(Entity*);
void sub_080264D4(Entity*);
void sub_0802650C(Entity*);
void sub_0802653C(Entity*);
void sub_08026774(Entity*);
void sub_080267D0(Entity*);
void sub_08026808(Entity*);
void sub_080268EC(Entity*);
void sub_08026914(Entity*);
void sub_08026968(Entity*);
void sub_080269CC(Entity*);
void sub_08026BE8(Entity*);
// clang-format off
void (*const ChuchuBoss_Functions[])(Entity*) = {
ChuchuBoss_OnTick,
ChuchuBoss_OnTick,
ChuchuBoss_OnKnockback,
ChuchuBoss_OnDeath,
GenericConfused,
};
void (*const gUnk_080CC1B0[])(Entity*) = {
sub_08025DD8,
sub_08026060,
};
const u8 gUnk_080CC1B8[] = {
0, 4,
0, 0,
0, 4,
0, 0,
1, 4,
0, 0,
2, 4,
0, 0,
};
void (*const gUnk_080CC1C8[])(Entity*) = {
sub_08026110,
sub_080272D4,
sub_0802720C,
sub_0802720C,
sub_08026090,
};
void (*const gUnk_080CC1DC[])(Entity*) = {
sub_0802626C,
sub_08026580,
sub_08026634,
sub_08026750,
sub_0802686C,
sub_080268C8,
sub_0802694C,
sub_08026C40,
sub_08026E1C,
sub_08026FA4,
sub_08027064,
sub_08026F1C,
};
void (*const gUnk_080CC20C[])(Entity*) = {
sub_080262A8,
sub_08026328,
sub_08026358,
sub_080263B4,
sub_08026414,
sub_0802647C,
sub_080264AC,
sub_080264D4,
sub_0802650C,
sub_0802653C,
};
const u8 gUnk_080CC234[] = {
0x3C, 0x1E, 0x1E, 0x1E,
0x1E, 0x0F, 0x0F, 0x0F,
0x04, 0x04, 0x04, 0x04,
0x04, 0x04, 0x0A, 0x0A,
0x0A, 0x0F, 0x0F, 0x0F,
0x1E, 0x1E, 0x2D, 0x0A,
0x5A, 0x1E, 0xFF,
};
const u8 gUnk_080CC24F[] = {
2, 2, 4, 4,
4, 6, 6, 8,
};
void (*const gUnk_080CC258[])(Entity*) = {
sub_08026774,
sub_080267D0,
sub_08026808,
};
void (*const gUnk_080CC264[])(Entity*) = {
sub_080268EC,
sub_08026914,
};
void (*const gUnk_080CC26C[])(Entity*) = {
sub_08026968,
sub_080269CC,
sub_08026BE8,
};
const u8 gUnk_080CC278[] = {
150, 180, 210, 250,
};
const u16 gUnk_080CC27C[] = {
0x80, 0x8, 0x100, 0x6,
0x80, 0x18, 0x100, 0x8,
0x180, 0x6, 0x100, 0x10,
0x0, 0x0, 0xA0, 0x18,
};
const u16 gUnk_080CC29C[] = {
0x80, 0x8, 0x100, 0x4,
0x80, 0xC, 0x80, 0x6,
0x200, 0x6, 0x100, 0xC,
0x0, 0x0, 0xA0, 0x14,
};
const u16 gUnk_080CC2BC[] = {
0x80, 0x8, 0x100, 0x0,
0x60, 0x2, 0x80, 0x2,
0x200, 0x6, 0x100, 0x8,
0x0, 0x0, 0xA0, 0x10,
};
const s8 gUnk_080CC2DC[] = {
-7, -9, -7,
};
// clang-format on