#include <PR/ultratypes.h>

#include "dynlist_macros.h"
#include "dynlists.h"
#include "animdata.h"
#include "../dynlist_proc.h"
#include "../shape_helper.h"

struct DynList dynlist_mario_master[] = {
    BeginList(),
    UseIntegerNames(TRUE), // Specify all object names as integers

    StartGroup(DYNOBJ_MARIO_MAIN_SHAPES_GROUP),
    CallList(dynlist_mario_face_shape),
    CallList(dynlist_mario_eye_right_shape),
    CallList(dynlist_mario_eye_left_shape),
    CallList(dynlist_mario_eyebrow_right_shape),
    CallList(dynlist_mario_eyebrow_left_shape),
    CallList(dynlist_mario_mustache_shape),
    EndGroup(DYNOBJ_MARIO_MAIN_SHAPES_GROUP),

    MakeDynObj(D_LIGHT, DYNOBJ_SILVER_STAR_LIGHT),
    SetId(1),
    SetDiffuse(1.0, 1.0, 1.0),
    SetFlag(0x20),
    SetShapePtrPtr(&gShapeSilverStar),

    MakeDynObj(D_LIGHT, DYNOBJ_RED_STAR_LIGHT),
    SetId(0),
    SetDiffuse(1.0, 0.0, 0.0),
    SetShapePtrPtr(&gShapeRedStar),

    StartGroup(0x1),

    MakeDynObj(D_NET, DYNOBJ_MARIO_MAIN_NET),
    SetType(2),
    SetFlag(0x2),
    SetShapePtr(DYNOBJ_MARIO_FACE_SHAPE),
    SetScale(1.0, 1.0, 1.0),
    SetRotation(112.873, 0.0, 0.0),
    SetAttachOffset(0.0, 0.0, -20010.0),

    // right eyelid skinning
    MakeNetWithSubGroup(DYNOBJ_RIGHT_EYELID_SKIN_NET),
    AttachTo(0xd, DYNOBJ_MARIO_MAIN_NET),
    SetSkinShape(DYNOBJ_MARIO_FACE_SHAPE),
    SetScale(1.0, 1.0, 1.0),
    SetRotation(0.0, 90.0, 0.0),
    SetAttachOffset(116.3, 182.6, -70.2),
    MakeAttachedJoint(DYNOBJ_RIGHT_EYELID_JOINT_1),
    SetScale(1.0, 1.0, 1.0),
    SetRotation(0.0, 0.0, 162.007),
    SetAttachOffset(0.0, 0.0, 0.0),
    SetSkinWeight(7, 95.0),
    SetSkinWeight(8, 70.0),
    SetSkinWeight(48, 90.0),
    SetSkinWeight(49, 100.0),
    SetSkinWeight(128, 60.0),
    SetSkinWeight(131, 90.0),
    SetSkinWeight(132, 100.0),
    SetSkinWeight(133, 95.0),
    SetSkinWeight(134, 70.0),
    SetSkinWeight(428, 50.0),
    SetSkinWeight(429, 20.0),
    SetSkinWeight(51, 35.0),
    SetSkinWeight(124, 10.0),
    SetSkinWeight(126, 10.0),
    SetSkinWeight(127, 5.0),
    SetSkinWeight(130, 50.0),
    SetSkinWeight(135, 20.0),
    SetSkinWeight(136, 10.0),
    SetSkinWeight(423, 35.0),
    SetSkinWeight(46, 40.0),
    SetSkinWeight(47, 10.0),
    SetSkinWeight(82, 10.0),
    MakeAttachedJoint(DYNOBJ_RIGHT_EYELID_JOINT_2), // What is this joint for?
    SetScale(1.0, 1.0, 1.0),
    SetRotation(0.0, 0.0, 0.0),
    SetAttachOffset(382.3, 0.0, 0.0),
    EndNetWithSubGroup(DYNOBJ_RIGHT_EYELID_SKIN_NET),

    // left eyelid skinning
    MakeNetWithSubGroup(DYNOBJ_LEFT_EYELID_SKIN_NET),
    AttachTo(0xd, DYNOBJ_MARIO_MAIN_NET),
    SetSkinShape(DYNOBJ_MARIO_FACE_SHAPE),
    SetScale(1.0, 1.0, 1.0),
    SetRotation(0.0, 90.0, 0.0),
    SetAttachOffset(-116.3, 182.6, -70.2),
    MakeAttachedJoint(DYNOBJ_LEFT_EYELID_JOINT_1),
    SetScale(1.0, 1.0, 1.0),
    SetRotation(0.0, 0.0, 162.007),
    SetAttachOffset(0.0, 0.0, 0.0),
    SetSkinWeight(196, 90.0),
    SetSkinWeight(375, 70.0),
    SetSkinWeight(392, 70.0),
    SetSkinWeight(393, 95.0),
    SetSkinWeight(394, 95.0),
    SetSkinWeight(395, 100.0),
    SetSkinWeight(396, 100.0),
    SetSkinWeight(397, 90.0),
    SetSkinWeight(399, 60.0),
    SetSkinWeight(428, 50.0),
    SetSkinWeight(429, 20.0),
    SetSkinWeight(197, 50.0),
    SetSkinWeight(385, 5.0),
    SetSkinWeight(388, 10.0),
    SetSkinWeight(389, 10.0),
    SetSkinWeight(390, 20.0),
    SetSkinWeight(391, 35.0),
    SetSkinWeight(398, 10.0),
    SetSkinWeight(419, 35.0),
    SetSkinWeight(400, 40.0),
    SetSkinWeight(374, 10.0),
    SetSkinWeight(387, 10.0),
    MakeAttachedJoint(DYNOBJ_LEFT_EYELID_JOINT_2), // What is this joint for?
    SetScale(1.0, 1.0, 1.0),
    SetRotation(0.0, 0.0, 0.0),
    SetAttachOffset(420.0, 0.0, 0.0),
    EndNetWithSubGroup(DYNOBJ_LEFT_EYELID_SKIN_NET),

    // right jaw skinning
    MakeNetWithSubGroup(DYNOBJ_MARIO_JAW_SKIN_NET),
    AttachTo(0xd, DYNOBJ_MARIO_MAIN_NET),
    SetSkinShape(DYNOBJ_MARIO_FACE_SHAPE),
    SetScale(1.0, 1.0, 1.0),
    SetRotation(0.0, 90.0, 0.0),
    SetAttachOffset(0.0, -154.9, 118.5),
    MakeAttachedJoint(DYNOBJ_MARIO_RIGHT_JAW_JOINT),
    SetScale(1.0, 1.0, 1.0),
    SetRotation(0.0, 0.0, -111.558),
    SetAttachOffset(0.0, 0.0, 0.0),
    SetSkinWeight(98, 100.0),
    SetSkinWeight(104, 100.0),
    SetSkinWeight(189, 100.0),
    SetSkinWeight(358, 100.0),
    SetSkinWeight(5, 40.0),
    SetSkinWeight(10, 38.0),
    SetSkinWeight(380, 40.0),
    SetSkinWeight(405, 38.0),
    SetSkinWeight(39, 50.0),
    SetSkinWeight(117, 50.0),
    SetSkinWeight(337, 50.0),
    SetSkinWeight(11, 40.0),
    SetSkinWeight(379, 40.0),
    SetSkinWeight(105, 50.0),
    SetSkinWeight(116, 50.0),
    SetSkinWeight(406, 50.0),
    SetSkinWeight(85, 70.0),
    SetSkinWeight(86, 60.0),
    SetSkinWeight(111, 30.0),
    SetSkinWeight(159, 50.0),
    SetSkinWeight(357, 50.0),
    SetSkinWeight(416, 60.0),
    SetSkinWeight(6, 25.0),
    SetSkinWeight(407, 25.0),
    SetSkinWeight(408, 30.0),
    SetSkinWeight(4, 30.0),
    SetSkinWeight(410, 70.0),
    SetSkinWeight(409, 30.0),
    SetSkinWeight(109, 15.0),
    SetSkinWeight(355, 15.0),
    SetSkinWeight(35, 5.0),
    SetSkinWeight(372, 5.0),
    SetSkinWeight(376, 5.0),
    SetSkinWeight(110, 5.0),
    SetSkinWeight(16, 3.0),
    SetSkinWeight(17, 3.0),
    SetSkinWeight(34, 3.0),
    SetSkinWeight(373, 3.0),
    SetSkinWeight(381, 3.0),
    SetSkinWeight(383, 3.0),
    MakeAttachedJoint(DYNOBJ_MARIO_LEFT_JAW_JOINT),
    SetScale(1.0, 1.0, 1.0),
    SetRotation(0.0, 0.0, -31.153),
    SetAttachOffset(141.0, 0.0, 0.0),
    SetSkinWeight(31, 80.0),
    SetSkinWeight(32, 80.0),
    SetSkinWeight(39, 30.0),
    SetSkinWeight(40, 10.0),
    SetSkinWeight(99, 100.0),
    SetSkinWeight(100, 100.0),
    SetSkinWeight(105, 50.0),
    SetSkinWeight(113, 100.0),
    SetSkinWeight(114, 100.0),
    SetSkinWeight(115, 100.0),
    SetSkinWeight(116, 50.0),
    SetSkinWeight(117, 20.0),
    SetSkinWeight(177, 20.0),
    SetSkinWeight(336, 10.0),
    SetSkinWeight(337, 30.0),
    SetSkinWeight(406, 50.0),
    SetSkinWeight(411, 80.0),
    SetSkinWeight(412, 100.0),
    SetSkinWeight(413, 100.0),
    SetSkinWeight(414, 100.0),
    SetSkinWeight(415, 80.0),
    SetSkinWeight(418, 100.0),
    SetSkinWeight(409, 28.0),
    SetSkinWeight(86, 8.0),
    SetSkinWeight(416, 4.0),
    SetSkinWeight(4, 28.0),
    SetSkinWeight(5, 3.0),
    SetSkinWeight(10, 5.0),
    SetSkinWeight(380, 5.0),
    SetSkinWeight(405, 5.0),
    MakeAttachedJoint(DYNOBJ_MARIO_UNKNOWN_191), // What is this joint for?
    SetScale(1.0, 1.0, 1.0),
    SetRotation(0.0, 0.0, 0.0),
    SetAttachOffset(80.1, 0.0, 0.0),
    EndNetWithSubGroup(DYNOBJ_MARIO_JAW_SKIN_NET),

    // nose skinning
    MakeNetWithSubGroup(DYNOBJ_MARIO_NOSE_SKIN_NET),
    AttachTo(0xd, DYNOBJ_MARIO_MAIN_NET),
    SetSkinShape(DYNOBJ_MARIO_FACE_SHAPE),
    SetScale(1.0, 1.0, 1.0),
    SetRotation(0.0, 90.0, 0.0),
    SetAttachOffset(0.0, 15.3, 295.1),
    MakeAttachedJoint(DYNOBJ_MARIO_NOSE_JOINT_1),
    SetScale(1.0, 1.0, 1.0),
    SetRotation(0.0, 0.0, -178.586),
    SetAttachOffset(0.0, 0.0, 0.0),
    SetSkinWeight(15, 5.0),
    SetSkinWeight(18, 30.0),
    SetSkinWeight(23, 70.0),
    SetSkinWeight(24, 40.0),
    SetSkinWeight(25, 90.0),
    SetSkinWeight(26, 70.0),
    SetSkinWeight(27, 90.0),
    SetSkinWeight(28, 40.0),
    SetSkinWeight(29, 70.0),
    SetSkinWeight(30, 90.0),
    SetSkinWeight(41, 70.0),
    SetSkinWeight(160, 70.0),
    SetSkinWeight(161, 100.0),
    SetSkinWeight(182, 90.0),
    SetSkinWeight(183, 90.0),
    SetSkinWeight(346, 70.0),
    SetSkinWeight(347, 30.0),
    SetSkinWeight(348, 70.0),
    SetSkinWeight(349, 40.0),
    SetSkinWeight(350, 30.0),
    SetSkinWeight(351, 70.0),
    SetSkinWeight(352, 90.0),
    SetSkinWeight(353, 5.0),
    SetSkinWeight(386, 5.0),
    SetSkinWeight(430, 70.0),
    SetSkinWeight(431, 70.0),
    SetSkinWeight(433, 70.0),
    SetSkinWeight(434, 70.0),
    SetSkinWeight(435, 70.0),
    SetSkinWeight(436, 70.0),
    SetSkinWeight(437, 70.0),
    SetSkinWeight(439, 70.0),
    SetSkinWeight(19, 40.0),
    SetSkinWeight(20, 5.0),
    SetSkinWeight(21, 5.0),
    SetSkinWeight(22, 30.0),
    SetSkinWeight(82, 5.0),
    SetSkinWeight(83, 5.0),
    SetSkinWeight(87, 5.0),
    SetSkinWeight(384, 5.0),
    SetSkinWeight(387, 5.0),
    SetSkinWeight(432, 40.0),
    SetSkinWeight(438, 40.0),
    MakeAttachedJoint(DYNOBJ_MARIO_NOSE_JOINT_2), // What is this joint for?
    SetScale(1.0, 1.0, 1.0),
    SetRotation(0.0, 0.0, 0.0),
    SetAttachOffset(276.6, 0.0, 0.0),
    EndNetWithSubGroup(DYNOBJ_MARIO_NOSE_SKIN_NET),

    // right ear skinning
    MakeNetWithSubGroup(DYNOBJ_MARIO_RIGHT_EAR_SKIN_NET),
    AttachTo(0xd, DYNOBJ_MARIO_MAIN_NET),
    SetSkinShape(DYNOBJ_MARIO_FACE_SHAPE),
    SetScale(1.0, 1.0, 1.0),
    SetRotation(-90.0, 0.0, 0.0),
    SetAttachOffset(294.7, 13.1, -82.1),
    MakeAttachedJoint(DYNOBJ_MARIO_RIGHT_EAR_JOINT_1),
    SetScale(1.0, 1.0, 1.0),
    SetRotation(0.0, 0.0, 26.565),
    SetAttachOffset(0.0, 0.0, 0.0),
    SetSkinWeight(59, 80.0),
    SetSkinWeight(60, 50.0),
    SetSkinWeight(61, 60.0),
    SetSkinWeight(65, 100.0),
    SetSkinWeight(66, 60.0),
    SetSkinWeight(88, 10.0),
    SetSkinWeight(89, 60.0),
    SetSkinWeight(90, 80.0),
    SetSkinWeight(91, 70.0),
    SetSkinWeight(92, 100.0),
    SetSkinWeight(118, 15.0),
    SetSkinWeight(119, 5.0),
    SetSkinWeight(120, 15.0),
    SetSkinWeight(122, 60.0),
    SetSkinWeight(123, 70.0),
    SetSkinWeight(137, 10.0),
    SetSkinWeight(138, 60.0),
    SetSkinWeight(139, 10.0),
    SetSkinWeight(140, 5.0),
    SetSkinWeight(141, 10.0),
    SetSkinWeight(167, 60.0),
    SetSkinWeight(168, 70.0),
    SetSkinWeight(224, 50.0),
    SetSkinWeight(225, 70.0),
    SetSkinWeight(226, 50.0),
    SetSkinWeight(227, 50.0),
    SetSkinWeight(228, 60.0),
    SetSkinWeight(229, 60.0),
    SetSkinWeight(235, 10.0),
    MakeAttachedJoint(DYNOBJ_MARIO_RIGHT_EAR_JOINT_2), // What is this joint for?
    SetScale(1.0, 1.0, 1.0),
    SetRotation(0.0, 0.0, 0.0),
    SetAttachOffset(200.9, 0.0, 0.0),
    EndNetWithSubGroup(DYNOBJ_MARIO_RIGHT_EAR_SKIN_NET),

