A port of the classic first-person shooter, DOOM, is now available for your jailbroken PS3, thanks to the exploits of homebrew dev xttl. It also includes the source code, in case your interested.
Hi, now that legal development tools are available, I thought I'd start porting the classic game DOOM for the PS3!
It took a little while to get it to start up at all (without any graphics, sound, input...pretty much nothing except debug output to the Ethernet port), mainly due to some 64 bit vs. 32 bit issues (endianness issues were already given some thought in the source!).
Right now it only runs in 1920x1080 because the upscaler (the game still renders in 320x200) is hard-coded for this. I set the resolution info in PARAM.SFO correctly so that XMB will not even let you launch it unless you have 1080i or 1080p selected as a supported mode in display options. The controls are also hard-coded and it has no sound or music yet, but because this version is already quite playable (I just played through the whole shareware episode using it) I thought I'd upload it. "Release early, release often" you know. ;-) The 35Hz timer the game requires is implemented using a separate thread that just does usleep(1000000/35); ticker++; all the time because PSL1GHT seems not to have any support for the Cell OS Lv-2 timer syscalls yet (except for sleep & usleep). Timing seems to work OK like this though.
To use this, download the PKG (link later in this post) and install it using "Install package files". Then copy a supported DOOM IWAD to the game's directory (/dev_hdd0/game/DOOM00666/USRDIR/) OR put it on a USB drive (or on a CF/SD/MMC/MS memory card if you have an early PS3 that has the integrated card readers) under /ps3doom/. Then you just launch the game from the XMB icon and it should work.
The hardcoded controls are:
- D-PAD: Navigate menus and move/turn your character.
- START: Bring up or exit the menu.
- SELECT: Bring up or exit the auto-map. (while in game)
- L1/R1: Strafe left/right.
- L2: Use button. (open doors, activate lifts, exit the intermission screen, etc.)
- R2: Attack button.
- CROSS: Select an option from the menus.
- CIRCLE: Go back to the previous menu.
- SQUARE: Use for YES in menus and cycle to previous weapon in game.
- TRIANGLE: Use for NO in menus and cycle to next weapon in game.
Yeah no analog support yet, sorry about that! I am probably going to add fully customizable controls including USB keyboard/mouse support later when I get around to adding some kind of a launcher for the game. The launcher will also allow you to put multiple IWADs in your WAD directory and select one of them, load PWADs, etc. Right now that's not possible. ;-)
I also already know that the aspect ratio is a bit off (not quite 4:3 as it should be), so don't bother reporting that. This will be fixed later when I get around to adding scaling using the RSX. BTW. before you ask: I will probably not even attempt to add true high-res or wide-screen support, instead I'll probably try porting prboom+ (which has both already well implemented) in the future. I am also not interested at all in hardware accelerated DOOM. Just take a look at any of the accelerated DOOM ports for the PC or even Carmack's official iPhone port. The lighting is totally wrong in all of them (way too bright and uniform) unless perhaps you're playing a map specifically designed for them. However, if it turns out that prboom+'s software renderer can't run in 1080p with adequate speed on the PPU alone, I don't think attempting to offload some of the work to the SPUs is totally of the question then. ;-)
I also know that saves don't work yet, that changing the screen size from the options menu crashes and that there is no way to enter cheats yet, and that order for cycling the weapons is not quite what you'd expect (it uses the internal ordering of the game which goes like this: fist, pistol, shotgun, chaingun, rocket launcher, plasma, bfg, chainsaw, super shotgun).
You must quit the game from the game's own menu, not from XMB. Otherwise Lv-2 will crash and reboot. AFAIK this is a bug in PSL1GHT and not my own fault, but feel free to tell me if I'm wrong.
The source is a mess, yes, and there are probably some stupid things in there. But that was the case even before I touched it at all. ;-)
doom2.wad (DOOM 2: Hell on Earth)
doom.wad (The Ultimate DOOM or regular registered DOOM)
plutonia.wad (Final DOOM: Plutonia Experiment)
tnt.wad (Final DOOM: TNT - Evilution)
doom1.wad (shareware DOOM)
Use the latest versions (v1.9) of IWADs only or don't complain if something breaks. Especially the earliest versions of DOOM 1 are problematic.