libretro / RetroArch

Cross-platform, sophisticated frontend for the libretro API. Licensed GPLv3.
http://www.libretro.com
GNU General Public License v3.0
10.17k stars 1.82k forks source link

Block all cores citing missing firmware as a reason #4091

Closed lasers closed 7 years ago

lasers commented 7 years ago

The likely commits (https://github.com/libretro/RetroArch/commit/9505602675172c7126687d8e695a984697d13844 - https://github.com/libretro/RetroArch/commit/8f4d6b8784853dbc88483bfdbd490ff77d0b4187) will block all cores from loading when it goes in effect.

andres-asm commented 7 years ago

Nope se long as you have the required firmware it works

On Mon, Nov 28, 2016, 11:22 PM lasers notifications@github.com wrote:

The likely commits (9505602 https://github.com/libretro/RetroArch/commit/9505602675172c7126687d8e695a984697d13844

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/libretro/RetroArch/issues/4091, or mute the thread https://github.com/notifications/unsubscribe-auth/ABpC0FObKhcngaBMeMkk7qetSlniwFyBks5rC6h7gaJpZM4K-jW0 .

lasers commented 7 years ago

What do I need for 2048?

andres-asm commented 7 years ago

Nothing. Not even content

On Tue, Nov 29, 2016, 12:14 AM lasers notifications@github.com wrote:

What do I need for 2048?

— You are receiving this because you commented.

Reply to this email directly, view it on GitHub https://github.com/libretro/RetroArch/issues/4091#issuecomment-263478436, or mute the thread https://github.com/notifications/unsubscribe-auth/ABpC0AhN86SRQbTyd6R-PoMcutDXJ6E1ks5rC7S0gaJpZM4K-jW0 .

lasers commented 7 years ago

Yeah. It is blocking all cores for me. Just a heads up.

andres-asm commented 7 years ago

It's not blocking anything here It's impossible for it to block 2048 since that one doesn't gone thru load content (uses no content)

andres-asm commented 7 years ago

It's not a bug it's a feature. Ok I see a possible problem. Again you should include STEPS TO REPRODUCE instead of sending me in a guessing trip.

From now on issues without steps are gonna be ignored or closed.

869800dc0431b6214f74e4cabc4d3756147f4586 ff828f884dbb6b24f5dbf7da9491f077061ebc09

lasers commented 7 years ago

New changes blocks the content citing missing firmware as a reason. Core Overrides.

andres-asm commented 7 years ago

Stop wasting my time. Either give me complete steps to reproduce or don't say anything.

If it's an override give me the contents of such override file.

On Tue, Nov 29, 2016, 1:40 AM lasers notifications@github.com wrote:

New changes blocks the content citing missing firmware as a reason. Core Overrides.

— You are receiving this because you modified the open/close state. Reply to this email directly, view it on GitHub https://github.com/libretro/RetroArch/issues/4091#issuecomment-263489501, or mute the thread https://github.com/notifications/unsubscribe-auth/ABpC0I-52WY3tXRvtUafG63zL4ihgDVnks5rC8jKgaJpZM4K-jW0 .

lasers commented 7 years ago
# retroarch/config/Nestopia/Nestopia.cfg (file)
system_directory = "~/.config/retroarch/bios/Nintendo - Nintendo Entertainment System"
# retroarch/bios/Nintendo - Nintendo Entertainment System (dir)
NstDatabase.xml
disksys.rom

It's an oneliner per config. It has been used this way for all other 15+~ systems too with no problems since the first day I set up RetroArch last month.

If you need more, here's the thread where I tried Awakened0's suggestion to "use core overrides to set custom system directories for cores that need BIOS or other files" -- https://github.com/libretro/RetroArch/issues/3725

After setting it up, Load Core (Nestopia) and Load Content (any NES content)... Blocked.

andres-asm commented 7 years ago

See that's hugely different than... Reason: overrides. It's actually understandable now. Not much I can do about it since there is no way for me to guess you're gonna change the dir in an override.

I think I may scrap this feature.

lasers commented 7 years ago

Suggestion: Keep the notification. Don't block anything. Problem solved. Experiment: Try sublabel "Missing Firmware File(s)..." under loaded core for pretty.

Note: The Core Information does not display status (missing, required) correctly when using overrides too. This was to be expected. There was no blocking.

andres-asm commented 7 years ago

It can't be done. After loading the drivers are torn down and re-initialized. The message would just not show up. It won't prevent cores that segfault when the bios is missing.

lasers commented 7 years ago

I don't see any other solution. This feature likely will prevent some people accessing their bios/configs from non-standard places like NAS, nfs, potentially dual card phone storage device, etc... and would prevent overrides from actually overriding. It's too hard to tell how people will set things up. I guess no blocking and/or filters.

Last question. "The message would just not show up." You're referring to notification, but what about sublabel? I asked this because if I load a core, I am able to view Status: Missing, Required. Can that be done to display sublabel or something similar (not a notification) along with the core? And to give users an option to turn them off like one would with Display Core or Display date / time?

ghost commented 7 years ago

im not sure what is suppose this feature will do, but before 869800d this was how RA behaves:

test with picodrive with bios_CD_x.bin removed -load US sega CD, FAIL(because no required bios_CD_U.bin understandably) -exit RA. copy bios_CD_U.bin to . run RA -load US sega cd - SUCCESS..... but, exit game and run US sega cd FAILS because of missing or incomplete bios files(which is unrelated to content being played since you have the required bios already)

andres-asm commented 7 years ago

Why are you testing an old commit?

andres-asm commented 7 years ago

anyway check again, it should handle overrides and content in system directory properly it should also work with detect code

It hasn't been merged yet so you may have to wait https://github.com/libretro/RetroArch/pull/4103

lasers commented 7 years ago

New changes loads the content fine with core overrides. Tested with NES, PS1, and 3DO. :-)

RetroArch [INFO] :: Updating firmware status for: (null) on /home/fr500/.config/retroarch/bios/Nintendo - Nintendo Entertainment System

andres-asm commented 7 years ago

Glad to hear that. Does it block if you don't have the firmware?

On Tue, Nov 29, 2016 at 10:51 PM, lasers notifications@github.com wrote:

New changes loads the content fine with core overrides. Tested with NES, PS1, and 3DO. :-)

