tpak cleanup (#278)

* tpak cleanup

* more

* more
This commit is contained in:
Logan McNaughton 2025-02-23 16:10:53 +01:00 committed by GitHub
parent fb2cf7fcb9
commit f6349f13da
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -33,13 +33,12 @@ fn write_mbc3(
cart.ram_enabled = value & 0xf == 0xa;
} else if address < 0x4000 {
let bank = value & 0x7f;
if bank == 0 {
cart.rom_bank = bank as u16;
if cart.rom_bank == 0 {
cart.rom_bank = 1;
} else {
cart.rom_bank = bank as u16;
}
} else if address < 0x6000 {
cart.ram_bank = value as u16;
cart.ram_bank = (value & 0xf) as u16;
} else if address < 0x8000 {
println!("MBC3 RTC latch")
} else if (0xa000..0xc000).contains(&address) {
@ -48,9 +47,8 @@ fn write_mbc3(
}
if cart.ram_bank < 0x8 {
let banked_address = (cart.ram_bank << 13) | (address & 0x1FFF);
for i in 0..size {
cart.ram[banked_address as usize + i] = pif_ram[data + i];
}
cart.ram[banked_address as usize..banked_address as usize + size]
.copy_from_slice(&pif_ram[data..data + size]);
} else {
panic!("Unsupported ram bank {:x}", cart.ram_bank);
}
@ -67,15 +65,14 @@ fn read_mbc3(
size: usize,
) {
if address < 0x4000 {
for i in 0..size {
pif_ram[data + i] = cart.rom[address as usize + i];
}
let banked_address = address & 0x3FFF;
pif_ram[data..data + size]
.copy_from_slice(&cart.rom[banked_address as usize..banked_address as usize + size]);
} else if address < 0x8000 {
let banked_address = (cart.rom_bank << 14) | (address & 0x3FFF);
for i in 0..size {
pif_ram[data + i] = cart.rom[banked_address as usize + i];
}
} else if address < 0xc000 {
pif_ram[data..data + size]
.copy_from_slice(&cart.rom[banked_address as usize..banked_address as usize + size]);
} else if (0xa000..0xc000).contains(&address) {
if !cart.ram_enabled {
for i in 0..size {
pif_ram[data + i] = 0xff;
@ -84,9 +81,9 @@ fn read_mbc3(
}
if cart.ram_bank < 0x8 {
let banked_address = (cart.ram_bank << 13) | (address & 0x1FFF);
for i in 0..size {
pif_ram[data + i] = cart.ram[banked_address as usize + i];
}
pif_ram[data..data + size].copy_from_slice(
&cart.ram[banked_address as usize..banked_address as usize + size],
);
} else {
panic!("Unsupported ram bank {:x}", cart.ram_bank);
}
@ -117,9 +114,8 @@ fn write_mbc5(
}
let banked_address = (cart.ram_bank << 13) | (address & 0x1FFF);
for i in 0..size {
cart.ram[banked_address as usize + i] = pif_ram[data + i];
}
cart.ram[banked_address as usize..banked_address as usize + size]
.copy_from_slice(&pif_ram[data..data + size]);
} else {
panic!("Unsupported write address {:x}", address);
}
@ -133,14 +129,13 @@ fn read_mbc5(
size: usize,
) {
if address < 0x4000 {
for i in 0..size {
pif_ram[data + i] = cart.rom[address as usize + i];
}
let banked_address = address & 0x3FFF;
pif_ram[data..data + size]
.copy_from_slice(&cart.rom[banked_address as usize..banked_address as usize + size]);
} else if address < 0x8000 {
let banked_address = (cart.rom_bank << 14) | (address & 0x3FFF);
for i in 0..size {
pif_ram[data + i] = cart.rom[banked_address as usize + i];
}
pif_ram[data..data + size]
.copy_from_slice(&cart.rom[banked_address as usize..banked_address as usize + size]);
} else if (0xa000..0xc000).contains(&address) {
if !cart.ram_enabled {
for i in 0..size {
@ -150,9 +145,8 @@ fn read_mbc5(
}
let banked_address = (cart.ram_bank << 13) | (address & 0x1FFF);
for i in 0..size {
pif_ram[data + i] = cart.ram[banked_address as usize + i];
}
pif_ram[data..data + size]
.copy_from_slice(&cart.ram[banked_address as usize..banked_address as usize + size]);
} else {
panic!("Unsupported read address {:x}", address);
}