6XGate wrote:I know the basic structure of sending control unit key commands, but didn't keep up with them all. It wouldn't be hard to document them. Please note, I'm not sure if this protocol I see used by the D-series BVMs is universal to other BVM series or any PVM series. I have two L5 series PVMs I want to test it out on at some point though.
I thought you might be referring to just the under/over-scan and aspect-ratio. But if you mean all the other settings such as pinch, skew, etc., that would make such a feature a challenge due to the lack of any known way of getting the current geometry from the method I'm using, needed to make adjustments via the menus.
I may look into interfacing directly into the CONTROL port later which may provide a means to get and pass the settings as if to or from a memory card. Only time will tell.
The two most popular BVM series are the BVM-20F1U (and it's variants: 14F5U, etc.), and the multiformat D20 series (D24, D32, etc.). The same controller works all those models (~16x different BVM's total). It also works in a limited way on the 14L5 and 20L5 PVM's. As long as it's not a BVM from the early 90's, or the A-Series, it'll work on it.
The only settings I'm talking about adjusting are the H/V Size, and H/V Centering - those are the ones which will vary from console to console. These are what MANY people have issues with - calibrating a monitor so the 240p test suite grid is perfectly centered (with just the right amount of minute overscan) for each console. They commonly have to go into the alignment menu to tweak that for EVERY single console, every time. A 224p NES for example, outputs a signal quite a bit different than something like a 240p Sega Genesis. Even different games on the same system can have funky stuff going on in the margins you may not want to see (case and point is SMB 3 and that blue bar on the entire left side - other games display just fine with nothing like that on the left).
For your project, this is how I thought of it - please let me know if I'm totally off: You were able to capture the command (like the command for Channel 1, Channel 2, etc.) which the controller sends over the serial cable to the BVM, then emulate that via a Raspberry Pi computer. You can then use that command with the Raspberry Pi and don't even need the BKM-10R controller to switch channels. That being said, one would think that you could likewise capture the command the controller sends for Up, Down, Menu, and Enter too then, correct? Once you have the commands for those 4 button presses, you would be able to tweak ANYTHING on the monitor in terms of H/V Size/Centering and get ALL of your consoles tuned absolutely perfect at the touch of a button.
For a further example using that Super Mario Brothers 3 problem from above (with the blue bar on the left all the time), if I find that's really annoying me I'll go into the Alignment menu and I'll raise the V Size by +10, then shift the image over with H Phase(Centering) by +5. After I do that the blue bar is gone and the image looks perfect. Doing that adjustment via the controller ONLY takes those 4 buttons I mentioned (up/down/left/right). If I'm right that those commands can be emulated with the Raspberry Pi, it seems like it would be pretty easy to run a script which would run them in the proper sequence. I just wrote this down quickly but on my D20 I would press:
Menu (enters the OSD menu)
2x Down (you're now on the Set-Up option)
Enter (selects/enters the Set-Up Menu)
5x Down (you're now selecting the Alignment sub-menu)
Enter
2x Down (you're now on the V Size option of the alignment menu)
Enter
10x Up (raising the V Size value by 10)
Enter
5x Down (you're now on H Phase/Center)
Enter
5x Down (which moves it left)
Enter
3x Menu (to back out of the menus so they're not shown anymore)
When you're done playing that game (or console), you would need to "reset" the alignment to a defined base point. That would essentially be the same commands as above, but you would be swapping Up with Down so it reverses those tweaks you just did. This will get you back to your baseline. After that, if you wanted to switch to another console, you could then use the same method to tweak the geometry for that other console (then after you're done that, reset it back to baseline again, and you're once again ready to have it make those adjustments for yet another console, so on and so forth).
Does that make sense? You can do things exactly like this with the higher-end universal (IR) remote controls. You can record a macro of multiple button presses, in sequence, save it, then have it do that button sequence when you run that saved macro (which BTW, I may try that with my Panasonic multiformat CRT which does use an IR remote - that'll let me tweak that monitor the same way I want to do with my BVM's!
P.S. If you feel like I'm totally derailing your topic since this wasn't the original point of your program please let me know! Just immensely interested in something like this, as are a bunch of other people on the Facebook group.