diff options
author | 2024-02-29 00:42:16 +0100 | |
---|---|---|
committer | 2024-02-28 18:42:16 -0500 | |
commit | 63864c41dd2a276ec15e6510c118710483b78063 (patch) | |
tree | 7850c894c8d2db2bf0026007e85d5ec1c65bd4be /src/devices/cpu/g65816/g65816.h | |
parent | a3b3b39a68bdfc90d3dea6f969c206e6b54879c7 (diff) |
g65816: Emulation accuracy fixes - (stack,S),Y and emulation mode quirks (#12079)
* Fix wraparound in (stack,S),Y addressing mode
* Emulate (direct,X) emulation mode wraparound bug, fix handling of direct page accesses in emulation mode.
* Ignore emulation mode for 24-bit pointer reads/writes
* Force usage of native 16-bit stack handling for 65816-exclusive stack instructions
* PEI also forces native 16-bit direct page handling
* PLB reads from ($200) instead of ($100) when S=$1FF in emulation mode
Diffstat (limited to 'src/devices/cpu/g65816/g65816.h')
-rw-r--r-- | src/devices/cpu/g65816/g65816.h | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/src/devices/cpu/g65816/g65816.h b/src/devices/cpu/g65816/g65816.h index d918eba4f29..59794cc66a0 100644 --- a/src/devices/cpu/g65816/g65816.h +++ b/src/devices/cpu/g65816/g65816.h @@ -157,18 +157,25 @@ protected: unsigned g65816i_read_16_normal(unsigned address); unsigned g65816i_read_16_immediate(unsigned address); unsigned g65816i_read_16_direct(unsigned address); + unsigned g65816i_read_16_direct_x(unsigned address); unsigned g65816i_read_16_vector(unsigned address); void g65816i_write_16_normal(unsigned address, unsigned value); void g65816i_write_16_direct(unsigned address, unsigned value); unsigned g65816i_read_24_normal(unsigned address); unsigned g65816i_read_24_immediate(unsigned address); - unsigned g65816i_read_24_direct(unsigned address); void g65816i_push_8(unsigned value); unsigned g65816i_pull_8(); void g65816i_push_16(unsigned value); unsigned g65816i_pull_16(); void g65816i_push_24(unsigned value); unsigned g65816i_pull_24(); + void g65816i_push_8_native(unsigned value); + unsigned g65816i_pull_8_native(); + void g65816i_push_16_native(unsigned value); + unsigned g65816i_pull_16_native(); + void g65816i_push_24_native(unsigned value); + unsigned g65816i_pull_24_native(); + void g65816i_update_reg_s(); void g65816i_jump_16(unsigned address); void g65816i_jump_24(unsigned address); void g65816i_branch_8(unsigned offset); |