
jEnesis v0.0.5
WIP Release (2006-05-14)

********************************************************


-----------------
1. About jEnesis |
-----------------

"jEnesis" is a Sega MegaDrive/Genesis Emulator entirely written
in Java. 

Changelog:

********
v0.0.5 *
********
  - some minor changes in LWJGL initialization
  - some bugfixes

********
v0.0.4 *
********
  - fixed overlapping operator pixels (Vectorman 2 baloon sprites)
  - rendering switched to LWJGL with enormous speed increase in scaled modes
    and using VSync in fullscreen mode to avoid Java timing issues
  - fixed ROXL and NEG flag bug, making a lot more games work properly
  - Made M68000 Reset instruction not having any effect (fixed Dragon's Revenge..)
  - M68000 TAS write cycle is ignored now (Gargoyles)
  - fixed Illegal Instruction Exceptions (Dyna Brothers 2, Heavy Nova...)
  - fixed Move Instruction timings (Sailormoon Intro bug)
  - fixed window behavior in certain situations (Mario Andretti Racing, World Championship Soccer 2
    M1 Abrams Battle Tank...)
  - added window granular clipping (Dragon Ball Z)
  - improved Motorola 68000 - Zilog Z80 responiveness 
  - added Cpu freezing during DMA and DMA busy flag emulation (fixing Galahad,
    Eternal Champions, Street Fighter Games, F1 World Championship and many others...)
  - more accurate Interrupt timing and HVCounter (Panorama Cotton, Burning Force, Galahad, 
    Lotus 1+2 and others)
  - fixed DMA fills again (Landstalker)
  - made VDP emulation more accurate, also showing mirrored sprites in Castlevania now.
  - added VDP window bug emulation
  - added VDP invalid horizontal scroll size emulation
  - Added Sprite Overflow and Sprite Collision flag emulation
  - Corrected sprite pixel overflow setting in too early (Flink)
  - Sprite masking documentation seemed not to be precise, so i experimented a bit, and changed it. 
    It now works like in the big 2... and Majikaru Hashito no Butsutobi Turbo! Daibouken has feet now
    ... yeah ;)
  - Fixed 128*64 Background Layers (Barkley Shut Up and Jam, Dragon Slayer 1+2 - Legend of Heroes)
  - Fixed SRAM detection if not declared in the rom header (NBA JAM TE, Blockbuster Competition 2,        Buck Rogers...)
  - Added emulation and detection of the X24C01 EEPROM. (Wonderboy in Monsterworld, Megaman can be        saved)
  - Added emulation and detection of the X24C02P EEPROM. (NBA JAM can now be saved)
  - Added new icon indicating that a game uses an EEPROM
  - Made Rom validation a bit less restrictive, allowing more beta and unlicenced games to boot
  - Display name of the game now gets detected depending on the region of the game.
    If it seems "unreadable", the filename gets displayed
  - Added support for .gen roms 
  - Added .7z support for normal loading of a rom, as well as for the "Browse Zip" option, which
    therefore got renamed to "Browse Archive". The support for solid .7z archives might still be 
    a bit buggy! I also cant guarantee that it can open every .7z archive atm.
    There is also support for plain .lzma files through the "Open Rom" dialog.

********
v0.0.3 *
********
  - Implemented YM2612 & PSG Emulation, meaning jEnesis has sound now...
  - Included Z80 Core by Razvan Surdulescu, also making a lot more games work, that
    require it to run.
  - Fixed numerous Motorola 68000 opcodes, like BCD Instrucions, fixing scores in many games.
  - redesigned CPU Core and Memory Handling with speed increase of ~100%
  - huge speed increase in filter modes
  - added 6-Button Pad support
  - fixed DMA fills and copies (Warsong, Contra..)
  - added 2Cells VScroll (Gynoug)
  - too many bugfixes to mention...

********
v0.0.2 * XMas WIP Edition : Initial Release
********
  - Everything written completely from scratch
  - Custom Java Motorola68000 CPU core
  - VDP emulation with all DMA modes
  - Horizontal & Vertical Interrupts
  - Support for PAL/NTSC and all country codes
  - 100% pure Java Code
  - .smd, .bin & .zip support
  - .smd files can be saved to .bin format
  - Games can be loaded from .zip containing multiple Games via "Zip Browser"
  - SRAM save/load support
  - Line based renderer
  - Scroll Layers A+B & Window rendering with priorities
  - Sprite rendering with priorities & sprite limitation
  - Shadow/Highlight Mode   - 1x-3x resolution
  - Experimental HQ2x Filter (needs very fast machine)
  - FullScreen Mode
  - Visual M68000 & VDP debugger
  - Checksum autofix
  _ Estimated compatibility of 70-80%



--------------
2. How to use |
--------------

