Swiss 0.1

Discuss one of the most feature filled GameCube applications here :)
Locked
User avatar
emu_kidid
Site Admin
Posts: 4927
Joined: Mon Mar 29, 2010 10:06 am
Location: Australia
Contact:

Swiss 0.1

Post by emu_kidid » Tue Feb 01, 2011 12:12 pm

Well it's finally here - Swiss version 0.1

Please note that from this point on - I'd consider every aspect of this as Work in Progress - and this is why it is open to the public now. Your bug finding and suggestions will be the bloodlines to this project :)

Background:
Swiss is the software that I've been developing on and off the past few months or so. I've labelled it "Swiss" because it'll hopefully (not initially) boast more features than any other homebrew Gamecube utility out there. It is very losely based on the SD-Boot source but about 90% was re-written :)

It is 100% open sourced and available online so you can see changes as I make them and I'll be releasing binary versions with every new feature/improvement.

Current Features:
- Load DOL from SD/SDHC/DVD-R/HDD
- Load GCM/ISO from Original Disc/SD/SDHC/DVD-R/HDD
- Multi-Game DVD-R support (Cobra/GCOS)
- Multi-Disc support Original Disc/SD/SDHC/DVD-R/HDD
- Disc Ripping to SD/SDHC/HDD (WIP)
- Region free / Video forcing (480p) (WIP)
- Full cheat engine for all games (update it via SD/SDHC)
*HDD features require a IDE-EXI or homemade adapter
**SD features require a SDGecko or homemade adapter

Definite future features (in order of priority):
- Memory Card Management
- USBGecko/SE support
- IPL/SRAM/DVD-ROM/RAM dumping
- IPL Configuration

IMPORTANT:
- 480P video mode forcing is Work in Progress - it may not work at all yet!
- Disc dumping is known to corrupt some HDD's - still work in progress!

Two disc games:
Two disc games need to be named using the following name pattern:
game-disc1.xxx game-disc2.xxx
example:
resEvil0-disc1.gcm resEvil0-disc2.gcm


Source Download
Binary Download

* If you are using Action Replay or SD Media Launcher - take it out from the drive and replace it with a proper GC disc after you've booted swiss - it will result in better compatibility *

Image
Image
User avatar
KirovAir
Posts: 214
Joined: Sat Jan 22, 2011 12:13 pm
Location: Netherlands

Re: Swiss 0.1

Post by KirovAir » Tue Feb 01, 2011 12:23 pm

Awesome!
Too bad I´m at work atm, but I'll test it as soon as I come home. Thanks a lot for all your work!
"The only thing more dangerous than a hardware guru with a code patch is a programmer with a soldering iron."
User avatar
liquitt
Posts: 1810
Joined: Thu Apr 01, 2010 5:43 am
Location: neverland

Re: Swiss 0.1

Post by liquitt » Tue Feb 01, 2011 12:30 pm

Darkmystery wrote:Awesome!
Too bad I´m at work atm, but I'll test it as soon as I come home. Thanks a lot for all your work!
same here.

other than that: awesome work mate!
please search before you ask - a lot has been discussed already!
(or use google with "site:gc-forever.com *term*")
http://is.gd/MDmZcr

we also have a wiki filled with knowledge
http://is.gd/dX58Rm
User avatar
Burbruee
Posts: 99
Joined: Wed Jul 28, 2010 5:41 pm

Re: Swiss 0.1

Post by Burbruee » Tue Feb 01, 2011 12:47 pm

I just got home so I'm going to try it right away! :D
.
elias174
Posts: 14
Joined: Sat Apr 03, 2010 2:25 am

Re: Swiss 0.1

Post by elias174 » Tue Feb 01, 2011 1:02 pm

very thanks emukidid, i try test this beautiful homebrew, thanks
yamaharacer
Posts: 448
Joined: Mon Apr 05, 2010 4:11 pm
Location: Germany

Re: Swiss 0.1

Post by yamaharacer » Tue Feb 01, 2011 1:14 pm

you are at work and can surfe through the net? at my ex workplace they would fire me.
User avatar
KirovAir
Posts: 214
Joined: Sat Jan 22, 2011 12:13 pm
Location: Netherlands

Re: Swiss 0.1

Post by KirovAir » Tue Feb 01, 2011 1:19 pm

