Разработка сайта для Вашего бизнеса. Веб дизайн. Дизайн логотипа, фирменного стиля, рекламная фотография . Комплексный рекламный креатив.

Ralex. We do the work.
На рынке с 1999го года. Средняя ценовая категория. Ориентация на эффективность решений.
Ознакомтесь с нашим портфолио
Узнайте больше о услугах
Свяжитесь с нами:
E-mail: [email protected]
Tel: (044) 587 - 84 - 78
Custom web design & дизайн и разработка сайта "под ключ"
Креативный, эффективный дизайн. Система управления сайтом (СУС).
Custom flexible разработка систем электронной коммерции
Система e-commerce разрабатывается под индивидуальные потребности. Гибкая функциональность.
Search Engine Optimzation & оптимизация под поисковые системы (SEO)
Постоянная оптимизация и мониторинг сайта в поисковых системах. Достигаем результата быстро и эффективно
Custom logo design & дизайн логотипа и фирменного стиля
Многолетний опыт. Огромное портфолио. Уникальное предложение и цена.
профессиональная рекламная фотография
креативно, смело, качественно
Custom logo design & рекламный креатив. дизайн рекламы
Многолетний опыт. Огромное портфолио. Уникальное предложение и цена.

Як я перекладав Daggerfall ...

  1. ідея
  2. проблеми перекладу
  3. Як воно влаштоване
  4. інструментарій
  5. шрифт
  6. екзешник
  7. квести
  8. Мапа
  9. графіка
  10. Імена, фракції, магія, біографії
  11. екзешник повертається
  12. дрібниці

Наша взаимовыгодная связь https://banwar.org/

Автор: Rainfall

Все, що написано нижче - плід уяви автора. Насправді він ніколи не грав в Daggerfall і боїться підходити до пристроїв, що містить більше трьох кнопок. Всі картинки намальовані вручну в Gimp на замовлення автора, будь-які збіги назв та іншого випадкові, а код на Паскалі є перетвореним в текст потоком даних з генератора випадкових чисел. Якщо потрібні якісь додаткові роз'яснення, пишіть.

ідея

Ідея перекладу Дагерфолла виникла практично відразу після того, як я купив «російську» версію гри. Купив - викинув - продовжив грати в англійську, але ідея залишилася. Я розглядав fall.exe, інші файли, роздумував над можливістю перекладу, але ... Все впиралося в шрифт. Російських букв в шрифті Даггера не було, а 12 англійськими з тих, що схожі на російські задовольнятися не хотілося б.

Потім настав лютий 2001 року, я писав курсову роботу, в якій працював з символами тексту. Повивчавши структуру шрифту в текстових режимах екрана, я зрозумів, як складаються літери. Другим, що я зрозумів, було те, що шрифт Даггера, в принципі, нічим не відрізняється від шрифту 8 × 16. Отже, все було готово для створення шрифту і подальшого переказу гри.

проблеми перекладу

У цій грі, як і в багатьох інших, основна частина тексту інтерфейсу, предметів, внутрішньоігрових повідомлень і інших описів, ниходітся в виконуваному файлі. Лежить воно разом з програмним кодом, тому додавати текст в файл можна - текст «залізе» в сегмент з кодом або просто змістить цей код, що неминуче створить масу проблем.

Відступ для програмістів: я намагався дописувати текстові рядки в кінець файлу і знайти посилання на них, але ... Уміння не вистачило. Посилання видно, я їх міняю, але не дає це нічого! І довжини рядків теж видно, але не змінюються.

Так що переводити треба «буква в букву». Менше можна - залишок місця заповнюється пробілами нульової довжини (їх не видно і текст не зміщується). Через це і виникає перша проблема.

Середня довжина слова в англійській мові - 5 букв, в російській - 8 або 9. Часто буває так, що короткий синонім до англійського слова підібрати не вдається. Класичний приклад - «USE». Слова «використовувати» або «застосовувати» якось не влазять в трилітерний ліміт. Ще приклад - з часів першої Kyrandia - шукали чотирибуквений переклад слова «open». Начебто поки не знайшли. А всім любителям Даггера відомий переклад слова «axe» як «меч». У мене це «тпр», але це мало що змінює. Коротше, перша проблема - вмістити переклад в заданий англійським текстом кількість букв.

