Categories
Looking glass
Navigate/Search

IT2NSF

Well, Famicompo Mini vol.6 has finished recently. There were some very interesting entries this year, including a few that use my brand new NSF driver. The driver supports a unique format that is derived from a specially created Impulse Tracker module. The format mixes IT patterns together with special MML data (stored in the song message) which describes how each instrument should sound. The MML data can control envelopes (duty, volume and pitch), modulation, tuning and some other channel-specific data. The module can have up to 16 channels, where each controls one channel of the 2a03 or any of the expansion chips (all chips are supported). It may be a bit hard to use at first but I think it’s capable of creating some very cool NSFs!

You can download the IT2NSF program from my projects page. Tell your friends :)

Moved

Well, I’m in Colorado now (Denver)! It’s pretty warm today, around 43 degrees. We’re still kind of moving in but I have a desk now and fast internet! (7mbit, 14 times faster than my previous connection…). Happy new year everyone. :)

Computer Repair

Well, my computer crashed recently. I’m not sure how, but it’s pretty old. I was just in the middle of coding something, and a blue screen popped up and then the computer rebooted! When it tried to start again it would give a blue screen again as it tried to load Windows. The CD drive in my computer is busted, so that causes a bit of trouble. Here’s how I repaired it (just so you know it’s possible).

First I enabled PXE booting in the BIOS menu. “PXE” allows you to boot a computer over the network–a lot of computers have this feature. I installed Ubuntu on another computer because I figured it would be easier to setup a computer as a PXE/TFTP server with linux rather than windows (and I did that part before so it wasn’t too hard this time). Next I got a copy of WinPE from Windows AIK, available free from Microsoft. WinPE is like a super-mini version of Vista. It boots to a command prompt and allows you to run some 32-bit applications. There’s a few sites that explain how to make a PXE bootable version of WinPE.

I setup the my Ubuntu server to upload WinPE to my computer. Once I had my computer booted I ran “chkdsk /R” to scan the hard drive for any errors. Unfortunately (or maybe good) no errors were found and I had to resort to a windows reinstallation.

I had to back up my files, but I had no external storage available, so I had to transfer them to the other computer over the network. The Ubuntu partition I made didn’t have enough space to hold my files so I rebooted to Vista and made the shared folder there. It was a little troublesome to get WinPE to access the shared folder; I kept getting “Access Denied”. I added “Everyone” to the access list, and the security list of the shared folder in Vista, but I still got the “Access Denied” error. Here’s the trick; you need to specify “/USER:Everyone” when using “net use”. heh…

Back to Ubuntu. I put my Windows CD in the [server] computer and used Samba to share it. I had no problem connecting to Samba-shared folders (works with the pushd command too, unlike Vista). I ran “winnt32″ from the i386 folder on the windows CD (shared through the network) with options “/syspart:c: /tempdrive:c” (maybe I used the /makelocalresource option too but I don’t think so). This part was a bit confusing; after initial setup, the windows installation just exited… Soon I found out that the first part of the installer just sets up the hard disk to boot the actual installation after reboot. OK, so I rebooted and disabled PXE booting. The windows installation continued smoothly afterward… and now I just need to get all of my programs back :)

NASM Preprocessor

The NASM preprocessor sucks.

Java Programming

I’ve been programming a bit of Java recently. I bumped into this error which I found quite amusing:

Audio.java:543: possible loss of precision
found   : int
required: short
ftvolumeR = -ftvolumeR;

In Java’s defense, there would actually be an error if the number is -32768. But that is such a slim case (which doesn’t even apply to 99% of code scenarios) that I wish the compiler would just let it slide (and it doesn’t complain about negating ints, even though the same slight precision problem exists).

SPC Compo

I hosted a semi-SPC compo (one-hour tracking compo) in #mod_shrine. Here are the songs and the results.

Speed

I have a 512kbit internet connection now. Life is good.

Source Code & SNESMOD

Check out http://snes.mukunda.com for the source code to my SNES stuff. Also available there is SNESMOD. Get the Lite version if you are just interested in converting IT modules into SPC files. I’ve also created an SVN for my stuff which is at http://svn.mukunda.com

Enjoy!!

Skipp and Friends Original Soundtrack

