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

Add a paravirtualized framebuffer for the Quadra 800 #3

Closed

Conversation

SolraBizna
Copy link

This PR adds a NuBus-flavored paravirtualized framebuffer, complete with a declaration ROM and QuickDraw driver. It also adds support for unplugging the DAFB framebuffer.

  • -M q800,fb=none unplugs the "monitor" from the DAFB, making the Mac headless.
  • -M q800,fb=qemu unplugs the DAFB and adds a nubus-qfb configured by the -g option.

Regardless of the value of fb, additional framebuffers can be added with -device nubus-qfb. Width, height, and depth can be specified per-card, e.g. -device nubus-qfb,width=960,height=600,depth=16. Since the Quadra 800 has three NuBus slots, three paravirtualized monitors can be added. If the DAFB is utilized, a fourth monitor is possible.

Advantages of the paravirtualized framebuffer:

  • Different set of glitches
  • Emulated CPU wastes less time programming real hardware registers
  • Support for Thousands
  • Arbitrary resolutions
  • Multiple monitors
  • Gamma correction

The QuickDraw driver was written to function with any version of the System Software that is compatible with the Quadra 800. It was tested with System 7.0.1, MacOS 8.1, and A/UX 3.1.1. All features of the driver work in all tested configurations, though getting multiple monitors working on A/UX takes a little bit of song and dance. All specified requirements for QuickDraw drivers are met, with one exception. If Slot Manager 2 or 32-bit QuickDraw are missing from the ROM, nubus-qfb can't be used as the startup screen. The Quadra 800 ROM has both, so this will only be a problem if we add older Mac machines later, notably Macintosh II variants.

The source code to the driver and the declaration ROM can be found here, under a liberal license.

@github-actions
Copy link

Thank you for your interest in the QEMU project.

This repository is a read-only mirror of the project's repostories hosted
on https://gitlab.com/qemu-project/qemu.git.
The project does not process merge requests filed on GitHub.

QEMU welcomes contributions of code (either fixing bugs or adding new
functionality). However, we get a lot of patches, and so we have some
guidelines about contributing on the project website:
https://www.qemu.org/contribute/

@github-actions github-actions bot closed this Aug 29, 2022
@github-actions github-actions bot locked and limited conversation to collaborators Aug 29, 2022
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
1 participant