Друга проблема куди серйозніше. Мовою C ++ тут ​​не обійтися, тут потрібна російська.
Гра становить багато текстові повідомлення зі шматочків. наприклад:
The Mages Guild formed an alliance with Knights Mentor .
За ідеєю, російський переклад повинен виглядати так:
Гільдія Магів уклала союз з Наставником Лицарів.
А виглядає він ось так:
Гільдія Магів уклав союз з Наставник Лицарів.
Чому так? А ось чому.

У грі це буде виглядати як «% fcn formed an alliance with% fcn». % Fcn - це назви політичних сил, що діють в світі Даггерфолла. Їх назви лежать в faction.txt відкритим текстом, дивіться, хто хоче. І лежать вони там тільки в називному відмінку. А відмінків у нас шість, і слова в залежності від них змінюються. Ось і укладає несклоняемое і незламний Наставник Лицарів союз з Гільдія Магів. (Звичайно, можна зробити «Гільдія Магів і Наставник Лицарів уклали союз». Можна. Але далеко не завжди.)

З союзничкам розібралися, залишився дієслово - присудок. Він в російській мові змінюється в залежності від роду підлягає. В англійському так не буває - «He said» і «She said». А в файлі записана тільки одна форма дієслова, і невідомо, якого роду іменник в пропозицію підставлять. Ось в таких помилках і складається друга проблема.
(Вибачте мене, панове лінгвісти, говорю не так, як треба, а так, як розумію).

Ну і ще кілька стандартних помилок, які не слід робити:

Не слід думати, що незнайоме слово, складене з двох знайомих, матиме саме такий сенс, який утворюється з двох слів. Досить незрозуміло, але можна навести приклад. Є в Даггера таке заклинання - Frostbite. Frost - мороз, іній; bite - укус. Я не подумав, і перевів це як «укус морозу». Словник же стверджує, що краще було б «обмороження».

Часто бувають помилки в перекладі схожих один на одного слів або слів з кількома варіантами перекладу. Кажуть, що в одному з перекладів Baldur's Gate слово «Bow» було переведено як «уклін», а «Missile Weapons» - як «ракетна зброя».

Постарайтеся виписати або запам'ятати прийняті вами варіанти перекладу слів і імен. Інакше «ціп» називатиметься «кистенем», а «Ватсон» - «Уотсоном».

Маніпулювати з рядками потрібно дуже обережно. Не варто подовжувати їх в fall.exe або міняти місце початку рядка. Інакше можна отримати на екрані купу незрозумілих символів. Ті ж правила бажано дотримуватися з усіма іншими файлами крім книг, квестів і text.rsc (для цих трьох є нормальні редактори).

Як воно влаштоване

Тексти у всій грі розташовані по самим різних місцях. По-перше, це сам файл, що запускається fall.exe. У цьому файлі лежить майже весь текст інтерфейсу гри, весь інвентар, назви заїжджих дворів і магазинів і ще купа всього. Природно, його треба пропатчити до самої останньої версії, і тільки потім переводити. Перша проблема виникає в основному через нього. Наприклад, довелося складати список слів, з яких генеруються назви таверн і робити переклад «буква в букву» всіх іменників. До того ж всі ці слова повинні були бути чоловічого роду - в таверну «Сміливий Королева» заходити якось неприємно.

Основна частина тексту лежить в файлі text.rsc. З ним проблем, в основному, не виникає. Іноді, коли замість прямого тексту підставляються змінні, може виникнути друга проблема (приклад з Наставником вище). У цьому файлі близько 1400 блоків тексту, розміром від 24 кілобайт до трьох байт. Переклад цієї частини гри легше практично всього іншого, утиліти для видирання текстових шматків з файлу і запису цих шматків назад в файл давно є. Існує і утиліта під Win32, але про неї я дізнався тільки в 2003 році.

Найбільший і самий проблемний файл - maps.bsa. У ньому нам цікаві географічні назви. У грі 16 000 локацій, а назва кожної з них повторюється в файлі як мінімум тричі. До того ж, всі ці назви будуються по шаблонах, так що обидві проблеми тут встають на весь свій 21-мегов зростання.

В окремому каталозі лежать книги. Їх я майже не торкався, програми для їх редагування існують і проблем з ними ніяких не виникає. Ще в грі є близько 350 квестів. Проблема з ними одна - беруть числом :-)

