Commit graph

26 commits

Author SHA1 Message Date
Christoph Oelckers
3d36a794a5 - added gl_fog_shader CVAR to draw all polygons with fog using GLSL shaders. This should eliminate the annoying ATI fog bug if enabled.
git-svn-id: http://mancubus.net/svn/hosted/gzdoom/trunk@197 b0f79afe-0144-0410-b225-9a4edf0717df
2008-10-31 16:52:55 +00:00
Christoph Oelckers
794e1d0bec - fixed: Strife's palette based brightmaps didn't work anymore.
- forgot to copy the weapon state jump fix from ZDoom.


git-svn-id: http://mancubus.net/svn/hosted/gzdoom/trunk@194 b0f79afe-0144-0410-b225-9a4edf0717df
2008-10-26 19:50:53 +00:00
Christoph Oelckers
2cba83663a Update to ZDoom r1229:
- Separated low level sound code from all high level dependencies.
- Separated low level sound channel class from high level class which now
  is just a subclass of the low level class.
- Moved some more high level sound logic out of FMODSoundRenderer:
  The rolloff and channel ended callbacks now call functions in s_sound.cpp
  instead of working on the data itself and GSnd->StopSound has been replaced
  with S_StopChannel.
- Changed compilation for g_doom, g_heretic, g_hexen and g_strife folders so 
  that all files are included by a central one instead of compiling each one 
  separately. This speeds up the compilation process by 25% when doing a 
  complete rebuild in Visual C.
- Cleaned up some include dependencies.


git-svn-id: http://mancubus.net/svn/hosted/gzdoom/trunk@179 b0f79afe-0144-0410-b225-9a4edf0717df
2008-09-15 23:47:00 +00:00
Christoph Oelckers
66a753dcfd - started adding a GLSL state structure
Update to ZDoom r1183:

- Added and fixed Boss death submission for random spawner.
- Added functions to FActorInfo that can set the damage factors and
  pain chances to reduce the chance of new errors when working with
  these features.
- Fixed: The handling of the deprecated FIRERESIST flag didn't work.
  There were 3 problems:
  * Actor defaults have no class information so HandleDeprecatedFlags
    needs to be passed a pointer to the ActorInfo.
  * The DamageFactors list is only created when needed so the code needs to
    check if it already exists.
  * damage factors are stored as fixed_t but this set a float.
- Fixed: Timidity::Renderer::reset_voices() must completely zero the
  voices. Because this wasn't done, note_on() could try to access
  the sample for a voice that had never been played yet and access
  random memory. There may be other places where it's a problem, but
  this is where I noticed it, by chance.
- Added a traditional Strife color set for the automap.


git-svn-id: http://mancubus.net/svn/hosted/gzdoom/trunk@164 b0f79afe-0144-0410-b225-9a4edf0717df
2008-08-23 21:48:24 +00:00
Christoph Oelckers
8c77bc8d50 - Changed creation of warped GL textures so that it is done after the buffer has been
processed by the GL code.
- Fixed: A_Jump used a wrong index into the jump address table.
- Fixed: The recent changes in the DECORATE parser require the special parameter
  to A_CallSpecial to be an expression, not a constant.
- Removed game filters from old style decorations. No WAD in existence ever 
  used them and removing them allows to make the parser more robust.


git-svn-id: http://mancubus.net/svn/hosted/gzdoom/trunk@159 b0f79afe-0144-0410-b225-9a4edf0717df
2008-08-14 19:10:59 +00:00
Christoph Oelckers
cac80858f4 Update to ZDoom r1146 (warning: massive changes ahead!)
- Removed DECORATE's ParseClass because it was only used to add data to fully
  internal actor classes which no longer exist.
- Changed the state structure so that the Tics value doesn't need to be hacked
  into misc1 with SF_BIGTIC anymore. 
- Changed sprite processing so that sprite names are converted to indices 
  during parsing so that an additional postprocessing step is no longer needed.
- Fixed: Sprite names in DECORATE were case sensitive.
- Exported AActor's defaults to DECORATE and removed all code for the 
  internal property parser which is no longer needed.
- Converted the Heresiarch to DECORATE.
- Added an Active and Inactive state for monsters.
- Made the speed a parameter to A_RaiseMobj and A_SinkMobj and deleted
  GetRaiseSpeed and GetSinkSpeed.
- Added some remaining DECORATE conversions for Hexen by Karate Chris.
- Changed Windows to use the performance counter instead of rdtsc.
- Changed Linux to use clock_gettime for profiling instead of rdtsc. This
  avoids potential erroneous results on multicore and variable speed
  processors.
- Converted the last of Hexen's inventory items to DECORATE so that I could
  export AInventory.
