Jump to content


Photo

Pcsx-Rearmed


  • Please log in to reply
1132 replies to this topic

#31 b_o_b

b_o_b

    Mega GP Mania

  • GP32 Hardcore
  • PipPipPipPipPipPip
  • 1159 posts

Posted 26 December 2010 - 10:24 PM

Which version, the one from repository? HLE/real BIOS?


PCSX-Reloaded 1.9.92 (so latest version). No real BIOS, so HLE. I checked the BIOS directory to be sure it was empty.

PCSX isn't available in the standard repository. I used the playdeb method to install. http://www.playdeb.n...u/10.10/?q=pcsx

#32 notaz

notaz

    Mega GP Mania

  • GP Guru
  • 1736 posts
  • Location:Lithuania

Posted 26 December 2010 - 10:51 PM

Tried a lot of games today and compatibility seems to be quite good. There were a few notable exceptions were some games didnt load or directly crashed the emu (games which in just about every other emu work) but overall pretty good.

Please list those emu crashers so I can look at them.

#33 jonlad1

jonlad1

    GP Mania

  • GP32 Hardcore
  • PipPipPipPipPip
  • 488 posts
  • Gender:Male
  • Location:Perth, Australia

Posted 26 December 2010 - 11:20 PM

Awesome support already, the "other" PSX emu didnt get such speedy replies and that is why this gets my money and support!

#34 Pickle

Pickle

    Mega GP Mania

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

Posted 26 December 2010 - 11:25 PM

Medal of Honor Log:
rm: cannot remove `/tmp/cpuspeed': No such file or directory
not mounted on loop yet, doing so
LoopMountedon: 
losetup: Could not find any loop device. Maybe this kernel does not know
       about the loop device? (If so, recompile or `modprobe loop'.)

