Reverse Engineering A Console And Making A Emulator, Questions?

Joined
Jun 21, 2017
Messages
53
Likes
17
Location
England Buckingham Palace with a fake tash
Portables
Nvidia Shield K1, Gpd XD, PSP cfw, 3DS cfw. more to come. sorry if soft-mod is not cool.
OK I know it is not easy to make a emulator but I do have questions from what I have been looking at and I think this would be a good place to ask a few of them. Respect to console hacking as well!

1. I have seen a video of some one taking apart chips and looking at how they work in this video, I know the original Xbox emulator they can't find information on certain chips would doing something like in this video help towards that. Maybe some future tools could help. I want to know why you can't get information on these chips the documentation is missing on these chips. sorry I am very lost but I will do this one day.

2.OK so reverse engineering a console you have so many points to hack into, but how many parts do you need to hack into to get all the codes out of these systems, I don't think all the parts of the ps3 system was hacked into-correct me if I am wrong? Thinking out side the box is vital to hacking I know that it does run in my blood with people who have made things in the past(history).

3. creating new tools for getting codes out, in the future I do hope that hacking these devices to get codes out will a lot more easy as new ideas for these things come to reality. NEW TOOLS is that a concept?

4. are the newer console harder to hack or is the encryption just harder in the first place?

5.To fully reverse engineer a console has that ever been done?

6. sorry I am lost here but I want to be really good at this and I have only been doing slightly complicated things recently but give me a few years.

7.Last questions,
8.is it possible to have a perfect emulator?
9.is it possible to have a ps4 emulator with today's hardware how would it run in simple terms software mode or with the hardware, I know ps4 runs free BSD OS ?

10. what else should I be looking into for a project like this, I am teaching my self assembly language and other languages like python. I think I would need to learn electronics I do own a soldering iron ? And I do have a Ereader with as many books as I need to read on there at night in my spare time.

Dominic
 

BocuD

.
Joined
Jul 21, 2016
Messages
468
Likes
605
Location
The Netherlands
Portables
3
OK I know it is not easy to make a emulator but I do have questions from what I have been looking at and I think this would be a good place to ask a few of them. Respect to console hacking as well!

1. I have seen a video of some one taking apart chips and looking at how they work in this video, I know the original Xbox emulator they can't find information on certain chips would doing something like in this video help towards that. Maybe some future tools could help. I want to know why you can't get information on these chips the documentation is missing on these chips. sorry I am very lost but I will do this one day.

2.OK so reverse engineering a console you have so many points to hack into, but how many parts do you need to hack into to get all the codes out of these systems, I don't think all the parts of the ps3 system was hacked into-correct me if I am wrong? Thinking out side the box is vital to hacking I know that it does run in my blood with people who have made things in the past(history).

3. creating new tools for getting codes out, in the future I do hope that hacking these devices to get codes out will a lot more easy as new ideas for these things come to reality. NEW TOOLS is that a concept?

4. are the newer console harder to hack or is the encryption just harder in the first place?

5.To fully reverse engineer a console has that ever been done?

6. sorry I am lost here but I want to be really good at this and I have only been doing slightly complicated things recently but give me a few years.

7.Last questions,
8.is it possible to have a perfect emulator?
9.is it possible to have a ps4 emulator with today's hardware how would it run in simple terms software mode or with the hardware, I know ps4 runs free BSD OS ?

10. what else should I be looking into for a project like this, I am teaching my self assembly language and other languages like python. I think I would need to learn electronics I do own a soldering iron ? And I do have a Ereader with as many books as I need to read on there at night in my spare time.