- Removed AT_GAME_SET because it's no longer used anywhere.
- Converted the last remaining global classes to DECORATE.
- Fixed: Inventory.PickupFlash requires an class name as parameter not an
  integer. Some Hexen definitions got it wrong.
- Converted Hexen's Pig to DECORATE.
- Replaced the ActorInfo definitions of all internal inventory classes with 
  DECORATE definitions.
- Added option to specify a powerup's duration in second by using a negative
  number.
- Added Gez's Freedoom detection patch.
- SBARINFO update:
  * Added: The ability to have drawkeybar auto detect spacing.
  * Added: Offset parameter to drawkeybar to allow two key bars with
    different keys.
  * Added: Multi-row/column keybar parameters.  Spacing can also be auto.
    These  defualt to left to right/top to bottom but can be switched.
  * Added: Drawshadow flag to drawnumber.  This will draw a solid color and
    translucent number under the normal number.
  * Added: hexenarmor to drawimage.  This takes a parameter for a hexen
    armor type and will fade the image like the hexen status bar.
  * Added: centerbottom offset to draw(switchable)image.
  * Added: translucent flag to drawinventorybar.
  * Fixed: Accidentally removed flag from DrawTexture that allowed negative
    coordinates to work with fullscreenoffsets.  Hopefully this is the last
    major bug in the fullscreenoffsets system.
- Ported vlinetallasm4 to AMD64 assembly. Even with the increased number of
  registers AMD64 provides, this routine still needs to be written as self-
  modifying code for maximum performance. The additional registers do allow
  for further optimization over the x86 version by allowing all four pixels
  to be in flight at the same time. The end result is that AMD64 ASM is about
  2.18 times faster than AMD64 C and about 1.06 times faster than x86 ASM.
  (For further comparison, AMD64 C and x86 C are practically the same for
  this function.) Should I port any more assembly to AMD64, mvlineasm4 is the
  most likely candidate, but it's not used enough at this point to bother.
  Also, this may or may not work with Linux at the moment, since it doesn't
  have the eh_handler metadata. Win64 is easier, since I just need to
  structure the function prologue and epilogue properly and use some
  assembler directives/macros to automatically generate the metadata. And
  that brings up another point: You need YASM to assemble the AMD64 code,
  because NASM doesn't support the Win64 metadata directives.
- Replaced the ActorInfo definitions of several internal classes with DECORATE definitions
- Converted teleport fog and destinations to DECORATE.
- AActor::PreExplode is gone now that the last item that was using it has been converted.
- Converted the Sigil and the remaining things in a_strifeitems.cpp to DECORATE.
- Exported Point pushers, CustomSprite and AmbientSound to DECORATE.
- Changed increased lightning damage for Centaurs into a damage factor.
- Changed PoisonCloud and Lightning special treatment in P_DamageMobj to use damage
  types instead to keep dependencies on specific actor types out of the main engine code.
- Added Korax DECORATE conversion by Gez and a few others by Karate Chris.
- Removed FourthWeaponClass and based Hexen's fourth weapons on the generic weapon
  pieces.
- Added DECORATE conversions for Hexen's Fighter weapons by Karate Chris.
- Added aWeaponGiver class to generalize the standing AssaultGun.
- converted a_Strifeweapons.cpp to DECORATE, except for the Sigil.
- Added an SSE version of DoBlending. This is strictly C intrinsics.
  VC++ still throws around unneccessary register moves. GCC seems to be
  pretty close to optimal, requiring only about 2 cycles/color. They're
  both faster than my hand-written MMX routine, so I don't need to feel
  bad about not hand-optimizing this for x64 builds.
- Removed an extra instruction from DoBlending_MMX, transposed two
  instructions, and unrolled it once, shaving off about 80 cycles from the
  time required to blend 256 palette entries. Why? Because I tried writing
  a C version of the routine using compiler intrinsics and was appalled by
  all the extra movq's VC++ added to the code. GCC was better, but still
  generated extra instructions. I only wanted a C version because I can't
  use inline assembly with VC++'s x64 compiler, and x64 assembly is a bit
  of a pain. (It's a pain because Linux and Windows have different calling
  conventions, and you need to maintain extra metadata for functions.) So,
  the assembly version stays and the C version stays out.
- Converted the rest of a_strifestuff.cpp to DECORATE.
- Fixed: AStalker::CheckMeleeRange did not perform all checks of AActor::CheckMeleeRange.
  I replaced this virtual override with a new flag MF5_NOVERTICALMELEERANGE so that
  this feature can also be used by other actors.
- Converted Strife's Stalker to DECORATE.
- Converted ArtiTeleport to DECORATE.
- Removed the NoBlockingSet method from AActor because everything using it has been
  converted to DECORATE using DropItem instead.
- Changed: Macil doesn't need the StrifeHumanoid's special death states so he might
  as well inherit directly from AActor.
- Converted Strife's Coin, Oracle, Macil and StrifeHumanoid to DECORATE. Also moved
  the burning hand states to StrifePlayer where they really belong.
- Added Gez's dropammofactor submission with some necessary changes. Also merged
  redundant ammo multiplication code from P_DropItem and ADehackedPickup::TryPickup.
- Restricted native action function definitions to zdoom.pk3.
- Fixed. The Firedemon was missing a game filter.
- Added: disablegrin, disableouch, disablepain, and disablerampage flags to
  drawmugshot.
- Fixed: LowerHealthCap did not work properly.
- Fixed: Various bugs I noticed in the fullscreenoffsets code.
- Removed all the pixel doubling r_detail modes, since the one platform they
  were intended to assist (486) actually sees very little benefit from them.
- Rewrote CheckMMX in C and renamed it to CheckCPU.
- Fixed: CPUID function 0x80000005 is specified to return detailed L1 cache
  only for AMD processors, so we must not use it on other architectures, or
  we end up overwriting the L1 cache line size with 0 or some other number
  we don't actually understand.
- The x87 precision control is now explicitly set for double precision, since
  GCC defaults to extended precision instead, unlike Visual C++.
- Converted Strife's Programmer, Loremaster and Thingstoblowup to DECORATE.
- Fixed: Attacking a merchant in Strife didn't alert the enemies.
- Removed AT_GAME_SET(PowerInvulnerable) due to the problems it caused. The two
  occurences in the code that depended on it were changed accordingly.
  Invulnerability colormaps are now being set by the items exclusively.
- Changed many checks for the friendly Minotaur to a new flag MF5_SUMMONEDMONSTER
  so that it can hopefully be generalized to be usable elsewhere later.
- Added Gez's submission for converting the Minotaur to DECORATE.
- Fixed a few minor DECORATE bugs.
- Changed coordinate storage for EntityBoss so that it works properly even
  when the pod is not used to spawn it.
- Converted Strife's Spectres and Entity to DECORATE.
- Added: fullscreenoffsets flag for status bars.  This changes the coordinate
  system to be relative to the top left corner of the screen.  This is useful
  for full screen status bars.
- Changed: drawinventorybar will use the width of artibox or invcurs (strife)
  to determine the spacing.  Let me know if this breaks any released mods.
- Fixed: If a status bar height of 0 was specified in SBarInfo the wrong bar
  would be shown.
- Fixed: If a static inventory bar was used the user still had to press invuse
  in order to get rid of the "overlay".
- Fixed: forcescaled would not work if the height of the bar was 0.
- Added: keyslot to drawswitchableimage.
- Fixed: The transition effects for the log and keys popups were switched.
- Converted Strife's Crusader, Inquisitor and spectral missiles to
  DECORATE.
- Converted Strife's Acolytes, Rebels, Sentinel, Reaver and Templar to
  DECORATE.
- Added DECORATE conversions for Hexen's Cleric weapons by Karate Chris.
- Added a check to Zipdir that excludes files with a .orig extension. These
  can be left behind by patch.exe and create problems.
- fixed: Unmorphing from chicken caused a crash when reading non-existent
  meta-data strings.
- Converted the ScriptedMarines to DECORATE.
- Fixed: DLightTransfer and DWallLightTransfer were declared as actors.
- Converted the PhoenixRod and associated classes to DECORATE to make
  the Heretic conversion complete.
- Converted the Minotaur's projectiles to DECORATE so that I can get
  rid of the AT_SPEED_SET code.
- Converted Heretic's Blaster and SkullRod to DECORATE.
- Converted the mace and all related actors to DECORATE and generalized
  the spawn function that only spawns one mace per level.
- Moved Mace respawning code into AInventory so that it works properly
  for replacement actors.
- Added more DECORATE conversions by Karate Chris.
- Cleaned up the new bridge code and exported all related actors to
  DECORATE so that the exported code pointers can be used.
- Separated Heretic's and Hexen's invulnerability items for stability 
  reasons.
- Fixed spurious warnings on 32-bit VC++ debug builds.
- Made the subsong (order) number a proper parameter to MusInfo::Play()
  instead of requiring a separate SetPosition() call to do it.
- Added Gez's submission for custom bridge things.
- Fixed: ASpecialSpot must check the array's size before dividing by it.


git-svn-id: http://mancubus.net/svn/hosted/gzdoom/trunk@151 b0f79afe-0144-0410-b225-9a4edf0717df
2008-08-10 15:12:58 +00:00
Christoph Oelckers
1ee7f7395e Update to ZDoom r1073:
- Fixed: When Heretic's Mace was replaced by a non-child class A_SpawnMace still 
  treated it as a mace and wrote into some undefined memory.
- Fixed: A_BishopMissileWeave didn't initialize special2 for proper movement.
- Added a speed parameter to A_SkullAttack.
- Fixed: Black as first or only blood color didn't work.
- Fixed: Sounds played in wi_stuff.cpp and f_finale.cpp need the CHAN_UI flag.
- Fixed: Spawning a player could play the *gasp sound.
- Fixed: SBARINFO's health display didn't scale to the proper maximum.
- Added const char &operator[] (unsigned int index) to FString class.
- Added Skulltag's Teleport_NoStop action special.
- Fixed: Strife's EntityBoss didn't copy friendliness information to the
  sub-entities.
- Fixed: Friendly spectral monsters should be able to hurt unfriendly ones
  and vice versa.
- Fixed: In deathmatch specral missiles spawned by players should hurt other
  players.
- Fixed: SpectralLightningBigBall didn't set the proper owner for the lightning
  projectiles it spawned.
- Changed the EntityBoss's attack function to call the equivalent spectre
  functions instead of duplicating their code.
- Gave many of Strife's code pointers that only had a number as name more
  meaningful names. 
- Fixed: All spectral attacks must set 'health' first before P_CheckMissileSpawn
  is called.
- Added a compatibility option to play sector sounds from the precalculated
  center because some maps apparently abuse the behavior to make the sound
  play somewhere where it can't be heard by the player to fake silent movement.
- Fixed: The S_Sound variant taking an actor must check if the actor is not
  NULL.
- Fixed: ACS's ActivatorSound must check if the activator is valid.
- Changed stats drawing so that multi-line strings can be used.


git-svn-id: http://mancubus.net/svn/hosted/gzdoom/trunk@132 b0f79afe-0144-0410-b225-9a4edf0717df
2008-07-19 23:52:06 +00:00
Christoph Oelckers
f4dbbf934b - fixed a typo in new license clause.
git-svn-id: http://mancubus.net/svn/hosted/gzdoom/trunk@129 b0f79afe-0144-0410-b225-9a4edf0717df
2008-06-29 10:27:22 +00:00
Christoph Oelckers
385ca57954 - Added the following clause to all GL renderer related files (Skulltag devlopers, beware!):
Full disclosure of the entire project's source code, except for third party libraries is mandartory. 
  (NOTE: This clause is non-negotiable!)
- Fixed: The alpha for 3D floors was always set to 0.

Update to ZDoom r1056:

- Changed: I_Error and I_FatalError now use ZDoom's internal string formatting
  code to process their messages. This was necessary to handle the %zu format
  option used in some memory allocation failure messages.
- Fixed: The flat texture scaling action specials were completely broken.
- The sound code now handles restarting looping sounds itself. As far as
  the rest of the game is concerned, these sounds will never stop once they
  have been started until they are explicitly stopped. If they are evicted
  from their channels, the sound code will restart them as soon as possible.
  This means that instead of this:
	if (!S_IsActorPlayingSomething(actor, CHAN_WEAPON, -1))
	{
		S_Sound(actor, CHAN_WEAPON|CHAN_LOOP, soundid, 1, ATTN_NORM);
	}
  The following is now just as effective:
	S_Sound(actor, CHAN_WEAPON|CHAN_LOOP, soundid, 1, ATTN_NORM);
  There are also a couple of other ramifications presented by this change:
    * The full state of the sound system (sans music) is now stored in save
      games. Any sounds that were playing when you saved will still be
      playing when you load. (Try saving while Korax is making a speech in
      Hexen to hear it.)
    * Using snd_reset will also preserve any playing sounds.
    * Movie playback is disabled, probably forever. I did not want to 
      update the MovieDisable/ResumeSound stuff for the new eviction
      tracking code. A properly updated movie player will use the VMR,
      which doesn't need these functions, since it would pipe the sound
      straight through the sound system like everything else, so I decided
      to dump them now, which leaves the movie player in a totally unworkable
      state.
- Removed some unused constant definitions from sc_man.cpp.


git-svn-id: http://mancubus.net/svn/hosted/gzdoom/trunk@128 b0f79afe-0144-0410-b225-9a4edf0717df
2008-06-29 10:08:16 +00:00
Christoph Oelckers
722eccf6c7 Update to ZDoom r1052:
- Fixed: Dead players didn't get the MF_CORPSE flag set.
- Fixed: The internal definition of Floor_LowerToNearest had incorrect parameter
  settings.
- Fixed: Heretic's ActivatedTimeBomb had the same spawn ID as the inventory item.
- fixed: Heretic's mace did not have its spawn ID set.
- For controls that are not bound, the customize controls menu now displays
  a black --- instead of ???.
