diff --git a/.clangd b/.clangd index 3221e3cea..aed8f88e8 100644 --- a/.clangd +++ b/.clangd @@ -1,9 +1,11 @@ # https://clangd.llvm.org/config CompileFlags: Add: [ + "-fdeclspec", "-Wno-c++11-compat-deprecated-writable-strings", "-Wno-undefined-inline", "-Wno-multichar", + "-Wno-c++11-extensions", "-Wsometimes-uninitialized", "-Wlogical-op-parentheses", "-Wbitwise-op-parentheses", diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index a62f16036..4cab970de 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -40,6 +40,7 @@ jobs: run: | python configure.py --map --version ${{ matrix.version }} \ --binutils /binutils --compilers /compilers + ninja diff ninja all_source build/${{ matrix.version }}/progress.json \ build/${{ matrix.version }}/report.json diff --git a/configure.py b/configure.py index 363ff3fe0..5f91627f4 100755 --- a/configure.py +++ b/configure.py @@ -152,7 +152,7 @@ if args.no_asm: config.binutils_tag = "2.42-1" config.compilers_tag = "20240706" config.dtk_tag = "v1.4.1" -config.objdiff_tag = "v3.0.0-beta.5" +config.objdiff_tag = "v3.0.0-beta.6" config.sjiswrap_tag = "v1.2.0" config.wibo_tag = "0.6.11" @@ -500,7 +500,7 @@ config.libs = [ Object(Matching, "d/d_cc_s.cpp"), Object(Matching, "d/d_cc_uty.cpp"), Object(NonMatching, "d/d_cam_param.cpp"), - Object(MatchingFor("GZLE01", "GZLP01"), "d/d_cam_type.cpp"), + Object(Matching, "d/d_cam_type.cpp"), Object(Matching, "d/d_cam_style.cpp"), Object(Matching, "d/d_cam_type2.cpp"), Object(NonMatching, "d/d_ev_camera.cpp"), @@ -1150,7 +1150,7 @@ config.libs = [ "gx", [ Object(NonMatching, "dolphin/gx/GXInit.c", extra_cflags=["-opt nopeephole"]), - Object(NonMatching, "dolphin/gx/GXFifo.c"), + Object(Matching, "dolphin/gx/GXFifo.c"), Object(NonMatching, "dolphin/gx/GXAttr.c"), Object(NonMatching, "dolphin/gx/GXMisc.c"), Object(NonMatching, "dolphin/gx/GXGeometry.c"), @@ -1468,7 +1468,7 @@ config.libs = [ ActorRel(NonMatching, "d_a_kantera"), ActorRel(NonMatching, "d_a_kn"), ActorRel(NonMatching, "d_a_kokiie"), - ActorRel(NonMatching, "d_a_ks"), + ActorRel(Matching, "d_a_ks", extra_cflags=["-sym off"]), ActorRel(NonMatching, "d_a_kt"), # regalloc, weak func order ActorRel(NonMatching, "d_a_mflft"), ActorRel(NonMatching, "d_a_npc_cb1"), @@ -1761,6 +1761,7 @@ out_dir = config.build_dir / version # This generates the build steps needed for preprocessing def emit_build_rule(asset): + assert config.custom_build_steps is not None steps = config.custom_build_steps.setdefault("pre-compile", []) custom_data = asset.get("custom_data") or {} diff --git a/docs/decompiling.md b/docs/decompiling.md index e99f0a4d6..fb808f070 100644 --- a/docs/decompiling.md +++ b/docs/decompiling.md @@ -10,9 +10,10 @@ If you haven't already, you should first follow the instructions in the [readme] 2. [Setting up classes/structs](#setting-up-classesstructs) 3. [Decompiling functions](#decompiling-functions) 4. [Inline functions and how to read the debug maps](#inline-functions-and-how-to-read-the-debug-maps) -5. [Fixing minor nonmatching issues](#fixing-minor-nonmatching-issues) -6. [Linking a 100% matching object](#linking-a-100-matching-object) -7. [Documentation and naming](#documentation-and-naming) +5. [Recognizing switch statements](#recognizing-switch-statements) +6. [Fixing minor nonmatching issues](#fixing-minor-nonmatching-issues) +7. [Linking a 100% matching object](#linking-a-100-matching-object) +8. [Documentation and naming](#documentation-and-naming) ## Choosing an object to decompile @@ -210,7 +211,7 @@ void daWall_c::set_se() { } ``` -That does match in this case (it won't always), but we can improve it by checking this function in the debug map for this actor. Copy paste the function's *mangled* name (the last part of the comment after .text, e.g. `set_se__8daWall_cFv`) and Ctrl+F for it in the `D.map` for your actor. +That does match in this case (it won't always), but we can improve it by checking this function in the debug map for this actor. Copy paste the function's *mangled* name (the last part of the comment after .text, e.g. `set_se__8daWall_cFv`) and `Ctrl+F` for it in the `D.map` for your actor. You should see something along these lines: ``` @@ -302,6 +303,216 @@ Specifically, inlines at the same depth/indentation as each other in the linker This doesn't tell us as much as the real linker trees, and is based on guesswork, but going through this process can sometimes help you to determine what inlines you should be using where. +## Recognizing switch statements + +The way that switch statements get compiled into assembly is not always obvious, and you usually can't rely on Ghidra to decompile them properly either. So we'll go over some things to watch out for that can indicate when a switch should be used. + +The compiler can choose to compile a switch statement in two possible ways: As a tree of comparisons, or as a jump table. + +We'll go over how to recognize what each of these types of switches looks like in both Ghidra and objdiff/assembly. We'll also cover how to use m2c to help decompile them, as m2c handles switches better than Ghidra. + +### Comparison tree switches + +The most common way for a switch to be compiled is as a tree of comparisons: `cmpwi`, `beq`, `bge`, `cmpwi`, etc, eventually ending in `b`, and then followed by the case blocks. Here's what an example with seven cases looks like in objdiff: + +![A comparison tree switch in objdiff](images/objdiff_tree_switch.png) + +The comparison tree starts at offset 4 in this function and ends at offset 48. The first case block starts at offset 4c, the second at offset 54, etc. + +Be aware that Ghidra does not handle this type of switch statement very well. It sees the comparisons and assumes they are if/else statements instead of a switch. If you only looked at Ghidra, you probably wouldn't be able to tell this was a switch at all, and would be tempted to write it with if statements instead (which will not match): + +![A comparison tree switch in Ghidra](images/ghidra_tree_switch.png) + +Furthermore, note that Ghidra almost always displays the case blocks in the wrong order for this type of switch statement. +In this example, the return values in Ghidra are ordered like so: 3, 4, -1, 1, 0, 2, 5. The assembly in objdiff shows them as 0, 1, 5, 2, 3, 4, -1. You need to write the cases in the order shown by objdiff, not the order shown by Ghidra. + +But decompiling switch statements with just Ghidra and objdiff can be difficult not only because Ghidra shows case blocks in the wrong order, but also because neither Ghidra nor objdiff show all of the case constants needed for the switch. +For example, the `return 4;` case block in the above function is reached only when `mAnswer` is equal to `5`, so you need to write `case 5:`. But the constant 5 is not shown anywhere in either Ghidra or objdiff, as the compiler optimized it into the tree as a comparison against 4 and a comparison against 6 instead. + +But there's another decompiler you can use instead of Ghidra that handles switch statements better: [m2c](https://github.com/matt-kempster/m2c). + +To decompile a switch with m2c, first open the `.s` assembly file for your TU. Then find the function that has the switch in it and copy the whole thing to your clipboard, starting with the `.fn` line and ending with the `.endfn` line for that function. + +Next go to [this online version of m2c](https://simonsoftware.se/other/m2c.html) and paste the contents of your function into the assembly field. Switch the "Target arch, compiler, & language:" field to "PPC, MWCC, C++" and hit decompile. + +m2c should give you output similar to this: +```c++ +s32 getAnswer__10daSwTact_cFv(daSwTact_c *this) { + u8 temp_r0; + + temp_r0 = this->unk2A4; + switch ((s32) temp_r0) { /* irregular */ + case 0x0: + return 0; + case 0x1: + return 1; + case 0x2: + return 5; + case 0x3: + return 2; + case 0x4: + return 3; + case 0x5: + return 4; + default: + return -1; + } +} +``` + +m2c isn't aware of field names/types defined in Ghidra or the decomp, but other than that, its output is pretty close. For comparison, here is the same function when fully decompiled and matching: + +```c++ +/* 0000038C-00000410 .text getAnswer__10daSwTact_cFv */ +s32 daSwTact_c::getAnswer() { + switch (mAnswer) { + case 0: + return 0; + case 1: + return 1; + case 2: + return 5; + case 3: + return 2; + case 4: + return 3; + case 5: + return 4; + case 0xFF: + default: + return -1; + } +} +``` + +One important detail in the above example is the `case 0xFF:`. Because this case leads to the same block as the default case, it has no functional effect on what the code does, and so m2c does not include it. However, if you don't include that useless case, the comparison tree will be missing some parts and the function will not match: + +![A comparison tree missing a useless case label in objdiff](images/objdiff_tree_switch_useless.png) + +If you run into a situation like this, try looking through values that are compared against in objdiff or Ghidra and adding them as cases above `default:` (or if no default label exists, just make them immediately `break;` without doing anything). Sometimes the value you need to add as a case will be plus or minus one compared to the actual value being compared against, so it may take some trial and error to find which specific cases are required to get the tree to generate correctly. + +Also note that occasionally, you may run into a very small switch statement that only has a single case label (optionally plus the default label). In these cases, there will be no `bge` in the assembly, just `cmpwi`, `beq`, `b`. For example: + +![A comparison tree switch in objdiff](images/objdiff_tree_switch_small.png) + +Both Ghidra *and* m2c will decompile these as if statements, but if you try writing them like that you'll see that the code doesn't match as the compiler produces `cmpwi`, `bne` with no `beq` or `b`. Here is how the small switch above should be decompiled to match: + +```c++ +/* 8006C910-8006C948 .text keyCreate__12dDoor_key2_cFi */ +BOOL dDoor_key2_c::keyCreate(int type) { + mbIsBossDoor = type; + switch (type) { + case 1: return keyCreate_Bkey(); + default: return keyCreate_Nkey(); + } +} +``` + +### Jump table switches + +The other way the compiler may choose to compile a switch statement is as a jump table: `lis`, `addi`, `slwi`, `lwzx`, `mtcr`, `bctr`. +This type of switch first loads a table located in the .data section (`lis`, `addi`), indexes into it with a variable (`slwi`, `lwzx`), and then jumps to the address read from the table (`mtcr`, `bctr`). + +Unlike comparison tree switches, Ghidra is able to correctly recognize jump table switches as being switches, and will show them as such. For example: + +![A jump table switch in Ghidra](images/ghidra_jump_table_switch.png) + +However, Ghidra still has the issue where it will show the case blocks out of order for this type of switch as well sometimes. The last 4 cases in the above example are not in the correct order and won't match when written like that. + +You could write them in Ghidra's wrong order and then shuffle them around until they match in objdiff. +However, note that even if a function shows 100% matching in objdiff, it's possible that the contents of the jump table could still be wrong. You would need to look at the .data section in objdiff, as the mismatch won't be shown within the function itself in this situation. + +Alternatively, we can use m2c for this type of switch statement as well, and it will decompile the cases in the proper order. +The process for decompiling jump table switches with m2c is similar to comparison tree switches, but there's an extra step required for m2c to find the jump table. + +First open the assembly file and copy paste the function containing the switch into [m2c](https://simonsoftware.se/other/m2c.html) as mentioned earlier. +Next, find where the assembly loads the jump table. It will look something like `lis r5, "@7298"@ha` followed by `addi r5, r5, "@7298"@l`, but the number after the `@` will be different. `Ctrl+F` for that `@` + number in the assembly file to find the contents of the jump table. It will look similar to this: + +```asm +.obj "@7298", local + .rel setAnmFromMsgTagSa__13daNpcPeople_cFi, .L_00007A48 + .rel setAnmFromMsgTagSa__13daNpcPeople_cFi, .L_00007A58 + .rel setAnmFromMsgTagSa__13daNpcPeople_cFi, .L_00007A78 + .rel setAnmFromMsgTagSa__13daNpcPeople_cFi, .L_00007A48 + .rel setAnmFromMsgTagSa__13daNpcPeople_cFi, .L_00007A88 + .rel setAnmFromMsgTagSa__13daNpcPeople_cFi, .L_00007A98 + .rel setAnmFromMsgTagSa__13daNpcPeople_cFi, .L_00007A58 + .rel setAnmFromMsgTagSa__13daNpcPeople_cFi, .L_00007A58 + .rel setAnmFromMsgTagSa__13daNpcPeople_cFi, .L_00007A68 + .rel setAnmFromMsgTagSa__13daNpcPeople_cFi, .L_00007A58 +.endobj "@7298" +``` + +Copy the table, and paste it at the top of "Assembly" field in m2c (above the function itself). Then, replace the compiler-generated name (e.g. `@7298`) with the name `jtbl` (both the ones inside the function and the one before jump table itself). +Finally, add a new line `.section .data` before the jump table, as well as a new line `.section .text` after the table, before the function. It will look like this: + +![Jump table switch assembly for m2c](images/m2c_jump_table_switch.png) + +Now you can click "Decompile" and m2c will decompile the switch statement with its cases in the proper order, like this: + +```cpp +void setAnmFromMsgTagSa__13daNpcPeople_cFi(daNpcPeople_c *this, u32 arg0) { + switch (arg0) { + case 0: + case 3: + setAnmTbl__13daNpcPeople_cFP13sPeopleAnmDati(this, &@2100 + 0x490, 1); + return; + case 1: + case 6: + case 7: + case 9: + setAnmTbl__13daNpcPeople_cFP13sPeopleAnmDati(this, &@2100 + 0x494, 1); + return; + case 8: + setAnmTbl__13daNpcPeople_cFP13sPeopleAnmDati(this, &@2100 + 0x5D4, 1); + return; + case 2: + setAnmTbl__13daNpcPeople_cFP13sPeopleAnmDati(this, &@2100 + 0x5D8, 1); + return; + case 4: + setAnmTbl__13daNpcPeople_cFP13sPeopleAnmDati(this, &@2100 + 0x5DC, 1); + return; + case 5: + setAnmTbl__13daNpcPeople_cFP13sPeopleAnmDati(this, &@2100 + 0x5E0, 1); + /* fallthrough */ + default: + return; + } +} +``` + +For comparison, here is how that switch statement should actually be decompiled: + +```cpp +/* 00007A14-00007AB4 .text setAnmFromMsgTagSa__13daNpcPeople_cFi */ +void daNpcPeople_c::setAnmFromMsgTagSa(int param_1) { + switch(param_1) { + case 0: + case 3: + setAnmTbl(l_npc_anm_wait, 1); + break; + case 1: + case 6: + case 7: + case 9: + setAnmTbl(l_npc_anm_talk, 1); + break; + case 8: + setAnmTbl(l_npc_anm_talk_sa, 1); + break; + case 2: + setAnmTbl(l_npc_anm_talk2_sa, 1); + break; + case 4: + setAnmTbl(l_npc_anm_talk3_sa, 1); + break; + case 5: + setAnmTbl(l_npc_anm_kiai_sa, 1); + break; + } +} +``` + ## Fixing minor nonmatching issues Once you've gone through and decompiled every function in your chosen TU, you might have run into a few functions that you could only get *mostly* matching, falling short of showing a 100% match in objdiff. @@ -377,7 +588,7 @@ Your web browser will be opened automatically, and you should see a blank page t Switch from the "Source code" tab to the "Context" tab. Search through this tab for the specific function you had opened up. Cut (don't copy) this entire function out of the Context tab and paste it into the Source code tab. You also might need to go back to the Context tab and delete all the code that comes *after* the function you just cut in order for it to compile properly (don't touch the context that comes before it though). -If done correctly, the scratch should compile and show the same issue as you were seeing in objdiff. Save (Ctrl+S) the scratch. Now you can share this scratch's URL in the [tww-decomp-help](https://discord.com/channels/688807550715560050/1150077114347966545) channel of the ZeldaRET Discord server and ask for help. +If done correctly, the scratch should compile and show the same issue as you were seeing in objdiff. Save (`Ctrl+S`) the scratch. Now you can share this scratch's URL in the [tww-decomp-help](https://discord.com/channels/688807550715560050/1150077114347966545) channel of the ZeldaRET Discord server and ask for help. Note that scratches only show functions, not data. So if all the functions match 100% but some data doesn't, you'll have to figure that out locally using objdiff. diff --git a/docs/images/ghidra_jump_table_switch.png b/docs/images/ghidra_jump_table_switch.png new file mode 100644 index 000000000..fb167e389 Binary files /dev/null and b/docs/images/ghidra_jump_table_switch.png differ diff --git a/docs/images/ghidra_tree_switch.png b/docs/images/ghidra_tree_switch.png new file mode 100644 index 000000000..2f80251e1 Binary files /dev/null and b/docs/images/ghidra_tree_switch.png differ diff --git a/docs/images/m2c_jump_table_switch.png b/docs/images/m2c_jump_table_switch.png new file mode 100644 index 000000000..54cf9feed Binary files /dev/null and b/docs/images/m2c_jump_table_switch.png differ diff --git a/docs/images/objdiff_tree_switch.png b/docs/images/objdiff_tree_switch.png new file mode 100644 index 000000000..bd5457195 Binary files /dev/null and b/docs/images/objdiff_tree_switch.png differ diff --git a/docs/images/objdiff_tree_switch_small.png b/docs/images/objdiff_tree_switch_small.png new file mode 100644 index 000000000..e6f91907f Binary files /dev/null and b/docs/images/objdiff_tree_switch_small.png differ diff --git a/docs/images/objdiff_tree_switch_useless.png b/docs/images/objdiff_tree_switch_useless.png new file mode 100644 index 000000000..8e23351c3 Binary files /dev/null and b/docs/images/objdiff_tree_switch_useless.png differ diff --git a/include/JSystem/JUtility/JUTException.h b/include/JSystem/JUtility/JUTException.h index 20bdb1408..189603ac9 100644 --- a/include/JSystem/JUtility/JUTException.h +++ b/include/JSystem/JUtility/JUTException.h @@ -34,6 +34,8 @@ STATIC_ASSERT(sizeof(JUTExternalFB) == 0x14); #define JUT_PRINT_FLOAT 8 #define JUT_PRINT_STACK 16 +typedef void (*JUTExceptionUserCallback)(OSError, OSContext*, u32, u32); + class JUTException : public JKRThread { public: enum EInfoPage { @@ -79,8 +81,8 @@ public: static void panic_f(char const*, int, char const*, ...); static void setFPException(u32); static bool searchPartialModule(u32, u32*, u32*, u32*, u32*); - static OSErrorHandler setPreUserCallback(OSErrorHandler); - static OSErrorHandler setPostUserCallback(OSErrorHandler); + static JUTExceptionUserCallback setPreUserCallback(JUTExceptionUserCallback); + static JUTExceptionUserCallback setPostUserCallback(JUTExceptionUserCallback); static void appendMapFile(char const*); static bool queryMapAddress(char*, u32, s32, u32*, u32*, char*, u32, bool, bool); static bool queryMapAddress_single(char*, u32, s32, u32*, u32*, char*, u32, bool, @@ -109,8 +111,8 @@ private: static JSUList sMapFileList; static OSMessage sMessageBuffer[1]; static JUTException* sErrorManager; - static OSErrorHandler sPreUserCallback; - static OSErrorHandler sPostUserCallback; + static JUTExceptionUserCallback sPreUserCallback; + static JUTExceptionUserCallback sPostUserCallback; static void* sConsoleBuffer; static u32 sConsoleBufferSize; static JUTConsole* sConsole; diff --git a/include/SSystem/SComponent/c_angle.h b/include/SSystem/SComponent/c_angle.h index b6910aaad..5e2d2d14e 100644 --- a/include/SSystem/SComponent/c_angle.h +++ b/include/SSystem/SComponent/c_angle.h @@ -13,9 +13,15 @@ public: const static cSAngle _90; const static cSAngle _180; const static cSAngle _270; +#ifdef __MWERKS__ cSAngle() {} ~cSAngle() {} cSAngle(const cSAngle&); +#else + cSAngle() = default; + ~cSAngle() = default; + cSAngle(const cSAngle&) = default; +#endif cSAngle(s16); cSAngle(float); s16 Val() const { return mAngle; } @@ -45,7 +51,9 @@ public: bool operator<(const cSAngle& other) const { return mAngle < other.mAngle; } bool operator>(const cSAngle& other) const { return mAngle > other.mAngle; } operator s16() const { return mAngle; } +#ifdef __MWERKS__ void operator=(const cSAngle& other) { mAngle = other.mAngle; } +#endif static inline cSAngle getMaxNegative() { return cSAngle((s16)-0x8000); } inline void mirrorAtMaxNeg() { *this = cSAngle((s16)-0x8000) - *this; } }; @@ -131,12 +139,18 @@ private: cSAngle mInclination; // original: U public: - cSGlobe() {}; +#ifdef __MWERKS__ + cSGlobe() {} + ~cSGlobe() {} cSGlobe(const cSGlobe&); +#else + cSGlobe() = default; + ~cSGlobe() = default; + cSGlobe(const cSGlobe&) = default; +#endif cSGlobe(float, short, short); cSGlobe(float, const cSAngle&, const cSAngle&); cSGlobe(const cXyz&); - ~cSGlobe() {} cSGlobe& Formal(); void Val(const cSGlobe&); void Val(float, short, short); @@ -154,6 +168,6 @@ public: void Polar(cSPolar*) const; cXyz Norm() const; cSGlobe& Invert(); -}; +}; // Size: 0x8 #endif /* C_ANGLE_H */ diff --git a/include/SSystem/SComponent/c_bg_w.h b/include/SSystem/SComponent/c_bg_w.h index 04dd17289..6918c9272 100644 --- a/include/SSystem/SComponent/c_bg_w.h +++ b/include/SSystem/SComponent/c_bg_w.h @@ -273,8 +273,18 @@ public: /* 0xA4 */ int m_rootGrpIdx; }; -bool cBgW_CheckBGround(f32 ny); -bool cBgW_CheckBRoof(f32 ny); -bool cBgW_CheckBWall(f32 ny); +inline bool cBgW_CheckBGround(f32 ny) { + return ny >= 0.5f; +} + +inline bool cBgW_CheckBRoof(f32 ny) { + return ny < (-4.0f / 5.0f); +} + +inline bool cBgW_CheckBWall(float y) { + if (!cBgW_CheckBGround(y) && !cBgW_CheckBRoof(y)) + return true; + return false; +} #endif /* C_BG_W_H */ diff --git a/include/SSystem/SComponent/c_xyz.h b/include/SSystem/SComponent/c_xyz.h index b6fb430fc..7c3e1cdab 100644 --- a/include/SSystem/SComponent/c_xyz.h +++ b/include/SSystem/SComponent/c_xyz.h @@ -18,18 +18,24 @@ struct cXyz : Vec { static const cXyz BaseXZ; static const cXyz BaseYZ; static const cXyz BaseXYZ; +#ifdef __MWERKS__ + cXyz() {} ~cXyz() {} - /* inlined */ cXyz() {} - cXyz(f32 pX, f32 pY, f32 pZ) { - x = pX; - y = pY; - z = pZ; - } cXyz(const cXyz& vec) { x = vec.x; y = vec.y; z = vec.z; } +#else + cXyz() = default; + ~cXyz() = default; + cXyz(const cXyz& vec) = default; +#endif + cXyz(f32 pX, f32 pY, f32 pZ) { + x = pX; + y = pY; + z = pZ; + } cXyz(const Vec& vec) { x = vec.x; y = vec.y; diff --git a/include/c/c_damagereaction.h b/include/c/c_damagereaction.h index 5370a60da..dbf406772 100644 --- a/include/c/c_damagereaction.h +++ b/include/c/c_damagereaction.h @@ -17,7 +17,7 @@ public: /* 0x007 */ u8 m007[0x008 - 0x007]; /* 0x008 */ f32 mYOffset; /* 0x00C */ s8 m00C; - /* 0x00D */ s8 mState; + /* 0x00D */ s8 mMode; /* 0x00E */ s16 mFreezeTimer; /* 0x010 */ s16 mMoveDelayTimer; /* 0x012 */ s16 mAngleY; @@ -46,7 +46,7 @@ struct enemyfire { public: /* 0x000 */ fopAc_ac_c* mpActor; /* 0x004 */ s16 mFireDuration; - /* 0x006 */ s8 mState; + /* 0x006 */ s8 mMode; /* 0x007 */ u8 m007[0x008 - 0x007]; /* 0x008 */ s16 mFireTimer; /* 0x00A */ u8 m00A[0x00C - 0x00A]; @@ -77,8 +77,8 @@ public: }; /* 0x000 */ fopEn_enemy_c* mpEnemy; - /* 0x004 */ s16 m004; - /* 0x006 */ s16 mState; + /* 0x004 */ s16 mMode; + /* 0x006 */ s16 mAction; /* 0x008 */ s16 mEnemyType; /* 0x00A */ u8 m00A[0x00C - 0x00A]; /* 0x00C */ int mTimer; diff --git a/include/d/actor/d_a_am.h b/include/d/actor/d_a_am.h index b4c5afeac..484350a6f 100644 --- a/include/d/actor/d_a_am.h +++ b/include/d/actor/d_a_am.h @@ -19,7 +19,7 @@ public: /* 0x02C2 */ u8 mStartsInactive; /* 0x02C3 */ u8 mSwitch; /* 0x02C4 */ u8 mAction; - /* 0x02C5 */ u8 mState; + /* 0x02C5 */ u8 mMode; /* 0x02C6 */ u8 mHugeKnockback; /* 0x02C7 */ bool mbIsBodyBeingHit; /* 0x02C8 */ s16 mCountDownTimers[4]; diff --git a/include/d/actor/d_a_am2.h b/include/d/actor/d_a_am2.h index 0d8632396..6128c619f 100644 --- a/include/d/actor/d_a_am2.h +++ b/include/d/actor/d_a_am2.h @@ -21,7 +21,7 @@ public: /* 0x2CA */ u8 mStartsInactive; /* 0x2CB */ u8 mSwitch; /* 0x2CC */ u8 mAction; - /* 0x2CD */ u8 mState; + /* 0x2CD */ u8 mMode; /* 0x2CE */ u8 m2CE; /* 0x2CF */ bool mbIsWeakBeingHit; /* 0x2D0 */ bool mbNotInHomeRoom; diff --git a/include/d/actor/d_a_boko.h b/include/d/actor/d_a_boko.h index bd76f956b..b4754b17a 100644 --- a/include/d/actor/d_a_boko.h +++ b/include/d/actor/d_a_boko.h @@ -117,6 +117,11 @@ public: /* 0x8AC */ ProcFunc_t mCurrentProc; }; +class daBoko_HIO_c { +public: + // Size 1 in retail, size 0x14 in debug. +}; + class daBoko_HIO_c0 { public: static const s16 throw_timer; diff --git a/include/d/actor/d_a_demo_item.h b/include/d/actor/d_a_demo_item.h index 8e9385fd9..f1648ea4b 100644 --- a/include/d/actor/d_a_demo_item.h +++ b/include/d/actor/d_a_demo_item.h @@ -9,6 +9,13 @@ class JPABaseEmitter; class daDitem_c : public daItemBase_c { public: + enum ArgFlag { + FLAG_UNK01 = 0x01, + FLAG_UNK02 = 0x02, + FLAG_UNK04 = 0x04, + FLAG_UNK08 = 0x08, + }; + BOOL chkArgFlag(u8 flag) { return mArgFlag & flag; } void clrFlag() { cLib_setBit(mFlag, (u8)0); } void setOffsetPos(cXyz pos) { mOffsetPos = pos; } diff --git a/include/d/actor/d_a_dr.h b/include/d/actor/d_a_dr.h index adba4a25d..99be10431 100644 --- a/include/d/actor/d_a_dr.h +++ b/include/d/actor/d_a_dr.h @@ -16,7 +16,7 @@ public: /* 0x290 */ u8 m290[0x2AC - 0x290]; /* 0x2AC */ request_of_phase_process_class mPhs; /* 0x2B4 */ mDoExt_McaMorf* mpMorf; - /* 0x2B8 */ u8 mState; + /* 0x2B8 */ u8 mMode; /* 0x2B9 */ u8 m2B9[0x2BA - 0x2B9]; /* 0x2BA */ s16 mCountDownTimers[3]; /* 0x2C0 */ int mCurrBckIdx; diff --git a/include/d/actor/d_a_fganon.h b/include/d/actor/d_a_fganon.h index 347770926..f06c8599c 100644 --- a/include/d/actor/d_a_fganon.h +++ b/include/d/actor/d_a_fganon.h @@ -30,8 +30,8 @@ public: /* 0x2D1 */ u8 m2D1[0x2D4 - 0x2D1]; /* 0x2D4 */ dKy_tevstr_c mKenTevStr; /* 0x384 */ s16 m384; - /* 0x386 */ s16 m386; - /* 0x388 */ s16 m388; + /* 0x386 */ s16 mAction; + /* 0x388 */ s16 mMode; /* 0x38A */ s16 m38A; /* 0x38C */ cXyz m38C; /* 0x398 */ s16 m398; diff --git a/include/d/actor/d_a_gm.h b/include/d/actor/d_a_gm.h index f41284fa0..6b3d77c5a 100644 --- a/include/d/actor/d_a_gm.h +++ b/include/d/actor/d_a_gm.h @@ -7,7 +7,9 @@ class gm_class : public fopEn_enemy_c { public: /* 0x2AC */ u8 m2AC[0x2CD - 0x2AC]; /* 0x2CD */ u8 m2CD; - /* 0x2CE */ u8 m2CE[0x3D0 - 0x2CE]; + /* 0x2CE */ u8 m2CE[0x31E - 0x2CE]; + /* 0x31E */ s16 m31E; + /* 0x320 */ u8 m320[0x3D0 - 0x320]; /* 0x3D0 */ f32 z; /* 0x3D4 */ u8 m3D4[0x3DC - 0x3D4]; /* 0x3DC */ f32 m3DC; diff --git a/include/d/actor/d_a_ks.h b/include/d/actor/d_a_ks.h index d22c1f1df..b1313ab55 100644 --- a/include/d/actor/d_a_ks.h +++ b/include/d/actor/d_a_ks.h @@ -2,13 +2,59 @@ #define D_A_KS_H #include "f_op/f_op_actor.h" -#include "SSystem/SComponent/c_bg_s_poly_info.h" +#include "c/c_damagereaction.h" + +class mDoExt_McaMorf; +class mDoExt_brkAnm; +class mDoExt_btkAnm; +class daPy_lk_c; class ks_class : public fopEn_enemy_c { public: - /* 0x2AC */ u8 m2AC[0x44C - 0x2AC]; - /* 0x44C */ cBgS_PolyInfo m44C; - /* 0x45C */ u8 m45C[0xC88 - 0x45C]; + /* 0x2AC */ request_of_phase_process_class mPhs; + /* 0x2B4 */ mDoExt_McaMorf* mpBodyMorf; + /* 0x2B8 */ mDoExt_McaMorf* mpEyeMorf; + /* 0x2BC */ mDoExt_btkAnm* mpEyeBtkAnm; + /* 0x2C0 */ mDoExt_brkAnm* mpBodyBrkAnm; + /* 0x2C4 */ mDoExt_brkAnm* mpEyeBrkAnm; + /* 0x2C8 */ u8 m2C8; + /* 0x2C9 */ u8 m2C9; + /* 0x2CA */ u8 m2CA; + /* 0x2CB */ u8 mAction; + /* 0x2CC */ u8 mMode; + /* 0x2CD */ u8 m2CD; + /* 0x2CE */ u8 m2CE; + /* 0x2CF */ u8 m2CF; + /* 0x2D0 */ u8 m2D0; + /* 0x2D1 */ u8 m2D1; + /* 0x2D2 */ u8 m2D2; + /* 0x2D3 */ u8 m2D3; + /* 0x2D4 */ fpc_ProcID mGmID; // Mothula + /* 0x2D8 */ fpc_ProcID mKsID; // Morth + /* 0x2DC */ cXyz m2DC; + /* 0x2E8 */ s16 m2E8[4]; + /* 0x2F0 */ s16 m2F0[5]; + /* 0x2FA */ s16 m2FA; + /* 0x2FC */ s16 m2FC; + /* 0x2FE */ s16 m2FE; + /* 0x300 */ s16 m300; + /* 0x302 */ s16 m302; + /* 0x304 */ f32 m304; + /* 0x308 */ f32 m308; + /* 0x30C */ f32 m30C; + /* 0x310 */ f32 m310; + /* 0x314 */ f32 m314; + /* 0x318 */ f32 m318; + /* 0x31C */ f32 m31C; + /* 0x320 */ f32 m320; + /* 0x324 */ dBgS_AcchCir mAcchCir; + /* 0x364 */ dBgS_ObjAcch mAcch; + /* 0x528 */ MtxP m528; + /* 0x52C */ dPa_rippleEcallBack m52C; + /* 0x540 */ dCcD_Stts mStts; + /* 0x57C */ dCcD_Sph mSph; + /* 0x6A8 */ enemyice mEnemyIce; + /* 0xA60 */ enemyfire mEnemyFire; }; #endif /* D_A_KS_H */ diff --git a/include/d/actor/d_a_kt.h b/include/d/actor/d_a_kt.h index f24b2671e..74e7e6af3 100644 --- a/include/d/actor/d_a_kt.h +++ b/include/d/actor/d_a_kt.h @@ -26,7 +26,7 @@ public: /* 0x308 */ cXyz mHomePos; /* 0x314 */ s16 mTimer[3]; /* 0x31A */ s16 mAngleRoll; - /* 0x31C */ s8 mState; + /* 0x31C */ s8 mMode; /* 0x31D */ u8 field_0x31d; /* 0x31E */ bool mHitGround; /* 0x31E */ u8 field_0x31f; diff --git a/include/d/actor/d_a_npc_so.h b/include/d/actor/d_a_npc_so.h index e7cbf4501..25ec1c9f9 100644 --- a/include/d/actor/d_a_npc_so.h +++ b/include/d/actor/d_a_npc_so.h @@ -11,7 +11,7 @@ public: }; - void getMiniGameRestArrow() {} + int getMiniGameRestArrow() { return 10 - mB78; } void isAnm(signed char) {} void modeProcInit(int) {} @@ -128,6 +128,8 @@ public: public: /* Place member variables here */ + /* 0x290 */ u8 m290[0xB78 - 0x290]; + /* 0xB78 */ int mB78; }; class daNpc_So_HIO_c { diff --git a/include/d/actor/d_a_player.h b/include/d/actor/d_a_player.h index c6a9fe451..8628819e2 100644 --- a/include/d/actor/d_a_player.h +++ b/include/d/actor/d_a_player.h @@ -28,6 +28,7 @@ STATIC_ASSERT(sizeof(daPy_mtxFollowEcallBack_c) == 0x0C); class daPy_demo_c { public: enum { + DEMO_UNK00_e = 0x00, DEMO_UNK01_e = 0x01, DEMO_UNK02_e = 0x02, DEMO_UNK03_e = 0x03, @@ -37,6 +38,7 @@ public: DEMO_UNK08_e = 0x08, DEMO_UNK09_e = 0x09, DEMO_UNK0A_e = 0x0A, + DEMO_UNK0E_e = 0x0E, DEMO_UNK0F_e = 0x0F, DEMO_UNK10_e = 0x10, DEMO_UNK11_e = 0x11, @@ -51,8 +53,10 @@ public: DEMO_UNK1F_e = 0x1F, DEMO_UNK22_e = 0x22, DEMO_UNK25_e = 0x25, + DEMO_UNK27_e = 0x27, DEMO_UNK2A_e = 0x2A, DEMO_UNK2B_e = 0x2B, + DEMO_UNK2C_e = 0x2C, DEMO_UNK2F_e = 0x2F, DEMO_UNK33_e = 0x33, DEMO_UNK35_e = 0x35, @@ -73,6 +77,7 @@ public: void setDemoMode(u32 mode) { mDemoMode = mode; } u32 getDemoMode() const { return mDemoMode; } int getParam1() const { return mParam1; } + s16 getTimer() const { return mTimer; } void setTimer(s16 time) { mTimer = time; } void decTimer() { mTimer--; } void setOriginalDemoType() { setDemoType(3); } @@ -153,6 +158,7 @@ public: daPyFlg1_FOREST_WATER_USE = 0x00020000, daPyFlg1_UNK40000 = 0x00040000, daPyFlg1_WATER_DROP = 0x00080000, + daPyFlg1_UNK100000 = 0x00100000, daPyFlg1_UNK200000 = 0x00200000, daPyFlg1_UNK800000 = 0x00800000, daPyFlg1_UNK1000000 = 0x01000000, @@ -463,6 +469,7 @@ public: void offConfuse() { offNoResetFlg1(daPyFlg1_CONFUSE); } bool checkConfuse() const { return checkNoResetFlg1(daPyFlg1_CONFUSE); } bool checkFreezeState() const { return checkNoResetFlg1(daPyFlg1_FREEZE_STATE); } + bool checkUseArrowEffect() const { return checkNoResetFlg1(daPyFlg1_USE_ARROW_EFFECT); } void onUseArrowEffect() { onNoResetFlg1(daPyFlg1_USE_ARROW_EFFECT); } void offUseArrowEffect() { offNoResetFlg1(daPyFlg1_USE_ARROW_EFFECT); } void onLetterReadEyeMove() { onNoResetFlg1(daPyFlg1_LETTER_READ_EYE_MOVE); } @@ -510,13 +517,9 @@ public: void checkBowMiniGame() const {} void checkSoupPowerUp() const {} void checkSubjectAccept() const {} - void checkUseArrowEffect() const {} void getRopeJumpLand() const {} void checkRopeForceEnd() const {} - // This class's weak virtual functions tend to cause weak function ordering issues in TUs that use them. - // The proper way to match this is still unknown, so some of the definitions have been temporarily commented out - // here so that they can be fakematched instead. virtual MtxP getLeftHandMatrix() = 0; virtual MtxP getRightHandMatrix() = 0; virtual f32 getGroundY() = 0; diff --git a/include/d/actor/d_a_player_HIO.h b/include/d/actor/d_a_player_HIO.h index 203cfd394..dd8da3037 100644 --- a/include/d/actor/d_a_player_HIO.h +++ b/include/d/actor/d_a_player_HIO.h @@ -391,7 +391,8 @@ public: class daPy_HIO_cutTurnR_c1 { public: - /* 0x00 */ s16 field_0x0; + /* 0x00 */ u8 field_0x0; + /* 0x01 */ u8 field_0x1; /* 0x02 */ s16 field_0x2; /* 0x04 */ s16 field_0x4; /* 0x06 */ s16 field_0x6; diff --git a/include/d/actor/d_a_player_main.h b/include/d/actor/d_a_player_main.h index 781eeb303..59a10809c 100644 --- a/include/d/actor/d_a_player_main.h +++ b/include/d/actor/d_a_player_main.h @@ -179,15 +179,15 @@ public: void setup(JPABaseEmitter*, const cXyz*, const csXyz*, s8); void end(); ~daPy_followEcallBack_c() {} + JPABaseEmitter* getEmitter() { return mpEmitter; } - void setPos(const cXyz* pos) { mPos = *pos; } cXyz& getPos() { return mPos; } + void setPos(const cXyz* pos) { mPos = *pos; } void setAngle(s16 x, s16 y, s16 z) { mAngle.set(x, y, z); } /* 0x04 */ JPABaseEmitter* mpEmitter; /* 0x08 */ cXyz mPos; /* 0x14 */ csXyz mAngle; - /* 0x1A */ u8 field_0x1A[0x1C - 0x1A]; }; // Size: 0x1C class daPy_waterDropEcallBack_c : public daPy_followEcallBack_c { @@ -326,7 +326,7 @@ public: /* 0x030 */ f32 field_0x030; /* 0x034 */ dBgS_LinkGndChk field_0x034; /* 0x088 */ Mtx field_0x088[3]; -}; +}; // Size: 0x118 struct daPy_aura_c { public: @@ -949,7 +949,7 @@ public: BOOL checkUpperReadyAnime() const; BOOL checkUpperReadyThrowAnime() const; BOOL checkNoCollisionCorret(); - void setDrawHandModel(); + s32 setDrawHandModel(); void entryDLSetLight(J3DModel*, u32); void updateDLSetLight(J3DModel*, u32); void hideHatAndBackle(J3DMaterial*); @@ -1011,7 +1011,7 @@ public: BOOL checkNextActionFromButton(); void setShieldGuard(); BOOL checkItemModeActorPointer(); - BOOL checkNextActionItemFly(); + void checkNextActionItemFly(); BOOL checkNextMode(int); BOOL checkIceSlipFall(); void setFrontWallType(); @@ -1191,7 +1191,7 @@ public: void setSeAnime(daPy_anmHeap_c const*, J3DFrameCtrl*); void initSeAnime(); void resetSeAnime(); - void setMoveAnime(f32, f32, f32, daPy_ANM, daPy_ANM, int, f32); + int setMoveAnime(f32, f32, f32, daPy_ANM, daPy_ANM, int, f32); BOOL setSingleMoveAnime(daPy_ANM, f32, f32, s16, f32); BOOL setActAnimeUpper(u16, daPy_UPPER, f32, f32, s16, f32); BOOL resetActAnimeUpper(daPy_UPPER, f32); @@ -1403,7 +1403,7 @@ public: f32 getCrawlMoveAnmSpeed(); f32 getCrawlMoveSpeed(); void setCrawlMoveDirectionArrow(); - void changeCrawlAutoMoveProc(cXyz*); + BOOL changeCrawlAutoMoveProc(cXyz*); int getCrawlMoveVec(cXyz*, cXyz*, cXyz*); void crawlBgCheck(cXyz*, cXyz*); BOOL checkCrawlSideWall(cXyz*, cXyz*, cXyz*, cXyz*, s16*, s16*); diff --git a/include/d/actor/d_a_pw.h b/include/d/actor/d_a_pw.h index ef1fcee9f..61392cb93 100644 --- a/include/d/actor/d_a_pw.h +++ b/include/d/actor/d_a_pw.h @@ -47,7 +47,7 @@ public: /* 0x359 */ u8 mPathIndex; /* 0x35A */ u8 m35A[0x366 - 0x35A]; /* 0x366 */ s16 mAction; - /* 0x368 */ s16 mState; + /* 0x368 */ s16 mMode; /* 0x36A */ u8 m36A[0x36C - 0x36A]; /* 0x36C */ fpc_ProcID mJalhallaID; /* 0x370 */ fpc_ProcID mKanteraID; diff --git a/include/d/actor/d_a_ship.h b/include/d/actor/d_a_ship.h index 4fb2a3aae..f51d099d5 100644 --- a/include/d/actor/d_a_ship.h +++ b/include/d/actor/d_a_ship.h @@ -95,7 +95,9 @@ public: void setGetOffSecond() { mNextMode = MODE_GET_OFF_SECOND_e; } void setCannon() { mNextMode = MODE_CANNON_e; } void setCrane() { mNextMode = MODE_CRANE_e; } + void setStartModeWarp() { mNextMode = MODE_START_MODE_WARP_e; } void setTactWarp() { mNextMode = MODE_TACT_WARP_e; } + void setStartModeThrow() { mNextMode = MODE_START_MODE_THROW_e; } int getTactWarpPosNum() const { return mTactWarpPosNum; } void setTactWarpPosNum(int num) { mTactWarpPosNum = num; } @@ -150,15 +152,13 @@ public: void onFantomGanonBattle() {} //TODO: Is this right? void onLinkSit() { onStateFlg(daSFLG_UNK4000000_e); } - void onSceneChange() {} + void onSceneChange() { onStateFlg(daSFLG_UNK20000000_e); } void onShortHitFlg() {} void onStateFlg(daSHIP_SFLG flag) { mStateFlag |= flag; } void onTornadoFlg(u32 tornadoID) { mTornadoID = tornadoID; } void onWhirlFlg(u32, s16) {} void onWhirlFlgDirect(u32, s16) {} void setAtnPos(const cXyz*) {} - void setStartModeThrow() {} - void setStartModeWarp() {} BOOL bodyJointCallBack(int); BOOL cannonJointCallBack(int); diff --git a/include/d/d_cam_param.h b/include/d/d_cam_param.h index 8df903861..384fb1293 100644 --- a/include/d/d_cam_param.h +++ b/include/d/d_cam_param.h @@ -4,51 +4,209 @@ #include "dolphin/types.h" #include "SSystem/SComponent/c_angle.h" +enum dCamStyle_e { + dCamStyle_NONE_e = -1, + /* 0x00 */ dCamStyle_NN00_e, + /* 0x01 */ dCamStyle_FN08_e, + /* 0x02 */ dCamStyle_PN05_e, + /* 0x03 */ dCamStyle_PN12_e, + /* 0x04 */ dCamStyle_EN00_e, + /* 0x05 */ dCamStyle_FN12_e, + /* 0x06 */ dCamStyle_TT01_e, + /* 0x07 */ dCamStyle_TT02_e, + /* 0x08 */ dCamStyle_TT03_e, + /* 0x09 */ dCamStyle_LA03_e, + /* 0x0A */ dCamStyle_LP01_e, + /* 0x0B */ dCamStyle_LA02_e, + /* 0x0C */ dCamStyle_FN13_e, + /* 0x0D */ dCamStyle_LH01_e, + /* 0x0E */ dCamStyle_LH02_e, + /* 0x0F */ dCamStyle_LB02_e, + /* 0x10 */ dCamStyle_LP02_e, + /* 0x11 */ dCamStyle_LP03_e, + /* 0x12 */ dCamStyle_LP04_e, + /* 0x13 */ dCamStyle_CC01_e, + /* 0x14 */ dCamStyle_CC02_e, + /* 0x15 */ dCamStyle_LL06_e, + /* 0x16 */ dCamStyle_LL08_e, + /* 0x17 */ dCamStyle_LL07_e, + /* 0x18 */ dCamStyle_LP10_e, + /* 0x19 */ dCamStyle_SN15_e, + /* 0x1A */ dCamStyle_BW07_e, + /* 0x1B */ dCamStyle_FN18_e, + /* 0x1C */ dCamStyle_JN05_e, + /* 0x1D */ dCamStyle_XN06_e, + /* 0x1E */ dCamStyle_LB01_e, + /* 0x1F */ dCamStyle_LA01_e, + /* 0x20 */ dCamStyle_BP07_e, + /* 0x21 */ dCamStyle_LW02_e, + /* 0x22 */ dCamStyle_HP16_e, + /* 0x23 */ dCamStyle_HN16_e, + /* 0x24 */ dCamStyle_BN07_e, + /* 0x25 */ dCamStyle_LP05_e, + /* 0x26 */ dCamStyle_LP06_e, + /* 0x27 */ dCamStyle_HN18_e, + /* 0x28 */ dCamStyle_FN25_e, + /* 0x29 */ dCamStyle_BP08_e, + /* 0x2A */ dCamStyle_BN08_e, + /* 0x2B */ dCamStyle_FN29_e, + /* 0x2C */ dCamStyle_SX01_e, + /* 0x2D */ dCamStyle_SY01_e, + /* 0x2E */ dCamStyle_SX02_e, + /* 0x2F */ dCamStyle_MM06_e, + /* 0x30 */ dCamStyle_MM05_e, + /* 0x31 */ dCamStyle_MM09_e, + /* 0x32 */ dCamStyle_MM04_e, + /* 0x33 */ dCamStyle_LN17_e, + /* 0x34 */ dCamStyle_QN07_e, + /* 0x35 */ dCamStyle_LE01_e, + /* 0x36 */ dCamStyle_LN01_e, + /* 0x37 */ dCamStyle_LW01_e, + /* 0x38 */ dCamStyle_GN01_e, + /* 0x39 */ dCamStyle_MM01_e, +#if VERSION == VERSION_JPN + dCamStyle_MM03_e, +#endif + /* Value comments below are for USA/PAL */ + /* 0x3A */ dCamStyle_MM02_e, + /* 0x3B */ dCamStyle_MM10_e, + /* 0x3C */ dCamStyle_MM08_e, + /* 0x3D */ dCamStyle_MM83_e, + /* 0x3E */ dCamStyle_FP01_e, + /* 0x3F */ dCamStyle_ZZ00_e, + /* 0x40 */ dCamStyle_PN13_e, + /* 0x41 */ dCamStyle_FN82_e, + /* 0x42 */ dCamStyle_IN01_e, + /* 0x43 */ dCamStyle_IN02_e, + /* 0x44 */ dCamStyle_MM82_e, + /* 0x45 */ dCamStyle_LL11_e, + /* 0x46 */ dCamStyle_LL01_e, + /* 0x47 */ dCamStyle_LL02_e, + /* 0x48 */ dCamStyle_LL03_e, + /* 0x49 */ dCamStyle_LL04_e, + /* 0x4A */ dCamStyle_LL05_e, + /* 0x4B */ dCamStyle_LL10_e, + /* 0x4C */ dCamStyle_LL09_e, + /* 0x4D */ dCamStyle_LL12_e, + /* 0x4E */ dCamStyle_LL13_e, + /* 0x4F */ dCamStyle_LL14_e, + /* 0x50 */ dCamStyle_LL15_e, + /* 0x51 */ dCamStyle_LL16_e, + /* 0x52 */ dCamStyle_LL82_e, + /* 0x53 */ dCamStyle_FN01_e, + /* 0x54 */ dCamStyle_FN02_e, + /* 0x55 */ dCamStyle_FN03_e, + /* 0x56 */ dCamStyle_FN04_e, + /* 0x57 */ dCamStyle_FN06_e, + /* 0x58 */ dCamStyle_FN09_e, + /* 0x59 */ dCamStyle_FN07_e, + /* 0x5A */ dCamStyle_FN10_e, + /* 0x5B */ dCamStyle_FN14_e, + /* 0x5C */ dCamStyle_FN15_e, + /* 0x5D */ dCamStyle_FN17_e, + /* 0x5E */ dCamStyle_FN20_e, + /* 0x5F */ dCamStyle_FN21_e, + /* 0x60 */ dCamStyle_FN22_e, + /* 0x61 */ dCamStyle_FN23_e, + /* 0x62 */ dCamStyle_FN24_e, + /* 0x63 */ dCamStyle_FN26_e, + /* 0x64 */ dCamStyle_FN27_e, + /* 0x65 */ dCamStyle_FN28_e, + /* 0x66 */ dCamStyle_FN30_e, + /* 0x67 */ dCamStyle_FN31_e, + /* 0x68 */ dCamStyle_FN32_e, + /* 0x69 */ dCamStyle_FN33_e, + /* 0x6A */ dCamStyle_FN34_e, + /* 0x6B */ dCamStyle_FN35_e, + /* 0x6C */ dCamStyle_LL17_e, + /* 0x6D */ dCamStyle_FN37_e, +#if VERSION == VERSION_JPN + dCamStyle_FN38_e, +#endif + /* 0x6E */ dCamStyle_BE08_e, + /* 0x6F */ dCamStyle_BE07_e, + /* 0x70 */ dCamStyle_TT04_e, + /* 0x71 */ dCamStyle_FP38_e, + /* 0x72 */ dCamStyle_FN39_e, + /* 0x73 */ dCamStyle_MM16_e, + /* 0x74 */ dCamStyle_MM14_e, + /* 0x75 */ dCamStyle_MM15_e, + /* 0x76 */ dCamStyle_MM07_e, + /* 0x77 */ dCamStyle_FN81_e, + /* 0x78 */ dCamStyle_FN40_e, + /* 0x79 */ dCamStyle_FN41_e, + /* 0x7A */ dCamStyle_FN19_e, + /* 0x7B */ dCamStyle_LL81_e, + /* 0x7C */ dCamStyle_DD01_e, + /* 0x7D */ dCamStyle_MM19_e, + /* 0x7E */ dCamStyle_DD02_e, + /* 0x7F */ dCamStyle_FN42_e, + /* 0x80 */ dCamStyle_IN03_e, + /* 0x81 */ dCamStyle_FN43_e, + /* 0x82 */ dCamStyle_FN11_e, + /* 0x83 */ dCamStyle_MM21_e, + /* 0x84 */ dCamStyle_MM20_e, + /* 0x85 */ dCamStyle_FN05_e, + /* 0x86 */ dCamStyle_FN36_e, + /* 0x87 */ dCamStyle_MM81_e, + /* 0x88 */ dCamStyle_SS01_e, + /* 0x89 */ dCamStyle_LL18_e, + /* 0x8A */ dCamStyle_DD04_e, + /* 0x8B */ dCamStyle_MM22_e, + /* 0x8C */ dCamStyle_MM18_e, + /* 0x8D */ dCamStyle_MM17_e, +#if VERSION != VERSION_JPN + /* 0x8E */ dCamStyle_MM03_e, + /* 0x8F */ dCamStyle_MM23_e, + /* 0x90 */ dCamStyle_FN38_e, +#endif +}; + // Array indexes, do not change values enum dCamStyleParam_e { - dCamStyleParam_UNK0 = 0, - dCamStyleParam_UNK1 = 1, - dCamStyleParam_UNK2 = 2, - dCamStyleParam_UNK3 = 3, - dCamStyleParam_UNK4 = 4, - dCamStyleParam_CENTER_HEIGHT_BASE = 5, - dCamStyleParam_CENTER_HEIGHT_UPPER = 6, - dCamStyleParam_CENTER_HEIGHT_LOWER = 7, - dCamStyleParam_LOCKON_CENTER_HEIGHT_MIN = 8, - dCamStyleParam_LOCKON_CENTER_HEIGHT_MAX = 9, - dCamStyleParam_UNK10 = 10, - dCamStyleParam_UNK11 = 11, - dCamStyleParam_UNK12 = 12, - dCamStyleParam_UNK13 = 13, - dCamStyleParam_UNK14 = 14, - dCamStyleParam_UNK15 = 15, - dCamStyleParam_UNK16 = 16, - dCamStyleParam_UNK17 = 17, - dCamStyleParam_LOCKON_LATITUDE_MIN = 18, - dCamStyleParam_LOCKON_LATITUDE_MAX = 19, - dCamStyleParam_UNK20 = 20, - dCamStyleParam_UNK21 = 21, - dCamStyleParam_UNK22 = 22, - dCamStyleParam_LOCKON_LONGITUDE_MIN = 23, - dCamStyleParam_LOCKON_LONGITUDE_MAX = 24, - dCamStyleParam_FOVY_BASE = 25, - dCamStyleParam_FOVY_UPPER = 26, - dCamStyleParam_FOVY_LOWER = 27, - dCamStyleParam_LOCKON_FOVY_MIN = 28, - dCamStyleParam_LOCKON_FOVY_MAX = 29, + /* 0x00 */ dCamStyleParam_UNK0 = 0, + /* 0x01 */ dCamStyleParam_UNK1 = 1, + /* 0x02 */ dCamStyleParam_UNK2 = 2, + /* 0x03 */ dCamStyleParam_UNK3 = 3, + /* 0x04 */ dCamStyleParam_UNK4 = 4, + /* 0x05 */ dCamStyleParam_CENTER_HEIGHT_BASE = 5, + /* 0x06 */ dCamStyleParam_CENTER_HEIGHT_UPPER = 6, + /* 0x07 */ dCamStyleParam_CENTER_HEIGHT_LOWER = 7, + /* 0x08 */ dCamStyleParam_LOCKON_CENTER_HEIGHT_MIN = 8, + /* 0x09 */ dCamStyleParam_LOCKON_CENTER_HEIGHT_MAX = 9, + /* 0x0A */ dCamStyleParam_UNK10 = 10, + /* 0x0B */ dCamStyleParam_UNK11 = 11, + /* 0x0C */ dCamStyleParam_UNK12 = 12, + /* 0x0D */ dCamStyleParam_UNK13 = 13, + /* 0x0E */ dCamStyleParam_UNK14 = 14, + /* 0x0F */ dCamStyleParam_UNK15 = 15, + /* 0x10 */ dCamStyleParam_UNK16 = 16, + /* 0x11 */ dCamStyleParam_UNK17 = 17, + /* 0x12 */ dCamStyleParam_LOCKON_LATITUDE_MIN = 18, + /* 0x13 */ dCamStyleParam_LOCKON_LATITUDE_MAX = 19, + /* 0x14 */ dCamStyleParam_UNK20 = 20, + /* 0x15 */ dCamStyleParam_UNK21 = 21, + /* 0x16 */ dCamStyleParam_UNK22 = 22, + /* 0x17 */ dCamStyleParam_LOCKON_LONGITUDE_MIN = 23, + /* 0x18 */ dCamStyleParam_LOCKON_LONGITUDE_MAX = 24, + /* 0x19 */ dCamStyleParam_FOVY_BASE = 25, + /* 0x1A */ dCamStyleParam_FOVY_UPPER = 26, + /* 0x1B */ dCamStyleParam_FOVY_LOWER = 27, + /* 0x1C */ dCamStyleParam_LOCKON_FOVY_MIN = 28, + /* 0x1D */ dCamStyleParam_LOCKON_FOVY_MAX = 29, }; enum dCamParamFlag_e { - dCamParam_UNK001 = 0x001, - dCamParam_UNK002 = 0x002, - dCamParam_UNK004 = 0x004, - dCamParam_UNK010 = 0x010, - dCamParam_UNK020 = 0x020, - dCamParam_UNK040 = 0x040, - dCamParam_UNK080 = 0x080, - dCamParam_UNK100 = 0x100, - dCamParam_UNK200 = 0x200, - dCamParam_UNK400 = 0x400, + dCamPrmFlg_UNK001 = 0x001, + dCamPrmFlg_UNK002 = 0x002, + dCamPrmFlg_UNK004 = 0x004, + dCamPrmFlg_UNK010 = 0x010, + dCamPrmFlg_UNK020 = 0x020, + dCamPrmFlg_UNK040 = 0x040, + dCamPrmFlg_UNK080 = 0x080, + dCamPrmFlg_UNK100 = 0x100, + dCamPrmFlg_UNK200 = 0x200, + dCamPrmFlg_UNK400 = 0x400, }; struct dCamera__Style { diff --git a/include/d/d_camera.h b/include/d/d_camera.h index 587165c50..73420043c 100644 --- a/include/d/d_camera.h +++ b/include/d/d_camera.h @@ -27,7 +27,7 @@ struct dCamera__EventParam { struct dCamera__Type { /* 0x00 */ char name[24]; - /* 0x18 */ s16 mStyles[2][10]; + /* 0x18 */ s16 mStyles[20]; }; // Size: 0x40 struct dCamera_event_data { @@ -260,41 +260,70 @@ public: /* 0x364 */ int m364; /* 0x368 */ f32 m368; /* 0x36C */ cXyz m36C; - /* 0x378 */ int m378; - /* 0x37C */ u8 m37C; // `CalcSubjectAngle` suggests this should be u8 but `followCamera` suggests it should be int - /* 0x37D */ u8 m37D; // The fact that this a referenced in `CalcSubjectAngle` suggests m37C can't be an int? - /* 0x37E */ s16 m37E; - /* 0x380 */ int m380; - /* 0x384 */ f32 m384; - /* 0x388 */ f32 m388; // `CalcSubjectAngle` suggests this should be a float but `followCamera` suggests it should be int - /* 0x38C */ f32 m38C; // Similar issue for 38C - /* 0x390 */ s16 m390; - /* 0x392 */ s16 m392; - /* 0x394 */ f32 m394; - /* 0x398 */ f32 m398; - /* 0x39C */ f32 m39C; - /* 0x3A0 */ f32 m3A0; - /* 0x3A4 */ f32 m3A4; - /* 0x3A8 */ f32 m3A8; - /* 0x3AC */ f32 m3AC; - /* 0x3B0 */ f32 m3B0; - /* 0x3B4 */ int m3B4; - /* 0x3B8 */ cSAngle m3B8; // `CalcSubjectAngle` thinks this is a cSAngle but `followCamera` thinks its a float (could also be cSGlobe since m3BA is a cSAngle and m3BC is a float) - /* 0x3BA */ cSAngle m3BA; - /* 0x3BC */ f32 m3BC; - /* 0x3C0 */ cXyz m3C0; - /* 0x3CC */ cXyz m3CC; - /* 0x3D8 */ u8 m3D8; - /* 0x3D9 */ u8 m3D9; - /* 0x3DA */ u8 m3DA; - /* 0x3DB */ u8 m3DB; - /* 0x3DC */ f32 m3DC; - /* 0x3E0 */ f32 m3E0; - /* 0x3E4 */ f32 m3E4; - /* 0x3E8 */ f32 m3E8; - /* 0x3EC */ f32 m3EC; - /* 0x3F0 */ f32 m3F0; - /* 0x3F4 */ u8 m3F4[0x3F8 - 0x3F4]; + /* 0x314 */ union Work { + struct { + /* 0x378 */ int m378; + /* 0x37C */ int m37C; + /* 0x380 */ int m380; + /* 0x384 */ f32 m384; + /* 0x388 */ int m388; + /* 0x38C */ int m38C; + /* 0x390 */ s16 m390; + /* 0x392 */ s16 m392; + /* 0x394 */ f32 m394; + /* 0x398 */ f32 m398; + /* 0x39C */ f32 m39C; + /* 0x3A0 */ f32 m3A0; + /* 0x3A4 */ f32 m3A4; + /* 0x3A8 */ f32 m3A8; + /* 0x3AC */ f32 m3AC; + /* 0x3B0 */ f32 m3B0; + /* 0x3B4 */ int m3B4; + /* 0x3B8 */ f32 m3B8; + /* 0x3BC */ f32 m3BC; + /* 0x3C0 */ cXyz m3C0; + /* 0x3CC */ cXyz m3CC; + /* 0x3D8 */ u8 m3D8; + /* 0x3D9 */ u8 m3D9; + /* 0x3DA */ u8 m3DA; + /* 0x3DB */ u8 m3DB; + /* 0x3DC */ f32 m3DC; + /* 0x3E0 */ f32 m3E0; + /* 0x3E4 */ f32 m3E4; + /* 0x3E8 */ f32 m3E8; + /* 0x3EC */ f32 m3EC; + /* 0x3F0 */ f32 m3F0; + /* 0x3F4 */ u8 m3F4[0x3F8 - 0x3F4]; + } follow; + struct { + /* 0x378 */ int m378; + /* 0x37C */ u8 m37C[0x380 - 0x37C]; + /* 0x380 */ int m380; + /* 0x384 */ f32 m384; + /* 0x388 */ int m388; + /* 0x38C */ u8 m38C; + /* 0x390 */ cXyz m390; + /* 0x39C */ u8 m39C; + /* 0x3A0 */ f32 m3A0; + /* 0x3A4 */ f32 m3A4; + /* 0x3A8 */ cSGlobe m3A8; + /* 0x3B0 */ f32 m3B0; + /* 0x3B4 */ f32 m3B4; + /* 0x3B8 */ f32 m3B8; + } lockon; + struct { + /* 0x378 */ int m378; + /* 0x37C */ u8 m37C; + /* 0x37D */ u8 m37D; + /* 0x380 */ int m380; + /* 0x384 */ f32 m384; + /* 0x388 */ f32 m388; + /* 0x38C */ f32 m38C; + /* 0x390 */ u8 m390[0x3B8 - 0x390]; + /* 0x3B8 */ cSAngle m3B8; + /* 0x3BA */ cSAngle m3BA; + } subject; + } mWork; /* 0x3F8 */ dCamera_event_data mEventData; /* 0x50C */ u32 mEventFlags; /* 0x510 */ int mCurStyle; diff --git a/include/d/d_com_inf_game.h b/include/d/d_com_inf_game.h index f4739737e..6feea90fc 100644 --- a/include/d/d_com_inf_game.h +++ b/include/d/d_com_inf_game.h @@ -98,18 +98,6 @@ enum daPy__PlayerStatus1 { daPyStts1_UNK20000_e = 0x00020000, daPyStts1_UNK40000_e = 0x00040000, daPyStts1_UNK80000_e = 0x00080000, - daPyStts1_UNK100000_e = 0x00100000, - daPyStts1_UNK200000_e = 0x00200000, - daPyStts1_UNK400000_e = 0x00400000, - daPyStts1_UNK800000_e = 0x00800000, - daPyStts1_UNK1000000_e = 0x01000000, - daPyStts1_UNK2000000_e = 0x02000000, - daPyStts1_UNK4000000_e = 0x04000000, - daPyStts1_UNK8000000_e = 0x08000000, - daPyStts1_UNK10000000_e = 0x10000000, - daPyStts1_UNK20000000_e = 0x20000000, - daPyStts1_UNK40000000_e = 0x40000000, - daPyStts1_UNK80000000_e = 0x80000000, }; class __d_timer_info_c { diff --git a/include/d/d_particle.h b/include/d/d_particle.h index 48246d3dc..0e75e5c41 100644 --- a/include/d/d_particle.h +++ b/include/d/d_particle.h @@ -310,16 +310,19 @@ public: virtual void setup(JPABaseEmitter*, const cXyz*, const csXyz*, s8); void end(); - void getAlpha() {} - void remove() {} - void setAlpha(u8) {} - void setPosArray(cXyz*, s16) {} + u8 getAlpha() { return mAlpha; } + void setAlpha(u8 alpha) { mAlpha = alpha;} + void remove() { end(); } + void setPosArray(cXyz* pos_array, s16 param_2) { + mPosArray = pos_array; + field_0x6 = param_2; + } public: - /* 0x04 */ u8 field_0x4; + /* 0x04 */ u8 mAlpha; /* 0x05 */ u8 field_0x5; /* 0x06 */ u16 field_0x6; - /* 0x08 */ u8 field_0x8[0xC - 0x08]; + /* 0x08 */ cXyz* mPosArray; /* 0x0C */ JPABaseEmitter* mpBaseEmitter; }; // Size: 0x10 diff --git a/include/d/d_snap.h b/include/d/d_snap.h index 1a44d128b..1c9b49822 100644 --- a/include/d/d_snap.h +++ b/include/d/d_snap.h @@ -184,7 +184,7 @@ enum { /* 0xB0 */ DSNAP_TYPE_UNKB0, /* 0xB1 */ DSNAP_TYPE_UNKB1, /* 0xB2 */ DSNAP_TYPE_UNKB2, - /* 0xB3 */ DSNAP_TYPE_UNKB3, + /* 0xB3 */ DSNAP_TYPE_KS, /* 0xB4 */ DSNAP_TYPE_UNKB4, /* 0xB5 */ DSNAP_TYPE_UNKB5, /* 0xB6 */ DSNAP_TYPE_AM2, diff --git a/include/d/d_stage.h b/include/d/d_stage.h index 428f72e97..c40821c5a 100644 --- a/include/d/d_stage.h +++ b/include/d/d_stage.h @@ -1,6 +1,7 @@ #ifndef D_D_STAGE_H #define D_D_STAGE_H +#include "SSystem/SComponent/c_bg_s_poly_info.h" #include "SSystem/SComponent/c_lib.h" #include "SSystem/SComponent/c_sxyz.h" #include "SSystem/SComponent/c_xyz.h" @@ -1115,6 +1116,7 @@ inline f32 dStage_FileList_dt_SeaLevel(dStage_FileList_dt_c* i_fili) { } bool dStage_chkPlayerId(int playerId, int room_no); +int dStage_changeSceneExitId(cBgS_PolyInfo& i_poly, f32 i_speed, u32 i_mode, s8 i_roomNo); int dStage_changeScene(int i_exitId, f32 speed, u32 mode, s8 room_no); void dStage_restartRoom(u32 roomParam, u32 mode); void dStage_turnRestart(); diff --git a/include/dolphin/gx/GXFifo.h b/include/dolphin/gx/GXFifo.h index c234c51fe..94ab66e2f 100644 --- a/include/dolphin/gx/GXFifo.h +++ b/include/dolphin/gx/GXFifo.h @@ -24,9 +24,9 @@ GXBreakPtCallback GXSetBreakPtCallback(GXBreakPtCallback cb); void __GXFifoInit(void); void __GXFifoReadEnable(void); void __GXFifoReadDisable(void); -void __GXFifoLink(u8); -void __GXWriteFifoIntEnable(u32 p1, u32 p2); -void __GXWriteFifoIntReset(u32 p1, u32 p2); +void __GXFifoLink(u8 en); +void __GXWriteFifoIntEnable(u8 hiWatermarkEn, u8 loWatermarkEn); +void __GXWriteFifoIntReset(u8 hiWatermarkClr, u8 loWatermarkClr); void __GXCleanGPFifo(void); OSThread* GXSetCurrentGXThread(void); OSThread* GXGetCurrentGXThread(void); diff --git a/include/dolphin/os/OSError.h b/include/dolphin/os/OSError.h index c7b8239b3..6f78c79bf 100644 --- a/include/dolphin/os/OSError.h +++ b/include/dolphin/os/OSError.h @@ -53,9 +53,7 @@ typedef enum { typedef u8 __OSException; -typedef void (*OSErrorHandler)(OSError error, OSContext* context, u32, u32); -// Using this type for the C++ handlers makes stuff not match -typedef void (*OSErrorHandlerEx)(OSError error, OSContext* context, u32, u32, ...); +typedef void (*OSErrorHandler)(OSError error, OSContext* context, ...); OSErrorHandler OSSetErrorHandler(OSError error, OSErrorHandler handler); void __OSUnhandledException(__OSException exception, OSContext* context, u32 dsisr, u32 dar); diff --git a/include/dolphin/os/OSThread.h b/include/dolphin/os/OSThread.h index af9ac6b23..4109ae184 100644 --- a/include/dolphin/os/OSThread.h +++ b/include/dolphin/os/OSThread.h @@ -109,7 +109,6 @@ s32 OSGetThreadPriority(OSThread* thread); static s32 CheckThreadQueue(OSThreadQueue* thread); s32 OSCheckActiveThreads(void); static void OSClearStack(u8 value); -extern u8 data_804516D0[8]; #ifdef __cplusplus }; diff --git a/include/dolphin/os/__start.h b/include/dolphin/os/__start.h index bf4c01124..110d2f10b 100644 --- a/include/dolphin/os/__start.h +++ b/include/dolphin/os/__start.h @@ -31,12 +31,12 @@ extern void InitMetroTRK_BBA(void); extern void OSInit(void); extern void OSResetSystem(BOOL reset, u32 resetCode, BOOL forceMenu); -SECTION_INIT extern void __check_pad3(void); +SECTION_INIT static void __check_pad3(void); SECTION_INIT extern void __set_debug_bba(void); SECTION_INIT extern u8 __get_debug_bba(void); -SECTION_INIT extern void __start(void); -SECTION_INIT extern void __init_registers(void); -SECTION_INIT extern void __init_data(void); +SECTION_INIT extern __declspec(weak) void __start(void); +SECTION_INIT static void __init_registers(void); +SECTION_INIT static void __init_data(void); SECTION_INIT extern void __init_hardware(void); SECTION_INIT extern void __flush_cache(void* addr, u32 size); diff --git a/include/f_op/f_op_actor.h b/include/f_op/f_op_actor.h index 0fe99b9a3..88fbaf639 100644 --- a/include/f_op/f_op_actor.h +++ b/include/f_op/f_op_actor.h @@ -227,55 +227,44 @@ class JntHit_c; struct fopAc_cullSizeSphere { public: #ifdef __MWERKS__ - /* 0x0 */ cXyz center; - /* 0xC */ f32 radius; - fopAc_cullSizeSphere() {} + ~fopAc_cullSizeSphere() {} +#else + fopAc_cullSizeSphere() = default; + ~fopAc_cullSizeSphere() = default; +#endif fopAc_cullSizeSphere(cXyz p, f32 r) { center = p; radius = r; } - ~fopAc_cullSizeSphere() {} -#else - /* 0x0 */ Vec center; - /* 0xC */ f32 radius; -#endif -}; -#ifdef __MWERKS__ -#define fopAc_MakeCullSizeSphere(center, radius) fopAc_cullSizeSphere(center, radius) -#else -#define fopAc_MakeCullSizeSphere(center, radius) {(Vec)center, radius} -#endif + /* 0x0 */ cXyz center; + /* 0xC */ f32 radius; +}; struct fopAc_cullSizeBox { public: #ifdef __MWERKS__ fopAc_cullSizeBox() {} + ~fopAc_cullSizeBox() {} fopAc_cullSizeBox(const fopAc_cullSizeBox& box) { min = box.min; max = box.max; } +#else + fopAc_cullSizeBox() = default; + ~fopAc_cullSizeBox() = default; + fopAc_cullSizeBox(const fopAc_cullSizeBox& box) = default; +#endif fopAc_cullSizeBox(cXyz min, cXyz max) { this->min = min; this->max = max; } - ~fopAc_cullSizeBox() {} /* 0x0 */ cXyz min; /* 0xC */ cXyz max; -#else - /* 0x0 */ Vec min; - /* 0xC */ Vec max; -#endif }; -#ifdef __MWERKS__ -#define fopAc_MakeCullSizeBox(min, max) fopAc_cullSizeBox(min, max) -#else -#define fopAc_MakeCullSizeBox(min, max) {(Vec)min, (Vec)max} -#endif - class fopAc_ac_c : public leafdraw_class { public: /* 0x0C0 */ int actor_type; diff --git a/include/f_op/f_op_actor_mng.h b/include/f_op/f_op_actor_mng.h index 2357afec2..861e60b71 100644 --- a/include/f_op/f_op_actor_mng.h +++ b/include/f_op/f_op_actor_mng.h @@ -86,7 +86,7 @@ enum daItemAction_e { }; enum daDisappearItemType_e { - daDisItem_NORMAL_e = 0, + daDisItem_IBALL_e = 0, daDisItem_NONE1_e = 1, daDisItem_HEART_CONTAINER_e = 2, daDisItem_NONE3_e = 3, @@ -94,7 +94,7 @@ enum daDisappearItemType_e { daDisItem_HEART_e = 10, daDisItem_MAGIC_e = 11, daDisItem_ARROW_e = 12, - daDisItem_UNK13_e = 13, + daDisItem_NONE13_e = 13, }; class l_HIO { @@ -502,23 +502,11 @@ void fopAcM_DeleteHeap(fopAc_ac_c* p_actor); bool fopAcM_entrySolidHeap(fopAc_ac_c* p_actor, heapCallbackFunc p_heapCallback, u32 estimatedHeapSize); inline void fopAcM_SetMin(fopAc_ac_c* p_actor, f32 minX, f32 minY, f32 minZ) { -#ifdef __MWERKS__ p_actor->cull.box.min.set(minX, minY, minZ); -#else - p_actor->cull.box.min.x = minX; - p_actor->cull.box.min.y = minY; - p_actor->cull.box.min.z = minZ; -#endif } inline void fopAcM_SetMax(fopAc_ac_c* p_actor, f32 maxX, f32 maxY, f32 maxZ) { -#ifdef __MWERKS__ p_actor->cull.box.max.set(maxX, maxY, maxZ); -#else - p_actor->cull.box.max.x = maxX; - p_actor->cull.box.max.y = maxY; - p_actor->cull.box.max.z = maxZ; -#endif } void fopAcM_setCullSizeBox(fopAc_ac_c* p_actor, f32 minX, f32 minY, f32 minZ, f32 maxX, f32 maxY, @@ -552,6 +540,9 @@ s32 fopAcM_rollPlayerCrash(fopAc_ac_c* i_this, f32 distAdjust, u32 flag); s32 fopAcM_checkCullingBox(Mtx, f32, f32, f32, f32, f32, f32); s32 fopAcM_cullingCheck(fopAc_ac_c*); s32 fopAcM_orderTalkEvent(fopAc_ac_c*, fopAc_ac_c*); +s32 fopAcM_orderTalkXBtnEvent(fopAc_ac_c* i_this, fopAc_ac_c* i_partner); +s32 fopAcM_orderTalkYBtnEvent(fopAc_ac_c* i_this, fopAc_ac_c* i_partner); +s32 fopAcM_orderTalkZBtnEvent(fopAc_ac_c* i_this, fopAc_ac_c* i_partner); s32 fopAcM_orderZHintEvent(fopAc_ac_c*, fopAc_ac_c*); s32 fopAcM_orderSpeakEvent(fopAc_ac_c* i_actor); s32 fopAcM_orderDoorEvent(fopAc_ac_c*, fopAc_ac_c*); @@ -615,7 +606,7 @@ BOOL stealItem_CB(void* actor); fopAc_ac_c* fopAcM_myRoomSearchEnemy(s8 roomNo); -fpc_ProcID fopAcM_createDisappear(fopAc_ac_c* i_actor, cXyz* p_pos, u8 i_scale, u8 i_health = 0, u8 i_itemBitNo = -1); +fpc_ProcID fopAcM_createDisappear(fopAc_ac_c* i_actor, cXyz* p_pos, u8 i_scale, u8 i_dropType, u8 i_itemBitNo = -1); void fopAcM_setCarryNow(fopAc_ac_c* i_this, BOOL stageLayer); void fopAcM_cancelCarryNow(fopAc_ac_c* i_this); s32 fopAcM_otoCheck(fopAc_ac_c*, f32); diff --git a/include/f_pc/f_pc_priority.h b/include/f_pc/f_pc_priority.h index 0436996dc..4646db688 100644 --- a/include/f_pc/f_pc_priority.h +++ b/include/f_pc/f_pc_priority.h @@ -34,6 +34,4 @@ s32 fpcPi_Handler(void); s32 fpcPi_Init(process_priority_class* i_procPriority, void* pUserData, uint i_layer, u16 i_listID, u16 i_priority); -extern s8 data_804505F0; // roomReadId - #endif diff --git a/include/global.h b/include/global.h index a9b9932b3..be3a78a67 100644 --- a/include/global.h +++ b/include/global.h @@ -45,6 +45,10 @@ extern int __cntlzw(uint); extern int __rlwimi(int, int, int, int, int); extern void __dcbz(void*, int); +#ifndef __MWERKS__ +extern void __sync(); +#endif + #define VERSION_JPN 0 #define VERSION_USA 1 #define VERSION_PAL 2 diff --git a/src/JSystem/J3DGraphLoader/J3DMaterialFactory.cpp b/src/JSystem/J3DGraphLoader/J3DMaterialFactory.cpp index 89d1c3d2e..e611e20c3 100644 --- a/src/JSystem/J3DGraphLoader/J3DMaterialFactory.cpp +++ b/src/JSystem/J3DGraphLoader/J3DMaterialFactory.cpp @@ -431,7 +431,6 @@ u32 J3DMaterialFactory::calcSizeLockedMaterial(J3DMaterial* i_material, int i_id J3DGXColor J3DMaterialFactory::newMatColor(int idx, int stage) const { GXColor _ret = { 0xFF, 0xFF, 0xFF, 0xFF }; J3DGXColor ret(_ret); - J3DMaterialInitData* initData = &mpMaterialInitData[mpMaterialID[idx]]; u16 no = mpMaterialInitData[mpMaterialID[idx]].mMatColorIdx[stage]; if (no != 0xFFFF) return mpMatColor[no]; @@ -461,7 +460,6 @@ J3DColorChan J3DMaterialFactory::newColorChan(int idx, int stage) const { J3DGXColor J3DMaterialFactory::newAmbColor(int idx, int stage) const { GXColor _ret = { 0x32, 0x32, 0x32, 0x32 }; J3DGXColor ret(_ret); - J3DMaterialInitData* initData = &mpMaterialInitData[mpMaterialID[idx]]; u16 no = mpMaterialInitData[mpMaterialID[idx]].mAmbColorIdx[stage]; if (no != 0xFFFF) return mpAmbColor[no]; @@ -527,7 +525,6 @@ J3DTevOrder J3DMaterialFactory::newTevOrder(int idx, int stage) const { J3DGXColorS10 J3DMaterialFactory::newTevColor(int idx, int stage) const { GXColorS10 _ret = { 0x00, 0x00, 0x00, 0x00 }; J3DGXColorS10 ret(_ret); - J3DMaterialInitData* initData = &mpMaterialInitData[mpMaterialID[idx]]; u16 no = mpMaterialInitData[mpMaterialID[idx]].mTevColorIdx[stage]; if (no != 0xFFFF) return mpTevColor[no]; @@ -539,7 +536,6 @@ J3DGXColorS10 J3DMaterialFactory::newTevColor(int idx, int stage) const { J3DGXColor J3DMaterialFactory::newTevKColor(int idx, int stage) const { GXColor _ret = { 0xFF, 0xFF, 0xFF, 0xFF }; J3DGXColor ret(_ret); - J3DMaterialInitData* initData = &mpMaterialInitData[mpMaterialID[idx]]; u16 no = mpMaterialInitData[mpMaterialID[idx]].mTevKColorIdx[stage]; if (no != 0xFFFF) return mpTevKColor[no]; diff --git a/src/JSystem/J3DGraphLoader/J3DMaterialFactory_v21.cpp b/src/JSystem/J3DGraphLoader/J3DMaterialFactory_v21.cpp index 05e7862d1..3ea568d5d 100644 --- a/src/JSystem/J3DGraphLoader/J3DMaterialFactory_v21.cpp +++ b/src/JSystem/J3DGraphLoader/J3DMaterialFactory_v21.cpp @@ -6,7 +6,6 @@ #include "JSystem/J3DGraphLoader/J3DMaterialFactory_v21.h" #include "JSystem/J3DGraphLoader/J3DModelLoader.h" #include "JSystem/J3DGraphBase/J3DMatBlock.h" -#include "JSystem/JMath/JMath.h" #include "JSystem/JSupport/JSupport.h" /* 802F9A88-802F9C68 .text __ct__22J3DMaterialFactory_v21FRC20J3DMaterialBlock_v21 */ @@ -172,7 +171,6 @@ J3DMaterial* J3DMaterialFactory_v21::create(J3DMaterial* i_material, int i_idx, J3DGXColor J3DMaterialFactory_v21::newMatColor(int idx, int stage) const { GXColor _ret = { 0xFF, 0xFF, 0xFF, 0xFF }; J3DGXColor ret(_ret); - J3DMaterialInitData_v21* initData = &mpMaterialInitData[mpMaterialID[idx]]; u16 no = mpMaterialInitData[mpMaterialID[idx]].mMatColorIdx[stage]; if (no != 0xFFFF) return mpMatColor[no]; @@ -256,7 +254,6 @@ J3DTevOrder J3DMaterialFactory_v21::newTevOrder(int idx, int stage) const { J3DGXColorS10 J3DMaterialFactory_v21::newTevColor(int idx, int stage) const { GXColorS10 _ret = { 0x00, 0x00, 0x00, 0x00 }; J3DGXColorS10 ret(_ret); - J3DMaterialInitData_v21* initData = &mpMaterialInitData[mpMaterialID[idx]]; u16 no = mpMaterialInitData[mpMaterialID[idx]].mTevColorIdx[stage]; if (no != 0xFFFF) return mpTevColor[no]; @@ -268,7 +265,6 @@ J3DGXColorS10 J3DMaterialFactory_v21::newTevColor(int idx, int stage) const { J3DGXColor J3DMaterialFactory_v21::newTevKColor(int idx, int stage) const { GXColor _ret = { 0xFF, 0xFF, 0xFF, 0xFF }; J3DGXColor ret(_ret); - J3DMaterialInitData_v21* initData = &mpMaterialInitData[mpMaterialID[idx]]; u16 no = mpMaterialInitData[mpMaterialID[idx]].mTevKColorIdx[stage]; if (no != 0xFFFF) return mpTevKColor[no]; diff --git a/src/JSystem/JUtility/JUTException.cpp b/src/JSystem/JUtility/JUTException.cpp index 968de1dc2..eafcf4c20 100644 --- a/src/JSystem/JUtility/JUTException.cpp +++ b/src/JSystem/JUtility/JUTException.cpp @@ -17,7 +17,7 @@ #include "dolphin/vi/vi.h" struct CallbackObject { - /* 0x00 */ OSErrorHandler callback; + /* 0x00 */ JUTExceptionUserCallback callback; /* 0x04 */ u16 error; /* 0x06 */ u16 pad_0x06; /* 0x08 */ OSContext* context; @@ -49,17 +49,17 @@ const char* JUTException::sCpuExpName[] = { "FLOATING POINT", }; JUTException* JUTException::sErrorManager; -OSErrorHandler JUTException::sPreUserCallback; -OSErrorHandler JUTException::sPostUserCallback; +JUTExceptionUserCallback JUTException::sPreUserCallback; +JUTExceptionUserCallback JUTException::sPostUserCallback; /* 802C4AC8-802C4BAC .text __ct__12JUTExceptionFP14JUTDirectPrint */ JUTException::JUTException(JUTDirectPrint* directPrint) : JKRThread(0x4000, 0x10, 0) { mDirectPrint = directPrint; - OSSetErrorHandler(EXCEPTION_DSI, errorHandler); - OSSetErrorHandler(EXCEPTION_ISI, errorHandler); - OSSetErrorHandler(EXCEPTION_PROGRAM, errorHandler); - OSSetErrorHandler(EXCEPTION_ALIGNMENT, errorHandler); - OSSetErrorHandler(EXCEPTION_MEMORY_PROTECTION, errorHandler); + OSSetErrorHandler(EXCEPTION_DSI, (OSErrorHandler)errorHandler); + OSSetErrorHandler(EXCEPTION_ISI, (OSErrorHandler)errorHandler); + OSSetErrorHandler(EXCEPTION_PROGRAM, (OSErrorHandler)errorHandler); + OSSetErrorHandler(EXCEPTION_ALIGNMENT, (OSErrorHandler)errorHandler); + OSSetErrorHandler(EXCEPTION_MEMORY_PROTECTION, (OSErrorHandler)errorHandler); setFPException(0); sPreUserCallback = NULL; @@ -96,7 +96,7 @@ void* JUTException::run() { while (true) { OSReceiveMessage(&sMessageQueue, &message, OS_MESSAGE_BLOCK); CallbackObject* cb = (CallbackObject*)message; - OSErrorHandler callback = cb->callback; + JUTExceptionUserCallback callback = cb->callback; u16 error = cb->error; OSContext* context = cb->context; int r24 = cb->param_3; @@ -214,7 +214,7 @@ void JUTException::errorHandler(OSError error, OSContext* context, u32 param_3, void JUTException::setFPException(u32 fpscr_enable_bits) { __OSFpscrEnableBits = fpscr_enable_bits; if (fpscr_enable_bits) { - OSSetErrorHandler(EXCEPTION_FLOATING_POINT_EXCEPTION, errorHandler); + OSSetErrorHandler(EXCEPTION_FLOATING_POINT_EXCEPTION, (OSErrorHandler)errorHandler); } else { OSSetErrorHandler(EXCEPTION_FLOATING_POINT_EXCEPTION, NULL); } @@ -802,15 +802,15 @@ void JUTException::createFB() { } /* 802C6868-802C6878 .text setPreUserCallback__12JUTExceptionFPFUsP9OSContextUlUl_v */ -OSErrorHandler JUTException::setPreUserCallback(OSErrorHandler callback) { - OSErrorHandler previous = sPreUserCallback; +JUTExceptionUserCallback JUTException::setPreUserCallback(JUTExceptionUserCallback callback) { + JUTExceptionUserCallback previous = sPreUserCallback; sPreUserCallback = callback; return previous; } /* 802C6878-802C6888 .text setPostUserCallback__12JUTExceptionFPFUsP9OSContextUlUl_v */ -OSErrorHandler JUTException::setPostUserCallback(OSErrorHandler callback) { - OSErrorHandler previous = sPostUserCallback; +JUTExceptionUserCallback JUTException::setPostUserCallback(JUTExceptionUserCallback callback) { + JUTExceptionUserCallback previous = sPostUserCallback; sPostUserCallback = callback; return previous; } diff --git a/src/PowerPC_EABI_Support/MSL/MSL_C/MSL_Common/Include/ansi_fp.h b/src/PowerPC_EABI_Support/MSL/MSL_C/MSL_Common/Include/ansi_fp.h index 5aa24991a..eda36bf41 100644 --- a/src/PowerPC_EABI_Support/MSL/MSL_C/MSL_Common/Include/ansi_fp.h +++ b/src/PowerPC_EABI_Support/MSL/MSL_C/MSL_Common/Include/ansi_fp.h @@ -1,6 +1,7 @@ #ifndef _MSL_COMMON_ANSI_FP_H #define _MSL_COMMON_ANSI_FP_H +#include "dolphin/types.h" #include "float.h" #define SIGDIGLEN 36 @@ -22,7 +23,7 @@ typedef struct decform { short digits; } decform; -/* void __ull2dec(decimal*, u64); +void __ull2dec(decimal*, u64); void __timesdec(decimal*, const decimal*, const decimal*); void __str2dec(decimal*, const char*, short); void __two_exp(decimal*, s16); @@ -31,6 +32,6 @@ BOOL __less_dec(const decimal*, const decimal*); void __minus_dec(decimal*, const decimal*, const decimal*); void __num2dec_internal(decimal*, f64); void __num2dec(const decform*, f64, decimal*); -f64 __dec2num(const decimal*); */ +f64 __dec2num(const decimal*); -#endif \ No newline at end of file +#endif diff --git a/src/PowerPC_EABI_Support/MSL/MSL_C/MSL_Common/Src/printf.c b/src/PowerPC_EABI_Support/MSL/MSL_C/MSL_Common/Src/printf.c index 4319f8e13..37e492368 100644 --- a/src/PowerPC_EABI_Support/MSL/MSL_C/MSL_Common/Src/printf.c +++ b/src/PowerPC_EABI_Support/MSL/MSL_C/MSL_Common/Src/printf.c @@ -8,6 +8,7 @@ #include "stdlib.h" #include "string.h" #include "wchar_io.h" +#include "ansi_fp.h" #define TARGET_FLOAT_BITS 64 #define TARGET_FLOAT_BYTES (TARGET_FLOAT_BITS / 8) diff --git a/src/PowerPC_EABI_Support/MSL/MSL_C/MSL_Common_Embedded/Math/Double_precision/e_atan2.c b/src/PowerPC_EABI_Support/MSL/MSL_C/MSL_Common_Embedded/Math/Double_precision/e_atan2.c index 5a7863be0..81d812560 100644 --- a/src/PowerPC_EABI_Support/MSL/MSL_C/MSL_Common_Embedded/Math/Double_precision/e_atan2.c +++ b/src/PowerPC_EABI_Support/MSL/MSL_C/MSL_Common_Embedded/Math/Double_precision/e_atan2.c @@ -40,6 +40,7 @@ */ #include "fdlibm.h" +#include "math.h" #ifdef __STDC__ static const double @@ -140,4 +141,4 @@ double __ieee754_atan2(y, x) double y, x; default: /* case 3 */ return (z - pi_lo) - pi; /* atan(-,-) */ } -} \ No newline at end of file +} diff --git a/src/PowerPC_EABI_Support/MSL/MSL_C/MSL_Common_Embedded/Math/Double_precision/s_atan.c b/src/PowerPC_EABI_Support/MSL/MSL_C/MSL_Common_Embedded/Math/Double_precision/s_atan.c index 0f88ef2fc..e771307b9 100644 --- a/src/PowerPC_EABI_Support/MSL/MSL_C/MSL_Common_Embedded/Math/Double_precision/s_atan.c +++ b/src/PowerPC_EABI_Support/MSL/MSL_C/MSL_Common_Embedded/Math/Double_precision/s_atan.c @@ -33,6 +33,7 @@ */ #include "fdlibm.h" +#include "math.h" #ifdef __STDC__ static const double atanhi[] = { @@ -140,4 +141,4 @@ double atan(x) double x; z = atanhi[id] - ((x * (s1 + s2) - atanlo[id]) - x); return (hx < 0) ? -z : z; } -} \ No newline at end of file +} diff --git a/src/PowerPC_EABI_Support/Runtime/Src/__init_cpp_exceptions.cpp b/src/PowerPC_EABI_Support/Runtime/Src/__init_cpp_exceptions.cpp index 8ea08c077..d165e022d 100644 --- a/src/PowerPC_EABI_Support/Runtime/Src/__init_cpp_exceptions.cpp +++ b/src/PowerPC_EABI_Support/Runtime/Src/__init_cpp_exceptions.cpp @@ -22,9 +22,11 @@ static int fragmentID = -2; /* clang-format off */ static ASM char* GetR2() { +#ifdef __MWERKS__ nofralloc; mr r3, r2 blr +#endif } /* clang-format on */ diff --git a/src/SSystem/SComponent/c_angle.cpp b/src/SSystem/SComponent/c_angle.cpp index a9718b5e5..0e7ebcb84 100644 --- a/src/SSystem/SComponent/c_angle.cpp +++ b/src/SSystem/SComponent/c_angle.cpp @@ -14,10 +14,12 @@ const cSAngle cSAngle::_90(static_cast(0x4000)); const cSAngle cSAngle::_180(static_cast(-0x8000)); const cSAngle cSAngle::_270(static_cast(-0x4000)); +#ifdef __MWERKS__ /* 80253BB0-80253BE0 .text __ct__7cSAngleFRC7cSAngle */ cSAngle::cSAngle(const cSAngle& angle) { Val(angle); } +#endif /* 80253BE0-80253C10 .text __ct__7cSAngleFs */ cSAngle::cSAngle(s16 angle) { @@ -246,10 +248,12 @@ void cSPolar::Globe(cSGlobe* globe) const { globe->Val(mRadial, 0x4000 - mAngle1.Val(), mAngle2.Val()); } +#ifdef __MWERKS__ /* 80254524-80254554 .text __ct__7cSGlobeFRC7cSGlobe */ cSGlobe::cSGlobe(const cSGlobe& other) { Val(other); } +#endif /* 80254554-80254584 .text __ct__7cSGlobeFfss */ cSGlobe::cSGlobe(f32 f, s16 s1, s16 s2) { diff --git a/src/SSystem/SComponent/c_bg_w.cpp b/src/SSystem/SComponent/c_bg_w.cpp index f1baa6cbd..c5aafd61e 100644 --- a/src/SSystem/SComponent/c_bg_w.cpp +++ b/src/SSystem/SComponent/c_bg_w.cpp @@ -138,14 +138,6 @@ void cBgW::BlckConnect(u16* rwg, int* prev, int i_no) { pm_rwg[*prev].next = -1; } -inline bool cBgW_CheckBGround(f32 ny) { - return ny >= 0.5f; -} - -inline bool cBgW_CheckBRoof(f32 ny) { - return ny < (-4.0f / 5.0f); -} - /* 80247A24-80247BF8 .text ClassifyPlane__4cBgWFv */ void cBgW::ClassifyPlane() { if (pm_vtx_tbl == NULL) diff --git a/src/c/c_damagereaction.cpp b/src/c/c_damagereaction.cpp index 2a584ac79..a36f22ec4 100644 --- a/src/c/c_damagereaction.cpp +++ b/src/c/c_damagereaction.cpp @@ -175,7 +175,7 @@ BOOL enemy_ice(enemyice* ei) { BOOL frozen = FALSE; BOOL moveAndCollide = FALSE; - switch (ei->mState) { + switch (ei->mMode) { case 0: // Not initialized // Initialize the enemyice now. ei->mStts.Init(250, 0xFF, ac); @@ -192,7 +192,7 @@ BOOL enemy_ice(enemyice* ei) { if (std::fabsf(ei->mYOffset) < 0.1f) { ei->mYOffset = 80.0f; } - ei->mState = 1; + ei->mMode = 1; ei->mScaleY = 1.0f; ei->mScaleXZ = 1.0f; fopAcM_OnStatus(ac, fopAcStts_UNK8000000_e); @@ -202,7 +202,7 @@ BOOL enemy_ice(enemyice* ei) { // The enemy has signaled that it wants to be frozen for some length of time. ei->mFreezeTimer = ei->mFreezeDuration; ei->mFreezeDuration = 0; - ei->mState = 2; + ei->mMode = 2; if (ei->m00C == 0) { ei->mSpeed.y = 30.0f; ei->mAngularVelY = (s16)cM_rndFX(3000.0f); @@ -232,7 +232,7 @@ BOOL enemy_ice(enemyice* ei) { ac->attention_info.distances[fopAc_Attn_TYPE_CARRY_e] = 0x12; if (fopAcM_CheckStatus(ac, fopAcStts_CARRY_e)) { cLib_offBit(ac->attention_info.flags, fopAc_Attn_ACTION_CARRY_e); - ei->mState = 3; + ei->mMode = 3; if (ei->m00C == 2) { ei->m00C = 0; } @@ -250,7 +250,7 @@ BOOL enemy_ice(enemyice* ei) { ei->mSpeed.y = -15.0f; } ei->mAngleY = player->shape_angle.y; - ei->mState = 2; + ei->mMode = 2; } break; } @@ -349,7 +349,7 @@ BOOL enemy_ice(enemyice* ei) { } if (ei->mFreezeTimer == 0) { - ei->mState = 1; + ei->mMode = 1; ei->mCyl.SetC(non_pos); dComIfG_Ccsp()->Set(&ei->mCyl); @@ -440,7 +440,7 @@ void enemy_fire(enemyfire* ef) { cXyz pos; offset.setall(0.0f); - switch (ef->mState) { + switch (ef->mMode) { case 0: // Not on fire. if (ef->mFireDuration == 0) { return; @@ -449,7 +449,7 @@ void enemy_fire(enemyfire* ef) { ef->mFireTimer = ef->mFireDuration; ef->mFireDuration = 0; - ef->mState = 1; // On fire + ef->mMode = 1; // On fire dKy_plight_set(&ef->mLight); @@ -562,7 +562,7 @@ void enemy_fire(enemyfire* ef) { fopAcM_seStart(ac, JA_SE_OBJ_TORCH_BURNING, 0); if (ef->mFireTimer == 0) { - ef->mState = 0; // Not on fire + ef->mMode = 0; // Not on fire dKy_plight_cut(&ef->mLight); ef->mSph.SetC(non_pos); dComIfG_Ccsp()->Set(&ef->mSph); @@ -579,7 +579,7 @@ void enemy_fire(enemyfire* ef) { /* 8001D3B0-8001D428 .text enemy_fire_remove__FP9enemyfire */ void enemy_fire_remove(enemyfire* ef) { - ef->mState = 0; // Not on fire + ef->mMode = 0; // Not on fire dKy_plight_cut(&ef->mLight); for (int i = 0; i < 10; i++) { @@ -641,7 +641,7 @@ void dr_body_bg_check(damagereaction* dr) { dr->m71E--; } - if (dr->mState != 21 && dr->mState != 22) { + if (dr->mAction != 21 && dr->mAction != 22) { dBgS_ObjGndChk_Spl gndChk; f32 x = dr->mpEnemy->current.pos.x; f32 y = dr->mpEnemy->current.pos.y; @@ -655,14 +655,14 @@ void dr_body_bg_check(damagereaction* dr) { f32 floor_y = dComIfG_Bgsp()->GroundCross(&gndChk); if (floor_y != C_BG_MIN_HEIGHT && dr->mpEnemy->current.pos.y <= floor_y) { dr->mpEnemy->current.pos.y = floor_y + REG0_F(13); - dr->m004 = 0; + dr->mMode = 0; dr->m47C = 0; if (dComIfG_Bgsp()->ChkGrpInf(gndChk, 0x100)) { - dr->mState = 22; + dr->mAction = 22; cXyz sp14(x, floor_y, z); fopKyM_createWpillar(&sp14, REG0_F(9) + 1.0f, REG0_F(10) + 1.0f, 0); } else { - dr->mState = 21; + dr->mAction = 21; cXyz sp08(x, floor_y, z); fopKyM_createMpillar(&sp08, REG0_F(14) + 0.5f); } diff --git a/src/d/actor/d_a_agb.cpp b/src/d/actor/d_a_agb.cpp index 2e7cbf31c..9d4574805 100644 --- a/src/d/actor/d_a_agb.cpp +++ b/src/d/actor/d_a_agb.cpp @@ -1,7 +1,7 @@ -// -// Generated by dtk -// Translation Unit: d_a_agb.cpp -// +/** + * d_a_agb.cpp + * Tingle Tuner Cursor + */ #include "d/actor/d_a_agb.h" #include "d/res/res_agb.h" diff --git a/src/d/actor/d_a_am.cpp b/src/d/actor/d_a_am.cpp index 7dfa12722..b51b20f41 100644 --- a/src/d/actor/d_a_am.cpp +++ b/src/d/actor/d_a_am.cpp @@ -34,17 +34,17 @@ enum Action { ACTION_ITAI_MOVE = 3, }; -enum State { - STATE_DOUSA_INIT = 0, - STATE_DOUSA_OKIRU = 2, - STATE_DOUSA_SLEEP_INIT = 9, - STATE_DOUSA_SLEEP_MAIN = 10, - STATE_MODORU_MOVE_INIT = 20, - STATE_MODORU_MOVE_MAIN = 21, - STATE_MODORU_MOVE_END = 22, - STATE_HANDOU_MOVE_INIT = 30, - STATE_HANDOU_MOVE_MAIN = 31, - STATE_ITAI_MOVE_INIT = 40, +enum Mode { + MODE_DOUSA_INIT = 0, + MODE_DOUSA_OKIRU = 2, + MODE_DOUSA_SLEEP_INIT = 9, + MODE_DOUSA_SLEEP_MAIN = 10, + MODE_MODORU_MOVE_INIT = 20, + MODE_MODORU_MOVE_MAIN = 21, + MODE_MODORU_MOVE_END = 22, + MODE_HANDOU_MOVE_INIT = 30, + MODE_HANDOU_MOVE_MAIN = 31, + MODE_ITAI_MOVE_INIT = 40, }; /* 00000078-0000021C .text nodeCallBack__FP7J3DNodei */ @@ -195,7 +195,7 @@ static void body_atari_check(am_class* i_this) { return; } i_this->mAction = ACTION_HANDOU_MOVE; - i_this->mState = STATE_HANDOU_MOVE_INIT; + i_this->mMode = MODE_HANDOU_MOVE_INIT; i_this->mHugeKnockback = 0; if (player->getCutType() == 0x11) { // If the player hits the Armos Knight with the Skull Hammer's side swing, knock it back much farther than normal. @@ -284,14 +284,14 @@ static BOOL medama_atari_check(am_class* i_this) { i_this->mNeedleCyl.OnAtSPrmBit(cCcD_AtSPrm_Set_e); i_this->mNeedleCyl.OnAtHitBit(); i_this->mAction = ACTION_DOUSA; - i_this->mState = STATE_DOUSA_OKIRU; + i_this->mMode = MODE_DOUSA_OKIRU; } else { dComIfGp_particle_set(dPa_name::ID_COMMON_0010, &i_this->mEyeballPos, &player->shape_angle); // fopAcM_seStart(i_this, JA_SE_CM_AM_EYE_DAMAGE, 0); mDoAud_seStart(JA_SE_CM_AM_EYE_DAMAGE, &i_this->eyePos, 0, dComIfGp_getReverb(fopAcM_GetRoomNo(i_this))); fopAcM_monsSeStart(i_this, JA_SE_CV_AM_EYE_DAMAGE, 0x42); i_this->mAction = ACTION_ITAI_MOVE; - i_this->mState = STATE_ITAI_MOVE_INIT; + i_this->mMode = MODE_ITAI_MOVE_INIT; } break; default: @@ -394,7 +394,7 @@ static BOOL bomb_nomi_check(am_class* i_this) { bomb->setBombNoHit(); bomb_move_set(i_this, 0); i_this->mAction = ACTION_ITAI_MOVE; - i_this->mState = 44; + i_this->mMode = 44; return TRUE; } } @@ -409,7 +409,7 @@ static BOOL bomb_nomi_check(am_class* i_this) { bomb2->set_no_hit(); bomb_move_set(i_this, 0); i_this->mAction = ACTION_ITAI_MOVE; - i_this->mState = 44; + i_this->mMode = 44; return TRUE; } } @@ -481,13 +481,13 @@ static void medama_move(am_class* i_this) { /* 00001B00-00002564 .text action_dousa__FP8am_class */ static void action_dousa(am_class* i_this) { daPy_py_c* player = (daPy_py_c*)dComIfGp_getPlayer(0); - switch (i_this->mState) { - case STATE_DOUSA_INIT: + switch (i_this->mMode) { + case MODE_DOUSA_INIT: for (int i = 0; i < ARRAY_SIZE(i_this->mCountUpTimers); i++) { i_this->mCountUpTimers[i] = 0; } anm_init(i_this, AM_BCK_SLEEP_LOOP, 1.0f, J3DFrameCtrl::EMode_LOOP, 1.0f, -1); - i_this->mState += 1; + i_this->mMode += 1; // Fall-through case 1: if (i_this->mStartsInactive == 1 && i_this->mSwitch != 0xFF && !dComIfGs_isSwitch(i_this->mSwitch, dComIfGp_roomControl_getStayNo())) { @@ -506,15 +506,15 @@ static void action_dousa(am_class* i_this) { i_this->attention_info.flags = fopAc_Attn_LOCKON_BATTLE_e; i_this->mNeedleCyl.OnAtSetBit(); i_this->mNeedleCyl.OnAtHitBit(); - i_this->mState += 1; // STATE_DOUSA_OKIRU + i_this->mMode += 1; // MODE_DOUSA_OKIRU } } break; - case STATE_DOUSA_OKIRU: + case MODE_DOUSA_OKIRU: if (!i_this->mpMorf->isStop()) { break; } - i_this->mState += 1; + i_this->mMode += 1; // Fall-through case 3: if (i_this->mCurrBckIdx != AM_BCK_CLOSE && i_this->mCurrBckIdx != AM_BCK_CLOSE_LOOP) { @@ -528,7 +528,7 @@ static void action_dousa(am_class* i_this) { i_this->mCountDownTimers[2] = 6; } i_this->mTargetAngleY = fopAcM_searchPlayerAngleY(i_this); - i_this->mState += 1; + i_this->mMode += 1; // Fall-through case 4: { if (i_this->mCountDownTimers[2] == 1) { @@ -544,24 +544,24 @@ static void action_dousa(am_class* i_this) { f32 xzDist = std::sqrtf(xDist*xDist + zDist*zDist); if (xzDist > i_this->mAreaRadius) { i_this->mAction = ACTION_MODORU_MOVE; - i_this->mState = STATE_MODORU_MOVE_INIT; + i_this->mMode = MODE_MODORU_MOVE_INIT; return; } } else { if (fopAcM_searchPlayerDistance(i_this) > 2000.0f) { - i_this->mState = STATE_DOUSA_SLEEP_INIT; + i_this->mMode = MODE_DOUSA_SLEEP_INIT; break; } f32 yDist = player->current.pos.y - i_this->current.pos.y; yDist = std::sqrtf(yDist*yDist); // ??? if (yDist > 300.0f) { - i_this->mState = STATE_DOUSA_SLEEP_INIT; + i_this->mMode = MODE_DOUSA_SLEEP_INIT; break; } } s16 yRotDiff = cLib_distanceAngleS(i_this->shape_angle.y, i_this->mTargetAngleY); if (yRotDiff < 0x100) { - i_this->mState += 1; + i_this->mMode += 1; } break; } @@ -573,7 +573,7 @@ static void action_dousa(am_class* i_this) { if (!Line_check(i_this, player->current.pos) || player->getDamageWaitTimer() != 0) { i_this->speedF = 0.0f; } - i_this->mState += 1; + i_this->mMode += 1; break; case 6: if (i_this->mCurrBckIdx == AM_BCK_CLOSE) { @@ -596,7 +596,7 @@ static void action_dousa(am_class* i_this) { if (i_this->mCountUpTimers[0] < 2) { i_this->mCountDownTimers[0] = 10; } - i_this->mState += 1; + i_this->mMode += 1; // Fall-through case 7: if (i_this->mCountDownTimers[0] != 0) { @@ -621,9 +621,9 @@ static void action_dousa(am_class* i_this) { 0xB9, &i_this->mSmokeCbs[2], fopAcM_GetRoomNo(i_this) ); } - i_this->mState = 8; + i_this->mMode = 8; } else { - i_this->mState = 3; + i_this->mMode = 3; } break; case 8: @@ -635,27 +635,27 @@ static void action_dousa(am_class* i_this) { } if (i_this->mCountDownTimers[0] == 0) { i_this->mSmokeCbs[2].remove(); - i_this->mState = 3; + i_this->mMode = 3; } break; - case STATE_DOUSA_SLEEP_INIT: + case MODE_DOUSA_SLEEP_INIT: anm_init(i_this, AM_BCK_SLEEP, 1.0f, J3DFrameCtrl::EMode_NONE, 1.0f, -1); fopAcM_seStart(i_this, JA_SE_CM_AM_NEEDLE_IN, 0); i_this->mNeedleCyl.OffAtSetBit(); i_this->mNeedleCyl.OffAtSetBit(); i_this->attention_info.flags = 0; - i_this->mState += 1; + i_this->mMode += 1; break; - case STATE_DOUSA_SLEEP_MAIN: + case MODE_DOUSA_SLEEP_MAIN: if (i_this->mpMorf->isStop()) { - i_this->mState = 0; + i_this->mMode = 0; } break; } medama_move(i_this); - if (i_this->mState != 2 && medama_atari_check(i_this)) { + if (i_this->mMode != 2 && medama_atari_check(i_this)) { i_this->mSmokeCbs[2].remove(); } else if (bomb_nomi_check(i_this)) { i_this->mSmokeCbs[2].remove(); @@ -664,8 +664,8 @@ static void action_dousa(am_class* i_this) { /* 00002564-000028C4 .text action_modoru_move__FP8am_class */ static void action_modoru_move(am_class* i_this) { - switch (i_this->mState) { - case STATE_MODORU_MOVE_INIT: { + switch (i_this->mMode) { + case MODE_MODORU_MOVE_INIT: { anm_init(i_this, AM_BCK_CLOSE_LOOP, 1.0f, J3DFrameCtrl::EMode_LOOP, 1.0f, -1); i_this->mNeedleCyl.OnAtSetBit(); i_this->mNeedleCyl.OnAtHitBit(); @@ -677,10 +677,10 @@ static void action_modoru_move(am_class* i_this) { f32 xDistToSpawn = i_this->mSpawnPos.x - i_this->current.pos.x; f32 zDistToSpawn = i_this->mSpawnPos.z - i_this->current.pos.z; i_this->mTargetAngleY = cM_atan2s(xDistToSpawn, zDistToSpawn); - i_this->mState += 1; + i_this->mMode += 1; break; } - case STATE_MODORU_MOVE_MAIN: { + case MODE_MODORU_MOVE_MAIN: { f32 xDistToSpawn = i_this->mSpawnPos.x - i_this->current.pos.x; f32 zDistToSpawn = i_this->mSpawnPos.z - i_this->current.pos.z; if (i_this->mAcch.ChkGroundHit()) { @@ -705,18 +705,18 @@ static void action_modoru_move(am_class* i_this) { if (xzDist < 20.0f) { i_this->mTargetAngleY = i_this->mSpawnRotY; i_this->speedF = 0.0f; - i_this->mState += 1; + i_this->mMode += 1; } break; } - case STATE_MODORU_MOVE_END: { + case MODE_MODORU_MOVE_END: { s16 angleDiff = cLib_distanceAngleS(i_this->shape_angle.y, i_this->mTargetAngleY); if (angleDiff < 0x100) { i_this->mNeedleCyl.OffAtSetBit(); i_this->mNeedleCyl.OffAtSetBit(); i_this->attention_info.flags = 0; i_this->mAction = ACTION_DOUSA; - i_this->mState = STATE_DOUSA_INIT; + i_this->mMode = MODE_DOUSA_INIT; } break; } @@ -726,8 +726,8 @@ static void action_modoru_move(am_class* i_this) { /* 000028C4-00002A6C .text action_handou_move__FP8am_class */ static void action_handou_move(am_class* i_this) { daPy_py_c* player = daPy_getPlayerActorClass(); - switch (i_this->mState) { - case STATE_HANDOU_MOVE_INIT: { + switch (i_this->mMode) { + case MODE_HANDOU_MOVE_INIT: { i_this->speedF = 20.0f; s16 angleToPlayer = fopAcM_searchPlayerAngleY(i_this); i_this->current.angle.y = angleToPlayer + 0x8000; @@ -743,17 +743,17 @@ static void action_handou_move(am_class* i_this) { mDoAud_seStart(JA_SE_CM_AM_MOUTH_CLOSE, &i_this->eyePos, 0, dComIfGp_getReverb(fopAcM_GetRoomNo(i_this))); anm_init(i_this, AM_BCK_CLOSE, 1.0f, J3DFrameCtrl::EMode_NONE, 1.0f, -1); } - i_this->mState += 1; + i_this->mMode += 1; // Fall-through } - case STATE_HANDOU_MOVE_MAIN: { + case MODE_HANDOU_MOVE_MAIN: { cLib_addCalc0(&i_this->speedF, 0.8f, 2.0f); if (i_this->speedF < 0.1f) { i_this->speedF = 0.0f; i_this->mCountDownTimers[2] = 6; i_this->current.angle.y = i_this->shape_angle.y; i_this->mAction = ACTION_DOUSA; - i_this->mState = 3; + i_this->mMode = 3; } break; } @@ -762,8 +762,8 @@ static void action_handou_move(am_class* i_this) { /* 00002A6C-000034F4 .text action_itai_move__FP8am_class */ static void action_itai_move(am_class* i_this) { - switch (i_this->mState) { - case STATE_ITAI_MOVE_INIT: + switch (i_this->mMode) { + case MODE_ITAI_MOVE_INIT: i_this->mEyeRot.setall(0); i_this->mNeedleCyl.OffAtSetBit(); i_this->mNeedleCyl.OffAtSetBit(); @@ -772,7 +772,7 @@ static void action_itai_move(am_class* i_this) { i_this->mTargetAngleY = i_this->current.angle.y; fopAcM_seStart(i_this, JA_SE_CM_AM_NEEDLE_IN, 0); anm_init(i_this, AM_BCK_DAMAGE, 1.0f, J3DFrameCtrl::EMode_NONE, 1.0f, -1); - i_this->mState += 1; + i_this->mMode += 1; // Fall-through case 41: cLib_addCalc0(&i_this->speedF, 0.8f, 2.0f); @@ -782,7 +782,7 @@ static void action_itai_move(am_class* i_this) { i_this->mCountDownTimers[0] = 100; i_this->speedF = 0.0f; anm_init(i_this, AM_BCK_DAMAGE_LOOP, 1.0f, J3DFrameCtrl::EMode_LOOP, 1.0f, -1); - i_this->mState += 1; + i_this->mMode += 1; break; case 42: if (i_this->mCountDownTimers[0] != 0) { @@ -793,7 +793,7 @@ static void action_itai_move(am_class* i_this) { // Using the fopAcM_seStart inline multiple times in a single case makes the codegen not match. // fopAcM_seStart(i_this, JA_SE_CM_AM_MOUTH_CLOSE, 0); mDoAud_seStart(JA_SE_CM_AM_MOUTH_CLOSE, &i_this->eyePos, 0, dComIfGp_getReverb(fopAcM_GetRoomNo(i_this))); - i_this->mState += 1; + i_this->mMode += 1; break; case 43: if (!i_this->mpMorf->isStop()) { @@ -803,7 +803,7 @@ static void action_itai_move(am_class* i_this) { i_this->mNeedleCyl.OnAtHitBit(); i_this->mCountUpTimers[0] = 0; i_this->mAction = ACTION_DOUSA; - i_this->mState = 3; + i_this->mMode = 3; break; case 44: i_this->mSmokeCbs[3].remove(); @@ -819,7 +819,7 @@ static void action_itai_move(am_class* i_this) { i_this->mNeedleCyl.OffAtSetBit(); i_this->mNeedleCyl.OffAtSetBit(); i_this->mCountDownTimers[1] = 10; - i_this->mState += 1; + i_this->mMode += 1; // Fall-through case 45: bomb_move_set(i_this, 0); @@ -846,7 +846,7 @@ static void action_itai_move(am_class* i_this) { } i_this->mCountDownTimers[0] = 100; i_this->mTargetAngleY = fopAcM_searchPlayerAngleY(i_this); - i_this->mState += 1; + i_this->mMode += 1; break; case 46: bomb_move_set(i_this, 1); @@ -889,7 +889,7 @@ static void action_itai_move(am_class* i_this) { i_this->m0340 = NULL; } i_this->speedF = 0.0f; - i_this->mState += 1; + i_this->mMode += 1; break; case 47: bomb_move_set(i_this, 1); @@ -917,7 +917,7 @@ static void action_itai_move(am_class* i_this) { // fopAcM_seStart(i_this, JA_SE_LK_LAST_HIT, 0); mDoAud_seStart(JA_SE_LK_LAST_HIT, &i_this->eyePos, 0, dComIfGp_getReverb(fopAcM_GetRoomNo(i_this))); - fopAcM_createDisappear(i_this, ¢erPos, 5); + fopAcM_createDisappear(i_this, ¢erPos, 5, daDisItem_IBALL_e); fopAcM_onActor(i_this); fopAcM_delete(i_this); break; @@ -930,7 +930,7 @@ static void action_itai_move(am_class* i_this) { i_this->m0340->setGlobalRTMatrix(i_this->mpMorf->getModel()->getAnmMtx(2)); } - if (i_this->mState == 41 || i_this->mState == 42) { + if (i_this->mMode == 41 || i_this->mMode == 42) { bomb_nomi_check(i_this); } } @@ -987,11 +987,11 @@ static BOOL daAM_Execute(am_class* i_this) { i_this->speedF = 0.0f; i_this->mAction = ACTION_ITAI_MOVE; - i_this->mState = 47; + i_this->mMode = 47; } cLib_addCalcAngleS2(&i_this->current.angle.y, i_this->mTargetAngleY, 1, 0x500); - if (i_this->mState != 46 && i_this->mState != 47 && i_this->mState != 31) { + if (i_this->mMode != 46 && i_this->mMode != 47 && i_this->mMode != 31) { cLib_addCalcAngleS2(&i_this->shape_angle.y, i_this->current.angle.y, 1, 0x500); } diff --git a/src/d/actor/d_a_am2.cpp b/src/d/actor/d_a_am2.cpp index c61fdcb45..2d26f1522 100644 --- a/src/d/actor/d_a_am2.cpp +++ b/src/d/actor/d_a_am2.cpp @@ -177,7 +177,7 @@ static BOOL medama_atari_check(am2_class* i_this) { i_this->mNeedleCyl.OnAtHitBit(); i_this->mNeedleCyl.OnTgSetBit(); i_this->mAction = ACTION_DOUSA; - i_this->mState = 2; + i_this->mMode = 2; } else { dComIfGp_particle_set(dPa_name::ID_COMMON_0010, &hitPos, &player->shape_angle); // Using the fopAcM_seStart inline breaks the codegen. @@ -185,7 +185,7 @@ static BOOL medama_atari_check(am2_class* i_this) { mDoAud_seStart(JA_SE_CM_AM2_PARALYZED, &i_this->eyePos, 0, dComIfGp_getReverb(fopAcM_GetRoomNo(i_this))); fopAcM_monsSeStart(i_this, JA_SE_CV_AM2_PARALYZED, 0x42); i_this->mAction = ACTION_MAHI; - i_this->mState = 10; + i_this->mMode = 10; } return TRUE; } @@ -294,7 +294,7 @@ static BOOL week_atari_check(am2_class* i_this) { } i_this->mAction = ACTION_ITAI; - i_this->mState = 20; + i_this->mMode = 20; if (i_this->m2CE == 7 || i_this->m2CE == 8) { actor->health = 0; } @@ -341,7 +341,7 @@ static BOOL body_atari_check(am2_class* i_this) { break; } i_this->mAction = ACTION_HANDOU_MOVE; - i_this->mState = 30; + i_this->mMode = 30; i_this->m2CE = 7; if (player->getCutType() == 0x11) { i_this->m2CE = 8; @@ -448,7 +448,7 @@ static void action_dousa(am2_class* i_this) { cXyz offset; cXyz rotOffset; - if (i_this->mState == 4 || i_this->mState == 5) { + if (i_this->mMode == 4 || i_this->mMode == 5) { cMtx_YrotS(*calc_mtx, i_this->current.angle.y); offset.set(0.0f, 0.0f, 200.0f); MtxPosition(&offset, &rotOffset); @@ -456,7 +456,7 @@ static void action_dousa(am2_class* i_this) { rotOffset.y += 100.0f + REG12_F(19); } - switch (i_this->mState) { + switch (i_this->mMode) { case 0: for (int i = 0; i < ARRAY_SIZE(i_this->mCountUpTimers); i++) { i_this->mCountUpTimers[i] = 0; @@ -465,7 +465,7 @@ static void action_dousa(am2_class* i_this) { if (i_this->mCurrBckIdx != AM2_BCK_WAIT) { anm_init(i_this, AM2_BCK_WAIT, 10.0f, J3DFrameCtrl::EMode_NONE, 1.0f, -1); } - i_this->mState++; + i_this->mMode++; // Fall-through case 1: { f32 playerDist = fopAcM_searchPlayerDistance(i_this); @@ -479,7 +479,7 @@ static void action_dousa(am2_class* i_this) { fopAcM_monsSeStart(i_this, JA_SE_CV_AM2_AWAKE, 0); i_this->mEyeSph.OnTgSetBit(); i_this->mWeakSph.OnTgSetBit(); - i_this->mState += 1; + i_this->mMode += 1; } } break; @@ -491,7 +491,7 @@ static void action_dousa(am2_class* i_this) { if (!i_this->mpMorf->isStop()) { break; } - i_this->mState++; + i_this->mMode++; // Fall-through case 3: { for (int i = 0; i < ARRAY_SIZE(i_this->mCountUpTimers); i++) { @@ -501,7 +501,7 @@ static void action_dousa(am2_class* i_this) { f32 playerDist = fopAcM_searchPlayerDistance(i_this); f32 radiusAdjust = 200.0f; if (playerDist > i_this->mAreaRadius + radiusAdjust) { - i_this->mState = 6; + i_this->mMode = 6; } else { i_this->mNeedleCyl.OnAtSetBit(); i_this->mNeedleCyl.OnAtHitBit(); @@ -512,7 +512,7 @@ static void action_dousa(am2_class* i_this) { if (i_this->mCurrBckIdx != AM2_BCK_JUMP) { anm_init(i_this, AM2_BCK_JUMP, 2.0f, J3DFrameCtrl::EMode_LOOP, 1.0f, -1); } - i_this->mState++; + i_this->mMode++; } break; } @@ -521,11 +521,11 @@ static void action_dousa(am2_class* i_this) { i_this->gravity = -3.0f; i_this->speed.y = 12.0f; fopAcM_seStart(i_this, JA_SE_CM_AM2_LANDING, 0); - i_this->mState = 3; + i_this->mMode = 3; s16 angleDiff = cLib_distanceAngleS(i_this->shape_angle.y, i_this->current.angle.y); if (angleDiff < 0x1000) { if (Line_check(i_this, rotOffset) || player->getDamageWaitTimer() == 0) { - i_this->mState = 5; + i_this->mMode = 5; } } } @@ -552,7 +552,7 @@ static void action_dousa(am2_class* i_this) { } if (i_this->mCountUpTimers[0] > 8) { - i_this->mState = 3; + i_this->mMode = 3; } else { i_this->speedF = 9.0f; i_this->gravity = -8.0f; @@ -570,7 +570,7 @@ static void action_dousa(am2_class* i_this) { fopAcM_seStart(i_this, JA_SE_CM_AM2_SPIKE_IN, 0); i_this->mWeakSph.OffTgSetBit(); i_this->mWeakSph.ClrTgHit(); - i_this->mState++; + i_this->mMode++; // Fall-through case 7: if (i_this->mpMorf->isStop()) { @@ -583,7 +583,7 @@ static void action_dousa(am2_class* i_this) { i_this->mNeedleCyl.ClrTgHit(); i_this->m304 = i_this->current.pos; i_this->mAction = ACTION_DOUSA; - i_this->mState = 1; + i_this->mMode = 1; } break; } @@ -598,10 +598,10 @@ static void action_dousa(am2_class* i_this) { fopAcM_delete(i_this); } else { i_this->mAction = ACTION_MODORU_MOVE; - i_this->mState = 40; + i_this->mMode = 40; } } else if (!medama_atari_check(i_this)) { - if (i_this->mState < 3 || !week_atari_check(i_this)) { + if (i_this->mMode < 3 || !week_atari_check(i_this)) { body_atari_check(i_this); } } @@ -612,7 +612,7 @@ static void action_mahi(am2_class* i_this) { daPy_py_c* player = (daPy_py_c*)dComIfGp_getPlayer(0); fopAc_ac_c* actor = i_this; // Fixes regswaps - switch (i_this->mState) { + switch (i_this->mMode) { case 10: for (int i = 0; i < ARRAY_SIZE(i_this->mCountUpTimers); i++) { i_this->mCountUpTimers[i] = 0; @@ -631,7 +631,7 @@ static void action_mahi(am2_class* i_this) { fopAcM_seStart(actor, JA_SE_CM_AM2_SPIKE_IN, 0); anm_init(i_this, AM2_BCK_DAMAGE, 1.0f, J3DFrameCtrl::EMode_NONE, 1.0f, -1); - i_this->mState++; + i_this->mMode++; break; case 11: cLib_addCalc0(&actor->speedF, 0.5f, 1.0f); @@ -640,7 +640,7 @@ static void action_mahi(am2_class* i_this) { actor->speedF = 0.0f; i_this->mCountDownTimers[2] = 20*30; anm_init(i_this, AM2_BCK_MAHI, 1.0f, J3DFrameCtrl::EMode_LOOP, 1.0f, -1); - i_this->mState++; + i_this->mMode++; } } break; @@ -653,7 +653,7 @@ static void action_mahi(am2_class* i_this) { fopAcM_delete(actor); } else { i_this->mAction = ACTION_MODORU_MOVE; - i_this->mState = 40; + i_this->mMode = 40; } } else { if (i_this->mCountUpTimers[1] != 0 && i_this->mAcch.ChkGroundHit()) { @@ -672,7 +672,7 @@ static void action_mahi(am2_class* i_this) { actor->speedF = 0.0f; i_this->mbNotInHomeRoom = false; i_this->mBodyCyl.OffCoSetBit(); - i_this->mState++; + i_this->mMode++; } } break; @@ -692,11 +692,11 @@ static void action_mahi(am2_class* i_this) { actor->speed.y = 25.0f; actor->speedF = 35.0f; i_this->mAcch.OnLineCheck(); - i_this->mState = 14; + i_this->mMode = 14; } else { actor->gravity = -3.0f; i_this->mCountUpTimers[1] = 1; - i_this->mState = 12; + i_this->mMode = 12; } } break; @@ -710,7 +710,7 @@ static void action_mahi(am2_class* i_this) { } else { i_this->mAcch.OffLineCheck(); i_this->mAction = ACTION_MODORU_MOVE; - i_this->mState = 40; + i_this->mMode = 40; } } else { if (i_this->mAcch.ChkGroundHit()) { @@ -740,7 +740,7 @@ static void action_mahi(am2_class* i_this) { } else { actor->speedF = 0.0f; i_this->mCountUpTimers[0] = 0; - i_this->mState = 12; + i_this->mMode = 12; } } @@ -753,7 +753,7 @@ static void action_mahi(am2_class* i_this) { fopAcM_delete(actor); } else { i_this->mAction = ACTION_MODORU_MOVE; - i_this->mState = 40; + i_this->mMode = 40; return; } } @@ -764,14 +764,14 @@ static void action_mahi(am2_class* i_this) { actor->attention_info.flags = fopAc_Attn_LOCKON_BATTLE_e; fopAcM_OnStatus(actor, fopAcStts_SHOWMAP_e); i_this->mAction = ACTION_DOUSA; - i_this->mState = 3; + i_this->mMode = 3; } break; } i_this->mTargetAngleY = actor->current.angle.y; - if (i_this->mState >= 12 && i_this->mState != 15) { + if (i_this->mMode >= 12 && i_this->mMode != 15) { if (i_this->mStartsInactive == 1 && i_this->mSwitch != 0xFF) { if (!dComIfGs_isSwitch(i_this->mSwitch, dComIfGp_roomControl_getStayNo())) { i_this->mCountDownTimers[2] = 20*30; @@ -781,7 +781,7 @@ static void action_mahi(am2_class* i_this) { i_this->mSwitch = 0xFF; i_this->mAction = ACTION_DOUSA; - i_this->mState = 0; + i_this->mMode = 0; if (fopAcM_CheckStatus(actor, fopAcStts_CARRY_e)) { fopAcM_cancelCarryNow(actor); @@ -811,19 +811,19 @@ static void action_mahi(am2_class* i_this) { actor->gravity = -4.0f; actor->speed.y = 20.0f; i_this->mBodyCyl.OnCoSetBit(); - i_this->mState = 15; + i_this->mMode = 15; } } } - if (fopAcM_CheckStatus(actor, fopAcStts_CARRY_e) || i_this->mState == 15 || !week_atari_check(i_this)) { + if (fopAcM_CheckStatus(actor, fopAcStts_CARRY_e) || i_this->mMode == 15 || !week_atari_check(i_this)) { body_atari_check(i_this); } } /* 00002B08-000032AC .text action_itai__FP9am2_class */ static void action_itai(am2_class* i_this) { - switch (i_this->mState) { + switch (i_this->mMode) { case 20: for (int i = 0; i < ARRAY_SIZE(i_this->mCountUpTimers); i++) { i_this->mCountUpTimers[i] = 0; @@ -845,9 +845,9 @@ static void action_itai(am2_class* i_this) { if (i_this->mCountDownTimers[2] > 5) { i_this->speedF = 5.0f; } - i_this->mState++; + i_this->mMode++; } else { - i_this->mState = 22; + i_this->mMode = 22; } break; case 21: @@ -857,11 +857,11 @@ static void action_itai(am2_class* i_this) { i_this->gravity = -3.0f; if (i_this->mCountDownTimers[2] < 5) { i_this->mAction = ACTION_DOUSA; - i_this->mState = 3; + i_this->mMode = 3; } else { anm_init(i_this, AM2_BCK_MAHI, 1.0f, J3DFrameCtrl::EMode_LOOP, 1.0f, -1); i_this->mAction = ACTION_MAHI; - i_this->mState = 12; + i_this->mMode = 12; } } break; @@ -871,7 +871,7 @@ static void action_itai(am2_class* i_this) { i_this->mEyeSph.ClrTgHit(); i_this->mWeakSph.ClrTgHit(); anm_init(i_this, AM2_BCK_DEAD1, 1.0f, J3DFrameCtrl::EMode_NONE, 1.0f, -1); - i_this->mState++; + i_this->mMode++; break; case 23: if (!i_this->mpMorf->isStop()) { @@ -885,7 +885,7 @@ static void action_itai(am2_class* i_this) { i_this->mCountDownTimers[0] = 100; i_this->current.angle.y = fopAcM_searchPlayerAngleY(i_this); anm_init(i_this, AM2_BCK_DEAD2, 1.0f, J3DFrameCtrl::EMode_NONE, 1.0f, -1); - i_this->mState++; + i_this->mMode++; // Fall-through case 24: if (i_this->speed.y > 0.0f && i_this->mCountUpTimers[1] == 0) { @@ -921,7 +921,7 @@ static void action_itai(am2_class* i_this) { i_this->speedF = 0.0f; - i_this->mState++; + i_this->mMode++; } break; case 25: @@ -934,7 +934,7 @@ static void action_itai(am2_class* i_this) { dComIfGp_particle_set(dPa_name::ID_SCENE_81AF, &i_this->current.pos, &i_this->shape_angle); dComIfGp_particle_set(dPa_name::ID_SCENE_81B0, &i_this->current.pos, &i_this->shape_angle); fopAcM_seStart(i_this, JA_SE_CM_AM2_EXPLODE, 0); - fopAcM_createDisappear(i_this, ¢erPos, 5); + fopAcM_createDisappear(i_this, ¢erPos, 5, daDisItem_IBALL_e); fopAcM_onActor(i_this); fopAcM_delete(i_this); break; @@ -942,15 +942,15 @@ static void action_itai(am2_class* i_this) { if (naraku_check(i_this)) { if (i_this->mbNotInHomeRoom || i_this->health <= 0) { - if (i_this->mState != 25) { + if (i_this->mMode != 25) { anm_init(i_this, AM2_BCK_DEAD3, 1.0f, J3DFrameCtrl::EMode_NONE, 1.0f, -1); fopAcM_seStart(i_this, JA_SE_CM_AM2_BEF_EXPLODE, 0); i_this->speedF = 0.0f; - i_this->mState = 25; + i_this->mMode = 25; } } else { i_this->mAction = ACTION_MODORU_MOVE; - i_this->mState = 40; + i_this->mMode = 40; } } } @@ -958,7 +958,7 @@ static void action_itai(am2_class* i_this) { /* 000032AC-000034A4 .text action_handou_move__FP9am2_class */ static void action_handou_move(am2_class* i_this) { daPy_py_c* player = daPy_getPlayerActorClass(); - switch (i_this->mState) { + switch (i_this->mMode) { case 30: { i_this->speedF = 40.0f; s16 angleToPlayer = fopAcM_searchPlayerAngleY(i_this); @@ -972,7 +972,7 @@ static void action_handou_move(am2_class* i_this) { i_this->mNeedleCyl.OffTgSetBit(); i_this->mNeedleCyl.ClrTgHit(); i_this->mTargetAngleY = i_this->current.angle.y; - i_this->mState++; + i_this->mMode++; // Fall-through } case 31: @@ -982,12 +982,12 @@ static void action_handou_move(am2_class* i_this) { i_this->speedF = 0.0f; i_this->current.angle.y = i_this->shape_angle.y; i_this->mAction = ACTION_DOUSA; - i_this->mState = 3; + i_this->mMode = 3; if (i_this->mStartsInactive == 1 && i_this->mSwitch != 0xFF && !dComIfGs_isSwitch(i_this->mSwitch, dComIfGp_roomControl_getStayNo())) { i_this->attention_info.flags = 0; i_this->mCountDownTimers[2] = 20*30; i_this->mAction = ACTION_MAHI; - i_this->mState = 12; + i_this->mMode = 12; } } } @@ -997,7 +997,7 @@ static void action_handou_move(am2_class* i_this) { fopAcM_delete(i_this); } else { i_this->mAction = ACTION_MODORU_MOVE; - i_this->mState = 40; + i_this->mMode = 40; } } } @@ -1005,7 +1005,7 @@ static void action_handou_move(am2_class* i_this) { /* 000034A4-0000379C .text action_modoru_move__FP9am2_class */ static void action_modoru_move(am2_class* i_this) { // Respawns the Armos back at its spawn point after it falls into an abyss. - switch (i_this->mState) { + switch (i_this->mMode) { case 40: dCam_getBody()->ForceLockOff(fopAcM_GetID(i_this)); i_this->mInAbyssTimer = 0; @@ -1013,7 +1013,7 @@ static void action_modoru_move(am2_class* i_this) { i_this->mRippleCb.remove(); anm_init(i_this, AM2_BCK_WAIT, 10.0f, J3DFrameCtrl::EMode_NONE, 1.0f, -1); fopAcM_seStart(i_this, JA_SE_CM_AM2_WTR_RECOVER, 0); - i_this->mState++; + i_this->mMode++; // Fall-through case 41: cLib_addCalc0(&i_this->scale.x, 1.0f, 0.1f); @@ -1034,7 +1034,7 @@ static void action_modoru_move(am2_class* i_this) { i_this->current.pos = i_this->mSpawnPos; i_this->mTargetAngleY = i_this->current.angle.y; - i_this->mState++; + i_this->mMode++; } break; case 42: @@ -1056,13 +1056,13 @@ static void action_modoru_move(am2_class* i_this) { i_this->mWeakSph.ClrTgHit(); i_this->mNeedleCyl.ClrTgHit(); i_this->mAction = ACTION_DOUSA; - i_this->mState = 0; + i_this->mMode = 0; if (i_this->mStartsInactive == 1 && i_this->mSwitch != 0xFF && !dComIfGs_isSwitch(i_this->mSwitch, dComIfGp_roomControl_getStayNo())) { i_this->attention_info.flags = 0; i_this->mCountDownTimers[2] = 20*30; i_this->mAction = ACTION_MAHI; - i_this->mState = 12; + i_this->mMode = 12; } } break; @@ -1456,7 +1456,7 @@ static cPhs_State daAM2_Create(fopAc_ac_c* i_actor) { i_this->attention_info.flags = 0; i_this->mCountDownTimers[2] = 20*30; i_this->mAction = ACTION_MAHI; - i_this->mState = 12; + i_this->mMode = 12; } i_this->mAcchRadius = 40.0f + REG8_F(10); diff --git a/src/d/actor/d_a_arrow.cpp b/src/d/actor/d_a_arrow.cpp index f587d9e55..31c826aa5 100644 --- a/src/d/actor/d_a_arrow.cpp +++ b/src/d/actor/d_a_arrow.cpp @@ -904,7 +904,7 @@ BOOL daArrow_c::procReturn() { s32 temp3 = -field_0x69c; field_0x69c = (temp3 / 2); triPla = dComIfG_Bgsp()->GetTriPla(mLinChk); - if (triPla->mNormal.y >= 0.5f) { + if (cBgW_CheckBGround(triPla->GetNP()->y)) { field_0x69a = true; } } else if (field_0x69a && speed.y < 0.0f) { diff --git a/src/d/actor/d_a_bk.cpp b/src/d/actor/d_a_bk.cpp index fe86d014e..c5f008ff6 100644 --- a/src/d/actor/d_a_bk.cpp +++ b/src/d/actor/d_a_bk.cpp @@ -82,7 +82,7 @@ static s8 joint_check[] = { /* 000000EC-00000234 .text anm_init__FP8bk_classifUcfi */ static void anm_init(bk_class* i_this, int bckFileIdx, f32 morf, u8 loopMode, f32 speed, int soundFileIdx) { - if (i_this->dr.mState == 19 && bckFileIdx != BK_BCK_BK_OTISOU1 && bckFileIdx != BK_BCK_BK_OTISOU2) { + if (i_this->dr.mAction == 19 && bckFileIdx != BK_BCK_BK_OTISOU1 && bckFileIdx != BK_BCK_BK_OTISOU2) { return; } if (soundFileIdx >= 0) { @@ -931,7 +931,7 @@ static BOOL daBk_player_way_check(bk_class* i_this) { static void wait_set(bk_class* i_this) { if (i_this->m0B30 != 0 || i_this->m11F3 != 0) { anm_init(i_this, BK_BCK_BK_KYORO1, 10.0f, J3DFrameCtrl::EMode_LOOP, 1.0f, BK_BAS_BK_KYORO1); - } else if (i_this->dr.mState >= 4) { + } else if (i_this->dr.mAction >= 4) { anm_init(i_this, BK_BCK_BK_KYORO1, 10.0f, J3DFrameCtrl::EMode_LOOP, 1.0f, BK_BAS_BK_KYORO1); } else { anm_init(i_this, BK_BCK_BK_KYORO2, 10.0f, J3DFrameCtrl::EMode_LOOP, 1.0f, BK_BAS_BK_KYORO2); @@ -1033,16 +1033,16 @@ static void jyunkai(bk_class* i_this) { fopAc_ac_c* i_actor = i_this; if (i_this->mType == 4 || i_this->mType == 0xA) { - i_this->dr.mState = 1; - i_this->dr.m004 = 50; + i_this->dr.mAction = 1; + i_this->dr.mMode = 50; return; } else if (i_this->mType == 6) { - i_this->dr.mState = 2; - i_this->dr.m004 = 50; + i_this->dr.mAction = 2; + i_this->dr.mMode = 50; return; } else if (i_this->mType == 9) { - i_this->dr.mState = 3; - i_this->dr.m004 = 0; + i_this->dr.mAction = 3; + i_this->dr.mMode = 0; i_this->m0300[2] = 0; i_this->m120C = 0; i_this->m1210 = 0; @@ -1052,12 +1052,12 @@ static void jyunkai(bk_class* i_this) { cXyz sp10; - switch (i_this->dr.m004) { + switch (i_this->dr.mMode) { case 0: walk_set(i_this); // Fall-through case -1: - i_this->dr.m004 = 1; + i_this->dr.mMode = 1; if (i_this->m0B30 != 0 || i_this->m11F3 != 0) { if (i_this->m1215 != 0) { i_this->m1216 += i_this->m1217; @@ -1106,9 +1106,9 @@ static void jyunkai(bk_class* i_this) { if (std::sqrtf(sp10.x*sp10.x + sp10.z*sp10.z) < f31 * 0.25f * 2.0f) { if (i_this->ppd->m_points[i_this->m1216].mArg3 == 3) { wait_set(i_this); - i_this->dr.m004 = 2; + i_this->dr.mMode = 2; } else { - i_this->dr.m004 = -1; + i_this->dr.mMode = -1; } } } else if (std::sqrtf(sp10.x*sp10.x + sp10.z*sp10.z) < f31 * 0.25f * 2.0f || @@ -1120,7 +1120,7 @@ static void jyunkai(bk_class* i_this) { ) ) { wait_set(i_this); - i_this->dr.m004 = 2; + i_this->dr.mMode = 2; } cLib_addCalcAngleS2(&i_this->current.angle.y, i_this->dr.m4D0, 4, r29); cLib_addCalc2(&i_this->speedF, f31, 1.0f, 5.0f); @@ -1134,7 +1134,7 @@ static void jyunkai(bk_class* i_this) { } } if (i_this->m0300[1] == 0) { - i_this->dr.m004 = 0; + i_this->dr.mMode = 0; if (i_this->m0B30 == 0 && i_this->m11F3 == 0 && i_this->m030A == 0) { i_this->m11F3 = 1; } @@ -1147,7 +1147,7 @@ static void jyunkai(bk_class* i_this) { fopAcM_monsSeStart(i_this, JA_SE_CV_BK_SEARCH, 0); } if (i_this->m0300[1] == 0) { - i_this->dr.m004 = 0; + i_this->dr.mMode = 0; } break; } @@ -1162,11 +1162,11 @@ static void jyunkai(bk_class* i_this) { daBk_player_view_check(i_this, &i_this->dr.m714->current.pos, i_this->m0332, l_bkHIO.m034) ) ) { - i_this->dr.mState = 4; + i_this->dr.mAction = 4; i_this->m0300[1] = 0; - i_this->dr.m004 = 0; + i_this->dr.mMode = 0; } - } else if (i_this->m11F3 == 0 && i_this->dr.m004 == 2) { + } else if (i_this->m11F3 == 0 && i_this->dr.mMode == 2) { int frame = i_this->mpMorf->getFrame(); if ((frame == 0xB || frame == 0x19) && cM_rndF(1.0f) < 0.5f) { fopAcM_monsSeStart(i_this, JA_SE_CV_BK_SEARCH_BOKO, 0); @@ -1174,13 +1174,13 @@ static void jyunkai(bk_class* i_this) { } if (i_this->m0B30 == 0 && daBk_wepon_view_check(i_this)) { - i_this->dr.mState = 12; - i_this->dr.m004 = -1; + i_this->dr.mAction = 12; + i_this->dr.mMode = -1; } if (daBk_bomb_view_check(i_this)) { - i_this->dr.mState = 9; - i_this->dr.m004 = 0; + i_this->dr.mAction = 9; + i_this->dr.mMode = 0; } } @@ -1205,11 +1205,11 @@ static void stand(bk_class* i_this) { s32 r31 = fopAcM_otoCheck(i_this, 1000.0f); cXyz sp28; - switch (i_this->dr.m004) { + switch (i_this->dr.mMode) { case -20: fopAcM_OnStatus(i_this, fopAcStts_UNK4000_e); anm_init(i_this, BK_BCK_BK_WAIT, 10.0f, J3DFrameCtrl::EMode_LOOP, 1.0f, BK_BAS_BK_WAIT); - i_this->dr.m004 = -19; + i_this->dr.mMode = -19; i_this->m0300[1] = 20; i_this->m02B5 = 0; // Fall-through @@ -1220,10 +1220,10 @@ static void stand(bk_class* i_this) { sp28 = player->current.pos - ken->current.pos; if (sp28.abs() < 800.0f) { i_this->m1234 = 1; - i_this->dr.m004 = -18; + i_this->dr.mMode = -18; } } else { - i_this->dr.m004 = 1; + i_this->dr.mMode = 1; break; } } @@ -1233,7 +1233,7 @@ static void stand(bk_class* i_this) { i_this->m0300[1] = l_bkHIO.m104 + cM_rndF(l_bkHIO.m106 - l_bkHIO.m104); // Fall-through case -1: - i_this->dr.m004 = 1; + i_this->dr.mMode = 1; if (i_this->m02DC != 0) { if (cM_rndF(1.0f) < 0.5f) { anm_init(i_this, BK_BCK_BK_NOZOKU, 10.0f, J3DFrameCtrl::EMode_LOOP, 1.0f, -1); @@ -1256,9 +1256,9 @@ static void stand(bk_class* i_this) { anm_init(i_this, BK_BCK_BK_NOBI, 10.0f, J3DFrameCtrl::EMode_NONE, 1.0f, BK_BAS_BK_NOBI); fopAcM_monsSeStart(i_this, JA_SE_CV_BK_NOBI, 0); if (i_this->m121E < 3) { - i_this->dr.m004 = 2; + i_this->dr.mMode = 2; } else { - i_this->dr.m004 = 3; + i_this->dr.mMode = 3; i_this->m121E = 0; } } @@ -1267,7 +1267,7 @@ static void stand(bk_class* i_this) { r28 = true; i_this->m02CA = 2; if (i_this->mpMorf->isStop()) { - i_this->dr.m004 = 0; + i_this->dr.mMode = 0; } break; case 3: @@ -1276,7 +1276,7 @@ static void stand(bk_class* i_this) { if (i_this->mpMorf->isStop()) { anm_init(i_this, BK_BCK_BK_SLEEP, 10.0f, J3DFrameCtrl::EMode_LOOP, 1.0f, BK_BAS_BK_SLEEP); i_this->m0300[1] = l_bkHIO.m108 + cM_rndF(l_bkHIO.m10A - l_bkHIO.m108); - i_this->dr.m004 += 1; + i_this->dr.mMode += 1; } break; case 4: @@ -1285,7 +1285,7 @@ static void stand(bk_class* i_this) { if (i_this->m0300[1] == 0) { anm_init(i_this, BK_BCK_BK_NOBI, 10.0f, J3DFrameCtrl::EMode_NONE, 1.0f, BK_BAS_BK_NOBI); fopAcM_monsSeStart(i_this, JA_SE_CV_BK_NOBI, 0); - i_this->dr.m004 = 2; + i_this->dr.mMode = 2; } break; case 10: @@ -1294,13 +1294,13 @@ static void stand(bk_class* i_this) { } if (i_this->m0300[1] == 0) { anm_init(i_this, BK_BCK_BK_KYORO2, 10.0f, J3DFrameCtrl::EMode_LOOP, 1.0f, BK_BAS_BK_KYORO2); - i_this->dr.m004 = 11; + i_this->dr.mMode = 11; i_this->m0300[3] = 30.0f + cM_rndF(30.0f); } break; case 11: if (i_this->m0300[3] == 0) { - i_this->dr.m004 = 0; + i_this->dr.mMode = 0; } break; case 20: @@ -1308,15 +1308,15 @@ static void stand(bk_class* i_this) { i_this->dr.m710 = 1; } if (i_this->m0300[1] == 0) { - i_this->dr.mState = 4; + i_this->dr.mAction = 4; i_this->m0300[1] = 0; - i_this->dr.m004 = 0; + i_this->dr.mMode = 0; return; } break; case 50: anm_init(i_this, BK_BCK_BK_KYORO1, 10.0f, J3DFrameCtrl::EMode_LOOP, 1.0f, BK_BAS_BK_KYORO1); - i_this->dr.m004 += 1; + i_this->dr.mMode += 1; i_this->m0300[1] = 50; // Fall-through case 51: @@ -1326,7 +1326,7 @@ static void stand(bk_class* i_this) { } if (i_this->m0300[1] == 0) { anm_init(i_this, BK_BCK_BK_RUN, 10.0f, J3DFrameCtrl::EMode_LOOP, 1.0f, BK_BAS_BK_RUN); - i_this->dr.m004 += 1; + i_this->dr.mMode += 1; i_this->m0300[2] = 60; } break; @@ -1334,14 +1334,14 @@ static void stand(bk_class* i_this) { sp28 = i_this->home.pos - i_this->current.pos; i_this->dr.m4D0 = cM_atan2s(sp28.x, sp28.z); if (std::sqrtf(sp28.x*sp28.x + sp28.z*sp28.z) < l_bkHIO.m054 * 0.25f * 5.0f) { - i_this->dr.m004 = 0; + i_this->dr.mMode = 0; } cLib_addCalcAngleS2(&i_this->current.angle.y, i_this->dr.m4D0, 4, 0x1000); cLib_addCalc2(&i_this->speedF, l_bkHIO.m054, 1.0f, 5.0f); if (i_this->dr.mAcch.ChkGroundHit() && i_this->dr.mAcch.ChkWallHit()) { if (i_this->m02DC != 0) { - i_this->dr.m004 = 60; + i_this->dr.mMode = 60; i_this->m0300[2] = 20; break; } @@ -1349,7 +1349,7 @@ static void stand(bk_class* i_this) { i_this->speed.y = 100.0f + REG0_F(16); anm_init(i_this, BK_BCK_BK_JUMP1, 2.0f, J3DFrameCtrl::EMode_NONE, 1.0f, BK_BAS_BK_JUMP1); fopAcM_monsSeStart(i_this, JA_SE_CV_BK_JUMP, 0); - i_this->dr.m004 = 53; + i_this->dr.mMode = 53; } break; @@ -1359,19 +1359,19 @@ static void stand(bk_class* i_this) { break; } anm_init(i_this, BK_BCK_BK_JUMP2, 0.0f, J3DFrameCtrl::EMode_NONE, 1.0f, BK_BAS_BK_JUMP2); - i_this->dr.m004 += 1; + i_this->dr.mMode += 1; break; case 54: i_this->speedF = 0.0f; if (i_this->mpMorf->isStop()) { - i_this->dr.m004 = 51; + i_this->dr.mMode = 51; } break; case 60: cLib_addCalcAngleS2(&i_this->current.angle.y, i_this->dr.m4D0 + 0x4000, 4, 0x1000); cLib_addCalc2(&i_this->speedF, l_bkHIO.m054, 1.0f, 5.0f); if (i_this->m0300[2] == 0) { - i_this->dr.m004 = 52; + i_this->dr.mMode = 52; } break; } @@ -1379,11 +1379,11 @@ static void stand(bk_class* i_this) { if (r27) { return; } - if (i_this->dr.m004 < 10 && r31 != 0) { - i_this->dr.m004 = 10; + if (i_this->dr.mMode < 10 && r31 != 0) { + i_this->dr.mMode = 10; i_this->m0300[1] = 45.0f + cM_rndF(10.0f); } - if (!r28 && i_this->m0300[2] == 0 && i_this->dr.m004 != 20) { + if (!r28 && i_this->m0300[2] == 0 && i_this->dr.mMode != 20) { f32 f1; if (i_this->m02B5 != 0xFF) { f1 = i_this->m02B5 * 10.0f; @@ -1394,12 +1394,12 @@ static void stand(bk_class* i_this) { if (i_this->mPlayerDistance < f1 && daBk_player_view_check(i_this, &i_this->dr.m714->current.pos, i_this->m0332, l_bkHIO.m034) ) { - if (i_this->dr.m004 >= 50) { - i_this->dr.mState = 4; + if (i_this->dr.mMode >= 50) { + i_this->dr.mAction = 4; i_this->m0300[1] = 0; - i_this->dr.m004 = 0; + i_this->dr.mMode = 0; } else { - i_this->dr.m004 = 20; + i_this->dr.mMode = 20; anm_init(i_this, BK_BCK_BK_BIKKURI, 3.0f, J3DFrameCtrl::EMode_NONE, 1.0f, -1); i_this->m0300[1] = 30; fopAcM_monsSeStart(i_this, JA_SE_CV_BK_FOUND_LINK, 0); @@ -1407,13 +1407,13 @@ static void stand(bk_class* i_this) { } if (daBk_bomb_view_check(i_this)) { - i_this->dr.mState = 9; - i_this->dr.m004 = 0; + i_this->dr.mAction = 9; + i_this->dr.mMode = 0; } } if (i_this->m0B30 == 0 && daBk_wepon_view_check(i_this)) { - i_this->dr.mState = 12; - i_this->dr.m004 = -1; + i_this->dr.mAction = 12; + i_this->dr.mMode = -1; } } @@ -1455,9 +1455,9 @@ static void stand2(bk_class* i_this) { i_this->home.angle.y = i_this->mpSearchLight->current.angle.y + REG8_S(4); } - switch (i_this->dr.m004) { + switch (i_this->dr.mMode) { case 0: - i_this->dr.m004 = 1; + i_this->dr.mMode = 1; // Fall-through case 1: { if (i_this->mpSearchLight != NULL) { @@ -1500,13 +1500,13 @@ static void stand2(bk_class* i_this) { } if (i_this->m0300[1] == 0) { anm_init(i_this, BK_BCK_BK_KYORO2, 10.0f, J3DFrameCtrl::EMode_LOOP, 1.0f, BK_BAS_BK_KYORO2); - i_this->dr.m004 = 11; + i_this->dr.mMode = 11; i_this->m0300[3] = 30.0f + cM_rndF(30.0f); } break; case 11: if (i_this->m0300[3] == 0) { - i_this->dr.m004 = 0; + i_this->dr.mMode = 0; } break; case 20: @@ -1515,22 +1515,22 @@ static void stand2(bk_class* i_this) { i_this->dr.m710 = 1; } if (i_this->m0300[1] == 0) { - i_this->dr.mState = 4; + i_this->dr.mAction = 4; i_this->m0300[1] = 0; - i_this->dr.m004 = 0; + i_this->dr.mMode = 0; return; } break; case 50: anm_init(i_this, BK_BCK_BK_KYORO1, 10.0f, J3DFrameCtrl::EMode_LOOP, 1.0f, BK_BAS_BK_KYORO1); - i_this->dr.m004 += 1; + i_this->dr.mMode += 1; i_this->m0300[1] = 50; // Fall-through case 51: i_this->speedF = 0.0f; if (i_this->m0300[1] == 0) { anm_init(i_this, BK_BCK_BK_RUN, 10.0f, J3DFrameCtrl::EMode_LOOP, 1.0f, BK_BAS_BK_RUN); - i_this->dr.m004 += 1; + i_this->dr.mMode += 1; path_check(i_this, 1); if (i_this->m1216 >= 4) { i_this->m1217 = 1; @@ -1551,10 +1551,10 @@ static void stand2(bk_class* i_this) { temp_568: i_this->dr.m4D0 = cM_atan2s(sp24.x, sp24.z); if (std::sqrtf(sp24.x*sp24.x + sp24.z*sp24.z) < l_bkHIO.m054 * 0.25f * 5.0f) { - if (i_this->dr.m004 == 60) { - i_this->dr.m004 = 0; + if (i_this->dr.mMode == 60) { + i_this->dr.mMode = 0; } else if (i_this->m1216 == 0) { - i_this->dr.m004 = 60; + i_this->dr.mMode = 60; } else { i_this->m1216 += i_this->m1217; if (i_this->m1216 >= (s8)i_this->ppd->m_num) { @@ -1569,12 +1569,12 @@ temp_568: break; } - if (i_this->dr.m004 < 10 && r31 != 0) { - i_this->dr.m004 = 10; + if (i_this->dr.mMode < 10 && r31 != 0) { + i_this->dr.mMode = 10; i_this->m0300[1] = cM_rndF(10.0f) + 45.0f; } - if (i_this->m0300[2] == 0 && i_this->dr.m004 != 20) { + if (i_this->m0300[2] == 0 && i_this->dr.mMode != 20) { f32 f1; if (i_this->m02B5 != 0xFF) { f1 = i_this->m02B5 * 10.0f; @@ -1585,12 +1585,12 @@ temp_568: if (i_this->mPlayerDistance < f1 && daBk_player_view_check(i_this, &i_this->dr.m714->current.pos, i_this->m0332, l_bkHIO.m034) ) { - if (i_this->dr.m004 >= 50) { - i_this->dr.mState = 4; + if (i_this->dr.mMode >= 50) { + i_this->dr.mAction = 4; i_this->m0300[1] = 0; - i_this->dr.m004 = 0; + i_this->dr.mMode = 0; } else { - i_this->dr.m004 = 20; + i_this->dr.mMode = 20; anm_init(i_this, BK_BCK_BK_BIKKURI, 3.0f, J3DFrameCtrl::EMode_NONE, 1.0f, -1); i_this->m0300[1] = 30; fopAcM_monsSeStart(i_this, JA_SE_CV_BK_FOUND_LINK, 0); @@ -1598,14 +1598,14 @@ temp_568: } if (daBk_bomb_view_check(i_this)) { - i_this->dr.mState = 9; - i_this->dr.m004 = 0; + i_this->dr.mAction = 9; + i_this->dr.mMode = 0; } } if (i_this->m0B30 == 0 && daBk_wepon_view_check(i_this)) { - i_this->dr.mState = 12; - i_this->dr.m004 = -1; + i_this->dr.mAction = 12; + i_this->dr.mMode = -1; } } @@ -1613,10 +1613,10 @@ temp_568: static void path_run(bk_class* i_this) { i_this->dr.m710 = 0; - switch (i_this->dr.m004) { + switch (i_this->dr.mMode) { case 0: anm_init(i_this, BK_BCK_BK_RUN, 10.0f, J3DFrameCtrl::EMode_LOOP, l_bkHIO.m070, BK_BAS_BK_RUN); - i_this->dr.m004 = 1; + i_this->dr.mMode = 1; // Fall-through case 1: dPnt* point = &i_this->ppd->m_points[i_this->m1216]; @@ -1696,9 +1696,9 @@ static void path_run(bk_class* i_this) { if (i_this->mPlayerDistance < l_bkHIO.m028 && daBk_player_view_check(i_this, &i_this->dr.m714->current.pos, i_this->m0332, l_bkHIO.m034) ) { - i_this->dr.mState = 4; + i_this->dr.mAction = 4; i_this->m0300[1] = 0; - i_this->dr.m004 = 0; + i_this->dr.mMode = 0; } } @@ -1775,9 +1775,9 @@ static void fight_run(bk_class* i_this) { } i_this->dr.m4D0 = i_this->m0332; - if (i_this->dr.m004 != 0) { + if (i_this->dr.mMode != 0) { s16 r6 = 0x400; - if (i_this->dr.m004 == 1) { + if (i_this->dr.mMode == 1) { r6 = 0x800; } if (i_this->dr.mAcch.ChkGroundHit()) { @@ -1785,11 +1785,11 @@ static void fight_run(bk_class* i_this) { } } - switch (i_this->dr.m004) { + switch (i_this->dr.mMode) { case 0: if (i_this->m0300[1] == 0) { fight_run_set(i_this); - i_this->dr.m004 = 1; + i_this->dr.mMode = 1; i_this->m120C = 0; i_this->m1212 = cM_rndF(1000.0f); } else { @@ -1812,7 +1812,7 @@ static void fight_run(bk_class* i_this) { i_this->m120C = 0; } if (i_this->mPlayerDistance < l_bkHIO.m02C) { - i_this->dr.m004 = 2; + i_this->dr.mMode = 2; i_this->m0300[4] = 50; } break; @@ -1859,8 +1859,8 @@ static void fight_run(bk_class* i_this) { } if (i_this->mPlayerDistance < l_bkHIO.m030) { - i_this->dr.mState = 5; - i_this->dr.m004 = 0; + i_this->dr.mAction = 5; + i_this->dr.mMode = 0; return; } break; @@ -1868,7 +1868,7 @@ static void fight_run(bk_class* i_this) { i_this->m120C = 0; if (cM_rndF(1.0f) < 0.3f && i_this->m0B30 == 0) { - i_this->dr.m004 = 8; + i_this->dr.mMode = 8; wait_set(i_this); i_this->m0300[1] = 20.0f + cM_rndF(20.0f); break; @@ -1880,9 +1880,9 @@ static void fight_run(bk_class* i_this) { anm_init(i_this, BK_BCK_BK_WALK2, 10.0f, J3DFrameCtrl::EMode_LOOP, 1.0f, BK_BAS_BK_WALK2); } if (stickPosX > 0.0f) { - i_this->dr.m004 = 5; + i_this->dr.mMode = 5; } else { - i_this->dr.m004 = 6; + i_this->dr.mMode = 6; } } else if (i_this->mPlayerDistance < l_bkHIO.m030) { if (i_this->m0B30 != 0 || i_this->m11F3 != 0) { @@ -1890,14 +1890,14 @@ static void fight_run(bk_class* i_this) { } else { anm_init(i_this, BK_BCK_BK_WALK2, 10.0f, J3DFrameCtrl::EMode_LOOP, 1.0f, BK_BAS_BK_WALK2); } - i_this->dr.m004 = 4; + i_this->dr.mMode = 4; } else { if (i_this->m0B30 != 0 || i_this->m11F3 != 0) { anm_init(i_this, BK_BCK_BK_WALK2, 10.0f, J3DFrameCtrl::EMode_LOOP, 1.0f, BK_BAS_BK_WALK2); } else { anm_init(i_this, BK_BCK_BK_WALK2, 10.0f, J3DFrameCtrl::EMode_LOOP, 1.0f, BK_BAS_BK_WALK2); } - i_this->dr.m004 = 3; + i_this->dr.mMode = 3; } i_this->m0300[1] = 20.0f + cM_rndF(20.0f); break; @@ -1907,34 +1907,34 @@ static void fight_run(bk_class* i_this) { i_this->speed.y = 100.0f + REG0_F(16); anm_init(i_this, BK_BCK_BK_JUMP1, 2.0f, J3DFrameCtrl::EMode_NONE, 1.0f, BK_BAS_BK_JUMP1); fopAcM_monsSeStart(i_this, JA_SE_CV_BK_JUMP, 0); - i_this->dr.m004 = 33; + i_this->dr.mMode = 33; break; } if (i_this->m0300[1] == 0) { - i_this->dr.m004 = 2; + i_this->dr.mMode = 2; } break; case 33: if (i_this->dr.mAcch.ChkGroundHit()) { anm_init(i_this, BK_BCK_BK_JUMP2, 0.0f, J3DFrameCtrl::EMode_NONE, 1.0f, BK_BAS_BK_JUMP2); - i_this->dr.m004++; + i_this->dr.mMode++; } break; case 34: i_this->speedF = 0.0f; if (i_this->mpMorf->isStop()) { - i_this->dr.m004 = 3; + i_this->dr.mMode = 3; } break; case 4: if ((i_this->m02DD & 0x2) == 0) { cLib_addCalc2(&i_this->speedF, -l_bkHIO.m060, 1.0f, 20.0f); if (i_this->m0300[1] == 0) { - i_this->dr.m004 = 2; + i_this->dr.mMode = 2; } break; } - i_this->dr.m004 = 3; + i_this->dr.mMode = 3; if (i_this->m0B30 != 0 || i_this->m11F3 != 0) { anm_init(i_this, BK_BCK_BK_WALK2, 10.0f, J3DFrameCtrl::EMode_LOOP, 1.0f, BK_BAS_BK_WALK2); } else { @@ -1960,29 +1960,29 @@ static void fight_run(bk_class* i_this) { temp_860: cLib_addCalc2(&i_this->speedF, l_bkHIO.m064, 1.0f, 30.0f); if (i_this->m0300[1] == 0) { - i_this->dr.m004 = 2; + i_this->dr.mMode = 2; } break; case 8: i_this->speedF = 0.0f; if (i_this->m0300[1] == 0) { - i_this->dr.m004 = 2; + i_this->dr.mMode = 2; } break; } - if (i_this->dr.m004 >= 3 && i_this->m0314 <= 2) { + if (i_this->dr.mMode >= 3 && i_this->m0314 <= 2) { if (i_this->mPlayerDistance > l_bkHIO.m02C + 75.0f) { - i_this->dr.mState = 0; - i_this->dr.m004 = 0; + i_this->dr.mAction = 0; + i_this->dr.mMode = 0; path_check(i_this, 0); } if (i_this->mPlayerDistance < l_bkHIO.m030 + 62.5f && i_this->mPlayerDistance > l_bkHIO.m030 - 62.5f) { if (i_this->m0300[4] == 0) { i_this->m0300[4] = l_bkHIO.m078; if (cM_rndF(100.0f) < l_bkHIO.m07C) { - i_this->dr.mState = 5; - i_this->dr.m004 = 0; + i_this->dr.mAction = 5; + i_this->dr.mMode = 0; } } } @@ -2011,8 +2011,8 @@ static void fight_run(bk_class* i_this) { ) ) { if (i_this->m02D4 != 0 && (cM_rndF(1.0f) <= 0.5f || l_bkHIO.m008 != 0)) { - i_this->dr.mState = 10; - i_this->dr.m004 = 0; + i_this->dr.mAction = 10; + i_this->dr.mMode = 0; if (player->getCutType() == 0xA) { i_this->m0300[1] = 0x1E; } else { @@ -2021,10 +2021,10 @@ static void fight_run(bk_class* i_this) { } else { i_this->m030E = 0xA; if ((ground_4_check(i_this, 4, i_this->current.angle.y, 200.0f) & 0xD) == 0) { - i_this->dr.mState = 5; + i_this->dr.mAction = 5; attack_set(i_this, 1); anm_init(i_this, BK_BCK_BK_JUMP1, 2.0f, J3DFrameCtrl::EMode_NONE, 1.0f, BK_BAS_BK_JUMP1); - i_this->dr.m004 = -10; + i_this->dr.mMode = -10; i_this->speedF = -60.0f + REG0_F(3); i_this->speed.y = 80.0f + REG0_F(4); fopAcM_monsSeStart(i_this, JA_SE_CV_BK_JUMP, 0); @@ -2043,8 +2043,8 @@ static void fight_run(bk_class* i_this) { if (cM_rndF(1.0f) < 0.5f + REG0_F(0) && (ground_4_check(i_this, 4, i_this->current.angle.y, 200.0f) & 0xD) == 0 ) { - i_this->dr.mState = 7; - i_this->dr.m004 = 0; + i_this->dr.mAction = 7; + i_this->dr.mMode = 0; } i_this->m02FC = 0; } @@ -2052,17 +2052,17 @@ static void fight_run(bk_class* i_this) { i_this->m02FC = 0; } if (daBk_player_bg_check(i_this, &i_this->dr.m714->current.pos)) { - i_this->dr.mState = 0; - i_this->dr.m004 = 0; + i_this->dr.mAction = 0; + i_this->dr.mMode = 0; path_check(i_this, 0); } if (i_this->m0B30 == 0 && daBk_wepon_view_check(i_this)) { - i_this->dr.mState = 12; - i_this->dr.m004 = -1; + i_this->dr.mAction = 12; + i_this->dr.mMode = -1; } if (daBk_bomb_view_check(i_this)) { - i_this->dr.mState = 9; - i_this->dr.m004 = 0; + i_this->dr.mAction = 9; + i_this->dr.mMode = 0; } i_this->m02DD = ground_4_check(i_this, 4, i_this->current.angle.y, 90.0f + REG6_F(7)); if (i_this->m0314 != 0) { @@ -2143,17 +2143,17 @@ static fopAc_ac_c* yari_hit_check(bk_class* i_this) { /* 000075E8-00007EF4 .text fight__FP8bk_class */ static void fight(bk_class* i_this) { daPy_py_c* player = (daPy_py_c*)dComIfGp_getPlayer(0); - switch (i_this->dr.m004) { + switch (i_this->dr.mMode) { case -10: if (i_this->dr.mAcch.ChkGroundHit()) { anm_init(i_this, BK_BCK_BK_JUMP2, 0.0f, J3DFrameCtrl::EMode_NONE, 1.0f, BK_BAS_BK_JUMP2); - i_this->dr.m004 = -9; + i_this->dr.mMode = -9; i_this->speedF = 0.0f; } break; case -9: if (i_this->mpMorf->isStop()) { - i_this->dr.m004 = 1; + i_this->dr.mMode = 1; i_this->m0300[2] = 8; anm_init(i_this, BK_BCK_BK_JATTACK1, 2.0f, J3DFrameCtrl::EMode_NONE, 1.0f, -1); i_this->speedF = 80.0f + REG0_F(5); @@ -2170,7 +2170,7 @@ static void fight(bk_class* i_this) { i_this->speed.y = 105.0f + REG0_F(8); fopAcM_monsSeStart(i_this, JA_SE_CV_BK_ATTACK_L, 0); } - i_this->dr.m004 = 1; + i_this->dr.mMode = 1; i_this->m0300[2] = 8; // Fall-through temp_1B8: @@ -2255,8 +2255,8 @@ temp_1B8: i_this->mpMorf->play(&i_this->eyePos, 0, 0); if (i_this->m0B30 != 0 && i_this->m02D5 == 0 && cM_rndF(1.0f) < 0.5f) { i_this->m0B34 = 1; - i_this->dr.mState = 8; - i_this->dr.m004 = -10; + i_this->dr.mAction = 8; + i_this->dr.mMode = -10; i_this->m0300[0] = 10; i_this->m0300[1] = 100; } @@ -2276,10 +2276,10 @@ temp_1B8: i_this->m0B7A = -1; i_this->mpMorf->play(&i_this->eyePos, 0, 0); } else { - i_this->dr.mState = 0; + i_this->dr.mAction = 0; path_check(i_this, 0); wait_set(i_this); - i_this->dr.m004 = 2; + i_this->dr.mMode = 2; } i_this->m0318 = 1; i_this->m0314 = 0x10; @@ -2299,32 +2299,32 @@ temp_1B8: (i_this->m0B5C == 2 && i_this->m0B60 == 1) ) { if (i_this->m11FC != fpcM_ERROR_PROCESS_ID_e) { - i_this->dr.mState = 14; - i_this->dr.m004 = 0; + i_this->dr.mAction = 14; + i_this->dr.mMode = 0; } else if (i_this->mPlayerDistance < l_bkHIO.m02C) { if (daBk_player_view_check(i_this, &i_this->dr.m714->current.pos, i_this->m0332, l_bkHIO.m034)) { if (cM_rndF(1.0f) < 0.8f || i_this->m0B7A < 0) { - i_this->dr.mState = 4; - i_this->dr.m004 = 2; + i_this->dr.mAction = 4; + i_this->dr.mMode = 2; i_this->m0300[1] = 0; } else { - i_this->dr.m004 = 0; + i_this->dr.mMode = 0; } } else { if (i_this->m0B30 != 0 || i_this->m11F3 != 0) { - i_this->dr.mState = 8; - i_this->dr.m004 = 0; + i_this->dr.mAction = 8; + i_this->dr.mMode = 0; } else { - i_this->dr.mState = 0; + i_this->dr.mAction = 0; wait_set(i_this); - i_this->dr.m004 = 2; + i_this->dr.mMode = 2; } } } else { - i_this->dr.mState = 0; + i_this->dr.mAction = 0; path_check(i_this, 0); wait_set(i_this); - i_this->dr.m004 = 2; + i_this->dr.mMode = 2; } } else if (i_this->dr.mAcch.ChkGroundHit()) { attack_info_s* r6 = attack_info[i_this->m0B5C]; @@ -2346,10 +2346,10 @@ temp_1B8: /* 00007EF4-00008108 .text p_lost__FP8bk_class */ static void p_lost(bk_class* i_this) { i_this->dr.m710 = 0; - switch (i_this->dr.m004) { + switch (i_this->dr.mMode) { case -10: if (i_this->mpMorf->isStop() || i_this->m0300[0] == 0) { - i_this->dr.m004++; + i_this->dr.mMode++; i_this->m0300[0] = 5; } break; @@ -2359,7 +2359,7 @@ static void p_lost(bk_class* i_this) { } // Fall-through case 0: - i_this->dr.m004 = 1; + i_this->dr.mMode = 1; anm_init(i_this, BK_BCK_BK_KYORO2, 5.0f, J3DFrameCtrl::EMode_LOOP, 1.0f, BK_BAS_BK_KYORO2); i_this->speedF = 0.0f; i_this->m0300[1] = 30.0f + cM_rndF(30.0f); @@ -2370,17 +2370,17 @@ static void p_lost(bk_class* i_this) { fopAcM_monsSeStart(i_this, JA_SE_CV_BK_SEARCH, 0); } if (i_this->m0300[1] == 0) { - i_this->dr.mState = 0; + i_this->dr.mAction = 0; path_check(i_this, 0); wait_set(i_this); - i_this->dr.m004 = 2; + i_this->dr.mMode = 2; } break; } if (i_this->m0300[1] < 10 && daBk_player_view_check(i_this, &i_this->dr.m714->current.pos, i_this->m0332, l_bkHIO.m034)) { - i_this->dr.mState = 4; - i_this->dr.m004 = 2; + i_this->dr.mAction = 4; + i_this->dr.mMode = 2; i_this->m0300[1] = 0; } } @@ -2388,10 +2388,10 @@ static void p_lost(bk_class* i_this) { /* 00008108-00008470 .text b_nige__FP8bk_class */ static void b_nige(bk_class* i_this) { if (!daBk_bomb_check(i_this)) { - i_this->dr.mState = 0; + i_this->dr.mAction = 0; path_check(i_this, 0); wait_set(i_this); - i_this->dr.m004 = 2; + i_this->dr.mMode = 2; return; } @@ -2401,9 +2401,9 @@ static void b_nige(bk_class* i_this) { sp10.z = r3->current.pos.z - i_this->current.pos.z; i_this->dr.m4D0 = cM_atan2s(-sp10.x, -sp10.z); - switch (i_this->dr.m004) { + switch (i_this->dr.mMode) { case 0: - i_this->dr.m004 = 1; + i_this->dr.mMode = 1; anm_init(i_this, BK_BCK_BK_HAKKEN, 3.0f, J3DFrameCtrl::EMode_NONE, 1.0f, BK_BAS_BK_HAKKEN); fopAcM_monsSeStart(i_this, JA_SE_CV_BK_FOUND_LINK, 0); i_this->m0300[1] = 20; @@ -2412,7 +2412,7 @@ static void b_nige(bk_class* i_this) { i_this->speedF = 0.0f; cLib_addCalcAngleS2(&i_this->current.angle.y, i_this->dr.m4D0 + 0x8000, 2, 0x3000); if (i_this->m0300[1] == 0) { - i_this->dr.m004 = 2; + i_this->dr.mMode = 2; anm_init(i_this, BK_BCK_BK_NIGERU, 5.0f, J3DFrameCtrl::EMode_LOOP, 1.0f, BK_BAS_BK_NIGERU); fopAcM_monsSeStart(i_this, JA_SE_CV_BK_LOST_BOKO, 0); } @@ -2423,7 +2423,7 @@ static void b_nige(bk_class* i_this) { i_this->m034E = 4; cLib_addCalcAngleS2(&i_this->current.angle.y, i_this->dr.m4D0, 4, 0x1000); if (std::sqrtf(sp10.x*sp10.x + sp10.z*sp10.z) > 800.0f) { - i_this->dr.m004 = 3; + i_this->dr.mMode = 3; anm_init(i_this, BK_BCK_BK_WAIT, 10.0f, J3DFrameCtrl::EMode_LOOP, 1.0f, BK_BAS_BK_WAIT); } break; @@ -2432,7 +2432,7 @@ static void b_nige(bk_class* i_this) { i_this->dr.m4D0 = i_this->m0332; cLib_addCalcAngleS2(&i_this->current.angle.y, i_this->dr.m4D0, 3, 0x1000); if (std::sqrtf(sp10.x*sp10.x + sp10.z*sp10.z) < 700.0f) { - i_this->dr.m004 = 0; + i_this->dr.mMode = 0; } break; } @@ -2444,9 +2444,9 @@ static void defence(bk_class* i_this) { i_this->dr.m4D0 = i_this->m0332; cLib_addCalcAngleS2(&i_this->current.angle.y, i_this->dr.m4D0, 4, 0x400); - switch (i_this->dr.m004) { + switch (i_this->dr.mMode) { case 0: - i_this->dr.m004 = 1; + i_this->dr.mMode = 1; anm_init(i_this, BK_BCK_BK_BOUGYO1, 0.0f, J3DFrameCtrl::EMode_NONE, 1.0f, -1); i_this->speedF = 0.0f; // Fall-through @@ -2455,12 +2455,12 @@ static void defence(bk_class* i_this) { i_this->m11D8 = i_this->m11CC; if (i_this->m0300[1] == 0) { if (cM_rndF(1.0f) < 0.5f) { - i_this->dr.mState = 5; - i_this->dr.m004 = 0; + i_this->dr.mAction = 5; + i_this->dr.mMode = 0; } else { - i_this->dr.mState = 4; + i_this->dr.mAction = 4; i_this->m0300[1] = 0; - i_this->dr.m004 = 0; + i_this->dr.mMode = 0; } } break; @@ -2469,10 +2469,10 @@ static void defence(bk_class* i_this) { /* 00008580-00008654 .text oshi__FP8bk_class */ static void oshi(bk_class* i_this) { - i_this->dr.mState = 5; + i_this->dr.mAction = 5; attack_set(i_this, 1); anm_init(i_this, BK_BCK_BK_JUMP1, 2.0f, J3DFrameCtrl::EMode_NONE, 1.0f, BK_BAS_BK_JUMP1); - i_this->dr.m004 = -10; + i_this->dr.mMode = -10; i_this->speedF = -90.0f + REG6_F(10); i_this->speed.y = 85.0f + REG6_F(11); fopAcM_monsSeStart(i_this, JA_SE_CV_BK_JUMP, 0); @@ -2489,7 +2489,7 @@ static void hukki(bk_class* i_this) { sp24.x = sp24.y = 0.0f; i_this->m030E = 2; - switch (i_this->dr.m004) { + switch (i_this->dr.mMode) { case 10: anm_init(i_this, BK_BCK_BK_OKIRUA, 0.0f, J3DFrameCtrl::EMode_NONE, 1.0f, BK_BAS_BK_OKIRUA); i_this->m0300[2] = 15; @@ -2499,7 +2499,7 @@ static void hukki(bk_class* i_this) { i_this->m0300[2] = 15 + REG0_S(5); temp_194: i_this->speedF = 0.0f; - i_this->dr.m004 = 13; + i_this->dr.mMode = 13; i_this->dr.m480 = 0; i_this->current.pos.y -= i_this->dr.m44C.y; i_this->old.pos.y -= i_this->dr.m44C.y; @@ -2522,13 +2522,13 @@ temp_194: } if (i_this->mpMorf->isStop()) { if (i_this->mPlayerDistance < l_bkHIO.m02C) { - i_this->dr.m004 = 14; + i_this->dr.mMode = 14; i_this->m0300[1] = 10; } else { - i_this->dr.mState = 0; + i_this->dr.mAction = 0; path_check(i_this, 0); wait_set(i_this); - i_this->dr.m004 = 2; + i_this->dr.mMode = 2; } i_this->dr.m488 = 0; } @@ -2539,7 +2539,7 @@ temp_194: cLib_addCalcAngleS2(&i_this->current.angle.y, i_this->dr.m4D0, 3, 0x1000); if (i_this->m0300[1] == 0) { if (!player->checkGrabWear() && l_bkHIO.m00A == 0 && i_this->m0B30 != 0) { - i_this->dr.mState = 5; + i_this->dr.mAction = 5; i_this->m0B5C = 0; i_this->m0B64 = 29.0f + REG0_F(8); i_this->m0B68 = 32.0f; @@ -2551,11 +2551,11 @@ temp_194: attack_info_s* info = attack_info[i_this->m0B5C]; info += 1; anm_init(i_this, info->bckFileIdx, 5.0f, J3DFrameCtrl::EMode_NONE, info->speed, info->soundFileIdx); - i_this->dr.m004 = 1; + i_this->dr.mMode = 1; i_this->m11F2 = 1; } else { - i_this->dr.mState = 4; - i_this->dr.m004 = 0; + i_this->dr.mAction = 4; + i_this->dr.mMode = 0; } } break; @@ -2578,11 +2578,11 @@ temp_194: /* 00008C38-00008D1C .text aite_miru__FP8bk_class */ static void aite_miru(bk_class* i_this) { - switch (i_this->dr.m004) { + switch (i_this->dr.mMode) { case 0: i_this->m0300[1] = 20 + REG0_S(8); i_this->speedF = 0.0f; - i_this->dr.m004 = 1; + i_this->dr.mMode = 1; // Fall-through case 1: cLib_addCalcAngleS2(&i_this->m11F4, 0x2EE0, 2, 0x1800); @@ -2595,8 +2595,8 @@ static void aite_miru(bk_class* i_this) { } if (i_this->m0300[1] == 0) { i_this->m11FC = fpcM_ERROR_PROCESS_ID_e; - i_this->dr.mState = 0; - i_this->dr.m004 = 0; + i_this->dr.mAction = 0; + i_this->dr.mMode = 0; path_check(i_this, 0); } break; @@ -2611,26 +2611,26 @@ static void fail(bk_class* i_this) { i_this->speedF = 0.0f; i_this->speed.y = 0.0f; - switch (i_this->dr.m004) { + switch (i_this->dr.mMode) { case -1: if (i_this->m1234 == 0) { fopAcM_delete(i_this); } break; case 0: - i_this->dr.m004 = 1; + i_this->dr.mMode = 1; // Fall-through case 1: cXyz sp08 = i_this->current.pos; sp08.y += 100.0f + l_bkHIO.m020; - u8 dropType = daDisItem_NORMAL_e; + u8 drop_type = daDisItem_IBALL_e; if (i_this->m0300[2] >= 1000) { - dropType = daDisItem_NONE1_e; + drop_type = daDisItem_NONE1_e; } - fopAcM_createDisappear(i_this, &sp08, 10, dropType, i_this->stealItemBitNo); + fopAcM_createDisappear(i_this, &sp08, 10, drop_type, i_this->stealItemBitNo); if (i_this->mType == 10) { i_this->m02DE = 1; - i_this->dr.m004 = -1; + i_this->dr.mMode = -1; mDoAud_subBgmStop(); } else { fopAcM_delete(i_this); @@ -2660,10 +2660,10 @@ static void yogan_fail(bk_class* i_this) { i_this->attention_info.flags = 0; i_this->speedF = 0.0f; - switch (i_this->dr.m004) { + switch (i_this->dr.mMode) { case 0: anm_init(i_this, BK_BCK_BK_NIGERU, 5.0f, J3DFrameCtrl::EMode_LOOP, 1.0f, BK_BAS_BK_NIGERU); - i_this->dr.m004 = 1; + i_this->dr.mMode = 1; i_this->speed.y = 190.0f + REG0_F(19); fopAcM_monsSeStart(i_this, JA_SE_CV_BK_SURPRISE, 0); i_this->dr.m458.y = 0.0f; @@ -2685,8 +2685,8 @@ static void yogan_fail(bk_class* i_this) { cLib_addCalcAngleS2(&i_this->current.angle.x, -0x4000, 10, 0x200); if (i_this->speed.y < 0.0f) { - i_this->dr.mState = 20; - i_this->dr.m004 = 0; + i_this->dr.mAction = 20; + i_this->dr.mMode = 0; i_this->m0300[2] = 2000; } break; @@ -2701,10 +2701,10 @@ static void water_fail(bk_class* i_this) { i_this->attention_info.flags = 0; i_this->speedF = 0.0f; - switch (i_this->dr.m004) { + switch (i_this->dr.mMode) { case 0: anm_init(i_this, BK_BCK_BK_NIGERU, 5.0f, J3DFrameCtrl::EMode_LOOP, 1.0f, BK_BAS_BK_NIGERU); - i_this->dr.m004 = 1; + i_this->dr.mMode = 1; fopAcM_monsSeStart(i_this, JA_SE_CV_BK_SURPRISE, 0); i_this->dr.m458.y = 0.0f; i_this->dr.m44C.y = 0.0f; @@ -2734,11 +2734,11 @@ static void wepon_search(bk_class* i_this) { daPy_py_c* player = (daPy_py_c*)dComIfGp_getPlayer(0); daBoko_c* boko = (daBoko_c*)fopAcM_SearchByID(i_this->m1200); - if (i_this->dr.m004 < 2 && (boko == NULL || (boko != NULL && fopAcM_checkCarryNow(boko)))) { - i_this->dr.mState = 0; + if (i_this->dr.mMode < 2 && (boko == NULL || (boko != NULL && fopAcM_checkCarryNow(boko)))) { + i_this->dr.mAction = 0; path_check(i_this, 0); wait_set(i_this); - i_this->dr.m004 = 2; + i_this->dr.mMode = 2; return; } @@ -2751,9 +2751,9 @@ static void wepon_search(bk_class* i_this) { f31 = std::sqrtf(delta.x*delta.x + delta.z*delta.z); } - switch (i_this->dr.m004) { + switch (i_this->dr.mMode) { case -1: - i_this->dr.m004 = 0; + i_this->dr.mMode = 0; i_this->m11F3 = 0; anm_init(i_this, BK_BCK_BK_HAKKEN, 3.0f, J3DFrameCtrl::EMode_NONE, 1.0f, BK_BAS_BK_HAKKEN); if (f31 < 900.0f) { @@ -2769,7 +2769,7 @@ static void wepon_search(bk_class* i_this) { if (i_this->m030C == 0) { cLib_addCalcAngleS2(&actor->current.angle.y, i_this->dr.m4D0, 2, 0x3000); if (i_this->mpMorf->isStop() || i_this->m0300[1] == 0) { - i_this->dr.m004 = 1; + i_this->dr.mMode = 1; i_this->m030A = l_bkHIO.m08E; anm_init(i_this, BK_BCK_BK_RUN, 3.0f, J3DFrameCtrl::EMode_LOOP, l_bkHIO.m074, BK_BAS_BK_RUN); i_this->m02CE = 0; @@ -2782,12 +2782,12 @@ static void wepon_search(bk_class* i_this) { i_this->m034E = 4; cLib_addCalcAngleS2(&actor->current.angle.y, i_this->dr.m4D0, 4, 0x1000); if (f31 < REG8_F(2) + 150.0f) { - i_this->dr.m004 = 2; + i_this->dr.mMode = 2; anm_init(i_this, BK_BCK_BK_CATCH, 2.0f, J3DFrameCtrl::EMode_NONE, 1.0f, BK_BAS_BK_CATCH); i_this->m0300[1] = 29; } else { if (i_this->m030A == 0) { - i_this->dr.mState = 4; + i_this->dr.mAction = 4; i_this->m0300[1] = 0; i_this->m11F3 = 1; } else if (i_this->dr.mAcch.ChkGroundHit() && i_this->dr.mAcch.ChkWallHit()) { @@ -2795,13 +2795,13 @@ static void wepon_search(bk_class* i_this) { actor->speed.y = 100.0f + REG0_F(16); anm_init(i_this, BK_BCK_BK_JUMP1, 2.0f, J3DFrameCtrl::EMode_NONE, 1.0f, BK_BAS_BK_JUMP1); fopAcM_monsSeStart(actor, JA_SE_CV_BK_JUMP, 0); - i_this->dr.m004 = 5; + i_this->dr.mMode = 5; i_this->m02CE++; } else { - i_this->dr.mState = 0; + i_this->dr.mAction = 0; path_check(i_this, 0); wait_set(i_this); - i_this->dr.m004 = 2; + i_this->dr.mMode = 2; i_this->m02CC = 70; } } @@ -2823,10 +2823,10 @@ static void wepon_search(bk_class* i_this) { } fopAcM_setCarryNow(boko, FALSE); } else { - i_this->dr.mState = 0; + i_this->dr.mAction = 0; path_check(i_this, 0); wait_set(i_this); - i_this->dr.m004 = 2; + i_this->dr.mMode = 2; } } if (i_this->m0300[1] < 14) { @@ -2836,7 +2836,7 @@ static void wepon_search(bk_class* i_this) { } if (i_this->mpMorf->isStop()) { if (l_bkHIO.m00A == 0 && !player->checkGrabWear() && i_this->mPlayerDistance < l_bkHIO.m02C) { - i_this->dr.mState = 5; + i_this->dr.mAction = 5; i_this->m0B5C = 0; i_this->m0B64 = 18.0f; i_this->m0B68 = REG6_F(6) + 23.0f; @@ -2848,13 +2848,13 @@ static void wepon_search(bk_class* i_this) { attack_info_s* info = attack_info[i_this->m0B5C]; info++; // TODO: fakematch? anm_init(i_this, info->bckFileIdx, 5.0f, J3DFrameCtrl::EMode_NONE, info->speed, info->soundFileIdx); - i_this->dr.m004 = 1; + i_this->dr.mMode = 1; i_this->m11F2 = 1; } else { - i_this->dr.mState = 0; + i_this->dr.mAction = 0; path_check(i_this, 0); wait_set(i_this); - i_this->dr.m004 = 2; + i_this->dr.mMode = 2; } } break; @@ -2862,13 +2862,13 @@ static void wepon_search(bk_class* i_this) { actor->speedF = l_bkHIO.m05C * 0.5f; if (i_this->dr.mAcch.ChkGroundHit()) { anm_init(i_this, BK_BCK_BK_JUMP2, 0.0f, J3DFrameCtrl::EMode_NONE, 1.0f, BK_BAS_BK_JUMP2); - i_this->dr.m004++; + i_this->dr.mMode++; } break; case 6: actor->speedF = 0.0f; if (i_this->mpMorf->isStop()) { - i_this->dr.m004 = 1; + i_this->dr.mMode = 1; anm_init(i_this, BK_BCK_BK_RUN, 3.0f, J3DFrameCtrl::EMode_LOOP, l_bkHIO.m074, BK_BAS_BK_RUN); } break; @@ -2881,9 +2881,9 @@ static void d_dozou(bk_class* i_this) { fopAcM_OffStatus(i_this, 0); i_this->attention_info.flags = 0; - switch (i_this->dr.m004) { + switch (i_this->dr.mMode) { case 0: - i_this->dr.m004 = 1; + i_this->dr.mMode = 1; i_this->dr.mStts.Init(0xFF, 0xFF, i_this); if (i_this->m02B5 == 0) { anm_init(i_this, BK_BCK_BK_ATTACK2, 1.0f, J3DFrameCtrl::EMode_NONE, 0.0f, BK_BAS_BK_ATTACK2); @@ -2899,14 +2899,14 @@ static void d_dozou(bk_class* i_this) { (i_this->m02B7 == 0xFF && dComIfGs_isEventBit(0x3802)) ) { i_this->mpMorf->setPlaySpeed(1.0f); - i_this->dr.m004 = 2; + i_this->dr.mMode = 2; } break; case 2: if (i_this->mpMorf->isStop()) { i_this->dr.mStts.Init(200, 0xFF, i_this); - i_this->dr.mState = 0; - i_this->dr.m004 = 0; + i_this->dr.mAction = 0; + i_this->dr.mMode = 0; i_this->attention_info.flags = fopAc_Attn_LOCKON_BATTLE_e; } break; @@ -2928,16 +2928,16 @@ static void carry_drop(bk_class* i_this) { cLib_addCalcAngleS2(&i_this->shape_angle.z, 0, 1, 0x100); cLib_addCalcAngleS2(&i_this->shape_angle.y, i_this->m0332, 4, 0x800); - switch (i_this->dr.m004) { + switch (i_this->dr.mMode) { case 0: dComIfGs_onEventBit(0x0004); - i_this->dr.m004 = 1; + i_this->dr.mMode = 1; anm_init(i_this, BK_BCK_BK_KOUKA, 3.0f, J3DFrameCtrl::EMode_NONE, 1.0f, -1); // Fall-through case 1: if (i_this->dr.mAcch.ChkGroundHit()) { anm_init(i_this, BK_BCK_BK_TYAKU, 0.0f, J3DFrameCtrl::EMode_NONE, 1.0f, -1); - i_this->dr.m004 = 2; + i_this->dr.mMode = 2; i_this->m034C = l_bkHIO.m00C + 15; i_this->m034E = 3; i_this->dr.mMaxFallDistance = 1000.0f; @@ -2952,15 +2952,15 @@ static void carry_drop(bk_class* i_this) { cLib_addCalc0(&i_this->speedF, 1.0f, 1.0f); if (i_this->mpMorf->isStop()) { anm_init(i_this, BK_BCK_BK_KIME, 0.0f, J3DFrameCtrl::EMode_NONE, 1.0f, -1); - i_this->dr.m004 = 3; + i_this->dr.mMode = 3; fopAcM_monsSeStart(actor, JA_SE_CV_BK_SURPRISE, 0); } break; case 3: cLib_addCalc0(&i_this->speedF, 1.0f, 1.0f); if (i_this->mpMorf->isStop()) { - i_this->dr.mState = 0; - i_this->dr.m004 = 0; + i_this->dr.mAction = 0; + i_this->dr.mMode = 0; i_this->current.angle = i_this->shape_angle; } break; @@ -2969,9 +2969,9 @@ static void carry_drop(bk_class* i_this) { /* 00009DF0-00009F1C .text d_mahi__FP8bk_class */ static void d_mahi(bk_class* i_this) { - switch (i_this->dr.m004) { + switch (i_this->dr.mMode) { case 0: - i_this->dr.m004 = 1; + i_this->dr.mMode = 1; anm_init(i_this, BK_BCK_BK_SUWARI, 20.0f, J3DFrameCtrl::EMode_NONE, 1.0f, BK_BAS_BK_SUWARI); i_this->m0300[0] = 100; // Fall-through @@ -2987,10 +2987,10 @@ static void d_mahi(bk_class* i_this) { i_this->dr.m49E = 0xF; } if (i_this->m0300[0] == 0) { - i_this->dr.mState = 0; + i_this->dr.mAction = 0; path_check(i_this, 0); wait_set(i_this); - i_this->dr.m004 = 2; + i_this->dr.mMode = 2; } break; } @@ -3005,21 +3005,21 @@ static void tubo_wait(bk_class* i_this) { cLib_addCalc2(&actor->scale.x, 1.0f, 1.0f, 0.1f); actor->scale.y = actor->scale.z = actor->scale.x; - switch (i_this->dr.m004) { + switch (i_this->dr.mMode) { case 0: if (i_this->m0300[0] != 0) { i_this->m0300[0] = REG0_S(3) + 30; anm_init(i_this, BK_BCK_BK_SUWARI, 0.0f, J3DFrameCtrl::EMode_NONE, 0.01f, BK_BAS_BK_SUWARI); - i_this->dr.m004 = 20; + i_this->dr.mMode = 20; } else { if (i_this->mType == 3) { anm_init(i_this, BK_BCK_BK_JATTACK1, 0.0f, J3DFrameCtrl::EMode_NONE, 1.0f, -1); - i_this->dr.m004 = 1; + i_this->dr.mMode = 1; actor->speed.y = REG0_F(8) + 120.0f; actor->speedF = REG0_F(9) + 40.0f; } else { anm_init(i_this, BK_BCK_BK_JUMP1, 0.0f, J3DFrameCtrl::EMode_NONE, 1.0f, BK_BAS_BK_JUMP1); - i_this->dr.m004 = 10; + i_this->dr.mMode = 10; actor->speed.y = REG8_F(8) + 120.0f; actor->speedF = REG8_F(9) + 40.0f; } @@ -3033,7 +3033,7 @@ static void tubo_wait(bk_class* i_this) { break; case 1: if (i_this->dr.mAcch.ChkGroundHit()) { - i_this->dr.m004 = 2; + i_this->dr.mMode = 2; anm_init(i_this, BK_BCK_BK_JATTACK2, 0.0f, J3DFrameCtrl::EMode_NONE, 1.0f, BK_BAS_BK_JATTACK2); fopAcM_monsSeStart(actor, JA_SE_CV_BK_ATTACK_L, 0); } @@ -3041,14 +3041,14 @@ static void tubo_wait(bk_class* i_this) { case 2: r28 = true; if (i_this->mpMorf->isStop()) { - i_this->dr.m004 = 11; + i_this->dr.mMode = 11; anm_init(i_this, BK_BCK_BK_JATTACK3, 0.0f, J3DFrameCtrl::EMode_NONE, 1.0f, BK_BAS_BK_JATTACK3); } break; case 10: if (i_this->m0300[0] == 0 && i_this->dr.mAcch.ChkGroundHit()) { anm_init(i_this, BK_BCK_BK_JUMP2, 0.0f, J3DFrameCtrl::EMode_NONE, 1.0f, BK_BAS_BK_JUMP2); - i_this->dr.m004 = 11; + i_this->dr.mMode = 11; i_this->m034C = l_bkHIO.m00C + 6; i_this->m034E = 3; } @@ -3056,8 +3056,8 @@ static void tubo_wait(bk_class* i_this) { case 11: cLib_addCalc0(&i_this->speedF, 1.0f, 20.0f); if (i_this->mpMorf->isStop()) { - i_this->dr.mState = 0; - i_this->dr.m004 = 0; + i_this->dr.mAction = 0; + i_this->dr.mMode = 0; } break; case 20: @@ -3066,8 +3066,8 @@ static void tubo_wait(bk_class* i_this) { anm_init(i_this, BK_BCK_BK_SUWARI, 0.0f, J3DFrameCtrl::EMode_NONE, 1.0f, BK_BAS_BK_SUWARI); } } else if (i_this->mpMorf->isStop()) { - i_this->dr.mState = 0; - i_this->dr.m004 = 0; + i_this->dr.mAction = 0; + i_this->dr.mMode = 0; } break; } @@ -3092,7 +3092,7 @@ static void z_demo_1(bk_class* i_this) { i_this->attention_info.flags = 0; i_this->m030E = 10; - switch (i_this->dr.m004) { + switch (i_this->dr.mMode) { case 0: if (i_this->m0300[0] == 0) { f32 f1 = cM_rndF(1.0f); @@ -3101,7 +3101,7 @@ static void z_demo_1(bk_class* i_this) { } else { i_this->m0300[0] = 90; } - i_this->dr.m004 = 1; + i_this->dr.mMode = 1; anm_init(i_this, BK_BCK_BK_TUTUKU1, 5.0f, J3DFrameCtrl::EMode_LOOP, 1.0f, BK_BAS_BK_TUTUKU1); } break; @@ -3122,7 +3122,7 @@ static void z_demo_1(bk_class* i_this) { } else { i_this->m0300[0] = 180; } - i_this->dr.m004 = 2; + i_this->dr.mMode = 2; anm_init(i_this, BK_BCK_BK_TUTUKU2, 5.0f, J3DFrameCtrl::EMode_LOOP, 1.0f, -1); } break; @@ -3134,7 +3134,7 @@ static void z_demo_1(bk_class* i_this) { } else { i_this->m0300[0] = 150; } - i_this->dr.m004 = 0; + i_this->dr.mMode = 0; anm_init(i_this, BK_BCK_BK_TUTUKU3, 5.0f, J3DFrameCtrl::EMode_LOOP, 1.0f, -1); } break; @@ -3151,8 +3151,8 @@ static void z_demo_1(bk_class* i_this) { && std::fabsf(player->current.pos.y - actor->current.pos.y) < 250.0f ) { i_this->mType = 0; - i_this->dr.mState = 1; - i_this->dr.m004 = 20; + i_this->dr.mAction = 1; + i_this->dr.mMode = 20; anm_init(i_this, BK_BCK_BK_BIKKURI, 3.0f, J3DFrameCtrl::EMode_NONE, 1.0f, -1); i_this->m0300[1] = 30; fopAcM_monsSeStart(actor, JA_SE_CV_BK_FOUND_LINK, 0); @@ -3168,18 +3168,18 @@ static void b_hang(bk_class* i_this) { if (i_this->dr.m7B8 != fpcM_ERROR_PROCESS_ID_e) { r29 = (bridge_class*)fopAcM_SearchByID(i_this->dr.m7B8); if (r29 == NULL) { - i_this->dr.mState = 4; - i_this->dr.m004 = 0; + i_this->dr.mAction = 4; + i_this->dr.mMode = 0; return; } } i_this->m0B88.OffCoSetBit(); i_this->dr.m71E = 5; - switch (i_this->dr.m004) { + switch (i_this->dr.mMode) { case 0: anm_init(i_this, BK_BCK_BK_OTISOU1, REG12_F(9) + 10.0f, J3DFrameCtrl::EMode_LOOP, 1.0f, BK_BAS_BK_OTISOU1); - i_this->dr.m004 = 1; + i_this->dr.mMode = 1; i_this->dr.m798 = 0.0f; i_this->m0300[0] = 100; if (i_this->m0B30 != 0) { @@ -3193,7 +3193,7 @@ static void b_hang(bk_class* i_this) { } if (i_this->m0300[0] == 0) { anm_init(i_this, BK_BCK_BK_OTISOU2, 3.0f, J3DFrameCtrl::EMode_NONE, 1.0f, BK_BAS_BK_OTISOU2); - i_this->dr.m004 = 2; + i_this->dr.mMode = 2; } break; case 2: @@ -3237,8 +3237,8 @@ static void b_hang(bk_class* i_this) { } if (r30) { - i_this->dr.mState = 4; - i_this->dr.m004 = 0; + i_this->dr.mAction = 4; + i_this->dr.mMode = 0; i_this->dr.m71E = 0; i_this->dr.mSpawnY = actor->current.pos.y; } @@ -3249,32 +3249,32 @@ static void rope_on(bk_class* i_this) { i_this->dr.m710 = 1; i_this->m030E = 2; - switch (i_this->dr.m004) { + switch (i_this->dr.mMode) { case 0: i_this->speedF = 0.0f; anm_init(i_this, BK_BCK_BK_KYORO2, 10.0f, J3DFrameCtrl::EMode_LOOP, 2.0f, BK_BAS_BK_KYORO2); - i_this->dr.m004 = 1; + i_this->dr.mMode = 1; i_this->m0300[0] = 40; // Fall-through case 1: if (i_this->m0300[0] == 0) { - i_this->dr.m004 = 2; + i_this->dr.mMode = 2; anm_init(i_this, BK_BCK_BK_WALK, 10.0f, J3DFrameCtrl::EMode_LOOP, 2.0f, BK_BAS_BK_WALK); } break; case 2: { i_this->speedF = 70.0f; - s16 targetAngle = fopAcM_searchPlayerAngleY((i_this)); + s16 targetAngle = fopAcM_searchPlayerAngleY(i_this); cLib_addCalcAngleS2(&i_this->current.angle.y, targetAngle, 4, 0x1000); if (i_this->dr.mAcch.ChkWallHit()) { i_this->speed.y = 100.0f + REG0_F(16); anm_init(i_this, BK_BCK_BK_JUMP1, 2.0f, J3DFrameCtrl::EMode_NONE, 1.0f, BK_BAS_BK_JUMP1); fopAcM_monsSeStart(i_this, JA_SE_CV_BK_JUMP, 0); - i_this->dr.m004 = 3; + i_this->dr.mMode = 3; } if (fopAcM_searchPlayerDistance(i_this) < 200.0f) { anm_init(i_this, BK_BCK_BK_SUWARI, 10.0f, J3DFrameCtrl::EMode_NONE, 1.0f, BK_BAS_BK_SUWARI); - i_this->dr.m004 = 5; + i_this->dr.mMode = 5; } break; } @@ -3282,20 +3282,20 @@ static void rope_on(bk_class* i_this) { i_this->speedF = 35.0f; if (i_this->dr.mAcch.ChkGroundHit()) { anm_init(i_this, BK_BCK_BK_JUMP2, 1.0f, J3DFrameCtrl::EMode_NONE, 1.0f, BK_BAS_BK_JUMP2); - i_this->dr.m004 = 4; + i_this->dr.mMode = 4; } break; case 4: i_this->speedF = 0.0f; if (i_this->mpMorf->isStop()) { - i_this->dr.m004 = 2; + i_this->dr.mMode = 2; anm_init(i_this, BK_BCK_BK_WALK, 10.0f, J3DFrameCtrl::EMode_LOOP, 2.0f, BK_BAS_BK_WALK); } break; case 5: i_this->speedF = 0.0f; if (fopAcM_searchPlayerDistance(i_this) > 250.0f) { - i_this->dr.m004 = 2; + i_this->dr.mMode = 2; anm_init(i_this, BK_BCK_BK_WALK, 10.0f, J3DFrameCtrl::EMode_LOOP, 2.0f, BK_BAS_BK_WALK); } break; @@ -3318,7 +3318,7 @@ static void Bk_move(bk_class* i_this) { i_this->dr.m711 = 0; cLib_addCalcAngleS2(&i_this->m11F4, 0, 2, 0x800); - if (i_this->dr.m004 <= -100) { + if (i_this->dr.mMode <= -100) { i_this->m030E = 5; if (std::fabsf(i_this->dr.m478) > 40.0f && !i_this->dr.mAcch.ChkGroundHit()) { i_this->m1040.SetC(i_this->dr.m100[12]); @@ -3346,8 +3346,8 @@ static void Bk_move(bk_class* i_this) { if (i_this->dr.m48A != 0 && i_this->dr.m488 == 0) { if (i_this->dr.m48A == 1) { - i_this->dr.mState = 4; - i_this->dr.m004 = 0; + i_this->dr.mAction = 4; + i_this->dr.mMode = 0; i_this->m0300[1] = 0; } else { i_this->dr.m4D0 = i_this->m0332; @@ -3367,12 +3367,12 @@ static void Bk_move(bk_class* i_this) { if (i_this->m122C != 0) { i_this->m122C--; if (i_this->m122C == 0) { - i_this->dr.mState = 18; - i_this->dr.m004 = 0; + i_this->dr.mAction = 18; + i_this->dr.mMode = 0; } } - switch (i_this->dr.mState) { + switch (i_this->dr.mAction) { case 0: jyunkai(i_this); break; @@ -3448,7 +3448,7 @@ static void Bk_move(bk_class* i_this) { } } - if ((i_this->mType == 4 || i_this->mType == 10 || i_this->mType == 6) && i_this->dr.mState == 4) { + if ((i_this->mType == 4 || i_this->mType == 10 || i_this->mType == 6) && i_this->dr.mAction == 4) { sp28 = actor->home.pos - actor->current.pos; f32 f31; @@ -3460,22 +3460,22 @@ static void Bk_move(bk_class* i_this) { if (sp28.abs() > f31) { if (i_this->mType == 4 || i_this->mType == 10) { - i_this->dr.mState = 1; + i_this->dr.mAction = 1; } if (i_this->mType == 6) { - i_this->dr.mState = 2; + i_this->dr.mAction = 2; } - i_this->dr.m004 = 51; + i_this->dr.mMode = 51; i_this->m0300[1] = 0; i_this->m0300[2] = 60; } } - if (i_this->dr.mState != 30) { + if (i_this->dr.mAction != 30) { sp28.x = 0.0f; sp28.y = 0.0f; sp28.z = actor->speedF; - if (i_this->dr.mState != 11 && i_this->dr.mState != 20 && i_this->dr.m48A == 0) { + if (i_this->dr.mAction != 11 && i_this->dr.mAction != 20 && i_this->dr.m48A == 0) { i_this->dr.m482 = actor->current.angle.y; cMtx_YrotS(*calc_mtx, actor->current.angle.y + i_this->m0334); } else { @@ -3572,7 +3572,7 @@ static void damage_check(bk_class* i_this) { at_power_check(&atInfo); if (atInfo.mDamage < 4) { - if (r26 || (i_this->dr.mState == 15 && i_this->m0310 != 0)) { + if (r26 || (i_this->dr.mAction == 15 && i_this->m0310 != 0)) { return; } } @@ -3580,8 +3580,8 @@ static void damage_check(bk_class* i_this) { if (atInfo.mpObj->ChkAtType(AT_TYPE_ICE_ARROW | AT_TYPE_LIGHT_ARROW)) { if (atInfo.mpObj->ChkAtType(AT_TYPE_ICE_ARROW)) { i_this->mEnemyIce.mFreezeDuration = REG0_S(3) + 300; - i_this->dr.mState = 0; - i_this->dr.m004 = 0; + i_this->dr.mAction = 0; + i_this->dr.mMode = 0; path_check(i_this, 0); } else { i_this->mEnemyIce.mLightShrinkTimer = 1; @@ -3718,8 +3718,8 @@ static void damage_check(bk_class* i_this) { } if (i_this->dr.m424 != 0) { - if (i_this->dr.mState == 19) { - i_this->dr.m004 = -100; + if (i_this->dr.mAction == 19) { + i_this->dr.mMode = -100; i_this->dr.m488 = 1; i_this->dr.m486 = -0x4000; i_this->dr.m71E = 20; @@ -3785,10 +3785,10 @@ static void waki_set(bk_class* i_this) { bool r30 = false; i_this->mpSearchLight = (daObj_Search::Act_c*)fpcM_Search(&s_s2_sub, i_this); - switch (i_this->dr.m004) { + switch (i_this->dr.mMode) { case 0: if (i_this->mpSearchLight != NULL) { - i_this->dr.m004 = 1; + i_this->dr.mMode = 1; i_this->m0300[0] = 1000; } break; @@ -3800,7 +3800,7 @@ static void waki_set(bk_class* i_this) { } else { daObj_Search::Act_c::setFindFlag(false); mDoAud_seStop(JA_SE_MAJUTOU_ALERM, 30); - i_this->dr.m004 = 0; + i_this->dr.mMode = 0; i_this->m1212 = 0; } break; @@ -3907,8 +3907,6 @@ static void demo_camera(bk_class* i_this) { s8 r28 = true; cXyz sp8C; cXyz sp80; - cXyz sp44; - cXyz sp38; camera_class* r3; switch (i_this->m1234) { case 0: @@ -4018,9 +4016,9 @@ static void demo_camera(bk_class* i_this) { if (i_this->m1236 == 45) { i_this->m02B5 = 200; - i_this->dr.mState = 4; + i_this->dr.mAction = 4; i_this->m0300[1] = 0; - i_this->dr.m004 = 0; + i_this->dr.mMode = 0; } if (i_this->m1236 > 55) { @@ -4290,7 +4288,7 @@ static BOOL daBk_Execute(bk_class* i_this) { i_this->dr.mpEnemy = i_this; i_this->dr.mEnemyType = 2; } - if (i_this->dr.mState != 31) { + if (i_this->dr.mAction != 31) { i_this->shape_angle = i_this->current.angle; } @@ -4304,16 +4302,16 @@ static BOOL daBk_Execute(bk_class* i_this) { if (i_this->m0B30 != 0) { i_this->m0B34 = 1; } - i_this->dr.mState = 0; + i_this->dr.mAction = 0; break; case 2: anm_init(i_this, BK_BCK_BK_UTUBUSE, 2.0f, J3DFrameCtrl::EMode_NONE, 1.0f, BK_BAS_BK_UTUBUSE); break; case 5: - if (i_this->dr.mState != 4 && i_this->dr.mState != 11) { + if (i_this->dr.mAction != 4 && i_this->dr.mAction != 11) { wait_set(i_this); - i_this->dr.mState = 4; - i_this->dr.m004 = 0; + i_this->dr.mAction = 4; + i_this->dr.mMode = 0; i_this->m0300[1] = 30; } i_this->m0336 = 5; @@ -4321,8 +4319,8 @@ static BOOL daBk_Execute(bk_class* i_this) { break; case 10: wait_set(i_this); - i_this->dr.m004 = 2; - i_this->dr.mState = 0; + i_this->dr.mMode = 2; + i_this->dr.mAction = 0; path_check(i_this, 0); break; case 20: @@ -4342,7 +4340,7 @@ static BOOL daBk_Execute(bk_class* i_this) { if (i_this->m0B30 != 0) { i_this->m0B34 = 1; } - i_this->dr.mState = 0; + i_this->dr.mAction = 0; fopAcM_monsSeStart(i_this, JA_SE_CV_BK_FAINTED, 0); break; } @@ -4426,7 +4424,7 @@ static BOOL daBk_Execute(bk_class* i_this) { sp40.y -= 20000.0f; sp34.y -= 20000.0f; } - if (i_this->dr.mState == 10) { + if (i_this->dr.mAction == 10) { sp40.y -= 20000.0f; sp34.y -= 100.0f; } @@ -4443,7 +4441,7 @@ static BOOL daBk_Execute(bk_class* i_this) { } } - if (i_this->dr.mAcch.ChkGroundHit() || i_this->dr.mState == 19) { + if (i_this->dr.mAcch.ChkGroundHit() || i_this->dr.mAction == 19) { dBgS_GndChk gndChk; s16 r21 = 0x7FFF; s16 r23 = 0x7FFF; @@ -4477,7 +4475,7 @@ static BOOL daBk_Execute(bk_class* i_this) { } } } - if (i_this->dr.mState == 19) { + if (i_this->dr.mAction == 19) { r23 = 0; r21 = 0; } @@ -4810,33 +4808,33 @@ static cPhs_State daBk_Create(fopAc_ac_c* i_actor) { } if (i_this->mType == 4 || i_this->mType == 0xA) { - i_this->dr.mState = 1; + i_this->dr.mAction = 1; if (i_this->mType == 0xA) { - i_this->dr.m004 = -20; + i_this->dr.mMode = -20; fopAcM_OnStatus(i_this, fopAcStts_BOSS_e); #if VERSION != VERSION_USA search_sp = 1; #endif } else { - i_this->dr.m004 = -1; + i_this->dr.mMode = -1; } i_this->m0300[1] = 1000.0f + cM_rndF(1000.0f); } else if (i_this->mType == 6) { - i_this->dr.mState = 2; + i_this->dr.mAction = 2; i_this->dr.mMaxFallDistance = 300.0f; } else if (i_this->mType == 7) { - i_this->dr.mState = 29; + i_this->dr.mAction = 29; i_this->dr.mMaxFallDistance = 300.0f; } else if (i_this->mType == 5) { anm_init(i_this, BK_BCK_BK_HAKOBI, 1.0f, J3DFrameCtrl::EMode_LOOP, 1.0f, -1); - i_this->dr.mState = 30; + i_this->dr.mAction = 30; i_this->dr.mMaxFallDistance = 100000.0f; } else if (i_this->mType == 2 || i_this->mType == 3) { i_this->m02BA = 0xFF; - i_this->dr.mState = 15; + i_this->dr.mAction = 15; i_this->m030E = 0xA; } else if (i_this->mType == 9) { - i_this->dr.mState = 3; + i_this->dr.mAction = 3; i_this->m1216 = i_this->current.angle.z; i_this->m1217 = i_this->current.angle.y; i_this->current.angle.z = 0; @@ -4850,7 +4848,7 @@ static cPhs_State daBk_Create(fopAc_ac_c* i_actor) { } if (i_this->mType == 0xF) { - i_this->dr.mState = 23; + i_this->dr.mAction = 23; i_this->m02BA = 0; } diff --git a/src/d/actor/d_a_boko.cpp b/src/d/actor/d_a_boko.cpp index 1dffd3b37..bb43491b1 100644 --- a/src/d/actor/d_a_boko.cpp +++ b/src/d/actor/d_a_boko.cpp @@ -17,7 +17,7 @@ dBgS_ObjLinChk daBoko_c::m_line_check; const s16 daBoko_HIO_c0::throw_timer = 2; const f32 daBoko_HIO_c0::throw_speed = 70.0f; -static u8 l_HIO; +static daBoko_HIO_c l_HIO; /* 000000EC-0000017C .text keDraw__8daBoko_cFv */ void daBoko_c::keDraw() { diff --git a/src/d/actor/d_a_bpw.cpp b/src/d/actor/d_a_bpw.cpp index 71e280859..db051b80a 100644 --- a/src/d/actor/d_a_bpw.cpp +++ b/src/d/actor/d_a_bpw.cpp @@ -1,7 +1,7 @@ -// -// Generated by dtk -// Translation Unit: d_a_bpw.cpp -// +/** + * d_a_bpw.cpp + * Boss - Jalhalla + */ #include "d/actor/d_a_bpw.h" #include "d/d_procname.h" diff --git a/src/d/actor/d_a_demo_item.cpp b/src/d/actor/d_a_demo_item.cpp index 6837566ae..32d6d38fe 100644 --- a/src/d/actor/d_a_demo_item.cpp +++ b/src/d/actor/d_a_demo_item.cpp @@ -285,7 +285,7 @@ void daDitem_c::setParticle() { if (mpEmitters[0] || mpEmitters[1] || mpEmitters[2] || mpEmitters[3]) { return; } - if (chkArgFlag(0x02) || chkArgFlag(0x04) || chkArgFlag(0x08)) { + if (chkArgFlag(FLAG_UNK02) || chkArgFlag(FLAG_UNK04) || chkArgFlag(FLAG_UNK08)) { return; } @@ -314,7 +314,7 @@ bool daDitem_c::CreateInit() { hide(); clrFlag(); mArgFlag = daDitem_prm::getFlag(this); - if (!chkArgFlag(0x02) && !chkArgFlag(0x04) && !chkArgFlag(0x08)) { + if (!chkArgFlag(FLAG_UNK02) && !chkArgFlag(FLAG_UNK04) && !chkArgFlag(FLAG_UNK08)) { current.angle.y = -0x2000; } for (int i = 0; i < ARRAY_SIZE(mpEmitters); i++) { @@ -351,17 +351,17 @@ void daDitem_c::set_pos() { cXyz pos; cXyz offset; - if (chkArgFlag(0x02)) { + if (chkArgFlag(FLAG_UNK02)) { offset = offset_tbl[1]; - } else if (chkArgFlag(0x04)) { + } else if (chkArgFlag(FLAG_UNK04)) { offset = offset_tbl[2]; - } else if (chkArgFlag(0x08)) { + } else if (chkArgFlag(FLAG_UNK08)) { offset = mOffsetPos; } else { offset = offset_tbl[0]; } - if (!chkArgFlag(0x08)) { + if (!chkArgFlag(FLAG_UNK08)) { fopAc_ac_c* player = dComIfGp_getPlayer(0); mDoMtx_stack_c::ZXYrotS(player->current.angle.x, player->shape_angle.y, player->current.angle.z); mDoMtx_stack_c::multVec(&offset, &offset); @@ -410,7 +410,7 @@ void daDitem_c::set_mtx() { mpModel->setBaseScale(scale); fopAcM_addAngleY(this, current.angle.y + 0x0111, 0x0111); - if (chkArgFlag(0x02) || chkArgFlag(0x04) || chkArgFlag(0x08)) { + if (chkArgFlag(FLAG_UNK02) || chkArgFlag(FLAG_UNK04) || chkArgFlag(FLAG_UNK08)) { mDoMtx_stack_c::transS(current.pos); mDoMtx_stack_c::YrotM(current.angle.y); } else { @@ -437,7 +437,7 @@ void daDitem_c::setListStart() { } BOOL daDitem_c::Delete() { - if (!chkArgFlag(0x01)) { + if (!chkArgFlag(FLAG_UNK01)) { execItemGet(m_itemNo); } diff --git a/src/d/actor/d_a_disappear.cpp b/src/d/actor/d_a_disappear.cpp index 149482841..9fdb963fe 100644 --- a/src/d/actor/d_a_disappear.cpp +++ b/src/d/actor/d_a_disappear.cpp @@ -27,7 +27,7 @@ static BOOL daDisappear_Execute(disappear_class* i_this) { if (dropType == daDisItem_HEART_CONTAINER_e) { fopAcM_createItemForBoss(&i_this->current.pos, 0, i_this->current.roomNo, &i_this->current.angle, NULL, 0); } - else if (dropType >= daDisItem_HEART_e && dropType <= daDisItem_UNK13_e) { + else if (dropType >= daDisItem_HEART_e && dropType <= daDisItem_NONE13_e) { // Special type for Keese (ki) spawned in the Puppet Ganon fight. // This also seems to be used by several other enemies, such as Molgera's spawn. static u32 ki_item_d[] = { @@ -101,7 +101,7 @@ static cPhs_State daDisappear_Create(fopAc_ac_c* i_this) { fopAcM_SetupActor(dis, disappear_class); - dis->health = fopAcM_GetParam(dis) & 0xFF; + dis->health = fopAcM_GetParam(dis) & 0xFF; // Drop type param is stored in health f32 scaleMag = ((fopAcM_GetParam(dis) >> 8) & 0xFF) * 0.1f; dis->mItemBitNo = (fopAcM_GetParam(dis) >> 0x10) & 0xFF; diff --git a/src/d/actor/d_a_dr.cpp b/src/d/actor/d_a_dr.cpp index 493d71e75..6b42d1cc6 100644 --- a/src/d/actor/d_a_dr.cpp +++ b/src/d/actor/d_a_dr.cpp @@ -58,29 +58,29 @@ static void anm_init(dr_class* i_this, int bckFileIdx, f32 morf, u8 loopMode, f3 /* 00000320-0000091C .text move__FP8dr_class */ static void move(dr_class* i_this) { bool isIdle = false; - switch (i_this->mState) { + switch (i_this->mMode) { case 0: isIdle = true; anm_init(i_this, DR_BCK_DR_WAIT1, l_HIO.mWait1Morf, J3DFrameCtrl::EMode_LOOP, 1.0f, -1); - i_this->mState++; + i_this->mMode++; i_this->mCountDownTimers[0] = (s16)(200.0f + cM_rndF(200.0f)); break; case 1: isIdle = true; if (i_this->mCountDownTimers[0] == 0) { anm_init(i_this, DR_BCK_DR_AKUBI1, l_HIO.mAkubi1Morf, J3DFrameCtrl::EMode_NONE, 1.0f, DR_BAS_AKUBI1); - i_this->mState++; + i_this->mMode++; } break; case 2: isIdle = true; if (i_this->mpMorf->isStop()) { - i_this->mState = 0; + i_this->mMode = 0; } break; case 10: anm_init(i_this, DR_BCK_DR_BIKU1, l_HIO.mBiku1Morf, J3DFrameCtrl::EMode_NONE, 1.0f, DR_BAS_BIKU1); - i_this->mState++; + i_this->mMode++; i_this->mCountDownTimers[0] = l_HIO.m0E; i_this->mpBreathEmitter = dComIfGp_particle_set(dPa_name::ID_SCENE_81C4, &i_this->current.pos); i_this->m2C9 = 0; @@ -118,7 +118,7 @@ static void move(dr_class* i_this) { } else { anm_init(i_this, DR_BCK_DR_HO1, l_HIO.mHo1Morf, J3DFrameCtrl::EMode_NONE, 1.0f, -1); i_this->mpBreathEmitter = dComIfGp_particle_set(dPa_name::ID_SCENE_81C6, &i_this->current.pos); - i_this->mState++; + i_this->mMode++; } } @@ -138,7 +138,7 @@ static void move(dr_class* i_this) { } if (i_this->mpMorf->isStop()) { - i_this->mState = 0; + i_this->mMode = 0; if (i_this->mpBreathEmitter) { i_this->mpBreathEmitter->becomeInvalidEmitter(); i_this->mpBreathEmitter = NULL; @@ -151,7 +151,7 @@ static void move(dr_class* i_this) { if ((isIdle && (l_HIO.m0C || dComIfGp_getVibration().CheckQuake())) || i_this->m2C8 != 0) { l_HIO.m0C = false; i_this->m2C8 = 0; - i_this->mState = 10; + i_this->mMode = 10; } } diff --git a/src/d/actor/d_a_fganon.cpp b/src/d/actor/d_a_fganon.cpp index 04c948f34..27317c7d4 100644 --- a/src/d/actor/d_a_fganon.cpp +++ b/src/d/actor/d_a_fganon.cpp @@ -1,7 +1,7 @@ -// -// Generated by dtk -// Translation Unit: d_a_fganon.cpp -// +/** + * d_a_fganon.cpp + * Enemy - Phantom Ganon + */ #include "d/actor/d_a_fganon.h" #include "d/d_procname.h" @@ -185,23 +185,23 @@ void fly(fganon_class* i_this) { fopAc_ac_c* player = (fopAc_ac_c*)dComIfGp_getPlayer(0); dBgS_LinChk linChk; - if ((((i_this->m384 & 0xF) == 0) && (cM_rndF(1.0f) < 0.5f)) || (i_this->m388 == -10)) { + if ((((i_this->m384 & 0xF) == 0) && (cM_rndF(1.0f) < 0.5f)) || (i_this->mMode == -10)) { i_this->m398 = player->shape_angle.y; } - switch (i_this->m388) { + switch (i_this->mMode) { case -10: deru_brk(i_this); i_this->current.pos = i_this->home.pos; i_this->current.pos.y = player->current.pos.y + l_HIO.m10; i_this->shape_angle.y = fopAcM_searchPlayerAngleY(a_this); - i_this->m388 = 1; + i_this->mMode = 1; anm_init(i_this, FGANON_BCK_WAIT1, 20.0f, J3DFrameCtrl::EMode_LOOP, 1.0f, -1); i_this->m3A4[1] = 60; break; case 0: anm_init(i_this, FGANON_BCK_WAIT1, 20.0f, J3DFrameCtrl::EMode_LOOP, 1.0f, -1); - i_this->m388++; + i_this->mMode++; i_this->m3A0 = 0.0f; i_this->m3A4[1] = (short)(cM_rndF(50.0f) + 50.0f); // Fall-through @@ -235,24 +235,24 @@ void fly(fganon_class* i_this) { fly_se_set(i_this); if (i_this->m3A4[1] == 0) { - i_this->m386 = 6; - i_this->m388 = 0; + i_this->mAction = 6; + i_this->mMode = 0; } if (i_this->m3A4[2] == 0) { - i_this->m386 = 2; - i_this->m388 = 0; + i_this->mAction = 2; + i_this->mMode = 0; } } /* 000015A8-00001BD0 .text shot__FP12fganon_class */ void shot(fganon_class* i_this) { cLib_addCalcAngleS2(&i_this->shape_angle.y, fopAcM_searchPlayerAngleY(i_this), 10, 0x400); - switch(i_this->m388) { + switch(i_this->mMode) { case 0: { if (!i_this->m408) { anm_init(i_this, FGANON_BCK_TAME1, 10.0f, J3DFrameCtrl::EMode_LOOP, 1.0f, -1); - i_this->m388++; + i_this->mMode++; i_this->m3A4[0] = 40; fopAcM_monsSeStart(i_this, JA_SE_CV_PG_EBALL_MAKE_S, 0); // Fall-through @@ -269,7 +269,7 @@ void shot(fganon_class* i_this) { } if (i_this->m3A4[0] == 0) { anm_init(i_this, FGANON_BCK_NAGERU1, 3.0f, J3DFrameCtrl::EMode_NONE, 1.0f, -1); - i_this->m388++; + i_this->mMode++; fopAcM_monsSeStart(i_this, JA_SE_CV_PG_EBALL_FIRE_S, 0); mDoAud_seStart(JA_SE_CM_PG_EBALL_FIRE_S, &i_this->eyePos, 0, dComIfGp_getReverb(fopAcM_GetRoomNo(i_this))); } @@ -285,7 +285,7 @@ void shot(fganon_class* i_this) { } if (i_this->mpMorf->isStop()) { anm_init(i_this, FGANON_BCK_WAIT1, 3.0f, J3DFrameCtrl::EMode_LOOP, 1.0f, -1); - i_this->m388++; + i_this->mMode++; } // Fall-through } @@ -300,7 +300,7 @@ void shot(fganon_class* i_this) { else { anm_init(i_this, FGANON_BCK_TENNISRL1, 0.0f, J3DFrameCtrl::EMode_NONE, 1.0f, -1); } - i_this->m388++; + i_this->mMode++; fopAcM_monsSeStart(i_this, JA_SE_CV_PG_REFLECT_EBALL, 0); mDoAud_seStart(JA_SE_CM_PG_SWING_S, &i_this->eyePos, 0, dComIfGp_getReverb(fopAcM_GetRoomNo(i_this))); i_this->m687++; @@ -309,8 +309,8 @@ void shot(fganon_class* i_this) { } } else if (i_this->m2BC == 2) { - i_this->m386 = 2; - i_this->m388 = 0; + i_this->mAction = 2; + i_this->mMode = 0; return; } } @@ -324,7 +324,7 @@ void shot(fganon_class* i_this) { if (i_this->mpMorf->isStop() || ((i_this->m2BC >= 1) && (i_this->mpMorf->getFrame() >= 20.0f))) { anm_init(i_this, FGANON_BCK_WAIT1, 10.0f, J3DFrameCtrl::EMode_LOOP, 1.0f, -1); - i_this->m388 = 3; + i_this->mMode = 3; } // Fall-through } @@ -332,11 +332,11 @@ void shot(fganon_class* i_this) { cLib_addCalc0(&i_this->speedF, 1.0f, REG0_F(14) + 1.0f); pos_move(i_this, 0); fly_se_set(i_this); - if ((i_this->m388 >= 2) && (i_this->m408 == 0)) { - i_this->m386 = 5; - i_this->m388 = 0; + if ((i_this->mMode >= 2) && (i_this->m408 == 0)) { + i_this->mAction = 5; + i_this->mMode = 0; } - if ((i_this->m388 == 3) || (i_this->m388 == 4)) { + if ((i_this->mMode == 3) || (i_this->mMode == 4)) { mDoAud_monsSeStart(JA_SE_OBJ_PG_EBALL_FLY_S, &i_this->m3E0, 100, dComIfGp_getReverb(fopAcM_GetRoomNo(i_this))); } } @@ -347,10 +347,10 @@ void spinattack(fganon_class* i_this) { fopAc_ac_c* player = (fopAc_ac_c*)dComIfGp_getPlayer(0); dBgS_LinChk linChk; int mFrame = i_this->mpMorf->mFrameCtrl.getFrame(); - switch(i_this->m388) { + switch(i_this->mMode) { case 0: { i_this->shape_angle.y = player->shape_angle.y; - i_this->m388 = 1; + i_this->mMode = 1; // Fall-through } case 1: { @@ -363,7 +363,7 @@ void spinattack(fganon_class* i_this) { if (!dComIfG_Bgsp()->LineCross(&linChk)) { i_this->current.pos.y -= 100.0f; anm_init(i_this, FGANON_BCK_WAIT1, 1.0f, J3DFrameCtrl::EMode_LOOP, 1.0f, -1); - i_this->m388 = 2; + i_this->mMode = 2; i_this->m3A4[0] = 30; deru_brk(i_this); // Fall-through @@ -376,7 +376,7 @@ void spinattack(fganon_class* i_this) { case 2: { if (i_this->m3A4[0] == 0) { anm_init(i_this, FGANON_BCK_KAITEN1, 2.0f, J3DFrameCtrl::EMode_NONE, 1.0f, -1); - i_this->m388 = 3; + i_this->mMode = 3; i_this->speedF = 0.0f; fopAcM_monsSeStart(i_this, JA_SE_CV_PG_EBALL_FIRE_S, 0); } @@ -406,8 +406,8 @@ void spinattack(fganon_class* i_this) { i_this->current.angle.x = 0; pos_move(i_this, 1); if (i_this->mpMorf->isStop()) { - i_this->m386 = 2; - i_this->m388 = 0; + i_this->mAction = 2; + i_this->mMode = 0; } break; } @@ -420,22 +420,22 @@ void fly2(fganon_class* i_this) { fopAc_ac_c* player = (fopAc_ac_c*)dComIfGp_getPlayer(0); dBgS_LinChk linChk; - if ((((i_this->m384 & 0xF) == 0) && (cM_rndF(1.0f) < 0.5f)) || (i_this->m388 == -10)) { + if ((((i_this->m384 & 0xF) == 0) && (cM_rndF(1.0f) < 0.5f)) || (i_this->mMode == -10)) { i_this->m398 = player->shape_angle.y; } - switch (i_this->m388) { + switch (i_this->mMode) { case -10: deru_brk(i_this); i_this->current.pos = i_this->home.pos; i_this->current.pos.y = player->current.pos.y + l_HIO.m18; i_this->shape_angle.y = fopAcM_searchPlayerAngleY(a_this); - i_this->m388 = 1; + i_this->mMode = 1; anm_init(i_this, FGANON_BCK_WAIT1, 20.0f, J3DFrameCtrl::EMode_LOOP, 1.0f, -1); i_this->m3A4[1] = 40; break; case 0: anm_init(i_this, FGANON_BCK_WAIT1, 20.0f, J3DFrameCtrl::EMode_LOOP, 1.0f, -1); - i_this->m388++; + i_this->mMode++; i_this->m3A0 = 0.0f; i_this->m3A4[1] = (short)(cM_rndF(50.0f) + 50.0f); // Fall-through @@ -469,13 +469,13 @@ void fly2(fganon_class* i_this) { fly_se_set(i_this); if (i_this->m3A4[1] == 0) { - i_this->m386 = 11; - i_this->m388 = 0; + i_this->mAction = 11; + i_this->mMode = 0; } if (i_this->m3A4[2] == 0) { - i_this->m386 = 2; - i_this->m388 = 0; + i_this->mAction = 2; + i_this->mMode = 0; } } @@ -568,7 +568,7 @@ void mahou_set(fganon_class* i_this) { void shot2(fganon_class* i_this) { cLib_addCalcAngleS2(&i_this->shape_angle.y, fopAcM_searchPlayerAngleY(i_this), 10, 0x400); int mFrame = i_this->mpMorf->mFrameCtrl.getFrame(); - switch(i_this->m388) { + switch(i_this->mMode) { case 0: { anm_init(i_this, FGANON_BCK_TAME_S1, 5.0f, J3DFrameCtrl::EMode_NONE, 1.0f, -1); for (int i = 0; i < 2; i++) { @@ -580,7 +580,7 @@ void shot2(fganon_class* i_this) { i_this->mEmitters2[0] = dComIfGp_particle_set(dPa_name::ID_SCENE_8218, &i_this->current.pos, NULL); i_this->mEmitters2[1] = dComIfGp_particle_set(dPa_name::ID_SCENE_8219, &i_this->current.pos, NULL); fopAcM_monsSeStart(i_this, JA_SE_CV_PG_EBALL_MAKE_L, 0); - i_this->m388++; + i_this->mMode++; // Fall-through } case 1: { @@ -593,7 +593,7 @@ void shot2(fganon_class* i_this) { if (i_this->mpMorf->isStop()) { anm_init(i_this, FGANON_BCK_TAME_S2, 1.0f, J3DFrameCtrl::EMode_LOOP, 1.0f, -1); i_this->m3A4[0] = l_HIO.m3C; - i_this->m388++; + i_this->mMode++; for (int i = 0; i < 2; i++) { if (i_this->mEmitters2[i] != NULL) { i_this->mEmitters2[i]->becomeInvalidEmitter(); @@ -611,7 +611,7 @@ void shot2(fganon_class* i_this) { fopAcM_seStart(i_this, JA_SE_CM_PG_EBALL_MAKING_L, 0); if (i_this->m3A4[0] == 0) { anm_init(i_this, FGANON_BCK_NAGERU_S1, 3.0f, J3DFrameCtrl::EMode_NONE, 1.0f, -1); - i_this->m388++; + i_this->mMode++; i_this->mEmitters2[0] = dComIfGp_particle_set(dPa_name::ID_SCENE_821C, &i_this->current.pos, NULL); i_this->mEmitters2[1] = dComIfGp_particle_set(dPa_name::ID_SCENE_821D, &i_this->current.pos, NULL); } @@ -642,7 +642,7 @@ void shot2(fganon_class* i_this) { } if (i_this->mpMorf->isStop()) { i_this->m3A4[0] = 60; - i_this->m388 = 4; + i_this->mMode = 4; for (int i = 0; i < 2; i++) { if (i_this->mEmitters2[i] != NULL) { i_this->mEmitters2[i]->becomeInvalidEmitter(); @@ -657,8 +657,8 @@ void shot2(fganon_class* i_this) { anm_init(i_this, FGANON_BCK_WAIT1, 10.0f, J3DFrameCtrl::EMode_LOOP, 1.0f, -1); } if (i_this->m3A4[0] == 0) { - i_this->m386 = 9; - i_this->m388 = 0; + i_this->mAction = 9; + i_this->mMode = 0; } break; } @@ -678,10 +678,10 @@ void spinattack2(fganon_class* i_this) { fopAc_ac_c* player = (fopAc_ac_c*)dComIfGp_getPlayer(0); dBgS_LinChk linChk; int mFrame = i_this->mpMorf->mFrameCtrl.getFrame(); - switch(i_this->m388) { + switch(i_this->mMode) { case 0: { i_this->shape_angle.y = player->shape_angle.y + i_this->m68F * 0x3333; - i_this->m388 = 1; + i_this->mMode = 1; if (i_this->m68F == 0) { for (int i = 1; i < 5; i++) { fopAcM_create(PROC_FGANON, (i * 16) | 3, &i_this->current.pos, i_this->current.roomNo); @@ -698,7 +698,7 @@ void spinattack2(fganon_class* i_this) { MtxPosition(&offset, &transformedPos); i_this->current.pos = player->current.pos + transformedPos; anm_init(i_this, 10, 1.0f, J3DFrameCtrl::EMode_LOOP, 1.0f, -1); - i_this->m388 = 2; + i_this->mMode = 2; deru_brk(i_this); i_this->m38C = player->current.pos; } @@ -711,7 +711,7 @@ void spinattack2(fganon_class* i_this) { local_e4 = i_this->m38C - i_this->current.pos; if (local_e4.abs() < l_HIO.m38) { anm_init(i_this, 9, 2.0f, J3DFrameCtrl::EMode_NONE, 1.0f, -1); - i_this->m388 = 3; + i_this->mMode = 3; i_this->speedF = 0.0f; fopAcM_monsSeStart(i_this, JA_SE_CV_PG_EBALL_FIRE_S, 0); break; @@ -731,21 +731,21 @@ void spinattack2(fganon_class* i_this) { } if (i_this->mpMorf->isStop()) { if (i_this->m68F == 0) { - i_this->m388 = 4; + i_this->mMode = 4; i_this->m3A4[0] = 40; anm_init(i_this, FGANON_BCK_WAIT1, 10.0f, J3DFrameCtrl::EMode_LOOP, 1.0f, -1); } else { - i_this->m386 = 2; - i_this->m388 = 0; + i_this->mAction = 2; + i_this->mMode = 0; } } break; } case 4: { if (i_this->m3A4[0] == 0) { - i_this->m386 = 2; - i_this->m388 = 0; + i_this->mAction = 2; + i_this->mMode = 0; } break; } @@ -756,17 +756,17 @@ void spinattack2(fganon_class* i_this) { /* 00003690-00003B3C .text down__FP12fganon_class */ void down(fganon_class* i_this) { - switch(i_this->m388) { + switch(i_this->mMode) { case 0: { anm_init(i_this, 6, 2.0f, J3DFrameCtrl::EMode_NONE, 1.0f, -1); - i_this->m388++; + i_this->mMode++; i_this->speed.y = 0.0f; } case 1: { i_this->m3AE = 5; if (i_this->mAcch.ChkGroundHit()) { if (i_this->mpMorf->isStop()) { - i_this->m388++; + i_this->mMode++; anm_init(i_this, FGANON_BCK_TYAKUTI1, 2.0f, J3DFrameCtrl::EMode_NONE, 1.0f, -1); } } @@ -775,7 +775,7 @@ void down(fganon_class* i_this) { } case 2: { if (i_this->mpMorf->isStop()) { - i_this->m388++; + i_this->mMode++; anm_init(i_this, 8, 2.0f, J3DFrameCtrl::EMode_LOOP, 1.0f, -1); } break; @@ -789,7 +789,7 @@ void down(fganon_class* i_this) { } case 10: { anm_init(i_this, 7, 2.0f, J3DFrameCtrl::EMode_NONE, 1.0f, -1); - i_this->m388 = 2; + i_this->mMode = 2; } default: break; @@ -811,8 +811,8 @@ void down(fganon_class* i_this) { bVar3 = TRUE; } if ((i_this->m3A4[0] == 0) || bVar3) { - i_this->m386 = 2; - i_this->m388 = 0; + i_this->mAction = 2; + i_this->mMode = 0; if (i_this->m2BC != 0) { i_this->health = 100; } @@ -844,54 +844,54 @@ BOOL kabe_check(fganon_class* i_this) { /* 00004300-000044CC .text deru__FP12fganon_class */ void deru(fganon_class* i_this) { i_this->m3AE = 3; - switch(i_this->m388) { + switch(i_this->mMode) { case 0: if(l_HIO.m06 != 0) { if (l_HIO.m06 == 1) { - i_this->m386 = 5; - i_this->m388 = -10; + i_this->mAction = 5; + i_this->mMode = -10; i_this->m3A4[2] = l_HIO.m0A; } else if (l_HIO.m06 == 2) { - i_this->m386 = 7; - i_this->m388 = 0; + i_this->mAction = 7; + i_this->mMode = 0; } else if (l_HIO.m06 == 3) { - i_this->m386 = 9; - i_this->m388 = -10; + i_this->mAction = 9; + i_this->mMode = -10; i_this->m3A4[2] = l_HIO.m0A; } else if (l_HIO.m06 == 4) { - i_this->m386 = 10; - i_this->m388 = 0; + i_this->mAction = 10; + i_this->mMode = 0; } } else { if (i_this->m2BC == 0) { if (cM_rndF(1.0f) < 0.5f) { - i_this->m386 = 5; - i_this->m388 = -10; + i_this->mAction = 5; + i_this->mMode = -10; i_this->m3A4[2] = l_HIO.m0A; } else { - i_this->m386 = 7; - i_this->m388 = 0; + i_this->mAction = 7; + i_this->mMode = 0; } } else { if ((cM_rndF(1.0f) < 0.4f) && !kabe_check(i_this)) { - i_this->m386 = 10; - i_this->m388 = 0; + i_this->mAction = 10; + i_this->mMode = 0; } else { if (cM_rndF(1.0f) < 0.5f) { - i_this->m386 = 9; - i_this->m388 = -10; + i_this->mAction = 9; + i_this->mMode = -10; i_this->m3A4[2] = l_HIO.m0A; } else { - i_this->m386 = 5; - i_this->m388 = -10; + i_this->mAction = 5; + i_this->mMode = -10; i_this->m3A4[2] = l_HIO.m0A; } } @@ -904,19 +904,19 @@ void deru(fganon_class* i_this) { /* 000044CC-00004584 .text kieru__FP12fganon_class */ void kieru(fganon_class* i_this) { i_this->m3AE = 3; - switch(i_this->m388) { + switch(i_this->mMode) { case 0: { if ((i_this->m408 == 1) || (i_this->m408 == 2)) { i_this->m408 = 35; } kieru_brk(i_this, 0); if (i_this->m68F != 0) { - i_this->m388 = 1; + i_this->mMode = 1; i_this->m3A4[0] = 30; } else { - i_this->m386 = 0; - i_this->m388 = 0; + i_this->mAction = 0; + i_this->mMode = 0; } break; } @@ -934,16 +934,16 @@ void fail(fganon_class* i_this) { fopAc_ac_c* a_this = (fopAc_ac_c*)i_this; i_this->m3AE = 3; - switch(i_this->m388) { + switch(i_this->mMode) { case 0: { kieru_brk(i_this, 1); - i_this->m388 = 1; + i_this->mMode = 1; anm_init(i_this, 7, 2.0f, J3DFrameCtrl::EMode_NONE, 1.0f, -1); break; } case 1: { if (i_this->mpMorf->isStop()) { - i_this->m388 = 2; + i_this->mMode = 2; i_this->m3A4[0] = 30; dBgS_LinChk linChk; @@ -1013,7 +1013,7 @@ void fail(fganon_class* i_this) { else { i_this->m698 = 0.0f; i_this->m3A4[0] = 0; - i_this->m388 = 3; + i_this->mMode = 3; } } } @@ -1023,7 +1023,7 @@ void fail(fganon_class* i_this) { if (i_this->m3A4[0] == 0) { kieru_brk(i_this, 2); i_this->m3A4[0] = 10; - i_this->m388 = 4; + i_this->mMode = 4; i_this->mBokoID = fopAcM_create(PROC_BOKO, 5, &i_this->current.pos, i_this->current.roomNo); } break; @@ -1052,7 +1052,7 @@ void fail(fganon_class* i_this) { void standby(fganon_class* i_this) { fopAc_ac_c* player = (fopAc_ac_c*)dComIfGp_getPlayer(0); i_this->m3AE = 3; - switch(i_this->m388) { + switch(i_this->mMode) { case -1: { if (i_this->m2BC == 2) { if (!dComIfGs_checkGetItem(dItem_LIGHT_ARROW_e)) { @@ -1069,7 +1069,7 @@ void standby(fganon_class* i_this) { float distXZ = std::sqrtf(xOffset * xOffset + zOffset * zOffset); if (distXZ < i_this->m2BD * 10.0f) { i_this->m3A4[0] = l_HIO.m08; - i_this->m388 = 1; + i_this->mMode = 1; fopAcM_OnStatus(i_this, fopAcStts_SHOWMAP_e); i_this->mB89 = 22; } @@ -1077,13 +1077,13 @@ void standby(fganon_class* i_this) { } case 0: { i_this->m3A4[0] = l_HIO.m08; - i_this->m388++; + i_this->mMode++; // fallthrough } case 1: { if (i_this->m3A4[0] == 0) { - i_this->m386 = 1; - i_this->m388 = 0; + i_this->mAction = 1; + i_this->mMode = 0; i_this->m69C = 0.0f; i_this->m698 = 0.0f; i_this->m694 = 0.0f; @@ -1101,13 +1101,13 @@ void start(fganon_class* i_this) { i_this->m3AE = 3; fopAcM_OffStatus(i_this, 0); i_this->attention_info.flags = 0; - switch(i_this->m388) { + switch(i_this->mMode) { case 0: { offset = player->current.pos - i_this->home.pos; float distXZ = std::sqrtf(offset.x * offset.x + offset.z * offset.z); if (distXZ < i_this->m2BD * 10.0f) { i_this->mB54 = 1; - i_this->m388 = 1; + i_this->mMode = 1; anm_init(i_this, FGANON_BCK_WAIT1, 0.0f, J3DFrameCtrl::EMode_LOOP, 1.0f, -1); mDoAud_bgmAllMute(30); } @@ -1120,11 +1120,11 @@ void start(fganon_class* i_this) { case 2: { anm_init(i_this, FGANON_BCK_WARAU1, 5.0f, J3DFrameCtrl::EMode_LOOP, 1.0f, -1); fopAcM_monsSeStart(i_this, JA_SE_CV_PG_LAUGH_2, 0); - i_this->m388 = 3; + i_this->mMode = 3; break; } case 4: { - i_this->m388 = 5; + i_this->mMode = 5; i_this->m3A4[0] = REG0_S(0) + 0x50; anm_init(i_this, FGANON_BCK_TAME1, 10.0f, J3DFrameCtrl::EMode_LOOP, 1.0f, -1); } @@ -1162,9 +1162,9 @@ void end(fganon_class* i_this) { fopAcM_OffStatus(i_this, 0); i_this->attention_info.flags = 0; s32 mFrame = i_this->mpMorf->mFrameCtrl.getFrame(); - switch(i_this->m388) { + switch(i_this->mMode) { case 0: { - i_this->m388 = 1; + i_this->mMode = 1; anm_init(i_this, FGANON_BCK_LAST_DAMAGE1, 2.0f, J3DFrameCtrl::EMode_NONE, 1.0f, -1); i_this->mB54 = 50; dComIfGs_onEventBit(0x3f20); // PG_DEFEATED? It appears further down in `energy_ball_move` @@ -1179,13 +1179,13 @@ void end(fganon_class* i_this) { deru_brk(i_this); anm_init(i_this, FGANON_BCK_WARAU1, 1.0f, J3DFrameCtrl::EMode_LOOP, 1.0f, -1); fopAcM_monsSeStart(i_this, JA_SE_CV_PG_LAUGH_2, 0); - i_this->m388 = 3; + i_this->mMode = 3; break; } case 4: { deru_brk(i_this); anm_init(i_this, FGANON_BCK_SARU1, 1.0f, J3DFrameCtrl::EMode_NONE, 1.0f, -1); - i_this->m388 = 5; + i_this->mMode = 5; i_this->speed.y = 0.0f; fopAcM_seStart(i_this, JA_SE_CM_PG_END_1, 0); } @@ -1199,7 +1199,7 @@ void end(fganon_class* i_this) { kieru_brk2(i_this); } if (mFrame == 48) { - i_this->m388 = 6; + i_this->mMode = 6; } } case 6: @@ -1214,9 +1214,9 @@ void last_end(fganon_class* i_this) { i_this->m3AE = 3; fopAcM_OffStatus(i_this, 0); i_this->attention_info.flags = 0; - switch(i_this->m388) { + switch(i_this->mMode) { case 0: { - i_this->m388 = 1; + i_this->mMode = 1; anm_init(i_this, FGANON_BCK_MOGAKU1, 2.0f, J3DFrameCtrl::EMode_NONE, 1.0f, -1); i_this->mB54 = 100; i_this->m3C0 = 10000.0f; @@ -1225,7 +1225,7 @@ void last_end(fganon_class* i_this) { } case 1: { if (i_this->m3A4[1] == 0) { - i_this->m388 = 2; + i_this->mMode = 2; i_this->m3A4[1] = 20; i_this->m2D0 = 1; i_this->mB54++; @@ -1237,7 +1237,7 @@ void last_end(fganon_class* i_this) { cLib_addCalc2(&i_this->scale.z, 0.1f, 1.0f, 0.05f); cLib_addCalc2(&i_this->scale.y, 0.1f, 1.0f, 0.05f); if (i_this->m3A4[1] == 0) { - i_this->m388 = 3; + i_this->mMode = 3; i_this->m3A4[1] = 30; fopAcM_seStart(i_this, JA_SE_CM_L_ARROW_PASS_AWAY, 0); } @@ -1251,7 +1251,7 @@ void last_end(fganon_class* i_this) { i_this->scale.x = 0.0f; i_this->scale.y = 0.0f; i_this->scale.z = 0.0f; - i_this->m388 = 4; + i_this->mMode = 4; i_this->m3A4[1] = 30; } break; @@ -1270,7 +1270,7 @@ void last_end(fganon_class* i_this) { mBoko->setMatrix(i_this->mpKenModel->getBaseTRMtx()); if (i_this->m3A4[1] == 1) { fopAcM_cancelCarryNow(mBoko); - i_this->m388 = 5; + i_this->mMode = 5; i_this->mB54++; i_this->mB56 = 0; } @@ -1340,8 +1340,8 @@ void damage_check(fganon_class* i_this) { dComIfGp_particle_set(dPa_name::ID_COMMON_NORMAL_HIT, &i_this->eyePos, &local_a0, &local_44); dKy_SordFlush_set(i_this->eyePos, 1); - i_this->m386 = 22; - i_this->m388 = 0; + i_this->mAction = 22; + i_this->mMode = 0; i_this->m3AE = 1000; mDoAud_subBgmStop(); @@ -1364,8 +1364,8 @@ void damage_check(fganon_class* i_this) { i_this->speedF = 0.0f; } else { - i_this->m386 = 2; - i_this->m388 = 0; + i_this->mAction = 2; + i_this->mMode = 0; if ((i_this->m408 == 1) || (i_this->m408 == 2)) { i_this->m408 = 35; } @@ -1408,8 +1408,8 @@ void damage_check(fganon_class* i_this) { dComIfGp_particle_set(dPa_name::ID_COMMON_NORMAL_HIT, &i_this->eyePos, &local_a0, &local_44); dKy_SordFlush_set(i_this->eyePos, 1); - i_this->m386 = 8; - i_this->m388 = 0; + i_this->mAction = 8; + i_this->mMode = 0; i_this->m3B0 = REG8_F(11) + 80.0f; i_this->m3B8 = REG8_S(2) + 7; @@ -1426,7 +1426,7 @@ void damage_check(fganon_class* i_this) { } } if (i_this->m68F) { - if ((i_this->mCyl.ChkTgHit()) || (master->m386 == 8)) { + if ((i_this->mCyl.ChkTgHit()) || (master->mAction == 8)) { mEmitter = dComIfGp_particle_set(dPa_name::ID_SCENE_826B, &i_this->current.pos, NULL); if (mEmitter != NULL) { mEmitter->setGlobalRTMatrix(i_this->mpMorf->getModel()->getAnmMtx(0)); @@ -1438,7 +1438,7 @@ void damage_check(fganon_class* i_this) { if ((i_this->mCyl.ChkTgHit()) || (i_this->m68C)) { i_this->m3AE = 6; if (i_this->mCyl.ChkTgHit()) { - if(((i_this->m386 == 8) || (i_this->m386 == 7)) || (i_this->m386 == 10)) { + if(((i_this->mAction == 8) || (i_this->mAction == 7)) || (i_this->mAction == 10)) { atInfo.mpObj = i_this->mCyl.GetTgHitObj(); pPos = i_this->mCyl.GetTgHitPosP(); atInfo.pParticlePos = pPos; @@ -1472,14 +1472,14 @@ void damage_check(fganon_class* i_this) { dComIfGp_particle_set(dPa_name::ID_COMMON_NORMAL_HIT, pPos, &local_a0, &local_44); - if ((i_this->m386 == 7) || (i_this->m386 == 10)) { - i_this->m386 = 8; - i_this->m388 = 0; + if ((i_this->mAction == 7) || (i_this->mAction == 10)) { + i_this->mAction = 8; + i_this->mMode = 0; } else if (i_this->m2BC == 0) { if (i_this->health <= 0) { - i_this->m386 = 21; - i_this->m388 = 0; + i_this->mAction = 21; + i_this->mMode = 0; i_this->m3AE = 1000; mDoAud_subBgmStop(); } @@ -1487,17 +1487,17 @@ void damage_check(fganon_class* i_this) { i_this->m690 -= atInfo.mDamage; if (i_this->m690 <= 0) { i_this->m690 = 10; - i_this->m386 = 2; - i_this->m388 = 0; + i_this->mAction = 2; + i_this->mMode = 0; } else { - i_this->m388 = 10; + i_this->mMode = 10; } } } else if (i_this->m2BC == 1) { - i_this->m386 = 3; - i_this->m388 = 0; + i_this->mAction = 3; + i_this->mMode = 0; i_this->health = 0; mDoAud_subBgmStop(); } @@ -1519,8 +1519,8 @@ void damage_check(fganon_class* i_this) { dComIfGp_particle_set(dPa_name::ID_COMMON_NORMAL_HIT, &i_this->eyePos, &local_a0, &local_44); dKy_SordFlush_set(i_this->eyePos, 1); - i_this->m386 = 8; - i_this->m388 = 0; + i_this->mAction = 8; + i_this->mMode = 0; i_this->m3B0 = REG8_F(11) + 80.0f; i_this->m3B8 = REG8_S(2) + 7; @@ -1537,8 +1537,8 @@ void damage_check(fganon_class* i_this) { /* 00006288-00006560 .text move__FP12fganon_class */ s32 move(fganon_class* i_this) { int res = 0; - if (!dComIfGp_checkPlayerStatus0(0, daPyStts0_SHIP_RIDE_e) && !dComIfGp_checkPlayerStatus0(0, daPyStts0_SWIM_e) && i_this->m386) { - if (i_this->m386 == 10) { + if (!dComIfGp_checkPlayerStatus0(0, daPyStts0_SHIP_RIDE_e) && !dComIfGp_checkPlayerStatus0(0, daPyStts0_SWIM_e) && i_this->mAction) { + if (i_this->mAction == 10) { dCam_getBody()->SetTypeForce("P_Ganon3", NULL); } else if (i_this->m2BC != 1) { @@ -1548,17 +1548,17 @@ s32 move(fganon_class* i_this) { dCam_getBody()->SetTypeForce("P_Ganon2", NULL); } } - if ((i_this->m2BC == 0) && (i_this->m386 < 20)) { + if ((i_this->m2BC == 0) && (i_this->mAction < 20)) { fopAc_ac_c* player = (fopAc_ac_c*)dComIfGp_getPlayer(0); - if ((i_this->m386 == 0) && (player->current.pos.y < 710.0f)) { + if ((i_this->mAction == 0) && (player->current.pos.y < 710.0f)) { return 0; } - if ((i_this->m386 != 2) && (player->current.pos.y < 710.0f)) { - i_this->m386 = 2; - i_this->m388 = 0; + if ((i_this->mAction != 2) && (player->current.pos.y < 710.0f)) { + i_this->mAction = 2; + i_this->mMode = 0; } } - switch(i_this->m386) { + switch(i_this->mAction) { case 0: standby(i_this); break; @@ -1734,14 +1734,14 @@ void demo_camera(fganon_class* i_this) { cLib_addCalc2(&i_this->mB80, 0.1f, 1.0f, REG8_F(7) + 0.01f); } if (i_this->mB56 == 110) { - i_this->m388 = 2; + i_this->mMode = 2; } if (i_this->mB56 == 180) { - i_this->m388 = 4; + i_this->mMode = 4; } if (i_this->mB56 == 280) { - i_this->m386 = 6; - i_this->m388 = 1; + i_this->mAction = 6; + i_this->mMode = 1; i_this->m3A4[0] = 29; i_this->mB54 = 150; if (i_this->m2BF != 0xFF) { @@ -1822,7 +1822,7 @@ void demo_camera(fganon_class* i_this) { player->setPlayerPosAndAngle(&transformedPos, 0.0f); if (i_this->mB56 == 10) { - i_this->m388++; + i_this->mMode++; } i_this->current.pos.x = (i_this->mB68.x - 50.0f) + REG0_F(4); @@ -1859,7 +1859,7 @@ void demo_camera(fganon_class* i_this) { i_this->mB68 = i_this->eyePos; i_this->mB68.y -= REG0_F(11) + 30.0f; - i_this->m388++; + i_this->mMode++; } case 54: { cLib_addCalc2(&i_this->mB68.y, (i_this->eyePos.y - 30.0f) + REG0_F(11), 0.1f, 20.0f); @@ -2130,8 +2130,8 @@ void energy_ball_move(fganon_class* i_this) { if (i_this->m40A != 0) { return; } - i_this->m386 = 2; - i_this->m388 = 0; + i_this->mAction = 2; + i_this->mMode = 0; i_this->m40A = 50; return; } @@ -2283,10 +2283,10 @@ void energy_ball_move(fganon_class* i_this) { if (i_this->mBallAtSph.ChkAtHit() != 0) { atInfo.mpActor = i_this->mBallAtSph.GetAtHitObj()->GetAc(); - if ((atInfo.mpActor && (fopAcM_GetName(atInfo.mpActor) == PROC_PLAYER)) && (i_this->m386 != 22)) { + if ((atInfo.mpActor && (fopAcM_GetName(atInfo.mpActor) == PROC_PLAYER)) && (i_this->mAction != 22)) { i_this->m68B = 1; - i_this->m386 = 5; - i_this->m388 = 1; + i_this->mAction = 5; + i_this->mMode = 1; i_this->m3A4[1] = (cM_rndF(30.0f)) + 70.f; } } @@ -2336,7 +2336,7 @@ static BOOL daFganon_Execute(fganon_class* i_this) { fpcM_Search(&mahou_se_set, i_this); g_env_light.settingTevStruct(TEV_TYPE_ACTOR, &i_this->current.pos, &i_this->tevStr); - if (((((i_this->m386 == 5) || (i_this->m386 == 9)) || (i_this->m386 == 7)) || (i_this->m386 == 10)) && ((i_this->m68B != 0 && (i_this->m68A == 0)))) { + if (((((i_this->mAction == 5) || (i_this->mAction == 9)) || (i_this->mAction == 7)) || (i_this->mAction == 10)) && ((i_this->m68B != 0 && (i_this->m68A == 0)))) { i_this->m68B = 0; anm_init(i_this, FGANON_BCK_WARAU1, 6.0f, J3DFrameCtrl::EMode_LOOP, 1.0f, -1); i_this->m68A = 60; @@ -2431,7 +2431,7 @@ static BOOL daFganon_Execute(fganon_class* i_this) { energy_ball_move(i_this); for (int i = 0; i < 2; i++) { - if ((i_this->mbIsMaterialized != 0) && (i_this->m386 != 22)) { + if ((i_this->mbIsMaterialized != 0) && (i_this->mAction != 22)) { if (i_this->mEmitters1[i] != NULL) { i_this->mEmitters1[i]->setGlobalRTMatrix(i_this->mpMorf->getModel()->getAnmMtx(jno[i])); } @@ -2831,8 +2831,8 @@ static cPhs_State daFganon_Create(fopAc_ac_c* i_act) { if (i_this->m68F == 0) { master = i_this; if (i_this->m2BC == 0) { - i_this->m386 = 20; - i_this->m388 = 0; + i_this->mAction = 20; + i_this->mMode = 0; kieru_brk(i_this, 0); i_this->max_health = 30; i_this->health = 30; @@ -2841,14 +2841,14 @@ static cPhs_State daFganon_Create(fopAc_ac_c* i_act) { else { i_this->max_health = 100; i_this->health = 100; - i_this->m386 = 0; - i_this->m388= -1; + i_this->mAction = 0; + i_this->mMode= -1; } i_this->current.pos.y += 10000.0f; } else { - i_this->m386 = 10; - i_this->m388 = 0; + i_this->mAction = 10; + i_this->mMode = 0; deru_brk(i_this); } i_this->initBt(REG8_F(8) + 300.0f, 300.0f); diff --git a/src/d/actor/d_a_hookshot.cpp b/src/d/actor/d_a_hookshot.cpp index 598ed4f8b..e579cfeda 100644 --- a/src/d/actor/d_a_hookshot.cpp +++ b/src/d/actor/d_a_hookshot.cpp @@ -280,7 +280,7 @@ BOOL daHookshot_c::procShot() { if ( strcmp(dComIfGp_getStartStageName(), "kazeB") == 0 && ( - (sp8C.y < 950.0f && dComIfG_Bgsp()->GetTriPla(mLinChk)->GetNP()->y >= 0.5f) || + (sp8C.y < 950.0f && cBgW_CheckBGround(dComIfG_Bgsp()->GetTriPla(mLinChk)->GetNP()->y)) || dComIfG_Bgsp()->GetAttributeCode(mLinChk) == dBgS_Attr_SAND_e ) ) { diff --git a/src/d/actor/d_a_item.cpp b/src/d/actor/d_a_item.cpp index 53d445a6e..ccb7e7caa 100644 --- a/src/d/actor/d_a_item.cpp +++ b/src/d/actor/d_a_item.cpp @@ -1287,7 +1287,7 @@ void daItem_c::mode_wait() { break; } - if (mAcch.ChkWaterHit() && mAcch.m_wtr.GetHeight() > current.pos.y || + if ((mAcch.ChkWaterHit() && mAcch.m_wtr.GetHeight() > current.pos.y) || (daSea_ChkArea(current.pos.x, current.pos.z) && daSea_calcWave(current.pos.x, current.pos.z) > current.pos.y)) { mode_water_init(); diff --git a/src/d/actor/d_a_ks.cpp b/src/d/actor/d_a_ks.cpp index 81daf8f6c..7c9ed5c3c 100644 --- a/src/d/actor/d_a_ks.cpp +++ b/src/d/actor/d_a_ks.cpp @@ -3,127 +3,1642 @@ // Translation Unit: d_a_ks.cpp // +// Fakematch? Having sym off before d_a_ks.h but then turning it on before +// d_a_player_main.h fixes the weak function ordering of +// `daPy_py_c::getSwordTopPos() const` and `daPy_py_c::getHeadTopPos() const` +// in this TU. +#pragma sym off #include "d/actor/d_a_ks.h" #include "d/d_procname.h" +#include "d/d_com_inf_game.h" +#include "d/d_s_play.h" +#include "f_op/f_op_camera.h" +#include "d/d_snap.h" +#pragma sym on +#include "d/actor/d_a_player_main.h" +#include "d/actor/d_a_gm.h" +#include "d/res/res_ks.h" + +#include "weak_bss_936_to_1036.h" // IWYU pragma: keep +#include "weak_data_1811.h" // IWYU pragma: keep + +static int KS_ALL_COUNT = 0; +static int KUTTUKU_ALL_COUNT = 0; +static BOOL HEAVY_IN = FALSE; +static int GORON_COUNT = 0; /* 00000078-000002CC .text draw_SUB__FP8ks_class */ -void draw_SUB(ks_class*) { - /* Nonmatching */ +void draw_SUB(ks_class* i_this) { + J3DModel* pBodyModel = i_this->mpBodyMorf->getModel(); + J3DModel* pEyeModel = i_this->mpEyeMorf->getModel(); + + cXyz local_24 = dComIfGp_getCamera(0)->mLookat.mEye - i_this->current.pos; + + int iVar3 = cM_atan2s(local_24.x, local_24.z); + int iVar4 = (s16)-cM_atan2s(local_24.y, std::sqrtf(local_24.x * local_24.x + local_24.z * local_24.z)); + + f32 fVar1 = 0.0f; + if (i_this->m2D0) { + fVar1 = i_this->m304; + } + + mDoMtx_stack_c::transS(i_this->current.pos.x, i_this->current.pos.y + fVar1, i_this->current.pos.z); + + mDoMtx_stack_c::YrotM(iVar3); + mDoMtx_stack_c::XrotM(iVar4); + mDoMtx_stack_c::ZrotM(i_this->shape_angle.z + i_this->m2FA); + + cXyz local_18; + local_18.setall(1.0f); + + i_this->m2FA += i_this->m2FE; + + mDoMtx_stack_c::scaleM(1.0f,1.0f,1.0f); + + mDoMtx_stack_c::ZrotM(i_this->shape_angle.z - i_this->m2FA); + + pBodyModel->setBaseTRMtx(mDoMtx_stack_c::get()); + + mDoMtx_stack_c::transS(i_this->current.pos.x, i_this->current.pos.y + fVar1, i_this->current.pos.z); + + mDoMtx_stack_c::YrotM(i_this->shape_angle.y); + mDoMtx_stack_c::XrotM(i_this->shape_angle.x); + mDoMtx_stack_c::ZrotM(i_this->shape_angle.z); + + mDoMtx_stack_c::scaleM(local_18); + + pEyeModel->setBaseTRMtx(mDoMtx_stack_c::get()); + + enemy_fire(&i_this->mEnemyFire); } /* 000002CC-00000568 .text daKS_Draw__FP8ks_class */ -static BOOL daKS_Draw(ks_class*) { - /* Nonmatching */ +static BOOL daKS_Draw(ks_class* i_this) { + cXyz local_24 = i_this->current.pos - dComIfGp_getCamera(0)->mLookat.mEye; + + if (local_24.abs() < REG0_F(10) + 100.0f) { + return TRUE; + } + + J3DModel* pBodyModel = i_this->mpBodyMorf->getModel(); + J3DModel* pEyeModel = i_this->mpEyeMorf->getModel(); + + cXyz local_18 = i_this->current.pos; + local_18.y += 40.0f; + + dSnap_RegistFig(DSNAP_TYPE_KS, i_this, 1.0f, 1.0f, 1.0f); + + if (i_this->m2C8 == 6) { + return TRUE; + } + + if (i_this->m2D0 == 0 && i_this->m2CD == 0) { + draw_SUB(i_this); + } + + i_this->m2CD = 0; + + g_env_light.settingTevStruct(TEV_TYPE_ACTOR, &i_this->current.pos, &i_this->tevStr); + g_env_light.setLightTevColorType(pBodyModel, &i_this->tevStr); + + i_this->mpBodyBrkAnm->entry(pBodyModel->getModelData()); + i_this->mpBodyBrkAnm->setFrame(i_this->m320); + + i_this->mpBodyMorf->updateDL(); + + i_this->mpBodyBrkAnm->remove(pBodyModel->getModelData()); + + g_env_light.setLightTevColorType(pEyeModel, &i_this->tevStr); + + i_this->mpEyeBtkAnm->entry(pEyeModel->getModelData()); + i_this->mpEyeBtkAnm->setFrame(i_this->m302); + + i_this->mpEyeBrkAnm->entry(pEyeModel->getModelData()); + i_this->mpEyeBrkAnm->setFrame(i_this->m320); + + i_this->mpEyeMorf->updateDL(); + + i_this->mpEyeBrkAnm->remove(pEyeModel->getModelData()); + i_this->mpEyeBtkAnm->remove(pEyeModel->getModelData()); + + return TRUE; } /* 00000568-0000074C .text naraku_check__FP8ks_class */ -void naraku_check(ks_class*) { - /* Nonmatching */ +void naraku_check(ks_class* i_this) { + cXyz local_24; + cXyz local_18; + + if (i_this->mAcch.GetGroundH() != C_BG_MIN_HEIGHT && dComIfG_Bgsp()->ChkPolySafe(i_this->mAcch.m_gnd) && dComIfG_Bgsp()->GetGroundCode(i_this->mAcch.m_gnd) == 4) { + i_this->m2D3++; + + if (i_this->current.pos.y < -500.0f || i_this->m2D3 > 0x32) { + i_this->speedF = 0.0; + i_this->speed.setall(0.0f); + i_this->gravity = 0.0f; + + fopAcM_delete(i_this); + + return; + } + } + + if (i_this->mAcch.ChkWaterIn() && i_this->current.pos.y < i_this->mAcch.m_wtr.GetHeight() + 20.0f) { + if (!i_this->m2CF) { + local_24 = i_this->current.pos; + + i_this->m2CF = 1; + + local_18.setall(0.5f); + + i_this->m52C.remove(); + dComIfGp_particle_setShipTail(dPa_name::ID_COMMON_0033, &i_this->current.pos, NULL, &local_18, 0xFF, &i_this->m52C); + i_this->m52C.setRate(0.0f); + } + + cLib_addCalc2(&i_this->current.pos.y, i_this->mAcch.m_wtr.GetHeight() + 20.0f, 1.0f, 10.0); + + i_this->gravity = 0.0f; + i_this->speed.y = 0.0f; + } + else if (i_this->m2CF && (i_this->mAcch.ChkGroundHit() || i_this->current.pos.y > i_this->mAcch.m_wtr.GetHeight() + 100.0f)) { + i_this->m2CF = 0; + + i_this->m52C.remove(); + } } /* 0000074C-00000788 .text tyaku_check__FP8ks_class */ -void tyaku_check(ks_class*) { - /* Nonmatching */ +BOOL tyaku_check(ks_class* i_this) { + if (i_this->mAcch.ChkGroundHit()) { + return TRUE; + } + + if (i_this->mAcch.ChkWaterIn()) { + i_this->speed.y = 0.0f; + i_this->gravity = 0.0f; + return TRUE; + } + + return FALSE; } /* 00000788-0000087C .text ks_kuttuki_check__FP8ks_class */ -void ks_kuttuki_check(ks_class*) { - /* Nonmatching */ +BOOL ks_kuttuki_check(ks_class* i_this) { + fopAc_ac_c* mAtHitAc; + if (i_this->mSph.ChkAtHit() && !i_this->mSph.ChkAtShieldHit()) { + mAtHitAc = i_this->mSph.GetAtHitAc(); + if (mAtHitAc && mAtHitAc == dComIfGp_getLinkPlayer() && KUTTUKU_ALL_COUNT >= 0 && KUTTUKU_ALL_COUNT < 20 && GORON_COUNT == 0) { + i_this->mSph.OffTgSetBit(); + i_this->mSph.ClrCoSet(); + i_this->mSph.ClrTgHit(); + + if (i_this->m2CF) { + i_this->m2CF = 0; + + i_this->m52C.remove(); + } + + i_this->mAction = 4; + i_this->mMode = 40; + + return TRUE; + } + } + return FALSE; } /* 0000087C-000008F4 .text gm_birth_delet__FP8ks_class */ -void gm_birth_delet(ks_class*) { - /* Nonmatching */ +void gm_birth_delet(ks_class* i_this) { + if (i_this->mGmID) { + gm_class* i_gm = (gm_class*)fopAcM_SearchByID(i_this->mGmID); + if (i_gm && fopAc_IsActor(i_gm) && fopAcM_GetName(i_gm) == PROC_GM && i_gm->m31E > 0) { + i_gm->m31E--; + } + } } /* 000008F4-00000A98 .text shock_damage_check__FP8ks_class */ -void shock_damage_check(ks_class*) { - /* Nonmatching */ +BOOL shock_damage_check(ks_class* i_this) { + daPy_lk_c* link = daPy_getPlayerLinkActorClass(); + + if (link->checkHammerQuake()) { + cXyz mSwordTopPos = link->getSwordTopPos(); + + mSwordTopPos.x -= i_this->current.pos.x; + mSwordTopPos.y -= i_this->current.pos.y; + mSwordTopPos.z -= i_this->current.pos.z; + + float distXZ = std::sqrtf(mSwordTopPos.x * mSwordTopPos.x + mSwordTopPos.z * mSwordTopPos.z); + + if (distXZ < 200.0f) { + if (std::sqrtf(mSwordTopPos.y * mSwordTopPos.y) < 40.0f) { + i_this->mAction = 3; + i_this->mMode = 32; + + return TRUE; + } + } + } + return FALSE; } /* 00000A98-00000DE8 .text body_atari_check__FP8ks_class */ -void body_atari_check(ks_class*) { - /* Nonmatching */ +BOOL body_atari_check(ks_class* i_this) { + fopAc_ac_c* a_this = (fopAc_ac_c*)i_this; + cXyz mTgHitPos; + cXyz mParticleScale; + + i_this->mStts.Move(); + + if (i_this->mSph.ChkTgHit()) { + daPy_py_c* mpCurPlayerActor = (daPy_py_c*)daPy_getPlayerActorClass(); + + cCcD_Obj* mTgHitObj = i_this->mSph.GetTgHitObj(); + + mTgHitPos = *i_this->mSph.GetTgHitPosP(); + + if (!mTgHitObj) { + return FALSE; + } + + a_this->current.angle.y = fopAcM_searchPlayerAngleY(a_this) + 0x8000; + + i_this->mAction = 3; + + switch (mTgHitObj->GetAtType()) { + case AT_TYPE_WIND: { + a_this->current.angle.y = cM_atan2s(a_this->current.pos.x - mTgHitPos.x, a_this->current.pos.z - mTgHitPos.z); + + i_this->mAction = 2; + i_this->mMode = 20; + + return FALSE; + } + case AT_TYPE_UNK8: { + i_this->mMode = 32; + + a_this->health = 0; + + i_this->mMode = 30; + + return FALSE; + } + case AT_TYPE_SWORD: { + if (i_this->mMode != 43 || i_this->m2CE) { + dScnPly_ply_c::setPauseTimer(2); + a_this->stealItemBitNo = 1; + } + + mParticleScale.setall(REG8_F(0) + 0.8f); + dComIfGp_particle_set(dPa_name::ID_COMMON_NORMAL_HIT, &mTgHitPos, &mpCurPlayerActor->shape_angle, &mParticleScale); + + break; + } + case AT_TYPE_SKULL_HAMMER: { + if (mpCurPlayerActor->getCutType() == 0x12 || mpCurPlayerActor->getCutType() == 0x13) { + a_this->speedF = 0.0f; + a_this->gravity = 0.0f; + a_this->speed.setall(0.0f); + + a_this->health = 0; + + dScnPly_ply_c::setPauseTimer(2); + + a_this->stealItemBitNo = 1; + + i_this->mMode = 32; + + return TRUE; + } + + break; + } + case AT_TYPE_FIRE: + case AT_TYPE_FIRE_ARROW: { + i_this->mEnemyFire.mFireDuration = 100; + + break; + } + case AT_TYPE_ICE_ARROW: { + i_this->mEnemyIce.mFreezeDuration = 200; + + i_this->m2D0 = 1; + + i_this->mEnemyIce.mParticleScale = 0.2f; + i_this->mEnemyIce.mYOffset = 0.0f; + + enemy_fire_remove(&i_this->mEnemyFire); + + break; + } + case AT_TYPE_LIGHT_ARROW: { + i_this->mEnemyIce.mLightShrinkTimer = 1; + i_this->mEnemyIce.mParticleScale = 0.2f; + i_this->mEnemyIce.mYOffset = 0.0f; + + i_this->m2D0 = 1; + + break; + } + default: { + mParticleScale.setall(REG8_F(0) + 0.8f); + dComIfGp_particle_set(dPa_name::ID_COMMON_NORMAL_HIT, &mTgHitPos, &mpCurPlayerActor->shape_angle, &mParticleScale); + break; + } + } + + a_this->health = 0; + + i_this->mMode = 30; + + return TRUE; + } + else { + return shock_damage_check(i_this) ? 1 : 0; + } } /* 00000DE8-00000EBC .text speed_keisan__FP8ks_classs */ -void speed_keisan(ks_class*, short) { - /* Nonmatching */ +void speed_keisan(ks_class* i_this, short i_speed) { + cMtx_YrotS(*calc_mtx, i_speed); + + s16 sVar1 = i_this->m30C * cM_ssin(i_this->m2F0[0]); + + cXyz local_14; + local_14.x = sVar1; + local_14.y = 0.0f; + local_14.z = 0.0f; + + cXyz local_8; + MtxPosition(&local_14, &local_8); + + i_this->current.pos.x += local_8.x; + i_this->current.pos.z += local_8.z; } /* 00000EBC-00001314 .text action_dousa_move__FP8ks_class */ -void action_dousa_move(ks_class*) { - /* Nonmatching */ +void action_dousa_move(ks_class* i_this) { + daPy_lk_c* link = daPy_getPlayerLinkActorClass(); + + switch (i_this->mMode) { + case 0: + i_this->m30C = 0.0f; + + i_this->gravity = -3.0f; + + for (int i = 0; i < 5; i++) { + i_this->m2F0[i] = 0; + } + + i_this->mMode++; + // Fall-through + case 1: + cLib_addCalcAngleS2(&i_this->shape_angle.z, 0, 1, 0x1000); + + if (fopAcM_searchActorDistance(i_this, dComIfGp_getPlayer(0)) > 10000.0f) { + break; + } + + if (i_this->shape_angle.z > 0x100) { + return; + } + + i_this->shape_angle.z = 0; + + fopAcM_seStart(i_this, JA_SE_CM_KS_MOVE, 0); + + if (tyaku_check(i_this) != 0) { + i_this->gravity = -3.0f; + + i_this->speed.y = 1.0f; + i_this->speed.y += cM_rndF(5.0f); + } + + i_this->current.angle.y = i_this->m2FC + fopAcM_searchPlayerAngleY(i_this); + + i_this->mMode++; + // Fall-through + case 2: + if (i_this->mAcch.ChkGroundHit()) { + i_this->current.angle.y = i_this->m2FC + fopAcM_searchPlayerAngleY(i_this); + } + + if (KUTTUKU_ALL_COUNT >= 0 && KUTTUKU_ALL_COUNT < 0x14 && + (link->getSpeedF() > 12.0f || HEAVY_IN) && + fopAcM_searchActorDistance(i_this, dComIfGp_getPlayer(0)) < 500.0f && + !dComIfGp_checkPlayerStatus0(0, daPyStts0_SWIM_e) && + tyaku_check(i_this)) { + + i_this->mAction = 1; + i_this->mMode = 10; + + return; + } + + if (link->getSpeedF() <= 12.0f || dComIfGp_checkPlayerStatus0(0, daPyStts0_SWIM_e)) { + cLib_addCalc0(&i_this->speedF, 0.3f, cM_rndF(1.0f) + 0.3f); + + cLib_addCalcAngleS2(&i_this->shape_angle.z, 0, 1, 0x1000); + + i_this->m2FC = 0; + break; + } + + if (i_this->m2FC == 0) { + i_this->m2FC = (fopAcM_GetID(i_this) & 0xf) * cM_rndFX(512.0f); + } + + i_this->shape_angle.z = cM_rndFX(2000.0f); + + speed_keisan(i_this, i_this->current.angle.y); + + i_this->speedF = 12.0f; + + i_this->m2F0[0] += 1000; + + i_this->m30C = 10.0f; + + if (tyaku_check(i_this)) { + fopAcM_seStart(i_this, JA_SE_CM_KS_MOVE, 0); + + i_this->gravity = -3.0f; + + i_this->speed.y = 1.0f; + i_this->speed.y += cM_rndF(5.0f); + } + break; + case 3: + if (fopAcM_searchActorDistance(i_this, dComIfGp_getPlayer(0)) < 500.0f) { + i_this->current.angle.y = fopAcM_searchPlayerAngleY(i_this); + } + break; + } + + if (i_this->mMode == 2 || i_this->mMode == 3) { + cLib_addCalcAngleS2(&i_this->shape_angle.y, i_this->current.angle.y, 1, 0x1000); + } + + if (body_atari_check(i_this) != 0) { + fopAcM_seStart(i_this, JA_SE_LK_LAST_HIT, 0); + } } /* 00001314-00001630 .text action_kougeki_move__FP8ks_class */ -void action_kougeki_move(ks_class*) { - /* Nonmatching */ +void action_kougeki_move(ks_class* i_this) { + cXyz head_top_pos = daPy_getPlayerActorClass()->getHeadTopPos(); + + i_this->m31C = 20.0f; + + if (head_top_pos.y > i_this->current.pos.y) { + i_this->m31C = 60.0f; + } + + switch (i_this->mMode) { + case 10: { + i_this->mSph.OffCoSetBit(); + + i_this->speedF = 26.0f; + i_this->gravity = -4.0f; + i_this->speed.y = 28.0f; + + for (int i = 0; i < 5; i++) { + i_this->m2F0[i] = 0; + } + + i_this->m30C = 0.0f; + + i_this->current.angle.y = fopAcM_searchPlayerAngleY(i_this); + + mDoAud_seStart(JA_SE_CM_KS_ATTACK, &i_this->eyePos, 0, dComIfGp_getReverb(fopAcM_GetRoomNo(i_this))); + + fopAcM_monsSeStart(i_this, JA_SE_CV_KS_ATTACK, 0); + + i_this->mMode++; + + break; + } + case 11: { + if (i_this->speedF > 0.0f && i_this->m2F0[1] == 0 && i_this->mSph.ChkAtShieldHit()) { + i_this->gravity = -4.0f; + i_this->speed.y = 25.0f; + i_this->speedF *= -0.5f; + + i_this->m2F0[1] = 1; + } + + if (!i_this->m2F0[1] && ks_kuttuki_check(i_this)) { + return; + } + + if (!i_this->mAcch.ChkGroundHit() && !i_this->mAcch.ChkWaterIn()) { + break; + } + + i_this->mSph.OnCoSetBit(); + + i_this->m2E8[2] = (s16)(cM_rndF(20.0f) + 20.0f); + + i_this->mMode++; + // Fall-through + } + case 12: + ks_kuttuki_check(i_this); + + if (tyaku_check(i_this)) { + i_this->gravity = -4.0f; + i_this->speed.y = 1.0f; + i_this->speed.y += cM_rndF(5.0f); + i_this->speedF = 16.0f; + } + + if (i_this->m2E8[2] == 0) { + i_this->speedF = 0.0f; + i_this->m31C = 20.0f; + i_this->mAction = 0; + i_this->mMode = 0; + } + break; + } + + cLib_addCalcAngleS2(&i_this->shape_angle.y, i_this->current.angle.y, 1, 0x1000); + + if (body_atari_check(i_this)) { + fopAcM_seStart(i_this, JA_SE_LK_LAST_HIT, 0); + } } /* 00001630-00001874 .text action_kaze_move__FP8ks_class */ -void action_kaze_move(ks_class*) { - /* Nonmatching */ +void action_kaze_move(ks_class* i_this) { + switch (i_this->mMode) { + case 20: { + for (int i = 0; i < 5; i++) { + i_this->m2F0[i] = 0; + } + + i_this->m2E8[1] = 0x32; + + fopAcM_monsSeStart(i_this, JA_SE_CV_KS_BLOW, 0); + + i_this->m310 = i_this->current.pos.y; + + i_this->m30C = 0.0f; + + i_this->speedF = cM_rndF(15.0f) + 10.0f; + i_this->m314 = cM_rndF(15.0f) + 10.0f; + + i_this->m308 = 0.0f; + + i_this->mMode++; + // Fall-through + } + case 21: { + cLib_addCalc2(&i_this->speed.y, i_this->m314, 0.8f, i_this->m308); + + cLib_addCalc2(&i_this->m308, 5.0f, 1.0f, 0.5f); + + if (i_this->m310 + 200.0f < i_this->current.pos.y || i_this->m2E8[1] == 0) { + i_this->mMode++; + } + + break; + } + case 22: { + cLib_addCalc2(&i_this->gravity, -1.0f, 0.3f, 0.5f); + + if (i_this->speed.y < -2.0f) { + i_this->speed.y = -2.0f; + } + + cLib_addCalc0(&i_this->speedF, 0.5f, 2.0f); + + speed_keisan(i_this, i_this->shape_angle.y); + + i_this->m2F0[0] += 3000; + + i_this->m30C = 2.0f; + + if (tyaku_check(i_this)) { + i_this->mAction = 0; + i_this->mMode = 0; + return; + } + break; + } + } + + i_this->shape_angle.z += 0x500; + + if (body_atari_check(i_this)) { + fopAcM_seStart(i_this, JA_SE_LK_LAST_HIT, 0); + } } +static u8 item_tbl[4] = {0xA, 0xB, 0xC, 0xA}; + /* 00001874-00001A14 .text dead_eff_set__FP8ks_classP4cXyz */ -void dead_eff_set(ks_class*, cXyz*) { - /* Nonmatching */ +void dead_eff_set(ks_class* i_this, cXyz* i_pos) { + fopAc_ac_c* a_this = (fopAc_ac_c*)i_this; + u8 drop_type; + if (!strcmp(dComIfGp_getStartStageName(), "GanonK") && (i_this->stealItemBitNo != 0)) { + if (dComIfGs_getLife() <= 8) { + drop_type = daDisItem_HEART_e; + } + else if (cM_rndF(1.0f) < 0.5f) { + if (dComIfGs_getArrowNum() == 0) { + drop_type = daDisItem_ARROW_e; + } + else if (dComIfGs_getMagic() < dComIfGs_getMaxMagic() / 2) { + drop_type = daDisItem_MAGIC_e; + } + else if (dComIfGs_getArrowNum() < 10) { + drop_type = daDisItem_ARROW_e; + } + else { + drop_type = item_tbl[(int)cM_rndF(2.99f)]; + } + } + else { + drop_type = daDisItem_NONE13_e; + } + + fopAcM_createDisappear(i_this, i_pos, 3, drop_type, 0xff); + } + else { + fopAcM_seStart(i_this, JA_SE_CM_KS_DIE, 0); + + dComIfGp_particle_setSimple(dPa_name::ID_SCENE_8068, i_pos); + + gm_birth_delet(i_this); + } + + fopAcM_delete(a_this); } /* 00001A14-00001C5C .text action_dead_move__FP8ks_class */ -void action_dead_move(ks_class*) { - /* Nonmatching */ +void action_dead_move(ks_class* i_this) { + cXyz local_28; + + switch (i_this->mMode) { + case 30: { + for (int i = 0; i < 5; i++) { + i_this->m2F0[i] = 0; + } + + i_this->mSph.OffTgSetBit(); + i_this->mSph.ClrCoSet(); + i_this->mSph.ClrTgHit(); + + fopAcM_monsSeStart(i_this, JA_SE_CV_KS_DAMAGE, 0); + + i_this->speedF = cM_rndF(5.0f) + 15.0f; + i_this->gravity = -3.0f; + i_this->speed.y = cM_rndF(5.0f) + 20.0f; + + i_this->mMode++; + + i_this->m2F0[1] = (s16)cM_rndFX(4096.0f); + + i_this->mSph.OffAtSPrmBit(cCcD_AtSPrm_Set_e); + i_this->mSph.OffAtSPrmBit(cCcD_AtSPrm_Set_e); + // Fall-through + } + case 31: { + i_this->shape_angle.z += i_this->m2F0[1]; + + if (tyaku_check(i_this)) { + i_this->gravity = -3.0f; + i_this->speedF *= 0.5f; + + switch (i_this->m2F0[0]) { + case 0: + i_this->speed.y = 13.0f; + i_this->m2F0[0]++; + break; + case 1: + i_this->speed.y = 7.0f; + i_this->m2F0[0]++; + break; + case 2: + local_28 = i_this->current.pos; + local_28.y += 20.0f; + dead_eff_set(i_this, &local_28); + break; + } + } + break; + } + case 32: { + local_28 = i_this->current.pos; + local_28.y += 45.0f; + dead_eff_set(i_this, &local_28); + break; + } + } } +u32 pl_harituki_joint_dt[20] = { + 0x20, + 0x21, + 0x25, + 0x26, + 0x02, + 0x03, + 0x04, + 0x1E, + 0x29, + 0x1F, + 0x24, + 0x08, + 0x06, + 0x07, + 0x05, + 0x0C, + 0x0A, + 0x0B, + 0x09, + 0x0e, +}; + /* 00001C5C-000026DC .text action_omoi__FP8ks_class */ -void action_omoi(ks_class*) { - /* Nonmatching */ +void action_omoi(ks_class* i_this) { + fopAc_ac_c* a_this = (fopAc_ac_c*)i_this; + cXyz local_1c; + cXyz local_10; + + daPy_py_c* mpCurPlayerActor = (daPy_py_c*)daPy_getPlayerActorClass(); + daPy_lk_c* link = daPy_getPlayerLinkActorClass(); + + if (i_this->m2CE == 1 && HEAVY_IN == TRUE) { + link->onHeavyState(); + } + + switch (i_this->mMode) { + case 40: { + i_this->m52C.remove(); + + a_this->speedF = 0.0f; + a_this->gravity = 0.0f; + a_this->speed.setall(0.0f); + + if (GORON_COUNT != 0 || KUTTUKU_ALL_COUNT >= 0x14) { + i_this->m528 = 0; + + fopAcM_OffStatus(a_this, fopAcStts_UNK4000_e); + + i_this->mMode = 42; + + break; + } + + for (int i = 0; i < 5; i++) { + i_this->m2F0[i] = 0; + } + + if (KUTTUKU_ALL_COUNT >= 0x14) { + i_this->m300 = 0x13; + } + + if (KUTTUKU_ALL_COUNT < 0) { + i_this->m300 = 0; + } + else { + i_this->m300 = KUTTUKU_ALL_COUNT; + } + + i_this->m528 = link->getModelJointMtx(pl_harituki_joint_dt[i_this->m300]); + + if (KUTTUKU_ALL_COUNT == 0) { + GORON_COUNT = 0; + + i_this->m2CE = 1; + } + + KUTTUKU_ALL_COUNT++; + + if (HEAVY_IN == FALSE && KUTTUKU_ALL_COUNT >= 5) { + link->onHeavyState(); + HEAVY_IN = TRUE; + } + + i_this->m2D2 = 0; + + i_this->m2E8[1] = 0; + i_this->m2E8[2] = 0; + + fopAcM_OnStatus(a_this, fopAcStts_UNK4000_e); + + fopAcM_setStageLayer(a_this); + + i_this->mMode++; + // Fall-through + } + case 0x29: { + fopAcM_SetRoomNo(a_this, fopAcM_GetRoomNo(mpCurPlayerActor)); + + if (!(fopAcM_GetID(a_this) & 1)) { + a_this->shape_angle.y += i_this->m2FE * 0.25f; + } + else { + a_this->shape_angle.y -= i_this->m2FE * 0.25f; + } + + if (i_this->m528) { + local_10.x = i_this->m528[0][3]; + local_10.y = i_this->m528[1][3]; + local_10.z = i_this->m528[2][3]; + } + else { + local_10 = mpCurPlayerActor->current.pos; + } + + if (!(local_10.x || local_10.y || local_10.z)) { + local_10 = mpCurPlayerActor->current.pos; + } + + local_1c.x = std::fabsf(mpCurPlayerActor->speed.x * 10.0f); + if (local_1c.x < REG12_F(16) + 10.0f) { + local_1c.x = REG12_F(16) + 10.0f; + } + + local_1c.y = std::fabsf(mpCurPlayerActor->speed.y * 10.0f); + if (local_1c.y < REG12_F(16) + 10.0f) { + local_1c.y = REG12_F(16) + 10.0f; + } + + local_1c.z = std::fabsf(mpCurPlayerActor->speed.z * 10.0f); + if (local_1c.z < REG12_F(16) + 10.0f) { + local_1c.z = REG12_F(16) + 10.0f; + } + + if (std::sqrtf(mpCurPlayerActor->speed.x * mpCurPlayerActor->speed.x + mpCurPlayerActor->speed.y * mpCurPlayerActor->speed.y + mpCurPlayerActor->speed.z * mpCurPlayerActor->speed.z) < REG12_F(17) + 8.0f) { + local_1c.setall(REG12_F(18) + 8.0f); + + f32 x = a_this->current.pos.x - local_10.x; + f32 y = a_this->current.pos.y - local_10.y; + f32 z = a_this->current.pos.z - local_10.z; + + if (std::sqrtf(x * x + y * y + z * z) < 2.0f && i_this->m2E8[1] == 0) { + i_this->m2E8[1] = cM_rndF(10.0f) + 10.0f; + + switch (i_this->m2D2) { + case 0: { + if (i_this->m300 < 0x13) { + i_this->m300++; + } + else { + i_this->m2D2 = 1; + i_this->m300--; + } + break; + } + case 1: { + if (i_this->m300 > 0) { + i_this->m300--; + } + else { + i_this->m2D2 = 0; + i_this->m300++; + } + break; + } + } + + if (i_this->m300 >= 0x14) { + i_this->m300 = 0x13; + } + else if (i_this->m300 < 0) { + i_this->m300 = 1; + } + + i_this->m528 = link->getModelJointMtx(pl_harituki_joint_dt[i_this->m300]); + } + } + + if (dComIfGp_checkPlayerStatus0(0, daPyStts0_UNK800000_e) || dComIfGp_checkPlayerStatus1(0, daPyStts1_UNK10_e)) { + local_1c.setall(100.0f); + } + + cLib_addCalc2(&a_this->current.pos.x, local_10.x, 1.0f, local_1c.x); + cLib_addCalc2(&a_this->current.pos.y, local_10.y, 1.0f, local_1c.y); + cLib_addCalc2(&a_this->current.pos.z, local_10.z, 1.0f, local_1c.z); + + if (link->checkFrontRollCrash() || link->getCutType() == 8 || link->getCutType() == 9 || dComIfGp_checkPlayerStatus0(0, daPyStts0_SWIM_e)) { + i_this->mSph.OnCoSetBit(); + i_this->mSph.OnTgSetBit(); + + if (i_this->m2CE) { + link->offHeavyState(); + HEAVY_IN = FALSE; + + KUTTUKU_ALL_COUNT = 0; + GORON_COUNT = 0; + + i_this->m2F0[0] = 0; + i_this->m2F0[1] = 0; + } + + i_this->mMode = 42; + + return; + } + + if (!link->checkFrontRoll()) { + if (i_this->m2CE == 0) { + return; + } + + if (i_this->m2F0[1]) { + i_this->m2F0[1] = 0; + i_this->m2E8[2] = 0x32; + } + + if (i_this->m2E8[2] != 1) { + return; + } + + if (i_this->m2F0[0] <= 0) { + return; + } + + i_this->m2F0[0] = 0; + + return; + } + + if (i_this->m2CE) { + if (i_this->m2F0[1]) { + return; + } + + switch (i_this->m2F0[0]) { + case 0: + GORON_COUNT = KUTTUKU_ALL_COUNT * 0.25f; + break; + case 1: + GORON_COUNT = KUTTUKU_ALL_COUNT * 0.5f; + break; + case 2: + GORON_COUNT = KUTTUKU_ALL_COUNT; + break; + } + + if (GORON_COUNT == 0) { + GORON_COUNT = 1; + } + i_this->m2F0[0]++; + i_this->m2F0[1] = 1; + + if (i_this->m2F0[0] < 3 && KUTTUKU_ALL_COUNT >= 3) { + return; + } + + i_this->m2CE = 0; + + link->offHeavyState(); + HEAVY_IN = FALSE; + + i_this->m2F0[0] = 0; + i_this->m2F0[1] = 0; + + if (KUTTUKU_ALL_COUNT > 0) { + KUTTUKU_ALL_COUNT--; + } + + GORON_COUNT = KUTTUKU_ALL_COUNT; + + i_this->mMode = 42; + + return; + } + + if (KUTTUKU_ALL_COUNT != 0 && GORON_COUNT > 0) { + GORON_COUNT--; + KUTTUKU_ALL_COUNT--; + + if (HEAVY_IN && KUTTUKU_ALL_COUNT < 5) { + HEAVY_IN = FALSE; + link->offHeavyState(); + } + + i_this->mMode = 42; + } + + break; + } + case 42: { + if (i_this->m528) { + fopAcM_OffStatus(a_this, fopAcStts_UNK4000_e); + + fopAcM_setRoomLayer(a_this, fopAcM_GetRoomNo(a_this)); + + i_this->m528 = 0; + } + + i_this->current.angle.y = fopAcM_searchPlayerAngleY(a_this) + 0x8000; + i_this->current.angle.y += (s16)cM_rndFX(16384.0f); + + i_this->speedF = 15.0f; + i_this->gravity = -3.0f; + i_this->speed.y = 26.0f; + + i_this->mMode++; + // Fall-through + } + case 43: { + if (i_this->mAcch.ChkGroundHit() || i_this->mAcch.ChkWaterIn()) { + i_this->m2E8[2] = (s16)(cM_rndF(40.0f) + 40.0f); + + i_this->mSph.OnCoSetBit(); + i_this->mSph.OnTgSetBit(); + + i_this->mAction = 1; + i_this->mMode = 12; + } + break; + } + } + + if (i_this->mMode == 43 && body_atari_check(i_this) && i_this->m2CE) { + fopAcM_seStart(a_this, JA_SE_LK_LAST_HIT, 0); + i_this->m2CE = 0; + } } /* 000026DC-000027A0 .text tsubo_search__FPvPv */ -void tsubo_search(void*, void*) { - /* Nonmatching */ +BOOL tsubo_search(void* param_1, void* param_2) { + ks_class* i_ks1 = (ks_class*)param_1; + ks_class* i_ks2 = (ks_class*)param_2; + + if (fopAc_IsActor(i_ks1) && (fopAcM_GetName(i_ks1) == 0x1cb) && + std::fabsf(i_ks1->current.pos.x - i_ks2->current.pos.x) < 20.0f && + std::fabsf(i_ks1->current.pos.y - i_ks2->current.pos.y) < 20.0f && + std::fabsf(i_ks1->current.pos.z - i_ks2->current.pos.z) < 20.0f) { + i_ks2->mKsID = fopAcM_GetID(i_ks1); + } + return FALSE; } /* 000027A0-00002A40 .text action_tubo_search__FP8ks_class */ -void action_tubo_search(ks_class*) { - /* Nonmatching */ +void action_tubo_search(ks_class* i_this) { + fopAc_ac_c* a_this = (fopAc_ac_c*)i_this; + switch (i_this->mMode) { + case 50: { + i_this->mKsID = fpcM_ERROR_PROCESS_ID_e; + + fpcEx_Search((fpcLyIt_JudgeFunc)tsubo_search, a_this); + + if (i_this->mKsID == fpcM_ERROR_PROCESS_ID_e) { + fopAcM_delete(a_this); + } + else { + i_this->mMode++; + } + + break; + } + case 51: { + fopAc_ac_c* mpCurrActor = (fopAc_ac_c*)fopAcM_SearchByID(i_this->mKsID); + + if (mpCurrActor) { + a_this->current.pos = mpCurrActor->current.pos; + + if (!i_this->m318) { + return; + } + + if (fopAcM_searchActorDistance(a_this, daPy_getPlayerActorClass()) > i_this->m318) { + return; + } + } + + i_this->m31C = 100.0f; + + i_this->mSph.OffAtNoTgHitInfSet(); + + i_this->mSph.OnAtVsBitSet(cCcD_AtSPrm_VsOther_e); + + i_this->mSph.OffAtVsBitSet(cCcD_AtSPrm_VsPlayer_e); + i_this->mSph.OffAtSPrmBit(cCcD_AtSPrm_NoTgHitInfSet_e); + + i_this->mSph.OnAtSPrmBit(cCcD_AtSPrm_Set_e); + + i_this->mSph.OnAtHitBit(); + + i_this->mSph.SetC(i_this->current.pos); + i_this->mSph.SetR(i_this->m31C); + + dComIfG_Ccsp()->Set(&i_this->mSph); + + i_this->mMode++; + + break; + } + case 52: { + i_this->mSph.SetC(a_this->current.pos); + i_this->mSph.SetR(i_this->m31C); + + dComIfG_Ccsp()->Set(&i_this->mSph); + + if (i_this->m2C9 > 0x15 || i_this->m2C9 == 0) { + i_this->m2C9 = 1; + } + + for (int i = 0; i < i_this->m2C9; i++) { + cXyz local_24 = a_this->current.pos; + local_24.y += cM_rndF(40.0f); + + if (i != 0) { + local_24.x += cM_rndFX(40.0f); + local_24.z += cM_rndFX(40.0f); + } + + a_this->shape_angle = a_this->current.angle; + a_this->shape_angle.x = 0; + + fopAcM_create(PROC_KS, 3, &local_24, fopAcM_GetRoomNo(a_this), &a_this->shape_angle, &a_this->scale, 0); + } + + fopAcM_delete(a_this); + break; + } + } } /* 00002A40-00002BC4 .text action_kb_birth_check__FP8ks_class */ -void action_kb_birth_check(ks_class*) { - /* Nonmatching */ +void action_kb_birth_check(ks_class* i_this) { + switch (i_this->mMode) { + case 60: { + i_this->current.pos.y += REG8_F(13) + 30.0f; + i_this->current.angle.y = cM_rndFX(32767.0f); + + i_this->speedF = REG8_F(8) + 4.0f + cM_rndF(REG8_F(9) + 4.0f); + i_this->speed.y = REG8_F(10) + 20.0f + cM_rndF(REG8_F(11) + 5.0f); + i_this->gravity = -(REG8_F(12) + 2.0f); + + i_this->mMode++; + // Fall-through + } + case 61: { + if (i_this->speed.y <= 0.0f && (i_this->mAcch.ChkGroundHit() || i_this->mAcch.GetGroundH() + (REG8_F(19) + 10.0f) > i_this->current.pos.y )) { + fopAcM_OffStatus(i_this, fopAcStts_UNK4000_e); + + i_this->speedF = 0.0f; + i_this->gravity = 0.0f; + i_this->speed.setall(0.0f); + + i_this->mAction = 0; + i_this->mMode = 0; + } + break; + } + } } /* 00002BC4-00002C54 .text BG_check__FP8ks_class */ -void BG_check(ks_class*) { - /* Nonmatching */ +void BG_check(ks_class* i_this) { + i_this->mAcchCir.SetWall(30.0f, 30.0f); + + i_this->current.pos.y -= i_this->m304; + i_this->old.pos.y -= i_this->m304; + + i_this->mAcch.CrrPos(*dComIfG_Bgsp()); + + i_this->current.pos.y += i_this->m304; + i_this->old.pos.y += i_this->m304; } /* 00002C54-00003054 .text daKS_Execute__FP8ks_class */ -static BOOL daKS_Execute(ks_class*) { - /* Nonmatching */ +static BOOL daKS_Execute(ks_class* i_this) { + if (enemy_ice(&i_this->mEnemyIce)) { + i_this->mpBodyMorf->getModel()->setBaseTRMtx(mDoMtx_stack_c::get()); + i_this->mpEyeMorf->getModel()->setBaseTRMtx(mDoMtx_stack_c::get()); + if (i_this->m2D0 && (i_this->m320++, i_this->m320 > 7.0f)) { + i_this->m320 = 7.0f; + } + return TRUE; + } + + for (int i = 0; i < 4; i++) { + if (i_this->m2E8[i]) { + i_this->m2E8[i]--; + } + } + + if (i_this->mGmID != 0 && i_this->mAction != 3) { + fopAc_ac_c* mpGmActor = fopAcM_SearchByID(i_this->mGmID); + + bool bVar5 = false; + + if (mpGmActor && ((fopAcM_GetParam(mpGmActor) & 0xff0000) == 0xff0000 || (fopAcM_GetParam(mpGmActor) & 0xff0000) == 0)) { + if (fopAcM_GetName(mpGmActor) == PROC_GM) { + if (mpGmActor->health <= 0) { + bVar5 = true; + } + } + else { + bVar5 = true; + } + + if (bVar5) { + if (i_this->mAction != 4) { + i_this->mAction = 3; + i_this->mMode = 30; + } + else { + if (i_this->mMode != 43) { + daPy_py_c* link = (daPy_py_c*)daPy_getPlayerLinkActorClass(); + link->offHeavyState(); + + HEAVY_IN = FALSE; + GORON_COUNT = 0; + + i_this->m2F0[0] = 0; + i_this->m2F0[1] = 0; + + i_this->mMode = 42; + } + } + } + } + } + + switch(i_this->mAction) { + case 0: + action_dousa_move(i_this); + ks_kuttuki_check(i_this); + break; + case 1: + action_kougeki_move(i_this); + break; + case 2: + action_kaze_move(i_this); + break; + case 3: + action_dead_move(i_this); + break; + case 4: + action_omoi(i_this); + break; + case 10: + action_tubo_search(i_this); + break; + case 20: + action_kb_birth_check(i_this); + break; + } + + if (i_this->m2C8 == 6) { + return TRUE; + } + + if (i_this->m302 && (i_this->m302++, i_this->m302 > 7)) { + i_this->m302 = 0; + } + + if (i_this->m2E8[0] == 0) { + i_this->m2E8[0] = cM_rndFX(25.0f) + 50.0f; + + i_this->m302 = 1; + } + + cMtx_YrotS(*calc_mtx, i_this->current.angle.y); + + cXyz local_18; + local_18.x = 0.0f; + local_18.y = 0.0f; + local_18.z = i_this->speedF; + + cXyz local_c; + MtxPosition(&local_18, &local_c); + + i_this->speed.x = local_c.x; + i_this->speed.z = local_c.z; + + if (i_this->mMode != 41 && !i_this->mAcch.ChkGroundHit() && !i_this->mAcch.ChkWaterIn()) { + i_this->speed.y += i_this->gravity; + + if (i_this->speed.y < -20.0f) { + i_this->speed.y = -20.0f; + } + } + + i_this->eyePos = i_this->current.pos; + + i_this->attention_info.position = i_this->eyePos; + + i_this->mSph.SetC(i_this->current.pos); + i_this->mSph.SetR(i_this->m31C); + + dComIfG_Ccsp()->Set(&i_this->mSph); + + if (i_this->mSph.ChkCoSet() && (i_this->mAction == 0 || i_this->mAction == 2)) { + fopAcM_posMove(i_this, i_this->mStts.GetCCMoveP()); + } + else { + fopAcM_posMove(i_this, NULL); + } + + if (i_this->mMode != 41) { + BG_check(i_this); + naraku_check(i_this); + } + + draw_SUB(i_this); + + i_this->m2CD = 1; + + return TRUE; } /* 00003054-0000305C .text daKS_IsDelete__FP8ks_class */ -static BOOL daKS_IsDelete(ks_class*) { - /* Nonmatching */ +static BOOL daKS_IsDelete(ks_class* i_this) { + return TRUE; } /* 0000305C-000030F4 .text daKS_Delete__FP8ks_class */ -static BOOL daKS_Delete(ks_class*) { - /* Nonmatching */ +static BOOL daKS_Delete(ks_class* i_this) { + dComIfG_resDelete(&i_this->mPhs, "KS"); + + i_this->m52C.remove(); + + enemy_fire_remove(&i_this->mEnemyFire); + + KS_ALL_COUNT--; + if (KS_ALL_COUNT == 0) { + daPy_lk_c* link = daPy_getPlayerLinkActorClass(); + link->offHeavyState(); + + KUTTUKU_ALL_COUNT = 0; + HEAVY_IN = FALSE; + GORON_COUNT = 0; + } + + return TRUE; } /* 000030F4-000034B0 .text useHeapInit__FP10fopAc_ac_c */ -static BOOL useHeapInit(fopAc_ac_c*) { - /* Nonmatching */ +static BOOL useHeapInit(fopAc_ac_c* i_act) { + J3DModel* mpBodyModel; + J3DModel* mpEyeModel; + + ks_class* i_this = (ks_class*)i_act; + + i_this->mpBodyMorf = new mDoExt_McaMorf((J3DModelData *)dComIfG_getObjectRes("KS", KS_BDL_KS_BODY), NULL, NULL, NULL, + J3DFrameCtrl::EMode_LOOP, 1.0f, 0, -1, 0, NULL, 0, 0x11020203); + if (i_this->mpBodyMorf == NULL || i_this->mpBodyMorf->getModel() == NULL) + return FALSE; + mpBodyModel = i_this->mpBodyMorf->getModel(); + + i_this->mpBodyBrkAnm = new mDoExt_brkAnm(); + if (i_this->mpBodyBrkAnm == NULL) + return FALSE; + + if (i_this->mpBodyBrkAnm->init(mpBodyModel->getModelData(), (J3DAnmTevRegKey *)dComIfG_getObjectRes("KS", KS_BRK_KS_BODY), TRUE, J3DFrameCtrl::EMode_NONE, 1.0f, 0, -1, FALSE, 0) == 0) + return FALSE; + + + i_this->mpEyeMorf = new mDoExt_McaMorf((J3DModelData *)dComIfG_getObjectRes("KS", KS_BDL_KS_EYE), NULL, NULL, + (J3DAnmTransformKey *)dComIfG_getObjectRes("KS", KS_BCK_MABATAKI), + J3DFrameCtrl::EMode_NONE, 1.0f, 0, -1, 1, NULL, 0, 0x11020203); + + if (i_this->mpEyeMorf == NULL || i_this->mpEyeMorf->getModel() == NULL) + return FALSE; + mpEyeModel = i_this->mpEyeMorf->getModel(); + + i_this->mpEyeBtkAnm = new mDoExt_btkAnm(); + if (i_this->mpEyeBtkAnm == NULL) + return FALSE; + + if (i_this->mpEyeBtkAnm->init(mpEyeModel->getModelData(), (J3DAnmTextureSRTKey *)dComIfG_getObjectRes("KS", KS_BTK_KS_EYE), TRUE, J3DFrameCtrl::EMode_NONE, 1.0f, 0, -1, FALSE, 0) == 0) + return FALSE; + + i_this->mpEyeBrkAnm = new mDoExt_brkAnm(); + if (i_this->mpEyeBrkAnm == NULL) + return FALSE; + + if (i_this->mpEyeBrkAnm->init(mpEyeModel->getModelData(), (J3DAnmTevRegKey *)dComIfG_getObjectRes("KS", KS_BRK_KS_EYE), TRUE, J3DFrameCtrl::EMode_NONE, 1.0f, 0, -1, FALSE, 0) == 0) { + return FALSE; + } + return TRUE; } +static dCcD_SrcSph body_co_sph_src = { + // dCcD_SrcGObjInf + { + /* Flags */ 0, + /* SrcObjAt Type */ AT_TYPE_STALFOS_MACE, + /* SrcObjAt Atp */ 0, + /* SrcObjAt SPrm */ cCcD_AtSPrm_Set_e | cCcD_AtSPrm_VsPlayer_e | cCcD_AtSPrm_NoTgHitInfSet_e, + /* SrcObjTg Type */ ~(AT_TYPE_WATER | AT_TYPE_UNK20000 | AT_TYPE_UNK400000 | AT_TYPE_LIGHT), + /* SrcObjTg SPrm */ cCcD_TgSPrm_Set_e | cCcD_TgSPrm_IsEnemy_e, + /* SrcObjCo SPrm */ cCcD_CoSPrm_Set_e | cCcD_CoSPrm_IsPlayer_e | cCcD_CoSPrm_VsPlayer_e | cCcD_CoSPrm_VsOther_e, + /* SrcGObjAt Se */ dCcG_SE_UNK6, + /* SrcGObjAt HitMark */ 0, + /* SrcGObjAt Spl */ 0, + /* SrcGObjAt Mtrl */ 0, + /* SrcGObjAt SPrm */ 0, + /* SrcGObjTg Se */ 0, + /* SrcGObjTg HitMark */ 0, + /* SrcGObjTg Spl */ 0, + /* SrcGObjTg Mtrl */ 0, + /* SrcGObjTg SPrm */ dCcG_TgSPrm_NoConHit_e | dCcG_TgSPrm_NoHitMark_e, + /* SrcGObjCo SPrm */ 0, + }, + // cM3dGSphS + { + /* Center */ 0.0f, 0.0f, 0.0f, + /* Radius */ 15.0f, + }, +}; + +static s8 fire_j[10] = { + 0, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + +}; + +static f32 fire_sc[10] = { + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, +}; + /* 000034F8-00003A94 .text daKS_Create__FP10fopAc_ac_c */ -static cPhs_State daKS_Create(fopAc_ac_c*) { - /* Nonmatching */ +static cPhs_State daKS_Create(fopAc_ac_c* i_this) { + fopAcM_SetupActor(i_this, ks_class); + ks_class* a_this = (ks_class*)i_this; + + cPhs_State res; + u32 parameters; + res = dComIfG_resLoad(&a_this->mPhs, "KS"); + if (res == cPhs_COMPLEATE_e) { + if (!fopAcM_entrySolidHeap(i_this, useHeapInit, 0x1060)) { + return cPhs_ERROR_e; + } + + a_this->m2C8 = fopAcM_GetParam(i_this); + a_this->m2C9 = fopAcM_GetParam(i_this) >> 8; + a_this->m2CA = fopAcM_GetParam(i_this) >> 0x10; + + if (a_this->m2C8 == 0xff) { + a_this->m2C8 = 0; + } + + if (a_this->m2C8 <= 1 && (a_this->m2C9 > 0x15 || a_this->m2C9 == 0)) { + a_this->m2C9 = 1; + } + + if (a_this->m2CA == 0xff) { + a_this->m2CA = 0; + } + + a_this->m318 = a_this->m2CA * 10.0f; + + if (a_this->m2C8 <= 1) { + parameters = 2; + if (a_this->m2C8 == 0) { + parameters = 3; + } + + for (int i = 0; i < a_this->m2C9; i++) { + cXyz local_4c = i_this->current.pos; + if (i != 0) { + if (i_this->current.angle.x != 0) { + local_4c.y += cM_rndFX(120.0f); + f32 ground_y = a_this->mAcch.GetGroundH(); + if (local_4c.y < ground_y) { + local_4c.y = ground_y + cM_rndF(120.0f); + } + } + else { + local_4c.x += cM_rndFX(40.0f); + local_4c.z += cM_rndFX(40.0f); + } + } + i_this->shape_angle = i_this->current.angle; + i_this->shape_angle.x = 0; + + fopAcM_create(PROC_KS, parameters, &local_4c, fopAcM_GetRoomNo(i_this), &i_this->shape_angle, &i_this->scale, 0); + } + + return cPhs_ERROR_e; + } + + if (KS_ALL_COUNT == 0) { + KUTTUKU_ALL_COUNT = 0; + HEAVY_IN = FALSE; + GORON_COUNT = 0; + } + + KS_ALL_COUNT++; + + fopAcM_SetMtx(i_this, a_this->mpBodyMorf->getModel()->getBaseTRMtx()); + + fopAcM_setCullSizeBox(i_this, -20.0f, -20.0f, -20.0f, 20.0f, 20.0f, 20.0f); + + i_this->attention_info.flags = 0; + + a_this->mAcch.Set(&i_this->current.pos, &i_this->old.pos, i_this, 1, &a_this->mAcchCir, &i_this->speed, NULL, NULL); + + a_this->mStts.Init(2, 1, i_this); + + i_this->max_health = 1; + i_this->health = 1; + + a_this->m304 = 25.0f; + + a_this->m2E8[0] = cM_rndFX(25.0f) + 50.0f; + + a_this->m2DC.setall(1.0f); + + a_this->m2FE = (fopAcM_GetID(i_this) & 7) * 0x32 + 1000; + + a_this->mSph.Set(body_co_sph_src); + a_this->mSph.SetStts(&a_this->mStts); + + a_this->mEnemyIce.mpActor = i_this; + a_this->mEnemyIce.mWallRadius = 20.0f; + a_this->mEnemyIce.mCylHeight = 20.0f; + a_this->mEnemyIce.m1B0 = 1; + + a_this->mEnemyFire.mpMcaMorf = a_this->mpBodyMorf; + a_this->mEnemyFire.mpActor = i_this; + + for (int i = 0; i < 10; i++) { + a_this->mEnemyFire.mFlameJntIdxs[i] = fire_j[i]; + a_this->mEnemyFire.mParticleScale[i] = fire_sc[i]; + } + + i_this->itemTableIdx = dComIfGp_CharTbl()->GetNameIndex("kuro_s", 0); + + if (a_this->m2C8 == 4 || a_this->m2C8 == 5) { + a_this->mGmID = fopAcM_GetLinkId(i_this); + if (a_this->mGmID == fpcM_ERROR_PROCESS_ID_e) { + return cPhs_ERROR_e; + } + + fopAc_ac_c* i_act = fopAcM_SearchByID(a_this->mGmID); + if (i_act && fopAc_IsActor(i_act) && fopAcM_GetName(i_act) == PROC_GM && a_this->m2C8 == 5) { + i_this->current.angle.y += cM_rndFX(8192.0f); + i_this->speedF = cM_rndF(6.0f) + 34.0f; + i_this->speed.y = cM_rndF(8.0f) + 22.0f; + } + } + + a_this->m31C = 20.0f; + + if (a_this->m2C8 == 6) { + a_this->mSph.OffTgSetBit(); + a_this->mSph.OffCoSetBit(); + a_this->mSph.ClrTgHit(); + + a_this->mAction = 10; + a_this->mMode = 50; + + return res; + } + + if (a_this->m2C8 == 7) { + fopAcM_OnStatus(i_this, fopAcStts_UNK4000_e); + + a_this->mAction = 20; + a_this->mMode = 60; + + return res; + } + + if (a_this->m2C8 == 2) { + a_this->mAction = 0; + a_this->mMode = 3; + + fopAcM_SetGravity(i_this, -3.0f); + + BG_check(a_this); + + if (!a_this->mAcch.ChkGroundHit()) { + i_this->gravity = 0.0f; + } + + } + } + + return res; } static actor_method_class l_daKS_Method = { diff --git a/src/d/actor/d_a_kt.cpp b/src/d/actor/d_a_kt.cpp index 350145177..d0c1608f8 100644 --- a/src/d/actor/d_a_kt.cpp +++ b/src/d/actor/d_a_kt.cpp @@ -74,20 +74,20 @@ void kotori_move(kt_class* i_this) { s16* r17; s16* r16; - switch (i_this->mState) { + switch (i_this->mMode) { case 0: i_this->mSpeedFwd = kt_scale * 20.0f + 30.0f; if (CPad_CHECK_TRIG_LEFT(0) && fopAcM_GetParam(i_this) == 1000) { i_this->mTargetPos.x = player->current.pos.x; i_this->mTargetPos.y = player->current.pos.y + 500.0f; i_this->mTargetPos.z = player->current.pos.z; - i_this->mState = 2; + i_this->mMode = 2; i_this->mSpeedLerp = 0.0f; break; } if (i_this->mTimer[2] == 0) { - i_this->mState = 1; + i_this->mMode = 1; offs.x = 0.0f; offs.y = 0.0f; offs.z = REG0_F(13) * 100.0f + 3000.0f; @@ -117,7 +117,7 @@ void kotori_move(kt_class* i_this) { case 1: dist = std::sqrtf(vx*vx + vy*vy + vz*vz); if (dist < REG0_F(1) * 10.0f + 800.0f) { - i_this->mState = 8; + i_this->mMode = 8; } cLib_addCalc2(&i_this->mSpeedLerp, 3.0f, 1.0f, 0.1f); calc_012: @@ -153,7 +153,7 @@ calc_012: cLib_addCalc2(&*r26, i_this->mGroundY, REG0_F(6) + 0.3f, REG0_F(7) + 20.0f); if (std::fabsf(*r26 - i_this->mGroundY) < 1.0f) { *r26 = i_this->mGroundY; - i_this->mState = 10; + i_this->mMode = 10; } dispWing = true; ret = 1; @@ -163,7 +163,7 @@ calc_012: i_this->mTargetPos.y += 200.0f; dist = std::sqrtf(vx*vx + vy*vy + vz*vz); if (dist < REG0_F(1) * 10.0f + 800.0f) { - i_this->mState = 9; + i_this->mMode = 9; } cLib_addCalc2(&i_this->mSpeedLerp, 3.0f, 1.0f, 0.1f); goto calc_012; @@ -184,7 +184,7 @@ calc_012: *r27 += pt.z; cLib_addCalc2(&*r26, i_this->mTargetPos.y, REG0_F(6) + 0.5f, REG0_F(7) + 20.0f); if (std::fabsf(*r26 - i_this->mTargetPos.y) < 1.0f) { - i_this->mState = 20; + i_this->mMode = 20; i_this->mSpeedLerp = 0.0f; } dispWing = true; @@ -200,7 +200,7 @@ calc_012: if (std::fabsf(*r26 - i_this->mTargetPos.y) > 1.0f) dispWing = true; if (CPad_CHECK_TRIG_LEFT(0)) { - i_this->mState = 0; + i_this->mMode = 0; i_this->mTimer[0] = 0; i_this->mLiftYTimer = cM_rndFX(10.0f) + 10.0f; i_this->mTargetPosHome.y += 2000.0f; @@ -219,7 +219,7 @@ calc_012: cLib_addCalcAngleS2(&i_this->current.angle.y, angleX, 10, (s16)(REG0_F(10) * 10.0f + 500.0f)); if (i_this->mTimer[1] == 0 && i_this->mLiftY <= 0.0f) { i_this->mTimer[1] = 20.0f + cM_rndF(20.0f); - i_this->mState = 11; + i_this->mMode = 11; } offs.x = 0.0f; offs.y = 0.0f; @@ -240,14 +240,14 @@ calc_012: } if (i_this->mTimer[1] == 0) { i_this->mTimer[1] = 20.0f + cM_rndF(50.0f); - i_this->mState = 10; + i_this->mMode = 10; i_this->mTargetPos.x = i_this->mTargetPosHome.x + cM_rndFX(1000.0f); i_this->mTargetPos.z = i_this->mTargetPosHome.z + cM_rndFX(1000.0f); } calc_11: *r26 -= 5.0f; if (!i_this->mHitGround || dist_xz < (REG0_F(15) * 100.0f + 1500.0f)) { - i_this->mState = 0; + i_this->mMode = 0; i_this->mTimer[0] = 0; i_this->mLiftYTimer = 10.0f + cM_rndFX(10.0f); i_this->mTargetPosHome.y += 2000.0f; @@ -258,7 +258,7 @@ calc_11: } i_this->mHitGround = false; - if (i_this->mState >= 8) { + if (i_this->mMode >= 8) { Vec pos; pos.x = *r28; pos.y = *r26; diff --git a/src/d/actor/d_a_kytag00.cpp b/src/d/actor/d_a_kytag00.cpp index 2cdec50ff..8703a4363 100644 --- a/src/d/actor/d_a_kytag00.cpp +++ b/src/d/actor/d_a_kytag00.cpp @@ -151,9 +151,8 @@ void raincnt_set(f32 count) { s32 newCount = 0; if (dKy_checkEventNightStop()) { - s32 newCount2; - if (g_env_light.mRainCount < (newCount2 = (count * count * count) * 250.0f)) - newCount = newCount2; + if (g_env_light.mRainCount < (s32)((count * count * count) * 250.0f)) + newCount = (count * count * count) * 250.0f; } else { newCount = (count * count * count) * 250.0f; } diff --git a/src/d/actor/d_a_leaflift.cpp b/src/d/actor/d_a_leaflift.cpp index 707755006..5a09029dd 100644 --- a/src/d/actor/d_a_leaflift.cpp +++ b/src/d/actor/d_a_leaflift.cpp @@ -240,8 +240,11 @@ bool daLlift_c::_execute() { cXyz adjustedPosition; float distXZ = fopAcM_searchActorDistanceXZ(this, dComIfGp_getPlayer(0)); mActorLifetimeFrameCount++; - if ((m43F) && (m43F--, !m43F)) { - m43E = TRUE; + if (m43F > 0) { + m43F--; + if (m43F == 0) { + m43E = TRUE; + } } if ((!m43C) && (m43E)) { mTargetRotation = ZeroQuat; diff --git a/src/d/actor/d_a_mo2.cpp b/src/d/actor/d_a_mo2.cpp index e39d1e41d..0cc8cec53 100644 --- a/src/d/actor/d_a_mo2.cpp +++ b/src/d/actor/d_a_mo2.cpp @@ -1,7 +1,7 @@ -// -// Generated by dtk -// Translation Unit: d_a_mo2.cpp -// +/** + * d_a_mo2.cpp + * Enemy - Moblin + */ #include "d/actor/d_a_mo2.h" #include "d/d_procname.h" diff --git a/src/d/actor/d_a_npc_bs1.cpp b/src/d/actor/d_a_npc_bs1.cpp index 80c5ba201..133910b97 100644 --- a/src/d/actor/d_a_npc_bs1.cpp +++ b/src/d/actor/d_a_npc_bs1.cpp @@ -980,206 +980,204 @@ u32 daNpc_Bs1_c::getMsg() { msgNo = m740; m740 = 0; } - else { - if(dComIfGp_event_chkTalkXY()) { - u8 itemNo = dComIfGp_event_getPreItemNo(); + else if(dComIfGp_event_chkTalkXY()) { + u8 itemNo = dComIfGp_event_getPreItemNo(); - if(mType == 0) { - if(isEmono(itemNo)) { - m840 = itemNo; - switch(itemNo) { - case dItem_BOKOBABA_SEED_e: - msgNo = 0xF78; + if(mType == 0) { + if(isEmono(itemNo)) { + m840 = itemNo; + switch(itemNo) { + case dItem_BOKOBABA_SEED_e: + msgNo = 0xF78; + break; + case dItem_SKULL_NECKLACE_e: + msgNo = 0xF80; + break; + case dItem_RED_JELLY_e: + msgNo = 0xF85; + break; + case dItem_GREEN_JELLY_e: + msgNo = 0xF8A; + break; + case dItem_BLUE_JELLY_e: + msgNo = 0xF8F; + break; + case dItem_JOY_PENDANT_e: + msgNo = 0xF94; + break; + case dItem_GOLDEN_FEATHER_e: + msgNo = 0xF99; + break; + default: + if(dComIfGs_getEventReg(0x7F0F) < 10) { + msgNo = 0xF9E; break; - case dItem_SKULL_NECKLACE_e: - msgNo = 0xF80; - break; - case dItem_RED_JELLY_e: - msgNo = 0xF85; - break; - case dItem_GREEN_JELLY_e: - msgNo = 0xF8A; - break; - case dItem_BLUE_JELLY_e: - msgNo = 0xF8F; - break; - case dItem_JOY_PENDANT_e: - msgNo = 0xF94; - break; - case dItem_GOLDEN_FEATHER_e: - msgNo = 0xF99; - break; - default: - if(dComIfGs_getEventReg(0x7F0F) < 10) { - msgNo = 0xF9E; - break; - } + } - msgNo = 0xFD4; - break; - } - } - else if(itemNo == KAISEN_PRESENT1) { - msgNo = 0xF6F; - } - else if(itemNo == KAISEN_PRESENT2) { - msgNo = 0xF73; - } - else { - msgNo = 0xF75; + msgNo = 0xFD4; + break; } } - else if(itemNo == KAISEN_PRESENT1 || itemNo == KAISEN_PRESENT2) { - msgNo = 0x2F56; + else if(itemNo == KAISEN_PRESENT1) { + msgNo = 0xF6F; } - else if(isEmono(itemNo)) { - msgNo = 0x2F79; + else if(itemNo == KAISEN_PRESENT2) { + msgNo = 0xF73; } else { - msgNo = 0x2F57; + msgNo = 0xF75; } } - else if(mType == 0) { - u8 points = dComIfGs_getEventReg(0x86FF); - if(mShopItems.isSoldOutItemAll()) { - msgNo = 0xF3D; - } - else if(dComIfGs_checkGetItem(dItem_BOMB_BAG_e) && !dComIfGs_isEventBit(0x1F20) && isSellBomb()) { - dComIfGs_onEventBit(0x1F20); - m837 = 1; - msgNo = 0xF55; - } - else if(m837) { - msgNo = 0xF58; - } - else if(points >= 60) { - if(m836) { - msgNo = 0xF5D; - } - else { - msgNo = 0xF5C; - m836 = 1; - } - } - else if(points != 0) { - if(m836) { - msgNo = 0xF5B; - } - else { - msgNo = 0xF5A; - m836 = 1; - } - } - else if(m836) { - msgNo = 0xF41; - } - else { - m836 = 1; - msgNo = 0xF3D; - } + else if(itemNo == KAISEN_PRESENT1 || itemNo == KAISEN_PRESENT2) { + msgNo = 0x2F56; } - else if(mShopItems.isSoldOutItemAll()) { - msgNo = 0x2F62; + else if(isEmono(itemNo)) { + msgNo = 0x2F79; + } + else { + msgNo = 0x2F57; + } + } + else if(mType == 0) { + u8 points = dComIfGs_getEventReg(0x86FF); + if(mShopItems.isSoldOutItemAll()) { + msgNo = 0xF3D; } else if(dComIfGs_checkGetItem(dItem_BOMB_BAG_e) && !dComIfGs_isEventBit(0x1F20) && isSellBomb()) { dComIfGs_onEventBit(0x1F20); m837 = 1; - msgNo = 0x2F64; + msgNo = 0xF55; } else if(m837) { - msgNo = 0x2F67; + msgNo = 0xF58; } - else if(dComIfGs_isEventBit(0x1F08)) { - if(dComIfGs_isEventBit(0x2040)) { - if(m838 == 1) { - msgNo = 0x2F60; - } - else { - msgNo = 0x2F61; - } + else if(points >= 60) { + if(m836) { + msgNo = 0xF5D; } else { - dComIfGs_onEventBit(0x2040); - msgNo = 0x2F5F; - m838 = 1; + msgNo = 0xF5C; + m836 = 1; + } + } + else if(points != 0) { + if(m836) { + msgNo = 0xF5B; + } + else { + msgNo = 0xF5A; + m836 = 1; + } + } + else if(m836) { + msgNo = 0xF41; + } + else { + m836 = 1; + msgNo = 0xF3D; + } + } + else if(mShopItems.isSoldOutItemAll()) { + msgNo = 0x2F62; + } + else if(dComIfGs_checkGetItem(dItem_BOMB_BAG_e) && !dComIfGs_isEventBit(0x1F20) && isSellBomb()) { + dComIfGs_onEventBit(0x1F20); + m837 = 1; + msgNo = 0x2F64; + } + else if(m837) { + msgNo = 0x2F67; + } + else if(dComIfGs_isEventBit(0x1F08)) { + if(dComIfGs_isEventBit(0x2040)) { + if(m838 == 1) { + msgNo = 0x2F60; + } + else { + msgNo = 0x2F61; } } else { - switch(dComIfGs_getEventReg(0xBB07)) { - case 0: - if(m836 || dComIfGs_isEventBit(0x1F10)) { - msgNo = 0x2F46; - break; - } - - dComIfGs_onEventBit(0x1F10); - msgNo = 0x2F45; - break; - case 1: - if(m836) { - msgNo = 0x2F46; - break; - } - - msgNo = 0x2F58; - break; - case 2: - if(m836) { - msgNo = 0x2F46; - break; - } - - msgNo = 0x2F59; - break; - case 3: - if(m836) { - msgNo = 0x2F46; - break; - } - - msgNo = 0x2F5A; - break; - case 4: - if(m836) { - msgNo = 0x2F46; - break; - } - - msgNo = 0x2F5B; - break; - case 5: - if(m836) { - msgNo = 0x2F46; - break; - } - - msgNo = 0x2F5C; - break; - case 6: - if(m836) { - msgNo = 0x2F69; - break; - } - - msgNo = 0x2F5D; - break; - case 7: - if(m836) { - msgNo = 0x2F6A; - break; - } - - msgNo = 0x2F5E; - break; - } - - if(dComIfGs_isEventBit(0x1F10)) { - dComIfGs_onEventBit(0x1F10); - } - - m836 = 1; + dComIfGs_onEventBit(0x2040); + msgNo = 0x2F5F; + m838 = 1; } } + else { + switch(dComIfGs_getEventReg(0xBB07)) { + case 0: + if(m836 || dComIfGs_isEventBit(0x1F10)) { + msgNo = 0x2F46; + break; + } + + dComIfGs_onEventBit(0x1F10); + msgNo = 0x2F45; + break; + case 1: + if(m836) { + msgNo = 0x2F46; + break; + } + + msgNo = 0x2F58; + break; + case 2: + if(m836) { + msgNo = 0x2F46; + break; + } + + msgNo = 0x2F59; + break; + case 3: + if(m836) { + msgNo = 0x2F46; + break; + } + + msgNo = 0x2F5A; + break; + case 4: + if(m836) { + msgNo = 0x2F46; + break; + } + + msgNo = 0x2F5B; + break; + case 5: + if(m836) { + msgNo = 0x2F46; + break; + } + + msgNo = 0x2F5C; + break; + case 6: + if(m836) { + msgNo = 0x2F69; + break; + } + + msgNo = 0x2F5D; + break; + case 7: + if(m836) { + msgNo = 0x2F6A; + break; + } + + msgNo = 0x2F5E; + break; + } + + if(dComIfGs_isEventBit(0x1F10)) { + dComIfGs_onEventBit(0x1F10); + } + + m836 = 1; + } return msgNo; } diff --git a/src/d/actor/d_a_npc_ji1.cpp b/src/d/actor/d_a_npc_ji1.cpp index 10b9f223e..7ebed8b0a 100644 --- a/src/d/actor/d_a_npc_ji1.cpp +++ b/src/d/actor/d_a_npc_ji1.cpp @@ -1,7 +1,7 @@ -// -// Generated by dtk -// Translation Unit: d_a_npc_ji1.cpp -// +/** + * d_a_npc_ji1.cpp + * NPC - Orca + */ #include "d/actor/d_a_npc_ji1.h" #include "d/actor/d_a_player.h" @@ -2853,151 +2853,151 @@ BOOL daNpc_Ji1_c::setAnm(int param_1, f32 param_2, int param_3) { fopAcM_seStart(this, JA_SE_CM_JI_DEFENSE, 0); } - J3DAnmTransform* temp1; - s32 temp2; + J3DAnmTransform* bckAnm; + s32 loopMode; void* pSoundAnimRes; switch(param_1) { case 0: - temp1 = static_cast(dComIfG_getObjectRes("Ji", JI_BCK_JI_WAIT01)); - temp2 = 2; + bckAnm = static_cast(dComIfG_getObjectRes("Ji", JI_BCK_JI_WAIT01)); + loopMode = J3DFrameCtrl::EMode_LOOP; pSoundAnimRes = dComIfG_getObjectRes("Ji", JI_BAS_JI_WAIT01); break; case 1: - temp1 = static_cast(dComIfG_getObjectRes("Ji", JI_BCK_JI_WAIT02)); - temp2 = 2; + bckAnm = static_cast(dComIfG_getObjectRes("Ji", JI_BCK_JI_WAIT02)); + loopMode = J3DFrameCtrl::EMode_LOOP; pSoundAnimRes = dComIfG_getObjectRes("Ji", JI_BAS_JI_WAIT02); break; case 2: - temp1 = static_cast(dComIfG_getObjectRes("Ji", JI_BCK_JI_TALK01)); - temp2 = 2; + bckAnm = static_cast(dComIfG_getObjectRes("Ji", JI_BCK_JI_TALK01)); + loopMode = J3DFrameCtrl::EMode_LOOP; pSoundAnimRes = dComIfG_getObjectRes("Ji", JI_BAS_JI_TALK01); break; case 3: - temp1 = static_cast(dComIfG_getObjectRes("Ji", JI_BCK_JI_TALK02)); - temp2 = 2; + bckAnm = static_cast(dComIfG_getObjectRes("Ji", JI_BCK_JI_TALK02)); + loopMode = J3DFrameCtrl::EMode_LOOP; pSoundAnimRes = dComIfG_getObjectRes("Ji", JI_BAS_JI_TALK02); break; case 4: - temp1 = static_cast(dComIfG_getObjectRes("Ji", JI_BCK_JI_AKIRE)); - temp2 = 2; + bckAnm = static_cast(dComIfG_getObjectRes("Ji", JI_BCK_JI_AKIRE)); + loopMode = J3DFrameCtrl::EMode_LOOP; pSoundAnimRes = dComIfG_getObjectRes("Ji", JI_BAS_JI_AKIRE); break; case 5: - temp1 = static_cast(dComIfG_getObjectRes("Ji", JI_BCK_JI_KAMAE)); - temp2 = 2; + bckAnm = static_cast(dComIfG_getObjectRes("Ji", JI_BCK_JI_KAMAE)); + loopMode = J3DFrameCtrl::EMode_LOOP; pSoundAnimRes = dComIfG_getObjectRes("Ji", JI_BAS_JI_KAMAE); break; case 6: - temp1 = static_cast(dComIfG_getObjectRes("Ji", JI_BCK_JI_KROT)); - temp2 = 2; + bckAnm = static_cast(dComIfG_getObjectRes("Ji", JI_BCK_JI_KROT)); + loopMode = J3DFrameCtrl::EMode_LOOP; pSoundAnimRes = dComIfG_getObjectRes("Ji", JI_BAS_JI_KROT); speed = l_HIO.field_0x48; break; case 7: - temp1 = static_cast(dComIfG_getObjectRes("Ji", JI_BCK_JI_INASI)); - temp2 = 0; + bckAnm = static_cast(dComIfG_getObjectRes("Ji", JI_BCK_JI_INASI)); + loopMode = J3DFrameCtrl::EMode_NONE; pSoundAnimRes = dComIfG_getObjectRes("Ji", JI_BAS_JI_INASI); speed = l_HIO.field_0x44; break; case 8: - temp1 = static_cast(dComIfG_getObjectRes("Ji", JI_BCK_JI_TATEGUARD)); - temp2 = 0; + bckAnm = static_cast(dComIfG_getObjectRes("Ji", JI_BCK_JI_TATEGUARD)); + loopMode = J3DFrameCtrl::EMode_NONE; pSoundAnimRes = dComIfG_getObjectRes("Ji", JI_BAS_JI_TATEGUARD); break; case 9: - temp1 = static_cast(dComIfG_getObjectRes("Ji", JI_BCK_JI_YKGUARD)); - temp2 = 0; + bckAnm = static_cast(dComIfG_getObjectRes("Ji", JI_BCK_JI_YKGUARD)); + loopMode = J3DFrameCtrl::EMode_NONE; pSoundAnimRes = dComIfG_getObjectRes("Ji", JI_BAS_JI_YKGUARD); break; case 10: - temp1 = static_cast(dComIfG_getObjectRes("Ji", JI_BCK_JI_JPGUARD)); - temp2 = 0; + bckAnm = static_cast(dComIfG_getObjectRes("Ji", JI_BCK_JI_JPGUARD)); + loopMode = J3DFrameCtrl::EMode_NONE; pSoundAnimRes = dComIfG_getObjectRes("Ji", JI_BAS_JI_JPGUARD); break; case 11: - temp1 = static_cast(dComIfG_getObjectRes("Ji", JI_BCK_JI_TOKAMAE)); - temp2 = 0; + bckAnm = static_cast(dComIfG_getObjectRes("Ji", JI_BCK_JI_TOKAMAE)); + loopMode = J3DFrameCtrl::EMode_NONE; pSoundAnimRes = dComIfG_getObjectRes("Ji", JI_BAS_JI_TOKAMAE); break; case 12: - temp1 = static_cast(dComIfG_getObjectRes("Ji", JI_BCK_JI_REI)); - temp2 = 0; + bckAnm = static_cast(dComIfG_getObjectRes("Ji", JI_BCK_JI_REI)); + loopMode = J3DFrameCtrl::EMode_NONE; pSoundAnimRes = dComIfG_getObjectRes("Ji", JI_BAS_JI_REI); break; case 13: - temp1 = static_cast(dComIfG_getObjectRes("Ji", JI_BCK_JI_WARAI)); - temp2 = 2; + bckAnm = static_cast(dComIfG_getObjectRes("Ji", JI_BCK_JI_WARAI)); + loopMode = J3DFrameCtrl::EMode_LOOP; pSoundAnimRes = dComIfG_getObjectRes("Ji", JI_BAS_JI_WARAI); speed = l_HIO.field_0x4C; break; case 14: - temp1 = static_cast(dComIfG_getObjectRes("Ji", JI_BCK_JI_JPGUARD)); - temp2 = 0; + bckAnm = static_cast(dComIfG_getObjectRes("Ji", JI_BCK_JI_JPGUARD)); + loopMode = J3DFrameCtrl::EMode_NONE; pSoundAnimRes = dComIfG_getObjectRes("Ji", JI_BAS_JI_JPGUARD); speed = 2.0f; break; case 15: - temp1 = static_cast(dComIfG_getObjectRes("Ji", JI_BCK_JI_GUARD)); - temp2 = 2; + bckAnm = static_cast(dComIfG_getObjectRes("Ji", JI_BCK_JI_GUARD)); + loopMode = J3DFrameCtrl::EMode_LOOP; pSoundAnimRes = dComIfG_getObjectRes("Ji", JI_BAS_JI_GUARD); speed = 2.0f; break; case 16: - temp1 = static_cast(dComIfG_getObjectRes("Ji", JI_BCK_JI_BTKAMASI)); - temp2 = 2; + bckAnm = static_cast(dComIfG_getObjectRes("Ji", JI_BCK_JI_BTKAMASI)); + loopMode = J3DFrameCtrl::EMode_LOOP; pSoundAnimRes = dComIfG_getObjectRes("Ji", JI_BAS_JI_BTKAMASI); break; case 17: - temp1 = static_cast(dComIfG_getObjectRes("Ji", JI_BCK_JI_BTKAMAE)); - temp2 = 2; + bckAnm = static_cast(dComIfG_getObjectRes("Ji", JI_BCK_JI_BTKAMAE)); + loopMode = J3DFrameCtrl::EMode_LOOP; pSoundAnimRes = dComIfG_getObjectRes("Ji", JI_BAS_JI_BTKAMAE); break; case 18: - temp1 = static_cast(dComIfG_getObjectRes("Ji", JI_BCK_JI_UDEGUMI)); - temp2 = 2; + bckAnm = static_cast(dComIfG_getObjectRes("Ji", JI_BCK_JI_UDEGUMI)); + loopMode = J3DFrameCtrl::EMode_LOOP; pSoundAnimRes = dComIfG_getObjectRes("Ji", JI_BAS_JI_UDEGUMI); break; case 19: - temp1 = static_cast(dComIfG_getObjectRes("Ji", JI_BCK_JI_TATEATTACK)); - temp2 = 0; + bckAnm = static_cast(dComIfG_getObjectRes("Ji", JI_BCK_JI_TATEATTACK)); + loopMode = J3DFrameCtrl::EMode_NONE; pSoundAnimRes = dComIfG_getObjectRes("Ji", JI_BAS_JI_TATEATTACK); break; case 20: - temp1 = static_cast(dComIfG_getObjectRes("Ji", JI_BCK_JI_YOKOATTACK)); - temp2 = 0; + bckAnm = static_cast(dComIfG_getObjectRes("Ji", JI_BCK_JI_YOKOATTACK)); + loopMode = J3DFrameCtrl::EMode_NONE; pSoundAnimRes = dComIfG_getObjectRes("Ji", JI_BAS_JI_YOKOATTACK); break; case 21: - temp1 = static_cast(dComIfG_getObjectRes("Ji", JI_BCK_JI_ODOROKU)); - temp2 = 2; + bckAnm = static_cast(dComIfG_getObjectRes("Ji", JI_BCK_JI_ODOROKU)); + loopMode = J3DFrameCtrl::EMode_LOOP; pSoundAnimRes = dComIfG_getObjectRes("Ji", JI_BAS_JI_ODOROKU); break; case 22: - temp1 = static_cast(dComIfG_getObjectRes("Ji", JI_BCK_JI_BIBIRI)); - temp2 = 2; + bckAnm = static_cast(dComIfG_getObjectRes("Ji", JI_BCK_JI_BIBIRI)); + loopMode = J3DFrameCtrl::EMode_LOOP; pSoundAnimRes = dComIfG_getObjectRes("Ji", JI_BAS_JI_BIBIRI); BackSlideInit(); @@ -3007,8 +3007,8 @@ BOOL daNpc_Ji1_c::setAnm(int param_1, f32 param_2, int param_3) { break; case 23: - temp1 = static_cast(dComIfG_getObjectRes("Ji", JI_BCK_JI_NAKU)); - temp2 = 2; + bckAnm = static_cast(dComIfG_getObjectRes("Ji", JI_BCK_JI_NAKU)); + loopMode = J3DFrameCtrl::EMode_LOOP; pSoundAnimRes = dComIfG_getObjectRes("Ji", JI_BAS_JI_NAKU); if(field_0x430 == 0) { @@ -3018,14 +3018,14 @@ BOOL daNpc_Ji1_c::setAnm(int param_1, f32 param_2, int param_3) { break; case 24: - temp1 = static_cast(dComIfG_getObjectRes("Ji", JI_BCK_JI_NUGUI)); - temp2 = 0; + bckAnm = static_cast(dComIfG_getObjectRes("Ji", JI_BCK_JI_NUGUI)); + loopMode = J3DFrameCtrl::EMode_NONE; pSoundAnimRes = dComIfG_getObjectRes("Ji", JI_BAS_JI_NUGUI); break; case 25: - temp1 = static_cast(dComIfG_getObjectRes("Ji", JI_BCK_JI_DAMAGE)); - temp2 = 0; + bckAnm = static_cast(dComIfG_getObjectRes("Ji", JI_BCK_JI_DAMAGE)); + loopMode = J3DFrameCtrl::EMode_NONE; pSoundAnimRes = dComIfG_getObjectRes("Ji", JI_BAS_JI_DAMAGE); break; @@ -3033,7 +3033,7 @@ BOOL daNpc_Ji1_c::setAnm(int param_1, f32 param_2, int param_3) { return 0; } - field_0x330->setAnm(temp1, temp2, param_2, speed, 0.0f, -1.0f, pSoundAnimRes); + field_0x330->setAnm(bckAnm, loopMode, param_2, speed, 0.0f, -1.0f, pSoundAnimRes); if(field_0xD64 == 0x13) { mpMorf->setAnm((J3DAnmTransform*)dComIfG_getObjectRes("Ji", JI_BCK_JIYARI_TATEATTACK), J3DFrameCtrl::EMode_LOOP, 0.0f, 1.0f, 0.0f, -1.0f, NULL); } diff --git a/src/d/actor/d_a_npc_roten.cpp b/src/d/actor/d_a_npc_roten.cpp index 118bcf715..dc9499f59 100644 --- a/src/d/actor/d_a_npc_roten.cpp +++ b/src/d/actor/d_a_npc_roten.cpp @@ -2277,7 +2277,7 @@ void daNpcRoten_c::eventSetItemInit() { u8 itemIdx = l_item_dat[mNpcNo][field_0x9BE]; cXyz pos(0.0f, 0.0f, 0.0f); u8 itemNo = itemIdx + FLOWER_1; - field_0x6F8 = fopAcM_createItemForPresentDemo(&pos, itemNo, 9, -1, fopAcM_GetRoomNo(this)); + field_0x6F8 = fopAcM_createItemForPresentDemo(&pos, itemNo, daDitem_c::FLAG_UNK01 | daDitem_c::FLAG_UNK08, -1, fopAcM_GetRoomNo(this)); } /* 000028C4-0000290C .text eventSetItem__12daNpcRoten_cFv */ @@ -2323,7 +2323,7 @@ void daNpcRoten_c::eventGetItemInit(int staffIdx) { u8 itemNo = FLOWER_1; itemNo += itemIdx; // fakematch? - pcId = fopAcM_createItemForPresentDemo(¤t.pos, itemNo, 1, -1, fopAcM_GetRoomNo(this)); + pcId = fopAcM_createItemForPresentDemo(¤t.pos, itemNo, daDitem_c::FLAG_UNK01, -1, fopAcM_GetRoomNo(this)); } if(pcId != fpcM_ERROR_PROCESS_ID_e) { diff --git a/src/d/actor/d_a_obj_figure.cpp b/src/d/actor/d_a_obj_figure.cpp index 0c04959af..363337ad9 100644 --- a/src/d/actor/d_a_obj_figure.cpp +++ b/src/d/actor/d_a_obj_figure.cpp @@ -926,7 +926,7 @@ cPhs_State daObjFigure_c::_create() { NULL, }; - dComLbG_PhaseHandler(&mPhsLoad, l_method, this); + return dComLbG_PhaseHandler(&mPhsLoad, l_method, this); } /* 00000720-00000A90 .text createHeap__13daObjFigure_cFv */ @@ -1512,9 +1512,9 @@ void linkDraw(mDoExt_McaMorf* pMorf) { J3DShape* ZOnShape[4]; J3DJoint* link_root_joint = modelData->getJointNodePointer(0x00); // link_root joint - J3DJoint* cl_eye_joint = modelData->getJointNodePointer(0x13); // cl_eye joint - J3DJoint* cl_mayu_joint = modelData->getJointNodePointer(0x15); // cl_mayu joint - + J3DJoint* cl_eye_joint = modelData->getJointNodePointer(0x13); // cl_eye joint + J3DJoint* cl_mayu_joint = modelData->getJointNodePointer(0x15); // cl_mayu joint + J3DMaterial* mtl; mtl = modelData->getJointNodePointer(0x13)->getMesh(); // cl_eye joint int zoff_blend_cnt = 0; @@ -1525,20 +1525,16 @@ void linkDraw(mDoExt_McaMorf* pMorf) { while (mtl) { mtl->setMaterialMode(1); if (mtl->getZMode()->getCompareEnable() == 0) { - // TODO: debug map indicates J3DBlend::getType inline was used - if (mtl->getBlend()->mBlendMode == GX_BM_BLEND) { - ZOffBlendShape[zoff_blend_cnt] = mtl->getShape(); - zoff_blend_cnt++; - JUT_ASSERT(0x6E7, zoff_blend_cnt <= 4); + if ((u8)mtl->getBlend()->getType() == GX_BM_BLEND) { + ZOffBlendShape[zoff_blend_cnt++] = mtl->getShape(); + JUT_ASSERT(1767, zoff_blend_cnt <= 4); } else { - ZOffNoneShape[zoff_none_cnt] = mtl->getShape(); - zoff_none_cnt++; - JUT_ASSERT(0x6EA, zoff_none_cnt <= 4); + ZOffNoneShape[zoff_none_cnt++] = mtl->getShape(); + JUT_ASSERT(1770, zoff_none_cnt <= 4); } } else { - ZOnShape[zon_cnt] = mtl->getShape(); - zon_cnt++; - JUT_ASSERT(0x6EE, zon_cnt <= 4); + ZOnShape[zon_cnt++] = mtl->getShape(); + JUT_ASSERT(1774, zon_cnt <= 4); } mtl = mtl->getNext(); } @@ -1548,7 +1544,7 @@ void linkDraw(mDoExt_McaMorf* pMorf) { dComIfGd_setListP0(); l_onCupOffAupPacket2.entryOpa(); - for(i = 0; i < 4; i++) { + for (i = 0; i < 4; i++) { ZOffBlendShape[i]->hide(); ZOnShape[i]->hide(); ZOffNoneShape[i]->show(); @@ -1558,7 +1554,7 @@ void linkDraw(mDoExt_McaMorf* pMorf) { cl_mayu_joint->entryIn(); l_offCupOnAupPacket2.entryOpa(); - for(i = 0; i < 4; i++) { + for (i = 0; i < 4; i++) { ZOffBlendShape[i]->show(); ZOffNoneShape[i]->hide(); } @@ -1568,25 +1564,24 @@ void linkDraw(mDoExt_McaMorf* pMorf) { mtl = link_root_joint->getMesh(); for (i = 0; mtl != NULL; i++, mtl = mtl->getNext()) { - if(i != 2 && i != 5) { + if (i != 2 && i != 5) { mtl->getShape()->hide(); } } link_root_joint->entryIn(); - + for (i = 0, mtl = link_root_joint->getMesh(); mtl != NULL; i++, mtl = mtl->getNext()) { - if(i != 2 && i != 5) { + if (i != 2 && i != 5) { mtl->getShape()->show(); - } - else { + } else { mtl->getShape()->hide(); } } l_onCupOffAupPacket1.entryOpa(); - for(i = 0; i < 4; i++) { + for (i = 0; i < 4; i++) { ZOffBlendShape[i]->hide(); ZOnShape[i]->show(); ZOffNoneShape[i]->hide(); @@ -1594,10 +1589,10 @@ void linkDraw(mDoExt_McaMorf* pMorf) { cl_eye_joint->entryIn(); cl_mayu_joint->entryIn(); - + l_offCupOnAupPacket1.entryOpa(); - for(i = 0; i < 4; i++) { + for (i = 0; i < 4; i++) { ZOnShape[i]->hide(); } diff --git a/src/d/actor/d_a_player.cpp b/src/d/actor/d_a_player.cpp index 79a3312e0..b1084f1ea 100644 --- a/src/d/actor/d_a_player.cpp +++ b/src/d/actor/d_a_player.cpp @@ -1,7 +1,7 @@ -// -// Generated by dtk -// Translation Unit: d_a_player.cpp -// +/** + * d_a_player.cpp + * Player - Base Player Class + */ #include "dolphin/types.h" #include "d/actor/d_a_player.h" diff --git a/src/d/actor/d_a_player_HIO_data.inc b/src/d/actor/d_a_player_HIO_data.inc index d326a6413..0e1143d60 100644 --- a/src/d/actor/d_a_player_HIO_data.inc +++ b/src/d/actor/d_a_player_HIO_data.inc @@ -71,7 +71,7 @@ const daPy_HIO_cutTurn_c1 daPy_HIO_cutTurn_c0::m = { }; const daPy_HIO_cutTurnR_c1 daPy_HIO_cutTurnR_c0::m = { - 0, 4, 9, 27379, 1748, 0.8f, 1.0f, 3.0f, 0.8f, 3.0f, 0.8f, 3.0f, 0.95f, + 0, 0, 4, 9, 27379, 1748, 0.8f, 1.0f, 3.0f, 0.8f, 3.0f, 0.8f, 3.0f, 0.95f, }; const daPy_HIO_cutRoll_c1 daPy_HIO_cutRoll_c0::m = { diff --git a/src/d/actor/d_a_player_bow.inc b/src/d/actor/d_a_player_bow.inc index d009cd601..a2b161add 100644 --- a/src/d/actor/d_a_player_bow.inc +++ b/src/d/actor/d_a_player_bow.inc @@ -11,6 +11,7 @@ */ #include "d/actor/d_a_arrow.h" +#include "d/actor/d_a_npc_so.h" #include "d/actor/d_a_player_HIO.h" #include "d/actor/d_a_player_main.h" #include "d/d_procname.h" @@ -66,7 +67,18 @@ BOOL daPy_lk_c::checkBowAnime() const { /* 8014A080-8014A180 .text makeArrow__9daPy_lk_cFv */ void daPy_lk_c::makeArrow() { - /* Nonmatching */ + // Fakematch: The first call to getPt1 needs to load gameinfo differently from the other two. + // Adding a redundant (dEvt_control_c*) cast to just that one fixes it. + BOOL r4 = mDemo.getDemoMode() == daPy_demo_c::DEMO_UNK44_e; + if ((!r4 && dComIfGs_getArrowNum() != 0) || + (r4 && ((dEvt_control_c*)&g_dComIfG_gameInfo.play.getEvent())->getPt1() != NULL && + fopAcM_GetName(dComIfGp_event_getPt1()) == PROC_NPC_SO && + ((daNpc_So_c*)dComIfGp_event_getPt1())->getMiniGameRestArrow() > 0)) + { + fopAc_ac_c* arrow_p = (fopAc_ac_c*)fopAcM_fastCreate(PROC_ARROW, 0, ¤t.pos, current.roomNo); + mActorKeepEquip.setData(arrow_p); + } + m355C = 0; } /* 8014A180-8014A1CC .text deleteArrow__9daPy_lk_cFv */ @@ -160,7 +172,7 @@ BOOL daPy_lk_c::checkNextActionBowReady() { if (mFrameCtrlUpper[UPPER_MOVE2_e].getRate() < 0.01f) { if (m355E == 0 && bowButton() && (mDemo.getDemoMode() == daPy_demo_c::DEMO_UNK44_e || mEquipItem == getReadyItem()) && - !checkNoResetFlg1(daPyFlg1_USE_ARROW_EFFECT)) + !checkUseArrowEffect()) { setBowReloadAnime(); makeArrow(); diff --git a/src/d/actor/d_a_player_climb.inc b/src/d/actor/d_a_player_climb.inc index 571b29e22..bc302e7d3 100644 --- a/src/d/actor/d_a_player_climb.inc +++ b/src/d/actor/d_a_player_climb.inc @@ -190,7 +190,7 @@ void daPy_lk_c::checkBgClimbMove() { local_5c.set(current.pos.x + (25.0f * dVar7), local_68.y + 30.0f, current.pos.z + (25.0f * dVar6)); mGndChk.SetPos(&local_5c); dVar3 = dComIfG_Bgsp()->GroundCross(&mGndChk); - if (C_BG_MIN_HEIGHT != dVar3 && dComIfG_Bgsp()->GetTriPla(mGndChk)->GetNP()->y >= 0.5f && + if (C_BG_MIN_HEIGHT != dVar3 && cBgW_CheckBGround(dComIfG_Bgsp()->GetTriPla(mGndChk)->GetNP()->y) && dVar3 >= local_68.y - 30.0f) { dVar4 = 3.0f; diff --git a/src/d/actor/d_a_player_crawl.inc b/src/d/actor/d_a_player_crawl.inc index b544d82ae..43ab781a8 100644 --- a/src/d/actor/d_a_player_crawl.inc +++ b/src/d/actor/d_a_player_crawl.inc @@ -35,8 +35,7 @@ f32 daPy_lk_c::getCrawlMoveSpeed() { if (fVar1 >= 17.0f) { fVar1 = fVar1 - 17.0f; } - return (daPy_HIO_crouch_c0::m.field_0x3C * mFrameCtrlUnder[UNDER_MOVE0_e].getRate()) * - cM_fsin((M_PI / 17) * fVar1); + return (daPy_HIO_crouch_c0::m.field_0x3C * mFrameCtrlUnder[UNDER_MOVE0_e].getRate()) * cM_fsin((M_PI / 17) * fVar1); } /* 80138868-801389D0 .text setCrawlMoveDirectionArrow__9daPy_lk_cFv */ @@ -86,8 +85,81 @@ void daPy_lk_c::setCrawlMoveDirectionArrow() { } /* 801389D0-80138D50 .text changeCrawlAutoMoveProc__9daPy_lk_cFP4cXyz */ -void daPy_lk_c::changeCrawlAutoMoveProc(cXyz*) { - /* Nonmatching */ +BOOL daPy_lk_c::changeCrawlAutoMoveProc(cXyz* param_1) { + cXyz sp70; + cXyz sp64; + cXyz sp58; + cXyz sp4C; + cXyz sp40; + cXyz sp34; + cXyz sp28; + f32 spC; + s16 spA; + s16 sp8; + f32 temp_f31 = cM_ssin(current.angle.y); + f32 temp_f30 = cM_scos(current.angle.y); + f32 temp_f29 = cM_ssin(shape_angle.y); + f32 temp_f28 = cM_scos(shape_angle.y); + int var_r29 = 0; + + sp70.x = param_1->x + (75.0f * temp_f31); + sp70.y = param_1->y; + sp70.z = param_1->z + (75.0f * temp_f30); + mLinkLinChk.Set(param_1, &sp70, (fopAc_ac_c*)this); + if (!dComIfG_Bgsp()->LineCross(&mLinkLinChk)) { + sp4C.x = sp70.x + (50.0f * temp_f30); + sp4C.y = sp70.y; + sp4C.z = sp70.z - (50.0f * temp_f31); + + if (checkCrawlSideWall(&sp70, &sp4C, &sp34, &sp28, &spA, &sp8)) { + var_r29 |= 1; + } else { + return false; + } + } + sp4C.x = param_1->x + (50.0f * temp_f28); + sp4C.y = param_1->y; + sp4C.z = param_1->z - (50.0f * temp_f29); + + sp40 = (*param_1 * 2.0f) - sp4C; + mLinkLinChk.Set(param_1, &sp4C, (fopAc_ac_c*)this); + if (dComIfG_Bgsp()->LineCross(&mLinkLinChk)) { + var_r29 |= 8; + sp58.x = sp40.x + (75.0f * temp_f29); + sp58.y = sp40.y; + sp58.z = sp40.z + (75.0f * temp_f28); + if (!checkCrawlSideWall(&sp40, &sp58, &sp34, &sp28, &spA, &sp8)) { + return false; + } + } else { + var_r29 |= 4; + sp58.x = sp4C.x - (75.0f * temp_f29); + sp58.y = sp4C.y; + sp58.z = sp4C.z - (75.0f * temp_f28); + if (!checkCrawlSideWall(&sp4C, &sp58, &sp34, &sp28, &spA, &sp8)) { + return false; + } + mLinkLinChk.Set(param_1, &sp40, (fopAc_ac_c*)this); + if (!dComIfG_Bgsp()->LineCross(&mLinkLinChk)) { + var_r29 |= 8; + } + } + if (cM3d_Len2dSqPntAndSegLine( + 0.5f * (sp34.x + sp28.x), + 0.5f * (sp34.z + sp28.z), + sp70.x, + sp70.z, + param_1->x - (75.0f * temp_f31), + param_1->z - (75.0f * temp_f30), + &sp64.x, + &sp64.z, + &spC + )) + { + sp64.y = current.pos.y; + return procCrawlAutoMove_init(var_r29, &sp64); + } + return false; } /* 80138D50-80138F28 .text getCrawlMoveVec__9daPy_lk_cFP4cXyzP4cXyzP4cXyz */ @@ -96,21 +168,14 @@ int daPy_lk_c::getCrawlMoveVec(cXyz* param_0, cXyz* param_1, cXyz* param_2) { if (dComIfG_Bgsp()->LineCross(&mLinkLinChk)) { cM3dGPla* triPla = dComIfG_Bgsp()->GetTriPla(mLinkLinChk); int iVar4 = dComIfG_Bgsp()->GetSpecialCode(mLinkLinChk); - float fVar1 = triPla->GetNP()->y; - bool bVar2; - if (!((fVar1 >= 0.5f) || (fVar1 < -0.8f))) { - bVar2 = true; - } else { - bVar2 = false; - } - if (bVar2) { + if (cBgW_CheckBWall(triPla->GetNP()->y)) { cXyz local_3c = (*param_1 - mLinkLinChk.GetCross()); - float dVar7 = local_3c.absXZ(); - param_2->x = (float)(-dVar7 * triPla->GetNP()->x); + f32 dVar7 = local_3c.absXZ(); + param_2->x = -dVar7 * triPla->GetNP()->x; param_2->y = local_3c.y; - param_2->z = (float)(-dVar7 * triPla->GetNP()->z); + param_2->z = -dVar7 * triPla->GetNP()->z; return true; - } else if ((iVar4 == 1) || (fVar1 < 0.643832f && (iVar4 == 2))) { + } else if (iVar4 == 1 || (triPla->GetNP()->y < 0.643832f && iVar4 == 2)) { *param_2 = (*param_1 - mLinkLinChk.GetCross()); return true; } @@ -126,11 +191,11 @@ void daPy_lk_c::crawlBgCheck(cXyz* param_0, cXyz* param_1) { cXyz cStack_44; cXyz cStack_38; - cMtx_multVec(mpCLModel->getBaseTRMtx(), &l_crawl_top_offset, &cStack_50); + mDoMtx_multVec(mpCLModel->getBaseTRMtx(), &l_crawl_top_offset, &cStack_50); iVar1 = getCrawlMoveVec(&cStack_50, param_0, &cStack_44); - cMtx_multVec(mpCLModel->getBaseTRMtx(), &l_crawl_top_up_offset, &cStack_50); + mDoMtx_multVec(mpCLModel->getBaseTRMtx(), &l_crawl_top_up_offset, &cStack_50); iVar2 = getCrawlMoveVec(&cStack_50, param_1, &cStack_38); - if ((iVar1 != 0) && (iVar2 != 0)) { + if (iVar1 != 0 && iVar2 != 0) { if (cStack_44.abs2() > cStack_38.abs()) { current.pos -= cStack_44; } else { @@ -144,7 +209,9 @@ void daPy_lk_c::crawlBgCheck(cXyz* param_0, cXyz* param_1) { } /* 801390B8-801392BC .text checkCrawlSideWall__9daPy_lk_cFP4cXyzP4cXyzP4cXyzP4cXyzPsPs */ -BOOL daPy_lk_c::checkCrawlSideWall(cXyz* param_1, cXyz* param_2, cXyz* param_3, cXyz* param_4, s16* param_5, s16* param_6) { +BOOL daPy_lk_c::checkCrawlSideWall( + cXyz* param_1, cXyz* param_2, cXyz* param_3, cXyz* param_4, s16* param_5, s16* param_6 +) { cXyz local_78; cXyz local_90; @@ -160,11 +227,9 @@ BOOL daPy_lk_c::checkCrawlSideWall(cXyz* param_1, cXyz* param_2, cXyz* param_3, *param_4 = mLinkLinChk.GetCross(); pfVar1 = dComIfG_Bgsp()->GetTriPla(mLinkLinChk); *param_6 = cM_atan2s(pfVar1->GetNP()->x, pfVar1->GetNP()->z); - cXyz local_9c = (*param_3 - *param_4); + cXyz local_9c = *param_3 - *param_4; f32 temp_f31 = local_9c.abs2XZ(); - if (cLib_distanceAngleS(*param_5, *param_6) > 0x7F00 && temp_f31 < 5625.0f && - temp_f31 > 3600.0f) - { + if (cLib_distanceAngleS(*param_5, *param_6) > 0x7F00 && temp_f31 < 5625.0f && temp_f31 > 3600.0f) { return true; } } @@ -174,7 +239,32 @@ BOOL daPy_lk_c::checkCrawlSideWall(cXyz* param_1, cXyz* param_2, cXyz* param_3, /* 801392BC-80139424 .text setDoStatusCrawl__9daPy_lk_cFv */ void daPy_lk_c::setDoStatusCrawl() { - /* Nonmatching */ + dComIfGp_setRStatus(dActStts_CROUCH_e); + if (dComIfGp_checkCameraAttentionStatus(mCameraInfoIdx, 0x80)) { + dComIfGp_setAStatus(dActStts_RETURN_e); + if (checkSubjectEnd(1) || m35D0 > current.pos.y) { + dComIfGp_clearPlayerStatus0(0, daPyStts0_UNK2000_e); + } else { + dComIfGp_setPlayerStatus0(0, daPyStts0_UNK2000_e); + } + } else if (dCam_getBody()->ChangeModeOK(4)) { + if (m35D0 <= current.pos.y) { + onResetFlg0(daPyRFlg0_UNK4000000); + if (dComIfGp_checkCameraAttentionStatus(mCameraInfoIdx, 0x1000) && !dComIfGp_event_runCheck()) { + setSubjectMode(); + } + } + } + if (dComIfGp_checkCameraAttentionStatus(mCameraInfoIdx, 0x80) && + (mCurProc != daPyProc_CRAWL_MOVE_e || mProcVar0.m3570 == 0)) + { + setBodyAngleToCamera(); + if (mBodyAngle.x > 0) { + mBodyAngle.x = 0; + } + } else { + mBodyAngle.x = 0; + } } /* 80139424-801394F0 .text procCrawlStart_init__9daPy_lk_cFv */ @@ -204,13 +294,13 @@ BOOL daPy_lk_c::procCrawlStart() { cXyz local_20(l_crawl_front_offset.x, l_crawl_front_offset.y, l_crawl_front_offset.z * m35E4); cXyz afStack_2c; cXyz cStack_38; - cMtx_multVec(mpCLModel->getBaseTRMtx(), &local_20, &afStack_2c); + mDoMtx_multVec(mpCLModel->getBaseTRMtx(), &local_20, &afStack_2c); local_20.y = 50.0f; - cMtx_multVec(mpCLModel->getBaseTRMtx(), &local_20, &cStack_38); + mDoMtx_multVec(mpCLModel->getBaseTRMtx(), &local_20, &cStack_38); crawlBgCheck(&cStack_38, &cStack_38); - if ((!spActionButton()) || (m35D0 > 15.0f + current.pos.y)) { + if (!spActionButton() || m35D0 > 15.0f + current.pos.y) { procCrawlEnd_init(0, shape_angle.x, shape_angle.z); - } else if ((mStickDistance > 0.05f) && + } else if (mStickDistance > 0.05f && ((mFrameCtrlUnder[UNDER_MOVE0_e].getRate() < 0.01f) || (mFrameCtrlUnder[UNDER_MOVE0_e].getFrame() > daPy_HIO_crouch_c0::m.field_0x28))) { @@ -261,7 +351,7 @@ BOOL daPy_lk_c::procCrawlMove_init(s16 param_0, s16 param_1) { dVar4 *= -1.0f; } current.angle.y = shape_angle.y; - setSingleMoveAnime(ANM_LIEFORWARD, (float)dVar4, 0.0f, -1, daPy_HIO_crouch_c0::m.field_0x38); + setSingleMoveAnime(ANM_LIEFORWARD, dVar4, 0.0f, -1, daPy_HIO_crouch_c0::m.field_0x38); } else { onResetFlg0(daPyRFlg0_UNK1000); } @@ -279,7 +369,168 @@ BOOL daPy_lk_c::procCrawlMove_init(s16 param_0, s16 param_1) { /* 80139878-8013A004 .text procCrawlMove__9daPy_lk_cFv */ BOOL daPy_lk_c::procCrawlMove() { - /* Nonmatching */ + J3DFrameCtrl& frameCtrl = mFrameCtrlUnder[UNDER_MOVE0_e]; + float fVar1; + BOOL bVar4; + BOOL bVar5; + int iVar6; + int iVar7; + int iVar8; + int iVar9; + f32 dVar11; + cXyz sp124; + cXyz sp118; + cXyz sp10C; + cXyz sp100; + cXyz spF4; + cXyz spE8; + cXyz spDC; + cXyz spD0; + cXyz spC4; + cXyz spB8; + cXyz spAC; + cXyz spA0; + cXyz sp94; + cXyz sp88; + + setDoStatusCrawl(); + mDoMtx_multVec(mpCLModel->getBaseTRMtx(), &l_crawl_stand_up_offset, &sp118); + mDoMtx_multVec(mpCLModel->getBaseTRMtx(), &l_crawl_front_up_offset, &sp124); + mDoMtx_multVec(mpCLModel->getBaseTRMtx(), &l_crawl_back_up_offset, &sp10C); + mDoMtx_multVecSR(mpCLModel->getBaseTRMtx(), &l_crawl_min_side_offset, &sp100); + iVar6 = checkNotCrawlStand(&sp118); + iVar7 = checkNotCrawlStand(&sp124); + iVar8 = checkNotCrawlStand(&sp10C); + if ((((iVar6 != 0 || iVar7 != 0) || iVar8 != 0) || + (checkNotCrawlStand(&sp124, &sp100) || checkNotCrawlStand(&sp10C, &sp100))) || + checkNotCrawlStand(&sp118, &sp100)) + { + bVar5 = false; + onModeFlg(ModeFlg_04000000); + } else { + bVar5 = true; + offModeFlg(ModeFlg_04000000); + } + if ((bVar5 != false && !spActionButton()) || (getSlidePolygon() != NULL || m35D0 > current.pos.y + 15.0f)) { + procCrawlEnd_init(1, shape_angle.x, shape_angle.z); + } else { + bVar4 = false; + dVar11 = getCrawlMoveAnmSpeed(); + if (frameCtrl.getRate() > 0.0f) { + frameCtrl.setRate(dVar11); + } else if (frameCtrl.getRate() < 0.0f) { + frameCtrl.setRate(-dVar11); + } else { + bVar4 = true; + } + if ((bVar4 == true || frameCtrl.checkPass(0.0f)) || frameCtrl.checkPass(17.0f)) { + if (mStickDistance > 0.05f) { + if (getDirectionFromShapeAngle() != 1) { + frameCtrl.setRate(dVar11); + frameCtrl.setLoop(0); + } else { + frameCtrl.setRate(-dVar11); + frameCtrl.setLoop(frameCtrl.getEnd()); + } + initSeAnime(); + } else if (!bVar4) { + if (frameCtrl.checkPass(0.0f)) { + fVar1 = 0.0f; + } else { + fVar1 = 17.0f; + } + frameCtrl.setRate(0.0f); + frameCtrl.setFrame(fVar1); + ((mAnmRatioUnder[UNDER_MOVE0_e]).getAnmTransform())->setFrame(fVar1); + } + } + iVar9 = mProcVar0.m3570; + mProcVar0.m3570 = 0; + s16 sp0A; + s16 sp08; + + mDoMtx_multVec(mpCLModel->getBaseTRMtx(), &l_crawl_side_offset, &spE8); + mDoMtx_multVec(mpCLModel->getBaseTRMtx(), &l_crawl_top_up_offset, &spF4); + + if (frameCtrl.getRate() >= 0.0f) { + spB8 = (sp124 - spF4) * 0.5f; + } else if (frameCtrl.getRate() < 0.0f) { + spB8 = (sp10C - spF4) * 0.5f; + } + + spE8 += spB8; + spF4 += spB8; + spDC = (spF4 * 2.0f) - spE8; + + if (!bVar5 && (checkCrawlSideWall(&spF4, &spE8, &spD0, &spC4, &sp0A, &sp08) || + checkCrawlSideWall(&spF4, &spDC, &spC4, &spD0, &sp08, &sp0A))) + { + mProcVar0.m3570 = 1; + mResetFlg0 = mResetFlg0 | 0x1000; + m370C = ((spD0 + spC4) * 0.5f) - spB8; + m34D4 = sp0A + 0x4000; + } + + if (mProcVar0.m3570 != 0) { + if (frameCtrl.getRate()) { + cLib_addCalcAngleS(&shape_angle.y, m34D4, 5, 0x1000, 0x800); + current.angle.y = shape_angle.y; + } + + if (std::abs(current.pos.x - m370C.x) > 1.0f) { + cLib_addCalc(¤t.pos.x, m370C.x, 0.5f, 10.0f, 1.0f); + } + + if (std::abs(current.pos.z - m370C.z) > 1.0f) { + cLib_addCalc(¤t.pos.z, m370C.z, 0.5f, 10.0f, 1.0f); + } + } else { + if (iVar9 != 0 && iVar6 != 0 && iVar7 != 0 && iVar8 != 0 && changeCrawlAutoMoveProc(&spF4)) { + return true; + } + if (mStickDistance > 0.05f && (frameCtrl.getRate() > 0.0f)) { + s16 r24 = shape_angle.y; + + cLib_addCalcAngleS( + &shape_angle.y, + m34E8, + daPy_HIO_crouch_c0::m.field_0x8, + daPy_HIO_crouch_c0::m.field_0xA, + daPy_HIO_crouch_c0::m.field_0xC + ); + + if (shape_angle.y != r24) { + if ((s16)(shape_angle.y - r24) > 0) { + cMtx_multVec(mpCLModel->getBaseTRMtx(), &l_crawl_lside_front_offset, &spAC); + cMtx_multVec(mpCLModel->getBaseTRMtx(), &l_crawl_lside_offset, &sp94); + } else { + cMtx_multVec(mpCLModel->getBaseTRMtx(), &l_crawl_rside_front_offset, &spAC); + cMtx_multVec(mpCLModel->getBaseTRMtx(), &l_crawl_rside_offset, &sp94); + } + + mGndChk.SetPos(&spAC); + spA0.set(spAC.x - sp94.x, dComIfG_Bgsp()->GroundCross(&mGndChk) - sp94.y, spAC.z - sp94.z); + + if (cLib_distanceAngleS((cM_atan2s(-spA0.y, spA0.absXZ())), shape_angle.x) > 0x800) { + shape_angle.y = r24; + } + } + current.angle.y = shape_angle.y; + } + } + dVar11 = getCrawlMoveSpeed(); + mVelocity = dVar11; + if (mVelocity < 0.0f) { + mVelocity *= -1.0f; + current.angle.y = shape_angle.y + 0x8000; + mDoMtx_multVec(mpCLModel->getBaseTRMtx(), &l_crawl_back_offset, &sp88); + crawlBgCheck(&sp88, &sp10C); + } else { + mDoMtx_multVec(mpCLModel->getBaseTRMtx(), &l_crawl_front_offset, &sp88); + crawlBgCheck(&sp88, &sp124); + } + } + return true; } /* 8013A004-8013A0F0 .text procCrawlAutoMove_init__9daPy_lk_cFiP4cXyz */ @@ -306,7 +557,6 @@ BOOL daPy_lk_c::procCrawlAutoMove_init(int param_0, cXyz* param_1) { /* 8013A0F0-8013A630 .text procCrawlAutoMove__9daPy_lk_cFv */ BOOL daPy_lk_c::procCrawlAutoMove() { - /* Nonmatching */ f32 fVar2; f32 fVar3; @@ -316,7 +566,7 @@ BOOL daPy_lk_c::procCrawlAutoMove() { s16 sVar4 = shape_angle.y; s16 sVar5 = current.angle.y; if (m34D0 > 0) { - if ((frameCtrl.checkPass(0.0f)) || (frameCtrl.checkPass(17.0f))) { + if (frameCtrl.checkPass(0.0f) || frameCtrl.checkPass(17.0f)) { fVar3 = 0.0f; if (frameCtrl.checkPass(0.0f)) { fVar2 = 0.0f; @@ -327,113 +577,149 @@ BOOL daPy_lk_c::procCrawlAutoMove() { frameCtrl.setFrame(fVar2); mAnmRatioUnder[UNDER_MOVE0_e].getAnmTransform()->setFrame(fVar2); mVelocity = fVar3; - } else { - if (std::fabsf(frameCtrl.getRate()) < 0.01f) { - mVelocity = 0.0f; - m34D0--; - } + } else if (std::fabsf(frameCtrl.getRate()) < 0.01f) { + mVelocity = 0.0f; + m34D0--; } setCrawlMoveDirectionArrow(); setDoStatusCrawl(); shape_angle.y = sVar4; current.angle.y = sVar5; - } else { - if (m34D0 == 0) { - setCrawlMoveDirectionArrow(); - if (mStickDistance > 0.05f) { - int direction = getDirectionFromShapeAngle(); - f32 fVar2 = cM_ssin(shape_angle.y); - f32 fVar3 = cM_scos(shape_angle.y); - if ((direction == DIR_LEFT) && ((mProcVar0.m3570 & 4))) { - m370C.x += 75.0f * fVar3; - m370C.z -= 75.0f * fVar2; - m34D4 = current.angle.y + 0x4000; - if (current.angle.y == shape_angle.y) { - m35A0 = 1.0f; - } else { - m35A0 = -1.0f; - } - m34D0 = -1; - } else if ((direction == DIR_RIGHT) && ((mProcVar0.m3570 & 8))) { - m370C.x -= 75.0f * fVar3; - m370C.z += 75.0f * fVar2; - m34D4 = current.angle.y + -0x4000; - if (current.angle.y == shape_angle.y) { - m35A0 = 1.0f; - } else { - m35A0 = -1.0f; - } - m34D0 = -1; - } else if (((mProcVar0.m3570 & 1)) && - (((shape_angle.y == current.angle.y && (direction == DIR_FORWARD)) || - ((shape_angle.y != current.angle.y && (direction == DIR_BACKWARD)))))) - { - m370C.x += 75.0f * cM_ssin(current.angle.y); - m370C.z += 75.0f * cM_scos(current.angle.y); - m34D4 = shape_angle.y; - m35A0 = 0.0f; - m34D0 = -1; - } else if (((shape_angle.y == current.angle.y) && (direction == DIR_BACKWARD)) || ((shape_angle.y != current.angle.y && (direction == DIR_FORWARD)))) { - current.angle.y += 0x8000; - m370C.x -= 75.0f * cM_ssin(current.angle.y); - m370C.z -= 75.0f * cM_scos(current.angle.y); - m34D4 = shape_angle.y; - m35A0 = 0.0f; - m34D0 = -1; + } else if (m34D0 == 0) { + setCrawlMoveDirectionArrow(); + if (mStickDistance > 0.05f) { + int direction = getDirectionFromShapeAngle(); + f32 fVar2 = cM_ssin(shape_angle.y); + f32 fVar3 = cM_scos(shape_angle.y); + if (direction == DIR_LEFT && (mProcVar0.m3570 & 4)) { + m370C.x += 75.0f * fVar3; + m370C.z -= 75.0f * fVar2; + m34D4 = current.angle.y + 0x4000; + if (current.angle.y == shape_angle.y) { + m35A0 = 1.0f; + } else { + m35A0 = -1.0f; } - if (m34D0 == -1) { - g_dComIfG_gameInfo.play.mDirection = 0; - if (shape_angle.y == current.angle.y) { - frameCtrl.setRate(2.0f); - frameCtrl.setLoop(0); - } else { - frameCtrl.setRate(-2.0f); - frameCtrl.setLoop(frameCtrl.getEnd()); - } - initSeAnime(); + m34D0 = -1; + } else if (direction == DIR_RIGHT && (mProcVar0.m3570 & 8)) { + m370C.x -= 75.0f * fVar3; + m370C.z += 75.0f * fVar2; + m34D4 = current.angle.y + -0x4000; + if (current.angle.y == shape_angle.y) { + m35A0 = 1.0f; + } else { + m35A0 = -1.0f; } - } else { - setDoStatusCrawl(); - shape_angle.y = sVar4; - current.angle.y = sVar5; + m34D0 = -1; + } else if ((mProcVar0.m3570 & 1) && ((shape_angle.y == current.angle.y && direction == DIR_FORWARD) || + (shape_angle.y != current.angle.y && direction == DIR_BACKWARD))) + { + m370C.x += 75.0f * cM_ssin(current.angle.y); + m370C.z += 75.0f * cM_scos(current.angle.y); + m34D4 = shape_angle.y; + m35A0 = 0.0f; + m34D0 = -1; + } else if ((shape_angle.y == current.angle.y && direction == DIR_BACKWARD) || + (shape_angle.y != current.angle.y && direction == DIR_FORWARD)) + { + current.angle.y += 0x8000; + m370C.x -= 75.0f * cM_ssin(current.angle.y); + m370C.z -= 75.0f * cM_scos(current.angle.y); + m34D4 = shape_angle.y; + m35A0 = 0.0f; + m34D0 = -1; + } + if (m34D0 == -1) { + g_dComIfG_gameInfo.play.mDirection = 0; + if (shape_angle.y == current.angle.y) { + frameCtrl.setRate(2.0f); + frameCtrl.setLoop(0); + } else { + frameCtrl.setRate(-2.0f); + frameCtrl.setLoop(frameCtrl.getEnd()); + } + initSeAnime(); } } else { - BOOL bVar1 = true; - if (m34D6 > 0) { - m34D6--; + setDoStatusCrawl(); + shape_angle.y = sVar4; + current.angle.y = sVar5; + } + } else { + BOOL bVar1 = true; + if (m34D6 > 0) { + m34D6--; + } + if (std::fabsf(m35A0) > 0.5f) { + if (cLib_addCalcAngleS(&shape_angle.y, m34D4, 5, 0x480, 0x80)) { + bVar1 = 0; } - if (std::fabsf(m35A0) > 0.5f) { - if (cLib_addCalcAngleS(&shape_angle.y, m34D4, 5, 0x480, 0x80)) { - bVar1 = 0; - } - if (m35A0 < -0.5f) { - current.angle.y = shape_angle.y + 0x8000; - } else { - current.angle.y = shape_angle.y; - } - cLib_addCalc(¤t.pos.x, m370C.x, 0.5f, 3.0f, 1.0f); - cLib_addCalc(¤t.pos.z, m370C.z, 0.5f, 3.0f, 1.0f); - } - cXyz local_28 = m370C - current.pos; - if (cLib_distanceAngleS(cM_atan2s(local_28.x, local_28.z), current.angle.y) < 0x6000) { - bVar1 = false; - } - mVelocity = getCrawlMoveSpeed(); - if (mVelocity < 0.0f) { - mVelocity *=-1.0f; + if (m35A0 < -0.5f) { current.angle.y = shape_angle.y + 0x8000; + } else { + current.angle.y = shape_angle.y; } - if ((bVar1 != 0) || (m34D6 == 0)) { - procCrawlMove_init(shape_angle.x, shape_angle.z); - } + cLib_addCalc(¤t.pos.x, m370C.x, 0.5f, 3.0f, 1.0f); + cLib_addCalc(¤t.pos.z, m370C.z, 0.5f, 3.0f, 1.0f); + } + cXyz local_28 = m370C - current.pos; + if (cLib_distanceAngleS(cM_atan2s(local_28.x, local_28.z), current.angle.y) < 0x6000) { + bVar1 = false; + } + mVelocity = getCrawlMoveSpeed(); + if (mVelocity < 0.0f) { + mVelocity *= -1.0f; + current.angle.y = shape_angle.y + 0x8000; + } + if (bVar1 != 0 || m34D6 == 0) { + procCrawlMove_init(shape_angle.x, shape_angle.z); } } return true; } /* 8013A630-8013A7C4 .text procCrawlEnd_init__9daPy_lk_cFiss */ -BOOL daPy_lk_c::procCrawlEnd_init(int, s16, s16) { - /* Nonmatching */ +BOOL daPy_lk_c::procCrawlEnd_init(int param_1, s16 param_2, s16 param_3) { + f32 fVar1; + J3DAnmTransform* pJVar2; + f32 dVar4; + J3DTransformInfo auStack_58; + + dVar4 = mFrameCtrlUnder[UNDER_MOVE0_e].getFrame(); + commonProcInit(daPyProc_CRAWL_END_e); + current.angle.y = shape_angle.y; + m34C2 = 1; + if (param_1 != 0) { + fVar1 = daPy_HIO_crouch_c0::m.field_0x4C; + } else { + fVar1 = -1.0f; + } + setSingleMoveAnime( + ANM_LIE, + daPy_HIO_crouch_c0::m.field_0x40, + daPy_HIO_crouch_c0::m.field_0x44, + daPy_HIO_crouch_c0::m.field_0xE, + fVar1 + ); + if (param_1 == 0) { + if (daPy_HIO_crouch_c0::m.field_0x44 > dVar4) { + dVar4 = daPy_HIO_crouch_c0::m.field_0x44; + } else if (daPy_HIO_crouch_c0::m.field_0xE <= dVar4) { + dVar4 = daPy_HIO_crouch_c0::m.field_0xE - 0.001f; + } + mFrameCtrlUnder[UNDER_MOVE0_e].setFrame(dVar4); + mAnmRatioUnder[UNDER_MOVE0_e].getAnmTransform()->setFrame(dVar4); + } + pJVar2 = mAnmRatioUnder[UNDER_MOVE0_e].getAnmTransform(); + pJVar2->getTransform(0, &auStack_58); + m3700.x = auStack_58.mTranslate.x; + m3700.y = auStack_58.mTranslate.y; + m3700.z = auStack_58.mTranslate.z; + mVelocity = 0.0f; + shape_angle.x = param_2; + shape_angle.z = param_3; + m35A0 = 1.0f / (daPy_HIO_crouch_c0::m.field_0xE - daPy_HIO_crouch_c0::m.field_0x48); + return true; } /* 8013A7C4-8013A85C .text procCrawlEnd__9daPy_lk_cFv */ @@ -441,14 +727,12 @@ BOOL daPy_lk_c::procCrawlEnd() { m35E4 = m35A0 * (mFrameCtrlUnder[UNDER_MOVE0_e].getFrame() - daPy_HIO_crouch_c0::m.field_0x48); if (mFrameCtrlUnder[UNDER_MOVE0_e].getRate() > -0.01f) { checkNextMode(0); - } else { - if (mFrameCtrlUnder[UNDER_MOVE0_e].getFrame() < daPy_HIO_crouch_c0::m.field_0x48) { - if (!checkNextMode(1)) { - m34C2 = 1; - } - } else { + } else if (mFrameCtrlUnder[UNDER_MOVE0_e].getFrame() < daPy_HIO_crouch_c0::m.field_0x48) { + if (!checkNextMode(1)) { m34C2 = 1; } + } else { + m34C2 = 1; } return true; } diff --git a/src/d/actor/d_a_player_dproc.inc b/src/d/actor/d_a_player_dproc.inc index 384665f01..f5578b6c8 100644 --- a/src/d/actor/d_a_player_dproc.inc +++ b/src/d/actor/d_a_player_dproc.inc @@ -12,6 +12,7 @@ #include "SSystem/SComponent/c_counter.h" #include "d/actor/d_a_boko.h" +#include "d/actor/d_a_demo_item.h" #include "d/actor/d_a_itembase.h" #include "d/actor/d_a_player_HIO.h" #include "d/actor/d_a_player_main.h" @@ -527,7 +528,7 @@ BOOL daPy_lk_c::dProcGetItem_init() { item_no = dComIfGp_event_getGtItm(); } fpc_ProcID itemID = - fopAcM_createItemForPresentDemo(¤t.pos, item_no, 0, 0xffffffff, fopAcM_GetRoomNo(this), NULL, NULL); + fopAcM_createItemForPresentDemo(¤t.pos, item_no, 0, -1, fopAcM_GetRoomNo(this)); if (itemID != fpcM_ERROR_PROCESS_ID_e) { dComIfGp_event_setItemPartnerId(itemID); } @@ -590,12 +591,12 @@ BOOL daPy_lk_c::dProcGetItem() { mProcVar0.m3570 = 0; onModeFlg(ModeFlg_00000400); } - if ((item != NULL) && (fopAcM_GetName(item) == PROC_ITEM || (fopAcM_GetName(item) == PROC_Demo_Item))) { + if (item != NULL && (fopAcM_GetName(item) == PROC_ITEM || (fopAcM_GetName(item) == PROC_Demo_Item))) { item->hide(); } } else { if (mFrameCtrlUnder[UNDER_MOVE0_e].getRate() < 0.01f) { - if ((item != NULL) && (fopAcM_GetName(item) == PROC_ITEM || fopAcM_GetName(item) == PROC_Demo_Item)) { + if (item != NULL && (fopAcM_GetName(item) == PROC_ITEM || fopAcM_GetName(item) == PROC_Demo_Item)) { item->show(); if ((m3624 == 0) && (m34D4 != -1)) { if ((m34D4 == 7) && (dComIfGs_getMaxLife() % 4)) { @@ -618,7 +619,7 @@ BOOL daPy_lk_c::dProcGetItem() { setBlendMoveAnime(daPy_HIO_basic_c0::m.field_0xC); } } - } else if ((item != NULL) && (fopAcM_GetName(item) == PROC_ITEM || (fopAcM_GetName(item) == PROC_Demo_Item))) { + } else if (item != NULL && (fopAcM_GetName(item) == PROC_ITEM || (fopAcM_GetName(item) == PROC_Demo_Item))) { item->hide(); } } @@ -820,25 +821,25 @@ BOOL daPy_lk_c::dProcDead_init() { } mVelocity = 0.0f; m34D4 = 0; + if (iVar4 != 0) { dVar6 = ANM_SHIPDIE; - } else { - if (uVar2 != 0) { - dVar6 = ANM_SWIMDIE; - onModeFlg(ModeFlg_SWIM); - dComIfGp_setPlayerStatus0(0, daPyStts0_SWIM_e); - if (uVar3 == 0) { - offNoResetFlg0(daPyFlg0_UNK100); - dVar8 = 0.0f; - m34D4 = 1; - } else { - m34C2 = 0; - } + } else if (uVar2 != 0) { + dVar6 = ANM_SWIMDIE; + onModeFlg(ModeFlg_SWIM); + dComIfGp_setPlayerStatus0(0, daPyStts0_SWIM_e); + if (uVar3 == 0) { + offNoResetFlg0(daPyFlg0_UNK100); + dVar8 = 0.0f; + m34D4 = 1; } else { - dVar6 = ANM_DIELONG; - onModeFlg(ModeFlg_02000000); + m34C2 = 0; } + } else { + dVar6 = ANM_DIELONG; + onModeFlg(ModeFlg_02000000); } + setSingleMoveAnime(dVar6, dVar8, daPy_HIO_restart_c0::m.field_0x10, -1, daPy_HIO_restart_c0::m.field_0x14); mDamageWaitTimer = 0; m35E4 = 0.0f; @@ -884,8 +885,11 @@ BOOL daPy_lk_c::dProcDead() { dGameover_c* this_01; cLib_chaseF(&m35A0, 0.0f, 0.01f); f32 dVar3 = 1.0f - m35A0; - if ((m3628 != fpcM_ERROR_PROCESS_ID_e) && (this_01 = (dGameover_c*)fopMsgM_SearchByID(m3628), this_01)) { - this_01->setBackAlpha(dVar3); + if ((m3628 != fpcM_ERROR_PROCESS_ID_e)) { + this_01 = (dGameover_c*)fopMsgM_SearchByID(m3628); + if (this_01) { + this_01->setBackAlpha(dVar3); + } } if (((m35A0 < 0.38f) && (m3628 != fpcM_ERROR_PROCESS_ID_e)) && (this_01 = (dGameover_c*)fopMsgM_SearchByID(m3628), this_01)) @@ -1422,7 +1426,13 @@ void daPy_lk_c::dProcPresent_init_sub() { onModeFlg(ModeFlg_00000400); if (!checkBottleItem(dComIfGp_event_getPreItemNo())) { dComIfGp_event_setItemPartnerId(fopAcM_createItemForPresentDemo( - ¤t.pos, dComIfGp_event_getPreItemNo(), 3, -1, fopAcM_GetRoomNo(this), &shape_angle, &scale + ¤t.pos, + dComIfGp_event_getPreItemNo(), + daDitem_c::FLAG_UNK01 | daDitem_c::FLAG_UNK02, + -1, + fopAcM_GetRoomNo(this), + &shape_angle, + &scale )); } keepItemData(); @@ -1474,7 +1484,7 @@ BOOL daPy_lk_c::dProcPresent() { } } else { daItemBase_c* item = (daItemBase_c*)fopAcM_getItemEventPartner(this); - if ((item != NULL) && (fopAcM_GetName(item) == PROC_ITEM || fopAcM_GetName(item) == PROC_Demo_Item)) { + if (item != NULL && (fopAcM_GetName(item) == PROC_ITEM || fopAcM_GetName(item) == PROC_Demo_Item)) { item->show(); } } diff --git a/src/d/actor/d_a_player_grab.inc b/src/d/actor/d_a_player_grab.inc index 8536a7035..d3d7a4b3b 100644 --- a/src/d/actor/d_a_player_grab.inc +++ b/src/d/actor/d_a_player_grab.inc @@ -661,13 +661,7 @@ BOOL daPy_lk_c::procGrabPut() { mLinkLinChk.Set(&m370C, &local_2c, this); if (dComIfG_Bgsp()->LineCross(&mLinkLinChk)) { cM3dGPla* triPla = dComIfG_Bgsp()->GetTriPla(mLinkLinChk); - bool bVar1; - if ((!(triPla->GetNP()->y >= 0.5f)) && (!(triPla->GetNP()->y < -0.8f))) { - bVar1 = true; - } else { - bVar1 = false; - } - if (bVar1) { + if (cBgW_CheckBWall(triPla->GetNP()->y)) { cXyz local_44 = (local_2c - mLinkLinChk.GetCross()); f32 dVar7 = local_44.abs(); f32 dVar5 = local_44.absXZ(); diff --git a/src/d/actor/d_a_player_hammer.inc b/src/d/actor/d_a_player_hammer.inc index c822c6bab..5241f420a 100644 --- a/src/d/actor/d_a_player_hammer.inc +++ b/src/d/actor/d_a_player_hammer.inc @@ -13,6 +13,8 @@ #include "d/actor/d_a_player_main.h" #include "d/actor/d_a_player_HIO.h" +extern JGeometry::TVec3 l_hammer_splash_particle_scale; + /* 8015023C-80150324 .text setHammerModel__9daPy_lk_cFv */ void daPy_lk_c::setHammerModel() { J3DAnmTransform* bck = getItemAnimeResource(LKANM_BCK_HAMMERDAM); @@ -28,16 +30,140 @@ void daPy_lk_c::setHammerModel() { } /* 80150324-801508FC .text setHammerQuake__9daPy_lk_cFP13cBgS_PolyInfoPC4cXyzi */ -void daPy_lk_c::setHammerQuake(cBgS_PolyInfo*, const cXyz*, int) { - /* Nonmatching */ - static JGeometry::TVec3 smoke_kusa_particle_scale; - static JGeometry::TVec3 emitter_scale; - static JGeometry::TVec3 emitter_trans; +void daPy_lk_c::setHammerQuake(cBgS_PolyInfo* param_1, const cXyz* param_2, int param_3) { + static JGeometry::TVec3 smoke_kusa_particle_scale(2.0f, 2.0f, 2.0f); + static JGeometry::TVec3 emitter_scale(1.0f, 0.1f, 1.0f); + static JGeometry::TVec3 emitter_trans(0.0f, 10.0f, 0.0f); + float local_54; + BOOL bVar2; + int attrib_code; + int iVar6; + JPABaseEmitter* emitter; + f32 dVar9; + int iStack_58; + cXyz local_2c; + cXyz local_38; + + dComIfGp_getVibration().StartShock(6, -0x31, cXyz(0.0f, 1.0f, 0.0f)); + onResetFlg0(daPyRFlg0_HAMMER_QUAKE); + if (!checkNoResetFlg0(daPyFlg0_UNK10000000)) { + if (param_3 == -1) { + local_2c.set(mSwordTopPos.x, mSwordTopPos.y + 100.0f, mSwordTopPos.z); + mGndChk.SetPos(&local_2c); + dVar9 = dComIfG_Bgsp()->GroundCross(&mGndChk); + if (C_BG_MIN_HEIGHT != dVar9) { + iVar6 = dComIfG_Bgsp()->GetMtrlSndId(mGndChk); + } else { + iVar6 = mMtrlSndId; + } + } else { + iVar6 = param_3; + } + mDoAud_seStart(JA_SE_LK_HAMMER_HIT, &mSwordTopPos, iVar6, mReverb); + } + if (param_1 != NULL && m355C == 0) { + mDoMtx_stack_c::transS(param_2->x, param_2->y, param_2->z); + mDoMtx_stack_c::ZXYrotM( + getGroundAngle(param_1, shape_angle.y), shape_angle.y, getGroundAngle(param_1, shape_angle.y + -0x4000) + ); + mDoMtx_stack_c::transM(0.0f, 0.0f, -30.0f); + local_38.x = mDoMtx_stack_c::now[0][3]; + local_38.y = mDoMtx_stack_c::now[1][3]; + local_38.z = mDoMtx_stack_c::now[2][3]; + if (!fopAcM_getWaterY(&local_38, &local_54) || (local_54 < (5.0f + local_38.y))) { + emitter = dComIfGp_particle_setP1(dPa_name::ID_COMMON_0214, &local_38); + if (emitter != NULL) { + JPASetRMtxTVecfromMtx(mDoMtx_stack_c::get(), emitter->mGlobalRotation, emitter->mGlobalTranslation); + } + emitter = dComIfGp_particle_setP1(dPa_name::ID_COMMON_0215, &local_38); + if (emitter != NULL) { + JPASetRMtxTVecfromMtx(mDoMtx_stack_c::get(), emitter->mGlobalRotation, emitter->mGlobalTranslation); + } + emitter = dComIfGp_particle_setP1(dPa_name::ID_COMMON_0216, &local_38); + if (emitter != NULL) { + JPASetRMtxTVecfromMtx(mDoMtx_stack_c::get(), emitter->mGlobalRotation, emitter->mGlobalTranslation); + } + bVar2 = false; + } else { + bVar2 = true; + local_38.y = local_54; + mDoMtx_stack_c::transS(local_38.x, local_54, local_38.z); + mDoMtx_stack_c::YrotM(shape_angle.y); + } + if (bVar2) { + attrib_code = dBgS_Attr_WATER_e; + dComIfGp_particle_setP1(dPa_name::ID_COMMON_027C, &local_38); + dComIfGp_particle_setShipTail( + dPa_name::ID_COMMON_003D, &local_38, NULL, NULL, 0xFF, &dPa_control_c::mSingleRippleEcallBack + ); + } else { + attrib_code = dComIfG_Bgsp()->GetAttributeCode(*param_1); + } + emitter = + dComIfGp_particle_setSimpleLand(attrib_code, &local_38, NULL, 1.0f, 1.0f, 1.0f, &tevStr, &iStack_58, 0x1E); + if (emitter != NULL) { + JPASetRMtxTVecfromMtx(mDoMtx_stack_c::get(), emitter->mGlobalRotation, emitter->mGlobalTranslation); + if (attrib_code == dBgS_Attr_WATER_e || attrib_code == dBgS_Attr_GRASS_e) { + emitter->setRate(60.0f); + emitter->setSpread(1.0f); + if (attrib_code == dBgS_Attr_WATER_e) { + emitter->setDirectionalSpeed(10.0f); + emitter->setGlobalParticleScale(l_hammer_splash_particle_scale); + } else { + emitter->setDirectionalSpeed(40.0f); + emitter->setGlobalParticleScale(smoke_kusa_particle_scale); + } + } else { + emitter->setRate(45.0f); + emitter->setSpread(0.0f); + emitter->setLifeTime(0x28); + emitter->setEmitterScale(emitter_scale); + emitter->setEmitterTranslation(emitter_trans); + emitter->setAwayFromCenterSpeed(50.0f); + emitter->setGlobalParticleScale(smoke_kusa_particle_scale); + } + } + } + m355C = 1; + dKy_Sound_set(current.pos, 500, fopAcM_GetID(this), 10); } /* 801508FC-80150B60 .text setHammerWaterSplash__9daPy_lk_cFv */ void daPy_lk_c::setHammerWaterSplash() { - /* Nonmatching */ + f32 local_50; + cXyz local_28; + + if (mCurProc != daPyProc_HAMMER_FRONT_SWING_e || (m35EC <= mFrameCtrlUnder[UNDER_MOVE0_e].getRate())) { + return; + } + if (m355C == 0) { + local_28 = m36C4 - mSwordTopPos; + local_28.normalize(); + local_28 = mSwordTopPos + (local_28 * 30.0f); + if (fopAcM_getWaterY(&local_28, &local_50) && local_50 >= local_28.y + 5.0f) { + local_28.y += 150.0f; + mGndChk.SetPos(&local_28); + if (!(local_50 < dComIfG_Bgsp()->GroundCross(&mGndChk) + 5.0f)) { + local_28.y = local_50; + dComIfGp_particle_setP1(dPa_name::ID_COMMON_027C, &local_28); + dComIfGp_particle_setShipTail( + dPa_name::ID_COMMON_003D, &local_28, NULL, NULL, 0xFF, &dPa_control_c::mSingleRippleEcallBack + ); + GXColor amb, dif; + dKy_get_seacolor(&amb, &dif); + JPABaseEmitter* emitter = + dComIfGp_particle_setP1(dPa_name::ID_COMMON_0023, &local_28, NULL, NULL, 0xFF, NULL, -1, &amb); + if (emitter != NULL) { + emitter->setRate(60.0f); + emitter->setSpread(1.0f); + emitter->setMaxFrame(1); + emitter->setDirectionalSpeed(10.0f); + emitter->setGlobalParticleScale(l_hammer_splash_particle_scale); + } + m355C = 1; + } + } + } } /* 80150B60-80150C40 .text procHammerSideSwing_init__9daPy_lk_cFv */ @@ -69,45 +195,43 @@ BOOL daPy_lk_c::procHammerSideSwing() { mDirection = DIR_RIGHT; checkNextMode(0); return true; - } else { - if (mFrameCtrlUnder[UNDER_MOVE0_e].getFrame() > daPy_HIO_ham_c0::m.field_0x10) { - f32 dVar4 = mVelocity; - u8 orig_direction = mDirection; - mVelocity = 0.0f; - mDirection = DIR_RIGHT; - if (checkNextMode(1)) { - return true; - } - mVelocity = dVar4; - mDirection = orig_direction; - } - if (changeCutReverseProc(ANM_CUTREL)) { - setHammerQuake(NULL, NULL, -1); + } + if (mFrameCtrlUnder[UNDER_MOVE0_e].getFrame() > daPy_HIO_ham_c0::m.field_0x10) { + f32 dVar4 = mVelocity; + u8 orig_direction = mDirection; + mVelocity = 0.0f; + mDirection = DIR_RIGHT; + if (checkNextMode(1)) { return true; - } else { - if (mpAttnActorLockOn != NULL) { - setShapeAngleToAtnActor(); - m34D4 = shape_angle.y; - } else { - cLib_addCalcAngleS( - &shape_angle.y, - m34D4, - daPy_HIO_turn_c0::m.field_0x4, - daPy_HIO_turn_c0::m.field_0x0, - daPy_HIO_turn_c0::m.field_0x2 - ); - } - current.angle.y = shape_angle.y; - if ((mFrameCtrlUnder[UNDER_MOVE0_e].getFrame() >= daPy_HIO_ham_c0::m.field_0x18) && - (mFrameCtrlUnder[UNDER_MOVE0_e].getFrame() < daPy_HIO_ham_c0::m.field_0x1C)) - { - if (!checkNoResetFlg0(daPyFlg0_CUT_AT_FLG)) { - onResetFlg0(daPyRFlg0_UNK1); - seStartSwordCut(JA_SE_LK_HAMMER_SWING); - } - onResetFlg0(daPyRFlg0_UNK2); - } } + mVelocity = dVar4; + mDirection = orig_direction; + } + if (changeCutReverseProc(ANM_CUTREL)) { + setHammerQuake(NULL, NULL, -1); + return true; + } + if (mpAttnActorLockOn != NULL) { + setShapeAngleToAtnActor(); + m34D4 = shape_angle.y; + } else { + cLib_addCalcAngleS( + &shape_angle.y, + m34D4, + daPy_HIO_turn_c0::m.field_0x4, + daPy_HIO_turn_c0::m.field_0x0, + daPy_HIO_turn_c0::m.field_0x2 + ); + } + current.angle.y = shape_angle.y; + if ((mFrameCtrlUnder[UNDER_MOVE0_e].getFrame() >= daPy_HIO_ham_c0::m.field_0x18) && + (mFrameCtrlUnder[UNDER_MOVE0_e].getFrame() < daPy_HIO_ham_c0::m.field_0x1C)) + { + if (!checkNoResetFlg0(daPyFlg0_CUT_AT_FLG)) { + onResetFlg0(daPyRFlg0_UNK1); + seStartSwordCut(JA_SE_LK_HAMMER_SWING); + } + onResetFlg0(daPyRFlg0_UNK2); } return true; } @@ -124,7 +248,7 @@ BOOL daPy_lk_c::procHammerFrontSwingReady_init() { ); current.angle.y = shape_angle.y; mVelocity = 0.0f; - if (mpAttention->Lockon() || (mStickDistance <= 0.05f)) { + if (mpAttention->Lockon() || mStickDistance <= 0.05f) { m34D4 = shape_angle.y; } else { m34D4 = m34E8; @@ -142,22 +266,21 @@ BOOL daPy_lk_c::procHammerFrontSwingReady() { m35EC = mFrameCtrlUnder[UNDER_MOVE0_e].getFrame(); if (mFrameCtrlUnder[UNDER_MOVE0_e].getRate() < 0.01f) { return procHammerFrontSwing_init(); - } else { - if (mpAttnActorLockOn != NULL) { - setShapeAngleToAtnActor(); - m34D4 = shape_angle.y; - } else { - cLib_addCalcAngleS( - &shape_angle.y, - m34D4, - daPy_HIO_turn_c0::m.field_0x4, - daPy_HIO_turn_c0::m.field_0x0, - daPy_HIO_turn_c0::m.field_0x2 - ); - } - current.angle.y = shape_angle.y; - return true; } + if (mpAttnActorLockOn != NULL) { + setShapeAngleToAtnActor(); + m34D4 = shape_angle.y; + } else { + cLib_addCalcAngleS( + &shape_angle.y, + m34D4, + daPy_HIO_turn_c0::m.field_0x4, + daPy_HIO_turn_c0::m.field_0x0, + daPy_HIO_turn_c0::m.field_0x2 + ); + } + current.angle.y = shape_angle.y; + return true; } /* 80150F98-801510DC .text procHammerFrontSwing_init__9daPy_lk_cFv */ @@ -173,7 +296,7 @@ BOOL daPy_lk_c::procHammerFrontSwing_init() { current.angle.y = shape_angle.y; mVelocity = 0.0f; voiceStart(1); - if (mpAttention->Lockon() || (mStickDistance <= 0.05f)) { + if (mpAttention->Lockon() || mStickDistance <= 0.05f) { m34D4 = shape_angle.y; } else { m34D4 = m34E8; @@ -191,7 +314,75 @@ BOOL daPy_lk_c::procHammerFrontSwing_init() { /* 801510DC-801513D4 .text procHammerFrontSwing__9daPy_lk_cFv */ BOOL daPy_lk_c::procHammerFrontSwing() { - /* Nonmatching */ + m35EC = mFrameCtrlUnder[UNDER_MOVE0_e].getFrame(); + f32 f1 = mFrameCtrlUnder[UNDER_MOVE0_e].getRate(); + if (f1 < 0.01f) { + if (m34D0 == 0) { + return procHammerFrontSwingEnd_init(); + } else { + m34D0--; + } + return true; + } + if (m35EC > f1 && changeCutReverseProc(ANM_CUTREL)) { + if (mCurProc == daPyProc_HAMMER_FRONT_SWING_e) { + cXyz sp08(mSwordTopPos.x, current.pos.y + 300.0f, mSwordTopPos.z); + mGndChk.SetPos(&sp08); + sp08.y = dComIfG_Bgsp()->GroundCross(&mGndChk); + if (sp08.y > mSwordTopPos.y) { + int r27; + int r26; + r26 = -1; + f32 f30 = 300.0f; + f32 f31 = C_BG_MIN_HEIGHT; + for (r27 = 0; r27 < mSwBlur.field_0x014; r27++) { + sp08.set(mSwBlur.field_0x034[r27].x, f30 + mSwBlur.field_0x034[r27].y, mSwBlur.field_0x034[r27].z); + mGndChk.SetPos(&sp08); + sp08.y = dComIfG_Bgsp()->GroundCross(&mGndChk); + if (f31 != sp08.y && mSwBlur.field_0x034[r27].y > sp08.y) { + r26 = dComIfG_Bgsp()->GetMtrlSndId(mGndChk); + break; + } + } + f32 f4 = mFrameCtrlUnder[UNDER_MOVE0_e].getRate(); + f32 f5 = (mFrameCtrlUnder[UNDER_MOVE0_e].getFrame() - f4) - 0.1f * (r27 * f4); + if (r27 != 0 && r27 < mSwBlur.field_0x014) { + f32 f6 = mSwBlur.field_0x034[r27].y - mSwBlur.field_0x034[r27 - 1].y; + if (std::abs(f6) > 1.0f) { + f32 temp = (1.0f - (sp08.y - (&mSwBlur.field_0x034[0])[r27 - 1].y) / f6); + f5 = f5 + 0.1f * (temp * f4); + } + } + if (f5 < 0.0f) { + f5 = 0.0f; + } + mFrameCtrlUnder[UNDER_MOVE0_e].setFrame(f5); + mFrameCtrlUnder[UNDER_MOVE0_e].setRate(0.0f); + m35EC = f5; + m34D0 = 10; + setHammerQuake(&mGndChk, &sp08, r26); + return true; + } + } else { + setHammerQuake(NULL, NULL, -1); + return true; + } + } + if (mpAttnActorLockOn != NULL) { + setShapeAngleToAtnActor(); + m34D4 = shape_angle.y; + } else { + cLib_addCalcAngleS( + &shape_angle.y, + m34D4, + daPy_HIO_turn_c0::m.field_0x4, + daPy_HIO_turn_c0::m.field_0x0, + daPy_HIO_turn_c0::m.field_0x2 + ); + } + current.angle.y = shape_angle.y; + onResetFlg0(daPyRFlg0_UNK2); + return true; } /* 801513D4-80151450 .text procHammerFrontSwingEnd_init__9daPy_lk_cFv */ diff --git a/src/d/actor/d_a_player_hang.inc b/src/d/actor/d_a_player_hang.inc index 1fa3fedc8..03bb0a907 100644 --- a/src/d/actor/d_a_player_hang.inc +++ b/src/d/actor/d_a_player_hang.inc @@ -495,7 +495,7 @@ BOOL daPy_lk_c::procHangMove() { cM3dGPla* triPla = dComIfG_Bgsp()->GetTriPla(mLinkLinChk); s16 sVar6 = cM_atan2s(triPla->GetNP()->x, triPla->GetNP()->z) + 0x8000; if (sVar6 != shape_angle.y) { - if ((short)(current.angle.y - shape_angle.y) > 0) { + if ((s16)(current.angle.y - shape_angle.y) > 0) { current.angle.y = sVar6 + 0x4000; } else { current.angle.y = sVar6 + -0x4000; diff --git a/src/d/actor/d_a_player_main.cpp b/src/d/actor/d_a_player_main.cpp index a51dfa699..94d9e2e9a 100644 --- a/src/d/actor/d_a_player_main.cpp +++ b/src/d/actor/d_a_player_main.cpp @@ -9,6 +9,7 @@ */ #include "d/actor/d_a_player_main.h" +#include "d/actor/d_a_demo_item.h" #include "d/actor/d_a_obj_movebox.h" #include "d/actor/d_a_player_HIO.h" #include "d/actor/d_a_sea.h" @@ -23,6 +24,7 @@ #include "d/d_item_data.h" #include "d/d_item.h" #include "f_op/f_op_camera_mng.h" +#include "f_op/f_op_overlap_mng.h" #include "m_Do/m_Do_audio.h" #include "m_Do/m_Do_controller_pad.h" #include "m_Do/m_Do_mtx.h" @@ -46,135 +48,6 @@ JGeometry::TVec3 l_hammer_splash_particle_scale(0.67f, 0.67f, 0.67f); #include "d/actor/d_a_player_HIO_data.inc" -static void dummydatafunc(f32* temp, f64* temp2) { - // temporary hack to improve diffs until sdata2 offsets are figured out - *temp = 2.0f; - *temp = -1000000000.0f; - *temp = -1.0f; - *temp = 0.0f; - *temp = 0.08f; - *temp = 1.0f; - *temp = 12.0f; - *temp = 13.0f; - *temp = 150.0f; - *temp = 30.0f; - *temp = 0.65f; - *temp = 0.35f; - *temp = 32768.0f; - *temp = 16384.0f; - *temp = 10.0f; - *temp2 = 4503601774854144.0; - *temp2 = 4503599627370496.0; - *temp = 25.0f; - *temp = -0.05f; - *temp2 = 0.5; - *temp2 = 3.0; - *temp = 0.6f; - *temp = 0.01f; - *temp = 0.001f; - *temp = 15.0f; - *temp = 1.5f; - *temp = 3.1415927f; - *temp = 0.5f; - *temp = 0.3f; - *temp = 1.2f; - *temp = 0.4f; - *temp = 5.0f; - *temp = 0.1f; - *temp = 0.8f; - *temp = 60.0f; - *temp = 4.0f; - *temp = 0.25f; - *temp = 0.75f; - *temp = 16.0f; - *temp = 8.0f; - *temp = 18.0f; - *temp = 3.0f; - *temp = 0.2f; - *temp = 0.05f; - *temp = 45.0f; - *temp = 11.0f; - *temp = 17.5f; - *temp = 1000000000.0f; - OSReport("Adanmae"); - OSReport("d_a_player_dproc.inc"); - OSReport("0"); - OSReport("Halt"); - OSReport("Link"); - OSReport("DEFAULT_GETITEM"); - OSReport("GanonK"); - OSReport("GTower"); - OSReport("d_a_player_bow.inc"); - OSReport("d_a_player_hook.inc"); - OSReport("d_a_player_fan.inc"); - OSReport("d_a_player_hammer.inc"); - OSReport("Type"); - OSReport("Omori"); - OSReport("d_a_player_sword.inc"); - OSReport("M_DaiB"); - OSReport("Xboss2"); - OSReport("M_DragB"); - OSReport("Xboss0"); - OSReport("fall"); - OSReport("d_a_player_main.cpp"); - OSReport("(demo_mode < daPy_demo_c::DEMO_LAST_e) || (demo_mode == daPy_demo_c::DEMO_NEW_ANM0_e)"); - OSReport("Ojhous"); - OSReport("Orichh"); - OSReport("kinBOSS"); - OSReport("Xboss1"); - OSReport("ICE_FAILED"); - OSReport("pos"); - OSReport("angle"); - OSReport("prm0"); - OSReport("prm1"); - OSReport("stick"); - OSReport("face"); - OSReport("GanonM"); - OSReport("sea"); - OSReport("m_tex_anm_heap.m_buffer != 0"); - OSReport("m_texNoAnms != 0"); - OSReport("mat_anm != 0"); - OSReport("m_tex_scroll_heap.m_buffer != 0"); - OSReport("material_num == 2"); - OSReport("m_texMtxAnm != 0"); - OSReport("m_tex_eye_scroll[no] != 0"); - OSReport("tmtx != 0"); - OSReport("mtl->getMaterialAnm() != 0"); - OSReport("tmp_modelData != 0"); - OSReport("aura_p->getModel() != 0"); - OSReport("m_old_fdata != 0"); - OSReport("m_pbCalc[PART_UNDER_e] != 0"); - OSReport("m_pbCalc[PART_UPPER_e] != 0"); - OSReport("m_HIO != 0"); - OSReport("m_anm_heap_under[UNDER_MOVE0_e].m_buffer != 0"); - OSReport("m_sanm_buffer != 0"); - OSReport("m_item_bck_buffer != 0"); - OSReport("tmp_trans_bas != 0"); - OSReport("tmp_trans != 0"); - OSReport("tmp_tp != 0"); - OSReport("tmp_tk != 0"); - OSReport("*i_model != 0"); - OSReport("btk_anm != 0"); - OSReport("brk_anm != 0"); - OSReport("zoff_blend_cnt <= 4"); - OSReport("zoff_none_cnt <= 4"); - OSReport("zon_cnt <= 4"); - OSReport("zon_cnt == 4"); - OSReport("zoff_none_cnt == 4"); - OSReport("zoff_blend_cnt == 4"); - OSReport("dummy_data != 0"); - OSReport("Always"); - OSReport("tmp_tex != 0"); - OSReport("tmp_img != 0"); - OSReport("texture != 0"); - OSReport("textureName != 0"); - OSReport("linktexS3TC"); - OSReport("Pjavdou"); - OSReport("ShipD"); - OSReport("Siren"); - OSReport("data_size < l_sanm_buffer_size"); -} - cXyz l_debug_keep_pos; csXyz l_debug_current_angle; csXyz l_debug_shape_angle; @@ -384,10 +257,114 @@ static BOOL daPy_auraCallback(J3DNode* node, int calcTiming) { } /* 80103494-80103A88 .text jointBeforeCB__9daPy_lk_cFiP16J3DTransformInfoP10Quaternion */ -BOOL daPy_lk_c::jointBeforeCB(int jnt_no, J3DTransformInfo*, Quaternion*) { - /* Nonmatching */ +BOOL daPy_lk_c::jointBeforeCB(int jnt_no, J3DTransformInfo* param_2, Quaternion* param_3) { static Mtx root_mtx; static Quaternion norm_quat = {0.0f, 0.0f, 0.0f, 1.0f}; + Quaternion local_20; + Quaternion afStack_30; + + csXyz local_38(0, 0, 0); + if (jnt_no == 0xF) { + local_38.set(m3566, m3568, m3564); + } else if (jnt_no == 0x1F) { + m34C6 = 2; + m3668.mScale = param_2->mScale; + m3668.mRotation = param_2->mRotation; + m3668.mTranslate = param_2->mTranslate; + param_2->mTranslate.x = param_2->mTranslate.x - mFootData[1].field_0x030; + } else if (jnt_no == 0x24) { + m34C6 = 2; + m3668.mScale = param_2->mScale; + m3668.mRotation = param_2->mRotation; + m3668.mTranslate = param_2->mTranslate; + param_2->mTranslate.x = param_2->mTranslate.x - mFootData[0].field_0x030; + } else if (jnt_no == 0x10) { + local_38.y = m3516; + local_38.z = m351A; + } else if (jnt_no == 0x11) { + local_38.y = m3518; + local_38.z = m351A; + } else if (jnt_no == 2) { + local_38.set(-mBodyAngle.z, mBodyAngle.y, mBodyAngle.x); + m34C6 = 2; + m3668.mScale = param_2->mScale; + m3668.mRotation = param_2->mRotation; + m3668.mTranslate = param_2->mTranslate; + param_2->mTranslate.y = param_2->mTranslate.y + m35D8; + } else if (jnt_no == 0) { + local_38.x = m34F2; + local_38.z = m34F4; + } else if ((((jnt_no == 10) || (jnt_no == 0xB)) && + (dComIfGp_checkPlayerStatus0(0, daPyStts0_SHIP_RIDE_e))) && + (m_old_fdata->getOldFrameFlg() != false)) + { + if (dComIfGp_getShipActor() != NULL) { + if (!fpcM_IsCreating(fopAcM_GetID(dComIfGp_getShipActor()))) { + if (!checkShipNotNormalMode()) { + setShipRideArmAngle(jnt_no, param_2); + param_2->mTranslate.x = 0.0f; + param_2->mTranslate.y = 0.0f; + param_2->mTranslate.z = 0.0f; + JMAQuatLerp(m_old_fdata->getOldFrameQuaternion(jnt_no), &norm_quat, + (1.0f - m_old_fdata->getOldFrameRate()), param_3); + } + } + } + } + if (!checkResetFlg0(daPyRFlg0_UNK800000)) { + if (jnt_no == 0x1A) { + JMAEulerToQuat(0, m34F8, m3528 + (m34F6 + -0x8000) + m350E, param_3); + } else if (jnt_no == 0x1B) { + JMAEulerToQuat(0, m34FC, m34FA + m3510, param_3); + } else if (jnt_no == 0x1C) { + JMAEulerToQuat(0, m3500, m34FE + m3512, param_3); + } + } + if (jnt_no == 0) { + if (m34C2 == 1) { + param_2->mTranslate.x = 0.0f; + param_2->mTranslate.z = 0.0f; + } else if (m34C2 == 5) { + param_2->mTranslate.x = 0.0f; + param_2->mTranslate.y = m35E0; + param_2->mTranslate.z = 0.0f; + } + } + if ((jnt_no == 0x1E) && ((m34E0 != 0 || (m34E4 != 0)))) { + local_38.y = m34E4; + local_38.z = m34E0; + } + if ((local_38.x != 0) || (local_38.y != 0) || (local_38.z != 0)) { + m34C6 = m34C6 | 1; + m3658 = *param_3; + if ((local_38.x != 0) || (local_38.y != 0)) { + local_20 = *param_3; + JMAEulerToQuat(local_38.x, local_38.y, 0, &afStack_30); + mDoMtx_QuatConcat(&local_20, &afStack_30, param_3); + } + if (local_38.z != 0) { + local_20 = *param_3; + JMAEulerToQuat(0, 0, local_38.z, &afStack_30); + mDoMtx_QuatConcat(&local_20, &afStack_30, param_3); + } + } + if (((checkUpperGuardAnime()) && (mCurProc != daPyProc_BACK_JUMP_e)) || + (((checkGrabAnime()) || (m_anm_heap_upper[UPPER_MOVE0_e].mIdx == LKANM_BCK_ATNBOKO)) || + (m_anm_heap_upper[UPPER_MOVE0_e].mIdx == LKANM_BCK_ATNHAM)) || + (checkUpperReadyThrowAnime())) + { + if (jnt_no == 0) { + m3648 = *param_3; + } else if (jnt_no == 1) { + mDoMtx_copy(J3DSys::mCurrentMtx, root_mtx); + mDoMtx_quat(mDoMtx_stack_c::now, &m3648); + mDoMtx_stack_c::inverse(); + mDoMtx_concat(J3DSys::mCurrentMtx, mDoMtx_stack_c::get(), J3DSys::mCurrentMtx); + } else if (jnt_no == 0x1D) { + mDoMtx_copy(root_mtx, J3DSys::mCurrentMtx); + } + } + return true; } /* 80103A88-80103AAC .text daPy_jointBeforeCallback__FUlUsP16J3DTransformInfoP10Quaternion */ @@ -433,7 +410,7 @@ BOOL daPy_lk_c::jointCB0(int param_1) { if (checkEquipAnime()) { if (!checkModeFlg(ModeFlg_00000001)) { - if ((param_1 == 1) || (param_1 == 0xd)) { + if ((param_1 == 1) || (param_1 == 0xD)) { m_pbCalc[PART_UPPER_e]->setRatio(2, 0.0f); } else if ((param_1 == 4) || (param_1 == 0x1c)) { m_pbCalc[PART_UPPER_e]->setRatio(2, 1.0f); @@ -443,26 +420,26 @@ BOOL daPy_lk_c::jointCB0(int param_1) { (checkUpperAnime(LKANM_BCK_ROPETHROW)) || ((mCurProc != daPyProc_GRAB_WAIT_e) && checkGrabAnime())) { - if (param_1 == 0xf) { + if (param_1 == 0xF) { m_pbCalc[PART_UPPER_e]->setRatio(2, 0.0f); - } else if (param_1 == 0x1c) { + } else if (param_1 == 0x1C) { m_pbCalc[PART_UPPER_e]->setRatio(2, 1.0f); } } else if ((dComIfGp_checkPlayerStatus0(0, daPyStts0_SHIP_RIDE_e)) && (!checkShipNotNormalMode())) { - if (param_1 == 0xf) { + if (param_1 == 0xF) { m_pbCalc[PART_UPPER_e]->setRatio(2, 1.0f); - } else if (param_1 == 0x1c) { + } else if (param_1 == 0x1C) { m_pbCalc[PART_UPPER_e]->setRatio(2, 0.0f); } } else if (checkUpperGuardAnime()) { - if ((param_1 == 0) || (param_1 == 0xd)) { + if ((param_1 == 0) || (param_1 == 0xD)) { if (param_1 == 0) { guard_rate = m_pbCalc[PART_UPPER_e]->getRatio(2); } m_pbCalc[PART_UPPER_e]->setRatio(2, 1.0f); - } else if ((param_1 == 4) || (param_1 == 0x1c)) { + } else if ((param_1 == 4) || (param_1 == 0x1C)) { m_pbCalc[PART_UPPER_e]->setRatio(2, guard_rate); } } else if ((dComIfGp_checkPlayerStatus1(0, daPyStts1_WIND_WAKER_CONDUCT_e)) && @@ -473,7 +450,7 @@ BOOL daPy_lk_c::jointCB0(int param_1) { } else if (param_1 == 8) { m_pbCalc[PART_UPPER_e]->setRatio(1, 1.0f); m_pbCalc[PART_UPPER_e]->setRatio(2, 0.0f); - } else if (param_1 == 0xc) { + } else if (param_1 == 0xC) { m_pbCalc[PART_UPPER_e]->setRatio(1, 0.0f); } } @@ -506,19 +483,19 @@ BOOL daPy_lk_c::jointCB1() { mDoMtx_stack_c::revConcat(mpCLModel->getAnmMtx(0x20)); mpCLModel->setAnmMtx(0x20, mDoMtx_stack_c::get()); mDoMtx_stack_c::transM(pJVar4->mTranslate.x, pJVar4->mTranslate.y, pJVar4->mTranslate.z); - mDoMtx_stack_c::quatM((pQVar2)); + mDoMtx_stack_c::quatM(pQVar2); pJVar4++; pQVar2++; mDoMtx_stack_c::ZrotM(mFootData[1].field_0x00A); mpCLModel->setAnmMtx(0x21, mDoMtx_stack_c::get()); mDoMtx_stack_c::transM(pJVar4->mTranslate.x, pJVar4->mTranslate.y, pJVar4->mTranslate.z); - mDoMtx_stack_c::quatM((pQVar2)); + mDoMtx_stack_c::quatM(pQVar2); pJVar4++; pQVar2++; mDoMtx_stack_c::ZrotM(mFootData[1].field_0x002); mpCLModel->setAnmMtx(0x22, mDoMtx_stack_c::get()); mDoMtx_stack_c::transM(pJVar4->mTranslate.x, pJVar4->mTranslate.y, pJVar4->mTranslate.z); - mDoMtx_stack_c::quatM((pQVar2)); + mDoMtx_stack_c::quatM(pQVar2); mpCLModel->setAnmMtx(0x23, mDoMtx_stack_c::get()); pJVar4 = m_old_fdata->getOldFrameTransInfo(0x26); pQVar2 = m_old_fdata->getOldFrameQuaternion(0x26); @@ -526,19 +503,19 @@ BOOL daPy_lk_c::jointCB1() { mDoMtx_stack_c::revConcat(mpCLModel->getAnmMtx(0x25)); mpCLModel->setAnmMtx(0x25, mDoMtx_stack_c::get()); mDoMtx_stack_c::transM(pJVar4->mTranslate.x, pJVar4->mTranslate.y, pJVar4->mTranslate.z); - mDoMtx_stack_c::quatM((pQVar2)); + mDoMtx_stack_c::quatM(pQVar2); pJVar4++; pQVar2++; mDoMtx_stack_c::ZrotM(mFootData[0].field_0x00A); mpCLModel->setAnmMtx(0x26, mDoMtx_stack_c::get()); mDoMtx_stack_c::transM(pJVar4->mTranslate.x, pJVar4->mTranslate.y, pJVar4->mTranslate.z); - mDoMtx_stack_c::quatM((pQVar2)); + mDoMtx_stack_c::quatM(pQVar2); pJVar4++; pQVar2++; mDoMtx_stack_c::ZrotM(mFootData[0].field_0x002); mpCLModel->setAnmMtx(0x27, mDoMtx_stack_c::get()); mDoMtx_stack_c::transM(pJVar4->mTranslate.x, pJVar4->mTranslate.y, pJVar4->mTranslate.z); - mDoMtx_stack_c::quatM((pQVar2)); + mDoMtx_stack_c::quatM(pQVar2); mpCLModel->setAnmMtx(0x28, mDoMtx_stack_c::get()); return true; } @@ -682,7 +659,7 @@ u16 daPy_lk_c::checkNormalFace() { if (mFace != daPyFace_UNKNOWN) { return mFace; } - if ((checkResetFlg0(daPyRFlg0_UNK40000))) { + if (checkResetFlg0(daPyRFlg0_UNK40000)) { return daPyFace_TMABAG; } if (checkUpperAnime(LKANM_BCK_GRABWAITB)) { @@ -691,7 +668,7 @@ u16 daPy_lk_c::checkNormalFace() { if (checkUpperAnime(LKANM_BCK_GRABWAIT)) { return daPyFace_TMABAE; } - if ((daPy_dmEcallBack_c::checkCurse()) || (checkRestHPAnime())) { + if ((daPy_dmEcallBack_c::checkCurse()) || checkRestHPAnime()) { return daPyFace_TMABAF; } if (checkNoDamageMode()) { @@ -706,14 +683,14 @@ u16 daPy_lk_c::checkNormalFace() { if (checkNoResetFlg0(daPyFlg0_HEAVY_STATE)) { return daPyFace_TMABAH; } - if (checkNoResetFlg1(daPyFlg1_UNK1000000) && (!checkModeFlg(ModeFlg_00000001))) { + if (checkNoResetFlg1(daPyFlg1_UNK1000000) && !checkModeFlg(ModeFlg_00000001)) { return daPyFace_TDASHKAZE; } if (((checkUpperReadyAnime() || ((checkNoResetFlg1(daPyFlg1_UNK400) || - ((mpAttnActorLockOn != NULL) && + (mpAttnActorLockOn != NULL && (fopAcM_GetGroup(mpAttnActorLockOn) == fopAc_ENEMY_e))))) || - (checkEquipHeavyBoots())) || - (mEquipItem == dItem_SKULL_HAMMER_e)) + checkEquipHeavyBoots()) || + mEquipItem == dItem_SKULL_HAMMER_e) { return daPyFace_TMABAC; } @@ -740,12 +717,12 @@ u16 daPy_lk_c::checkNormalFace() { return daPyFace_TMABACC; } } - if ((mCurProc == daPyProc_WAIT_e) && (!dComIfGp_event_runCheck())) { + if (mCurProc == daPyProc_WAIT_e && !dComIfGp_event_runCheck()) { f32 dVar7 = cM_rnd(); - if ((((m_tex_anm_heap.mIdx == LKANM_BTP_TMABAA) || - (m_tex_anm_heap.mIdx == LKANM_BTP_TMABAB)) && - (dVar7 < 0.01f)) || - (((m_tex_anm_heap.mIdx == LKANM_BTP_TMABACC && (dVar7 >= 0.01f))))) + if (((m_tex_anm_heap.mIdx == LKANM_BTP_TMABAA || + m_tex_anm_heap.mIdx == LKANM_BTP_TMABAB) && + dVar7 < 0.01f) || + (((m_tex_anm_heap.mIdx == LKANM_BTP_TMABACC && dVar7 >= 0.01f)))) { return daPyFace_TMABACC; } @@ -768,9 +745,9 @@ void daPy_lk_c::setTextureAnime(u16 param_1, int param_2) { } u16 btp_idx = mTexAnmIndexTable[param_1].mBtpIdx; u16 btk_idx = mTexAnmIndexTable[param_1].mBtkIdx; - if (((param_1 < 0x13) && - (checkMabaAnimeBtp(m_tex_anm_heap.mIdx))) && - (mFace == daPyFace_UNKNOWN)) + if ((param_1 < 0x13 && + checkMabaAnimeBtp(m_tex_anm_heap.mIdx)) && + mFace == daPyFace_UNKNOWN) { param_2 = m3530; bVar3 = true; @@ -778,19 +755,19 @@ void daPy_lk_c::setTextureAnime(u16 param_1, int param_2) { bVar3 = false; } if (m_tex_anm_heap.mIdx == btp_idx) { - if ((mFace == daPyFace_UNKNOWN) && (!checkModeFlg(ModeFlg_00000100 | ModeFlg_00000400))) { + if (mFace == daPyFace_UNKNOWN && !checkModeFlg(ModeFlg_00000100 | ModeFlg_00000400)) { m3530 = param_2; } } else { m_tex_anm_heap.mIdx = btp_idx; - if ((m_tex_anm_heap.field_0x2 == 0xFFFF) && (m_tex_anm_heap.field_0x4 == 0xFFFF)) { + if (m_tex_anm_heap.field_0x2 == 0xFFFF && m_tex_anm_heap.field_0x4 == 0xFFFF) { setTextureAnimeResource(loadTextureAnimeResource(btp_idx, 0), param_2); } } dVar9 = cM_rnd(); if (m_tex_scroll_heap.mIdx != btk_idx) { - if ((((bVar3) && (checkModeFlg(ModeFlg_00000001))) && (daPy_matAnm_c::m_maba_flg != 0)) && - (((!dComIfGp_event_runCheck() && (mpAttnActorLockOn == NULL)) && (btk_idx == LKANM_BTK_TMABA)))) + if (((bVar3 && checkModeFlg(ModeFlg_00000001)) && daPy_matAnm_c::m_maba_flg != 0) && + (((!dComIfGp_event_runCheck() && mpAttnActorLockOn == NULL) && btk_idx == LKANM_BTK_TMABA))) { if (daPy_matAnm_c::m_maba_timer == 0) { if (dVar9 < 0.44f) { @@ -832,7 +809,7 @@ void daPy_lk_c::setTextureAnime(u16 param_1, int param_2) { setTextureScrollResource(loadTextureScrollResource(btk_idx, 0), param_2); } } - } else if (((((bVar3) && (checkModeFlg(ModeFlg_00000001))) && (!dComIfGp_event_runCheck())) && + } else if ((((bVar3 && (checkModeFlg(ModeFlg_00000001))) && (!dComIfGp_event_runCheck())) && ((daPy_matAnm_c::m_maba_timer == 0 && (mpAttnActorLockOn == NULL)))) && (((btk_idx == LKANM_BTK_TMABA && ((m_tex_scroll_heap.field_0x2 == 0xFFFF && (m_tex_scroll_heap.field_0x4 == 0xFFFF)))) && @@ -858,7 +835,6 @@ void daPy_lk_c::setTextureAnime(u16 param_1, int param_2) { setTextureScrollResource(loadTextureScrollResource(m_tex_scroll_heap.mIdx, 0), 0); daPy_matAnm_c::onMabaFlg(); } - return; } /* 80104E08-80104EC8 .text setPriTextureAnime__9daPy_lk_cFUsi */ @@ -943,7 +919,6 @@ void daPy_lk_c::resetDemoTextureAnime() { } } } - return; } /* 80105164-80105220 .text setTextureScrollResource__9daPy_lk_cFP19J3DAnmTextureSRTKeyi */ @@ -1043,7 +1018,6 @@ void daPy_lk_c::playTextureAnime() { m3532 = mpTexScrollResData->getFrameMax(); } } - return; } /* 8010552C-8010558C .text checkPlayerGuard__9daPy_lk_cCFv */ @@ -1072,7 +1046,6 @@ void daPy_lk_c::setOutPower(f32 param_1, s16 param_2, int param_3) { if (param_3 != 0) { onNoResetFlg1(daPyFlg1_UNK10000000); } - return; } /* 801056E4-80105814 .text checkSightLine__9daPy_lk_cFfP4cXyz */ @@ -1118,7 +1091,6 @@ void daPy_lk_c::setBootsModel(J3DModel** pBootModels) { /* 80105910-80106660 .text setItemModel__9daPy_lk_cFv */ s32 daPy_lk_c::setItemModel() { - /* Nonmatching - regalloc */ f32 fVar1; f32 fVar2; f32 dVar15; @@ -1158,8 +1130,7 @@ s32 daPy_lk_c::setItemModel() { if (mEquipItem == daPyItem_UNK10A_e) { mDoMtx_stack_c::transS(50.0f, -48.0f, -14.0f); mDoMtx_stack_c::XYZrotM(-0x33FC, -0x2CC, 0x3519); - mDoMtx_stack_c::revConcat(dComIfGp_getShipActor()->mpHeadAnm->getModel()->getAnmMtx(0) + - 0x1e); + mDoMtx_stack_c::revConcat(dComIfGp_getShipActor()->mpHeadAnm->getModel()->getAnmMtx(0x0A)); mpEquipItemModel->setBaseTRMtx(mDoMtx_stack_c::get()); } else if (mEquipItem == daPyItem_UNK104_e) { mDoMtx_stack_c::transS(14.5f, 34.5f, 0.0f); @@ -1180,73 +1151,66 @@ s32 daPy_lk_c::setItemModel() { } else { mpEquipItemModel->setBaseTRMtx(mpCLModel->getAnmMtx(0xF)); } - } else if ((mEquipItem == dItem_DEKU_LEAF_e) || (mEquipItem == daPyItem_SWORD_e) || - (mEquipItem == dItem_WIND_WAKER_e) || - ((mEquipItem == dItem_SKULL_HAMMER_e || (mEquipItem == dItem_HOOKSHOT_e) || - ((mEquipItem == dItem_TINGLE_TUNER_e || - ((checkBottleItem(mEquipItem) || (checkPhotoBoxItem(mEquipItem))))))))) + } else if (mEquipItem == dItem_DEKU_LEAF_e || mEquipItem == daPyItem_SWORD_e || + mEquipItem == dItem_WIND_WAKER_e || mEquipItem == dItem_SKULL_HAMMER_e || + mEquipItem == dItem_HOOKSHOT_e || mEquipItem == dItem_TINGLE_TUNER_e || + checkBottleItem(mEquipItem) || checkPhotoBoxItem(mEquipItem)) { mpEquipItemModel->setBaseTRMtx(pMVar13); - if ((mEquipItem == dItem_DEKU_LEAF_e) && - ((mCurProc != daPyProc_FAN_SWING_e && (mCurProc != daPyProc_FAN_GLIDE_e)))) + if (mEquipItem == dItem_DEKU_LEAF_e && + (mCurProc != daPyProc_FAN_SWING_e && mCurProc != daPyProc_FAN_GLIDE_e)) { setShapeFanLeaf(); - } else { - if (checkBottleItem(mEquipItem)) { - if (mpBottleContentsModel != NULL) { - if (mEquipItem == dItem_FIREFLY_BOTTLE_e) { - cXyz bottleScale; // ? - fVar1 = - 1.0f + - 0.1f * cM_ssin(cM_rad2s(((37.699112f * mpEquipItemBrk->getFrame()) / - mpEquipItemBrk->getFrameMax()))); - bottleScale.setall(fVar1); - mDoMtx_stack_c::transS(11.0f, 0.0f, 0.0f); - mDoMtx_stack_c::revConcat(pMVar13); - mpBottleContentsModel->setBaseTRMtx(mDoMtx_stack_c::get()); - mpBottleContentsModel->setBaseScale(bottleScale); - simpleAnmPlay(mpEquipItemBrk); - } else { - mpBottleContentsModel->setBaseTRMtx(pMVar13); - } - } - if (mpBottleCapModel != NULL) { - mpBottleCapModel->setBaseTRMtx(pMVar13); - } - } else { - if ((mEquipItem == dItem_HOOKSHOT_e) && (pfVar11 != NULL)) { - if (fopAcM_GetParam(pfVar11) != 0) { - if (fopAcM_GetParam(pfVar11) == 1) { - m35EC += 1.0f; - } else { - m35EC -= 1.0f; - } - fVar2 = (mSwordAnim.getBckAnm()->getFrameMax()); - fVar1 = m35EC; - if (fVar1 < 0.0f) { - m35EC = fVar1 + fVar2; - } else if (fVar1 >= fVar2) { - m35EC = fVar1 - fVar2; - } - } - } else if ((mEquipItem == dItem_WIND_WAKER_e) && - ((mCurProc != daPyProc_TACT_WAIT_e && (mpEquipItemBrk != NULL)))) - { - fVar1 = mpEquipItemBrk->getFrame() - 1.0f; - if (fVar1 < 0.0f) { - fVar1 = 0.0f; - } - mpEquipItemBrk->setFrame(fVar1); + } else if (checkBottleItem(mEquipItem)) { + if (mpBottleContentsModel != NULL) { + if (mEquipItem == dItem_FIREFLY_BOTTLE_e) { + cXyz bottleScale; // ? + fVar1 = + 1.0f + 0.1f * cM_ssin(cM_rad2s( + (37.699112f * mpEquipItemBrk->getFrame()) / mpEquipItemBrk->getFrameMax() + )); + bottleScale.setall(fVar1); + mDoMtx_stack_c::transS(11.0f, 0.0f, 0.0f); + mDoMtx_stack_c::revConcat(pMVar13); + mpBottleContentsModel->setBaseTRMtx(mDoMtx_stack_c::get()); + mpBottleContentsModel->setBaseScale(bottleScale); + simpleAnmPlay(mpEquipItemBrk); + } else { + mpBottleContentsModel->setBaseTRMtx(pMVar13); } } + if (mpBottleCapModel != NULL) { + mpBottleCapModel->setBaseTRMtx(pMVar13); + } + } else if ((mEquipItem == dItem_HOOKSHOT_e) && (pfVar11 != NULL)) { + if (fopAcM_GetParam(pfVar11) != 0) { + if (fopAcM_GetParam(pfVar11) == 1) { + m35EC += 1.0f; + } else { + m35EC -= 1.0f; + } + fVar2 = (mSwordAnim.getBckAnm()->getFrameMax()); + fVar1 = m35EC; + if (fVar1 < 0.0f) { + m35EC = fVar1 + fVar2; + } else if (fVar1 >= fVar2) { + m35EC = fVar1 - fVar2; + } + } + } else if ((mEquipItem == dItem_WIND_WAKER_e) && + (mCurProc != daPyProc_TACT_WAIT_e && (mpEquipItemBrk != NULL))) + { + fVar1 = mpEquipItemBrk->getFrame() - 1.0f; + if (fVar1 < 0.0f) { + fVar1 = 0.0f; + } + mpEquipItemBrk->setFrame(fVar1); } + } else if (checkBowItem(mEquipItem)) { + mpEquipItemModel->setBaseTRMtx(pMVar6); } else { - if (checkBowItem(mEquipItem)) { - mpEquipItemModel->setBaseTRMtx(pMVar6); - } else { - if (mEquipItem == daPyItem_UNK102_e) { - mpEquipItemModel->setBaseTRMtx(mpCLModel->getAnmMtx(0x4)); - } + if (mEquipItem == daPyItem_UNK102_e) { + mpEquipItemModel->setBaseTRMtx(mpCLModel->getAnmMtx(0x4)); } } if ((mSwordAnim.getBckAnm() != NULL) && (mCurProc != daPyProc_DEMO_TALISMAN_WAIT_e)) { @@ -1262,17 +1226,17 @@ s32 daPy_lk_c::setItemModel() { } } mpEquippedSwordModel = mpSwgripmsModel; - s32 lVar12; + s32 r27; if (!checkSwordEquip()) { - lVar12 = 0; + r27 = 0; mSwgripmsabBckAnim.entry(mpSwgripmsModel->getModelData(), 0.0f); mpTswgripmsabBrk->setFrame(0.0f); } else { if (checkNormalSwordEquip()) { - lVar12 = 1; + r27 = 1; mpEquippedSwordModel = mpSwgripaModel; } else if (checkFinalMasterSwordEquip()) { - lVar12 = 3; + r27 = 3; mSwgripmsabBckAnim.entry(mpSwgripmsModel->getModelData(), 1.0f); mpTswgripmsabBrk->setFrame(1.0f); if ((mpEquipItemModel != NULL) && (mEquipItem == daPyItem_SWORD_e)) { @@ -1285,10 +1249,10 @@ s32 daPy_lk_c::setItemModel() { } else { if (dComIfGs_getSelectEquip(0) == dItem_MASTER_SWORD_2_e) { mSwgripmsabBckAnim.entry(mpSwgripmsModel->getModelData(), 1.0f); - lVar12 = 4; + r27 = 4; } else { mSwgripmsabBckAnim.entry(mpSwgripmsModel->getModelData(), 0.0f); - lVar12 = 2; + r27 = 2; } mpTswgripmsabBrk->setFrame(0.0f); if ((mpEquipItemModel != NULL) && (mEquipItem == daPyItem_SWORD_e)) { @@ -1310,17 +1274,18 @@ s32 daPy_lk_c::setItemModel() { } if (mEquipItem == daPyItem_SWORD_e) { mpEquippedSwordModel->setBaseTRMtx(pMVar13); - mDoAud_zelAudio_c::getInterface()->setLinkSwordType(lVar12, 1); + mDoAud_zelAudio_c::getInterface()->setLinkSwordType(r27, 1); } else { mDoMtx_stack_c::transS(-11.25f, 4.5f, 0.45f); mDoMtx_stack_c::ZrotM(-0x1C71); mDoMtx_stack_c::revConcat(pMVar14); mpEquippedSwordModel->setBaseTRMtx(mDoMtx_stack_c::get()); - mDoAud_zelAudio_c::getInterface()->setLinkSwordType(lVar12, 2); + mDoAud_zelAudio_c::getInterface()->setLinkSwordType(r27, 2); } mpEquippedSwordModel->calc(); + int r27_2; if (dComIfGs_getSelectEquip(1) == dItem_MIRROR_SHIELD_e) { - lVar12 = 2; + r27_2 = 2; mpEquippedShieldModel = mpShmsModel; if (mpTshmsBtk != NULL) { dVar16 = mpTshmsBtk->getFrame(); @@ -1333,24 +1298,24 @@ s32 daPy_lk_c::setItemModel() { } } } else if (dComIfGs_getSelectEquip(1) != dItem_NONE_e) { - lVar12 = 1; + r27_2 = 1; mpEquippedShieldModel = mpShaModel; } else { - lVar12 = 0; + r27_2 = 0; mpEquippedShieldModel = mpShaModel; } if (mCurProc == daPyProc_DEMO_LAST_COMBO_e) { mpEquippedShieldModel->setBaseTRMtx(mpCLModel->getBaseTRMtx()); - mDoAud_zelAudio_c::getInterface()->setLinkShieldType(lVar12, 1); + mDoAud_zelAudio_c::getInterface()->setLinkShieldType(r27_2, 1); } else if ((((mCurProc != daPyProc_DEMO_TOOL_e) && (mEquipItem == daPyItem_SWORD_e)) || ((mCurProc == daPyProc_DEMO_TOOL_e && (m34D4 == 1)))) || (((checkPlayerGuard() && (mEquipItem != dItem_SKULL_HAMMER_e)) || (mCurProc == daPyProc_GUARD_CRASH_e)))) { mpEquippedShieldModel->setBaseTRMtx(pMVar6); - mDoAud_zelAudio_c::getInterface()->setLinkShieldType(lVar12, 1); + mDoAud_zelAudio_c::getInterface()->setLinkShieldType(r27_2, 1); } else { - if (lVar12 == 2) { + if (r27_2 == 2) { mDoMtx_stack_c::transS(15.5f, 4.75f, -0.2f); } else { mDoMtx_stack_c::transS(15.5f, 4.75f, 0.0f); @@ -1358,7 +1323,7 @@ s32 daPy_lk_c::setItemModel() { mDoMtx_stack_c::ZrotM(-0x4000); mDoMtx_stack_c::revConcat(pMVar14); mpEquippedShieldModel->setBaseTRMtx(mDoMtx_stack_c::get()); - if ((lVar12 == 2) && (((m_anm_heap_under[UNDER_MOVE0_e].mIdx == LKANM_BCK_WALK || + if ((r27_2 == 2) && (((m_anm_heap_under[UNDER_MOVE0_e].mIdx == LKANM_BCK_WALK || (m_anm_heap_under[UNDER_MOVE0_e].mIdx == LKANM_BCK_WALKS)) || ((m_anm_heap_under[UNDER_MOVE0_e].mIdx == LKANM_BCK_DASHS || (m_anm_heap_under[UNDER_MOVE0_e].mIdx == LKANM_BCK_DASH)))))) @@ -1377,7 +1342,7 @@ s32 daPy_lk_c::setItemModel() { mDoMtx_stack_c::now[2][3] = dVar17; mpEquippedShieldModel->setBaseTRMtx(mDoMtx_stack_c::get()); } - mDoAud_zelAudio_c::getInterface()->setLinkShieldType(lVar12, 2); + mDoAud_zelAudio_c::getInterface()->setLinkShieldType(r27_2, 2); } mAtngshaBck.entry(mpEquippedShieldModel->getModelData(), m35E8); mpEquippedShieldModel->calc(); @@ -1427,8 +1392,104 @@ BOOL daPy_lk_c::checkNoCollisionCorret() { } /* 801067D8-80106BD0 .text setDrawHandModel__9daPy_lk_cFv */ -void daPy_lk_c::setDrawHandModel() { - /* Nonmatching */ +s32 daPy_lk_c::setDrawHandModel() { + u8 uVar4; + u8 uVar5; + + mpLhandShape->hide(); + mpRhandShape->hide(); + if (mCurProc == daPyProc_DEMO_TOOL_e) { + uVar4 = mLeftHandIdx; + uVar5 = mRightHandIdx; + } else if ((checkGrabAnime()) || (checkBoomerangThrowAnime()) || (checkBoomerangCatchAnime())) { + uVar4 = 0; + uVar5 = 0; + } else if (checkHookshotReadyAnime()) { + uVar4 = 3; + uVar5 = 0; + } else if (checkBowReadyAnime()) { + uVar4 = 3; + uVar5 = 10; + } else if (checkBowShootAnime()) { + uVar4 = 6; + uVar5 = 10; + } else if (checkBoomerangReadyAnime()) { + uVar4 = 0; + uVar5 = 7; + } else if ((checkBottleItem(mEquipItem)) || (checkPhotoBoxItem(mEquipItem))) { + uVar4 = 6; + uVar5 = mRightHandIdx; + } else if (checkBowItem(mEquipItem)) { + uVar4 = mLeftHandIdx; + uVar5 = 8; + } else if (mEquipItem == daPyItem_BOKO_e) { + uVar4 = 3; + uVar5 = 9; + } else if (mEquipItem == daPyItem_SWORD_e) { + uVar4 = 3; + if (dComIfGs_getSelectEquip(1) != dItem_NONE_e) { + uVar5 = 8; + } else { + uVar5 = mRightHandIdx; + } + } else if (((mEquipItem == dItem_GRAPPLING_HOOK_e) && (!checkModeFlg(ModeFlg_ROPE))) || + ((mEquipItem == dItem_SKULL_HAMMER_e && (mCutType == 0)))) + { + uVar4 = 3; + uVar5 = 8; + } else if (mEquipItem == dItem_BOOMERANG_e) { + uVar4 = 0; + uVar5 = mRightHandIdx; + } else if (mEquipItem == dItem_WIND_WAKER_e) { + uVar4 = 5; + uVar5 = mRightHandIdx; + } else if (mEquipItem == dItem_HOOKSHOT_e) { + uVar4 = 2; + uVar5 = mRightHandIdx; + } else if (mEquipItem == dItem_DEKU_LEAF_e) { + uVar4 = 3; + uVar5 = mRightHandIdx; + } else if (mEquipItem == dItem_TELESCOPE_e) { + uVar4 = 1; + uVar5 = mRightHandIdx; + } else { + if ((mEquipItem == daPyItem_NONE_e) && (checkUpperAnime(LKANM_BCK_TAKEBOTH))) { + uVar4 = 1; + } else if ((mEquipItem == daPyItem_NONE_e) && (checkItemEquipAnime())) { + uVar4 = 0; + } else { + uVar4 = mLeftHandIdx; + } + if ((checkPlayerGuard()) || (mCurProc == daPyProc_GUARD_CRASH_e)) { + uVar5 = 8; + } else if ((mEquipItem == daPyItem_NONE_e) && (checkUpperAnime(LKANM_BCK_TAKEBOTH))) { + uVar5 = 7; + } else if ((mEquipItem == daPyItem_NONE_e) && (checkItemEquipAnime())) { + uVar5 = 0; + } else { + uVar5 = mRightHandIdx; + } + } + if (checkPlayerGuard()) { + uVar5 = 8; + } + if (uVar4 == 0) { + mpLhandShape = mpCLModelData->getJointNodePointer(0x8)->getMesh()->getShape(); + } else { + mpLhandShape = + mpHandsModel->getModelData()->getJointNodePointer(uVar4)->getMesh()->getShape(); + mpHandsModel->setAnmMtx(uVar4, mpCLModel->getAnmMtx(8)); + } + mpLhandShape->show(); + if (uVar5 == 0) { + mpRhandShape = mpCLModelData->getJointNodePointer(0xC)->getMesh()->getShape(); + } else { + mpRhandShape = + mpHandsModel->getModelData()->getJointNodePointer(uVar5)->getMesh()->getShape(); + mpHandsModel->setAnmMtx(uVar5, mpCLModel->getAnmMtx(0xC)); + } + mpRhandShape->show(); + return true; } /* 80106BD0-80106C40 .text entryDLSetLight__9daPy_lk_cFP8J3DModelUl */ @@ -1453,22 +1514,19 @@ void daPy_lk_c::updateDLSetLight(J3DModel* model, u32 param_2) { /* 80106CB0-80106D8C .text hideHatAndBackle__9daPy_lk_cFP11J3DMaterial */ void daPy_lk_c::hideHatAndBackle(J3DMaterial* param_1) { - /* Nonmatching - missing "mr" instruction */ - int iVar3; - - for (iVar3 = 0, param_1 = 0; param_1 != NULL; iVar3++, param_1 = param_1->getNext()) { - if (((!checkNoResetFlg1(daPyFlg1_FREEZE_STATE)) && ((iVar3 == 2 || (iVar3 == 5)))) || - ((iVar3 == 4) && ((checkCaughtShapeHide()) || (checkNoResetFlg1(daPyFlg1_CASUAL_CLOTHES))))) + for (int i = 0; param_1 != NULL; i++) { + if (((!checkNoResetFlg1(daPyFlg1_FREEZE_STATE)) && ((i == 2 || (i == 5)))) || + ((i == 4) && ((checkCaughtShapeHide()) || (checkNoResetFlg1(daPyFlg1_CASUAL_CLOTHES))))) { param_1->getShape()->hide(); } else { param_1->getShape()->show(); } + param_1 = param_1->getNext(); } if (checkNoResetFlg1(daPyFlg1_CASUAL_CLOTHES)) { mpCLModelData->getJointNodePointer(0x29)->getMesh()->getShape()->hide(); } - return; } /* 80106D8C-80106E50 .text drawMirrorLightModel__9daPy_lk_cFv */ @@ -1481,7 +1539,6 @@ void daPy_lk_c::drawMirrorLightModel() { dComIfGd_getXluList()->entryImm(&mMirrorPacket, 0xFF); updateDLSetLight(mpYmsls00Model, 0); } - return; } /* 80106E50-80107210 .text drawShadow__9daPy_lk_cFv */ @@ -1556,7 +1613,6 @@ void daPy_lk_c::drawShadow() { } } } - return; } /* 80107210-8010728C .text offBodyEffect__9daPy_lk_cFv */ @@ -1577,7 +1633,6 @@ void daPy_lk_c::offBodyEffect() { return; } m3460[1].getEmitter()->stopDrawParticle(); - return; } /* 8010728C-80107308 .text onBodyEffect__9daPy_lk_cFv */ @@ -1598,7 +1653,6 @@ void daPy_lk_c::onBodyEffect() { return; } m3460[1].getEmitter()->playDrawParticle(); - return; } /* 80107308-80108204 .text draw__9daPy_lk_cFv */ @@ -1953,7 +2007,6 @@ void daPy_lk_c::setAtnList() { if (mpAttnEntryZ != NULL) { mpAttnActorZ = mpAttnEntryZ->getActor(); } - return; } /* 8010841C-8010848C .text setActor__16daPy_actorKeep_cFv */ @@ -2095,7 +2148,6 @@ void daPy_lk_c::setDoStatusBasic() { } } } - return; } /* 801088E8-80108A9C .text setDoStatus__9daPy_lk_cFv */ @@ -2142,7 +2194,6 @@ void daPy_lk_c::setDoStatus() { } } setDoStatusBasic(); - return; } /* 80108A9C-80108B08 .text getDirectionFromAngle__9daPy_lk_cFs */ @@ -2169,30 +2220,66 @@ int daPy_lk_c::getDirectionFromCurrentAngle() { } /* 80108B68-80108D80 .text setNormalSpeedF__9daPy_lk_cFffff */ -void daPy_lk_c::setNormalSpeedF(f32, f32, f32, f32) { - /* Nonmatching */ +void daPy_lk_c::setNormalSpeedF(f32 param_1, f32 param_2, f32 param_3, f32 param_4) { + s16 uVar2; + f32 dVar6; + f32 dVar10; + + if (((dComIfGp_event_runCheck()) || (checkHeavyStateOn())) || (checkGrabWear())) { + dVar10 = mMaxNormalSpeed * mStickDistance; + } else { + dVar10 = mStickDistance * (mMaxNormalSpeed * mStickDistance); + } + if ((mDemo.getDemoMode() == daPy_demo_c::DEMO_UNK0E_e) || (getSlidePolygon() != NULL)) { + return; + } + if (mAcch.ChkWallHit()) { + uVar2 = 0; + dBgS_AcchCir* pdVar4 = &mAcchCir[0]; + for (int i = 0; i < 3; i++, pdVar4++) { + if (pdVar4->ChkWallHit()) { + uVar2 = (current.angle.y + 0x8000) - pdVar4->GetWallAngleY(); + break; + } + } + if (abs(uVar2) < 0x4000) { + dVar10 *= (1.0f - cM_scos(uVar2) * daPy_HIO_basic_c0::m.field_0x14); + } + } + f32 temp_f3; + if (dVar10 < mVelocity) { + f32 temp_f0 = mVelocity - dVar10; + if (temp_f0 > param_3) { + temp_f3 = param_3; + } else { + temp_f3 = temp_f0; + } + if (temp_f3 < param_4) { + temp_f3 = param_4; + } + param_1 = 0.0f; + dVar6 = dVar10; + } else { + temp_f3 = param_3; + dVar6 = 0.0f; + } + if (!(cM3d_IsZero(param_1))) { + mVelocity += param_1; + if (mVelocity > dVar10) { + mVelocity = dVar10; + } + } else { + cLib_addCalc(&mVelocity, dVar6, param_2, temp_f3, param_4); + } } /* 80108D80-8010959C .text posMoveFromFootPos__9daPy_lk_cFv */ void daPy_lk_c::posMoveFromFootPos() { - /* Nonmatching - first for loop, math */ - static const Vec rtoe_pos_offset = {-14.05f, 0.0f, 5.02f}; - static const Vec rheel_pos_offset = {-10.85f, 0.0f, -6.52f}; - s16 sVar5; - uint uVar2; - int iVar7; - f32 dVar12; - f32 dVar13; - f32 dVar14; - cXyz local_c0; - cXyz local_b4; - cXyz local_90; - cXyz local_78[3]; - cXyz local_60[3]; - if (m_old_fdata->getOldFrameFlg() == false) { m34BC = 2; speedF = 0.0f; + static const Vec rtoe_pos_offset = {-14.05f, 0.0f, 5.02f}; + static const Vec rheel_pos_offset = {-10.85f, 0.0f, -6.52f}; mFootData[0].field_0x018 = rtoe_pos_offset; mFootData[0].field_0x00C = rheel_pos_offset; mFootData[1].field_0x018.x = -rtoe_pos_offset.x; @@ -2201,131 +2288,262 @@ void daPy_lk_c::posMoveFromFootPos() { mFootData[1].field_0x00C.x = -rheel_pos_offset.x; mFootData[1].field_0x00C.y = rheel_pos_offset.y; mFootData[1].field_0x00C.z = rheel_pos_offset.z; - - } else { - mDoMtx_concat(m37B4, mpCLModel->getAnmMtx(0x22), mDoMtx_stack_c::now); - mDoMtx_stack_c::multVec(&l_toe_pos, local_60); - mDoMtx_stack_c::multVec(&l_heel_pos, local_78); - mDoMtx_concat(m37B4, mpCLModel->getAnmMtx(0x27), mDoMtx_stack_c::now); - mDoMtx_stack_c::multVec(&l_toe_pos, local_60); - mDoMtx_stack_c::multVec(&l_heel_pos, local_78); - mDoMtx_concat(m37B4, mpCLModel->getAnmMtx(0x1e), mDoMtx_stack_c::now); - dVar14 = cM_ssin(m34E0); - dVar12 = cM_scos(m34E0); - for (iVar7 = 0; iVar7 < 2; iVar7++) { - local_90 = (local_78[0] + local_b4); - local_b4 *= 0.5f; - local_78[iVar7].x = mDoMtx_stack_c::now[1][3]; - local_78[iVar7].y = mDoMtx_stack_c::now[1][3] - dVar14; - local_78[iVar7].z = mDoMtx_stack_c::now[2][3] - dVar12; - } - if (local_b4.y < local_b4.x) { - m34BC = 0; - } else { - m34BC = 1; - } - local_c0 = (local_b4 - mFootData[0].field_0x018); - dVar12 = local_c0.absXZ(); - if ((m3598 < 1.0f) && (std::abs(m35B4 - mStickDistance) < 0.2f)) { - dVar12 = ((dVar12 * 0.3f) + 0.7f * m359C); - } - dVar14 = mVelocity; - local_c0.x = dVar14 * (1.0f - m3598); - if (mVelocity < 0.0f) { - local_c0.x -= (dVar12 * dVar14); - } else { - local_c0.x += (dVar12 * dVar14); - } - if (((!mAcch.ChkGroundHit()) || (!dComIfG_Bgsp()->ChkPolySafe(mAcch.m_gnd))) || - (m3580 == 8)) - { - sVar5 = 0; - } else { - sVar5 = getGroundAngle(&mAcch.m_gnd, current.angle.y); - } - f32 fVar1 = 0.0f; - local_c0.x *= cM_scos(sVar5); - if (local_c0.x < 0) { - local_c0.x *= 0.85f; - } - if (std::abs(local_c0.x) < 0.05f) { - speedF = 0.0f; - speed.x = fVar1; - speed.z = fVar1; - } else { - speedF = local_c0.x; - fVar1 = 0.0f; - if (mCurProc == daPyProc_SWIM_MOVE_e) { - uVar2 = cM_rad2s((M_PI * (mFrameCtrlUnder[UNDER_MOVE0_e].getFrame() / - mFrameCtrlUnder[UNDER_MOVE0_e].getEnd()))); - dVar13 = std::abs(cM_scos((uVar2 & 0xFFFF))); - dVar14 = getSwimTimerRate(); - fVar1 = ((1.0f + (dVar14 * daPy_HIO_swim_c0::m.field_0x7C) + - (speedF * dVar13) * daPy_HIO_swim_c0::m.field_0x60) / - (speedF * (1.0f - daPy_HIO_swim_c0::m.field_0x7C))); - speed.x = fVar1 * cM_ssin(current.angle.y); - speed.z = fVar1 * cM_scos(current.angle.y); - } else if (((mCurProc != daPyProc_CUT_ROLL_e) || (!dComIfGp_event_runCheck())) || - ((mDemo.getDemoType() != 0 || - (mDemo.getDemoMode() == daPy_demo_c::DEMO_UNK2B_e)))) - { - speed.x = speedF * cM_ssin(current.angle.y); - speed.z = speedF * cM_scos(current.angle.y); - } else { - speed.x = 0.0f; - speed.z = fVar1; - } - } - m36AC = m36A0; - if (((!checkModeFlg(ModeFlg_MIDAIR | ModeFlg_WHIDE | ModeFlg_HANG | ModeFlg_ROPE | - ModeFlg_IN_SHIP | ModeFlg_CLIMB | ModeFlg_PUSHPULL | ModeFlg_LADDER | - ModeFlg_CRAWL | ModeFlg_CAUGHT)) && - (!dComIfGp_event_runCheck())) && - ((mDemo.getDemoType() == 0 && - ((((!checkHeavyStateOn() && (mCurrAttributeCode == dBgS_Attr_ICE_e)) && - (!checkNoResetFlg0(daPy_FLG0(daPyFlg0_UNK20000000 | daPyFlg0_UNK80000000)))) && - ((!mAcch.ChkWallHit() && (mAcch.ChkGroundHit())))))))) - { - cLib_addCalc(&m36A0.x, 0.0f, 0.03f, 100.0f, 0.5f); - cLib_addCalc(&m36A0.z, 0.0f, 0.03f, 100.0f, 0.5f); - m36A0 += (mOldSpeed - speed) * 0.75f; - speed += (mOldSpeed - speed) * 0.25f; - } else { - fVar1 = 0.0f; - m36A0.x = 0.0f; - m36A0.z = fVar1; - } - m36A0.y = 0.0f; - setBeltConveyerPower(); - setWindAtPower(); - dVar14 = speed.y; - if (checkHeavyStateOn()) { - speed.y += gravity * 2.25f; - if (speed.y < (maxFallSpeed * 1.5f)) { - speed.y = (maxFallSpeed * 1.5f); - } - } else { - speed.y += gravity; - if (speed.y < maxFallSpeed) { - speed.y = maxFallSpeed; - } - } - if ((speed.y <= 0.0f) && (dVar14 > 0.0f)) { - m35F0 = current.pos.y; - } - current.pos += speed; - for (iVar7 = 0; iVar7 < 2; iVar7++) { - mFootData[iVar7].field_0x018 = local_60[iVar7]; - mFootData[iVar7].field_0x00C = local_78[iVar7]; - } - m359C = dVar12; + return; } - return; + + cXyz spB0[2]; + cXyz sp98[2]; + mDoMtx_concat(m37B4, mpCLModel->getAnmMtx(0x22), mDoMtx_stack_c::get()); + mDoMtx_stack_c::multVec(&l_toe_pos, &spB0[1]); + mDoMtx_stack_c::multVec(&l_heel_pos, &sp98[1]); + mDoMtx_concat(m37B4, mpCLModel->getAnmMtx(0x27), mDoMtx_stack_c::get()); + mDoMtx_stack_c::multVec(&l_toe_pos, &spB0[0]); + mDoMtx_stack_c::multVec(&l_heel_pos, &sp98[0]); + mDoMtx_concat(m37B4, mpCLModel->getAnmMtx(0x1E), mDoMtx_stack_c::get()); + MtxP r26 = mDoMtx_stack_c::get(); + f32 f31 = cM_ssin(m34E0); + f32 f30 = cM_scos(m34E0); + f32 sp0C[2]; + cXyz sp80[2]; + for (int i = 0; i < 2; i++) { + sp80[i] = sp98[i] + spB0[i]; + sp80[i] *= 0.5f; + f32 f2 = r26[1][3] + f30 * (sp80[i].y - r26[1][3]); + sp0C[i] = f2 + f31 * (sp80[i].z - r26[2][3]); + } + if (sp0C[0] < sp0C[1]) { + m34BC = 0; + } else { + m34BC = 1; + } + cXyz sp7C; + cXyz sp68; + sp68 = spB0[m34BC] - mFootData[m34BC].field_0x018; + f32 f31_2 = sp68.absXZ(); + if ((m3598 < 1.0f) && (std::abs(m35B4 - mStickDistance) < 0.2f)) { + f31_2 = ((f31_2 * 0.3f) + 0.7f * m359C); + } + sp7C.z = mVelocity * (1.0f - m3598); + if (mVelocity < 0.0f) { + sp7C.z -= (f31_2 * m3598); + } else { + sp7C.z += (f31_2 * m3598); + } + s16 r3; + if (((!mAcch.ChkGroundHit()) || (!dComIfG_Bgsp()->ChkPolySafe(mAcch.m_gnd))) || (m3580 == 8)) { + r3 = 0; + } else { + r3 = getGroundAngle(&mAcch.m_gnd, current.angle.y); + } + sp7C.z *= cM_scos(r3); + if (r3 < 0) { + sp7C.z *= 0.85f; + } + if (std::abs(sp7C.z) < 0.05f) { + speedF = 0.0f; + speed.x = 0.0f; + speed.z = 0.0f; + } else { + speedF = sp7C.z; + if (mCurProc == daPyProc_SWIM_MOVE_e) { + u16 r3 = + cM_rad2s(M_PI * (mFrameCtrlUnder[UNDER_MOVE0_e].getFrame() / mFrameCtrlUnder[UNDER_MOVE0_e].getEnd())); + f32 f30; + f30 = std::abs(cM_scos(r3 & 0xFFFF)); + f32 f1 = + ((speedF * (1.0f - daPy_HIO_swim_c0::m.field_0x60)) + daPy_HIO_swim_c0::m.field_0x60 * (speedF * f30)) / + (1.0f + (daPy_HIO_swim_c0::m.field_0x7C * getSwimTimerRate())); + speed.x = f1 * cM_ssin(current.angle.y); + speed.z = f1 * cM_scos(current.angle.y); + } else if (((mCurProc != daPyProc_CUT_ROLL_e) || (!dComIfGp_event_runCheck())) || + (mDemo.getDemoType() != 0 || (mDemo.getDemoMode() == daPy_demo_c::DEMO_UNK2B_e))) + { + speed.x = speedF * cM_ssin(current.angle.y); + speed.z = speedF * cM_scos(current.angle.y); + } else { + speed.x = 0.0f; + speed.z = 0.0f; + } + } + m36AC = m36A0; + if (!checkModeFlg( + // Note: These flags combine into 0x11612832. + ModeFlg_MIDAIR | ModeFlg_WHIDE | ModeFlg_HANG | ModeFlg_ROPE | ModeFlg_IN_SHIP | ModeFlg_CLIMB | + ModeFlg_PUSHPULL | ModeFlg_LADDER | ModeFlg_CRAWL | ModeFlg_CAUGHT + ) && + !dComIfGp_event_runCheck() && mDemo.getDemoType() == 0 && !checkHeavyStateOn() && + mCurrAttributeCode == dBgS_Attr_ICE_e && + !checkNoResetFlg0(daPy_FLG0(daPyFlg0_UNK20000000 | daPyFlg0_UNK80000000)) && !mAcch.ChkWallHit() && + mAcch.ChkGroundHit()) + { + cLib_addCalc(&m36A0.x, 0.0f, 0.03f, 100.0f, 0.5f); + cLib_addCalc(&m36A0.z, 0.0f, 0.03f, 100.0f, 0.5f); + m36A0 += (mOldSpeed - speed) * 0.75f; + speed += (mOldSpeed - speed) * 0.25f; + } else { + m36A0.x = 0.0f; + m36A0.z = 0.0f; + } + m36A0.y = 0.0f; + setBeltConveyerPower(); + setWindAtPower(); + f32 f1 = speed.y; + if (checkHeavyStateOn()) { + speed.y += gravity * 2.25f; + if (speed.y < (maxFallSpeed * 1.5f)) { + speed.y = maxFallSpeed * 1.5f; + } + } else { + speed.y += gravity; + if (speed.y < maxFallSpeed) { + speed.y = maxFallSpeed; + } + } + if (speed.y <= 0.0f && f1 > 0.0f) { + m35F0 = current.pos.y; + } + current.pos += speed; + for (int i = 0; i < 2; i++) { + mFootData[i].field_0x018 = spB0[i]; + mFootData[i].field_0x00C = sp98[i]; + } + m359C = f31_2; } /* 8010959C-80109E80 .text posMove__9daPy_lk_cFv */ void daPy_lk_c::posMove() { - /* Nonmatching */ + mDoExt_MtxCalcAnmBlendTblOld* pmVar10 = m_pbCalc[PART_UNDER_e]; + cXyz sp8C = m3700; + J3DAnmTransform* pJVar5 = pmVar10->getAnmTransform(0); + J3DTransformInfo spB8; + pJVar5->getTransform(0, &spB8); + pJVar5 = pmVar10->getAnmTransform(1); + if (pJVar5 != NULL) { + J3DTransformInfo sp98; + pJVar5->getTransform(0, &sp98); + f32 fVar2 = pmVar10->getRatio(1); + f32 fVar4 = 1.0f - fVar2; + spB8.mTranslate.x = spB8.mTranslate.x * fVar4 + sp98.mTranslate.x * fVar2; + spB8.mTranslate.y = spB8.mTranslate.y * fVar4 + sp98.mTranslate.y * fVar2; + spB8.mTranslate.z = spB8.mTranslate.z * fVar4 + sp98.mTranslate.z * fVar2; + } + J3DTransformInfo* pJVar11 = m_old_fdata->getOldFrameTransInfo(0); + f32 dVar15 = cM_ssin(shape_angle.y); + f32 dVar14 = cM_scos(shape_angle.y); + cXyz sp80; + cXyz sp74; + if (m34C2 == 11) { + sp80 = current.pos - old.pos; + pJVar11->mTranslate.x -= (-dVar15 * sp80.z) + (dVar14 * sp80.x); + pJVar11->mTranslate.y -= sp80.y; + pJVar11->mTranslate.z -= (dVar14 * sp80.z) + (dVar15 * sp80.x); + } else if (m34C2 == 10) { + sp80.set( + spB8.mTranslate.x - pJVar11->mTranslate.x, + spB8.mTranslate.y - pJVar11->mTranslate.y, + spB8.mTranslate.z - pJVar11->mTranslate.z + ); + sp74.set((dVar15 * sp80.z) + (dVar14 * sp80.x), sp80.y, (dVar14 * sp80.z) - (dVar15 * sp80.x)); + current.pos -= sp74; + old.pos -= sp74; + pJVar11->mTranslate.x = spB8.mTranslate.x; + pJVar11->mTranslate.y = spB8.mTranslate.y; + pJVar11->mTranslate.z = spB8.mTranslate.z; + } else if (m34C2 == 2 || m34C2 == 6) { + pJVar11->mTranslate.x = spB8.mTranslate.x; + pJVar11->mTranslate.z = spB8.mTranslate.z; + if (m34C2 == 6) { + pJVar11->mTranslate.y = spB8.mTranslate.y; + } + } else if (m34C2 == 4) { + m3700.x = 0.0f; + m3700.z = 0.0f; + sp8C.x = 0.0f; + sp8C.z = 0.0f; + sp8C.y = spB8.mTranslate.y; + pJVar11->mTranslate.x = 0.0f; + pJVar11->mTranslate.z = 0.0f; + pJVar11->mTranslate.y = spB8.mTranslate.y; + m35E0 = spB8.mTranslate.y; + m34C2 = 5; + } else if (m34C2 == 7 || m34C2 == 3) { + sp8C.x = spB8.mTranslate.x; + sp8C.y = spB8.mTranslate.y; + sp8C.z = spB8.mTranslate.z; + if (m34C2 == 7) { + m34C2 = 5; + } else { + m34C2 = 1; + } + } + m3700 = spB8.mTranslate; + posMoveFromFootPos(); + if (!checkNoCollisionCorret()) { + current.pos += *mStts.GetCCMoveP(); + if (!dComIfGp_event_runCheck() && mDemo.getDemoType() == 0) { + if (!checkNoResetFlg1(daPyFlg1_UNK10000000) || !checkHeavyStateOn()) { + current.pos.x += m3644 * cM_ssin(m3640); + current.pos.z += m3644 * cM_scos(m3640); + } + if (mWhirlId != fpcM_ERROR_PROCESS_ID_e) { + fopAc_ac_c* local_110 = fopAcM_SearchByID(mWhirlId); + if (local_110 != NULL) { + cXyz sp68 = current.pos - local_110->current.pos; + s16 iVar7 = cM_atan2s(sp68.x, sp68.z) + 0x5000; + cLib_chaseF(&m3610, 40.0f, 5.0f); + current.pos.x += m3610 * cM_ssin(iVar7); + current.pos.z += m3610 * cM_scos(iVar7); + f32 dVar13 = sp68.absXZ(); + if (dVar13 < 500.0f) { + startRestartRoom(5, 0xC9, -1.0f, 0); + } + } else { + m3610 = 0.0f; + } + } else { + m3610 = 0.0f; + } + if (mAcch.ChkGroundHit() && dComIfG_Bgsp()->ChkPolySafe(mAcch.m_gnd)) { + s16 uVar8 = getGroundAngle(&mAcch.m_gnd, 0); + current.pos.z += m36A0.z * cM_scos(uVar8); + uVar8 = getGroundAngle(&mAcch.m_gnd, 0x4000); + current.pos.x += m36A0.x * cM_scos(uVar8); + } + current.pos += m36B8; + if (mCurProc != daPyProc_FAN_GLIDE_e) { + current.pos.x += m3730.x; + current.pos.z += m3730.z; + } + } + } else if (((!dComIfGp_event_runCheck() && mDemo.getDemoType() == 0) && daPy_getPlayerActorClass() == this) && + mCurProc == daPyProc_HANG_MOVE_e) + { + f32 dVar13 = mStts.GetCCMoveP()->absXZ(); + if (dVar13 > 1.0f) { + if ((s16)(cM_atan2s(mStts.GetCCMoveP()->x, mStts.GetCCMoveP()->z) - shape_angle.y) >= 0) { + current.pos.x += dVar13 * cM_scos(shape_angle.y); + current.pos.z -= dVar13 * cM_ssin(shape_angle.y); + } else { + current.pos.x -= dVar13 * cM_scos(shape_angle.y); + current.pos.z += dVar13 * cM_ssin(shape_angle.y); + } + } + } + m3644 = 0.0f; + mStts.GetCCMoveP()->zero(); + if (((m34C2 == 1 || m34C2 == 8) || m34C2 == 9) || m34C2 == 5) { + cXyz sp5C; + if (m34C2 == 1 || m34C2 == 5) { + sp5C = m3700 - sp8C; + } else { + sp5C = sp8C - m3700; + } + current.pos.x += (sp5C.z * dVar15) + (sp5C.x * dVar14); + current.pos.z += (sp5C.z * dVar14) - (sp5C.x * dVar15); + if (m34C2 == 5) { + current.pos.y += sp5C.y; + } + } } /* 80109E80-80109ED8 .text setShapeAngleToAtnActor__9daPy_lk_cFv */ @@ -2338,7 +2556,7 @@ void daPy_lk_c::setShapeAngleToAtnActor() { /* 80109ED8-80109F4C .text cancelItemUpperReadyAnime__9daPy_lk_cFv */ BOOL daPy_lk_c::cancelItemUpperReadyAnime() { - if ((dComIfGp_getDoStatus() == dActStts_RETURN_e) && (doTrigger())) { + if (dComIfGp_getDoStatus() == dActStts_RETURN_e && doTrigger()) { seStartOnlyReverb(JA_SE_CANCEL_1); resetActAnimeUpper(UPPER_MOVE2_e, -1.0f); procWait_init(); @@ -2382,22 +2600,189 @@ s16 daPy_lk_c::checkBodyAngleX(s16 param_1) { /* 8010A204-8010A2F4 .text setBodyAngleToCamera__9daPy_lk_cFv */ BOOL daPy_lk_c::setBodyAngleToCamera() { - /* Nonmatching */ + BOOL bVar1; + s16 sVar2; + s16 local_16; + s16 local_18; + + if (dComIfGp_checkCameraAttentionStatus(mCameraInfoIdx, 0x10) != 0) { + bVar1 = dCam_getBody()->CalcSubjectAngle(&local_16, &local_18); + if (bVar1 != 0) { + shape_angle.y = local_18; + current.angle.y = local_18; + mBodyAngle.x = checkBodyAngleX(mBodyAngle.x); + sVar2 = mBodyAngle.x; + mBodyAngle.x = checkBodyAngleX(local_16); + if (mBodyAngle.x != local_16) { + mBodyAngle.x = sVar2; + } + } else { + camera_class* cam = dComIfGp_getCamera(mCameraInfoIdx); + shape_angle.y = cam->mAngle.y; + current.angle.y = shape_angle.y; + mBodyAngle.x = cam->mAngle.x; + } + return bVar1; + } + return false; } /* 8010A2F4-8010A4D4 .text setBodyAngleXReadyAnime__9daPy_lk_cFv */ void daPy_lk_c::setBodyAngleXReadyAnime() { - /* Nonmatching */ + s16 sVar3; + cXyz local_1c; + cXyz local_28; + + mDoMtx_multVecZero(mpCLModel->getAnmMtx(0x2), &local_1c); + if (mpAttnActorLockOn != NULL) { + local_28 = mpAttnActorLockOn->eyePos - local_1c; + local_28.y = local_28.y - 20.0f; + if (local_28.abs() < 1.0f) { + sVar3 = 0; + } else { + sVar3 = cM_atan2s(-local_28.y, local_28.absXZ()); + if (sVar3 > 0x2000) { + sVar3 = 0x2000; + } else if (sVar3 < -0x2000) { + sVar3 = -0x2000; + } + } + } else { + sVar3 = 0; + } + cLib_addCalcAngleS(&mBodyAngle.x, sVar3, 4, 0xc00, 0x180); } /* 8010A4D4-8010A96C .text setSpeedAndAngleNormal__9daPy_lk_cFs */ -void daPy_lk_c::setSpeedAndAngleNormal(s16) { - /* Nonmatching */ +void daPy_lk_c::setSpeedAndAngleNormal(s16 param_1) { + BOOL bVar2; + s16 sVar6; + s16 sVar7; + f32 dVar11; + f32 dVar10; + f32 dVar9; + + if (mStickDistance > 0.05f) { + bVar2 = false; + dVar11 = mStickDistance * mStickDistance; + if (checkHeavyStateOn()) { + dVar11 *= 1.0f / (daPy_HIO_move_c0::m.field_0x80 * daPy_HIO_move_c0::m.field_0x80); + } + if (checkGrabWear()) { + dVar11 *= 1.0f / (daPy_HIO_move_c0::m.field_0x74 * daPy_HIO_move_c0::m.field_0x74); + } + if ((!mpAttention->Lockon() && cLib_distanceAngleS(m34E8, current.angle.y) > 0x7800) && + mCurProc != daPyProc_MOVE_TURN_e) + { + if (checkModeFlg(ModeFlg_00000001)) { + return; + } + if (mCurProc == daPyProc_MOVE_e) { + if ((speedF / mMaxNormalSpeed > daPy_HIO_slip_c0::m.field_0x4) && + getDirectionFromAngle(m34EA - m34DC) == DIR_BACKWARD) + { + return; + } + if (speedF / mMaxNormalSpeed <= daPy_HIO_slip_c0::m.field_0x4) { + cLib_addCalcAngleS(¤t.angle.y, m34E8, daPy_HIO_move_c0::m.field_0x6, + param_1, daPy_HIO_move_c0::m.field_0x4); + return; + } + bVar2 = true; + } else { + cLib_addCalcAngleS(¤t.angle.y, m34E8, daPy_HIO_move_c0::m.field_0x6, param_1, + daPy_HIO_move_c0::m.field_0x4); + } + } else { + if (dComIfGp_event_runCheck()) { + sVar6 = param_1; + sVar7 = daPy_HIO_move_c0::m.field_0x4; + } else { + sVar6 = param_1 * dVar11; + if (sVar6 < 10) { + sVar6 = 10; + } + sVar7 = daPy_HIO_move_c0::m.field_0x4 * dVar11; + if (sVar7 < 1) { + sVar7 = 1; + } + } + cLib_addCalcAngleS(¤t.angle.y, m34E8, daPy_HIO_move_c0::m.field_0x6, sVar6, + sVar7); + } + if (!bVar2) { + dVar9 = cM_scos(m34E8 - current.angle.y); + if (mVelocity > 0.5f * mMaxNormalSpeed) { + if (dVar9 < 0.7f) { + dVar9 = 0.7f; + } + } else if (dVar9 < 0.0f) { + dVar9 = 0.0f; + } + if (dComIfGp_event_runCheck()) { + dVar9 *= daPy_HIO_move_c0::m.field_0x14 * mStickDistance; + } else { + dVar10 = 0.5f - (0.5f * std::abs(mVelocity / mMaxNormalSpeed)); + if (checkHeavyStateOn()) { + dVar10 *= daPy_HIO_move_c0::m.field_0x80; + } + if (checkGrabWear()) { + dVar10 *= daPy_HIO_move_c0::m.field_0x74; + } + if (mStickDistance > dVar10) { + dVar9 *= daPy_HIO_move_c0::m.field_0x14 * dVar11; + } else { + dVar9 = 0.0f; + } + } + } else { + dVar9 = 0.0f; + } + } else { + dVar9 = 0.0f; + } + if ((!mpAttention->Lockon() && mCurProc != daPyProc_MOVE_TURN_e) && + mStickDistance > 0.05f) + { + sVar6 = shape_angle.y; + cLib_addCalcAngleS(&shape_angle.y, m34E8, daPy_HIO_move_c0::m.field_0x6, + (s16)(param_1 << 1), (s16)(daPy_HIO_move_c0::m.field_0x4 << 1)); + sVar7 = current.angle.y; + if ((s16)(sVar6 - sVar7) * (s16)(shape_angle.y - sVar7) <= 0) { + shape_angle.y = sVar7; + } + } + setNormalSpeedF(dVar9, daPy_HIO_move_c0::m.field_0x24, daPy_HIO_move_c0::m.field_0x1C, + daPy_HIO_move_c0::m.field_0x20); } /* 8010A96C-8010AA90 .text setSpeedAndAngleAtn__9daPy_lk_cFv */ void daPy_lk_c::setSpeedAndAngleAtn() { - /* Nonmatching */ + s16 sVar1; + f32 fVar2; + + if (mDirection == DIR_FORWARD) { + return setSpeedAndAngleNormal(daPy_HIO_move_c0::m.field_0x0); + } else if (mDirection == DIR_BACKWARD) { + return setSpeedAndAngleAtnBack(); + } else { + if (mStickDistance > 0.05f) { + if (getDirectionFromCurrentAngle() == DIR_BACKWARD) { + current.angle.y += 0x8000; + mVelocity *= -1.0f; + } + sVar1 = current.angle.y; + cLib_addCalcAngleS(¤t.angle.y, m34E8, daPy_HIO_atnMove_c0::m.field_0x4, + daPy_HIO_atnMove_c0::m.field_0x0, daPy_HIO_atnMove_c0::m.field_0x2); + fVar2 = daPy_HIO_atnMove_c0::m.field_0x8 * mStickDistance * + cM_scos(current.angle.y - sVar1); + } else { + fVar2 = 0.0f; + } + } + shape_angle.y = m34E6; + return setNormalSpeedF(fVar2, daPy_HIO_atnMove_c0::m.field_0x18, + daPy_HIO_atnMove_c0::m.field_0x10, daPy_HIO_atnMove_c0::m.field_0x14); } /* 8010AA90-8010AB84 .text setSpeedAndAngleAtnBack__9daPy_lk_cFv */ @@ -2454,7 +2839,6 @@ void daPy_lk_c::setSpeedAndAngleAtnActor() { daPy_HIO_atnMove_c0::m.field_0x10, daPy_HIO_atnMove_c0::m.field_0x14 ); - return; } /* 8010AC8C-8010ACEC .text setFrameCtrl__9daPy_lk_cFP12J3DFrameCtrlUcssff */ @@ -2473,9 +2857,9 @@ void daPy_lk_c::setFrameCtrl(J3DFrameCtrl* frameCtrl, u8 attribute, s16 start, s /* 8010ACEC-8010AD2C .text checkAtnWaitAnime__9daPy_lk_cFv */ BOOL daPy_lk_c::checkAtnWaitAnime() { - if (((mpAttnActorLockOn != NULL) && - (((fopAcM_GetGroup(mpAttnActorLockOn) == fopAc_ENEMY_e) || - (fopAcM_GetName(mpAttnActorLockOn) == PROC_BOOMERANG)))) || + if ((mpAttnActorLockOn != NULL && + ((fopAcM_GetGroup(mpAttnActorLockOn) == fopAc_ENEMY_e || + fopAcM_GetName(mpAttnActorLockOn) == PROC_BOOMERANG))) || (mDemo.getDemoMode() == daPy_demo_c::DEMO_UNK17_e)) { return true; @@ -2485,80 +2869,73 @@ BOOL daPy_lk_c::checkAtnWaitAnime() { /* 8010AD2C-8010B798 .text setBlendMoveAnime__9daPy_lk_cFf */ void daPy_lk_c::setBlendMoveAnime(f32 param_1) { - /* Nonmatching - regalloc */ - f32 fVar1; - s16 sVar5; - int iVar6; - daPy_ANM dVar9; - daPy_ANM dVar10; - f32 dVar14; - f32 in_f27; - f32 dVar16; - f32 dVar17; - + f32 f1_1; if (m3580 == 8) { - fVar1 = 1.0f; + f1_1 = 1.0f; } else { - fVar1 = cM_scos(m34E2); + f1_1 = cM_scos(m34E2); } - f32 dVar18 = (std::abs(mVelocity * fVar1) / mMaxNormalSpeed); + f32 f30 = (std::abs(mVelocity * f1_1) / mMaxNormalSpeed); J3DFrameCtrl& frameCtrl = mFrameCtrlUnder[UNDER_MOVE1_e]; - if ((dComIfGp_event_runCheck()) || (mDemo.getDemoType() != 0)) { - dVar17 = daPy_HIO_move_c0::m.field_0x44; - dVar16 = daPy_HIO_move_c0::m.field_0x64; + f32 f29; + f32 f28; + if (dComIfGp_event_runCheck() || mDemo.getDemoType() != 0) { + f29 = daPy_HIO_move_c0::m.field_0x44; + f28 = daPy_HIO_move_c0::m.field_0x64; } else if (checkHeavyStateOn()) { - dVar17 = daPy_HIO_move_c0::m.field_0x78; - dVar16 = daPy_HIO_move_c0::m.field_0x7C; + f29 = daPy_HIO_move_c0::m.field_0x78; + f28 = daPy_HIO_move_c0::m.field_0x7C; } else { - dVar17 = daPy_HIO_move_c0::m.field_0x40; - dVar16 = daPy_HIO_move_c0::m.field_0x60; + f29 = daPy_HIO_move_c0::m.field_0x40; + f28 = daPy_HIO_move_c0::m.field_0x60; } - daPy_ANM dVar11 = ANM_WAITS; + daPy_ANM r28 = ANM_WAITS; + daPy_ANM r27; + daPy_ANM r26; if (checkGrabWear()) { - dVar10 = ANM_WALKBARREL; - dVar9 = ANM_WALKBARREL; + r27 = ANM_WALKBARREL; + r26 = ANM_WALKBARREL; } else if (checkHeavyStateOn()) { - if (((m373C.abs2XZ() > 25.0f) && + if ((m373C.abs2XZ() > 25.0f && (cLib_distanceAngleS(cM_atan2s(m373C.x, m373C.z), shape_angle.y) >= 0x4000)) || - (((checkNoResetFlg1(daPyFlg1_UNK10000000)) && (m3644 > 5.0f)) && - (cLib_distanceAngleS(m3640, shape_angle.y) >= 0x4000))) + ((checkNoResetFlg1(daPyFlg1_UNK10000000) && m3644 > 5.0f) && + cLib_distanceAngleS(m3640, shape_angle.y) >= 0x4000)) { - dVar10 = ANM_WALKHBOOTSKAZE; - dVar9 = ANM_WALKHBOOTSKAZE; + r27 = ANM_WALKHBOOTSKAZE; + r26 = ANM_WALKHBOOTSKAZE; if (!checkNoResetFlg1(daPyFlg1_UNK1000000)) { param_1 = daPy_HIO_basic_c0::m.field_0xC; onNoResetFlg1(daPyFlg1_UNK1000000); } } else { - dVar10 = ANM_WALKHBOOTS; - dVar9 = ANM_WALKHBOOTS; + r27 = ANM_WALKHBOOTS; + r26 = ANM_WALKHBOOTS; if (checkNoResetFlg1(daPyFlg1_UNK1000000)) { param_1 = daPy_HIO_basic_c0::m.field_0xC; offNoResetFlg1(daPyFlg1_UNK1000000); } } - } else if ((m3580 != 8) && (m34E2 <= -0x11C7)) { - dVar10 = ANM_WALKSLOPE; - dVar9 = ANM_WALKSLOPE; + } else if (m3580 != 8 && m34E2 <= -0x11C7) { + r27 = ANM_WALKSLOPE; + r26 = ANM_WALKSLOPE; if (!checkNoResetFlg1(daPyFlg1_UNK80)) { param_1 = daPy_HIO_basic_c0::m.field_0xC; onNoResetFlg1(daPyFlg1_UNK80); } } else { - dVar10 = ANM_WALK; - dVar14 = m3730.abs2XZ(); - if (((dVar14 > 25.0f) && + r27 = ANM_WALK; + if ((m3730.abs2XZ() > 25.0f && (cLib_distanceAngleS(cM_atan2s(m3730.x, m3730.z), shape_angle.y) >= 0x4000)) || - (((checkNoResetFlg1(daPyFlg1_UNK10000000)) && (m3644 > 5.0f)) && - (cLib_distanceAngleS(m3640, shape_angle.y) >= 0x4000))) + ((checkNoResetFlg1(daPyFlg1_UNK10000000) && m3644 > 5.0f) && + cLib_distanceAngleS(m3640, shape_angle.y) >= 0x4000)) { - dVar9 = ANM_DASHKAZE; + r26 = ANM_DASHKAZE; if (!checkNoResetFlg1(daPyFlg1_UNK1000000)) { param_1 = daPy_HIO_basic_c0::m.field_0xC; onNoResetFlg1(daPyFlg1_UNK1000000); } } else { - dVar9 = ANM_DASH; + r26 = ANM_DASH; if (checkNoResetFlg1(daPyFlg1_UNK1000000)) { param_1 = daPy_HIO_basic_c0::m.field_0xC; offNoResetFlg1(daPyFlg1_UNK1000000); @@ -2569,27 +2946,27 @@ void daPy_lk_c::setBlendMoveAnime(f32 param_1) { offNoResetFlg1(daPyFlg1_UNK80); } } - BOOL bVar4 = false; - f32 dVar12 = m36A0.abs2XZ(); - f32 dVar13 = m3730.abs2XZ(); - dVar14 = m36B8.abs2XZ(); + BOOL r25 = false; + f32 f31 = m36A0.abs2XZ(); + f32 f25 = m3730.abs2XZ(); + f32 f1_2 = m36B8.abs2XZ(); BOOL bVar3; - if (dVar12 > dVar13) { - if (dVar12 > dVar14) { - dVar14 = dVar12; + if (f31 > f25) { + if (f31 > f1_2) { + f1_2 = f31; } bVar3 = true; - } else if (dVar13 > dVar14) { - dVar14 = dVar13; + } else if (f25 > f1_2) { + f1_2 = f25; bVar3 = false; } else { bVar3 = false; } - if ((mStickDistance < 0.05f) && - ((dVar14 >= 25.0f || ((dVar14 >= 0.09f && ((m34C3 == 9 || (m34C3 == 10)))))))) + if (mStickDistance < 0.05f && + ((f1_2 >= 25.0f || ((f1_2 >= 0.09f && ((m34C3 == 9 || m34C3 == 10))))))) { seStartMapInfo(JA_SE_LK_SLIP_SUS); - if (((m34C3 != 9) && (bVar3)) || ((m34C3 != 10 && (!bVar3)))) { + if ((m34C3 != 9 && (bVar3)) || ((m34C3 != 10 && (!bVar3)))) { if (bVar3) { setSingleMoveAnime(ANM_SLIPICE, daPy_HIO_iceSlip_c0::m.field_0x10, daPy_HIO_iceSlip_c0::m.field_0x14, @@ -2616,16 +2993,22 @@ void daPy_lk_c::setBlendMoveAnime(f32 param_1) { if (m34C3 == 9) { param_1 = daPy_HIO_basic_c0::m.field_0xC; } - if ((dVar18 < daPy_HIO_move_c0::m.field_0x2C) || (checkHeavyStateOn())) { + if (f30 < daPy_HIO_move_c0::m.field_0x2C || checkHeavyStateOn()) { if (checkHeavyStateOn()) { - dVar14 = (dVar18 / daPy_HIO_move_c0::m.field_0x80); - if (dVar14 > 0.55f) { - bVar4 = true; + f25 = f30 / daPy_HIO_move_c0::m.field_0x80; + if (f25 > 0.55f) { + r25 = true; } } else { - dVar14 = (dVar18 / daPy_HIO_move_c0::m.field_0x2C); + f25 = f30 / daPy_HIO_move_c0::m.field_0x2C; } - dVar11 = ANM_WAITS; + r28 = ANM_WAITS; + int r24; + f32 in_f27; // Bug? This variable is uninitialized in some paths. TODO: Look into this. + #ifdef __clang__ + // Just a quick hack to hide clangd's warning for now. + in_f27 = 0.0f; + #endif if (checkModeFlg(ModeFlg_00000001)) { if (mpAttention->Lockon()) { if (checkUpperGuardAnime()) { @@ -2635,36 +3018,36 @@ void daPy_lk_c::setBlendMoveAnime(f32 param_1) { return; } } - fVar1 = m3598 = 0.0f; - iVar6 = 2; - if (((checkNoResetFlg1(daPyFlg1_CONFUSE)) && (mDemo.getDemoType() == 0)) && - (!dComIfGp_event_runCheck())) + f32 f1 = m3598 = 0.0f; + r24 = 2; + if ((checkNoResetFlg1(daPyFlg1_CONFUSE) && mDemo.getDemoType() == 0) && + !dComIfGp_event_runCheck()) { if (m_anm_heap_under[UNDER_MOVE0_e].mIdx != LKANM_BCK_WAITQ) { - setSingleMoveAnime(ANM_WAITQ, daPy_HIO_move_c0::m.field_0x84, fVar1, -1, + setSingleMoveAnime(ANM_WAITQ, daPy_HIO_move_c0::m.field_0x84, f1, -1, daPy_HIO_basic_c0::m.field_0xC); m34C3 = 2; } return; } - if ((shape_angle.y != m34DE) && (!mpAttention->Lockon())) { - sVar5 = (s16)(shape_angle.y - m34DE); - if (sVar5 > 0) { - dVar10 = ANM_ATNWLS; + if (shape_angle.y != m34DE && !mpAttention->Lockon()) { + s16 r3 = (s16)(shape_angle.y - m34DE); + if (r3 > 0) { + r27 = ANM_ATNWLS; } else { - dVar10 = ANM_ATNWRS; + r27 = ANM_ATNWRS; } - dVar14 = (0.5f + 0.001f * abs(sVar5)); - if (dVar14 > 1.0f) { - dVar14 = 1.0f; + f25 = (0.5f + 0.001f * abs(r3)); + if (f25 > 1.0f) { + f25 = 1.0f; } if (!checkNoResetFlg1(daPyFlg1_UNK800000)) { param_1 = daPy_HIO_basic_c0::m.field_0xC; } onNoResetFlg1(daPyFlg1_UNK800000); - dVar17 = daPy_HIO_atnMove_c0::m.field_0x28; + f29 = daPy_HIO_atnMove_c0::m.field_0x28; } else if (checkRestHPAnime()) { - dVar11 = ANM_WAITB; + r28 = ANM_WAITB; in_f27 = daPy_HIO_move_c0::m.field_0x3C; if (checkNoResetFlg1(daPyFlg1_UNK800000)) { param_1 = daPy_HIO_basic_c0::m.field_0xC; @@ -2678,13 +3061,13 @@ void daPy_lk_c::setBlendMoveAnime(f32 param_1) { offNoResetFlg1(daPyFlg1_UNK800000); } } else { - m3598 = (1.0f - ((1.0f - dVar16) * dVar14)); - iVar6 = 1; + m3598 = (1.0f - ((1.0f - f28) * f25)); + r24 = 1; in_f27 = daPy_HIO_move_c0::m.field_0x38; } - setMoveAnime(dVar14, in_f27, dVar17, dVar11, dVar10, iVar6, param_1); - if (((dVar11 == ANM_WAITB) && - ((!dComIfGp_event_runCheck() || (mDemo.getDemoType() != 3)))) && + setMoveAnime(f25, in_f27, f29, r28, r27, r24, param_1); + if ((r28 == ANM_WAITB && + ((!dComIfGp_event_runCheck() || mDemo.getDemoType() != 3))) && (mFrameCtrlUnder[UNDER_MOVE0_e].checkPass(15.0f))) { if (dComIfGs_getLife() <= 2) { @@ -2693,24 +3076,24 @@ void daPy_lk_c::setBlendMoveAnime(f32 param_1) { voiceStart(20); } } - } else if (dVar18 < daPy_HIO_move_c0::m.field_0x30) { - fVar1 = (dVar18 - daPy_HIO_move_c0::m.field_0x2C) / + } else if (f30 < daPy_HIO_move_c0::m.field_0x30) { + f32 f1 = (f30 - daPy_HIO_move_c0::m.field_0x2C) / (daPy_HIO_move_c0::m.field_0x30 - daPy_HIO_move_c0::m.field_0x2C); - dVar14 = fVar1; - setMoveAnime(fVar1, dVar17, daPy_HIO_move_c0::m.field_0x48, dVar10, dVar9, 1, param_1); - m3598 = (dVar16 * (1.0f - dVar14)); + setMoveAnime(f1, f29, daPy_HIO_move_c0::m.field_0x48, r27, r26, 1, param_1); + m3598 = (f28 * (1.0f - f1)); } else { - if (dVar12 >= 169.0f) { - fVar1 = 1.7f * daPy_HIO_move_c0::m.field_0x48; + f32 f1; + if (f31 >= 169.0f) { + f1 = 1.7f * daPy_HIO_move_c0::m.field_0x48; onResetFlg0(daPyRFlg0_UNK40000); } else { - fVar1 = daPy_HIO_move_c0::m.field_0x48; + f1 = daPy_HIO_move_c0::m.field_0x48; } - setMoveAnime(1.0f, fVar1, fVar1, dVar9, dVar9, 1, param_1); + setMoveAnime(1.0f, f1, f1, r26, r26, 1, param_1); m3598 = 0.0f; } } - if ((dVar18 >= 0.9f) || (bVar4)) { + if (f30 >= 0.9f || (r25)) { onResetFlg0(daPyRFlg0_UNK10); } if (!checkModeFlg(ModeFlg_00000001)) { @@ -2722,16 +3105,15 @@ void daPy_lk_c::setBlendMoveAnime(f32 param_1) { resetFootEffect(); } } - if ((m34C3 != 9) && (m34C3 != 10)) { - if (dVar18 > daPy_HIO_move_c0::m.field_0x34) { - setHandModel(dVar9); - } else if (dVar18 > 0.0f) { - setHandModel(dVar11); + if (m34C3 != 9 && m34C3 != 10) { + if (f30 > daPy_HIO_move_c0::m.field_0x34) { + setHandModel(r26); + } else if (f30 > 0.0f) { + setHandModel(r27); } else { - setHandModel(dVar10); + setHandModel(r28); } } - return; } /* 8010B798-8010BB08 .text setBlendAtnBackMoveAnime__9daPy_lk_cFf */ @@ -2773,10 +3155,10 @@ void daPy_lk_c::setBlendAtnBackMoveAnime(f32 param_1) { dVar6 = fVar1; setMoveAnime(fVar1, daPy_HIO_atnMoveB_c0::m.field_0x24, daPy_HIO_atnMoveB_c0::m.field_0x28, ANM_ATNWB, ANM_ATNDB, 4, param_1); - m3598 = (1.0f - dVar6); - if ((frameCtrl.checkPass(5.0f)) || (frameCtrl.checkPass(15.0f))) { + m3598 = 1.0f - dVar6; + if (frameCtrl.checkPass(5.0f) || frameCtrl.checkPass(15.0f)) { onResetFlg0(daPyRFlg0_RIGHT_FOOT_ON_GROUND); - } else if ((frameCtrl.checkPass(3.0f)) || (frameCtrl.checkPass(13.0f))) { + } else if (frameCtrl.checkPass(3.0f) || frameCtrl.checkPass(13.0f)) { onResetFlg0(daPyRFlg0_LEFT_FOOT_ON_GROUND); } } else { @@ -2788,9 +3170,9 @@ void daPy_lk_c::setBlendAtnBackMoveAnime(f32 param_1) { } setMoveAnime(1.0f, fVar1, fVar1, ANM_ATNDB, ANM_ATNDB, 4, dVar6); m3598 = 0.0f; - if ((frameCtrl.checkPass(5.0f)) || (frameCtrl.checkPass(15.0f))) { + if (frameCtrl.checkPass(5.0f) || frameCtrl.checkPass(15.0f)) { onResetFlg0(daPyRFlg0_RIGHT_FOOT_ON_GROUND); - } else if ((frameCtrl.checkPass(3.0f)) || (frameCtrl.checkPass(13.0f))) { + } else if (frameCtrl.checkPass(3.0f) || frameCtrl.checkPass(13.0f)) { onResetFlg0(daPyRFlg0_LEFT_FOOT_ON_GROUND); } } @@ -2801,25 +3183,19 @@ void daPy_lk_c::setBlendAtnBackMoveAnime(f32 param_1) { resetFootEffect(); } setHandModel(ANM_ATNDB); - return; } /* 8010BB08-8010C010 .text setBlendAtnMoveAnime__9daPy_lk_cFf */ -void daPy_lk_c::setBlendAtnMoveAnime(f32 param_1) { - /* Nonmatching - "fmr" instruction in wrong place */ - f32 dVar6 = param_1; - s16 uVar5; - daPy_ANM dVar8; - daPy_ANM dVar9; - - if ((mAcch.ChkGroundHit()) || (!dComIfG_Bgsp()->ChkPolySafe(mAcch.m_gnd))) { - uVar5 = 0; +void daPy_lk_c::setBlendAtnMoveAnime(f32 f30) { + s16 r3; + if (mAcch.ChkGroundHit() || !dComIfG_Bgsp()->ChkPolySafe(mAcch.m_gnd)) { + r3 = 0; } else { - uVar5 = getGroundAngle(&mAcch.m_gnd, current.angle.y); + r3 = getGroundAngle(&mAcch.m_gnd, current.angle.y); } - f32 dVar13 = std::abs((mVelocity * cM_scos(uVar5)) / mMaxNormalSpeed); + f32 f31 = std::abs((mVelocity * cM_scos(r3)) / mMaxNormalSpeed); int iVar6 = current.angle.y - shape_angle.y; - f32 fVar3 = cM_ssin(iVar6); + f32 f2 = cM_ssin(iVar6); f32 fVar4 = cM_scos(iVar6); u8 uVar1 = mDirection; if (mDemo.getDemoMode() == daPy_demo_c::DEMO_UNK17_e) { @@ -2829,8 +3205,8 @@ void daPy_lk_c::setBlendAtnMoveAnime(f32 param_1) { mDirection = DIR_RIGHT; } } else if (mStickDistance > 0.05f) { - if ((mpAttnActorLockOn == NULL) && ((fVar4 <= daPy_HIO_atnMoveB_c0::m.field_0x30 || - (fVar4 >= daPy_HIO_atnMoveB_c0::m.field_0x2C)))) + if (mpAttnActorLockOn == NULL && + (fVar4 <= daPy_HIO_atnMoveB_c0::m.field_0x30 || (fVar4 >= daPy_HIO_atnMoveB_c0::m.field_0x2C))) { if (fVar4 <= daPy_HIO_atnMoveB_c0::m.field_0x30) { mDirection = DIR_BACKWARD; @@ -2838,41 +3214,43 @@ void daPy_lk_c::setBlendAtnMoveAnime(f32 param_1) { mDirection = DIR_FORWARD; } } else { - if ((uVar1 == DIR_BACKWARD) || (uVar1 == DIR_FORWARD)) { + if (uVar1 == DIR_BACKWARD || uVar1 == DIR_FORWARD) { mDirection = DIR_RIGHT; mMaxNormalSpeed = daPy_HIO_atnMove_c0::m.field_0xC; } - if (fVar3 > 0.0f) { + if (f2 > 0.0f) { mDirection = DIR_LEFT; - } else if (fVar3 < 0.0f) { + } else if (f2 < 0.0f) { mDirection = DIR_RIGHT; } } } u8 uVar2 = mDirection; if (uVar1 != uVar2) { - dVar6 = daPy_HIO_basic_c0::m.field_0xC; + f30 = daPy_HIO_basic_c0::m.field_0xC; } if (uVar2 == DIR_BACKWARD) { mMaxNormalSpeed = daPy_HIO_atnMoveB_c0::m.field_0xC; - setBlendAtnBackMoveAnime(dVar6); + setBlendAtnBackMoveAnime(f30); } else if (uVar2 == DIR_FORWARD) { mMaxNormalSpeed = daPy_HIO_move_c0::m.field_0x18; - setBlendMoveAnime(dVar6); + setBlendMoveAnime(f30); } else { - if ((uVar2 != DIR_RIGHT) && (uVar2 != DIR_LEFT)) { + daPy_ANM dVar8; + daPy_ANM dVar9; + if (uVar2 != DIR_RIGHT && uVar2 != DIR_LEFT) { mDirection = DIR_RIGHT; - dVar6 = daPy_HIO_basic_c0::m.field_0xC; + f30 = daPy_HIO_basic_c0::m.field_0xC; } J3DFrameCtrl& frameCtrl = mFrameCtrlUnder[UNDER_MOVE1_e]; + f32 f29; if (checkHeavyStateOn()) { - fVar3 = 0.6f; + f29 = 0.6f; } else { - fVar3 = 1.0f; + f29 = 1.0f; } - f32 dVar11 = fVar3; - if (dVar13 < daPy_HIO_atnMove_c0::m.field_0x1C) { - fVar3 = dVar13 / daPy_HIO_atnMove_c0::m.field_0x1C; + if (f31 < daPy_HIO_atnMove_c0::m.field_0x1C) { + f32 f1 = f31 / daPy_HIO_atnMove_c0::m.field_0x1C; if (mDirection == DIR_LEFT) { dVar8 = ANM_ATNLS; dVar9 = ANM_ATNWLS; @@ -2887,14 +3265,13 @@ void daPy_lk_c::setBlendAtnMoveAnime(f32 param_1) { iVar6 = 4; m3598 = 1.0f; } - setMoveAnime(fVar3, daPy_HIO_atnMove_c0::m.field_0x24, - (daPy_HIO_atnMove_c0::m.field_0x28 * dVar11), dVar8, dVar9, iVar6, dVar6); + f32 f2 = daPy_HIO_atnMove_c0::m.field_0x24; + f32 f3 = daPy_HIO_atnMove_c0::m.field_0x28 * f29; + setMoveAnime(f1, f2, f3, dVar8, dVar9, iVar6, f30); } else { - f32 dVar10; - if (dVar13 < daPy_HIO_atnMove_c0::m.field_0x20) { - fVar3 = (dVar13 - daPy_HIO_atnMove_c0::m.field_0x1C) / - (daPy_HIO_atnMove_c0::m.field_0x20 - daPy_HIO_atnMove_c0::m.field_0x1C); - dVar10 = fVar3; + if (f31 < daPy_HIO_atnMove_c0::m.field_0x20) { + f32 f28 = (f31 - daPy_HIO_atnMove_c0::m.field_0x1C) / + (daPy_HIO_atnMove_c0::m.field_0x20 - daPy_HIO_atnMove_c0::m.field_0x1C); if (mDirection == DIR_LEFT) { dVar8 = ANM_ATNWLS; dVar9 = ANM_ATNDLS; @@ -2902,27 +3279,28 @@ void daPy_lk_c::setBlendAtnMoveAnime(f32 param_1) { dVar8 = ANM_ATNWRS; dVar9 = ANM_ATNDRS; } - setMoveAnime(fVar3, (daPy_HIO_atnMove_c0::m.field_0x28 * dVar11), - (daPy_HIO_atnMove_c0::m.field_0x2C * dVar11), dVar8, dVar9, 4, dVar6); - m3598 = 1.0f - (dVar10 * m3598); + f32 f2 = daPy_HIO_atnMove_c0::m.field_0x28 * f29; + f32 f3 = daPy_HIO_atnMove_c0::m.field_0x2C * f29; + setMoveAnime(f28, f2, f3, dVar8, dVar9, 4, f30); + m3598 = 1.0f - (f28 * m3598); } else { if (mDirection == DIR_LEFT) { dVar9 = ANM_ATNDLS; } else { dVar9 = ANM_ATNDRS; } - dVar10 = m36A0.abs2XZ(); - if (dVar10 >= 49.0f) { - fVar3 = 1.9f * daPy_HIO_atnMove_c0::m.field_0x2C; + f32 f2; + if (m36A0.abs2XZ() >= 49.0f) { + f2 = 1.9f * daPy_HIO_atnMove_c0::m.field_0x2C; onResetFlg0(daPyRFlg0_UNK40000); } else { - fVar3 = (daPy_HIO_atnMove_c0::m.field_0x2C * dVar11); + f2 = daPy_HIO_atnMove_c0::m.field_0x2C * f29; } - setMoveAnime(1.0f, fVar3, fVar3, dVar9, dVar9, 4, dVar6); + setMoveAnime(1.0f, f2, f2, dVar9, dVar9, 4, f30); m3598 = 0.0f; } } - if (dVar13 >= 0.9f) { + if (f31 >= 0.9f) { onResetFlg0(daPyRFlg0_UNK10); } if (!checkModeFlg(ModeFlg_00000001)) { @@ -2946,7 +3324,6 @@ void daPy_lk_c::setBlendAtnMoveAnime(f32 param_1) { } setHandModel(dVar9); } - return; } /* 8010C010-8010C100 .text setAnimeEquipSword__9daPy_lk_cFi */ @@ -3159,9 +3536,9 @@ void daPy_lk_c::deleteEquipItem(BOOL param_1) { /* 8010C71C-8010C7F4 .text setFallVoice__9daPy_lk_cFv */ void daPy_lk_c::setFallVoice() { - if (((!checkNoResetFlg0(daPyFlg0_NO_FALL_VOICE)) && - ((((!checkNoResetFlg0(daPyFlg0_UNK80) || (m35D0 < mAcch.GetGroundH())) || (m3580 == 4)) || - (C_BG_MIN_HEIGHT == mAcch.GetGroundH())))) && + if ((!checkNoResetFlg0(daPyFlg0_NO_FALL_VOICE) && + ((((!checkNoResetFlg0(daPyFlg0_UNK80) || m35D0 < mAcch.GetGroundH()) || m3580 == 4) || + C_BG_MIN_HEIGHT == mAcch.GetGroundH()))) && (m35F0 - current.pos.y > 500.0f)) { if (current.pos.y - mAcch.GetGroundH() >= 100.0f * daPy_HIO_fall_c0::m.field_0x14) { @@ -3170,7 +3547,6 @@ void daPy_lk_c::setFallVoice() { setTextureAnime(0x56, 0); } } - return; } /* 8010C7F4-8010C854 .text keepItemData__9daPy_lk_cFv */ @@ -3219,7 +3595,6 @@ void daPy_lk_c::makeItemType() { } else if (mEquipItem == dItem_BOOMERANG_e) { fopAc_ac_c* boomerang = (fopAc_ac_c*)fopAcM_fastCreate(PROC_BOOMERANG, 0, ¤t.pos); mActorKeepEquip.setData(boomerang); - return; } else if (mEquipItem == dItem_BOMB_BAG_e) { fopAc_ac_c* bomb = (fopAc_ac_c*)fopAcM_fastCreate(PROC_BOMB, daBomb_c::prm_make(daBomb_c::STATE_3, false, false), ¤t.pos); mActorKeepGrab.setData(bomb); @@ -3305,8 +3680,64 @@ BOOL daPy_lk_c::changeDragonShield(int param_1) { } /* 8010CD34-8010CFB4 .text checkNewItemChange__9daPy_lk_cFUc */ -BOOL daPy_lk_c::checkNewItemChange(u8) { - /* Nonmatching */ +BOOL daPy_lk_c::checkNewItemChange(u8 param_1) { + u32 uVar4 = dComIfGp_getSelectItem(param_1); + + if (uVar4 == dItem_MAGIC_ARMOR_e) { + return changeDragonShield(1); + } + if (((((uVar4 == dItem_IRON_BOOTS_e || uVar4 == WATER_BOOTS) || + uVar4 == dItem_TINGLE_TUNER_e) || + ((uVar4 == NORMAL_SAIL || isEsa(uVar4)))) || + ((isDaizaItem(uVar4) || ((isEmono(uVar4) || checkBottleItem(uVar4)))))) || + ((uVar4 >= dItem_FATHER_LETTER_e && uVar4 <= KAISEN_PRESENT2))) + { + if (mAcch.ChkGroundHit() && (!daPy_lk_c::checkPlayerFly())) { + if (uVar4 == dItem_IRON_BOOTS_e || uVar4 == WATER_BOOTS) { + procBootsEquip_init(uVar4); + } else { + if (isEsa(uVar4)) { + if (uVar4 == dItem_HYOI_PEAR_e) { + return procFoodSet_init(); + } else { + return procFoodThrow_init(); + } + } else if (uVar4 == dItem_TINGLE_TUNER_e) { + fopAcM_orderTalkEvent(this, (fopAc_ac_c*)dComIfGp_getAgb()); + } else if (checkDrinkBottleItem(uVar4)) { + return procBottleDrink_init(uVar4); + } else if (checkOpenBottleItem(uVar4)) { + return procBottleOpen_init(uVar4); + } else { + if (uVar4 == dItem_EMPTY_BOTTLE_e) { + return procBottleSwing_init(1); + } else { + if (dComIfGs_checkGetItemNum(uVar4) != 0) { + return procNotUse_init(uVar4); + } else { + return false; + } + } + } + } + return true; + } + if (uVar4 != dItem_EMPTY_BOTTLE_e) { + return false; + } + } + if (mEquipItem != uVar4 && uVar4 != dItem_NONE_e) { + if (uVar4 == dItem_BOMB_BAG_e && + (mActivePlayerBombs >= 3 || dComIfGs_getBombNum() == 0)) + { + mDoAud_seStart(JA_SE_ITEM_TARGET_OUT); + return false; + } else { + mReadyItemBtn = param_1; + setAnimeEquipItem(); + } + } + return false; } /* 8010CFB4-8010D26C .text checkItemChangeFromButton__9daPy_lk_cFv */ @@ -3366,25 +3797,25 @@ BOOL daPy_lk_c::checkItemChangeFromButton() { /* 8010D26C-8010D754 .text checkItemAction__9daPy_lk_cFv */ void daPy_lk_c::checkItemAction() { - if ((mEquipItem == dComIfGp_getSelectItem(dItemBtn_X_e)) && - (mEquipItem != dComIfGp_getSelectItem(dItemBtn_Y_e)) && - (mEquipItem != dComIfGp_getSelectItem(dItemBtn_Z_e))) + if (mEquipItem == dComIfGp_getSelectItem(dItemBtn_X_e) && + mEquipItem != dComIfGp_getSelectItem(dItemBtn_Y_e) && + mEquipItem != dComIfGp_getSelectItem(dItemBtn_Z_e)) { mReadyItemBtn = dItemBtn_X_e; - } else if (((mEquipItem == dComIfGp_getSelectItem(dItemBtn_Y_e)) && - (mEquipItem != dComIfGp_getSelectItem(dItemBtn_X_e))) && - (mEquipItem != dComIfGp_getSelectItem(dItemBtn_Z_e))) + } else if ((mEquipItem == dComIfGp_getSelectItem(dItemBtn_Y_e) && + mEquipItem != dComIfGp_getSelectItem(dItemBtn_X_e)) && + mEquipItem != dComIfGp_getSelectItem(dItemBtn_Z_e)) { mReadyItemBtn = dItemBtn_Y_e; - } else if (((mEquipItem == dComIfGp_getSelectItem(dItemBtn_Z_e)) && - (mEquipItem != dComIfGp_getSelectItem(dItemBtn_X_e))) && - (mEquipItem != dComIfGp_getSelectItem(dItemBtn_Y_e))) + } else if ((mEquipItem == dComIfGp_getSelectItem(dItemBtn_Z_e) && + mEquipItem != dComIfGp_getSelectItem(dItemBtn_X_e)) && + mEquipItem != dComIfGp_getSelectItem(dItemBtn_Y_e)) { mReadyItemBtn = dItemBtn_Z_e; } - if ((((checkEquipAnime()) || (checkUpperAnime(LKANM_BCK_BOOMTHROW))) || - (checkUpperAnime(LKANM_BCK_BOOMCATCH))) || - (checkUpperAnime(LKANM_BCK_ROPETHROW))) + if (((checkEquipAnime() || checkUpperAnime(LKANM_BCK_BOOMTHROW)) || + checkUpperAnime(LKANM_BCK_BOOMCATCH)) || + checkUpperAnime(LKANM_BCK_ROPETHROW)) { J3DFrameCtrl& frameCtrl = mFrameCtrlUpper[UPPER_MOVE2_e]; if (checkUpperAnime(LKANM_BCK_BOOMCATCH)) { @@ -3401,7 +3832,7 @@ void daPy_lk_c::checkItemAction() { procShipPaddle_init(); } } else if (checkUpperAnime(LKANM_BCK_BOOMTHROW)) { - if ((frameCtrl.getRate() < 0.01f) || + if (frameCtrl.getRate() < 0.01f || ((mStickDistance > 0.05f && (frameCtrl.getFrame() > daPy_HIO_boom_c0::m.field_0x10)))) { @@ -3420,7 +3851,7 @@ void daPy_lk_c::checkItemAction() { } } else { if (checkEquipAnime()) { - if ((mEquipItem == daPyItem_SWORD_e) && + if (mEquipItem == daPyItem_SWORD_e && (((checkUpperAnime(LKANM_BCK_REST) && (frameCtrl.checkPass(7.0f - frameCtrl.getRate()))) || ((((checkUpperAnime(LKANM_BCK_TAKE) && @@ -3437,17 +3868,17 @@ void daPy_lk_c::checkItemAction() { if (std::fabsf(frameCtrl.getRate()) < 0.01f) { resetActAnimeUpper(UPPER_MOVE2_e, daPy_HIO_basic_c0::m.field_0xC); } else { - if (((((checkUpperAnime(LKANM_BCK_REST)) && - (frameCtrl.checkPass(7.0f))) || + if ((((checkUpperAnime(LKANM_BCK_REST) && + frameCtrl.checkPass(7.0f)) || ((checkUpperAnime(LKANM_BCK_TAKE) && - (frameCtrl.checkPass(7.0f))))) || + frameCtrl.checkPass(7.0f)))) || ((checkUpperAnime(LKANM_BCK_TAKEBOTH) && - (frameCtrl.checkPass(daPy_HIO_item_c0::m.field_0x30))))) || + frameCtrl.checkPass(daPy_HIO_item_c0::m.field_0x30)))) || ((checkSingleItemEquipAnime() && - (frameCtrl.checkPass(daPy_HIO_item_c0::m.field_0x20))))) + frameCtrl.checkPass(daPy_HIO_item_c0::m.field_0x20)))) { - if (((mEquipItem != daPyItem_NONE_e) && (mEquipItem != daPyItem_SWORD_e)) || - ((m3562 != daPyItem_NONE_e && (m3562 != daPyItem_SWORD_e)))) + if ((mEquipItem != daPyItem_NONE_e && mEquipItem != daPyItem_SWORD_e) || + ((m3562 != daPyItem_NONE_e && m3562 != daPyItem_SWORD_e))) { seStartOnlyReverb(JA_SE_LK_ITEM_TAKEOUT); } @@ -3459,11 +3890,11 @@ void daPy_lk_c::checkItemAction() { } deleteEquipItem(FALSE); mEquipItem = m3562; - if ((!dComIfGp_event_runCheck()) && (mDemo.getDemoType() == 0)) { - if ((mEquipItem != daPyItem_SWORD_e) || - (!checkNoResetFlg1(daPyFlg1_UNK4000000))) + if (!dComIfGp_event_runCheck() && mDemo.getDemoType() == 0) { + if (mEquipItem != daPyItem_SWORD_e || + !checkNoResetFlg1(daPyFlg1_UNK4000000)) { - if (((mpAttention->Lockon()) || (mEquipItem != daPyItem_SWORD_e)) || + if ((mpAttention->Lockon() || mEquipItem != daPyItem_SWORD_e) || var_r28) { onResetFlg0(daPyRFlg0_UNK80); @@ -3474,7 +3905,7 @@ void daPy_lk_c::checkItemAction() { resetActAnimeUpper(UPPER_MOVE2_e, -1.0f); } else if (mEquipItem == daPyItem_SWORD_e) { seStartOnlyReverb(JA_SE_LK_SW_PULLOUT_S); - setSwordModel(0); + setSwordModel(FALSE); } else { makeItemType(); } @@ -3483,21 +3914,30 @@ void daPy_lk_c::checkItemAction() { } } } - return; } /* 8010D754-8010D810 .text getSlidePolygon__9daPy_lk_cFv */ cM3dGPla* daPy_lk_c::getSlidePolygon() { - /* Nonmatching */ + if (((!checkNoResetFlg0(daPy_FLG0(daPyFlg0_UNK20000000 | daPyFlg0_UNK80000000))) && + mAcch.ChkGroundHit()) && + dComIfG_Bgsp()->ChkPolySafe(mAcch.m_gnd)) + { + cM3dGPla* iVar2 = dComIfG_Bgsp()->GetTriPla(mAcch.m_gnd); + int iVar3 = dComIfG_Bgsp()->GetSpecialCode(mAcch.m_gnd); + if (iVar2 != NULL && dComIfG_Bgsp()->GetGroundCode(mAcch.m_gnd) != 8 && iVar3 == 1) { + return iVar2; + } + } + return NULL; } /* 8010D810-8010D8B0 .text checkJumpCutFromButton__9daPy_lk_cFv */ BOOL daPy_lk_c::checkJumpCutFromButton() { - if ((((mEquipItem == daPyItem_SWORD_e) && - ((checkResetFlg0(daPyRFlg0_UNK80) || (swordTrigger())))) || - ((mEquipItem == daPyItem_BOKO_e && (swordTrigger())))) || - (((mEquipItem == dItem_SKULL_HAMMER_e && (itemTrigger())) && - (mEquipItem == getReadyItem())))) + if (((mEquipItem == daPyItem_SWORD_e && + ((checkResetFlg0(daPyRFlg0_UNK80) || swordTrigger()))) || + ((mEquipItem == daPyItem_BOKO_e && swordTrigger()))) || + (((mEquipItem == dItem_SKULL_HAMMER_e && itemTrigger()) && + mEquipItem == getReadyItem()))) { return procJumpCut_init(1); } @@ -3506,17 +3946,366 @@ BOOL daPy_lk_c::checkJumpCutFromButton() { /* 8010D8B0-8010DB58 .text orderTalk__9daPy_lk_cFv */ int daPy_lk_c::orderTalk() { - /* Nonmatching */ + if ((dComIfGp_getDoStatus() == dActStts_SPEAK_e || dComIfGp_getDoStatus() == dActStts_LOOK_e || + dComIfGp_getDoStatus() == dActStts_READ_e || dComIfGp_getDoStatus() == dActStts_CHECK_e) && + talkTrigger()) + { + fopAcM_orderTalkEvent(this, mpAttnActorA); + return true; + } + if ((mpAttnEntryX != NULL && ((mpAttnEntryX->mType == fopAc_Attn_TYPE_SPEAK_e || + ((mpAttnEntryX->mType == fopAc_Attn_TYPE_TALK_e && + mpAttnActorLockOn == mpAttnActorX))))) && + itemTriggerX()) + { + if (((isEsa(dComIfGp_getSelectItem(dItemBtn_X_e))) && + dComIfGp_getSelectItem(dItemBtn_X_e) != dItem_HYOI_PEAR_e) && + m3630 != fpcM_ERROR_PROCESS_ID_e) + { + mDoAud_seStart(JA_SE_ITEM_TARGET_OUT); + return false; + } + fopAcM_orderTalkXBtnEvent(this, mpAttnActorX); + return true; + } + if ((mpAttnEntryY != NULL && ((mpAttnEntryY->mType == fopAc_Attn_TYPE_SPEAK_e || + ((mpAttnEntryY->mType == fopAc_Attn_TYPE_TALK_e && + mpAttnActorLockOn == mpAttnActorY))))) && + itemTriggerY()) + { + if (((isEsa(dComIfGp_getSelectItem(dItemBtn_Y_e))) && + dComIfGp_getSelectItem(dItemBtn_Y_e) != dItem_HYOI_PEAR_e) && + m3630 != fpcM_ERROR_PROCESS_ID_e) + { + mDoAud_seStart(JA_SE_ITEM_TARGET_OUT); + return false; + } + fopAcM_orderTalkYBtnEvent(this, mpAttnActorY); + return true; + } + if (mpAttnEntryZ != NULL && (((mpAttnEntryZ->mType == fopAc_Attn_TYPE_SPEAK_e || + ((mpAttnEntryZ->mType == fopAc_Attn_TYPE_TALK_e && + mpAttnActorLockOn == mpAttnActorZ))) && + itemTriggerZ()))) + { + if (((isEsa(dComIfGp_getSelectItem(dItemBtn_Z_e))) && + dComIfGp_getSelectItem(dItemBtn_Z_e) != dItem_HYOI_PEAR_e) && + m3630 != fpcM_ERROR_PROCESS_ID_e) + { + mDoAud_seStart(JA_SE_ITEM_TARGET_OUT); + return false; + } + fopAcM_orderTalkZBtnEvent(this, mpAttnActorZ); + return true; + } + return false; } /* 8010DB58-8010E448 .text checkNextActionFromButton__9daPy_lk_cFv */ BOOL daPy_lk_c::checkNextActionFromButton() { - /* Nonmatching */ + int direction; + + if (checkResetFlg0(daPyRFlg0_UNK80)) { + if (mEquipItem == daPyItem_SWORD_e) { + resetActAnimeUpper(UPPER_MOVE2_e, -1.0f); + return changeCutProc(); + } + if (checkPhotoBoxItem(mEquipItem) || mEquipItem == dItem_TELESCOPE_e) { + return procScope_init(mEquipItem); + } + if (mEquipItem == dItem_DEKU_LEAF_e) { + return procFanSwing_init(); + } + if (checkBowItem(mEquipItem)) { + return checkNextBowMode(); + } + if (mEquipItem == dItem_HOOKSHOT_e) { + return checkNextHookshotMode(); + } + if (mEquipItem == dItem_BOOMERANG_e) { + return checkNextBoomerangMode(); + } + if (mEquipItem == dItem_GRAPPLING_HOOK_e) { + return checkNextRopeMode(); + } + if (mEquipItem == dItem_WIND_WAKER_e) { + return procTactWait_init(-1); + } + } + if (checkGrabAnime()) { + if (checkNextActionGrab()) { + return true; + } + setDoStatusBasic(); + } else if (checkHookshotReadyAnime()) { + if (checkNextActionHookshotReady()) { + return true; + } + setDoStatusBasic(); + } else if (checkBowAnime()) { + if (checkNextActionBowReady()) { + return true; + } + setDoStatusBasic(); + } else { + if (checkBoomerangThrowAnime()) { + return true; + } + if (checkBoomerangReadyAnime()) { + if (checkNextActionBoomerangReady()) { + return true; + } + setDoStatusBasic(); + } else if (checkRopeAnime()) { + if (checkNextActionRopeReady()) { + return true; + } + setDoStatusBasic(); + } else { + setDoStatus(); + if (spActionTrigger() && dComIfGp_getRStatus() == dActStts_GRAB_e) { + return procPushPullWait_init(1); + } + if (orderTalk()) { + return true; + } + if (doTrigger()) { + if (dComIfGp_getDoStatus() == dActStts_ba_sake__dupe_31) { + fopAcM_orderZHintEvent(this, dComIfGp_att_getZHint()); + return true; + } + if (dComIfGp_getDoStatus() == dActStts_GET_IN_SHIP_e) { + return procShipReady_init(); + } + if (dComIfGp_getDoStatus() == dActStts_CLIMB_e) { + if (mFrontWallType == 7) { + return procHangWallCatch_init(); + } else { + return procVerticalJump_init(); + } + } + if (dComIfGp_getDoStatus() == dActStts_OPEN_e) { + if (mpAttnEntryA->mType == 5) { + fopAcM_orderDoorEvent(this, mpAttnActorA); + changeWaitProc(); + } else { + fopAcM_orderTreasureEvent(this, mpAttnActorA); + } + return true; + } + if (dComIfGp_getDoStatus() == dActStts_LIFT_e || + dComIfGp_getDoStatus() == dActStts_PICK_UP_e) + { + return procGrabReady_init(); + } + if (dComIfGp_getDoStatus() == dActStts_UNK43) { + return procJumpCut_init(0); + } + if (dComIfGp_getDoStatus() == dActStts_SIDLE_e) { + return procWHideReady_init(NULL, &m3724); + } + } + } + } + if (!checkEquipAnime() && !checkPlayerGuard()) { + if (!daPy_dmEcallBack_c::checkCurse()) { + if (mEquipItem == daPyItem_SWORD_e) { + if (checkNoResetFlg0(daPyFlg0_UNK4)) { + return procCutTurnCharge_init(); + } + if (swordTrigger() && abs(m3578) > 0xF800) { + return procCutTurn_init(1); + } + if (swordTrigger() || m34C5 != 0) { + return changeCutProc(); + } + } else if (mEquipItem == daPyItem_BOKO_e) { + if (checkNoResetFlg0(daPyFlg0_UNK4)) { + return procCutTurnCharge_init(); + } + if (swordTrigger() && mActorKeepEquip.getActor() != NULL) { + if (abs(m3578) > 0xF800) { + return procCutTurn_init(1); + } else if ((fopAcM_GetParam(mActorKeepEquip.getActor()) == 0) || + (fopAcM_GetParam(mActorKeepEquip.getActor()) == 1)) + { + return procWeaponNormalSwing_init(); + } else if (fopAcM_GetParam(mActorKeepEquip.getActor()) == 4) { + return procWeaponSideSwing_init(); + } else { + return procWeaponFrontSwingReady_init(); + } + } + if (doTrigger() && dComIfGp_getDoStatus() == dActStts_THROW_e) { + return procWeaponThrow_init(); + } + } + if (itemTrigger() && mEquipItem == getReadyItem()) { + if (mEquipItem == dItem_HOOKSHOT_e) { + if (!checkHookshotReadyAnime()) { + return checkNextHookshotMode(); + } + } else if (mEquipItem == dItem_GRAPPLING_HOOK_e) { + if (!checkRopeAnime()) { + return checkNextRopeMode(); + } + } else { + if (mEquipItem == dItem_BOOMERANG_e) { + return checkNextBoomerangMode(); + } + if (checkBowItem(mEquipItem)) { + return checkNextBowMode(); + } + if (mEquipItem == dItem_DEKU_LEAF_e) { + return procFanSwing_init(); + } + if (mEquipItem == dItem_EMPTY_BOTTLE_e) { + return procBottleSwing_init(0); + } + if (mEquipItem == dItem_SKULL_HAMMER_e) { + direction = getDirectionFromShapeAngle(); + if (mStickDistance > 0.05f && + ((direction == DIR_LEFT || direction == DIR_RIGHT))) + { + return procHammerSideSwing_init(); + } else { + return procHammerFrontSwingReady_init(); + } + } + if (checkPhotoBoxItem(mEquipItem) || mEquipItem == dItem_TELESCOPE_e) { + return procScope_init(mEquipItem); + } + if (mEquipItem == dItem_WIND_WAKER_e) { + return procTactWait_init(-1); + } + } + } + } + if (changeSpecialBattle()) + return true; + } + if ((dComIfGp_getRStatus() == dActStts_BLANK_e && !checkUpperReadyThrowAnime()) && + !checkEquipAnime()) + { + if (!checkGrabAnime()) { + if (checkNoResetFlg1(daPyFlg1_NPC_CALL_COMMAND)) { + dComIfGp_setRStatus(dActStts_CALL_e); + if (spActionTrigger()) { + return procCall_init(); + } + } else if (mEquipItem == daPyItem_BOKO_e) { + dComIfGp_setRStatus(dActStts_DROP_e); + if (spActionTrigger()) { + deleteEquipItem(FALSE); + m_old_fdata->initOldFrameMorf(5.0f, 0, 0x2A); + return true; + } + } else if (dComIfGs_getSelectEquip(1) == dItem_NONE_e || + mEquipItem == daPyItem_NONE_e) + { + if (checkModeFlg(ModeFlg_00000001)) { + dComIfGp_setRStatus(dActStts_CROUCH_e); + if (spActionButton()) { + return procCrouch_init(); + } + } + } else { + if (checkGuardAccept()) { + dComIfGp_setRStatus(dActStts_DEFEND_e); + if (spActionButton()) { + return procCrouchDefense_init(); + } + } + } + } + } + if (doTrigger()) { + if (dComIfGp_getDoStatus() == dActStts_JUMP_e) { + direction = getDirectionFromShapeAngle(); + if (direction == DIR_LEFT || direction == DIR_RIGHT) { + return procSideStep_init(direction); + } + if (direction == DIR_BACKWARD) { + return procBackJump_init(); + } + } else if (dComIfGp_getDoStatus() == dActStts_ATTACK_e) { + if (!mpAttention->Lockon() && mStickDistance > 0.05f) { + shape_angle.y = m34E8; + } + return procFrontRoll_init(daPy_HIO_roll_c0::m.field_0xC); + } + } + if ((daPy_getPlayerActorClass() == this && !dComIfGp_event_runCheck()) && + !checkGrabWear()) + { + onResetFlg0(daPyRFlg0_UNK4000000); + if (dComIfGp_checkCameraAttentionStatus(mCameraInfoIdx, 0x1000)) { + return procSubjectivity_init(0); + } + } + return checkItemChangeFromButton(); } /* 8010E448-8010E75C .text setShieldGuard__9daPy_lk_cFv */ void daPy_lk_c::setShieldGuard() { - /* Nonmatching */ + f32 local_18 = m_pbCalc[PART_UPPER_e]->getRatio(2); + if (checkGuardSlip() || + (!checkEquipAnime() && !checkGrabAnime() && mpAttention->Lockon() && mEquipItem != daPyItem_BOKO_e && + dComIfGs_getSelectEquip(1) != dItem_NONE_e && checkGuardAccept() && + (mActorKeepEquip.getID() == fpcM_ERROR_PROCESS_ID_e || mActorKeepEquip.getActor() != NULL))) + { + dComIfGp_setRStatus(dActStts_DEFEND_e); + } + u16 uVar3; + if (mEquipItem == dItem_SKULL_HAMMER_e) { + uVar3 = LKANM_BCK_ATNGHAM; + } else { + uVar3 = LKANM_BCK_ATNG; + } + if (!checkGuardSlip()) { + if (spActionButton() && dComIfGp_getRStatus() == dActStts_DEFEND_e) { + freeGrabItem(); + if (!checkUpperAnime(uVar3)) { + resetActAnimeUpper(UPPER_MOVE2_e, -1.0f); + setActAnimeUpper(uVar3, UPPER_MOVE2_e, daPy_HIO_atnMove_c0::m.field_0x24, 0.0f, -1, + daPy_HIO_basic_c0::m.field_0xC); + } else { + f32 dVar6 = 1.0f; + if (local_18 < dVar6) { + if (daPy_HIO_basic_c0::m.field_0xC > 0.01f) { + cLib_chaseF(&local_18, dVar6, dVar6 / daPy_HIO_basic_c0::m.field_0xC); + } else { + local_18 = 1.0f; + } + m_pbCalc[PART_UPPER_e]->setRatio(2, local_18); + } + } + if ((m_anm_heap_under[UNDER_MOVE0_e].mIdx == LKANM_BCK_ATNLS) || + (m_anm_heap_under[UNDER_MOVE0_e].mIdx == LKANM_BCK_ATNRS)) + { + mAnmRatioUpper[UPPER_MOVE2_e].getAnmTransform()->setFrame( + mFrameCtrlUnder[UNDER_MOVE0_e].getFrame()); + } + } else { + if (checkUpperGuardAnime()) { + if (daPy_HIO_basic_c0::m.field_0xC > 0.01f) { + cLib_chaseF(&local_18, 0.0f, 1.0f / daPy_HIO_basic_c0::m.field_0xC); + } else { + local_18 = 0.0f; + } + if (local_18 <= 0.0f) { + resetActAnimeUpper(UPPER_MOVE2_e, daPy_HIO_basic_c0::m.field_0xC); + } else { + m_pbCalc[PART_UPPER_e]->setRatio(2, local_18); + } + } + } + } + if (checkPlayerGuard()) { + mCyl.OnTgShield(); + } else { + mCyl.OffTgShield(); + } } /* 8010E75C-8010E7C4 .text checkItemModeActorPointer__9daPy_lk_cFv */ @@ -3532,7 +4321,7 @@ BOOL daPy_lk_c::checkItemModeActorPointer() { } /* 8010E7C4-8010E828 .text checkNextActionItemFly__9daPy_lk_cFv */ -BOOL daPy_lk_c::checkNextActionItemFly() { +void daPy_lk_c::checkNextActionItemFly() { if (!daPy_dmEcallBack_c::checkCurse()) { if (checkBowItem(mEquipItem)) { checkNextActionBowFly(); @@ -3540,119 +4329,101 @@ BOOL daPy_lk_c::checkNextActionItemFly() { checkNextActionBoomerangFly(); } } - return; } /* 8010E828-8010EC78 .text checkNextMode__9daPy_lk_cFi */ -BOOL daPy_lk_c::checkNextMode(int param_1) { - /* Nonmatching - regalloc */ - bool bVar2; - bool bVar3; - bool bVar4; - bool bVar5; - f32 dVar11; - - dVar11 = mMaxNormalSpeed; +BOOL daPy_lk_c::checkNextMode(int r29) { + f32 f31 = mMaxNormalSpeed; setFrontWallType(); + if (checkNoResetFlg1(daPyFlg1_FORCE_VOMIT_JUMP)) { return procVomitJump_init(2); } if (checkNoResetFlg1(daPyFlg1_FORCE_VOMIT_JUMP_SHORT)) { return procVomitJump_init(3); } - bVar5 = true; - bVar4 = true; - bVar3 = true; - if (!mpAttention->Lockon()) { - bVar2 = false; - if ((mActorKeepThrow.getActor() != NULL) && - (mpAttnActorLockOn == mActorKeepThrow.getActor())) - { - bVar2 = true; - } - if (!bVar2) { - bVar3 = false; - } - } - if ((!bVar3) && (!checkUpperReadyThrowAnime())) { - bVar4 = false; - } - if ((!bVar4) && (mDemo.getDemoMode() != daPy_demo_c::DEMO_UNK17_e)) { - bVar5 = false; - } - if (bVar5) { + + BOOL r24 = mpAttention->Lockon() || + (mActorKeepThrow.getActor() != NULL && mpAttnActorLockOn == mActorKeepThrow.getActor()) || + checkUpperReadyThrowAnime() || + mDemo.getDemoMode() == daPy_demo_c::DEMO_UNK17_e; + + if (r24) { mMaxNormalSpeed = daPy_HIO_atnMove_c0::m.field_0xC; } else { mMaxNormalSpeed = daPy_HIO_move_c0::m.field_0x18; } + if (changeSlideProc()) { return true; } if (checkNextActionFromButton()) { return true; } - if ((param_1 != 0) && ((!(mStickDistance > 0.05f) && (!spActionButton())))) { - mMaxNormalSpeed = dVar11; + if (r29 != 0 && ((!(mStickDistance > 0.05f) && !spActionButton()))) { + mMaxNormalSpeed = f31; return false; } - if (bVar5) { + + BOOL r3; + if (r24) { if (checkBoomerangAnime()) { - param_1 = checkNextBoomerangMode(); + r3 = checkNextBoomerangMode(); } else if (checkBowAnime()) { - param_1 = checkNextBowMode(); + r3 = checkNextBowMode(); } else if (checkHookshotReadyAnime()) { - param_1 = checkNextHookshotMode(); + r3 = checkNextHookshotMode(); } else if (checkRopeAnime()) { - param_1 = checkNextRopeMode(); - } else { - if ((mpAttnActorLockOn != NULL) || (mDemo.getDemoMode() == daPy_demo_c::DEMO_UNK17_e)) { - if (std::abs(mVelocity) <= 0.001f) { - param_1 = procAtnActorWait_init(); - } else { - param_1 = procAtnActorMove_init(); - } - } else if (std::abs(mVelocity) <= 0.001f) { - param_1 = changeWaitProc(); + r3 = checkNextRopeMode(); + } else if (mpAttnActorLockOn != NULL || (mDemo.getDemoMode() == daPy_demo_c::DEMO_UNK17_e)) { + if (std::abs(mVelocity) <= 0.001f) { + r3 = procAtnActorWait_init(); } else { - param_1 = procAtnMove_init(); + r3 = procAtnActorMove_init(); } + } else if (std::abs(mVelocity) <= 0.001f) { + r3 = changeWaitProc(); + } else { + r3 = procAtnMove_init(); } } else { mDirection = DIR_NONE; int direction = getDirectionFromCurrentAngle(); if (std::abs(mVelocity) <= 0.001f) { - if ((cLib_distanceAngleS(m34E8, current.angle.y) > 0x7800) && (mStickDistance > 0.05f)) + if (cLib_distanceAngleS(m34E8, current.angle.y) > 0x7800 && mStickDistance > 0.05f) { - if (((!procWaitTurn_init()) && (!dComIfGp_event_runCheck())) && - (mDemo.getDemoType() == 0)) + r3 = procWaitTurn_init(); + if (!r3 && !dComIfGp_event_runCheck() && mDemo.getDemoType() == 0) { - param_1 = changeWaitProc(); + r3 = changeWaitProc(); } } else { - param_1 = changeWaitProc(); + r3 = changeWaitProc(); } - } else if ((mCurProc == daPyProc_MOVE_TURN_e) && (current.angle.y != shape_angle.y)) { - param_1 = procMoveTurn_init(0); - } else if ((cLib_distanceAngleS(m34E8, current.angle.y) > 0x7800) && - (mStickDistance > 0.05f)) + } else if (mCurProc == daPyProc_MOVE_TURN_e && current.angle.y != shape_angle.y) { + r3 = procMoveTurn_init(0); + } else if (cLib_distanceAngleS(m34E8, current.angle.y) > 0x7800 && + mStickDistance > 0.05f) { if ((speedF / mMaxNormalSpeed > daPy_HIO_slip_c0::m.field_0x4) && - (mCurrAttributeCode != dBgS_Attr_ICE_e) && - ((!checkGrabAnime()) && (getDirectionFromAngle(m34EA - m34DC) == DIR_BACKWARD))) + mCurrAttributeCode != dBgS_Attr_ICE_e && + (!checkGrabAnime() && getDirectionFromAngle(m34EA - m34DC) == DIR_BACKWARD)) { - param_1 = procSlip_init(); + r3 = procSlip_init(); } else { - param_1 = procMoveTurn_init(1); + r3 = procMoveTurn_init(1); } - } else if ((direction == DIR_BACKWARD) && (mStickDistance > 0.05f)) { - param_1 = procMoveTurn_init(1); + } else if (direction == DIR_BACKWARD && mStickDistance > 0.05f) { + r3 = procMoveTurn_init(1); } else { - param_1 = procMove_init(); + r3 = procMove_init(); } } - if (param_1 == 0) { - checkJumpFlower(); + + if (!r3) { + r3 = checkJumpFlower(); } + return r3; } /* 8010EC78-8010ED68 .text checkIceSlipFall__9daPy_lk_cFv */ @@ -3670,8 +4441,8 @@ BOOL daPy_lk_c::checkIceSlipFall() { } f32 dVar5 = fVar2; f32 dVar6 = fVar1; - if ((cLib_distanceAngleS(sVar3, current.angle.y) > 0x7000) && (mVelocity >= dVar6) && - (m36A0.abs2XZ() >= dVar5)) + if (cLib_distanceAngleS(sVar3, current.angle.y) > 0x7000 && mVelocity >= dVar6 && + m36A0.abs2XZ() >= dVar5) { m34D0--; if (m34D0 == 0) { @@ -3749,7 +4520,7 @@ void daPy_lk_c::setFrontWallType() { iVar10 = dComIfG_Bgsp()->GetWallCode(mLinkLinChk); if (iVar10 != 4 && iVar10 != 5) { iVar9 = 2; - dVar12 = (2.0f * dVar12); + dVar12 = 2.0f * dVar12; for (; iVar9 >= 0; iVar9--) { spA8.set(current.pos.x, current.pos.y + ((mAcchCir[iVar9]).GetWallH()), current.pos.z); sp9C.set(spA8.x - (dVar12 * pVVar6->GetNP()->x), spA8.y, spA8.z - (dVar12 * pVVar6->GetNP()->z)); @@ -3788,7 +4559,7 @@ void daPy_lk_c::setFrontWallType() { dVar16 = dComIfG_Bgsp()->GroundCross(&mGndChk); if (dVar16 >= current.pos.y) { uVar7 = dComIfG_Bgsp()->GetTriPla(mGndChk); - if (uVar7->GetNP()->y >= 0.5f) { + if (cBgW_CheckBGround(uVar7->GetNP()->y)) { sp78.set(pVVar6->GetNP()->z, 0.0f, pVVar6->GetNP()->x); sp78.normalize(); cM3dGPla spC8(&sp78, -(sp78.x * m3724.x + sp78.z * m3724.z)); @@ -3807,7 +4578,7 @@ void daPy_lk_c::setFrontWallType() { mFrontWallType = 3; return; } - if ((iVar10 == 4) || (iVar10 == 5 && (!checkModeFlg(ModeFlg_MIDAIR)))) { + if (iVar10 == 4 || (iVar10 == 5 && !checkModeFlg(ModeFlg_MIDAIR))) { if (iVar10 == 4) { mFrontWallType = 4; } else { @@ -3864,7 +4635,7 @@ void daPy_lk_c::setFrontWallType() { } } if (cVar8 != 0) { - if ((!checkGrabAnime()) && (!checkModeFlg(ModeFlg_MIDAIR | ModeFlg_SWIM))) { + if (!checkGrabAnime() && !checkModeFlg(ModeFlg_MIDAIR | ModeFlg_SWIM)) { spA8.set(current.pos.x, current.pos.y + 149.9f, current.pos.z); sp9C.set( spA8.x + (2.0f * dVar16) * cM_ssin(current.angle.y), @@ -3889,7 +4660,7 @@ void daPy_lk_c::setFrontWallType() { if (!checkModeFlg(ModeFlg_SWIM) && dVar16 < current.pos.y) { return; } - if (dVar16 == C_BG_MIN_HEIGHT || !(dComIfG_Bgsp()->GetTriPla(mGndChk)->GetNP()->y >= 0.5f)) { + if (dVar16 == C_BG_MIN_HEIGHT || !cBgW_CheckBGround(dComIfG_Bgsp()->GetTriPla(mGndChk)->GetNP()->y)) { return; } cXyz sp3C; @@ -3902,16 +4673,16 @@ void daPy_lk_c::setFrontWallType() { m3724 = sp3C; f32 fVar3 = m3724.y - current.pos.y; if (checkModeFlg(ModeFlg_SWIM)) { - if ((fVar3 <= 0.1f + daPy_HIO_swim_c0::m.field_0x6C) && (fVar3 >= -5.0f)) { + if ((fVar3 <= 0.1f + daPy_HIO_swim_c0::m.field_0x6C) && fVar3 >= -5.0f) { mFrontWallType = 7; } } else if (checkModeFlg(ModeFlg_MIDAIR)) { - if (((dVar16 - mAcch.GetGroundH()) > 125.0f) && (mCurProc != daPyProc_HOOKSHOT_FLY_e || (fVar3 < 100.0f))) { + if (((dVar16 - mAcch.GetGroundH()) > 125.0f) && (mCurProc != daPyProc_HOOKSHOT_FLY_e || fVar3 < 100.0f)) { mFrontWallType = 7; } } else if (fVar3 >= 0.1f + daPy_HIO_wallCatch_c0::m.field_0x18) { - // - } else if ((!checkGrabAnime()) || !(fVar3 >= 0.1f + daPy_HIO_wallCatch_c0::m.field_0xC)) { + // TODO? + } else if (!checkGrabAnime() || !(fVar3 >= 0.1f + daPy_HIO_wallCatch_c0::m.field_0xC)) { if (fVar3 < 27.09f) { return; } else if (fVar3 < daPy_HIO_wallCatch_c0::m.field_0xC + 0.1f) { @@ -3929,12 +4700,126 @@ void daPy_lk_c::setFrontWallType() { /* 8010F9AC-8010FEC4 .text changeFrontWallTypeProc__9daPy_lk_cFv */ BOOL daPy_lk_c::changeFrontWallTypeProc() { - /* Nonmatching */ + f32 fVar2; + f32 fVar3; + int iVar8; + s16 sVar5; + + setFrontWallType(); + sVar5 = m3544; + m3544 = 0; + if (mStickDistance <= 0.05f && !checkModeFlg(ModeFlg_MIDAIR)) { + return false; + } + if (checkModeFlg(ModeFlg_MIDAIR)) { + if (mFrontWallType == 7) { + voiceStart(10); + return procHangStart_init(); + } + if (!checkNoResetFlg1(daPyFlg1_VINE_CATCH)) { + if (mFrontWallType == 3) { + deleteEquipItem(TRUE); + shape_angle.y = m352C + 0x8000; + procClimbMoveUpDown_init(1); + m35E0 = 43.67353f; + m_old_fdata->initOldFrameMorf(5.0f, 0, 0x2A); + mFrameCtrlUnder[UNDER_MOVE0_e].setRate(0.0f); + return true; + } + if (mFrontWallType == 4) { + fVar2 = cM_ssin(m352C); + fVar3 = cM_scos(m352C); + iVar8 = (int)((current.pos.y - m3724.y) / 37.5f) - 1; + if (iVar8 < 1) { + return procFall_init(1, daPy_HIO_wallCatch_c0::m.field_0x54); + } + shape_angle.y = m352C + 0x8000; + current.angle.y = shape_angle.y; + current.pos.x = (m3724.x + 20.5f * fVar2) - fVar3; + current.pos.y = m3724.y + 37.5f * iVar8; + current.pos.z = (m3724.z + 20.5f * fVar3) + fVar2; + deleteEquipItem(TRUE); + m35E0 = 43.67353f; + if (current.pos.y > m35F8 - 150.0f) { + current.pos.y = m35F8 - 150.0f; + m370C = current.pos; + procLadderUpEnd_init(1); + } else { + procLadderMove_init(1, 0, ¤t.pos); + mFrameCtrlUnder[UNDER_MOVE0_e].setRate(0.0f); + } + m_old_fdata->initOldFrameMorf(5.0f, 0, 0x2A); + return true; + } + } + } else if (!checkResetFlg0(daPyRFlg0_UNK8)) { + if (mFrontWallType == 3) { + if (checkNoResetFlg1(daPyFlg1_VINE_CATCH)) { + return false; + } + if (checkModeFlg(ModeFlg_SWIM)) { + shape_angle.y = m352C + 0x8000; + current.pos.y = current.pos.y - 60.0f; + procClimbMoveUpDown_init(1); + m35E0 = 43.67353f; + m_old_fdata->initOldFrameMorf(5.0f, 0, 0x2A); + mFrameCtrlUnder[UNDER_MOVE0_e].setRate(0.0f); + return true; + } + return procClimbUpStart_init(); + } + if (mFrontWallType == 4) { + if (checkNoResetFlg1(daPyFlg1_VINE_CATCH)) { + return false; + } + if (checkModeFlg(ModeFlg_SWIM)) { + fVar3 = cM_ssin(m352C); + fVar2 = cM_scos(m352C); + shape_angle.y = m352C + 0x8000; + current.angle.y = shape_angle.y; + iVar8 = (int)((current.pos.y - m3724.y) / 37.5f) - 2; + current.pos.x = (m3724.x + 20.5f * fVar3) - fVar2; + current.pos.y = m3724.y + 37.5f * iVar8; + current.pos.z = (m3724.z + 20.5f * fVar2) + fVar3; + while (m35D0 - current.pos.y > daPy_HIO_swim_c0::m.field_0x24) { + current.pos.y += 37.5f; + } + procLadderMove_init(1, 0, ¤t.pos); + m35E0 = 43.67353f; + m_old_fdata->initOldFrameMorf(5.0f, 0, 0x2A); + return true; + } + return procLadderUpStart_init(); + } + if (mFrontWallType == 5) { + if (checkNoResetFlg1(daPyFlg1_VINE_CATCH)) { + return false; + } + return procLadderDownStart_init(); + } + m3544 = sVar5 + 1; + if (mFrontWallType == 6) { + if (m3544 > daPy_HIO_smallJump_c0::m.field_0x2) { + return procSmallJump_init(0); + } + return false; + } + if (m3544 > daPy_HIO_wallCatch_c0::m.field_0x8) { + if (mFrontWallType == 7) { + return procHangWallCatch_init(); + } + if (mFrontWallType == 8 || mFrontWallType == 9) { + return procVerticalJump_init(); + } + m3544 = 0; + } + } + return false; } /* 8010FEC4-8010FFB0 .text changeSlideProc__9daPy_lk_cFv */ int daPy_lk_c::changeSlideProc() { - short sVar4; + s16 sVar4; cM3dGPla* pfVar1 = getSlidePolygon(); if (pfVar1 != NULL) { @@ -3942,7 +4827,7 @@ int daPy_lk_c::changeSlideProc() { if (m34C3 != 0) { cLib_addCalc(&mVelocity, 0.0f, 0.4f, 5.0f, 1.0f); m3526--; - if ((mVelocity > 5.0f) || (m3526 > 0)) { + if (mVelocity > 5.0f || m3526 > 0) { return false; } } @@ -3976,8 +4861,8 @@ BOOL daPy_lk_c::changeLandProc(f32 param_1) { f32 dVar6; f32 dVar7; - dVar7 = (m35F0 - current.pos.y); - if ((mCurrAttributeCode != dBgS_Attr_GIANT_FLOWER_e) && + dVar7 = m35F0 - current.pos.y; + if (mCurrAttributeCode != dBgS_Attr_GIANT_FLOWER_e && ((dVar7 >= (100.0f * daPy_HIO_fall_c0::m.field_0x14)))) { if (dVar7 >= (100.0f * daPy_HIO_fall_c0::m.field_0x10)) { @@ -3988,16 +4873,16 @@ BOOL daPy_lk_c::changeLandProc(f32 param_1) { } dVar6 = param_1; int direction = getDirectionFromAngle(current.angle.y - shape_angle.y); - if ((mCurProc == daPyProc_CUT_EX_MJ_e) && ((m34C5 != 0 || (checkNoResetFlg0(daPyFlg0_UNK4))))) { + if (mCurProc == daPyProc_CUT_EX_MJ_e && ((m34C5 != 0 || checkNoResetFlg0(daPyFlg0_UNK4)))) { bVar2 = true; } else { bVar2 = false; } - if (((((!checkGrabAnime()) && (mStickDistance > 0.5f)) && (direction != DIR_BACKWARD)) && + if ((((!checkGrabAnime() && mStickDistance > 0.5f) && direction != DIR_BACKWARD) && (!bVar2)) && (((mCurProc == daPyProc_CUT_EX_MJ_e || (m3688.y - current.pos.y >= 300.0f)) && ((!checkNoResetFlg1(daPyFlg1_UNK8000000) && - (getDirectionFromCurrentAngle() == DIR_FORWARD)))))) + getDirectionFromCurrentAngle() == DIR_FORWARD))))) { voiceStart(7); if (direction == DIR_FORWARD) { @@ -4008,8 +4893,8 @@ BOOL daPy_lk_c::changeLandProc(f32 param_1) { } } else { if (((dVar7 >= (0.5f * (daPy_HIO_fall_c0::m.field_0x14 * 100.0f))) && - (!checkBossGomaStage())) && - (mCurrAttributeCode != dBgS_Attr_GIANT_FLOWER_e)) + !checkBossGomaStage()) && + mCurrAttributeCode != dBgS_Attr_GIANT_FLOWER_e) { procLandDamage_init(0); } else { @@ -4045,10 +4930,10 @@ BOOL daPy_lk_c::setDamagePoint(f32 amount) { /* 80110338-80110448 .text checkNormalDamage__9daPy_lk_cFi */ BOOL daPy_lk_c::checkNormalDamage(int param_1) { f32 fVar2; - if (((checkGrabAnime()) || (mCurProc != daPyProc_MOVE_e)) || + if ((checkGrabAnime() || mCurProc != daPyProc_MOVE_e) || (std::abs((mVelocity * (m3580 == 8 ? fVar2 = 1.0f : fVar2 = cM_scos(m34E2))) / mMaxNormalSpeed) < 0.9f) || - (((!checkNoDamageMode()) && (!dComIfGs_checkBottle(dItem_FAIRY_BOTTLE_e))) && + ((!checkNoDamageMode() && !dComIfGs_checkBottle(dItem_FAIRY_BOTTLE_e)) && !(dComIfGs_getLife() > param_1))) { return true; @@ -4058,17 +4943,28 @@ BOOL daPy_lk_c::checkNormalDamage(int param_1) { /* 80110448-801104E4 .text setDashDamage__9daPy_lk_cFv */ void daPy_lk_c::setDashDamage() { - /* Nonmatching */ + setActAnimeUpper(LKANM_BCK_DAMDASH, UPPER_MOVE2_e, daPy_HIO_move_c0::m.field_0x48, 0.0f, -1, + daPy_HIO_basic_c0::m.field_0xC); + setPriTextureAnime(0x40, 0); + mFrameCtrlUpper[UPPER_MOVE2_e].setFrame(mFrameCtrlUnder[UNDER_MOVE1_e].getFrame()); + mDamageWaitTimer = daPy_HIO_dam_c0::m.field_0x2; + voiceStart(2); + seStartOnlyReverb(JA_SE_LK_DAMAGE_NORMAL); } /* 801104E4-8011054C .text checkAtHitEnemy__9daPy_lk_cFP12dCcD_GObjInf */ -BOOL daPy_lk_c::checkAtHitEnemy(dCcD_GObjInf*) { - /* Nonmatching */ +BOOL daPy_lk_c::checkAtHitEnemy(dCcD_GObjInf* param_1) { + if ((param_1->ChkAtHit() && param_1->GetAtHitAc() != NULL) && + (fopAcM_GetGroup(param_1->GetAtHitAc()) == fopAc_ENEMY_e)) + { + return true; + } + return false; } /* 8011054C-801105D8 .text checkElecReturnDamage__9daPy_lk_cFP12dCcD_GObjInfP4cXyz */ BOOL daPy_lk_c::checkElecReturnDamage(dCcD_GObjInf* param_1, cXyz* param_2) { - if ((param_1->ChkAtHit()) && (param_1->GetAtHitGObj() != NULL)) { + if (param_1->ChkAtHit() && param_1->GetAtHitGObj() != NULL) { dCcD_GObjInf* gobj_p = (dCcD_GObjInf*)param_1->GetAtHitGObj(); if (gobj_p->GetTgSpl() == dCcG_Tg_Spl_UNK1) { param_2->x = param_1->GetAtHitPosP()->x; @@ -4082,9 +4978,9 @@ BOOL daPy_lk_c::checkElecReturnDamage(dCcD_GObjInf* param_1, cXyz* param_2) { /* 801105D8-80110654 .text checkWallAtributeDamage__9daPy_lk_cFP12dBgS_AcchCir */ s32 daPy_lk_c::checkWallAtributeDamage(dBgS_AcchCir* param_1) { - if ((param_1->ChkWallHit()) && (dComIfG_Bgsp()->ChkPolySafe(*param_1))) { + if (param_1->ChkWallHit() && dComIfG_Bgsp()->ChkPolySafe(*param_1)) { int attrib_code = dComIfG_Bgsp()->GetAttributeCode(*param_1); - if ((attrib_code == dBgS_Attr_DAMAGE_e || (attrib_code == dBgS_Attr_ELECTRICITY_e))) { + if ((attrib_code == dBgS_Attr_DAMAGE_e || attrib_code == dBgS_Attr_ELECTRICITY_e)) { return attrib_code; } } @@ -4260,8 +5156,8 @@ BOOL daPy_lk_c::changeDamageProc() { mCyl.GetTgHitAc() && fopAcM_GetName(mCyl.GetTgHitAc()) == PROC_NZ && grab_actor != NULL ) { - cXyz* damageVec = getDamageVec(&mCyl); - grab_actor->shape_angle.y = cM_atan2s(damageVec->x, damageVec->z); + cXyz* damage_vec = getDamageVec(&mCyl); + grab_actor->shape_angle.y = cM_atan2s(damage_vec->x, damage_vec->z); grab_actor->shape_angle.x = 0x2000; return procLargeDamage_init(-4, 1, 0, 0); } @@ -4325,9 +5221,9 @@ BOOL daPy_lk_c::changeDamageProc() { BOOL daPy_lk_c::changeAutoJumpProc() { if ((!checkModeFlg(ModeFlg_MIDAIR | ModeFlg_ROPE | ModeFlg_IN_SHIP | ModeFlg_CLIMB | ModeFlg_SWIM | ModeFlg_LADDER | ModeFlg_CAUGHT)) && - (!mAcch.ChkGroundHit())) + !mAcch.ChkGroundHit()) { - f32 dVar11 = mAcch.m_ground_h - current.pos.y; + f32 dVar11 = mAcch.GetGroundH() - current.pos.y; mLavaGndChk.SetPos(¤t.pos); if (checkNoResetFlg0(daPyFlg0_HOVER_BOOTS)) { offNoResetFlg0(daPyFlg0_HOVER_BOOTS); @@ -4359,11 +5255,9 @@ BOOL daPy_lk_c::changeAutoJumpProc() { pcVar4 = NULL; } dVar10 = mVelocity; - if ((dComIfGs_getLife() != 0) || (dComIfGs_checkBottle(dItem_FAIRY_BOTTLE_e))) { - if ((m357C != 3) && - ((((!(checkGrabWear()) && (dVar10 >= daPy_HIO_autoJump_c0::m.field_0x14)) && - (mStickDistance > 0.85f)) && - (cLib_distanceAngleS(sVar3, shape_angle.y) < 0x800)))) + if (dComIfGs_getLife() != 0 || dComIfGs_checkBottle(dItem_FAIRY_BOTTLE_e)) { + if (m357C != 3 && !checkGrabWear() && dVar10 >= daPy_HIO_autoJump_c0::m.field_0x14 && + mStickDistance > 0.85f && cLib_distanceAngleS(sVar3, shape_angle.y) < 0x800) { if (pcVar4 != NULL) { current.pos.x = mLinkLinChk.GetCrossP()->x; @@ -4371,10 +5265,9 @@ BOOL daPy_lk_c::changeAutoJumpProc() { } return procAutoJump_init(); } - if ((((pcVar4 != NULL) && (std::abs((pcVar4->mNormal).y) <= 0.05f)) && - ((dComIfG_Bgsp()->GetWallCode(mLinkLinChk) != 2 && - ((dVar11 < -125.0f && ((m35D0 - current.pos.y) < -125.0f)))))) && - (current.pos.y - m35D4 > 125.0f)) + if (pcVar4 != NULL && std::abs(pcVar4->GetNP()->y) <= 0.05f && + dComIfG_Bgsp()->GetWallCode(mLinkLinChk) != 2 && dVar11 < -125.0f && + m35D0 - current.pos.y < -125.0f && current.pos.y - m35D4 > 125.0f) { current.pos.x = mLinkLinChk.GetCrossP()->x; current.pos.z = mLinkLinChk.GetCrossP()->z; @@ -4433,23 +5326,15 @@ BOOL daPy_lk_c::changeDemoProc() { deleteEquipItem(FALSE); } u32 demo_mode = mDemo.getDemoMode(); - JUT_ASSERT(9342, (demo_mode < daPy_demo_c::DEMO_LAST_e) || - (demo_mode == daPy_demo_c::DEMO_NEW_ANM0_e)); - if ((((demo_mode != daPy_demo_c::DEMO_NEW_ANM0_e) && - (demo_mode != daPy_demo_c::DEMO_UNK1E_e)) && - (demo_mode != daPy_demo_c::DEMO_UNK09_e)) && - (((demo_mode != daPy_demo_c::DEMO_UNK11_e && (demo_mode != daPy_demo_c::DEMO_UNK40_e)) && - ((demo_mode != daPy_demo_c::DEMO_UNK04_e && - ((demo_mode != daPy_demo_c::DEMO_UNK2F_e && - (demo_mode != daPy_demo_c::DEMO_UNK3E_e)))))))) + JUT_ASSERT(9342, (demo_mode < daPy_demo_c::DEMO_LAST_e) || (demo_mode == daPy_demo_c::DEMO_NEW_ANM0_e)); + if (demo_mode != daPy_demo_c::DEMO_NEW_ANM0_e && demo_mode != daPy_demo_c::DEMO_UNK1E_e && + demo_mode != daPy_demo_c::DEMO_UNK09_e && demo_mode != daPy_demo_c::DEMO_UNK11_e && + demo_mode != daPy_demo_c::DEMO_UNK40_e && demo_mode != daPy_demo_c::DEMO_UNK04_e && + demo_mode != daPy_demo_c::DEMO_UNK2F_e && demo_mode != daPy_demo_c::DEMO_UNK3E_e) { - if ((!dComIfGp_checkPlayerStatus0(0, daPyStts0_SHIP_RIDE_e) && - !dComIfGp_checkPlayerStatus0(0, daPyStts0_SWIM_e))) + if (!dComIfGp_checkPlayerStatus0(0, daPyStts0_SHIP_RIDE_e) && !dComIfGp_checkPlayerStatus0(0, daPyStts0_SWIM_e)) { - if ((!mAcch.ChkGroundHit() || - (checkModeFlg(ModeFlg_MIDAIR | ModeFlg_HANG | ModeFlg_ROPE | ModeFlg_IN_SHIP | - ModeFlg_CLIMB | ModeFlg_SWIM | ModeFlg_LADDER | ModeFlg_CAUGHT)))) - { + if (!mAcch.ChkGroundHit() || daPy_lk_c::checkPlayerFly()) { return false; } } @@ -4473,12 +5358,11 @@ BOOL daPy_lk_c::changeDemoProc() { } return var_r28; } - if ((demo_mode == daPy_demo_c::DEMO_UNK06_e) || (demo_mode == daPy_demo_c::DEMO_UNK08_e)) { + if ((demo_mode == daPy_demo_c::DEMO_UNK06_e) || demo_mode == daPy_demo_c::DEMO_UNK08_e) { if (checkModeFlg(ModeFlg_04000000)) { return true; } - if (((dComIfGp_checkPlayerStatus0(0, daPyStts0_SHIP_RIDE_e)) && - (fopAcM_getTalkEventPartner(this) != NULL)) && + if (((dComIfGp_checkPlayerStatus0(0, daPyStts0_SHIP_RIDE_e)) && (fopAcM_getTalkEventPartner(this) != NULL)) && (fopAcM_getTalkEventPartner(this) == dComIfGp_getShipActor())) { return procShipPaddle_init(); @@ -4486,7 +5370,7 @@ BOOL daPy_lk_c::changeDemoProc() { onNoResetFlg0(daPyFlg0_UNK100000); fopAc_ac_c* grab_actor = mActorKeepGrab.getActor(); if (grab_actor != NULL) { - if ((fopAcM_CheckStatus(grab_actor, fopAcStts_UNK10000_e)) && (!checkGrabSpecialHeavyState())) { + if ((fopAcM_CheckStatus(grab_actor, fopAcStts_UNK10000_e)) && !checkGrabSpecialHeavyState()) { return procGrabThrow_init(0); } else { return procGrabPut_init(); @@ -4496,8 +5380,7 @@ BOOL daPy_lk_c::changeDemoProc() { } } else if (demo_mode == daPy_demo_c::DEMO_UNK09_e) { onNoResetFlg0(daPyFlg0_UNK100000); - if ((mCurProc == daPyProc_LARGE_DAMAGE_UP_e) || (mCurProc == daPyProc_LARGE_DAMAGE_WALL_e)) - { + if ((mCurProc == daPyProc_LARGE_DAMAGE_UP_e) || mCurProc == daPyProc_LARGE_DAMAGE_WALL_e) { return false; } if (checkModeFlg(ModeFlg_SWIM)) { @@ -4524,12 +5407,12 @@ BOOL daPy_lk_c::changeDemoProc() { } return procSlowFall_init(); } else if (demo_mode == daPy_demo_c::DEMO_UNK1F_e) { - if (((!checkModeFlg(ModeFlg_MIDAIR | ModeFlg_HANG | ModeFlg_ROPE | ModeFlg_IN_SHIP | - ModeFlg_CLIMB | ModeFlg_SWIM | ModeFlg_LADDER | ModeFlg_04000000 | - ModeFlg_CAUGHT)) && - (((((checkUpperReadyThrowAnime() || (m34C3 == 2)) || (m34C3 == 1)) || - ((m34C3 == 4 || (m34C3 == 9)))) || - ((m34C3 == 10 || (mCurProc == daPyProc_GRAB_WAIT_e)))))) || + if (((!checkModeFlg( + ModeFlg_MIDAIR | ModeFlg_HANG | ModeFlg_ROPE | ModeFlg_IN_SHIP | ModeFlg_CLIMB | ModeFlg_SWIM | + ModeFlg_LADDER | ModeFlg_04000000 | ModeFlg_CAUGHT + )) && + ((((checkUpperReadyThrowAnime() || m34C3 == 2) || m34C3 == 1) || (m34C3 == 4 || m34C3 == 9)) || + (m34C3 == 10 || mCurProc == daPyProc_GRAB_WAIT_e))) || (dComIfGp_checkPlayerStatus0(0, daPyStts0_SHIP_RIDE_e))) { onNoResetFlg0(daPyFlg0_UNK100000); @@ -4540,7 +5423,7 @@ BOOL daPy_lk_c::changeDemoProc() { } } else if (demo_mode == daPy_demo_c::DEMO_UNK22_e) { onNoResetFlg0(daPyFlg0_UNK100000); - if ((mCurProc == daPyProc_TACT_PLAY_e) || (mCurProc == daPyProc_TACT_PLAY_END_e)) { + if ((mCurProc == daPyProc_TACT_PLAY_e) || mCurProc == daPyProc_TACT_PLAY_END_e) { return true; } return procTactWait_init(mDemo.getParam0()); @@ -4556,11 +5439,11 @@ BOOL daPy_lk_c::changeDemoProc() { } else if (demo_mode == daPy_demo_c::DEMO_UNK3D_e) { onNoResetFlg0(daPyFlg0_UNK100000); return procBottleOpen_init(dComIfGp_event_getPreItemNo()); - } else if ((((checkNoResetFlg0(daPyFlg0_UNK100000)) || (mCurProc == daPyProc_SUBJECTIVITY_e)) || - (checkUpperReadyThrowAnime())) && - (((demo_mode == daPy_demo_c::DEMO_UNK2A_e || (demo_mode - 1 <= 2)) || - ((demo_mode == daPy_demo_c::DEMO_UNK17_e || - (demo_mode == daPy_demo_c::DEMO_UNK12_e)))))) + } else if ((((checkNoResetFlg0(daPyFlg0_UNK100000)) || mCurProc == daPyProc_SUBJECTIVITY_e) || + checkUpperReadyThrowAnime()) && + (demo_mode == daPy_demo_c::DEMO_UNK2A_e || demo_mode == daPy_demo_c::DEMO_UNK01_e || + demo_mode == daPy_demo_c::DEMO_UNK02_e || demo_mode == daPy_demo_c::DEMO_UNK03_e || + (demo_mode == daPy_demo_c::DEMO_UNK17_e || demo_mode == daPy_demo_c::DEMO_UNK12_e))) { offNoResetFlg0(daPyFlg0_UNK100000); if (checkUpperReadyThrowAnime()) { @@ -4622,8 +5505,23 @@ cXyz* daPy_lk_c::getDamageVec(dCcD_GObjInf* i_hitObj) { } /* 80111D64-80111E54 .text setOldRootQuaternion__9daPy_lk_cFsss */ -void daPy_lk_c::setOldRootQuaternion(s16, s16, s16) { - /* Nonmatching */ +void daPy_lk_c::setOldRootQuaternion(s16 param_1, s16 param_2, s16 param_3) { + Quaternion afStack_28; + Quaternion local_38; + + if (m_old_fdata->getOldFrameFlg() != false) { + Quaternion* pQVar1 = m_old_fdata->getOldFrameQuaternion(0); + if ((param_1 != 0) || (param_2 != 0)) { + JMAEulerToQuat(param_1, param_2, 0, &afStack_28); + local_38 = *pQVar1; + mDoMtx_QuatConcat(&afStack_28, &local_38, m_old_fdata->getOldFrameQuaternion(0)); + } + if (param_3 != 0) { + JMAEulerToQuat(0, 0, param_3, &afStack_28); + local_38 = *pQVar1; + mDoMtx_QuatConcat(&afStack_28, &local_38, m_old_fdata->getOldFrameQuaternion(0)); + } + } } /* 80111E54-80111EFC .text checkRestHPAnime__9daPy_lk_cFv */ @@ -5058,13 +5956,6 @@ BOOL daPy_lk_c::procControllWait() { /* 80112E60-80113044 .text procWait_init__9daPy_lk_cFv */ BOOL daPy_lk_c::procWait_init() { - /* Nonmatching - regalloc, uVar2 */ - u16 uVar1; - s32 uVar2; - int iVar3; - int iVar4; - f32 dVar5; - if ((mDemo.getDemoMode() == daPy_demo_c::DEMO_UNK2A_e) && (m_tex_scroll_heap.field_0x6 == 0xFFFF)) { @@ -5081,13 +5972,13 @@ BOOL daPy_lk_c::procWait_init() { { return false; } - iVar3 = checkPlayerGuard(); + int iVar3 = checkPlayerGuard(); commonProcInit(daPyProc_WAIT_e); mVelocity = 0.0f; - iVar4 = checkRestHPAnime(); + int iVar4 = checkRestHPAnime(); if ((iVar4 != 0) && (iVar3 == 0)) { - uVar2 = (mTexAnmIndexTable[daPyFace_TMABAF].mBtpIdx - m_tex_anm_heap.mIdx) >> 5 & 0xFF; - uVar1 = m3530; + s32 uVar2 = m_tex_anm_heap.mIdx == mTexAnmIndexTable[daPyFace_TMABAF].mBtpIdx; + u16 uVar1 = m3530; setSingleMoveAnime(ANM_WAITATOB, daPy_HIO_move_c0::m.field_0x68, daPy_HIO_move_c0::m.field_0x6C, daPy_HIO_move_c0::m.field_0x10, daPy_HIO_move_c0::m.field_0x70); @@ -5103,29 +5994,23 @@ BOOL daPy_lk_c::procWait_init() { current.angle.y = shape_angle.y; mDirection = DIR_NONE; m35A0 = 0.0f; - dVar5 = cM_rndF(150.0f); + f32 dVar5 = cM_rndF(150.0f); m34D2 = (s16)(300.0f + dVar5); return true; } /* 80113044-801133FC .text procWait__9daPy_lk_cFv */ BOOL daPy_lk_c::procWait() { - /* Nonmatching - regalloc, uVar3 */ - s32 uVar3; - u16 uVar1; - s16 sVar4; - dBgS_AcchCir* pdVar5; - if ((m36A0.abs2XZ() <= (1.0f / 999999.9f)) && (m36AC.abs2XZ() >= 25.0f)) { return procIceSlipAlmostFall_init(); } if ((((!dComIfGp_event_runCheck()) && (mDemo.getDemoType() == 0)) && (spLTrigger())) && (mAcch.ChkWallHit())) { - pdVar5 = &mAcchCir[0]; + dBgS_AcchCir* pdVar5 = &mAcchCir[0]; for (int i = 0; i < 3; i++, pdVar5++) { if (pdVar5->ChkWallHit()) { - sVar4 = pdVar5->GetWallAngleY() + 0x8000; + s16 sVar4 = pdVar5->GetWallAngleY() + 0x8000; if (cLib_distanceAngleS(shape_angle.y, sVar4) <= 0x2000) { shape_angle.y = sVar4; current.angle.y = shape_angle.y; @@ -5135,7 +6020,7 @@ BOOL daPy_lk_c::procWait() { } } } - sVar4 = shape_angle.y; + s16 sVar2 = shape_angle.y; if (mpAttention->Lockon()) { setSpeedAndAngleAtn(); } else { @@ -5152,8 +6037,8 @@ BOOL daPy_lk_c::procWait() { } else if ((checkRestHPAnime()) && (m_anm_heap_under[UNDER_MOVE0_e].mIdx != LKANM_BCK_WAITB)) { - uVar3 = (mTexAnmIndexTable[daPyFace_TMABAF].mBtpIdx - m_tex_anm_heap.mIdx) >> 5 & 0xFF; - uVar1 = m3530; + s32 uVar3 = m_tex_anm_heap.mIdx == mTexAnmIndexTable[daPyFace_TMABAF].mBtpIdx; + u16 uVar1 = m3530; setSingleMoveAnime(ANM_WAITATOB, daPy_HIO_move_c0::m.field_0x68, daPy_HIO_move_c0::m.field_0x6C, daPy_HIO_move_c0::m.field_0x10, daPy_HIO_move_c0::m.field_0x70); @@ -5164,11 +6049,11 @@ BOOL daPy_lk_c::procWait() { setTextureAnime(0xe, uVar1); } } else { - m35A0 = 0.005f * (s16)(shape_angle.y - sVar4); + m35A0 = 0.005f * (s16)(shape_angle.y - sVar2); setBlendMoveAnime(-1.0f); } if (mDemo.getDemoMode() == daPy_demo_c::DEMO_UNK2A_e) { - if ((int)m34D0 != 0) { + if (m34D0 != 0) { m34D0--; } else if (cM_rnd() < 0.05f) { voiceStart(38); @@ -5253,13 +6138,17 @@ BOOL daPy_lk_c::procMove_init() { /* 80113628-801136D4 .text procMove__9daPy_lk_cFv */ BOOL daPy_lk_c::procMove() { - /* Nonmatching - regalloc */ setSpeedAndAngleNormal(daPy_HIO_move_c0::m.field_0x0); if (((!checkNextMode(0)) && (!changeFrontWallTypeProc())) && (!checkIceSlipFall())) { - if ((mDemo.getDemoMode() == daPy_demo_c::DEMO_UNK02_e) && - (mVelocity > mMaxNormalSpeed * daPy_HIO_move_c0::m.field_0x2C)) - { - mVelocity = mMaxNormalSpeed * daPy_HIO_move_c0::m.field_0x2C; + if ((mDemo.getDemoMode() == daPy_demo_c::DEMO_UNK02_e)) { + // Fakematch? Regalloc doesn't match unless all three of these vars are given temps. + f32 vel = mVelocity; + f32 temp1 = mMaxNormalSpeed; + f32 temp2 = daPy_HIO_move_c0::m.field_0x2C; + if (vel > temp1 * temp2) { + vel = temp1 * temp2; + mVelocity = vel; + } } setBlendMoveAnime(-1.0f); } @@ -5281,7 +6170,7 @@ BOOL daPy_lk_c::procAtnMove_init() { BOOL daPy_lk_c::procAtnMove() { setSpeedAndAngleAtn(); if ((!checkNextMode(0)) && - (((mDirection != DIR_NONE) || (!changeFrontWallTypeProc())) && (!checkIceSlipFall()))) + (((mDirection != DIR_FORWARD) || (!changeFrontWallTypeProc())) && (!checkIceSlipFall()))) { setBlendAtnMoveAnime(-1.0f); } @@ -5452,12 +6341,84 @@ BOOL daPy_lk_c::procCrouchDefense_init() { /* 80113DBC-80114014 .text procCrouchDefense__9daPy_lk_cFv */ BOOL daPy_lk_c::procCrouchDefense() { - /* Nonmatching */ + dComIfGp_setRStatus(dActStts_DEFEND_e); + if ((dCam_getBody()->ChangeModeOK(4)) && (current.pos.y >= m35D0)) { + onResetFlg0(daPyRFlg0_UNK4000000); + if (((dComIfGp_checkCameraAttentionStatus(mCameraInfoIdx, 0x1000))) && + (!dComIfGp_event_runCheck())) + { + return procSubjectivity_init(1); + } + } + cLib_addCalc(&mVelocity, 0.0f, daPy_HIO_move_c0::m.field_0x24, daPy_HIO_move_c0::m.field_0x1C, + daPy_HIO_move_c0::m.field_0x20); + if ((mpAttention->Lockon()) || (!spActionButton())) { + current.angle.y = shape_angle.y; + mDirection = DIR_RIGHT; + checkNextMode(0); + } else { + s16 uVar2 = m34E8 - shape_angle.y; + f32 fVar1 = mStickDistance * cM_scos(uVar2); + s16 sVar5; + if (fVar1 >= 0.0f) { + sVar5 = daPy_HIO_crouch_c0::m.field_0x2 * fVar1; + } else { + sVar5 = daPy_HIO_crouch_c0::m.field_0x0 * fVar1; + } + cLib_addCalcAngleS(&mBodyAngle.x, sVar5, 4, 0xc00, 0x180); + cLib_addCalcAngleS(&mBodyAngle.y, + daPy_HIO_crouch_c0::m.field_0x4 * mStickDistance * cM_ssin(uVar2), 4, + 0xc00, 0x180); + } + return true; } /* 80114014-801142F4 .text procCrouchDefenseSlip_init__9daPy_lk_cFv */ BOOL daPy_lk_c::procCrouchDefenseSlip_init() { - /* Nonmatching */ + commonProcInit(daPyProc_CROUCH_DEFENSE_SLIP_e); + cXyz* damage_vec = getDamageVec(&mCyl); + current.angle.y = cM_atan2s(damage_vec->x, damage_vec->z); + dCcD_GObjInf* pfVar3 = mCyl.GetTgHitGObj(); + f32 dVar5; + if ((pfVar3 != NULL) && + ((pfVar3->GetAtSpl() == dCcG_At_Spl_UNK5 || (pfVar3->GetAtSpl() == dCcG_At_Spl_UNK6)) || + (pfVar3->GetAtSpl() == dCcG_At_Spl_UNK7))) + { + setSingleMoveAnime(ANM_DIFENCEA, daPy_HIO_nockback_c0::m.field_0x8, + daPy_HIO_nockback_c0::m.field_0xC, daPy_HIO_nockback_c0::m.field_0x0, + daPy_HIO_nockback_c0::m.field_0x10); + dVar5 = damage_vec->absXZ(); + mVelocity = + (daPy_HIO_nockback_c0::m.field_0x18 * dVar5) + daPy_HIO_nockback_c0::m.field_0x14; + m34D0 = daPy_HIO_nockback_c0::m.field_0x2; + m35A0 = daPy_HIO_nockback_c0::m.field_0x1C; + m35A4 = daPy_HIO_nockback_c0::m.field_0x20; + m35A8 = daPy_HIO_nockback_c0::m.field_0x24; + m35AC = daPy_HIO_nockback_c0::m.field_0x28; + dVar5 = cM_rnd(); + mProcVar0.m3570 = (dVar5 < 0.2f) ? 1 : 0; + } else { + setSingleMoveAnime(ANM_DIFENCEA, daPy_HIO_guard_c0::m.field_0x4, + daPy_HIO_guard_c0::m.field_0x8, daPy_HIO_guard_c0::m.field_0x0, + daPy_HIO_guard_c0::m.field_0xC); + dVar5 = damage_vec->absXZ(); + mVelocity = (daPy_HIO_guard_c0::m.field_0x14 * dVar5) + daPy_HIO_guard_c0::m.field_0x10; + m34D0 = daPy_HIO_guard_c0::m.field_0x2; + m35A0 = daPy_HIO_guard_c0::m.field_0x18; + m35A4 = daPy_HIO_guard_c0::m.field_0x1C; + m35A8 = daPy_HIO_guard_c0::m.field_0x20; + m35AC = daPy_HIO_guard_c0::m.field_0x24; + mProcVar0.m3570 = 0; + } + if (mEquipItem == dItem_SKULL_HAMMER_e) { + mSwordAnim.changeBckOnly(getItemAnimeResource(LKANM_BCK_ATNGAHAMA)); + m35EC = mFrameCtrlUnder[UNDER_MOVE0_e].getFrame(); + } else { + m35E8 = mFrameCtrlUnder[UNDER_MOVE0_e].getFrame(); + } + m34BE = 3; + dComIfGp_setPlayerStatus1(0, daPyStts1_UNK80000_e); + return true; } /* 801142F4-801143D4 .text procCrouchDefenseSlip__9daPy_lk_cFv */ @@ -5499,7 +6460,50 @@ BOOL daPy_lk_c::procCrouch_init() { /* 80114440-8011476C .text procCrouch__9daPy_lk_cFv */ BOOL daPy_lk_c::procCrouch() { - /* Nonmatching */ + cXyz acStack_20; + cXyz cStack_2c; + cXyz cStack_38; + cXyz local_5c; + cXyz local_68; + + dComIfGp_setRStatus(dActStts_CROUCH_e); + if ((dCam_getBody()->ChangeModeOK(4)) && (current.pos.y >= m35D0)) { + onResetFlg0(daPyRFlg0_UNK4000000); + if (((dComIfGp_checkCameraAttentionStatus(mCameraInfoIdx, 0x1000))) && + (!dComIfGp_event_runCheck())) + { + return procSubjectivity_init(1); + } + } + cLib_addCalc(&mVelocity, 0.0f, daPy_HIO_move_c0::m.field_0x24, daPy_HIO_move_c0::m.field_0x1C, + daPy_HIO_move_c0::m.field_0x20); + if ((!spActionButton()) || + (((mpAttention->Lockon()) && (dComIfGs_getSelectEquip(1) != dItem_NONE_e)) && + (checkGuardAccept()))) + { + checkNextMode(0); + } else { + if (((m_old_fdata->getOldFrameRate() < 0.01f) && (mStickDistance > 0.05f)) && + !(m35D0 > current.pos.y + 15.0f)) + { + mDoMtx_stack_c::transS(current.pos.x, current.pos.y, current.pos.z); + mDoMtx_stack_c::ZXYrotM(m34E2, shape_angle.y, 0); + mDoMtx_stack_c::multVec(&l_crawl_start_front_offset, &acStack_20); + mDoMtx_stack_c::multVec(&l_crawl_top_offset, &cStack_2c); + if (getCrawlMoveVec(&cStack_2c, &acStack_20, &cStack_38)) { + local_5c = current.pos - cStack_38; + local_5c.y += 5.0f; + mGndChk.SetPos(&local_5c); + local_5c.y = dComIfG_Bgsp()->GroundCross(&mGndChk); + local_68 = current.pos - local_5c; + if (cLib_distanceAngleS(cM_atan2s(-local_68.y, local_68.absXZ()), m34E2) > 0x100) { + return true; + } + } + procCrawlStart_init(); + } + } + return true; } /* 8011476C-80114804 .text procWaitTurn_init__9daPy_lk_cFv */ @@ -5625,13 +6629,7 @@ BOOL daPy_lk_c::procSlip() { mLinkLinChk.Set(&local_1c, &local_28, this); if (dComIfG_Bgsp()->LineCross(&mLinkLinChk)) { cM3dGPla* iVar3 = dComIfG_Bgsp()->GetTriPla(mLinkLinChk); - bool bVar2; - if (!(iVar3->GetNP()->y >= 0.5f) && !(iVar3->GetNP()->y < -0.8f)) { - bVar2 = true; - } else { - bVar2 = false; - } - if (bVar2) { + if (cBgW_CheckBWall(iVar3->GetNP()->y)) { mVelocity = 0.0f; checkNextMode(0); } @@ -5766,13 +6764,79 @@ BOOL daPy_lk_c::procSlideBackLand() { } /* 801152D0-80115478 .text procFrontRoll_init__9daPy_lk_cFf */ -BOOL daPy_lk_c::procFrontRoll_init(f32) { - /* Nonmatching */ +BOOL daPy_lk_c::procFrontRoll_init(f32 param_1) { + commonProcInit(daPyProc_FRONT_ROLL_e); + setSingleMoveAnime(ANM_ROLLF, daPy_HIO_roll_c0::m.field_0x8, param_1, + daPy_HIO_roll_c0::m.field_0x0, daPy_HIO_roll_c0::m.field_0x14); + mVelocity = speedF * daPy_HIO_roll_c0::m.field_0x18 + daPy_HIO_roll_c0::m.field_0x1C; + if (checkHeavyStateOn()) { + mVelocity *= daPy_HIO_move_c0::m.field_0x80; + } + if (mVelocity < daPy_HIO_roll_c0::m.field_0x20) { + mVelocity = daPy_HIO_roll_c0::m.field_0x20; + } else { + param_1 = daPy_HIO_roll_c0::m.field_0x1C + + daPy_HIO_move_c0::m.field_0x18 * daPy_HIO_roll_c0::m.field_0x18; + if (checkHeavyStateOn()) { + param_1 *= daPy_HIO_move_c0::m.field_0x80; + } + if (mVelocity > param_1) { + mVelocity = param_1; + } + } + current.angle.y = shape_angle.y; + if ((mAcchCir[0].ChkWallHit()) && + (cLib_distanceAngleS(current.angle.y + 0x8000, mAcchCir[0].GetWallAngleY()) <= + daPy_HIO_roll_c0::m.field_0x4)) + { + mProcVar0.m3570 = 0; + } else { + mProcVar0.m3570 = 1; + } + offNoResetFlg0(daPyFlg0_UNK8); + m34D4 = 0; + voiceStart(7); + return true; } /* 80115478-80115628 .text procFrontRoll__9daPy_lk_cFv */ BOOL daPy_lk_c::procFrontRoll() { - /* Nonmatching */ + if (mFrameCtrlUnder[UNDER_MOVE0_e].getFrame() > 6.0f) { + m34BE = 4; + endFlameDamageEmitter(); + } + if (getSlidePolygon() != NULL) { + cLib_addCalc(&mVelocity, 0.0f, 0.5f, 2.5f, 0.1f); + } + if (mFrameCtrlUnder[UNDER_MOVE0_e].getRate() < 0.01f) { + if (mStickDistance <= 0.05f) { + mVelocity -= daPy_HIO_roll_c0::m.field_0x20; + } + checkNextMode(0); + } else { + if (mFrameCtrlUnder[UNDER_MOVE0_e].getFrame() > daPy_HIO_roll_c0::m.field_0x10) { + checkNextMode(1); + } else { + if ((speedF >= daPy_HIO_roll_c0::m.field_0x3C) && + (!checkNoResetFlg1(daPyFlg1_UNK100000))) + { + if ((checkNoResetFlg0(daPyFlg0_UNK8)) || + ((mProcVar0.m3570 != 0) && (mAcch.ChkWallHit()) && (mAcchCir[0].ChkWallHit()) && + (cLib_distanceAngleS(current.angle.y + 0x8000, mAcchCir[0].GetWallAngleY()) <= + daPy_HIO_roll_c0::m.field_0x4) && + (mFrameCtrlUnder[UNDER_MOVE0_e].getFrame() >= + daPy_HIO_roll_c0::m.field_0x34) && + (mFrameCtrlUnder[UNDER_MOVE0_e].getFrame() <= daPy_HIO_roll_c0::m.field_0x38))) + { + if (!checkNoResetFlg0(daPyFlg0_UNK8)) { + m3620 = dComIfG_Bgsp()->GetMtrlSndId(mAcchCir[0]); + } + procFrontRollCrash_init(); + } + } + } + } + return true; } /* 80115628-801157D8 .text procFrontRollCrash_init__9daPy_lk_cFv */ @@ -5988,12 +7052,109 @@ int daPy_lk_c::checkAutoJumpFlying() const { /* 80115EA4-8011602C .text procAutoJump_init__9daPy_lk_cFv */ BOOL daPy_lk_c::procAutoJump_init() { - /* Nonmatching */ + commonProcInit(daPyProc_AUTO_JUMP_e); + m3688 = current.pos; + m35F0 = m3688.y; + m35F4 = m3688.y; + setSingleMoveAnime(ANM_JMPST, daPy_HIO_autoJump_c0::m.field_0x20, + daPy_HIO_autoJump_c0::m.field_0x2C, daPy_HIO_autoJump_c0::m.field_0x2, + daPy_HIO_autoJump_c0::m.field_0x30); + if (speedF > daPy_HIO_move_c0::m.field_0x18) { + speedF = daPy_HIO_move_c0::m.field_0x18; + } else if (speedF < daPy_HIO_autoJump_c0::m.field_0x14) { + speedF = daPy_HIO_autoJump_c0::m.field_0x14; + } + mVelocity = + speedF * cM_scos(daPy_HIO_autoJump_c0::m.field_0x6) * daPy_HIO_autoJump_c0::m.field_0x18; + speed.y = + speedF * cM_ssin(daPy_HIO_autoJump_c0::m.field_0x6) * daPy_HIO_autoJump_c0::m.field_0x18; + mProcVar0.m3570 = 0; + m3700 = cXyz::Zero; + m34C2 = 1; + current.angle.y = shape_angle.y; + voiceStart(6); + onNoResetFlg0(daPyFlg0_UNK20000); + offNoResetFlg0(daPyFlg0_NO_FALL_VOICE); + m34D0 = -1; + m34D2 = 3; + return true; } /* 8011602C-801163D4 .text procAutoJump__9daPy_lk_cFv */ BOOL daPy_lk_c::procAutoJump() { - /* Nonmatching */ + if (m34D0 == 0) { + if ((mStickDistance > 0.05f) && (getDirectionFromCurrentAngle() == DIR_BACKWARD)) { + cLib_chaseF(&mVelocity, 0.0f, (daPy_HIO_autoJump_c0::m.field_0x3C * mStickDistance)); + } else if (mStickDistance <= 0.05f) { + cLib_chaseF(&mVelocity, 0.0f, (0.1f * daPy_HIO_autoJump_c0::m.field_0x3C)); + } else { + cLib_chaseF(&mVelocity, daPy_HIO_move_c0::m.field_0x18, + daPy_HIO_autoJump_c0::m.field_0x1C); + } + } else { + cLib_chaseF(&mVelocity, daPy_HIO_move_c0::m.field_0x18, daPy_HIO_autoJump_c0::m.field_0x1C); + } + checkNextActionItemFly(); + if ((checkJumpFlower()) || (checkJumpRideShip())) { + return true; + } + if (mAcch.ChkGroundHit()) { + return changeLandProc(daPy_HIO_autoJump_c0::m.field_0x24); + } + if (checkFanGlideProc(0)) { + return true; + } + if ((!checkGrabAnime()) && + ((((changeFrontWallTypeProc() || (changeRopeSwingProc())) || (checkJumpCutFromButton())) || + (checkItemChangeFromButton())))) + { + return true; + } + m34C2 = 1; + if (m34D0 > 0) { + m34D0--; + dComIfGp_setDoStatus(dActStts_LET_GO_e); + if ((mAcch.ChkWallHit()) || (mCyl.ChkCoHit())) { + m34D2--; + } + if ((doTrigger()) || (m34D2 == 0)) { + if ((doTrigger()) && (mActorKeepGrab.getActor() != NULL)) { + mActorKeepGrab.getActor()->speedF = speedF; + } + freeGrabItem(); + m34D0 = 0; + } + if (m34D0 == 0) { + gravity = daPy_HIO_autoJump_c0::m.field_0xC; + } + if (speed.y > 0.0f) { + speed.y -= 0.5f; + if (speed.y <= 0.0f) { + speed.y = 0.0f; + } + } + } else if ((speed.y < -gravity) && (mProcVar0.m3570 != 2)) { + if (((mActorKeepGrab.getActor() != NULL) && + (fopAcM_GetName(mActorKeepGrab.getActor()) == PROC_NPC_MD)) && + (dComIfGs_isEventBit(0x1620))) + { + speed.y = 5.0f; + gravity = 0.0f; + m34D0 = daPy_HIO_autoJump_c0::m.field_0x8; + } + setSingleMoveAnime(ANM_JMPEDS, 0.0f, 0.0f, -1, daPy_HIO_autoJump_c0::m.field_0x38); + m34C2 = 2; + mProcVar0.m3570 = 2; + offModeFlg(ModeFlg_00000400); + setTextureAnime(0x37, 0); + resetSeAnime(); + } else if ((m3688.y > current.pos.y) && + (m_tex_anm_heap.mIdx != mTexAnmIndexTable[daPyFace_TLAVADAM].mBtpIdx)) + { + setTextureAnime(0x37, 0); + } + setFallVoice(); + return true; } /* 801163D4-8011651C .text procLand_init__9daPy_lk_cFfi */ @@ -6099,13 +7260,104 @@ BOOL daPy_lk_c::procLandDamage() { } /* 80116864-80116A38 .text procFall_init__9daPy_lk_cFif */ -BOOL daPy_lk_c::procFall_init(int, f32) { - /* Nonmatching */ +BOOL daPy_lk_c::procFall_init(int param_1, f32 param_2) { + BOOL bVar1; + BOOL bVar2; + + if (mDemo.getDemoMode() == daPy_demo_c::DEMO_UNK11_e) { + mAcch.SetGrndNone(); + mAcch.OnLineCheckNone(); + } + if (mCurProc == daPyProc_SHIP_GET_OFF_e) { + bVar1 = false; + } else { + bVar1 = true; + } + if (mCurProc == daPyProc_FALL_e) { + return false; + } + if ((mCurProc == daPyProc_SLIDE_FRONT_e) || (mCurProc == daPyProc_SLIDE_BACK_e)) { + bVar2 = true; + } else { + bVar2 = false; + } + commonProcInit(daPyProc_FALL_e); + if (param_1 == 1) { + mVelocity = 0.0f; + speed.y = 0.0f; + current.angle.y = shape_angle.y; + } + if (param_1 == 2) { + m34D6 = 1; + } else { + m34D6 = 0; + } + setSingleMoveAnime(ANM_JMPEDS, 0.0f, 0.0f, -1, param_2); + setTextureAnime(0x37, 0); + resetSeAnime(); + mProcVar0.m3570 = 0; + if ((current.angle.y == shape_angle.y) && (!checkGrabAnime())) { + if (mVelocity > 1.0f) { + m34D0 = 2; + } else { + m34D0 = 1; + } + } else { + m34D0 = 0; + } + m34D2 = 8; + if ((cLib_distanceAngleS(current.angle.y, shape_angle.y) < 0x4800) && (!bVar2)) { + m34D4 = 1; + } else { + m34D4 = 0; + } + offNoResetFlg0(daPyFlg0_NO_FALL_VOICE); + m3574 = bVar1; + return true; } /* 80116A38-80116C14 .text procFall__9daPy_lk_cFv */ BOOL daPy_lk_c::procFall() { - /* Nonmatching */ + if (((mProcVar0.m3570 == 0) && (m3688.y > current.pos.y)) && + (m_tex_anm_heap.mIdx != mTexAnmIndexTable[daPyFace_TLAVADAM].mBtpIdx)) + { + setTextureAnime(0x37, 0); + mProcVar0.m3570 = 1; + } + if (m34D6 != 0) { + cLib_addCalc(&mVelocity, 0.0f, 0.2f, 1.0f, 0.1f); + } + checkNextActionItemFly(); + if (checkJumpFlower() || ((m3574 != 0) && (checkJumpRideShip()))) { + return true; + } + if (mAcch.ChkGroundHit()) { + changeLandProc(daPy_HIO_autoJump_c0::m.field_0x24); + } else { + if (checkFanGlideProc(0)) { + return true; + } + setFallVoice(); + if (m34D0 == 1) { + if ((int)m34D2 > 0) { + m34D2--; + } + if (((mStickDistance > 0.05f) && (getDirectionFromShapeAngle() == 0)) && (m34D2 == 0)) { + if (changeFrontWallTypeProc()) { + return true; + } + } + } else if (m34D0 == 2) { + if ((changeFrontWallTypeProc()) || (changeRopeSwingProc())) { + return true; + } + } + if ((m34D4 != 0) && (checkJumpCutFromButton())) { + return true; + } + } + checkItemChangeFromButton(); + return true; } /* 80116C14-80116CC4 .text procSlowFall_init__9daPy_lk_cFv */ @@ -6221,12 +7473,99 @@ BOOL daPy_lk_c::procGuardCrash() { /* 801170F0-80117448 .text procDamage_init__9daPy_lk_cFv */ BOOL daPy_lk_c::procDamage_init() { - /* Nonmatching */ + cXyz* damage_vec = getDamageVec(&mCyl); + f32 f31 = cM_ssin(shape_angle.y); + f32 f30 = cM_scos(shape_angle.y); + commonProcInit(daPyProc_DAMAGE_e); + mDamageWaitTimer = daPy_HIO_dam_c0::m.field_0x0; + cXyz local_54(damage_vec->z * -f31 + damage_vec->x * f30, damage_vec->y, damage_vec->z * f30 + damage_vec->x * f31); + m34D4 = cM_atan2s(local_54.z, local_54.y); + m34D6 = cM_atan2s(-local_54.x, std::sqrtf(local_54.y * local_54.y + local_54.z * local_54.z)); + if (m34D4 > daPy_HIO_damage_c0::m.field_0x2) { + m34D4 = daPy_HIO_damage_c0::m.field_0x2; + } else { + if (m34D4 < -daPy_HIO_damage_c0::m.field_0x2) { + m34D4 = -daPy_HIO_damage_c0::m.field_0x2; + } + } + if (m34D6 > daPy_HIO_damage_c0::m.field_0x2) { + m34D6 = daPy_HIO_damage_c0::m.field_0x2; + } else { + if (m34D6 < -daPy_HIO_damage_c0::m.field_0x2) { + m34D6 = -daPy_HIO_damage_c0::m.field_0x2; + } + } + int direction = getDirectionFromAngle(cM_atan2s(local_54.x, local_54.z)); + daPy_ANM dVar2; + if (direction == DIR_BACKWARD) { + dVar2 = ANM_DAMF; + } else if (direction == DIR_LEFT) { + dVar2 = ANM_DAMR; + } else if (direction == DIR_RIGHT) { + dVar2 = ANM_DAML; + } else { + dVar2 = ANM_DAMB; + } + setSingleMoveAnime(dVar2, daPy_HIO_damage_c0::m.field_0x14, daPy_HIO_damage_c0::m.field_0x18, + daPy_HIO_damage_c0::m.field_0x0, daPy_HIO_damage_c0::m.field_0x8); + current.angle.y = cM_atan2s(damage_vec->x, damage_vec->z); + if (dVar2 != ANM_DAMR) { + m34BE = 2; + } + if (dVar2 != ANM_DAML) { + m34BE = 1; + } + mVelocity = + (daPy_HIO_damage_c0::m.field_0x10 * damage_vec->absXZ()) + daPy_HIO_damage_c0::m.field_0xC; + voiceStart(2); + seStartOnlyReverb(JA_SE_LK_DAMAGE_NORMAL); + mProcVar0.mDamageAnm = dVar2; + offNoResetFlg0(daPyFlg0_UNK2); + dComIfGp_getVibration().StartShock(4, -0x21, cXyz(0.0f, 1.0f, 0.0f)); + return true; } /* 80117448-801176FC .text procDamage__9daPy_lk_cFv */ BOOL daPy_lk_c::procDamage() { - /* Nonmatching */ + f32 fVar1; + f32 fVar2; + s16 uVar4; + f32 dVar5; + f32 dVar6; + + dVar6 = (mFrameCtrlUnder[UNDER_MOVE0_e].getFrame() - daPy_HIO_damage_c0::m.field_0x28); + cLib_addCalcAngleS(&m3566, 0, 4, 0x800, 0x100); + if (dVar6 < 0.0f) { + uVar4 = ((16384.0f * mFrameCtrlUnder[UNDER_MOVE0_e].getFrame()) / + daPy_HIO_damage_c0::m.field_0x28); + fVar1 = cM_ssin(uVar4); + if (uVar4 < 0x2000) { + uVar4 = uVar4 << 1; + } else { + uVar4 = 0x4000; + } + fVar2 = cM_ssin(uVar4); + } else { + uVar4 = (16384.0f * (1.0f - (dVar6 / (mFrameCtrlUnder[UNDER_MOVE0_e].getEnd() - + daPy_HIO_damage_c0::m.field_0x28)))); + fVar1 = 1.0f - cM_scos(uVar4); + uVar4 = uVar4; + fVar2 = 1.0f - cM_scos(uVar4 < 0x2000 ? 0 : (s16)((uVar4 - 0x2000) * 2)); + } + m3564 = m34D4 * fVar1; + m3566 = 0; + m3568 = m34D6 * fVar1; + mBodyAngle.x = m34D4 * fVar2; + mBodyAngle.z = m34D6 * fVar2; + mBodyAngle.y = 0; + dVar5 = cLib_addCalc(&mVelocity, 0.0f, daPy_HIO_damage_c0::m.field_0x1C, + daPy_HIO_damage_c0::m.field_0x20, daPy_HIO_damage_c0::m.field_0x24); + if ((dVar5 <= 0.001f) && (mFrameCtrlUnder[UNDER_MOVE0_e].getRate() < 0.01f)) { + checkNextMode(0); + } else if (mVelocity < daPy_HIO_damage_c0::m.field_0x2C) { + resetFootEffect(); + } + return true; } /* 801176FC-80117794 .text procPolyDamage_init__9daPy_lk_cFv */ @@ -6254,7 +7593,7 @@ BOOL daPy_lk_c::procPolyDamage() { BOOL daPy_lk_c::procLargeDamage_init(int param_1, int param_2, s16 param_3, s16 param_4) { f32 fVar2; s16 sVar3; - cXyz* pfVar5; + cXyz* damage_vec; int iVar7; if (mCurProc == daPyProc_LARGE_DAMAGE_e) { @@ -6296,8 +7635,8 @@ BOOL daPy_lk_c::procLargeDamage_init(int param_1, int param_2, s16 param_3, s16 current.angle.y = m3550; setDamagePoint(-1.0f); } else { - pfVar5 = getDamageVec(&mCyl); - current.angle.y = cM_atan2s(pfVar5->x, pfVar5->z); + damage_vec = getDamageVec(&mCyl); + current.angle.y = cM_atan2s(damage_vec->x, damage_vec->z); } sVar3 = current.angle.y - shape_angle.y; if (std::abs(sVar3) < 8192.0f) { @@ -6312,8 +7651,8 @@ BOOL daPy_lk_c::procLargeDamage_init(int param_1, int param_2, s16 param_3, s16 seStartOnlyReverb(JA_SE_LK_DAMAGE_LARGE); dComIfGp_getVibration().StartShock(6, -0x21, cXyz(0.0f, 1.0f, 0.0f)); } else if ((param_1 == -1) || (param_1 == -6)) { - pfVar5 = getDamageVec(&mCyl); - current.angle.y = cM_atan2s(pfVar5->x, pfVar5->z); + damage_vec = getDamageVec(&mCyl); + current.angle.y = cM_atan2s(damage_vec->x, damage_vec->z); iVar7 = getDirectionFromAngle(current.angle.y - shape_angle.y); seStartOnlyReverb(JA_SE_LK_DAMAGE_LARGE); dComIfGp_getVibration().StartShock(6, -0x21, cXyz(0.0f, 1.0f, 0.0f)); @@ -6420,7 +7759,59 @@ BOOL daPy_lk_c::procLargeDamage_init(int param_1, int param_2, s16 param_3, s16 /* 80117EAC-8011810C .text procLargeDamage__9daPy_lk_cFv */ BOOL daPy_lk_c::procLargeDamage() { - /* Nonmatching */ + if ((int)m34D0 > 0) { + m34D0--; + if (m34D0 == 0) { + mVelocity = daPy_HIO_laDamage_c0::m.field_0x18; + speed.y = daPy_HIO_laDamage_c0::m.field_0x20; + } else { + return true; + } + } + s16* psVar3; + if ((m34D6 & 4)) { + psVar3 = &m34F2; + } else { + psVar3 = &m34F4; + } + cLib_chaseAngleS(psVar3, m34D4, m34D8); + if ((m34D6 & 1)) { + if (mAcch.ChkGroundHit()) { + if (changeSlideProc()) { + mVelocity = 0.0f; + } else { + if ((m34D6 & 2)) { + voiceStart(2); + mDoAud_seStart(JA_SE_MAJUTOU_JAIL_DOOR); + mAcch.ClrWallNone(); + mAcch.OffLineCheckNone(); + } + procLargeDamageUp_init(mProcVar0.m3570, (u32)m34D6 >> 3 & 1, m34F2, m34F4); + } + } else if ((mAcch.ChkWallHit()) && (mVelocity > m35A0)) { + dBgS_AcchCir* pdVar7 = &mAcchCir[0]; + for (int i = 0; i < 3; i++, pdVar7++) { + if (pdVar7->ChkWallHit()) { + cXyz local_1c; + cXyz local_28; + local_1c.set(current.pos.x, current.pos.y + pdVar7->GetWallH(), current.pos.z); + local_28.set( + local_1c.x + cM_ssin(current.angle.y) * (pdVar7->GetWallR() + 25.0f), + local_1c.y, + local_1c.z + cM_scos(current.angle.y) * (pdVar7->GetWallR() + 25.0f)); + mLinkLinChk.Set(&local_1c, &local_28, this); + if (dComIfG_Bgsp()->LineCross(&mLinkLinChk)) { + return procLargeDamageWall_init(mProcVar0.m3570, (u32)m34D6 >> 3 & 1, m34F2, + m34F4); + break; + } + } + } + } + } else { + m34D6 = m34D6 | 1; + } + return true; } /* 8011810C-80118504 .text procLargeDamageUp_init__9daPy_lk_cFiiss */ @@ -6443,7 +7834,7 @@ BOOL daPy_lk_c::procLargeDamageUp_init(int param_1, int param_2, s16 param_3, s1 dVar7 = 0.5f; m34D0 = 0; m35A0 = 36.0f; - } else if ((param_1 == -1) || (param_1 == -2)) { + } else if ((param_1 == -1) || param_1 == -2) { dVar4 = ANM_DAMFBUP; dVar6 = 7.0f; sVar3 = -1; @@ -6456,7 +7847,7 @@ BOOL daPy_lk_c::procLargeDamageUp_init(int param_1, int param_2, s16 param_3, s1 m34D0 = 0; dVar7 = 0.5f; } - } else if ((param_1 == -4) || (dComIfGp_evmng_startCheck("ICE_FAILED"))) { + } else if ((param_1 == -4) || dComIfGp_evmng_startCheck("ICE_FAILED")) { dVar4 = ANM_DAMFBUP; dVar7 = 0.0f; dVar6 = 7.0f; @@ -6581,11 +7972,9 @@ BOOL daPy_lk_c::procLargeDamageUp() { /* 80118640-801189AC .text procLargeDamageWall_init__9daPy_lk_cFiiss */ BOOL daPy_lk_c::procLargeDamageWall_init(int param_1, int param_2, s16 param_3, s16 param_4) { - /* Nonmatching - branching */ f32 fVar1; f32 fVar2; s16 sVar3; - bool bVar4; f32 fVar5; s16 sVar6; s16 sVar7; @@ -6596,16 +7985,9 @@ BOOL daPy_lk_c::procLargeDamageWall_init(int param_1, int param_2, s16 param_3, } cM3dGPla* triPla = dComIfG_Bgsp()->GetTriPla(mLinkLinChk); sVar6 = cM_atan2s(triPla->GetNP()->x, triPla->GetNP()->z); - if (!(param_1 < 0)) { - if (!(triPla->GetNP()->y >= 0.5f) && !(triPla->GetNP()->y < -0.8f)) { - bVar4 = true; - } else { - bVar4 = false; - } - if ((bVar4) && (cLib_distanceAngleS(sVar6, current.angle.y + -0x8000) > 0x1555)) { - return false; - } - } + if (param_1 < 0 || !cBgW_CheckBWall(triPla->GetNP()->y) || cLib_distanceAngleS(sVar6, current.angle.y + -0x8000) > 0x1555) { + return false; + } commonProcInit(daPyProc_LARGE_DAMAGE_WALL_e); sVar7 = cM_atan2s(triPla->GetNP()->y, triPla->GetNP()->absXZ()); current.angle.y = sVar6; @@ -6771,8 +8153,8 @@ BOOL daPy_lk_c::procElecDamage_init(const cXyz* param_1) { m34D6 = 1; } else { if (mCyl.ChkTgHit()) { - cXyz* pfVar4 = getDamageVec(&mCyl); - m370C = *pfVar4; + cXyz* damage_vec = getDamageVec(&mCyl); + m370C = *damage_vec; m34D6 = 1; } else { m34D6 = 0; @@ -6793,10 +8175,10 @@ BOOL daPy_lk_c::procElecDamage() { } else { dComIfGp_event_reset(); endDemoMode(); - if ((mAcch.ChkGroundHit()) && ((int)m34D6 == 0)) { + if ((mAcch.ChkGroundHit()) && m34D6 == 0) { checkNextMode(0); } else { - if ((int)m34D6 != 0) { + if (m34D6 != 0) { current.angle.y = cM_atan2s(m370C.x, m370C.z); } else { current.angle.y = shape_angle.y + 0x8000; @@ -6811,7 +8193,7 @@ BOOL daPy_lk_c::procElecDamage() { BOOL daPy_lk_c::procGuardSlip_init() { daPy_ANM dVar5; - cXyz* pfVar2 = getDamageVec(&mCyl); + cXyz* damage_vec = getDamageVec(&mCyl); commonProcInit(daPyProc_GUARD_SLIP_e); if (mEquipItem == dItem_SKULL_HAMMER_e) { dVar5 = ANM_ATNGAHAM; @@ -6829,7 +8211,7 @@ BOOL daPy_lk_c::procGuardSlip_init() { setSingleMoveAnime(dVar5, daPy_HIO_nockback_c0::m.field_0x8, daPy_HIO_nockback_c0::m.field_0xC, daPy_HIO_nockback_c0::m.field_0x0, daPy_HIO_nockback_c0::m.field_0x10); - mVelocity = (daPy_HIO_nockback_c0::m.field_0x18 * pfVar2->absXZ()) + + mVelocity = (daPy_HIO_nockback_c0::m.field_0x18 * damage_vec->absXZ()) + daPy_HIO_nockback_c0::m.field_0x14; m34D0 = daPy_HIO_nockback_c0::m.field_0x2; m35A0 = daPy_HIO_nockback_c0::m.field_0x1C; @@ -6841,7 +8223,7 @@ BOOL daPy_lk_c::procGuardSlip_init() { setSingleMoveAnime(dVar5, daPy_HIO_guard_c0::m.field_0x4, daPy_HIO_guard_c0::m.field_0x8, daPy_HIO_guard_c0::m.field_0x0, daPy_HIO_guard_c0::m.field_0xC); mVelocity = - (daPy_HIO_guard_c0::m.field_0x14 * pfVar2->absXZ()) + daPy_HIO_guard_c0::m.field_0x10; + (daPy_HIO_guard_c0::m.field_0x14 * damage_vec->absXZ()) + daPy_HIO_guard_c0::m.field_0x10; m34D0 = daPy_HIO_guard_c0::m.field_0x2; m35A0 = daPy_HIO_guard_c0::m.field_0x18; m35A4 = daPy_HIO_guard_c0::m.field_0x1C; @@ -6854,7 +8236,7 @@ BOOL daPy_lk_c::procGuardSlip_init() { } else { m35E8 = mFrameCtrlUnder[UNDER_MOVE0_e].getFrame(); } - current.angle.y = cM_atan2s(pfVar2->x, pfVar2->z); + current.angle.y = cM_atan2s(damage_vec->x, damage_vec->z); m34BE = 3; m_pbCalc[PART_UPPER_e]->setRatio(2, 0.0f); return true; @@ -6928,7 +8310,7 @@ BOOL daPy_lk_c::procIceSlipFall() { psVar1 = &m34F4; } cLib_chaseAngleS(psVar1, m34D4, daPy_HIO_iceSlip_c0::m.field_0x2); - if ((mAcch.ChkGroundHit()) && (!changeSlideProc())) { + if ((mAcch.ChkGroundHit()) && !changeSlideProc()) { procIceSlipFallUp_init(mProcVar0.m3570, m34F2, m34F4); } return true; @@ -7075,7 +8457,7 @@ BOOL daPy_lk_c::procBootsEquip() { checkNextMode(1); } } else { - if ((frameCtrl.checkPass(15.0f)) && (checkEquipHeavyBoots())) { + if ((frameCtrl.checkPass(15.0f)) && checkEquipHeavyBoots()) { dComIfGp_getVibration().StartShock(5, -0x31, cXyz(0.0f, 1.0f, 0.0f)); } } @@ -7112,20 +8494,24 @@ BOOL daPy_lk_c::procNotUse_init(int param_1) { /* 80119BA0-80119DA0 .text procNotUse__9daPy_lk_cFv */ BOOL daPy_lk_c::procNotUse() { - if ((m34D4 == 0) && (!checkBottleItem((u16)mProcVar0.mBottleItem))) { - dComIfGp_event_setItemPartnerId( - fopAcM_createItemForPresentDemo(¤t.pos, mProcVar0.mBottleItem, 5, -1, - fopAcM_GetRoomNo(this), &shape_angle, &scale)); + if (m34D4 == 0 && !checkBottleItem((u16)mProcVar0.mBottleItem)) { + dComIfGp_event_setItemPartnerId(fopAcM_createItemForPresentDemo( + ¤t.pos, + mProcVar0.mBottleItem, + daDitem_c::FLAG_UNK01 | daDitem_c::FLAG_UNK04, + -1, + fopAcM_GetRoomNo(this), + &shape_angle, + &scale + )); m34D4 = 1; } if (mFrameCtrlUnder[UNDER_MOVE0_e].getRate() < 0.01f) { daItemBase_c* item = (daItemBase_c*)fopAcM_getItemEventPartner(this); - if ((item != NULL) && - ((fopAcM_GetName(item) == PROC_ITEM || (fopAcM_GetName(item) == PROC_Demo_Item)))) - { + if (item != NULL && (fopAcM_GetName(item) == PROC_ITEM || fopAcM_GetName(item) == PROC_Demo_Item)) { item->show(); } - if ((m34D4 == 0) && (checkBottleItem((u16)mProcVar0.mBottleItem))) { + if (m34D4 == 0 && checkBottleItem((u16)mProcVar0.mBottleItem)) { setBottleModel(mProcVar0.mBottleItem); m34D4 = 1; } @@ -7135,20 +8521,17 @@ BOOL daPy_lk_c::procNotUse() { msg_class* msg_p = fopMsgM_SearchByID(m3628); if (msg_p != 0) { if (msg_p->mStatus == fopMsgStts_MSG_DISPLAYED_e) { - if ((m3624 == 0xf0c) && (msg_p->mSelectNum == 1)) { + if (m3624 == 0xf0c && msg_p->mSelectNum == 1) { msg_p->mStatus = fopMsgStts_MSG_CONTINUES_e; m3624 = 0xf10; fopMsgM_messageSet(m3624); - g_dComIfG_gameInfo.save.getPlayer().getBagItem().setReserveItemEmpty( - mReadyItemBtn); + g_dComIfG_gameInfo.save.getPlayer().getBagItem().setReserveItemEmpty(mReadyItemBtn); } else { msg_p->mStatus = fopMsgStts_MSG_ENDS_e; } } else if (msg_p->mStatus == fopMsgStts_BOX_CLOSED_e) { msg_p->mStatus = fopMsgStts_MSG_DESTROYED_e; - if ((item != NULL) && ((fopAcM_GetName(item) == PROC_ITEM || - (fopAcM_GetName(item) == PROC_Demo_Item)))) - { + if (item != NULL && (fopAcM_GetName(item) == PROC_ITEM || fopAcM_GetName(item) == PROC_Demo_Item)) { item->dead(); } dComIfGp_event_reset(); @@ -7164,7 +8547,7 @@ BOOL daPy_lk_c::procNotUse() { /* 80119DA0-80119EBC .text getGroundAngle__9daPy_lk_cFP13cBgS_PolyInfos */ s16 daPy_lk_c::getGroundAngle(cBgS_PolyInfo* param_1, s16 param_2) { cM3dGPla* plane = dComIfG_Bgsp()->GetTriPla(*param_1); - if ((plane == NULL) || (!(plane->GetNP()->y >= 0.5f))) { + if ((plane == NULL) || (!cBgW_CheckBGround(plane->GetNP()->y))) { return 0; } f32 cos = cM_scos((cM_atan2s(plane->GetNP()->x, plane->GetNP()->z) - param_2)); @@ -7176,65 +8559,63 @@ s16 daPy_lk_c::getGroundAngle(cBgS_PolyInfo* param_1, s16 param_2) { /* 80119EBC-8011A508 .text setLegAngle__9daPy_lk_cFfiPsPs */ int daPy_lk_c::setLegAngle(f32 param_1, int param_2, s16* param_3, s16* param_4) { - /* Nonmatching - regalloc, cXyz */ - s16 sVar1; - s16 sVar2; - int iVar6; - s16 sVar7; f32 dVar8; f32 dVar9; f32 dVar10; f32 dVar11; f32 dVar12; f32 dVar13; - cXyz local_114; - cXyz local_108; - cXyz local_fc; - cXyz local_f0; - cXyz local_e4; - cXyz local_d8; - cXyz local_c0; - cXyz local_78; - cXyz local_6c; - cXyz local_60; - cXyz local_54; + cXyz spE8; + cXyz spDC; + cXyz spD0; + cXyz spC4; + cXyz spB8; + cXyz spAC; + cXyz spA0; + cXyz sp94; + cXyz sp88; + cXyz sp7C; + cXyz sp70; + cXyz sp64; + cXyz sp58; if (std::abs(param_1) < 0.1f) { return false; } - dVar9 = (0.5f * param_1); + dVar9 = 0.5f * param_1; if (dVar9 > 10.0f) { dVar9 = 10.0f; } dVar8 = param_1; - mDoMtx_concat(m37B4, mFootData[0].field_0x088[0], mDoMtx_stack_c::get()); - local_54.x = 0.0f; - local_54.y = mDoMtx_stack_c::now[1][3]; - local_54.z = mDoMtx_stack_c::now[2][3]; + mDoMtx_concat(m37B4, mFootData[param_2].field_0x088[0], mDoMtx_stack_c::get()); + spE8.x = 0.0f; + spE8.y = mDoMtx_stack_c::now[1][3]; + spE8.z = mDoMtx_stack_c::now[2][3]; - mDoMtx_concat(m37B4, mFootData[0].field_0x088[1], mDoMtx_stack_c::get()); - local_60.x = 0.0f; - local_60.y = mDoMtx_stack_c::now[1][3]; - local_60.z = mDoMtx_stack_c::now[2][3]; + mDoMtx_concat(m37B4, mFootData[param_2].field_0x088[1], mDoMtx_stack_c::get()); + spDC.x = 0.0f; + spDC.y = mDoMtx_stack_c::now[1][3]; + spDC.z = mDoMtx_stack_c::now[2][3]; - mDoMtx_concat(m37B4, mFootData[0].field_0x088[2], mDoMtx_stack_c::get()); - local_6c.x = 0.0f; - local_6c.y = mDoMtx_stack_c::now[1][3] + 3.25f; - local_6c.z = mDoMtx_stack_c::now[2][3]; - local_e4 = local_60 - local_54; - local_f0 = local_6c - local_60; - local_78.set(local_60.x, local_60.y + dVar8, local_60.z + dVar9); - local_78.y += param_1; - if (local_78.y >= local_54.y) { + mDoMtx_concat(m37B4, mFootData[param_2].field_0x088[2], mDoMtx_stack_c::get()); + spD0.x = 0.0f; + spD0.y = mDoMtx_stack_c::now[1][3] + 3.25f; + spD0.z = mDoMtx_stack_c::now[2][3]; + spAC = spDC - spE8; + spA0 = spD0 - spDC; + spB8.set(spD0.x, spD0.y, spD0.z); + spB8.y += dVar8; + spB8.z += dVar9; + if (spB8.y >= spE8.y) { return false; } - local_fc = local_e4 - local_78; - dVar9 = local_fc.abs2(); + sp7C = spB8 - spE8; + dVar9 = sp7C.abs2(); if (cM3d_IsZero(dVar9)) { return false; } - dVar10 = local_e4.abs2(); - dVar11 = local_f0.abs2(); + dVar10 = spAC.abs2(); + dVar11 = spA0.abs2(); dVar8 = std::sqrtf(dVar10); dVar12 = std::sqrtf(dVar11); dVar13 = std::sqrtf(dVar9); @@ -7242,228 +8623,189 @@ int daPy_lk_c::setLegAngle(f32 param_1, int param_2, s16* param_3, s16* param_4) return false; } dVar8 = (((dVar9 + dVar10) - dVar11) / (2.0f * dVar9)); - local_d8.set(0.0f, local_54.y + (dVar8 * local_fc.y), local_54.z + (dVar8 * local_fc.z)); - dVar9 = std::sqrtf(dVar10 - (dVar8 * (dVar9 * dVar8))); - local_c0.set(0.0f, local_fc.y, -local_fc.z); - dVar8 = local_e4.abs(); + sp58.set(0.0f, spE8.y + (dVar8 * sp7C.y), spE8.z + (dVar8 * sp7C.z)); + f32 f4 = dVar10 - (dVar8 * (dVar9 * dVar8)); + if (f4 < 0.0f) { + f4 = 0.0f; + } + dVar9 = std::sqrtf(f4); + sp70.set(0.0f, sp7C.z, -sp7C.y); + dVar8 = sp70.abs(); if (cM3d_IsZero(dVar8)) { return false; } - local_6c.set(0.0f, local_d8.y + (dVar9 / dVar8) * local_c0.y, - local_d8.z + (dVar9 / dVar8) * local_c0.z); - local_d8 = local_108 - local_6c; - local_c0 = local_fc - local_108; + f32 f2 = dVar9 / dVar8; + spC4.set(0.0f, sp58.y + f2 * sp70.y, sp58.z + f2 * sp70.z); + sp94 = spC4 - spE8; + sp88 = spB8 - spC4; mDoMtx_concat(m37B4, mpCLModel->getAnmMtx(0), mDoMtx_stack_c::get()); - local_60.x = 0.0f; - local_60.y = mDoMtx_stack_c::now[1][3]; - local_60.z = mDoMtx_stack_c::now[2][3]; - sVar7 = cM_atan2s(-mDoMtx_stack_c::now[1][3], -mDoMtx_stack_c::now[2][3]); - sVar1 = cM_atan2s(local_d8.y, local_d8.z); - iVar6 = cM_atan2s(local_c0.y, local_c0.z); - if ((s16)(sVar1 - sVar7) > 0x6000) { - sVar1 = sVar7 + 0x6000; - } else if ((s16)(sVar1 - sVar7) < -0x4000) { - sVar1 = sVar7 + -0x4000; + sp64.x = 0.0f; + sp64.y = mDoMtx_stack_c::now[1][3]; + sp64.z = mDoMtx_stack_c::now[2][3]; + s16 r29 = cM_atan2s(-mDoMtx_stack_c::now[1][3], -mDoMtx_stack_c::now[2][3]); + s16 r27 = cM_atan2s(sp94.y, sp94.z); + s16 r26 = cM_atan2s(sp88.y, sp88.z); + s16 r3 = r27 - r29; + if (r3 > 0x6000) { + r27 = r29 + 0x6000; + } else if (r3 < -0x4000) { + r27 = r29 + -0x4000; } - sVar2 = (s16)iVar6 - sVar1; - sVar7 = sVar1; - if (sVar2 > 0) { - sVar7 = (s16)iVar6; - } else if (sVar2 < -0x7000) { - sVar7 = sVar1 + -0x7000; + s16 r0 = r26 - r27; + if (r0 > 0) { + r26 = r27; + } else if (r0 < -0x7000) { + r26 = r27 + -0x7000; } - *param_3 = cM_atan2s(local_f0.y, local_f0.z) - sVar1; - *param_4 = cM_atan2s(local_e4.y, local_e4.z) - sVar7; + *param_3 = cM_atan2s(spAC.y, spAC.z) - r27; + *param_4 = cM_atan2s(spA0.y, spA0.z) - r26; return true; } /* 8011A508-8011ABB0 .text footBgCheck__9daPy_lk_cFv */ void daPy_lk_c::footBgCheck() { - /* Nonmatching - cXyz, for loops */ - f32 fVar1; - uint uVar2; - uint uVar3; - J3DModel* pJVar4; - int iVar5; - s16 sVar6; - int iVar7; - int iVar8; - daPy_footData_c* pdVar9; - f32* pfVar10; - int iVar11; - int iVar12; - f32 dVar13; - f32 dVar14; - f32 dVar15; - f32 dVar16; - f32 dVar17; - f32 dVar18; - f32 dVar19; - f32 dVar20; - f32 dVar21; - s16 local_118[2]; - s16 local_114[2]; - int local_110[2]; - f32 local_108[4]; - cXyz local_f4; - cXyz cStack_dc; - cXyz local_ac[2]; - cXyz local_a0[2]; + u32 r28; + f32 sp18[2]; + int sp10[2]; + int i; + f32* r26; - pJVar4 = mpCLModel; - uVar2 = checkModeFlg(ModeFlg_00000001); - mDoMtx_concat(m37B4, pJVar4->getAnmMtx(0x1E), mDoMtx_stack_c::get()); - dVar18 = cM_ssin(m34E0); - dVar17 = cM_scos(m34E0); - pdVar9 = mFootData; - pfVar10 = local_108; - iVar11 = 0; - iVar8 = 0; - dVar19 = 0.0f; - dVar20 = 100.0f; - dVar21 = 30.1f; - dVar15 = C_BG_MIN_HEIGHT; - do { - cStack_dc = ((local_ac[iVar11] + local_a0[iVar11]) * 0.5f); - local_f4 = (cStack_dc - pdVar9->field_0x018); - dVar14 = local_f4.abs2XZ(); - if ((dVar14 < dVar20) && (uVar2 != 0)) { - if (pdVar9->field_0x001 != 0) { - pdVar9->field_0x001--; + MtxP r30 = mpCLModel->getBaseTRMtx(); + u32 r29 = checkModeFlg(ModeFlg_00000001); + mDoMtx_concat(m37B4, mpCLModel->getAnmMtx(0x1E), mDoMtx_stack_c::get()); + MtxP r31 = mDoMtx_stack_c::get(); + + daPy_footData_c* r25_r26; + f32 f28 = cM_ssin(m34E0); + f32 f27 = cM_scos(m34E0); + r25_r26 = mFootData; + r26 = sp18; + for (i = 0; i < 2; i++, r25_r26++, r26++) { + cXyz sp74; + cXyz sp68; + cXyz sp5C; + cXyz sp50; + sp74 = (r25_r26->field_0x018 + r25_r26->field_0x00C) * 0.5f; + sp50 = sp74 - r25_r26->field_0x024; + if (sp50.abs2XZ() < 100.0f && r29 != 0) { + if (r25_r26->field_0x001 != 0) { + r25_r26->field_0x001--; } else { - cStack_dc = pdVar9->field_0x024; + sp74 = r25_r26->field_0x024; } } else { - pdVar9->field_0x001 = 5; + r25_r26->field_0x001 = 5; } - pdVar9->field_0x024 = cStack_dc; - dVar16 = - (mDoMtx_stack_c::now[1][3] + (dVar17 * (local_ac[0].y - mDoMtx_stack_c::now[1][3])) + - (dVar18 * (local_ac[0].z - mDoMtx_stack_c::now[2][3]))); - mDoMtx_multVec(pJVar4->getBaseTRMtx(), &local_ac[0], &local_a0[2]); - local_a0[0].set(cStack_dc.x, dVar21 + current.pos.y, cStack_dc.z); - pdVar9->field_0x034.SetPos(&local_a0[0]); - dVar14 = dComIfG_Bgsp()->GroundCross(&pdVar9->field_0x034); - if (checkNoResetFlg0(daPyFlg0_UNK80000000) && current.pos.y > dVar14) { - dVar14 = current.pos.y; - local_110[iVar8] = 1; + r25_r26->field_0x024 = sp74; + f32 f26 = r31[1][3] + (f27 * (sp74.y - r31[1][3])) + (f28 * (sp74.z - r31[2][3])); + mDoMtx_multVec(r30, &sp74, &sp68); + sp5C.set(sp68.x, current.pos.y + 30.1f, sp68.z); + r25_r26->field_0x034.SetPos(&sp5C); + f32 f1 = dComIfG_Bgsp()->GroundCross(&r25_r26->field_0x034); + if (checkNoResetFlg0(daPyFlg0_UNK80000000) && current.pos.y > f1) { + f1 = current.pos.y; + sp10[i] = 1; } else { - local_110[iVar8] = 0; + sp10[i] = 0; } - if ((dVar15 != dVar14) && (local_a0[0].y - dVar14 < 60.2f)) { - *pfVar10 = dVar14; - pdVar9->field_0x000 = 1; + if (f1 != C_BG_MIN_HEIGHT && sp5C.y - f1 < 60.2f) { + *r26 = f1; + r25_r26->field_0x000 = 1; } else { - *pfVar10 = current.pos.y; - pdVar9->field_0x000 = 0; + *r26 = current.pos.y; + r25_r26->field_0x000 = 0; } - if ((checkNoResetFlg0(daPy_FLG0(daPyFlg0_UNK20000000 | daPyFlg0_UNK80000000))) && - (*pfVar10 <= current.pos.y)) - { - *pfVar10 = current.pos.y; + if (checkNoResetFlg0(daPy_FLG0(daPyFlg0_UNK20000000 | daPyFlg0_UNK80000000)) && *r26 <= current.pos.y) { + *r26 = current.pos.y; } - *pfVar10 = *pfVar10 - (local_a0[0].y - dVar16); - iVar11 = iVar11 + 1; - iVar8 = iVar8 + 4; - pdVar9 = pdVar9 + 1; - pfVar10 = pfVar10 + 1; - } while (iVar11 < 2); - if ((!mAcch.ChkGroundHit()) || - (checkModeFlg(ModeFlg_MIDAIR | ModeFlg_HANG | ModeFlg_ROPE | ModeFlg_IN_SHIP | - ModeFlg_00008000 | ModeFlg_CLIMB | ModeFlg_SWIM | ModeFlg_LADDER | - ModeFlg_CAUGHT))) + *r26 -= (sp74.y - f26); + } + + int r23; + if (!mAcch.ChkGroundHit() || checkModeFlg( + // Note: These flags combine into 0x1045A822. + ModeFlg_MIDAIR | ModeFlg_HANG | ModeFlg_ROPE | ModeFlg_IN_SHIP | ModeFlg_00008000 | + ModeFlg_CLIMB | ModeFlg_SWIM | ModeFlg_LADDER | ModeFlg_CAUGHT + )) { - iVar8 = 2; - } else if (local_108[0] > local_108[1]) { - iVar8 = 1; + r23 = 2; + } else if (sp18[0] > sp18[1]) { + r23 = 1; } else { - iVar8 = 0; + r23 = 0; } - if (((iVar8 == 2) || (mCurProc == daPyProc_DEMO_TOOL_e)) || (std::abs(m35C4) > 1.0f)) { - fVar1 = 0.0f; + f32 f1; + if (r23 == 2 || mCurProc == daPyProc_DEMO_TOOL_e || std::abs(m35C4) > 1.0f) { + f1 = 0.0f; } else { - if (local_108[0] > local_108[1]) { - local_108[0] = local_108[1]; + if (sp18[0] > sp18[1]) { + f1 = sp18[1]; + } else { + f1 = sp18[0]; } - fVar1 = local_108[0] - current.pos.y; + f1 -= current.pos.y; } - cLib_addCalc(&m35B8, fVar1, 0.5f, 7.5f, 2.5f); - pJVar4->getBaseTRMtx()[1][3] += m35B8; + cLib_addCalc(&m35B8, f1, 0.5f, 7.5f, 2.5f); + r30[1][3] += m35B8; m37B4[1][3] = m37B4[1][3] - m35B8; - fVar1 = 0.0f; - if (iVar8 == 2) { - iVar8 = 0; - iVar11 = 0; - iVar12 = 2; - do { - local_118[iVar11 + 4] = 0; - local_114[iVar11] = 0; - mFootData[iVar8].field_0x030 = fVar1; - iVar8 = iVar8 + 0x118; - iVar11 = iVar11 + 2; - iVar12 = iVar12 + -1; - } while (iVar12 != 0); - } else { - uVar3 = iVar8 + 1U & 1; - mFootData[iVar8].field_0x030 = 0.0f; - if (!setLegAngle(local_108[iVar8] - pJVar4->getBaseTRMtx()[1][3], iVar8, &local_118[iVar8], - &local_114[iVar8])) - { - local_118[iVar8] = 0; - local_114[iVar8] = 0; + s16 sp0C[2]; + s16 sp08[2]; + if (r23 == 2) { + for (int i = 0; i < 2; i++) { + sp0C[i] = 0; + sp08[i] = 0; + mFootData[i].field_0x030 = 0.0f; } - fVar1 = local_108[uVar3] - pJVar4->getBaseTRMtx()[1][3]; - if ((fVar1 > 0.0f) || (uVar2 != 0)) { - pdVar9[0].field_0x030 = 0.3f * fVar1; - if (!setLegAngle(0.7f * fVar1, uVar3, &local_118[uVar3], &local_114[uVar3])) { - local_118[uVar3] = 0; - local_114[uVar3] = 0; + } else { + r28 = r23 + 1 & 1; + r25_r26 = &mFootData[r28]; + daPy_footData_c* temp_foot_data = &mFootData[r23]; + temp_foot_data->field_0x030 = 0.0f; + if (!setLegAngle(sp18[r23] - r30[1][3], r23, &sp0C[r23], &sp08[r23])) { + sp0C[r23] = 0; + sp08[r23] = 0; + } + f32 f1 = sp18[r28] - r30[1][3]; + if (f1 > 0.0f || r29 != 0) { + r25_r26->field_0x030 = 0.3f * f1; + if (!setLegAngle(0.7f * f1, r28, &sp0C[r28], &sp08[r28])) { + sp0C[r28] = 0; + sp08[r28] = 0; } } else { - pdVar9[0].field_0x030 = 0.0f; - local_118[uVar3] = 0; - local_114[uVar3] = 0; + r25_r26->field_0x030 = 0.0f; + sp0C[r28] = 0; + sp08[r28] = 0; } } - iVar12 = 0; - iVar8 = 0; - iVar11 = 0; - do { - iVar7 = pdVar9[iVar11].field_0x008; - iVar5 = local_118[iVar8 + 4]; - if (iVar7 * iVar5 < 0 && abs(iVar5 - iVar7) >= 0x8000) { - sVar6 = local_118[iVar8 + 4]; - if (sVar6 >= 0) { - local_118[iVar8 + 4] = sVar6 + -0x4000; + + for (i = 0; i < 2; i++) { + r25_r26 = &mFootData[i]; + if (r25_r26->field_0x008 * sp0C[i] < 0 && abs(sp0C[i] - r25_r26->field_0x008) >= 0x8000) { + if (sp0C[i] >= 0) { + sp0C[i] -= 0x4000; } else { - local_118[iVar8 + 4] = sVar6 + 0x4000; + sp0C[i] += 0x4000; } } - cLib_addCalcAngleS(&pdVar9[iVar11].field_0x008, local_118[iVar8 + 4], 2, 0x1800, 0x10); - cLib_addCalcAngleS(&pdVar9[iVar11].field_0x006, local_118[iVar8 + 0], 2, 0x1800, 0x10); - pdVar9[iVar11].field_0x00A = pdVar9[iVar11].field_0x006 - pdVar9[iVar11].field_0x008; - pdVar9[iVar11].field_0x002 = -(m34E0 + pdVar9[iVar11].field_0x006); - iVar12 = iVar12 + 1; - iVar8 = iVar8 + 2; - iVar11 = iVar11 + 0x118; - } while (iVar12 < 2); - pdVar9 = mFootData; - iVar11 = 0; - iVar8 = 0; - do { - if (((local_110[iVar8] == 0) && (pdVar9->field_0x000 != 0)) && (uVar2 != 0)) { - sVar6 = getGroundAngle(&pdVar9->field_0x034, shape_angle.y); - pdVar9->field_0x002 = pdVar9->field_0x002 + sVar6; - sVar6 = getGroundAngle(&pdVar9->field_0x034, shape_angle.y + -0x4000); + cLib_addCalcAngleS(&r25_r26->field_0x008, sp0C[i], 2, 0x1800, 0x10); + cLib_addCalcAngleS(&r25_r26->field_0x006, sp08[i], 2, 0x1800, 0x10); + r25_r26->field_0x00A = r25_r26->field_0x006 - r25_r26->field_0x008; + r25_r26->field_0x002 = -(m34E0 + r25_r26->field_0x006); + } + + r25_r26 = mFootData; + for (i = 0; i < 2; i++, r25_r26++) { + s16 r4; + if (sp10[i] == 0 && r25_r26->field_0x000 != 0 && r29 != 0) { + r4 = getGroundAngle(&r25_r26->field_0x034, shape_angle.y); + r25_r26->field_0x002 = r25_r26->field_0x002 + r4; + r4 = getGroundAngle(&r25_r26->field_0x034, shape_angle.y + -0x4000); } else { - sVar6 = 0; + r4 = 0; } - cLib_addCalcAngleS(&pdVar9->field_0x004, sVar6, 2, 0x1800, 0x10); - iVar11 = iVar11 + 1; - iVar8 = iVar8 + 4; - pdVar9 = pdVar9 + 1; - } while (iVar11 < 2); - return; + cLib_addCalcAngleS(&r25_r26->field_0x004, r4, 2, 0x1800, 0x10); + } } /* 8011ABB0-8011AC78 .text setWaterY__9daPy_lk_cFv */ @@ -7486,7 +8828,6 @@ void daPy_lk_c::setWaterY() { dPa_control_c::onStatus(1); } } - return; } /* 8011AC78-8011AD9C .text autoGroundHit__9daPy_lk_cFv */ @@ -7501,9 +8842,7 @@ void daPy_lk_c::autoGroundHit() { mTinkleHoverTimer--; } } - if (checkModeFlg(ModeFlg_MIDAIR | ModeFlg_HANG | ModeFlg_ROPE | ModeFlg_IN_SHIP | - ModeFlg_CLIMB | ModeFlg_SWIM | ModeFlg_LADDER | ModeFlg_CAUGHT)) - { + if (daPy_lk_c::checkPlayerFly()) { return; } f32 fVar1 = mAcch.GetGroundH(); @@ -7532,7 +8871,6 @@ void daPy_lk_c::autoGroundHit() { mAcch.SetGroundHit(); speed.y = 0.0f; onNoResetFlg0(daPyFlg0_UNK80000000); - return; } /* 8011AD9C-8011AE20 .text checkAttentionPosAngle__9daPy_lk_cFP10fopAc_ac_cPP4cXyz */ @@ -7692,7 +9030,7 @@ void daPy_lk_c::setNeckAngle() { mDoMtx_multVec(r25, &l_head_center_offset, &spC4); mDoMtx_multVec(r25, &l_eye_offset, &sp88); - spAC = (sp88 - spC4); + spAC = sp88 - spC4; s16 r23_3; s16 r24_2; @@ -7705,7 +9043,7 @@ void daPy_lk_c::setNeckAngle() { if (((checkModeFlg(ModeFlg_00000080 | ModeFlg_08000000)) && (sp18 != NULL)) && (!checkUpperAnime(LKANM_BCK_DAMDASH))) { - spB8 = (*sp18 - spC4); + spB8 = *sp18 - spC4; r27 = cM_atan2s(-spB8.y, spB8.absXZ()); r23_3 = cM_atan2s(spB8.x, spB8.z) - m34DE; if (spB8.absXZ() < 30.0f) { @@ -7752,7 +9090,7 @@ void daPy_lk_c::setNeckAngle() { r4 = -0x1800; r23 = 0; } else if (mCurProc == daPyProc_CLIMB_MOVE_SIDE_e) { - if (abs((int)m34D4) <= 0x4000) { + if (abs(m34D4) <= 0x4000) { r4 = -0x1800 * cM_scos(m34D4); } else { r4 = 0; @@ -7899,265 +9237,255 @@ void daPy_lk_c::checkOriginalHatAnimation() { { onResetFlg0(daPyRFlg0_UNK800000); } - return; } /* 8011BEA4-8011CBA4 .text setHatAngle__9daPy_lk_cFv */ void daPy_lk_c::setHatAngle() { - /* Nonmatching - cXyz */ - f32 fVar1; - s16 sVar2; - s16 sVar3; - bool bVar4; - bool bVar5; - BOOL bVar6; - s16 sVar8; - s16 sVar9; - s16 sVar10; - s16 sVar11; - MtxP pMVar12; - s16 uVar14; - f32 dVar17; - f32 dVar18; - f32 dVar19; - f32 dVar20; - f32 local_158; - cXyz cStack_13c; - cXyz local_130; - f32 local_124; - f32 local_11c; - cXyz VStack_10c; - f32 local_fc; - cXyz local_e8; - cXyz local_dc; - cXyz local_d0; - cXyz local_c4; - - if ((m_old_fdata->getOldFrameFlg() == false) || (checkNoResetFlg1(daPyFlg1_FREEZE_STATE))) { + if (m_old_fdata->getOldFrameFlg() == false || checkNoResetFlg1(daPyFlg1_FREEZE_STATE)) { return; } - pMVar12 = mpCLModel->getAnmMtx(0xF); - bVar6 = true; - bVar5 = true; - bVar4 = true; - if ((dComIfGp_evmng_startCheck(l_tact_wind_change_event_label)) || - (!dComIfGp_evmng_startCheck(l_tact_wind_change_event_label2))) - { - bVar4 = false; + + cXyz spAC; + cXyz spA0; + cXyz sp94; + cXyz sp88; + cXyz sp7C; + cXyz sp70; + cXyz sp64; + + s16 r25; + s16 r26; + + s16 r27; + s16 r26_2; + + s16 r26_3; + s16 r27_2; + + s16 r26_4; + s16 r27_3; + + MtxP head_jnt_mtx = mpCLModel->getAnmMtx(0xF); + BOOL r31 = dComIfGp_evmng_startCheck(l_tact_wind_change_event_label) || + dComIfGp_evmng_startCheck(l_tact_wind_change_event_label2) || + mCurProc == daPyProc_FAN_GLIDE_e || + mWindCyl.ChkTgHit(); + + mDoMtx_multVec(head_jnt_mtx, &l_head_center_offset, &sp70); + mDoMtx_multVec(head_jnt_mtx, &l_eye_offset, &sp64); + cXyz sp58 = sp64 - sp70; + s16 r3_3; + r3_3 = cM_atan2s(sp58.x, sp58.z); + if (sp70.y - head_jnt_mtx[1][3] < 0.0f) { + r3_3 += 0x8000; } - if ((!bVar4) && (mCurProc != daPyProc_FAN_GLIDE_e)) { - bVar5 = false; + f32 f31; + f31 = cM_ssin(r3_3); + f32 f30; + f30 = cM_scos(r3_3); + MtxP hat_a_jnt_mtx = mpCLModel->getAnmMtx(0x1A); + spA0.x = hat_a_jnt_mtx[0][3]; + spA0.y = hat_a_jnt_mtx[1][3]; + spA0.z = hat_a_jnt_mtx[2][3]; + f32 sp18; + dKyw_get_AllWind_vec(&spA0, &spAC, &sp18); + if (r31) { + sp18 = 1.0f; } - if ((!bVar5) && (!mWindCyl.ChkTgHit())) { - bVar6 = false; - } - mDoMtx_multVec(pMVar12, &l_head_center_offset, &VStack_10c); - mDoMtx_multVec(pMVar12, &l_eye_offset, &VStack_10c); - local_130 = (local_130 - VStack_10c); - uVar14 = cM_atan2s(local_130.x, local_130.z); - if (local_fc - pMVar12[1][3] < 0.0f) { - uVar14 += 0x8000; - } - dVar20 = cM_ssin(uVar14); - dVar19 = cM_scos(uVar14); - pMVar12 = mpCLModel->getAnmMtx(0x1A); - local_d0.x = pMVar12[0][3]; - local_d0.y = pMVar12[1][3]; - local_d0.z = pMVar12[2][3]; - dKyw_get_AllWind_vec(&local_d0, &local_c4, &local_158); - if (bVar6) { - local_158 = 1.0f; - } - dVar18 = ((local_158 * local_158) * 25.0f); - mDoMtx_multVecSR(mpCLModel->getAnmMtx(0xF), &l_neck_front, &VStack_10c); - mDoMtx_multVecSR(mpCLModel->getAnmMtx(0xF), &l_neck_top, &VStack_10c); - sVar8 = m3528; - sVar9 = m352A; - if (local_e8.x < 0.0f) { - dVar17 = local_130.absXZ(); - m3528 = cM_atan2s(local_e8.y, -dVar17); - m352A = cM_atan2s(local_e8.x, local_e8.z) + 0x8000; + f32 f29 = (sp18 * sp18) * 25.0f; + mDoMtx_multVecSR(mpCLModel->getAnmMtx(0xF), &l_neck_front, &sp88); + mDoMtx_multVecSR(mpCLModel->getAnmMtx(0xF), &l_neck_top, &sp7C); + + r25 = m3528; + r26 = m352A; + if (sp7C.y < 0.0f) { + m3528 = cM_atan2s(sp88.y, -sp88.absXZ()); + m352A = cM_atan2s(sp88.x, sp88.z) + 0x8000; } else { - dVar17 = local_130.absXZ(); - m3528 = cM_atan2s(local_e8.y, dVar17); - m352A = cM_atan2s(local_e8.x, local_e8.z); + m3528 = cM_atan2s(sp88.y, sp88.absXZ()); + m352A = cM_atan2s(sp88.x, sp88.z); } - if (std::abs(local_e8.y) > 0.7f) { - m352A = sVar9; + if (std::abs(sp88.y) > 0.7f) { + m352A = r26; } - sVar8 = (s16)(m3528 - sVar8) >> 1; - sVar9 = (s16)(m352A - sVar9) >> 1; - if (sVar8 > 0x200) { - sVar8 = 0x200; - } else if (sVar8 < -0x200) { - sVar8 = -0x200; + s16 r28_r29; + r28_r29 = (s16)(m3528 - r25) >> 1; + s16 r25_r28; + r25_r28 = (s16)(m352A - r26) >> 1; + if (r28_r29 > 0x200) { + r28_r29 = 0x200; + } else if (r28_r29 < -0x200) { + r28_r29 = -0x200; } - if (sVar9 > 0x800) { - sVar9 = 0x800; - } else if (sVar9 < -0x800) { - sVar9 = -0x800; + if (r25_r28 > 0x800) { + r25_r28 = 0x800; + } else if (r25_r28 < -0x800) { + r25_r28 = -0x800; } - local_dc.x = m3718.x - local_d0.x; - local_dc.y = (m3718.y - local_d0.y) - 7.5f; - local_dc.z = m3718.z - local_d0.z; + sp94.x = m3718.x - spA0.x; + sp94.y = (m3718.y - spA0.y) - 7.5f; + sp94.z = m3718.z - spA0.z; if (!(checkModeFlg(ModeFlg_WHIDE)) || (checkGrabWear())) { - cStack_13c = (local_dc * dVar18); - local_dc += cStack_13c; + sp94 += spAC * f29; } - if (std::abs(local_dc.x) < 0.01f) { - local_dc.x = 0.0f; + if (std::abs(sp94.x) < 0.01f) { + sp94.x = 0.0f; } - if (std::abs(local_dc.z) < 0.01f) { - local_dc.z = 0.0f; + if (std::abs(sp94.z) < 0.01f) { + sp94.z = 0.0f; } - sVar2 = m34F6; - sVar3 = m34F8; - dVar17 = ((local_dc.z * dVar19) + (local_dc.x * dVar20)); - sVar11 = cM_atan2s(-dVar17, -local_dc.y); + r26_2 = m34F6; + r27 = m34F8; + f32 f28; + f28 = (sp94.z * f30) + (sp94.x * f31); + s16 r4_3; + r4_3 = cM_atan2s(-f28, -sp94.y); if (m34F6 < 0) { - sVar11 = 0x7800; - } else if ((sVar11 < 0x800) && (-0x7800 < sVar11)) { - sVar11 = 0x800; - } else if ((0x7800 < sVar11) || (sVar11 <= -0x7800)) { - sVar11 = 0x7800; + r4_3 = 0x7800; + } else if ((r4_3 < 0x800) && (-0x7800 < r4_3)) { + r4_3 = 0x800; + } else if ((0x7800 < r4_3) || (r4_3 <= -0x7800)) { + r4_3 = 0x7800; } - cLib_addCalcAngleS2(&m34F6, sVar11, 5, 0x400); - m34F6 = m3502 + sVar8 + m34F6; - sVar11 = m3528; - sVar10 = m34F6 + -0x4000 + sVar11; - if (sVar10 < -0x3000) { - m34F6 = 0x1000 - sVar11; - } else if (0x3800 < sVar10) { - m34F6 = 0x7800 - sVar11; + cLib_addCalcAngleS2(&m34F6, r4_3, 5, 0x400); + m34F6 = m3502 + r28_r29 + m34F6; + s16 r4_4 = m3528; + s16 r0_2; + r0_2 = m34F6 + -0x4000 + r4_4; + if (r0_2 < -0x3000) { + m34F6 = 0x1000 - r4_4; + } else if (r0_2 > 0x3800) { + m34F6 = 0x7800 - r4_4; } - dVar17 = std::sqrtf((dVar17 * dVar17) + local_dc.y * local_dc.y); - sVar11 = cM_atan2s(-((local_dc.x * dVar19) - (local_dc.z * dVar20)), dVar17); - if (sVar11 > 0x3800) { - sVar11 = 0x3800; - } else if (sVar11 < -0x3800) { - sVar11 = -0x3800; + f32 f0_2 = std::sqrtf((f28 * f28) + sp94.y * sp94.y); + s16 r4_5 = cM_atan2s(-((sp94.x * f30) - (sp94.z * f31)), f0_2); + if (r4_5 > 0x3800) { + r4_5 = 0x3800; + } else if (r4_5 < -0x3800) { + r4_5 = -0x3800; } - cLib_addCalcAngleS2(&m34F8, sVar11, 5, 0x400); - m34F8 = m34F8 + (m3504 - sVar9); + cLib_addCalcAngleS2(&m34F8, r4_5, 5, 0x400); + m34F8 = m34F8 + (m3504 - r25_r28); if (m34F8 > 0x3800) { m34F8 = 0x3800; } else if (m34F8 < -0x3800) { m34F8 = -0x3800; } - m3502 = (s16)((m34F6 - sVar2) * 0.2f); - m3504 = (s16)((m34F8 - sVar3) * 0.2f); - m34F8 = m34F8 - (m34F6 - sVar2); - m34FC = m34FC - (m34FA - sVar3); - sVar2 = m34FA; - sVar3 = m34FC; + m3502 = (s16)(m34F6 - r26_2) * 0.2f; + m3504 = (s16)(m34F8 - r27) * 0.2f; + s16 r3 = m34F6 - r26_2; + s16 r4 = m34F8 - r27; + m34FA -= r3; + m34FC -= r4; + r27_2 = m34FA; + r26_3 = m34FC; cLib_addCalcAngleS2(&m34FA, 0, 5, 0x400); cLib_addCalcAngleS2(&m34FC, 0, 5, 0x400); - m34FA = m3506 + sVar8 + m34FA; - m34FC = m34FC + (m3508 - sVar9); + m34FA = m3506 + r28_r29 + m34FA; + m34FC = m34FC + (m3508 - r25_r28); if (m34FA > 0x1000) { m34FA = 0x1000; } else if (m34FA < -0x800) { m34FA = -0x800; } - sVar11 = m34FC; - sVar10 = m34F8 + sVar11; - if (sVar10 > 0x3800) { - m34FC = 0x3800 - sVar11; - } else if (sVar10 < -0x3800) { - m34FC = -0x3800 - sVar11; + s16 r0 = m34FC + m34F8; + if (r0 > 0x3800) { + m34FC = 0x3800 - m34F8; + } else if (r0 < -0x3800) { + m34FC = -0x3800 - m34F8; } - m3506 = (s16)((m34FA - sVar2) * 0.2f); - m3508 = (s16)((m34FC - sVar3) * 0.2f); - m34FC = m34FC - (m34FA - sVar2); - m3500 = m3500 - (m34FE - sVar3); - sVar2 = m34FE; - sVar3 = m3500; + m3506 = (m34FA - r27_2) * 0.2f; + m3508 = (m34FC - r26_3) * 0.2f; + r3 = m34FA - r27_2; + r4 = m34FC - r26_3; + m34FE -= r3; + m3500 -= r4; + r27_3 = m34FE; + r26_4 = m3500; cLib_addCalcAngleS2(&m34FE, 0, 5, 0x400); cLib_addCalcAngleS2(&m3500, 0, 5, 0x400); - m34FE = m350A + sVar8 + m34FE; - m3500 = m3500 + (m350C - sVar9); + m34FE = m350A + r28_r29 + m34FE; + m3500 = m3500 + (m350C - r25_r28); if (m34FE > 0x1000) { m34FE = 0x1000; } else if (m34FE < -0x800) { m34FE = -0x800; } - sVar8 = m34F8; - sVar9 = m3500; - sVar11 = m34FC + sVar9 + sVar8; - if (sVar11 > 0x3800) { - m3500 = (0x3800 - sVar8) - sVar9; - } else if (sVar11 < -0x3800) { - m3500 = (-0x3800 - sVar8) - sVar9; + s16 r4_6 = m3500 + m34FC + m34F8; + if (r4_6 > 0x3800) { + m3500 = (0x3800 - m34F8) - m34FC; + } else if (r4_6 < -0x3800) { + m3500 = (-0x3800 - m34F8) - m34FC; } - m350A = (s16)((m34FE - sVar2) * 0.2f); - m350C = (s16)((m3500 - sVar3) * 0.2f); - dVar17 = m3718.abs(local_d0); - dVar18 = ((dVar17 * 0.65f) / (dVar17 + 30.0f)); - if (dVar18 > 1.0f) { - dVar18 = 1.0f; + m350A = (s16)((m34FE - r27_3) * 0.2f); + m350C = (s16)((m3500 - r26_4) * 0.2f); + f32 f28_2 = (f29 + (m3718.abs(spA0) * 0.65f)) / 30.0f; + if (f28_2 > 1.0f) { + f28_2 = 1.0f; } - dVar17 = dVar18; - if ((bVar6) && (!checkNoResetFlg1(daPyFlg1_CASUAL_CLOTHES))) { - dVar18 = 3.5f; - dVar17 = 1.0f; + f32 f29_2; + f29_2 = f28_2; + if (r31 && (!checkNoResetFlg1(daPyFlg1_CASUAL_CLOTHES))) { + f28_2 = 3.5f; + f29_2 = 1.0f; mDoAud_seStart(JA_SE_LK_HAT_SWING, &eyePos, 0, mReverb); } - sVar8 = (s16)(1500.0f + (4060.0f * dVar18)); - m3514 = m3514 + sVar8; - fVar1 = cM_scos(m3514); - m350E = (s16)((2280.0f * dVar17) * fVar1); - m3510 = (s16)((3908.0f * dVar17) * cM_scos((m3514)-3.0f * (sVar8))); - m3512 = (s16)((7568.0f * dVar17) * cM_scos((m3514)-6.0f * (sVar8))); - m3718 = local_d0; + s16 r25_2 = (s16)(1500.0f + (4060.0f * f28_2)); + m3514 = m3514 + r25_2; + f32 f0 = cM_scos(m3514); + m350E = (s16)((2280.0f * f29_2) * f0); + m3510 = (s16)((3908.0f * f29_2) * cM_scos(m3514 - 3.0f * r25_2)); + m3512 = (s16)((7568.0f * f29_2) * cM_scos(m3514 - 6.0f * r25_2)); + m3718 = spA0; if (checkModeFlg(ModeFlg_SWIM)) { m351A = 0; m3516 = 0; m3518 = 0; } else { - fVar1 = 0.5f + 0.25f * (1.0f + fVar1); - local_124 = (local_c4.x * dVar19) - (local_c4.y * dVar20); - local_11c = (local_c4.z * dVar20) + (local_c4.y * dVar19); - m3516 = (s16)((fVar1 * -8192.0f) * local_124 * local_158); + f32 f5 = 0.5f + 0.25f * (1.0f + f0); + cXyz sp4C; + sp4C.x = (spAC.x * f30) - (spAC.z * f31); + sp4C.z = (spAC.x * f31) + (spAC.z * f30); + m3516 = (s16)(-8192.0f * sp4C.x * sp18 * f5); m3518 = m3516; - m351A = (s16)((fVar1 * -8192.0f) * local_11c * local_158); + m351A = (s16)(-8192.0f * sp4C.z * sp18 * f5); if (m3516 > 0x1000) { m3516 = 0x1000; } else if (m3518 < -0x1000) { m3518 = -0x1000; } } - return; } /* 8011CBA4-8011CCF4 .text setMoveSlantAngle__9daPy_lk_cFv */ void daPy_lk_c::setMoveSlantAngle() { - f32 fVar1; - s16 sVar2; - - fVar1 = std::abs(speedF / mMaxNormalSpeed); + f32 fVar1 = std::abs(speedF / mMaxNormalSpeed); if (checkModeFlg(ModeFlg_02000000)) { mBodyAngle.z = 0; m351C = 0; - } else { - if ((mCurProc == 6) && (fVar1 > daPy_HIO_move_c0::m.field_0x4C)) { - cLib_addCalcAngleS(&m351C, - daPy_HIO_move_c0::m.field_0x50 * (s16)(m34DE - shape_angle.y) * - ((fVar1 - daPy_HIO_move_c0::m.field_0x4C) / - (1.0f - daPy_HIO_move_c0::m.field_0x4C)), - daPy_HIO_move_c0::m.field_0xC, daPy_HIO_move_c0::m.field_0x8, - daPy_HIO_move_c0::m.field_0xA); - } else { - sVar2 = (m351C * daPy_HIO_move_c0::m.field_0x54); - if (sVar2 == 0) { - m351C = 0; - } else { - m351C = m351C - sVar2; - } - } - shape_angle.z = m351C >> 1; - mBodyAngle.z = shape_angle.z; return; } + + if (mCurProc == daPyProc_MOVE_e && fVar1 > daPy_HIO_move_c0::m.field_0x4C) { + cLib_addCalcAngleS( + &m351C, + daPy_HIO_move_c0::m.field_0x50 * (s16)(m34DE - shape_angle.y) * + ((fVar1 - daPy_HIO_move_c0::m.field_0x4C) / (1.0f - daPy_HIO_move_c0::m.field_0x4C)), + daPy_HIO_move_c0::m.field_0xC, + daPy_HIO_move_c0::m.field_0x8, + daPy_HIO_move_c0::m.field_0xA + ); + } else { + s16 sVar2 = m351C * daPy_HIO_move_c0::m.field_0x54; + if (sVar2 == 0) { + m351C = 0; + } else { + m351C = m351C - sVar2; + } + } + + shape_angle.z = m351C >> 1; + mBodyAngle.z = shape_angle.z; } /* 8011CCF4-8011CDB4 .text setWaistAngle__9daPy_lk_cFv */ @@ -8178,11 +9506,10 @@ void daPy_lk_c::setWaistAngle() { if (m3580 == 8) { sVar2 = 0; } else { - sVar2 = (0.7f * m34E2 * fVar1); + sVar2 = 0.7f * m34E2 * fVar1; } } cLib_addCalcAngleS(&m34E0, sVar2, 2, 0x800, 0x200); - return; } /* 8011CDB4-8011D070 .text setWorldMatrix__9daPy_lk_cFv */ @@ -8195,23 +9522,22 @@ void daPy_lk_c::setWorldMatrix() { mDoMtx_stack_c::transS(current.pos.x, current.pos.y + m35C4 + m3608, current.pos.z); ship = dComIfGp_getShipActor(); - if ((dComIfGp_checkPlayerStatus0(0, daPyStts0_SHIP_RIDE_e)) && (ship != NULL)) { + if (dComIfGp_checkPlayerStatus0(0, daPyStts0_SHIP_RIDE_e) && ship != NULL) { mDoMtx_stack_c::ZXYrotM(m353C, ship->shape_angle.y, m353E); mDoMtx_stack_c::YrotM(shape_angle.y - ship->shape_angle.y); mDoMtx_copy(mDoMtx_stack_c::get(), afStack_38); bVar1 = true; + } else if (checkModeFlg(ModeFlg_CLIMB)) { + mDoMtx_stack_c::ZXYrotM(shape_angle.x, shape_angle.y, shape_angle.z); + mDoMtx_stack_c::transM(0.0f, 0.0f, 20.5f); + mDoMtx_stack_c::YrotM(m34EC); + mDoMtx_stack_c::transM(0.0f, 0.0f, -20.5f); + bVar1 = false; } else { - if (checkModeFlg(ModeFlg_CLIMB)) { - mDoMtx_stack_c::ZXYrotM(shape_angle.x, shape_angle.y, shape_angle.z); - mDoMtx_stack_c::transM(0.0f, 0.0f, 20.5f); - mDoMtx_stack_c::YrotM(m34EC); - mDoMtx_stack_c::transM(0.0f, 0.0f, -20.5f); - bVar1 = false; - } else { - mDoMtx_stack_c::ZXYrotM(shape_angle.x, shape_angle.y + m34EC, shape_angle.z); - bVar1 = false; - } + mDoMtx_stack_c::ZXYrotM(shape_angle.x, shape_angle.y + m34EC, shape_angle.z); + bVar1 = false; } + mpCLModel->setBaseScale(scale); mpCLModel->setBaseTRMtx(mDoMtx_stack_c::get()); mDoMtx_stack_c::inverse(); @@ -8229,7 +9555,6 @@ void daPy_lk_c::setWorldMatrix() { shape_angle.z = cM_atan2s(-dVar6, local_44.x); } } - return; } /* 8011D070-8011D0E4 .text setAtParam__9daPy_lk_cFUli11dCcG_At_SplUcUcUcf */ @@ -8263,14 +9588,93 @@ void daPy_lk_c::resetCurse() { /* 8011D110-8011D4D0 .text checkLightHit__9daPy_lk_cFv */ void daPy_lk_c::checkLightHit() { - /* Nonmatching */ - static JGeometry::TVec3 normal_scale; - static JGeometry::TVec3 boss_scale; + static JGeometry::TVec3 normal_scale(1.0f, 1.0f, 1.0f); + static JGeometry::TVec3 boss_scale(2.5f, 2.5f, 2.5f); + BOOL lightHit = FALSE; + cXyz lightVec; + + if (dComIfGp_getDetect().chk_light(¤t.pos)) { + lightHit = TRUE; + resetCurse(); + } else { + lightHit = FALSE; + } + if (dComIfGs_getSelectEquip(1) == dItem_MIRROR_SHIELD_e) { + mDoMtx_multVecSR(mpEquippedShieldModel->getBaseTRMtx(), &l_ms_light_local_vec, &lightVec); + if (lightHit) { + onResetFlg0(daPyRFlg0_UNK200000); + } else if ((mLightCyl.ChkTgHit()) && (mLightCyl.GetTgRVecP()->inprod(lightVec) < 0.0f)) { + onResetFlg0(daPyRFlg0_UNK200000); + } + if (mFanLightCps.ChkAtHit()) { + if (m3438.getEmitter() == NULL) { + dComIfGp_particle_setP1(dPa_name::ID_SCENE_8232, ¤t.pos, NULL, NULL, 0xFF, + &m3438); + } + cM3d_lineVsPosSuisenCross(mFanLightCps.GetStart(), mFanLightCps.GetEnd(), + *mFanLightCps.GetAtHitPosP(), &m3438.getPos()); + s16 angleY = cM_atan2s(lightVec.x, lightVec.z); + m3438.setAngle(cM_atan2s(-lightVec.y, lightVec.absXZ()), angleY, 0); + if (m3438.getEmitter() != NULL) { + if ((mFanLightCps.GetAtHitAc() != 0) && + (fopAcM_GetName(mFanLightCps.GetAtHitAc()) == PROC_BPW)) + { + m3438.getEmitter()->setGlobalScale(boss_scale); + } else { + m3438.getEmitter()->setGlobalScale(normal_scale); + } + } + } else { + m3438.end(); + } + } else { + m3438.end(); + } + if (checkResetFlg0(daPyRFlg0_UNK200000)) { + if (!mFanLightCps.ChkAtSet()) { + seStartOnlyReverb(JA_SE_OBJ_MIRROR_REFLECT); + } else { + seStartOnlyReverb(JA_SE_OBJ_MIRROR_LIGHT); + } + resetCurse(); + } + if ((!dComIfGp_checkPlayerStatus0(0, daPyStts0_UNK2000_e)) && + (checkResetFlg0(daPyRFlg0_UNK200000))) + { + if (m342C.getEmitter() == NULL) { + m342C.makeEmitter(dPa_name::ID_SCENE_8226, mpEquippedShieldModel->getBaseTRMtx(), + ¤t.pos, NULL); + } + } else if (m342C.getEmitter() != NULL) { + m342C.getEmitter()->setGlobalAlpha(0); + m342C.end(); + } } /* 8011D4D0-8011D6C4 .text setSwordAtCollision__9daPy_lk_cFv */ void daPy_lk_c::setSwordAtCollision() { - /* Nonmatching */ + cXyz local_34; + cXyz local_58; + cXyz local_7c; + + if (mEquipItem == daPyItem_SWORD_e) { + local_34 = ((mSwordTopPos - m36C4) * m35FC) + m36C4; + local_58 = ((m36D0 - m36DC) * m35FC) + m36DC; + } else { + local_34 = mSwordTopPos; + local_58 = m36D0; + } + mAtCps[0].SetStartEnd(m36C4, local_34); + mAtCps[1].SetStartEnd(local_58, local_34); + mAtCps[2].SetStartEnd(m36C4, local_58); + if (checkResetFlg0(daPyRFlg0_UNK1)) { + local_7c = cXyz::Zero; + } else { + local_7c = mSwordTopPos - m36D0; + } + mAtCps[0].SetAtVec(local_7c); + mAtCps[1].SetAtVec(local_7c); + mAtCps[2].SetAtVec(local_7c); } /* 8011D6C4-8011D788 .text getBlurTopRate__9daPy_lk_cFv */ @@ -8304,51 +9708,930 @@ f32 daPy_lk_c::getBlurTopRate() { /* 8011D788-8011EC0C .text setCollision__9daPy_lk_cFv */ void daPy_lk_c::setCollision() { - /* Nonmatching */ - static const GXColor n_roll_prm0 = {0xC8, 0xFF, 0x40, 0xFF}; - static const GXColor n_roll_prm1 = {0xFF, 0xFF, 0xDC, 0xFF}; - static const GXColor n_roll_env = {0xC8, 0xFF, 0x78, 0xFF}; - static const GXColor nm_roll_prm0 = {0xC8, 0xFF, 0x40, 0xFF}; - static const GXColor nm_roll_prm1 = {0xFF, 0xFF, 0xDC, 0xFF}; - static const GXColor nm_roll_env = {0xC8, 0xFF, 0x78, 0xFF}; - static const GXColor fm_roll_prm0 = {0xC8, 0xFF, 0x40, 0xFF}; - static const GXColor fm_roll_prm1 = {0xFF, 0xFF, 0xDC, 0xFF}; - static const GXColor fm_roll_env = {0xC8, 0xFF, 0x78, 0xFF}; - static const GXColor n_turn_prm0 = {0x40, 0x60, 0x40, 0xFF}; - static const GXColor n_turn_prm1 = {0xDC, 0xE6, 0xDC, 0xFF}; - static const GXColor n_turn_env = {0xA0, 0xE6, 0xA0, 0xFF}; - static const GXColor nm_turn_prm0 = {0x40, 0x40, 0x60, 0xFF}; - static const GXColor nm_turn_prm1 = {0xDC, 0xDC, 0xE6, 0xFF}; - static const GXColor nm_turn_env = {0xA0, 0xA0, 0xE6, 0xFF}; - static const GXColor fm_turn_prm0 = {0x40, 0x40, 0xFF, 0xFF}; - static const GXColor fm_turn_prm1 = {0xDC, 0xDC, 0xFF, 0xFF}; - static const GXColor fm_turn_env = {0x78, 0x78, 0xFF, 0xFF}; + MtxP link_root_mtx = mpCLModel->getAnmMtx(0x00); + MtxP ltoe_jnt_mtx = mpCLModel->getAnmMtx(0x23); + MtxP rtoe_jnt_mtx = mpCLModel->getAnmMtx(0x28); + cXyz spD0; + spD0.x = 0.5f * (link_root_mtx[0][3] + mpCLModel->getAnmMtx(0xE)[0][3]); + spD0.z = 0.5f * (link_root_mtx[2][3] + mpCLModel->getAnmMtx(0xE)[2][3]); + if (mCurProc == daPyProc_JUMP_CUT_e) { + spD0.x -= 15.0f * cM_ssin(shape_angle.y); + spD0.z -= 15.0f * cM_scos(shape_angle.y); + } + if (checkGrabWear()) { + mCyl.SetR(50.0f); + } else { + mCyl.SetR(30.0f); + } + if (checkModeFlg(ModeFlg_IN_SHIP)) { + mCyl.OnCoSPrmBit(cCcD_CoSPrm_NoCrr_e); + } else { + mCyl.OffCoSPrmBit(cCcD_CoSPrm_NoCrr_e); + } + if (checkModeFlg(ModeFlg_CRAWL)) { + f32 fVar3 = cM_ssin(shape_angle.x); + if (fVar3 >= 0.0f) { + spD0.y = current.pos.y - 50.0f * fVar3; + mCyl.SetH(50.0f + (35.0f * fVar3)); + } else { + spD0.y = current.pos.y + 25.0f * fVar3; + mCyl.SetH(50.0f - (65.0f * fVar3)); + } + } else if (mCurProc == daPyProc_FRONT_ROLL_e) { + spD0.y = current.pos.y; + mCyl.SetH(81.25f); + } else if (mCurProc == daPyProc_BACK_JUMP_e) { + spD0.y = 30.0f + current.pos.y; + mCyl.SetH(81.25f); + } else if ((mCurProc == daPyProc_BT_JUMP_CUT_e) || (mCurProc == daPyProc_BT_JUMP_e && (speed.y <= 0.0f))) { + spD0.y = link_root_mtx[1][3]; + mCyl.SetH(125.0f - (spD0.y - current.pos.y)); + mCyl.SetR(22.5f); + } else { + if (mCurProc == daPyProc_ROPE_SWING_e) { + spD0.y = (ltoe_jnt_mtx[1][3] > link_root_mtx[1][3]) ? link_root_mtx[1][3] : ltoe_jnt_mtx[1][3]; + } else { + spD0.y = (ltoe_jnt_mtx[1][3] > rtoe_jnt_mtx[1][3]) ? rtoe_jnt_mtx[1][3] : ltoe_jnt_mtx[1][3]; + } + mCyl.SetH(40.1f + (mpCLModel->getAnmMtx(0xE)[1][3] - spD0.y)); + } + mCyl.SetC(spD0); + if (checkModeFlg(ModeFlg_DAMAGE) || + (((checkGuardSlip()) || (mCurProc == daPyProc_VOMIT_WAIT_e)) || (mDamageWaitTimer != 0))) + { + mCyl.OffTgSetBit(); + mCyl.ClrTgHit(); + } else if (mDamageWaitTimer == 0) { + mCyl.OnTgSetBit(); + } + dComIfG_Ccsp()->Set(&mCyl); + // Using the dComIfG_Ccsp inline here (and everywhere else + // in this function) breaks the match. + // dComIfG_Ccsp()->SetMass(&mCyl, 1); + g_dComIfG_gameInfo.play.mCcS.SetMass(&mCyl, 1); + mWindCyl.SetC(spD0); + mWindCyl.SetH(mCyl.GetH()); + mWindCyl.SetR(mCyl.GetR()); + dComIfG_Ccsp()->Set(&mWindCyl); + mLightCyl.SetC(spD0); + mLightCyl.SetH(mCyl.GetH()); + mLightCyl.SetR(mCyl.GetR()); + dComIfG_Ccsp()->Set(&mLightCyl); + + cXyz spC4; + cXyz spB8; + if (checkResetFlg0(daPyRFlg0_UNK2)) { + if (checkResetFlg0(daPyRFlg0_UNK1)) { + setCutWaterSplash(); + if ((mCurProc == daPyProc_CUT_TURN_e) || (mCurProc == daPyProc_CUT_ROLL_e)) { + mAtCyl.StartCAt(current.pos); + } else { + setSwordAtCollision(); + } + onNoResetFlg0(daPyFlg0_CUT_AT_FLG); + if (mpCutfBrk != NULL) { + if (checkModeFlg(ModeFlg_PARRY)) { + mpCutfBrk->setFrame(2.0f); + } else if (checkNoResetFlg1(daPyFlg1_UNK8000)) { + mpCutfBrk->setFrame(1.0f); + } else { + mpCutfBrk->setFrame(0.0f); + } + } + if (((mCurProc != daPyProc_CUT_F_e) && (mCurProc != daPyProc_BT_VERTICAL_JUMP_CUT_e)) && + (mCurProc != daPyProc_FAN_SWING_e)) + { + int iVar12; + if ((mCurProc == daPyProc_HAMMER_FRONT_SWING_e) || (mCurProc == daPyProc_WEAPON_FRONT_SWING_e)) { + iVar12 = 2.5f * mFrameCtrlUnder[UNDER_MOVE0_e].getFrame(); + } else { + iVar12 = 10.0f * mFrameCtrlUnder[UNDER_MOVE0_e].getFrame(); + } + mSwBlur.initSwBlur(mpCLModel->getBaseTRMtx(), iVar12, getBlurTopRate(), getSwordBlurColor()); + if ((mCurProc == daPyProc_CUT_TURN_e) || (mCurProc == daPyProc_CUT_ROLL_e)) { + static const GXColor n_roll_prm0 = {0xC8, 0xFF, 0x40, 0xFF}; + static const GXColor n_roll_prm1 = {0xFF, 0xFF, 0xDC, 0xFF}; + static const GXColor n_roll_env = {0xC8, 0xFF, 0x78, 0xFF}; + static const GXColor nm_roll_prm0 = {0xC8, 0xFF, 0x40, 0xFF}; + static const GXColor nm_roll_prm1 = {0xFF, 0xFF, 0xDC, 0xFF}; + static const GXColor nm_roll_env = {0xC8, 0xFF, 0x78, 0xFF}; + static const GXColor fm_roll_prm0 = {0xC8, 0xFF, 0x40, 0xFF}; + static const GXColor fm_roll_prm1 = {0xFF, 0xFF, 0xDC, 0xFF}; + static const GXColor fm_roll_env = {0xC8, 0xFF, 0x78, 0xFF}; + static const GXColor n_turn_prm0 = {0x40, 0x60, 0x40, 0xFF}; + static const GXColor n_turn_prm1 = {0xDC, 0xE6, 0xDC, 0xFF}; + static const GXColor n_turn_env = {0xA0, 0xE6, 0xA0, 0xFF}; + static const GXColor nm_turn_prm0 = {0x40, 0x40, 0x60, 0xFF}; + static const GXColor nm_turn_prm1 = {0xDC, 0xDC, 0xE6, 0xFF}; + static const GXColor nm_turn_env = {0xA0, 0xA0, 0xE6, 0xFF}; + static const GXColor fm_turn_prm0 = {0x40, 0x40, 0xFF, 0xFF}; + static const GXColor fm_turn_prm1 = {0xDC, 0xDC, 0xFF, 0xFF}; + static const GXColor fm_turn_env = {0x78, 0x78, 0xFF, 0xFF}; + const GXColor* prm0; + const GXColor* prm1; + const GXColor* env; + f32 dVar27; + if (mEquipItem == daPyItem_BOKO_e) { + u32 uVar6; + if (mActorKeepEquip.getActor() == NULL) { + uVar6 = 0; + } else { + uVar6 = fopAcM_GetParam(mActorKeepEquip.getActor()); + } + if (uVar6 == 0) { + dVar27 = daPy_HIO_cutTurn_c0::m.field_0x48; + } else if (uVar6 == 1) { + dVar27 = daPy_HIO_cutTurn_c0::m.field_0x4C; + } else if (uVar6 == 2) { + dVar27 = daPy_HIO_cutTurn_c0::m.field_0x50; + } else if (uVar6 == 3) { + dVar27 = daPy_HIO_cutTurn_c0::m.field_0x54; + } else if (uVar6 == 4) { + dVar27 = daPy_HIO_cutTurn_c0::m.field_0x58; + } else { + dVar27 = daPy_HIO_cutTurn_c0::m.field_0x5C; + } + dVar27 *= 1.5f; + prm0 = &nm_turn_prm0; + prm1 = &nm_turn_prm1; + env = &nm_turn_env; + } else if ((mCurProc == daPyProc_CUT_ROLL_e) || (checkNoResetFlg1(daPyFlg1_UNK8000))) { + if (checkNormalSwordEquip()) { + if (mCurProc == daPyProc_CUT_ROLL_e) { + dVar27 = daPy_HIO_cutRoll_c0::m.field_0x18; + } else { + dVar27 = daPy_HIO_cutTurn_c0::m.field_0x38; + } + prm0 = &n_roll_prm0; + prm1 = &n_roll_prm1; + env = &n_roll_env; + } else if (checkFinalMasterSwordEquip()) { + if (mCurProc == daPyProc_CUT_ROLL_e) { + dVar27 = daPy_HIO_cutRoll_c0::m.field_0x1C; + } else { + dVar27 = daPy_HIO_cutTurn_c0::m.field_0x3C; + } + prm0 = &fm_roll_prm0; + prm1 = &fm_roll_prm1; + env = &fm_roll_env; + } else { + if (mCurProc == daPyProc_CUT_ROLL_e) { + dVar27 = daPy_HIO_cutRoll_c0::m.field_0x1C; + } else { + dVar27 = daPy_HIO_cutTurn_c0::m.field_0x3C; + } + prm0 = &nm_roll_prm0; + prm1 = &nm_roll_prm1; + env = &nm_roll_env; + } + } else { + if (checkNormalSwordEquip()) { + dVar27 = daPy_HIO_cutTurn_c0::m.field_0x38; + prm0 = &n_turn_prm0; + prm1 = &n_turn_prm1; + env = &n_turn_env; + } else if (checkFinalMasterSwordEquip()) { + dVar27 = daPy_HIO_cutTurn_c0::m.field_0x3C; + prm0 = &fm_turn_prm0; + prm1 = &fm_turn_prm1; + env = &fm_turn_env; + } else { + dVar27 = daPy_HIO_cutTurn_c0::m.field_0x3C; + prm0 = &nm_turn_prm0; + prm1 = &nm_turn_prm1; + env = &nm_turn_env; + } + } + JPABaseEmitter* emitter1 = dComIfGp_particle_setP1( + dPa_name::ID_COMMON_0025, + ¤t.pos, + &shape_angle, + NULL, + 0xFF, + &m331C, + fopAcM_GetRoomNo(this), + prm0, + env, + NULL + ); + JPABaseEmitter* emitter2 = dComIfGp_particle_setP1( + dPa_name::ID_COMMON_0026, + ¤t.pos, + &shape_angle, + NULL, + 0xFF, + &m332C, + fopAcM_GetRoomNo(this), + prm1, + env, + NULL + ); + JPABaseEmitter* emitter3 = dComIfGp_particle_setP1( + dPa_name::ID_COMMON_0028, + ¤t.pos, + &shape_angle, + NULL, + 0xFF, + &m333C, + fopAcM_GetRoomNo(this), + prm0, + env, + NULL + ); + if (emitter1 != NULL) { + emitter1->mGlobalParticleScale.x = dVar27; + } + if (emitter2 != NULL) { + emitter2->mGlobalParticleScale.x = dVar27; + } + if (emitter3 != NULL) { + emitter3->mGlobalParticleScale.x = dVar27; + } + } + } + } else if (mCurProc == daPyProc_CUT_ROLL_e) { + cXyz* pcVar23 = &mSwBlur.field_0x304[0]; + s16 r27 = daPy_HIO_cutRoll_c0::m.field_0x4 / 10; + cXyz spAC = (old.pos - current.pos) * 0.1f; + mDoMtx_stack_c::copy(mpCLModel->getBaseTRMtx()); + mDoMtx_stack_c::push(); + mDoMtx_stack_c::inverse(); + cXyz spA0; + mDoMtx_stack_c::multVec(&m36C4, &spA0); + mDoMtx_stack_c::pop(); + for (int i = 0; i < 10; i++, pcVar23++) { + mDoMtx_stack_c::multVec(&spA0, pcVar23); + *pcVar23 += spAC * i; + mDoMtx_stack_c::YrotM(r27); + } + mDoMtx_stack_c::copy(mpCLModel->getBaseTRMtx()); + mDoMtx_stack_c::YrotM(-(r27 >> 1)); + mDoMtx_stack_c::multVec(&spA0, &spB8); + if (m331C.getAlpha() == 0xFF) { + m331C.setPosArray(&mSwBlur.field_0x304[0], 10); + m332C.setPosArray(&mSwBlur.field_0x304[0], 10); + m333C.setPosArray(&mSwBlur.field_0x304[0], 10); + } + mAtCyl.MoveCAt(current.pos); + seStartSwordCut(JA_SE_LK_SUGOI_KAITEN); + } else { + int r26 = mSwBlur.field_0x018; + int r23 = (int)(10.0f * mFrameCtrlUnder[UNDER_MOVE0_e].getFrame()); + if (((mCurProc != daPyProc_CUT_F_e) && (mCurProc != daPyProc_BT_VERTICAL_JUMP_CUT_e)) && + (mCurProc != daPyProc_FAN_SWING_e)) + { + if (mCurProc == daPyProc_JUMP_CUT_LAND_e) { + r23 = 0x95; + } else if ((mCurProc == daPyProc_HAMMER_FRONT_SWING_e) || (mCurProc == daPyProc_WEAPON_FRONT_SWING_e)) { + r23 = (int)(2.5f * mFrameCtrlUnder[UNDER_MOVE0_e].getFrame()); + } else if (mCurProc == daPyProc_WEAPON_SIDE_SWING_e) { + r23 = (int)(10.0f * mFrameCtrlUnder[UNDER_MOVE0_e].getFrame()) + -5; + } + mSwBlur.copySwBlur(mpCLModel->getBaseTRMtx(), r23); + } + if (mCurProc == daPyProc_CUT_TURN_e) { + mDoMtx_multVec(mpCLModel->getBaseTRMtx(), &mSwBlur.mpPosBuffer[r23 * 2 + 3], &spB8); + mAtCyl.MoveCAt(current.pos); + if (m331C.getAlpha() == 0xFF) { + s16 sVar16 = mSwBlur.field_0x018 - r26; + m331C.setPosArray(&mSwBlur.field_0x304[0], sVar16); + m332C.setPosArray(&mSwBlur.field_0x304[0], sVar16); + m333C.setPosArray(&mSwBlur.field_0x304[0], sVar16); + } + mSwBlur.field_0x014 = 0; + } else { + setSwordAtCollision(); + } + } + + if ((mCurProc == daPyProc_CUT_TURN_e) || (mCurProc == daPyProc_CUT_ROLL_e)) { + mDoAud_zelAudio_c::getInterface()->bgmNowKaitengiri(); + mAtCyl.OnAtSetBit(); + mAtCps[0].OffAtSetBit(); + mAtCps[1].OffAtSetBit(); + mAtCps[2].OffAtSetBit(); + } else { + mAtCyl.OffAtSetBit(); + mAtCps[0].OnAtSetBit(); + if (checkResetFlg0(daPyRFlg0_UNK1)) { + mAtCps[1].OffAtSetBit(); + mAtCps[2].OffAtSetBit(); + } else { + mAtCps[1].OnAtSetBit(); + mAtCps[2].OnAtSetBit(); + } + } + dComIfG_Ccsp()->Set(&mAtCyl); + // dComIfG_Ccsp()->SetMass(&mAtCyl, 1); + g_dComIfG_gameInfo.play.mCcS.SetMass(&mAtCyl, 1); + int i; + dCcD_Cps* pdVar21 = &mAtCps[0]; + for (i = 0; i < 3; i++, pdVar21++) { + dComIfG_Ccsp()->Set(pdVar21); + // dComIfG_Ccsp()->SetMass(&pdVar21, 1); + g_dComIfG_gameInfo.play.mCcS.SetMass(pdVar21, 1); + } + } else { + if (mSwBlur.field_0x014 < 10) { + mSwBlur.field_0x014 = 0; + } else { + mSwBlur.field_0x014 += -10; + } + if ((mCurProc == daPyProc_BOTTLE_OPEN_e) && (m34D6 != 0)) { + mAtCps[0].OnAtSetBit(); + dComIfG_Ccsp()->Set(&mAtCps[0]); + if (m34D4 != 0) { + mAtCps[1].OnAtSetBit(); + dComIfG_Ccsp()->Set(&mAtCps[1]); + } else { + mAtCps[1].OffAtSetBit(); + } + } else { + int i; + dCcD_Cps* pdVar21 = &mAtCps[0]; + for (i = 0; i < 3; i++, pdVar21++) { + pdVar21->ResetAtHit(); + pdVar21->OffAtSetBit(); + } + } + mAtCyl.ResetAtHit(); + mAtCyl.OffAtSetBit(); + offNoResetFlg0(daPyFlg0_CUT_AT_FLG); + m331C.end(); + m332C.end(); + m333C.end(); + } + if (fanWindCrashEffectDraw()) { + f32 fVar3 = mpYbafo00Btk->getFrame() + 1.0f; + if (fVar3 > mpYbafo00Btk->getFrameMax() - 0.5f) { + fVar3 = mpYbafo00Btk->getFrameMax() - 0.001f; + } + mpYbafo00Btk->setFrame(fVar3); + } + + BOOL bVar5 = false; + cXyz sp94; + cXyz sp88; + f32 in_f31; + if ((int)m3534 != 0) { + sp94.x = mFanWindCps.GetEndP()->x; + sp94.y = mFanWindCps.GetEndP()->y; + sp94.z = mFanWindCps.GetEndP()->z; + f32 dVar27 = m3534 / 10.0f; + f32 fVar4 = + (dVar27 * (daPy_HIO_fan_c0::m.field_0x18 - daPy_HIO_fan_c0::m.field_0x1C) + daPy_HIO_fan_c0::m.field_0x1C); + spC4.set( + fVar4 * cM_ssin(m3536) * cM_scos(m3538), -fVar4 * cM_ssin(m3538), fVar4 * cM_scos(m3536) * cM_scos(m3538) + ); + sp88 = sp94 + spC4; + mArrowLinChk.Set(&sp94, &sp88, this); + if (dComIfG_Bgsp()->LineCross(&mArrowLinChk)) { + cM3dGPla* pfVar15 = dComIfG_Bgsp()->GetTriPla(mArrowLinChk); + sp88.set(*mArrowLinChk.GetCrossP()); + if (!cBgW_CheckBGround(pfVar15->GetNP()->y)) { + m3534 = 0; + m33E8.end(); + mpYuchw00Brk->setFrame(mpYuchw00Brk->getFrameMax() - 0.001f); + mpYbafo00Btk->setFrame(0.0f); + mDoMtx_stack_c::transS(sp88.x, sp88.y, sp88.z); + mDoMtx_stack_c::ZXYrotM( + cM_atan2s(-pfVar15->GetNP()->y, pfVar15->GetNP()->absXZ()), + cM_atan2s(-pfVar15->GetNP()->x, -pfVar15->GetNP()->z), + 0 + ); + mpYbafo00Model->setBaseTRMtx(mDoMtx_stack_c::get()); + JPABaseEmitter* emitter = dComIfGp_particle_setP1(dPa_name::ID_COMMON_0049, &sp88); + if (emitter != NULL) { + JPASetRMtxTVecfromMtx(mDoMtx_stack_c::get(), emitter->mGlobalRotation, emitter->mGlobalTranslation); + emitter->setGlobalPrmColor(tevStr.mColorK0.r, tevStr.mColorK0.g, tevStr.mColorK0.b); + } + } else { + sp88.y += 70.0f; + m3538 = getGroundAngle(&mArrowLinChk, m3536); + } + } + bVar5 = true; + in_f31 = (70.0f + (230.0f * (1.0f - dVar27))); + if ((int)m3534 != 0) { + m3534--; + mDoMtx_stack_c::transS(sp88.x, sp88.y, sp88.z); + mDoMtx_stack_c::ZXYrotM(m3538, m3536, 0); + mpYuchw00Model->setBaseTRMtx(mDoMtx_stack_c::get()); + mYuchw00Bck.play(); + mYuchw00Bck.entry(mpYuchw00Model->getModelData()); + simpleAnmPlay(mpYuchw00Btk); + } + } else if (fanWindEffectDraw()) { + mYuchw00Bck.play(); + mYuchw00Bck.entry(mpYuchw00Model->getModelData()); + simpleAnmPlay(mpYuchw00Btk); + f32 dVar27 = (1.0f + mpYuchw00Brk->getFrame()); + if (dVar27 > (mpYuchw00Brk->getFrameMax() - 0.5f)) { + dVar27 = (mpYuchw00Brk->getFrameMax() - 0.001f); + m33E8.end(); + } + mpYuchw00Brk->setFrame(dVar27); + } else { + if (mpYbafo00Btk->getFrame() < 5.0f) { + mDoMtx_multVecZero(mpYbafo00Model->getBaseTRMtx(), &sp94); + sp88.x = sp94.x; + sp88.y = 10.0f + sp94.y; + sp88.z = sp94.z; + spC4 = cXyz::Zero; + bVar5 = true; + in_f31 = 120.0f; + } + } + + if (bVar5) { + mFanWindCps.SetStartEnd(sp94, sp88); + mFanWindCps.SetAtVec(spC4); + mFanWindCps.SetR(in_f31); + dComIfG_Ccsp()->Set(&mFanWindCps); + // dComIfG_Ccsp()->SetMass(&mFanWindCps, 1); + g_dComIfG_gameInfo.play.mCcS.SetMass(&mFanWindCps, 1); + } else { + mFanWindCps.ResetAtHit(); + } + if (fanWindEffectDraw()) { + mDoAud_seStart(JA_SE_LK_FAN_WIND, mFanWindCps.GetEndP(), 0, mReverb); + } + if (m353A != 0) { + if (mCurProc == daPyProc_FAN_GLIDE_e) { + cXyz local_10c; + mDoMtx_multVecZero(mpCLModel->getAnmMtx(0), &local_10c); + mFanWindSph.SetC(local_10c); + } else { + mFanWindSph.SetC(current.pos); + } + dComIfG_Ccsp()->Set(&mFanWindSph); + // dComIfG_Ccsp()->SetMass(&mFanWindSph, 1); + g_dComIfG_gameInfo.play.mCcS.SetMass(&mFanWindSph, 1); + m353A--; + } else { + mFanWindSph.ResetAtHit(); + } + if (checkResetFlg0(daPyRFlg0_UNK200000)) { + mDoMtx_multVec(mpEquippedShieldModel->getBaseTRMtx(), &l_ms_light_local_start, &sp94); + cXyz local_118; + mDoMtx_multVecSR(mpEquippedShieldModel->getBaseTRMtx(), &l_ms_light_local_vec, &local_118); + sp88 = sp94 + local_118; + mMirLightLinChk.Set(&sp94, &sp88, this); + if (dComIfG_Bgsp()->LineCross(&mMirLightLinChk)) { + sp88.set(*mMirLightLinChk.GetCrossP()); + local_118 = sp88 - sp94; + } + mFanLightCps.SetStartEnd(sp94, sp88); + mFanLightCps.SetAtVec(local_118); + mFanLightCps.OnAtSetBit(); + dComIfG_Ccsp()->Set(&mFanLightCps); + // dComIfG_Ccsp()->SetMass(&mFanLightCps, 1); + g_dComIfG_gameInfo.play.mCcS.SetMass(&mFanLightCps, 1); + } else { + mFanLightCps.ResetAtHit(); + mFanLightCps.OffAtSetBit(); + } } /* 8011EC0C-8011EEBC .text setAttentionPos__9daPy_lk_cFv */ void daPy_lk_c::setAttentionPos() { - /* Nonmatching */ - { - static const Vec offset = {0.0f, 30.0f, 20.0f}; - } - { - static const Vec offset = {0.0f, 70.0f, 0.0f}; + cXyz* pcVar3; + cXyz afStack_18; + + attention_info.position.x = current.pos.x; + attention_info.position.z = current.pos.z; + daShip_c* ship = (daShip_c*)dComIfGp_getShipActor(); + if (checkModeFlg(ModeFlg_CRAWL)) { + { + static const Vec offset = {0.0f, 30.0f, 20.0f}; + mDoMtx_multVec(mpCLModel->getBaseTRMtx(), &offset, &attention_info.position); + } + } else if (dComIfGp_checkPlayerStatus0(0, daPyStts0_UNK2000_e)) { + { + static const Vec offset = {0.0f, 70.0f, 0.0f}; + mDoMtx_stack_c::ZXYrotS(mBodyAngle.x, shape_angle.y, 0); + mDoMtx_stack_c::multVec(&offset, &afStack_18); + attention_info.position.y = 26.3f + current.pos.y; + pcVar3 = &attention_info.position; + *pcVar3 += afStack_18; + } + } else if (checkModeFlg(ModeFlg_CROUCH)) { + attention_info.position.x += 20.0f * cM_ssin(shape_angle.y); + attention_info.position.y = 46.25f + current.pos.y; + attention_info.position.z += 20.0f * cM_scos(shape_angle.y); + } else if (checkModeFlg(ModeFlg_ROPE)) { + attention_info.position = current.pos; + } else if (checkModeFlg(ModeFlg_HANG)) { + attention_info.position.y = 92.5f + mCyl.GetCP()->y; + } else if (checkModeFlg(ModeFlg_SWIM)) { + attention_info.position.y = 20.05f + current.pos.y; + } else if ((checkModeFlg(ModeFlg_WHIDE)) && (checkNoResetFlg0(daPyFlg0_UNK10000))) { + attention_info.position.y = (92.5f + mpCLModel->getBaseTRMtx()[1][3]) - 30.0f; + } else if ((checkModeFlg(ModeFlg_IN_SHIP)) && (ship != NULL && (!ship->getFlyFlg()))) { + // !@bug(?): l_ship_offset is probably supposed to be x, not z. + attention_info.position.x = ship->current.pos.x + cM_ssin(ship->shape_angle.y) * l_ship_offset.z; + if (checkNoResetFlg0(daPyFlg0_UNK80)) { + attention_info.position.y = 92.5f + (m35D0 + l_ship_offset.y); + } else { + attention_info.position.y = 92.5f + mpCLModel->getBaseTRMtx()[1][3]; + } + attention_info.position.z = ship->current.pos.z + cM_scos(ship->shape_angle.y) * l_ship_offset.z; + return; + } else { + attention_info.position.y = 92.5f + mpCLModel->getBaseTRMtx()[1][3]; } } /* 8011EEBC-8011EF94 .text setRoomInfo__9daPy_lk_cFv */ int daPy_lk_c::setRoomInfo() { - /* Nonmatching */ + int sVar5 = dComIfG_Bgsp()->GetRoomId(mAcch.m_gnd); + tevStr.mRoomNo = sVar5; + tevStr.mEnvrIdxOverride = dComIfG_Bgsp()->GetPolyColor(mAcch.m_gnd); + mReverb = dComIfGp_getReverb(sVar5); + mStts.SetRoomId(sVar5); + current.roomNo = sVar5; + if (dStage_stagInfo_GetSTType(dComIfGp_getStageStagInfo()) == dStageType_SEA_e) { + if (dComIfG_Bgsp()->ChkMoveBG(mAcch.m_gnd)) { + mRestartPoint = 0; + } else { + mRestartPoint = dComIfG_Bgsp()->GetLinkNo(mAcch.m_gnd); + } + } else { + mRestartPoint = 0xFF; + } + return sVar5; } /* 8011EF94-8011F9C0 .text setDemoData__9daPy_lk_cFv */ void daPy_lk_c::setDemoData() { - /* Nonmatching */ + dDemo_actor_c* demo_actor_p = dComIfGp_demo_getActor(demoActorID); + cXyz* pos_p = NULL; + s16 angle; + u32 demo_mode = daPy_demo_c::DEMO_UNK01_e; + int* prm0_p = NULL; + int* prm1_p = NULL; + if (!dComIfGp_event_runCheck()) { + if (mDemo.getDemoType() != 0) { + endDemoMode(); + } + if (m3554 > 0) { + m3554--; + } else { + offNoResetFlg1(daPyFlg1_FOREST_WATER_USE); + } + return; + } + dComIfGp_clearPlayerStatus0(0, daPyStts0_BOOMERANG_WAIT_e); + if ((dComIfGp_event_chkEventFlag(0x20)) == 0) { + if (mCurProc == daPyProc_SCOPE_e) { + procWait_init(); + } else if (mCurProc == daPyProc_SHIP_SCOPE_e) { + procShipPaddle_init(); + } + } + if (mCurProc == daPyProc_SUBJECTIVITY_e) { + procWait_init(); + } + if ((mDemo.getDemoType() == 4) && (!dComIfGp_evmng_checkStartDemo())) { + mDemo.setDemoType(2); + } + if (demo_actor_p != NULL) { + demo_actor_p->setModel(mpCLModel); + mStaffIdx = -1; + if (mDemo.getDemoType() != 1) { + mDemo.setDemoType(1); + freeGrabItem(); + freeRopeItem(); + freeHookshotItem(); + deleteEquipItem(FALSE); + procWait_init(); + } + if (demo_actor_p->checkEnable(dDemo_actor_c::ENABLE_ANM_e)) { + demo_mode = demo_actor_p->getAnmId(); + } + if (demo_actor_p->checkEnable(dDemo_actor_c::ENABLE_TRANS_e)) { + pos_p = demo_actor_p->getTrans(); + } else { + pos_p = ¤t.pos; + } + if (demo_actor_p->checkEnable(dDemo_actor_c::ENABLE_ROTATE_e)) { + angle = demo_actor_p->getRatate()->y; + } else { + angle = shape_angle.y; + } + if (demo_actor_p->checkEnable(dDemo_actor_c::ENABLE_SHAPE_e)) { + if (dComIfGs_getClearCount() == 0) { + u32 shape = demo_actor_p->getShapeId(); + if ((checkNoResetFlg1(daPyFlg1_CASUAL_CLOTHES) && (shape == 0)) || + (!checkNoResetFlg1(daPyFlg1_CASUAL_CLOTHES) && (shape == 1))) + { + ResTIMG casualLinktex = *mpCurrLinktex; + *mpCurrLinktex = mOtherLinktex; + mOtherLinktex = casualLinktex; + if (checkNoResetFlg1(daPyFlg1_CASUAL_CLOTHES)) { + offNoResetFlg1(daPyFlg1_CASUAL_CLOTHES); + } else { + onNoResetFlg1(daPyFlg1_CASUAL_CLOTHES); + } + } + } + } + } else { + if ((mDemo.getDemoType() == 0) && (dComIfGp_event_runCheck())) { + mDemo.setDemoType(2); + } + if (mStaffIdx != -1) { + char* cut_name = dComIfGp_getPEvtManager()->getMyNowCutName(mStaffIdx); + if (cut_name != NULL) { + // Take the first 3 chars in cut_name, convert them to integers, and calculate + // demo_mode + demo_mode = ((cut_name[0] - '0') * 100 + (cut_name[1] - '0') * 10 + (cut_name[2] - '0')); + if ((mDemo.getDemoType() != 4) && + ((demo_mode == daPy_demo_c::DEMO_UNK01_e || (demo_mode == daPy_demo_c::DEMO_UNK2A_e)) || + (demo_mode == daPy_demo_c::DEMO_UNK17_e))) + { + if (mAcch.ChkGroundHit() && !daPy_lk_c::checkPlayerFly()) { + mVelocity = 0.0f; + speedF = 0.0f; + } + } + pos_p = dComIfGp_evmng_getMyXyzP(mStaffIdx, "pos"); + if (pos_p == NULL) { + pos_p = dComIfGp_evmng_getGoal(); + } + int* angle_p = dComIfGp_evmng_getMyIntegerP(mStaffIdx, "angle"); + if (angle_p != NULL) { + angle = *angle_p; + } else if (demo_mode == daPy_demo_c::DEMO_UNK05_e) { + angle = mDemo.getMoveAngle(); + } else { + angle = shape_angle.y; + } + prm0_p = dComIfGp_evmng_getMyIntegerP(mStaffIdx, "prm0"); + prm1_p = dComIfGp_evmng_getMyIntegerP(mStaffIdx, "prm1"); + if (mDemo.getDemoType() == 2) { + f32* stick_p = dComIfGp_evmng_getMyFloatP(mStaffIdx, "stick"); + if (stick_p != NULL) { + mDemo.setStick(*stick_p); + } else { + mDemo.setStick(1.0f); + } + } + int* face_p = dComIfGp_evmng_getMyIntegerP(mStaffIdx, "face"); + if (face_p != NULL) { + if (*face_p == 0) { + resetDemoTextureAnime(); + } else if (*face_p == 1) { + changeTextureAnime(LKANM_BTP_TMABAI, LKANM_BTK_TMABA, -1); + } + } + } + } + } + if ((demo_mode == daPy_demo_c::DEMO_UNK27_e) && (dComIfGp_getShipActor() == NULL)) { + demo_mode = daPy_demo_c::DEMO_UNK01_e; + } + if (mDemo.getDemoType() == 4) { + if (mDemo.getDemoMode() == daPy_demo_c::DEMO_UNK0E_e) { + if (mDemo.getTimer() != 0) { + mDemo.decTimer(); + cXyz sp5C = current.pos - home.pos; + if (sp5C.abs2XZ() > 90000.0f) { + mDemo.setTimer(0); + dComIfGp_evmng_cutEnd(mStaffIdx); + } + } else { + dComIfGp_evmng_cutEnd(mStaffIdx); + } + } + return; + } + if ((mDemo.getDemoType() == 1) || (mDemo.getDemoType() == 2 && (mStaffIdx != -1))) { + if (prm0_p != NULL) { + mDemo.setParam0(*prm0_p); + } else { + mDemo.setParam0(0); + } + if (prm1_p != NULL) { + mDemo.setParam1(*prm1_p); + } else { + mDemo.setParam1(0); + } + if ((demo_mode == daPy_demo_c::DEMO_UNK04_e) || (demo_mode == daPy_demo_c::DEMO_UNK2C_e)) { + mVelocity = 0.0f; + speedF = 0.0f; + mStts.ClrCcMove(); + setPlayerPosAndAngle(pos_p, angle); + mDemo.setMoveAngle(angle); + if (demo_mode == daPy_demo_c::DEMO_UNK04_e) { + if (mDemo.getParam0() != 0) { + deleteEquipItem(FALSE); + if ((mDemo.getParam0() == 1) && (checkSwordEquip())) { + setSwordModel(TRUE); + } else if (mDemo.getParam0() == 2) { + mEquipItem = daPyItem_NONE_e; + } else if (mDemo.getParam0() == 3) { + mEquipItem = daPyItem_NONE_e; + if (dComIfGp_checkPlayerStatus0(0, daPyStts0_SHIP_RIDE_e)) { + dComIfGp_clearPlayerStatus0(0, daPyStts0_SHIP_RIDE_e); + } + } + mDemo.setParam0(0); + } + } + if (dComIfGp_checkPlayerStatus0(0, daPyStts0_SHIP_RIDE_e)) { + if (dComIfGp_getShipActor() != NULL) { + dComIfGp_getShipActor()->initStartPos(¤t.pos, shape_angle.y); + } + } + } else if (demo_mode == daPy_demo_c::DEMO_UNK2B_e) { + cXyz sp50 = *pos_p - current.pos; + s16 r24 = current.angle.y; + current.angle.y = cM_atan2s(sp50.x, sp50.z); + shape_angle.y = current.angle.y; + m34EC -= (s16)(current.angle.y - r24); + } else if ((demo_mode == daPy_demo_c::DEMO_UNK02_e) || (demo_mode == daPy_demo_c::DEMO_UNK03_e)) { + cXyz sp44 = *pos_p - current.pos; + if (std::abs(mVelocity) / mMaxNormalSpeed < daPy_HIO_move_c0::m.field_0x2C) { + demo_mode = daPy_demo_c::DEMO_UNK02_e; + } + f32 dVar22 = sp44.abs2XZ(); + if ((dVar22 < 100.0f) || ((dVar22 < 2500.0f) && (std::abs(mVelocity) < 0.001f))) { + demo_mode = daPy_demo_c::DEMO_UNK01_e; + mVelocity = 0.0f; + } else if (((demo_mode == daPy_demo_c::DEMO_UNK02_e) && (dVar22 < 400.0f)) || (dVar22 < 2500.0f)) { + mDemo.setStick(0.0f); + } + mDemo.setMoveAngle(cM_atan2s(sp44.x, sp44.z)); + } else if ((demo_mode == daPy_demo_c::DEMO_UNK05_e) || (demo_mode == daPy_demo_c::DEMO_UNK18_e)) { + mDemo.setMoveAngle(angle); + } + mDemo.setDemoMode(demo_mode); + } else if (mDemo.getDemoType() != 3) { + mDemo.setDemoMode(demo_mode); + } + if (((checkModeFlg(ModeFlg_00080000)) || (mDemo.getDemoMode() == daPy_demo_c::DEMO_UNK06_e)) || + (mDemo.getDemoMode() == daPy_demo_c::DEMO_UNK08_e)) + { + dComIfGp_setPlayerStatus0(0, daPyStts0_UNK10_e); + } else { + dComIfGp_clearPlayerStatus0(0, daPyStts0_UNK10_e); + } + if (mStaffIdx != -1 && (demo_mode == daPy_demo_c::DEMO_UNK01_e || demo_mode == daPy_demo_c::DEMO_UNK04_e || + demo_mode == daPy_demo_c::DEMO_UNK17_e || demo_mode == daPy_demo_c::DEMO_UNK0E_e || + demo_mode == daPy_demo_c::DEMO_UNK11_e || demo_mode == daPy_demo_c::DEMO_UNK12_e || + demo_mode == daPy_demo_c::DEMO_UNK2A_e || demo_mode == daPy_demo_c::DEMO_UNK2B_e || + demo_mode == daPy_demo_c::DEMO_UNK2C_e || demo_mode == daPy_demo_c::DEMO_UNK27_e || + demo_mode == daPy_demo_c::DEMO_UNK33_e)) + { + dComIfGp_evmng_cutEnd(mStaffIdx); + } } /* 8011F9C0-8011FF50 .text setStickData__9daPy_lk_cFv */ void daPy_lk_c::setStickData() { - /* Nonmatching */ + bool bVar1; + u8 bVar2; + + m34CA = mItemButton; + mItemTrigger = 0; + mItemButton = 0; + if (daPy_getPlayerActorClass() != this) { + mStickDistance = 0.0f; + m34E8 = 0; + } else { + if (mDemo.getDemoMode() == daPy_demo_c::DEMO_UNK44_e) { + mStickDistance = g_mDoCPd_cpadInfo[0].mMainStickValue; + m34DC = g_mDoCPd_cpadInfo[0].mMainStickAngle + 0x8000; + m34E8 = m34DC + dCam_getControledAngleY(dComIfGp_getCamera(mCameraInfoIdx)); + if (CPad_CHECK_HOLD_A(0)) { + mItemButton |= BTN_A; + } + } else if ((((dComIfGp_event_runCheck() != 0) || (mDemo.getDemoType() != 0)) && + (!dComIfGp_checkPlayerStatus1(0, daPyStts1_WIND_WAKER_CONDUCT_e))) && + ((mCurProc != daPyProc_NOT_USE_e && (mCurProc != daPyProc_BOTTLE_GET_e)))) + { + if ((mDemo.getDemoMode() == daPy_demo_c::DEMO_UNK02_e) || + (mDemo.getDemoMode() == daPy_demo_c::DEMO_UNK03_e)) + { + if (dComIfGp_demo_getActor(demoActorID) != NULL) { + mStickDistance = 1.0f; + } else { + mStickDistance = mDemo.getStick(); + } + } else { + mStickDistance = 0.0f; + } + m34E8 = mDemo.getMoveAngle(); + if (mDemo.getDemoMode() == daPy_demo_c::DEMO_UNK0E_e) { + mItemButton = m34CA; + } + } else if (fopOvlpM_IsPeek() == 1) { + mStickDistance = 0.0f; + m34E8 = 0; + } else { + mStickDistance = g_mDoCPd_cpadInfo[0].mMainStickValue; + if ((checkNoResetFlg1(daPyFlg1_CONFUSE)) && (dComIfGp_event_runCheck() == 0)) { + m34DC = g_mDoCPd_cpadInfo[0].mMainStickAngle; + } else { + m34DC = g_mDoCPd_cpadInfo[0].mMainStickAngle + 0x8000; + } + m34E8 = m34DC + dCam_getControledAngleY(dComIfGp_getCamera(mCameraInfoIdx)); + bVar2 = dComIfGp_getButtonActionMode(); + bVar1 = false; + if (CPad_CHECK_TRIG_B(0)) { + if ((dComIfGp_getButtonActionMode() & 2) != 0) { + mItemTrigger |= BTN_B; + } else { + bVar1 = true; + } + } + if (CPad_CHECK_TRIG_A(0)) { + if ((bVar2 & 1) != 0) { + mItemTrigger |= BTN_A; + } else { + bVar1 = true; + } + } + if (CPad_CHECK_TRIG_X(0)) { + if (((bVar2 & 4) != 0) && (mTinkleHoverTimer == 0)) { + mItemTrigger |= BTN_X; + } else { + bVar1 = true; + } + } + if (CPad_CHECK_TRIG_Y(0)) { + if (((bVar2 & 8) != 0) && (mTinkleHoverTimer == 0)) { + mItemTrigger |= BTN_Y; + } else { + bVar1 = true; + } + } + if (CPad_CHECK_TRIG_Z(0)) { + if (((bVar2 & 0x20) != 0) && (mTinkleHoverTimer == 0)) { + mItemTrigger |= BTN_Z; + } else { + bVar1 = true; + } + } + if (CPad_CHECK_TRIG_L(0)) { + mItemTrigger |= BTN_L; + } + if (mDoCPd_R_LOCK_TRIGGER(0)) { + mItemTrigger |= BTN_R; + } + if ((CPad_CHECK_HOLD_A(0)) && ((bVar2 & 1) != 0)) { + mItemButton |= BTN_A; + } + if ((CPad_CHECK_HOLD_B(0)) && ((bVar2 & 2) != 0)) { + mItemButton |= BTN_B; + } + if (mTinkleHoverTimer == 0) { + if ((CPad_CHECK_HOLD_X(0)) && ((bVar2 & 4) != 0)) { + mItemButton |= BTN_X; + } + if ((CPad_CHECK_HOLD_Y(0)) && ((bVar2 & 8) != 0)) { + mItemButton |= BTN_Y; + } + if ((CPad_CHECK_HOLD_Z(0)) && ((bVar2 & 0x20) != 0)) { + mItemButton |= BTN_Z; + } + } + if (CPad_CHECK_HOLD_L(0)) { + mItemButton |= BTN_L; + } + if (mDoCPd_R_LOCK_BUTTON(0)) { + mItemButton |= BTN_R; + } + if (checkHeavyStateOn()) { + mStickDistance = mStickDistance * daPy_HIO_move_c0::m.field_0x80; + } + if (checkGrabWear()) { + mStickDistance = mStickDistance * daPy_HIO_move_c0::m.field_0x74; + } + if (bVar1 && (dComIfGp_event_runCheck() == 0)) { + mDoAud_seStart(JA_SE_ITEM_TARGET_OUT); + } + } + } + s16 angle_diff = m34DC - m34EA; + int abs_v = abs(angle_diff); + if (((abs_v < daPy_HIO_cutTurnR_c0::m.field_0x6) && + (abs_v > daPy_HIO_cutTurnR_c0::m.field_0x8)) && + (m3578 * angle_diff >= 0)) + { + m3578 = m3578 + angle_diff; + m3524 = daPy_HIO_cutTurnR_c0::m.field_0x2; + } else if (m3578 * angle_diff < 0) { + m3578 = angle_diff; + m3524 = daPy_HIO_cutTurnR_c0::m.field_0x2; + } else if (daPy_HIO_cutTurnR_c0::m.field_0x0 == 0) { + if (m3524 > 0) { + m3524--; + } else { + m3578 = 0; + } + } } /* 8011FF50-801200F8 .text setBgCheckParam__9daPy_lk_cFv */ @@ -8438,7 +10721,103 @@ BOOL daPy_lk_c::checkLavaFace(cXyz* oldPos, int attributeCode) { /* 8012024C-80120724 .text checkFallCode__9daPy_lk_cFv */ void daPy_lk_c::checkFallCode() { - /* Nonmatching */ + int iVar1; + s32 bVar2; + u32 uVar3; + BOOL bVar4; + f32 dVar5; + f32 dVar6; + cXyz local_44; + + if (m3580 == 4 || C_BG_MIN_HEIGHT == mAcch.GetGroundH()) { + bVar4 = m35D0 > mAcch.GetGroundH() ? TRUE : FALSE; + if (((((!bVar4) && checkModeFlg(ModeFlg_MIDAIR)) && + (!checkModeFlg(ModeFlg_HOOKSHOT) && (m35F4 - current.pos.y > 100.0f * daPy_HIO_fall_c0::m.field_0x14))) || + (bVar4 && checkModeFlg(ModeFlg_SWIM))) || + (mAcch.ChkGroundHit() && (!checkNoResetFlg0(daPy_FLG0(daPyFlg0_UNK20000000 | daPyFlg0_UNK80000000))))) + { + startRestartRoom(5, 0xC9, -1.0f, 0); + mAcch.ClrGroundHit(); + } + return; + } + if (checkNoResetFlg0(daPyFlg0_DEKU_SP_RETURN_FLG) && checkModeFlg(ModeFlg_SWIM)) { + startRestartRoom(5, 0xC9, -1.0f, 0); + return; + } + iVar1 = dComIfG_Bgsp()->GetExitId(mAcch.m_gnd); + bVar2 = dComIfG_Bgsp()->GetRoomId(mAcch.m_gnd); + daShip_c* ship = (daShip_c*)dComIfGp_getShipActor(); + if (iVar1 == 0x3f) { + return; + } + if ((checkModeFlg(ModeFlg_SWIM) || mAcch.ChkGroundHit()) || mCurProc == daPyProc_FAN_GLIDE_e || + ((dComIfGp_checkPlayerStatus0(0, daPyStts0_SHIP_RIDE_e) && ship != NULL && !ship->checkForceMove()) || + (m3580 == 5 && m35F4 - current.pos.y > 500.0f))) + { + g_dComIfG_gameInfo.play.mFwaterTimer = 1; + dVar6 = speedF; + dVar5 = 1.5f; + if (dVar6 < dVar5) { + dVar5 = dVar5; + } else if (dVar6 > daPy_HIO_move_c0::m.field_0x18) { + dVar5 = daPy_HIO_move_c0::m.field_0x18; + } else { + dVar5 = dVar6; + } + if (dComIfGp_checkPlayerStatus0(0, daPyStts0_SHIP_RIDE_e)) { + uVar3 = 1; + if (dComIfGp_getShipActor() != NULL) { + dComIfGp_getShipActor()->onSceneChange(); + } + } else { + if (checkModeFlg(ModeFlg_CRAWL)) { + if (mFrameCtrlUnder[UNDER_MOVE0_e].getRate() >= 0.0f) { + uVar3 = 2; + } else { + uVar3 = 3; + } + } else { + uVar3 = 0; + } + } + if (m3580 == 5) { + mAcch.ClrGroundHit(); + } + if (!eventInfo.checkCommandDoor()) { + if (!dComIfGp_event_compulsory(this)) { + return; + } + } + if (dStage_changeSceneExitId(mAcch.m_gnd, dVar5, uVar3, bVar2)) { + onNoResetFlg1(daPyFlg1_UNK100000); + if (dComIfGs_isEventBit(0x3e10)) { + dComIfGs_onEventBit(0x3e01); + } + daPy_py_c::changePlayer((daPy_py_c*)this); + if ((!strcmp(dComIfGp_getStartStageName(), "GanonM")) && current.roomNo == 1) { + mDoAud_seStart(JA_SE_LK_MAZE_WARP_IN); + } + if (!eventInfo.checkCommandDoor()) { + mDemo.setDemoType(3); + if (m3580 == 5) { + mDemo.setDemoMode(daPy_demo_c::DEMO_UNK11_e); + } else if ((checkModeFlg(ModeFlg_SWIM) || m34C3 == 1) || m34C3 == 4) { + mDemo.setDemoMode(daPy_demo_c::DEMO_UNK0E_e); + mVelocity *= 0.75f; + } else { + mDemo.setDemoMode(daPy_demo_c::DEMO_UNK02_e); + } + local_44 = current.pos - old.pos; + dVar5 = local_44.abs(); + if (dVar5 > 0.1f) { + mDemo.setMoveAngle(cM_atan2s(local_44.x, local_44.z)); + } else { + mDemo.setMoveAngle(current.angle.y); + } + } + } + } } /* 80120724-80120BBC .text startRestartRoom__9daPy_lk_cFUlifi */ @@ -8552,27 +10931,192 @@ BOOL daPy_lk_c::checkSuccessGuard(int atSpl) { /* 80120BE0-80120F94 .text setShapeAngleOnGround__9daPy_lk_cFv */ void daPy_lk_c::setShapeAngleOnGround() { - /* Nonmatching */ + s16 sVar2; + int iVar3; + f32 dVar8; + f32 dVar7; + cXyz local_44; + cXyz local_50; + cXyz local_68; + cM3dGPla* triPla; + + if (!checkNoResetFlg0(daPy_FLG0(daPyFlg0_UNK20000000 | daPyFlg0_UNK80000000))) { + if (m35E4 < 0.0f) { + m35E4 = 0.0f; + } else if (m35E4 > 1.0f) { + m35E4 = 1.0f; + } + if (checkModeFlg(ModeFlg_CRAWL)) { + mDoMtx_stack_c::transS(current.pos.x, current.pos.y, current.pos.z); + mDoMtx_stack_c::YrotM(shape_angle.y); + mDoMtx_stack_c::multVec(&l_crawl_front_up_offset, &local_44); + mDoMtx_stack_c::multVec(&l_crawl_back_up_offset, &local_50); + mGndChk.SetPos(&local_44); + local_44.y = dComIfG_Bgsp()->GroundCross(&mGndChk); + if (C_BG_MIN_HEIGHT != local_44.y) { + triPla = dComIfG_Bgsp()->GetTriPla(mGndChk); + } else { + triPla = NULL; + } + if (triPla != NULL) { + dVar8 = triPla->GetNP()->y; + } else { + dVar8 = -1.0f; + } + mGndChk.SetPos(&local_50); + local_50.y = dComIfG_Bgsp()->GroundCross(&mGndChk); + if (C_BG_MIN_HEIGHT != local_50.y) { + triPla = dComIfG_Bgsp()->GetTriPla(mGndChk); + } else { + triPla = NULL; + } + if (triPla != NULL) { + dVar7 = triPla->GetNP()->y; + } else { + dVar7 = -1.0f; + } + local_68 = local_44 - local_50; + sVar2 = cM_atan2s(-local_68.y, local_68.absXZ()); + iVar3 = cLib_distanceAngleS(sVar2, shape_angle.x); + if (((iVar3 < 0x1000 && dVar8 > 0.0f) && dVar7 > 0.0f) && + (std::abs((dVar8 - dVar7)) > 0.05f)) + { + shape_angle.x = sVar2 * m35E4; + } else { + shape_angle.x = m34E2 * m35E4; + } + } else { + shape_angle.x = m34E2 * m35E4; + } + shape_angle.z = m35E4 * getGroundAngle(&mAcch.m_gnd, shape_angle.y + -0x4000); + } } /* 80120F94-801211B8 .text setStepsOffset__9daPy_lk_cFv */ void daPy_lk_c::setStepsOffset() { - /* Nonmatching */ + f32 fVar1; + f32 dVar5; + f32 dVar6; + cXyz local_2c; + + cLib_addCalc(&m35C4, 0.0f, 0.5f, 25.0f, 5.0f); + dVar6 = (cM_ssin(m34E2) / cM_scos(m34E2)); + local_2c.x = current.pos.x + speedF * cM_ssin(current.angle.y); + local_2c.y = 30.1f + current.pos.y; + local_2c.z = current.pos.z + speedF * cM_scos(current.angle.y); + mGndChk.SetPos(&local_2c); + dVar5 = dComIfG_Bgsp()->GroundCross(&mGndChk); + if ((checkNoResetFlg0(daPyFlg0_UNK80000000)) && (current.pos.y > dVar5)) { + dVar5 = current.pos.y; + } + fVar1 = (dVar5 - current.pos.y) - (-speedF * dVar6); + if (fVar1 > 0.0f) { + current.pos.y = dVar5; + m35C4 -= fVar1 * 0.7f; + } else if (!checkNoResetFlg0(daPyFlg0_UNK80000000)) { + local_2c = old.pos - current.pos; + fVar1 = local_2c.y - (dVar6 * local_2c.absXZ()); + if (fVar1 >= 0.0f) { + m35C4 += fVar1 * 0.7f; + } + } } /* 801211B8-8012135C .text setBeltConveyerPower__9daPy_lk_cFv */ void daPy_lk_c::setBeltConveyerPower() { - /* Nonmatching */ + f32 fVar1; + f32 dVar4; + f32 dVar5; + int local_58; + cXyz cStack_3c; + + if (((((!checkHeavyStateOn()) && (!dComIfGp_event_runCheck())) && (mDemo.getDemoType() == 0)) && + (!checkNoResetFlg0((daPy_FLG0)(daPyFlg0_UNK20000000 | daPyFlg0_UNK80000000)))) && + ((mAcch.ChkGroundHit() || (checkModeFlg(ModeFlg_SWIM))))) + { + if ((dComIfG_Bgsp()->ChkPolySafe(mAcch.m_gnd)) && + (dPath_GetPolyRoomPathVec(mAcch.m_gnd, &cStack_3c, &local_58))) + { + cStack_3c.normalizeZP(); + } else { + cStack_3c = cXyz::Zero; + local_58 = 0; + } + cStack_3c *= local_58; + dVar4 = m36B8.abs2XZ(); + dVar5 = cStack_3c.abs2XZ(); + if (dVar4 > dVar5) { + fVar1 = 3.0f; + } else { + fVar1 = 1.0f; + } + cLib_addCalcPosXZ(&m36B8, cStack_3c, 0.5f, fVar1, 0.5f); + } else { + m36B8 = cXyz::Zero; + } } /* 8012135C-801216A8 .text setWindAtPower__9daPy_lk_cFv */ void daPy_lk_c::setWindAtPower() { - /* Nonmatching */ + f32 dVar6; + cXyz local_58; + f32 fVar2; + f32 fVar1; + + if (mWindCyl.ChkTgHit()) { + dCcD_GObjInf* iVar4 = mWindCyl.GetTgHitGObj(); + if ((iVar4 != NULL) && (iVar4->GetAtSpl() == dCcG_At_Spl_UNK1)) { + m34BA = 1; + } else { + m34BA = 0; + } + } + if (((mWindCyl.ChkTgHit()) && + (((mDamageWaitTimer == 0 || (m34BA == 0)) && (!dComIfGp_event_runCheck())))) && + ((mDemo.getDemoType() == 0 && (mCurProc != daPyProc_FAN_GLIDE_e)))) + { + local_58 = *mWindCyl.GetTgRVecP(); + dVar6 = local_58.absXZ(); + if (m34BA != 0) { + fVar1 = 27.0f; + fVar2 = 18.0f; + } else { + fVar1 = 30.0f; + fVar2 = 1.0f; + } + if (dVar6 < 1.0f) { + local_58 = (current.pos - *mWindCyl.GetTgHitPosP()) * fVar1; + dVar6 = local_58.absXZ(); + } + if (dVar6 > fVar1) { + local_58 *= (fVar1 / dVar6); + } + } else { + local_58 = cXyz::Zero; + if (m34BA != 0) { + fVar2 = 1.0f; + } else { + fVar2 = 3.0f; + } + } + if (mCurProc != daPyProc_FAN_GLIDE_e) { + if ((dComIfGp_event_runCheck()) || (mDemo.getDemoType() != 0)) { + m373C.x = 0.0f; + m373C.z = 0.0f; + } else { + cLib_addCalcPosXZ(&m373C, local_58, 0.5f, fVar2, 0.5f); + } + if (((checkHeavyStateOn()) || (dComIfGp_event_runCheck())) || (mDemo.getDemoType() != 0)) { + m3730.x = 0.0f; + m3730.z = 0.0f; + } else { + cLib_addCalcPosXZ(&m3730, local_58, 0.5f, fVar2, 0.5f); + } + } } /* 801216A8-80121870 .text checkRoofRestart__9daPy_lk_cFv */ void daPy_lk_c::checkRoofRestart() { - /* Nonmatching - math */ if ((mAcch.ChkRoofHit()) && (mAcch.ChkGroundHit())) { if (((mCurProc != daPyProc_CRAWL_START_e)) && ((mCurProc != daPyProc_CRAWL_END_e && (mCurProc != daPyProc_WHIDE_READY_e)))) @@ -8585,19 +11129,18 @@ void daPy_lk_c::checkRoofRestart() { f32 dVar9 = mAcch.m_roof_y; if (dVar9 > mAcch.GetGroundH()) { f32 dVar10 = mHeadTopPos.y - 10.0f; - f32 fVar1 = current.pos.y; - f32 dVar8 = 10.0f + fVar1; + f32 dVar8 = 10.0f + current.pos.y; if (dVar10 < dVar8) { dVar10 = dVar8; } if (dVar9 < dVar10) { if (checkModeFlg(ModeFlg_WHIDE)) { - f32 fVar4 = 35.0f - - daPy_HIO_wall_c0::m.field_0x50 * cM_scos(shape_angle.y) + - current.pos.z; cXyz local_8; - local_8.set(current.pos.x + fVar4 * cM_ssin(shape_angle.y), fVar1, - fVar4); + local_8.set(current.pos.x + (35.0f - daPy_HIO_wall_c0::m.field_0x50) * + cM_ssin(shape_angle.y), + current.pos.y, + current.pos.z + (35.0f - daPy_HIO_wall_c0::m.field_0x50) * + cM_scos(shape_angle.y)); mRoofChk.SetPos(local_8); dVar9 = dComIfG_Bgsp()->RoofChk(&mRoofChk); if (dVar9 >= dVar10) { @@ -8612,7 +11155,6 @@ void daPy_lk_c::checkRoofRestart() { } } } - return; } /* 80121870-80122D30 .text execute__9daPy_lk_cFv */ @@ -8905,7 +11447,7 @@ BOOL daPy_lk_c::execute() { offNoResetFlg0(daPyFlg0_UNK400000); if (current.pos.y < 2000.0f && dComIfG_Bgsp()->GetSpecialCode(mAcch.m_gnd) != 1) { cM3dGPla* triPla = dComIfG_Bgsp()->GetTriPla(mAcch.m_gnd); - if (triPla->GetNP()->y >= 0.5f) { + if (cBgW_CheckBGround(triPla->GetNP()->y)) { offNoResetFlg0(daPyFlg0_DEKU_SP_RETURN_FLG); } } @@ -9181,10 +11723,10 @@ BOOL daPy_lk_c::playerDelete() { m32E4.end(); m32F0.end(); m33E8.end(); - mSmokeEcallBack.end(); - m331C.end(); - m332C.end(); - m333C.end(); + mSmokeEcallBack.remove(); + m331C.remove(); + m332C.remove(); + m333C.remove(); m3400.end(); m3410.end(); m3438.end(); @@ -9296,44 +11838,48 @@ void daPy_lk_c::initTextureScroll() { for (u16 no = 0; no < material_num; no++) { u16 matID = btk->getUpdateMaterialID(no); - if (matID != 0xFFFF) { - m_tex_eye_scroll[no] = new daPy_matAnm_c(); - JUT_ASSERT(20972, m_tex_eye_scroll[no] != NULL); - - mpCLModelData->getMaterialNodePointer(matID)->change(); - mpCLModelData->getMaterialNodePointer(matID)->setMaterialAnm(m_tex_eye_scroll[no]); - - J3DMaterial* mtl = mpCLModelData->getMaterialNodePointer(matID); - u8 texMtxID = btk->getUpdateTexMtxID(no); - if (texMtxID != 0xFF) { - J3DTexMtx* tmtx; - if (mtl->getTexMtx(texMtxID) == NULL) { - tmtx = new J3DTexMtx(); - JUT_ASSERT(20984, tmtx != NULL); - mtl->setTexMtx(no, tmtx); - } - if (mtl->getTexCoord(texMtxID) != NULL) { - mtl->getTexCoord(texMtxID)->setTexGenMtx(GX_TEXMTX0 + (texMtxID & 0xFF) * 3); - } - tmtx = mtl->getTexMtx(no); - - m_texMtxAnm[no].setAnmTransform(btk); - m_texMtxAnm[no].setAnmIndex(no); - - tmtx->getTexMtxInfo().mInfo = (tmtx->getTexMtxInfo().mInfo & 0x7F) | btk->getTexMtxCalcType() << 7; - // Fakematch? The codegen doesn't match unless a temp variable is used and assigned to multiple times. - Vec* temp = &btk->getSRTCenter(no); - tmtx->getTexMtxInfo().mCenter.x = temp->x; - temp = &btk->getSRTCenter(no); - tmtx->getTexMtxInfo().mCenter.y = temp->y; - temp = &btk->getSRTCenter(no); - tmtx->getTexMtxInfo().mCenter.z = temp->z; - - JUT_ASSERT(21001, mtl->getMaterialAnm() != NULL); - - mtl->getMaterialAnm()->setTexMtxAnm(texMtxID, &m_texMtxAnm[no]); - } + if (matID == 0xFFFF) { + continue; } + + m_tex_eye_scroll[no] = new daPy_matAnm_c(); + JUT_ASSERT(20972, m_tex_eye_scroll[no] != NULL); + + mpCLModelData->getMaterialNodePointer(matID)->change(); + mpCLModelData->getMaterialNodePointer(matID)->setMaterialAnm(m_tex_eye_scroll[no]); + + J3DMaterial* mtl = mpCLModelData->getMaterialNodePointer(matID); + u8 texMtxID = btk->getUpdateTexMtxID(no); + if (texMtxID == 0xFF) { + continue; + } + + J3DTexMtx* tmtx; + if (mtl->getTexMtx(texMtxID) == NULL) { + tmtx = new J3DTexMtx(); + JUT_ASSERT(20984, tmtx != NULL); + mtl->setTexMtx(no, tmtx); + } + if (mtl->getTexCoord(texMtxID) != NULL) { + mtl->getTexCoord(texMtxID)->setTexGenMtx(GX_TEXMTX0 + (texMtxID & 0xFF) * 3); + } + tmtx = mtl->getTexMtx(no); + + m_texMtxAnm[no].setAnmTransform(btk); + m_texMtxAnm[no].setAnmIndex(no); + + tmtx->getTexMtxInfo().mInfo = (tmtx->getTexMtxInfo().mInfo & 0x7F) | btk->getTexMtxCalcType() << 7; + // Fakematch? The codegen doesn't match unless a temp variable is used and assigned to multiple times. + Vec* temp = &btk->getSRTCenter(no); + tmtx->getTexMtxInfo().mCenter.x = temp->x; + temp = &btk->getSRTCenter(no); + tmtx->getTexMtxInfo().mCenter.y = temp->y; + temp = &btk->getSRTCenter(no); + tmtx->getTexMtxInfo().mCenter.z = temp->z; + + JUT_ASSERT(21001, mtl->getMaterialAnm() != NULL); + + mtl->getMaterialAnm()->setTexMtxAnm(texMtxID, &m_texMtxAnm[no]); } } @@ -9533,7 +12079,7 @@ J3DAnmTevRegKey* daPy_lk_c::entryBrk(J3DModelData* param_1, int param_2) { /* 80124C98-80125CC8 .text playerInit__9daPy_lk_cFv */ void daPy_lk_c::playerInit() { if (!fopAcM_entrySolidHeap(this, daPy_createHeap, 0xB0000)) { - JUT_ASSERT(0x53B6, FALSE); + JUT_ASSERT(21430, FALSE); } fopAcM_SetMtx(this, mpCLModel->getBaseTRMtx()); @@ -9570,28 +12116,25 @@ void daPy_lk_c::playerInit() { while (mtl) { mtl->setMaterialMode(1); if (mtl->getZMode()->getCompareEnable() == 0) { - // TODO: debug map indicates J3DBlend::getType inline was used - if (mtl->getBlend()->mBlendMode == GX_BM_BLEND) { - mpZOffBlendShape[zoff_blend_cnt] = mtl->getShape(); - zoff_blend_cnt++; - JUT_ASSERT(0x53EE, zoff_blend_cnt <= 4); + if ((u8)mtl->getBlend()->getType() == GX_BM_BLEND) { + mpZOffBlendShape[zoff_blend_cnt++] = mtl->getShape(); + JUT_ASSERT(21486, zoff_blend_cnt <= 4); } else { - mpZOffNoneShape[zoff_none_cnt] = mtl->getShape(); - zoff_none_cnt++; - JUT_ASSERT(0x53F2, zoff_none_cnt <= 4); + mpZOffNoneShape[zoff_none_cnt++] = mtl->getShape(); + JUT_ASSERT(21490, zoff_none_cnt <= 4); } } else { - mpZOnShape[zon_cnt] = mtl->getShape(); - zon_cnt++; - JUT_ASSERT(0x53F6, zon_cnt <= 4); + mpZOnShape[zon_cnt++] = mtl->getShape(); + JUT_ASSERT(21494, zon_cnt <= 4); } mtl = mtl->getNext(); } mtl = mpCLModelData->getJointNodePointer(0x15)->getMesh(); // cl_mayu joint } - JUT_ASSERT(0x53FD, zon_cnt == 4); - JUT_ASSERT(0x53FE, zoff_none_cnt == 4); - JUT_ASSERT(0x53FF, zoff_blend_cnt == 4); + + JUT_ASSERT(21501, zon_cnt == 4); + JUT_ASSERT(21502, zoff_none_cnt == 4); + JUT_ASSERT(21503, zoff_blend_cnt == 4); mpLhandShape = mpCLModelData->getJointNodePointer(0x08)->getMesh()->getShape(); // cl_LhandA joint mpRhandShape = mpCLModelData->getJointNodePointer(0x0C)->getMesh()->getShape(); // cl_RhandA joint @@ -9684,13 +12227,13 @@ void daPy_lk_c::playerInit() { mpItemHeaps[0] = mDoExt_createSolidHeapFromGameToCurrent(0xE600, 0x20); u8* dummy_data = new u8[0xE600]; - JUT_ASSERT(0x5493, dummy_data != NULL); + JUT_ASSERT(21651, dummy_data != NULL); mDoExt_restoreCurrentHeap(); mDoExt_adjustSolidHeap(mpItemHeaps[0]); mpItemHeaps[1] = mDoExt_createSolidHeapFromGameToCurrent(0xE600, 0x20); dummy_data = new u8[0xE600]; - JUT_ASSERT(0x5499, dummy_data != NULL); + JUT_ASSERT(21657, dummy_data != NULL); mDoExt_restoreCurrentHeap(); mDoExt_adjustSolidHeap(mpItemHeaps[1]); @@ -9841,13 +12384,211 @@ daPy_lk_c::daPy_lk_c() {} daPy_footData_c::~daPy_footData_c() {} /* 8012704C-80127160 .text __ct__15daPy_footData_cFv */ -daPy_footData_c::daPy_footData_c() { - /* Nonmatching - regalloc */ -} +daPy_footData_c::daPy_footData_c() {} /* 80127160-80127B50 .text makeBgWait__9daPy_lk_cFv */ cPhs_State daPy_lk_c::makeBgWait() { - /* Nonmatching */ + cXyz local_38; + cXyz local_44; + cXyz local_50; + + if ((int)m352E != 0) { + m352E--; + } + mAcch.CrrPos(*dComIfG_Bgsp()); + if ((C_BG_MIN_HEIGHT == mAcch.GetGroundH()) || + (((m352E != 0 && (dComIfG_Bgsp()->ChkMoveBG(mAcch.m_gnd))) && + (fopAcM_GetName(dComIfG_Bgsp()->GetActorPointer(mAcch.m_gnd.GetBgIndex())) == + PROC_TBOX)))) + { + return cPhs_INIT_e; + } + if (((fopAcM_GetParam(this) & 0x80) != 0) && (m352E != 0)) { + if (!(dComIfG_Bgsp()->ChkMoveBG(mAcch.m_gnd)) || + (fopAcM_GetName(dComIfG_Bgsp()->GetActorPointer(mAcch.m_gnd.GetBgIndex())) != + PROC_OBJ_IKADA)) + { + return cPhs_INIT_e; + } + current.pos.y = mAcch.GetGroundH(); + m352E = 0; + } + setWaterY(); + u32 uVar5 = fopAcM_GetParam(this) & 0x40; + if (uVar5 == 0) { + dComIfGs_setRestartRoom(current.pos, shape_angle.y, getStartRoomNo()); + } + setRoomInfo(); + int startMode = getStartMode(); + u8 sceneMode = dComIfGs_getLastSceneMode(); + if ((((startMode == 2) || (startMode == 9)) || + ((sceneMode == 6 || ((startMode == 5 && (sceneMode == 1)))))) || + ((sceneMode == 5 && (((!strcmp(dComIfGp_getStartStageName(), "Pjavdou") || + (!strcmp(dComIfGp_getStartStageName(), "ShipD"))) || + ((!strcmp(dComIfGp_getStartStageName(), "Siren") && + ((((fopAcM_GetRoomNo(this) == 0 && (current.pos.z > 1400.0f)) && + (current.pos.x < 400.0f)) && + (current.pos.x > -400.0f)))))))))) + { + if (!dComIfGs_isEventBit(0xf80)) { + if (changeSwimProc()) { + procSwimWait_init(0); + m34C2 = 0; + } else { + procWait_init(); + } + } else { + daShip_c* ship = (daShip_c*)dComIfGp_getShipActor(); + if (ship == NULL) { + return cPhs_INIT_e; + } + if (dComIfGs_isEventBit(0x3e10)) { + dComIfGs_onEventBit(0x3e01); + dComIfGs_onEventBit(0x3f80); + } + s16 sVar6; + if (uVar5 != 0) { + s16 sVar2 = shape_angle.y; + sVar6 = sVar2 + 0x4000; + m34DE = sVar2; + } else { + sVar6 = shape_angle.y; + } + ship->initStartPos(¤t.pos, sVar6); + if (ship->getSailOn()) { + procShipSteer_init(); + } else { + procShipPaddle_init(); + } + if (uVar5 != 0) { + procTactPlayEnd_init(-2); + } else if (sceneMode == 6) { + ship->setStartModeThrow(); + } else if ((sceneMode == 4) || (sceneMode == 5)) { + mDemo.setDemoType(4); + mDoAud_subBgmStop(); + procShipRestart_init(); + } else if (startMode == 9) { + ship->setStartModeWarp(); + local_38.set(current.pos.x, current.pos.y + 1500.0f, current.pos.z); + fpc_ProcID uVar8 = + fopAcM_create(PROC_TORNADO, 2, &local_38, fopAcM_GetRoomNo(this)); + ship->setTactWarpID(uVar8); + } + } + } else if (startMode == 4) { + mDemo.setDemoType(4); + mDoAud_bgmStart(JA_BGM_I_MAJU_JAIL); + procLargeDamage_init(-7, 0, 0, 0); + } else if ((sceneMode == 4) || (sceneMode == 5)) { + if (changeSwimProc()) { + procSwimWait_init(0); + m34C2 = 0; + } else { + current.pos.y = mAcch.GetGroundH(); + mDemo.setDemoType(4); + mDoAud_subBgmStop(); + procLargeDamageUp_init(sceneMode == 4 ? -1 : -2, 1, 0, 0); + } + } else if ((startMode == 1) || (startMode == 5)) { + if (mEventIdx == 0xFF) { + mVelocity = g_dComIfG_gameInfo.save.getRestart().getLastSpeedF(); + mDemo.setDemoType(4); + mDemo.setDemoMode(daPy_demo_c::DEMO_UNK0E_e); + mDemo.setMoveAngle(current.angle.y); + mDemo.setTimer(0x23); + if (changeSwimProc()) { + if (startMode == 1) { + mVelocity = 0.5f * daPy_HIO_swim_c0::m.field_0xC; + } + speedF = mVelocity; + procSwimMove_init(0); + } else if (startMode == 1) { + mVelocity = daPy_HIO_move_c0::m.field_0x2C * daPy_HIO_move_c0::m.field_0x18; + speedF = mVelocity; + procMove_init(); + } else if (sceneMode == 2) { + m34E8 = shape_angle.y; + procCrawlMove_init(0, 0); + } else if (sceneMode == 3) { + shape_angle.y += 0x8000; + current.angle.y = shape_angle.y; + m34DE = shape_angle.y; + m34E8 = shape_angle.y + 0x8000; + procCrawlMove_init(0, 0); + } else { + if (mVelocity > daPy_HIO_move_c0::m.field_0x18) { + mVelocity = daPy_HIO_move_c0::m.field_0x18; + } + speedF = mVelocity; + procMove_init(); + } + } else if (changeSwimProc()) { + procSwimWait_init(0); + m34C2 = 0; + } else { + procWait_init(); + } + } else if (startMode == 7) { + local_44.set(current.pos.x + 200.0f * cM_ssin(shape_angle.y), 150.0f + current.pos.y, + current.pos.z + 200.0f * cM_scos(shape_angle.y)); + dComIfGs_setRestartRoom(local_44, shape_angle.y, getStartRoomNo()); + procVomitJump_init(1); + mAcch.ClrGroundHit(); + } else if (startMode == 0xd) { + procSmallJump_init(1); + } else if (startMode == 0xf) { + procSlowFall_init(); + } else if (startMode == 0xe) { + mDemo.setDemoType(4); + mDemo.setDemoMode(daPy_demo_c::DEMO_UNK01_e); + procWait_init(); + csXyz auStack_58(0, 0, 0); + fpc_ProcID fVar11 = fopAcM_createChild(PROC_FM, fopAcM_GetID(this), 0, ¤t.pos, + fopAcM_GetRoomNo(this), &auStack_58, NULL, 0xFF, 0); + if (fVar11 != fpcM_ERROR_PROCESS_ID_e) { + onNoResetFlg0(daPyFlg0_NO_DRAW); + } + } else if (changeSwimProc()) { + procSwimWait_init(0); + m34C2 = 0; + } else if (current.pos.y - mAcch.GetGroundH() > 30.1f) { + procFall_init(1, 0.0f); + } else { + procWait_init(); + } + m_old_fdata->initOldFrameMorf(0.0f, 0, 0x2A); + setWorldMatrix(); + mpCLModelData->getJointNodePointer(0)->setMtxCalc(m_pbCalc[PART_UNDER_e]); + mpCLModelData->getJointNodePointer(0x02)->setMtxCalc(m_pbCalc[PART_UPPER_e]); + mpCLModelData->getJointNodePointer(0x1D)->setMtxCalc(m_pbCalc[PART_UNDER_e]); + checkOriginalHatAnimation(); + animeUpdate(); + mpCLModel->calc(); + mpKatsuraModel->setBaseTRMtx(mpCLModel->getAnmMtx(0xF)); + mpKatsuraModel->calc(); + mpYamuModel->setBaseTRMtx(mpCLModel->getAnmMtx(0xF)); + mpYamuModel->calc(); + setItemModel(); + mCyl.SetC(current.pos); + setAttentionPos(); + m3580 = dComIfG_Bgsp()->GetGroundCode(mAcch.m_gnd); + m357C = m3580; + if (sceneMode == 4) { + mDoMtx_multVecZero(mpCLModel->getAnmMtx(0), &local_50); + dComIfGp_particle_setP1(dPa_name::ID_SCENE_8089, &local_50); + } + if ((dComIfGs_getLastSceneMode() & 0x8000) != 0) { + changeDragonShield(0); + } else { + mTinkleShieldTimer = (s16)(dComIfGs_getLastSceneMode() >> 0x10); + } + if ((dComIfGs_getLastSceneMode() & 0x4000) != 0) { + onNoResetFlg1(daPyFlg1_UNK8000); + } + l_debug_keep_pos = current.pos; + l_debug_shape_angle = shape_angle; + l_debug_current_angle = current.angle; return cPhs_NEXT_e; } @@ -9919,8 +12660,74 @@ void daPy_lk_c::resetSeAnime() { } /* 80127E08-8012821C .text setMoveAnime__9daPy_lk_cFfffQ29daPy_lk_c8daPy_ANMQ29daPy_lk_c8daPy_ANMif */ -void daPy_lk_c::setMoveAnime(f32, f32, f32, daPy_ANM, daPy_ANM, int, f32) { - /* Nonmatching */ +int daPy_lk_c::setMoveAnime(f32 f27, f32 f28, f32 f25, daPy_ANM r27, daPy_ANM r28, int r29, f32 f29) { + J3DAnmTransform* r3 = mAnmRatioUnder[UNDER_MOVE0_e].getAnmTransform(); + J3DFrameCtrl& frameCtrl0 = mFrameCtrlUnder[UNDER_MOVE0_e]; + J3DFrameCtrl& frameCtrl1 = mFrameCtrlUnder[UNDER_MOVE1_e]; + f32 f31; + if (((m34C3 == 0) || (m34C3 == 9)) || (m34C3 == 10)) { + f31 = 0.0f; + } else { + f31 = r3->getFrame() / r3->getFrameMax(); + } + const daPy_anmIndex_c* r25 = getAnmData(r27); + const daPy_anmIndex_c* r24 = getAnmData(r28); + J3DAnmTransform* sp14; + J3DAnmTransform* sp10; + getUnderUpperAnime(r25, &sp14, &sp10, 0, 0x2400); + J3DAnmTransform* sp0C; + J3DAnmTransform* sp08; + getUnderUpperAnime(r24, &sp0C, &sp08, 1, 0x2400); + mAnmRatioUnder[UNDER_MOVE0_e].setRatio(1.0f - f27); + mAnmRatioUnder[UNDER_MOVE1_e].setRatio(f27); + mAnmRatioUpper[UPPER_MOVE0_e].setRatio(1.0f - f27); + mAnmRatioUpper[UPPER_MOVE1_e].setRatio(f27); + f32 f3 = sp14->getFrameMax(); + f32 f26 = sp0C->getFrameMax(); + f32 f30 = 1.0f / f3; + f27 = (f28 + (f27 * (((f25 * f3) / f26) - f28))); + setFrameCtrl(&frameCtrl0, sp14->getAttribute(), 0, f3, f27, (f31 * f3)); + sp14->setFrame(frameCtrl0.getFrame()); + setFrameCtrl(&frameCtrl1, sp0C->getAttribute(), 0, f26, (f30 * (f27 * f26)), + (f31 * f26)); + sp0C->setFrame(frameCtrl1.getFrame()); + mAnmRatioUnder[UNDER_MOVE0_e].setAnmTransform(sp14); + mAnmRatioUnder[UNDER_MOVE1_e].setAnmTransform(sp0C); + if (sp10 != NULL) { + f32 f2 = sp10->getFrameMax(); + mAnmRatioUpper[UPPER_MOVE0_e].setAnmTransform(sp10); + setFrameCtrl(&mFrameCtrlUpper[UPPER_MOVE0_e], sp10->getAttribute(), 0, f2, + (f30 * (f27 * f2)), (f31 * f2)); + sp10->setFrame(mFrameCtrlUpper[UPPER_MOVE0_e].getFrame()); + } else { + mAnmRatioUpper[UPPER_MOVE0_e].setAnmTransform(sp14); + } + if (sp08 != NULL) { + f32 f2 = sp08->getFrameMax(); + mAnmRatioUpper[UPPER_MOVE1_e].setAnmTransform(sp08); + setFrameCtrl(&mFrameCtrlUpper[UPPER_MOVE1_e], sp08->getAttribute(), 0, f2, + (f30 * (f27 * f2)), (f31 * f2)); + sp08->setFrame(mFrameCtrlUpper[UPPER_MOVE1_e].getFrame()); + } else { + mAnmRatioUpper[UPPER_MOVE1_e].setAnmTransform(sp0C); + } + if (f29 >= 0.0f) { + m_old_fdata->initOldFrameMorf(f29, 0, 0x2A); + } + if ((mDirection == DIR_BACKWARD) || + ((mCurProc == daPyProc_ROPE_SWING_e && (!checkModeFlg(ModeFlg_00000400))))) + { + setTextureAnime(mAnmDataTable[r28].mTexAnmIdx, 0); + } else { + setTextureAnime(mAnmDataTable[r27].mTexAnmIdx, 0); + } + if ((r29 == 5) || (r29 == 2)) { + setSeAnime(&m_anm_heap_under[UNDER_MOVE0_e], &frameCtrl0); + } else { + setSeAnime(&m_anm_heap_under[UNDER_MOVE1_e], &frameCtrl1); + } + m34C3 = r29; + return true; } /* 8012821C-80128494 .text setSingleMoveAnime__9daPy_lk_cFQ29daPy_lk_c8daPy_ANMffsf */ @@ -10060,7 +12867,6 @@ void daPy_lk_c::simpleAnmPlay(J3DAnmBase* i_anm) { } } i_anm->setFrame(frame); - return; } /* 8012887C-801288A0 .text setHandModel__9daPy_lk_cFQ29daPy_lk_c8daPy_ANM */ @@ -10156,7 +12962,6 @@ void daPy_lk_c::setPlayerPosAndAngle(cXyz* param_1, s16 param_2) { l_debug_keep_pos = current.pos; l_debug_shape_angle = shape_angle; l_debug_current_angle = current.angle; - return; } /* 80128C10-80128CE4 .text setPlayerPosAndAngle__9daPy_lk_cFP4cXyzP5csXyz */ @@ -10176,7 +12981,6 @@ void daPy_lk_c::setPlayerPosAndAngle(cXyz* param_1, csXyz* param_2) { l_debug_keep_pos = current.pos; l_debug_shape_angle = shape_angle; l_debug_current_angle = current.angle; - return; } /* 80128CE4-80128DC0 .text setPlayerPosAndAngle__9daPy_lk_cFPA4_f */ @@ -10193,19 +12997,17 @@ void daPy_lk_c::setPlayerPosAndAngle(MtxP param_1) { l_debug_shape_angle = shape_angle; l_debug_current_angle = current.angle; } - return; } /* 80128DC0-80128F8C .text endDemoMode__9daPy_lk_cFv */ void daPy_lk_c::endDemoMode() { - /* Nonmatching - missing clrlwi instruction */ if (mCurProc != daPyProc_LARGE_DAMAGE_e) { current.angle.y = shape_angle.y; } offNoResetFlg0(daPyFlg0_UNK100000); dComIfGp_clearPlayerStatus0(0, daPyStts0_UNK10_e); mDemo.setDemoType(0); - mDemo.setDemoMode(0); + mDemo.setDemoMode(daPy_demo_c::DEMO_UNK00_e); mDemo.setParam0(0); mDemo.setParam1(0); mDemo.setStick(1.0f); @@ -10230,25 +13032,23 @@ void daPy_lk_c::endDemoMode() { return; } if (dComIfGp_checkPlayerStatus0(0, daPyStts0_SHIP_RIDE_e)) { - if (dComIfGp_getShipActor() == NULL) { + daShip_c* ship = (daShip_c*)dComIfGp_getShipActor(); + if (ship == NULL) { checkNextMode(0); } else if (daPy_getPlayerActorClass() != this) { procControllWait_init(); - } else if (dComIfGp_getShipActor()->getPart() == daShip_c::PART_CANNON_e) { + } else if (ship->getPart() == daShip_c::PART_CANNON_e) { procShipCannon_init(); - } else if (dComIfGp_getShipActor()->getPart() == daShip_c::PART_CRANE_e) { + } else if (ship->getPart() == daShip_c::PART_CRANE_e) { procShipCrane_init(); - } else if (dComIfGp_getShipActor()->getPart() == daShip_c::PART_STEER_e) { + } else if (ship->getPart() == daShip_c::PART_STEER_e) { procShipSteer_init(); } else { procShipPaddle_init(); } - } else { - if (mCurProc == daPyProc_DEMO_BOSS_WARP_e) { - procWait_init(); - } + } else if (mCurProc == daPyProc_DEMO_BOSS_WARP_e) { + procWait_init(); } - return; } /* 80128F8C-8012901C .text getBokoFlamePos__9daPy_lk_cFP4cXyz */ diff --git a/src/d/actor/d_a_player_main_data.inc b/src/d/actor/d_a_player_main_data.inc index bf0fa9cf3..36614b807 100644 --- a/src/d/actor/d_a_player_main_data.inc +++ b/src/d/actor/d_a_player_main_data.inc @@ -2,7 +2,7 @@ #include "d/actor/d_a_player_main.h" #include "d/actor/d_a_player_main_data.h" -#include "weak_data_1811.h" // IWYU pragma: keep +#include "weak_data_2100_2080.h" // IWYU pragma: keep char l_arcName[] = "Link"; diff --git a/src/d/actor/d_a_player_npc.cpp b/src/d/actor/d_a_player_npc.cpp index 19da6988b..b6d819005 100644 --- a/src/d/actor/d_a_player_npc.cpp +++ b/src/d/actor/d_a_player_npc.cpp @@ -15,16 +15,14 @@ int daPy_npc_c::check_initialRoom() { mAcch.CrrPos(*dComIfG_Bgsp()); if (mAcch.GetGroundH() == C_BG_MIN_HEIGHT || dComIfG_Bgsp()->GetGroundCode(mAcch.m_gnd) == 4) { return 0; - } else { - int roomNo = dComIfG_Bgsp()->GetRoomId(mAcch.m_gnd); - if (roomNo < 0 || !dComIfGp_roomControl_checkStatusFlag(roomNo, 0x10)) { - return 0; - } else { - fopAcM_SetHomeRoomNo(this, roomNo); - fopAcM_SetRoomNo(this, roomNo); - return -1; - } } + int roomNo = dComIfG_Bgsp()->GetRoomId(mAcch.m_gnd); + if (roomNo < 0 || !dComIfGp_roomControl_checkStatusFlag(roomNo, 0x10)) { + return 0; + } + fopAcM_SetHomeRoomNo(this, roomNo); + fopAcM_SetRoomNo(this, roomNo); + return -1; } return 1; } diff --git a/src/d/actor/d_a_player_rope.inc b/src/d/actor/d_a_player_rope.inc index 8d79689aa..5afa9b6a3 100644 --- a/src/d/actor/d_a_player_rope.inc +++ b/src/d/actor/d_a_player_rope.inc @@ -58,7 +58,7 @@ int daPy_lk_c::changeRopeSwingProc() { if (mCyl.ChkCoHit() != 0) { fopAc_ac_c* pfVar2 = mCyl.GetCoHitAc(); if ((pfVar2 != NULL) && (fopAcM_GetName(pfVar2) == PROC_HIMO3)) { - cXyz local_24 = (pfVar2->current.pos - current.pos); + cXyz local_24 = pfVar2->current.pos - current.pos; if ((local_24.abs() - 95.0f >= 100.0f) && (pfVar2->current.pos.y > current.pos.y)) { return procRopeSwing_init(pfVar2, 0x1800); } @@ -109,16 +109,15 @@ int daPy_lk_c::changeRopeToHangProc() { mLinkLinChk.Set(&local_1c, &local_28, this); if (!dComIfG_Bgsp()->LineCross(&mLinkLinChk)) { return false; + } + cM3dGPla* pfVar4 = dComIfG_Bgsp()->GetTriPla(mLinkLinChk); + s16 iVar5 = cM_atan2s(pfVar4->GetNP()->x, pfVar4->GetNP()->z); + if (cLib_distanceAngleS(iVar5, shape_angle.y + 0x8000) > 0x2000) { + return false; } else { - cM3dGPla* pfVar4 = dComIfG_Bgsp()->GetTriPla(mLinkLinChk); - s16 iVar5 = cM_atan2s(pfVar4->GetNP()->x, pfVar4->GetNP()->z); - if (cLib_distanceAngleS(iVar5, shape_angle.y + 0x8000) > 0x2000) { - return false; - } else { - m352C = iVar5; - procRopeUpHang_init(); - return true; - } + m352C = iVar5; + procRopeUpHang_init(); + return true; } } @@ -274,7 +273,8 @@ BOOL daPy_lk_c::checkNextActionRopeReady() { u32 uVar2 = fopAcM_GetParam(rope); if (uVar2 == 2) { return procRopeReady_init(); - } else if (uVar2 == 0) { + } + if (uVar2 == 0) { if (checkUpperAnime(LKANM_BCK_ROPETHROW)) { if (mFrameCtrlUpper[UPPER_MOVE2_e].getRate() < 0.01f) { return procRopeThrowCatch_init(); @@ -465,7 +465,7 @@ BOOL daPy_lk_c::procRopeReady() { mRopePos = mActorKeepEquip.getActor()->current.pos; m370C.x = mRopePos.x; m370C.z = mRopePos.z; - cXyz local_48 = (m370C - current.pos); + cXyz local_48 = m370C - current.pos; f32 dVar5 = local_48.abs(); cLib_chaseF(&m35A0, 50.0f, 5.0f); shape_angle.x = (0.025f * (m34D4 * m35A0)); @@ -493,7 +493,7 @@ BOOL daPy_lk_c::procRopeSwing_init(fopAc_ac_c* param_0, s16 param_1) { fopAcM_SetParam(param_0, 1); deleteEquipItem(TRUE); mEquipItem = dItem_GRAPPLING_HOOK_e; - local_84 = (param_0->current.pos - current.pos); + local_84 = param_0->current.pos - current.pos; dVar8 = (local_84.abs() - 95.0f); dVar9 = ((himo2_class*)param_0)->field_0x15F8.y; if (dVar8 > dVar9) { @@ -505,11 +505,11 @@ BOOL daPy_lk_c::procRopeSwing_init(fopAc_ac_c* param_0, s16 param_1) { } else { param_0 = mActorKeepRope.getActor(); } - local_84 = (param_0->current.pos - current.pos); + local_84 = param_0->current.pos - current.pos; m35A0 = local_84.abs(); f32 dVar11 = std::sqrtf(2.0f / m35A0); m35A4 = dVar11; - dVar11 = (M_PI / 2 / m35A4); + dVar11 = M_PI / 2 / m35A4; if (pfVar7 != NULL) { m34D4 = daPy_HIO_rope_c0::m.field_0x0; if (checkSpecialRope()) { @@ -530,7 +530,7 @@ BOOL daPy_lk_c::procRopeSwing_init(fopAc_ac_c* param_0, s16 param_1) { dVar8 = ((f32)sVar4 / m34D4); dVar9 = std::sqrtf(1.0f - (dVar8 * dVar8)); dVar8 = cM_atan2f(dVar8, dVar9); - m35A8 = (dVar8 / m35A4); + m35A8 = dVar8 / m35A4; dVar8 = std::sqrtf(local_78.y * local_78.y + local_78.z * local_78.z); m34D6 = cM_atan2s(-local_78.x, dVar8); if (m34D6 > 0) { @@ -585,8 +585,8 @@ BOOL daPy_lk_c::procRopeSwing() { fopAc_ac_c* rope = mActorKeepRope.getActor(); mRopePos = rope->current.pos; dComIfGp_setRStatus(dActStts_STOP_e); - f32 f30 = (m35A8 * m35A4); - f32 dVar13 = (m35AC * m35A4); + f32 f30 = m35A8 * m35A4; + f32 dVar13 = m35AC * m35A4; mDoMtx_stack_c::ZrotS(-shape_angle.z); mDoMtx_stack_c::XrotM(-shape_angle.x); mDoMtx_stack_c::YrotM(-shape_angle.y); @@ -622,14 +622,14 @@ BOOL daPy_lk_c::procRopeSwing() { m35A8 = m35A8 + (dVar11 + f30); m35AC = m35AC + (dVar11 + dVar13); f32 sp0C = m35A8 * m35A4; - f30 = (m35AC * m35A4); + f30 = m35AC * m35A4; if (sp0C >= M_PI) { sp0C = sp0C - M_PI * 2; m35A8 = sp0C / m35A4; } if (f30 >= M_PI) { - f30 = (f30 - M_PI * 2); - m35AC = (f30 / m35A4); + f30 = f30 - M_PI * 2; + m35AC = f30 / m35A4; } if ((checkModeFlg(ModeFlg_00000400)) && (mFrameCtrlUnder[UNDER_MOVE0_e].getRate() < 0.01f)) { offModeFlg(ModeFlg_00000400); @@ -680,11 +680,7 @@ BOOL daPy_lk_c::procRopeSwing() { cLib_addCalcAngleS(&shape_angle.x, r28_2, 8, 0xc00, 0x100); dVar13 = cM_fcos(f30); cLib_addCalcAngleS( - &shape_angle.z, - m34D6 * cM_fsin(f30 - 1.0995574f), - 8, - 0x400 + (0x800 * dVar13), - 0x80 + (0x80 * dVar13) + &shape_angle.z, m34D6 * cM_fsin(f30 - 1.0995574f), 8, 0x400 + (0x800 * dVar13), 0x80 + (0x80 * dVar13) ); cXyz sp1C(0.0f, -m35A0, 0.0f); mDoMtx_stack_c::transS(mRopePos.x, mRopePos.y, mRopePos.z); @@ -754,9 +750,8 @@ BOOL daPy_lk_c::procRopeHangWait_init(int param_0) { /* 801457FC-80145B38 .text procRopeHangWait__9daPy_lk_cFv */ BOOL daPy_lk_c::procRopeHangWait() { - /* Nonmatching */ - bool bVar1; - s16 unaff_r29; + BOOL r30; + s16 r29; float dVar4; dComIfGp_setRStatus(dActStts_STOP_e); @@ -767,72 +762,80 @@ BOOL daPy_lk_c::procRopeHangWait() { return true; } if (!changeRopeEndProc(1)) { - bVar1 = false; + r30 = false; fopAc_ac_c* rope = mActorKeepRope.getActor(); mRopePos = rope->current.pos; current.pos.x = mRopePos.x; current.pos.z = mRopePos.z; - s16 r30 = 0; if (mStickDistance > 0.05f) { int direction = getDirectionFromAngle(m34DC); if (spActionButton()) { if (direction == DIR_FORWARD) { if (abs((int)m34D4) <= 0x80) { procRopeUp_init(); + } else { + r30 = true; + r29 = 0; } - bVar1 = true; - unaff_r29 = 0; } else if (direction == DIR_BACKWARD) { if (abs((int)m34D4) <= 0x80) { procRopeDown_init(); - } - bVar1 = true; - unaff_r29 = 0; - } else if (direction == DIR_LEFT) { - s16 r5 = 512.0f * mStickDistance; - if (r5 > m34D4) { - s16 r0 = 64.0f * mStickDistance; - m34D4 += r0; - if (m34D4 > r5) { - m34D4 = r5; - } - unaff_r29 = m34D4; } else { - unaff_r29 = r5; + r30 = true; + r29 = 0; } - } else { // DIR_RIGHT - s16 r5 = -512.0f * mStickDistance; - if (r5 < m34D4) { - s16 r0 = 64.0f * mStickDistance; - m34D4 -= r0; - if (m34D4 < r5) { - m34D4 = r5; + } else { + if (direction == DIR_LEFT) { + s16 r5 = 512.0f * mStickDistance; + if (r5 > m34D4) { + s16 r0 = 64.0f * mStickDistance; + m34D4 += r0; + if (m34D4 > r5) { + m34D4 = r5; + } + r29 = m34D4; + } else { + r29 = r5; + } + } else { // DIR_RIGHT + s16 r5 = -512.0f * mStickDistance; + if (r5 < m34D4) { + s16 r0 = 64.0f * mStickDistance; + m34D4 -= r0; + if (m34D4 < r5) { + m34D4 = r5; + } + r29 = m34D4; + } else { + r29 = r5; } - unaff_r29 = m34D4; - } else { - unaff_r29 = r5; } - } - bVar1 = true; - if (m34D0 != -1) { - m34D0 = -1; - setSingleMoveAnime( - ANM_ROPEWAIT, daPy_HIO_rope_c0::m.field_0x24, 0.0f, -1, daPy_HIO_rope_c0::m.field_0x2C - ); + r30 = true; + if (m34D0 != -1) { + m34D0 = -1; + setSingleMoveAnime( + ANM_ROPEWAIT, daPy_HIO_rope_c0::m.field_0x24, 0.0f, -1, daPy_HIO_rope_c0::m.field_0x2C + ); + } } } else if ((direction == DIR_FORWARD) || (direction == DIR_BACKWARD)) { procRopeSwingStart_init(); + } else { + r29 = 0; + r30 = true; } - unaff_r29 = 0; - bVar1 = true; - } else if (m34D0 == 0) { - m34D0 = -1; - setSingleMoveAnime(ANM_ROPEWAIT, daPy_HIO_rope_c0::m.field_0x24, 0.0f, -1, daPy_HIO_rope_c0::m.field_0x2C); + } else { + if (m34D0 == 0) { + m34D0 = -1; + setSingleMoveAnime( + ANM_ROPEWAIT, daPy_HIO_rope_c0::m.field_0x24, 0.0f, -1, daPy_HIO_rope_c0::m.field_0x2C + ); + } + r29 = 0; + r30 = true; } - unaff_r29 = 0; - bVar1 = true; - if (bVar1) { - cLib_addCalcAngleS(&m34D4, unaff_r29, 3, 0x40, 0x10); + if (r30) { + cLib_addCalcAngleS(&m34D4, r29, 3, 0x40, 0x10); if (m34D4 > 0) { dVar4 = checkRopeRoofHit(shape_angle.y + 0x2000); } else { @@ -879,11 +882,11 @@ BOOL daPy_lk_c::procRopeUp_init() { mProcVar0.m3570 = 0; f32 dVar4; if (checkBossGomaStage()) { - dVar4 = (mRopePos.y - 200.0f); + dVar4 = mRopePos.y - 200.0f; } else { - dVar4 = (mRopePos.y - 100.0f); + dVar4 = mRopePos.y - 100.0f; f32 dVar5 = checkRopeRoofHit(shape_angle.y); - dVar5 = (dVar5 - 60.0f); + dVar5 = dVar5 - 60.0f; if (dVar5 < dVar4) { dVar4 = dVar5; } else if ((fopAcM_GetName(rope)) == PROC_HIMO2 || (checkSpecialRope())) { @@ -893,12 +896,10 @@ BOOL daPy_lk_c::procRopeUp_init() { if (dVar4 <= current.pos.y) { if (specialRopeHangUp()) { return true; + } else if (changeRopeToHangProc()) { + return true; } else { - if (changeRopeToHangProc()) { - return true; - } else { - return procRopeHangWait_init(0); - } + return procRopeHangWait_init(0); } } else { commonProcInit(daPyProc_ROPE_UP_e); diff --git a/src/d/actor/d_a_player_swim.inc b/src/d/actor/d_a_player_swim.inc index 54fcd2a88..ea4d0e7ba 100644 --- a/src/d/actor/d_a_player_swim.inc +++ b/src/d/actor/d_a_player_swim.inc @@ -231,7 +231,7 @@ BOOL daPy_lk_c::changeSwimOutProc() { return procFall_init(1, daPy_HIO_wallCatch_c0::m.field_0x54); } - if (!checkNoResetFlg0(daPyFlg0_UNK80) || (pcVar1 && pcVar1->mNormal.y >= 0.5f && m35D0 - mAcch.GetGroundH() < daPy_HIO_swim_c0::m.field_0x24 - 5.0f)) { + if (!checkNoResetFlg0(daPyFlg0_UNK80) || (pcVar1 && cBgW_CheckBGround(pcVar1->GetNP()->y) && m35D0 - mAcch.GetGroundH() < daPy_HIO_swim_c0::m.field_0x24 - 5.0f)) { current.pos.y = m35D0; if (mCurProc == daPyProc_SWIM_MOVE_e && mDirection != DIR_FORWARD) { diff --git a/src/d/actor/d_a_player_sword.inc b/src/d/actor/d_a_player_sword.inc index e4ce847e9..8d3b24809 100644 --- a/src/d/actor/d_a_player_sword.inc +++ b/src/d/actor/d_a_player_sword.inc @@ -458,7 +458,7 @@ int daPy_lk_c::changeCutReverseProc(daPy_ANM param_0) { mLinkLinChk.Set(&local_24, &mSwordTopPos, this); if (dComIfG_Bgsp()->LineCross(&mLinkLinChk)) { cM3dGPla* triPla = dComIfG_Bgsp()->GetTriPla(mLinkLinChk); - if (!(triPla->GetNP()->y >= 0.5f) || + if (!cBgW_CheckBGround(triPla->GetNP()->y) || (mCurProc == daPyProc_HAMMER_FRONT_SWING_e && triPla->GetNP()->y < 0.64278764f)) { if (mEquipItem != dItem_DEKU_LEAF_e) { @@ -1454,13 +1454,13 @@ BOOL daPy_lk_c::procCutTurn() { } if (frameCtrl.checkPass(daPy_HIO_cutTurn_c0::m.field_0x34)) { - m331C.field_0x4 = 0x80; - m332C.field_0x4 = 0x80; - m333C.field_0x4 = 0x80; - } else if (m331C.field_0x4 == 0x80) { - m331C.field_0x4 = 0; - m332C.field_0x4 = 0; - m333C.field_0x4 = 0; + m331C.setAlpha(0x80); + m332C.setAlpha(0x80); + m333C.setAlpha(0x80); + } else if (m331C.getAlpha() == 0x80) { + m331C.setAlpha(0x00); + m332C.setAlpha(0x00); + m333C.setAlpha(0x00); } m34C2 = 1; return true; diff --git a/src/d/actor/d_a_player_whide.inc b/src/d/actor/d_a_player_whide.inc index 8aff325ae..16762518a 100644 --- a/src/d/actor/d_a_player_whide.inc +++ b/src/d/actor/d_a_player_whide.inc @@ -99,7 +99,7 @@ cM3dGPla* daPy_lk_c::getWHideModePolygon(cXyz* param_0, cXyz* param_1, cXyz* par local_3c.z = param_2->z + cM_ssin(uVar3) * daPy_HIO_wall_c0::m.field_0x50; mGndChk.SetPos(&local_3c); float f31 = bgs->GroundCross(&mGndChk); - if (C_BG_MIN_HEIGHT != f31 && (!(bgs->GetTriPla(mGndChk)->GetNP()->y >= 0.5f))) { + if (C_BG_MIN_HEIGHT != f31 && (!cBgW_CheckBGround(bgs->GetTriPla(mGndChk)->GetNP()->y))) { return NULL; } @@ -350,7 +350,6 @@ BOOL daPy_lk_c::procWHideWait_init() { /* 80137DF0-80138074 .text procWHideWait__9daPy_lk_cFv */ BOOL daPy_lk_c::procWHideWait() { - cXyz cStack_24; cXyz cStack_3c; cXyz cStack_48; @@ -385,7 +384,7 @@ BOOL daPy_lk_c::procWHideWait() { } if (mStickDistance > 0.05f && C_BG_MIN_HEIGHT != mAcch.GetGroundH() && - dComIfG_Bgsp()->GetTriPla(mAcch.m_gnd)->GetNP()->y >= 0.5f) + cBgW_CheckBGround(dComIfG_Bgsp()->GetTriPla(mAcch.m_gnd)->GetNP()->y)) { int direction = getDirectionFromCurrentAngle(); if (direction == DIR_RIGHT || direction == DIR_LEFT) { @@ -453,7 +452,7 @@ BOOL daPy_lk_c::procWHideMove() { if (checkWHideModeChange(&acStack_24) != 0) { fVar2 = 0.0f; } else if (mStickDistance > 0.05f && C_BG_MIN_HEIGHT != mAcch.GetGroundH() && - dComIfG_Bgsp()->GetTriPla(mAcch.m_gnd)->GetNP()->y >= 0.5f) + cBgW_CheckBGround(dComIfG_Bgsp()->GetTriPla(mAcch.m_gnd)->GetNP()->y)) { int direction = getDirectionFromCurrentAngle(); if (direction == DIR_BACKWARD) { @@ -492,7 +491,7 @@ BOOL daPy_lk_c::procWHideMove() { if (std::fabsf(mVelocity) <= 0.001f) { return procWHideWait_init(); } - if (mAcch.GetGroundH() == C_BG_MIN_HEIGHT || !(dComIfG_Bgsp()->GetTriPla(mAcch.m_gnd)->GetNP()->y >= 0.5f) || + if (mAcch.GetGroundH() == C_BG_MIN_HEIGHT || !cBgW_CheckBGround(dComIfG_Bgsp()->GetTriPla(mAcch.m_gnd)->GetNP()->y) || !checkWHideBackWall(&cStack_30)) { mVelocity = 0.0f; diff --git a/src/d/actor/d_a_pw.cpp b/src/d/actor/d_a_pw.cpp index b941743ec..6056148a8 100644 --- a/src/d/actor/d_a_pw.cpp +++ b/src/d/actor/d_a_pw.cpp @@ -174,11 +174,11 @@ void action_dousa(pw_class* i_this) { daPy_py_c* player = daPy_getPlayerActorClass(); camera_class* camera = dComIfGp_getCamera(0); cXyz camfwd; - switch (i_this->mState) { + switch (i_this->mMode) { case 0: anm_init(i_this, PW_BCK_WAIT1, 7.0, J3DFrameCtrl::EMode_LOOP, 1.0, -1); i_this->m346 = 0; - i_this->mState += 1; + i_this->mMode += 1; break; case 1: if (fopAcM_searchPlayerDistance(i_this) < 500.0f) { @@ -188,7 +188,7 @@ void action_dousa(pw_class* i_this) { i_this->shape_angle.y = i_this->m38C; i_this->m3A4 = -80.0f; i_this->m340 = 1; - i_this->mState += 1; + i_this->mMode += 1; } break; case 2: @@ -207,13 +207,13 @@ void action_dousa(pw_class* i_this) { particle->setGlobalRTMatrix(i_this->mpMorf->getModel()->getAnmMtx(0x17)); // j_pw_item_r1 joint } i_this->attention_info.flags = 0; - i_this->mState = 0x0A; + i_this->mMode = 0x0A; } break; case 9: i_this->m39A = 0; i_this->m39C = 0; - i_this->mState += 1; + i_this->mMode += 1; // Fall-through case 10: if (i_this->mBehaviorType == InvisibleAtStart) { @@ -224,15 +224,15 @@ void action_dousa(pw_class* i_this) { i_this->m382 = 5; switch (i_this->mBehaviorType) { case InvisibleAtStart: - i_this->mState = 0xB; + i_this->mMode = 0xB; break; case OnlyLanternVisibleAtStart: i_this->m341 = 2; - i_this->mState = 8; + i_this->mMode = 8; break; default: i_this->m346 = 1; - i_this->mState = 0xD; + i_this->mMode = 0xD; break; } } @@ -256,7 +256,7 @@ void action_dousa(pw_class* i_this) { first_mode_change(i_this); i_this->m382 = 3; i_this->m346 = 1; - i_this->mState = 0xD; + i_this->mMode = 0xD; } } break; @@ -269,7 +269,7 @@ void action_dousa(pw_class* i_this) { i_this->mBehaviorType = VisibleFromStart; i_this->m346 = 1; first_mode_change(i_this); - i_this->mState = 0xD; + i_this->mMode = 0xD; } break; case 7: @@ -278,7 +278,7 @@ void action_dousa(pw_class* i_this) { i_this->current.angle.y = i_this->m38C; i_this->shape_angle.y = i_this->m38C; anm_init(i_this, PW_BCK_DERUB2, 3.0f, J3DFrameCtrl::EMode_NONE, 1.0f, -1); - i_this->mState = 6; + i_this->mMode = 6; } break; case 8: @@ -286,7 +286,7 @@ void action_dousa(pw_class* i_this) { i_this->m346 = 1; if (fopAcM_searchPlayerDistance(i_this) < i_this->m3AC) { anm_init(i_this, PW_BCK_DERUB1, 3.0f, J3DFrameCtrl::EMode_LOOP, 1.0f, -1); - i_this->mState = 7; + i_this->mMode = 7; } break; case 13: @@ -301,14 +301,14 @@ void action_dousa(pw_class* i_this) { } else if (i_this->mBckIdx != PW_BCK_WAIT2) { anm_init(i_this, PW_BCK_WAIT2, 7.0f, J3DFrameCtrl::EMode_LOOP, 1.0f, -1); } - i_this->mState += 1; + i_this->mMode += 1; // Fall-through case 14: cLib_addCalc0(&i_this->speedF, 1.0f, 1.0f); if (i_this->m378) { break; } - i_this->mState += 1; + i_this->mMode += 1; // Fall-through case 15: i_this->m378 = cM_rndF(120.0f) + 120.0f; @@ -323,9 +323,9 @@ void action_dousa(pw_class* i_this) { } i_this->m38C += (s16)cM_rndFX(16384.0f); if (i_this->mPathIndex != 0xFF && i_this->mpPath != NULL) { - i_this->mState = 0x14; + i_this->mMode = 0x14; } else { - i_this->mState = 0x10; + i_this->mMode = 0x10; } break; case 16: @@ -335,7 +335,7 @@ void action_dousa(pw_class* i_this) { if (Line_check(i_this, i_this->current.pos, 0) || hani_check(i_this)) { i_this->m37A = 10; } else if (i_this->m378 == 0) { - i_this->mState = 0xF; + i_this->mMode = 0xF; } } break; @@ -361,14 +361,14 @@ void action_dousa(pw_class* i_this) { i_this->m38C = fopAcM_searchPlayerAngleY(i_this); anm_init(i_this, PW_BCK_DAMAGE_K1, 9.0f, J3DFrameCtrl::EMode_NONE, 1.0f, -1); i_this->speedF = -2.0f; - i_this->mState += 1; + i_this->mMode += 1; break; case 26: break; case 27: case 28: if (!fopAcM_CheckStatus(i_this, fopAcStts_HOOK_CARRY_e)) { - i_this->mState = 0x5A; + i_this->mMode = 0x5A; } break; case 101: @@ -385,12 +385,12 @@ void action_dousa(pw_class* i_this) { break; case 100: anm_init(i_this, PW_BCK_JITTAIKA1, 6.0f, J3DFrameCtrl::EMode_NONE, 1.0f, -1); - i_this->mState += 1; + i_this->mMode += 1; break; case 110: anm_init(i_this, PW_BCK_ATTACK1, 7.0f, J3DFrameCtrl::EMode_LOOP, 1.0f, -1); // TODO - i_this->mState += 1; + i_this->mMode += 1; break; case 111: if (i_this->m5C4.getEmitter() != NULL) { @@ -404,30 +404,30 @@ void action_dousa(pw_class* i_this) { i_this->speed.setall(0.0f); i_this->gravity = 0.0f; anm_init(i_this, PW_BCK_SIRIMOTI1, 0.0f, J3DFrameCtrl::EMode_NONE, 1.0f, -1); - i_this->mState += 1; + i_this->mMode += 1; case 112: // Fall-through if (i_this->mpMorf->isStop()) { - i_this->mState = 90; + i_this->mMode = 90; } break; } - if (i_this->mState <= 11) { + if (i_this->mMode <= 11) { return; } - if (i_this->m37C == 0 && i_this->mState < 90) { - if (i_this->mState == 14 || i_this->mState == 16 || i_this->mState == 20) { + if (i_this->m37C == 0 && i_this->mMode < 90) { + if (i_this->mMode == 14 || i_this->mMode == 16 || i_this->mMode == 20) { if (!hani_check(i_this) && fopAcM_searchPlayerDistance(i_this) < 500.0f && std::fabsf(i_this->current.pos.y - player->current.pos.y) < 100.0f) { if (!Line_check(i_this, i_this->current.pos, 1) && (i_this->m346 == 1 || !TORITUKI_ON)) { i_this->mAction = 1; - i_this->mState = 30; + i_this->mMode = 30; } } } } - if (i_this->mState >= 10 && i_this->mState < 90) { + if (i_this->mMode >= 10 && i_this->mMode < 90) { alpha_anime(i_this); } diff --git a/src/d/actor/d_a_rd.cpp b/src/d/actor/d_a_rd.cpp index cc308959d..adb0886d1 100644 --- a/src/d/actor/d_a_rd.cpp +++ b/src/d/actor/d_a_rd.cpp @@ -601,7 +601,7 @@ bool daRd_c::checkTgHit() { case AT_TYPE_FIRE: case AT_TYPE_UNK20000: r29 = false; - if (mEnemyFire.mState == 0) { + if (mEnemyFire.mMode == 0) { mEnemyFire.mFireDuration = l_HIO.m4C; } else { mHitType = 0xD; @@ -800,7 +800,7 @@ void daRd_c::modeDeath() { fopAcM_SetGroup(this, fopAc_ENV_e); if (cLib_calcTimer(&mTimer1) == 0) { - fopAcM_createDisappear(this, ¤t.pos, 5); + fopAcM_createDisappear(this, ¤t.pos, 5, daDisItem_IBALL_e); fopAcM_delete(this); } } @@ -887,7 +887,7 @@ void daRd_c::modeMove() { temp = 0.1f; } f32 temp2 = l_HIO.m68; - if (mEnemyFire.mState != 0) { + if (mEnemyFire.mMode != 0) { temp2 *= 2.0f; } cLib_addCalc2(&speedF, temp2*temp, 0.1f, 0.1f + REG12_F(0)); @@ -943,7 +943,7 @@ void daRd_c::modeCry() { temp = 0.1f; } f32 temp2 = l_HIO.m68; - if (mEnemyFire.mState != 0) { + if (mEnemyFire.mMode != 0) { temp2 *= 2.0f; } cLib_addCalc2(&speedF, temp2*temp, 0.1f, 0.1f + REG12_F(0)); @@ -1592,7 +1592,7 @@ bool daRd_c::_execute() { } current.angle = shape_angle; - if (mEnemyFire.mState == 0) { // Not on fire (TODO enum) + if (mEnemyFire.mMode == 0) { // Not on fire (TODO enum) mCyl.SetAtType(0); m6D4 = l_HIO.m4E; } else { diff --git a/src/d/actor/d_a_ship.cpp b/src/d/actor/d_a_ship.cpp index e4eb43fd7..f4b012a6f 100644 --- a/src/d/actor/d_a_ship.cpp +++ b/src/d/actor/d_a_ship.cpp @@ -4252,20 +4252,20 @@ BOOL daShip_c::execute() { cyl->SetC(sp9C); dComIfG_Ccsp()->Set(cyl); if (dComIfGp_checkPlayerStatus0(0, daPyStts0_SHIP_RIDE_e)) { - cyl->SetTgGrp(cCcD_AtSPrm_VsPlayer_e); + cyl->SetTgGrp(cCcD_TgSPrm_IsPlayer_e); } else { - cyl->SetTgGrp(cCcD_AtSPrm_VsPlayer_e | cCcD_AtSPrm_VsOther_e); + cyl->SetTgGrp(cCcD_TgSPrm_IsPlayer_e | cCcD_TgSPrm_IsOther_e); } } cMtx_multVec(mpHeadAnm->getModel()->getAnmMtx(8), &sph_offset, &sp9C); if (dComIfGp_checkPlayerStatus0(0, daPyStts0_SHIP_RIDE_e)) { - mSph.SetTgGrp(cCcD_AtSPrm_VsPlayer_e); + mSph.SetTgGrp(cCcD_TgSPrm_IsPlayer_e); } else { - mSph.SetTgGrp(cCcD_AtSPrm_VsPlayer_e | cCcD_AtSPrm_VsOther_e); + mSph.SetTgGrp(cCcD_TgSPrm_IsPlayer_e | cCcD_TgSPrm_IsOther_e); } mSph.SetC(sp9C); diff --git a/src/d/d_bg_s_acch.cpp b/src/d/d_bg_s_acch.cpp index 2380ac545..65102d746 100644 --- a/src/d/d_bg_s_acch.cpp +++ b/src/d/d_bg_s_acch.cpp @@ -198,7 +198,7 @@ void dBgS_Acch::LineCheck(dBgS& i_bgs) { pm_out_poly_info->SetPolyInfo(linChk); cM3dGPla* pla = i_bgs.GetTriPla(linChk); - if (!(pla->GetNP()->y >= 0.5f)) { + if (!cBgW_CheckBGround(pla->GetNP()->y)) { VECAdd(pm_pos, pla->GetNP(), pm_pos); if (!cM3d_IsZero(std::sqrtf(pla->GetNP()->x*pla->GetNP()->x + pla->GetNP()->z*pla->GetNP()->z))) pm_acch_cir[i].SetWallHDirect(pm_pos->y); diff --git a/src/d/d_cam_param.cpp b/src/d/d_cam_param.cpp index fab43cb88..b3229efe8 100644 --- a/src/d/d_cam_param.cpp +++ b/src/d/d_cam_param.cpp @@ -104,7 +104,7 @@ BOOL dCamParam_c::Change(s32 i_styleIdx) { mpStyle = &styles[mStyleIdx]; return TRUE; } else { - mpStyle = &styles[0]; + mpStyle = &styles[dCamStyle_NN00_e]; return FALSE; } } diff --git a/src/d/d_cam_style.cpp b/src/d/d_cam_style.cpp index 8c7348377..99c51d724 100644 --- a/src/d/d_cam_style.cpp +++ b/src/d/d_cam_style.cpp @@ -11,889 +11,889 @@ const dCamera__Style dCamParam_c::styles[] = { { 'NN00', 0, - {-99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f}, + {-99999.99f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, -99999.99f}, 0, }, { 'FN08', 0x1, - {1.0f, 0.0f, -99999.992188f, 0.75f, 0.25f, 5.0f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, 450.0f, 300.0f, -99999.992188f, 0.66f, 0.05f, 25.0f, -40.0f, 60.0f, 2.0f, 0.05f, 0.2f, -99999.992188f, -99999.992188f, 1.0f, 0.2f, 55.0f, -99999.992188f, -99999.992188f, -99999.992188f, 0.05f}, - dCamParam_UNK001 | dCamParam_UNK004 | dCamParam_UNK400, + {1.0f, 0.0f, -99999.99f, 0.75f, 0.25f, 5.0f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, 450.0f, 300.0f, -99999.99f, 0.66f, 0.05f, 25.0f, -40.0f, 60.0f, 2.0f, 0.05f, 0.2f, -99999.99f, -99999.99f, 1.0f, 0.2f, 55.0f, -99999.99f, -99999.99f, -99999.99f, 0.05f}, + dCamPrmFlg_UNK001 | dCamPrmFlg_UNK004 | dCamPrmFlg_UNK400, }, { 'PN05', 0x5, - {1.0f, 0.0f, -99999.992188f, 0.75f, 0.25f, -20.0f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, 1000.0f, 50.0f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, 0.75f, 0.0f, 50.0f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f}, - dCamParam_UNK040, + {1.0f, 0.0f, -99999.99f, 0.75f, 0.25f, -20.0f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, 1000.0f, 50.0f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, 0.75f, 0.0f, 50.0f, -99999.99f, -99999.99f, -99999.99f, -99999.99f}, + dCamPrmFlg_UNK040, }, { 'PN12', 0x5, - {1.0f, 0.0f, -99999.992188f, 0.75f, 0.25f, -20.0f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, 1000.0f, 50.0f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, 0.75f, 10.0f, 50.0f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f}, - dCamParam_UNK040, + {1.0f, 0.0f, -99999.99f, 0.75f, 0.25f, -20.0f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, 1000.0f, 50.0f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, 0.75f, 10.0f, 50.0f, -99999.99f, -99999.99f, -99999.99f, -99999.99f}, + dCamPrmFlg_UNK040, }, { 'EN00', 0xB, - {-99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f}, + {-99999.99f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, -99999.99f}, 0, }, { 'FN12', 0x1, - {1.0f, 0.0f, -99999.992188f, 0.75f, 0.25f, -15.0f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, 220.0f, 180.0f, -99999.992188f, 0.66f, 0.05f, 12.0f, -40.0f, 60.0f, 2.0f, 0.08f, 1.0f, -99999.992188f, -99999.992188f, 1.0f, 0.2f, 55.0f, -99999.992188f, -99999.992188f, -99999.992188f, 0.05f}, - dCamParam_UNK001 | dCamParam_UNK004 | dCamParam_UNK400, + {1.0f, 0.0f, -99999.99f, 0.75f, 0.25f, -15.0f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, 220.0f, 180.0f, -99999.99f, 0.66f, 0.05f, 12.0f, -40.0f, 60.0f, 2.0f, 0.08f, 1.0f, -99999.99f, -99999.99f, 1.0f, 0.2f, 55.0f, -99999.99f, -99999.99f, -99999.99f, 0.05f}, + dCamPrmFlg_UNK001 | dCamPrmFlg_UNK004 | dCamPrmFlg_UNK400, }, { 'TT01', 0x3, - {0.0f, 0.0f, -99999.992188f, 0.75f, 0.0f, -40.0f, 0.0f, 0.0f, 0.0f, 0.0f, 300.0f, 80.0f, 0.0f, 0.0f, 0.0f, 10.0f, 0.0f, 0.0f, -15.0f, 35.0f, 0.0f, 0.0f, -99999.992188f, 0.0f, 30.0f, 40.0f, 45.0f, 0.0f, 0.0f, 0.0f}, - dCamParam_UNK001, + {0.0f, 0.0f, -99999.99f, 0.75f, 0.0f, -40.0f, 0.0f, 0.0f, 0.0f, 0.0f, 300.0f, 80.0f, 0.0f, 0.0f, 0.0f, 10.0f, 0.0f, 0.0f, -15.0f, 35.0f, 0.0f, 0.0f, -99999.99f, 0.0f, 30.0f, 40.0f, 45.0f, 0.0f, 0.0f, 0.0f}, + dCamPrmFlg_UNK001, }, { 'TT02', 0x3, - {0.0f, 0.0f, -99999.992188f, 0.6f, 0.0f, -30.0f, 0.0f, 0.0f, 0.0f, 0.0f, 280.0f, 80.0f, 0.0f, 0.0f, 0.0f, 10.0f, 0.0f, 0.0f, -15.0f, 40.0f, 0.0f, 0.0f, -99999.992188f, 0.0f, 30.0f, 40.0f, 45.0f, 0.0f, 0.0f, 0.0f}, - dCamParam_UNK001, + {0.0f, 0.0f, -99999.99f, 0.6f, 0.0f, -30.0f, 0.0f, 0.0f, 0.0f, 0.0f, 280.0f, 80.0f, 0.0f, 0.0f, 0.0f, 10.0f, 0.0f, 0.0f, -15.0f, 40.0f, 0.0f, 0.0f, -99999.99f, 0.0f, 30.0f, 40.0f, 45.0f, 0.0f, 0.0f, 0.0f}, + dCamPrmFlg_UNK001, }, { 'TT03', 0x3, - {0.0f, 0.0f, -99999.992188f, 0.6f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 300.0f, 80.0f, 0.0f, 0.0f, 0.0f, 10.0f, 0.0f, 0.0f, 0.0f, 40.0f, 0.0f, 0.0f, -99999.992188f, 0.0f, 30.0f, 40.0f, 45.0f, 0.0f, 0.0f, 0.0f}, - dCamParam_UNK001, + {0.0f, 0.0f, -99999.99f, 0.6f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 300.0f, 80.0f, 0.0f, 0.0f, 0.0f, 10.0f, 0.0f, 0.0f, 0.0f, 40.0f, 0.0f, 0.0f, -99999.99f, 0.0f, 30.0f, 40.0f, 45.0f, 0.0f, 0.0f, 0.0f}, + dCamPrmFlg_UNK001, }, { 'LA03', 0x2, - {-99999.992188f, -99999.992188f, -99999.992188f, 0.2f, 0.4f, 0.0f, -17.5f, 20.0f, -17.5f, 0.0f, 375.0f, 125.0f, 750.0f, 425.0f, 350.0f, 18.0f, -40.0f, 40.0f, 20.0f, 15.0f, 0.03f, 0.0f, -99999.992188f, 40.0f, 40.0f, 55.0f, 52.5f, 54.5f, 50.0f, 60.0f}, - dCamParam_UNK002 | dCamParam_UNK004, + {-99999.99f, -99999.99f, -99999.99f, 0.2f, 0.4f, 0.0f, -17.5f, 20.0f, -17.5f, 0.0f, 375.0f, 125.0f, 750.0f, 425.0f, 350.0f, 18.0f, -40.0f, 40.0f, 20.0f, 15.0f, 0.03f, 0.0f, -99999.99f, 40.0f, 40.0f, 55.0f, 52.5f, 54.5f, 50.0f, 60.0f}, + dCamPrmFlg_UNK002 | dCamPrmFlg_UNK004, }, { 'LP01', 0x2, - {-99999.992188f, -99999.992188f, -99999.992188f, 0.05f, 0.2f, -30.0f, 12.5f, 20.0f, -30.0f, -30.0f, 220.0f, 125.0f, 625.0f, 220.0f, 220.0f, 0.0f, -40.0f, 30.0f, -10.0f, 10.0f, 0.1f, 0.05f, -99999.992188f, 0.0f, 0.0f, 55.0f, 55.0f, 55.0f, 50.0f, 60.0f}, - dCamParam_UNK002 | dCamParam_UNK004, + {-99999.99f, -99999.99f, -99999.99f, 0.05f, 0.2f, -30.0f, 12.5f, 20.0f, -30.0f, -30.0f, 220.0f, 125.0f, 625.0f, 220.0f, 220.0f, 0.0f, -40.0f, 30.0f, -10.0f, 10.0f, 0.1f, 0.05f, -99999.99f, 0.0f, 0.0f, 55.0f, 55.0f, 55.0f, 50.0f, 60.0f}, + dCamPrmFlg_UNK002 | dCamPrmFlg_UNK004, }, { 'LA02', 0x2, - {-99999.992188f, -99999.992188f, -99999.992188f, 0.3f, 0.1f, -7.5f, -17.5f, 20.0f, -22.5f, -2.5f, 400.0f, 125.0f, 750.0f, 450.0f, 350.0f, 30.0f, -40.0f, 40.0f, 35.0f, 10.0f, 0.04f, 0.0f, -99999.992188f, 80.0f, 40.0f, 55.0f, 52.5f, 54.5f, 50.0f, 60.0f}, - dCamParam_UNK002 | dCamParam_UNK004, + {-99999.99f, -99999.99f, -99999.99f, 0.3f, 0.1f, -7.5f, -17.5f, 20.0f, -22.5f, -2.5f, 400.0f, 125.0f, 750.0f, 450.0f, 350.0f, 30.0f, -40.0f, 40.0f, 35.0f, 10.0f, 0.04f, 0.0f, -99999.99f, 80.0f, 40.0f, 55.0f, 52.5f, 54.5f, 50.0f, 60.0f}, + dCamPrmFlg_UNK002 | dCamPrmFlg_UNK004, }, { 'FN13', 0x2, - {-99999.992188f, -99999.992188f, -99999.992188f, 0.2f, 0.4f, 7.5f, -17.5f, 20.0f, -22.5f, -2.5f, 400.0f, 125.0f, 750.0f, 450.0f, 350.0f, 0.0f, -40.0f, 40.0f, 30.0f, -5.0f, 0.0f, 0.0f, -99999.992188f, 80.0f, 60.0f, 55.0f, 52.5f, 54.5f, 50.0f, 60.0f}, - dCamParam_UNK001 | dCamParam_UNK002, + {-99999.99f, -99999.99f, -99999.99f, 0.2f, 0.4f, 7.5f, -17.5f, 20.0f, -22.5f, -2.5f, 400.0f, 125.0f, 750.0f, 450.0f, 350.0f, 0.0f, -40.0f, 40.0f, 30.0f, -5.0f, 0.0f, 0.0f, -99999.99f, 80.0f, 60.0f, 55.0f, 52.5f, 54.5f, 50.0f, 60.0f}, + dCamPrmFlg_UNK001 | dCamPrmFlg_UNK002, }, { 'LH01', 0x2, - {-99999.992188f, -99999.992188f, -99999.992188f, 0.9f, 0.1f, -50.0f, 3.8f, 20.0f, -50.0f, -50.0f, 350.0f, 125.0f, 875.0f, 325.0f, 375.0f, 50.0f, -20.0f, 60.0f, 55.0f, 20.0f, 0.2f, 0.05f, -99999.992188f, 10.0f, 5.0f, 55.0f, 55.0f, 55.0f, 50.0f, 65.0f}, - dCamParam_UNK001 | dCamParam_UNK002, + {-99999.99f, -99999.99f, -99999.99f, 0.9f, 0.1f, -50.0f, 3.8f, 20.0f, -50.0f, -50.0f, 350.0f, 125.0f, 875.0f, 325.0f, 375.0f, 50.0f, -20.0f, 60.0f, 55.0f, 20.0f, 0.2f, 0.05f, -99999.99f, 10.0f, 5.0f, 55.0f, 55.0f, 55.0f, 50.0f, 65.0f}, + dCamPrmFlg_UNK001 | dCamPrmFlg_UNK002, }, { 'LH02', 0x2, - {-99999.992188f, -99999.992188f, -99999.992188f, 0.9f, 0.1f, -50.0f, 3.8f, 20.0f, -50.0f, -50.0f, 350.0f, 125.0f, 375.0f, 350.0f, 350.0f, 50.0f, -20.0f, 60.0f, 55.0f, 23.0f, 0.2f, 0.05f, -99999.992188f, 10.0f, 5.0f, 55.0f, 50.0f, 65.0f, 50.0f, 65.0f}, - dCamParam_UNK002, + {-99999.99f, -99999.99f, -99999.99f, 0.9f, 0.1f, -50.0f, 3.8f, 20.0f, -50.0f, -50.0f, 350.0f, 125.0f, 375.0f, 350.0f, 350.0f, 50.0f, -20.0f, 60.0f, 55.0f, 23.0f, 0.2f, 0.05f, -99999.99f, 10.0f, 5.0f, 55.0f, 50.0f, 65.0f, 50.0f, 65.0f}, + dCamPrmFlg_UNK002, }, { 'LB02', 0x2, - {-99999.992188f, -99999.992188f, -99999.992188f, 0.2f, 0.4f, -12.5f, -17.5f, 20.0f, -17.5f, -7.5f, 400.0f, 125.0f, 750.0f, 450.0f, 350.0f, 0.0f, -40.0f, 40.0f, 10.0f, -5.0f, 0.01f, 0.0f, -99999.992188f, 170.0f, 160.0f, 55.0f, 52.5f, 54.5f, 50.0f, 60.0f}, - dCamParam_UNK002 | dCamParam_UNK004, + {-99999.99f, -99999.99f, -99999.99f, 0.2f, 0.4f, -12.5f, -17.5f, 20.0f, -17.5f, -7.5f, 400.0f, 125.0f, 750.0f, 450.0f, 350.0f, 0.0f, -40.0f, 40.0f, 10.0f, -5.0f, 0.01f, 0.0f, -99999.99f, 170.0f, 160.0f, 55.0f, 52.5f, 54.5f, 50.0f, 60.0f}, + dCamPrmFlg_UNK002 | dCamPrmFlg_UNK004, }, { 'LP02', 0x2, - {-99999.992188f, -99999.992188f, -99999.992188f, 0.05f, 0.2f, -30.0f, 12.5f, 20.0f, -30.0f, -30.0f, 200.0f, 125.0f, 750.0f, 200.0f, 200.0f, 0.0f, -40.0f, 40.0f, -10.0f, 10.0f, 0.1f, 0.05f, -99999.992188f, 0.0f, 0.0f, 52.5f, 52.5f, 52.5f, 50.0f, 60.0f}, - dCamParam_UNK002 | dCamParam_UNK004, + {-99999.99f, -99999.99f, -99999.99f, 0.05f, 0.2f, -30.0f, 12.5f, 20.0f, -30.0f, -30.0f, 200.0f, 125.0f, 750.0f, 200.0f, 200.0f, 0.0f, -40.0f, 40.0f, -10.0f, 10.0f, 0.1f, 0.05f, -99999.99f, 0.0f, 0.0f, 52.5f, 52.5f, 52.5f, 50.0f, 60.0f}, + dCamPrmFlg_UNK002 | dCamPrmFlg_UNK004, }, { 'LP03', 0x2, - {-99999.992188f, -99999.992188f, -99999.992188f, 0.1f, 0.4f, -30.0f, 12.5f, 20.0f, -30.0f, -30.0f, 220.0f, 125.0f, 220.0f, 220.0f, 220.0f, 5.0f, -40.0f, 30.0f, -10.0f, 10.0f, 0.1f, 0.05f, -99999.992188f, 0.0f, 0.0f, 55.0f, 55.0f, 55.0f, 55.0f, 55.0f}, - dCamParam_UNK002 | dCamParam_UNK004, + {-99999.99f, -99999.99f, -99999.99f, 0.1f, 0.4f, -30.0f, 12.5f, 20.0f, -30.0f, -30.0f, 220.0f, 125.0f, 220.0f, 220.0f, 220.0f, 5.0f, -40.0f, 30.0f, -10.0f, 10.0f, 0.1f, 0.05f, -99999.99f, 0.0f, 0.0f, 55.0f, 55.0f, 55.0f, 55.0f, 55.0f}, + dCamPrmFlg_UNK002 | dCamPrmFlg_UNK004, }, { 'LP04', 0x2, - {-100000.0f, -100000.0f, -99999.992188f, 0.1f, 0.4f, -25.0f, 15.0f, 20.0f, -25.0f, -25.0f, 200.0f, 200.0f, 320.0f, 250.0f, 350.0f, 5.0f, -10.0f, 20.0f, 5.0f, 5.0f, 0.2f, 0.05f, -99999.992188f, 0.0f, 0.0f, 45.0f, 45.0f, 45.0f, 45.0f, 45.0f}, - dCamParam_UNK002 | dCamParam_UNK004, + {-100000.0f, -100000.0f, -99999.99f, 0.1f, 0.4f, -25.0f, 15.0f, 20.0f, -25.0f, -25.0f, 200.0f, 200.0f, 320.0f, 250.0f, 350.0f, 5.0f, -10.0f, 20.0f, 5.0f, 5.0f, 0.2f, 0.05f, -99999.99f, 0.0f, 0.0f, 45.0f, 45.0f, 45.0f, 45.0f, 45.0f}, + dCamPrmFlg_UNK002 | dCamPrmFlg_UNK004, }, { 'CC01', 0xC, - {0.0f, 0.0f, -99999.992188f, 0.6f, 0.2f, 10.0f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, 145.0f, 145.0f, 145.0f, 0.1f, 0.25f, 0.0f, -99999.992188f, -99999.992188f, 0.25f, 0.25f, -99999.992188f, -99999.992188f, -99999.992188f, 0.1f, 0.8f, 50.0f, -99999.992188f, -99999.992188f, 0.5f, 0.5f}, - dCamParam_UNK002 | dCamParam_UNK080, + {0.0f, 0.0f, -99999.99f, 0.6f, 0.2f, 10.0f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, 145.0f, 145.0f, 145.0f, 0.1f, 0.25f, 0.0f, -99999.99f, -99999.99f, 0.25f, 0.25f, -99999.99f, -99999.99f, -99999.99f, 0.1f, 0.8f, 50.0f, -99999.99f, -99999.99f, 0.5f, 0.5f}, + dCamPrmFlg_UNK002 | dCamPrmFlg_UNK080, }, { 'CC02', 0xC, - {0.0f, 0.0f, -99999.992188f, 0.6f, 0.2f, 10.0f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, 145.0f, 145.0f, 145.0f, 0.1f, 0.25f, 0.0f, -99999.992188f, -99999.992188f, 0.25f, 0.25f, -99999.992188f, -99999.992188f, -99999.992188f, 0.1f, 0.8f, 50.0f, -99999.992188f, -99999.992188f, 0.5f, 0.5f}, - dCamParam_UNK002 | dCamParam_UNK040 | dCamParam_UNK080, + {0.0f, 0.0f, -99999.99f, 0.6f, 0.2f, 10.0f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, 145.0f, 145.0f, 145.0f, 0.1f, 0.25f, 0.0f, -99999.99f, -99999.99f, 0.25f, 0.25f, -99999.99f, -99999.99f, -99999.99f, 0.1f, 0.8f, 50.0f, -99999.99f, -99999.99f, 0.5f, 0.5f}, + dCamPrmFlg_UNK002 | dCamPrmFlg_UNK040 | dCamPrmFlg_UNK080, }, { 'LL06', 0x2, - {-99999.992188f, -99999.992188f, -99999.992188f, 0.5f, 0.25f, 0.0f, -17.5f, 20.0f, -17.5f, 0.0f, 375.0f, 125.0f, 750.0f, 425.0f, 350.0f, 15.0f, -70.0f, 70.0f, 20.0f, 12.0f, 0.01f, 0.0f, -99999.992188f, 70.0f, 50.0f, 55.0f, 52.5f, 54.5f, 50.0f, 60.0f}, - dCamParam_UNK002 | dCamParam_UNK004, + {-99999.99f, -99999.99f, -99999.99f, 0.5f, 0.25f, 0.0f, -17.5f, 20.0f, -17.5f, 0.0f, 375.0f, 125.0f, 750.0f, 425.0f, 350.0f, 15.0f, -70.0f, 70.0f, 20.0f, 12.0f, 0.01f, 0.0f, -99999.99f, 70.0f, 50.0f, 55.0f, 52.5f, 54.5f, 50.0f, 60.0f}, + dCamPrmFlg_UNK002 | dCamPrmFlg_UNK004, }, { 'LL08', 0x2, - {-99999.992188f, -99999.992188f, -99999.992188f, 0.4f, 0.2f, 6.5f, -17.5f, 20.0f, -5.0f, 5.0f, 420.0f, 125.0f, 350.0f, 380.0f, 280.0f, 2.0f, -70.0f, 70.0f, -5.0f, 0.0f, 0.08f, 0.0f, -99999.992188f, 60.0f, 5.0f, 55.0f, 52.5f, 54.5f, 52.0f, 56.0f}, - dCamParam_UNK002 | dCamParam_UNK004, + {-99999.99f, -99999.99f, -99999.99f, 0.4f, 0.2f, 6.5f, -17.5f, 20.0f, -5.0f, 5.0f, 420.0f, 125.0f, 350.0f, 380.0f, 280.0f, 2.0f, -70.0f, 70.0f, -5.0f, 0.0f, 0.08f, 0.0f, -99999.99f, 60.0f, 5.0f, 55.0f, 52.5f, 54.5f, 52.0f, 56.0f}, + dCamPrmFlg_UNK002 | dCamPrmFlg_UNK004, }, { 'LL07', 0x2, - {-99999.992188f, -99999.992188f, -99999.992188f, 0.4f, 0.2f, 7.5f, -17.5f, 20.0f, -22.5f, 5.0f, 450.0f, 125.0f, 750.0f, 480.0f, 420.0f, 0.0f, -70.0f, 70.0f, 25.0f, 10.0f, 0.04f, 0.0f, -99999.992188f, 75.0f, 20.0f, 55.0f, 52.5f, 54.5f, 48.0f, 62.0f}, - dCamParam_UNK002 | dCamParam_UNK004, + {-99999.99f, -99999.99f, -99999.99f, 0.4f, 0.2f, 7.5f, -17.5f, 20.0f, -22.5f, 5.0f, 450.0f, 125.0f, 750.0f, 480.0f, 420.0f, 0.0f, -70.0f, 70.0f, 25.0f, 10.0f, 0.04f, 0.0f, -99999.99f, 75.0f, 20.0f, 55.0f, 52.5f, 54.5f, 48.0f, 62.0f}, + dCamPrmFlg_UNK002 | dCamPrmFlg_UNK004, }, { 'LP10', 0x2, - {-10000.0f, -10000.0f, -99999.992188f, 0.05f, 0.2f, -30.0f, 12.5f, 20.0f, -30.0f, 0.0f, 320.0f, 200.0f, 750.0f, 200.0f, 200.0f, 0.0f, -40.0f, 40.0f, -10.0f, -20.0f, 0.1f, 0.05f, -99999.992188f, 0.0f, 0.0f, 52.5f, 52.5f, 52.5f, 50.0f, 60.0f}, - dCamParam_UNK002 | dCamParam_UNK004, + {-10000.0f, -10000.0f, -99999.99f, 0.05f, 0.2f, -30.0f, 12.5f, 20.0f, -30.0f, 0.0f, 320.0f, 200.0f, 750.0f, 200.0f, 200.0f, 0.0f, -40.0f, 40.0f, -10.0f, -20.0f, 0.1f, 0.05f, -99999.99f, 0.0f, 0.0f, 52.5f, 52.5f, 52.5f, 50.0f, 60.0f}, + dCamPrmFlg_UNK002 | dCamPrmFlg_UNK004, }, { 'SN15', 0x4, - {20.0f, 0.0f, -99999.992188f, -99999.992188f, -99999.992188f, 0.0f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, 20.0f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, 70.0f, 0.75f, 0.04f, -99999.992188f, -99999.992188f, 90.0f, 50.0f, 0.2f, -99999.992188f, -99999.992188f, -99999.992188f}, - dCamParam_UNK002 | dCamParam_UNK010 | dCamParam_UNK080, + {20.0f, 0.0f, -99999.99f, -99999.99f, -99999.99f, 0.0f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, 20.0f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, 70.0f, 0.75f, 0.04f, -99999.99f, -99999.99f, 90.0f, 50.0f, 0.2f, -99999.99f, -99999.99f, -99999.99f}, + dCamPrmFlg_UNK002 | dCamPrmFlg_UNK010 | dCamPrmFlg_UNK080, }, { 'BW07', 0x8, - {120.0f, 80.0f, -99999.992188f, 0.2f, 0.15f, 40.0f, -99999.992188f, -99999.992188f, -60.0f, -99999.992188f, 800.0f, -99999.992188f, -99999.992188f, -500.0f, 40.0f, 40.0f, 30.0f, 50.0f, -10.0f, -99999.992188f, 1.0f, 0.1f, -99999.992188f, -99999.992188f, -99999.992188f, 50.0f, -99999.992188f, -99999.992188f, 20.0f, -5.0f}, - dCamParam_UNK001, + {120.0f, 80.0f, -99999.99f, 0.2f, 0.15f, 40.0f, -99999.99f, -99999.99f, -60.0f, -99999.99f, 800.0f, -99999.99f, -99999.99f, -500.0f, 40.0f, 40.0f, 30.0f, 50.0f, -10.0f, -99999.99f, 1.0f, 0.1f, -99999.99f, -99999.99f, -99999.99f, 50.0f, -99999.99f, -99999.99f, 20.0f, -5.0f}, + dCamPrmFlg_UNK001, }, { 'FN18', 0x1, - {1.0f, 0.0f, -99999.992188f, 0.75f, 0.25f, -25.0f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, 900.0f, 800.0f, -99999.992188f, 0.66f, 0.05f, 78.0f, 75.0f, 80.0f, 2.0f, 0.05f, 0.01f, 0.01f, -99999.992188f, 0.8f, 0.1f, 60.0f, -99999.992188f, -99999.992188f, -99999.992188f, 0.05f}, - dCamParam_UNK001 | dCamParam_UNK004 | dCamParam_UNK400, + {1.0f, 0.0f, -99999.99f, 0.75f, 0.25f, -25.0f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, 900.0f, 800.0f, -99999.99f, 0.66f, 0.05f, 78.0f, 75.0f, 80.0f, 2.0f, 0.05f, 0.01f, 0.01f, -99999.99f, 0.8f, 0.1f, 60.0f, -99999.99f, -99999.99f, -99999.99f, 0.05f}, + dCamPrmFlg_UNK001 | dCamPrmFlg_UNK004 | dCamPrmFlg_UNK400, }, { 'JN05', 0xD, - {1.0f, 0.0f, -99999.992188f, 0.75f, 0.25f, -20.0f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, 900.0f, 50.0f, -99999.992188f, -99999.992188f, 1000.0f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, 0.75f, 0.0f, 50.0f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f}, - dCamParam_UNK001 | dCamParam_UNK004, + {1.0f, 0.0f, -99999.99f, 0.75f, 0.25f, -20.0f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, 900.0f, 50.0f, -99999.99f, -99999.99f, 1000.0f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, 0.75f, 0.0f, 50.0f, -99999.99f, -99999.99f, -99999.99f, -99999.99f}, + dCamPrmFlg_UNK001 | dCamPrmFlg_UNK004, }, { 'XN06', 0x6, - {-99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, 0.0f, 50.0f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f}, - dCamParam_UNK040, + {-99999.99f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, 0.0f, 50.0f, -99999.99f, -99999.99f, -99999.99f, -99999.99f}, + dCamPrmFlg_UNK040, }, { 'LB01', 0x2, - {-99999.992188f, -99999.992188f, -99999.992188f, 0.2f, 0.4f, -12.5f, -17.5f, 20.0f, -17.5f, -7.5f, 400.0f, 125.0f, 750.0f, 460.0f, 400.0f, 0.0f, -40.0f, 40.0f, 10.0f, -5.0f, 0.01f, 0.0f, -99999.992188f, 170.0f, 160.0f, 55.0f, 52.5f, 54.5f, 48.0f, 62.0f}, - dCamParam_UNK002 | dCamParam_UNK004, + {-99999.99f, -99999.99f, -99999.99f, 0.2f, 0.4f, -12.5f, -17.5f, 20.0f, -17.5f, -7.5f, 400.0f, 125.0f, 750.0f, 460.0f, 400.0f, 0.0f, -40.0f, 40.0f, 10.0f, -5.0f, 0.01f, 0.0f, -99999.99f, 170.0f, 160.0f, 55.0f, 52.5f, 54.5f, 48.0f, 62.0f}, + dCamPrmFlg_UNK002 | dCamPrmFlg_UNK004, }, { 'LA01', 0x2, - {-99999.992188f, -99999.992188f, -99999.992188f, 0.3f, 0.1f, -7.5f, -17.5f, 20.0f, -22.5f, -2.5f, 400.0f, 125.0f, 750.0f, 480.0f, 420.0f, 30.0f, -40.0f, 40.0f, 30.0f, 20.0f, 0.06f, 0.0f, -99999.992188f, 60.0f, 40.0f, 55.0f, 52.5f, 54.5f, 55.0f, 65.0f}, - dCamParam_UNK002 | dCamParam_UNK004, + {-99999.99f, -99999.99f, -99999.99f, 0.3f, 0.1f, -7.5f, -17.5f, 20.0f, -22.5f, -2.5f, 400.0f, 125.0f, 750.0f, 480.0f, 420.0f, 30.0f, -40.0f, 40.0f, 30.0f, 20.0f, 0.06f, 0.0f, -99999.99f, 60.0f, 40.0f, 55.0f, 52.5f, 54.5f, 55.0f, 65.0f}, + dCamPrmFlg_UNK002 | dCamPrmFlg_UNK004, }, { 'BP07', 0x8, - {120.0f, 200.0f, -99999.992188f, 0.75f, 0.15f, 40.0f, -99999.992188f, -99999.992188f, -60.0f, -99999.992188f, 900.0f, -99999.992188f, -99999.992188f, -500.0f, 40.0f, 10.0f, -5.0f, 30.0f, -10.0f, -99999.992188f, 1.0f, 0.1f, -99999.992188f, -99999.992188f, -99999.992188f, 60.0f, -99999.992188f, -99999.992188f, 20.0f, -5.0f}, - dCamParam_UNK001 | dCamParam_UNK004, + {120.0f, 200.0f, -99999.99f, 0.75f, 0.15f, 40.0f, -99999.99f, -99999.99f, -60.0f, -99999.99f, 900.0f, -99999.99f, -99999.99f, -500.0f, 40.0f, 10.0f, -5.0f, 30.0f, -10.0f, -99999.99f, 1.0f, 0.1f, -99999.99f, -99999.99f, -99999.99f, 60.0f, -99999.99f, -99999.99f, 20.0f, -5.0f}, + dCamPrmFlg_UNK001 | dCamPrmFlg_UNK004, }, { 'LW02', 0x2, - {-99999.992188f, -99999.992188f, -99999.992188f, 0.3f, 0.1f, -20.0f, -20.0f, 0.0f, -20.0f, -60.0f, 250.0f, 125.0f, 450.0f, 650.0f, 650.0f, 0.0f, -20.0f, 40.0f, -10.0f, 45.0f, 0.2f, 0.05f, -99999.992188f, 0.0f, 0.0f, 60.0f, 60.0f, 60.0f, 60.0f, 60.0f}, - dCamParam_UNK002, + {-99999.99f, -99999.99f, -99999.99f, 0.3f, 0.1f, -20.0f, -20.0f, 0.0f, -20.0f, -60.0f, 250.0f, 125.0f, 450.0f, 650.0f, 650.0f, 0.0f, -20.0f, 40.0f, -10.0f, 45.0f, 0.2f, 0.05f, -99999.99f, 0.0f, 0.0f, 60.0f, 60.0f, 60.0f, 60.0f, 60.0f}, + dCamPrmFlg_UNK002, }, { 'HP16', 0x9, - {20.0f, 10.0f, -99999.992188f, 0.75f, 0.25f, -70.0f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, 200.0f, 200.0f, -99999.992188f, 1.0f, 1.0f, 60.0f, 60.0f, -99999.992188f, 0.05f, 1.0f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, 55.0f, -99999.992188f, -99999.992188f, -99999.992188f, 0.25f}, - dCamParam_UNK002, + {20.0f, 10.0f, -99999.99f, 0.75f, 0.25f, -70.0f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, 200.0f, 200.0f, -99999.99f, 1.0f, 1.0f, 60.0f, 60.0f, -99999.99f, 0.05f, 1.0f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, 55.0f, -99999.99f, -99999.99f, -99999.99f, 0.25f}, + dCamPrmFlg_UNK002, }, { 'HN16', 0x9, - {0.0f, 0.0f, -99999.992188f, 0.5f, 0.25f, -60.0f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, 350.0f, 320.0f, -99999.992188f, 0.3f, 0.3f, 25.0f, 25.0f, -99999.992188f, 0.5f, 0.25f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, 62.5f, -99999.992188f, -99999.992188f, -99999.992188f, 0.25f}, - dCamParam_UNK002, + {0.0f, 0.0f, -99999.99f, 0.5f, 0.25f, -60.0f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, 350.0f, 320.0f, -99999.99f, 0.3f, 0.3f, 25.0f, 25.0f, -99999.99f, 0.5f, 0.25f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, 62.5f, -99999.99f, -99999.99f, -99999.99f, 0.25f}, + dCamPrmFlg_UNK002, }, { 'BN07', 0x8, - {90.0f, 150.0f, -99999.992188f, 0.65f, 0.15f, 10.0f, -99999.992188f, -99999.992188f, 5.0f, -99999.992188f, 800.0f, -99999.992188f, -99999.992188f, -430.0f, 40.0f, 5.0f, -10.0f, 30.0f, -5.0f, -99999.992188f, 0.2f, 0.1f, -99999.992188f, -99999.992188f, -99999.992188f, 70.0f, -99999.992188f, -99999.992188f, 20.0f, -5.0f}, - dCamParam_UNK001 | dCamParam_UNK004, + {90.0f, 150.0f, -99999.99f, 0.65f, 0.15f, 10.0f, -99999.99f, -99999.99f, 5.0f, -99999.99f, 800.0f, -99999.99f, -99999.99f, -430.0f, 40.0f, 5.0f, -10.0f, 30.0f, -5.0f, -99999.99f, 0.2f, 0.1f, -99999.99f, -99999.99f, -99999.99f, 70.0f, -99999.99f, -99999.99f, 20.0f, -5.0f}, + dCamPrmFlg_UNK001 | dCamPrmFlg_UNK004, }, { 'LP05', 0x2, - {-99999.992188f, -99999.992188f, -99999.992188f, 0.05f, 0.2f, 0.0f, 12.5f, 20.0f, 0.0f, 0.0f, 220.0f, 125.0f, 625.0f, 220.0f, 220.0f, 0.0f, -40.0f, 30.0f, -10.0f, 10.0f, 0.1f, 0.05f, -99999.992188f, 0.0f, 0.0f, 55.0f, 55.0f, 55.0f, 50.0f, 60.0f}, - dCamParam_UNK002 | dCamParam_UNK004, + {-99999.99f, -99999.99f, -99999.99f, 0.05f, 0.2f, 0.0f, 12.5f, 20.0f, 0.0f, 0.0f, 220.0f, 125.0f, 625.0f, 220.0f, 220.0f, 0.0f, -40.0f, 30.0f, -10.0f, 10.0f, 0.1f, 0.05f, -99999.99f, 0.0f, 0.0f, 55.0f, 55.0f, 55.0f, 50.0f, 60.0f}, + dCamPrmFlg_UNK002 | dCamPrmFlg_UNK004, }, { 'LP06', 0x2, - {1.0f, 0.0f, -99999.992188f, 0.75f, 0.25f, 32.0f, 32.0f, 32.0f, 32.0f, 32.0f, 1250.0f, 1000.0f, 1100.0f, 1250.0f, 1250.0f, 0.0f, -10.0f, 10.0f, 2.0f, 0.5f, 0.01f, 0.1f, -99999.992188f, 0.1f, 0.1f, 55.0f, 52.5f, 54.5f, 60.0f, 70.0f}, - dCamParam_UNK002 | dCamParam_UNK004, + {1.0f, 0.0f, -99999.99f, 0.75f, 0.25f, 32.0f, 32.0f, 32.0f, 32.0f, 32.0f, 1250.0f, 1000.0f, 1100.0f, 1250.0f, 1250.0f, 0.0f, -10.0f, 10.0f, 2.0f, 0.5f, 0.01f, 0.1f, -99999.99f, 0.1f, 0.1f, 55.0f, 52.5f, 54.5f, 60.0f, 70.0f}, + dCamPrmFlg_UNK002 | dCamPrmFlg_UNK004, }, { 'HN18', 0xF, - {80.0f, 0.0f, -99999.992188f, 0.8f, 0.15f, 150.0f, -99999.992188f, 500.0f, -99999.992188f, -99999.992188f, 520.0f, 80.0f, -99999.992188f, 0.25f, 0.7f, 50.0f, 5.0f, -99999.992188f, 0.75f, 0.15f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, 90.0f, -99999.992188f, -99999.992188f, -99999.992188f, 0.25f}, - dCamParam_UNK002, + {80.0f, 0.0f, -99999.99f, 0.8f, 0.15f, 150.0f, -99999.99f, 500.0f, -99999.99f, -99999.99f, 520.0f, 80.0f, -99999.99f, 0.25f, 0.7f, 50.0f, 5.0f, -99999.99f, 0.75f, 0.15f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, 90.0f, -99999.99f, -99999.99f, -99999.99f, 0.25f}, + dCamPrmFlg_UNK002, }, { 'FN25', 0x1, - {0.5f, 0.0f, -99999.992188f, 0.75f, 0.25f, 80.0f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, 850.0f, 500.0f, -99999.992188f, 0.66f, 0.05f, 30.0f, 0.0f, 60.0f, 2.0f, 0.05f, 0.1f, -99999.992188f, -99999.992188f, 1.0f, 0.2f, 60.0f, -99999.992188f, -99999.992188f, -99999.992188f, 0.05f}, - dCamParam_UNK001, + {0.5f, 0.0f, -99999.99f, 0.75f, 0.25f, 80.0f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, 850.0f, 500.0f, -99999.99f, 0.66f, 0.05f, 30.0f, 0.0f, 60.0f, 2.0f, 0.05f, 0.1f, -99999.99f, -99999.99f, 1.0f, 0.2f, 60.0f, -99999.99f, -99999.99f, -99999.99f, 0.05f}, + dCamPrmFlg_UNK001, }, { 'BP08', 0x8, - {90.0f, 250.0f, -99999.992188f, 0.75f, 0.15f, 120.0f, -99999.992188f, -99999.992188f, 1.0f, -99999.992188f, 1000.0f, -99999.992188f, -99999.992188f, 0.0f, 40.0f, 20.0f, -5.0f, 30.0f, 0.0f, -99999.992188f, 1.0f, 0.1f, -99999.992188f, -99999.992188f, -99999.992188f, 60.0f, -99999.992188f, -99999.992188f, 0.0f, -5.0f}, - dCamParam_UNK001 | dCamParam_UNK004, + {90.0f, 250.0f, -99999.99f, 0.75f, 0.15f, 120.0f, -99999.99f, -99999.99f, 1.0f, -99999.99f, 1000.0f, -99999.99f, -99999.99f, 0.0f, 40.0f, 20.0f, -5.0f, 30.0f, 0.0f, -99999.99f, 1.0f, 0.1f, -99999.99f, -99999.99f, -99999.99f, 60.0f, -99999.99f, -99999.99f, 0.0f, -5.0f}, + dCamPrmFlg_UNK001 | dCamPrmFlg_UNK004, }, { 'BN08', 0x8, - {90.0f, 250.0f, -99999.992188f, 0.75f, 0.15f, 120.0f, -99999.992188f, -99999.992188f, 10.0f, -99999.992188f, 1000.0f, -99999.992188f, -99999.992188f, 0.0f, 40.0f, 20.0f, -5.0f, 30.0f, 0.0f, -99999.992188f, 0.2f, 0.1f, -99999.992188f, -99999.992188f, -99999.992188f, 60.0f, -99999.992188f, -99999.992188f, 0.0f, -5.0f}, - dCamParam_UNK001 | dCamParam_UNK004, + {90.0f, 250.0f, -99999.99f, 0.75f, 0.15f, 120.0f, -99999.99f, -99999.99f, 10.0f, -99999.99f, 1000.0f, -99999.99f, -99999.99f, 0.0f, 40.0f, 20.0f, -5.0f, 30.0f, 0.0f, -99999.99f, 0.2f, 0.1f, -99999.99f, -99999.99f, -99999.99f, 60.0f, -99999.99f, -99999.99f, 0.0f, -5.0f}, + dCamPrmFlg_UNK001 | dCamPrmFlg_UNK004, }, { 'FN29', 0x1, - {1.0f, 0.0f, -99999.992188f, 0.75f, 0.25f, 10.0f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, 550.0f, 450.0f, -99999.992188f, 0.66f, 0.05f, 40.0f, -50.0f, 70.0f, 2.0f, 0.05f, 0.16f, -99999.992188f, -99999.992188f, 1.0f, 0.2f, 55.0f, -99999.992188f, -99999.992188f, -99999.992188f, 0.05f}, - dCamParam_UNK001 | dCamParam_UNK004 | dCamParam_UNK400, + {1.0f, 0.0f, -99999.99f, 0.75f, 0.25f, 10.0f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, 550.0f, 450.0f, -99999.99f, 0.66f, 0.05f, 40.0f, -50.0f, 70.0f, 2.0f, 0.05f, 0.16f, -99999.99f, -99999.99f, 1.0f, 0.2f, 55.0f, -99999.99f, -99999.99f, -99999.99f, 0.05f}, + dCamPrmFlg_UNK001 | dCamPrmFlg_UNK004 | dCamPrmFlg_UNK400, }, { 'SX01', 0x4, - {20.0f, 0.0f, -99999.992188f, -99999.992188f, -99999.992188f, -2.0f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, 40.0f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, 70.0f, 0.45f, 0.04f, -99999.992188f, -99999.992188f, 90.0f, 50.0f, 50.0f, -99999.992188f, -99999.992188f, -99999.992188f}, - dCamParam_UNK002 | dCamParam_UNK100, + {20.0f, 0.0f, -99999.99f, -99999.99f, -99999.99f, -2.0f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, 40.0f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, 70.0f, 0.45f, 0.04f, -99999.99f, -99999.99f, 90.0f, 50.0f, 50.0f, -99999.99f, -99999.99f, -99999.99f}, + dCamPrmFlg_UNK002 | dCamPrmFlg_UNK100, }, { 'SY01', 0x4, - {0.0f, 30.0f, -99999.992188f, -99999.992188f, -99999.992188f, 30.0f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, 120.0f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, 70.0f, 0.6f, 0.04f, -99999.992188f, -99999.992188f, 90.0f, 60.0f, 60.0f, -99999.992188f, -99999.992188f, -99999.992188f}, - dCamParam_UNK002, + {0.0f, 30.0f, -99999.99f, -99999.99f, -99999.99f, 30.0f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, 120.0f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, 70.0f, 0.6f, 0.04f, -99999.99f, -99999.99f, 90.0f, 60.0f, 60.0f, -99999.99f, -99999.99f, -99999.99f}, + dCamPrmFlg_UNK002, }, { 'SX02', 0x4, - {20.0f, 0.0f, -99999.992188f, -99999.992188f, -99999.992188f, -2.0f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, 40.0f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, 60.0f, 0.45f, 0.04f, -99999.992188f, -99999.992188f, 90.0f, 60.0f, 60.0f, -99999.992188f, -99999.992188f, -99999.992188f}, - dCamParam_UNK002 | dCamParam_UNK100, + {20.0f, 0.0f, -99999.99f, -99999.99f, -99999.99f, -2.0f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, 40.0f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, 60.0f, 0.45f, 0.04f, -99999.99f, -99999.99f, 90.0f, 60.0f, 60.0f, -99999.99f, -99999.99f, -99999.99f}, + dCamPrmFlg_UNK002 | dCamPrmFlg_UNK100, }, { 'MM06', 0xA, - {0.0f, 0.0f, -99999.992188f, 0.8f, 0.8f, 80.0f, 80.0f, 20.0f, 0.0f, 1.92f, 250.0f, 200.0f, 800.0f, 0.0f, 16.0f, 0.0f, -55.0f, 70.0f, 0.0f, 2.0f, 0.33f, 0.5f, -99999.992188f, 0.0f, 8.0f, 90.0f, 80.0f, 90.0f, 0.0f, 0.48f}, - dCamParam_UNK002, + {0.0f, 0.0f, -99999.99f, 0.8f, 0.8f, 80.0f, 80.0f, 20.0f, 0.0f, 1.92f, 250.0f, 200.0f, 800.0f, 0.0f, 16.0f, 0.0f, -55.0f, 70.0f, 0.0f, 2.0f, 0.33f, 0.5f, -99999.99f, 0.0f, 8.0f, 90.0f, 80.0f, 90.0f, 0.0f, 0.48f}, + dCamPrmFlg_UNK002, }, { 'MM05', 0xA, - {0.0f, 0.0f, -99999.992188f, 0.7f, 0.25f, -20.0f, -20.0f, 20.0f, 0.0f, 1.92f, 250.0f, 150.0f, 320.0f, 0.0f, 15.0f, 0.0f, -40.0f, 40.0f, 0.0f, 2.0f, 0.33f, 0.5f, -99999.992188f, 0.0f, 8.0f, 55.0f, 60.0f, 70.0f, 0.0f, 0.48f}, - dCamParam_UNK002, + {0.0f, 0.0f, -99999.99f, 0.7f, 0.25f, -20.0f, -20.0f, 20.0f, 0.0f, 1.92f, 250.0f, 150.0f, 320.0f, 0.0f, 15.0f, 0.0f, -40.0f, 40.0f, 0.0f, 2.0f, 0.33f, 0.5f, -99999.99f, 0.0f, 8.0f, 55.0f, 60.0f, 70.0f, 0.0f, 0.48f}, + dCamPrmFlg_UNK002, }, { 'MM09', 0xA, - {0.0f, 0.0f, -99999.992188f, 0.7f, 0.25f, 40.0f, 50.0f, 40.0f, 0.0f, 0.2f, 320.0f, 150.0f, 800.0f, 0.0f, 30.0f, 0.0f, -30.0f, 10.0f, 0.0f, 1.8f, 0.33f, 0.5f, -99999.992188f, 0.0f, 8.0f, 60.0f, 65.0f, 60.0f, 0.0f, 0.2f}, - dCamParam_UNK002, + {0.0f, 0.0f, -99999.99f, 0.7f, 0.25f, 40.0f, 50.0f, 40.0f, 0.0f, 0.2f, 320.0f, 150.0f, 800.0f, 0.0f, 30.0f, 0.0f, -30.0f, 10.0f, 0.0f, 1.8f, 0.33f, 0.5f, -99999.99f, 0.0f, 8.0f, 60.0f, 65.0f, 60.0f, 0.0f, 0.2f}, + dCamPrmFlg_UNK002, }, { 'MM04', 0xA, - {0.0f, 0.0f, -99999.992188f, 0.7f, 0.25f, -20.0f, -20.0f, -40.0f, 0.0f, 1.0f, 320.0f, 150.0f, 950.0f, 0.0f, 29.0f, 0.0f, 0.0f, 5.0f, 0.0f, 0.2f, 0.33f, 0.5f, -99999.992188f, 0.0f, 8.0f, 55.0f, 50.0f, 60.0f, 0.0f, 0.48f}, - dCamParam_UNK002, + {0.0f, 0.0f, -99999.99f, 0.7f, 0.25f, -20.0f, -20.0f, -40.0f, 0.0f, 1.0f, 320.0f, 150.0f, 950.0f, 0.0f, 29.0f, 0.0f, 0.0f, 5.0f, 0.0f, 0.2f, 0.33f, 0.5f, -99999.99f, 0.0f, 8.0f, 55.0f, 50.0f, 60.0f, 0.0f, 0.48f}, + dCamPrmFlg_UNK002, }, { 'LN17', 0xC, - {0.0f, 0.0f, -99999.992188f, 0.6f, 0.2f, 10.0f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, 145.0f, 145.0f, 145.0f, 0.1f, 0.25f, 0.0f, -99999.992188f, -99999.992188f, 0.25f, 0.25f, -99999.992188f, -99999.992188f, -99999.992188f, 0.1f, 0.8f, 50.0f, -99999.992188f, -99999.992188f, 0.5f, 0.5f}, - dCamParam_UNK002 | dCamParam_UNK040, + {0.0f, 0.0f, -99999.99f, 0.6f, 0.2f, 10.0f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, 145.0f, 145.0f, 145.0f, 0.1f, 0.25f, 0.0f, -99999.99f, -99999.99f, 0.25f, 0.25f, -99999.99f, -99999.99f, -99999.99f, 0.1f, 0.8f, 50.0f, -99999.99f, -99999.99f, 0.5f, 0.5f}, + dCamPrmFlg_UNK002 | dCamPrmFlg_UNK040, }, { 'QN07', 0xE, - {-120.0f, 0.0f, -99999.992188f, 0.75f, 0.15f, 50.0f, -99999.992188f, -99999.992188f, 80.0f, -99999.992188f, 800.0f, -99999.992188f, -99999.992188f, 200.0f, 40.0f, 0.0f, -5.0f, 60.0f, 20.0f, -99999.992188f, 0.1f, 0.1f, -99999.992188f, -99999.992188f, -99999.992188f, 60.0f, -99999.992188f, -99999.992188f, -15.0f, -5.0f}, - dCamParam_UNK001 | dCamParam_UNK004 | dCamParam_UNK400, + {-120.0f, 0.0f, -99999.99f, 0.75f, 0.15f, 50.0f, -99999.99f, -99999.99f, 80.0f, -99999.99f, 800.0f, -99999.99f, -99999.99f, 200.0f, 40.0f, 0.0f, -5.0f, 60.0f, 20.0f, -99999.99f, 0.1f, 0.1f, -99999.99f, -99999.99f, -99999.99f, 60.0f, -99999.99f, -99999.99f, -15.0f, -5.0f}, + dCamPrmFlg_UNK001 | dCamPrmFlg_UNK004 | dCamPrmFlg_UNK400, }, { 'LE01', 0x1, - {0.0f, 75.0f, -99999.992188f, 0.15f, 0.15f, -30.0f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, 300.0f, 250.0f, -99999.992188f, 0.66f, 0.05f, 5.0f, -40.0f, 60.0f, 2.0f, 0.15f, 0.3f, 0.05f, -99999.992188f, 0.8f, 0.15f, 40.0f, -99999.992188f, -99999.992188f, -99999.992188f, 0.15f}, - dCamParam_UNK001 | dCamParam_UNK200 | dCamParam_UNK400, + {0.0f, 75.0f, -99999.99f, 0.15f, 0.15f, -30.0f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, 300.0f, 250.0f, -99999.99f, 0.66f, 0.05f, 5.0f, -40.0f, 60.0f, 2.0f, 0.15f, 0.3f, 0.05f, -99999.99f, 0.8f, 0.15f, 40.0f, -99999.99f, -99999.99f, -99999.99f, 0.15f}, + dCamPrmFlg_UNK001 | dCamPrmFlg_UNK200 | dCamPrmFlg_UNK400, }, { 'LN01', 0x2, - {-99999.992188f, -99999.992188f, -99999.992188f, 0.25f, 0.2f, -15.0f, -17.5f, 20.0f, -22.5f, -10.0f, 450.0f, 125.0f, 750.0f, 480.0f, 420.0f, 7.5f, -60.0f, 60.0f, 10.0f, 5.0f, 0.08f, 0.0f, -99999.992188f, 40.0f, 5.0f, 42.5f, 52.5f, 54.5f, 40.0f, 45.0f}, - dCamParam_UNK002 | dCamParam_UNK004, + {-99999.99f, -99999.99f, -99999.99f, 0.25f, 0.2f, -15.0f, -17.5f, 20.0f, -22.5f, -10.0f, 450.0f, 125.0f, 750.0f, 480.0f, 420.0f, 7.5f, -60.0f, 60.0f, 10.0f, 5.0f, 0.08f, 0.0f, -99999.99f, 40.0f, 5.0f, 42.5f, 52.5f, 54.5f, 40.0f, 45.0f}, + dCamPrmFlg_UNK002 | dCamPrmFlg_UNK004, }, { 'LW01', 0x1, - {0.0f, 0.0f, -99999.992188f, 0.15f, 0.15f, -25.0f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, 450.0f, 400.0f, -99999.992188f, 0.5f, 0.15f, 20.0f, -40.0f, 60.0f, 2.0f, 0.15f, 0.3f, 0.05f, -99999.992188f, 0.8f, 0.15f, 60.0f, -99999.992188f, -99999.992188f, -99999.992188f, 0.15f}, - dCamParam_UNK001 | dCamParam_UNK200 | dCamParam_UNK400, + {0.0f, 0.0f, -99999.99f, 0.15f, 0.15f, -25.0f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, 450.0f, 400.0f, -99999.99f, 0.5f, 0.15f, 20.0f, -40.0f, 60.0f, 2.0f, 0.15f, 0.3f, 0.05f, -99999.99f, 0.8f, 0.15f, 60.0f, -99999.99f, -99999.99f, -99999.99f, 0.15f}, + dCamPrmFlg_UNK001 | dCamPrmFlg_UNK200 | dCamPrmFlg_UNK400, }, { 'GN01', 0x12, - {5.0f, 0.0f, -99999.992188f, 0.5f, 0.25f, 30.0f, 50.0f, -99999.992188f, -99999.992188f, -99999.992188f, 400.0f, 400.0f, -99999.992188f, 0.66f, 0.05f, 10.0f, -60.0f, 60.0f, 2.0f, 0.05f, 0.0f, -99999.992188f, -99999.992188f, 1.0f, 0.18f, 55.0f, -99999.992188f, -99999.992188f, -99999.992188f, 0.05f}, - dCamParam_UNK001 | dCamParam_UNK400, + {5.0f, 0.0f, -99999.99f, 0.5f, 0.25f, 30.0f, 50.0f, -99999.99f, -99999.99f, -99999.99f, 400.0f, 400.0f, -99999.99f, 0.66f, 0.05f, 10.0f, -60.0f, 60.0f, 2.0f, 0.05f, 0.0f, -99999.99f, -99999.99f, 1.0f, 0.18f, 55.0f, -99999.99f, -99999.99f, -99999.99f, 0.05f}, + dCamPrmFlg_UNK001 | dCamPrmFlg_UNK400, }, { 'MM01', 0xA, - {0.0f, 0.0f, -99999.992188f, 0.7f, 0.25f, 0.0f, 0.0f, 30.0f, 0.0f, 1.0f, 320.0f, 240.0f, 700.0f, 0.0f, 20.0f, 0.0f, 0.0f, 30.0f, 0.0f, 0.6f, 0.33f, 0.66f, -99999.992188f, 0.0f, 8.0f, 55.0f, 50.0f, 60.0f, 0.0f, 0.4f}, - dCamParam_UNK002, + {0.0f, 0.0f, -99999.99f, 0.7f, 0.25f, 0.0f, 0.0f, 30.0f, 0.0f, 1.0f, 320.0f, 240.0f, 700.0f, 0.0f, 20.0f, 0.0f, 0.0f, 30.0f, 0.0f, 0.6f, 0.33f, 0.66f, -99999.99f, 0.0f, 8.0f, 55.0f, 50.0f, 60.0f, 0.0f, 0.4f}, + dCamPrmFlg_UNK002, }, #if VERSION == VERSION_JPN { 'MM03', 0xA, - {0.0f, 0.0f, -99999.992188f, 0.7f, 0.25f, 10.0f, 0.0f, 40.0f, 0.0f, 2.0f, 320.0f, 250.0f, 700.0f, 0.0f, 27.0f, 0.0f, -5.0f, 30.0f, 0.0f, 0.6f, 0.33f, 0.5f, -99999.992188f, 0.0f, 8.0f, 55.0f, 50.0f, 62.0f, 0.0f, 0.45f}, - dCamParam_UNK002, + {0.0f, 0.0f, -99999.99f, 0.7f, 0.25f, 10.0f, 0.0f, 40.0f, 0.0f, 2.0f, 320.0f, 250.0f, 700.0f, 0.0f, 27.0f, 0.0f, -5.0f, 30.0f, 0.0f, 0.6f, 0.33f, 0.5f, -99999.99f, 0.0f, 8.0f, 55.0f, 50.0f, 62.0f, 0.0f, 0.45f}, + dCamPrmFlg_UNK002, }, #endif { 'MM02', 0xA, - {0.0f, 0.0f, -99999.992188f, 0.7f, 0.25f, 0.0f, 10.0f, 35.0f, 0.0f, 1.92f, 320.0f, 250.0f, 950.0f, 0.0f, 27.0f, 0.0f, -5.0f, 30.0f, 0.0f, 0.9f, 0.33f, 0.5f, -99999.992188f, 0.0f, 8.0f, 55.0f, 52.5f, 60.0f, 0.0f, 0.4f}, - dCamParam_UNK002, + {0.0f, 0.0f, -99999.99f, 0.7f, 0.25f, 0.0f, 10.0f, 35.0f, 0.0f, 1.92f, 320.0f, 250.0f, 950.0f, 0.0f, 27.0f, 0.0f, -5.0f, 30.0f, 0.0f, 0.9f, 0.33f, 0.5f, -99999.99f, 0.0f, 8.0f, 55.0f, 52.5f, 60.0f, 0.0f, 0.4f}, + dCamPrmFlg_UNK002, }, { 'MM10', 0xA, - {0.0f, 0.0f, -99999.992188f, 0.7f, 0.25f, 15.0f, 10.0f, 20.0f, 0.0f, 0.45f, 320.0f, 300.0f, 2000.0f, 0.0f, 45.0f, 10.0f, 5.0f, 35.0f, 0.0f, 0.42f, 0.33f, 0.5f, -99999.992188f, 0.0f, 4.0f, 55.0f, 52.0f, 62.0f, 0.0f, 0.48f}, - dCamParam_UNK002, + {0.0f, 0.0f, -99999.99f, 0.7f, 0.25f, 15.0f, 10.0f, 20.0f, 0.0f, 0.45f, 320.0f, 300.0f, 2000.0f, 0.0f, 45.0f, 10.0f, 5.0f, 35.0f, 0.0f, 0.42f, 0.33f, 0.5f, -99999.99f, 0.0f, 4.0f, 55.0f, 52.0f, 62.0f, 0.0f, 0.48f}, + dCamPrmFlg_UNK002, }, { 'MM08', 0xA, - {0.0f, 0.0f, -99999.992188f, 0.7f, 0.25f, -20.0f, 50.0f, 50.0f, 0.0f, 0.0f, 400.0f, 350.0f, 800.0f, 0.0f, 34.0f, 0.0f, -20.0f, 50.0f, 0.0f, 3.6f, 0.33f, 0.5f, -99999.992188f, 0.0f, 8.0f, 55.0f, 55.0f, 55.0f, 0.0f, 0.0f}, - dCamParam_UNK002, + {0.0f, 0.0f, -99999.99f, 0.7f, 0.25f, -20.0f, 50.0f, 50.0f, 0.0f, 0.0f, 400.0f, 350.0f, 800.0f, 0.0f, 34.0f, 0.0f, -20.0f, 50.0f, 0.0f, 3.6f, 0.33f, 0.5f, -99999.99f, 0.0f, 8.0f, 55.0f, 55.0f, 55.0f, 0.0f, 0.0f}, + dCamPrmFlg_UNK002, }, { 'MM83', 0xA, - {1.0f, 0.0f, -99999.992188f, 0.75f, 0.25f, 0.0f, 20.0f, 300.0f, 0.0f, 5.0f, 320.0f, 350.0f, 1500.0f, 0.0f, 40.0f, 0.0f, 0.0f, 15.0f, 0.0f, 1.0f, 0.33f, 0.2f, -99999.992188f, 0.0f, 8.0f, 55.0f, 65.0f, 55.0f, 0.0f, 1.0f}, - dCamParam_UNK002, + {1.0f, 0.0f, -99999.99f, 0.75f, 0.25f, 0.0f, 20.0f, 300.0f, 0.0f, 5.0f, 320.0f, 350.0f, 1500.0f, 0.0f, 40.0f, 0.0f, 0.0f, 15.0f, 0.0f, 1.0f, 0.33f, 0.2f, -99999.99f, 0.0f, 8.0f, 55.0f, 65.0f, 55.0f, 0.0f, 1.0f}, + dCamPrmFlg_UNK002, }, { 'FP01', 0x1, - {1.0f, 0.0f, -99999.992188f, 0.7f, 0.25f, 50.0f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, 480.0f, 280.0f, -99999.992188f, 0.66f, 0.05f, 10.0f, -60.0f, 60.0f, 2.0f, 0.05f, 0.2f, -99999.992188f, -99999.992188f, 1.0f, 0.18f, 60.0f, -99999.992188f, -99999.992188f, -99999.992188f, 0.05f}, - dCamParam_UNK001 | dCamParam_UNK004 | dCamParam_UNK400, + {1.0f, 0.0f, -99999.99f, 0.7f, 0.25f, 50.0f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, 480.0f, 280.0f, -99999.99f, 0.66f, 0.05f, 10.0f, -60.0f, 60.0f, 2.0f, 0.05f, 0.2f, -99999.99f, -99999.99f, 1.0f, 0.18f, 60.0f, -99999.99f, -99999.99f, -99999.99f, 0.05f}, + dCamPrmFlg_UNK001 | dCamPrmFlg_UNK004 | dCamPrmFlg_UNK400, }, { 'ZZ00', 0x11, - {10.0f, 0.0f, -99999.992188f, -99999.992188f, -99999.992188f, 200.0f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, 320.0f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, 3.0f, -99999.992188f, -99999.992188f, 0.3f, -99999.992188f, 0.33f, -99999.992188f, -99999.992188f, 1.0f, -99999.992188f, 60.0f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f}, + {10.0f, 0.0f, -99999.99f, -99999.99f, -99999.99f, 200.0f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, 320.0f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, 3.0f, -99999.99f, -99999.99f, 0.3f, -99999.99f, 0.33f, -99999.99f, -99999.99f, 1.0f, -99999.99f, 60.0f, -99999.99f, -99999.99f, -99999.99f, -99999.99f}, 0, }, { 'PN13', 0x5, - {1.0f, 0.0f, -99999.992188f, 0.15f, 0.15f, -20.0f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, 1000.0f, 50.0f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, 0.75f, 10.0f, 50.0f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f}, - dCamParam_UNK002 | dCamParam_UNK040, + {1.0f, 0.0f, -99999.99f, 0.15f, 0.15f, -20.0f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, 1000.0f, 50.0f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, 0.75f, 10.0f, 50.0f, -99999.99f, -99999.99f, -99999.99f, -99999.99f}, + dCamPrmFlg_UNK002 | dCamPrmFlg_UNK040, }, { 'FN82', 0x1, - {1.0f, 0.0f, -99999.992188f, 0.75f, 0.25f, 30.0f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, 1200.0f, 350.0f, -99999.992188f, 0.66f, 0.05f, 15.0f, -40.0f, 60.0f, 2.0f, 0.05f, 0.1f, -99999.992188f, -99999.992188f, 1.0f, 0.01f, 55.0f, -99999.992188f, -99999.992188f, -99999.992188f, 0.05f}, - dCamParam_UNK001 | dCamParam_UNK400, + {1.0f, 0.0f, -99999.99f, 0.75f, 0.25f, 30.0f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, 1200.0f, 350.0f, -99999.99f, 0.66f, 0.05f, 15.0f, -40.0f, 60.0f, 2.0f, 0.05f, 0.1f, -99999.99f, -99999.99f, 1.0f, 0.01f, 55.0f, -99999.99f, -99999.99f, -99999.99f, 0.05f}, + dCamPrmFlg_UNK001 | dCamPrmFlg_UNK400, }, { 'IN01', 0x7, - {50.0f, 0.0f, -99999.992188f, 0.75f, 0.25f, 20.0f, 20.0f, -99999.992188f, -99999.992188f, -99999.992188f, 680.0f, 250.0f, -99999.992188f, 0.66f, 0.05f, 12.0f, -40.0f, 60.0f, -99999.992188f, 0.05f, 0.4f, 0.05f, -99999.992188f, 45.0f, 45.0f, 62.0f, -99999.992188f, 2.5f, -99999.992188f, 0.05f}, - dCamParam_UNK001 | dCamParam_UNK004 | dCamParam_UNK400, + {50.0f, 0.0f, -99999.99f, 0.75f, 0.25f, 20.0f, 20.0f, -99999.99f, -99999.99f, -99999.99f, 680.0f, 250.0f, -99999.99f, 0.66f, 0.05f, 12.0f, -40.0f, 60.0f, -99999.99f, 0.05f, 0.4f, 0.05f, -99999.99f, 45.0f, 45.0f, 62.0f, -99999.99f, 2.5f, -99999.99f, 0.05f}, + dCamPrmFlg_UNK001 | dCamPrmFlg_UNK004 | dCamPrmFlg_UNK400, }, { 'IN02', 0x7, - {50.0f, 0.0f, -99999.992188f, 0.75f, 0.25f, 20.0f, 20.0f, -99999.992188f, -99999.992188f, -99999.992188f, 750.0f, 450.0f, -99999.992188f, 0.66f, 0.05f, 35.0f, -40.0f, 60.0f, -99999.992188f, 0.05f, 0.4f, 0.05f, -99999.992188f, 10.0f, 10.0f, 65.0f, -99999.992188f, 2.0f, -99999.992188f, 0.05f}, - dCamParam_UNK001 | dCamParam_UNK004 | dCamParam_UNK400, + {50.0f, 0.0f, -99999.99f, 0.75f, 0.25f, 20.0f, 20.0f, -99999.99f, -99999.99f, -99999.99f, 750.0f, 450.0f, -99999.99f, 0.66f, 0.05f, 35.0f, -40.0f, 60.0f, -99999.99f, 0.05f, 0.4f, 0.05f, -99999.99f, 10.0f, 10.0f, 65.0f, -99999.99f, 2.0f, -99999.99f, 0.05f}, + dCamPrmFlg_UNK001 | dCamPrmFlg_UNK004 | dCamPrmFlg_UNK400, }, { 'MM82', 0xA, - {1.0f, 0.0f, -99999.992188f, 0.75f, 0.25f, 0.0f, 20.0f, 100.0f, 0.0f, 45.0f, 320.0f, 200.0f, 1500.0f, 30.0f, 50.0f, 30.0f, -10.0f, 30.0f, 0.0f, 1.5f, 0.33f, 0.2f, -99999.992188f, 0.0f, 6.0f, 55.0f, 55.0f, 55.0f, 0.0f, 1.0f}, - dCamParam_UNK002, + {1.0f, 0.0f, -99999.99f, 0.75f, 0.25f, 0.0f, 20.0f, 100.0f, 0.0f, 45.0f, 320.0f, 200.0f, 1500.0f, 30.0f, 50.0f, 30.0f, -10.0f, 30.0f, 0.0f, 1.5f, 0.33f, 0.2f, -99999.99f, 0.0f, 6.0f, 55.0f, 55.0f, 55.0f, 0.0f, 1.0f}, + dCamPrmFlg_UNK002, }, { 'LL11', 0x2, - {-99999.992188f, -99999.992188f, -99999.992188f, 0.4f, 0.2f, 7.5f, -17.5f, 20.0f, 20.0f, 40.0f, 1000.0f, 300.0f, 2000.0f, 800.0f, 1500.0f, 0.0f, -10.0f, 40.0f, 30.0f, 40.0f, 0.04f, 0.02f, -99999.992188f, 80.0f, 30.0f, 60.0f, 50.0f, 80.0f, 52.0f, 70.0f}, - dCamParam_UNK002 | dCamParam_UNK004, + {-99999.99f, -99999.99f, -99999.99f, 0.4f, 0.2f, 7.5f, -17.5f, 20.0f, 20.0f, 40.0f, 1000.0f, 300.0f, 2000.0f, 800.0f, 1500.0f, 0.0f, -10.0f, 40.0f, 30.0f, 40.0f, 0.04f, 0.02f, -99999.99f, 80.0f, 30.0f, 60.0f, 50.0f, 80.0f, 52.0f, 70.0f}, + dCamPrmFlg_UNK002 | dCamPrmFlg_UNK004, }, { 'LL01', 0x2, - {-99999.992188f, -99999.992188f, -99999.992188f, 0.4f, 0.2f, 7.5f, -17.5f, 20.0f, -22.5f, 5.0f, 450.0f, 125.0f, 750.0f, 480.0f, 420.0f, 0.0f, -60.0f, 60.0f, 20.0f, -5.0f, 0.04f, 0.02f, -99999.992188f, 75.0f, 20.0f, 55.0f, 52.5f, 54.5f, 48.0f, 62.0f}, - dCamParam_UNK002 | dCamParam_UNK004, + {-99999.99f, -99999.99f, -99999.99f, 0.4f, 0.2f, 7.5f, -17.5f, 20.0f, -22.5f, 5.0f, 450.0f, 125.0f, 750.0f, 480.0f, 420.0f, 0.0f, -60.0f, 60.0f, 20.0f, -5.0f, 0.04f, 0.02f, -99999.99f, 75.0f, 20.0f, 55.0f, 52.5f, 54.5f, 48.0f, 62.0f}, + dCamPrmFlg_UNK002 | dCamPrmFlg_UNK004, }, { 'LL02', 0x2, - {-99999.992188f, -99999.992188f, -99999.992188f, 0.4f, 0.2f, 6.5f, -17.5f, 20.0f, -22.5f, -2.5f, 420.0f, 125.0f, 350.0f, 450.0f, 400.0f, 2.0f, -60.0f, 60.0f, 15.0f, 0.0f, 0.05f, 0.02f, -99999.992188f, 80.0f, 15.0f, 55.0f, 52.5f, 54.5f, 45.0f, 60.0f}, - dCamParam_UNK002 | dCamParam_UNK004, + {-99999.99f, -99999.99f, -99999.99f, 0.4f, 0.2f, 6.5f, -17.5f, 20.0f, -22.5f, -2.5f, 420.0f, 125.0f, 350.0f, 450.0f, 400.0f, 2.0f, -60.0f, 60.0f, 15.0f, 0.0f, 0.05f, 0.02f, -99999.99f, 80.0f, 15.0f, 55.0f, 52.5f, 54.5f, 45.0f, 60.0f}, + dCamPrmFlg_UNK002 | dCamPrmFlg_UNK004, }, { 'LL03', 0x2, - {-99999.992188f, -99999.992188f, -99999.992188f, 0.4f, 0.2f, 0.0f, -17.5f, 20.0f, -17.5f, 0.0f, 375.0f, 125.0f, 750.0f, 425.0f, 350.0f, 15.0f, -60.0f, 60.0f, 20.0f, 12.0f, 0.01f, 0.01f, -99999.992188f, 70.0f, 50.0f, 55.0f, 52.5f, 54.5f, 50.0f, 60.0f}, - dCamParam_UNK002 | dCamParam_UNK004, + {-99999.99f, -99999.99f, -99999.99f, 0.4f, 0.2f, 0.0f, -17.5f, 20.0f, -17.5f, 0.0f, 375.0f, 125.0f, 750.0f, 425.0f, 350.0f, 15.0f, -60.0f, 60.0f, 20.0f, 12.0f, 0.01f, 0.01f, -99999.99f, 70.0f, 50.0f, 55.0f, 52.5f, 54.5f, 50.0f, 60.0f}, + dCamPrmFlg_UNK002 | dCamPrmFlg_UNK004, }, { 'LL04', 0x2, - {-99999.992188f, -99999.992188f, -99999.992188f, 0.1f, 0.4f, -10.0f, 15.0f, 20.0f, -12.5f, -12.5f, 350.0f, 200.0f, 400.0f, 300.0f, 400.0f, 10.0f, -10.0f, 20.0f, 0.0f, 0.0f, 0.06f, 0.02f, -99999.992188f, 80.0f, 10.0f, 47.0f, 47.0f, 47.0f, 47.0f, 47.0f}, - dCamParam_UNK002 | dCamParam_UNK004, + {-99999.99f, -99999.99f, -99999.99f, 0.1f, 0.4f, -10.0f, 15.0f, 20.0f, -12.5f, -12.5f, 350.0f, 200.0f, 400.0f, 300.0f, 400.0f, 10.0f, -10.0f, 20.0f, 0.0f, 0.0f, 0.06f, 0.02f, -99999.99f, 80.0f, 10.0f, 47.0f, 47.0f, 47.0f, 47.0f, 47.0f}, + dCamPrmFlg_UNK002 | dCamPrmFlg_UNK004, }, { 'LL05', 0x2, - {-10000.0f, -10000.0f, -99999.992188f, 0.2f, 0.4f, 6.5f, -17.5f, 20.0f, -40.0f, -50.0f, 280.0f, 125.0f, 350.0f, 300.0f, 100.0f, 2.0f, -40.0f, 40.0f, -15.0f, -5.0f, 0.08f, 0.08f, -99999.992188f, 10.0f, 5.0f, 55.0f, 52.5f, 54.5f, 65.0f, 70.0f}, - dCamParam_UNK002 | dCamParam_UNK004, + {-10000.0f, -10000.0f, -99999.99f, 0.2f, 0.4f, 6.5f, -17.5f, 20.0f, -40.0f, -50.0f, 280.0f, 125.0f, 350.0f, 300.0f, 100.0f, 2.0f, -40.0f, 40.0f, -15.0f, -5.0f, 0.08f, 0.08f, -99999.99f, 10.0f, 5.0f, 55.0f, 52.5f, 54.5f, 65.0f, 70.0f}, + dCamPrmFlg_UNK002 | dCamPrmFlg_UNK004, }, { 'LL10', 0x2, - {-99999.992188f, -99999.992188f, -99999.992188f, 0.2f, 0.4f, 6.5f, -17.5f, 20.0f, -40.0f, 0.0f, 1000.0f, 750.0f, 1100.0f, 700.0f, 350.0f, 2.0f, -40.0f, 40.0f, -8.0f, 0.0f, 0.08f, 0.05f, -99999.992188f, 40.0f, 10.0f, 55.0f, 52.5f, 54.5f, 60.0f, 70.0f}, - dCamParam_UNK002 | dCamParam_UNK004, + {-99999.99f, -99999.99f, -99999.99f, 0.2f, 0.4f, 6.5f, -17.5f, 20.0f, -40.0f, 0.0f, 1000.0f, 750.0f, 1100.0f, 700.0f, 350.0f, 2.0f, -40.0f, 40.0f, -8.0f, 0.0f, 0.08f, 0.05f, -99999.99f, 40.0f, 10.0f, 55.0f, 52.5f, 54.5f, 60.0f, 70.0f}, + dCamPrmFlg_UNK002 | dCamPrmFlg_UNK004, }, { 'LL09', 0x2, - {-99999.992188f, -99999.992188f, -99999.992188f, 0.4f, 0.2f, 60.0f, -20.0f, 120.0f, 0.0f, -10.0f, 420.0f, 300.0f, 350.0f, 650.0f, 800.0f, 2.0f, -60.0f, 60.0f, 15.0f, 5.0f, 0.04f, 0.01f, -99999.992188f, 80.0f, 15.0f, 55.0f, 52.5f, 54.5f, 45.0f, 60.0f}, - dCamParam_UNK002 | dCamParam_UNK004, + {-99999.99f, -99999.99f, -99999.99f, 0.4f, 0.2f, 60.0f, -20.0f, 120.0f, 0.0f, -10.0f, 420.0f, 300.0f, 350.0f, 650.0f, 800.0f, 2.0f, -60.0f, 60.0f, 15.0f, 5.0f, 0.04f, 0.01f, -99999.99f, 80.0f, 15.0f, 55.0f, 52.5f, 54.5f, 45.0f, 60.0f}, + dCamPrmFlg_UNK002 | dCamPrmFlg_UNK004, }, { 'LL12', 0x2, - {-10000.0f, -10000.0f, -99999.992188f, 0.2f, 0.4f, 500.0f, -7.5f, 500.0f, 300.0f, 300.0f, 550.0f, 500.0f, 600.0f, 400.0f, 500.0f, 2.0f, -40.0f, 40.0f, -15.0f, -15.0f, 0.08f, 0.08f, -99999.992188f, 10.0f, 5.0f, 55.0f, 52.5f, 54.5f, 65.0f, 70.0f}, - dCamParam_UNK002 | dCamParam_UNK004, + {-10000.0f, -10000.0f, -99999.99f, 0.2f, 0.4f, 500.0f, -7.5f, 500.0f, 300.0f, 300.0f, 550.0f, 500.0f, 600.0f, 400.0f, 500.0f, 2.0f, -40.0f, 40.0f, -15.0f, -15.0f, 0.08f, 0.08f, -99999.99f, 10.0f, 5.0f, 55.0f, 52.5f, 54.5f, 65.0f, 70.0f}, + dCamPrmFlg_UNK002 | dCamPrmFlg_UNK004, }, { 'LL13', 0x2, - {-10000.0f, -10000.0f, -99999.992188f, 0.4f, 0.2f, 7.5f, -17.5f, 20.0f, 0.0f, 22.5f, 550.0f, 125.0f, 750.0f, 530.0f, 580.0f, -7.5f, -60.0f, 60.0f, 5.0f, -15.0f, 0.04f, 0.04f, -99999.992188f, 60.0f, 20.0f, 55.0f, 52.5f, 54.5f, 65.0f, 70.0f}, - dCamParam_UNK002 | dCamParam_UNK004, + {-10000.0f, -10000.0f, -99999.99f, 0.4f, 0.2f, 7.5f, -17.5f, 20.0f, 0.0f, 22.5f, 550.0f, 125.0f, 750.0f, 530.0f, 580.0f, -7.5f, -60.0f, 60.0f, 5.0f, -15.0f, 0.04f, 0.04f, -99999.99f, 60.0f, 20.0f, 55.0f, 52.5f, 54.5f, 65.0f, 70.0f}, + dCamPrmFlg_UNK002 | dCamPrmFlg_UNK004, }, { 'LL14', 0x2, - {-10000.0f, -10000.0f, -99999.992188f, 0.4f, 0.2f, 0.0f, -17.5f, 20.0f, 0.0f, 60.0f, 600.0f, 125.0f, 350.0f, 500.0f, 700.0f, 0.0f, -60.0f, 60.0f, 0.0f, -10.0f, 0.05f, 0.05f, -99999.992188f, 30.0f, 15.0f, 55.0f, 52.5f, 54.5f, 53.0f, 57.0f}, - dCamParam_UNK002 | dCamParam_UNK004, + {-10000.0f, -10000.0f, -99999.99f, 0.4f, 0.2f, 0.0f, -17.5f, 20.0f, 0.0f, 60.0f, 600.0f, 125.0f, 350.0f, 500.0f, 700.0f, 0.0f, -60.0f, 60.0f, 0.0f, -10.0f, 0.05f, 0.05f, -99999.99f, 30.0f, 15.0f, 55.0f, 52.5f, 54.5f, 53.0f, 57.0f}, + dCamPrmFlg_UNK002 | dCamPrmFlg_UNK004, }, { 'LL15', 0x2, - {-99999.992188f, -99999.992188f, -99999.992188f, 0.4f, 0.2f, 10.0f, -17.5f, 20.0f, -22.5f, -2.5f, 420.0f, 125.0f, 800.0f, 599.0f, 799.0f, 30.0f, 0.0f, 60.0f, 20.0f, 40.0f, 0.05f, 0.05f, -99999.992188f, 80.0f, 15.0f, 55.0f, 52.5f, 54.5f, 45.0f, 60.0f}, - dCamParam_UNK002 | dCamParam_UNK004, + {-99999.99f, -99999.99f, -99999.99f, 0.4f, 0.2f, 10.0f, -17.5f, 20.0f, -22.5f, -2.5f, 420.0f, 125.0f, 800.0f, 599.0f, 799.0f, 30.0f, 0.0f, 60.0f, 20.0f, 40.0f, 0.05f, 0.05f, -99999.99f, 80.0f, 15.0f, 55.0f, 52.5f, 54.5f, 45.0f, 60.0f}, + dCamPrmFlg_UNK002 | dCamPrmFlg_UNK004, }, { 'LL16', 0x2, - {-99999.992188f, -99999.992188f, -99999.992188f, 0.2f, 0.4f, 30.0f, 0.0f, 50.0f, 30.0f, 10.0f, 750.0f, 650.0f, 1000.0f, 600.0f, 350.0f, -10.0f, -40.0f, 40.0f, -8.0f, 0.0f, 0.08f, 0.08f, -99999.992188f, 40.0f, 10.0f, 55.0f, 52.5f, 54.5f, 60.0f, 70.0f}, - dCamParam_UNK002 | dCamParam_UNK004, + {-99999.99f, -99999.99f, -99999.99f, 0.2f, 0.4f, 30.0f, 0.0f, 50.0f, 30.0f, 10.0f, 750.0f, 650.0f, 1000.0f, 600.0f, 350.0f, -10.0f, -40.0f, 40.0f, -8.0f, 0.0f, 0.08f, 0.08f, -99999.99f, 40.0f, 10.0f, 55.0f, 52.5f, 54.5f, 60.0f, 70.0f}, + dCamPrmFlg_UNK002 | dCamPrmFlg_UNK004, }, { 'LL82', 0x2, - {-99999.992188f, -99999.992188f, -99999.992188f, 0.75f, 0.25f, 0.0f, 0.0f, 0.0f, -15.0f, 0.0f, 0.0f, 0.0f, 0.0f, 600.0f, 400.0f, 0.0f, 0.0f, 0.0f, -10.0f, 30.0f, 0.1f, 0.0f, -99999.992188f, 60.0f, 0.0f, 0.0f, 0.0f, 0.0f, 60.0f, 60.0f}, - dCamParam_UNK002 | dCamParam_UNK004, + {-99999.99f, -99999.99f, -99999.99f, 0.75f, 0.25f, 0.0f, 0.0f, 0.0f, -15.0f, 0.0f, 0.0f, 0.0f, 0.0f, 600.0f, 400.0f, 0.0f, 0.0f, 0.0f, -10.0f, 30.0f, 0.1f, 0.0f, -99999.99f, 60.0f, 0.0f, 0.0f, 0.0f, 0.0f, 60.0f, 60.0f}, + dCamPrmFlg_UNK002 | dCamPrmFlg_UNK004, }, { 'FN01', 0x1, - {1.0f, 0.0f, -99999.992188f, 0.7f, 0.25f, 10.0f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, 480.0f, 280.0f, -99999.992188f, 0.66f, 0.08f, 10.0f, -60.0f, 60.0f, 2.0f, 0.05f, 0.2f, -99999.992188f, -99999.992188f, 1.0f, 0.18f, 60.0f, -99999.992188f, -99999.992188f, -99999.992188f, 0.05f}, - dCamParam_UNK001 | dCamParam_UNK004 | dCamParam_UNK400, + {1.0f, 0.0f, -99999.99f, 0.7f, 0.25f, 10.0f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, 480.0f, 280.0f, -99999.99f, 0.66f, 0.08f, 10.0f, -60.0f, 60.0f, 2.0f, 0.05f, 0.2f, -99999.99f, -99999.99f, 1.0f, 0.18f, 60.0f, -99999.99f, -99999.99f, -99999.99f, 0.05f}, + dCamPrmFlg_UNK001 | dCamPrmFlg_UNK004 | dCamPrmFlg_UNK400, }, { 'FN02', 0x1, - {1.0f, 0.0f, -99999.992188f, 0.75f, 0.25f, 0.0f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, 360.0f, 240.0f, -99999.992188f, 0.66f, 0.1f, 10.0f, -40.0f, 60.0f, 2.0f, 0.05f, 0.3f, 0.05f, -99999.992188f, 0.8f, 0.1f, 58.0f, -99999.992188f, -99999.992188f, -99999.992188f, 0.05f}, - dCamParam_UNK001 | dCamParam_UNK004 | dCamParam_UNK400, + {1.0f, 0.0f, -99999.99f, 0.75f, 0.25f, 0.0f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, 360.0f, 240.0f, -99999.99f, 0.66f, 0.1f, 10.0f, -40.0f, 60.0f, 2.0f, 0.05f, 0.3f, 0.05f, -99999.99f, 0.8f, 0.1f, 58.0f, -99999.99f, -99999.99f, -99999.99f, 0.05f}, + dCamPrmFlg_UNK001 | dCamPrmFlg_UNK004 | dCamPrmFlg_UNK400, }, { 'FN03', 0x1, - {1.0f, 0.0f, -99999.992188f, 0.75f, 0.25f, -5.0f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, 350.0f, 260.0f, -99999.992188f, 0.66f, 0.08f, 14.0f, 10.0f, 60.0f, 2.0f, 0.05f, 0.3f, -99999.992188f, -99999.992188f, 1.0f, 0.2f, 60.0f, -99999.992188f, -99999.992188f, -99999.992188f, 0.05f}, - dCamParam_UNK001 | dCamParam_UNK004 | dCamParam_UNK400, + {1.0f, 0.0f, -99999.99f, 0.75f, 0.25f, -5.0f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, 350.0f, 260.0f, -99999.99f, 0.66f, 0.08f, 14.0f, 10.0f, 60.0f, 2.0f, 0.05f, 0.3f, -99999.99f, -99999.99f, 1.0f, 0.2f, 60.0f, -99999.99f, -99999.99f, -99999.99f, 0.05f}, + dCamPrmFlg_UNK001 | dCamPrmFlg_UNK004 | dCamPrmFlg_UNK400, }, { 'FN04', 0x1, - {1.0f, 0.1f, -99999.992188f, 0.75f, 0.25f, 0.0f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, 480.0f, 350.0f, -99999.992188f, 0.66f, 0.1f, 18.0f, 15.0f, 25.0f, 2.0f, 0.05f, 0.39f, -99999.992188f, -99999.992188f, 1.0f, 0.2f, 55.0f, -99999.992188f, -99999.992188f, -99999.992188f, 0.05f}, - dCamParam_UNK001 | dCamParam_UNK004 | dCamParam_UNK400, + {1.0f, 0.1f, -99999.99f, 0.75f, 0.25f, 0.0f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, 480.0f, 350.0f, -99999.99f, 0.66f, 0.1f, 18.0f, 15.0f, 25.0f, 2.0f, 0.05f, 0.39f, -99999.99f, -99999.99f, 1.0f, 0.2f, 55.0f, -99999.99f, -99999.99f, -99999.99f, 0.05f}, + dCamPrmFlg_UNK001 | dCamPrmFlg_UNK004 | dCamPrmFlg_UNK400, }, { 'FN06', 0x1, - {1.0f, 0.0f, -99999.992188f, 0.75f, 0.25f, -25.0f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, 230.0f, 240.0f, -99999.992188f, 0.2f, 0.05f, 5.0f, -40.0f, 60.0f, 2.0f, 0.05f, 0.01f, -99999.992188f, -99999.992188f, 1.0f, 0.2f, 55.0f, -99999.992188f, -99999.992188f, -99999.992188f, 0.05f}, - dCamParam_UNK001 | dCamParam_UNK004 | dCamParam_UNK400, + {1.0f, 0.0f, -99999.99f, 0.75f, 0.25f, -25.0f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, 230.0f, 240.0f, -99999.99f, 0.2f, 0.05f, 5.0f, -40.0f, 60.0f, 2.0f, 0.05f, 0.01f, -99999.99f, -99999.99f, 1.0f, 0.2f, 55.0f, -99999.99f, -99999.99f, -99999.99f, 0.05f}, + dCamPrmFlg_UNK001 | dCamPrmFlg_UNK004 | dCamPrmFlg_UNK400, }, { 'FN09', 0x1, - {0.5f, 0.0f, -99999.992188f, 0.75f, 0.25f, -10.0f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, 460.0f, 210.0f, -99999.992188f, 0.66f, 0.09f, 15.0f, -40.0f, 60.0f, 2.0f, 0.05f, 0.08f, -99999.992188f, -99999.992188f, 2.0f, 0.3f, 52.0f, -99999.992188f, -99999.992188f, -99999.992188f, 0.05f}, - dCamParam_UNK001 | dCamParam_UNK400, + {0.5f, 0.0f, -99999.99f, 0.75f, 0.25f, -10.0f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, 460.0f, 210.0f, -99999.99f, 0.66f, 0.09f, 15.0f, -40.0f, 60.0f, 2.0f, 0.05f, 0.08f, -99999.99f, -99999.99f, 2.0f, 0.3f, 52.0f, -99999.99f, -99999.99f, -99999.99f, 0.05f}, + dCamPrmFlg_UNK001 | dCamPrmFlg_UNK400, }, { 'FN07', 0x1, - {1.0f, 0.0f, -99999.992188f, 0.75f, 0.25f, 0.0f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, 430.0f, 280.0f, -99999.992188f, 0.66f, 0.1f, 13.0f, -40.0f, 60.0f, 2.0f, 0.05f, 0.35f, -99999.992188f, -99999.992188f, 1.0f, 0.2f, 55.0f, -99999.992188f, -99999.992188f, -99999.992188f, 0.05f}, - dCamParam_UNK001 | dCamParam_UNK004 | dCamParam_UNK400, + {1.0f, 0.0f, -99999.99f, 0.75f, 0.25f, 0.0f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, 430.0f, 280.0f, -99999.99f, 0.66f, 0.1f, 13.0f, -40.0f, 60.0f, 2.0f, 0.05f, 0.35f, -99999.99f, -99999.99f, 1.0f, 0.2f, 55.0f, -99999.99f, -99999.99f, -99999.99f, 0.05f}, + dCamPrmFlg_UNK001 | dCamPrmFlg_UNK004 | dCamPrmFlg_UNK400, }, { 'FN10', 0x1, - {1.0f, 0.0f, -99999.992188f, 0.75f, 0.25f, 15.0f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, 420.0f, 250.0f, -99999.992188f, 0.66f, 0.08f, 5.0f, -60.0f, 60.0f, 2.0f, 0.05f, 0.25f, -99999.992188f, -99999.992188f, 1.0f, 0.1f, 60.0f, -99999.992188f, -99999.992188f, -99999.992188f, 0.05f}, - dCamParam_UNK001 | dCamParam_UNK004 | dCamParam_UNK400, + {1.0f, 0.0f, -99999.99f, 0.75f, 0.25f, 15.0f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, 420.0f, 250.0f, -99999.99f, 0.66f, 0.08f, 5.0f, -60.0f, 60.0f, 2.0f, 0.05f, 0.25f, -99999.99f, -99999.99f, 1.0f, 0.1f, 60.0f, -99999.99f, -99999.99f, -99999.99f, 0.05f}, + dCamPrmFlg_UNK001 | dCamPrmFlg_UNK004 | dCamPrmFlg_UNK400, }, { 'FN14', 0x1, - {0.5f, 0.0f, -99999.992188f, 0.75f, 0.25f, 10.0f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, 450.0f, 300.0f, -99999.992188f, 0.66f, 0.12f, 15.0f, 0.0f, 60.0f, 2.0f, 0.05f, 0.1f, -99999.992188f, -99999.992188f, 1.0f, 0.2f, 55.0f, -99999.992188f, -99999.992188f, -99999.992188f, 0.05f}, - dCamParam_UNK001, + {0.5f, 0.0f, -99999.99f, 0.75f, 0.25f, 10.0f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, 450.0f, 300.0f, -99999.99f, 0.66f, 0.12f, 15.0f, 0.0f, 60.0f, 2.0f, 0.05f, 0.1f, -99999.99f, -99999.99f, 1.0f, 0.2f, 55.0f, -99999.99f, -99999.99f, -99999.99f, 0.05f}, + dCamPrmFlg_UNK001, }, { 'FN15', 0x1, - {1.0f, 0.0f, -99999.992188f, 0.75f, 0.25f, 32.0f, -10000.0f, -10000.0f, -10000.0f, -10000.0f, 320.0f, 200.0f, -10000.0f, 0.66f, 0.08f, -23.0f, -20.0f, 10.0f, 2.0f, 0.5f, 0.01f, 0.1f, -99999.992188f, 0.1f, 0.1f, 55.0f, -10000.0f, -10000.0f, -10000.0f, 0.05f}, - dCamParam_UNK002 | dCamParam_UNK004 | dCamParam_UNK400, + {1.0f, 0.0f, -99999.99f, 0.75f, 0.25f, 32.0f, -10000.0f, -10000.0f, -10000.0f, -10000.0f, 320.0f, 200.0f, -10000.0f, 0.66f, 0.08f, -23.0f, -20.0f, 10.0f, 2.0f, 0.5f, 0.01f, 0.1f, -99999.99f, 0.1f, 0.1f, 55.0f, -10000.0f, -10000.0f, -10000.0f, 0.05f}, + dCamPrmFlg_UNK002 | dCamPrmFlg_UNK004 | dCamPrmFlg_UNK400, }, { 'FN17', 0x1, - {1.0f, 0.0f, -99999.992188f, 0.75f, 0.25f, -5.0f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, 380.0f, 200.0f, -99999.992188f, 0.66f, 0.1f, 10.0f, -40.0f, 60.0f, 2.0f, 0.08f, 0.18f, 0.05f, -99999.992188f, 2.0f, 0.1f, 55.0f, -99999.992188f, -99999.992188f, -99999.992188f, 0.05f}, - dCamParam_UNK001 | dCamParam_UNK004 | dCamParam_UNK400, + {1.0f, 0.0f, -99999.99f, 0.75f, 0.25f, -5.0f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, 380.0f, 200.0f, -99999.99f, 0.66f, 0.1f, 10.0f, -40.0f, 60.0f, 2.0f, 0.08f, 0.18f, 0.05f, -99999.99f, 2.0f, 0.1f, 55.0f, -99999.99f, -99999.99f, -99999.99f, 0.05f}, + dCamPrmFlg_UNK001 | dCamPrmFlg_UNK004 | dCamPrmFlg_UNK400, }, { 'FN20', 0x1, - {1.0f, 0.0f, -99999.992188f, 0.75f, 0.25f, -20.0f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, 330.0f, 280.0f, -99999.992188f, 0.66f, 0.15f, 12.0f, -40.0f, 60.0f, 2.0f, 0.05f, 0.2f, -99999.992188f, -99999.992188f, 1.0f, 0.1f, 60.0f, -99999.992188f, -99999.992188f, -99999.992188f, 0.05f}, - dCamParam_UNK001 | dCamParam_UNK004 | dCamParam_UNK200 | dCamParam_UNK400, + {1.0f, 0.0f, -99999.99f, 0.75f, 0.25f, -20.0f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, 330.0f, 280.0f, -99999.99f, 0.66f, 0.15f, 12.0f, -40.0f, 60.0f, 2.0f, 0.05f, 0.2f, -99999.99f, -99999.99f, 1.0f, 0.1f, 60.0f, -99999.99f, -99999.99f, -99999.99f, 0.05f}, + dCamPrmFlg_UNK001 | dCamPrmFlg_UNK004 | dCamPrmFlg_UNK200 | dCamPrmFlg_UNK400, }, { 'FN21', 0x1, - {1.0f, 0.0f, -99999.992188f, 0.8f, 0.25f, 8.0f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, 340.0f, 220.0f, -99999.992188f, 0.66f, 0.08f, 6.0f, -40.0f, 70.0f, 2.0f, 0.05f, 0.16f, -99999.992188f, -99999.992188f, 1.0f, 0.2f, 64.0f, -99999.992188f, -99999.992188f, -99999.992188f, 0.05f}, - dCamParam_UNK001 | dCamParam_UNK004 | dCamParam_UNK400, + {1.0f, 0.0f, -99999.99f, 0.8f, 0.25f, 8.0f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, 340.0f, 220.0f, -99999.99f, 0.66f, 0.08f, 6.0f, -40.0f, 70.0f, 2.0f, 0.05f, 0.16f, -99999.99f, -99999.99f, 1.0f, 0.2f, 64.0f, -99999.99f, -99999.99f, -99999.99f, 0.05f}, + dCamPrmFlg_UNK001 | dCamPrmFlg_UNK004 | dCamPrmFlg_UNK400, }, { 'FN22', 0x1, - {1.0f, 0.0f, -99999.992188f, 0.75f, 0.25f, -25.0f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, 1500.0f, 1200.0f, -99999.992188f, 0.66f, 0.08f, 35.0f, 30.0f, 40.0f, 2.0f, 0.05f, 0.1f, -10000.0f, -99999.992188f, 2.0f, 0.05f, 60.0f, -99999.992188f, -99999.992188f, -99999.992188f, 0.05f}, - dCamParam_UNK001 | dCamParam_UNK004 | dCamParam_UNK400, + {1.0f, 0.0f, -99999.99f, 0.75f, 0.25f, -25.0f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, 1500.0f, 1200.0f, -99999.99f, 0.66f, 0.08f, 35.0f, 30.0f, 40.0f, 2.0f, 0.05f, 0.1f, -10000.0f, -99999.99f, 2.0f, 0.05f, 60.0f, -99999.99f, -99999.99f, -99999.99f, 0.05f}, + dCamPrmFlg_UNK001 | dCamPrmFlg_UNK004 | dCamPrmFlg_UNK400, }, { 'FN23', 0x1, - {1.0f, 0.0f, -99999.992188f, 0.75f, 0.25f, 32.0f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, 1000.0f, 800.0f, -99999.992188f, 0.66f, 0.1f, 20.0f, 15.0f, 25.0f, 2.0f, 0.05f, 0.1f, -10000.0f, -99999.992188f, 2.0f, 0.05f, 50.0f, -99999.992188f, -99999.992188f, -99999.992188f, 0.05f}, - dCamParam_UNK001 | dCamParam_UNK004 | dCamParam_UNK400, + {1.0f, 0.0f, -99999.99f, 0.75f, 0.25f, 32.0f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, 1000.0f, 800.0f, -99999.99f, 0.66f, 0.1f, 20.0f, 15.0f, 25.0f, 2.0f, 0.05f, 0.1f, -10000.0f, -99999.99f, 2.0f, 0.05f, 50.0f, -99999.99f, -99999.99f, -99999.99f, 0.05f}, + dCamPrmFlg_UNK001 | dCamPrmFlg_UNK004 | dCamPrmFlg_UNK400, }, { 'FN24', 0x1, - {1.0f, 0.0f, -99999.992188f, 0.75f, 0.25f, 0.0f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, 600.0f, 350.0f, -99999.992188f, 0.66f, 0.09f, 25.0f, -60.0f, 60.0f, 2.0f, 0.05f, 0.33f, -99999.992188f, -99999.992188f, 1.0f, 0.2f, 60.0f, -99999.992188f, -99999.992188f, -99999.992188f, 0.05f}, - dCamParam_UNK001 | dCamParam_UNK004 | dCamParam_UNK400, + {1.0f, 0.0f, -99999.99f, 0.75f, 0.25f, 0.0f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, 600.0f, 350.0f, -99999.99f, 0.66f, 0.09f, 25.0f, -60.0f, 60.0f, 2.0f, 0.05f, 0.33f, -99999.99f, -99999.99f, 1.0f, 0.2f, 60.0f, -99999.99f, -99999.99f, -99999.99f, 0.05f}, + dCamPrmFlg_UNK001 | dCamPrmFlg_UNK004 | dCamPrmFlg_UNK400, }, { 'FN26', 0x1, - {1.0f, 0.0f, -99999.992188f, 0.75f, 0.25f, -25.0f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, 800.0f, 800.0f, -99999.992188f, 0.66f, 0.1f, 35.0f, 30.0f, 40.0f, 2.0f, 0.05f, 0.1f, -10000.0f, -99999.992188f, 2.0f, 0.05f, 60.0f, -99999.992188f, -99999.992188f, -99999.992188f, 0.05f}, - dCamParam_UNK001 | dCamParam_UNK004 | dCamParam_UNK400, + {1.0f, 0.0f, -99999.99f, 0.75f, 0.25f, -25.0f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, 800.0f, 800.0f, -99999.99f, 0.66f, 0.1f, 35.0f, 30.0f, 40.0f, 2.0f, 0.05f, 0.1f, -10000.0f, -99999.99f, 2.0f, 0.05f, 60.0f, -99999.99f, -99999.99f, -99999.99f, 0.05f}, + dCamPrmFlg_UNK001 | dCamPrmFlg_UNK004 | dCamPrmFlg_UNK400, }, { 'FN27', 0x1, - {1.0f, 0.0f, -99999.992188f, 0.75f, 0.25f, 32.0f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, 1250.0f, 1000.0f, -99999.992188f, 0.66f, 0.09f, 0.0f, -10.0f, 10.0f, 2.0f, 0.5f, 0.01f, 0.1f, -99999.992188f, 0.1f, 0.1f, 55.0f, -99999.992188f, -99999.992188f, -99999.992188f, 0.05f}, - dCamParam_UNK002 | dCamParam_UNK004 | dCamParam_UNK400, + {1.0f, 0.0f, -99999.99f, 0.75f, 0.25f, 32.0f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, 1250.0f, 1000.0f, -99999.99f, 0.66f, 0.09f, 0.0f, -10.0f, 10.0f, 2.0f, 0.5f, 0.01f, 0.1f, -99999.99f, 0.1f, 0.1f, 55.0f, -99999.99f, -99999.99f, -99999.99f, 0.05f}, + dCamPrmFlg_UNK002 | dCamPrmFlg_UNK004 | dCamPrmFlg_UNK400, }, { 'FN28', 0x1, - {0.5f, 0.0f, -99999.992188f, 0.75f, 0.25f, 5.0f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, 330.0f, 250.0f, -99999.992188f, 0.66f, 0.09f, 8.0f, -40.0f, 60.0f, 2.0f, 0.05f, 0.06f, -99999.992188f, -99999.992188f, 2.0f, 0.3f, 52.0f, -99999.992188f, -99999.992188f, -99999.992188f, 0.05f}, - dCamParam_UNK001 | dCamParam_UNK400, + {0.5f, 0.0f, -99999.99f, 0.75f, 0.25f, 5.0f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, 330.0f, 250.0f, -99999.99f, 0.66f, 0.09f, 8.0f, -40.0f, 60.0f, 2.0f, 0.05f, 0.06f, -99999.99f, -99999.99f, 2.0f, 0.3f, 52.0f, -99999.99f, -99999.99f, -99999.99f, 0.05f}, + dCamPrmFlg_UNK001 | dCamPrmFlg_UNK400, }, { 'FN30', 0x1, - {1.0f, 0.0f, -99999.992188f, 0.75f, 0.25f, 300.0f, -10000.0f, -10000.0f, -10000.0f, -10000.0f, 1000.0f, 900.0f, -10000.0f, 0.66f, 0.08f, -15.0f, -15.0f, 10.0f, 2.0f, 0.5f, 0.01f, 0.1f, -99999.992188f, 0.1f, 0.1f, 55.0f, -10000.0f, -10000.0f, -10000.0f, 0.05f}, - dCamParam_UNK002 | dCamParam_UNK004 | dCamParam_UNK400, + {1.0f, 0.0f, -99999.99f, 0.75f, 0.25f, 300.0f, -10000.0f, -10000.0f, -10000.0f, -10000.0f, 1000.0f, 900.0f, -10000.0f, 0.66f, 0.08f, -15.0f, -15.0f, 10.0f, 2.0f, 0.5f, 0.01f, 0.1f, -99999.99f, 0.1f, 0.1f, 55.0f, -10000.0f, -10000.0f, -10000.0f, 0.05f}, + dCamPrmFlg_UNK002 | dCamPrmFlg_UNK004 | dCamPrmFlg_UNK400, }, { 'FN31', 0x1, - {1.0f, 0.0f, -99999.992188f, 0.75f, 0.25f, 30.0f, -10000.0f, -10000.0f, -10000.0f, -10000.0f, 420.0f, 250.0f, -10000.0f, 0.66f, 0.08f, 0.0f, -60.0f, 60.0f, 2.0f, 0.05f, 0.25f, -10000.0f, -99999.992188f, 1.0f, 0.1f, 55.0f, -10000.0f, -10000.0f, -10000.0f, 0.05f}, - dCamParam_UNK002 | dCamParam_UNK004 | dCamParam_UNK400, + {1.0f, 0.0f, -99999.99f, 0.75f, 0.25f, 30.0f, -10000.0f, -10000.0f, -10000.0f, -10000.0f, 420.0f, 250.0f, -10000.0f, 0.66f, 0.08f, 0.0f, -60.0f, 60.0f, 2.0f, 0.05f, 0.25f, -10000.0f, -99999.99f, 1.0f, 0.1f, 55.0f, -10000.0f, -10000.0f, -10000.0f, 0.05f}, + dCamPrmFlg_UNK002 | dCamPrmFlg_UNK004 | dCamPrmFlg_UNK400, }, { 'FN32', 0x1, - {1.0f, 0.0f, -99999.992188f, 0.75f, 0.25f, 30.0f, -10000.0f, -10000.0f, -10000.0f, -10000.0f, 360.0f, 220.0f, -10000.0f, 0.66f, 0.08f, -5.0f, -60.0f, 60.0f, 2.0f, 0.05f, 0.25f, 0.05f, -99999.992188f, 0.8f, 0.1f, 58.0f, -10000.0f, -10000.0f, -10000.0f, 0.05f}, - dCamParam_UNK002 | dCamParam_UNK004 | dCamParam_UNK400, + {1.0f, 0.0f, -99999.99f, 0.75f, 0.25f, 30.0f, -10000.0f, -10000.0f, -10000.0f, -10000.0f, 360.0f, 220.0f, -10000.0f, 0.66f, 0.08f, -5.0f, -60.0f, 60.0f, 2.0f, 0.05f, 0.25f, 0.05f, -99999.99f, 0.8f, 0.1f, 58.0f, -10000.0f, -10000.0f, -10000.0f, 0.05f}, + dCamPrmFlg_UNK002 | dCamPrmFlg_UNK004 | dCamPrmFlg_UNK400, }, { 'FN33', 0x1, - {1.0f, 0.0f, -99999.992188f, 0.75f, 0.25f, 0.0f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, 1300.0f, 1000.0f, 1350.0f, 0.66f, 0.05f, 30.0f, 0.0f, 60.0f, 2.0f, 0.09f, 0.3f, 0.05f, -99999.992188f, 0.8f, 0.1f, 58.0f, -99999.992188f, -99999.992188f, -99999.992188f, 0.05f}, - dCamParam_UNK001 | dCamParam_UNK004 | dCamParam_UNK400, + {1.0f, 0.0f, -99999.99f, 0.75f, 0.25f, 0.0f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, 1300.0f, 1000.0f, 1350.0f, 0.66f, 0.05f, 30.0f, 0.0f, 60.0f, 2.0f, 0.09f, 0.3f, 0.05f, -99999.99f, 0.8f, 0.1f, 58.0f, -99999.99f, -99999.99f, -99999.99f, 0.05f}, + dCamPrmFlg_UNK001 | dCamPrmFlg_UNK004 | dCamPrmFlg_UNK400, }, { 'FN34', 0x1, - {1.0f, 0.0f, -99999.992188f, 0.75f, 0.25f, 30.0f, -10000.0f, -10000.0f, -10000.0f, -10000.0f, 1000.0f, 900.0f, -10000.0f, 0.66f, 0.08f, 45.0f, -60.0f, 60.0f, 2.0f, 0.05f, 0.25f, 0.05f, -99999.992188f, 0.8f, 0.1f, 58.0f, -10000.0f, -10000.0f, -10000.0f, 0.05f}, - dCamParam_UNK002 | dCamParam_UNK004 | dCamParam_UNK400, + {1.0f, 0.0f, -99999.99f, 0.75f, 0.25f, 30.0f, -10000.0f, -10000.0f, -10000.0f, -10000.0f, 1000.0f, 900.0f, -10000.0f, 0.66f, 0.08f, 45.0f, -60.0f, 60.0f, 2.0f, 0.05f, 0.25f, 0.05f, -99999.99f, 0.8f, 0.1f, 58.0f, -10000.0f, -10000.0f, -10000.0f, 0.05f}, + dCamPrmFlg_UNK002 | dCamPrmFlg_UNK004 | dCamPrmFlg_UNK400, }, { 'FN35', 0x1, - {1.0f, 0.0f, -99999.992188f, 0.75f, 0.25f, 50.0f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, 1250.0f, 1000.0f, -99999.992188f, 0.66f, 0.09f, 0.0f, -15.0f, 10.0f, 0.0f, 0.5f, 0.01f, 0.1f, -99999.992188f, 0.1f, 0.1f, 55.0f, -99999.992188f, -99999.992188f, -99999.992188f, 0.05f}, - dCamParam_UNK002 | dCamParam_UNK004 | dCamParam_UNK400, + {1.0f, 0.0f, -99999.99f, 0.75f, 0.25f, 50.0f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, 1250.0f, 1000.0f, -99999.99f, 0.66f, 0.09f, 0.0f, -15.0f, 10.0f, 0.0f, 0.5f, 0.01f, 0.1f, -99999.99f, 0.1f, 0.1f, 55.0f, -99999.99f, -99999.99f, -99999.99f, 0.05f}, + dCamPrmFlg_UNK002 | dCamPrmFlg_UNK004 | dCamPrmFlg_UNK400, }, { 'LL17', 0x2, - {-99999.992188f, -99999.992188f, -99999.992188f, 0.4f, 0.2f, 7.5f, -17.5f, 20.0f, 20.0f, 40.0f, 1000.0f, 300.0f, 2000.0f, 800.0f, 1600.0f, 0.0f, -10.0f, 40.0f, 30.0f, 40.0f, 0.04f, 0.03f, -99999.992188f, 80.0f, 30.0f, 60.0f, 50.0f, 80.0f, 52.0f, 45.0f}, - dCamParam_UNK002 | dCamParam_UNK004, + {-99999.99f, -99999.99f, -99999.99f, 0.4f, 0.2f, 7.5f, -17.5f, 20.0f, 20.0f, 40.0f, 1000.0f, 300.0f, 2000.0f, 800.0f, 1600.0f, 0.0f, -10.0f, 40.0f, 30.0f, 40.0f, 0.04f, 0.03f, -99999.99f, 80.0f, 30.0f, 60.0f, 50.0f, 80.0f, 52.0f, 45.0f}, + dCamPrmFlg_UNK002 | dCamPrmFlg_UNK004, }, { 'FN37', 0x1, - {1.0f, 0.0f, -99999.992188f, 0.75f, 0.25f, 15.0f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, 1050.0f, 950.0f, -99999.992188f, 0.66f, 0.05f, 20.0f, 15.0f, 45.0f, 2.0f, 0.05f, 0.12f, -99999.992188f, -99999.992188f, 1.0f, 0.2f, 60.0f, -99999.992188f, -99999.992188f, -99999.992188f, 0.05f}, - dCamParam_UNK001 | dCamParam_UNK400, + {1.0f, 0.0f, -99999.99f, 0.75f, 0.25f, 15.0f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, 1050.0f, 950.0f, -99999.99f, 0.66f, 0.05f, 20.0f, 15.0f, 45.0f, 2.0f, 0.05f, 0.12f, -99999.99f, -99999.99f, 1.0f, 0.2f, 60.0f, -99999.99f, -99999.99f, -99999.99f, 0.05f}, + dCamPrmFlg_UNK001 | dCamPrmFlg_UNK400, }, #if VERSION == VERSION_JPN { 'FN38', 0x1, - {1.0f, 0.0f, -99999.992188f, 0.75f, 0.25f, 40.0f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, 800.0f, 600.0f, -99999.992188f, 0.66f, 0.15f, 15.0f, -40.0f, 60.0f, 2.0f, 0.05f, 0.3f, 0.05f, -99999.992188f, 0.8f, 0.1f, 62.0f, -99999.992188f, -99999.992188f, -99999.992188f, 0.05f}, - dCamParam_UNK001 | dCamParam_UNK004 | dCamParam_UNK400, + {1.0f, 0.0f, -99999.99f, 0.75f, 0.25f, 40.0f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, 800.0f, 600.0f, -99999.99f, 0.66f, 0.15f, 15.0f, -40.0f, 60.0f, 2.0f, 0.05f, 0.3f, 0.05f, -99999.99f, 0.8f, 0.1f, 62.0f, -99999.99f, -99999.99f, -99999.99f, 0.05f}, + dCamPrmFlg_UNK001 | dCamPrmFlg_UNK004 | dCamPrmFlg_UNK400, }, #endif { 'BE08', 0x8, - {100.0f, 0.0f, -99999.992188f, 0.75f, 0.15f, 80.0f, -99999.992188f, -99999.992188f, 0.0f, -99999.992188f, 500.0f, -99999.992188f, -99999.992188f, 0.0f, 40.0f, 20.0f, -80.0f, 80.0f, 0.0f, -99999.992188f, 0.1f, 0.1f, -99999.992188f, -99999.992188f, -99999.992188f, 78.0f, -99999.992188f, -99999.992188f, 0.0f, -5.0f}, - dCamParam_UNK001 | dCamParam_UNK004, + {100.0f, 0.0f, -99999.99f, 0.75f, 0.15f, 80.0f, -99999.99f, -99999.99f, 0.0f, -99999.99f, 500.0f, -99999.99f, -99999.99f, 0.0f, 40.0f, 20.0f, -80.0f, 80.0f, 0.0f, -99999.99f, 0.1f, 0.1f, -99999.99f, -99999.99f, -99999.99f, 78.0f, -99999.99f, -99999.99f, 0.0f, -5.0f}, + dCamPrmFlg_UNK001 | dCamPrmFlg_UNK004, }, { 'BE07', 0x8, - {100.0f, 0.0f, -99999.992188f, 0.75f, 0.15f, 240.0f, -99999.992188f, -99999.992188f, 0.0f, -99999.992188f, 750.0f, -99999.992188f, -99999.992188f, 0.0f, 40.0f, 15.0f, -80.0f, 80.0f, 0.0f, -99999.992188f, 0.1f, 0.1f, -99999.992188f, -99999.992188f, -99999.992188f, 66.0f, -99999.992188f, -99999.992188f, 0.0f, -5.0f}, - dCamParam_UNK001 | dCamParam_UNK004, + {100.0f, 0.0f, -99999.99f, 0.75f, 0.15f, 240.0f, -99999.99f, -99999.99f, 0.0f, -99999.99f, 750.0f, -99999.99f, -99999.99f, 0.0f, 40.0f, 15.0f, -80.0f, 80.0f, 0.0f, -99999.99f, 0.1f, 0.1f, -99999.99f, -99999.99f, -99999.99f, 66.0f, -99999.99f, -99999.99f, 0.0f, -5.0f}, + dCamPrmFlg_UNK001 | dCamPrmFlg_UNK004, }, { 'TT04', 0x3, - {0.0f, 0.0f, -99999.992188f, 0.6f, 0.0f, 5.0f, 0.0f, 0.0f, 0.0f, 0.0f, 290.0f, 80.0f, 0.0f, 0.0f, 0.0f, 10.0f, 0.0f, 0.0f, 15.0f, 30.0f, 0.0f, 0.0f, -99999.992188f, 0.0f, 30.0f, 42.0f, 45.0f, 0.0f, 0.0f, 0.0f}, - dCamParam_UNK001, + {0.0f, 0.0f, -99999.99f, 0.6f, 0.0f, 5.0f, 0.0f, 0.0f, 0.0f, 0.0f, 290.0f, 80.0f, 0.0f, 0.0f, 0.0f, 10.0f, 0.0f, 0.0f, 15.0f, 30.0f, 0.0f, 0.0f, -99999.99f, 0.0f, 30.0f, 42.0f, 45.0f, 0.0f, 0.0f, 0.0f}, + dCamPrmFlg_UNK001, }, { 'FP38', 0x1, - {1.0f, 0.0f, -99999.992188f, 0.75f, 0.25f, 40.0f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, 800.0f, 600.0f, -99999.992188f, 0.66f, 0.15f, 45.0f, -40.0f, 80.0f, 2.0f, 0.05f, 0.3f, 0.05f, -99999.992188f, 0.8f, 0.1f, 62.0f, -99999.992188f, -99999.992188f, -99999.992188f, 0.05f}, - dCamParam_UNK001 | dCamParam_UNK004 | dCamParam_UNK400, + {1.0f, 0.0f, -99999.99f, 0.75f, 0.25f, 40.0f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, 800.0f, 600.0f, -99999.99f, 0.66f, 0.15f, 45.0f, -40.0f, 80.0f, 2.0f, 0.05f, 0.3f, 0.05f, -99999.99f, 0.8f, 0.1f, 62.0f, -99999.99f, -99999.99f, -99999.99f, 0.05f}, + dCamPrmFlg_UNK001 | dCamPrmFlg_UNK004 | dCamPrmFlg_UNK400, }, { 'FN39', 0x1, - {1.0f, 0.0f, -99999.992188f, 0.75f, 0.25f, -20.0f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, 380.0f, 300.0f, -99999.992188f, 0.66f, 0.05f, 0.0f, -20.0f, 20.0f, 2.0f, 0.05f, 0.12f, -99999.992188f, -99999.992188f, 1.0f, 0.2f, 60.0f, -99999.992188f, -99999.992188f, -99999.992188f, 0.05f}, - dCamParam_UNK002 | dCamParam_UNK400, + {1.0f, 0.0f, -99999.99f, 0.75f, 0.25f, -20.0f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, 380.0f, 300.0f, -99999.99f, 0.66f, 0.05f, 0.0f, -20.0f, 20.0f, 2.0f, 0.05f, 0.12f, -99999.99f, -99999.99f, 1.0f, 0.2f, 60.0f, -99999.99f, -99999.99f, -99999.99f, 0.05f}, + dCamPrmFlg_UNK002 | dCamPrmFlg_UNK400, }, { 'MM16', 0xA, - {0.0f, 0.0f, -99999.992188f, 0.7f, 0.25f, 10.0f, 20.0f, 40.0f, 0.0f, 1.0f, 320.0f, 250.0f, 500.0f, 0.0f, 28.0f, 20.0f, 20.0f, 30.0f, 0.0f, 0.3f, 0.33f, 0.5f, -99999.992188f, 0.0f, 8.0f, 55.0f, 50.0f, 62.0f, 0.0f, 0.45f}, - dCamParam_UNK002, + {0.0f, 0.0f, -99999.99f, 0.7f, 0.25f, 10.0f, 20.0f, 40.0f, 0.0f, 1.0f, 320.0f, 250.0f, 500.0f, 0.0f, 28.0f, 20.0f, 20.0f, 30.0f, 0.0f, 0.3f, 0.33f, 0.5f, -99999.99f, 0.0f, 8.0f, 55.0f, 50.0f, 62.0f, 0.0f, 0.45f}, + dCamPrmFlg_UNK002, }, { 'MM14', 0xA, - {0.0f, 0.0f, -99999.992188f, 0.55f, 0.15f, 10.0f, 5.0f, 20.0f, 0.0f, 0.5f, 320.0f, 180.0f, 700.0f, 0.0f, 30.0f, 10.0f, 5.0f, 40.0f, 0.0f, 1.7f, 0.33f, 0.5f, -99999.992188f, 0.0f, 3.0f, 55.0f, 50.0f, 60.0f, 0.0f, 0.42f}, - dCamParam_UNK002, + {0.0f, 0.0f, -99999.99f, 0.55f, 0.15f, 10.0f, 5.0f, 20.0f, 0.0f, 0.5f, 320.0f, 180.0f, 700.0f, 0.0f, 30.0f, 10.0f, 5.0f, 40.0f, 0.0f, 1.7f, 0.33f, 0.5f, -99999.99f, 0.0f, 3.0f, 55.0f, 50.0f, 60.0f, 0.0f, 0.42f}, + dCamPrmFlg_UNK002, }, { 'MM15', 0xA, - {0.0f, 0.0f, -99999.992188f, 0.55f, 0.15f, 10.0f, 5.0f, 20.0f, 0.0f, 0.5f, 320.0f, 200.0f, 1000.0f, 0.0f, 40.0f, 10.0f, 5.0f, 40.0f, 0.0f, 1.7f, 0.33f, 0.66f, -99999.992188f, 0.0f, 3.0f, 55.0f, 50.0f, 60.0f, 0.0f, 0.42f}, - dCamParam_UNK002, + {0.0f, 0.0f, -99999.99f, 0.55f, 0.15f, 10.0f, 5.0f, 20.0f, 0.0f, 0.5f, 320.0f, 200.0f, 1000.0f, 0.0f, 40.0f, 10.0f, 5.0f, 40.0f, 0.0f, 1.7f, 0.33f, 0.66f, -99999.99f, 0.0f, 3.0f, 55.0f, 50.0f, 60.0f, 0.0f, 0.42f}, + dCamPrmFlg_UNK002, }, { 'MM07', 0xA, - {0.0f, 0.0f, -99999.992188f, 0.55f, 0.15f, 90.0f, 80.0f, 180.0f, 0.0f, 4.0f, 750.0f, 500.0f, 1000.0f, 0.0f, 32.0f, 0.0f, -5.0f, 23.0f, 0.0f, 1.65f, 0.33f, 0.5f, -99999.992188f, 0.0f, 8.0f, 60.0f, 55.0f, 70.0f, 0.0f, 1.5f}, - dCamParam_UNK002, + {0.0f, 0.0f, -99999.99f, 0.55f, 0.15f, 90.0f, 80.0f, 180.0f, 0.0f, 4.0f, 750.0f, 500.0f, 1000.0f, 0.0f, 32.0f, 0.0f, -5.0f, 23.0f, 0.0f, 1.65f, 0.33f, 0.5f, -99999.99f, 0.0f, 8.0f, 60.0f, 55.0f, 70.0f, 0.0f, 1.5f}, + dCamPrmFlg_UNK002, }, { 'FN81', 0x1, - {1.0f, 0.0f, -99999.992188f, 0.75f, 0.25f, 100.0f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, 600.0f, 600.0f, -99999.992188f, 0.9f, 0.01f, 0.0f, 0.0f, 60.0f, 2.0f, 0.05f, 0.0f, -99999.992188f, -99999.992188f, 0.8f, 0.1f, 55.0f, -99999.992188f, -99999.992188f, -99999.992188f, 0.05f}, - dCamParam_UNK001 | dCamParam_UNK400, + {1.0f, 0.0f, -99999.99f, 0.75f, 0.25f, 100.0f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, 600.0f, 600.0f, -99999.99f, 0.9f, 0.01f, 0.0f, 0.0f, 60.0f, 2.0f, 0.05f, 0.0f, -99999.99f, -99999.99f, 0.8f, 0.1f, 55.0f, -99999.99f, -99999.99f, -99999.99f, 0.05f}, + dCamPrmFlg_UNK001 | dCamPrmFlg_UNK400, }, { 'FN40', 0x1, - {1.0f, 0.0f, -99999.992188f, 0.75f, 0.25f, 70.0f, -10000.0f, -10000.0f, -10000.0f, -10000.0f, 800.0f, 500.0f, -10000.0f, 0.66f, 0.08f, -5.0f, -20.0f, 20.0f, 2.0f, 0.5f, 0.01f, 0.1f, -99999.992188f, 0.1f, 0.1f, 58.0f, -10000.0f, -10000.0f, -10000.0f, 0.05f}, - dCamParam_UNK002 | dCamParam_UNK004 | dCamParam_UNK400, + {1.0f, 0.0f, -99999.99f, 0.75f, 0.25f, 70.0f, -10000.0f, -10000.0f, -10000.0f, -10000.0f, 800.0f, 500.0f, -10000.0f, 0.66f, 0.08f, -5.0f, -20.0f, 20.0f, 2.0f, 0.5f, 0.01f, 0.1f, -99999.99f, 0.1f, 0.1f, 58.0f, -10000.0f, -10000.0f, -10000.0f, 0.05f}, + dCamPrmFlg_UNK002 | dCamPrmFlg_UNK004 | dCamPrmFlg_UNK400, }, { 'FN41', 0x1, - {0.0f, 0.0f, -99999.992188f, 0.75f, 0.25f, 12.0f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, 350.0f, 100.0f, -99999.992188f, 0.66f, 0.09f, 15.0f, -40.0f, 60.0f, 2.0f, 0.05f, 0.1f, -99999.992188f, -99999.992188f, 2.0f, 0.3f, 60.0f, -99999.992188f, -99999.992188f, -99999.992188f, 0.05f}, - dCamParam_UNK001 | dCamParam_UNK400, + {0.0f, 0.0f, -99999.99f, 0.75f, 0.25f, 12.0f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, 350.0f, 100.0f, -99999.99f, 0.66f, 0.09f, 15.0f, -40.0f, 60.0f, 2.0f, 0.05f, 0.1f, -99999.99f, -99999.99f, 2.0f, 0.3f, 60.0f, -99999.99f, -99999.99f, -99999.99f, 0.05f}, + dCamPrmFlg_UNK001 | dCamPrmFlg_UNK400, }, { 'FN19', 0x1, - {1.0f, 0.1f, -99999.992188f, 0.75f, 0.25f, -25.0f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, 480.0f, 250.0f, -99999.992188f, 0.66f, 0.12f, -2.0f, -15.0f, 25.0f, 2.0f, 0.05f, 0.39f, -99999.992188f, -99999.992188f, 1.0f, 0.2f, 55.0f, -99999.992188f, -99999.992188f, -99999.992188f, 0.05f}, - dCamParam_UNK002 | dCamParam_UNK400, + {1.0f, 0.1f, -99999.99f, 0.75f, 0.25f, -25.0f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, 480.0f, 250.0f, -99999.99f, 0.66f, 0.12f, -2.0f, -15.0f, 25.0f, 2.0f, 0.05f, 0.39f, -99999.99f, -99999.99f, 1.0f, 0.2f, 55.0f, -99999.99f, -99999.99f, -99999.99f, 0.05f}, + dCamPrmFlg_UNK002 | dCamPrmFlg_UNK400, }, { 'LL81', 0x2, - {-99999.992188f, -99999.992188f, -99999.992188f, 0.75f, 0.25f, 0.0f, 0.0f, 0.0f, 50.0f, 200.0f, 0.0f, 0.0f, 0.0f, 600.0f, 600.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 1.0f, -99999.992188f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 60.0f, 60.0f}, - dCamParam_UNK002 | dCamParam_UNK004, + {-99999.99f, -99999.99f, -99999.99f, 0.75f, 0.25f, 0.0f, 0.0f, 0.0f, 50.0f, 200.0f, 0.0f, 0.0f, 0.0f, 600.0f, 600.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 1.0f, -99999.99f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 60.0f, 60.0f}, + dCamPrmFlg_UNK002 | dCamPrmFlg_UNK004, }, { 'DD01', 0x10, - {60.0f, 0.0f, -99999.992188f, 0.03f, 0.03f, 50.0f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, 550.0f, 450.0f, -99999.992188f, -99999.992188f, -99999.992188f, 5.0f, -99999.992188f, -99999.992188f, 0.2f, -99999.992188f, 0.15f, -99999.992188f, -99999.992188f, 0.33f, -99999.992188f, 55.0f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f}, - dCamParam_UNK002, + {60.0f, 0.0f, -99999.99f, 0.03f, 0.03f, 50.0f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, 550.0f, 450.0f, -99999.99f, -99999.99f, -99999.99f, 5.0f, -99999.99f, -99999.99f, 0.2f, -99999.99f, 0.15f, -99999.99f, -99999.99f, 0.33f, -99999.99f, 55.0f, -99999.99f, -99999.99f, -99999.99f, -99999.99f}, + dCamPrmFlg_UNK002, }, { 'MM19', 0xA, - {0.0f, 0.0f, -99999.992188f, 0.7f, 0.25f, 0.0f, 10.0f, 35.0f, 0.0f, 1.88f, 320.0f, 250.0f, 600.0f, 0.0f, 20.0f, 0.0f, -5.0f, 70.0f, 0.0f, 2.8f, 0.33f, 0.5f, -99999.992188f, 0.0f, 8.0f, 55.0f, 52.5f, 60.0f, 0.0f, 0.4f}, - dCamParam_UNK002, + {0.0f, 0.0f, -99999.99f, 0.7f, 0.25f, 0.0f, 10.0f, 35.0f, 0.0f, 1.88f, 320.0f, 250.0f, 600.0f, 0.0f, 20.0f, 0.0f, -5.0f, 70.0f, 0.0f, 2.8f, 0.33f, 0.5f, -99999.99f, 0.0f, 8.0f, 55.0f, 52.5f, 60.0f, 0.0f, 0.4f}, + dCamPrmFlg_UNK002, }, { 'DD02', 0x10, - {80.0f, 0.0f, -99999.992188f, 0.03f, 0.03f, 50.0f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, 550.0f, 450.0f, -99999.992188f, -99999.992188f, -99999.992188f, 5.0f, -99999.992188f, -99999.992188f, 0.33f, -99999.992188f, 0.15f, -99999.992188f, -99999.992188f, 0.5f, -99999.992188f, 55.0f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f}, - dCamParam_UNK002, + {80.0f, 0.0f, -99999.99f, 0.03f, 0.03f, 50.0f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, 550.0f, 450.0f, -99999.99f, -99999.99f, -99999.99f, 5.0f, -99999.99f, -99999.99f, 0.33f, -99999.99f, 0.15f, -99999.99f, -99999.99f, 0.5f, -99999.99f, 55.0f, -99999.99f, -99999.99f, -99999.99f, -99999.99f}, + dCamPrmFlg_UNK002, }, { 'FN42', 0x1, - {1.0f, 0.0f, -99999.992188f, 0.75f, 0.25f, 25.0f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, 380.0f, 300.0f, -99999.992188f, 0.66f, 0.05f, 15.0f, -20.0f, 80.0f, 2.0f, 0.05f, 0.12f, -99999.992188f, -99999.992188f, 1.0f, 0.2f, 60.0f, -99999.992188f, -99999.992188f, -99999.992188f, 0.05f}, - dCamParam_UNK001 | dCamParam_UNK004 | dCamParam_UNK400, + {1.0f, 0.0f, -99999.99f, 0.75f, 0.25f, 25.0f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, 380.0f, 300.0f, -99999.99f, 0.66f, 0.05f, 15.0f, -20.0f, 80.0f, 2.0f, 0.05f, 0.12f, -99999.99f, -99999.99f, 1.0f, 0.2f, 60.0f, -99999.99f, -99999.99f, -99999.99f, 0.05f}, + dCamPrmFlg_UNK001 | dCamPrmFlg_UNK004 | dCamPrmFlg_UNK400, }, { 'IN03', 0x7, - {-180.0f, 0.0f, -99999.992188f, 0.75f, 0.25f, 0.0f, 10.0f, -99999.992188f, -99999.992188f, -99999.992188f, 880.0f, 500.0f, -99999.992188f, 0.66f, 0.05f, 50.0f, -40.0f, 60.0f, -99999.992188f, 0.05f, 0.75f, 0.05f, -99999.992188f, 115.0f, 115.0f, 75.0f, -99999.992188f, 0.5f, -99999.992188f, 0.05f}, - dCamParam_UNK002 | dCamParam_UNK004 | dCamParam_UNK400, + {-180.0f, 0.0f, -99999.99f, 0.75f, 0.25f, 0.0f, 10.0f, -99999.99f, -99999.99f, -99999.99f, 880.0f, 500.0f, -99999.99f, 0.66f, 0.05f, 50.0f, -40.0f, 60.0f, -99999.99f, 0.05f, 0.75f, 0.05f, -99999.99f, 115.0f, 115.0f, 75.0f, -99999.99f, 0.5f, -99999.99f, 0.05f}, + dCamPrmFlg_UNK002 | dCamPrmFlg_UNK004 | dCamPrmFlg_UNK400, }, { 'FN43', 0x1, - {1.0f, 0.0f, -99999.992188f, 0.75f, 0.25f, 200.0f, -10000.0f, -10000.0f, -10000.0f, -500.0f, 900.0f, 800.0f, -10000.0f, 0.66f, 0.08f, -3.0f, -20.0f, 20.0f, 2.0f, 0.5f, 0.01f, 0.1f, -99999.992188f, 0.1f, 0.1f, 58.0f, -10000.0f, -10000.0f, -10000.0f, 0.05f}, - dCamParam_UNK002 | dCamParam_UNK004 | dCamParam_UNK400, + {1.0f, 0.0f, -99999.99f, 0.75f, 0.25f, 200.0f, -10000.0f, -10000.0f, -10000.0f, -500.0f, 900.0f, 800.0f, -10000.0f, 0.66f, 0.08f, -3.0f, -20.0f, 20.0f, 2.0f, 0.5f, 0.01f, 0.1f, -99999.99f, 0.1f, 0.1f, 58.0f, -10000.0f, -10000.0f, -10000.0f, 0.05f}, + dCamPrmFlg_UNK002 | dCamPrmFlg_UNK004 | dCamPrmFlg_UNK400, }, { 'FN11', 0x1, - {1.0f, 0.0f, -99999.992188f, 0.75f, 0.25f, 5.0f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, 410.0f, 300.0f, -99999.992188f, 0.66f, 0.08f, 22.0f, 15.0f, 30.0f, 2.0f, 0.05f, 0.07f, -99999.992188f, -99999.992188f, 1.0f, 0.2f, 60.0f, -99999.992188f, -99999.992188f, -99999.992188f, 0.05f}, - dCamParam_UNK001 | dCamParam_UNK004 | dCamParam_UNK400, + {1.0f, 0.0f, -99999.99f, 0.75f, 0.25f, 5.0f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, 410.0f, 300.0f, -99999.99f, 0.66f, 0.08f, 22.0f, 15.0f, 30.0f, 2.0f, 0.05f, 0.07f, -99999.99f, -99999.99f, 1.0f, 0.2f, 60.0f, -99999.99f, -99999.99f, -99999.99f, 0.05f}, + dCamPrmFlg_UNK001 | dCamPrmFlg_UNK004 | dCamPrmFlg_UNK400, }, { 'MM21', 0xA, - {0.0f, 0.0f, -99999.992188f, 0.7f, 0.25f, 0.0f, 20.0f, 35.0f, 0.0f, 1.2f, 320.0f, 250.0f, 750.0f, 0.0f, 27.0f, 0.0f, -30.0f, 30.0f, 0.0f, 2.2f, 0.33f, 0.5f, -99999.992188f, 0.0f, 8.0f, 55.0f, 52.5f, 60.0f, 0.0f, 0.4f}, - dCamParam_UNK002, + {0.0f, 0.0f, -99999.99f, 0.7f, 0.25f, 0.0f, 20.0f, 35.0f, 0.0f, 1.2f, 320.0f, 250.0f, 750.0f, 0.0f, 27.0f, 0.0f, -30.0f, 30.0f, 0.0f, 2.2f, 0.33f, 0.5f, -99999.99f, 0.0f, 8.0f, 55.0f, 52.5f, 60.0f, 0.0f, 0.4f}, + dCamPrmFlg_UNK002, }, { 'MM20', 0xA, - {0.0f, 0.0f, -99999.992188f, 0.7f, 0.25f, 10.0f, 0.0f, 30.0f, 0.0f, 2.0f, 320.0f, 250.0f, 500.0f, 0.0f, 26.0f, 0.0f, -5.0f, 20.0f, 0.0f, 1.2f, 0.33f, 0.5f, -99999.992188f, 0.0f, 8.0f, 55.0f, 50.0f, 64.0f, 0.0f, 0.9f}, - dCamParam_UNK002, + {0.0f, 0.0f, -99999.99f, 0.7f, 0.25f, 10.0f, 0.0f, 30.0f, 0.0f, 2.0f, 320.0f, 250.0f, 500.0f, 0.0f, 26.0f, 0.0f, -5.0f, 20.0f, 0.0f, 1.2f, 0.33f, 0.5f, -99999.99f, 0.0f, 8.0f, 55.0f, 50.0f, 64.0f, 0.0f, 0.9f}, + dCamPrmFlg_UNK002, }, { 'FN05', 0x1, - {1.0f, 0.0f, -99999.992188f, 0.75f, 0.25f, 20.0f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, 400.0f, 300.0f, -99999.992188f, 0.66f, 0.05f, -5.0f, 0.0f, 20.0f, 2.0f, 0.05f, 0.12f, -99999.992188f, -99999.992188f, 1.0f, 0.2f, 62.0f, -99999.992188f, -99999.992188f, -99999.992188f, 0.05f}, - dCamParam_UNK001 | dCamParam_UNK400, + {1.0f, 0.0f, -99999.99f, 0.75f, 0.25f, 20.0f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, 400.0f, 300.0f, -99999.99f, 0.66f, 0.05f, -5.0f, 0.0f, 20.0f, 2.0f, 0.05f, 0.12f, -99999.99f, -99999.99f, 1.0f, 0.2f, 62.0f, -99999.99f, -99999.99f, -99999.99f, 0.05f}, + dCamPrmFlg_UNK001 | dCamPrmFlg_UNK400, }, { 'FN36', 0x1, - {1.0f, 0.0f, -99999.992188f, 0.25f, 0.1f, -10.0f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, 460.0f, 350.0f, -99999.992188f, 0.66f, 0.12f, 5.0f, -60.0f, 60.0f, 2.0f, 0.05f, 0.5f, -99999.992188f, -99999.992188f, 1.0f, 0.18f, 66.0f, -99999.992188f, -99999.992188f, -99999.992188f, 0.05f}, - dCamParam_UNK002, + {1.0f, 0.0f, -99999.99f, 0.25f, 0.1f, -10.0f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, 460.0f, 350.0f, -99999.99f, 0.66f, 0.12f, 5.0f, -60.0f, 60.0f, 2.0f, 0.05f, 0.5f, -99999.99f, -99999.99f, 1.0f, 0.18f, 66.0f, -99999.99f, -99999.99f, -99999.99f, 0.05f}, + dCamPrmFlg_UNK002, }, { 'MM81', 0xA, - {1.0f, 0.0f, -99999.992188f, 0.75f, 0.25f, 0.0f, 30.0f, 50.0f, 0.0f, 5.0f, 320.0f, 250.0f, 1950.0f, 0.0f, 55.0f, 0.0f, -15.0f, 90.0f, 0.0f, 3.0f, 0.33f, 0.2f, -99999.992188f, 0.0f, 6.0f, 55.0f, 65.0f, 55.0f, 0.0f, 1.5f}, - dCamParam_UNK002, + {1.0f, 0.0f, -99999.99f, 0.75f, 0.25f, 0.0f, 30.0f, 50.0f, 0.0f, 5.0f, 320.0f, 250.0f, 1950.0f, 0.0f, 55.0f, 0.0f, -15.0f, 90.0f, 0.0f, 3.0f, 0.33f, 0.2f, -99999.99f, 0.0f, 6.0f, 55.0f, 65.0f, 55.0f, 0.0f, 1.5f}, + dCamPrmFlg_UNK002, }, { 'SS01', 0x4, - {0.0f, 0.0f, -99999.992188f, -99999.992188f, -99999.992188f, -10.0f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, 20.0f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, 70.0f, 0.45f, 0.04f, -99999.992188f, -99999.992188f, 90.0f, 50.0f, 0.2f, -99999.992188f, -99999.992188f, -99999.992188f}, - dCamParam_UNK002 | dCamParam_UNK080, + {0.0f, 0.0f, -99999.99f, -99999.99f, -99999.99f, -10.0f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, 20.0f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, 70.0f, 0.45f, 0.04f, -99999.99f, -99999.99f, 90.0f, 50.0f, 0.2f, -99999.99f, -99999.99f, -99999.99f}, + dCamPrmFlg_UNK002 | dCamPrmFlg_UNK080, }, { 'LL18', 0x2, - {-10000.0f, -10000.0f, -99999.992188f, 0.2f, 0.4f, 6.5f, -17.5f, 20.0f, -80.0f, 0.0f, 280.0f, 125.0f, 350.0f, 800.0f, 1200.0f, 2.0f, -40.0f, 40.0f, 20.0f, -15.0f, 0.3f, 0.0f, -99999.992188f, 10.0f, 35.0f, 65.0f, 65.0f, 70.0f, 60.0f, 70.0f}, - dCamParam_UNK002 | dCamParam_UNK004, + {-10000.0f, -10000.0f, -99999.99f, 0.2f, 0.4f, 6.5f, -17.5f, 20.0f, -80.0f, 0.0f, 280.0f, 125.0f, 350.0f, 800.0f, 1200.0f, 2.0f, -40.0f, 40.0f, 20.0f, -15.0f, 0.3f, 0.0f, -99999.99f, 10.0f, 35.0f, 65.0f, 65.0f, 70.0f, 60.0f, 70.0f}, + dCamPrmFlg_UNK002 | dCamPrmFlg_UNK004, }, { 'DD04', 0x10, - {80.0f, 0.0f, -99999.992188f, 0.03f, 0.03f, 60.0f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, 450.0f, 400.0f, -99999.992188f, -99999.992188f, -99999.992188f, -4.0f, -99999.992188f, -99999.992188f, 0.33f, -99999.992188f, 0.0f, -99999.992188f, -99999.992188f, -45.0f, -99999.992188f, 45.0f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f}, - dCamParam_UNK002, + {80.0f, 0.0f, -99999.99f, 0.03f, 0.03f, 60.0f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, 450.0f, 400.0f, -99999.99f, -99999.99f, -99999.99f, -4.0f, -99999.99f, -99999.99f, 0.33f, -99999.99f, 0.0f, -99999.99f, -99999.99f, -45.0f, -99999.99f, 45.0f, -99999.99f, -99999.99f, -99999.99f, -99999.99f}, + dCamPrmFlg_UNK002, }, { 'MM22', 0xA, - {0.0f, 0.0f, -99999.992188f, 0.7f, 0.25f, 0.0f, 0.0f, 30.0f, 0.0f, 3.0f, 320.0f, 240.0f, 600.0f, 0.0f, 19.0f, 0.0f, 0.0f, 15.0f, 0.0f, 0.7f, 0.33f, 0.66f, -99999.992188f, 0.0f, 8.0f, 55.0f, 50.0f, 60.0f, 0.0f, 0.5f}, - dCamParam_UNK002, + {0.0f, 0.0f, -99999.99f, 0.7f, 0.25f, 0.0f, 0.0f, 30.0f, 0.0f, 3.0f, 320.0f, 240.0f, 600.0f, 0.0f, 19.0f, 0.0f, 0.0f, 15.0f, 0.0f, 0.7f, 0.33f, 0.66f, -99999.99f, 0.0f, 8.0f, 55.0f, 50.0f, 60.0f, 0.0f, 0.5f}, + dCamPrmFlg_UNK002, }, { 'MM18', 0xA, - {0.0f, 0.0f, -99999.992188f, 0.7f, 0.25f, 20.0f, 30.0f, 25.0f, 0.0f, 0.5f, 300.0f, 210.0f, 480.0f, 0.0f, 18.0f, 20.0f, 35.0f, 0.0f, 0.0f, 2.1f, 0.33f, 0.66f, -99999.992188f, 0.0f, 8.0f, 55.0f, 55.0f, 58.0f, 0.0f, 0.45f}, - dCamParam_UNK002, + {0.0f, 0.0f, -99999.99f, 0.7f, 0.25f, 20.0f, 30.0f, 25.0f, 0.0f, 0.5f, 300.0f, 210.0f, 480.0f, 0.0f, 18.0f, 20.0f, 35.0f, 0.0f, 0.0f, 2.1f, 0.33f, 0.66f, -99999.99f, 0.0f, 8.0f, 55.0f, 55.0f, 58.0f, 0.0f, 0.45f}, + dCamPrmFlg_UNK002, }, { 'MM17', 0xA, - {0.0f, 0.0f, -99999.992188f, 0.7f, 0.25f, 30.0f, 25.0f, 30.0f, 0.0f, 0.5f, 250.0f, 160.0f, 420.0f, 0.0f, 20.0f, 20.0f, 40.0f, 5.0f, 0.0f, 2.4f, 0.33f, 0.66f, -99999.992188f, 0.0f, 8.0f, 55.0f, 55.0f, 58.0f, 0.0f, 0.45f}, - dCamParam_UNK002, + {0.0f, 0.0f, -99999.99f, 0.7f, 0.25f, 30.0f, 25.0f, 30.0f, 0.0f, 0.5f, 250.0f, 160.0f, 420.0f, 0.0f, 20.0f, 20.0f, 40.0f, 5.0f, 0.0f, 2.4f, 0.33f, 0.66f, -99999.99f, 0.0f, 8.0f, 55.0f, 55.0f, 58.0f, 0.0f, 0.45f}, + dCamPrmFlg_UNK002, }, #if VERSION != VERSION_JPN { 'MM03', 0xA, - {0.0f, 0.0f, -99999.992188f, 0.7f, 0.25f, 10.0f, 0.0f, 30.0f, 0.0f, 5.2f, 320.0f, 260.0f, 660.0f, 0.0f, 25.0f, 0.0f, -10.0f, 30.0f, 0.0f, 2.0f, 0.33f, 0.5f, -99999.992188f, 0.0f, 8.0f, 55.0f, 50.0f, 62.0f, 0.0f, 1.5f}, - dCamParam_UNK002, + {0.0f, 0.0f, -99999.99f, 0.7f, 0.25f, 10.0f, 0.0f, 30.0f, 0.0f, 5.2f, 320.0f, 260.0f, 660.0f, 0.0f, 25.0f, 0.0f, -10.0f, 30.0f, 0.0f, 2.0f, 0.33f, 0.5f, -99999.99f, 0.0f, 8.0f, 55.0f, 50.0f, 62.0f, 0.0f, 1.5f}, + dCamPrmFlg_UNK002, }, { 'MM23', 0xA, - {0.0f, 0.0f, -99999.992188f, 0.7f, 0.25f, 0.0f, 0.0f, 30.0f, 0.0f, 4.0f, 320.0f, 240.0f, 900.0f, 0.0f, 34.0f, 0.0f, -5.0f, 60.0f, 0.0f, 2.6f, 0.33f, 0.66f, -99999.992188f, 0.0f, 8.0f, 55.0f, 50.0f, 60.0f, 0.0f, 0.8f}, - dCamParam_UNK002, + {0.0f, 0.0f, -99999.99f, 0.7f, 0.25f, 0.0f, 0.0f, 30.0f, 0.0f, 4.0f, 320.0f, 240.0f, 900.0f, 0.0f, 34.0f, 0.0f, -5.0f, 60.0f, 0.0f, 2.6f, 0.33f, 0.66f, -99999.99f, 0.0f, 8.0f, 55.0f, 50.0f, 60.0f, 0.0f, 0.8f}, + dCamPrmFlg_UNK002, }, { 'FN38', 0x1, - {1.0f, 0.0f, -99999.992188f, 0.75f, 0.25f, 30.0f, -99999.992188f, -99999.992188f, -99999.992188f, -99999.992188f, 800.0f, 600.0f, -99999.992188f, 0.66f, 0.15f, 15.0f, -40.0f, 60.0f, 2.0f, 0.05f, 0.3f, 0.05f, -99999.992188f, 0.8f, 0.1f, 62.0f, -99999.992188f, -99999.992188f, -99999.992188f, 0.05f}, - dCamParam_UNK001 | dCamParam_UNK004 | dCamParam_UNK400, + {1.0f, 0.0f, -99999.99f, 0.75f, 0.25f, 30.0f, -99999.99f, -99999.99f, -99999.99f, -99999.99f, 800.0f, 600.0f, -99999.99f, 0.66f, 0.15f, 15.0f, -40.0f, 60.0f, 2.0f, 0.05f, 0.3f, 0.05f, -99999.99f, 0.8f, 0.1f, 62.0f, -99999.99f, -99999.99f, -99999.99f, 0.05f}, + dCamPrmFlg_UNK001 | dCamPrmFlg_UNK004 | dCamPrmFlg_UNK400, }, #endif }; diff --git a/src/d/d_cam_type.cpp b/src/d/d_cam_type.cpp index 218bf809d..4f4d022f4 100644 --- a/src/d/d_cam_type.cpp +++ b/src/d/d_cam_type.cpp @@ -5,263 +5,273 @@ #include "d/d_camera.h" -// Note: Not matching for JPN yet. -// All these array values are different because they're indexes into dCamParam_c::styles, which got shifted around. -// Need to make an enum for these. -const dCamera__Type dCamera_c::types[63] = { - { "Empty", { - { 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF }, - { 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF }, - }}, - { "Plain", { - { 0x55, 0x55, 0x48, 0x08, 0x88, 0x37, 0x35, 0x0D, 0x1F, 0x1E }, - { 0x2C, 0x2D, 0x39, 0x13, 0x19, 0x1C, 0x04, 0x27, 0x23, 0x7C }, - }}, - { "Keep", { - { 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF }, - { 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x0004, 0xFFFF, 0xFFFF, 0xFFFF }, - }}, - { "Event", { - { 0x0004, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF }, - { 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x0004, 0xFFFF, 0xFFFF, 0xFFFF }, - }}, - { "Boss01", { - { 0x5C, 0x5C, 0x4A, 0x07, 0x88, 0x37, 0x35, 0x0E, 0x1F, 0x1E }, - { 0x2E, 0x2D, 0x30, 0x13, 0x19, 0x1C, 0x04, 0x27, 0x23, 0x7C }, - }}, - { "Cliff", { - { 0x7A, 0x7A, 0x15, 0x07, 0x88, 0x21, 0x35, 0x0E, 0x0B, 0x0F }, - { 0x2C, 0x2D, 0x32, 0x13, 0x19, 0x1C, 0x04, 0x27, 0x23, 0x7C }, - }}, - { "PlaySlide", { - { 0x5E, 0x5E, 0x46, 0x06, 0x88, 0x37, 0x35, 0x0D, 0x1F, 0x1E }, - { 0x2C, 0x2D, 0x39, 0x13, 0x19, 0x1C, 0x04, 0x27, 0x23, 0x7C }, - }}, - { "Field", { - { 0x53, 0x53, 0x46, 0x06, 0x88, 0x37, 0x35, 0x0D, 0x1F, 0x1E }, - { 0x2C, 0x2D, 0x39, 0x13, 0x19, 0x1C, 0x04, 0x27, 0x23, 0x7C }, - }}, - { "ThrowUp", { - { 0x5F, 0x5F, 0x46, 0x06, 0x88, 0x37, 0x35, 0x0D, 0x1F, 0x1E }, - { 0x2C, 0x2D, 0x31, 0x13, 0x19, 0x1C, 0x04, 0x27, 0x23, 0x7C }, - }}, - { "Gamoss", { - { 0x61, 0x61, 0x4C, 0x07, 0x88, 0x37, 0x35, 0x0E, 0x0B, 0x0F }, - { 0x2C, 0x2D, 0x8E, 0x13, 0x19, 0x1C, 0x04, 0x27, 0x23, 0x7C }, - }}, - { "MiniIsland", { - { 0x62, 0x62, 0x46, 0x06, 0x88, 0x37, 0x35, 0x0D, 0x1F, 0x1E }, - { 0x2C, 0x2D, 0x3B, 0x13, 0x19, 0x1C, 0x04, 0x27, 0x23, 0x7C }, - }}, - { "Cliff2", { - { 0x63, 0x59, 0x17, 0x07, 0x88, 0x37, 0x35, 0x0D, 0x0B, 0x0F }, - { 0x2C, 0x2D, 0x3C, 0x13, 0x19, 0x1C, 0x04, 0x27, 0x23, 0x7C }, - }}, - { "FieldCushion", { - { 0x5A, 0x5A, 0x46, 0x06, 0x88, 0x37, 0x35, 0x0D, 0x1F, 0x1E }, - { 0x2C, 0x2D, 0x39, 0x13, 0x19, 0x1C, 0x04, 0x27, 0x23, 0x7C }, - }}, - { "FixdPos", { - { 0x02, 0x54, 0x47, 0x07, 0x88, 0xFFFF, 0xFFFF, 0x0E, 0x1F, 0x1E }, - { 0x2C, 0x2D, 0x39, 0x13, 0x19, 0x1C, 0x04, 0x27, 0x23, 0x7C }, - }}, - { "SmoothFixdPos", { - { 0x03, 0x54, 0x47, 0x07, 0x88, 0xFFFF, 0xFFFF, 0x0E, 0x1F, 0x1E }, - { 0x2C, 0x2D, 0x39, 0x13, 0x19, 0x1C, 0x04, 0x27, 0x23, 0x7C }, - }}, - { "WaterBattle", { - { 0x28, 0x28, 0x45, 0x07, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF }, - { 0xFFFF, 0xFFFF, 0x75, 0xFFFF, 0x19, 0x1C, 0x04, 0x27, 0x23, 0x7C }, - }}, - { "SmoothFixdPosC", { - { 0x40, 0x54, 0x47, 0x07, 0x88, 0xFFFF, 0xFFFF, 0x0E, 0x1F, 0x1E }, - { 0x2C, 0x2D, 0x39, 0x13, 0x19, 0x1C, 0x04, 0x27, 0x23, 0x7C }, - }}, - { "ThrowInto", { - { 0x2B, 0x2B, 0x46, 0x06, 0x88, 0x37, 0x35, 0x0D, 0x1F, 0x1E }, - { 0x2C, 0x2D, 0x31, 0x13, 0x19, 0x1C, 0x04, 0x27, 0x23, 0x7C }, - }}, - { "Boss03", { - { 0x66, 0x66, 0x4D, 0x07, 0x88, 0x37, 0x35, 0x0E, 0x1F, 0x1E }, - { 0x2E, 0x2D, 0x39, 0x13, 0x19, 0x1C, 0x04, 0x27, 0x23, 0x7C }, - }}, - { "P_Ganon1", { - { 0x67, 0x67, 0x4E, 0x07, 0x88, 0x37, 0x35, 0x0E, 0x1F, 0x1E }, - { 0x2E, 0x2D, 0x39, 0x13, 0x19, 0x1C, 0x04, 0x27, 0x23, 0x7C }, - }}, - { "P_Ganon2", { - { 0x68, 0x68, 0x4F, 0x07, 0x88, 0x37, 0x35, 0x0E, 0x1F, 0x1E }, - { 0x2E, 0x2D, 0x39, 0x13, 0x19, 0x1C, 0x04, 0x27, 0x23, 0x7C }, - }}, - { "WindBoss", { - { 0x69, 0x69, 0x50, 0x07, 0x88, 0x37, 0x35, 0x0E, 0x0B, 0x0F }, - { 0x2C, 0x2D, 0x8E, 0x13, 0x19, 0x1C, 0x04, 0x27, 0x23, 0x7C }, - }}, - { "P_Ganon3", { - { 0x6A, 0x6A, 0x4F, 0x07, 0x88, 0x37, 0x35, 0x0E, 0x1F, 0x1E }, - { 0x2E, 0x2D, 0x39, 0x13, 0x19, 0x1C, 0x04, 0x27, 0x23, 0x7C }, - }}, - { "Test01", { - { 0x64, 0x64, 0x4B, 0x07, 0x88, 0x37, 0x35, 0x0E, 0x1F, 0x1E }, - { 0x2E, 0x2D, 0x39, 0x13, 0x19, 0x1C, 0x04, 0x27, 0x23, 0x7C }, - }}, - { "Amoss", { - { 0x6B, 0x6B, 0x51, 0x07, 0x88, 0x37, 0x35, 0x0E, 0x1F, 0x1E }, - { 0x2E, 0x2D, 0x39, 0x13, 0x19, 0x1C, 0x04, 0x27, 0x23, 0x7C }, - }}, - { "Dungeon", { - { 0x54, 0x54, 0x47, 0x07, 0x88, 0x37, 0x35, 0x0E, 0x0B, 0x0F }, - { 0x2C, 0x2D, 0x8E, 0x13, 0x19, 0x1C, 0x04, 0x27, 0x23, 0x7E }, - }}, - { "Jump", { - { 0x01, 0x01, 0x47, 0x07, 0x88, 0x37, 0x35, 0x0E, 0x0B, 0x0F }, - { 0x2C, 0x2D, 0x8E, 0x13, 0x19, 0x1C, 0x04, 0x27, 0x23, 0x7E }, - }}, - { "DungeonCorner", { - { 0x57, 0x57, 0x16, 0x07, 0x88, 0x37, 0x35, 0x0E, 0x0B, 0x0F }, - { 0x2C, 0x2D, 0x8E, 0x13, 0x19, 0x1C, 0x04, 0x27, 0x23, 0x7E }, - }}, - { "DungeonWide", { - { 0x59, 0x59, 0x17, 0x07, 0x88, 0x37, 0x35, 0x0D, 0x0B, 0x0F }, - { 0x2C, 0x2D, 0x3C, 0x13, 0x19, 0x1C, 0x04, 0x27, 0x23, 0x7E }, - }}, - { "CannonGame", { - { 0x3F, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF }, - { 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x04, 0xFFFF, 0xFFFF, 0xFFFF }, - }}, - { "FieldFOX", { - { 0x38, 0x38, 0x46, 0x06, 0x88, 0x37, 0x35, 0x0D, 0x1F, 0x1E }, - { 0x2C, 0x2D, 0x39, 0x13, 0x19, 0x1C, 0x04, 0x27, 0x23, 0x7C }, - }}, - { "G_Roof", { - { 0x41, 0x41, 0x52, 0x07, 0x88, 0x37, 0x35, 0x0E, 0x1F, 0x1E }, - { 0x2E, 0x2D, 0x44, 0x13, 0x19, 0x1C, 0x04, 0x27, 0x23, 0x7C }, - }}, - { "G_BedRoom", { - { 0x77, 0x77, 0x7B, 0x07, 0x88, 0x37, 0x35, 0x0E, 0x1F, 0x1E }, - { 0x2E, 0x2D, 0x87, 0x13, 0x19, 0x1C, 0x04, 0x27, 0x23, 0x7C }, - }}, - { "G_BedRoom2", { - { 0x77, 0x77, 0x7B, 0x07, 0x88, 0x37, 0x35, 0x0E, 0x1F, 0x1E }, - { 0x2E, 0x2D, 0x3D, 0x13, 0x19, 0x1C, 0x04, 0x27, 0x23, 0x7C }, - }}, - { "TowerUp", { - { 0x43, 0x62, 0x46, 0x06, 0x88, 0x37, 0x35, 0x0D, 0x1F, 0x1E }, - { 0x2C, 0x2D, 0x39, 0x13, 0x19, 0x1C, 0x04, 0x27, 0x23, 0x7C }, - }}, - { "MajTower", { - { 0x80, 0x54, 0x80, 0x07, 0x88, 0x37, 0x35, 0x0E, 0x0B, 0x0F }, - { 0x2C, 0x2D, 0x8E, 0x13, 0x19, 0x1C, 0x04, 0x27, 0x23, 0x7C }, - }}, - { "Tower", { - { 0x42, 0x62, 0x43, 0x06, 0x88, 0x37, 0x35, 0x0D, 0x1F, 0x1E }, - { 0x2C, 0x2D, 0x39, 0x13, 0x19, 0x1C, 0x04, 0x27, 0x23, 0x7C }, - }}, - { "Boat", { - { 0x24, 0x20, 0x45, 0x06, 0x88, 0x1A, 0x6F, 0xFFFF, 0xFFFF, 0xFFFF }, - { 0x2C, 0x2D, 0x76, 0xFFFF, 0x19, 0x1C, 0x04, 0x27, 0x23, 0x7C }, - }}, - { "BoatBattle", { - { 0x2A, 0x29, 0x6C, 0x06, 0x88, 0x1A, 0x6F, 0xFFFF, 0xFFFF, 0xFFFF }, - { 0x2C, 0x2D, 0x76, 0xFFFF, 0x19, 0x1C, 0x04, 0x27, 0x23, 0x7C }, - }}, - { "WindHall", { - { 0x90, 0x71, 0x17, 0x07, 0x88, 0x37, 0x35, 0x0D, 0x0B, 0x0F }, - { 0x2C, 0x2D, 0x3C, 0x13, 0x19, 0x1C, 0x04, 0x27, 0x23, 0x7E }, - }}, - { "Tornado", { - { 0x34, 0x20, 0x45, 0x06, 0x88, 0x1A, 0x6E, 0xFFFF, 0xFFFF, 0xFFFF }, - { 0x2C, 0x2D, 0xFFFF, 0xFFFF, 0x19, 0x1C, 0x04, 0x27, 0x23, 0x7C }, - }}, - { "OverLook", { - { 0x82, 0x82, 0x46, 0x70, 0x88, 0x21, 0x35, 0x0D, 0x1F, 0x1E }, - { 0x2C, 0x2D, 0x3A, 0x13, 0x19, 0x1C, 0x04, 0x27, 0x23, 0x7E }, - }}, - { "Dome", { - { 0x72, 0x85, 0x47, 0x07, 0x88, 0x37, 0x35, 0x0E, 0x0B, 0x0F }, - { 0x2C, 0x2D, 0x3A, 0x13, 0x19, 0x1C, 0x04, 0x27, 0x23, 0x7E }, - }}, - { "ForceFixdPos", { - { 0x02, 0xFFFF, 0xFFFF, 0xFFFF, 0x88, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF }, - { 0x2C, 0x2D, 0xFFFF, 0x13, 0x19, 0xFFFF, 0x04, 0xFFFF, 0xFFFF, 0xFFFF }, - }}, - { "FixdFrm", { - { 0x1D, 0xFFFF, 0xFFFF, 0xFFFF, 0x88, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF }, - { 0x2C, 0x2D, 0xFFFF, 0x13, 0x19, 0xFFFF, 0x04, 0xFFFF, 0xFFFF, 0xFFFF }, - }}, - { "DStairs", { - { 0x54, 0x54, 0x47, 0x07, 0x88, 0x37, 0x35, 0x0E, 0x0B, 0x0F }, - { 0x2C, 0x2D, 0x73, 0x13, 0x19, 0x1C, 0x04, 0x27, 0x23, 0x7E }, - }}, - { "Boss02", { - { 0x78, 0x78, 0x4A, 0x07, 0x88, 0x37, 0x35, 0x0E, 0x1F, 0x1E }, - { 0x2E, 0x2D, 0x39, 0x13, 0x19, 0x1C, 0x04, 0x27, 0x23, 0x7C }, - }}, - { "Seagal", { - { 0x86, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF }, - { 0xFFFF, 0xFFFF, 0x39, 0xFFFF, 0xFFFF, 0xFFFF, 0x04, 0xFFFF, 0xFFFF, 0xFFFF }, - }}, - { "SmallRoom", { - { 0x79, 0x79, 0x49, 0x07, 0x88, 0x37, 0x35, 0x0E, 0x1F, 0x1E }, - { 0x2C, 0x2D, 0x8D, 0x13, 0x19, 0x1C, 0x04, 0x27, 0x23, 0x7C }, - }}, - { "DanMae", { - { 0x7F, 0x7F, 0x47, 0x07, 0x88, 0x37, 0x35, 0x0E, 0x0B, 0x0F }, - { 0x2C, 0x2D, 0x7D, 0x13, 0x19, 0x1C, 0x04, 0x27, 0x23, 0x7E }, - }}, - { "Cafe", { - { 0x65, 0x65, 0x49, 0x07, 0x88, 0x37, 0x35, 0x0E, 0x1F, 0x1E }, - { 0x2C, 0x2D, 0x84, 0x13, 0x19, 0x1C, 0x04, 0x27, 0x23, 0x7C }, - }}, - { "DungeonPassage", { - { 0x5D, 0x5D, 0x16, 0x07, 0x88, 0x37, 0x35, 0x0E, 0x0B, 0x0F }, - { 0x2C, 0x2D, 0x84, 0x13, 0x19, 0x1C, 0x04, 0x27, 0x23, 0x7E }, - }}, - { "Corridor", { - { 0x05, 0x05, 0x17, 0x07, 0x88, 0x37, 0x35, 0x0D, 0x0B, 0x0F }, - { 0x2C, 0x2D, 0x84, 0x13, 0x19, 0x1C, 0x04, 0x27, 0x23, 0x7E }, - }}, - { "Subject", { - { 0x33, 0xFFFF, 0xFFFF, 0xFFFF, 0x88, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF }, - { 0x2C, 0x2D, 0xFFFF, 0x14, 0x19, 0xFFFF, 0x04, 0xFFFF, 0xFFFF, 0xFFFF }, - }}, - { "BigBird", { - { 0x81, 0x81, 0x89, 0x07, 0x88, 0x37, 0x35, 0x0E, 0x1F, 0x1E }, - { 0x2E, 0x2D, 0x39, 0x13, 0x19, 0x1C, 0x04, 0x27, 0x23, 0x7C }, - }}, - { "Room", { - { 0x58, 0x58, 0x49, 0x07, 0x88, 0x37, 0x35, 0x0E, 0x1F, 0x1E }, - { 0x2C, 0x2D, 0x8C, 0x13, 0x19, 0x1C, 0x04, 0x27, 0x23, 0x7C }, - }}, - { "DungeonDown", { - { 0x85, 0x85, 0x47, 0x07, 0x88, 0x37, 0x35, 0x0E, 0x0B, 0x0F }, - { 0x2C, 0x2D, 0x83, 0x13, 0x19, 0x1C, 0x04, 0x27, 0x23, 0x7E }, - }}, - { "Boss04", { - { 0x6D, 0x85, 0x47, 0x07, 0x88, 0x37, 0x35, 0x0E, 0x0B, 0x0F }, - { 0x2C, 0x2D, 0x3A, 0x13, 0x19, 0x1C, 0x04, 0x27, 0x23, 0x8A }, - }}, - { "UnderTheEaves", { - { 0x53, 0x53, 0x46, 0x06, 0x88, 0x37, 0x35, 0x0D, 0x1F, 0x1E }, - { 0x2C, 0x2D, 0x8B, 0x13, 0x19, 0x1C, 0x04, 0x27, 0x23, 0x7C }, - }}, - { "Restrict", { - { 0x36, 0xFFFF, 0xFFFF, 0xFFFF, 0x88, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF }, - { 0x2C, 0x2D, 0xFFFF, 0x13, 0x19, 0xFFFF, 0x04, 0xFFFF, 0xFFFF, 0xFFFF }, - }}, - { "DungeonUp", { - { 0x56, 0x56, 0x15, 0x07, 0x88, 0x21, 0x35, 0x0E, 0x0B, 0x0F }, - { 0x2C, 0x2D, 0x3C, 0x13, 0x19, 0x1C, 0x04, 0x27, 0x23, 0x7E }, - }}, - { "Block", { - { 0x53, 0x53, 0x46, 0x06, 0x88, 0x37, 0x35, 0x0D, 0x1F, 0x1E }, - { 0x2C, 0x2D, 0x8F, 0x13, 0x19, 0x1C, 0x04, 0x27, 0x23, 0x7C }, - }}, - { "Water", { - { 0x5B, 0x5B, 0x47, 0x07, 0x88, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF }, - { 0x2C, 0x2D, 0x74, 0x13, 0x19, 0x1C, 0x04, 0xFFFF, 0xFFFF, 0xFFFF }, - }}, - +const dCamera__Type dCamera_c::types[] = { + { + "Empty", + {dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_NONE_e}, + }, + { + "Plain", + {dCamStyle_FN03_e, dCamStyle_FN03_e, dCamStyle_LL03_e, dCamStyle_TT03_e, dCamStyle_SS01_e, dCamStyle_LW01_e, dCamStyle_LE01_e, dCamStyle_LH01_e, dCamStyle_LA01_e, dCamStyle_LB01_e, dCamStyle_SX01_e, dCamStyle_SY01_e, dCamStyle_MM01_e, dCamStyle_CC01_e, dCamStyle_SN15_e, dCamStyle_JN05_e, dCamStyle_EN00_e, dCamStyle_HN18_e, dCamStyle_HN16_e, dCamStyle_DD01_e}, + }, + { + "Keep", + {dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_EN00_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_NONE_e}, + }, + { + "Event", + {dCamStyle_EN00_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_EN00_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_NONE_e}, + }, + { + "Boss01", + {dCamStyle_FN15_e, dCamStyle_FN15_e, dCamStyle_LL05_e, dCamStyle_TT02_e, dCamStyle_SS01_e, dCamStyle_LW01_e, dCamStyle_LE01_e, dCamStyle_LH02_e, dCamStyle_LA01_e, dCamStyle_LB01_e, dCamStyle_SX02_e, dCamStyle_SY01_e, dCamStyle_MM05_e, dCamStyle_CC01_e, dCamStyle_SN15_e, dCamStyle_JN05_e, dCamStyle_EN00_e, dCamStyle_HN18_e, dCamStyle_HN16_e, dCamStyle_DD01_e}, + }, + { + "Cliff", + {dCamStyle_FN19_e, dCamStyle_FN19_e, dCamStyle_LL06_e, dCamStyle_TT02_e, dCamStyle_SS01_e, dCamStyle_LW02_e, dCamStyle_LE01_e, dCamStyle_LH02_e, dCamStyle_LA02_e, dCamStyle_LB02_e, dCamStyle_SX01_e, dCamStyle_SY01_e, dCamStyle_MM04_e, dCamStyle_CC01_e, dCamStyle_SN15_e, dCamStyle_JN05_e, dCamStyle_EN00_e, dCamStyle_HN18_e, dCamStyle_HN16_e, dCamStyle_DD01_e}, + }, + { + "PlaySlide", + {dCamStyle_FN20_e, dCamStyle_FN20_e, dCamStyle_LL01_e, dCamStyle_TT01_e, dCamStyle_SS01_e, dCamStyle_LW01_e, dCamStyle_LE01_e, dCamStyle_LH01_e, dCamStyle_LA01_e, dCamStyle_LB01_e, dCamStyle_SX01_e, dCamStyle_SY01_e, dCamStyle_MM01_e, dCamStyle_CC01_e, dCamStyle_SN15_e, dCamStyle_JN05_e, dCamStyle_EN00_e, dCamStyle_HN18_e, dCamStyle_HN16_e, dCamStyle_DD01_e}, + }, + { + "Field", + {dCamStyle_FN01_e, dCamStyle_FN01_e, dCamStyle_LL01_e, dCamStyle_TT01_e, dCamStyle_SS01_e, dCamStyle_LW01_e, dCamStyle_LE01_e, dCamStyle_LH01_e, dCamStyle_LA01_e, dCamStyle_LB01_e, dCamStyle_SX01_e, dCamStyle_SY01_e, dCamStyle_MM01_e, dCamStyle_CC01_e, dCamStyle_SN15_e, dCamStyle_JN05_e, dCamStyle_EN00_e, dCamStyle_HN18_e, dCamStyle_HN16_e, dCamStyle_DD01_e}, + }, + { + "ThrowUp", + {dCamStyle_FN21_e, dCamStyle_FN21_e, dCamStyle_LL01_e, dCamStyle_TT01_e, dCamStyle_SS01_e, dCamStyle_LW01_e, dCamStyle_LE01_e, dCamStyle_LH01_e, dCamStyle_LA01_e, dCamStyle_LB01_e, dCamStyle_SX01_e, dCamStyle_SY01_e, dCamStyle_MM09_e, dCamStyle_CC01_e, dCamStyle_SN15_e, dCamStyle_JN05_e, dCamStyle_EN00_e, dCamStyle_HN18_e, dCamStyle_HN16_e, dCamStyle_DD01_e}, + }, + { + "Gamoss", + {dCamStyle_FN23_e, dCamStyle_FN23_e, dCamStyle_LL09_e, dCamStyle_TT02_e, dCamStyle_SS01_e, dCamStyle_LW01_e, dCamStyle_LE01_e, dCamStyle_LH02_e, dCamStyle_LA02_e, dCamStyle_LB02_e, dCamStyle_SX01_e, dCamStyle_SY01_e, dCamStyle_MM03_e, dCamStyle_CC01_e, dCamStyle_SN15_e, dCamStyle_JN05_e, dCamStyle_EN00_e, dCamStyle_HN18_e, dCamStyle_HN16_e, dCamStyle_DD01_e}, + }, + { + "MiniIsland", + {dCamStyle_FN24_e, dCamStyle_FN24_e, dCamStyle_LL01_e, dCamStyle_TT01_e, dCamStyle_SS01_e, dCamStyle_LW01_e, dCamStyle_LE01_e, dCamStyle_LH01_e, dCamStyle_LA01_e, dCamStyle_LB01_e, dCamStyle_SX01_e, dCamStyle_SY01_e, dCamStyle_MM10_e, dCamStyle_CC01_e, dCamStyle_SN15_e, dCamStyle_JN05_e, dCamStyle_EN00_e, dCamStyle_HN18_e, dCamStyle_HN16_e, dCamStyle_DD01_e}, + }, + { + "Cliff2", + {dCamStyle_FN26_e, dCamStyle_FN07_e, dCamStyle_LL07_e, dCamStyle_TT02_e, dCamStyle_SS01_e, dCamStyle_LW01_e, dCamStyle_LE01_e, dCamStyle_LH01_e, dCamStyle_LA02_e, dCamStyle_LB02_e, dCamStyle_SX01_e, dCamStyle_SY01_e, dCamStyle_MM08_e, dCamStyle_CC01_e, dCamStyle_SN15_e, dCamStyle_JN05_e, dCamStyle_EN00_e, dCamStyle_HN18_e, dCamStyle_HN16_e, dCamStyle_DD01_e}, + }, + { + "FieldCushion", + {dCamStyle_FN10_e, dCamStyle_FN10_e, dCamStyle_LL01_e, dCamStyle_TT01_e, dCamStyle_SS01_e, dCamStyle_LW01_e, dCamStyle_LE01_e, dCamStyle_LH01_e, dCamStyle_LA01_e, dCamStyle_LB01_e, dCamStyle_SX01_e, dCamStyle_SY01_e, dCamStyle_MM01_e, dCamStyle_CC01_e, dCamStyle_SN15_e, dCamStyle_JN05_e, dCamStyle_EN00_e, dCamStyle_HN18_e, dCamStyle_HN16_e, dCamStyle_DD01_e}, + }, + { + "FixdPos", + {dCamStyle_PN05_e, dCamStyle_FN02_e, dCamStyle_LL02_e, dCamStyle_TT02_e, dCamStyle_SS01_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_LH02_e, dCamStyle_LA01_e, dCamStyle_LB01_e, dCamStyle_SX01_e, dCamStyle_SY01_e, dCamStyle_MM01_e, dCamStyle_CC01_e, dCamStyle_SN15_e, dCamStyle_JN05_e, dCamStyle_EN00_e, dCamStyle_HN18_e, dCamStyle_HN16_e, dCamStyle_DD01_e}, + }, + { + "SmoothFixdPos", + {dCamStyle_PN12_e, dCamStyle_FN02_e, dCamStyle_LL02_e, dCamStyle_TT02_e, dCamStyle_SS01_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_LH02_e, dCamStyle_LA01_e, dCamStyle_LB01_e, dCamStyle_SX01_e, dCamStyle_SY01_e, dCamStyle_MM01_e, dCamStyle_CC01_e, dCamStyle_SN15_e, dCamStyle_JN05_e, dCamStyle_EN00_e, dCamStyle_HN18_e, dCamStyle_HN16_e, dCamStyle_DD01_e}, + }, + { + "WaterBattle", + {dCamStyle_FN25_e, dCamStyle_FN25_e, dCamStyle_LL11_e, dCamStyle_TT02_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_MM15_e, dCamStyle_NONE_e, dCamStyle_SN15_e, dCamStyle_JN05_e, dCamStyle_EN00_e, dCamStyle_HN18_e, dCamStyle_HN16_e, dCamStyle_DD01_e}, + }, + { + "SmoothFixdPosC", + {dCamStyle_PN13_e, dCamStyle_FN02_e, dCamStyle_LL02_e, dCamStyle_TT02_e, dCamStyle_SS01_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_LH02_e, dCamStyle_LA01_e, dCamStyle_LB01_e, dCamStyle_SX01_e, dCamStyle_SY01_e, dCamStyle_MM01_e, dCamStyle_CC01_e, dCamStyle_SN15_e, dCamStyle_JN05_e, dCamStyle_EN00_e, dCamStyle_HN18_e, dCamStyle_HN16_e, dCamStyle_DD01_e}, + }, + { + "ThrowInto", + {dCamStyle_FN29_e, dCamStyle_FN29_e, dCamStyle_LL01_e, dCamStyle_TT01_e, dCamStyle_SS01_e, dCamStyle_LW01_e, dCamStyle_LE01_e, dCamStyle_LH01_e, dCamStyle_LA01_e, dCamStyle_LB01_e, dCamStyle_SX01_e, dCamStyle_SY01_e, dCamStyle_MM09_e, dCamStyle_CC01_e, dCamStyle_SN15_e, dCamStyle_JN05_e, dCamStyle_EN00_e, dCamStyle_HN18_e, dCamStyle_HN16_e, dCamStyle_DD01_e}, + }, + { + "Boss03", + {dCamStyle_FN30_e, dCamStyle_FN30_e, dCamStyle_LL12_e, dCamStyle_TT02_e, dCamStyle_SS01_e, dCamStyle_LW01_e, dCamStyle_LE01_e, dCamStyle_LH02_e, dCamStyle_LA01_e, dCamStyle_LB01_e, dCamStyle_SX02_e, dCamStyle_SY01_e, dCamStyle_MM01_e, dCamStyle_CC01_e, dCamStyle_SN15_e, dCamStyle_JN05_e, dCamStyle_EN00_e, dCamStyle_HN18_e, dCamStyle_HN16_e, dCamStyle_DD01_e}, + }, + { + "P_Ganon1", + {dCamStyle_FN31_e, dCamStyle_FN31_e, dCamStyle_LL13_e, dCamStyle_TT02_e, dCamStyle_SS01_e, dCamStyle_LW01_e, dCamStyle_LE01_e, dCamStyle_LH02_e, dCamStyle_LA01_e, dCamStyle_LB01_e, dCamStyle_SX02_e, dCamStyle_SY01_e, dCamStyle_MM01_e, dCamStyle_CC01_e, dCamStyle_SN15_e, dCamStyle_JN05_e, dCamStyle_EN00_e, dCamStyle_HN18_e, dCamStyle_HN16_e, dCamStyle_DD01_e}, + }, + { + "P_Ganon2", + {dCamStyle_FN32_e, dCamStyle_FN32_e, dCamStyle_LL14_e, dCamStyle_TT02_e, dCamStyle_SS01_e, dCamStyle_LW01_e, dCamStyle_LE01_e, dCamStyle_LH02_e, dCamStyle_LA01_e, dCamStyle_LB01_e, dCamStyle_SX02_e, dCamStyle_SY01_e, dCamStyle_MM01_e, dCamStyle_CC01_e, dCamStyle_SN15_e, dCamStyle_JN05_e, dCamStyle_EN00_e, dCamStyle_HN18_e, dCamStyle_HN16_e, dCamStyle_DD01_e}, + }, + { + "WindBoss", + {dCamStyle_FN33_e, dCamStyle_FN33_e, dCamStyle_LL15_e, dCamStyle_TT02_e, dCamStyle_SS01_e, dCamStyle_LW01_e, dCamStyle_LE01_e, dCamStyle_LH02_e, dCamStyle_LA02_e, dCamStyle_LB02_e, dCamStyle_SX01_e, dCamStyle_SY01_e, dCamStyle_MM03_e, dCamStyle_CC01_e, dCamStyle_SN15_e, dCamStyle_JN05_e, dCamStyle_EN00_e, dCamStyle_HN18_e, dCamStyle_HN16_e, dCamStyle_DD01_e}, + }, + { + "P_Ganon3", + {dCamStyle_FN34_e, dCamStyle_FN34_e, dCamStyle_LL14_e, dCamStyle_TT02_e, dCamStyle_SS01_e, dCamStyle_LW01_e, dCamStyle_LE01_e, dCamStyle_LH02_e, dCamStyle_LA01_e, dCamStyle_LB01_e, dCamStyle_SX02_e, dCamStyle_SY01_e, dCamStyle_MM01_e, dCamStyle_CC01_e, dCamStyle_SN15_e, dCamStyle_JN05_e, dCamStyle_EN00_e, dCamStyle_HN18_e, dCamStyle_HN16_e, dCamStyle_DD01_e}, + }, + { + "Test01", + {dCamStyle_FN27_e, dCamStyle_FN27_e, dCamStyle_LL10_e, dCamStyle_TT02_e, dCamStyle_SS01_e, dCamStyle_LW01_e, dCamStyle_LE01_e, dCamStyle_LH02_e, dCamStyle_LA01_e, dCamStyle_LB01_e, dCamStyle_SX02_e, dCamStyle_SY01_e, dCamStyle_MM01_e, dCamStyle_CC01_e, dCamStyle_SN15_e, dCamStyle_JN05_e, dCamStyle_EN00_e, dCamStyle_HN18_e, dCamStyle_HN16_e, dCamStyle_DD01_e}, + }, + { + "Amoss", + {dCamStyle_FN35_e, dCamStyle_FN35_e, dCamStyle_LL16_e, dCamStyle_TT02_e, dCamStyle_SS01_e, dCamStyle_LW01_e, dCamStyle_LE01_e, dCamStyle_LH02_e, dCamStyle_LA01_e, dCamStyle_LB01_e, dCamStyle_SX02_e, dCamStyle_SY01_e, dCamStyle_MM01_e, dCamStyle_CC01_e, dCamStyle_SN15_e, dCamStyle_JN05_e, dCamStyle_EN00_e, dCamStyle_HN18_e, dCamStyle_HN16_e, dCamStyle_DD01_e}, + }, + { + "Dungeon", + {dCamStyle_FN02_e, dCamStyle_FN02_e, dCamStyle_LL02_e, dCamStyle_TT02_e, dCamStyle_SS01_e, dCamStyle_LW01_e, dCamStyle_LE01_e, dCamStyle_LH02_e, dCamStyle_LA02_e, dCamStyle_LB02_e, dCamStyle_SX01_e, dCamStyle_SY01_e, dCamStyle_MM03_e, dCamStyle_CC01_e, dCamStyle_SN15_e, dCamStyle_JN05_e, dCamStyle_EN00_e, dCamStyle_HN18_e, dCamStyle_HN16_e, dCamStyle_DD02_e}, + }, + { + "Jump", + {dCamStyle_FN08_e, dCamStyle_FN08_e, dCamStyle_LL02_e, dCamStyle_TT02_e, dCamStyle_SS01_e, dCamStyle_LW01_e, dCamStyle_LE01_e, dCamStyle_LH02_e, dCamStyle_LA02_e, dCamStyle_LB02_e, dCamStyle_SX01_e, dCamStyle_SY01_e, dCamStyle_MM03_e, dCamStyle_CC01_e, dCamStyle_SN15_e, dCamStyle_JN05_e, dCamStyle_EN00_e, dCamStyle_HN18_e, dCamStyle_HN16_e, dCamStyle_DD02_e}, + }, +#if VERSION == VERSION_JPN + { + "DungeonUp", + {dCamStyle_FN04_e, dCamStyle_FN04_e, dCamStyle_LL06_e, dCamStyle_TT02_e, dCamStyle_SS01_e, dCamStyle_LW02_e, dCamStyle_LE01_e, dCamStyle_LH02_e, dCamStyle_LA02_e, dCamStyle_LB02_e, dCamStyle_SX01_e, dCamStyle_SY01_e, dCamStyle_MM02_e, dCamStyle_CC01_e, dCamStyle_SN15_e, dCamStyle_JN05_e, dCamStyle_EN00_e, dCamStyle_HN18_e, dCamStyle_HN16_e, dCamStyle_DD02_e}, + }, +#endif + { + "DungeonCorner", + {dCamStyle_FN06_e, dCamStyle_FN06_e, dCamStyle_LL08_e, dCamStyle_TT02_e, dCamStyle_SS01_e, dCamStyle_LW01_e, dCamStyle_LE01_e, dCamStyle_LH02_e, dCamStyle_LA02_e, dCamStyle_LB02_e, dCamStyle_SX01_e, dCamStyle_SY01_e, dCamStyle_MM03_e, dCamStyle_CC01_e, dCamStyle_SN15_e, dCamStyle_JN05_e, dCamStyle_EN00_e, dCamStyle_HN18_e, dCamStyle_HN16_e, dCamStyle_DD02_e}, + }, + { + "DungeonWide", + {dCamStyle_FN07_e, dCamStyle_FN07_e, dCamStyle_LL07_e, dCamStyle_TT02_e, dCamStyle_SS01_e, dCamStyle_LW01_e, dCamStyle_LE01_e, dCamStyle_LH01_e, dCamStyle_LA02_e, dCamStyle_LB02_e, dCamStyle_SX01_e, dCamStyle_SY01_e, dCamStyle_MM08_e, dCamStyle_CC01_e, dCamStyle_SN15_e, dCamStyle_JN05_e, dCamStyle_EN00_e, dCamStyle_HN18_e, dCamStyle_HN16_e, dCamStyle_DD02_e}, + }, + { + "CannonGame", + {dCamStyle_ZZ00_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_EN00_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_NONE_e}, + }, + { + "FieldFOX", + {dCamStyle_GN01_e, dCamStyle_GN01_e, dCamStyle_LL01_e, dCamStyle_TT01_e, dCamStyle_SS01_e, dCamStyle_LW01_e, dCamStyle_LE01_e, dCamStyle_LH01_e, dCamStyle_LA01_e, dCamStyle_LB01_e, dCamStyle_SX01_e, dCamStyle_SY01_e, dCamStyle_MM01_e, dCamStyle_CC01_e, dCamStyle_SN15_e, dCamStyle_JN05_e, dCamStyle_EN00_e, dCamStyle_HN18_e, dCamStyle_HN16_e, dCamStyle_DD01_e}, + }, + { + "G_Roof", + {dCamStyle_FN82_e, dCamStyle_FN82_e, dCamStyle_LL82_e, dCamStyle_TT02_e, dCamStyle_SS01_e, dCamStyle_LW01_e, dCamStyle_LE01_e, dCamStyle_LH02_e, dCamStyle_LA01_e, dCamStyle_LB01_e, dCamStyle_SX02_e, dCamStyle_SY01_e, dCamStyle_MM82_e, dCamStyle_CC01_e, dCamStyle_SN15_e, dCamStyle_JN05_e, dCamStyle_EN00_e, dCamStyle_HN18_e, dCamStyle_HN16_e, dCamStyle_DD01_e}, + }, + { + "G_BedRoom", + {dCamStyle_FN81_e, dCamStyle_FN81_e, dCamStyle_LL81_e, dCamStyle_TT02_e, dCamStyle_SS01_e, dCamStyle_LW01_e, dCamStyle_LE01_e, dCamStyle_LH02_e, dCamStyle_LA01_e, dCamStyle_LB01_e, dCamStyle_SX02_e, dCamStyle_SY01_e, dCamStyle_MM81_e, dCamStyle_CC01_e, dCamStyle_SN15_e, dCamStyle_JN05_e, dCamStyle_EN00_e, dCamStyle_HN18_e, dCamStyle_HN16_e, dCamStyle_DD01_e}, + }, + { + "G_BedRoom2", + {dCamStyle_FN81_e, dCamStyle_FN81_e, dCamStyle_LL81_e, dCamStyle_TT02_e, dCamStyle_SS01_e, dCamStyle_LW01_e, dCamStyle_LE01_e, dCamStyle_LH02_e, dCamStyle_LA01_e, dCamStyle_LB01_e, dCamStyle_SX02_e, dCamStyle_SY01_e, dCamStyle_MM83_e, dCamStyle_CC01_e, dCamStyle_SN15_e, dCamStyle_JN05_e, dCamStyle_EN00_e, dCamStyle_HN18_e, dCamStyle_HN16_e, dCamStyle_DD01_e}, + }, + { + "TowerUp", + {dCamStyle_IN02_e, dCamStyle_FN24_e, dCamStyle_LL01_e, dCamStyle_TT01_e, dCamStyle_SS01_e, dCamStyle_LW01_e, dCamStyle_LE01_e, dCamStyle_LH01_e, dCamStyle_LA01_e, dCamStyle_LB01_e, dCamStyle_SX01_e, dCamStyle_SY01_e, dCamStyle_MM01_e, dCamStyle_CC01_e, dCamStyle_SN15_e, dCamStyle_JN05_e, dCamStyle_EN00_e, dCamStyle_HN18_e, dCamStyle_HN16_e, dCamStyle_DD01_e}, + }, + { + "MajTower", + {dCamStyle_IN03_e, dCamStyle_FN02_e, dCamStyle_IN03_e, dCamStyle_TT02_e, dCamStyle_SS01_e, dCamStyle_LW01_e, dCamStyle_LE01_e, dCamStyle_LH02_e, dCamStyle_LA02_e, dCamStyle_LB02_e, dCamStyle_SX01_e, dCamStyle_SY01_e, dCamStyle_MM03_e, dCamStyle_CC01_e, dCamStyle_SN15_e, dCamStyle_JN05_e, dCamStyle_EN00_e, dCamStyle_HN18_e, dCamStyle_HN16_e, dCamStyle_DD01_e}, + }, + { + "Tower", + {dCamStyle_IN01_e, dCamStyle_FN24_e, dCamStyle_IN02_e, dCamStyle_TT01_e, dCamStyle_SS01_e, dCamStyle_LW01_e, dCamStyle_LE01_e, dCamStyle_LH01_e, dCamStyle_LA01_e, dCamStyle_LB01_e, dCamStyle_SX01_e, dCamStyle_SY01_e, dCamStyle_MM01_e, dCamStyle_CC01_e, dCamStyle_SN15_e, dCamStyle_JN05_e, dCamStyle_EN00_e, dCamStyle_HN18_e, dCamStyle_HN16_e, dCamStyle_DD01_e}, + }, + { + "Boat", + {dCamStyle_BN07_e, dCamStyle_BP07_e, dCamStyle_LL11_e, dCamStyle_TT01_e, dCamStyle_SS01_e, dCamStyle_BW07_e, dCamStyle_BE07_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_SX01_e, dCamStyle_SY01_e, dCamStyle_MM07_e, dCamStyle_NONE_e, dCamStyle_SN15_e, dCamStyle_JN05_e, dCamStyle_EN00_e, dCamStyle_HN18_e, dCamStyle_HN16_e, dCamStyle_DD01_e}, + }, + { + "BoatBattle", + {dCamStyle_BN08_e, dCamStyle_BP08_e, dCamStyle_LL17_e, dCamStyle_TT01_e, dCamStyle_SS01_e, dCamStyle_BW07_e, dCamStyle_BE07_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_SX01_e, dCamStyle_SY01_e, dCamStyle_MM07_e, dCamStyle_NONE_e, dCamStyle_SN15_e, dCamStyle_JN05_e, dCamStyle_EN00_e, dCamStyle_HN18_e, dCamStyle_HN16_e, dCamStyle_DD01_e}, + }, +#if VERSION == VERSION_JPN + { + "Water", + {dCamStyle_FN14_e, dCamStyle_FN14_e, dCamStyle_LL02_e, dCamStyle_TT02_e, dCamStyle_SS01_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_SX01_e, dCamStyle_SY01_e, dCamStyle_MM14_e, dCamStyle_CC01_e, dCamStyle_SN15_e, dCamStyle_NONE_e, dCamStyle_EN00_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_NONE_e}, + }, +#endif + { + "WindHall", + {dCamStyle_FN38_e, dCamStyle_FP38_e, dCamStyle_LL07_e, dCamStyle_TT02_e, dCamStyle_SS01_e, dCamStyle_LW01_e, dCamStyle_LE01_e, dCamStyle_LH01_e, dCamStyle_LA02_e, dCamStyle_LB02_e, dCamStyle_SX01_e, dCamStyle_SY01_e, dCamStyle_MM08_e, dCamStyle_CC01_e, dCamStyle_SN15_e, dCamStyle_JN05_e, dCamStyle_EN00_e, dCamStyle_HN18_e, dCamStyle_HN16_e, dCamStyle_DD02_e}, + }, + { + "Tornado", + {dCamStyle_QN07_e, dCamStyle_BP07_e, dCamStyle_LL11_e, dCamStyle_TT01_e, dCamStyle_SS01_e, dCamStyle_BW07_e, dCamStyle_BE08_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_SX01_e, dCamStyle_SY01_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_SN15_e, dCamStyle_JN05_e, dCamStyle_EN00_e, dCamStyle_HN18_e, dCamStyle_HN16_e, dCamStyle_DD01_e}, + }, + { + "OverLook", + {dCamStyle_FN11_e, dCamStyle_FN11_e, dCamStyle_LL01_e, dCamStyle_TT04_e, dCamStyle_SS01_e, dCamStyle_LW02_e, dCamStyle_LE01_e, dCamStyle_LH01_e, dCamStyle_LA01_e, dCamStyle_LB01_e, dCamStyle_SX01_e, dCamStyle_SY01_e, dCamStyle_MM02_e, dCamStyle_CC01_e, dCamStyle_SN15_e, dCamStyle_JN05_e, dCamStyle_EN00_e, dCamStyle_HN18_e, dCamStyle_HN16_e, dCamStyle_DD02_e}, + }, + { + "Dome", + {dCamStyle_FN39_e, dCamStyle_FN05_e, dCamStyle_LL02_e, dCamStyle_TT02_e, dCamStyle_SS01_e, dCamStyle_LW01_e, dCamStyle_LE01_e, dCamStyle_LH02_e, dCamStyle_LA02_e, dCamStyle_LB02_e, dCamStyle_SX01_e, dCamStyle_SY01_e, dCamStyle_MM02_e, dCamStyle_CC01_e, dCamStyle_SN15_e, dCamStyle_JN05_e, dCamStyle_EN00_e, dCamStyle_HN18_e, dCamStyle_HN16_e, dCamStyle_DD02_e}, + }, + { + "ForceFixdPos", + {dCamStyle_PN05_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_SS01_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_SX01_e, dCamStyle_SY01_e, dCamStyle_NONE_e, dCamStyle_CC01_e, dCamStyle_SN15_e, dCamStyle_NONE_e, dCamStyle_EN00_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_NONE_e}, + }, + { + "FixdFrm", + {dCamStyle_XN06_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_SS01_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_SX01_e, dCamStyle_SY01_e, dCamStyle_NONE_e, dCamStyle_CC01_e, dCamStyle_SN15_e, dCamStyle_NONE_e, dCamStyle_EN00_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_NONE_e}, + }, + { + "DStairs", + {dCamStyle_FN02_e, dCamStyle_FN02_e, dCamStyle_LL02_e, dCamStyle_TT02_e, dCamStyle_SS01_e, dCamStyle_LW01_e, dCamStyle_LE01_e, dCamStyle_LH02_e, dCamStyle_LA02_e, dCamStyle_LB02_e, dCamStyle_SX01_e, dCamStyle_SY01_e, dCamStyle_MM16_e, dCamStyle_CC01_e, dCamStyle_SN15_e, dCamStyle_JN05_e, dCamStyle_EN00_e, dCamStyle_HN18_e, dCamStyle_HN16_e, dCamStyle_DD02_e}, + }, + { + "Boss02", + {dCamStyle_FN40_e, dCamStyle_FN40_e, dCamStyle_LL05_e, dCamStyle_TT02_e, dCamStyle_SS01_e, dCamStyle_LW01_e, dCamStyle_LE01_e, dCamStyle_LH02_e, dCamStyle_LA01_e, dCamStyle_LB01_e, dCamStyle_SX02_e, dCamStyle_SY01_e, dCamStyle_MM01_e, dCamStyle_CC01_e, dCamStyle_SN15_e, dCamStyle_JN05_e, dCamStyle_EN00_e, dCamStyle_HN18_e, dCamStyle_HN16_e, dCamStyle_DD01_e}, + }, + { + "Seagal", + {dCamStyle_FN36_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_MM01_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_EN00_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_NONE_e}, + }, + { + "SmallRoom", + {dCamStyle_FN41_e, dCamStyle_FN41_e, dCamStyle_LL04_e, dCamStyle_TT02_e, dCamStyle_SS01_e, dCamStyle_LW01_e, dCamStyle_LE01_e, dCamStyle_LH02_e, dCamStyle_LA01_e, dCamStyle_LB01_e, dCamStyle_SX01_e, dCamStyle_SY01_e, dCamStyle_MM17_e, dCamStyle_CC01_e, dCamStyle_SN15_e, dCamStyle_JN05_e, dCamStyle_EN00_e, dCamStyle_HN18_e, dCamStyle_HN16_e, dCamStyle_DD01_e}, + }, + { + "DanMae", + {dCamStyle_FN42_e, dCamStyle_FN42_e, dCamStyle_LL02_e, dCamStyle_TT02_e, dCamStyle_SS01_e, dCamStyle_LW01_e, dCamStyle_LE01_e, dCamStyle_LH02_e, dCamStyle_LA02_e, dCamStyle_LB02_e, dCamStyle_SX01_e, dCamStyle_SY01_e, dCamStyle_MM19_e, dCamStyle_CC01_e, dCamStyle_SN15_e, dCamStyle_JN05_e, dCamStyle_EN00_e, dCamStyle_HN18_e, dCamStyle_HN16_e, dCamStyle_DD02_e}, + }, + { + "Cafe", + {dCamStyle_FN28_e, dCamStyle_FN28_e, dCamStyle_LL04_e, dCamStyle_TT02_e, dCamStyle_SS01_e, dCamStyle_LW01_e, dCamStyle_LE01_e, dCamStyle_LH02_e, dCamStyle_LA01_e, dCamStyle_LB01_e, dCamStyle_SX01_e, dCamStyle_SY01_e, dCamStyle_MM20_e, dCamStyle_CC01_e, dCamStyle_SN15_e, dCamStyle_JN05_e, dCamStyle_EN00_e, dCamStyle_HN18_e, dCamStyle_HN16_e, dCamStyle_DD01_e}, + }, + { + "DungeonPassage", + {dCamStyle_FN17_e, dCamStyle_FN17_e, dCamStyle_LL08_e, dCamStyle_TT02_e, dCamStyle_SS01_e, dCamStyle_LW01_e, dCamStyle_LE01_e, dCamStyle_LH02_e, dCamStyle_LA02_e, dCamStyle_LB02_e, dCamStyle_SX01_e, dCamStyle_SY01_e, dCamStyle_MM20_e, dCamStyle_CC01_e, dCamStyle_SN15_e, dCamStyle_JN05_e, dCamStyle_EN00_e, dCamStyle_HN18_e, dCamStyle_HN16_e, dCamStyle_DD02_e}, + }, + { + "Corridor", + {dCamStyle_FN12_e, dCamStyle_FN12_e, dCamStyle_LL07_e, dCamStyle_TT02_e, dCamStyle_SS01_e, dCamStyle_LW01_e, dCamStyle_LE01_e, dCamStyle_LH01_e, dCamStyle_LA02_e, dCamStyle_LB02_e, dCamStyle_SX01_e, dCamStyle_SY01_e, dCamStyle_MM20_e, dCamStyle_CC01_e, dCamStyle_SN15_e, dCamStyle_JN05_e, dCamStyle_EN00_e, dCamStyle_HN18_e, dCamStyle_HN16_e, dCamStyle_DD02_e}, + }, + { + "Subject", + {dCamStyle_LN17_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_SS01_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_SX01_e, dCamStyle_SY01_e, dCamStyle_NONE_e, dCamStyle_CC02_e, dCamStyle_SN15_e, dCamStyle_NONE_e, dCamStyle_EN00_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_NONE_e}, + }, + { + "BigBird", + {dCamStyle_FN43_e, dCamStyle_FN43_e, dCamStyle_LL18_e, dCamStyle_TT02_e, dCamStyle_SS01_e, dCamStyle_LW01_e, dCamStyle_LE01_e, dCamStyle_LH02_e, dCamStyle_LA01_e, dCamStyle_LB01_e, dCamStyle_SX02_e, dCamStyle_SY01_e, dCamStyle_MM01_e, dCamStyle_CC01_e, dCamStyle_SN15_e, dCamStyle_JN05_e, dCamStyle_EN00_e, dCamStyle_HN18_e, dCamStyle_HN16_e, dCamStyle_DD01_e}, + }, + { + "Room", + {dCamStyle_FN09_e, dCamStyle_FN09_e, dCamStyle_LL04_e, dCamStyle_TT02_e, dCamStyle_SS01_e, dCamStyle_LW01_e, dCamStyle_LE01_e, dCamStyle_LH02_e, dCamStyle_LA01_e, dCamStyle_LB01_e, dCamStyle_SX01_e, dCamStyle_SY01_e, dCamStyle_MM18_e, dCamStyle_CC01_e, dCamStyle_SN15_e, dCamStyle_JN05_e, dCamStyle_EN00_e, dCamStyle_HN18_e, dCamStyle_HN16_e, dCamStyle_DD01_e}, + }, + { + "DungeonDown", + {dCamStyle_FN05_e, dCamStyle_FN05_e, dCamStyle_LL02_e, dCamStyle_TT02_e, dCamStyle_SS01_e, dCamStyle_LW01_e, dCamStyle_LE01_e, dCamStyle_LH02_e, dCamStyle_LA02_e, dCamStyle_LB02_e, dCamStyle_SX01_e, dCamStyle_SY01_e, dCamStyle_MM21_e, dCamStyle_CC01_e, dCamStyle_SN15_e, dCamStyle_JN05_e, dCamStyle_EN00_e, dCamStyle_HN18_e, dCamStyle_HN16_e, dCamStyle_DD02_e}, + }, + { + "Boss04", + {dCamStyle_FN37_e, dCamStyle_FN05_e, dCamStyle_LL02_e, dCamStyle_TT02_e, dCamStyle_SS01_e, dCamStyle_LW01_e, dCamStyle_LE01_e, dCamStyle_LH02_e, dCamStyle_LA02_e, dCamStyle_LB02_e, dCamStyle_SX01_e, dCamStyle_SY01_e, dCamStyle_MM02_e, dCamStyle_CC01_e, dCamStyle_SN15_e, dCamStyle_JN05_e, dCamStyle_EN00_e, dCamStyle_HN18_e, dCamStyle_HN16_e, dCamStyle_DD04_e}, + }, + { + "UnderTheEaves", + {dCamStyle_FN01_e, dCamStyle_FN01_e, dCamStyle_LL01_e, dCamStyle_TT01_e, dCamStyle_SS01_e, dCamStyle_LW01_e, dCamStyle_LE01_e, dCamStyle_LH01_e, dCamStyle_LA01_e, dCamStyle_LB01_e, dCamStyle_SX01_e, dCamStyle_SY01_e, dCamStyle_MM22_e, dCamStyle_CC01_e, dCamStyle_SN15_e, dCamStyle_JN05_e, dCamStyle_EN00_e, dCamStyle_HN18_e, dCamStyle_HN16_e, dCamStyle_DD01_e}, + }, + { + "Restrict", + {dCamStyle_LN01_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_SS01_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_SX01_e, dCamStyle_SY01_e, dCamStyle_NONE_e, dCamStyle_CC01_e, dCamStyle_SN15_e, dCamStyle_NONE_e, dCamStyle_EN00_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_NONE_e}, + }, +#if VERSION != VERSION_JPN + { + "DungeonUp", + {dCamStyle_FN04_e, dCamStyle_FN04_e, dCamStyle_LL06_e, dCamStyle_TT02_e, dCamStyle_SS01_e, dCamStyle_LW02_e, dCamStyle_LE01_e, dCamStyle_LH02_e, dCamStyle_LA02_e, dCamStyle_LB02_e, dCamStyle_SX01_e, dCamStyle_SY01_e, dCamStyle_MM08_e, dCamStyle_CC01_e, dCamStyle_SN15_e, dCamStyle_JN05_e, dCamStyle_EN00_e, dCamStyle_HN18_e, dCamStyle_HN16_e, dCamStyle_DD02_e}, + }, + { + "Block", + {dCamStyle_FN01_e, dCamStyle_FN01_e, dCamStyle_LL01_e, dCamStyle_TT01_e, dCamStyle_SS01_e, dCamStyle_LW01_e, dCamStyle_LE01_e, dCamStyle_LH01_e, dCamStyle_LA01_e, dCamStyle_LB01_e, dCamStyle_SX01_e, dCamStyle_SY01_e, dCamStyle_MM23_e, dCamStyle_CC01_e, dCamStyle_SN15_e, dCamStyle_JN05_e, dCamStyle_EN00_e, dCamStyle_HN18_e, dCamStyle_HN16_e, dCamStyle_DD01_e}, + }, + { + "Water", + {dCamStyle_FN14_e, dCamStyle_FN14_e, dCamStyle_LL02_e, dCamStyle_TT02_e, dCamStyle_SS01_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_SX01_e, dCamStyle_SY01_e, dCamStyle_MM14_e, dCamStyle_CC01_e, dCamStyle_SN15_e, dCamStyle_JN05_e, dCamStyle_EN00_e, dCamStyle_NONE_e, dCamStyle_NONE_e, dCamStyle_NONE_e}, + }, +#endif }; const int dCamera_c::type_num = ARRAY_SIZE(types); diff --git a/src/d/d_camera.cpp b/src/d/d_camera.cpp index 0996e61f4..85a5ac242 100644 --- a/src/d/d_camera.cpp +++ b/src/d/d_camera.cpp @@ -260,7 +260,7 @@ void dCamera_c::initialize(camera_class* camera, fopAc_ac_c* playerActor, u32 ca } } - mCurStyle = types[mCurType].mStyles[0][mCurMode]; + mCurStyle = types[mCurType].mStyles[mCurMode]; mLockOnActorId = fpcM_ERROR_PROCESS_ID_e; mStageMapToolCameraIdx = 0xFF; m0E8 = -1; @@ -269,7 +269,7 @@ void dCamera_c::initialize(camera_class* camera, fopAc_ac_c* playerActor, u32 ca mEventData.mStaffIdx = -1; mEventData.field_0x0c = -1; mRoomNo = -1; - m318 = -1e+09f; + m318 = C_BG_MIN_HEIGHT; mBG.m5C.m58 = C_BG_MIN_HEIGHT; mBG.m00.m58 = C_BG_MIN_HEIGHT; mBG.m00.m04.OffNormalGrp(); @@ -432,7 +432,7 @@ bool dCamera_c::ChangeModeOK(s32 param_1) { if (dComIfGp_evmng_cameraPlay() || chkFlag(0x20000000)) { return 0; } - return !(types[mCurType].mStyles[0][param_1] < 0); + return !(types[mCurType].mStyles[param_1] < 0); } /* 801621A0-801623A0 .text initPad__9dCamera_cFv */ @@ -794,19 +794,19 @@ bool dCamera_c::Run() { next = mNextMode; if (next != mCurMode) { - if (types[mCurType].mStyles[0][next] >= 0 && onModeChange(mCurMode, next)) { + if (types[mCurType].mStyles[next] >= 0 && onModeChange(mCurMode, next)) { mCurMode = mNextMode; } } - if (types[mCurType].mStyles[0][mCurMode] < 0) { + if (types[mCurType].mStyles[mCurMode] < 0) { mCurMode = 0; } - const s16 curStyle = types[mCurType].mStyles[0][mCurMode]; + const s16 curStyle = types[mCurType].mStyles[mCurMode]; if (curStyle >= 0) { if (mCurStyle != curStyle && onStyleChange(mCurStyle, curStyle)) { - mCurStyle = types[mCurType].mStyles[0][mCurMode]; + mCurStyle = types[mCurType].mStyles[mCurMode]; mCamParam.Change(mCurStyle); } } @@ -821,7 +821,7 @@ bool dCamera_c::Run() { dComIfGp_offCameraAttentionStatus(mCameraInfoIdx, 0x80); - if (mCamParam.CheckFlag(dCamParam_UNK004) && !check_owner_action(mPadId, daPyStts0_UNK4000000_e) && !check_owner_action1(mPadId, daPyStts1_UNK40000_e)) { + if (mCamParam.CheckFlag(dCamPrmFlg_UNK004) && !check_owner_action(mPadId, daPyStts0_UNK4000000_e) && !check_owner_action1(mPadId, daPyStts1_UNK40000_e)) { m148 += (forwardCheckAngle() - m148) * mCamSetup.mBGChk.FwdCushion(); } else { @@ -863,14 +863,14 @@ bool dCamera_c::Run() { clrFlag(0x90080); - if (mCamParam.CheckFlag(dCamParam_UNK001)) { + if (mCamParam.CheckFlag(dCamPrmFlg_UNK001)) { m068 = 0x3F; } - else if (mCamParam.CheckFlag(dCamParam_UNK002)) { + else if (mCamParam.CheckFlag(dCamPrmFlg_UNK002)) { m068 = 0xF; } - if (mCamParam.CheckFlag(dCamParam_UNK400)) { + if (mCamParam.CheckFlag(dCamPrmFlg_UNK400)) { m068 |= 0x40; } @@ -985,7 +985,7 @@ bool dCamera_c::NotRun() { mCurType = mCamTypeEvent; - eventCamera(types[mCurType].mStyles[0][3]); + eventCamera(types[mCurType].mStyles[3]); m07C++; m118++; @@ -1059,7 +1059,7 @@ bool dCamera_c::Draw() { /* 8016418C-80164898 .text nextMode__9dCamera_cFl */ int dCamera_c::nextMode(s32 i_curMode) { - /* Nonmatching - regswap */ + /* Nonmatching - regswap related to check_owner_action/check_owner_action1 */ dAttention_c& attn = dComIfGp_getAttention(); s32 next_mode = i_curMode; cXyz player_pos = positionOf(mpPlayerActor); @@ -1155,10 +1155,10 @@ int dCamera_c::nextMode(s32 i_curMode) { else if (check_owner_action(mPadId, daPyStts0_TELESCOPE_LOOK_e) || check_owner_action1(mPadId, daPyStts1_PICTO_BOX_AIM_e)) { next_mode = 0xe; } - else if (check_owner_action1(mPadId, daPyStts1_UNK80000000_e | daPyStts1_UNK80_e)) { + else if (check_owner_action(mPadId, daPyStts0_UNK80000000_e | daPyStts0_UNK80_e)) { next_mode = 0x11; } - else if (check_owner_action1(mPadId, daPyStts1_UNK800000_e)) { + else if (check_owner_action(mPadId, daPyStts0_UNK800000_e)) { if (m144 == 0) { next_mode = 0xc; } @@ -1166,13 +1166,13 @@ int dCamera_c::nextMode(s32 i_curMode) { next_mode = 0x12; } } - else if (check_owner_action(mPadId, daPyStts0_UNK10_e)) { + else if (check_owner_action1(mPadId, daPyStts1_UNK10_e)) { next_mode = 0xf; } - else if (check_owner_action1(mPadId, daPyStts1_UNK2000_e)) { + else if (check_owner_action(mPadId, daPyStts0_UNK2000_e)) { next_mode = 4; } - else if (check_owner_action1(mPadId, daPyStts1_UNK20000_e | daPyStts1_UNK4000_e | daPyStts1_UNK1000_e) && !attn.Lockon()) { + else if (check_owner_action(mPadId, daPyStts0_ROPE_AIM_e | daPyStts0_HOOKSHOT_AIM_e | daPyStts0_BOW_AIM_e) && !attn.Lockon()) { next_mode = 10; } else if (check_owner_action(mPadId, daPyStts0_BOOMERANG_AIM_e) && !attn.Lockon()) { next_mode = 11; @@ -1185,24 +1185,24 @@ int dCamera_c::nextMode(s32 i_curMode) { else if (check_owner_action1(mPadId, daPyStts1_UNK4_e)) { next_mode = 6; } - else if (check_owner_action(mPadId, daPy__PlayerStatus0(daPyStts0_UNK40_e | daPyStts0_UNK20_e))) { + else if (check_owner_action(mPadId, daPyStts0_UNK40_e | daPyStts0_UNK20_e)) { next_mode = 6; } - else if (check_owner_action(mPadId, daPy__PlayerStatus0(daPyStts0_UNK40_e | daPyStts0_UNK20_e | daPyStts0_UNK1_e))) { + else if (check_owner_action(mPadId, daPyStts0_UNK40_e | daPyStts0_UNK20_e | daPyStts0_UNK1_e)) { next_mode = 5; } - else if (check_owner_action(mPadId, daPy__PlayerStatus0(daPyStts0_UNK400_e | daPyStts0_UNK4_e | daPyStts0_UNK2_e)) && i_curMode != 12) { + else if (check_owner_action(mPadId, daPyStts0_UNK400_e | daPyStts0_UNK4_e | daPyStts0_UNK2_e) && i_curMode != 12) { if (mpLockonTarget) { next_mode = 8; } } - else if (attn.LockonTruth() && !check_owner_action(mPadId, daPy__PlayerStatus0(daPyStts0_UNK800000_e | daPyStts0_BOOMERANG_WAIT_e))) { + else if (attn.LockonTruth() && !check_owner_action(mPadId, daPyStts0_CRAWL_e | daPyStts0_UNK4000000_e)) { next_mode = 2; } else if (attn.Lockon()) { next_mode = 1; } - else if (check_owner_action(mPadId, daPyStts0_BOOMERANG_WAIT_e) && !check_owner_action(mPadId, daPy__PlayerStatus0(daPyStts0_UNK37a02371_e & ~daPyStts0_UNK1000000_e)) && !check_owner_action1(mPadId, daPyStts1_UNK10_e | daPyStts1_WIND_WAKER_CONDUCT_e)) { + else if (check_owner_action(mPadId, daPyStts0_BOOMERANG_WAIT_e) && !check_owner_action(mPadId, daPyStts0_UNK37a02371_e & ~daPyStts0_UNK1000000_e) && !check_owner_action1(mPadId, daPyStts1_UNK10_e | daPyStts1_WIND_WAKER_CONDUCT_e)) { mpLockonTarget = get_boomerang_actor(mpPlayerActor); next_mode = 2; mLockOnActorId = fpcM_ERROR_PROCESS_ID_e; @@ -1237,7 +1237,7 @@ int dCamera_c::nextMode(s32 i_curMode) { mLockOnActorId = fpcM_ERROR_PROCESS_ID_e; } - if (next_mode == 12 && types[mCurType].mStyles[0][next_mode] < 0) { + if (next_mode == 12 && types[mCurType].mStyles[next_mode] < 0) { next_mode = i_curMode; if (mCurType != mCamTypeEvent && mCurType != mCamTypeBoat && mCurType != mCamTypeBoatBattle && mCurType != mCamTypeRestrict) { m254 |= 1; @@ -1245,7 +1245,7 @@ int dCamera_c::nextMode(s32 i_curMode) { m144 = 1; } - if (types[mCurType].mStyles[0][next_mode] >= 0) { + if (types[mCurType].mStyles[next_mode] >= 0) { if (next_mode == 1) { setFlag(0x100000); } @@ -1257,7 +1257,7 @@ int dCamera_c::nextMode(s32 i_curMode) { /* 80164898-80164A48 .text onModeChange__9dCamera_cFll */ bool dCamera_c::onModeChange(s32 i_curMode, s32 i_nextMode) { - if (i_curMode == 0xe && mCamParam.CheckFlag(dCamParam_UNK010)) { + if (i_curMode == 0xe && mCamParam.CheckFlag(dCamPrmFlg_UNK010)) { setView(0.0f, 0.0f, 640.0f, 480.0f); } @@ -1289,12 +1289,12 @@ bool dCamera_c::onModeChange(s32 i_curMode, s32 i_nextMode) { setFlag(0x10); break; case 0: - if (i_curMode == 1 && types[mCurType].mStyles[0][0] == types[mCurType].mStyles[0][1]) { + if (i_curMode == 1 && types[mCurType].mStyles[0] == types[mCurType].mStyles[1]) { m110 = 0; } break; case 1: - if (i_curMode == 0 && types[mCurType].mStyles[0][0] == types[mCurType].mStyles[0][1]) { + if (i_curMode == 0 && types[mCurType].mStyles[0] == types[mCurType].mStyles[1]) { m110 = 0; } break; @@ -1336,7 +1336,7 @@ int dCamera_c::nextType(s32 curType) { if (daNpc_kam_c::m_hyoi_kamome) { nextType = GetCameraTypeFromCameraName("Seagal"); } - else if ((check_owner_action(mPadId, daPy__PlayerStatus0(daPyStts0_UNK1000000_e | daPyStts0_SHIP_RIDE_e)) || check_owner_action1(mPadId, daPyStts1_UNK80_e)) && m524 == 0xFF) { + else if ((check_owner_action(mPadId, daPyStts0_UNK1000000_e | daPyStts0_SHIP_RIDE_e) || check_owner_action1(mPadId, daPyStts1_UNK80_e)) && m524 == 0xFF) { nextType = mCamTypeBoat; } else { @@ -1425,7 +1425,7 @@ bool dCamera_c::onTypeChange(s32 i_curType, s32 i_nextType) { m114 = 0; mode = mCurMode; if (m144 == 0) { - s32 style = types[i_nextType].mStyles[0][0]; + s32 style = types[i_nextType].mStyles[0]; if (style >= 0) { switch (mCamParam.Algorythmn(style)) { case 5: @@ -1986,7 +1986,7 @@ int dCamera_c::defaultTriming() { mTrimSize = 2; } - else if (check_owner_action(mPadId, daPy__PlayerStatus0(daPyStts0_BOOMERANG_AIM_e | daPyStts0_ROPE_AIM_e | daPyStts0_HOOKSHOT_AIM_e | daPyStts0_BOW_AIM_e))) { + else if (check_owner_action(mPadId, daPyStts0_BOOMERANG_AIM_e | daPyStts0_ROPE_AIM_e | daPyStts0_HOOKSHOT_AIM_e | daPyStts0_BOW_AIM_e)) { mTrimSize = 1; } break; @@ -2588,7 +2588,7 @@ void dCamera_c::checkGroundInfo() { m314 = 1; } else { - m318 = -1e+09; + m318 = C_BG_MIN_HEIGHT; m314 = 0; } @@ -2681,9 +2681,9 @@ bool dCamera_c::followCamera(s32 param_1) { bVar2 = false; if (m108 == 0) { - m3AC = 0; - m3B0 = 0.0f; - m3D9 = 0; + mWork.follow.m3AC = 0; + mWork.follow.m3B0 = 0.0f; + mWork.follow.m3D9 = 0; } bVar1 = false; @@ -2734,7 +2734,7 @@ bool dCamera_c::followCamera(s32 param_1) { } } - if (check_owner_action(mPadId, daPy__PlayerStatus0(daPyStts0_CRAWL_e | daPyStts0_SWIM_e))) { + if (check_owner_action(mPadId, daPyStts0_CRAWL_e | daPyStts0_SWIM_e)) { if (local_498 < cSAngle(4.0f)) { local_498.Val(4.0f); } @@ -2744,13 +2744,13 @@ bool dCamera_c::followCamera(s32 param_1) { } } - if (check_owner_action(mPadId, daPy__PlayerStatus0(daPyStts0_UNK200_e | daPyStts0_UNK100_e)) && !check_owner_action(mPadId, daPyStts0_UNK2000000_e)) { + if (check_owner_action(mPadId, daPyStts0_UNK200_e | daPyStts0_UNK100_e) && !check_owner_action(mPadId, daPyStts0_UNK2000000_e)) { if (dVar21 > -10.0f) { - m3B0 = -10.0f; + mWork.follow.m3B0 = -10.0f; } } else { - m3B0 += ((dVar21 - m3B0) * 0.06f); + mWork.follow.m3B0 += ((dVar21 - mWork.follow.m3B0) * 0.06f); } if (check_owner_action1(mPadId, daPyStts1_UNK40000_e)) { @@ -2764,18 +2764,18 @@ bool dCamera_c::followCamera(s32 param_1) { cSAngle acStack_4a0 = cSAngle::_0; - if (check_owner_action(mPadId, daPy__PlayerStatus0(daPyStts0_UNK40_e | daPyStts0_UNK20_e))) { + if (check_owner_action(mPadId, daPyStts0_UNK40_e | daPyStts0_UNK20_e)) { acStack_4a0 = calcPeepAngle(); if (check_owner_action(mPadId, daPyStts0_UNK20_e)) { dVar19 = -dVar19; } } - if (mCamParam.Flag(param_1, dCamParam_UNK200)) { + if (mCamParam.Flag(param_1, dCamPrmFlg_UNK200)) { bVar2 = true; } - if (!chkFlag(daPyStts0_SWIM_e) || !check_owner_action(mPadId, daPy__PlayerStatus0(daPyStts0_BOOMERANG_AIM_e | daPyStts0_ROPE_AIM_e | daPyStts0_HOOKSHOT_AIM_e | daPyStts0_BOW_AIM_e))) { + if (!chkFlag(daPyStts0_SWIM_e) || !check_owner_action(mPadId, daPyStts0_BOOMERANG_AIM_e | daPyStts0_ROPE_AIM_e | daPyStts0_HOOKSHOT_AIM_e | daPyStts0_BOW_AIM_e)) { bVar3 = false; if (daNpc_Cb1_c::isFlying() || daNpc_Md_c::isFlying()) { bVar3 = true; @@ -2783,61 +2783,61 @@ bool dCamera_c::followCamera(s32 param_1) { if (bVar3) { if (mStickMainPosXLast < -0.2f) { - m3D9 = 1; + mWork.follow.m3D9 = 1; } if (mStickMainPosXLast > 0.2f) { - m3D9 = 0; + mWork.follow.m3D9 = 0; } f32 temp_004 = 0.04f; - if (m3D9) { + if (mWork.follow.m3D9) { fVar37 = -45.0f; } else { fVar37 = 45.0f; } - m3AC += (fVar37 - m3AC) * temp_004; + mWork.follow.m3AC += (fVar37 - mWork.follow.m3AC) * temp_004; } else { - m3AC += (dVar19 - m3AC) * 0.06f; + mWork.follow.m3AC += (dVar19 - mWork.follow.m3AC) * 0.06f; } } - cXyz local_314(m3AC, dVar20, m3B0); + cXyz local_314(mWork.follow.m3AC, dVar20, mWork.follow.m3B0); cXyz local_158; if (m108 == 0) { m03C.Val(m050 - m044); - m378 = 'FLLW'; - m394 = fVar40; - m388 = 0x50; - m398 = dVar25; - m39C = dVar24; - m38C = m392 = m390 = 0; - m3A0 = m3BC = mDirection.V().Degree(); - m3C0 = m044; - m3CC = m050; - m3E8 = m3E0 = m3E4 = 0.01f; - m3DC = 0.75f; - m3EC = dVar23; - m3F0 = dVar22; - m3B4 = 0; - m3D8 = 1; - m3A8 = m060; - m3B8 = 0.0f; - m3DA = 0; + mWork.follow.m378 = 'FLLW'; + mWork.follow.m394 = fVar40; + mWork.follow.m388 = 0x50; + mWork.follow.m398 = dVar25; + mWork.follow.m39C = dVar24; + mWork.follow.m38C = mWork.follow.m392 = mWork.follow.m390 = 0; + mWork.follow.m3A0 = mWork.follow.m3BC = mDirection.V().Degree(); + mWork.follow.m3C0 = m044; + mWork.follow.m3CC = m050; + mWork.follow.m3E8 = mWork.follow.m3E0 = mWork.follow.m3E4 = 0.01f; + mWork.follow.m3DC = 0.75f; + mWork.follow.m3EC = dVar23; + mWork.follow.m3F0 = dVar22; + mWork.follow.m3B4 = 0; + mWork.follow.m3D8 = 1; + mWork.follow.m3A8 = m060; + mWork.follow.m3B8 = 0.0f; + mWork.follow.m3DA = 0; - m3A4 = positionOf(mpPlayerActor).y; + mWork.follow.m3A4 = positionOf(mpPlayerActor).y; if (chkFlag(0x8000) || !m110) { m102 = 1; m101 = 1; m100 = 1; - m37C = 1; + mWork.follow.m37C = 1; } else { cXyz cStack_248 = relationalPos(mpPlayerActor, &local_314); @@ -2873,13 +2873,13 @@ bool dCamera_c::followCamera(s32 param_1) { dVar20 = 10.0f; } - m37C = (std::sqrtf(playerHeight / dVar20) * 3.8f) + 1; + mWork.follow.m37C = (std::sqrtf(playerHeight / dVar20) * 3.8f) + 1; } - m398 = m39C = mDirection.R(); - m3A8 = mFovY; - m380 = m37C * (m37C + 1) >> 1; - m384 = 0.0f; + mWork.follow.m398 = mWork.follow.m39C = mDirection.R(); + mWork.follow.m3A8 = mFovY; + mWork.follow.m380 = mWork.follow.m37C * (mWork.follow.m37C + 1) >> 1; + mWork.follow.m384 = 0.0f; } cXyz cStack_260 = relationalPos(mpPlayerActor, &local_314); @@ -2890,17 +2890,17 @@ bool dCamera_c::followCamera(s32 param_1) { cXyz cross; if (m100 == 0) { if (m31D != 0) { - dComIfG_Bgsp()->MoveBgMatrixCrrPos(mBG.m5C.m04, true, &m3C0, NULL, NULL); + dComIfG_Bgsp()->MoveBgMatrixCrrPos(mBG.m5C.m04, true, &mWork.follow.m3C0, NULL, NULL); } - m384 = m37C - m108; + mWork.follow.m384 = mWork.follow.m37C - m108; - f32 temp = (m384 / m380); - m3C0 += (cStack_260 - m3C0) * temp; + f32 temp = (mWork.follow.m384 / mWork.follow.m380); + mWork.follow.m3C0 += (cStack_260 - mWork.follow.m3C0) * temp; - m044 += (m3C0 - m044) * dVar23; + m044 += (mWork.follow.m3C0 - m044) * dVar23; - f32 xyzDist = dCamMath::xyzHorizontalDistance(cStack_260, m3C0); + f32 xyzDist = dCamMath::xyzHorizontalDistance(cStack_260, mWork.follow.m3C0); if (local_314.x > local_314.z) { local_314.z = local_314.x; @@ -2937,19 +2937,18 @@ bool dCamera_c::followCamera(s32 param_1) { m03C.U(m03C.U() + ((acStack_4a8.Inv() - m03C.U()) * fVar40)); } - m3CC = m050 = m044 + m03C.Xyz(); + mWork.follow.m3CC = m050 = m044 + m03C.Xyz(); - if (m37C <= m108) { + if (mWork.follow.m37C <= m108) { m102 = 1; m101 = 1; m100 = 1; } - m3A0 = m03C.V().Degree(); - m39C = m03C.R(); - //m398 = pfVar14; + mWork.follow.m3A0 = m03C.V().Degree(); + mWork.follow.m398 = mWork.follow.m39C = m03C.R(); m060 += (fVar40 * (dVar31 - m060)); - m380 -= m384; + mWork.follow.m380 -= mWork.follow.m384; return true; } @@ -2958,47 +2957,47 @@ bool dCamera_c::followCamera(s32 param_1) { fVar37 = mpPlayerActor->current.pos.y; fVar37 -= groundHeight(&player_pos); - if (m360 && (check_owner_action(mPadId, daPy__PlayerStatus0(daPyStts0_SWIM_e)) || daNpc_kam_c::m_hyoi_kamome == 0 || check_owner_action(mPadId, 0x200))) { - if (m388 < 0x50) { - m388++; + if (m360 && (check_owner_action(mPadId, daPyStts0_SWIM_e) || daNpc_kam_c::m_hyoi_kamome == 0 || check_owner_action(mPadId, 0x200))) { + if (mWork.follow.m388 < 0x50) { + mWork.follow.m388++; local_158.x = 176.0f; - local_158.y = m388; - m394 += (fVar40 - m394) * dCamMath::rationalBezierRatio(m388 / 80.0f, 1.25f); + local_158.y = mWork.follow.m388; + mWork.follow.m394 += (fVar40 - mWork.follow.m394) * dCamMath::rationalBezierRatio(mWork.follow.m388 / 80.0f, 1.25f); } } else { - m394 = 0.0F; - m388 = 0; + mWork.follow.m394 = 0.0F; + mWork.follow.m388 = 0; } - if (check_owner_action(mPadId, daPy__PlayerStatus0(daPyStts0_UNK4000000_e | daPyStts0_UNK2000000_e | daPyStts0_UNK800000_e | daPyStts0_UNK40_e | daPyStts0_UNK20_e | daPyStts0_UNK1_e)) || (check_owner_action1(mPadId, daPyStts1_UNK10000_e) && mDMCSystem.field_0x0 == 0)) { + if (check_owner_action(mPadId, daPyStts0_UNK4000000_e | daPyStts0_UNK2000000_e | daPyStts0_UNK800000_e | daPyStts0_UNK40_e | daPyStts0_UNK20_e | daPyStts0_UNK1_e) || (check_owner_action1(mPadId, daPyStts1_UNK10000_e) && mDMCSystem.field_0x0 == 0)) { setDMCAngle(); } - if ((check_owner_action(mPadId, daPy__PlayerStatus0(daPyStts0_UNK2000000_e | daPyStts0_UNK100_e | daPyStts0_UNK40_e | daPyStts0_UNK20_e | daPyStts0_UNK1_e)) && check_owner_action1(mPadId, daPyStts1_UNK10000_e)) || (cSAngle::_270 < local_4ac && local_4ac < cSAngle::_90)) { - m3EC = dVar23; + if ((check_owner_action(mPadId, daPyStts0_UNK2000000_e | daPyStts0_UNK100_e | daPyStts0_UNK40_e | daPyStts0_UNK20_e | daPyStts0_UNK1_e) && check_owner_action1(mPadId, daPyStts1_UNK10000_e)) || (cSAngle::_270 < local_4ac && local_4ac < cSAngle::_90)) { + mWork.follow.m3EC = dVar23; } else { - m3EC = 0.1f; + mWork.follow.m3EC = 0.1f; } - if (m388 == 0) { - m3F0 = dVar22; + if (mWork.follow.m388 == 0) { + mWork.follow.m3F0 = dVar22; } else { - m3F0 = dVar22 * 0.1f + (1.0f - (dVar22 * 0.1f)) * m394; - if (chkFlag(0x100000) || m3EC <= 0.25f) { + mWork.follow.m3F0 = dVar22 * 0.1f + (1.0f - (dVar22 * 0.1f)) * mWork.follow.m394; + if (chkFlag(0x100000) || mWork.follow.m3EC <= 0.25f) { bVar3 = false; if (daNpc_Cb1_c::isFlying() || daNpc_Md_c::isFlying()) { bVar3 = true; } if (!bVar3 && check_owner_action1(mPadId, daPyStts1_UNK40000_e)) goto LAB_8016b24c; } - m3EC = m394 * 0.75f + 0.25f; + mWork.follow.m3EC = mWork.follow.m394 * 0.75f + 0.25f; } LAB_8016b24c: - cXyz cStack_284(m3EC, m3F0, m3EC); + cXyz cStack_284(mWork.follow.m3EC, mWork.follow.m3F0, mWork.follow.m3EC); bVar4 = true; bVar3 = false; @@ -3006,7 +3005,7 @@ bool dCamera_c::followCamera(s32 param_1) { bVar3 = true; } - if (chkFlag(0x100000) || check_owner_action(mPadId, daPy__PlayerStatus0(daPyStts0_UNK4000000_e | daPyStts0_UNK2000000_e | daPyStts0_UNK800000_e | daPyStts0_TELESCOPE_LOOK_e | daPyStts0_UNK40_e | daPyStts0_UNK20_e | daPyStts0_UNK1_e)) || check_owner_action1(mPadId, daPyStts1_UNK10000_e | daPyStts1_DEKU_LEAF_FAN_e) || m388) { + if (chkFlag(0x100000) || check_owner_action(mPadId, daPyStts0_UNK4000000_e | daPyStts0_UNK2000000_e | daPyStts0_UNK800000_e | daPyStts0_TELESCOPE_LOOK_e | daPyStts0_UNK40_e | daPyStts0_UNK20_e | daPyStts0_UNK1_e) || check_owner_action1(mPadId, daPyStts1_UNK10000_e | daPyStts1_DEKU_LEAF_FAN_e) || mWork.follow.m388) { bVar4 = false; } @@ -3026,7 +3025,7 @@ bool dCamera_c::followCamera(s32 param_1) { if (m780) { cXyz attn_pos = attentionPos(mpPlayerActor); - if (check_owner_action(mPadId, daPy__PlayerStatus0(daPyStts0_CRAWL_e | daPyStts0_SWIM_e | daPyStts0_UNK100_e))) { + if (check_owner_action(mPadId, daPyStts0_CRAWL_e | daPyStts0_SWIM_e | daPyStts0_UNK100_e)) { attn_pos.y = eyePos(mpPlayerActor).y + 30.0f; } else { @@ -3043,112 +3042,112 @@ bool dCamera_c::followCamera(s32 param_1) { cSGlobe local_484(m050 - m044); - if (m392 <= 0 || iVar17 <= m392) { + if (mWork.follow.m392 <= 0 || iVar17 <= mWork.follow.m392) { dVar20 = dCamMath::rationalBezierRatio((float) iVar5 / (float)iVar17, fVar38); - m3D8 = 1; - m3B8 = (1.0f - m3B8.Val()) * dVar20; + mWork.follow.m3D8 = 1; + mWork.follow.m3B8 = (1.0f - mWork.follow.m3B8) * dVar20; } else if (chkFlag(0x100000) || daNpc_Cb1_c::isFlying()) { - if (m3D8) { - m3B8 = 0.05f; + if (mWork.follow.m3D8) { + mWork.follow.m3B8 = 0.05f; } - m3D8 = 0; - m3B8 += (1.0f - m3B8.Val()) * 0.2f; + mWork.follow.m3D8 = 0; + mWork.follow.m3B8 += (1.0f - mWork.follow.m3B8) * 0.2f; } else if (daNpc_Md_c::isFlying() || daNpc_kam_c::m_hyoi_kamome) { - m3D8 = 1; + mWork.follow.m3D8 = 1; } else if (check_owner_action1(mPadId, check_owner_action1(mPadId, daPyStts1_UNK40000_e | daPyStts1_DEKU_LEAF_FAN_e))) { - if (m3D8) { - m3B8 = 0.05f; + if (mWork.follow.m3D8) { + mWork.follow.m3B8 = 0.05f; } - m3D8 = 0; - m3B8 += (0.5f - m3B8.Val()) * 0.05f; + mWork.follow.m3D8 = 0; + mWork.follow.m3B8 += (0.5f - mWork.follow.m3B8) * 0.05f; } else { - m3D8 = 1; + mWork.follow.m3D8 = 1; if (mDMCSystem.field_0x0) { - m3B8 = 0.0f; + mWork.follow.m3B8 = 0.0f; } else if (mStickMainPosYLast >= 0.0f) { - m3B8 = 1.0f - ((cSAngle(dCamMath::rationalBezierRatio(mStickMainPosXLast, dVar33) * 180.0f).Cos() * 0.5f) + 0.5f); + mWork.follow.m3B8 = 1.0f - ((cSAngle(dCamMath::rationalBezierRatio(mStickMainPosXLast, dVar33) * 180.0f).Cos() * 0.5f) + 0.5f); } else { - m3B8 = 1.0f - ((cSAngle(dCamMath::rationalBezierRatio(mStickMainPosXLast, dVar34) * 180.0f).Cos() * 0.25f) + 0.75f); + mWork.follow.m3B8 = 1.0f - ((cSAngle(dCamMath::rationalBezierRatio(mStickMainPosXLast, dVar34) * 180.0f).Cos() * 0.25f) + 0.75f); } - m3B8 *= mStickMainValueLast; + mWork.follow.m3B8 *= mStickMainValueLast; if (chkFlag(0x80000)) { - m3B8 *= 0.5f; + mWork.follow.m3B8 *= 0.5f; } else { - m3B8 *= 0.1f; + mWork.follow.m3B8 *= 0.1f; } - if (check_owner_action(mPadId, daPy__PlayerStatus0(daPyStts0_UNK2000000_e | daPyStts0_UNK100_e)) || check_owner_action1(mPadId, check_owner_action1(mPadId, daPyStts1_UNK10000_e))) { - if (m38C == 0) { + if (check_owner_action(mPadId, daPyStts0_UNK2000000_e | daPyStts0_UNK100_e) || check_owner_action1(mPadId, check_owner_action1(mPadId, daPyStts1_UNK10000_e))) { + if (mWork.follow.m38C == 0) { if (local_4ac > cSAngle::_270 && local_4ac < cSAngle::_90) { - m38C = 1; + mWork.follow.m38C = 1; } else { - m38C = -1; + mWork.follow.m38C = -1; } } - else if (m38C < 0) { - m38C--; - if (m38C <= -0x20) { - m38C = 0x10; + else if (mWork.follow.m38C < 0) { + mWork.follow.m38C--; + if (mWork.follow.m38C <= -0x20) { + mWork.follow.m38C = 0x10; } } - else if (m38C < 0xf) { - m3B8 = m38C * 0.033333335f; - m38C++; + else if (mWork.follow.m38C < 0xf) { + mWork.follow.m3B8 = mWork.follow.m38C * 0.033333335f; + mWork.follow.m38C++; } else if (!check_owner_action(mPadId, daPyStts0_UNK2000000_e)) { if (mStickMainValueLast < 0.1f) { - m3B8 = 0.05f; + mWork.follow.m3B8 = 0.05f; } else { - m3B8 = dCamMath::rationalBezierRatio(std::fabsf(local_4ac.Sin()), 12.0f); + mWork.follow.m3B8 = dCamMath::rationalBezierRatio(std::fabsf(local_4ac.Sin()), 12.0f); } } } else if (bVar1) { - if (m38C == 0 && (local_4ac <= cSAngle::_270 || local_4ac >= cSAngle::_90)) { - m38C = 1; + if (mWork.follow.m38C == 0 && (local_4ac <= cSAngle::_270 || local_4ac >= cSAngle::_90)) { + mWork.follow.m38C = 1; } - else if (m38C < 0xf) { - m3B8 = iVar5 * 0.033333335f; - m38C++; + else if (mWork.follow.m38C < 0xf) { + mWork.follow.m3B8 = iVar5 * 0.033333335f; + mWork.follow.m38C++; } - else if (check_owner_action(mPadId, daPy__PlayerStatus0(daPyStts0_UNK40_e | daPyStts0_UNK20_e))) { - m3B8 = 0.15f; + else if (check_owner_action(mPadId, daPyStts0_UNK40_e | daPyStts0_UNK20_e)) { + mWork.follow.m3B8 = 0.15f; } else if (mStickMainValueLast < 0.1f) { - m3B8 = 0.05f; + mWork.follow.m3B8 = 0.05f; } else { - m3B8 = dCamMath::rationalBezierRatio(std::fabsf(local_4ac.Sin()), 12.0f); + mWork.follow.m3B8 = dCamMath::rationalBezierRatio(std::fabsf(local_4ac.Sin()), 12.0f); } } else { - m3B8 *= dVar35; - m38C = 0; + mWork.follow.m3B8 *= dVar35; + mWork.follow.m38C = 0; } } cSAngle acStack_4b4; - if (chkFlag(0x80) && !chkFlag(0x80000) && mCurMode == 0 && m38C == 0) { + if (chkFlag(0x80) && !chkFlag(0x80000) && mCurMode == 0 && mWork.follow.m38C == 0) { acStack_4b4 = cSAngle(mDirection.U().Val()); } else if (bVar1) { acStack_4b4 = acStack_4a8; - if (check_owner_action(mPadId, daPy__PlayerStatus0(daPyStts0_UNK40_e | daPyStts0_UNK20_e))) { + if (check_owner_action(mPadId, daPyStts0_UNK40_e | daPyStts0_UNK20_e)) { acStack_4b4 += acStack_4a0; } } @@ -3157,93 +3156,93 @@ bool dCamera_c::followCamera(s32 param_1) { } cSAngle acStack_4b8 = cSAngle((s16)0); - cSAngle acStack_51c = (acStack_4b4 - local_484.V()) * m3B8.Degree() * local_484.U().Cos(); + cSAngle acStack_51c = (acStack_4b4 - local_484.V()) * mWork.follow.m3B8 * local_484.U().Cos(); m03C.U(local_484.V() + acStack_51c + acStack_4b8); cSAngle local_4bc; if (check_owner_action1(mPadId, daPyStts1_UNK20000_e)) { - if (m392 <= iVar17) { + if (mWork.follow.m392 <= iVar17) { local_4bc = acStack_490; - m3E0 = dCamMath::rationalBezierRatio((float)m392 / (float)iVar17, fVar38); + mWork.follow.m3E0 = dCamMath::rationalBezierRatio((float)mWork.follow.m392 / (float)iVar17, fVar38); setFlag(0x4000000); - m392++; + mWork.follow.m392++; } else { local_4bc = acStack_490; - m3E0 = 1.0f; + mWork.follow.m3E0 = 1.0f; } - m3BC = m3A0 = local_4bc.Degree(); + mWork.follow.m3BC = mWork.follow.m3A0 = local_4bc.Degree(); } else { - if (m392 != 0) { - m3E0 = 0.0f; + if (mWork.follow.m392 != 0) { + mWork.follow.m3E0 = 0.0f; } - m392 = 0; + mWork.follow.m392 = 0; if (mCurMode == 1) { - m3E0 = 0.5f; - m3BC = m3A0 = m3A0 + (m3B8.Val() * (dVar28 - m3A0)); - local_4bc = cAngle::d2s(m3A0); - m3E0 += (fVar40 - m3E0) * 0.5f; + mWork.follow.m3E0 = 0.5f; + mWork.follow.m3BC = mWork.follow.m3A0 = mWork.follow.m3A0 + (mWork.follow.m3B8 * (dVar28 - mWork.follow.m3A0)); + local_4bc = cAngle::d2s(mWork.follow.m3A0); + mWork.follow.m3E0 += (fVar40 - mWork.follow.m3E0) * 0.5f; } - else if (m388 == 0) { - m3BC += dVar27 * (dVar28 - m3BC); + else if (mWork.follow.m388 == 0) { + mWork.follow.m3BC += dVar27 * (dVar28 - mWork.follow.m3BC); dVar20 = 0.01f; - if (m3B4 != 0) { + if (mWork.follow.m3B4 != 0) { dVar20 = 0.25f; dVar29 = dVar20; } - m3A0 += dVar29 * ((m3BC + m148.Degree()) - m3A0); - local_4bc = cAngle::d2s(m3A0); + mWork.follow.m3A0 += dVar29 * ((mWork.follow.m3BC + m148.Degree()) - mWork.follow.m3A0); + local_4bc = cAngle::d2s(mWork.follow.m3A0); if (chkFlag(0x80000)) { - m3E0 = 0.0f; + mWork.follow.m3E0 = 0.0f; } - else if (m3B4) { - m3E0 += dVar20 * (fVar40 - m3E0); + else if (mWork.follow.m3B4) { + mWork.follow.m3E0 += dVar20 * (fVar40 - mWork.follow.m3E0); } else if (mMonitor.mPos.y < 0.01f && mCurMode == 0) { - m3E0 += (0.1f - m3E0) * 0.05f; + mWork.follow.m3E0 += (0.1f - mWork.follow.m3E0) * 0.05f; } else { - m3E0 += dVar20 * (fVar40 - m3E0); + mWork.follow.m3E0 += dVar20 * (fVar40 - mWork.follow.m3E0); } } else { if (check_owner_action(mPadId, daPyStts0_UNK2000000_e) || check_owner_action1(mPadId, daPyStts1_UNK10000_e)) { local_4bc = acStack_51c; - m3BC = m3A0 = local_4bc.Degree(); - m3E0 = 0.95f; + mWork.follow.m3BC = mWork.follow.m3A0 = local_4bc.Degree(); + mWork.follow.m3E0 = 0.95f; } else if (isPlayerFlying(mPadId) || daNpc_kam_c::m_hyoi_kamome) { local_4bc = acStack_51c; - if (m3A4 < positionOf(mpPlayerActor).y) { - m3E0 = dCamMath::rationalBezierRatio(m394, dVar30); + if (mWork.follow.m3A4 < positionOf(mpPlayerActor).y) { + mWork.follow.m3E0 = dCamMath::rationalBezierRatio(mWork.follow.m394, dVar30); } else { - m3E0 += (0.75f - m3E0) * 0.15f; + mWork.follow.m3E0 += (0.75f - mWork.follow.m3E0) * 0.15f; } - m3BC = m3A0 = local_4bc.Degree(); + mWork.follow.m3BC = mWork.follow.m3A0 = local_4bc.Degree(); } else { local_4bc = acStack_51c; - m3BC = m3A0 = local_4bc.Degree(); - m3E0 = dCamMath::rationalBezierRatio(m394, dVar30); + mWork.follow.m3BC = mWork.follow.m3A0 = local_4bc.Degree(); + mWork.follow.m3E0 = dCamMath::rationalBezierRatio(mWork.follow.m394, dVar30); } } } - m3A4 = positionOf(mpPlayerActor).y; + mWork.follow.m3A4 = positionOf(mpPlayerActor).y; - if (check_owner_action(mPadId, daPy__PlayerStatus0(daPyStts0_UNK2000000_e | daPyStts0_UNK100_e | daPyStts0_UNK40_e | daPyStts0_UNK20_e | daPyStts0_UNK1_e) || check_owner_action1(mPadId, daPyStts1_UNK10000_e))) { - m3B4 = 1; + if (check_owner_action(mPadId, daPyStts0_UNK2000000_e | daPyStts0_UNK100_e | daPyStts0_UNK40_e | daPyStts0_UNK20_e | daPyStts0_UNK1_e || check_owner_action1(mPadId, daPyStts1_UNK10000_e))) { + mWork.follow.m3B4 = 1; } else { - m3B4 = 0; + mWork.follow.m3B4 = 0; } if (local_4bc < local_498) { @@ -3253,32 +3252,32 @@ bool dCamera_c::followCamera(s32 param_1) { local_4bc.Val(local_49c); } - m03C.V(m03C.U() + ((local_4bc - m03C.U()) * m3E0)); + m03C.V(m03C.U() + ((local_4bc - m03C.U()) * mWork.follow.m3E0)); if (local_494 > m03C.U()) { m03C.V(local_494); } - m398 += dVar27 * (dVar25 - m398); - m39C += dVar27 * (dVar24 - m39C); + mWork.follow.m398 += dVar27 * (dVar25 - mWork.follow.m398); + mWork.follow.m39C += dVar27 * (dVar24 - mWork.follow.m39C); - if (m398 < local_484.R()) { - m3DC += (dVar26 - m3DC) * 0.01f; - local_484.R(m398); + if (mWork.follow.m398 < local_484.R()) { + mWork.follow.m3DC += (dVar26 - mWork.follow.m3DC) * 0.01f; + local_484.R(mWork.follow.m398); } - else if (local_484.R() > m39C) { - m3DC += (dVar26 - m3DC) * 0.01f; - local_484.R(m39C); + else if (local_484.R() > mWork.follow.m39C) { + mWork.follow.m3DC += (dVar26 - mWork.follow.m3DC) * 0.01f; + local_484.R(mWork.follow.m39C); } else { - m3DC = 1.0f; + mWork.follow.m3DC = 1.0f; } - m03C.R(m03C.R() + m3DC * (local_484.R() - m03C.R())); - m3CC = m044 + m03C.Xyz(); + m03C.R(m03C.R() + mWork.follow.m3DC * (local_484.R() - m03C.R())); + mWork.follow.m3CC = m044 + m03C.Xyz(); - if (bVar3 && bVar4 && mCamParam.Flag(param_1, dCamParam_UNK001)) { + if (bVar3 && bVar4 && mCamParam.Flag(param_1, dCamPrmFlg_UNK001)) { cSGlobe cStack_48c(m03C); cStack_48c.V(cSAngle(dVar28)); cXyz cStack_2b4 = m044 + cStack_48c.Xyz(); @@ -3287,15 +3286,15 @@ bool dCamera_c::followCamera(s32 param_1) { } } - m050 += (m3CC - m050) * 0.75f; + m050 += (mWork.follow.m3CC - m050) * 0.75f; m03C.Val(m050 - m044); if (chkFlag(8)) { - m3DA = 1; + mWork.follow.m3DA = 1; } - m3E8 += (dVar32 - m3E8) * 0.01f; - m060 += m3E8 * (dVar31 - m060); + mWork.follow.m3E8 += (dVar32 - mWork.follow.m3E8) * 0.01f; + m060 += mWork.follow.m3E8 * (dVar31 - m060); if (check_owner_action1(mPadId, daPyStts1_DEKU_LEAF_FAN_e)) { m060 += cM_rndFX(mCamSetup.m078); @@ -3349,22 +3348,19 @@ bool dCamera_c::lockonCamera(s32 param_1) { m100 = 1; m101 = 1; m102 = 1; - m378 = 'LOCK'; - m380 = 0; - m384 = 1.0f; - m38C = 0; - m588 = 0; - m390 = m044.x; - m394 = m044.y; - m398 = m044.z; + mWork.lockon.m378 = 'LOCK'; + mWork.lockon.m380 = 0; + mWork.lockon.m384 = 1.0f; + mWork.lockon.m38C = 0; + mWork.lockon.m39C = 0; + mWork.lockon.m390 = m044; cXyz cStack_150 = m044 - attentionPos(mpPlayerActor); - //m3A8.Val() - //cSGlobe::Val((cSGlobe *)&this->field304_0x3a8,&cStack_150); - m3A0 = m39C = 0.0f; - m3B8 = mCamSetup.Cushion4Base(); - m388 = 0; - m3A0 = 0; - m3A4 = 0; + mWork.lockon.m3A8.Val(cStack_150); + mWork.lockon.m3A0 = mWork.lockon.m39C = 0.0f; + mWork.lockon.m3B8 = mCamSetup.Cushion4Base(); + mWork.lockon.m388 = 0; + mWork.lockon.m3A0 = 0; + mWork.lockon.m3A4 = 0; if (mpLockonTarget) { radiusActorInSight(mpPlayerActor, mpLockonTarget); @@ -3375,20 +3371,20 @@ bool dCamera_c::lockonCamera(s32 param_1) { dComIfG_Bgsp()->MoveBgMatrixCrrPos(mBG.m5C.m04, true, &m36C, NULL, NULL); } if (dComIfGp_getAttention().LockonTruth() && check_owner_action(mPadId, daPyStts0_BOOMERANG_WAIT_e)) { - m38C = 1; + mWork.lockon.m38C = 1; } else { - m38C = 0; + mWork.lockon.m38C = 0; } if (check_owner_action(mPadId, daPyStts0_UNK400_e)) { - m38C = 0; + mWork.lockon.m38C = 0; } else { - if (m38C) { + if (mWork.lockon.m38C) { dComIfGp_getVibration().StartShock(2, 0x10, cXyz(0.0f, 1.0f, 0.0f)); } - m38C = 1; + mWork.lockon.m38C = 1; } bool bVar6 = true; @@ -3406,7 +3402,7 @@ bool dCamera_c::lockonCamera(s32 param_1) { f32 dVar17 = dComIfGp_getAttention().LockonReleaseDistanse(); f32 dVar20 = 10000.0f; cSGlobe local_230; - if (check_owner_action(mPadId, daPy__PlayerStatus0(daPyStts0_UNK40_e | daPyStts0_UNK20_e | daPyStts0_UNK1_e))) { + if (check_owner_action(mPadId, daPyStts0_UNK40_e | daPyStts0_UNK20_e | daPyStts0_UNK1_e)) { if (mpLockonTarget) { local_230.Val(mCamSetup.ParallelDist(), cSAngle::_0, directionOf(mpPlayerActor)); fVar4 = 1.0f; @@ -3449,12 +3445,12 @@ bool dCamera_c::lockonCamera(s32 param_1) { cSAngle local_25c = m03C.U().Inv() - acStack_254; if (local_25c < cSAngle::_0) { - m38C = 0; + mWork.lockon.m38C = 0; acStack_254 -= local_258; local_25c = -acStack_254; } else { - m38C = 1; + mWork.lockon.m38C = 1; acStack_254 += local_258; } @@ -3463,24 +3459,24 @@ bool dCamera_c::lockonCamera(s32 param_1) { if (chkFlag(0x80080)) { cXyz local_114 = attentionPos(mpPlayerActor); if (pointInSight(&local_114)) { - if (m388 == 0) { - int iVar10 = -m38C + 1; - m390 = iVar10 - (-m38C + (iVar10 == 0)); + if (mWork.lockon.m388 == 0) { + int iVar10 = -mWork.lockon.m38C + 1; + mWork.lockon.m388 = iVar10 - (-mWork.lockon.m38C + (iVar10 == 0)); } bVar6 = true; - m388 = 0x3c; + mWork.lockon.m388 = 0x3c; } } if (lineBGCheckBack(&m044, &local_108, 0x7f) && lineBGCheck(&m050, &m044, 0x7f)) { bVar6 = true; - m388 = 0x3c; + mWork.lockon.m388 = 0x3c; } - if (m388) { - m388--; - if (m388 && mStickMainValueLast <= 0.1f) { - m388 = 1; + if (mWork.lockon.m388) { + mWork.lockon.m388--; + if (mWork.lockon.m388 && mStickMainValueLast <= 0.1f) { + mWork.lockon.m388 = 1; } bVar6 = true; } @@ -3490,7 +3486,7 @@ bool dCamera_c::lockonCamera(s32 param_1) { if (chkFlag(0x10)) { fVar3 = 0.01f; - m3B8 = 0.01f; + mWork.lockon.m3B8 = 0.01f; } else if (m360) { fVar3 = mCamSetup.Cushion4Base(); @@ -3499,9 +3495,9 @@ bool dCamera_c::lockonCamera(s32 param_1) { fVar3 = mCamSetup.Cushion4Jump(); } - m3B8 += (fVar3 - m3B8.Val()) * mCamSetup.CusCus(); - m390 = local_108.x; - m398 = local_108.z; + mWork.lockon.m3B8 += (fVar3 - mWork.lockon.m3B8) * mCamSetup.CusCus(); + mWork.lockon.m390.x = local_108.x; + mWork.lockon.m390.z = local_108.z; if (bVar6) { dVar17 = mCamParam.LockonCenterHeight(fVar4); @@ -3510,13 +3506,13 @@ bool dCamera_c::lockonCamera(s32 param_1) { dVar17 = mCamParam.LockonCenterHeight(fVar4) + 25.0f; } - m398 += m3B8 * ((local_108.y + dVar17) - m398); + mWork.lockon.m390.z += mWork.lockon.m3B8 * ((local_108.y + dVar17) - mWork.lockon.m390.z); dVar17 = local_230.R(); f32 dVar19; if (mpLockonTarget) { f32 dVar18 = local_25c.Cos(); - dVar19 = (local_230.U() * 1.3f).Cos(); + dVar19 = cSAngle(local_230.U() * 1.3f).Cos(); if (std::fabsf(dVar18) < std::fabsf(dVar19)) { dVar19 = dVar18; } @@ -3527,22 +3523,22 @@ bool dCamera_c::lockonCamera(s32 param_1) { } cSAngle acStack_260 = local_230.U(); - m3E8 += (fVar21 - m3E8) * mCamSetup.CusCus(); - m3E0 += (fVar2 - m3E0) * mCamSetup.CusCus(); - cSAngle temp(m3E0 + 2); - cSAngle acStack_264 = temp + (acStack_260 - temp) * m3E8; + mWork.lockon.m3B4 += (fVar21 - mWork.lockon.m3B4) * mCamSetup.CusCus(); + mWork.lockon.m3B0 += (fVar2 - mWork.lockon.m3B0) * mCamSetup.CusCus(); + cSAngle temp(mWork.lockon.m3B0 + 2); + cSAngle acStack_264 = temp + (acStack_260 - temp) * mWork.lockon.m3B4; cSAngle acStack_268; if (bVar6) { - fVar2 = m3A8 * 0.75f; + fVar2 = mWork.lockon.m3A8.R() * 0.75f; acStack_268.Val(m534 + (local_230.U() - m534) * 0.05f); } else { - fVar2 = m3A8 + m3E4 * (m384 * (dVar19 + dVar17 * 0.05f) - m3A8); - acStack_268.Val(m534 + m3E8 * (local_230.U() - m534)); + fVar2 = mWork.lockon.m3A8.R() + mWork.lockon.m3B0 * (mWork.lockon.m384 * (dVar19 + dVar17 * 0.05f) - mWork.lockon.m3A8.R()); + acStack_268.Val(m534 + mWork.lockon.m3B4 * (local_230.U() - m534)); } - //m3A8.Val(fVar2, acStack_268, acStack_264); - //m044 = m390 + m3A8.Xyz(); + mWork.lockon.m3A8.Val(fVar2, acStack_268, acStack_264); + m044 = mWork.lockon.m390 + mWork.lockon.m3A8.Xyz(); if (mpLockonTarget && mLockOnActorId != -1) { cXyz local_120 = attentionPos(mpPlayerActor); if (lineBGCheck(&local_120, &m044, 0x7f)) { @@ -3586,9 +3582,10 @@ bool dCamera_c::lockonCamera(s32 param_1) { } else { iVar15 = local_258.Val(); + f32 f1 = (float)local_274.Val() / (float)iVar15; if (local_25c.Val() < iVar15) { fVar22 = mCamParam.Val(param_1, dCamStyleParam_UNK15); - fVar21 = dCamMath::customRBRatio(-((float)local_274.Val() / (float)iVar15), fVar21); + fVar21 = dCamMath::customRBRatio(-f1, fVar21); dVar17 = fVar22 * fVar21; } else { @@ -3599,7 +3596,7 @@ bool dCamera_c::lockonCamera(s32 param_1) { local_27c = cSAngle::_180 - local_258; } - dVar17 = mCamParam.Val(param_1, dCamStyleParam_UNK20) * dCamMath::rationalBezierRatio((float)local_274.Val() / (float)local_27c.Val(), fVar21); + dVar17 = mCamParam.Val(param_1, dCamStyleParam_UNK20) * dCamMath::rationalBezierRatio(f1, fVar21); if (dVar20 < 100.0f) { dVar17 *= dCamMath::rationalBezierRatio(dVar20 / 100.0f, 1.0f); @@ -3612,12 +3609,12 @@ bool dCamera_c::lockonCamera(s32 param_1) { } if (check_owner_action1(mPadId, daPyStts1_UNK20000_e)) { - iVar15 = m380; + iVar15 = mWork.lockon.m380; if (iVar15 <= iVar16) { f32 bezier_ratio = dCamMath::rationalBezierRatio((float)iVar15 / (float)iVar16, fVar1); local_270 += (local_250 - local_270) * bezier_ratio; setFlag(0x4000000); - m380++; + mWork.lockon.m380++; } else { local_270 = local_250; @@ -3628,12 +3625,12 @@ bool dCamera_c::lockonCamera(s32 param_1) { local_270 -= (local_230.U() * 0.7f + local_270) * 0.1f; } else { - m380 = 0; + mWork.lockon.m380 = 0; if (chkFlag(0x10)) { local_270 += (mCamParam.LockonLatitude(fVar4) - local_270) * 0.05f; } else if (!m360 && !check_owner_action(mPadId, daPyStts0_UNK400_e)) { - //dVar17 = m3A8.V().Cos(); + //dVar17 = mWork.lockon.m3A8.V().Cos(); local_270 += (local_240.U() - local_270) * (1.0f - std::fabsf(fVar5)) * std::fabsf(dVar17); } else { @@ -3660,7 +3657,7 @@ bool dCamera_c::lockonCamera(s32 param_1) { } } - if (check_owner_action(mPadId, daPy__PlayerStatus0(daPyStts0_UNK1000000_e | daPyStts0_SHIP_RIDE_e))) { + if (check_owner_action(mPadId, daPyStts0_UNK1000000_e | daPyStts0_SHIP_RIDE_e)) { dVar17 = local_270.Degree(); if (dVar17 < mCamParam.Val(param_1, dCamStyleParam_UNK16)) { local_270.Val(mCamParam.Val(param_1, dCamStyleParam_UNK16)); @@ -3762,7 +3759,7 @@ bool dCamera_c::CalcSubjectAngle(s16* param_1, s16* param_2) { return false; } - if (m378 != 'SUBJ') { + if (mWork.subject.m378 != 'SUBJ') { return false; } @@ -3770,19 +3767,19 @@ bool dCamera_c::CalcSubjectAngle(s16* param_1, s16* param_2) { return false; } - if (!m37C) { + if (!mWork.subject.m37C) { bVar9 = false; } - fVar1 = mCamParam.Val(m380, 19); - fVar2 = mCamParam.Val(m380, 24); - fVar3 = mCamParam.Val(m380, 21); + fVar1 = mCamParam.Val(mWork.subject.m380, 19); + fVar2 = mCamParam.Val(mWork.subject.m380, 24); + fVar3 = mCamParam.Val(mWork.subject.m380, 21); fVar4 = mCamSetup.m030; if (!bVar9) { - cSAngle local_88(fVar2 * m384); - cSAngle local_8c(fVar1 * m388); - s16 local_98 = local_88.Val() + m3BA; + cSAngle local_88(fVar2 * mWork.subject.m384); + cSAngle local_8c(fVar1 * mWork.subject.m388); + s16 local_98 = local_88.Val() + mWork.subject.m3BA; *param_2 = local_98; *param_1 = local_8c.Val(); } @@ -3791,13 +3788,13 @@ bool dCamera_c::CalcSubjectAngle(s16* param_1, s16* param_2) { fVar5 = g_mDoCPd_cpadInfo[mPadId].mMainStickPosY; if (is_player(mpPlayerActor)) { - m3B8 = ((daPy_py_c*)mpPlayerActor)->getBodyAngleX(); + mWork.subject.m3B8 = ((daPy_py_c*)mpPlayerActor)->getBodyAngleX(); } else { - m3B8 = mpPlayerActor->shape_angle.x; + mWork.subject.m3B8 = mpPlayerActor->shape_angle.x; } - m3BA = mpPlayerActor->shape_angle.y; + mWork.subject.m3BA = mpPlayerActor->shape_angle.y; f32 f1; if (fVar6 > 0.7f) { @@ -3823,7 +3820,7 @@ bool dCamera_c::CalcSubjectAngle(s16* param_1, s16* param_2) { fVar5 = f3; f32 f2 = 5.0f; - if ((mEye.y <= m354 + f2 || mEye.y <= mBG.m5C.m58 + f2) && ((m388 >= 0.0f && f3 > 0.0f) || (m388 < 0.0f && f3 <= 0.0f))) { + if ((mEye.y <= m354 + f2 || mEye.y <= mBG.m5C.m58 + f2) && ((mWork.subject.m388 >= 0.0f && f3 > 0.0f) || (mWork.subject.m388 < 0.0f && f3 <= 0.0f))) { fVar5 = 0.0f; } @@ -3832,53 +3829,53 @@ bool dCamera_c::CalcSubjectAngle(s16* param_1, s16* param_2) { } if (!check_owner_action(mPadId, daPyStts0_UNK40000_e)) { - if (mCamParam.Flag(m380, dCamParam_UNK020)) { - m384 = -f1; - m388 = fVar5; + if (mCamParam.Flag(mWork.subject.m380, dCamPrmFlg_UNK020)) { + mWork.subject.m384 = -f1; + mWork.subject.m388 = fVar5; } else { dVar11 = dCamMath::rationalBezierRatio(f1, mCamSetup.CurveWeight()); dVar12 = dCamMath::rationalBezierRatio(fVar5, mCamSetup.CurveWeight()); if (check_owner_action(mPadId, daPyStts0_UNK2000_e)) { - m384 = -dVar11 * fVar3; - m388 += dVar12 * fVar3; + mWork.subject.m384 = -dVar11 * fVar3; + mWork.subject.m388 += dVar12 * fVar3; } else { - if (mCamParam.Flag(m380, dCamParam_UNK010)) { - f32 temp = fVar3 - (m38C * (fVar3 * fVar4)); - m384 = -dVar11 * temp; - m388 += dVar12 * temp; + if (mCamParam.Flag(mWork.subject.m380, dCamPrmFlg_UNK010)) { + f32 temp = fVar3 - (mWork.subject.m38C * (fVar3 * fVar4)); + mWork.subject.m384 = -dVar11 * temp; + mWork.subject.m388 += dVar12 * temp; } else { - m384 = -dVar11 * fVar3; - m388 += dVar12 * fVar3; + mWork.subject.m384 = -dVar11 * fVar3; + mWork.subject.m388 += dVar12 * fVar3; } } - if (m384 > 1.0f) { - m384 = 1.0f; + if (mWork.subject.m384 > 1.0f) { + mWork.subject.m384 = 1.0f; } - if (m384 < -1.0f) { - m384 = -1.0f; + if (mWork.subject.m384 < -1.0f) { + mWork.subject.m384 = -1.0f; } - if (m388 > 1.0f) { - m388 = 1.0f; + if (mWork.subject.m388 > 1.0f) { + mWork.subject.m388 = 1.0f; } - if (m388 < -1.0f) { - m388 = -1.0f; + if (mWork.subject.m388 < -1.0f) { + mWork.subject.m388 = -1.0f; } } } else { - m384 = 0.0f; + mWork.subject.m384 = 0.0f; } - cSAngle local_90(fVar2 * m384); - cSAngle local_94(fVar1 * m388); + cSAngle local_90(fVar2 * mWork.subject.m384); + cSAngle local_94(fVar1 * mWork.subject.m388); - s16 local_a8 = local_90.Val() + m3BA; + s16 local_a8 = local_90.Val() + mWork.subject.m3BA; *param_2 = local_a8; *param_1 = local_94.Val(); - m37D = 0; + mWork.subject.m37D = 0; return bVar9; } diff --git a/src/d/d_com_inf_game.cpp b/src/d/d_com_inf_game.cpp index 645346ace..301535b54 100644 --- a/src/d/d_com_inf_game.cpp +++ b/src/d/d_com_inf_game.cpp @@ -1,7 +1,7 @@ -// -// Generated by dtk -// Translation Unit: d_com_inf_game.cpp -// +/** + * d_com_inf_game.cpp + * Game - Shared Runtime Data ("Common Info Game") + */ #include "d/d_com_inf_game.h" #include "JSystem/JUtility/JUTAssert.h" diff --git a/src/d/d_com_lib_game.cpp b/src/d/d_com_lib_game.cpp index 15af31b0d..a663262dd 100644 --- a/src/d/d_com_lib_game.cpp +++ b/src/d/d_com_lib_game.cpp @@ -1,7 +1,7 @@ -// -// Generated by dtk -// Translation Unit: d_com_lib_game.cpp -// +/** + * d_com_lib_game.cpp + * Game - Shared Library ("Common Library Game") + */ #include "d/d_com_lib_game.h" #include "SSystem/SComponent/c_phase.h" diff --git a/src/d/d_jnt_hit.cpp b/src/d/d_jnt_hit.cpp index 75ee7c9f6..10ff0872c 100644 --- a/src/d/d_jnt_hit.cpp +++ b/src/d/d_jnt_hit.cpp @@ -256,7 +256,6 @@ s32 JntHit_c::searchJntHitPosAngleOffset(cXyz* r18, csXyz* r28, cXyz* r29, csXyz cXyz r1_11C; cXyz r1_110; cXyz r1_104; - cXyz r1_2C; csXyz r1_24; J3DModel* model = mpModel; f32 f31 = 10000.0f; diff --git a/src/d/d_particle.cpp b/src/d/d_particle.cpp index 36bc99cf3..853bbcc06 100644 --- a/src/d/d_particle.cpp +++ b/src/d/d_particle.cpp @@ -1059,7 +1059,7 @@ void dPa_cutTurnEcallBack_c::setup(JPABaseEmitter* param_1, const cXyz* param_2, mpBaseEmitter = param_1; field_0x6 = 0; field_0x5 = 0; - field_0x4 = 0xFF; + mAlpha = 0xFF; } /* 8007E9D4-8007EAC4 .text executeAfter__22dPa_cutTurnEcallBack_cFP14JPABaseEmitter */ diff --git a/src/dolphin/gx/GXFifo.c b/src/dolphin/gx/GXFifo.c index 13e33336d..23c28f6d5 100644 --- a/src/dolphin/gx/GXFifo.c +++ b/src/dolphin/gx/GXFifo.c @@ -11,7 +11,7 @@ static GXFifoObj* GPFifo; static OSThread* __GXCurrentThread; -static GXBool data_80451954; +static GXBool CPGPLinked; static u32 GXOverflowSuspendInProgress; @@ -37,7 +37,7 @@ static void GXUnderflowHandler() { static void GXBreakPointHandler(OSContext* context) { OSContext bpContext; - SET_REG_FIELD(gx->cpEnable, 1, 5, 2); + SET_REG_FIELD(gx->cpEnable, 1, 5, 0); GX_SET_CP_REG(1, gx->cpEnable); if (BreakPointCB) { @@ -101,27 +101,27 @@ void GXSetCPUFifo(GXFifoObj* fifo) { GX_SET_PI_REG(3, (u32)fifo->base & 0x3FFFFFFF); GX_SET_PI_REG(4, (u32)fifo->end & 0x3FFFFFFF); reg = 0; - GX_BITFIELD_SET(reg, 6, 21, (u32)fifo->write_ptr >> 5); + GX_BITFIELD_SET(reg, 6, 21, ((u32)fifo->write_ptr & 0x3FFFFFFF) >> 5); GX_BITFIELD_SET(reg, 5, 1, 0); GX_SET_PI_REG(5, reg); - data_80451954 = GX_TRUE; + CPGPLinked = GX_TRUE; __GXWriteFifoIntReset(1, 1); __GXWriteFifoIntEnable(1, 0); __GXFifoLink(1); } else { u32 reg; - if (data_80451954) { + if (CPGPLinked) { __GXFifoLink(0); - data_80451954 = GX_FALSE; + CPGPLinked = GX_FALSE; } __GXWriteFifoIntEnable(0, 0); GX_SET_PI_REG(3, (u32)fifo->base & 0x3FFFFFFF); GX_SET_PI_REG(4, (u32)fifo->end & 0x3FFFFFFF); reg = 0; - GX_BITFIELD_SET(reg, 6, 21, (u32)fifo->write_ptr >> 5); + GX_BITFIELD_SET(reg, 6, 21, ((u32)fifo->write_ptr & 0x3FFFFFFF) >> 5); GX_BITFIELD_SET(reg, 5, 1, 0); GX_SET_PI_REG(5, reg); } @@ -156,38 +156,48 @@ void GXSetGPFifo(GXFifoObj* fifo) { PPCSync(); if (CPUFifo == GPFifo) { - data_80451954 = 1; + CPGPLinked = 1; __GXWriteFifoIntEnable(1, 0); __GXFifoLink(1); } else { - data_80451954 = 0; + CPGPLinked = 0; __GXWriteFifoIntEnable(0, 0); __GXFifoLink(0); } reg = gx->cpEnable; - GX_BITFIELD_SET(reg, 0x1e, 1, 0); - GX_BITFIELD_SET(reg, 0x1a, 1, 0); - GX_SET_CP_REG(1, reg); - GX_SET_CP_REG(1, gx->cpEnable); __GXWriteFifoIntReset(1, 1); __GXFifoReadEnable(); OSRestoreInterrupts(interrupts); } void GXSaveCPUFifo(GXFifoObj* fifo) { - GXFlush(); __GXSaveCPUFifoAux(fifo); } +#define SOME_MACRO1(fifo) \ +do { \ + u32 temp = GX_GET_CP_REG(29) << 16; \ + temp |= GX_GET_CP_REG(28); \ + fifo->read_ptr = OSPhysicalToCached(temp); \ +} while (0) + +#define SOME_MACRO2(fifo) \ +do { \ + u32 temp = GX_GET_CP_REG(25) << 16; \ + temp |= GX_GET_CP_REG(24); \ + fifo->rw_dst = temp; \ +} while (0) + void __GXSaveCPUFifoAux(GXFifoObj* fifo) { int interrupts = OSDisableInterrupts(); + + GXFlush(); fifo->base = OSPhysicalToCached(GX_GET_PI_REG(3)); fifo->end = OSPhysicalToCached(GX_GET_PI_REG(4)); fifo->write_ptr = OSPhysicalToCached(GX_GET_PI_REG(5) & ~0x4000000); - if (data_80451954 != 0) { - u32 reg2 = GX_GET_CP_REG(28) | (GX_GET_CP_REG(29) << 16); - fifo->read_ptr = (void*)(reg2 + -0x80000000); - fifo->rw_dst = (((u32)GX_GET_CP_REG(24) | (GX_GET_CP_REG(25) << 16))); + if (CPGPLinked != 0) { + SOME_MACRO1(fifo); + SOME_MACRO2(fifo); } else { fifo->rw_dst = (u32)fifo->write_ptr - (u32)fifo->read_ptr; if (fifo->rw_dst < 0) { @@ -233,35 +243,29 @@ void __GXFifoInit(void) { } void __GXFifoReadEnable(void) { - SET_REG_FIELD(gx->cpEnable, 1, 0, 2); + SET_REG_FIELD(gx->cpEnable, 1, 0, 1); GX_SET_CP_REG(1, gx->cpEnable); } void __GXFifoReadDisable(void) { - SET_REG_FIELD(gx->cpEnable, 1, 0, 2); + SET_REG_FIELD(gx->cpEnable, 1, 0, 0); GX_SET_CP_REG(1, gx->cpEnable); } -void __GXFifoLink(u8 link) { - u32 b; - if (link) { - b = 1; - } else { - b = 0; - } - SET_REG_FIELD(gx->cpEnable, 1, 4, 2); +void __GXFifoLink(u8 en) { + SET_REG_FIELD(gx->cpEnable, 1, 4, (en != 0) ? 1 : 0); GX_SET_CP_REG(1, gx->cpEnable); } -void __GXWriteFifoIntEnable(u32 p1, u32 p2) { - SET_REG_FIELD(gx->cpEnable, 1, 2, 2); - SET_REG_FIELD(gx->cpEnable, 1, 3, 2); +void __GXWriteFifoIntEnable(u8 hiWatermarkEn, u8 loWatermarkEn) { + SET_REG_FIELD(gx->cpEnable, 1, 2, hiWatermarkEn); + SET_REG_FIELD(gx->cpEnable, 1, 3, loWatermarkEn); GX_SET_CP_REG(1, gx->cpEnable); } -void __GXWriteFifoIntReset(u32 p1, u32 p2) { - SET_REG_FIELD(gx->cpClr, 1, 0, 2); - SET_REG_FIELD(gx->cpClr, 1, 1, 2); +void __GXWriteFifoIntReset(u8 hiWatermarkClr, u8 loWatermarkClr) { + SET_REG_FIELD(gx->cpClr, 1, 0, hiWatermarkClr); + SET_REG_FIELD(gx->cpClr, 1, 1, loWatermarkClr); GX_SET_CP_REG(2, gx->cpClr); } diff --git a/src/dolphin/os/OSCache.c b/src/dolphin/os/OSCache.c index d39e8b143..99a41efb2 100644 --- a/src/dolphin/os/OSCache.c +++ b/src/dolphin/os/OSCache.c @@ -5,6 +5,7 @@ static ASM void DCEnable(void) { // clang-format off +#ifdef __MWERKS__ nofralloc sync @@ -13,11 +14,13 @@ static ASM void DCEnable(void) { mtspr 0x3F0, r3 blr +#endif // clang-format on } ASM void DCInvalidateRange(register void* start, register u32 nBytes) { // clang-format off +#ifdef __MWERKS__ nofralloc cmplwi nBytes, 0 @@ -35,11 +38,13 @@ do_invalidate: bdnz do_invalidate blr +#endif // clang-format on } ASM void DCFlushRange(register void* start, register u32 nBytes) { // clang-format off +#ifdef __MWERKS__ nofralloc cmplwi nBytes, 0 @@ -58,11 +63,13 @@ do_flush: sc blr +#endif // clang-format on } ASM void DCStoreRange(register void* start, register u32 nBytes) { // clang-format off +#ifdef __MWERKS__ nofralloc cmplwi nBytes, 0 @@ -81,11 +88,13 @@ do_store: sc blr +#endif // clang-format on } ASM void DCFlushRangeNoSync(register void* start, register u32 nBytes) { // clang-format off +#ifdef __MWERKS__ nofralloc cmplwi nBytes, 0 @@ -103,11 +112,13 @@ do_flush: bdnz do_flush blr +#endif // clang-format on } ASM void DCStoreRangeNoSync(register void* start, register u32 nBytes) { // clang-format off +#ifdef __MWERKS__ nofralloc cmplwi nBytes, 0 @@ -125,11 +136,13 @@ do_store: bdnz do_store blr +#endif // clang-format on } ASM void DCZeroRange(register void* start, register u32 nBytes) { // clang-format off +#ifdef __MWERKS__ nofralloc cmplwi nBytes, 0 @@ -147,11 +160,13 @@ do_zero: bdnz do_zero blr +#endif // clang-format on } ASM void ICInvalidateRange(register void* start, register u32 nBytes) { // clang-format off +#ifdef __MWERKS__ nofralloc cmplwi nBytes, 0 @@ -172,11 +187,13 @@ do_invalidate: isync blr +#endif // clang-format on } ASM void ICFlashInvalidate(void) { // clang-format off +#ifdef __MWERKS__ nofralloc mfspr r3, 0x3F0 @@ -184,11 +201,13 @@ ASM void ICFlashInvalidate(void) { mtspr 0x3F0, r3 blr +#endif // clang-format on } static ASM void ICEnable(void) { // clang-format off +#ifdef __MWERKS__ nofralloc isync @@ -197,11 +216,13 @@ static ASM void ICEnable(void) { mtspr 0x3F0, r3 blr +#endif // clang-format on } ASM void __LCEnable(void) { // clang-format off +#ifdef __MWERKS__ nofralloc mfmsr r5 @@ -265,6 +286,7 @@ do_load: nop blr +#endif // clang-format on } @@ -276,6 +298,7 @@ void LCEnable(void) { ASM void LCDisable(void) { // clang-format off +#ifdef __MWERKS__ nofralloc lis r3, 0xE000 @@ -291,12 +314,14 @@ do_invalidate: mtspr 0x398, r4 blr +#endif // clang-format on } static ASM void LCStoreBlocks(register void* destAddr, register void* srcAddr, register u32 blockNum){ // clang-format off +#ifdef __MWERKS__ nofralloc rlwinm r6, blockNum, 0x1E, 0x1B, 0x1F @@ -309,8 +334,11 @@ static ASM void LCStoreBlocks(register void* destAddr, register void* srcAddr, mtspr 0x39B, r6 blr +#endif // clang-format on -} /* 8033B838-8033B8E4 336178 00AC+00 0/0 0/0 3/3 .text LCStoreData */ +} + +/* 8033B838-8033B8E4 336178 00AC+00 0/0 0/0 3/3 .text LCStoreData */ u32 LCStoreData(void* destAddr, void* srcAddr, u32 nBytes) { u32 blocks = (nBytes + 31) / 32; u32 ret = (blocks + 127) / 128; @@ -333,6 +361,7 @@ u32 LCStoreData(void* destAddr, void* srcAddr, u32 nBytes) { ASM void LCQueueWait(register u32 len) { // clang-format off +#ifdef __MWERKS__ nofralloc addi len, len, 1 @@ -343,6 +372,7 @@ LCQueueWait_04: bge cr2, LCQueueWait_04 blr +#endif // clang-format on } diff --git a/src/dolphin/os/OSContext.c b/src/dolphin/os/OSContext.c index e9a06de12..9965d875e 100644 --- a/src/dolphin/os/OSContext.c +++ b/src/dolphin/os/OSContext.c @@ -8,6 +8,7 @@ volatile OSContext* __OSFPUContext AT_ADDRESS(OS_BASE_CACHED | 0x00D8); ASM void __OSLoadFPUContext(s32 unused0, register OSContext* context) { // clang-format off +#ifdef __MWERKS__ nofralloc lhz r5, OSContext.state(context) @@ -89,11 +90,13 @@ load_fprs: exit: blr +#endif // clang-format on } ASM void __OSSaveFPUContext(s32 unused0, s32 unused1, register OSContext* context) { // clang-format off +#ifdef __MWERKS__ nofralloc lhz r3, OSContext.state(context) @@ -175,20 +178,24 @@ ASM void __OSSaveFPUContext(s32 unused0, s32 unused1, register OSContext* contex exit: blr +#endif // clang-format on } ASM void OSSaveFPUContext(register OSContext* context) { // clang-format off +#ifdef __MWERKS__ nofralloc addi r5, context, 0 b __OSSaveFPUContext +#endif // clang-format on } ASM void OSSetCurrentContext(register OSContext* context) { // clang-format off +#ifdef __MWERKS__ nofralloc lis r4, OS_CURRENT_CONTEXT@ha @@ -216,6 +223,7 @@ disable_fpu: mtmsr r6 isync blr +#endif // clang-format on } @@ -225,6 +233,7 @@ OSContext* OSGetCurrentContext(void) { ASM u32 OSSaveContext(register OSContext* context) { // clang-format off +#ifdef __MWERKS__ nofralloc stmw r13, OSContext.gpr[13](context) @@ -264,11 +273,13 @@ ASM u32 OSSaveContext(register OSContext* context) { li r3, 0 blr +#endif // clang-format on } ASM void OSLoadContext(register OSContext* context) { // clang-format off +#ifdef __MWERKS__ nofralloc lis r4, __RAS_OSDisableInterrupts_begin@ha @@ -331,15 +342,18 @@ load_special_regs: lwz r4, OSContext.gpr[4](context) lwz context, OSContext.gpr[3](context) rfi +#endif // clang-format on } ASM u8* OSGetStackPointer(void) { // clang-format off +#ifdef __MWERKS__ nofralloc mr r3, r1 blr +#endif // clang-format on } @@ -354,6 +368,7 @@ void OSClearContext(OSContext* context) { ASM void OSInitContext(register OSContext* context, register u32 srr0, register u32 stack) { // clang-format off +#ifdef __MWERKS__ nofralloc stw srr0, OSContext.srr0(context) @@ -404,6 +419,7 @@ ASM void OSInitContext(register OSContext* context, register u32 srr0, register stw r0, OSContext.gqr[7](context) b OSClearContext +#endif // clang-format on } @@ -461,6 +477,7 @@ void OSDumpContext(OSContext* context) { static ASM void OSSwitchFPUContext(register u8 err, register OSContext* context) { // clang-format off +#ifdef __MWERKS__ nofralloc mfmsr r5 @@ -500,6 +517,7 @@ context_is_curr_fpu_context: lwz r3, OSContext.gpr[3](context) lwz context, OSContext.gpr[4](context) rfi +#endif // clang-format on } @@ -511,6 +529,7 @@ void __OSContextInit(void) { ASM void OSFillFPUContext(register OSContext* context) { // clang-format off +#ifdef __MWERKS__ nofralloc mfmsr r5 @@ -593,5 +612,6 @@ ASM void OSFillFPUContext(register OSContext* context) { exit: blr +#endif // clang-format on } diff --git a/src/dolphin/os/OSError.c b/src/dolphin/os/OSError.c index dc72b4563..1ebe52776 100644 --- a/src/dolphin/os/OSError.c +++ b/src/dolphin/os/OSError.c @@ -12,8 +12,8 @@ extern volatile u32 __OSLastInterruptSrr0; extern volatile s16 __OSLastInterrupt; extern volatile OSTime __OSLastInterruptTime; -extern OSErrorHandlerEx __OSErrorTable[EXCEPTION_MAX]; -OSErrorHandlerEx __OSErrorTable[EXCEPTION_MAX]; +extern OSErrorHandler __OSErrorTable[EXCEPTION_MAX]; +OSErrorHandler __OSErrorTable[EXCEPTION_MAX]; #define FPSCR_ENABLE (FPSCR_VE | FPSCR_OE | FPSCR_UE | FPSCR_ZE | FPSCR_XE) u32 __OSFpscrEnableBits = FPSCR_ENABLE; @@ -53,12 +53,12 @@ __declspec(weak) void OSPanic(const char* file, s32 line, const char* msg, ...) } OSErrorHandler OSSetErrorHandler(OSError error, OSErrorHandler handler) { - OSErrorHandlerEx oldHandler; + OSErrorHandler oldHandler; BOOL enabled; enabled = OSDisableInterrupts(); oldHandler = __OSErrorTable[error]; - __OSErrorTable[error] = (OSErrorHandlerEx)handler; + __OSErrorTable[error] = (OSErrorHandler)handler; if (error == EXCEPTION_FLOATING_POINT_EXCEPTION) { u32 msr; diff --git a/src/dolphin/os/OSLink.c b/src/dolphin/os/OSLink.c index 6acb67921..86480fa86 100644 --- a/src/dolphin/os/OSLink.c +++ b/src/dolphin/os/OSLink.c @@ -1,4 +1,5 @@ #include "dolphin/os/OS.h" +#include #define SHN_UNDEF 0 #define SHN_LORESERVE 0xff00 diff --git a/src/dolphin/os/OSMemory.c b/src/dolphin/os/OSMemory.c index f53e44308..efe5b6766 100644 --- a/src/dolphin/os/OSMemory.c +++ b/src/dolphin/os/OSMemory.c @@ -6,7 +6,7 @@ vu16 __MEMRegs[64] AT_ADDRESS(0xCC004000); -extern OSErrorHandlerEx __OSErrorTable[16]; +extern OSErrorHandler __OSErrorTable[EXCEPTION_MAX]; u32 OSGetConsoleSimulatedMemSize() { return *(u32*)(OSPhysicalToCached(0x00F0)); @@ -75,6 +75,7 @@ void OSProtectRange(u32 chan, void* addr, u32 nBytes, u32 control) { static ASM void Config24MB(void) { // clang-format off +#ifdef __MWERKS__ nofralloc li r7, 0 @@ -109,11 +110,13 @@ static ASM void Config24MB(void) { mflr r3 mtspr 0x1a, r3 rfi +#endif // clang-format on } static ASM void Config48MB(void) { // clang-format off +#ifdef __MWERKS__ nofralloc li r7, 0 @@ -148,11 +151,13 @@ static ASM void Config48MB(void) { mflr r3 mtspr 0x1a, r3 rfi +#endif // clang-format on } static ASM void RealMode(register u32 config) { // clang-format off +#ifdef __MWERKS__ nofralloc clrlwi config, config, 2 @@ -161,6 +166,7 @@ static ASM void RealMode(register u32 config) { rlwinm config, config, 0, 0x1c, 0x19 mtspr 0x1b, config rfi +#endif // clang-format on } diff --git a/src/dolphin/os/OSSync.c b/src/dolphin/os/OSSync.c index d8fa1f109..043ef3950 100644 --- a/src/dolphin/os/OSSync.c +++ b/src/dolphin/os/OSSync.c @@ -6,6 +6,7 @@ void __OSSystemCallVectorEnd(); static ASM void SystemCallVector(void) { // clang-format off +#ifdef __MWERKS__ nofralloc entry __OSSystemCallVectorStart @@ -19,6 +20,7 @@ entry __OSSystemCallVectorStart entry __OSSystemCallVectorEnd nop +#endif // clang-format on } diff --git a/src/dolphin/os/OSThread.c b/src/dolphin/os/OSThread.c index 4ac9aa657..ad7faca62 100644 --- a/src/dolphin/os/OSThread.c +++ b/src/dolphin/os/OSThread.c @@ -78,7 +78,7 @@ volatile OSContext* __OSFPUContext AT_ADDRESS(OS_BASE_CACHED + 0x00D8); // External References: // -extern OSErrorHandlerEx __OSErrorTable[17]; +extern OSErrorHandler __OSErrorTable[EXCEPTION_MAX]; extern u32 __OSFpscrEnableBits; void _epilog(); @@ -932,6 +932,3 @@ void OSClearStack(u8 val) { *p = pattern; } } - -extern u8 data_804516D0[8]; -u8 data_804516D0[8] ALIGN_DECL(8); diff --git a/src/f_op/f_op_actor_mng.cpp b/src/f_op/f_op_actor_mng.cpp index 4d5832fbe..1aea40fa4 100644 --- a/src/f_op/f_op_actor_mng.cpp +++ b/src/f_op/f_op_actor_mng.cpp @@ -548,30 +548,30 @@ s32 fopAcM_checkCullingBox(Mtx pMtx, f32 x0, f32 y0, f32 z0, f32 x1, f32 y1, f32 static l_HIO l_hio; static fopAc_cullSizeBox l_cullSizeBox[14] = { - /* fopAc_CULLBOX_0_e */ fopAc_MakeCullSizeBox(cXyz(-40.0f, 0.0f, -40.0f), cXyz(40.0f, 125.0f, 40.0f)), - /* fopAc_CULLBOX_1_e */ fopAc_MakeCullSizeBox(cXyz(-25.0f, 0.0f, -25.0f), cXyz(25.0f, 50.0f, 25.0f)), - /* fopAc_CULLBOX_2_e */ fopAc_MakeCullSizeBox(cXyz(-50.0f, 0.0f, -50.0f), cXyz(50.0f, 100.0f, 50.0f)), - /* fopAc_CULLBOX_3_e */ fopAc_MakeCullSizeBox(cXyz(-75.0f, 0.0f, -75.0f), cXyz(75.0f, 150.0f, 75.0f)), - /* fopAc_CULLBOX_4_e */ fopAc_MakeCullSizeBox(cXyz(-100.0f, 0.0f, -100.0f), cXyz(100.0f, 800.0f, 100.0f)), - /* fopAc_CULLBOX_5_e */ fopAc_MakeCullSizeBox(cXyz(-125.0f, 0.0f, -125.0f), cXyz(125.0f, 250.0f, 125.0f)), - /* fopAc_CULLBOX_6_e */ fopAc_MakeCullSizeBox(cXyz(-150.0f, 0.0f, -150.0f), cXyz(150.0f, 300.0f, 150.0f)), - /* fopAc_CULLBOX_7_e */ fopAc_MakeCullSizeBox(cXyz(-200.0f, 0.0f, -200.0f), cXyz(200.0f, 400.0f, 200.0f)), - /* fopAc_CULLBOX_8_e */ fopAc_MakeCullSizeBox(cXyz(-600.0f, 0.0f, -600.0f), cXyz(600.0f, 900.0f, 600.0f)), - /* fopAc_CULLBOX_9_e */ fopAc_MakeCullSizeBox(cXyz(-250.0f, 0.0f, -50.0f), cXyz(250.0f, 450.0f, 50.0f)), - /* fopAc_CULLBOX_10_e */ fopAc_MakeCullSizeBox(cXyz(-60.0f, 0.0f, -20.0f), cXyz(40.0f, 130.0f, 150.0f)), - /* fopAc_CULLBOX_11_e */ fopAc_MakeCullSizeBox(cXyz(-75.0f, 0.0f, -75.0f), cXyz(75.0f, 210.0f, 75.0f)), - /* fopAc_CULLBOX_12_e */ fopAc_MakeCullSizeBox(cXyz(-70.0f, -100.0f, -80.0f), cXyz(70.0f, 240.0f, 100.0f)), - /* fopAc_CULLBOX_13_e */ fopAc_MakeCullSizeBox(cXyz(-60.0f, -20.0f, -60.0f), cXyz(60.0f, 160.0f, 60.0f)), + /* fopAc_CULLBOX_0_e */ fopAc_cullSizeBox(cXyz(-40.0f, 0.0f, -40.0f), cXyz(40.0f, 125.0f, 40.0f)), + /* fopAc_CULLBOX_1_e */ fopAc_cullSizeBox(cXyz(-25.0f, 0.0f, -25.0f), cXyz(25.0f, 50.0f, 25.0f)), + /* fopAc_CULLBOX_2_e */ fopAc_cullSizeBox(cXyz(-50.0f, 0.0f, -50.0f), cXyz(50.0f, 100.0f, 50.0f)), + /* fopAc_CULLBOX_3_e */ fopAc_cullSizeBox(cXyz(-75.0f, 0.0f, -75.0f), cXyz(75.0f, 150.0f, 75.0f)), + /* fopAc_CULLBOX_4_e */ fopAc_cullSizeBox(cXyz(-100.0f, 0.0f, -100.0f), cXyz(100.0f, 800.0f, 100.0f)), + /* fopAc_CULLBOX_5_e */ fopAc_cullSizeBox(cXyz(-125.0f, 0.0f, -125.0f), cXyz(125.0f, 250.0f, 125.0f)), + /* fopAc_CULLBOX_6_e */ fopAc_cullSizeBox(cXyz(-150.0f, 0.0f, -150.0f), cXyz(150.0f, 300.0f, 150.0f)), + /* fopAc_CULLBOX_7_e */ fopAc_cullSizeBox(cXyz(-200.0f, 0.0f, -200.0f), cXyz(200.0f, 400.0f, 200.0f)), + /* fopAc_CULLBOX_8_e */ fopAc_cullSizeBox(cXyz(-600.0f, 0.0f, -600.0f), cXyz(600.0f, 900.0f, 600.0f)), + /* fopAc_CULLBOX_9_e */ fopAc_cullSizeBox(cXyz(-250.0f, 0.0f, -50.0f), cXyz(250.0f, 450.0f, 50.0f)), + /* fopAc_CULLBOX_10_e */ fopAc_cullSizeBox(cXyz(-60.0f, 0.0f, -20.0f), cXyz(40.0f, 130.0f, 150.0f)), + /* fopAc_CULLBOX_11_e */ fopAc_cullSizeBox(cXyz(-75.0f, 0.0f, -75.0f), cXyz(75.0f, 210.0f, 75.0f)), + /* fopAc_CULLBOX_12_e */ fopAc_cullSizeBox(cXyz(-70.0f, -100.0f, -80.0f), cXyz(70.0f, 240.0f, 100.0f)), + /* fopAc_CULLBOX_13_e */ fopAc_cullSizeBox(cXyz(-60.0f, -20.0f, -60.0f), cXyz(60.0f, 160.0f, 60.0f)), }; static fopAc_cullSizeSphere l_cullSizeSphere[8] = { - /* fopAc_CULLSPHERE_0_e */ fopAc_MakeCullSizeSphere(cXyz(0.0f, 0.0f, 0.0f), 80.0f), - /* fopAc_CULLSPHERE_1_e */ fopAc_MakeCullSizeSphere(cXyz(0.0f, 0.0f, 0.0f), 50.0f), - /* fopAc_CULLSPHERE_2_e */ fopAc_MakeCullSizeSphere(cXyz(0.0f, 0.0f, 0.0f), 100.0f), - /* fopAc_CULLSPHERE_3_e */ fopAc_MakeCullSizeSphere(cXyz(0.0f, 0.0f, 0.0f), 150.0f), - /* fopAc_CULLSPHERE_4_e */ fopAc_MakeCullSizeSphere(cXyz(0.0f, 0.0f, 0.0f), 200.0f), - /* fopAc_CULLSPHERE_5_e */ fopAc_MakeCullSizeSphere(cXyz(0.0f, 0.0f, 0.0f), 250.0f), - /* fopAc_CULLSPHERE_6_e */ fopAc_MakeCullSizeSphere(cXyz(0.0f, 0.0f, 0.0f), 300.0f), - /* fopAc_CULLSPHERE_7_e */ fopAc_MakeCullSizeSphere(cXyz(0.0f, 0.0f, 0.0f), 400.0f), + /* fopAc_CULLSPHERE_0_e */ fopAc_cullSizeSphere(cXyz(0.0f, 0.0f, 0.0f), 80.0f), + /* fopAc_CULLSPHERE_1_e */ fopAc_cullSizeSphere(cXyz(0.0f, 0.0f, 0.0f), 50.0f), + /* fopAc_CULLSPHERE_2_e */ fopAc_cullSizeSphere(cXyz(0.0f, 0.0f, 0.0f), 100.0f), + /* fopAc_CULLSPHERE_3_e */ fopAc_cullSizeSphere(cXyz(0.0f, 0.0f, 0.0f), 150.0f), + /* fopAc_CULLSPHERE_4_e */ fopAc_cullSizeSphere(cXyz(0.0f, 0.0f, 0.0f), 200.0f), + /* fopAc_CULLSPHERE_5_e */ fopAc_cullSizeSphere(cXyz(0.0f, 0.0f, 0.0f), 250.0f), + /* fopAc_CULLSPHERE_6_e */ fopAc_cullSizeSphere(cXyz(0.0f, 0.0f, 0.0f), 300.0f), + /* fopAc_CULLSPHERE_7_e */ fopAc_cullSizeSphere(cXyz(0.0f, 0.0f, 0.0f), 400.0f), }; static void dummy() { @@ -938,14 +938,14 @@ fpc_ProcID fopAcM_createRaceItem(cXyz* pos, int i_itemNo, int i_itemBitNo, csXyz } /* 80026980-80026A68 .text fopAcM_createDemoItem__FP4cXyziiP5csXyziP4cXyzUc */ -fpc_ProcID fopAcM_createDemoItem(cXyz* pos, int i_itemNo, int i_itemBitNo, csXyz* angle, int roomNo, cXyz* scale, u8 argFlag) { +fpc_ProcID fopAcM_createDemoItem(cXyz* pos, int i_itemNo, int i_itemBitNo, csXyz* i_angle, int i_roomNo, cXyz* i_scale, u8 i_argFlag) { JUT_ASSERT(2813, 0 <= i_itemNo && i_itemNo < 256 && (-1 <= i_itemBitNo && i_itemBitNo <= 79) || i_itemBitNo == 127); if (i_itemNo == dItem_NONE_e) { return fpcM_ERROR_PROCESS_ID_e; } - u32 params = (i_itemNo & 0xFF) | (i_itemBitNo & 0x7F) << 0x08 | (argFlag & 0xFF) << 0x10; - return fopAcM_create(PROC_Demo_Item, params, pos, roomNo, angle, scale); + u32 params = (i_itemNo & 0xFF) | (i_itemBitNo & 0x7F) << 0x08 | (i_argFlag & 0xFF) << 0x10; + return fopAcM_create(PROC_Demo_Item, params, pos, i_roomNo, i_angle, i_scale); } /* 80026A68-80026ADC .text fopAcM_createItemForBoss__FP4cXyziiP5csXyzP4cXyzi */ @@ -1273,8 +1273,8 @@ fopAc_ac_c* fopAcM_myRoomSearchEnemy(s8 roomNo) { } /* 80027A9C-80027B24 .text fopAcM_createDisappear__FP10fopAc_ac_cP4cXyzUcUcUc */ -fpc_ProcID fopAcM_createDisappear(fopAc_ac_c* i_actor, cXyz* p_pos, u8 i_scale, u8 i_health, u8 i_itemBitNo) { - u32 params = (i_itemBitNo & 0xFF) << 0x10 | (i_scale & 0xFF) << 0x08 | (i_health & 0xFF); +fpc_ProcID fopAcM_createDisappear(fopAc_ac_c* i_actor, cXyz* p_pos, u8 i_scale, u8 i_dropType, u8 i_itemBitNo) { + u32 params = (i_itemBitNo & 0xFF) << 0x10 | (i_scale & 0xFF) << 0x08 | (i_dropType & 0xFF); fopAc_ac_c* disappear = (fopAc_ac_c*)fopAcM_fastCreate(PROC_DISAPPEAR, params, p_pos, fopAcM_GetRoomNo(i_actor), fopAcM_GetAngle_p(i_actor)); if (disappear) { disappear->itemTableIdx = i_actor->itemTableIdx; diff --git a/src/m_Do/m_Do_machine.cpp b/src/m_Do/m_Do_machine.cpp index 9d6b290df..e43ebd119 100644 --- a/src/m_Do/m_Do_machine.cpp +++ b/src/m_Do/m_Do_machine.cpp @@ -258,7 +258,7 @@ void myExceptionCallback(OSError, OSContext*, u32, u32) { } /* 8000C3C0-8000C70C .text fault_callback_scroll__FUsP9OSContextUlUl */ -void fault_callback_scroll(u16, OSContext* p_context, u32, u32) { +void fault_callback_scroll(OSError, OSContext* p_context, u32, u32) { JUTException* manager = JUTException::getManager(); JUTConsole* exConsole = manager->getConsole();