diff options
| author | Briggs Baltzell <briggsbaltzellb3@gmail.com> | 2026-03-11 22:54:58 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-03-11 23:54:58 -0400 |
| commit | ea7c107eb784bc05c446956ec72b5aaee7b2e21c (patch) | |
| tree | e1e83db07660021efef368b286bfded7399ea7d5 /src/d/d_menu_window.cpp | |
| parent | 27793379ea5ff784afb79579bd58231187543027 (diff) | |
d_menu_cloth matching (#937)
* Add `l_matDL` symbols and assets to config files for all regions for d_menu_cloth
* Extend `daCLOTH_HIO_c` with `JORReflexible` and add static instance `l_HIO` in `d_menu_cloth`
* Refactor `d_menu_cloth.h` to improve naming consistency for member variables.
* Initialize `dMCloth_c` member variables and create HIO child in constructor
* Include `l_matDL` in `d_menu_cloth` and call it in `dMCloth_c::draw`.
* Add private member variables to `daCLOTH_HIO_c` in `d_menu_cloth.h`
* Add virtual destructor to `daCLOTH_HIO_c` in `d_menu_cloth.h`
* Swap `daCLOTH_HIO_c` and `daCLOTH_ChildHIO_c` class definitions and adjust member variables in `d_menu_cloth.h`.
* Remove non-matching comments from `daCLOTH_ChildHIO_c` constructor and destructor in `d_menu_cloth.cpp`.
* Initialize `daCLOTH_HIO_c` member variables and update `daCLOTH_ChildHIO_c` access modifiers in `d_menu_cloth`.
* Remove unused member variables from `daCLOTH_HIO_c` and `daCLOTH_ChildHIO_c` in `d_menu_cloth.h`.
* Match dMCloth_c::dMCloth_c
* Match `dMCloth_c::init`.
* Match `dMCloth_c` destructor.
* Refactor `dMCloth_c` to use `mCurArr` for indexing and update structure definitions in `d_menu_cloth`.
* Define `ARR_SIZE` constant and replace hardcoded array sizes in `d_menu_cloth`.
* Match dMCloth_c::TevSetting
* Match dMCloth_c::TevSettingMenu
* Match `dMCloth_c::TevSettingMenu` and `dMCloth_c::TevSettingFileSelect`.
* Match `dMCloth_c::lightSet1`
* Start matching `dMCloth_c::cloth_init` and update structure definitions to use `INNER_SIZE` constant, optimize initialization logic, and replace redundant assignments with consolidated methods.
* Match `dMCloth_c::setNrmVtx` implementation and update header declaration.
* Match `daCLOTH_HIO_c` destructor implementation.
* Match `dMenu_ClothCreate`, `dMenu_ClothDelete`, `dMenu_ClothExecute`, `dMenu_ClothDraw`, and `dMenu_ClothIsDelete` implementations and update related structure definitions.
* Update `g_fopAc_Method` reference to `g_fopMsg_Method` in cloth menu structure.
* Match `dMCloth_c::cloth_move` implementation and update type definitions for `field_0xa` and `field_0x34` to `s16`.
* Start matching `dMCloth_c::cloth_move_sin` and `dMCloth_c::cloth_move_simple` implementations.
* Match `dMCloth_c::ShadowTevSetting` implementation.
* Match `dMCloth_c::ShadowTevSettingMenu` and `dMCloth_c::ShadowTevSettingFileSelect` implementations.
* Match `dMCloth_c::alpha_out` implementation.
* Match `dMCloth_c::plot` implementation and minor formatting fix in `dMCloth_c::ShadowTevSettingMenu`.
* Refactor `d_menu_cloth` to replace s16 color fields with `GXColorS10` and `GXColor` structures. Update all related logic and structure definitions accordingly.
* Match `dMCloth_c::draw` implementation, refactor initialization of `field_0x10`, and update associated structure definitions.
* Match `dMCloth_c::plot_shadow` implementation and update parameter names in `plot` and `plot_shadow` declarations.
* Update `d_menu_cloth` to use `msg_method_class` and `msg_process_profile_definition`. Refactor structure definitions and add TODO comment for size clarification.
* Add member comments in `dMenu_ClothMethodTable`
* Refactor `d_menu_cloth` to improve pointer arithmetic in `plot` loop and add missing implementations for `getOffsetVec` and `getShadowPos`.
* Refactor `dMCloth_c::plot` to improve naming consistency for loop variables and pointer arithmetic.
* Refactor `d_menu_cloth` to replace repeated member accesses with `HIO_CHILD` macro for improved readability and maintainability.
* Rename fields in `d_menu_cloth`
* Add clarifying comments in `dMenu_ClothMethodTable` about function order and usage
* Use `TRUE` and `FALSE` macros instead of literal values in `d_menu_cloth` methods for consistency.
* Replace numeric cloth type values with `MenuClothType` enum for improved readability and maintainability in `d_menu_cloth`.
* Refactor `dMCloth_c::cloth_init`: replace raw pointer arithmetic with `set` calls for improved clarity and maintainability.
* Refactor `MENU_CLOTH_TYPE_2` logic: replace hardcoded rotation calculation with `cM_deg2s` for clarity and maintainability.
* Change `wavePreSteps` type from `u16` to `s16` in `d_menu_cloth` for alignment with signed calculations.
* Replace hardcoded angle conversion with `cM_deg2s` in `MENU_CLOTH_TYPE_0` logic for improved clarity and maintainability.
* Change `mWaveProgress` type from `u16` to `s16` in `d_menu_cloth` for consistency with signed calculations.
* Match `cloth_init` in `d_menu_cloth`
* Fix `INNER_SIZE` iteration in `d_menu_cloth` to properly handle loop bounds.
* Update vertex attribute formats in `d_menu_cloth` for improved correctness.
* Add inline utility function `GXColor4x8` to `GX.h` for streamlined color input handling
* Refactor triangle strip generation in `d_menu_cloth` for improved readability and maintainability.
* Refactor vertex and texture coordinate handling in `dMCloth_c::plot_shadow` for improved clarity and correctness.
* Refactor vertex handling in `d_menu_cloth` to group vertex and texture operations for improved readability and structure.
* Add `GXNormal1x16` and `GXColor3x8` inline utility functions to `GX.h` for simplified normal and color input handling.
* Update vertex format in `d_menu_cloth` to use `GXPosition1x16` and `GXNormal1x16` for improved attribute handling.
* Add `dMs_clothOnly_create` and `dMs_clothOnly_delete` implementations in `d_menu_window`
* Implement `dMs_cloth_create` and `dMs_cloth_delete` functions in `d_menu_window` and update related structure definitions.
* Replace hardcoded cloth type with `MENU_CLOTH_TYPE_2` constant in `d_menu_window`.
* Refactor `MENU_CLOTH_TYPE` enum names for clarity and update all references across `d_menu_cloth`, `d_s_name`, and `d_menu_window`.
* Refactor `mChildren` array indexing in `daCLOTH_HIO_c` constructor to use `MENU_CLOTH_TYPE` constants for improved readability and maintainability.
* Refactor `color1` and `color2` fields to `clothColor` and `shadowColor` for improved clarity in `d_menu_cloth` structure and related logic.
* Simplify alpha blending logic by removing redundant variables in `d_menu_cloth`.
* Refactor `mColor1`/`mColor2` to `mClothColor`/`mShadowColor` for improved clarity in `d_menu_cloth` and update all related logic.
* Add temporary `dummy0` function in `d_menu_window` for placeholder debug strings.
* Refactor position array access in `d_menu_cloth` to use `getPos()` result for better clarity and maintainability.
* Change `waveFreqX` and `waveFreqY` types from `u16` to `s16` in `d_menu_cloth` structure for consistency.
* Add demo version-specific mipmap handling logic in `d_menu_cloth` initialization.
* Remove demo version-specific mipmap handling logic in `d_menu_cloth` initialization.
* Match `cloth_move_sin` and `cloth_move_simple`.
* Refactor loop variable initialization in `d_menu_cloth` for improved clarity.
* Refactor variable names in alpha calculation for improved clarity in `d_menu_cloth`.
* Inline vertex index calculations in `d_menu_cloth` to simplify code and reduce redundant variables.
* Match `plot` and `plot_shadow`.
* Refactor `lightDistance` variable in `d_menu_cloth` for improved clarity.
* Inline empty destructor for `daCLOTH_HIO_c` in `d_menu_cloth` to simplify code.
* Match `plot` and `plot_shadow` in demo build.
* Update vertex attribute formats and streamline vertex function calls in `d_cloth_packet`.
* Match `cloth_init` for JP version
* Match `init` for JP version
* Match `draw` for JP version
* Add TODO note to identify superclass for correct size in `menu_cloth_class`.
* Match `d_menu_cloth` for specific regions: GZLJ01, GZLE01, GZLP01.
* Adjust `plot_shadow` parameters in `d_menu_cloth` for consistent shadow scaling.
* Add dummy functions to ensure correct float order in `d_menu_cloth`.
* Use version-specific scale values for `MENU_CLOTH_TYPE_DEFAULT` in `d_menu_cloth`.
* Normalize hex color and value formatting in `d_menu_cloth`.
* Add `STATIC_ASSERT` checks for struct size validation in `d_menu_cloth`.
* Rename ambiguous `field` members to `padding` in `d_menu_cloth` and update struct size.
* Replace `menu_cloth_class` size calculation with `sizeof(dMCloth_c)` in `d_menu_cloth`.
* Revert "Replace `menu_cloth_class` size calculation with `sizeof(dMCloth_c)` in `d_menu_cloth`."
This reverts commit 3920b07e1ab3a757b87d490bc0861d346ac8c742.
* Revert "Rename ambiguous `field` members to `padding` in `d_menu_cloth` and update struct size."
This reverts commit 153ee490bfab1a5a18d6237a9aaf3318a1ebf4c3.
* Rename placeholder fields to `padding_*` in `d_menu_cloth` for clarity.
* Update `menu_cloth_class` size handling with `STATIC_ASSERT` and padding.
* Clarify comment for `dMenu_ClothMethodTable` initialization.
* Replace hardcoded offsets with calculated `INNER_SIZE`-based sizes in `d_menu_cloth`.
* Remove stray comments in `setClothType` definition and invocation.
* Annotate `mStatus` with offset comment in `dDlst_MENU_CAPTURE_c`.
* Replace `g_dComIfG_gameInfo.play` calls with `dComIfGp_` equivalents in `d_menu_window`.
Diffstat (limited to 'src/d/d_menu_window.cpp')
| -rw-r--r-- | src/d/d_menu_window.cpp | 115 |
1 files changed, 109 insertions, 6 deletions
diff --git a/src/d/d_menu_window.cpp b/src/d/d_menu_window.cpp index 8a6d88db..6fcee77e 100644 --- a/src/d/d_menu_window.cpp +++ b/src/d/d_menu_window.cpp @@ -5,7 +5,61 @@ #include "d/dolzel.h" // IWYU pragma: keep #include "d/d_menu_window.h" + +#include "JSystem/JKernel/JKRExpHeap.h" #include "f_op/f_op_msg.h" +#include "d/d_menu_cloth.h" + +// TODO: Remove me when all the JUT asserts and other strings are filled out. +// This is temporary, just to make the strings match. +void dummy0() { + OSReport("cmap_tri.bti"); + OSReport("cmap_treasure.bti"); + OSReport("cmap_tingle.bti"); + OSReport("cmap_phantomship.bti"); + OSReport("cmap_hint.bti"); + OSReport("f_item_tri.bti"); + OSReport("f_get_rupy.bti"); + OSReport("f_heart_up_02.bti"); + OSReport("f_korog_kare.bti"); + OSReport("f_korog_saki.bti"); + OSReport("d_menu_window.cpp"); + OSReport("i_Ms->name[i] != 0"); + OSReport("Halt"); + OSReport(""); + OSReport("i_Ms->note[i] != 0"); + OSReport("i_Ms->dummy[i] != 0"); + OSReport("i_Ms->buffer_p[i] != 0"); + OSReport("dMi_c != 0"); + OSReport("dMc_c != 0"); + OSReport("dMf_c != 0"); + OSReport("dMs_capture_c != 0"); + OSReport("dMd_c != 0"); + OSReport("dNm_c != 0"); + OSReport("dMs_c != 0"); + OSReport("cloth_c != 0"); + OSReport("dMs_cloth_c != 0"); + OSReport("i_Ms->childHeap != 0"); + OSReport("awake"); + OSReport("majyuu_shinnyuu"); + OSReport("アイテムビット"); + OSReport("ダンジョンビット"); + OSReport("fonttype != 0"); + OSReport("rfonttype != 0"); +} + +class dDlst_MENU_CLOTH_c : public dDlst_base_c {}; + +class dDlst_MENU_CAPTURE_c : public dDlst_base_c { +public: + dDlst_MENU_CAPTURE_c() { mStatus = 0; } + + /* 0x04 */ u8 mStatus; +}; + +static dMCloth_c* cloth_c; +static dDlst_MENU_CLOTH_c* dMs_cloth_c; +static dDlst_MENU_CAPTURE_c* dMs_capture_c; /* 801DB384-801DB50C .text __ct__9dMw_HIO_cFv */ dMw_HIO_c::dMw_HIO_c() { @@ -78,23 +132,72 @@ void dMs_save_delete(sub_ms_screen_class*) { } /* 801DCEA0-801DD090 .text dMs_cloth_create__FP19sub_ms_screen_class */ -void dMs_cloth_create(sub_ms_screen_class*) { - /* Nonmatching */ +void dMs_cloth_create(sub_ms_screen_class* i_Ms) { + dComIfGp_setHeapLockFlag(1); + JKRArchive* arc = dComIfGp_getClothResArchive(); + + cloth_c = new dMCloth_c(); + JUT_ASSERT(2674, cloth_c != NULL); + + cloth_c->setArchive(arc); + cloth_c->init(); + + dMs_cloth_c = new dDlst_MENU_CLOTH_c(); + JUT_ASSERT(2680, dMs_cloth_c != NULL); + + dMs_capture_c = new dDlst_MENU_CAPTURE_c(); + JUT_ASSERT(2683, dMs_capture_c != NULL); + + i_Ms->childHeap = JKRExpHeap::create(0x506A1, i_Ms->parentHeap_0xfc, false); + JUT_ASSERT(2686, i_Ms->childHeap != NULL); } /* 801DD090-801DD154 .text dMs_cloth_delete__FP19sub_ms_screen_class */ -void dMs_cloth_delete(sub_ms_screen_class*) { - /* Nonmatching */ +void dMs_cloth_delete(sub_ms_screen_class* i_Ms) { + if (i_Ms->childHeap) { + i_Ms->childHeap->destroy(); + i_Ms->childHeap = NULL; + } + if (dMs_cloth_c) { + delete dMs_cloth_c; + dMs_cloth_c = NULL; + } + if (cloth_c) { + delete cloth_c; + cloth_c = NULL; + } + if (dMs_capture_c) { + delete dMs_capture_c; + dMs_capture_c = NULL; + } } /* 801DD154-801DD270 .text dMs_clothOnly_create__FP19sub_ms_screen_class */ void dMs_clothOnly_create(sub_ms_screen_class*) { - /* Nonmatching */ + JKRArchive* arc = dComIfGp_getClothResArchive(); + + cloth_c = new dMCloth_c(); + JUT_ASSERT(2744, cloth_c != NULL); + + cloth_c->setArchive(arc); + cloth_c->setClothType(MENU_CLOTH_TYPE_CLOTH_ONLY); + cloth_c->init(); + + dMs_cloth_c = new dDlst_MENU_CLOTH_c(); + JUT_ASSERT(2751, dMs_cloth_c != NULL); } /* 801DD270-801DD308 .text dMs_clothOnly_delete__FP19sub_ms_screen_class */ void dMs_clothOnly_delete(sub_ms_screen_class*) { - /* Nonmatching */ + if (dMs_cloth_c) { + delete dMs_cloth_c; + dMs_cloth_c = NULL; + } + if (cloth_c) { + dComIfGp_getClothResArchive()->removeResourceAll(); + delete cloth_c; + cloth_c = NULL; + } } /* 801DD308-801DD318 .text dMs_onButtonBit__FP19sub_ms_screen_classUc */ |
