<-------------------------- This file is this wide --------------------------->


                                                   ____     _  _  _  __
                                                  |    ||_||_>| ||_|| _
      ,-----------------.                         | *    | |_>|_||| |_/
        B L U E C H I P                           |   __    _ ___ __ _  _
      `-----------------'                         |  |_ |_||_  | |_ ||||_
                                                  |_:__| |  _| | |__| | _|



###############################################################################
#####################                                    ######################
###############################################################################
########################   ##     # ## #    # #####   #########################
#######################     ### ### ## # #### #### ### ########################
#######################     ### ###    #   ## #### ### ########################
#######################     ### ### ## # #### #### ### ########################
########################   #### ### ## #    #    ##   #########################
###############################################################################
#####################                                    ######################
###############################################################################



                               =============
                                 I N D E X
                               =============


                           Introduction to Othelo

                                Installation

                                  Controls

                              Computer Advice

                                AI Opponents

                                 Navigation

                                   Display

                                 Source Code

                             Future Development

                                Bugs'n'stuff

                                   Greetz

                                   Author



-------------------------------------------------------------------------------



Introduction to Othelo
======================

Othelo is based on a popular board game.  This is by no means the first
computer port of this game - the most famous port I can name was "Reversi".

The objective is to 'capture' more squares of the board than your opponent.

Each turn you claim a single, previously unclaimed, square of the board.  But
EVERY move MUST result in the taking of at least one of your opponents squares.

An opponents square is captured by placing your pieces either side of it.
Either vertically, horizontally or diagonally.

The rules are mind-numbingly simple ...but, like Chess, the strategy for
regular success is far from obvious.

Further guidance on playing can be found at:
http://home.nc.rr.com/othello/strategy/midgame/
...although I would like to add that all of the AI Bots (Computer opponents)
(currently three thereof) were written by yours truly without reference to
these type of guides :-)

Version 2.0 features a new AI bot C-4, (s)he is not that effective a winner
yet, but (s)he is the basis for some potentially quite advanced AI that is
approaching with the help of D.Lichman ...Watch this space.


Installation
============

Othelo will work with:
  #  Archos Jukebox Recorder - Version 1 (AA Batteries)
  #  Archos Jukebox Recorder - Version 2 (Lithium Ion Battery(ies))
  #  Archos Jukebox Recorder FM

As Othelo is distributed seperately from Rockbox, please place the file
"Othelo.rock" in the directry ".\rockbox\plugins\" on your Jukebox.  Othelo can
be then be found under "Plugins" in the Rockbox menu system.

Alternatively, you may like to place Othelo in a directory of your own choosing
and execute it directly by using the file browser.  For this method you will
need to ensure that Rockbox is set to "Show All Supported Files".


Controls
========

At any time during play:
F1    will change the player and dreamer for the BLACK opponent
F2    will change the player and dreamer for the WHITE opponent
F3    will terminate the current game
OFF   will switch off the Othelo game.  When Othelo is restarted from the menu,
           play will start with a new board.
ON+F2 will switch Fast Animations on and off.
ON+F3 will switch the backlight on and off.

Either player may be a Human or Computer, and this may be changed at any time
during play with F1 and F2.  The current choice is indicated by an H or C above
the respective F1 and F2 buttons on the Jukebox.

NOTE: The "suspend" function available in earlier versions of Othelo relied on
an 'undocumented feature' which is no longer prevelant under the new "plugin"
system of Rockbox.  Due to lack of interest it has not been reintroduced.


Computer Advice
===============

When a Human is playing, he may select any of the AI Bots to offer advice (it
is described as the Computer "dreaming" for you).

The default advice/help level is 0 (zero) ...no advice
Bot 1 help will simply highlight all possible valid moves
Bot 2 will advise you which moves would steal the most pieces per turn
Bot 3 will offer even deeper insights about strategic positioning
Bot 4 will offer advice based on a strategy suggested by D. Lichman
Bot 5 hasn't been written yet ...watch this space

In each case a 'valid' move is displayed as a dot in the centre of the square
and a 'choice' move is highlighted with a cross.


AI Opponents
============

There are currently four AI opponents C-1, C-2, C-3 and C-4 respectively.  Each
has it's own style of play.  Losing against one of the opponents does not
necessarily mean that you will lose against another.

It can be interesting to set both opponents to Computer mode and watch them
play against each other.

Again, the numbers attributed to each player in no way suggest their "skill" or
likelyhood to win, the number reflects the order in which they were designed.


Navigation
==========

During the turn of a Human, the up, down, left and right cursor keys navigate
the board highlight in a suspiciously expected manner to the chosen square.
When the cursor is highlighting the square you wish to play in, press PLAY.  If
you have chosen an invalid move, the board will flash and you will be expected
to try again.

Button repeat _is_ enabled for navigation.

The AI opponents will pause slightly before making their move, to allow you to
see the result of your move.  If you wish to force the Computer opponent to
wait longer before playing, you may keep PLAY depressed ("keep your finger on
the piece you just played") and the Computer will make his move immediately you
remove your finger from the keypad.


Display
=======

Advice on how to skip the credits screen is offered in the scroller at the
bottom of the credits screen.

The main board is that great big grid thing taking up most of the screen.

Above F1 and F2, on the bottom line of the screen, is the identity of each
player.  Such as:
"O:C-1" ...this means that, the player represented by the "O" graphic is a
                            [C]omputer and is controlled by AI Bot #1
"O:H-2" ...this means that, the player represented by the "O" graphic is a
                            [H]uman player, and has AI Bot #2 dreaming for him
etc.

The scores are shown toward the bottom right of the screen and the current
player has a small arrow (->) next to his name, indicating that he should hurry
up and actually make a move, today preferably :)

During play the rest of the screen (the big lump on the right at the top) will
show a pointless graphic to make the screen look pretty.  When the game is quit
or finished naturally, this area will display the identity of the winner, and a
secret "end of play" message.


Source Code
===========

The source code is scruffy, but well documented and available from the Cyborg
Systems homepage.  Currently at:  http://homepage.ntlworld.com/cyborgsystems

Since I will not divulge my private details online, I have been banned from
submitting code to Rockbox officially.  So future work will only be available
from the Cyborg Systems homepage.

If you wish to use any of my code you are hereby granted full permission to do
so ONLY if you offer me some token credit for my efforts - that means putting
something like "Thanks to Bluechip for his help" on your "greetz" or "credits"
screen.  Or, if you do not have such a screen on in your application, then
simply offer me a token credit in a comment in your source code.
I will consider that fair payment/respect for my efforts.


Future Development
==================

Better AI Bots.  A perfect AI Bot is easy and you can add tolerances to it from
there (to dumb it down a bit) ...the dilemma is the vast quantity of RAM
required to run it (although ideas are staring to form).  So the Bots really
need to be strategy and not logic based.

Remote control support.  Save wear and tear on your Jukebox keys - that really
weren't designed with games players in mind.


Bugs'n'stuff
============

I am pleased to hear about bugs I can fix - although they don't tend to happen
too often in my code ...go on then, find one! - LOL

If you can think of any clever short cuts I have missed or fancy your hand at
writing the next AI Bot - gimme a shout and I will explain all there is to know
about possibility lists, and perhaps even answer such questions as "why is
there only one equals sign in this IF statement" and "why are there lines of
code with question marks in them".


Greetz
======

Powelly, mk, pajaco, scott666, DevZer0, jzoss, LinusN, Zagor, Cyborg, Lord
Grumble


Author
======

BlueChip
Yep, the lot - and right chuffed with miself too :)
V2.0 Powelly wrote the starfield code
D. Lichman proposed the theory for AI bot 4