PPC Emulator (WIP)

Started by Romaap, January 25, 2011, 11:50:24 PM

Previous topic - Next topic

Romaap

I will be trying to make a PPC Emulator.
What this application will do is emulate the PPC like a real Wii.
With this it will be easier to debug ASM codes. (it will be more like an ASM Debugger than a PPC Emulator, but PPC Emulator sounds more awesome)


Download it Here
It has an auto-update function, so every time you start the application it will check automatically for updates.

Source is found here.


At this moment it supports the following OPCodes:
lis, li, addi, add, addis, and, andi, andis, mr, not, oris, ori, slwi, srwi, subis, subi, sub, lwz, stw, lhz, sth, lbz, stb


To-Do:
- More OPCodes
- Better warnings when the OP is invalid
- Alter the Condition Register when needed (it doesn't do that atm)
- Branches
- Some bugfixes
- More cool stuff
- Using RAM dumps (?)

Mirrors:
http://www.mediafire.com/?8nsqoar0xbc5106

megazig


James0x57

Awesome. I'm looking forward to seeing it expand! =D


Bully@Wiiplaza

great, you do a RAM Dump and then debug the game without doing it live on the Wii *_*
But will be able to see, if your code worked or just if it crashed/not crashed the game? :confused:
My Wii hacking site...
http://bullywiihacks.com/

My youtube account with a lot of hacking videos...
http://www.youtube.com/user/BullyWiiPlaza

~Bully

toonlink444

This way you don't need the wii on to debug a game. I like it. Eventhough I can't do ASM :(
In the begining there was nothing. Then it exploded
New blog!! Check it out for hacking Smash Bros Brawl!! http://letshackblank.blogspot.com/

Nuke

Quote from: Romaap on January 25, 2011, 11:50:24 PM

So what do you guys think of this, and do you have any suggestions?

Its pretty neat idea, good for learning PPC asm.
0xFFFFFFuuuuuuu

hetoan2

this will be useful when completed... do want :o


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

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

Romaap


dcx2

Skiller had a good idea a while ago...make it so you can load a RAM dump into the disassembly tab of Gecko.NET so you can poke through ASM without the game running.

It might not be a bad idea to fork the disassembly tab from Gecko.NET and into your Emulator.  It looks like you're using .NET, so that wouldn't be too difficult to do.  Do you plan to open-source your app?

BTW, stw r1,0(r0) wouldn't work the way you're trying to make it work.  stw is one of those (rA|0) instructions.  That means that when rA = r0, it uses the value 0 instead of the value in r0.  Therefore, your stw is actually writing to address 0, not 80000000.

Romaap

Quote from: dcx2 on February 03, 2011, 05:06:12 PM
Skiller had a good idea a while ago...make it so you can load a RAM dump into the disassembly tab of Gecko.NET so you can poke through ASM without the game running.

It might not be a bad idea to fork the disassembly tab from Gecko.NET and into your Emulator.  It looks like you're using .NET, so that wouldn't be too difficult to do.  Do you plan to open-source your app?

BTW, stw r1,0(r0) wouldn't work the way you're trying to make it work.  stw is one of those (rA|0) instructions.  That means that when rA = r0, it uses the value 0 instead of the value in r0.  Therefore, your stw is actually writing to address 0, not 80000000.
Thanks for the reminder.

And that's definitely a good idea.


I added the source to the first post, but beware of the wasteland of randomness.
I'm not that much of a 'clean' programmer, but I tried my best to keep it neat this time.

Patedj

O0 Love your magic! You were my first mentor.
I'm really hyped, could you do a clip for it? It would fit perfectly with your previous clips.


You can pm me, I've got time for your troubles.

strakn

Awesome work Romaap, I'm also looking forward to where this is going.

Skiller

Quote from: dcx2 on February 03, 2011, 05:06:12 PM
Skiller had a good idea a while ago...make it so you can load a RAM dump into the disassembly tab of Gecko.NET so you can poke through ASM without the game running.

It might not be a bad idea to fork the disassembly tab from Gecko.NET and into your Emulator.  It looks like you're using .NET, so that wouldn't be too difficult to do.  Do you plan to open-source your app?

BTW, stw r1,0(r0) wouldn't work the way you're trying to make it work.  stw is one of those (rA|0) instructions.  That means that when rA = r0, it uses the value 0 instead of the value in r0.  Therefore, your stw is actually writing to address 0, not 80000000.

THis kinda thing would be great to add to a Load Dump kinda function it would alow u to check the asm thats in the game and as well debug the ASM u build .. Making sure branch functions are working right and alow u to build branchs alot easyer :P B 0x8000a000 ahh nice :)

nice work will for sure check this out ..

stormshellx

this is pretty pointless if you cant load ram dumps....

James0x57

You're pretty pointless if you're not contributing and talking shit about things you know nothing about.

I'll go ahead and take care of that though. *bans*