****************************************************
*                                                  *                    
*              VENGABOYTK VERSION 1.00             *
*               General Documentation              *                    
*                                                  *                    
****************************************************

Platforms   : Linux (Tested with GTK 1.2.3+)
Revision    : 1.00
Last Update : 07/14/1999
Authors     : Julien FRELAT "Gollum"
              Main Code/MsDos Port/Unix Port/HomePage Maintainer/Documentation
	      frelat@iie.cnam.fr	

              Laurent MALLET "Ellis"
              GTK GUI/GTK Linux Port
              laurent_mallet@hotmail.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 and GTK Linux).

How I use it ?
--------------
The first time you want to use Boycott, type make on the command line in the
directory where you install the file source.
"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 :
    boycott

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 Transfer
- Divider Register
- MBC1/MBC2/MBC3/MBC5 ROM/RAM Bank switching
- 32Ko to 4Mo cartridges loading
- GB/SGB/CGB file format
- Savefiles (GB batteries)

What are the special features ?
-------------------------------
- User friendly GUI written with GTK
- 16 bits video mode support
- Double mode
- Scanline mode
- ROM analysis with SGB/CGB autodetection
- Color definitions for BG/OBJ0/OBJ1/WINDOW with .COL files
- Color files loading (COL format) with two RGB modes or color model
- Frame skipping
- One joystick autodetection
- Reset/Pause keys
- Snapshot loading and saving (real-time game savings)
  with smallest possible size (according to roms)
- GUI enables to configure the entire emulator

What are the known bugs/limitations ?
-----------------------------------
- Only 16 bits video mode support
- No DGA mode usage (faster)
- Some options in GUI are not yet implemented

What are the keys ?
-------------------
     CTRL : Button A
      ALT : Button B
    SPACE : Button Select
    ENTER : Button Start
   CTRL+R : Reset Emulation
   CTRL+P : Pause Emulation (Press again to remove pause)
   CTRL+E : Exit Emulation

What about requirements ?
-------------------------
- Pentium II or above (1/2 frame skipping by default)
  If it is TOO SLOW, increase frame skipping
  If it is TOO FAST, decrease frame skipping
- Linux x86, GTK 1.2.3 or above

What is planned ?
-----------------
 X.XX  : - CGB (Color Gameboy) support
         - SGB (Super Gameboy) support
         - Keyboard setup
         - Sound support

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)
                   SIMPSON ESCAPE (FREEZES ON "EAT MY SHORTS" SAMPLE)
                   ... (IF *YOU* NOTICE A GAME WITH SOME PROBLEMS)

History of GTK Linux Release
 1.00  : - Normal/Scanline/Double mode
         - Joystick and/or Keyboard support 
         - GTK GUI


History of MSDOS Only Release
 0.50b : - Boycott is now about 6% faster !!!
 BETA 1  - Fix A & B buttons order
         - Fix a bug in two joysticks detection
         - Speed up keyboard handler
         - Clean and improve code
         - Improve help about Boycott options in command line
         - Add PCX/TGA screenshots support
         - Add LBM/TGA skins support
         - Fix and improve PAUSE key
         - Port to DJGPP (using Allegro) complete by frEk (join project)
         - Comments in french now (for FrEk)
         - Support for all VESA modes (thanks to Allegro)

 0.45b : - Add MBC5 support (Color Gameboy roms are playable without colors !)
         - Add MBC3 support (without timer)
         - Improve MBC1/MBC2 ROM/RAM bank switching (faster and clearer)

 0.44b : - Full Game Genie support (either 6-digit or 9-digit codes)
         - Faster display when both frameskip and vsync are enabled
         - Speed up joystick detection (200%)
         - Two parameters added for CGB/SGB future support
         - Use 320x200 mode by default even without VESA 2.0
         - ROM analysis improved with MBC3/MBC5/GBCamera/HuC1/HuC3 autodetect
         - Autodetect Color Gameboy roms
	 - Fixes ROM banks count
	 - Bug fixes in RLCA/RRA/RLA instructions (may fix some games)
         - Bug fixes while debugging CB instructions
         - Fix english help messages ("or")
         - English or french messages (choose by a parameter)
	 - Reset FPS when enter debug mode (FPS is more accurate now in debug mode)
	 - Presentation improved
         - No video initialization until ROM not loaded (better now :)
	 - Works either in debug mode or emulator mode (same executable with Debug parameter)

 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 ?
---------------------------------
- Ellis for the great GTK port and the lovely GUI (it rocks !)
- frEk for testing, ideas, games, DJGPP & Allegro port, code, etc.
- 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
- Jeff Frohwein Game Genie for GameBoy Technical Page
- 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...

Ellis thanks the following people
---------------------------------
- David Boynton for the joystick code

Where can I find VenGaboyTK ?
---------------------------
http://emu5ever.emulationword.com/boycot2.html (Official Boycott Homepage)