    // left ear skinning
    MakeNetWithSubGroup(DYNOBJ_MARIO_LEFT_EAR_SKIN_NET),
    AttachTo(0xd, DYNOBJ_MARIO_MAIN_NET),
    SetSkinShape(DYNOBJ_MARIO_FACE_SHAPE),
    SetScale(1.0, 1.0, 1.0),
    SetRotation(90.0, 180.0, 0.0),
    SetAttachOffset(-294.7, 13.1, -82.1),
    MakeAttachedJoint(DYNOBJ_MARIO_LEFT_EAR_JOINT_1),
    SetScale(1.0, 1.0, 1.0),
    SetRotation(180.0, 180.0, -153.435),
    SetAttachOffset(0.0, 0.0, 0.0),
    SetSkinWeight(244, 5.0),
    SetSkinWeight(267, 5.0),
    SetSkinWeight(268, 5.0),
    SetSkinWeight(299, 5.0),
    SetSkinWeight(302, 5.0),
    SetSkinWeight(307, 70.0),
    SetSkinWeight(308, 70.0),
    SetSkinWeight(309, 100.0),
    SetSkinWeight(310, 70.0),
    SetSkinWeight(311, 70.0),
    SetSkinWeight(314, 100.0),
    SetSkinWeight(315, 70.0),
    SetSkinWeight(317, 80.0),
    SetSkinWeight(318, 70.0),
    SetSkinWeight(319, 80.0),
    SetSkinWeight(320, 70.0),
    SetSkinWeight(321, 10.0),
    SetSkinWeight(322, 10.0),
    SetSkinWeight(323, 10.0),
    SetSkinWeight(324, 10.0),
    SetSkinWeight(325, 60.0),
    SetSkinWeight(326, 100.0),
    SetSkinWeight(327, 100.0),
    SetSkinWeight(328, 100.0),
    SetSkinWeight(329, 80.0),
    SetSkinWeight(330, 80.0),
    SetSkinWeight(331, 60.0),
    SetSkinWeight(332, 70.0),
    SetSkinWeight(340, 70.0),
    MakeAttachedJoint(DYNOBJ_MARIO_LEFT_EAR_JOINT_2), // What is this joint for?
    SetScale(1.0, 1.0, 1.0),
    SetRotation(0.0, 0.0, 0.02),
    SetAttachOffset(200.9, 0.0, 0.0),
    EndNetWithSubGroup(DYNOBJ_MARIO_LEFT_EAR_SKIN_NET),

    // right lip corner skinning
    MakeNetWithSubGroup(DYNOBJ_MARIO_RIGHT_LIP_CORNER_SKIN_NET),
    AttachTo(0xd, DYNOBJ_MARIO_MAIN_NET),
    SetSkinShape(DYNOBJ_MARIO_FACE_SHAPE),
    SetScale(1.0, 1.0, 1.0),
    SetRotation(-90.0, 0.0, 0.0),
    SetAttachOffset(119.7, -161.4, 125.5),
    MakeAttachedJoint(DYNOBJ_MARIO_RIGHT_LIP_CORNER_JOINT_1),
    SetScale(1.0, 1.0, 1.0),
    SetRotation(-0.02, 0.0, -66.509),
    SetAttachOffset(0.0, 0.0, 0.0),
    SetSkinWeight(4, 42.0),
    SetSkinWeight(5, 40.0),
    SetSkinWeight(6, 75.0),
    SetSkinWeight(10, 30.0),
    SetSkinWeight(11, 40.0),
    SetSkinWeight(16, 20.0),
    SetSkinWeight(17, 15.0),
    SetSkinWeight(33, 30.0),
    SetSkinWeight(34, 20.0),
    SetSkinWeight(35, 60.0),
    SetSkinWeight(37, 10.0),
    SetSkinWeight(43, 40.0),
    SetSkinWeight(85, 30.0),
    SetSkinWeight(86, 30.0),
    SetSkinWeight(93, 30.0),
    SetSkinWeight(94, 10.0),
    SetSkinWeight(101, 100.0),
    SetSkinWeight(103, 100.0),
    SetSkinWeight(108, 10.0),
    SetSkinWeight(109, 70.0),
    SetSkinWeight(110, 80.0),
    SetSkinWeight(111, 60.0),
    SetSkinWeight(112, 70.0),
    SetSkinWeight(159, 50.0),
    SetSkinWeight(42, 30.0),
    SetSkinWeight(102, 30.0),
    SetSkinWeight(31, 20.0),
    SetSkinWeight(32, 20.0),
    SetSkinWeight(44, 15.0),
    MakeAttachedJoint(DYNOBJ_MARIO_RIGHT_LIP_CORNER_JOINT_2), // What is this joint for?
    SetScale(1.0, 1.0, 1.0),
    SetRotation(0.028, 0.0, 0.0),
    SetAttachOffset(184.5, 0.0, 0.0),
    EndNetWithSubGroup(DYNOBJ_MARIO_RIGHT_LIP_CORNER_SKIN_NET),

    // left lip corner skinning
    MakeNetWithSubGroup(DYNOBJ_MARIO_LEFT_LIP_CORNER_SKIN_NET),
    AttachTo(0xd, DYNOBJ_MARIO_MAIN_NET),
    SetSkinShape(DYNOBJ_MARIO_FACE_SHAPE),
    SetScale(1.0, 1.0, 1.0),
    SetRotation(90.0, 180.0, 0.0),
    SetAttachOffset(-119.7, -161.4, 125.5),
    MakeAttachedJoint(DYNOBJ_MARIO_LEFT_LIP_CORNER_JOINT_1),
    SetScale(1.0, 1.0, 1.0),
    SetRotation(0.02, 0.0, -66.509),
    SetAttachOffset(0.0, 0.0, 0.0),
    SetSkinWeight(187, 100.0),
    SetSkinWeight(273, 30.0),
    SetSkinWeight(342, 10.0),
    SetSkinWeight(354, 40.0),
    SetSkinWeight(355, 70.0),
    SetSkinWeight(356, 70.0),
    SetSkinWeight(357, 50.0),
    SetSkinWeight(371, 10.0),
    SetSkinWeight(372, 60.0),
    SetSkinWeight(373, 20.0),
    SetSkinWeight(376, 80.0),
    SetSkinWeight(377, 100.0),
    SetSkinWeight(378, 10.0),
    SetSkinWeight(379, 40.0),
    SetSkinWeight(380, 30.0),
    SetSkinWeight(381, 15.0),
    SetSkinWeight(383, 20.0),
    SetSkinWeight(404, 30.0),
    SetSkinWeight(405, 30.0),
    SetSkinWeight(407, 75.0),
    SetSkinWeight(408, 60.0),
    SetSkinWeight(409, 42.0),
    SetSkinWeight(410, 30.0),
    SetSkinWeight(416, 36.0),
    SetSkinWeight(199, 15.0),
    SetSkinWeight(415, 20.0),
    SetSkinWeight(411, 20.0),
    SetSkinWeight(188, 20.0),
    SetSkinWeight(198, 20.0),
    MakeAttachedJoint(DYNOBJ_MARIO_LEFT_LIP_CORNER_JOINT_2), // What is this joint for?
    SetScale(1.0, 1.0, 1.0),
    SetRotation(-0.028, 0.0, 0.0),
    SetAttachOffset(184.5, 0.0, 0.0),
    EndNetWithSubGroup(DYNOBJ_MARIO_LEFT_LIP_CORNER_SKIN_NET),

    // ???
    MakeNetWithSubGroup(0x8F),
    AttachTo(0xd, DYNOBJ_MARIO_MAIN_NET),
    SetSkinShape(DYNOBJ_MARIO_FACE_SHAPE),
    SetScale(1.0, 1.0, 1.0),
    SetRotation(0.0, 90.0, 0.0),
    SetAttachOffset(0.0, -162.2, 121.0),
    MakeAttachedJoint(DYNOBJ_MARIO_UNKNOWN_140),
    SetScale(1.0, 1.0, 1.0),
    SetRotation(0.0, 0.0, -176.775),
    SetAttachOffset(0.0, 0.0, 0.0),
    SetSkinWeight(42, 70.0),
    SetSkinWeight(44, 85.0),
    SetSkinWeight(102, 70.0),
    SetSkinWeight(188, 80.0),
    SetSkinWeight(198, 80.0),
    SetSkinWeight(199, 85.0),
    MakeAttachedJoint(DYNOBJ_MARIO_UNKNOWN_137), // What is this joint for?
    SetScale(1.0, 1.0, 1.0),
    SetRotation(0.0, 0.0, 0.0),
    SetAttachOffset(242.8, 0.0, 0.0),
    EndNetWithSubGroup(0x8F),

