- Clang's optional runtime array bounds checking doesn't understand when we
intentionally "overflow" by doing this:
RGB32k[0][0][colorval]
It will warn that it was accessed at an index will past the bounds
of type 'BYTE [32]', which makes it less than useful for catching real
array bounds overflows. So now do this:
RGB32k.All[colorval]
And if you want this:
RGB32k[r][g][b]
Now do this:
RGB32k.RGB[r][g][b]
for true color. Instead of using a clipping rectangle on the destination it
tried to alter the source offsets which produced incorrect results for
mirrored or rotated patches.
SVN r1889 (trunk)
hash chains.
- Fixed: specifying texture patches or font characters by full lump name instead
of texture name didn't work. To do this properly the texture manager needs
an option to look for a texture by lump number so that such textures can
be maintained without interfering with regular operation.
- added 'skystretch' and 'autosequences' keywords for MAPINFO so that the effects
of 'noautosequences' and 'forcenoskystretch' can be cancelled.
- Added a 'gamedefaults' section to MAPINFO after discovering that 'defaultmap'
gets reset for each MAPINFO. A global section is needed to define a game's
default setting in zdoom.pk3. The gamedefaults should normally not be changed
by PWADs but it can be done if some mod intends to change gameplay settings
but wants to allow custom add-ons on its own.
SVN r1300 (trunk)
They are not needed anywhere else.
- Changed the HackHack hack for corrupt 256 pixel high textures that
FMultiPatchTexture only calls a virtual function instead of doing any
type checks of the patch itself.
- Cleaned up the constant definitions in doomdata.h.
- Moved the TEXTUREx structures from doomdata.h to multipatchtexture.cpp
because they are used only in this one file.
- Removed some more typedefs from r_defs.h and doomdata.h
- Moved local polyobject data definitions from p_local.h to po_man.cpp.
SVN r1012 (trunk)
- 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.
SVN r932 (trunk)
drawn to a texture, then that texture is copied to the real back buffer
using a gamma-correcting pixel shader. In fullscreen mode, SetGammaRamp
is used.
- Fixed flashing of vid_fps display when fps > 1000.
- Fixed loading of RGB textures for native 2D mode.
- Changed the first rotozoomer's data because it just became too obvious when
the backdrop is drawn with a full 256 distinct colors available.
- Set the player backdrop to update no more frequently than 35 FPS, so opening
the player setup menu before starting a game won't produce a very fast
moving backdrop.
- Changed the player backdrop into a texture so that it can be drawn like
anything else.
SVN r648 (trunk)
if present.
- Modified GZDoom's true color texture copy functions and added them
to generate 32 bit D3D textures. Paletted TGAs and PCXs are also handled
this way but I don't think these 2 formats are worth some more special
handling.
(Question: Is it worth it to implement special handling for paletted PNGs
so that they are used as 8 bit textures internally?)
SVN r608 (trunk)
They are not actually drawn with it yet, nor is it complete, but it's
something to start with.
- Split up DCanvas::DrawTexture() into more pieces to make it easier to
virtualize.
- Removed support for non-32-bit palette textures from D3DFB. What kind of
card supports pixel shaders but not 32-bit textures?
SVN r605 (trunk)
const char * with a string inside its buffer, it released the buffer
before copying the string.
- Added a new FString constructor that creates the string from a lump.
- Fixed: G_DoReborn() calls G_InitNew() with mapname set to level.mapname.
G_InitNew() then copies it onto level.mapname, which is undefined
behavior (although it does work as we want it to).
- Modified FMemLump to store its data using FString. That class provides
a convenient method of storing reference counted data, so now FMemLump
doesn't need to muck about sneakily using const_casts and possibly
tricking its users into thinking that an old one is still valid after
being assigned to a new one.
- Fixed: The IMGZ, PNG, PCX, and JPEG loaders assumed the files were
large enough for their headers without actually checking.
SVN r463 (trunk)
data file.
- Removed the setcolor CCMD. It's been obsolete for years, ever since color-
aware cvars were added.
- Changed V_GetColorStringByName() to return an FString, because it did a
copystring() call.
- Extended V_GetColorFromString() so that it accepts HTML-style #RRGGBB and
#RGB color strings.
SVN r313 (trunk)
The lump is open anyway at that time so deferring this action until the information
is needed doesn't give any speed improvements. Now GetDimensions and all its
associated overhead is gone.
- Added support for TGA textures. It can handle all of the common variations
of this format.
- Changed: GI_PAGESARERAW is no longer checked. It wasn't really necessary before
because the chance of texture misidentification is absolutely minimal.
But raw pages are now restricted to textures of type TEX_MiscPatch only.
- Changed the automap parchment to use a regular texture. The previous
FAutomapTexture is only used as a last resort fallback now. If the code
finds a recognizable graphic it will create a proper texture for it now.
- Fixed: Flats were only auto-scaled when in Doom flat format.
- Fixed: FMultiPatchTexture::CheckForHacks blindly assumed that all patches
were FPstchTextures. Since the texture code does not have any type information
I added a new flag bIsPatch for this purpose.
- Moved all texture classes into their own source files and created a new
subdirectory 'textures' for that.
- Cleaned up the texture management code and added some stricter checks for
the validity of Doom patches. The old code liked to crash when being passed
some non-graphic data.
SVN r300 (trunk)