From 2dfcdd84abef6c1cfe8950304c7a0cc6aca239ba Mon Sep 17 00:00:00 2001 From: LagoLunatic Date: Thu, 31 Oct 2024 18:43:53 -0400 Subject: [PATCH] clean up d_wood and d_tree data, match d_wood on JPN, match rest of d_tree .data section --- configure.py | 2 +- include/d/d_tree.h | 11 +- include/d/d_wood.h | 22 +- src/d/d_tree.cpp | 452 +++++++++++++++++++++++++++++++- src/d/d_wood.cpp | 622 +++++++++++++++++++++++++++++++++------------ 5 files changed, 925 insertions(+), 184 deletions(-) diff --git a/configure.py b/configure.py index 45f7605b..6efec96f 100644 --- a/configure.py +++ b/configure.py @@ -496,7 +496,7 @@ def MatchingFor(*versions): Object(NonMatching, "d/d_cam_style.cpp"), Object(NonMatching, "d/d_cam_type2.cpp"), Object(NonMatching, "d/d_ev_camera.cpp"), - Object(MatchingFor("GZLE01", "GZLP01"), "d/d_wood.cpp", extra_cflags=["-sym off"]), + Object(Matching, "d/d_wood.cpp", extra_cflags=["-sym off"]), Object(NonMatching, "d/d_flower.cpp"), Object(Matching, "d/d_item_data.cpp"), Object(Matching, "d/d_seafightgame.cpp"), diff --git a/include/d/d_tree.h b/include/d/d_tree.h index 285e6971..a09c41e5 100644 --- a/include/d/d_tree.h +++ b/include/d/d_tree.h @@ -2,6 +2,7 @@ #define D_TREE_H #include "SSystem/SComponent/c_xyz.h" +#include "d/d_particle.h" #include "dolphin/mtx/mtx.h" #include "JSystem/J3DGraphBase/J3DPacket.h" @@ -9,12 +10,12 @@ class cCcD_Obj; class dCcMassS_HitInf; class fopAc_ac_c; -extern const u32 g_dTree_shadowMatDL_SIZE; -extern const u32 g_dTree_Oba_kage_32DL_SIZE; +extern u8 g_dTree_shadowPos[4][3]; +extern u8 g_dTree_shadowTexCoord[4][2]; extern u8 g_dTree_shadowMatDL[]; extern u8 g_dTree_Oba_kage_32DL[]; -extern u8 g_dTree_shadowPos[12]; -extern u8 g_dTree_shadowTexCoord[8]; +extern const u32 g_dTree_shadowMatDL_SIZE; +extern const u32 g_dTree_Oba_kage_32DL_SIZE; class dTree_data_c { public: @@ -38,6 +39,8 @@ class dTree_data_c { /* 0x0A0 */ Mtx mShadowMtx; /* 0x0D0 */ u8 field_0x0D0[0x100 - 0x0D0]; /* 0x100 */ dTree_data_c* mpNext; + + static dPa_smokeEcallBack mSmokeEcallback; }; class dTree_anm_c { diff --git a/include/d/d_wood.h b/include/d/d_wood.h index b859a7af..c621d92c 100644 --- a/include/d/d_wood.h +++ b/include/d/d_wood.h @@ -2,7 +2,6 @@ #define D_WOOD_H #include "JSystem/J3DGraphBase/J3DPacket.h" -#include "JSystem/J3DGraphBase/J3DStruct.h" #include "SSystem/SComponent/c_xyz.h" #include "dolphin/mtx/mtx.h" #include "d/d_kankyo.h" @@ -48,7 +47,6 @@ class Unit_c { /* 0x000 */ cXyz mPos; /* 0x00C */ s16 mAnimCooldown; // In frames. Animations will not change unless this is 0. - /* 0x00E */ u8 field_0x00C[0x010 - 0x00E]; /* 0x010 */ State_e mFlags; /* 0x014 */ AnmID_e mAnmIdx; /* 0x018 */ Mtx mModelViewMtx; @@ -56,11 +54,11 @@ class Unit_c { /* 0x078 */ Mtx mShadowModelMtx; /* 0x0A8 */ Mtx mShadowModelViewMtx; /* 0x0D8 */ Unit_c* mpNext; - /* 0x0DC */ dKy_tevstr_c mTevStr; -}; +}; // Size: 0x18C STATIC_ASSERT(sizeof(Unit_c) == 0x18C); + class Anm_c { public: enum Mode_e { @@ -85,16 +83,16 @@ class Anm_c { // The mode_*() function is called to update the animation each frame, until finished // Their are 8 pre-allocated "normal" animations. When not animating, each unit is assigned one of the 8. - void mode_cut_init(const Anm_c*, short); + void mode_cut_init(const Anm_c*, s16); void mode_cut(Packet_c*); - void mode_push_into_init(const Anm_c*, short); + void mode_push_into_init(const Anm_c*, s16); void mode_push_into(Packet_c*); void mode_push_back_init(); void mode_push_back(Packet_c*); void mode_fan(Packet_c*); void mode_norm_init(); void mode_norm(Packet_c*); - void mode_norm_set_wind(float, short); + void mode_norm_set_wind(f32, s16); void mode_to_norm_init(AnmID_e); void mode_to_norm(Packet_c*); @@ -109,11 +107,11 @@ class Anm_c { /* 0x60 */ Mode_e mMode; /* 0x64 */ s16 mCountdown; - /* 0x66 */ s16 mForceDir; // The direction from the wind or actor who instigated this animation - /* 0x68 */ float mWindPow; // 0.0 - 1.0 - /* 0x6c */ float mPosOffsetY; - /* 0x70 */ float mPosOffsetZ; - /* 0x74 */ float mVelY; + /* 0x66 */ s16 mForceDir; // The direction from the wind or actor who instigated this animation + /* 0x68 */ f32 mWindPow; // 0.0 - 1.0 + /* 0x6c */ f32 mPosOffsetY; + /* 0x70 */ f32 mPosOffsetZ; + /* 0x74 */ f32 mVelY; /* 0x78 */ s16 mPhaseY[2]; /* 0x7c */ s16 mPhaseX[2]; diff --git a/src/d/d_tree.cpp b/src/d/d_tree.cpp index 8a41532f..ce8d30d4 100644 --- a/src/d/d_tree.cpp +++ b/src/d/d_tree.cpp @@ -5,14 +5,420 @@ #include "d/d_tree.h" #include "dolphin/types.h" -#include "dolphin/mtx/mtx.h" -u8 g_dTree_shadowPos[12] = { 0xb5, 0x00, 0x4b, 0x4b, 0x00, 0x4b, 0xb5, 0x00, 0xb5, 0x4b, 0x00, 0xb5 }; -u8 g_dTree_shadowTexCoord[8] = { 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01 }; -const u32 g_dTree_Oba_kage_32DL_SIZE = 0x2b; -const u32 g_dTree_shadowMatDL_SIZE = 0x90; -u8 g_dTree_Oba_kage_32DL[g_dTree_Oba_kage_32DL_SIZE] = { 0x98, 0x00, 0x04, 0x01, 0x02, 0x00, 0x03, 0x03, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; -u8 g_dTree_shadowMatDL[g_dTree_shadowMatDL_SIZE] = { 0x61, 0x80, 0x00, 0x01, 0x35, 0x61, 0x84, 0x00, 0x00, 0x00, 0x61, 0x88, 0x00, 0x7c, 0x1f, 0x61, 0x94, 0x00, 0x00, 0x00, 0x61, 0x30, 0x00, 0x00, 0x20, 0x61, 0x31, 0x00, 0x00, 0x20, 0x10, 0x00, 0x00, 0x10, 0x40, 0xff, 0xff, 0x42, 0x80, 0x08, 0x30, 0x3c, 0xf3, 0xcf, 0x00, 0x10, 0x00, 0x00, 0x10, 0x18, 0x3c, 0xf3, 0xcf, 0x00, 0x61, 0x28, 0x38, 0x03, 0xc0, 0x61, 0xc0, 0x08, 0xff, 0xff, 0x61, 0xc1, 0x08, 0xe6, 0x70, 0x61, 0x43, 0x00, 0x00, 0x01, 0x61, 0x40, 0x00, 0x00, 0x07, 0x61, 0x41, 0x00, 0x04, 0xad, 0x61, 0xf3, 0x64, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x3f, 0x00, 0x00, 0x00, 0x01, 0x10, 0x00, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +#include "weak_data_2100_2080.h" // IWYU pragma: keep + +#define CONST_U32(v) ((u8)((v) >> 16)), ((u8)((v) >> 8)), ((u8)((v) >> 0)) +#define IMAGE_ADDR(addr) CONST_U32((u32)(addr) >> 5) + +u8 l_Txa_swood_aTEX[] ALIGN_DECL(32) = { + 0x75, 0xEC, 0x76, 0x0D, 0xFF, 0xFF, 0x58, 0x5A, 0x75, 0xCC, 0x76, 0x0D, 0xFF, 0xFF, 0xBF, 0x5A, + 0x76, 0x2D, 0x75, 0xEC, 0xA2, 0x09, 0x0F, 0x56, 0x76, 0x0D, 0x75, 0xAC, 0x09, 0x82, 0xB8, 0x28, + 0x00, 0x00, 0x76, 0x0D, 0xFF, 0xFF, 0xFF, 0x7F, 0x75, 0xCC, 0x75, 0xCC, 0xFF, 0xFF, 0xFF, 0xFF, + 0x76, 0x0D, 0x75, 0xAC, 0x8F, 0xC0, 0x00, 0x0E, 0x75, 0xCC, 0x76, 0x0C, 0xFF, 0x5F, 0x54, 0x66, + 0x75, 0xCC, 0x75, 0xCC, 0xFF, 0xFF, 0xFF, 0xFF, 0x76, 0x0C, 0x76, 0x0C, 0xFF, 0xFF, 0xFF, 0xFF, + 0x75, 0xCC, 0x75, 0xEC, 0xFF, 0xFF, 0xFF, 0x1F, 0x76, 0x0C, 0x76, 0x0C, 0xFF, 0xFF, 0xFF, 0xFF, + 0x75, 0xEC, 0x75, 0xEC, 0xFF, 0xFF, 0xFF, 0xFF, 0x76, 0x0C, 0x76, 0x0C, 0xFF, 0xFF, 0xFF, 0xFF, + 0x75, 0xAC, 0x75, 0xAC, 0xFF, 0xFF, 0xFF, 0xFF, 0x76, 0x2D, 0x76, 0x2D, 0xFF, 0xFF, 0xFF, 0xFF, + 0x76, 0x0C, 0x76, 0x0C, 0xFF, 0xFF, 0xFF, 0xFF, 0x75, 0xAC, 0x75, 0xAC, 0xFF, 0xFF, 0xFF, 0xFF, + 0x76, 0x0D, 0x76, 0x0D, 0xFF, 0xFF, 0xFF, 0xFF, 0x75, 0xCC, 0x75, 0xCC, 0xFF, 0xFF, 0xFF, 0xFF, + 0x75, 0xEC, 0x75, 0xEC, 0xFF, 0xFF, 0xFF, 0xFF, 0x76, 0x0D, 0x76, 0x0D, 0xFF, 0xFF, 0xFF, 0xFF, + 0x75, 0xEC, 0x75, 0xEC, 0xFF, 0xFF, 0xFF, 0xFF, 0x75, 0xEC, 0x75, 0xEC, 0xFF, 0xFF, 0xFF, 0xFF, + 0x76, 0x0C, 0x76, 0x0C, 0xFF, 0xFF, 0xFF, 0xFF, 0x76, 0x0C, 0x76, 0x0C, 0xFF, 0xFF, 0xFF, 0xFF, + 0x6D, 0x6B, 0x75, 0xEC, 0xFF, 0xFF, 0xFC, 0xD4, 0x65, 0x4B, 0x76, 0x0D, 0xFD, 0xD5, 0x95, 0x94, + 0x75, 0xEC, 0x76, 0x0D, 0xFF, 0xFF, 0xFF, 0xF9, 0x75, 0xCC, 0x76, 0x0C, 0xFF, 0xFF, 0xD5, 0x56, + 0x75, 0xEC, 0x23, 0xE7, 0x00, 0x00, 0x0B, 0xF5, 0x76, 0x0C, 0x23, 0xA7, 0x00, 0x00, 0xFD, 0x55, + 0x44, 0xC9, 0x1B, 0x46, 0xF8, 0xFE, 0xAF, 0xF5, 0x65, 0x8B, 0x23, 0x87, 0xA0, 0xDF, 0x55, 0x55, + 0xB6, 0x10, 0x24, 0x07, 0x55, 0x55, 0x55, 0x00, 0x64, 0xAB, 0x23, 0xC7, 0x7F, 0x75, 0xF5, 0x15, + 0x75, 0xEC, 0x24, 0x07, 0x00, 0xE0, 0x57, 0x55, 0x75, 0xEC, 0x23, 0xA7, 0x00, 0x00, 0x80, 0x58, + 0x2C, 0x28, 0x1B, 0x46, 0x3E, 0x37, 0xE3, 0x63, 0x24, 0x08, 0x1B, 0x26, 0x08, 0x00, 0x60, 0x42, + 0x6D, 0x8C, 0x76, 0x0D, 0x57, 0x68, 0x56, 0x55, 0x75, 0xCC, 0x75, 0xEC, 0xFF, 0xFF, 0x7F, 0x5F, + 0x75, 0xEC, 0x23, 0xE7, 0x80, 0x70, 0x5C, 0x55, 0x6D, 0x8C, 0x76, 0x0D, 0x57, 0x55, 0x55, 0x12, + 0x75, 0xCC, 0x75, 0xCC, 0xFF, 0xFF, 0xFF, 0xFF, 0x76, 0x0C, 0x76, 0x0C, 0xFF, 0xFF, 0xFF, 0xFF, + 0x75, 0xEC, 0x76, 0x0D, 0xFF, 0xFF, 0x7F, 0x6F, 0x76, 0x0D, 0x76, 0x0D, 0xFF, 0xFF, 0xFF, 0xFF, + 0x75, 0xAC, 0x75, 0xAC, 0xFF, 0xFF, 0xFF, 0xFF, 0x76, 0x2D, 0x76, 0x2D, 0xFF, 0xFF, 0xFF, 0xFF, + 0x75, 0xEC, 0x75, 0xEC, 0xFF, 0xFF, 0xFF, 0xFF, 0x75, 0xEC, 0x75, 0xEC, 0xFF, 0xFF, 0xFF, 0xFF, + 0x76, 0x0C, 0x76, 0x0C, 0xFF, 0xFF, 0xFF, 0xFF, 0x75, 0xCC, 0x76, 0x0D, 0xFF, 0xFD, 0xF4, 0xC6, + 0x75, 0xCC, 0x76, 0x0D, 0xFF, 0xFD, 0xF9, 0xF5, 0x76, 0x0D, 0x23, 0xE7, 0x00, 0x02, 0x09, 0x25, + 0x75, 0xEC, 0x24, 0x07, 0x00, 0x00, 0x03, 0x0D, 0x6D, 0xAC, 0x23, 0xC7, 0x09, 0x95, 0x55, 0x75, + 0x65, 0xAB, 0x1B, 0x06, 0x3F, 0xFF, 0xD7, 0xD7, 0x2C, 0x28, 0x23, 0x87, 0x60, 0xF0, 0xAB, 0x0B, + 0x2C, 0x48, 0x1B, 0x87, 0x60, 0xAA, 0x8F, 0x8B, 0x2C, 0x28, 0x23, 0xA7, 0x0A, 0x80, 0xD2, 0x72, + 0x2C, 0x08, 0x23, 0x87, 0x70, 0x9A, 0x05, 0xAB, 0x2C, 0x28, 0x23, 0xA7, 0x82, 0x8E, 0x8E, 0x40, + 0xEF, 0x56, 0xBD, 0xEF, 0x97, 0x0D, 0x03, 0x00, 0xC6, 0x10, 0x23, 0xC7, 0x35, 0x05, 0x09, 0x02, + 0xEF, 0x56, 0xD6, 0x72, 0x00, 0x00, 0x00, 0x60, 0xEF, 0x56, 0xC6, 0x30, 0x25, 0x09, 0x00, 0x00, + 0x2C, 0x08, 0x1B, 0x67, 0x00, 0x08, 0x05, 0xC9, 0x2C, 0x48, 0x1B, 0x06, 0x82, 0x0A, 0x0D, 0x89, + 0xD6, 0x92, 0x24, 0x07, 0xD5, 0x95, 0x25, 0x0D, 0x2C, 0x28, 0x23, 0xA7, 0x2A, 0x36, 0x03, 0x7D, + 0x2C, 0x28, 0x1B, 0x67, 0xE0, 0x02, 0x43, 0x40, 0x75, 0xCC, 0x23, 0xE7, 0x60, 0x58, 0x56, 0x55, + 0x2C, 0x48, 0x23, 0xA7, 0xA0, 0xA0, 0x60, 0xEA, 0x2C, 0x28, 0x23, 0x87, 0x80, 0x09, 0x9F, 0x5F, + 0x75, 0xCC, 0x7E, 0x2D, 0x8B, 0x42, 0x6A, 0x22, 0x00, 0x00, 0x76, 0x0C, 0xFF, 0xFF, 0xFF, 0x7F, + 0x75, 0xCC, 0x23, 0xA7, 0xC0, 0x70, 0x58, 0x5C, 0x75, 0xAC, 0x76, 0x0C, 0x7F, 0x5F, 0x4F, 0x4B, + 0x75, 0xEC, 0x75, 0xEC, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x76, 0x0C, 0xFF, 0xFF, 0xFF, 0xFD, + 0x75, 0xCC, 0x75, 0xCC, 0xFF, 0xFF, 0xFF, 0xFF, 0x75, 0xEC, 0x76, 0x0D, 0xFD, 0xF6, 0xF4, 0xCA, + 0x2C, 0x28, 0x76, 0x0C, 0xD5, 0x55, 0x56, 0x54, 0x75, 0xAC, 0x23, 0xE7, 0x35, 0x95, 0x55, 0x55, + 0x7E, 0x0D, 0x23, 0xA7, 0x0D, 0x25, 0x15, 0x95, 0x2C, 0x28, 0x1B, 0x46, 0xA0, 0x82, 0x01, 0xA2, + 0x2C, 0x28, 0x1B, 0x26, 0x00, 0x00, 0xBC, 0xDC, 0x2C, 0x28, 0x23, 0x87, 0x20, 0x9E, 0x97, 0x35, + 0x2C, 0x28, 0x1B, 0x46, 0xAA, 0xED, 0x7A, 0xA0, 0x2C, 0x28, 0x1B, 0x46, 0x35, 0xA7, 0x0A, 0x00, + 0x2C, 0x08, 0x23, 0x87, 0x82, 0x07, 0x85, 0x40, 0x2C, 0x08, 0x1B, 0x46, 0x62, 0x0B, 0x0E, 0x3E, + 0x2C, 0x08, 0x23, 0x87, 0xC0, 0x0E, 0xCF, 0x85, 0x2C, 0x28, 0x23, 0x87, 0x20, 0x0A, 0xF5, 0xB5, + 0xE6, 0xF4, 0xCD, 0xEF, 0x58, 0x57, 0x55, 0x55, 0xEF, 0x56, 0xCD, 0xEF, 0x00, 0x80, 0x60, 0x70, + 0xEF, 0x56, 0xCD, 0xEF, 0xB5, 0x0D, 0x09, 0x01, 0xEF, 0x56, 0xCD, 0xEF, 0x58, 0x5C, 0x5C, 0x54, + 0xEF, 0x56, 0x4C, 0x49, 0x09, 0x09, 0x0B, 0x0B, 0x2C, 0x08, 0x12, 0xE6, 0x7E, 0x70, 0xE0, 0x08, + 0xE7, 0x36, 0xAD, 0xCE, 0x0D, 0x0D, 0x0F, 0x0F, 0x9D, 0xAE, 0x23, 0xC7, 0x55, 0xD5, 0x95, 0x15, + 0x2C, 0x28, 0x23, 0x87, 0x37, 0x37, 0x00, 0x28, 0x2C, 0x08, 0x1B, 0x06, 0x82, 0x00, 0x28, 0x98, + 0x2C, 0x28, 0x23, 0xA7, 0x14, 0x38, 0x81, 0x01, 0x2C, 0x48, 0x23, 0x87, 0xD8, 0x8A, 0xE5, 0xAE, + 0x2C, 0x28, 0x23, 0x87, 0x40, 0x03, 0x20, 0x16, 0x34, 0x49, 0x75, 0xCC, 0x57, 0x97, 0x15, 0x25, + 0x2C, 0x28, 0x23, 0xA7, 0x36, 0x0E, 0x0B, 0x36, 0x75, 0xEC, 0x24, 0x07, 0x70, 0x58, 0x5C, 0x54, + 0x76, 0x0D, 0x76, 0x0D, 0xFF, 0xFF, 0xFF, 0xFF, 0x2C, 0x28, 0x75, 0xCC, 0xD5, 0xD6, 0x54, 0x58, + 0x75, 0x8C, 0x75, 0xEC, 0xFF, 0x7D, 0x7D, 0x7C, 0x75, 0xCC, 0x23, 0xE7, 0x0D, 0x25, 0x35, 0x15, + 0x2C, 0x48, 0x23, 0x87, 0xB8, 0xC0, 0x09, 0xA9, 0x2C, 0x28, 0x23, 0x87, 0x98, 0x2A, 0xCA, 0x67, + 0x2C, 0x08, 0x1B, 0x67, 0x62, 0xEA, 0x0D, 0x82, 0x2C, 0x28, 0x23, 0xC7, 0x45, 0x0D, 0xCA, 0x82, + 0x2C, 0x28, 0x23, 0x87, 0x26, 0xB6, 0xB8, 0x00, 0x2C, 0x08, 0x1B, 0x06, 0x20, 0x38, 0x2B, 0x09, + 0x2C, 0x28, 0x23, 0xC7, 0x16, 0xF8, 0x09, 0x8D, 0x2C, 0x48, 0x23, 0xA7, 0xE9, 0x50, 0xAE, 0x02, + 0x2C, 0x48, 0x23, 0x87, 0x27, 0xAA, 0x60, 0x72, 0x2C, 0x28, 0x23, 0x87, 0x2F, 0x5E, 0xD8, 0x82, + 0x34, 0x28, 0x23, 0xA7, 0x5A, 0x3C, 0xB7, 0x00, 0x34, 0x48, 0x23, 0x87, 0x79, 0xDE, 0xAB, 0x0F, + 0xEF, 0x56, 0xCD, 0xEF, 0x01, 0x09, 0x0D, 0xB5, 0xEF, 0x56, 0xCD, 0xEF, 0x54, 0x5C, 0x5C, 0x58, + 0xE6, 0xF4, 0xCD, 0xEF, 0x55, 0x55, 0x57, 0x58, 0xEF, 0x56, 0xCD, 0xEF, 0x70, 0x60, 0x80, 0x00, + 0xE7, 0x36, 0xBE, 0x10, 0x05, 0x05, 0x05, 0x05, 0xBE, 0x10, 0x23, 0xE7, 0x35, 0x25, 0x05, 0x0D, + 0xE7, 0x36, 0xB5, 0xAC, 0x0F, 0x0D, 0x0D, 0x05, 0xBE, 0x10, 0x3C, 0x08, 0x09, 0x01, 0x03, 0x02, + 0x2C, 0x28, 0x23, 0x87, 0x8A, 0xC9, 0x0A, 0x80, 0x24, 0x08, 0x1B, 0x26, 0x00, 0x0A, 0x2A, 0x18, + 0x2C, 0x28, 0x23, 0x87, 0xE8, 0xAE, 0xFA, 0x52, 0x2C, 0x28, 0x23, 0xA7, 0x18, 0x00, 0xEA, 0x70, + 0x2C, 0x48, 0x23, 0xC7, 0x9E, 0x96, 0xA8, 0x80, 0x4C, 0xEA, 0x23, 0xA7, 0x5C, 0xD7, 0x55, 0x55, + 0x2C, 0x28, 0x23, 0xA7, 0x80, 0x0A, 0x05, 0x05, 0x2C, 0x28, 0x23, 0xC7, 0x3C, 0xD8, 0xB0, 0x07, + 0x76, 0x0D, 0x44, 0xA9, 0x08, 0x00, 0xC3, 0x41, 0x4C, 0xEA, 0x1B, 0x46, 0x3B, 0xBB, 0x7F, 0x7B, + 0x6D, 0xCC, 0x23, 0xE7, 0x41, 0x69, 0x69, 0x7D, 0x2C, 0x48, 0x23, 0x87, 0x62, 0xAF, 0x35, 0x25, + 0x2C, 0x08, 0x1B, 0x26, 0x60, 0x82, 0x00, 0x00, 0x2C, 0x28, 0x23, 0xA7, 0x02, 0xE7, 0x5C, 0xE0, + 0x2C, 0x08, 0x23, 0xA7, 0xAF, 0x0A, 0x08, 0xE8, 0x2C, 0x28, 0x23, 0x87, 0x80, 0x89, 0x2E, 0x22, + 0xB5, 0xEF, 0x23, 0xE7, 0x50, 0x50, 0x50, 0x50, 0xD6, 0x92, 0xBD, 0xCE, 0x57, 0x77, 0xD7, 0x80, + 0xBD, 0xEE, 0x24, 0x08, 0x50, 0x50, 0x50, 0x50, 0xCE, 0x72, 0xBD, 0xEF, 0xE0, 0x7D, 0xE5, 0xF7, + 0xDE, 0xD4, 0xBD, 0xEF, 0x55, 0xF5, 0x55, 0x00, 0xCE, 0x71, 0xAD, 0xAD, 0xD7, 0xAF, 0xFF, 0x2A, + 0xCE, 0x92, 0xBD, 0xEF, 0x80, 0x57, 0x75, 0xDD, 0xC6, 0x31, 0xBD, 0xCE, 0x02, 0x9B, 0xA3, 0xC3, + 0xEF, 0x56, 0xD6, 0x72, 0x60, 0x00, 0x00, 0x00, 0xEF, 0x56, 0xC6, 0x30, 0x00, 0x00, 0x09, 0x35, + 0xEF, 0x56, 0xBE, 0x10, 0x00, 0x03, 0x2D, 0x95, 0xD6, 0x92, 0xBD, 0xEF, 0x17, 0x75, 0x7F, 0xFF, + 0xEF, 0x56, 0xBD, 0xEF, 0x35, 0xD5, 0x55, 0x55, 0xBE, 0x10, 0xB5, 0xCD, 0x00, 0x00, 0x80, 0x70, + 0xBE, 0x30, 0xBD, 0xCE, 0xA2, 0x0B, 0x02, 0xA0, 0xC6, 0x30, 0xBD, 0xCE, 0xB8, 0x0A, 0xEA, 0x0A, + 0xC6, 0x0F, 0x23, 0xE7, 0x55, 0x95, 0x35, 0x05, 0x2C, 0x08, 0x1B, 0x47, 0x60, 0x8C, 0x28, 0x80, + 0xBE, 0x10, 0x2B, 0xA7, 0x09, 0x00, 0x00, 0x00, 0xB5, 0xEF, 0x23, 0xE7, 0x55, 0xD5, 0x35, 0x05, + 0x2C, 0x08, 0x1A, 0xE6, 0x00, 0xA0, 0x98, 0x38, 0x2C, 0x08, 0x1B, 0x67, 0x3E, 0x2A, 0xAE, 0x60, + 0x2C, 0x28, 0x23, 0xA7, 0x28, 0xA0, 0xAC, 0x24, 0x2C, 0x48, 0x23, 0xA7, 0x58, 0xF0, 0x28, 0x36, + 0x2C, 0x28, 0x23, 0x87, 0x70, 0x62, 0x82, 0x00, 0x2C, 0x28, 0x23, 0xA7, 0x0D, 0xCA, 0xF0, 0x00, + 0x2C, 0x28, 0x1B, 0x47, 0x00, 0x00, 0x30, 0x94, 0x2C, 0x08, 0x23, 0x67, 0x02, 0xEA, 0x98, 0x3A, + 0x2C, 0x28, 0x1B, 0x06, 0xA0, 0x0A, 0x05, 0x09, 0x2C, 0x28, 0x1B, 0x67, 0xD3, 0x52, 0xC0, 0xE8, + 0x2C, 0x28, 0x23, 0xA7, 0xF6, 0x96, 0x02, 0x82, 0x2C, 0x28, 0x23, 0xA7, 0xBC, 0x08, 0x70, 0x60, + 0xB5, 0xF0, 0x2B, 0xE8, 0x50, 0x50, 0x50, 0x50, 0xC6, 0x31, 0xBD, 0xCE, 0xF4, 0xF8, 0x38, 0x34, + 0xB6, 0x10, 0x24, 0x07, 0x50, 0x50, 0x50, 0x50, 0xD6, 0x92, 0xBD, 0xEE, 0xC0, 0xC0, 0x57, 0x5F, + 0xDE, 0xF4, 0xBE, 0x0F, 0xD5, 0x5F, 0x70, 0x55, 0xDE, 0xF5, 0xBE, 0x10, 0x55, 0xF5, 0x0D, 0x55, + 0xD6, 0xB3, 0xBD, 0xEF, 0x2B, 0x0B, 0x5D, 0xD5, 0xBE, 0x10, 0xBD, 0xCE, 0xC2, 0x17, 0x00, 0x40, + 0xC6, 0x31, 0xBD, 0xCD, 0x28, 0x36, 0x2A, 0x28, 0xBE, 0x10, 0xBD, 0xCE, 0x3C, 0x2C, 0x00, 0x00, + 0xBE, 0x10, 0xB5, 0x8C, 0x00, 0xA2, 0xA2, 0x24, 0xC6, 0x31, 0xBD, 0xCE, 0x2A, 0x42, 0xEA, 0x36, + 0xBE, 0x30, 0xBD, 0xCD, 0x28, 0x36, 0x2A, 0x28, 0xBE, 0x10, 0xBD, 0xCE, 0x3C, 0x2C, 0x00, 0x00, + 0xBE, 0x10, 0xB5, 0x8C, 0x00, 0xA2, 0xA2, 0x24, 0xC6, 0x31, 0xBD, 0xCE, 0x2A, 0x42, 0xEC, 0x36, + 0xBE, 0x10, 0xBD, 0xCE, 0x0C, 0x00, 0xE0, 0x00, 0xB6, 0x10, 0x23, 0xC7, 0x05, 0x05, 0x05, 0x05, + 0xBE, 0x30, 0xBD, 0xCE, 0x20, 0x22, 0x01, 0x0A, 0xB5, 0xF0, 0x34, 0x28, 0x05, 0x05, 0x05, 0x05, + 0x2C, 0x28, 0x23, 0x87, 0xD8, 0x70, 0x60, 0xBA, 0x2C, 0x08, 0x1B, 0x26, 0x28, 0xA0, 0x80, 0x01, + 0x2C, 0x28, 0x23, 0x67, 0x27, 0x2F, 0x02, 0x02, 0x23, 0xE7, 0x1B, 0x06, 0x03, 0xA0, 0x70, 0x80, + 0x2C, 0x28, 0x1B, 0x26, 0x3E, 0x0A, 0x0A, 0x60, 0x2C, 0x28, 0x23, 0xA7, 0x69, 0xE0, 0x02, 0xAA, + 0x2C, 0x28, 0x1B, 0x06, 0x60, 0x82, 0x0A, 0xA2, 0x2C, 0x28, 0x23, 0xC7, 0x94, 0x0E, 0x00, 0x80, + 0x2C, 0x08, 0x23, 0x87, 0x80, 0x20, 0xAA, 0x81, 0x2C, 0x28, 0x1B, 0x46, 0x0B, 0x25, 0x8A, 0xC0, + 0x2C, 0x28, 0x1B, 0x46, 0x02, 0x00, 0xD8, 0x50, 0x2C, 0x48, 0x1B, 0x06, 0x8B, 0x2D, 0xAF, 0xAE, + 0xB6, 0x10, 0x24, 0x08, 0x50, 0x50, 0x50, 0x50, 0xD6, 0xB2, 0xBD, 0xEF, 0x75, 0x7D, 0x57, 0xC0, + 0xB5, 0xEF, 0x2B, 0xC8, 0x50, 0x50, 0x50, 0x50, 0xCE, 0x72, 0xB5, 0xCE, 0x00, 0x96, 0xDF, 0x7B, + 0xDE, 0xD3, 0xBE, 0x0F, 0x55, 0x55, 0x55, 0x00, 0xD6, 0x92, 0xBE, 0x10, 0x5D, 0x5D, 0x55, 0x2D, + 0xCE, 0x92, 0xBD, 0xEF, 0x00, 0xDD, 0x7F, 0x7F, 0xC6, 0x51, 0xBD, 0xCE, 0x0A, 0xBE, 0x96, 0xAB, + 0xC6, 0x30, 0xB5, 0xAD, 0x26, 0xE9, 0xBA, 0xA0, 0xBE, 0x10, 0xB5, 0xCD, 0x00, 0x00, 0x80, 0x70, + 0xBE, 0x30, 0xBD, 0xCE, 0xA2, 0x0B, 0x02, 0xA0, 0xC6, 0x30, 0xBD, 0xCE, 0xB8, 0x0B, 0xEA, 0x0A, + 0xC6, 0x30, 0xB5, 0xAD, 0x26, 0xE9, 0xBA, 0xA0, 0xBE, 0x10, 0xB5, 0xCD, 0x00, 0x00, 0x80, 0x70, + 0xBE, 0x30, 0xBD, 0xCE, 0xA2, 0x0B, 0x02, 0xA0, 0xC6, 0x30, 0xBD, 0xCE, 0xB8, 0x0A, 0xEA, 0x0A, + 0xBE, 0x30, 0xBD, 0xCE, 0x60, 0xDC, 0x2C, 0xBA, 0xB5, 0xF0, 0x2C, 0x08, 0x05, 0x05, 0x05, 0x05, + 0xC6, 0x31, 0xBD, 0xCE, 0xAD, 0x3A, 0x88, 0x8F, 0xB5, 0xEF, 0x23, 0x67, 0x0D, 0x05, 0x05, 0x05, + 0x2C, 0x28, 0x12, 0x85, 0xA0, 0xA8, 0x36, 0x2E, 0x2C, 0x28, 0x23, 0xA7, 0x23, 0x12, 0xB3, 0x01, + 0x2C, 0x48, 0x23, 0xA7, 0xA8, 0x40, 0x62, 0xA2, 0x2C, 0x08, 0x23, 0x87, 0x0F, 0xFE, 0xAE, 0x0D, + 0x2C, 0x28, 0x1B, 0x67, 0x60, 0x82, 0x62, 0x60, 0x2C, 0x28, 0x1B, 0x67, 0x02, 0xEA, 0x5C, 0xB8, + 0x2C, 0x28, 0x23, 0xA7, 0x08, 0xA7, 0x7A, 0x60, 0x2C, 0x28, 0x23, 0xA7, 0x22, 0xB2, 0x0D, 0x0D, + 0x2C, 0x28, 0x23, 0xC7, 0x60, 0xCC, 0x38, 0x58, 0x2C, 0x28, 0x1B, 0x67, 0xBE, 0x2B, 0x01, 0xA2, + 0x2C, 0x28, 0x1A, 0xE6, 0x70, 0xE0, 0x08, 0x82, 0x2C, 0x48, 0x23, 0x67, 0xA0, 0x2F, 0x97, 0xFE, + 0xBD, 0xEE, 0x2B, 0xE8, 0x50, 0x50, 0x50, 0x50, 0xBE, 0x10, 0xB5, 0xAD, 0xC0, 0x10, 0x08, 0x07, + 0xBE, 0x0F, 0x2B, 0xC8, 0x50, 0x50, 0x50, 0x50, 0xD6, 0x92, 0xBD, 0xEF, 0xAA, 0xA0, 0xD5, 0xFF, + 0xDE, 0xF4, 0xB5, 0xAD, 0xF7, 0xFF, 0xE0, 0xFF, 0xDE, 0xD4, 0xBD, 0xEF, 0xD5, 0xE5, 0x0B, 0x5F, + 0xD6, 0x93, 0xBD, 0xEF, 0x0B, 0x03, 0x57, 0xF7, 0xBE, 0x10, 0xBD, 0xCE, 0xD3, 0x03, 0x00, 0xE0, +}; + +Vec l_pos[] = { + {-10.0f, 105.608147f, 5.0f}, + {10.0f, 105.608147f, 5.0f}, + {0.0f, 115.841797f, 0.0f}, + {-19.090694f, 190.686432f, 37.321354f}, + {0.0f, 105.608147f, -10.0f}, + {41.625153f, 211.34726f, -14.772539f}, + {-33.026093f, 215.296951f, -44.96241f}, + {-10.0f, 20.0f, 5.0f}, + {10.0f, 20.0f, 5.0f}, + {0.0f, 20.0f, -10.0f}, + {10.0f, 105.608147f, -5.0f}, + {10.0f, 20.0f, -5.0f}, + {-10.0f, 105.608147f, -5.0f}, + {-10.0f, 20.0f, -5.0f}, + {0.0f, 105.608147f, 10.0f}, + {0.0f, 20.0f, 10.0f}, + {-10.0f, 0.0f, 5.0f}, + {10.0f, 0.0f, 5.0f}, + {0.0f, 0.0f, -10.0f}, + {10.0f, 0.0f, -5.0f}, + {-10.0f, 0.0f, -5.0f}, + {0.0f, 0.0f, 10.0f}, + {2.909025f, 212.994461f, -45.632366f}, + {-10.776078f, 184.271301f, 5.599532f}, + {33.920052f, 212.994461f, 34.134495f}, + {72.31778f, 168.951508f, 19.206579f}, + {86.002876f, 197.674683f, -32.025314f}, + {41.30674f, 168.951508f, -60.560272f}, + {-10.575331f, 211.978516f, -22.376558f}, + {14.409488f, 243.166702f, 23.706152f}, + {58.760258f, 202.669464f, 34.361908f}, + {96.549309f, 224.54863f, -8.227419f}, + {71.564476f, 193.360443f, -54.310123f}, + {27.213718f, 233.857651f, -64.965866f}, + {41.625156f, 211.347275f, -14.772542f}, + {22.596979f, 256.019928f, -40.096336f}, + {14.065658f, 241.755569f, -4.058219f}, + {44.6987f, 256.019958f, 16.753942f}, + {73.287094f, 230.837082f, 5.639604f}, + {81.818398f, 245.101456f, -30.398512f}, + {51.185356f, 230.837082f, -51.210663f}, + {-7.857542f, 194.658112f, -10.762144f}, + {-53.937096f, 156.796143f, -1.809134f}, + {-66.201447f, 183.508667f, 50.850483f}, + {-28.940256f, 145.54512f, 79.264961f}, + {17.139292f, 183.407074f, 70.311951f}, + {29.403631f, 156.69455f, 17.652328f}, + {-19.090696f, 190.686417f, 37.321354f}, + {-33.985317f, 188.75563f, -13.250698f}, + {-70.496834f, 213.49118f, 28.887436f}, + {-54.248596f, 175.144028f, 73.452583f}, + {-4.665742f, 206.592773f, 89.977669f}, + {31.845766f, 181.857224f, 47.839523f}, + {15.597519f, 220.204346f, 3.274376f}, + {-19.090696f, 190.686432f, 37.321358f}, + {-12.561728f, 237.465271f, 9.606261f}, + {-45.613617f, 216.75177f, 16.922333f}, + {-54.143745f, 229.519012f, 53.517914f}, + {-27.798243f, 208.733109f, 74.704277f}, + {5.253643f, 229.446609f, 67.388199f}, + {13.783756f, 216.679367f, 30.792624f}, + {-65.836937f, 200.599899f, -79.042107f}, + {-78.85379f, 178.159485f, -24.599487f}, + {-47.995983f, 222.830963f, 1.654331f}, + {2.405176f, 189.776688f, -0.382604f}, + {15.422019f, 212.217102f, -54.825226f}, + {-15.435799f, 167.545624f, -81.079041f}, + {-33.026093f, 215.296951f, -44.962418f}, + {-81.844887f, 199.673126f, -57.441658f}, + {-73.009483f, 243.963348f, -16.443239f}, + {-21.627028f, 220.240952f, 6.308706f}, + {14.903163f, 244.573044f, -36.047581f}, + {6.067755f, 200.282806f, -77.045998f}, + {-45.314705f, 224.005219f, -99.797928f}, + {-33.026093f, 215.296967f, -44.962421f}, + {-59.207829f, 247.753891f, -80.459984f}, + {-68.884155f, 237.886353f, -43.257812f}, + {-46.492485f, 263.598114f, -22.947197f}, + {-10.970461f, 246.166f, -25.998304f}, + {-1.294143f, 256.033539f, -63.200481f}, + {-23.685818f, 230.321808f, -83.511086f}, +}; + +GXColor l_color[] = { + {0x80, 0x80, 0x80, 0xFF}, + {0x8D, 0x8D, 0x8D, 0xFF}, + {0x99, 0x99, 0x99, 0xFF}, + {0xFF, 0xFF, 0xFF, 0xFF}, + {0x9C, 0x9C, 0x9C, 0xFF}, + {0x97, 0x97, 0x97, 0xFF}, + {0x8C, 0x8C, 0x8C, 0xFF}, + {0x33, 0x33, 0x33, 0xFF}, + {0x66, 0x66, 0x66, 0xFF}, + {0xBF, 0xBF, 0xBF, 0xFF}, +}; + +cXy l_texCoord[] = { + {0.862864f, 0.532151f}, + {0.864665f, 1.0f}, + {0.878197f, 1.0f}, + {0.878197f, 0.53125f}, + {0.0f, 0.73413f}, + {0.15625f, 0.625f}, + {0.156459f, 0.375f}, + {0.0f, 0.259522f}, + {-0.15625f, 0.375f}, + {-0.15625f, 0.625f}, + {0.5f, 1.0f}, + {1.0f, 0.0f}, + {0.0f, 0.0f}, + {0.878197f, 0.990122f}, + {0.878197f, 0.871582f}, + {0.878197f, 0.625094f}, +}; + +u8 l_Oba_swood_noneDL[] ALIGN_DECL(32) = { + 0x61, 0x41, 0x00, 0x01, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, +}; + +u8 l_Oba_swood_a_cuttDL[] ALIGN_DECL(32) = { + 0x61, 0x41, 0x00, 0x04, 0xAD, 0x98, 0x00, 0x0E, 0x01, 0x04, 0x03, 0x0F, 0x02, 0x02, 0x0E, 0x01, + 0x03, 0x07, 0x02, 0x02, 0x00, 0x02, 0x03, 0x0D, 0x02, 0x02, 0x0C, 0x06, 0x03, 0x09, 0x02, 0x02, + 0x04, 0x05, 0x03, 0x0B, 0x02, 0x02, 0x0A, 0x01, 0x03, 0x08, 0x02, 0x02, 0x01, 0x04, 0x03, 0x0F, + 0x02, 0x02, 0x98, 0x00, 0x08, 0x0C, 0x06, 0x01, 0x04, 0x05, 0x01, 0x06, 0x00, 0x00, 0x02, 0x03, + 0x01, 0x00, 0x02, 0x01, 0x03, 0x00, 0x00, 0x0E, 0x01, 0x01, 0x01, 0x04, 0x01, 0x98, 0x00, 0x06, + 0x09, 0x07, 0x07, 0x0D, 0x07, 0x08, 0x0B, 0x07, 0x06, 0x07, 0x07, 0x09, 0x08, 0x07, 0x05, 0x0F, + 0x07, 0x04, 0x98, 0x00, 0x06, 0x03, 0x00, 0x00, 0x02, 0x03, 0x01, 0x01, 0x04, 0x01, 0x05, 0x00, + 0x00, 0x0A, 0x01, 0x01, 0x04, 0x05, 0x01, 0x98, 0x00, 0x03, 0x05, 0x00, 0x00, 0x02, 0x03, 0x01, + 0x04, 0x05, 0x01, 0x98, 0x00, 0x03, 0x00, 0x02, 0x01, 0x0C, 0x06, 0x01, 0x06, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +}; + +u8 l_Oba_swood_a_cutuDL[] ALIGN_DECL(32) = { + 0x61, 0x41, 0x00, 0x01, 0x0C, 0x98, 0x00, 0x0E, 0x0F, 0x01, 0x03, 0x10, 0x02, 0x02, 0x07, 0x02, + 0x03, 0x14, 0x02, 0x02, 0x0D, 0x06, 0x03, 0x12, 0x02, 0x02, 0x09, 0x05, 0x03, 0x13, 0x02, 0x02, + 0x0B, 0x01, 0x03, 0x11, 0x02, 0x02, 0x08, 0x04, 0x03, 0x15, 0x02, 0x02, 0x0F, 0x01, 0x03, 0x10, + 0x02, 0x02, 0x98, 0x00, 0x06, 0x08, 0x03, 0x05, 0x0F, 0x03, 0x04, 0x0B, 0x03, 0x06, 0x07, 0x03, + 0x09, 0x09, 0x03, 0x07, 0x0D, 0x03, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +}; + +u8 l_Oba_swood_a_hapaDL[] ALIGN_DECL(32) = { + 0x98, 0x00, 0x05, 0x19, 0x00, 0x0B, 0x18, 0x00, 0x0C, 0x05, 0x08, 0x0A, 0x17, 0x00, 0x0B, 0x16, + 0x00, 0x0C, 0x98, 0x00, 0x05, 0x16, 0x00, 0x0C, 0x1B, 0x00, 0x0B, 0x05, 0x08, 0x0A, 0x1A, 0x00, + 0x0C, 0x19, 0x00, 0x0B, 0x98, 0x00, 0x05, 0x1F, 0x09, 0x0B, 0x1E, 0x09, 0x0C, 0x22, 0x08, 0x0A, + 0x1D, 0x09, 0x0B, 0x1C, 0x09, 0x0C, 0x98, 0x00, 0x05, 0x1C, 0x09, 0x0C, 0x21, 0x09, 0x0B, 0x22, + 0x08, 0x0A, 0x20, 0x09, 0x0C, 0x1F, 0x09, 0x0B, 0x98, 0x00, 0x05, 0x26, 0x03, 0x0B, 0x25, 0x03, + 0x0C, 0x22, 0x08, 0x0A, 0x24, 0x03, 0x0B, 0x23, 0x03, 0x0C, 0x98, 0x00, 0x05, 0x23, 0x03, 0x0C, + 0x28, 0x03, 0x0B, 0x22, 0x08, 0x0A, 0x27, 0x03, 0x0C, 0x26, 0x03, 0x0B, 0x98, 0x00, 0x05, 0x2C, + 0x00, 0x0B, 0x2B, 0x00, 0x0C, 0x2F, 0x08, 0x0A, 0x2A, 0x00, 0x0B, 0x29, 0x00, 0x0C, 0x98, 0x00, + 0x05, 0x29, 0x00, 0x0C, 0x2E, 0x00, 0x0B, 0x2F, 0x08, 0x0A, 0x2D, 0x00, 0x0C, 0x2C, 0x00, 0x0B, + 0x98, 0x00, 0x05, 0x33, 0x09, 0x0B, 0x32, 0x09, 0x0C, 0x36, 0x08, 0x0A, 0x31, 0x09, 0x0B, 0x30, + 0x09, 0x0C, 0x98, 0x00, 0x05, 0x30, 0x09, 0x0C, 0x35, 0x09, 0x0B, 0x36, 0x08, 0x0A, 0x34, 0x09, + 0x0C, 0x33, 0x09, 0x0B, 0x98, 0x00, 0x05, 0x3A, 0x03, 0x0B, 0x39, 0x03, 0x0C, 0x36, 0x08, 0x0A, + 0x38, 0x03, 0x0B, 0x37, 0x03, 0x0C, 0x98, 0x00, 0x05, 0x37, 0x03, 0x0C, 0x3C, 0x03, 0x0B, 0x36, + 0x08, 0x0A, 0x3B, 0x03, 0x0C, 0x3A, 0x03, 0x0B, 0x98, 0x00, 0x05, 0x40, 0x00, 0x0B, 0x3F, 0x00, + 0x0C, 0x43, 0x08, 0x0A, 0x3E, 0x00, 0x0B, 0x3D, 0x00, 0x0C, 0x98, 0x00, 0x05, 0x3D, 0x00, 0x0C, + 0x42, 0x00, 0x0B, 0x43, 0x08, 0x0A, 0x41, 0x00, 0x0C, 0x40, 0x00, 0x0B, 0x98, 0x00, 0x05, 0x47, + 0x09, 0x0B, 0x46, 0x09, 0x0C, 0x4A, 0x08, 0x0A, 0x45, 0x09, 0x0B, 0x44, 0x09, 0x0C, 0x98, 0x00, + 0x05, 0x44, 0x09, 0x0C, 0x49, 0x09, 0x0B, 0x4A, 0x08, 0x0A, 0x48, 0x09, 0x0C, 0x47, 0x09, 0x0B, + 0x98, 0x00, 0x05, 0x4E, 0x03, 0x0B, 0x4D, 0x03, 0x0C, 0x4A, 0x08, 0x0A, 0x4C, 0x03, 0x0B, 0x4B, + 0x03, 0x0C, 0x98, 0x00, 0x05, 0x4B, 0x03, 0x0C, 0x50, 0x03, 0x0B, 0x4A, 0x08, 0x0A, 0x4F, 0x03, + 0x0C, 0x4E, 0x03, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, +}; + +u8 l_Oba_swood_a_mikiDL[] ALIGN_DECL(32) = { + 0x98, 0x00, 0x0E, 0x0F, 0x01, 0x0F, 0x10, 0x02, 0x0E, 0x07, 0x02, 0x0F, 0x14, 0x02, 0x0E, 0x0D, + 0x06, 0x0F, 0x12, 0x02, 0x0E, 0x09, 0x05, 0x0F, 0x13, 0x02, 0x0E, 0x0B, 0x01, 0x0F, 0x11, 0x02, + 0x0E, 0x08, 0x04, 0x0F, 0x15, 0x02, 0x0E, 0x0F, 0x01, 0x0F, 0x10, 0x02, 0x0E, 0x98, 0x00, 0x0E, + 0x0E, 0x01, 0x03, 0x07, 0x02, 0x0D, 0x00, 0x02, 0x03, 0x0D, 0x02, 0x0D, 0x0C, 0x06, 0x03, 0x09, + 0x02, 0x0D, 0x04, 0x05, 0x03, 0x0B, 0x02, 0x0D, 0x0A, 0x01, 0x03, 0x08, 0x02, 0x0D, 0x01, 0x04, + 0x03, 0x0F, 0x02, 0x0D, 0x0E, 0x01, 0x03, 0x07, 0x02, 0x0D, 0x98, 0x00, 0x08, 0x0C, 0x06, 0x01, + 0x04, 0x05, 0x01, 0x06, 0x00, 0x00, 0x02, 0x03, 0x01, 0x00, 0x02, 0x01, 0x03, 0x00, 0x00, 0x0E, + 0x01, 0x01, 0x01, 0x04, 0x01, 0x98, 0x00, 0x06, 0x03, 0x00, 0x00, 0x02, 0x03, 0x01, 0x01, 0x04, + 0x01, 0x05, 0x00, 0x00, 0x0A, 0x01, 0x01, 0x04, 0x05, 0x01, 0x98, 0x00, 0x03, 0x00, 0x02, 0x01, + 0x0C, 0x06, 0x01, 0x06, 0x00, 0x00, 0x98, 0x00, 0x03, 0x05, 0x00, 0x00, 0x02, 0x03, 0x01, 0x04, + 0x05, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, +}; + +u8 l_matDL[] ALIGN_DECL(32) = { + 0x61, 0x80, 0x00, 0x01, 0x3A, 0x61, 0x84, 0x00, 0x00, 0x00, 0x61, 0x88, 0xE0, 0xFC, 0x3F, 0x61, + 0x94, + IMAGE_ADDR(&l_Txa_swood_aTEX), + 0x61, 0x30, 0x00, 0x00, 0x40, 0x61, 0x31, 0x00, 0x00, 0x40, 0x10, 0x00, + 0x00, 0x10, 0x40, 0xFF, 0xFF, 0x42, 0x80, 0x08, 0x30, 0x3C, 0xF3, 0xCF, 0x00, 0x10, 0x00, 0x00, + 0x10, 0x18, 0x3C, 0xF3, 0xCF, 0x00, 0x10, 0x00, 0x00, 0x10, 0x0E, 0x00, 0x00, 0x05, 0x43, 0x61, + 0x28, 0x3C, 0x00, 0x00, 0x61, 0xC0, 0x08, 0x24, 0xAF, 0x61, 0xC1, 0x08, 0xFF, 0xF0, 0x61, 0x28, + 0x3C, 0x00, 0x00, 0x61, 0xC2, 0x08, 0xF0, 0x8F, 0x61, 0xC3, 0x08, 0xEE, 0x70, 0x61, 0x40, 0x00, + 0x00, 0x17, 0x61, 0x41, 0x00, 0x01, 0x0C, 0x61, 0xF3, 0x64, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, + 0x3F, 0x00, 0x00, 0x00, 0x01, 0x10, 0x00, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x01, 0x61, 0x00, + 0x00, 0x04, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, +}; + +u8 l_Txa_kage_32TEX[] ALIGN_DECL(32) = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x01, 0x35, 0x00, 0x00, 0x13, 0x57, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x22, 0x33, 0x01, 0x34, 0x45, 0x66, + 0x24, 0x56, 0x78, 0x88, 0x56, 0x79, 0x9A, 0xAB, 0x78, 0xAB, 0xBC, 0xCC, 0x9A, 0xBC, 0xDD, 0xDE, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x22, 0x10, 0x00, 0x66, 0x55, 0x43, 0x20, + 0x88, 0x87, 0x65, 0x43, 0xBA, 0xA9, 0x98, 0x65, 0xCC, 0xCB, 0xBA, 0x87, 0xEE, 0xDD, 0xCB, 0xA9, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x53, 0x20, 0x00, 0x00, 0x75, 0x31, 0x00, 0x00, + 0x00, 0x00, 0x25, 0x79, 0x00, 0x01, 0x46, 0x8A, 0x00, 0x03, 0x57, 0xAB, 0x00, 0x14, 0x69, 0xBC, + 0x00, 0x24, 0x79, 0xBD, 0x00, 0x25, 0x8A, 0xCD, 0x00, 0x36, 0x8A, 0xCD, 0x00, 0x36, 0x8B, 0xCE, + 0xAC, 0xDD, 0xEE, 0xEE, 0xCD, 0xEE, 0xFF, 0xFF, 0xDE, 0xEF, 0xFF, 0xFF, 0xDE, 0xFF, 0xFF, 0xFF, + 0xEF, 0xFF, 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xFF, + 0xEE, 0xEE, 0xDD, 0xCA, 0xFF, 0xFF, 0xEE, 0xDC, 0xFF, 0xFF, 0xFE, 0xED, 0xFF, 0xFF, 0xFF, 0xED, + 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, + 0x97, 0x53, 0x00, 0x00, 0xA9, 0x64, 0x20, 0x00, 0xBA, 0x85, 0x31, 0x00, 0xCB, 0x96, 0x41, 0x00, + 0xDC, 0xA7, 0x52, 0x00, 0xDC, 0xA8, 0x53, 0x00, 0xEC, 0xB8, 0x63, 0x10, 0xED, 0xB9, 0x63, 0x10, + 0x00, 0x36, 0x8B, 0xCE, 0x00, 0x36, 0x8A, 0xCD, 0x00, 0x25, 0x8A, 0xCD, 0x00, 0x25, 0x79, 0xBD, + 0x00, 0x14, 0x69, 0xBC, 0x00, 0x03, 0x58, 0xAB, 0x00, 0x02, 0x46, 0x8A, 0x00, 0x00, 0x35, 0x79, + 0xEF, 0xFF, 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xFF, + 0xDE, 0xFF, 0xFF, 0xFF, 0xDE, 0xEF, 0xFF, 0xFF, 0xCD, 0xEE, 0xFF, 0xFF, 0xAC, 0xDD, 0xEE, 0xEF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFE, + 0xFF, 0xFF, 0xFF, 0xEE, 0xFF, 0xFF, 0xFE, 0xED, 0xFF, 0xFF, 0xEE, 0xDC, 0xFF, 0xEE, 0xED, 0xCB, + 0xED, 0xB9, 0x63, 0x10, 0xEC, 0xB8, 0x63, 0x10, 0xDC, 0xA8, 0x63, 0x00, 0xDC, 0xA7, 0x52, 0x00, + 0xCB, 0x97, 0x42, 0x00, 0xCA, 0x86, 0x31, 0x00, 0xA9, 0x74, 0x20, 0x00, 0x97, 0x53, 0x10, 0x00, + 0x00, 0x00, 0x13, 0x57, 0x00, 0x00, 0x01, 0x35, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x9A, 0xBC, 0xDD, 0xEE, 0x79, 0xAB, 0xBC, 0xCD, 0x56, 0x89, 0xAA, 0xBB, 0x34, 0x56, 0x78, 0x89, + 0x02, 0x34, 0x55, 0x66, 0x00, 0x11, 0x23, 0x33, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, + 0xEE, 0xDD, 0xCC, 0xA9, 0xDC, 0xCC, 0xBA, 0x97, 0xBB, 0xAA, 0x98, 0x75, 0x98, 0x87, 0x76, 0x43, + 0x66, 0x65, 0x43, 0x21, 0x33, 0x32, 0x11, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x76, 0x31, 0x00, 0x00, 0x64, 0x20, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +}; + +u8 g_dTree_shadowPos[][3] = { + {0xB5, 0x00, 0x4B}, + {0x4B, 0x00, 0x4B}, + {0xB5, 0x00, 0xB5}, + {0x4B, 0x00, 0xB5}, +}; + +u8 g_dTree_shadowTexCoord[][2] = { + {0x00, 0x00}, + {0x01, 0x00}, + {0x01, 0x01}, + {0x00, 0x01}, +}; + +u8 g_dTree_Oba_kage_32DL[] ALIGN_DECL(32) = { + 0x98, 0x00, 0x04, 0x01, 0x02, 0x00, 0x03, 0x03, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +}; + +u8 g_dTree_shadowMatDL[] ALIGN_DECL(32) = { + 0x61, 0x80, 0x00, 0x01, 0x35, 0x61, 0x84, 0x00, 0x00, 0x00, 0x61, 0x88, 0x00, 0x7C, 0x1F, 0x61, + 0x94, + IMAGE_ADDR(&l_Txa_kage_32TEX), + 0x61, 0x30, 0x00, 0x00, 0x20, 0x61, 0x31, 0x00, 0x00, 0x20, 0x10, 0x00, + 0x00, 0x10, 0x40, 0xFF, 0xFF, 0x42, 0x80, 0x08, 0x30, 0x3C, 0xF3, 0xCF, 0x00, 0x10, 0x00, 0x00, + 0x10, 0x18, 0x3C, 0xF3, 0xCF, 0x00, 0x61, 0x28, 0x38, 0x03, 0xC0, 0x61, 0xC0, 0x08, 0xFF, 0xFF, + 0x61, 0xC1, 0x08, 0xE6, 0x70, 0x61, 0x43, 0x00, 0x00, 0x01, 0x61, 0x40, 0x00, 0x00, 0x07, 0x61, + 0x41, 0x00, 0x04, 0xAD, 0x61, 0xF3, 0x64, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x3F, 0x00, 0x00, + 0x00, 0x01, 0x10, 0x00, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x40, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +}; + +const u32 g_dTree_Oba_kage_32DL_SIZE = sizeof(g_dTree_Oba_kage_32DL); +const u32 g_dTree_shadowMatDL_SIZE = sizeof(g_dTree_shadowMatDL); + +dPa_smokeEcallBack dTree_data_c::mSmokeEcallback(1, 1, 0, 1); /* 800787BC-80078960 .text WorkCo__12dTree_data_cFP10fopAc_ac_cUli */ void dTree_data_c::WorkCo(fopAc_ac_c*, u32, int) { @@ -72,6 +478,38 @@ dTree_data_c::dTree_data_c() { /* 8007960C-80079898 .text draw__14dTree_packet_cFv */ void dTree_packet_c::draw() { /* Nonmatching */ + static GXVtxDescList l_shadowVtxDescList[] = { + {GX_VA_POS, GX_INDEX8}, + {GX_VA_TEX0, GX_INDEX8}, + {GX_VA_NULL, GX_NONE}, + }; + static GXVtxAttrFmtList l_shadowVtxAttrFmtList[] = { + {GX_VA_POS, GX_POS_XYZ, GX_S8, 0x00}, + {GX_VA_TEX0, GX_POS_XYZ, GX_S8, 0x00}, + {GX_VA_NULL, GX_POS_XYZ, GX_S8, 0x00}, + }; + static GXVtxDescList l_vtxDescList[] = { + {GX_VA_POS, GX_INDEX8}, + {GX_VA_CLR0, GX_INDEX8}, + {GX_VA_TEX0, GX_INDEX8}, + {GX_VA_NULL, GX_NONE}, + }; + static GXVtxAttrFmtList l_vtxAttrFmtList[] = { + {GX_VA_POS, GX_POS_XYZ, GX_F32, 0x00}, + {GX_VA_CLR0, GX_POS_XYZ, GX_RGBA8, 0x00}, + {GX_VA_TEX0, GX_POS_XYZ, GX_F32, 0x00}, + {GX_VA_NULL, GX_POS_XYZ, GX_S8, 0x00}, + }; + static struct { + void* list; + u32 nbytes; + } l_modelDataStatus[] = { + {&l_Oba_swood_noneDL, 0x20}, + {&l_Oba_swood_a_hapaDL, 0x160}, + {&l_Oba_swood_a_mikiDL, 0xC0}, + {&l_Oba_swood_a_cuttDL, 0xA0}, + {&l_Oba_swood_a_cutuDL, 0x60}, + }; } /* 80079898-80079B24 .text calc__14dTree_packet_cFv */ diff --git a/src/d/d_wood.cpp b/src/d/d_wood.cpp index a7732220..42db451f 100644 --- a/src/d/d_wood.cpp +++ b/src/d/d_wood.cpp @@ -5,14 +5,9 @@ #include "d/d_wood.h" #include "JAZelAudio/JAIZelBasic.h" -#include "JSystem/J3DGraphBase/J3DShape.h" -#include "JSystem/J3DU/J3DUClipper.h" -#include "JSystem/JMath/JMath.h" #include "JSystem/JUtility/JUTAssert.h" -#include "SSystem/SComponent/c_bg_s_gnd_chk.h" #include "SSystem/SComponent/c_lib.h" #include "d/d_bg_s_gnd_chk.h" -#include "d/d_bg_s_spl_grp_chk.h" #include "d/d_com_inf_game.h" #include "d/d_drawlist.h" #include "d/d_kankyo_wether.h" @@ -24,10 +19,16 @@ #include "dolphin/gf/GFTransform.h" #include "dolphin/gx/GXAttr.h" #include "dolphin/gx/GXDisplayList.h" +#include "dolphin/gx/GXStruct.h" #include "dolphin/types.h" #include "m_Do/m_Do_lib.h" #include "m_Do/m_Do_mtx.h" +#include "weak_data_2100_2080.h" // IWYU pragma: keep + +#define CONST_U32(v) ((u8)((v) >> 16)), ((u8)((v) >> 8)), ((u8)((v) >> 0)) +#define IMAGE_ADDR(addr) CONST_U32((u32)(addr) >> 5) + //----------------------------------------- // Types //----------------------------------------- @@ -43,27 +44,27 @@ struct AttrSway_c { /* 0x2 */ s16 ampY; /* 0x4 */ s16 phaseVelX; /* 0x6 */ s16 ampX; - /* 0x8 */ float phaseBiasX; + /* 0x8 */ f32 phaseBiasX; }; struct Attr_c { - /* 0x0 */ AttrSway_c kSways[4][2]; - /* 0x60 */ u8 kCutCooldown; // = 20 - /* 0x61 */ u8 kCutFadeStart; // = 20 (Countdown time at which bush starts to fade out) - /* 0x62 */ u8 kCutAlphaFadeSpeed; // = 14 - /* 0x64 */ float kCutInitVelY; // = 18.0f - /* 0x68 */ float kCutYAccel; // = -3.0f (Units per frame per frame) - /* 0x6C */ float kCutZVel; // = 2.5f (Units per frame) - /* 0x70 */ s16 kCutPitchVel; // = 200 (shortRad per frame) - /* 0x74 */ float kUncutShadowScale; // = 1.5f - /* 0x78 */ float kCutShadowScale; // = 0.3f - /* 0x7c */ float kCollisionRad; // = 80.0f; - /* 0x80 */ float kCollisionRadCut; // = 15.0f; - /* 0x84 */ float kCollisionHeight; // = 80.0f; - /* 0x88 */ float kCollisionHeightCut; // = 15.0f; - /* 0x8c */ float kClipRadius; // = 100.0f; - /* 0x90 */ float kClipCenterYOffset; // = 40.0f; - /* 0x94 */ u8 kPushBackCountdown; // = 23 - /* 0x95 */ const u8 L_Alpha_Cutoff; // = 0x80; + /* 0x00 */ AttrSway_c kSways[4][2]; + /* 0x60 */ u8 kCutCooldown; // = 20 + /* 0x61 */ u8 kCutFadeStart; // = 20 (Countdown time at which bush starts to fade out) + /* 0x62 */ u8 kCutAlphaFadeSpeed; // = 14 + /* 0x64 */ f32 kCutInitVelY; // = 18.0f + /* 0x68 */ f32 kCutYAccel; // = -3.0f (Units per frame per frame) + /* 0x6C */ f32 kCutZVel; // = 2.5f (Units per frame) + /* 0x70 */ s16 kCutPitchVel; // = 200 (shortRad per frame) + /* 0x74 */ f32 kUncutShadowScale; // = 1.5f + /* 0x78 */ f32 kCutShadowScale; // = 0.3f + /* 0x7C */ f32 kCollisionRad; // = 80.0f; + /* 0x80 */ f32 kCollisionRadCut; // = 15.0f; + /* 0x84 */ f32 kCollisionHeight; // = 80.0f; + /* 0x88 */ f32 kCollisionHeightCut; // = 15.0f; + /* 0x8C */ f32 kClipRadius; // = 100.0f; + /* 0x90 */ f32 kClipCenterYOffset; // = 40.0f; + /* 0x94 */ u8 kPushBackCountdown; // = 23 + /* 0x95 */ u8 L_Alpha_Cutoff; // = 0x80; }; typedef void (dWood::Anm_c::*modeProcFunc)(dWood::Packet_c *); @@ -71,72 +72,381 @@ typedef void (dWood::Anm_c::*modeProcFunc)(dWood::Packet_c *); //----------------------------------------- // Data //----------------------------------------- -static Vec dummy1 = { 1.0f, 1.0f, 1.0f }; -static Vec dummy2 = { 1.0f, 1.0f, 1.0f }; namespace dWood { namespace { // .data -u8 l_Txa_swood_bTEX[0x800] ALIGN_DECL(32) = { 0x34, 0x66, 0x3c, 0xe7, 0xff, 0xff, 0x55, 0x80, 0x3c, 0x86, 0x3c, 0xe7, 0xff, 0xff, 0x5b, 0x95, 0x2c, 0x05, 0x2b, 0xc4, 0x2d, 0xa0, 0xa0, 0x00, 0x3c, 0xc7, 0x2c, 0x05, 0x78, 0x57, 0x55, 0x55, 0x00, 0x00, 0x3c, 0xe7, 0xff, 0xff, 0xff, 0x7f, 0x3c, 0xa7, 0x3d, 0x07, 0xff, 0xff, 0xfa, 0x81, 0x2c, 0x25, 0x3c, 0xc7, 0x5d, 0x55, 0x95, 0x24, 0x3c, 0xe7, 0x2b, 0xe5, 0x0a, 0x37, 0xd5, 0x75, 0x3c, 0xc7, 0x3c, 0xe7, 0xff, 0xff, 0x3f, 0x4f, 0x00, 0x00, 0x3c, 0xc7, 0xff, 0xff, 0xff, 0xfd, 0x3c, 0xa7, 0x3c, 0xe7, 0xaf, 0x5d, 0x55, 0x14, 0x3c, 0xc7, 0x2c, 0x05, 0x00, 0x00, 0x0b, 0xd5, 0x00, 0x00, 0x3c, 0xe7, 0xff, 0xff, 0xff, 0x57, 0x3c, 0xe7, 0x3c, 0xe7, 0xff, 0xff, 0xff, 0xff, 0x34, 0x46, 0x3c, 0xe7, 0x57, 0x57, 0x17, 0x17, 0x3c, 0xc7, 0x3c, 0xc7, 0xff, 0xff, 0xff, 0xff, 0x3c, 0xe7, 0x3c, 0xe7, 0xff, 0xff, 0xff, 0xff, 0x3c, 0xe7, 0x3c, 0xe7, 0xff, 0xff, 0xff, 0xff, 0x3c, 0xc7, 0x3c, 0xc7, 0xff, 0xff, 0xff, 0xff, 0x3c, 0xe7, 0x3c, 0xe7, 0xff, 0xff, 0xff, 0xff, 0x3c, 0xe7, 0x3c, 0xe7, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x3c, 0xe7, 0xff, 0xfd, 0xf5, 0xf5, 0x3c, 0xc7, 0x3c, 0xe7, 0xff, 0xff, 0xff, 0x95, 0x34, 0x25, 0x3c, 0xe7, 0xf5, 0xd5, 0xd6, 0xd4, 0x3c, 0xc7, 0x3c, 0xe7, 0xff, 0x7f, 0x87, 0x55, 0x3c, 0xe7, 0x3c, 0xe7, 0xff, 0xff, 0xff, 0xff, 0x3c, 0xc7, 0x2b, 0xe5, 0xe0, 0x5c, 0x56, 0x5f, 0x3c, 0xa7, 0x3c, 0xe7, 0x7f, 0x7f, 0x5d, 0x95, 0x3c, 0xe7, 0x3c, 0xe7, 0xff, 0xff, 0xff, 0xff, 0x3c, 0xe7, 0x3c, 0xe7, 0xff, 0xff, 0xff, 0xff, 0x2c, 0x25, 0x3c, 0xc7, 0xf5, 0x55, 0x56, 0x40, 0x3c, 0xc7, 0x2b, 0xc5, 0x00, 0x00, 0xff, 0x5d, 0x2c, 0x25, 0x2b, 0xe5, 0xae, 0x38, 0x03, 0x3e, 0x2c, 0x25, 0x2b, 0xc5, 0x80, 0xa0, 0x72, 0xae, 0x2c, 0x25, 0x2b, 0xc5, 0x2a, 0xe2, 0xe0, 0x62, 0x2c, 0x05, 0x23, 0x84, 0x05, 0xa5, 0x25, 0x85, 0x2c, 0x25, 0x2b, 0xe5, 0xe1, 0x9a, 0xfc, 0x3a, 0x2c, 0x05, 0x2b, 0xe5, 0x82, 0xc3, 0x00, 0xc2, 0x2c, 0x05, 0x23, 0x84, 0x80, 0x60, 0x58, 0x56, 0x2c, 0x05, 0x2b, 0xc5, 0x80, 0x03, 0xf0, 0x0e, 0x3c, 0xe7, 0x2c, 0x05, 0x81, 0x85, 0xf7, 0x55, 0x34, 0x46, 0x2b, 0xe5, 0xfb, 0xe9, 0xfa, 0xb4, 0x2c, 0x05, 0x23, 0x84, 0x00, 0x28, 0xd0, 0x58, 0x3c, 0xe7, 0x2b, 0xe5, 0x54, 0x5c, 0x77, 0x5d, 0x34, 0x86, 0x3c, 0xe7, 0x17, 0x17, 0x9f, 0x5f, 0x3c, 0xe7, 0x3c, 0xe7, 0xff, 0xff, 0xff, 0xff, 0x2c, 0x05, 0x3c, 0xc7, 0x5f, 0x55, 0x95, 0x01, 0x00, 0x00, 0x3c, 0xe7, 0xfd, 0x5d, 0x5f, 0x5f, 0x3c, 0xc7, 0x3c, 0xe7, 0xff, 0xff, 0xf9, 0x55, 0x3c, 0xc7, 0x3c, 0xe7, 0xfd, 0xfd, 0x59, 0x41, 0x3c, 0xe7, 0x2b, 0xc5, 0x00, 0x0f, 0x0d, 0x01, 0x3c, 0xa7, 0x23, 0x84, 0x00, 0xfa, 0xef, 0xf7, 0x3c, 0xe7, 0x2c, 0x05, 0x00, 0x26, 0x25, 0x25, 0x3c, 0xe7, 0x2c, 0x05, 0x01, 0x0d, 0xf5, 0x55, 0x3d, 0x07, 0x2c, 0x05, 0x25, 0xf5, 0x55, 0x55, 0x2c, 0x05, 0x23, 0x84, 0x00, 0x20, 0x00, 0x60, 0x2c, 0x05, 0x2b, 0xc5, 0x08, 0x00, 0x60, 0x82, 0x3c, 0xc7, 0x2b, 0xe5, 0xc2, 0x6d, 0x55, 0xf5, 0x2c, 0x05, 0x2b, 0xc5, 0x30, 0x02, 0x02, 0x00, 0x2c, 0x05, 0x23, 0x84, 0x0a, 0x0d, 0x0d, 0x15, 0x2c, 0x25, 0x2b, 0xe5, 0x98, 0x5b, 0xa3, 0x89, 0x2c, 0x05, 0x2b, 0xc5, 0x20, 0x00, 0x02, 0x0c, 0x2c, 0x05, 0x23, 0x64, 0xa8, 0x78, 0x58, 0xfc, 0x2c, 0x05, 0x2b, 0xe5, 0x20, 0x90, 0x09, 0x02, 0x2c, 0x25, 0x2b, 0xc5, 0xa2, 0xb8, 0x98, 0x02, 0x2c, 0x25, 0x23, 0x84, 0x85, 0x2d, 0x3d, 0x89, 0x2c, 0x25, 0x2b, 0xe5, 0x26, 0x76, 0x7a, 0x82, 0x2c, 0x05, 0x2b, 0xa4, 0x01, 0x02, 0x02, 0x02, 0x2b, 0x84, 0x23, 0x64, 0x08, 0x00, 0x20, 0x00, 0x2c, 0x05, 0x23, 0x84, 0x03, 0x81, 0x49, 0x6d, 0x23, 0x84, 0x23, 0x64, 0x00, 0x00, 0x02, 0x22, 0x23, 0x84, 0x23, 0x64, 0x02, 0x00, 0x00, 0x00, 0x2c, 0x25, 0x23, 0x84, 0x58, 0x7a, 0x7a, 0x70, 0x2c, 0x05, 0x2b, 0xe5, 0xa0, 0x80, 0x00, 0x23, 0x2c, 0x25, 0x23, 0x84, 0x78, 0x68, 0x60, 0xef, 0x2c, 0x05, 0x2b, 0xc5, 0x02, 0x98, 0x20, 0x55, 0x3c, 0xc7, 0x2c, 0x05, 0x5c, 0x50, 0x70, 0x40, 0x3c, 0xc7, 0x3c, 0xe7, 0x7f, 0xbf, 0xff, 0x5f, 0x3c, 0xc7, 0x2c, 0x05, 0x78, 0x55, 0x55, 0x55, 0x3c, 0xe7, 0x2b, 0xc5, 0x00, 0xe0, 0x58, 0xe0, 0x34, 0x46, 0x3c, 0xe7, 0xd4, 0xf5, 0xfd, 0xfd, 0x3c, 0xe7, 0x2c, 0x05, 0x55, 0xd5, 0x0b, 0x03, 0x2b, 0xe5, 0x3c, 0xe7, 0xd5, 0x58, 0x58, 0x56, 0x34, 0x46, 0x2b, 0xe5, 0x03, 0x5f, 0x7d, 0x7d, 0x2c, 0x05, 0x2b, 0xc5, 0x03, 0x08, 0x00, 0x82, 0x2c, 0x05, 0x23, 0x84, 0x5c, 0x56, 0xd5, 0xd5, 0x2c, 0x05, 0x2b, 0xe5, 0x02, 0x08, 0x88, 0x00, 0x2c, 0x25, 0x23, 0x84, 0x95, 0x35, 0x25, 0x2d, 0x2c, 0x05, 0x23, 0x84, 0x08, 0x02, 0x03, 0x4d, 0x2b, 0xc5, 0x23, 0x84, 0x17, 0xff, 0xff, 0x75, 0x2b, 0xc5, 0x23, 0x64, 0x8b, 0xff, 0xff, 0xad, 0x23, 0x84, 0x23, 0x64, 0x00, 0x00, 0x08, 0x08, 0x2c, 0x05, 0x23, 0x84, 0x5c, 0x5c, 0x58, 0x70, 0x2c, 0x05, 0x2b, 0xc5, 0xe0, 0x08, 0x00, 0x08, 0x2c, 0x05, 0x23, 0x84, 0x60, 0xc2, 0xc0, 0x80, 0x2c, 0x25, 0x2b, 0xc5, 0x0a, 0x0a, 0xca, 0x88, 0x2c, 0x05, 0x2b, 0xc5, 0x02, 0xa0, 0x00, 0x62, 0x2c, 0x05, 0x2b, 0xe5, 0x02, 0x00, 0xf0, 0x51, 0x2c, 0x25, 0x2b, 0xc5, 0x60, 0x0b, 0x28, 0xf0, 0x2c, 0x25, 0x2b, 0xc5, 0x8b, 0x7e, 0xaa, 0x82, 0x2c, 0x05, 0x23, 0x84, 0xd5, 0x35, 0x25, 0x09, 0x23, 0x84, 0x23, 0x64, 0x80, 0x00, 0x00, 0x00, 0x2c, 0x05, 0x23, 0x84, 0x01, 0x02, 0x00, 0x03, 0x2b, 0xe5, 0x23, 0x84, 0x55, 0x57, 0xd5, 0x15, 0x23, 0x84, 0x23, 0x64, 0x02, 0x00, 0x00, 0x80, 0x2c, 0x05, 0x23, 0x84, 0x55, 0x56, 0x50, 0x80, 0x2c, 0x05, 0x23, 0x84, 0x78, 0x70, 0x50, 0x58, 0x2c, 0x05, 0x2b, 0xc5, 0x0e, 0x00, 0x00, 0x02, 0x34, 0x86, 0x2b, 0xe5, 0x5e, 0xdc, 0x7d, 0x5f, 0x2c, 0x25, 0x3d, 0x07, 0x97, 0x7f, 0x9f, 0x27, 0x34, 0x46, 0x2b, 0xc5, 0xa7, 0xfa, 0xdb, 0xe2, 0x3c, 0xe7, 0x2c, 0x05, 0x70, 0x58, 0x5c, 0x5c, 0x3c, 0xc7, 0x3c, 0xe7, 0xd5, 0xfd, 0xff, 0xff, 0x2c, 0x05, 0x3c, 0xe7, 0x80, 0x58, 0xd4, 0x50, 0x3c, 0xc7, 0x3c, 0xe7, 0xff, 0x7e, 0x7d, 0x3d, 0x3c, 0xe7, 0x2c, 0x05, 0x25, 0x25, 0x3d, 0x00, 0x2c, 0x05, 0x23, 0x84, 0x00, 0x00, 0x0b, 0x35, 0x2c, 0x05, 0x23, 0x84, 0x09, 0xb5, 0x55, 0x55, 0x3c, 0x86, 0x23, 0x84, 0x95, 0xef, 0xee, 0x00, 0x2c, 0x05, 0x23, 0x84, 0x75, 0x05, 0x0d, 0x05, 0x23, 0x84, 0x23, 0x64, 0x00, 0x80, 0x80, 0x02, 0x2b, 0xe5, 0x23, 0x84, 0x57, 0x54, 0xdc, 0x50, 0x23, 0x84, 0x23, 0x64, 0x02, 0x00, 0x80, 0x02, 0x2c, 0x05, 0x23, 0x64, 0xf0, 0x60, 0x40, 0xc0, 0x2c, 0x25, 0x2b, 0xe5, 0x0a, 0xba, 0xab, 0xb8, 0x8b, 0x28, 0x2c, 0x05, 0x55, 0x57, 0x58, 0xe0, 0x83, 0x28, 0x2c, 0x05, 0x57, 0x5c, 0x60, 0x80, 0x8b, 0x28, 0x83, 0x48, 0x4f, 0xbf, 0xff, 0xff, 0x2c, 0x25, 0x2b, 0xa4, 0xe0, 0x2a, 0xaa, 0xa2, 0x2c, 0x25, 0x2b, 0xe5, 0x3c, 0x3e, 0x16, 0x3b, 0x2c, 0x05, 0x2b, 0xa4, 0x08, 0x24, 0x08, 0x00, 0x2c, 0x05, 0x2b, 0xc5, 0x03, 0x00, 0x00, 0x28, 0x2c, 0x05, 0x2b, 0xc5, 0x07, 0x00, 0x00, 0x02, 0x2c, 0x05, 0x23, 0x84, 0x35, 0x25, 0x0d, 0x09, 0x2c, 0x25, 0x2b, 0xe5, 0x82, 0x82, 0xeb, 0xa2, 0x2c, 0x05, 0x23, 0x84, 0x81, 0x02, 0x08, 0x00, 0x2c, 0x25, 0x23, 0x84, 0x5c, 0x5c, 0x54, 0x56, 0x2c, 0x05, 0x2b, 0xc5, 0x32, 0x02, 0x0e, 0x80, 0x2b, 0xe5, 0x23, 0x84, 0x57, 0x54, 0x94, 0x3c, 0x3c, 0xa7, 0x2b, 0xe5, 0x75, 0xd6, 0x58, 0xe0, 0x2c, 0x05, 0x3c, 0xe7, 0x25, 0x25, 0x17, 0x17, 0x3c, 0xc7, 0x3c, 0xe7, 0x85, 0x55, 0xff, 0xff, 0x3c, 0xc7, 0x3c, 0xe7, 0x1f, 0x5f, 0xbf, 0x5f, 0x3c, 0xe7, 0x3d, 0x07, 0xff, 0xff, 0xfc, 0xfd, 0x3c, 0xc7, 0x3c, 0xe7, 0x3f, 0x7f, 0xff, 0xff, 0x3c, 0xc7, 0x3c, 0xe7, 0x55, 0xff, 0xff, 0xff, 0x2b, 0xe5, 0x3c, 0xc7, 0xff, 0x57, 0x55, 0x49, 0x00, 0x00, 0x3c, 0xe7, 0xff, 0xff, 0xff, 0x7f, 0x3c, 0xa7, 0x3c, 0xe7, 0x5d, 0xfe, 0xf4, 0xf6, 0x2c, 0x25, 0x23, 0x84, 0x25, 0x25, 0x25, 0x25, 0x3c, 0x86, 0x3c, 0xe7, 0xf4, 0xf6, 0xfe, 0x55, 0x3c, 0xc7, 0x23, 0x84, 0xf5, 0xfd, 0xbd, 0x2f, 0x2c, 0x05, 0x23, 0x84, 0x55, 0x56, 0x5c, 0x58, 0x8b, 0x28, 0x33, 0xe5, 0x56, 0x58, 0x60, 0x80, 0x83, 0x28, 0x2b, 0xa4, 0x56, 0x58, 0x60, 0xc0, 0xa4, 0x2c, 0x83, 0x28, 0x55, 0x55, 0x55, 0x54, 0x8b, 0x49, 0x83, 0x08, 0x80, 0x00, 0x02, 0x0c, 0xa4, 0x2c, 0x83, 0x28, 0x55, 0x55, 0x55, 0x25, 0xee, 0x73, 0x83, 0x28, 0x56, 0x70, 0xc0, 0x00, 0xee, 0x73, 0x8b, 0x48, 0x0d, 0x01, 0x01, 0x01, 0x2c, 0x05, 0x2b, 0xc5, 0x07, 0x28, 0x80, 0x00, 0x2c, 0x25, 0x2b, 0xe5, 0x28, 0x28, 0xd6, 0x6a, 0x2c, 0x25, 0x2b, 0xe5, 0x8a, 0xea, 0xe8, 0xe0, 0x2c, 0x05, 0x2b, 0xe5, 0x00, 0x80, 0xa2, 0xb0, 0x2c, 0x05, 0x2b, 0xe5, 0x02, 0x20, 0x08, 0x01, 0x2c, 0x25, 0x2b, 0xc5, 0x2a, 0xa5, 0x8a, 0x68, 0x2c, 0x05, 0x2b, 0xe5, 0x20, 0x02, 0x03, 0x20, 0x2c, 0x05, 0x2b, 0xc5, 0x08, 0x02, 0x20, 0xe0, 0x2c, 0x05, 0x2b, 0xc5, 0x00, 0x00, 0x09, 0x02, 0x34, 0x25, 0x2b, 0xe5, 0x00, 0x28, 0xe4, 0x8f, 0x2c, 0x05, 0x2b, 0xe5, 0x0a, 0xc1, 0x88, 0x20, 0x2c, 0x05, 0x2b, 0xa5, 0x02, 0xc0, 0x0a, 0x0d, 0x3c, 0xe7, 0x2c, 0x05, 0x80, 0x70, 0x56, 0x75, 0x2c, 0x05, 0x3c, 0xe7, 0xf5, 0x76, 0x54, 0x58, 0x2c, 0x05, 0x2b, 0xe5, 0x82, 0x22, 0x00, 0x00, 0x3c, 0xa7, 0x2c, 0x05, 0x85, 0x55, 0x5d, 0x55, 0x34, 0x86, 0x2b, 0xe5, 0xf4, 0x5c, 0xde, 0xdf, 0x34, 0x46, 0x3c, 0xe7, 0x7d, 0x55, 0x55, 0x54, 0x2c, 0x05, 0x2b, 0xe5, 0x0a, 0xe0, 0x0e, 0x08, 0x45, 0x07, 0x2c, 0x05, 0x8d, 0xe5, 0x55, 0x55, 0x3c, 0xe7, 0x2c, 0x05, 0x02, 0x2d, 0xd7, 0x55, 0x83, 0x28, 0x2c, 0x25, 0x57, 0x5c, 0x70, 0x40, 0x8b, 0x28, 0x2b, 0xe5, 0x55, 0x56, 0x5c, 0x58, 0x83, 0x28, 0x6b, 0x67, 0x40, 0x00, 0x00, 0x00, 0x93, 0x89, 0x83, 0x07, 0xff, 0xff, 0xfd, 0xfc, 0xee, 0x73, 0x83, 0x08, 0x5c, 0x70, 0xc0, 0x00, 0xbc, 0xce, 0x83, 0x28, 0x54, 0x54, 0x57, 0x55, 0xee, 0x74, 0x83, 0x28, 0x00, 0x00, 0x80, 0x5f, 0xee, 0x94, 0xe6, 0x52, 0x1e, 0x60, 0x80, 0x02, 0xee, 0x93, 0x83, 0x08, 0x09, 0x09, 0x09, 0x09, 0xee, 0x74, 0xac, 0x8d, 0x00, 0x00, 0x00, 0x55, 0xee, 0x74, 0x83, 0x08, 0x0d, 0x0d, 0x25, 0xd5, 0x2c, 0x25, 0x2b, 0xc5, 0x0b, 0xab, 0x98, 0x08, 0x2c, 0x25, 0x2b, 0xe5, 0xaf, 0xa8, 0x22, 0xac, 0x2c, 0x25, 0x2b, 0xe5, 0xee, 0x7b, 0xda, 0xac, 0x2c, 0x05, 0x2b, 0xc5, 0x1c, 0x22, 0x0c, 0x0a, 0x2c, 0x05, 0x2b, 0xe5, 0x01, 0x50, 0xe2, 0x80, 0x2c, 0x05, 0x2b, 0xe5, 0x80, 0x20, 0xe2, 0x8b, 0x2c, 0x25, 0x2b, 0xe5, 0x6e, 0xa6, 0xb8, 0x8a, 0x2c, 0x25, 0x2b, 0xc5, 0x3a, 0x3e, 0x0a, 0x00, 0x2c, 0x05, 0x2b, 0xa4, 0x20, 0x00, 0x20, 0x24, 0x2c, 0x05, 0x23, 0x84, 0x01, 0x23, 0x03, 0x08, 0x2c, 0x25, 0x2b, 0xe5, 0x96, 0xf0, 0xa0, 0x8f, 0x2c, 0x05, 0x2b, 0xc5, 0x40, 0x80, 0x02, 0x02, 0x2b, 0xe5, 0x23, 0x84, 0xc0, 0x70, 0x5c, 0xf6, 0x2c, 0x25, 0x2b, 0xe5, 0x28, 0xbe, 0xb8, 0xad, 0x2b, 0xe5, 0x23, 0x84, 0x9d, 0x35, 0x25, 0x07, 0x2c, 0x05, 0x23, 0x84, 0x80, 0x40, 0x70, 0x70, 0x2c, 0x05, 0x2b, 0xc5, 0x00, 0x92, 0x30, 0x00, 0x2c, 0x05, 0x23, 0x64, 0x02, 0x8b, 0x2d, 0xd5, 0x2c, 0x05, 0x2b, 0x84, 0x00, 0x03, 0x09, 0x0d, 0x2c, 0x25, 0x23, 0x84, 0x57, 0x57, 0x56, 0x5c, 0x5b, 0x87, 0x2b, 0xe5, 0x5c, 0xd5, 0x55, 0x55, 0x8b, 0x48, 0x2c, 0x05, 0x80, 0x58, 0x5c, 0x5c, 0x2c, 0x05, 0x2b, 0xc5, 0x00, 0x87, 0x00, 0x20, 0xa3, 0xa8, 0x2c, 0x05, 0x58, 0x55, 0x55, 0x5c, 0xa3, 0xc8, 0x83, 0x28, 0x55, 0x55, 0xff, 0x00, 0xa3, 0xc8, 0x83, 0x28, 0x55, 0x55, 0xff, 0x00, 0xa3, 0xc8, 0x7a, 0xe7, 0xaa, 0x55, 0xff, 0x00, 0xa3, 0xc8, 0x7a, 0xe7, 0xaa, 0x55, 0xff, 0x00, 0xa3, 0xc8, 0x83, 0x28, 0x55, 0x55, 0xff, 0x00, 0xa3, 0xc8, 0x83, 0x28, 0x55, 0x55, 0xff, 0x00, 0xa3, 0xc8, 0x7a, 0xe7, 0xaa, 0x55, 0xff, 0x00, 0xa3, 0xa8, 0x7a, 0xe7, 0xaa, 0x55, 0xff, 0x00, 0x2c, 0x25, 0x2b, 0xe5, 0xaa, 0x51, 0xa1, 0xe1, 0x2c, 0x25, 0x2b, 0xe5, 0x52, 0xa0, 0xc2, 0x40, 0x2c, 0x25, 0x2b, 0x84, 0x82, 0x02, 0xa0, 0x70, 0x2c, 0x25, 0x2b, 0xe5, 0x82, 0xe3, 0xaa, 0x08, 0x2c, 0x25, 0x2b, 0xc5, 0x2b, 0xbe, 0xaa, 0x08, 0x2c, 0x05, 0x2b, 0xc5, 0x0a, 0xc3, 0x88, 0x08, 0x2c, 0x05, 0x2b, 0xe5, 0x80, 0x4f, 0x8a, 0x01, 0x2c, 0x25, 0x2b, 0xe5, 0x06, 0x0a, 0xcf, 0xcd, 0x2c, 0x25, 0x2b, 0xe5, 0xa6, 0xca, 0x82, 0x2a, 0x2c, 0x05, 0x2b, 0xc5, 0x20, 0x00, 0x0a, 0x04, 0x2c, 0x25, 0x2b, 0xe5, 0xba, 0xb0, 0x8a, 0x8f, 0x2c, 0x05, 0x2b, 0xe5, 0x00, 0x38, 0x14, 0x02, 0x2c, 0x25, 0x23, 0x84, 0x05, 0x8d, 0x89, 0x01, 0x2c, 0x05, 0x23, 0x84, 0x5c, 0x54, 0xd6, 0x55, 0x2c, 0x05, 0x2b, 0xe5, 0x21, 0x00, 0x80, 0x42, 0x2c, 0x05, 0x23, 0x84, 0x55, 0x95, 0x35, 0x25, 0x2b, 0xe5, 0x23, 0x84, 0x05, 0x35, 0x1d, 0xd5, 0x2c, 0x25, 0x23, 0x84, 0x58, 0x70, 0x60, 0xc0, 0x2c, 0x05, 0x23, 0x84, 0x57, 0x5c, 0x58, 0x70, 0x2c, 0x25, 0x2b, 0xe5, 0xeb, 0x26, 0x0a, 0x01, 0x2c, 0x25, 0x2b, 0xc5, 0xba, 0x22, 0x2a, 0xa8, 0xab, 0xa8, 0x2c, 0x05, 0x5c, 0x55, 0x55, 0x5c, 0x2c, 0x05, 0x2b, 0xc5, 0x88, 0x08, 0x38, 0x2c, 0xa3, 0xa8, 0x2c, 0x05, 0x58, 0x55, 0x55, 0x55, 0xa3, 0xc8, 0x7a, 0xe7, 0xaa, 0x55, 0xff, 0x00, 0xa3, 0xc8, 0x7a, 0xe7, 0xaa, 0x55, 0xff, 0x00, 0x93, 0x47, 0x73, 0x07, 0x00, 0x7f, 0xaa, 0xaa, 0x93, 0x47, 0x7a, 0xe7, 0x00, 0x55, 0xaa, 0xaa, 0xa3, 0xc8, 0x7a, 0xe7, 0xaa, 0x55, 0xff, 0x00, 0xa3, 0xc8, 0x7a, 0xe7, 0xaa, 0x55, 0xff, 0x00, 0x93, 0x47, 0x7a, 0xe7, 0x00, 0x55, 0xaa, 0xaa, 0x93, 0x47, 0x7a, 0xe7, 0x00, 0x55, 0xaa, 0xaa }; -u8 l_pos[0x2e8] = { 0x37, 0xb8, 0x8c, 0xa4, 0x41, 0x6e, 0xc3, 0xf7, 0xc2, 0xb3, 0xf6, 0xf9, 0xc2, 0x9b, 0xda, 0xa2, 0x41, 0x6e, 0xc3, 0xf7, 0xc2, 0x33, 0xf6, 0xfe, 0xc2, 0x9b, 0xda, 0xa3, 0x41, 0x6e, 0xc3, 0xf7, 0x42, 0x33, 0xf6, 0xf6, 0xb7, 0x06, 0x37, 0xbd, 0x41, 0x6e, 0xc3, 0xf7, 0x42, 0xb3, 0xf6, 0xf7, 0x42, 0x9b, 0xda, 0xa1, 0x41, 0x6e, 0xc3, 0xf7, 0x42, 0x33, 0xf6, 0xf8, 0x42, 0x9b, 0xda, 0xa1, 0x41, 0x6e, 0xc3, 0xf7, 0xc2, 0x33, 0xf6, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x42, 0xac, 0x37, 0x3b, 0x00, 0x00, 0x00, 0x00, 0x42, 0x40, 0x4b, 0x91, 0x42, 0x03, 0x2c, 0x64, 0xc2, 0xa6, 0x88, 0x4d, 0xc2, 0x40, 0x4b, 0x86, 0x42, 0x03, 0x2c, 0x64, 0xc2, 0xa6, 0x88, 0x4f, 0xc2, 0xc0, 0x4b, 0x8a, 0x42, 0x03, 0x2c, 0x64, 0xb7, 0x7b, 0xa8, 0x82, 0xc2, 0x40, 0x4b, 0x8b, 0x42, 0x03, 0x2c, 0x64, 0x42, 0xa6, 0x88, 0x4d, 0x42, 0x40, 0x4b, 0x87, 0x42, 0x03, 0x2c, 0x64, 0x42, 0xa6, 0x88, 0x4d, 0x42, 0xc0, 0x4b, 0x89, 0x42, 0x03, 0x2c, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0xbd, 0x95, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x42, 0x3b, 0x22, 0xd7, 0x42, 0x87, 0x96, 0x71, 0xc2, 0xa2, 0x10, 0x84, 0xc2, 0x3b, 0x22, 0xcc, 0x42, 0x87, 0x96, 0x71, 0xc2, 0xa2, 0x10, 0x86, 0xc2, 0xbb, 0x22, 0xd1, 0x42, 0x87, 0x96, 0x71, 0xb7, 0x7b, 0xa8, 0x82, 0xc2, 0x3b, 0x22, 0xd2, 0x42, 0x87, 0x96, 0x71, 0x42, 0xa2, 0x10, 0x84, 0x42, 0x3b, 0x22, 0xcf, 0x42, 0x87, 0x96, 0x71, 0x42, 0xa2, 0x10, 0x84, 0x42, 0xbb, 0x22, 0xd0, 0x42, 0x87, 0x96, 0x71, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0xd2, 0xc8, 0x80, 0x00, 0x00, 0x00, 0x00, 0x41, 0xe7, 0x0f, 0x01, 0x42, 0xc5, 0x3b, 0x61, 0xc2, 0x48, 0x1a, 0x3c, 0xc1, 0xe7, 0x0e, 0xf5, 0x42, 0xc5, 0x3b, 0x61, 0xc2, 0x48, 0x1a, 0x42, 0xc2, 0x67, 0x0e, 0xf9, 0x42, 0xc5, 0x3b, 0x61, 0xb7, 0x16, 0xfe, 0xb5, 0xc1, 0xe7, 0x0e, 0xfb, 0x42, 0xc5, 0x3b, 0x61, 0x42, 0x48, 0x1a, 0x3c, 0x41, 0xe7, 0x0e, 0xf6, 0x42, 0xc5, 0x3b, 0x61, 0x42, 0x48, 0x1a, 0x3c, 0x42, 0x67, 0x0e, 0xf7, 0x42, 0xc5, 0x3b, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0xda, 0x1f, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x42, 0x24, 0xf5, 0x0b, 0x3f, 0x96, 0x3e, 0xc9, 0xc2, 0x8e, 0xdb, 0x67, 0xc2, 0x24, 0xf5, 0x01, 0x3f, 0x96, 0x3e, 0xc9, 0xc2, 0x8e, 0xdb, 0x69, 0xc2, 0xa4, 0xf5, 0x05, 0x3f, 0x96, 0x3e, 0xc9, 0xb7, 0x5a, 0x1a, 0x93, 0xc2, 0x24, 0xf5, 0x06, 0x3f, 0x96, 0x3e, 0xc9, 0x42, 0x8e, 0xdb, 0x67, 0x42, 0x24, 0xf5, 0x02, 0x3f, 0x96, 0x3e, 0xc9, 0x42, 0x8e, 0xdb, 0x67, 0x42, 0xa4, 0xf5, 0x03, 0x3f, 0x96, 0x3e, 0xc9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x8c, 0x89, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x37, 0xd1, 0xb7, 0x17, 0x42, 0x4b, 0x3d, 0xf5, 0xc2, 0xc3, 0x63, 0xe0, 0xc2, 0xa9, 0x36, 0x7a, 0x42, 0x4b, 0x3d, 0xf5, 0xc2, 0x43, 0x63, 0xe4, 0xc2, 0xa9, 0x36, 0x7d, 0x42, 0x4b, 0x3d, 0xf5, 0x42, 0x43, 0x63, 0xdc, 0xb7, 0x27, 0xc5, 0xac, 0x42, 0x4b, 0x3d, 0xf5, 0x42, 0xc3, 0x63, 0xde, 0x42, 0xa9, 0x36, 0x7a, 0x42, 0x4b, 0x3d, 0xf5, 0x42, 0x43, 0x63, 0xdf, 0x42, 0xa9, 0x36, 0x7a, 0x42, 0x4b, 0x3d, 0xf5, 0xc2, 0x43, 0x63, 0xde, 0x00, 0x00, 0x00, 0x00, 0x42, 0xcc, 0x24, 0x67, 0x00, 0x00, 0x00, 0x00, 0x37, 0xb0, 0x29, 0x28, 0x42, 0xa4, 0x8f, 0x40, 0xc2, 0xa0, 0x12, 0x3e, 0xc2, 0x8a, 0xa0, 0x33, 0x42, 0xa4, 0x8f, 0x40, 0xc2, 0x20, 0x12, 0x43, 0xc2, 0x8a, 0xa0, 0x35, 0x42, 0xa4, 0x8f, 0x40, 0x42, 0x20, 0x12, 0x3d, 0xb7, 0x06, 0x37, 0xbd, 0x42, 0xa4, 0x8f, 0x40, 0x42, 0xa0, 0x12, 0x3f, 0x42, 0x8a, 0xa0, 0x33, 0x42, 0xa4, 0x8f, 0x40, 0x42, 0x20, 0x12, 0x3f, 0x42, 0x8a, 0xa0, 0x33, 0x42, 0xa4, 0x8f, 0x40, 0xc2, 0x20, 0x12, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x42, 0xda, 0x0b, 0x81, 0x00, 0x00, 0x00, 0x00, 0x40, 0x50, 0x61, 0xdd, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xbd, 0x7d, 0x44, 0x40, 0x50, 0x61, 0xdd, 0x00, 0x00, 0x00, 0x00, 0x40, 0xbd, 0x7d, 0x44, 0xc0, 0xa5, 0x2c, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3d, 0xea, 0x44, 0xc8, 0x41, 0x3c, 0x67, 0x6f, 0xbe, 0x7f, 0x13, 0x8c, 0xbf, 0x5c, 0xeb, 0xbc, 0x41, 0x9e, 0x08, 0x97, 0x41, 0x09, 0x94, 0x81, 0xc1, 0x15, 0xb8, 0x96, 0x41, 0x9c, 0xac, 0xef, 0x41, 0x34, 0x4a, 0xd4, 0xc1, 0x01, 0x4e, 0x1d, 0x41, 0x9e, 0x11, 0x4d, 0x40, 0x44, 0x75, 0x2e, 0xc0, 0x0e, 0x33, 0x37, 0x41, 0x98, 0x13, 0x05, 0xc1, 0x01, 0x2a, 0x2c, 0xc1, 0x18, 0x08, 0xee, 0x41, 0x98, 0x13, 0x05, 0xc0, 0x80, 0xc7, 0x39, 0xc1, 0x06, 0xa2, 0x25, 0x41, 0x98, 0x13, 0x05, 0xc1, 0x40, 0x57, 0xb5, 0x41, 0x57, 0x63, 0xee, 0x41, 0xb0, 0x33, 0x7c, 0x3f, 0xc9, 0xad, 0xb0, 0x40, 0xb1, 0xf3, 0x9f, 0x41, 0xb0, 0x33, 0x7c, 0x40, 0x87, 0x54, 0x2a, 0x40, 0xb5, 0x00, 0x0f, 0x41, 0xb0, 0x33, 0x7c, 0xc0, 0x6f, 0xf7, 0xe4 }; -u8 l_color[0x50] = { 0x7f, 0x7f, 0x7f, 0xff, 0x98, 0x98, 0x99, 0xff, 0x99, 0x99, 0x99, 0xff, 0xcc, 0xcc, 0xcc, 0xff, 0xff, 0xff, 0xff, 0xff, 0x66, 0x66, 0x66, 0xff, 0xb2, 0xb2, 0xb2, 0xff, 0xe5, 0xe5, 0xe5, 0xff, 0xf4, 0xf4, 0xf4, 0xff, 0xab, 0xab, 0xab, 0xff, 0xfc, 0xfc, 0xfc, 0xff, 0xf7, 0xf7, 0xf7, 0xff, 0xf8, 0xf8, 0xf8, 0xff, 0xc3, 0xc3, 0xc3, 0xff, 0xa1, 0xa1, 0xa1, 0xff, 0xf5, 0xf5, 0xf5, 0xff, 0xfb, 0xfb, 0xfb, 0xff, 0x73, 0x73, 0x73, 0xff, 0x43, 0x43, 0x43, 0xff, 0x9a, 0x9a, 0x9a, 0xff }; -u8 l_texCoord[0x50] = { 0x3f, 0x00, 0x00, 0x00, 0x3f, 0x80, 0x00, 0x00, 0x3f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x80, 0x00, 0x00, 0x3e, 0xe9, 0x5d, 0xb3, 0x3f, 0x80, 0x00, 0x00, 0x3f, 0x40, 0x00, 0x00, 0x3f, 0x34, 0xae, 0xda, 0x3f, 0x40, 0x00, 0x00, 0x3f, 0x75, 0x5e, 0x6c, 0x3f, 0x80, 0x00, 0x00, 0x3f, 0x4a, 0xf9, 0x55, 0x3f, 0x40, 0x00, 0x00, 0x3f, 0x75, 0x5e, 0x6c, 0x3f, 0x40, 0x00, 0x00, 0x3f, 0x4a, 0xf9, 0x55, 0x3f, 0x80, 0x00, 0x00 }; -u8 l_Oba_swood_bDL[0x11c] ALIGN_DECL(32) = { 0x98, 0x00, 0x05, 0x2a, 0x07, 0x02, 0x2f, 0x07, 0x01, 0x30, 0x07, 0x00, 0x2e, 0x07, 0x02, 0x2d, 0x07, 0x01, 0x98, 0x00, 0x05, 0x2d, 0x07, 0x01, 0x2c, 0x07, 0x02, 0x30, 0x07, 0x00, 0x2b, 0x07, 0x01, 0x2a, 0x07, 0x02, 0x98, 0x00, 0x05, 0x23, 0x06, 0x02, 0x28, 0x06, 0x01, 0x29, 0x06, 0x00, 0x27, 0x06, 0x02, 0x26, 0x06, 0x01, 0x98, 0x00, 0x05, 0x26, 0x06, 0x01, 0x25, 0x06, 0x02, 0x29, 0x06, 0x00, 0x24, 0x06, 0x01, 0x23, 0x06, 0x02, 0x98, 0x00, 0x05, 0x1c, 0x05, 0x02, 0x21, 0x05, 0x01, 0x22, 0x05, 0x00, 0x20, 0x05, 0x02, 0x1f, 0x05, 0x01, 0x98, 0x00, 0x05, 0x1f, 0x05, 0x01, 0x1e, 0x05, 0x02, 0x22, 0x05, 0x00, 0x1d, 0x05, 0x01, 0x1c, 0x05, 0x02, 0x98, 0x00, 0x05, 0x15, 0x04, 0x02, 0x1a, 0x04, 0x01, 0x1b, 0x04, 0x00, 0x19, 0x04, 0x02, 0x18, 0x04, 0x01, 0x98, 0x00, 0x05, 0x18, 0x04, 0x01, 0x17, 0x04, 0x02, 0x1b, 0x04, 0x00, 0x16, 0x04, 0x01, 0x15, 0x04, 0x02, 0x98, 0x00, 0x05, 0x0e, 0x03, 0x02, 0x13, 0x03, 0x01, 0x14, 0x03, 0x00, 0x12, 0x03, 0x02, 0x11, 0x03, 0x01, 0x98, 0x00, 0x05, 0x11, 0x03, 0x01, 0x10, 0x03, 0x02, 0x14, 0x03, 0x00, 0x0f, 0x03, 0x01, 0x0e, 0x03, 0x02, 0x98, 0x00, 0x05, 0x07, 0x02, 0x02, 0x0c, 0x02, 0x01, 0x0d, 0x01, 0x00, 0x0b, 0x02, 0x02, 0x0a, 0x02, 0x01, 0x98, 0x00, 0x05, 0x0a, 0x02, 0x01, 0x09, 0x02, 0x02, 0x0d, 0x01, 0x00, 0x08, 0x02, 0x01, 0x07, 0x02, 0x02, 0x98, 0x00, 0x05, 0x00, 0x00, 0x02, 0x05, 0x00, 0x01, 0x06, 0x00, 0x00, 0x04, 0x00, 0x02, 0x03, 0x00, 0x01, 0x98, 0x00, 0x05, 0x03, 0x00, 0x01, 0x02, 0x00, 0x02, 0x06, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; -u8 l_Oba_swood_b_cutDL[0xcb] ALIGN_DECL(32) = { 0x98, 0x00, 0x04, 0x31, 0x13, 0x06, 0x32, 0x11, 0x09, 0x3b, 0x0d, 0x08, 0x3c, 0x0b, 0x07, 0x98, 0x00, 0x04, 0x3b, 0x0d, 0x07, 0x3d, 0x0c, 0x08, 0x31, 0x13, 0x09, 0x34, 0x00, 0x06, 0x98, 0x00, 0x04, 0x31, 0x13, 0x06, 0x34, 0x00, 0x09, 0x38, 0x0a, 0x08, 0x39, 0x08, 0x07, 0x98, 0x00, 0x04, 0x33, 0x12, 0x06, 0x31, 0x13, 0x09, 0x3a, 0x09, 0x08, 0x38, 0x0a, 0x07, 0x98, 0x00, 0x04, 0x3a, 0x09, 0x07, 0x39, 0x08, 0x08, 0x33, 0x12, 0x09, 0x34, 0x00, 0x06, 0x98, 0x00, 0x04, 0x36, 0x0e, 0x08, 0x33, 0x12, 0x06, 0x37, 0x0f, 0x07, 0x34, 0x00, 0x09, 0x98, 0x00, 0x04, 0x33, 0x12, 0x09, 0x36, 0x0e, 0x07, 0x32, 0x11, 0x06, 0x35, 0x10, 0x08, 0x98, 0x00, 0x04, 0x32, 0x11, 0x06, 0x34, 0x00, 0x09, 0x3c, 0x0b, 0x08, 0x3d, 0x0c, 0x07, 0x98, 0x00, 0x04, 0x32, 0x11, 0x09, 0x35, 0x10, 0x07, 0x34, 0x00, 0x06, 0x37, 0x0f, 0x08, 0x98, 0x00, 0x03, 0x36, 0x0e, 0x03, 0x37, 0x0f, 0x04, 0x35, 0x10, 0x05, 0x98, 0x00, 0x03, 0x3c, 0x0b, 0x03, 0x3d, 0x0c, 0x04, 0x3b, 0x0d, 0x05, 0x98, 0x00, 0x03, 0x39, 0x08, 0x03, 0x3a, 0x09, 0x04, 0x38, 0x0a, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; -u8 l_matDL[0xa3] ALIGN_DECL(32) = { 0x61, 0x80, 0x00, 0x01, 0x3a, 0x61, 0x84, 0x00, 0x00, 0x00, 0x61, 0x88, 0xe0, 0xfc, 0x3f, 0x61, 0x94, ((int)l_Txa_swood_bTEX >> 21) & 0xFF, ((int)l_Txa_swood_bTEX >> 13) & 0xFF, ((int)l_Txa_swood_bTEX >> 5) & 0xFF, 0x61, 0x30, 0x00, 0x00, 0x40, 0x61, 0x31, 0x00, 0x00, 0x40, 0x10, 0x00, 0x00, 0x10, 0x40, 0xff, 0xff, 0x42, 0x80, 0x08, 0x30, 0x3c, 0xf3, 0xcf, 0x00, 0x10, 0x00, 0x00, 0x10, 0x18, 0x3c, 0xf3, 0xcf, 0x00, 0x10, 0x00, 0x00, 0x10, 0x0e, 0x00, 0x00, 0x05, 0x43, 0x61, 0x28, 0x3c, 0x00, 0x00, 0x61, 0xc0, 0x08, 0x24, 0xaf, 0x61, 0xc1, 0x08, 0xff, 0xf0, 0x61, 0x28, 0x3c, 0x00, 0x00, 0x61, 0xc2, 0x08, 0xf0, 0x8f, 0x61, 0xc3, 0x08, 0xee, 0x70, 0x61, 0x40, 0x00, 0x00, 0x17, 0x61, 0xf3, 0x64, 0x00, 0x00, 0x61, 0xf3, 0x64, 0xfe, 0xfe, 0x10, 0x00, 0x00, 0x10, 0x3f, 0x00, 0x00, 0x00, 0x01, 0x10, 0x00, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x01, 0x61, 0x00, 0x00, 0x04, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; + +u8 l_Txa_swood_bTEX[] ALIGN_DECL(32) = { + 0x34, 0x66, 0x3C, 0xE7, 0xFF, 0xFF, 0x55, 0x80, 0x3C, 0x86, 0x3C, 0xE7, 0xFF, 0xFF, 0x5B, 0x95, + 0x2C, 0x05, 0x2B, 0xC4, 0x2D, 0xA0, 0xA0, 0x00, 0x3C, 0xC7, 0x2C, 0x05, 0x78, 0x57, 0x55, 0x55, + 0x00, 0x00, 0x3C, 0xE7, 0xFF, 0xFF, 0xFF, 0x7F, 0x3C, 0xA7, 0x3D, 0x07, 0xFF, 0xFF, 0xFA, 0x81, + 0x2C, 0x25, 0x3C, 0xC7, 0x5D, 0x55, 0x95, 0x24, 0x3C, 0xE7, 0x2B, 0xE5, 0x0A, 0x37, 0xD5, 0x75, + 0x3C, 0xC7, 0x3C, 0xE7, 0xFF, 0xFF, 0x3F, 0x4F, 0x00, 0x00, 0x3C, 0xC7, 0xFF, 0xFF, 0xFF, 0xFD, + 0x3C, 0xA7, 0x3C, 0xE7, 0xAF, 0x5D, 0x55, 0x14, 0x3C, 0xC7, 0x2C, 0x05, 0x00, 0x00, 0x0B, 0xD5, + 0x00, 0x00, 0x3C, 0xE7, 0xFF, 0xFF, 0xFF, 0x57, 0x3C, 0xE7, 0x3C, 0xE7, 0xFF, 0xFF, 0xFF, 0xFF, + 0x34, 0x46, 0x3C, 0xE7, 0x57, 0x57, 0x17, 0x17, 0x3C, 0xC7, 0x3C, 0xC7, 0xFF, 0xFF, 0xFF, 0xFF, + 0x3C, 0xE7, 0x3C, 0xE7, 0xFF, 0xFF, 0xFF, 0xFF, 0x3C, 0xE7, 0x3C, 0xE7, 0xFF, 0xFF, 0xFF, 0xFF, + 0x3C, 0xC7, 0x3C, 0xC7, 0xFF, 0xFF, 0xFF, 0xFF, 0x3C, 0xE7, 0x3C, 0xE7, 0xFF, 0xFF, 0xFF, 0xFF, + 0x3C, 0xE7, 0x3C, 0xE7, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x3C, 0xE7, 0xFF, 0xFD, 0xF5, 0xF5, + 0x3C, 0xC7, 0x3C, 0xE7, 0xFF, 0xFF, 0xFF, 0x95, 0x34, 0x25, 0x3C, 0xE7, 0xF5, 0xD5, 0xD6, 0xD4, + 0x3C, 0xC7, 0x3C, 0xE7, 0xFF, 0x7F, 0x87, 0x55, 0x3C, 0xE7, 0x3C, 0xE7, 0xFF, 0xFF, 0xFF, 0xFF, + 0x3C, 0xC7, 0x2B, 0xE5, 0xE0, 0x5C, 0x56, 0x5F, 0x3C, 0xA7, 0x3C, 0xE7, 0x7F, 0x7F, 0x5D, 0x95, + 0x3C, 0xE7, 0x3C, 0xE7, 0xFF, 0xFF, 0xFF, 0xFF, 0x3C, 0xE7, 0x3C, 0xE7, 0xFF, 0xFF, 0xFF, 0xFF, + 0x2C, 0x25, 0x3C, 0xC7, 0xF5, 0x55, 0x56, 0x40, 0x3C, 0xC7, 0x2B, 0xC5, 0x00, 0x00, 0xFF, 0x5D, + 0x2C, 0x25, 0x2B, 0xE5, 0xAE, 0x38, 0x03, 0x3E, 0x2C, 0x25, 0x2B, 0xC5, 0x80, 0xA0, 0x72, 0xAE, + 0x2C, 0x25, 0x2B, 0xC5, 0x2A, 0xE2, 0xE0, 0x62, 0x2C, 0x05, 0x23, 0x84, 0x05, 0xA5, 0x25, 0x85, + 0x2C, 0x25, 0x2B, 0xE5, 0xE1, 0x9A, 0xFC, 0x3A, 0x2C, 0x05, 0x2B, 0xE5, 0x82, 0xC3, 0x00, 0xC2, + 0x2C, 0x05, 0x23, 0x84, 0x80, 0x60, 0x58, 0x56, 0x2C, 0x05, 0x2B, 0xC5, 0x80, 0x03, 0xF0, 0x0E, + 0x3C, 0xE7, 0x2C, 0x05, 0x81, 0x85, 0xF7, 0x55, 0x34, 0x46, 0x2B, 0xE5, 0xFB, 0xE9, 0xFA, 0xB4, + 0x2C, 0x05, 0x23, 0x84, 0x00, 0x28, 0xD0, 0x58, 0x3C, 0xE7, 0x2B, 0xE5, 0x54, 0x5C, 0x77, 0x5D, + 0x34, 0x86, 0x3C, 0xE7, 0x17, 0x17, 0x9F, 0x5F, 0x3C, 0xE7, 0x3C, 0xE7, 0xFF, 0xFF, 0xFF, 0xFF, + 0x2C, 0x05, 0x3C, 0xC7, 0x5F, 0x55, 0x95, 0x01, 0x00, 0x00, 0x3C, 0xE7, 0xFD, 0x5D, 0x5F, 0x5F, + 0x3C, 0xC7, 0x3C, 0xE7, 0xFF, 0xFF, 0xF9, 0x55, 0x3C, 0xC7, 0x3C, 0xE7, 0xFD, 0xFD, 0x59, 0x41, + 0x3C, 0xE7, 0x2B, 0xC5, 0x00, 0x0F, 0x0D, 0x01, 0x3C, 0xA7, 0x23, 0x84, 0x00, 0xFA, 0xEF, 0xF7, + 0x3C, 0xE7, 0x2C, 0x05, 0x00, 0x26, 0x25, 0x25, 0x3C, 0xE7, 0x2C, 0x05, 0x01, 0x0D, 0xF5, 0x55, + 0x3D, 0x07, 0x2C, 0x05, 0x25, 0xF5, 0x55, 0x55, 0x2C, 0x05, 0x23, 0x84, 0x00, 0x20, 0x00, 0x60, + 0x2C, 0x05, 0x2B, 0xC5, 0x08, 0x00, 0x60, 0x82, 0x3C, 0xC7, 0x2B, 0xE5, 0xC2, 0x6D, 0x55, 0xF5, + 0x2C, 0x05, 0x2B, 0xC5, 0x30, 0x02, 0x02, 0x00, 0x2C, 0x05, 0x23, 0x84, 0x0A, 0x0D, 0x0D, 0x15, + 0x2C, 0x25, 0x2B, 0xE5, 0x98, 0x5B, 0xA3, 0x89, 0x2C, 0x05, 0x2B, 0xC5, 0x20, 0x00, 0x02, 0x0C, + 0x2C, 0x05, 0x23, 0x64, 0xA8, 0x78, 0x58, 0xFC, 0x2C, 0x05, 0x2B, 0xE5, 0x20, 0x90, 0x09, 0x02, + 0x2C, 0x25, 0x2B, 0xC5, 0xA2, 0xB8, 0x98, 0x02, 0x2C, 0x25, 0x23, 0x84, 0x85, 0x2D, 0x3D, 0x89, + 0x2C, 0x25, 0x2B, 0xE5, 0x26, 0x76, 0x7A, 0x82, 0x2C, 0x05, 0x2B, 0xA4, 0x01, 0x02, 0x02, 0x02, + 0x2B, 0x84, 0x23, 0x64, 0x08, 0x00, 0x20, 0x00, 0x2C, 0x05, 0x23, 0x84, 0x03, 0x81, 0x49, 0x6D, + 0x23, 0x84, 0x23, 0x64, 0x00, 0x00, 0x02, 0x22, 0x23, 0x84, 0x23, 0x64, 0x02, 0x00, 0x00, 0x00, + 0x2C, 0x25, 0x23, 0x84, 0x58, 0x7A, 0x7A, 0x70, 0x2C, 0x05, 0x2B, 0xE5, 0xA0, 0x80, 0x00, 0x23, + 0x2C, 0x25, 0x23, 0x84, 0x78, 0x68, 0x60, 0xEF, 0x2C, 0x05, 0x2B, 0xC5, 0x02, 0x98, 0x20, 0x55, + 0x3C, 0xC7, 0x2C, 0x05, 0x5C, 0x50, 0x70, 0x40, 0x3C, 0xC7, 0x3C, 0xE7, 0x7F, 0xBF, 0xFF, 0x5F, + 0x3C, 0xC7, 0x2C, 0x05, 0x78, 0x55, 0x55, 0x55, 0x3C, 0xE7, 0x2B, 0xC5, 0x00, 0xE0, 0x58, 0xE0, + 0x34, 0x46, 0x3C, 0xE7, 0xD4, 0xF5, 0xFD, 0xFD, 0x3C, 0xE7, 0x2C, 0x05, 0x55, 0xD5, 0x0B, 0x03, + 0x2B, 0xE5, 0x3C, 0xE7, 0xD5, 0x58, 0x58, 0x56, 0x34, 0x46, 0x2B, 0xE5, 0x03, 0x5F, 0x7D, 0x7D, + 0x2C, 0x05, 0x2B, 0xC5, 0x03, 0x08, 0x00, 0x82, 0x2C, 0x05, 0x23, 0x84, 0x5C, 0x56, 0xD5, 0xD5, + 0x2C, 0x05, 0x2B, 0xE5, 0x02, 0x08, 0x88, 0x00, 0x2C, 0x25, 0x23, 0x84, 0x95, 0x35, 0x25, 0x2D, + 0x2C, 0x05, 0x23, 0x84, 0x08, 0x02, 0x03, 0x4D, 0x2B, 0xC5, 0x23, 0x84, 0x17, 0xFF, 0xFF, 0x75, + 0x2B, 0xC5, 0x23, 0x64, 0x8B, 0xFF, 0xFF, 0xAD, 0x23, 0x84, 0x23, 0x64, 0x00, 0x00, 0x08, 0x08, + 0x2C, 0x05, 0x23, 0x84, 0x5C, 0x5C, 0x58, 0x70, 0x2C, 0x05, 0x2B, 0xC5, 0xE0, 0x08, 0x00, 0x08, + 0x2C, 0x05, 0x23, 0x84, 0x60, 0xC2, 0xC0, 0x80, 0x2C, 0x25, 0x2B, 0xC5, 0x0A, 0x0A, 0xCA, 0x88, + 0x2C, 0x05, 0x2B, 0xC5, 0x02, 0xA0, 0x00, 0x62, 0x2C, 0x05, 0x2B, 0xE5, 0x02, 0x00, 0xF0, 0x51, + 0x2C, 0x25, 0x2B, 0xC5, 0x60, 0x0B, 0x28, 0xF0, 0x2C, 0x25, 0x2B, 0xC5, 0x8B, 0x7E, 0xAA, 0x82, + 0x2C, 0x05, 0x23, 0x84, 0xD5, 0x35, 0x25, 0x09, 0x23, 0x84, 0x23, 0x64, 0x80, 0x00, 0x00, 0x00, + 0x2C, 0x05, 0x23, 0x84, 0x01, 0x02, 0x00, 0x03, 0x2B, 0xE5, 0x23, 0x84, 0x55, 0x57, 0xD5, 0x15, + 0x23, 0x84, 0x23, 0x64, 0x02, 0x00, 0x00, 0x80, 0x2C, 0x05, 0x23, 0x84, 0x55, 0x56, 0x50, 0x80, + 0x2C, 0x05, 0x23, 0x84, 0x78, 0x70, 0x50, 0x58, 0x2C, 0x05, 0x2B, 0xC5, 0x0E, 0x00, 0x00, 0x02, + 0x34, 0x86, 0x2B, 0xE5, 0x5E, 0xDC, 0x7D, 0x5F, 0x2C, 0x25, 0x3D, 0x07, 0x97, 0x7F, 0x9F, 0x27, + 0x34, 0x46, 0x2B, 0xC5, 0xA7, 0xFA, 0xDB, 0xE2, 0x3C, 0xE7, 0x2C, 0x05, 0x70, 0x58, 0x5C, 0x5C, + 0x3C, 0xC7, 0x3C, 0xE7, 0xD5, 0xFD, 0xFF, 0xFF, 0x2C, 0x05, 0x3C, 0xE7, 0x80, 0x58, 0xD4, 0x50, + 0x3C, 0xC7, 0x3C, 0xE7, 0xFF, 0x7E, 0x7D, 0x3D, 0x3C, 0xE7, 0x2C, 0x05, 0x25, 0x25, 0x3D, 0x00, + 0x2C, 0x05, 0x23, 0x84, 0x00, 0x00, 0x0B, 0x35, 0x2C, 0x05, 0x23, 0x84, 0x09, 0xB5, 0x55, 0x55, + 0x3C, 0x86, 0x23, 0x84, 0x95, 0xEF, 0xEE, 0x00, 0x2C, 0x05, 0x23, 0x84, 0x75, 0x05, 0x0D, 0x05, + 0x23, 0x84, 0x23, 0x64, 0x00, 0x80, 0x80, 0x02, 0x2B, 0xE5, 0x23, 0x84, 0x57, 0x54, 0xDC, 0x50, + 0x23, 0x84, 0x23, 0x64, 0x02, 0x00, 0x80, 0x02, 0x2C, 0x05, 0x23, 0x64, 0xF0, 0x60, 0x40, 0xC0, + 0x2C, 0x25, 0x2B, 0xE5, 0x0A, 0xBA, 0xAB, 0xB8, 0x8B, 0x28, 0x2C, 0x05, 0x55, 0x57, 0x58, 0xE0, + 0x83, 0x28, 0x2C, 0x05, 0x57, 0x5C, 0x60, 0x80, 0x8B, 0x28, 0x83, 0x48, 0x4F, 0xBF, 0xFF, 0xFF, + 0x2C, 0x25, 0x2B, 0xA4, 0xE0, 0x2A, 0xAA, 0xA2, 0x2C, 0x25, 0x2B, 0xE5, 0x3C, 0x3E, 0x16, 0x3B, + 0x2C, 0x05, 0x2B, 0xA4, 0x08, 0x24, 0x08, 0x00, 0x2C, 0x05, 0x2B, 0xC5, 0x03, 0x00, 0x00, 0x28, + 0x2C, 0x05, 0x2B, 0xC5, 0x07, 0x00, 0x00, 0x02, 0x2C, 0x05, 0x23, 0x84, 0x35, 0x25, 0x0D, 0x09, + 0x2C, 0x25, 0x2B, 0xE5, 0x82, 0x82, 0xEB, 0xA2, 0x2C, 0x05, 0x23, 0x84, 0x81, 0x02, 0x08, 0x00, + 0x2C, 0x25, 0x23, 0x84, 0x5C, 0x5C, 0x54, 0x56, 0x2C, 0x05, 0x2B, 0xC5, 0x32, 0x02, 0x0E, 0x80, + 0x2B, 0xE5, 0x23, 0x84, 0x57, 0x54, 0x94, 0x3C, 0x3C, 0xA7, 0x2B, 0xE5, 0x75, 0xD6, 0x58, 0xE0, + 0x2C, 0x05, 0x3C, 0xE7, 0x25, 0x25, 0x17, 0x17, 0x3C, 0xC7, 0x3C, 0xE7, 0x85, 0x55, 0xFF, 0xFF, + 0x3C, 0xC7, 0x3C, 0xE7, 0x1F, 0x5F, 0xBF, 0x5F, 0x3C, 0xE7, 0x3D, 0x07, 0xFF, 0xFF, 0xFC, 0xFD, + 0x3C, 0xC7, 0x3C, 0xE7, 0x3F, 0x7F, 0xFF, 0xFF, 0x3C, 0xC7, 0x3C, 0xE7, 0x55, 0xFF, 0xFF, 0xFF, + 0x2B, 0xE5, 0x3C, 0xC7, 0xFF, 0x57, 0x55, 0x49, 0x00, 0x00, 0x3C, 0xE7, 0xFF, 0xFF, 0xFF, 0x7F, + 0x3C, 0xA7, 0x3C, 0xE7, 0x5D, 0xFE, 0xF4, 0xF6, 0x2C, 0x25, 0x23, 0x84, 0x25, 0x25, 0x25, 0x25, + 0x3C, 0x86, 0x3C, 0xE7, 0xF4, 0xF6, 0xFE, 0x55, 0x3C, 0xC7, 0x23, 0x84, 0xF5, 0xFD, 0xBD, 0x2F, + 0x2C, 0x05, 0x23, 0x84, 0x55, 0x56, 0x5C, 0x58, 0x8B, 0x28, 0x33, 0xE5, 0x56, 0x58, 0x60, 0x80, + 0x83, 0x28, 0x2B, 0xA4, 0x56, 0x58, 0x60, 0xC0, 0xA4, 0x2C, 0x83, 0x28, 0x55, 0x55, 0x55, 0x54, + 0x8B, 0x49, 0x83, 0x08, 0x80, 0x00, 0x02, 0x0C, 0xA4, 0x2C, 0x83, 0x28, 0x55, 0x55, 0x55, 0x25, + 0xEE, 0x73, 0x83, 0x28, 0x56, 0x70, 0xC0, 0x00, 0xEE, 0x73, 0x8B, 0x48, 0x0D, 0x01, 0x01, 0x01, + 0x2C, 0x05, 0x2B, 0xC5, 0x07, 0x28, 0x80, 0x00, 0x2C, 0x25, 0x2B, 0xE5, 0x28, 0x28, 0xD6, 0x6A, + 0x2C, 0x25, 0x2B, 0xE5, 0x8A, 0xEA, 0xE8, 0xE0, 0x2C, 0x05, 0x2B, 0xE5, 0x00, 0x80, 0xA2, 0xB0, + 0x2C, 0x05, 0x2B, 0xE5, 0x02, 0x20, 0x08, 0x01, 0x2C, 0x25, 0x2B, 0xC5, 0x2A, 0xA5, 0x8A, 0x68, + 0x2C, 0x05, 0x2B, 0xE5, 0x20, 0x02, 0x03, 0x20, 0x2C, 0x05, 0x2B, 0xC5, 0x08, 0x02, 0x20, 0xE0, + 0x2C, 0x05, 0x2B, 0xC5, 0x00, 0x00, 0x09, 0x02, 0x34, 0x25, 0x2B, 0xE5, 0x00, 0x28, 0xE4, 0x8F, + 0x2C, 0x05, 0x2B, 0xE5, 0x0A, 0xC1, 0x88, 0x20, 0x2C, 0x05, 0x2B, 0xA5, 0x02, 0xC0, 0x0A, 0x0D, + 0x3C, 0xE7, 0x2C, 0x05, 0x80, 0x70, 0x56, 0x75, 0x2C, 0x05, 0x3C, 0xE7, 0xF5, 0x76, 0x54, 0x58, + 0x2C, 0x05, 0x2B, 0xE5, 0x82, 0x22, 0x00, 0x00, 0x3C, 0xA7, 0x2C, 0x05, 0x85, 0x55, 0x5D, 0x55, + 0x34, 0x86, 0x2B, 0xE5, 0xF4, 0x5C, 0xDE, 0xDF, 0x34, 0x46, 0x3C, 0xE7, 0x7D, 0x55, 0x55, 0x54, + 0x2C, 0x05, 0x2B, 0xE5, 0x0A, 0xE0, 0x0E, 0x08, 0x45, 0x07, 0x2C, 0x05, 0x8D, 0xE5, 0x55, 0x55, + 0x3C, 0xE7, 0x2C, 0x05, 0x02, 0x2D, 0xD7, 0x55, 0x83, 0x28, 0x2C, 0x25, 0x57, 0x5C, 0x70, 0x40, + 0x8B, 0x28, 0x2B, 0xE5, 0x55, 0x56, 0x5C, 0x58, 0x83, 0x28, 0x6B, 0x67, 0x40, 0x00, 0x00, 0x00, + 0x93, 0x89, 0x83, 0x07, 0xFF, 0xFF, 0xFD, 0xFC, 0xEE, 0x73, 0x83, 0x08, 0x5C, 0x70, 0xC0, 0x00, + 0xBC, 0xCE, 0x83, 0x28, 0x54, 0x54, 0x57, 0x55, 0xEE, 0x74, 0x83, 0x28, 0x00, 0x00, 0x80, 0x5F, + 0xEE, 0x94, 0xE6, 0x52, 0x1E, 0x60, 0x80, 0x02, 0xEE, 0x93, 0x83, 0x08, 0x09, 0x09, 0x09, 0x09, + 0xEE, 0x74, 0xAC, 0x8D, 0x00, 0x00, 0x00, 0x55, 0xEE, 0x74, 0x83, 0x08, 0x0D, 0x0D, 0x25, 0xD5, + 0x2C, 0x25, 0x2B, 0xC5, 0x0B, 0xAB, 0x98, 0x08, 0x2C, 0x25, 0x2B, 0xE5, 0xAF, 0xA8, 0x22, 0xAC, + 0x2C, 0x25, 0x2B, 0xE5, 0xEE, 0x7B, 0xDA, 0xAC, 0x2C, 0x05, 0x2B, 0xC5, 0x1C, 0x22, 0x0C, 0x0A, + 0x2C, 0x05, 0x2B, 0xE5, 0x01, 0x50, 0xE2, 0x80, 0x2C, 0x05, 0x2B, 0xE5, 0x80, 0x20, 0xE2, 0x8B, + 0x2C, 0x25, 0x2B, 0xE5, 0x6E, 0xA6, 0xB8, 0x8A, 0x2C, 0x25, 0x2B, 0xC5, 0x3A, 0x3E, 0x0A, 0x00, + 0x2C, 0x05, 0x2B, 0xA4, 0x20, 0x00, 0x20, 0x24, 0x2C, 0x05, 0x23, 0x84, 0x01, 0x23, 0x03, 0x08, + 0x2C, 0x25, 0x2B, 0xE5, 0x96, 0xF0, 0xA0, 0x8F, 0x2C, 0x05, 0x2B, 0xC5, 0x40, 0x80, 0x02, 0x02, + 0x2B, 0xE5, 0x23, 0x84, 0xC0, 0x70, 0x5C, 0xF6, 0x2C, 0x25, 0x2B, 0xE5, 0x28, 0xBE, 0xB8, 0xAD, + 0x2B, 0xE5, 0x23, 0x84, 0x9D, 0x35, 0x25, 0x07, 0x2C, 0x05, 0x23, 0x84, 0x80, 0x40, 0x70, 0x70, + 0x2C, 0x05, 0x2B, 0xC5, 0x00, 0x92, 0x30, 0x00, 0x2C, 0x05, 0x23, 0x64, 0x02, 0x8B, 0x2D, 0xD5, + 0x2C, 0x05, 0x2B, 0x84, 0x00, 0x03, 0x09, 0x0D, 0x2C, 0x25, 0x23, 0x84, 0x57, 0x57, 0x56, 0x5C, + 0x5B, 0x87, 0x2B, 0xE5, 0x5C, 0xD5, 0x55, 0x55, 0x8B, 0x48, 0x2C, 0x05, 0x80, 0x58, 0x5C, 0x5C, + 0x2C, 0x05, 0x2B, 0xC5, 0x00, 0x87, 0x00, 0x20, 0xA3, 0xA8, 0x2C, 0x05, 0x58, 0x55, 0x55, 0x5C, + 0xA3, 0xC8, 0x83, 0x28, 0x55, 0x55, 0xFF, 0x00, 0xA3, 0xC8, 0x83, 0x28, 0x55, 0x55, 0xFF, 0x00, + 0xA3, 0xC8, 0x7A, 0xE7, 0xAA, 0x55, 0xFF, 0x00, 0xA3, 0xC8, 0x7A, 0xE7, 0xAA, 0x55, 0xFF, 0x00, + 0xA3, 0xC8, 0x83, 0x28, 0x55, 0x55, 0xFF, 0x00, 0xA3, 0xC8, 0x83, 0x28, 0x55, 0x55, 0xFF, 0x00, + 0xA3, 0xC8, 0x7A, 0xE7, 0xAA, 0x55, 0xFF, 0x00, 0xA3, 0xA8, 0x7A, 0xE7, 0xAA, 0x55, 0xFF, 0x00, + 0x2C, 0x25, 0x2B, 0xE5, 0xAA, 0x51, 0xA1, 0xE1, 0x2C, 0x25, 0x2B, 0xE5, 0x52, 0xA0, 0xC2, 0x40, + 0x2C, 0x25, 0x2B, 0x84, 0x82, 0x02, 0xA0, 0x70, 0x2C, 0x25, 0x2B, 0xE5, 0x82, 0xE3, 0xAA, 0x08, + 0x2C, 0x25, 0x2B, 0xC5, 0x2B, 0xBE, 0xAA, 0x08, 0x2C, 0x05, 0x2B, 0xC5, 0x0A, 0xC3, 0x88, 0x08, + 0x2C, 0x05, 0x2B, 0xE5, 0x80, 0x4F, 0x8A, 0x01, 0x2C, 0x25, 0x2B, 0xE5, 0x06, 0x0A, 0xCF, 0xCD, + 0x2C, 0x25, 0x2B, 0xE5, 0xA6, 0xCA, 0x82, 0x2A, 0x2C, 0x05, 0x2B, 0xC5, 0x20, 0x00, 0x0A, 0x04, + 0x2C, 0x25, 0x2B, 0xE5, 0xBA, 0xB0, 0x8A, 0x8F, 0x2C, 0x05, 0x2B, 0xE5, 0x00, 0x38, 0x14, 0x02, + 0x2C, 0x25, 0x23, 0x84, 0x05, 0x8D, 0x89, 0x01, 0x2C, 0x05, 0x23, 0x84, 0x5C, 0x54, 0xD6, 0x55, + 0x2C, 0x05, 0x2B, 0xE5, 0x21, 0x00, 0x80, 0x42, 0x2C, 0x05, 0x23, 0x84, 0x55, 0x95, 0x35, 0x25, + 0x2B, 0xE5, 0x23, 0x84, 0x05, 0x35, 0x1D, 0xD5, 0x2C, 0x25, 0x23, 0x84, 0x58, 0x70, 0x60, 0xC0, + 0x2C, 0x05, 0x23, 0x84, 0x57, 0x5C, 0x58, 0x70, 0x2C, 0x25, 0x2B, 0xE5, 0xEB, 0x26, 0x0A, 0x01, + 0x2C, 0x25, 0x2B, 0xC5, 0xBA, 0x22, 0x2A, 0xA8, 0xAB, 0xA8, 0x2C, 0x05, 0x5C, 0x55, 0x55, 0x5C, + 0x2C, 0x05, 0x2B, 0xC5, 0x88, 0x08, 0x38, 0x2C, 0xA3, 0xA8, 0x2C, 0x05, 0x58, 0x55, 0x55, 0x55, + 0xA3, 0xC8, 0x7A, 0xE7, 0xAA, 0x55, 0xFF, 0x00, 0xA3, 0xC8, 0x7A, 0xE7, 0xAA, 0x55, 0xFF, 0x00, + 0x93, 0x47, 0x73, 0x07, 0x00, 0x7F, 0xAA, 0xAA, 0x93, 0x47, 0x7A, 0xE7, 0x00, 0x55, 0xAA, 0xAA, + 0xA3, 0xC8, 0x7A, 0xE7, 0xAA, 0x55, 0xFF, 0x00, 0xA3, 0xC8, 0x7A, 0xE7, 0xAA, 0x55, 0xFF, 0x00, + 0x93, 0x47, 0x7A, 0xE7, 0x00, 0x55, 0xAA, 0xAA, 0x93, 0x47, 0x7A, 0xE7, 0x00, 0x55, 0xAA, 0xAA, +}; + +Vec l_pos[] = { + {0.000022f, 14.922843f, -89.982368f}, + {-77.927017f, 14.922843f, -44.991203f}, + {-77.927025f, 14.922843f, 44.991173f}, + {-0.000008f, 14.922843f, 89.982353f}, + {77.92701f, 14.922843f, 44.99118f}, + {77.92701f, 14.922843f, -44.99118f}, + {0.0f, 86.107872f, 0.0f}, + {48.073795f, 32.79335f, -83.266212f}, + {-48.073753f, 32.79335f, -83.266228f}, + {-96.147537f, 32.79335f, -0.000015f}, + {-48.073772f, 32.79335f, 83.266212f}, + {48.073757f, 32.79335f, 83.266212f}, + {96.14753f, 32.79335f, 0.0f}, + {0.0f, 94.79158f, 0.0f}, + {46.784023f, 67.793831f, -81.032257f}, + {-46.783981f, 67.793831f, -81.032272f}, + {-93.568001f, 67.793831f, -0.000015f}, + {-46.784004f, 67.793831f, 81.032257f}, + {46.783993f, 67.793831f, 81.032257f}, + {93.567993f, 67.793831f, 0.0f}, + {0.0f, 105.391602f, 0.0f}, + {28.882326f, 98.615974f, -50.02562f}, + {-28.882303f, 98.615974f, -50.025642f}, + {-57.764622f, 98.615974f, -0.000009f}, + {-28.882315f, 98.615974f, 50.02562f}, + {28.882305f, 98.615974f, 50.02562f}, + {57.764614f, 98.615974f, 0.0f}, + {0.0f, 109.061028f, 0.0f}, + {41.2393f, 1.173791f, -71.42852f}, + {-41.239262f, 1.173791f, -71.428535f}, + {-82.478554f, 1.173791f, -0.000013f}, + {-41.239281f, 1.173791f, 71.42852f}, + {41.239265f, 1.173791f, 71.42852f}, + {82.478539f, 1.173791f, 0.0f}, + {0.0f, 70.268173f, 0.0f}, + {0.000025f, 50.810505f, -97.695068f}, + {-84.6064f, 50.810505f, -48.847549f}, + {-84.606422f, 50.810505f, 48.847519f}, + {-0.00001f, 50.810505f, 97.695053f}, + {84.6064f, 50.810505f, 48.84753f}, + {84.6064f, 50.810505f, -48.847527f}, + {0.0f, 102.071098f, 0.0f}, + {0.000021f, 82.279785f, -80.035629f}, + {-69.312889f, 82.279785f, -40.017834f}, + {-69.312904f, 82.279785f, 40.017811f}, + {-0.000008f, 82.279785f, 80.035637f}, + {69.312889f, 82.279785f, 40.017818f}, + {69.312889f, 82.279785f, -40.017815f}, + {0.0f, 109.022469f, 0.0f}, + {3.255973f, 0.0f, -5.921541f}, + {3.255973f, 0.0f, 5.921541f}, + {-5.16166f, 0.0f, 0.0f}, + {0.114389f, 11.775252f, -0.249098f}, + {-0.862972f, 19.754194f, 8.598756f}, + {-9.357565f, 19.58444f, 11.268269f}, + {-8.081571f, 19.758448f, 3.069652f}, + {-2.221876f, 19.009287f, -8.072796f}, + {-9.50218f, 19.009287f, -4.024319f}, + {-8.414586f, 19.009287f, -12.021413f}, + {13.461897f, 22.025139f, 1.575613f}, + {5.560989f, 22.025139f, 4.229024f}, + {5.656257f, 22.025139f, -3.749505f}, +}; + +GXColor l_color[] = { + {0x7F, 0x7F, 0x7F, 0xFF}, + {0x98, 0x98, 0x99, 0xFF}, + {0x99, 0x99, 0x99, 0xFF}, + {0xCC, 0xCC, 0xCC, 0xFF}, + {0xFF, 0xFF, 0xFF, 0xFF}, + {0x66, 0x66, 0x66, 0xFF}, + {0xB2, 0xB2, 0xB2, 0xFF}, + {0xE5, 0xE5, 0xE5, 0xFF}, + {0xF4, 0xF4, 0xF4, 0xFF}, + {0xAB, 0xAB, 0xAB, 0xFF}, + {0xFC, 0xFC, 0xFC, 0xFF}, + {0xF7, 0xF7, 0xF7, 0xFF}, + {0xF8, 0xF8, 0xF8, 0xFF}, + {0xC3, 0xC3, 0xC3, 0xFF}, + {0xA1, 0xA1, 0xA1, 0xFF}, + {0xF5, 0xF5, 0xF5, 0xFF}, + {0xFB, 0xFB, 0xFB, 0xFF}, + {0x73, 0x73, 0x73, 0xFF}, + {0x43, 0x43, 0x43, 0xFF}, + {0x9A, 0x9A, 0x9A, 0xFF}, +}; + +cXy l_texCoord[] = { + {0.5f, 1.0f}, + {1.0f, 0.0f}, + {0.0f, 0.0f}, + {1.0f, 0.455793f}, + {1.0f, 0.75f}, + {0.705793f, 0.75f}, + {0.958472f, 1.0f}, + {0.792867f, 0.75f}, + {0.958472f, 0.75f}, + {0.792867f, 1.0f}, +}; + +u8 l_Oba_swood_bDL[] ALIGN_DECL(32) = { + 0x98, 0x00, 0x05, 0x2A, 0x07, 0x02, 0x2F, 0x07, 0x01, 0x30, 0x07, 0x00, 0x2E, 0x07, 0x02, 0x2D, + 0x07, 0x01, 0x98, 0x00, 0x05, 0x2D, 0x07, 0x01, 0x2C, 0x07, 0x02, 0x30, 0x07, 0x00, 0x2B, 0x07, + 0x01, 0x2A, 0x07, 0x02, 0x98, 0x00, 0x05, 0x23, 0x06, 0x02, 0x28, 0x06, 0x01, 0x29, 0x06, 0x00, + 0x27, 0x06, 0x02, 0x26, 0x06, 0x01, 0x98, 0x00, 0x05, 0x26, 0x06, 0x01, 0x25, 0x06, 0x02, 0x29, + 0x06, 0x00, 0x24, 0x06, 0x01, 0x23, 0x06, 0x02, 0x98, 0x00, 0x05, 0x1C, 0x05, 0x02, 0x21, 0x05, + 0x01, 0x22, 0x05, 0x00, 0x20, 0x05, 0x02, 0x1F, 0x05, 0x01, 0x98, 0x00, 0x05, 0x1F, 0x05, 0x01, + 0x1E, 0x05, 0x02, 0x22, 0x05, 0x00, 0x1D, 0x05, 0x01, 0x1C, 0x05, 0x02, 0x98, 0x00, 0x05, 0x15, + 0x04, 0x02, 0x1A, 0x04, 0x01, 0x1B, 0x04, 0x00, 0x19, 0x04, 0x02, 0x18, 0x04, 0x01, 0x98, 0x00, + 0x05, 0x18, 0x04, 0x01, 0x17, 0x04, 0x02, 0x1B, 0x04, 0x00, 0x16, 0x04, 0x01, 0x15, 0x04, 0x02, + 0x98, 0x00, 0x05, 0x0E, 0x03, 0x02, 0x13, 0x03, 0x01, 0x14, 0x03, 0x00, 0x12, 0x03, 0x02, 0x11, + 0x03, 0x01, 0x98, 0x00, 0x05, 0x11, 0x03, 0x01, 0x10, 0x03, 0x02, 0x14, 0x03, 0x00, 0x0F, 0x03, + 0x01, 0x0E, 0x03, 0x02, 0x98, 0x00, 0x05, 0x07, 0x02, 0x02, 0x0C, 0x02, 0x01, 0x0D, 0x01, 0x00, + 0x0B, 0x02, 0x02, 0x0A, 0x02, 0x01, 0x98, 0x00, 0x05, 0x0A, 0x02, 0x01, 0x09, 0x02, 0x02, 0x0D, + 0x01, 0x00, 0x08, 0x02, 0x01, 0x07, 0x02, 0x02, 0x98, 0x00, 0x05, 0x00, 0x00, 0x02, 0x05, 0x00, + 0x01, 0x06, 0x00, 0x00, 0x04, 0x00, 0x02, 0x03, 0x00, 0x01, 0x98, 0x00, 0x05, 0x03, 0x00, 0x01, + 0x02, 0x00, 0x02, 0x06, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +}; + +u8 l_Oba_swood_b_cutDL[] ALIGN_DECL(32) = { + 0x98, 0x00, 0x04, 0x31, 0x13, 0x06, 0x32, 0x11, 0x09, 0x3B, 0x0D, 0x08, 0x3C, 0x0B, 0x07, 0x98, + 0x00, 0x04, 0x3B, 0x0D, 0x07, 0x3D, 0x0C, 0x08, 0x31, 0x13, 0x09, 0x34, 0x00, 0x06, 0x98, 0x00, + 0x04, 0x31, 0x13, 0x06, 0x34, 0x00, 0x09, 0x38, 0x0A, 0x08, 0x39, 0x08, 0x07, 0x98, 0x00, 0x04, + 0x33, 0x12, 0x06, 0x31, 0x13, 0x09, 0x3A, 0x09, 0x08, 0x38, 0x0A, 0x07, 0x98, 0x00, 0x04, 0x3A, + 0x09, 0x07, 0x39, 0x08, 0x08, 0x33, 0x12, 0x09, 0x34, 0x00, 0x06, 0x98, 0x00, 0x04, 0x36, 0x0E, + 0x08, 0x33, 0x12, 0x06, 0x37, 0x0F, 0x07, 0x34, 0x00, 0x09, 0x98, 0x00, 0x04, 0x33, 0x12, 0x09, + 0x36, 0x0E, 0x07, 0x32, 0x11, 0x06, 0x35, 0x10, 0x08, 0x98, 0x00, 0x04, 0x32, 0x11, 0x06, 0x34, + 0x00, 0x09, 0x3C, 0x0B, 0x08, 0x3D, 0x0C, 0x07, 0x98, 0x00, 0x04, 0x32, 0x11, 0x09, 0x35, 0x10, + 0x07, 0x34, 0x00, 0x06, 0x37, 0x0F, 0x08, 0x98, 0x00, 0x03, 0x36, 0x0E, 0x03, 0x37, 0x0F, 0x04, + 0x35, 0x10, 0x05, 0x98, 0x00, 0x03, 0x3C, 0x0B, 0x03, 0x3D, 0x0C, 0x04, 0x3B, 0x0D, 0x05, 0x98, + 0x00, 0x03, 0x39, 0x08, 0x03, 0x3A, 0x09, 0x04, 0x38, 0x0A, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +}; + +u8 l_matDL[] ALIGN_DECL(32) = { + 0x61, 0x80, 0x00, 0x01, 0x3A, 0x61, 0x84, 0x00, 0x00, 0x00, 0x61, 0x88, 0xE0, 0xFC, 0x3F, 0x61, + 0x94, + IMAGE_ADDR(&l_Txa_swood_bTEX), + 0x61, 0x30, 0x00, 0x00, 0x40, 0x61, 0x31, 0x00, 0x00, 0x40, 0x10, 0x00, + 0x00, 0x10, 0x40, 0xFF, 0xFF, 0x42, 0x80, 0x08, 0x30, 0x3C, 0xF3, 0xCF, 0x00, 0x10, 0x00, 0x00, + 0x10, 0x18, 0x3C, 0xF3, 0xCF, 0x00, 0x10, 0x00, 0x00, 0x10, 0x0E, 0x00, 0x00, 0x05, 0x43, 0x61, + 0x28, 0x3C, 0x00, 0x00, 0x61, 0xC0, 0x08, 0x24, 0xAF, 0x61, 0xC1, 0x08, 0xFF, 0xF0, 0x61, 0x28, + 0x3C, 0x00, 0x00, 0x61, 0xC2, 0x08, 0xF0, 0x8F, 0x61, 0xC3, 0x08, 0xEE, 0x70, 0x61, 0x40, 0x00, + 0x00, 0x17, 0x61, 0xF3, 0x64, 0x00, 0x00, 0x61, 0xF3, 0x64, 0xFE, 0xFE, 0x10, 0x00, 0x00, 0x10, + 0x3F, 0x00, 0x00, 0x00, 0x01, 0x10, 0x00, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x01, 0x61, 0x00, + 0x00, 0x04, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, +}; // .rodata -const Attr_c L_attr = { - {{{ - 0x00C8, - 0x50, - 0x5DC, - 0x32, - 0.6 - }, { - 0x00B4, - 0x1E, - 0xC80, - 0xA, - 0.2, - }}, {{ - 0x01f4, - 0x96, - 0x4B0, - 0x96, - 0.6, - }, { - 0x02BC, - 0x32, - 0x898, - 0x1E, - 0.2, - }}, {{ - 0x0258, - 0xC8, - 0x898, - 0x12C, - 0.6, - }, { - 0x01BC, - 0x1E, - 0xFA0, - 0x32, - 0.2, - }}, {{ - 0x0258, - 0xC8, - 0x1838, - 0x1F4, - 0.6, - }, { - 0x01BC, - 0x1E, - 0x3E8, - 0x32, - 0.2, - }} - }, 0x14, 0x14, 0x0e, 18.0f, -3.0f, 2.5f, 200, 1.5f, 0.3f, 80.0f, 15.0f, 80.0f, 15.0f, 100.0f, 40.0f, 0x23, 0x80 +const Attr_c L_attr = { + /* kSways */ { + /* SWAY_LIGHT */ { + { + /* phaseVelY */ 0x00C8, + /* ampY */ 0x0050, + /* phaseVelX */ 0x05DC, + /* ampX */ 0x0032, + /* phaseBiasX */ 0.6f, + }, + { + /* phaseVelY */ 0x00B4, + /* ampY */ 0x001E, + /* phaseVelX */ 0x0C80, + /* ampX */ 0x000A, + /* phaseBiasX */ 0.2f, + }, + }, + /* SWAY_MEDIUM */ { + { + /* phaseVelY */ 0x01F4, + /* ampY */ 0x0096, + /* phaseVelX */ 0x04B0, + /* ampX */ 0x0096, + /* phaseBiasX */ 0.6f, + }, + { + /* phaseVelY */ 0x02BC, + /* ampY */ 0x0032, + /* phaseVelX */ 0x0898, + /* ampX */ 0x001E, + /* phaseBiasX */ 0.2f, + }, + }, + /* SWAY_STRONG */ { + { + /* phaseVelY */ 0x0258, + /* ampY */ 0x00C8, + /* phaseVelX */ 0x0898, + /* ampX */ 0x012C, + /* phaseBiasX */ 0.6f, + }, + { + /* phaseVelY */ 0x01BC, + /* ampY */ 0x001E, + /* phaseVelX */ 0x0FA0, + /* ampX */ 0x0032, + /* phaseBiasX */ 0.2f, + }, + }, + /* SWAY_PUSH */ { + { + /* phaseVelY */ 0x0258, + /* ampY */ 0x00C8, + /* phaseVelX */ 0x1838, + /* ampX */ 0x01F4, + /* phaseBiasX */ 0.6f, + }, + { + /* phaseVelY */ 0x01BC, + /* ampY */ 0x001E, + /* phaseVelX */ 0x03E8, + /* ampX */ 0x0032, + /* phaseBiasX */ 0.2f, + }, + }, + }, + /* kCutCooldown */ 0x14, + /* kCutFadeStart */ 0x14, + /* kCutAlphaFadeSpeed */ 0x0E, + /* kCutInitVelY */ 18.0f, + /* kCutYAccel */ -3.0f, + /* kCutZVel */ 2.5f, + /* kCutPitchVel */ 0x00C8, + /* kUncutShadowScale */ 1.5f, + /* kCutShadowScale */ 0.3f, + /* kCollisionRad */ 80.0f, + /* kCollisionRadCut */ 15.0f, + /* kCollisionHeight */ 80.0f, + /* kCollisionHeightCut */ 15.0f, + /* kClipRadius */ 100.0f, + /* kClipCenterYOffset */ 40.0f, + /* kPushBackCountdown */ 0x23, + /* L_Alpha_Cutoff */ 0x80, }; } // namespace } // namespace dWood @@ -145,13 +455,11 @@ const Attr_c L_attr = { // Constants //----------------------------------------- const s32 L_Room_Max = 64; -const float l_Ground_check_y_offset = 100.0f; -const double l_Ground_check_unk1 = 0.5; -const double l_Ground_check_unk2 = 3.0; -const float kGroundHeightBias = 1.0f; +const f32 l_Ground_check_y_offset = 100.0f; +const f32 kGroundHeightBias = 1.0f; -const u32 l_Oba_swood_bDL_SIZE = 0x100; -const u32 l_Oba_swood_b_cutDL_SIZE = 0xc0; +const u32 l_Oba_swood_bDL_SIZE = 0x100; +const u32 l_Oba_swood_b_cutDL_SIZE = 0xc0; s32 dWood::Anm_c::M_init_num = 0; @@ -223,7 +531,7 @@ void dWood::Anm_c::copy_angamp(const dWood::Anm_c *other) { /* 800BD848-800BD8BC .text mode_cut_init__Q25dWood5Anm_cFPCQ25dWood5Anm_cs */ -void dWood::Anm_c::mode_cut_init(const dWood::Anm_c *, short targetAngle) { +void dWood::Anm_c::mode_cut_init(const dWood::Anm_c *, s16 targetAngle) { for (u32 i = 0; i < 2; i++) { mPhaseY[i] = 0; mPhaseX[i] = 0; @@ -251,7 +559,7 @@ void dWood::Anm_c::mode_cut(dWood::Packet_c *) { mPosOffsetZ = mPosOffsetZ + L_attr.kCutZVel; mPhaseX[0] = mPhaseX[0] - L_attr.kCutPitchVel; - mDoMtx_YrotS(mDoMtx_stack_c::now, (int)mForceDir); + mDoMtx_YrotS(mDoMtx_stack_c::now, mForceDir); mDoMtx_stack_c::transM(0.0f, mPosOffsetY, mPosOffsetZ); mDoMtx_XrotM(mDoMtx_stack_c::now, mPhaseX[0]); mDoMtx_YrotM(mDoMtx_stack_c::now, -mForceDir); @@ -273,8 +581,7 @@ void dWood::Anm_c::mode_cut(dWood::Packet_c *) { } /* 800BD9E4-800BDA38 .text mode_push_into_init__Q25dWood5Anm_cFPCQ25dWood5Anm_cs */ -void dWood::Anm_c::mode_push_into_init(const dWood::Anm_c *anm, - short targetAngle) { +void dWood::Anm_c::mode_push_into_init(const dWood::Anm_c *anm, s16 targetAngle) { copy_angamp(anm); mForceDir = targetAngle; mAlphaScale = 0xff; @@ -288,16 +595,15 @@ void dWood::Anm_c::mode_push_into(dWood::Packet_c *packet) { mode_push_back_init(); } else { - float rotY = 0.0f; - float rotX = rotY; + f32 rotY = 0.0f; + f32 rotX = rotY; for (s32 i = 0; i < 2; i++) { - const AttrSway_c* sway = &attr().kSways[SWAY_PUSH][i]; - s32 phaseVelX = sway->phaseVelX; - s32 ampY = sway->ampY; - s32 ampX = sway->ampX; - float phaseBiasX = sway->phaseBiasX; + s32 phaseVelX = attr_sway(SWAY_PUSH, i).phaseVelX; + s32 ampY = attr_sway(SWAY_PUSH, i).ampY; + s32 ampX = attr_sway(SWAY_PUSH, i).ampX; + f32 phaseBiasX = attr_sway(SWAY_PUSH, i).phaseBiasX; - mPhaseY[i] += sway->phaseVelY; + mPhaseY[i] += attr_sway(SWAY_PUSH, i).phaseVelY; cLib_chaseAngleS(&mPhaseX[i], 0, phaseVelX); cLib_chaseS(&mAmpY[i], ampY/4, 0x14); cLib_addCalcAngleS(&mAmpX[i], ampX, 8, 0x14, 5); @@ -326,18 +632,17 @@ void dWood::Anm_c::mode_push_back(dWood::Packet_c *packet) { mode_to_norm_init(animIdx); } else { - float t = mCountdown * (1.0f / L_attr.kPushBackCountdown); + f32 t = mCountdown * (1.0f / L_attr.kPushBackCountdown); - float rotY = 0.0; - float rotX = rotY; + f32 rotY = 0.0; + f32 rotX = rotY; for (s32 i = 0; i < 2; i++) { - const AttrSway_c* sway = &attr().kSways[SWAY_PUSH][i]; - s32 phaseVelX = sway->phaseVelX; - s16 ampY = t * sway->ampY; - s16 ampX = t * sway->ampX; - float phaseBiasX = sway->phaseBiasX; + s32 phaseVelX = attr_sway(SWAY_PUSH, i).phaseVelX; + s16 ampY = t * attr_sway(SWAY_PUSH, i).ampY; + s16 ampX = t * attr_sway(SWAY_PUSH, i).ampX; + f32 phaseBiasX = attr_sway(SWAY_PUSH, i).phaseBiasX; - mPhaseY[i] += sway->phaseVelY; + mPhaseY[i] += attr_sway(SWAY_PUSH, i).phaseVelY; mPhaseX[i] += phaseVelX; cLib_chaseS(&mAmpY[i], (s32)ampY, 0x14); cLib_chaseS(&mAmpX[i], (s32)ampX, 0x14); @@ -385,16 +690,15 @@ void dWood::Anm_c::mode_norm(dWood::Packet_c *packet) { } } - float rotY = 0.0f; - float rotX = rotY; + f32 rotY = 0.0f; + f32 rotX = rotY; for (s32 i = 0; i < 2; i++) { - const AttrSway_c *sway = &attr_sway(swayID, i); - s32 phaseVelX = sway->phaseVelX; - s16 ampY = sway->ampY; - s16 ampX = sway->ampX; - float phaseBiasX = sway->phaseBiasX; + s32 phaseVelX = attr_sway(swayID, i).phaseVelX; + s16 ampY = attr_sway(swayID, i).ampY; + s16 ampX = attr_sway(swayID, i).ampX; + f32 phaseBiasX = attr_sway(swayID, i).phaseBiasX; - mPhaseY[i] += sway->phaseVelY; + mPhaseY[i] += attr_sway(swayID, i).phaseVelY; mPhaseX[i] += phaseVelX; cLib_chaseS(&mAmpY[i], ampY, 2); cLib_chaseS(&mAmpX[i], ampX, 2); @@ -409,13 +713,14 @@ void dWood::Anm_c::mode_norm(dWood::Packet_c *packet) { } /* 800BE148-800BE154 .text mode_norm_set_wind__Q25dWood5Anm_cFfs */ -void dWood::Anm_c::mode_norm_set_wind(float windPow, short windDir) { +void dWood::Anm_c::mode_norm_set_wind(f32 windPow, s16 windDir) { mWindPow = windPow; mForceDir = windDir; } + /* 800BE154-800BE1F0 .text mode_to_norm_init__Q25dWood5Anm_cFQ25dWood7AnmID_e */ void dWood::Anm_c::mode_to_norm_init(dWood::AnmID_e anm_id_norm) { - JUT_ASSERT(0x4d7, (anm_id_norm >= 0) && (anm_id_norm < AnmID_Norm_Max)); + JUT_ASSERT(1239, (anm_id_norm >= 0) && (anm_id_norm < AnmID_Norm_Max)); mode_to_norm_set_AnmID(anm_id_norm); mAlphaScale = 0xff; @@ -440,15 +745,14 @@ void dWood::Anm_c::mode_to_norm(dWood::Packet_c *packet) { cLib_chaseAngleS(&mForceDir, normAnim->mForceDir, 3000); - float rotY = 0.0f; - float rotX = rotY; + f32 rotY = 0.0f; + f32 rotX = rotY; for (s32 i = 0; i < 2; i++) { - const AttrSway_c *sway = &attr_sway(swayID, i); - float phaseBiasX = sway->phaseBiasX; - s32 phaseVelX = sway->phaseVelX; + f32 phaseBiasX = attr_sway(swayID, i).phaseBiasX; + s32 phaseVelX = attr_sway(swayID, i).phaseVelX; s16 rotXStep = phaseVelX + 3000; - cLib_chaseS(&mPhaseY[i], normAnim->mPhaseY[i], sway->phaseVelY + 3000); + cLib_chaseS(&mPhaseY[i], normAnim->mPhaseY[i], attr_sway(swayID, i).phaseVelY + 3000); cLib_chaseS(&mPhaseX[i], normAnim->mPhaseX[i], rotXStep); cLib_chaseS(&mAmpY[i], normAnim->mAmpY[i], 0xf); cLib_chaseS(&mAmpX[i], normAnim->mAmpX[i], 0xf); @@ -468,7 +772,7 @@ void dWood::Anm_c::mode_to_norm(dWood::Packet_c *packet) { /* 800BE428-800BE4DC .text __ct__Q25dWood6Unit_cFv */ dWood::Unit_c::Unit_c() { - clear(); + clear(); } /* 800BE4DC-800BE93C .text set_ground__Q25dWood6Unit_cFv */ @@ -485,10 +789,10 @@ bool dWood::Unit_c::set_ground() { cM3dGPla *triPla = dComIfG_Bgsp()->GetTriPla(gndChk); cXyz gndNorm = *triPla->GetNP(); - float unkFloat = std::sqrtf(1.0f - gndNorm.x * gndNorm.x); + f32 unkFloat = std::sqrtf(1.0f - gndNorm.x * gndNorm.x); - float scaledNormY; - float scaledNormZ; + f32 scaledNormY; + f32 scaledNormZ; if (unkFloat != 0.0f) { scaledNormY = gndNorm.y * unkFloat; scaledNormZ = -gndNorm.z * unkFloat; @@ -536,14 +840,13 @@ void dWood::Unit_c::set_mtx(dWood::Anm_c *anim) { mDoMtx_stack_c::now[0][3] = mPos.x; mDoMtx_stack_c::now[1][3] = mPos.y; mDoMtx_stack_c::now[2][3] = mPos.z; - mDoMtx_concat(j3dSys.getViewMtx(), mDoMtx_stack_c::get(), - mTrunkModelViewMtx); + mDoMtx_concat(j3dSys.getViewMtx(), mDoMtx_stack_c::get(), mTrunkModelViewMtx); mDoMtx_concat(j3dSys.getViewMtx(), mShadowModelMtx, mShadowModelViewMtx); } /* 800BEA28-800BEA50 .text clear__Q25dWood6Unit_cFv */ -void dWood::Unit_c::clear() { +void dWood::Unit_c::clear() { cLib_memSet(this, 0, 0x18c); } @@ -658,8 +961,7 @@ void dWood::Unit_c::cc_hit_before_cut(dWood::Packet_c *packet) { mDoAud_seStart(JA_SE_OBJ_CUT_L_TREE_DOWN, &mPos, 0, 0); - float newShadowScale = - L_attr.kCutShadowScale / L_attr.kUncutShadowScale; + f32 newShadowScale = L_attr.kCutShadowScale / L_attr.kUncutShadowScale; mDoMtx_copy(mShadowModelMtx, mDoMtx_stack_c::get()); mDoMtx_stack_c::scaleM(newShadowScale, 1.0f, newShadowScale); @@ -702,12 +1004,11 @@ void dWood::Unit_c::proc(dWood::Packet_c *packet) { } /* 800BEF78-800BEF84 .text __ct__Q25dWood6Room_cFv */ -dWood::Room_c::Room_c() { - mpUnit = NULL; +dWood::Room_c::Room_c() { + mpUnit = NULL; } -/* 800BEF84-800BEF94 .text entry_unit__Q25dWood6Room_cFPQ25dWood6Unit_c - */ +/* 800BEF84-800BEF94 .text entry_unit__Q25dWood6Room_cFPQ25dWood6Unit_c */ void dWood::Room_c::entry_unit(dWood::Unit_c *unit) { unit->mpNext = mpUnit; mpUnit = unit; @@ -731,6 +1032,7 @@ dWood::Packet_c::Packet_c() { } } +/* 800BF110-800BF194 .text __dt__Q25dWood8Packet_cFv */ dWood::Packet_c::~Packet_c() {}; /* 800BF194-800BF1C8 .text delete_room__Q25dWood8Packet_cFi */ @@ -740,7 +1042,7 @@ void dWood::Packet_c::delete_room(int room_no) { /* 800BF1C8-800BF2D4 .text put_unit__Q25dWood8Packet_cFRC4cXyzi */ s32 dWood::Packet_c::put_unit(const cXyz &pos, int room_no) { - JUT_ASSERT(0x6e0, (room_no >= 0) && (room_no < L_Room_Max)); + JUT_ASSERT(1760, (room_no >= 0) && (room_no < L_Room_Max)); const s32 unitCount = ARRAY_SIZE(mUnit); s32 unitIdx = search_empty_UnitID(); @@ -792,7 +1094,7 @@ void dWood::Packet_c::calc() { calc_cc(); cXyz *windDir = dKyw_get_wind_vec(); - float windVel = dKyw_get_wind_pow(); + f32 windVel = dKyw_get_wind_pow(); s16 windAngle = cM_atan2s(windDir->x, windDir->z); for (s32 i = 0; i < (s32)8; i++) { @@ -813,10 +1115,8 @@ void dWood::Packet_c::update() { s32 i = 0; for (Unit_c *unit = mUnit; i < (s32)ARRAY_SIZE(mUnit); i++, unit++) { if (cLib_checkBit(unit->mFlags, Unit_c::STATE_ACTIVE)) { - cXyz clipPos(unit->mPos.x, unit->mPos.y + L_attr.kClipCenterYOffset, - unit->mPos.z); - s32 res = mDoLib_clipper::clip(j3dSys.getViewMtx(), clipPos, - L_attr.kClipRadius); + cXyz clipPos(unit->mPos.x, unit->mPos.y + L_attr.kClipCenterYOffset, unit->mPos.z); + s32 res = mDoLib_clipper::clip(j3dSys.getViewMtx(), clipPos, L_attr.kClipRadius); if (res != 0) { cLib_onBit(unit->mFlags, Unit_c::STATE_FRUSTUM_CULLED); @@ -852,9 +1152,9 @@ void dWood::Packet_c::draw() { {GX_VA_NULL, GX_NONE}, }; static GXVtxAttrFmtList l_shadowVtxAttrFmtList[] = { - {GX_VA_POS, GX_CLR_RGBA, GX_RGB8}, - {GX_VA_TEX0, GX_CLR_RGBA, GX_RGB8}, - {GX_VA_NULL, GX_CLR_RGBA, GX_RGB8}, + {GX_VA_POS, GX_CLR_RGBA, GX_RGB8, 0x00}, + {GX_VA_TEX0, GX_CLR_RGBA, GX_RGB8, 0x00}, + {GX_VA_NULL, GX_CLR_RGBA, GX_RGB8, 0x00}, }; static GXVtxDescList l_vtxDescList[] = { {GX_VA_POS, GX_INDEX8}, @@ -863,10 +1163,10 @@ void dWood::Packet_c::draw() { {GX_VA_NULL, GX_NONE}, }; static GXVtxAttrFmtList l_vtxAttrFmtList[] = { - {GX_VA_POS, GX_CLR_RGBA, GX_F32}, - {GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8}, - {GX_VA_TEX0, GX_CLR_RGBA, GX_F32}, - {GX_VA_NULL, GX_CLR_RGBA, GX_RGB8}, + {GX_VA_POS, GX_CLR_RGBA, GX_F32, 0x00}, + {GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0x00}, + {GX_VA_TEX0, GX_CLR_RGBA, GX_F32, 0x00}, + {GX_VA_NULL, GX_CLR_RGBA, GX_RGB8, 0x00}, }; static GXColor l_shadowColor = {0x00, 0x00, 0x00, 0x64}; @@ -896,12 +1196,11 @@ void dWood::Packet_c::draw() { GXColor alphaColor = {0xff, 0xff, 0xff, 0xff}; GFSetVtxDescv(l_vtxDescList); GFSetVtxAttrFmtv(GX_VTXFMT0, l_vtxAttrFmtList); - GFSetArray(GX_VA_POS, l_pos, 0xc); - GFSetArray(GX_VA_CLR0, l_color, 4); - GFSetArray(GX_VA_TEX0, l_texCoord, 8); + GFSetArray(GX_VA_POS, l_pos, sizeof(*l_pos)); + GFSetArray(GX_VA_CLR0, l_color, sizeof(*l_color)); + GFSetArray(GX_VA_TEX0, l_texCoord, sizeof(*l_texCoord)); GXCallDisplayList(l_matDL, 0xa0); - GFSetAlphaCompare(GX_GREATER, L_attr.L_Alpha_Cutoff, GX_AOP_OR, GX_GREATER, - L_attr.L_Alpha_Cutoff); + GFSetAlphaCompare(GX_GREATER, L_attr.L_Alpha_Cutoff, GX_AOP_OR, GX_GREATER, L_attr.L_Alpha_Cutoff); GFSetTevColor(GX_TEVREG2, alphaColor); // Draw the trunk and body for each active unit @@ -941,7 +1240,10 @@ void dWood::Packet_c::draw() { } } } - J3DShape::sOldVcdVatCmd = 0; + +#if VERSION != VERSION_JPN + J3DShape::sOldVcdVatCmd = NULL; +#endif } /* 800BF900-800BF938 .text search_empty_UnitID__Q25dWood8Packet_cCFv */ @@ -965,7 +1267,7 @@ s32 dWood::Packet_c::search_empty_UnitID() const { dWood::AnmID_e dWood::Packet_c::search_anm(dWood::Anm_c::Mode_e i_mode) { u32 animIdx; - JUT_ASSERT(0x80d, (i_mode >= 0) && (i_mode < Anm_c::Mode_Max)); + JUT_ASSERT(VERSION_SELECT(2059, 2061, 2061), (i_mode >= 0) && (i_mode < Anm_c::Mode_Max)); if (i_mode == Anm_c::Mode_Norm) { static s32 anm_norm_num = 0;