August 2012
-
General
polymost.c: rewite widescreen bit code, part 2.
Show details
Use integer math; both args to setaspect are constant.
-
General
Clean up classic's and Polymost's dorotatesprite functions (triv. changes only)
-
General
polymost.c: rewrite dorotatesprite's widescreen bit handling (256,512,1024).
Show details
Instead of setting and resetting the [xy]dim globals, use them as locals in a block (shadowing the globals). Also, do some common subexpression elimination for clarity.
-
use updatesector instead of *z.
Show details
When shrunk, the player position is below the floor for some weird reason. Updatesectorz would set the sector to -1, and the view would not be drawn.
-
remove weapon item drawing code.
-
General
fake multi: draw weapons for both players.
-
remove HUD drawing code, draw view from EVENT_DISPLAYROOMS.
-
General
In fake multi, never draw the screen rotated.
-
General
Splitscreen hack: draw status bar for both players.
-
General
Always draw the frag bar in fake multi.
-
General
In fake multi-mode, always draw the original mini status bar.
-
update to modified version posted at the Duke4.net forums.
-
General
Add original splitscreen mod by Bloodclaw for reference.
-
General
Fake multi-mode: better -q* messages, make surplus APLAYER sprites invisible.
Show details
Also, change type of g_numPlayerSprites (global and mapstate) from inconsistent uint8_t/char to int8_t.
-
General
Clean up build.h and status bar drawing code in game.c.
-
in showview*, use new aspect determination if r_usenewaspect is 1.
-
in setaspect_new, determine the aspect with {x,y}dimen instead of {x,y}dim.
Show details
That is, use the view boundries instead of the whole screen.
-
General
Rewrite the EVENT_ANIMATESPRITES loop (G_DoEventAnimSprites calls) for clarity.
-
General
game.c: factor out 2 inst. of dup. code into G_DoEventAnimSprites().
-
General
Hack for fake multimode/splitscreen: also draw mirrors from showview*.
Show details
See the source for why this hack is ugly.
-
in fake multi-mode, play 'globalsound' even if player index isn't screenpeek.
Show details
This makes sounds like DUKE_GET (item pickup) be heard for the second player in the splitscreen mod, too.
-
General
If a value of 1 is returned from EVENT_DISPLAYROOMS, don't draw them.
Show details
This includes mirrors, rooms and masks. Any value other than 0 or 1 that is returned is considered an error (reserved for future use).
-
General
Fix mirrors in Polymost.
-
General
Clean up G_MoveFX() a little.
-
General
Splitscreen mod hacks: handle screen tinting from both players.
Show details
Of course, it still affects the whole screen. Handles pain and lizard spit.
-
General
Hacks for the splitscreen mod: play sounds from both players.
Show details
The sound distance is the minimum of the two. Both point sources as well as MUSICANDSFX ambient sound is handled.
-
General
sounds.c: Factor out duplicate code into S_CalcDistAndAng().
Show details
The two instances in S_PlaySound3D() and S_Update() were slightly different as far as sequencing is concerned. However, I think making it the same has only benefits and may fix some popping sounds when starting to play a sound and updating it with a different distance value on the second buffer fill.
-
General
First round of sounds.c cleanup, no functional changes.
-
General
Also draw TROR from showview* commands.
-
General
Rename args in G_DoSpriteAnimations(), for easier grepping.
-
General
High-level TROR drawing: clean up how things are passed around.
-
General
Resurrect fake multiplayer mode a little (no bots).
Show details
Just enough so that Bloodclaw's splitscreen mod can be played.
-
General
Correct premap.c's clearfrags().
Show details
The story: Duke3D 1.5 source had "short frags[MAXPLAYERS][MAXPLAYERS]" and "clearbufbyte(&frags[0][0],(MAXPLAYERS*MAXPLAYERS)<<1,0L);". In r1625, g_player[].frags[MAXPLAYERS] was changed from an array of int32_t to one of uint8_t, but the clearing code ("clearbufbyte(&g_player[i].frags[0],MAXPLAYERS<<1,0L);") stayed. In r2201, I rewrote clearfrags() under the assumption that it really is supposed to clear stuff beyond .frags[]. The moral: 1. Write clean code. 2. Use sizeof. 3. Write clean code!
-
General
Text-repl.: hitinfo variables -> hit, hit{sprite,sect,wall} members -> no "hit"
Show details
This makes the code rather more readable in some places. Unlike the two preceding commits, this one is actually purely textual replacement.
-
General
Mass text replacement g_player[p].ps --> ps, part 2 (harder)
Show details
Functions affected are G_Move* in actors.c and A_Shoot in player.c. Here, the p variable had function scope, now it's redeclared in shorter blocks. I'm still relatively sure that no observable behavior was changed, though not as sure as in part 1. Also, some dead assignments and the like are eliminated.
-
General
Mass text replacement g_player[p].ps --> ps, part 1 (the easy one).
Show details
The p variable (sometimes named differently) has short scope in all cases, so I'm almost sure that the replacements amount to an identity transformation.
-
General
actors.c: factor out 4 instances of id. code (up to args) into nudge_player().
-
factor out addammo/addweapon{,var} common code, harden addweaponvar...
Show details
... against invalid weapon indices and arguments accessed from arrays/structs.
-
rewrite bitar to use arrays of int32, more convenience ops.
-
reflect the preceding rename in the sources.
-
General
Rename a certain file to appease Windows file systems.
-
implement a couple more 1.5 commands.
-
General
Fix tile CAMERA1+4 being not changed to a CAMERA1 on spawn.
-
General
Fix slimers not disappearing on dnmonsters cheat, display 2nd 'on' state.
-
add "extend all highlighted sectors" func to 'F menu via a.m32.
-
General
Clean up game.c and actors.c.
-
clean up handing of ac/mv internally, add control module.
-
cleanup
-
'bitar': rewrite ops for colon syntax, serialization, set ops.
-
General
sdlayer.c: Add high-resolution timer for OS X, using mach_absolute_time().