usedminor
freeminor 1
Filetype is Squashfs
sudo mount -t squashfs  /dev/loop1
mounting union!
Filesystem is vfat
[------------------------------]{ App start }[---------------------------------]
oshide: open /dev/tty: No such device or address
plugin_link: missing symbol 0 GPUclearDynarec
plugin_link: missing symbol 0 GPUvBlank
plugin_link: missing symbol 0 GPUclearDynarec
plugin_link: missing symbol 0 GPUvBlank
writing fir: up_h
writing fir: up_v3
writing fir: up_v5
pcsx: libpcsxcore/new_dynarec/new_dynarec.c:5624: sjump_assemble: Assertion `opcode2[i]<0x10||rs1[i]==0' failed.
Running PCSX Version 1.9 (Dec 25 2010).
Init new dynarec
No memory card value was specified - creating a default card memcards/card1.mcd
Loading memory card memcards/card1.mcd
No memory card value was specified - creating a default card memcards/card2.mcd
Loading memory card memcards/card2.mcd
in_evdev: found "gpio-keys" with 30 events (type 00100023)
input: new device #0 "evdev:gpio-keys"
in_evdev: found "keypad" with 84 events (type 00100013)
input: new device #1 "evdev:keypad"
in_evdev: found "nub0" with 3 events (type 00000007)
input: new device #2 "evdev:nub0"
in_evdev: found "nub1" with 3 events (type 00000007)
input: new device #3 "evdev:nub1"
# drv probed binds name
0   2      y     y evdev:gpio-keys
1   2      y     y evdev:keypad
2   2      y     n evdev:nub0
3   2      y     n evdev:nub1
oshide: X vendor: The X.Org Foundation, rel: 10704000, display: :0.0, protocol ver: 11.0
oshide: display is 800x480
/dev/fb0: 800x480@16
fbdev initialized.
 switching to 640x512@16
/dev/fb1: 640x512@16
fbdev initialized.
found skin.txt
dlopen plugins/builtin_cdr
dlopen plugins/builtin_gpu
dlopen plugins/builtin_spu
dlopen plugins/builtin_pad
dlopen plugins/builtin_pad
Plugins loaded.
ari64_reset
selected file: /media/SDCARD/games/pcsx4all/isos/MOH.cue
dlopen plugins/builtin_gpu
dlopen plugins/builtin_spu
dlopen plugins/builtin_pad
dlopen plugins/builtin_pad
Plugins loaded.
Loaded CD Image: /media/SDCARD/games/pcsx4all/isos/MOH.cue[+cue].
Track 01 (DATA) - Start 00:02:00, Length 70:09:60
ari64_reset
CD-ROM Label: MOH_NTSC                        
CD-ROM ID: SLUS00974
 switching to 320x240@16
 switching to 512x240@16
 switching to 320x240@16
 switching to 512x240@16
 switching to 320x240@16
 switching to 512x240@16
 switching to 320x240@16
 switching to 512x240@16
 switching to 320x240@16
 switching to 512x240@16
Aborted
open /dev/tty: No such device or address
fixing yoffset.. ok
[-------------------------------]{ App end }[----------------------------------]
cleanup done


#35 Ari64

Ari64

    Magic Emulator Fairy

  • GP32 Hardcore
  • PipPipPipPipPip
  • 477 posts

Posted 27 December 2010 - 12:22 AM

So I decided to go for combining Ari64's recompiler with PCSX and ended up with this build of PCSX-ReARMed that you can try now. Something like 95% of the time was spent on integrating the recompiler and fixing various related issues that arose from this work. No matter how good it is for recompiling, it's *very* difficult and frustrating to work with due to code quality issues. Code duplication (usually 3-4 times), most variables given 1 to 3 letter long names, globals all over the place, magic constants and some hardcoded N64 logic made it a really tough job (no offense Ari64, I'm really pleased on how it works now, at least until new major bug pops up B) ).

I'd like to know what recompiler you think has a good design. :)

Every CPU core that I've ever seen has either code duplication or an excessive number of macros that make the code unreadable. It's kinda inevitable when you have many instructions with similar but not identical operations.

I tried to minimize code duplication by grouping similar opcodes into a single function. For example, all the arithmetic/logic operations are in alu_assemble. This wasn't always as successful as I'd hoped. Combining the coprocessor loads and stores into a single function lead to a "magic constants" mess where it checked the opcodes. Also the delay slot reordering turned into a much bigger mess than I'd anticipated (it does work, and generates much better code than psx4all.) Other code duplication was to deal with certain rare cases that only became apparent relatively late in development (mostly tlb-related, eg dyna_linker_ds).

I clearly designed the recompiler as an N64 emulator and not a PSX emulator. For example, many tables are sized to optimize for emulating a system with 8MB RAM (eg jump_in, restore_candidate). That said, I'm surprised at how little you had to change to get it to work for pcsx. Most of the changes were for GTE.

I still can't figure out what you did with the JALR instruction. Is it really possible to have the return address in a register other than 31?

(although it's under rather restrictive GPL license).

ZodTTD hasn't been very consistent about publishing source code, but he isn't the only offender. I don't see how a license other than GPL would address this problem. Not that it's all that easy to enforce the GPL.

Anyway, having an up-to-date, open source psx emulator for the Pandora is really great. Thanks for doing this.

#36 notaz

notaz

    Mega GP Mania

  • GP Guru
  • 1736 posts
  • Location:Lithuania

Posted 27 December 2010 - 01:13 AM

That said, I'm surprised at how little you had to change to get it to work for pcsx. Most of the changes were for GTE.

Hmh I'm not really sure about that. git log lists 24 commits (I try to do 1 commit per 1 logical change) and it looks I'll need to do more due to bugs just reported.

I still can't figure out what you did with the JALR instruction. Is it really possible to have the return address in a register other than 31?

Sure, check the manual. At least Crash bandicoot 3 relies on this.
The reported Medal of Honor crash is because it does BGEZAL, and you don't handle that.
Chrono Cross does unaligned store to non-RAM location that emited 'swi 0' - was this a form of TODO? Note that swi0 is valid EABI syscall interface..

Here is a list of commits that I think fix bugs in your code (in addition to missing stuff listed above; use 'git show <hash>' to lookup):
cfcba99, 666a299, 514ed0d, f76eeef, fab5d06

(although it's under rather restrictive GPL license).

ZodTTD hasn't been very consistent about publishing source code, but he isn't the only offender. I don't see how a license other than GPL would address this problem. Not that it's all that easy to enforce the GPL.

What I meant there is that when I considered doing emu from scratch I would most likely have it closed source to prevent it's ports ending up in appstores, Zod-like donation-hostage setups, Chinese PMPs and such. Your recompiler could not be used then.

#37 skeezix

skeezix

    Mega GP Mania

  • GP Guru
  • 5088 posts
  • Gender:Male
  • Interests:Blog: http://www.rjmitchell.ca/~jeff/blog2009/

Posted 27 December 2010 - 02:22 AM

Just popping in to say hey and well wishes for everyone.. quite a surprise! Notaz stealth coding again ;)

I've been working huge hours, barely had time to pop by lately (working through most of Xmas even .. too many layoffs and layoffs :/), so cool to see a surprise :)

Does it do redbook audio/whatever? I've only for a few PS1 titles (and riped right from CDs, so nice and big :) , but hopefulyl can get audio in Wipeout .. great game, but needs audio; will try in a bit!

jeff

(Worst part of Christmas is all the family and friends heading home .. house is so quiet afterwards! But spent a few hours today playing wooden trains with my little girl, so life is good ;)

edit: notaz, Wipeout 3 for first run .. I've got a .img ripped from the PSX CD. Pal English version in fact.
Last useful line is: fixing yoffset.. ok
then boom, crash.

Does this need scratch space on the SD by chance? Space is tight there.

--

Does it handle PSP-style eboots by chance? I'm assuming not. I have a Hydro Thunder psp eboot rip I made a few years back, seems no go; I'll have to strip off the PSP headers and such and give it a shot.

R-Type Delta, spins forever on Now Loading; a PSP oriented eboot that I previously converted to iso for testing with some random emu.

--

Not great debug info, but only so much I can type on my phone :) If you like, I'll get solid dumps of the logs for you or in a few days I throw it up in gdb and see what I can see.

jeffphone

#38 Chaser

Chaser

    GP Mania

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

Posted 27 December 2010 - 02:53 AM

Wow Notaz thats one helluva xmas present :)

I love the UI, its way more responsive, the save states work fine but memcards saves only just started working (after V rally 2 must have written them in. Lost a bunch FFVII ones but they do now work). In fact defnitely do as Pickle states and create 'memcards' folder in 'pcsx/appdata' as they dont work otherwise. I also noticed as DaveC had mentioned there's an issue with remapping controls but that is a godsend anyway. In addition I cant get a 'global config' to save the scaler as 'fullscreen' (should I be able to?)

Anyhow I started testing at 12.30am when I found this and have tried a bunch of games.

Better than PSX4:

3xtreme - faster speed but sound is wrong.
The Abe games - both work with no gfx issues or fix needing.
Ape escape - same dual analog story.
Alone in the Dark 4 NN - Seems fine, whereas used to crash after initial cutscene.
Batman Forever Arcade - Now doesnt quit after some damage is taken.
Darkstalkers 3 - Perfect now. Had gfx issues on R side of screen before.
FFVII - seemed smoother music and slightly faster to me (so I lost a few hours till 3am there :) )
FFVIII - Now works for me. Havent checked the world map screen for issues yet.
FFIX - Same story (except I give a shit about 9 and 8 could've drowned itself in the opening ocean).
RidgeRacer4 - seemed better speed but the music was out of synch.
Colin McCrae Rally - for me at least, now runs the Rally school section which crashed out in PSX4Pandora and no longer has the last part of the intro garbled.`
Rollcage 1 - gets to fully loading the race bar...and then hard crashes.
Smurf Racer - flawless until race start. Crashes.
Time Crisis - looks like it might run but d-pad wont move cursor more than a few millmetres.
Vagrant Story - Now works for me but no character models in cutscenes and Ashley is in an offscreen position.
Virtual Pool - works fine in this emu.
V Rally 2 - seems way faster and more responsive.
Wipeout 3 - Now has music :)

