📄 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 + -