EDuke32 Changelog Unofficial archive

What changed in EDuke32, build by build

2,117 builds · 8,866 commits · 25 authors · October 2009 – August 2026

Commits per year

Select a year to see its builds
SVN era · r1519 – r8798 Git era · voidpoint.io, from april 2020
Filters · 2 active

Showing 443 builds · 817 commits

Export CSV
Display options
Commit details:

April 2013 10 builds · 24 commits

Build 3684

15 Apr 2013 · 8 commits · 1 author SVN
Open build
  • General

    TROR no-SE7 water: spawn splash, reuse calculated other sector number.

    Helixhorned r3683 15 Apr, 03:48 Engine
  • General

    Improve on the code that handles changing sectors of projectiles.

    Helixhorned r3682 15 Apr, 03:48 Engine
    Show details

    - In the A_MoveSprite() code that transports projectiles due to an SE7 (introduced in r1450 / legacy ROR), only report "success" if the transportation succeeded. - Clear newly introduced internal SPRITE_DIDNOSE7WATER flag after checking it.

  • General

    Clean up of mostly actors.c, but some other files along the way too.

    Helixhorned r3679 15 Apr, 03:48 FixEngine
    Show details

    - Rewrite some sprites-of-{stat,sector} loops using the SPRITES_OF, SPRITES_OF_SECT and new SPRITES_OF_SECT_SAFE macros. - In passing, identify some problems and mark them with 'XXX', but don't attempt to fix them yet. - The usual readability improvements...

  • General

    TROR no-SE7 water: handle projectiles.

    Helixhorned r3678 15 Apr, 03:48 Engine
    Show details

    Actually, the tweaked code in VM_Move() is not specific to projectiles, so other sprites now may pass no-SE7 water boundaries too, but it's most noticeable with projectiles.

  • General

    TROR no-SE7 water: allow boundary change only if other-side lotag is other one.

    Helixhorned r3677 15 Apr, 03:48 Engine
    Show details

    That is, if submerging, the lower sector MUST have lotag 2. If emerging, the upper sector MUST have lotag 1. (Previously, emersion happened from ST 2 sectors unconditionally.) This means that the area where submersion or emersion can happen is now the same for the top and bottom parts.

Open the build to see all 8 commits

Build 3660

9 Apr 2013 · 4 commits · 1 author SVN
Open build
  • print the "Saved board" message more persistently.

    Helixhorned r3659 9 Apr, 10:35 Engine
  • new-generation map format, in-memory representation ("map-int VX").

    Helixhorned r3658 9 Apr, 10:35 Engine
    Show details

    The Lunatic build compiles with new structures for sector and wall types. They have separate members for TROR {up,down}{bunch,nextwall}, so there are no conflicts with other uses of members into which they were previously shoehorned. Also, the maximum bunch limit is bumped to 512 in that build. Currently, loading from V7/8/9 and saving to V7 and V8 are supported.

Open the build to see all 4 commits

Build 3653

7 Apr 2013 · 5 commits · 1 author SVN
Open build
  • replace DukePlayer_t set-member methods with metatable magic.

    Helixhorned r3653 7 Apr, 08:20 Engine
    Show details

    So that members needing it are checked when they're assigned to using the usual syntax. What kind of check to perform (sector, player, ... x whether negative values are allowed) is written in a declarative fashion inside the C declaration. Also, make Lunatic's MAXQUOTES be C's OBITQUOTEINDEX and bound-check an access of sprite[p->wackedbyplayer] in the C code.

  • General

    a.m32: Don't reposition head light if in void space, fixing crash.

    Helixhorned r3651 7 Apr, 08:20 FixEngine
Open the build to see all 5 commits

Build 3648

