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

EE Progress Report

Recommended Posts

Here's what's been going on lately:

* Sound sequences are partially done. The environmental sequence engine is 100% complete and allows stuff like the Heretic global ambience objects to work.

* Some Hexen line specials are properly translated now, so you can open some doors and make some floors go up and down in Hexen (we call it progress :)

* Missing textures no longer bomb the game to the console; a message is posted there, but the game continues to run, displaying HOM on the offending lines. For a dramatic example, you can load Hexen over Heretic and then visit a Heretic map, where all the textures have become HOM.

* Variable pitch sounds work better now.

* Sounds can be seamlessly looped by ambience and sound sequences, and hardware channels are no longer stomped on unless all channels are taken, in order to make this work properly.

* Sound caching restored to proper semantics so that sounds don't stay in memory forever after being loaded, thanks to some code from Chocolate Doom.

* "Additive" sounds and sounddeltas can be defined in the new ESNDINFO and ESNDSEQ lumps. These can overwrite existing EDF sounds of the same name, but cannot specify explicit DeHackEd numbers.

* Joe is now an official team member and is working on tons of Small native functions.

* Ancient DOOM bug that semi-randomly crashed the game when the player fell down tall holes has been fixed at the price of expanding almost every short int in the rendering engine into a long int -- this avoids terrible integer overflow in the floorclip and ceilingclip arrays which caused, among other things, R_DrawColumn crashes, R_MakePlane crashes, and the corruption of almost the entire BSS memory segment, causing additional mysterious libc crashes when shutting down.

Share this post

Link to post

Thanks Quasar! Keep up the good work! Very pleased to see that you're working on ambient sounds.

Quasar said:
* Ancient DOOM bug that semi-randomly crashed the game when the player fell down tall holes

I've actually had this happen regulary in one specific spot in a map. Most of times while playtesting and running with noclip on through that deep pit to get to the stuff I wanted to check. Didn't mind it much, since it never happened when I wasn't using noclipping.

Share this post

Link to post

It was happening to me almost consistently on The Caves of Circe (Hexen map09 IIRC).

Here's why it happened. If the distance between the worldtop & worldbottom was too great, the value put into the "bottomfrac" variable would be negative, but it would be less than -32768. DOOM would then try to store this value into a short in the floorclip array, which tells where walls end and where floors begin.

But, doing this would cause the value to overflow to a large positive number, such as 32670 for example. The code had no contingencies for large positive offsets and would interpret them as normal column end values. Depending on the exact way this happened, you'd either try to draw a column off the bottom of the screen, try to draw a flat off the bottom of the screen, and/or the loop in R_MakeSpans would run drastically out of bounds and trash most of the static global variables in the program.

This latter occurrence is why it took me this long to fix this problem. I was aware of the R_DrawColumn overflow crash many years ago, but every time I tried to intercept it with live tests the program would crash anyways, or it would crash on exit and not show me an error message I had programmed. While looking at all the statics in the VC++ debugger this time, I realized memory had been overwritten, and with a combination of a .map file and some printf debugging (don't ever let anybody malign it, it can work...), I figured out the source of it.

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