Complete WPF UI Redesign + Animation frame editor + quest NPC Conversation preview + Spine-runtime 4.1 + major MapleLib Performance Overhaul #329
lastbattle
announced in
Announcements
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
This release is unofficially sponsored by OpenAI for the ultra generous Codex rate limit reset the past 2 weeks I guess? 🤔 all of the AI tokens gonna go somewhere before its gone!
please please, its too much resets we cant take it anymore. Mr. Tibo President, its too much.
btw gpt-5.6-sol rocks! <3 Sam
BankmanAltmanso is this the start of AI generated slop in MapleStory game assets?
Changes covered here are from 9.0.0 to
masteras of July 20, 2026.TL;DR
Full WPF Modern UI redesign for both HaCreator and HaRepacker, built on a shared design system:
Animation Frame Editor & AI image asset generator in HaCreator
Quest Editor redesign with NPC Conversation Preview Studio:
Spine 4.1 support: raw skeleton loading, atlas handling, and rendering of Spine 4.1 map objects/backgrounds (GMS v230++). with spine-2.1.25 backwards compatibility for versions from 2015-2024 (Ursus, Kinesis)
MapleLib performance & format work: major optimizations (.ms pack v4 encryption ChaCha20 support, WZ core parsing/lookup/save, PNG packed formats with SIMD/scalar paths, BC7 / format 4098 image support, concurrent loading, legacy IMG encryption fallback, etc.).
AI map editing: OpenCode transport have been replaced with HaCreator native MCP, using openai's API format (supports openrouter)
HaRepacker: WPF redesign, WZ key brute-force optimization (80,000x speedups, p.s. custom WZ keys dont work to secure your wzs anymore), unload tree synchronization fix.
Cleanup: removed unused Squish dependency; MapleLib tests moved into the submodule; docs/AGENTS.md updates.
Note: Some MapSimulator-related work remaining at staging was intentionally isolated via staging-no-mapsimulator branch, as it is not ready for production.
Highlights
HaCreator
[NEW] Complete WPF UI redesign and localization
1c0efcc c43b7b9
[NEW] Animation Frame Editor (frame alignment, bitmap resizing, timeline clipboard/drop, compact preview toolbar, coverage)
2c14372 e8f2f20 e7c0cda eabe48a 820b9eb 77692f6
[NEW] NPC Conversation Preview Studio + editable rendered conversations + stop-quest preview
6033817 53caba0 28239ef
[NEW] Redesign Quest Editor and support IMG selectors
7ac3107
[NEW] Spine 4.1 raw skeleton / map object / background support
39e133f 48a9de4 25a8ca3
[NEW] Replace OpenCode AI transport with MCP
050963f
Map Explorer / loading UX improvements
03d19b5 6500fc7 a203d31 600b8cc bc38b18 a85c3c4 acb2256 15f9d15 d7c93d5 4443e52 ce0decb b68cc1f 3b5310b 06f0545 b8d17aa ceeba5c 7435d33 ef1ea9c 7fd1290
HaRepacker
[NEW] Complete WPF UI redesign and native tree interactions
2cbdc75
WZ key bruteforce performance
3a10875Benchmark reportReworked the 32-bit WZ IV key search used by
WzKeyBruteforceFormwith a preloaded encrypted-suffix probe, batched AES processing, reusable worker buffers, and parallel candidate scanning.The implementation preserves the complete
0throughuint.MaxValuesearch space, four-byte key representation, cancellation, progress reporting, and final validation through the existing WZ parser.Single-worker benchmark
Parallel benchmark
At the final 48-worker result, the signature-filter portion of the complete 32-bit key space takes approximately 1.47 seconds in the benchmark environment. Thread scheduling and the small number of candidates requiring full parser validation add some additional overhead.
Each worker retains two reusable 256 KiB buffers at the selected 16K batch size. A 48-worker search therefore uses approximately 24 MiB of reusable buffers instead of allocating roughly 17.25 KiB for every candidate.
Additional improvements
.imgsuffix for fast candidate rejection.Environment.ProcessorCount * 3workers.Aes.Create().Return a specific error for unsupported WZ files that cannot use the optimized search path.
Fix WZ unload tree synchronization
719cdb7
MapleLib / WzLib (submodule)
Major updates pulled via multiple submodule bumps (key MapleLib commits):
Add MS pack version 4 support (ChaCha20) + parsing hot-path optimizations + benchmarks
123a54 6510d3 1a6458 2a65e8
Optimize WZ core parsing, lookup, and save paths
0beb29
PNG packed formats + WZ PNG/canvas hot paths
37d4e6da4db3Optimized packed 16-bit PNG formats with new SIMD and scalar paths, while reducing CPU and allocation overhead across WZ canvas lookup, PNG decompression, and image encode/decode operations.
Performance benchmarks — median Release measurements
Allocation benchmarks
Additional changes include direct decoding into locked bitmap memory, reusable per-thread DXT buffers, exact integer color quantization, complete deflate reads, reduced compressed-stream copying, and corrected DXT3/DXT5 buffer sizing for non-block-aligned dimensions.
Support BC7 WZ canvas format 4098 (FieldID: 993296000, Map/Back/2603nightmareForest.img/spine/nightmare2.png)
08beb8
Add Spine 4.1 raw skeleton support + atlas improvements (FieldID: 993296000), with backwards compatibility to spine-2.1.25 since Ursus and Kinesis patch (2015~2024)
ea3dc5 0eb732 e5be64
Stabilize concurrent WZ image loading
c41dd9
Support legacy IMG encryption fallback
ada8a8
Fix canvas shard path resolution, segmented canvas link resolution, IMG path traversal, IMG serialization for standalone images, RGB565 stride (thanks @sidyhe Fix RGB565 canvas decoding stride handling for Format513 images MapleLib#20) , empty paths, fixed-length string reads, keep reader position after parse, etc.
115857 d86a65 f89dd9 50d67b
7440b2 37ddb4 d0e6a1 a4b817
Migrate JSON serialization to System.Text.Json (3x faster than Newtonsoft.Json in .NET Core 3.0 benchmarks .NET dev blog)
75e0fc
Support IMG version folder rename
50332d
Fix byte reading/writing to use the correct size in SaveImage() (thanks @genment Fix byte reading/writing to use the correct size in SaveImage() MapleLib#18)
Fix v229.2 WZ file parsing for 64-bit format (thanks @ryantpayton Fix v229.2 WZ file parsing for 64-bit format MapleLib#17)
Other / Repository
Document the unified desktop UI design system
b29c4fc
Remove unused Squish dependency
1de4bc5
Move MapleLib tests into MapleLib submodule + add WZ core / packed PNG regression tests
81173f9 fb87aa8
Multiple MapleLib submodule updates
0567359 a16f29b cf4e3a1 356b4cc 8d4a53a f585c0a 6a5f150 9992bea dd342bc
AGENTS.md / commit guidance updates
f7e78e2 63de4c5 3a79995
Update IMG_FILESYSTEM_MIGRATION_PLAN.md
2a98eb5
Prepare release branch excluding MapSimulator changes + related merges
b9ea573 cd853ae 0a5e636 21593f4
Full Changelog: 9.0.0...10.0.0
Beta Was this translation helpful? Give feedback.
All reactions