From d0f89e41b1c2dd8b434cf8a63278757b4fc8b84f Mon Sep 17 00:00:00 2001 From: Carco_21 <144170194+carter-ktb21@users.noreply.github.com> Date: Sat, 22 Mar 2025 05:16:25 -0400 Subject: [PATCH] d_a_mant almost done (#2335) * d_a_mant Create almost equivalent * Work on mant_move * Remade d_a_mant branch * d_a_mant ~76% matching * daMant_packet_c::draw() 69% matching * d_a_mant data matching and joint_control over 50% matching * daMant_Execute looking better * d_a_mant 92% equivalent * Removed commented rodata --- include/d/actor/d_a_mant.h | 69 +- src/d/actor/d_a_mant.cpp | 1464 ++++++++++++++++++------------------ 2 files changed, 778 insertions(+), 755 deletions(-) diff --git a/include/d/actor/d_a_mant.h b/include/d/actor/d_a_mant.h index 21556b0afa5..b1304a3c896 100644 --- a/include/d/actor/d_a_mant.h +++ b/include/d/actor/d_a_mant.h @@ -6,14 +6,59 @@ /** * @ingroup actors-unsorted * @class mant_class - * @brief ??? - * - * @details Related to Ganondorf Horseback Battle + * @brief Ganondorf's Cloak * */ + +class daMant_packet_c : public J3DPacket { + public: + /* 80861298 */ void draw(); + /* 80862BA4 */ ~daMant_packet_c(); + + /* 0x0010 */ Mtx mMtx; + /* 0x0040 */ Mtx mMtx2; + /* 0x0070 */ dKy_tevstr_c* field_0x70; + /* 0x0074 */ u8 field_0x74; + /* 0x0075 */ u8 field_0x75[0x78 - 0x75]; + /* 0x0078 */ cXyz mPos[338]; + /* 0x1050 */ cXyz mNrm[338]; + /* 0x2028 */ u8 field_0x2028; + /* 0x2029 */ u8 mArg0; + /* 0x202a */ u8 field_0x202a[0x202b - 0x202a]; + + cXyz* getPos() { + return this->mPos + this->field_0x74 * 0xa9; + } +}; +struct mant_j_s { + public: + /* 80862AC0 */ ~mant_j_s(); + /* 80862B3C */ mant_j_s(); + + /* 0x0000 */ cXyz field_0x0[13]; + /* 0x009C */ cXyz field_0x9c[13]; + /* 0x0138 */ s16 field_0x0138; + /* 0x013A */ s16 field_0x013a; + /* 0x013C */ u8 field_0x013C[0x174 - 0x13C]; + /* 0x0174 */ f32 field_0x0174; + /* 0x0178 */ f32 field_0x0178; + /* 0x017C */ f32 field_0x017c; +}; class mant_class : public fopAc_ac_c { public: - /* 0x0568 */ u8 field_0x568[0x395c - 0x568]; + /* 0x0568 */ u8 field_0x568[0x570 - 0x568]; + /* 0x0570 */ daMant_packet_c field_0x0570; + /* 0x259C */ u8 field_0x259c; + /* 0x259D */ u8 field_0x259D[0x25A0 - 0x259D]; + /* 0x25A0 */ u32 field_0x25a0; + /* 0x2595 */ u8 field_0x25A5[0x25A8 - 0x25A5]; + /* 0x25A8 */ mant_j_s field_0x25a8[13]; + /* 0x3928 */ cXyz field_0x3928[2]; + /* 0x3940 */ cXyz field_0x3940; + /* 0x394C */ f32 field_0x394c; + /* 0x3950 */ f32 field_0x3950; + /* 0x3954 */ f32 field_0x3954; + /* 0x3958 */ f32 field_0x3958; /* 0x395C */ f32 field_0x395c; /* 0x3960 */ f32 field_0x3960; /* 0x3964 */ u8 field_0x3964; @@ -22,22 +67,12 @@ public: /* 0x3967 */ u8 field_0x3967; /* 0x3968 */ u8 field_0x3968; /* 0x3969 */ u8 field_0x3969; - /* 0x396A */ u8 field_0x396A[0x39a4 - 0x396A]; + /* 0x396A */ u8 field_0x396A[0x399E - 0x396A]; + /* 0x399E */ s16 field_0x399e; + /* 0x39A0 */ u8 field_0x39A0[0x39A4 - 0x39A0]; }; STATIC_ASSERT(sizeof(mant_class) == 0x39a4); -class daMant_packet_c : public fopAc_ac_c { -public: - /* 80861298 */ void draw(); - /* 80862BA4 */ ~daMant_packet_c(); -}; - -struct mant_j_s { -public: - /* 80862AC0 */ ~mant_j_s(); - /* 80862B3C */ mant_j_s(); -}; - #endif /* D_A_MANT_H */ diff --git a/src/d/actor/d_a_mant.cpp b/src/d/actor/d_a_mant.cpp index f8f12226b75..1d90d6e5752 100644 --- a/src/d/actor/d_a_mant.cpp +++ b/src/d/actor/d_a_mant.cpp @@ -4,140 +4,18 @@ */ #include "d/actor/d_a_mant.h" +#include "JSystem/J3DGraphBase/J3DDrawBuffer.h" +#include "d/actor/d_a_b_gnd.h" +#include "d/d_com_inf_game.h" #include "dol2asm.h" -// -// Forward References: -// - -extern "C" void draw__15daMant_packet_cFv(); -extern "C" static void daMant_Draw__FP10mant_class(); -extern "C" static void joint_control__FP10mant_classP8mant_j_siff(); -extern "C" void __dt__4cXyzFv(); -extern "C" static void mant_v_calc__FP10mant_class(); -extern "C" static void mant_move__FP10mant_class(); -extern "C" static void daMant_Execute__FP10mant_class(); -extern "C" static bool daMant_IsDelete__FP10mant_class(); -extern "C" static bool daMant_Delete__FP10mant_class(); -extern "C" static void daMant_Create__FP10fopAc_ac_c(); -extern "C" void __dt__8mant_j_sFv(); -extern "C" void __ct__8mant_j_sFv(); -extern "C" void __dt__15daMant_packet_cFv(); -extern "C" void __ct__4cXyzFv(); - -// -// External References: -// - -extern "C" void mDoMtx_XrotS__FPA4_fs(); -extern "C" void mDoMtx_XrotM__FPA4_fs(); -extern "C" void mDoMtx_YrotS__FPA4_fs(); -extern "C" void mDoMtx_YrotM__FPA4_fs(); -extern "C" void mDoMtx_inverseTranspose__FPA4_CfPA4_f(); -extern "C" void __ct__10fopAc_ac_cFv(); -extern "C" void fopAcIt_Judge__FPFPvPv_PvPv(); -extern "C" void fopAcM_SetMin__FP10fopAc_ac_cfff(); -extern "C" void fopAcM_SetMax__FP10fopAc_ac_cfff(); -extern "C" void fpcSch_JudgeByID__FPvPv(); -extern "C" void GroundCross__4cBgSFP11cBgS_GndChk(); -extern "C" void __ct__11dBgS_GndChkFv(); -extern "C" void __dt__11dBgS_GndChkFv(); -extern "C" void settingTevStruct__18dScnKy_env_light_cFiP4cXyzP12dKy_tevstr_c(); -extern "C" void dKy_setLight_again__Fv(); -extern "C" void dKy_Global_amb_set__FP12dKy_tevstr_c(); -extern "C" void dKy_GxFog_tevstr_set__FP12dKy_tevstr_c(); -extern "C" void __pl__4cXyzCFRC3Vec(); -extern "C" void __mi__4cXyzCFRC3Vec(); -extern "C" void __ml__4cXyzCFf(); -extern "C" void __ct__5csXyzFsss(); -extern "C" void cM_rad2s__Ff(); -extern "C" void cM_atan2s__Fff(); -extern "C" void cM_rndF__Ff(); -extern "C" void cM_rndFX__Ff(); -extern "C" void SetPos__11cBgS_GndChkFPC3Vec(); -extern "C" void cLib_addCalc0__FPfff(); -extern "C" void MtxTrans__FfffUc(); -extern "C" void MtxPosition__FP4cXyzP4cXyz(); -extern "C" void __dl__FPv(); -extern "C" void reinitGX__6J3DSysFv(); -extern "C" bool entry__9J3DPacketFP13J3DDrawBuffer(); -extern "C" void entryImm__13J3DDrawBufferFP9J3DPacketUs(); -extern "C" void __destroy_arr(); -extern "C" void __construct_array(); -extern "C" void _savegpr_19(); -extern "C" void _savegpr_24(); -extern "C" void _savegpr_26(); -extern "C" void _savegpr_27(); -extern "C" void _savegpr_29(); -extern "C" void _restgpr_19(); -extern "C" void _restgpr_24(); -extern "C" void _restgpr_26(); -extern "C" void _restgpr_27(); -extern "C" void _restgpr_29(); -extern "C" extern void* __vt__9J3DPacket[5]; -extern "C" extern u8 g_dComIfG_gameInfo[122384]; -extern "C" u8 sincosTable___5JMath[65536]; -extern "C" extern void* calc_mtx[1 + 1 /* padding */]; -extern "C" u8 sOldVcdVatCmd__8J3DShape[4]; - -// -// Declarations: -// - -/* ############################################################################################## */ -/* 80862C4C-80862C50 000000 0004+00 5/5 0/0 0/0 .rodata @3815 */ -SECTION_RODATA static u32 const lit_3815 = 0x01000000; -COMPILER_STRIP_GATE(0x80862C4C, &lit_3815); - -/* 80862C50-80862C54 000004 0004+00 0/1 0/0 0/0 .rodata @3818 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_3818 = 0x01000000; -COMPILER_STRIP_GATE(0x80862C50, &lit_3818); -#pragma pop - -/* 80862C54-80862C58 000008 0004+00 0/1 0/0 0/0 .rodata @3821 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_3821[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x80862C54, &lit_3821); -#pragma pop - -/* 80862C58-80862C5C 00000C 0004+00 0/1 0/0 0/0 .rodata @3824 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_3824[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x80862C58, &lit_3824); -#pragma pop - -/* 80862C5C-80862C60 000010 0004+00 1/5 0/0 0/0 .rodata @3849 */ -SECTION_RODATA static u8 const lit_3849[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x80862C5C, &lit_3849); - /* 80862D20-80862D2C 000000 000C+00 1/1 0/0 0/0 .data cNullVec__6Z2Calc */ -SECTION_DATA static u8 cNullVec__6Z2Calc[12] = { +static u8 cNullVec__6Z2Calc[12] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }; /* 80862D2C-80862D40 00000C 0004+10 0/0 0/0 0/0 .data @1787 */ -#pragma push -#pragma force_active on -SECTION_DATA static u32 lit_1787[1 + 4 /* padding */] = { +static u32 lit_1787[1 + 4 /* padding */] = { 0x02000201, /* padding */ 0x40080000, @@ -145,7 +23,6 @@ SECTION_DATA static u32 lit_1787[1 + 4 /* padding */] = { 0x3FE00000, 0x00000000, }; -#pragma pop /* 80862D40-80866D40 000020 4000+00 2/1 0/0 0/0 .data l_Egnd_mantTEX */ #include "assets/l_Egnd_mantTEX.h" @@ -153,646 +30,792 @@ SECTION_DATA static u32 lit_1787[1 + 4 /* padding */] = { /* 80866D40-8086AD40 004020 4000+00 3/3 0/0 0/0 .data l_Egnd_mantTEX_U */ #include "assets/l_Egnd_mantTEX_U.h" -/* 8086BF70-8086BF74 000000 0004+00 3/3 0/0 0/0 .bss None */ -static u8 data_8086BF70[4]; - -/* 80861298-808616B8 000078 0420+00 1/0 0/0 0/0 .text draw__15daMant_packet_cFv */ -void daMant_packet_c::draw() { - // NONMATCHING -} - -/* 808616B8-8086176C 000498 00B4+00 1/0 0/0 0/0 .text daMant_Draw__FP10mant_class */ -static void daMant_Draw(mant_class* param_0) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80862C60-80862C64 000014 0004+00 0/1 0/0 0/0 .rodata @4113 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4113 = 0.5f; -COMPILER_STRIP_GATE(0x80862C60, &lit_4113); -#pragma pop - -/* 80862C64-80862C68 000018 0004+00 0/1 0/0 0/0 .rodata @4114 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4114 = -60.0f; -COMPILER_STRIP_GATE(0x80862C64, &lit_4114); -#pragma pop - -/* 80862C68-80862C6C 00001C 0004+00 0/1 0/0 0/0 .rodata @4115 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4115 = 50.0f; -COMPILER_STRIP_GATE(0x80862C68, &lit_4115); -#pragma pop - -/* 80862C6C-80862C70 000020 0004+00 0/1 0/0 0/0 .rodata @4116 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4116 = 3.0f; -COMPILER_STRIP_GATE(0x80862C6C, &lit_4116); -#pragma pop - -/* 80862C70-80862C74 000024 0004+00 0/4 0/0 0/0 .rodata @4117 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4117 = 1.0f; -COMPILER_STRIP_GATE(0x80862C70, &lit_4117); -#pragma pop - -/* 80862C74-80862C78 000028 0004+00 0/2 0/0 0/0 .rodata @4118 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4118 = 1.0f / 20.0f; -COMPILER_STRIP_GATE(0x80862C74, &lit_4118); -#pragma pop - -/* 80862C78-80862C7C 00002C 0004+00 0/1 0/0 0/0 .rodata @4119 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4119 = -15.0f; -COMPILER_STRIP_GATE(0x80862C78, &lit_4119); -#pragma pop - -/* 80862C7C-80862C80 000030 0004+00 0/2 0/0 0/0 .rodata @4120 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4120 = 7.0f / 100.0f; -COMPILER_STRIP_GATE(0x80862C7C, &lit_4120); -#pragma pop - -/* 80862C80-80862C84 000034 0004+00 0/1 0/0 0/0 .rodata @4121 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4121 = 1.0f / 100.0f; -COMPILER_STRIP_GATE(0x80862C80, &lit_4121); -#pragma pop - -/* 80862C84-80862C88 000038 0004+00 0/3 0/0 0/0 .rodata @4122 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4122 = 1.0f / 5.0f; -COMPILER_STRIP_GATE(0x80862C84, &lit_4122); -#pragma pop - -/* 80862C88-80862C8C 00003C 0004+00 0/1 0/0 0/0 .rodata @4123 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4123 = 2.0f; -COMPILER_STRIP_GATE(0x80862C88, &lit_4123); -#pragma pop - -/* 80862C8C-80862C90 000040 0004+00 0/2 0/0 0/0 .rodata @4124 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4124 = 5.0f; -COMPILER_STRIP_GATE(0x80862C8C, &lit_4124); -#pragma pop - -/* 80862C90-80862C94 000044 0004+00 0/1 0/0 0/0 .rodata @4125 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4125 = 6.0f; -COMPILER_STRIP_GATE(0x80862C90, &lit_4125); -#pragma pop - -/* 80862C94-80862C98 000048 0004+00 0/1 0/0 0/0 .rodata @4126 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4126 = 1.0f / 10.0f; -COMPILER_STRIP_GATE(0x80862C94, &lit_4126); -#pragma pop - -/* 80862C98-80862C9C 00004C 0004+00 0/1 0/0 0/0 .rodata @4127 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4127 = 85.0f; -COMPILER_STRIP_GATE(0x80862C98, &lit_4127); -#pragma pop - -/* 80862C9C-80862CA4 000050 0004+04 0/1 0/0 0/0 .rodata @4128 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4128[1 + 1 /* padding */] = { - 7225.0f, - /* padding */ - 0.0f, -}; -COMPILER_STRIP_GATE(0x80862C9C, &lit_4128); -#pragma pop - -/* 80862CA4-80862CAC 000058 0008+00 0/2 0/0 0/0 .rodata @4130 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4130[8] = { - 0x43, 0x30, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80862CA4, &lit_4130); -#pragma pop - /* 8086AD40-8086ADA0 008020 0060+00 1/0 0/0 0/0 .data l_Egnd_mantPAL */ #include "assets/l_Egnd_mantPAL.h" /* 8086ADA0-8086B58C 008080 07EC+00 0/0 0/0 0/0 .data l_pos */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 l_pos[2028] = { - 0x42, 0x48, 0x00, 0x00, 0x3F, 0x5C, 0xFC, 0x93, 0xC3, 0x65, 0xBD, 0x9C, 0x42, 0x26, 0xAA, 0xAA, - 0x3F, 0x5C, 0xFC, 0x93, 0xC3, 0x65, 0xBD, 0x9C, 0x42, 0x05, 0x55, 0x56, 0x3F, 0x5C, 0xFC, 0x93, - 0xC3, 0x65, 0xBD, 0x9C, 0x41, 0xC8, 0x00, 0x00, 0x3F, 0x5C, 0xFC, 0x93, 0xC3, 0x65, 0xBD, 0x9C, - 0x41, 0x85, 0x55, 0x56, 0x3F, 0x5C, 0xFC, 0x93, 0xC3, 0x65, 0xBD, 0x9C, 0x41, 0x05, 0x55, 0x56, - 0x3F, 0x5C, 0xFC, 0x93, 0xC3, 0x65, 0xBD, 0x9C, 0x35, 0x86, 0x37, 0xBD, 0x3F, 0x5C, 0xFC, 0x93, - 0xC3, 0x65, 0xBD, 0x9C, 0xC1, 0x05, 0x55, 0x54, 0x3F, 0x5C, 0xFC, 0x93, 0xC3, 0x65, 0xBD, 0x9C, - 0xC1, 0x85, 0x55, 0x54, 0x3F, 0x5C, 0xFC, 0x93, 0xC3, 0x65, 0xBD, 0x9C, 0xC1, 0xC7, 0xFF, 0xFF, - 0x3F, 0x5C, 0xFC, 0x93, 0xC3, 0x65, 0xBD, 0x9C, 0xC2, 0x05, 0x55, 0x54, 0x3F, 0x5C, 0xFC, 0x93, - 0xC3, 0x65, 0xBD, 0x9C, 0xC2, 0x26, 0xAA, 0xAA, 0x3F, 0x5C, 0xFC, 0x93, 0xC3, 0x65, 0xBD, 0x9C, - 0xC2, 0x48, 0x00, 0x00, 0x3F, 0x5C, 0xFC, 0x93, 0xC3, 0x65, 0xBD, 0x9C, 0x42, 0x48, 0x00, 0x00, - 0x3F, 0x5C, 0xFC, 0x93, 0xC3, 0x52, 0x92, 0xF0, 0x42, 0x26, 0xAA, 0xAA, 0x3F, 0x5C, 0xFC, 0x93, - 0xC3, 0x52, 0x92, 0xF0, 0x42, 0x05, 0x55, 0x56, 0x3F, 0x5C, 0xFC, 0x93, 0xC3, 0x52, 0x92, 0xF0, - 0x41, 0xC8, 0x00, 0x00, 0x3F, 0x5C, 0xFC, 0x93, 0xC3, 0x52, 0x92, 0xF0, 0x41, 0x85, 0x55, 0x56, - 0x3F, 0x5C, 0xFC, 0x93, 0xC3, 0x52, 0x92, 0xF0, 0x41, 0x05, 0x55, 0x56, 0x3F, 0x5C, 0xFC, 0x93, - 0xC3, 0x52, 0x92, 0xF0, 0x35, 0x86, 0x37, 0xBD, 0x3F, 0x5C, 0xFC, 0x93, 0xC3, 0x52, 0x92, 0xF0, - 0xC1, 0x05, 0x55, 0x54, 0x3F, 0x5C, 0xFC, 0x93, 0xC3, 0x52, 0x92, 0xF0, 0xC1, 0x85, 0x55, 0x54, - 0x3F, 0x5C, 0xFC, 0x93, 0xC3, 0x52, 0x92, 0xF0, 0xC1, 0xC7, 0xFF, 0xFF, 0x3F, 0x5C, 0xFC, 0x93, - 0xC3, 0x52, 0x92, 0xF0, 0xC2, 0x05, 0x55, 0x54, 0x3F, 0x5C, 0xFC, 0x93, 0xC3, 0x52, 0x92, 0xF0, - 0xC2, 0x26, 0xAA, 0xAA, 0x3F, 0x5C, 0xFC, 0x93, 0xC3, 0x52, 0x92, 0xF0, 0xC2, 0x48, 0x00, 0x00, - 0x3F, 0x5C, 0xFC, 0x93, 0xC3, 0x52, 0x92, 0xF0, 0x42, 0x48, 0x00, 0x00, 0x3F, 0x5C, 0xFC, 0x93, - 0xC3, 0x3F, 0x68, 0x46, 0x42, 0x26, 0xAA, 0xAA, 0x3F, 0x5C, 0xFC, 0x93, 0xC3, 0x3F, 0x68, 0x46, - 0x42, 0x05, 0x55, 0x56, 0x3F, 0x5C, 0xFC, 0x93, 0xC3, 0x3F, 0x68, 0x46, 0x41, 0xC8, 0x00, 0x00, - 0x3F, 0x5C, 0xFC, 0x93, 0xC3, 0x3F, 0x68, 0x46, 0x41, 0x85, 0x55, 0x56, 0x3F, 0x5C, 0xFC, 0x93, - 0xC3, 0x3F, 0x68, 0x46, 0x41, 0x05, 0x55, 0x56, 0x3F, 0x5C, 0xFC, 0x93, 0xC3, 0x3F, 0x68, 0x46, - 0x35, 0x86, 0x37, 0xBD, 0x3F, 0x5C, 0xFC, 0x93, 0xC3, 0x3F, 0x68, 0x46, 0xC1, 0x05, 0x55, 0x54, - 0x3F, 0x5C, 0xFC, 0x93, 0xC3, 0x3F, 0x68, 0x46, 0xC1, 0x85, 0x55, 0x54, 0x3F, 0x5C, 0xFC, 0x93, - 0xC3, 0x3F, 0x68, 0x46, 0xC1, 0xC7, 0xFF, 0xFF, 0x3F, 0x5C, 0xFC, 0x93, 0xC3, 0x3F, 0x68, 0x46, - 0xC2, 0x05, 0x55, 0x54, 0x3F, 0x5C, 0xFC, 0x93, 0xC3, 0x3F, 0x68, 0x46, 0xC2, 0x26, 0xAA, 0xAA, - 0x3F, 0x5C, 0xFC, 0x93, 0xC3, 0x3F, 0x68, 0x46, 0xC2, 0x48, 0x00, 0x00, 0x3F, 0x5C, 0xFC, 0x93, - 0xC3, 0x3F, 0x68, 0x46, 0x42, 0x48, 0x00, 0x00, 0x3F, 0x5C, 0xFC, 0x93, 0xC3, 0x2C, 0x3D, 0x9C, - 0x42, 0x26, 0xAA, 0xAA, 0x3F, 0x5C, 0xFC, 0x93, 0xC3, 0x2C, 0x3D, 0x9C, 0x42, 0x05, 0x55, 0x56, - 0x3F, 0x5C, 0xFC, 0x93, 0xC3, 0x2C, 0x3D, 0x9C, 0x41, 0xC8, 0x00, 0x00, 0x3F, 0x5C, 0xFC, 0x93, - 0xC3, 0x2C, 0x3D, 0x9C, 0x41, 0x85, 0x55, 0x56, 0x3F, 0x5C, 0xFC, 0x93, 0xC3, 0x2C, 0x3D, 0x9C, - 0x41, 0x05, 0x55, 0x56, 0x3F, 0x5C, 0xFC, 0x93, 0xC3, 0x2C, 0x3D, 0x9C, 0x35, 0x86, 0x37, 0xBD, - 0x3F, 0x5C, 0xFC, 0x93, 0xC3, 0x2C, 0x3D, 0x9C, 0xC1, 0x05, 0x55, 0x54, 0x3F, 0x5C, 0xFC, 0x93, - 0xC3, 0x2C, 0x3D, 0x9C, 0xC1, 0x85, 0x55, 0x54, 0x3F, 0x5C, 0xFC, 0x93, 0xC3, 0x2C, 0x3D, 0x9C, - 0xC1, 0xC7, 0xFF, 0xFF, 0x3F, 0x5C, 0xFC, 0x93, 0xC3, 0x2C, 0x3D, 0x9C, 0xC2, 0x05, 0x55, 0x54, - 0x3F, 0x5C, 0xFC, 0x93, 0xC3, 0x2C, 0x3D, 0x9C, 0xC2, 0x26, 0xAA, 0xAA, 0x3F, 0x5C, 0xFC, 0x93, - 0xC3, 0x2C, 0x3D, 0x9C, 0xC2, 0x48, 0x00, 0x00, 0x3F, 0x5C, 0xFC, 0x93, 0xC3, 0x2C, 0x3D, 0x9C, - 0x42, 0x48, 0x00, 0x00, 0x3F, 0x5C, 0xFC, 0x93, 0xC3, 0x19, 0x12, 0xF1, 0x42, 0x26, 0xAA, 0xAA, - 0x3F, 0x5C, 0xFC, 0x93, 0xC3, 0x19, 0x12, 0xF1, 0x42, 0x05, 0x55, 0x56, 0x3F, 0x5C, 0xFC, 0x93, - 0xC3, 0x19, 0x12, 0xF1, 0x41, 0xC8, 0x00, 0x00, 0x3F, 0x5C, 0xFC, 0x93, 0xC3, 0x19, 0x12, 0xF1, - 0x41, 0x85, 0x55, 0x56, 0x3F, 0x5C, 0xFC, 0x93, 0xC3, 0x19, 0x12, 0xF1, 0x41, 0x05, 0x55, 0x56, - 0x3F, 0x5C, 0xFC, 0x93, 0xC3, 0x19, 0x12, 0xF1, 0x35, 0x86, 0x37, 0xBD, 0x3F, 0x5C, 0xFC, 0x93, - 0xC3, 0x19, 0x12, 0xF1, 0xC1, 0x05, 0x55, 0x54, 0x3F, 0x5C, 0xFC, 0x93, 0xC3, 0x19, 0x12, 0xF1, - 0xC1, 0x85, 0x55, 0x54, 0x3F, 0x5C, 0xFC, 0x93, 0xC3, 0x19, 0x12, 0xF1, 0xC1, 0xC7, 0xFF, 0xFF, - 0x3F, 0x5C, 0xFC, 0x93, 0xC3, 0x19, 0x12, 0xF1, 0xC2, 0x05, 0x55, 0x54, 0x3F, 0x5C, 0xFC, 0x93, - 0xC3, 0x19, 0x12, 0xF1, 0xC2, 0x26, 0xAA, 0xAA, 0x3F, 0x5C, 0xFC, 0x93, 0xC3, 0x19, 0x12, 0xF1, - 0xC2, 0x48, 0x00, 0x00, 0x3F, 0x5C, 0xFC, 0x93, 0xC3, 0x19, 0x12, 0xF1, 0x42, 0x48, 0x00, 0x00, - 0x3F, 0x5C, 0xFC, 0x93, 0xC3, 0x05, 0xE8, 0x46, 0x42, 0x26, 0xAA, 0xAA, 0x3F, 0x5C, 0xFC, 0x93, - 0xC3, 0x05, 0xE8, 0x46, 0x42, 0x05, 0x55, 0x56, 0x3F, 0x5C, 0xFC, 0x93, 0xC3, 0x05, 0xE8, 0x46, - 0x41, 0xC8, 0x00, 0x00, 0x3F, 0x5C, 0xFC, 0x93, 0xC3, 0x05, 0xE8, 0x46, 0x41, 0x85, 0x55, 0x56, - 0x3F, 0x5C, 0xFC, 0x93, 0xC3, 0x05, 0xE8, 0x46, 0x41, 0x05, 0x55, 0x56, 0x3F, 0x5C, 0xFC, 0x93, - 0xC3, 0x05, 0xE8, 0x46, 0x35, 0x86, 0x37, 0xBD, 0x3F, 0x5C, 0xFC, 0x93, 0xC3, 0x05, 0xE8, 0x46, - 0xC1, 0x05, 0x55, 0x54, 0x3F, 0x5C, 0xFC, 0x93, 0xC3, 0x05, 0xE8, 0x46, 0xC1, 0x85, 0x55, 0x54, - 0x3F, 0x5C, 0xFC, 0x93, 0xC3, 0x05, 0xE8, 0x46, 0xC1, 0xC7, 0xFF, 0xFF, 0x3F, 0x5C, 0xFC, 0x93, - 0xC3, 0x05, 0xE8, 0x46, 0xC2, 0x05, 0x55, 0x54, 0x3F, 0x5C, 0xFC, 0x93, 0xC3, 0x05, 0xE8, 0x46, - 0xC2, 0x26, 0xAA, 0xAA, 0x3F, 0x5C, 0xFC, 0x93, 0xC3, 0x05, 0xE8, 0x46, 0xC2, 0x48, 0x00, 0x00, - 0x3F, 0x5C, 0xFC, 0x93, 0xC3, 0x05, 0xE8, 0x46, 0x42, 0x48, 0x00, 0x00, 0x3F, 0x5C, 0xFC, 0x93, - 0xC2, 0xE5, 0x7B, 0x38, 0x42, 0x26, 0xAA, 0xAA, 0x3F, 0x5C, 0xFC, 0x93, 0xC2, 0xE5, 0x7B, 0x38, - 0x42, 0x05, 0x55, 0x56, 0x3F, 0x5C, 0xFC, 0x93, 0xC2, 0xE5, 0x7B, 0x38, 0x41, 0xC8, 0x00, 0x00, - 0x3F, 0x5C, 0xFC, 0x93, 0xC2, 0xE5, 0x7B, 0x38, 0x41, 0x85, 0x55, 0x56, 0x3F, 0x5C, 0xFC, 0x93, - 0xC2, 0xE5, 0x7B, 0x38, 0x41, 0x05, 0x55, 0x56, 0x3F, 0x5C, 0xFC, 0x93, 0xC2, 0xE5, 0x7B, 0x38, - 0x35, 0x86, 0x37, 0xBD, 0x3F, 0x5C, 0xFC, 0x93, 0xC2, 0xE5, 0x7B, 0x38, 0xC1, 0x05, 0x55, 0x54, - 0x3F, 0x5C, 0xFC, 0x93, 0xC2, 0xE5, 0x7B, 0x38, 0xC1, 0x85, 0x55, 0x54, 0x3F, 0x5C, 0xFC, 0x93, - 0xC2, 0xE5, 0x7B, 0x38, 0xC1, 0xC7, 0xFF, 0xFF, 0x3F, 0x5C, 0xFC, 0x93, 0xC2, 0xE5, 0x7B, 0x38, - 0xC2, 0x05, 0x55, 0x54, 0x3F, 0x5C, 0xFC, 0x93, 0xC2, 0xE5, 0x7B, 0x38, 0xC2, 0x26, 0xAA, 0xAA, - 0x3F, 0x5C, 0xFC, 0x93, 0xC2, 0xE5, 0x7B, 0x38, 0xC2, 0x48, 0x00, 0x00, 0x3F, 0x5C, 0xFC, 0x93, - 0xC2, 0xE5, 0x7B, 0x38, 0x42, 0x48, 0x00, 0x00, 0x3F, 0x5C, 0xFC, 0x93, 0xC2, 0xBF, 0x25, 0xE2, - 0x42, 0x26, 0xAA, 0xAA, 0x3F, 0x5C, 0xFC, 0x93, 0xC2, 0xBF, 0x25, 0xE2, 0x42, 0x05, 0x55, 0x56, - 0x3F, 0x5C, 0xFC, 0x93, 0xC2, 0xBF, 0x25, 0xE2, 0x41, 0xC8, 0x00, 0x00, 0x3F, 0x5C, 0xFC, 0x93, - 0xC2, 0xBF, 0x25, 0xE2, 0x41, 0x85, 0x55, 0x56, 0x3F, 0x5C, 0xFC, 0x93, 0xC2, 0xBF, 0x25, 0xE2, - 0x41, 0x05, 0x55, 0x56, 0x3F, 0x5C, 0xFC, 0x93, 0xC2, 0xBF, 0x25, 0xE2, 0x35, 0x86, 0x37, 0xBD, - 0x3F, 0x5C, 0xFC, 0x93, 0xC2, 0xBF, 0x25, 0xE2, 0xC1, 0x05, 0x55, 0x54, 0x3F, 0x5C, 0xFC, 0x93, - 0xC2, 0xBF, 0x25, 0xE2, 0xC1, 0x85, 0x55, 0x54, 0x3F, 0x5C, 0xFC, 0x93, 0xC2, 0xBF, 0x25, 0xE2, - 0xC1, 0xC7, 0xFF, 0xFF, 0x3F, 0x5C, 0xFC, 0x93, 0xC2, 0xBF, 0x25, 0xE2, 0xC2, 0x05, 0x55, 0x54, - 0x3F, 0x5C, 0xFC, 0x93, 0xC2, 0xBF, 0x25, 0xE2, 0xC2, 0x26, 0xAA, 0xAA, 0x3F, 0x5C, 0xFC, 0x93, - 0xC2, 0xBF, 0x25, 0xE2, 0xC2, 0x48, 0x00, 0x00, 0x3F, 0x5C, 0xFC, 0x93, 0xC2, 0xBF, 0x25, 0xE2, - 0x42, 0x48, 0x00, 0x00, 0x3F, 0x5C, 0xFC, 0x93, 0xC2, 0x98, 0xD0, 0x8D, 0x42, 0x26, 0xAA, 0xAA, - 0x3F, 0x5C, 0xFC, 0x93, 0xC2, 0x98, 0xD0, 0x8D, 0x42, 0x05, 0x55, 0x56, 0x3F, 0x5C, 0xFC, 0x93, - 0xC2, 0x98, 0xD0, 0x8D, 0x41, 0xC8, 0x00, 0x00, 0x3F, 0x5C, 0xFC, 0x93, 0xC2, 0x98, 0xD0, 0x8D, - 0x41, 0x85, 0x55, 0x56, 0x3F, 0x5C, 0xFC, 0x93, 0xC2, 0x98, 0xD0, 0x8D, 0x41, 0x05, 0x55, 0x56, - 0x3F, 0x5C, 0xFC, 0x93, 0xC2, 0x98, 0xD0, 0x8D, 0x35, 0x86, 0x37, 0xBD, 0x3F, 0x5C, 0xFC, 0x93, - 0xC2, 0x98, 0xD0, 0x8D, 0xC1, 0x05, 0x55, 0x54, 0x3F, 0x5C, 0xFC, 0x93, 0xC2, 0x98, 0xD0, 0x8D, - 0xC1, 0x85, 0x55, 0x54, 0x3F, 0x5C, 0xFC, 0x93, 0xC2, 0x98, 0xD0, 0x8D, 0xC1, 0xC7, 0xFF, 0xFF, - 0x3F, 0x5C, 0xFC, 0x93, 0xC2, 0x98, 0xD0, 0x8D, 0xC2, 0x05, 0x55, 0x54, 0x3F, 0x5C, 0xFC, 0x93, - 0xC2, 0x98, 0xD0, 0x8D, 0xC2, 0x26, 0xAA, 0xAA, 0x3F, 0x5C, 0xFC, 0x93, 0xC2, 0x98, 0xD0, 0x8D, - 0xC2, 0x48, 0x00, 0x00, 0x3F, 0x5C, 0xFC, 0x93, 0xC2, 0x98, 0xD0, 0x8D, 0x42, 0x48, 0x00, 0x00, - 0x3F, 0x5C, 0xFC, 0x93, 0xC2, 0x64, 0xF6, 0x6F, 0x42, 0x26, 0xAA, 0xAA, 0x3F, 0x5C, 0xFC, 0x93, - 0xC2, 0x64, 0xF6, 0x6F, 0x42, 0x05, 0x55, 0x56, 0x3F, 0x5C, 0xFC, 0x93, 0xC2, 0x64, 0xF6, 0x6F, - 0x41, 0xC8, 0x00, 0x00, 0x3F, 0x5C, 0xFC, 0x93, 0xC2, 0x64, 0xF6, 0x6F, 0x41, 0x85, 0x55, 0x56, - 0x3F, 0x5C, 0xFC, 0x93, 0xC2, 0x64, 0xF6, 0x6F, 0x41, 0x05, 0x55, 0x56, 0x3F, 0x5C, 0xFC, 0x93, - 0xC2, 0x64, 0xF6, 0x6F, 0x35, 0x86, 0x37, 0xBD, 0x3F, 0x5C, 0xFC, 0x93, 0xC2, 0x64, 0xF6, 0x6F, - 0xC1, 0x05, 0x55, 0x54, 0x3F, 0x5C, 0xFC, 0x93, 0xC2, 0x64, 0xF6, 0x6F, 0xC1, 0x85, 0x55, 0x54, - 0x3F, 0x5C, 0xFC, 0x93, 0xC2, 0x64, 0xF6, 0x6F, 0xC1, 0xC7, 0xFF, 0xFF, 0x3F, 0x5C, 0xFC, 0x93, - 0xC2, 0x64, 0xF6, 0x6F, 0xC2, 0x05, 0x55, 0x54, 0x3F, 0x5C, 0xFC, 0x93, 0xC2, 0x64, 0xF6, 0x6F, - 0xC2, 0x26, 0xAA, 0xAA, 0x3F, 0x5C, 0xFC, 0x93, 0xC2, 0x64, 0xF6, 0x6F, 0xC2, 0x48, 0x00, 0x00, - 0x3F, 0x5C, 0xFC, 0x93, 0xC2, 0x64, 0xF6, 0x6F, 0x42, 0x48, 0x00, 0x00, 0x3F, 0x5C, 0xFC, 0x93, - 0xC2, 0x18, 0x4B, 0xC4, 0x42, 0x26, 0xAA, 0xAA, 0x3F, 0x5C, 0xFC, 0x93, 0xC2, 0x18, 0x4B, 0xC4, - 0x42, 0x05, 0x55, 0x56, 0x3F, 0x5C, 0xFC, 0x93, 0xC2, 0x18, 0x4B, 0xC4, 0x41, 0xC8, 0x00, 0x00, - 0x3F, 0x5C, 0xFC, 0x93, 0xC2, 0x18, 0x4B, 0xC4, 0x41, 0x85, 0x55, 0x56, 0x3F, 0x5C, 0xFC, 0x93, - 0xC2, 0x18, 0x4B, 0xC4, 0x41, 0x05, 0x55, 0x56, 0x3F, 0x5C, 0xFC, 0x93, 0xC2, 0x18, 0x4B, 0xC4, - 0x35, 0x86, 0x37, 0xBD, 0x3F, 0x5C, 0xFC, 0x93, 0xC2, 0x18, 0x4B, 0xC4, 0xC1, 0x05, 0x55, 0x54, - 0x3F, 0x5C, 0xFC, 0x93, 0xC2, 0x18, 0x4B, 0xC4, 0xC1, 0x85, 0x55, 0x54, 0x3F, 0x5C, 0xFC, 0x93, - 0xC2, 0x18, 0x4B, 0xC4, 0xC1, 0xC7, 0xFF, 0xFF, 0x3F, 0x5C, 0xFC, 0x93, 0xC2, 0x18, 0x4B, 0xC4, - 0xC2, 0x05, 0x55, 0x54, 0x3F, 0x5C, 0xFC, 0x93, 0xC2, 0x18, 0x4B, 0xC4, 0xC2, 0x26, 0xAA, 0xAA, - 0x3F, 0x5C, 0xFC, 0x93, 0xC2, 0x18, 0x4B, 0xC4, 0xC2, 0x48, 0x00, 0x00, 0x3F, 0x5C, 0xFC, 0x93, - 0xC2, 0x18, 0x4B, 0xC4, 0x42, 0x48, 0x00, 0x00, 0x3F, 0x5C, 0xFC, 0x93, 0xC1, 0x97, 0x42, 0x31, - 0x42, 0x26, 0xAA, 0xAA, 0x3F, 0x5C, 0xFC, 0x93, 0xC1, 0x97, 0x42, 0x31, 0x42, 0x05, 0x55, 0x56, - 0x3F, 0x5C, 0xFC, 0x93, 0xC1, 0x97, 0x42, 0x31, 0x41, 0xC8, 0x00, 0x00, 0x3F, 0x5C, 0xFC, 0x93, - 0xC1, 0x97, 0x42, 0x31, 0x41, 0x85, 0x55, 0x56, 0x3F, 0x5C, 0xFC, 0x93, 0xC1, 0x97, 0x42, 0x31, - 0x41, 0x05, 0x55, 0x56, 0x3F, 0x5C, 0xFC, 0x93, 0xC1, 0x97, 0x42, 0x31, 0x35, 0x86, 0x37, 0xBD, - 0x3F, 0x5C, 0xFC, 0x93, 0xC1, 0x97, 0x42, 0x31, 0xC1, 0x05, 0x55, 0x54, 0x3F, 0x5C, 0xFC, 0x93, - 0xC1, 0x97, 0x42, 0x31, 0xC1, 0x85, 0x55, 0x54, 0x3F, 0x5C, 0xFC, 0x93, 0xC1, 0x97, 0x42, 0x31, - 0xC1, 0xC7, 0xFF, 0xFF, 0x3F, 0x5C, 0xFC, 0x93, 0xC1, 0x97, 0x42, 0x31, 0xC2, 0x05, 0x55, 0x54, - 0x3F, 0x5C, 0xFC, 0x93, 0xC1, 0x97, 0x42, 0x31, 0xC2, 0x26, 0xAA, 0xAA, 0x3F, 0x5C, 0xFC, 0x93, - 0xC1, 0x97, 0x42, 0x31, 0xC2, 0x48, 0x00, 0x00, 0x3F, 0x5C, 0xFC, 0x93, 0xC1, 0x97, 0x42, 0x31, - 0x42, 0x48, 0x00, 0x00, 0x3F, 0x5C, 0xFC, 0x93, 0x3E, 0x84, 0xC9, 0x64, 0x42, 0x26, 0xAA, 0xAA, - 0x3F, 0x5C, 0xFC, 0x93, 0x3E, 0x84, 0xC9, 0x64, 0x42, 0x05, 0x55, 0x56, 0x3F, 0x5C, 0xFC, 0x93, - 0x3E, 0x84, 0xC9, 0x64, 0x41, 0xC8, 0x00, 0x00, 0x3F, 0x5C, 0xFC, 0x93, 0x3E, 0x84, 0xC9, 0x64, - 0x41, 0x85, 0x55, 0x56, 0x3F, 0x5C, 0xFC, 0x93, 0x3E, 0x84, 0xC9, 0x64, 0x41, 0x05, 0x55, 0x56, - 0x3F, 0x5C, 0xFC, 0x93, 0x3E, 0x84, 0xC9, 0x64, 0x35, 0x86, 0x37, 0xBD, 0x3F, 0x5C, 0xFC, 0x93, - 0x3E, 0x84, 0xC9, 0x64, 0xC1, 0x05, 0x55, 0x54, 0x3F, 0x5C, 0xFC, 0x93, 0x3E, 0x84, 0xC9, 0x64, - 0xC1, 0x85, 0x55, 0x54, 0x3F, 0x5C, 0xFC, 0x93, 0x3E, 0x84, 0xC9, 0x64, 0xC1, 0xC7, 0xFF, 0xFF, - 0x3F, 0x5C, 0xFC, 0x93, 0x3E, 0x84, 0xC9, 0x64, 0xC2, 0x05, 0x55, 0x54, 0x3F, 0x5C, 0xFC, 0x93, - 0x3E, 0x84, 0xC9, 0x64, 0xC2, 0x26, 0xAA, 0xAA, 0x3F, 0x5C, 0xFC, 0x93, 0x3E, 0x84, 0xC9, 0x64, - 0xC2, 0x48, 0x00, 0x00, 0x3F, 0x5C, 0xFC, 0x93, 0x3E, 0x84, 0xC9, 0x64, +static u32 l_pos[507] = { + 0x42480000, 0x3F5CFC93, 0xC365BD9C, 0x4226AAAA, + 0x3F5CFC93, 0xC365BD9C, 0x42055556, 0x3F5CFC93, + 0xC365BD9C, 0x41C80000, 0x3F5CFC93, 0xC365BD9C, + 0x41855556, 0x3F5CFC93, 0xC365BD9C, 0x41055556, + 0x3F5CFC93, 0xC365BD9C, 0x358637BD, 0x3F5CFC93, + 0xC365BD9C, 0xC1055554, 0x3F5CFC93, 0xC365BD9C, + 0xC1855554, 0x3F5CFC93, 0xC365BD9C, 0xC1C7FFFF, + 0x3F5CFC93, 0xC365BD9C, 0xC2055554, 0x3F5CFC93, + 0xC365BD9C, 0xC226AAAA, 0x3F5CFC93, 0xC365BD9C, + 0xC2480000, 0x3F5CFC93, 0xC365BD9C, 0x42480000, + 0x3F5CFC93, 0xC35292F0, 0x4226AAAA, 0x3F5CFC93, + 0xC35292F0, 0x42055556, 0x3F5CFC93, 0xC35292F0, + 0x41C80000, 0x3F5CFC93, 0xC35292F0, 0x41855556, + 0x3F5CFC93, 0xC35292F0, 0x41055556, 0x3F5CFC93, + 0xC35292F0, 0x358637BD, 0x3F5CFC93, 0xC35292F0, + 0xC1055554, 0x3F5CFC93, 0xC35292F0, 0xC1855554, + 0x3F5CFC93, 0xC35292F0, 0xC1C7FFFF, 0x3F5CFC93, + 0xC35292F0, 0xC2055554, 0x3F5CFC93, 0xC35292F0, + 0xC226AAAA, 0x3F5CFC93, 0xC35292F0, 0xC2480000, + 0x3F5CFC93, 0xC35292F0, 0x42480000, 0x3F5CFC93, + 0xC33F6846, 0x4226AAAA, 0x3F5CFC93, 0xC33F6846, + 0x42055556, 0x3F5CFC93, 0xC33F6846, 0x41C80000, + 0x3F5CFC93, 0xC33F6846, 0x41855556, 0x3F5CFC93, + 0xC33F6846, 0x41055556, 0x3F5CFC93, 0xC33F6846, + 0x358637BD, 0x3F5CFC93, 0xC33F6846, 0xC1055554, + 0x3F5CFC93, 0xC33F6846, 0xC1855554, 0x3F5CFC93, + 0xC33F6846, 0xC1C7FFFF, 0x3F5CFC93, 0xC33F6846, + 0xC2055554, 0x3F5CFC93, 0xC33F6846, 0xC226AAAA, + 0x3F5CFC93, 0xC33F6846, 0xC2480000, 0x3F5CFC93, + 0xC33F6846, 0x42480000, 0x3F5CFC93, 0xC32C3D9C, + 0x4226AAAA, 0x3F5CFC93, 0xC32C3D9C, 0x42055556, + 0x3F5CFC93, 0xC32C3D9C, 0x41C80000, 0x3F5CFC93, + 0xC32C3D9C, 0x41855556, 0x3F5CFC93, 0xC32C3D9C, + 0x41055556, 0x3F5CFC93, 0xC32C3D9C, 0x358637BD, + 0x3F5CFC93, 0xC32C3D9C, 0xC1055554, 0x3F5CFC93, + 0xC32C3D9C, 0xC1855554, 0x3F5CFC93, 0xC32C3D9C, + 0xC1C7FFFF, 0x3F5CFC93, 0xC32C3D9C, 0xC2055554, + 0x3F5CFC93, 0xC32C3D9C, 0xC226AAAA, 0x3F5CFC93, + 0xC32C3D9C, 0xC2480000, 0x3F5CFC93, 0xC32C3D9C, + 0x42480000, 0x3F5CFC93, 0xC31912F1, 0x4226AAAA, + 0x3F5CFC93, 0xC31912F1, 0x42055556, 0x3F5CFC93, + 0xC31912F1, 0x41C80000, 0x3F5CFC93, 0xC31912F1, + 0x41855556, 0x3F5CFC93, 0xC31912F1, 0x41055556, + 0x3F5CFC93, 0xC31912F1, 0x358637BD, 0x3F5CFC93, + 0xC31912F1, 0xC1055554, 0x3F5CFC93, 0xC31912F1, + 0xC1855554, 0x3F5CFC93, 0xC31912F1, 0xC1C7FFFF, + 0x3F5CFC93, 0xC31912F1, 0xC2055554, 0x3F5CFC93, + 0xC31912F1, 0xC226AAAA, 0x3F5CFC93, 0xC31912F1, + 0xC2480000, 0x3F5CFC93, 0xC31912F1, 0x42480000, + 0x3F5CFC93, 0xC305E846, 0x4226AAAA, 0x3F5CFC93, + 0xC305E846, 0x42055556, 0x3F5CFC93, 0xC305E846, + 0x41C80000, 0x3F5CFC93, 0xC305E846, 0x41855556, + 0x3F5CFC93, 0xC305E846, 0x41055556, 0x3F5CFC93, + 0xC305E846, 0x358637BD, 0x3F5CFC93, 0xC305E846, + 0xC1055554, 0x3F5CFC93, 0xC305E846, 0xC1855554, + 0x3F5CFC93, 0xC305E846, 0xC1C7FFFF, 0x3F5CFC93, + 0xC305E846, 0xC2055554, 0x3F5CFC93, 0xC305E846, + 0xC226AAAA, 0x3F5CFC93, 0xC305E846, 0xC2480000, + 0x3F5CFC93, 0xC305E846, 0x42480000, 0x3F5CFC93, + 0xC2E57B38, 0x4226AAAA, 0x3F5CFC93, 0xC2E57B38, + 0x42055556, 0x3F5CFC93, 0xC2E57B38, 0x41C80000, + 0x3F5CFC93, 0xC2E57B38, 0x41855556, 0x3F5CFC93, + 0xC2E57B38, 0x41055556, 0x3F5CFC93, 0xC2E57B38, + 0x358637BD, 0x3F5CFC93, 0xC2E57B38, 0xC1055554, + 0x3F5CFC93, 0xC2E57B38, 0xC1855554, 0x3F5CFC93, + 0xC2E57B38, 0xC1C7FFFF, 0x3F5CFC93, 0xC2E57B38, + 0xC2055554, 0x3F5CFC93, 0xC2E57B38, 0xC226AAAA, + 0x3F5CFC93, 0xC2E57B38, 0xC2480000, 0x3F5CFC93, + 0xC2E57B38, 0x42480000, 0x3F5CFC93, 0xC2BF25E2, + 0x4226AAAA, 0x3F5CFC93, 0xC2BF25E2, 0x42055556, + 0x3F5CFC93, 0xC2BF25E2, 0x41C80000, 0x3F5CFC93, + 0xC2BF25E2, 0x41855556, 0x3F5CFC93, 0xC2BF25E2, + 0x41055556, 0x3F5CFC93, 0xC2BF25E2, 0x358637BD, + 0x3F5CFC93, 0xC2BF25E2, 0xC1055554, 0x3F5CFC93, + 0xC2BF25E2, 0xC1855554, 0x3F5CFC93, 0xC2BF25E2, + 0xC1C7FFFF, 0x3F5CFC93, 0xC2BF25E2, 0xC2055554, + 0x3F5CFC93, 0xC2BF25E2, 0xC226AAAA, 0x3F5CFC93, + 0xC2BF25E2, 0xC2480000, 0x3F5CFC93, 0xC2BF25E2, + 0x42480000, 0x3F5CFC93, 0xC298D08D, 0x4226AAAA, + 0x3F5CFC93, 0xC298D08D, 0x42055556, 0x3F5CFC93, + 0xC298D08D, 0x41C80000, 0x3F5CFC93, 0xC298D08D, + 0x41855556, 0x3F5CFC93, 0xC298D08D, 0x41055556, + 0x3F5CFC93, 0xC298D08D, 0x358637BD, 0x3F5CFC93, + 0xC298D08D, 0xC1055554, 0x3F5CFC93, 0xC298D08D, + 0xC1855554, 0x3F5CFC93, 0xC298D08D, 0xC1C7FFFF, + 0x3F5CFC93, 0xC298D08D, 0xC2055554, 0x3F5CFC93, + 0xC298D08D, 0xC226AAAA, 0x3F5CFC93, 0xC298D08D, + 0xC2480000, 0x3F5CFC93, 0xC298D08D, 0x42480000, + 0x3F5CFC93, 0xC264F66F, 0x4226AAAA, 0x3F5CFC93, + 0xC264F66F, 0x42055556, 0x3F5CFC93, 0xC264F66F, + 0x41C80000, 0x3F5CFC93, 0xC264F66F, 0x41855556, + 0x3F5CFC93, 0xC264F66F, 0x41055556, 0x3F5CFC93, + 0xC264F66F, 0x358637BD, 0x3F5CFC93, 0xC264F66F, + 0xC1055554, 0x3F5CFC93, 0xC264F66F, 0xC1855554, + 0x3F5CFC93, 0xC264F66F, 0xC1C7FFFF, 0x3F5CFC93, + 0xC264F66F, 0xC2055554, 0x3F5CFC93, 0xC264F66F, + 0xC226AAAA, 0x3F5CFC93, 0xC264F66F, 0xC2480000, + 0x3F5CFC93, 0xC264F66F, 0x42480000, 0x3F5CFC93, + 0xC2184BC4, 0x4226AAAA, 0x3F5CFC93, 0xC2184BC4, + 0x42055556, 0x3F5CFC93, 0xC2184BC4, 0x41C80000, + 0x3F5CFC93, 0xC2184BC4, 0x41855556, 0x3F5CFC93, + 0xC2184BC4, 0x41055556, 0x3F5CFC93, 0xC2184BC4, + 0x358637BD, 0x3F5CFC93, 0xC2184BC4, 0xC1055554, + 0x3F5CFC93, 0xC2184BC4, 0xC1855554, 0x3F5CFC93, + 0xC2184BC4, 0xC1C7FFFF, 0x3F5CFC93, 0xC2184BC4, + 0xC2055554, 0x3F5CFC93, 0xC2184BC4, 0xC226AAAA, + 0x3F5CFC93, 0xC2184BC4, 0xC2480000, 0x3F5CFC93, + 0xC2184BC4, 0x42480000, 0x3F5CFC93, 0xC1974231, + 0x4226AAAA, 0x3F5CFC93, 0xC1974231, 0x42055556, + 0x3F5CFC93, 0xC1974231, 0x41C80000, 0x3F5CFC93, + 0xC1974231, 0x41855556, 0x3F5CFC93, 0xC1974231, + 0x41055556, 0x3F5CFC93, 0xC1974231, 0x358637BD, + 0x3F5CFC93, 0xC1974231, 0xC1055554, 0x3F5CFC93, + 0xC1974231, 0xC1855554, 0x3F5CFC93, 0xC1974231, + 0xC1C7FFFF, 0x3F5CFC93, 0xC1974231, 0xC2055554, + 0x3F5CFC93, 0xC1974231, 0xC226AAAA, 0x3F5CFC93, + 0xC1974231, 0xC2480000, 0x3F5CFC93, 0xC1974231, + 0x42480000, 0x3F5CFC93, 0x3E84C964, 0x4226AAAA, + 0x3F5CFC93, 0x3E84C964, 0x42055556, 0x3F5CFC93, + 0x3E84C964, 0x41C80000, 0x3F5CFC93, 0x3E84C964, + 0x41855556, 0x3F5CFC93, 0x3E84C964, 0x41055556, + 0x3F5CFC93, 0x3E84C964, 0x358637BD, 0x3F5CFC93, + 0x3E84C964, 0xC1055554, 0x3F5CFC93, 0x3E84C964, + 0xC1855554, 0x3F5CFC93, 0x3E84C964, 0xC1C7FFFF, + 0x3F5CFC93, 0x3E84C964, 0xC2055554, 0x3F5CFC93, + 0x3E84C964, 0xC226AAAA, 0x3F5CFC93, 0x3E84C964, + 0xC2480000, 0x3F5CFC93, 0x3E84C964, }; -#pragma pop -/* 8086B58C-8086B598 00886C 000C+00 0/0 0/0 0/0 .data l_normal */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 l_normal[12] = { - 0x00, 0x00, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 8086B5EC-8086B5F7 .data l_normal */ +static u32 l_normal[3] = { + 0x00000000, 0x3F800000, 0x00000000, }; -#pragma pop + +// /* 8086BF70-8086BF74 000000 0004+00 3/3 0/0 0/0 .bss None */ +// static u8 data_8086BF70[4]; /* 8086B598-8086BAE0 008878 0548+00 0/0 0/0 0/0 .data l_texCoord */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 l_texCoord[1352] = { - 0x00, 0x00, 0x00, 0x00, 0x3F, 0x6A, 0xAA, 0xB0, 0x3D, 0xAA, 0xAA, 0x7E, 0x3F, 0x6A, 0xAA, 0xB0, - 0x3D, 0xAA, 0xAA, 0x7E, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, - 0x3E, 0x2A, 0xAA, 0xC1, 0x3F, 0x6A, 0xAA, 0xB0, 0x3E, 0x2A, 0xAA, 0xC1, 0x3F, 0x80, 0x00, 0x00, - 0x3E, 0x80, 0x00, 0x00, 0x3F, 0x6A, 0xAA, 0xB0, 0x3E, 0x80, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, - 0x3E, 0xAA, 0xAA, 0x9F, 0x3F, 0x6A, 0xAA, 0xB0, 0x3E, 0xAA, 0xAA, 0x9F, 0x3F, 0x80, 0x00, 0x00, - 0x3E, 0xD5, 0x55, 0x61, 0x3F, 0x6A, 0xAA, 0xB0, 0x3E, 0xD5, 0x55, 0x61, 0x3F, 0x80, 0x00, 0x00, - 0x3F, 0x00, 0x00, 0x00, 0x3F, 0x6A, 0xAA, 0xB0, 0x3F, 0x00, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, - 0x3F, 0x15, 0x55, 0x50, 0x3F, 0x6A, 0xAA, 0xB0, 0x3F, 0x15, 0x55, 0x50, 0x3F, 0x80, 0x00, 0x00, - 0x3F, 0x2A, 0xAA, 0xB0, 0x3F, 0x6A, 0xAA, 0xB0, 0x3F, 0x2A, 0xAA, 0xB0, 0x3F, 0x80, 0x00, 0x00, - 0x3F, 0x40, 0x00, 0x00, 0x3F, 0x6A, 0xAA, 0xB0, 0x3F, 0x40, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, - 0x3F, 0x55, 0x55, 0x50, 0x3F, 0x6A, 0xAA, 0xB0, 0x3F, 0x55, 0x55, 0x50, 0x3F, 0x80, 0x00, 0x00, - 0x3F, 0x6A, 0xAA, 0xB0, 0x3F, 0x6A, 0xAA, 0xB0, 0x3F, 0x6A, 0xAA, 0xB0, 0x3F, 0x80, 0x00, 0x00, - 0x3F, 0x80, 0x00, 0x00, 0x3F, 0x6A, 0xAA, 0xB0, 0x3F, 0x80, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3F, 0x55, 0x55, 0x50, 0x3D, 0xAA, 0xAA, 0x7E, 0x3F, 0x55, 0x55, 0x50, - 0x3E, 0x2A, 0xAA, 0xC1, 0x3F, 0x55, 0x55, 0x50, 0x3E, 0x80, 0x00, 0x00, 0x3F, 0x55, 0x55, 0x50, - 0x3E, 0xAA, 0xAA, 0x9F, 0x3F, 0x55, 0x55, 0x50, 0x3E, 0xD5, 0x55, 0x61, 0x3F, 0x55, 0x55, 0x50, - 0x3F, 0x00, 0x00, 0x00, 0x3F, 0x55, 0x55, 0x50, 0x3F, 0x15, 0x55, 0x50, 0x3F, 0x55, 0x55, 0x50, - 0x3F, 0x2A, 0xAA, 0xB0, 0x3F, 0x55, 0x55, 0x50, 0x3F, 0x40, 0x00, 0x00, 0x3F, 0x55, 0x55, 0x50, - 0x3F, 0x55, 0x55, 0x50, 0x3F, 0x55, 0x55, 0x50, 0x3F, 0x6A, 0xAA, 0xB0, 0x3F, 0x55, 0x55, 0x50, - 0x3F, 0x80, 0x00, 0x00, 0x3F, 0x55, 0x55, 0x50, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x40, 0x00, 0x00, - 0x3D, 0xAA, 0xAA, 0x7E, 0x3F, 0x40, 0x00, 0x00, 0x3E, 0x2A, 0xAA, 0xC1, 0x3F, 0x40, 0x00, 0x00, - 0x3E, 0x80, 0x00, 0x00, 0x3F, 0x40, 0x00, 0x00, 0x3E, 0xAA, 0xAA, 0x9F, 0x3F, 0x40, 0x00, 0x00, - 0x3E, 0xD5, 0x55, 0x61, 0x3F, 0x40, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x3F, 0x40, 0x00, 0x00, - 0x3F, 0x15, 0x55, 0x50, 0x3F, 0x40, 0x00, 0x00, 0x3F, 0x2A, 0xAA, 0xB0, 0x3F, 0x40, 0x00, 0x00, - 0x3F, 0x40, 0x00, 0x00, 0x3F, 0x40, 0x00, 0x00, 0x3F, 0x55, 0x55, 0x50, 0x3F, 0x40, 0x00, 0x00, - 0x3F, 0x6A, 0xAA, 0xB0, 0x3F, 0x40, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x3F, 0x40, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3F, 0x2A, 0xAA, 0xB0, 0x3D, 0xAA, 0xAA, 0x7E, 0x3F, 0x2A, 0xAA, 0xB0, - 0x3E, 0x2A, 0xAA, 0xC1, 0x3F, 0x2A, 0xAA, 0xB0, 0x3E, 0x80, 0x00, 0x00, 0x3F, 0x2A, 0xAA, 0xB0, - 0x3E, 0xAA, 0xAA, 0x9F, 0x3F, 0x2A, 0xAA, 0xB0, 0x3E, 0xD5, 0x55, 0x61, 0x3F, 0x2A, 0xAA, 0xB0, - 0x3F, 0x00, 0x00, 0x00, 0x3F, 0x2A, 0xAA, 0xB0, 0x3F, 0x15, 0x55, 0x50, 0x3F, 0x2A, 0xAA, 0xB0, - 0x3F, 0x2A, 0xAA, 0xB0, 0x3F, 0x2A, 0xAA, 0xB0, 0x3F, 0x40, 0x00, 0x00, 0x3F, 0x2A, 0xAA, 0xB0, - 0x3F, 0x55, 0x55, 0x50, 0x3F, 0x2A, 0xAA, 0xB0, 0x3F, 0x6A, 0xAA, 0xB0, 0x3F, 0x2A, 0xAA, 0xB0, - 0x3F, 0x80, 0x00, 0x00, 0x3F, 0x2A, 0xAA, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x15, 0x55, 0x50, - 0x3D, 0xAA, 0xAA, 0x7E, 0x3F, 0x15, 0x55, 0x50, 0x3E, 0x2A, 0xAA, 0xC1, 0x3F, 0x15, 0x55, 0x50, - 0x3E, 0x80, 0x00, 0x00, 0x3F, 0x15, 0x55, 0x50, 0x3E, 0xAA, 0xAA, 0x9F, 0x3F, 0x15, 0x55, 0x50, - 0x3E, 0xD5, 0x55, 0x61, 0x3F, 0x15, 0x55, 0x50, 0x3F, 0x00, 0x00, 0x00, 0x3F, 0x15, 0x55, 0x50, - 0x3F, 0x15, 0x55, 0x50, 0x3F, 0x15, 0x55, 0x50, 0x3F, 0x2A, 0xAA, 0xB0, 0x3F, 0x15, 0x55, 0x50, - 0x3F, 0x40, 0x00, 0x00, 0x3F, 0x15, 0x55, 0x50, 0x3F, 0x55, 0x55, 0x50, 0x3F, 0x15, 0x55, 0x50, - 0x3F, 0x6A, 0xAA, 0xB0, 0x3F, 0x15, 0x55, 0x50, 0x3F, 0x80, 0x00, 0x00, 0x3F, 0x15, 0x55, 0x50, - 0x00, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x3D, 0xAA, 0xAA, 0x7E, 0x3F, 0x00, 0x00, 0x00, - 0x3E, 0x2A, 0xAA, 0xC1, 0x3F, 0x00, 0x00, 0x00, 0x3E, 0x80, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, - 0x3E, 0xAA, 0xAA, 0x9F, 0x3F, 0x00, 0x00, 0x00, 0x3E, 0xD5, 0x55, 0x61, 0x3F, 0x00, 0x00, 0x00, - 0x3F, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x3F, 0x15, 0x55, 0x50, 0x3F, 0x00, 0x00, 0x00, - 0x3F, 0x2A, 0xAA, 0xB0, 0x3F, 0x00, 0x00, 0x00, 0x3F, 0x40, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, - 0x3F, 0x55, 0x55, 0x50, 0x3F, 0x00, 0x00, 0x00, 0x3F, 0x6A, 0xAA, 0xB0, 0x3F, 0x00, 0x00, 0x00, - 0x3F, 0x80, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0xD5, 0x55, 0x61, - 0x3D, 0xAA, 0xAA, 0x7E, 0x3E, 0xD5, 0x55, 0x61, 0x3E, 0x2A, 0xAA, 0xC1, 0x3E, 0xD5, 0x55, 0x61, - 0x3E, 0x80, 0x00, 0x00, 0x3E, 0xD5, 0x55, 0x61, 0x3E, 0xAA, 0xAA, 0x9F, 0x3E, 0xD5, 0x55, 0x61, - 0x3E, 0xD5, 0x55, 0x61, 0x3E, 0xD5, 0x55, 0x61, 0x3F, 0x00, 0x00, 0x00, 0x3E, 0xD5, 0x55, 0x61, - 0x3F, 0x15, 0x55, 0x50, 0x3E, 0xD5, 0x55, 0x61, 0x3F, 0x2A, 0xAA, 0xB0, 0x3E, 0xD5, 0x55, 0x61, - 0x3F, 0x40, 0x00, 0x00, 0x3E, 0xD5, 0x55, 0x61, 0x3F, 0x55, 0x55, 0x50, 0x3E, 0xD5, 0x55, 0x61, - 0x3F, 0x6A, 0xAA, 0xB0, 0x3E, 0xD5, 0x55, 0x61, 0x3F, 0x80, 0x00, 0x00, 0x3E, 0xD5, 0x55, 0x61, - 0x00, 0x00, 0x00, 0x00, 0x3E, 0xAA, 0xAA, 0x9F, 0x3D, 0xAA, 0xAA, 0x7E, 0x3E, 0xAA, 0xAA, 0x9F, - 0x3E, 0x2A, 0xAA, 0xC1, 0x3E, 0xAA, 0xAA, 0x9F, 0x3E, 0x80, 0x00, 0x00, 0x3E, 0xAA, 0xAA, 0x9F, - 0x3E, 0xAA, 0xAA, 0x9F, 0x3E, 0xAA, 0xAA, 0x9F, 0x3E, 0xD5, 0x55, 0x61, 0x3E, 0xAA, 0xAA, 0x9F, - 0x3F, 0x00, 0x00, 0x00, 0x3E, 0xAA, 0xAA, 0x9F, 0x3F, 0x15, 0x55, 0x50, 0x3E, 0xAA, 0xAA, 0x9F, - 0x3F, 0x2A, 0xAA, 0xB0, 0x3E, 0xAA, 0xAA, 0x9F, 0x3F, 0x40, 0x00, 0x00, 0x3E, 0xAA, 0xAA, 0x9F, - 0x3F, 0x55, 0x55, 0x50, 0x3E, 0xAA, 0xAA, 0x9F, 0x3F, 0x6A, 0xAA, 0xB0, 0x3E, 0xAA, 0xAA, 0x9F, - 0x3F, 0x80, 0x00, 0x00, 0x3E, 0xAA, 0xAA, 0x9F, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x80, 0x00, 0x00, - 0x3D, 0xAA, 0xAA, 0x7E, 0x3E, 0x80, 0x00, 0x00, 0x3E, 0x2A, 0xAA, 0xC1, 0x3E, 0x80, 0x00, 0x00, - 0x3E, 0x80, 0x00, 0x00, 0x3E, 0x80, 0x00, 0x00, 0x3E, 0xAA, 0xAA, 0x9F, 0x3E, 0x80, 0x00, 0x00, - 0x3E, 0xD5, 0x55, 0x61, 0x3E, 0x80, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x3E, 0x80, 0x00, 0x00, - 0x3F, 0x15, 0x55, 0x50, 0x3E, 0x80, 0x00, 0x00, 0x3F, 0x2A, 0xAA, 0xB0, 0x3E, 0x80, 0x00, 0x00, - 0x3F, 0x40, 0x00, 0x00, 0x3E, 0x80, 0x00, 0x00, 0x3F, 0x55, 0x55, 0x50, 0x3E, 0x80, 0x00, 0x00, - 0x3F, 0x6A, 0xAA, 0xB0, 0x3E, 0x80, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x3E, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3E, 0x2A, 0xAA, 0xC1, 0x3D, 0xAA, 0xAA, 0x7E, 0x3E, 0x2A, 0xAA, 0xC1, - 0x3E, 0x2A, 0xAA, 0xC1, 0x3E, 0x2A, 0xAA, 0xC1, 0x3E, 0x80, 0x00, 0x00, 0x3E, 0x2A, 0xAA, 0xC1, - 0x3E, 0xAA, 0xAA, 0x9F, 0x3E, 0x2A, 0xAA, 0xC1, 0x3E, 0xD5, 0x55, 0x61, 0x3E, 0x2A, 0xAA, 0xC1, - 0x3F, 0x00, 0x00, 0x00, 0x3E, 0x2A, 0xAA, 0xC1, 0x3F, 0x15, 0x55, 0x50, 0x3E, 0x2A, 0xAA, 0xC1, - 0x3F, 0x2A, 0xAA, 0xB0, 0x3E, 0x2A, 0xAA, 0xC1, 0x3F, 0x40, 0x00, 0x00, 0x3E, 0x2A, 0xAA, 0xC1, - 0x3F, 0x55, 0x55, 0x50, 0x3E, 0x2A, 0xAA, 0xC1, 0x3F, 0x6A, 0xAA, 0xB0, 0x3E, 0x2A, 0xAA, 0xC1, - 0x3F, 0x80, 0x00, 0x00, 0x3E, 0x2A, 0xAA, 0xC1, 0x00, 0x00, 0x00, 0x00, 0x3D, 0xAA, 0xAA, 0x7E, - 0x3D, 0xAA, 0xAA, 0x7E, 0x3D, 0xAA, 0xAA, 0x7E, 0x3E, 0x2A, 0xAA, 0xC1, 0x3D, 0xAA, 0xAA, 0x7E, - 0x3E, 0x80, 0x00, 0x00, 0x3D, 0xAA, 0xAA, 0x7E, 0x3E, 0xAA, 0xAA, 0x9F, 0x3D, 0xAA, 0xAA, 0x7E, - 0x3E, 0xD5, 0x55, 0x61, 0x3D, 0xAA, 0xAA, 0x7E, 0x3F, 0x00, 0x00, 0x00, 0x3D, 0xAA, 0xAA, 0x7E, - 0x3F, 0x15, 0x55, 0x50, 0x3D, 0xAA, 0xAA, 0x7E, 0x3F, 0x2A, 0xAA, 0xB0, 0x3D, 0xAA, 0xAA, 0x7E, - 0x3F, 0x40, 0x00, 0x00, 0x3D, 0xAA, 0xAA, 0x7E, 0x3F, 0x55, 0x55, 0x50, 0x3D, 0xAA, 0xAA, 0x7E, - 0x3F, 0x6A, 0xAA, 0xB0, 0x3D, 0xAA, 0xAA, 0x7E, 0x3F, 0x80, 0x00, 0x00, 0x3D, 0xAA, 0xAA, 0x7E, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3D, 0xAA, 0xAA, 0x7E, 0x00, 0x00, 0x00, 0x00, - 0x3E, 0x2A, 0xAA, 0xC1, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3E, 0xAA, 0xAA, 0x9F, 0x00, 0x00, 0x00, 0x00, 0x3E, 0xD5, 0x55, 0x61, 0x00, 0x00, 0x00, 0x00, - 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x15, 0x55, 0x50, 0x00, 0x00, 0x00, 0x00, - 0x3F, 0x2A, 0xAA, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3F, 0x55, 0x55, 0x50, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x6A, 0xAA, 0xB0, 0x00, 0x00, 0x00, 0x00, - 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +static u32 l_texCoord[338] = { + 0x00000000, 0x3F6AAAB0, 0x3DAAAA7E, 0x3F6AAAB0, + 0x3DAAAA7E, 0x3F800000, 0x00000000, 0x3F800000, + 0x3E2AAAC1, 0x3F6AAAB0, 0x3E2AAAC1, 0x3F800000, + 0x3E800000, 0x3F6AAAB0, 0x3E800000, 0x3F800000, + 0x3EAAAA9F, 0x3F6AAAB0, 0x3EAAAA9F, 0x3F800000, + 0x3ED55561, 0x3F6AAAB0, 0x3ED55561, 0x3F800000, + 0x3F000000, 0x3F6AAAB0, 0x3F000000, 0x3F800000, + 0x3F155550, 0x3F6AAAB0, 0x3F155550, 0x3F800000, + 0x3F2AAAB0, 0x3F6AAAB0, 0x3F2AAAB0, 0x3F800000, + 0x3F400000, 0x3F6AAAB0, 0x3F400000, 0x3F800000, + 0x3F555550, 0x3F6AAAB0, 0x3F555550, 0x3F800000, + 0x3F6AAAB0, 0x3F6AAAB0, 0x3F6AAAB0, 0x3F800000, + 0x3F800000, 0x3F6AAAB0, 0x3F800000, 0x3F800000, + 0x00000000, 0x3F555550, 0x3DAAAA7E, 0x3F555550, + 0x3E2AAAC1, 0x3F555550, 0x3E800000, 0x3F555550, + 0x3EAAAA9F, 0x3F555550, 0x3ED55561, 0x3F555550, + 0x3F000000, 0x3F555550, 0x3F155550, 0x3F555550, + 0x3F2AAAB0, 0x3F555550, 0x3F400000, 0x3F555550, + 0x3F555550, 0x3F555550, 0x3F6AAAB0, 0x3F555550, + 0x3F800000, 0x3F555550, 0x00000000, 0x3F400000, + 0x3DAAAA7E, 0x3F400000, 0x3E2AAAC1, 0x3F400000, + 0x3E800000, 0x3F400000, 0x3EAAAA9F, 0x3F400000, + 0x3ED55561, 0x3F400000, 0x3F000000, 0x3F400000, + 0x3F155550, 0x3F400000, 0x3F2AAAB0, 0x3F400000, + 0x3F400000, 0x3F400000, 0x3F555550, 0x3F400000, + 0x3F6AAAB0, 0x3F400000, 0x3F800000, 0x3F400000, + 0x00000000, 0x3F2AAAB0, 0x3DAAAA7E, 0x3F2AAAB0, + 0x3E2AAAC1, 0x3F2AAAB0, 0x3E800000, 0x3F2AAAB0, + 0x3EAAAA9F, 0x3F2AAAB0, 0x3ED55561, 0x3F2AAAB0, + 0x3F000000, 0x3F2AAAB0, 0x3F155550, 0x3F2AAAB0, + 0x3F2AAAB0, 0x3F2AAAB0, 0x3F400000, 0x3F2AAAB0, + 0x3F555550, 0x3F2AAAB0, 0x3F6AAAB0, 0x3F2AAAB0, + 0x3F800000, 0x3F2AAAB0, 0x00000000, 0x3F155550, + 0x3DAAAA7E, 0x3F155550, 0x3E2AAAC1, 0x3F155550, + 0x3E800000, 0x3F155550, 0x3EAAAA9F, 0x3F155550, + 0x3ED55561, 0x3F155550, 0x3F000000, 0x3F155550, + 0x3F155550, 0x3F155550, 0x3F2AAAB0, 0x3F155550, + 0x3F400000, 0x3F155550, 0x3F555550, 0x3F155550, + 0x3F6AAAB0, 0x3F155550, 0x3F800000, 0x3F155550, + 0x00000000, 0x3F000000, 0x3DAAAA7E, 0x3F000000, + 0x3E2AAAC1, 0x3F000000, 0x3E800000, 0x3F000000, + 0x3EAAAA9F, 0x3F000000, 0x3ED55561, 0x3F000000, + 0x3F000000, 0x3F000000, 0x3F155550, 0x3F000000, + 0x3F2AAAB0, 0x3F000000, 0x3F400000, 0x3F000000, + 0x3F555550, 0x3F000000, 0x3F6AAAB0, 0x3F000000, + 0x3F800000, 0x3F000000, 0x00000000, 0x3ED55561, + 0x3DAAAA7E, 0x3ED55561, 0x3E2AAAC1, 0x3ED55561, + 0x3E800000, 0x3ED55561, 0x3EAAAA9F, 0x3ED55561, + 0x3ED55561, 0x3ED55561, 0x3F000000, 0x3ED55561, + 0x3F155550, 0x3ED55561, 0x3F2AAAB0, 0x3ED55561, + 0x3F400000, 0x3ED55561, 0x3F555550, 0x3ED55561, + 0x3F6AAAB0, 0x3ED55561, 0x3F800000, 0x3ED55561, + 0x00000000, 0x3EAAAA9F, 0x3DAAAA7E, 0x3EAAAA9F, + 0x3E2AAAC1, 0x3EAAAA9F, 0x3E800000, 0x3EAAAA9F, + 0x3EAAAA9F, 0x3EAAAA9F, 0x3ED55561, 0x3EAAAA9F, + 0x3F000000, 0x3EAAAA9F, 0x3F155550, 0x3EAAAA9F, + 0x3F2AAAB0, 0x3EAAAA9F, 0x3F400000, 0x3EAAAA9F, + 0x3F555550, 0x3EAAAA9F, 0x3F6AAAB0, 0x3EAAAA9F, + 0x3F800000, 0x3EAAAA9F, 0x00000000, 0x3E800000, + 0x3DAAAA7E, 0x3E800000, 0x3E2AAAC1, 0x3E800000, + 0x3E800000, 0x3E800000, 0x3EAAAA9F, 0x3E800000, + 0x3ED55561, 0x3E800000, 0x3F000000, 0x3E800000, + 0x3F155550, 0x3E800000, 0x3F2AAAB0, 0x3E800000, + 0x3F400000, 0x3E800000, 0x3F555550, 0x3E800000, + 0x3F6AAAB0, 0x3E800000, 0x3F800000, 0x3E800000, + 0x00000000, 0x3E2AAAC1, 0x3DAAAA7E, 0x3E2AAAC1, + 0x3E2AAAC1, 0x3E2AAAC1, 0x3E800000, 0x3E2AAAC1, + 0x3EAAAA9F, 0x3E2AAAC1, 0x3ED55561, 0x3E2AAAC1, + 0x3F000000, 0x3E2AAAC1, 0x3F155550, 0x3E2AAAC1, + 0x3F2AAAB0, 0x3E2AAAC1, 0x3F400000, 0x3E2AAAC1, + 0x3F555550, 0x3E2AAAC1, 0x3F6AAAB0, 0x3E2AAAC1, + 0x3F800000, 0x3E2AAAC1, 0x00000000, 0x3DAAAA7E, + 0x3DAAAA7E, 0x3DAAAA7E, 0x3E2AAAC1, 0x3DAAAA7E, + 0x3E800000, 0x3DAAAA7E, 0x3EAAAA9F, 0x3DAAAA7E, + 0x3ED55561, 0x3DAAAA7E, 0x3F000000, 0x3DAAAA7E, + 0x3F155550, 0x3DAAAA7E, 0x3F2AAAB0, 0x3DAAAA7E, + 0x3F400000, 0x3DAAAA7E, 0x3F555550, 0x3DAAAA7E, + 0x3F6AAAB0, 0x3DAAAA7E, 0x3F800000, 0x3DAAAA7E, + 0x00000000, 0x00000000, 0x3DAAAA7E, 0x00000000, + 0x3E2AAAC1, 0x00000000, 0x3E800000, 0x00000000, + 0x3EAAAA9F, 0x00000000, 0x3ED55561, 0x00000000, + 0x3F000000, 0x00000000, 0x3F155550, 0x00000000, + 0x3F2AAAB0, 0x00000000, 0x3F400000, 0x00000000, + 0x3F555550, 0x00000000, 0x3F6AAAB0, 0x00000000, + 0x3F800000, 0x00000000, }; -#pragma pop /* 8086BAE0-8086BECC 008DC0 03EC+00 0/0 0/0 0/0 .data l_Egnd_mantDL */ #include "assets/l_Egnd_mantDL.h" /* 8086BECC-8086BED0 -00001 0004+00 0/0 0/0 0/0 .data pal_d */ -#pragma push -#pragma force_active on -SECTION_DATA static void* pal_d = (void*)&l_Egnd_mantPAL; -#pragma pop +static void* pal_d = (void*)&l_Egnd_mantPAL; /* 8086BED0-8086BED8 -00001 0008+00 0/0 0/0 0/0 .data tex_d */ -#pragma push -#pragma force_active on -SECTION_DATA static void* tex_d[2] = { +static void* tex_d[2] = { (void*)&l_Egnd_mantTEX, (void*)&l_Egnd_mantTEX_U, }; -#pragma pop -/* 8086BED8-8086BF08 0091B8 0030+00 1/1 0/0 0/0 .data d_p$3889 */ -SECTION_DATA static u8 d_p[48] = { - 0x3F, 0xB3, 0x33, 0x34, 0x3F, 0x19, 0x99, 0x9A, 0x3E, 0xB3, 0x33, 0x33, 0x3E, 0x99, 0x99, 0x9A, - 0x3E, 0x99, 0x99, 0x9A, 0x3E, 0x99, 0x99, 0x9A, 0x3E, 0x80, 0x00, 0x00, 0x3E, 0x4C, 0xCC, 0xCD, - 0x3E, 0x4C, 0xCC, 0xCD, 0x3E, 0x4C, 0xCC, 0xCD, 0x3E, 0x19, 0x99, 0x9A, 0x3D, 0xCC, 0xCC, 0xCD, -}; +static char lbl_277_bss_0; -/* 8086176C-80861F60 00054C 07F4+00 1/1 0/0 0/0 .text joint_control__FP10mant_classP8mant_j_siff - */ -static void joint_control(mant_class* param_0, mant_j_s* param_1, int param_2, f32 param_3, - f32 param_4) { +/* 80861298-808616B8 000078 0420+00 1/0 0/0 0/0 .text draw__15daMant_packet_cFv */ +void daMant_packet_c::draw() { // NONMATCHING + void* image = tex_d[0]; + void* lut = pal_d; + + j3dSys.reinitGX(); + GXSetNumIndStages(0); + dKy_setLight_again(); + dKy_GxFog_tevstr_set(this->field_0x70); + GXClearVtxDesc(); + + GXSetVtxDesc(GX_VA_POS, GX_INDEX8); + GXSetVtxDesc(GX_VA_NRM,GX_INDEX8); + GXSetVtxDesc(GX_VA_TEX0,GX_INDEX8); + + GXSetVtxAttrFmt(GX_VTXFMT0,GX_VA_POS,GX_CLR_RGBA,GX_F32,0); + GXSetVtxAttrFmt(GX_VTXFMT0,GX_VA_NRM,GX_CLR_RGB,GX_F32,0); + GXSetVtxAttrFmt(GX_VTXFMT0,GX_VA_TEX0,GX_CLR_RGBA,GX_F32,0); + + GXSetArray(GX_VA_POS, this->getPos(), 12); + GXSetArray(GX_VA_NRM, &this->mNrm[this->field_0x74 * 0xa9], 12); + GXSetArray(GX_VA_TEX0, &l_texCoord, 8); + + GXSetZCompLoc(0); + GXSetZMode(GX_ENABLE,GX_LEQUAL,GX_ENABLE); + GXSetNumChans(1); + GXSetChanCtrl(GX_COLOR0,GX_ENABLE,GX_SRC_REG,GX_SRC_REG,0xff,GX_DF_CLAMP,GX_AF_SPOT); + GXSetNumTexGens(1); + GXSetTexCoordGen2(GX_TEXCOORD0,GX_TG_MTX2x4,GX_TG_TEX0,0x3c,0,0x7d); + GXSetNumTevStages(1); + GXSetTevSwapMode(GX_TEVSTAGE0,GX_TEV_SWAP0,GX_TEV_SWAP0); + + dKy_Global_amb_set(this->field_0x70); + GXSetTevOrder(GX_TEVSTAGE0,GX_TEXCOORD0,GX_TEXMAP0,GX_COLOR0A0); + + GXColor local_84 = {1, 0, 0, 0}; + GXSetTevColor(GX_TEVREG0, local_84); + GXColor local_8c = {1, 0, 0, 0}; + GXSetTevKColor(GX_KCOLOR0, local_8c); + + GXSetTevKColorSel(GX_TEVSTAGE0,GX_TEV_KCSEL_K0); + GXSetTevColorIn(GX_TEVSTAGE0,GX_CC_KONST,GX_CC_TEXC,GX_CC_RASC,GX_CC_C0); + GXSetTevColorOp(GX_TEVSTAGE0,GX_TEV_ADD,GX_TB_ZERO,GX_CS_SCALE_4,GX_TRUE,GX_TEVPREV); + GXSetTevAlphaIn(GX_TEVSTAGE0,GX_CA_ZERO,GX_CA_KONST,GX_CA_TEXA,GX_CA_ZERO); + GXSetTevAlphaOp(GX_TEVSTAGE0,GX_TEV_ADD,GX_TB_ZERO,GX_CS_SCALE_1,GX_TRUE,GX_TEVPREV); + GXSetTevKAlphaSel(GX_TEVSTAGE0,GX_TEV_KASEL_K3_A); + GXSetAlphaCompare(GX_GREATER,0,GX_AOP_OR,GX_GREATER,0); + + GXTlutObj GStack_80; + GXInitTlutObj(&GStack_80,pal_d,GX_TL_RGB5A3,0x100); + + GXTexObj GStack_74; + GXInitTexObjCI(&GStack_74,lut,0x80,0x80,GX_TF_C8,GX_CLAMP,GX_CLAMP,0,0); + GXInitTexObjLOD(&GStack_74,GX_LINEAR,GX_LINEAR,0.0,0.0,0.0,0,0,GX_ANISO_1); + + GXLoadTlut(&GStack_80,0); + GXLoadTexObj(&GStack_74,GX_TEXMAP0); + + GXSetCullMode(GX_CULL_BACK); + + GXLoadPosMtxImm(this->mMtx, GX_PNMTX0); + Mtx MStack_54; + mDoMtx_inverseTranspose(this->mMtx, MStack_54); + + GXLoadNrmMtxImm(MStack_54,GX_PNMTX0); + GXCallDisplayList(l_Egnd_mantDL, 0x3e0); + + GXInitTexObjCI(&GStack_74,image,0x80,0x80,GX_TF_C8,GX_CLAMP,GX_CLAMP,0,0); + GXInitTexObjLOD(&GStack_74,GX_LINEAR,GX_LINEAR,0.0,0.0,0.0,0,0,GX_ANISO_1); + GXLoadTexObj(&GStack_74,GX_TEXMAP0); + + GXColor local_94 = {0, 0, 0, 0}; + GXSetTevColor(GX_TEVREG0,local_94); + GXColor local_9c = {0, 0, 0, 0}; + GXSetTevKColor(GX_KCOLOR0,local_9c); + + GXSetCullMode(GX_CULL_FRONT); + GXLoadPosMtxImm(this->mMtx2, GX_PNMTX0); + mDoMtx_inverseTranspose(this->mMtx2, MStack_54); + + GXLoadNrmMtxImm(MStack_54,GX_PNMTX0); + GXCallDisplayList(l_Egnd_mantDL, 0x3e0); + + this->field_0x74 = lbl_277_bss_0 & 1; + J3DShape::resetVcdVatCache(); } -/* 80861F60-80861F9C 000D40 003C+00 4/4 0/0 0/0 .text __dt__4cXyzFv */ -// cXyz::~cXyz() { -extern "C" void __dt__4cXyzFv() { +/* 808616B8-8086176C 000498 00B4+00 1/0 0/0 0/0 .text daMant_Draw__FP10mant_class */ +static int daMant_Draw(mant_class* i_this) { // NONMATCHING + g_env_light.settingTevStruct(0, &i_this->current.pos, &i_this->tevStr); + + MtxTrans(0.0f, 0.0f, 0.0f, 0.0f); + + Mtx* viewMtx = &j3dSys.mViewMtx; + Mtx* mtx1 = &i_this->field_0x0570.mMtx; + cMtx_concat(*viewMtx, *calc_mtx, *mtx1); + + Mtx* mtx2 = &i_this->field_0x0570.mMtx2; + cMtx_concat(*viewMtx, *calc_mtx, *mtx2); + + i_this->field_0x0570.field_0x70 = &i_this->tevStr; + + j3dSys.getDrawBuffer(0)->entryImm(&i_this->field_0x0570, 0); + + return 1; } -/* ############################################################################################## */ -/* 80862CAC-80862CB0 000060 0004+00 0/1 0/0 0/0 .rodata @4238 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4238 = 12.0f; -COMPILER_STRIP_GATE(0x80862CAC, &lit_4238); -#pragma pop +/* 8086176C-80861F60 00054C 07F4+00 1/1 0/0 0/0 .text joint_control__FP10mant_classP8mant_j_siff */ +static void joint_control(mant_class* i_this, mant_j_s* param_2, int param_3, f32 param_4, f32 param_5) { + // NONMATCHING + static f32 d_p[12] = { + 1.4000001f, 0.6f, 0.35f, 0.3f, 0.3f, 0.3f, 0.25f, 0.2f, 0.2f, 0.2f, 0.15f, 0.1f + }; + + cXyz local_134, local_140, local_14c, local_158, local_164; + BOOL bVar2 = FALSE; + f32 dVar14, dVar16, dVar17, dVar18, dVar19, dVar20; + f32 fVar1; + b_gnd_class* gndActor = (b_gnd_class*)fopAcM_SearchByID(i_this->parentActorID); -/* 80862CB0-80862CB4 000064 0004+00 0/1 0/0 0/0 .rodata @4239 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4239 = 9.0f / 10.0f; -COMPILER_STRIP_GATE(0x80862CB0, &lit_4239); -#pragma pop + if (gndActor->field_0x1fc4 != 0) { + bVar2 = TRUE; + local_158 = gndActor->field_0x1fb8; + } else if (i_this->field_0x3966 != 0) { + local_158 = i_this->field_0x3928[0] + ((i_this->field_0x3928[1] - i_this->field_0x3928[0]) * 0.5f); + local_158.y += -60.0f; + } -/* 80862CB4-80862CBC 000068 0008+00 0/1 0/0 0/0 .rodata @4240 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4240[8] = { - 0x3F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80862CB4, &lit_4240); -#pragma pop + cXyz* vec_p = param_2->field_0x0; + cXyz* pcVar9 = param_2->field_0x9c; + dBgS_GndChk(dStack_f8); + local_164 = param_2->field_0x0[0]; + local_164.y += 50.0f; -/* 80862CBC-80862CC4 000070 0008+00 0/1 0/0 0/0 .rodata @4241 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4241[8] = { - 0x40, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80862CBC, &lit_4241); -#pragma pop + dStack_f8.SetPos((Vec*)&local_164); + dVar17 = dComIfG_Bgsp().GroundCross(&dStack_f8) + 3.0f; -/* 80862CC4-80862CCC 000078 0008+00 0/1 0/0 0/0 .rodata @4242 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4242[8] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80862CC4, &lit_4242); -#pragma pop + if (dVar17 - param_2->field_0x0[0].y > 50.0f) { + dVar17 = param_2->field_0x0[0].y; + } -/* 80862CCC-80862CD0 000080 0004+00 0/1 0/0 0/0 .rodata @4243 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4243 = 10.0f; -COMPILER_STRIP_GATE(0x80862CCC, &lit_4243); -#pragma pop + cXyz cStack_170, local_17c; + cXyz local_188(0.0f, 0.0f, 0.0f); + cXyz local_194(0.0f, 0.0f, 0.0f); + cXyz local_1a0(0.0f, 0.0f, 0.0f); + + cMtx_YrotS(*calc_mtx, param_2->field_0x013a); + local_134.x = 0.0f; + local_134.y = 0.0f; + local_134.z = i_this->field_0x3954 * (cM_ssin(param_3 * 23000) * 0.05f + 1.0f); + MtxPosition(&local_134, &cStack_170); -/* 80862CD0-80862CD4 000084 0004+00 0/1 0/0 0/0 .rodata @4244 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4244 = 4.0f; -COMPILER_STRIP_GATE(0x80862CD0, &lit_4244); -#pragma pop + cXyz local_1ac; -/* 80862CD4-80862CD8 000088 0004+00 0/1 0/0 0/0 .rodata @4245 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4245 = 3.0f / 5.0f; -COMPILER_STRIP_GATE(0x80862CD4, &lit_4245); -#pragma pop + s16 sVar3 = param_3 + -6; + if (sVar3 < 0) { + sVar3 *= -1; + } -/* 80862CD8-80862CDC 00008C 0004+00 0/1 0/0 0/0 .rodata @4246 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_4246 = 0x3E860A92; -COMPILER_STRIP_GATE(0x80862CD8, &lit_4246); -#pragma pop + sVar3 *= -4000; + local_134.x = 0.0f; + local_134.y = 0.0f; + local_134.z = i_this->field_0x394c; + local_134.z *= i_this->scale.y; -/* 80862CDC-80862CE0 000090 0004+00 0/3 0/0 0/0 .rodata @4247 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4247 = -10.0f; -COMPILER_STRIP_GATE(0x80862CDC, &lit_4247); -#pragma pop + for (int i = 0; i < 13; i++, vec_p++, pcVar9++) { + if (0 < i) { + dVar16 = i_this->field_0x3950; -/* 80862CE0-80862CE4 000094 0004+00 0/2 0/0 0/0 .rodata @4248 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4248 = -20.0f; -COMPILER_STRIP_GATE(0x80862CE0, &lit_4248); -#pragma pop + local_17c = cStack_170 * d_p[i - 1]; + + dVar18 = i_this->field_0x3958; + dVar18 *= 1.0f - i * 0.07f; + + local_1ac.zero(); + + + // (1.0f / 100.0f) + if (param_4 > 0.01f) { + dVar16 = 0.0f; + f32 dVar14 = param_4 * (i * 0.05f + 1.0f); + cMtx_YrotS(*calc_mtx, param_2->field_0x013a); + cMtx_XrotM(*calc_mtx, param_2->field_0x0138); + + local_140.x = (dVar14 * 2.0f) * cM_ssin(i_this->field_0x25a0 * 0x1000 + (i * -7500) + sVar3); + local_140.y = (dVar14 * 5.0f) * cM_ssin(i_this->field_0x25a0 * 0x1800 + (i * -7000) + sVar3); + local_140.z = -15.0f; + MtxPosition(&local_140, &local_1ac); + } + + if (param_5 > 0.01f) { + dVar14 = param_5 * (i * 0.2f + 1.0f); + cMtx_YrotS(*calc_mtx, param_2->field_0x013a + -6000); + cMtx_XrotM(*calc_mtx, -5000); + + local_140.x = (dVar14 * 2.0f) * cM_ssin(i_this->field_0x25a0 * 0x448 + (i * -7000) + sVar3); + local_140.y = (dVar14 * 6.0f) * cM_ssin(i_this->field_0x25a0 * 0xc48 + (i * -7500) + sVar3); + local_140.z = param_5 * -15.0f; + MtxPosition(&local_140, &local_14c); + local_1ac += local_14c; + } + + if (i_this->field_0x3960 > 0.1f) { + local_1ac.y = i_this->field_0x3960 * cM_ssin(i_this->field_0x25a0 * 0x1100 + (i * -7000) + sVar3); + } + + dVar20 = (vec_p->x - vec_p[-1].x) + pcVar9->x + local_17c.x + local_1ac.x; + dVar19 = (vec_p->z - vec_p[-1].z) + pcVar9->z + local_17c.z + local_1ac.z; + dVar14 = local_1ac.y + (vec_p->y + pcVar9->y + dVar18); + + if (bVar2) { + dVar18 = dVar17; + local_14c = local_158 - *vec_p; + fVar1 = JMAFastSqrt(local_14c.x * local_14c.x + local_14c.z * local_14c.z); + if (fVar1 < 85.0f) { + dVar18 = local_158.y + 1.0f * JMAFastSqrt(7225.0f - fVar1 * fVar1); + } + + if (dVar14 < dVar18) { + dVar14 = dVar18; + } + } else if (i_this->field_0x3966 != 0) { + dVar18 = dVar17; + local_14c = local_158 - *vec_p; + fVar1 = JMAFastSqrt(local_14c.x * local_14c.x + local_14c.z * local_14c.z); + + if (fVar1 < 85.0f) { + dVar18 = local_158.y + JMAFastSqrt(7225.0f - fVar1 * fVar1); + } + + if (dVar14 < dVar18) { + dVar14 = dVar18; + } + } else { + if (dVar14 < dVar17) { + dVar14 = dVar17; + } + } + + dVar14 -= vec_p[-1].y; + s16 sVar4 = -cM_atan2s(dVar14, dVar19); + s16 sVar5 = (s16)cM_atan2s(dVar20, JMAFastSqrt(dVar14 * dVar14 + dVar19 * dVar19)); + + cMtx_XrotS(*calc_mtx, sVar4); + cMtx_YrotM(*calc_mtx, sVar5); + MtxPosition(&local_134, &local_14c); + + *pcVar9 = *vec_p; + + vec_p->x = vec_p[-1].x + local_14c.x; + vec_p->y = vec_p[-1].y + local_14c.y; + vec_p->z = vec_p[-1].z + local_14c.z; + + pcVar9->x = dVar16 * (vec_p->x - pcVar9->x); + pcVar9->y = dVar16 * (vec_p->y - pcVar9->y); + pcVar9->z = dVar16 * (vec_p->z - pcVar9->z); + } + } +} /* 80861F9C-80862424 000D7C 0488+00 1/1 0/0 0/0 .text mant_v_calc__FP10mant_class */ -static void mant_v_calc(mant_class* param_0) { +static void mant_v_calc(mant_class* i_this) { // NONMATCHING + cXyz local_e4, cStack_f0, local_fc, local_108; + f32 dVar16, dVar15, dVar14, uVar15; + csXyz local_134(0, 0, 0); + // mant_j_s* mantJS; + + local_fc = i_this->field_0x3928[0] - i_this->field_0x3928[1]; + local_134.y = cM_atan2s(local_fc.x, local_fc.z) + 0x4000; + + // mantJS = i_this->field_0x25a8; + + local_e4.x = 0.0f; + + dVar16 = local_fc.x / 12.0f; + dVar15 = local_fc.y / 12.0f; + dVar14 = local_fc.z / 12.0f; + + local_108 = (i_this->current.pos - i_this->field_0x3940) * 0.9f; + + if (10.0f < local_108.abs()) { + uVar15 = 0.0f; + } else { + local_134.y = cM_atan2s(local_108.x, local_108.z); + local_134.x = -cM_atan2s(local_108.y, JMAFastSqrt(local_108.x * local_108.x + local_108.z * local_108.z)); + + if (i_this->field_0x3964 != 0) { + uVar15 = 4.0f; + i_this->field_0x3964 = 0; + } else { + uVar15 = 1.0f; + } + } + + f32 uVar14 = 0.0f; + if (i_this->field_0x3965 == 0) { + if (i_this->field_0x3969 == 1) { + uVar14 = (1.0f / 20.0f); + } else if (i_this->field_0x3969 == 2) { + uVar14 = 0.6f; + } else if (i_this->field_0x3969 == 3) { + uVar14 = (7.0f / 100.0f); + } + } + + for (int i = 0; i < 13; i++) { + i_this->field_0x25a8[i].field_0x0[0].x = i_this->field_0x3928[1].x + (dVar16 * i); + i_this->field_0x25a8[i].field_0x0[0].y = i_this->field_0x3928[1].y + (dVar15 * i); + i_this->field_0x25a8[i].field_0x0[0].z = i_this->field_0x3928[1].z + (dVar14 * i); + + cMtx_YrotS(*calc_mtx, local_134.y); + + local_e4.z = cM_fsin(i * 0.2617994f); + local_e4.y = local_e4.z * -10.0f; + local_e4.z = local_e4.z * -20.0f; + + MtxPosition(&local_e4, &cStack_f0); + + i_this->field_0x25a8[i].field_0x0[i] += cStack_f0; + + i_this->field_0x25a8[i].field_0x0138 = local_134.x; + i_this->field_0x25a8[i].field_0x013a = local_134.y + (i + -6) * 0x5dc; + + for (int j = 0; j < 12; j++) { + i_this->field_0x25a8[i].field_0x0[j].x += local_108.x; + i_this->field_0x25a8[i].field_0x0[j].z += local_108.z; + } + + joint_control(i_this, i_this->field_0x25a8, i, uVar15, uVar14); + } } /* 80862424-808624E8 001204 00C4+00 1/1 0/0 0/0 .text mant_move__FP10mant_class */ -static void mant_move(mant_class* param_0) { - // NONMATCHING +static void mant_move(mant_class* i_this) { + u8 uVar1 = i_this->field_0x0570.field_0x74; + cXyz* pcVar5 = i_this->field_0x0570.getPos(); + mant_v_calc(i_this); + for (int i = 0; i < 13; i++) { + for (int j = 0; j < 13; j++) { + pcVar5[i + j * 13] = i_this->field_0x25a8[i].field_0x0[12 - j]; + } + } + + DCStoreRangeNoSync(i_this->field_0x0570.getPos(), 0x7ec); } -/* ############################################################################################## */ -/* 80862CE4-80862CE8 000098 0004+00 0/1 0/0 0/0 .rodata @4472 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4472 = 21.0f; -COMPILER_STRIP_GATE(0x80862CE4, &lit_4472); -#pragma pop - -/* 80862CE8-80862CEC 00009C 0004+00 0/1 0/0 0/0 .rodata @4473 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4473 = 0.75f; -COMPILER_STRIP_GATE(0x80862CE8, &lit_4473); -#pragma pop - -/* 80862CEC-80862CF0 0000A0 0004+00 0/1 0/0 0/0 .rodata @4474 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4474 = -5.0f; -COMPILER_STRIP_GATE(0x80862CEC, &lit_4474); -#pragma pop - -/* 80862CF0-80862CF4 0000A4 0004+00 0/1 0/0 0/0 .rodata @4475 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4475 = -3.0f; -COMPILER_STRIP_GATE(0x80862CF0, &lit_4475); -#pragma pop - -/* 80862CF4-80862CF8 0000A8 0004+00 0/1 0/0 0/0 .rodata @4476 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4476 = 25.0f; -COMPILER_STRIP_GATE(0x80862CF4, &lit_4476); -#pragma pop - -/* 80862CF8-80862CFC 0000AC 0004+00 0/1 0/0 0/0 .rodata @4477 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4477 = 11.0f / 20.0f; -COMPILER_STRIP_GATE(0x80862CF8, &lit_4477); -#pragma pop - -/* 80862CFC-80862D00 0000B0 0004+00 0/1 0/0 0/0 .rodata @4478 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4478 = -13.0f; -COMPILER_STRIP_GATE(0x80862CFC, &lit_4478); -#pragma pop - -/* 80862D00-80862D04 0000B4 0004+00 0/1 0/0 0/0 .rodata @4479 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4479 = 3.0f / 10.0f; -COMPILER_STRIP_GATE(0x80862D00, &lit_4479); -#pragma pop - -/* 80862D04-80862D08 0000B8 0004+00 0/1 0/0 0/0 .rodata @4480 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4480 = 65536.0f; -COMPILER_STRIP_GATE(0x80862D04, &lit_4480); -#pragma pop - -/* 80862D08-80862D0C 0000BC 0004+00 0/1 0/0 0/0 .rodata @4481 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4481 = 32.0f; -COMPILER_STRIP_GATE(0x80862D08, &lit_4481); -#pragma pop - -/* 80862D0C-80862D10 0000C0 0004+00 0/1 0/0 0/0 .rodata @4482 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4482 = 64.0f; -COMPILER_STRIP_GATE(0x80862D0C, &lit_4482); -#pragma pop - /* 8086BF74-8086BF78 000004 0004+00 1/1 0/0 0/0 .bss mant_cut_type */ -static u8 mant_cut_type[4]; +static int mant_cut_type; /* 808624E8-80862908 0012C8 0420+00 2/1 0/0 0/0 .text daMant_Execute__FP10mant_class */ -static void daMant_Execute(mant_class* param_0) { +static int daMant_Execute(mant_class* i_this) { // NONMATCHING + f32 in_f30, in_f31; + int unaff_r29, iVar2, uVar1, uVar4; + + i_this->field_0x25a0++; + lbl_277_bss_0++; + + if (i_this->field_0x399e != 0) { + i_this->field_0x399e--; + } + + b_gnd_class* gndActor = (b_gnd_class*)fopAcM_SearchByID(i_this->parentActorID); + + if (gndActor && gndActor->field_0x1fc4 != 0) { + i_this->field_0x394c = 21.0f; + i_this->field_0x3950 = 0.75f; + i_this->field_0x3958 = -5.0f; + i_this->field_0x3954 = -3.0f; + } else { + i_this->field_0x394c = 25.0f; + i_this->field_0x3950 = 0.55f + i_this->field_0x395c * 0.2f; + i_this->field_0x3958 = -20.0f + i_this->field_0x395c * 25.0f; + i_this->field_0x3954 = -13.0f - i_this->field_0x395c * 5.0f; + cLib_addCalc0(&i_this->field_0x395c, 1.0f, 0.05f); + cLib_addCalc0(&i_this->field_0x3960, 1.0f, 0.3f); + } + + if (i_this->field_0x3965 != 0) { + i_this->field_0x3954 = 0.0f; + i_this->field_0x3958 = -10.0f; + } + + mant_move(i_this); + + i_this->field_0x3965 = 0; + i_this->field_0x3966 = 0; + + i_this->field_0x3940 = i_this->current.pos; + + int iVar8 = 0; + + if (i_this->field_0x3967 != 0) { + mant_cut_type = i_this->field_0x3967; + + if (i_this->field_0x3968 < 15) { + i_this->field_0x3968++; + if (mant_cut_type == 0) { + iVar8 = 40; + } else if (mant_cut_type == 1) { + iVar8 = 30; + } else { + iVar8 = 20; + } + + unaff_r29 = cM_rndF(65536.0f); + in_f31 = cM_rndFX(32.0f); + in_f30 = cM_rndFX(32.0f); + } + + i_this->field_0x3967 = 0; + } + + for (int i = 0; i < iVar8; i++) { + in_f31 += cM_ssin(unaff_r29); + in_f30 -= cM_scos(unaff_r29); + + uVar4 = (int)(in_f31 + 64.0f) | (int)(in_f30 + 64.0f) << 7; + + if (mant_cut_type == 0) { + if (i <= 3 || 36 <= i) { + iVar2 = 1; + } else if (i >= 12 && 28 >= i) { + iVar2 = 9; + } else { + iVar2 = 4; + } + } else if (mant_cut_type == 1) { + if (i <= 3 || 26 <= i) { + iVar2 = 1; + } else if (i >= 12 && 18 >= i) { + iVar2 = 9; + } else { + iVar2 = 4; + } + } else if (i <= 3 || 16 <= i) { + iVar2 = 1; + } else { + iVar2 = 4; + } + + for (int j = 0; j < iVar2; j++) { + if (j != 0) { + if (j == 1) { + uVar4 = uVar1++; + } else if (j == 2) { + uVar4 = uVar1 + 0x80; + } else if (j == 3) { + uVar4 = uVar1 + 0x81; + } else { + if (j == 3) { + uVar4 = uVar1 + 0x81; + } else { + if (j == 4) { + uVar4 = uVar1 + 2; + } else if (j == 5) { + uVar4 = uVar1 + 0x82; + } else if (j == 6) { + uVar4 = uVar1 + 0x102; + } else if (j == 7) { + uVar4 = uVar1 + 0x101; + } else if (j == 8) { + uVar4 = uVar1 + 0x100; + } + } + } + } + + if (0 <= uVar4 && uVar4 < 0x4000) { + int iVar5 = (uVar4 & 7) + (uVar4 & 0x78) * 4 + (uVar4 >> 4 & 0x18) + (uVar4 & 0x3e00); + l_Egnd_mantTEX_U[iVar5] = 0; + l_Egnd_mantTEX[iVar5] = 0; + } + } + } + + return 1; } /* 80862908-80862910 0016E8 0008+00 1/0 0/0 0/0 .text daMant_IsDelete__FP10mant_class */ -static bool daMant_IsDelete(mant_class* param_0) { +static bool daMant_IsDelete(mant_class* i_this) { return true; } /* 80862910-80862918 0016F0 0008+00 1/0 0/0 0/0 .text daMant_Delete__FP10mant_class */ -static bool daMant_Delete(mant_class* param_0) { - return true; +static int daMant_Delete(mant_class* i_this) { + return 1; } -/* ############################################################################################## */ -/* 80862D10-80862D14 0000C4 0004+00 0/1 0/0 0/0 .rodata @4536 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4536 = -2000.0f; -COMPILER_STRIP_GATE(0x80862D10, &lit_4536); -#pragma pop +/* 80862918-80862AC0 0016F8 01A8+00 1/0 0/0 0/0 .text daMant_Create__FP10fopAc_ac_c */ +static int daMant_Create(fopAc_ac_c* i_this) { + // NONMATCHING + mant_class* m_this = (mant_class*)i_this; + + // m_this->field_0x0570.field_0x74 = 0; + fopAcM_SetupActor(m_this, mant_class); + m_this->field_0x259c = fopAcM_GetParam(i_this); -/* 80862D14-80862D18 0000C8 0004+00 0/1 0/0 0/0 .rodata @4537 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4537 = 2000.0f; -COMPILER_STRIP_GATE(0x80862D14, &lit_4537); -#pragma pop + fopAcM_SetMin(i_this, -2000.0f, -2000.0f, -2000.0f); + fopAcM_SetMax(i_this, 2000.0f, 2000.0f, 2000.0f); -/* 80862D18-80862D1C 0000CC 0004+00 0/1 0/0 0/0 .rodata @4538 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4538 = 30.0f; -COMPILER_STRIP_GATE(0x80862D18, &lit_4538); -#pragma pop + m_this->field_0x0570.mArg0 = m_this->field_0x259c; + m_this->field_0x394c = 30.0f; + m_this->field_0x3950 = 7.0f / 10.0f; + m_this->field_0x3958 = -10.0f; + m_this->scale.set(1.0f, 1.0f, 1.0f); -/* 80862D1C-80862D20 0000D0 0004+00 0/1 0/0 0/0 .rodata @4539 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4539 = 7.0f / 10.0f; -COMPILER_STRIP_GATE(0x80862D1C, &lit_4539); -#pragma pop + for (int i = 0; i < 0x4000; i++) { + l_Egnd_mantTEX_U[i] = 6; + } + + lbl_277_bss_0 = 0; + daMant_Execute(m_this); + return 4; +} + +/* 80862AC0-80862B3C 0018A0 007C+00 1/1 0/0 0/0 .text __dt__8mant_j_sFv */ +mant_j_s::~mant_j_s() {} + +/* 80862B3C-80862BA4 00191C 0068+00 1/1 0/0 0/0 .text __ct__8mant_j_sFv */ +mant_j_s::mant_j_s() {} + +/* 80862BA4-80862C40 001984 009C+00 1/0 0/0 0/0 .text __dt__15daMant_packet_cFv */ +daMant_packet_c::~daMant_packet_c() {} + +/* 80862C40-80862C44 001A20 0004+00 2/2 0/0 0/0 .text __ct__4cXyzFv */ +// cXyz::cXyz() { +extern "C" void __ct__4cXyzFv() { + /* empty function */ +} /* 8086BF08-8086BF28 -00001 0020+00 1/0 0/0 0/0 .data l_daMant_Method */ static actor_method_class l_daMant_Method = { - (process_method_func)daMant_Create__FP10fopAc_ac_c, - (process_method_func)daMant_Delete__FP10mant_class, - (process_method_func)daMant_Execute__FP10mant_class, - (process_method_func)daMant_IsDelete__FP10mant_class, - (process_method_func)daMant_Draw__FP10mant_class, + (process_method_func)daMant_Create, + (process_method_func)daMant_Delete, + (process_method_func)daMant_Execute, + (process_method_func)daMant_IsDelete, + (process_method_func)daMant_Draw, }; /* 8086BF28-8086BF58 -00001 0030+00 0/0 0/0 1/0 .data g_profile_MANT */ @@ -812,38 +835,3 @@ extern actor_process_profile_definition g_profile_MANT = { fopAc_ACTOR_e, // mActorType fopAc_CULLBOX_CUSTOM_e, // cullType }; - -/* 8086BF58-8086BF6C 009238 0014+00 2/2 0/0 0/0 .data __vt__15daMant_packet_c */ -SECTION_DATA extern void* __vt__15daMant_packet_c[5] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)entry__9J3DPacketFP13J3DDrawBuffer, - (void*)draw__15daMant_packet_cFv, - (void*)__dt__15daMant_packet_cFv, -}; - -/* 80862918-80862AC0 0016F8 01A8+00 1/0 0/0 0/0 .text daMant_Create__FP10fopAc_ac_c */ -static void daMant_Create(fopAc_ac_c* param_0) { - // NONMATCHING -} - -/* 80862AC0-80862B3C 0018A0 007C+00 1/1 0/0 0/0 .text __dt__8mant_j_sFv */ -mant_j_s::~mant_j_s() { - // NONMATCHING -} - -/* 80862B3C-80862BA4 00191C 0068+00 1/1 0/0 0/0 .text __ct__8mant_j_sFv */ -mant_j_s::mant_j_s() { - // NONMATCHING -} - -/* 80862BA4-80862C40 001984 009C+00 1/0 0/0 0/0 .text __dt__15daMant_packet_cFv */ -daMant_packet_c::~daMant_packet_c() { - // NONMATCHING -} - -/* 80862C40-80862C44 001A20 0004+00 2/2 0/0 0/0 .text __ct__4cXyzFv */ -// cXyz::cXyz() { -extern "C" void __ct__4cXyzFv() { - /* empty function */ -}