Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
Quasar

PSX Support in development

Recommended Posts

If you've watched the GitHub commit stream at all (or read my enormous changelog - yeah right :P) you probably already know about this, but I've been working on both a tool that converts a PSX DOOM CD into a .pke format archive, and support for it as a game in Eternity. In other words, playing the game using its native data, converted only to the extent necessary for loading it in a sanely constructed PC port.

Dev images here:
http://imgur.com/a/PrLet#0

I'll continue adding more as it takes shape (it's still fairly raw, with a lot of needed resources missing, but is entirely playable at this point).

Colored lighting was actually possible on the experimental highcolor branch of EE but that approach was just an experiment and won't work in general. I'd still like to add true color to Eternity (a major project in and of itself) so that they can work but for now you'll just see the 8-bit rendering.

I'm going to say the goal of this is not to emulate PSX exactly, as that'd be impossible in anything other than a fully dedicated port (something I'd like to see happen eventually and would probably participate in if it came to be a reality). It's more close to making the PSX game mission play more like PC DOOM. And I'm aware of the PSX TC's existence and I think those guys did a fantastic job. I just want to create something that can manipulate and work with the game's original data.

Share this post


Link to post

It's pretty neat.


Confession: a long time ago, while toying with Blzut3's Doom64 branch for ZDoom, I thought about working on PSX Doom support as an intermediate step easier to reach. Lack of time/other pursuits/procrastination made this never happen, and I abandoned the idea entirely when I saw you starting work on PSX Doom support in EE.

Share this post


Link to post
Gez said:

It's pretty neat.


Confession: a long time ago, while toying with Blzut3's Doom64 branch for ZDoom, I thought about working on PSX Doom support as an intermediate step easier to reach. Lack of time/other pursuits/procrastination made this never happen, and I abandoned the idea entirely when I saw you starting work on PSX Doom support in EE.

With some extra work (mainly adding the various scripts as resources for psxwadgen to put into the zip, and a bit of code added) ZDoom could probably use it too, but since the PSX TC exists, I'd imagine it'd be pretty low priority. The fact I have to hard code anything at all is only because EE still has some shortcomings with respect to its modding capabilities (no custom HUDs, statbars, intermissions, etc.).

At least this side project has helped drive forward several primary goals though. With the new sector special system in place for example, the Hexen map format now has proper sector specials. I also got Hexen MAPINFO support going as I thought this project might use it, but the ZDoom extensions to the original Hexen format proved insufficient for my needs so it's using EMAPINFO. Still, there's one more thing out of the way.

In my opinion, the ideal base for a "PSX Doom EX" would in fact be Doom64 EX, and I've been trying to convince Kaiser to team up with me on it, but so far he's not interested, mainly because he feels it would have to be 100% accurate and the disassembly is such a mess, and so mired in the bizarre design of the PSX's hardware, that it would be a nearly impossible undertaking. Personally, I'd be willing to and would *rather* create a port which makes compromises in this regard, such as NOT having crazy warping textures and holes in the walls and floors due to insufficient z buffer precision, than to not have a port at all.

Share this post


Link to post

I'm very excited for this. Eternity is my favorite advanced port because it's demo-compatible with the original game, licensed under the GPL, and takes on things that other ports don't bother with such as wall portals and now PSX support.

I have a few questions:


1. Are the actors going to use their state tables and sector movers use their speeds from the PSX version? Of course, I imagine if this were done that it'd likely be scaled to 35hz by doubling the duration of most frames to 2 and switching to 3 every 6 PC Doom tics for the sake of keeping sync with the underlying PC style engine.

2. Do you intend to display the world with an 8:7 PAR and the sprites with a 6:7 PAR as opposed to both using the traditional 5:6 PAR? I know that you generally just want to play PC Doom natively running the PSX scenario, but I don't know how much aesthetic differences like the PAR concern you.

3. Regardless of using PSX or PC Doom's state table, will actor behavior (regarding code pointers) be like that of PSX Doom? That is, demon bites being handled by hitscan, various attacks using a different random damage calculation, barons and knights being able to infight, etc.

Share this post


Link to post
Sodaholic said:

1. Are the actors going to use their state tables and sector movers use their speeds from the PSX version? Of course, I imagine if this were done that it'd likely be scaled to 35hz by doubling the duration of most frames to 2 and switching to 3 every 6 PC Doom tics for the sake of keeping sync with the underlying PC style engine.

For the most part, no. Revenants and their fireballs are slowed to half-speed via the EDFROOT.txt lump. But the difference in timing for other actors is not signficant enough on the gameplay for it to be worth the effort in my eyes. One thing that is handled for the most part is the timing of lighting effects; new thinkers and custom handling of existing ones has been added for PSX's sector types so that they appear aesthetically similar.

Sodaholic said:

2. Do you intend to display the world with an 8:7 PAR and the sprites with a 6:7 PAR as opposed to both using the traditional 5:6 PAR? I know that you generally just want to play PC Doom natively running the PSX scenario, but I don't know how much aesthetic differences like the PAR concern you.

No. This is something that only a dedicated port could pull off properly IMO. EE displays the levels normally, so they look mostly like their PC counterparts instead of squashed like on PSX.

Sodaholic said:

3. Regardless of using PSX or PC Doom's state table, will actor behavior (regarding code pointers) be like that of PSX Doom? That is, demon bites being handled by hitscan, various attacks using a different random damage calculation, barons and knights being able to infight, etc.

Lost Souls are made to count for kills currently. I plan on adding an action function for 1.2-style demon bites too. I may provide ability to tweak some of the internal damage values as well. The infighting thing is a problem that I have been looking for a solution to for a long time as well (it's currently still hardcoded in EE; you can't make other monsters behave this way - or NOT behave this way). All of this is or will be EDF based.

Share this post


Link to post

How do you intend to handle 2D graphics like menu, backgrounds, status bar, HUD weapon, etc.? Is it going to be the PSX TC approach of 5:4 pixels by stretching the 256x240 stuff to exactly 4:3 (resulting in a picture somewhat between how the game looked on both PAL and NTSC), or will you use 8:7 ratio pixels while only displaying the middle 220-224 lines (depending if you want blank space on horizontal sides)?

The latter would be more accurate to how the game's 2D art was actually supposed to be seen. PSX Doom was rather clearly not designed with PAL in mind, and the full 240 line area was not actually meant to be seen, but was simply there for (only vertical) overscan purposes as a "just-in-case". The blank 8 lines below the status bar strongly suggest that they designed the game for the standard 224 visible line standard many contemporary NTSC games used.

Share this post


Link to post
Sodaholic said:

How do you intend to handle 2D graphics like menu, backgrounds, status bar, HUD weapon, etc.? Is it going to be the PSX TC approach of 5:4 pixels by stretching the 256x240 stuff to exactly 4:3 (resulting in a picture somewhat between how the game looked on both PAL and NTSC), or will you use 8:7 ratio pixels while only displaying the middle 220-224 lines (depending if you want blank space on horizontal sides)?

The latter would be more accurate to how the game's 2D art was actually supposed to be seen. PSX Doom was rather clearly not designed with PAL in mind, and the full 240 line area was not actually meant to be seen, but was simply there for (only vertical) overscan purposes as a "just-in-case". The blank 8 lines below the status bar strongly suggest that they designed the game for the standard 224 visible line standard many contemporary NTSC games used.

psxwadgen does the horizontal stretching where it's needed so it's baked into the resources. For fullscreen 256x240 resources such as the DEMON screen, I've added code to EE that can scale a texture to fill the entire display surface. Since all the V_ drawing is sent to the 4:3 subscreen, this results in the expected appearance unless you're running in legacy 320x200 or 640x400 modes, which are not encouraged for use with the PSX mode for obvious reasons. I have added a shot of the Cast Of Characters to the gallery which demonstrates this.

The black area below the statbar is clipped out by psxwadgen currently as the DOOM statbar code can't deal with it.

Share this post


Link to post

PSXWADGEN stretches it and doesn't leave it up to the engine? Why? I'm not quite sure about that, to be honest. If it's for compatibility with more primitive ports, sure, but it should be optional (don't know if it already is or not).

