Homebrew Unofficial 3DS RetroArch builds

wanderindirk

Active Member
Newcomer
Joined
Aug 29, 2014
Messages
43
Trophies
0
Age
31
XP
173
Country
Vietnam
One one note, pcsx rearmed cia version now crash everytime that you close a game and try to open another. This problem was not present on the previous cia build that you uploaded weeks ago.

I used to call that previous .cia build “the stable threaded version.” Unfortunately, those crashes that happen when changing roms have persisted through all of the interim .3dsx builds, so I guess they are hardly a surprise.

Big thanks to @Dartz150 for the pointer about Forced Interlacing, this is a setting I’ve never bothered to tinker with in earnest since it instantly makes everything look so bad and dark. But now I can see that when enabled, it can alleviate 99% of the slowdowns induced by the heavy duty of handling the transparency and blending effects we’ve previously discussed. Meaning, an instant lift into constant full speed for A LOT of titles. In any case, this is helpful practical information, though I think it also might further validate the argument that those slowdowns are mere consequence of lacking horsepower.

A side note: MGS remains an odd case, for enabling Forced Interlacing does nothing to speed up the in-game slowdowns which otherwise can be eliminated by overclocking, while cutscenes will now run perfectly. Plus, enabling Force Interlacing also gives rise to a weird “imprint” rendering effect as can be seen in the photo attached below. I think this might be conclusive evidence for the argument that the problem with MGS’ performance is CPU-related.
1.jpg

Finally a quick report on gpSP: I think the latest .cia build enjoys a significant speed boost to the extent that more titles can now run full speed with both Rewind enabled and a Video Filter applied (I usually prefer EPX), though screen tearing still happens if you do choose to use filter.
 
Last edited by wanderindirk,

Zense

Well-Known Member
Member
Joined
Apr 20, 2008
Messages
1,977
Trophies
2
XP
4,308
Country
Italy
I might be wrong about this but if you run it in 800px mode and enable that forced interlaced mode wouldn't it almost be the same as how the screens, except for the 2ds', act natively considering they don't use ever other line?

I don't think there would be any performance gained from this because in the end you are producing the same amount of lines in 400px without interlacing. It might even be worse or all I know.
 

DualBladedKirito

The Black Swordsman
Member
Joined
Sep 9, 2015
Messages
222
Trophies
0
Age
33
Location
United States
XP
951
Country
United States
Here's some updated zips, should be in sync with the newest everything. There's also an additional patch to SNES9x2005 to get the Super Metroid / Link to the Past randomizer working. I also noticed some new gpSP core options while I was looking at updates, so take a look at that one!

- 3dsx: https://v2.femto.pw/hrij
- cia: https://v2.femto.pw/9pjj



I think there was an incomplete setting in unai to do exactly this, but there are some comments in the source talking about how bad it looked, so I didn't spend any time on it. Good idea, though!
Did you include the latest commits from the main repositories? Only asking because as of 9 hrs ago gpsp updated their rtc emulation per my issue and i want to test if it fixed my problem i was having in a gba game.
 

NanashiFinal13

Well-Known Member
Member
Joined
May 1, 2017
Messages
409
Trophies
0
Age
30
XP
2,669
Country
Argentina
I used to call that previous .cia build “the stable threaded version.” Unfortunately, those crashes that happen when changing roms have persisted through all of the interim .3dsx builds, so I guess they are hardly a surprise.

Big thanks to @Dartz150 for the pointer about Forced Interlacing, this is a setting I’ve never bothered to tinker with in earnest since it instantly makes everything look so bad and dark. But now I can see that when enabled, it can alleviate 99% of the slowdowns induced by the heavy duty of handling the transparency and blending effects we’ve previously discussed. Meaning, an instant lift into constant full speed for A LOT of titles. In any case, this is helpful practical information, though I think it also might further validate the argument that those slowdowns are mere consequence of lacking horsepower.

A side note: MGS remains an odd case, for enabling Forced Interlacing does nothing to speed up the in-game slowdowns which otherwise can be eliminated by overclocking, while cutscenes will now run perfectly. Plus, enabling Force Interlacing also gives rise to a weird “imprint” rendering effect as can be seen in the photo attached below. I think this might be conclusive evidence for the argument that the problem with MGS’ performance is CPU-related.
View attachment 227759

Finally a quick report on gpSP: I think the latest .cia build enjoys a significant speed boost to the extent that more titles can now run full speed with both Rewind enabled and a Video Filter applied (I usually prefer EPX), though screen tearing still happens if you do choose to use filter.

