skyfloogle / red-viper

A Virtual Boy emulator for the 3DS
764 stars 17 forks source link

LED #56

Closed CCCP1982 closed 2 months ago

CCCP1982 commented 3 months ago

Is it possible to create a vector matrix on 3DS, as it was in those distant days, from 1982 to 1985? The image will be more realistic than on a regular 3DS matrix. Am I wrong?

=====================================================================================

Since 1985, a red LED eyepiece display technology called Scanned Linear Array was developed by Massachusetts-based Reflection Technology, Inc. (RTI). The company produced a stereoscopic head-tracking prototype called the Private Eye, featuring a tank game. Seeking funding and partnerships by which to develop it into a commercial technology, RTI demonstrated Private Eye to the consumer electronics market, including Mattel and Hasbro. Sega declined the technology, due to its single-color display and concerns about motion sickness.

https://github.com/skyfloogle/red-viper/assets/142115581/d8edb61a-f6bd-4fa7-8ec6-03e1ca27ba44

vaguerant commented 3 months ago

Vector displays are fundamentally different in their physical makeup to LCD panels. A vector display manipulates the scanning electron gun of a cathode ray tube (old style box TV/monitor). In conventional raster (non-vector) CRT display, the gun fires a beam of electrons at the phosphor panel inside the TV, which lights up the entire screen going from left to right (one horizontal blank) then moves back to the left and repeats that cycle going from top to bottom (one vertical blank), before returning to the top left, ready to start the next field.

On vector displays, instead of scanning rigidly left-to-right, top-to-bottom, the electron gun is fired in an arbitrary line from any one point to any other point on the screen, lighting up only the parts being used, with scanlines going all over the place in every direction--e.g. each use of the letter O in the above video is four scanlines, the letter L is two scanlines, and so on.

The 3DS screens and other LCD panels have a fixed pixel grid which allows a decent approximation of conventional raster-based display but not vector display. While LCD pixels and phosphor grids are not the same thing, you can broadly use either mechanism to display a raster image. So, e.g., you can display old content meant for CRTs on an LCD panel and it looks roughly the same (CRT people: don't @ me, I know it's not the same, but Super Mario Bros. is recognizably Super Mario Bros. on a CRT or an LCD).

However, LCD panels can't operate in the same way as a vector display, with sharp arbitrary scanlines plotted anywhere on the screen. The makeup of the screen is just not physically capable of that: it's always an immovable grid of pixels which you can change the color of, but which you can't physically rearrange in the way that an electron gun is physically able to be moved around.

All that said, the Virtual Boy isn't a vector display either, so even if you were able to display Virtual Boy content on a vector panel, it wouldn't be more accurate to the appearance of a real Virtual Boy or the Private Eye. While the technology is completely foreign (electron guns and phosphor panels vs. LEDs and oscillating mirrors), the Virtual Boy has a raster display, like a conventional CRT panel, or a modern LCD panel. The LEDs light up and a mirror oscillates so that the light from that LED can generate an entire scanline, analogous to the electron gun scanning across the phosphor panel on a CRT. An LCD panel uses a different mechanism again, but it can display the same type of raster image without issue.

Sorry this is so long and complicated, but the tl;dr is:

  1. unfortunately, you can't do vector display on an LCD panel
  2. that wouldn't assist with simulating the display of the Virtual Boy, because it's not a vector display to begin with
CCCP1982 commented 2 months ago

vaguerant Thank you for the review. I understand that this was done in order to simulate LED technology, as in the M.A.M.E. emulator, they just simulated vector graphics on any monitor, and it looks very plausible. Take a close look at how they emulated vector graphics games Start Wars 1983 . The lines themselves are blinking, and the dots are also glowing.

I do not know how the Virtual Boy console works, but I suggested maybe doing it the way M.A.M.E. (Start Wars 1983 ) did.

Thanks for the review, greetings from Russia.

skyfloogle commented 2 months ago

Wireframe games on the Virtual Boy were rendered entirely on the CPU to a framebuffer, the emulator doesn't have any real control over that. Of course one could create a modified version of the emulator that reads the game data and uses whatever fancy techniques to render smooth lines and such, but I feel that's beyond the scope of this general-purpose emulator project.

CCCP1982 commented 2 months ago

skyfloogle Thanks for the answer