From d07b907bc7889308890b590d2aaf88dfc44ae616 Mon Sep 17 00:00:00 2001 From: Michael Pavone Date: Sun, 14 Dec 2014 16:45:23 -0800 Subject: WIP effort to update z80 core for code gen changes --- backend.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'backend.h') diff --git a/backend.h b/backend.h index 0106759..97e2ae4 100644 --- a/backend.h +++ b/backend.h @@ -108,7 +108,7 @@ void cycles(cpu_options *opts, uint32_t num); void check_cycles_int(cpu_options *opts, uint32_t address); void check_cycles(cpu_options * opts); -code_ptr gen_mem_fun(cpu_options * opts, memmap_chunk * memmap, uint32_t num_chunks, ftype fun_type); +code_ptr gen_mem_fun(cpu_options * opts, memmap_chunk * memmap, uint32_t num_chunks, ftype fun_type, code_ptr *after_inc); #endif //BACKEND_H_ -- cgit v1.2.3 From 4cad512b6d7ac0f7042b90e1029626fb14788bf0 Mon Sep 17 00:00:00 2001 From: Michael Pavone Date: Wed, 17 Dec 2014 23:03:19 -0800 Subject: Get rest of emulator compiling again with Z80 core enabled --- backend.h | 1 + 1 file changed, 1 insertion(+) (limited to 'backend.h') diff --git a/backend.h b/backend.h index 97e2ae4..a228d13 100644 --- a/backend.h +++ b/backend.h @@ -79,6 +79,7 @@ typedef struct { #define MMAP_ONLY_ODD 0x10 #define MMAP_ONLY_EVEN 0x20 #define MMAP_FUNC_NULL 0x40 +#define MMAP_CUSTOM 0x80 typedef uint16_t (*read_16_fun)(uint32_t address, void * context); typedef uint8_t (*read_8_fun)(uint32_t address, void * context); -- cgit v1.2.3 From 12c73dc400c1b6b61531df4ff0fd1efe4ef7ae12 Mon Sep 17 00:00:00 2001 From: Michael Pavone Date: Mon, 22 Dec 2014 20:55:10 -0800 Subject: Z80 core is sort of working again --- backend.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'backend.h') diff --git a/backend.h b/backend.h index a228d13..131314c 100644 --- a/backend.h +++ b/backend.h @@ -109,7 +109,7 @@ void cycles(cpu_options *opts, uint32_t num); void check_cycles_int(cpu_options *opts, uint32_t address); void check_cycles(cpu_options * opts); -code_ptr gen_mem_fun(cpu_options * opts, memmap_chunk * memmap, uint32_t num_chunks, ftype fun_type, code_ptr *after_inc); +code_ptr gen_mem_fun(cpu_options * opts, memmap_chunk const * memmap, uint32_t num_chunks, ftype fun_type, code_ptr *after_inc); #endif //BACKEND_H_ -- cgit v1.2.3 From e8a9c14ec2e0b75eb1aef1c2a77936c6f7fd8326 Mon Sep 17 00:00:00 2001 From: Michael Pavone Date: Fri, 26 Dec 2014 15:45:31 -0800 Subject: Fix a few bugs introduced in the Z80 core from the adjustments to fit with the code gen refactor --- backend.h | 1 + 1 file changed, 1 insertion(+) (limited to 'backend.h') diff --git a/backend.h b/backend.h index 131314c..fd0f120 100644 --- a/backend.h +++ b/backend.h @@ -108,6 +108,7 @@ void process_deferred(deferred_addr ** head_ptr, void * context, native_addr_fun void cycles(cpu_options *opts, uint32_t num); void check_cycles_int(cpu_options *opts, uint32_t address); void check_cycles(cpu_options * opts); +void check_code_prologue(code_info *code); code_ptr gen_mem_fun(cpu_options * opts, memmap_chunk const * memmap, uint32_t num_chunks, ftype fun_type, code_ptr *after_inc); -- cgit v1.2.3 From 21cbee7575fce46e9730bef9df4d1e7eea819793 Mon Sep 17 00:00:00 2001 From: Michael Pavone Date: Fri, 26 Dec 2014 19:37:59 -0800 Subject: Get Z80 banked access sort of working again --- backend.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'backend.h') diff --git a/backend.h b/backend.h index fd0f120..58f8a47 100644 --- a/backend.h +++ b/backend.h @@ -79,7 +79,7 @@ typedef struct { #define MMAP_ONLY_ODD 0x10 #define MMAP_ONLY_EVEN 0x20 #define MMAP_FUNC_NULL 0x40 -#define MMAP_CUSTOM 0x80 +#define MMAP_BYTESWAP 0x80 typedef uint16_t (*read_16_fun)(uint32_t address, void * context); typedef uint8_t (*read_8_fun)(uint32_t address, void * context); -- cgit v1.2.3 From c61ca95add7b82aadef09aea8b4c48774e079069 Mon Sep 17 00:00:00 2001 From: Michael Pavone Date: Mon, 29 Dec 2014 23:08:39 -0800 Subject: Fix handling of code writes for Z80 core. This seems to get things close to being back to where they were before the big refactor that broke the Z80 core. Some problems remain. Notably the sound driver in Sonic 2 is still quite broken. --- backend.h | 1 + 1 file changed, 1 insertion(+) (limited to 'backend.h') diff --git a/backend.h b/backend.h index 58f8a47..18c3752 100644 --- a/backend.h +++ b/backend.h @@ -62,6 +62,7 @@ typedef struct { uint32_t bus_cycles; int32_t mem_ptr_off; int32_t ram_flags_off; + uint8_t ram_flags_shift; uint8_t address_size; uint8_t byte_swap; uint8_t context_reg; -- cgit v1.2.3 From ec4eed4f35910aa27ca353fceea38155806ef188 Mon Sep 17 00:00:00 2001 From: Michael Pavone Date: Thu, 1 Jan 2015 14:36:55 -0800 Subject: Remove some of the hard coded assumptions about the memory map from the CPU cores --- backend.h | 56 +++++++++++++++++++++++++++++--------------------------- 1 file changed, 29 insertions(+), 27 deletions(-) (limited to 'backend.h') diff --git a/backend.h b/backend.h index 18c3752..c3e0c76 100644 --- a/backend.h +++ b/backend.h @@ -46,33 +46,6 @@ typedef enum { WRITE_8 } ftype; -typedef struct { - uint32_t flags; - native_map_slot *native_code_map; - deferred_addr *deferred; - code_info code; - uint8_t **ram_inst_sizes; - code_ptr save_context; - code_ptr load_context; - code_ptr handle_cycle_limit; - code_ptr handle_cycle_limit_int; - code_ptr handle_code_write; - uint32_t address_mask; - uint32_t max_address; - uint32_t bus_cycles; - int32_t mem_ptr_off; - int32_t ram_flags_off; - uint8_t ram_flags_shift; - uint8_t address_size; - uint8_t byte_swap; - uint8_t context_reg; - uint8_t cycles; - uint8_t limit; - uint8_t scratch1; - uint8_t scratch2; -} cpu_options; - - #define MMAP_READ 0x01 #define MMAP_WRITE 0x02 #define MMAP_CODE 0x04 @@ -100,6 +73,34 @@ typedef struct { write_8_fun write_8; } memmap_chunk; +typedef struct { + uint32_t flags; + native_map_slot *native_code_map; + deferred_addr *deferred; + code_info code; + uint8_t **ram_inst_sizes; + memmap_chunk const *memmap; + code_ptr save_context; + code_ptr load_context; + code_ptr handle_cycle_limit; + code_ptr handle_cycle_limit_int; + code_ptr handle_code_write; + uint32_t memmap_chunks; + uint32_t address_mask; + uint32_t max_address; + uint32_t bus_cycles; + int32_t mem_ptr_off; + int32_t ram_flags_off; + uint8_t ram_flags_shift; + uint8_t address_size; + uint8_t byte_swap; + uint8_t context_reg; + uint8_t cycles; + uint8_t limit; + uint8_t scratch1; + uint8_t scratch2; +} cpu_options; + typedef uint8_t * (*native_addr_func)(void * context, uint32_t address); deferred_addr * defer_address(deferred_addr * old_head, uint32_t address, uint8_t *dest); @@ -112,6 +113,7 @@ void check_cycles(cpu_options * opts); void check_code_prologue(code_info *code); code_ptr gen_mem_fun(cpu_options * opts, memmap_chunk const * memmap, uint32_t num_chunks, ftype fun_type, code_ptr *after_inc); +void * get_native_pointer(uint32_t address, void ** mem_pointers, cpu_options * opts); #endif //BACKEND_H_ -- cgit v1.2.3 From 8ac1e753e1af481b2090a4c1b7395853f30b5e8f Mon Sep 17 00:00:00 2001 From: Michael Pavone Date: Sat, 3 Jan 2015 16:08:23 -0800 Subject: All cycle counters are now based off the master clock. This seems to have messed up Z80 interrupt timing (music in Sonic 2 is too slow for instance), but things are generally working --- backend.h | 1 + 1 file changed, 1 insertion(+) (limited to 'backend.h') diff --git a/backend.h b/backend.h index c3e0c76..7b255f1 100644 --- a/backend.h +++ b/backend.h @@ -89,6 +89,7 @@ typedef struct { uint32_t address_mask; uint32_t max_address; uint32_t bus_cycles; + uint32_t clock_divider; int32_t mem_ptr_off; int32_t ram_flags_off; uint8_t ram_flags_shift; -- cgit v1.2.3 From e6216d5d0a9f8cdb700124558d38cd47e63fbdda Mon Sep 17 00:00:00 2001 From: Michael Pavone Date: Sat, 3 Jan 2015 18:23:04 -0800 Subject: Made the Z80 core more contained by refactoring some code in blastem.c into z80_to_x86.c --- backend.h | 1 + 1 file changed, 1 insertion(+) (limited to 'backend.h') diff --git a/backend.h b/backend.h index 7b255f1..c3ae875 100644 --- a/backend.h +++ b/backend.h @@ -12,6 +12,7 @@ #define INVALID_OFFSET 0xFFFFFFFF #define EXTENSION_WORD 0xFFFFFFFE +#define CYCLE_NEVER 0xFFFFFFFF #if defined(X86_32) || defined(X86_64) typedef struct { -- cgit v1.2.3 From f439d8688758710b74d4909e77ebce6444b8a448 Mon Sep 17 00:00:00 2001 From: Michael Pavone Date: Wed, 14 Jan 2015 09:38:54 -0800 Subject: Removed hardcoded assumptions in M68K core about which parts of the memory map are RAM --- backend.h | 2 ++ 1 file changed, 2 insertions(+) (limited to 'backend.h') diff --git a/backend.h b/backend.h index c3ae875..2b95d06 100644 --- a/backend.h +++ b/backend.h @@ -116,6 +116,8 @@ void check_code_prologue(code_info *code); code_ptr gen_mem_fun(cpu_options * opts, memmap_chunk const * memmap, uint32_t num_chunks, ftype fun_type, code_ptr *after_inc); void * get_native_pointer(uint32_t address, void ** mem_pointers, cpu_options * opts); +uint32_t chunk_size(cpu_options *opts, memmap_chunk const *chunk); +uint32_t ram_size(cpu_options *opts); #endif //BACKEND_H_ -- cgit v1.2.3 From b3e40bd29176e1c4cf53f8542628e48e1eb5dcb0 Mon Sep 17 00:00:00 2001 From: Michael Pavone Date: Mon, 11 May 2015 00:28:47 -0700 Subject: Sync fixes and logging to fix more sync issues --- backend.h | 1 + 1 file changed, 1 insertion(+) (limited to 'backend.h') diff --git a/backend.h b/backend.h index 2b95d06..6c18675 100644 --- a/backend.h +++ b/backend.h @@ -113,6 +113,7 @@ void cycles(cpu_options *opts, uint32_t num); void check_cycles_int(cpu_options *opts, uint32_t address); void check_cycles(cpu_options * opts); void check_code_prologue(code_info *code); +void log_address(cpu_options *opts, uint32_t address, char * format); code_ptr gen_mem_fun(cpu_options * opts, memmap_chunk const * memmap, uint32_t num_chunks, ftype fun_type, code_ptr *after_inc); void * get_native_pointer(uint32_t address, void ** mem_pointers, cpu_options * opts); -- cgit v1.2.3