Jan-Mar 1997
Oct-Dec 1997
Jan-Mar 1998
Apr-Jun 1998
Jul-Sep 1998
Oct-Dec 1998
Jan-Mar 1999
Apr-Jun 1999
Jul-Sep 1999
Oct-Dec 1999
Jan-Mar 2000
Apr-Jun 2000
Jul-Sep 2000
Oct-Dec 2000
Jan-Mar 2001
Apr-Jun 2001
Jul-Sep 2001
Oct-Dec 2001
Jan-Mar 2002
Apr-Jun 2002
Jul-Sep 2002
Oct-Dec 2002
Jan-Mar 2003
Apr-Jun 2003
Jul-Sep 2003
Oct-Dec 2003
Jan-Mar 2004
Apr-Jun 2004
Jul-Sep 2004
Oct-Dec 2004
Jan-Mar 2005
Apr-Jun 2005
Jul-Sep 2005
Oct-Dec 2005
Jan-Mar 2006
Apr-Jun 2006
Jul-Sep 2006
Oct-Dec 2006
Jan-Mar 2007
Apr-Jun 2007
Jul-Sep 2007
Oct-Dec 2007
Jan-Mar 2008
Apr-Jun 2008
Jul-Sep 2008
Oct-Dec 2008
Jan-Mar 2009
Oct-Dec 2009
Jan-Mar 2010
Apr-Jun 2010
Jan-Mar 2011
Oct-Dec 2011

October-December 2002 (oldest-to-newest)

1 Oct 2002 - Back to programming

Now that the auctions for my comics have finished I have more time to program. There's still the matter of boxing up the comics and shipping them off, but that doesn't take too much time.

I finally sunk my teeth into Jet Set Radio Future and am liking it a lot. The levels are just immense and the draw distance is amazing. The music is great too. Not as good as the first one, but I haven't heard all the tracks yet so I'll reserve judgement. (I have one of the songs stuck in my head at the moment.)

Game Progress I added in some sprites I had removed from the star field screen. That jacked the frame rate back down to 20 fps. Oh well, I'll do another round of optimization later. For now I want to get actual sprite images displayed. The stars have actually been "incorrect" as I've been just clearing all sprites to a constant color rather than using their proper images. Of course that's hard to tell on a sprite that's 2 pixels wide :).

One interesting thing I noticed is that the sprites I added back are rotated slightly despite having "rotate=0". I'll post a screenshot later to show what I mean. Debugging that would likely involve delving into the sprite assembly. So I'll just leave it alone for now.

As for what I've been working on, I'm writing the routines to convert a Playstation TIM file to the format the sprite library wants. For 4-bit CLUT-based sprites this will involve reading in the CLUT and doing a look-up for every pixel. Luckily I only need to do this once for each sprite as long as the source image doesn't change.

4 Oct 2002 - Screenshot below

Game Progress I inserted a screenshot in the news from last time (below) showing how the sprites are slightly rotated. Click to blow it up to full size. I swear I set the "rotate" field to zero. Strange.

7 Oct 2002 - Real sprites! (sort of)

Game Progress As you can see. I have had some success getting the actual sprite images working. The text reads "If you wish, you may insert an audio CD for background music. Press START to continue."

The slight rotation mentioned before is causing the sprites to look a little weird. Also, the lower case letters "s" & "r" and the capital "T" don't work properly - why just those three letters I have no idea. The s's come out as y's and the r's & T's are just weird. There are various other graphical glitches too, but I hope those are a result of the same problem as the letters. BTW, the "D" in "CD" is correct - the font I use displays it like that.

The text is supposed to be tinted green. However, tinting is not officially supported by the sprite library. The "tint" field exists and should work with one of the sprite types, but I may need to add support for other types if that's not good enough.

8 Oct 2002 - Don't get too excited

Way before Decaying Orbit there was Mega-Gun. I've had a mostly-finished page sitting on my hard drive for a couple months and finally decided to finish it off. It's not a NUON game. We made it for the Commodore 64 using Gary Kitchen's Game Maker. Read all about it on the game page. Then download the disk image and play it on your favorite C64 emulator. It won't knock your socks off, but it will kill a few minutes if you happen to have someone to play against.

