16#include "ggxxacpr_c.h"
29 enum class Language : uint32_t {
40 enum class GameVersion : uint32_t {
41 ACCENT_CORE = GAME_VERSION_ACCENT_CORE,
42 PLUS_R = GAME_VERSION_PLUS_R,
45 enum class MenuItem : uint32_t {
46 ARCADE = MAIN_MENU_ITEM_ARCADE,
47 MOM = MAIN_MENU_ITEM_MOM,
48 VERSUS = MAIN_MENU_ITEM_VERSUS,
49 ONLINE = MAIN_MENU_ITEM_ONLINE,
50 VS_CPU = MAIN_MENU_ITEM_VS_CPU,
51 TEAM_VERSUS = MAIN_MENU_ITEM_TEAM_VERSUS,
52 TEAM_VS_CPU = MAIN_MENU_ITEM_TEAM_VS_CPU,
53 TRAINING = MAIN_MENU_ITEM_TRAINING,
54 SURVIVAL = MAIN_MENU_ITEM_SURVIVAL,
55 MISSION = MAIN_MENU_ITEM_MISSION,
56 STORY = MAIN_MENU_ITEM_STORY,
57 GALLERY = MAIN_MENU_ITEM_GALLERY,
58 REPLAY_THEATER = MAIN_MENU_ITEM_REPLAY_THEATER,
59 SOUND_TEST = MAIN_MENU_ITEM_SOUND_TEST,
63 enum class JobMode : uint32_t {
64 AUTO_LOAD = JOB_MODE_AUTO_LOAD,
65 AUTO_SAVE = JOB_MODE_AUTO_SAVE,
66 TITLE_SCREEN = JOB_MODE_TITLE_SCREEN,
67 INIT_GAME_INFO = JOB_MODE_INIT_GAME_INFO,
68 GAME_INIT = JOB_MODE_GAME_INIT,
69 BATTLE = JOB_MODE_BATTLE,
71 TITLE_MAIN = JOB_MODE_TITLE_MAIN,
72 MENUS = JOB_MODE_MENUS,
73 LOAD_CHAR_SELECT = JOB_MODE_LOAD_CHAR_SELECT,
74 LOAD_STAGE_SELECT = JOB_MODE_LOAD_STAGE_SELECT,
75 LOAD_VERSUS_SCREEN = JOB_MODE_LOAD_VERSUS_SCREEN,
76 LOAD_STORY_MODE_SPLASH_SCREEN = JOB_MODE_LOAD_STORY_MODE_SPLASH_SCREEN,
77 LOAD_WIN_SCREEN = JOB_MODE_LOAD_WIN_SCREEN,
78 LOAD_STORY_ENDING = JOB_MODE_LOAD_STORY_ENDING,
79 OPTION_MENU = JOB_MODE_OPTION_MENU,
80 DEBUG_SOUND_MENU = JOB_MODE_DEBUG_SOUND_MENU,
81 MISSION_MENU = JOB_MODE_MISSION_MENU,
82 STORY_INIT = JOB_MODE_STORY_INIT,
83 SREXEC = JOB_MODE_SREXEC,
84 CREXEC = JOB_MODE_CREXEC,
85 MOVIE_EXECUTE = JOB_MODE_MOVIE_EXECUTE,
87 MISSION_WIN = JOB_MODE_MISSION_WIN,
88 SURVIVAL_START = JOB_MODE_SURVIVAL_START,
89 GALLERY_MAIN = JOB_MODE_GALLERY_MAIN,
90 SURVIVAL = JOB_MODE_SURVIVAL,
91 TEAM_VS = JOB_MODE_TEAM_VS,
92 FRAMERATE_TEST = JOB_MODE_FRAMERATE_TEST,
93 REPLAY_SELECT = JOB_MODE_REPLAY_SELECT,
94 SOUND_MODE_EXECUTE = JOB_MODE_SOUND_MODE_EXECUTE,
95 VERSUS_SPLASH = JOB_MODE_VERSUS_SPLASH,
98 enum class GameModeFeatureFlags : uint32_t {
99 NONE = GAME_MODE_FEATURE_FLAGS_NONE,
100 P1_CONTROL = GAME_MODE_FEATURE_FLAGS_P1_CONTROL,
101 P2_CONTROL = GAME_MODE_FEATURE_FLAGS_P2_CONTROL,
102 TRAINING = GAME_MODE_FEATURE_FLAGS_TRAINING,
103 SURVIVAL = GAME_MODE_FEATURE_FLAGS_SURVIVAL,
104 DEMO = GAME_MODE_FEATURE_FLAGS_DEMO,
105 VERSUS = GAME_MODE_FEATURE_FLAGS_VERSUS,
106 VERSUS_CPU = GAME_MODE_FEATURE_FLAGS_VERSUS_CPU,
107 STORY = GAME_MODE_FEATURE_FLAGS_STORY,
108 MISSION = GAME_MODE_FEATURE_FLAGS_MISSION,
109 WATCH = GAME_MODE_FEATURE_FLAGS_WATCH,
110 FREE_PLAY = GAME_MODE_FEATURE_FLAGS_FREE_PLAY,
111 TEAM_VERSUS = GAME_MODE_FEATURE_FLAGS_TEAM_VERSUS,
114 enum class EntityId : uint16_t {
115 NONE = ENTITY_ID_NONE,
119 MILLIA = ENTITY_ID_MILLIA,
121 POTEMKIN = ENTITY_ID_POTEMKIN,
122 CHIPP = ENTITY_ID_CHIPP,
123 EDDIE = ENTITY_ID_EDDIE,
124 BAIKEN = ENTITY_ID_BAIKEN,
125 FAUST = ENTITY_ID_FAUST,
126 TESTAMENT = ENTITY_ID_TESTAMENT,
128 ANJI = ENTITY_ID_ANJI,
129 JOHNNY = ENTITY_ID_JOHNNY,
130 VENOM = ENTITY_ID_VENOM,
131 DIZZY = ENTITY_ID_DIZZY,
132 SLAYER = ENTITY_ID_SLAYER,
133 I_NO = ENTITY_ID_I_NO,
134 ZAPPA = ENTITY_ID_ZAPPA,
135 BRIDGET = ENTITY_ID_BRIDGET,
136 ROBO_KY = ENTITY_ID_ROBO_KY,
138 ORDER_SOL = ENTITY_ID_ORDER_SOL,
139 KLIFF = ENTITY_ID_KLIFF,
140 JUSTICE = ENTITY_ID_JUSTICE,
141 DIZZY_ENTITY_1 = ENTITY_ID_DIZZY_ENTITY_1,
142 MILLIA_ENTITY_1 = ENTITY_ID_MILLIA_ENTITY_1,
143 VENOM_ENTITY_1 = ENTITY_ID_VENOM_ENTITY_1,
144 EDDIE_ENTITY_SHADOW = ENTITY_ID_EDDIE_ENTITY_SHADOW,
145 KY_ENTITY = ENTITY_ID_KY_ENTITY,
146 FAUST_ENTITY_1 = ENTITY_ID_FAUST_ENTITY_1,
147 SOL_ENTITY = ENTITY_ID_SOL_ENTITY,
148 MILLIA_ENTITY_2 = ENTITY_ID_MILLIA_ENTITY_2,
149 JAM_ENTITY = ENTITY_ID_JAM_ENTITY,
150 VENOM_ENTITY_2 = ENTITY_ID_VENOM_ENTITY_2,
151 VENOM_ENTITY_3 = ENTITY_ID_VENOM_ENTITY_3,
152 MILLIA_ENTITY_3 = ENTITY_ID_MILLIA_ENTITY_3,
153 MAY_ENTITY_INSTANT_KILL_1 = ENTITY_ID_MAY_ENTITY_INSTANT_KILL_1,
154 BAIKEN_ENTITY = ENTITY_ID_BAIKEN_ENTITY,
155 BAIKEN_ENTITY_INSTANT_KILL = ENTITY_ID_BAIKEN_ENTITY_INSTANT_KILL,
156 CHIPP_ENTITY = ENTITY_ID_CHIPP_ENTITY,
157 POTEMKIN_ENTITY = ENTITY_ID_POTEMKIN_ENTITY,
158 JOHNNY_ENTITY = ENTITY_ID_JOHNNY_ENTITY,
159 FAUST_ENTITY_2 = ENTITY_ID_FAUST_ENTITY_2,
160 EDDIE_ENTITY = ENTITY_ID_EDDIE_ENTITY,
161 DIZZY_ENTITY_2 = ENTITY_ID_DIZZY_ENTITY_2,
162 MAY_ENTITY_1 = ENTITY_ID_MAY_ENTITY_1,
163 MAY_ENTITY_2 = ENTITY_ID_MAY_ENTITY_2,
164 MAY_ENTITY_3 = ENTITY_ID_MAY_ENTITY_3,
165 FAUST_ENTITY_3 = ENTITY_ID_FAUST_ENTITY_3,
166 MAY_ENTITY_INSTANT_KILL_2 = ENTITY_ID_MAY_ENTITY_INSTANT_KILL_2,
167 ANJI_ENTITY = ENTITY_ID_ANJI_ENTITY,
168 AXL_ENTITY_1 = ENTITY_ID_AXL_ENTITY_1,
169 ANJI_ENTITY_BUTTERFLY = ENTITY_ID_ANJI_ENTITY_BUTTERFLY,
170 TESTAMENT_ENTITY_1 = ENTITY_ID_TESTAMENT_ENTITY_1,
171 TESTAMENT_ENTITY_2 = ENTITY_ID_TESTAMENT_ENTITY_2,
172 AXL_ENTITY_2 = ENTITY_ID_AXL_ENTITY_2,
173 TESTAMENT_ENTITY_CROW = ENTITY_ID_TESTAMENT_ENTITY_CROW,
174 JOHNNY_ENTITY_COIN = ENTITY_ID_JOHNNY_ENTITY_COIN,
175 I_NO_ENTITY = ENTITY_ID_I_NO_ENTITY,
176 ZAPPA_ENTITY_RAOU = ENTITY_ID_ZAPPA_ENTITY_RAOU,
177 SLAYER_ENTITY = ENTITY_ID_SLAYER_ENTITY,
178 ZAPPA_ENTITY = ENTITY_ID_ZAPPA_ENTITY,
179 ZAPPA_ENTITY_TRIPLETS = ENTITY_ID_ZAPPA_ENTITY_TRIPLETS,
180 BRIDGET_ENTITY_1 = ENTITY_ID_BRIDGET_ENTITY_1,
181 ZAPPA_ENTITY_SWORD = ENTITY_ID_ZAPPA_ENTITY_SWORD,
182 BRIDGET_ENTITY_2 = ENTITY_ID_BRIDGET_ENTITY_2,
183 ZAPPA_ENTITY_DOG = ENTITY_ID_ZAPPA_ENTITY_DOG,
184 ROBO_KY_ENTITY_1 = ENTITY_ID_ROBO_KY_ENTITY_1,
185 ROBO_KY_ENTITY_2 = ENTITY_ID_ROBO_KY_ENTITY_2,
186 ABA_ENTITY = ENTITY_ID_ABA_ENTITY,
187 ORDER_SOL_ENTITY_1 = ENTITY_ID_ORDER_SOL_ENTITY_1,
188 ORDER_SOL_ENTITY_2 = ENTITY_ID_ORDER_SOL_ENTITY_2,
189 KLIFF_ENTITY = ENTITY_ID_KLIFF_ENTITY,
190 JUSTICE_ENTITY_1 = ENTITY_ID_JUSTICE_ENTITY_1,
191 JUSTICE_ENTITY_2 = ENTITY_ID_JUSTICE_ENTITY_2,
192 BURST_ENTITY = ENTITY_ID_BURST_ENTITY,
195 enum class StageId : uint32_t {
196 GREY = STAGE_ID_GREY,
197 LONDON = STAGE_ID_LONDON,
198 COLONY = STAGE_ID_COLONY,
199 RUSSIA = STAGE_ID_RUSSIA,
200 CHINA = STAGE_ID_CHINA,
201 MAY_SHIP = STAGE_ID_MAY_SHIP,
202 ZEPP = STAGE_ID_ZEPP,
203 NIRVANA = STAGE_ID_NIRVANA,
204 PARIS = STAGE_ID_PARIS,
205 HELL = STAGE_ID_HELL,
206 GROVE = STAGE_ID_GROVE,
207 VERDANT = STAGE_ID_VERDANT,
208 CASTLE = STAGE_ID_CASTLE,
209 BABYLON = STAGE_ID_BABYLON,
210 PHANTOM_CITY = STAGE_ID_PHANTOM_CITY,
211 UNKNOWN = STAGE_ID_UNKNOWN,
212 FRASCO = STAGE_ID_FRASCO,
213 AD2172 = STAGE_ID_AD2172,
214 GRAVE = STAGE_ID_GRAVE,
215 HEAVEN = STAGE_ID_HEAVEN,
216 KOREA = STAGE_ID_KOREA,
218 LONDON_RELOAD = STAGE_ID_LONDON_RELOAD,
219 COLONY_RELOAD = STAGE_ID_COLONY_RELOAD,
220 RUSSIA_RELOAD = STAGE_ID_RUSSIA_RELOAD,
221 CHINA_RELOAD = STAGE_ID_CHINA_RELOAD,
222 MAY_SHIP_RELOAD = STAGE_ID_MAY_SHIP_RELOAD,
223 ZEPP_RELOAD = STAGE_ID_ZEPP_RELOAD,
224 NIRVANA_RELOAD = STAGE_ID_NIRVANA_RELOAD,
225 PARIS_RELOAD = STAGE_ID_PARIS_RELOAD,
226 HELL_RELOAD = STAGE_ID_HELL_RELOAD,
227 GROVE_RELOAD = STAGE_ID_GROVE_RELOAD,
228 VERDANT_RELOAD = STAGE_ID_VERDANT_RELOAD,
229 CASTLE_RELOAD = STAGE_ID_CASTLE_RELOAD,
230 BABYLON_RELOAD = STAGE_ID_BABYLON_RELOAD,
231 PHANTOM_CITY_RELOAD = STAGE_ID_PHANTOM_CITY_RELOAD,
232 UNKNOWN_RELOAD = STAGE_ID_UNKNOWN_RELOAD,
233 FRASCO_RELOAD = STAGE_ID_FRASCO_RELOAD,
234 AD2172_RELOAD = STAGE_ID_AD2172_RELOAD,
235 GRAVE_RELOAD = STAGE_ID_GRAVE_RELOAD,
236 HEAVEN_RELOAD = STAGE_ID_HEAVEN_RELOAD,
237 KOREA_RELOAD = STAGE_ID_KOREA_RELOAD,
239 LONDON_SLASH = STAGE_ID_LONDON_SLASH,
240 COLONY_SLASH = STAGE_ID_COLONY_SLASH,
241 RUSSIA_SLASH = STAGE_ID_RUSSIA_SLASH,
242 CHINA_SLASH = STAGE_ID_CHINA_SLASH,
243 MAY_SHIP_SLASH = STAGE_ID_MAY_SHIP_SLASH,
244 ZEPP_SLASH = STAGE_ID_ZEPP_SLASH,
245 NIRVANA_SLASH = STAGE_ID_NIRVANA_SLASH,
246 PARIS_SLASH = STAGE_ID_PARIS_SLASH,
247 HELL_SLASH = STAGE_ID_HELL_SLASH,
248 GROVE_SLASH = STAGE_ID_GROVE_SLASH,
249 VERDANT_SLASH = STAGE_ID_VERDANT_SLASH,
250 CASTLE_SLASH = STAGE_ID_CASTLE_SLASH,
251 BABYLON_SLASH = STAGE_ID_BABYLON_SLASH,
252 PHANTOM_CITY_SLASH = STAGE_ID_PHANTOM_CITY_SLASH,
253 UNKNOWN_SLASH = STAGE_ID_UNKNOWN_SLASH,
254 FRASCO_SLASH = STAGE_ID_FRASCO_SLASH,
255 AD2172_SLASH = STAGE_ID_AD2172_SLASH,
256 GRAVE_SLASH = STAGE_ID_GRAVE_SLASH,
257 HEAVEN_SLASH = STAGE_ID_HEAVEN_SLASH,
258 KOREA_SLASH = STAGE_ID_KOREA_SLASH,
261 enum class ColliderId : uint16_t {
262 DUMMY = COLLIDER_ID_DUMMY,
263 HIT_BOX = COLLIDER_ID_HIT_BOX,
264 HURT_BOX = COLLIDER_ID_HURT_BOX,
267 USE_EXTRA = COLLIDER_ID_USE_EXTRA,
270 ADJUST_PUSH = COLLIDER_ID_ADJUST_PUSH,
272 SPAWN = COLLIDER_ID_SPAWN,
273 UNKNOWN_6 = COLLIDER_ID_UNKNOWN_6,
277 enum class ActionState : uint32_t {
278 NONE = ACTION_STATE_NONE,
279 IS_ENTITY = ACTION_STATE_IS_ENTITY,
280 COLLIDES_WITH_P2 = ACTION_STATE_COLLIDES_WITH_P2,
281 COLLIDES_WITH_P1 = ACTION_STATE_COLLIDES_WITH_P1,
282 DRAW_SPRITE = ACTION_STATE_DRAW_SPRITE,
283 IS_AIRBORNE = ACTION_STATE_IS_AIRBORNE,
284 IS_IN_HITSTUN = ACTION_STATE_IS_IN_HITSTUN,
285 DISABLE_HITBOXES = ACTION_STATE_DISABLE_HITBOXES,
286 DISABLE_HURTBOXES = ACTION_STATE_DISABLE_HURTBOXES,
287 KNOCKED_DOWN = ACTION_STATE_KNOCKED_DOWN,
288 IS_IN_BLOCKSTUN = ACTION_STATE_IS_IN_BLOCKSTUN,
289 IS_CROUCHING = ACTION_STATE_IS_CROUCHING,
290 IS_CORNERED = ACTION_STATE_IS_CORNERED,
291 LANDING_FLAG = ACTION_STATE_LANDING_FLAG,
292 IS_AT_SCREEN_LIMIT = ACTION_STATE_IS_AT_SCREEN_LIMIT,
293 PROJECTILE_INVULN = ACTION_STATE_PROJECTILE_INVULN,
294 WAKEUP = ACTION_STATE_WAKEUP,
295 DISABLE_WAKEUP = ACTION_STATE_DISABLE_WAKEUP,
296 STRIKE_INVULN = ACTION_STATE_STRIKE_INVULN,
297 IS_IDLE = ACTION_STATE_IS_IDLE,
298 SUPER_FLASH = ACTION_STATE_SUPER_FLASH,
299 NO_COLLISION = ACTION_STATE_NO_COLLISION,
300 GRAVITY = ACTION_STATE_GRAVITY,
301 UNKNOWN_BIT_22 = ACTION_STATE_UNKNOWN_BIT_22,
302 THROW_INVULN = ACTION_STATE_THROW_INVULN,
303 UNKNOWN_BIT_24 = ACTION_STATE_UNKNOWN_BIT_24,
304 UNKNOWN_BIT_25 = ACTION_STATE_UNKNOWN_BIT_25,
305 UNKNOWN_BIT_26 = ACTION_STATE_UNKNOWN_BIT_26,
306 UNKNOWN_BIT_27 = ACTION_STATE_UNKNOWN_BIT_27,
307 UNKNOWN_BIT_28 = ACTION_STATE_UNKNOWN_BIT_28,
308 UNKNOWN_BIT_29 = ACTION_STATE_UNKNOWN_BIT_29,
309 IGNORE_RECEIVED_HIT_EFFECTS = ACTION_STATE_IGNORE_RECEIVED_HIT_EFFECTS,
310 DESPAWN = ACTION_STATE_DESPAWN,
313 enum class AttackState : uint32_t {
314 NONE = ATTACK_STATE_NONE,
315 IS_ATTACK = ATTACK_STATE_IS_ATTACK,
316 UNKNOWN_BIT_1 = ATTACK_STATE_UNKNOWN_BIT_1,
317 UNKNOWN_BIT_2 = ATTACK_STATE_UNKNOWN_BIT_2,
318 UNKNOWN_BIT_3 = ATTACK_STATE_UNKNOWN_BIT_3,
319 IN_GATLING_WINDOW = ATTACK_STATE_IN_GATLING_WINDOW,
320 SPECIAL_CANCEL_OKAY = ATTACK_STATE_SPECIAL_CANCEL_OKAY,
321 UNKNOWN_BIT_6 = ATTACK_STATE_UNKNOWN_BIT_6,
322 UNKNOWN_BIT_7 = ATTACK_STATE_UNKNOWN_BIT_7,
323 HOMING_JUMP_OKAY = ATTACK_STATE_HOMING_JUMP_OKAY,
324 KARA_FD_OKAY = ATTACK_STATE_KARA_FD_OKAY,
325 NO_SPECIAL_CANCEL = ATTACK_STATE_NO_SPECIAL_CANCEL,
326 IN_RECOVERY = ATTACK_STATE_IN_RECOVERY,
327 HAS_CONNECTED = ATTACK_STATE_HAS_CONNECTED,
328 UNKNOWN_BIT_13 = ATTACK_STATE_UNKNOWN_BIT_13,
329 UNKNOWN_BIT_14 = ATTACK_STATE_UNKNOWN_BIT_14,
330 UNKNOWN_BIT_15 = ATTACK_STATE_UNKNOWN_BIT_15,
331 JUMP_CANCELABLE = ATTACK_STATE_JUMP_CANCELABLE,
332 HAS_HIT_OPPONENT = ATTACK_STATE_HAS_HIT_OPPONENT,
333 UNKNOWN_BIT_18 = ATTACK_STATE_UNKNOWN_BIT_18,
334 UNKNOWN_BIT_19 = ATTACK_STATE_UNKNOWN_BIT_19,
335 UNKNOWN_BIT_20 = ATTACK_STATE_UNKNOWN_BIT_20,
336 UNKNOWN_BIT_21 = ATTACK_STATE_UNKNOWN_BIT_21,
337 UNKNOWN_BIT_22 = ATTACK_STATE_UNKNOWN_BIT_22,
338 UNKNOWN_BIT_23 = ATTACK_STATE_UNKNOWN_BIT_23,
341 enum class CommandState : uint32_t {
342 NONE = COMMAND_STATE_NONE,
343 NO_NEUTRAL = COMMAND_STATE_NO_NEUTRAL,
344 NO_FORWARD = COMMAND_STATE_NO_FORWARD,
345 NO_BACKWARD = COMMAND_STATE_NO_BACKWARD,
346 NO_CROUCH = COMMAND_STATE_NO_CROUCH,
347 NO_JUMP = COMMAND_STATE_NO_JUMP,
348 UNKNOWN_BIT_5 = COMMAND_STATE_UNKNOWN_BIT_5,
349 NO_ATTACK = COMMAND_STATE_NO_ATTACK,
350 UNKNOWN_BIT_7 = COMMAND_STATE_UNKNOWN_BIT_7,
351 GUARD = COMMAND_STATE_GUARD,
352 UNKNOWN_BIT_9 = COMMAND_STATE_UNKNOWN_BIT_9,
353 AIR_DASH = COMMAND_STATE_AIR_DASH,
354 UKEMI = COMMAND_STATE_UKEMI,
355 PREJUMP = COMMAND_STATE_PREJUMP,
356 DISABLE_THROW = COMMAND_STATE_DISABLE_THROW,
357 FAUST_CRAWL_FORWARD = COMMAND_STATE_FAUST_CRAWL_FORWARD,
358 FAUST_CRAWL_BACKWARD = COMMAND_STATE_FAUST_CRAWL_BACKWARD,
361 enum class GuardState : uint16_t {
362 NONE = GUARD_STATE_NONE,
363 STAND_BLOCKING = GUARD_STATE_STAND_BLOCKING,
364 CROUCH_BLOCKING = GUARD_STATE_CROUCH_BLOCKING,
365 AIR_BLOCKING = GUARD_STATE_AIR_BLOCKING,
366 FAULTLESS_DEFENSE = GUARD_STATE_FAULTLESS_DEFENSE,
367 UNKNOWN_BIT_4 = GUARD_STATE_UNKNOWN_BIT_4,
368 UNKNOWN_BIT_5 = GUARD_STATE_UNKNOWN_BIT_5,
369 IN_BLOCKSTUN = GUARD_STATE_IN_BLOCKSTUN,
370 UNKNOWN_BIT_7 = GUARD_STATE_UNKNOWN_BIT_7,
371 UNKNOWN_BIT_8 = GUARD_STATE_UNKNOWN_BIT_8,
372 GUARD_POINT = GUARD_STATE_GUARD_POINT,
373 ARMOR = GUARD_STATE_ARMOR,
374 PARRY_1 = GUARD_STATE_PARRY_1,
375 PARRY_2 = GUARD_STATE_PARRY_2,
376 UNKNOWN_BIT_13 = GUARD_STATE_UNKNOWN_BIT_13,
377 UNKNOWN_BIT_14 = GUARD_STATE_UNKNOWN_BIT_14,
378 UNKNOWN_BIT_15 = GUARD_STATE_UNKNOWN_BIT_15,
381 enum class BackgroundState : uint32_t {
382 NONE = BACKGROUND_STATE_NONE,
383 UNKNOWN_BIT_0 = BACKGROUND_STATE_UNKNOWN_BIT_0,
384 HUD_OFF = BACKGROUND_STATE_HUD_OFF,
385 DEFAULT = BACKGROUND_STATE_DEFAULT,
386 BLACK_BACKGROUND = BACKGROUND_STATE_BLACK_BACKGROUND,
387 POST_FLASH_DIM = BACKGROUND_STATE_POST_FLASH_DIM,
388 UNKNOWN_BIT_5 = BACKGROUND_STATE_UNKNOWN_BIT_5,
389 UNKNOWN_BIT_6 = BACKGROUND_STATE_UNKNOWN_BIT_6,
390 UNKNOWN_BIT_7 = BACKGROUND_STATE_UNKNOWN_BIT_7,
391 UNKNOWN_BIT_8 = BACKGROUND_STATE_UNKNOWN_BIT_8,
392 UNKNOWN_BIT_9 = BACKGROUND_STATE_UNKNOWN_BIT_9,
393 UNKNOWN_BIT_10 = BACKGROUND_STATE_UNKNOWN_BIT_10,
394 SUPER_FLASH = BACKGROUND_STATE_SUPER_FLASH,
395 UNKNOWN_BIT_12 = BACKGROUND_STATE_UNKNOWN_BIT_12,
396 UNKNOWN_BIT_13 = BACKGROUND_STATE_UNKNOWN_BIT_13,
397 FORCE_BREAK_SUPER_FLASH = BACKGROUND_STATE_FORCE_BREAK_SUPER_FLASH,
398 LIGHTNING = BACKGROUND_STATE_LIGHTNING,
401 enum class SpriteRenderState : uint32_t {
402 NONE = SPRITE_RENDER_STATE_NONE,
403 IGNORE_UNIVERSAL_Y_OFFSET = SPRITE_RENDER_STATE_IGNORE_UNIVERSAL_Y_OFFSET,
404 DEAD_ANGLE_OR_FRC_FLASH = SPRITE_RENDER_STATE_DEAD_ANGLE_OR_FRC_FLASH,
405 STROBE = SPRITE_RENDER_STATE_STROBE,
406 FIRE = SPRITE_RENDER_STATE_FIRE,
407 INSTALL_FLASH = SPRITE_RENDER_STATE_INSTALL_FLASH,
408 INVISIBLE = SPRITE_RENDER_STATE_INVISIBLE,
409 SILHOUETTE = SPRITE_RENDER_STATE_SILHOUETTE,
410 MOROHA_MODE_FLASH = SPRITE_RENDER_STATE_MOROHA_MODE_FLASH,
411 POISON_FLASH = SPRITE_RENDER_STATE_POISON_FLASH,
412 INSTANT_BLOCK_FLASH = SPRITE_RENDER_STATE_INSTANT_BLOCK_FLASH,
413 COUNTER_HIT_FLASH = SPRITE_RENDER_STATE_COUNTER_HIT_FLASH,
414 EASY_FRC_FLASH = SPRITE_RENDER_STATE_EASY_FRC_FLASH,
415 LIGHT_GREEN_FLASH = SPRITE_RENDER_STATE_LIGHT_GREEN_FLASH,
416 LIGHT_YELLOW_FLASH = SPRITE_RENDER_STATE_LIGHT_YELLOW_FLASH,
417 LIGHT_BLUE_FLASH = SPRITE_RENDER_STATE_LIGHT_BLUE_FLASH,
420 enum class DrawSpriteAttributes : uint16_t {
421 ALIGN_LEFT = ACPR_DRAW_SPRITE_ALIGN_LEFT,
422 ALIGN_X_CENTER = ACPR_DRAW_SPRITE_ALIGN_X_CENTER,
423 ALIGN_TOP = ACPR_DRAW_SPRITE_ALIGN_TOP,
424 ALIGN_Y_CENTER = ACPR_DRAW_SPRITE_ALIGN_Y_CENTER,
425 FLIP_TEXTURE_U = ACPR_DRAW_SPRITE_FLIP_TEXTURE_U,
426 FLIP_TEXTURE_Y = ACPR_DRAW_SPRITE_FLIP_TEXTURE_Y,
427 ROTATE_CCW_90 = ACPR_DRAW_SPRITE_ROTATE_CCW_90,
428 ROTATE_180 = ACPR_DRAW_SPRITE_ROTATE_180,
431 enum class RawControllerInput : uint32_t {
433 SELECT = INPUT_SELECT,
445 TOP_FACE = INPUT_TOP_FACE,
446 RIGHT_FACE = INPUT_RIGHT_FACE,
447 BOTTOM_FACE = INPUT_BOTTOM_FACE,
448 LEFT_FACE = INPUT_LEFT_FACE,
451 enum class TrainingState : uint16_t {
452 DEFAULT = ACPR_TRAINING_STATE_DEFAULT,
453 SWITCH = ACPR_TRAINING_STATE_SWITCH,
454 RECORDING_STANDBY = ACPR_TRAINING_STATE_RECORDING_STANDBY,
455 RECORDING_RECORD = ACPR_TRAINING_STATE_RECORDING_RECORD,
456 RECORDING_PLAYBACK = ACPR_TRAINING_STATE_RECORDING_PLAYBACK,
457 PRACTICE_UNUSED = ACPR_TRAINING_STATE_PRACTICE_UNUSED,
464 template<>
struct bitflags<ActionState> : std::true_type {};
465 template<>
struct bitflags<AttackState> : std::true_type {};
466 template<>
struct bitflags<CommandState> : std::true_type {};
467 template<>
struct bitflags<GuardState> : std::true_type {};
468 template<>
struct bitflags<BackgroundState> : std::true_type {};
469 template<>
struct bitflags<SpriteRenderState> : std::true_type {};
470 template<>
struct bitflags<RawControllerInput> : std::true_type {};
471 template<>
struct bitflags<GameModeFeatureFlags> : std::true_type {};
474 constexpr std::enable_if_t<bitflags<E>::value, E>
475 operator|(E a, E b)
noexcept {
476 using U = std::underlying_type_t<E>;
477 return static_cast<E
>(
478 static_cast<U
>(a) |
static_cast<U
>(b));
480 template <
typename E>
481 constexpr std::enable_if_t<bitflags<E>::value, E>
482 operator&(E a, E b)
noexcept {
483 using U = std::underlying_type_t<E>;
484 return static_cast<E
>(
485 static_cast<U
>(a) &
static_cast<U
>(b));
487 template <
typename E>
488 constexpr std::enable_if_t<bitflags<E>::value, E>
489 operator~(E flags)
noexcept {
490 using U = std::underlying_type_t<E>;
491 return static_cast<E
>(~static_cast<U>(flags));
493 template <
typename E>
494 constexpr std::enable_if_t<bitflags<E>::value, E>
495 operator|=(E& a, E b)
noexcept {
499 template <
typename E>
500 constexpr std::enable_if_t<bitflags<E>::value, E>
501 operator&=(E& a, E b)
noexcept {
508 using LocaleState = GGXXACPR_LocaleState;
509 using FiberData = GGXXACPR_FiberData;
510 using PlayerInput = GGXXACPR_PlayerInput;
511 using Collider = GGXXACPR_Collider;
512 using ActionHeader = GGXXACPR_ActionHeader;
513 using HitParam = GGXXACPR_HitParam;
514 using DamageParam = GGXXACPR_DamageParam;
515 using Screenshake = GGXXACPR_Screenshake;
516 using Vector = GGXXACPR_Vector;
517 using Color = GGXXACPR_Color;
518 using ColorVertex = GGXXACPR_ColorVertex;
519 using DrawSpriteParams = GGXXACPR_DrawSpriteParams;
520 using ReversalRecordingState = GGXXACPR_ReversalRecordingState;
521 using DummyRecordingState = GGXXACPR_DummyRecordingState;
523 using CharacterSpecific = GGXXACPR_CharacterSpecificVariables;
524 namespace CharacterSpecificStructs {
525 using Sol = GGXXACPR_CharacterSpecificVariables_Sol;
526 using May = GGXXACPR_CharacterSpecificVariables_May;
527 using Millia = GGXXACPR_CharacterSpecificVariables_Millia;
528 using Axl = GGXXACPR_CharacterSpecificVariables_Axl;
529 using Potemkin = GGXXACPR_CharacterSpecificVariables_Potemkin;
530 using Chipp = GGXXACPR_CharacterSpecificVariables_Chipp;
531 using Eddie = GGXXACPR_CharacterSpecificVariables_Eddie;
532 using Faust = GGXXACPR_CharacterSpecificVariables_Faust;
533 using Testament = GGXXACPR_CharacterSpecificVariables_Testament;
534 using Jam = GGXXACPR_CharacterSpecificVariables_Jam;
535 using Anji = GGXXACPR_CharacterSpecificVariables_Anji;
536 using Johnny = GGXXACPR_CharacterSpecificVariables_Johnny;
537 using Venom = GGXXACPR_CharacterSpecificVariables_Venom;
538 using Dizzy = GGXXACPR_CharacterSpecificVariables_Dizzy;
539 using Zappa = GGXXACPR_CharacterSpecificVariables_Zappa;
540 using Bridget = GGXXACPR_CharacterSpecificVariables_Bridget;
541 using RoboKy = GGXXACPR_CharacterSpecificVariables_RoboKy;
542 using ABA = GGXXACPR_CharacterSpecificVariables_ABA;
543 using OrderSol = GGXXACPR_CharacterSpecificVariables_OrderSol;
544 using Kliff = GGXXACPR_CharacterSpecificVariables_Kliff;
545 using Justice = GGXXACPR_CharacterSpecificVariables_Justice;
582 return (_rawX < 0 ? 1.0F : _rawX) / 1000.0F;
585 if (_rawY < 0 && _rawX < 0)
return 1.0F;
586 return (_rawY < 0 ? _rawX : _rawY) / 1000.0F;
620 raw->cameraXPos_actual,
621 raw->cameraYPos_actual
625 int left() {
return raw->leftEdgePos; }
627 int right() {
return left() + raw->cameraWidth_actual; }
631 int bottom() {
return raw->cameraYPos_actual + (raw->cameraHeight / 12); }
637 static_cast<int>(raw->cameraWidth_actual),
638 static_cast<int>(raw->cameraHeight)
651 return raw->zoomTimer;
685 return static_cast<EntityId
>(raw->id);
687 bool isFacingRight() {
688 return static_cast<bool>(raw->bIsFacingRight);
691 return static_cast<bool>(raw->bIsLeftSide);
693 ActionState actionState() {
694 return static_cast<ActionState
>(raw->actionState);
696 auto actId() {
return raw->actId; }
697 auto actTimer() {
return raw->actTimer; }
698 auto health() {
return raw->health; }
699 auto playerIndex() {
return raw->playerIndex; }
700 GuardState guardState() {
701 return static_cast<GuardState
>(raw->guardState);
703 AttackState attackState() {
704 return static_cast<AttackState
>(raw->attackState);
720 #ifdef __cpp_lib_span
726 std::span<GGXXACPR_Collider> colliders() {
727 return std::span(raw->colliderSetPtr, raw->boxCount);
734 std::span<GGXXACPR_Collider> extraColliders() {
735 return std::span<GGXXACPR_Collider>(raw->extraColliderSetPtr, raw->boxCount);
759 uint8_t
damage() {
return raw->actHeader.damage; }
768 #define SAFE_GET_PDATA_FN(TYPE, FIELD_NAME, DEFAULT) \
769 TYPE FIELD_NAME() { \
770 return raw->playerEntityDataPtr ? \
771 raw->playerEntityDataPtr->FIELD_NAME : \
775 SAFE_GET_PDATA_FN(uint16_t, tension, 0)
776 SAFE_GET_PDATA_FN(uint8_t, staggerShakeTime, 0)
777 SAFE_GET_PDATA_FN(uint16_t, currentGlobalProration, 0)
778 SAFE_GET_PDATA_FN(int16_t, negativePenaltyTimer, 0)
779 SAFE_GET_PDATA_FN(int16_t, throwProtectionTimer, 0)
780 SAFE_GET_PDATA_FN(int16_t, guardBar, 0)
781 SAFE_GET_PDATA_FN(int16_t, untechTimer, 0)
782 SAFE_GET_PDATA_FN(uint8_t, invulnCounter, 0)
783 SAFE_GET_PDATA_FN(int16_t, tensionGainPenaltyTimer, 0)
784 SAFE_GET_PDATA_FN(uint8_t, frcTime, 0)
785 SAFE_GET_PDATA_FN(uint8_t, frcLockoutTimer, 0)
786 SAFE_GET_PDATA_FN(uint8_t, instantBlockTimer, 0)
787 SAFE_GET_PDATA_FN(int16_t, instantBlockLockoutTimer, 0)
788 SAFE_GET_PDATA_FN(uint8_t, jumpCount, 0)
789 SAFE_GET_PDATA_FN(uint8_t, airDashCount, 0)
790 SAFE_GET_PDATA_FN(int16_t, dizzyBuildup, 0)
791 SAFE_GET_PDATA_FN(int16_t, dizzyDuration, 0)
792 SAFE_GET_PDATA_FN(
bool, cpu, false)
793 SAFE_GET_PDATA_FN(uint8_t, dizzyThreshold, 0)
794 SAFE_GET_PDATA_FN(CharacterSpecific, characterSpecific, CharacterSpecific{})
795 SAFE_GET_PDATA_FN(int16_t, tensionPulse, 0)
796 SAFE_GET_PDATA_FN(int16_t, comboTime, 0)
797 SAFE_GET_PDATA_FN(int16_t, burstMeter, 0)
798 SAFE_GET_PDATA_FN(int16_t, comboCounter, 0)
799 SAFE_GET_PDATA_FN(int32_t, cleanHitCounter, 0)
801 #undef SAFE_GET_PDATA_FN
806 void setActionState(ActionState state) {raw->actionState =
static_cast<uint32_t
>(state); };
807 void setHealth(uint16_t value) { raw->health = value; }
808 void setGuardState(GuardState state) {raw->guardState =
static_cast<uint16_t
>(state); }
809 void setAttackState(AttackState state) {raw->attackState =
static_cast<uint32_t
>(state); }
810 void setCommandState(CommandState state) {raw->commandFlags =
static_cast<uint32_t
>(state); }
811 void setScale(Scale
scale) {
812 raw->scale =
scale._rawX;
813 raw->scaleY =
scale._rawY;
815 void setPosition(WorldCoordinate pos) {
823 void setTension(uint16_t value) {
if (raw->playerEntityDataPtr) raw->playerEntityDataPtr->tension = value; }
824 void setGuardBar(int16_t value) {
if (raw->playerEntityDataPtr) raw->playerEntityDataPtr->guardBar = value; }
825 void setInvulnCounter(uint8_t value) {
if (raw->playerEntityDataPtr) raw->playerEntityDataPtr->invulnCounter = value; }
826 void setFRCTime(uint8_t value) {
if (raw->playerEntityDataPtr) raw->playerEntityDataPtr->frcTime = value; }
827 void setDizzyBuildup(int16_t value) {
if (raw->playerEntityDataPtr) raw->playerEntityDataPtr->dizzyBuildup = value; }
828 void setBurstMeter(int16_t value) {
if (raw->playerEntityDataPtr) raw->playerEntityDataPtr->burstMeter = value; }
831 GGXXACPR_Entity *raw;
851 return raw !=
nullptr && raw->id != 0;
861 return static_cast<EntityId
>(raw->id);
863 bool isFacingRight() {
864 return static_cast<bool>(raw->bIsFacingRight);
867 return static_cast<bool>(raw->bIsLeftSide);
869 Entity prev() {
return raw->prevPtr; }
870 Entity next() {
return raw->nextPtr; }
871 ActionState actionState() {
872 return static_cast<ActionState
>(raw->actionState);
881 auto actTimer() {
return raw->actTimer; }
886 GuardState guardState() {
887 return static_cast<GuardState
>(raw->guardState);
889 AttackState attackState() {
890 return static_cast<AttackState
>(raw->attackState);
906 #ifdef __cpp_lib_span
910 std::span<GGXXACPR_Collider> colliders() {
911 return std::span(raw->colliderSetPtr, raw->boxCount);
916 std::span<GGXXACPR_Collider> extraColliders() {
917 return std::span<GGXXACPR_Collider>(raw->extraColliderSetPtr, raw->boxCount);
945 uint8_t
damage() {
return raw->actHeader.damage; }
WorldCoordinate size()
Camera size dimensions in world coordinates.
Definition ggxxacpr.hpp:635
float zoomTimer()
The delay timer before the camera begins to zoom in.
Definition ggxxacpr.hpp:650
int right()
X-coordinate of the right edge of the screen.
Definition ggxxacpr.hpp:627
float zoom()
The zoom factor of the camera.
Definition ggxxacpr.hpp:646
int bottom()
Y-coordinate of the bottom edge of the screen.
Definition ggxxacpr.hpp:631
int left()
X-coordinate of the left edge of the screen.
Definition ggxxacpr.hpp:625
int top()
Y-coordinate of the top edge of the screen.
Definition ggxxacpr.hpp:629
WorldCoordinate position()
the camera position in world coordinates.
Definition ggxxacpr.hpp:618
uint8_t hitstopTime()
A counter for hitstop.
Definition ggxxacpr.hpp:949
WorldCoordinate position()
The position of the player.
Definition ggxxacpr.hpp:926
WorldCoordinate velocity()
Player velocity given in world coordinates per frame.
Definition ggxxacpr.hpp:930
Scale scale()
The scaling factor that should be applied to this player's colliders.
Definition ggxxacpr.hpp:904
uint8_t damage()
The damage value of the current action.
Definition ggxxacpr.hpp:945
auto playerIndex()
the player index of the player that owns this entity.
Definition ggxxacpr.hpp:885
ModelCoordinate corePos()
The position of the player's center point in model space.
Definition ggxxacpr.hpp:897
bool isValid()
Checks if the underlying reference is valid.
Definition ggxxacpr.hpp:850
int16_t drawPriority()
Determines which sprites draw in which order.
Definition ggxxacpr.hpp:941
Angle angle()
Angle of the entity's sprite.
Definition ggxxacpr.hpp:934
auto actId()
The current action id.
Definition ggxxacpr.hpp:880
GGXXACPR_Entity * getRaw()
Returns the underlying GGXXACPR_Entity struct pointer.
Definition ggxxacpr.hpp:856
Scale scale()
The scaling factor that should be applied to this player's colliders.
Definition ggxxacpr.hpp:718
WorldCoordinate position()
The position of the player.
Definition ggxxacpr.hpp:744
bool isValid()
Checks if the underlying reference is valid.
Definition ggxxacpr.hpp:677
uint8_t hitstopTime()
A counter for hitstop.
Definition ggxxacpr.hpp:763
uint8_t damage()
The damage value of the current action.
Definition ggxxacpr.hpp:759
GGXXACPR_Entity * getRaw()
Returns the underlying GGXXACPR_Entity struct pointer.
Definition ggxxacpr.hpp:681
WorldCoordinate velocity()
Player velocity given in world coordinates per frame.
Definition ggxxacpr.hpp:748
ModelCoordinate corePos()
The position of the player's center point in model space.
Definition ggxxacpr.hpp:711
int16_t drawPriority()
Determines which sprites draw in which order.
Definition ggxxacpr.hpp:755
Definition ggxxacpr_c.h:593
Definition ggxxacpr_c.h:1045
Definition ggxxacpr.hpp:589
float degrees()
degree approximation
Definition ggxxacpr.hpp:597
float radian()
radian approximation
Definition ggxxacpr.hpp:601
uint16_t rawValue
65536 units per full rotation (i.e. UINT16_MAX)
Definition ggxxacpr.hpp:593
A point in model space.
Definition ggxxacpr.hpp:569
Render scale for sprites.
Definition ggxxacpr.hpp:578
A point in the world.
Definition ggxxacpr.hpp:558
Definition ggxxacpr.hpp:463