    // cap skinning
    MakeNetWithSubGroup(DYNOBJ_MARIO_CAP_SKIN_NET),
    AttachTo(0xd, DYNOBJ_MARIO_MAIN_NET),
    SetSkinShape(DYNOBJ_MARIO_FACE_SHAPE),
    SetScale(1.0, 1.0, 1.0),
    SetRotation(0.0, 90.0, 0.0),
    SetAttachOffset(0.0, 233.8, -148.8),
    MakeAttachedJoint(DYNOBJ_MARIO_CAP_JOINT_1),
    SetScale(1.0, 1.0, 1.0),
    SetRotation(0.0, 0.0, 153.932),
    SetAttachOffset(0.0, 0.0, 0.0),
    SetSkinWeight(68, 90.0),
    SetSkinWeight(69, 100.0),
    SetSkinWeight(70, 100.0),
    SetSkinWeight(71, 100.0),
    SetSkinWeight(75, 100.0),
    SetSkinWeight(76, 100.0),
    SetSkinWeight(77, 100.0),
    SetSkinWeight(79, 80.0),
    SetSkinWeight(129, 100.0),
    SetSkinWeight(147, 90.0),
    SetSkinWeight(148, 90.0),
    SetSkinWeight(149, 100.0),
    SetSkinWeight(150, 100.0),
    SetSkinWeight(151, 100.0),
    SetSkinWeight(154, 100.0),
    SetSkinWeight(155, 100.0),
    SetSkinWeight(156, 100.0),
    SetSkinWeight(157, 100.0),
    SetSkinWeight(184, 100.0),
    SetSkinWeight(185, 100.0),
    SetSkinWeight(192, 100.0),
    SetSkinWeight(193, 90.0),
    SetSkinWeight(194, 80.0),
    SetSkinWeight(195, 100.0),
    SetSkinWeight(201, 100.0),
    SetSkinWeight(202, 100.0),
    SetSkinWeight(230, 100.0),
    SetSkinWeight(360, 100.0),
    SetSkinWeight(361, 100.0),
    SetSkinWeight(362, 100.0),
    SetSkinWeight(363, 100.0),
    SetSkinWeight(364, 100.0),
    SetSkinWeight(366, 100.0),
    SetSkinWeight(367, 90.0),
    SetSkinWeight(368, 100.0),
    SetSkinWeight(369, 90.0),
    SetSkinWeight(420, 100.0),
    SetSkinWeight(421, 100.0),
    SetSkinWeight(422, 100.0),
    SetSkinWeight(424, 100.0),
    SetSkinWeight(425, 100.0),
    SetSkinWeight(426, 100.0),
    SetSkinWeight(427, 100.0),
    SetSkinWeight(58, 100.0),
    SetSkinWeight(242, 100.0),
    SetSkinWeight(0, 100.0),
    SetSkinWeight(1, 100.0),
    SetSkinWeight(2, 80.0),
    SetSkinWeight(9, 100.0),
    SetSkinWeight(50, 100.0),
    SetSkinWeight(54, 100.0),
    SetSkinWeight(55, 100.0),
    SetSkinWeight(56, 100.0),
    SetSkinWeight(57, 100.0),
    SetSkinWeight(67, 80.0),
    SetSkinWeight(78, 90.0),
    SetSkinWeight(80, 100.0),
    SetSkinWeight(121, 100.0),
    SetSkinWeight(142, 50.0),
    SetSkinWeight(145, 80.0),
    SetSkinWeight(146, 100.0),
    SetSkinWeight(152, 90.0),
    SetSkinWeight(158, 90.0),
    SetSkinWeight(186, 100.0),
    SetSkinWeight(240, 80.0),
    SetSkinWeight(246, 100.0),
    SetSkinWeight(247, 100.0),
    SetSkinWeight(248, 50.0),
    SetSkinWeight(249, 90.0),
    SetSkinWeight(251, 100.0),
    SetSkinWeight(303, 90.0),
    SetSkinWeight(304, 100.0),
    SetSkinWeight(305, 100.0),
    SetSkinWeight(306, 100.0),
    SetSkinWeight(335, 100.0),
    SetSkinWeight(338, 100.0),
    SetSkinWeight(345, 100.0),
    SetSkinWeight(359, 90.0),
    SetSkinWeight(365, 100.0),
    SetSkinWeight(370, 80.0),
    SetSkinWeight(401, 100.0),
    SetSkinWeight(402, 100.0),
    SetSkinWeight(403, 100.0),
    SetSkinWeight(417, 80.0),
    SetSkinWeight(125, 60.0),
    SetSkinWeight(143, 50.0),
    SetSkinWeight(270, 50.0),
    SetSkinWeight(294, 60.0),
    SetSkinWeight(239, 50.0),
    SetSkinWeight(245, 50.0),
    MakeAttachedJoint(DYNOBJ_MARIO_CAP_JOINT_2), // What is this joint for?
    SetScale(1.0, 1.0, 1.0),
    SetRotation(0.0, 0.0, 0.0),
    SetAttachOffset(528.3, 0.0, 0.0),
    EndNetWithSubGroup(DYNOBJ_MARIO_CAP_SKIN_NET),

    // right eye skinning
    MakeNetWithSubGroup(DYNOBJ_MARIO_RIGHT_EYE_SKIN_NET),
    AttachTo(0xd, DYNOBJ_MARIO_MAIN_NET),
    SetSkinShape(DYNOBJ_MARIO_FACE_SHAPE),
    SetScale(1.0, 1.0, 1.0),
    SetRotation(90.0, 180.0, 0.0),
    SetAttachOffset(29.7, 192.4, -3.0),
    MakeAttachedJoint(DYNOBJ_MARIO_RIGHT_EYE_JOINT_1),
    SetScale(1.0, 1.0, 1.0),
    SetRotation(184.483, -178.885, 82.485),
    SetAttachOffset(0.0, 0.0, 0.0),
    MakeAttachedJoint(DYNOBJ_MARIO_RIGHT_EYE_JOINT_2), // What is this joint for?
    SetScale(1.0, 1.0, 1.0),
    SetRotation(0.0, 0.0, 0.0),
    SetAttachOffset(329.8, 0.0, 0.0),
    EndNetWithSubGroup(DYNOBJ_MARIO_RIGHT_EYE_SKIN_NET),
    MakeDynObj(D_NET, DYNOBJ_MARIO_RIGHT_EYE_UNKNOWN_NET),
    SetType(3),
    SetShapePtr(DYNOBJ_MARIO_RIGHT_EYE_SHAPE),
    AttachTo(0xd, DYNOBJ_MARIO_RIGHT_EYE_JOINT_1),
    SetScale(1.0, 1.0, 1.0),
    SetRotation(0.0, 0.0, 0.0),
    SetAttachOffset(0.0, 0.0, 0.0),

    // left eye skinning
    MakeNetWithSubGroup(DYNOBJ_MARIO_LEFT_EYE_SKIN_NET),
    AttachTo(0xd, DYNOBJ_MARIO_MAIN_NET),
    SetSkinShape(DYNOBJ_MARIO_FACE_SHAPE),
    SetScale(1.0, 1.0, 1.0),
    SetRotation(-90.0, 0.0, 0.0),
    SetAttachOffset(-29.0, 192.3, -2.0),
    MakeAttachedJoint(DYNOBJ_MARIO_LEFT_EYE_JOINT_1),
    SetScale(1.0, 1.0, 1.0),
    SetRotation(-6.873, 0.206, -97.461),
    SetAttachOffset(0.0, 0.0, 0.0),
    SetSkinWeight(429, 16.0),
    MakeAttachedJoint(DYNOMJ_MARIO_LEFT_EYE_JOINT_2), // What is this joint for?
    SetScale(1.0, 1.0, 1.0),
    SetRotation(0.0, 0.0, 0.0),
    SetAttachOffset(329.8, 0.0, 0.0),
    EndNetWithSubGroup(DYNOBJ_MARIO_LEFT_EYE_SKIN_NET),
    MakeDynObj(D_NET, DYNOBJ_MARIO_LEFT_EYE_UNKNOWN_NET),
    SetType(3),
    SetShapePtr(DYNOBJ_MARIO_LEFT_EYE_SHAPE),
    AttachTo(0xd, DYNOBJ_MARIO_LEFT_EYE_JOINT_1),
    SetScale(1.0, 1.0, 1.0),
    SetRotation(0.0, 0.0, 0.0),
    SetAttachOffset(0.0, 0.0, 0.0),

