clean up read_cart_word (#865)

* clean up read_cart_word

* more

* more
This commit is contained in:
Logan McNaughton 2026-05-10 11:28:48 +02:00 committed by GitHub
parent fe23e4bad9
commit a5b7561c51
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -6,22 +6,14 @@ use sha2::{Digest, Sha256};
pub const CART_MASK: usize = 0xFFFFFFF;
fn read_cart_word(device: &device::Device, address: usize) -> u32 {
let mut data: [u8; 4] = [0; 4];
for i in 0..4 {
if let Some(value) = device
.ui
.storage
.saves
.romsave
.data
.get(&(address as u32 + i))
{
data[i as usize] = *value;
} else {
data[i as usize] = *device.cart.rom.get(address + i as usize).unwrap_or(&0);
}
}
u32::from_be_bytes(data)
let romsave = &device.ui.storage.saves.romsave.data;
let rom = &device.cart.rom;
u32::from_be_bytes(std::array::from_fn(|i| {
romsave
.get(&((address + i) as u32))
.copied()
.unwrap_or_else(|| *rom.get(address + i).unwrap_or(&0))
}))
}
pub fn read_mem_fast(
@ -113,19 +105,15 @@ pub fn dma_write(
let mut i = dram_addr;
let mut j = cart_addr;
while i < dram_addr + length {
if let Some(value) = device.ui.storage.saves.romsave.data.get(&j) {
*device
.rdram
.mem
.get_mut(i as usize ^ device.byte_swap)
.unwrap_or(&mut 0) = *value;
*device
.rdram
.mem
.get_mut(i as usize ^ device.byte_swap)
.unwrap_or(&mut 0) = if let Some(value) = device.ui.storage.saves.romsave.data.get(&j) {
*value
} else {
*device
.rdram
.mem
.get_mut(i as usize ^ device.byte_swap)
.unwrap_or(&mut 0) = *device.cart.rom.get(j as usize).unwrap_or(&0);
}
*device.cart.rom.get(j as usize).unwrap_or(&0)
};
i += 1;
j += 1;
}