BIOS/Firmware emulation - what's going on?
Started by Chalking Fenterbyte




7 posts in this topic
Chalking Fenterbyte
Unregistered


 
02-11-2014, 08:43 PM -
#1
I heard that some games can load to the their title screens, but I have some good questions about the status of the emulator as a whole:

1.How far has the firmware emulation come along? Anybody get anywhere with it, emulating the OS, etc.? Or is that part being omitted for now? Also, if you aren't properly emulating the BIOS/firmware, how would that part be skipped when running a game(high-level emulation)?

2.Optionally, what steps are/have been taken to execute commercial games?

3.How well is the emulation of the SPEs/etc.? Is threading being used for each SPE, core, etc.? All in all, are we coming along well with the computer's full-on emulation?

Chalking Fenterbyte
Unregistered


 
02-18-2014, 08:01 PM -
#2
Or what's going on in general ... perhaps the team could start a subdomain/website and give details of how the process is going, or use some shared-resource system and present updates to its process, etc.? What I'm saying is, perhaps the team could get a bigger following this way, more developers, and post any news/updates in a more modular way.
Chalking Fenterbyte
Unregistered


 
02-19-2014, 08:32 PM -
#3
If you don't mind me further asking, diverting this from the original firmware questioning, why don't the games display anything more than black screens?

I mean, assuming some portions of the emulated GPU exist (how else are the homebrews running?), and at least most opcodes are working right, what is the problem in that department? I mean, at least a title screen, perhaps?

You can HLE the GPU as well, but it will probably cause many issues. But if your goal is to make games playable in any form, what's stopping the team from HLE'ing the GPU?

Also, it might be noteworthy to note that the PCSX2 team originally didn't emulate the firmware, but for the last 6+ years they have once they got it right (PCSX2 can boot the famous "Sony Computer Entertainment" screen and render it correctly).
ssshadow
Moderator
*****


4
2,494 posts 63 threads Joined: Aug 2017
02-19-2014, 09:08 PM -
#4
(02-19-2014, 08:32 PM)Chalking Fenterbyte Wrote: If you don't mind me further asking, diverting this from the original firmware questioning, why don't the games display anything more than black screens?

I mean, assuming some portions of the emulated GPU exist (how else are the homebrews running?), and at least most opcodes are working right, what is the problem in that department? I mean, at least a title screen, perhaps?

Not a developer on this, but it mostly comes down to the fact that most commercial games are far more complex than any simple homebrew, and they try to do things which are not really done or working fully. You usually see a bunch of "TODO" in the log, or similar, which just crashes the games when they don't get the expected input. Or they use a function that should be working, but is bugged in some way. For instance Disgaea 3 should work (well, run further) if you look at what happens in the log, but for some reason some mutex/semaphore doesn't receive a signal and everything just stalls at this point while the other threads wait.

Most homebrew aren't even multithreaded, so this bug would not affect them.
Chalking Fenterbyte
Unregistered


 
02-19-2014, 09:59 PM -
#5
So (one) the problem lies somewhere along the lines of multitasking properly?

No doubt is any commercial game magnitudes more difficult than any homebrew, but that problem must exist simply because the input system can't give the desired output - in other words, the games are not being executed correctly enough, and/or the emulated pipeline/GPU can't work properly with the input as well.

I haven't look much into the source, but under what conditions is the GPU being emulated? NVIDIA claims the GPU used in PS3 is some variant of the GeForce 7 series models of graphics chips. I assume that PS3 games are compiled with intended shader code for some variant model architecture of the GeForce 7. Not my area of specialty, but can't you LLE the shading and texturing, and HLE more of the data processing?

Do any devs of RPCS3 know the full extent of GeForce GPUs? There's some documentation (some of which may give a better idea on how to implement HLE, if desired), though not ideal and detailed enough, such as follows:

http://developer.download.nvidia.com/GPU..._Guide.pdf

Also, Nouveau seems to be a step forward with regards to the "mystery" of NVIDIA GPUs. NVIDIA also reported that they would release more info on their GPUs specificially for Nouveau.

EXTRA: I know that, as of now, emulating the firmware isn't the priority, but I mean in the future it certainly could be added along to benefit the full PS3 emulation experience.
Bigpet
Unregistered


 
02-19-2014, 11:02 PM -
#6
(02-19-2014, 09:59 PM)Chalking Fenterbyte Wrote: Also, Nouveau seems to be a step forward with regards to the "mystery" of NVIDIA GPUs. NVIDIA also reported that they would release more info on their GPUs specificially for Nouveau.

