Skip to content

Instantly share code, notes, and snippets.

@32th-System
Last active Oct 3, 2019
Embed
What would you like to do?
Touhou 17 data types
// The member names are based off the parameters from
// https://en.touhouwiki.net/wiki/User:Mddass/Touhou_File_Format_Specification/ECL/V2.2
// The bullet types and colors are taken from here
// https://cdn.discordapp.com/attachments/205514395566997514/603354372407296010/BULLET_IDS.png
typedef enum {
PEBBLES_0,
PEBBLES_1,
POPCORN,
RICE_SMALL,
SKITTLES_4,
SKITTLES_5,
SKITTLES_OUTLINED_6,
SKITTLES_OUTLINED_7,
RICE_8,
KUNAI,
SHARD_10,
AMULET,
ARROWHEAD,
BULLET,
WEIRD_SKITTLES,
BAKTERIA,
SMALL_STAR_16,
COIN,
MENTOS_18,
MENTOS_19,
JELLYBEAN,
KNIFE,
BUTTERFLY,
STAR_BIG_23,
STAR_BIG_24,
FIREBALL_RED,
FIREBALL_PURPLE,
FIREBALL_BLUE,
FIREBALL_YELLOW,
HEART,
MENTOS_30,
ARROW,
BUBBLE,
GLOWING,
RAINDROP,
RICE_35,
SHARD_36,
STAR_SMALL_37,
WHAT_THE_FUCK_IS_THIS,
NOTE_RED,
NOTE_BLUE,
NOTE_YELLOW,
NOTE_PINK,
NOTE_REST,
REST_NOTE,
} bullet_sprites_t;
typedef struct {
float r;
float s;
float m;
float n;
int a;
int b;
int c;
int d;
int type;
int slot;
char *sub;
} ecl_ex_t;
typedef struct {
bullet_sprites_t sprite;
int color;
float spd1_low_unused;
float spd1_high_unused;
float spd2_low_unused;
float ang1;
float ang2;
float spd1;
float spd2;
float distance;
ecl_ex_t ex[18]; // In case anyone is wondering how the hell extended transformations work when stored like this, they don't
float spd2_high_unused;
char unused[12];
int laser_time_start;
int laser_trans1;
int laser_duration;
int laser_trans2;
int laser_time_end;
unsigned short bullet_cnt;
unsigned short bullet_cnt_layers;
int type;
int unused_02;
int shot_se;
int shot_transform_se;
__int64 unused_03;
} bullet_mgr_props_t;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment