Jump to content


Photo

Pcsx-Rearmed


  • Please log in to reply
1132 replies to this topic

#46 notaz

notaz

    Mega GP Mania

  • GP Guru
  • 1736 posts
  • Location:Lithuania

Posted 27 December 2010 - 03:33 PM

Crash 2 and 3 - both crash before gameplay begins.

Crash 3 is working here - which version did you try?

Notaz - anything in particular I can do to try to help you debug/figure out what might be going on? I'll continue to try to see if I can narrow down the specific circumstances that cause the hang...

Just tell me exact game name and region, Lunar - Silver Star US I assume?

#47 jumpman

jumpman

    Mega GP Mania

  • GP32 Hardcore
  • PipPipPipPipPipPip
  • 1011 posts
  • Gender:Male
  • Location:Sin City

Posted 27 December 2010 - 03:37 PM

*edit*
just found that "Crash 2 and 3 - both crash before gameplay begins". should read before write ;)

Don't worry, with Notaz at the helm, the Crash games should be playable in no time. I still remember when he added Sega CD support to Picodrive on the GP2X. It started off just running a few games, and there was many hiccups/bugs, and things that didn't run. Over several months, almost everything worked at one point or another, and at default cpu settings.

We all know the Pandora is capable of PS1 emulation, but it will just take time to work out the bugs, and get performance up. Notaz is for sure the right man for the job. I just hope he doesn't loose interest, and move on before it gets to a better working state. I'm very confident N64 will also get to a much improved state over time. You might not ever be able to play every game perfectly, but I'm sure at some point we will all be able to play a wider majority. It just all takes time! ;)

Chris

#48 jb0yx

jb0yx

    I CAN HAZ PANDORA?

  • GP32 Hardcore
  • PipPipPipPipPipPip
  • 801 posts
  • Gender:Male
  • Location:Indianapolis, IN USA

Posted 27 December 2010 - 03:47 PM


Does it handle PSP-style eboots by chance?

nope, will see how many requests I get for that before considering it.

Half my psx library has been converted over to eboot/pbp, put my name in the hat of requests to please support this, thanks.

#49 MooTheKow

MooTheKow

    GP32 Hardcore

  • Members
  • PipPipPipPip
  • 139 posts

Posted 27 December 2010 - 03:53 PM


Crash 2 and 3 - both crash before gameplay begins.

Crash 3 is working here - which version did you try?

Notaz - anything in particular I can do to try to help you debug/figure out what might be going on? I'll continue to try to see if I can narrow down the specific circumstances that cause the hang...

Just tell me exact game name and region, Lunar - Silver Star US I assume?


Lunar - Silver Star Story Complete (USA)

Also - Alundra (USA) (v1.1) hangs at the loading screen when attempting to start a new game.

Edited by MooTheKow, 27 December 2010 - 03:57 PM.


#50 crow_riot

crow_riot

    Mega GP Mania

  • GP32 Hardcore
  • PipPipPipPipPipPip
  • 1133 posts
  • Gender:Male
  • Location:.at
  • Interests:music & programming

Posted 27 December 2010 - 04:34 PM


*edit*
just found that "Crash 2 and 3 - both crash before gameplay begins". should read before write ;)

Don't worry, with Notaz at the helm, the Crash games should be playable in no time. I still remember when he added Sega CD support to Picodrive on the GP2X. It started off just running a few games, and there was many hiccups/bugs, and things that didn't run. Over several months, almost everything worked at one point or another, and at default cpu settings.


I'm pretty sure notaz can make it - i'm not long here in this forum, but already saw what he's able to do :)

#51 EvilDragon

EvilDragon

    There can't be enough evil in this world!

  • Admin
  • PipPipPipPipPipPip
  • 7819 posts
  • Location:Ingolstadt, Germany... somewhere near Munich

Posted 27 December 2010 - 06:00 PM

Nice one, Suikoden 2 runs better than on PSX4Pandora :)

Now I just need to get the save working... when I simply copy over the memory card, Suikoden 2 finds the save but says "cannot load"...
Will try to create a new save and see what the difference here is (or hexedit the data part from my old save into the fresh one).

#52 Chaser

Chaser

    GP Mania

  • GP32 Hardcore
  • PipPipPipPipPip
  • 408 posts
  • Gender:Male
  • Location:Manchester
  • Interests:Retro consoles

Posted 27 December 2010 - 06:01 PM

notaz,

Crash Bandicoot 3 - Warped [NTSC-U] [SCUS-94244] .bin/cue

In addition you mention only .img files (.bin) etc work, so I thought to add that a number of .mdf files I have, are running aswell, which wouldnt run under psx4pandora.

They are :

G-Police 2 - quits after logo screens

Medal of Honour underground - quits as mission 1 starts.

Resident Evil Survivor - Near perfect. Lacks sound in intro animation, otherwise full speed 60fps with sound ingame R1 for reticle X to shoot.

Vagrant Story - same issues as my .img version

The Adventures of Little Ralph - Perfect.

Heres some more results .bin/.img:

Better:

Cool Boarders 3 : Priorly slow with gfx glitches and constant drumming, now runs very nicely at 50fps. Almost Perfect.

Die Hard Trilogy - Priorly crashed to desktop. Now works very well for all three and sufficient to clear 2 levels on first try of Die Harder via d pad. This makes the first lightgun game to be properly playable.

Fear Effect 2 - Perfect. Prior had poor synch of speech.

Final Fantasy VI - Perfect. YMMV but it didnt work for me before.

Worse :

Bugs Bunny Lost in Time - Crashes to desktop after menu `loading´, priorly made it to loading demo.

#53 Lobo

Lobo

    GP Mania

  • GP32 Hardcore
  • PipPipPipPipPip
  • 439 posts

Posted 27 December 2010 - 06:10 PM

I will try and do a more complete test run later tonight.

One thing I did notice was that someone mentioned that Tenchu 1 and 2 dont work, but I tried both (PAL versions) and they worked for me, at least I got into the game and killed a few baddies with no issues. Also, Final fantasy 9(PAL) crashes on me but other folks said it works. Guess we better start mentioning the region of the game we are playing...

#54 EvilDragon

EvilDragon

    There can't be enough evil in this world!

  • Admin
  • PipPipPipPipPipPip
  • 7819 posts
  • Location:Ingolstadt, Germany... somewhere near Munich

Posted 27 December 2010 - 07:58 PM

Okay, seems Suikoden 2 doesn't run properly. Sound is perfect, speed is way faster than with PSX4Pandora.
But: It has some minor graphical issues (windows, menus), some issue with displaying the character stats correctly (i.e. Lv. 3 is displayed as Lv. 33, 6 HP as 666 :))
It doesn't seem to load a game from the memory card (I used the card from PSX4Pandora) and it also doesn't save (even on a fresh created memcard from PCSX-Rearmed): It hangs after you selected the memory card.

Need to try some other games :) Finally no pitch-changing music :D

Thanks a lot again :)

#55 Unfathomable Depths

Unfathomable Depths

    sláinte

  • GP32 Hardcore
  • PipPipPipPipPipPip
  • 877 posts
  • Gender:Male
  • Location:Scotland

Posted 27 December 2010 - 08:57 PM

@800 mghz

Hot Shots Golf works perfectly.
iS Internal Section (Japan) [En by GSHI v1.02] almost works. Gets to the game itself then crashes to the desktop. Need to try the Japanese version. *edit* without the subs.
Driver2 doesn't work. Well it runs but the city models and camera are messed up.

Edited by Unfathomable Depths, 27 December 2010 - 09:06 PM.


#56 Chaser

Chaser

    GP Mania

  • GP32 Hardcore
  • PipPipPipPipPip
  • 408 posts
  • Gender:Male
  • Location:Manchester
  • Interests:Retro consoles

Posted 27 December 2010 - 09:28 PM

I will try and do a more complete test run later tonight.

One thing I did notice was that someone mentioned that Tenchu 1 and 2 dont work, but I tried both (PAL versions) and they worked for me, at least I got into the game and killed a few baddies with no issues. Also, Final fantasy 9(PAL) crashes on me but other folks said it works. Guess we better start mentioning the region of the game we are playing...


Yeah Tenchu 1 and 2 PAL ripped from my own discs both work on psx4pandora but not on pcsx-rearmed, whereas FFIX PAL (self rip) is the reverse as was FFVI and FFVIII but 7 is fine in both, but plays better on notaz emu. YMMV I guess. Im just stoked to have the options available between the emus now.

Im posting results to help notaz find bugs but also to show comparison and current best option for given games. Seems there is no hard and fast rules though, for example Vagrant Story has worked for others for ages but not for me in either emu, from my own rips or any versions outhere. Weird.

#57 Ari64

Ari64

    Magic Emulator Fairy

  • GP32 Hardcore
  • PipPipPipPipPip
  • 477 posts

Posted 27 December 2010 - 10:35 PM


I know that a few N64 games do use BGEZAL, and they seem to work okay. I will admit that this code is not well tested.

hmh even without link handling?

It does handle the link register (in sjump_assemble) like so:

return_address=start+i*4+8;
        emit_movimm(return_address,rt); // PC into link register
The unfinished part is where the delay slot can not be reordered due to a dependency. Fixing this is probably as simple as copying that code into the in-order execution case, and making sure the register allocation is correct.

These instructions are so uncommon that I didn't know if I'd implemented it correctly because almost nothing uses it. So I put an assert in there and figured I'd debug it when I found a test case. I never found such a case, but it looks like you did.

Did you look at those bugfixes I listed above? I still don't feel I know what I'm doing when dealing with your code, so would be nice to get your confirmation.


-  u_int verifier=(int)ptr+((*ptr<<8)>>6)+8; // get target of bl
+  u_int verifier=(int)ptr+((signed int)(*ptr<<8)>>6)+8; // get target of bl
Yes, it should be signed. The relative offset was always positive in my builds, but I'd bet this is one of the things that's making the Android ports crash.

drc: fix unsaved register
    
    it caused invalidate_addr() sometimes to be called with bad address.
Hmm.. This won't break anything, but might waste cpu cycles with useless calls to invalidate_addr(). It appears that storelr_assemble has the same glitch.

There shouldn't be any reason to call both STORE*_STUB and INVCODE_STUB, unless there is code at addresses that aren't in normal RAM.

I think the right solution would be to change the return address of the first stub, so that only one or the other is called.

drc: allow xor imm 0
xor with zero does nothing. If you're generating that instruction, then you've probably introduced a bug. This is rather useless also:

if© x=(constmap[i][s]+offset)-(constmap[i][s]+offset);
...

drc: don't clear ARM caches on whole translation cache - it's very slow
Is it really faster to call __clear_cache multiple times in ll_kill_pointers, rather than clearing the entire cache once?

Doing the smaller regions in invalidate_page might be helpful, but I haven't benchmarked it.

drc: fix: storelr should also use AGR
There's clearly a problem there, but I don't think that's all of it. If that code was working, then I'm guessing that the address generation register isn't being allocated properly in pass 5. I'd need to think about this some more, and possibly look at the debugging output to see what the register allocation actually looks like.

#58 MonkeyChops

MonkeyChops

    NO! I don't play basketball

  • GP32 Hardcore
  • PipPipPipPipPipPip
  • 949 posts
  • Gender:Male
  • Location:OHIO
  • Interests:retro games, music, drums, beer brewing

Posted 27 December 2010 - 11:03 PM

SOTN [U] [slus-00067] worked great for me at 650

Civ 2 [slus-00792] loads and sets up a game fine but then hangs on the loading screen as others have been reported to do.

Front Mission 3 [u] [slus-01011] just brings up a "now loading" screen and never loads.

Tenchu 1 [u] worked good for me at 650. The sound was a little glitchy in the pre-game menus but in game it looked, sounded, and felt pretty smooth.

Brave Fencer Musashi [slus-00726] was choppy at 650, both in gameplay and also with in-game voice overs, music was fine. bumping up to 750 fixed gameplay but not the choppy voice over, even at 850 the voice was choppy but I did notice some improvement.

FF8 [PAL] - intro video was flawless at 650 (once I changed the the emu setting to PAL :P), in the academy is also good until you are about to leave the classroom for the first time. The group of people are suppose to leave before you as you talk to the teacher (which you have to do), however, the group of people get stuck, presumably walking into each other and creating a glitch, they bunch together and then just walk in place indefinitely. The teacher then walks into the group and also gets stuck, meanwhile Squall is unable to move at all. I tried it 3 times from 3 different angles and I kept getting the same result. Anyone else having this problem?

More tests to come.

Thanks so much for this notaz, Great stuff!

#59 Pickle

Pickle

    Mega GP Mania

  • X-treme Team
  • 4074 posts
  • Gender:Male
  • Location:Detroit, Michigan

Posted 27 December 2010 - 11:20 PM

FF8 [PAL] - intro video was flawless at 650 (once I changed the the emu setting to PAL :P ), in the academy is also good until you are about to leave the classroom for the first time. The group of people are suppose to leave before you as you talk to the teacher (which you have to do), however, the group of people get stuck, presumably walking into each other and creating a glitch, they bunch together and then just walk in place indefinitely. The teacher then walks into the group and also gets stuck, meanwhile Squall is unable to move at all. I tried it 3 times from 3 different angles and I kept getting the same result. Anyone else having this problem?


yes same problem with ntsc version

#60 notaz

notaz

    Mega GP Mania

  • GP Guru
  • 1736 posts
  • Location:Lithuania

Posted 28 December 2010 - 12:27 AM

Fixed Medal of Honor, Gran Turismo and Lunar hang today, I bet more games will be affected too. Does everyone prefer frequent small updates or rarer but more significant ones?



hmh even without link handling?

It does handle the link register (in sjump_assemble) like so:

return_address=start+i*4+8;
        emit_movimm(return_address,rt); // PC into link register
The unfinished part is where the delay slot can not be reordered due to a dependency. Fixing this is probably as simple as copying that code into the in-order execution case, and making sure the register allocation is correct.

What about the case with no ooo, i.e. BLTZALL, don't see any r31 saving there.

drc: fix unsaved register
    
    it caused invalidate_addr() sometimes to be called with bad address.
Hmm.. This won't break anything, but might waste cpu cycles with useless calls to invalidate_addr(). It appears that storelr_assemble has the same glitch.

In my case it managed to slow things below interpreter level, there could be N64 games suffering badly from this. I don't think storelr is affected with register trashing, only sometimes doing both stubs.

There shouldn't be any reason to call both STORE*_STUB and INVCODE_STUB, unless there is code at addresses that aren't in normal RAM.

I think the right solution would be to change the return address of the first stub, so that only one or the other is called.

Yeah, I'm already relying on this in memhandlers though.

drc: allow xor imm 0
xor with zero does nothing. If you're generating that instruction, then you've probably introduced a bug.

But I was hitting this with xor assemble, some game used this to do a move I guess.

This is rather useless also:

if© x=(constmap[i][s]+offset)-(constmap[i][s]+offset);

hmh right

drc: don't clear ARM caches on whole translation cache - it's very slow
Is it really faster to call __clear_cache multiple times in ll_kill_pointers, rather than clearing the entire cache once?

Yup, the kernel implementation is rather stupid and iterates through every cacheline and does mcr on each of it, taking ~0.4sec. In 2.4 kernel times it used to do whole CPU cache after some threshold was crossed, they dropped that in 2.6 for some reason. If you watch ED's N64 video you'll see some N64 games suffering from this.

drc: fix: storelr should also use AGR
There's clearly a problem there, but I don't think that's all of it. If that code was working, then I'm guessing that the address generation register isn't being allocated properly in pass 5. I'd need to think about this some more, and possibly look at the debugging output to see what the register allocation actually looks like.

The code was usually working here too, I guess it depends on how registers are allocated to trigger this or not.



FF8 [PAL] - intro video was flawless at 650 (once I changed the the emu setting to PAL :P ), in the academy is also good until you are about to leave the classroom for the first time. The group of people are suppose to leave before you as you talk to the teacher (which you have to do), however, the group of people get stuck, presumably walking into each other and creating a glitch, they bunch together and then just walk in place indefinitely. The teacher then walks into the group and also gets stuck, meanwhile Squall is unable to move at all.

Can someone do me a savestate something like 20sec before this happens (after it happens it might be too late and the glitch might get "saved").