The audio device appears to be controlled by Brio. Attempts to open /dev/dsp fail because it’s already open.
The rest of the audio devices, /dev/audio, /dev/dsp0, /dev/dspW, or /dev/dspW0, are not available.
Short of stumbling upon the libAudioMPI header file, it looks like using sound on the Didj is not possible. It might be possible to build it from the shared library, but it would be very difficult.
The Didj version of Worm Warrior is playable. Download it here. Installation instructions are included in the file. This will work correctly on a normal Didj.
Sound isn’t implemented yet, but everything else works fine. I need to see if it would be possible to get Hekkus Sound System running on the Didj,
This is using the SDL_RenderCopy, from a texture, for the display, and Linux input events for input. By specifying the rects to SDL_RenderCopy and SDL_LockTexture I was able to speed things up to a playable level.
It’s been a challenge to get Worm Warrior running on a normal Didj. The Didj is an excellent platform for retro style games. It offers a 320 x 240 16 bit color screen with NES/GBA style inputs. And, a Didj can often be found cheaply at thrift stores or on EBay. I payed $4 for mine, without a power supply or USB cable, at a local Goodwill thrift store.
This has a good part of what I was hoping to achieve this weekend. There isn’t much game play to speak of. Both A and B buttons will fire. Every other shot is a slow one (I will probably change this to cancel the slow shot if shots are altered between each side).
The bacon evolves after a certain number of bugs are shot (25 right now). The Sizzle Meter™, in the lower right, indicates the progress towards evolution.
The game seems to slow down at certain points. I haven’t verified this. I will probably have to optimize the code to fix this; shouldn’t be a big deal though.
I’ve spent a significant amount of time chasing down a collision bug. Again, I assumed it was an issue with the compiler. It turned out that when generating a random position, i was generating positions based on 64 and not 32 (a ‘<< 6’ instead of a ‘<< 5’). Normally, that would shift some sprites offscreen, on the SNES they just wrap around. But, collision detection doesn’t use the wrapped coordinates. D’oh.
So, the plan is to polish up the release for either a Jam release, or release it at a later point in time.
Here’s the 2nd playable demo, including enemies, collision detection, and score and life tracking.
The enemies are in and moving. I’m battling a collision detection issue. Once the collision detection is fixed, I can them add explosions and start working to wrap the game up.
I implemented a sprite system and input handling. The background automatically scrolls, and bullets can be fired and are moved and removed automatically.
The biggest problems I’ve experienced has been how sprite indexes are used. I assumed that sprite 2 was 1, but sprite 2 is actually 4. Some of the behaviors look like compiler issues; which was also an issue when I was developing Frog Feast. I just don’t completely trust a 65816 C compiler.