    // right eyebrow net (attaches to head)
    MakeDynObj(D_NET, DYNOBJ_MARIO_RIGHT_EYEBROW_NET),
    SetType(2),
    SetShapePtr(DYNOBJ_MARIO_RIGHT_EYEBROW_SHAPE),
    // attach right eyebrow to head
    AttachTo(0xd, DYNOBJ_MARIO_MAIN_NET),
    SetScale(1.0, 1.0, 1.0),
    SetRotation(0.0, 0.0, 0.0),
    SetAttachOffset(20.8, 0.0, -8.5),
    // right part of right eyebrow skinning
    MakeNetWithSubGroup(DYNOBJ_MARIO_RIGHT_EYEBROW_RPART_SKIN_NET),
    AttachTo(0xd, DYNOBJ_MARIO_RIGHT_EYEBROW_NET),
    SetSkinShape(DYNOBJ_MARIO_RIGHT_EYEBROW_SHAPE),
    SetScale(1.0, 1.0, 1.0),
    SetRotation(-90.0, 90.0, -90.0),
    SetAttachOffset(231.3, 287.1, -51.4),
    MakeAttachedJoint(DYNOBJ_MARIO_RIGHT_EYEBROW_RPART_JOINT_1),
    SetScale(1.0, 1.0, 1.0),
    SetRotation(10.886, 0.0, 177.51),
    SetAttachOffset(0.0, 0.0, 0.0),
    SetSkinWeight(5, 70.0),
    SetSkinWeight(6, 80.0),
    SetSkinWeight(7, 70.0),
    SetSkinWeight(8, 50.0),
    SetSkinWeight(11, 70.0),
    SetSkinWeight(12, 100.0),
    SetSkinWeight(19, 50.0),
    SetSkinWeight(20, 80.0),
    SetSkinWeight(23, 70.0),
    MakeAttachedJoint(DYNOBJ_MARIO_RIGHT_EYEBROW_RPART_JOINT_2), // What is this joint for?
    SetScale(1.0, 1.0, 1.0),
    SetRotation(0.0, 0.0, 0.0),
    SetAttachOffset(345.5, 0.0, 0.0),
    EndNetWithSubGroup(DYNOBJ_MARIO_RIGHT_EYEBROW_RPART_SKIN_NET),
    // left part of right eyebrow skinning
    MakeNetWithSubGroup(DYNOBJ_MARIO_RIGHT_EYEBROW_LPART_SKIN_NET),
    AttachTo(0xd, DYNOBJ_MARIO_RIGHT_EYEBROW_NET),
    SetSkinShape(DYNOBJ_MARIO_RIGHT_EYEBROW_SHAPE),
    SetScale(1.0, 1.0, 1.0),
    SetRotation(-90.0, 90.0, -90.0),
    SetAttachOffset(23.0, 305.5, -44.6),
    MakeAttachedJoint(DYNOBJ_MARIO_RIGHT_EYEBROW_LPART_JOINT_1),
    SetScale(1.0, 1.0, 1.0),
    SetRotation(-3.437, -0.069, -177.758),
    SetAttachOffset(0.0, 0.0, 0.0),
    SetSkinWeight(16, 80.0),
    SetSkinWeight(17, 100.0),
    SetSkinWeight(18, 80.0),
    SetSkinWeight(22, 70.0),
    SetSkinWeight(24, 50.0),
    SetSkinWeight(25, 80.0),
    SetSkinWeight(15, 30.0),
    MakeAttachedJoint(DYNOBJ_MARIO_RIGHT_EYEBROW_LPART_JOINT_2), // What is this joint for?
    SetScale(1.0, 1.0, 1.0),
    SetRotation(0.0, 0.0, 0.0),
    SetAttachOffset(399.5, 0.0, 0.0),
    EndNetWithSubGroup(DYNOBJ_MARIO_RIGHT_EYEBROW_LPART_SKIN_NET),
    // middle part of right eyebrow skinning
    MakeNetWithSubGroup(DYNOBJ_MARIO_RIGHT_EYEBROW_MPART_SKIN_NET),
    AttachTo(0xd, DYNOBJ_MARIO_RIGHT_EYEBROW_NET),
    SetSkinShape(DYNOBJ_MARIO_RIGHT_EYEBROW_SHAPE),
    SetScale(1.0, 1.0, 1.0),
    SetRotation(-90.0, 90.0, -90.0),
    SetAttachOffset(123.1, 385.5, -46.4),
    MakeAttachedJoint(DYNOBJ_MARIO_RIGHT_EYEBROW_MPART_JOINT_1),
    SetScale(1.0, 1.0, 1.0),
    SetRotation(2.865, 0.029, 182.377),
    SetAttachOffset(0.0, 0.0, 0.0),
    SetSkinWeight(0, 100.0),
    SetSkinWeight(1, 100.0),
    SetSkinWeight(2, 100.0),
    SetSkinWeight(3, 100.0),
    SetSkinWeight(4, 100.0),
    SetSkinWeight(9, 100.0),
    SetSkinWeight(10, 100.0),
    SetSkinWeight(13, 100.0),
    SetSkinWeight(14, 100.0),
    SetSkinWeight(15, 70.0),
    SetSkinWeight(21, 100.0),
    SetSkinWeight(16, 20.0),
    SetSkinWeight(18, 20.0),
    SetSkinWeight(22, 30.0),
    SetSkinWeight(25, 20.0),
    SetSkinWeight(6, 20.0),
    SetSkinWeight(11, 30.0),
    SetSkinWeight(20, 20.0),
    SetSkinWeight(23, 30.0),
    SetSkinWeight(5, 30.0),
    SetSkinWeight(7, 30.0),
    SetSkinWeight(8, 50.0),
    SetSkinWeight(19, 50.0),
    SetSkinWeight(24, 50.0),
    MakeAttachedJoint(DYNOBJ_MARIO_RIGHT_EYEBROW_MPART_JOINT_2), // What is this joint for?
    SetScale(1.0, 1.0, 1.0),
    SetRotation(0.0, 0.0, 0.0),
    SetAttachOffset(388.6, 0.0, 0.0),
    EndNetWithSubGroup(DYNOBJ_MARIO_RIGHT_EYEBROW_MPART_SKIN_NET),

