comparison xband.c @ 1229:a8313793216a

Minor xband fixes
author Michael Pavone <pavone@retrodev.com>
date Thu, 23 Feb 2017 22:09:34 -0800
parents 2e6dcb5c11a2
children 0ed27bb6a658
comparison
equal deleted inserted replaced
1228:2e6dcb5c11a2 1229:a8313793216a
45 xband *x = gen->extra; 45 xband *x = gen->extra;
46 if ((x->control ^ value) & BIT_ROM_HI) { 46 if ((x->control ^ value) & BIT_ROM_HI) {
47 if (value & BIT_ROM_HI) { 47 if (value & BIT_ROM_HI) {
48 gen->m68k->mem_pointers[0] = (uint16_t *)gen->save_storage; 48 gen->m68k->mem_pointers[0] = (uint16_t *)gen->save_storage;
49 gen->m68k->mem_pointers[1] = NULL; 49 gen->m68k->mem_pointers[1] = NULL;
50 gen->m68k->mem_pointers[2] = x->cart_space; 50 gen->m68k->mem_pointers[2] = gen->cart;
51 gen->m68k->mem_pointers[3] = x->cart_space - 0x100000; 51 gen->m68k->mem_pointers[3] = x->cart_space - 0x100000;
52 } else { 52 } else {
53 gen->m68k->mem_pointers[0] = x->cart_space; 53 gen->m68k->mem_pointers[0] = x->cart_space;
54 gen->m68k->mem_pointers[1] = x->cart_space; 54 gen->m68k->mem_pointers[1] = x->cart_space;
55 gen->m68k->mem_pointers[2] = (uint16_t *)gen->save_storage; 55 gen->m68k->mem_pointers[2] = (uint16_t *)gen->save_storage;
180 } 180 }
181 xband *x = get_xband(gen); 181 xband *x = get_xband(gen);
182 if (address < 0x3BFE00) { 182 if (address < 0x3BFE00) {
183 uint32_t offset = (address - 0x3BC001) / 2; 183 uint32_t offset = (address - 0x3BC001) / 2;
184 if (offset < XBAND_REGS) { 184 if (offset < XBAND_REGS) {
185 printf("Regsister read: %X\n", address);
185 return x->regs[offset]; 186 return x->regs[offset];
186 } else { 187 } else {
187 printf("Unhandled register read from address %X\n", address); 188 printf("Unhandled register read from address %X\n", address);
188 return 0x5D; 189 return 0x5D;
189 } 190 }
246 memcpy(x->cart_space + i/2, rom, rom_size); 247 memcpy(x->cart_space + i/2, rom, rom_size);
247 } 248 }
248 if (lock_on && lock_on_size >= 0x200) { 249 if (lock_on && lock_on_size >= 0x200) {
249 memcpy(x->cart_space + 0x80, ((uint16_t *)lock_on) + 0x80, 0x100); 250 memcpy(x->cart_space + 0x80, ((uint16_t *)lock_on) + 0x80, 0x100);
250 } 251 }
252 //observed power on values
253 memset(x->regs, 0x5D, sizeof(x->regs));
254 x->regs[0x7C] = 0;
255 x->regs[0x7D] = 0x80;
256 x->regs[0xB4] = 0x7F;
257
251 byteswap_rom(0x400000, x->cart_space); 258 byteswap_rom(0x400000, x->cart_space);
252 259
253 info.map_chunks = base_chunks + 5; 260 info.map_chunks = base_chunks + 5;
254 info.map = calloc(sizeof(memmap_chunk), info.map_chunks); 261 info.map = calloc(sizeof(memmap_chunk), info.map_chunks);
255 info.map[0].mask = 0xFFFFFF; 262 info.map[0].mask = 0xFFFFFF;