EXTRA: I know that, as of now, emulating the firmware isn't the priority, but I mean in the future it certainly could be added along to benefit the full PS3 emulation experience.

I haven't contributed much and haven't touched the emulator core in a meaningful way but I'm going to give my 2 cents.

As for the GPU documentation, the RSX documentation is very specific on the performance properties and internal architecture (128 bit alignments, exact placement in memory of bitmaps, buffer zones for npot textures, acess to internally swizzled texture formats, etc). The problem we're having is that there's no equivalently low-level interface on the PC side (and before you ask, no, mantle probably won't help us much here). So we have to use the much more higher level OpenGL to emulate the low level GPU commands that the PS3 gcm interface exposes.

Running the firmware on top of the emulator just doesn't seem beneficial enough to me to warrant it. It certainly would save work on implementing all the system calls but emulating the driver interfaces that the PS3 OS seems like it's unecessarily low-level to me. There's a reason why even Sony didn't go that route when they created their PS2/1 and PSP emulators on the ps3 to run their PSClassics (those guys know what they do)

But as Alex said, it's an open source project, you can contribute to it freely and if you don't like the direction it's heading you can always fork it and steer it your way.
Chalking Fenterbyte
Unregistered


 
02-20-2014, 08:27 PM -
#7
(02-19-2014, 11:02 PM)Bigpet Wrote:
(02-19-2014, 09:59 PM)Chalking Fenterbyte Wrote: Also, Nouveau seems to be a step forward with regards to the "mystery" of NVIDIA GPUs. NVIDIA also reported that they would release more info on their GPUs specificially for Nouveau.

EXTRA: I know that, as of now, emulating the firmware isn't the priority, but I mean in the future it certainly could be added along to benefit the full PS3 emulation experience.

I haven't contributed much and haven't touched the emulator core in a meaningful way but I'm going to give my 2 cents.

As for the GPU documentation, the RSX documentation is very specific on the performance properties and internal architecture (128 bit alignments, exact placement in memory of bitmaps, buffer zones for npot textures, acess to internally swizzled texture formats, etc). The problem we're having is that there's no equivalently low-level interface on the PC side (and before you ask, no, mantle probably won't help us much here). So we have to use the much more higher level OpenGL to emulate the low level GPU commands that the PS3 gcm interface exposes.

Running the firmware on top of the emulator just doesn't seem beneficial enough to me to warrant it. It certainly would save work on implementing all the system calls but emulating the driver interfaces that the PS3 OS seems like it's unecessarily low-level to me. There's a reason why even Sony didn't go that route when they created their PS2/1 and PSP emulators on the ps3 to run their PSClassics (those guys know what they do)

But as Alex said, it's an open source project, you can contribute to it freely and if you don't like the direction it's heading you can always fork it and steer it your way.

Actually, I was just considering forking this, but by myself I'd get nowhere with this (at least not for many, many years). It's best left in the hands of the current team, but development has been a bit slow lately, and I wanted to know that the team is aware of different options. Going down a slow, unsteady road will just put RPCS3 into a halt of no success. One should always consider viable options and cut arounds in development.

If you would like to hear my opinion, I think that more focus should be on the Cell architecture and reverse engineering the game discs(I would do it willingly if I had the means, but as of now I don't).
Bigpet
Unregistered


 
02-21-2014, 12:32 AM -
#8
(02-20-2014, 08:27 PM)Chalking Fenterbyte Wrote: Actually, I was just considering forking this, but by myself I'd get nowhere with this (at least not for many, many years). It's best left in the hands of the current team, but development has been a bit slow lately, and I wanted to know that the team is aware of different options. Going down a slow, unsteady road will just put RPCS3 into a halt of no success. One should always consider viable options and cut arounds in development.

If you would like to hear my opinion, I think that more focus should be on the Cell architecture and reverse engineering the game discs(I would do it willingly if I had the means, but as of now I don't).

I don't think you followed this project really closely or took a look at the status of some commercial games. Sure, none of them display anything as of yet but they're not "doing nothing", there's often some debug console output (e.g. the output to the console that you would see if you loaded the PS3 game on a PS3 devkit) and some are already loading images into memory.

Pull requests are always welcome and if you want to make some bugfixes or additions to the CELL emulation then you should go ahead and try it. There's not really a closed team, it's a collaborative efford and if you want to help then help is very welcome.

Also, I don't think that changing directions now to a route that would ultimatly lead to even slower emulation would not really help much. But again, I'm no authority on this, it's open source, you can steer it in whatever direction you want if you convince enough people.


Forum Jump:


Users browsing this thread: 2 Guest(s)