VNTranslationTools
VNTranslationTools copied to clipboard
Request for Anim engine (Crowd engine)
Hello, can I request Anim engine? The game is this one, English patch. I got a tool for Anim from f95, it dumps to .json too, but its format is too ugly that I can't even look, also I recognized the tool can't dump repeated lines. I have included the script and the tool, I also included a raw script from https://vndb.org/v2607 in case since I can't find raw script of NTR homestay. Anim_stuff.zip
I forgot to tell you somehow the tool only dumps dialogue lines if it is English script
huh, it looks so similar to this
using System;
namespace Anim
{
internal class ArcDat
{
public static byte[] ChangeKey(ref byte[] keyBuffer, byte a2)
{
byte[] result;
switch (a2 & 7)
{
case 0:
{
byte[] array = keyBuffer;
int num = 0;
array[num] += a2;
byte[] array2 = keyBuffer;
int num2 = 3;
array2[num2] += a2 + 2;
keyBuffer[4] = keyBuffer[2] + a2 + 11;
result = keyBuffer;
keyBuffer[8] = keyBuffer[6] + 7;
return result;
}
case 1:
{
keyBuffer[2] = keyBuffer[9] + keyBuffer[10];
keyBuffer[6] = keyBuffer[7] + keyBuffer[15];
byte[] array3 = keyBuffer;
int num3 = 8;
array3[num3] += keyBuffer[1];
result = keyBuffer;
keyBuffer[15] = keyBuffer[5] + keyBuffer[3];
return result;
}
case 2:
{
byte[] array4 = keyBuffer;
int num4 = 1;
array4[num4] += keyBuffer[2];
byte[] array5 = keyBuffer;
int num5 = 5;
array5[num5] += keyBuffer[6];
byte[] array6 = keyBuffer;
int num6 = 7;
array6[num6] += keyBuffer[8];
result = keyBuffer;
byte[] array7 = keyBuffer;
int num7 = 10;
array7[num7] += keyBuffer[11];
return result;
}
case 3:
keyBuffer[9] = keyBuffer[2] + keyBuffer[1];
keyBuffer[11] = keyBuffer[6] + keyBuffer[5];
keyBuffer[12] = keyBuffer[8] + keyBuffer[7];
result = keyBuffer;
keyBuffer[13] = keyBuffer[11] + keyBuffer[10];
return result;
case 4:
keyBuffer[0] = keyBuffer[1] + 111;
keyBuffer[3] = keyBuffer[4] + 71;
keyBuffer[4] = keyBuffer[5] + 17;
result = keyBuffer;
keyBuffer[14] = keyBuffer[15] + 64;
return result;
case 5:
{
byte[] array8 = keyBuffer;
int num8 = 2;
array8[num8] += keyBuffer[10];
keyBuffer[4] = keyBuffer[5] + keyBuffer[12];
keyBuffer[6] = keyBuffer[8] + keyBuffer[14];
result = keyBuffer;
keyBuffer[8] = keyBuffer[11] + keyBuffer[0];
return result;
}
case 6:
keyBuffer[9] = keyBuffer[11] + keyBuffer[1];
keyBuffer[11] = keyBuffer[13] + keyBuffer[3];
keyBuffer[13] = keyBuffer[15] + keyBuffer[5];
keyBuffer[15] = keyBuffer[9] + keyBuffer[7];
break;
}
keyBuffer[1] = keyBuffer[9] + keyBuffer[5];
keyBuffer[2] = keyBuffer[10] + keyBuffer[6];
keyBuffer[3] = keyBuffer[11] + keyBuffer[7];
result = keyBuffer;
keyBuffer[4] = keyBuffer[12] + keyBuffer[8];
return result;
}
public static byte[] Decrypt(ref byte[] buffer)
{
byte[] array = new byte[buffer.Length];
byte[] array2 = new byte[16];
for (int i = 0; i < array2.Length; i++)
{
array2[i] = buffer[i + 4];
}
int num = 0;
for (int j = 0; j < array.Length - 20; j++)
{
array[j] = ((array2[num] | buffer[j + 20]) & ~(array2[num] & buffer[j + 20]));
if (++num == 16)
{
num = 0;
ArcDat.ChangeKey(ref array2, array[j - 1]);
}
}
return array;
}
public static byte[] Encrypt(ref byte[] buffer, ref byte[] KeyBuffer)
{
byte[] array = new byte[buffer.Length];
int num = 0;
for (int i = 0; i < array.Length; i++)
{
array[i] = ((KeyBuffer[num] | buffer[i]) & ~(KeyBuffer[num] & buffer[i]));
if (++num == 16)
{
num = 0;
ArcDat.ChangeKey(ref KeyBuffer, buffer[i - 1]);
}
}
return array;
}
public ArcDat()
{
}
}
}
Hope that can help