I think the music was the strongest point of the game. I ripped all of the SPC tracks from the game with ZSNES and made MP3 renders of them with the help of SPCTool, so you people without knowledge of how to hear an SPC can enjoy them too :) . You can download the complete MP3 OST here! Also, if you’re interested, I have also uploaded the complete SPC soundtrack here, and the original IT modules here! I’ll explain a bit about the origin of each track.

#mod_shrine Intro

This song was one of coda’s old tracks that he gave to me for the “sine-scroller” intro. He downgraded it to 8 channels to be SPC compatible.

Intro “Ducky Space”

I needed some kind of “suspenseful” music to go together with the engrish dialog. Steven came up with this track which was perfect for the ultimate cheesy story. :)

Title Screen Music “Botsong”

This one was all Lamontagne’s work. Originally, he made the song for the “VRC6Bot” project (SPC+VRC6). He stuffed the VRC6 part into the SPC side using some banjo samples :D .

Insert Password “Victory Music”

Steven made this song… somehow.

Level 1-2 “Exciting Boring Music”

Before this track was made, the current music tracks I had seemed very extravagant… I wanted some ‘boring’ music for some of the starting levels. So Steven composed this one which is pretty generic [awesome] and perfect for the first couple levels.

Level 3-4 “Exciting Boring Music Part 2″

One of my favorites. Steven removed the shuffle from part 1 and remixed it a bit. It makes an interesting contrast after the first two ‘boring’ levels.

Level 5-6 “Meteroic Cleanup of Doom”

Lamontagne started this one out, it sounded pretty cool already. Then Steven added some of his greatness to the mix. A very cool track for the middle of the game!

Level 7 “Ice Ship”

Exactly as the name implies, it sounds ‘icy’. This is another Lamontagne & Steven co-op. I was forced to make some icy level to match this song.

Level 8 “Duckiest”

Perhaps my favorite track. It has a unique sound to it. I was almost going to not use it, or use it for the credits music, but I found it went well with the last icy level. Hmm, I noticed while ripping the music that there is a quiet stuck note at the end. :)

Boss Level “Shut in a Box”

Steven dug up this track of his for the boss music.

Outro “Happy March Song”

This was actually made for the intro, but it seemed more suitable for the outro.

Credits “Theme song”

One of Lamontagne’s old songs, he brushed it up a bit for the game. Steven tweaked the leads to give it a bit of a better mix. It’s a great track for the epic credits that features 4-5 people mentioned repeatedly :P . This song had a some trouble converting to SPC properly, and I was already way overdue to fix it properly, so the quality of the samples suffered a bit (especially when the overdrive guitar holds the long notes).

Fanfare

Ken Snyder wrote up these amusing tracks on demand (last day) for the winning/losing of the levels.

If you are interesting in getting into SNES homebrew yourself, you can come hang out on IRC at EFNet – #snesdev. We could use some more faces in there. If you are a [tracker] musician you can come join in on the fun one-hour competitions we have at irc.esper.net – #mod_shrine… or just hang out :) .

I will be releasing the source code of the game soon, as well as “SNESMod” and the development kit I made.

Stay tuned! ;)

SNES Programming Adventure Part 3

The final week was crazy. To begin, a tropical cyclone hit India (“Aila” I think it was called). It was the biggest storm I’ve ever seen. The power was knocked out on Sunday night by the fierce winds that lasted almost a complete 24 hours. It seemed the large glass windows in the living room were simply going to burst. The power wasn’t restored until Tuesday night. I had to resort to using our backup generator to get some of the work done during that time. Another thing that was awful about this storm is the flimsy windows in this apartment. They don’t do a very good job at keeping the “sideways” rain out, so water started pouring (well.. “dripping rapidly”) into my room (also in the study…). We tried to wipe it up but it became hopeless. I ended up just moving my electronics/stuff onto the bed and ignoring the fact that my room was flooded :) . After that, it was a pretty much “religious” coding session for the rest of the week to complete the game. We’re talking about waking up at 2-4am each morning and working straight until 7-8pm (my brain works rather well early in the morning).

