hex11
Senior Member
Posts: 1984
Registered: 09-09 |
Well if anyone's interested, here's a diff that gives chocolate-heretic the same functionality as heretic+ (note: it's a text file with Unix EOL terminators):
http://www.sendspace.com/file/hvj9d5
I tested it and it doesn't crash when I play the E1M3 map in the blasphemer IWAD (vanilla heretic crashes with VPO not far after passing the bridge over the small river). I also played the first handful of maps in the Heretic Treasure Chest megawad, with mostly just some small glitches (tutti fruti and such). That is until I got to E1M4 where it crashes hard, and by that I mean an unexplained segmentation fault rather than VPO or something like that:
http://www.sendspace.com/file/zxe2lj
Since it dumped core, I debugged the process and it's dying in R_PointOnSegSide() while trying to access struct data that has an invalid memory address, but the actual problem is happening somewhere higher up in the stack. I don't know enough about the Doom engine to tell exactly where or why, but I'm sure the 32 "sector X is not closed" errors that Yadex reports for that map probably have something to do with it, because I observed similar crashes on maps with the same error being reported when inspecting them in the editor. The weird thing is that when I zoom in to the problem sector it actually appears to be closed and all the linedefs have good valid sector references. But there are some vertices which are very, very close together, maybe only two map units apart or so. And I'm wondering if the vanilla Doom engine simply doesn't scale well down to that level of precision? Well if anyone has any ideas, please share. :) Also, if there are any good docs, text files or whatnot on the engine internals, please post 'em.
Incidentally, a couple errors I found while playing blasphemer:
E1M3 - linedef 1555 needs a sector tag and sector 326 needs identical tag number (I used 7 for both)
E1M7 - 2-sided linedef 1509 has a multi-patch texture (maybe change it to STNGLS2 instead?)
Some ports may correct these automatically, but it's not guaranteed. The default behavior for an untagged linedef (i.e. tag 0) is to apply to ALL untagged sectors. And the default behavior for multi-patch textures on 2S linedef is to produce visual glitches. These problabaly fell through the cracks due to someone testing with an engine that went above and beyond simply removing the hard limits such as max visplanes, etc.
Last thing: I was wrong about fraggle adding the BEX string stuff to chocolate-doom. He DID talk about it sometime last year in the Freedoom forum, but my svn co from two months ago doesn't have it. If he's not going to do it, I might look into it perhaps.
|