Cave Story is coming to WiiWare

3 10 2008

Looks like there’s now an official announcement, so I guess I can talk a little. It was said at the Nintendo Media Summit today that Nicalis is working on the port of Cave Story to WiiWare.

What’s interesting for indie gamers is that Nifflas (of Knytt fame) works at Nicalis, so it’s cool to hear of indie developers getting together.





Cave Story for PS3 Linux is cancelled

13 07 2008

Oh boy.

I think this will be the last port I bother with, as after having several platforms get pulled out from under me I’m not terribly motivated to do it again. Time to work on my own stuff again I think.





Cave Story for PS3 Linux is nearly done

8 07 2008

Oh well, that’s graduation all done and I’m now back at work full time. Surprisingly though, because I’m not both studying and working, I’ve got a little more free time in the evenings!

After working so much with Quake, I felt quite fed up of looking at its code. I needed to work on something else.

So I’ve been beavering away on a PS3 Linux version of Cave Story and I’m happy to say it’s nearly done. This is a fresh port based on Pixel’s source code, instead of the earlier SDL/GP2X/x86 Linux port by Simon Parzer and I. There were a few things which I wanted to do a little differently in the code to make it more portable to systems which didn’t have SDL, such as the iPhone or WiiWare.

Those ports sadly fell through, but because Pixel gave Simon and I permission to port to Linux, I thought it would be a nice idea to port to this particular flavour of Linux that a few folks may have in their living rooms.

But anyway, I still need to do a few things before I can release it:

  • Get my wireless controller working in Linux.
  • Make a configuration file which maps the controls suitably.
  • Some memory usage optimisation.
  • Write up some documentation.
  • Work out how to make an .RPM.

Cave Story looks great on the big screen, so I’m quite excited that it’s nearly finished. I just hope I’ve found all the byte order bugs!





No Cave Story on Wii or iPhone from me

12 04 2008

About two weeks ago I sent an email to Pixel asking if he would consider letting me port Cave Story to WiiWare or iPhone/iPod Touch.

He replied a week later, saying very politely that he was unable to grant permission at that time but hoped to be able to explain why sooner or later.

My interpretation of his reply was that some other company had gotten in there before me and made Pixel an offer regarding a commercial port of Cave Story. So while it’s a shame that I won’t be involved in it, it’s exciting to think that there may be a version of Cave Story coming to another platform.

But that of course is just my interpretation of Pixel’s response and is completely unconfirmed.





Cave Story plans

31 03 2008

Even though I can’t continue work on Cave Story for the GameCube as a hobby project, that doesn’t mean it’s a dead project.

I have a port of Cave Story I’ve been working on, to basically get a clean cross platform layer in there. What I’d like to do is get a port up and running on another platform, but in terms of other platforms, my options are somewhat limited at this point.

I’m thinking either iPod Touch/iPhone (even though I don’t yet have a Mac or an iPod Touch/iPhone) or even a console download service if I can get permission from Pixel and AGTP, work out all the legal garbage and whatever else.

There’s a whole load of hurdles to get over if going that route, so it’s just a pipe dream at the moment.





NDA’d in 3… 2… 1…

16 03 2008

Regular readers, subscribers (or stalkers!) may remember that I moved on from homebrew PSP development when I gained access to the official docs and development hardware through my work. Because my employer had signed a non-disclosure agreement for Sony, I couldn’t keep homebrewing and still guarantee that I wasn’t inadvertently leaking Sony’s uber-secret technical details to the general public.

I then moved on to GameCube development, as in work we weren’t doing anything for Nintendo hardware and I didn’t have to worry about those kinds of conflicts.

Until now that is, as we’ve just become registered WiiWare developers.

While we’ve not started development on any WiiWare titles yet, it’s probably just a matter of time. I’m really excited about the prospect of doing some cool stuff on the Wii, but I can’t help but feel a bit bummed out that yet another homebrew door has been closed.

It’s easy to feel angry at my employer about this, but really it’s not their fault. Sony and Nintendo’s attitude to developers is to blame here. But that’s a rant for another day.

If any readers would like to continue work on any of my projects, please let me know.

I’ll see if I can fire out a quick release of something before it’s too late, but no promises okay?





Cave Story GameCube reaches the intro screen

7 03 2008

I’ve been a bit quiet about Cave Story progress, so I thought I’d make a short post about it.

Before I begin, I would like to ask news sites to please not copy and paste my posts verbatim into their news stories, as this prevents me from editing posts or making corrections.

But anyway, like Simon Parzer’s GP2X port, the GameCube port uses SDL underneath. GameCube SDL is now a work in progress in the devkitPro CVS repo, and with the help of WinterMute and the other devkitPro guys it seems to be coming along great.

Audio, threads and timers are really not implemented at all in GameCube SDL yet, so there’s a lot of Cave Story (mainly audio) which had to be disabled in order to get the GameCube version up and running past initialisation.

Here are a few pictures to sum up progress:

Cave Story in SD LOAD Cave Story loading its initial data Cave Story at the intro screen Oh no!

The game gets to the intro screen, but crashes shortly after. I’ve got some ideas about what the problem could be, but I’ve not got the time to look into it right now. Perhaps when my uni workload dies down a bit.





Multiple topic catch-up!

14 08 2007

Phew, looks like Quake GameCube was pretty popular. As of now, it’s been downloaded 362 times. Who knew there were so many GameCube homebrew fans!

