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)

DC619/DC858 Mainframe Environment/Lab

DC619 Training LPAR The file DC619 - Mainframe Overflows Hands On.pdf contains the labs and walks through how to perform them. Use docker You can use

Soldier of FORTRAN 9 Jun 27, 2022
Tools, guides, and resources for blockchain analysts to interface with data on the Ergo platform.

Ergo Intelligence Objective Provide a suite of easy-to-use toolkits, guides, and resources for blockchain analysts and data scientists to quickly unde

Chris 5 Mar 15, 2022
AminoAutoRegFxck/AutoReg For AminoApps.com

AminoAutoRegFxck AminoAutoRegFxck/AutoReg For AminoApps.com Termux apt update -y apt upgrade -y pkg install python git clone https://github.com/LilZev

3 Jan 18, 2022
Markov Chain Composer

Markov Chain Composer Using Markov Chain to represent relationships between words in song lyrics and then generating new lyrics.. ahem interpretive po

Kylie 85 Dec 09, 2022
Animation retargeting tool for Autodesk Maya. Retargets mocap to a custom rig with a few clicks.

Animation Retargeting Tool for Maya A tool for transferring animation data between rigs or transfer raw mocap from a skeleton to a custom rig. (The sc

Joaen 62 Dec 19, 2022
This script provides LIVE feedback for On-The-Fly data collection with RELION

README This script provides LIVE feedback for On-The-Fly data collection with RELION (very useful to explore already processed datasets too!) Creating

cryoEM CNIO 6 Jul 14, 2022
Яндекс тренировки по алгоритмам. Июнь 2021

Young&&Yandex Тренировки по алгоритмам Если вы хотите попасть на летнюю стажировку в Яндекс, но пока не уверены в своих силах, приходите на наши трени

Podlevskiy Viktor 6 Sep 03, 2021
Explore related sequences in the OEIS

OEIS explorer This is a tool for exploring two different kinds of relationships between sequences in the OEIS: mentions (links) of other sequences on

Alex Hall 6 Mar 15, 2022
BinCat is an innovative login system, with which the account you register will be more secure.

BinCat is an innovative login system, with which the account you register will be more secure. This project is inspired by a conventional token system.

Hipotesi 2 May 22, 2022
A partial-transpiler that converts a subset of Python to the Folders esoteric programming language

Py2Folders A partial-transpiler that converts a subset of Python to the Folders esoteric programming language Folders Folders is an esoteric programmi

Daniel Johnson 1 Dec 23, 2021
This program is meant to take the pain out of generating nice bash PS1 prompts.

TOC PS1 Installation / Quickstart License Other Docs Examples PS1 Command Help PS1 ↑ This program is meant to take the pain out of generating nice bas

Steven Hollingsworth 6 Jun 19, 2022
A Python package for searching journal publications and researchers

scholarpy A python package for searching journal publications and researchers Free software: MIT license Documentation: https://giswqs.github.io/schol

Qiusheng Wu 8 Mar 12, 2022
Discover and load entry points from installed packages

Entry points are a way for Python packages to advertise objects with some common interface. The most common examples are console_scripts entry points,

Thomas Kluyver 69 Jul 05, 2022
A script where you execute a script that generates a base project for your gdextension

GDExtension Project Creator this is a script (currently only for linux) where you execute a script that generates a base project for your gdextension,

Unknown 11 Nov 17, 2022
A web-based analysis toolkit for the System Usability Scale providing calculation, plotting, interpretation and contextualization utility

System Usability Scale Analysis Toolkit The System Usability Scale (SUS) Analysis Toolkit is a web-based python application that provides a compilatio

Jonas Blattgerste 3 Oct 27, 2022
A variant caller for the GBA gene using WGS data

Gauchian: WGS-based GBA variant caller Gauchian is a targeted variant caller for the GBA gene based on a whole-genome sequencing (WGS) BAM file. Gauch

Illumina 16 Oct 13, 2022
A simple method to create strong password.

A simple method to create strong password.

1 Jan 23, 2022
If Google News had a Python library

pygooglenews If Google News had a Python library Created by Artem from newscatcherapi.com but you do not need anything from us or from anyone else to

Artem Bugara 1.1k Jan 08, 2023
Simple python code for compile brainfuck program.

py-brainf*ck Just a basic compiled that compiles your brainf*ck codes and gives you informations about memory, used cells, dumped version, logs etc...

4 Jun 13, 2021
Python Example Project Structure

Python Example Project Structure Example of statuses that can be in readme: Visit my docs for the full documentation, examples and guides. With this p

1 Oct 31, 2021