Проблема з ними одна - беруть числом :-)

Треба сказати, що я поставив все додаткові квести, які знайшов (все той же www.m0use.net/~uesp ), Щоб можна було перевести і їх. Для них програми теж є, про них буде розказано пізніше.

Файли біографії. Це ті самі «12 питань», які задаються при генерації персонажа (всі намагаються витягнути себе ebony dagger). Файлів всього 18, 17 для основних класів і 1 для Custom-класу (хоча є сильна підозра, що для свого класу гра може задавати питання з різних файлів.

У файлі flats.cfg немає ніяких площин, зате є короткі словесні портрети всіх людей, з якими можна поговорити (Гортвог, наприклад - «Царствений орк»).

Magic.def містить назви всіх артефактів, що є в грі, і суфікси і префікси до генеруються грою магічним предметам. Простіше нікуди.

У monster.bsa - назви монстрів (разюче відповідність :)

Namegen.dat містить шматочки імен з гри. Можна міняти як завгодно, головне - не робити їх занадто довгими.

І, нарешті, spells.std - заклинання з гри. Все, що є за замовчуванням. Є і приховані - наприклад, «! Lycanthropy». Гравці з хорошою пам'яттю зрозуміють, що викликало баг з «безкоштовної» обкастовкой раз в день і обкастовкой за чверть «ціни». (На початок закляття ставилося! Або $).

Треба знати, що текст в Даггера формується не зовсім тими ж символами, що і в DOS і WINDOWS. У тих випадках керуючими символами були перші 32 з таблиці ASCII, тут же - останні 4.

Символ 0xFCh аналогічний ENTER для рядків, вирівняних по лівому краю екрану.

0xFDh - Те ж саме, але для відцентрувати рядків.

0xFEh позначає кінець елемента з текстом. Це скрізь - і в text.rsc, і в секціях квестових файлів. Наступний за цим символ починає новий елемент.

0xFFh - випадковий роздільник. З кількох рядків при виведенні їх на екран буде обрана одна (природно, кожен раз вибираються різні рядки). Наприклад, таким чином видаються випадкові результати при кишеньковому крадіжці, вітання в розмовах і вступні для квестів.

Слово, що починається з символу "%" - внутрішня змінна гри. Наприклад,% pcn - ім'я героя,% ra - його раса,% jok - тупа жарт. Змінювати не треба.

Слово, що починається з «_» - теж змінна. Зустрічається в квестах, перекладу не потребує.

інструментарій

Сподіваюся, жодному фанату Даггерфолла не треба пояснювати що таке MS-DOS. А гра саме під цю систему :-) Ну, яка мета - такі і засоби:

  • Necromancer's Dos Navigator. Гарна оболонка. Користуюся їй досі. Потрібні були розумні таблиці перекодування і многооконность.
  • Набір утиліт, викачаних з m0use. Bookedit, DFTEXT, просмотровщик графіки, редактори квестів і книг. Щоб дістати весь текст, була написана невелика прога, яка запускала DFTEXT номер_текста_в_файле і зберігала вихідний файл в каталог DFTEXT. Її исходник даний нижче.
  • Власні програми для зміни розкладки тексту по таблиці (qwer -> йцук). Те ж саме реалізується в Punto Switcher через Shift + Break, але у мене інша розкладка.
  • Andypic версії 3.2 для перегляду, діставання і зворотного запаковування графіки.
  • QVIEW. Аналог HIEW. Хто знає - той знає, іншим вистачить і UltraEdit.

І дві програми під Win:

  • Photoshop 5.0. Для такого майстра клавіш «Ctrl + С» і «Ctrl + V» як я, згодилася б і третя версія, але була тільки ця. Всього роботи - вирізати старі літери, замінити фон на порожній, вставити нові літери.
  • UltraEdit. Хороший текстовий редактор, що підтримує HEX, RegExp і заміну в багатьох файлах одночасно. Зійде будь-яка версія, починаючи з 9.0.

Треба зауважити, що при діставання з text.rsc елементів тексту програмою DFTEXT ці елементи псуються. З них видаляються спецсимволи (див. Вище). ENTERи програма залишає, але випадкові роздільники треба відновлювати вручну.

шрифт

шрифт

