Monday 21 May 2007

Just an update

For those who actually read this (and not the main QDS web page or gbadev stuff), here's a quick update on the whole Quake-on-the-DS situ'.

Pre-release one went fantasic and I received an overwhelming response from the community - so thanks everybody for the great comments! Thanks again for all the people who made it possible - the game wasn't the single-handed effort I expected it to be (well, I did do all the coding myself though). I haven't gotten an exact count but at least 20000 people downloaded pre1, which I think is pretty epic.

Next up are a bunch of YouTube vids, in particular the very early one of Quake2 running on my DS. They said it couldn't be done... ;-)

Back on QuakeDS, pre-release two was released towards the end of April. It's hard to believe that pre1 and pre2 are the same game, just with a bit of graphical gloss. I really didn't expect it to take ten weeks for it to happen though! The little things (such as menus) took a lot longer than I really expected.

On Friday I finally got round to cleaning up the network play menus, so I could get the wifi build out for everyone to play...but it's still a bit too early to know how that's gone down though!
There's stuff still left to do in Quake, such as sort out the extended-memory build, for big mods. I haven't decided if I can be bothered to properly finish this though, as I just don't have the time to spend on the game any more.
There are also graphical effects which still need to be finished in the game and the QuakeC virtual machine still needs a lot of work, as this is mostly responsible for the game's crappy framerate.

Next up is Quake2.

Saturday 17 February 2007

Nearly ready...

First up, here's the most recent video I've uploaded:
http://www.youtube.com/watch?v=Vq94rwfig8s

I'm planning on doing a public pre-release tomorrow, so I'm trying to fix as many things as I can before then...

So, here's the project status:
- game runs, lots of memory free :-)
- most 3D rendering is in there
- brush models are now back after going away for the last few months
- still no textures on models - haven't looked into that yet
- lighting it still broken - need to spend more time on that
- texture co-ords are still off - MUST fix this
- no particle effects yet, but they can't be too hard to get in there...
- sprites got broken when I did the big 3D change a few months back - hopefully won't be too hard to fix
- we've now got sound! Still needs work to get it working properly: it needs to be fully moved to the ARM7 to save me some (code) memory and cycles, but also I want to move the sound storage to VRAM. That way I can do my own memory management and I'll be able to get rid of the pops and clicks during disk access. I'll also be able to get rid of those 3D sound bugs.
- MP3 music is in there, but there are still IPC problems and I'm not too sure of the licensing of the decoder. This prob won't be included in the pre-release build
- now works with r20 of the toolchain (used to use vanilla r19)
- now uses DLDI and libfat, so should hopefully work on all DLDI-supported cards (although I've had weird problems on my M3 Simply)
- no proper networking yet
- proper Quake console has been added, but it's still not finished (too low res)
- lots of code has been moved to fixed-point, but in-game performance still is poor
...that's about it :-D

I wanna say a big thank you to the people who have given me donations and hardware. Teh pwn, teh pwn.

Watch out for some action on gbadev (and maybe dcemu) tomorrow.

Sunday 7 January 2007

That video

Here's that video, as I've been asked to provide a link to it here.
http://www.youtube.com/watch?v=BIA7VHEBulM

It was originally hosted on my ISP webspace but it "used excessive bandwidth" so now it's on YouTube!

It's still the old version btw, and doesn't show the new super-fast version. As a result it chugs a little in the open areas.

Oh and thanks again to the people who've given me donations. I'm gonna get a Supercard soon. 

Monday 1 January 2007

73H fr4M3R473 N0 l0n93r 5uX0r5!

Hi, first up I hope everyone had a great Christmas and a new year!
It's back to work tomorrow for some of us :-(

Anyway I nearly quit QuakeDS a few weeks ago - Christmas eve and my CF card decides to die. I go around town looking for cheap cards but of course there are none... When I finally get a couple of them I get home and my gbamp refuses to boot from them! I coax my old CF card back into working again, only to blow another fuse inside my DS! So basically I'd gone home for the Christmas period with nothing to do but Quake and I'd just bricked my DS. Not cool.

But anyway, once I got back in London it was straight onto eBay to get myself the screwdriver to open the thing, then once it arrived there was a fruitless hunt for solder so I could fix the thing. But I'm back up and running now!

So regarding the game progess, all brush models are now textured (mostly) correctly. Some texture co-ordinates don't line up properly but I'm not gonna bother looking into that for a bit. I also just the other day solved the weird texture problems and palette corruption, so it now looks fantastic :-)

One bi-product of fixing the texture weirdness was that it has forced me to do more transformations in hardware, improving the performance. It has also broken the Alias model rendering - something I'm going to work on next. I then spent today completely pulling apart the poly generation/dispatch to use absolutely no floating-point numbers, removing the software clipping (which is a shame) and putting even more transformations into the hardware. But it's been totally worth it and the frame rate is just dynamite :-D

Monday 18 December 2006

After some testing....

So I've given out prerelease builds to a few people to iron out some early bugs.
I was initially very wary of doing this, as I wasn't too sure of the reaction I'd get, but I'm glad that I did! It seems that not everyone has the same hardware and pak files as me!

