Forced 480P on Gamecube with component cable
February 27, 2012 05:12AM
This seems to be a common issue with a lot of homebrew apps for Gamecube. Rather than giving you the option of enabling 480p by holding B during startup (like most commercial games), 480p mode is forced if the component video cable is plugged into the Gamecube. However, there are a lot of CRT TV's that have component video inputs but do not support 480p. These same TV's are ideal for enjoying the Original video rendering mode on emulators such as snes9x-gx, FCE Ultra GX, etc. Unfortunately when you try to load these emulators on such a setup you are greeted by a black screen or a scrambled rolling picture from the mismatched scan rate.

As a workaround, I have to go through the following routine every time I want to use the Gamecube:
1. Unplug the component cable from the back of the Gamecube
2. Switch TV to composite video input
3. Turn on console and load homebrew app
4. Hot-plug the component cable back into the Gamecube
5. Switch the TV to the component video input.
6. Start playing

I have experimented with setting the Video Mode to NTSC (480i) within the video settings of FCE Ultra, snes9x, and VBA-GX rather than the default Automatic. However it seems that this setting does not take effect until after you load a game. So now the process is:

1. Turn on console with component cable plugged in
2. Load emulator (FCEU etc.)
3. Screen goes scrambled as 480p is forced
4. Blindly load a random game from the menu
5. Video mode changes to NTSC (480i) as dictated in the video settings menu
6. Return to menu and load the game I want to play

After spending the afternoon troubleshooting this problem and digging through the snes9x-gx source code trying to figure out why this is happening, and have found a few clues. It looks like the preferences are not being loaded until after the main menu has been drawn, which means the video is being initialized according to the auto-detection routine. Then I stumbled upon this gem within the function FindVideoMode in video.cpp:

#ifdef HW_DOL
			/* we have component cables, but the preferred mode is interlaced
			 * why don't we switch into progressive?
			 * on the Wii, the user can do this themselves on their Wii Settings */
			if(VIDEO_HaveComponentCable())
				mode = &TVNtsc480Prog;
			#endif

I hope I have offered a compelling case as to why we should NOT assume that just because we have component cables, it is safe to switch into progressive. The preferred mode should be interlaced, because this offers the best compatibility.

Would it be possible to have someone on the development team look into this?
Re: Forced 480P on Gamecube with component cable
February 29, 2012 02:26AM
I don't know if your case is very compelling. You're the freak exception of someone who wants to use a component video cord and NOT use 480p. You have indeed found the spot in the code where progressive is being turned on for GameCube - if you remove this code and recompile, it will work for you. Your other option would be to use the composite cable.



Edited 1 time(s). Last edit at 02/29/2012 03:07AM by Tantric.
Re: Forced 480P on Gamecube with component cable
February 29, 2012 05:28AM
Yes, I was going to try commenting out that piece of code and recompiling just as soon as I get a development environment set up. Thank you for confirming that I am on the right track.

The point I am trying to get across is that I can't be the only one out there who wants to achieve the best possible video quality for retro gaming. This means component video (or RGB) on a 480i native CRT display running in Original mode (240p). Considering most every TV that supports 480p is backwards compatible with 480i, there is no need to have 480p forced when this breaks the software for users of 480i TV's that are not forwards compatible with 480p.

Besides this minor annoyance I have been extremely impressed with the quality and maturity of development of your emulators Tantric, it is truly a dream come true for us retro gaming fans. Thanks!
Re: Forced 480P on Gamecube with component cable
February 29, 2012 12:07PM
I've recompiled snes9xgx-gc.dol, fceugx-gc.dol, and vbagx_gc.dol with those lines commented out. 480p is no longer forced at startup and everything is just peachy. If anyone else could use this fix I'd be happy to share.

Now to figure out how to do the same for swiss-gc :)
Sorry, only registered users may post in this forum.

Click here to login