5 Apr 2013 · 10 commits · 1 author SVN
Open build
  • General

    a.m32: Implement a Polymer "head light" emanating from your position in 3D mode.

    Helixhorned r3648 5 Apr, 10:53 EngineCON
    Show details

    Toggled with Ctrl+Shift+[KP-]. Variable 'headlight_range' controls its range. For the implementation, a new event EVENT_PREDRAW3DSCREEN was added.

  • custom integer types treated as bitfields.

    Helixhorned r3643 5 Apr, 10:53 Engine
    Show details

    Used for engine struct's (c)stat and actor[].flags members.

Open the build to see all 10 commits

March 2013 5 builds · 9 commits

Build 3605

24 Mar 2013 · 4 commits · 1 author SVN
Open build
  • fix assertion failure with overlong walls in rintersect().

    Helixhorned r3605 24 Mar, 11:55 FixEngine
  • return early with 0 from cansee() if either sector is >= MAXSECTORS.

    Helixhorned r3603 24 Mar, 11:55 EngineCON
    Show details

    Previously, only the <0 condition was checked. However, the passed sectnums could be >= MAXSECTORS (at least in C-CON), for example when issuing 'canseespr' on a sprite not in the game world.

Open the build to see all 4 commits

Build 3601

24 Mar 2013 · 9 commits · 1 author SVN
Open build
  • don't wrongly report PANIC corruption with MAXSPRITES sprites present.

    Helixhorned r3599 24 Mar, 11:53 FixEngine
  • General

    Lunatic t.: don't error on changing stat/sect of sprite not in the game world.

    Helixhorned r3598 24 Mar, 11:53 Engine
  • in readgamearray support code, use engine file functions.

    Helixhorned r3594 24 Mar, 11:52 Engine
    Show details

    This is so that files residing in GRPs (or anywhere the engine looks for them) can be read, too.

Open the build to see all 9 commits

Build 3566