I should put a readme file in zip describing the controls, but for now you can figure them mostly out yourself. The joystick only had four directions and a button for crying out loud. Ah the simpler days. Just remember to detonate your missiles before they fly off the screen!

Update: README file added to zip. It will be fleshed out more in the future, but has the basics for now.

15 Oct 2002 - Tinting

Game Progress I've been spending some time trying to get sprite tinting going. Tinting is done differently on the Yaroze and NUON. On the PSX you give a value indicating how much to tint the red, green and blue components of every pixel in the sprite. On NUON you give a base color and a blend factor and the sprite pixel gets combined in accordingly.

I'm not sure if it's even possible to make tinting 100% identical between the two methods. I'll need to work out the equations to prove it (or disprove it) to myself.

I need to write my own pixel inner loop to accomodate the PSX transparency modes so in the process I'll probably change the tinting to be done in a more PSX-like manner.

22 Oct 2002 - Tracking down a bug

I finally finished Jet Set Radio Future last week. I'm still playing it though as it's a lot of fun and there's plenty of extra stuff left to do. Probably next for me will be Shenmue - yes the first one. I left off somewhere in the 3rd disc so I'm pretty near the end. I need to finish it off before the sequel comes out. Also, I booted my Dreamcast version of Spider-man for the first time this weekend since I bought it months and months ago.

Game Progress I'm trying to get to the bottom of the graphical anomalies I'm seeing in DO. I've made much progress in the past couple days as I've started narrowing in on the source of the problem. I thought it would be in the code that translates the Yaroze image to a format the NUON sprite lib wants. Now it seems to be further up the pipeline - the Yaroze image is actually getting corrupted before the translation.

28 Oct 2002 - Blah

Hats off to the Angels for playing some great ball the past two games. I thought the Giants had it sealed in Game 6, but alas they choked. I really enjoyed following the Giants through the playoffs and feel bad that they couldn't win the big one. Ah well.

And what the heck is that ugly thing in the middle of the Angel's center field? Jeez, they could have sold a couple thousand more seats if they got rid of that silly fountain.

Game Progress I'm still trying to isolate the bug mentioned before. I ended up writing a couple functions that create a checksum value based on memory contents (both bilinear and linear). I'll use these to find out where the corruption is getting introduced.

29 Oct 2002 - SQUISH!

Game Progress I can't remember the last time a bug eluded me for so long. These graphical glitches weren't serious, but still extremely annoying. And the solution was so simple. I don't even recall how it happened, but last night while lying in bed it came to me. It seems so obvious now. Basically I just needed to add a couple _DCacheSync() calls and all was fixed!

The fact that the glitches weren't deterministic should have given me a clue. The problem was that one part of my code converts the little endian image file to big endian to make it more NUON-friendly. This is done in cached C-code (admittedly not very efficient). Later I have a routine that reads the image and converts it from 4-bit pixels to 32-bit using the CLUT. This uses the DMA functions, DMALinear & DMABilinear. The problem was that the DMA functions were reading in stale data because part of the image from endian conversion was still in the cache and hadn't been written to memory yet.

Here's a zip with the latest NUON.CD. There's still not much to show, but at least it gets to the title screen (press START from there and it will crash). There are some strange green lines that show up in the "D" and "O" of the title. It's probably related to the fact that they are scaled up, but I don't know if it's my problem or the sprite library's. It's definitely not the same problem that I just fixed above.

Finally I can move on to the next part of the game. I still need to add tinting to the sprite library so the text doesn't always come out gray, but that's for later. I want to get the game playable first.

1 Nov 2002 - What the heck does GCN stand for?

I am finally complete. My Gamecube arrived yesterday to take its place next to the XBox and PS2. Now begins the (expensive) process of catching up on all the games I've missed since the system's debut. All I have now is Star Fox Adventures, but Mario Sunshine is on the way.

