Hacking SoftChip Backup Loader

Dark_anth

Banned!
Banned
Joined
Aug 1, 2008
Messages
243
Trophies
0
XP
217
Country
United States
why is he making a loader when one is already out? is this going to be better or have anything new? i mean no offense, but wiigators is nearly perfect. will this have 6x or something like that?
 

Seraph863

Active Member
Newcomer
Joined
Sep 26, 2008
Messages
41
Trophies
0
XP
7
Country
United States
Softchip is designed to allow booting of 1:1 backup discs on your Wii.
Primary Goals

* Allow a broad range of developers to contribute.
* Compatibility with almost all Wii titles.
* Compatibility with existing cIOS releases.
* Compatibility with consoles from any region.
* Compatibility for ISO9660 Homebrew discs

Secondary Goals

* Ability to use "Ocarina"-style codes
* Compatibility with "Waninkoko/WiiGator"-style decrypted discs
* Store any configuration to SD/USB
* Region/video patching to allow imported discs & backups from any region

Wishlist

* Allow runtime patching of the system menu & Starlet to use the Disc Channel on system boot
* Remove the need for any cIOS.
* Allow 6x drive speed while running backup discs.


All taken from page 1 of the project code. It's coded in C++ too! Gator and Wan's were not coded in C++.

Currently this loader is NOT working, so we can't determine if it is faster or more compatible. However, I am VERY excited for this release!

Edit: He is PROBABLY working on this project to challenge himself, learn about the Wii and console applications (first time coding for a console), possibly out of boredom... Who knows! This release might actually be better than WiiGator's! His is better than Waninkoko's, isn't it?
 

madtamski

Well-Known Member
Member
Joined
Oct 15, 2008
Messages
404
Trophies
0
Age
54
Location
Glasgow, Scotland, UK
Website
Visit site
XP
137
Country
As far as I can see the comment only relates to the function/procedures name.

Generally coders don't list the param defs. when they're re referencing them.
We do as a standard, but only once just above the proc/func declaration

In the function above it has no params, so it's defined as ()
 

Seraph863

Active Member
Newcomer
Joined
Sep 26, 2008
Messages
41
Trophies
0
XP
7
Country
United States
Well yes... we've established that there is a typo in the comment and it doesn't affect anything. Was just pointing it out. Moving along now.
 

madtamski

Well-Known Member
Member
Joined
Oct 15, 2008
Messages
404
Trophies
0
Age
54
Location
Glasgow, Scotland, UK
Website
Visit site
XP
137
Country
Seraph863 said:
Well yes... we've established that there is a typo in the comment and it doesn't affect anything. Was just pointing it out. Moving along now.

Sorry man wasn't pushing the point, but by the time I had sorted out my post around half a dozen others had appeared lol

No worries :-)
 

requiem4d

Well-Known Member
OP
Member
Joined
Oct 25, 2008
Messages
181
Trophies
0
XP
54
Country
United States
Thanks to everybody for your support again. Also thanks to Waninkoko for his review of my code. That in itself was an honor and a privilege.

Apologies to Traveler1 who showed up earlier in the IRC channel, I was out running service calls for my "real job".

Thanks also for pointing out the typo in the comment. Although a code comment doesn't make any difference as to the functionality of a program, when documentation is being written it can prevent a copy-paste typo transition. That has been corrected.

Also, I realize that this isn't necessarily the best venue for a release to "call for coders", but software needs more than programmers to survive. It needs the support of alpha/beta testers, bug reports, feature requests, and general publicity to gain support of the community, and I chose a place due to the large user base here at GBAtemp who had already been using WiiGator's and Waninkoko's loaders.

I hope we can get this thing fixed in the next few days.

Also:
QUOTE said:
why is he making a loader when one is already out? is this going to be better or have anything new? i mean no offense, but wiigators is nearly perfect. will this have 6x or something like that?

I have several reasons:
1.) This is my FIRST application for a game console. This has been a learning experience for me.
2.) I would like to allow the community to have updated sources almost the moment they're made.
3.) Third, I would like to have input from a much broader range of developers.
4.) I was bored.

