For 30+ years, console video games have captured the imagination of children and adults alike. This presentation describes how a childhood love of video games can translate into a love of programming and a general understanding of low-level computing through the hobby known as ROM hacking. We’ll also review everything you need to know in Ruby for it to be your ROM hacking language of choice.
Over 13 years ago I learned to program as I was motivated to write tools that would allow me and my friends to more easily translate the ROMs of Japanese Famicom and Super Famicom games that had never been released in English (for our NES and Super NES.) Through ROM hacking, my love of video games helped lay the groundwork for my college education and career in software development. As Ruby became my language of choice professionally, I also began writing all my ROM hacking tools in Ruby as well.
Even for experienced developers who have cut their teeth on higher-level programming languages like Ruby and web frameworks like Rails, an overview of ROM hacking with Ruby provides a fun opportunity to understand the basics of some important lower-level computing concepts:
Pointers, stack, memory pages, etc.
Binary file handling.
Binary file format concepts.
Writing simple command line tools.
Assembler and binary disassembly.
It will be fun to review these concepts in the context of video games and ROM hacking, but they’re also broadly applicable and a level-up for any developer.