fraggle
Super Moderator

Posts: 4230
Registered: 07-00 |
I've imported the PrBoom-plus intercepts overrun emulation code into Chocolate Doom (thanks to entryway for his tireless research, as always :-).
I've noticed that there are a few potential problems with the overrun emulation code:
- Assumes little-endian processor: the playerstarts[] array is an array of mapthing_t structures, which contain 16-bit integers. On a big endian system, values could be swapped between some structure members.
- Doesn't translate memory addresses of intercept_t::d.{thing,line} pointers; ideally these should be translated to the memory addresses that they would be in Vanilla Doom, or approximations. This is also a 64-bit issue.
- Makes assumptions about the memory alignment of intercept_t structure members (fixed in my version).
Most of these are non-issues at the moment, but they could bite us in the ass in the future for 64-bit or big endian versions :-)
One thing I have noticed is that blackbug.lmp doesn't play back exactly the same as it does in doom2.exe. I don't know if this is just a bug in the Chocolate Doom overrun emulation, though (haven't tried it in PrBoom-plus yet). In doom2.exe, the sergeant walks through the player, while in Chocolate Doom he walks around him. Also, in doom2.exe, the par counter counts all the way up to 2:30, while in Chocolate Doom the demo ends before the par counter finishes.
|