Jump to content

Raine 0.95.3 : let's get rid of all these bugs !!!


Tux

Recommended Posts

Fixes only this time, there were quite a few annoying ones, plus a surprise from long past, a fix for 64street & chimerab attract mode! For these 2 to say the truth the fix itself was found by Haze for mame around version 0.170 so quite a long time ago already, and then found in the github web interface by Antiriad, and finally adapted by me to raine ! This bug made me crazy, such a simple memory map for such a crazy effect, no move during attact mode... It turns out it's something very similar to the nmk driver, they push what they can do with the 68000 to the limit, write bytes are mirrored to words in their main ram ! Actually this bug had been here since 0.28 and before, but I saw it only when testing the turbo key behavior, so it's a very special bug !!!

Anyway except that the more classical bug fixes are :
 - better message for broken ips .dat files
 - Ignore repeated keys ! I had some trouble with the turbo key DEL, which must be held down as long as you want the acceleration to occur, but after a while it created havoc. It's because sdl2 handles key repetition and I missed it completely ! It's fixed now.
 - console : fix breakpoints for 68k cpus which I had stupidly broken when adding the z80 breakpoints !
 - The multiple files selector used for ips dat files doesn't loose its selection anymore when resizing the windows
 - Still for ips dat files : when no dat files are selected delete the corresponding ini file when leaving the directory or closing the dialog

 - some more fixes to this multiple files selector... !
 - a fix for a crash I got in the console while copying and pasting info from the console

Get it from there : http://raine.1emulation.com/download/latest.html

... and updated the 2 appimages to 0.95.3, I won't do that for all releases but since the build system was updated very recently it was very easy to do just now.

Edited by Tux
  • Like 2
Link to comment
Share on other sites

  • 2 weeks later...

Hello Tux! I was finally able to check the new version and here I am with my brief feedback.

It seems that the issues I reported in my previous posts are finally corrected, except for the crash when clicking in an empty folder in the IPS selection menu. Do you intend to fix this eventually? Whatever you decide, I'm already very glad for these fixes.

Now for some new discussions, I would like to report an issue I'm having with the Unibios: whenever I call the Unibios in-game menu with Start + Select/Coin it will go black after some moments. If I want to show the menu again I have to either touch the directional pad or the buttons, as you see here:

https://drive.google.com/file/d/1VDqGCYPrRRjP258wOhGh4nmFUnmdxzme/

I think this is a feature from the Unibios menu to protect CRT displays from the burn in effect, but recently it started to turn off too quickly in Raine, I don't know why. Maybe it's something on my side? But I don't remember changing anything related to the Unibios behavior... Anyway, I'll wait your comments on that.

Now I have two feature requests:

Request 1: an "Enable IPS patches" option to allow us to toggle the patches on and off just like in FBNeo.

Currently if someone wants to disable the patches it is necessary to deselect all the *.dat files in the IPS selection menu, and repeat the process again to enable them. This is not so user-friendly, so this feature would make this process much easier and quicker.

I have an idea where the feature could be placed: in the "Game options" menu or in the "Options" in the Game selection menu. If you place it in the Game Options menu it would become a game dependant setting, no? This could be interesting, except that it would require the user to load the game first in order to turn on/off the patches, and then a hard reset or a restart of the program so the option take effect, right? Now if you place it in "Options" in the Game selection menu it could be enabled or disabled before the game is loaded, so it would be more user friendly if placed there. Also, it would be "visually" closer to the "Preload IPS dat file" option, which is better for navigation and organization in the GUI.

So I think it's best to place it there and set it to on as default. What do you think of this idea?

