{"id":2909,"date":"2026-09-02T11:10:19","date_gmt":"2026-09-02T19:10:19","guid":{"rendered":"https:\/\/www.yoonhuh.com\/blog\/?p=2909"},"modified":"2026-09-02T11:28:05","modified_gmt":"2026-09-02T19:28:05","slug":"migrating-an-oblivion-character-to-oblivion-remastered","status":"publish","type":"post","link":"https:\/\/www.yoonhuh.com\/blog\/migrating-an-oblivion-character-to-oblivion-remastered\/","title":{"rendered":"Migrating an Oblivion Character to Oblivion Remastered"},"content":{"rendered":"<p class=\"ui-markdown__paragraph ui-z80ra4 ui-uu7i3w ui-1nhcn8o ui-j7cesy ui-13faqbe ui-14l7nz5 ui-zboxd6 ui-19d5a1n ui-bpgzfc\">When I heard that there was no way to migrate saves from the original Oblivion, I was a bit disappointed. The real changes in Remastered were the graphics overhaul and running on Unreal Engine 5, with the same quests underneath. The original Oblivion game files are even used as a data source. I had spent hundreds of hours on my original character and didn\u2019t really feel like starting from scratch.<\/p>\n<p class=\"ui-markdown__paragraph ui-z80ra4 ui-uu7i3w ui-1nhcn8o ui-j7cesy ui-13faqbe ui-14l7nz5 ui-zboxd6 ui-19d5a1n ui-bpgzfc\">That\u2019s why I decided to build this script, with the help of agentic AI tools. Please note that this is&nbsp;<span class=\"font-semibold\" data-streamdown=\"strong\">highly experimental<\/span>&nbsp;and definitely has a lot of limitations and bugs, but it is a start at migrating character builds from the original Oblivion.<\/p>\n<h2 class=\"ui-markdown__heading ui-13ebx5f ui-x6cpbe ui-14l7nz5 ui-zboxd6 ui-2rll1g ui-1pz8kdr ui-1rrfizd ui-1qaq26d\">Why a converter doesn\u2019t exist<\/h2>\n<p class=\"ui-markdown__paragraph ui-z80ra4 ui-uu7i3w ui-1nhcn8o ui-j7cesy ui-13faqbe ui-14l7nz5 ui-zboxd6 ui-19d5a1n ui-bpgzfc\">This is not a save-file converter, and it does not write or patch a Remastered&nbsp;<code class=\"ui-markdown__inline-code ui-rtu7ee ui-1i9v5mb ui-1hhlpkd ui-6lrnw6 ui-115g5cq ui-odjx36 ui-1wd3ewq ui-hayvgc ui-eb7xqv ui-15bjb6t ui-1lldw8n ui-1mzt3pk md-inline-path-filename-like\"><span class=\"ui-markdown__inline-path-filename ui-1heor9g md-inline-path-filename\">.sav<\/span><\/code>.<\/p>\n<p class=\"ui-markdown__paragraph ui-z80ra4 ui-uu7i3w ui-1nhcn8o ui-j7cesy ui-13faqbe ui-14l7nz5 ui-zboxd6 ui-19d5a1n ui-bpgzfc\">Original Oblivion saves are TES4 (<code class=\"ui-markdown__inline-code ui-rtu7ee ui-1i9v5mb ui-1hhlpkd ui-6lrnw6 ui-115g5cq ui-odjx36 ui-1wd3ewq ui-hayvgc ui-eb7xqv ui-15bjb6t ui-1lldw8n ui-1mzt3pk\">TES4SAVEGAME<\/code>). Remastered saves are Unreal Engine GVAS. There is no nested TES4 blob to transplant. Bethesda does not support official save transfer, and a byte-for-byte copy is not possible.<\/p>\n<p class=\"ui-markdown__paragraph ui-z80ra4 ui-uu7i3w ui-1nhcn8o ui-j7cesy ui-13faqbe ui-14l7nz5 ui-zboxd6 ui-19d5a1n ui-bpgzfc\">So the script takes a different path: read the original PC&nbsp;<code class=\"ui-markdown__inline-code ui-rtu7ee ui-1i9v5mb ui-1hhlpkd ui-6lrnw6 ui-115g5cq ui-odjx36 ui-1wd3ewq ui-hayvgc ui-eb7xqv ui-15bjb6t ui-1lldw8n ui-1mzt3pk md-inline-path-filename-like\"><span class=\"ui-markdown__inline-path-filename ui-1heor9g md-inline-path-filename\">.ess<\/span><\/code>, extract the character data that&nbsp;<em>can<\/em>&nbsp;be restored, and emit a Remastered console batch file (<code class=\"ui-markdown__inline-code ui-rtu7ee ui-1i9v5mb ui-1hhlpkd ui-6lrnw6 ui-115g5cq ui-odjx36 ui-1wd3ewq ui-hayvgc ui-eb7xqv ui-15bjb6t ui-1lldw8n ui-1mzt3pk md-inline-path-filename-like\"><span class=\"ui-markdown__inline-path-filename ui-1heor9g md-inline-path-filename\">migrate.txt<\/span><\/code>). You create a new Remastered character, then run&nbsp;<code class=\"ui-markdown__inline-code ui-rtu7ee ui-1i9v5mb ui-1hhlpkd ui-6lrnw6 ui-115g5cq ui-odjx36 ui-1wd3ewq ui-hayvgc ui-eb7xqv ui-15bjb6t ui-1lldw8n ui-1mzt3pk\">exec migrate.txt<\/code>&nbsp;in the in-game console.<\/p>\n<p class=\"ui-markdown__paragraph ui-z80ra4 ui-uu7i3w ui-1nhcn8o ui-j7cesy ui-13faqbe ui-14l7nz5 ui-zboxd6 ui-19d5a1n ui-bpgzfc\">Cyrodiil stays a mostly fresh Remastered world. The script restores character data onto whatever cell you are standing in.<\/p>\n<h2 class=\"ui-markdown__heading ui-13ebx5f ui-x6cpbe ui-14l7nz5 ui-zboxd6 ui-2rll1g ui-1pz8kdr ui-1rrfizd ui-1qaq26d\">What it actually restores<\/h2>\n<p class=\"ui-markdown__paragraph ui-z80ra4 ui-uu7i3w ui-1nhcn8o ui-j7cesy ui-13faqbe ui-14l7nz5 ui-zboxd6 ui-19d5a1n ui-bpgzfc\">The generated batch applies things in this order: stats \u2192 inventory \u2192 spells \u2192 factions \u2192 map markers \u2192 quest stages \u2192 control \/ fast-travel unlock.<\/p>\n<p class=\"ui-markdown__paragraph ui-z80ra4 ui-uu7i3w ui-1nhcn8o ui-j7cesy ui-13faqbe ui-14l7nz5 ui-zboxd6 ui-19d5a1n ui-bpgzfc\">What it tries to bring over:<\/p>\n<ul class=\"ui-markdown__list ui-78zum5 ui-dt5ytf ui-1ae8yn7 ui-13vk20g ui-1e8yfua ui-j7cesy ui-1bae07f\">\n<li class=\"ui-markdown__list-item ui--default-marker ui-exx8yu ui-1xpa7k ui-18d9i69 ui-1uhho1l ui-13faqbe ui-ez2fb\" data-md-list-item=\"\">Level, attributes, skills, and health<\/li>\n<li class=\"ui-markdown__list-item ui--default-marker ui-exx8yu ui-1xpa7k ui-18d9i69 ui-1uhho1l ui-13faqbe ui-ez2fb\" data-md-list-item=\"\">Magicka and fatigue (with some auto-calc caveats)<\/li>\n<li class=\"ui-markdown__list-item ui--default-marker ui-exx8yu ui-1xpa7k ui-18d9i69 ui-1uhho1l ui-13faqbe ui-ez2fb\" data-md-list-item=\"\">Inventory deltas (<code class=\"ui-markdown__inline-code ui-rtu7ee ui-1i9v5mb ui-1hhlpkd ui-6lrnw6 ui-115g5cq ui-odjx36 ui-1wd3ewq ui-hayvgc ui-eb7xqv ui-15bjb6t ui-1lldw8n ui-1mzt3pk\">additem<\/code>&nbsp;\/&nbsp;<code class=\"ui-markdown__inline-code ui-rtu7ee ui-1i9v5mb ui-1hhlpkd ui-6lrnw6 ui-115g5cq ui-odjx36 ui-1wd3ewq ui-hayvgc ui-eb7xqv ui-15bjb6t ui-1lldw8n ui-1mzt3pk\">equipitem<\/code>), including gold when it shows up as a save change<\/li>\n<li class=\"ui-markdown__list-item ui--default-marker ui-exx8yu ui-1xpa7k ui-18d9i69 ui-1uhho1l ui-13faqbe ui-ez2fb\" data-md-list-item=\"\">Spells (vanilla + official DLC FormIDs)<\/li>\n<li class=\"ui-markdown__list-item ui--default-marker ui-exx8yu ui-1xpa7k ui-18d9i69 ui-1uhho1l ui-13faqbe ui-ez2fb\" data-md-list-item=\"\">Faction ranks<\/li>\n<li class=\"ui-markdown__list-item ui--default-marker ui-exx8yu ui-1xpa7k ui-18d9i69 ui-1uhho1l ui-13faqbe ui-ez2fb\" data-md-list-item=\"\">Discovered world-map markers<\/li>\n<li class=\"ui-markdown__list-item ui--default-marker ui-exx8yu ui-1xpa7k ui-18d9i69 ui-1uhho1l ui-13faqbe ui-ez2fb\" data-md-list-item=\"\">Highest decoded quest stages<\/li>\n<li class=\"ui-markdown__list-item ui--default-marker ui-exx8yu ui-1xpa7k ui-18d9i69 ui-1uhho1l ui-13faqbe ui-ez2fb\" data-md-list-item=\"\">Tutorial \/ fast-travel unlock so you are not stuck in the sewers<\/li>\n<\/ul>\n<p class=\"ui-markdown__paragraph ui-z80ra4 ui-uu7i3w ui-1nhcn8o ui-j7cesy ui-13faqbe ui-14l7nz5 ui-zboxd6 ui-19d5a1n ui-bpgzfc\">What it does&nbsp;<span class=\"font-semibold\" data-streamdown=\"strong\">not<\/span>&nbsp;restore:<\/p>\n<ul class=\"ui-markdown__list ui-78zum5 ui-dt5ytf ui-1ae8yn7 ui-13vk20g ui-1e8yfua ui-j7cesy ui-1bae07f\">\n<li class=\"ui-markdown__list-item ui--default-marker ui-exx8yu ui-1xpa7k ui-18d9i69 ui-1uhho1l ui-13faqbe ui-ez2fb\" data-md-list-item=\"\">World state (Kvatch, Oblivion Gates, NPC deaths, houses, horses, storage)<\/li>\n<li class=\"ui-markdown__list-item ui--default-marker ui-exx8yu ui-1xpa7k ui-18d9i69 ui-1uhho1l ui-13faqbe ui-ez2fb\" data-md-list-item=\"\">Position \/ cell (no teleport;&nbsp;<code class=\"ui-markdown__inline-code ui-rtu7ee ui-1i9v5mb ui-1hhlpkd ui-6lrnw6 ui-115g5cq ui-odjx36 ui-1wd3ewq ui-hayvgc ui-eb7xqv ui-15bjb6t ui-1lldw8n ui-1mzt3pk\">coc<\/code>&nbsp;to Imperial City Market District does not work in Remastered)<\/li>\n<li class=\"ui-markdown__list-item ui--default-marker ui-exx8yu ui-1xpa7k ui-18d9i69 ui-1uhho1l ui-13faqbe ui-ez2fb\" data-md-list-item=\"\">Face, race, class, birthsign, and name (those come from the new Remastered character)<\/li>\n<li class=\"ui-markdown__list-item ui--default-marker ui-exx8yu ui-1xpa7k ui-18d9i69 ui-1uhho1l ui-13faqbe ui-ez2fb\" data-md-list-item=\"\">Player-created spells and custom enchantments<\/li>\n<li class=\"ui-markdown__list-item ui--default-marker ui-exx8yu ui-1xpa7k ui-18d9i69 ui-1uhho1l ui-13faqbe ui-ez2fb\" data-md-list-item=\"\">Third-party mods (UOP, overhauls, etc. are skipped)<\/li>\n<li class=\"ui-markdown__list-item ui--default-marker ui-exx8yu ui-1xpa7k ui-18d9i69 ui-1uhho1l ui-13faqbe ui-ez2fb\" data-md-list-item=\"\">Time, fame\/infamy, local-map fog of war<\/li>\n<\/ul>\n<p class=\"ui-markdown__paragraph ui-z80ra4 ui-uu7i3w ui-1nhcn8o ui-j7cesy ui-13faqbe ui-14l7nz5 ui-zboxd6 ui-19d5a1n ui-bpgzfc\">Quest stages are force-set with&nbsp;<code class=\"ui-markdown__inline-code ui-rtu7ee ui-1i9v5mb ui-1hhlpkd ui-6lrnw6 ui-115g5cq ui-odjx36 ui-1wd3ewq ui-hayvgc ui-eb7xqv ui-15bjb6t ui-1lldw8n ui-1mzt3pk\">setstage<\/code>. The journal can say you finished something while the world has not. Martin may not be where the quest log expects.&nbsp;<code class=\"ui-markdown__inline-code ui-rtu7ee ui-1i9v5mb ui-1hhlpkd ui-6lrnw6 ui-115g5cq ui-odjx36 ui-1wd3ewq ui-hayvgc ui-eb7xqv ui-15bjb6t ui-1lldw8n ui-1mzt3pk\">--no-quests<\/code>&nbsp;is often the more stable option if you mainly want the build and inventory.<\/p>\n<h2 class=\"ui-markdown__heading ui-13ebx5f ui-x6cpbe ui-14l7nz5 ui-zboxd6 ui-2rll1g ui-1pz8kdr ui-1rrfizd ui-1qaq26d\">How it works, briefly<\/h2>\n<div class=\"composer-message-codeblock\">\n<pre><code>OG .ess  \u2192  parse character dump  \u2192  migrate.txt  \u2192  copy to Binaries\\  \u2192  in-game: exec migrate.txt<\/code><\/pre>\n<\/div>\n<p class=\"ui-markdown__paragraph ui-z80ra4 ui-uu7i3w ui-1nhcn8o ui-j7cesy ui-13faqbe ui-14l7nz5 ui-zboxd6 ui-19d5a1n ui-bpgzfc\">FormID high bytes are remapped from the original save\u2019s plugin list onto Remastered&nbsp;<code class=\"ui-markdown__inline-code ui-rtu7ee ui-1i9v5mb ui-1hhlpkd ui-6lrnw6 ui-115g5cq ui-odjx36 ui-1wd3ewq ui-hayvgc ui-eb7xqv ui-15bjb6t ui-1lldw8n ui-1mzt3pk md-inline-path-filename-like\"><span class=\"ui-markdown__inline-path-filename ui-1heor9g md-inline-path-filename\">plugins.txt<\/span><\/code>. Plugins that do not exist in Remastered are listed as comments; their FormIDs are skipped instead of colliding with DLC slots.<\/p>\n<p class=\"ui-markdown__paragraph ui-z80ra4 ui-uu7i3w ui-1nhcn8o ui-j7cesy ui-13faqbe ui-14l7nz5 ui-zboxd6 ui-19d5a1n ui-bpgzfc\">PC only. Xbox, PlayStation, and Xbox 360&nbsp;<code class=\"ui-markdown__inline-code ui-rtu7ee ui-1i9v5mb ui-1hhlpkd ui-6lrnw6 ui-115g5cq ui-odjx36 ui-1wd3ewq ui-hayvgc ui-eb7xqv ui-15bjb6t ui-1lldw8n ui-1mzt3pk\">CON <\/code>&nbsp;container saves are not supported.<\/p>\n<h2 class=\"ui-markdown__heading ui-13ebx5f ui-x6cpbe ui-14l7nz5 ui-zboxd6 ui-2rll1g ui-1pz8kdr ui-1rrfizd ui-1qaq26d\">Highly experimental, back up first<\/h2>\n<p class=\"ui-markdown__paragraph ui-z80ra4 ui-uu7i3w ui-1nhcn8o ui-j7cesy ui-13faqbe ui-14l7nz5 ui-zboxd6 ui-19d5a1n ui-bpgzfc\">This is unofficial, unfinished in spirit, and bugs are likely. Results can vary by save, load order, and Remastered patch.<\/p>\n<p class=\"ui-markdown__paragraph ui-z80ra4 ui-uu7i3w ui-1nhcn8o ui-j7cesy ui-13faqbe ui-14l7nz5 ui-zboxd6 ui-19d5a1n ui-bpgzfc\"><span class=\"font-semibold\" data-streamdown=\"strong\">Back up both<\/span>&nbsp;original Oblivion&nbsp;<code class=\"ui-markdown__inline-code ui-rtu7ee ui-1i9v5mb ui-1hhlpkd ui-6lrnw6 ui-115g5cq ui-odjx36 ui-1wd3ewq ui-hayvgc ui-eb7xqv ui-15bjb6t ui-1lldw8n ui-1mzt3pk md-inline-path-filename-like\"><span class=\"ui-markdown__inline-path-filename ui-1heor9g md-inline-path-filename\">.ess<\/span><\/code>&nbsp;files and Oblivion Remastered character saves before you generate&nbsp;<code class=\"ui-markdown__inline-code ui-rtu7ee ui-1i9v5mb ui-1hhlpkd ui-6lrnw6 ui-115g5cq ui-odjx36 ui-1wd3ewq ui-hayvgc ui-eb7xqv ui-15bjb6t ui-1lldw8n ui-1mzt3pk md-inline-path-filename-like\"><span class=\"ui-markdown__inline-path-filename ui-1heor9g md-inline-path-filename\">migrate.txt<\/span><\/code>&nbsp;or run&nbsp;<code class=\"ui-markdown__inline-code ui-rtu7ee ui-1i9v5mb ui-1hhlpkd ui-6lrnw6 ui-115g5cq ui-odjx36 ui-1wd3ewq ui-hayvgc ui-eb7xqv ui-15bjb6t ui-1lldw8n ui-1mzt3pk\">exec migrate.txt<\/code>:<\/p>\n<ul class=\"ui-markdown__list ui-78zum5 ui-dt5ytf ui-1ae8yn7 ui-13vk20g ui-1e8yfua ui-j7cesy ui-1bae07f\">\n<li class=\"ui-markdown__list-item ui--default-marker ui-exx8yu ui-1xpa7k ui-18d9i69 ui-1uhho1l ui-13faqbe ui-ez2fb\" data-md-list-item=\"\">Original:&nbsp;<code class=\"ui-markdown__inline-code ui-rtu7ee ui-1i9v5mb ui-1hhlpkd ui-6lrnw6 ui-115g5cq ui-odjx36 ui-1wd3ewq ui-hayvgc ui-eb7xqv ui-15bjb6t ui-1lldw8n ui-1mzt3pk\">Documents\\My Games\\Oblivion\\Saves<\/code><\/li>\n<li class=\"ui-markdown__list-item ui--default-marker ui-exx8yu ui-1xpa7k ui-18d9i69 ui-1uhho1l ui-13faqbe ui-ez2fb\" data-md-list-item=\"\">Remastered:&nbsp;<code class=\"ui-markdown__inline-code ui-rtu7ee ui-1i9v5mb ui-1hhlpkd ui-6lrnw6 ui-115g5cq ui-odjx36 ui-1wd3ewq ui-hayvgc ui-eb7xqv ui-15bjb6t ui-1lldw8n ui-1mzt3pk\">Documents\\My Games\\Oblivion Remastered\\Saved\\SaveGames<\/code><\/li>\n<\/ul>\n<p class=\"ui-markdown__paragraph ui-z80ra4 ui-uu7i3w ui-1nhcn8o ui-j7cesy ui-13faqbe ui-14l7nz5 ui-zboxd6 ui-19d5a1n ui-bpgzfc\">A few other gotchas:<\/p>\n<ul class=\"ui-markdown__list ui-78zum5 ui-dt5ytf ui-1ae8yn7 ui-13vk20g ui-1e8yfua ui-j7cesy ui-1bae07f\">\n<li class=\"ui-markdown__list-item ui--default-marker ui-exx8yu ui-1xpa7k ui-18d9i69 ui-1uhho1l ui-13faqbe ui-ez2fb\" data-md-list-item=\"\">Using the console disables achievements on that Remastered save<\/li>\n<li class=\"ui-markdown__list-item ui--default-marker ui-exx8yu ui-1xpa7k ui-18d9i69 ui-1uhho1l ui-13faqbe ui-ez2fb\" data-md-list-item=\"\">Running&nbsp;<code class=\"ui-markdown__inline-code ui-rtu7ee ui-1i9v5mb ui-1hhlpkd ui-6lrnw6 ui-115g5cq ui-odjx36 ui-1wd3ewq ui-hayvgc ui-eb7xqv ui-15bjb6t ui-1lldw8n ui-1mzt3pk\">exec migrate.txt<\/code>&nbsp;twice&nbsp;<span class=\"font-semibold\" data-streamdown=\"strong\">duplicates inventory<\/span><\/li>\n<li class=\"ui-markdown__list-item ui--default-marker ui-exx8yu ui-1xpa7k ui-18d9i69 ui-1uhho1l ui-13faqbe ui-ez2fb\" data-md-list-item=\"\"><code class=\"ui-markdown__inline-code ui-rtu7ee ui-1i9v5mb ui-1hhlpkd ui-6lrnw6 ui-115g5cq ui-odjx36 ui-1wd3ewq ui-hayvgc ui-eb7xqv ui-15bjb6t ui-1lldw8n ui-1mzt3pk\">setstage<\/code>&nbsp;can fire quest cinematics, freeze movement\/menus, and abort the rest of the batch<\/li>\n<li class=\"ui-markdown__list-item ui--default-marker ui-exx8yu ui-1xpa7k ui-18d9i69 ui-1uhho1l ui-13faqbe ui-ez2fb\" data-md-list-item=\"\">Keep a Remastered save from&nbsp;<em>before<\/em>&nbsp;<code class=\"ui-markdown__inline-code ui-rtu7ee ui-1i9v5mb ui-1hhlpkd ui-6lrnw6 ui-115g5cq ui-odjx36 ui-1wd3ewq ui-hayvgc ui-eb7xqv ui-15bjb6t ui-1lldw8n ui-1mzt3pk\">exec<\/code>&nbsp;so you can retry with&nbsp;<code class=\"ui-markdown__inline-code ui-rtu7ee ui-1i9v5mb ui-1hhlpkd ui-6lrnw6 ui-115g5cq ui-odjx36 ui-1wd3ewq ui-hayvgc ui-eb7xqv ui-15bjb6t ui-1lldw8n ui-1mzt3pk\">--no-quests<\/code><\/li>\n<\/ul>\n<p class=\"ui-markdown__paragraph ui-z80ra4 ui-uu7i3w ui-1nhcn8o ui-j7cesy ui-13faqbe ui-14l7nz5 ui-zboxd6 ui-19d5a1n ui-bpgzfc\">Not affiliated with Bethesda, ZeniMax, or Microsoft. Use at your own risk.<\/p>\n<h2 class=\"ui-markdown__heading ui-13ebx5f ui-x6cpbe ui-14l7nz5 ui-zboxd6 ui-2rll1g ui-1pz8kdr ui-1rrfizd ui-1qaq26d\">Building it with agentic AI<\/h2>\n<p class=\"ui-markdown__paragraph ui-z80ra4 ui-uu7i3w ui-1nhcn8o ui-j7cesy ui-13faqbe ui-14l7nz5 ui-zboxd6 ui-19d5a1n ui-bpgzfc\">I built this as a Python stdlib tool (no pip packages) and used agentic AI tools as a pair programmer: planning the parser, the FormID remapping, the console export, and the known-issue list around Remastered\u2019s&nbsp;<code class=\"ui-markdown__inline-code ui-rtu7ee ui-1i9v5mb ui-1hhlpkd ui-6lrnw6 ui-115g5cq ui-odjx36 ui-1wd3ewq ui-hayvgc ui-eb7xqv ui-15bjb6t ui-1lldw8n ui-1mzt3pk\">exec<\/code>&nbsp;behavior.<\/p>\n<p class=\"ui-markdown__paragraph ui-z80ra4 ui-uu7i3w ui-1nhcn8o ui-j7cesy ui-13faqbe ui-14l7nz5 ui-zboxd6 ui-19d5a1n ui-bpgzfc\">The interesting part was not \u201cAI wrote a save converter.\u201d It was working through why a converter is the wrong shape, then implementing the fallback that Remastered actually allows: a console batch applied onto a new character.<\/p>\n<p class=\"ui-markdown__paragraph ui-z80ra4 ui-uu7i3w ui-1nhcn8o ui-j7cesy ui-13faqbe ui-14l7nz5 ui-zboxd6 ui-19d5a1n ui-bpgzfc\">Human validation still mattered a lot here: binary save layout, plugin-index remapping, and in-game behavior after&nbsp;<code class=\"ui-markdown__inline-code ui-rtu7ee ui-1i9v5mb ui-1hhlpkd ui-6lrnw6 ui-115g5cq ui-odjx36 ui-1wd3ewq ui-hayvgc ui-eb7xqv ui-15bjb6t ui-1lldw8n ui-1mzt3pk\">exec<\/code>&nbsp;(especially quest scripts that freeze the player before&nbsp;<code class=\"ui-markdown__inline-code ui-rtu7ee ui-1i9v5mb ui-1hhlpkd ui-6lrnw6 ui-115g5cq ui-odjx36 ui-1wd3ewq ui-hayvgc ui-eb7xqv ui-15bjb6t ui-1lldw8n ui-1mzt3pk\">enableplayercontrols<\/code>&nbsp;runs).<\/p>\n<h2 class=\"ui-markdown__heading ui-13ebx5f ui-x6cpbe ui-14l7nz5 ui-zboxd6 ui-2rll1g ui-1pz8kdr ui-1rrfizd ui-1qaq26d\">Try it<\/h2>\n<p class=\"ui-markdown__paragraph ui-z80ra4 ui-uu7i3w ui-1nhcn8o ui-j7cesy ui-13faqbe ui-14l7nz5 ui-zboxd6 ui-19d5a1n ui-bpgzfc\">The project is on GitHub: <a class=\"ui-markdown__link ui-t0psk2 ui-krqix3 ui-1ypdohk ui-ng2saa ui-12oqio5 ui-1iyyiug ui-j8oexa ui-5k8d2m ui-yh5bb9 ui-19bzpp3 ui-eaf4i8 ui-j0a0fe ui-13faqbe ui-xpcyif ui-htr15d ui-1kzln4z ui-1sonb58 ui-s2xxs2 ui-7pq1vu ui-6tor67 ui-l1v4ol ui-16xb0gl ui-8glhz7\" draggable=\"false\" href=\"https:\/\/github.com\/huhx0015\/OblivionOG_to_Remastered_Character_Migration\" target=\"_blank\" rel=\"noopener noreferrer\" data-chip-variant=\"link\"><i class=\"ui-icon ui-1j61x8r ui-etm3q0 ui-1tachi3 ui-1qt6sjn ui-o5v014 ui-3nfvp2 ui-6s0dn4 ui-l56j7k ui-1heor9g ui-1oai4fc ui-higkf7 ui-xymvpz ui-krqix3 ui-1403hyl ui-2b8uid ui-6mezaz ui-vmahel ui-lh3980 ui-87ps6o ui-1winvzj ui-1q5xvfy ui-1ehclkv ui-1yj7g93 ui-1u4itkb cursor-icon\" data-icon-name=\"logo-github\" data-size=\"sm\" aria-hidden=\"true\"><\/i>https:\/\/github.com\/huhx0015\/OblivionOG_to_Remastered_Character_Migration<\/a><\/p>\n<p class=\"ui-markdown__paragraph ui-z80ra4 ui-uu7i3w ui-1nhcn8o ui-j7cesy ui-13faqbe ui-14l7nz5 ui-zboxd6 ui-19d5a1n ui-bpgzfc\">From the repo folder:<\/p>\n<div class=\"composer-message-codeblock\">\n<pre><code>python migrate.py migrate \"C:\\Users\\You\\Documents\\My Games\\Oblivion\\Saves\\Save 12.ess\" --output migrate.txt<\/code><\/pre>\n<\/div>\n<p class=\"ui-markdown__paragraph ui-z80ra4 ui-uu7i3w ui-1nhcn8o ui-j7cesy ui-13faqbe ui-14l7nz5 ui-zboxd6 ui-19d5a1n ui-bpgzfc\">Copy&nbsp;<code class=\"ui-markdown__inline-code ui-rtu7ee ui-1i9v5mb ui-1hhlpkd ui-6lrnw6 ui-115g5cq ui-odjx36 ui-1wd3ewq ui-hayvgc ui-eb7xqv ui-15bjb6t ui-1lldw8n ui-1mzt3pk md-inline-path-filename-like\"><span class=\"ui-markdown__inline-path-filename ui-1heor9g md-inline-path-filename\">migrate.txt<\/span><\/code>&nbsp;into:<\/p>\n<div class=\"composer-message-codeblock\">\n<pre><code>&lt;Steam&gt;\\steamapps\\common\\Oblivion Remastered\\OblivionRemastered\\Binaries\\<\/code><\/pre>\n<\/div>\n<p class=\"ui-markdown__paragraph ui-z80ra4 ui-uu7i3w ui-1nhcn8o ui-j7cesy ui-13faqbe ui-14l7nz5 ui-zboxd6 ui-19d5a1n ui-bpgzfc\">Start a new Remastered character, open the console, and run:<\/p>\n<div class=\"composer-message-codeblock\">\n<pre><code>exec migrate.txt<\/code><\/pre>\n<\/div>\n<p class=\"ui-markdown__paragraph ui-z80ra4 ui-uu7i3w ui-1nhcn8o ui-j7cesy ui-13faqbe ui-14l7nz5 ui-zboxd6 ui-19d5a1n ui-bpgzfc\"><code class=\"ui-markdown__inline-code ui-rtu7ee ui-1i9v5mb ui-1hhlpkd ui-6lrnw6 ui-115g5cq ui-odjx36 ui-1wd3ewq ui-hayvgc ui-eb7xqv ui-15bjb6t ui-1lldw8n ui-1mzt3pk\">exec<\/code>&nbsp;only looks in&nbsp;<code class=\"ui-markdown__inline-code ui-rtu7ee ui-1i9v5mb ui-1hhlpkd ui-6lrnw6 ui-115g5cq ui-odjx36 ui-1wd3ewq ui-hayvgc ui-eb7xqv ui-15bjb6t ui-1lldw8n ui-1mzt3pk\">OblivionRemastered\\Binaries\\<\/code>. Putting the file next to the&nbsp;<code class=\"ui-markdown__inline-code ui-rtu7ee ui-1i9v5mb ui-1hhlpkd ui-6lrnw6 ui-115g5cq ui-odjx36 ui-1wd3ewq ui-hayvgc ui-eb7xqv ui-15bjb6t ui-1lldw8n ui-1mzt3pk md-inline-path-filename-like\"><span class=\"ui-markdown__inline-path-filename ui-1heor9g md-inline-path-filename\">.exe<\/span><\/code>&nbsp;in&nbsp;<code class=\"ui-markdown__inline-code ui-rtu7ee ui-1i9v5mb ui-1hhlpkd ui-6lrnw6 ui-115g5cq ui-odjx36 ui-1wd3ewq ui-hayvgc ui-eb7xqv ui-15bjb6t ui-1lldw8n ui-1mzt3pk\">Binaries\\Win64\\<\/code>&nbsp;does nothing.<\/p>\n<p class=\"ui-markdown__paragraph ui-z80ra4 ui-uu7i3w ui-1nhcn8o ui-j7cesy ui-13faqbe ui-14l7nz5 ui-zboxd6 ui-19d5a1n ui-bpgzfc\">If you try it, back up your saves first, and treat it as a character-build transplant, not a continuation of the same Cyrodiil.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>When I heard that there was no way to migrate saves from the original Oblivion, I was a bit disappointed. The real changes in Remastered were the graphics overhaul and running on Unreal Engine 5, with the same quests underneath. The original Oblivion game files are even used as a<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"ngg_post_thumbnail":0,"footnotes":""},"categories":[534,7],"tags":[662,663,661,664,666,665],"class_list":["post-2909","post","type-post","status-publish","format-standard","hentry","category-coding","category-gaming","tag-elder-scrolls","tag-elder-scrolls-iv","tag-oblivion","tag-oblivion-remastered","tag-save-migration","tag-scripts"],"_links":{"self":[{"href":"https:\/\/www.yoonhuh.com\/blog\/wp-json\/wp\/v2\/posts\/2909","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.yoonhuh.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.yoonhuh.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.yoonhuh.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.yoonhuh.com\/blog\/wp-json\/wp\/v2\/comments?post=2909"}],"version-history":[{"count":3,"href":"https:\/\/www.yoonhuh.com\/blog\/wp-json\/wp\/v2\/posts\/2909\/revisions"}],"predecessor-version":[{"id":2912,"href":"https:\/\/www.yoonhuh.com\/blog\/wp-json\/wp\/v2\/posts\/2909\/revisions\/2912"}],"wp:attachment":[{"href":"https:\/\/www.yoonhuh.com\/blog\/wp-json\/wp\/v2\/media?parent=2909"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.yoonhuh.com\/blog\/wp-json\/wp\/v2\/categories?post=2909"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.yoonhuh.com\/blog\/wp-json\/wp\/v2\/tags?post=2909"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}