C# USB Gecko handler

Started by Link, August 06, 2009, 06:42:16 PM

Previous topic - Next topic

Panda On Smack

Awesome

I'm interested in how it all works as well Link

Romaap

oh.... Link, yours already looks far more superior to mine. (But mine has watchlist and displays the game id :) ).
I haven't had the time to really work on it last week because of a big school project, the searching speeded up a lot (except when searching for 0) but it can't do a second search :-\.
I'll PM you about my details :P.

giantpune

wow.  thats looking nice link.  i think that the .NET version will automatically fix some of the GUI bugs from the current version (have to left-click before certain right-click works right).  how is your dumping speed compared to the delphi version?

also, since this is still being worked on, I hope I can make a small request.  currently wiird takes full control of the gecko driver.  i think beside your "reconnect" button there should be a "disconnect" button.  so it will allow temporary use of the gecko for other apps without having to close wiird and lose all current information.

anyways, keep it up.  i cant wait to see this puppy in action.

Link

Quote from: giantpune on November 07, 2009, 04:11:55 AM
wow.  thats looking nice link.  i think that the .NET version will automatically fix some of the GUI bugs from the current version (have to left-click before certain right-click works right).  how is your dumping speed compared to the delphi version?

also, since this is still being worked on, I hope I can make a small request.  currently wiird takes full control of the gecko driver.  i think beside your "reconnect" button there should be a "disconnect" button.  so it will allow temporary use of the gecko for other apps without having to close wiird and lose all current information.

anyways, keep it up.  i cant wait to see this puppy in action.

Admittedly most of the errors are not really kenobi's fault. WiiRd GUI was originally developed in Delphi 6 and was ported to Delphi 2006. It is based on GCNrd GUI and GCNrd GUI originally was only for Windows 98 and ME. Windows 2000 support is already kinda hacked in at certain places if you look at its code.. Windows XP uses the same Windows 2000 code, Windows Vista.. well again.. now I for myself have Windows 7 by now.. and yes, WiiRd GUI still works yet I can't deny multiple occasional crashes, sometimes it overloads the console because Windows Vista/7 have a new messaging concept between applications (the GUI and the console exchange information).

For speeds.. they seem pretty good to me, I didn't stop them but for initial searches they are quite fast. As it does not do that block dumping (yet?) it is however slower on refining searches. The search algorithm however is optimized and works quite fast.

A disconnect button.. hm.. interesting idea, no problem I add that one in!

Link

#19
Well, zoah far, so good:

I guess I am able to release a first beta kinda.. it is still a shadow of what it's supposed to be:

http://l0nk.org/geckodn1b.zip - binaries (please use geckoDotNET.exe)
http://l0nk.org/geckodn1s.zip - source code

Screenshots:
[spoiler]

Code search was optimized for speed.. due to the fact though that it is not blocking downloads it, it cannot reach the speed of WiiRd GUI though when it comes to refining searches!


Memory view is fully functional it does not allow uploading yet!


Breakpoints unfortunately have no stepping yet - changing register values however is well possible, just click them!


Disassembler and one line assembler are functional!


No EFB support yet, other than that fully functional and VERY fast preview code!


Works that way so far


no comment!
[/spoiler]

Oh, before I forget: Gecko dotNET has been compiled against .NET 2.0 - I used the lowest version possible as I tend to not manually enforcing the highest version possible unless I cannot get it to compile with a lower one. In a test it even ran on a Windows 98 Virtual Machine I had.

And yes: no console!

Planned features: FST tab, Watchlist.. for pointer search I am not quite sure if that does not belong in a seperate application.. you know: pointer search while being helpful and important should not lock up the main debugger, thus I think it is going to be a seperate application.

Romaap

#20
Thats unfair!

I spend a month to get mine working, but it still isn't finished.
And you made that in a week?!



EDIT:
I just ran it in Visual Studio and compiled it, but it gave an exception.
I don't remember what I did, but I think I was just in the GCT tab and closed Gecko dotNET (and I think I pressed the add code button).
Here is a screenshot of the exception:
[spoiler][/spoiler]

Link

No, you're completely correct.. there are several issues appearing randomly.. I still do not know what exactly happens about the codes.. One other issue I have fixed so far is a breakpoint issue (it was never able to hit on a following address).. for my development.. I admit one thing: I always wanted to write that.. and I develop all application concepts on paper.. and I in the end never implemented it, I have paper work of over 70 pages and that was brain storming concepts for also 2 or 3 months.

Once I have these kinda concepts I can program them in quite a short time. I actually belong to those: without ANY(!) concept I won't get anything done at all, as my head is completely unsorted.

giantpune

