Skip to content

fix: show snow when no frontend owns the screen - #8

Merged
wizzomafizzo merged 1 commit into
masterfrom
fix/snow-without-frontend
Oct 9, 2026
Merged

wizzomafizzo merged 1 commit into
masterfrom
fix/snow-without-frontend

Conversation

@wizzomafizzo

@wizzomafizzo wizzomafizzo commented Oct 9, 2026 •

Copy link
Copy Markdown
Member
  • Idle video has held black except behind the stock OSD since the black Menu startup change. With the frontend off and kiosk mode on, the OSD never opens, so the screen stayed black until zaparoo_osd open and went black again when it closed.
  • The core now also shows snow while status[10] is set. Main sets it whenever no frontend owns or is about to take the screen.
  • Set means snow and clear means black. The core resets with status 0 before Main has spoken, so a frontend start still has no snow flash, and a Main that never sets the bit behaves exactly as before.
  • The two synchronizers and the OR live in a new rtl/zaparoo_snow_enable.sv with its own test bench, tb/snow_enable_tb.sv.
  • Checked locally: tb/run.sh passes on Icarus, and a full compile in theypsilon/quartus-lite-c5:17.0.2.docker0 produces menu.rbf and passes tb/check_timing.py. Not tested on hardware.
  • Needs the matching Main change to have any effect: fix(zaparoo): keep menu snow visible without a frontend Main_MiSTer#30.

Closes ZaparooProject/zaparoo-frontend#503

Summary by CodeRabbit

  • New Features
    • Snow now appears behind the stock on-screen display and when no frontend owns or is about to take the screen, including frontend-off, quit, and given-up states.
    • Snow is also available in setups without a frontend or on-screen display, such as kiosk mode. Native frontend frames remain visible above both backgrounds.

Idle video held black except behind the stock OSD, so a setup with no
frontend and no OSD (kiosk mode, the idle screensaver's first stage, a
quit frontend) lost its background. Main now reports through status[10]
that no frontend owns or is about to take the screen, and the core shows
snow for that as well as behind the OSD. The bit is clear at reset, so a
frontend start stays black, and a Main that never sets it behaves as
before.
@coderabbitai

coderabbitai Bot commented Oct 9, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration
  • Configuration used: Organization UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 7e6f85d1-175b-4318-972e-96c02b1bab33
📥 Commits

Reviewing files that changed from the base of the PR and between 9fd408d and a8dc5d1.

📒 Files selected for processing (8)
  • README.md
  • files.qip
  • menu.sv
  • rtl/zaparoo_bootstrap_video.sv
  • rtl/zaparoo_snow_enable.sv
  • tb/bootstrap_video_tb.sv
  • tb/run.sh
  • tb/snow_enable_tb.sv

Included review availability: This review used your included allowance. Your plan provides up to 1 included review per hour; 0 remain after this review.


📝 Walkthrough

Walkthrough

Snow visibility now responds to either synchronized OSD status or the launcher’s status[10] permission signal. The change adds a dedicated synchronizer module and a testbench for its input and output behavior.

Changes

Snow visibility

Layer / File(s) Summary
Snow visibility control
menu.sv, rtl/zaparoo_snow_enable.sv, files.qip, rtl/zaparoo_bootstrap_video.sv, README.md
menu.sv passes OSD_STATUS and status[10] to zaparoo_snow_enable, which synchronizes both signals and asserts show_snow when either is high. The project includes the module. The README describes the visibility conditions, and the bootstrap video comment reflects the show_snow behavior.
Snow visibility tests
tb/snow_enable_tb.sv, tb/run.sh, tb/bootstrap_video_tb.sv
The new testbench checks reset, synchronization delay, input combinations, and snow visibility across OSD changes. The test runner invokes it. The existing bootstrap video test updates its assertion and PASS-message wording.

Priority: ➖ Normal

Estimated code review effort: 2 (Simple) | ~15 minutes

Change: Bug fix · Severity of issue fixed: Medium

Merge Risk: ⚪ Minimal · up to a8dc5

No actionable issue is established for this change. It is mergeable after normal checks; the intended kiosk behavior still depends on the matching Main_MiSTer change.

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Linked Issues check Warning Issue #503 requires the kiosk screen to stop remaining black when the OSD is closed. This PR adds the FPGA-side status[10] path and verifies it in tb/snow_enable_tb.sv, but menu.sv only consumes… Include the matching Main_MiSTer producer for status[10] in the reviewed deliverable, or provide reviewable evidence that the producer is already present at the required integration point. Reassess issue #503 after both sides are availabl…
✅ Passed checks (4 passed)
Check name Status Explanation
Out of Scope Changes check Passed The new synchronizer, menu.sv integration, test bench, build-file update, test-runner update, and related comments and README text all support the snow-display behavior for issue #503. No unrelated …
Docstring Coverage Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 1…
Description Check Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check Passed The title clearly and concisely describes the main change: showing snow when no frontend owns the screen.
Full details: Linked Issues check

Explanation

Issue #503 requires the kiosk screen to stop remaining black when the OSD is closed. This PR adds the FPGA-side status[10] path and verifies it in tb/snow_enable_tb.sv, but menu.sv only consumes status[10]. The PR description states that a separate Main_MiSTer change must set the bit, and that change is not present in this reviewed repository. Therefore, the reviewed PR does not establish the reported kiosk behavior is fixed.

Resolution

Include the matching Main_MiSTer producer for status[10] in the reviewed deliverable, or provide reviewable evidence that the producer is already present at the required integration point. Reassess issue #503 after both sides are available.

  • Fix all pre-merge checks with AI
✨ Finishing Touches
📝 Generate docstrings
  • Commit to this branch
  • Create a new PR
  • Autopilot · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@wizzomafizzo
wizzomafizzo merged commit fa4961c into master Oct 9, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Kiosk mode issue with the latest update: Black screen on boot; when open osd command is sent then…

1 participant