93c5753270- Added a NULL sector check to P_CheckFakeFloorTrigger() because there was a crash report indicating that an actor being pushed up by a moving floor had a NULL sector. Since this field should be valid for every actor, the debug build gets an assert here, and the release build just returns without doing anything. - Fixed: Camera textures were not rendered properly when the underlying canvas's pitch and width were different (which, really, only happens if you use ridiculously large camera textures). - Fixed: FCanvasTextureInfo's were never freed. - Fixed: MAPINFO special action structures were not freed. - Fixed: FSingleLumpFont::LoadFON2() never freed its widths2 array.
Randy Heit
2006-05-19 05:14:37 +0000
1971f97fd6- Fixed: In case the path to strife1.wad didn't contain any '/' an incorrect path was created for voices.wad. - Fixed: The code building the path for Strife's voices.wad called the wrong FString constructor. - Fixed: LS_Thing_SetGoal set MF5_CHASEGOAL in flags, not flags5.
Christoph Oelckers
2006-05-18 15:03:35 +0000
a39f5bb8f7- Fixed: M_NotifyNewSave() needlessly created a copy of the filename. - Fixed: Any touching_sectorlists for actors unlinked in G_StartTravel() were lost forever. - Fixed: DLightningThinker::Serialize() did not delete the old LightningLightLevels array when loading from an archive. - Fixed: Although I moved the correct polyobject freeing code into P_FreeLevelData(), I left the old wrong code there too, which just deleted the array without deleting anything hanging off of it.
Randy Heit
2006-05-18 04:25:26 +0000
ba01f00d7cSVN r126 (trunk)
Randy Heit
2006-05-18 01:43:19 +0000
6863938e67- Texture animation improvements: * Animations are now millisecond-accurate, so delays in ANIMDEFS can have fractional parts. * Cleaned up the animation code and moved it into r_anim.cpp. * Blood's oscillating texture animations are now available for use by actual supported games by adding the word "oscillate" after a "range" definition in ANIMDEFS. * Not exactly texture animation, but it's handled in the same function as texture animations: Scrolling skies also have millisecond precision.
Randy Heit
2006-05-18 01:42:50 +0000
3f51b80cac- Implemented Quasar's suggestion to use line flag 2048 as a "reserved" flag that, if set, clears all the non-original-Doom flags on a line. This is only for Doom format maps when playing Doom.
Randy Heit
2006-05-17 02:19:20 +0000
c770d4a99a- Added support for automatically loading ACS objects (even for Doom-format maps). To use it, compile the ACS files as ordinary libraries placed between A_START/A_END markers. Then outside the markers, create a lump called LOADACS. This is just a plain text lump that lists all the libraries you want to autoload with every map. You can do this with as many libraries as you want, and LOADACS lumps are also cummulative.
Randy Heit
2006-05-17 01:38:07 +0000
3e9fbf5616- Don't need blocks.nas in the repository, as it hasn't been used for ages.
Randy Heit
2006-05-16 23:25:22 +0000
c4bda7e0be- Fixed: ApplyActorDefault() must ensure that dataint is non-negative before calculating a non-NULL state. When compiling with Visual C++, states are stored in the defaults list as byte values, but when compiling with GCC, they are passed as 32-bit arguments to the function directly. So in VC++, using ~0 to specify a NULL state appears as 255, but in GCC, it appears as -1.
Randy Heit
2006-05-16 22:31:58 +0000
2ad91cc973- Added a missing NULL pointer check to APlayerPawn::Tick. - Fixed: The falling scream should not be played when the player is under water.
Christoph Oelckers
2006-05-16 17:53:15 +0000
4a8ca6d134Changed TAG_MORE parameter to a struct containing a va_list to ensure that no matter how va_list is defined the address can be taken.
Christoph Oelckers
2006-05-16 10:06:23 +0000
bb25008804Fixed ZDBSP seg splitter. On occasion it assigned the offset to the incorrect of the two segs created by a split.
Christoph Oelckers
2006-05-16 09:26:54 +0000
6cd1e2ce6a- Fixed: CopyPlayer() in p_saveg.cpp should use normal assignment, not memcpy to copy the player structures. - Fixed compilation with MinGW again and removed most of the new warnings.
Randy Heit
2006-05-16 04:19:20 +0000
ac53ed6ecdSVN r116 (trunk)
Randy Heit
2006-05-16 02:50:18 +0000
afd6a1258f- Added a show_obituaries option to disable obituaries without disabling other more important message types which have lower priority for some reason. - Added a menu option for show_messages after accidentally switching it off far too often and wondering why no messages appear. - Added crouching DoomPlayer sprites submitted by Enjay. - Fixed DF_NO_CROUCH was not checked. - Fixed: The intermission script parser had some of its cases in the keyword parser incorrectly sorted. - Fixed: atterm was still defined to take a STACK_ARGS function argument. - Added an AltFlash state for weapons. - Turned FloatSpeed into an actor property and changed the value to 5 for all floating Strife actors, as a comment in the source indicated. (r114 below): - Added GZDoom's code for Vavoom slope things because I wanted to test something with a map from Silent Steel. - Added nocrouch and allowcrouch MAPINFO commands and a DF_NO_CROUCH dmflag. - Added GZDoom's crouching code after cleaning it up so that adding crouching sprites will be easier.
Christoph Oelckers
2006-05-15 15:28:46 +0000
caed57baa5SVN r114 (trunk)
Christoph Oelckers
2006-05-14 14:30:13 +0000
b97c417101- Fixed: P_StartScript was missing a NULL pointer check for the error message. When trying to puke a script outside a map it crashed. - Fixed: The random number generator for large numbers must mask out the sign bit before performing a modulo. - Now that the conversation states are pointers there is no need to make AActor::ConversationAnimation virtual. No class overrides this method anymore. - Replaced AMacil1::TakeSpecialDamage with MF5_NODAMAGE. - Fixed: AMacil2::TakeSpecialDamage and AOracle::TakeSpecialDamage didn't check whether inflictor was NULL and crashed when used with 'kill monsters'. - Fixed: Some Strife decorations didn't loop their animation
Christoph Oelckers
2006-05-13 21:22:08 +0000
bb617dfbfd- Changed: The decision whether blood splatter sprites are spawned is no longer determined by game. Instead there's a new flag, MF5_BLOODSPLATTER which is deciding what to do. To keep backwards compatibility this flag is unset for projectiles in Doom and Strife and set for them in Heretic and Hexen. The same applies to DECORATE but of course the flag can be manipulated here. - BLODxx sprites are now globally renamed to BLUDxx when not playing Doom. This allows using the same states in every game, including the Raven-specific blood actors. - Gave the bullet puff and the axe blood masses of 5 so that the make small splashes. - Added A_Light(value) code pointer for DECORATE to generalize the weapon light effect. - Added 'noskillmenu' option to MAPINFO episode definitions. This is for WADs that want to implement a skill selection level. - Added APROP_ChaseGoal and APROP_Frightened actor properties for ACS. - Added MF5_CHASEGOAL flag that makes monsters to go after their goal even if they have a valid target. - Fixed some issues with the changes to P_NewChaseDir I made to include MBF's dropoff logic. - Added a PowerFrightener powerup class. It seemed like such a waste to have this cool feature but no means to use it in a decent fashion. - Fixed: S_Init and S_ParseSndInfo should call atterm only once but not each time they are called.
Christoph Oelckers
2006-05-13 12:41:15 +0000
8fcf93d65a- Merged a lot of these static destructor-only structs into regular functions added to the exit chain with atterm so that they can be called in a deterministic order and not whatever order the linker decides to put them in. - Fixed: DCajunMaster did not free its getspawned. - Fixed: P_FreeLevelData() did not free ACS scripts. - Fixed: Level snapshots were not freed at exit. - Fixed: The save/load menu list was not freed at exit. - Fixed: FCompressedMemFile needs a destructor to free the m_ImplodedBuffer. - Fixed: G_DoLoadGame() did not free the engine string. - Fixed: M_ReadSaveStrings() did not free the engine string. - Fixed: Processing DEM_SAVEGAME did not free the pathname string. - Added a check for truncated flats to FFlatTexture::MakeTexture() because Heretic's F_SKY1 is only four bytes long. - Added a dump of the offending state to the "Cannot find state..." diagnostic. - Fixed: FCompressedFile did not initialize m_Mode in its default constructor. - Fixed: Heretic and Hexen status bars did not initialize ArtiRefresh. - Fixed: PNGHandle destructor should use delete[] to free TextChunks.
Randy Heit
2006-05-12 03:14:40 +0000
01441cd4f0- Converted the stealth monsters to DECORATE. - Added string replacement option to obituary strings. - Changed lock and pickup message handling so that it is either a real string or a LANGUAGE identifier. The only reason I did the mixed format in the first place were Hexen's lock messages but they have been replaced by unique strings in the mean time so the feature isn't needed any more. - Added a flags parameter to TranslucentLine. - Extended the second arg of Line_SetIdentification to set not only ML_ZONEBOUNDARY but all 8 bits of the third byte in the flag word. This allows a relatively simple means of setting all the new flags directly. - Moved ML_ZONEBOUNDARY to doomdata.h so that it is in the same place as the other line flags. - Fixed: Strife's teleport swirl didn't loop its animation. - Fixed: Strife's rat is not supposed to be shootable.
Christoph Oelckers
2006-05-11 17:56:35 +0000
e89867489c- Fixed: Strife's MiniMissile pickup amount was still incorrect. - Moved Strife's random dialogs into the string table. Now it should also be possible to define dialogs for other actors as well.
Christoph Oelckers
2006-05-11 12:11:59 +0000
2b391c69a1- Fixed: sdl/i_net.cpp needs the same changes as win32/i_net.cpp.
Randy Heit
2006-05-11 05:02:47 +0000
b8e61376c3- Fixed: When revisiting a map in a hub, the player could spawn at the wrong height if the floor had moved while they were there before. This was because the player was spawned on the original copy of the map before the changes to it were dearchived, so they didn't know about the new floor height. - Fixed: Calling BaseFileSearch() and letting it fill in the file's extension didn't work because the space for the path was deallocated before it returned. - Guess we're not leak-free yet. Try travelling around in a hub and see that it leaks. I don't have time to track it down right now.
Randy Heit
2006-05-11 05:00:35 +0000
a0c88a9b31- Yay! We now seem to be free of memory leaks! The next step will be to merge a lot of these static destructor-only structs into regular functions added to the exit chain with atterm so that they can be called in a deterministic order and not whatever order the linker decides to put them in. (Interestingly, the amount of memory used when repeatedly executing the same map command at the console varies up and down, but it now stays relatively stable rather than increasing unbounded.) - Fixed: The list of resolutions in the video modes menu was not freed at exit. - Fixed: mus_playing.name was not freed at exit. - Fixed: SN_StopAllSequences() should be called at the start of P_FreeLevelData(), not just before the call to P_SetupLevel() in G_DoLoadLevel(), so it can run even at exit. And C_FullConsole() can call P_FreeLevelData() to free more memory too. - Fixed: StatusBar was not freed at exit. - Fixed: spritesorter was not freed at exit. - Fixed: Bad things happened if FString's data pool was destroyed before all C_RemoveTabCommand() calls were made. - Added an overload for FArchive << FString. - Fixed: The players' log text was not freed at exit. - Fixed: Bot information was not freed at exit. - Fixed: doomcom was not freed at exit. But since it's always created, there's no reason why it needs to be allocated from the heap. My guess is that in the DOS days, the external packet driver was responsible for allocating doomcom and passed its location with the -net parameter. - Fixed: FBlockNodes were not freed at exit. - Fixed: Openings were not freed at exit. - Fixed: Drawsegs were not freed at exit. - Fixed: Vissprites were not freed at exit. - Fixed: Console command history was not freed at exit. - Fixed: Visplanes were not freed at exit. - Fixed: Call P_FreeLevelData() at exit. - Fixed: Channel, SoundCurve, and PlayList in s_sound.cpp were not freed at exit. - Fixed: Sound sequences were not freed at exit. - Fixed: DSeqNode::Serialize() did not resize the m_SequenceChoices array when loading.
Randy Heit
2006-05-11 04:00:58 +0000
0069ca4072- Fixed mvlineasm1 and mvlineasm4 so that they can be used with textures taller than 256 pixels. There was a very slight performance hit for this, but I was able to tweak mvlineasm4 to make it approximately as fast as before. Interestingly, maskwallscan manages to be nearly as fast as wallscan despite having to check every pixel for transparency. I'm tempted to dump all the old masked rendering code and use (trans)maskwallscan for everything for the sake of simplicity: Only two functions to maintain for each render style, and much less complicated supporting code. Currently, I need five different functions for each rendering style: One traditional column-at-a-time style like Doom did it originally, two for rt_draw4cols, and two for transmaskwallscan. (Right now, I have cheated, and just done the ones that can be used by walls for transmaskwallscan, so the actual number of different functions isn't quite so high.) For small textures, such as font characters and far-away sprites, I'm sure maskwallscan is faster than the current code. For large textures, it's probably still competitive even if it isn't faster. But considering how similar wallscan and maskwallscan perform, the difference is probably pretty minimal, and maskwallscan still might come out ahead due to its simpler overhead.
Randy Heit
2006-05-11 01:15:15 +0000
ee12c25f47- Fixed: PClass::CreateNew didn't check whether the class had valid defaults and tried to copy data from a NULL pointer. - Fixed: FireThing and BrassTorch were misspelled in hexendecorations.txt
Christoph Oelckers
2006-05-10 16:43:46 +0000
159c548c5a- Changed A_ChangeFlag so that it doesn't need to alter the flag string. With strings being passed as names this is unsafe. - Removed unused parameter types from the function parameter parser for DECORATE. - Changed: All actor name parameters in DECORATE are now passed as FNames, not as strings. - Fixed: The MAPINFO parser stored the RedirectType as a type pointer. But at this point DECORATE hasn't been read yet so this was limited to the internal classes. - Fixed: TXT_NEED_IDCARD wasn't terminated with a ';'. - Fixed: Strife's DeadRebel was missing its DoomEdNum. - With names as type identifiers it is no longer necessary to remap the monster types to internal constants in A_BossDeath. - Fixed: A_BossDeath got the string from a name - just to get a name from the string. Using the name directly is sufficient.
Christoph Oelckers
2006-05-10 15:07:14 +0000
032526340a- Redid ClearLcoks() fix that I accidentally removed.
Randy Heit
2006-05-10 04:12:43 +0000
c70ba60fd6- Fixed: Some non-POD arguments to printf and a typo in the GCC portion of dobject.h.
Randy Heit
2006-05-10 03:29:07 +0000
d1ba4a1b76- Added a new setting for am_rotate: 2 will enable rotation only for the overlay map while leaving the regular map unrotated.
Randy Heit
2006-05-10 03:24:32 +0000
0bf87acb00- Added a new setting for am_overlay: 2 will disable the normal automap and show only the overlayed version.
Randy Heit
2006-05-10 03:17:34 +0000
def53bdd5d- Fixed?: WallSpriteColumn apparently needs to set dc_texturefrac. At least Valgrind seems to say so. - Fixed: The FWadCollection destructor needs to use free to free the LumpInfo and Wads arrays. - Fixed: The ColorMapKiller needs to use the delete[] form of delete. - Fixed: FConfigFile::ClearCurrentSection() should be calling the delete[] form of delete to free the entry. - Fixed: FPatchTexture::MakeTexture() does not need to blindly recreate the Spans if they already exist. - Fixed: The FMultiPatchTexture destructor did not call its Unload() method. - Restored the original padding calculation to FMultiPatchTexture::MakeTexture(). I believe the Valgrind errors were caused by accessing off the end of the screen buffer, not from accessing off the end of a texture.
Randy Heit
2006-05-10 03:08:27 +0000
d878c2e7d6- Backported the classnames-are-names changes from the FP code.
Randy Heit
2006-05-10 02:40:43 +0000
632e03fa7e- Fixed a few Strife ammo amount values. - Fixed the ClearLocks function so it doesn't crash when called before the ActorInfos have been created.
Christoph Oelckers
2006-05-10 00:25:53 +0000
de54d7a667Fixed: vplce[] has an underscore under Linux?!?
Randy Heit
2006-05-09 22:12:24 +0000
199d4dc57f- Backported the improved hierarchical dumpclasses command from the FP code.
Randy Heit
2006-05-09 22:10:43 +0000
981f663319- Updated Jim's Makefile.linux. - Added support for wrapping midtextures vertically. - Since zdoom.wad is now zdoom.pk3, the default mapinfos can use full pathnames. So now they do. - Fixed: The DSimpleCanvas constructor used a pitch too narrow on screens wider than 640 pixels when using a non-AMD processor and the processor's L1 cache line size could not be determined. I think this should fix the issue of weirdly rendered 8 pixel wide borders on the left and right of the screen that some people experienced. - Fixed: The secnodes were never freed.
Randy Heit
2006-05-09 21:30:31 +0000
7ed597fcbe- Fixed: The FSpecialFont constructor created the name string twice. - Fixed: The animated door parser was still leaking memory when it encountered an invalid animation due to missing textures. - Fixed: The music volume list wasn't freed. - Fixed: The image for WADs that were loaded from inside Zips was never freed.
Christoph Oelckers
2006-05-09 21:21:57 +0000
6de9e9a433- Changed FDoorAnimation deletion so that the array takes care of it. The original destructor approach would have necessitated a lot more supporting code to work as intended.
Christoph Oelckers
2006-05-09 15:51:17 +0000
763efb3682- Fixed: Skin definitions were never freed. - Fixed: Names in terrain definitions were never freed. Replacing them with FNames would have been a good idea anyway. - Fixed: The lock definitions were never freed. - Fixed: FDoorAnimation was missing a destructor. - Fixed: animation and switch definitions were never freed. - Replaced all other places where FindType was used with FNames with IFindType.
Christoph Oelckers
2006-05-09 15:07:45 +0000
ace3ed1188May 9, 2006 (Changes by Graf Zahl) - Fixed: If you want to use a name as the missile parameter for the basic attack functions the type search in DoAttack must be case insensitive. - Fixed: APowerup::DoEffect must do more thorough checks before resetting the fixed colormap.
Christoph Oelckers
2006-05-09 08:58:30 +0000
df17a60f5d- Fixed: The names in the Depths array in m_options.cpp were never freed. - Fixed: FDoomEdMap needed a destructor. - Fixed: Decal animators were never freed. - Fixed: Colormaps were never freed. - Fixed: Memory allocated in R_InitTranslationTables() was never freed. - Fixed: R_InitParticles() allocated way more memory than it needed to. (And the particle memory was never freed, either.) - Fixed: FMetaTable::FreeMeta() should use delete[] to free string metadata. - Fixed: FConfigFile::ClearCurrentSection() must cast the entry to a char * before deleting it, because that's the way it was allocated. - Fixed definitions of DeadZombieMan and DeadShotgunGuy in doom/deadthings.txt. Skip_super resets the dropitem list, so having it after "DropItem None" is pointless. - Fixed: Decorate DropItem information was never freed. - Fixed: FinishStates() allocated even 0-entry state arrays. - Fixed: Default actor instances were never freed. - Fixed: FRandomSoundList never freed its sound list. - Fixed: Level and cluster strings read from MAPINFO were never freed. - Fixed: Episode names were never freed. - Fixed: InverseColormap and GoldColormap were never freed. Since they're always allocated, they can just be arrays rather than pointers. - Fixed: FFont destructor never freed any of the character data or the font's name. - Fixed: Fonts were not freed at exit. - Fixed: FStringTable::LoadLanguage() did not call SC_Close(). - Fixed: When using the -iwad parameter, IdentifyVersion() did not release the buffer it created to hold the parameter's path.
Randy Heit
2006-05-09 03:40:15 +0000
201e17082c- Blends created with the ACS fade commands now degrade to transparent overlays when the menu is visible, so they can no longer obscure the menu.
Randy Heit
2006-05-09 00:28:01 +0000
fa2ef4611bSVN r86 (trunk)
Randy Heit
2006-05-09 00:04:36 +0000
748d7bf4b1- The game is now free of leaks up to the point just after the wads are loaded. - Fixed: Although TypeInfos are now deleted at exit, their FlatPointers or ActorInfo data was not freed. I chose not to use a destructor to handle this, because then it would no longer be a POD type that can be statically initialized. - Fixed: Aliases were not deleted at exit. - Fixed: FWadCollection did not free its hash tables, lump info, full names, or the list of open files when destroyed.
Randy Heit
2006-05-09 00:02:37 +0000
d4160f7211May 7, 2006 (Changes by Graf Zahl) - Added a misc/secret sound definition for Heretic. - Fixed: Powered up weapons were not properly deselected when the level ended and their ready state was different from the main weapon's. - Made some improvements to A_CountdownArg. - Removed the 'Yes', 'No' and 'Greetings' state assignment commands. They haven't been documented and thus haven't been used at all so far. Therefore they don't need to be handled considering that they will go away anyway. - Changed the DECORATE state parser so that Stop can also be specified right after a label, in addition to goto.
Christoph Oelckers
2006-05-07 23:55:17 +0000
605a9a7715May 6, 2006 (Changes by Graf Zahl) - Converted a_zombie.cpp and most of a_strifestuff.cpp to DECORATE. - Converted a_strifekeys.cpp to DECORATE and moved the pickup messages to the string table. - Removed the WIF_HITS_GHOSTS weapon flag and replaced it with MF2_THRUGHOST. There is no need to keep two flags around with virtually the same meaning. - Changed the ShadowArmor to use the VISIBILITYPULSE flag to change its translucency. It looks much better now than the cheap code pointer based blinking it used before. - Converted most of a_strifeitems.cpp to DECORATE and moved the pickup messages to the string table. - Converted a_strifearmor.cpp to DECORATE and moved the pickup messages to the string table. - Moved the messages for killing spectres to the string table. - Converted the quest items to DECORATE. Also changed A_GiveQuestItem to get the messages it prints from the string table instead of the quest item's tag string.
Christoph Oelckers
2006-05-07 00:27:22 +0000
abed04ab23- Updated Italian strings that someone kindly e-mailed to me. - The CRT no longer detects any memory leaks when I run to the IWAD picker and quit. - Fixed: The memory used to hold the path to zdoom.wad/.pk3 was not freed if the IWAD picker was cancelled. - Fixed: Some implementations of cvar->GetGenericRep (CVAR_String) returned a statically allocated string and others returned a dynamically allocated string. To be consistant, they should all be static. - Fixed: DObject also has three static TArrays that should not be explicitly initialized: Objects, FreeIndices, and ToDestroy. - Added a new do-nothing constructor for TArray that can be used for BSS objects that are manipulated before startup. Specifically, this was added because C_AddTabCommand() is called before main, but the TabCommands constructor is called after the array already has over 100 entries in it, orphaning everything that was already inserted. And since the code is much nicer-looking now, I didn't want to revert to the old non-TArray version.
Randy Heit
2006-05-06 23:43:44 +0000
3c9b55d1dbSVN r81 (trunk)
Randy Heit
2006-05-06 03:25:12 +0000
fd0c5a6db6- Changed TAG_MORE to pass a va_list pointer instead of a va_list because it's a non-POD type when targeting several non-ix86 targets with GCC. Hopefully this works.
Randy Heit
2006-05-06 00:54:41 +0000
e78385f807- Rewrote FName to use only POD types for its static data so that it can be used without any explicit constructors being called. - Fixed: ZTwinedTorchUnlit, ZWallTorchUnlit, ZFireBullUnlit, and ZCauldronUnlit were missing game filters.
Randy Heit
2006-05-05 04:37:10 +0000
d06793ad7e- Converted A_Puzzleitems.cpp and parts of A_HexenSpecialdecs.cpp to DECORATE and fixed a few broken Hexen items.
Christoph Oelckers
2006-05-04 19:36:12 +0000
650d07b8c1May 4, 2006 (Changes by Graf Zahl) - Converted A_Hexendecorations.cpp - Changed the lower decal spawning code to transfer the main decal's color if the lower decal's default color is the same as the main decal's. - Changed the decal stretcher back to use the specified size parameters as a scaling factor and not a destination size because this is more consistent with the rest of the decal code. Also adjusted the blood smear definition in DECALDEF and the description in the Wiki for this. - Added Jim's most recent fixes.
Christoph Oelckers
2006-05-04 12:40:39 +0000
fe84b6077e- Fixed: Conversion of c_bind.cpp to FString was incomplete. - Fixed some functions that were declared as taking size_t's but defined as taking unsigned ints. - Added a dummy object to delete sound environments on exit. - Fixed: FWarpTexture did not delete its Spans when destroyed. - Changed wadclusterinfos and wadlevelinfos arrays into TArrays. - Added the TypeInfo::AutoTypeInfoPtr for TypeInfo::m_RuntimeActors so they can be automatically deleted. - Changed TypeInfo::m_Types into a TArray so it will be automatically deleted on exit. - Fixed: TArray::Resize() did not deconstruct entries when shrinking the array. - Changed TArray::Push() so that it calls Grow() instead of duplicating the growth calculations itself. - Calling TArray::Grow() for a small amount when the array is short should grow it a bit more than it was doing.
Randy Heit
2006-05-04 06:14:52 +0000
c8cdb52863- Removed generational garbage collection from the string pool because it didn't actually work. - Turned the list of TabCommands into a TArray because I saw lots of console commands in the memory leak report at exit. Then I realized those were actually key bindings, so I changed the Bindings and DoubleBindings arrays into FString arrays. - Fixed: FStringCVar was missing a destructor. - Added TArray::Insert(). - Fixed: TArray::Delete() used memmove(). - Renamed Malloc(), Realloc(), and Calloc() to M_Malloc(), M_Realloc(), and M_Calloc() so that the debug versions can be defined as macros. - Enabled the CRT's memory leak detection in WinMain(). - Moved contents of PO_DeInit() into P_FreeLevelData(). - Removed "PolyBlockMap = NULL;" from P_SetupLevel(), because the P_FreeLevelData() call it makes next does the exact same thing, but also freeing it if needed. - Fixed: Unneeded memcpy in UnpackUserCmd() when ucmd and basis are the same
Randy Heit
2006-05-04 03:49:46 +0000
ea3b76815d- Removed -bpal parameter. Blood's blood.pal is loaded from blood.rff, and its tiles are loaded from the same directory. - RFF files now load their entire directories into the lumplist. - Added char * and const char * type coversions for FString, so FStrings can be freely passed to functions expecting C strings. (Except varargs functions, which still require manually fetching the C string out of it.) - Renamed the name class to FName. - Renamed the string class to FString to emphasize that it is not std::string.
Randy Heit
2006-05-03 22:45:01 +0000
0e69196370May 3, 2006 (Changes by Graf Zahl) - Removed doom.x, heretic.x and strife.x from the SVN repository. These are generated files. - Fixed: A_PainDie has to check whether a valid target exists before calling IsFriend. - Fixed: FDecalLib::FindAnimator needs a signed counter to work properly.
Christoph Oelckers
2006-05-03 14:54:48 +0000
01a41a6f13- Made loading of Build's palette.dat automatic if it's found inside a loaded group file, but the -bpal parameter remains for now. - Made loading of Build art tiles automatic if they are found inside a group file. Removed the corresponding command-line parameter. - Added support for Ken Silverman's group files.
Randy Heit
2006-05-02 04:38:12 +0000
29cd024abaSVN r71 (trunk)
Christoph Oelckers
2006-04-30 21:49:18 +0000
eff7c898cf- ZDoom now loads zdoom.pk3 instead of zdoom.wad. - Fixed: StreamSong::SetVolume should check the m_stream pointer. This can happen when a TimiditySong doesn't use FMOD and outputs the sound itself. - Fixed: 'use' sector actions were using the incorrect sector on several occasions. - Added a wi_noautostartmap CVAR and a noautostartmap intermission option that force the user to manually end the 'entering level' page.
Christoph Oelckers
2006-04-29 12:40:09 +0000
75aec5dde9GCC fixes: (courtesy of Jim and zloba) - default.cbd was missing thingdef_exp.cpp - tools/makewad/Makefile.mgw was outdated thanks to recently added zip support - wadsrc/wadmake should not be in the repository, as it needs to use host machine path separator conventions
Randy Heit
2006-04-29 04:52:30 +0000
19a7cf743eSVN r68 (trunk)
Christoph Oelckers
2006-04-27 15:12:17 +0000
9b5f9a1d70SVN r67 (trunk)
Christoph Oelckers
2006-04-24 14:26:06 +0000
790ff69f52- Removed ABossEye::Serialize because it didn't do anything. - Fixed the issues with .96x's railgun code and added it to the current version. - Fixed: Setting of the friendly Minotaur's angle was inconsistent and could cause it to move backwards in a féw situation. - Fixed: The minotaur did checks for type by checking for the MF_FRIENDLY flag, not by checking for the actor class. That made it impossible to spawn friendly 'normal' minotaurs. - Moved a few virtual methods which are only applicable to the friendly minotaur to AMinotaurFriend. - Fixed: The friendly minotaur checked the master's health instead of the target's when deciding whether to switch targets. Replaced with MF4_NOTARGETSWITCH. - Fixed: maybedrawnow must not draw the console unless the background texture has been set up.
Christoph Oelckers
2006-04-23 20:12:27 +0000
b229d07500SVN r65 (trunk)
Christoph Oelckers
2006-04-23 09:02:19 +0000
1e1db5dd0c- Fixed: To prevent the pointer cleanup code from crashing numsectors has to be set to 0 when the sectors array is deleted.
Christoph Oelckers
2006-04-23 00:03:32 +0000
9aae758ec5- Added Zloba's fix for Linux's I_FindFirst.
Christoph Oelckers
2006-04-22 15:02:08 +0000
663a0f5209- Fixed: Doom's status bar assumed that STBAR was always in Doom patch format. - Added MF3_DONTSPLASH to the newly created sound sequence things.
Christoph Oelckers
2006-04-21 21:42:12 +0000
283dca5750Made makewad.c compilable as C.
Christoph Oelckers
2006-04-21 20:32:24 +0000
67bf668ad9April 20, 2006 (Changes by Graf Zahl) - Fixed: Strife's ending check included destroying the computer - an event that happens before the branch in the story. - Fixed: The overloaded FRandom::Random2 function with mask parameter didn't use its parameter. - Added Jim's latest makefile.linux
Christoph Oelckers
2006-04-21 16:32:49 +0000
6cd650271aAdded a_soundsequence.cpp to the repository.
Randy Heit
2006-04-21 14:29:05 +0000
8ea6569de8- Fixed: Crash when opening the player setup menu when you're so dead that your head has popped off your body. - Fixed: When item respawning is on and you play on skill 1 or 5, picking up ammo would permanently double the amount of ammo received from that item the next time it gets picked up. - Added a check to PlayerIsGone() for players who have already had their actors destroyed before calling it. - Fixed: G_CheckDemoStatus() only restored your name, autoaim, and color settings after playing back a demo. - Added DEM_SPRAY net command so that sprayed decals work in multiplayer and demos. - Changed DEM_GIVECHEAT to use a word for specifying the item quantity. This is useful mainly for giving yourself more than 255 health at a time. - Fixed: DEM_SUMMONFRIEND was not handled by Net_SkipCommand().
Randy Heit
2006-04-21 05:44:21 +0000
7e7ab6b4ec- Fixed compilation with mingw again. - Added multiple-choice sound sequences. These overcome one of the major deficiences of the Hexen-inherited SNDSEQ system while still being Hexen compatible: Custom door sounds can now use different opening and closing sequences, for both normal and blazing speeds. - Added a serializer for TArray. - Added a countof macro to doomtype.h. See the1's blog to find out why it's implemented the way it is. <http://blogs.msdn.com/the1/articles/210011.aspx> - Added a new method to FRandom for getting random numbers larger than 255, which lets me: - Fixed: SNDSEQ delayrand commands could delay for no more than 255 tics. - Fixed: If you're going to have sector_t.SoundTarget, then they need to be included in the pointer cleanup scans. - Ported back newer name code from 2.1. - Fixed: Using -warp with only one parameter in Doom and Heretic to select a map on episode 1 no longer worked. - New: Loading a multiplayer save now restores the players based on their names rather than on their connection order. Using connection order was sensible when -net was the only way to start a network game, but with -host/-join, it's not so nice. Also, if there aren't enough players in the save, then the extra players will be spawned normally, so you can continue a saved game with more players than you started it with. - Added some new SNDSEQ commands to make it possible to define Heretic's ambient sounds in SNDSEQ: volumerel, volumerand, slot, randomsequence, delayonce, and restart. With these, it is basically possible to obsolete all of the $ambient SNDINFO commands. - Fixed: Sound sequences would only execute one command each time they were ticked. - Fixed: No bounds checking was done on the volume sound sequences played at. - Fixed: The tic parameter to playloop was useless and caused it to act like a redundant playrepeat. I have removed all the logic that caused playloop to play repeating sounds, and now it acts like an infinite sequence of play/delay commands until the sequence is stopped. - Fixed: Sound sequences were ticked every frame, not every tic, so all the delay commands were timed incorrectly and varied depending on your framerate. Since this is useful for restarting looping sounds that got cut off, I have not changed this. Instead, the delay commands now record the tic when execution should resume, not the number of tics left to delay.
Randy Heit
2006-04-21 01:22:55 +0000
66c663e9d8- Fixed: Hexen's ammo display in the status bar cannot be refreshed partially because the background patch has to be drawn always to overwrite the old display. - Fixed: Giving a health item to a non-player caused a crash. - Added a compatibility option to limit deh.MaxHealth to the health bonus. Originally this value wasn't used for health packs. Doing this was a bug in Boom but since there's quite a few maps out there which require Boom's altered behavior it has to be compatibility optioned. - Fixed: The health bonus's max health must be defined by deh.MaxHealth, not deh.MaxSoulsphere. To achieve this deh.MaxHealth's handling had to be altered because it has to default to 100. - Fixed: ZDBSP created incorrect side references with compressed sidedefs and both sidedefs of a linedef being the same. This only affects the external tool because the internal node builder is run after uncompressing the sidedefs. - Added Jim's latest makefile.linux. - Added a consistency check to the PNAMES loader because one crash log indicated that it crashed due to a corrupt PNAMES lump. - Brought back the sector based sound target handling as a compatibility option. This radical change just broke far too many maps that depend on the original behavior. Strife's special AI functions are excluded though because they work better with the new method.
Christoph Oelckers
2006-04-20 14:21:27 +0000
b2b729fd37April 19, 2006 (Changes by Graf Zahl) - Fixed: Hexen had no default sound sequence for doors and passed a NULL pointer to SN_StartSequence in DoorSound.
Christoph Oelckers
2006-04-20 00:25:30 +0000
8e631eca0bSVN r54 (trunk)
Christoph Oelckers
2006-04-18 22:15:05 +0000
c3c22c9453- Fixed: FBaseStatusBar::DrBNumber() should behave like Doom's STlib_drawNum(), and FDoomStatusBarTexture::DrawToBar() should add the textures left offset to the x coordinate before drawing. These fix Twice Risen's status bar. - Changed: VPrintf now uses string.VFormat(), instead of vsprintf().
Randy Heit
2006-04-18 06:07:09 +0000
d8500150f3SVN r52 (trunk)
Christoph Oelckers
2006-04-17 16:04:27 +0000
36e37becb5SVN r51 (trunk)
Christoph Oelckers
2006-04-17 13:53:34 +0000
fa7987005e- Fixed: After respawning in a singleplayer demo, demo playback went out of sync becase the RNG seed was being altered during recording but not during playback. This was caused by an inappropriate fix for a similar problem: -record calls G_InitNew() before it actually starts recording the demo, but -playdemo calls G_InitNew() after it starts playback. So the rngseed stored in the demo was already altered. The correct thing to do is not to prevent the rngseed from changing during playback but to move the call to G_InitNew() after the call to G_BeginRecording(). - Fixed: After respawning in a demo, demo playback was prematurely terminated.
Randy Heit
2006-04-16 19:09:36 +0000
da51ac7446SVN r49 (trunk)
Christoph Oelckers
2006-04-16 13:29:50 +0000
3165756b02Make the line endings in ccdv-win32.c consistantly CR/LF.
Randy Heit
2006-04-16 05:20:20 +0000
2bfc183154SVN r47 (trunk)
Randy Heit
2006-04-16 03:31:40 +0000
8a7ba616f4SVN r46 (trunk)
Christoph Oelckers
2006-04-15 15:00:29 +0000
153d3b4681SVN r45 (trunk)
Christoph Oelckers
2006-04-14 16:25:57 +0000
07f35a7008SVN r44 (trunk)
Christoph Oelckers
2006-04-14 12:58:52 +0000
4dd936e438SVN r43 (trunk)
Christoph Oelckers
2006-04-13 22:40:43 +0000
ab1d4a2e0fUpdated Jim's Makefile.linux.
Randy Heit
2006-04-13 22:35:56 +0000
00f332c678- Fix farchive.cpp swappers for GCC again. Now that they use entirely integer math, they should work with all GCC versions. - Updated FLAC readers to #define FLAC__NO_DLL to match the new FLAC builds.
Randy Heit
2006-04-13 22:25:26 +0000
7138ab86a8Updated FLAC code to version 1.1.2.
Randy Heit
2006-04-13 22:18:41 +0000
e8c7a10f80SVN r39 (trunk)
Christoph Oelckers
2006-04-13 20:33:19 +0000
218fd0ae56SVN r38 (trunk)
Christoph Oelckers
2006-04-13 16:56:06 +0000
fdeb374fdbSVN r37 (trunk)
Christoph Oelckers
2006-04-13 16:52:24 +0000
b00360a08c- Fixed: Using printinv before starting a game crashed. - Fixed: DMover::MovePlane() would not stop moving the plane when it exactly reached its target height unless it was a floor moving down. - Fixed: Actors that can't attack should not be valid haters for Thing_Hate. - Fixed: AArtiBlastRadius::BlastActor() should not set MF2_SLIDE for missiles. - Fixed: sdl/i_input.cpp should check !iscntrl() before generating EV_GUI_Char messages.
Randy Heit
2006-04-13 03:13:07 +0000
735e6d72c4- Added Jim's Makefile.linux; - Changed: Decal scales now use full precision fixed point numbers. - Changed: Keeping impact decals in their own statlist is enough to keep track of them for when one needs to be destroyed. There's no need to maintain a separate list for them. - Fixed: Decal actors did not spread their decals across neighboring walls. - Fixed: Decal groups did not initialize their IDs and could not be reliably used with the decal actor. - Fixed: Decals on moving polyobjects were not interpolated. R_RenderDecal() now uses the decal's LeftDistance to calculate its visible location, so it always stays in sync with the wall's vertices. This also lets me dump some code from the polyobjects that maintained the decals' (x, y) coordinates. Also, the decals' x and y information is redundant and can be removed. Doing this revealed a bug with slider decals and horizontal sliding: That is, it didn't work at all. I have opted to simply remove the horizontal sliding support so that I don't have to worry about what happens when a decal slides across the edge of a wall. - Fixed: DBaseDecal::LeftDistance was calculated as a 30.2 fixed point number. It should be 2.30 fixed point.
Randy Heit
2006-04-13 02:01:40 +0000
4982558bbfSVN r34 (trunk)
Christoph Oelckers
2006-04-12 21:49:03 +0000
78a367a2d7Fixed: GCC misoptimized the SWAP macros in farchive.cpp.
Randy Heit
2006-04-12 05:30:27 +0000
63adffee3dFound Chris's default.cbd patch for r17 and merged that.
Randy Heit
2006-04-12 03:37:46 +0000
ec4b8719aaFixed: Compiling with mingw once again works, although savegame loading problems are not yet fixed.
Randy Heit
2006-04-12 03:03:58 +0000
e815474cbe- Fixed: ACS improperly calculated the address of local variables when returning from one function to another function when the function that was called was used as part of an expression. - Fixed: Using Thing_Hate with arg0 (hater) set to 0 from an open script could crash. - Fixed: Some items along ledges in Hexen's MAP32 (Orchard of Lamentations) appeared at the bottom of the ledge (and consequently inside it) instead of on top of it because the items were placed directly on the lines. AActor::LinkToWorldForMapThing() needs to use the original R_PointOnLineSide() code to handle situations like this. Previously, it just used the original code for straight horizontal/vertical lines and used the new code for diagonal lines. - Fixed: FWadCollection::MergeLumps() used in incorrect realloc. - Fixed: FPlayList::NextLine() did not properly handle blank lines in the playlist. - Changed: Decals now use lightweight thinkers instead of actors. (76 bytes versus 396, so you save 320k if you have 1024 decals present.) - Fixed: Wads added with pullin were loaded immediately after the IWAD. Exec files are now processed immediately before -file but after autoloading wads in D_DoomMain(). - Fixed: sdl/i_system.h unconditionally defined SHARE_DIR, preventing redefinition from the command line. - Fixed: The standard way to include SDL.h is <SDL.h>, not <SDL/SDL.h>. - Fixed: Returned FActiveInterpolation::HashKey()'s return type to size_t, avoiding a pointer truncation warning.
Randy Heit
2006-04-12 01:50:09 +0000