Skip to content

Instantly share code, notes, and snippets.

@emoose
Last active March 1, 2025 20:18
Show Gist options
  • Save emoose/c0155179b42b92725c48e754291eab18 to your computer and use it in GitHub Desktop.
Save emoose/c0155179b42b92725c48e754291eab18 to your computer and use it in GitHub Desktop.
SH1 things
// struct SH_SYS at 0x800BC728, size 0x5D8
// struct SYS_W at 0x800B9FC0, size 0x2768
struct SH_SYS // 0x800BC728, size 0x5D8
{
ShControllerCfg controller;
char screen_x_1C;
char screen_y_1D;
unsigned __int8 sound_type_1E;
unsigned __int8 volume_BGM_1F;
unsigned __int8 volume_SE_20;
unsigned __int8 vib_enabled_21;
unsigned __int8 brightness_22;
unsigned __int8 weapon_ctrl_23;
unsigned __int8 blood_color_24;
unsigned __int8 auto_load_25;
unsigned __int8 unk_26;
unsigned __int8 extra_options_enabled_27;
unsigned __int8 view_ctrl_28;
unsigned __int8 view_mode_29;
unsigned __int8 retreat_turn_2A;
unsigned __int8 walkrun_ctrl_2B;
unsigned __int8 auto_aiming_2C;
char bullet_adjust_2D;
__int16 field_2E[1];
int field_30[2];
ControllerData Controllers_38[2];
int field_90[144];
int field_2D0;
int field_2D4[11];
int field_300[2];
char field_308[3];
char field_30B;
ShSaveGame savegame_30C;
u_short gs_x_res_588;
u_short gs_y_res_58A;
char gs_clear_r_58C;
char gs_clear_g_58D;
char gs_clear_b_58E;
char field_58F;
ShMainLoopState0 MainLoopPrevState_590;
ShMainLoopState0 MainLoop_State0_594;
int MainLoop_State1_598;
int MainLoop_State2_59C;
int MainLoop_State3_mb_5A0;
char field_5A4[4];
int field_5A8;
int field_5AC;
u_char unk_5B0;
u_char field_5B1;
char field_5B2;
char field_5B3;
ControllerPacket ControllerPort1_temp_5B4;
};
struct SYS_W // 0x800B9FC0, size 0x2768
{
char field_0[2];
char field_2;
char field_3;
char field_4[2];
__int16 field_6;
ShInGameState0 InGameState0_8;
int InGameState1_C;
int field_10;
int field_14;
int field_18;
int FrameCounter_1C;
int FrameCounter_20;
int CurStateFrameCount_24;
int field_28;
int field_2C;
int field_30;
char field_34[4];
int field_38;
int field_3C;
int field_40;
char field_44[3];
char field_47;
u_char field_48;
u_char field_49;
char field_4A;
char field_4B;
MainCharacter player_4C;
SubCharacter other_char_1A0[6];
GsCOORDINATE2 coord_890[2];
GsCOORDINATE2 hero_neck_930;
GsCOORDINATE2 coord_980[8];
GsCOORDINATE2 coord_C00[12];
GsCOORDINATE2 coord_FC0[60];
char field_2280;
char field_2281;
char field_2282;
char field_2283;
int field_2284[2];
u_int field_228C;
int chara_flags_2290[2];
int AreaLoadType_2298;
int field_229C;
int flags_22A0;
int main_status_22A4;
int field_22A8[20];
GsCOORDINATE2 coord_22F8;
char field_2348;
char field_2349;
char field_234A;
char field_234B;
int field_234C;
char field_2350;
u_char cur_item_idx_mb_2351;
char field_2352;
char field_2353;
char field_2354;
char field_2355;
char field_2356;
char field_2357;
char field_2358;
char field_2359;
char field_235A;
char field_235B;
GsCOORDINATE2 *field_235C;
VECTOR3 field_2360;
GsCOORDINATE2 *field_236C;
__int16 field_2370;
__int16 field_2372;
__int16 field_2374;
__int16 field_2376;
__int16 field_2378;
__int16 cam_ang_y_237A;
__int16 cam_ang_z_237C;
__int16 field_237E;
int cam_r_xz_2380;
int cam_y_2384;
int field_2388;
int field_238C;
int field_2390;
int field_2394;
int field_2398;
char field_239C;
char field_239D;
char field_239E;
char field_239F;
__int16 field_23A0;
__int16 field_23A2;
char flags_23A4;
char field_23A5[3];
int field_23A8[11];
int field_23D4;
char flags_23D8;
char field_23D9[3];
int field_23DC[4];
int fog_params_23EC[7];
int field_2408;
int field_240C[12];
int field_243C;
int field_2440[13];
int field_2474[13];
int field_24A8[13];
int flags_24DC;
u_char unk_24E0[48];
int field_2510;
s_GameWork_2514 struct_2514;
int field_2534[4];
int field_2544[129];
__int16 field_2748;
int unk_274C[3];
__int16 field_2758;
__int16 unk_275A;
int field_275C;
int field_2760;
int field_2764;
};
enum ShMainLoopState0 : __int32
{
Unk0 = 0x0,
KonamiLogo = 0x1,
KCETLogo = 0x2,
StartMovieIntro = 0x3,
Unk4 = 0x4,
MovieIntroAlternate = 0x5,
MovieIntro = 0x6,
MainMenu = 0x7,
Unk8 = 0x8,
MovieOpening = 0x9,
LoadScreen = 0xA,
InGame = 0xB,
MapEvent = 0xC,
ReturnToGameplay = 0xD,
StatusScreen = 0xE,
MapScreen = 0xF,
Unk10 = 0x10,
MovieEnding = 0x11,
OptionScreen = 0x12,
LoadStatusScreen = 0x13,
LoadMapScreen = 0x14,
Unk15 = 0x15,
NumStates = 0x16,
};
struct ShControllerCfg
{
unsigned __int16 enter;
unsigned __int16 cancel;
unsigned __int16 skip;
unsigned __int16 action;
unsigned __int16 aim;
unsigned __int16 light;
unsigned __int16 run;
unsigned __int16 view;
unsigned __int16 step_l;
unsigned __int16 step_r;
unsigned __int16 pause;
unsigned __int16 item;
unsigned __int16 map;
unsigned __int16 option;
};
struct AnalogPadData
{
unsigned __int8 status;
unsigned __int8 data_format;
unsigned __int16 digitalButtons;
unsigned __int8 right_x;
unsigned __int8 right_y;
unsigned __int8 left_x;
unsigned __int8 left_y;
};
enum __bitmask PadButton : __int32
{
PadSelect = 0x1,
PadL3 = 0x2,
PadR3 = 0x4,
PadStart = 0x8,
PadDpadUp = 0x10,
PadDpadRight = 0x20,
PadDpadDown = 0x40,
PadDpadLeft = 0x80,
PadL2 = 0x100,
PadR2 = 0x200,
PadL1 = 0x400,
PadR1 = 0x800,
PadTriangle = 0x1000,
PadCircle = 0x2000,
PadCross = 0x4000,
PadSquare = 0x8000,
LSUp2 = 0x10000,
LSRight2 = 0x20000,
LSDown2 = 0x40000,
LSLeft2 = 0x80000,
RSUp = 0x100000,
RSRight = 0x200000,
RSDown = 0x400000,
RSLeft = 0x800000,
LSUp = 0x1000000,
LSRight = 0x2000000,
LSDown = 0x4000000,
LSLeft = 0x8000000,
};
struct ControllerData
{
AnalogPadData AnalogPad;
int field_8;
PadButton btns_held_C;
PadButton btns_new_10;
char field_14[4];
PadButton field_18;
int field_1C;
char field_20;
char field_21;
char field_22;
char field_23;
char field_24;
char field_25;
char field_26;
char field_27;
int field_28;
};
struct ShInventoryItem
{
u_char id;
u_char count;
u_char unk_2;
u_char unk_3;
};
struct ShSaveGame
{
ShInventoryItem items_0[40];
char field_A0;
char field_A1[3];
char cur_map_overlay_num_A4;
char field_A5;
__int16 savegame_count_A6;
char savegame_name_A8;
u_char curMapIndex_A9;
char field_AA;
u_char field_AB;
u_int flags_AC;
int field_B0[45];
int field_164;
int event_flags_168[6];
int field_180[2];
int field_188;
int field_18C;
int field_190[4];
int field_1A0;
int field_1A4[12];
int map_flags_1D4[2];
int field_1DC;
int field_1E0[22];
int field_238;
__int16 field_23C;
char field_23E;
char field_23F;
int player_fieldB0_240;
int player_pos_x_244;
__int16 player_rot_yaw_248;
char field_24A;
char field_24B;
int player_pos_z_24C;
int game_play_timer_250;
int field_254;
int field_258;
int field_25C;
int field_260;
__int16 field_264;
__int16 field_266;
__int16 field_268;
__int16 field_26A;
__int16 field_26C;
__int16 field_26E;
__int16 field_270;
__int16 field_272;
__int16 field_274;
__int16 field_276;
__int16 field_278;
char field_27A;
char field_27B;
};
struct ControllerPacket
{
AnalogPadData AnalogPad;
u_char unk_8[28];
};
enum ShInGameState0 : __int32
{
Gameplay = 0x0,
OptionsMenu = 0x1,
StatusMenu = 0x2,
FMV = 0x4,
LoadArea1 = 0x5,
LoadArea2 = 0x6,
ReadMessage = 0x7,
SaveMenu1 = 0x8,
SaveMenu2 = 0x9,
Unk11 = 0xB,
Unk12 = 0xC,
GameOver = 0xD,
GamePaused = 0xE,
};
struct SubCharacterFlags
{
u_char anim_status_mb_0;
u_char SubCharacterFlags_field_1;
u_short char_flags_2;
int SubCharacterFlags_field_4;
__int16 SubCharacterFlags_field_8;
__int16 SubCharacterFlags_field_A;
u_int SubCharacterFlags_field_C;
u_int SubCharacterFlags_field_10;
};
struct SubCharacter
{
char chara_type_0;
char SubCharacter_field_1;
char SubCharacter_field_2;
char SubCharacter_field_3;
SubCharacterFlags flags_4;
VECTOR3 position_18;
SVECTOR rotation_24;
SVECTOR rot_spd_2C;
int SubCharacter_field_34;
int chara_mv_spd_38;
__int16 chara_mv_ang_y_3C;
u_short flags_3E;
char SubCharacter_field_40;
char SubCharacter_field_41;
__int16 SubCharacter_field_42;
__int16 SubCharacter_field_44;
u_char SubCharacter_field_46;
u_char SubCharacter_field_47;
u_char SubCharacter_field_48;
u_char SubCharacter_unk_49[3];
int SubCharacter_field_4C;
__int16 SubCharacter_field_50;
__int16 SubCharacter_field_52;
__int16 SubCharacter_field_54;
__int16 SubCharacter_field_56;
int SubCharacter_field_58;
VECTOR3 SubCharacter_field_5C;
VECTOR3 SubCharacter_field_68;
int SubCharacter_unk_74[3];
VECTOR3 SubCharacter_field_80;
VECTOR3 SubCharacter_field_8C;
VECTOR3 SubCharacter_field_98;
int SubCharacter_unk_A4[3];
int health_B0;
int SubCharacter_field_B4;
int SubCharacter_field_B8;
int SubCharacter_field_BC;
int SubCharacter_field_C0;
u_short battle__dead_timer_C4;
__int16 SubCharacter_field_C6;
__int16 SubCharacter_field_C8;
__int16 SubCharacter_field_CA;
char SubCharacter_field_CC[2];
__int16 SubCharacter_field_CE;
__int16 SubCharacter_field_D0;
__int16 SubCharacter_field_D2;
__int16 SubCharacter_field_D4;
__int16 SubCharacter_field_D6;
__int16 SubCharacter_field_D8;
__int16 SubCharacter_field_DA;
__int16 SubCharacter_field_DC;
__int16 SubCharacter_field_DE;
int flags_E0;
int SubCharacter_field_E4;
int SubCharacter_field_E8;
int SubCharacter_field_EC;
int SubCharacter_field_F0;
int SubCharacter_field_F4;
int SubCharacter_field_F8;
int SubCharacter_field_FC;
int SubCharacter_field_100;
int SubCharacter_field_104;
int SubCharacter_field_108;
u_char SubCharacter_field_10C;
u_char SubCharacter_field_10D;
char SubCharacter_field_10E[2];
int SubCharacter_field_110;
int SubCharacter_field_114;
__int16 SubCharacter_field_118;
__int16 SubCharacter_field_11A;
int SubCharacter_field_11C;
__int16 SubCharacter_field_120;
__int16 SubCharacter_field_122;
__int16 SubCharacter_field_124;
u_short SubCharacter_field_126;
};
// weird struct that almost seems like the start of another SubCharacter, but only the first few fields
// maybe these fields are actually part of a base model struct, for something attached to player char?
struct MainCharacterExtra
{
char MainCharacterExtra_field_0;
char MainCharacterExtra_field_1;
u_char MainCharacterExtra_field_2;
char MainCharacterExtra_field_3;
SubCharacterFlags flags_4;
int MainCharacterExtra_field_18;
int MainCharacterExtra_field_1C;
int MainCharacterExtra_field_20;
int MainCharacterExtra_field_24;
int MainCharacterExtra_field_28;
};
struct MainCharacter
{
SubCharacter c;
MainCharacterExtra extra;
};
struct s_GameWork_2514
{
_BYTE gap0[2];
_WORD word2;
_DWORD dword4;
_BYTE gap8[3];
_BYTE byteB;
_DWORD dwordC;
_DWORD dword10;
_DWORD dword14;
_DWORD dword18;
_DWORD dword1C;
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment