2018-01-17

pfeMame v2.2.6

EmuCR: pfeMamepfeMame v2.2.6 is released. pfeMame is a front end for the Multiple Arcade Game Emulator (MAME) written in Python. It is cross platform (tested on Linux - Ubuntu and Windows XP). It also includes a graphical Tile View designed for MAME cabinets which allows control using joystick / gamepad. pfeMame was written by Gareth Finch and started in 2014.

Features:
- Customisable game types / categories filter for display
- Graphical image 'tile' view with joystick navigation - for dedicated MAME cabinets
- Cross platform - Linux & windows
- Python source code

pfeMame v2.2.6 Changelog:
* Added a size to the drop down options in the preferences window as under Linux some of them were not readable (Linux doesn’t size them automatically)
* Adjusted the size of the MAME version and database age text as under Linux they were wrapping (need to investigate why I have to specify a size)
* Added a proper capture for the CTFL-F to search for roms. In some situations, the existing CTRL-F hook which was based upon the menubar just wouldn’t work.
* Made the 5 second video auto-play message actually count down (5-4-3-2-1)
* Removed the check that a game had been running for more than a second before it tried updating the number of runs. It never worked correctly in Windows and was also disabled in some other instances. Now regardless of how long you let a game run, the number of runs count is incremented.
* Fixed a bug where if the mylist_temp.cfg database was deleted the application would crash as it couldn’t handle a FileNotFoundError exception. Now if the file is not found it will rebuild from scratch.
* Sorted out (finally) the layout issues with the scrolled panels on the gametypes and file paths windows. They lay out the same across Windows & Linux now and the vertical scrollbar is in the right place under Linux and also there is no longer the ugly horizontal scroll bar that was not needed.
* Ensured that the game video timer restarts at 5 seconds if you click away and back again
* Changed where the game video timer is stopped in order to prevent a pop-up error message every 5 seconds if its unable to play a video.
* When game videos finish playing, the static game image will be displayed.
* Improvement to splash screen image to make it stand out more
* Added a border to the ‘pfe’ part of the icon so that on dark desktops you can still see it
* Removed the need for the blank icon – used the wxpython built in image creator
* Fixed an alignment issue with the game icons
* General corrections to comments in the source code
* Fixed a bug that was causing the ‘Unknown file extension’ message in the messages window to be displayed as ‘known file extension’. Was trimming the 2 leading characters in the same code that removed the b’ binary indicator from subprocess calls.
* Added a ‘Play Random Game’ function and an additional icon. This will randomly select a game that is listed as existing (however it won’t know if the game is flagged as actually working or not)
* Replaced io.open for the history.dat file with the built-in ‘open’ as under python3 one is an alias for the other. Also makes all my file opens the same. Also means I can get rid of the import io statement.
* Improvements in the buildgamelist code. Better laid out, reads better. Also, slight improvement in speed on slower systems when refreshing the database.
* Limited the game refresh time display in the messages window to 2 decimal places
* Fixed a problem where games that were not listed in the catver.ini file would not be displayed. There is now a ‘Not Classified’ game category that is hard coded in. As long as its ticked, you’ll be able to see those games (and search for Not Classified).
* Changed the numbering system again. Got rid of the last digit – my revision control doesn’t need to be that complex.
* Some fixes to the checkallgames save file
* Fixed / improved a number of file open r/w code sections – was not following best python practices
* Stopped double delimiters from being displayed in the messages window when there is no output from MAME
* Moved the code that displays the number of roms, available, and in view into a function as the same code was repeated 5 times
* Changed ‘Available’ to ‘Exists’ in the statusbar and also changed ‘In View’ to ‘In Current View’
* After changing game categories, the number of roms, available etc is updated
* Stopped the game video player when the tile view is called as well as when a game is run
* Merged the two lists that were being used to auto-locate all files/folders in the folderpaths window and cleaned up some unnecessary local variable passing and shadowing.
* Tileview code clean-ups, better definition of exception clauses, cleaned up some variable name shadowing
* Tileview Bug fix: System support was totally broken. Forgot to hardcode the system folder to roms folder (was still using old systems folder). Was likely causing crash on new installs.
* Rungame general code improvements and tidy ups
* Re-wrote the enginetouse code in rungame.py as the original version was a quick hack.
* Visual Pinball tables had disappeared from the games list due to the same problem that prevented Not Classified game types. Had to add ‘Pinball’ to the games list (you need to make sure its checked).
* Found that the pfeMAME.ico icon file was possibly not properly formed. While trying to get WindowsXP support working with wxpython phoenix I found that the current icon didn’t work. Comparing to a previous icon size they were different. Have reverted to the previous one (looks the same to me).
* Got pfeMAME working on WindowsXP with wxpython phoenix. You have to use python 3.4. Other than that, everything seems to work for now. This may change with future wxpython releases as I don’t know how long they will support older python versions.
* System short names were no longer being displayed. Seems that it happened way back when I moved to python 3.x but I never noticed it.
* Added additional game engine support (SM2/3 & Visual Pinball) to TileView. You will need a mouse!!
* When database refresh is performed and errors are found in the dat files, a single line for each dat file is now created with the quantity of errors found, rather than a separate error message in the messages window for each error found.
* Replaced the configparser based code in the gametypes file and the main pfemame.py with my own simpler version – is a lot faster to open the window now and the code is cleaner. Some memory use improvements also.
* Removed the global variables gamecatName and gamecatCat and passed them in the functions instead. This frees up memory and reduces unnecessary code.
* Replaced the ScrolledMessageDialog that was being used to display the logfile with my own window. Don't know why but the built in one was taking 6 seconds to get the data into the window and display it. Also used the same for the controls window as I like mine better.
* More code refactoring in filepath.py – man I did a few things the hard way originally.
* Some code cleanups (mostly nested Ifs) in preferences.py
* Fixed a problem that prevented systems roms from running if their folder name ends in _cass, _flop, _cart (You could still run them if you right clicked and selected to override the HASH support).
* Lots of code clean-ups in Tileview
* Tileview now starts up a lot faster
* Fixed another issue with the way that systems short names work. Looking at alll HASH files that currently exist, there are many different folder suffixes that I would need to support (e.g. CASS, FLOP, etc). When building the games database, if a rom is identified as a system, the code now looks for any folder starting with the system name (e.g. spectrum) and then searches through that folder (e.g. spectrum_cass) adding all files it finds. The problem with this method is that it doesn't solve the naming convention issue (or lack thereof) that exists in MAME at the moment – for example, in the case of the archimedes systems, there is just one hash file called archimedes.xml that covers all of the different system types. The ONLY way I have found to manage this would be so slow that it takes about 15 minutes to build the games database on a very fast PC – just not practical. For now you can get around it by creating an alias to the folder (rather than duplicating each different name that you need.
* Message window and log file will now record if a system has been run using the short name or long name. Will help with debug.
* Fixed a problem that I think crept in with the move to wxPython Phoenix whereby the tile view wasn’t exactly full screen on some systems.
* Seems the about box was never pointing to the correct icon file.
* Additional exception tracking if file paths are incorrect for various files that are being opened.
* The messages box timestamp was formatted to gmtime, not local. Oops.
* Added a check that a MAME rom actually exists before trying to run it.
* Tidied up the backup & restore code
* Re-wrote the right-click context menu for the games list. It also now displays the help text in the status bar.
* pfeMAME icon was garbage in Linux – top level image was compressed which is not supported.
* A large number of general code cleanups and code refactorings
* Have switched to using the built in function ‘shelve’ to store the cached version of the games list. I was previously storing as ASCII text using file read and write functions as well as the necessary code overhead. This is way more simple and I never have to touch it again.
* Big update to ‘check all games’. You can now see the scroll bar as each game is checked using -verifyroms. All games in your library with an ‘exists’ flag are checked so if you have a very large library then expect this process to take a very long time. Also added some color to the output window.

EmuCR: pfeMame
EmuCR: pfeMame

Download: pfeMame v2.2.6 x64
Source: Here

0 Comments

Post a Comment