Worse than:

40 Winks - crashes to desktop.
Alien Ressurection - crashes to desktop. Can change the keys to make it playable though :)
Apocalypse - crashes to desktop
Auto Destruct - Poorer sound and speech.
Anna Kournikova SCT - Music is messed up, notes hang until service etc.
Bishi Bashi Special - soft crashes at the choice of Super or Hyper mode.
Bushido Blade 2 - Runs at better speed but has rendering issues.
Carmageddon - hard crashes the system.
Crash 2 and 3 - both crash before gameplay begins.
Darkstone - loops its intro animations then crashes to desktop after 'press X to start'
Deathtrap Dungeon - loads just 1fps of the bios disclaimer.
Dino Crisis 2 - Intro smoother. In game just garbled gfx.
G Police - Crashes to desktop.
Metal Gear Solid - black screens.
Omega Boost - doesnt run
Point blank 3 - hard crashes.
Silent Bomber - seems fine then loops the drop zone animation of Dante in the tutorial and cant be played.
Soul Reaver - crashes to desktop on game start.
Space Hulk - doesnt run
Tiger Woods PGA - Severe sound stutter.
Tom Clancys Rogue Spear - fails to load levels. Priorly ran but mis rendered.
Tony Hawks - crashes to desktop after the intro animations.
Tenchu 1 - crashes to desktop after sony spiel.
Tenchu 2 - runs intro movies but quits when training level is loading.
RC Stunt Copter - analog controlle issue (my bust nub maybe as worked b4)
Resident Evil Directors Cut - black screens immediately.


