mirror of
https://github.com/italicsjenga/gba.git
synced 2024-12-23 19:01:30 +11:00
try to keep the ideas of the addresses for blocks and the block data itself separate.
This commit is contained in:
parent
342d8fc25a
commit
5059ceb7d4
|
@ -68,7 +68,7 @@ extern "C" fn main() -> ! {
|
||||||
|
|
||||||
{
|
{
|
||||||
// get the the tilemap copied into place
|
// get the the tilemap copied into place
|
||||||
let tsb = TextScreenblock::new(31);
|
let tsb = TextScreenblockAddress::new(31);
|
||||||
tsb.write_words(&TILE_LAYOUT);
|
tsb.write_words(&TILE_LAYOUT);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
34
src/mmio.rs
34
src/mmio.rs
|
@ -224,13 +224,13 @@ def_mmio!(0x0600_C000 = CHARBLOCK3_8BPP: VolBlock<Tile8, Safe, Safe, 256>; "Char
|
||||||
#[inline]
|
#[inline]
|
||||||
#[must_use]
|
#[must_use]
|
||||||
const fn screenblock_addr(index: usize) -> usize {
|
const fn screenblock_addr(index: usize) -> usize {
|
||||||
/// The VRAM offset per screenblock.
|
/// The VRAM offset per screenblock. This isn't affected by the screenblock's size.
|
||||||
const SCREENBLOCK_OFFSET: usize = 2_048;
|
const SCREENBLOCK_OFFSET: usize = 2_048;
|
||||||
|
|
||||||
0x0600_0000 + index * SCREENBLOCK_OFFSET
|
0x0600_0000 + index * SCREENBLOCK_OFFSET
|
||||||
}
|
}
|
||||||
|
|
||||||
macro_rules! make_me_a_screenblock {
|
macro_rules! make_me_a_screenblock_addr {
|
||||||
( $(#[$name_meta:meta])* $name:ident($t:ty), $(#[$size_meta:meta])* size: $size:literal, $(#[$index_meta:meta])* max_index: $max_index:literal) => {
|
( $(#[$name_meta:meta])* $name:ident($t:ty), $(#[$size_meta:meta])* size: $size:literal, $(#[$index_meta:meta])* max_index: $max_index:literal) => {
|
||||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
|
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
|
||||||
#[repr(transparent)]
|
#[repr(transparent)]
|
||||||
|
@ -274,41 +274,41 @@ macro_rules! make_me_a_screenblock {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
make_me_a_screenblock!(
|
make_me_a_screenblock_addr!(
|
||||||
/// Screenblock for text mode backgrounds (32x32).
|
/// Screenblock address for text mode backgrounds (32x32).
|
||||||
TextScreenblock(TextEntry),
|
TextScreenblockAddress(TextEntry),
|
||||||
/// Size: 32x32
|
/// Size: 32x32
|
||||||
size: 32,
|
size: 32,
|
||||||
/// Max Index: 31
|
/// Max Index: 31
|
||||||
max_index: 31
|
max_index: 31
|
||||||
);
|
);
|
||||||
make_me_a_screenblock!(
|
make_me_a_screenblock_addr!(
|
||||||
/// Screenblock for size 0 affine mode backgrounds (16x16).
|
/// Screenblock address for size 0 affine mode backgrounds (16x16).
|
||||||
AffineScreenBlock0(u8),
|
AffineScreenBlock0Address(u8),
|
||||||
/// Size: 16x16
|
/// Size: 16x16
|
||||||
size: 16,
|
size: 16,
|
||||||
/// Max Index: 31
|
/// Max Index: 31
|
||||||
max_index: 31
|
max_index: 31
|
||||||
);
|
);
|
||||||
make_me_a_screenblock!(
|
make_me_a_screenblock_addr!(
|
||||||
/// Screenblock for size 1 affine mode backgrounds (32x32).
|
/// Screenblock address for size 1 affine mode backgrounds (32x32).
|
||||||
AffineScreenBlock1(u8),
|
AffineScreenBlock1Address(u8),
|
||||||
/// Size: 32x32
|
/// Size: 32x32
|
||||||
size: 32,
|
size: 32,
|
||||||
/// Max Index: 31
|
/// Max Index: 31
|
||||||
max_index: 31
|
max_index: 31
|
||||||
);
|
);
|
||||||
make_me_a_screenblock!(
|
make_me_a_screenblock_addr!(
|
||||||
/// Screenblock for size 2 affine mode backgrounds (64x64).
|
/// Screenblock address for size 2 affine mode backgrounds (64x64).
|
||||||
AffineScreenBlock2(u8),
|
AffineScreenBlock2Address(u8),
|
||||||
/// Size: 64x64
|
/// Size: 64x64
|
||||||
size: 64,
|
size: 64,
|
||||||
/// Max Index: 29
|
/// Max Index: 29
|
||||||
max_index: 29
|
max_index: 29
|
||||||
);
|
);
|
||||||
make_me_a_screenblock!(
|
make_me_a_screenblock_addr!(
|
||||||
/// Screenblock for size 3 affine mode backgrounds (128x128).
|
/// Screenblock address for size 3 affine mode backgrounds (128x128).
|
||||||
AffineScreenBlock3(u8),
|
AffineScreenBlock3Address(u8),
|
||||||
/// Size: 128x128
|
/// Size: 128x128
|
||||||
size: 128,
|
size: 128,
|
||||||
/// Max Index: 23
|
/// Max Index: 23
|
||||||
|
|
Loading…
Reference in a new issue