Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

MEGA65: implement hardware errata register/levels and its effects #414

Open
lgblgblgb opened this issue Sep 20, 2024 · 0 comments
Open

MEGA65: implement hardware errata register/levels and its effects #414

lgblgblgb opened this issue Sep 20, 2024 · 0 comments

Comments

@lgblgblgb
Copy link
Owner

lgblgblgb commented Sep 20, 2024

MEGA65 has the "HWERRATA" (hardware errata) register which tries to provide bug-to-bug compatibility for older software when something in mega65-core is changed meanwhile which found problematic for older software. As far as I can tell, currently there is three different hardware errata levels (every next level also carries the fixes from the previous levels!):

Level Meaning Xemu status
0 Most compatible with C65 and with older mega65-core versions, no fixes OK
1 $D016 bug in H640mode is fixed at this level, ie already on C65 value of "2" meant zero, now zero is zero
VHDL designation: bug_compat_vic_iii_d016_delta
OK-ish in dae4fa2
2 Char attribute fix
VHDL designation: bug_compat_char_attr
TODO

HWERRATA register is at $D08F. Writing any value greater than the max supported will cause the max supported value is used. The used value can be read back in the same register. However there is also an older way for this errata story, VIC-IV register $D07A.5, a single bit, though this is a deprecated feature. When it is changed, the "real" HWERRATA register is set to the max supported value (bit is set) or zero (bit is cleared). It seems there is no feedback from $D08F to this bit though, only setting that, won't effect this bit when read back.

@lgblgblgb lgblgblgb self-assigned this Sep 20, 2024
@lgblgblgb lgblgblgb moved this to In Progress in MEGA65 emulator project Sep 20, 2024
lgblgblgb added a commit that referenced this issue Sep 20, 2024
* Basic HWERRATA and VIC BUGCOMPAT bit support
* Rudimentary X scroll register offset fix support from level 1 and up
* But NO support yet for char attribute fix at level 2
lgblgblgb added a commit that referenced this issue Oct 22, 2024
sync with next:

	dae4fa2

Author: LGB (Gabor Lenart) <[email protected]>
Date:   Fri Sep 20 23:19:17 2024 +0200

    MEGA65: hwerrata register initial support #414

    * Basic HWERRATA and VIC BUGCOMPAT bit support
    * Rudimentary X scroll register offset fix support from level 1 and up
    * But NO support yet for char attribute fix at level 2
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Status: In Progress
Development

No branches or pull requests

1 participant