Same :

Destruction Derby - dont play
Devil Dice - still no dice!
Discworld - Plays fine.
Discworld II - dont play
Duke Nukem - Time to Kill - Plays fine.
Exhumed - Plays fine.
Fear Effect - Plays fine.
Final Doom - Hard crash
G Darius - Plays well. Some sound stutter.
Intelligent Qube - plays fine.
Virtual Pool 3 - dont play

Loads more to try : )

Sorry for repetitions but peoples mileage does vary.
Many thanks again Notaz as for the UI + FFIX alone this is awesome :)

Edited by Chaser, 27 December 2010 - 02:54 AM.


#39 Ari64

Ari64

    Magic Emulator Fairy

  • GP32 Hardcore
  • PipPipPipPipPip
  • 477 posts

Posted 27 December 2010 - 03:01 AM


That said, I'm surprised at how little you had to change to get it to work for pcsx. Most of the changes were for GTE.

Hmh I'm not really sure about that. git log lists 24 commits (I try to do 1 commit per 1 logical change) and it looks I'll need to do more due to bugs just reported.

There were 9 places where you reversed the endianness, and most of the rest was removing FPU, 64-bit, and TLB. I thought changing the memory layout would be more complex, though from what you say, this might need more work.


I still can't figure out what you did with the JALR instruction. Is it really possible to have the return address in a register other than 31?

Sure, check the manual. At least Crash bandicoot 3 relies on this.
The reported Medal of Honor crash is because it does BGEZAL, and you don't handle that.
Chrono Cross does unaligned store to non-RAM location that emited 'swi 0' - was this a form of TODO? Note that swi0 is valid EABI syscall interface..

I'm fairly certain no N64 games rely on this behavior for JALR, because I never noticed that it was wrong, and no one reported it.

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.

