Exophase posted on Sep 22 2006 at 05:39 PM said:
266+MHz CPU with FPU, VFPU, 2D/3D accelerator, DDR SDRAM.. sounds like PSP to me! But ARM instead of MIPS (worse instructions per clock ratio, but less instructions needed) and only one CPU. I'm assuming it has an MMU, which is a huge advantage for emulators.. IF it can be accessed normally (no weird hacks like in GP2X!)
The big advantage of the ARM microarchitecture here is the extremely low power consumption. MIPS chips drink power like water. Also, in my experience there's just not as much in the way of custom ASM code for common tasks for MIPS chips as for ARM ones (emulator cores spring very readily to mind.) There is an MMU, and there's no hacking necessary .. there's not really any hacking normally needed with an ARM processor and some RAM, except that the MMSP2 handles it strangely, tying the RAM to individual processors so addressing memory that is tied to the 940T from the 920T is an odd task to perform.
As for 'one CPU'.. the PSP, as far as I can tell, has just one CPU. The vector/FPU is a coprocessor, as is the 2D/3D GPU. I don't see any validity to the common claim there are 2 333 MHz MIPS chips in the PSP. If there were, I imagine it'd tear through its battery much faster than it already does, even at 222 MHz per chip.
Exophase posted on Sep 22 2006 at 05:39 PM said:
I'm not 100% sure if a typical single precision VFPU will work well for GTE emulation in PS1.. I hope so as much as you do, because of emulation opportunities on PSP. It's just that PS1's GTE is a fixed point accelerator, operating at a high 48bit precision. Unless the VFPU has double precision components (unlikely) there will be some major loss of precision in going from that to 32bit floats. Whether or not it can handle that is anyone's guess.
Zodttd, one of the main developers of PSX4ALL, suggested the idea, so I imagine it's possible. Loss of some precision is probably not that big an issue. Emulation is an inherently inaccurate process. At any rate, if memory serves, PS1 games did a good bit of rounding off of coordinates, resulting in some interesting quivering of polygons.
Exophase posted on Sep 22 2006 at 05:39 PM said:
Also, 2D acceleration is great, but doesn't GP2X have some? It seems to me like it's vastly underutilized, but there.
The GP2X has a blitter, but that's most of what it can do-- blit. It just copies memory quickly and does a few other things faster than you could do fully in software, like fill solid shapes. I've thrown big workloads at it, and it always buckles under the pressure-- the PS1 and Saturn were snappier at 2D than the MMSP2's blitter is, so you really need to rely on the ARM920T to do most of the work. It really does limit the hell out of you if you want to do something truly graphically intense as I am. Its functions are also very limited, so you can't really program it to do just what you want it to do, as far as I can tell. MagicEyes isn't keen on releasing documentation either, they'd rather let Dignsys write software for their clients and hide how the hardware works so they can keep it their little profitable secret.
Using acceleration on the S3C2460 or the VRender-3D will probably mostly entail a custom SDL library like Paeryn's-- maybe he'd want to work on one; who knows. You could also use SDL's OpenGL wrapper directly for new applications that don't use SDL conventions already.
Exophase posted on Sep 22 2006 at 05:39 PM said:
Of course 2D via 3D acceleration can be a lot easier to use and usually gives all of the benefits if not much more. But like Lancer-X said, using hardware acceleration for 2D is anything but trivial, in fact, for systems like GBA it's impossible to do completely, at least not in any kind of straightforward way. People just don't realize this, they see a system that blits tiles and thinks that it's easy to map to acceleration. But these consoles are usually drawn line by line and have some very weird notions of layering/priority and blending. On the other hand, most emulators have very inefficient software renderers. My emulator, gpSP, is 100% software rendering but it smokes the performance of VBA's renderer.
I wouldn't recommend trying to accelerate most parts of drawing the display in an emulator. However, things like actually blitting the tiles, handling transparency, and offloading the tasks of scaling and rotation from the CPU will provide significant framerate boosts. The GP2X's GPU does extremely little to aid the first one, and nothing to aid the rest. Also, it's worth mentioning that VBA's renderer is a fucking abomination. It takes over 20 minutes of tweaking to get it to run at full speed on my Athlon 64 X2 machine a lot of the time, other times it'll run happily on a machine with a 600 MHz processor. It's just plain BAD.
Question: what is the cache like with that CPU package? I mean size and set associativity. Most of these systems have very little cache (well, normal amounts of L1, but no L2) that is also not very associative.
I don't have that many details about it, but I know it's Harvard-architecture L1, 16KB instruction and 16KB cache, both 4-way set associative with a 32 byte line size. Sure, I'd love some L2 cache, but for their purpose, this seems to work just fine.
Exophase posted on Sep 22 2006 at 05:39 PM said:
I still don't really understand the big deal about having some wasted screen space. Like mentioned you could even put extra information there. Although it should be asked, would a 480x272 screen be proportionally larger than a 320x240 one? If not I can see it being a hindrance. But the thing about emulator accuracy... most emulator inaccuracies don't affect a majority of games at all. Stretching the screen would affect all of them pretty noticeably. Stretching a 256x224 display to 480x272 would be pretty awful, in fact.
Oh yes, it's going to look disgusting on a lot of systems. You'll probably have to just scale the image til it's 272 pixels tall and accept what width you get .. then maybe put some sort of border or menu options there. For the people who don't mind scaling it out of proportion, that can be an option. The screen will definitely be bigger at 480x272; it's big and pretty but ultimately not more useful, and makes the machine bigger and more cumbersome to hold. I prefer that when I hold a handheld, my hands nearly meet in back-- it gives me a good solid grip and more comfortable control overall.
The one way I can see that I as a developer would really benefit from a widescreen display is it the machine was fully comfortable to use turned on its side, for better play of vertical shooters. But this'd be original ones .. emulated shooters are generally 320x224 and won't fill the display.