foolsGBA 0.01
-------------


disclaimers
-----------

1)	Use this software at your own risk. It is a very early beta and 
	may not be stable or run on your machine.

2)	foolsGBA contains no copywrited material. It was developed using only
	free and legal information. 

3)	foolsGBA is for the purpose of writing and using home-brew demos. I do not
	condone the use of copywrite ROMS (not that foolsGBA can run them...),
	I will not supply them, and I do not know where they can be found.


intro
-----

foolsGBA is a dynamic recompiling gameboy Advance emulator for windows.

This is a small preview release just to show what I've been up to. Its quite buggy
and thumb has a bad bug in the long branch instruction. Plus, the emulator usually
crashes when quitting after the dynarec has been used. Anyway, this is just to show
the speed gains I'm getting of recompiling just a small part of the instruction set.
The whole emulator is unoptimised...so don't judge it against other emulators, just
against itself in interpretative and dynarec modes. Sometimes it makes little effect,
some times the effect is enourmous. Rotozoomer has probably the most striking speed
gain. As the dynarec become more advanced and optimised, I expect all programs to 
benefit substantially.

One reason the emu is quite slow (apart from lack of optimisation) is that it supports
unaligned reads and writes into memory, and will do in the near future, for compatibility
with demos. It doesn't try to make ram in illegal places, such as for the early fire demo.
I like that demo a lot, but its not worth the hassle ;)

I hope you enjoy watching some
demos on this, the next release will not be until the hardware emulation is far more
advance.

Also, this is a stripped down version. The full version has many debugging tools that
will be present in later versions, and has slightly higher compatibility too. This version
uses SDL but later versions probably won't - the dynarec stops it being portable anyway.

-foolsgold 


plans
-----

apart from better GBA emulation...

- dynarec of all ARM data processing instructions, plus some other nasty ones, and some
  thumb ops as well
- dynarec optimisation when the emulator is idle
- faster code block retrieval...current method is hashed entry into linked lists
  (bypassed on tight 1/2 stage loops)...but there must be something faster :) 


controls
--------

F1 	load a new rom
F12	quit
F5	interpretative mode
F6	dynarec

UP		Up
DOWN		Down
LEFT		Left
RIGHT		Right
Q		L SHOULDER
W		R SHOULDER
X		A	
Z		B
A		Start
S		Select

known bugs (non emulation)
-------------------------

dynarec cannot flush its translation cache, so if you run one demo with dynarec, you
must quit and restart before running another demo with dynarec. Interpretative is fine.

The emulator will crash if you click cancel on the rom loading dialog.

The emulator often crashes when you quit after running in dynarec mode.

The emulator often crashes :)


emulated so far:
----------------

ARM interpreter
THUMB interpreter (buggy)

ARM threaded interpreter (creates lists of synthetic opcode function calls) 
ARM dynamic recompiler (mov, add and sub instructions only in this release)

basic GBA architecture:

	- mode 4
	- mode 3
	- mode 0   partial
	- mode 1,2 partial
	- 8x8 pixel sprites	
	- joypad emulation

	- 1 DMA channel

compatibility	0.01
----------------------

p = partial

-	3d trip
-	rotozoomer
-     plasma
-	chaos 89
-	copper bars
-	fire intro
-	xfade
-	console dev
-	3d plot
-	32,000 colours demo
-	half-life demo
-	bombOAMan 
-	pocket Nes (p)
-	pk#004
-	pong un-advanced
-     armASM
-	NoahFex demo 
-	z demo

	...other demos

greetings
---------

Greetings to all the authors of better GBA emulators :) -

forgotten, gollum, kervin, noahFex, Joat...and others 

Greeting to members of www.dynarec.com...foolsGBA will be open source sometime soon :)


thanks
------

thanks to:

eloist 		(for eloGBA sourcecode)
1964 team	(for 1964 dynarec sourcecode)
joat		(for document)
agentQ		(for document)
nokturn 	(for documents)
dynarec.com 	(for documents)
























