Перейти к содержимому
Zone of Games Forum

Рекомендованные сообщения

Shadowgate

fd67fbf169bb.jpg

Жанр: Приключенческие игры, Инди

Платформы: PC, iOS, An, MAC.

Разработчик: Zojoi

Издатель: Reverb Triple XP

Дата выхода: 21 августа 2014

Язык интерфейса: Английский

Язык озвучки: Английский

 

Spoiler

Системные требования (ПК)

Minimum:

OS: Windows XP

Processor: 2.4GHz Processor

Memory: 1 GB RAM

Graphics: 512MB Dedicated Video Memory

Hard Drive: 2 GB available space

Системные требования (MAC)

Minimum:

OS: OSX

Processor: 2.4GHz Processor

Memory: 1 GB RAM

Graphics: 512MB Dedicated Video Memory

Hard Drive: 2 GB available space

 

Spoiler

 

 

Spoiler

3658ae749854.jpg

6b055c97f518.jpg

c6be17a81603.jpg

f9cb6deaa269.jpg

8eb9679679cd.jpg

47b0dc53183d.jpg

e2788ed39e5b.jpg

 

Spoiler

Ремейк классического квеста Shadowgate с новыми головоломками и локациями. Оригинальная игра вышла в далеком 1987 году на NES и многих других ретроплатформах.

c51dcd6e3afb.png

Игра: http://store.steampowered.com/app/294440/

Перевод: http://notabenoid.com/book/54355

Прогресс перевода: 211.png

Изменено пользователем 0wn3df1x
  • +1 1

Поделиться сообщением


Ссылка на сообщение

Движок Unity. Текст закодирован. Кто сможет раскодировать?

Поделиться сообщением


Ссылка на сообщение
Что значит "закодирован"?

Он есть, но в файлах набор букв, применено какое-то смещение или что-то подобное.

Пример текстового файла:

 

Spoiler

ld /JepyHNJtjBwB2tgW+gP0VIMbWwsast8aieHCTg3a9P2NKZbGB8DqdZMUKGVt8uffpnSJri6W1V6y/ALcQoQ+/9UHk76hI3dq4uR1SIgDtjLKgdN9jqIveTsX7fJem9OgDcXv8nx9Q33irJ3kTJSI1l+dbYOwnKBikI/Z29InVguucOeGmQ/Kkf7nXmL7xDmXI0d9Eb109Ox2fm3NVtLes81QbrklWDqK28XsbTU2xgGeJnwAa+2Kp93lksKDDw1g2uv

xlsJosLEHMReLLnBwRRuVluBLAfR3DyZnlRpxXTN+I6QFuMpbV18fFLlBH31q51XaXcuEEbw0N0rCxa7e

wOajQDMDPm91zHN8teZWjEGdb/LE1ICRZF3QoPGkSzdhssoQJeHJl8q18gFMmYudKhG4Tlt3VLfzAH/PThXn70Wz22tee0OfA0IiYJc7NBzS2NSowdUgBi+p7KdKN58DY+64JmjSNJ3hesjWvalR/qjqcw06Ne4PhEKq6xCmRxCmcwk0vQbGmVeTcqO9Ok9F6DitHYr28q4dA/5VNA671wqKCZiuy7Dxnyiz5P2dvF4vG+m0btALztKBA+dImm7R24bK3+Y5ai6sXmEj8C24ueC03po3PY

G2+lH4WuXuk1XyxFGPwa4NLG5NInORa3ZA9j/slXT2G6JVStM5vIQ41q4E2ySSXyqTRHH+aT5yjHKD6AnwOLJWhlPNRMRYgf/kQGC66Pvl+tA0pbs+wmoPR22fmz56HFhLP/r3dW4lnUZi2yIRb23Za0inIprclORuzP9khBK8iR24yLoD5CnLAgmNaclGvSXYkSDGInQ4O2dbIhM7CF

wp7Ug/d3L8VqBe8XDvPl19AvTr9XLVevGEOOzNX8co0m820FPIbWpTrmtVrg29KZGGlhiKyDQUti/t99KiRBGhgqtOary0ouGyPk/0EszFiMnXE8FOhNv7u78rL7xO3pJz1QaZ8mQQKD200H5d2qghtY9KK5zvD7qy32nEjFxmDtf4kVKf6jd

5mmBalTrhFJmlkFuPkBtHI3NfnfQm5QI1vuqHv+5VzbH26ohwuAdgGY29qTEsoyCWgls9PJnkY7RaS1Ek

5f3qrWnwYeFqUbKzOb7B59tVGgkDKMZYkNAxGX6R2+LQQChnTlh3nYCicgI/XOFiOZ01c6egZfFflPtFRUFcsltvehI6qnMXWWvGKNIqJDjX9mK/iuX/gIGmTz6C8x7rrXF/WMtbKB5IuMKwZ56N2Kd1slw+4gdTgDvRe3Z3IZ1fs1ZVpe9p3Yia9/s6PiMigOlD7EMay34SXc5kv+8sxFjzNeZ0DnkW520ReOpSflU2DMvQxbQKIDJBxOTHF2b9pVjBkbO0/zNWT41ghjSXsDnntNJ/CDwdwoJcghiRFfDH7p2JSRYy4M/krbuC2EWWmIBH0vWpUWPU7RzRa/t/UeL4dN2KMTEzG8jylUBl6rnRWmT/gXObAE+ctKMQcJAXP5IMKD8Q1JIS0CK83HOkl9tIScvNU2uUGv0r6PPbkyJ+yV+j9K2fr7D8Uqr5t+wi/WnEULLmmK7K/9hY65K4r8uPE7K8XHVIFc8HCx7/6FU+6j79sUlff0pOS1xaK4ZBd/9qI2g/Lee6y4pmbci5wJeQ8g882zVkJC3zvFc+LSMwfOEG5+6vIex425frsqylZaAs0kykjFPKFONqo/JbvEzcVGy9XRk2Tw5DRCdTSD8osLFxA3khE5jQLhEATWizKmMxY9mzfOF784xUx+ui/2Y94sxxwOGmxA1wckonAt/XX3y8ftXIc0z25rtcBQfBL2wfS8ZyBJo5POrn+qJY8p1YbQ4aw3LrEMwkvcj6cT6QBNWw4gJe0PRe6HY

E4Po5xkR+gCqT4kEQGE6auCOel4qYqorjB3YT0kZ3HldN+LP6Eh2ZFnKiyLKMKH7u78hrkl6LwbSDJsW6

Ne9rte8KXx49V5vXCB1mN63Tv3itm8qPj+2R6wb/7u/B37118Z7vURxZ5PSTPFARc5a6l6YeI7Xyl9R678u3duQdKQSvnHpdubR0pLBv8ltk4jPFj3D+YcZj6cr

rq1DWSXVln4iPNC6bxZoNbJhEXbbl53CuwmQnhBbUFvkuOi7+rwaJ1FxE42v/NzQ9eehz85wfloF6DHINXUDx+23hcSGnoOVaZZ+vq/vAStogai8liqc6PQ79co0q2ioOhDXj/swzlBTtUVcrILVR8/TQDJUdLVQQAK74nsgeRPUVbuhQSzDmfvW4184RPRjq4n5Tw6DpWK3TC7SwzeL4T9/zpfxt2n6SETlkMF9AA0bSSsESEGxmw+hBzp/c7GXcJOyXM9Lo0TfMND5x+NoU2hgVRFbn7QeqQ02dYdsU5Yp5pNXKqXIxc2wg6MidIIw3EdRVuDuJEX/QI9ctB4bK74UWoLYBQakAoUzvcxiEuuyi8WixWPsajtMY6d5QlG8TkbXIw9wbMFLgVitTnUQYhXjsT0n

IrHx2XGZvW5YrvW8+qlVOxwVIB3uN5w6FLz50lqDARCD9qFkxvOrWB10QCkcu7nJt/PF1Hx7X5RO9bXtK9nLYJRrpZ51DSi4i5SVGUEDFf+wE1ay6g9xOut3voh8hbR/2+c3+FybwAL1eKzCYtCiLHGdzo2qMcS3ySoZmoLTAaKIPs3ianqauRl5zxU+q0qpfg4cNjeXqZpdQoWe

vsjejOPoJMIFkmRZzKrof5dQ3f1PIMuJoVrNMCIao1GO1cM/fPvq1ZRr6VLNIKykneLHjaCH0ZQHLrdwFaQ5aeSFKsNOlIR3r8rAD7LqG8Xxjaz2jI2kK+Jwrvctafoo/dEebRserZJYmu7UOyNxAUbyhq4DJ9Kvbg/hbX7eGInw3CnSDswF9hF5iUNeJJEBehvqXUNW5+JegMR2awbz1F9vaHtt0XwPYPJyboGU4JedMgqqBK1

kZTWyyAgtyX3g+CB6x9FPj64X88AlOGdmSpqN2kAYsSyGJ+at+zBZnhcejRl8iCDBSLYw2lgzK8s8tlRH

rZOHhegCcrGcQGzvr9diE9xM2dj0b5WALP9PjYrpfhXCv7pIMv5fYjuAk+TORdI+pRi+6mOEIp1yOKjLK

xVZPpqKnYAhlRdN9SVyfQzAHr7RtCXRlebGZ9RfrG3tht6jd0RmyKaOb2LWxChO/60B1sZXPSWnKbhT1aPWUknPSkFbhR6AALZxKEqXoCfUxrNrEHh4rhwiQ6EJkxmG7qTAyZofaNOlYxRlz

jGJc+5i+jh9wbf7NS7sZlKVel3ZC7irZhZMFUCUULo+SNx04iQA4zK5pgF8OibzVyagDAzsKXRCmi/kQ8dOaJGlWiHdYQHbGAymJI9WVPMUf8CTGWBrtb6N3NKNbjZtY/QR0nAqwce/NNULGvFT6YVF+1c3IioZVJqpkQTlPgj22d9Vek9UbCMhuiEB7k4tEP3/qx4VgnmBOs6Lbd7Q8GiRwZ6+VNPlYnQKLWkCO/zfAs2JjwjFjCuCevKNzwj2LFsIOTC6eEIOj1ef4aoCr2dypV33YGEWC62QOu1WvXKoYF9ABVVWrUd9mG

2AlyGVPiEz/7xFyyg8mcGJ7vxpb0aZ2m/d04bvaBzoO1TVys/z3/hvZNnCrmEJXNChbQzjWWAIXGhxwtAqf8/plwVo96Lxy3xJYqmqgE4/52hAReUT4v9Bhg+uHYlXpflsnjkkF3O8neAFOmBcrmkl94rbGmz7GiTT/EEOQHG6smdPVpFk6loDICyMTRkhYKQA+dt9EGzbhZbhGVoBsX2FXAYRBjBAfcoiz9NpksRxarCuD9tzL

ySaBjovMKWa/frZLBt+3t0cgOpoRpJ7VaIl5ZHygjkIGIdnW/qjQINbSAQcbyWwm4i8OOAsD+nxmuMTwh0dG4ZCuBxL4Ldk+9lVpS3Eusv/vrfYS98pVFsTm4DZhIrmRHmMBhjaWRy1JKqcaG3wCQ5rwQlMaq6CZvXjzHgGfYANtnmD1gxB1Xhi2WtH

6oVimkOPxt2t5T+0/CbUSEexB4FRxXRwUrN4eyeqb2+VP4QzF+nPRvVIPRMThkZYI/4Cb5juSPOeLCqS0E7/jhr/ILzKzS4epLsvE9kerRA554zyy3Wy/gQrJnsu7PfHWe74zTul9K2uKwWQBCq7mbFLSogToTOGvh3z/tEUNERE7qNO9eB/v8IWZmWQf0cmyPQzHMAwJDmCEnaCJqwgUjzPhL72ixL2dkKWvoH9nGb+zprj1bFZAaHlc91Du6Ijc4EE

sE+gim8j6JMNdIqxdVa6mZmRLb0hQDG8/Ivy1HV9QULUSFnMiMmFSKbkHG/b27Dhld/U2ZDIJKMBvZsoItfEe8vLUda8Gd8/gEx2v9Q13zzVn6+WIyPanLGma2lhwNImSX2VhEKRxytV4fchv9ZO/Fc40Id/qQV4YRf+IdvzmP8l5LY9Zt2Us8zq/dHlf3MXDPIdKl8TE61h35PE0mkHWCwrpU/OmIzifb5p61mrfK3bEqN/KCPwh3PgsxSJfhm4OeK9yYNp6qXdQtdwwOpUofFrzEYRVc1gFMr57JYN/gjyl+ZFnby0Xx6owcRBsLQ+JPqFkWPOmKydpxmxgjYwRHR1p7+6k/hA6NtJwdskiRF+EkZYZc9uq0Om9o0FiYrcSriW0OsTEv5H9E9Wttiw2BL0xxj1jC+HsHDAJ6n3br9KkC

