Advertisement
Thar0

Animation Debugger/Viewer

May 25th, 2021 (edited)
1,086
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 35.21 KB | None | 0 0
  1. // h
  2.  
  3. #ifndef _ANIM_VIEWER_H_
  4. #define _ANIM_VIEWER_H_
  5.  
  6. #include "global.h"
  7.  
  8. struct AnimViewer;
  9.  
  10. typedef struct AnimViewer {
  11.     Actor actor;
  12.     SkelAnime skelAnime;
  13.     Vec3s jointTable[PLAYER_LIMB_BUF_COUNT];
  14.     Vec3s morphTable[PLAYER_LIMB_BUF_COUNT];
  15.     Vec3s blendTable[PLAYER_LIMB_BUF_COUNT];
  16.     SkelAnime skelAnimeAux;
  17.     Vec3s jointTableAux[PLAYER_LIMB_BUF_COUNT];
  18.     Vec3s morphTableAux[PLAYER_LIMB_BUF_COUNT];
  19. } AnimViewer;
  20.  
  21. extern const ActorInit Anim_Viewer_InitVars;
  22.  
  23. #endif
  24.  
  25. // c
  26.  
  27. #include "anim_viewer.h"
  28. #include "objects/gameplay_keep/gameplay_keep.h"
  29. #include "objects/object_torch2/object_torch2.h"
  30.  
  31. #define FLAGS 0x00000035
  32.  
  33. #define THIS ((AnimViewer*)thisx)
  34.  
  35. void AnimViewer_Init(Actor* thisx, GlobalContext* globalCtx);
  36.  
  37. void AnimViewer_Update(Actor* thisx, GlobalContext* globalCtx);
  38. void AnimViewer_Draw(Actor* thisx, GlobalContext* globalCtx);
  39.  
  40. const ActorInit Anim_Viewer_InitVars = {
  41.     ACTOR_ANIM_VIEWER,
  42.     ACTORCAT_NPC,
  43.     FLAGS,
  44.     OBJECT_TORCH2,
  45.     sizeof(AnimViewer),
  46.     (ActorFunc)AnimViewer_Init,
  47.     (ActorFunc)Actor_Noop,
  48.     (ActorFunc)AnimViewer_Update,
  49.     (ActorFunc)AnimViewer_Draw,
  50. };
  51.  
  52. typedef struct {
  53.     LinkAnimationHeader* anim;
  54.     const char* name;
  55. } AnimationDebuggerData[];
  56.  
  57. #define ANIM_DEBUG_DATA(animSym) { &animSym, #animSym }
  58.  
  59. AnimationDebuggerData sLinkAnimations = {
  60.     ANIM_DEBUG_DATA(gPlayerAnim_002310), // Child falling into chest
  61.     ANIM_DEBUG_DATA(gPlayerAnim_002318), // Child chest opening
  62.     ANIM_DEBUG_DATA(gPlayerAnim_002320), // Falling backwards (off log in Fountain)
  63.     ANIM_DEBUG_DATA(gPlayerAnim_002328), // Collapsing
  64.     ANIM_DEBUG_DATA(gPlayerAnim_002330), // Opening door, front left
  65.     ANIM_DEBUG_DATA(gPlayerAnim_002338), // Opening door, front right
  66.     ANIM_DEBUG_DATA(gPlayerAnim_002340), // Blown back
  67.     ANIM_DEBUG_DATA(gPlayerAnim_002348), // Receiving Item Start
  68.     ANIM_DEBUG_DATA(gPlayerAnim_002350), // Receiving Item Raising Hands
  69.     ANIM_DEBUG_DATA(gPlayerAnim_002358), // Receiving Item Lowering Hands
  70.     ANIM_DEBUG_DATA(gPlayerAnim_002360), // Pulling Master Sword
  71.     ANIM_DEBUG_DATA(gPlayerAnim_002368), // Backing Away
  72.     ANIM_DEBUG_DATA(gPlayerAnim_002370), // Backed Away Drawing Sword
  73.     ANIM_DEBUG_DATA(gPlayerAnim_002378), // Backed Away
  74.     ANIM_DEBUG_DATA(gPlayerAnim_002380), // Looking Around, Left
  75.     ANIM_DEBUG_DATA(gPlayerAnim_002388), // Looking Around, Right to Left & Back
  76.     ANIM_DEBUG_DATA(gPlayerAnim_002390), // Getting up
  77.     ANIM_DEBUG_DATA(gPlayerAnim_002398), // Getting up done
  78.     ANIM_DEBUG_DATA(gPlayerAnim_0023A0), // Peer through window
  79.     ANIM_DEBUG_DATA(gPlayerAnim_0023A8), // Child letting go of Master Sword
  80.     ANIM_DEBUG_DATA(gPlayerAnim_0023B0), // Getting up, dusting self off
  81.     ANIM_DEBUG_DATA(gPlayerAnim_0023B8), // Sat on the ground
  82.     ANIM_DEBUG_DATA(gPlayerAnim_0023C0), // Getting off ladder, bottom left
  83.     ANIM_DEBUG_DATA(gPlayerAnim_0023C8), // Getting off ladder, bottom right
  84.     ANIM_DEBUG_DATA(gPlayerAnim_0023D0), // Getting off ladder, top left
  85.     ANIM_DEBUG_DATA(gPlayerAnim_0023D8), // Getting off ladder, top right
  86.     ANIM_DEBUG_DATA(gPlayerAnim_0023E0), // Getting on ladder, bottom
  87.     ANIM_DEBUG_DATA(gPlayerAnim_0023E8), // Getting on ladder, top
  88.     ANIM_DEBUG_DATA(gPlayerAnim_0023F0), // Climbing ladder, Left-Right
  89.     ANIM_DEBUG_DATA(gPlayerAnim_0023F8), // Climbing ladder, Right-Left
  90.     ANIM_DEBUG_DATA(gPlayerAnim_002400), // Child Crouching with Hylian Shield
  91.     ANIM_DEBUG_DATA(gPlayerAnim_002408), // Asleep on bed, nightmares 1
  92.     ANIM_DEBUG_DATA(gPlayerAnim_002410), // Wake up
  93.     ANIM_DEBUG_DATA(gPlayerAnim_002418), // Stand up off bed
  94.     ANIM_DEBUG_DATA(gPlayerAnim_002420), // Asleep on bed, nightmares 2
  95.     ANIM_DEBUG_DATA(gPlayerAnim_002428), // Asleep on bed
  96.     ANIM_DEBUG_DATA(gPlayerAnim_002430), // Sat on bed
  97.     ANIM_DEBUG_DATA(gPlayerAnim_002438), // Looking around, bias towards upwards done
  98.     ANIM_DEBUG_DATA(gPlayerAnim_002440), // Looking around, bias towards upwards
  99.     ANIM_DEBUG_DATA(gPlayerAnim_002448), // Looking around, upwards
  100.     ANIM_DEBUG_DATA(gPlayerAnim_002450), //
  101.     ANIM_DEBUG_DATA(gPlayerAnim_002458), // Lower right hand
  102.     ANIM_DEBUG_DATA(gPlayerAnim_002460), // Offer right hand
  103.     ANIM_DEBUG_DATA(gPlayerAnim_002468), // Right hand oustretched
  104.     ANIM_DEBUG_DATA(gPlayerAnim_002470), // Child surprised
  105.     ANIM_DEBUG_DATA(gPlayerAnim_002478), // BGS Horizontal Slash
  106.     ANIM_DEBUG_DATA(gPlayerAnim_002480), // BGS 3rd Horizontal Slash
  107.     ANIM_DEBUG_DATA(gPlayerAnim_002488), // BGS Vertical Slash
  108.     ANIM_DEBUG_DATA(gPlayerAnim_002490), // BGS 3rd Vertical Slash
  109.     ANIM_DEBUG_DATA(gPlayerAnim_002498), // BGS Lunge
  110.     ANIM_DEBUG_DATA(gPlayerAnim_0024A0), // Bgs 3rd Lunge
  111.     ANIM_DEBUG_DATA(gPlayerAnim_0024A8), //
  112.     ANIM_DEBUG_DATA(gPlayerAnim_0024B0), //
  113.     ANIM_DEBUG_DATA(gPlayerAnim_0024B8), //
  114.     ANIM_DEBUG_DATA(gPlayerAnim_0024C0), //
  115.     ANIM_DEBUG_DATA(gPlayerAnim_0024C8), //
  116.     ANIM_DEBUG_DATA(gPlayerAnim_0024D0), //
  117.     ANIM_DEBUG_DATA(gPlayerAnim_0024D8), //
  118.     ANIM_DEBUG_DATA(gPlayerAnim_0024E0), // Drawing sword
  119.     ANIM_DEBUG_DATA(gPlayerAnim_0024E8), // Braking walking backwards
  120.     ANIM_DEBUG_DATA(gPlayerAnim_0024F0), // Lurching forwards
  121.     ANIM_DEBUG_DATA(gPlayerAnim_0024F8), // Walking backwards
  122.     ANIM_DEBUG_DATA(gPlayerAnim_002500), //
  123.     ANIM_DEBUG_DATA(gPlayerAnim_002508), //
  124.     ANIM_DEBUG_DATA(gPlayerAnim_002510), // Shield struck stationary
  125.     ANIM_DEBUG_DATA(gPlayerAnim_002518), // BGS defense stance struck stationary
  126.     ANIM_DEBUG_DATA(gPlayerAnim_002520), //
  127.     ANIM_DEBUG_DATA(gPlayerAnim_002528), //
  128.     ANIM_DEBUG_DATA(gPlayerAnim_002530), //
  129.     ANIM_DEBUG_DATA(gPlayerAnim_002538), // Landing
  130.     ANIM_DEBUG_DATA(gPlayerAnim_002540), //
  131.     ANIM_DEBUG_DATA(gPlayerAnim_002548), // Lunge
  132.     ANIM_DEBUG_DATA(gPlayerAnim_002550), //
  133.     ANIM_DEBUG_DATA(gPlayerAnim_002558), // Partial crouch
  134.     ANIM_DEBUG_DATA(gPlayerAnim_002560), //
  135.     ANIM_DEBUG_DATA(gPlayerAnim_002568), // Sidewalk targeted left
  136.     ANIM_DEBUG_DATA(gPlayerAnim_002570), // Sidewalk targeted right
  137.     ANIM_DEBUG_DATA(gPlayerAnim_002578), // Shield while targeted
  138.     ANIM_DEBUG_DATA(gPlayerAnim_002580), // Shield stance while moving forward/backward
  139.     ANIM_DEBUG_DATA(gPlayerAnim_002588), // Hold BGS targeted
  140.     ANIM_DEBUG_DATA(gPlayerAnim_002590), // Targeted shield down
  141.     ANIM_DEBUG_DATA(gPlayerAnim_002598), // Transition to crouch with shield
  142.     ANIM_DEBUG_DATA(gPlayerAnim_0025A0), // Crouch with shield
  143.     ANIM_DEBUG_DATA(gPlayerAnim_0025A8), // Hop
  144.     ANIM_DEBUG_DATA(gPlayerAnim_0025B0), // Crouch stab
  145.     ANIM_DEBUG_DATA(gPlayerAnim_0025B8), // Transition to shield while targeted
  146.     ANIM_DEBUG_DATA(gPlayerAnim_0025C0), //
  147.     ANIM_DEBUG_DATA(gPlayerAnim_0025C8), //
  148.     ANIM_DEBUG_DATA(gPlayerAnim_0025D0), // Shield while targeted
  149.     ANIM_DEBUG_DATA(gPlayerAnim_0025D8), // Transition to crouch with shield from shield while targeted
  150.     ANIM_DEBUG_DATA(gPlayerAnim_0025E0), // Crouch from shield while targeted
  151.     ANIM_DEBUG_DATA(gPlayerAnim_0025E8), // Hop with shield up
  152.     ANIM_DEBUG_DATA(gPlayerAnim_0025F0), // Crouch stab
  153.     ANIM_DEBUG_DATA(gPlayerAnim_0025F8), //
  154.     ANIM_DEBUG_DATA(gPlayerAnim_002600), //
  155.     ANIM_DEBUG_DATA(gPlayerAnim_002608), // Horizontal slash
  156.     ANIM_DEBUG_DATA(gPlayerAnim_002610), // Horizontal slash 2
  157.     ANIM_DEBUG_DATA(gPlayerAnim_002618), //
  158.     ANIM_DEBUG_DATA(gPlayerAnim_002620), //
  159.     ANIM_DEBUG_DATA(gPlayerAnim_002628), //
  160.     ANIM_DEBUG_DATA(gPlayerAnim_002630), //
  161.     ANIM_DEBUG_DATA(gPlayerAnim_002638), //
  162.     ANIM_DEBUG_DATA(gPlayerAnim_002640), // Bottle catch
  163.     ANIM_DEBUG_DATA(gPlayerAnim_002648), // Bottle swing
  164.     ANIM_DEBUG_DATA(gPlayerAnim_002650), // Fairy bottle open
  165.     ANIM_DEBUG_DATA(gPlayerAnim_002658), // Drink start
  166.     ANIM_DEBUG_DATA(gPlayerAnim_002660), // Drink end
  167.     ANIM_DEBUG_DATA(gPlayerAnim_002668), // Drink head back start
  168.     ANIM_DEBUG_DATA(gPlayerAnim_002670), // Drink head back
  169.     ANIM_DEBUG_DATA(gPlayerAnim_002678), // Bottle scoop
  170.     ANIM_DEBUG_DATA(gPlayerAnim_002680), //
  171.     ANIM_DEBUG_DATA(gPlayerAnim_002688), // Bottle dump
  172.     ANIM_DEBUG_DATA(gPlayerAnim_002690), //
  173.     ANIM_DEBUG_DATA(gPlayerAnim_002698), //
  174.     ANIM_DEBUG_DATA(gPlayerAnim_0026A0), //
  175.     ANIM_DEBUG_DATA(gPlayerAnim_0026A8), //
  176.     ANIM_DEBUG_DATA(gPlayerAnim_0026B0), //
  177.     ANIM_DEBUG_DATA(gPlayerAnim_0026B8), //
  178.     ANIM_DEBUG_DATA(gPlayerAnim_0026C0), //
  179.     ANIM_DEBUG_DATA(gPlayerAnim_0026C8), //
  180.     ANIM_DEBUG_DATA(gPlayerAnim_0026D0), //
  181.     ANIM_DEBUG_DATA(gPlayerAnim_0026D8), //
  182.     ANIM_DEBUG_DATA(gPlayerAnim_0026E0), //
  183.     ANIM_DEBUG_DATA(gPlayerAnim_0026E8), //
  184.     ANIM_DEBUG_DATA(gPlayerAnim_0026F0), //
  185.     ANIM_DEBUG_DATA(gPlayerAnim_0026F8), //
  186.     ANIM_DEBUG_DATA(gPlayerAnim_002700), //
  187.     ANIM_DEBUG_DATA(gPlayerAnim_002708), //
  188.     ANIM_DEBUG_DATA(gPlayerAnim_002710), //
  189.     ANIM_DEBUG_DATA(gPlayerAnim_002718), //
  190.     ANIM_DEBUG_DATA(gPlayerAnim_002720), //
  191.     ANIM_DEBUG_DATA(gPlayerAnim_002728), //
  192.     ANIM_DEBUG_DATA(gPlayerAnim_002730), //
  193.     ANIM_DEBUG_DATA(gPlayerAnim_002738), //
  194.     ANIM_DEBUG_DATA(gPlayerAnim_002740), //
  195.     ANIM_DEBUG_DATA(gPlayerAnim_002748), //
  196.     ANIM_DEBUG_DATA(gPlayerAnim_002750), //
  197.     ANIM_DEBUG_DATA(gPlayerAnim_002758), //
  198.     ANIM_DEBUG_DATA(gPlayerAnim_002760), //
  199.     ANIM_DEBUG_DATA(gPlayerAnim_002768), //
  200.     ANIM_DEBUG_DATA(gPlayerAnim_002770), //
  201.     ANIM_DEBUG_DATA(gPlayerAnim_002778), // Turn around, shocked
  202.     ANIM_DEBUG_DATA(gPlayerAnim_002780), //
  203.     ANIM_DEBUG_DATA(gPlayerAnim_002788), //
  204.     ANIM_DEBUG_DATA(gPlayerAnim_002790), //
  205.     ANIM_DEBUG_DATA(gPlayerAnim_002798), //
  206.     ANIM_DEBUG_DATA(gPlayerAnim_0027A0), //
  207.     ANIM_DEBUG_DATA(gPlayerAnim_0027A8), //
  208.     ANIM_DEBUG_DATA(gPlayerAnim_0027B0), //
  209.     ANIM_DEBUG_DATA(gPlayerAnim_0027B8), //
  210.     ANIM_DEBUG_DATA(gPlayerAnim_0027C0), //
  211.     ANIM_DEBUG_DATA(gPlayerAnim_0027C8), //
  212.     ANIM_DEBUG_DATA(gPlayerAnim_0027D0), //
  213.     ANIM_DEBUG_DATA(gPlayerAnim_0027D8), //
  214.     ANIM_DEBUG_DATA(gPlayerAnim_0027E0), //
  215.     ANIM_DEBUG_DATA(gPlayerAnim_0027E8), //
  216.     ANIM_DEBUG_DATA(gPlayerAnim_0027F0), //
  217.     ANIM_DEBUG_DATA(gPlayerAnim_0027F8), //
  218.     ANIM_DEBUG_DATA(gPlayerAnim_002800), //
  219.     ANIM_DEBUG_DATA(gPlayerAnim_002808), //
  220.     ANIM_DEBUG_DATA(gPlayerAnim_002810), //
  221.     ANIM_DEBUG_DATA(gPlayerAnim_002818), //
  222.     ANIM_DEBUG_DATA(gPlayerAnim_002820), //
  223.     ANIM_DEBUG_DATA(gPlayerAnim_002828), //
  224.     ANIM_DEBUG_DATA(gPlayerAnim_002830), //
  225.     ANIM_DEBUG_DATA(gPlayerAnim_002838), //
  226.     ANIM_DEBUG_DATA(gPlayerAnim_002840), //
  227.     ANIM_DEBUG_DATA(gPlayerAnim_002848), //
  228.     ANIM_DEBUG_DATA(gPlayerAnim_002850), //
  229.     ANIM_DEBUG_DATA(gPlayerAnim_002858), //
  230.     ANIM_DEBUG_DATA(gPlayerAnim_002860), //
  231.     ANIM_DEBUG_DATA(gPlayerAnim_002868), //
  232.     ANIM_DEBUG_DATA(gPlayerAnim_002870), //
  233.     ANIM_DEBUG_DATA(gPlayerAnim_002878), // Fall over forwards
  234.     ANIM_DEBUG_DATA(gPlayerAnim_002880), //
  235.     ANIM_DEBUG_DATA(gPlayerAnim_002888), //
  236.     ANIM_DEBUG_DATA(gPlayerAnim_002890), //
  237.     ANIM_DEBUG_DATA(gPlayerAnim_002898), //
  238.     ANIM_DEBUG_DATA(gPlayerAnim_0028A0), //
  239.     ANIM_DEBUG_DATA(gPlayerAnim_0028A8), //
  240.     ANIM_DEBUG_DATA(gPlayerAnim_0028B0), //
  241.     ANIM_DEBUG_DATA(gPlayerAnim_0028B8), //
  242.     ANIM_DEBUG_DATA(gPlayerAnim_0028C0), //
  243.     ANIM_DEBUG_DATA(gPlayerAnim_0028C8), //
  244.     ANIM_DEBUG_DATA(gPlayerAnim_0028D0), //
  245.     ANIM_DEBUG_DATA(gPlayerAnim_0028D8), //
  246.     ANIM_DEBUG_DATA(gPlayerAnim_0028E0), //
  247.     ANIM_DEBUG_DATA(gPlayerAnim_0028E8), //
  248.     ANIM_DEBUG_DATA(gPlayerAnim_0028F0), //
  249.     ANIM_DEBUG_DATA(gPlayerAnim_0028F8), //
  250.     ANIM_DEBUG_DATA(gPlayerAnim_002900), //
  251.     ANIM_DEBUG_DATA(gPlayerAnim_002908), //
  252.     ANIM_DEBUG_DATA(gPlayerAnim_002910), //
  253.     ANIM_DEBUG_DATA(gPlayerAnim_002918), //
  254.     ANIM_DEBUG_DATA(gPlayerAnim_002920), //
  255.     ANIM_DEBUG_DATA(gPlayerAnim_002928), //
  256.     ANIM_DEBUG_DATA(gPlayerAnim_002930), //
  257.     ANIM_DEBUG_DATA(gPlayerAnim_002938), //
  258.     ANIM_DEBUG_DATA(gPlayerAnim_002940), //
  259.     ANIM_DEBUG_DATA(gPlayerAnim_002948), //
  260.     ANIM_DEBUG_DATA(gPlayerAnim_002950), // Sidehop left
  261.     ANIM_DEBUG_DATA(gPlayerAnim_002958), //
  262.     ANIM_DEBUG_DATA(gPlayerAnim_002960), //
  263.     ANIM_DEBUG_DATA(gPlayerAnim_002968), // Horizontal Slash Right-Left
  264.     ANIM_DEBUG_DATA(gPlayerAnim_002970), //
  265.     ANIM_DEBUG_DATA(gPlayerAnim_002978), // Horizontal Slash Left-Right
  266.     ANIM_DEBUG_DATA(gPlayerAnim_002980), //
  267.     ANIM_DEBUG_DATA(gPlayerAnim_002988), // Sidehop right
  268.     ANIM_DEBUG_DATA(gPlayerAnim_002990), //
  269.     ANIM_DEBUG_DATA(gPlayerAnim_002998), //
  270.     ANIM_DEBUG_DATA(gPlayerAnim_0029A0), //
  271.     ANIM_DEBUG_DATA(gPlayerAnim_0029A8), // Lunge
  272.     ANIM_DEBUG_DATA(gPlayerAnim_0029B0), //
  273.     ANIM_DEBUG_DATA(gPlayerAnim_0029B8), //
  274.     ANIM_DEBUG_DATA(gPlayerAnim_0029C0), // Spin attack
  275.     ANIM_DEBUG_DATA(gPlayerAnim_0029C8), // Lunge
  276.     ANIM_DEBUG_DATA(gPlayerAnim_0029D0), // Backflip
  277.     ANIM_DEBUG_DATA(gPlayerAnim_0029D8), //
  278.     ANIM_DEBUG_DATA(gPlayerAnim_0029E0), //
  279.     ANIM_DEBUG_DATA(gPlayerAnim_0029E8), // Run while injured
  280.     ANIM_DEBUG_DATA(gPlayerAnim_0029F0), //
  281.     ANIM_DEBUG_DATA(gPlayerAnim_0029F8), //
  282.     ANIM_DEBUG_DATA(gPlayerAnim_002A00), //
  283.     ANIM_DEBUG_DATA(gPlayerAnim_002A08), //
  284.     ANIM_DEBUG_DATA(gPlayerAnim_002A10), // Crouched guarding with sword
  285.     ANIM_DEBUG_DATA(gPlayerAnim_002A18), // Crouching & Shielded
  286.     ANIM_DEBUG_DATA(gPlayerAnim_002A20), //
  287.     ANIM_DEBUG_DATA(gPlayerAnim_002A28), // Jump
  288.     ANIM_DEBUG_DATA(gPlayerAnim_002A30), // Land from jump
  289.     ANIM_DEBUG_DATA(gPlayerAnim_002A38), //
  290.     ANIM_DEBUG_DATA(gPlayerAnim_002A40), //
  291.     ANIM_DEBUG_DATA(gPlayerAnim_002A48), //
  292.     ANIM_DEBUG_DATA(gPlayerAnim_002A50), //
  293.     ANIM_DEBUG_DATA(gPlayerAnim_002A58), //
  294.     ANIM_DEBUG_DATA(gPlayerAnim_002A60), // Midair twirl
  295.     ANIM_DEBUG_DATA(gPlayerAnim_002A68), // Roll
  296.     ANIM_DEBUG_DATA(gPlayerAnim_002A70), //
  297.     ANIM_DEBUG_DATA(gPlayerAnim_002A78), //
  298.     ANIM_DEBUG_DATA(gPlayerAnim_002A80), //
  299.     ANIM_DEBUG_DATA(gPlayerAnim_002A88), //
  300.     ANIM_DEBUG_DATA(gPlayerAnim_002A90), //
  301.     ANIM_DEBUG_DATA(gPlayerAnim_002A98), // Diagonal slash bottom-right -> top-left
  302.     ANIM_DEBUG_DATA(gPlayerAnim_002AA0), //
  303.     ANIM_DEBUG_DATA(gPlayerAnim_002AA8), //
  304.     ANIM_DEBUG_DATA(gPlayerAnim_002AB0), //
  305.     ANIM_DEBUG_DATA(gPlayerAnim_002AB8), //
  306.     ANIM_DEBUG_DATA(gPlayerAnim_002AC0), //
  307.     ANIM_DEBUG_DATA(gPlayerAnim_002AC8), // Stand from jumpslash
  308.     ANIM_DEBUG_DATA(gPlayerAnim_002AD0), // Jumpslash
  309.     ANIM_DEBUG_DATA(gPlayerAnim_002AD8), // Charging spin attack shield forward, moving sideways
  310.     ANIM_DEBUG_DATA(gPlayerAnim_002AE0), //
  311.     ANIM_DEBUG_DATA(gPlayerAnim_002AE8), //
  312.     ANIM_DEBUG_DATA(gPlayerAnim_002AF0), // Charging spin attack shield forward, stationary
  313.     ANIM_DEBUG_DATA(gPlayerAnim_002AF8), // Begin/Stop charging spin attack
  314.     ANIM_DEBUG_DATA(gPlayerAnim_002B00), // Charging spin attack shield forward, moving forwards
  315.     ANIM_DEBUG_DATA(gPlayerAnim_002B08), //
  316.     ANIM_DEBUG_DATA(gPlayerAnim_002B10), //
  317.     ANIM_DEBUG_DATA(gPlayerAnim_002B18), //
  318.     ANIM_DEBUG_DATA(gPlayerAnim_002B20), //
  319.     ANIM_DEBUG_DATA(gPlayerAnim_002B28), //
  320.     ANIM_DEBUG_DATA(gPlayerAnim_002B30), //
  321.     ANIM_DEBUG_DATA(gPlayerAnim_002B38), // Run forwards with shield forward and sword to side
  322.     ANIM_DEBUG_DATA(gPlayerAnim_002B40), // BGS run forwards
  323.     ANIM_DEBUG_DATA(gPlayerAnim_002B48), // Horizontal Slash Right-Left
  324.     ANIM_DEBUG_DATA(gPlayerAnim_002B50), //
  325.     ANIM_DEBUG_DATA(gPlayerAnim_002B58), //
  326.     ANIM_DEBUG_DATA(gPlayerAnim_002B60), //
  327.     ANIM_DEBUG_DATA(gPlayerAnim_002B68), //
  328.     ANIM_DEBUG_DATA(gPlayerAnim_002B70), //
  329.     ANIM_DEBUG_DATA(gPlayerAnim_002B78), //
  330.     ANIM_DEBUG_DATA(gPlayerAnim_002B80), //
  331.     ANIM_DEBUG_DATA(gPlayerAnim_002B88), //
  332.     ANIM_DEBUG_DATA(gPlayerAnim_002B90), // Vertical slash
  333.     ANIM_DEBUG_DATA(gPlayerAnim_002B98), //
  334.     ANIM_DEBUG_DATA(gPlayerAnim_002BA0), //
  335.     ANIM_DEBUG_DATA(gPlayerAnim_002BA8), //
  336.     ANIM_DEBUG_DATA(gPlayerAnim_002BB0), //
  337.     ANIM_DEBUG_DATA(gPlayerAnim_002BB8), //
  338.     ANIM_DEBUG_DATA(gPlayerAnim_002BC0), //
  339.     ANIM_DEBUG_DATA(gPlayerAnim_002BC8), //
  340.     ANIM_DEBUG_DATA(gPlayerAnim_002BD0), //
  341.     ANIM_DEBUG_DATA(gPlayerAnim_002BD8), // Another vertical slash from shield forwards
  342.     ANIM_DEBUG_DATA(gPlayerAnim_002BE0), //
  343.     ANIM_DEBUG_DATA(gPlayerAnim_002BE8), //
  344.     ANIM_DEBUG_DATA(gPlayerAnim_002BF0), //
  345.     ANIM_DEBUG_DATA(gPlayerAnim_002BF8), // BGS slow walk forwards
  346.     ANIM_DEBUG_DATA(gPlayerAnim_002C00), //
  347.     ANIM_DEBUG_DATA(gPlayerAnim_002C08), //
  348.     ANIM_DEBUG_DATA(gPlayerAnim_002C10), //
  349.     ANIM_DEBUG_DATA(gPlayerAnim_002C18), //
  350.     ANIM_DEBUG_DATA(gPlayerAnim_002C20), //
  351.     ANIM_DEBUG_DATA(gPlayerAnim_002C28), //
  352.     ANIM_DEBUG_DATA(gPlayerAnim_002C30), //
  353.     ANIM_DEBUG_DATA(gPlayerAnim_002C38), //
  354.     ANIM_DEBUG_DATA(gPlayerAnim_002C40), //
  355.     ANIM_DEBUG_DATA(gPlayerAnim_002C48), //
  356.     ANIM_DEBUG_DATA(gPlayerAnim_002C50), //
  357.     ANIM_DEBUG_DATA(gPlayerAnim_002C58), //
  358.     ANIM_DEBUG_DATA(gPlayerAnim_002C60), //
  359.     ANIM_DEBUG_DATA(gPlayerAnim_002C68), //
  360.     ANIM_DEBUG_DATA(gPlayerAnim_002C70), //
  361.     ANIM_DEBUG_DATA(gPlayerAnim_002C78), //
  362.     ANIM_DEBUG_DATA(gPlayerAnim_002C80), //
  363.     ANIM_DEBUG_DATA(gPlayerAnim_002C88), //
  364.     ANIM_DEBUG_DATA(gPlayerAnim_002C90), //
  365.     ANIM_DEBUG_DATA(gPlayerAnim_002C98), //
  366.     ANIM_DEBUG_DATA(gPlayerAnim_002CA0), //
  367.     ANIM_DEBUG_DATA(gPlayerAnim_002CA8), //
  368.     ANIM_DEBUG_DATA(gPlayerAnim_002CB0), //
  369.     ANIM_DEBUG_DATA(gPlayerAnim_002CB8), //
  370.     ANIM_DEBUG_DATA(gPlayerAnim_002CC0), //
  371.     ANIM_DEBUG_DATA(gPlayerAnim_002CC8), //
  372.     ANIM_DEBUG_DATA(gPlayerAnim_002CD0), // Final slash
  373.     ANIM_DEBUG_DATA(gPlayerAnim_002CD8), // Final slash step back
  374.     ANIM_DEBUG_DATA(gPlayerAnim_002CE0), // Cast Nayrus
  375.     ANIM_DEBUG_DATA(gPlayerAnim_002CE8), // Channel Nayrus
  376.     ANIM_DEBUG_DATA(gPlayerAnim_002CF0), // Done casting Nayrus
  377.     ANIM_DEBUG_DATA(gPlayerAnim_002CF8), // Cast FW
  378.     ANIM_DEBUG_DATA(gPlayerAnim_002D00), // Channel FW
  379.     ANIM_DEBUG_DATA(gPlayerAnim_002D08), // Done casting FW
  380.     ANIM_DEBUG_DATA(gPlayerAnim_002D10), // Cast Dins
  381.     ANIM_DEBUG_DATA(gPlayerAnim_002D18), // Channel Dins
  382.     ANIM_DEBUG_DATA(gPlayerAnim_002D20), // Done casting Dins
  383.     ANIM_DEBUG_DATA(gPlayerAnim_002D28), //
  384.     ANIM_DEBUG_DATA(gPlayerAnim_002D30), //
  385.     ANIM_DEBUG_DATA(gPlayerAnim_002D38), //
  386.     ANIM_DEBUG_DATA(gPlayerAnim_002D40), //
  387.     ANIM_DEBUG_DATA(gPlayerAnim_002D48), //
  388.     ANIM_DEBUG_DATA(gPlayerAnim_002D50), //
  389.     ANIM_DEBUG_DATA(gPlayerAnim_002D58), // ess shuffle shield up
  390.     ANIM_DEBUG_DATA(gPlayerAnim_002D60), // ess shuffle shield down
  391.     ANIM_DEBUG_DATA(gPlayerAnim_002D68), //
  392.     ANIM_DEBUG_DATA(gPlayerAnim_002D70), //
  393.     ANIM_DEBUG_DATA(gPlayerAnim_002D78), //
  394.     ANIM_DEBUG_DATA(gPlayerAnim_002D80), //
  395.     ANIM_DEBUG_DATA(gPlayerAnim_002D88), //
  396.     ANIM_DEBUG_DATA(gPlayerAnim_002D90), //
  397.     ANIM_DEBUG_DATA(gPlayerAnim_002D98), //
  398.     ANIM_DEBUG_DATA(gPlayerAnim_002DA0), //
  399.     ANIM_DEBUG_DATA(gPlayerAnim_002DA8), //
  400.     ANIM_DEBUG_DATA(gPlayerAnim_002DB0), //
  401.     ANIM_DEBUG_DATA(gPlayerAnim_002DB8), //
  402.     ANIM_DEBUG_DATA(gPlayerAnim_002DC0), //
  403.     ANIM_DEBUG_DATA(gPlayerAnim_002DC8), // Staggered forwards
  404.     ANIM_DEBUG_DATA(gPlayerAnim_002DD0), // Backwalk
  405.     ANIM_DEBUG_DATA(gPlayerAnim_002DD8), // Stagger
  406.     ANIM_DEBUG_DATA(gPlayerAnim_002DE0), // Stagger 2
  407.     ANIM_DEBUG_DATA(gPlayerAnim_002DE8), // Slow backwalk
  408.     ANIM_DEBUG_DATA(gPlayerAnim_002DF0), // Step back
  409.     ANIM_DEBUG_DATA(gPlayerAnim_002DF8), //
  410.     ANIM_DEBUG_DATA(gPlayerAnim_002E00), // Pick up
  411.     ANIM_DEBUG_DATA(gPlayerAnim_002E08), // Pick up fast
  412.     ANIM_DEBUG_DATA(gPlayerAnim_002E10), // Hold
  413.     ANIM_DEBUG_DATA(gPlayerAnim_002E18), //
  414.     ANIM_DEBUG_DATA(gPlayerAnim_002E20), //
  415.     ANIM_DEBUG_DATA(gPlayerAnim_002E28), //
  416.     ANIM_DEBUG_DATA(gPlayerAnim_002E30), //
  417.     ANIM_DEBUG_DATA(gPlayerAnim_002E38), //
  418.     ANIM_DEBUG_DATA(gPlayerAnim_002E40), //
  419.     ANIM_DEBUG_DATA(gPlayerAnim_002E48), // Slow walk forward shield down
  420.     ANIM_DEBUG_DATA(gPlayerAnim_002E50), //
  421.     ANIM_DEBUG_DATA(gPlayerAnim_002E58), //
  422.     ANIM_DEBUG_DATA(gPlayerAnim_002E60), //
  423.     ANIM_DEBUG_DATA(gPlayerAnim_002E68), //
  424.     ANIM_DEBUG_DATA(gPlayerAnim_002E70), //
  425.     ANIM_DEBUG_DATA(gPlayerAnim_002E78), //
  426.     ANIM_DEBUG_DATA(gPlayerAnim_002E80), //
  427.     ANIM_DEBUG_DATA(gPlayerAnim_002E88), //
  428.     ANIM_DEBUG_DATA(gPlayerAnim_002E90), //
  429.     ANIM_DEBUG_DATA(gPlayerAnim_002E98), //
  430.     ANIM_DEBUG_DATA(gPlayerAnim_002EA0), //
  431.     ANIM_DEBUG_DATA(gPlayerAnim_002EA8), //
  432.     ANIM_DEBUG_DATA(gPlayerAnim_002EB0), //
  433.     ANIM_DEBUG_DATA(gPlayerAnim_002EB8), //
  434.     ANIM_DEBUG_DATA(gPlayerAnim_002EC0), //
  435.     ANIM_DEBUG_DATA(gPlayerAnim_002EC8), //
  436.     ANIM_DEBUG_DATA(gPlayerAnim_002ED0), //
  437.     ANIM_DEBUG_DATA(gPlayerAnim_002ED8), //
  438.     ANIM_DEBUG_DATA(gPlayerAnim_002EE0), //
  439.     ANIM_DEBUG_DATA(gPlayerAnim_002EE8), //
  440.     ANIM_DEBUG_DATA(gPlayerAnim_002EF0), //
  441.     ANIM_DEBUG_DATA(gPlayerAnim_002EF8), //
  442.     ANIM_DEBUG_DATA(gPlayerAnim_002F00), //
  443.     ANIM_DEBUG_DATA(gPlayerAnim_002F08), // Fall over forwards 2
  444.     ANIM_DEBUG_DATA(gPlayerAnim_002F10), //
  445.     ANIM_DEBUG_DATA(gPlayerAnim_002F18), //
  446.     ANIM_DEBUG_DATA(gPlayerAnim_002F20), //
  447.     ANIM_DEBUG_DATA(gPlayerAnim_002F28), //
  448.     ANIM_DEBUG_DATA(gPlayerAnim_002F30), //
  449.     ANIM_DEBUG_DATA(gPlayerAnim_002F38), //
  450.     ANIM_DEBUG_DATA(gPlayerAnim_002F40), //
  451.     ANIM_DEBUG_DATA(gPlayerAnim_002F48), //
  452.     ANIM_DEBUG_DATA(gPlayerAnim_002F50), //
  453.     ANIM_DEBUG_DATA(gPlayerAnim_002F58), //
  454.     ANIM_DEBUG_DATA(gPlayerAnim_002F60), //
  455.     ANIM_DEBUG_DATA(gPlayerAnim_002F68), //
  456.     ANIM_DEBUG_DATA(gPlayerAnim_002F70), // Staggered backwards
  457.     ANIM_DEBUG_DATA(gPlayerAnim_002F78), //
  458.     ANIM_DEBUG_DATA(gPlayerAnim_002F80), //
  459.     ANIM_DEBUG_DATA(gPlayerAnim_002F88), //
  460.     ANIM_DEBUG_DATA(gPlayerAnim_002F90), //
  461.     ANIM_DEBUG_DATA(gPlayerAnim_002F98), //
  462.     ANIM_DEBUG_DATA(gPlayerAnim_002FA0), //
  463.     ANIM_DEBUG_DATA(gPlayerAnim_002FA8), // Slower walk forwards shield up
  464.     ANIM_DEBUG_DATA(gPlayerAnim_002FB0), // Slower walk forwards shield down
  465.     ANIM_DEBUG_DATA(gPlayerAnim_002FB8), // Bonk 1H
  466.     ANIM_DEBUG_DATA(gPlayerAnim_002FC0), // Bonk Normal
  467.     ANIM_DEBUG_DATA(gPlayerAnim_002FC8), // Bonk 2H
  468.     ANIM_DEBUG_DATA(gPlayerAnim_002FD0), //
  469.     ANIM_DEBUG_DATA(gPlayerAnim_002FD8), //
  470.     ANIM_DEBUG_DATA(gPlayerAnim_002FE0), //
  471.     ANIM_DEBUG_DATA(gPlayerAnim_002FE8), //
  472.     ANIM_DEBUG_DATA(gPlayerAnim_002FF0), //
  473.     ANIM_DEBUG_DATA(gPlayerAnim_002FF8), //
  474.     ANIM_DEBUG_DATA(gPlayerAnim_003000), //
  475.     ANIM_DEBUG_DATA(gPlayerAnim_003008), //
  476.     ANIM_DEBUG_DATA(gPlayerAnim_003010), //
  477.     ANIM_DEBUG_DATA(gPlayerAnim_003018), //
  478.     ANIM_DEBUG_DATA(gPlayerAnim_003020), //
  479.     ANIM_DEBUG_DATA(gPlayerAnim_003028), //
  480.     ANIM_DEBUG_DATA(gPlayerAnim_003030), //
  481.     ANIM_DEBUG_DATA(gPlayerAnim_003038), // Roll normal
  482.     ANIM_DEBUG_DATA(gPlayerAnim_003040), //
  483.     ANIM_DEBUG_DATA(gPlayerAnim_003048), // Throw Nut 1
  484.     ANIM_DEBUG_DATA(gPlayerAnim_003050), // Throw Nut 2
  485.     ANIM_DEBUG_DATA(gPlayerAnim_003058), //
  486.     ANIM_DEBUG_DATA(gPlayerAnim_003060), //
  487.     ANIM_DEBUG_DATA(gPlayerAnim_003068), //
  488.     ANIM_DEBUG_DATA(gPlayerAnim_003070), //
  489.     ANIM_DEBUG_DATA(gPlayerAnim_003078), //
  490.     ANIM_DEBUG_DATA(gPlayerAnim_003080), //
  491.     ANIM_DEBUG_DATA(gPlayerAnim_003088), //
  492.     ANIM_DEBUG_DATA(gPlayerAnim_003090), //
  493.     ANIM_DEBUG_DATA(gPlayerAnim_003098), // Put away ocarina
  494.     ANIM_DEBUG_DATA(gPlayerAnim_0030A0), // Take out ocarina
  495.     ANIM_DEBUG_DATA(gPlayerAnim_0030A8), // Play Ocarina
  496.     ANIM_DEBUG_DATA(gPlayerAnim_0030B0), //
  497.     ANIM_DEBUG_DATA(gPlayerAnim_0030B8), //
  498.     ANIM_DEBUG_DATA(gPlayerAnim_0030C0), //
  499.     ANIM_DEBUG_DATA(gPlayerAnim_0030C8), //
  500.     ANIM_DEBUG_DATA(gPlayerAnim_0030D0), //
  501.     ANIM_DEBUG_DATA(gPlayerAnim_0030D8), //
  502.     ANIM_DEBUG_DATA(gPlayerAnim_0030E0), //
  503.     ANIM_DEBUG_DATA(gPlayerAnim_0030E8), //
  504.     ANIM_DEBUG_DATA(gPlayerAnim_0030F0), //
  505.     ANIM_DEBUG_DATA(gPlayerAnim_0030F8), //
  506.     ANIM_DEBUG_DATA(gPlayerAnim_003100), //
  507.     ANIM_DEBUG_DATA(gPlayerAnim_003108), //
  508.     ANIM_DEBUG_DATA(gPlayerAnim_003110), // Put down Medium
  509.     ANIM_DEBUG_DATA(gPlayerAnim_003118), // Put down Small
  510.     ANIM_DEBUG_DATA(gPlayerAnim_003120), // Redead 1
  511.     ANIM_DEBUG_DATA(gPlayerAnim_003128), // Redead 2
  512.     ANIM_DEBUG_DATA(gPlayerAnim_003130), //
  513.     ANIM_DEBUG_DATA(gPlayerAnim_003138), //
  514.     ANIM_DEBUG_DATA(gPlayerAnim_003140), //
  515.     ANIM_DEBUG_DATA(gPlayerAnim_003148), //
  516.     ANIM_DEBUG_DATA(gPlayerAnim_003150), //
  517.     ANIM_DEBUG_DATA(gPlayerAnim_003158), //
  518.     ANIM_DEBUG_DATA(gPlayerAnim_003160), //
  519.     ANIM_DEBUG_DATA(gPlayerAnim_003168), //
  520.     ANIM_DEBUG_DATA(gPlayerAnim_003170), //
  521.     ANIM_DEBUG_DATA(gPlayerAnim_003178), // Sidewalk left shield down
  522.     ANIM_DEBUG_DATA(gPlayerAnim_003180), // Sidewalk right shield down
  523.     ANIM_DEBUG_DATA(gPlayerAnim_003188), // Slow sidewalk shield up
  524.     ANIM_DEBUG_DATA(gPlayerAnim_003190), // Slow sidewalk shield down
  525.     ANIM_DEBUG_DATA(gPlayerAnim_003198), // Speaking 1
  526.     ANIM_DEBUG_DATA(gPlayerAnim_0031A0), // Speaking 2
  527.     ANIM_DEBUG_DATA(gPlayerAnim_0031A8), // Speaking Looking up 1
  528.     ANIM_DEBUG_DATA(gPlayerAnim_0031B0), // Speaking Looking up 2
  529.     ANIM_DEBUG_DATA(gPlayerAnim_0031B8), // Arms down sword hand on hip
  530.     ANIM_DEBUG_DATA(gPlayerAnim_0031C0), // Throw
  531.     ANIM_DEBUG_DATA(gPlayerAnim_0031C8), //
  532.     ANIM_DEBUG_DATA(gPlayerAnim_0031D0), //
  533.     ANIM_DEBUG_DATA(gPlayerAnim_0031D8), //
  534.     ANIM_DEBUG_DATA(gPlayerAnim_0031E0), //
  535.     ANIM_DEBUG_DATA(gPlayerAnim_0031E8), //
  536.     ANIM_DEBUG_DATA(gPlayerAnim_0031F0), //
  537.     ANIM_DEBUG_DATA(gPlayerAnim_0031F8), //
  538.     ANIM_DEBUG_DATA(gPlayerAnim_003200), //
  539.     ANIM_DEBUG_DATA(gPlayerAnim_003208), //
  540.     ANIM_DEBUG_DATA(gPlayerAnim_003210), //
  541.     ANIM_DEBUG_DATA(gPlayerAnim_003218), //
  542.     ANIM_DEBUG_DATA(gPlayerAnim_003220), // Sword forward, shield arm behind
  543.     ANIM_DEBUG_DATA(gPlayerAnim_003228), //
  544.     ANIM_DEBUG_DATA(gPlayerAnim_003230), //
  545.     ANIM_DEBUG_DATA(gPlayerAnim_003238), // Idle
  546.     ANIM_DEBUG_DATA(gPlayerAnim_003240), //
  547.     ANIM_DEBUG_DATA(gPlayerAnim_003248), //
  548.     ANIM_DEBUG_DATA(gPlayerAnim_003250), // Idle heated
  549.     ANIM_DEBUG_DATA(gPlayerAnim_003258), // Idle cold
  550.     ANIM_DEBUG_DATA(gPlayerAnim_003260), // Weird rise from ground
  551.     ANIM_DEBUG_DATA(gPlayerAnim_003268), // Slow walk forward shield up
  552.     ANIM_DEBUG_DATA(gPlayerAnim_003270), //
  553.     ANIM_DEBUG_DATA(gPlayerAnim_003278), //
  554.     ANIM_DEBUG_DATA(gPlayerAnim_003280), //
  555.     ANIM_DEBUG_DATA(gPlayerAnim_003288), //
  556.     ANIM_DEBUG_DATA(gPlayerAnim_003290), // Slow walk forward shield down
  557.     ANIM_DEBUG_DATA(gPlayerAnim_003298), //
  558.     ANIM_DEBUG_DATA(gPlayerAnim_0032A0), //
  559.     ANIM_DEBUG_DATA(gPlayerAnim_0032A8), //
  560.     ANIM_DEBUG_DATA(gPlayerAnim_0032B0), //
  561.     ANIM_DEBUG_DATA(gPlayerAnim_0032B8), //
  562.     ANIM_DEBUG_DATA(gPlayerAnim_0032C0), //
  563.     ANIM_DEBUG_DATA(gPlayerAnim_0032C8), //
  564.     ANIM_DEBUG_DATA(gPlayerAnim_0032D0), //
  565.     ANIM_DEBUG_DATA(gPlayerAnim_0032D8), //
  566.     ANIM_DEBUG_DATA(gPlayerAnim_0032E0), //
  567.     ANIM_DEBUG_DATA(gPlayerAnim_0032E8), //
  568.     ANIM_DEBUG_DATA(gPlayerAnim_0032F0), //
  569.     ANIM_DEBUG_DATA(gPlayerAnim_0032F8), //
  570.     ANIM_DEBUG_DATA(gPlayerAnim_003300), //
  571.     ANIM_DEBUG_DATA(gPlayerAnim_003308), //
  572.     ANIM_DEBUG_DATA(gPlayerAnim_003310), // Drown
  573.     ANIM_DEBUG_DATA(gPlayerAnim_003318), //
  574.     ANIM_DEBUG_DATA(gPlayerAnim_003320), //
  575.     ANIM_DEBUG_DATA(gPlayerAnim_003328), //
  576.     ANIM_DEBUG_DATA(gPlayerAnim_003330), //
  577.     ANIM_DEBUG_DATA(gPlayerAnim_003338), //
  578.     ANIM_DEBUG_DATA(gPlayerAnim_003340), //
  579.     ANIM_DEBUG_DATA(gPlayerAnim_003348), //
  580.     ANIM_DEBUG_DATA(gPlayerAnim_003350), //
  581.     ANIM_DEBUG_DATA(gPlayerAnim_003358), //
  582.     ANIM_DEBUG_DATA(gPlayerAnim_003360), //
  583.     ANIM_DEBUG_DATA(gPlayerAnim_003368), //
  584.     ANIM_DEBUG_DATA(gPlayerAnim_003370), //
  585.     ANIM_DEBUG_DATA(gPlayerAnim_003378), //
  586.     ANIM_DEBUG_DATA(gPlayerAnim_003380), //
  587.     ANIM_DEBUG_DATA(gPlayerAnim_003388), //
  588.     ANIM_DEBUG_DATA(gPlayerAnim_003390), //
  589.     ANIM_DEBUG_DATA(gPlayerAnim_003398), //
  590.     ANIM_DEBUG_DATA(gPlayerAnim_0033A0), //
  591.     ANIM_DEBUG_DATA(gPlayerAnim_0033A8), //
  592.     ANIM_DEBUG_DATA(gPlayerAnim_0033B0), //
  593.     ANIM_DEBUG_DATA(gPlayerAnim_0033B8), //
  594.     ANIM_DEBUG_DATA(gPlayerAnim_0033C0), //
  595.     ANIM_DEBUG_DATA(gPlayerAnim_0033C8), //
  596.     ANIM_DEBUG_DATA(gPlayerAnim_0033D0), //
  597.     ANIM_DEBUG_DATA(gPlayerAnim_0033D8), //
  598.     ANIM_DEBUG_DATA(gPlayerAnim_0033E0), // Adjusting tunic
  599.     ANIM_DEBUG_DATA(gPlayerAnim_0033E8), // Scuffing shoes
  600.     ANIM_DEBUG_DATA(gPlayerAnim_0033F0), // Stretching
  601.     ANIM_DEBUG_DATA(gPlayerAnim_0033F8), // Tired
  602.     ANIM_DEBUG_DATA(gPlayerAnim_003400), //
  603.     ANIM_DEBUG_DATA(gPlayerAnim_003408), // Adjusting belt
  604.     ANIM_DEBUG_DATA(gPlayerAnim_003410), // cuffing shoes 1H
  605.     ANIM_DEBUG_DATA(gPlayerAnim_003418), // Shaking shield
  606.     ANIM_DEBUG_DATA(gPlayerAnim_003420), // Swinging sword 1H
  607.     ANIM_DEBUG_DATA(gPlayerAnim_003428), // Swinging sword 2H
  608.     ANIM_DEBUG_DATA(gPlayerAnim_003430), // Idle Yawn 1 Handed
  609.     ANIM_DEBUG_DATA(gPlayerAnim_003438), //
  610.     ANIM_DEBUG_DATA(gPlayerAnim_003440), //
  611.     ANIM_DEBUG_DATA(gPlayerAnim_003448), //
  612.     ANIM_DEBUG_DATA(gPlayerAnim_003450), //
  613.     ANIM_DEBUG_DATA(gPlayerAnim_003458), //
  614.     ANIM_DEBUG_DATA(gPlayerAnim_003460), //
  615.     ANIM_DEBUG_DATA(gPlayerAnim_003468), //
  616.     ANIM_DEBUG_DATA(gPlayerAnim_003470), //
  617.     ANIM_DEBUG_DATA(gPlayerAnim_003478), //
  618.     ANIM_DEBUG_DATA(gPlayerAnim_003480), //
  619.     ANIM_DEBUG_DATA(gPlayerAnim_003488), //
  620.     ANIM_DEBUG_DATA(gPlayerAnim_003490), //
  621.     ANIM_DEBUG_DATA(gPlayerAnim_003498), //
  622.     ANIM_DEBUG_DATA(gPlayerAnim_0034A0), //
  623.     ANIM_DEBUG_DATA(gPlayerAnim_0034A8), //
  624.     ANIM_DEBUG_DATA(gPlayerAnim_0034B0), // Turn around
  625.     ANIM_DEBUG_DATA(gPlayerAnim_0034B8), //
  626.     ANIM_DEBUG_DATA(gPlayerAnim_0034C0), //
  627.     ANIM_DEBUG_DATA(gPlayerAnim_0034C8), //
  628.     ANIM_DEBUG_DATA(gPlayerAnim_0034D0), //
  629.     ANIM_DEBUG_DATA(gPlayerAnim_0034D8), //
  630.     ANIM_DEBUG_DATA(gPlayerAnim_0034E0), //
  631.     ANIM_DEBUG_DATA(gPlayerAnim_0034E8), //
  632.     ANIM_DEBUG_DATA(gPlayerAnim_0034F0), //
  633. };
  634.  
  635. static s32 sAnimDbgCurSkelAnime = 1;
  636. static s32 sAnimDbgIdx1 = 0;
  637. static s32 sAnimDbgIdx2 = 0;
  638.  
  639. static u8 sAnimCopyFlags[PLAYER_LIMB_MAX] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 };
  640.  
  641. void AnimViewer_Init(Actor* thisx, GlobalContext* globalCtx) {
  642.     static Vec3s baseTransl = { -57, 3377, 0 };
  643.  
  644.     AnimViewer* this = THIS;
  645.  
  646.     ActorShape_Init(&this->actor.shape, 0.0f, ActorShadow_DrawFeet, 60.0f);
  647.  
  648.     SkelAnime_InitLink(globalCtx, &this->skelAnime, &gDarkLinkSkel, &gPlayerAnim_003238, 9, this->jointTable,
  649.                        this->morphTable, PLAYER_LIMB_MAX);
  650.     this->skelAnime.baseTransl = baseTransl;
  651.  
  652.     SkelAnime_InitLink(globalCtx, &this->skelAnimeAux, &gDarkLinkSkel, &gPlayerAnim_003238, 9, this->jointTableAux,
  653.                        this->morphTableAux, PLAYER_LIMB_MAX);
  654.     this->skelAnimeAux.baseTransl = baseTransl;
  655. }
  656.  
  657. void AnimViewer_Update(Actor* thisx, GlobalContext* globalCtx) {
  658.     AnimViewer* this = THIS;
  659.  
  660.     // update animations
  661.     LinkAnimation_Update(globalCtx, &this->skelAnime);
  662.     LinkAnimation_Update(globalCtx, &this->skelAnimeAux);
  663.  
  664.     // copy lower body animation to the main skelanime joint table
  665.     AnimationContext_SetCopyFalse(globalCtx, this->skelAnime.limbCount, this->skelAnime.jointTable, this->skelAnimeAux.jointTable, sAnimCopyFlags);
  666.  
  667.     // update position
  668.     Actor_MoveForward(&this->actor);
  669.     // update bg info
  670.     Actor_UpdateBgCheckInfo(globalCtx, &this->actor, 26.0f, 18.0f, 56.0f, 0x3F);
  671.  
  672.     // animation debugger controls
  673.     {
  674.         s32* mod;
  675.  
  676.         // set which skelanime to modify
  677.         if (CHECK_BTN_ALL(globalCtx->state.input[0].cur.button, BTN_DLEFT)) {
  678.             sAnimDbgCurSkelAnime = 1;
  679.         } else if (CHECK_BTN_ALL(globalCtx->state.input[0].cur.button, BTN_DRIGHT)) {
  680.             sAnimDbgCurSkelAnime = 2;
  681.         }
  682.  
  683.         // change index based on which skelanime to modify
  684.         mod = (sAnimDbgCurSkelAnime == 1) ? &sAnimDbgIdx1 : &sAnimDbgIdx2;
  685.         if (CHECK_BTN_ALL(globalCtx->state.input[0].cur.button, BTN_DDOWN)) {
  686.             *mod = CLAMP_MIN(*mod - 1, 0);
  687.         } else if (CHECK_BTN_ALL(globalCtx->state.input[0].cur.button, BTN_DUP)) {
  688.             *mod = CLAMP_MAX(*mod + 1, ARRAY_COUNT(sLinkAnimations) - 1);
  689.         }
  690.  
  691.         // change anim
  692.         if (this->skelAnime.animation != sLinkAnimations[sAnimDbgIdx1].anim) {
  693.             LinkAnimation_Change(globalCtx, &this->skelAnime, sLinkAnimations[sAnimDbgIdx1].anim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, 0.0f);
  694.         }
  695.         if (this->skelAnimeAux.animation != sLinkAnimations[sAnimDbgIdx2].anim) {
  696.             LinkAnimation_Change(globalCtx, &this->skelAnimeAux, sLinkAnimations[sAnimDbgIdx2].anim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, 0.0f);
  697.         }
  698.     }
  699. }
  700.  
  701. void AnimViewer_Draw(Actor* thisx, GlobalContext* globalCtx) {
  702.     AnimViewer* this = THIS;
  703.  
  704.     OPEN_DISPS(globalCtx->state.gfxCtx, __FILE__, __LINE__);
  705.  
  706.     func_80093C80(globalCtx);
  707.     func_80093D84(globalCtx->state.gfxCtx);
  708.  
  709.     gDPSetEnvColor(POLY_OPA_DISP++, 255, 0, 0, 255);
  710.     gSPSegment(POLY_OPA_DISP++, 0x0C, gEmptyDL);
  711.  
  712.     func_8002EBCC(&this->actor, globalCtx, 0);
  713.     func_8002ED80(&this->actor, globalCtx, 0);
  714.  
  715.     POLY_OPA_DISP =
  716.         SkelAnime_DrawFlex(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable, this->skelAnime.dListCount,
  717.                            NULL, NULL, this, POLY_OPA_DISP);
  718.  
  719.     // animation debugger display
  720.     {
  721.         GfxPrint gfxPrint;
  722.         Gfx* prevDisplayList;
  723.         Gfx* displayList;
  724.  
  725.         GfxPrint_Init(&gfxPrint);
  726.  
  727.         prevDisplayList = POLY_OPA_DISP;
  728.         displayList = Graph_GfxPlusOne(POLY_OPA_DISP);
  729.         gSPDisplayList(OVERLAY_DISP++, displayList);
  730.  
  731.         GfxPrint_Open(&gfxPrint, displayList);
  732.         GfxPrint_SetColor(&gfxPrint, 255, 255, 55, 32);
  733.         GfxPrint_SetPos(&gfxPrint, 6, 18);
  734.         GfxPrint_Printf(&gfxPrint, "1:");
  735.         GfxPrint_SetPos(&gfxPrint, 9, 18);
  736.         GfxPrint_Printf(&gfxPrint, sLinkAnimations[sAnimDbgIdx1].name);
  737.         GfxPrint_SetPos(&gfxPrint, 6, 20);
  738.         GfxPrint_Printf(&gfxPrint, "2:");
  739.         GfxPrint_SetPos(&gfxPrint, 9, 20);
  740.         GfxPrint_Printf(&gfxPrint, sLinkAnimations[sAnimDbgIdx2].name);
  741.         GfxPrint_SetColor(&gfxPrint, 0, 255, 0, 32);
  742.         GfxPrint_SetPos(&gfxPrint, 3, (sAnimDbgCurSkelAnime == 1) ? 18 : 20);
  743.         GfxPrint_Printf(&gfxPrint, "->");
  744.         displayList = GfxPrint_Close(&gfxPrint);
  745.  
  746.         gSPEndDisplayList(displayList++);
  747.         Graph_BranchDlist(prevDisplayList, displayList);
  748.         POLY_OPA_DISP = displayList;
  749.  
  750.         GfxPrint_Destroy(&gfxPrint);
  751.     }
  752.  
  753.     CLOSE_DISPS(globalCtx->state.gfxCtx, __FILE__, __LINE__);
  754. }
  755.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement