Engine suportado · YU-RIS
YU-RIS (por raiL-soft) é um engine de scripting Windows de longa data por trás de centenas de visual novels japonesas doujin e comerciais. Seus recursos ficam em arquivos de pacote .ypf, e o cenário é compilado em scripts YSTB (os arquivos .ybn dentro de ysbin.ypf, em caminhos internos como ysbin/yst00000.ybn). O RuneTranslate lê os pacotes .ypf em TypeScript puro — sem GARbro ou ferramentas externas — descomprimindo entradas e recuperando a chave de nome de arquivo de cada arquivo, e depois analisa os scripts YSTB compilados: ele divide as quatro seções (instruções, descritores de argumento, valores de string, números de linha) e recupera a chave XOR de 4 bytes do script automaticamente da tabela de descritores, então scripts criptografados abrem sem caça à chave. A partir daí ele extrai o diálogo em japonês da tabela de strings e lista cada linha no editor, deixando os operandos de comando do engine, nomes de variáveis e caminhos de asset excluídos por padrão para que você nunca traduza algo que a lógica do script compara. Na exportação ele reconstrói a tabela de strings — corrigindo cada offset para que traduções mais longas ou mais curtas caibam — reaplica a mesma chave XOR e grava o .ybn traduzido solto no seu caminho de arquivo. Como o runtime do YU-RIS lê um arquivo solto no disco com preferência sobre o mesmo caminho empacotado em um .ypf, o jogo simplesmente carrega sua tradução — não há reempacotamento. Este engine ainda está sendo verificado em jogos reais, então teste a build exportada antes de redistribuir.
Visual novels se apoiam em um elenco fixo e terminologia recorrente ao longo de milhares de linhas, e a tradução automática vai escrever o nome de uma heroína de três formas diferentes em três capítulos. Coloque seus personagens, nomes de lugares e termos recorrentes no glossário logo de início, para que cada linha de diálogo os renderize de forma idêntica. Glossário 101 →
Aponte o RuneTranslate para o diretório do jogo — a pasta com o yu-ris.exe do jogo e seus pacotes .ypf (geralmente em uma subpasta pac/, com os scripts em ysbin.ypf). Se você já desempacotou o jogo com o GARbro, uma pasta ysbin/ solta de scripts .ybn também é detectada. A detecção do engine reconhece o layout do YU-RIS automaticamente; sua pasta original nunca é modificada.
O RuneTranslate abre os pacotes .ypf em TypeScript puro, descomprime as entradas e analisa os scripts YSTB compilados lá dentro. Ele recupera a chave XOR de 4 bytes de cada script automaticamente da tabela de descritores de argumento — sem caça à chave — decodifica a tabela de strings Shift-JIS e lista cada linha em japonês no editor, agrupada por arquivo de script. Operandos de comando do engine, nomes de variáveis e caminhos de asset são exibidos mas excluídos por padrão para que a lógica da história fique intacta.
Esses jogos são cheios de diálogo e sensíveis ao tom, então um LLM (OpenAI GPT-4o / Anthropic Claude) ou o DeepL costuma ler melhor; o Google Translate grátis ou um modelo local (Ollama / LM Studio) cobre strings curtas de menu e escolhas, e você pode apontar o provedor compatível com OpenAI para o OpenRouter ou NanoGPT. Uma segunda passada opcional do AI-refiner aperta o fraseado literal.
O texto de mensagem do YU-RIS costura códigos de controle com barra invertida (nova linha, cor, ruby) e tags entre colchetes através do diálogo. O RuneTranslate congela cada um deles como placeholders numéricos durante a tradução e os restaura na saída, então a linha traduzida mantém a mesma formatação e o mesmo ritmo do original.
Na exportação, o RuneTranslate copia o jogo e reconstrói cada script YSTB traduzido — corrigindo os offsets da tabela de strings para que a tradução de qualquer tamanho caiba e reaplicando a mesma chave XOR — e depois o grava solto no seu caminho original de arquivo (ex.: ysbin/yst00000.ybn). O runtime do YU-RIS prefere um arquivo solto ao mesmo caminho empacotado em um .ypf, então o jogo apenas lê sua tradução sem reempacotamento. Rode a cópia exportada e ela roda no seu idioma.