From b002061609098482170c779f3713afa66b446a6f Mon Sep 17 00:00:00 2001 From: MysterD Date: Fri, 27 Oct 2023 18:59:00 -0700 Subject: [PATCH] Cleaned up character sound/anim lookup code --- autogen/convert_structs.py | 40 ++ autogen/lua_definitions/constants.lua | 3 + docs/lua/constants.md | 1 + include/mario_animation_ids.h | 3 +- src/game/characters.c | 268 +----------- src/game/characters.h | 568 +++++++++++++------------- src/pc/lua/smlua_cobject_autogen.c | 2 + src/pc/lua/smlua_constants_autogen.c | 1 + 8 files changed, 346 insertions(+), 540 deletions(-) diff --git a/autogen/convert_structs.py b/autogen/convert_structs.py index b3b7045f..8172cdd9 100644 --- a/autogen/convert_structs.py +++ b/autogen/convert_structs.py @@ -133,11 +133,48 @@ total_fields = 0 ############################################################################ +def promote_block(before_block, after_block): + inside = 1 + idx = -1 + + for character in after_block: + idx += 1 + if character == '{': + inside += 1 + elif character == '}': + inside -= 1 + if inside <= 0: + break + if inside == 0 and idx > -1 and after_block[idx+1] == ';': + return before_block + after_block[:idx] + after_block[idx+2:] + + return None + +def strip_anonymous_blocks(body): + while 'union {' in body: + before_union = body.split('union {', 1)[0] + after_union = body.split('union {', 1)[-1] + promoted = promote_block(before_union, after_union) + if promoted == None: + break + body = promoted + + while 'struct {' in body: + before_union = body.split('struct {', 1)[0] + after_union = body.split('struct {', 1)[-1] + promoted = promote_block(before_union, after_union) + if promoted == None: + break + body = promoted + + return body + def strip_internal_blocks(body): # strip internal structs/enums/etc tmp = body body = '' inside = 0 + stripped = '' for character in tmp: if character == '{': body += '{ ... }' @@ -145,6 +182,8 @@ def strip_internal_blocks(body): if inside == 0: body += character + else: + stripped += character if character == '}': inside -= 1 @@ -199,6 +238,7 @@ def parse_struct(struct_str): struct['identifier'] = identifier body = struct_str.split('{', 1)[1].rsplit('}', 1)[0] + body = strip_anonymous_blocks(body) body = strip_internal_blocks(body) struct['fields'] = [] diff --git a/autogen/lua_definitions/constants.lua b/autogen/lua_definitions/constants.lua index 8471cc28..13376f9b 100644 --- a/autogen/lua_definitions/constants.lua +++ b/autogen/lua_definitions/constants.lua @@ -4700,6 +4700,9 @@ CHAR_ANIM_FORWARD_SPINNING_FLIP = 207 --- @type CharacterAnimID CHAR_ANIM_TRIPLE_JUMP_FLY = 208 +--- @type CharacterAnimID +CHAR_ANIM_MAX = 209 + --- @class MarioAnimID --- @type MarioAnimID diff --git a/docs/lua/constants.md b/docs/lua/constants.md index afb019a4..812e71a7 100644 --- a/docs/lua/constants.md +++ b/docs/lua/constants.md @@ -1644,6 +1644,7 @@ | CHAR_ANIM_RETURN_FROM_STAR_DANCE | 206 | | CHAR_ANIM_FORWARD_SPINNING_FLIP | 207 | | CHAR_ANIM_TRIPLE_JUMP_FLY | 208 | +| CHAR_ANIM_MAX | 209 | ### [enum MarioAnimID](#MarioAnimID) | Identifier | Value | diff --git a/include/mario_animation_ids.h b/include/mario_animation_ids.h index 9e68e985..71d59798 100644 --- a/include/mario_animation_ids.h +++ b/include/mario_animation_ids.h @@ -431,7 +431,8 @@ enum CharacterAnimID /* 0xCD */ CHAR_ANIM_STAR_DANCE, /* 0xCE */ CHAR_ANIM_RETURN_FROM_STAR_DANCE, /* 0xCF */ CHAR_ANIM_FORWARD_SPINNING_FLIP, - /* 0xD0 */ CHAR_ANIM_TRIPLE_JUMP_FLY + /* 0xD0 */ CHAR_ANIM_TRIPLE_JUMP_FLY, + CHAR_ANIM_MAX // MUST BE LAST }; #endif // MARIO_ANIMATION_IDS_H diff --git a/src/game/characters.c b/src/game/characters.c index 8b12ed0b..b78b550e 100644 --- a/src/game/characters.c +++ b/src/game/characters.c @@ -1525,55 +1525,11 @@ static s32 get_character_sound(struct MarioState* m, enum CharacterSound charact if (smlua_call_event_hooks_mario_character_sound_param_ret_int(HOOK_CHARACTER_SOUND, m, characterSound, &override)) { return override; } - + struct Character* character = ((m == NULL || m->character == NULL) ? &gCharacters[CT_MARIO] : m->character); - switch (characterSound) { - case CHAR_SOUND_YAH_WAH_HOO: return character->soundYahWahHoo; - case CHAR_SOUND_HOOHOO: return character->soundHoohoo; - case CHAR_SOUND_YAHOO: return character->soundYahoo; - case CHAR_SOUND_UH: return character->soundUh; - case CHAR_SOUND_HRMM: return character->soundHrmm; - case CHAR_SOUND_WAH2: return character->soundWah2; - case CHAR_SOUND_WHOA: return character->soundWhoa; - case CHAR_SOUND_EEUH: return character->soundEeuh; - case CHAR_SOUND_ATTACKED: return character->soundAttacked; - case CHAR_SOUND_OOOF: return character->soundOoof; - case CHAR_SOUND_OOOF2: return character->soundOoof2; - case CHAR_SOUND_HERE_WE_GO: return character->soundHereWeGo; - case CHAR_SOUND_YAWNING: return character->soundYawning; - case CHAR_SOUND_SNORING1: return character->soundSnoring1; - case CHAR_SOUND_SNORING2: return character->soundSnoring2; - case CHAR_SOUND_WAAAOOOW: return character->soundWaaaooow; - case CHAR_SOUND_HAHA: return character->soundHaha; - case CHAR_SOUND_HAHA_2: return character->soundHaha_2; - case CHAR_SOUND_UH2: return character->soundUh2; - case CHAR_SOUND_UH2_2: return character->soundUh2_2; - case CHAR_SOUND_ON_FIRE: return character->soundOnFire; - case CHAR_SOUND_DYING: return character->soundDying; - case CHAR_SOUND_PANTING_COLD: return character->soundPantingCold; - case CHAR_SOUND_PANTING: return character->soundPanting; - case CHAR_SOUND_COUGHING1: return character->soundCoughing1; - case CHAR_SOUND_COUGHING2: return character->soundCoughing2; - case CHAR_SOUND_COUGHING3: return character->soundCoughing3; - case CHAR_SOUND_PUNCH_YAH: return character->soundPunchYah; - case CHAR_SOUND_PUNCH_HOO: return character->soundPunchHoo; - case CHAR_SOUND_MAMA_MIA: return character->soundMamaMia; - case CHAR_SOUND_GROUND_POUND_WAH: return character->soundGroundPoundWah; - case CHAR_SOUND_DROWNING: return character->soundDrowning; - case CHAR_SOUND_PUNCH_WAH: return character->soundPunchWah; - case CHAR_SOUND_YAHOO_WAHA_YIPPEE: return character->soundYahooWahaYippee; - case CHAR_SOUND_DOH: return character->soundDoh; - case CHAR_SOUND_GAME_OVER: return character->soundGameOver; - case CHAR_SOUND_HELLO: return character->soundHello; - case CHAR_SOUND_PRESS_START_TO_PLAY: return character->soundPressStartToPlay; - case CHAR_SOUND_TWIRL_BOUNCE: return character->soundTwirlBounce; - case CHAR_SOUND_SNORING3: return character->soundSnoring3; - case CHAR_SOUND_SO_LONGA_BOWSER: return character->soundSoLongaBowser; - case CHAR_SOUND_IMA_TIRED: return character->soundImaTired; - case CHAR_SOUND_LETS_A_GO: return character->soundLetsAGo; - case CHAR_SOUND_OKEY_DOKEY: return character->soundOkeyDokey; - default: return 0; - } + + if (characterSound < 0 || characterSound >= CHAR_SOUND_MAX) { return 0; } + return character->sounds[characterSound]; } static void play_character_sound_internal(struct MarioState *m, enum CharacterSound characterSound, u32 offset, u32 flags) { @@ -1655,216 +1611,6 @@ s32 get_character_anim(struct MarioState* m, enum CharacterAnimID characterAnim) if (m == NULL || m->marioObj == NULL) { return 0; } struct Character* character = ((m == NULL || m->character == NULL) ? &gCharacters[CT_MARIO] : m->character); - switch (characterAnim) { - case CHAR_ANIM_SLOW_LEDGE_GRAB: return character->animSlowLedgeGrab; - case CHAR_ANIM_FALL_OVER_BACKWARDS: return character->animFallOverBackwards; - case CHAR_ANIM_BACKWARD_AIR_KB: return character->animBackwardAirKb; - case CHAR_ANIM_DYING_ON_BACK: return character->animDyingOnBack; - case CHAR_ANIM_BACKFLIP: return character->animBackflip; - case CHAR_ANIM_CLIMB_UP_POLE: return character->animClimbUpPole; - case CHAR_ANIM_GRAB_POLE_SHORT: return character->animGrabPoleShort; - case CHAR_ANIM_GRAB_POLE_SWING_PART1: return character->animGrabPoleSwingPart1; - case CHAR_ANIM_GRAB_POLE_SWING_PART2: return character->animGrabPoleSwingPart2; - case CHAR_ANIM_HANDSTAND_IDLE: return character->animHandstandIdle; - case CHAR_ANIM_HANDSTAND_JUMP: return character->animHandstandJump; - case CHAR_ANIM_START_HANDSTAND: return character->animStartHandstand; - case CHAR_ANIM_RETURN_FROM_HANDSTAND: return character->animReturnFromHandstand; - case CHAR_ANIM_IDLE_ON_POLE: return character->animIdleOnPole; - case CHAR_ANIM_A_POSE: return character->animAPose; - case CHAR_ANIM_SKID_ON_GROUND: return character->animSkidOnGround; - case CHAR_ANIM_STOP_SKID: return character->animStopSkid; - case CHAR_ANIM_CROUCH_FROM_FAST_LONGJUMP: return character->animCrouchFromFastLongjump; - case CHAR_ANIM_CROUCH_FROM_SLOW_LONGJUMP: return character->animCrouchFromSlowLongjump; - case CHAR_ANIM_FAST_LONGJUMP: return character->animFastLongjump; - case CHAR_ANIM_SLOW_LONGJUMP: return character->animSlowLongjump; - case CHAR_ANIM_AIRBORNE_ON_STOMACH: return character->animAirborneOnStomach; - case CHAR_ANIM_WALK_WITH_LIGHT_OBJ: return character->animWalkWithLightObj; - case CHAR_ANIM_RUN_WITH_LIGHT_OBJ: return character->animRunWithLightObj; - case CHAR_ANIM_SLOW_WALK_WITH_LIGHT_OBJ: return character->animSlowWalkWithLightObj; - case CHAR_ANIM_SHIVERING_WARMING_HAND: return character->animShiveringWarmingHand; - case CHAR_ANIM_SHIVERING_RETURN_TO_IDLE: return character->animShiveringReturnToIdle; - case CHAR_ANIM_SHIVERING: return character->animShivering; - case CHAR_ANIM_CLIMB_DOWN_LEDGE: return character->animClimbDownLedge; - case CHAR_ANIM_CREDITS_WAVING: return character->animCreditsWaving; - case CHAR_ANIM_CREDITS_LOOK_UP: return character->animCreditsLookUp; - case CHAR_ANIM_CREDITS_RETURN_FROM_LOOK_UP: return character->animCreditsReturnFromLookUp; - case CHAR_ANIM_CREDITS_RAISE_HAND: return character->animCreditsRaiseHand; - case CHAR_ANIM_CREDITS_LOWER_HAND: return character->animCreditsLowerHand; - case CHAR_ANIM_CREDITS_TAKE_OFF_CAP: return character->animCreditsTakeOffCap; - case CHAR_ANIM_CREDITS_START_WALK_LOOK_UP: return character->animCreditsStartWalkLookUp; - case CHAR_ANIM_CREDITS_LOOK_BACK_THEN_RUN: return character->animCreditsLookBackThenRun; - case CHAR_ANIM_FINAL_BOWSER_RAISE_HAND_SPIN: return character->animFinalBowserRaiseHandSpin; - case CHAR_ANIM_FINAL_BOWSER_WING_CAP_TAKE_OFF: return character->animFinalBowserWingCapTakeOff; - case CHAR_ANIM_CREDITS_PEACE_SIGN: return character->animCreditsPeaceSign; - case CHAR_ANIM_STAND_UP_FROM_LAVA_BOOST: return character->animStandUpFromLavaBoost; - case CHAR_ANIM_FIRE_LAVA_BURN: return character->animFireLavaBurn; - case CHAR_ANIM_WING_CAP_FLY: return character->animWingCapFly; - case CHAR_ANIM_HANG_ON_OWL: return character->animHangOnOwl; - case CHAR_ANIM_LAND_ON_STOMACH: return character->animLandOnStomach; - case CHAR_ANIM_AIR_FORWARD_KB: return character->animAirForwardKb; - case CHAR_ANIM_DYING_ON_STOMACH: return character->animDyingOnStomach; - case CHAR_ANIM_SUFFOCATING: return character->animSuffocating; - case CHAR_ANIM_COUGHING: return character->animCoughing; - case CHAR_ANIM_THROW_CATCH_KEY: return character->animThrowCatchKey; - case CHAR_ANIM_DYING_FALL_OVER: return character->animDyingFallOver; - case CHAR_ANIM_IDLE_ON_LEDGE: return character->animIdleOnLedge; - case CHAR_ANIM_FAST_LEDGE_GRAB: return character->animFastLedgeGrab; - case CHAR_ANIM_HANG_ON_CEILING: return character->animHangOnCeiling; - case CHAR_ANIM_PUT_CAP_ON: return character->animPutCapOn; - case CHAR_ANIM_TAKE_CAP_OFF_THEN_ON: return character->animTakeCapOffThenOn; - case CHAR_ANIM_QUICKLY_PUT_CAP_ON: return character->animQuicklyPutCapOn; - case CHAR_ANIM_HEAD_STUCK_IN_GROUND: return character->animHeadStuckInGround; - case CHAR_ANIM_GROUND_POUND_LANDING: return character->animGroundPoundLanding; - case CHAR_ANIM_TRIPLE_JUMP_GROUND_POUND: return character->animTripleJumpGroundPound; - case CHAR_ANIM_START_GROUND_POUND: return character->animStartGroundPound; - case CHAR_ANIM_GROUND_POUND: return character->animGroundPound; - case CHAR_ANIM_BOTTOM_STUCK_IN_GROUND: return character->animBottomStuckInGround; - case CHAR_ANIM_IDLE_WITH_LIGHT_OBJ: return character->animIdleWithLightObj; - case CHAR_ANIM_JUMP_LAND_WITH_LIGHT_OBJ: return character->animJumpLandWithLightObj; - case CHAR_ANIM_JUMP_WITH_LIGHT_OBJ: return character->animJumpWithLightObj; - case CHAR_ANIM_FALL_LAND_WITH_LIGHT_OBJ: return character->animFallLandWithLightObj; - case CHAR_ANIM_FALL_WITH_LIGHT_OBJ: return character->animFallWithLightObj; - case CHAR_ANIM_FALL_FROM_SLIDING_WITH_LIGHT_OBJ: return character->animFallFromSlidingWithLightObj; - case CHAR_ANIM_SLIDING_ON_BOTTOM_WITH_LIGHT_OBJ: return character->animSlidingOnBottomWithLightObj; - case CHAR_ANIM_STAND_UP_FROM_SLIDING_WITH_LIGHT_OBJ:return character->animStandUpFromSlidingWithLightObj; - case CHAR_ANIM_RIDING_SHELL: return character->animRidingShell; - case CHAR_ANIM_WALKING: return character->animWalking; - case CHAR_ANIM_FORWARD_FLIP: return character->animForwardFlip; - case CHAR_ANIM_JUMP_RIDING_SHELL: return character->animJumpRidingShell; - case CHAR_ANIM_LAND_FROM_DOUBLE_JUMP: return character->animLandFromDoubleJump; - case CHAR_ANIM_DOUBLE_JUMP_FALL: return character->animDoubleJumpFall; - case CHAR_ANIM_SINGLE_JUMP: return character->animSingleJump; - case CHAR_ANIM_LAND_FROM_SINGLE_JUMP: return character->animLandFromSingleJump; - case CHAR_ANIM_AIR_KICK: return character->animAirKick; - case CHAR_ANIM_DOUBLE_JUMP_RISE: return character->animDoubleJumpRise; - case CHAR_ANIM_START_FORWARD_SPINNING: return character->animStartForwardSpinning; - case CHAR_ANIM_THROW_LIGHT_OBJECT: return character->animThrowLightObject; - case CHAR_ANIM_FALL_FROM_SLIDE_KICK: return character->animFallFromSlideKick; - case CHAR_ANIM_BEND_KNESS_RIDING_SHELL: return character->animBendKnessRidingShell; - case CHAR_ANIM_LEGS_STUCK_IN_GROUND: return character->animLegsStuckInGround; - case CHAR_ANIM_GENERAL_FALL: return character->animGeneralFall; - case CHAR_ANIM_GENERAL_LAND: return character->animGeneralLand; - case CHAR_ANIM_BEING_GRABBED: return character->animBeingGrabbed; - case CHAR_ANIM_GRAB_HEAVY_OBJECT: return character->animGrabHeavyObject; - case CHAR_ANIM_SLOW_LAND_FROM_DIVE: return character->animSlowLandFromDive; - case CHAR_ANIM_FLY_FROM_CANNON: return character->animFlyFromCannon; - case CHAR_ANIM_MOVE_ON_WIRE_NET_RIGHT: return character->animMoveOnWireNetRight; - case CHAR_ANIM_MOVE_ON_WIRE_NET_LEFT: return character->animMoveOnWireNetLeft; - case CHAR_ANIM_MISSING_CAP: return character->animMissingCap; - case CHAR_ANIM_PULL_DOOR_WALK_IN: return character->animPullDoorWalkIn; - case CHAR_ANIM_PUSH_DOOR_WALK_IN: return character->animPushDoorWalkIn; - case CHAR_ANIM_UNLOCK_DOOR: return character->animUnlockDoor; - case CHAR_ANIM_START_REACH_POCKET: return character->animStartReachPocket; - case CHAR_ANIM_REACH_POCKET: return character->animReachPocket; - case CHAR_ANIM_STOP_REACH_POCKET: return character->animStopReachPocket; - case CHAR_ANIM_GROUND_THROW: return character->animGroundThrow; - case CHAR_ANIM_GROUND_KICK: return character->animGroundKick; - case CHAR_ANIM_FIRST_PUNCH: return character->animFirstPunch; - case CHAR_ANIM_SECOND_PUNCH: return character->animSecondPunch; - case CHAR_ANIM_FIRST_PUNCH_FAST: return character->animFirstPunchFast; - case CHAR_ANIM_SECOND_PUNCH_FAST: return character->animSecondPunchFast; - case CHAR_ANIM_PICK_UP_LIGHT_OBJ: return character->animPickUpLightObj; - case CHAR_ANIM_PUSHING: return character->animPushing; - case CHAR_ANIM_START_RIDING_SHELL: return character->animStartRidingShell; - case CHAR_ANIM_PLACE_LIGHT_OBJ: return character->animPlaceLightObj; - case CHAR_ANIM_FORWARD_SPINNING: return character->animForwardSpinning; - case CHAR_ANIM_BACKWARD_SPINNING: return character->animBackwardSpinning; - case CHAR_ANIM_BREAKDANCE: return character->animBreakdance; - case CHAR_ANIM_RUNNING: return character->animRunning; - case CHAR_ANIM_RUNNING_UNUSED: return character->animRunningUnused; - case CHAR_ANIM_SOFT_BACK_KB: return character->animSoftBackKb; - case CHAR_ANIM_SOFT_FRONT_KB: return character->animSoftFrontKb; - case CHAR_ANIM_DYING_IN_QUICKSAND: return character->animDyingInQuicksand; - case CHAR_ANIM_IDLE_IN_QUICKSAND: return character->animIdleInQuicksand; - case CHAR_ANIM_MOVE_IN_QUICKSAND: return character->animMoveInQuicksand; - case CHAR_ANIM_ELECTROCUTION: return character->animElectrocution; - case CHAR_ANIM_SHOCKED: return character->animShocked; - case CHAR_ANIM_BACKWARD_KB: return character->animBackwardKb; - case CHAR_ANIM_FORWARD_KB: return character->animForwardKb; - case CHAR_ANIM_IDLE_HEAVY_OBJ: return character->animIdleHeavyObj; - case CHAR_ANIM_STAND_AGAINST_WALL: return character->animStandAgainstWall; - case CHAR_ANIM_SIDESTEP_LEFT: return character->animSidestepLeft; - case CHAR_ANIM_SIDESTEP_RIGHT: return character->animSidestepRight; - case CHAR_ANIM_START_SLEEP_IDLE: return character->animStartSleepIdle; - case CHAR_ANIM_START_SLEEP_SCRATCH: return character->animStartSleepScratch; - case CHAR_ANIM_START_SLEEP_YAWN: return character->animStartSleepYawn; - case CHAR_ANIM_START_SLEEP_SITTING: return character->animStartSleepSitting; - case CHAR_ANIM_SLEEP_IDLE: return character->animSleepIdle; - case CHAR_ANIM_SLEEP_START_LYING: return character->animSleepStartLying; - case CHAR_ANIM_SLEEP_LYING: return character->animSleepLying; - case CHAR_ANIM_DIVE: return character->animDive; - case CHAR_ANIM_SLIDE_DIVE: return character->animSlideDive; - case CHAR_ANIM_GROUND_BONK: return character->animGroundBonk; - case CHAR_ANIM_STOP_SLIDE_LIGHT_OBJ: return character->animStopSlideLightObj; - case CHAR_ANIM_SLIDE_KICK: return character->animSlideKick; - case CHAR_ANIM_CROUCH_FROM_SLIDE_KICK: return character->animCrouchFromSlideKick; - case CHAR_ANIM_SLIDE_MOTIONLESS: return character->animSlideMotionless; - case CHAR_ANIM_STOP_SLIDE: return character->animStopSlide; - case CHAR_ANIM_FALL_FROM_SLIDE: return character->animFallFromSlide; - case CHAR_ANIM_SLIDE: return character->animSlide; - case CHAR_ANIM_TIPTOE: return character->animTiptoe; - case CHAR_ANIM_TWIRL_LAND: return character->animTwirlLand; - case CHAR_ANIM_TWIRL: return character->animTwirl; - case CHAR_ANIM_START_TWIRL: return character->animStartTwirl; - case CHAR_ANIM_STOP_CROUCHING: return character->animStopCrouching; - case CHAR_ANIM_START_CROUCHING: return character->animStartCrouching; - case CHAR_ANIM_CROUCHING: return character->animCrouching; - case CHAR_ANIM_CRAWLING: return character->animCrawling; - case CHAR_ANIM_STOP_CRAWLING: return character->animStopCrawling; - case CHAR_ANIM_START_CRAWLING: return character->animStartCrawling; - case CHAR_ANIM_SUMMON_STAR: return character->animSummonStar; - case CHAR_ANIM_RETURN_STAR_APPROACH_DOOR: return character->animReturnStarApproachDoor; - case CHAR_ANIM_BACKWARDS_WATER_KB: return character->animBackwardsWaterKb; - case CHAR_ANIM_SWIM_WITH_OBJ_PART1: return character->animSwimWithObjPart1; - case CHAR_ANIM_SWIM_WITH_OBJ_PART2: return character->animSwimWithObjPart2; - case CHAR_ANIM_FLUTTERKICK_WITH_OBJ: return character->animFlutterkickWithObj; - case CHAR_ANIM_WATER_ACTION_END_WITH_OBJ: return character->animWaterActionEndWithObj; - case CHAR_ANIM_STOP_GRAB_OBJ_WATER: return character->animStopGrabObjWater; - case CHAR_ANIM_WATER_IDLE_WITH_OBJ: return character->animWaterIdleWithObj; - case CHAR_ANIM_DROWNING_PART1: return character->animDrowningPart1; - case CHAR_ANIM_DROWNING_PART2: return character->animDrowningPart2; - case CHAR_ANIM_WATER_DYING: return character->animWaterDying; - case CHAR_ANIM_WATER_FORWARD_KB: return character->animWaterForwardKb; - case CHAR_ANIM_FALL_FROM_WATER: return character->animFallFromWater; - case CHAR_ANIM_SWIM_PART1: return character->animSwimPart1; - case CHAR_ANIM_SWIM_PART2: return character->animSwimPart2; - case CHAR_ANIM_FLUTTERKICK: return character->animFlutterkick; - case CHAR_ANIM_WATER_ACTION_END: return character->animWaterActionEnd; - case CHAR_ANIM_WATER_PICK_UP_OBJ: return character->animWaterPickUpObj; - case CHAR_ANIM_WATER_GRAB_OBJ_PART2: return character->animWaterGrabObjPart2; - case CHAR_ANIM_WATER_GRAB_OBJ_PART1: return character->animWaterGrabObjPart1; - case CHAR_ANIM_WATER_THROW_OBJ: return character->animWaterThrowObj; - case CHAR_ANIM_WATER_IDLE: return character->animWaterIdle; - case CHAR_ANIM_WATER_STAR_DANCE: return character->animWaterStarDance; - case CHAR_ANIM_RETURN_FROM_WATER_STAR_DANCE: return character->animReturnFromWaterStarDance; - case CHAR_ANIM_GRAB_BOWSER: return character->animGrabBowser; - case CHAR_ANIM_SWINGING_BOWSER: return character->animSwingingBowser; - case CHAR_ANIM_RELEASE_BOWSER: return character->animReleaseBowser; - case CHAR_ANIM_HOLDING_BOWSER: return character->animHoldingBowser; - case CHAR_ANIM_HEAVY_THROW: return character->animHeavyThrow; - case CHAR_ANIM_WALK_PANTING: return character->animWalkPanting; - case CHAR_ANIM_WALK_WITH_HEAVY_OBJ: return character->animWalkWithHeavyObj; - case CHAR_ANIM_TURNING_PART1: return character->animTurningPart1; - case CHAR_ANIM_TURNING_PART2: return character->animTurningPart2; - case CHAR_ANIM_SLIDEFLIP_LAND: return character->animSlideflipLand; - case CHAR_ANIM_SLIDEFLIP: return character->animSlideflip; - case CHAR_ANIM_TRIPLE_JUMP_LAND: return character->animTripleJumpLand; - case CHAR_ANIM_TRIPLE_JUMP: return character->animTripleJump; - case CHAR_ANIM_FIRST_PERSON: return character->animFirstPerson; - case CHAR_ANIM_IDLE_HEAD_LEFT: return character->animIdleHeadLeft; - case CHAR_ANIM_IDLE_HEAD_RIGHT: return character->animIdleHeadRight; - case CHAR_ANIM_IDLE_HEAD_CENTER: return character->animIdleHeadCenter; - case CHAR_ANIM_HANDSTAND_LEFT: return character->animHandstandLeft; - case CHAR_ANIM_HANDSTAND_RIGHT: return character->animHandstandRight; - case CHAR_ANIM_WAKE_FROM_SLEEP: return character->animWakeFromSleep; - case CHAR_ANIM_WAKE_FROM_LYING: return character->animWakeFromLying; - case CHAR_ANIM_START_TIPTOE: return character->animStartTiptoe; - case CHAR_ANIM_SLIDEJUMP: return character->animSlidejump; - case CHAR_ANIM_START_WALLKICK: return character->animStartWallkick; - case CHAR_ANIM_STAR_DANCE: return character->animStarDance; - case CHAR_ANIM_RETURN_FROM_STAR_DANCE: return character->animReturnFromStarDance; - case CHAR_ANIM_FORWARD_SPINNING_FLIP: return character->animForwardSpinningFlip; - case CHAR_ANIM_TRIPLE_JUMP_FLY: return character->animTripleJumpFly; - default: return 0; - } -} + if (characterAnim < 0 || characterAnim >= CHAR_ANIM_MAX) { return 0; } + return character->anims[characterAnim]; +} \ No newline at end of file diff --git a/src/game/characters.h b/src/game/characters.h index 96f872c1..0cc0d0e3 100644 --- a/src/game/characters.h +++ b/src/game/characters.h @@ -33,284 +33,6 @@ enum CharacterType { CT_MAX }; -struct Character { - enum CharacterType type; - char* name; - char hudHead; - struct TextureInfo hudHeadTexture; - u32 cameraHudHead; - u32 modelId; - u32 capModelId; - u32 capMetalModelId; - u32 capWingModelId; - u32 capMetalWingModelId; - u8 capEnemyLayer; - Gfx* capEnemyGfx; - Gfx* capEnemyDecalGfx; - f32 torsoRotMult; - // anim - u8 animOffsetEnabled; - f32 animOffsetLowYPoint; - f32 animOffsetFeet; - f32 animOffsetHand; - - /* 0x00 */s32 animSlowLedgeGrab; - /* 0x01 */s32 animFallOverBackwards; - /* 0x02 */s32 animBackwardAirKb; - /* 0x03 */s32 animDyingOnBack; - /* 0x04 */s32 animBackflip; - /* 0x05 */s32 animClimbUpPole; - /* 0x06 */s32 animGrabPoleShort; - /* 0x07 */s32 animGrabPoleSwingPart1; - /* 0x08 */s32 animGrabPoleSwingPart2; - /* 0x09 */s32 animHandstandIdle; - /* 0x0a */s32 animHandstandJump; - /* 0x0b */s32 animStartHandstand; - /* 0x0c */s32 animReturnFromHandstand; - /* 0x0d */s32 animIdleOnPole; - /* 0x0e */s32 animAPose; - /* 0x0f */s32 animSkidOnGround; - /* 0x10 */s32 animStopSkid; - /* 0x11 */s32 animCrouchFromFastLongjump; - /* 0x12 */s32 animCrouchFromSlowLongjump; - /* 0x13 */s32 animFastLongjump; - /* 0x14 */s32 animSlowLongjump; - /* 0x15 */s32 animAirborneOnStomach; - /* 0x16 */s32 animWalkWithLightObj; - /* 0x17 */s32 animRunWithLightObj; - /* 0x18 */s32 animSlowWalkWithLightObj; - /* 0x19 */s32 animShiveringWarmingHand; - /* 0x1a */s32 animShiveringReturnToIdle; - /* 0x1b */s32 animShivering; - /* 0x1c */s32 animClimbDownLedge; - /* 0x1d */s32 animCreditsWaving; - /* 0x1e */s32 animCreditsLookUp; - /* 0x1f */s32 animCreditsReturnFromLookUp; - /* 0x20 */s32 animCreditsRaiseHand; - /* 0x21 */s32 animCreditsLowerHand; - /* 0x22 */s32 animCreditsTakeOffCap; - /* 0x23 */s32 animCreditsStartWalkLookUp; - /* 0x24 */s32 animCreditsLookBackThenRun; - /* 0x25 */s32 animFinalBowserRaiseHandSpin; - /* 0x26 */s32 animFinalBowserWingCapTakeOff; - /* 0x27 */s32 animCreditsPeaceSign; - /* 0x28 */s32 animStandUpFromLavaBoost; - /* 0x29 */s32 animFireLavaBurn; - /* 0x2a */s32 animWingCapFly; - /* 0x2b */s32 animHangOnOwl; - /* 0x2c */s32 animLandOnStomach; - /* 0x2d */s32 animAirForwardKb; - /* 0x2e */s32 animDyingOnStomach; - /* 0x2f */s32 animSuffocating; - /* 0x30 */s32 animCoughing; - /* 0x31 */s32 animThrowCatchKey; - /* 0x32 */s32 animDyingFallOver; - /* 0x33 */s32 animIdleOnLedge; - /* 0x34 */s32 animFastLedgeGrab; - /* 0x35 */s32 animHangOnCeiling; - /* 0x36 */s32 animPutCapOn; - /* 0x37 */s32 animTakeCapOffThenOn; - /* 0x38 */s32 animQuicklyPutCapOn; - /* 0x39 */s32 animHeadStuckInGround; - /* 0x3a */s32 animGroundPoundLanding; - /* 0x3b */s32 animTripleJumpGroundPound; - /* 0x3c */s32 animStartGroundPound; - /* 0x3d */s32 animGroundPound; - /* 0x3e */s32 animBottomStuckInGround; - /* 0x3f */s32 animIdleWithLightObj; - /* 0x40 */s32 animJumpLandWithLightObj; - /* 0x41 */s32 animJumpWithLightObj; - /* 0x42 */s32 animFallLandWithLightObj; - /* 0x43 */s32 animFallWithLightObj; - /* 0x44 */s32 animFallFromSlidingWithLightObj; - /* 0x45 */s32 animSlidingOnBottomWithLightObj; - /* 0x46 */s32 animStandUpFromSlidingWithLightObj; - /* 0x47 */s32 animRidingShell; - /* 0x48 */s32 animWalking; - /* 0x49 */s32 animForwardFlip; - /* 0x4a */s32 animJumpRidingShell; - /* 0x4b */s32 animLandFromDoubleJump; - /* 0x4c */s32 animDoubleJumpFall; - /* 0x4d */s32 animSingleJump; - /* 0x4e */s32 animLandFromSingleJump; - /* 0x4f */s32 animAirKick; - /* 0x50 */s32 animDoubleJumpRise; - /* 0x51 */s32 animStartForwardSpinning; - /* 0x52 */s32 animThrowLightObject; - /* 0x53 */s32 animFallFromSlideKick; - /* 0x54 */s32 animBendKnessRidingShell; - /* 0x55 */s32 animLegsStuckInGround; - /* 0x56 */s32 animGeneralFall; - /* 0x57 */s32 animGeneralLand; - /* 0x58 */s32 animBeingGrabbed; - /* 0x59 */s32 animGrabHeavyObject; - /* 0x5a */s32 animSlowLandFromDive; - /* 0x5b */s32 animFlyFromCannon; - /* 0x5c */s32 animMoveOnWireNetRight; - /* 0x5d */s32 animMoveOnWireNetLeft; - /* 0x5e */s32 animMissingCap; - /* 0x5f */s32 animPullDoorWalkIn; - /* 0x60 */s32 animPushDoorWalkIn; - /* 0x61 */s32 animUnlockDoor; - /* 0x62 */s32 animStartReachPocket; - /* 0x63 */s32 animReachPocket; - /* 0x64 */s32 animStopReachPocket; - /* 0x65 */s32 animGroundThrow; - /* 0x66 */s32 animGroundKick; - /* 0x67 */s32 animFirstPunch; - /* 0x68 */s32 animSecondPunch; - /* 0x69 */s32 animFirstPunchFast; - /* 0x6a */s32 animSecondPunchFast; - /* 0x6b */s32 animPickUpLightObj; - /* 0x6c */s32 animPushing; - /* 0x6d */s32 animStartRidingShell; - /* 0x6e */s32 animPlaceLightObj; - /* 0x6f */s32 animForwardSpinning; - /* 0x70 */s32 animBackwardSpinning; - /* 0x71 */s32 animBreakdance; - /* 0x72 */s32 animRunning; - /* 0x73 */s32 animRunningUnused; - /* 0x74 */s32 animSoftBackKb; - /* 0x75 */s32 animSoftFrontKb; - /* 0x76 */s32 animDyingInQuicksand; - /* 0x77 */s32 animIdleInQuicksand; - /* 0x78 */s32 animMoveInQuicksand; - /* 0x79 */s32 animElectrocution; - /* 0x7a */s32 animShocked; - /* 0x7b */s32 animBackwardKb; - /* 0x7c */s32 animForwardKb; - /* 0x7d */s32 animIdleHeavyObj; - /* 0x7e */s32 animStandAgainstWall; - /* 0x7f */s32 animSidestepLeft; - /* 0x80 */s32 animSidestepRight; - /* 0x81 */s32 animStartSleepIdle; - /* 0x82 */s32 animStartSleepScratch; - /* 0x83 */s32 animStartSleepYawn; - /* 0x84 */s32 animStartSleepSitting; - /* 0x85 */s32 animSleepIdle; - /* 0x86 */s32 animSleepStartLying; - /* 0x87 */s32 animSleepLying; - /* 0x88 */s32 animDive; - /* 0x89 */s32 animSlideDive; - /* 0x8a */s32 animGroundBonk; - /* 0x8b */s32 animStopSlideLightObj; - /* 0x8c */s32 animSlideKick; - /* 0x8d */s32 animCrouchFromSlideKick; - /* 0x8e */s32 animSlideMotionless; - /* 0x8f */s32 animStopSlide; - /* 0x90 */s32 animFallFromSlide; - /* 0x91 */s32 animSlide; - /* 0x92 */s32 animTiptoe; - /* 0x93 */s32 animTwirlLand; - /* 0x94 */s32 animTwirl; - /* 0x95 */s32 animStartTwirl; - /* 0x96 */s32 animStopCrouching; - /* 0x97 */s32 animStartCrouching; - /* 0x98 */s32 animCrouching; - /* 0x99 */s32 animCrawling; - /* 0x9a */s32 animStopCrawling; - /* 0x9b */s32 animStartCrawling; - /* 0x9c */s32 animSummonStar; - /* 0x9d */s32 animReturnStarApproachDoor; - /* 0x9e */s32 animBackwardsWaterKb; - /* 0x9f */s32 animSwimWithObjPart1; - /* 0xa0 */s32 animSwimWithObjPart2; - /* 0xa1 */s32 animFlutterkickWithObj; - /* 0xa2 */s32 animWaterActionEndWithObj; - /* 0xa3 */s32 animStopGrabObjWater; - /* 0xa4 */s32 animWaterIdleWithObj; - /* 0xa5 */s32 animDrowningPart1; - /* 0xa6 */s32 animDrowningPart2; - /* 0xa7 */s32 animWaterDying; - /* 0xa8 */s32 animWaterForwardKb; - /* 0xa9 */s32 animFallFromWater; - /* 0xaa */s32 animSwimPart1; - /* 0xab */s32 animSwimPart2; - /* 0xac */s32 animFlutterkick; - /* 0xad */s32 animWaterActionEnd; - /* 0xae */s32 animWaterPickUpObj; - /* 0xaf */s32 animWaterGrabObjPart2; - /* 0xb0 */s32 animWaterGrabObjPart1; - /* 0xb1 */s32 animWaterThrowObj; - /* 0xb2 */s32 animWaterIdle; - /* 0xb3 */s32 animWaterStarDance; - /* 0xb4 */s32 animReturnFromWaterStarDance; - /* 0xb5 */s32 animGrabBowser; - /* 0xb6 */s32 animSwingingBowser; - /* 0xb7 */s32 animReleaseBowser; - /* 0xb8 */s32 animHoldingBowser; - /* 0xb9 */s32 animHeavyThrow; - /* 0xba */s32 animWalkPanting; - /* 0xbb */s32 animWalkWithHeavyObj; - /* 0xbc */s32 animTurningPart1; - /* 0xbd */s32 animTurningPart2; - /* 0xbe */s32 animSlideflipLand; - /* 0xbf */s32 animSlideflip; - /* 0xc0 */s32 animTripleJumpLand; - /* 0xc1 */s32 animTripleJump; - /* 0xc2 */s32 animFirstPerson; - /* 0xc3 */s32 animIdleHeadLeft; - /* 0xc4 */s32 animIdleHeadRight; - /* 0xc5 */s32 animIdleHeadCenter; - /* 0xc6 */s32 animHandstandLeft; - /* 0xc7 */s32 animHandstandRight; - /* 0xc8 */s32 animWakeFromSleep; - /* 0xc9 */s32 animWakeFromLying; - /* 0xca */s32 animStartTiptoe; - /* 0xcb */s32 animSlidejump; - /* 0xcc */s32 animStartWallkick; - /* 0xcd */s32 animStarDance; - /* 0xce */s32 animReturnFromStarDance; - /* 0xcf */s32 animForwardSpinningFlip; - /* 0xd0 */s32 animTripleJumpFly; - // sounds - f32 soundFreqScale; - s32 soundYahWahHoo; - s32 soundHoohoo; - s32 soundYahoo; - s32 soundUh; - s32 soundHrmm; - s32 soundWah2; - s32 soundWhoa; - s32 soundEeuh; - s32 soundAttacked; - s32 soundOoof; - s32 soundOoof2; - s32 soundHereWeGo; - s32 soundYawning; - s32 soundSnoring1; - s32 soundSnoring2; - s32 soundWaaaooow; - s32 soundHaha; - s32 soundHaha_2; - s32 soundUh2; - s32 soundUh2_2; - s32 soundOnFire; - s32 soundDying; - s32 soundPantingCold; - s32 soundPanting; - s32 soundCoughing1; - s32 soundCoughing2; - s32 soundCoughing3; - s32 soundPunchYah; - s32 soundPunchHoo; - s32 soundMamaMia; - s32 soundGroundPoundWah; - s32 soundDrowning; - s32 soundPunchWah; - s32 soundYahooWahaYippee; - s32 soundDoh; - s32 soundGameOver; - s32 soundHello; - s32 soundPressStartToPlay; - s32 soundTwirlBounce; - s32 soundSnoring3; - s32 soundSoLongaBowser; - s32 soundImaTired; - s32 soundLetsAGo; - s32 soundOkeyDokey; -}; - enum CharacterSound { CHAR_SOUND_YAH_WAH_HOO, CHAR_SOUND_HOOHOO, @@ -359,6 +81,296 @@ enum CharacterSound { CHAR_SOUND_MAX // MUST BE LAST }; +struct Character { + enum CharacterType type; + char* name; + char hudHead; + struct TextureInfo hudHeadTexture; + u32 cameraHudHead; + u32 modelId; + u32 capModelId; + u32 capMetalModelId; + u32 capWingModelId; + u32 capMetalWingModelId; + u8 capEnemyLayer; + Gfx* capEnemyGfx; + Gfx* capEnemyDecalGfx; + f32 torsoRotMult; + // anim + u8 animOffsetEnabled; + f32 animOffsetLowYPoint; + f32 animOffsetFeet; + f32 animOffsetHand; + + // anims + union { + struct { + /* 0x00 */s32 animSlowLedgeGrab; + /* 0x01 */s32 animFallOverBackwards; + /* 0x02 */s32 animBackwardAirKb; + /* 0x03 */s32 animDyingOnBack; + /* 0x04 */s32 animBackflip; + /* 0x05 */s32 animClimbUpPole; + /* 0x06 */s32 animGrabPoleShort; + /* 0x07 */s32 animGrabPoleSwingPart1; + /* 0x08 */s32 animGrabPoleSwingPart2; + /* 0x09 */s32 animHandstandIdle; + /* 0x0a */s32 animHandstandJump; + /* 0x0b */s32 animStartHandstand; + /* 0x0c */s32 animReturnFromHandstand; + /* 0x0d */s32 animIdleOnPole; + /* 0x0e */s32 animAPose; + /* 0x0f */s32 animSkidOnGround; + /* 0x10 */s32 animStopSkid; + /* 0x11 */s32 animCrouchFromFastLongjump; + /* 0x12 */s32 animCrouchFromSlowLongjump; + /* 0x13 */s32 animFastLongjump; + /* 0x14 */s32 animSlowLongjump; + /* 0x15 */s32 animAirborneOnStomach; + /* 0x16 */s32 animWalkWithLightObj; + /* 0x17 */s32 animRunWithLightObj; + /* 0x18 */s32 animSlowWalkWithLightObj; + /* 0x19 */s32 animShiveringWarmingHand; + /* 0x1a */s32 animShiveringReturnToIdle; + /* 0x1b */s32 animShivering; + /* 0x1c */s32 animClimbDownLedge; + /* 0x1d */s32 animCreditsWaving; + /* 0x1e */s32 animCreditsLookUp; + /* 0x1f */s32 animCreditsReturnFromLookUp; + /* 0x20 */s32 animCreditsRaiseHand; + /* 0x21 */s32 animCreditsLowerHand; + /* 0x22 */s32 animCreditsTakeOffCap; + /* 0x23 */s32 animCreditsStartWalkLookUp; + /* 0x24 */s32 animCreditsLookBackThenRun; + /* 0x25 */s32 animFinalBowserRaiseHandSpin; + /* 0x26 */s32 animFinalBowserWingCapTakeOff; + /* 0x27 */s32 animCreditsPeaceSign; + /* 0x28 */s32 animStandUpFromLavaBoost; + /* 0x29 */s32 animFireLavaBurn; + /* 0x2a */s32 animWingCapFly; + /* 0x2b */s32 animHangOnOwl; + /* 0x2c */s32 animLandOnStomach; + /* 0x2d */s32 animAirForwardKb; + /* 0x2e */s32 animDyingOnStomach; + /* 0x2f */s32 animSuffocating; + /* 0x30 */s32 animCoughing; + /* 0x31 */s32 animThrowCatchKey; + /* 0x32 */s32 animDyingFallOver; + /* 0x33 */s32 animIdleOnLedge; + /* 0x34 */s32 animFastLedgeGrab; + /* 0x35 */s32 animHangOnCeiling; + /* 0x36 */s32 animPutCapOn; + /* 0x37 */s32 animTakeCapOffThenOn; + /* 0x38 */s32 animQuicklyPutCapOn; + /* 0x39 */s32 animHeadStuckInGround; + /* 0x3a */s32 animGroundPoundLanding; + /* 0x3b */s32 animTripleJumpGroundPound; + /* 0x3c */s32 animStartGroundPound; + /* 0x3d */s32 animGroundPound; + /* 0x3e */s32 animBottomStuckInGround; + /* 0x3f */s32 animIdleWithLightObj; + /* 0x40 */s32 animJumpLandWithLightObj; + /* 0x41 */s32 animJumpWithLightObj; + /* 0x42 */s32 animFallLandWithLightObj; + /* 0x43 */s32 animFallWithLightObj; + /* 0x44 */s32 animFallFromSlidingWithLightObj; + /* 0x45 */s32 animSlidingOnBottomWithLightObj; + /* 0x46 */s32 animStandUpFromSlidingWithLightObj; + /* 0x47 */s32 animRidingShell; + /* 0x48 */s32 animWalking; + /* 0x49 */s32 animForwardFlip; + /* 0x4a */s32 animJumpRidingShell; + /* 0x4b */s32 animLandFromDoubleJump; + /* 0x4c */s32 animDoubleJumpFall; + /* 0x4d */s32 animSingleJump; + /* 0x4e */s32 animLandFromSingleJump; + /* 0x4f */s32 animAirKick; + /* 0x50 */s32 animDoubleJumpRise; + /* 0x51 */s32 animStartForwardSpinning; + /* 0x52 */s32 animThrowLightObject; + /* 0x53 */s32 animFallFromSlideKick; + /* 0x54 */s32 animBendKnessRidingShell; + /* 0x55 */s32 animLegsStuckInGround; + /* 0x56 */s32 animGeneralFall; + /* 0x57 */s32 animGeneralLand; + /* 0x58 */s32 animBeingGrabbed; + /* 0x59 */s32 animGrabHeavyObject; + /* 0x5a */s32 animSlowLandFromDive; + /* 0x5b */s32 animFlyFromCannon; + /* 0x5c */s32 animMoveOnWireNetRight; + /* 0x5d */s32 animMoveOnWireNetLeft; + /* 0x5e */s32 animMissingCap; + /* 0x5f */s32 animPullDoorWalkIn; + /* 0x60 */s32 animPushDoorWalkIn; + /* 0x61 */s32 animUnlockDoor; + /* 0x62 */s32 animStartReachPocket; + /* 0x63 */s32 animReachPocket; + /* 0x64 */s32 animStopReachPocket; + /* 0x65 */s32 animGroundThrow; + /* 0x66 */s32 animGroundKick; + /* 0x67 */s32 animFirstPunch; + /* 0x68 */s32 animSecondPunch; + /* 0x69 */s32 animFirstPunchFast; + /* 0x6a */s32 animSecondPunchFast; + /* 0x6b */s32 animPickUpLightObj; + /* 0x6c */s32 animPushing; + /* 0x6d */s32 animStartRidingShell; + /* 0x6e */s32 animPlaceLightObj; + /* 0x6f */s32 animForwardSpinning; + /* 0x70 */s32 animBackwardSpinning; + /* 0x71 */s32 animBreakdance; + /* 0x72 */s32 animRunning; + /* 0x73 */s32 animRunningUnused; + /* 0x74 */s32 animSoftBackKb; + /* 0x75 */s32 animSoftFrontKb; + /* 0x76 */s32 animDyingInQuicksand; + /* 0x77 */s32 animIdleInQuicksand; + /* 0x78 */s32 animMoveInQuicksand; + /* 0x79 */s32 animElectrocution; + /* 0x7a */s32 animShocked; + /* 0x7b */s32 animBackwardKb; + /* 0x7c */s32 animForwardKb; + /* 0x7d */s32 animIdleHeavyObj; + /* 0x7e */s32 animStandAgainstWall; + /* 0x7f */s32 animSidestepLeft; + /* 0x80 */s32 animSidestepRight; + /* 0x81 */s32 animStartSleepIdle; + /* 0x82 */s32 animStartSleepScratch; + /* 0x83 */s32 animStartSleepYawn; + /* 0x84 */s32 animStartSleepSitting; + /* 0x85 */s32 animSleepIdle; + /* 0x86 */s32 animSleepStartLying; + /* 0x87 */s32 animSleepLying; + /* 0x88 */s32 animDive; + /* 0x89 */s32 animSlideDive; + /* 0x8a */s32 animGroundBonk; + /* 0x8b */s32 animStopSlideLightObj; + /* 0x8c */s32 animSlideKick; + /* 0x8d */s32 animCrouchFromSlideKick; + /* 0x8e */s32 animSlideMotionless; + /* 0x8f */s32 animStopSlide; + /* 0x90 */s32 animFallFromSlide; + /* 0x91 */s32 animSlide; + /* 0x92 */s32 animTiptoe; + /* 0x93 */s32 animTwirlLand; + /* 0x94 */s32 animTwirl; + /* 0x95 */s32 animStartTwirl; + /* 0x96 */s32 animStopCrouching; + /* 0x97 */s32 animStartCrouching; + /* 0x98 */s32 animCrouching; + /* 0x99 */s32 animCrawling; + /* 0x9a */s32 animStopCrawling; + /* 0x9b */s32 animStartCrawling; + /* 0x9c */s32 animSummonStar; + /* 0x9d */s32 animReturnStarApproachDoor; + /* 0x9e */s32 animBackwardsWaterKb; + /* 0x9f */s32 animSwimWithObjPart1; + /* 0xa0 */s32 animSwimWithObjPart2; + /* 0xa1 */s32 animFlutterkickWithObj; + /* 0xa2 */s32 animWaterActionEndWithObj; + /* 0xa3 */s32 animStopGrabObjWater; + /* 0xa4 */s32 animWaterIdleWithObj; + /* 0xa5 */s32 animDrowningPart1; + /* 0xa6 */s32 animDrowningPart2; + /* 0xa7 */s32 animWaterDying; + /* 0xa8 */s32 animWaterForwardKb; + /* 0xa9 */s32 animFallFromWater; + /* 0xaa */s32 animSwimPart1; + /* 0xab */s32 animSwimPart2; + /* 0xac */s32 animFlutterkick; + /* 0xad */s32 animWaterActionEnd; + /* 0xae */s32 animWaterPickUpObj; + /* 0xaf */s32 animWaterGrabObjPart2; + /* 0xb0 */s32 animWaterGrabObjPart1; + /* 0xb1 */s32 animWaterThrowObj; + /* 0xb2 */s32 animWaterIdle; + /* 0xb3 */s32 animWaterStarDance; + /* 0xb4 */s32 animReturnFromWaterStarDance; + /* 0xb5 */s32 animGrabBowser; + /* 0xb6 */s32 animSwingingBowser; + /* 0xb7 */s32 animReleaseBowser; + /* 0xb8 */s32 animHoldingBowser; + /* 0xb9 */s32 animHeavyThrow; + /* 0xba */s32 animWalkPanting; + /* 0xbb */s32 animWalkWithHeavyObj; + /* 0xbc */s32 animTurningPart1; + /* 0xbd */s32 animTurningPart2; + /* 0xbe */s32 animSlideflipLand; + /* 0xbf */s32 animSlideflip; + /* 0xc0 */s32 animTripleJumpLand; + /* 0xc1 */s32 animTripleJump; + /* 0xc2 */s32 animFirstPerson; + /* 0xc3 */s32 animIdleHeadLeft; + /* 0xc4 */s32 animIdleHeadRight; + /* 0xc5 */s32 animIdleHeadCenter; + /* 0xc6 */s32 animHandstandLeft; + /* 0xc7 */s32 animHandstandRight; + /* 0xc8 */s32 animWakeFromSleep; + /* 0xc9 */s32 animWakeFromLying; + /* 0xca */s32 animStartTiptoe; + /* 0xcb */s32 animSlidejump; + /* 0xcc */s32 animStartWallkick; + /* 0xcd */s32 animStarDance; + /* 0xce */s32 animReturnFromStarDance; + /* 0xcf */s32 animForwardSpinningFlip; + /* 0xd0 */s32 animTripleJumpFly; + }; + s32 anims[CHAR_ANIM_MAX]; + }; + + // sounds + f32 soundFreqScale; + union { + struct { + s32 soundYahWahHoo; + s32 soundHoohoo; + s32 soundYahoo; + s32 soundUh; + s32 soundHrmm; + s32 soundWah2; + s32 soundWhoa; + s32 soundEeuh; + s32 soundAttacked; + s32 soundOoof; + s32 soundOoof2; + s32 soundHereWeGo; + s32 soundYawning; + s32 soundSnoring1; + s32 soundSnoring2; + s32 soundWaaaooow; + s32 soundHaha; + s32 soundHaha_2; + s32 soundUh2; + s32 soundUh2_2; + s32 soundOnFire; + s32 soundDying; + s32 soundPantingCold; + s32 soundPanting; + s32 soundCoughing1; + s32 soundCoughing2; + s32 soundCoughing3; + s32 soundPunchYah; + s32 soundPunchHoo; + s32 soundMamaMia; + s32 soundGroundPoundWah; + s32 soundDrowning; + s32 soundPunchWah; + s32 soundYahooWahaYippee; + s32 soundDoh; + s32 soundGameOver; + s32 soundHello; + s32 soundPressStartToPlay; + s32 soundTwirlBounce; + s32 soundSnoring3; + s32 soundSoLongaBowser; + s32 soundImaTired; + s32 soundLetsAGo; + s32 soundOkeyDokey; + }; + s32 sounds[CHAR_SOUND_MAX]; + }; +}; + struct MarioState; extern struct Character gCharacters[]; struct Character* get_character(struct MarioState* m); diff --git a/src/pc/lua/smlua_cobject_autogen.c b/src/pc/lua/smlua_cobject_autogen.c index c69fb02c..110eb9ab 100644 --- a/src/pc/lua/smlua_cobject_autogen.c +++ b/src/pc/lua/smlua_cobject_autogen.c @@ -537,6 +537,7 @@ static struct LuaObjectField sCharacterFields[LUA_CHARACTER_FIELD_COUNT] = { { "animWaterStarDance", LVT_S32, offsetof(struct Character, animWaterStarDance), true, LOT_NONE }, { "animWaterThrowObj", LVT_S32, offsetof(struct Character, animWaterThrowObj), true, LOT_NONE }, { "animWingCapFly", LVT_S32, offsetof(struct Character, animWingCapFly), true, LOT_NONE }, +// { "anims", LOT_???, offsetof(struct Character, anims), true, LOT_??? }, <--- UNIMPLEMENTED { "cameraHudHead", LVT_U32, offsetof(struct Character, cameraHudHead), true, LOT_NONE }, // { "capEnemyDecalGfx", LVT_???, offsetof(struct Character, capEnemyDecalGfx), true, LOT_??? }, <--- UNIMPLEMENTED // { "capEnemyGfx", LVT_???, offsetof(struct Character, capEnemyGfx), true, LOT_??? }, <--- UNIMPLEMENTED @@ -594,6 +595,7 @@ static struct LuaObjectField sCharacterFields[LUA_CHARACTER_FIELD_COUNT] = { { "soundYahoo", LVT_S32, offsetof(struct Character, soundYahoo), true, LOT_NONE }, { "soundYahooWahaYippee", LVT_S32, offsetof(struct Character, soundYahooWahaYippee), true, LOT_NONE }, { "soundYawning", LVT_S32, offsetof(struct Character, soundYawning), true, LOT_NONE }, +// { "sounds", LOT_???, offsetof(struct Character, sounds), true, LOT_??? }, <--- UNIMPLEMENTED { "torsoRotMult", LVT_F32, offsetof(struct Character, torsoRotMult), true, LOT_NONE }, { "type", LVT_S32, offsetof(struct Character, type), true, LOT_NONE }, }; diff --git a/src/pc/lua/smlua_constants_autogen.c b/src/pc/lua/smlua_constants_autogen.c index 550f54ab..3dc19e36 100644 --- a/src/pc/lua/smlua_constants_autogen.c +++ b/src/pc/lua/smlua_constants_autogen.c @@ -1983,6 +1983,7 @@ char gSmluaConstants[] = "" "CHAR_ANIM_RETURN_FROM_STAR_DANCE = 206\n" "CHAR_ANIM_FORWARD_SPINNING_FLIP = 207\n" "CHAR_ANIM_TRIPLE_JUMP_FLY = 208\n" +"CHAR_ANIM_MAX = 209\n" "MARIO_EYES_BLINK = 0\n" "MARIO_EYES_OPEN = 1\n" "MARIO_EYES_HALF_CLOSED = 2\n"