fMSX MS-DOS 1.6b2.a MSX emulator for the MS-DOS platform. Core emulator code copyright (C) 1994, 1995, 1996 Marat Fayzullin This version copyright (C) 1996,1997 Marcel de Kogel MS-DOS(tm) is a trademark of Microsoft Corp. Hardware Requirements ===================== A 486SX-25 (P66 recommended) A VLB- or PCI-based VGA compatible video card PC Speaker/Adlib/SB2.0/SBPro/SB16/GUS/SB AWE32/MPU401 and joystick supported Files included in FMSX-DOS.ZIP ============================== FMSX-DOS.EXE The emulator FMSX-DOS.TXT This file CWSDMI.ZIP A DPMI server required by FMSX-DOS.EXE If you don't run fMSX in a DPMI hosted environment (OS/2, MS- Windows, Linux DOSEmu, QDPMI, ...), put the file CWSDPMI.EXE included in this archive somewhere in your path or in the emulator's directory FILE_ID.DIZ A small description of this program Some utilities for use with fMSX MS-DOS can be found on the fMSX MS-DOS distribution site at http://www.komkon.org/~dekogel/fmsx.html The source of the Z80 emulation code used can be found on http://www.komkon.org/~dekogel/misc.html More information about fMSX and MSX in general can be found on the fMSX distibution site at http://www.freeflight.com/fms/fMSX Other files required by fMSX MS-DOS =================================== The following files are required for correct operation but are not included in the archive for copyright reasons: MSX2.ROM MSX2 BIOS and BASIC code MSX2EXT.ROM MSX2 ExtROM containing system extensions MSX.ROM Standard MSX BIOS and BASIC code [optional] MSX2P.ROM MSX2+ BIOS and BASIC code [optional] MSX2PEXT.ROM MSX2+ ExtROM containing system extensions [optional] DISK.ROM MSX DiskROM containing BDOS and DISK BASIC [optional] RS232.ROM RS232 BIOS and BASIC extensions [optional] FMPAC.ROM FM-PAC ROM extensions [optional] PAINTER.ROM PAINTER ROM extensions [optional] CMOS.ROM This file is created automatically and contains the non- volatile memory used in MSX2 and MSX2+. This file gets rewritten on exit if non-volatile memory was changed Please, do not ask where you can get these files as I shan't answer Key Mapping =========== GRAPH - Left alt CODE - Right alt SELECT - PageDown STOP - PageUp Special Keys ============ F6 - Rewind tape F7 - Wind tape F8 - Make screen shot F9 - Pause F10 - Quit emulator F11 - Increase sound volume F12 - Decrease sound volume RIGHT CTRL+F8 - Toggle sound on/off RIGHT CTRL+F9 - Change options RIGHT CTRL+1...0 - Change disk offset Win95 and Pointer keys - Space Left Ctrl+Left Alt+Right Ctrl+Right Alt - Soft reset MSX Left Ctrl+Left Shift+Right Ctrl+Right Shift - Hard reset MSX Command line options ==================== Below is a list of available command line options. Many options may be abbreviated. Use -help to get a list of currently supported abbreviations -help Show a help page describing all available command line options -verbose Select debugging messages [1] 0 - Silent 1 - Startup messages 2 - V9938 ops 4 - Disk 8 - Memory 16 - Illegal Z80 ops -ifreq Set interrupt frequency [50Hz] Default interrupt frequency is 50Hz for PAL (European) systems and 60Hz for NTSC (American and Japanese) systems. If you find your games running a bit too slow, try using -ifreq 60 -sync Set synchronisation mode [1] 0 - Do not sync emulation 1 - Sync emulation on every VDP interrupt -adjust Set VDP screen adjustment emulation mode [0] 0 - Do not emulate VDP screen adjustment 1 - Emulate horizontal adjustment only 2 - Emulate vertical adjustment only 3 - Fully emulate VDP screen adjustment Please note that some lines may not appear on the screen if VDP screen adjustment emulation is turned on -linedelay Set screen refresh delay [3 scanlines] -cpuspeed Set Z80 CPU speed [100%] -uperiod Set number of interrupts per screen update [2] -sprite Select sprite emulation mode [0] 0 - Show all sprites 1 - Limit number of sprites per row to 4/8 Though some games require -sprite 1 for correct display, it'll cause major sprite flicker with many others -printer Redirect printer output to file [stdout] -serial Redirect serial I/O to a file [stdin/stdout] -ram Number of 16kB RAM pages [4/8/8] Many disk based games require more than 128KB RAM. Try using -ram 16 or -ram 32 if you're having problems getting such games to run -vram Number of 16kB VRAM pages [2/8/8] -msx1/-msx2/-msx2+ Select MSX model [-msx2] -rom Select MegaROM mapper types [0,0] (two -rom options can be present) 0 - Konami 8kB 1 - Konami 16kB 2 - Konami5 8kB 3 - Konami4 8kB 4 - ASCII 8kB 5 - ASCII 16kB -diska Set disk image used for drive A: [DRIVEA.DSK] Physical drives are supported, e.g. "-diska A:" will use PC disk A:. Both single and double sided floppies are supported -diskb Set disk image used for drive B: [DRIVEB.DSK] -tape Select tape image [MSX.CAS] There's no limit to the length of a tape image -font Set fixed font for text modes [none] -logsnd Write soundtrack to a file [off] -painter Load/Do not load PAINTER.ROM [0] 0 - Do not load PAINTER.ROM 1 - Load PAINTER.ROM -video Select video mode [0] 0 - 320x200 1 - 320x240 2 - 640x480 3 - 256x212 Video modes 1 and 3 may not be compatible with your video card and/or monitor. For video 2, you'll need a VESA compatible video card -chipset Select SVGA chipset [255] 0 - VESA 1 - S3 255 - Detect Support for more popular chipsets may be added in future versions -modeswitch Allow/Don't allow VGA mode switches [0] 0 - Don't allow VGA mode switches 1 - Allow VGA mode switches If this option is enabled, the game will use both video modes 2 and 3 -gamma Select gamma adjustment value [1.0] -sound Select audio mode [255] 0 - No sound 1 - Internal Speaker 2 - Adlib 3 - Sound Blaster 4 - Gravis Ultrasound 5 - SB AWE32 255 - Detect -stereo Set stereo panning level (SB AWE32 only) [0] 0 - Mono 100 - Maximum -speakerchannels Set sound channel priority list (Internal speaker only) [3,2,1] 1-3 = PSG Melodic 4-6 = PSG Noise 7-11 = SCC Most games use channel 3 for their sound effects and channels 1 and 2 for their melodies. Try using 3,1,2 if the default list doesn't give the desired sound quality -volume Set initial volume [10] 0 - Quiet 15 - Maximum -reverb Set reverb send level (SB AWE32 only) [7] 0 - None 100 - Maximum -chorus Set chorus send level (SB AWE32 only) [0] 0 - None 100 - Maximum -soundquality [-sq] Set sound quality (SoundBlaster only) [3] Range is from 1 (low) to 5 (very high) -scc Set SCC emulation mode [1] 0 - SCC emulation off 1 - SCC emulation on -fmpac Set FM-PAC emulation mode [0] 0 - FM-PAC emulation off 1 - FM-PAC emulation via OPL2 (Adlib) 2 - FM-PAC emulation via MPU401 (General MIDI) 3 - FM-PAC emulation via MPU401 & OPL2 FM-PAC can only be turned on if FMPAC.ROM is resident in your fMSX MS-DOS directory -joystick Select joystick mode [1] 0 - No joystick support 1 - Emulate joystick at port 1 2 - Emulate joystick at port 2 The 2nd PC joystick isn't supported (yet) -swapbuttons Swap/Do not swap buttons [0] 0 - Do not swap buttons 1 - Swap joystick buttons Multi disk games support ======================== As of version 1.6b1, fMSX MS-DOS supports multi disk images. To create one, simply copy several disks to 1 image like this: "COPY /B DISK1.DSK+DISK2.DSK MULTI.DSK", start the emulator with the resulting disk image as disk A, and press RIGHT CTRL+1..0 when the game asks you to insert a new diskette. Please note that this only works for double sided disk images (720Kb ones) Screen shots ============ Whenever you press F8 to save the screen contents to a graphics file, the emulator will create an fMSXxxxx.BMP file, where xxxx is an ascending number starting at 0000, which is a 256 colour windows bitmap file Passing options to the emulator =============================== With the amount of command line options fMSX MS-DOS supports, it's easy to create command lines larger than the DOS limit of 126 bytes. If you experience problems with the command line length, put all options in a temporary file (say, "TempFile.tmp"), and start the emulator with the command line "fMSX-DOS @TempFile.tmp". You may also give extra command line options when using this feature, like in `fMSX-DOS @MyConfig.cfg - ifreq 60 Pacman.rom' Configuration files =================== The emulator loads three configuration files (if present) before it boots MSX: fMSX-DOS.cfg located in the emulator's directory and CARTA.cfg and CARTB.cfg located in the cartridge dump's directory. These are plain text files containing optional command line options. Options can be separated with spaces, tabs or returns Troubleshooting =============== - If a game runs a bit too slow, try using -ifreq 60 - If the emulator runs all games much too slow, try decreasing cpuspeed to 50%-70%. You may also want to try -sync 0. If you're using a SoundBlaster, try decreasing the sound quality or using Adlib mode - If you want your games to run faster, increase ifreq. If you want them to run slower, decrease ifreq - If you don't own an MSX with a floppy drive and you want to create an MSX floppy disk, follow these instructions: Format a 3« inch floppy disk to standard DOS 720KB format and start fMSX MS-DOS with the "- diska A:" (or "-diska B:") option with the floppy not inserted in the drive. After MSX-BASIC has booted, insert the floppy into your floppy drive and type "CALL FORMAT". Choose drive A and double sided, and wait till the formatting has finished. History ======= 1.6b2.a Winding/Rewinding tape bug fixed 1.6b2 Added -sprite, -gamma and -painter options and screenshot support. Fixed several bugs in the VDP emulation, sped up emulation, replaced Marat's Z80 emulation code with Z80Em 1.2 1.6b1 Fixed several interrupt related bugs, added multi-disk game support, General MIDI support and a few miscellaneous options 1.4.1 Major improvements to the SoundBlaster support, added FM-PAC emulation, fixed some bugs 1.3.1 Increased speed, fixed lots of bugs, added PC speaker, SB, GUS and AWE32 support, added S3 support, added tape emulation and configuration file support 1.2.3 Added volume control, joystick options, modeswitch option, video mode 3, improved sound, increased speed, fixed some bugs 1.2.2 Added joystick support, Added SCC emulation and improved PSG emulation, added VESA support, increased speed, fixed some major bugs 1.2.1 Initial release Credits ======= - fMSX MS-DOS was compiled using DJ Delorie's DJGPP v2.0. DJGPP is a 32 bit C compiler for MS-DOS. Source code and binaries of DJGPP are available at http://www.delorie.com - The SB AWE32 routines are heavily based on `The Unofficial Sound Blaster AWE32 Programming Guide' written by Vince Vu a.k.a. Judge Dredd. Thanks a million for writing this! - Martijn Zeedijk tested the GUS routines and helped me fix lots of bugs - Some parts of the code were taken from Allegro. Allegro is a library for DJGPP written by Shawn Hargreaves. Allegro is available at ftp://x2ftp.oulu.fi/pub/msdos/programming/djgpp2 Please send your comments to Marcel at m.dekogel@student.utwente.nl