Update 2.38
6/7/2026
v2.38.0BETA
Seymour
AURORA: EDIT the REAL battle camera parameters (angle · distance · position · roll) in the panel
- Answering "and how do I see/edit this?": the 🎥 Camera card gained "🎚 Camera parameters (EDITABLE)". RE (IDA + FFXDataParser cross-check, on the owner's hint): the battle camera is SCRIPT-COMPUTED in chunk0 — Camera-namespace calls (
camSetPolar(angle,distance),refSetPos(x,y,z),camSetRoll,camSetScrDpt) whose params are FLOAT constants in the pool. New readerFfxLib/BattleMap/BattleCameraSetup_File.csextracts every call + resolves the floats + the distinct editable knobs;WithFloatedits the float pool byte-local (same length, reusesAiScript_File.EditFloatConst), preserving the other chunks. The panel lists the knobs grouped by type (polar/refPos/roll/screenDepth) with filter + search (the camera is a ~730-cut-per-battle cinematic script, so you navigate by group/search, not a raw list), each editable; "💾 Save camera parameters" applies the changed floats (backup-once + reload). GateBattleCameraScanLabextended: 855 bins with camera, 623,981 calls, float-edit round-trip 855/855 (byte-local + reversible). Honest: editing a float changes ALL cuts that share it; a custom angle IS in-file (overturns the earlier "= scene authoring"); in-game effect = RT2. Docdocs/reverse/FFX_BATTLE_CAMERA_SHOT_TABLE_IDA_2026-06-07.md§6. Build 0 errors
v2.37.3
v2.38.1BETA
Seymour
Monster AI Editor: STAT actions named (end of "stat 0xNN") — `setStatField` uses the SAME table
- The owner pointed out on screen that the 📊 stats still showed raw ("stat 0xDA = 8"). Finding (FFXDataParser ScriptFuncLib cross-check):
setStatField(0x70AB)/getStatField(0x70AA) use the samebtlActorPropertyindexType asreadChrProperty(0x700F)/writeChrProperty(0x7018) — i.e. the SAME field table; my "separate space" assumption was wrong. Why they stayed raw: ids like0xDA/0xDB/0xE6havename=nullin the parser (only aninternalName:stat_round/stat_round_return/stat_attack_inc_speed), and the firstAiChrPropertyNamesonly took the ones with a friendly name. Fix: regenerated the dict to include the game's internal symbol as a fallback when there is no English name (222 → 341 fields) and wired it into the detector's stat branch. Now "stat 0xDA = 8" becomes "stat_round = 8".FfxLib/Ai/AiChrPropertyNames.cs+AiAutomation(Stat branch viaStatusFieldName). Gate--ai3PASS (4156 stats; RT0 byte-identical — display only); editor 0 errors. Honest: the English names are public RE; theinternalNames are the game's real symbol (type "unknown" = fine semantics not 100% mapped, but the symbol is honest and far better than hex)
v2.38.0