[−][src]Crate rubidium
GBA Memory-mapped IO (MMIO) stuff.
The GBA is controlled via MMIO. An MMIO location is called a "register", similar to the CPU having registers. The different registers are all globally accessible, so user code must have its own convention for who is supposed to touch what values when.
This crate defines newtypes that describe the data layout of each register,
and if you enable the unsafe_addresses
feature it also defines the
addresses of each register. The address type used for each register lets you
know about the safety (or not) of accessing a given register. The safety
assessment relies on the code being run only on a GBA, so if you use this
crate on your desktop or something that's your fault.
This is only "work in progress" status, but please file an issue if things are unclear. While you're waiting you can also check GBATEK, which is the standard resource for GBA info (and it's most of where this crate's docs come from).
Naming Conventions
The names used for the address of each register is generally the same as, or close to, the the name given for that register in GBATEK.
For each setting within a register data newtype there will be three methods per setting contained within the newtype:
- A const "getter" named the same as the setting (eg:
foo
). - A const "with-er" which takes
self
and returns a new value (eg:with_foo
). - A "setter" which takes
&mut self
and updates the value in place (eg:set_foo
). This will hopefully also be const in a future version of Rust.
Structs
AlphaBlendValue | Coefficients for the alpha blending special effect. |
BackgroundControlValue | Lets you adjust how each background layer is displayed. |
BlendControlValue | This lets you configure hardware color blending. |
Color | On the GBA, colors have 5 bits per channel. |
ColorSpecialEffect | The color special effects available via hardware on the GBA. |
DangerWriteVolAddr | Represents an MMIO address that can be safely read, but writes are dangerous. |
DisplayControlValue | Top level control for the LCD display. |
DisplayStatusValue | Relates to the status of the display. |
Mode3 | A ZST for putting VideoMode3 stuff in one place. |
Mode3Row | Wrapper to signify the start of a VideoMode3 scanline. |
MosaicControlValue | Controls the intensity of the "mosaic" special effect. |
ReadOnlyVolAddr | Represents an MMIO address that can be safely read, but not written. |
SimpleVolAddr | Represents a simple MMIO address that can be safely read or written. |
VideoMode | The video modes available on the GBA. |
WinHorizontal | Defines the horizontal bounds of Window 0 and 1. |
WinVertical | Defines the vertical bounds of Window 0 and 1. |
WindowControlValue | Lets you set what layers appear inside and outside of the window areas. |
WriteOnlyVolAddr | Represents a simple MMIO address that can be written but not read. |
Constants
BG0CNT | "Background 0 Control" (Text mode only). |
BG0OFS | "Background 0 Offset" (Text mode only). |
BG1CNT | "Background 1 Control" (Text mode only). |
BG1OFS | "Background 1 Offset" (Text mode only). |
BG2_AFFINE_MATRIX | "Background 2 Affine Parameter Matrix" (Affine/Bitmap mode only). |
BG2_REF_POINT | "Background 2 Reference Point" (Affine/Bitmap mode only). |
BG2CNT | "Background 2 Control" (Text/Affine mode only). |
BG2OFS | "Background 0 Offset" (Text mode only). |
BG3_AFFINE_MATRIX | "Background 3 Affine Parameter Matrix" (Affine mode only). |
BG3_REF_POINT | "Background 3 Reference Point" (Affine mode only). |
BG3CNT | "Background 3 Control" (Text/Affine mode only). |
BG3OFS | "Background 0 Offset" (Text mode only). |
BLDALPHA | "Alpha Blend Control". |
BLDBRIGHT | "Brightness Blend Control". |
BLDCNT | "Blend Control". |
DISPCNT | "Display Control" |
DISPSTAT | "Display Status" |
MOSAIC | "Mosaic Effect" |
VCOUNT | "Vertical Counter" |
WIN_CONTROL | "Window Controls" |
WIN_HORIZONTAL | "Window Horizontal Edges" |
WIN_VERTICAL | "Window Vertical Edges" |