To begin with, I didn't realise that I had to specifically add support for certain cards, plus there seem to be problems when using the pak files with the Supercard, since when the pak file directory structure gets loaded it also gets corrupted. Once I get the hardware hopefully I'll be able to fix this. I hope I don't get these problems with other flash cards (though I blatantly will...).

Now I'm back developing QuakeDS again - that mostly means improving the performance and working on texture mapping and lighting the scene properly. This is the fun bit! It's gonna look like a real game once I'm done.

Oh and no, I'm not planning on using extra card RAM on this project. I'd ideally like to make this game available to everyone who has a flashed DS, not just the people who have a SC/M3/etc. Plus I hear the performance of the memory on these card's ain't hot. I'll just have to wait till I get my hands on a card to find out what it's really like :-D

Monday 4 December 2006

The Quake Blog?

My god, I've become one of the herd. I don't approve of blogs or the blogging culture, so let's keep this DS-related! You'll see no poems here nor tales of teenage angst.

So as the "Quake, yeah" thread on gbadev.net is becoming kinda large I'm gonna try and see if I can move some of the status update-like stuff here and keep the (development) requests for help in that thread.

For those who don't know I'm in the middle of porting Id Software's Quake to the Nintendo DS hand-held system. I've also started testing the technical viability of doing Quake 2, but that's still at the early stages. And yeah, there's another guy doing a port of Quake 1 (John Gillotte) and no, I'm not him. Development of that version seems to have been quiet for some time (and so people seem to have given up waiting) but I've been assured by him that work still progresses... I however intend to get a version out within just a couple of months for you people to play with!

Quake 1

I've been doing the port for this on-and-off since late October and the game looks quite doable on the DS, even though it was never geared for this sort of hardware!

The situation:

- the original game required somewhere between ten and twelve megabytes of RAM, including the loading the program into memory. The DS has four megabytes of general-purpose memory - not cool.

- the original game was software-rendered, something which requires a decent amount of computational power, something the DS doesn't have. It also required a math co-processor. Something the DS doesn't have :-)

- the DS does however have special hardware which can do 3D graphics with a low overhead, so that's definitely a good thing!

- the DS has a wireles interface built right into it, so this game would be awesome to play on the go against fellow DS owners.

The score, so far:

- the game runs like a flat slug when using the software renderer, partly due to the lack of the FPU. It is however still playable. Hell I played through it at this speed when it came out on the Amiga! Ah, what a Christmas that was...

- the game sorta fits into memory, although I could really do with just one more megabyte of RAM... Some levels are currently too big to load with texture and light maps, so have to be plain shaded.

- networking works, although I recently removed it to free up some RAM. It will be back though. Compatibility with stock PC versions isn't guaranteed though. A custom build may be necessary.

- there's no sound. Might be quite easy to do though. Although I've never ever programmed sound before... Low on the list of things to do.

- works with either the shareware or registered pak files. Well I'm guessing here anyway! At the moment you can use the same pak files as normal PC-versions (I'm using the files from the Amiga version), but I may later post-process the the textures to make them more DS-friendly. I can either have the console do this every time you load a level or just once, on the PC. I'll have to write a tool if I choose to do that.

- I recently started to use the 3D hardware in order to render the brush models (the world, ammo boxes etc) and the alias models (the enemies, weapons etc) and I'm stunned at just how fast it is. I've not yet done *any* optimisation but it really does fly! Plugging in hardware-accelerated polygon rendering was a breeze. I was seriously expecting a fight! Everything else has been so far :-s

- I've not yet decided how to do the lighting as the hardware doesn't support multi-texturing as far as I know. Got some ideas in the works though :-)

Quake 2:

The 'sequel' to Quake 1 requires a whole lot more of the system than the first version did, but I'm still determined to bring this to the DS homebrew crowd!

RAM usage for this title is simply cringe-worthy - I can't believe that it runs on the N64! After building the basic version of the source the executable required over nine megs of RAM (I had to change the linker script just to get it to link!). And that's before loading any of the 30+ MB of models, maps, textures, sounds, lightmaps!

So I took this source ran it on the PC, slowly reducing the memory usage but still ensuring that all the demos played ok until the executable was small enough to fit into the DS' 4MB. So yeah, Quake 2 runs (ok) on the DS, as long as you're looking at the menu screen! The good thing to know is that if the model data were there there'd be no problem rendering it - I wouldn't have to find yet more memory for the framebuffer, Z-buffer, rendering surfaces etc.

What's gonna have to happen if you wanna see Q2 for the DS is for someone to get me a card for the DS which has extra memory! I'm talking about something like a Supercard or an M3. With one of these I'm very confident that I'll be able to bring Quake 2 to the DS, but I'll also bet money that Q2 *will not run* without extra memory.

In order to buy one of these cards I'm taking DONATIONS.

Come on folks, I can't do it without you!

To summarise:
You'll be seeing Quake 1 on your Nintendo DS within a couple of short months.
You'll be seeing Quake 2 on your Nintendo DS (and memory extension) a number of months after that.
I'll be posting some new pictures and videos (ie not the ones from the gbadev thread) once my DS gets repaired...

Quadword to yo mamma

PS: I don't work for Id Software and all of the credit for these two games should go to them. I'm just doing these ports for fun and no commerical gain. You'll also require a homebrew-capable DS, ie an off-the-shelf DS won't run this without modification.