QuickPlay 4.6.0 is released
Posted: Sat Feb 10, 2018 11:46 pm
What is the background to this release?
So it was Christmas, and finally I had time away from coding to sit and play with the MAME and RetroArch stuff i'd been coding this last year. The main thing I noticed was that a small number of MAME Software List games (that's the home computer and console part of MAME that deals with the sets of games MAME's own contributors have collected and sorted for playing) didn't seem to be working correctly: I tried to load a game in the 'floppy disk' Softlist some system has (say MSX2_flop), and it loaded the cassette version of the game, or vice versa. On some sets it got so annoying when I was 'game surfing' that it was ruining my immersive experience. We can't have that!!! When I traced back the issue I was amazed - there was a RetroArch writeup of MAME functionality a while back that took me an age to understand: https://www.libretro.com/index.php/mamemessume-cores/
“Softlists are not foolproof, two games on the same system could have the same name and different media types, for instance NES/FAMICOM/FDS Super Mario Brothers 2. smb2.zip might represent US cart version or JAP floppy disk version.”
That turned out to be a large problem with MAME, with three main issues:
1) Like it says: MAMEnames are unique to a device on a system, rather than unique system-wide
2) you can't easily tell which device the 'default' will be for a system (i.e.: what happens when you call 'famicom smb2'). Might be cassette, might be floppy, might be cart
3) if you try and specify the device for a MAMEname to fix this when you call a Softlist game e.g.: "famicom -flop1 smb2" (i.e.: load the disk version of the game into the first floppy slot), it might break other nice things that MAME has setup under the 'MAMEname-only loading' - like multi-disc loading (eg: x6800 where up to 4 disks are mounted automatically when you call a MAMEname.) And yes, you DO need that 1 at the end of the device call, because if you call '-flop' on a system that has more than one floppy, you get dumped out of MAME - nice touch!
So the solution i've coded tries not to have to call a device for a system's softlist. We don't want to have to call '-flop1', '-cass1' if we can possibly avoid it - we want to stick to the MAME Softlist dream of calling 'mame.exe system MAMEname` - particularly because that's an amazing and elegant thing..... So instead, when making one of QuickPlay's romdatas for a MAME Softlist, we look for MAMEname conflicts between all combinations of the 'original' softlists for a system (an 'original' softlist means MSX2's softlists for MSX2, not the MSX1 softlists that MSX2 will also run - MSX1 and MSX2 softlists can share MAMEnames between them without issue, its just that if there is a conflict between MSX2 and MSX1 names and you call one of the affected names on MSX2, you'll get the MSX2 game - that's fine since QuickPlay already consistently chooses an MSX1 to play its MSX1 softlist Romdatas).
So where there is a conflict in the names between two original softlists for a system, we use QuickPlay's 'overwrite params' functionality in a Romdata.dat to replace the call with a device-specific one (it calls `famicom -flop1 smb2`). If there are no MAMEname conflicts, which is most of the time, we keep things as they are and just call the 'MAMEname' and system to load a game in MAME like MAME prefers you to.
Though that sounds a bit like a bugfix, its not a bugfix for QuickPlay!!! It was a moderately-sized new feature, so i've called this QuickPlay 4.6 (not 4.5.1).
I also noticed some edge-cases which weren't working properly for one-click loading in MAME Softlists, and fixed them, like systems where the default emulator QuickPlay decided to use to run a softlist required a working knowledge of Japanese written languages to get a floppy to load (was MSX2p), or the many quirky 'cartridge-within-a-cartridge' softlsits for the NES and SNES - thanks etabeta78: http://forums.bannister.org//ubbthreads ... Post112393
Lastly, at Christmas I had time to actually work through the RetroArch non-MAME emulators for the latest RetroArch and tweaked and added emulators in QuickPlay's EFind for RetroArch as I went along. Basically, I ran up and double-checked everything against the latest RetroArch, and found some interesting things to note and fix (not all of them about QuickPlay either: do check for any text notes in the emulator config for a RetroArch system, if its not doing what you want in QuickPlay, for any info i've put there about how RetroArch's current emulation status etc...)
So now, the RetroArch, MAME and MAME-in-RetroArch emulators and functionalities in QuickPlay are bigger than ever. Just make sure MAME/RetroArch works outside of QuickPlay, go set them up in QuickPlay - don't forget to check pages on the wiki to help you: these should do that:
http://quickplay.sourceforge.net/wiki/index.php/MAME
http://quickplay.sourceforge.net/wiki/index.php/MESS
http://quickplay.sourceforge.net/wiki/i ... rchMameMod
then they'll work with all your other emulators and sets, and the world will be amazing........
Also, we've had some chat on the forums about thumbnail view in QP, and bizarrely I found existing code for enabling next/back buttons that worked fine except for a couple of tiny issues, but had been disabled. So that was easy! And for thumnbnail view i'd missed a feature that slideshow view gained ages ago: now if there's only one thumbnail or if you click to look at just one thumbnail, it will expand if it can to fit the size of the media panel
How do I use the new Softlists code if I already made a set of Softlist games?
Simplest way: just delete the softlist romdata folder and make another using the Arcade menu.
Harder way: To fix some of the other stuff I did change a few of the EFind calls, so if you care about some of those odd NES/SNES Softlists you might want to do another 'MAME Scan' to remake the Mame Efind and then do another Efind scan, choosing to 'replace all' (or otherwise work out a way of first deleting all the existing MAME home pc/console emulators so the EFind scan can replace them all again, if you don't want to 'replace all'). Then make another Softlist Romdata set using the Arcade menu.
Closing thoughts on MAME Softilsts and RetroArch
Theres a lot of sense in what the nonMAME guy says about RetroArch http://nonmame.retrogames.com/: if the MAME Emulator really is problem-free for a system and usable, why does RetroArch use something else and then also have a MAME Emulator? Some systems are solid on MAME, but its like RetroArch has to have some alternative emulator, you can tell they don't ever consider that the MAME emulator might be the defacto. By not emphasising MAME - and I appreciate there's a HUGE TON of work that would have to happen if that were ever to happen - Softlists in MAME don't work very well natively in RetroArch, so you have to use QuickPlay currently in order to get them working. If you didn't use QuickPlay, for example, trying to use Softlists atm via RetroArch command line will only work for cartridge games on cartridge-based systems without a lot of internal per-game fiddling (oh and as I discovered: that's IF the cartridge is considered the 'default' for a particular machine in MAME that is!).
Any more work possible between MAME and RetroArch would help all of us to have a great set that uses a great emulator, rather than 5 good sets using 5 good emulators, and one of the points of RetroArch should be that you no longer need a bunch of different emulators to play a bunch of different sets of games. After setting up RetroArch with everything it can be setup for, I'm not sure any of you guys might disagree, but I feel like I sold in to a dream which was partly about not having to deal with multiple emulators anymore, and ended up just spending a bunch of time creating many of the same problems I had anyway using multiple emulators, but all inside RetroArch! So I STILL have to work out , or worse guess, which emulator might play my game given emulation status and the kind of set I have and format its in, and still have to change and swap things about, and in the case of more modern emulators I found I just couldn't yet use RetroArch because of various problems. So RetroArch basically is often about the same kind of generation of emulators as MAME atm, but isn't really using MAME in an earnest way. This time I didn't want another set of emulators to add to the pile, I wanted to replace the pile. For some things I did (goodbye Project Tempest, that took a while!), but for others, not quite yet...
Future plans?
In future, I would really like the MAME games to be able to have a filepath so other emulators can be right-clicked from QuickPlay and try and load them. I realised too late on that with the way i've now done the above 'other-softlist-game-name-checking' stuff for the Softlists that this would complicate such an attempt, because they overwrite the call to an 'emulator' with one that calls a MAMEname no matter what emulator you called (the MAME emulator might call a MAMEname, but another emulator (like one of RetroArch's for instance) probably needs to call a filepath). So if in future I try to attempt "non-MAME" loading of MAME Softlists: i'd like to try incorporating the 'game name conflict" calls into the MAME Softlist Emulators in the MAME Efinds themselves (since most of them just call the same thing even though they are for different devices on a system, there's already kind of redundancy there waiting for this change). But I want to work on something for a good while now that's not about MAME or RetroArch!!!!
Happy playing...
So it was Christmas, and finally I had time away from coding to sit and play with the MAME and RetroArch stuff i'd been coding this last year. The main thing I noticed was that a small number of MAME Software List games (that's the home computer and console part of MAME that deals with the sets of games MAME's own contributors have collected and sorted for playing) didn't seem to be working correctly: I tried to load a game in the 'floppy disk' Softlist some system has (say MSX2_flop), and it loaded the cassette version of the game, or vice versa. On some sets it got so annoying when I was 'game surfing' that it was ruining my immersive experience. We can't have that!!! When I traced back the issue I was amazed - there was a RetroArch writeup of MAME functionality a while back that took me an age to understand: https://www.libretro.com/index.php/mamemessume-cores/
“Softlists are not foolproof, two games on the same system could have the same name and different media types, for instance NES/FAMICOM/FDS Super Mario Brothers 2. smb2.zip might represent US cart version or JAP floppy disk version.”
That turned out to be a large problem with MAME, with three main issues:
1) Like it says: MAMEnames are unique to a device on a system, rather than unique system-wide
2) you can't easily tell which device the 'default' will be for a system (i.e.: what happens when you call 'famicom smb2'). Might be cassette, might be floppy, might be cart
3) if you try and specify the device for a MAMEname to fix this when you call a Softlist game e.g.: "famicom -flop1 smb2" (i.e.: load the disk version of the game into the first floppy slot), it might break other nice things that MAME has setup under the 'MAMEname-only loading' - like multi-disc loading (eg: x6800 where up to 4 disks are mounted automatically when you call a MAMEname.) And yes, you DO need that 1 at the end of the device call, because if you call '-flop' on a system that has more than one floppy, you get dumped out of MAME - nice touch!
So the solution i've coded tries not to have to call a device for a system's softlist. We don't want to have to call '-flop1', '-cass1' if we can possibly avoid it - we want to stick to the MAME Softlist dream of calling 'mame.exe system MAMEname` - particularly because that's an amazing and elegant thing..... So instead, when making one of QuickPlay's romdatas for a MAME Softlist, we look for MAMEname conflicts between all combinations of the 'original' softlists for a system (an 'original' softlist means MSX2's softlists for MSX2, not the MSX1 softlists that MSX2 will also run - MSX1 and MSX2 softlists can share MAMEnames between them without issue, its just that if there is a conflict between MSX2 and MSX1 names and you call one of the affected names on MSX2, you'll get the MSX2 game - that's fine since QuickPlay already consistently chooses an MSX1 to play its MSX1 softlist Romdatas).
So where there is a conflict in the names between two original softlists for a system, we use QuickPlay's 'overwrite params' functionality in a Romdata.dat to replace the call with a device-specific one (it calls `famicom -flop1 smb2`). If there are no MAMEname conflicts, which is most of the time, we keep things as they are and just call the 'MAMEname' and system to load a game in MAME like MAME prefers you to.
Though that sounds a bit like a bugfix, its not a bugfix for QuickPlay!!! It was a moderately-sized new feature, so i've called this QuickPlay 4.6 (not 4.5.1).
I also noticed some edge-cases which weren't working properly for one-click loading in MAME Softlists, and fixed them, like systems where the default emulator QuickPlay decided to use to run a softlist required a working knowledge of Japanese written languages to get a floppy to load (was MSX2p), or the many quirky 'cartridge-within-a-cartridge' softlsits for the NES and SNES - thanks etabeta78: http://forums.bannister.org//ubbthreads ... Post112393
Lastly, at Christmas I had time to actually work through the RetroArch non-MAME emulators for the latest RetroArch and tweaked and added emulators in QuickPlay's EFind for RetroArch as I went along. Basically, I ran up and double-checked everything against the latest RetroArch, and found some interesting things to note and fix (not all of them about QuickPlay either: do check for any text notes in the emulator config for a RetroArch system, if its not doing what you want in QuickPlay, for any info i've put there about how RetroArch's current emulation status etc...)
So now, the RetroArch, MAME and MAME-in-RetroArch emulators and functionalities in QuickPlay are bigger than ever. Just make sure MAME/RetroArch works outside of QuickPlay, go set them up in QuickPlay - don't forget to check pages on the wiki to help you: these should do that:
http://quickplay.sourceforge.net/wiki/index.php/MAME
http://quickplay.sourceforge.net/wiki/index.php/MESS
http://quickplay.sourceforge.net/wiki/i ... rchMameMod
then they'll work with all your other emulators and sets, and the world will be amazing........
Also, we've had some chat on the forums about thumbnail view in QP, and bizarrely I found existing code for enabling next/back buttons that worked fine except for a couple of tiny issues, but had been disabled. So that was easy! And for thumnbnail view i'd missed a feature that slideshow view gained ages ago: now if there's only one thumbnail or if you click to look at just one thumbnail, it will expand if it can to fit the size of the media panel
How do I use the new Softlists code if I already made a set of Softlist games?
Simplest way: just delete the softlist romdata folder and make another using the Arcade menu.
Harder way: To fix some of the other stuff I did change a few of the EFind calls, so if you care about some of those odd NES/SNES Softlists you might want to do another 'MAME Scan' to remake the Mame Efind and then do another Efind scan, choosing to 'replace all' (or otherwise work out a way of first deleting all the existing MAME home pc/console emulators so the EFind scan can replace them all again, if you don't want to 'replace all'). Then make another Softlist Romdata set using the Arcade menu.
Closing thoughts on MAME Softilsts and RetroArch
Theres a lot of sense in what the nonMAME guy says about RetroArch http://nonmame.retrogames.com/: if the MAME Emulator really is problem-free for a system and usable, why does RetroArch use something else and then also have a MAME Emulator? Some systems are solid on MAME, but its like RetroArch has to have some alternative emulator, you can tell they don't ever consider that the MAME emulator might be the defacto. By not emphasising MAME - and I appreciate there's a HUGE TON of work that would have to happen if that were ever to happen - Softlists in MAME don't work very well natively in RetroArch, so you have to use QuickPlay currently in order to get them working. If you didn't use QuickPlay, for example, trying to use Softlists atm via RetroArch command line will only work for cartridge games on cartridge-based systems without a lot of internal per-game fiddling (oh and as I discovered: that's IF the cartridge is considered the 'default' for a particular machine in MAME that is!).
Any more work possible between MAME and RetroArch would help all of us to have a great set that uses a great emulator, rather than 5 good sets using 5 good emulators, and one of the points of RetroArch should be that you no longer need a bunch of different emulators to play a bunch of different sets of games. After setting up RetroArch with everything it can be setup for, I'm not sure any of you guys might disagree, but I feel like I sold in to a dream which was partly about not having to deal with multiple emulators anymore, and ended up just spending a bunch of time creating many of the same problems I had anyway using multiple emulators, but all inside RetroArch! So I STILL have to work out , or worse guess, which emulator might play my game given emulation status and the kind of set I have and format its in, and still have to change and swap things about, and in the case of more modern emulators I found I just couldn't yet use RetroArch because of various problems. So RetroArch basically is often about the same kind of generation of emulators as MAME atm, but isn't really using MAME in an earnest way. This time I didn't want another set of emulators to add to the pile, I wanted to replace the pile. For some things I did (goodbye Project Tempest, that took a while!), but for others, not quite yet...
Future plans?
In future, I would really like the MAME games to be able to have a filepath so other emulators can be right-clicked from QuickPlay and try and load them. I realised too late on that with the way i've now done the above 'other-softlist-game-name-checking' stuff for the Softlists that this would complicate such an attempt, because they overwrite the call to an 'emulator' with one that calls a MAMEname no matter what emulator you called (the MAME emulator might call a MAMEname, but another emulator (like one of RetroArch's for instance) probably needs to call a filepath). So if in future I try to attempt "non-MAME" loading of MAME Softlists: i'd like to try incorporating the 'game name conflict" calls into the MAME Softlist Emulators in the MAME Efinds themselves (since most of them just call the same thing even though they are for different devices on a system, there's already kind of redundancy there waiting for this change). But I want to work on something for a good while now that's not about MAME or RetroArch!!!!
Happy playing...