echo "Como usar:" . PHP_EOL; echo " - Crie uma pasta chamada 'scripts' no mesmo local onde estão os arquivos da tool;" . PHP_EOL; echo " - Dentro da pasta 'scripts', crie outras duas pastas de nome 'originais' e 'dumpados';" . PHP_EOL; echo " - Extraia, da pasta 'data' da rom do jogo (preferencialmente a americana), os seguintes arquivos:" . PHP_EOL; echo " 1. Todos os arquivos em extensão .bin cujo nome começa com 'm_' e termina com 'en';" . PHP_EOL; echo " 2. Todos os arquivos em extensão .bin cujo nome começa com 'talk_' e termina com 'en', 'en1' ou 'en2';" . PHP_EOL; echo " - Ponha os seguintes arquivos dentro da pasta 'originais' e execute este script;" . PHP_EOL; echo " - A extração dará início em seguida, salvando os scripts na pasta 'dumpados'." . PHP_EOL; echo PHP_EOL; aviso('Verificando quantidade de scripts...', false); $scripts = glob('scripts/originais/*.bin', GLOB_BRACE); $total_scripts = count($scripts); aviso($total_scripts); if ($total_scripts > 0) { aviso('Lendo tabela...', false); $tabela = lerTabelaCaracteres(false); aviso('OK!'); aviso('Iniciando extração dos scripts...'); foreach ($scripts as $script) { $nome_arquivo_original = basename($script); $nome_arquivo_dumpado = str_replace('.bin', '.txt', $nome_arquivo_original); aviso("Extraindo script \"{$nome_arquivo_original}\" para arquivo de texto \"{$nome_arquivo_dumpado}\"...", false); $script = fopen($script, 'r'); $texto = fopen("scripts/dumpados/{$nome_arquivo_dumpado}", 'w'); // Obtendo tamanho do arquivo $tamanho_arquivo = ler2BytesHexInvertido($script, 0) + 4; // Obtendo posição do texto... $posicao_inicio_textos = ler2BytesHexInvertido($script, 2) + 4; // Obtendo posições de início e fim dos ponteiros... $posicao_inicio_ponteiros = 4; $posicao_fim_ponteiros = $posicao_inicio_textos - 1;
echo PHP_EOL; echo "Como usar:" . PHP_EOL; echo " - Extraia os scripts da rom americana com o Script Dumper, se já não tiver o feito;" . PHP_EOL; echo " - Dentro da pasta 'scripts', crie outras duas pastas 'traduzidos' e 'reinseridos';" . PHP_EOL; echo " - Copie todos os arquivos de texto da pasta 'dumpados' para a pasta 'traduzidos';" . PHP_EOL; echo " - Comece a traduzir os scripts da pasta 'traduzidos', mantendo os originais da pasta 'dumpados' intactos;" . PHP_EOL; echo " - À medida que for traduzindo, ou ao terminar tudo, execute este script;" . PHP_EOL; echo " - A reinserção dará início em seguida, re-gerando os arquivos .bin na pasta 'dumpados', prontos para serem reinseridos no jogo;" . PHP_EOL; echo PHP_EOL; aviso('Verificando quantidade de scripts dumpados...', false); $textos = glob('scripts/traduzidos/*.txt', GLOB_BRACE); $total_textos = count($textos); aviso($total_textos); if ($total_textos > 0) { aviso('Lendo tabela...', false); $tabela = lerTabelaCaracteres(true); aviso('OK!'); aviso('Iniciando recompilação dos scripts...'); foreach ($textos as $texto) { $nome_arquivo_dumpado = basename($texto); if ($nome_arquivo_dumpado == 'talk_q07_en1.txt') { aviso("O script \"{$nome_arquivo_original}\" é nulo e será ignorado."); continue; } $nome_arquivo_recompilado = str_replace('.txt', '.bin', $nome_arquivo_dumpado); aviso("Recompilando script \"{$nome_arquivo_dumpado}\" para arquivo binário \"{$nome_arquivo_recompilado}\"...", false); $texto = fopen($texto, 'r'); $script = fopen("scripts/reinseridos/{$nome_arquivo_recompilado}", 'w'); $posicao_inicio_ponteiros = $posicao_fim_ponteiros = $posicao_inicio_textos = $posicao_inicio_script = ''; $array_ponteiros = array(); // Lendo informações do script