A Race to Bottom… of Sound Chip Specs [Updated]

Update 3/18/2013 (6:21 PM):

EVERYTHING IS SUPER

HAVE A NICE DAY!

Well, it didn’t take long for things to go back to normal.  Maybe I should’ve held off posting this just for a little while longer.  Oh well.

As a bonus, here’s the coloured image of Pohena I meant to show earlier:

“I’m not a prize, you idiot.”

W-well, I didn’t mean it like that.   Uh… awk-ward.

TECHNICAL DIFFICULTIES

PLEASE STAND BY

Well, it seems that in my attempt to reorganize the files on my “website”, I did something that caused all the images on this blog to break (Dammit, I’m a computer scientist, not a web administrator!).  I’m in the process of getting that fixed.

In the meantime, let talk about something that doesn’t involve anything hosted on my site.

In my introductory post of Gonna Catcha, I posted this music sample from the project:

It was my attempt at emulating the style of music from 80s arcade games, without actually knowing how it was actually done.  Being someone who spent 3 years working on a master’s thesis on computer-generated sound,  this just simply wouldn’t do.  Nope, nope, nope.avi.

As with the graphics, I turned to Pac-Man  for inspiration:


The game used a chip called the Namco WSG to generate sound.  It had 3 channels, each could play one of the 8 waveforms stored in 256 bytes of external memory (PROM).  These waveforms could be customized to the sound guy’s heart’s content, which resulted in the highly-memorable audio of games such as Pac-Man.

This also stands in contrast to early PCs and early home consoles that came around the same time as or after it.  Although some of them did allow custom waveforms either intentionally or via programming exploits, they mainly relied on programmable sound generators (PSG) that only played preset waveforms to generate sound.  Some examples are (off the top of my head):

  • AY-3-9810 – found on earlier models of MSX computers
  • MOS Technology 6581/8580 (SID) – found on the Commodore 64
  • Ricoh 2A03/2A07 – found the NES
For comparison, listen to the NES port of Pac-Man:
Even though the sound generation of these chips weren’t as sophisticated (well, the SID was sophisticated in other ways), it didn’t stop them from being popular even to this day, even more than these old arcade chips.
Enough digression, time for the main event.  After applying the knowledge above, I have created the following early-80s-style arcade-type music:

Track list:  Donum Start ~ Donum Level ~ Donum Defeat ~ Pohena Start ~ Pohena Level ~ Pohena Defeat

I couldn’t find a way to generate 4-bit samples; everything I had to work with had a minimum bit resolution of 8 bits and the bitcrushers (a digital audio effect that reduces the number of bits used in an audio signal) I tried didn’t produce the desired results.  So essentially, I doubled the amount of pretend PROM on my pretend arcade board and used 8-bit samples.  Otherwise, I’m satisfied with the result, at least for now.  Personally, I find both “Defeat” tracks to be quite funny.

Copyright © Quadolor Games. All rights reserved.

I’ve been trying to work for the past week and all I got was this lousy post title.

It’s been a slow week.

I’ve been doing other things in the scary, mystical world known as “outside” that has left me feeling a bit exhausted.  In addition, coding on the Gonna Catcha has temporarily been halted due to the reports I’ve read on Game Maker: Studio-related forums. The latest update broke a lot of people’s projects, namely their games have stopped running after being compiled, similar to the symptoms my projects had last week.  My project only broke once for a different reason, but it was fixed easily.  YoYoGames has suggested rolling back on the software to the previous version for now until they roll out another update.  Since I don’t want my project to break again like last time, I’m still on the fence regarding whether to try the rollback solution or just wait until this whole thing blows over.

Well in the meantime, maybe I can dredge up something to show.

Hmm…

Well, here are some concept sprites for the spirits:

Good
🙁 :  )   -_-   😀   😮   x_x   >_<
Evil (a.k.a., troublesome, vengeful, misunderstood)