    // left eyebrow net (attaches to head)
    MakeDynObj(D_NET, DYNOBJ_MARIO_LEFT_EYEBROW_NET),
    SetType(2),
    SetShapePtr(DYNOBJ_MARIO_LEFT_EYEBROW_SHAPE),
    // attach left eyebrow to head
    AttachTo(0xd, DYNOBJ_MARIO_MAIN_NET),
    SetScale(1.0, 1.0, 1.0),
    SetRotation(0.0, 0.0, 0.0),
    SetAttachOffset(-18.5, 0.0, -1.0),
    // left part of left eyebrow skinning
    MakeNetWithSubGroup(DYNOBJ_MARIO_LEFT_EYEBROW_LPART_SKIN_NET),
    AttachTo(0xd, DYNOBJ_MARIO_LEFT_EYEBROW_NET),
    SetSkinShape(DYNOBJ_MARIO_LEFT_EYEBROW_SHAPE),
    SetScale(1.0, 1.0, 1.0),
    SetRotation(0.0, 90.0, 0.0),
    SetAttachOffset(-233.6, 287.1, -51.4),
    MakeAttachedJoint(DYNOBJ_MARIO_LEFT_EYEBROW_LPART_JOINT_1),
    SetScale(1.0, 1.0, 1.0),
    SetRotation(-6.876, 0.0, 177.51),
    SetAttachOffset(0.0, 0.0, 0.0),
    SetSkinWeight(9, 100.0),
    SetSkinWeight(10, 80.0),
    SetSkinWeight(11, 80.0),
    SetSkinWeight(13, 80.0),
    SetSkinWeight(14, 80.0),
    SetSkinWeight(18, 60.0),
    SetSkinWeight(21, 60.0),
    SetSkinWeight(25, 60.0),
    MakeAttachedJoint(DYNOBJ_MARIO_LEFT_EYEBROW_LPART_JOINT_2), // What is this joint for?
    SetScale(1.0, 1.0, 1.0),
    SetRotation(0.0, 0.0, 0.0),
    SetAttachOffset(345.5, 0.0, 0.0),
    EndNetWithSubGroup(DYNOBJ_MARIO_LEFT_EYEBROW_LPART_SKIN_NET),
    // right part of left eyebrow skinning
    MakeNetWithSubGroup(DYNOBJ_MARIO_LEFT_EYEBROW_RPART_SKIN_NET),
    AttachTo(0xd, DYNOBJ_MARIO_LEFT_EYEBROW_NET),
    SetSkinShape(DYNOBJ_MARIO_LEFT_EYEBROW_SHAPE),
    SetScale(1.0, 1.0, 1.0),
    SetRotation(0.0, 90.0, 0.0),
    SetAttachOffset(-25.3, 305.5, -44.6),
    MakeAttachedJoint(DYNOBJ_MARIO_LEFT_EYEBROW_RPART_JOINT_1),
    SetScale(1.0, 1.0, 1.0),
    SetRotation(-9.733, -0.388, -177.186),
    SetAttachOffset(0.0, 0.0, 0.0),
    SetSkinWeight(0, 70.0),
    SetSkinWeight(1, 100.0),
    SetSkinWeight(2, 70.0),
    SetSkinWeight(3, 70.0),
    SetSkinWeight(5, 50.0),
    SetSkinWeight(12, 70.0),
    SetSkinWeight(19, 30.0),
    SetSkinWeight(15, 30.0),
    MakeAttachedJoint(DYNOBJ_MARIO_LEFT_EYEBROW_RPART_JOINT_2), // What is this joint for?
    SetScale(1.0, 1.0, 1.0),
    SetRotation(0.0, 0.0, 0.0),
    SetAttachOffset(399.5, 0.0, 0.0),
    EndNetWithSubGroup(DYNOBJ_MARIO_LEFT_EYEBROW_RPART_SKIN_NET),
    // middle part of left eyebrow skinning
    MakeNetWithSubGroup(DYNOBJ_MARIO_LEFT_EYEBROW_MPART_SKIN_NET),
    AttachTo(0xd, DYNOBJ_MARIO_LEFT_EYEBROW_NET),
    SetSkinShape(DYNOBJ_MARIO_LEFT_EYEBROW_SHAPE),
    SetScale(1.0, 1.0, 1.0),
    SetRotation(0.0, 90.0, 0.0),
    SetAttachOffset(-125.4, 385.5, -46.4),
    MakeAttachedJoint(DYNOBJ_MARIO_LEFT_EYEBROW_MPART_JOINT_1),
    SetScale(1.0, 1.0, 1.0),
    SetRotation(-8.004, -0.61, 181.847),
    SetAttachOffset(0.0, 0.0, 0.0),
    SetSkinWeight(4, 70.0),
    SetSkinWeight(6, 100.0),
    SetSkinWeight(7, 100.0),
    SetSkinWeight(8, 80.0),
    SetSkinWeight(15, 70.0),
    SetSkinWeight(16, 80.0),
    SetSkinWeight(17, 100.0),
    SetSkinWeight(19, 70.0),
    SetSkinWeight(20, 80.0),
    SetSkinWeight(22, 80.0),
    SetSkinWeight(23, 60.0),
    SetSkinWeight(24, 100.0),
    SetSkinWeight(5, 50.0),
    SetSkinWeight(0, 30.0),
    SetSkinWeight(2, 30.0),
    SetSkinWeight(10, 20.0),
    SetSkinWeight(11, 20.0),
    SetSkinWeight(13, 20.0),
    SetSkinWeight(14, 20.0),
    SetSkinWeight(18, 40.0),
    SetSkinWeight(21, 40.0),
    SetSkinWeight(25, 40.0),
    SetSkinWeight(3, 30.0),
    SetSkinWeight(12, 30.0),
    MakeAttachedJoint(DYNOBJ_MARIO_LEFT_EYEBROW_MPART_JOINT_2), // What is this joint for?
    SetScale(1.0, 1.0, 1.0),
    SetRotation(0.0, 0.0, 0.0),
    SetAttachOffset(388.6, 0.0, 0.0),
    EndNetWithSubGroup(DYNOBJ_MARIO_LEFT_EYEBROW_MPART_SKIN_NET),

    // mustache net (attaches to head)
    MakeDynObj(D_NET, DYNOBJ_MARIO_MUSTACHE_NET),
    SetType(2),
    SetShapePtr(DYNOBJ_MARIO_MUSTACHE_SHAPE),
    // attach mustache to head
    AttachTo(0xd, DYNOBJ_MARIO_MAIN_NET),
    SetScale(1.0, 1.0, 1.0),
    SetRotation(0.02, -0.002, 0.04),
    SetAttachOffset(0.0, 0.0, 0.0),
    // left mustache skinning
    MakeNetWithSubGroup(DYNOBJ_MARIO_LEFT_MUSTACHE_SKIN_NET),
    AttachTo(0xd, DYNOBJ_MARIO_MUSTACHE_NET),
    SetSkinShape(DYNOBJ_MARIO_MUSTACHE_SHAPE),
    SetScale(1.0, 1.0, 1.0),
    SetRotation(0.0, 180.0, 0.0),
    SetAttachOffset(4.2, -86.5, 415.5),
    MakeAttachedJoint(DYNOBJ_MARIO_LEFT_MUSTACHE_JOINT_1),
    SetScale(1.0, 1.0, 1.0),
    SetRotation(-179.98, -164.53, -29.34),
    SetAttachOffset(0.0, 0.0, 0.0),
    SetSkinWeight(3, 50.0),
    SetSkinWeight(4, 50.0),
    SetSkinWeight(5, 50.0),
    SetSkinWeight(11, 70.0),
    SetSkinWeight(12, 80.0),
    SetSkinWeight(13, 70.0),
    SetSkinWeight(18, 80.0),
    SetSkinWeight(19, 80.0),
    SetSkinWeight(20, 80.0),
    SetSkinWeight(21, 100.0),
    SetSkinWeight(22, 100.0),
    SetSkinWeight(23, 100.0),
    SetSkinWeight(25, 100.0),
    SetSkinWeight(27, 100.0),
    SetSkinWeight(28, 50.0),
    SetSkinWeight(29, 40.0),
    SetSkinWeight(30, 40.0),
    SetSkinWeight(31, 100.0),
    SetSkinWeight(36, 50.0),
    SetSkinWeight(37, 50.0),
    SetSkinWeight(42, 40.0),
    SetSkinWeight(45, 50.0),
    SetSkinWeight(46, 50.0),
    SetSkinWeight(47, 80.0),
    SetSkinWeight(50, 40.0),
    SetSkinWeight(51, 100.0),
    SetSkinWeight(53, 40.0),
    SetSkinWeight(54, 80.0),
    MakeAttachedJoint(DYNOBJ_MARIO_LEFT_MUSTACHE_JOINT_2), // What is this joint for?
    SetScale(1.0, 1.0, 1.0),
    SetRotation(-0.028, 0.0, 0.02),
    SetAttachOffset(292.7, 0.0, 0.0),
    EndNetWithSubGroup(DYNOBJ_MARIO_LEFT_MUSTACHE_SKIN_NET),
    // right mustache skinning
    MakeNetWithSubGroup(DYNOBJ_MARIO_RIGHT_MUSTACHE_SKIN_NET),
    AttachTo(0xd, DYNOBJ_MARIO_MUSTACHE_NET),
    SetSkinShape(DYNOBJ_MARIO_MUSTACHE_SHAPE),
    SetScale(1.0, 1.0, 1.0),
    SetRotation(0.0, 0.0, 0.0),
    SetAttachOffset(-4.2, -86.5, 415.5),
    MakeAttachedJoint(DYNOBJ_MARIO_RIGHT_MUSTACHE_JOINT_1),
    SetScale(1.0, 1.0, 1.0),
    SetRotation(0.0, 15.47, 150.66),
    SetAttachOffset(0.0, 0.0, 0.0),
    SetSkinWeight(0, 100.0),
    SetSkinWeight(1, 80.0),
    SetSkinWeight(2, 80.0),
    SetSkinWeight(6, 100.0),
    SetSkinWeight(7, 100.0),
    SetSkinWeight(8, 50.0),
    SetSkinWeight(9, 50.0),
    SetSkinWeight(10, 50.0),
    SetSkinWeight(14, 50.0),
    SetSkinWeight(15, 50.0),
    SetSkinWeight(16, 50.0),
    SetSkinWeight(17, 80.0),
    SetSkinWeight(24, 100.0),
    SetSkinWeight(26, 100.0),
    SetSkinWeight(32, 80.0),
    SetSkinWeight(33, 100.0),
    SetSkinWeight(34, 70.0),
    SetSkinWeight(35, 50.0),
    SetSkinWeight(38, 40.0),
    SetSkinWeight(39, 40.0),
    SetSkinWeight(40, 40.0),
    SetSkinWeight(41, 50.0),
    SetSkinWeight(43, 50.0),
    SetSkinWeight(44, 50.0),
    SetSkinWeight(48, 80.0),
    SetSkinWeight(49, 70.0),
    SetSkinWeight(52, 40.0),
    SetSkinWeight(55, 80.0),
    MakeAttachedJoint(DYNOBJ_MARIO_RIGHT_MUSTACHE_JOINT_2), // What is this joint for?
    SetScale(1.0, 1.0, 1.0),
    SetRotation(0.0, 0.0, 0.0),
    SetAttachOffset(292.7, 0.0, 0.0),
    EndNetWithSubGroup(DYNOBJ_MARIO_RIGHT_MUSTACHE_SKIN_NET),

