Wolfenstein 3D v0.8a - development log ---------------------------------------------- hiya fellow sceners, i'm proud to present the first playable version of wolf3d, v0.8a. all versions since v0.5b have been internal, so don't wonder about the version number. the game has been finished in october, but i thought to hold it back making sort of a "double-feature" with alive 11 possible ;). consider this version to be in beta stage so feel free to happily test the game on diffrent system configurations to find and report bugs that might (and surely will) occur. please take a look into my bugtracker, "docs\bugs.txt" in order to avoid annoying and unnecessary postings about yet known bugs. one thing ahead, i DO NOT care about emulator issues! for information on handling and playing wolfenstein 3d please refer to "docs\wolf3d.txt". now go and finally enjoy a playable atari wolfenstein 3d after maybe 6 years since my first rd-developments preview back in '99 and after periods of on and off of "hard" coding and effort...i hope it will be appreciated, at least i feel relieved as to me it's like a long-time dream of mine having become true eventually, any doubts removed this could have been possible on a plain ST :P. technical information ahead below. requirements/specs.: -any (M)ST(e)/Falcon030/TT030 (CT60 support has been dropped) -a Harddisk and/or HDD floppy is required to play Wolf3d -2MB of RAM -RGB/VGA -Running from a clean SingleTOS works most relieable atm. -Fastram is supported requests: eml: ray@tscc.de irc: ircnet server -> #atariscne -> ray-tscc bug reports: http://ray.tscc.de/wolfbugs.htm ray//.tSCc. 11-19-05 ------------------------------------------------------------------------------ development snapshot of v0.8 alpha: 05-04-05 i started including dma-sc great music, but there was no way for me to sync the cycle critical title screen and the msx without either disturbing the picture or the music at the other hand upon making the hbl highest priority. 05-05-05 the problem could be solved thanks to dma-sc who converted another tune for me without using any effects, so the timers are left free and there are no disturbances anymore - cool. the msx is replayed via the vbl which i set to/is 60hz on all atari systems this runs on anyway, so there aren't any speed issues. i think i'm gonna use the other tunes during menus/intermission screens where much fewer (i.e. 6-7 instead of 200) rasters are used anyway, so disturbing the msx effect timers doesn't become too obvious at last, hopefully. i'll need to verify this tomorrow...in-game msx are not an option to me though. 05-10-05 ok, so i've made up a little "intro" where various credits are being displayed. you can skip screens pressing space or enter the game hitting the esc-key now. bugfixed: IKBD issue causing the controls not to react within the game if a key had been pressed or the mouse had been moved during the intro. this was mereley caused by me forgetting to flush the IKBD buffer before entering the gameloop, sorry for that. 05-17-05 i've been busy coding a lite (and incomplete) blitter emulation for machines lacking it (i.e. STs and TTs) during the last couple of days which turned out to be a pain in the ass due to its code getting quite messy very quickly. i'm now just trying to fix up the last glitches so that i can easily implement procedures to handle menus and text strings more easily which require bitplane gfx to be placeable at arbitrary pixel positions. 05-18-05 ok, everything about it seems to be fixed now...time for some optimizations. 05-19-05 thanks to gwEm another bug in my lz77 could be revealed but it looks like we could fix that one quickly, too...phew. i could yet fix another bug in my blitter emulation causing shapes of <= 16 px. width to not be displayed correctly. gosh, i've been busy cutting down loads of buttons, caption areas, a font set and stuff using neochrome maste's awesome grabber tool ;). so i can finally start implementing the menus tomorrow. 05-20-05 today i've started a little resource scripting language using devpac's macro feature and a suitable resource interpreter so i can directly create arbitrary dialog forms used for the menus...by now i have defined the following elements: FORM_PALETTE FORM_WVBL (Wait for vbl event) FORM_CLEARSCR FORM_BUTTON FORM_RADIO RORM_IMAGE FORM_NUMBER FORM_USERDEF FORM_MOUSE which should be enough to create wolf3d's menus. atm. the only features actually implemented are FORM_PALETTE and FORM_IMAGE. so selectable elements and a mouse cursor are badly needed :). i've just added support for external resources to be loaded in from hdd which means i can finally cut down the binarie's size and hopefully pack the whole thing to run on 1mb machines again. 05-21-05 bug: the resource management system doesn't work at all under MiNT/MagX!...i suspect this to be caused by the hd-driver's timer-c dependance. i still need to verify this though. 05-26-05 arf...i still couldn't get the HDD access run properly with HDDRIVER loaded, so i took the time to tidy up the source code a bit. i completely removed my timer d rout since it was just there for the keyframing which is now being performed by the vbl instead. 05-27-05 ok, today i finally managed to swap out the wall and sprite shapes into external disc resources as well so the binary has become much smaller. i still need to add support for external enemy sprites and sound samples as well though. ...extended the dialog management system a bit so it loads in form resources from disc as well. 06-02-05 shit, it seems like hdd access occasionally fails and leads to crashes in various tos versions <= 2.06 :/. i'll try to fix that now. 06-07-05 finally bugfixed: clumsy wall collisions leading to trouble in properly opening doors on the ST. this could be solved by iteratively decreasing the collision square's size until one motion works instead of just checking for horizontal/vertical spaces seperately. still no success with fixing the texture-loading :(...it seems that the problem is caused by the door textures which are tried to be loaded into non accesible memory segments retrieved by M(x)alloc(), somehow. 08-15-05 it's been quite a while but in the meantime of trying to finish some exams i were able to sort out the malloc problems pointed out above, so the game seems to run fine even from tos 1.04 (and above) plus i needed to skip manual calls of the gem event-timer, leading to unpredictable multitasking OS (MagX!, MiNT) behaviour on HDD accesses. but i will try to find a solution on that issue. it seems there's also some struggle with spurious crashes during the game on the tt and my falcon. i finally patched the game to run on 1Mb machines again, sacrifying the high detail mode on those computers, read: THE HIGH DETAIL MODE WILL REMAIN UNACCESSIBLE ON 1MB MACHINES, so please don't bother :). now it's 02:40h, i need to get some sleep...ZZZzzzz 08-17-05 i've hacked up a little utility to convert pictures with multiple palettes in c. i had been using "LOADSPEC.MDL" with neochrome master to convert the raster pictures before but it wasn't able to handle the extended STE colors. meaning you can now enjoy all the gfx with a full 4096 color palette including raster pictures such as the intro logos and so on. 08-22-05 i've made up a little routine drawing the famous "Get Psyched" status screen while the game is being initialized. 08-26-05 to decrease the binary size i excluded some more graphics into ex- ternal disc resources. i'm just playing around with the enemy death animation which gets temporarily triggered instead of letting these guards shoot. whatever, i will try to add some code for loading in diffrent actor classes and some routines for animaing the player's weapon before adding a more decent game logic to kill enemies. i yet have to bugfix another issue with non-reactiong, stationary guards appearing occasionally before, too. 09-01-05 i've fixed the "stationary" guard issue...the problem was caused by a simple "mulu.w" instead of a "muls.w" in the spawning procedure i finally added support for multiple actor classes to be loaded in from disc as well. this decreased the binary size by 50Kbytes since i could skip the nazi guard sprites which had by now been statically included. 09-02-05 just a small update today. i've added wolf3d's famous elevator level ending switch :). 09-12-05 trying to end animated weapons i had to convert another bunch of gfx data so the whole set of masked weapon-shapes is now organized as a codetable with jump entrypoints which i decided to be the quickest way of animating and glueing the weapon sprites. 09-16-05 trying to provide a useable weapon i started implementing the "PlThink module" necessary for this. i also patched the common system error vectors (bus-, address- and illegal instruction error) in order to ease wolf3d's debugability ;). ok, i'm done...you can now finally attack enemies, still without doing any damage to them though. i still need to add sounds for the weapons as well. 09-20-05 optimized the "PlThink" module a little bit. Ha, i finally implemented a TargetEnemy procedure so that you can now actually attack and kill those baddies. i need to add sound events and stuff, but i would have to heavily reorganize my soundmanagement system, lots of small things to do still. 09-21-05 i refined the games enemy logic a bit so that hitpoints are being kept track of, "pain frames" are shown if your bullets hit an actor in case it you haven't yet killed it. 09-22-05 knife attacks are now possible too, i could add support for flame- and missile-attacks but a reorganization of the sfx management- system is strongly required before. 09-23-05 today i improved the game's enemy ai so that enemies outside the player's field of vision will keep shooting at you if you are still visible to _them_, 09-24-05 i eventually improved the sfx-system as planned so that we can have decent sound events. time to exclude the sample resources to hdd, as well. ok, sfx are now getting loaded in off of hdd, which decreased the binary's size to roughly 62Kb ! :) 09-25-05 today i started the "PlStuff" module which holds important proce- dures such as a "TakeDamage" routine counting the damage inflicted to you by those baddies. 09-26-05 i've added new sound events, such as the "oof" sound that occurs trying to hit "open/use" (i.e. the space key) on a solid wall. elevators should now have functionality, but obviously they have not...i still need to find out why. 09-29-05 fixed: elevators are now working. searching around in the level data with bugaboo i found out the problem was caused by a mistakeable tile enumeration. 09-30-05 some enemy classes will drop bonus items such as ammo, keys or guns when shot. this feature still behaves a bit odd sometimes, however. 10-02-05 i started adding support for missiles today. missiles are now virtually working (i.e. controlled), but i still need to work out a concept to lump them into the rendering engine :/. 10-03-05 ah, i just had an idea how to teach the rendering engine how to handle the missiles, i.e. just adapt the missile class to match the general static sprite class and extend my sprite engine a a bit to additionally take missiles into account as they don't get registered in the global tilemap as ordinary items/enemies (which was the initial problem). 10-04-05 the first missiles are being redrawn by the engine, however for strange reasons i can't figure out atm. they do not move at all yet :/. ok, fixed that, missiles are now at least send off into the correct direction, but still sometimes missiles/flameballs do not get send off at all or they keep staying in place all of a sudden. i still need to add a collection detection and some decent sprites, as i'm using the doortexture as a dummy atm.. 10-05-05 bugfixed: missiles do now finnaly fly and and burst just as they should, the bug was caused by a data register accidently being overwritten in the sprite enqueueing rout. collision detection and correct sprites have been added today, too :). i increased the targetting tolerance a bit so it should now be easier to shoot enemies even if they are far away. 10-06-05 the damage caused by missiles/flames is now taken by enemies so that these weapons are useable, too. injuries done by the enemies to the player will get registered as well so that you can get killed, as well. after reworking/recutting some gfx with neochrome master and crackart (tnx evl and havoc for telling me how to remap colors with crackart) i added health/ammo/item counters for good. 10-07-05 today i improved the GetItem procedure so that it counts score/ treasure, lifes and so on. diffrent sounds are now replayed when picking up diffrent class items...there are still some bugs left to be fixed with it, though :/. 10-11-05 i needed to take a little break. however, i fixed a little bug in the pickup procedure, which caused bullet weapons to not work anymore after you had picked up some ammo. i've just changed some more bugs in the player AI. so that for instance your weapon is changed as soon as you run out of ammo. c-rem just send his tscc-logo, which looks very cool imo (tnx!) 10-12-05 today i've fixed a bug in the "EnMove" modulse so that enemies don't try to open locked doors anymore. bugfix: enemy picksups are now working but still disappearing at certain angles :/. bugfix: the MFP variable restore routine is now working a bit more relieable but sadly this doesn't result in a 100% stable exit, anyway. i extended BJ's player AI so that he cannot open locked doors without the apropriate keys bugfix: collision issues with not picked up items are now solved. 10-15-05 thanks to flash/tnb for pepping up BJ Blazkowicz' faces so that i could add his facial animation into the staus panel, finally. it however still needs some bugfixing. 10-22-05 after a short break i implemented a mouse cursor routine. it still needs to be included with wolf3d's menu resource system, though. 10-26-05 flash/tnb finally send the fully reworked gamepanel gfx (inclu- ding BJ's face etc.), which rules - thanks mate! - so i finally cut and included these as well. 10-27-05 lately, i included the mouse driver and extended to my dialog/ menu system to evenually support a software mousecursor and userdefined resources such as a clear screen and a wait for vbl object etc. which seems convenient. 10-28-05 i extendet the dialog system to support buttons which now can be depressed, without any functionality yet, though. 10-29-05 after plenty of fixes buttons are now also provided with functio- nality, i.e. their handler gets called as soon as you press and release a button. 10-31-05 i've now added support for user defined resources, so i could build the scenario selection object. completed: FORM_RADIO, so there's support for radio buttons now. i implemented the difficulty selection menu and to my surprise it worked flawlessly right away, cool ;). 11-03-05 a deinit routine for resource objects has been made up today. i've completed my dialog resource interpreter so that it is now capable of displaying numeric string resources as well. i have extended the debuggin messages as well so that the fault's text segment offset is returned in case of an exception. 11-04-05 some minor bugfixes in the enemy AI. 11-05-05 completed: enemy AI (enemy missiles are now thrown., hitler drops his armor etc.). i started implementing an intermission screen showing score, kill ratio etc., but i seems the hddriver gets irreversibly destroyed during the gameloop, shit! 11-06-05 i finally dropped the lowmem c2p method because there was no other way for me to get the hddriver running after the gameloop anymore, meaning the game will now run slightly slower :( but much more clean. exiting issues are now cured, as well. i added BJ's animated face to the interlude screen. 11-07-05 today i fixed the 2mb issue for good. so 2MB of RAM are now the minimum requirement to get wolf3d running instead 4MB :). added: the well known "bill-budgey roll" animation to the intermission screen today counting score, treasure, kill and secret ratio. 11-08-05 cosmetic optimization: i modified the intermission screen to use delta clearing so it runs at full framerat now. i replaced "FORM_PALETTE" by an new resource object called "FORM_PAL_SNG" so i can optionally specify a unique soundtrack for each dialog. thus DMA-SC's excellent msx are included finally. thanks to gwem i could surpress the unwanted OS bell sound when a song is deinited. added: "game paused" screen. i will have to add a quit key from there. 11-10-05 i added a quit key "Q" ("A" on french keyboards) to let you quit the game during the "game paused" screen. 11-11-05 it's done, i completed the scenario loader today so the game is now fully playable, yes! 13-11-05 did some minor retouches/fixes. 19-11-05 last minute additions: i added gameover and victory animations, a preference file saving your settings and a cheat mode ;). some minor fixes have been performed as well. done!