5xvCugTZJ8n5SgvpMVrfvQRG5QijXLlANOePniNT6x3/MYjEbYWPckPWM/iJ5ZI31vybBOgiMUwDdh5jVODNk4VZOYPToLu2ieag9IXGdA3QJMkmPRX1fg0GBhYkjEW7Po7tye5WVR

HVm38bp0Ezb4YfPNfAN/RWdJDcb5LfsTgWUB5Eabk+TfZeLVGLU2IQ4tjNQiGXHliKXNCMMMw2wJUmragqSQvuDpyPxEAEZHhg4j

gmprHtRRfNpKITP5dnVYCmy46QMwZtUbip1sn5HB+xchR22gcVEGahDNOogPSxtCjHTVmAxWPvP6cPoJZ

GkbWrtZiT5ghZpDHItiM+75HZySLpCKh78P2CoWUkTTQMQL8U+zHB5w0/QkjAoWO2zvobMp8nfGaIVbgllH6rtoGc5De9PS2JAuzKdvuRR9D0ZM5WN5gKuS5b2HnVY/Q9N7ae9BHc9sf7GE3AHdGRAqOHjEiTzltPGQow99oKpwCfyGeYe70gXyJE2ZPibcsLG8OmtH+647TPI9

pR6vgj8Th98x+mpAp5zgdnvEEdos1WwIFM5Yi7sPnhgcasbf2qVGoc5sVy4l4m8wMArRgIZR7vtkos8K/yZ17sIGdKw62eRYDwP1cDDvUdJHi8kPQSPftPWGyY1eMjJOBXXd453vkxJPYGKPnPXZZeTf0IPR1ub8u

t6moqmjkyP6S34k6l+G+gL/3x38XOPgTmsaAWtzicSEySs/zlEE9SyAc3R//I86ux+2a2bkaIw65bT7J9NBngcoTLdg0iFOhgVXzXR0AsXDvPl19AvTr9XLVevGEOPU/YCTmJVI55mxlmXyLcVo7gqQ14K3lJyXUvGo2rllb3zLR4EDNiNhDHRyW2c32ChRhI/hmJbHDKcuTCMkM97v3uPZYwsMkJdkTLG5iFwKJp2JRHWAj1suYvWxLqQop9Gm+A5LKWXwTC5C7E05amg

WAc+ngGnyBJfSmfhVer3L9Wx/UN+3QaUFMmUGFC9v2m0d7dU02pMxUdNs+4Se12N1BNxm3sOApm2DAyMtbsM6MVP200JXX43PQzFFIAJ6

1p+kN/vX4N1kpTcMPaRLM8R/XMA4wTsbiXPCCUvX+Ari9+CxF9ljEoYViWboTX2g5vE1kqTX/kbNhmVSKEarOKv6ee9CvlVbzTiq23gqxofy8s/e4YOcXFuCIFXjv93LBoDuKnd5s93dO440jxeozHWds1UtoV1HQNkMy4LlSGMHF1i9lSch0UmyY/hpNuAwBMCnXxem3d7q1QQqkm4o6nQ1kZwOte/FihNSZJa1qiqnb0Tlr5y45MgGE5jIw8QO8Vbhz+6cYVxc4GHQWH5Cn7zbvULXwoBzeXvNEYCW/5yw6KRqXF/GgRAe6jRXp3xPYiVuw1jTMIqo/JStsDLaRajWbMcoRnnL1GUZUCABv5yLdifsdFkMNqKorc/KIx0wjPRwnYF3IA+49u61L4IRv7U0zGBvNLyZO0aKi8LBWYzmuRQ8n7RK443Y6jH2LGMM6/zhhNE5ng47w7LLWBqeGdJtH361FEZ4t21BgSIQ5L3EWSdWsW7Lx6/wKiFo0JAGPJOF1StEOddN521wPcJH0kCInm6ZCa6NcVvOxCZwrn7BQnTaNLkjwiQ28iFJPBNE+YvXdbz

NVX6J9CR1tuMEeFPbbAf85/+43p8xQ+aqDg4d1BH0ZBELpqtOQLE6BO8Oarw9QKkxW1N4Lbg5NwHStB+0CtE178/vhzvPJh4lJ64EHICmn/ueDUj+etDZz6cnX54T9tDNhFL3fZ4jrNMKaNHt9hHh+OXOWvRkFf51IxPeNdXsBE0paIi5zlXzE5FWV5

fT3ZfsSNmkHbSspAh6e1m1yzjkRfi9DIDKLkm1YZbEKAmPA0DkAhtGB0gqnKP1pI6da+CEqZmwz8IaPd9

tquhdwPpO1BE/GlbsrbsoMPcwF22GEb/kc/oplUhuWGYQEUhCu4lM/cUS1x6DxsHlDy9fN1MSZ5I5ToHoP/hCFn+MG2kFRX/LXcvU/yQ9vqsV7ruSZAHOZn8wU93X93SiTfsMK12x9gXtzIH4B83+iCYByFNk8hyHGKE2XloCCfbR7XkASqAVW

YmAXnayH5Ieb68snLkLzHb68sP1aYF0BPm/AxkYyROYhGaVOO5muWwf6FYb83kNb3ZvQPQHJ8tzO4o6DWpLz9aZzEmBo/+clhyLukj5afMKxxFDwwYTJkrpQB7bEDWDNOdeOqaBCfXCuvNr66x2pC5pZ+0T+UiEyrvisa+3spRAPo

cDGXA5YezcIEyvpiN9IG9WIX7uqrVrDDxFiS4W9A4rfJ6wSN412C5ETue1tOFo9biFw6/strWlJITwlJ1HRBUVvJ2h+Y1vZq0P7vKxaDisi1ALU9W/DMUuYdO4y3MNLyS13wQfGhuxoJJVhVzOXkuErilFwJEdUgcr7SLVilgA9k7Ap7DL64TRhAGtEFUqcaXG

pzm4vGDE/UBBnrNxqWlLvNU/rL+03U3uecdSWYPz2aLABHtrG0VIoKZT1jOWaFy60IDeTpiZS+BNIG+Uw05Go6JpXwlzmeSNfEW0mEKh

+kP+vr99n+bRHgCDCQ31aTD0gBY7yvXySYpPSXJzAWc9g08+FxI4n5nK7qDa35HUAF+8MzozvkXQmgQ+S

bHPB7/SHVck38tyGDc8YZsDZOQ0+vnNasGEJ83nFWZ6Wo8gns8Z69U6QWsa1LIyGTXFQViDtmXQS1Tj6doORIV

2CX1i99KR3o8e4jUxPLlO2VK4ss3vxsyiHBRFNjF/NWDcJJUka+VTIhChehjPq5wyBqMH7DOJff6Es+gZdQ9TBDUQU2TLvLX9T4b73JS62Di8WVcWrTMO3/wkIwsIizmfp9zFBfyrOlNzP59BJSwsBCBd4Cpk9sshlk/hC/u5gm+QkYdUsEEBO3rwRR8fIPvC9FY0vpUcJt4qo9SWcbqgfAO+/VmEtmSUE3Lw/5PPDXFlvNDabvjdcFfzrizsxjk5AaCkCDgL5hqHDkquMbcc2f42IOPGO21ndUC2liDXDUl1wEFWv/YTSy5JruKFnSWvzdHOAIuMUrVTZ2mZof5M5UfKb0SdyUM7bTOkZZ/EXPJBGI32asQcO9lOKHx7/zAU0YO12ll9ErjX+u6y3fF7gOD5J4YVz+kt3iTS2yONkehPRsoJsxNoXWw2DsDTStediHBJBttptWEwH

ZRwW8IcX3mS93bH347IziKxuYQ2ThvUCfgGribfrbYe/j/d+wM+w40VHDWItE4GlNu7J8C/oAUuY1drYGtedsU7N4CAoVFHMSTR6Z9yO+GHsWeNwwKRWVdfWs278FTG7B75J893nl8F8B/b7yhPz2sI1Y3WpSEUzLdV4b8cEtqnUyJSjGxkJDiy2R5PmLWS8f+YCCC8EwS39ZeU/Yb+/IpdX1F3fuhgXn5ZX6OPGJZIPQlIrdd4G8IxFERWx2rkCfER1ay1zERqHUwVFIR9h+HMEqlomrRXvdgmM

aegHK9bOkIRFAWnaq0QIKpOHSYGmV/WzKiWqfSjlwQQNc9jNGMWgM7qw18pGjeN9/99MA2qgAwv4yXzYhAwnBX/qzEB8Kls3tSddVUtjvjtf8mtIvu4BYZ3CbZmP897skCCPjTn/y1Xi2O2vkpeSUEBPV2EuylBYgzeTTVShaaThl+XdmBtWvymylZKWWcsoRXeOqkZ513fJoPwIAe7WBZhM

nkVfRj7QYa4YV1emHr36pmz7MuJrLfS1hrQ7PJmJStcaCr97fmPMNGkLd8kusepZmfuGJD9fXFNLTGF8b

zSgBZHF2Kw/PK1/oKo2lMRbaNs06xh+ZAKqJAD/ASTD+YgSNPG958erne8mH44wjBmqv6bA7goiqipkbGsrMVNRCAKvRWV7Vi0SVCmNTzxYj7juGdOaYXRr

eWXVd2RkPgfiFx3K8uURK4yeyoS+SiP2edO6thRkp/quaS5FAil3u9pllANa21tVsCFybtZDnN+02n7wo1X2S9LPU+GqjGVhX0nu7zq7Q/hTf3DrEZ6qsXhJg7CErpW3O4BlGoyai96MamjFLdHKDoBLuYt68Kh6tb4MKXFEP8c47nPav2w9YdytSz

A6iUGpaGZ9gzP1MVfkitEA46O2Cic9gzEbpYJdQxMlK+mS5A1Hn1Bk2AdS65oYDJCpiN0M9T7zMTzYxMo

5AXvo8xQVOJev7xDO3krnPpocsK2W9o7Kr1vK2ZRT+An1qBhK9GxX4LT3cknMf8NssjXZG5U7idvPOZpc

zrLTdkbr5pCkoFZDHvUwymO3QEetGQ5nD+XhVSyBijuGV5ebl3eiNPJj7OjSgJ3Iue8xyy2OCywkJBSZo

Uh+I6+/EsxwgKta1MZcXo/lmj4x0hAS1h1tXD138f7maHA7QZbkLsugTN9jts+b4Yn4XiZQPE3/LkgUJ3e8PobezDplKgj5I0sx8f2+81si6OOvHvTVB5qappfqJlVPQ6DTOQEIXoAKLUW/+yBAL6PaGJeunfxWbvaFIST9lBalPI2KjLpgsdEUyZfBPVrBPoB0st+CXMZlMoxMCHLSy1hy4PcNfGy3

qBwItUaK+VbhFdbNiK2Ea0eWHbv24gG1TKGjRd0z2N6pGj8epJ8LHDyfOCs4pS90NkHsgsTACnN+VLcyv

ORn2h0sc+USQOu9AK51ECELTub6mPvenxCyE4YStBxCmZbaVVsGL8jn4R9gooc6DEpOmwm0gUy16ocRMy

+84OStWrPQ5oKT5xPHb7KiQZ+r6J8Z9uNuUw7tridMwzZnmBKs684hZkrHc9Jxz0pNiTIGgxJshfQiqKG

VxWyCslxGtsRIsjrLVfl7KdVvZeWFCG/PQ6HHyjHyZeYhmAyS9s4GDJIXZ1BCRiM7i6Zxvtd7oAbmD7dr/yObu5YXp/OL9jtUcFCo99q0kMIsdG2lm2gzNiatKuoF+68RcgW3hEz1Q2KHZG/h3Xjgh8GBfNAbSQgI21Eg07xPcJ9AvRG0fWyVYHbZkt8/C6gMIJsD5cdCfnXGu+zy3pQK6FB2BADR1svf7C1QTYUlRd8QC4CrCtbi5KPzDRfZ6zRpBtjAmaIiT0yQ

NTx3Lcy7W0cJNfZ7kozWwGAkfyZ/9AHf8RceM4bRBXl1kIkYgPWMuHIKVUlOVdd86cA8xqYuZNB5j1UyAMjNK2FJDOcqinjlxtzKifW4fhHO

ymNN5yiRlWPTf5qBuqSXJqKPw+9mY6DsHHEDtoHT2b+SlN4NyREQfAr5jDsyub0KSb/qI5ZGjjrnPWteobxTUDqJqBD+/PznSm+8XTt9hvQ4UXo8E8qbj47KQRHVMGIQ4Sj2zUz2mVqjFQu2eVRUzltPZSqYHj+S/rfOodOAL8BHcXvKmC9ezQ04/37CHOWCA1XONtp9HWmB7bDdfASkzjSX14N/SNKBHazfaCrjgk4a9r8ATKAP3r8DjQD+fg9XSOmXEO1Ff4b17trLswMLNn2Ezio5UDyvdeAA96cSoe38

ixjNUrP8g69oN+d6xIbYUqoqPQtggPZC914F5LC8XQClcltVqtCLubU0GZ0DAhdJptN8k4WdfnMcor5Qv

89LeL8jMPTxCb0ybQ9kYNEgB/vB69Fl/hHj+h5Yz0oDjctrATj1p1nYwnkwUWgPknBR9PuVZn+QzFdvkSIxTHJL96+x9zgGHx+YdEe4KVhvpopUe

zVwRMe1jM/ofHKMjFGuPiGDYeVpPRke6JXS7IFNW+pOg9FpNca8OaSww6mOpY+PAee6LhltLN9qZjEq1F/xn96bxOlPTLiorT31YVelMuyueinX41/HT9HM47zV21COY1x52ZewuXziTwT+nt3ylAyRWpEnmMQNv0+KG5S4HRMxeVOD5YoPoZYDgODABPcDxf3

Q/ZIRtGS5r4WPII7w1mzNgP/ojQGpJrCj3ORX+OMn2QyPenkZkgPXJdOMutz3QSM0cUO8c9LCxaeTiAh4mzMJF2TuQ44JrvQ418GjujB

h8vSbGjWR8NzG8yG3OWFSvbiRQUaBqWF0LB6feLQ1A+ra64rBE577T/KGeYTXG2Cgv8bodc1Bk/C1NmIfMgcJAo7lOsxG/ULUMDMq/AVmzCnAXv94d2qjqYQHzRnTwLFh4Hl82c8uYd891faRdufartQZjH+e33pMUzKTkqXFDZ5Vcy8hMYPP/cEcgsYbpuYT6ejT3YMLGD17NNftuDv7WsDc7Ktt5mHACm+lcva3MRPJ8xn8cNZUqmZGfrrUJUx1sgHAi

lmnabdlWgWQTeHHN61ISPMiNU5iEwQOKM2Vt0TkVnvbuAPA/sVfGgS6+wE3EYP93exr3mZxJISx1NwEOcmb51ZLZAuVRfThrhMmuaF/B9cs2owWKtqqY8qMTAtYFr3rrRVN2vdt8nESWcydAXxyI0DzoDzsvbOnQM3lboyOjFQff6K4bXYmt+j0

GGvQsB/i6yj6mDtKz5osOflZgfC4kvf0B0SdKqvTTfBitl0ASAxm26mzgPWe2FJG2UsdwMCDCoHNHQi9U/4kJCzoaeZPe7O6QAlRsUaQMJorpLvEMKAemYFh895dQ79rXm2cCkpkvuAZxVeQ9aTSfsKjebF8V35KAk

4wZenULYSpny0m1pks3d6sCvjgpFQwsGFXEznR5gPQiH76QLFHfkK8V9QaRfeYA2KYgaiYyo86BWcBS0t

NvVxTX8eyzQjptA2CFq4zaAn2KFSG1LxUBQxAJQyEjeBbpDGtypM04v0XNJEPebdnksBC2rAC1XDHJRSN

07MtBzCQpaXtivSG2xxY8ohqTlB4/ICv1SGAIr9Mx6hC++pI3CsFD6+wrIZIvrpKvhZIb+x2MOzkcqLktclsSBwgXtfy4StqzW84sG2yBf34/FBearttrnM4DbkeGwjh9ThDwZyTP98JVXOF4OvB7zsHkG2B6pqBNOdDVzewOwLrokDXOD9fw+8iwr3Se

EwT5dqgJTKmJpFoKOcmJCoO2TfLyO+Z3ly/4HTK0L8+0sp71Chim8L9XJByVz0P3BDBycsROE7Mqr98INErx2rjJcPthUiCU0iNbSvWsNYrNkP0nzhO

d0MASa3zijQGeoQ4S8k8vGJsDhMWDX1r5tJZq/c/XuaZwdDGNncv+mGca8kOo87pBv0qywvqoLlew0pV5m18mGSmO/4Rw29jZviIcqBHb0jBtAYABmfSpCzSn75rbZC133EoZ1VY4oFYn58Dy+tZEk1WeWAU+xs/JoG1KZyvhL/rzNm6x5li/Lo55M4jd8cI5xLTxJCzZvZa3p0Y7HLzx7bGZ8HE2uIHG7h/1w1/bkNF50/lQwiadAuuS5vKdjymcQSCp29jVxoh7w2vTBDLz1girmSRvwoCqK5aUC2k/nDtKL12wOn9FXkx61SduvhqGzpaTSEAdBsAqmh5VvCEA8FJeljkNd27qPqah0hNlOXcetGjMsDPFBqeR

OfL6a86YamKDFiB+G1KKn4FY1vWI/LJr7GBiDU/yfHgfc1SpreR/Y5Vt6KbOV7ZrbwxqJ2WqQjLL3PxeOVjB4D9DbhJrRsQfjEAkLU/kZg2uRnL9n8AZ5MQzoQhrPwxJRKXcS/qnl6Fh7DtZX/uFdBfcIX5WZ5vJo5tSw9JFzIGkpF9YcCzQTcLgKbe01N3W+LfgmLsnskjtc2r8/j9OAvsT98hK+3spRAPocDGXA5YezcIExmV2thl6Z37sICV9nuKGqS+283elE1cGEkvgOqTmsVL97lcGR

UN73GKWD6iJ4HbvNQIw1SzRDPxZysyW2J1kS5CifkAAuUTjZCB3ZBk6o6KaoSF3/U4KRWaF8y2gCV01yOr4RnRgQCdPGA3rFUWUtmABzk+aKjGQxEGksPEFx+i05hC1ClQMHLSvJ95R5poAl

86ptJzI6T/xjbr6tL8Q9k/Yz+GcXi+IKZwOfY3VrrNVOjZpyTmUetXqUEtA5QrsahCvgpzX/V6xkTA+dVIofGr8qU7sivpOVrtPUlkuB807RQ02h3hh+8RqfVYVql9kNm3aeC0GqwUFc7eX22iuSPwPY

+lBmN6Fieb8mdlBkGCXpA6KJqEk1O7fdN2Me79reXS52wQJkt7ffSZ80dGsjbIt6Wr5tbjJafSn3ePq8D

t9QUUG1S5+Tykz6DRNI+rqqH/QL3haf25riNosfg7NfbRD0rhC/zoLKRM5FO7XvhK+Hdqo6mEB80Z08CxYeB5fMSLLzcKeKfLdrP1tUsPvbxlMazaDD6Bm/hdJEKCwrOJBkWcTh05e2CWJSJVMoqhvfQRSuzZr1o5Wwcx0VxgDNMhrOrUqIal0yxvv/RWgkzjPy3yZIQStlE/fdGIGWR1smxihnzxVQG68Scbqqqtr69/iU7Eqyv05P107TjcpRNkOxKtXoUlQ0M2Q0Pzji2hD9lgWNHrBThUMm5pAKyRsitK4GMm4ey4SWdQyBc4

kLTykVjCekonmJTTU8zNd4Aqumv9/nqXiOnlA6uF+UHVOcxG7bmeksHE+6q44cx1tWLLZdOeCf7lhiRv9gXqAe49T8Hvnir+W6S0QfNjKd/goiQ2OmoJWBAOQOOcSzphoLMTqMIQ5QvP205zHm0nUsOHGdybGWH+tba6UdmLNNcsqrELzzSokBIbn2n

AEwtq1ZxMugkdqqImBXihLm9dktUQ1xjMem15AD8Rw/MKvfetlnBq0Iu5tTQZnQMCF0mm03yTu6GFWBfGZVXzb4/aGokvP9fUiA3jBd9uMAO5jaPQK3ydhZmMAp2y8DIKGTZiVazadHskAzP3dDSia8k/NzslZ2UMGGwujKGpHStjh3kmdKrKr15DSw/xSa0OOGsGyyRhsSmX9QV7kj3S4Fa+gJ50OvQKsiEaZJokvIIE+T1nmPvsouENuOQpByZUlRjpo4+hK2e

fFLfTWdT7jB2Fdn7IzqPkOWD6m5eKhjjRiWD/V57K1GtbXuKt3W9rwMK5eRDoiLAVhmu6TBny68siW91/W+Vsh5EFLDGRS3+eA+eO/A62SoowcTlbGWQR/OnBIWGa9yn+KxVfU0wQYT6Nj7Gh1BYCFCJv7osFpT7Jusv0K6y9l1akqGVxNa1iKegHQ/tyTVeRq1oJQP9d139BaUMD9SbjP6L9zMezgORuf4FDL617ckY4N5urW5c/4JqYy/N3LXNao42ouNVH37E1cbBmzNXi2O2vkpeSUEBPV2EuylBXWezBW8ICcf9qFt8oZnJq1AsUI5EZVm/lL8Q7hNUMHpifhMMpr74MhkoIoqvEnKT+tI8Lrg+ocOSVTFCLTzf7jqrdrw/hMT0RobYxAWOCJDLsPEAxpGjKbVjzJN5ik4/+fBoxI6EFTI3g2QU35dVA6An2KFSG1LxUBQxAJQyEjessNkdpPma5QW4XO4iBJft2ljvX8+3AkePvMg0

ugrTiLnKcy7g3ecNCIID2m6LQbnR7JAMz93Q0omvJPzc7JWdMdN/cog7/OJgnpi212tKvTQBQVlTZf3yBxZNSECFNgmCQANMJ9Iw/UmOGhBfwTHaB92o9Hjqj7/7E/g3jz7nHhUXyGrW1ReBSGK1cmkE3uQI6KtZ2GXREVWkzG6cnoK4k7ElalL3c1/wigyNTWtrdToDhsT/gczK8HQuMQINZ7Tx30G9V0UBV83qCZBHWhaCQgPfgGt4Lqpwj4amOrn9U8So54r+XOZzd4BH/WZGa2J8uD/wkdmntnTDrufyVvscv2/lLN6jcnQA2q6eTNlePlNDYJlwVnygPpffA6T2XUAVqb0LKwY/hFEYeLgxmfb6TP1cO+oCq6XbH3/y4NCLLgu5aAhTxnn2T314fOdcZdrzG7V+dF2Qr+9/5Jl2J1XPuBuxwCBl1+RGr1yGFp/GccVY1W6CA5aq1bIuc70arr565/EpK3ng+Q+RBbtsMy55UdGzYaoXZJCpxdD3e8bw8sGFwEFogYDJ2dAKuRr7GkUwmnU7gXK74mL3lnNf6s

hI/HkHjWq5bQ52oSLqWRnG8ocsmwq1i3nEw9aItX3vue4st6NbPU7fhvSSR2CUPCS8dmzUv6FDN9Kitjag8

0MKfaKlzZsGcf9WiGVdQXDU4tAMKdc4wvQw+mYMzBKfHYQnYEteybReQ8IkDzKxU5FJiX4GGpKAqHtSXX

uXvcGHJcYAi7hQRRToc6W6ETlhw9ivp80zqEQ3xZZXzwCN8eWQssa2BeE9VAdkhtVC9f6EOprQ8aKTBqI

8e0ybAKJGiQ3At9+THzrE2wRZ+JbJSLuBDVTHg2jJChIwwDNp3HlxyxMCujYLQ101nzFB29c8oY1woHWY

F96vfFqSPtmBmvuSjCQG+P7JFSladx7Ssv6pRMFjauxjO15EdMKSkHanay4zjjq+B6Vc5y/i6uOto4DqXpNlShGm4GWpokwVkkzz33RwbmGBJ+akMTQfm9qvVMLG1DZT+p7gS+LgBvBzTSP1NjKeUC7

CIgwwUAMA2fwcFpJrBf47AFuE7fVM4KZaj43Alyrfw9wAgHO9VW7wlQkgECOyA/05zPL5JAsKJxJYa+IbiDNDXB7ttpElIIXOsByM3YHe/P4VYuJzzcAkMgi9FwPu+Lo0BMZvQZtPfV/5sZY5daWAGfpJiYMmquY9I1CTMnFicBN0K+MLP+5e9Fm6q+ZdUJ7vkGVN+282zjuWtjYi6M4OAWBZLlZ

e/Hb+WOhhnD9sqRriSdm7d3j5eUoEumJ8RJT0QqqGiOGCLrHDK+eicCx0hOGER9R8jOCjrYe7thXeeJlPI

6RUIRy0CZVUjeRf/cy27JPey0r5axKPcFY0dN4nmcOEFYyjxYgXLTSoRLE5Ih+iknhdN6zsafZiBkxjyFVUSrinyqlddOdDM

AvQ331X2/f2AaCQ4j3g4qWQYZKY7/hHDb2Nm+IhyoEdvY5ct10yucaek5fp15ZQc645aJeJ4ziGiROamya/AzPQoJjrOsr+byKc+nepGAu4xJLw1e9YKHMhDFxdwGW848B68IP0eLEKlYmIGOMW7EnWGoWI6FzcJrpY

VpvF8TYFc/B45cRyrMiV2SFJ2W+nX2yhDoqepAOWNT39GZAr2LleILEEmEmJc5JpjRFWa8+u4N2STOZ++xlSMn3zgt

+nrPGZ57NAl0Y3cbPEmHsW7WmGvulENE5MaBUrTe26u64BIdgweZLoSM5YKASIMl/jtGZ2JuClxs0oOLEgeYD42tZIvqi3WfNmRkyhz+3rK05o6JpoF8YLlVmE0qKeb2WX2FeFrd7zyj0+Env

UYTamnwZKnQ90/xSX7Oc1Ffa1ynuxo6jwuqpZZqEHujHEthqXotB7U9BRFHzYWag7UOHPOoZEQg6uxlqSFzwtAV5qS6EEn

AqqfhyEUyG0+iljBpGZr/E5tD4JcG0ndKmJB57b/U5TZjXdgZLp+VXWYFZmdXDTzz2EyGy+sA63NI9Ng3iYEcUYhACTgRJVItCzfAQWz/FogvmnYv8crEabvha6ztB4UhA0JW+cb3nmRFngBtWY8R4bGvAS892cHXe384OdWIaHKT8TsoTlNMgVjI

4aoIfqKzvM5ORSkyQS6O4ovb8BPt9fBYh0Hgxjm6yiKuXmiSePWxIiUSZ7b1RHUT35gqKHKPX4QVURHFW

tEZFV82dwMnPmZDQ6XOG4XEP667eTns04t7on2/g8qhpg4z9S8B2JYTVapjuvPgOJD9EghTVXjPuibHIdU3cbyvUpQUGi97vaJPhvcjufRRUAKoKD5RkzCN

QI6ZIIJ16LmYAqKFNbAhUFXr3khc/0qCll2wYgZEk16EYL73nnEX5Z2mZcncFyHC1ycizrt+8fpdRXVsw95P6geSLjCsGeejdindbJcPuIhRL

REu8bEpVpwzcrAqyLysyI1TmITBA4ozZW3RORWe8XSmDaQA11FLcy0aVcMvyMLrnDnhpkPypH+515i+8Q

5ifY2KlTBK7Vah9ew65C+c8Pdfea11magqPAotfojDBoZGHsT4KArMV13d6BEWBObpsW6Ne9rte8KXx49

V5vXCCY5lNqqHufzvwSQrU2glqVh4LTrS6j6BPDju+xqhqU6eispgmjPlqAI0NBGu66k0AOQ0/w5F0KHzGzybvtnv5of9O1E8PshB+PrVSwL+LIyH9n0u5XZ6I3uKdsM4TGPwLWbJqAUccTvqDyPPDp8FR

1xASidftid8lQ0AvGXH0dMves79NXGdPdSmKBNm+Y5S00dzSpRiLJxSzsLgI6Y+Z1t3/AGOAzPSCPOGfz4I5EgPQEXlccU5+E7t7CoFHogV+az3vlTLUztwLsAppifnplgpzaZ7loZOIiP9j/tWz+OIvptZeKpZPLeUAoWF9Cb8JpWb2p1netqlSabs0lGttamKZQRR3VEYkSdJI/Gzn/dWIGqSnkR3S2583iU8GtEjbc2gk+pHlJ3lVtQNP7J6kbSuyQjIlxCH2vyP4X2gt65pZokvyUlSjlem60

igyrim/KFilxu6YQZ0PMqIoHex8EtyrinTq6WWdGfgj2JeKFMBl6atvZExZ2n2em6Voj7BawOd5LMW14ZHqvMTx

4HxqWoeDY2q65ihjNJRRF92SwfULZCTwj63AQvHgcc3qhEXtHRHq9y05ga+aDw5YQJcQT1C0LsO2HxYpe

7KiqAou92TWO0hEl2GzOFyGmVIiYzOOCi1k9eHSOO8bwXtoqtz+q+eSkCT0RNuCXcJbewS7wbYsiyjCh+

7u/Ia5Jei8G0gxm7ymX7mzC06zf3QB8NDw5v1WPWMrrjqfEB1BC2M7x+Gq9Z0MRWs8h0zGHmi3oxGgvzcr9

tMCCQPjjTOE+dBkjDxTBamjXzTIYGudNLI0Wb3yf4A6I9zZC+AMCnhECX56dqCNBg9pJD1b6iXO3yYzkU

jQgzeOxm4WvpXhwXwlhQmVG6TZk4Q5jYtLeH2O+J5wAS94cUuDFnHo8QkO+4dHN95bUwg5oWBLLIYV4b7

hGYD9y6cHvLj2up/pf2+Ae7b83wTLqQw8xXZlWcQr1OurqhQIC9doVRSMk6Ute5HMH+2CwDmMBu7bAQ3i0r5keOt6bkr49S4

78U0k80ztC2dZg+IQ883eDWmy0F8WgRm0k0QJZBzhG1GmknKaPKpNmkCoEfNFmoCEGyGpt87vtbNAQuJ0

zDNmeYEqzrziFmSsdz4Ds0SKhVlXvdvZzBdjrYt5xGem1XtyWy3WFRe7FDaJl2wTx10Y4UCNrYGscMFm1

1sZcN0selpDjHBzeaHKsFF8Umz6qMy0fH4ECc5xtO1VtIqKqgEe6JK2qq3xjWI/jM9VKAh8k7bzDNPpfJZ3/NyXpCvNSHave2ZRfB1XZJ7V3vLBvENfKMJowEvp83sJflXtJdHO9OxzK4o7YjxDoDRh6u2AuadwwgROa

qCP4iaZp2agi7zCagd5atnn49mZiOj5SH2KPAKaavRl1NOniVaspGnfbuZAIYWuSNkLn49lmyskLM7q+j

hhKpR1cKgbsFVrthv56PM4n6QUw+TbBLni5M6EgD7gZJvO1QkzJ5eIMuLJCB1Lakff4cOUfNWveoZY7lF

XLIzsSe2m+Z5onZPORte4p39Npeh4Oo11XiuNLeqaG3+tTrzxOhyAiuajFuiSLupexnUHn/minTYbtvTG7/ovcArVR1VdhDlgTDfPj/pT2Ws7Aw3UYe9Mrz5Sn0s3h8m2enpQ6rG58Q/Oubx9rUaIu/kG3eLRq+UYMaVFl9ed18ohbHWlURsWBI1E+NrhtbGynkNRStmQV2RcMtsVG5f0gTG9pm9DFM3Zg23ILL

9VS670CLQquGjXdyva1pK00oRxTDeKotAkM+ofyb7cgPuqDlmQ5joR2i5JGvlGY0FCDeeHZm1y+lgpZnr

uoBik3Ntq6C22Vz8bvjGHV7v+c/XxFuoZwjG+05aEikBdIlFRBZrAj2s5CmTfnc6HOfUmm/1cyJe6NFgLae8klAXB2zMqPB5p4mpaqiXy583K8IXUjhgkQj6NqOO5UtMspYAihgQJM9b0y0eY5G7Byh

ZZnhVYdLu4NbqRP4fImpJmIKG8o1YJ79UUc9s7YHEt5Tq8XtgiBElsy0Sq0A+dZZ43NKlPTOUx3A7hyAL

cZOBdElKuTKAx8x4RkuHOGxu1smOaToBShZv1kY8CPAt1IoYxb5ttzWAnGO4hQ3nbOnjeWh9Ghl6SZxH6

YxSjIDT6Lha+3spRAPocDGXA5YezcIEyvpiN9IG9WIX7uqrVrDDxFiS4W9A4rfJ6wSN412C5ETlR7uHyL

qceXqvleOuTc8r9RhpPZ46DQ0ya7Bk9x4fJZKM5m32CHMXmWJ/3QmOjuwg94hdU9e3Cy/Cv0R3poybMa2mHFmLf4f7ZgC9UGdcseX1mCV20tsZpDiLJhQzu1xhpX/Ye3zheAnb1d5ItahN0Zt1vdDErgY/j0sgyC3hyFmbkE5OkvBKWaz80E88pd807GOhnKrYDTXh99axlQUe0Tq4tbPRMoyim1L9Tej9kvDFdcW3/6+vvetYY168RD/hKbG/CX/JlJ0JRrFOJaUjrO33q6sbBVR5ZVpLJS7yLqRoyqodo5MTbqUAcVzS0Scgsg4ZacAxUS7PvHj32sz0gwz

gewiNyYDs3EOH9wBkE9lrcX/dbkYmK2VQ5RsYqRp/pjw/rtuRj8TxwLiObSXMz5UG2FVqRizXEJnpah2IJED+tV5WorrOdEp3w1vZbPuoSEI0qxnlF3Gthts1zW9K

zGJQy39FUGYONV09zJkLkr9yEyd3lD84LiJTbV7cyu+x0EhTIHZt7Jm0BQ2Q7aCmMaOmp3aLZMHmt4Zef

pXWdBw0sy/01JLCt1PW2G3Io7zC8W9TDIONLJDMRGcOsSBsVnxFCSgwlwP3HBIovlnnNsUf+BmRwL+KGQgtLBDJc6b

V6ejhuSZxt+Z8R8DdxLtvZ2bNS/oUM30qK2NqDzQwp91D3xzOHWKfxRytogTsFRJF+J8Vk+FiE6MFZxlF0JnYHGflKXL0OQwNfXrSCnL9lU

o8QsDqZ/4XJMINgGynhoS+uSzjuarvMXmq+j4vu1u4w3F5Oq7qXlFEYNzb7IJZvM2ACye17W2bqiCLNS3dugoS8U

GC4j6+L7rje8o+Kyivx5Z2eUQ30DgM20YddUldHVaXCiUmcgrXqht8iJF6IxdKn6Fr2HEZ6xEcLUyppWQ

yEcwkKWl7Yr0htscWPKIak5wrzyPRDPm2xAVJQbTnUqqPNdYl6s0vnzo6FAz6OkOA8DlJw6W7e2CSkWkN

eSB48zlG4xlz1ZCF+gmeKBTe7gQTQBQVlTZf3yBxZNSECFNgk/tCfbeQmNZD1EfhG60SwHa0bRTpgn8i//HLkl3a/j0LhrT6Edspu0+bBYyIpUvA6MZzBM7NWEgFEQ9kF+m483Z5dUuyh5CKMPF1U7oIL3Pa5Ez9dqrH65t57

YxajrzCmR3vfcvdaZjOb0dViKpWLiqzWUhAEdQtOVPKutA3DoCx9ihw6b4hYpozII4ayjtKyGyLH4LQwt

F5xu54m2C44VI9QstghdaH91sgyqGHgfcmD89Y134JiFLxK0eXaBnH2ZIzhBWrYPFtEWxSkcFubxenlow

lnd+wvLMXLCwlFzTDo7VA3qV5c8SirQOGe+WUC77dc9nZbxYdnDXgrh9RXJFkgrEf/6LFoMXngx69Y65+ykwBTD9OLpoenrztMGZ6gycWJwE3Qr4ws/7l70WbqrbkgAkJecDib2ZcdjN9v2SUvyYFtW1eqdqn0exL2miPHRd0DU/UHlXHWF344wkyWbrazObs2amm/pV3VywUdAA+IT+8PIW0EZndLFTfm3N2+mcMc9GrNh5NIXNdDJMQQ+5IUIuosB2FcvON1NxKy5qLS3/YXaSBPJZ/0+kAG7/QOm8YliO+cjvVwhHv7DXmEmF98sQrUQ2G0N8dag9nnU4d1eEE2WKbkoS9KY1EyL23ZRFN6mtrpUDuVBQ

CQ9JE/B5CGihvSiibIqlpWz6hj0mMwqywex0OESQfjXfjWqMXdMGcXykS6WyXHswdJTN9X0Hp400HK4yNZIF16

BLOMKKUAZh1LWcaYP5TrkoFMPiDueqlJzW4QOCc7seWip2mBKFWsX9q3OsKz94PZLhljIhhEIPWIZqhHJ

3iM2aydKxXvgBO8WW/fLOM21ISp/7uabIRzF6blerAb1S2aryAK0gx/MeAgyVu78mccpRwRkCGC5UroPjQMv8jBtc6TkPuAt9j4KZRL88jdJEfC8QkQvHNOgmTFo/tD3EU7LFWkgLPXmnTRQwBZX0ljThl4Fcc5S7PwxFjWznkRRbkee95CGqWDxREd1GEBVEI67xaGknte3X

5PGInvsSkZDO3UtDdJxOG6NHcGkwgOfxY06/QRuI0aWMhaWboghG/hen7I+nvHK3Aw7/ZA6jYj8qs6q6vqciLgVft51Aa7dyHiwJKBYwngzjNKU+xVA0Q07P/6dMwnr/oJe6RiLEsYfhxAuiztx7NQz5xur3BReKhGOAipZC3Ad+z44lb7dhBxeBUoZhjEM9I5IvfWRZKyQj/BrobxhDSBQutH3IWELsubO8V6ISTv9hWgOSEEyz0KVHqWrelJ8r/J13OVa2ocGs3VMWzPsLbNJpmETJEH5pFzaSbVxtm74UCOqP9djr2TkJqzxJgvrTSoE/Ko3WLE+h3y7qVxGOXiJtdEcP0HTNvx/2+IZ46QqvcWDVF+jKBt5cZ4EiS8SN9GwidWKKDa0eczXyvMSohyD2+sfhkiHYZEOgEBeE0VA827SFFPp

iYsBj4lxaNYrKhox34Zf1LMVyvisHftHzddHu7VDg1nWP3fbl0KiHk+u3oTp3828qw2bx7iEAy8aRGPdo

y53pC2I/M43CXNn2tnX7G67jsPNqxTe68UlWWyyepDt6oqSleXbXBszQ+X3BXJW5+sh8JqCjAzfMd2amSKswZb8k

hnjhLJ9FdpPrspZhuOkxnm4RfLQJ2Q1xz3j2YJFQeT+Xdv4yQW7D2RKve3B9h7LAY+GCDO8BO5ZY/PNfAN/RWdJDcb5LfsTgWVMyjC9faaRVeepfrpQ2/O6p3Yia9/s6PiMigOlD7EMa8q2cnCglvK0xW/EmB8TzIFYdwsMa1MuI+7eqttJgjNzlMOaKNDwZMq7o5XKBtYj2ScppcUiGt2TnGlKztK/Z1JdOSk4BLZ49dC/jXfOt3FRjKmjWe8C7syfapYs+Se9kbFHZjYvOrEKYGdZzUgTYIykkmPeiAwQAscgJjcVF+m4V289BChg

TvwgoHr/K8zyweYBCwV3mtZMv92+BogEfyJIMFagEJtmXLnrym2sg6N7a9VvtkLaGD78G5pMXxO151RWJa/hQmTRSrEJ+GFGq41J1o4xJLdNBsG+/Y+kXPoOs5cjYqYdQaTMrwD+ln5RnvFGfGXEMaB4xGzuvMzSPZjr++iMIoUF0kq0HmN162Q4stiuuMCJy

MHlOXoKs12KUsT4Oy18bTNhpe6acXc03z/WXK9A5BgQ9ok/X0iMUL22D1EeMqshUZ4HzQES4lzTmbtFjzH3/7noQ+Y7oujXNQaUlSWwExMs0lGyX/fXk7keFgnbgNbrYwoowiYXst+k3f/w5neiz7hva/r5EdSgJWMpmXPYgBi59YPaFyrOX6anXHfKxDE97x5DhwgSxC/OwNAJbOlCP3zhR4ffyHotE7dhl1wIz2fwrFbwHgvmEeQMacEnjSKG4elyM8JGcTJy+h5QplewYNVRiwY

30cIFt8eeujPmlK4X6tY1SeAHyDRy1ZAmmxw0Axse7UX1mBRv73vfD/yyNyfVWbrTNRyfDED+XJtHHIxo6aVkFbp3KHtW8nOqp6JJaJVvZ5CUs6sai5xzJoQ9cl4bOxmFKFmDrt

OBOzY98+FrR3wGqoqJ1++hjxaRkt2114oirQgKJsEkOnKe8e20/naugVy24KUGRG5dOSk4BLZ49dC/jXfOt3FRpKND7gyBA8yT56kkULxu/4xCWjer0D/M0bte//K49HEZHsD1kyxupxCDVD1cpYP8aVNhXR0VmDe4YY6hkfSYJL3mzRDsJ45zsOQFp2dRIWnVtH5FNONl52

FZ+pQ8gASptrt2/BG0SxMhunZG14bt4Q4OsI6E/vDhMSlVHJAItDEoLIhi6pWsWjetzAj4sRoXRi+nUeXtKyzOSxfRnayJoMXNmoNcDoZBQpwhxKf4dIgCn

+/Y83bsFh1+Ubu31tbmzKgPgh0M1G9gPJNFrzHc/NdVDKzJl4RhFDyVG2ZqjaDY04T7fRf/WWRwK/Ij4sk54Hkd/hZCZQWlqJjX3c7rz0+BXmkkO2B8n0GZqdHjcILcVLq1NV6jhAxkkzjEpY6CHQliw5TaZdKSzVinwPDtL

IdkVM8NmdAgGmq5NdSMp4KA6EFIxnN7N/FoBhZfUdC4SEtFCU7fT+56ZADsMEJwCYoZANSMVeybmnQ9Vnnq4LhAIoyI6v7s0Zpmo6eqHslwxsSQ7h

xaXYdWrqJK9phxcLNNNIz+5PlOss9FbLFiHRFcEC/lHpsPVBsUOFRDsbLalEIWyLLY1WwSBDskUl0V9ju2fjtast2qdVCy/zzkS87KImAK4scQr9r4+rlEWfwuHX91kFU2L4QcqsjreR4aoUG1gpTbYe+dnbgyXm05pZibo33jZCScE

WxGHZPXEfU7IMP/JwNBIVdN8fwazuJ5zKipU3dwS9hb+eqrSN1i25WA20rD+4TEfq6Z8vbjRCH875BMh7fsB+SELEFkkjoX

5eHT8qqvF0DgSRE9fBb6cB7eALx9KSEODK9G+0OFGXoOvgfTsxR5jcz6hSz9y/ljrtA8TmKBaGfzcMLujceFLLyEq5gYKLzE2Gdp9hFyZImd51zifCcst8fsme9k6BagyLwYFhTbmJpU0w

Zw6yFK48TdcB/m36TXQbDB9WarhH/KuRx+r+J3VJpOfZmQjul2ahPWsGeHnJisTebSVwv2ozsApXNpPrO8lCBia8VVg7kW2eW5vcz+7X9KPNa

Be5wB8IMOjTS74katIB/055LwxQM4hQhr373JIi1/m3MaX8m6GaGtaYNuzVfBwtfo5V7/x/kNnVI4UWXjMqd7pHSeKW6jbaEr99IcmdzJjxQLAcE67yjPLg0Nvth4GNE9N6QsHnfXeC6fS+F0iH48C+

ZDQG8xD8wmHap4PnZIyqreravc1no4I4ve/pmEUxQNe3yZgb1Vej6GDaD+M8NoFOhJAfgAySiv5xHuWiq6GYFIIv4eW7ny4BtUS5nP57jTPs6Zn9+TY

+GKZt+UdDZ3kGJSE9Os3lUWPobtX9l73ymejSRCLdh4zcPcWF8duw+tjYwX8cESpCPT2Zt1qKP7qgsoAX

IkBNTJ08mtWWzYqqguGGwl6h99pJv8n9ko9lUqmBN2GGiXvS2jBkQO/Fyirm1FOz5oBQORFFiM5vQEPpYgsfCa9E6u2mT3N9cyNpPC/o2w+GX6j2ZKSbe3oKFWJf9kw1Vy577L1QmVhFxPnAyx9YgRYMoV+7LVcJM/5Qbxhmiwx1lyqWwOeVq9bd7KGXozo6v8VVcNNZ16Xpk1dv+EYtsoRva9kpmo4CTuZ1BHJ1jFnU2ZutXQ

abCeyuQL6U8Y//VSEZsFTJ6qEjhPfct3f7uG2JnnakcgiyOThuIKquE0IOoFqB64bRNOzztI7O1Yztyav64DlUAXE2IXRQ

RkT+mrhBmtsgz2kYKQMgvKalg2/RjlnhOmTfr0ngypxL4vQgICWQc4RtRppJymjyqTZpAqOYEtNUFpjHC2ALOZafJIfelIYxeCX72f1pndu

nveBIJ/QQ+e1lLQbOecaYrgZb5XnD9sqRriSdm7d3j5eUoEuohiVg020yz10Ax9Au2WyfWxNYNau7EODImlWoHf

4YgaPa6rtGPWYGOkyRzpvFKKaffjLsLJV2AUv5qekzo/uxizP/juOaew88AoyeKtPhs4LlCYvjLMLEv4YPabxCC/06AgMMW118okUdgAcXCA4A4DWk7Jl17VkpYPjilpylZKleFF5pg+5RwCd72V2uVjLfTfB4ALM/yqK6XoT8K99LbnpE1ssWEdfPXoqMgqNRAnMXkeQ/baK+PAYrawc6Jhbre8jXWsLE9evIEn0434INzNYzuwKU0+AEfqKYHmSjMESBmpx+a509QHPpr9YOJDeg

0FY2o1QSRd9zpjMjCsvaiSe2o03VXhmnAYV3K1KxcZ18T2tX+vpTvG7Zgw1rxjALoRakwonmLU3oCZRLA/Tyuhfm29wGxbKMKYuOi6hVOLgR7fIz2aX3rUkZKZhXHh2nVqW1RyXlt9+yHbaR1d0hzxcPpnRPyNdIsk

DzxaXSGlqB+5w/31UimGpYW8p6apn8IqBAU9Tw9qOjrAzERlhXJY+vv4hbPvIkZfulAfBZX7hBfQGUuNu1LrreAEkRAyrC

aMhizFeHsDijxI2s0lkY+NhkxBLJplqf0kbjLlpTs8p6mcDcrIqsqD9s0bsCCfGHgER4xnyP3MgE0bvIH

+IvGaS8YSyUyzrIibtSHQiEELswLcP/oiCqSkYUsekzxeayHZKLdX7yF/wjl5COJwrXyCF6Yo0C/PiGymE0XlpvEt4SNb3ntR3UX+NoRG8bnjnGnchoJKvXfyb/7x91DIN5XdJpzUpGq+depMlQI1FaHIujueKAR3Dw258kl0WpTajIIQlSvQvrUpPFCw2Vkj6SecaZMVS8

INLavBqUOLch6kpY/fb62O/L+mJHYMk0oCKTwa+HcoaDY40PJA8kIxCLdVp64SlMdcdT1zYja5XKbwoMnIlm7YeVw3vAE3kG/lCNUVpQgemVvLFQ2GT6CDN5aN9tJzV0woDci5kUYOinhES8HIrY60G+faMZLoaeURYxdaiyeImz9rVdv

brnWumYzmOAXRq5ZaEyArPZiFh+purgT2NWTGB33KXvwtHU+mFkBqTLrMul91xp+lv97zCQbbDV0beUhC

wXExy5LDl8h0Y4VFVqyKLH5B9Duy9FgRidh2gbIKE+kMCmlbNwwRdFuvR9bzcFPwPFGnRws9lwJrG5pEp

xTHWadGWITGPDShbUXcI1m6TXDI6tUJSV/xmdt6FkCvZ0BJFnh8/PzeCXkZehZAr2dASRZ4fPz83gl5GZyV+aOsFcubFdGfBW8ZqFk=

Поделиться сообщением


Ссылка на сообщение

stevengerard3

Текст из assets выдрал или отдельно лежит где-то?

Поделиться сообщением


Ссылка на сообщение
stevengerard3

Текст из assets выдрал или отдельно лежит где-то?

Из resources.assets

Поделиться сообщением


Ссылка на сообщение
Есть контакт. Расшифровал текст!

http://games-gen.com/Rus/Shadowgate_DecryptedTexts.rar

Отлично, добавлю в тему перевода, на ноту. А запихнуть назад то потом сможем?

Поделиться сообщением


Ссылка на сообщение

stevengerard3

Сами запихаете. =) Зашифровать текст обратно можно. Выложу батники для расшифровки/шифровки

Изменено пользователем Haoose

Поделиться сообщением


Ссылка на сообщение
stevengerard3

Сами запихаете. =) Зашифровать текст обратно можно. Выложу батники для расшифровки/шифровки

Отлично, ждем батники.

Поделиться сообщением


Ссылка на сообщение

Батники подождут. Вы текст переводите и шрифты ищите =)

Поделиться сообщением


Ссылка на сообщение

Кто-нибудь знает, что за шрифт?

d87eb508315a.jpg

Поделиться сообщением


Ссылка на сообщение

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

  • Похожие публикации

    • Автор: 0wn3df1x
      Lost & Found: A This Bed We Made Story

      Метки: Приключение, Интерактивная литература, Решения с последствиями, Выбери себе приключение, 3D Разработчик: Lowbirth Games Издатель: Lowbirth Games Серия: This Bed We Made Дата выхода: 05.08.2026 Отзывы Steam: 125 отзывов, 93% положительных
    • Автор: 0wn3df1x
      Inkwellers

      Метки: Приключение, Инди, Головоломка, Кооператив, Совместная кампания Разработчик: ScrumptiousSprouts sp. z o.o. Издатель: ScrumptiousSprouts sp. z o.o. Дата выхода: 28.05.2026 Отзывы Steam: 102 отзывов, 89% положительных

  • Продвигаемые темы

  • Последние сообщения

    •   Русификатор Yukan Madam Club 有閑夫人倶楽部 Дата выхода 27 марта 2026(только в Японии) Сайт игры:https://www.empress-game.com/yukanmadam/ Жанр: Визуальная новелла Разработчик: Empress Издатель: Empress Платформы: Windows Описание:  Главный герой только что перевёлся в новую школу и ещё не обзавёлся близкими друзьями. Но однажды он знакомится с Крисом — красивым светловолосым юношей из своего класса; они быстро находят общий язык и становятся близки. Когда Крис приглашает его к себе домой, герой обнаруживает, что тот живёт в невероятно роскошном особняке с бассейном во дворе, а комната Криса выглядит куда богаче, чем его собственная. Однажды, когда Крис выходит из комнаты, герой случайно находит на его компьютере файл и заглядывает в него — там оказывается огромное количество фото и видео, на которых Крис занимается сексом с женщиной, очень похожей на его мать... Крис открывает ему правду об их запретных отношениях между родителем и ребёнком и даже предлагает герою самому переспать с матерью, если тот этого пожелает. Не в силах противостоять соблазну и собственным желаниям, герой в итоге поддаётся и вступает в связь с мамой Криса... Это становится началом: вскоре он начинает заводить отношения с матерями других одноклассников и даже познаёт запретную любовь со своей собственной матерью... Куда же в итоге приведёт эта запретная родительская любовь?
      Сделал нейросетевой перевод:
      Rio1.arc - Google Диск - Файл с русским переводом. (Просто добавить в папку игры с заменой и всё) translation_complete3_ready.tsv - Google Диск — Таблица, в которой работал. (для тех кто хочет сам поработать над переводом)  
    • У меня Опера. Там нема. Но стоит расширение. Нужно было выделить текст. Но почему-то не выделялся. Б-я-да, короче.
    • Архитектура инструмента для распаковки и обратной упаковки ресурсов PS3-игры Ниже — безопасный подход к разработке утилиты для фанатского перевода, редактирования шрифтов, текстурных атласов, строк и субтитров в The Ratchet & Clank Trilogy (HD Collection) либо похожей PS3/Vita-игре. Подход рассчитан только на легальный моддинг: собственные носители, личные дампы, homebrew-среду и уже доступные для редактирования ресурсы. Он не включает обход DRM, подписи исполняемых модулей, ключи, защищённые EBOOT/SPRX или другие системные механизмы защиты. 1. Общий анализ задачи Какие структуры обычно встречаются в ресурсах PS3-игр Игровые данные редко состоят из независимых файлов «как на ПК». Обычно применяются контейнеры одного или нескольких уровней: Тип структуры Назначение Обычный архив Последовательность файлов с таблицей содержимого (TOC). bigfile / packfile Большой бинарный файл с ресурсами, доступными по offset и size. PSARC Контейнер Sony, часто содержащий сжатые файлы и таблицу записей. Внутренний контейнер Формат движка: строки, текстуры, модели, шрифты, субтитры в собственных бинарных блоках. Таблица смещений Список адресов начала ресурсов или секций. Таблица размеров Список размеров исходных или сжатых данных. Таблица имён / хешей Имена файлов либо хеши путей, если имена не хранятся открыто. Индексный бинарник Отдельный файл, сопоставляющий языки, архивы, шрифты, видео и ресурсы. Условная структура архива может выглядеть так: +-------------------------------+ | Header | | magic: "PACK" / "PSAR" / ... | | version | | file_count | | toc_offset | | data_offset | +-------------------------------+ | TOC / File entries | | entry[0]: offset, size, hash | | entry[1]: offset, size, hash | | ... | +-------------------------------+ | Name table / string table | +-------------------------------+ | Resource data | | file 0 | | padding | | file 1 | | padding | | ... | +-------------------------------+ Почему архив может перестать загружаться после перепаковки Даже если содержимое ресурса изменено корректно, движок может отклонить архив, если нарушена его структура: смещение файла в TOC указывает на старый адрес; поле размера не соответствует фактическому числу байтов; нарушено выравнивание данных; не обновлена CRC32 или другой хеш; изменился порядок записей; файл должен быть сжат, но записан несжатым; таблица имён, хешей или индексов не соответствует содержимому; сдвинулись внутренние указатели внутри самого ресурса; изменена endian-последовательность чисел; изменился формат текстуры, но метаданные остались прежними. Что обычно называют «проверкой веса» Фраза «проверка веса файла» технически неоднозначна. В игровых форматах это может означать: Возможное значение Что это на практике Размер файла Поле size в заголовке, TOC или внешнем индексе. Сжатый размер compressed_size, если ресурс хранится сжатым. Исходный размер uncompressed_size, нужный для выделения буфера и распаковки. Размер контейнера Поле archive_size или ожидаемый конец файла. Размер записи Размер блока в TOC, включая служебные поля. CRC Контрольная сумма, часто CRC32. Хеш MD5, SHA-1 или пользовательский алгоритм для проверки данных/пути. Выравнивание Размер округляется до 0x10, 0x80, 0x800, 0x1000 и т. п. Padding Заполняющие байты между ресурсами, часто 00, FF или специальный шаблон. Правильная цель инструмента — не отключать проверку, а определить формат и корректно пересчитывать зависимые поля. 2. Юридическая и этическая рамка Инструмент следует проектировать для работы только с: собственными легально полученными данными; личными дампами; тестовыми или homebrew-ресурсами; открытыми, распакованными, незащищёнными контейнерами; модами, распространяемыми без оригинальных игровых ассетов. Не следует: извлекать и распространять чужие коммерческие игровые ресурсы; публиковать игровые архивы, текстуры, видео и бинарники целиком; заниматься обходом DRM, подписей, шифрования, лицензионных проверок; модифицировать защищённые системные модули ради снятия ограничений. Если требуемая часть логики находится в защищённом EBOOT/SPRX либо зависит от криптографически защищённого контейнера, безопасная граница работы — анализ уже распакованных открытых ресурсов, использование существующих легальных средств извлечения и создание патчей/манифестов, а не распространение оригинального содержимого. 3. CLI-проектирование инструмента Утилита должна быть предсказуемой, воспроизводимой и по умолчанию не портить исходники. Пример имени: rctool. rctool list archive.bin rctool inspect archive.bin rctool extract archive.bin —out ./extracted rctool pack ./extracted —out ./archive_packed.bin rctool verify original.bin modified.bin rctool diff-toc original.bin modified.bin rctool font-report ./game_resources —dump-glyphs rctool atlas-verify font_atlas.dds font_metrics.bin rctool subtitle-report subtitles.bin rctool psarc list data.psarc rctool psarc extract data.psarc —out ./psarc_extracted rctool psarc pack ./psarc_extracted —out ./data_mod.psarc Полезные параметры —format auto|psarc|bigfile|custom —endian auto|big|little —alignment 0x800 —dry-run —strict —verbose —json-report report.json —manifest manifest.json —keep-order —verify-checksums —no-compress Принципы CLI Исходный файл никогда не перезаписывается по умолчанию. Любая распаковка создаёт манифест. Упаковка работает только на основе манифеста. —dry-run показывает будущие offsets, размеры и расхождения без записи файла. verify проверяет структуру независимо от запуска игры. Все неизвестные поля и подозрительные записи логируются. 4. Структура парсера ресурсов Парсер не должен быть «набором жёстких смещений». Лучше разделить чтение формата на явные слои. Базовые поля, которые нужно искать Поле Типичный размер Назначение Magic / signature 4—16 байт Идентификатор формата: например, PSAR. Version 2 или 4 байта Версия контейнера. Endianness Не всегда явно Обычно определяется по magic/version/count. Header size 4 байта Размер заголовка. File count 4 байта Число записей в TOC. TOC offset 4/8 байт Адрес таблицы файлов. Name table offset 4/8 байт Адрес строковых имён, если есть. Data offset 4/8 байт Начало области ресурсов. Entry offset 4/8 байт Смещение конкретного файла. Packed size 4/8 байт Размер хранимых данных. Unpacked size 4/8 байт Размер после распаковки. CRC/hash 4—32 байта Целостность данных или идентификатор пути. Flags 4 байта Сжатие, тип данных, язык, платформа и т. п. Alignment 4 байта или константа Требуемое выравнивание блока. Endianness PS3 часто использует big-endian, но это не означает, что каждый ресурс обязательно big-endian. В одном проекте могут сосуществовать: big-endian заголовки движка; little-endian DDS-текстуры; little-endian сжатые блоки; собственные форматы с фиксированным порядком байтов. Нельзя выбирать порядок байтов «по платформе». Его нужно подтвердить наблюдением. Пример: Bytes: 00 00 01 00 Big-endian: 0x00000100 = 256 Little-endian: 0x00010000 = 65536 Если архив содержит 256 файлов, big-endian здесь правдоподобен. Если 65536 — вероятно, интерпретация неверна. Указатели на внутренние секции В ресурсах могут быть внутренние адреса: font_table_offset glyph_count atlas_texture_id string_table_offset language_table_offset subtitle_track_offset video_cue_table_offset Важно установить, что представляет собой offset: абсолютное смещение от начала файла; относительное смещение от начала секции; относительное смещение от текущей структуры; виртуальный адрес, который не следует путать с file offset; индекс записи, а не смещение. 5. Безопасное исследование «проверки веса» Цель исследования: найти зависимые поля и правила их обновления. Рекомендуемый процесс 1. Сохранить нетронутый оригинал Работать только с копией: original/ work/ output/ reports/ Для каждой версии фиксировать: имя файла; размер; SHA-256 для локальной идентификации; дату; использованную версию инструмента. 2. Открыть бинарник в hex-редакторе Подходящие инструменты: ImHex; 010 Editor; HxD; wxHexEditor; любой hex-diff-инструмент. Искать: читаемый magic; повторяющиеся записи одинаковой длины; числа, похожие на offsets; возрастающие значения, кратные 0x10/0x800/0x1000; ASCII/UTF-8/UTF-16-строки; хеши длиной 4, 16, 20 или 32 байта. 3. Сопоставить TOC с реальными данными Для каждой записи проверить: offset + stored_size <= archive_file_size offset >= data_region_start offset % alignment == 0 Если ресурс начинается по offset 0x12000, а следующая запись начинается с 0x12800, то: real data range: [0x12000, 0x12800) allocated span: 0x800 stored size: может быть меньше 0x800 padding: allocated span - stored size 4. Выполнить минимальный контролируемый эксперимент Например, заменить один текстовый ресурс на вариант: той же длины; на 1 байт длиннее; на 16 байт длиннее; на 1 байт короче. Затем сравнить результаты упаковки или файлы, обработанные известным инструментом, если он существует. Так можно увидеть: какие поля меняются; где лежит size; меняется ли архивный размер; пересчитывается ли CRC; сохраняется ли прежний allocation span; сдвигаются ли последующие записи. 5. Построить таблицу наблюдаемых полей Пример рабочей таблицы: Offset Размер Предполагаемое поле Значение до Значение после Уверенность 0x0C 4 file_count 1532 1532 высокая 0x10 4 toc_offset 0x40 0x40 высокая 0x24 4 archive_size 0x028A4000 изменилось средняя 0x144 4 entry[0].offset 0x8000 0x8000 высокая 0x148 4 entry[0].size 0x1A2C изменилось высокая 0x14C 4 entry[0].crc32 изменилось изменилось средняя 6. Сравнивать CRC, MD5, SHA-1 и пользовательские хеши Если 4-байтовое поле меняется после изменения содержимого, проверьте кандидаты: zlib.crc32(data) & 0xFFFFFFFF Для распространённых хешей: hashlib.md5(data).digest() hashlib.sha1(data).digest() hashlib.sha256(data).digest() Но совпадение не следует предполагать: поле может быть: CRC от распакованных данных; CRC от сжатых данных; CRC от имени/пути; хешем другой секции; ID записи; пользовательским алгоритмом. 7. Реализовать dry-run До фактической упаковки вывести отчёт: Entry 0042: strings_ru.bin old offset: 0x00124000 new offset: 0x00124000 old packed size: 0x00003A20 new packed size: 0x00003B10 alignment: 0x800 padding required: 0x4F0 checksum: CRC32 9A0B1C2D status: valid 8. Не отключать проверки Если игра отвергает модифицированный архив, правильный вопрос: «Какие метаданные формат ожидает и как они вычисляются?» А не: «Как отключить проверку?» 6. Алгоритм распаковки Результат распаковки extracted/ manifest.json files/ 0000_unknown.bin 0001_menu_strings.bin 0002_font_atlas.dds 0003_font_metrics.bin reports/ extract_report.json suspicious_entries.json Пример манифеста { "format": "custom_bigfile", "source_file": "archive.bin", "source_size": 42614784, "endianness": "big", "header": { "version": 3, "file_count": 1532, "toc_offset": 64, "data_offset": 49152, "alignment": 2048 }, "entries": [ { "index": 0, "name": "0000_unknown.bin", "name_hash": "0xA1B2C3D4", "original_offset": 49152, "stored_size": 6700, "unpacked_size": 6700, "flags": 0, "compression": "none", "checksum_type": "crc32", "checksum": "0x19D5A0F3", "alignment": 2048 } ] } Пошаговый алгоритм Открыть файл в бинарном режиме. Прочитать минимальный заголовок. Проверить magic и версию. Определить endian-порядок. Прочитать размер заголовка и расположение TOC. Прочитать все записи TOC. Для каждой записи: извлечь offset, stored_size, unpacked_size, flags; проверить выход за границы файла; проверить выравнивание; извлечь блок; проверить CRC/hash, если алгоритм известен; определить сжатие по флагам или сигнатуре; распаковать известный формат, например zlib/deflate; сохранить файл и метаданные. Записать манифест. Создать отчёт о подозрительных местах. Подозрительные записи Нужно фиксировать, но не игнорировать: offset + size > archive_size; offset не выровнен; два файла перекрываются; размер распакованных данных не совпадает с unpacked_size; неизвестный compression flag; checksum не совпадает; пустой файл с необычными флагами; запись с offset 0, но ненулевым размером. 7. Алгоритм обратной упаковки Обратная упаковка должна быть детерминированной: одинаковый вход и параметры дают одинаковый результат. Основной порядок работы Прочитать manifest.json. Проверить, что все ожидаемые файлы существуют. Сохранить исходный порядок записей. Для каждого файла: прочитать изменённые данные; сжать тем же способом, что указан в манифесте; определить фактический stored size; обновить unpacked size; вычислить checksum нужного типа. Рассчитать новые offsets с учётом alignment. Создать новый TOC. Записать заголовок, TOC, имена и метаданные. Записать блоки данных и padding. Обновить размер контейнера, если он хранится. Выполнить внутреннюю проверку созданного файла. Сравнить структуру с оригиналом через verify и diff-toc. Важное решение: перемещать файлы или сохранять исходные места Есть два режима. Режим A: полная перепаковка Все offsets рассчитываются заново. Плюсы: подходит для значительных изменений; не ограничивает размер конкретного ресурса; проще алгоритмически. Минусы: все последующие данные могут сдвинуться; внешние ссылки на offset могут стать невалидными; архив может сильнее отличаться от оригинала. Режим B: in-place / фиксированные слоты Файлы остаются на старых offsets и не могут превысить выделенный span. Плюсы: минимальные отличия; безопаснее, если внешний бинарник хранит offsets; удобно для маленьких текстовых правок. Минусы: новый файл нельзя сделать больше доступного места; приходится перераспределять резерв или сокращать данные. Для первой версии полезно поддержать оба режима: rctool pack extracted —mode rebuild rctool pack extracted —mode in-place Проверки после сборки header.file_count == len(entries) entry.offset % alignment == 0 entry.offset + entry.stored_size <= archive_size no_ranges_overlap(entries) stored_size == len(stored_data) unpacked_size == len(unpacked_data) checksum(entry_data) == entry.checksum 8. Работа со шрифтами и атласами Шрифт в игре часто состоит минимум из двух частей: текстурный атлас — изображение с пикселями символов; таблица метрик — бинарная структура, объясняющая движку, где искать глиф и как его рисовать. Иногда добавляются: таблица Unicode/codepoint → glyph index; kerning pairs; несколько атласов для разных размеров; fallback-шрифт; таблицы языков; стиль текста: обводка, тень, цвет, масштаб. Где может быть таблица глифов Она может находиться: рядом с текстурой в одном контейнере; в отдельном .bin, .fnt, .font, .dat; внутри бинарника движка; внутри локализационного пакета; в ресурсной записи, найденной по имени или хешу. Признаки таблицы: последовательность структур фиксированного размера; значения x/y/width/height, не превышающие размеры атласа; ASCII-коды 0x20—0x7E; количество записей, близкое к 96, 128, 256, 512, 1024; повторяющиеся значения advance/width; ссылки на одну и ту же текстуру. Варианты хранения символов Модель Пример Direct ASCII Glyph 65 = A. Unicode codepoint U+0410 → глиф А. Индексная таблица Codepoint → индекс → запись глифа. Custom encoding Байтовые коды игры отображаются в собственную таблицу. Смешанная схема ASCII напрямую, расширенные символы через lookup table. Типичная запись глифа struct Glyph { uint32_t codepoint; // U+0041, U+0410 и т. п. uint16_t atlas_index; // номер атласа uint16_t flags; float u0; // левая UV-координата float v0; // верхняя UV-координата float u1; // правая UV-координата float v1; // нижняя UV-координата int16_t bearing_x; // смещение пера по X int16_t bearing_y; // смещение пера по Y uint16_t width; uint16_t height; int16_t advance_x; // на сколько сдвигать курсор }; В другом формате UV могут быть не float, а пиксельными координатами: struct Glyph { uint16_t codepoint; uint16_t x; uint16_t y; uint16_t width; uint16_t height; int16_t advance; int16_t bearing_x; int16_t bearing_y; }; Добавление кириллицы без поломки латиницы Безопасная стратегия: Сначала извлечь существующие символы и создать отчёт. Определить диапазоны: ASCII: U+0020—U+007E; кириллица: U+0400—U+04FF; часто нужные символы: Ё, ё, №, длинное тире, кавычки. Не заменять латинские глифы, если их индексы используются напрямую. Добавить новые записи в свободный диапазон либо расширить таблицу только после понимания её структуры. Внести символы в codepoint lookup table. Добавить пиксели символов в атлас. Обновить UV/координаты, размеры и advance. Проверить fallback-логику: некоторые движки заменяют неизвестный символ ? или пустым глифом. Почему может понадобиться новый атлас Если в исходном атласе нет свободного места, новые глифы некуда разместить. Варианты: уплотнить существующие символы; использовать пустые/неиспользуемые глифы; увеличить разрешение атласа, если формат и движок это допускают; добавить второй атлас, если таблица поддерживает atlas_index; уменьшить размер шрифта; выбрать компактный набор символов. Нельзя просто увеличить DDS/текстуру, не проверив, где хранится ширина, высота, mipmap count и формат пикселей. Проверка границ глифа Для атласа 1024 × 1024: 0 <= x < 1024 0 <= y < 1024 x + width <= 1024 y + height <= 1024 Для нормализованных UV: 0.0 <= u0 <= u1 <= 1.0 0.0 <= v0 <= v1 <= 1.0 Автоматический font-report Отчёт должен содержать: Atlas: font_0.dds Resolution: 1024 x 1024 Glyph entries: 248 Unique codepoints: 246 Duplicate codepoints: U+003F, U+0410 Out-of-bounds glyphs: 2 Missing Russian characters: U+0401, U+0451, U+042A Unused atlas area: 31.4% Идеально также создать: CSV с метриками; JSON для дальнейшего анализа; PNG-превью с сеткой и подписанными glyph indices; перечень символов, реально используемых в переводе, но отсутствующих в шрифте. 9. PSARC и привязка к контейнеру Если ресурсы находятся в PSARC или похожем контейнере, его нужно рассматривать как отдельный слой. PSARC ├─ archive TOC ├─ block/deflate metadata ├─ file path table или hash table └─ внутренние ресурсы ├─ font atlas ├─ font metrics ├─ strings ├─ subtitles └─ texture packages Требования к PSARC-адаптеру Прочитать заголовок контейнера. Прочитать и сохранить TOC. Сохранить порядок файлов. Сохранить размеры блоков и признаки сжатия. Извлечь внутренние файлы. Создать отдельный PSARC-манифест. При сборке применить исходное выравнивание и порядок. Выполнить валидацию offsets, размеров и блоков. Внешние зависимости После изменения PSARC нужно проверить, есть ли другой файл, который хранит: путь к архиву; хеш ресурса; индекс файла в архиве; ожидаемый размер; offset; версию пакета; таблицу языков; список загружаемых ресурсов. Если такая зависимость найдена, корректно обновляется или валидируется именно её открытая ресурсная структура. Работа с защищёнными исполняемыми модулями и механизмами платформы остаётся вне рамок инструмента. 10. Субтитры и видео Субтитры могут быть реализованы несколькими способами. Вариант Что редактируется Строки текста + таймкоды Таблица строк и cue table. Текстуры субтитров Атлас изображений и таблица кадров. Предрендеренные изображения Последовательность текстур/спрайтов. Встроенные в видео Практически не редактируются без исходного видеопайплайна. Скриптовые события Команды показа текста с timestamp и ID строки. Что проверить формат времени: кадры, миллисекунды, ticks; FPS: 25, 30, 50, 60 или иной; ID строки и соответствие локализационной таблице; порядок cue-записей; длительность отображения; кодировку текста; максимальную длину строки; переносы, теги и управляющие символы; привязку к конкретному ролику или главе. Типичная структура cue struct SubtitleCue { uint32_t start_time; uint32_t end_time; uint32_t string_id; uint16_t style_id; uint16_t flags; }; При текстурных субтитрах вместо string_id могут быть: uint16_t atlas_id; uint16_t sprite_id; Нельзя менять порядок или количество записей без проверки того, как ролик или сценарий обращается к ним. 11. Рекомендуемый стек Python: лучший старт для исследования Python хорошо подходит для первого рабочего прототипа. Библиотека Назначение struct Чтение и запись чисел заданного endian-порядка. pathlib Безопасная работа с путями. argparse CLI. json Манифесты и отчёты. logging Диагностика. zlib CRC32, deflate, zlib. hashlib MD5/SHA-1/SHA-256 для исследования. dataclasses Описание header/entry структур. pytest Unit-тесты. Пример чтения big-endian числа: import struct file_count = struct.unpack(">I", data[0x08:0x0C])[0] Little-endian: file_count = struct.unpack("<I", data[0x08:0x0C])[0] C# Подходит, если нужен GUI: удобная работа с бинарными файлами; WPF/Avalonia для интерфейса; просмотр atlas/glyph table; drag-and-drop для архивов; Windows-ориентированный пайплайн. Rust / C++ Подходят для финального производительного инструмента: строгая работа с бинарными структурами; контроль ошибок; большие архивы; потоковая обработка; безопасное разделение модулей. Но начинать исследование формата обычно быстрее в Python. Инструменты анализа 010 Editor — шаблоны бинарных форматов. ImHex — pattern language, визуальный анализ. HxD — быстрый просмотр и сравнение. QuickBMS — быстрые экспериментальные скрипты для распаковки известных форматов. vbindiff / Beyond Compare / Hex Fiend / HxD — побайтовое сравнение. Kaitai Struct — декларативное описание формата и генерация парсеров. 12. MVP-архитектура rctool/ cli.py config.py formats/ base.py custom_archive.py psarc.py parsers/ header_parser.py toc_reader.py font_table_parser.py subtitle_parser.py services/ extractor.py repacker.py verifier.py diff_service.py manifest_service.py codecs/ compression_handler.py checksum_validator.py texture_adapter.py models/ archive_header.py archive_entry.py font_glyph.py manifest.py reporting/ logger.py json_report.py font_report.py tests/ test_header_parser.py test_toc_reader.py test_repacker.py test_alignment.py fixtures/ Назначение модулей Модуль Ответственность header_parser Чтение и валидация заголовка. toc_reader Чтение записей файловой таблицы. entry_extractor Извлечение конкретных блоков. compression_handler Сжатие/распаковка известных алгоритмов. checksum_validator CRC/hash-проверки и пересчёт. repacker Сборка контейнера, offsets и padding. manifest_serializer Сохранение метаданных извлечения. font_table_analyzer Глифы, метрики, codepoint table, UV. psarc_adapter Поддержка PSARC как отдельного формата. CLI interface Команды и параметры пользователя. logger/reporter Диагностика, отчёты, dry-run. 13. Тестирование Не хранить игровые ассеты в репозитории В репозитории должны находиться только: синтетические тестовые архивы; минимальные искусственные текстуры; тестовые таблицы глифов; обезличенные фрагменты заголовков при необходимости; генераторы фикстур. Не следует добавлять оригинальные данные игры. Набор тестов Unit-тесты чтение big-endian и little-endian значений; чтение header; чтение TOC; выравнивание 0x10, 0x80, 0x800, 0x1000; проверка диапазонов; CRC32; сжатие и распаковка; сериализация манифеста; проверка UV и границ глифов. Интеграционные тесты synthetic archive -> extract -> pack -> verify -> byte-identical result Если архив собирается без изменений, ожидаемый результат: original.bin == repacked.bin Побайтовая идентичность крайне полезна: она доказывает, что парсер и упаковщик верно воспроизводят формат хотя бы для неизменённого случая. Тесты изменения размера Файл без изменения длины. Файл увеличен на 1 байт. Файл увеличен до следующего alignment boundary. Файл уменьшен. Несколько файлов изменены одновременно. Сжатый файл, у которого packed size меняется непредсказуемо. Проверка отчётом rctool verify original.bin repacked.bin —structure-only rctool diff-toc original.bin repacked.bin 14. Типичные ошибки Ошибка Последствие Перепутан big-endian и little-endian Неверные offsets, sizes, counts; файл не читается. Не учтён padding Следующий ресурс начинается не там, где ожидает TOC. Изменён порядок записей Внешние индексы или хеш-таблицы указывают не на тот ресурс. Не обновлена offset table Движок читает старые адреса. Не обновлены size fields Переполнение, обрезание или отказ загрузки. Не пересчитан CRC/hash Формат определяет ресурс как повреждённый. Нарушено выравнивание Ошибка чтения блоков или проблемы DMA/потоковой загрузки. Неверно определено сжатие Невозможно распаковать ресурс. Строка сохранена в неверной кодировке Кракозябры, пустые символы, сбои parser-а. Не учтена нуль-терминация Следующая строка «склеивается» с текущей. Таблица глифов не соответствует атласу Неправильные буквы, визуальный мусор, вылет. Кириллица добавлена без codepoint table Игра не находит символы. UV выходят за границы Захватываются соседние глифы или пустые области. DDS/текстура пережата в другом формате Неподдерживаемый pixel format, неверные цвета или крах. Не обновлены mipmaps Артефакты или ошибка загрузки текстуры. Субтитры потеряли тайминги Реплики появляются слишком рано, поздно или не появляются. Изменена длина блока, но старые внешние offsets сохранены Ломается загрузка последующих данных. Техническое ТЗ для MVP Цель Разработать CLI-утилиту для анализа, извлечения, проверки и обратной упаковки открытых игровых ресурсных контейнеров, с сохранением структуры, порядка записей, offsets, размеров, выравнивания и контрольных сумм. Функциональные требования Автоматическое или заданное пользователем определение формата. Поддержка big-endian и little-endian. Чтение заголовка и TOC. Извлечение всех ресурсов. Генерация JSON-манифеста. Поддержка known compression codecs, начиная с none и zlib. Проверка CRC32 и известных хешей. Детерминированная перепаковка. Поддержка rebuild и in-place режимов. dry-run, verify, diff-toc. Анализ шрифтов: глифы, codepoints, метрики, UV, пересечения и границы. Отчёты JSON/CSV/text. Набор тестов на синтетических контейнерах. Нефункциональные требования не изменять входные файлы; не требовать доступа к защищённым системным компонентам; не содержать оригинальные игровые ассеты; давать понятные ошибки вместо молчаливой записи повреждённого файла; вести лог операций; обеспечивать воспроизводимость упаковки. Псевдокод парсера function parse_archive(path, format_config): file_size = get_file_size(path) stream = open_binary(path) raw_header = stream.read(MIN_HEADER_SIZE) magic = raw_header[0:4] if magic not in format_config.supported_magic: raise UnsupportedFormatError(magic) endian = detect_endianness(raw_header, format_config) header = read_header(stream, endian, format_config) validate_header(header, file_size) stream.seek(header.toc_offset) entries = [] for index in range(header.file_count): entry = read_toc_entry(stream, endian, format_config) entry.index = index validate_entry_range(entry, file_size) validate_entry_alignment(entry, header.alignment) entries.append(entry) names = read_name_table_if_present(stream, header, format_config) assign_names(entries, names) return Archive( path=path, file_size=file_size, header=header, entries=entries, endian=endian ) Псевдокод распаковщика function extract_archive(archive_path, output_dir): archive = parse_archive(archive_path) create_directory(output_dir) create_directory(output_dir / "files") create_directory(output_dir / "reports") manifest = create_manifest_from_archive(archive) suspicious_entries = [] stream = open_binary(archive_path) for entry in archive.entries: stream.seek(entry.offset) stored_data = stream.read(entry.stored_size) if length(stored_data) != entry.stored_size: suspicious_entries.append(entry, "truncated data") continue if entry.compression is known: unpacked_data = decompress(stored_data, entry.compression) else if entry.compression is none: unpacked_data = stored_data else: save_raw_data(entry, stored_data) suspicious_entries.append(entry, "unknown compression") continue if entry.unpacked_size exists and length(unpacked_data) != entry.unpacked_size: suspicious_entries.append(entry, "unpacked size mismatch") checksum_result = verify_checksum(entry, stored_data, unpacked_data) if checksum_result is invalid: suspicious_entries.append(entry, "checksum mismatch") output_name = create_safe_output_name(entry) write_binary(output_dir / "files" / output_name, unpacked_data) manifest.entries[entry.index].extracted_name = output_name manifest.entries[entry.index].verification = checksum_result write_json(output_dir / "manifest.json", manifest) write_json(output_dir / "reports" / "suspicious_entries.json", suspicious_entries) return manifest Псевдокод упаковщика function pack_archive(extracted_dir, output_path, mode): manifest = read_json(extracted_dir / "manifest.json") validate_manifest(manifest) prepared_entries = [] for entry_meta in manifest.entries in original index order: input_path = extracted_dir / "files" / entry_meta.extracted_name unpacked_data = read_binary(input_path) stored_data = compress( unpacked_data, method=entry_meta.compression, settings=entry_meta.compression_settings ) entry = copy_metadata(entry_meta) entry.unpacked_size = length(unpacked_data) entry.stored_size = length(stored_data) entry.checksum = calculate_checksum( entry_meta.checksum_type, stored_data, unpacked_data, entry_meta.checksum_scope ) prepared_entries.append((entry, stored_data)) if mode == "in-place": assign_original_offsets_with_capacity_checks(prepared_entries, manifest) else if mode == "rebuild": current_offset = manifest.header.data_offset for entry, stored_data in prepared_entries: current_offset = align_up(current_offset, entry.alignment) entry.offset = current_offset current_offset += length(stored_data) archive_size = current_offset else: raise InvalidModeError(mode) validate_no_overlap(prepared_entries) validate_all_alignments(prepared_entries) header = rebuild_header(manifest.header, prepared_entries, archive_size) toc = serialize_toc(prepared_entries, manifest.endianness) output = open_binary_for_write(output_path) write_header(output, header) write_toc(output, toc) write_name_table_if_needed(output, manifest) for entry, stored_data in prepared_entries: seek_or_pad_to(output, entry.offset) output.write(stored_data) write_padding_to_alignment(output, entry.alignment) close(output) result = parse_archive(output_path) verify_repacked_structure(result, prepared_entries) return result Поля, которые нужно исследовать в неизвестном формате Минимальный список: Magic/signature. Версия. Endianness. Размер заголовка. Число записей. Смещение TOC. Размер одной TOC-записи. Смещение таблицы имён. Смещение области данных. Offset каждой записи. Packed size. Unpacked size. Compression flags. Encryption flags — только для идентификации; не для обхода. CRC/hash и область, по которой они считаются. ID/хеш имени. Alignment. Padding pattern. Поле общего размера архива. Внешние ссылки на архив, индекс или ресурс. Внутренние offsets конкретных форматов — шрифт, атлас, локализация, субтитры. Версия текстурного формата, ширина, высота, mip levels, pixel format. Таблица Unicode/codepoint → glyph index. Метрики glyph table. Таблицы языков и string IDs. Формат subtitle cue и единицы таймингов. Вопросы для формата, который пока неизвестен Для точного анализа полезно получить не весь игровой архив, а безопасные технические сведения и небольшие обезличенные фрагменты: Первые 0x100—0x400 байт заголовка в hex-формате. Размер файла в байтах и hex. Hex-дамп предполагаемой TOC: 5—10 записей. Предполагаемый размер записи TOC: 16, 20, 24, 32 или 48 байт. Несколько известных offsets и соответствующие им размеры. Название/расширение контейнера: .psarc, .pak, .dat, .bin, .arc и т. п. Начало одного извлечённого ресурса: первые 0x40—0x100 байт. Сравнение оригинального и изменённого файла, если существует образец, созданный известным инструментом. Какие данные точно известны: имя ресурса, размер текстуры, число символов шрифта, ожидаемая строка. Скриншот или экспорт структуры из ImHex/010 Editor. Для шрифта: размер атласа, несколько известных символов, их предположительные координаты. Для субтитров: пример одной реплики, её таймкод в игре и соответствующий фрагмент файла. PS3 или Vita-версия, регион и версия игры: структуры ресурсов могут отличаться. Не нужно передавать защищённые исполняемые файлы, ключи, лицензионные данные или полный коммерческий архив. Безопасный план работ в 5 шагов Шаг 1. Инвентаризация Создать копии исходных файлов. Зафиксировать размеры и SHA-256 локально. Определить контейнеры, текстуры, шрифты, локализации и субтитры. Найти открытые ресурсные архивы, пригодные для анализа. Шаг 2. Read-only анализ Реализовать inspect, list, verify. Определить magic, endian, header, TOC, offsets, sizes и alignment. Создать отчёт о структуре без записи файлов. Шаг 3. Распаковка и воспроизводимая сборка без изменений Реализовать extract. Сохранить manifest. Реализовать pack. Достичь побайтового совпадения original == repacked для тестового контейнера без изменений. Шаг 4. Контролируемые изменения ресурсов Изменить один текстовый ресурс. Затем протестировать шрифт и один небольшой атлас. Проверить size, CRC, offsets, padding и загрузку на собственной тестовой среде. Использовать in-place режим, если внешние ссылки не изучены. Шаг 5. Специализация под перевод Реализовать анализ таблиц строк. Добавить font-report, проверку кириллицы и atlas-границ. Реализовать subtitle-report. Подготовить распространение в виде патча, манифеста или инструкций, а не полного набора оригинальных ресурсов. Итоговая рекомендация Практически лучший путь — начать не с «универсального перепаковщика PS3-игр», а с узкого исследовательского инструмента: inspect -> list -> extract -> manifest -> rebuild unchanged -> verify -> edit one resource Критическая контрольная точка: инструмент должен сначала уметь распаковать и собрать неизменённый архив так, чтобы результат был побайтово идентичен оригиналу либо, если формат намеренно недетерминирован, структурно и checksum-совместим. Только после этого разумно переходить к текстам, шрифтам, атласам, кириллице и субтитрам.   Предлагаю написать универсальный комбайн-софт, для распаковки-запаковки PS3 игр. С заменой латиницы на кириллицу, с подтверждением , если длина разная, автоматическим подбора похожего шрифта игры. Но нужны ответы на вопросы. Какой функционал обязательно должен быть. GUI или CLI оболочка и. т. д. Скорее всего получится переводчик именно под все игры Ratchet and Clank.
    • Перенёс русификатор на версию для switch.
    • Это была отсылка)  Могу в стиме отзыв сделан сам на себя и написать русским игрокам повезло что получили лучший перевод
    • Старые версии AGS довольно чувствительны к файлу конфигурации, в acsetup.cfg обязательно должны присутствовать обе секции “[sound]” и “[misc]” (хотя бы пустые). Шрифты должны быть в кодировке KOI7-N1, ваши же просто заменяют латиницу в алфавитном порядке. Поправил порядок в одном из шрифтов чтобы было понятно как он должен выглядеть. Также в TRS файле текст закодирован в основном в верхнем регистре, что соответствует заглавным символам латиницы, а не кириллицы. В остальном всё вроде бы в норме. По ссылке файл корректный файл конфига и исправленный шрифт: https://tempfile.org/okRFVZjte6x/
    • Приветствую всех! “Полвека” был читателем — и вот наконец стал «писателем»! Пишу своё первое сообщение на форуме. Надеюсь, вы примете меня в свою компанию.  И пусть это будет не последний мой пост — а то вдруг затянет! 
    • Так вроде во всех браузерах уже давно есть функция перевода. В Google Chrome уже много лет есть такая возможность.
    • Я уже писал у себя в телеге, продублирую тут, для всех недовольствующих

      Почему русик платный? Ответ будет банален — это работа. Я для перевода этой игры пожертвовал своей основной работой+платный инструментарий и нервы, чтобы это чудо вышло на свет. Да и стоит он смешных денег

      Ну, и я первый кто её русифицировал до конца с момента релиза с 2020 года

      Всем, кто помогал в тестах большое спасибо, они получили русик бесплатно
  • Изменения статусов

    • Perfect End Strange  »  SerGEAnt

      Привет, озвучку для Silent Hill 4: The Room выпустил энтузиаст под ником Perfect End Strange, а вы написали совсем другую студию, пожалуйста, исправьте эту оплошность
      · 0 ответов
    • Jimmi Hopkins  »  SerGEAnt

      я его уже открыл в свободный доступ, чтобы не потерялось среди новинок
      · 0 ответов
    • NekoNya  »  Onzi

      https://www.dropbox.com/scl/fi/4xncxr2tqy77vz4644q08/text_RU_FINAL.json?rlkey=xckxss3jkql4gjmc1ah6qjb5e&st=k5ql651f&dl=0 
       
      Вот, то что вышло. Извинюсь, что зря говорил, что помогу (
      · 2 ответа
    • serfly  »  SerGEAnt

      Доброго времени! Недавно столкнулся с проблемой автоперевода XUnity AutoTranslator BeplnEx iL2cc. Пару последних лет часто пользовался, теперь консольные команды виснут на стадии загрузки библиотек, хотя они есть там изначально. На GitHub есть подобные вопросы, но ни одного рабочего ответа я не нашел. А Вы что можете посоветовать?
      · 0 ответов
    • serfly  »  SamhainGhost

      Доброго времени. По локализации игры Wicked Seed. Шрифт размазан и в полях, другие можно попробовать? Например arialuni_sdf_2022? Я профан в этом, но интересно.
       
      · 0 ответов
  • Лучшие авторы


×