mirror of
https://github.com/italicsjenga/gba.git
synced 2025-01-11 11:31:31 +11:00
Give some chapter outlines
This commit is contained in:
parent
e08a8d617e
commit
bfc7e96c79
|
@ -1 +1,26 @@
|
||||||
# Broad Concepts
|
# Broad Concepts
|
||||||
|
|
||||||
|
The GameBoy Advance sits in a middle place between the chthonic game consoles of
|
||||||
|
the ancient past and the "small PC in a funny case" consoles of the modern age.
|
||||||
|
|
||||||
|
On the one hand, yeah, you're gonna find a few strange conventions as you learn
|
||||||
|
all the ropes.
|
||||||
|
|
||||||
|
On the other, at least we're writing in Rust at all, and not having to do all
|
||||||
|
the assembly by hand.
|
||||||
|
|
||||||
|
This chapter for "concepts" has a section for each part of the GBA's hardware
|
||||||
|
memory map, going by increasing order of base address value. The sections try to
|
||||||
|
explain as much as possible while sticking to just the concerns you might have
|
||||||
|
regarding that part of the memory map.
|
||||||
|
|
||||||
|
For an assessment of how to wrangle all three parts of the video system (PALRAM,
|
||||||
|
VRAM, and OAM), along with the correct IO registers, into something that shows a
|
||||||
|
picture, you'll want the Video chapter.
|
||||||
|
|
||||||
|
Similarly, the "IO Registers" part of the GBA actually controls how you interact
|
||||||
|
with every single bit of hardware connected to the GBA. A full description of
|
||||||
|
everything is obviously too much for just one section of the book. Instead you
|
||||||
|
get an overview of general IO register rules and advice. Each particular
|
||||||
|
register is described in the appropriate sections of either the Video or
|
||||||
|
Non-Video chapters.
|
||||||
|
|
|
@ -1 +1,9 @@
|
||||||
# Video
|
# Video
|
||||||
|
|
||||||
|
GBA Video starts with an IO register called the "Display Control Register", and
|
||||||
|
then spirals out from there. You generally have to use Palette RAM (PALRAM),
|
||||||
|
Video RAM (VRAM), Object Attribute Memory (OAM), as well as any number of other
|
||||||
|
IO registers.
|
||||||
|
|
||||||
|
They all have to work together just right, and there's a lot going on when you
|
||||||
|
first try doing it, so try to take it very slowly as you're learning each step.
|
||||||
|
|
|
@ -1 +1,21 @@
|
||||||
# Non-Video
|
# Non-Video
|
||||||
|
|
||||||
|
Besides video effects the GBA still has an okay amount of stuff going on.
|
||||||
|
|
||||||
|
Obviously you'll want to know how to read the user's button inputs. That can
|
||||||
|
almost go without saying, except that I said it.
|
||||||
|
|
||||||
|
Each other part can be handled in about any order you like.
|
||||||
|
|
||||||
|
Using interrupts is perhaps one of the hardest things for us as Rust programmers
|
||||||
|
due to quirks in our compilation process. Our code all gets compiled to 16-bit
|
||||||
|
THUMB instructions, and we don't have a way to mark a function to be compiled
|
||||||
|
using 32-bit ASM instructions instead. However, an interrupt handler _must_ be
|
||||||
|
written in 32-bit ASM instructions for it to work. That means that we have to
|
||||||
|
write our interrupt handler in 32-bit ASM by hand. We'll do it, but I don't
|
||||||
|
think we'll be too happy about it.
|
||||||
|
|
||||||
|
The Link Cable related stuff is also probably a little harder to test than
|
||||||
|
anything else. Just because link cable emulation isn't always the best, and or
|
||||||
|
you need two GBAs with two flash carts and the cable for hardware testing.
|
||||||
|
Still, we'll try to go over it eventually.
|
||||||
|
|
Loading…
Reference in a new issue