Archive for the ‘releases’ Category

And now, for something you were all expecting…

June 8, 2008

I proudly present you :

lsdldoom for the PS2 v.0.0.5 without any sound !


It has been complicated these days… Very little free time to try to overcome the bug in the sources when loading an external WAD. It’s kind of odd, since this only manisfests in this favour – it seens not to happen on the “embedded WAD” version. It could be related to memory corruption, and by pure luck the embedded loads the ELF and the resources into a different memory area, safe from the possible trashing.

Anyway, I realised that if I disable the sound functions, the bug does not manifests. So, if you’re really eager to play the doom.wad or doom2.wad and don’t want to wait for the solution, try this :


(remember that the WAD files must be in lower case (doom.wad and doom2.wad, for example)

The good thing is that Doom is so great that even without sound it’s addictive!

I hope the next time I’ll post about this port of Doom i’ll bring good news and the bug fix. But it could take a very long time, I warn you.

Take care.


Still about gsKit and interlaced mode – part 2

May 15, 2008

So I took the findings mentioned at my last post and did a simple gsKit screen setup. Additionally a BMP picture is load and shown at a non-interlaced screen.

I started by going into the main() of uLaunchELF and setupGS() and put all their gsKit screen init code into a unique example source file. Surprisely enough, I’ve found that the non-interlaced screen mode of gsKit is¬†… well, not I¬†was expecting¬†:). In other words, it’s a 640×512 / 640×480 resolution screen mode¬†for PAL or NTSC systems respectively, but only the odd (or even, I didn’t invertigated exactly) lines are displayed, resulting in a half vertical resolution non-interlaced screen.

So, in fact, the example loads a 640×480 image but shows only 240 lines of it :). What a waste of memory…

That’s the interlace handling on the gsKit side. Now I see how uLaunchELF interface code could be generic, having only one font for both screen modes. The only way to set up a lower resolution screen mode is in fact changing the gsKit sources, as I did for lsdlDoom PS2 port.

I leave you now the example sources and compiled binaries, for those who aren’t developers or still struggling to have the SDK set up.


About the example : I also used the ROMFS system to have embedded the BMP image into the ELF. Consider this as an extra example ūüôā .
So, to compile it, you must have the romfs project on the ps2dev\ps2sdk-ports path. Point your SVN client to svn:// and get it.

So, the example BMP is included at the romdisk directory and by doing a “make -f Makefile.romfs romdisk.o” you get the ROMFS object file. Finally, a “make” should bake the rest of¬†this cooking.

As another extra, try putting a 640×480 BMP image named “picture.bmp” in the root of a USB drive and plug it into¬†the PS2 before running show_bmp_ule.elf or show_bmp_ule_interlaced.elf.
Your image will be shown instead of the supplied example image ūüôā .

As you see, you have four examples in one go : how to setup gsKit like uLaunchELF does, how to display a picture, how to embed files into an ELF, and how to load the USB drivers and get files from it. Not bad, huh?

My Adventures in gsLib – part 2

May 14, 2008

With the valuable help of Lukasz I’ve fixed the old¬†gsLib0.51 sources as from¬†to build under the current ps2sdk and I hosted it here :

Hosted by eSnips

and also here :

Once again, thanks Lukasz!

Update :
The lib was added to the official ps2sdk subversion repository at

LSDLDOOM-PS2 : Update 5

April 27, 2008

Time for an update.

I fixed some issues preventing the configuration loading at startup and saving at exit, so at last you can permanently backup your Doom configuration. The config file is saved at memory card 1 (mc0:DOOM/boom.cfg) when exiting using the Quit option from de menu.

I also added the option to force a specific display mode (PAL or NTSC) for whom needs it РSo just rename the DOOM.ELF to something ending with PAL or NTSC at the name (for example : DOOM_PAL.ELF or DOOM_NTSC.ELF).

Get here the shareware WAD embedded ELF (recommended) :

or the you-supply-the-wad version (more unstable) :

Now source is included in all releases.
Hope you like it.

LSDLDOOM-PS2 : Update 4

April 11, 2008

The (I believe) long waited game saving/loading ability is now working.

So now you can save and load your games at any moment to memory card. The typical save sizes is as small as 30KBytes so I see no reason to save to other devices, like USB media storage (besides, accordingly to the USB driver author, USB saving is not enough tested).

Just go the the save/load menu, hit cross button to start entering a filename. At this point, the only possible character that can be typed in is the “Y” letter by hiting the L2 button. I might add some more characters latter, but remember that you’re only typing a description for the save file, not the filename itself, so it really itsn’t that important.

In the source, only minor changes were needed to fix the saving and loading functions. I had to use the IO fio* functions instead of the f* which are overwritten by the ROMFS, so the MC0 wasn’t accessible earlier. I also needed to code the equivalente of the offending expression “*(long*)save_p” where save_p is a pointer to a char buffer. It simply results in an exception, maybe because of the PS2 memory architecture (you tell me in the comments section, please)

I must also investigate if the LONG and SHORT macros are bad or not for the PS2’s sanity… Could this be the origin of the freezings?

Get it here :

(with shareware WAD inside)

(you supply the WAD version)

As usual, the source is available here :

(look for the 0.0.4 tag)

LSDLDOOM-PS2 : Update 3

April 5, 2008

So time to new features :

I added support for picking the previous/next weapon. You can use “circle” to select the next weapon and “square” to select the previous. This time, I did it properly ūüôā so you can use another bindings to these features going to the options/setup/key bindings/weapons section and define whatever you want for the “next” and “previous”.

