mirror of
https://github.com/italicsjenga/gba.git
synced 2024-12-23 19:01:30 +11:00
Give some chapter outlines
This commit is contained in:
parent
e08a8d617e
commit
bfc7e96c79
|
@ -1 +1,26 @@
|
|||
# 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
|
||||
|
||||
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
|
||||
|
||||
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