I was using the cia build that juntiweiss upload on august, not the more recent 3dsx builds, so for me was a new issue, i didn't know that this problem was already report it. Sorry :P
If anyone is interested, Blade (USA version) for ps1 seems to work fine (you have to toy with options first), it has some frame drop when you turn on the power generator on the first level of the game, but aside from that, its good till now. But to be honest, i only play less than 2 hours, so the game needs more testing.(im in the first scene after the opening, when Whistler tells Blade that he is almost there, and watch out for Von Esper)
 

justinweiss

Well-Known Member
Member
Joined
May 29, 2016
Messages
121
Trophies
0
Age
41
XP
1,439
Country
United States
I noticed something, on most systems the default CPU overclock is set to 57, but the code is detecting the 3DS as an older device and switching it to 50 by default. I tried it back at 57 and it helps a lot with the sluggishness of MGS in-game, like some others mentioned here. There's still some internal fps slowdowns here and there, but maybe those existed in the original?

Anyway, maybe it's worth making 57 the default on 3DS, too.
 

Zense

Well-Known Member
Member
Joined
Apr 20, 2008
Messages
1,977
Trophies
2
XP
4,308
Country
Italy
Hey, I thought you might like smoother MGS cutscenes:

Try the new Threaded Rendering mode. There's off, "sync" (which is the old "on"), and "async" (brand new).
I'm curious if any of these options also fix the regular stuttering in In the Hunt if using PS1 soundtrack. However I think that is an issue with pcsx rearmed across all platforms iirc.

Amazing work as always!
 
Last edited by Zense,

MarioKartFan

Well-Known Member
Member
Joined
Aug 27, 2019
Messages
596
Trophies
0
XP
2,319
Country
Algeria
Hey, I thought you might like smoother MGS cutscenes:

Try the new Threaded Rendering mode. There's off, "sync" (which is the old "on"), and "async" (brand new).

Just tested it out. What a massive difference it makes in Metal Gear Solid. You basically have the game running perfectly!
 
Last edited by MarioKartFan,

Zense

Well-Known Member
Member
Joined
Apr 20, 2008
Messages
1,977
Trophies
2
XP
4,308
Country
Italy
I noticed that enabling it when having internal fps shown it caps at 30 while if you disable it it seems the fps caps at 60? However both seemed to be the same framerate. In the Hunt with Playstation sound is now perfect :grog:

I tested 102 Dalmatians which works perfect now with only slowdowns in internal FPS that I guess are native to the game since the music plays at normal speed whenever it happens.

I was gonna check out FFIX but I think I don't have it on my 3DS anymore...
 
Last edited by Zense,
  • Like
Reactions: justinweiss

wanderindirk

Active Member
Newcomer
Joined
Aug 29, 2014
Messages
43
Trophies
0
Age
31
XP
173
Country
Vietnam
My my my I think you’ve done it @justinweiss! I think you’ve cracked the trouble transparency has been giving us all these time. In some of the games I tested I could see a ~15-20 raise in frame rate and with that a lift into full speed even when transparency and blending effects were present. And as correctly noted by @MarioKartFan MGS now plays perfectly (I set clock speed at 60), I was so used to seeing all the slowdowns during the submarine cutscene that not seeing them now makes me feel a bit weird

The final frontier now seems for me to be Soul Reaver, I think it’s the most demanding game on my testing list (I don’t play fighting games so I don’t really have any incentive to test Bloody Roar 2). The opening cutscene with that blue transparent spiral above still poses some challenge, but overall it seems to have improved by ~10-15 fps, meaning full speed for about 90% of the cutscene’s duration. And smooth. The first 10 mins of the game now plays so smoothly like never before! Going through doors now no longer makes the game drop 20-25 fps, though large, open spaces or places with transparency effects are sometimes still a bit hit-or-miss.

I seriously thought for a second that you could finally call this build official version 1.0 or something. I mean sure there’s no dithering (screw dithering) and you still have to make some sacrifices in the sound department but with performance this enjoyable and compatibility this high you might only need to debug the app to run real stable (for example there’s this crash which happens when loading remap file that I’ been able to reproduce almost consistently). Now whenever I see slowdowns I feel it’s legitimate to question whether it’s because of the app or the game itself.

I’m not too familiar with the whole psx library (played mostly rpgs and they tend to be on the less demanding side) so if anyone could recommend me games that are hard to run I’d love to try them out!
 
  • Like
Reactions: NanashiFinal13

Famouswolfe

New Member
Newbie
Joined
Oct 21, 2020
Messages
2
Trophies
0
Age
37
XP
43
Country
United States
For those of us late to the party (and for the benefit of future posterity), does anyone have recommended settings for most PSX games? I know people have been sharing their suggestions in posts scattered through this thread but I was wondering if someone could post them all in like one pinned post or something?
 

justinweiss

