snes9xgit / snes9x

Snes9x - Portable Super Nintendo Entertainment System (TM) emulator
http://www.snes9x.com
Other
2.61k stars 451 forks source link

1.62 #824

Closed bearoso closed 1 year ago

bearoso commented 1 year ago

I've added a lot of stuff, so I imagine it's time to increment the version.

Feel free to suggest things that should be done before 1.62 is released.

odditude42 commented 1 year ago

I'm not a Mac user personally, but since the question has shown back up on the board recently - will there be an "official" Mac build of 1.62 supporting latest MacOS, or will that still be considered WIP?

bearoso commented 1 year ago

Well, they deprecated or removed a lot of the API that the old port used, so it's written partly from scratch. I'd still consider it WIP.

MichaelBuckley commented 1 year ago

Yeah, we had an official WIP Mac build of 1.61. I'm happy to do it again for 1.62, adding a few things I've been able to rewrite since then. Cheat finder, and possibly the music box, which used fewer removed APIs.

OV2 commented 1 year ago

Let me take a final look this weekend, then it should be fine from my end.

Felipefpl commented 1 year ago

Feel free to suggest things that should be done before 1.62 is released.

Would it be too much to ask to add an option on File > Recent Games Menu to clean the list of all games that were played? Other emulators have this and i know it's a small thing but that would be handy.

Max833 commented 1 year ago

I've added a lot of stuff, so I imagine it's time to increment the version.

Feel free to suggest things that should be done before 1.62 is released.

The number of people using 4k monitors is growing, so scaling up to 10x would be useful. Right now it's just 4x...

bearoso commented 1 year ago

Those were easy enough. Any more simple things?

Felipefpl commented 1 year ago

Well, perhaps these are simple but i dont know if those could be classified as such:

1 - Some filters such as: EPX, Simple, DOT Matrix, both TV Mode, lq3xbold, SuperEagle and Blargg dont offer too much of an improvement to the GFX, it would be nice to remove them but it's a personal opinion, i'll understand if this doesnt happen.

2 - There are optimized versions of HQX/XBRz filters around on net, it also would be nice if snes9x had them.

3 - I tried the Hi-Res filters in the output processing image and nohing changed here, only changing the filters above made a change in the GFX. No idea why this happens.

4 - You can choose the language on GTK build but not on windows. At least i didnt see any opton on GUI for that.

5 - Cosmetic change: there are several of the same resolutions to choose mixed with 16/32 bit plus 60/70/75 hz. Why not display only one resolution and make snes9x choose the bit/hz based on what is set by windows/unix/mac on desktop?

Max833 commented 1 year ago

Those were easy enough. Any more simple things?

Thank you! =)

bearoso commented 1 year ago

Well, perhaps these are simple but i dont know if those could be classified as such:

1 - Some filters such as: EPX, Simple, DOT Matrix, both TV Mode, lq3xbold, SuperEagle and Blargg dont offer too much of an improvement to the GFX, it would be nice to remove them but it's a personal opinion, i'll understand if this doesnt happen.

People will complain. They may not seem useful, but someone out there will get irritated if we remove anything.

2 - There are optimized versions of HQX/XBRz filters around on net, it also would be nice if snes9x had them.

License compatibility is the issue. So far, we only have the rights to use the versions we have.

3 - I tried the Hi-Res filters in the output processing image and nohing changed here, only changing the filters above made a change in the GFX. No idea why this happens.

Those are for when the game uses a 512 pixel wide mode, which is rare.

4 - You can choose the language on GTK build but not on windows. At least i didnt see any opton on GUI for that.

Windows doesn't have the resources to make this easy like Gtk does. A cross platform Qt version in the future might be an option.

5 - Cosmetic change: there are several of the same resolutions to choose mixed with 16/32 bit plus 60/70/75 hz. Why not display only one resolution and make snes9x choose the bit/hz based on what is set by windows/unix/mac on desktop?

Yeah, anything other than native refresh rate/bit rate and extra 32 bit/60hz modes is kind of pointless, but once again, someone might complain.

bearoso commented 1 year ago

5 - Cosmetic change: there are several of the same resolutions to choose mixed with 16/32 bit plus 60/70/75 hz. Why not display only one resolution and make snes9x choose the bit/hz based on what is set by windows/unix/mac on desktop?

To add on to this, I suggest just using the "Emulate Fullscreen" option on Windows. It doesn't change the screen resolution, just makes the window fullscreen, and makes this dialog box irrelevant. Showing all those extra modes in the box is left over from the days when people would need to lower the bit depth and resolution to get better performance, but we don't need that anymore. Drivers these days can automatically give exclusivity to fullscreen windows these days without needing the mode switch, too.

Nowadays, it's still useful if you have a non-60-hz, non-variable-sync display, so you can change to a 60hz mode for smoother motion. You could also set up a custom resolution at 60.09881 Hz with tools like CRU and use this box to select that resolution so only Snes9x uses it and matches the hardware speed precisely.

Felipefpl commented 1 year ago

Thank you for all explanations regarding my suggestions. :+1:

Btw, about the 6 remaining pull requests, what prevents them from being submitted, are they incomplete or just small things are missing/wrong and with those being submitted/fixed will they be able to be released?

bearoso commented 1 year ago

I've closed the ones that are irrelevant or outdated. I'd like to look at the point we escape from the frame loop in the future, so I'm leaving that one open. The SuperFX ROM size one is probably OK to merge.

lordpeluca commented 1 year ago

Is there any possibility to add an automatic fullscreen loading option when loading a rom?

Something like: "Auto Switch to fullscreen after loading".

Anything to avoid the "Alt + Enter".

Thanks for improving this great emulator :)

ImSpecial commented 1 year ago

Well, perhaps these are simple but i dont know if those could be classified as such: 1 - Some filters such as: EPX, Simple, DOT Matrix, both TV Mode, lq3xbold, SuperEagle and Blargg dont offer too much of an improvement to the GFX, it would be nice to remove them but it's a personal opinion, i'll understand if this doesnt happen.

People will complain. They may not seem useful, but someone out there will get irritated if we remove anything.

Yes I'm one of them :), thanks for not removing these, and also thanks for the registry solution that you added too btw.

zhr0000 commented 1 year ago

When I lock my screen and re-access, s9x reports the error with blackscreen: Failed to initialize currently selected display output! Try switching to a different output method in the display setting.

It used to be possible to solve the problem by switching, but the nightly version can only be restarted to complete. I chose D3d in output method and this didn't happen on any other emulators.

Felipefpl commented 1 year ago

I've closed the ones that are irrelevant or outdated. I'd like to look at the point we escape from the frame loop in the future, so I'm leaving that one open. The SuperFX ROM size one is probably OK to merge.

Good to see this addressed, i hope both of them are merged if they are ok.

bearoso commented 1 year ago

When I lock my screen and re-access, s9x reports the error with blackscreen: Failed to initialize currently selected display output! Try switching to a different output method in the display setting.

It used to be possible to solve the problem by switching, but the nightly version can only be restarted to complete. I chose D3d in output method and this didn't happen on any other emulators.

That's a classic computer science anecdote. The client asks to fix the workaround, not the actual problem. I'll see if I can reproduce the original error and fix that.

I'll add the fullscreen on load option, too.

Felipefpl commented 1 year ago

I forgot to report 2 problems i have here, possibly due to my intel HD 2000:

1 - Snes9x 1.61 crashes when choosing OpenGL as a backend.

2 - When choosing DirectDraw the colors of Win7 are disabled but the games run. A mesaage says: "The color scheme was changed to Windows 7 Basic".

OV2 commented 1 year ago

For 1. you can try setting OpenGL:DisablePBOs to TRUE in snes9x.conf

2.: What does the message say besides that? Does this only happen in fullscreen mode or always? You can try to disable bilinear filtering and see if that helps. We will probably not do any real work on the DirectDraw mode.

Felipefpl commented 1 year ago

@OV2 1 - This tip worked. Could this be the standard or is this a problem for other video cards?

2 - I started the game on fullscreen/windowed mode and the colors are disabled in both ways. Bilinear filtering was already disabled (i dont like it since it makes the GFX ugly). The only message i see after what i saw is: "A running program isnt compatible with certain visual elements of Windows."

bearoso commented 1 year ago

I removed the PBOs in the Gtk port because they weren't providing a benefit. On an old PowerPC Mac they increased the transfer speed if you converted to 32 bit before, but in recent tests I've done they were no faster than regular glTexImage. I think it's safe to just get rid of them.

bearoso commented 1 year ago

@zhr0000: When you get that error message, Direct3D should show a message before that indicating what failed. Can you post that here? I'm trying to reproduce the crash, but for me it comes back OK from the lock every time. Do the other drivers like OpenGL and Vulkan also crash? Do you have multiple monitors?

lordpeluca commented 1 year ago

@bearoso

Thanks for adding the option to load the rom automatically in full screen. :)

By the way, looking at my old posts, about 3 years ago I asked about this same thing, more precisely in this post:

https://github.com/snes9xgit/snes9x/issues/571

And that's basically what I was looking for. If they want they can close that thread since, for me, it is solved.

zhr0000 commented 1 year ago

@zhr0000: When you get that error message, Direct3D should show a message before that indicating what failed. Can you post that here? I'm trying to reproduce the crash, but for me it comes back OK from the lock every time. Do the other drivers like OpenGL and Vulkan also crash? Do you have multiple monitors?

I tried many ways. Seems this error occurred only when I minimized the window and locked screen customarily. Then heard error sound sometimes. Vulkan crashed too just at the emulator started. OpenGL is fine. I chose D3d to run the reshade injector and most of the shaders above adapt it better than OpenGL. Mine is surfacepro with no multiple. image btw, thanks the anecdote that obscure for my rusty eng.

bearoso commented 1 year ago

It might be reshade crashing things. You know with OpenGL and Vulkan you can use any of the shaders here: https://github.com/libretro/slang-shaders. There's probably just as many options there as with reshade.

Felipefpl commented 1 year ago

@bearoso - Unrelated to 1.62 but perhaps you'll like the idea: several of the oldest issues here could be closed since they are related to gtk/compiling issues that may be fixed. ;)