- Applied Gez's BossBrainPatch3.
- Fixed: P_BulletSlope() did not return the linetarget. This effected
  the Sigil, A_JumpIfCloser, and A_JumpIfTargetInLOS.
- Fixed all the new warnings tossed out by GCC 4.3.
- Fixed: PickNext/PrevWeapon() did not check for NULL player actors.
- Fixed compilation issues with GCC.
- Removed special case for nobotnodes in MAPINFO.
- Added support for ST's QUARTERGRAVITY flag.
- Added a generalized version of Skulltag's A_CheckRailReload function.
- Fixed: DrawImage didn't take 0 as a valid image index.
- Added Gez's RandomSpawner submission with significant changes.
- Added optional blocks for MAPINFO map definitions. ZDoom doesn't use
  this feature itself but it allows other ports based on ZDoom
  to implement their own sets of options without making such a MAPINFO 
  unreadable by ZDoom.
- Fixed: The mugshot would not reset on re-spawn.
- Fixed: Picking up a weapon would sometimes not activate the grin.
- Changed: Line_SetIdentification will ignore extended parameters when
  used in maps defined Hexen style in MAPINFO.
- Fixed: Ambient sounds didn't pass their point of origin to S_StartSound.
- Fixed: UseType was not properly set for textures defined in TEXTURES.
- Fixed: You couldn't set an offset for sprites defined in TEXTURES.
- Added read barriers to all actor pointers within player_t except for
  mo, ReadyWeapon and PendingWeapon.
- Added a read barrier to player_t::PrewmorphWeapon.
- Fixed: After spawning a deathmatch player P_PlayerStartStomp must
  be called.
- Fixed: SpawnThings must check if the players were spawned before
  calling P_PlayerStartStomp.
- Fixed typo in flat scroll interpolation.
- Changed FImageCollection to return translated texture indices so
  that animated icons can be done with it.
- Changed FImageCollection to use a TArray to hold its data.
- Fixed: SetChanHeadSettings did an assignment instead of comparing
  the channel ID witg CHAN_CEILING.
- Changed sound sequence names for animated doors to FNames.
- Automatically fixed: DCeiling didn't properly serialize its texture id.
- Replaced integers as texture ID representation with a specific new type
  to track down all potentially incorrect uses and remaining WORDs used
  for texture IDs so that more than 32767 or 65535 textures can be defined.


git-svn-id: http://mancubus.net/svn/hosted/gzdoom/trunk@124 b0f79afe-0144-0410-b225-9a4edf0717df
2008-06-28 13:29:59 +00:00
Christoph Oelckers
ec5e0a3ff7 - Added speed factors for texture warp commands.
- Added damage type parameter to A_Die. 

git-svn-id: http://mancubus.net/svn/hosted/gzdoom/trunk@100 b0f79afe-0144-0410-b225-9a4edf0717df
2008-04-26 09:03:15 +00:00
Christoph Oelckers
b2c4a509a5 - fixed: The alpha channel for shaded textues was not set properly.
git-svn-id: http://mancubus.net/svn/hosted/gzdoom/trunk@99 b0f79afe-0144-0410-b225-9a4edf0717df
2008-04-25 18:34:45 +00:00
Christoph Oelckers
06c40e268d - Fixed: Fog for flooding floor textures into gaps created by missing wall textures
didn't work since a parameter changes necessitated by ZDoom's render style 'enhancement'.

Update to ZDoom r940:

  SBarInfo Update #18:
- Simplified the DrawGraphic function in sbarinfo_display.cpp
- Added xOffset, yOffset, and alpha to every drawing function in
  sbarinfo_display.cpp.  So Strife popups can be handeled better and allow for
  other effects (translucent bars?).  I'm thinking about making a struct for
  these five (also x and y) arguments so that the argument lists don't become a
  mess.
- Changed DRAWIMAGE in sbarinfo_display.cpp to not use so many calls to
  DrawGraphic.
- DrawKeyBar wasn't using screen->DrawTexture.
- Added a Fade transition for popups.  It takes two args fade in rate and fade
  out rate.  Both are floats (1.0 = 1 tic to complete 0.5 = 2 tics to complete
  and so on).
- Added a translucency arg to statusbars.  1.0 = opaque and 0.0 = invisible.

- Fixed: When an instrument's envelope runs out, it does not immediately ramp
  to zero. Rather, it lets the remainder of the sample finish playing.
- Fixed: When playing a MIDI file with EMIDI track designations to turn a
  track off, any ticks that had only events on the disabled track would cause
  the delay for that track to be thrown away, and the following notes on
  enabled tracks would play too soon. This could be heard quite clearly in
  xplasma.mid, where track 4 (FMGlass Drone 1) would interfere with the timing
  of tracks 13 and 14 (EP1 Melody and EP1 Echo).
