{"id":50248318,"url":"https://github.com/vrilya/hylian-grimoire","last_synced_at":"2026-05-27T00:02:06.659Z","repository":{"id":358490505,"uuid":"1176653722","full_name":"Vrilya/Hylian-Grimoire","owner":"Vrilya","description":"A modern message editor for Ocarina of Time","archived":false,"fork":false,"pushed_at":"2026-05-26T17:31:29.000Z","size":20772,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-26T19:17:12.586Z","etag":null,"topics":["editor","localization","message-editor","modding","n64","ocarina-of-time","text-editor","windows","winui3","zelda"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Vrilya.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-03-09T08:36:18.000Z","updated_at":"2026-05-26T17:31:55.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/Vrilya/Hylian-Grimoire","commit_stats":null,"previous_names":["vrilya/hylian-grimoire"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/Vrilya/Hylian-Grimoire","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Vrilya%2FHylian-Grimoire","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Vrilya%2FHylian-Grimoire/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Vrilya%2FHylian-Grimoire/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Vrilya%2FHylian-Grimoire/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Vrilya","download_url":"https://codeload.github.com/Vrilya/Hylian-Grimoire/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Vrilya%2FHylian-Grimoire/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33543973,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"ssl_error","status_checked_at":"2026-05-26T15:22:15.568Z","response_time":63,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["editor","localization","message-editor","modding","n64","ocarina-of-time","text-editor","windows","winui3","zelda"],"created_at":"2026-05-27T00:02:01.223Z","updated_at":"2026-05-27T00:02:06.652Z","avatar_url":"https://github.com/Vrilya.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Hylian Grimoire\n\n![Hylian Grimoire running on Windows 11](media/screenshot1.png)\n\nHylian Grimoire is a Windows desktop editor for Ocarina of Time message data. I originally built it while working on my own translation of the game, and the project has been rewritten from the ground up several times. The current version focuses on exact binary round-tripping, readable editor syntax, decomp-friendly C header workflows, ROM workflows, and a modern Windows 11 interface.\n\nThe editor works with extracted `.bin` / `.tbl` message files, C message headers, and `.z64` ROMs. Header import and export are treated as first-class workflows, with support for modern multi-language decomp-style headers, legacy headers, and OTRMod-oriented output.\n\n## Features\n\n- Load and save message `.bin` / `.tbl` files.\n- Load and save `.z64` ROMs, including compressed and decompressed ROM workflows.\n- Import and export C message headers in Modern, Legacy, and OTRMod-oriented formats.\n- Import headers into ROM message banks when the imported data fits the selected ROM section.\n- Search message IDs by ID or message text.\n- Add, rename, delete, and reorder message IDs.\n- Edit textbox type and position metadata.\n- Preview message boxes with game-style text rendering, item icons, colors, choices, highscore tokens, ocarina staff display, credits text, and multi-box messages.\n- Open the preview in a separate window with zoom, column layout, alignment guides, and always-on-top support.\n- Manage glyph profiles for editor display characters, glyph images, and preview glyph widths without accidentally changing the intended byte values.\n- Read glyph images and widths directly from ROMs, edit them in the Glyph Manager, and write the changes back to the ROM.\n- Export and replace ROM textures as PNG files with exact byte-preserving round-tripping.\n- Remap glyph byte usage across the active script.\n- Edit ROM title-screen text.\n- Edit pause-menu prompt positions.\n- Apply ROM tweaks from the Tools menu.\n- Follow Windows light/dark mode through WinUI 3 and Windows App SDK.\n\n## Message Editing\n\n![Main editor window](media/mainwindow.png)\n\nThe main editor is built around fast navigation, readable message syntax, and exact save/export behavior. Messages can be searched by ID or text, edited directly, reordered, imported from headers, exported back to headers, or written into ROM message banks.\n\n## Header Workflows\n\nHylian Grimoire treats C message headers as real project files, not disposable export output. It supports modern multi-language decomp-style headers, legacy headers, and OTRMod-oriented output, while keeping control codes, item icons, language slots, and readable formatting intact wherever possible.\n\nHeaders can be loaded directly, exported from data files or ROMs, and imported into ROM message banks. For multi-language ROMs, the editor can work with a selected language or export all ROM languages in a modern header layout.\n\n## Message Preview\n\n![Message preview window](media/preview.png)\n\nThe preview window renders message boxes with game-style glyphs, colors, item icons, choices, ocarina staff display, credits text, multi-box messages, zoom controls, columns, and alignment guides.\n\n## Glyph Manager\n\n![Glyph Manager](media/glyphmanager.png)\n\nThe Glyph Manager is designed for translation projects that need custom characters. Glyph profiles can change which character a byte displays as, replace the preview image, and adjust the preview width while keeping the underlying byte value stable. For example, a profile can make byte `0x92` appear as `å` in the editor while still saving byte `0x92` to the message data.\n\nIn ROM mode, Hylian Grimoire can read glyph images and widths directly from the loaded ROM, compare them against the expected baseline, and write image or width changes back into the ROM. This makes it possible to inspect and edit custom ROM fonts without treating them as separate loose assets.\n\nWhen saving or exporting, text characters must be encodable by the active glyph profile. If a message contains an unsupported character, the save is stopped and the affected message ID is reported instead of silently writing an invalid byte.\n\n## Texture Manager\n\n![Texture Manager](media/texturemanager.png)\n\nThe Texture Manager exports and replaces ROM textures as PNG files. It uses the loaded ROM profile to expose the relevant texture groups, keeps alpha visible in the preview, and validates replacement images against the exact expected dimensions and encoded byte length before writing anything back.\n\nFolder export and folder replace use the same grouped texture layout, making it practical to work on many image assets at once while still preserving exact binary round-tripping.\n\n## Title Text\n\n![Title text editor](media/titletext.png)\n\nThe Title Text tool edits title-screen text with a live preview. It keeps the title text constraints visible so changes can be made deliberately instead of by trial and error.\n\n## Prompt Editor\n\n![Prompt Editor](media/prompteditor.png)\n\nThe Prompt Editor adjusts pause-menu prompt placement for the button and text elements used by the file, melody, gear, and item panels. The live preview shows the prompt graphics directly from the loaded ROM, with optional guides and frames for careful alignment.\n\n## Tweaks\n\n![ROM tweaks](media/tweaks.png)\n\nThe Tweaks window exposes ROM patches as simple on/off switches. Each tweak is version-aware, so unavailable options stay disabled instead of applying unsafe changes.\n\n## Editor Syntax\n\nMessages are shown as editable text with bracketed tags for control codes. For example:\n\n```text\n[unskippable][item:30][quicktexton]Du bytte [color:red]Kojiro[color:default]!\n[break]\nDenna konstiga svamp försvinner\nom du inte levererar den i tid!\n```\n\nCommon tags include:\n\n- `[break]`\n- `[breakdelay:xx]`\n- `[color:red]`\n- `[color:default]`\n- `[item:30]`\n- `[sfx:Laugh2]`\n- `[Triangle]`\n- `[twochoice]`\n- `[threechoice]`\n\nThe editor syntax is intended to be readable while preserving the original encoded data as closely as possible.\n\n## Build\n\nRequirements:\n\n- Windows 10 1809 or newer, Windows 11 recommended\n- .NET 8 SDK\n\nBuild from the repository root:\n\n```powershell\ndotnet build .\\HylianGrimoire.slnx -c Release\n```\n\nRun from source:\n\n```powershell\ndotnet run --project .\\src\\HylianGrimoire\\HylianGrimoire.csproj -c Release\n```\n\nRun tests:\n\n```powershell\ndotnet test .\\HylianGrimoire.slnx -c Release\n```\n\n## Project Structure\n\n```text\nsrc/HylianGrimoire/              WinUI 3 application\nsrc/HylianGrimoire/Codecs/       Message byte encoding, decoding, token maps, and editor syntax\nsrc/HylianGrimoire/Glyphs/       Glyph metadata, glyph profiles, and the Glyph Manager window\nsrc/HylianGrimoire/Headers/      C header import/export\nsrc/HylianGrimoire/Interop/      Windows window theming, icons, sizing, and native interop helpers\nsrc/HylianGrimoire/Models/       Message entries, message tokens, and UI list models\nsrc/HylianGrimoire/Preview/      Game-style message preview renderer and preview window\nsrc/HylianGrimoire/PromptEditor/ Pause-menu prompt placement editing support\nsrc/HylianGrimoire/Rom/          ROM detection, message-bank handling, glyph sessions, and ROM patch helpers\nsrc/HylianGrimoire/Services/     File operations, searching, message list operations, and document services\nsrc/HylianGrimoire/Textures/     ROM texture catalog, texture codec, and Texture Manager window\nsrc/HylianGrimoire/TitleText/    Title-screen text editing support\nsrc/HylianGrimoire/Tweaks/       ROM tweaks\ntests/HylianGrimoire.Tests/      xUnit tests for codec, import/export, preview-adjacent behavior, and file parity\n```\n\n## Notes\n\nHylian Grimoire is a standalone editor project. It is meant for extracted message files, ROM workflows, and project workflows where exact save/export behavior matters. Keep backups of your source `.bin`, `.tbl`, header, and ROM files when working on real translation or modding projects.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvrilya%2Fhylian-grimoire","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvrilya%2Fhylian-grimoire","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvrilya%2Fhylian-grimoire/lists"}