Of course, there are some of those issues that arent among the oldest ones too.

zhr0000 commented 1 year ago

It might be reshade crashing things. You know with OpenGL and Vulkan you can use any of the shaders here: https://github.com/libretro/slang-shaders. There's probably just as many options there as with reshade.

But it has existed for a long time before I knew reshade, and still crashed after I uninstall it. I guess my locking screen to sleep has interrupted something.

odditude42 commented 1 year ago

not sure if this counts as easy or not -

support two, independent ffwd levels, with independent toggle and hold hotkeys.

usage: i'd like to be able to play an RPG at (ffwd lv 1) by toggling that setting. on demand, i'd like to jump up to (ffwd lv 2) using the hold hotkey, such that when i release the hotkey it returns to (ffwd lv 1), which has remained toggled on.

zhr0000 commented 1 year ago

Would you consider adding a hotkey configuration slot for "show frame rate"?

BananaManner commented 1 year ago

I'd like to see HD Mode 7 if it's not already implemented.

Max833 commented 1 year ago

If the xbox 360 controller is turned off while SNES9x is already running and you turn it on, the controller will not work (OS: Windows 10). The Controller must be turned on before you start SNES9x. Is this fixable as well?

bearoso commented 1 year ago

There's a menu option "Detect Gamepad Changes"? Does that detect the controller? It would be easy enough to check constantly, but that might cause hiccups.

HD Mode 7 isn't happening, at least for a while. It would require a PPU rewrite.

Why do you need a hotkey for "show frame rate?" It will be either 50 or 60 all the time unless you're running a computer from two decades ago. I don't understand why you would need to rapidly turn it on or off.

Max833 commented 1 year ago

There's a menu option "Detect Gamepad Changes"? Does that detect the controller? It would be easy enough to check constantly, but that might cause hiccups.

It's a little bit strange, because with ares/mesen I don't have to do anything, but... it does the job, I think. Thanks!

zhr0000 commented 1 year ago

Why do you need a hotkey for "show frame rate?" It will be either 50 or 60 all the time unless you're running a computer from two decades ago. I don't understand why you would need to rapidly turn it on or off.

Well some shaders from reshade causing this. I would consider deprecating it anyway. Thanks!

OV2 commented 1 year ago

There's a menu option "Detect Gamepad Changes"? Does that detect the controller? It would be easy enough to check constantly, but that might cause hiccups.

It's a little bit strange, because with ares/mesen I don't have to do anything, but... it does the job, I think. Thanks!

The problem with automatic change detection was that this sometimes crashed inside the windows multimedia functions that snes9x still uses for controller access. Thus this workaround. A proper fix would probably require switching to dinput/xinput, which I never got around to.

lordpeluca commented 1 year ago

A cosmetic change more than anything else.

In "help/about", don't forget to update the date to 2023:

(c) Copyright 2009 - 2023 BearOso, OV2

ImSpecial commented 1 year ago

Gtk:

  • Removed graphics options most people won't understand or need.

What were these if you don't mind me asking?

bearoso commented 1 year ago

You think otherwise? PBOs, POT textures, and GLX_OML_sync_control usage.

Felipefpl commented 1 year ago

You think otherwise? PBOs, POT textures, and GLX_OML_sync_control usage.

Talking about PBOs is it possible to remove them from win32 builds as you suggested? I'd like to have the option to choose OpenGL (if this doesnt harm snes9x of course). After that only the problem with DirectDraw will remain. ;)

bearoso commented 1 year ago

I set it to disable PBOs by default on Windows. If you have an existing config file, you'll need to edit it so DisablePBOs is set to true or erase it and start anew.

Felipefpl commented 1 year ago

Thanks, i did as you suggested on previous post. :+1:

bearoso commented 1 year ago

I've made a potentially breaking change by moving S9xSyncSpeed. It shouldn't cause problems in theory, but who knows? Testing is appreciated.

psyalemao commented 1 year ago

Hello, I would like to make a suggestion. An appimage would be great. I tried to setup a script but didn't edit the yml or CMakeLists.txt

make-appimage.zip

bearoso commented 1 year ago

@psyalemao: Your script doesn't get the right shared libraries. Using the linuxdeploy program is probably the best way to do that. I'm not going to add an AppImage to CI right now. I could make one for the release version, though.

bearoso commented 1 year ago

Anything else that needs to go in before release?

Felipefpl commented 1 year ago

None unless you wanna look at those small issues opened. ;)

Btw, here is one that needs to be closed:

https://github.com/snes9xgit/snes9x/issues/732

@bearoso - Only github will be updated with the changelog or the other sites related to snes9x will be updated too? I ask because ipher's site has the changelog for 1.60 but not the newest one.

psyalemao commented 1 year ago

I could make one for the release version, though.

Didn't know about linuxdeploy. Thanks for taking appimage in consideration. What about 7zip support?

bearoso commented 1 year ago

Tagging 1.62.

bearoso commented 1 year ago

It's released. I added binaries for windows and an appimage for linux-x64. @MichaelBuckley, if you want to build a package for macOS, feel free to add it to the release page.