           _______                  _______
          |       |.-----.--------.|       |.-----.-----.
          |   -   ||__ --|        ||   -   ||__ --|  -__|
          |_______||_____|__|__|__||_______||_____|_____|
           _______                  __         __
          |    ___|.--------.--.--.|  |.---.-.|  |_.-----.----.
          |    ___||        |  |  ||  ||  _  ||   _|  _  |   _|
          |_______||__|__|__|_____||__||___._||____|_____|__|
       Version 0.9.0b - 12th public release, written by Bruno Vedder.


Osmose means:
-------------

Object      Oriented
       S.M.S.         Emulator.

In brief it's an Sega Master System / Game Gear emulator written in C++
PLEASE NOTE: Osmose 0.9.0b is still a beta release. The new OpenGL renderer and
GUI has NOT been tested on large number of configuration. The GUI is almost
7000 lines of code and is certainly not bug free.

If you notice problems or successfull test
please report it.

30 March 2009:  Osmose-0-9-0b 12th public release. Linux only.
--------------------------------------------------------------

Osmose is another Sega Master System / Gamegear emulator. The emulator is
released as open source project, under GPL license. For more information just
read the file 'license.txt'.

The emulator relies on SDL library, Zlib, Gilles Vollant's unzip package
and
OpenGL 3D graphic library.

What's new:
-----------

A GUI was the most asked feature for Osmose. The emulator is not a command line
based program anymore. Everything is now done from menus and shortcuts and at
run time. You can now switch dynamically video filters, window size, fullscreen
or windowd mode and so on.

Osmose configuration is now stored into $HOME/.osmose directory under Linux.
Config file is named osmose.conf

Features:
--------

-Open GL based GUI.
-SMS: Good compatibility. At this stage, the emulator can run* 96% of commercial
 games and public demos, except games that relies on codemaster mapper, which work
 but does not have proper video mode emulated.
-Game Gear: Good compatibility. At this stage, the emulator can run 98.0%* of
 game gear ROMS.
-SN76489 Sound is supported, but needs more work on noise register.
-support. for .zip .sms  and .gg format.
-Video filters: bilinear or nearest neighbour (default)
-Pad(keyboard or joystick mapped), Sport Paddle (mouse mapped) emulation.
-PAL/NTSC Timing.
-Japanese/Export console.
-In game Screenshots, GFX rip, sound shot.
-Accurate auto-frameskip.
-Configurable keyboard configuration.
-Joystick support.

*Due to the huge number of game gear/sms (around 1300) roms, games have not been
deeply tested.

Usage / Options :
-----------------

Osmose is no more a command line application. simply run osmose.

Default Keys:
-------------

