Hey! My documentation efforts are coming along really well, but I need someone to test something on a real Virtual Boy. I’ve attached a brightness test program to this post. If someone could, you know, test it and report back with their observations, that’d be slick.
First things first, I’m still not totally clear on how controller input is supposed to work. This program worked in the emulator I tried it in, but the technique didn’t match up perfectly with what’s in the system manual, so I’m not sure if it will work on a real system.
Anyhoo, when you first boot it, you’ll see something like this:
It’s a red screen with a number on it. The number is the hexadecimal value of the brightness register controlling the rest of the screen. Using up and down on the left d-pad increases it to FF, or decrease it to 00 (respectively).
Okay, so… what this is for…
According to the unit manual, the brightness of pixels works the way brightness of any LED works: it’s directly proportional to how long the LED stays active. LEDs themselves don’t have any brightness capabilities; they’re either on or off. So if you keep them on longer, they seem brighter.
The column table (addresses 0x0003DC00-0x0003DFFF) controls how wide columns of pixels are while drawing to the displays. Since the displays work by beaming a single column of pixels at a vibrating mirror, the angle of the mirror relative to the LEDs constantly changes. In order to maintain a consistent width for all columns in the frame, pixels emitted at a shallower angle need to be a different width than those emitted at a more perpendicular angle.
The manual states that the column table represents column widths in units of 200 nanoseconds, and the brightness registers represent emission periods in units of 50 nanoseconds. Exactly the relationship between them, and the effective maximum brightness of the real system, is what I need some help finding out.
If I’m understanding the document correctly, the maximum brightness for the middle columns of the display (with the default column table) should be where my program shows EE. Advancing the brightness to FF should have a slight increase in brightness on the left and right edges of the screen, but not in the middle.
If I’m misunderstanding the document, I might be way off. I’d test it myself, but I can’t.
So yeah, someone with a FlashBoy, please download brighttest.vb and load ‘er up. If nothing else, let me know when the display gets its brightest.
Attachments:
Come on guys 🙂 those of us that can’t code…can’t draw…we can still demo stuff..and break it when needed. It’s good karma.
Okay, thanks to HorvatM and bigmak for testing this program. You guys rock!
First of all, the reason it wasn’t working right is because I typoed an instruction in the hex editor. I typed 00 02 where I should have typed 02 00. After fixing it, the program works great! I’ve attached the fixed ROM to this post.
Anyhoo, both users determined that the maximum effective brightness of the LEDs is in the neighborhood of 0x80; maybe a couple more, maybe a couple less. This is very important information.
However, I couldn’t get the math to line up. My current guess is that the maximum physical brightness of the LEDs is around 0x80, not that the emission period is necessarily saturated within the display period. I’m not really sure how to go about finding out, since by this point everything is hypotheical.
Attachments:
Would’ve liked to have helped out. Unfortunately I am 7 hours drive away from my nearest VB and Flashboy. After the holidays, I’ll take Eric’s advice and scour the development feeds for things I can test. 🙂
Guy Perfect wrote:
Okay, thanks to HorvatM and bigmak for testing this program. You guys rock!First of all, the reason it wasn’t working right is because I typoed an instruction in the hex editor. I typed 00 02 where I should have typed 02 00. After fixing it, the program works great! I’ve attached the fixed ROM to this post.
Anyhoo, both users determined that the maximum effective brightness of the LEDs is in the neighborhood of 0x80; maybe a couple more, maybe a couple less. This is very important information.
However, I couldn’t get the math to line up. My current guess is that the maximum physical brightness of the LEDs is around 0x80, not that the emission period is necessarily saturated within the display period. I’m not really sure how to go about finding out, since by this point everything is hypotheical.
I apologize if I’m super off base here, but…
If it’s a timing thing, then one thing to consider might be the persistence of the human eye. The “refresh rate” of the human eye is on the order of 1/25th of a second. So if the light from the LEDs would need to be on for longer to create more brightness, the average human won’t see it.
Thanks for the input, though it doesn’t appear that persistence factors into it any. The entire display is emitted by the LEDs over the span of 5 milliseconds, which is 1/200th of a second; well faster than the fastest known human vision persistence. Increasing the time that 1 column of LEDs (1/384th of that 5ms period) emits should, by all accounts, result in a brighter image no matter how long it stays on.