mirror of
https://github.com/zeldaret/tmc
synced 2026-06-05 19:28:20 -04:00
201 lines
4.2 KiB
C
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
|