Request 2: a "Swap controller face buttons layout" (I don't know exactly how to name it) in the Inputs menu to quickly adapt the XBOX 360 controller face buttons layout to the Nintendo controller layout.

I felt the need for that because recently I bought a Switch Pro Controller to play with my friend's Switch and then tried it in Raine to see how it would perform there. It turns out that it is recognized and mapped automatically but the official SDL mapping for the controller (and possibly for other Nintendo controllers) follows the A, B, X, Y button layout instead of Nintendo's B, A, Y, X. So in NEOGEO games, for example, NG button A becomes the right button (instead of the down), NG button B becomes the down button (instead of the right), NG C is now the top button (instead of the left), and finally the D button is mapped to the left button (instead of the top).

This is the NEOGEO original button layout:

  D
C   B
  A

The X360 button layout

  Y
X   B
  A

PlayStation button layout

   triangle
square   circle
    cross

Nintendo button layout

  X
Y   A
  B

You see that both the X360 and PS button layout respect the NG one in the SDL configuration database, but that's not the case for the Switch controller. It is registered in SDL as exactly as it looks, so the NG buttons don't match with the original order. This new option would allow us to keep Raine's default configuration as suggested from the SDL database while easily adapting it to correct the face buttons layout for such controllers. I don't know if this could be easily doable but it would really come in handy for these uncommon SDL configurations.

That's my comments for now.

Thank you so much in advance for your time and for considering these requests.

Edited by mer-curious
Link to comment
Share on other sites

9 hours ago, mer-curious said:

Hello Tux! I was finally able to check the new version and here I am with my brief feedback.

It seems that the issues I reported in my previous posts are finally corrected, except for the crash when clicking in an empty folder in the IPS selection menu. Do you intend to fix this eventually? Whatever you decide, I'm already very glad for these fixes.

It's actually rather long... !

I don't have the crash here, maybe some craziness from windows which escaped me ? I'll test this again to be sure.

edit : don't have the crash at all, even in wine : empty ips directory -> messagebox to tell the dir is empty, empty dir inside ips directory -> just displays the .. dir to return 1 level higher, tested in wine, same thing.

9 hours ago, mer-curious said:

Now for some new discussions, I would like to report an issue I'm having with the Unibios: whenever I call the Unibios in-game menu with Start + Select/Coin it will go black after some moments. If I want to show the menu again I have to either touch the directional pad or the buttons, as you see here:

https://drive.google.com/file/d/1VDqGCYPrRRjP258wOhGh4nmFUnmdxzme/

I think this is a feature from the Unibios menu to protect CRT displays from the burn in effect, but recently it started to turn off too quickly in Raine, I don't know why. Maybe it's something on my side? But I don't remember changing anything related to the Unibios behavior... Anyway, I'll wait your comments on that.

Very good diagnosis indeed, it's related to the recent optimization of the scanline counter for aodk and some other games, apparently there can't be any optimization here because this unibios just uses it to count the frames !!! (it's a very unefficient way to count frames, the best way is just to add a counter in the vbl irq, if they had done that there would be no bug).

Anyway, I'll revert to some more classical code here then, there was a game which produced a black screen because of this recently, do you remember which one it was, I didn't write which one it was and since I change this again, it would be better to double check. (aodk already checked and ok)

9 hours ago, mer-curious said:

Now I have two feature requests:

Request 1: an "Enable IPS patches" option to allow us to toggle the patches on and off just like in FBNeo.

Currently if someone wants to disable the patches it is necessary to deselect all the *.dat files in the IPS selection menu, and repeat the process again to enable them. This is not so user-friendly, so this feature would make this process much easier and quicker.

I have an idea where the feature could be placed: in the "Game options" menu or in the "Options" in the Game selection menu. If you place it in the Game Options menu it would become a game dependant setting, no? This could be interesting, except that it would require the user to load the game first in order to turn on/off the patches, and then a hard reset or a restart of the program so the option take effect, right? Now if you place it in "Options" in the Game selection menu it could be enabled or disabled before the game is loaded, so it would be more user friendly if placed there. Also, it would be "visually" closer to the "Preload IPS dat file" option, which is better for navigation and organization in the GUI.

So I think it's best to place it there and set it to on as default. What do you think of this idea?

Yeah you can't use game options here since it's not available until a game is loaded, but I don't like the idea to add lines in the header of the game selection dialog, there are already quite a few and I don't want a crowd here. Maybe simply as a line on top of the "preload ips dat file", a kind of "ips patches enabled globally" with a checkbox. I'll think about it.

edit : done, not with a checkbox finally because they are not really convenient in the gui right now, so a classical menu with enabled/disabled displayed in text, it's easier. Setting saved in config file so it stays if you quit the emu, and is taken into account if you load a game from the command line.

9 hours ago, mer-curious said:

Request 2: a "Swap controller face buttons layout" (I don't know exactly how to name it) in the Inputs menu to quickly adapt the XBOX 360 controller face buttons layout to the Nintendo controller layout.

I felt the need for that because recently I bought a Switch Pro Controller to play with my friend's Switch and then tried it in Raine to see how it would perform there. It turns out that it is recognized and mapped automatically but the official SDL mapping for the controller (and possibly for other Nintendo controllers) follows the A, B, X, Y button layout instead of Nintendo's B, A, Y, X. So in NEOGEO games, for example, NG button A becomes the right button (instead of the down), NG button B becomes the down button (instead of the right), NG C is now the top button (instead of the left), and finally the D button is mapped to the left button (instead of the top).

This is the NEOGEO original button layout:

  D
C   B
  A

The X360 button layout

  Y
X   B
  A

PlayStation button layout

   triangle
square   circle
    cross

Nintendo button layout

  X
Y   A
  B

You see that both the X360 and PS button layout respect the NG one in the SDL configuration database, but that's not the case for the Switch controller. It is registered in SDL as exactly as it looks, so the NG buttons don't match with the original order. This new option would allow us to keep Raine's default configuration as suggested from the SDL database while easily adapting it to correct the face buttons layout for such controllers. I don't know if this could be easily doable but it would really come in handy for these uncommon SDL configurations.

That's my comments for now.

Thank you so much in advance for your time and for considering these requests.

You're in luck because I have a similar problem here, I have a pad which tries to be clever and to autodetect what it's plugged to and then change its layout based on what it detects. It worked well until recently and was detected as an xbox pad on pc, but with linux kernel 6 it started to detect it as a nintendo console !

There are ways around that : stick to a 5.x kernel, that's what I did 1st for about 1 year, but now the old kernel is not available anymore in arch and so I can't do that anymore.

So I can experiment this button swap 1st hand ! ;-)

I'd suggest using the controller mapping function instead, there is only a catch there : it doesn't change anything for the gui, you still have A & B inverted there, I'll change the gui to use the normal mapping then... !

edit : actually I had a weird problem here, normally raine creates a userdb2.txt file in the config directory and then renames it in the end to userdb.txt but mine was not renamed for some reason, so actually the new mapping didn't work at all. I added an error message in case the renaming fails, but when I redid the mapping, it worked flawlessly, no error message, and the new mapping works everywhere, gui and games, so the buttons are once again in the "right" order.

Oh well... at least it works, once the right userdb.txt file is created you don't need to touch this ever again anyway.

Edited by Tux
  • Like 1
Link to comment
Share on other sites

13 hours ago, Tux said:

edit : don't have the crash at all, even in wine : empty ips directory -> messagebox to tell the dir is empty, empty dir inside ips directory -> just displays the .. dir to return 1 level higher, tested in wine, same thing.

Hey Tux! Thanks for the fast reply and for trying this again. I can reproduce the crash consistently here in two different Windows installations, one with version 8.1 and other with 10. In Windows 8.1 Windows crash report shows something after the crash, but I'm not sure if it's useful for you, here (in Portuguese, sorry):

Nome do Evento de Problema:    APPCRASH
  Nome do Aplicativo:    raine.exe
  Versão do Aplicativo:    0.0.0.0
  Carimbo de Data/Hora do Aplicativo:    642e6e02
  Nome do Módulo de Falhas:    msvcrt.dll
  Versão do Módulo de Falhas:    7.0.9600.17415
  Carimbo de Data/Hora do Módulo de Falhas:    545055fe
  Código de Exceção:    c0000005
  Deslocamento de Exceção:    00000000000011f1
  Versão do sistema operacional:    6.3.9600.2.0.0.768.101
  Identificação da Localidade:    1046
  Informações Adicionais 1:    de15
  Informações Adicionais 2:    de15584db83bd265c681fd35068d70bf
  Informações Adicionais 3:    ae58
  Informações Adicionais 4:    ae5856772cf22858e984437f0d69b60a


Maybe Wine is not able to accurately reproduce the Windows environment then?

As for my setup, I just have in the IPS folder:
- the kof97 folder with all the *.dat files from those online packs (the Chinese, the EmuFrance and the GitHub one);
- an empty kof98 folder;
- the kof97.ini with my selected patches.

As you can check here:

hfgGCNh.png

 

13 hours ago, Tux said:

do you remember which one it was, I didn't write which one it was and since I change this again, it would be better to double check. (aodk already checked and ok)

Yes, it would be much better if Unibios was updated with this change. Perhaps when it becomes open source this could happen? Interestingly it hasn't become yet, even if it's mostly used nowadays with emulators for digital software preservation...

I think the game was Agressors of Dark Kombat, indeed.

 

13 hours ago, Tux said:

edit : done, not with a checkbox finally because they are not really convenient in the gui right now, so a classical menu with enabled/disabled displayed in text, it's easier. Setting saved in config file so it stays if you quit the emu, and is taken into account if you load a game from the command line.

Perfect! I'm very happy you liked this idea and that it wasn't so difficult to implement. 😊

 

13 hours ago, Tux said:

I'd suggest using the controller mapping function instead, there is only a catch there : it doesn't change anything for the gui, you still have A & B inverted there, I'll change the gui to use the normal mapping then... !

Yes, I thought of using the Controller mapping option to work-around this issue in the first place, but since this could apply to other Nintendo-based controllers, I thought of suggesting such a feature to quickly and easily swap the Nintendo layout B and A and Y and X to match the NG/Xbox/PS face buttons layout.

I don't know why the SDL database maintainer accepted that order for the Switch Pro controller when they seem to adapt every controller layout in the database to match the XBox A-B-X-Y (this is what they did with my Ascii Seamic Controller when I suggested it). But with the Switch Pro controller they kept the Nintendo layout... Anyway, maybe it's different to Nintendo controllers then?

I wouldn't mind if you added this buttons swap function just for the games though if it was easier, that is, preserving the GUI Confirm and Return functions to Nintendo's A (right) button to confirm and the B (down) button to return/cancel. But I can of course live with the remapping if adding that function could be difficult.

Thank you so much again for your fast response and for your continuing support of the program. 😊

Link to comment
Share on other sites

For the crash it was a stupid mistake, it happened only if the empty dir was not the 1st of the list ! And in my test it was, of course... !
Anyway fixed in git and for next time ! (it's a 1 line fix... !).

And by the way, I didn't know some people still had some windows8 around, one of the most hated windows version ever, with windows me (millenium but it's rather old now). The part about spying the user to get ad money was added in win8, but is more and more present now, luckily there are tools to block all of this... !

 

Edited by Tux
  • Like 1
Link to comment
Share on other sites

Hello Tux! I was wondering if it would be possible to have the "Return to the GUI" function work similarly as the ESC key? That is, not only to show the GUI but also to hide it too? This would come in handy when we are using a controller away from the keyboard and then map the "Return to GUI" function to a controller button.

Maybe you could mimic the behavior of the ESC key in this function then, no? Or you could make it work in such a way that using this function in a sub-menu (by hitting Tab or the associated button) would instantly return to the game, instead of going back all the sub-menus until the main menu, and then finally to the game, which is what the ESC key does.

Anyway, if you could implement this feature you could rename it to something like "Show/Hide the GUI" or "Leave or return to the GUI" to better reflect its new behavior.

Also, is it possible to have the GUIDE button in the X360 controllers mapped to this function as default? This would give this button the same function it has in Retroarch, which is to toggle the user interface.

As a final comment, I've found a minor GUI glitch while trying to associate the Guide button to this "Return to the GUI" function. It seems the menu width does not instantly adapt to the the new bindings and then the joystick control is mostly hidden, as you see here:

https://drive.google.com/file/d/1t103CAOzUV7RPGjkTz7-aU4__udjauc-/

As you see in the video, it also happens in resolutions higher than the default 640x480, and when the window is restored down to the default size the width is fixed. It's really a minor glitch, but I decided to report it to see if it could be easily fixed.

Thank you so much in advance for your time. 😊

 

PS:

On 4/15/2023 at 6:04 PM, mer-curious said:

I wouldn't mind if you added this buttons swap function just for the games though if it was easier, that is, preserving the GUI Confirm and Return functions to Nintendo's A (right) button to confirm and the B (down) button to return/cancel. But I can of course live with the remapping if adding that function could be difficult.

Did you happen to think about this feature?

Edited by mer-curious
Link to comment
Share on other sites

3 hours ago, mer-curious said:

Hello Tux! I was wondering if it would be possible to have the "Return to the GUI" function work similarly as the ESC key? That is, not only to show the GUI but also to hide it too? This would come in handy when we are using a controller away from the keyboard and then map the "Return to GUI" function to a controller button.

Maybe you could mimic the behavior of the ESC key in this function then, no? Or you could make it work in such a way that using this function in a sub-menu (by hitting Tab or the associated button) would instantly return to the game, instead of going back all the sub-menus until the main menu, and then finally to the game, which is what the ESC key does.

Anyway, if you could implement this feature you could rename it to something like "Show/Hide the GUI" or "Leave or return to the GUI" to better reflect its new behavior.

Ah mer-curious is tired... ! All the raine functions which can be controlled by the keyboard can also be mapped to any joystick input, here you are talking about "stop emulation" in "inputs / raine controls". It's not a problem when mapping a joystick input to this one, but careful if you map another key here !

The difference with "return to the gui" : return to the gui is for the case when you run the emulator with the -nogui command line option and with a game name in the command line (which probably never happens in windows these days, except for those who still use a frontend to launch raine). Then if you press ESC it will simply quit, so if you change your mind and only want to return to the gui that's what this function is done for.

3 hours ago, mer-curious said:

Also, is it possible to have the GUIDE button in the X360 controllers mapped to this function as default? This would give this button the same function it has in Retroarch, which is to toggle the user interface.

If it's mapped as a normal button then no problem !

3 hours ago, mer-curious said:

As a final comment, I've found a minor GUI glitch while trying to associate the Guide button to this "Return to the GUI" function. It seems the menu width does not instantly adapt to the the new bindings and then the joystick control is mostly hidden, as you see here:

https://drive.google.com/file/d/1t103CAOzUV7RPGjkTz7-aU4__udjauc-/

As you see in the video, it also happens in resolutions higher than the default 640x480, and when the window is restored down to the default size the width is fixed. It's really a minor glitch, but I decided to report it to see if it could be easily fixed.

Thank you so much in advance for your time. 😊

Yeah noticed it a while back already, it's super minor, and didn't take the time to look into it yet.

3 hours ago, mer-curious said:

 

PS:

Did you happen to think about this feature?

Sorry I thought it was clear, in linux I use a custom mapping as explained, it swaps the 2 buttons for the gui and for the games, and it's perfect for me.

I don't think I'll add some way to remap the joystick buttons in the gui alone, I find it overkill.

Edited by Tux
  • Like 1
Link to comment
Share on other sites

17 hours ago, Tux said:

Ah mer-curious is tired... ! All the raine functions which can be controlled by the keyboard can also be mapped to any joystick input, here you are talking about "stop emulation" in "inputs / raine controls". It's not a problem when mapping a joystick input to this one, but careful if you map another key here !

Ah, so the function is already there and I hadn't realized it yet...

Now I was thinking that I was mislead by the way these options are named in this menu. Perhaps we could call the "Stop emulation" function as "Show/hide the GUI (stop emulation)" or "Stop emulation (show/hide the GUI)" to more clearly state what this function does? I wouldn't probably be mislead by the other option in this menu if this option was named liked this I guess. What do you think?

 

17 hours ago, Tux said:

If it's mapped as a normal button then no problem !

I think I wasn't clear here. I was thinking about making the Guide button in X360 controllers as the default button for the currently named "Stop emulation" function (that is, for calling and leaving the GUI), but without the need of configuring it, just like happens in Retroarch. As soon as Raine identified an X360 controller it would assign the Guide button to that function (of course with the possibility of changing it if desired). This would give that button an useful function by default in the program. Do you like this idea?

 

17 hours ago, Tux said:

Yeah noticed it a while back already, it's super minor, and didn't take the time to look into it yet.

No problem, I just found it annoying when I mapped the Guide button to that function and couldn't see the new binding correctly in the GUI, but playing with the window size eventually works around the issue as you see in the video, at least while you don't take a look at it.

 

17 hours ago, Tux said:

Sorry I thought it was clear, in linux I use a custom mapping as explained, it swaps the 2 buttons for the gui and for the games, and it's perfect for me.

I don't think I'll add some way to remap the joystick buttons in the gui alone, I find it overkill.

No problem, I was just thinking of an easy, quick menu function to swap/invert the B-A, Y-X Nintendo button layout to the SDL "standard" X360 A-B, X-Y button layout which is what Raine uses for NG games.

But since I don't intend to use this Switch Pro controller much in Raine I may just follow your suggestion and remap the buttons and live with a custom configuration for it.

Thank you anyway for your fast reply and continuing work in the program.

Edited by mer-curious
Link to comment
Share on other sites

Rename the function : sorry it's always been like this, it's documented in the very old 0.28 documentation, so maybe one day, but not for now.

Guide as default : never done that, so I tried it to see how to map a button for a controller. It will work only if a controller is recognized, otherwise it will be button 6, and of course only for those like you... and probably you only + some eventual new users start without any config file. It's one anyway.

for the swap : the gui doesn't even use x & y buttons for now, so really there is no point for the gui, and maybe some users like the default nintendo placement, it's their choice after all, so they change the mapping if they want.
For some reason mine was overwritten and I had to recreate it. No idea why it was overwritten, I'll have to be more careful... !

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...