Somewhere in the middle of this I implemented the storyline and ending+credits screens. I used Babel Fish to translate some cheesy story I wrote into Japanese and then back to English. You can create some pretty hilarious content this way. I tweaked the “Engrish” output a bit to make it a slightly more understandable and then shoved it in the game. The story is actually that you are happy furries on a camping trip living on your home planet [Venus], but you were abducted by humans (“aliens”, which was mistranslated to “foreigners”) who were exploring in their spaceship… The enemies in the game may look like evil robots, but they are supposed to be human astronaughts :P .

I spent most of Saturday adding the last few things to the game, like the map Exit and level advancement. I produced a cheap tileset and started making the first few levels. I still didn’t receive any animations from Lamontagne yet (he was busy planning his trip to Europe) so Ken went ahead and animated the characters for me that night, and he drew that awesome spaceman enemy from scratch ;) . I snatched a good 4.5 hours of sleep which would have to last me the 24 hour shift on ‘deadline day’.

The final day was mostly spent making the rest of the levels for the game, and touching up here and there (adding sound effects too I think). Basically I made the levels according to the music, rather than making random levels and selecting music for them. Level 3 had that upbeat music, so I put lots of conveyor belts to match with it. Level 5-6 had that somewhat ‘intense’ music, so I tried to give them a somewhat dark theme. After that I tried to draw some icy tiles for the level with the “Ice Ship” track. I failed pretty bad at drawing ice… Thankfully nyarla was around to tell me to me steal some icy tiles he had made for his wintery game :) (woops, I forgot to add him in the credits of the compo release). I was getting pretty tired of making levels at that point, but I squeezed out one more and gave it the “Duckiest” track which is one of my favorites. After that last level was done it was already 11pm at night (1 hour ’till deadline). Then I got the ‘brilliant’ idea to “turbo-code” a boss into the game :D . Ken dug up this image for me, which I photoshop’d into this delicious sprite (and I had an urge to draw a couple eyeballs for some reason…).

Three hours later (two hours past deadline now) I cranked out a good ~1000 lines of code. I had a good laugh the first time I saw the boss’s jaw go up onto his face while his eyeballs pop out of their sockets and go crazy. Actually, I didn’t plan for his jaw to go way up there, but it was so darn funny so I decided to keep it that way :P . His main attack is blasting eyeballs (that he magically spawns from his face) everywhere while screaming! I wanted to add some Arnold samples, but I guess they would break one of the compo rules (I guess that face picture is somewhere in the gray-area). After seven hits with the explode ability he screams while shaking frantically, and then “beep“, an exit appears.

After he was complete I starting getting the game ready for submission, fixing a few things here and there, but…. But then the power *randomly* decided go go out (at 3am). There wasn’t even a storm outside! Anyway, no problem right? I have a generator after all. I started it up and distributed a beta version of the game to #mod_shrine and did some exciting testing with them. There were a few things that I thought were OK but they complained about them (like Apple’s scream used to stun enemies for only 1 second), so I patched up those parts. Everything was going smoothly, until the generator started failing on me! When I re-started it, it would only last a few minutes before it shut off again. This is when the pain started… There were a couple things still broken in the game. One thing was the credits music. SNESMod was failing to convert some of the samples properly, so I had to manually tweak them [randomly] until the sound was OK, meanwhile restarting the generator every few minutes to scrape up power. You can still hear some uglyness when the overdrive guitar plays long notes.

Eventually the generator only lasted a few seconds before shutting off, so to continue testing I used my mom’s computer which has a newer/better battery than my 5-6 year-old laptop. One last bug was discovered, but I had no idea how to fix it (and no time). It caused certain enemies to vanish… most common in the last level. It wasn’t a critical bug since the shadow still shows up :P (it turned out to be a fairly easy bug to find+fix). ZSNES juiced the battery pretty quickly, so I tested as much as possible. No other bugs were discovered so I assumed it was ready for submission.., but I couldn’t send it because the generator still didn’t magically fix itself… So I took a bit of a nap for a few hours until the power was finally restored, and then submitted the game around 11 hours overdue. :(

Such relief! I had a good rest after that to recooperate from the lack of sleeping. When I woke I made sure that I submitted the right file since I usually end up doing something stupid when I am in a hurry/tired :D ! I will be releasing the soundtrack of the game soon; it’s probably the game’s strongest point. See you next post!