I concede that it's more aesthetically pleasing to have square pixels with minimal scaling artifacts (and absolutely none vertically) when displaying these graphics in multiples of 320x240, but it isn't necessarily accurate to how it was designed to look, and these days I doubt many people are using multiples of 320x240 given the advent of widescreen and native-res-bound LCDs. I'm likely one of the few CRT-using dinosaurs left. :P

Despite my OCD obsession with screen and pixel aspect ratios (and the inconsistencies/ambiguities within), I don't think this is such a big deal since this isn't supposed to be 100% accurate and it does certainly look better to do it this way when multiples of 320x240 are targeted.

Share this post


Link to post

PSX Doom menu background already has scaling artifacts. In general, I think they did a rather lazy job at preparing the graphics.

Share this post


Link to post

Very, very cool! I see the spectres have some blank and some green - what algorithm are you using there?

Share this post


Link to post
kb1 said:

Very, very cool! I see the spectres have some blank and some green - what algorithm are you using there?

Normal spectres are additively translucent (currently all of them are 25% in EE; some of them should be 100% additive depending on their map flags, as was discovered later, but I've not had time to change the EE code to account for those yet).

The Nightmare spectres (greenish/black looking buggers) use 100% subtractive blending - background minus foreground, capping to zero on the low end.

Share this post


Link to post

Any progress?

I've never played the psx version but when I do, I want to play it in the most elite way possible :-)

Share this post


Link to post
VGA said:

Any progress?

I've never played the psx version but when I do, I want to play it in the most elite way possible :-)

I am currently engaged with another project that's going to use most of my time for the next 2-3 months.

Share this post


Link to post
Quasar said:

I am currently engaged with another project that's going to use most of my time for the next 2-3 months.


...it's long past those 2-3 months. For those not interested in looking at hundreds of github commits one by one, can you summarize the progress made in the psx doom department?

Share this post


Link to post
Danfun64 said:

...it's long past those 2-3 months. For those not interested in looking at hundreds of github commits one by one, can you summarize the progress made in the psx doom department?

That was followed by a month taken off and then another project I was asked to do (not Doom related).

However as soon as this one is done I have a billion ideas for how to revamp EE; it's going to be large fundamental sweeping change kind of stuff.

Share this post


Link to post

Wherever you built the exe, you probably need to move the resource files so that the executable can find them. Everything is included here:

https://github.com/haleyjd/psxwadgen/tree/master/res

 

Everything I was doing with EE is presently on hold. I am a fulltime dev for Nightdive and I am in crunch on a project as we speak and writing this post is technically goofing off that I don't have time for :)

Share this post


Link to post
1 hour ago, Quasar said:

Wherever you built the exe, you probably need to move the resource files so that the executable can find them. Everything is included here:

https://github.com/haleyjd/psxwadgen/tree/master/res

 

Everything I was doing with EE is presently on hold. I am a fulltime dev for Nightdive and I am in crunch on a project as we speak and writing this post is technically goofing off that I don't have time for :)

I can understand this, loud and clear! Best of luck with your Nightdive work.

Share this post


Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×