Lots of games past and future are just calling to me. The holiday season brings out the best in gaming! Just don't ask me to call it GCN - that's about the stupidest acronym I've seen. Gamecube Nintendo? Makes no sense.

I'm heading out to see Episode II in IMAX tonight. I only saw the movie once in its original release, in a non-digital theater, so I'm looking forward to it.

4 Nov 2002 - That infernal GameCube

Were it not for Star Fox Adventures I would have done more work on the game. But alas, a gamer's life is perpetually torn amongst what to do & play next. I put in 8-9 hours on the game this weekend and am about 40% done. It's definitely a great game, although some of the tasks seem rather arbitrary. Most of the game has been blindingly obvious as to what to do next. Also there's a bazillion things to collect. I can now fully appreciate what Gabe & Tycho were talking about.

As for IMAX Episode II, the fates conspired against us as the projector was broken. Blast it, I'll have to catch it some other time.

Game Progress Depsite that I did a bit of programming. I fixed a bug that happens when you try to SPRDraw() an empty display list. That was causing the hang at the main menu. Also, I finally added the Yaroze function StoreImage(). It's the reverse of LoadImage() in that it copies a bilinear region from the Yaroze VRAM to a linear region in main memory.

Even with all this I still can't get that blasted main menu to appear. And the program is hanging again. If I can get past this I'm sure I'll be close to the game being playable.

8 Nov 2002 - Bugs isolated

Game Progress I know the location of two bugs that are each preventing the main menu from showing up properly. It's just a matter of fixing them.

It's a rather complicated task to convert a Yaroze sprite image to a NUON one. The Yaroze sprites are 4-bit and four are packed together to occupy a 16-bit location in Playstation VRAM. Sprite images can start at any arbitrary pixel. So when I read in a 16-bit word I may need to skip over one to three of the nibbles to get to the starting pixel. Add to this the fact that NUON likes to do things in 32-bit chunks and I sometimes need to bring in an extra 16-bit word to fill the other bits. This means I have to skip from one to seven nibbles in the first 32-bit dword. That applies to the start of every row in the image. Of course the same goes for the end of the row as well.

So bug #1 in dealing with that. Bug #2 has to do with dynamic CLUT modification. Most of the time the color lookup tables are static. They are included in the input image file and never change. Decaying Orbit plays some tricks, however, by generating some CLUTs on the fly. For example, for the planet images, I take the original colors (RGB in Yaroze-space), shuffle them around and create more color combinations (RBG, GRB, GBR, BGR, BRG). This allows me to have a large variety of planet sprites by only using a few images. Anyway, the bug is in the routine that loads & stores the CLUTs to memory.

13 Nov 2002 - What does she see in him?

We finally saw Episode II in IMAX last weekend. What a disappointment. I'm sure it varies from theater to theater, but at the one we went to the image was so large that you had to actually move your head during most scenes to see all the faces. Often I'd be watching an alien speaking it's alien language and remember there are subtitles at the bottom of the screen. They were so much out of my view that I couldn't see them at the same time.

The seats in the theater were positioned so you are looking at the center of the image. Great for normal IMAX films since you want the scene to fill your entire view. For feature films, however, character's faces usually appear in the top part of the screen, meaning we had to crane our necks a lot of the time.

However, I did appreciate the cuts they made to the mushy scenes between Anakin & Padme. And hearing Jango Fett's seismic charges in a theater with 20-something speakers was just awesome.

Game Progress Not much to say on the game front. I fixed the two problems mentioned before, but the main menu still doesn't appear. I think the sprite is there, but all the pixels are being drawn as black. I just need to get the colors right for it to show up.

15 Nov 2002 - More cache coherency problems

Game Progress At least that's what I think is causing the garbled text in the main menu. As you can see I did finally get it to show up. I changed the sprite type and it worked fine. I must have something set wrong for the other sprite type.

So I'm guessing I need to do a magic _DCacheSync() somewhere to clear up this problem. Also, those vertical lines in the menu are not supposed to be there. Yet another bug to find and squash.

