{ "info": { "author": "Roman Dobosz", "author_email": "gryf73@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Environment :: Console", "Intended Audience :: End Users/Desktop", "License :: OSI Approved :: BSD License", "Operating System :: OS Independent", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.4", "Topic :: Games/Entertainment", "Topic :: System :: Emulators" ], "description": "==============\nFS-UAE Wrapper\n==============\n\n.. image:: https://travis-ci.org/gryf/fs-uae-wrapper.svg?branch=master\n :target: https://travis-ci.org/gryf/fs-uae-wrapper\n\n.. image:: https://img.shields.io/pypi/v/fs-uae-wrapper.svg\n :target: https://pypi.python.org/pypi/fs-uae-wrapper\n\nThis little utility is a wrapper on great FS-UAE_ emulator, to perform some\nactions, like uncompressing archived files (CD ROMs images, filesystems),\nlaunch the emulator and archive emulator save state.\n\nAs an example, if there is a collection of CD\u00b3\u00b2 game files and you want to\nprovide configuration for each game, but want to keep ISO images with\ncorresponding files in archive (due to size of those images) than FS-UAE\nWrapper is a way to achieve this.\n\nThe reason behind writing this wrapper is a need for having a portable set of\ngames/systems where there would be a way for storing the state of either entire\nfilesystem or just console state (in case of CD\u00b3\u00b2) and keeping size small,\npreferably in a archive file vs a bunch of files.\n\nRequirements\n============\n\n- Python (2 or 3)\n- `fs-uae`_ (obviously :)\n\nFs-uae-wrapper supports several types of archives:\n\n- `7z`_\n- `lha`_\n- `lzx`_ - decompress only\n- `rar`_ - if only ``unrar`` is available, than only decompression is supported\n- `tar`_, also compressed with:\n\n - bzip2\n - gzip\n - xz\n\n- `zip`_\n\nAll of those formats should have corresponding software available in the\nsystem, otherwise archive extraction/compression will fail.\n\nInstallation\n============\n\nFS-UAE Wrapper is available on `CheeseShop`_ (or python package index if you\nwill). To install it, you can simply invoke (preferably in ``virtualenv``) a\ncommand:\n\n.. code:: shell-session\n\n $ pip install fs-uae-wrapper\n\nNote, that if ``virtualenv`` was used, there is no need for activating it every\ntime, since if invoke wrapper like this:\n\n.. code:: shell-session\n\n $ /path/to/virtualenv/bin/fs-uae-wrapper\n\nyou should be able run the wrapper properly. *Tested only on Linux :)*.\n\nUsage\n=====\n\nAfter installation you should be able to access new command ``fs-uae-wrapper``\n(or use the full path to the ``virtualenv`` like on the section above), and it's\ninvocation is identical like ``fs-uae`` binary:\n\n.. code:: shell-session\n\n $ fs-uae-wrapper [fs-uae-config-file] [parameters]\n\nThere is special option for passing wrapping module, which might be placed\ndirectly in fs-uae configuration or passed as an option:\n\n.. code:: ini\n\n [config]\n # ...\n wrapper = cd32\n # ...\n\nor\n\n.. code:: shell-session\n\n $ fs-uae-wrapper --wrapper=cd32\n\nIn this case there would several things happen. First, ``Config.fs-uae`` would\nbe searched, read and there would be ``wrapper`` option searched. If found,\nspecific module will be loaded and depending on the module, there would be\nperformed specific tasks before ``fs-uae`` is launched and after it.\n\nAssumption is, that configuration file are written in portable way, so the are\nsaved as `relative configuration file`_ (hence the name ``Config.fs-uae``),\neven if the are named differently. If certain wrapper is specified, it will\ncreate temporary directory and place the configuration file there as\n``Config.fs-uae``.\n\nIf no ``wrapper`` option would be passed either as an config option or\ncommand line argument, all command line options will be passed to the fs-uae\nexecutable as-is.\n\nNote, that you can also pass all *wrapper* options via commandline in the very\nsame way as you can pass config options to `fs-uae`, so you don't have to\nmodify original configuration if you don't want to.\n\nThere is also new config variable introduced: ``$WRAPPER`` which have the same\nrole as ``$CONFIG``, but apply for copied config. For instance - in module\narchive there are filesystem extracted to new location - to access this\nfilesystem relatively to the copied configuration file it is enough to provide\na config option:\n\n.. code:: ini\n\n [config]\n wrapper = archive\n # ...\n\n hard_drive_0 = $WRAPPER/my_hardrive\n\nwhich means, that we are expecting to have system files on ``my_hardrive`` in\ndirectory, where configuration will be copied.\n\nModules\n=======\n\nCurrently, couple of wrapper modules are available:\n\n- plain\n- cd32\n- archive\n- savestate\n\nplain\n-----\n\nOptions used:\n\n* None\n\n``Plain`` module is kind of dummy or failsafe if you will, since all it do is\nrun ``fs-uae`` with provided configuration and command line options. It will be\nchosen in case when there is no ``wrapper`` option provided neither via the\nconfiguration file nor command line parameter.\n\ncd32\n----\n\nOptions used:\n\n* ``wrapper`` (required) with ``cd32`` as an value\n* ``wrapper_archive`` (required) path to the archive with CD32 iso/cue/wav\n* ``wrapper_archiver`` (conditionally required) archiver to use for storage\n save state\n* ``wrapper_gui_msg`` (optional) if set to \"1\", will display a graphical\n message during extracting files\n* ``wrapper_save_state`` (optional) if set to \"1\", will load/archive save state\n directory, defined as ``$WRAPPER/[save-state-dir-name]`` using provided\n ``wrapper_archiver`` archiver. If this option is enabled,\n ``wrapper_archiver`` will be required.\n\nModule ``cd32`` is used for running ``fs-uae`` with compressed CD images. For\nbetter understanding how it works, let's go through solid example. Here is an\nfragment of configuration file is saved as ``ChaosEngine.fs-uae``:\n\n.. code:: ini\n\n [config]\n wrapper = cd32\n wrapper_archive = ChaosEngine.7z\n wrapper_archiver = 7z\n wrapper_gui_msg = 1\n\n amiga_model = CD32\n title = The Chaos Engine CD32\n\n cdrom_drive_0 = Chaos Engine, The (1994)(Renegade)(M4)[!][CDD3445].cue\n\n save_states_dir = $WRAPPER/fs-uae-save/\n\n joystick_port_1_mode = cd32 gamepad\n platform = cd32\n # ...\n\nCommand line invocation of the wrapper would be as follows:\n\n.. code:: shell-session\n\n $ fs-uae-wrapper ChaosEngine.fs-uae\n\nNow, there several thing will happen:\n\n- Config file will be read, and wrapper module will be found\n- New temporary directory will be created\n- Archive with game assets will be extracted in that directory\n- Configuration file will be copied into that directory, and renamed to\n ``Config.fs-uae``\n- If ``wrapper_save_state`` is set, and there is saved state archive, it also\n would be extracted there\n- ``fs-uae`` will be launched inside that directory\n\nNext, after ``fs-uae`` quit, there will:\n\n- Optionally create archive containing save state with name like the\n configuration file with additional ``_save`` suffix. In this example it would\n be ``ChaosEngine_save.7z``.\n- Wipe out temporary directory\n\narchive\n-------\n\nOptions used:\n\n* ``wrapper`` (required) with ``archive`` as an value\n* ``wrapper_archive`` (required) path to the archive with assets (usually means\n whole system directories, floppies or hard disk images)\n* ``wrapper_archiver`` (conditionally required) archiver to use for storage\n save state\n* ``wrapper_gui_msg`` (optional) if set to \"1\", will display a graphical\n message during extracting files\n* ``wrapper_persist_data`` (optional) if set to \"1\", will compress (possibly\n changed) data, replacing original archive\n* ``wrapper_save_state`` (optional) if set to \"1\", will archive save state\n directory, defined as ``$WRAPPER/[save-state-dir-name]`` using provided\n ``wrapper_archiver`` archiver. If this option is enabled,\n ``wrapper_archiver`` will be required.\n\nThis module is quite useful in two use cases. First is a usual work with\nWorkbench, where there is a need to keep changes of filesystem. Second is the\nopposite - if there is a need to test some software, but not necessary keep it\nin a Workbench, than it will act as a temporary copy of the system, so that\nnext time fs-uae will be run, there will be no files of tested software\ncluttering around.\n\nExample configuration:\n\n.. code:: ini\n\n [config]\n wrapper = archive\n wrapper_archive = Workbench_3.1.tar.bz2\n wrapper_archiver = lha\n wrapper_gui_msg = 1\n wrapper_persist_data = 1\n wrapper_save_state = 1\n # ...\n\nAnd execution is as usual:\n\n.. code:: shell-session\n\n $ fs-uae-wrapper Workbench.fs-uae\n\nThis module will do several steps (similar as with ``cd32`` wrapper):\n\n- create temporary directory\n- extract provided in configuration archive\n- extract save state (if ``wrapper_save_state`` is set to ``1`` and archive\n with save exists)\n- copy configuration under name ``Config.fs-uae``\n- run the fs-uae emulator\n- optionally create archive with save state (if save state directory place is\n *not* a global one)\n- optionally create new archive under the same name as the original one and\n replace it with original one.\n\nsavestate\n---------\n\nOptions used:\n\n* ``wrapper`` (required) with ``archive`` as an value\n* ``wrapper_archiver`` (required) archiver to use for storage save state\n\nThis module is primarily used to run emulator with read only media attached\n(like images of floppies or uncompressed CD-ROMs) and its purpose is to\npreserve save state which will be created as an archive alongside with original\nconfiguration file in selected archive format. Note, that there is required to\nprovide ``wrapper_archiver``, since option ``wrapper_save_state`` is implicitly\nset to value ``1`` in this module.\n\nExample configuration:\n\n.. code:: ini\n\n [config]\n wrapper = savestate\n wrapper_archiver = 7z\n # ...\n\nAnd execution is as usual:\n\n.. code:: shell-session\n\n $ fs-uae-wrapper Sanity-Arte.fs-uae\n\nThe steps would be as follows:\n\n- create temporary directory\n- extract save state (if ``wrapper_save_state`` is set to ``1`` and archive\n with save exists)\n- copy configuration under name ``Config.fs-uae``\n- run the fs-uae emulator\n- optionally create archive with save state (if save state directory place is\n *not* a global one)\n\nLicense\n=======\n\nThis work is licensed on 3-clause BSD license. See LICENSE file for details.\n\n.. _fs-uae: https://fs-uae.net/\n.. _relative configuration file: https://fs-uae.net/configuration-files\n.. _rar: http://www.rarlab.com/rar_add.htm\n.. _7z: http://p7zip.sourceforge.net/\n.. _lha: http://lha.sourceforge.jp\n.. _lzx: http://aminet.net/package/misc/unix/unlzx.c.readme\n.. _tar: https://www.gnu.org/software/tar/\n.. _zip: http://www.info-zip.org\n.. _CheeseShop: https://pypi.python.org/pypi/fs-/fs-uae-wrapperuae-wrapper\n\n\n", "description_content_type": null, "docs_url": null, "download_url": "https://github.com/gryf/fs-uae-wrapper/archive/master.zip", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/gryf/fs-uea-wrapper", "keywords": "uae,fs-uae,amiga,emulator,wrapper", "license": "", "maintainer": "", "maintainer_email": "", "name": "fs-uae-wrapper", "package_url": "https://pypi.org/project/fs-uae-wrapper/", "platform": "", "project_url": "https://pypi.org/project/fs-uae-wrapper/", "project_urls": { "Download": "https://github.com/gryf/fs-uae-wrapper/archive/master.zip", "Homepage": "https://github.com/gryf/fs-uea-wrapper" }, "release_url": "https://pypi.org/project/fs-uae-wrapper/0.8.1/", "requires_dist": null, "requires_python": "", "summary": "Automate archives and state for fs-uae", "version": "0.8.1" }, "last_serial": 2960271, "releases": { "0.2": [], "0.3": [ { "comment_text": "", "digests": { "md5": "573fce6bdd1c2769586ba72631e1e1e8", "sha256": "27aa5e7bb118bfe5419b6baf86be858efc6beeb19040c6bf1d5091c801b4fc97" }, "downloads": -1, "filename": "fs-uae-wrapper-0.3.tar.gz", "has_sig": false, "md5_digest": "573fce6bdd1c2769586ba72631e1e1e8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10659, "upload_time": "2017-01-02T14:51:22", "url": "https://files.pythonhosted.org/packages/df/6c/36faa42862733e89281abab66446e1b87dd431e1ba8c921ca80019fc30e4/fs-uae-wrapper-0.3.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "a9d2dc1c6dbabbffd5c7059324e7737c", "sha256": "6c37d09ae3bd26169df1e0263ca5efb3d345d5810c0564f966aa1336ca7f5654" }, "downloads": -1, "filename": "fs-uae-wrapper-0.3.1.tar.gz", "has_sig": false, "md5_digest": "a9d2dc1c6dbabbffd5c7059324e7737c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10667, "upload_time": "2017-01-02T15:06:47", "url": "https://files.pythonhosted.org/packages/e3/54/ce6949a924d49fe2bbdd882ac82e95b71bad84c245aef4666b02cc231be9/fs-uae-wrapper-0.3.1.tar.gz" } ], "0.5": [ { "comment_text": "", "digests": { "md5": "d91af06405199b64f24c6a005b978982", "sha256": "0582d5f9f6782cb5af86579cbba5499970838c292ce8ba30e11bd830df6b6f57" }, "downloads": -1, "filename": "fs-uae-wrapper-0.5.tar.gz", "has_sig": false, "md5_digest": "d91af06405199b64f24c6a005b978982", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11322, "upload_time": "2017-01-03T19:07:11", "url": "https://files.pythonhosted.org/packages/36/37/84f731980d370eec34a22d96685360d7a7894161271784df354ea4df407b/fs-uae-wrapper-0.5.tar.gz" } ], "0.6": [ { "comment_text": "", "digests": { "md5": "1b0c322987f43b189bd5ae2ba884c522", "sha256": "6b8b8d166607c38b02fd408f0d812747ea16544d4647882aff4d47a73367c0ef" }, "downloads": -1, "filename": "fs-uae-wrapper-0.6.tar.gz", "has_sig": false, "md5_digest": "1b0c322987f43b189bd5ae2ba884c522", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11340, "upload_time": "2017-01-06T15:59:24", "url": "https://files.pythonhosted.org/packages/04/c0/10407d9975efec30c16ca8fb24b2b5dcb0fe05bb8f53d31e946236492958/fs-uae-wrapper-0.6.tar.gz" } ], "0.7": [ { "comment_text": "", "digests": { "md5": "53c5adf3f35007aa9d760e4c0eafa475", "sha256": "aeb05e97136cc6cb46f1fda677c4c64da3deb125cdccb7eaef1dc3d4af4240a7" }, "downloads": -1, "filename": "fs-uae-wrapper-0.7.tar.gz", "has_sig": false, "md5_digest": "53c5adf3f35007aa9d760e4c0eafa475", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12898, "upload_time": "2017-01-07T08:46:52", "url": "https://files.pythonhosted.org/packages/cc/66/e2ae4ec06979e53448fa914fe9e778cc9a4bafc0391323c1022612bce37e/fs-uae-wrapper-0.7.tar.gz" } ], "0.7.1": [ { "comment_text": "", "digests": { "md5": "e374c648b292904721281a4f4a5917c8", "sha256": "91521b290955db03395573a4f18227e4e1fb33a9cff44a0a2ef48e5bd32faa41" }, "downloads": -1, "filename": "fs-uae-wrapper-0.7.1.tar.gz", "has_sig": false, "md5_digest": "e374c648b292904721281a4f4a5917c8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12955, "upload_time": "2017-01-07T08:55:33", "url": "https://files.pythonhosted.org/packages/67/b1/00f0a5f1a9c7234ca4d2fa7957d80735a36d8d7ae7e272780e0327e1628c/fs-uae-wrapper-0.7.1.tar.gz" } ], "0.8": [ { "comment_text": "", "digests": { "md5": "96bd72930a188ebb4c8e002ee0c11ece", "sha256": "541107bbee2a755e6803b709209320a2674bd348c8734305aabd595eeac449bd" }, "downloads": -1, "filename": "fs-uae-wrapper-0.8.tar.gz", "has_sig": false, "md5_digest": "96bd72930a188ebb4c8e002ee0c11ece", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13437, "upload_time": "2017-01-08T18:41:26", "url": "https://files.pythonhosted.org/packages/6b/ae/892829d2e60314b79a403737c0c6f060cafe231543dffdc5981588f54b21/fs-uae-wrapper-0.8.tar.gz" } ], "0.8.1": [ { "comment_text": "", "digests": { "md5": "780600859305e8fc5372bd91d2193064", "sha256": "0b3a46bab0fa9c9e9cb5beec12c3ed9eaaf54d47d07a0bbc52dba17b35229600" }, "downloads": -1, "filename": "fs_uae_wrapper-0.8.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "780600859305e8fc5372bd91d2193064", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 21530, "upload_time": "2017-06-19T18:31:28", "url": "https://files.pythonhosted.org/packages/26/d9/c89e06e6ec2c91b89fd66acf95e0c69a98a7340e0111deec5993b6422e62/fs_uae_wrapper-0.8.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3a2d174742ccefc2500fa9efa978e7a7", "sha256": "8dfe60ab799068c533c8f127f0ed29e454782766671dac113b4139e25d874535" }, "downloads": -1, "filename": "fs-uae-wrapper-0.8.1.tar.gz", "has_sig": false, "md5_digest": "3a2d174742ccefc2500fa9efa978e7a7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13530, "upload_time": "2017-06-19T18:31:30", "url": "https://files.pythonhosted.org/packages/7f/b6/2a20ac3fb6911d378672ec5542248fd8d6ca1730d6c5e8e1cdaabfa5f0b4/fs-uae-wrapper-0.8.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "780600859305e8fc5372bd91d2193064", "sha256": "0b3a46bab0fa9c9e9cb5beec12c3ed9eaaf54d47d07a0bbc52dba17b35229600" }, "downloads": -1, "filename": "fs_uae_wrapper-0.8.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "780600859305e8fc5372bd91d2193064", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 21530, "upload_time": "2017-06-19T18:31:28", "url": "https://files.pythonhosted.org/packages/26/d9/c89e06e6ec2c91b89fd66acf95e0c69a98a7340e0111deec5993b6422e62/fs_uae_wrapper-0.8.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3a2d174742ccefc2500fa9efa978e7a7", "sha256": "8dfe60ab799068c533c8f127f0ed29e454782766671dac113b4139e25d874535" }, "downloads": -1, "filename": "fs-uae-wrapper-0.8.1.tar.gz", "has_sig": false, "md5_digest": "3a2d174742ccefc2500fa9efa978e7a7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13530, "upload_time": "2017-06-19T18:31:30", "url": "https://files.pythonhosted.org/packages/7f/b6/2a20ac3fb6911d378672ec5542248fd8d6ca1730d6c5e8e1cdaabfa5f0b4/fs-uae-wrapper-0.8.1.tar.gz" } ] }