Dominic
Hey,
To begin, if I'm stating something incorrectly, please correct me. I'm trying to explain this all with what I know, but my knowledge on this concept is limited to I might mess something up.
Writing an emulator doesn't really work like this. "chips" (processors / ics I guess would be more accurate) in modern and even very old consoles (like the SNES) are just so damn complicated that it doesn't really make sense to delid and visually analyse them. Emulators work (in a very basic sense) by essentially translating instructions from one architecture to another and thus allowing software that's written (and compiled) with one instruction set (eg ARMv7 for the 3DS) on another (like x86/64 for a PC). You don't exactly 'hack' into a console and 'extract codes' from it to write an emulator. You need to somehow get an understanding of the instruction set of the processor the system runs on and then emulate the behaviour of all other parts of the system. On an SNES for example you'd be looking at first emulating the CPU, and then trying to emulate the behaviour of all other main parts of the system like the audio and image processors. Once you have basic stuff working you can start looking at how software running on your 'emulator' behaves and by analysing what it does with one part of the system and how it does this on a real system (you could for example try to dump the ram of both in different states) and try to figure out how and why software behaves in a specific way to then mimic it.
I'm not sure what you are talking about with fully reverse engineer a system, but uhh, I'm sure thats done for like the gameboy or nes, but more modern systems are too complicated to do so. You don't need to "fully reverse engineer" a system to write an emulator for It though, just analysing how it does stuff and replicating it (eg system reads instruction a, responds by executing it, this is result b, how do I replicate that?)
A perfect emulator, well yeah I guess this should definitely be possible if you look at the definition of a Turing machine.. Its hard to do so but with the NES for example the instruction set and hardware build in to the system is relatively simple so definitely doable. The Wii or even worse something like an Xbox One has a lot of very complicated hardware and software working together to achieve something making it exponentially harder to replicate this.
A PS4 emulator would actually be a lot easier than you might think, even on todays hardware. For systems like the N64 or Gamecube the architecture is very different from systems we try to emulate them on making a translation layer to actually run the code on this different instruction set hard to get working efficiently. The PS4 however uses the same exact instruction set as regular PCs and both the CPU and GPU are almost off the shelf parts simplifying the actual interpreting part. The enormous amount of complicated devices in software and hardware however make it pretty messy to actually 'emulate' though I guess, as you need to emulate the functions of those as well to run that PS4 software on a normal PC.
I have to say that you definitely can't just 'write an emulator' the way you can build a portable or write normal software. An emulator is such a complicated piece of software that it's not a very good idea to start with something like emulating a PS4. I'd look into open source gameboy emulators for example and look at documentation about writing software for it to try and understand how the system works. Its based around a Z80 cpu which has quite a lot of documentation out there to look at, and it seems like a good place to start. I wouldn't really do this in assembly but rather a higher level language like C, however I think its definitely necessary to understand what happens when you write something in assembly as you essentially need to write something to allow that assembly code to run on something it wasn't compiled for. I wouldn't say you need to work with electronics for this really, its mostly theoretical and just very complicated. Its all in software.
I hope this clarifies some stuff; and I hope I didn't totally put something incorrectly out there. I have to say I definitely do not have the skill to do something like writing an emulator at this time so please don't ask me about more complicated stuff on the subject lol, I think @Aurelio would be able to help you if you are serious about it however.
 

Stitches

2 and a Half Dollarydoos
Staff member
.
.
Joined
Feb 5, 2017
Messages
3,773
Likes
2,981
Location
Banana Bender Land, Australia
Portables
6
Hey,
To begin, if I'm stating something incorrectly, please correct me. I'm trying to explain this all with what I know, but my knowledge on this concept is limited to I might mess something up.
Writing an emulator doesn't really work like this. "chips" (processors / ics I guess would be more accurate) in modern and even very old consoles (like the SNES) are just so damn complicated that it doesn't really make sense to delid and visually analyse them. Emulators work (in a very basic sense) by essentially translating instructions from one architecture to another and thus allowing software that's written (and compiled) with one instruction set (eg ARMv7 for the 3DS) on another (like x86/64 for a PC). You don't exactly 'hack' into a console and 'extract codes' from it to write an emulator. You need to somehow get an understanding of the instruction set of the processor the system runs on and then emulate the behaviour of all other parts of the system. On an SNES for example you'd be looking at first emulating the CPU, and then trying to emulate the behaviour of all other main parts of the system like the audio and image processors. Once you have basic stuff working you can start looking at how software running on your 'emulator' behaves and by analysing what it does with one part of the system and how it does this on a real system (you could for example try to dump the ram of both in different states) and try to figure out how and why software behaves in a specific way to then mimic it.
I'm not sure what you are talking about with fully reverse engineer a system, but uhh, I'm sure thats done for like the gameboy or nes, but more modern systems are too complicated to do so. You don't need to "fully reverse engineer" a system to write an emulator for It though, just analysing how it does stuff and replicating it (eg system reads instruction a, responds by executing it, this is result b, how do I replicate that?)
A perfect emulator, well yeah I guess this should definitely be possible if you look at the definition of a Turing machine.. Its hard to do so but with the NES for example the instruction set and hardware build in to the system is relatively simple so definitely doable. The Wii or even worse something like an Xbox One has a lot of very complicated hardware and software working together to achieve something making it exponentially harder to replicate this.
A PS4 emulator would actually be a lot easier than you might think, even on todays hardware. For systems like the N64 or Gamecube the architecture is very different from systems we try to emulate them on making a translation layer to actually run the code on this different instruction set hard to get working efficiently. The PS4 however uses the same exact instruction set as regular PCs and both the CPU and GPU are almost off the shelf parts simplifying the actual interpreting part. The enormous amount of complicated devices in software and hardware however make it pretty messy to actually 'emulate' though I guess, as you need to emulate the functions of those as well to run that PS4 software on a normal PC.
I have to say that you definitely can't just 'write an emulator' the way you can build a portable or write normal software. An emulator is such a complicated piece of software that it's not a very good idea to start with something like emulating a PS4. I'd look into open source gameboy emulators for example and look at documentation about writing software for it to try and understand how the system works. Its based around a Z80 cpu which has quite a lot of documentation out there to look at, and it seems like a good place to start. I wouldn't really do this in assembly but rather a higher level language like C, however I think its definitely necessary to understand what happens when you write something in assembly as you essentially need to write something to allow that assembly code to run on something it wasn't compiled for. I wouldn't say you need to work with electronics for this really, its mostly theoretical and just very complicated. Its all in software.
I hope this clarifies some stuff; and I hope I didn't totally put something incorrectly out there. I have to say I definitely do not have the skill to do something like writing an emulator at this time so please don't ask me about more complicated stuff on the subject lol, I think @Aurelio would be able to help you if you are serious about it however.
No
 

cheese

the tallest memer in town
Staff member
.
.
.
Joined
Mar 2, 2016
Messages
2,758
Likes
2,422
Location
Florida
Wow words lots of them

So basically the first part you got right bocu, you make a translator to implement something that runs another instruction set. Kinda all over beyond that...

Every system ps3 and beyond, gamecube and beyond, and all xboxes are just specialized modern pcs, so they are easy to emulate in that aspect, but specialized hardware beyond that makes it difficult.

Older systems are easier to emulate since they are slower and less complex, and the newest systems like the ps4 and Xbox one are easy to emulate because you don't have to, as they are identical to modern computers in every aspect (xbone running windows and ps4 running linux).

Actually creating an emulator requires a decent understanding of the system you want to emulate, as well as the system and programming language you are writing for. If you're truely serious about writing an emulator, I'd suggest emulating something like the 6502, z80, or create your own instruction set and emulate that.
 

Doom

