mirror of
https://github.com/italicsjenga/agb.git
synced 2025-01-09 08:31:33 +11:00
Try using memcpy4 for copying the tile data
This commit is contained in:
parent
d3c32ce351
commit
7431086b14
|
@ -4,6 +4,14 @@ global_asm!(include_str!("macros.inc"));
|
||||||
global_asm!(include_str!("memcpy.s"));
|
global_asm!(include_str!("memcpy.s"));
|
||||||
global_asm!(include_str!("memset.s"));
|
global_asm!(include_str!("memset.s"));
|
||||||
|
|
||||||
|
extern "C" {
|
||||||
|
fn __aeabi_memcpy4(dest: *mut u32, src: *const u32, n: usize);
|
||||||
|
}
|
||||||
|
|
||||||
|
pub(crate) unsafe fn memcpy(dest: *mut u32, src: *const u32, n: usize) {
|
||||||
|
__aeabi_memcpy4(dest, src, n);
|
||||||
|
}
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod test {
|
mod test {
|
||||||
mod memset {
|
mod memset {
|
||||||
|
|
|
@ -4,6 +4,7 @@ use alloc::{slice, vec::Vec};
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
agb_alloc::{block_allocator::BlockAllocator, bump_allocator::StartEnd},
|
agb_alloc::{block_allocator::BlockAllocator, bump_allocator::StartEnd},
|
||||||
|
agbabi,
|
||||||
display::palette16,
|
display::palette16,
|
||||||
dma::dma_copy16,
|
dma::dma_copy16,
|
||||||
hash_map::{Entry, HashMap},
|
hash_map::{Entry, HashMap},
|
||||||
|
@ -380,17 +381,12 @@ impl VRamManager {
|
||||||
let tile_offset = (tile_id as usize) * tile_size;
|
let tile_offset = (tile_id as usize) * tile_size;
|
||||||
let tile_slice = &tile_set.tiles[tile_offset..(tile_offset + tile_size)];
|
let tile_slice = &tile_set.tiles[tile_offset..(tile_offset + tile_size)];
|
||||||
|
|
||||||
let tile_size_in_half_words = tile_slice.len() / 2;
|
let tile_size = tile_slice.len();
|
||||||
|
|
||||||
let target_location = tile_reference.0.as_ptr() as *mut _;
|
let target_location = tile_reference.0.as_ptr() as *mut _;
|
||||||
|
|
||||||
unsafe {
|
unsafe {
|
||||||
dma_copy16(
|
agbabi::memcpy(target_location, tile_slice.as_ptr() as *const _, tile_size);
|
||||||
tile_slice.as_ptr() as *const u16,
|
}
|
||||||
target_location,
|
|
||||||
tile_size_in_half_words,
|
|
||||||
);
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Copies raw palettes to the background palette without any checks.
|
/// Copies raw palettes to the background palette without any checks.
|
||||||
|
|
Loading…
Reference in a new issue