- Fixed: DFlashFader did some operations in its destructor that had to be moved
  to its Destroy method.
- Fixed: Dropped weapons from dying players should not double ammo.
- Fixed: When note_on() is called and another copy of the same note is
  already playing on the channel, it should stop it with finish_note(), not
  kill_note(). This can be clearly heard in the final cymbal crashes of
  D_DM2TTL where TiMidity cuts them off because the final cymbals are played
  with a velocity of 1 before the preceding cymbals have finished. (I wonder
  if I should be setting the self_nonexclusive flag for GUS patches to
  disable even this behavior, though, since gf1note.c doesn't turn off
  duplicate notes.)
- Changed envelope handling to hopefully match the GUS player's. The most
  egregious mistake TiMidity makes is to treat bit 6 as an envelope enable
  bit. This is not what it does; every sample has an envelope. Rather, this
  is a "no sampled release" flag. Also, despite fiddling with the
  PATCH_SUSTAIN flag during instrument loading, TiMidity never actually
  used it. Nor did it do anything at all with the PATCH_FAST_REL flag.
- Fixed: wbstartstruct's lump name fields were only 8 characters long
  and not properly zero-terminated when all 8 characters were used.
- Fixed: Local sound sequence definitions caused a crash because a proper
  NULL check was missing.
- Added translucent blending modes to FMultipatchTexture (not tested yet!)
- Also changed all true color texture creation functions to use proper alpha
  values instead of inverted ones.
- Changed FRemapTable so that all palette entries must contain proper alpha
  values. 
- Fixed: The F1 screen check in m_menu.cpp was missing a NULL pointer check.
- Changed: The boss brain's explosions play weapons/rocklx which is an 
  unlimited sound. This can become extremely loud. Replaced with a new
  sound which is just an alias to weapons/rocklx but has a limit of 4. 

git-svn-id: http://mancubus.net/svn/hosted/gzdoom/trunk@98 b0f79afe-0144-0410-b225-9a4edf0717df
2008-04-25 10:00:54 +00:00
Christoph Oelckers
f303d40f1c - Fixed: Using sprites as wall textures used incorrect texture offsets because
sprites are being offset by one pixel to make texture filtering look better.
  Now two sets of coordinates are maintained for native GL textures, one
  for sprites, one for textures.

Update to ZDoom r930:

- Fixed: MugShotFrame::getTexture() allocated space for the sprite name that
  it never freed. I'm not sure it's a good assumption that 9 characters is
  always long enough, either, since you can have longer file names than that
  inside a zip.
- Fixed: DSBarInfo::DrawGem() crashed if chain or gem was NULL.
- Fixed: Sound sequences are not thinkers, therefore they must be explicitly
  marked as roots for the GC.
- Reduced the range that area sounds require to interpolate between 2D and
  3D panning.
- The listener's velocity is now set at 0 for the sound engine. The player
  moves so fast that you can hear the doppler shift just by running around,
  otherwise.
- Changed the sound code so that all sounds that start playing on a single
  tic actually start playing at the exact same sample position.
- Added the writewave command to write the internal TiMidity's output to a
  wave file.
- Changed the default channel velocity for MUS files from 64 to 100 to
  better match apparent MIDI practice. (Would like to know what this is
  supposed to be.)
- Changed the mus2midi channel assignments to match the internal player's.
- Fixed: apply_envelope_to_amp() should clamp the mix levels to 0.
- Made the maximum number of TiMidity voices configurable through the
  timidity_voices cvar.
- Added stats lines for the OPL and Timidity MIDI devices.
- Completely changed the way TiMidity volume calculations are done. It
  should now be extremely close to the output a real GUS would produce with
  its official MIDI player (excepting where TiMidity normalizes sample
  volumes). The new equations more closely match what is specified by the DLS
  and SF2 specs (but not quite), so I presume it's also more musically
  correct than what TiMidity (and TiMidity++) do. 

git-svn-id: http://mancubus.net/svn/hosted/gzdoom/trunk@97 b0f79afe-0144-0410-b225-9a4edf0717df
2008-04-20 10:26:25 +00:00
Christoph Oelckers
93df2a62bf Update to ZDoom r922:
- Added Martin Howe's fixes for morphing and DECORATE function prototypes.
- Minor fixes in texture code.
- Fixed: The FMOD::System object was never released, only closed, so
  snd_reset would eventually run into the hard limit on the total number
  of FMOD::System objects that can be created concurrently (currently 15).
- Added proper error checks to the FMOD initialization process.
- Updated fmod_wrap.h for FMOD 4.14.
- Set note velocity back to using a linear sounding volume curve, although
  it's now used to scale channel volume and expression, so recompute_amp()
  is still only doing one volume curve lookup.
