home *** CD-ROM | disk | FTP | other *** search
-
- ADoom 0.8 22 Jan 1998
- ----------
-
-
- This archive contains an Amiga port of DOOM, compiled as directly as
- possible from ID Software's Linux DOOM source code.
-
- On 26th Dec 1997 I learnt that ID Software released the source code of
- DOOM and made it available by ftp. So I immediately downloaded it and
- tried compiling it with SAS/C 6.58 for the Amiga. This archive
- represents my results after about 15 evenings and 3 days. Much of
- that time was spent tracking down 1 bug. I am now back to my full
- time job and only have time to work on ADoom in spare evenings and
- weekends.
-
- Warning: This version of ADoom is still under development and you
- might find some bugs.
-
- You can get the original ID Software Linux DOOM source from:
-
- ftp://ftp.cdrom.com/pub/idgames/idstuff/source/doomsrc.zip
-
- Source code of ADoom, which includes all my changes, is in a separate
- archive on Aminet.
-
- ADoom is OS-friendly and multitasks.
-
- ADoom puts up an ASL requester for the ScreenMode.
-
- Sound effects, ECS support and 68040-optimised C2P are included since
- version 0.1. Version 0.4 adds 68020-optimised blitter-assisted C2P
- and double-buffering. Version 0.5 adds music. Version 0.6 adds
- 68030-optimised blitter-assisted C2P.
-
- Low detail mode, which can provide a significant speedup on 68030, is
- available and working from ADoom version 0.6.
-
- Version 0.7 fixes some serious bugs that caused crashes on 68040+AGA
- and 68060 Amigas in version 0.6.
-
- You can use a joystick in the 2nd gameport from v0.2.
-
- AmiTCP network support was added in v0.2, but so far is rather
- unstable and slow, even with a direct ethernet connection between 2
- fast Amigas.
-
- If disk loading of levels is very slow, try adding more disk buffers
- with the AmigaDOS ADDBUFFERS command. Adding 300 buffers can vastly
- increase the level-loading speed. One person recommended DynamiCache
- instead, but I haven't tried that.
-
- Thanks to several people who sent me icons for ADoom. I put them in
- the more_icons subdirectory in this archive.
-
- There several (different) Amiga DOOM ports at "http://www.pluk.com/"
- including one called Amiga Doom by Trance that uses GG environment and
- AHI, and another called DoomAttack by Georg Steger which is very fast
- on 68030s. This web site is to be replaced by "http://surf.to/adoom/"
- at the end of February.
-
-
-
- REQUIREMENTS:
- -------------
-
- A 68020+ Amiga running at least OS 3.0, with at least about 4 Mb of
- fastmem.
-
- Unless you have 68040+, you must have an ECS or AGA Denise chip.
- Currently the combination of 68020 or 68030 with OCS doesn't work
- because OCS can't do long blits used by the 020/030 C2P routine.
-
- A graphics card, CyberGraphics and 68040+ are strongly recommended.
-
- ADoom also works with AGA or ECS (EHB) using C2P.
-
- --------------------------------------------------------------------
- | YOU NEED TO GET A WAD FILE THAT WORKS WITH LINUX DOOM AND PUT IT |
- | IN THE SAME DIRECTORY AS ADOOM. |
- --------------------------------------------------------------------
-
- Otherwise you get the message: "Error: W_InitFiles: no files found"
-
- WAD files typically have names like DOOM1.WAD and DOOM2.WAD.
-
- Not all WAD files work. It seems that some older WAD files are
- rejected because they leave out some information that ADoom requires.
- I think these same WAD files fail to work in Linux DOOM.
-
- DOOM1.WAD from "http://surf.to/adoom/" works fine, as should the
- latest shareware WADs from ID Software's WWW site. I was told that at
- least some Macintosh WADs work too, as does the registered DOOM II
- WAD. One person told me that any "Doom2 PWAD" works, whatever that
- is.
-
- A couple of people said they got the 4th episode of Ultimate DOOM to
- work by changing the name of the WAD file to doomu.wad.
-
- Many people have asked me which WADs work and which don't, but I'm
- afraid the above is about all I know at the moment.
-
- I received many conflicting reports about which WADs work, especially
- the original registered DOOM WAD seems to work for some people and not
- for others. See the file UserHints.txt for some examples.
-
- To play third-party WADs with non-standard names, you must have a
- *registered* WAD in the same directory as well. Then you should start
- ADoom with the -file option specifying the third-party WAD, e.g:
-
- ADoom -file Satan666.wad
-
- The -file option doesn't work if you only have a shareware WAD.
-
- I use a stack size of 150000 bytes, but that's probably overkill.
- I don't know what the stack requirements really are yet. It's
- probably less than 4096 bytes (because it worked OK from the icon
- when I forgot to set the stacksize).
-
- An FPU is neither required nor used (except on 68060).
-
- An MMU is neither required nor used.
-
-
-
- HELP, I'M SWAMPED WITH E-MAIL:
- ------------------------------
-
- Thanks for all your e-mails about ADoom. I enjoy reading them.
-
- However please note that I received upwards of 40 messages per day for
- several days. Now I'm back to my full-time job, so I only get time to
- work on ADoom and catch up on e-mail on my spare evenings and
- weekends. I apologise in advance if you don't receive a reply.
-
-
-
- MUSIC:
- ------
-
- ADoom supports music based on .MUS-player source code sent to me by
- Joseph Fenton of MicroCode Solutions. Music requires an extra file
- not included in the archive because of its size. You should download
- ADoom_Instruments.lha from Aminet and unpack the file MIDI_Instruments
- into your ADoom program directory.
-
- Music is disabled by default because the MIDI_Instruments file is
- distributed separately. Once you have the MIDI_Instruments file,
- enable music with the -music option or MUSIC tooltype.
-
- Joe greatly improved the MIDI_Instruments file over the version
- supplied with ADoom 0.5.
-
- Joe says "You might want to give my brother Michael some credit as
- well, he wrote the event handling and the Player Interface code; I did
- the PlayNote and interrupt audio engine and instruments".
-
- Enabling music adds to the atmosphere, but it also slows the game down
- and leaves only 2 channels for sound effects. Without the music you
- get 4 channels for sound effects.
-
- From version 0.6 you can disable all sound effects with -nosfx or the
- NOSFX icon tooltype. That leaves audio channels free so you can use
- your own music player in the background.
-
- In version 0.8, the music volume is lowered and clicks and pops
- eliminated.
-
-
-
- KEYBOARD:
- ---------
-
- Most keys are mapped the same as on a PC. However the Amiga doesn't
- have F11, F12 and PAUSE keys. On the Amiga, press '[' for F11, ']'
- for F12 and HELP for PAUSE.
-
- Many people complained about the keyboard layout, especially CTRL for
- FIRE. It's possible to customise the keymap in .doomrc --- see
- UserHints.txt. In version 0.6 I changed the Right-Amiga key to send
- the same code as CTRL (was the same as Right-Alt in 0.5) and I
- disabled the Left-Amiga key so screen-flipping doesn't set things off.
- Someone just pointed out this wasn't such a good idea. AmigaOS uses
- Right-Amiga and arrows together for moving the mouse pointer when you
- don't have a mouse.
-
-
-
- MOUSE:
- ------
-
- Mouse support was added in version 0.3, but it is disabled by default.
- That's because it slows the game down. To enable the mouse, start
- ADoom with the -mouse option, or use the MOUSE icon tooltype.
-
-
-
- CD32 JOYPAD:
- ------------
-
- Gabry (ggreco@iol.it) emailed me some CD32 joypad handling code. It
- is disabled by default because it requires lowlevel.library. If you
- want to try it, use the -joypad option or JOYPAD tooltype.
-
-
-
- SAVING THE SCREENMODE:
- ----------------------
-
- If you don't like the ScreenMode requester every time ADoom runs, you
- can save your favourite ScreenMode as an icon tooltype.
-
- First, watch the output of ADoom when it starts up and note the
- DisplayID of the ScreenMode you selected. It will be something like
- $40420000. Now click the ADoom icon once and select "Information..."
- from the Icons menu. Click on NEW and type in:
-
- SCREENMODE=$40420000
-
- replacing $40420000 with the DisplayID you noted. Delete any other
- SCREENMODE tooltypes. Finally, click SAVE, and start ADoom again.
-
-
-
- MEMORY:
- -------
-
- ADoom has a built-in disk caching system that automatically tries to
- keep the most important game information in memory, minimising disk
- accesses. ADoom automatically allocates a 6 Mb block of memory for
- the cache if it can, otherwise it tries to allocate the biggest block
- it can, bigger than 2 Mb, while still leaving 2 Mb of fastmem free.
-
- You can override ADoom's default cache size determination algorithm
- with "-heapsize <number>" option or "HEAPSIZE=<number>" icon tooltype,
- where <number> is in kilobytes. If you set the heapsize to less than
- about 2000 kb, ADoom might fail to load certain WADs. The shareware
- WAD works with "-heapsize 1000".
-
- Setting the heapsize is useful if you only have a small amount of
- memory, or if you want to set aside memory for an enormous cache. The
- smaller the heapsize, the more ADoom will access disk during play.
-
- If you have only 4 Mb of fastmem (or less), try "-heapsize 2000" or
- even "-heapsize 1000".
-
-
-
- FPS COUNTER:
- ------------
-
- From version 0.8 you can use the -fps option of FPS icon tooltype to
- put a continuously updated frames/second counter in the top-left
- corner. Note that this slows down ADoom slightly.
-
- The official way to measure FPS is to use the shareware doom1.wad,
- high detail, 2 steps down from max window size, "Adoom -mmu -forcedemo
- -timedemo demo3" after a cleanup reboot and SetPatch, then apply the
- formula:
-
- FPS = (gameticks / realticks) * 35
-
- By this method, speeds in excess of 31 frames per second have been
- reported for ADoom version 0.7 on 68060 Amigas with CyberGraphX.
-
- See http://www.balldesi.demon.co.uk/ for the latest speed results of
- various Amiga DOOM ports.
-
-
-
- ROTATEMAP AND MAPONHU:
- ----------------------
-
- Cyril Deble <Cyril.Deble@inforoute.cgs.fr> sent me some patches to
- make the automap display on the main 3d view and rotate like in Alien
- Breed 3D.
-
- From ADoom version 0.8 you can use two command lines/icon options
-
- -maponhu : map on headup
-
- -rotatemap : automap rotate
-
- Cyril warns:
-
- "A small bug accurs when you use a non full screen view with the
- automap the border are not refreshed as the border is buffered... You
- have just to change the clipping area of the automap to make it work
- ok.
-
- "I don't get too much into the code and i don t have time to do any
- further change hope it will be usefull for something... It's rather
- nice for me to include it into ADoom and i have noticed no slowdown
- while the map is on the 3D view... My config is 060/AGA
-
-
-
- NETWORKING WITH AMITCP:
- -----------------------
-
- AmiTCP networking in ADoom is based on the Linux DOOM source code. It
- works between Amigas and Linux PCs using TCP/IP on a fast network. It
- uses TCP/IP on all computers, not IPX.
-
- DOOM on PCs normally uses IPX for networking, which is incompatible
- with ADoom's TCP/IP. I don't know whether there is a TCP/IP driver
- for DOOM on Windows95, but I heard there is such a thing for MSDOS
- (untested with ADoom). Another person told me that Win95DOOM can use
- TCP/IP.
-
- Several people reported success over serial lines with SLIP or PPP,
- although in most cases it was very slow. I tested it over ethernet
- and AmigaLink. Even then it seemed rather jerky and slow, and it
- failed to start up when I tried crossing a gateway between the 2
- networks.
-
-
- To start ADoom across 2 computers called fred and bob, say:
-
- 1: Make certain both computers are using identical WAD files;
-
- 2: Make certain you can PING fred from bob and vice versa;
-
- 3: On bob, enter: "ADoom -net 1 fred"
-
- 4: On fred, enter: "ADoom -net 2 bob"
-
-
- If there are 3 computers, called fred, bob and sue, say:
-
- 1: Make certain all 3 computers are using identical WAD files;
-
- 2: Make certain you can PING between all computers by name;
-
- 3: On bob, enter: "ADoom -net 1 fred sue"
-
- 4: On fred, enter: "ADoom -net 2 bob sue"
-
- 5: On sue, enter: "ADoom -net 3 fred bob"
-
-
- It's normal for screens to go blank sometimes during the startup phase.
-
- On Linux I used DOOM compiled from the source code available from:
-
- ftp://ftp.cdrom.com/pub/idgames/idstuff/source/doomsrc.zip
-
-
- I don't know whether other Linux DOOM implementations are compatible.
-
- So far I have tested up to 3 computers. The code is pretty untested
- and your mileage may vary.
-
- Several people asked me for NULL-modem support between 2 Amigas, or
- parallel cable support. Well it's already there. You need to get
- Miami or AmiTCP installed at both ends and talking to each other over
- SLIP, PPP or PLIP. Then proceed as above. However it will likely be
- unplayably slow unless you have very fast Amigas. PLIP is very heavy
- on CPU-usage. It should also work over a serial line to a PC running
- Linux DOOM, and maybe even to a PC running Win95Doom, which, I'm told,
- supports TCP/IP.
-
-
-
- CHUNKY TO PLANAR:
- -----------------
-
- For native screenmodes on 68040+, ADoom uses a CPU-only C2P routine.
- For EHB on 68040+ it also uses a comparison buffer. I timed it on my
- WarpEngine as being faster on average than a routine without a
- comparison buffer. The comparison buffer method is temporary until I
- can figure out some sort of list of dirty-bounding-boxes thingy.
-
- From version 0.4, ADoom in native Amiga modes (AGA and ECS)
- double-buffers.
-
- From version 0.4, ADoom uses a blitter-assisted C2P routine on
- 68020/30. The blitter does the latter half of the C2P conversion in
- chipmem while the 3D engine renders the next frame to fastmem. It
- also double-buffers --- a necessity for this approach. On a 50MHz
- 68030, C2P CPU-time is 3 times less than in version 0.3.
- Unfortunately it looks as if C2P is only a small fraction of total
- time anyway, maybe 10..15%. In version 0.6 I replaced the AGA 68030
- C2P that did 2 CPU merges and 2 blitter passes with one based on
- Mikael Kalms' routine that does 3 cpu merges and 1 blitter pass.
-
- C2P for ECS (EHB) modes takes longer because there is an extra table
- lookup for each pixel. It converts 8-bit -> 6-bit.
-
- ADoom renders to fastmem and uses WritePixelArray8() on gfx-cards.
-
- Several people asked me to make a version which renders directly to
- the CyberGraphX framebuffer, like Trance's AmiDoom and RTGMaster. I
- started doing this, but didn't finish. To try it with CyberGraphX,
- use the -directcgx option or DIRECTCGX icon tooltype, but it will
- probably be slower and flicker like hell... It may also corrupt other
- screens if you flip or drag screens. It needs double buffering to get
- rid of the flicker. I tried to add double-buffering but couldn't get
- the interaction with I_ReadScreen() right.
-
-
-
- RENDERING:
- ----------
-
- Version 0.5 uses fast column and span renderers by Aki Laukkanen. Aki
- supplied seperate 68060-optimised routines. These are selected if you
- have a 68060, provided you have SetPatch and 68060.library correctly
- installed.
-
-
-
- 68060:
- ------
-
- Several people reported extremely poor performance on their 68060
- systems. If that happens to you, try using the FastExec (whatever
- that is) "SSP to FastMem" option. Several 68060 users told me that
- made a huge speed difference. Shaun Falkenberg (shaunf@box.net.au)
- suggests the equivalent option in MCP might be better because it saves
- a reboot on cold startup. OxyPatcher is yet another alternative.
-
- ADoom 0.5 uses 68060-specific fixed-point routines which don't use
- 64-bit MULS & DIVS on 68060. You must have SetPatch and 68060.library
- correctly installed for these faster routines to be selected. Version
- 0.6 uses the FPU for both fixed-point multiplies and divides on 68060.
- Version 0.5 used the FPU for fixed-point divides and 32-bit integer
- instructions for fixed-point multiplies on 68060.
-
- In version 0.6 I added the -mmu option and MMU icon tooltype to mark
- the chunky buffer and chip raster as "imprecise" using the MMU. I
- used Aki Laukkanen's MMU code for this. This may speed up ADoom on
- 68040+MMU and 68060+MMU systems slightly, by better scheduling memory
- accesses.
-
-
-
- LIMITATIONS:
- ------------
-
- Play-tested for a few hours on an A3000 + WarpEngine + GVP Spectrum +
- Cybergraphics running OS3.1 and Enforcer, on which it seems to run
- very smoothly. Many people reported success with earlier versions of
- ADoom. I think I finally fixed all the crash on exit bugs. I think
- the teleport bug is fixed, and hopefully the "PNAMES not found" bug
- too, in version 0.8.
-
- Outstanding bugs possibly include problems with -record and -playdemo,
- problem using -timedemo without also -forcedemo, network problems and
- problems loading the original registered doom.wad. However bugs are
- becoming rarer these days. Hopefully I didn't introduce too many new
- ones in the latest version...
-
-
-
- BUGS FIXED:
- -----------
-
- 0.8
-
- Got rid of the warning message for every sound effect when -nosfx is
- used.
-
- Lowered the volume of music and sound effects. That eliminated the
- clicks and pops in music and enabled the full range of the sound
- effect volume slider to have effect.
-
- Disabled "S_StartSoundAtVolume: 16bit and not pre-cached - wtf?" msg
- in s_sound.c with -nosfx.
-
- Fixed (harmless) missing #endif in d_main.c.
-
- Fixed bug in r_things.c, info.c and info.h. I wonder if this fixed
- the "PNAMES not found" bug. See amiga_notes.txt.
-
- Applied patch supplied by Aki to DrawColumn_060() in amiga_draw.s to
- fix problem with red stairs and random pixels on 68060.
-
- 0.7
-
- In 0.6 I accidently introduced a serious bug into the C2P routine used
- for 68040+AGA and 68060+AGA. Fixed this for version 0.7.
-
- In 0.6 I accidently introduced a serious bug in the MMU cleanup
- routine when -mmu is used or the MMU icon tooltype is used. Fixed for
- version 0.7.
-
- 0.6
-
- Fixed bug in low detail mode and re-enabled it, thanks to a note from
- Georg Steger <steger@pass.dnet.it>, the author of DoomAttack, and some
- assembly code from Aki Laukkanen.
-
- The monster-counting bug (also the problem with "Dead Simple") was
- caused by SAS/C generating unexpected code for function pointer
- comparisons in "if" statements with CODE=NEAR. See amiga_notes.txt in
- the source archive.
-
- Version 0.5 had a bug in the DrawSpan() routines which left bright
- dots scattered around the floors and ceilings and red stairs at the
- start. Applied patch supplied by Aki Laukkanen.
-
- Music tones are now PAL/NTSC sensitive.
-
- Fixed the bug which sometimes caused crash on exit when music is
- enabled.
-
- 0.5
-
- The call to BestModeID() in amiga_video.c had an unterminated taglist.
- Fixed.
-
- Whoops it never worked under OS2.1 after all. For now I've changed it
- so ADoom refuses to start on less than OS3.0. Currently I think
- LoadRGB32() is the only V39 function used. ADoom 0.4 was also calling
- BestModeID() and failing to autoopen lowlevel.library.
-
- 0.4
-
- Gamma correction tables weren't being used in ECS modes. Fixed.
-
- Set default task priority to -5 because ADoom is unfriendly to other
- tasks otherwise. Added -taskpriority commandline option and
- TASKPRIORITY icon tooltype, so you can set whatever priority you like.
-
- I think I finally fixed the crash on exit bug. Two commas were
- missing in dstrings.c. I haven't had a crash for a long time now.
-
- 0.3
-
- In ADoom versions up to 0.2, setting graphics detail LOW and then
- resizing the display resulted in corrupt graphics. Crashes were
- possible. Indeed, LOW detail didn't work at all. This appears to be
- a bug in the original Linux source. I can't see how LOW detail is
- supposed to work, so for now I've disabled LOW detail in ADoom 0.3.
-
- ADoom exclusively allocates the 2nd gameport for the joystick. It
- seems that many people have something in their startup which
- exclusively allocates the gameport, in which case ADoom v0.2 refuses
- to run. BlitzBlanker is one such culprit. ADoom 0.3 runs with the
- joystick disabled if it can't exclusively allocate the gameport.
-
- Added -forcedemo option in v0.3 to override the version check when
- playing demos. The FORCEDEMO icon tooltype does the same thing.
- There is a risk something might go wrong if the versions don't match,
- but I haven't observed any problems so far.
-
- Early versions of DOOM had a sound pitch change feature. That is, the
- same sound sounds effect could be played at different notes. I
- reproduced this feature in ADoom 0.1 and ADoom 0.2. However more than
- one user told me this feature was removed from recent versions of DOOM
- and some effects sound wrong in ADoom. Therefore I disabled the pitch
- change feature in ADoom v0.3. It is still there and can be enabled
- with the -pitchchange option or PITCHCHANGE icon tooltype.
-
- 0.2
-
- Early versions of ADoom required the HOME environment variable to be
- set. This confused a lot of people. Since version 0.2, ADoom saves
- its prefs file (.doomrc) in the current directory if HOME is not set.
-
- Early versions of ADoom crashed if there wasn't enough memory
- available. Since version 0.2, ADoom checks the result of the main (up
- to 6 Mb) memory allocation. There are still a few places where small
- memory allocations are not checked.
-
-
-
- THANKS:
- -------
-
- Thanks to John Carmack and ID Software for one of the best games ever!
-
-
-
- Peter McGavin. (p.mcgavin@irl.cri.nz)
-