Codes
WiiRd forum
March 28, 2024, 07:04:17 PM *
Welcome, Guest. Please login or register.

Login with username, password and session length
News: Welcome on the new server

Update 4.3 - do NOT update!
Gecko 1.9.3.1
Should I get a USB Gecko, I wanna hack?
How do I use my USB Gecko
Where can I get WiiRd?
 
   Home   CODE DATABASE GAMEHACKING Help Search Login Register  
Pages: [1] 2
  Print  
Author Topic: Quick Questions  (Read 5754 times)
dash
Guest
« on: October 07, 2010, 03:18:54 PM »

I'm using linux and I prefer command line interfaces to point and click GUI's... I was wondering if anyone could answer these:

1) Is the WiiRD PC side API for communication with the USB Gecko actually written in pascal? Has anyone ported it to 'c' yet?
2) Is the Wii side of the debugger incorporated into libogc by default? Say could one debug homebrew apps by just having the USB Gecko present?
3) Has anyone implemented an artwork viewer for any game? For example you probe the game, figure out how the 3D models are stored, then write an application on the PC side to retreive models over the USB Gecko interface and display them, maybe using OpenGL?
4) Ditto for question #3 as regards sound effects?
5) Is there a limit to how big the patches can be? Suppose you wanted to supply alternate textures or different 3D models for a game (such as New Super Mario Bros Wii). Could you modify the code to access files on the SD card to pull in alternate data than the real data in the game?

Thanks
PS 1991 I used to hack sega genesis games, the machine had 64K bytes of ram. Finding where health and lives stored was easy, you'd just look for bytes that were increasing or decreasing (5, 4, 3, 2, etc) as you lose a life. Funny how the techniques stay the same over the years... I actually fixed a bug in the game Micro Machines where the blue car had more mass than the red car and could unfairly push it all over the place. Patch applied after the fact to the BIN image...
Logged
dcx2
Computer Engineer
Moderator
Legendary Member
*****

Karma: 165
Posts: 3468


WWW
« Reply #1 on: October 07, 2010, 05:01:11 PM »

I can understand why you prefer CLI, but I think you would find the GUI to be much faster for integrating the large amount of data involved in hacking.  There are a lot of things that the GUI will do for you that would be quite tedious to do by hand; for instance, watching memory change via Memory Viewer in real time, viewing the disassembly instead of machine code, parsing the stack so it can display the call stack.

1) WiiRD Console was implemented in Delphi, I thought.  The console and the GUI have been merged and ported to C# in a project called Gecko.NET.  The code for Gecko.NET is available on Google Code; http://wiird.l0nk.org/forum/index.php/topic,6833.0.html  It is mostly compatible with mono, although it still needs a little love...

2) I'm not sure.  Maybe one of the other devs can cover this one.  I think you might be able to use Gecko OS rebooter function to load and debug homebrew apps, maybe?  Or channel loading?

3) WiiRDGUI and Gecko.NET have File System Table (FST) tabs.  These tabs can automatically parse the directory structure for you, so you can see where the models are stored.  I believe you can even download the models and then open them in e.g. Hammer or something like that.  Gecko.NET can also automatically generate GCT codes that swap one model for another by directly modifying the FST.

4) Ditto for #3 in regards to FST.

5) I know Gecko OS supports patching, but I'm not too sure on the details.  There was once a very active Brawl+ community.  However, there's a newer project called Riivolution that is supposed to support patching via the SD card.  I don't think it has any size restrictions.  It has been used, for example, to provide an unofficial language patch for the game Fatal Frame 4, so that users outside of NTSC-J can play the game.  I believe they also made new outfit models for the game, too.

Re: PS, it's actually pretty hard to patch the actual game without something like Gecko OS or Riivolution.  Games are signed with crypto (AES, I think?).  In order to run your own game, you need Nintendo's key, or you need to patch the Wii's firmware so that it will accept forged signatures.
Logged

Romaap
Hacker
Moderator
Legendary Member
*****

Karma: 89
Posts: 1802


WWW
« Reply #2 on: October 07, 2010, 05:43:28 PM »

2) Is the Wii side of the debugger incorporated into libogc by default? Say could one debug homebrew apps by just having the USB Gecko present?
Yes it is, you can debug Homebrew Applications with your USB Gecko.
All the information you need is found here on Wiibrew.

Although I find the GUI version of the debugger very unstable, but I guess you wont notice that since you would use the CL version I guess. Smiley


