log z80_to_x86.c @ 1952:42c12d141f6e

age author description
Fri, 03 Apr 2020 23:47:57 -0700 Michael Pavone Fix bug in in (c) instruction in Z80 dynarec
Tue, 25 Feb 2020 20:03:04 -0800 Michael Pavone Fix edge case in Z80 interrupt handling. Fixes music in Metal Blast 2277
Sun, 07 Apr 2019 00:06:29 -0700 Michael Pavone Get 64-bit builds working for Windows target
Mon, 25 Feb 2019 21:22:14 -0800 Michael Pavone More instruction timing fixes in old Z80 core
Tue, 19 Feb 2019 22:59:14 -0800 Michael Pavone Fix cycle counts of a few instructions in old Z80 core
Fri, 22 Jun 2018 23:10:27 -0700 Michael Pavone Fix some memory errors (mostly leaks) identified by valgrind
Sun, 08 Apr 2018 12:26:18 -0700 Michael Pavone Fix timing for Z80 JP cc, nn instruction
Thu, 19 Oct 2017 03:21:24 -0700 Michael Pavone Implemented Z80 IM 2 and attempted correct intack cycle delay
Tue, 29 Aug 2017 00:30:20 -0700 Michael Pavone Ensure extra_pc is NULL when resuming a save state
Thu, 24 Aug 2017 19:28:56 -0700 Michael Pavone Allow actually saving a save state in more Z80 states. Save busreq/reset state in bus arbiter section for "native" save states
Wed, 16 Aug 2017 20:06:28 -0700 Michael Pavone Added save states to SMS emulation
Sun, 06 Aug 2017 00:06:36 -0700 Michael Pavone WIP - New savestate format
Sun, 28 May 2017 21:02:47 -0700 Michael Pavone Implemented Z80 NMI
Thu, 02 Mar 2017 22:18:15 -0800 Michael Pavone Fix implementation of in c and out c on 32-bit x86
Sun, 19 Feb 2017 17:37:25 -0800 Michael Pavone Fix loading of the R register from the in memory context
Sun, 19 Feb 2017 12:41:57 -0800 Michael Pavone Ported correct but inefficient overlapping instruction handling from 68K core to Z80 core. Fixed remaining stack alignment issue for Z80 breakpoints on 64-bit. Probably still needs fixing for 32-bit
Tue, 14 Feb 2017 05:14:10 -0800 Michael Pavone Hacky fix so sound works in Project MD again
Wed, 18 Jan 2017 07:29:06 -0800 Michael Pavone Fix regression in tracking of 3+ byte instructions in Z80 core
Tue, 03 Jan 2017 21:37:36 -0800 Michael Pavone Fix implementation of Z80 HALT instruction
Mon, 02 Jan 2017 23:35:40 -0800 Michael Pavone Invalidate translated code on a cartridge bank change in SMS mode. Fix handling of bank 0
Sun, 01 Jan 2017 01:10:44 -0800 Michael Pavone Partial fix for Z80 debugger brokeness introduced with stack alignment changes
Wed, 28 Dec 2016 20:39:27 -0800 Michael Pavone Remove memory map assumptions from Z80 core and move a little bit of logic to the generic backend.c so it can be shared between CPU cores
Thu, 22 Dec 2016 19:51:25 -0800 Michael Pavone Initial support for Genesis/Megadrive PBC mode. VDP still needs Mode 4 to be useful.
Thu, 22 Dec 2016 10:51:33 -0800 Michael Pavone More cleanup in preparation for SMS/Mark III support
Wed, 14 Dec 2016 23:27:42 -0800 Michael Pavone Fix a couple of timing regressions in Z80 core
Mon, 01 Aug 2016 19:24:51 -0700 Michael Pavone Implemented IND and INDR
Mon, 01 Aug 2016 19:18:50 -0700 Michael Pavone Implemented INIR
Mon, 01 Aug 2016 09:48:10 -0700 Michael Pavone Implement INI
Sat, 30 Jul 2016 16:01:57 -0700 Michael Pavone Fix handling of undocumented flag bits for ADD in 32-bit builds
Sat, 30 Jul 2016 14:03:25 -0700 Michael Pavone Fixed bug introduced in NEG with addition of undocumented flags
Fri, 29 Jul 2016 22:06:45 -0700 Michael Pavone Implement undocumented flag bits for shift instructions
Fri, 29 Jul 2016 20:59:19 -0700 Michael Pavone Implement undocumented flag bits for RLD and RRD
Fri, 29 Jul 2016 09:23:59 -0700 Michael Pavone Implemented undocumented flag bits for rotate instructions
Fri, 29 Jul 2016 09:14:32 -0700 Michael Pavone Implement undocumented flag bits for block LD instructions
Fri, 29 Jul 2016 00:17:40 -0700 Michael Pavone Implement undocumented flag bits for block CP instructions
Thu, 28 Jul 2016 23:37:46 -0700 Michael Pavone Implement undoumented flag bits for DAA, CPL, SCF and CCF
Thu, 28 Jul 2016 22:59:09 -0700 Michael Pavone Partial support for undocumented flag bits
Wed, 27 Jul 2016 23:08:05 -0700 Michael Pavone More efficient register usage in 32-bit mode
Wed, 27 Jul 2016 22:46:22 -0700 Michael Pavone Change cycle tracking code for Z80 core to only use a single register. Store low 7 bits of R in a reg and increment it appropriately.
Tue, 26 Jul 2016 23:12:23 -0700 Michael Pavone Fix DAA and implement half-carry for remaining instructions. Z80 core now passes ZEXDOC!
Tue, 26 Jul 2016 00:11:33 -0700 Michael Pavone Implement half-carry for INC, DEC and NEG
Mon, 25 Jul 2016 23:16:04 -0700 Michael Pavone Properly handle redundant prefixes
Sun, 24 Jul 2016 18:53:22 -0700 Michael Pavone Implement block CP instructions. Fix bug that would corrupt context reg in DAA. Fix flag values for when LD block instructions are interrupted part way through.
Sun, 24 Jul 2016 17:17:59 -0700 Michael Pavone Implement Z80 DAA. Implement half-carry flag for the rest of the "easy" cases. Implement flags for IN instruction. Fix implementation of IN for IN F, (C) case
Sat, 23 Jul 2016 12:43:52 -0700 Michael Pavone Implement Z80 block OUT instructions. Fixes Power Monger
Wed, 20 Apr 2016 23:19:13 -0700 Michael Pavone Fix bug in Z80 rrd implementation. This fixes the annoying high pitched wine in Afterburner II.
Wed, 20 Apr 2016 23:00:37 -0700 Michael Pavone Fix crash bug in Z80 debugger introduced with stack alignment changes
Fri, 27 Nov 2015 10:47:35 -0800 Michael Pavone Replace some hard-coded instruction length assumptions with a calculation so they will work properly on both 32-bit and 64-bit hosts
Thu, 26 Nov 2015 22:30:41 -0800 Michael Pavone Fix for Z80 retranslation post alignment rework
Thu, 26 Nov 2015 00:10:36 -0800 Michael Pavone Z80 core is now slightly less broken
Wed, 25 Nov 2015 20:18:34 -0800 Michael Pavone Get Z80 core sort of working again post alignment change
Wed, 25 Nov 2015 08:40:45 -0800 Michael Pavone Partially working change to do proper stack alignment rather than doing a lame alignment check when calling a C compile dfunction. 68K core seems okay, but Z80 is busted.
Fri, 13 Nov 2015 22:56:59 -0800 Michael Pavone Selecting a second game from the menu now works
Wed, 04 Nov 2015 19:14:39 -0800 Michael Pavone Improve timing of Z80 busack. Fixes a crash in Barkley: Shut Up and Jam. Also vastly improves the audio output of Stuck Somewhere in Time
Sat, 31 Oct 2015 13:49:27 -0700 Michael Pavone Small tweaks to timing of 68K/Z80 interactions based on latest tests
Sat, 31 Oct 2015 01:07:56 -0700 Michael Pavone Set flags for ld a, r
Thu, 29 Oct 2015 23:12:01 -0700 Michael Pavone Fix timing of certain variants of LD
Thu, 29 Oct 2015 21:42:10 -0700 Michael Pavone Fix timing of IM instruction
Fri, 18 Sep 2015 19:54:02 -0700 Michael Pavone Fixed a copy pasta error in the implementation of LDD and LDDR. HL should be decremented and not incremented in those instructions.
Sat, 01 Aug 2015 17:05:51 -0700 Michael Pavone Implement half carry for a couple of the trivial cases
Wed, 29 Jul 2015 00:03:36 -0700 Michael Pavone Added support for an IO memory map in Z80 core
Sat, 25 Jul 2015 18:22:07 -0700 Michael Pavone Use a new fatal_error function instead of calling fprintf and exit for fatal errors. This new function more gracefully handles the case in which BlastEm was not started from a terminal or disconnected from ther terminal (Windows).
Sat, 27 Jun 2015 12:17:18 -0700 Michael Pavone Cleanup some warnings under clang through a combination of code fixes and supressing specific warnings
Tue, 26 May 2015 20:00:50 -0700 Michael Pavone Fixes for the 32-bit build accidentally introduced a bug into the 64-bit build, this commit fixes the regression
Mon, 25 May 2015 18:56:22 -0700 Michael Pavone Add a define in both the source and Makefile for enabling logging of z80 instruction address/cycle counts. Fix Z80 in/out instructions to eliminate assumptions about which registers are stored in native regs. Fix read_16 to not corrupt the low byte when the read has to call into a C function.
Mon, 25 May 2015 17:08:56 -0700 Michael Pavone Fix RLD and RRD for the case in which HL does not map to a native register
Sun, 24 May 2015 21:11:18 -0700 Michael Pavone Z80 test cases that passed on 64-bit now pass on 32-bit
Sun, 24 May 2015 15:05:18 -0700 Michael Pavone More bugfixes for the 32-bit build of the Z80 core
Sat, 23 May 2015 20:26:20 -0700 Michael Pavone Fix a bunch of assumptions about which Z80 registers are stored in native registers to make the x86-32 build less broken
Sun, 17 May 2015 20:03:27 -0700 Michael Pavone Make sure z80_save_reg does nothing when there is no register in the reg field of the instruction. This fixes a bug that corrupted SP in the MDEM 2011 demo
Sun, 17 May 2015 19:14:41 -0700 Michael Pavone Call z80_handle_deferred after generating an insruction handler so that instructions like rst work correctly
Sun, 17 May 2015 15:40:31 -0700 Michael Pavone Fix crash bug in Z80 interpreter
Tue, 12 May 2015 19:14:09 -0700 Michael Pavone Save PC to context struct when syncing Z80 at instruction start. This fixes saving savestates and probably the Z80 debugger as well
Mon, 11 May 2015 20:34:33 -0700 Michael Pavone Remove/comment verbose logging added for tracking down sync bug
Mon, 11 May 2015 00:28:47 -0700 Michael Pavone Sync fixes and logging to fix more sync issues
Sun, 04 Jan 2015 23:35:55 -0800 Michael Pavone Merge
Sat, 03 Jan 2015 21:35:23 -0800 Michael Pavone When going directly from reset to busreq, do not allow the Z80 to run
Sat, 03 Jan 2015 18:49:07 -0800 Michael Pavone Restore Z80 interrupt pulse duration and make a small improvement to debug print output
Sat, 03 Jan 2015 18:23:04 -0800 Michael Pavone Made the Z80 core more contained by refactoring some code in blastem.c into z80_to_x86.c
Sat, 03 Jan 2015 16:08:23 -0800 Michael Pavone 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
Fri, 02 Jan 2015 13:47:34 -0800 Michael Pavone In theory, the Z80 core should work on 32-bit builds now; however, I suspect there is some code that cannot deal with most of the Z80 registers not having a native register so more work will be needed
Fri, 02 Jan 2015 13:14:09 -0800 Michael Pavone Added functions to gen_x86 for saving and restoring callee save registers to better abstract over ABI differences between x86 and x86-64
Fri, 02 Jan 2015 12:04:58 -0800 Michael Pavone Use SZ_PTR instead of SZ_Q in Z80 core for 32-bit compat
Fri, 02 Jan 2015 00:19:10 -0800 Michael Pavone Sync Z80 when taking an interrupt so that int_cycle gets updated
Thu, 01 Jan 2015 23:37:24 -0800 Michael Pavone Remove dedicated registers for Z80 bank reg and Z80 bank pointer as they are no longer used
Thu, 01 Jan 2015 22:18:32 -0800 Michael Pavone Add the 3 cycle delay back in to Z80 bank area access
Thu, 01 Jan 2015 20:26:22 -0800 Michael Pavone Minor Z80 core cleanup
Thu, 01 Jan 2015 20:07:47 -0800 Michael Pavone Use call_args and call_args_abi in Z80 core
Thu, 01 Jan 2015 14:36:55 -0800 Michael Pavone Remove some of the hard coded assumptions about the memory map from the CPU cores
Tue, 30 Dec 2014 19:11:34 -0800 Michael Pavone Merge
Tue, 16 Dec 2014 01:10:54 -0800 Michael Pavone Fix flags for rra, rrca, rla and rlca. Fix timing for rr, rrc, rl and rlc when using IX or IY. Fix access to I and R registers (R still needs to be made 7-bit though). Fix flags for ld a, i. The fix for access to I fixes PCM playback in Titan Overdrive and music playback in Crackdown.
Wed, 03 Dec 2014 09:30:01 -0800 Michael Pavone Temporarily comment out code to translate Z80 instructions in place as in rare cases it can stomp the next instruction if a branch goes from a short from to a long one
Sat, 21 Jun 2014 09:36:15 -0700 Michael Pavone Fix Z80 interrupts
Fri, 20 Jun 2014 07:57:32 -0700 Michael Pavone Added some preliminary support for interpreting Z80 code from non-RAM addresses
Thu, 19 Jun 2014 19:50:16 -0700 Michael Pavone Properly handle Z80 breakpoints on self-modifying code and setting Z80 breakpoints before the Z80 program has been loaded
Thu, 19 Jun 2014 08:14:35 -0700 Michael Pavone Slight cleanup of vint handling on the Z80
Mon, 29 Dec 2014 23:08:39 -0800 Michael Pavone 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.
Fri, 26 Dec 2014 15:45:31 -0800 Michael Pavone Fix a few bugs introduced in the Z80 core from the adjustments to fit with the code gen refactor
Fri, 26 Dec 2014 12:56:53 -0800 Michael Pavone Fix an off-by-one error in a branch destination in the generation of handle_cycle_limit for the Z80
Fri, 26 Dec 2014 12:52:13 -0800 Michael Pavone Update code->cur before calling z80_get_address_trans in z80_retranslate_inst to avoid any newly translated instructions from being placed in the "buffer zone". Save the current value of the code_info struct for placing the final jmp instruction in the correct place
Fri, 26 Dec 2014 12:34:41 -0800 Michael Pavone Add in missing generated Z80 helper functions. Fix a small bug in Z80_HALT. Fix generation of save and load context for Z80
Mon, 22 Dec 2014 20:55:10 -0800 Michael Pavone Z80 core is sort of working again
Wed, 17 Dec 2014 23:03:19 -0800 Michael Pavone Get rest of emulator compiling again with Z80 core enabled
Wed, 17 Dec 2014 09:53:51 -0800 Michael Pavone Get Z80 core back into compileable state
Sun, 14 Dec 2014 16:45:23 -0800 Michael Pavone WIP effort to update z80 core for code gen changes
Tue, 17 Jun 2014 01:50:29 -0400 Mike Pavone blastem builds and almost works on OS X now
Mon, 27 Jan 2014 22:12:22 -0800 Michael Pavone Fix timing of certain ld and jp instructions in the Z80 core
Mon, 06 Jan 2014 22:54:05 -0800 Michael Pavone The local clone on my laptop got messed up and some changes had not been pushed. This commit represents the status of the working copy from that clone. It unfortunately contains some changes that I did not intend to commit yet, but this seems like the best option at the moment.
Tue, 10 Sep 2013 23:31:08 -0700 Mike Pavone Added copyright notice to source files and added GPL license text in COPYING
Sat, 29 Jun 2013 17:15:08 -0700 Mike Pavone Add support for loading GST format savestates
Mon, 24 Jun 2013 21:32:25 -0700 Mike Pavone Fix access to int_enable_cycle in EI
Sat, 15 Jun 2013 23:10:48 -0700 Mike Pavone Fix DI
Fri, 14 Jun 2013 23:27:01 -0700 Mike Pavone Fix adc and sbc
Thu, 13 Jun 2013 22:23:15 -0700 Mike Pavone Fix LDIR
Tue, 11 Jun 2013 23:09:57 -0700 Mike Pavone Bail out on attempt to run code from bank area until it is properly supported
Sat, 08 Jun 2013 11:31:52 -0700 Mike Pavone Use a call instruction to figure out the original native address when retranslating so that it does not get lost when the byte transforms from a instruction word to extension word
Thu, 06 Jun 2013 08:45:54 -0700 Mike Pavone Removed out of date TODO
Thu, 06 Jun 2013 08:19:25 -0700 Mike Pavone Fix LDD and LDDR
Wed, 05 Jun 2013 22:55:23 -0700 Mike Pavone Fix dec and inc when the operand is in memory
Wed, 05 Jun 2013 18:47:39 -0700 Mike Pavone Fix LDI