The text in the menu is supposed to read:

  • Instructions
  • Single Player
  • Introduction
  • Level Editor
  • Configuration
  • Credits
  • Exit

That reminds me of something Chomp-related I need to do...

18 Nov 2002 - So close...

I'm sitting around 60% in Star Fox. It's an enjoyable game, but not one I'll be keeping after I'm done. I have filled out my GameCube library a bit with Mario Sunshine, Eternal Darkness, Resident Evil, and Luigi's Mansion. I've heard great things about ED so I can't wait diving into that one.

We watched the extended version of Fellowship of the Ring and absolutely loved it. Lots more pieces added to fill out the events and flesh out the characters. Plus the DVD comes with a free pass to Two Towers. Since you can find the set for $25 it's like getting the discs for $15. You are going to see Two Towers right?

We also saw the new Harry Potter and loved it too. It takes what is probably the weakest of the books so far and makes a great movie (admittedly I haven't read the fourth one yet - I'm going on my wife's opinion). I was amazed that they fit pretty much the whole book into the movie. They toned down characters that were annoying (Colin and Gilderoy) and didn't waste time explaining Quidditch again. Good stuff. Now I really can't wait for the third one.

Game Progress The solution to the garbled menu text was to use _DCacheFlush() rather than _DCacheSync(). I'm still trying to wrap my head around why that might be. Regardless, you can now navigate the main menu. Start a new game, however, and it crashes. More work to do I guess.

Before starting the game there is a bit of text that scrolls up the screen. It gives some background and sets up the story. The first couple sentences show up just fine, but eventually the text stops appearing. Then when the initial words scroll off the top of the screen some new text pops in. I must be hitting the library's limit on the maximum number of active sprites. It's set at 256 now so I'll try upping it.

Through all of this the game runs extremely slowly. Less than 20fps usually. This is just unacceptable for an action game and will need addressing at some point.

19 Nov 2002 - More progress

We had a shindig at work last night when they replayed the GeForce FX launch presentation for the employees. It's times like this that I wonder why I'm bothering to make silly little 2D sprite-based low resolution games when there is power out there to do "cinematic computing".

Oh well. Harnessing that power would take a team of people and likely take a year or two. I guess my advantage is that I can make the game I want at my own pace. As long as it's fun who cares?

Game Progress Woo! Planets! The game is progressing nicely. However, there are a number of things wrong with this shot. First, the CLUTs for three of the planets are messed up. Only the top-left one is correct. Second, the star background obviously repeats. It should not. Third, the shadow sprites that overlay the planets are showing up as strange vertical gray stripes. Getting these working will require writing a custom sprite renderer. Fourth, the player sprite is not working. When I try to add it the game crashes. Fifth, the triangle indicators around the home (top-left) and target (bottom-right) planets should be green and red respectively, not gray. Again, this will require a custom sprite renderer. Sixth, none of the HUD is present. I haven't investigated that yet.

But still, woo planets!

25 Nov 2002 - Randoms & rotations

Saw the new Bond movie Friday. I was pleasantly surprised to find it it quite enjoyable. I never saw The World Is Not Enough, but this definitely ranks up there with the other Brosnan Bond films.

I finished Star Fox Adventures Saturday. I put it up on eBay Sunday, sold it with Buy It Now, and have already mailed it off to the winner. Gotta love PayPal. Unless you're on the bad end of a dispute that is.

Short week! I'll be leaving Wendesday night for Thanksgiving with the inlaws so probably won't update again until next week. A little golf on Thursday will be oh so nice :)