>:(   :O   D:<   %P   J:|   x_x   >_<

And here’s a screenshot of the last build of the game:

“A strange cloud is coming from the North. I’m scared!”
(* A cookie for who knows where that’s from)

It might be hard to see from a still image, but the latest build allows the player characters to shoot evil spirits, with different outcomes.  I’ll make a proper video in the future.

Copyright © Quadolor Games. All rights reserved.

Fighting file corruption and tightening up graphics

One of the biggest annoyances I face when coding something is when your program suddenly stops working for no apparent reason.  It happened this weekend when I was working on Gonna Catcha.

I was just going abut my usual business when all of a sudden the game would no longer run after compiling.  My guess was that the project got corrupted somehow, so I decided to make it anew.  GameMaker: Studio‘s ability to easily transfer resources between projects and the fact that the projects themselves are just large collections of image, audio and XML files made this relatively painless.

In the graphical department, I made some major changes.  Not being much of an animator, I had a lot of trouble doing the side walk cycles for each character.  As of my last post, I had something that looked like walking, but it still looked awkward.  After reading this tutorial (which I had previously encountered during my undergraduate studies in game development in the days of yore), I realized that I was missing a “Passing” frame in the walk cycle, and that I made it overly complicated.  So after much tweak, this is the end result:

I haven’t even finished Level 3 and I’ve already tightened up those graphics a little bit.

You may also notice two other changes in the above image: 1) I reduced the amount of arm swinging in the gun-away walk cycle.  I think I’ll reserve that amount of swag for a special occasion :), and 2) After doing a bit of research on the video capabilities of old arcade games (read: Pac-Man, mainly here and here), I’ve modified all the sprite palettes so that instead of each having 4 colours from a 16-colour palette, i.e, this:

I think I need to fix my graphics drivers.
(Source: Wikipedia)

They each have 4 colours from a 256-colour palette, i.e. this:

Ah, 256-colour.  My arch-nemesis in Microsoft Paint back in the 90s. Still dithering?
(Source: Wikipedia)

That should make things a little more, uh, colourful.  Yeah…

Before I finish this, I want to share a few interesting articles and whatnot I came across as I was doing research on ancient video game graphics.  I’ve already introduced three of them above:  a tutorial in animating a walk cycle: idleworm: animation tutorial – walk cycle part 1; and the two articles about the hardware used in Pac-Man machines:  Pacman hardware and Aaron’s MAME Memories Part 3.

Some other things I’ve encountered are this handy Color Bit Depth Reducer, which converts 24-bit TrueColor RGB or web hex values into the nearest values in other bit-depths and back again, and this old but free e-book about game graphics:  Designing Arcade Computer Game Graphics.

Hey, I can’t believe we got jobs doing this.
(Not intended for residents of anywhere.  Offer void in Nebraska.)
Copyright © Quadolor Games. All rights reserved.

Gonna Catcha: In-Game Testing

Status report:

Here’s some in-game test footage of Gonna Catcha, featuring Donum Dono as the test subject:

The video shows some tests on changing between animations depending on the state of the player:
  • Gun out or holstered: 2 states
  • Walking or standing:  2 states
  • Facing direction:  4 states
  • Total combinations:  16 states
It also shows some projectiles and the death sequence, which I will never get tired off (*Not a guarantee, I guarantee.)  You may have noticed that Donum sometimes jumps in position whenever he hits a wall.  That’s just my squeeze-the-player-around-the-corner code that still has some bugs to work out.  At least it’s better than what I had initially:

Outside of coding and pushing pixels, I’ve cleaned up and coloured in the sketch of Donum from my last post.  Now he’s no longer confined in a 64-pixel prison.

“*gasp* I’ve been vectored and coloured!”

I also made him the temporary face of my YouTube channel and Twitter:

“Uh, I don’t feel right about accepting this position without asking Pohena first.”

Enjoy it while it lasts; I might have other ideas about branding in the future.

Copyright © Quadolor Games. All rights reserved.