2) I'm not sure.  Maybe one of the other devs can cover this one.  I think you might be able to use Gecko OS rebooter function to load and debug homebrew apps, maybe?  Or channel loading?
Unfortunately this would not work, since libogc is different to Nintendo's official SDK it will have its standard Subroutines at other places.
So when Gecko tries to hook to one of the subroutines from Nintendo's SDK it will just be a random address in a libogc compiled Application.
« Last Edit: October 07, 2010, 08:44:09 PM by Romaap » Logged
dash
Guest
« Reply #3 on: October 07, 2010, 05:47:20 PM »

I can understand why you prefer CLI, but I think you would find the GUI to be much faster for integrating the large amount of data involved in hacking.  There are a lot of things that the GUI will do for you that would be quite tedious to do by hand; for instance, watching memory change via Memory Viewer in real time, viewing the disassembly instead of machine code, parsing the stack so it can display the call stack.

1) WiiRD Console was implemented in Delphi, I thought.  The console and the GUI have been merged and ported to C# in a project called Gecko.NET.  The code for Gecko.NET is available on Google Code; http://wiird.l0nk.org/forum/index.php/topic,6833.0.html  It is mostly compatible with mono, although it still needs a little love...

Thanks for your response. Somehow when I see .NET I think .SHIT, sort of a pavlovian response related to my absolute disgust of all things M$. I'll never use .NET or even an open source equivalent if one exists. I guess I'll be stuck doing the 'c' port of the basic low level functionality myself then. No big deal... My USB Gecko has to arrive in the mail first though.
Logged
dcx2
Computer Engineer
Moderator
Legendary Member
*****

Karma: 165
Posts: 3468


WWW
« Reply #4 on: October 07, 2010, 05:57:17 PM »

2) I'm not sure.  Maybe one of the other devs can cover this one.  I think you might be able to use Gecko OS rebooter function to load and debug homebrew apps, maybe?  Or channel loading?
Unfortunately this would not work, since libogc is different to Nintendo's official SDK it will have its standard Subroutines at other places.
So when Gecko tries to hook to one of the subroutines from Nintendo's SDK it will just be a random address in a libogc compiled Application.

That just means we need a different hook for libogc, right?


Somehow when I see .NET I think .SHIT, sort of a pavlovian response related to my absolute disgust of all things M$. I'll never use .NET or even an open source equivalent if one exists.

Oh, I see.  You're one of those types of Linux people.  Have fun re-inventing the wheel.
Logged

Romaap
Hacker
Moderator
Legendary Member
*****

Karma: 89
Posts: 1802


WWW
« Reply #5 on: October 07, 2010, 06:01:42 PM »

2) I'm not sure.  Maybe one of the other devs can cover this one.  I think you might be able to use Gecko OS rebooter function to load and debug homebrew apps, maybe?  Or channel loading?
Unfortunately this would not work, since libogc is different to Nintendo's official SDK it will have its standard Subroutines at other places.
So when Gecko tries to hook to one of the subroutines from Nintendo's SDK it will just be a random address in a libogc compiled Application.

That just means we need a different hook for libogc, right?
As far as I know, yes that would work.

Unless Gecko wants to be in a place which is used by libogc, then we should also need to find another place for the codehandler to be.
Logged
dash
Guest
« Reply #6 on: October 07, 2010, 06:57:13 PM »

Oh, I see.  You're one of those types of Linux people.  Have fun re-inventing the wheel.

Err, actually it would be avoiding bloat that I never wanted in the first place. As in a GUI. A mouse is a very low bandwidth input device. Besides which I don't necessarily want to be manually doing the operations, rather a program would automate things...
Logged
dcx2
Computer Engineer
Moderator
Legendary Member
*****

Karma: 165
Posts: 3468


WWW
« Reply #7 on: October 07, 2010, 08:04:15 PM »

A keyboard has about the same bandwidth as a mouse.  We've got multiple GB of RAM and multiple GHz of processing power.  The USB Gecko is a glorified serial port.

You have a pre-existing prejudice that you're attempting to justify after-the-fact.  You even admitted it - your pavlovian response to any Microsoft product, even one that has been ported for Linux.

I don't want you to misunderstand me.  I don't hate C, or the idea of porting the interface.  What I can't stand is the righteous attitude of yours that I see shared by many in the Linux community.  You try to sugar-coat the attitude with excuses like 'GUIs are bloated', but I bet you're using X right now.

