A script that convert WiiU BotW mods to Switch

Overview

UltimateBoTWConverter

A script that convert WiiU BotW mods to Switch. It uses every resource I could find under the sun that allows for conversion, with some modifications to accomodate for the central script. Thanks to HGStone and Törphedo for creating the bat script, and HGStone for testing as well. ONLY converter.py IS COMPLETELY MADE BY ME, THE ORIGINAL AUTHORS STILL DESERVE ALL THE CREDIT FOR THEIR WORK.

Requirements

  • Python 3.7 or 3.8 (If on Windows, you must check Add Python to PATH during installation)
  • A legal, unpacked dump of BoTW Switch (1.6.0)
  • BCML
  • leoetlino's sarc tool

The last two can be obtained through Python's pip, using pip install bcml for BCML, and pip install sarc for leoetlino's tool. Important: BCML must be set up and put in Switch mode, or the script won't work. Also, this script doesn't modify files inside any .pack, so you'll have to manually port those yourself.

Usage

Linux: Open a Terminal window in the script's folder, and run the script with either python converter.py "mod" or convert.sh "mod", replacing mod by your BNP mod/mods, or path/to/folder/with/bnps/*.bnp to convert every BNP in a folder. Windows Drag and drop your BNP into the included bat file

Added supported formats

BCML converter is still limited, so using other tools to convert those is our only option for now. With this script, I've added this formats to the supported list:

  • .bars
  • .bfstm
  • .sbfres (animations are untested, but I'm guessing there would be some problems)
  • .sbitemico
  • .hkcl
  • instSizes in ActorInfo.product.sbyml

It's worth considering that I'm still new to Python, so any feedback is appreciated!

Comments
  • need help

    need help

    I'm new at modding Botw and needing help to by using this. I wanna install mods for wii u on my switch but I have no idea how to use this converter. And I don't understand the usage.

    opened by Lioniox 35
  • ModuleNotFoundError: No module named 'bcml'

    ModuleNotFoundError: No module named 'bcml'

    Hi, Thanks for your efforts I think this is an amazing Tool

    However, each time I tried to convert a mod i faced the following issue

    Attempting to convert 1 of 1 mods, please wait...

    Traceback (most recent call last): File "/h/ubotwconverterv134/converter.py", line 20, in from bcml.install import open_mod, find_modded_files ModuleNotFoundError: No module named 'bcml'

    Processed 1 mods.

    • I have BCML 3.8.0, all settings for Switch
    • I Dumped my own Zelda cartbrige v1.6.0
    • Python 3.7.3

    001 002 003 004 005 006

    opened by anthsalmo 9
  • Error Cannot import name 'bars' from 'bars_py'(unknown location)

    Error Cannot import name 'bars' from 'bars_py'(unknown location)

    hi im trying to use the script by dragging and dropping the mod! on convert.bat but i get this error, am i missing something? image i have python 3.8.8 and bcml arealdy and installed some mods from switch

    opened by Naraxrealms 2
  • python: can't open file 'converter.py

    python: can't open file 'converter.py

    i keep getting "python: can't open file 'converter.py': [Errno 2] No such file or directory" error when using the bat file. what is the process of correcting this please. Screenshot (15)

    opened by linkle13 0
  • DragNDrop+

    DragNDrop+

    This add the ability to drag and drop multiple BNP at the same time This adds the ability to drag and drop from any directory it adds a nice title it keeps track of how many have been converted out of the total number dropped on the bat file

    opened by HGStone 0
  • no known parent package

    no known parent package

    when running the latest source I run into this error.

    Traceback (most recent call last): File "converter.py", line 24, in <module> from .bars_py import bars, bcf_converter ImportError: attempted relative import with no known parent package

    opened by HGStone 0
  • Issue converting WiiU .bnps into ones for Switch

    Issue converting WiiU .bnps into ones for Switch

    Whenever I try to convert a WiiU .bnp to Switch by dragging the file onto the convert.bat file it just says

    Traceback (most recent call last): File "C:\Users\airyt\Downloads\ubotwconverterv134\converter.py", line 20, in from bcml.install import open_mod, find_modded_files ModuleNotFoundError: No module named 'bcml'

    but I can run BCML from Command Prompt just fine.

    opened by AnkleCruncher 0
  • BfresPlatformConverter array lower bound issue during conversion

    BfresPlatformConverter array lower bound issue during conversion

    Attempting to convert Linkle 3.0 mod produces the following result. Mod files work in WiiU format and verified as non-corrupt. Assuming the following may be edge conditions of the process. Re-attempted in single-threaded mode, no change.

    2022-12-13 01:27:18,422 WARNING root content\Model\Armor_021.Tex1.sbfres could not be converted 2022-12-13 01:27:54,726 WARNING root content\Model\Armor_049.Tex1.sbfres could not be converted 2022-12-13 01:28:12,243 WARNING root content\Model\Armor_141.Tex1.sbfres could not be converted 2022-12-13 01:28:19,783 WARNING root content\Model\Armor_171.Tex1.sbfres could not be converted 2022-12-13 01:28:59,948 WARNING root content\Model\Armor_Default.Tex1.sbfres could not be converted 2022-12-13 01:28:59,953 WARNING root content\Model\Link.Tex1.sbfres could not be converted

    Unhandled Exception: System.ArgumentOutOfRangeException: Number was less than the array's lower bound in the first dimension.
    Parameter name: srcIndex
       at System.Array.Copy(Array sourceArray, Int32 sourceIndex, Array destinationArray, Int32 destinationIndex, Int32 length, Boolean reliable)
       at System.Array.Copy(Array sourceArray, Int32 sourceIndex, Array destinationArray, Int32 destinationIndex, Int32 length)
       at Syroot.NintenTools.Bfres.Swizzling.GX2.Decode(GX2Surface tex, Int32 ArrayIndex, Int32 MipIndex, String DebugTextureName)
       at Syroot.NintenTools.Bfres.WiiU.Texture.GetDeswizzledData(Int32 arrayLevel, Int32 mipLevel)
       at Syroot.NintenTools.Bfres.Switch.SwitchTexture.FromWiiU(Texture textureU)
       at Syroot.NintenTools.Bfres.PlatformConverters.TextureConverter.CreateBNTX(List`1 textureList)
       at Syroot.NintenTools.Bfres.ResFile.ConvertTexturesToBntx(List`1 textures)
       at Syroot.NintenTools.Bfres.ResFile.ChangePlatform(Boolean isSwitch, Int32 alignment, Byte versionA, Byte versionB, Byte versionC, Byte versionD, ConverterHandle handle)
       at BfresPlatformConverter.Program.Main(String[] args)
    
    opened by jedinjapan 0
  • convert_to_switch in cli gives this error same with building from source

    convert_to_switch in cli gives this error same with building from source

    Traceback (most recent call last): File "C:\Users\Cod3x\AppData\Local\Programs\Python\Python38\lib\runpy.py", line 194, in _run_module_as_main return _run_code(code, main_globals, None, File "C:\Users\Cod3x\AppData\Local\Programs\Python\Python38\lib\runpy.py", line 87, in run_code exec(code, run_globals) File "C:\Users\Cod3x\AppData\Local\Programs\Python\Python38\Scripts\convert_to_switch.exe_main.py", line 4, in File "C:\Users\Cod3x\AppData\Local\Programs\Python\Python38\lib\site-packages\ubotw_converter\converter.py", line 60, in logging.config.fileConfig(fname=LOG_CONF, defaults={"logfilename": ERROR_LOG, "loglevel": args.log_level.upper()}) File "C:\Users\Cod3x\AppData\Local\Programs\Python\Python38\lib\logging\config.py", line 71, in fileConfig formatters = _create_formatters(cp) File "C:\Users\Cod3x\AppData\Local\Programs\Python\Python38\lib\logging\config.py", line 104, in _create_formatters flist = cp["formatters"]["keys"] File "C:\Users\Cod3x\AppData\Local\Programs\Python\Python38\lib\configparser.py", line 960, in getitem raise KeyError(key) KeyError: 'formatters' image

    opened by Cod3xDev 0
  • Mods Wont install

    Mods Wont install

    I tried converting 10 different wiiu mods to switch and when adding any of them to BCML, it causes BCML to crash. Every time no matter the mod. I tried different weapons, different armors, nothing seems to work properly.

    BCML works with all other mods I have added to it, it is only converted ones that dont seem to work.

    opened by joeb2000 0
Releases(v1.3.3)
  • v1.3.3(Dec 24, 2021)

    Changelog

    1.3.3

    • Added .shknm2 support
    • Added .bcamanim support
    • The script now uses multiprocessing to make things faster (if things break, let me know!)
    • If the script does not find the necessary programs, it will download them before conversion starts

    1.3.4

    • Added an updated bat script
    • Added single core mode (by adding -s to the command)
    • Added an option to specify a name for the output file (using -o <filename>)
    • Fixed conversion for bars files inside eventpacks

    The script now comes bundled with the necessary programs, along with a version of BfresPlatformConverter that uses the latest libraries. This essentially means better support for animations and bfres files in general. Thanks to @Waikuteru for letting me know how this build performs, and @KillzXGaming for providing it.

    Usage

    Type python path/to/converter.py [mod] in your Command Line Interface of choice(CMD, Terminal, etc.), or just drag and drop your bnp to the bat file if you are on Windows.

    Source code(tar.gz)
    Source code(zip)
    UBotWConverterv1.3.4.7z(21.55 MB)
  • v1.3.2(Dec 2, 2021)

    Changelog

    • Fixed 'method object is not iterable' when converting .bars files (1dd0dc549e549c16ab884f85f5df2b8887a21f51)
    • Fixed "argument of type 'WindowsPath' is not iterable" when converting hkx files (aa59e6a2c5342a6b5eaaeebc1bc64d73d83d0f77)
    • BootUp.sblarc is now removed from the result if found, due to it not being used on Switch (cb5ecdc3f5dd5955b2ef2be240722234e3349a7a)

    Usage

    Type python path/to/converter.py [mod] in your Command Line Interface of choice(CMD, Terminal, etc.), or just drag and drop your bnp to the bat file if you are on Windows.

    Source code(tar.gz)
    Source code(zip)
    UBotWConverter.7z(38.84 KB)
  • v1.3.1(Nov 29, 2021)

    Changelog

    • Fixed HKXConvert being downloaded for every hkx file. It should now download only once. (6f3a021eab3dca24490d37e6763c9694e1908c49)
    • Fixed lookup of wrong hkx files (47edfadc30e834db16786ecc02458b373f174b8e)
    • Fixed .bars files outside packs not being converted (445133ecb43714e55a2acd900d9201e1e41ea89d)
    • Deleted check for list-type warnings, since it was added to BCML (445133ecb43714e55a2acd900d9201e1e41ea89d)
    • Added support for files inside event packs (e9af25f618e7186a71b78247ff3e1060ad16508d)
    • Added RSTB recalculation after conversion is finished (ab90505d048fc34748bfbed3825e7043e5fbeecf)
    • Added error logging (ab90505d048fc34748bfbed3825e7043e5fbeecf)

    Usage

    Type python path/to/converter.py [mod] in your Command Line Interface of choice(CMD, Terminal, etc.), or just drag and drop your bnp to the bat file if you are on Windows.

    Source code(tar.gz)
    Source code(zip)
    UBotWConverter.7z(38.73 KB)
  • v1.3.0(Nov 23, 2021)

    Changelog

    • Removed InstSize conversion since it was added to BCML
    • Fixed some files not being found on Windows
    • Fixed sarc files rebuilding without folders
    • Rewrote the bars portion of the script, and moved it to a new repo
    • Added a check when trying to use the script with Switch BNPs
    • Fixed .bfstp files not converting properly when no matching .bfstm was provided

    Note: ~~.bfstp conversion has yet to be tested thoroughly on systems other than Linux. If there are any problems, please let me know by opening an issue on Github.~~ .bfstp conversion seems to work fine as of now (thanks @HGStone for letting me know), but if there are still any issues, feel free to let me know.

    Usage

    Type python path/to/converter.py [mod] in your Command Line Interface of choice(CMD, Terminal, etc.), or just drag and drop your bnp to the bat file if you are on Windows.

    Source code(tar.gz)
    Source code(zip)
    UBotWConverter.7z(38.27 KB)
  • v1.2.0(Nov 5, 2021)

    Changelog

    • Fixed BFSTM files not converting properly to Switch (Thanks a lot to HGStone for providing documentation and testing!)
    • Fixed script not finding bars files inside TitleBG
    • Fixed an error where Tex2 files would throw a "FileNotFound" error, despite converting properly
    • Pack files should now not get compressed into Yaz0
    • Added an option to keep the downloaded files (a prompt will appear when the script ends)

    Usage

    Type python path/to/converter.py mod in CMD (if on Windows) or Terminal (if on an Unix based system), or drag and drop your bnp to the .bat file if you are on Windows.

    Source code(tar.gz)
    Source code(zip)
    UBoTWConverter.7z(38.66 KB)
  • v1.1.0(Nov 3, 2021)

    Changelog

    • Added support for files inside .pack archives
    • Added support for .bflim files
    • Removed dependency on leoetlino's sarc tool
    • The script will now put BCML in Switch mode once it's run

    Usage

    Type python path/to/converter.py mod in CMD (if on Windows) or Terminal (if on an Unix based system), or drag and drop your bnp to the bat file if you are on Windows.

    Source code(tar.gz)
    Source code(zip)
    UBoTWConverter.7z(38.07 KB)
  • v1.0.0(Oct 30, 2021)

Broken Link Finder is a Burp Extension to detect broken links for a passive scanning domains and links.

Broken Link Finder Broken Link Finder is a Burp Extension to detect broken links for a passive scanning domains and links. Inspired by InitRoot's link

Red Section 10 Sep 11, 2021
ToDo - A simple bot to keep track of things you need to do

ToDo A simple bot to keep track of things you need to do. Installation You will

3 Sep 18, 2022
A domonic-like wrapper around selectolax

A domonic-like wrapper around selectolax

byteface 3 Jun 23, 2022
北大选课网2021年春季验证码识别

北大选课网验证码识别 2021 年春季学期 Powered by Elector Quartet (@Rabbit, @xmcp, @SpiritedAwayCN, @gzz) 数据集描述 最初的数据集为 5130 张人工标记的验证码,之后利用早期训练好的模型在选课网上进行自动验证 (自举),又收集

Rabbit 27 Sep 17, 2022
ROS Foxy + Raspi + Adafruit BNO055

ROS Foxy + Raspi + Adafruit BNO055

Ar-Ray 3 Nov 04, 2022
pspsps(1) is a compyuter software to call an online catgirl to the Linux terminyal.

pspsps(1): call a catgirl from the Internyet to the Linux terminyal show processes: ps show catgirls: pspsps —@ Melissa Boiko 32 Dec 19, 2022

Telegram bot for Urban Dictionary.

Urban Dictionary Bot @TheUrbanDictBot A star ⭐ from you means a lot to us! Telegram bot for Urban Dictionary. Usage Deploy to Heroku Tap on above butt

Stark Bots 17 Nov 24, 2022
A StarkNet project template based on a Pythonic environment

StarkNet Project Template This is an opinionated StarkNet project template. It is based around the Python's ecosystem and best practices. tox to manag

Francesco Ceccon 5 Apr 21, 2022
This is a a CSMA/CA simulator written in Python based on simulator of the same type

This is a a CSMA/CA simulator written in Python based on simulator of the same type found the link https://github.com/StevenSLXie/CSMA-Simulator with

M. Ismail 4 Nov 22, 2022
Beancount Importers for DKB (Deutsche Kredit Bank) CSV Exports

Beancount DKB Importer beancount-dkb provides an Importer for converting CSV exports of DKB (Deutsche Kreditbank) account summaries to the Beancount f

Siddhant Goel 24 Aug 06, 2022
Open Source defrag's mod code

Open Source defrag's mod code Goals: Code & License: Respect FOSS philosophy. Open source and community focus. Eliminate all traces of q3a-sdk licensi

sOkam! 1 Dec 10, 2022
This simple script generates a backup of a given Python and R environment

Python Environment Backup It’s always good to maintain your Python and R Anaconda environment packages properly listed and well-kept in case you have

Andrew Laganaro 1 Jul 13, 2022
A simple Python script for generating a variety of hashes from safe urandom entropy.

Hashgen A simple Python script for generating a variety of hashes from safe urandom entropy. For whenever you need a random hash (e.g. generating an a

Xanspie 1 Feb 17, 2022
Generate Openbox Menus from a easy to write configuration file.

openbox-menu-generator Generate Openbox Menus from a easy to write configuration file. Example Configuration: ('#' indicate comments but not implement

3 Jul 14, 2022
Bitflip Fault Simulation Platform by Daniele Rizzieri (2021)

BFSP [v1.05] Bitflip Fault Simulation Platform by Daniele Rizzieri (2021) The platform injects a random bitflip in each of N copies of a binary file.

Daniele Rizzieri 2 Nov 05, 2022
STAC in Jupyter Notebooks

stac-nb STAC in Jupyter Notebooks Install pip install stac-nb Usage To use stac-nb in a project, start Jupyter Lab (jupyter lab), create a new noteboo

Darren Wiens 32 Oct 04, 2022
The third home of the bare Programming Language (1st there's my heart, the forest came second and then there's Github :)

The third home of the bare Programming Language (1st there's my heart, the forest came second and then there's Github :)

Garren Souza 7 Dec 24, 2022
Python Library to get fast extensive Dummy Data for testing

Dumda Python Library to get fast extensive Dummy Data for testing https://pypi.org/project/dumda/ Installation pip install dumda Usage: Cities from d

Oliver B. 0 Dec 27, 2021
JD扫码获取Cookie 本地版

JD扫码获取Cookie 本地版 请无视手机上的提示升级京东版本的提示! 下载链接 https://github.com/Zy143L/jd_cookie/releases 使用Python实现 代码很烂 没有做任何异常捕捉 但是能用 请不要将获取到的Cookie发送给任何陌生人 如果打开闪退 请使

Zy143L 420 Dec 11, 2022
An integrated library for checking email if it is registered on social media

An integrated library for checking email if it is registered on social media

Sidra ELEzz 13 Dec 08, 2022