Get it here for the shareware embedded ELF :

or for the “you-supply-the-WAD” version :

Please note the freezing bug still plagues specially the non-embedded version…


LSDLDOOM-PS2 : Update 2

March 26, 2008

It seems the hang ups doesn’t happens in the ROMFS self-contained version, like Lukasz’s compiled here. I suspect from USB and sound RPC issues but I must admit I’m a newbie concerning these drivers (nope, it’s something else. I’ll keep trying to spot the bug ASAP) I’ve done some debugging. Until I have more clues, I also added ROMFS support like Lukasz did. So get it here. If it crashes (hangs, or something weird) drop a comment please.


So, this version have the shareware doom1.wad included (no loading of other WADs – this is the disadvantage of the ROMFS thing) and all the feature I presented¬†in the previous versions, although the option “Now left analog stick does rotation and right does straffing” cannot be disabled.

The recipe to ROMFS support : Like Lukasz said, I was a matter of adding the line “include Makefile.romfs”at the end of the Makefile, uncomment the “#include <romfs_io.h>” and “rioInit();” at l_main.c, creating a directory called “romdisk” and putting there the extra files (the “boomlump.wad”, “strafeonrightjoy.dat” (optional) ¬†and “doom1.wad” or other any WAD you have¬†instead goes here – use lower case for the filename!), doing a “make -f Makefile.romfs romdisk.img” followed by a “make -f Makefile.romfs romdisk.o” and finally a “make”.

LSDLDOOM-PS2 : Update 1

March 24, 2008

Some really minor changes. I changed the following defaults :

  1. Gamma now set to minimum. I prefer the colours this way IMHO.
  2. Press R3 button to change gamma if you prefer.
  3. Sound now is set to maximum.
  4. Press cross button to run. Previously was L3.
  5. Press L3 to display map. Was none previously.
  6. Now left analog stick does rotation and right does straffing. Previously was the opposite.
  7. Square button now changes between last two weapons.

Don’t forget you can set/change the button mappings in menu “Options/Setup/Key Bindings”. These settings aren’t stored at the moment.

All I do was set some new defaults for my personal taste, so no fundamental code changes were made, although I added some bindings when none were set at the code (like point 2, 5 and 7).

About point 6, I find more intuitive this way. I did a quick and dirty hack, so if you want the original analog sticks behaviour, just delete the file “strafeonrightjoy.dat” : in the future, there should be configurable in a config file or from the menu.

About point 7, some better way to cycle through all the weapons should be implemented later.

Get version 0.0.2 :


BTW : There might be some hang-ups during gameplay – it seems there is a bug in the code, already detected by Lukasz (the exception he mentions).

LSDLDOOM-PS2 : Another flavour of Doom for the PS2

March 21, 2008

Suddently, it seems Doom is popular on the PS2 for the second time. This is the second public port to reach the console, and this time, it has sound !

All credits goes to Jason Yu for making this possible. Check this thread :

So, Lukasz also did a fine job and wrapped it with the shareware doom WAD file, so from >here< you can get a full contained version (one ELF file only) bundled with the shareware WAD.

However I decided to take the source and do some simple changes.

Get if here :


First,¬†I’ve got rid of that flickering interlaced screen mode and¬†fixed the aspect ratio to match the original from the PC version, as I did for the other Doom port.

Secondly, I did nothing to the Yu’s sources ūüôā That it, those already supported loading from USB storage, so you can take my modified version, put on a USB pen along with the included boomlump.wad file and finally add a¬†Doom WAD of your choice : doom.wad, doom1.wad, doom2.wad, doomu.wad, plutonia.wad, tnt.wad and¬†doom2f.wad seems to be supported. Remember to put both the WAD files on the root of the USB device, otherwise it will not load. Just a comment : It seems there is an issue with the USB data fetching causing a hang-up. It shows often during the recorded play behind the menu at start, so begin a new game as soon as possible! ūüôā I really don’t know if it’s a bug of this port, but I strongly suspect it may be due to the concorrency of the audio playing routines and USB driver, since both uses the IOP and the PS2 is not very multi-tasking as you may know.

Anyway, this is only a small update to the excellent work of Jason Yu. There is room for a lot of improvements, such as better controls, a WAD selector, and a way to select weapons of course. Speaking of controls, from the menu select the READ ME to view the currently mapped joypad buttons.

What I plan now : apply the sound sources to the Lukasz port. Let’s see how things progress – it might be more complicated than I’m hoping.

Modified PS2 port of Doom – Update 1

March 16, 2008

Yesterday I was looking at the source to see how could I enable keyboard support. In fact it was very simple, since PS2 SDL already have support for it, it was just a matter of enabling it on the SDL makefile (HAVE_INPUT_DEVICES=1) and do a rebuild.

¬†Unfortunably it seems to be an issue when loading from a USB mass storage from uLaunchELF 4.12 and enabling the keyboard support… When I try to load it using uLaunchELF, it didn’t started. But launching it from network using PS2client/PS2link it worked fine, even the version that loads the WAD from USB. There must be differences from the way uLaunchELF and ps2client executes the ELFs. I tried to do a IOP reset from the doom.elf but nothing changed.

So, at the moment, a keyboard enabled version is available here but it must be executed from the network.

If you have the means from launching from the USB using other than uLaunchELF 4.12 (Datel AR, older uLaunchELF, whatever) and want to try for yourself, try this. If it works, drop me a comment.

Now enjoy keyboard support!

(I didn’t have yet the time to look properly to the sound issues and/or enhance the joystick controller…)