    // right mustache animator
    MakeDynObj(D_DATA_GRP, DYNOBJ_MARIO_RIGHT_MUSTACHE_ANIMDATA_GROUP),
    LinkWithPtr(&anim_mario_mustache_right),
    MakeDynObj(D_ANIMATOR, DYNOBJ_MARIO_RIGHT_MUSTACHE_ANIMATOR),
    AttachTo(0x0, DYNOBJ_MARIO_MAIN_ANIMATOR),
    SetNodeGroup(DYNOBJ_MARIO_RIGHT_MUSTACHE_ANIMDATA_GROUP),
    LinkWith(DYNOBJ_MARIO_RIGHT_MUSTACHE_JOINT_1),

    // left mustache animator
    MakeDynObj(D_DATA_GRP, DYNOBJ_MARIO_LEFT_MUSTACHE_ANIMDATA_GROUP),
    LinkWithPtr(&anim_mario_mustache_left),
    MakeDynObj(D_ANIMATOR, DYNOBJ_MARIO_LEFT_MUSTACHE_ANIMATOR),
    AttachTo(0x0, DYNOBJ_MARIO_MAIN_ANIMATOR),
    SetNodeGroup(DYNOBJ_MARIO_LEFT_MUSTACHE_ANIMDATA_GROUP),
    LinkWith(DYNOBJ_MARIO_LEFT_MUSTACHE_JOINT_1),

    // left eyebrow animators
    MakeDynObj(D_DATA_GRP, 32),
    LinkWithPtr(&anim_mario_lips_1),
    MakeDynObj(D_ANIMATOR, 33),
    AttachTo(0x0, DYNOBJ_MARIO_MAIN_ANIMATOR),
    SetNodeGroup(32),
    LinkWith(DYNOBJ_MARIO_LEFT_EYEBROW_MPART_JOINT_1),
    MakeDynObj(D_DATA_GRP, 41),
    LinkWithPtr(&anim_mario_lips_2),
    MakeDynObj(D_ANIMATOR, 42),
    AttachTo(0x0, DYNOBJ_MARIO_MAIN_ANIMATOR),
    SetNodeGroup(41),
    LinkWith(DYNOBJ_MARIO_LEFT_EYEBROW_RPART_JOINT_1),
    MakeDynObj(D_DATA_GRP, 50),
    LinkWithPtr(&anim_mario_eyebrows_1),
    MakeDynObj(D_ANIMATOR, 51),
    AttachTo(0x0, DYNOBJ_MARIO_MAIN_ANIMATOR),
    SetNodeGroup(50),
    LinkWith(DYNOBJ_MARIO_LEFT_EYEBROW_LPART_JOINT_1),

    // right eyebrow animators
    MakeDynObj(D_DATA_GRP, 63),
    LinkWithPtr(&anim_mario_eyebrows_equalizer),
    MakeDynObj(D_ANIMATOR, 64),
    AttachTo(0x0, DYNOBJ_MARIO_MAIN_ANIMATOR),
    SetNodeGroup(63),
    LinkWith(DYNOBJ_MARIO_RIGHT_EYEBROW_MPART_JOINT_2),
    MakeDynObj(D_DATA_GRP, 66),
    LinkWithPtr(&anim_mario_eyebrows_2),
    MakeDynObj(D_ANIMATOR, 67),
    AttachTo(0x0, DYNOBJ_MARIO_MAIN_ANIMATOR),
    SetNodeGroup(66),
    LinkWith(DYNOBJ_MARIO_RIGHT_EYEBROW_MPART_JOINT_1),
    MakeDynObj(D_DATA_GRP, 72),
    LinkWithPtr(&anim_mario_eyebrows_3),
    MakeDynObj(D_ANIMATOR, 73),
    AttachTo(0x0, DYNOBJ_MARIO_MAIN_ANIMATOR),
    SetNodeGroup(72),
    LinkWith(DYNOBJ_MARIO_RIGHT_EYEBROW_LPART_JOINT_2),
    MakeDynObj(D_DATA_GRP, 75),
    LinkWithPtr(&anim_mario_eyebrows_4),
    MakeDynObj(D_ANIMATOR, 76),
    AttachTo(0x0, DYNOBJ_MARIO_MAIN_ANIMATOR),
    SetNodeGroup(75),
    LinkWith(DYNOBJ_MARIO_RIGHT_EYEBROW_LPART_JOINT_1),
    MakeDynObj(D_DATA_GRP, 84),
    LinkWithPtr(&anim_mario_eyebrows_5),
    MakeDynObj(D_ANIMATOR, 85),
    AttachTo(0x0, DYNOBJ_MARIO_MAIN_ANIMATOR),
    SetNodeGroup(84),
    LinkWith(DYNOBJ_MARIO_RIGHT_EYEBROW_RPART_JOINT_1),

    // left eye animator
    MakeDynObj(D_DATA_GRP, DYNOBJ_MARIO_LEFT_EYE_ANIMDATA_GROUP),
    LinkWithPtr(&anim_mario_eye_left),
    MakeDynObj(D_ANIMATOR, DYNOBJ_MARIO_LEFT_EYE_ANIMATOR),
    AttachTo(0x0, DYNOBJ_MARIO_MAIN_ANIMATOR),
    SetNodeGroup(DYNOBJ_MARIO_LEFT_EYE_ANIMDATA_GROUP),
    LinkWith(DYNOBJ_MARIO_LEFT_EYE_JOINT_1),

    // right eye animator
    MakeDynObj(D_DATA_GRP, DYNOBJ_MARIO_RIGHT_EYE_ANIMDATA_GROUP),
    LinkWithPtr(&anim_mario_eye_right),
    MakeDynObj(D_ANIMATOR, DYNOBJ_MARIO_RIGHT_EYE_ANIMATOR),
    AttachTo(0x0, DYNOBJ_MARIO_MAIN_ANIMATOR),
    SetNodeGroup(DYNOBJ_MARIO_RIGHT_EYE_ANIMDATA_GROUP),
    LinkWith(DYNOBJ_MARIO_RIGHT_EYE_JOINT_1),

