|View code on Gitlab|
Game consoles were something that were always magical as a kid. You could take a Playstation, or Gamecube disk and put it into a console, turn it on and experience lots of different stories and worlds via these mediums that we call games. I never really thought about cartridge games very much, as it seems that those were made specifically to work with what ever machines they were intended for, and my brain never wondered about what made Perfect Dark work when you put the cardridge in the console.
But in the case of disk-based games I bacame very curious. A normal disk was a something a computer could read, but when I put the game disk in my computer, all the computer could do was display a list of files. It couldn't run anything or play anything. But when you take the same disk and put it in the Playstation and turn the power on, you can boot up and play Resident Evil 2. So it really made me curious of what was the difference was that made the same files playable on the Playstation and not playable on my PC.
So fast forward, until university. After high school I had started teaching myself programming and went to a university in the hopes that I could learn more about game development. I should have probably done more homework because the university I went to was beyond-worthless and looking back I can only imagine why I stuck around until graduation. During university is when PSO2 came out, and I had started translating the story and posting it on forums to help the Phantasy Star community experience the game because of the series' less than stellar track record for non-Japan support.
And it was then when I confronted again with files. The game PSO2 was made up a series of files. Some of those files were text that could be decypted, decompressed, translated to English and then compressed and encrypted again for the game to be able to be able to display English. It was quite exhilarating to be able to see text that I had transalted and distribute that so that other people could enjoy the game. Admittedly, I think I went a little too far on a power trip when I realized I could make the characters say dirty-words and got complaints from people who said they play the game with their little siblings or cousins. But considdering the lewd direction of that game took, I don't think young kids should be playing anyways.
But that got me wondering about game files again. Okay, so if PSO2 is made up of these files, what was the structure of PSO, and how did that game work? I knew of some people who had been able to rip and display some simple models from the game, so I started looking into other's people code to see if I could find any hints. I learned that I could use different tools, or chain some together. And before I knew it I was writing python to write some batch jobs, and then looking into the code when something didn't work. And I started to translate all of the different tools into something I could work with. And then I started reading the documentation from the Dreamcast SDK over and over again to look for hints. And then the header files from the Dreamcast SDK when I ran out of hints in the documentation.
All of the built up and extreme sense of curiousity and admiration. One thing that I always found amazing was that it was often the short comings of consoles that lead to artistic decisions. For example Metal Gear became a stealth game based on trying to keep down the number of sprites on screen, and the loading doors in Resident Evil were a method of trying to hide load times from the disk. So reading the documentation from the Dreamcast provided some insite into how much work, tallent and engineering went into creating these machines dedicated to gaming.
DashGL is a project with two goals. One is to provide open source document and open source tools for viewing and exporting 3d models from retro game consoles. And second is to try and use open source as a way to emulate what it is like programming for an console. Specifically this site is dedicated towards providing tutorials for creating 3d programs on Linux for the Raspberry Pi using OpenGL and the C programming language.
Signed Kion (Benjamin Collins)