
YahGBA v0.9.0
-------------


About:
------
YahGBA (YGBA) is an open-source Nintendo GameBoy Advance emulator written in Java. This is my first (and I hope not the last) emulation project. I take it as a learning project rather than a useful one (since there are a lot of more advanced GBA emulators around the Web). If you want only to play games with it, then just don't try it as it's not designed for.


Disclaimer:
-----------
- Do not ask for BIOS ROM file or where you can find it.
- Do not ask for commercial ROM files or where you can find them. I don't even think that YGBA can correctly run commercial games.


Requirements:
-------------
- Sun's Java Runtime Environment J2SE 5.0 or above. You can download it at: http://java.sun.com/javase/downloads/index.jsp
- GBA BIOS image.
- GBA ROM image.


Usage:
------

Application version:
--------------------
To launch the emulator, double-click the YGBA's JAR file.
To display the menu, right-click inside the emulator's window.
To run a demo or a game, load BIOS and ROM files.
As you will see, YGBA is a user-friendly emulator :)

Applet version:
---------------
The online version of the emulator can be launched with YGBAO.html.
To run a demo or a game, you must change YGBAO's BIOS and ROM URLs:
<applet ...>
  <param name="bios" value="http://www.example.com/my_bios.zip" />
  <param name="rom" value="http://www.example.com/my_rom.zip" />
</applet>


Keys:
-----
Java Keys	GBA Keys
---------	--------
X		A
C		B
D		R
S		L
Space		Select
Enter		Start
Right		Right
Left		Left
Up		Up
Down		Down


Implemented features:
---------------------
- ARM7TDMI CPU emulation.
	* 16-bit THUMB CPU support.
	* 32-bit ARM CPU support (still buggy).
	* CPU debugger (step by step execution, instruction disassembler, register viewer, flag viewer, switch memory bank feature).
- Memory emulation.
	* System ROM support.
	* I/O registers support.
	* Palette/Video/OAM RAM support.
	* Cartridge SRAM support.
- DMA emulation.
- Timer emulation.
- GFX emulation.
	* Mode 0-4 support.
	* Backgrounds and Sprites support.
	* Horizontal/Vertical flipping support.
	* Horizontal/Vertical offset support.
	* Horizontal/Vertical mosaic effect support.
	* Rotating/Scaling support (only for Backgrounds).
- Misc.
	* HBlank/VBlank emulation.
	* Keypad support.
	* BIN/AGB/GBA/ZIP files support.
	* Pause and Reset emulation feature.


Unimplemented features:
-----------------------
- Complete GFX emulation.
	* Add Mode 5 support.
	* Add Window 0-1 support.
	* Add Window OBJ support.
	* Add FadeIn/FadeOut effect support.
	* Add Alpha-blending effect support.
	* Add Rotating/Scaling support for Sprites.
	* Fix the remaining bugs.
- Add Sound emulation.
- Add BIOS emulation (HLE).
- Add SRAM/EEPROM/Flash save support.
- Add save state support.
- Add memory viewer, I/O registers viewer, Map/OBJ/Palette viewers, etc.
- Find a girlfriend and get married :P


Special Thanks: (in no particular order)
---------------
- Nintendo.
- Martin Korth and his invaluable GBA technical documentation.
- Karma and his open-source GirlfriendAdvance emulator (its sources are definitely the cleanest Java produced code available on the Web!).
- Forgotten and his open-source VisualBoyAdvance emulator.
- Thomas Happ and his open-source CowBite emulator.
- Joat and his open-source MappyVM emulator.
- LTronic for pointing me some Java tricks used to speed up the CPU emulation process.
- Bensebaa for teaching me Multi-Agent Systems.
- Ben Abbas for helping me getting out of some serious problems.
- Father, Mother, Brother and Sisters.
- Freud.
- Reda & Rafik.
- Patrick & Lestat.
- Sir Jaguar (Rest In Peace).
- GBA/DS dev community.