yamaharacer wrote:you are at work and can surfe through the net? at my ex workplace they would fire me.
Well, I'm a software programmer. So, sometimes I browse the web for a small while, and then continue programming. I don't think my boss notices, or would mind that. :)
"The only thing more dangerous than a hardware guru with a code patch is a programmer with a soldering iron."
User avatar
liquitt
Posts: 1810
Joined: Thu Apr 01, 2010 5:43 am
Location: neverland

Re: Swiss 0.1

Post by liquitt » Tue Feb 01, 2011 1:20 pm

yamaharacer wrote:you are at work and can surfe through the net? at my ex workplace they would fire me.
we are unfiltered, yep.
everyone else is, haha. that a huge plus if you're one of the IT guys :D
please search before you ask - a lot has been discussed already!
(or use google with "site:gc-forever.com *term*")
http://is.gd/MDmZcr

we also have a wiki filled with knowledge
http://is.gd/dX58Rm
User avatar
Extrems
Posts: 1312
Joined: Tue Aug 17, 2010 10:40 pm
Location: Québec, Canada
Contact:

Re: Swiss 0.1

Post by Extrems » Tue Feb 01, 2011 1:26 pm

Image

Clearer picture, because I can.
WiiPower
Posts: 127
Joined: Sun May 23, 2010 5:57 pm

Re: Swiss 0.1

Post by WiiPower » Tue Feb 01, 2011 1:28 pm

Yippie, found the 1st issue.
User avatar
liquitt
Posts: 1810
Joined: Thu Apr 01, 2010 5:43 am
Location: neverland

Re: Swiss 0.1

Post by liquitt » Tue Feb 01, 2011 1:33 pm

WiiPower wrote:Yippie, found the 1st issue.
let's eliminate some bugs!
please search before you ask - a lot has been discussed already!
(or use google with "site:gc-forever.com *term*")
http://is.gd/MDmZcr

we also have a wiki filled with knowledge
http://is.gd/dX58Rm
yamaharacer
Posts: 448
Joined: Mon Apr 05, 2010 4:11 pm
Location: Germany

Re: Swiss 0.1

Post by yamaharacer » Tue Feb 01, 2011 1:35 pm

I cant select anything in swiss. i want to boot a gcm or iso file but it doesnt load. it just stays in the screen and does nothing.

ok it works. but still doesnt load the pal gameboy player disk :(

wow respect. its faster. the zelda wind waker videos doesnt stock anymore. great work.
User avatar
Ashen
Posts: 994
Joined: Tue Nov 16, 2010 3:08 pm

Re: Swiss 0.1

Post by Ashen » Tue Feb 01, 2011 2:28 pm

Awesome Emu, thanks again for all your hard work. will test this out in a bit :)
User avatar
Burbruee
Posts: 99
Joined: Wed Jul 28, 2010 5:41 pm

Re: Swiss 0.1

Post by Burbruee » Tue Feb 01, 2011 2:40 pm

You want a contest? :D
.
User avatar
Extrems
Posts: 1312
Joined: Tue Aug 17, 2010 10:40 pm
Location: Québec, Canada
Contact:

Re: Swiss 0.1

Post by Extrems » Tue Feb 01, 2011 2:42 pm

I can't compete with component on composite.
Lopson
Posts: 8
Joined: Tue Feb 01, 2011 2:34 pm

Re: Swiss 0.1

Post by Lopson » Tue Feb 01, 2011 2:47 pm

emu_kidid, congratulations for the awesome work you've done on Swiss! It's an awesome piece of software!

That being said, the program is still in its infancy, so it's only natural for there to be bugs. I've encountered a few of them and thought I'd share them with you. Keep in mind that I'm using Datel's SD Media Launcher, which means that I'm reading the games from a SD card.

- Sometimes, the program doesn't start. When I load Swiss, the screen goes black and the DVD drive is activated, but no response after that. Other times, I have to press A to get it to start up.
- The only game I've tried so far is Skies of Arcadia, which sadly does not work properly. The game boots just fine, but the problems arise right at the main menu. There's a noticeable sound skip going on at this menu.
But it doesn't end there. While in-game, when I try to access a menu, I immediately get a Disc Read Error. Strangely enough, the music doesn't stop when I get that error.

That's it for now. Again, thanks for this awesome tool!
User avatar
Burbruee
Posts: 99
Joined: Wed Jul 28, 2010 5:41 pm

