Kyo
Well-Known Member
i like where this is going, so I'm going to contribute to the emulation scene by making a post in this thread
this is a joint effort people!
this is a joint effort people!
CyruzDraxs said:Maybe if we make it to 100 pages we'll get fullspeed PS3 emulation!MagicPants said:For every page in this thread the Pandora gets 10% faster and DC emulation gets 10% easier. We're almost there! :rolleyes:
NEED... MORE... TROLLS...
Technically, this post isn't on topic eitherChip said:Back on topic, please.
Or you could play free games like LieroX and OpenLiero, which IMHO, are much better than Worms.greendots said:I would love to be able to play at least Worms (Armageddon or World Party) on pandora via DC emulator The N64 version looked nothing nearly as crisp as on Dreamcast.
I think that it would be one of the easier DC games to emulate at full speed too.
Another Important thing was that the NullDC dev said that the source will be released after it has reached a stable point. This would allow someone here to add DSP support for even better speed if it is not supported at first.
Lord_Doku said:http://pspupdates.qj.net/New-video-clarifi...g/49/aid/122851
read the bit below the vid. thats just awesome.
EDIT: Merged with existing DC thread - Chip
Wow, playable Ikaruga may very well be attainable. Once the emulator is perfected, this will definitely move more units.
I've been having a think about this...Exophase said:Jaguar is probably another good arch for this discussion. The RISC CPUs can perform instructions in as little as 1 cycle but because of register dependencies they'll be stalled all the time. I doubt a Jaguar emulator would emulate this if it wanted high performance, unless it had a recompiler, so effectively cutting the number of cycles per second would work to the same effect. Unfortunately these stalls probably varies a lot from game to game.
Firefox said:In the Underground Dox, it says that the Jag's RISC CPU pipeline stages go load-ALU-store. Do you mean that the pipelines will be stalled "all the time" because instructions are either a load, a store, an ALU op, or a division, and so any one instruction won't be doing useful work for most of the pipeline?
Note: I don't know anything about Jag's RISC CPU so I am not sure if what follows apply.
On a pipelined processor you have "forwarding paths" that go from one pipeline stage to the other without having to wait for the result to be stored in a register.
Example :
1. r1 <- r0 + 2
2. r2 <- r1 + 1
cycle 0: load r0 ; ---
cycle 1: compute r0 + 2 ; load r1
cycle 2: store r1; compute r1 + 1
cycle 3: ---; store r2
Cycle 2 will be able to use r0 + 2 (=r1) computed at cycle 1 immediately thanks to forwarding paths (the cycle 1 load r1 is useless).
This example is oversimplified, if you want more details take a look at Hennessy and Paterson books .
Firefox said:I've been having a think about this...Exophase said:Jaguar is probably another good arch for this discussion. The RISC CPUs can perform instructions in as little as 1 cycle but because of register dependencies they'll be stalled all the time. I doubt a Jaguar emulator would emulate this if it wanted high performance, unless it had a recompiler, so effectively cutting the number of cycles per second would work to the same effect. Unfortunately these stalls probably varies a lot from game to game.
In the Underground Dox, it says that the Jag's RISC CPU pipeline stages go load-ALU-store. Do you mean that the pipelines will be stalled "all the time" because instructions are either a load, a store, an ALU op, or a division, and so any one instruction won't be doing useful work for most of the pipeline?
Do you have the official Jaguar Development Manual? Although you're not technically supposed to, I doubt there's a whole lot wrong with obtaining it with Atari in the state they're in now. If you don't have it then definitely pick it up, because it's actually pretty well written as far as official console documentation tends to go.
The pipeline stage names you gave might be a little misleading. This is what the stages do:
- decode
- read operands from registers
- execute operation
- write result to register
Most instructions do actually do something useful for each of these stages. The problem is that since results are written two stages after they're read, it means that the results are not available until two cycles after the instruction. If you try to load them beforehand then you'll cause a stall. Other architectures use register forwarding to get around this problem but that's not present in the Jaguar. Another problem is that the register file only lets you read or write to two registers per cycle, but strangely can read. This makes it so that the writeback stage has to write to one of the registers used in the read stage two cycles ago, or another stall will occur.
So I think it works like this...
CODE
nop
nop
add r0, r1 @ instruction a: reads r0 and r1, writes r0
add r2, r3 @ instruction b: reads r2 and r3, writes r2
add r0, r5 @ instruction c: reads r0 and r5 as instruction a writes r0, OK
CODE
nop
nop
add r0, r1 @ instruction a: reads r0 and r1, writes r0
add r2, r3 @ instruction b: reads r2 and r3, writes r2
mov r4, r5 @ instruction c: reads r5 as instruction a writes r0, OK
CODE
nop
nop
add r0, r1 @ instruction a: reads r0 and r1, writes r0
add r2, r3 @ instruction b: reads r2 and r3, writes r2
add r4, r5 @ instruction c: reads r4 and r5 as instruction a writes r0, port overload, stalls 1
CODE
nop
nop
add r0, r1 @ instruction a: reads r0 and r1, writes r0
add r2, r0 @ instruction b: reads r0 and r2, but instruction a needs 2 more cycles to give r0, stalls 2
A lot of code can be parallelized to avoid these dependency chains, but sometimes it's just unavoidable. This is probably compounded by having two address instructions, and having a latency of 2 is much more worse than just having one of one. The other stall condition is probably even harder to avoid, although moves and operations with immediates alleviate pressure on the register file. It's too bad that the narrow 16bit instruction set with lots of registers only allows for tiny immediates.
You can see how complex this could get, so I'm sure actual Jaguar code has internal stalls all over the place, before you even get to the stalls from constantly having to shuffle things in and out of main RAM.
Firefox said:I understand how pipelining works, I'm just not quite getting what Exophase is saying.
Sorry
I do now! I'm just off to read it, I may be some time...Exophase said:Do you have the official Jaguar Development Manual? Although you're not technically supposed to, I doubt there's a whole lot wrong with obtaining it with Atari in the state they're in now. If you don't have it then definitely pick it up, because it's actually pretty well written as far as official console documentation tends to go.
Absolutely no offense taken!Laurent said:Sorry
gibberish said:jakshep2 said:I reckon it's theoretically possible but it will be nearly at the end of the pandos lifespan before it gets perfected.
We should ask the guy for the nullDC sourcecode.
i know you mean well but please stop posting rubbish.
how ironic, a guy with a username of "gibberish" telling me to stop posting rubbish lol
P.S yes I will, but that's what someone else told me on another thread.
conso said:CyruzDraxs said:Maybe if we make it to 100 pages we'll get fullspeed PS3 emulation!MagicPants said:For every page in this thread the Pandora gets 10% faster and DC emulation gets 10% easier. We're almost there! :rolleyes:
NEED... MORE... TROLLS...
i'm sure I can fill in a place
It wouldn't. Or you could map them to the right analogue stick maybe.Pleng said:On the subject of Dreamcast emulation, how would the Pandora handle the DC's analogue shoulder buttons?