Game Progress Back to the game. Each tile in the background star field gets a random initial rotation (a multiple of 90 degrees). This, combined with other things, eliminates any visible repeating pattern. However, it seems when you pass a seed of zero to the srand() function every random number comes out zero as well (it didn't on the Yaroze). So none of the tiles were being rotated at all. That's why the background was repeating so obviously.

Fixing that uncovered another problem with the star field. On the Yaroze, if your sprite image starts somewhere in the middle of the source image and extends beyond the edge it will automatically wrap around. So I had to add some code to allow this wrapping.

Finally, the rotation angles on the Yaroze are expressed in degrees while on NUON they are in "rotations". Fixing that little problem cleaned up a few other things too.

One of the problems I'm tracking down now involves the heads-up display. Honestly I think there is a bug in the original source code. But if that were the case then the Yaroze version should not have worked either. I'll probably break out my Yaroze and see if I can figure out why it worked before.

4 Dec 2002 - Work sucks

I haven't been able to program as much as I'd like due to work. Monday evening was planned to be a full-on coding session, but I ended up staying at work until 9pm. Guh. Funny thing is some people do this every night!

I started Luigi's Mansion last night. I love it! Nintendo sure knows how to make fun games.

Game Progress I have almost all the issues fixed from my update on the 19th. All the planets look fine now - the CLUTs are fixed. As noted before, the backgrounds don't repeat any more. The shadow sprites are no longer weird vertical gray bars (they still don't work as shadows though). The player sprite is working. And I got the HUD somewhat working.

There are still some problems. The sprites appear to be drawn in reverse order; the star background overlaps the planets and the shadow sprites show up behind the planets rather than in front. I'm investigating a problem that's causing graphical corruption for some background tiles. The HUD sprites don't line up properly. And the player message and time remaining sprites don't work (those are sprites where the image is text that is generated dynamically).

5 Dec 2002 - 1k words

Game Progress Here's a shot showing what I was saying. The most obvious errors are with the HUD. The bars are not aligned properly. This stems from the fact that on the Yaroze you can place the point of rotation anywhere in the sprite, where as on NUON it's always in the center. I tried compensating for this, but I guess my math is a bit off.

You can see the shadows behind the planets as the gray outline on the left side of each one. I don't know how I'll get those working eventually. The color-space difference is causing all sorts of problems with this port.

10 Dec 2002 - Blast from the past

We had a little VM Labs reunion Sunday. Unfortunatley I could only attend for an hour, but it was still nice to see familiar faces again. I wish I could have stayed longer. Hopefully it's the first of many since I couldn't chat with very many people.

Not much game progress to report. I did get the HUD items to line up correctly. Mostly, I'm neck-deep in work these days. Weekend? What weekend? I hope this lets up soon...

16 Dec 2002 - No news is, er, not good

I haven't been programming lately. Mostly because work is busy, but also we've had lots of things to do at home. We're considering getting our kitchen remodeled and are talking to contractors and stuff.

I finished Luigi's Mansion this weekend. Of course this opened up the Hidden Mansion, but I'll save that until I get through my other games. BTW, maybe it's just me, but I found that final boss tough! I had to cheat and look up how to beat him. Vacuum the spiky thing? Goes against most video game conventions. Even when I knew what to do it still took me a few tries.

With that done I just started Eternal Darkness. It's a lot more Resident Evil-ish than I thought it would be. You know the drill - find the item, put it in the slot. Still, the atmosphere is great and I love the idea of making the back story sequences interactive.

21 Dec 2002 - Ho ho ho!

Game Progress Here's a little present for you all before I head off on vacation. It's painfully slow so I don't imagine people will spend a ton of time with it. Still, a lot of it works. Much to my surprise I just tried the in-game level editor and it seemed (mostly) fine.

The buttons are mapped thusly:


Remember that on the PSX, canceling things and backing out of menus is done with the triangle button (C-left). Selecting menu items is done with X (A). When starting a single player game you can skip the opening text crawl with the START button.

FYI, lasers don't seem to work, the player engine thrust doesn't show up, and a bunch of other stuff is broken. Don't press START since it's supposed to bring up a pause menu, but all it does now is crash the game. I guess you could say that's a kind of pause.

I really need to figure out why all my sprites are rotated slightly.

See y'all in a week. Think cheery NUONy thoughts :)

This web page and all other pages on this site are © 1999-2007 Scott Cartier