Unaligned stores to non-ram locations are unimplemented because I don't know what the correct behavior is supposed to be, and no N64 games do that. If these locations are treated like RAM, then I guess you can break it down into separate byte/word stores. If they're I/O triggers, then I don't know what the actual hardware would do.


What I meant there is that when I considered doing emu from scratch I would most likely have it closed source to prevent it's ports ending up in appstores, Zod-like donation-hostage setups, Chinese PMPs and such. Your recompiler could not be used then.

If my recompiler wasn't open source, then it probably wouldn't be used much at all, and we would have rather poor N64 and PSX emulation on the Pandora, if any.

Dingoo/Gemei actually selling a PSX or N64 emulator would be quite a leap for them in terms of hardware capability :)
They will probably try it eventually, just like they did with gpSP and snes9x.

#40 DaveC

DaveC

    Mega GP Mania

  • GP Guru
  • 9170 posts

Posted 27 December 2010 - 05:28 AM

Thanks for the support everyone!


The Key binding thing is a bit weird too.

It's a copy-paste bug. Memcards are both HLE bios problem and me messing up paths, I'll fix the later at least.


Question - Will not requiring the BIOS stop some games from working?

Yup, and real BIOS needs some dynarec support that's missing right now.

If you fix the later that means you will look at the Memcard bug but won't look at the key binding issue? How can I set the keys back to what they are supposed to be then? Where did you hide the key config thing, I can maybe just edit the config file.

Also what do you think of the config per game idea, you didn't really mention the thoughts with that. The reason that would be good is because the PSX had 4 shoulder buttons. Some games work better with the actual shoulder buttons as L1 and L2 and some games work better the opposite. Having to go through the key bindings constantly to switch back and forth is not too easy. Also many games had many different resolutions so it would be nice to be able to tailor that per game, otherwise again you need to fiddle around for different games. You did this nicely in PicoDrive so I would guess it would be pretty simple here too.

I think having BIOS support would be pretty important and do wonders for compatibility. At least then it should match or exceed PSX4Pandora in compatibility and then we could nix that emu as it is not nearly as good. I hope someday before you move to something else that maybe that could be added.

Please list those emu crashers so I can look at them.


In case you missed my short list of crashers that work in PSX4Pandora:

Disruptor - crashes to minimenu
Einhander - locks up at "WAIT..." screen (BIOS related maybe?)
Raystorm - locks up during intro.

Thanks again for everything, This is looking brilliant so far..

Edited by DaveC, 27 December 2010 - 05:48 AM.


#41 fvig2001

fvig2001

    Member

  • Members
  • PipPip
  • 15 posts

Posted 27 December 2010 - 06:02 AM

