{"id":54281,"date":"2018-01-17T17:04:01","date_gmt":"2018-01-17T16:04:01","guid":{"rendered":"http:\/\/www.emu-france.com\/?p=54281"},"modified":"2018-01-17T17:04:01","modified_gmt":"2018-01-17T16:04:01","slug":"mame-support-files-pfemame-v2-2-6","status":"publish","type":"post","link":"https:\/\/www.emu-france.com\/?p=54281","title":{"rendered":"[MAME Support Files] pfeMame v2.2.6"},"content":{"rendered":"<p>pfeMame (\u00e9crit par Gareth Finch) est un frontend pour MAME, \u00e9crit en Python. Il est multiplateforme (test\u00e9 sur Linux &#8211; Ubuntu et Windows). Il comprend \u00e9galement une interface graphique destin\u00e9e aux MameCab qui permet le contr\u00f4le \u00e0 l&rsquo;aide de joystick \/ manette.<\/p>\n<p>&nbsp;<\/p>\n<p><a href=\"https:\/\/www.emu-france.com\/wp-content\/uploads\/2014\/06\/pfemame_main.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-30703\" src=\"https:\/\/www.emu-france.com\/wp-content\/uploads\/2014\/06\/pfemame_main-1024x838.jpg\" alt=\"pfemame_main\" width=\"500\" height=\"409\" srcset=\"https:\/\/www.emu-france.com\/wp-content\/uploads\/2014\/06\/pfemame_main-1024x838.jpg 1024w, https:\/\/www.emu-france.com\/wp-content\/uploads\/2014\/06\/pfemame_main-300x245.jpg 300w, https:\/\/www.emu-france.com\/wp-content\/uploads\/2014\/06\/pfemame_main.jpg 1026w\" sizes=\"auto, (max-width: 500px) 100vw, 500px\" \/><\/a><\/p>\n<p>&nbsp;<br \/>\n<em>\u2022 Added a size to the drop down options in the preferences window as under Linux some of them were not readable (Linux doesn\u2019t size them automatically)<br \/>\n\u2022 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)<br \/>\n\u2022 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\u2019t work.<br \/>\n\u2022 Made the 5 second video auto-play message actually count down (5-4-3-2-1)<br \/>\n\u2022 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.<br \/>\n\u2022 Fixed a bug where if the mylist_temp.cfg database was deleted the application would crash as it couldn\u2019t handle a FileNotFoundError exception. Now if the file is not found it will rebuild from scratch.<br \/>\n\u2022 Sorted out (finally) the layout issues with the scrolled panels on the gametypes and file paths windows. They lay out the same across Windows &#038; 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.<br \/>\n\u2022 Ensured that the game video timer restarts at 5 seconds if you click away and back again<br \/>\n\u2022 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.<br \/>\n\u2022 When game videos finish playing, the static game image will be displayed.<br \/>\n\u2022 Improvement to splash screen image to make it stand out more<br \/>\n\u2022 Added a border to the \u2018pfe\u2019 part of the icon so that on dark desktops you can still see it<br \/>\n\u2022 Removed the need for the blank icon \u2013 used the wxpython built in image creator<br \/>\n\u2022 Fixed an alignment issue with the game icons<br \/>\n\u2022 General corrections to comments in the source code<br \/>\n\u2022 Fixed a bug that was causing the \u2018Unknown file extension\u2019 message in the messages window to be displayed as \u2018known file extension\u2019. Was trimming the 2 leading characters in the same code that removed the b\u2019 binary indicator from subprocess calls.<br \/>\n\u2022 Added a \u2018Play Random Game\u2019 function and an additional icon. This will randomly select a game that is listed as existing (however it won\u2019t know if the game is flagged as actually working or not)<br \/>\n\u2022 Replaced io.open for the history.dat file with the built-in \u2018open\u2019 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.<br \/>\n\u2022 Improvements in the buildgamelist code. Better laid out, reads better. Also, slight improvement in speed on slower systems when refreshing the database.<br \/>\n\u2022 Limited the game refresh time display in the messages window to 2 decimal places<br \/>\n\u2022 Fixed a problem where games that were not listed in the catver.ini file would not be displayed. There is now a \u2018Not Classified\u2019 game category that is hard coded in. As long as its ticked, you\u2019ll be able to see those games (and search for Not Classified).<br \/>\n\u2022 Changed the numbering system again. Got rid of the last digit \u2013 my revision control doesn\u2019t need to be that complex.<br \/>\n\u2022 Some fixes to the checkallgames save file<br \/>\n\u2022 Fixed \/ improved a number of file open r\/w code sections \u2013 was not following best python practices<br \/>\n\u2022 Stopped double delimiters from being displayed in the messages window when there is no output from MAME<br \/>\n\u2022 Moved the code that displays the number of roms, available, and in view into a function as the same code was repeated 5 times<br \/>\n\u2022 Changed \u2018Available\u2019 to \u2018Exists\u2019 in the statusbar and also changed \u2018In View\u2019 to \u2018In Current View\u2019<br \/>\n\u2022 After changing game categories, the number of roms, available etc is updated<br \/>\n\u2022 Stopped the game video player when the tile view is called as well as when a game is run<br \/>\n\u2022 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.<br \/>\n\u2022 Tileview code clean-ups, better definition of exception clauses, cleaned up some variable name shadowing<br \/>\n\u2022 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.<br \/>\n\u2022 Rungame general code improvements and tidy ups<br \/>\n\u2022 Re-wrote the enginetouse code in rungame.py as the original version was a quick hack.<br \/>\n\u2022 Visual Pinball tables had disappeared from the games list due to the same problem that prevented Not Classified game types. Had to add \u2018Pinball\u2019 to the games list (you need to make sure its checked).<br \/>\n\u2022 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\u2019t work. Comparing to a previous icon size they were different. Have reverted to the previous one (looks the same to me).<br \/>\n\u2022 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\u2019t know how long they will support older python versions.<br \/>\n\u2022 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.<br \/>\n\u2022 Added additional game engine support (SM2\/3 &#038; Visual Pinball) to TileView. You will need a mouse!!<br \/>\n\u2022 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.<br \/>\n\u2022 Replaced the configparser based code in the gametypes file and the main pfemame.py with my own simpler version \u2013 is a lot faster to open the window now and the code is cleaner. Some memory use improvements also.<br \/>\n\u2022 Removed the global variables gamecatName and gamecatCat and passed them in the functions instead. This frees up memory and reduces unnecessary code.<br \/>\n\u2022 Replaced the ScrolledMessageDialog that was being used to display the logfile with my own window. Don&rsquo;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.<br \/>\n\u2022 More code refactoring in filepath.py \u2013 man I did a few things the hard way originally.<br \/>\n\u2022 Some code cleanups (mostly nested Ifs) in preferences.py<br \/>\n\u2022 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).<br \/>\n\u2022 Lots of code clean-ups in Tileview<br \/>\n\u2022 Tileview now starts up a lot faster<br \/>\n\u2022 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&rsquo;t solve the naming convention issue (or lack thereof) that exists in MAME at the moment \u2013 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 \u2013 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.<br \/>\n\u2022 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.<br \/>\n\u2022 Fixed a problem that I think crept in with the move to wxPython Phoenix whereby the tile view wasn\u2019t exactly full screen on some systems.<br \/>\n\u2022 Seems the about box was never pointing to the correct icon file.<br \/>\n\u2022 Additional exception tracking if file paths are incorrect for various files that are being opened.<br \/>\n\u2022 The messages box timestamp was formatted to gmtime, not local. Oops.<br \/>\n\u2022 Added a check that a MAME rom actually exists before trying to run it.<br \/>\n\u2022 Tidied up the backup &#038; restore code<br \/>\n\u2022 Re-wrote the right-click context menu for the games list. It also now displays the help text in the status bar.<br \/>\n\u2022 pfeMAME icon was garbage in Linux \u2013 top level image was compressed which is not supported.<br \/>\n\u2022 A large number of general code cleanups and code refactorings<br \/>\n\u2022 Have switched to using the built in function \u2018shelve\u2019 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.<br \/>\n\u2022 Big update to \u2018check all games\u2019. You can now see the scroll bar as each game is checked using -verifyroms. All games in your library with an \u2018exists\u2019 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.<br \/>\n<\/em><\/p>\n<p>&nbsp;<br \/>\n<p class=\"p_telecharger_icone_zip\"><a class=\"telecharger_icone_zip\" href=\"https:\/\/www.emu-france.com\/?wpfb_dl=6557\" title=\"Download pfeMame (32 bits)\">T\u00e9l\u00e9charger pfeMame (32 bits) v3.3.5 (105 Mo)<\/a><\/p><p class=\"p_telecharger_icone_zip\"><a class=\"telecharger_icone_zip\" href=\"https:\/\/www.emu-france.com\/?wpfb_dl=7268\" title=\"Download pfeMame (64 bits)\">T\u00e9l\u00e9charger pfeMame (64 bits) v1.008 (12.5 Mo)<\/a><\/p><\/p>\n<p class=\"p_site_officiel\"><a class=\"site_officiel\" href=\"http:\/\/sourceforge.net\/projects\/pfemame\/\" target=\"_blank\">Site Officiel<\/a><\/p>\n<p class=\"p_en_savoir_plus\"><a class=\"en_savoir_plus\" href=\"https:\/\/www.emu-france.com\/utilitaires\/17-mame-support-files\/263-frontends\/\">En savoir plus&#8230;<\/a><\/p>\n<div class=\"fcbkbttn_buttons_block\" id=\"fcbkbttn_left\"><div class=\"fb-share-button  \" data-href=\"https:\/\/www.emu-france.com\/?p=54281\" data-type=\"button_count\" data-size=\"small\"><\/div><\/div>","protected":false},"excerpt":{"rendered":"<p>pfeMame (\u00e9crit par Gareth Finch) est un frontend pour MAME, \u00e9crit en Python. Il est multiplateforme (test\u00e9 sur Linux &#8211; Ubuntu et Windows). Il comprend \u00e9galement une interface graphique destin\u00e9e aux MameCab qui permet le contr\u00f4le \u00e0 l&rsquo;aide de joystick &#8230;<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[1],"tags":[],"class_list":["post-54281","post","type-post","status-publish","format-standard","hentry","category-par-defaut","uentry","postonpage-1","odd","post-author-Jets"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/pKi2R-e7v","jetpack_likes_enabled":false,"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.emu-france.com\/index.php?rest_route=\/wp\/v2\/posts\/54281","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.emu-france.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.emu-france.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.emu-france.com\/index.php?rest_route=\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.emu-france.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=54281"}],"version-history":[{"count":1,"href":"https:\/\/www.emu-france.com\/index.php?rest_route=\/wp\/v2\/posts\/54281\/revisions"}],"predecessor-version":[{"id":54282,"href":"https:\/\/www.emu-france.com\/index.php?rest_route=\/wp\/v2\/posts\/54281\/revisions\/54282"}],"wp:attachment":[{"href":"https:\/\/www.emu-france.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=54281"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.emu-france.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=54281"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.emu-france.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=54281"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}