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)

Location of public benchmarking; primarily final results

CSL_public_benchmark This repo is intended to provide a periodically-updated, public view into genome sequencing benchmarks managed by HudsonAlpha's C

HudsonAlpha Institute for Biotechnology 15 Jun 13, 2022
A modern message based async agent framework

Munggoggo A modern message based async agent framework An asyncio based agent platform written in Python and based on RabbitMQ. Agents are isolated pr

24 Dec 28, 2022
Clock in automatically in SCU.

auto_clock_in Clock in automatically in SCU. Features send logs to Telegram bot How to use? pip install -r requirements.txt () edit user_list, token_A

2 Dec 13, 2021
Repls goes to sleep due to inactivity, but to keep it awake, simply host a webserver and ping it.

Repls goes to sleep due to inactivity, but to keep it awake, simply host a webserver and ping it. This repo will help you make a webserver with a bit of console controls.

2 Mar 01, 2022
Taichi is a parallel programming language for high-performance numerical computations.

Taichi is a parallel programming language for high-performance numerical computations.

Taichi Developers 22k Jan 04, 2023
Experimental Brawl Stars v36.218 server emulator written in Python.

Brawl Stars v36 Experimental Brawl Stars v36.218 server emulator written in Python. Requirements: Python 3.7 or higher colorama Running the server In

8 Oct 31, 2021
Syarat.ID Source Code - Syarat.ID is a content aggregator website

Syarat.ID is a content aggregator website that gathering all informations with the specific keyword: "syarat" from the internet.

Syarat.ID 2 Oct 15, 2021
Simple python script for AD enumeration

AutoAD - Simple python script for AD enumeration This tool was created on my spare time to help fellow penetration testers in automating the basic enu

Mohammad Arman 28 Jun 21, 2022
Academic planner application designed for students and counselors.

Academic planner application designed for students and counselors.

Ali bagheri 2 Dec 31, 2021
A dashboard for your code. A build system.

NOTICE: THIS REPO IS NO LONGER UPDATED Changes Changes is a build coordinator and reporting solution written in Python. The project is primarily built

Dropbox 763 Sep 09, 2022
A Python Perforce package that doesn't bring in any other packages to work.

P4CMD 🌴 A Python Perforce package that doesn't bring in any other packages to work. Relies on p4cli installed on the system. p4cmd The p4cmd module h

Niels Vaes 13 Dec 19, 2022
A set of decks and notebooks with exercises for use in a hands-on causal inference tutorial session

intro-to-causal-inference A introduction to causal inference using common tools from the python data stack Table of Contents Getting Started Install g

Roni Kobrosly 15 Dec 07, 2022
This is a spamming selfbot that has custom spammed message and @everyone spam.

This is a spamming selfbot that has custom spammed message and @everyone spam.

astro1212 1 Jul 31, 2022
PaintPrint - This module can colorize any text in your terminal

PaintPrint This module can colorize any text in your terminal Author: tankalxat3

Alexander Podstrechnyy 2 Feb 17, 2022
A Way to Use Python, Easier.

PyTools A Way to Use Python, Easier. How to Install Just copy this code, then make a new file in your project directory called PyTools.py, then paste

Kamran 2 Aug 15, 2022
Get a list of the top-10 rejected libraries in your WhiteSource inventory

WhiteSource Top 10 Rejected Libraries Generate a spreadsheet listing the 10 most common libraries in your WhiteSource inventory that were rejected by

WhiteSource-PS-tools 10 Mar 23, 2022
A Desktop application for the signalum python library

Signalum Desktop A Desktop application on the Signalum Python Library/CLI Tool. The Signalum Desktop application is an attempt to develop a single too

BISOHNS 35 Feb 15, 2021
Predicting Global Crop Yield for World Hunger

Crop Yield And Global Famine - The fifth project I created during my time at General Assembly. I completed this project with three other classmates in the span of three weeks. Most of my work was dir

Adam Muhammad Klesc 2 Jun 19, 2022
This repository collects nice scripts ("plugins") for the SimpleBot bot for DeltaChat.

Having fun with DeltaChat This repository collects nice scripts ("plugins") for the SimpleBot bot for DeltaChat. DeltaChat is a nice e-mail based mess

Valentin Brandner 3 Dec 25, 2021
BlackIP-Rep is a tool designed to gather the reputation and information of Bulk IP's.

BlackIP-Rep is a tool designed to gather the reputation and information of Bulk IP's. Focused on increasing the workflow of Security Operations(SOC) team during investigation.

0LiVEr 6 Dec 12, 2022