11/01/98 -- Changes * Added credits screen. * Added support for .deh/.bex inside of wads. Found and fixed several more Boom DEH bugs. * Added support for user comments to be embedded inside of mbf.cfg. * Fixed plat speed in -beta emulation. * Tidied up demonstration wads/dehs. * Wrote docs. 10/30/98 -- Changes * Added ability for monsters to be affected by friction (ice/sludge). * Fixed menu-popup during demo playback if automap is active. * Fixed EndGame during single-playback demos. * Fixed dogs' aggressive level to be what it was before. * Found out that default.cfg is read and understood by Allegro, to the peril of your music :) default.cfg should not be used for any Doom-like engine which uses Allegro, unless you really need it for your sound card. * Fixed ice bobbing once again (I can see why it led to so many problems :) * Fixed point-source wind effect so that it affects monsters and players equally, and so that it generates force inversely proportional to distance squared. * Fixed Final Doom gamemission setting. * Made missing patch error output less verbose unless -devparm is specified. 10/29/98 -- Changes * Fixed problems with backspace in setup/option menus (wrong menu was chosen). * Fixed bobbing and ice even more, to eliminate the influence of voodoo dolls on bobbing, and to make ice more realistic. * Stopped recording this log. 10/28/98 -- Changes * Fixed many Boom bugs * Wrote my own blockmap builder that I had been planning on doing. * Fixed slime trails after looking at some demos of it. * Fixed Boom door lighting effect to have gradual lighting instead of an on/off switch that happens when the door is all the way opened or all the way closed. * Added 271 & 272 linedefs for sky property transfer. Avoids many of the issues of skies which were imposed on in Doom, and is an elegant solution. Skies can also be rotated if scroll effects are used. * Imported some minor Boom bugfixes (compatibility mainly, plus messages, Final Doom). * Fixed Boom v2.02 bugs: underwater sprite lighting, stairbuilding, DEH thing flags by name. DEH flags have separate TRANSLATE1 and TRANSLATE2 flags now, and they are OR'ed instead of added, so as to prevent multiple entries from causing problems. The | symbol may also be used to replace + as a punctuator in such a list, although spaces are all that are needed. * Fixed player bobbing to only occur when player is applying thrust. Thus players standing still on conveyors, or sliding down ice, aren't affected by bobbing (although ice code makes it difficult to see the difference). * Saved fractional texture offsets and fractional sector heights in savegames, mainly for sky rotation. * Added hotkey for setup menu. * Fine-tuned automap pointer so that follow-mode-off cursor remains as close to the follow-mode-on cursor as possible, until the player moves it, as far as displayed coordinates go. Verified that there isn't any noticable bias (full zoom-in shows the floor height to change exactly at the right boundary where the pointer points). * Split compatibility setup menu into two screens, and fixed the highlighting of the two-line FIST/CHAINSAW SG/SSG weapon toggle option. 10/21/98 -- Changes * Added option to ignore SG/SSG and Fist/Chainsaw toggles * Fixed savegames during demo recordings 10/20/98 -- Changes * Made sure beta lost souls stopped moving when dead. * Added option to prevent zombie players from exiting levels (Phase I goal). * Tried to address up/down asymmetry in monster behavior on stairs. * Added support for dogs to jump down off tall ledges. * Enabled Doom stair builder behavior when compatibility-selected. * Tidying up menus. 10/18/98 -- Changes * Added new menus: General and Doom Compatibility. * Nearly all .cfg variables are now settable in menus, eliminating the need for .cfg editors and front-ends. * Improved menu system's numeric input, to allow backspace during input, to allow negative values to be entered, and to avoid changing the original value if the entered value is out of range. * Made menu system's reset-to-defaults more robust (false activation or improper functioning of this routine might explain the random resets to defaults that occur, but then again, it may not explain them). * Added menu support for filenames to be entered. * Added support for up to two wads and two .deh files to be preloaded. The preloaded ones take precedence over anything on the command line, allowing something like a full-brightness wad (which changes the colormap) to always take precedence. However, -noload can be used to suppress it, such as if a demo that doesn't use the .wad or .deh file(s) needs to be played back. * Added menu support for options pending until next program invocation, as well as options which must have a function called after they are changed (e.g. changing the video mode). * Added optional flashing disk icon, as in Doom. * Split Doom compatibility variable into separate parts, allowing each to be changed independently in the Doom Compatibility menu. * Emulated beta lost soul behavior. * Other touchups in beta: player sprites, E2M5 sky, berserk pickup, and others. * Made engine clear 2s flags in linedefs without second sidedefs, to prevent SegViols on common wad errors. Doom didn't crash on most of these wads, only because it used a different DOS extender, and the behavior is undefined (it's Russian Roulette when it comes to programs). * Added automap option to show automap pointer coordinates, instead of player coordinates, when follow mode is turned off. * Added option to make HOM cheat either a solid color or flashing. 10/06/98 -- Changes * Less-rapidly changing levels.wad and graphics.wad are now distributed at: http://classicgaming.com/doom/betalevl.zip * Improved Pause during demo playback. Now it stops intermission and demo pic screens better, and automap and menu are easier to use when demo is paused. * Fixed underwater sprite drawing slowdown and added lighting flicker to the savegame. * Added ability to save games during single-player demo playback. Now you can save in the middle of demo playback, as well as recording. Saves that were recorded in the demo, are suppresed during playback and a warning appears. * Fixed Boom music delta problem (random garbled noise in some music, such as Memento Mori 2, MAP23). 09/29/98 -- Changes * Pauses are now allowed during demo playback. However, in rare cases, using pause during demo playback may cause desyncing, especially at the beginning of the next level or in cases where the intermission screen is paused (testing is encouraged, but is only good if reproducible by me with a demo). * Entering the menu while recording a demo does not cause the demo to desync anymore during playback (a Doom bug). * Savegames recorded in demos get a suppression warning message printed when played back (but no game is saved during playback). * Fixed Boom bug in which menu messages >= 40 characters would not print correctly. Pressing F9 before setting quickslot would print a message with garbage at the end. Actually, this was a Doom bug too, but it was probably never visible, due to compiler differences. 09/22/98 -- Changes * Fixed torque code. Now oscillations don't happen easily -- a falling object now reaches equilibrium, and objects don't fly off ledges at fast speeds. * Made Boom sprite lighting more consistent under deep water or over fake ceilings. * Made config file handling more robust, and added informative diagnostics. 09/15/98 -- Changes * Fixed bugs in torque code, so that it only affects non-sentient objects that fall under gravity. * Fixed Boom bug in which "soundtargets" (permanent signatures of sound origins that are left inside sectors) are not saved across savegames. Soundtargets are saved and restored now. * Improved bouncing code so that grenades lose less momentum bouncing off of walls, and so that the only momentum that is lost, is the component that is perpendicular to the wall. * Removed TNT prefixes from all cheat codes. TNT*** should still work (except TNTKA and TNTEM), but the TNT is not a part of the cheat code anymore. Added back IDK, finally, and added KILLEM. 09/13/98 -- Changes * Commented out code which lets monsters drop off of tall ledges, since it's too risky right now. * Added code to simulate torque on objects hanging over ledges. Objects at rest can now fall off of ledges if their center hangs off of one. This makes up for the anamoly in which objects could be pushed over ledges, but they often came to rest before falling off, and would stay up at the taller height even though most of their mass was over the ledge. That anamoly did not occur in Doom, because in Doom, tall dropoffs had invisible barriers which blocked the motion of all objects except players and corpses -- if an object was pushed over a ledge, it would stop moving if the ledge was too tall, no matter what force was applied to it. That had to be removed in Boom, to allow conveyors to push objects off of ledges. Note: multiple ledges can be used, and can cancel each others' effects out, although the amount of realism is limited to what Doom can handle -- after all, there's no such thing in Doom as angular (rotational) momentum, at least not yet :) To simulate it realistically, would require handling angular momenta along the x- and y-axes, and would require being able to rotate sprites. So the realism is necessarily limited, and improving it would be harder. Doom copped out by simply not allowing objects to ever hang over ledges in the first place. * Fixed minor oversight in stuck-in-wall fix (it didn't account for players stuck under floors). Boomedit.wad's exit teleporter sticking problem is fixed now. (Note: this fix has no relation with TeamTNT's recent effort.) 09/09/98 -- Changes * Added AI to help monsters stay out from under crushers (they can still get through safely), and to let monsters jump off of tall ledges if that's the only way they can escape from near-death (now, if I can just make the dogs do that normally :). * Improved stuck-in-door fix to be more accurate. Now it guesses better, so it should almost be unnoticable, except that monsters don't stick to doortracks anymore. * Made monster AI more uniform (as far as friends vs. enemies of player). * Tried to maximize AI efficiency without slowing the game down much, by using lots of tricks. 09/08/98 -- Changes * Added AI to let monsters more easily join friends on crowded lifts. * Added AI for monsters to help dying friends. * Added AI for monsters to strafe or back away from enemies when tactically advantageous (such as in Tyson wads, or when the enemy is one of the dogs). * Added AI for monsters to be smarter about going after enemies. Specifically, going after enemies in the immediate vicinity first, and tending more to divide up work with others, by passing up enemies that are already engaged with friends (previously there was an overt tendency towards pack-attacks). * Minor performance tuning. 09/05/98 -- Changes: * Fixed Doom II SSG gunshot flash to be more uniform in lighting along the gun. * Fixed Classic BFG to brighten up BFG during firing, and to have less pronounced recoil. * Fixed Boom bug which was cause of slowdown with friendly monsters, and which caused large levels to slow down under Boom in multiplayer games, when a player went out of view of a monster. * Improved monster AI to search more quickly and intellgently, by only considering a few monsters at a time, searching in the immediate vicinity first, and searching monsters in an order which leads naturally to friendly monsters dividing up their work among different targets (instead of all friendly monsters going after one target, then another, etc.). * Tuned fixed-point arithmetic functions a little more, gaining a few fps under -fastdemo. 8/29/98 -- Changes: * Fixed Boom friction slowdown problem, I think :) Boom used a crazy algorithm, which explains the slowdown: * Each object is set to "normal" friction at the beginning of every tic. * During EVERY TIC, every sector which is tagged with a friction linedef, is checked to see if it really has friction property (the sector flag). If it does, then every object touching that sector is checked, and has stored into it, the friction it would need if it were moving. * Whenever it comes time for an object to be moved, its previously stored friction value is used to reduce or amplify its momentum. Friction was being stored as an object's property, when it really should be a sector's property. Thus, every object on the map had to be updated with friction information every gametic, whether or not it really needed it. The new approach: * Each sector which is tagged with a friction linedef, has friction parameters computed and stored with the sector, at the beginning of the level (this information can't change during the level). * When it comes time to compute the friction applied on an object (a computation which doesn't even happen for some objects, or which only happens during certain times), then the sectors which the object is in contact with, are checked for friction and the floor with the most friction which is contacted, is used when updating the object's momentum. The result is that we do a little more work per object than the old method did, but we process FAR fewer objects for friction information, and we do so FAR less often. Demo sync with past versions of Boom is not guaranteed, but -might- work. Over 50 lines of code were rewritten, and the slightest difference in timing or anything else, could throw off Boom demos which use friction. The old approach was simply wrong, and keeping it for demos leads to "code explosion": Essentially, to maintain 100% demo sync, you've got to double the size of your code, and maintain two completely different versions, one of which is bad, since there's not enough overlap between the two versions to simply 'nudge' one into behaving like the other, based on whether an old demo is running or not. Also, the old version would be prone to "bit rot", because unless it's exercised regularly by testing and playing, it will likely get a bug without notice, and the only symptom may be a demo desync noticed months after the bug was introduced. All my software engineering instincts go against keeping the old, performance-buggy code around for demos, and only for demos. * Considerably sped up monster searches for targets, by supplementing existing Doom thinker_t data structure with linked lists containing objects in a particular class. Each object can be a friend, an enemy, or a misc object. The regular thinker_t list and operations on it are pretty much unaffected. But each thinker_t now has additional linked listed pointers, cprev and cnext, which point to the previous and next members in the same class as the node. Every time an object is spawned, killed, or changes its friendliness, the node's class links are updated, so that it is placed in the correct list. The result is a continously updated list of possible targets for monsters, without burdening the monster search with extra objects which are not candidates. If there are only 3 friendly monsters, for example, but 10000 other objects, then a search for friendly monsters would only involve those 3 objects, instead of 10003 as with the old method (10000 of which would be rejected immediately, but would still be scanned). Searching the thinker linked list for monster targets that are not really candidates for monster targets, puts a lot of load on the CPU, especially given the linked nature of the list (causes lots of memory cache misses). The new method entirely skips such non-candidates. * Fixed Beta plasma fireballs, to stop them from activating lifts. * Made "doomednum" lookups faster, by using hash tables. Only affects level startup time (not performance of regular play), when all of the things are spawned initially, and the thing types are translated to mobj types. 8/23/98 -- Changes: Too many to remember :) 8/18/98 -- Changes: * Added Doom-style page flipping for faster display without tearing. Now 486 and other low-end systems can have smooth play without slowdowns due to waiting for vsync. (Note: page flipping has nothing to do with memory managers, EMS, or XMS, nor is there any remote similarity. I say this since someone I know, once assumed it had something to do with virtual memory paging. No, it's completely different.) * Improved setup menus to print warnings about modified parameters that are sometimes delayed until the next game, to prevent confusion. This includes the Beta BFG. If you save a game with the Beta BFG turned on, but your default is to have it off, then loading a game may temporarily turn it on. If you go to the menu, you will now be warned about the discrepancy, which is NOT a bug. Don't ask for any more beta features to be made optional in Boom outside of the general -beta option :) The BFG is the only separate one. Doing it for all of the beta's features would take too long and would waste memory while you play Boom (because of all the extra sprites which are needed). Use -beta for beta features. Only the BFG has enough reason to be a separate weapon, and it does not take up much memory as far as sprites go, since it only needs the old fireballs (the BFG itself is the same). 8/14/98 -- Changes: * Fixed rad suit palette bug. * Fixed Doom bug in which prevented using non-missile exploding objects in blocklists. Fixed grenades on lifts. * Improved bouncing objects to bounce off of walls. * Prevented screen palette changes if -nodraw is used. * Allowed TNTHOM and IDDT cheats to be used during demos. 8/09/98 -- Changes: Fixed some Doom bugs: * Monsters stuck in doortracks -- this was a Doom bug, in which Doom thought that since a monster was touching a door linedef, and its motion was blocked, that ALL it had to do was open the door, and this would be enough to free its motion. Of course, this is not true if it was moving towards the doortrack!!! No amount of door-opening will free it up, if it's moving towards the doortrack. The solution was to randomly return failure when a wall obstacle was met but a door linedef was activated. This way, the monster will try other alternatives some of the time, not always assuming that opening a door is sufficient to free itself. Tested it with a Baron, and it works. Note: returning false all the time, would make it look funny, since then a monster would always turn away from a door for a split second after opening it. And determining exactly when it's stuck and when it's not, is difficult to do. A random approach has a much better chance (pun), since it explores different alternatives, independent of their interaction with the environment. * Beta BFG and other fireballs passing through walls. This was another Doom bug, which just happened to occur more often with the beta BFG because of the number and velocity of fireballs. Doom normally cuts all object motions into steps no larger than a certain distance, so that collisions are not missed. However, someone forgot to use absolute value when comparing speeds, so instead of (|x| > max OR |y| > max) being the test, (x > max OR y > max) was the test. This caused non-uniformity in how collisions were handled, depending on which compass direction the objects were moving. Fix is to make it symmetrical, and this happens to fix most cases of the beta BFG. YabbA DaBba Doom!!! (Yet Another Doom Bug!!!) * Fixed Boom bug in setup menu, in which numeric entries (as opposed to yes/no entries, weapons, or keyboard mappings), did not become active during the current game (someone forgot to implement ptr2 for numeric menu items :) * Fixed bug in cr_brick translation table (16 extraneous bytes right after the active range of 176-191 -- simply deleted the one line of C code which was extraneous). * Made sky ivulnerability colormap behave like Doom's when compatibility mode is used. In non-compatibility mode, the sky has the same colormap as everything else does, under invulnerability, but in compatibility mode the old behavior is used. * In non-compatibility mode, made boss spawners, and only boss spawners (and players), telefrag others. Old logic (still used in compatibility mode): Telefrag if agent is a player, or MAP30 is running. New logic: Telefrag if agent is a player, or if it's a boss spawner. Old demo sync is preserved, of course, by reverting to old behavior in old demos. * Added new automap color to indicate friends under iddt cheat. * Improved performance of monsters seeking player friends as enemies -- previous implementation had a large slowdown caused by excessively searching for them. * Added BFG2704 message in beta emulation mode (Oh Yes!!!). * Made friendly monsters tend to stay a certain distance from the player, which can be programmed in the setup menu. It's only very approximate, and does not constitute a hard rule that prevents friends from getting closer. All it does, is that when friends are following the player, they move away from the player when they are within this distance. But if they are attacking another monster, possibly right next to the player, this distance doesn't matter. Making this too strict, makes the friend's behavior too easy to predict. Experiment with the distance (default 128), and tell me what you think -- it's supposed to keep the dogs (or other monsters) out of your feet, but where they can still follow you. * Improved BFG's bouncing to support other objects as well. As an example, grenade.deh is included. You can also make the player have the MF_BOUNCE flag set, in which case, the player will bounce on the floor and experience a kind of flying :) ... And others I can't remember. Don't waste time writing a LONG description, or recording a demo, for a change you notice that I did not mention, without first checking with me, because it's most likely a very intentional fix for a Doom bug, that I forgot to list. Just mention it if it concerns you, such as if it's doing something really crazy, or if it breaks demo sync with Doom or Boom demos of version 2.02b or earlier. 8/04/98 -- Changes: Fixed a teleporter problem in which the height was sometimes off -- oops!!! 8/03/98 -- Changes: Made regular monsters look for friends and wakeup if they see them or are attacked from behind. Now a dog who goes up and chews a Baron on his rear, will have his day :) Enemies still look for players first, but will go after friends as well if they are spotted. Not sure of impact yet, or whether this needs to be made optional. Fixed (or rather, worked around) beta chaingun sprite problem. The beta Doom did not have complete sprites for its chaingun (some were chopped off at the bottom), but this did not matter for the beta, because it did not allow fullscreen. Workaround is to lower the chaingun while it fires, so that you don't see any of the messed up sprites. In non-fullscreen mode, it still works as before. Included player and rocket sprites, based on two requests / beta discrepency reports. Improved player autoaiming so that friendly monsters can be aimed at by players, despite autoaiming preferring enemies when there is a choice. If you want to get a kick out of killing dogs, you can do so easily now :) Fixed -timedemo so that automap, messages, and other things work just as in -playdemo and -fastdemo. 8/02/98 -- Changes: Fixed Boom v2.01/v2.02b bug with not being able to pick up weapons, which happened randomly on DM levels. I'm going to see if the new Ty-rrany Source Project can crack this one, which took me 10 hours :) I won't tell them, not just yet. If they solve it, it will probably only be through trial and error, by backing out past changes and comparing results. Removed TNT ENDBOOM screen, replacing it with regular id ENDOOM screen. Fixed monster movement clipping so that monsters don't hang off ledges voluntarily, but can escape if pushed. Previous fix allowed them too much freedom. Fixed player movement clipping so that players can get out of stuck positions, such as if they teleport partially inside a closed door or a 1s wall. Needs testing again to make sure no "holes" were left :) Note: movement clipping fixes do NOT currently include removing "bumps" along walls when sliding along them. That bug is Doom's and is hard to fix because Doom uses something similar to what is termed "impulse-based simulation" in the literature -- lots of tiny collisions (impulses) happen along the wall, to simulate an overall smooth motion. When the player's motion is at an angle towards the wall, the component parallel to the wall, minus friction, becomes the resulting movement. Sometimes Doom calculates this very roughly, leading to wall-running, "wall bumps", and other effects. Longer-term item, harder to fix. Another note: "getting stuck out of closed doors" does not include monsters getting stuck at doorjambs. That's a completely different issue, more related to AI than movement clipping (the reason monsters get stuck is not because movement clipping says they can't move -- rather, it's because the AI keeps trying to make them go in the same direction -- this is known as "getting trapped in local minima" in AI literature). 7/29/98 -- Changes: Fixed problem with walking through closed doors (happened on rare occasions). Backed out change to let player walk out closed doors, until this can be fixed without side effects. Tightened stuck-in-wall fix to only cover players, in case wad authors want to use it as an effect for monsters (e.g., keep them pinned up to a wall). 7/27/98 -- Changes: Fixed demo desync problem, which was caused by accidentally making monsters respond more quickly to player attacks. Fixed (or at least, reduced) problem with monsters stuck hanging off ledges. In Boom, conveyors and projectiles could push monsters off ledges, but if the monsters were not pushed all the way off (only partially), they became stuck. The same phenomenon occurred in Doom whenever a monster was lifted by a platform but was not completely on it yet. The fix is to relax movement clipping so that monsters can move more freely, even when hanging off ledges. Fixed problem with players and monsters getting stuck in walls if teleported with even the slightest roundoff error (such as with Boom line-to-line teleporters). Fix allows objects to move out of 1s walls and out of closed doors, if they are partially inside. To see the effect, turn on no-clipping, move into a wall, and then turn no-clipping back off. You will still be able to walk out of the wall, but not back in. Fixed long-time Doom bug (more of a hack, really) in which sky textures were not properly colormapped with the invulnerability colormap (or the light-amp visor colormap in beta emulation). Fix makes everything, even the sky, become seen through the same glasses :) Was too tired to work on beta lost soul behavior, or other things. (I needed a rest, really, after training all those dogs :-) 7/24/98 -- Changes: * Recalibrated BFG parameters to more closely match beta, increasing power of fireballs and adjusting exit speed and position along BFG. * Prevented BFG fireballs from bouncing off of skies. * Merged friendly monster code and beta code together, now part of same source: * You can select the beta BFG as an alternate weapon when playing Doom wads, by changing the Options/Setup/Weapons setting. * Beta features besides BFG are enabled with -beta command-line option (eliminates the need to maintain two executables). New boom.exe replaces beta.exe and Boom v2.01. * Monster infighting may be disabled in the Options/Setup/Enemies menu. * The number of helper dogs (1-3) can be changed in the setup menu or with the -dogs command-line option. (-dogs followed by a number from 0 to 3). * Demos may be recorded and played back with and without -beta. However, -beta MUST be used if a beta demo is played back (allowing the user to override this could result in game crashes -- beta demos require beta emulation mode be turned on, but it must be turned on at game startup -- allowing it to change in the middle of the game would be like asking to load wads in the middle of a game -- turn Doom into its own frontend). * Autoaiming of projectile weapons is always enabled in non-beta-emulation mode. In beta emulation mode, autoaiming is off unless AIM cheat is used. * Included friend.deh file as a DEH example of creating friendly monsters. By changing the thing flags you can turn all of a particular monster into a friendly monster (but in the engine itself, not all members of a certain type of monsters need to be friendly or not). Friend.deh is commented and should be easy to change to make any monster friendly (though I don't know what good a friendly Commander Keen will do :). The following problems / bugs / idiosyncrasies are already known about: * HOM and slime trails are not 100% emulated in beta. Those are not worth preserving IMO. Artistic errors, yes -- HOM or slime lines (construction errors), no. Case closed. :) * Beta emulation lost soul behavior / deaths (still working on it) * Loading 2.01 Boom Savegames give warning but may still work. If this warning were not printed, some savegames might crash and you'd ask me why :) * Friendly monsters may be telefragged easily (they hang around telerporter exits, especially ones near walls where the only way to go out is to move in a direction that's physically farther away from the player). * Friendly Arch-Viles don't resurrect dead players yet (how'd you like to be resurrected? :) * Friendly monsters don't wake up monsters like players do. [FIXED, except performance concerns still valid and need algorithm rewrite.] * Beta skies are not the drawn the same as in original beta. * Beta chaingun's bottom is drawn incorrectly. [FIXED by working around it] * Friendly attack-only monsters cannot be autoaimed at, even if they are the only monsters in sight. [FIXED] * Helper dogs get replenished health at each level start. Fixing this is a little complicated -- when did you last see a non-player carry over to the next level? :) * Helpers don't pick up items, need ammo, or use medikits. They don't get hurt by nukage. This is very complicated to fix systematically and intelligently without messing up the game for the player :) Not a one-weekend job, so be patient :) * Beta font is too small or unreadable. For this one, without going the full route of creating two sets of fonts (the beta's and Doom's), there's nothing that can be done about this, other than improving the colors of the text. Either sacrifice the beta font entirely, live with it, or significantly rewrite source to allow multiple fonts. Note that the setup menu font problem is a completely separate issue from the size of the fonts (it has to do with colors instead of size because of an algorithm in Boom, transparent to the user, which requires red-colored "base fonts"). * Friendly monsters cannot jump down ledges. Requires somewhat complicated AI to fix this, without making them turn into jumping jacks that jump at every opportunity, perhaps into inescapable traps. One idea already considered is to add a weapon key to wave the player's fist once, and then return to whatever weapon was being used. This waving of the fist would not require any new weapons or player signals to be added, but it could be used to signal the dogs or other friendly monsters. * Some vertices suck up plasma and bullets. This is really just another Doom bug, or a problem in a particular wad's blockmap. * Friendly monsters get in your way (I'm sorry!!! :) 7/17/98 -- Changes since last version: * Doubled BFG ammo -- it's hard to tell, but this looks more like the original. It seems slightly large, but it's 2 fireballs per cell energy used up (40 green and 40 orange fireballs). * Added AUTOAIM and EEK cheats. AUTOAIM cheat toggles projectile autoaiming, which is off by default (it was not present in the original beta). * Fixed TNTAMO cheat to prevent it from conflicting with AMO cheat. * Don't know whether plasma fireballs bounce on floors and ceilings, because there's no way to tell without any z-momentum in the fireballs -- no autoaiming existed, and certainly no lookup/down, so the fireballs always shot straight, which means it's impossible to tell if they would bounce. I'll assume they did, since the same fireballs were used for the BFG and the plasma rifle. 7/14/98 -- Changes since last version: * Fixed invisibility to not affect psprites. * Adjusted plasma / BFG fireball damage to be like Romero suggested to me: half the strength of normal plasma in later versions of Doom. 7/12/98 -- Changes since last version: * Problem with fireballs walking up stairsteps fixed (looked funny!!!). * Angle spread of BFG fireballs fine-tuned, to look more like the beta. * Fireball exit position improved -- makes fireballs larger when they exit BFG, and makes them move with weapon bobbing. * Fireball speed fine-tuned. There's no way of telling the true speed except by experimentation (care to become a Doom road cop? :) I doubt even Romero remembers details such as the speed of fireballs. * Plasma and BFG fireballs distinguished as far as bouncing. * Fixed light amp goggles to use a green colormap like real night vision goggles. There is evidence of this special green colormap in the beta, and if you modify the beta's .wad file to insert light goggles, it's used, and it also explains the mystery of the unused 34th colormap in Doom -- there were originally two colormaps besides the 32 light levels: the white one used for invulerability later (used for invisibility in beta), and the one used for light amp, which was not used except in the beta. Note: the light amp goggles don't ever lose power in the beta, and so to prevent users from having to cheat to turn them off, or else forever see green until the level finishes, I've retained the timeout (I say "retained" since I'm going backwards in time :-). * Made rad suit last until the end of the level (like berserker strength), just as in the beta (I assume this is what happens -- I can sit for minutes and it never wears off). Also removed palette changes for rad suit and berserker, which were not present in the beta. * Made invulnerability orb behave exactly as in beta (potion in a tall blue flask colored and shaped like a health bonus in released Doom) -- it does not affect any palette or colormap, except to flash the white colormap when it runs out. The tall blue flask is the old invulerability orb, because it has the same sprite name, and it appears under the beta if you change a thing to use its thing id. There is such a flask on the middle of the 3 pillars on E3M2 which rise when the player walks past the UAC room with the unholy bible on the floor, but the flask never shows up, because its flags say it's never on map. Later of course, it was replaced with a backpack. * E3M2: donut lowers aligned, crushing ceilings changed to correct speed. * E2M5: marble room doors made like original, 4 crushers' walls made steady, some original beta bugs restored (e.g. crusher room entrance). Todo list: * Figure out whether plasma fireballs bounced like BFG fireballs. * Consider slowing down lifts (they are running faster than in the beta). * Figure out the exact number and distribution of green/orange BFG fireballs. I'm currently assuming 20 green and 20 orange, each alternating like in the plasma gun, but it looks like there's more in the original, maybe as much as twice as many -- perhaps each of the 40 units of cell energy delivers an orange and a green one. If anyone can run the original beta at ultra slow speed, it might reveal the pattern. * Figure out exact speed of BFG fireballs. * Figure out the exact damage of BFG fireballs, possibly depending on color. * Change lost soul behavior to emulate the beta. * Optional BFG autoaiming? (The original BFG did NOT autoaim -- I will definitely keep this optional, but perhaps autoaiming should be added.) Files: BETA.EXE Version of Boom modified to have beta features, such as the classic BFG9000. This version of Boom is not supported by TeamTNT, just me :) GRAPHICS.WAD Replaces and supplies graphics necessary for the Beta. This wad can be used with Doom I, Ultimate Doom, or Doom II, and is necessary to completely reproduce the BFG9000. BETA.EXE automatically adds this file, which must be in the same directory as BETA.EXE. LEVELS.WAD Replaces levels and textures used in the Beta version: E1M2, E2M5, E3M2, which eventually became E1M2, E3M5, and E2M2, respectively. To play these levels requires Doom I or Ultimate Doom. Some points to note: * For now, you should copy CWSDPMI.EXE and any other files you normally use, from an existing Boom directory. For best results, boom.cfg should not be copied over without first reviewing the defaults, which are optimized for the Beta, and which are different than Boom's defaults. * Lifts in the original 3 beta levels need to be checked to make sure the lower textures under them are not missing (HOM), and to make sure they are the correct texture (the same as in the original beta). * It seems like Romero changed all WR linedef types that existed in the beta into W1 linedef types, and then proceeded to add totally new linedef types for the WR ones. I had to convert all of the linedefs in the beta's wad from Beta WR types (which are the same as W1 types in the released Doom), into released WR types. But some might have been missed. * Lost souls have not had any behavioral (code) changes made yet. That's on the todo list. Right now, there are only new sprites. * Translucency and gamma correction are best turned off, to fully get the same "look and feel" as the beta. Oddly, I feel like the beta is more colorful and looks better than Doom, which is sorta washed out (either washed dark or washed bright). With Doom, I turn up the gamma correction because of poor contrast, while the Beta already has better contrast. Part of this perception is pure sentimentality :) * The Barons' horns are slightly different in the beta, in case you didn't notice :) * You should be able to play any of your favorite Doom and Doom II wads with this mod. Only if you use a DeHackEd patch or BFG/plasma sprite modifications, should there be any problems, but even then, only DEH patches have any chance of making the game unplayable, and then only when the BFG is modified by the patch. The vast majority of wads are playable with the new BFG. * The health and armor bonuses use the same thing numbers as the demonic daggers and the skullchests, respectively. Currently, wads which use health and armor bonuses will show demonic daggers and skullchests instead, and they will work just as in the beta (they just disappear, and a message is printed). Later, I might change this, and change the thing numbers in the 3 Beta levels to use 3 unused thing numbers (notwithstanding the JDS, or any other outside organization :-). * Please keep this quiet for now, so the release will have more value (initially and long-term). If this gets spread around right now, people seeing its bugs might lessen its value, or the planned release might not get the attention it deserves (people seeing it now will be less likely to download it again). * To prevent confusion, I'm talking above about the binary files, beta.exe and beta.zip. The Doom news pages knowing about my work is perfectly okay, and is intentional (I told them). It's the "beta beta" binaries (i.e. the product), that I don't want leaked now. Lee Killough killough@rsn.hp.com http://classicgaming.com/doom/