{"id":8,"date":"2023-01-24T01:37:52","date_gmt":"2023-01-24T00:37:52","guid":{"rendered":"http:\/\/localhost\/wordpress\/?p=8"},"modified":"2023-02-03T15:51:43","modified_gmt":"2023-02-03T14:51:43","slug":"welcome-to-sakis-romhacking-dumpsterfire","status":"publish","type":"post","link":"http:\/\/localhost\/wordpress\/2023\/01\/24\/welcome-to-sakis-romhacking-dumpsterfire\/","title":{"rendered":"Welcome to Saki’s “Romhacking” Dumpsterfire!"},"content":{"rendered":"\n

Hello there. If you’re reading this without knowing me yet, I’m Saki<\/strong>, a (as of this post) 21 year old French guy with a fair amount of knowledge when it comes to programming (C, Java, Python<\/em> and even a slight amount of assembly<\/em>) and, most importantly, someone who’s really <\/em>into video game music<\/a>. Why specify that for a blog (supposedly) about romhacking <\/em>? The answer is easier than you might think!<\/p>\n\n\n\n

First of all, a lot of games tend to not have an official soundtrack album at all<\/strong>, no matter how famous the compositions might be. Take Ecco The Dolphin: Defender Of The Future<\/em><\/a> as an example: the game is widely-known for its gorgeous music made by Tim Follin & Attila Heger<\/em><\/strong>, yet we are still to have an official release, truly a shame. <\/p>\n\n\n\n

\"\"
130K views and still no official release smh smh<\/em><\/figcaption><\/figure>\n\n\n\n

Secondly, some games had a soundtrack<\/em> released, but it was not faithful to how it sounded ingame. This is a common occurence with the old releases, such as the Namco GSM collections, or even the obscure Amiga shoot’em’up Apidiya <\/a>(how Techno Party sounds on the album<\/a> vs how it sounds ingame<\/a>, not quite the same).<\/p>\n\n\n\n

\"\"
Notice the “Arrangement” classification.<\/em><\/figcaption><\/figure>\n\n\n\n

<\/p>\n\n\n\n

As such, it is common for game music to be gameripped<\/em>,a process during which we extract a game’s music straight from the files, in order to have the faithful sound. <\/p>\n\n\n\n

This process is rarely a straightforward one, especially when it comes ot old and\/or console games, which almost always use either archives or proprietary audio codecs , sometimes to optimize on space, sometimes to obfuscate the data, often both<\/em>. <\/p>\n\n\n\n

\"\"
Do I look like a know what an RPGMVO is ?<\/em><\/figcaption><\/figure>\n\n\n\n

That’s when the romhacking<\/em>\/reverse-engineering<\/em> part comes in! Since the used file formats are proprietary, and usually not readable as is, a great amount of effort has been put by numerous people through time in order to document said formats, and come up with tools<\/em> that can read the data, and even convert it to more common formats. <\/p>\n\n\n\n

Take the Super Nintendo<\/em>‘s .SPC <\/a><\/em>format for example, which is conceptually not unlike a .MIDI <\/em>file (don’t take my words on that, I’m not a musician nor a sound engineer). The format has been documented so much that it is now possible to read the audio on your own computer by using one of the dozens of available tools<\/em> <\/a>, even if you don’t even own<\/em> an SNES!<\/p>\n\n\n\n

\"\"
And that’s not even all the .SPC decoders you can find, only the ones listed on SNESMusic.org!<\/em><\/figcaption><\/figure>\n\n\n\n

<\/p>\n\n\n\n

Lastly, I felt the need to mention I’m French<\/em>. Why that ? Once again, the answer is not hard! <\/p>\n\n\n\n

When I play some games, mostly English ones but sometimes Japanese as well ( I don’t speak that language unfortunately), the thought “hmmmm I wish this was translated in French”<\/em> often comes to my mind. For Japanese games with voice acting, I also often think about making undubbed<\/em> versions on their western counterparts (i.e modifying the game to use the japanese voices as it wasn’t a standard until the late-PS3<\/em> era). <\/p>\n\n\n\n

Because of that, I’ve looked unto various games, various file formats, by using a plethora of tools available on ZenHax<\/a>, Xentax<\/a>, ROMhacking.ne<\/a><\/em>t<\/em><\/a> and whatnot, sometimes with mitigated success, but mostly with complete failure at the end of the day.<\/p>\n\n\n\n

\"\"
My attempt at porting the French<\/a> OMORI patch to the Switch version, notice how some text doesn’t fit and how the font is messed up.<\/em><\/figcaption><\/figure>\n\n\n\n

<\/p>\n\n\n\n

However! All is not to throw away! Even if I didn’t manage to obtain the results I wanted, I still got to familiarize myself with a plethora of romhacking<\/em> tools that might end being of use someday, either by myself (once I’ve acquired enough patience and experience), or someone else, who might be more competent, more patient, or simply more stubborn than me.<\/p>\n\n\n\n

\"\"
Behold, my “Dreamcast” folder after my (not very fruitful) attempt at porting the JP Space Channel 5 voices to the PAL version.<\/em><\/figcaption><\/figure>\n\n\n\n

<\/p>\n\n\n\n

Such is the purpose of this blog: talking about some tools I used, the way they are supposed to be used and what can be done with them. Prepare for some action <\/strong>(and some ranting), we’re going to break through<\/strong> the formats! (mostly with preexisting tools, but the day might come when I’ll reverse a format by myself…)<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"

A short story about me, my passions, and the purpose of this blog.<\/p>\n","protected":false},"author":1,"featured_media":10,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[3],"tags":[4],"_links":{"self":[{"href":"http:\/\/localhost\/wordpress\/wp-json\/wp\/v2\/posts\/8"}],"collection":[{"href":"http:\/\/localhost\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/localhost\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/localhost\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/localhost\/wordpress\/wp-json\/wp\/v2\/comments?post=8"}],"version-history":[{"count":9,"href":"http:\/\/localhost\/wordpress\/wp-json\/wp\/v2\/posts\/8\/revisions"}],"predecessor-version":[{"id":119,"href":"http:\/\/localhost\/wordpress\/wp-json\/wp\/v2\/posts\/8\/revisions\/119"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/localhost\/wordpress\/wp-json\/wp\/v2\/media\/10"}],"wp:attachment":[{"href":"http:\/\/localhost\/wordpress\/wp-json\/wp\/v2\/media?parent=8"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/localhost\/wordpress\/wp-json\/wp\/v2\/categories?post=8"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/localhost\/wordpress\/wp-json\/wp\/v2\/tags?post=8"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}