VNTranslationTools icon indicating copy to clipboard operation
VNTranslationTools copied to clipboard

Request for Anim engine (Crowd engine)

Open Memorizzal opened this issue 2 years ago • 3 comments

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

Memorizzal avatar Jul 02 '22 12:07 Memorizzal

I forgot to tell you somehow the tool only dumps dialogue lines if it is English script

Memorizzal avatar Jul 02 '22 12:07 Memorizzal

huh, it looks so similar to this

Cosetto avatar Jul 03 '22 13:07 Cosetto

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

Cosetto avatar Dec 07 '22 08:12 Cosetto