Note: You may skip over the first box if you are not a complete
idiot or newbie.
| What is a BIOS? |
|
BIOS - that is the shortcut for Basic Input/Output System - B, I, O, S -
that's there the name comes from! Most computers have a BIOS in ROM (Read Only Memory), or in Flash ROM. Unlike for CD ROMs and cartridges, this memory is built-in, and it cannot be removed from the computer. The computer also haves other built-in memory: RAM. But, RAM does 'forget' its content when the computer is switched off. Only ROM can memorize data and program code even when it is off! In fact, a BIOS ROM really contains such program code, and never forgets it! The program code is used to boot the computer every time when it is switched on. What does that mean? It means that it initializes the computer, and, after initialization it will usually search for attached disk drives or cartridges, and then tries to load the actual operating system (Windows is an example) or, in case of gaming consoles, it loads a game (for example: Super Mario!). But that is not all. Many BIOSes also include functions which can be used to Input/Output data to or from the hardware! The operating system and games can use these functions to access the hardware, for example, to write text on the screen, or even to read or write data from any attached disk drives! |
| What is the GBA BIOS? | |
|
The gameboy advance includes a small BIOS ROM (built-in in its CPU),
the program code in this ROM is used for three purposes: The original BIOS code is copyrighted by Nintendo, and, for that reason, not included in the no$gba package.
|
| How does no$gba emulate the BIOS without original ROM? | |
No$gba includes some sort of a BIOS 'clone'. This program code is written
directly in 80X86 language (NB, that causes less CPU overload as when
emulating ARM opcodes). These 'simulated' functions are
providing exactly the same return values as the real BIOS, including for
undocumented and 'undefined' return values, and are fully compatible with
most or all existing GBA software.
|
| How to get a copy of the original BIOS? |
|
There are a number of ways - which are unfortunately far too complicated
for normal people! There are most likely only a mere handful of skilled
programmers living on this planet whom might be able to solve that
problem. Fortunately, you do not really need the original stuff because the no$gba 'clone' BIOS should work with all GBA software. If it doesn't: 1) Please let me know of it! 2) Check if your program is doing any strange/unstable things 3) Let me know about it anyways (even if you did solve the problem, I would still like to know about it, and try to find a workaround, so that it cannot trouble you or other people in future). |
| Okay, but how are that magic ways to get the copy? | |||
You really want to know? If you aren't afraid of expression
like soldering, copy protections, and pseudo code examples, read on...
|
| When to use BIOS Functions? |
|
Your program may, or may not use the BIOS. You are certainly free to use
your own program code instead of the built-in functions. The built-in functions may be treated as a nice gesture. For example, the division function is making it much easier to get started when dealing with numbers, and the availability of decompression functions is directing the user towards less careless use of memory resources. On the contrary, these rather inefficent functions may become contra-productive. For example, a program that relies on a large number of calculations would be strongly recommended to use its own maths functions, which are (hopefully) more optimized and would provide at least twice as fast execution time. |
Please let me know if you have read and understood this
document and still have questions or problems.
I will not email copies of the copyrighted rom-image to anybody,
not even to you, sorry.
References
gbatek.htm - complete GBA specifications,
including for bios functions.