* d_wood (bushes) 73% matching
* d_wood::Unit_c::set_ground 100% match
Jasper pointed me to the fact that the complicated inv_sqrt function I wrote was indeed just std::sqrtf(), which unlocked the rest of the match
* Replace some bitshifts with multiplies based on PR feedback
* Remove all instances of "this->" from d_wood
* Add missing struct offset comment for mTevStr
* Cleaned up d_tree externs
* Use MTXIdentity instead of PSMTXIdentity
* Remove incorrect TODO rearding cCcD_ObjAtType enum
* Use the mDoAud_seStart inline function
* Remove unnecessary parenthesis
* Fix incorrect branching logic in d_wood::cc_hit_before_cut()
* d_wood data sections fixup
* Re-add "Nonmatching" comments to all nonmatching functions
* Formatting: reformat from 2 to 4 space indentation
This was a local system problem which slipped by me in a previous commit
* 100% match for d_wood::Anm_c::mode_norm()
Thanks Chippy! https://discord.com/channels/727908905392275526/873250400483024976/1298360716964790294
* Use cLib_*Bit() functions for flag checking and setting
Based on the inline functions from the .map
* d_wood: Use AnmID_e according to the .map file
* d_wood: add a couple AnmID_e related inlines from the .map
* d_wood: Name remaining unknowns related to animation
* d_wood: Match cc_hit_before_cut()
* d_wood: Match calc_cc() by using the dComIfGp_roomControl_getStayNo() inline
* d_wood: Match string table and search_anm() by using a constant in assert string
* d_wood: Match mode_to_norm()
Switching normAnim to a const* did most of the work
* d_wood: 100% match for L_attr and the .rodata section
* d_wood: Fill in .data section. Still some extra data from vtables
* d_wood: Match .sbss section
* d_wood: Match .sdata section
* d_wood: 98% match for Packet_c::draw()
The only error is that g_dTree_shadowTexCoord is still using a 32-bit load instead of 16. the only way I know of to fix that is to define the data in this compilation unit. But that can't be right
* d_wood: Various small formatting changes
- No one line function implementations
- Replaced instances of (SomeType*)0x0 (copy/pasted from Ghidra) with NULL
- Replaced a few instances of 0.0 with 0.0f
- Replaced one instance where a number was used instead of an enum value
* d_wood: More formatting fixes
- Removed unused variables from functions
- Removed unnecessary iVar1 loop variables (leftover Ghidra detritus)
- Fixed dtk function comments being wrapped by autoformatter. They now always appear on one line
* d_tree: 100% match of data which is used by d_wood
This moves g_dTree_shadowTexCoord into .sdata which allows d_wood::Packet_c::draw() to load its address with a single instruction. This makes a 100% match for draw()
* d_wood: Removed unnecessary comment now that draw() matches
g_dTree_shadowTexCoord now lives in the d_tree .sdata section, so its instruction can be loaded with a single instruction. This makes a 100% match with draw().
* d_wood: 100% match for mode_cut()
* d_wood: Match mode_push_into()
Also renamed mWindDir to mForceDir as it represents both wind and an actor pushing from a vector
* d_wood: Match mode_push_back
* d_wood: Match __sinit_d_wood_cpp
The l_matDL display list is dynamically patched to reference the l_Txa_swood_bTEX texture at static initialization time. Is there a better way to represent this?
* d_wood: Fix incorrect constant in set_ground()
* d_wood: Simplify dummy data at the top of .data section
* d_wood: Mark as matching in configure.py
Had to move Packet_c destructor to get the functions in the right order. See discussion: https://discord.com/channels/727908905392275526/873250400483024976/1300680009458913280
* d_wood: Add `d/d_cc_d.h` include as some enums have moved
* d_wood: Clean up some types at the top
* Mark d_wood as non-matching for the Japanese version