Wow, thanks for the new PSX emulator!
I've tested the following games @800 MHz,
Capcom Vs. SNK Millenium Pro: No Music, and a bit slow but playable
Kensei Sacred Fist: The 3D models do not display well at all. It's like nobody's there but arms on the ground
Wild Arms: Yay it works, slightly choppy music on title screen, but it's almost perfect otherwise... so far.
edit: Wild Arms works ok for a little while, however when the music plays long enough, a different music plays at the same time and the game hanged. (Tested on Cecilia's Story, crashed when I tried to bind a new spell)

@500 MHz,
Mr. Driller: Slow, but probably more playable @800MHz.
I'll try to test my other games.

Edited by fvig2001, 27 December 2010 - 06:12 AM.


#42 notaz

notaz

    Mega GP Mania

  • GP Guru
  • 1736 posts
  • Location:Lithuania

Posted 27 December 2010 - 01:56 PM

Does it do redbook audio/whatever? I've only for a few PS1 titles (and riped right from CDs, so nice and big :) , but hopefulyl can get audio in Wipeout .. great game, but needs audio; will try in a bit!

yup, .cue/.bin rips only though.

edit: notaz, Wipeout 3 for first run .. I've got a .img ripped from the PSX CD. Pal English version in fact.
Last useful line is: fixing yoffset.. ok
then boom, crash.

PAL detection is rather broken so it could be because of that, I'll have a look. There is report above it works, I assume it's the US version.

Does this need scratch space on the SD by chance? Space is tight there.

nope.

Does it handle PSP-style eboots by chance?

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



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?

Unaligned stores to non-ram locations are unimplemented because I don't know what the correct behavior is supposed to be

Yeah me too, so I just did what PCSX interpreter does there and it works,

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.



If you fix the later that means you will look at the Memcard bug but won't look at the key binding issue? How can I set the keys back to what they are supposed to be then? Where did you hide the key config thing, I can maybe just edit the config file.

Key config is already fixed in my local tree. And key config saving is not implemented at all yet anyway, just restart the emu..

Also what do you think of the config per game idea, you didn't really mention the thoughts with that.

Idea is good but I don't know if/when it will be implemented.

#43 MooTheKow

MooTheKow

    GP32 Hardcore

  • Members
  • PipPipPipPip
  • 139 posts

Posted 27 December 2010 - 02:01 PM

Anyone else had random issues with games locking up? (I.e. hitting space won't even bring up system menu -- have to hit the pandora button to kill the process?). I've been experiencing this in the game Lunar right after the initial credit screen is shown after starting the game. Screen goes black - then nothing. Sometimes it works - sometimes it doesn't. I've been trying to figure out the exact scenario when it doesn't work... seems to generally work the first time I start the emulator up after wiping out the appdata folder... and doesn't seem to matter if there is a memcards directory or not. I'm not sure what's going on... One time I cleared out the folder - loaded up the game.. it worked.. then without exiting I tried re-loading the .cue file and it didn't work (hung again). I also seemed to hit the issue when trying to start a new game of Alundra.. both Working Designs games.. not sure if that is significant.


UPDATE: I did find that in lunar if I create a save-state after the point where it hangs starting up Lunar things actually work if i use that save-state to skip the games start-up.

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...

Btw Notaz - Fantastic work. You continue to impress me.. I really appreciate your work (on both this and Picodrive)... exceptional stuff.

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


#44 crow_riot

crow_riot

    Mega GP Mania

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

Posted 27 December 2010 - 02:45 PM

This let's me thinking again about getting a pandora, really.

All i want is playing crash bandicoot on the way :) Could anyone test how the performance of any of the 3 games is ?

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

anyway, thanks for your work on this, i really appreciate it.

Edited by crow_riot, 27 December 2010 - 03:15 PM.


#45 Chaser

Chaser

    GP Mania

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

Posted 27 December 2010 - 03:30 PM

This let's me thinking again about getting a pandora, really.

All i want is playing crash bandicoot on the way :) Could anyone test how the performance of any of the 3 games is ?

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

anyway, thanks for your work on this, i really appreciate it.


YMMV but the Crash games do work in the prior emu Psx4Pandora. They dont appear to work here yet as you saw but you can briefly run about on the hub in Crash 3 to choose a level, then it crashes.

Heres some more test results :

Better:

Evil Dead Hail to the King - Now plays all intros, lacks menu screen text, plays level 1 intro then quits to desktop.

Rage Racer - Better speed and no rendering issues on the track.

Ridge Racer Revolution - Seems to work with music but you cant accelerate and just sit on the start line.

Resident Evil 2 - Better sound synch in cut scenes. Seems full speed/perfect.

Resident Evil 3 - Perfect.

Tekken - Works well, far faster than prior emu.

Worse :

Ridge Racer- Speeds good but horrendous buzzing sound mars everything

R Type Delta - Flashes ´now loading´ and does nothing more as Skeezix found.

Rollcage stage II - crashes to desktop when race starts.

Time Crisis II - Plays but controls are messed up and enemies are immune from damage.

Tony Hawks 2 - crashes to desktop when skater select screen appears

Same:

Soul of the Samurai - Works well