Не буду детально описувати структуру шрифту (а всього в Даггера їх 5), досить сказати, що пікселя записуються битами цифр, літери можуть бути великими (16 на 16 пікселів), а на початку файлу шрифту записується ширина літери. Розшифровка всього цього зайняла 2 тижні, приблизно стільки ж зайняли роздуми на тему «як же переробляти шрифт». Вирішив, що клавіатурне відповідність підійде (тобто букві «q» відповідатиме «ї», а «&» - «.» Перекладав і прописні, і малі літери. Це тільки потім я здогадався написати програму, а тоді я вивів солідну пачку листів в клітку і ще 2 тижні сидіння перед монітором вечорами.

Розділові знаки розставлені як в DOS. Хоча шрифтів і 5, але я поміняв найдрібніший шрифт на стандартний, а покажчики на готичний змінив на нього ж. Це зроблено тому, що в дрібний шрифт букви «Ж, Щ, Ш, И, Ф» і (можливо) деякі інші просто не влізуть, а для русифікації готичного шрифту у мене не вистачить здібностей до малювання.

Для графіки ж я записав в окремий файл все 3 шрифту, що зустрічаються в грі. Перший шрифт можна побачити на екранах створення персонажа. Він високий, тонкий і незграбний. Другий - звичайний шрифт гри. Її видно на екрані стану персонажа (викликається по F5). Нижче, товстіший і більш різнобарвний. Третім же шрифтом виводяться всі текстові повідомлення. І потім, при редагуванні графіки залишалося тільки копіювати і вставляти потрібні літери.


[+] Лістинг програми для перекладу шрифтів program font_decipher; uses crt; {Розбирає символи з даггерского шрифту. Треба записати програму в один каталог з шрифтами Клавіші: вправо - символ вперед, вліво - символ назад, esc - вихід. enter, вгору, вниз - режим редагування. Там: вгору-вниз-вліво-вправо - ходити по символу пробіл - переключити точку c - зберегти зміни q - вихід Всього символів 239. {font0000 - здоровий, 16бітний. font0001 - готичний. Назви книг. 16бітний. font0002 - дрібний шрифт (4х5). font0003 - стандартний шрифт Даггера. font0004 - техногенний. Чи не розрізняє регістр букв. Було б непогано реалізувати довжину символу} var myname: string [12]; {Рядок імені файлу} txt, sma: array [1..16] of byte; lge, lar: array [1..16] of word; {Sma - для малих шрифтів, lar - для великих} n, m: integer; {Лічильники циклів} fajl: file of byte; {Файл для малих шрифтів} bigf: file of word; {Він же для великих} bits: byte; {Розрядність} size: integer; {Розмір файлу} k: byte; {Код вводиться клавіші} myposx, myposy: byte; outpel: byte; symsize: word; function pow (x, power: integer): word; var innerloop, result: word; begin result: = 1; for innerloop: = 1 to power do result: = result * x; pow: = result; {Функція піднесення до степеня. Тут все ясно.} End; begin repeat clrscr; {Очистимо екран} bits: = 1; {За замовчуванням шрифт восьмібітних} myname: = 'font0004.fnt'; Write ( 'Виберіть шрифт: 1-великий, 2-готика, 3-малий, 4-стандартний, 5-техногенний.'); k: = ord (readkey); case k of 49: begin myname: = 'font0000.fnt'; bits: = 2; end; 50: begin myname: = 'font0001.fnt'; bits: = 2; end; {Перші 2 шрифту шістнадцятибітну.} 51: myname: = 'font0002.fnt'; 52: myname: = 'font0003.fnt'; {Решта залишаються восьмібітного.} End; until (k> = 49) and (k1) then dec (myposx); if (k = 72) and (myposy> 1) then dec (myposy); if (k = 80) and (myposy = (2 / bits)) then size: = size-3 + bits; {Так як слово в 2 рази більше байта.} If bits = 1 then seek (fajl, size * 16 + 964) else seek (bigf, size * 16 + 482); {Перехід до потрібної букві з урахуванням заголовка файлу} for m: = 1 to 16 do if bits = 1 then read (fajl, sma [m]) else read (bigf, lar [m]); {Зчитування коду літери в масив з даними.} Clrscr; {Прибираємо попередню букву} if bits = 1 then {Для восьмибітних один рядок статусу} writeln ( '87654321 Номер символу:', round (size / 2)) else {а для 16бітних - інша.} Writeln ( 'FEDCBA9876543210 Номер символу:' , size); for m: = 1 to bits * 8 do {Залежно від кількості біт ...} begin if bits = 1 then {... береться і кількість проходів.} for n: = 1 to 8 do if (sma [m * 2] and (pow (2,8-n)))> 0 then write ( '-') else write ( '') else for n: = 1 to 16 do if (lar [m] and (pow (2, 16-n)))> 0 then write ( '-') else write ( ''); {А спосіб декодування простий - накладенням бітової маски, на кожен біт коду символу. Якщо біт є - зафарбовує, немає - пропускаємо. Така природа всіх бітових шрифтів.} Writeln (m); {Виведемо лінійку з номерами, перенесемо рядок} end; {If bits = 1 then begin seek (fajl, round (size / 2) * 4 + 2); read (fajl, outpel); write ( 'Розмір символу -', outpel + 1, 'пікселів'); end else begin seek (bigf, size * 2 + 1); read (bigf, symsize); write ( 'Розмір символу -', lo (symsize), 'пікселів'); end;} until k = 27; {І так поки не натиснуть escape} {Закриємо файл, який був відкритий} if bits = 1 then close (fajl) else close (bigf); {І вийдемо. Чи не прощаючись.} End. Програма для масового вибору тексту з text.rsc {Потрібен файл dftext.exe} {$ M $ 4000, 0, 0} Uses Dos; Function IntToStr (I: Longint): String; {Перетворює значення типу Integer в рядок} Var S: String [11]; Begin Str (I, S); IntToStr: = S; End; const ProgramName: string = 'dftext.exe'; Var n: integer; a: string; Begin for n: = 2000 to 4000 do begin a: = concat (intToStr (n), 'd: \ dftext \', inttostr (n)); WriteLn ( 'Пробую запустити', programname, a); SwapVectors; Exec (ProgramName, a); SwapVectors; WriteLn ( '... повернувся з Exec'); end; End.

екзешник

В першу чергу я взявся за fall.exe. Тексту в ньому небагато, але він критично важливий, тому русифікована версія виглядає негарно. Взагалі там лежать майже всі меню гри, її відповіді на дії гравця, назви провінцій, таверн і магазинів, предмети, зілля, репутації і ранги в гільдії і деяка інша інформація. Проблема перекладу «буква в букву» тут дістає постійно. Деяка свобода є тільки з інвентарем і зіллям. (Там назви і властивості предметів представлені як запис - хто знає Паскаль, той зрозуміє. Під назву предмета відведено 24 символу, зайві ж букви можна затерти нульовими байтами). Спроби затерти так само інші рядки закінчилися невдало. Затирання пробілами не рятувало становища - текст деформувався і «їхав» з потрібних місць. Довелося пожертвувати символом «*», зробити його порожнім, дати йому ширину в 1 піксель і забивати їм непотрібне місце.

Як ви можете судити по моїм попередженням , Спроби наростити файл не увінчалися успіхом. Отримавши кілька чудових крахів системи, я відмовився від ідеї «нарощування» файлу, зате отримав ідею «резервного копіювання». Після перекладу багатьох повідомлень я припинив роботу над fall.exe і взявся за створення персонажа. Переклад так і залишився кривим, але те, що я припинив роботу не означає що я закинув екзешник зовсім.

квести

квести

Всі тексти квестів знаходяться в файлах з ім'ям * .qrc. Для них є свої редактори. Я користувався DMPQuest 1.3, скачаним з m0use. Квести редагуються абсолютно нормально, головне - дотримуватися порядку рядків і не ставити зайвих спецсимволов. Їх редактор представляє у вигляді тегів (наприклад). Єдина несумісність виникає через знаків «менше» і «більше», які у мене відповідають буквах «Б» і «Ю». Редактор при збереженні сприймає їх як початок і кінець тега, не знаходить такого і псує квест. Проблему я вирішив, виправивши в DMPQUEST.EXE ці символи на «$» і «|» ось так:

This patch was made via C2U / 486, v0.10c, from Professor Nimnull Difference (s) between DMPQUEST.EXE & DMPNEW.EXE DMPQUEST.EXE 000436FC: 3C 24 00043708: 3E 7C 00043920: 3C 24 0004392C: 3E 7C 00045EF8: 3C 24 00045EF9: 3E 7C 00045EFC: 3C 24 00045F00: 3E 7C 00045F04: 3C 24 00045F08: 3E 7C 00045F0C: 3C 24 00045F10: 3E 7C 00045F14: 3C 24 00045F18: 3E 7C

Несумісність була виправлена, правда начисто зникла підсвічування тегів і текст виглядає не так красиво. А саме ці символи я вибрав тому, що в текстах Даггера вони не зустрічаються ні разу.

В іншому ж тексти квестів редагуються нормально, ніяких обмежень за обсягом я поки не помітив.

Мапа

Як я вже писав, в цей файл містяться дані про приблизно 16 000 локацій. Причому назви складені з заздалегідь визначених шматочків. Щоб перевести всі ці назви потрібно дуже багато вільного вредені і дуже довгий термін життя. Тому треба було автоматизувати роботу.

При розборі файлу text.rsc я знайшов кілька елементів з назв. Зокрема, це 4075 і 4076 для храмів офіційних релігій Тамріеля, 4050 для храмів стародавніх релігій, 4051-4054 ​​для кладовищ, ферм, замків і садиб та 8100, 8200-8215 для підземель. Про назви міст поговоримо окремо.

Припустимо, звичайні шматки назв можна було перевести, ніж я і зайнявся. Але через два дні виявив велику проблему. Заважали слова «the» і «of». Я довго мучився, намагаючись знайти довгі переклади, щоб прибрати ці два слова, але толку було мало. Ну яким довгим словом можна перевести «The excavation of щось-там»? Потім вирішив перенести ці слова в кінець назви, щоб потім забити їх пробілами. Тут і знадобився UltraEdit.

Він підтримує регулярні вирази - складні складові формули для пошуку і заміни тексту за шаблоном (ось загорнув!) Наприклад, цим я користувався для заміни «The Morgosa Tunnel» на «Morgosa The Tunnel»:

^ (The ^) ^ (^) ^ ([a-zA-Z ^ {^} ^ [^]] + ^) ^ (^) ^ (Tunnel ^)

замінити на

^ 3 ^ 1 ^ 5

Природно, замість Morgosa може бути будь-яке інше ім'я. А щоб замінити це на «Morgosa Tunnel The» треба поставити ^ 3 ^ 5 ^ 1 і т.д. Детально описувати регекспи не стану, вони дуже точно і з прикладами описані в довідці UltraEdit.

Після довгих переносів все було готово для перекладу. Потрібна тільки одна пересторога - записуйте, ЩО і ЯК ви перевели. І якщо ви перевели «Temple» як «Собор», то «Cathedral» не можна переводити так само! Інакше вийде багато локацій з однаковими іменами, в половину з яких ви просто не зможете потрапити.

Шматки назв міст ніде окремо не прописані, але вгадуються інтуїтивно. Найпростіше редагувати назви міст північних провінцій, складніше - південних. З яких шматків складаються назви Chesterwark і Chesterwick - зрозуміло всім. А на скільки шматків розбивати назви Bubyrydata і Bybopada?

І останнє застереження для редагування карти і взагалі будь-яких файлів. Не варто їх правити при запущеній грі. У Daggerfall проблеми з доступом до вже відкритих файлів, при спробі відкрити такі він просто вилітає в DOS.

графіка

графіка

Мало що можна сказати про графік, але алгоритм роботи тут такий:

  1. Знаходимо утиліту Andypic, поміщаємо її в каталог Dagger \ Arena2 і перейменовуємо в a.exe для стислості.
  2. Набираємо A.EXE filename / B: PCX_filename, де filename - ім'я файлу з графікою (IMG / CIF / TEXTURE), а PCX_filename - ім'я файлу, куди запишеться картинка в форматі PCX.
  3. Редагуємо в Photoshop все, що нам треба, стежачи за правильним вибором кольорів з палітри.
  4. Записуємо назад командою на зразок A.EXE filename / B: PCX_filename / S

Є варіант, що Andypic поскаржиться на відсутність відомостей про ширину і висоту картинки. Тоді прийдеться дописувати ці дані вручну. Для цього додаємо в початок файлу 12 нульових байт. У п'ятий і шостий записується ширина картинки, в сьомий і восьмий - висота. (Призначення інших байт мені неясно, але і без них все працювало. Якщо щось відмовиться працювати, то можна підставити іншібайти з будь-якого іншого файлу.) Природно, в шістнадцятковій системі, природно в зворотному нотації. Висота і ширина вгадуються інтуїтивно, помножені друг на друга вони дають розмір файлу до вставки 12 байт. (Наприклад, 64000 байт - 320 х 200). Ширина не може бути більше 320, висота - більше 200. Для пошуку простих чисел - дільників числа можна користуватися цією програмою:

program factorizer; uses crt; label 10; var n, m, k: longint; begin clrscr; write ( 'Введіть число для розбиття:'); readln (n); m: = 2; 10: if n> 1 then for k: = m to round (sqrt (n)) do begin if (n / k) = round (n / k) then begin write (k, '*'); n: = round (n / k); m: = k; goto 10 end; end; write (n); readkey; end.

Після редагування та збереження назад в файл бажано ці 12 байт видалити, щоб Даггер не обурювався. Ще можна працювати з утилітою Dagpic, але і вона теж скаржиться на відсутність розмірів картинки.

Імена, фракції, магія, біографії

Імена, фракції, магія, біографії

Імена в грі генеруються випадково. «Шматочки» для генерації імен лежать в файлі namegen.dat. Правда, далеко не всі з цих шматочків використовуються, наприклад я не бачив у грі жодного «греко-римського» імені, хоча шматків для таких імен - в надлишку. Редагуються стандартно, по 10 байт на шматок, зайві байти забивати нулями.

Фракції - політичні сили, що діють в провінції Хаммерфелл. Їх назви (і не тільки) зберігаються в faction.txt. Редагуються без найменших проблем в UltraEdit.

Магія - magic.def і spells.std для артефактів і спеллов, відповідно. У першому випадку - 32 байта для імені, у другому - 25. Зайві байти забивати знаєте чим.

Файли біографії редагуються UltraEdit-му, найкраще через заміну в багатьох файлах, тому що питання повторюються по багато разів. Шаблон імені файлу - biog ?? t0.txt

екзешник повертається

Але все це переводилося без проблем і труднощів. Цікава робота швидко перетворювалася в мавпячу, так що я забув про вирішених проблемах і згадав про невирішені. Зокрема, проблеми з непомещающімся в fall.exe текстом залишалися. Я згадав про те, що колись знав Асемблер і завантажив екзешник в IDA 3.76, щоб побачити посилання на текстові рядки і перенаправити їх в кінець файлу. Рядки-то я побачив, посилання на них теж, але їх зміна нічого не змінило :) Ентузіазм швидко згасав.

Це були не зовсім посилання, які не прямі покажчики на адреси рядків в пам'яті, а тільки байти з довжинами цих рядків. Але подовжити одну з рядків за рахунок іншої не виходило. Гра вперто видавала ті ж рядки, скорочуючи їх рівно в тих місцях, в яких треба. Покажчик же на початок цього «масиву» рядків я не знайшов. Та якби й знайшов, то змінити вихідний сегмент на потрібний було б мені не під силу. Я повертався до IDA-нутому ісходнику ще кілька разів, але безрезультатно. (Для зацікавлених - назви ськиллов починаються з 1B6227h для версії 2.13. Дещо ще лежить на 1B9F0Ah, інше я встиг забути).

дрібниці

Цілком окремо стоять повідомлення гри про помилки і конфигуратор звукової карти. Їх слід переводити нормальними російськими буквами в кодуванні DOS (866), природно «буква в букву», але місця зазвичай вистачає. Інсталятор ж самої гри перевести не вдалося - начебто шрифт зашитий в самому install.exe, але де він там, і як його міняти - невідомо.

переглядів:

Чому так?
Ну яким довгим словом можна перевести «The excavation of щось-там»?
А на скільки шматків розбивати назви Bubyrydata і Bybopada?
Категории
  • Биология
  • Математика
  • Краеведению
  • Лечебная
  • Наука
  • Физике
  • Природоведение
  • Информатика
  • Новости

  • Новости
    https://banwar.org/
    Наша взаимовыгодная связь https://banwar.org/. Запустив новый сайт, "Пари Матч" обещает своим клиентам незабываемый опыт и возможность выиграть крупные суммы.


    Наши клиенты
    Клиенты

    Быстрая связь

    Тел.: (044) 587-84-78
    E-mail: [email protected]

    Имя:
    E-mail:
    Телефон:
    Вопрос\Комментарий: