Exophase
Nothing good will ever come of Exophase.
Okay, I'll chime.. ARMv5 on ARM9 IS a subset of what we see on Pandora.. for the most part, but I've mentioned a lot before why I think that a virtualization approach is a bad idea for GBA and DS, here are some bullet points:
- No cycle counting = no fine grained control over when things are executed, this is especially bad when you consider that official DS games rely on the ARM7 and ARM9 to be within several dozen cycles of each other during their initialization procedures.
- No cycle counting also means you're fixed to using external interrupts, which means you can't very reliably increase the speed without breaking the game.
- And since DS games have events happening hundreds of times per scanline this means relying on hardware interrupts a lot - going through Linux means a lot of overhead for this.
- And if the game isn't fast enough to run at 60fps it could just end up breaking instead of slowing down, without giving you an opportunity to do things like auto frameskip.
- This also means that if a big slowdown event, like say something else stopping to load a file in the background, causes it to be late by just a little bit on one of its interrupts then you can get seriously screwed... with a normal emulator this would just be a little speed blip at worst.
- Accesses to I/O regs have to go through Linux signals and would be slower.. contrary to what Stephane Hockenhull said earlier games really do sometimes start hammering registers for transfers instead of using DMA.
- ARM doesn't allow certain system instructions to cause exceptions in user mode, they just silently fail instead - this is going to be bad for when an NDS games uses a cp15 instruction and relies on it to work (and they do).
- Same goes for SWI, and the games expect to be able to change all the vectors too.
- Have to fight with Linux for the address space.
- Although ARMv7 allows setting pages to execute only, allowing you to track + invalidate code when overwritten (especially in non-cached regions like ITCM and ARM7 WRAM), it's not more fine grained than a page which would cause headaches fast.
- Would be really hard to debug when something doesn't work. Can't synchronize it to an emulator written for say, PC.
If you think "so just throw out Linux" would be a good way to get around some of these things then think again, because not only would accessing many external things w/o Linux be total hell but there's no chance of using the SGX without it.
Actually the ARM7 on DS also gives you touchscreen, the X/Y buttons, and for at least some games savegames. I think you want these things at least as much as you want sound.
But I certainly wouldn't write off DS emulation in a more "normal" fashion just yet. Not saying it'll be doable on Pandora, even at 850MHz, but bare in mind that just because DS has 66 and 33MHz ARMs doesn't mean that games use all of the CPU all of the time, especially not the ARM7 which is only running official Nintendo code. For instance I've had New Super Mario Bros quoted at something like 7 million instructions/second on the ARM9 and 1 million on the ARM7, in the middle of the first level. That's not that bad.
- No cycle counting = no fine grained control over when things are executed, this is especially bad when you consider that official DS games rely on the ARM7 and ARM9 to be within several dozen cycles of each other during their initialization procedures.
- No cycle counting also means you're fixed to using external interrupts, which means you can't very reliably increase the speed without breaking the game.
- And since DS games have events happening hundreds of times per scanline this means relying on hardware interrupts a lot - going through Linux means a lot of overhead for this.
- And if the game isn't fast enough to run at 60fps it could just end up breaking instead of slowing down, without giving you an opportunity to do things like auto frameskip.
- This also means that if a big slowdown event, like say something else stopping to load a file in the background, causes it to be late by just a little bit on one of its interrupts then you can get seriously screwed... with a normal emulator this would just be a little speed blip at worst.
- Accesses to I/O regs have to go through Linux signals and would be slower.. contrary to what Stephane Hockenhull said earlier games really do sometimes start hammering registers for transfers instead of using DMA.
- ARM doesn't allow certain system instructions to cause exceptions in user mode, they just silently fail instead - this is going to be bad for when an NDS games uses a cp15 instruction and relies on it to work (and they do).
- Same goes for SWI, and the games expect to be able to change all the vectors too.
- Have to fight with Linux for the address space.
- Although ARMv7 allows setting pages to execute only, allowing you to track + invalidate code when overwritten (especially in non-cached regions like ITCM and ARM7 WRAM), it's not more fine grained than a page which would cause headaches fast.
- Would be really hard to debug when something doesn't work. Can't synchronize it to an emulator written for say, PC.
If you think "so just throw out Linux" would be a good way to get around some of these things then think again, because not only would accessing many external things w/o Linux be total hell but there's no chance of using the SGX without it.
Near-kun said:Oh, as mentioned. The ARM7 is used just for sound processing. So, even if the Pandora can't provide us the 1:1 experience with sound, without sound it really looks like it could be achieved...
Actually the ARM7 on DS also gives you touchscreen, the X/Y buttons, and for at least some games savegames. I think you want these things at least as much as you want sound.
But I certainly wouldn't write off DS emulation in a more "normal" fashion just yet. Not saying it'll be doable on Pandora, even at 850MHz, but bare in mind that just because DS has 66 and 33MHz ARMs doesn't mean that games use all of the CPU all of the time, especially not the ARM7 which is only running official Nintendo code. For instance I've had New Super Mario Bros quoted at something like 7 million instructions/second on the ARM9 and 1 million on the ARM7, in the middle of the first level. That's not that bad.
Last edited by a moderator: