void c64_256k_cia_set_vbank(int ciabank) { cia_vbank=ciabank; video_bank_segment=((c64_256k_PRB&0xc0)>>4)+cia_vbank; vicii_set_ram_base(c64_256k_ram+(video_bank_segment*0x4000)); mem_set_vbank(0); }
void plus256k_reset(void) { plus256k_reg = 0; plus256k_video_bank = 0; plus256k_low_bank = 0; plus256k_high_bank = 0; plus256k_protected = 0; if (plus256k_enabled) { vicii_set_ram_base(plus256k_ram); } }
void REGPARM2 plus256k_vicii_store(WORD addr, BYTE value) { int new_bank; if (plus256k_protected == 0) { plus256k_reg = value; plus256k_high_bank = (value & 0xc0) >> 6; plus256k_low_bank = value & 3; plus256k_protected = (value & 0x10) >> 4; new_bank = (value & 0xc) >> 2; if (new_bank != plus256k_video_bank) { vicii_set_ram_base(plus256k_ram + (new_bank * 0x10000)); plus256k_video_bank = new_bank; } }
static int plus256k_deactivate(void) { if (!util_check_null_string(plus256k_filename)) { if (util_file_save(plus256k_filename, plus256k_ram, 0x40000) < 0) { log_message(plus256k_log, "Writing PLUS256K image %s failed.", plus256k_filename); return -1; } log_message(plus256k_log, "Writing PLUS256K image %s.", plus256k_filename); } vicii_set_ram_base(mem_ram); lib_free(plus256k_ram); plus256k_ram = NULL; remove_cpu_lines_lock(); return 0; }
void c64_256k_reset(void) { c64_256k_DDA=0; c64_256k_DDB=0; c64_256k_PRA=0xdc; c64_256k_PRB=0xfe; c64_256k_CRA=4; c64_256k_CRB=4; cia_vbank=0; video_bank_segment=0xc; c64_256k_segment0=0xc; c64_256k_segment1=0xd; c64_256k_segment2=0xe; c64_256k_segment3=0xf; if (c64_256k_enabled) { vicii_set_ram_base(c64_256k_ram+0x30000); mem_set_vbank(0); } }