There’s all kinds of discussion going on about it on various forums and as much as I’d like to respond to all the queries, all those forums are just way too much to keep up with. So what I’ll do is cover the main points here.

Some folks have quite reasonably supposed that there won’t be any more GameCube homebrew from me because my Wii isn’t capable of running SD Media Launcher any more. The good news is that I do my development using a regular purple GameCube connected to my PC via a TV card. I think I would go insane if I were using the Wii as my main development console. It takes so long to start up and get into GameCube mode!

I really should have put a new post up here when I released Quake, as many sites have copied and pasted my last Quake post into their news items.

Additionally, I really should have put up a screenshot. Many sites used screenshots from GLQuake or highly modified Quake engines to illustrate their news posts, which is a shame because the shots they used don’t represent what the GameCube port looks like.

In terms of gameplay, some people don’t like the way the view centres itself vertically if you start moving. I think this is a Quake feature rather than a GameCube port feature and there should be something useful (“lookspring”?) in the options screen if you want to disable it. I like it on, so I never thought about it.

It’s unlikely that I’ll be doing any updates on Quake soon, mostly because I’m getting stuck into a new project at work and annoying network card issues have caused me to lose some schedule time, but partly because I’m pretty happy with Quake and there don’t seem to be any glaring issues that need fixed ASAP. That’s a first!

Anyway, I’m glad people seem to like the port and hopefully there’ll be something else for you in the coming months.

As I was concentrating on Quake, the GameCube ports of SDL or Cave Story haven’t really progressed much since I wrote about them last.

Simon Parzer has been working on the SDL port of Cave Story. He’s been doing a great job implementing a mixer for sound effects and music. We’re sharing the same Subversion repository so he can port to Linux and GP2X while I port to GameCube.

The GameCube port of SDL is going okay. The only problem I see is with the audio system. SDL won’t convert audio properly when the frequency change isn’t a power of two. Unfortunately the GameCube plays only 32KHz and 48KHz audio, which isn’t very common, and SDL won’t convert correctly between those frequencies and the usual suspects like 11KHz, 22KHz or 44KHz. This is due to be fixed in SDL 1.3, but until then I’ll need to write an on-the-fly rate conversion routine.

After I get back on schedule with work I’ll pick up SDL again. I hope once SDL is released that the flood gates will open for loads more GameCube ports. The scene seems a bit bare. I think the recent GameCube homebrew contest at DCemu only had one entrant!





The Cave Story port uses SDL

18 07 2007

Last time I mentioned writing a common abstraction layer for Cave Story as an intermediate step to getting it up and running on the GameCube.

I decided on SDL for handling as much of that layer as possible. This has a few advantages:

  • I can test the port on Windows.
  • I don’t have to write so much code.
  • The process of porting to other platforms is simplified.

There are quite a lot of references to RECTs throughout the code, which I don’t yet want to convert to SDL_Rects. That may sound silly, but SDL rectangles are stored as “left, top, width and height”, whereas Windows rectangles are stored as “left, top, right and bottom”.

It’s not a large difference, but while converting a few snippets over to the SDL way isn’t at all difficult, the number of RECT references is large enough to cause a few evenings worth of tedious and error-prone work, which I would rather skip! I just want to get the game up and running with as few far-reaching changes as possible.

So instead, I convert RECTs to SDL_Rects at the last second, just before blitting.

But anyway, there is one glaring hole in my longer term plan. As far as I am aware, there is no stand alone GameCube port of SDL. If believe there’s a version for GameCube Linux, but not a stand alone library. Fortunately, porting the parts of SDL I use to the GameCube probably won’t be much more work than I would have had to do anyway.





Cave Story source

13 07 2007

After the initial hiccup from a few days ago, Pixel sent me the source code again and it arrived safely.

I took some time last night and this morning to skim over it and get it compiling using Visual C++ Express. It wasn’t too much trouble, only requiring some brief fixing up of resource scripts, different DirectX SDK locations and the odd thing which has changed with the newer version of the compiler.

I was really surprised to find that most of the code is in very readable English! The comments are in Japanese, but all the variables and functions are in English. I expected them to be in Romaji (because C++ identifiers are limited to a subset of ASCII). Japanese programmers deserve some credit for translating and programming at the same time!

While the code is generally clean, it is very Windows-centric. Some data files (notably the music and end sequence images) are linked into the executable as resources and there are also many uses of Windows types like RECT and BOOL throughout the code.

Handling endianness and debugging it on the GameCube is going to be difficult. I think I will need to go over all of the file loading code with a fine toothed comb and do what I can.

While ufo_z’s PSP port is based on Cave Story 1.0.0.7, I noticed that the version I have is 1.0.0.4. I’ll need to check with Pixel to see if he’s accidentally sent me the older code.

This morning I set about separating the source code files into generic and Win32-specific directories. This will make it easier to strip out any unnecessary Windows dependencies and help define a common abstraction layer which can be used between platforms.

It may be that on non-Windows platforms I will supply a dummy windows.h header file just to define the Windows types that Cave Story needs. The advantage of this is that my modified sources won’t diverge too much from Pixel’s, making patching easier in the future. The downside is of course that doing that would be a kludge, fixing the problem at the symptom instead of at the cause.

But anyway, that’s enough Cave Story for today. I have proper work to do.