There are two DJGPP versions of JJFFE, one using the original HMI drivers for sound and raw low level routines for input and graphics, and another using Allegro 3.12 for all low-level code.
The Allegro version has the advantage of auto-configuring sound, but has no joystick support and MIDI often sounds slightly worse than the HMI version. Other than this the versions are essentially identical.
The two current binary releases include the following files:
dosjjffe28b.zip:
ffedos28.exe - Replacement DOS executable for FFE ffedos.cfg - Example config file for the above joycal16.exe - Joystick calibration file generator mouseacc.exe - Mouse accelerator (for raw DOS) setup.exe - Hacked version of sound config program jjffe28.txt - Basic readme file for all versions
daljjffe28b.zip:
ffedal28.exe - Replacement DOS/Allegro executable for FFE ffedosal.cfg - Example config file for the above jjffe28.txt - Basic readme file for all versions
ffedos28.exe and ffedal28.exe are a DJGPP executables and so require an external DPMI server to run. You can get a DOS one from any Simtel mirror, or:
http://www.jaj22.demon.co.uk/csdpmi4b.zip
(Source at: http://www.jaj22.demon.co.uk/csdpmi4s.zip)
Unzip csdpmi4b.zip into the FFE directory and then run ffedos28.exe or ffedal28.exe as usual.
This can be made to work. To enable sound you need a DOS sound emulation program. A freeware one can be obtained from http://sourceforge.net/projects/vdmsound/
Alternatively there is a commercial DOS sound emulation program called sfx2000 which is time-limited shareware. You can get the trial version from http://www.softsystem.co.uk/page3.htm.
To avoid the timelimit (although not the evaluation message), add the following value into the registry under HKEY_LOCAL_MACHINE\Software\SoftSystems\SoundFX:
value name = PSQR@+,> value = 0x19541009 (hexadecimal)
To prevent crashes, you may need to increase the amount of DPMI memory available to the program - 5MB should be fairly safe. Using hardware timer compatibility emulation is also recommended.
There is as yet no known way to make the sound work under DOSEMU, and it tends to lock up the program. Other than that it should run with normal DOSEMU settings. To disable sound in the HMI version, simply delete hmiset.cfg. To disable sound in the Allegro version, add the following to allegro.cfg:
[sound] digi_card=0 midi_card=0
"the latest DJGPP versions work fine in an OS/2 fullscreen DOS session including sound. You don't even need an extra DPMI extender, since OS/2's DOS mode has a built-in one. The only thing that needs to be done is to set DPMI_DOS_API to ENABLED to turn it on and specify a suitable amount of memory via DPMI_MEMORY_LIMIT in the DOS session's settings."
Thanks to Christian Hennecke for that one. A suitable amount of memory is probably around 5MB.
This only covers the settings contained in hmiset.cfg - sound file locations are covered on the main page.
Configuring hmiset is easy enough if you can convince setup.exe to run. A hacked version of the original is now included which is much more reliable, but some soundcards when attempting to autodetect.
If you can't get either setup.exe to work, you'll need to work out the correct settings yourself and enter them manually in hmiset.cfg. Possible values are listed in setup.ini. Under Windows, you can find out your real values by looking at the resources used by the relevant devices in the device manager.
An example hmiset.cfg is shown below:
[DIGITAL] DeviceName = Sound Blaster Pro DeviceIRQ = 5 DeviceDMA = 1 DevicePort = 0x220 DeviceID = 0xe001 [MIDI] DeviceName = Sound Blaster Pro DevicePort = 0x388 DeviceID = 0xa002
These settings will work on the majority of machines - if not, try 7 instead of 5 for the IRQ. You can often get wavetable cards working by using:
[MIDI] DeviceName = MPU-401 DevicePort = 0x330 DeviceID = 0xa001
joycal16.exe is the utility used to produce the joycal16.cfg files needed for joystick support in ffedos20.exe onwards. To use, just plug in your joystick and run it.
Note that the two "Centre joystick and press any key" tests will often give different results. Many sticks are designed to give different values depending on which direction you approach the centre from.
Scaling exponent values above 1.0 cause output values to increase slower near the centre of the stick, hopefully giving you more control. Values of 2.0 are usually ok, but experiment to find your preferred settings.
The deadzone is the region around the centre position that maps to zero movement. You want this set to the smallest value for which drift is zero. Usually one or two percent is fine.
The maximums change how fast you turn at maximum stick displacement. 512 is usually about right.
Polling the stick in interrupts can cause a noticeable drop in frame rates on slower PCs, but is more accurate. Choose 1 if you have a powerful PC.
Resetting on centre is down to personal preference. I prefer setting this to 1 because it's more predictable.