Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
Sign in to follow this  
Scet

Limit shattering WADs?

Recommended Posts

I'm in the process of adding limit removing to my port and need some WADs that break the old limits. Not common stuff like visplanes, but more obscure ones like the 64 moving ceiling/platforms or the 32 spawn spots.

I'd prefer ones that create errors on startup to speed up testing. Thanks.

Share this post


Link to post

If you're upping the seg limit to 65535 (the highest that the binary map format can represent), you could try the secret level of Crucified Dreams, as well as Jagermorder 02 - both of these levels are in excess of 40000 segs, 50000+ in the former case. Loading them into a port without map object offset extension will result in an instant segmentation violation. They both use some BOOM features though, IIRC, so you might would have to modify them to get them to run in a non-BOOM-supporting port.

In order to properly do the seg limit extension, you have to change ALL the offsets that map objects use to refer to each other from short to int (do not go with unsigned short, as this causes a problem with the default value of -1). Then on load you can carefully convert the values from short to int, changing what appear to be negative numbers, except -1, into positive ones. This gives effectively twice the range in the same amount of storage space. See Eternity's p_setup.c file if you need a point of reference.

Share this post


Link to post

@r_rr: Yeah I knew about NUTS, only good for testing the sprite limit though. Well and my new memory manager, which blew up part way through.

@Quasar: Why would you need a negative segment reference? Only class I have so far that uses segments is the subsectors, and none of the functions accessing them seem to check for negatives.

Edit: So you store the indices as ints so you can check for -1, but when accessing an array make it unsigned? Seems like it would work excpet for 0xFFFF(-1), so the limit is actually 65534.

Share this post


Link to post
Scet said:

@Quasar: Why would you need a negative segment reference? Only class I have so far that uses segments is the subsectors, and none of the functions accessing them seem to check for negatives.

Edit: So you store the indices as ints so you can check for -1, but when accessing an array make it unsigned? Seems like it would work excpet for 0xFFFF(-1), so the limit is actually 65534.


I dunno about segs themselves, but sidedefs must be extended as well, and linedefs use -1 to indicate that they have no second side.

Also, this was the cause of a massive argument previously, so I'll just repeat the conclusion that was used to put it to rest last time:

The allowable values for offsets range from 0 to 65534.

By the fencepost theorem, a consequence of basic arithmetic, the number of items when the items are numbered from M to N is equal to N - M + 1.

65534 - 0 + 1 = 65535. If 65535 were useable, there would be 65536. Which makes a lot of sense if you think about it.

Share this post


Link to post

Yeah I should have said "upper limit", thanks though.

Back on topic, does anyone know of a WAD with more than 64 moving platforms? I'm guessing it would be rather tedious to create, so probably not.

Share this post


Link to post
Scet said:

Back on topic, does anyone know of a WAD with more than 64 moving platforms? I'm guessing it would be rather tedious to create

Not really. Just place a lot of sectors connected to a big room (something like a bunch of crates or a long stair in the middle of the room), give them all the same tag and place a lift switch with this tag.

Interestingly, the individual steps of a raising stair do not push this limit. Thus, raising stairs can have several hundred steps in Vanilla Doom.

Share this post


Link to post
LogicDeLuxe said:

Interestingly, the individual steps of a raising stair do not push this limit.



Doom makes a very important distinction between moving platforms and moving floors. Stairs are just moving floors, not platforms, so they never get added to that list.

Share this post


Link to post

I've been testing Deus Vault and CChest 2 and for some reason get this weird HOM effect. It's usually in the distance and when I get closer or turn towards it, it goes away. Does anyone know what causes it?

Edit: Nevermind, it was caused by the drawseg limit

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
Sign in to follow this  
×