Re: Swiss 0.1

Post by Burbruee » Tue Feb 01, 2011 3:10 pm

Oh, this with SDHC and FAT32 support. Please explain what I should do. You say there are no problems with SDGecko and SDHC and it depends on the software.

I'm booting like this. ViperGC -> Cobra plugin -> sdload -> Swiss
I think sdload is the problem, It doesn't find anything on SDHC and just now when I tried to format a normal 2 GB SD in FAT32 I got a RSOD gamecube exception in sdload.
Swiss is too large to fit as a plugin I'm pretty sure even if you compress it. The only other method I could think about that doesn't require to burn a disc every time a new version of Swiss comes out would be to use GCOM and then send the Dol through the BBA. But I don't like that and was even thinking about selling my BBA.

EDIT: Or I could use a normal SD card in sdload, then when swiss loads, before I select the slot I can just try and swap the card to something else?

On another note, I just tried Resident Evil 1 NTSC version. I couldn't get it to boot at all, on any video mode. Auto = black screen, NTSC = black screen, PAL50 = black screen, PAL60 = black screen, 480p = WARNING screen shows at half screen height then black screen. I've tried reformatting my SD card several times so I'm sure it's not a fragmentation issue. This same game worked on Sd-boot 0.4 final without any issues and although I have a new computer now I'm pretty sure it's the same dump. (by the way will Swiss be able to support switching to disc 2 in any way from SD or IDE-EXI?)

EDIT: Oh and Swiss never complained about not having an original disc in the drive. Is it no longer required that the disc is original? Backups works too?
.
Lopson
Posts: 8
Joined: Tue Feb 01, 2011 2:34 pm

Re: Swiss 0.1

Post by Lopson » Tue Feb 01, 2011 3:37 pm

Tested another game on Swiss, namely Super Smash Bros Melee. This is what I got on my first try:
Image

On my second try, Swiss does the GCM check properly, but when I press A to start the game up, he just gives the error message "Error: OK".

Still haven't managed to get the game running. I'll edit this post if I manage to do so.
WiiPower
Posts: 127
Joined: Sun May 23, 2010 5:57 pm

Re: Swiss 0.1

Post by WiiPower » Tue Feb 01, 2011 4:39 pm

Hmm, i can't boot any games from SD-Gecko. I only tested Wind Waker yet(just black screen when it is supposed to load), so maybe there's a problem with that game, although the old SD Boot beta loads the game from the same sd card. Since i do all my tests on a wii, i'll wait for more results from other people before i start worrying.

Anyways, i noticed that Swiss (always?) says it can't patch seek. And then i looked at the patch code...
Swiss and NeoGamma use different patterns for it, this is NeoGamma's:

Code: Select all

static const u32 dvd_seek_original[] = {
	0x7c0802a6,
	0x90010004,
	0x38000000,
	0x9421ffe8,
	0x93e10014,
	0x93c10010,
	0x908d9478,
	0x3c80cc00,
	0x38846000,
	0x900d9470,
	0x3c00ab00,
	0x90040008
};
And i think i haven't seen nor heard from a game where it couldn't patch seek. Maybe it's the used function to compare the code to find the location where to patch. Here's the one from NeoGamma(a bit more than memcmp thanks to WiiGator):

Code: Select all

#include <stdint.h>
#include <gctypes.h>

#include "codecmp.h"

/** Instruction type lwz rD, d(rA). */
#define INSN_TYPE_LWZ 32
/** Instruction type stw rS, d(rA). */
#define INSN_TYPE_STW 36
/** Instruction b or bl. */
#define INSN_TYPE_B 18
/** Instruction bc. */
#define INSN_TYPE_BC 16
/** This register is used to access fast global variables. */
#define SDA_REG1 2
/** This register is used to access fast global variables. */
#define SDA_REG2 13