- Fixed: TimidityMIDIDevice caused a crash at the end of a non-looping song.
- Made translation support for multipatch textures operational.
- Added support for the GUS patch format's scale_frequency and scale_factor
  parameters. These seem to be used primarily to restrict percussion
  instruments to specific notes.
- Changed note velocity to not use the volume curve in recompute_amp(), since
  this sounds closer to TiMidity++, although I don't believe it's correct
  MIDI behavior. Also changed expression so that it scales the channel volume
  before going through the curve.
- Reworked load_instrument() to be less opaque.
- Went through the TiMidity code and removed pretty much all of the SDL_mixer
  extensions. The only exception would be kill_others(), which I reworked
  into a kill_key_group() function, which should be useful for DLS
  instruments in the future.
- Added translation support to multipatch textures. Not tested yet!
- Added Martin Howe's morph weapon update.
- Changed true color texture creation to use a newly defined Bitmap class
  instead of having the copy functions in the frame buffer class.
- Fixed: The WolfSS didn't have its obituary defined.
- Added submission for ACS CheckPlayerCamera ACS function.
- Removed FRadiusThingsIterator after discovering that VC++ misoptimized
  it in P_CheckPosition. Now FBlockThingsIterator is used with the distance
  check being done manually.


git-svn-id: http://mancubus.net/svn/hosted/gzdoom/trunk@94 b0f79afe-0144-0410-b225-9a4edf0717df
2008-04-17 20:58:50 +00:00
Christoph Oelckers
7fef77f47b - Added Skulltag's HUD model code.
Update to ZDoom r912:

- Added rotation 90° angles only) and mirroring to the Multipatch texture 
  composition code.
- Fixed: The game crashed when a level was ended while a player was morphed
  by a powerup.
- Fixed: A_VileAttack positioned the fire on the wrong side of the target.
- Reorganized the HackHack code so that the image creation was moved into
  MakeTexture. This was necessary because Unload deleted the pixel data
  and broke the whole thing.
- Fixed: FPatchTexture::HackHack and FDoomStatusbarTexture::DrawToBar used the
  obsolete and uninitialized variable Near255. 
- Removed the span creation code specific to FPatchTexture. It only has an
  advantage when the lump has already been loaded in memory but since that
  is no longer the case now the generic version in FTexture is actually better.
- Changed: FTexture::CopyToBlock no longer uses the spans but the pixel buffer
  directly. Since most patches in multipatch textures are non transparent
  the added overhead from creating the spans far outweighs any savings they
  might provide. It is also simpler to handle for mirrored or rotated patches now.
- Changed: Textures only create the spans when really needed. Flats and native
  textures, for example, do not and it only created needless overhead that they
  were always created along with the pixel buffer.
- Made use of player and actor variables consistent in a_hereticweaps.cpp.
- Fixed: A few calls to P_SpawnPlayerMissile passed 0 as angle 

git-svn-id: http://mancubus.net/svn/hosted/gzdoom/trunk@93 b0f79afe-0144-0410-b225-9a4edf0717df
2008-04-14 19:24:40 +00:00
Christoph Oelckers
40f1ceddf7 Update to ZDoom r910:
- Fixed a few bugs in the parser for composite textures.
- Changed: When loading Zips all patches in the patches/ directory should
  be loaded, not only those used by a texture in TEXTUREx. 
- Changed FMOD_INIT_ENABLE_DSPNET use to its replacement from 4.14.00,
  FMOD_INIT_ENABLE_PROFILE. Renamed the corresponding cvar to snd_profile.
- Removed the normalize parameter from SoundStream::Play().
- Disabled the chorus and reverb effects added to SDL_mixer's Timidity,
  because they were probably never tested well, either. Thanks to the bug
  in vc_alloc(), they were never even activated.
- Restored the exact frequency range search that was missing from SDL_mixer's
  verion of select_sample().
- Fixed: vc_alloc(), kill_others(), and note_on() treated Voice::status as a
  bit mask, when it's not. These were changes made to SDL_mixer's Timidity.
- Restored the original Timidity volume equation. The other louder one was
  put in when I didn't realize all channels were mono and many notes sounded
  too quiet because they never completed their attack phase.
- Fixed: FileReader::Gets() acted as if fgets() always read the maximum
  number of characters.
- Fixed: FileReader::Open() did not set FilePos and StartPos to 0.
- Replaced use of stdio in Timidity with FileReader and added the option to read
  from the lump directory. If the main config file is inside the lump directory
  it will assume that everything else is as well. If it is a real file it will be
  assumed that the rest is real files as well.
- Fixed: None of the error returns in read_config_file closed the file being read. 