so when you are done with this .NET version, is it safe to say it will be able to be compiled in MonoDevelope & run in linux?  I realise that the mounting of  the gecko is handled differently, but will the rest of the program work right once the connecting and reading functions are changed to the ttyUSB0.  im just trying to figure out an easy way to get a GUI for WiiRD going in ubuntu (or if there is already one can somebody link to it).

Link

Quote from: giantpune on November 14, 2009, 09:54:31 PM
so when you are done with this .NET version, is it safe to say it will be able to be compiled in MonoDevelope & run in linux?  I realise that the mounting of  the gecko is handled differently, but will the rest of the program work right once the connecting and reading functions are changed to the ttyUSB0.  im just trying to figure out an easy way to get a GUI for WiiRD going in ubuntu (or if there is already one can somebody link to it).

I already tested compilation with MonoDevelop.. the Windows version compiles out of the box and runs. For Linux.. I must admit: some tests are required and some changes need to be done. To make it short.

The Windows version currently uses ftd2xx.dll (FTDI detection) and shell32.dll (detection of icons for the FST tab). I will include the items required for the FST tab in a Linux version and the Linux version will be rewritten to use libftdi.so - so you'll need to download libftdi but other than that it hopefully compiles! Just some things before hand: it will not use the VCP component in Linux (where the USB Gecko acts as a virtual COM port), it will only work in D2XX mode - Linux unfortunately does not allow both to be used, it's just a fact that D2XX is like 20 times faster. If your kernel is not configured to explicetely use VCP, the USB Gecko will run in D2XX mode by default anyway! Other than that: the Source archive of the beta I released can be downloaded.. if you have a Linux machine to test it on, I'll be happy to see if it compiles (it will not be able to run because of the missing DLLs but it would be nice to see general functionality!

Link

Beta 0.2

So well:

downloads are:

http://l0nk.org/gdns.zip - source code
http://l0nk.org/gdnb.zip - binaries (work with .NET 2.0)

Shots:
[spoiler]










[/spoiler]

And well.. for the Linux question.. with 6 commented lines (shell32.dll access) it currently compiles on Linux.. it will have to be reconfigured though to use libftdi.so - for now: I have no idea how it will behave about the disassembler and the assembler part - those parts use external EXE files.. so while devkitpro (where the assemblers are from) exists for Linux, I need to check if I get vdappc to compile. This is the disassembler. In worst case these parts will have to be deactivated in a Linux build:

First Linux screenshot:

hawkeye2777

Quote from: Link on November 15, 2009, 08:52:00 PM
And well.. for the Linux question.. with 6 commented lines (shell32.dll access) it currently compiles on Linux.. it will have to be reconfigured though to use libftdi.so - for now: I have no idea how it will behave about the disassembler and the assembler part - those parts use external EXE files.. so while devkitpro (where the assemblers are from) exists for Linux, I need to check if I get vdappc to compile. This is the disassembler. In worst case these parts will have to be deactivated in a Linux build

With the source tar.gz provided on the WiiRd download page, I was able to compile vdappc on Ubuntu (32-bit). After compiling, it seemed like it worked alright. Here's a link to the binary I have: http://www.mediafire.com/?rgtqimntdyy

hawkeye2777@Powerhawk:~/WiiRd/asm$ ./vdappc
vdappc V1.3  (c)1998-2001 by Frank Wille
PowerPC disassembler V1.4  (c)1998-2001 by Frank Wille
Modified by Kenobi for WiiRd GUI 26/05/2008
Modified by Link for Gekko instructions 04/08/2008
Build date: Aug 28 2009, 20:20:51 (Gekko build!)

Usage: ./vdappc file|address {offset}
hawkeye2777@Powerhawk:~/WiiRd/asm$ ./vdappc ex.bin
80003100:  38000063 li r0,99
80003104:  60000000 nop
hawkeye2777@Powerhawk:~/WiiRd/asm$


Also, thanks for giving Linux some love as well. :)
Currently "retired" from hacking codes.

Panda On Smack

Thanks Link, appreciate all your work

Will try it now in VS

Panda On Smack

Do you want a new sticky thread outlining any bugs we find and possible additions to the app or would you prefer that via PM?

Ta

Link

You can also post here.. it is still beta so interested who find this thread can happily comment about it.. whether you comment here or per PM.. is cool by me! Here actually everyone can read it!

hetoan2

#29
Looks nice Link :D

Love the Watchlist feature :D thanks.

Not that you have to do this, but it'd be nice if you could change the game ID midgame. Say if you use rebooter, just force it to recheck the first 8 bits to re-get the game ID. Just for the sake of organization.


Check out my site with codes obviously...
http://hetoan2.com/

and youtube...
http://youtube.com/hetoan2