From a6f5cc9ec10d2a62a2d06446d87d597664f2b53d Mon Sep 17 00:00:00 2001 From: Gwilym Kuiper Date: Tue, 5 Apr 2022 22:32:11 +0100 Subject: [PATCH] Render some text --- agb-image-converter/src/font_loader.rs | 38 +++++-- agb/examples/RobotoCondensed-Regular.ttf | Bin 0 -> 166836 bytes agb/examples/text_render.rs | 46 +++++++++ agb/src/display/font.rs | 121 +++++++++++++++++++++++ agb/src/display/mod.rs | 3 + agb/src/display/tiled/mod.rs | 2 +- agb/src/display/tiled/vram_manager.rs | 27 ++++- agb/src/lib.rs | 2 + 8 files changed, 229 insertions(+), 10 deletions(-) create mode 100644 agb/examples/RobotoCondensed-Regular.ttf create mode 100644 agb/examples/text_render.rs create mode 100644 agb/src/display/font.rs diff --git a/agb-image-converter/src/font_loader.rs b/agb-image-converter/src/font_loader.rs index f3b5047..b0cb31f 100644 --- a/agb-image-converter/src/font_loader.rs +++ b/agb-image-converter/src/font_loader.rs @@ -5,32 +5,58 @@ use proc_macro2::TokenStream; struct LetterData { width: usize, + height: usize, + xmin: i32, + ymin: i32, + advance_width: f32, rendered: Vec, } pub fn load_font(font_data: &[u8], pixels_per_em: f32) -> TokenStream { - let font = fontdue::Font::from_bytes(font_data, Default::default()).expect("Invalid font data"); + let font = fontdue::Font::from_bytes( + font_data, + fontdue::FontSettings { + collection_index: 0, + scale: pixels_per_em, + }, + ) + .expect("Invalid font data"); let font = (0..128) .map(|i| font.rasterize(char::from_u32(i).unwrap(), pixels_per_em)) .map(|(metrics, bitmap)| { let width = metrics.width; + let height = metrics.height; LetterData { width, + height, rendered: bitmap, + xmin: metrics.xmin, + ymin: metrics.ymin, + advance_width: metrics.advance_width, } }) .map(|letter_data| { let data_raw = ByteString(&letter_data.rendered); + let height = letter_data.height as u8; let width = letter_data.width as u8; + let xmin = letter_data.xmin as i8; + let ymin = letter_data.ymin as i8; + let advance_width = letter_data.advance_width as u8; - quote!(agb::display::FontLetter { - width: #width, - data: #data_raw, - }) + quote!( + agb::display::FontLetter::new( + #width, + #height, + #data_raw, + #xmin, + #ymin, + #advance_width, + ) + ) }); quote![ - #(#font),* + agb::display::Font::new(&[#(#font),*]) ] } diff --git a/agb/examples/RobotoCondensed-Regular.ttf b/agb/examples/RobotoCondensed-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..17e8ea57b11bd91e9f06ac86254de6f128c922ce GIT binary patch literal 166836 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%0DobldLI6;RHmt=q(=g# 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Ð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 literal 0 HcmV?d00001 diff --git a/agb/examples/text_render.rs b/agb/examples/text_render.rs new file mode 100644 index 0000000..fd4d2a3 --- /dev/null +++ b/agb/examples/text_render.rs @@ -0,0 +1,46 @@ +#![no_std] +#![no_main] + +use agb::{ + display::{palette16::Palette16, tiled::TileSetting, Font, Priority}, + include_font, +}; + +const FONT: Font = include_font!("examples/RobotoCondensed-Regular.ttf", 14); + +#[agb::entry] +fn main(mut gba: agb::Gba) -> ! { + let (gfx, mut vram) = gba.display.video.tiled0(); + let vblank = agb::interrupt::VBlank::get(); + + vram.set_background_palettes(&[Palette16::new([ + 0x0000, 0x0ff0, 0x00ff, 0xf00f, 0xf0f0, 0x0f0f, 0xaaaa, 0x5555, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + ])]); + + let background_tile = vram.new_dynamic_tile().fill_with(0); + + let mut bg = gfx.background(Priority::P0); + + for y in 0..20u16 { + for x in 0..30u16 { + bg.set_tile( + &mut vram, + (x, y).into(), + &background_tile.tile_set(), + TileSetting::from_raw(background_tile.tile_index()), + ); + } + } + + vram.remove_dynamic_tile(background_tile); + + FONT.render_text(3, 3, "Hello, World!", 1, 2, 100, &mut bg, &mut vram); + + bg.commit(); + bg.show(); + + loop { + vblank.wait_for_vblank(); + } +} diff --git a/agb/src/display/font.rs b/agb/src/display/font.rs new file mode 100644 index 0000000..d0c5ae2 --- /dev/null +++ b/agb/src/display/font.rs @@ -0,0 +1,121 @@ +use super::tiled::{DynamicTile, RegularMap, TileSetting, VRamManager}; + +use alloc::{vec, vec::Vec}; + +pub struct FontLetter { + width: u8, + height: u8, + data: &'static [u8], + xmin: i8, + ymin: i8, + advance_width: u8, +} + +impl FontLetter { + pub const fn new( + width: u8, + height: u8, + data: &'static [u8], + xmin: i8, + ymin: i8, + advance_width: u8, + ) -> Self { + Self { + width, + height, + data, + xmin, + ymin, + advance_width, + } + } +} + +pub struct Font { + letters: &'static [FontLetter], +} + +impl Font { + pub const fn new(letters: &'static [FontLetter]) -> Self { + Self { letters } + } + + fn letter(&self, letter: char) -> &'static FontLetter { + &self.letters[letter as usize] + } +} + +impl Font { + pub fn render_text( + &self, + tile_x: u16, + tile_y: u16, + text: &str, + foreground_colour: u8, + background_colour: u8, + _max_width: i32, + bg: &mut RegularMap, + vram_manager: &mut VRamManager, + ) -> i32 { + let mut tiles: Vec> = vec![]; + + let mut render_pixel = |x: u16, y: u16| { + let tile_x = (x / 8) as usize; + let tile_y = (y / 8) as usize; + let inner_x = x % 8; + let inner_y = y % 8; + + if tiles.len() <= tile_x { + tiles.resize_with(tile_x + 1, || vec![]); + } + + let x_dynamic_tiles = &mut tiles[tile_x]; + if x_dynamic_tiles.len() <= tile_y { + x_dynamic_tiles.resize_with(tile_y + 1, || { + vram_manager.new_dynamic_tile().fill_with(background_colour) + }); + } + + let colour = foreground_colour as u32; + + let index = (inner_x + inner_y * 8) as usize; + tiles[tile_x][tile_y].tile_data[index / 8] |= colour << ((index % 8) * 4); + }; + + let mut current_x_pos = 0i32; + let current_y_pos = 0i32; + + for c in text.chars() { + let letter = self.letter(c); + + for letter_y in 0..(letter.height as i32) { + for letter_x in 0..(letter.width as i32) { + let x = current_x_pos + letter_x; + let y = current_y_pos + letter_y; + + let px = letter.data[(letter_x + letter_y * letter.width as i32) as usize]; + + if px > 100 { + render_pixel(x as u16, y as u16); + } + } + } + + current_x_pos += letter.advance_width as i32; + } + + for (x, x_tiles) in tiles.into_iter().enumerate() { + for (y, tile) in x_tiles.into_iter().enumerate() { + bg.set_tile( + vram_manager, + (tile_x + x as u16, tile_y + y as u16).into(), + &tile.tile_set(), + TileSetting::from_raw(tile.tile_index()), + ); + vram_manager.remove_dynamic_tile(tile); + } + } + + 1 + } +} diff --git a/agb/src/display/mod.rs b/agb/src/display/mod.rs index 6d9ceb8..11c4f7b 100644 --- a/agb/src/display/mod.rs +++ b/agb/src/display/mod.rs @@ -23,6 +23,9 @@ pub mod tiled; /// Giving out graphics mode. pub mod video; +mod font; +pub use font::{Font, FontLetter}; + const DISPLAY_CONTROL: MemoryMapped = unsafe { MemoryMapped::new(0x0400_0000) }; pub(crate) const DISPLAY_STATUS: MemoryMapped = unsafe { MemoryMapped::new(0x0400_0004) }; const VCOUNT: MemoryMapped = unsafe { MemoryMapped::new(0x0400_0006) }; diff --git a/agb/src/display/tiled/mod.rs b/agb/src/display/tiled/mod.rs index b1d239f..a0ec32d 100644 --- a/agb/src/display/tiled/mod.rs +++ b/agb/src/display/tiled/mod.rs @@ -6,7 +6,7 @@ mod vram_manager; pub use infinite_scrolled_map::{InfiniteScrolledMap, PartialUpdateStatus}; pub use map::{MapLoan, RegularMap}; pub use tiled0::Tiled0; -pub use vram_manager::{TileFormat, TileIndex, TileSet, VRamManager}; +pub use vram_manager::{DynamicTile, TileFormat, TileIndex, TileSet, VRamManager}; #[derive(Clone, Copy, Debug, Default, PartialEq, Eq)] #[repr(transparent)] diff --git a/agb/src/display/tiled/vram_manager.rs b/agb/src/display/tiled/vram_manager.rs index acf9d39..fdb9538 100644 --- a/agb/src/display/tiled/vram_manager.rs +++ b/agb/src/display/tiled/vram_manager.rs @@ -120,7 +120,21 @@ impl TileReferenceCount { #[non_exhaustive] pub struct DynamicTile<'a> { - pub tile_data: &'a mut [u8], + pub tile_data: &'a mut [u32], +} + +impl DynamicTile<'_> { + pub fn fill_with(self, colour_index: u8) -> Self { + let colour_index = colour_index as u32; + + let mut value = 0; + for i in 0..8 { + value |= colour_index << (i * 4); + } + + self.tile_data.fill(value); + self + } } impl DynamicTile<'_> { @@ -194,8 +208,15 @@ impl VRamManager { TileReferenceCount::new(TileInTileSetReference::new(&tile_set, index as u16)); DynamicTile { - tile_data: &mut tiles - [index * tile_format.tile_size()..(index + 1) * tile_format.tile_size()], + tile_data: unsafe { + slice::from_raw_parts_mut( + tiles + .as_mut_ptr() + .add((index * tile_format.tile_size()) as usize) + .cast(), + tile_format.tile_size() / core::mem::size_of::(), + ) + }, } } diff --git a/agb/src/lib.rs b/agb/src/lib.rs index 245bc69..6fcd1bb 100644 --- a/agb/src/lib.rs +++ b/agb/src/lib.rs @@ -114,6 +114,8 @@ pub use agb_image_converter::include_gfx; pub use agb_image_converter::include_aseprite_inner; +pub use agb_image_converter::include_font; + /// This macro declares the entry point to your game written using `agb`. /// /// It is already included in the template, but your `main` function must be annotated with `#[agb::entry]`, takes 1 argument and never returns.