If you downloaded this, you probably know how to use an emulator. It
should be self-explanatory ;)


To use jEnesis you need to hava a Java VM installed of course.
If not, you can get Sun's Java runtime environment here:
http://java.sun.com/j2se/1.5.0/download.jsp .
To start jEnesis use the 'jEnesis.bat'. If you installed a new Sun Java
VM, double clicking the .jar should work too.
If it doesnt work, you need to find your java.exe or javaw.exe and start
it with the command line like this:
javaw -jar jEnesis.jar



There is no way to edit the key settings yet, so here is the layout:

PAD1:
A=	 'A'
B=	 'S'
C=	 'D'
X=	 'Q'
Y=	 'W'
Z=       'E'
MODE=    'M'
START=	 'ENTER'
L,R,D,U= cursor keys

PAD2:
A=	 'DELETE'
B=	 'END'
C=	 'PAGE-DOWN'
X=       'INSERT'
Y=       'HOME'
Z=	 'PAGE-UP'
START=	 '*'
L,R,U,D= NUMPAD-4,6,8,2

To switch to 3Button-Mode, hold down the Mode-Key while "rebooting" the emulator
with 'R'.

There is no way in Java to natively support PC-joypads. 
So if you want to use a joypad
you have to use a joypad to keyboard mapper. 
You can get a free one here http://www.autohotkey.com/ .

It might happen, that the window looses its focus when you change
settings and therefore doesnt respond to key input anymore.
Just click inside the screen, if that happens, and it will work again.
This will also be fixed in the future.

Use 'ESCAPE' to toggle the Fullscreen Mode.


Archive Browser:
You can pack multiple roms in one .zip or .7z file. The "Browse Archive" option
in the File Menu opens a Window, in which you can select and start those
games.
When the ArchiveBrowser is active, you can switch to the next game
by pressing 'F2', to the previous one by pressing 'F1'.
This also works in FullScreen mode (not with LWJGL yet), if the ArchiveBrowser 
is active in the background. In this way you can play all your favorite games without leaving
the FullScreen mode. I might add a feature to order them and save this as a
'playlist' later. 

To enable/disable LWJGL rendering, set the property UseLWJGL=true or UseLWJGL=false
in the jEnesis.cfg file.

-----------------------
3. System Requirements |
-----------------------

In any case, a PC, keyboard and monitor will make it more likely to work...
jEnesis 'should' run on any system with a newer Java VM (1.5).
It doesnt work properly with the new 1.6beta VM yet.

Please mail me your system specs, which Java VM and Operating
System you are using, and the performance (or errors) you get.

The emulator should run full speed in lowest resolution (Fullscreen or
windowed) on anything faster than 1.5GHz.

Higher resolutions need a lot of extra power.
On my development system (AthlonXP @1.8 GHz, 1GB RAM) it runs full speed
up to the double resolution and very slow, if any HQ Filter is enabled.
It is still playable with auto frameskip though.

For the LWJGL rendering your gfx setup (os/card/drivers) need to be able to 
provide a direct rendering context. In Linux you can check with glxinfo.
In any case try to install the newest drivers for your card, if it doesnt work.
If you still have problems, try the AWT rendering mode (set UseLWJGL=false in the 
jEnesis.cfg file) and mail me the problem and your system specs, so i can try to resolve
the issue.


----------------
4. Thanks go to |
----------------

-Stphane Dallongeville (for helping and being extremely nice and patient ;) )
	http://gens.consolemul.com/
-Charles McDonald (for helping and all the great work and documentation
on the Genesis hardware).
	http://cgfm2.emuviews.com
-Bart Trzynadlowski (for all his work and documentation).
	http://www.trzy.org/
-Razvan Surdulescu for letting me use his Java Z80 core until i write my own one


-------------------------------
5. Licence and Acknowledgement |
-------------------------------

jEnesis is a released under no special kind of licence, it is completely free, the sources
are closed and it is provided as is, without any kind of guarantees or support.
Use it at your own risk.
jEnesis is developed by me, Stephan Dittrich and i hold the copyright to it. Dont modify it, 
dont sell it do anything illegal with it, or distribute it without this document.
If you want to host jEnesis on your website, do so, if you provide the original archive including
this document, as found on my website www.workingdesign.de.

jEnesis was entirely written by me, without using any existing sources, except for the following
parts:
- Zilog Z80 Java core written by Razvan Surdulescu and included with his permission.
- The .7z decoder uses parts of the java_lzma http://sourceforge.net/projects/p7zip/ and 
  http://www.7-zip.org/sdk.html which is released under the LGPL.

-----------
6. Contact |
-----------

If you want to leave a comment about jEnesis, do it here:

dittiman@gmx.net

Anyway, hope you enjoy it...


