write_log (_T("CD32 FMV mapped @$%x\n"), start);
if (start != fmv_start) {
write_log(_T("CD32 FMV invalid base address!\n"));
- return &fmv_rom_bank;
+ return &expamem_null;
}
+ if (!validate_banks_z2(&fmv_bank, fmv_start >> 16, expamem_z2_size >> 16))
+ return &expamem_null;
+
z = read_rom_name(currprefs.cartfile);
if (!z) {
int ids[] = { 74, 23, -1 };
}
if (!fmv_rom_bank.baseaddr) {
write_log(_T("CD32 FMV without ROM is not supported.\n"));
- return &fmv_rom_bank;
+ return &expamem_null;
}
if (!audioram)
audioram = xmalloc(uae_u8, 262144);
mpeg_decoder = mpeg2_init();
mpeg_info = mpeg2_info(mpeg_decoder);
}
-
fmv_bank.mask = fmv_board_size - 1;
map_banks(&fmv_rom_bank, (fmv_start + ROM_BASE) >> 16, fmv_rom_size >> 16, 0);
map_banks(&fmv_ram_bank, (fmv_start + RAM_BASE) >> 16, fmv_ram_size >> 16, 0);
{
case 0x44:
if (pcib->type == PCI_BRIDGE_PROMETHEUS) {
- map_banks(&pci_io_bank, (expamem_z3_pointer) >> 16, 0xf0000 >> 16, 0);
- map_banks(&pci_mem_bank, (expamem_z3_pointer + 0x100000) >> 16, (511 * 1024 * 1024) >> 16, 0);
- map_banks(&pci_config_bank, (expamem_z3_pointer + 0xf0000) >> 16, 0x10000 >> 16, 0);
+ if (validate_banks_z3(&pci_io_bank, (expamem_z3_pointer) >> 16, expamem_z3_size >> 16)) {
+ map_banks_z3(&pci_io_bank, (expamem_z3_pointer) >> 16, 0xf0000 >> 16);
+ map_banks_z3(&pci_mem_bank, (expamem_z3_pointer + 0x100000) >> 16, (511 * 1024 * 1024) >> 16);
+ map_banks_z3(&pci_config_bank, (expamem_z3_pointer + 0xf0000) >> 16, 0x10000 >> 16);
+ }
pcib->baseaddress_offset = pcib->baseaddress;
pcib->io_offset = expamem_z3_pointer;
} else if (pcib->type == PCI_BRIDGE_MEDIATOR) {
- map_banks(&pci_mem_bank, expamem_z3_pointer >> 16, expamem_z3_size >> 16, 0);
+ map_banks_z3(&pci_mem_bank, expamem_z3_pointer >> 16, expamem_z3_size >> 16);
pcib->baseaddress_offset = 0;
}
pcib->baseaddress = expamem_z3_pointer;
{
case 0x44:
// Mediator 4000 IO
- map_banks(pcib->bank_2, expamem_z3_pointer >> 16, 0x800000 >> 16, 0);
- map_banks(&pci_config_bank, (expamem_z3_pointer + 0x800000) >> 16, 0x400000 >> 16, 0);
- map_banks(&pci_io_bank, (expamem_z3_pointer + 0xc00000) >> 16, 0x400000 >> 16, 0);
+ if (validate_banks_z3(&pci_io_bank, expamem_z3_pointer >> 16, expamem_z3_size >> 16)) {
+ map_banks(pcib->bank_2, expamem_z3_pointer >> 16, 0x800000 >> 16, 0);
+ map_banks(&pci_config_bank, (expamem_z3_pointer + 0x800000) >> 16, 0x400000 >> 16, 0);
+ map_banks(&pci_io_bank, (expamem_z3_pointer + 0xc00000) >> 16, 0x400000 >> 16, 0);
+ }
pcib->baseaddress_2 = expamem_z3_pointer;
pcib->baseaddress_end_2 = expamem_z3_pointer + expamem_z3_size;
pcib->board_size_2 = expamem_z3_size;