    // cap animator
    MakeDynObj(D_DATA_GRP, DYNOBJ_MARIO_CAP_ANIMDATA_GROUP),
    LinkWithPtr(&anim_mario_cap),
    MakeDynObj(D_ANIMATOR, DYNOBJ_MARIO_CAP_ANIMATOR),
    AttachTo(0x0, DYNOBJ_MARIO_MAIN_ANIMATOR),
    SetNodeGroup(DYNOBJ_MARIO_CAP_ANIMDATA_GROUP),
    LinkWith(DYNOBJ_MARIO_CAP_JOINT_1),

    // left lip corner animator
    MakeDynObj(D_DATA_GRP, DYNOBJ_MARIO_LEFT_LIP_CORNER_ANIMDATA_GROUP),
    LinkWithPtr(&anim_mario_lips_3),
    MakeDynObj(D_ANIMATOR, DYNOBJ_MARIO_LEFT_LIP_CORNER_ANIMATOR),
    AttachTo(0x0, DYNOBJ_MARIO_MAIN_ANIMATOR),
    SetNodeGroup(DYNOBJ_MARIO_LEFT_LIP_CORNER_ANIMDATA_GROUP),
    LinkWith(DYNOBJ_MARIO_LEFT_LIP_CORNER_JOINT_1),

    // right lip corner animator
    MakeDynObj(D_DATA_GRP, DYNOBJ_MARIO_RIGHT_LIP_CORNER_ANIMDATA_GROUP),
    LinkWithPtr(&anim_mario_lips_4),
    MakeDynObj(D_ANIMATOR, DYNOBJ_MARIO_RIGHT_LIP_CORNER_ANIMATOR),
    AttachTo(0x0, DYNOBJ_MARIO_MAIN_ANIMATOR),
    SetNodeGroup(DYNOBJ_MARIO_RIGHT_LIP_CORNER_ANIMDATA_GROUP),
    LinkWith(DYNOBJ_MARIO_RIGHT_LIP_CORNER_JOINT_1),

    // left ear animator
    MakeDynObj(D_DATA_GRP, DYNOBJ_MARIO_LEFT_EAR_ANIMDATA_GROUP),
    LinkWithPtr(&anim_mario_ear_left),
    MakeDynObj(D_ANIMATOR, DYNOBJ_MARIO_LEFT_EAR_ANIMATOR),
    AttachTo(0x0, DYNOBJ_MARIO_MAIN_ANIMATOR),
    SetNodeGroup(DYNOBJ_MARIO_LEFT_EAR_ANIMDATA_GROUP),
    LinkWith(DYNOBJ_MARIO_LEFT_EAR_JOINT_1),

    // right ear animator
    MakeDynObj(D_DATA_GRP, DYNOBJ_MARIO_RIGHT_EAR_ANIMADATA_GROUP),
    LinkWithPtr(&anim_mario_ear_right),
    MakeDynObj(D_ANIMATOR, DYNOBJ_MARIO_RIGHT_EAR_ANIMATOR),
    AttachTo(0x0, DYNOBJ_MARIO_MAIN_ANIMATOR),
    SetNodeGroup(DYNOBJ_MARIO_RIGHT_EAR_ANIMADATA_GROUP),
    LinkWith(DYNOBJ_MARIO_RIGHT_EAR_JOINT_1),

    // nose animator
    MakeDynObj(D_DATA_GRP, DYNOBJ_MARIO_NOSE_ANIMDATA_GROUP),
    LinkWithPtr(&anim_mario_nose),
    MakeDynObj(D_ANIMATOR, DYNOBJ_MARIO_NOSE_ANIMATOR),
    AttachTo(0x0, DYNOBJ_MARIO_MAIN_ANIMATOR),
    SetNodeGroup(DYNOBJ_MARIO_NOSE_ANIMDATA_GROUP),
    LinkWith(DYNOBJ_MARIO_NOSE_JOINT_1),

    // animator for left side of jaw
    MakeDynObj(D_DATA_GRP, DYNOBJ_MARIO_LEFT_JAW_ANIMDATA_GROUP),
    LinkWithPtr(&anim_mario_lips_5),
    MakeDynObj(D_ANIMATOR, DYNOBJ_MARIO_LEFT_JAW_ANIMATOR),
    AttachTo(0x0, DYNOBJ_MARIO_MAIN_ANIMATOR),
    SetNodeGroup(DYNOBJ_MARIO_LEFT_JAW_ANIMDATA_GROUP),
    LinkWith(DYNOBJ_MARIO_LEFT_JAW_JOINT),

    // animator for right side of jaw
    MakeDynObj(D_DATA_GRP, DYNOBJ_MARIO_RIGHT_JAW_ANIMDATA_GROUP),
    LinkWithPtr(&anim_mario_lips_6),
    MakeDynObj(D_ANIMATOR, DYNOBJ_MARIO_RIGHT_JAW_ANIMATOR),
    AttachTo(0x0, DYNOBJ_MARIO_MAIN_ANIMATOR),
    SetNodeGroup(DYNOBJ_MARIO_RIGHT_JAW_ANIMDATA_GROUP),
    LinkWith(DYNOBJ_MARIO_RIGHT_JAW_JOINT),

    // left eyelid animator
    MakeDynObj(D_DATA_GRP, DYNOBJ_LEFT_EYELID_ANIMDATA_GROUP),
    LinkWithPtr(&anim_mario_eyelid_left),
    MakeDynObj(D_ANIMATOR, DYNOBJ_LEFT_EYELID_ANIMATOR),
    AttachTo(0x0, DYNOBJ_MARIO_MAIN_ANIMATOR),
    SetNodeGroup(DYNOBJ_LEFT_EYELID_ANIMDATA_GROUP),
    LinkWith(DYNOBJ_LEFT_EYELID_JOINT_1),

    // right eyelid animator
    MakeDynObj(D_DATA_GRP, DYNOBJ_RIGHT_EYELID_ANIMDATA_GROUP),
    LinkWithPtr(&anim_mario_eyelid_right),
    MakeDynObj(D_ANIMATOR, DYNOBJ_RIGHT_EYELID_ANIMATOR),
    AttachTo(0x0, DYNOBJ_MARIO_MAIN_ANIMATOR),
    SetNodeGroup(DYNOBJ_RIGHT_EYELID_ANIMDATA_GROUP),
    LinkWith(DYNOBJ_RIGHT_EYELID_JOINT_1),

    // whole head animator?
    MakeDynObj(D_DATA_GRP, DYNOBJ_MARIO_HEAD_ANIMDATA_GROUP),
    LinkWithPtr(&anim_mario_intro),
    MakeDynObj(D_ANIMATOR, DYNOBJ_MARIO_HEAD_ANIMATOR),
    AttachTo(0x0, DYNOBJ_MARIO_MAIN_ANIMATOR),
    SetNodeGroup(DYNOBJ_MARIO_HEAD_ANIMDATA_GROUP),
    LinkWith(DYNOBJ_MARIO_MAIN_NET),

    // silver star animator
    MakeDynObj(D_DATA_GRP, DYNOBJ_SILVER_STAR_ANIMDATA_GROUP),
    LinkWithPtr(&anim_silver_star),
    MakeDynObj(D_ANIMATOR, DYNOBJ_SILVER_STAR_ANIMATOR),
    AttachTo(0x0, DYNOBJ_MARIO_MAIN_ANIMATOR),
    SetNodeGroup(DYNOBJ_SILVER_STAR_ANIMDATA_GROUP),
    LinkWith(DYNOBJ_SILVER_STAR_LIGHT),

    // red star animator
    MakeDynObj(D_DATA_GRP, DYNOBJ_RED_STAR_ANIMDATA_GROUP),
    LinkWithPtr(&anim_red_star),
    MakeDynObj(D_ANIMATOR, DYNOBJ_RED_STAR_ANIMATOR),
    AttachTo(0x0, DYNOBJ_MARIO_MAIN_ANIMATOR),
    SetNodeGroup(DYNOBJ_RED_STAR_ANIMDATA_GROUP),
    LinkWith(DYNOBJ_RED_STAR_LIGHT),

    EndGroup(0x1),

    UseObj(0x1),

    UseIntegerNames(FALSE),
    EndList(),
};
