{ "info": { "author": "leoetlino", "author_email": "leo@leolam.fr", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: GNU General Public License v2 or later (GPLv2+)", "Operating System :: OS Independent", "Programming Language :: Python :: 3 :: Only" ], "description": "# botwfstools\n\nTools for exploring and editing Breath of the Wild's ROM\n\n## Requirements\n* Python 3.6+\n* [fusepy](https://github.com/fusepy/fusepy): download and install 3.0.0 **from GitHub**\n * To do this, just run: `pip install https://github.com/fusepy/fusepy/archive/master.zip` (use `py -3 -m pip` rather than just `pip` if you're on Windows)\n* [WinFsp](http://www.secfs.net/winfsp/download/) if you're on Windows\n\n## Quick usage\n\nMake sure you've got all of the requirements listed above, then run `pip install botwfstools`.\n\nThen run:\n\n botw-edit --content-view ... --patch-dir ... --work-dir ...\n --target {wiiu,switch}\n PATH_TO_GAME_DUMP\n\n**PATH_TO_GAME_DUMP** is a path to Breath of the Wild content files,\nsuch that PATH_TO_GAME_DUMP/System/Version.txt exists.\n\nThe **content view** is where the content files will be mounted,\nwith all archives shown as directories.\n\nAny files you edit will be saved into the **work directory** to avoid clobbering your game dump.\n\nWhen you type patch, the tool automatically repacks all of the modified files and fixes the RSTB.\nModified files, repacked archives and the updated RSTB are put into the **patch directory**.\nThis directory contains files that can be used on console with LayeredFS for example.\n\nThe **patched view** is the result of applying the patches to the game dump.\nIt's what the game would actually see on console with LayeredFS. This is useful for emulators.\nIf this is something you want to use, add `--patched-view `\nto the command line. You can omit the patch dir if seeing the patched archives is not useful to you.\n\nMake sure that the work directory exists. However on Windows please ensure the content view\nand patched view directories do *not* exist.\n\n## botw-overlayfs\n\nAllows overlaying several game content directories and presenting a single merged view.\n\n botw-overlayfs CONTENT_DIRS TARGET_MOUNT_DIR\n\nPass as many content directories (layers) as required.\nDirectories take precedence over the ones on their left.\n\nBy default, the view is read-only. If you pass `--workdir` then any files you modify or create\nin the view will be transparently saved to the work directory. Useful for modifying game files\nwithout trashing the original files and without having to keep large backups.\n\nUsage example:\n\n botw-overlayfs botw/base/ botw/update/ botw/merged/\n\nThen you can access `botw/merged/System/Version.txt` and have it show 1.5.0.\n\n## botw-contentfs\n\nA tool to make game content extremely easy to access and modify.\n\nFiles that are in archives can be read and written to\n*without having to unpack/repack an archive ever*.\n\n botw-contentfs CONTENT_DIR TARGET_MOUNT_DIR\n\nBy default, the view is read-only. If you pass `--workdir` then any files you modify or create\nin the view will be transparently saved to the work directory. Extremely useful when used\nin conjunction with the patcher (see below) for effortlessly patching game files.\n\nUsage example:\n\n botw-contentfs botw/merged/ botw/content/ --workdir botw/mod-files/\n\nYou can now access files that are in SARCs directly! Example: `botw/content/Pack/Bootup.pack/Actor/GeneralParamList/Dummy.bgparamlist`\n\n## botw-patcher\n\nConverts an extracted content patch directory into a loadable content layer.\n\nThis tool will repack any extracted archives and update the file sizes\nin the Resource Size Table automatically.\n\n patcher ORIGINAL_CONTENT_DIR MOD_DIR TARGET_DIR --target {wiiu,switch}\n [--aoc_dir ORIGINAL_AOC_DIR --aoc_patch_dir AOC_MOD_DIR --aoc_target_dir AOC_TARGET_DIR]\n\nUsage examples:\n\n patcher botw/merged/ botw/mod-files/ botw/patched-files/\n\n\tpatcher botw/merged/ botw/mod/content/ botw/patched/content/ --target switch\n\t\t\t --aoc_dir botw/aoc/ --aoc_patch_dir botw/mod/aoc/ --aoc_target_dir botw/patched/aoc/\n\nThe patched files can be used on console or with botw-overlayfs.\n\n## botw-edit\n\nA convenience wrapper that combines contentfs, overlayfs and patcher.\n\n botw-edit --content-view CONTENT_VIEW\n --patched-view PATCHED_VIEW\n --patch-dir PATCH_DIR\n --work-dir WORK_DIR\n --target {wiiu,switch}\n CONTENT_DIRECTORIES\n\nCONTENT_VIEW is the path to the directory where the extracted view should be mounted.\n\nWORK_DIR is where files you modify and create will be stored.\n\nPATCH_DIR is where repacked files should be stored. Useful if you intend to distribute\nyour modified content files or use them on console with LayeredFS for example.\n(Optional if PATCHED_VIEW is passed.)\n\nPATCHED_VIEW is where the patched view should be mounted. If you use cemu for example,\nthis can be the path to the title content directory: `/mlc01/usr/title/00050000/101C9500/content/`\n(Optional if PATCH_DIR is passed.)\n\nFor CONTENT_DIRECTORIES, pass the base content directory, then the update content.\n\nUsage example:\n\n botw-edit --content-view botw/view/ --patched-view wiiu/mlc01/usr/title/00050000/101C9500/content/\n --work-dir botw/patches/\n --target wiiu\n botw/base/ botw/update/\n\nThen you can edit files in `botw/view/` and test them immediately, without ever having to keep\nunneeded copies or manually create archives.\n\n## License\n\nThis software is licensed under the terms of the GNU General Public License, version 2 or later.\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/leoetlino/botwfstools", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "botwfstools", "package_url": "https://pypi.org/project/botwfstools/", "platform": "", "project_url": "https://pypi.org/project/botwfstools/", "project_urls": { "Homepage": "https://github.com/leoetlino/botwfstools" }, "release_url": "https://pypi.org/project/botwfstools/1.4.3/", "requires_dist": [ "colorama (~=0.3.9)", "rstb (~=1.0)", "sarc (~=2.0)" ], "requires_python": ">=3.6", "summary": "Tools for exploring and editing Breath of the Wild's ROM", "version": "1.4.3" }, "last_serial": 5314457, "releases": { "1.0.0": [ { "comment_text": "", "digests": { "md5": "117df1209fa43deeaa83ac5a2898b751", "sha256": "8c2041a4eb91151852353011859fba613c89a4a5ff27d0a9ff9d3165c2213e34" }, "downloads": -1, "filename": "botwfstools-1.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "117df1209fa43deeaa83ac5a2898b751", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 14823, "upload_time": "2018-08-29T18:52:19", "url": "https://files.pythonhosted.org/packages/c1/fd/0552a509c9788d9a73b191f1266e753d17ce9603568581fabed2afd83fa7/botwfstools-1.0.0-py3-none-any.whl" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "1dcc732d301512ae871e291564252702", "sha256": "bcba58b05abf3faf57188d0abe8d866cfd4cadcd599291fec0eb717657bfe2df" }, "downloads": -1, "filename": "botwfstools-1.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "1dcc732d301512ae871e291564252702", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 15131, "upload_time": "2018-08-30T09:40:01", "url": "https://files.pythonhosted.org/packages/26/95/22b83cd0c7ed0894707a9631279e608ff9ce6efbae446b3183e43e39af29/botwfstools-1.0.1-py3-none-any.whl" } ], "1.0.2": [ { "comment_text": "", "digests": { "md5": "4e26e0d7b07759c588635d5aa1206f42", "sha256": "f30a6e2fa0a7629cb77756b962581dec4dfc01c30e55c318b4b4c841eb18d591" }, "downloads": -1, "filename": "botwfstools-1.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "4e26e0d7b07759c588635d5aa1206f42", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 15139, "upload_time": "2018-08-30T10:06:09", "url": "https://files.pythonhosted.org/packages/2f/7a/994386bf3c476c552a3ec93d1e8467b88883d923132d0a2b3e0580225527/botwfstools-1.0.2-py3-none-any.whl" } ], "1.0.3": [ { "comment_text": "", "digests": { "md5": "b30403ff7ef96928a6b48ef4f69cea79", "sha256": "ae627092dcff426eafc78dc4d6274b7a9d807364558f3ca9026ca251e12bb987" }, "downloads": -1, "filename": "botwfstools-1.0.3-py3-none-any.whl", "has_sig": false, "md5_digest": "b30403ff7ef96928a6b48ef4f69cea79", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 15166, "upload_time": "2018-08-30T12:11:35", "url": "https://files.pythonhosted.org/packages/c1/91/33962dca12b7915d7412e2c4661d97f92b5bf1f015b9d6ac503ff9b61405/botwfstools-1.0.3-py3-none-any.whl" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "0b571bf8e31ad3696dea6fca7cf1ba06", "sha256": "f870efe6c0ac68967cc7fd03da26ec3c8b9b2a36e730857b8be7c099c2bc95ac" }, "downloads": -1, "filename": "botwfstools-1.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "0b571bf8e31ad3696dea6fca7cf1ba06", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 15198, "upload_time": "2018-08-30T12:26:33", "url": "https://files.pythonhosted.org/packages/78/e9/7e6a233183ef7184d99aae43e0898f40fa978c866797ee840b8f38ef9dfb/botwfstools-1.1.0-py3-none-any.whl" } ], "1.2.0": [ { "comment_text": "", "digests": { "md5": "19e81fbe14cf0cf743952c7808f3ee58", "sha256": "824246390864d930915a8ef3d5d101bdbf2dc14dc93f5deb7f66d6b90535fbf5" }, "downloads": -1, "filename": "botwfstools-1.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "19e81fbe14cf0cf743952c7808f3ee58", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 15675, "upload_time": "2018-08-31T17:15:42", "url": "https://files.pythonhosted.org/packages/dd/7e/9dc6a8a8a517eb142445358e3fb768afe1761b47f529f51577507bebad55/botwfstools-1.2.0-py3-none-any.whl" } ], "1.2.1": [ { "comment_text": "", "digests": { "md5": "a5177198255461e5b800baba2a2ed586", "sha256": "2093e9c789b79fa783667d6d531fd940e17deafc8d44446d8b4f4b36a62d30d2" }, "downloads": -1, "filename": "botwfstools-1.2.1-py3-none-any.whl", "has_sig": false, "md5_digest": "a5177198255461e5b800baba2a2ed586", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 15676, "upload_time": "2018-08-31T17:23:41", "url": "https://files.pythonhosted.org/packages/d0/0c/ae0c80879f8cda2150ee348a1f2e390369ca1ed739913c9ece3d2d8c5b28/botwfstools-1.2.1-py3-none-any.whl" } ], "1.2.2": [ { "comment_text": "", "digests": { "md5": "6c90914cef20ec6827c55f1067f74b2b", "sha256": "28c3150df1ec284a8e6c6a22c073e92eda69e2af46f6869d71a732291d2a4330" }, "downloads": -1, "filename": "botwfstools-1.2.2-py3-none-any.whl", "has_sig": false, "md5_digest": "6c90914cef20ec6827c55f1067f74b2b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 15643, "upload_time": "2018-08-31T20:08:42", "url": "https://files.pythonhosted.org/packages/6e/a4/33f45011156bbd684492f33836edee4de667c459a581cca2dc4a4b139169/botwfstools-1.2.2-py3-none-any.whl" } ], "1.2.2.post1": [ { "comment_text": "", "digests": { "md5": "5d83503240b871f25734c709e76df24d", "sha256": "913d393022bac47c41e957d24f6ad5e646d8f5839adcc9acb5cf1c4456dab6ec" }, "downloads": -1, "filename": "botwfstools-1.2.2.post1-py3-none-any.whl", "has_sig": false, "md5_digest": "5d83503240b871f25734c709e76df24d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 15771, "upload_time": "2018-09-10T16:28:00", "url": "https://files.pythonhosted.org/packages/9d/29/dbf566b6fab5c9efc38fda946847ee7c253531d93477279b4f8df36c28ac/botwfstools-1.2.2.post1-py3-none-any.whl" } ], "1.3.0": [ { "comment_text": "", "digests": { "md5": "163f93c94006f2b0229ed98362a463af", "sha256": "711c8ba5d0ed65f4b2e55fe36d64917a4651e94901035c4a9bb9690dc8e83718" }, "downloads": -1, "filename": "botwfstools-1.3.0-py3-none-any.whl", "has_sig": false, "md5_digest": "163f93c94006f2b0229ed98362a463af", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 16393, "upload_time": "2018-09-29T19:19:57", "url": "https://files.pythonhosted.org/packages/ef/98/185d1a7882b03cae6603175b91f2a042e90ac3625fd23d968d73ab362f5c/botwfstools-1.3.0-py3-none-any.whl" } ], "1.4.0": [ { "comment_text": "", "digests": { "md5": "d8a369074265ff395ca61627dcaf17e7", "sha256": "2ec78efec684bac0f294e744e9fcb2e1b6a4968fe26ef0b512af1f79c0a89a24" }, "downloads": -1, "filename": "botwfstools-1.4.0-py3-none-any.whl", "has_sig": false, "md5_digest": "d8a369074265ff395ca61627dcaf17e7", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 16421, "upload_time": "2018-09-30T17:04:45", "url": "https://files.pythonhosted.org/packages/15/6d/69b918dbe99e92a6fa83669e0b89ceaa7bb1f60e9bbbc35702a0137e2113/botwfstools-1.4.0-py3-none-any.whl" } ], "1.4.1": [ { "comment_text": "", "digests": { "md5": "3622cba0960ca0bcb09ef0762182d16a", "sha256": "0e830a0e11f2b95622d4daa92ba68206908ebd5cdbee5a8cb739ea832e8fa673" }, "downloads": -1, "filename": "botwfstools-1.4.1-py3-none-any.whl", "has_sig": false, "md5_digest": "3622cba0960ca0bcb09ef0762182d16a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 24038, "upload_time": "2019-03-16T18:39:22", "url": "https://files.pythonhosted.org/packages/da/1d/1c2e33cd8616b9f71085b605b5cb5cc4e19c730f1a6a2275e179027faac3/botwfstools-1.4.1-py3-none-any.whl" } ], "1.4.2": [ { "comment_text": "", "digests": { "md5": "9c3bac0846c8e0f8eaf716fbc8d94edf", "sha256": "2e1c3011d1233413115155db7808e03bec86329a3f0f84ecd22b97633e8e8738" }, "downloads": -1, "filename": "botwfstools-1.4.2-py3-none-any.whl", "has_sig": false, "md5_digest": "9c3bac0846c8e0f8eaf716fbc8d94edf", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 24076, "upload_time": "2019-04-22T20:47:58", "url": "https://files.pythonhosted.org/packages/d7/f9/56b1cd06d4adf24a4a55d0bb7c7efbd0f3182fc750e304fc85929889f01d/botwfstools-1.4.2-py3-none-any.whl" } ], "1.4.3": [ { "comment_text": "", "digests": { "md5": "da875c11f98d24f0233437f208c504ca", "sha256": "586db72675ec708f9babeddf3daa36d3536d8b9f21b0ab7d6b7374fa59b341ed" }, "downloads": -1, "filename": "botwfstools-1.4.3-py3-none-any.whl", "has_sig": false, "md5_digest": "da875c11f98d24f0233437f208c504ca", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 24088, "upload_time": "2019-05-24T20:45:00", "url": "https://files.pythonhosted.org/packages/63/0d/2c8ad486215c37126272902e4413a7c3e08f2ab63363d951a4ab5e3a584b/botwfstools-1.4.3-py3-none-any.whl" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "da875c11f98d24f0233437f208c504ca", "sha256": "586db72675ec708f9babeddf3daa36d3536d8b9f21b0ab7d6b7374fa59b341ed" }, "downloads": -1, "filename": "botwfstools-1.4.3-py3-none-any.whl", "has_sig": false, "md5_digest": "da875c11f98d24f0233437f208c504ca", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 24088, "upload_time": "2019-05-24T20:45:00", "url": "https://files.pythonhosted.org/packages/63/0d/2c8ad486215c37126272902e4413a7c3e08f2ab63363d951a4ab5e3a584b/botwfstools-1.4.3-py3-none-any.whl" } ] }