(opens in same window)
(opens in new window)
(likely 404 error)
October-December 2005 (oldest-to-newest)
Gareth was born last Wednesday at 7:41pm and was 7 lbs
and 20 inches long. Just half an ounce and half an inch
more than his brother, Gavin.
Sleep has been a priority, which really cuts into
development time. We're in bed by 9 to 9:30pm since we
know we'll be woken up every couple hours or so by the
baby. Right now he's most active at night and sleeps a
lot during the day. We're working to reverse that - the
pediatrician says it will take a few weeks.
Gavin is by far the more demanding of the two. He's
a bit jealous and has gotten very clingy with the baby
around. And the tantrums - whoa nelly. I'll stop there
before I turn this site into another Dooce.
Weekends being the only time when both kids are asleep and
I'm not, I was able to squeeze in a couple hours of
time on Invs. I switched to quad buffering before the
baby was born and have been struggling with a flickering
issue up until yesterday. Found that bug and we're now
sans flicker as they say. Yay!
I have three more issues to clean up before I can hand
over a build to Kevin for his little
in Pilly. Luckily if I can't get them fixed I can
revert back some changes to a known working state that
just runs a bit slower. It'd be really cool to have
the game done, though.
'Course I'll have to revisit Katapila and make sure I
didn't break anything there. That's the problem (and
benefit) with sharing a lib between multiple games. In
the long run, though, it only helps to make the lib
stronger. One day I'll even try compiling Decaying Orbit
again and see what happens.
I got some time this past weekend to fix the remaining
issues with Invs. Everything
should be good to go for the Philly show next month. I
need to verify that Katapila
still works, but that shouldn't take long.
I added a more flexible way to select a frame rate.
It will let me choose just about any frame rate I need
for a given game. I'll set the two Yaroze games to 50fps
because that's the speed they run in their original
European forms. Allowing them to run at 60fps would make
the games more difficult for those of us with NTSC
players. Also, limiting them to 50fps gives the games
more time per frame for rendering, which will lead to
I also compiled Decaying
Orbit again for the first time in who knows how
long. Getting that working will give me more confidence
in my recent sprite library changes.
Well Katapila did not work
perfectly, but it's hard to tell if the problems were
already there or if I introduced them recently.
Regardless they need fixing.
First up were a couple bugs in the line drawing
renderer. It took longer than expected, but I finally
tracked those down.
The latest (and possibly last) bug is how the game
slows down on the title screen. It is full speed when
you first start the game, but after playing a round and
going back to the title screen it slows down a bit.
That needs investigating.
And to throw a wrench in the works I figured that the
original game should run at 50fps, not 25 as I had assumed
(sound familiar?). Hitting 50fps should be pretty easy
once I write a renderer to handle the background.
Katapila is not as demanding a
game as Invs.
I changed Katapila to run at
50fps instead of 25. To achieve this I wrote a new
background renderer that uses a tiled image. I also
changed a few things in the game that hopefully won't
detract from the experience. Once I get the speed up
I'll try putting them back.
I sent a build to
to use at the
Be sure to stop by and check them out if you're in the
I estimate another month or two of cleaning up before
releasing the games formally.
I'll be taking some time off work in December and
January to care for my son. Assuming he gives me some
decent naps throughout the day I'll get in some great
development time. More on that later as it gets
I figured out why the frame rate was taking a dive on
the title screen of Katapila.
It only happend after playing the game at least once.
Turns out one of my hints that was supposed to speed up
the game hurt it instead. The explanation is likely
boring so I won't bother. The upside is that with some
final tweaks Katapila stays
at 50fps throughout.
Now I'm revisiting Invs
again and playing it more thoroughly. I notice that
the frame rate isn't as constant as I'd like so I'll try
to address that if possible.
Sorry for the silence. I'm busy working on the boot
loader to add some new features. I plan to release
Katapila (and any future Yaroze
ports) as a single download using the boot loader.
I have some pretty cool things planned, which is why
it's taking so long to finish. I was going to just wait
until it was done before saying anything, but that doesn't
look like it will be any time soon so figured I should
Planned features include:
- User-supplied fonts so you're not stuck with the
standard system font. [done]
- Up to nine image slots per app (img1 through img9
rather than just img1 & img2 as before). [done]
- Multiple images per slot - up to 27 (img1 plus img1a
through img1z) with parameters to control how the boot
loader cycles through them. [tbd]
- Faster TGA decoding via assembly language
implementation. [in progress]
- More advance positioning of menu elements. You will
be able to place everything where you want it and make it
whatever size you like. [tbd]
I'd love to have an assembly language implementation
of the JPEG decoder, but that won't happen until I sit
down and understand the file format. Given that the
current C-implementation spans 70+ source files I figure
it will be too complicated.
So now you get updates on the boot loader :)
Hope you'll forgive the splash of color above. I
would hope most of the people visiting here know about
Child's Play already. Just in case though, give it a
click and read about giving the gift of games to kids
stuck in hospitals for the holidays.
Today is my first day off now that my wife has
gone back to work half-time. We'll be trading days off
for a couple months until we finally put the little one
in day care in February. I take off Mondays and
Wednesdays and she has Tuesdays and Thursdays with the
baby. We're trading every other Friday off - I get the
first one this week.
If our first son is any guage, I expect these first
few days to be a challenge as the baby will have to take
the bottle full time when I'm home.
Enough about kids. So while I'm off I'll be working
on various things during his naps or while he is playing
quietly. I plan to get at least one productive thing
done every day (house projects) and one non-programming
fun thing every day (reading, catching up on stack of
unplayed video games). The rest of the time (what there
is left) I'll spend on development.
Today's productive thing: Install new medicine
It's been a surprisingly pleasant day. The baby has
slept through most of it. He took the bottle just fine.
Here's hoping this continues.
I wrote an assembly program to decode TGAs to offload the
boot loader. It should speed things up tremendously.
I got it feature complete recently and spent today
debugging the assembly. There are so many modes and
possibilities with the TGA format. Combine that with
the limitations of the platform and it wasn't as
straight-forward as I'd hoped. I'll be creating a
special debug data file for the boot loader to verify all
the different kinds of TGAs are handled correctly.
It's not full-featured yet. It can only handle 8-bit
RLE encoded images (either 24 or 32-bit color). I'll
probably leave it at that for a while since that's all the
original C implementation could do.
There is still a bit of debug to do and then I'll start
creating test cases specifically to stress the program.
Hopefully I can get it fully working on Wednesday.
Huzzah! I got the first TGA decoding and displaying
properly and it is blazing fast compared to the
original. You know how it would take a second for each
image to appear when you scroll to a new app? Well now
The assembly is interrupt driven so it will be quite
easy to load images in the background. Plus I'm only
using one MPE for TGA decoding. You could run it on
all three MPEs for triple the throughput. Frankly I
don't think that's necessary, but it's always an option.
I'd like to keep those other two MPEs free for future
Now I'll go through and make some special-case TGAs
to test every corner case I can think of.
Time for lunch.
So I made some TGAs with which to test the assembly.
Before I can test them, though I need to implement some
of the other features I mentioned. I want to be able to
display more than two images per screen and position them
arbitrarily on the screen.
So I spent the afternoon on Wednesday implementing
this. Friday was a debug day. I now have some of the
text displaying correctly, but not the images.
It was a good first week. If I can keep this up it
should only take me a week or two more to finish
I received a spam with this little nugget at the end.
"Even your friends would have to potato submit to
your arrest, or if you resisted sick it would plunge us all
into misery and unhappiness". Gotta love it :)
Just a little update on yesterday's progress. I've had a
cold so it wasn't the most productive day. Plus I started
Shadow of the Colossus. Neat
I got the new image implementation working with things
displaying where they should. With that I went back to
debug the TGA decoding routine. I fixed a couple bugs,
but they're still not showing up on the screen.
Hopefully I can tackle that one tomorrow.
I got the images to display properly and after fixing one
more bug in the assembly, they are correct. The first
image is the original. The second and third play with the
CLUT in a way that shouldn't affect the final image, which
as you can see it doesn't. The fourth image reverses the
horizontal swap bit, the fifth the vertical swap, and the
sixth both. The last image tests wrapping of RLE packets
across scanlines - something that I recently found out was
not allowed in TGAs in order to facilitate finding the
beginning of an arbitrary line. Still, my implementation
can handle it so I'll just leave it in.
Funnily enough, Paint Shop Pro can't open the second,
third and last images. They must have a weak
implementation of the TGA spec. I can forgive the last
one not working, but the other two should.
The mangled instruction text under the title is a bug
I still need to fix.
Well, technically days 6 and 7 since I did some work over
the weekend too. But I'll just keep counting my days off
for now. I'm nearly done adding features to the Boot
Loader for the time being. One more major one and then
I'll put together the disc with
Speaking of Invs, Philippe
has been working on some tweaks to the game for the NUON
release. Nothing major, just some updated text to
reflect the button layout and tightening up the game in
a few places. I need to transfer the optimizations I made
to his code over to the new version.
I spent some time creating the background and loading
images for the upcoming disc. I'm still not happy with
it so I'll likely have to rev it again.
I got the horizontal menus working, although I haven't
had much time to test them. I need to add more options to
make them look good - limiting the number of app titles
displayed, centering the menu text, etc.
I remembered I also need to add code to rotate
through multiple images when given more than one. I'm
thinking of three modes: static single image (same as
now), pick a random image every time you navigate to the
menu entry, pick a random image and then pick a new image
every X seconds.
I'm off work starting tomorrow through Monday Jan 3rd
(forced vacation during the holidays). The kids will be
home too, but I do hope to get some work in on this over
Just a quick update. My connection has been down most
of the day and we're about to turn in for the night. It's
not even midnight yet, but such is life with kids.
The image to the right is the background to the
boot loader for
Invs. Click for the full-sized
version Much better than the horrid mess I had before.
Things are coming along nicely with the boot loader. I
have all the features implemented, but not very debugged
I'll post more tomorrow. Happy New Year!
This web page and all other pages on this site are
© 1999-2007 Scott Cartier