SOUNDSHOT 	:  F1 (start/stop audio recording (22khz 16bits/mono into .wav)
          	   Be carefull, wave file grows about 2.58 Mo/minute.
PAUSE     	:  F4 Pause / Resume emulation.
SCREENSHOT	:  F2 Take a screenshot.
TILESHOT  	:  F3 this will rip gfx currently in use.
HARDWARE RESET	:  F7 machine reset.
QUIT      	:  ESCAPE (or Switch from fullscreen to windowed).

PAD1 UP   :  UP ARROW or JOYSTICK 1
PAD1 DOWN :  DOWN ARROW or JOYSTICK 1
PAD1 LEFT :  LEFT ARROW or JOYSTICK 1
PAD1 RIGHT:  RIGHT ARROW or JOYSTICK 1
PAD1 A    :  c or JOYSTICK 1, Button A
PAD1 B    :  v or JOYSTICK 1, Button B

PAD2 UP   :  NUMPAD 5
PAD2 DOWN :  NUMPAD 2
PAD2 LEFT :  NUMPAD 1
PAD2 RIGHT:  NUMPAD 3
PAD2 A    :  n
PAD2 B    :  b

START     :  Enter/return

LOAD STATE:  F11 (Load a state from current slot).
SAVE STATE:  F12 (Save a state in current slot).

Keyboard configuration:
-----------------------

If you dislike Osmose's keyboard configuration, you can change it,
by modifying osmose.conf file. To change a value, you need to provide the
value of the key you expect to use. See table in annexe 1 at the end of file.
I plan, in next osmose release to include a graphical interface to configure
keyboard. Support for Joystick 2 will come as soon as i get another usb
joystick.


Sound shots, tiles rip and screenshots, Battery backed ram:
-----------------------------------------------------------

Osmose save these files in the corresponding folders:

Linux:
------

$HOME/.osmose/sounds
$HOME/.osmose/tiles
$HOME/.osmose/screenshots
$HOME/.osmose/bbr
$HOME/.osmose/save
$HOME/.osmose/osmose.conf

windows:
--------

CurrentDirectory/osmose/sounds
CurrentDirectory/osmose/tiles
CurrentDirectory/osmose/screenshots
CurrentDirectory/osmose/bbr
CurrentDirectory/osmose/save
CurrentDirectory/osmose/osmose.conf

If the emulator doesn't find osmose.conf, it will generate a new one, with
these five folders. Without these folders no save are possible. If Osmose
can't create them do it manually !

To force osmose to create these directory again, simply delete osmose.ini
and launch a ROM.


Building Osmose from sources:
-----------------------------

Assuming your system is correctly configured, with :
SDL, zlib, and OpenGL
(header + shared object)
 just type: make from the source directory.

Thanks to:
----------
-Enik, for bug reports, beta testing, and sound comments.

-Bertram, for the Osmose's Frontend, based on wxWidgets, and bug reports.

-Alessandro Scotti, for it's Z80 CPU core used in earlier version of Osmose.
 Osmose now uses it's own cpu core.

 Web site: http://ascotti.org/programming/tickle/tickle.htm

-Charles MacDonald, for his excellent technical documentation on the SMS
 hardware. Web site: http://cgfm2.emuviews.com/

-SMS Power dev forum, for help about a lot of SMS parts, and nice resources.
 Web site: http://www.smspower.org/

-Zlib home page for their excellent library.
 Web site: http://www.gzip.org/zlib

-Gilles Vollant for it's unzip package based on zlib.

-emu-france.com for free and publicity free web hosting.
 Web site: http://emu-france.com

Feedback for bugs, problems or features requests are obiously welcome.

--------------------------------------------------------------------
|  Contact: osmose_emulator@yahoo.fr                               |
|  Site   : http://bcz.emu-france.com                              |
--------------------------------------------------------------------

Annexe 1: SDL / osmose.conf key mapping.
----------------------------------------

This table obviously comes
from the SDL file SDL_keysym.h

	FIRST		= 0,
	BACKSPACE	= 8,
	TAB		= 9,
	CLEAR		= 12,
	RETURN		= 13,
	PAUSE		= 19,
	ESCAPE		= 27,
	SPACE		= 32,
	EXCLAIM		= 33,
	QUOTEDBL	= 34,
	HASH		= 35,
	DOLLAR		= 36,
	AMPERSAND	= 38,
	QUOTE		= 39,
	LEFTPAREN	= 40,
	RIGHTPAREN	= 41,
	ASTERISK	= 42,
	PLUS		= 43,
	COMMA		= 44,
	MINUS		= 45,
	PERIOD		= 46,
	SLASH		= 47,
	0		= 48,
	1		= 49,
	2		= 50,
	3		= 51,
	4		= 52,
	5		= 53,
	6		= 54,
	7		= 55,
	8		= 56,
	9		= 57,
	COLON		= 58,
	SEMICOLON	= 59,
	LESS		= 60,
	EQUALS		= 61,
	GREATER		= 62,
	QUESTION	= 63,
	AT		= 64,
	LEFTBRACKET	= 91,
	BACKSLASH	= 92,
	RIGHTBRACKET	= 93,
	CARET		= 94,
	UNDERSCORE	= 95,
	BACKQUOTE	= 96,
	a		= 97,
	b		= 98,
	c		= 99,
	d		= 100,
	e		= 101,
	f		= 102,
	g		= 103,
	h		= 104,
	i		= 105,
	j		= 106,
	k		= 107,
	l		= 108,
	m		= 109,
	n		= 110,
	o		= 111,
	p		= 112,
	q		= 113,
	r		= 114,
	s		= 115,
	t		= 116,
	u		= 117,
	v		= 118,
	w		= 119,
	x		= 120,
	y		= 121,
	z		= 122,
	DELETE		= 127,
	/* Numeric keypad */
	KP0		= 256,
	KP1		= 257,
	KP2		= 258,
	KP3		= 259,
	KP4		= 260,
	KP5		= 261,
	KP6		= 262,
	KP7		= 263,
	KP8		= 264,
	KP9		= 265,
	KP_PERIOD	= 266,
	KP_DIVIDE	= 267,
	KP_MULTIPLY	= 268,
	KP_MINUS	= 269,
	KP_PLUS		= 270,
	KP_ENTER	= 271,
	KP_EQUALS	= 272,

	/* Arrows + Home/End pad */
	UP		= 273,
	DOWN		= 274,
	RIGHT		= 275,
	LEFT		= 276,
	INSERT		= 277,
	HOME		= 278,
	END		= 279,
	PAGEUP		= 280,
	PAGEDOWN	= 281,

	/* Function keys */
	F1		= 282,
	F2		= 283,
	F3		= 284,
	F4		= 285,
	F5		= 286,
	F6		= 287,
	F7		= 288,
	F8		= 289,
	F9		= 290,
	F10		= 291,
	F11		= 292,
	F12		= 293,
	F13		= 294,
	F14		= 295,
	F15		= 296,

	/* Key state modifier keys */
	NUMLOCK		= 300,
	CAPSLOCK	= 301,
	SCROLLOCK	= 302,
	RSHIFT		= 303,
	LSHIFT		= 304,
	RCTRL		= 305,
	LCTRL		= 306,
	RALT		= 307,
	LALT		= 308,
	RMETA		= 309,
	LMETA		= 310,
	LSUPER		= 311,		/* Left "Windows" key */
	RSUPER		= 312,		/* Right "Windows" key */
	MODE		= 313,		/* "Alt Gr" key */
	COMPOSE		= 314,		/* Multi-key compose key */