Feel free to port the interface, but like I said...you're going to be re-inventing the wheel.  It takes a long time to write the features included in the GUIs, and that's time that you could have spent writing codes instead.  And any process you want to automate could just as easily be automated with the GUI...it's a shame that you wouldn't want to share such features with the rest of the community.
Logged

dash
Guest
« Reply #8 on: October 07, 2010, 08:25:48 PM »

I don't want you to misunderstand me.  I don't hate C, or the idea of porting the interface.  What I can't stand is the righteous attitude of yours that I see shared by many in the Linux community.  You try to sugar-coat the attitude with excuses like 'GUIs are bloated', but I bet you're using X right now.

Did you actually use the words righteous attitude? If that isn't the pot calling the kettle black.

While we're on the subject, I'll assume you were instrumental in the choice of going with .NET for a platform to develop a user interface. Here are some questions:

o Why choose a closed source, buggy, locked down operating system for what you want (clearly) to be a community project?

o Why do you assume developers will be using a microsoft OS? Because if you are going to use .NET, you're pretty much eliminating any linux or OSX users right off the bat. You know, those ones that already have thriving communities.

o Why do you assume that it's OK to require the .NET development infrastructure? Doesn't that cost money, on top of the OS itself? Oh, I get it. You pirated the OS, and you pirated the .NET development infrastructure. Silly of me to have thought otherwise, considering this Wii hacking arena we're playing in.

o What happens when .NET vanishes, when M$ stops supporting it? Can you port your .NET code elsewhere easily? Or will it vanish too? If you had used GTK+ or equivalent, your GUI would work everywhere. Windows, linux, OSX, Android. Whatever. But your .NET choice is... rather limiting. GTK will exist forever. .NET is microsoft's latest flash in the pan. I've seen 'em come and go.

I think you're trying to justify your choice of the .NET framework after the fact, when it comes right down to it. Face it, it was Just Plain Wrong. And now you're getting a taste of one of the issues -- when developers for reasons of their own decide to opt out and go their own way. Strange that you get so defensive and rude about it...

.NET. It's the next step up from Script Kiddie. Can it even be called programming? I suppose it's all relative, isn't it.

Do you know the only possible reason why someone would go with .NET is because it is easy? Like playing in a sandbox. Do you not see the irony of choosing a closed development platform in order to create an open hacking environment somewhere else? Quite funny, actually.

Now as to my specific requirements, I never use GUI based debuggers. I always use command line ones. It's just the way I'm wired. GUI's are fine for some things, like paint programs. But not for debugging. I don't even use these IDE's. Just a text editor and Makefiles for me.
Logged
dcx2
Computer Engineer
Moderator
Legendary Member
*****

Karma: 165
Posts: 3468


WWW
« Reply #9 on: October 07, 2010, 09:07:37 PM »

Yes, I did use "righteous attitude".

Somehow when I see .NET I think .SHIT, sort of a pavlovian response related to my absolute disgust of all things M$. I'll never use .NET or even an open source equivalent if one exists.

Please, show me where I said I would never use Linux or CLI for anything, ever.  I would consider that especially amusing since I actually put forth effort into making Gecko.NET run on mono.  Any "righteous attitude" I had is purely a result of your refusal to use someone else's wheel.

But while we're on the subject...

1) I didn't choose to use .NET.  Link did.  http://wiird.l0nk.org/forum/index.php/topic,6833.msg58990.html#msg58990

Mono is the open-source implementation of .NET that allows you to run them in Linux.  So no, you aren't "locked down" to a "closed source, buggy" operating system (words which again demonstrate your righteous attitude).  For that matter, at least one user runs Gecko.NET on a Mac via Virtual Machine.

And finally...well....considering how we want people to actually use this software, it might be nice if it was written for an OS that most of them have.

2) There's an app called MonoDevelop that will let you code for .NET apps in Linux.  So we aren't eliminating Linux users.  I'm sure Visual Studio can run in a VM, too...so we aren't eliminating Macs either.

3) Whoa there...you clearly have no clue WTF you are talking about.  If you have Windows, you can download and build Gecko.NET from source for free.  The .NET framework does not cost a penny.  Visual Studio Express does not cost a penny.

And then you have the audacity to claim that the Wii hacking scene supports piracy?  You're clearly new here.  We hate pirates.  We ban the discussion of backup/USB loaders from this forum.  Gecko OS can only load original Wii discs.  Team Twiizers has gone out of their way to make life harder for pirates by banning apps that use cIOS from Wiibrew.

