{"guid":"84d92d03-a862-5d30-9c0c-b5573ababe06","title":"Automated Game Hacking: Adding Procedural Generation to a Classic RPG","subtitle":null,"slug":"emf2026-100-1-automated-game-hacking","link":"https://www.emfcamp.org/schedule/2026/100-automated-game-hacking","description":"Ever wanted to replay your favorite game like it's the first time? We'll dive into the unique game design and balance challenges I encountered while building a randomizer for Final Fantasy I: Dawn of Souls. Game randomizers use procedural generation to automatically create a rom hack. I'll also break down how I reverse-engineered the game's scripting language to transform it into a true open-world adventure.\n\nLicensed to the public under https://creativecommons.org/licenses/by-sa/4.0/","original_language":"eng","persons":["Nikki"],"view_count":50,"promoted":false,"date":"2026-07-18T11:00:00.000+02:00","release_date":"2026-07-18T00:00:00.000+02:00","updated_at":"2026-07-31T16:15:08.311+02:00","tags":["10001","2026","emf2026","talk","Arcade Workshop","emf2026-eng","Day 3"],"length":1520,"duration":1520,"thumb_url":"https://static.media.ccc.de/media/events/emf/2026/10001-84d92d03-a862-5d30-9c0c-b5573ababe06.jpg","poster_url":"https://static.media.ccc.de/media/events/emf/2026/10001-84d92d03-a862-5d30-9c0c-b5573ababe06_preview.jpg","timeline_url":"https://static.media.ccc.de/media/events/emf/2026/10001-84d92d03-a862-5d30-9c0c-b5573ababe06.timeline.jpg","thumbnails_url":"https://static.media.ccc.de/media/events/emf/2026/10001-84d92d03-a862-5d30-9c0c-b5573ababe06.thumbnails.vtt","frontend_link":"https://media.ccc.de/v/emf2026-100-1-automated-game-hacking","url":"https://api.media.ccc.de/public/events/84d92d03-a862-5d30-9c0c-b5573ababe06","conference_title":"Electromagnetic Field 2026","conference_url":"https://api.media.ccc.de/public/conferences/emf2026","related":[],"recordings":[{"length":1520,"mime_type":"video/mp4","language":"eng","filename":"emf2026-10001-eng-Automated_Game_Hacking_Adding_Procedural_Generation_to_a_Classic_RPG_hd.mp4","state":"new","folder":"h264-hd","high_quality":true,"width":1920,"height":1080,"updated_at":"2026-07-18T14:01:02.247+02:00","label":"eng 1080p","size":174,"recording_url":"https://cdn.media.ccc.de/events/emf/2026/h264-hd/emf2026-10001-eng-Automated_Game_Hacking_Adding_Procedural_Generation_to_a_Classic_RPG_hd.mp4","url":"https://api.media.ccc.de/public/recordings/102537","event_url":"https://api.media.ccc.de/public/events/84d92d03-a862-5d30-9c0c-b5573ababe06","conference_url":"https://api.media.ccc.de/public/conferences/emf2026"},{"length":1520,"mime_type":"video/mp4","language":"eng","filename":"emf2026-10001-eng-Automated_Game_Hacking_Adding_Procedural_Generation_to_a_Classic_RPG_sd.mp4","state":"new","folder":"h264-sd","high_quality":false,"width":720,"height":576,"updated_at":"2026-07-18T14:48:17.471+02:00","label":"eng 576p","size":59,"recording_url":"https://cdn.media.ccc.de/events/emf/2026/h264-sd/emf2026-10001-eng-Automated_Game_Hacking_Adding_Procedural_Generation_to_a_Classic_RPG_sd.mp4","url":"https://api.media.ccc.de/public/recordings/102569","event_url":"https://api.media.ccc.de/public/events/84d92d03-a862-5d30-9c0c-b5573ababe06","conference_url":"https://api.media.ccc.de/public/conferences/emf2026"},{"length":1520,"mime_type":"audio/opus","language":"eng","filename":"emf2026-10001-eng-Automated_Game_Hacking_Adding_Procedural_Generation_to_a_Classic_RPG_opus.opus","state":"new","folder":"opus","high_quality":false,"width":0,"height":0,"updated_at":"2026-07-18T15:02:02.662+02:00","label":"eng","size":15,"recording_url":"https://cdn.media.ccc.de/events/emf/2026/opus/emf2026-10001-eng-Automated_Game_Hacking_Adding_Procedural_Generation_to_a_Classic_RPG_opus.opus","url":"https://api.media.ccc.de/public/recordings/102574","event_url":"https://api.media.ccc.de/public/events/84d92d03-a862-5d30-9c0c-b5573ababe06","conference_url":"https://api.media.ccc.de/public/conferences/emf2026"},{"length":1520,"mime_type":"audio/mpeg","language":"eng","filename":"emf2026-10001-eng-Automated_Game_Hacking_Adding_Procedural_Generation_to_a_Classic_RPG_mp3.mp3","state":"new","folder":"mp3","high_quality":false,"width":0,"height":0,"updated_at":"2026-07-18T15:02:21.167+02:00","label":"eng","size":23,"recording_url":"https://cdn.media.ccc.de/events/emf/2026/mp3/emf2026-10001-eng-Automated_Game_Hacking_Adding_Procedural_Generation_to_a_Classic_RPG_mp3.mp3","url":"https://api.media.ccc.de/public/recordings/102575","event_url":"https://api.media.ccc.de/public/events/84d92d03-a862-5d30-9c0c-b5573ababe06","conference_url":"https://api.media.ccc.de/public/conferences/emf2026"},{"length":1520,"mime_type":"video/webm","language":"eng","filename":"emf2026-10001-eng-Automated_Game_Hacking_Adding_Procedural_Generation_to_a_Classic_RPG_webm-sd.webm","state":"new","folder":"webm-sd","high_quality":false,"width":720,"height":576,"updated_at":"2026-07-18T15:15:32.302+02:00","label":"eng 576p","size":59,"recording_url":"https://cdn.media.ccc.de/events/emf/2026/webm-sd/emf2026-10001-eng-Automated_Game_Hacking_Adding_Procedural_Generation_to_a_Classic_RPG_webm-sd.webm","url":"https://api.media.ccc.de/public/recordings/102580","event_url":"https://api.media.ccc.de/public/events/84d92d03-a862-5d30-9c0c-b5573ababe06","conference_url":"https://api.media.ccc.de/public/conferences/emf2026"},{"length":1520,"mime_type":"video/webm","language":"eng","filename":"emf2026-10001-eng-Automated_Game_Hacking_Adding_Procedural_Generation_to_a_Classic_RPG_webm-hd.webm","state":"new","folder":"webm-hd","high_quality":true,"width":1920,"height":1080,"updated_at":"2026-07-18T15:18:05.927+02:00","label":"eng 1080p","size":175,"recording_url":"https://cdn.media.ccc.de/events/emf/2026/webm-hd/emf2026-10001-eng-Automated_Game_Hacking_Adding_Procedural_Generation_to_a_Classic_RPG_webm-hd.webm","url":"https://api.media.ccc.de/public/recordings/102583","event_url":"https://api.media.ccc.de/public/events/84d92d03-a862-5d30-9c0c-b5573ababe06","conference_url":"https://api.media.ccc.de/public/conferences/emf2026"}]}