The new clear bolg
There are many variations of passages of Lorem Ipsum available, but the majority. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum mattis felis vitae risus pulvinar tincidunt.
A SEGA Genesis demake of the 2013 webgame HUGPUNX by merritt k. Built with Stephane Dallongeville's SGDK library in C and recreated all assets from scratch.
In the mid 2010s, I found indie web game HUGPUNX by Ontario based developer merritt k. The premise was simple for the self-described “fluoro-pink queer urban hugging simulator”[1], various folk dropped from the sky and when they stopped on the playing field: go hug them. This was a riff from a prior indie game of the same style, PUNKSNOTDEAD, using a respectively different punching focused premise. Near the end of that decade, presumably as they curated content through their personal journey, all traces of the game had been removed from the web. Being excluded from archival by the Wayback Machine, only a couple Youtube Let's Play videos are all that remain of merritt's HUGPUNX.
Early on in 2020/2021, I had begun taking renewed interest in the SEGA Genesis platform. I played it when younger and had affectionate memories for the system. Retro game development was a very appealing stick to scratch my creative itch, but for a while I did not justify involving myself further without a suitable goal to persue with it. That's where HUGPUNX came back. It isn't a particularly lenghty game at taking as much time as the one track it played in entirety, but it was rewarding and endearing to me.
With the intersection of these two passions, I found that I could not let this little webgame from 2013 dissappear from the world. That began my journey to preserve this nugget of internet interest - in the form of a SEGA Genesis 16-bit de-make[2].
Unlike modern game engines, the Genesis works wholly different on the Motorola 68000 16/32-bit CISC microprocessor, the Zilog Z80 8-bit microprocessor, and was traditionally programmed in Assembly. Fortunately there have been tools created in the last decade to modernize development with the C language. Stephane Dallongeville's SGDK library[3] is what I learned and used to put everything together onto the platform. During development I also used the BlastEm emulator, which boasts the most techinically accurate game emulation to console hardware.
While practicing various tutorials, my first step in making this project come to life was to gather what I could of the game's graphics.
Since the original web game had been taken offline, my best resource for graphics were two YouTube Let's Play videos[4]. I spent several weeks a couple hours or half hours at a time first getting screenshots of the YouTube videos to identify all the different sprites and then all the different frames and positions of them. Armed with this screenshot library, I recreated them pixel for pixel with the pixel art utility Aseprite.
Once I made a good start with the graphics portion, I began considering how to translate the music used. HUGPUNX plays the song hold me tight by SCRAPS[5]. I found their song distributed on Bandcamp to reference and navigate more easily than on the YouTube videos of the gameplay. I used DefleMask[6], a console emulating Music Tracker to reproduce a chiptune version of the song.
The final revision of these assets are all available on my Github repository.
The third leg of this development tripod with visuals and audio was the game programming. Visual Studio Code was used for programming and implementing the SGDK. Having learned enough of the console to program for it, what I had not yet learned was how to structure different parts of the game to happen one after the other. Knowing how to display screens was a known solution, but when to display different elements was my new challenge. I decided to program a rudimentary State Machine. This would pass different states around starting with the main title, and transition to other states depending on time elapsed or by user input. By defining states, I could also determine when to load and when to unload assets from memory.
With this hurtle solved, my last big problem was how to implement animation. I determined that I could specify when events would take place during each respective state by reading a frame-counting variable and specifying a switch
/ case
table for when each keyframe would take place.
The graphics, audio, and game programming, after the initial start, were all built up gradually over time together. Having a top level plan kept each step mostly organized and completable. There were however a few incomplete steps that I chose to walk away from while still having a functioning game.
My aim for this project was to recreate and make available HUGPUNX to the world and in that I have succeeded. To reach that outcome, I have learned and made great use of software and tools I have not used much more than playing with, before.
Recreating HUGPUNX for the SEGA Genesis became a transformative journey that expanded my skills well beyond game development. Meticulous pixel art creation in Aseprite practiced my attention to detail and patience, applicable not only in graphic design but also across various creative ventures. Likewise, transcribing 'hold me tight' into a chiptune version with DefleMask opened the door to music creation and sound engineering, growing appreciation for the labour of quality auditory aesthetics.
On the programming front, implementing a state machine from scratch and solving animation challenges boosted my programming skills and problem-solving capabilities. These skills aren't confined to game development but extend into software engineering and project management. The driving force behind this project was a relentless dedication to preserving a piece of internet history, it also resulted in showcasing the power of determination and commitment in achieving ambitious goals.