📄 changelog
字号:
* TODO: see below, and in the "TODO" file. Enjoy!
Mon Dec 22 20:29:16 1997 <bk@gamers.org>
* CVS logs and other obsolete stuff removed. Anybody
who wants to keep some revision control now has a
clean slate to start with.
Mon Dec 22 19:53:34 1997 <bk@gamers.org>
* i_sound.c: enabled SNDSERV, as SNDINTR for
some reason just gives ghastly results e.g.
on E4M2. Frankly, I am at a loss. SNDSERV is
now default, until the internal sound driver
is a bit more reliable.
Note that the current redundancy means that
changes like the one below will have to
be propagated manually to the soundserver
sources.
* m_menu.c: the 4th episode is now removed with
the original doom.wad. You need to rename the
Ultimate DOOM/Special Edition retail IWAD to
doomu.wad now, or you won't see the 4th episode
in the menu. The compile time SPECIAL define
is thus gone.
Mon Dec 22 17:08:33 1997 <bk@gamers.org>
* v_video.c (V_DrawPatch): another last minute hack.
While shareware, retail, commercial, and plutonia
(being a full DOOM2 IWAD) seem to work okay now,
TNT gives an error on finishing the first mission:
"Patch at -35, -5 exceeds LFB".
I changed the error abort into a simple return,
thus the patch is ignored. The intermission screen
seems to come up okay.
* TODO: check which patch, and whether it is an IWAD
problem.
* i_sound.c: the sound table is hardwired in
sounds.h/sounds.c. As our current crude
sound handling simply loads *all* sounds at
startup, we are going to miss some with DOOM1
WAD files. I could skip them, but decided to
load a placeholder instead (dspistol). It might
be good to use a distinct default sound for
WAD debug purposes. A zero length sound lump
would work, but would not be noticeable.
Anyway, shareware and retail work now.
* TODO: implement proper handling for missing
lumps, sound and otherwise.
Perhaps move sound table into WAD?
* g_game.c (G_DoPlayDemo): finally removed the
annoying "Demo is from a different game version"
abort. It now simply declines to playback the
demo, and waits for user input on some
do_nothing screen.
* doomdef.h&Cie.: Lesson of the day - do not
replace a bunch of booleans with an enum and
use the same identifiers. Point in case:
"if ( commercial )" will not give an error,
and will always be true as long as the enum
value is greater than zero.
I found that the DOOM2 vs. DOOM differences
are everywhere (weapons, monsters, doors).
Number of episodes varies from shareware/commercial
to registered to retail, while commercial has
a unique set (two of them, counting the german
edition) of maps in one episode. Plus, TNT and
Plutonia add some TITLE strings to the mixture.
Well, Plutonia and TNT are treated as DOOM2 for
now, so you will miss the startup message.
* wi_stuff.h (NUMEPISODES): removed SPECIAL switch.
It is no 4 times 9 for wi_stuff.c internal
static arrays - doesn't matter.
* TODO: unified handling with DOOM 2 - dynamic
allocation of arrays.
* i_sound.c (I_UpdateSound): okay, I separated
the mixing, now done synchonously, along with
a flag signalling the timer that the mixing buffer
has been updated. The handler is now very short,
and I tried several intervals down to 50usecs,
w/o complaints. Now the man page says:
"system timer resolution currently 10ms". Odd.
Anyway, while the double shotgun/plasma rapid
fire problem seems to be a bit less disturbing
at higher refresh, it's still there. I set the
interval to 500usec, which is sufficient for
avoiding any buffer update misses.
Conclusion after just two days of experimentation:
yep, sound driver code isn't fun at all.
As for the bug - well, Dave Taylor suggested
close distance getting into a divide-by-near-zero
situation, screwing up the volume. I can't figure
why latency of an external sound driver or screen
size affect this, but I am running out of ideas.
* i_sound.c:
Some more experimentation with the timer driven
sound. It doesn't work well using an intervall
of less then 30 msecs - there will be artifacts
with say 50 msecs. This is pretty obvious with
a target frame rate of at least 30fps, methinks.
Using the REAL/SIGALRM timer with 30msec gets
rid of the artifacts, it seems - at the expense
of slowing down things on a P133 to a noticeable
jerkiness. Bah.
Mon Dec 22 00:36:54 1997 <bk@gamers.org>
* info.c: and i_video.c and i_sound.c - don't ask
me why some Linux header files are different with
gcc vs. g++, or what the complaint about the g++
complaint info.c state table is all about:
"initializer element for `states[..].action.acp1'
is not constant"
Undid some changes, compiled with gcc, playtested,
seems okay. Done for today... yesterday.
* i_net.c (ntohl): okay, htons/htonl, ntohs,ntohl
are back to haunt me. Copied the macros that
on my box aren't used for whatever reason directly
into the source. Got rid of all other multiple and
undefined references. CC=g++ now compiles (still
many warnings) and links, but the binary dumps a
core after Init PlayLoop. So be it.
Sun Dec 21 12:38:08 1997 <bk@gamers.org>
* p_enemy.c (P_NewChaseDir): changed tdir to int,
removed the LUTs - spurious locks were due to
endless loops created by boneheaded predecessor
map. Has to be a better way to do enum dirtype_t
anyway. Problem seems to be fixed.
* CC=gcc again, this time loads of #includes to
fix "implicit declarations, and one or two
unused variables. DOOM now compiles without
any -Wall warnings left, as C.
* Bug: compiled the reworked code with gcc. Within a
solid while of testing and blasting away, it
locked once. Got a core, which gdb doesn't grok.
Bah.
* TODO: okay, linkage of g++ build modules give loads
of errors, because we have many implicits, plus
missing #pragma implementation causing multiple
definitions. Yet, this is the very first time DOOM
was compiled as C++ without a parsing error. So there.
* sounds.c: included doomtype.h and removed yet another
enum { false, true } definition.
* p_saveg.c (misc): several.
* p_mobj.c (P_SpawnMobj): (actionf_p1)P_MobjThinker
* p_spec.c (EV_DoDonut): (action_p1) T_MoveFloor (twice).
* p_plats.c (EV_DoPlat): (actionf_p1) T_PlatRaise.
* p_plats.c (EV_StopPlat): (actionf_v)NULL.
* p_plats.c (P_ActivateInStasis): same
* p_lights.c (P_SpawnGlowingLight): (actionf_p1) T_Glow.
* p_lights.c (P_SpawnStrobeFlash): (actionf_p1) T_StrobeFlash.
* p_lights.c (P_SpawnLightFlash): (actionf_p1) T_LightFlash.
* p_lights.c (P_SpawnFireFlicker): (actionf_p1) T_FireFlicker.
* p_floor.c (EV_DoFloor): (actionf_p1) T_MoveFloor.
* p_floor.c (EV_BuildStairs): same (twice).
* p_doors.c (EV_VerticalDoor): (actionf_p1)T_VerticalDoor.
* p_doors.c (P_SpawnDoorCloseIn30): same
* p_doors.c (P_SpawnDoorRaiseIn5Mins): same
* p_doors.c (EV_DoDoor): same
* p_ceilng.c (EV_CeilingCrushStop): (actionf_v)NULL.
* p_ceilng.c (EV_DoCeiling): (actionf_p1)T_MoveCeiling.
* p_ceilng.c (P_ActivateInStasisCeiling): same.
These gave g++ errors, but have been ignored by gcc.
* r_data.c (R_PrecacheLevel): (actionf_p1)P_MobjThinker.
* p_saveg.c: conversions (actionf_p1)T_Whatever.
* p_tick.c: cast (actionf_v)(-1).
* p_telept.c: yet another (actionf_p1)P_MobjThinker.
* p_mobj.c (P_MobjThinker): cast (actionf_v)(-1).
* TODO: decent NOP/NULL/Nil function pointer.
I'd introduce a global A_NOP() function that
chokes up an error message.
Why -1 instead of NULL?
* p_enemy.c: conversions (actionf_p1)P_MobjThinker.
* d_think.h/info.h: think_t is essentially
the same action function pointer stuff.
I moved the definitions from info.h to
d_think.h, and aliased them with a typedef.
Now more changes needed.
* p_enemy.c (successor, predecessor): new LUT,
to provide increments/decrements for enum
dirtype_t, as g++ complaints:
"no post-increment/decrement operator for type"
* Makefile (CC): okay, tried "g++" once more.
A few errors (above). Plus shitloads of warnings
(obviously, better "unused" checking with C++,
lots of the usual int2enum suspects, implicit
declarations, the works).
* p_mobj.c: action.acp1 used accordingly.
* p_pspr.c: action.acp2 used accordingly.
* TODO: info.c:144 warning
"missing braces around initializer for `states[0].action'"
* info.h/info.c: some experimental stuff on
action function pointers.
* TODO: still some sound glitches at startup.
* i_sound.c: few more cleanups. Made mixing use
channel loop instead of unroll, set mixbuffer
to zero ot start.
Removed some more DOS leftovers (8bit),
kept some as comment.
* hu_stuff.c (HU_Start):
More gamemode changes. As in d_main.c, I
decided to use DOOM2 as default whenever
one needed - it was sold most, and had the
superset of items, enemies and monsters.
* TODO: the handling of WAD specific messages
like HU_TITLE, HU_TITLE2, HU_TITLEP etc.
should definitely be removed.
* d_main.c (CheckBetaTest):
Removed outdated, DOS specific BETATEST stuff.
d_main.c (IdentifyVersion):
Numerous changes to gamemode handling.
* TODO: currently, french language is enabled by
detecting an doom2f.wad - yet it needs FRENCH
define at compile time. I removed most language
stuff, and propose handling that at runtime,
using a switch in the config file. Well,
mission specific texts won't work outside the
WAD anyway.
* TODO: along the same lines: I suggest removing
the misc. devparm switches as well - lots of
redundancy not needed anymore.
* Makefile: finally added a doomstat.c for all
the global state variables listing internal
engine configuration. Right now, these are
scattered everywhere. Declaration to be found
in doomstat.h header.
* f_finale.c (F_StartFinale):
Reworked the entire finale handling based on
game mode enum.
* doomstat.h:
Global variables for game mode and language.
Removed old booleans.
* doomdef.h: GameMode_t and Language_t enum added.
Boolean for language was kinda limiting to 2
alternatives (french, english), and five boolean
plus #define SPECIAL for game version is just ugly.
* wi_stuff.h: SPECIAL switch compiles two
different EXE's, one for 3 episodes of 9 maps
each (DOOM 1 registered), one for 4 episodes
of 9 maps each (DOOM 1 retail/FinalDOOM).
Implicitely, the DOOM2 config (one episode,
34 missions) is handled. How is the german
edition (32 missions only) done?
Frankly, this is a mess. The problem is that
intermission (animated as in DOOM 1, simple
backdrop as in DOOM2) as well as certain
items (double shotgun) as well as certain
rendering stuff (sky texture) depend on this.
Plus, it ties into runtime flags as "commercial"
as well. Yuck.
Each change will change the game. Postponed.
* d_net.c,m_misc.c: removed last two NeXT remains.
* d_englsh.h,d_french.h,d_main.c,m_misc.c,r_draw.c,v_video.c:
more WATCOM remains removed. Kept some stuff that
handeld the blocky mode/detailshift in DOS, which
is n.a. in Linux - but probably not worth fixing.
Sat Dec 20 15:16:51 1997 <bk@gamers.org>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -