![]() |
#1 |
\'Orphan\' touchplates bug fix
This is not a real bug, but rather lack of protection against a bug in map files:
While playing the Extreme ROTT levels, I often encountered crashes when stepping on some touchplates. These crashes occur in both OS X and Linux, but not in the original DOS version. There, all those nasty touchplates are treated as if they have already been stepped upon. After some debugging, I found out that they have NULL pointers in the 'touchplate' array (probably the developer of the level forgot to attach an action to them.) Apparently DOS doesn't care about the game accessing memory in the system area, and by chance the right byte has the right value, therefore it doesn't crash. So this behavior can be simulated by adding a few extra checks: in rt_playr.c around line 3765: change: if (touchplate[index-1]->complete) into: if (touchplate[index-1] == NULL || touchplate[index-1]->complete) in rt_door around 753: change: [i]else if (touchplate->complete) into: [i]else if (touchplate[i] == NULL || touchplate->complete) |
|
![]() |
![]() |
#2 |
Re: \'Orphan\' touchplates bug fix
These are two levels I remember (there also is one in "A Boulder Vision", but it would need to replay the level to find it and this takes quite long)
![]() ![]() At any rate, the current solution seems better to me than having those "touch-segfaults"... |
|
![]() |
![]() |
#3 |
3D Realms Staff
|
Re: \'Orphan\' touchplates bug fix
Well, Hoppe Hop is mine, as you can see by my initials in the wall. [img]images/icons/smile.gif[/img] Fire Flight is Tom Hall's.
I'll have to play it again to see the exact spot you're referring to, but I am curious to see here. I know for a fact I used tricks like that in Boulder Vision (also mine). There were several time released things that required running over a touchplate, but I can guarantee you they serve a purpose. They were never thre as "orphaned touchplates". They do SOMETHING, even if it's not blatantly obvious.
__________________
Apogee / 3D Realms Employee: Dec 14, 1992 - May 22, 2009, Oct 23, 2014 - current "Lifting up the Cross to the waiting lost" - Petra | John 3:16 |
![]() |
![]() |
#4 |
Re: \'Orphan\' touchplates bug fix
In the meantime I blasted through A Boulder Vision too and found the touchplate, it's the second one in a row of 4, starting from the bottom of the map or from the right of the wall if you enter the room. The others behave normally...
![]() |
|
![]() |
![]() |
#5 |
3D Realms Staff
|
Re: \'Orphan\' touchplates bug fix
As one of the two level designers for the EROTT pack, I'd be curious as to the EXACT spot and levels you're referring to here.
Some of the touchplates aren't as "useless" as you might believe. I know in some of my EROTT levels, I'd use a touchplate that would seem to do nothing, but in fact, it sets off some object off elsewhere in the level which moves objects that are timed to go off when the game player arrives at a certain spot in a level. By forcing them all to be touched like that before they were originally diesnged to be, you've likely corrupted the level design.
__________________
Apogee / 3D Realms Employee: Dec 14, 1992 - May 22, 2009, Oct 23, 2014 - current "Lifting up the Cross to the waiting lost" - Petra | John 3:16 |
![]() |
Bookmarks |
|
|