git-svn-id: http://mancubus.net/svn/hosted/gzdoom/trunk@91 b0f79afe-0144-0410-b225-9a4edf0717df
2008-04-13 14:34:31 +00:00
Christoph Oelckers
f42970b458 - Removed precompiled header option for GL code because it caused more problems than
the minimal amount of saved time was worth.
Update to ZDoom r833:
- Disabled scrolling of 3DMIDTEX textures. Due to the special needs this 
  cannot work properly.
- Added new Scroll_Wall special to allow more control over wall scrolling.
  Since it uses fixed point parameters it can only be used in scripts though.
- Added flags parameters to all wall scroller specials that didn't use
  all 5 args.
- Separated scrolling of the 3 different texture parts of a sidedef.
  While doing this I did some more restructuring of the sidedef structure
  and changed it so that all state changes to sidedefs that affect rendering 
  have to be made with access functions. This is not of much use to the
  software renderer but it allows far easier caching of rendering data
  for OpenGL because the only place I need to check is in the access functions.
- Added Karate Chris's ThingCountSector submission.
- Made texture indices in FSwitchDef full integers. Since that required
  some data restructuring I also eliminated the MAX_FRAMES limit of 128
  per switch.
- Removed some debug output from SBarInfo::ParseSBarInfo().
- Fixed: Heretic linetype translations included the wrong file.
- Removed ATTN_SURROUND, since FMOD Ex doesn't exactly support it, and it
  only worked as intended on stereo speakers anyway.
- Cleaned out ancient crud from i_sound.cpp.


git-svn-id: http://mancubus.net/svn/hosted/gzdoom/trunk@67 b0f79afe-0144-0410-b225-9a4edf0717df
2008-03-21 21:15:56 +00:00
Christoph Oelckers
ce7f03dd50 - Update to ZDoom r771.
git-svn-id: http://mancubus.net/svn/hosted/gzdoom/trunk@45 b0f79afe-0144-0410-b225-9a4edf0717df
2008-02-27 11:51:25 +00:00
Christoph Oelckers
91ac704e65 - forgot to save one file.
git-svn-id: http://mancubus.net/svn/hosted/gzdoom/trunk@39 b0f79afe-0144-0410-b225-9a4edf0717df
2008-02-25 12:00:00 +00:00
Christoph Oelckers
a6eff72015 - fixed a few memory leaks.
- removed FS's nullvar. Now there's only 2 global FS variables left and that's as good as it gets. :)



git-svn-id: http://mancubus.net/svn/hosted/gzdoom/trunk@38 b0f79afe-0144-0410-b225-9a4edf0717df
2008-02-25 11:47:19 +00:00
Christoph Oelckers
0394c5d9a4 - Updated to ZDoom r744
- fixed: Fog didn't work with Line_Horizon
- fixed: Using ExtraFloor_LightOnly in a skybox with non-black fog caused rendering
- fixed: Apparently it is possible that AActor::Tick is called after the 3D floor data has been deleted.
- fixed: The desaturation shader must first desaturate and then light. It did it in reverse order.
- fixed: gl_billboard_mode used an incorrect default value.

git-svn-id: http://mancubus.net/svn/hosted/gzdoom/trunk@17 b0f79afe-0144-0410-b225-9a4edf0717df
2008-02-14 13:07:19 +00:00
Christoph Oelckers
cef1d4010b - Fixed: During the texture code rewrites the call to gl_ParseDefs was deleted.
- Fixed texture precaching .
- Fixed: The stencil texture mode was not set properly.
- Added latest Linux compile patch.

Updated to ZDoom r723:
- Added a PrecacheTexture virtual function to DFrameBuffer because it's the
  renderer which should decide how to precache a texture.
- Added SnowKate709's APROP_MaxHealth submission.


git-svn-id: http://mancubus.net/svn/hosted/gzdoom/trunk@10 b0f79afe-0144-0410-b225-9a4edf0717df
2008-01-28 11:24:32 +00:00
Christoph Oelckers
961fafbdb2 - Fixed several GCC warnings
- Fixed rounding error in texture scaling.
- Fixed: RenderStyle Stencil was always opaque


git-svn-id: http://mancubus.net/svn/hosted/gzdoom/trunk@9 b0f79afe-0144-0410-b225-9a4edf0717df
2008-01-27 23:11:51 +00:00
Christoph Oelckers
179ea921f9 - Update to ZDoom r718
- Added ModPlug as an option to play MOD music because FMOD is not that good for it.


git-svn-id: http://mancubus.net/svn/hosted/gzdoom/trunk@4 b0f79afe-0144-0410-b225-9a4edf0717df
2008-01-27 15:34:47 +00:00
Christoph Oelckers
72ae7fa01b Initial import - version 1.0.32
git-svn-id: http://mancubus.net/svn/hosted/gzdoom/trunk@1 b0f79afe-0144-0410-b225-9a4edf0717df
2008-01-27 11:25:03 +00:00