From d514aafad4d303c96cea9c39d3574247da3bec68 Mon Sep 17 00:00:00 2001 From: Gwilym Kuiper Date: Tue, 3 May 2022 21:34:41 +0100 Subject: [PATCH] Pass through the size --- agb/src/display/tiled/map.rs | 13 +++++++++++-- agb/src/display/tiled/tiled0.rs | 15 ++++++++++++--- 2 files changed, 23 insertions(+), 5 deletions(-) diff --git a/agb/src/display/tiled/map.rs b/agb/src/display/tiled/map.rs index 9d6c979..dc6910f 100644 --- a/agb/src/display/tiled/map.rs +++ b/agb/src/display/tiled/map.rs @@ -7,7 +7,7 @@ use crate::dma::dma_copy16; use crate::fixnum::Vector2D; use crate::memory_mapped::MemoryMapped; -use super::{Tile, TileSet, TileSetting, VRamManager}; +use super::{RegularBackgroundSize, Tile, TileSet, TileSetting, VRamManager}; pub struct RegularMap { background_id: u8, @@ -19,12 +19,19 @@ pub struct RegularMap { tiles: [Tile; 32 * 32], tiles_dirty: bool, + + size: RegularBackgroundSize, } pub const TRANSPARENT_TILE_INDEX: u16 = (1 << 10) - 1; impl RegularMap { - pub(crate) fn new(background_id: u8, screenblock: u8, priority: Priority) -> Self { + pub(crate) fn new( + background_id: u8, + screenblock: u8, + priority: Priority, + size: RegularBackgroundSize, + ) -> Self { Self { background_id, @@ -35,6 +42,8 @@ impl RegularMap { tiles: [Tile::default(); 32 * 32], tiles_dirty: true, + + size, } } diff --git a/agb/src/display/tiled/tiled0.rs b/agb/src/display/tiled/tiled0.rs index ad5da7f..f6c20db 100644 --- a/agb/src/display/tiled/tiled0.rs +++ b/agb/src/display/tiled/tiled0.rs @@ -5,7 +5,7 @@ use crate::{ display::{set_graphics_mode, DisplayMode, Priority}, }; -use super::{MapLoan, RegularMap}; +use super::{MapLoan, RegularBackgroundSize, RegularMap}; pub struct Tiled0 { regular: RefCell>, @@ -20,14 +20,23 @@ impl Tiled0 { } } - pub fn background(&self, priority: Priority) -> MapLoan<'_, RegularMap> { + pub fn background( + &self, + priority: Priority, + size: RegularBackgroundSize, + ) -> MapLoan<'_, RegularMap> { let mut regular = self.regular.borrow_mut(); let new_background = regular.first_zero().unwrap(); if new_background >= 4 { panic!("can only have 4 active backgrounds"); } - let bg = RegularMap::new(new_background as u8, (new_background + 16) as u8, priority); + let bg = RegularMap::new( + new_background as u8, + (new_background + 16) as u8, + priority, + size, + ); regular.set(new_background, true);