Someone else suggested doing something similar for a first project, and it was deemed "too difficult". I've always loved a challenge. After spending 3 years developing an OS for x86-64 CPUs in my spare time, I figured this would be a nice change of pace.
 

masaemon

Well-Known Member
Newcomer
Joined
Sep 27, 2008
Messages
70
Trophies
0
XP
116
Country
United States
requiem4d said:
Thanks to everybody for your support again. Also thanks to Waninkoko for his review of my code. That in itself was an honor and a privilege.

Apologies to Traveler1 who showed up earlier in the IRC channel, I was out running service calls for my "real job".

Thanks also for pointing out the typo in the comment. Although a code comment doesn't make any difference as to the functionality of a program, when documentation is being written it can prevent a copy-paste typo transition. That has been corrected.

Also, I realize that this isn't necessarily the best venue for a release to "call for coders", but software needs more than programmers to survive. It needs the support of alpha/beta testers, bug reports, feature requests, and general publicity to gain support of the community, and I chose a place due to the large user base here at GBAtemp who had already been using WiiGator's and Waninkoko's loaders.

I hope we can get this thing fixed in the next few days.

Also:
QUOTE said:
why is he making a loader when one is already out? is this going to be better or have anything new? i mean no offense, but wiigators is nearly perfect. will this have 6x or something like that?

I have several reasons:
1.) This is my FIRST application for a game console. This has been a learning experience for me.
2.) I would like to allow the community to have updated sources almost the moment they're made.
3.) Third, I would like to have input from a much broader range of developers.
4.) I was bored.

Someone else suggested doing something similar for a first project, and it was deemed "too difficult". I've always loved a challenge. After spending 3 years developing an OS for x86-64 CPUs in my spare time, I figured this would be a nice change of pace.
Appreciate your work and expecting your loader.
I admire your coders so much and and i start to want to study more programing knowledge.
wish the new reader will resolve the "disk read" prob.
Thanks.
 

WiiPower

Well-Known Member
Member
Joined
Oct 17, 2008
Messages
8,165
Trophies
0
XP
345
Country
Gambia, The
When i start this loader, it identifies the game correctly and crashes then with a null poiter exception, as expected. But if i simply retry to load by pressing A, it crashes again, with a difference in the System certificates location. 0x80d02c60 and 0x80d03820. When i take a look at http://wiibrew.org/wiki/Memory_Map i'm completely confused: Shouldn't this loader use the memory starting at 0x81330000 and keep the memory before that free?

PS: I know i don't have a lot of knowledge and maybe the stuff i mention is worthless, but please take a look at it anyway.
 

requiem4d

Well-Known Member
OP
Member
Joined
Oct 25, 2008
Messages
181
Trophies
0
XP
54
Country
United States
Theoretically, yes. However, the very games the software tries to load doesn't always follow the "rules" from wiibrew. Wiibrew has been an amazing resource in trying to get all this done, so not to detract anything from them at all.

Case in point, the Wario Land bug I just fixed in WiiGator 0.3b, although at the very top of this area in memory, the storage of the entryholder in this location causes the game to lock with a black screen upon loading.

Thanks for the suggestion, and the review.
biggrin.gif
 

WiiPower

Well-Known Member
Member
Joined
Oct 17, 2008
Messages
8,165
Trophies
0
XP
345
Country
Gambia, The
I think i have found a small bug:
If i try to load a game and presse the power button after getting the exception, the wii shuts down. But the wiimotes does not and i'm not capable to turn the wii on with the wiimote. I tried to force the wii to shutdown the wiimote with this:
void SoftChip::Standby()
{
WPAD_Shutdown(); // Added to shutdown the wiimote
STM_ShutdownToStandby();
}

But now the wii crashes totally when i press the power button.
 

requiem4d

Well-Known Member
OP
Member
Joined
Oct 25, 2008
Messages
181
Trophies
0
XP
54
Country
United States
Confirmed. Good job spotting this one. Do you get a code dump or just a hard freeze? I've added the issue to the project site.
 

roy_hu

