Release Pcsx-Rearmed


notaz said:
Ari64 said:
hlide said:
if I'm not wrong, Rs should contain a PS1 address in the range between 0x000000 and 0x1FFFFF, does it mean your executable maps Pandora virtual addresses between 0x000000 and 0x1FFFFF to a physical area of 2Mbytes (PS1 RAM) ? it really bugs me...
If the address is between 0x000000 and 0x1FFFFF then the carry flag will be clear. If it's between 0x80000000 and 801FFFFF then the overflow flag will be set.

We don't care about the carry flag. :)
Right, and RAM is mmapped at 0x80000000 on host if it's still not clear enough.

Ok, I wasn't too familiar with "bvc" to hint the real intent :p
 
Last edited by a moderator:
Mantis said:
So it's confirmed I'm getting a Pandora. It should be here on Tuesday. Can someone give me the skinny on how well Final Fantasy VIII works on any of the PS1 emulators available for the Pandora? That's probably the game I'm most interested in. Thanks. :)
Kinda the wrong place for it but I've been having the best experience with PCSX-ReARMed on FFVII and FFVIII. The other two can play the game fine mostly however their sound is terrible. I haven't played much of VIII but it seemed good, and if I ever finish up this other work I have I'll get to spend some time on 9 as well.
 
Last edited by a moderator:
Bryce Leo said:
Mantis said:
So it's confirmed I'm getting a Pandora. It should be here on Tuesday. Can someone give me the skinny on how well Final Fantasy VIII works on any of the PS1 emulators available for the Pandora? That's probably the game I'm most interested in. Thanks. :)
Kinda the wrong place for it but I've been having the best experience with PCSX-ReARMed on FFVII and FFVIII. The other two can play the game fine mostly however their sound is terrible. I haven't played much of VIII but it seemed good, and if I ever finish up this other work I have I'll get to spend some time on 9 as well.

Well, it doesn't all have to be nerd talk about ones and zeroes, offsets and pointers now, does it? We're not all programmers. :D Thanks a lot for the response though, that helps a lot.
 
Last edited by a moderator:
Mantis said:
Well, it doesn't all have to be nerd talk about ones and zeroes, offsets and pointers now, does it? We're not all programmers. :D Thanks a lot for the response though, that helps a lot.
Lol, but I do love the programmery talk! Some day I'll take the time to write a emulator that works.... (I have a vomit inducing, half cocked, nes emulator burried on some harddrive somewhere). I'll try and take some time to try out the couple other games I have, like Chrono Cross, legend of dragoon and xenogears.
 
Last edited by a moderator:
notaz said:
Good, was a bit worried about that big else block for non-branches.
Oh wait... there's more.

I think this fixes all the cases:

Code:
--- r4300/new_dynarec/new_dynarec.c.old	2011-01-09 22:25:01.777969039 -0500
+++ r4300/new_dynarec/new_dynarec.c	2011-01-15 16:52:27.735747033 -0500
@@ -9358,13 +9361,35 @@
               f_regmap[hr]=regs[i].regmap[hr];
             else f_regmap[hr]=-1;
           }
-          else if(regs[i].regmap[hr]>=0) f_regmap[hr]=regs[i].regmap[hr];
+          else if(regs[i].regmap[hr]>=0) {
+            if(f_regmap[hr]!=regs[i].regmap[hr]) {
+              // dealloc old register
+              int n;
+              for(n=0;n<HOST_REGS;n++)
+              {
+                if(f_regmap[n]==regs[i].regmap[hr]) {f_regmap[n]=-1;}
+              }
+              // and alloc new one
+              f_regmap[hr]=regs[i].regmap[hr];
+            }
+          }
           if(branch_regs[i].regmap[hr]>64) {
             if(!((branch_regs[i].dirty>>hr)&1))
               f_regmap[hr]=branch_regs[i].regmap[hr];
             else f_regmap[hr]=-1;
           }
-          else if(branch_regs[i].regmap[hr]>=0) f_regmap[hr]=branch_regs[i].regmap[hr];
+          else if(branch_regs[i].regmap[hr]>=0) {
+            if(f_regmap[hr]!=branch_regs[i].regmap[hr]) {
+              // dealloc old register
+              int n;
+              for(n=0;n<HOST_REGS;n++)
+              {
+                if(f_regmap[n]==branch_regs[i].regmap[hr]) {f_regmap[n]=-1;}
+              }
+              // and alloc new one
+              f_regmap[hr]=branch_regs[i].regmap[hr];
+            }
+          }
           if(itype[i+1]==STORE||itype[i+1]==STORELR||itype[i+1]==C1LS
           ||itype[i+1]==SHIFT||itype[i+1]==COP1||itype[i+1]==FLOAT
           ||itype[i+1]==FCOMP||itype[i+1]==FCONV)
@@ -9548,7 +9573,18 @@
             if(!((regs[i].dirty>>hr)&1))
               f_regmap[hr]=regs[i].regmap[hr];
           }
-          else if(regs[i].regmap[hr]>=0) f_regmap[hr]=regs[i].regmap[hr];
+          else if(regs[i].regmap[hr]>=0) {
+            if(f_regmap[hr]!=regs[i].regmap[hr]) {
+              // dealloc old register
+              int n;
+              for(n=0;n<HOST_REGS;n++)
+              {
+                if(f_regmap[n]==regs[i].regmap[hr]) {f_regmap[n]=-1;}
+              }
+              // and alloc new one
+              f_regmap[hr]=regs[i].regmap[hr];
+            }
+          }
           else if(regs[i].regmap[hr]<0) count++;
         }
       }
 
Last edited by a moderator:
I was actually wondering re the N64-like memory mapping approach, is 0x80000000 to 0x801FFFFF really the most commonly accessed region on PS1? I would have expected stack accesses to usually come from scratchpad (0x1F800000 to 0x1F8003FF) for instance, or is this mirrored somewhere else too?
 
Ari64 said:
notaz said:
Good, was a bit worried about that big else block for non-branches.
Oh wait... there's more.
This does replace my check, right?

Exophase said:
I was actually wondering re the N64-like memory mapping approach, is 0x80000000 to 0x801FFFFF really the most commonly accessed region on PS1? I would have expected stack accesses to usually come from scratchpad (0x1F800000 to 0x1F8003FF) for instance, or is this mirrored somewhere else too?
Don't know, but all games I debugged have their stack in RAM at least. 1K is small amount of memory really.
 
Last edited by a moderator:
ok here is r4 with long awaited BIOS support:
http://notaz.gp2x.de/releases/pcsxr/pcsx_rearmed_r4.pnd

Everyone doing compatibility tests should enable real BIOS and retest broken games, lots of them should work now. BIOS should be copied to
[sd card]/pandora/appdata/pcsx_rearmed/bios/
..and then selected in options->bios/plugins menu.

Full changelog:
  • added real BIOS support (and various things for it to work)
  • fixed various recompiler issues
  • added interpreter option (useful to overcome dynarec bugs)
  • fixed some memory card related issues with HLE bios
  • rewrote frame limiter (old was sometimes sleeping needlessly)
 
Thank you Notaz!

Re-tested all the games I have:

Heart of Darkness is now working, with some very minor jitter. :)
MDK - Good
Medal of Honor - Good
Metal Gear Solid - Good, cutscenes very choppy but gameplay smooth
Road Rash - Good (some slowdown during race)
Gran Turismo 2 - Good

The results for all tests were the same with or without BIOS enabled, except MGS which only runs with BIOS

Reminder to other users, save your global config after enabling BIOS or it will revert next time you launch a game.
 
Gruso said:
Metal Gear Solid - Not running (black screen)
Starts here after 20sec worth of black screen with real BIOS, but runs glitchy.

Strangely I can't get it to work on PC version of PCSX at all, so it's real strange that it boots here.
Edit: works on PC version with right SPU plugin, means it can be fixed eventually.
 
Last edited by a moderator:
Oh jeez, you're right. I must have tested it with HLE only.

It behaves much the same way in PSX4Pandora; the cutscenes are extremely choppy but the gameplay is fine.

[edit] If a comparison helps, the choppiness in PSX4Pandora is more stop-start, as opposed to the echo effect in PCSX. With each stop, the 'reading CD' icon appears at top right.
 
Did some quick tests

Nice with Bios scph1001.bin, Carmageddon and Need for speed 2 now works. :)

Spyro the dragon 2 now freeze after a few second of playing and have some glitches with bios but still works without,

Frameskip doesent work anymore and thats nomatter if you choose Bios or not.
 
I mention this only incase it helps anyone else scratching their head with the same silly mistake :rolleyes:

I was stuck for awhile as I couldnt get the bios recognised. Turns out I had misread notaz instructions and placed the bios file in appdata/pcsx-remarmed/.pcsx/bios where a folder is auto generated. This does not work but rather make your own folder appdata/pcsx-rearmed/bios as notaz said and put it in there.

Cant believe the speed of progress with this, notaz and everyone else who's helped, its awesome work thankyou :)
 
Notaz, I am sick of saying this, but you are the fuckin man!

Jap patched SOTN works! Was very jumpy/flaky at first with the new release but now runs brilliantly, didnt work at all before, maybe one or two jerks here and there now, but I'm sure that will be sorted with your rapid updates.

Thank you so much. I will be donating again.
 
Chaser said:
I mention this only incase it helps anyone else scratching their head with the same silly mistake :rolleyes:

I was stuck for awhile as I couldnt get the bios recognised...
Thanks! I was starting to scratch me head there ;)

Has anyone tried Syphon filter yet? Im away for the weekend so I cant try it out till I get home.
 
Last edited by a moderator:
As for head scratch with my no. of kids its usually nits, so I was pleased it was a real problem for once :)

Syphon Filter NTSC-U (.img) - 1st go failed but 2nd try it now works and runs the cutscenes with good lip synch and perfect sound, in game runs at about 35-40fps @ 800mhz but feels a little slow and dips in ingame cutscenes, so some more OC should sort that. Yes oh Yes!

I will test 2 and 3 in a minute.

edit :

Syphon Filter 2 NTSC-U (.img)- plays all the cutscenes but sometimes exits to desktop as the mission 1 briefing page is presented. Plays at upto 40+ fps at 800mhz

Syphon Filter 3 NTSC-U (.img) - Quits back to emu menu on selection.

Syphon Filter 3 (PAL) - (.img)- Plays cutscenes but after mission briefing the cutscenes gfx stall whilst Gabe is on the radio and the audio continues to completion but you cant see anything of the rest of this cutscene (repeatable). Pressing X then brings things back and it plays at 40-50fps @ 800mhz feels fullspeed, with less cutscene slowdown than no 1.

So the whole of a very good PSX trilogy now work very well :)
 
Grand Turismo 1 also works much better then on the PSX4Pandora. Also its faster/smoother. And has no bugs. With the PSX4Pandora the automatic shifting does not work. Then also all AI Cars can`t really drive. But with PSX Rearmed it works like a charm. And it has basic features i miss in the other emu.
I have only one issue with the game. The Analog Knobs does not work in the GT1. Are the analog knobs supported in PSX Rearmed?

Thank you very much Notaz to create this beautiful piece of software. And also Ari64! I also very like to have N64 Games on the Pandora!
 
Back
Top