1
0
mirror of https://github.com/TomHarte/CLK.git synced 2024-12-27 01:31:42 +00:00

Don't latch video addresses until almost the last minute.

This commit is contained in:
Thomas Harte 2024-04-09 20:56:10 -04:00
parent 82a2e802ea
commit dd24f5f4f3
2 changed files with 12 additions and 4 deletions

View File

@ -132,17 +132,25 @@ struct Video {
if(horizontal_state_.position == horizontal_timing_.period) {
horizontal_state_.position = 0;
const auto old_phase = vertical_state_.phase();
vertical_state_.increment_position(vertical_timing_);
pixel_count_ = 0;
if(vertical_state_.position == vertical_timing_.period) {
vertical_state_.position = 0;
address_ = frame_start_;
cursor_address_ = cursor_start_;
entered_sync_ = true;
interrupt_observer_.update_interrupts();
}
// I don't have good information on this; first guess: copy frame and
// cursor start addresses into counters at the start of the first vertical
// display line.
const auto phase = vertical_state_.phase();
if(phase != old_phase && phase == Phase::Display) {
address_ = frame_start_;
cursor_address_ = cursor_start_;
}
// Determine which next 8 bytes will be the cursor image for this line.
// Pragmatically, updating cursor_address_ once per line avoids probable
// errors in getting it to appear appropriately over both pixels and border.

View File

@ -62,7 +62,7 @@
</Testables>
</TestAction>
<LaunchAction
buildConfiguration = "Release"
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
enableASanStackUseAfterReturn = "YES"