15 Mar 2013 · 8 commits · 1 author SVN
Open build
  • General

    Lunatic t.: option for generating code caching sprite/actor/player structs...

    Helixhorned r3561 15 Mar, 09:56 Engine
    Show details

    ...at the beginning of each function called back from C, and each case/default function. Called -fcache-sap. Disabled by default.

  • spritesof{stat,sect} iterators that allow deletion inside the loop.

    Helixhorned r3560 15 Mar, 09:56 Engine
    Show details

    Also, - an optimization for sprite[]:setpos(). Calls to get_sprite_index() seem to be pretty slow (at least when they're not compiled). - add getzrange to the dynsymlists

Open the build to see all 8 commits

February 2013 9 builds · 23 commits

Build 3528

25 Feb 2013 · 7 commits · 1 author SVN
Open build
  • General

    engine.c: in setpolymost2dview(), set gloy=-1 unconditionally.

    Helixhorned r3525 25 Feb, 07:31 FixEngine
    Show details

    This fixes an update issue: start EDuke32 without warping to a map in Polymost, change to classic, and change to Polymost again. The OSD background will be displaced.

  • sector[]:zrangeat(), 'getzrange' command for the translator.

    Helixhorned r3524 25 Feb, 07:31 FixEngine
    Show details

    Also, fix quote commands there.

Open the build to see all 7 commits

Build 3509

19 Feb 2013 · 1 commit · 1 author SVN
Open build
  • add "movement by one" debugging functionality via a.m32.

    Helixhorned r3509 19 Feb, 12:35 FixEngineCON
    Show details

    If m32script gamevar "move_by_one" is nonzero, the some keys move the "player arrow" by increments of 1: - Without SHIFT: LEFT/RIGHT absolute x, DOWN/UP absolute y, A/Z absolute z. - With SHIFT: DOWN/UP (unbounded!) horiz, LEFT/RIGHT angle. This can be useful to debug renderer bugs that show a high sensitivity to the exact location ("are transient in space").

Build 3484

14 Feb 2013 · 4 commits · 1 author SVN
Open build
  • General

    Classic renderer: high-precision sprite drawing, preventing stray lines on top.

    Helixhorned r3483 14 Feb, 08:02 FixEngine
    Show details

    Face- and wall-aligned sprites are drawn using the wall routines in BUILD. However, the per-x-screen-coordinate distance (swall[]) is calculated in a way that potentially incurs great precision loss (for example 5 bits for xdimen=1280, yxaspect=65536). This leads to the starting (top) vertical texture coordinate possibly wrapping to large values, leaving an unsightly "stray line" on top of the sprite from certain viewing angles/horiz values. The approach to fix it has two parts: first, the distance is calculated using float values, preventing the precision loss. Because this doesn't fully prevent the unwanted lines, the texture coords are clamped to the mininum and maximum (0 and UINT32_MAX respectively) when calculating them for sprites. Note that stray lines may still appear at the *bottom* of sprites under certain circumstances, for example when viewing at a y-flipped sprite from above. These should be less noticable in real-world usage though. The feature is guarded by a macro HIGH_PRECISION_SPRITE in case using floating point or 64-bit integers is undesirable/impossible on some platforms.

  • General

    engine.c: factor out calculation of texture coords / addresses in wall drawing.

    Helixhorned r3482 14 Feb, 08:02 Engine
  • General

    engine.c: don't pass [udls]wal to maskwallscan(), use *wall globals instead.

    Helixhorned r3481 14 Feb, 08:01 Engine
Open the build to see all 4 commits

Build 3477

10 Feb 2013 · 10 commits · 1 author SVN
Open build
  • sprite.change{sect,stat}, access to more members, member read test.

    Helixhorned r3475 10 Feb, 08:24 Engine
  • General

    engine.c: in changesprite{sect,stat}, swap second and third early-out tests.

    Helixhorned r3474 10 Feb, 08:24 Engine
    Show details

    That is, first check if the sprite is in the game world and then if it already has the desired sector or status number. This doesn't change anything in our codebase, since the return values of these functions are never examined.

  • General

    Engine cleanup continued, no functional changes.

    Helixhorned r3472 10 Feb, 08:24 Engine
  • General

    engine/Polymer: factor out setting {cos,sin}*globalang into set_globalang().

    Helixhorned r3471 10 Feb, 08:24 Engine
  • General

    engine.c: clean up drawsprite()

    Helixhorned r3470 10 Feb, 08:24 Engine
    Show details

    The usual: declare locals more tightly, const-qualify them where it helps readability, remove dead code...

Open the build to see all 10 commits

Build 3452

1 Feb 2013 · 6 commits · 1 author SVN
Open build
  • provide access to actor-tsprite.

    Helixhorned r3452 1 Feb, 05:05 Engine
  • General

    NULL spriteext[].tpsr after each running EVENT_ANIMATESPRITES for a tsprite.

    Helixhorned r3450 1 Feb, 05:05 EngineCON
    Show details

    Meaning that only *ettsprite[THISACTOR] makes sense from CON. It did before too, because .tspr was set before each event run (and not before all runs), only that it was never nulled, which was kind of untidy.

  • remove unused tsprite access via spriteext[].tspr.

    Helixhorned r3449 1 Feb, 05:05 EngineCON
  • General

    Don't set spriteext[].tspr when creating tsprites from the engine.

    Helixhorned r3448 1 Feb, 05:05 EngineCON
    Show details

    Its only use is to have a actor -> tsprite mapping for the EVENT_ANIMATESPRITE event and .tspr will be set before it is run.

  • RESPAWN-preview coded in M32-script.

    Helixhorned r3447 1 Feb, 05:05 FixEngineCON
    Show details

    The m32script variable 'showrespawn_always' toggles whether the respawned picnum is shown unconditionally instead of only when aimed at (and locked onto the RESPAWN sprite) in 3D mode. Cool idea by Micky C. NOTE: sometimes doesn't work because of a bug in the m32script interpreter.

Open the build to see all 6 commits