/** Compare code and ignore offsets used for r2 or r13. */
int codecmp(void *checkedCode, const u32 *condition, u32 size)
{
	u32 *code;
	int i;
	int numberOfInstructions;

	code = (u32 *) checkedCode;
	numberOfInstructions = size/sizeof(*condition);

	for (i = 0; i < numberOfInstructions; i++) {
		u32 type;
		u32 rA;

		if (condition[i] == 0) {
			continue;
		}

		type = (condition[i] >> (31 - 5)) & 0x1f;
		rA = (condition[i] >> (31 - 15)) & 0x1f;

		if (((type == INSN_TYPE_LWZ) || (type == INSN_TYPE_STW))
			||((rA == SDA_REG1) || (rA == SDA_REG2))) {
			/* Don't compare offset, because offset can change each time a program is compiled. */
			if ((code[i] & 0xFFFF0000) != (condition[i] & 0xFFFF0000)) {
				/* Code is not identical. */
				return -1;
			}
		} else if (type == INSN_TYPE_BC) {
			/* Ignore offset for branches. */
			if ((code[i] & 0xFFFF0003) != (condition[i] & 0xFFFF0003)) {
				/* Code is not identical. */
				return -1;
			}
		} else if (type == INSN_TYPE_B) {
			/* Ignore offset for branches. */
			if ((code[i] & 0xFC000003) != (condition[i] & 0xFC000003)) {
				/* Code is not identical. */
				return -1;
			}
		} else if (code[i] != condition[i]) {
			/* Code is not identical. */
			return -1;
		}
	}
	return 0;
}
Ok, i get it, patching seek might not be required at all right now. If, then it would be required by the discless mode, and i think i haven't actually seen a game do it(usb gecko debug output). All in all, this a small issue, but still...

Can somebody try 007 Everything or Nothing via SD Gecko or Ide-Exi? Please only people who are able to load games with it. I want to know if it says it can't patch the read, if yes, i think i might have something.
yamaharacer
Posts: 448
Joined: Mon Apr 05, 2010 4:11 pm
Location: Germany

Re: Swiss 0.1

Post by yamaharacer » Tue Feb 01, 2011 4:46 pm

swiss on my cube can load wind waker. no problem.
User avatar
gCube
Posts: 8
Joined: Sat Jan 29, 2011 7:25 am
Location: The Netherlands

Re: Swiss 0.1

Post by gCube » Tue Feb 01, 2011 5:01 pm

Mario Kart : Double Dash!! works amazing! Thanks for this release, i'm gonna try James Bond nightfire now, i'll tell you guys if my favorite gamecube multiplayer game works! :lol:
I have a XenoGC, a SD Media Launcher, a SD Gecko and a IcedCube case for my Nintendo Gamecube
Aressi
Posts: 88
Joined: Wed Mar 31, 2010 5:36 pm
Location: Mexico
Contact:

Re: Swiss 0.1

Post by Aressi » Tue Feb 01, 2011 5:22 pm

Game boy player start up disc (U) works fine, Star fox assault (Pal) works fine on sdboot, but in swiss after the Hz selection stucks in a black screen, Pokemon box doen't work
WiiPower
Posts: 127
Joined: Sun May 23, 2010 5:57 pm

Re: Swiss 0.1

Post by WiiPower » Tue Feb 01, 2011 5:34 pm

Aressi wrote:Game boy player start up disc (U) works fine, Star fox assault (Pal) works fine on sdboot, but in swiss after the Hz selection stucks in a black screen, Pokemon box doen't work
Is Star Fox Assault an audio streaming game? If yes, do you happen to know if the game tries to play an audio stream in that moment?

Pokemon Box does something to 0x80001800:
http://www.gc-forever.com/forums/viewto ... p=796#p796

Looks like emu_kidid knows about it, but did not have time to fix it yet. Can you add it to the issues at Google Code so it's officially known and it does not need to be reported again by somebody else?
User avatar
deku_scrub
Posts: 172
Joined: Thu Apr 01, 2010 7:34 pm
Location: Balneário Camboriú, Santa Catarina - Brasil

Re: Swiss 0.1

Post by deku_scrub » Tue Feb 01, 2011 6:02 pm

sweeeeeet emu_kidid, sweeeeet
__ deku_scrub __ Wii D3-2 | System 4.3 | HC installed using Smash Stack | WODE Jukebox
Xbox 360 Slim 4GB | 320GB Hacked HDD | x360key
User avatar
Cubelover
Posts: 313
Joined: Wed Apr 07, 2010 1:22 am

Re: Swiss 0.1

Post by Cubelover » Tue Feb 01, 2011 6:13 pm

Yay, thanks emu_kidid. I guess it's testing time :D
Swiss compatibility list, anyone?
Locked