// ---------------------------------------------------------------------------- // WriteBank // ---------------------------------------------------------------------------- static void cartridge_WriteBank(word address, byte bank) { uint offset = cartridge_GetBankOffset(bank); if(offset < cartridge_size) { memory_WriteROM(address, 16384, cartridge_buffer + offset); cartridge_bank = bank; } }
// ---------------------------------------------------------------------------- // WriteBank // ---------------------------------------------------------------------------- static void cartridge_WriteBank(uint16_t address, uint8_t bank) { uint32_t offset = cartridge_GetBankOffset(bank); if(offset < cartridge_size) { memory_WriteROM(address, 16384, cartridge_buffer + offset); cartridge_bank = bank; } }
// ---------------------------------------------------------------------------- // Store // ---------------------------------------------------------------------------- void cartridge_Store( ) { switch(cartridge_type) { case CARTRIDGE_TYPE_NORMAL: memory_WriteROM(65536 - cartridge_size, cartridge_size, cartridge_buffer); break; case CARTRIDGE_TYPE_SUPERCART: if(cartridge_GetBankOffset(7) < cartridge_size) { memory_WriteROM(49152, 16384, cartridge_buffer + cartridge_GetBankOffset(7)); } break; case CARTRIDGE_TYPE_SUPERCART_LARGE: if(cartridge_GetBankOffset(8) < cartridge_size) { memory_WriteROM(49152, 16384, cartridge_buffer + cartridge_GetBankOffset(8)); memory_WriteROM(16384, 16384, cartridge_buffer + cartridge_GetBankOffset(0)); } break; case CARTRIDGE_TYPE_SUPERCART_RAM: if(cartridge_GetBankOffset(7) < cartridge_size) { memory_WriteROM(49152, 16384, cartridge_buffer + cartridge_GetBankOffset(7)); memory_ClearROM(16384, 16384); } break; case CARTRIDGE_TYPE_SUPERCART_ROM: if(cartridge_GetBankOffset(7) < cartridge_size && cartridge_GetBankOffset(6) < cartridge_size) { memory_WriteROM(49152, 16384, cartridge_buffer + cartridge_GetBankOffset(7)); memory_WriteROM(16384, 16384, cartridge_buffer + cartridge_GetBankOffset(6)); } break; case CARTRIDGE_TYPE_ABSOLUTE: memory_WriteROM(16384, 16384, cartridge_buffer); memory_WriteROM(32768, 32768, cartridge_buffer + cartridge_GetBankOffset(2)); break; case CARTRIDGE_TYPE_ACTIVISION: if(122880 < cartridge_size) { memory_WriteROM(40960, 16384, cartridge_buffer); memory_WriteROM(16384, 8192, cartridge_buffer + 106496); memory_WriteROM(24576, 8192, cartridge_buffer + 98304); memory_WriteROM(32768, 8192, cartridge_buffer + 122880); memory_WriteROM(57344, 8192, cartridge_buffer + 114688); } break; } }
// ---------------------------------------------------------------------------- // Store // ---------------------------------------------------------------------------- void bios_Store( ) { if(bios_data != NULL && bios_enabled) { memory_WriteROM(65536 - bios_size, bios_size, bios_data); } }