Mercurial > repos > blastem
comparison z80_to_x86.c @ 1222:60d73f42a606
Hacky fix so sound works in Project MD again
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Tue, 14 Feb 2017 05:14:10 -0800 |
parents | 2a799f24563f |
children | 15c5be05e6a9 |
comparison
equal
deleted
inserted
replaced
1221:53fc7efdfdab | 1222:60d73f42a606 |
---|---|
2937 ram_flags_off = final_off >> (opts->gen.ram_flags_shift + 3); | 2937 ram_flags_off = final_off >> (opts->gen.ram_flags_shift + 3); |
2938 context->ram_code_flags[ram_flags_off] |= 1 << ((final_off >> opts->gen.ram_flags_shift) & 7); | 2938 context->ram_code_flags[ram_flags_off] |= 1 << ((final_off >> opts->gen.ram_flags_shift) & 7); |
2939 } | 2939 } |
2940 //calculate the lowest alias for this address | 2940 //calculate the lowest alias for this address |
2941 address = mem_chunk->start + ((address - mem_chunk->start) & mem_chunk->mask); | 2941 address = mem_chunk->start + ((address - mem_chunk->start) & mem_chunk->mask); |
2942 } else { | |
2943 address &= opts->gen.address_mask; | |
2942 } | 2944 } |
2943 | 2945 |
2944 native_map_slot *map = opts->gen.native_code_map + address / NATIVE_CHUNK_SIZE; | 2946 native_map_slot *map = opts->gen.native_code_map + address / NATIVE_CHUNK_SIZE; |
2945 if (!map->base) { | 2947 if (!map->base) { |
2946 map->base = native_address; | 2948 map->base = native_address; |
2955 map->base = native_address; | 2957 map->base = native_address; |
2956 map->offsets = malloc(sizeof(int32_t) * NATIVE_CHUNK_SIZE); | 2958 map->offsets = malloc(sizeof(int32_t) * NATIVE_CHUNK_SIZE); |
2957 memset(map->offsets, 0xFF, sizeof(int32_t) * NATIVE_CHUNK_SIZE); | 2959 memset(map->offsets, 0xFF, sizeof(int32_t) * NATIVE_CHUNK_SIZE); |
2958 } | 2960 } |
2959 | 2961 |
2960 if (map->offsets[address % NATIVE_CHUNK_SIZE] == INVALID_OFFSET) { | 2962 //TODO: better handling of potentially overlapping instructions |
2961 map->offsets[address % NATIVE_CHUNK_SIZE] = EXTENSION_WORD; | 2963 map->offsets[address % NATIVE_CHUNK_SIZE] = EXTENSION_WORD; |
2962 } | |
2963 } | 2964 } |
2964 } | 2965 } |
2965 | 2966 |
2966 #define INVALID_INSTRUCTION_START 0xFEEDFEED | 2967 #define INVALID_INSTRUCTION_START 0xFEEDFEED |
2967 | 2968 |