Commit Graph

272 Commits

Author SHA1 Message Date
Mattias Blum 59d39267ec Merge branch 'zeldaret:main' into d_menu 2025-05-17 22:57:55 -04:00
LagoLunatic 18fb9de306 d_cam_type OK for JPN, add style enum, fix pystts1 enum 2025-05-06 22:58:20 -04:00
Mattias Blum bfeb8af18b Merge branch 'zeldaret:main' into d_menu 2025-05-06 22:33:53 -04:00
Mattias Blum c71bb1dafb d_camera 45% (#747)
* initial progress

* more progress

* more progress

* more progress

* more progress

* more progress

* more progress

* more progress

* more progress

* more progress

* more progress

* more progress

* fix outdated member names

* more progress

* more progress

* more progress

* more progress

* more progress

* more progress

* fixed deprecated member references

* more progress

* more progress

* more progress

* fix deprecated member references

* more progress

* more progress

* more progress

* more progress

* more progress

* check in for review

* remove comment

* initial PR changes

* more PR changes

* more PR changes

* added anonymous struct as class member

* reverted changes to `stage_camera2_data_class`

* added `dCamera_event_data`, `dCamera_monitoring_things` and `dCamera_DMC_system` from debug maps

* more progress

* more progress

* realmatch for `camera_draw`

* PR changes

* fix broken merge

* formatting

* Reverted change to `camSphChkdata` that caused  `sph_chk_callback` match to regress

* Reverted change to `BG` struct that caused ctor and dtor match to regress

* more progress

* more progress

* more progress

* more progress

* more progress

* more progress

* more progress

* more progress

* more progress

* more progress

* more progress

* PR changes

* corrected size comment

* fixed broken member references
2025-05-06 21:02:35 -04:00
mattias-blum ea930e97d8 initial progress 2025-05-06 01:35:53 -04:00
Jcw87 5e7b59f2fe Improve compiler compatibility (#743)
* fix returns

* use standard C headers

* struct/class mismatch

* explicit this in template

* switch variable scope

* C standard compliance

* & l-value
2025-04-29 12:49:09 -04:00
LagoLunatic c4eb26b2a1 d_attention cleanup, add mDoCPd inlines 2025-04-27 16:38:29 -04:00
Mm2PL 4d1cb33cd8 d_attention 100% (#701)
* Add helper functions for d_attention

* Copy and adapt code from TP

* Move for better matching layout

* Clean up includes for d_attention.cpp

* Give dAttention_c::nextAttention a return

* Use enums in dAttention_c::getActionBtnB and slight reformat

* Change return types for comparison code to match
I don't love this

* Implement dAttList_c::calcWeight

* Implement dAttention_c::sortList

* Implement dAttDraw_c::draw

* Implement dAttDraw_c::setAnm

* Implement dAttention_c::chaseAttention

* Implement judgement related functions

* Implement dAttention_c::Run and runDrawProc

* Implement dAttention_c::Draw

Actually finish Draw

* Looks like dAttention_c::stockAttention had an unused return value

* Give d_Attention_c::mLockOnState an enum

* Rename field_0x02c to mDrawAttnPos based on TP

* Add comments for fields of d_attention

* Give d_attention's flags an enum (although without names)

* Undo type change for dAttention_c::{chk,set,clr}Flag

Co-Authored-By: LagoLunatic <LagoLunatic@users.noreply.github.com>

* Do not spell the `this` pointer

Co-Authored-By: LagoLunatic <LagoLunatic@users.noreply.github.com>

* Deal with resource enums and inlines

* Move PLAYER_STATUS_FLAG_MAGIC_JUDGEMENT to daPy__PlayerStatus0 enum

* Use inlines and macros

* Add mDoCPd_L_LOCK_BUTTON inline, debug maps claim it exists

Nothing else uses it

* Update TODO comments

* Debug maps claim runXyCheckCB was used but it only makes sense if modified

* Use dComIfGp_getPlayer instead of directly indexing the array

* Locate a few more inlines

* Do not cast to AttentionFlags enum type

* Update configure script

---------

Co-authored-by: LagoLunatic <LagoLunatic@users.noreply.github.com>
2025-04-27 15:12:46 -04:00
LagoLunatic b0874059dd d_s_menu OK on JPN and PAL 2025-04-25 19:32:23 -04:00
LagoLunatic ce8d17ec08 Add an enum for action button icon status 2025-04-20 20:06:40 -04:00
LagoLunatic 2f4c6f89b3 Bunch of inline fixes 2025-04-16 13:23:21 -04:00
123456789758 70d9f5df10 d_a_player_main - 48% Matching. (#739)
Co-authored-by: ‎ ‎ ‎ <‎ ‎ ‎>
2025-04-14 17:17:47 -04:00
LagoLunatic 26015238ef d_stage cleanup 2025-04-13 23:21:01 -04:00
LagoLunatic 780d4e680a d_drawlist OK, J2DPicture inline cleanup 2025-04-12 23:18:11 -04:00
SuperDude88 1f1900bf66 f_op_msg_mng Work (#685)
* f_op_msg_mng work

* Fix Some Conflicts

Haven't had much chance to work on actual progress, still looking to do more matching before merge

* Tiny bit of Work

Little bit of cleanup, start on a couple more functions

* More Matches

Also add back some missing nonmatch comments

* Fixes

* JPN ifdefs

* Inline Fix

Also force one match (there's no way that casting is real)

* Reorder Strings

Fix rodata, I think this order is also slightly more accurate to the function (but I'm not really trying to match it right now anyways)
2025-04-12 21:02:24 -04:00
Mattias Blum 5f287fcaee d_camera 28% (#732)
* initial progress

* more progress

* more progress

* more progress

* more progress

* more progress

* more progress

* more progress

* more progress

* more progress

* more progress

* more progress

* fix outdated member names

* more progress

* more progress

* more progress

* more progress

* more progress

* more progress

* fixed deprecated member references

* more progress

* more progress

* more progress

* fix deprecated member references

* more progress

* more progress

* more progress

* more progress

* more progress

* check in for review

* remove comment

* initial PR changes

* more PR changes

* more PR changes

* added anonymous struct as class member

* reverted changes to `stage_camera2_data_class`

* added `dCamera_event_data`, `dCamera_monitoring_things` and `dCamera_DMC_system` from debug maps

* more progress

* more progress

* realmatch for `camera_draw`

* PR changes

* fix broken merge

* formatting

* Reverted change to `camSphChkdata` that caused  `sph_chk_callback` match to regress

* Reverted change to `BG` struct that caused ctor and dtor match to regress
2025-04-11 16:37:42 -04:00
LagoLunatic 309158e274 J3DModel inlines cleanup, procBottleSwing_init match, etc 2025-04-10 19:30:51 -04:00
123456789758 072cb3a441 d_a_player_misc - Several matches/close matches across several files. (#736)
Co-authored-by: ‎ ‎ ‎ <‎ ‎ ‎>
2025-04-08 17:41:27 -04:00
LagoLunatic f2ff19c83e player_fan 99% 2025-04-01 20:46:23 -04:00
123456789758 ecd9b48113 d_a_player_sword.inc - Several matching with minor issues. (#731)
Co-authored-by: ‎ ‎ ‎ <‎ ‎ ‎>
Co-authored-by: LagoLunatic <LagoLunatic@users.noreply.github.com>
2025-04-01 14:39:22 -04:00
123456789758 53dfbaa55a d_a_player_bottle.inc - Several matching with minor issues. (#729)
Co-authored-by: ‎ ‎ ‎ <‎ ‎ ‎>
Co-authored-by: LagoLunatic <LagoLunatic@users.noreply.github.com>
2025-04-01 14:38:18 -04:00
123456789758 3bb407642a d_a_player_ship.inc - Several close to matching except minor issues. (#721)
Co-authored-by: ‎ ‎ ‎ <‎ ‎ ‎>
2025-04-01 14:31:12 -04:00
123456789758 81379e4b3f d_a_player_vomit.inc - Almost all matching with minor issues. (#726)
Co-authored-by: ‎ ‎ ‎ <‎ ‎ ‎>
2025-04-01 14:30:25 -04:00
123456789758 d4bbb4fb43 d_a_player_battle.inc - All close to matching with minor issues. (#720)
Co-authored-by: ‎ ‎ ‎ <‎ ‎ ‎>
2025-03-31 18:44:43 -04:00
123456789758 26f1b0c8f0 d_a_player_whide.inc - Almost all matching except floats, (#717)
Co-authored-by: ‎ ‎ ‎ <‎ ‎ ‎>
2025-03-31 17:56:25 -04:00
123456789758 6bc267c369 d_a_player_hook.inc - All matching except floats. (#724)
Co-authored-by: ‎ ‎ ‎ <‎ ‎ ‎>
2025-03-31 17:48:52 -04:00
123456789758 3f2fc267c5 d_a_player_hang.inc - All matching except floats. (#715)
Co-authored-by: ‎ ‎ ‎ <‎ ‎ ‎>
2025-03-31 17:41:48 -04:00
LagoLunatic 41621f4e72 Fix weird gameInfo loads caused by casts within inlines 2025-03-31 14:07:20 -04:00
123456789758 f4587892ff d_a_player_dproc.inc - All except two fully matching. (#713)
* d_a_player_dproc.inc - All except two fully matching.

* Addressed review comments.

* Missed two mCurProc checks.

* Second review.

---------

Co-authored-by: ‎ ‎ ‎ <‎ ‎ ‎>
2025-03-30 14:08:11 -04:00
LagoLunatic a0536371e6 player_swim 100%, bunch of inline cleanup 2025-03-29 20:09:32 -04:00
Mattias Blum 2376acb224 d_a_player_swim near complete (#711)
* initial progress

* more progress

* added `dComIfGp_clearItemTimeCount` inline

* more progress

* more progress

* more progress

* more progress

* more progress

* more progress, all code matching except for `setSwimMoveAnime`

* resolving symbols, forgot to mention `changeSwimOutProc` is not matching as well

* PR changes made, only `setSwimMoveAnime` nonmatching

* fixed reference to old member name for `mItemTimeMax`
2025-03-29 18:55:06 -04:00
LagoLunatic b9c1eed694 d_demo work 2025-03-28 22:35:13 -04:00
LagoLunatic bf2a5b9808 shand OK, ship 99.8%, add some missing inlines 2025-03-28 18:15:14 -04:00
mattias-blum d945c14cac d_a_ship 95% (#706)
* Initial Progress

Basic functions at 100% matching

100% Matching:
- `daShip_Draw`
- `daShip_Execute`
- `daShip_IsDelete`
- `daShip_Delete`
- `daShip_createHeap`
- `daShip_Create`

* implemented `getJointPos` inlines in `daTornado_c` needed for d_a_ship

* implemented `Center()` inline in `dCamera_c` needed for d_a_ship

* added `setTranslationX` inline to `J3DTexMtx` needed for match in d_a_ship

* parameters set to `const` for certain inlines in `m_Do_mtx.h`

* added `dComIfGp_onMenuCollect` inline

* changed `shipSpecialDemoStart` return type to `BOOL`

* added member functions to `dPa_waveEcallBack`, `dPa_splashEcallBack `, `dPa_trackEcallBack`

also modified member type of `mRotMtx` of `dPa_waveEcallBack`  and `mPos` of `dPa_trackEcallBack`

* added member to `daGrid_c` that is used in d_a_ship

* added `mDoAud_setShipSailState` and `mDoAud_shipCruiseSePlay` inline functions

* added `fopAcM_seenPlayerAngleY` inline

* d_a_ship mostly matching

approx. 90% matching, mostly regalloc issues. , `checkNextMode`, `setRopePos`, `setHeadAnm`, and `execute` need to have their logic fixer

* replace `unknown_inline_TODO ` from `daShip_c` with `checkForceMove`

* .data match

* .rodata matching

* more inline return type changes from `bool` to `BOOL`

Also changed the array size of `mPlayerStatus`

* implemented `force_calc_wind_rel_angle` inline in `daGrid_c`

* fix `d_a_ship_static`

* fixed `getEmitterAxis`, might need review but works for now

* more progress

* reverted change to `getEmitterAxis`, moved casts to function call in `dPa_waveEcallBack::executeAfter`

* more progress

* change return types of certain inlines from `BOOL` to `u32`

`dComIfGp_checkCameraAttentionStatus`, `dComIfGp_checkPlayerStatus0`, `dComIfGp_checkPlayerStatus1` needed for match in d_a_ship

* fixed memory addresses in `daGrid_c`

* more progress

* resolving symbols

* Initial PR changes

* Removed unnecessary cast

* replaced instances of `PSVECSquareMag` with corresponding inline functions

* update memory layout in `d_a_grid` for consistency

* More PR changes

`checkNextMode` and `procZevDemo` now at 100% matching
2025-03-28 14:17:21 -04:00
LagoLunatic 4c3bd2c651 Missed some spots where cPhs_State should be used 2025-03-18 15:10:32 -04:00
LagoLunatic 822b13e57a Add cPhs_State typedef and use it everywhere 2025-03-17 22:26:56 -04:00
mattias-blum ae528dc3d9 d_a_fganon 100% (#695)
* added `cBgS_Chk::OffSameActorChk`inline function

* initial progress of d_a_fganon

100% Matching:
- `anim_init`
- `tama_draw`
- `daFganon_Draw`
- `daFganon_IsDelete`

Partial Matching:
- `daFganon_Hio_C::daFganon_HIO_c` (88%)
- `deru_brk` (98%, code is matching, variable memory locations needed for 100% match)
- `kieru_brk` (98%, code is matching, variable memory locations needed for 100% match)
- `deru_brk2` (98%, code is matching, variable memory locations needed for 100% match)
- `kieru_brk2` (98%, code is matching, variable memory locations needed for 100% match)
- `pos_move` (73%)
- `move` (80%)
- `mahou_se_set` (82%)
- `daFganon_Delete` (94%, code is matching, variable memory locations needed for 100% match)
- `useHeapInit` (92%)
- `daFganon_Create` (77%)
- `fgannon_class::fganon_class()` (88%)

Remainder haven't been started

* Additional progress, more functions at 100% matching

100% Matching:
- `daFganon_Hio_C::daFganon_HIO_c`
- `anim_init`
- `tama_draw`
- `daFganon_Draw`
- `deru_brk`
- `kieru_brk`
- `deru_brk2`
- `kieru_brk2`
- `pos_move`
- `fly_se_set`
- `mahou_set`
- `mahou_se_set`
- `daFganon_IsDelete`
- `daFganon_Delete`
- `useHeapInit`

Partial Matching:
- `fly` (60%)
- `shot` (46%)
- `move` (92%)
- `daFganon_Execute` (11%)
- `daFganon_Create` (60%)
- `fgannon_class::fganon_class()` (93%)

* More functions at 100% matching

- Added a `cXyz` member to `mant_class` that is referenced in this TU.
- Changed 'fganon_class` to inherit from `fopEn_enemy_c` instead of `fopAc_ac_c`

100% Matching:
- `daFganon_Hio_C::daFganon_HIO_c`
- `anim_init`
- `tama_draw`
- `daFganon_Draw`
- `deru_brk`
- `kieru_brk`
- `deru_brk2`
- `kieru_brk2`
- `pos_move`
- `fly_se_set`
- `fly`
- `shot`
- `spinattack`
- `fly2`
- `tama_set`
- `mahou_set`
- `mahou_set`
- `mahou_se_set`
- `daFganon_IsDelete`
- `daFganon_Delete`
- `useHeapInit`
- `fgannon_class::fganon_class()`

Partial Matching:
- `move` (96%, code is matching, variable memory locations needed for 100% match)
- `daFganon_Execute` (96%, code is matching, variable memory locations needed for 100% match)
- `daFganon_Create` (96%, code is matching, variable memory locations needed for 100% match)

* additional functions at 100% matching

Cleaned up the values of the static globals, will resolve their symbols later

100% Matching:
- `daFganon_Hio_C::daFganon_HIO_c`
- `anim_init`
- `tama_draw`
- `daFganon_Draw`
- `deru_brk`
- `kieru_brk`
- `deru_brk2`
- `kieru_brk2`
- `pos_move`
- `fly_se_set`
- `fly`
- `shot`
- `spinattack`
- `fly2`
- `tama_set`
- `mahou_set`
- `shot2`
- `spinattack2`
- `down`
- `kabe_check`
- `deru`
- `kieru`
- `fail`
- `standby`
- `start`
- `last_end`
- `damage_check`
- `ball_tg_check`
- `mahou_se_set`
- `daFganon_IsDelete`
- `daFganon_Delete`
- `useHeapInit`
- `fgannon_class::fganon_class()`

Partial Matching:
- `end` (97%, code is matching, variable memory locations needed for 100% match)
- `move` (97%, code is matching, variable memory locations needed for 100% match)
- `demo_camera` (63%)
- `daFganon_Execute` (97%, code is matching, variable memory locations needed for 100% match)
- `daFganon_Create` (98%, code is matching, variable memory locations needed for 100% match)

* added `mDoAud_changeSubBgmStatus` inline

* changed return type of `dComIfGp_getPlayerCameraID` inline

needed this change to get a match for this `d_a_fganon`

* d_a_fganon 100% matching

Currently the checksum fails but I have some theories as to why that might be. I'll continue to cleanup the symbols.

* symbol cleanup

* fixed `mDoAud_changeSubBgmStatus` calling wrong function

* 100% matching now, checksum passes

There is a weak function ordering issue so I included the param in `configure.py`

* PR changes made

* Additional PR changes, better naming of class members
2025-03-16 19:04:00 -04:00
LagoLunatic a9e1527253 Work on d_a_bk, c_damagereaction 2025-03-12 22:30:10 -04:00
LagoLunatic 49c69eeb0f C_BG_MIN_HEIGHT, C_BG_MAX_HEIGHT 2025-03-06 20:41:37 -05:00
LagoLunatic 6c75c400f2 Reorder dComIfG inlines 2025-03-01 00:54:57 -05:00
LagoLunatic 6e83a87f42 Implement dCom attention inlines 2025-03-01 00:54:52 -05:00
LagoLunatic 901bc51f40 d_a_npc_md work 2025-01-27 19:26:14 -05:00
LagoLunatic e8adc6c9e5 Rename more item enums 2025-01-17 20:58:43 -05:00
LagoLunatic 37dbfd75de Add item button enum and talk button enum 2025-01-06 00:23:55 -05:00
Jasper St. Pierre 72bbd3ea1f f_op_msg_mng work 2024-12-28 15:33:02 -08:00
Jasper St. Pierre c7e3e7ffea small fixes 2024-12-27 01:32:02 -08:00
Jasper St. Pierre 929027bfc1 document inventory slots 2024-12-27 01:23:55 -08:00
Mike Lester 64cc277d05 d_wood (bushes) matching (#682)
* 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
2024-10-31 16:58:37 -04:00
LagoLunatic fab0d7a5ba misc cleanup, mostly inlines 2024-10-29 00:22:32 -04:00
SuperDude88 716492b7b9 First Person Item Procs (#680)
* First Person Item Procs

Match a couple of Link's proc functions

* Cleanup
2024-10-19 13:03:32 -04:00