Git Product home page Git Product logo

yc_english's Introduction

English translation patch for Yurucamp: Have a nice day!

Here it is: the long-awaited(?) English fan-patch for the Yurucamp: Have a nice day! visual novel.

DISCLAIMER

After applying this patch, you will be running a modified version of the game. Neither Nintendo nor the game developers will be of any help, and I will not accept responsibility for eventual crashes, loss of save files, or sudden urge to go camping.

This is a fan-made project, provided as-is with absolutely no guarantee of quality, fitness for a particular purpose, or even working at all. Bug reports and translation fixes are welcome though.

The entire patching process can be carried out entirely using legally-obtained data.

DISCLAIMER (again)

The initial batch of translations was run through Google Translate. Character names have been translated by hand wherever possible, but this is far from the best translation it could be. If you want to take up the task of translating by hand, be my guest. The source files have been formatted for this purpose. (You don't need to do everything to file a pull request)

Okay, how do I patch?

The scripts provided in this repository exist in both Linux/UNIX and Windows versions.

Dialogue

Instructions This represents translations for the actual visual novel. Menus and certain UI elements will not be translated.

To build the game translation package, you will need:

  • Python 3 (for inucode.py)
  • Wine (for cpkmakec.exe on Linux)
  • .NET Framework 3.5 (for cpkmakec.exe on Windows)

Simply run the following command, and a modified scrpt.cpk will be produced:

# On Linux
./repack_scrpt.cpk.sh
# On Windows
.\repack_scrpt.cpk.ps1

Menus (Requires original game files)

Instructions This represents translations for the user interface components, basically everything that isn't directly story dialogue.

To build the menu translation patch, you will need:

  • Python 3 (for monobehaviour_of_borg.py) with UnityPy (run pip install UnityPy)
  • SciresM's hactool for extracting game files (on Windows, place the executable in the 3rdparty folder)
  • The original game ROM, in .nsp format
  • Your console's cryptographic keys in the $HOME/.switch directory

Extracting game files

# On Linux
./extract_nsp.sh path/to/your/yurucamp/rom.nsp
# On Windows
.\extract_nsp.ps1 path\to\your\yurucamp\rom.nsp

Patching game files

# On Linux
./monobehaviour_of_borg.py
# On Windows
python3 .\monobehaviour_of_borg.py

How do I install and use all that?

Once you have completed at least one of the patches above, copy the entire contents of the out directory to the atmosphere or sxos directory in your Switch's SD card, and the next time you boot up the game, the translations should apply.

I apologize if the instructions seem a bit messy, I tried automating and streamlining the patching process as much as I could without sharing copyrighted data.

(of course, if you were to look for it, I'm sure someone out there will end up redistributing pre-patched files, but that's illegal so I can't condone this.)

Special thanks

  • @SciresM for hactool, without which none of this would have been possible
  • Joseph John and the UnityPy contributors
  • MAGES for the game

yc_english's People

Contributors

thesola10 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

Forkers

stevenbeach33

yc_english's Issues

Make the scripts work on Windows

It's mostly just Python, and an already-Windows executable. I don't have a modern Windows machine handy, so I'd appreciate it if someone ported the patching process to Windows.

Add texture translation support

The latest version of UnityPy supports swizzling/unswizzling textures, which was a huge roadblock for extracting textures from the game in the first place.

This issue requires rewriting monobehaviour_of_borg.py to take that into account. May be good to combine with #6

Finish up menu translations

Given their relatively low volume and complexity in extracting them, I intend to translate all menu elements by hand.

Patched MonoBehaviours aren't recognized by the game

The monobehaviours_of_borg.py script uses UnityPy to patch individual MonoBehaviours in the game's original files, on the go. Whenever a MonoBehaviour is altered through UnityPy, the game stops recognizing it.

For instance, when patching the main menu, the MonoBehaviours representing the options' text stop being recognized when patched, and as a result the relevant text doesn't show up.

Could be due to a specificity in the Unity 2020 asset format.

Produce patched game for Yuzu

Apparently Yuzu is capable of loading Switch games from extracted ROMFS/EXEFS, which is pretty much what my patcher produces as-is. I'd need to implement an "export to Yuzu" to copy unpatched files to out, but the most important detail is to check if the resulting game would even run on Yuzu in the first place.

Add language picker

Reorganizing the patch set to decouple individual languages and retrieve/apply them whenever needed would make it much easier for the end user to translate their game to the language of their choosing.

Probably blocked by #6

Unhandled Exception running repack_scrpt.cpk.ps1

Had no trouble extracting and extracting the menu translations and they work great in-game, When I tried to use repack_scrpt.cpk.ps1 to get the modified scrpt.cpk it gave me this error,

CPK Data Mode : Filename
Data Alignment : 2048
Directories info mask : False
Text Code (csv) : UTF-8
Input Directory : .\work\Data\StreamingAssets\scrpt.cpk.contents
Output Filename (cpk) : .\out\contents\0100D12014FC2000\romfs\Data\StreamingAssets\scrpt.cpk
0 file(s) detected.

Building a CPK file ...

Unhandled Exception: System.OverflowException: TimeSpan overflowed because the duration is too long.
at System.TimeSpan.Subtract(TimeSpan ts)
at CriCpkMaker.CpkMaker.GetRemainTime()
at CriCpkMaker.CpkMaker.GetRemainTimeString()
at ?A0x3ea0124d.makeByCsvFile(CommandInfo cmdinf)
at main(String[] args)
at mainCRTStartupStrArray(String[] arguments)

I'm using Windows 10, PowerShell and Yuzu.

Bundle all patch scripts into GUI tool

Just like with #1, it's all about accessibility of the patch while remaining legal. A GUI will be much clearer about what is required to make the patch, and could ideally have the added feature of helping in editing translated strings (maybe?)

  • Minimum GUI features (prompt for required files and run patches)
  • Auto-install to Switch SD card
  • Auto-detect and extract required files from Switch SD card
  • Contribute translations easily
  • Add "export/run on Yuzu" option (#4)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.