Mercurial > repos > blastem
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; |