Entry 71
The rest of PERSONAL, PARTY and OPTION: Key Items to Log Out, checked against the game, and Log Out back to the top page
Filescrates/piney-fieldui/src/menus/keyitem.rscrates/piney-fieldui/src/menus/leave.rscrates/piney-fieldui/src/menus/personal.rscrates/piney-fieldui/src/menus/status.rscrates/piney-fieldui/src/menus/equip.rscrates/piney-fieldui/src/menus/party_menus.rscrates/piney-fieldui/src/menus/option.rscrates/piney-fieldui/src/menus/option/disp.rscrates/piney-game/src/world.rscrates/piney-game/src/session.rscrates/piney-world/src/lib.rstools/test_fieldui_personal_rs.pytools/test_fieldui_option_rs.pydocs/engine/field-ui.md
The user reported that most menus did nothing. 64 ported PERSONAL's Skills and Items and OPTION's list; an agent (with a helper for OPTION's pages) has now ported the rest.
The menus
Each is checked frame by frame against the game's ccThMenu in eemu.
- 6 Key Items. Its pages; each item's use or refusal; the Grunty Flute; a Ryu Book's fade.
- 7 Discard Item. The counts and the dialog.
- Status.
- 8 Status, 31 a member's items, 64 a piece's status;
- the whole grid;
- L1/R1 through the members;
- the shared boxes (ParameterDisp, SkillDisp, BeffDisp).
- 63 Equipment.
- A change writes DelItem, AddItem and ChangeEquipment: the skills, and
the set bonuses 291-294 and 289. It then writes the save's
realandtune, from piney-battle'scalc_real. - The preview reads the equipment tables as raw bytes, as the game does. An empty slot reads the row before its table.
- A change writes DelItem, AddItem and ChangeEquipment: the skills, and
the set bonuses 291-294 and 289. It then writes the save's
- Leaving. 10 Gate Out, 11 Log Out, 86 TransFieldMenu, 87 Area Information.
- 9 PARTY. 68 Add, 69 Remove and 70 Disband, with the members' greetings and farewells in their voices (group -30).
- OPTION's pages 13-20. Controller, Vibrate, Adjust Screen, Sound, Title Screen, Data Drain, Voiceover and Movie Text.
In the runtime
-
Log Out. Log Out and OPTION's Title Screen ask for
ccGame::ChangeRequest(4, 7) or (1, 7). The session now leaves The World for its top page on 4, handing the save and the event task back, and resets to the title on 1. -
Sound. The Sound page's volumes go to the sound driver.
-
The party. Remove and Disband take the member out of the world's party (
ccParty::DelMember). -
Controller. The page sets the field camera's scheme (
setCameraCtrlType, through the newWorld::set_camera_type). -
Not carried out yet:
- the Grunty Flute's use;
- the way back to a field (86);
- a member's
CalcReal; - new equipment on the member's model;
- Adjust Screen's offset;
- vibration.
The save already holds what each of them changed.
Checked
- Against the game.
tools/test_fieldui_personal_rs.py: 17 tests, including 16 random pad runs through PERSONAL in towns and fields.tools/test_fieldui_option_rs.py: 12 tests.- The field UI's and the shops' suites still pass.
- Re-run in a clean worktree. The same suites and the world's pass,
with the workspace's tests, clippy (including piney-fieldui with
trace), fmt and the docs check. - Shots from the runtime (
--mode world --no-events): Status, Equipment, PARTY, Key Items, Log Out's question, and the Controller page.
- The runtime's new-game save is wrong in two ways. Status and Equipment show both. They are being fixed with
ccSaveData::Init's fills: - the skill list is zeros, not -1, so 16 "NOTHING" rows show; - the stats read 0. - Timing. The game's equipment, party-add and Controller tasks load files and may take several frames. The port finishes each one frame later, the shortest the game can take. - Past the equipment tables. The port reads zeros where the game reads whatever memory follows. -bootParam. What it means beyond choosing Add's greeting. - Two copies ofrand(). The menus keep their own, and only the talk menus' copy can be fed from outside. - From the OPTION helper: - the CD load's real frame count; - whatSetActuater(1, 160, 200)means exactly; - where drainDemo, voice and strWinMode are read. - Still unported: 62 (the gate hack), 66/67 (Data Drain), and 71-73 (CHAT per member).