Modelrater
.
.
.
Estmemed Member
Joined
Feb 17, 2016
Messages
662
Likes
1,508
Portables
Always 1/2
Hey,
To begin, if I'm stating something incorrectly, please correct me. I'm trying to explain this all with what I know, but my knowledge on this concept is limited to I might mess something up.
Writing an emulator doesn't really work like this. "chips" (processors / ics I guess would be more accurate) in modern and even very old consoles (like the SNES) are just so damn complicated that it doesn't really make sense to delid and visually analyse them. Emulators work (in a very basic sense) by essentially translating instructions from one architecture to another and thus allowing software that's written (and compiled) with one instruction set (eg ARMv7 for the 3DS) on another (like x86/64 for a PC). You don't exactly 'hack' into a console and 'extract codes' from it to write an emulator. You need to somehow get an understanding of the instruction set of the processor the system runs on and then emulate the behaviour of all other parts of the system. On an SNES for example you'd be looking at first emulating the CPU, and then trying to emulate the behaviour of all other main parts of the system like the audio and image processors. Once you have basic stuff working you can start looking at how software running on your 'emulator' behaves and by analysing what it does with one part of the system and how it does this on a real system (you could for example try to dump the ram of both in different states) and try to figure out how and why software behaves in a specific way to then mimic it.
I'm not sure what you are talking about with fully reverse engineer a system, but uhh, I'm sure thats done for like the gameboy or nes, but more modern systems are too complicated to do so. You don't need to "fully reverse engineer" a system to write an emulator for It though, just analysing how it does stuff and replicating it (eg system reads instruction a, responds by executing it, this is result b, how do I replicate that?)
A perfect emulator, well yeah I guess this should definitely be possible if you look at the definition of a Turing machine.. Its hard to do so but with the NES for example the instruction set and hardware build in to the system is relatively simple so definitely doable. The Wii or even worse something like an Xbox One has a lot of very complicated hardware and software working together to achieve something making it exponentially harder to replicate this.
A PS4 emulator would actually be a lot easier than you might think, even on todays hardware. For systems like the N64 or Gamecube the architecture is very different from systems we try to emulate them on making a translation layer to actually run the code on this different instruction set hard to get working efficiently. The PS4 however uses the same exact instruction set as regular PCs and both the CPU and GPU are almost off the shelf parts simplifying the actual interpreting part. The enormous amount of complicated devices in software and hardware however make it pretty messy to actually 'emulate' though I guess, as you need to emulate the functions of those as well to run that PS4 software on a normal PC.
I have to say that you definitely can't just 'write an emulator' the way you can build a portable or write normal software. An emulator is such a complicated piece of software that it's not a very good idea to start with something like emulating a PS4. I'd look into open source gameboy emulators for example and look at documentation about writing software for it to try and understand how the system works. Its based around a Z80 cpu which has quite a lot of documentation out there to look at, and it seems like a good place to start. I wouldn't really do this in assembly but rather a higher level language like C, however I think its definitely necessary to understand what happens when you write something in assembly as you essentially need to write something to allow that assembly code to run on something it wasn't compiled for. I wouldn't say you need to work with electronics for this really, its mostly theoretical and just very complicated. Its all in software.
I hope this clarifies some stuff; and I hope I didn't totally put something incorrectly out there. I have to say I definitely do not have the skill to do something like writing an emulator at this time so please don't ask me about more complicated stuff on the subject lol, I think Aurelio would be able to help you if you are serious about it however.
Hi

Can you like, not
 

BocuD

.
Joined
Jul 21, 2016
Messages
468
Likes
605
Location
The Netherlands
Portables
3
y
Is it literally all bullshit? As far as i know it should be basic but accurate..
 
Joined
Jun 21, 2017
Messages
53
Likes
17
Location
England Buckingham Palace with a fake tash
Portables
Nvidia Shield K1, Gpd XD, PSP cfw, 3DS cfw. more to come. sorry if soft-mod is not cool.
So @cheese how is it harder to emulate specialised hardware a quick break down if you could... and what is the documentation about how do you use it what would it consist of?

@BocuD Thank You I think I do understand what you are on about now it is emulating a system not replicating chips... like making a custom system that can run these games.

I have know some one who is old school with computers he talks to me face to face that helps a lot, I am still learning parts of the picture but faster every time. respect every time for this work and mentality.
 

cheese

the tallest memer in town
Staff member
.
.
.
Joined
Mar 2, 2016
Messages
2,758
Likes
2,422
Location
Florida
So @cheese how is it harder to emulate specialised hardware a quick break down if you could... and what is the documentation about how do you use it what would it consist of?
Specialized hardware doesn't have datasheets or specifications made public, so you have to figure out what everything does instead of implementing a standard
 
Joined
Jun 21, 2017
Messages
53
Likes
17
Location
England Buckingham Palace with a fake tash
Portables
Nvidia Shield K1, Gpd XD, PSP cfw, 3DS cfw. more to come. sorry if soft-mod is not cool.
Specialized hardware doesn't have datasheets or specifications made public, so you have to figure out what everything does instead of implementing a standard
I need to know how this stuff works before I can bring any ideas to life if that is even possible and so on.

@cheese

so machine code you could tweak and write anything when it is understood right?

and languages you can write more easy and build different things....

And I know its not that tricky to teach your self this if you can in the first place, like you can do anything if you set you mind to it. hence set you mind to it that you can do it. not like I can't do art because it comes out like a stick man.

You know if I did understand this and talked it naturally, I could be thinking out side of the box in ways that I could not explain I do it all the time with thoughts about life.
 
Top