RetroArch [INFO] :: Updating firmware status for: (null) on /home/fr500/.config/retroarch/bios/Nintendo - Nintendo Entertainment System

— You are receiving this because you modified the open/close state. Reply to this email directly, view it on GitHub https://github.com/libretro/RetroArch/issues/4091#issuecomment-263776338, or mute the thread https://github.com/notifications/unsubscribe-auth/ABpC0FK6Lvf7SnXeXHC5KiAb_4tm6y5Nks5rDPLNgaJpZM4K-jW0 .

lasers commented 7 years ago

Yes. It blocks... but it's not working correctly at moment. Also, 5 seconds notification still feels like a long time especially after you just got blocked expecting the game to start.

After getting blocked, fixing directories still block the archive from loading. Loading different archives will still be blocked.... I have to walk the dog now. I don't want to leave you hanging. I'll be back soon to analyze this weird behavior.

andres-asm commented 7 years ago

I tried this: Removed my PSX bios. Tried to load, blocked. Alt-tabbed without moving from the menu, copied the BIOS again, tried again, it worked

Tried this too: Removed PSX bios, Tried to load, blocked. Loaded SNES game, worked

The only problem I have is that it doesn't seem to reset the libretro_path after being blocked.. so say I load something that works, then I try to load something that doesn't. Close content will get blocked. I'll have to fix that

lasers commented 7 years ago

This line got merged somewhere in the process.

RetroArch [INFO] :: One or more firmware files are missingRetroArch [INFO] :: Updating firmware status for: $HOME/.config/retroarch/cores/nestopia_libretro.so on $HOME/.config/retroarch/bios

Everything looks to be in place and it's still blocking contents. I thought I might rename it back wrong, but that wasn't it. Maybe your fix will undo this odd behavior. Restarts does not fix it. I think it stopped loading overrides now.

andres-asm commented 7 years ago

I need steps to reproduce

lasers commented 7 years ago

Everything looks to be in place. Start. Load Nestopia. Load Content. Blocked.

lasers commented 7 years ago

Confirmed with Genesis too. Something I hadn't touched.

andres-asm commented 7 years ago

Ok then it doesn't work for overrides. Overrides load too late in the process for this to be feasible.

I just added a toggle to disable this feature in case you have a setup like that.

ghost commented 7 years ago

-cannot close game because one or more files is missing.... firmware check

-no onscreen bios missing message when loading a content that actually needs one

lasers commented 7 years ago

It worked... Then things went wrong after I renamed bios directory.

andres-asm commented 7 years ago

It most likely didn't or you loaded in a different manner. I just traced the codepath and it will never work.

andres-asm commented 7 years ago

@retro-wertz STEEEEEEEEEEEEEEEEEPS I guess you loaded from a playlist if you had read the PR you would know it's not implemented for that codepath yet.

lasers commented 7 years ago

@fr500 Good thing I commented https://github.com/libretro/RetroArch/issues/4091#issuecomment-263776338.

Now, it's always stuck on $HOME/.config/retroarch/bios. Like I said, weird behavior.

andres-asm commented 7 years ago

Most likely you loaded from a playlist too. Or from history

I did say this wasn't implemented yet. It will not enforce the check for that codepath.

ghost commented 7 years ago

-loaded from playlist or history -using load content will show immediately "one or more files are missing" when loading a core that requires firmware thats missing or incomplete(like region bios in picodrive)

andres-asm commented 7 years ago

Yes that's what supposed to happen The close content bug is fixed in my fork already

ghost commented 7 years ago

but im loading a genesis game, that does not need bios

andres-asm commented 7 years ago

It's for the core not for the subsystems. RA doesn't know about what is being emulated. It only knows that the bios X for the core Y is defined as required

lasers commented 7 years ago

https://wiki.libretro.com/index.php?title=PicoDrive

Your comment Close content will get blocked. Okay I see it now when I loaded it from a Playlist. I'm 99% sure I didn't mess with Playlist because I know you made it for "Load Core --> Load Content" workflow.

andres-asm commented 7 years ago

I'm 99% sure you did.

ghost commented 7 years ago

ok.. thats a different approach... making it compulsory to have complete bios/firmware files?

andres-asm commented 7 years ago

No I already added a toggle and in the future it may show a dialog instead asking if you want to load anyway. I already fixed the Close Content bug

andres-asm commented 7 years ago

I merged myself since the PR wasn't any more dangerous than the current state of things. You should be able to close content now.

And you can disable this feature in Settings / Core