Active Member
Newcomer
Joined
Oct 21, 2008
Messages
29
Trophies
0
XP
28
Country
United States
I compared your code with wiigator's side by side, but couldn't figure out where the problem lies. I also made a few changes I thought might help, but they didn't work. The only way to debug this I can think of, is to replace every piece of your code with wiigator's, until we locate the bug. It must be a very tiny one that we overlooked.
 

requiem4d

Well-Known Member
OP
Member
Joined
Oct 25, 2008
Messages
181
Trophies
0
XP
54
Country
United States
QUOTE said:
I compared your code with wiigator's side by side, but couldn't figure out where the problem lies. I also made a few changes I thought might help, but they didn't work. The only way to debug this I can think of, is to replace every piece of your code with wiigator's, until we locate the bug. It must be a very tiny one that we overlooked.

Feel free do to that, at least to figure out where the problem lies. However, that isn't the proper solution to this issue. While a lot of the calls may be similar (they really have to be) to WiiGator's, this is not based on his loader. I thought of using his code as a base, but decided against it to keep from having to sort through tons of "original application" code. Most of the information used in construction of this loader came from the dip module, wiibrew, information gathered by examining the structure of a Wii disc, and old-fashioned trial and error.

In order to truly have a "fix", we need to analyze the apploader further to figure out what I'm doing wrong.

I know this information has already been reversed, but other than the apploader by marcan, bushing, and others, I don't have a very reliable reference on how this particular part works beyond loading the apploader into memory, setting a pointer to a function, and retrieving function pointers needed to load the system file sections, boot, fst, bi2, and main.dol.

It's times like these I wish I knew a little more about the console.
 

Jacobeian

Well-Known Member
Member
Joined
May 15, 2008
Messages
1,893
Trophies
0
XP
387
Country
Cuba
requiem4d said:
Thanks, I'll see what I can figure out.


You should not directly call shutoff functions in IRQ Callbacks (and power button callback is one)

What you have to do is:
1/ make the callback setup a flag in your code
2/ check for the status of this flag periodically in your code and call whatever you want to shut down the Wii when it's set (SYS_ResetSystem(SYS_POWEROFF,0) should be better)

Anyway, this an interesting idea and your code seems to be clean BUT I fear most issues rely in the modified IOS code, not in the loader itself (or maybe just for a few ones, like clearing bad memory areas
wink.gif
)
 

requiem4d

Well-Known Member
OP
Member
Joined
Oct 25, 2008
Messages
181
Trophies
0
XP
54
Country
United States
QUOTE said:
You should not directly call shutoff functions in IRQ Callbacks (and power button callback is one)

What you have to do is:
1/ make the callback setup a flag in your code
2/ check for the status of this flag periodically in your code and call whatever you want to shut down the Wii when it's set

Thank you. Fix will be in svn shortly.

QUOTEAnyway, this an interesting idea and your code seems to be clean BUT I fear most issues rely in the modified IOS code, not in the loader itself (or maybe just for a few ones, like clearing bad memory areas

Unfortunately, I'm afraid you're most likely correct. In any case, hopefully, we'll know for sure soon. At which point we can shift our goals to either a fully-working cIOS or something else entirely...
 

sum182

Well-Known Member
Newcomer
Joined
Oct 23, 2008
Messages
65
Trophies
0
XP
55
Country
United States
Id like to do some beta testing and see if i could work any bugs out. Im very much a newb at coding but maybe i'll be able to see something. I have the source since you posted it here but could someone compile it for me? For some reason i cant =(
 

WiiPower

Well-Known Member
Member
Joined
Oct 17, 2008
Messages
8,165
Trophies
0
XP
345
Country
Gambia, The
I have problems to understand the loop where the error occurs(i know that the error could be somewhere else):

while (Load(&Dest, &Size, &Loader_Offset))
{
// Here is where the problem is... Dest shouldn't be zero.
if (!Dest) throw ("Null pointer from apploader.");
if (DI->Read(Dest, Size, Loader_Offset
 

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
    K3Nv2 @ K3Nv2: Oh man don't get the snowflakes worked up