-
Notifications
You must be signed in to change notification settings - Fork 2.2k
Adjust PV-1000 screen stretch to show full game area by default #13709
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
base: master
Are you sure you want to change the base?
Conversation
Set default screen scaling to: set_default_position(1.0, 0, 6283.0/5724.0, 0) Prevents horizontal cropping seen with previous defaults. This provides full game display out of the box while preserving correct pixel and display aspect ratio.
The software you’re demonstrating this with was developed decades after the machine was obsolete, likely using emulators. The current raster position values were set in #12570 by @lidnariq, supposedly based on the part of the display that’s hidden in the overscan area when using real hardware with a correctly adjusted NTSC-J monitor. Do you have any evidence that @lidnariq was wrong about how the actual system behaves? My gut feel is that @lidnariq is correct, and these games would be cropped if you ran them on real hardware. |
Let me clarify, the software I used is MAME 0277, the latest and greatest version. I did not use the ePV1000 emulator or anything else. Also, I am not saying @lidnariq is wrong. The total opposite, he is 100% correct. However, different monitors behave differently, some show more of that overscan area than others. In fact, all of Inufuto's homebrew games, which are tested in real hardware and captured with NTSC-J AV, show the entire games as evidenced in his Youtube channel. Here is an example of his latest homebrew for the PV-1000: https://www.youtube.com/watch?v=Kue9yF4rsjc I don't think the assumption that every monitor used to play these games with real hardware will behave exactly the same. Hence, this fix basically sets the horizontal stretch to 1, so everything is displayed, while adjusting the vertical stretch at the exact ratio. Another way to achieve the same thing is to add this in the pv1000.cfg: scren index = "0" vstretch = "1.097659" This will do exactly the same. With the current MAME code, the pv1000.cfg has this: screen index ="0" hstretch="1.048544" vstretch="1.150943" If you divide those numbers, 1.150943/1.048544, you get the 1.097659, which is exactly (216 / 206.0) / (244 / 212.0). The way it is written in my change is preserving perfect geometry. So to reiterate, the change I proposed was mostly to provide a better out of the box experience to MAME users wanting to play Casio PV-1000 games. I went through the experience of seeing all of Inufuto's games played in real hardware shared in his Youtube videos and trying to get them to show up the exact same way as in the videos in MAME was impossible. I had to go and really figure out this ratio in order to get the right setting that would display the entire game while preserving 100% the screen's geometry and pixel ratio. Anyone who loads any of the PV-1000 games into MAME today and wants to get the entire game area to show up, as soon as they move a slider, there is no guarantee that they get it right, as you cannot set it back to exactly 1.0 for either horizontal or vertical stretch, and definitely cant set it to 1.097659. Unless people know about this specific ratio, they can adjust it to where they think its perfect, but it is not. I learned a lot about the PV-1000 after having some back and forth chats with @lidnariq , and yes, his code is 100% correct in every way. Where I disagree is with the assumption that ALL monitors and TVs behave the same, therefore recommended this change. |
This is easily reproduceable.
You will see the games exactly the same way in those screenshots. I am fine with keeping the code unchanged, I now know the exact ratio I need to be able to see the entire game area while preserving exact geometry, so I can make the config change and call it a day. Other users trying these games for the first time may wonder exactly the same thing I did, why can't I see Inufuto's games like he is showing them on his Youtube channel in real hardware. The benefit of the change is to provide a better out of the box experience for other people trying these games out. I know I struggled to get the ratio correct, and without looking at the code, I wouldn't have figured it out. |
Going on precedent, I think this could be done as a configuration switch, with the current cropped behavior as the default. While televisions all had overscan, consumer NTSC-J and NTSC-U/C monitors were widely available which could easily be adjusted to show the full frame. Many developers used Commodore (rebranded Phillips OEM) 1084 or similar monitors to develop console games until the end of NTSC for that reason. We arguably should do something similar for NES/Famicom as well. Commercial software for those systems relied heavily on overscan to hide flaws near the edges. But the standard for emulators has always been to show the full frame for whatever reason. |
That is what I thought. My experience with other systems within MAME was that the full frame is displayed for pretty much all I have checked out. There are very few that I found where they aren't displayed in full frame by default, haven't really checked a lot of the drivers' code but I wonder if it is common for other drivers to hardcode these stretch values. Since there were initial doubts regarding what I used to take the first screenshots, here is a full video capture of me installing the latest MAME, running both games with latest MAME, then running them with the changed code. Here is the link: https://youtu.be/kKQP2TP_znI I think the expectation from many, especially the new generation of MAME users, is that they want the full frame. The newer generations have no idea what a CRT is, yet alone overscan, unfortunately. |
You can already adjust it in the sliders menu. |
Set the PV-1000 default screen scaling to:
Previously, the default scaling caused games to appear cropped on both the left and right edges, requiring users to manually adjust stretch settings to see the full image. I understand that the change was done this way to simulate how it would look on an old CRT TV. With modern displays and monitors, real hardware can, and most of the time will show the full game area.
This change ensures the entire game area is visible by default, resulting in a much better out-of-the-box user experience while preserving visual accuracy.
The vertical stretch of ~1.097659 matches the original PAR/DAR correction derived from:
(216 / 206.0) / (244 / 212.0) = 6283 / 5724
This maintains a 4:3 display shape with a pixel aspect ratio of 48:35, per lidnariq's analysis.
Attached are visuals of a couple games with current settings and with fixed default settings.




As noted earlier, this fix not only preserves emulation accuracy 100%, but also provides everyone trying the Casio PV-1000 in MAME the best out-of-the-box experience in the modern TVs and monitors today, with absolutely no changes to sliders or configuration files.