Well-Known Member
Member
Joined
May 29, 2016
Messages
121
Trophies
0
Age
41
XP
1,439
Country
United States
I noticed that enabling it when having internal fps shown it caps at 30 while if you disable it it seems the fps caps at 60? However both seemed to be the same framerate.

So, a little background into how this works. Originally, when a game drew something on the screen, PCSX would wait for it to finish before doing anything else. With threaded rendering "sync," PCSX would keep doing things, and would only wait for it to finish when it needed to display something. It checks 60 times per second to see if a frame should be drawn. This means that it would have a maximum of 16.7ms to run all draw commands started in a frame, otherwise it would have to wait (stalling the emulator).

This isn't how many PSX games work, though. For example, if a game runs at 30fps, it _should_ have twice as much time to draw a frame before it waits. If it runs at 15fps, it should have four times as long. Instead, at 30fps, the emulator is racing to finish drawing before the first display check happens, and then doing nothing until the second display check.

What the "async" change does is: when pcsx checks to see if a frame should be drawn, and the current frame isn't done yet, and there isn't a frame after that waiting, it will tell pcsx that there isn't anything to draw. This gives a 30/15fps game the full amount of time to draw, which means it's much less likely that the emulator has to wait for it.

Some games that claim to be 60fps are only sort of 60fps, they do a lot during one frame and then just do some minor stuff during the second frame that doesn't affect display. In this case, those frames will be merged, it'll claim an internal framerate of 30fps, and you won't notice a difference.

There isn't much of a benefit for games that are actually 60fps. For those games, if the emulator can't keep up, it will merge up to two frames together. This will look like frameskip 1. Unfortunately, this is unavoidable. But at 60fps frameskip 1 is much less noticeable, and if it bothers you, you can go back to sync for those games. Or, if you like the fake auto frameskip, keep it on.

(for example there’s this crash which happens when loading remap file that I’ been able to reproduce almost consistently)

Can you send me reproduction steps? Also, if anyone is running into consistent in-game crashes or glitches with the new renderer, savestates are incredibly helpful.

For those of us late to the party (and for the benefit of future posterity), does anyone have recommended settings for most PSX games?

Yep. If you are using a build from this thread, these are the important ones to change or double-check:

- Video menu:
- vsync off
- threaded video off

- Audio menu:
- Audio driver: dsp_thread (needs a restart)
- Audio sync: on

In Quick Menu options:
- Dithering off
- PSX CPU Clock: 57
- Advanced UNAI settings on (you will need to close and reopen the menu after turning this on to see the next setting)
- (GPU) Enable Hi-Res Downscaling: on
- Threaded Rendering: Either on, sync, or async
- CD Access Method: Asynchronous (needs a restart)
 
Last edited by justinweiss,

MarioKartFan

Well-Known Member
Member
Joined
Aug 27, 2019
Messages
596
Trophies
0
XP
2,319
Country
Algeria
So, a little background into how this works. Originally, when a game drew something on the screen, PCSX would wait for it to finish before doing anything else. With threaded rendering "sync," PCSX would keep doing things, and would only wait for it to finish when it needed to display something. It checks 60 times per second to see if a frame should be drawn. This means that it would have a maximum of 16.7ms to run all draw commands started in a frame, otherwise it would have to wait (stalling the emulator).

This isn't how many PSX games work, though. For example, if a game runs at 30fps, it _should_ have twice as much time to draw a frame before it waits. If it runs at 15fps, it should have four times as long. Instead, at 30fps, the emulator is racing to finish drawing before the first display check happens, and then doing nothing until the second display check.

What the "async" change does is: when pcsx checks to see if a frame should be drawn, and the current frame isn't done yet, and there isn't a frame after that waiting, it will tell pcsx that there isn't anything to draw. This gives a 30/15fps game the full amount of time to draw, which means it's much less likely that the emulator has to wait for it.

Some games that claim to be 60fps are only sort of 60fps, they do a lot during one frame and then just do some minor stuff during the second frame that doesn't affect display. In this case, those frames will be merged, it'll claim an internal framerate of 30fps, and you won't notice a difference.

There isn't much of a benefit for games that are actually 60fps. For those games, if the emulator can't keep up, it will merge up to two frames together. This will look like frameskip 1. Unfortunately, this is unavoidable. But at 60fps frameskip 1 is much less noticeable, and if it bothers you, you can go back to sync for those games. Or, if you like the fake auto frameskip, keep it on.



Can you send me reproduction steps? Also, if anyone is running into consistent in-game crashes or glitches with the new renderer, savestates are incredibly helpful.



Yep. If you are using a build from this thread, these are the important ones to change or double-check:

- Video menu:
- vsync off
- threaded video off

- Audio menu:
- Audio driver: dsp_thread (needs a restart)
- Audio sync: on

In Quick Menu options:
- Dithering off
- PSX CPU Clock: 57
- Advanced UNAI settings on (you will need to close and reopen the menu after turning this on to see the next setting)
- (GPU) Enable Hi-Res Downscaling: on
- Threaded Rendering: Either on, sync, or async
- CD Access Method: Asynchronous (needs a restart)
Important to note that in some games the observed performance will be better using vsync rather than audio sync. In particular 2D games.

Also, I got the chance to test some additional games out. Final Fantasy IX and Final Fantasy Tactics slowdowns on spell casting are massively improved. As @wanderindirk notes, it seems that the new overhead you’ve created helps a great deal with transparency effects.

The initial “stutter” present in some games remains. I assume that’s to do with the slow 3DS transfer speeds buts its strange that it happens only once or twice after the initial load of the game and not for example each time there is a new effect or scene.

Is there any way to donate? At the very least I feel like we should be able to buy you a coffee or something for all you’ve done for this scene.
 
Last edited by MarioKartFan,

justinweiss

Well-Known Member
Member
Joined
May 29, 2016
Messages
121
Trophies
0
Age
41
XP
1,439
Country
United States
The initial “stutter” present in some games remains. I assume that’s to do with the slow 3DS transfer speeds buts its strange that it happens only once or twice after the initial load of the game and not for example each time there is a new effect or scene.

Yeah, it's most likely the slow reads when the emulated PSX is accessing the CD. Async CD Access reads a little bit ahead and caches everything it sees for some amount of time, which helps. For example, this is why a move in Chrono Cross might stutter the first time, and then be fine from then on -- the second time, it's pulling from the in-memory cache, not from the SD card. We keep around 9.5 MB of cache, so most of the common stuff should be in there most of the time after the first read. With CD access on a thread, I've been wondering if pcsx could emulate it a bit more realistically, sending an interrupt when we have the data instead of waiting for the read to happen. That would take more knowledge than I have right now. though, and would probably break games.

Another thing that might cause stutters is the dynarec. I'm not too familiar with how it works, but I wonder if some of the stutters might be caused by the dynarec compiling new code as it's loaded. The compiled code should be kept around for a long time, so you wouldn't see the same stutters again until you reloaded.

Is there any way to donate? At the very least I feel like we should be able to buy you a coffee or something for all you’ve done for this scene.

Nope, but thanks for the gesture! The motivation is the fun of the work itself.

BTW, I wanted to recommend trying the recent nightlies (https://buildbot.libretro.com/nightly/nintendo/3ds/) -- jdgleaver has been doing some amazing work over the last few days improving performance on lower-end devices. There were some snes9x improvements to improve blending speed, and a few cores like snes9x2005/2005-plus got an "Auto" frameskip option that do a much better job of keeping smooth audio. I would guess there's more coming there too, there are some open PRs waiting.

All of my changes except for improved dithering performance are upstream now, so you wouldn't be missing anything if you downloaded a nightly and dropped the new pcsx core from this thread in there. And I'll probably open a PR for threaded rendering in a few days, once it has a little more time to settle. (Probably also good to try official builds, so any problems can be fixed before the next stable, whenever that happens to be)

Edit: Threaded rendering was merged, and should be in the next nightly.
 
Last edited by justinweiss,

DSoryu

GBA/NDS Maniac
Member
Joined
May 5, 2010
Messages
2,359
Trophies
2
Location
In my house
XP
4,777
Country
Mexico
So I forgot to comment this after testing the lates version of PSCX ReARMed.

Some games experience some kind of "speed up" even with audio sync turned on, some examples are:

Resident Evil 3: Nemesis
Resident Evil 2
Pepsi-Man
Bust a Move 1/2

I have deleted the settings to regenerate them from scratch and tried every setting possible with no luck, the games still run a bit too fast than they should.

Also amazing work!!! With the new Async threaded option many games can run with dithering at full speed with very minor stuttering!! This new feature will boost the compatibility status of many games to nearly perfect, thank you very much!!
 

justinweiss

Well-Known Member
Member
Joined
May 29, 2016
Messages
121
Trophies
0
Age
41
XP
1,439
Country
United States
Some games experience some kind of "speed up" even with audio sync turned on, some examples are

Ah, thanks, I'll check them out when I have the chance. Shot in the dark, can you try with cpu clock speed 57? (May need to restart). That's the default on most non-3DS systems, and we noticed some other speed issues in MGS when it was at 50.
 
  • Like
Reactions: DSoryu and Zense

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
  • No one is chatting at the moment.
    SylverReZ @ SylverReZ: @OctoAori20, Cool. Same here.