Goosestation - Build Your Own Duckstation-libretro

Unfortunately, that didn’t help; RA still crashes when closing content.

One more question: I noticed this line in DaveTheMan1985’s log:

[libretro INFO] [GooseStation] Resources: D:\Retroarch\RetroArch 1.22.2 (64 Bit)\system\goosestation\resources (not found, non-fatal)

I know that DuckStation itself contains a game database (the gamedb.yaml file) in this folder with some fixes or forced settings. I created the \system\goosestation\resources folder and placed the gamedb.yaml file in it; my log entry now looks like this:

[libretro INFO] [GooseStation] Resources: E:\_Consolezzz Game\_RetroArch_Nightly_Win64\system\goosestation\resources (found)

In other words, it sees the file but doesn’t seem to use it. I tested this on Metal Gear Solid [NTSC-U] - on DuckStation, PGXP CPU Mode is forced on for this game (without it, some textures shake very badly), with the option disabled in the core settings, and the gamedb.yaml file placed in the \ system\goosestation\resources, the textures continue to shake, meaning the forced setting from the game database isn’t being applied.

I also noticed that when the PSX BIOS is loading, the screen changes resolution several times from the widest possible to very narrow; I don’t observe this with other cores - the 4:3 aspect ratio setting is applied immediately. I tried all possible settings and combinations of “Crop Mode” and “Aspect Ratio” but couldn’t find the right one. Just an observation.
Update: New observation: the resolution changes only when shaders are enabled; without them, no change in resolution is observed.

1 Like

Works for GL and Software Drivers

For Vulkan same thing happens as well as Black Screen

Okay but where to download the latest version/ update for Docker

When you run the command

git clone https://codeberg.org/hueponik/goosestation-builder.git

you are essentially downloading the entire repository from scratch with the latest updates, provided that you have already deleted the goosestation-builder folder from your Docker projects folder, as I mentioned earlier.
You can also try running the following command in the Docker terminal first:

cd goosestation-builder

and then run the command

git pull

This will update the data from the repository (it should tell you that 1 file, goosify.sh, has been updated), then run the command

docker compose restart

This will restart the container to apply the changes.
But I would recommend deleting everything, since it still contains the cache from the old build and the old compiled cores.

1 Like

@hueponik It seems that commit e956d7427d “reduce hw context destroys, fix texture dumping” resolves the issue with RA crashing after closing content. Nice work!
I also noticed that the core now uses four times less RAM - it used to be about 8 GB, but now it’s about 2 GB
UPDATE: BUT! If a game with association a Goosestation core is launched from an existing playlist, “Close Content” works as expected. If you launch a game with association a Goosestation core from “History,” “Close Content” works as expected. However, if you first load the Goosestation core via the “Load Core” menu, then load the game via the “Load Content” menu, play for a bit (even just watch the opening screens), and then select “Close Content” - the core resets but does not unload completely; after that, the system boots into the PSX BIOS with the standard menu for managing memory cards and the CD player.

2 Likes

decided to tag last commit with v0.4

Highlights from v0.3 → v0.4:

  • Libretro Input plumbing completely reworked. Should support whatever duckstation support, including lightguns (no crosshair yet so it’s dummy overlay + mouse cursor for now). DualShock gets an analog mode toggle combo (e.g. L1+R1+Select), stick deadzone/sensitivity, vibration bias, and more.

  • Cheat support.

  • No-game mode - “start core” just boots bios. Because why not?

  • Some gpu mumbo-jumbo fixed (better handling of screen shake effect, optimized FBO allocation, reduce HW context recreations.)

  • Texture dumps should work more reliably

  • Fixed some crashes in windows

4 Likes

However, if you first load the Goosestation core via the “Load Core” menu, then load the game via the “Load Content” menu, play for a bit (even just watch the opening screens), and then select “Close Content” - the core resets but does not unload completely; after that, the system boots into the PSX BIOS with the standard menu for managing memory cards and the CD player.

Thanks, this is some crappy poltergeist. I’ll try to replicate & fix

1 Like

I’ll compile this version and be sure to post here about the tests and my observations.

1 Like

I cannot believe it, but I was able to compile this in Windows! Amen. Anyway, I got 0.3 instead of 0.4, should I wait a bit or am I missing some command? I used the sequence @DemitryCzarevich posted earlier:

git config --global core.autocrlf input
git clone https://codeberg.org/hueponik/goosestation-builder.git
cd goosestation-builder
docker build -f Dockerfile.windows -t goosestation-builder-windows .
docker run --rm -v "$PWD/dist:/work/dist:Z" goosestation-builder-windows windows

Btw, I use Vulkan as main driver, and I had to select Vulkan in the core options and now it works great. Without that FMVs looked weird, with vertical stripes all across the image.

1 Like

Sneaked some more updates into v0.4 (including the version bump in core info and bin)

Do git fetch --tags --force

  • Per-game compat fixes
  • Android lightgun seems to be working now
  • Core info file updated
1 Like

But your info file currently lists version 4.0 :innocent:

Screenshot_1

And the core will show version 4.0 as well

Maybe we should just leave it as is?

NOOOOOO!..

ah, screw it. I’ll leave this as a reminder that nobody’s perfect. Will fix in 0.5 :slight_smile:

2 Likes

This helped, thanks! I’m using an 8BitDo controller (XInput). Rumble works fine in SwanStation once I change the device type to DualShock, but on GooseStation, even though DualShock seems to be the default, adjusting the vibration strength does nothing.

Any ideas on how to fix this, or is it a known issue? I changed the vibration strength but I still get no rumble.

1 Like

Latest master should have fixed the dualshock/rumble, try it plz

3 Likes

Confirmed working! Thank you so much for the hard work, and quick reply :slightly_smiling_face:

1 Like

So, I’ve finally had enough time to properly test the new core build, version 0.5.

Tests and observations:

  • Per-game compatibility fixes - these actually work. I verified them directly against Duckstation’s own gamedb.yaml file, using the games I have that are listed in this patch file (Metal Gear Solid, Parasite Eve II, Chrono Cross, Front Mission 3) - a message in the bottom right corner notifies you about enabled fixes (you might need to tweak the notification widget a bit if many fixes are enabled - the text overflows), but they aren’t displayed in the core settings themselves, though they do work. I understand that the gamedb.yaml file is now contained within the GooseStation core itself and doesn’t require external sources in the system folder?
  • Lightgun - personally, I was really looking forward to this feature, since no existing PSX core in RetroArch supports it properly - Beetle PSX HW doesn’t support it at all, Beetle PSX supports it but with hardware rendering limitations, and SwanStation supports it but very selectively. When compiling the core, a file named cursor_only.cfg appeared in the folder with the finished core; judging by its contents, it seems to be some kind of overlay settings for the mouse cursor, but I still haven’t figured out which settings folder exactly this file should be placed in. I’d appreciate a quick guide, @hueponik. Since I mostly play in windowed mode - even when maximized to full screen - my mouse cursor doesn’t disappear, and the lack of a crosshair doesn’t really bother me. “Time Crisis” and “Time Crisis - Project Titan” performed great; just don’t forget to save the custom core settings that switch to GunCon controls for these games.
  • Rumble - isn’t exactly my go-to feature for gaming, but if it’s there, why not use it? My Xbox One Series X Wireless Controller initially refused to produce any vibration until I noticed in Duckstation itself that it uses the XInput driver for it; I switched the controller driver in the RetroArch settings, and everything worked, though I had to remap all the buttons, as they differed from the settings with the DInput driver. Tested on Chrono Cross, Need for Speed 5 - Porsche Unleashed, and Quake II.

The game “Oddworld: Abe’s Oddysee” now looks great - all textures render properly, with no light bleeding or strange transparency where it shouldn’t be, no blurring of text on the scrolling text display, and no ghosting of the character where he just passed. It now looks just as good as it does on Duckstation.

Now, regarding the minor glitches that remain and that I’ve managed to spot:

  • Fighting Force - the game starts to stutter when you destroy any destructible object (gate, car); after the destruction animation finishes, the game’s frame rate returns to normal.
  • Chrono Cross - slight stuttering when you enter the character menu (via the triangle button); even the music starts to slow down. After exiting this menu, the game speed returns to normal.
  • When the BIOS loading screens appear, there is a slight crackling sound and stuttering in the animation. This occurs when loading any game. It’s not that this causes any major issues, but we want this core to be perfect.

So far, that’s all I’ve been able to notice; if I find anything else, I’ll be sure to let you know. Now this core can be used for more games, which means we can dive deeper into testing.

Oh, one more thing - I noticed that now the memory card files in the saves\GooseStation\ folder are created only after saving progress in the game itself; in previous core versions, the memory card files were created immediately after launching the game. Now, even if you try to access the memory card in a game (in which there are no saves yet) in an attempt to load something, the memory card file still isn’t created. There are some games in which you can save controller settings or a player profile with a name and settings to a memory card - in that case, the memory card file is created without any actual progress in the game itself.
This is perhaps even more logical behavior than creating a memory card file for every game you launch; sometimes you download a game, launch it to check if the image works, but don’t have time to play, and you shut it down until next time, but the memory card file is already created (on another core or in another emulator) - it’s not that those 128 KB would burden me much, but the fact itself.

2 Likes

I did not experience any stutter on Fighting Force and Chrono Cross in those scenes and mind you, I had the games on Vulkan and upscaled to 9x at 4k and with max texture filter quality (16x MSAA, MMPX etc)

In case it is hardware related, my specs are an i5 245K and rtx 560 ti oc at 16 gb

1 Like

Do you use any shaders for this?

no, not on Vulkan. Only in software mode but I use it mainly for 2d pixel ps1 games

Hey, great report as usual :muscle:

Gamedb - that’s right. Fixes are compiled in code now, and are static, you need to recompile if you want to fiddle with them. The source is the same yaml file though

Lightguns - the only way I could make cursor remain in fullscreen is to have this dummy overlay. You need to put it in the overlays folder and enable dummy overlay. No need to enable lightgun/mouse features in overlay options. I chose this over drawing the crosshair at the game speed. The alternative is adding a crosshair that is moving at 30fps. No like. And it’s not like crosshair is there in a real machine

Rumble. Oh I see so directinput works but sinput doesn’t ? Strange, I would expect RetroArch cover all that for us. I’ll check but it’s probably to do with retroarch itself

Stutter. Goddammit I think I spent like half of my time with goose fighting this issue. This is what you get when you have no idea what you’re doing. Duckstation renders in window directly but core has to pass it to retroarch and there are many obstacles that are hard to overcome for humble packager. Let’s hope this time will be the last.

Chronochross - I’ll check it out, maybe theres also screen shake going on in menu

bios. Annoying, I’ve noticed it. I’ve shelved working on fix for it earlier, I’ll get back to that. Hopefully.

BTW @DemitryCzarevich what are your specs

I do not have the stutter in the bios, so it might be hardware or sync related.

Same when I enable shaders with Vulkan enabled. Except when I upscale or add filters, which increases the gpu fan speed significantly too.

Stutter seems to happen only in software mode and only after enabling shaders.

1 Like