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

Port with Mirrored Levels?

Recommended Posts

At the beginning of the month there was the thread suggesting trying out different ports. As a result, I've tried loads of them. However, I've gotten confused! There was a port that allowed me to play through the iwad levels reversed (mirrored) but I've forgotten which one it was. Does anyone know? Thanks for any help. :)

Share this post


Link to post

How is that done programmatically anyway? I tried splitting levels without rebuilding nodes, but it became nontrivial when I had to setup the segs, because their cut offsets were no longer just negated values.

Share this post


Link to post

I've no idea but it's certainly a really cool difference from the other ports. Hopefully Fabian will see this thread and answer. :)

Share this post


Link to post
printz said:

How is that done programmatically anyway?

I did this as an April Fools joke back in 2008 and I assume Crispy Doom is using the same code. Here's the commit.

It's quite tricky to get to work but as I recall didn't actually take me too long to actually do. To start off with you (obviously) need to invert the X component of each vertex and thing. Linedefs need to have their vertices swapped because they're now the other way round.

Then, because you've flipped the map around you need to effectively reverse the BSP tree to keep things rendering properly. You can see that in P_LoadNodes where it reverses the direction of the dividing line for each node.

Finally the blockmap needs to be fixed. The original blockmap will work fine in the new arrangement, but the block pointers need to be rebuilt and the origin flipped. This makes sure that the blocks contain the linedefs for their new location.

Share this post


Link to post
Average said:

I've no idea but it's certainly a really cool difference from the other ports. Hopefully Fabian will see this thread and answer. :)

To be honest, I have "borrowed" that feature from Strawberry Doom. Its code is in turn adapted from the Chocolate Doom commit that Fraggle posted.

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
×