FBNeo
FBNeo copied to clipboard
Flickering with cv1000 games on Apple Silicon M1
Retroarch 1.10.3 (metal/universal version) with FinalBurn Neo v1.0.0.03 d6459f6c. Stock settings but I set up my joystick. Mac OS Monterey 12.5.
It happens on my 1440p 144Hz monitor and 4k 60hz tv. I tested akatana and dsmbl. To make sure the flickering only happens on cv1000 games, I tried a cps3 game and a system32 game and they have no issues.
After my tests I did try to fiddle with vsync and other video settings I can't recall at the moment but it didn't change anything.
Can you share a video or something ? Does it happen with standalone macos builds ?
https://www.youtube.com/watch?v=1FA5Ws5Fgug The last standalone macos build is from 2021 which has no cv1000 support. There are no nightlies for macos.
that's likely to be a blitter threading issue specific to macos.
@0xe1f are there more up-to-date standalone builds somewhere ? is there a guide on building fbneo for macos ? does this issue happen on your side ?
@darksaviorx can you try disabling blitter threading in dips ?
I disabled the thread blitter, restarted retroarch and there was no change. I forgot to also say that retroarch crashes if I exit after playing a cv1000 game. No crash if I exit a non-cv1000 game. crash when exiting.txt
retroarch crashes if I exit after playing a cv1000 game
afaik retroarch won't save core options if it crashes at exit, so are you sure the dips is properly disabled ? From your logs, it looks to me like you are still using the threaded blitter
I save the settings manually. After restarting retroarch it's showing me the thread blitter as disabled. I also checked my akatana.opt and it says fbneo-dipswitch-akatana-Thread_Blitter = "Off"
Wow, that sucks - sorry about this problem, though we've never tried it on a mac yet.
At first it looks like a bug in the threading, but you have threading disabled. hrmf..
Memory corruption maybe? I think the only way we'd be able to fix this is if you could build the core with address sanitizer and ubsan. barbudreadmon might be able to give you some tips to compile the core on your side with those options.
best regards,
- dink
I just wanted to play a quick game of Akai Katana lol. The alternative is not practical but it works...Parallels running Win11 arm64 vm running Retroarch X86 DX11.
I don't know how to use asan on macos, i see there are instructions at https://developer.apple.com/documentation/xcode/diagnosing-memory-thread-and-crash-issues-early but they don't seem very clear, and i don't even know what compiler you are supposed to use.
I did another asan check on my side and couldn't find anything, i also looked for potential problem code for arm/aarch64 and didn't find either, but since it run on pi4 i doubt that could be an arm/aarch64 issue. I guess it's an apple compiler bug, and without an apple dev i doubt we'll get anywhere.
Allow me to enter the conversation just to say I have compiled today for MacOS and you can get it in https://github.com/cjom/FBNeo/releases/latest
It was compiled using workflow based in this https://github.com/finalburnneo/FBNeo/blob/master/.github/workflows/macos.yml.ignore but I don't have how to test if it works.
The purpose of my testing build is to test the new controller mapping functions, but you can use it to check cv1000 issue. An if possible to give some feedback about the ingame mapping menus, that would be great ;)
I don't know how to execute the contents of that zip file so I put the contents into the existing fbn.app. I'm not sure if that's caused any issues but the games load to a black screen.
cjom, awesome - any thing you can do to help out will be super appreciated! :)
@darksaviorx those games didn't previously worked ? they did this from the first time you launched them ? i'm only thinking about this now but there were issues with the eeprom/savestate code in cv1k not so long ago, so older saves aren't guaranteed to work and might even cause memory corruption.
@barbudreadmon For retroarch? They always have flickering. I wipe the retroarch folder it creates to make sure I'm not using old configs. This is a clean install.
@darksaviorx from what I understand looking at the code, this has to be run from terminal.
You should extract the zip content into /Applications (but that requires administrator password) or ~/Applications (a folder in user space).
Probably you also should change the name of extracted folder from "Contents" to "FBNeo" (maybe?) and I don't know if, like in linux, you'll need to give executable permission to the file "MacOS/FinalBurn Neo".
(edited to make more clear:) Finally you need to run the app in a terminal window passing to it the path where the roms are and what game you want to play, something similar to: "FinalBurn Neo" "~/FolderWithROMs" sfiii
@cjom FBN won't open. Crashes. "sparkle.framework" is damaged and can't be opened. You should move it to the Trash."
dyld[69362]: Library not loaded: '@rpath/Sparkle.framework/Versions/A/Sparkle' Referenced from: '/Applications/FBN/Contents/MacOS/FinalBurn Neo' Reason: tried: '/Applications/FBN/Contents/MacOS/../Frameworks/Sparkle.framework/Versions/A/Sparkle' (code signature in <1AAA2191-6EA6-35D4-BA37-24C404CE4C29> '/Applications/FBN/Contents/Frameworks/Sparkle.framework/Versions/A/Sparkle' not valid for use in process: library load disallowed by system policy), '/Applications/FBN/Contents/MacOS/../Frameworks/Sparkle.framework/Versions/A/Sparkle' (code signature in <1AAA2191-6EA6-35D4-BA37-24C404CE4C29> '/Applications/FBN/Contents/Frameworks/Sparkle.framework/Versions/A/Sparkle' not valid for use in process: library load disallowed by system policy), '/Library/Frameworks/Sparkle.framework/Versions/A/Sparkle' (no such file), '/System/Library/Frameworks/Sparkle.framework/Versions/A/Sparkle' (no such file) zsh: abort ./FinalBurn\ Neo
If I replace the frameworks folder with the one that comes with FBN 1.0.0.2 then it loads but once again the games load to a black screen.
@barbudreadmon haven't tried the retroarch version on macOS, and I don't yet have a silicon mac to test, sorry :/
I see the issue here is "library load disallowed by system policy". I have zero experience in mac, but I found a post about a similar problem that pointed to https://support.apple.com/en-us/HT202491
where they show a way to temporarily allow any app to run, if you are willing to try...
I had to pay for a dev membership and sign all builds to get them to validate. if you're trying to distribute builds, you'll likely need to do the same.
0xe1f, as you can see we're in dire needs of a mac dev to help - is there any chance you could try running fbn w/ the cv1k games and see what's causing the crasher? The real problem is when the fbn libretro core is ran under retroarch w/ romset akatana, perhaps you could try this in your build of fbn with asan and ubsan if possible? :) All I need is the logs from ubsan and asan (address sanitizer) - then I can locate and fix the problem.
best regards,
- dink
My weekdays have been very busy lately, but let's try something this weekend :)
@0xe1f checking if the issue is reproducible on mac standalone x86 would be a great start :)
@dinkc64 I'm using akatana because that's what I was intending on playing but I also loaded dsmbl to make sure it happens on all cv1000 games.
Btw, I just tried Retroarch x86_x64 FBN on my Macbook Air 2012 with Catalina and the cv1000 games also flicker on it.
darksaviorx, thanks for confirming
I tried loading mmpork and dsmbl in the Mac standalone. Loading seems fine:
Loading program (u4)...
Loading program (u2)...
Loading sound (u23)...
Loading sound (u24)...
Initialization successful
However, I don't get any video - the screen is black:

This was on an x86 mac, using standalone mac version. Other games load fine.
And pressing buttons doesn't seem to do anything. I'll take a look at it when I get some time.
0xe1f, how many fps it's getting while displaying the black screen? If it's very low, it could take a while. (the games are quite demanding, needing a full 2ghz at times) If still nothing, try DIPs -> Thread Blitter -> Off.
The issue might be fixed, testers welcome.
it would be nice if fixed, but, i doubt it unless the compiler is really stupid.
msvc2022 was having a black screen before this change, which might be the same issue @0xe1f had on non-arm apple device. my guess is that those compilers aren't smart indeed