Skip to content

fix(mh3g): match official companion and monster guide state - #44

Merged
VincentAdamNemessisX merged 5 commits into
mainfrom
fix/mh3g-real-conversion-parity
Aug 16, 2026
Merged

fix(mh3g): match official companion and monster guide state#44
VincentAdamNemessisX merged 5 commits into
mainfrom
fix/mh3g-real-conversion-parity

Conversation

@VincentAdamNemessisX

@VincentAdamNemessisX VincentAdamNemessisX commented Aug 16, 2026

Copy link
Copy Markdown
Contributor

概要

修复真实 3DS → Wii U/Cemu 转换中三类已复现的数据映射问题,并补齐 Windows WinUI 修复流程的两个回归点:

  • 茶茶/卡扬巴面具与熟练度区:
    • 保持 0x0DE..0x13F byte-packed 区域原字节顺序;
    • 不再把油灯面具熟练度等字节错误地按 u16 换序。
  • 怪物图鉴/猎人记录:
    • 图鉴可见状态只从 3DS 源状态位映射;
    • 不再因讨伐/捕获次数非零而擅自解锁额外页面;
    • 个人记录、收到的公会名片和 CEC/离线伙伴复用同一状态映射。
  • 怪物列表 packed state:
    • 官方迁移逐字节保留 payload 0x5760..0x577B
    • 修复历史 u16 换序把尾部 FF 00 写成 00 FF、清除 0x577A 恐暴龙可见位的问题;
    • 兼容修复按单字节判断,仅修复仍等于旧转换结果的字段,不回退后续 Wii U 进度。
  • Windows WinUI:
    • 修复模式提交可选 ExtData 范围时,只撤销旧 Dry Run/写入授权,不再清除已完成的核心 Inspect;
    • Dry Run “技术细节”恢复空态、错误态和可滚动只读 JSON 报告;
    • 增加稳定 AutomationId 和对应 source-contract 门禁。

对照证据

使用 5 组真实 3DS → Wii U 官方迁移成对存档进行只读差分:

  • 两名随从目标区域与官方结果:5/5 零差异;
  • 48 个 item-acquired u32:5/5 零差异;
  • 28 字节怪物列表 packed state:5/5 逐字节一致;
  • 个人图鉴可见状态:4/5 完全一致;剩余一组仅有不同保存时点造成的相邻计数变化,状态位本身一致;
  • 非空 card1/card2/card3 中怪物可见状态:与官方结果零差异;
  • quest1..4:12 个文件逐字节一致。

静态逆向同时确认:怪物列表从 72-bit 可见表构建、每页 8 项;恐暴龙是 index 67,对应 payload[0x577A] & 0x08。真实存档只作为本地只读 oracle,未提交到仓库。

验证

  • 本地门禁:
    • cargo test -p mh3g-save-convert:224 tests passed;
    • native + Windows MSVC target clippy:无警告;
    • docs contract、Windows source contract、Windows UI Quality source contract:通过;
    • git diff --check:通过。
  • 合成与成对差分门禁覆盖:
    • byte-packed mask/mastery sentinel 不换序;
    • 怪物列表 28-byte packed state 原样保留;
    • 计数非零但源 state=0 时仍保持隐藏;
    • personal / received cards / CEC 使用相同映射;
    • WinUI Optional → Dry Run 状态推进;
    • 技术细节空态和报告内容。
  • 用户已在隔离 Cemu MLC 中完成游戏内验证:
    • 带非零油灯面具熟练度的茶茶/卡扬巴状态正常;
    • Yoruaski 存档的怪物列表已恢复第 9 页和恐暴龙;
    • 本轮问题未再复现。
  • 原始 3DS 存档与正式 MLC 均未改写。

边界

  • system 是 title 级共享文件,不按 user1/user2/user3 分槽;本 PR 不把其画廊位映射宣称为完整官方迁移一致性。
  • Windows 原生视觉、UIA、键盘和动效矩阵仍需要 Windows runner/实机证据;hosted Windows 构建通过不等同于完整运行态验收。

@VincentAdamNemessisX

Copy link
Copy Markdown
Contributor Author

Hosted Windows follow-up: the first head exposed a WinUI XAML API error because scroll-bar visibility was used as a direct TextBox member. Commit 6599e67 switched to the required ScrollViewer attached properties. On the current head, source-contract and native-build-candidate both pass; the independent Windows packaging workflow is still running.

@VincentAdamNemessisX

Copy link
Copy Markdown
Contributor Author

Current-head update: validate Windows x64 packaging has now passed as well (6m55s). Converter-relevant hosted gates are green: Windows source contract, WinUI native candidate publish, Windows x64 package validation, macOS package validation, Rust, and macOS smoke. Repository-wide Android/compose jobs remain outside this converter fix and are still running.

@VincentAdamNemessisX VincentAdamNemessisX changed the title fix(mh3g): match official mask and Hunter's Notes state fix(mh3g): match official companion and monster guide state Aug 16, 2026
@VincentAdamNemessisX
VincentAdamNemessisX merged commit 07dc8f5 into main Aug 16, 2026
9 checks passed
@VincentAdamNemessisX
VincentAdamNemessisX deleted the fix/mh3g-real-conversion-parity branch August 16, 2026 15:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant