****************************************************
*                                                  *                    
*                BOYCOTT VERSION 0.43b             *
*               General Documentation              *                    
*                                                  *                    
****************************************************

Platforms   : MsDos/Linux/Unix Dec OSF-1/Macintosh
Revision    : 0.43b
Last Update : 11/19/1998
Authors     : Julien FRELAT "Gollum"
              Main Code/MsDos Port/Unix Port/HomePage Maintener
	      frelat@iie.cnam.fr	

              Richard RIBIER "Ric"
              Linux Port
	      ribier@iie.cnam.fr	

              Richard BANNISTER "SlimyBeer"
              Sound/Optimizations/Macintosh Port
	      titan@internetter.com	

What is it ?
------------
BoyCott is a Nintendo GameBoy emulator entirely written in C and C++.
It works on various platforms (MsDos, Linux, Unix, Macintosh).

How I use it ?
--------------
"Boycott" is the name of the executable program.
You need GameBoy Roms, ".GB" files, in order to run it.
(Don't ask me for roms, please use the Net !)

Syntax :
     BOY_FR <gameboy_game_name[.GB]> [options] (MsDos French)
ou   BOY_EN <gameboy_game_name[.GB]> [options] (MsDos English)
ou DEBUG_FR <gameboy_game_name[.GB]> [options] (MsDos Debugger French)
ou DEBUG_EN <gameboy_game_name[.GB]> [options] (MsDos Debugger English)
ou FASTCOTT <gameboy_game_name[.GB]> [options] (Linux/Unix English)

Options :
 /b[color]X color|[#]RRGGBB or -b[color]X color|[#]RRGGBB to change BG X color
 /sp0[color]X color|[#]RRGGBB or -sp0[color]X color|[#]RRGGBB to change SPRITE 0 X color
 /sp1[color]X color|[#]RRGGBB or -sp1[color]X color|[#]RRGGBB to change SPRITE 1 X color
 /w[color]X color|[#]RRGGBB or -w[color]X color|[#]RRGGBB to change WINDOW X color
 /f[rameskip] XX or -f[rameskip] XX to skip 1 frame/XX
 /s[kin] <skin_name.pcx|bmp> or -s[kin] <skin_name.pcx|bmp> to specify a background
 /j[oy] or -j[oy] disables joystick detection
 /v[sync] or -v[sync] enables VBL sync
 /b[ench] or -b[ench] enables benchmark
 /auto[fire]a or -auto[fire]a enables autofire for A button
 /auto[fire]b or -auto[fire]b enables autofire for B button
 /h[elp] or -h[elp] or -? or /? displays help

XX = 1..99
RR = GG = BB = 00..FF (#RRGGBB)
RR = GG = BB = 00..63 (RRGGBB)
color = red/dkred/green/dkgreen/blue/dkblue
	cyan/dkcyan/black/white/magenta/dkmagenta/yellow/brown
	pink/orange

What is emulated ?
------------------
- Z80-like CPU at 4.194304 Mhz
- Real-Time emulation (cycle count)
- BG/Window displaying and refreshing
- Sprites 8x8/8x16/Flipping X/Flipping Y
- Sprite priorities/transparencies
- BG Scrolling
- Raster effects (line-per-line graphics engine for BG/Window)
- VBlank/LCDC/Timer/SIO interrupts
- Joypad emulation (PC keyboard)
- Echo Memory
- DMA Transfert
- Divider Register
- MBC1/MBC2 ROM/RAM Bank switching
- 32Ko to 4Mo cartridges loading
- GB or SGB file format
- Savefiles (GB batteries)

What are the special features ?
-------------------------------
- Little GUI with system messages
- Special font for text display
- 320x200 or linear VESA modes (MsDos)
- Double mode (320x288) with or without scanlines
- Screen centered in current resolution
- ROM analysis with SGB autodetection
- Built-in debugger (MsDos)
- color definitions for BG/OBJ0/OBJ1/WINDOW with two RGB modes or color model names or .COL files
- Two versions : Emulator or Debugger (MsDos)
- Two languages : French or English (MsDos)
- Skin(Bmp/Pcx) loading (MsDos)
- One default skin (default.pcx) and five other skins included (MsDos)
- Frame skipping
- One or two joysticks autodetection (MsDos)
- Reset/Pause/Halt keys (MsDos)
- Screenshot saving in Bmp format (MsDos)
- Snapshot loading and saving (real-time game savings)
  with smallest possible size (according to roms)
- Number of frames per second (FPS) rendered (MsDos)
- Number of instructions per second (IPS) executed (MsDos)
- Parameters to configure the entire emulator
- Keyboard or mouse button support
- Autofires A and B
- Benchmark to estimate speed performances
- Adlib/Sound Blaster autodetection

What is a skin ? (MsDos)
----------------
A skin is a background file for Boycott in .bmp or .pcx format.
It is a 320x200 .bmp or .pcx file (256 colors).
If you want to draw your own skins, you have to :
- do not use the 206 to 221 colors
- leave a black rectangle from (80,16) to (240,160) coordinates

What are the keys ? (MsDos)
-------------------
     CTRL : Bouton A
      ALT : Bouton B
    SPACE : Bouton Select
    ENTER : Bouton Start
BACKSPACE : Reset Emulation
        P : Pause Emulation (Then, any key to return to game)
       F2 : Save current screen in .BMP
       F5 : Save snapshot of current game in .COT
       F6 : Load snapshot of current game in .COT
      F12 : Halt Emulation (return to debugger) 
    ECHAP : Exit Emulation

What about requirements ? (MsDos)
-------------------------
- Pentium 90 Mhz or above (1/3 frame skipping by default)
  If it is TOO SLOW, increase frame skipping and do not use -vsync parameter
  If it is TOO FAST, decrease frame skipping and use -vsync parameter
- 1 Mo of RAM is enough
- VESA 2.0 needed to get VESA modes
  (please use UniVBE if your card does not support native VESA 2.0 extensions)
- MsDOS Version 5.00 or above

Boycott works fine (but *SLOW* !!!) in a DOS box under Win95.
You need to switch to entire screen under WinNT.

What is planned ?
-----------------
 0.44  : - SGB features (borders, colors, etc.)
	 - PCX screenshots
         - Fix last bugs in my Z80 engine (may fixes some games)
         - Optimize some parts of the code
         - Add joystick support
         - Finish mouse support
         - Fix X sprite priorities (is it necessary ?)
         - Add SOUND (with Adlib I think)
         - Finish GUI (Graphic User Interface)

What is new ?
-------------
Project started December 97

LEFT BUGS TO FIX : ZELDA      (GARBAGE WITH MAPS AND OBJECTS)
                   SAGA/FF1   (NOT PLAYABLE)
                   SAGA2/FF2  (NOT PLAYABLE)
		   WARIOLAND2 (NOT PLAYABLE)
                   ... (IF *YOU* NOTICE A GAME WITH SOME PROBLEMS)

 0.43b : - Adlib/Sound Blaster detection and sound parameter added (for future sound implementation)
	 - French texts fixes
	 - COL files support in two formats
	   * old VGB color files (-c|sc[0..3] colorname|#RRGGBB)
	   * new BOYCOTT file format (-bc|sp0c|sp1c|wc[0..3] colorname|[#]RRGGBB)
	   * uppercase or lowercase letters
	   * BOYCOTT.COL is default file for colors
	 - Uppercase or lowercase letters for any parameter ! (example : FrameSkip)
	 - Color model names added
           * red/dkred green/dkgreen blue/dkblue
	   * cyan/dkcyan black/white magenta/dkmagenta yellow/brown
	   * pink/orange	
	 - New color definition mode : range is 00..FF
	   *    -b0 #FF0000 -b1 #A80000 -b2 #540000 -b3 #000000 gives a red life to any game
	     as -b0  630000 -b1  420000 -b2  210000 -b3  000000 does
	   * autodetect format errors
	 - Optimization of WIN displaying (20% better)
	 - Boycott Benchmark improved
           * Distinguish Z80 rendering from GFX rendering
           * FPS is more accurate
	     166 FPS in VGA 320x200 with mouse disable (145 FPS with mouse enable)
	     175 FPS in all VESA modes (up to 1280x1024)
	     (tested on a Pentium II 266Mhz with an Xpert@Play 4Mo AGP for SPACE.GB)
           * Sprites Per Second added (benchmark only)
	   * BG/WIN/CLR Lines Per Second added (benchmark only)
	 - Debugger improved
	   * Bug fixes with rom bank switching memory
	   * Current ROM bank displayed
	 - Fixes video initialization if no VESA available (thanks to Nick Gravel)
         - BOYCOTT GUI 0.2
	   * Writing and background color added for text displaying
           * Blue background removed
           * Stupid bug fixes with text displaying
	   * Emulator version messages fixes (english/french and no cuts in 320x200)

 0.42b : - BOYCOTT GUI 0.1
           * Title message + Game name
           * Emulator version
           * Resolution choosed
           * Mouse coordinates
         - Debugger still improved
           * Better swaps between debugger and emulator
           * Keeps current video screen
         - Fixes first BG line (eg : looks better in Zelda)
         - Fixes mouse coordinates (stupid bug)
         - Scanline mode (320x288 with one line skipped) added
         - Double resolution mode (320x288) added
         - Disables background skins with Double or Scanline modes
         - Prevents lores modes from Double or Scanline (320x350 minimum)
         - Stupid "divide by zero" error fixes (while exiting program quickly)
         - VESA modes now sorted
         - Not always video selection (bug fixes with no parameters or errors)
         - Autofire for A and B buttons added
         - Partial mouse support
           (only two buttons until I found a solution for movements)
         - Stupid 0.41b window bug fixes (compatibility rate back to 90%)
         - Font created and added for GUI and graphical messages

 0.41b : - Beta release since GUI is not completed
	 - Preliminary mouse support (only an inactive cursor in 320x200)
         - Debugger improved
           * Clear screen first
	   * Show ten lines of code at the same time
	   * Display skin name
	   * Debug file "DEBUG.TXT" with stats about instructions
         - Gameboy screen now centered within the current resolution
	 - Video mode selection (VESA 2.0 to get VESA modes)
         - All linear VESA modes added (VESA 2.0)
	 - Boycott Icon in 256 colors (by Gollum) added for Win95/98/NT users
         - FPS (Frames Per Second) and IPS (Instructions Per Second) corrected
	 - TIMER util removed (not anymore needed)
         - Add a vertical synchro (vsync) for highly powerful Pentium-class computers
         - Bug fixes for display (last vertical line was wrong)

 0.40  : - Add a timer util to evaluate Boycott emulation speed
           -> FPS (Frames Per Second)
           -> IPS (Instructions Per Second)
           -> You only have to prefix Boycott with TIMER
         - New default screen (default.pcx) smaller
         - New skin (smaller) pack in .pcx (old .ski do not work anymore)
         - PCX loading added (skins)
         - Parameter added to disable joystick detection
         - Optimize BG Displaying (11% faster)
         - Fixes command line parser (parameters)
         - Optimize some Z80 instructions
         - Fix 32Ko batteries saving
         - New memory engine
         - Optimize RAM bank switching (faster now)
         - Optimize ROM bank switching (faster now)

 0.39  : - Add a fix for Alfred Chicken (thanks to J.Geffre)
         - Add a fix for Frank Thomas BB
         - Smaller snapshots with different sizes according to GB cartridges
           * 25100 bytes for a 32Ko ROM
           * 49164 bytes for other ROMS
           * Does not exist with GB97 or GBE !!!
         - I define constants for keys in source code
           * Maybe one can soon change keys definition *
         - Fix F2/F5/F6 keys (occur only one time)
         - Halt key added (useful to go back to debugger)
         - Debugger improved
           * Can display BG, screen again
           * Exit fixes with quit command
         - Pause Key fixes (with *UGLY* and *STRANGE* printfs)
         - Z80 engine improved
           * Speeded up a little
           * Source code smaller and easier to debug
           * Debugging/optimizing of ADD SP,xXX
           * Debugging/optimizing of LD HL,SPxXX
         - Crashing bug fixes when loading a 512 bytes battery (.SAV)
         - Bug fixes when saving a 512 bytes battery (.SAV)
         - Ignores now wrong opcodes (may fixes some games)

 0.38  : - More accurate initializations for GB registers
         - Parameters to redefine WIN colors (special feature)
         - Reset key fixes (now occurs only one time)
         - Pause key removed until I fix it
         - BMP loading instead of .ski (but .ski files work also)
         - Little bug fixes while loading BMP (no last line)
         - Screenshots feature in BMP format added (!!!)
         - Snapshots loading and saving features added (!!!)

 0.37  : - Savefiles (GB batteries with .SAV) added
         - RAM Bank switching added
         - *BUG FIXES* with 8x16 sprites (RTYPE2, etc...)
         - Add two special keys (Reset and Pause)
         - 1 or 2 Joysticks autodetection (MsDos)
         - Speed increase
         - ROM Bank switching is faster
         - SIO Interrupt improved (ALLEYWAY works thanks to Hans De Goede)
         - DIVIDER register more accurate
         - Command line bug fixes (parameters order)
         - Optimization of BG/WIN/SPRITES displaying (better !!!)
         - Optimization of BG/WIN refreshing

 0.36  : - Frame skipping (default 1/3 frames)
         - Transparency bug fixes !!! (MARIO 2, SMURF 3, etc...)
         - Five default skins included in a specific pack (thanks DRT)
         - Skin .ski loading
         - Bug fixes in debugging messages
         - Optimization of BG displaying (12% better !!!)
         - Optimization of BG/WIN refreshing
         - BG/WIN refreshing (PUZZLE.GB and maybe other games work now !!!)
         - Four different versions
           EMULATOR FRENCH
           EMULATOR ENGLISH
           DEBUGGER FRENCH
           DEBUGGER ENGLISH

 0.35  : - FIRST NON BETA RELEASE (FINALLY !!!)
         - Compatibility rate up to 90% (all games seems to work :)
         - Debugging of CB instructions (I forgot some stupid breaks :(
         - Debugging of ROM Bank switching (it works now !!!)
         - Sprite priorities improvement

 0.34b : - Commentaries added to source code
         - Optimization of Window displaying
         - Z80 engine speeded up and clarified
         - BUG FIXES FOR CALLING INTERRUPTS (PC+1->PC !!!)
         - Interrupts improvement (LCDC/TIMER/VBL)
         - Source code split in modules

 0.33b : - Experimental RAM Bank switching
         - Debugging of Interrupt Flag (IT WAS INVERTED !!!)
         - Emulation speed is not parametrable anymore
         - Interrupts improvement (LCDC)
         - Debugging (== is prior to & !!!)

 0.32b : - Emulation speed is now a parameter
         - README.TXT file added (phew!)
         - INTENSIVE debugging (it sounds good !!!)
         - New interrupt system
         - Cycle count to sync
         - New line-per-line engine (faster !!!) for BG/WIN

 0.31b : - LEVEL Selection is perfect with DRMARIO
         - Second screen presentation displaying with TETRIS
         - Final implementation of DAA (Table with tests for ZNHC)
         - Debugging of INC/DEC for H
         - Debugging of BIT R,b (H=1)
         - Debugging of AND (H=1)
         - Debugging of CCF, SCF (N=H=0)
         - Debugging of ADD HL (C=1 or 0)
         - Debugging of EX HL,(SP) (PC+=1 !!!)
         - Debugging of SWAP (C=Registre&0x01 Z=N=H=0)
         - Debugging of CP, ADD, ADC, SUB, SBC for H

 0.30b : - FIRST OFFICIAL INTERNET RELEASE FOR MSDOS VERSION
         - Parameters to redefine OBJ0/OBJ1 colors
         - Comments added
         - Definition of a Z80 register with union (1 only memory access !)
         - Using generic defines for instructions (2500 lines removed !!!)
         - MBC1/MBC2 semi-implemented
         - Optimizations (F=F& -> F&=) et (F=F| -> F|=)
         - Optimizations of display (Window, BG, Sprites)
         - Optimizations (No Debug mode allowed in Emule and EmuleCB)
         - Optimizations (distinction between Debug and Autorun)
         - ActionMemory takes care of memory writing
         - WATCOM exiting error fixed under MsDos (TextMode)
         - Optimizations (Downsize code in Debugger)
         - Mike Kershaw modifications must be integrated
         - Line-per-line engine must be realized (Scrollings, Rasters, etc...)

 0.24b : - WE CAN PLAY DrMario AND Daedopus !!!!!!!!!!!!!!!!!!
         - Debugging of SUB and SBC (and the carry ?)
         - Optimization (==0 -> !)
         - Optimization of LD Reg,Reg (PC+=1)
         - Optimization of SUB A, XOR A and CP A, OR A, AND A
         - Debugging of CP Reg (PC+=1 !!!!)
         - Debugging of XOR XX and OR XX (PC+=2 !!!)

 0.23b : - Debugging of INC (Z=0 or 1)
         - Debugging of SCF and CCF (C=1 and C=~C)
         - Debugging of SWAP (Z=0 or 1 C=Register&0x01 N=H=0)
         - Pseudo-implementation of DAA (a precalculating table)

 0.22b : - H(exa?) flag means $10 multiple ?
         - Debugging of SET X,D (C|->D| !!!)
         - Debugging of SET 3,A (0xFB->0xF7 !!!)
         - Debugging of XOR XX (Z=0 or 1 !!!)
         - Debugging of CCF (F&=N0 !!!)

 0.21b : - Debugging of ADC, SBC (must shift C1 !!!)
         - Debugging of SUB (N=1)
         - Debugging of CP (Carry if A< and No if A>=)
         - Debugging of RL (HL) (Keyboard Error)
         - Debugging of RL, RLA (must shift C1 !!!)

 0.20b : - Debugging of Echo Memory ! (4096->8192 and 0xDFFF->0xDE00)

 0.19b : - Keyboard handling under Unix/Linux works !!!
         - Flipping Y for sprites

 0.18b : - Keyboard handling under Watcom works !!!
         - The two sprite palettes added
         - Sprite transparencies added
         - DRMARIO works until selection screen
         - Space Demo allows some keyboard controls
         - It's slow !!!

 0.17b : - Optimizations of display under X11 (Mode normal and Double)
         - Debugging of RR, RRA !!!

 0.16b : - Divider Register added
         - Timer interrupt added
         - Flipping X for sprites
         - Perfect display for sprites 8x16

 0.15b : - Not too many slow on my Dx2 66 compared to my P133 (???)
         - All Gameboy instructions emulated !!!

 0.14b : - New CB instructions emulated
           * RL, RR, SRL
         - Debugging of SRA
         - Debugging : forget of PC+=2 for CB instructions !!!
         - Interruptions added
           * Interrupt Flag
           * Interrupt Enable
           * HALT Emulation
         - Sprites 8x8 and 8x16 (8x16 does not work very well)
         - Window (and even clipped)
         - With SPACE Demo
           * sprites (8x16 bug)
           * Window (blocked to the right)
           * scrolling works
           * VBL works !

 0.13b : - INTENSIVE Debugging of flags :
           * ADD, ADC, INC, XOR, SUB, SBC fixed
           * RLCA, RRCA, RLA, RRA, SCF, CCF fixed
         - New CB instructions emulated
           * RLC, RRC, SLA, SRA

 0.12b : - Better compatibility
         - First animation under Amida !!!!!!!!!!!!!!!!!!!!!!
         - All the non-CB instructions emulated !!!!!!
         - Half CB instructions emulated !!!!!!
         - DMA Transfert
         - VBlank interrupt (fake counter)
         - ECHO Memory (and BUG fixed)
         - BG palette
         - Parameters to redefine BG colors

 0.11b : - Screen presentation of DRMARIO shows !
         - Debugging of BG display for signed Tiles (DrMario)

 0.10b : - Screen presentation for TETRIS shows !
         - Lots of new instructions added
         - BG Display for Alleyway, Migrain, DrMario
         - Simple keyboard ports added and intensive debugging
         - One-byte precision

 0.09b : - Debugging of emulated instructions (FIX)
         - Fake YCOORD Emulation (fake counter)

 0.08b : - Debugger is better (new commands by Richard)
         - Mode Debug to display messages
         - New palette of colors (206 to 209)

 0.07b : - Version with Tiles BG Watcom/Unix/Linux
         - Mode Double (320x288) under Unix/Linux
         - Source code better (emulation much clear)
         - Tile display in 4 colors (special palette)

 0.06b : - BG Tiles works for Alleyway!!! (2 colors)

 0.05b : - Start of BG displaying
         - We can display the memory

 0.04b : - Executable version under Watcom/Linux/Unix
         - New opcodes + New debugging instructions

 0.03b : - Executable version under Linux/Unix with gets function added
         - F is the flag register (GOLLUM != RICHARD)
         - New defines to simplify register uses

 0.02b : - New executable version under Watcom by Gollum

 0.01b : - First executable version under Linux/Unix by Richard

Who I would like to acknowledge ?
---------------------------------
- Toyot because, without him, I would have never discovered Emulation Scene
- EPR (Emulation Programming Ressource) for z80 docs and sources
- Pan of Anthrox, Marat Fayzullin (VGB), Pascal Felber, Paul Robson(GB97),
  kOOPa, No$Cash (NO$GMB) for many updates to the Gameboy specs
- Richard & Ellis for the idea to realize a Gameboy emulator
- R.Bannister (MESS) for the great Macintosh port, work on sound and
  giving me two very good SGB specs
- Mike Kershaw for MkLinux/PPCLinux port (what are you doing now ?)
- Hans De Goede (VGB LINUX) for help and Alleyway fix (it works !)
- Dave Bixtler for questions about Gameboy emulator programming
- J.Geffre (GBE) for some questions and Alfred Chicken fix
- Martin Korth (NO$GMB) for trying to help me because he send me the same docs I already have
- Nick Gravel for a little VESA bug to fix
- Aliiing, Valen, Bibi, Tim, DRT or Sir Nat One Rom, Clovis, Afzal, JB, Storm
- Richard for initial release, advices, sources
- Ricardo for idea of a spanish mirror of Boycott pages and roms to test it
- ZOOP (Emulation Camp)
- DRT for all his logos
- Carlos Pardo "Made/Bomb!" (for the future logos ???????????)
- Two foreign beta-testers (I don't have your names, guys !)
- Vertigo (VESA stuff)
- My girlfriend (I love you) and my sister for their great patience
- Many other people I forgot...

Where can I find Boycott ?
--------------------------
http://www-eleves.iie.cnam.fr/themes/Emu5ever/boycot2.html (Official Boycott Homepage)
http://www.internetter.com/titan/ (Official Boycott Mac Homepage)
