Page 2 of 2 FirstFirst 12
Results 11 to 18 of 18
  1. #11
    Banned squall_leonhart's Avatar
    Join Date
    Jan 2006
    Location
    All over the world.
    Posts
    3,512
    Mentioned
    2 Post(s)
    Quote Originally Posted by AamirM View Post
    Why does it needs reviving? I thought PCSX was already prefect. I would be interested but I have too slow internet .
    1.5 Final, is alot slower then it could be, it also doesn't handle CDR plugins which can read subchannel data properly, and there are freeze issues in certain games due to what i think is read from memory issues.

  2. #12
    Moderator Cyberman's Avatar
    Join Date
    Nov 2001
    Posts
    1,932
    Mentioned
    1 Post(s)
    It may be interesting to redo the dynamic recompiler in PCSX ... well actually modify it to one that is more generic.
    If you are familiar with compilers they have a back end that has emitted pseudo code.
    Ex:

    Code:
    L_495:
    DEC VAR_3, BRNZ L_495
    May come from
    Code:
    while(--counter);
    Notice DEC (obviously decrement) and BRNZ (Branch if not zereo) are on the same line. This can be interpreted as "if there is a command that does a decrement and branch if not zero". It may end up being done as
    Code:
    dec EAX
    jnz $-4
    or something else depending on that TARGET archetecture.
    That's also the case with dynamic recompilation. If you can create an intermediate pseudo code that can be recast into native codes (IE the pseudo code was DEC VAR_3, BRNZ L_495 which became dec EAX, jnz $-4), then some real time optimization can be done in addition it also means that porting the DREC to other archetectures is quite possible.

    I might also point out it is unnecessary to create more text to process with the pseudo code (unless you want to debug the DREC) and the actual raw data is more use able (especially if you want to perform optimization passes on the emitted code).

    Cyb
    Progress (n.):
    The process through which the Internet has evolved from smart people in front of dumb terminals to dumb people in front of smart terminals.
    -------------------------------------------------------------------
    Recursive (adj):
    see Recursive

  3. #13
    Emulator Developer
    Join Date
    May 2006
    Posts
    215
    Mentioned
    1 Post(s)
    Intermediate code is sometimes one of those things that people do because other people are doing it. The big wins in doing it are either when you're going from many possible targets and want to unify it to one representation or you're going from a complex target and need to break it down into a simple one so you can convert it generally. In this case the only target is MIPS and MIPS is already very simple (you won't get much simpler). Some additional metadata doesn't really hurt (like for constant propagation and register liveness/usage) but you can append it to the MIPS code without converting it to anything else (and PCSX probably already does).

    There are actually already implementations of PCSX's recompiler that don't target x86, although I'm not sure if the mainline source incorporates them.

  4. #14
    Moderator Cyberman's Avatar
    Join Date
    Nov 2001
    Posts
    1,932
    Mentioned
    1 Post(s)
    Quote Originally Posted by Exophase View Post
    Intermediate code is sometimes one of those things that people do because other people are doing it. The big wins in doing it are either when you're going from many possible targets and want to unify it to one representation or you're going from a complex target and need to break it down into a simple one so you can convert it generally. In this case the only target is MIPS and MIPS is already very simple (you won't get much simpler). Some additional metadata doesn't really hurt (like for constant propagation and register liveness/usage) but you can append it to the MIPS code without converting it to anything else (and PCSX probably already does).

    There are actually already implementations of PCSX's recompiler that don't target x86, although I'm not sure if the mainline source incorporates them.
    Yes I noticed that, however I haven't seen there branch information. I'm looking to port it to the OMAP3 processor, but by creating intermediate code there is more going on than what you think. In reality I want the intermediate code for tagging information for the GTE coprocessor in a more generic manner. I suppose the best way to look at it is I want to deal with the 3d data and the 2d data that is generated from it in the perspective transform functions in the GTE. I want to track the 2d data to it's texture offsets, thus getting the offsets used in textured polygons and there associated 3d data.

    Cyb
    Progress (n.):
    The process through which the Internet has evolved from smart people in front of dumb terminals to dumb people in front of smart terminals.
    -------------------------------------------------------------------
    Recursive (adj):
    see Recursive

  5. #15
    EmuTalk Member
    Join Date
    Feb 2009
    Posts
    3
    Mentioned
    0 Post(s)

    Thumbs up

    Hello! I have been working with PCSX code for awhile now. I have added an ARM dynarec to it, modified some of the CDR code, and others hae chipped in with a completely custom software GPU rasterizer. The SPU has also been tweaked. It's no longer "plugin" based as everything is linked in as I had felt that was better for handhelds long ago when I started things.

    Of interest, I have it running on the OMAP3 EVM as well as the Pandora handheld which is OMAP3 based. It runs great but could use improvement and polish.

    It runs Ridge Racer 1 (notoriously slow) at 60 FPS with sound on the Pandora clocked at 800MHz when scaled to ~800x400. When outputting to 320x240 and letting the hardware scaler be used we can get down to the 600-700MHz mark.
    Many other games are just fine at 600MHz.

    A good friend of mine, Tinnus is writing an OpenGL ES 2.0 GPU for this as well.

    The code is very ugly at this point and the GTE suffers. It could use some NEON instruction treatment it seems. If you are interested in helping, I would be glad to return the favor.

    So this revival has already started in some aspects with my lil psx4all project here. I've been keeping quiet about going back to PCSX code for portions of the Pandora release, though plan to open source it as expected once it is made public.

    Thanks for the heads up on this thread Exophase.

    If I could gather some greater minds to make this code faster, cleaned up, and more compatible (very interested in that subchannel issue for instance), I'm up for it.

    Thanks,
    ZodTTD
    http://www.zodttd.com

  6. #16
    Moderator Cyberman's Avatar
    Join Date
    Nov 2001
    Posts
    1,932
    Mentioned
    1 Post(s)
    If you are using linux jettisoning the plugin interface isn't needed, however if you believe it is a performance issue, then I can see. The pandora isn't my cup of tea, but I am working on the beagle board (have system have tools waiting on pico projector and time) which is the same processor just less RAM and NAND (128M and 256M respectively). Right now I am working through ideas and structure, scripting a road map to walk and improve the base PCSX code with. There is the neon but TI has that nifty DSP in there as well (audio/video stream processing) so many neat toys so little time.
    As said I would like to work through the theory first before tackling it with a hurculean effort (lots of dumb work LOL). Small changes to the base code is my first aim. I've set up QEMU on my windows machine for doing the cross compilation (weird emulating a linux system on windows to develop for .. Linux).
    Erstwhile the work should be usable with PC and OMAP. Did you change the general function of the DREC system or merely change the code emitted? Is it like the modular approach in the original PCSX code (SH4/ix86 directories for there DREC location).

    Cyb
    Progress (n.):
    The process through which the Internet has evolved from smart people in front of dumb terminals to dumb people in front of smart terminals.
    -------------------------------------------------------------------
    Recursive (adj):
    see Recursive

  7. #17
    Moderator Cyberman's Avatar
    Join Date
    Nov 2001
    Posts
    1,932
    Mentioned
    1 Post(s)
    SquallLeonhart
    what is your compiler setup for the PCSX-R variant of PCSX?
    I'm trying to sort things out on my end and I have too many possibilities so the simplest things for me is to follow something straight forward (I am not into collecting tools I have too many as it is).

    Cyb
    Progress (n.):
    The process through which the Internet has evolved from smart people in front of dumb terminals to dumb people in front of smart terminals.
    -------------------------------------------------------------------
    Recursive (adj):
    see Recursive

  8. #18
    Banned squall_leonhart's Avatar
    Join Date
    Jan 2006
    Location
    All over the world.
    Posts
    3,512
    Mentioned
    2 Post(s)
    None as yet, im waiting on a new system to arrive before i install VS2008,


Page 2 of 2 FirstFirst 12

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •