niuus / fceultrarx Goto Github PK
View Code? Open in Web Editor NEWFCEUltra RX - A port of FCE Ultra for Wii, forked from FCEUltra GX
FCEUltra RX - A port of FCE Ultra for Wii, forked from FCEUltra GX
Primero gracias por el trabajo, en mi caso me gustaría que este emulador también contará con tema de nes mini al estilo del de snes le da un aire diferente al mismo
does not work on the game cube sd2sp2 card
In gcvideo.cpp, you're currently setting the viWidth to 640, the default and lowest possible value. You should set this to 644 instead for a slightly more accurate aspect ratio.
With apologies if you know all of this, a quick an explanation: the Wii (and GameCube) have both an embedded framebuffer (EFB; generally the thing you think of as a framebuffer and the one your software is most likely to interact directly with) as well as an external framebuffer (XFB). The embedded framebuffer is the one that can be resized up to 640*480 (at least when set to 60 Hz mode), while the external framebuffer can have a width between 640 and 720 pixels. Its primary purpose is to reduce the effects of underscan--the image not filling up the user's entire TV--on the horizontal axis. For example, Nintendo games tend to use a minimum viWidth of 650, and usually more. The external framebuffer scales with 8x oversampling, so the impact of its scaling is not overly blurry.
The GameCube and Wii both use the same 13.5 MHz pixel clock, which is used to determine how long a single pixel is sampled before moving on, and which in turn determines how wide each pixel becomes in the analog video signal output by the Wii. This clock has the result of causing XFB pixels to have an aspect ratio of 10:11. That is the GameCube/Wii's pixel aspect ratio (distinct from the image's aspect ratio). This is the same pixel clock/PAR as many other devices from the period, like the Sega Dreamcast, consumer DVD players, etc.
The NES, SNES, TurboGrafx-16, and many other consoles of the era use a 5.37 MHz pixel clock, resulting in a pixel aspect ratio of 8:7. Since that's different to the PAR of the Wii, you ideally want to correct the aspect ratio by adjusting the viWidth--because the 8x oversampled scaling is so much cleaner than doing it with a bilinear or nearest-neighbor filter, which IIRC is how the GX/RX emulator family manages all scaling currently.
So, the math to get a correct NES/SNES/etc. image on GameCube/Wii is:
512 * (11/10) * (8/7) = 643.657143 ≈ 644
emulator's output resolution * inverse GameCube/Wii PAR * NES/SNES PAR = ideal viWidth ≈ possible viWidth
The idea here is that in one step, you're both negating the GameCube/Wii's PAR and applying the NES/SNES's, all using the reasonably clean scaling of the XFB. All of this assumes that the user is not manually adjusting the image with the video settings in the emulator, but if the user wants to mess with the aspect ratio, that's not your problem. The best you can do is offer the correct aspect ratio as the default settings and let users do as they wish with the rest.
Sorry this was so long. The short version is, switch from 640 to 644 for a more accurate NES/SNES picture. The same fix should be able to be made to Snes9xRX as well, but I won't file an issue separately over there.
Hello @niuus!!
Nice work with that FCE Ultra RX, but i have a couple of issues to report, and a suggestion for your next version of FCE Ultra RX.
I posted them in GBAtemp: https://gbatemp.net/posts/9540036/
Can you fix them please?
Thanks!!!
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.