November 21, 2010 // 9:57 pm
- Today xttl
has released a PS3 Doom homebrew port v0.01 with source code for JailBreak users, followed by v0.02 which also includes sound support and some more updates below.
Download: PS3 Doom Homebrew Port v0.01 with Source Code
/ PS3 Doom Homebrew Port v0.02 with Source Code
/ PS3 Doom Homebrew Port v0.03 with Source Code
/ PS3 Doom Homebrew Port v0.04 with Source Code
/ PS3 Doom Homebrew Port v0.05
To quote: v3 is now out. Sound effects should work pretty much perfectly now, there's a simple launcher that will allow you to select an IWAD if you have multiple ones available (no PWADs yet, and the launcher menu only lists the first 10 IWADs it finds which can happen if you have duplicates of them on different storage devices) and in case an error happens after graphics have been initalized, you'll see the error message on screen. (not just via ethernet debugging if enabled).
I also switched the license to GPLv2 now (the DOOM source is available both under GPL and under another license that basically disallows any commercial use of the work, but allows you to withhold your sources). I had no intention to not release sources anyway, and this allows me to use code from other GPL'd ports. The 720p scaler in use now is from Chocolate Doom (though adapted to work with true transparencies instead of faking them with palette lookup tables) and 1080i/p is done using a similar idea.
v3 supported screenmodes: 1920x1080 and 1280x720. 640x480 and 720x576 STILL DO NOT WORK. Sorry! If you want to force 720p mode when you have 1080i or 1080p available, hold TRIANGLE immediately after you select PS3DOOM's icon from XMB and keep it held down until the launcher WAD menu appears. This is a workaround until I can figure out a way to query available video modes using PSL1GHT. I don't just want to assume a particular mode is available, and PSL1GHT's videoTest example just selects the same mode XMB is running in, which is always the highest resolution available.
You may want to force 720p because the scaler in 1080i/p is a bit slow. ;-)
I also changed the controls to analog now.
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.
Edit: forgot one more thing: The filenames are case sensitive, so rename your IWAD to all lowercase if necessary ("doom2.wad", not "DOOM2.WAD").