SuperMarioOdysseyOnline/include/algorithms/PlayerAnims.h
Nick Renieris 60a5179e4b Anims/Types: Handle out of bounds FindStr accesses without throwing
Throwing tries to call `std::__throw_out_of_range_fmt` which results in a crash.
The cause of the out of bounds accesses needs to be investigated.
2022-06-23 20:56:05 -04:00

1163 lines
No EOL
39 KiB
C++

#pragma once
#include <cstddef>
#include "crc32.h"
#include "basis/seadTypes.h"
namespace PlayerAnims {
enum class Type : s16 {
Unknown = -1,
// Action Names
ChairSitDown,
DamageDown,
DamageDownSwim,
DamageDownSwimSurface,
DemoWorldMoveForwardFirst,
DemoWorldMoveForwardNormal,
MotorcycleRide,
MotorcycleRideClash,
MotorcycleRideJump,
MotorcycleRideLand,
MotorcycleRideRunStart,
Move,
MoveMoon,
ExitPictureDown,
NoDamageDown,
NoDamageDownSwim,
NoDamageDownSwimSurface,
RestartSpinJumpL,
RestartSpinJumpR,
JumpCapCatch,
JumpCapCatchAir,
SandWait,
SandWalk,
StartSpinJumpL,
StartSpinJumpR,
SwimSurfaceNormal,
SwimSurfaceCarry,
DemoGetShineGrandStartNormal,
DemoGetShineGrandStartEmpty,
DemoCapOffWait,
// Anim Names
AreaWait64,
AreaWaitAloha,
AreaWaitBalance,
AreaWaitBeach,
AreaWaitCold,
AreaWaitDance01,
AreaWaitDance02,
AreaWaitDance03,
AreaWaitFight,
AreaWaitGetwarm,
AreaWaitGuitar,
AreaWaitHeatGround,
AreaWaitHot,
AreaWaitJog,
AreaWaitLookUp,
AreaWaitSayCheese,
AreaWaitScared,
AreaWaitSearch,
AreaWaitSigh,
AreaWaitSitDown,
AreaWaitSleepy,
AreaWaitSmell,
AreaWaitStink,
AreaWaitStretch,
AreaWaitView,
AreaWaitWaterfall,
AreaWaitWonder,
ArrowShoot,
ArrowShootStart,
BallToss,
BallTossGround,
BattleWait,
BedSleep,
BedSleepStart,
BedSnooze,
BedSnoozeStart,
BikeRide,
Bind,
Brake,
BubbleJump,
BubbleStart,
BubbleWait,
CanoeDamage,
CanoeDamageEnd,
CanoeDamageStart,
CanoePaddle,
CanoeTurnL,
CanoeTurnR,
CanoeWait,
Carry,
CarryFront,
CarryFrontStart,
CarryFrontThrow,
CarryUp,
CarryUpStart,
CarryUpThrow,
CatapultStart,
CatchCap,
CatchCapJump,
CatchCapJumpParts,
CatchCapJumpPartsReverse,
CatchCapParts,
CatchKoopaCap,
ClashWorldStandUp,
ClimbTreeHandStandWait,
Damage,
DamageLand,
DamageSwim,
DamageSwimSurface,
DamageSwimSurfaceLand,
DamageWait,
Dash,
DashBrake,
DashFast,
DashTurn,
Dead,
Dead01,
Dead02,
Dead03,
Dead04,
DeadFall,
DeadFire,
DeadIce,
DeadPoison,
DeadSand,
DeadWallow,
DeadWater,
DemoAppearFromHome,
DemoBattleEndGiantWanderBoss,
DemoBattleStartBossKnuckle,
DemoBattleStartBreeda,
DemoBattleStartBreedaFirst,
DemoBattleStartGolemClimb,
DemoBossRaidAttack,
DemoCrashHome,
DemoCrashHomeFall,
DemoEnding01,
DemoEnding02,
DemoEnding03,
DemoEnding04,
DemoEnterChurch,
DemoGetShine,
DemoGetShineCloseUp,
DemoGetShineEnd,
DemoGetShineGrandCloseUp,
DemoGetShineGrandCloseUpEnd,
DemoGetShineGrandEnd,
DemoGetShineGrandStart,
DemoGetShineLand,
DemoGetShinePaper,
DemoGetShineRock,
DemoGetShineScissors,
DemoGetShineStart,
DemoHackFirst,
DemoHackKoopa01,
DemoHackKoopa02,
DemoJangoCapSearch,
DemoJangoGetUp,
DemoJangoLookAround,
DemoJangoStolen,
DemoJangoStolenLoop,
DemoMeetCapNpcC01,
DemoMeetCapNpcC01TalkWait,
DemoMeetCapNpcC02,
DemoMeetCapNpcC02ATalkWait,
DemoMeetCapNpcC02BTalkWait,
DemoMeetCapNpcC03,
DemoMeetCapNpcC04TalkWait,
DemoMeetCapNpcC06TalkWait,
DemoMeetCapNpcC07TalkWait,
DemoMeetCapNpcC08TalkWait,
DemoMeetCapNpcC10A,
DemoMeetCapNpcC10ATalkWait,
DemoMeetCapNpcC10B,
DemoMeetCapNpcC10BTalkWait,
DemoOpening01,
DemoOpeningCap,
DemoOpeningDown,
DemoPayToHome,
DemoReset,
DemoReturnToHome,
DemoSitDownTalk,
DemoSitDownWaitFirst,
DemoStartJango,
DemoStartJango2,
DemoStartUpHome,
DemoStartUpHomeSky,
DemoStartWaterfall,
DemoTakeOffKoopaForMoon,
DemoTalkCapManHeroAppear,
DemoTalkCapManHeroWalk,
DemoWarpEnd,
DemoWarpStart,
DemoWorldLavaScenario1End,
DemoWorldMoveBackward,
DemoWorldMoveBackward1,
DemoWorldMoveBackward2,
DemoWorldMoveBackward3,
DemoWorldMoveForward,
DemoWorldMoveForwardArrive,
DemoWorldMoveForwardNormal1,
DemoWorldMoveForwardNormal2,
DemoWorldMoveForwardNormal3,
DemoWorldMoveMoonBackward,
DemoWorldMoveMoonForward,
DemoWorldMoveMoonForwardFirst,
DemoWorldTakeoff,
DemoWorldTakeoffEast,
DemoWorldTakeoffForMoon,
DemoWorldTakeoffForMoonFirst,
DemoWorldTakeoffForMoonFirstTuxedo,
DemoWorldTakeoffWest,
DemoWorldWarpHole01,
DemoWorldWarpHole02,
DemoWorldWarpHole03,
Dive,
DiveInWater,
DokanIn,
DokanInHome,
DokanInUpsideDown,
DokanJump,
DokanOut,
DokanOutUpsideDown,
DokanReady,
DokanReadyHome,
DokanSideIn,
DokanSideOut,
DoorIn,
DoorOut,
DoorStart,
Fall,
Fire,
FireRun,
FireRunStart,
GetShine,
GetShineCity,
GetShineEmpty,
GetShineGrand,
GetShineSub,
GrabCeilJump,
GrabCeilStart,
GrabCeilSwing,
GrabCeilWait,
Hack,
HeadSliding,
HeadSlidingStart,
HipDrop,
HipDropLand,
HipDropReaction,
HipDropStart,
HomeCapManHeroAppear,
Jump,
Jump2,
Jump3,
JumpBack,
JumpBroad,
JumpBroad2,
JumpBroad3,
JumpBroad4,
JumpBroad5,
JumpBroad6,
JumpBroad7,
JumpBroad8,
JumpBroad9,
JumpCapCatchCommon,
JumpCapLeapFrog,
JumpDashFast,
JumpEndHack,
JumpFlap,
JumpHipDrop,
JumpInterp,
JumpNpcTrample,
JumpObjectReaction,
JumpReverse,
JumpReverseInterp,
JumpTurn,
Kick,
KoopaCapPunchFinishL,
KoopaCapPunchFinishLStart,
KoopaCapPunchFinishR,
KoopaCapPunchFinishRStart,
KoopaCapPunchL,
KoopaCapPunchLStart,
KoopaCapPunchR,
KoopaCapPunchRStart,
KoopaDemoBattleStartChurchFirstLv2,
KoopaDemoBattleStartChurchLv2,
KoopaDemoBattleStartChurchSecondLv2,
KoopaDemoBattleStartFirstLv1,
KoopaDemoBattleStartFirstLv2,
KoopaDemoBattleStartSecondLv1,
KoopaDemoBattleStartSecondLv2,
KoopaDemoBattleStartTalkBlendLv1,
KoopaDemoClashBasement,
Land,
LandDownFall,
LandJump3,
LandRolling,
LandStiffen,
LandTurn,
MainScenarioCameraWait,
MofumofuDemoOpening1,
MofumofuDemoOpening2,
MotorcycleRideC,
MotorcycleRideClashC,
MotorcycleRideClashL,
MotorcycleRideClashR,
MotorcycleRideJumpC,
MotorcycleRideJumpL,
MotorcycleRideJumpR,
MotorcycleRideL,
MotorcycleRideLandC,
MotorcycleRideLandL,
MotorcycleRideLandR,
MotorcycleRideOn,
MotorcycleRideR,
MotorcycleRideRunStartC,
MotorcycleRideRunStartL,
MotorcycleRideRunStartR,
MotorcycleRideStart,
MotorcycleRideStartL,
MotorcycleRideStartR,
MotorcycleWait,
OpeningStandUp,
PauseMenu2Player,
PauseMenuContinue,
PauseMenuContinueEnd,
PauseMenuData,
PauseMenuHelp,
PauseMenuNewGame,
PauseMenuSave,
PauseMenuStart,
PauseMenuWait,
PoleCatch,
PoleClimb,
PoleFall,
PoleHandStandEnd,
PoleHandStandJump,
PoleHandStandStart,
PoleHandStandTurn,
PoleHandStandWait,
PoleTurn,
PoleWait,
Punch,
Push,
RabbitGet,
RaceManHack,
RaceManHackEnd,
RaceManHackStart,
RaceManJumpEnd,
RaceManJumpStart,
RaceManResultLose,
RaceManResultWin,
RaceResultLose,
RaceResultWin,
ReactionCapOn,
Rolling,
RollingEnd,
RollingEndBackUp,
RollingJump,
RollingLand,
RollingStandUp,
RollingStart,
RoswellPut,
RoswellRun,
RoswellThrow,
RoswellWait,
Run,
RunMoon,
RunStart,
SandWaitNormal,
SandWaitStrong,
SandWalkNormal,
SandWalkStrong,
SitDown,
SitDownEnd,
SitDownLand,
SitDownSleep,
SitDownSleepEnd,
SitDownSleepStart,
SitDownStart,
Sleep,
SleepStart,
Slide,
SlopeSlide,
SlopeSlideBack,
Snooze,
SnoozeStart,
SphinxRideClash,
SphinxRideFall,
SphinxRideGetOn,
SphinxRideJump,
SphinxRideJumpStart,
SphinxRideOn,
SphinxRideRide,
SphinxRideRideOn,
SphinxRideRideStartL,
SphinxRideRideStartR,
SphinxRideRunSlow,
SphinxRideStop,
SphinxRideStopStart,
SpinCap,
SpinCapAirStart,
SpinCapAirStartCapCatch,
SpinCapAirStartDoubleDown,
SpinCapAirStartDoubleLeft,
SpinCapAirStartDoubleRight,
SpinCapAirStartDoubleUp,
SpinCapAirStartLeft,
SpinCapAirStartLong,
SpinCapAirStartRight,
SpinCapEnd,
SpinCapJumpStart,
SpinCapStart,
SpinCapStart2Left,
SpinCapStart2Right,
SpinCapStart3Left,
SpinCapStart3Right,
SpinCapStartCapCatch,
SpinCapStartDoubleDown,
SpinCapStartDoubleLeft,
SpinCapStartDoubleRight,
SpinCapStartDoubleUp,
SpinCapStartLeft,
SpinCapStartLong,
SpinCapStartRight,
SpinCapStartRolling,
SpinCapWait,
SpinGroundL,
SpinGroundR,
SpinJump,
SpinJumpDownFall,
SpinJumpDownFallL,
SpinJumpDownFallR,
SpinJumpL,
SpinJumpLoop,
SpinJumpR,
SpinJumpStart,
SpinSeparate,
SpinSeparateSwim,
SquatEnd,
SquatLand,
SquatStart,
SquatWait,
SquatWalk,
StabStart,
StabUndarWait,
StabUnderStart,
StabWait,
StabWallWait,
SwimDieOver,
SwimDive,
SwimFallIn,
SwimHeadSliding,
SwimHeadSlidingEnd,
SwimHeadSlidingIn,
SwimHeadSlidingStart,
SwimHipDrop,
SwimHipDropLand,
SwimHipDropStart,
SwimJumpHipDrop,
SwimLand,
SwimSpinCapStart,
SwimSpinCapStartDoubleDown,
SwimSpinCapStartDoubleLeft,
SwimSpinCapStartDoubleRight,
SwimSpinCapStartDoubleUp,
SwimSpinCapStartLeft,
SwimSpinCapStartRight,
SwimSquat,
SwimSquatWalk,
SwimStand,
SwimStandMove,
SwimStandSurface,
SwimStandWait,
SwimSurface,
SwimTalkWait,
SwimTrample,
SwimTrampoline,
SwimWait,
SwimWalk,
TalkEnd,
TalkTurn,
TalkTurnL90,
TalkTurnR90,
TalkWait,
TestDemoDiverA,
TestDemoDiverB,
TestDemoE3001,
TestRunBack,
TestRunFront,
TestRunLeft,
TestRunRight,
TestRunWait,
ThrowCap,
ThrowCapJump,
ThrowCapJumpParts,
ThrowCapParts,
TouchJump,
TouchJumpLong,
TouchJumpLongSign,
TractorBubbleEmd,
TractorBubbleEnd,
TractorBubbleStart,
TractorBubbleWait,
TreeClimb,
TreeFall,
Turn,
TurnPoint,
TurnStep,
Wait,
WaitCold,
WaitDemo,
WaitDigPoint,
WaitHot,
WaitRelax,
WaitRelaxStart,
WaitVeryCold,
Walk,
WalkDemo,
WalkSoft,
WallCatch,
WallCatchEnd,
WallCatchEndFast,
WallCatchEndJump,
WallCatchMoveL,
WallCatchMoveR,
WallCatchStart,
WallJump,
WallKeep,
WallKeepReverse,
WallLand,
WallSlideL,
WallSlideR,
WarpIn,
WarpOut,
WarpWait,
WaterRoadMove,
WearEnd,
WhipAttackEnd,
WhipAttackStart,
WhipAttackWait,
WhipWait,
WorldWarpBind,
WorldWarpBindStart,
WorldWarpIn,
WorldWarpOut,
// Capture Anims
BubbleCannonJump,
Down,
HackCancelJump,
HackHighJump,
HackJump,
HackStart,
HackStartDown,
HackWait,
HackWaitSpeedy,
LandFrontDown,
LandFrontUp,
MoveSpeedy,
Up,
Angry,
AppearSign,
AppearStart,
AttackSuccess,
Blow,
BlowDown,
Clash,
Coverd,
DamageCap,
Find,
HackCharge,
HackChargeFull,
HackChargeTurn,
HackRunCoverd,
PressDown,
RunCoverd,
RunNaked,
Swoon,
SwoonEnd,
SwoonStart,
Trampled,
TrampledEnd,
TurnCoverd,
TurnNaked,
BlowEnd,
BlowSign,
BlowStart,
BlowWide,
Reaction,
Charge,
ChargeStart,
Dummy,
Idle,
ReactionCap,
ReactionCapSand,
ReactionJump,
ReactionJumpSand,
RunHack,
RunStartHack,
WaitHack,
Attack,
AttackHit,
AttackSecond,
AttackSecondSign,
AttackSign,
HackAttack,
HackAttackJump,
HackAttackMiss,
HackAttackQuick,
HackJumpEnd,
HackJumpHigh,
JumpEnd,
JumpStart,
PressDownBlow,
PressDownPress,
SwoonStartLand,
HighFall,
HighJump,
LandSwim,
NpcFall,
NpcJump,
NpcJumpStart,
RunFast,
RunSlow,
RunStay,
Swim,
SwimHackStart,
SwimReaction,
SwimSwoon,
SwimSwoonEnd,
SwimSwoonStart,
SwimSwoonStartLand,
SwoonStartFall,
UpperPunch,
Appear,
Shot,
SwoonTrampled,
AttackEnd,
AttackStart,
MoveEnd,
MoveStart,
Recover,
Trample,
Expand,
ExpandAir,
ExpandEnemy,
ExpandSign,
ExpandSignEnemy,
ExpandWait,
ExpandWaitEnd,
Hold,
Shrink,
ShrinkAir,
ShrinkReactionHead,
ShrinkReactionHip,
TurnEnemy,
TurnHack,
WaitAir,
FallNormal,
Glide,
GlideDrop,
GlideL,
GlideLStart,
GlideR,
GlideRStart,
GlideRise,
GlideStart,
HackEnd,
HackEndFly,
JumpEndNormal,
ReactionTrampled,
Talk,
WaitNormal,
WaitSandSink,
AttackTrample,
AttackUp,
Break,
BreakGroundHit,
BreakReaction,
BreakWait,
FallFly,
Fly,
FlyChase,
FlyWait,
RecoverSign,
Boost,
BoostStart,
Explosion,
FallDown,
FlyWaitStart,
Standby,
Turbo,
AttackTower,
DashTower,
DashTowerBottom,
FallTower,
FindTower,
HackEndTower,
JumpTower,
LandTower,
Miss,
MissTower,
PressDownTower,
Reset,
RideOn,
RideOnTower,
RunTower,
RunTowerBottom,
SandGeyser,
SandGeyserTower,
SandWaitTower,
SandWalkTower,
SlideTower,
SwoonLoop,
WaitTower,
WalkTower,
WalkTowerBottom,
EnemyRun,
HackRun,
Choke,
ChokeEnd,
ChokeStart,
HackStartChoke,
Look,
Swallow,
SwoonChoke,
SwoonEndChoke,
SwoonStartChoke,
Vomit,
WaitChoke,
DashR,
FishingUp,
FishingUpGold,
JumpGround,
ReactionWall,
RollingRail,
RollingRailReverse,
RollingReverse,
SwimStart,
SwimSurfaceEnemy,
SwimWaitStart,
TurnPlayer,
WaitGround,
AdlibWait,
Generate,
JumpEndHigh,
JumpEndLow,
Stretch,
StretchFall,
StretchRun,
StretchWait,
UpperObjStart,
UpperObjWait,
BlowDownCommon,
PressDownCommon,
Reload,
Shoot,
SwoonReaction,
AttackMove,
AttackMoveForest,
AttackWaitL,
AttackWaitR,
DashAfterL,
DashAfterR,
DashL,
EnemyAttack,
EnemyAttackL,
EnemyAttackLEnd,
EnemyAttackLStart,
EnemyAttackR,
EnemyAttackREnd,
EnemyAttackRStart,
EnemyAttackSign,
EnemyFall,
EnemyFallStart,
EnemyLand,
EnemyRunStart,
FindMario,
FootHoldJumpL,
FootHoldJumpR,
FootHoldL,
FootHoldR,
HackStartShort,
HackStartWithTurn,
ListPose,
Lost,
MoveTouch,
NoticeSniff,
ReactionSeaOfTrees,
RunAfterL,
RunAfterR,
RunL,
RunR,
RunStartL,
RunStartR,
SleepReactionHipDrop,
SleepSeaOfTrees,
SwoonStartDashClash,
TurnEndL,
TurnEndR,
TurnL180,
TurnL90,
TurnR180,
TurnR90,
WaitL,
WaitR,
WaitSniff,
WakeUpSwoonStart,
WalkAfterL,
WalkAfterR,
WalkEndL,
WalkEndR,
WalkGroundL,
WalkGroundR,
WalkL,
WalkR,
WalkStart,
WalkStartL,
WalkStartR,
AppearBall,
JumpStick,
SpinL,
SpinR,
SpinThrustL,
SpinThrustR,
Stick,
StickBendHorizontal,
StickBendVertical,
Thrust,
ThrustCancel,
ThrustEnd,
ThrustSign,
ThrustWait,
TrampleDown,
AttackPull,
Back,
BackEnd,
BackReturn,
HackDash,
HackDashPull,
HackMove,
HackPull,
HackPullStart,
HitAction,
HitEnd,
HoleIn,
Return,
Bubble,
// All Capture Actions
Bull,
Byugo,
BlowStartEnemy,
BlowStartHack,
IdleHack,
Stop,
FireBros,
Frog,
HackLand,
HackOff,
HackOn,
NpcLand,
HammerBros,
Imomu,
ExpandAirEnemy,
ExpandAirHack,
ExpandHack,
ExpandSignHack,
ShrinkAirHack,
ShrinkEnemy,
ShrinkHack,
ShrinkReactionHeadEnemy,
ShrinkReactionHeadHack,
ShrinkReactionHipEnemy,
ShrinkReactionHipHack,
Kakku,
FallHack,
KaronWing,
EnemyFly,
HackFly,
Killer,
Default,
SignExplosion,
Kuribo,
KuriboWing,
PackunFire,
ChokeDefault,
ChokeCap,
Eat,
VomitCap,
VomitDefault,
PackunPoison,
EatDown,
Pukupuku,
DashRSurface,
DashRWater,
RollingRSurface,
RollingRWater,
RollingLSurface,
RollingLWater,
SwimStartSurface,
SwimStartWater,
SwimWaitStartSurface,
SwimWaitStartWater,
SwimWaitSurface,
SwimWaitWater,
SwimWaitWaterHack,
SwimWater,
WaitMove,
AdlibWaitMove,
RunMove,
FallMove,
JumpEndEnemy,
JumpEndLowHack,
JumpEndHighHack,
Tank,
BlowDownCaptureParade,
PressDownCaptureParade,
MoveL,
MoveR,
MoveAfterL,
MoveAfterR,
MoveStartL,
MoveStartR,
Tsukkun,
StickBend,
ThrustEnemy,
ThrustHack,
ThrustWaitEnemy,
ThrustWaitHack,
Wanwan,
BackChain,
BackDirect,
WanwanBig,
End
};
static constexpr size_t ToValue(Type type) { return static_cast<std::uint16_t>(type); }
static constexpr Type ToType(std::uint16_t value) {return static_cast<Type>(value);}
static constexpr std::array<const char*, ToValue(Type::End)> s_Strs {
// Action Names
"ChairSitDown", "DamageDown", "DamageDownSwim", "DamageDownSwimSurface",
"DemoWorldMoveForwardFirst", "DemoWorldMoveForwardNormal", "MotorcycleRide",
"MotorcycleRideClash", "MotorcycleRideJump", "MotorcycleRideLand",
"MotorcycleRideRunStart", "Move", "MoveMoon", "ExitPictureDown", "NoDamageDown",
"NoDamageDownSwim", "NoDamageDownSwimSurface", "RestartSpinJumpL", "RestartSpinJumpR",
"JumpCapCatch", "JumpCapCatchAir", "SandWait", "SandWalk", "StartSpinJumpL",
"StartSpinJumpR", "SwimSurfaceNormal", "SwimSurfaceCarry",
"DemoGetShineGrandStartNormal", "DemoGetShineGrandStartEmpty", "DemoCapOffWait",
// Anim Names
"AreaWait64", "AreaWaitAloha", "AreaWaitBalance", "AreaWaitBeach", "AreaWaitCold",
"AreaWaitDance01", "AreaWaitDance02", "AreaWaitDance03", "AreaWaitFight",
"AreaWaitGetwarm", "AreaWaitGuitar", "AreaWaitHeatGround", "AreaWaitHot", "AreaWaitJog",
"AreaWaitLookUp", "AreaWaitSayCheese", "AreaWaitScared", "AreaWaitSearch",
"AreaWaitSigh", "AreaWaitSitDown", "AreaWaitSleepy", "AreaWaitSmell", "AreaWaitStink",
"AreaWaitStretch", "AreaWaitView", "AreaWaitWaterfall", "AreaWaitWonder", "ArrowShoot",
"ArrowShootStart", "BallToss", "BallTossGround", "BattleWait", "BedSleep",
"BedSleepStart", "BedSnooze", "BedSnoozeStart", "BikeRide", "Bind", "Brake",
"BubbleJump", "BubbleStart", "BubbleWait", "CanoeDamage", "CanoeDamageEnd",
"CanoeDamageStart", "CanoePaddle", "CanoeTurnL", "CanoeTurnR", "CanoeWait", "Carry",
"CarryFront", "CarryFrontStart", "CarryFrontThrow", "CarryUp", "CarryUpStart",
"CarryUpThrow", "CatapultStart", "CatchCap", "CatchCapJump", "CatchCapJumpParts",
"CatchCapJumpPartsReverse", "CatchCapParts", "CatchKoopaCap", "ClashWorldStandUp",
"ClimbTreeHandStandWait", "Damage", "DamageLand", "DamageSwim", "DamageSwimSurface",
"DamageSwimSurfaceLand", "DamageWait", "Dash", "DashBrake", "DashFast", "DashTurn",
"Dead", "Dead01", "Dead02", "Dead03", "Dead04", "DeadFall", "DeadFire", "DeadIce",
"DeadPoison", "DeadSand", "DeadWallow", "DeadWater", "DemoAppearFromHome",
"DemoBattleEndGiantWanderBoss", "DemoBattleStartBossKnuckle", "DemoBattleStartBreeda",
"DemoBattleStartBreedaFirst", "DemoBattleStartGolemClimb", "DemoBossRaidAttack",
"DemoCrashHome", "DemoCrashHomeFall", "DemoEnding01", "DemoEnding02", "DemoEnding03",
"DemoEnding04", "DemoEnterChurch", "DemoGetShine", "DemoGetShineCloseUp",
"DemoGetShineEnd", "DemoGetShineGrandCloseUp", "DemoGetShineGrandCloseUpEnd",
"DemoGetShineGrandEnd", "DemoGetShineGrandStart", "DemoGetShineLand",
"DemoGetShinePaper", "DemoGetShineRock", "DemoGetShineScissors", "DemoGetShineStart",
"DemoHackFirst", "DemoHackKoopa01", "DemoHackKoopa02", "DemoJangoCapSearch",
"DemoJangoGetUp", "DemoJangoLookAround", "DemoJangoStolen", "DemoJangoStolenLoop",
"DemoMeetCapNpcC01", "DemoMeetCapNpcC01TalkWait", "DemoMeetCapNpcC02",
"DemoMeetCapNpcC02ATalkWait", "DemoMeetCapNpcC02BTalkWait", "DemoMeetCapNpcC03",
"DemoMeetCapNpcC04TalkWait", "DemoMeetCapNpcC06TalkWait", "DemoMeetCapNpcC07TalkWait",
"DemoMeetCapNpcC08TalkWait", "DemoMeetCapNpcC10A", "DemoMeetCapNpcC10ATalkWait",
"DemoMeetCapNpcC10B", "DemoMeetCapNpcC10BTalkWait", "DemoOpening01", "DemoOpeningCap",
"DemoOpeningDown", "DemoPayToHome", "DemoReset", "DemoReturnToHome", "DemoSitDownTalk",
"DemoSitDownWaitFirst", "DemoStartJango", "DemoStartJango2", "DemoStartUpHome",
"DemoStartUpHomeSky", "DemoStartWaterfall", "DemoTakeOffKoopaForMoon",
"DemoTalkCapManHeroAppear", "DemoTalkCapManHeroWalk", "DemoWarpEnd", "DemoWarpStart",
"DemoWorldLavaScenario1End", "DemoWorldMoveBackward", "DemoWorldMoveBackward1",
"DemoWorldMoveBackward2", "DemoWorldMoveBackward3", "DemoWorldMoveForward",
"DemoWorldMoveForwardArrive", "DemoWorldMoveForwardNormal1",
"DemoWorldMoveForwardNormal2", "DemoWorldMoveForwardNormal3",
"DemoWorldMoveMoonBackward", "DemoWorldMoveMoonForward",
"DemoWorldMoveMoonForwardFirst", "DemoWorldTakeoff", "DemoWorldTakeoffEast",
"DemoWorldTakeoffForMoon", "DemoWorldTakeoffForMoonFirst",
"DemoWorldTakeoffForMoonFirstTuxedo", "DemoWorldTakeoffWest", "DemoWorldWarpHole01",
"DemoWorldWarpHole02", "DemoWorldWarpHole03", "Dive", "DiveInWater", "DokanIn",
"DokanInHome", "DokanInUpsideDown", "DokanJump", "DokanOut", "DokanOutUpsideDown",
"DokanReady", "DokanReadyHome", "DokanSideIn", "DokanSideOut", "DoorIn", "DoorOut",
"DoorStart", "Fall", "Fire", "FireRun", "FireRunStart", "GetShine", "GetShineCity",
"GetShineEmpty", "GetShineGrand", "GetShineSub", "GrabCeilJump", "GrabCeilStart",
"GrabCeilSwing", "GrabCeilWait", "Hack", "HeadSliding", "HeadSlidingStart", "HipDrop",
"HipDropLand", "HipDropReaction", "HipDropStart", "HomeCapManHeroAppear", "Jump",
"Jump2", "Jump3", "JumpBack", "JumpBroad", "JumpBroad2", "JumpBroad3", "JumpBroad4",
"JumpBroad5", "JumpBroad6", "JumpBroad7", "JumpBroad8", "JumpBroad9",
"JumpCapCatchCommon", "JumpCapLeapFrog", "JumpDashFast", "JumpEndHack", "JumpFlap",
"JumpHipDrop", "JumpInterp", "JumpNpcTrample", "JumpObjectReaction", "JumpReverse",
"JumpReverseInterp", "JumpTurn", "Kick", "KoopaCapPunchFinishL",
"KoopaCapPunchFinishLStart", "KoopaCapPunchFinishR", "KoopaCapPunchFinishRStart",
"KoopaCapPunchL", "KoopaCapPunchLStart", "KoopaCapPunchR", "KoopaCapPunchRStart",
"KoopaDemoBattleStartChurchFirstLv2", "KoopaDemoBattleStartChurchLv2",
"KoopaDemoBattleStartChurchSecondLv2", "KoopaDemoBattleStartFirstLv1",
"KoopaDemoBattleStartFirstLv2", "KoopaDemoBattleStartSecondLv1",
"KoopaDemoBattleStartSecondLv2", "KoopaDemoBattleStartTalkBlendLv1",
"KoopaDemoClashBasement", "Land", "LandDownFall", "LandJump3", "LandRolling",
"LandStiffen", "LandTurn", "MainScenarioCameraWait", "MofumofuDemoOpening1",
"MofumofuDemoOpening2", "MotorcycleRideC", "MotorcycleRideClashC",
"MotorcycleRideClashL", "MotorcycleRideClashR", "MotorcycleRideJumpC",
"MotorcycleRideJumpL", "MotorcycleRideJumpR", "MotorcycleRideL", "MotorcycleRideLandC",
"MotorcycleRideLandL", "MotorcycleRideLandR", "MotorcycleRideOn", "MotorcycleRideR",
"MotorcycleRideRunStartC", "MotorcycleRideRunStartL", "MotorcycleRideRunStartR",
"MotorcycleRideStart", "MotorcycleRideStartL", "MotorcycleRideStartR", "MotorcycleWait",
"OpeningStandUp", "PauseMenu2Player", "PauseMenuContinue", "PauseMenuContinueEnd",
"PauseMenuData", "PauseMenuHelp", "PauseMenuNewGame", "PauseMenuSave", "PauseMenuStart",
"PauseMenuWait", "PoleCatch", "PoleClimb", "PoleFall", "PoleHandStandEnd",
"PoleHandStandJump", "PoleHandStandStart", "PoleHandStandTurn", "PoleHandStandWait",
"PoleTurn", "PoleWait", "Punch", "Push", "RabbitGet", "RaceManHack", "RaceManHackEnd",
"RaceManHackStart", "RaceManJumpEnd", "RaceManJumpStart", "RaceManResultLose",
"RaceManResultWin", "RaceResultLose", "RaceResultWin", "ReactionCapOn", "Rolling",
"RollingEnd", "RollingEndBackUp", "RollingJump", "RollingLand", "RollingStandUp",
"RollingStart", "RoswellPut", "RoswellRun", "RoswellThrow", "RoswellWait", "Run",
"RunMoon", "RunStart", "SandWaitNormal", "SandWaitStrong", "SandWalkNormal",
"SandWalkStrong", "SitDown", "SitDownEnd", "SitDownLand", "SitDownSleep",
"SitDownSleepEnd", "SitDownSleepStart", "SitDownStart", "Sleep", "SleepStart", "Slide",
"SlopeSlide", "SlopeSlideBack", "Snooze", "SnoozeStart", "SphinxRideClash",
"SphinxRideFall", "SphinxRideGetOn", "SphinxRideJump", "SphinxRideJumpStart",
"SphinxRideOn", "SphinxRideRide", "SphinxRideRideOn", "SphinxRideRideStartL",
"SphinxRideRideStartR", "SphinxRideRunSlow", "SphinxRideStop", "SphinxRideStopStart",
"SpinCap", "SpinCapAirStart", "SpinCapAirStartCapCatch", "SpinCapAirStartDoubleDown",
"SpinCapAirStartDoubleLeft", "SpinCapAirStartDoubleRight", "SpinCapAirStartDoubleUp",
"SpinCapAirStartLeft", "SpinCapAirStartLong", "SpinCapAirStartRight", "SpinCapEnd",
"SpinCapJumpStart", "SpinCapStart", "SpinCapStart2Left", "SpinCapStart2Right",
"SpinCapStart3Left", "SpinCapStart3Right", "SpinCapStartCapCatch",
"SpinCapStartDoubleDown", "SpinCapStartDoubleLeft", "SpinCapStartDoubleRight",
"SpinCapStartDoubleUp", "SpinCapStartLeft", "SpinCapStartLong", "SpinCapStartRight",
"SpinCapStartRolling", "SpinCapWait", "SpinGroundL", "SpinGroundR", "SpinJump",
"SpinJumpDownFall", "SpinJumpDownFallL", "SpinJumpDownFallR", "SpinJumpL",
"SpinJumpLoop", "SpinJumpR", "SpinJumpStart", "SpinSeparate", "SpinSeparateSwim",
"SquatEnd", "SquatLand", "SquatStart", "SquatWait", "SquatWalk", "StabStart",
"StabUndarWait", "StabUnderStart", "StabWait", "StabWallWait", "SwimDieOver",
"SwimDive", "SwimFallIn", "SwimHeadSliding", "SwimHeadSlidingEnd", "SwimHeadSlidingIn",
"SwimHeadSlidingStart", "SwimHipDrop", "SwimHipDropLand", "SwimHipDropStart",
"SwimJumpHipDrop", "SwimLand", "SwimSpinCapStart", "SwimSpinCapStartDoubleDown",
"SwimSpinCapStartDoubleLeft", "SwimSpinCapStartDoubleRight", "SwimSpinCapStartDoubleUp",
"SwimSpinCapStartLeft", "SwimSpinCapStartRight", "SwimSquat", "SwimSquatWalk",
"SwimStand", "SwimStandMove", "SwimStandSurface", "SwimStandWait", "SwimSurface",
"SwimTalkWait", "SwimTrample", "SwimTrampoline", "SwimWait", "SwimWalk", "TalkEnd",
"TalkTurn", "TalkTurnL90", "TalkTurnR90", "TalkWait", "TestDemoDiverA",
"TestDemoDiverB", "TestDemoE3001", "TestRunBack", "TestRunFront", "TestRunLeft",
"TestRunRight", "TestRunWait", "ThrowCap", "ThrowCapJump", "ThrowCapJumpParts",
"ThrowCapParts", "TouchJump", "TouchJumpLong", "TouchJumpLongSign", "TractorBubbleEmd",
"TractorBubbleEnd", "TractorBubbleStart", "TractorBubbleWait", "TreeClimb", "TreeFall",
"Turn", "TurnPoint", "TurnStep", "Wait", "WaitCold", "WaitDemo", "WaitDigPoint",
"WaitHot", "WaitRelax", "WaitRelaxStart", "WaitVeryCold", "Walk", "WalkDemo",
"WalkSoft", "WallCatch", "WallCatchEnd", "WallCatchEndFast", "WallCatchEndJump",
"WallCatchMoveL", "WallCatchMoveR", "WallCatchStart", "WallJump", "WallKeep",
"WallKeepReverse", "WallLand", "WallSlideL", "WallSlideR", "WarpIn", "WarpOut",
"WarpWait", "WaterRoadMove", "WearEnd", "WhipAttackEnd", "WhipAttackStart",
"WhipAttackWait", "WhipWait", "WorldWarpBind", "WorldWarpBindStart", "WorldWarpIn",
"WorldWarpOut",
// Capture Anims
"BubbleCannonJump", "Down", "HackCancelJump", "HackHighJump", "HackJump", "HackStart",
"HackStartDown", "HackWait", "HackWaitSpeedy", "LandFrontDown", "LandFrontUp",
"MoveSpeedy", "Up", "Angry", "AppearSign", "AppearStart", "AttackSuccess", "Blow",
"BlowDown", "Clash", "Coverd", "DamageCap", "Find", "HackCharge", "HackChargeFull",
"HackChargeTurn", "HackRunCoverd", "PressDown", "RunCoverd", "RunNaked", "Swoon",
"SwoonEnd", "SwoonStart", "Trampled", "TrampledEnd", "TurnCoverd", "TurnNaked",
"BlowEnd", "BlowSign", "BlowStart", "BlowWide", "Reaction", "Charge", "ChargeStart",
"Dummy", "Idle", "ReactionCap", "ReactionCapSand", "ReactionJump", "ReactionJumpSand",
"RunHack", "RunStartHack", "WaitHack", "Attack", "AttackHit", "AttackSecond",
"AttackSecondSign", "AttackSign", "HackAttack", "HackAttackJump", "HackAttackMiss",
"HackAttackQuick", "HackJumpEnd", "HackJumpHigh", "JumpEnd", "JumpStart",
"PressDownBlow", "PressDownPress", "SwoonStartLand", "HighFall", "HighJump", "LandSwim",
"NpcFall", "NpcJump", "NpcJumpStart", "RunFast", "RunSlow", "RunStay", "Swim",
"SwimHackStart", "SwimReaction", "SwimSwoon", "SwimSwoonEnd", "SwimSwoonStart",
"SwimSwoonStartLand", "SwoonStartFall", "UpperPunch", "Appear", "Shot", "SwoonTrampled",
"AttackEnd", "AttackStart", "MoveEnd", "MoveStart", "Recover", "Trample", "Expand",
"ExpandAir", "ExpandEnemy", "ExpandSign", "ExpandSignEnemy", "ExpandWait",
"ExpandWaitEnd", "Hold", "Shrink", "ShrinkAir", "ShrinkReactionHead",
"ShrinkReactionHip", "TurnEnemy", "TurnHack", "WaitAir", "FallNormal", "Glide",
"GlideDrop", "GlideL", "GlideLStart", "GlideR", "GlideRStart", "GlideRise",
"GlideStart", "HackEnd", "HackEndFly", "JumpEndNormal", "ReactionTrampled", "Talk",
"WaitNormal", "WaitSandSink", "AttackTrample", "AttackUp", "Break", "BreakGroundHit",
"BreakReaction", "BreakWait", "FallFly", "Fly", "FlyChase", "FlyWait", "RecoverSign",
"Boost", "BoostStart", "Explosion", "FallDown", "FlyWaitStart", "Standby", "Turbo",
"AttackTower", "DashTower", "DashTowerBottom", "FallTower", "FindTower", "HackEndTower",
"JumpTower", "LandTower", "Miss", "MissTower", "PressDownTower", "Reset", "RideOn",
"RideOnTower", "RunTower", "RunTowerBottom", "SandGeyser", "SandGeyserTower",
"SandWaitTower", "SandWalkTower", "SlideTower", "SwoonLoop", "WaitTower", "WalkTower",
"WalkTowerBottom", "EnemyRun", "HackRun", "Choke", "ChokeEnd", "ChokeStart",
"HackStartChoke", "Look", "Swallow", "SwoonChoke", "SwoonEndChoke", "SwoonStartChoke",
"Vomit", "WaitChoke", "DashR", "FishingUp", "FishingUpGold", "JumpGround",
"ReactionWall", "RollingRail", "RollingRailReverse", "RollingReverse", "SwimStart",
"SwimSurfaceEnemy", "SwimWaitStart", "TurnPlayer", "WaitGround", "AdlibWait",
"Generate", "JumpEndHigh", "JumpEndLow", "Stretch", "StretchFall", "StretchRun",
"StretchWait", "UpperObjStart", "UpperObjWait", "BlowDownCommon", "PressDownCommon",
"Reload", "Shoot", "SwoonReaction", "AttackMove", "AttackMoveForest", "AttackWaitL",
"AttackWaitR", "DashAfterL", "DashAfterR", "DashL", "EnemyAttack", "EnemyAttackL",
"EnemyAttackLEnd", "EnemyAttackLStart", "EnemyAttackR", "EnemyAttackREnd",
"EnemyAttackRStart", "EnemyAttackSign", "EnemyFall", "EnemyFallStart", "EnemyLand",
"EnemyRunStart", "FindMario", "FootHoldJumpL", "FootHoldJumpR", "FootHoldL",
"FootHoldR", "HackStartShort", "HackStartWithTurn", "ListPose", "Lost", "MoveTouch",
"NoticeSniff", "ReactionSeaOfTrees", "RunAfterL", "RunAfterR", "RunL", "RunR",
"RunStartL", "RunStartR", "SleepReactionHipDrop", "SleepSeaOfTrees",
"SwoonStartDashClash", "TurnEndL", "TurnEndR", "TurnL180", "TurnL90", "TurnR180",
"TurnR90", "WaitL", "WaitR", "WaitSniff", "WakeUpSwoonStart", "WalkAfterL",
"WalkAfterR", "WalkEndL", "WalkEndR", "WalkGroundL", "WalkGroundR", "WalkL", "WalkR",
"WalkStart", "WalkStartL", "WalkStartR", "AppearBall", "JumpStick", "SpinL", "SpinR",
"SpinThrustL", "SpinThrustR", "Stick", "StickBendHorizontal", "StickBendVertical",
"Thrust", "ThrustCancel", "ThrustEnd", "ThrustSign", "ThrustWait", "TrampleDown",
"AttackPull", "Back", "BackEnd", "BackReturn", "HackDash", "HackDashPull", "HackMove",
"HackPull", "HackPullStart", "HitAction", "HitEnd", "HoleIn", "Return",
// All Capture Actions
"Bubble", "Bull", "Byugo", "BlowStartEnemy", "BlowStartHack", "IdleHack", "Stop",
"FireBros", "Frog", "HackLand", "HackOff", "HackOn", "NpcLand", "HammerBros", "Imomu",
"ExpandAirEnemy", "ExpandAirHack", "ExpandHack", "ExpandSignHack", "ShrinkAirHack",
"ShrinkEnemy", "ShrinkHack", "ShrinkReactionHeadEnemy", "ShrinkReactionHeadHack",
"ShrinkReactionHipEnemy", "ShrinkReactionHipHack", "Kakku", "FallHack", "KaronWing",
"EnemyFly", "HackFly", "Killer", "Default", "SignExplosion", "Kuribo", "KuriboWing",
"PackunFire", "ChokeDefault", "ChokeCap", "Eat", "VomitCap", "VomitDefault",
"PackunPoison", "EatDown", "Pukupuku", "DashRSurface", "DashRWater", "RollingRSurface",
"RollingRWater", "RollingLSurface", "RollingLWater", "SwimStartSurface",
"SwimStartWater", "SwimWaitStartSurface", "SwimWaitStartWater", "SwimWaitSurface",
"SwimWaitWater", "SwimWaitWaterHack", "SwimWater", "WaitMove", "AdlibWaitMove",
"RunMove", "FallMove", "JumpEndEnemy", "JumpEndLowHack", "JumpEndHighHack", "Tank",
"BlowDownCaptureParade", "PressDownCaptureParade", "MoveL", "MoveR", "MoveAfterL",
"MoveAfterR", "MoveStartL", "MoveStartR", "Tsukkun", "StickBend", "ThrustEnemy",
"ThrustHack", "ThrustWaitEnemy", "ThrustWaitHack", "Wanwan", "BackChain", "BackDirect",
"WanwanBig"
};
// these ifdefs are really dumb but it makes clangd happy so /shrug
#ifndef ANALYZER
static constexpr crc32::HashArray s_Hashes(s_Strs);
#endif
static constexpr Type FindType(std::string_view const& str) {
#ifndef ANALYZER
return ToType(s_Hashes.FindIndex(str));
#else
return Type::Unknown;
#endif
}
static constexpr const char *FindStr(Type type) {
const s16 type_ = (s16)type;
if (0 <= type_ && type_ < s_Strs.size())
return s_Strs[type_];
else
return "";
}
}