(opens in same window)
(opens in new window)
(likely 404 error)
January-March 2004 (oldest-to-newest)
Unless the boy gamer decides to make an early arrival
I will likely be a dad next Tuesday. Due to complications
during pregnancy, my wife will be induced Monday if she
hasn't gone into labor by then. It's kind of neat knowing
when it will happen since it lets us prepare. We have one
last weekend of freedom.
I made it to Part III of Max
Payne. I'll likely be selling it after I'm done
since it isn't that special for me. Don't get me wrong it
is really fun, but is lacking in that special something to
make it a keeper.
I have my next couple games on the way. I ordered
Beyond Good and Evil from Best Buy
since the price has dropped to $20. I've heard good things
about the game's story and cinematic qualities. I also
snagged Silent Hill 2 from eBay.
With talk of SH4 being in the works I may be behind the
curve a little, but that's normal for me.
So I was perusing my eXTReMe Tracker
(their capitalization, not mine). It seems a few folks
came here from Hermit Games which is run by a long-time Yaroze friend. It
seems that the Official Playstation Magazine in the UK is
still putting Yaroze games on their cover discs. I
jokingly asked him how I can get Decaying Orbit on the disc
again. You can see where this is going :)
Decaying Orbit will be on the cover disc for the UK OPSM
the issue after next. Not only that, but that will be the
final issue of the magazine forever. Not only that,
but it will have the largest Yaroze special ever. I don't
know exactly what that means, but I'm anxious to see it!
That doesn't exactly help you people in the states since
it's not easy to get a copy of that mag. Plus you can't
play UK discs on a US console. However, if you have a
chipped PSOne or some other way of playing it (emulator
perhaps), this is your chance to play the full Yaroze
version of Decaying Orbit before the NUON port gets
Just a heads up :)
Gavin was born Saturday January 10th at 10:34am (after
a sleepless night for mom, and near-sleepless night for
dad). He clocked in at 6 lbs 15 1/2 oz. Just couldn't
quite hit 7 lbs :)
I moved the link to submit Chomp high scores from the
top of the main news page to the navigation bar on the
left. Look for it just underneath the "Chomp mods"
I'll be doing some slight modifications to the nav
bar soon. Nothing drastic, I just want to tighten it up
and add some separators where appropriate.
Technically I haven't made any "game" progress. However,
I have been doing some programming so figured I should
post an update. I think of it as getting back into the
programming groove before diving into Decaying Orbit
I'm trying to write a boot loader that will let us burn
multiple apps on one disc. The main purpose is to give
Kev something to use when he makes discs for the Philly
Classic in March. It'd also just be nice to have all
homebrew apps on one CD so I don't need multiple discs
floating around. Although it *is* cool to have proper
CD cases and artwork for the more finished games.
So far I have some basic fonts displaying. I'm working
how to read the disc's directory. If you're following the
you know I'm having trouble with the FindName() bios
call. I may need to switch to Andreas' CD library to get
this all working. Trouble with that is I couldn't use
the dev system to test it. I'd have to do the
burn-and-try thing :P
I implemented a method to display messages while running
in order to help me debug. Click for a larger version.
For the time being I'm using the dev system's file
server capability to mimic reading a disc. Eventually
those calls will be replaced with Andreas' CD library
This is for debug only. Everything below the line will
be replaced by the actual boot selector menu when that
gets done. I'll probably leave the console code in there
and let you switch between the two with a button press.
Things are going rather smoothly so far I must say.
One of the nice things about the baby is that he forces
us to stay home. I've always been a home-body myself,
especially with the programming projects. Feeding the boy
takes up a lot of time for both of us, but since I'm not
the one with the breasts I get more free time than my
I had a potentially frustrating moment last night when
my computer's ethernet connection stopped working, even
through multiple reboots. This was last night when I
wanted to get some programming done. I tried swapping out
the card for an old wireless one, but that never worked
cleanly with Win2K. So I gave up. This morning I turned
on the system and all was back to normal. Weird.
Despite missing some prime programming time last night I
did get some in this morning. I've started adding code to
read TGA files. These will be displayed next to the menu
selector to show a title image and screenshot of the app
that's currently highlighted. The code for that is about
Next thing on my list is to get COFF loading in place.
I really should have done that first since if I can't get
that working then there's no point in doing all the other
No luck so far getting the boot loader to start another
coff file. I've just started looking at the coff
format and it doesn't seem so bad. I may have to hack up
my own routine to do what I want. At least that way I'll
know exactly what it's doing.
This morning I added the ability for the user to input
their own colors for various bits of the UI. I want
nearly everything to be alterable by the input file. That
way the user can customize the boot loader to their own
tastes and needs. I'm not sure if I'll allow rearranging
the layout of the various bits - just their colors.
Definitely not in the initial release, that's for sure.
I spent most of the weekend analyzing the bios code that
does MemLoadCoff(). I was hoping to extract some
information and maybe even lift some code to do what I
want. Things were going well until some time Saturday
evening when I got several subroutines deep and got
thoroughly confused what the hell it was doing.
My man Riff came to the rescue and pointed out that the
sdk actually includes source code to do exactly what I
want. It's in vmlabs/lib/src/mml2d/src/mrplib/loadr.s
if you're curious. Oh what a wonderful thing. I haven't
delved into it enough to know whether I can just use it
verbatim. It certainly looks good enough. We'll
Time's ticking on this one since the Philly Classic is
next month. I'd like to get this done in the next couple
weeks so we can wring out any bugs before then.
I ported loadr.s to the boot loader and got it working how
I think it should. It runs on MPE1 and loads the coff
into memory and starts MPE3. It seems to copy the coff data
into memory okay, but cannot get MPE3 to run it
I'm hoping it's something easy. I might need to analyze
how the bios function LoadGame() works to see how they do
I got the boot loader to load an external coff file and
run it. In this case it was the coff for Chomp. There are
a few odd things to fix before it's 100%. The title screen
is not perfect, the Chomp sprite on the main menu has a
green halo, and the level selection and game play act
really weird, eventually leading to a crash.
I changed the way the new coff is started. I used to
try to halt MPE3 and restart it with the new program. Now
I leave it running, but in a tight loop waiting for a comm
bus packet from MPE1. Once MPE1 has loaded the coff into
memory it sends the entry point to MPE3. MPE3 then does a
jump to the new address.
The unstable behavior is probably due to some state left
over from the boot loader. Still, I'm glad it partially
Heh. The "strange behavior" I'm getting from Chomp is
actually a result of changes I made to the game a while
back. I didn't leave it in the most stable state. Oops.
Guess that means the coff loader works :)
However, I am getting a crash when booting into
Decaying Orbit that I do not get when loading it direcly.
More work to do.
I added the code to use Andreas' cd library rather than
reading from my PC's hard disk. I tried it on my 501 and
got some success. It seems to initialize properly, but
does not compute the size of a file correctly. I'm pretty
confident that if I can get past this hurdle I'll have the
program loading a coff for real.
After that it's just a matter of getting the UI working,
but that shouldn't take too long.
If I had paid attention while reading
this thread I would have known that gfp107 already stated
that the two stat functions do not produce the file size
So now I'm faced with blindly allocating a buffer large
enough to handle any files I might read. This isn't so bad
for the boot loader since I don't need the memory for much
else. However, if I want to use the lib in any games I'll
have to be more careful.
I'll make the change and try it tonight.
So the stat functions do provide the file size. It
is placed in the st_rdev field rather than st_size. Not
too intuitive, but oh well. With this in place the boot
loader worked all the way up to the point of loading the
coff. Then it hung.
A couple compile-burn cycles later and I found out that
the st_rdev field is only 16 bits wide. Any files larger
than 65535 bytes will not be reported correctly. Oops.
Luckily there is another way to get the size of a file.
The iso_lseek() function gives the current file offset as
its return value. So by seeking to the end of the file you
can get the file size.
filesize = iso_lseek(cdContextPtr, fp, 0, SEEK_END, &cdError);
A more proper way to do it will retain the file pointer's
position within the file:
// Save the current pointer location
fileloc = iso_lseek(cdContextPtr, fp, 0, SEEK_CUR, &cdError);
// Get the file size
filesize = iso_lseek(cdContextPtr, fp, 0, SEEK_END, &cdError);
// Return file pointer to where it was
iso_lseek(cdContextPtr, fp, fileloc, SEEK_SET, &cdError);
Ever thought you'd use SEEK_CUR, SEEK_END, and SEEK_SET
all in one routine? :)
So the file size is now being acquired properly and,
voila, the coff loads! What better way to celebrate this
than to share it with y'all. Grab
zip to try it out. Of course read the README.txt file
first. Then burn all the files to a disc with the same
directory structure. You will see the boot loader start
up and scroll some messages by as it does its thing. After
"Loading coff" is displayed the new coff should start.
It's just the Life sample demo from the sdk (it was the
smallest sample I could find that did something
Right now the program will load the first app that is
in the applist.txt file. Over the next few days I will get
the GUI in place with a proper menu for app selection.
Hopefully I'll have the fully working version done by the
end of this weekend.
Back when I was starting to test the boot loader on my N501
I came across some weird behavior. I had the boot loader
NUON.CD in the disc's root as normal. I also had a NUON.CD
in one of the app subdirectores, left over accidentally.
When I put the disc in the N501 it actually loaded the
NUON.CD from the app directory rather than the one at the
This might make supporting NUON.CD files difficult since
I don't want the player to load the wrong app. Worst case
the file will need to be renamed to something else,
NUON.CD_ maybe, so the player doesn't recognize it.
Happy Friday the 13th. I like long weekends.
Let's see if I can knock out this boot loader thing.
build of the boot loader. It's not perfect, but I wanted
to get it out there so folks can shake out bugs and
suggest improvements. Be sure to read the README in the
zip as it details all the functionality. There's a lot to
know, especially for those building the discs for
I expect to release v1.0 in a week or two.
I have the 1.0 release of the boot loader pretty much
ready to go. It works just peachy on the dev system, but
I'm getting hangs when run the N501. I need to spend a
couple days debugging before I can feel comfortable
Lots of good additions are coming in this release.
Background and intro images are in. All image files can be
in either TGA or JPG format. The description text can be
scrolled if it doesn't fit on the screen. More help text
and lots more parameters to adjust the spacing of the
elements. Stay tuned.
I'm three days late for the ritualistic updating of my
age in the Staff
section. I didn't even know it was my birthday last Saturday
until my wife mentioned it. Must be getting senile in my old
Got up at 5:30 this morning for Gavin's feeding and
figured I'd stay up. I got in some good time with the boot
loader. Bug fixes and minor features added. Kev pointed
out that the intro screen for Samegame gets corrupted when
using the boot loader. For me the game doesn't even load.
So thar's debuggin' to be had ye mateys.
Got a couple new games recently. The Atari Anthology on PS2 should be a good
quick diversion. Plus Ape Escape
2 is supposed to be like the original, which I dearly
loved. Of course Beyond Good &
Evil is still waiting to be played.
Bah, not much time to work on the boot loader lately.
It's mostly wake up, attend to Gavin, go to work, come
home, attend to Gavin, sleep.
I want to do some experiments with how the heap handles
the transfer from the boot loader to the app. I've found
that if the boot loader does not deallocate everything
before starting the app, the app can have problems. Chomp
and Samegame had trouble with this.
I was hoping that the app's startup code would init
the heap and stack as necessary, but that doesn't seem to
be happening. Odd.
I played through a few levels of
Ape Escape 2. It's almost a
carbon copy of the first one. This doesn't bother me in
the least, but I can see why reviewers weren't wowed by
I fixed a big problem in the boot loader memory management
and it *still* didn't fix the corruption Kev's seeing in
Samegame. I cannot reproduce this corruption on my dev
system and my 501 has trouble reading my CD-R/Ws, making
debugging this a right pain. I will try the 504 when I
get home. Maybe it will have better luck reading my discs.
I can only hope. This is the only thing keeping me from
releasing the new rev.
Kev sent me his coff file for Samegame and I was able to
reproduce the corruption he was seeing. Turns out the
corruption only happens with the Colors version of the game
and I've always been using Shapes.
I did some debugging this morning, but couldn't find
anything wrong. Also, the corruption would change depending
on the contents of my applist file. When random errors like
these appear it's usually a problem with stale cache
contents. I added a _DCacheFlush and it seemed to fix the
Look for an official v1.0 release this weekend.
It ain't perfect, but here's the latest Boot Loader.
The latest version can be obtained from the links to the
There's still a annoying problem with disc reading
not working all the time. I'm working on it, but I'm not
sure if this can be fixed.
The README has been significantly updated. You can
search for what's changed by looking for the string "***"
(three asterisks). Here's the changelist.
- Added +SpaceBelow* parameters.
- Toggle through the console with the NUON button. Also added +ShowConsole to default to the console screen.
- Initialization startup screen.
- Intro screen works.
- Background image works.
- Descriptive text automatically wraps based on font size.
- Added +LineWidth - setting to zero disables the line
- Added +ScreenBorder* parameters
- Added +TextFontSizeDesc
- All images can use either jpg or tga files.
- Removed +ImageBG. Program will detect presence of bg.tga or bg.jpg automatically.
- If the full description text does not fit on the screen you can scroll it with C-up and C-down.
- Added second instruction string that's shown when holding B. Changed +TextInstr to +TextInstr1 and added +TextInstr2.
- Added section 5 in the README dealing with the console.
- The boot loader will automatically switch to the console when it detects an error.
- Fixed bug that caused Samegame to have corrupted graphics.
Here's what's still left to do. I hope to have the
stuff in italics done before Kev burns discs for the
- myparams.txt does not work yet.
- Sounds would be nice during menu navigation.
- For players with Aries3, add the ability to go into fast mode before loading the app.
- Arrows showing scrolling when appropriate.
- Indicate disc access somehow.
- Move all strings to aStrings.
- When pressing START from intro screen, menu flashes for a frame.
- Allow the use of the remote for those without a joystick.
- Improve stability when loading app images and description.
The official Boot Loader page is
here. I still need to take
screenshots to fill in the blanks.
I finished Ape Escape 2 this
weekend. A couple of the monkeys were rather difficult to
catch, but I managed to do it without resorting to
cheating. Now onto
Beyond Good & Evil.
Kev and I worked on the boot loader this weekend, but
couldn't get it to be perfectly reliable. The system would
just reboot or hang at random places depending on what files
were burned. I've decided to overhaul the program,
but that doesn't do Kev any good since the show is this
coming weekend. At least we got *something* working.
I'll release v1.1 tonight or tomorrow. That will be the
last update for the v1.X series. The new v2.0 will use a
different scheme for loading files from the disc. I'm
writing a utility to pack all the individual data files
into a single file. That way the boot loader only has to
deal with one file, and will only need to do a max of three
reads from that file.
Has it been six months since I released a build of
Decaying Orbit? This is getting as bad as when I wrote it
for the Yaroze. Time to polish off the boot loader and
get back to DO me thinks.
Activision Anthology is
great! The soundtrack turns what could have been a quick
shovelware title into something special. Funny, I was
playing Stampede, a game I
had in my youth. I must have really sucked back then
because I played for a much longer time than I originally
recall doing. I think now that I'm older and have played
games for a couple decades I can pick up on patterns and
strategies more easily. The controls they picked for
Kaboom really stink, though.
Obviously I didn't release the latest boot loader since,
well, I forgot. Time to write myself a note so I
I almost have the boot packing utility complete. Then
I'll go about modifying the boot loader to use the file
that gets generated.
Here's the latest boot loader
As I mentioned before this will be superceded by some
fundamental changes in the next version.
The latest version can be obtained from the links to the
Not many games played lately. I'm still enjoying
Activision Anthology and
Midway's Arcade Treasures.
I finished writing the utility to pack all the boot loader
files into one big file. Next I will add a parser to the
boot loader so it can use it.
I dusted off the Yaroze to play a friend's new game.
It's amazing that people are still developing for the
thing. I also loaded up the original
Decaying Orbit for a quick
reminder of how the game is *supposed* to play. It's a
dream to see it in all its 640x480 60fps glory. Too bad
the NUON port won't hit such lofty heights. *sigh*
I have the boot loader mostly converted to use the packed
data file. It's not tested yet, though. I don't expect to
have anything ready before this weekend.
This web page and all other pages on this site are
© 1999-2007 Scott Cartier