BTW, my copy of Windows XP came bundled with my laptop.  Believe it or not, I don't mind paying for software.  I like to support developers.  They have children who need to eat and go to college.

4) What happens when .NET vanishes or loses support?  Well gee, I guess when .NET "vanishes", the magic goblins come to my PC in the middle of the night and uninstall it while I'm not looking.   rolleyes

BTW, good luck watching .NET "come and go".  It's been here for over 8 years.  That's some "flash in the pan".

---

Regarding the rest of your post...you're trying desperately to troll me, aren't you?  You used the wrong d-word.  I wasn't getting defensive.  I was being dismissive.  I've seen your type before, and your type is what ruins the Linux community.

Just remember, while you complain about how "easy" .NET is, that you're still using printf and scanf from a library that was written by someone else.  Real programmers write to the video card buffer and read from the keyboard BIOS buffer with system calls!   rolleyes

BTW, are you still using that bloated GUI called X?
Logged

dcx2
Computer Engineer
Moderator
Legendary Member
*****

Karma: 165
Posts: 3468


WWW
« Reply #10 on: October 07, 2010, 09:43:34 PM »

Visual Studio Express 2008 does not cost money.  http://www.microsoft.com/express/Downloads/#Visual_Studio_2008_Express_Downloads

Quote
Visual Studio 2008 Express Editions are free development tools.

EDIT: for that matter, VS2010 Express is also free.  http://www.microsoft.com/express/Downloads/#Visual_Studio_2010_Express_Downloads

Logged

dcx2
Computer Engineer
Moderator
Legendary Member
*****

Karma: 165
Posts: 3468


WWW
« Reply #11 on: October 07, 2010, 10:02:43 PM »

Aww, you don't have to think that.  It's not like you were irrationally refusing to use the open-source port of some framework because of pre-existing prejudices toward the original developers of the framework.  You didn't accuse me of being a pirate, nor did you attempt to belittle my programming skills with ad hominem attacks like "script kiddie".

dash is just disrespectful.  It's a quite common problem among Linux enthusiasts.  They don't believe in co-existing with other solutions; other solutions are just *wrong*.  Linux snobs are part of what keeps the masses from adopting Linux...and oddly, I bet dash prefers it that way.

What's the difference between a Windows user and a Linux user?  A Windows user doesn't care if you're running Linux.
Logged

hawkeye2777
Hacker
Sr. Member
*****

Karma: 25
Posts: 355


« Reply #12 on: October 07, 2010, 10:31:35 PM »

What would be the benefits to a complete CLI (other than using less resources)? I can't think of any instances while hacking the Wii where running a couple of scripts would be more efficient than using the GUI. Maybe it's just me.
Logged

Currently "retired" from hacking codes.
dash
Guest
« Reply #13 on: October 07, 2010, 10:32:42 PM »

dash is just disrespectful.  It's a quite common problem among Linux enthusiasts.  They don't believe in co-existing with other solutions; other solutions are just *wrong*.  Linux snobs are part of what keeps the masses from adopting Linux...and oddly, I bet dash prefers it that way.

Strawman "argument", as is most of what you write. Not worthy of response.

One parting comment: You probably use devkitppc to build code for the Wii, right? And that's just a port of gcc. Which is part of the GNU suite. And the people that made that happen consciously made choices to NOT go down the path of things like .NET. You live life in blissful ignorance, not taking a stand, not understanding how decisions you make affect the world. There is right and wrong in the world. Good and evil. Microsoft is evil, they've demonstrated that endlessly.  I'm done with interacting with you. And if you're typical of what this community has to offer, perhaps I'm done interacting with it as well.

Logged
dash
Guest
« Reply #14 on: October 07, 2010, 10:35:29 PM »

What would be the benefits to a complete CLI (other than using less resources)? I can't think of any instances while hacking the Wii where running a couple of scripts would be more efficient than using the GUI. Maybe it's just me.

What if you wanted a tool to examine and display data structures (such as 3D models) in a game? Something that is very specific to an individual game. It uses the USB Gecko and the embedded debugger for IO but nothing else.

If you have a GUI you lock yourself into just one thing. There is more to the world than just coming up with a hack to give the player infinite lives...
Logged
Pages: [1] 2
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2013, Simple Machines Valid XHTML 1.0! Valid CSS!