Список форумов shedevr.org.ru shedevr.org.ru
Группа перевода приставочных игр "ШЕДЕВР"
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

Использование "A Simple Pointer Table Recalculator"

 
Начать новую тему   Ответить на тему    Список форумов shedevr.org.ru -> Базовый ромхакинг
Предыдущая тема :: Следующая тема  
Автор Сообщение
Rj



Зарегистрирован: 02.03.2005
Сообщения: 5
Откуда: Zion

СообщениеДобавлено: Сб Окт 08, 2005 3:30 am    Заголовок сообщения: Использование "A Simple Pointer Table Recalculator" Ответить с цитатой

Использование "A Simple Pointer Table Recalculator",
для легкой вставки текстовых блоков.


Р у к о в о д с т в о н а п и с а н о: Prez@lfx.org.
П о с л е д н е е о б н о в л ен и е: 23 августа, 2000.


Р у с с к и й п е р е в о д: "Rj" <kazanez@ngs.ru>
П о с л е д н е е о б но в л е н и е: 04 декабря 2001.



Введение:
Цель документа объяснить в простых терминах, как использовать утилиту для рекалькулирования поинтеров для большого блока текста. Почему?
Главным образом, потому что я вижу много людей, тратящих многие часы, делая это вручную, или потому что вижу недостаток документации к утилитам, в которой есть большая потребность, чтобы получить большую аудиторию пользователей к использованию поинтеров.

Требования:
Вам понадобяться некоторые дополнительные файлы и программы, что бы иметь возможность полноценно копаться в этом документе:

Включены в архив:
- файл кодовой таблицы для Final Fantasy 1 (ff1.tbl)
- пример скрипта (freedom.txt)
Это файл содержит цитаты связанные с темой свободы, которые отформатированы и годовы для вставки в FF1.NES ROM.
Я также добавил свою "Default Line" также, для всех оригинальных данных, которые не рассматриваются в новом скрипте.

НеВключены в архив:
- "A Simple Pointer Table Recalculator"
Это - простой рекалькулятор таблицы поинтеров (хехе), который я написал. Вы можете его взять по адресу
http://prez.lfx.org/dist/recalc/recalc10.zip.
- копия "Necrosaro's Thingy"
Я знаю, что некоторые из вас могут быть напуганы этим, так особенно начинающие хакеры, но "Necrosaro's Thingy" - это один из основных инструментов хакинга в этом деле. Не волнуйтесь, стоит вам нажать лишь несколько кнопок, и и вы придете к мысли, что Вам это нравиться.
- ROM "Final Fantasy 1 (english)"
- описание понятия поинтеров
В этом документе объяснения понятия поинтеров не приводятся, но я помню было хорошее руководство на эту тему, "'MadHackers guide to pointers", или или чтото вроде этого. Пробуйте вначале найти его, и прочитать.
- Общие знания по ROM хакингу :
Этот документ предполагает, что у Вас есть "достаточный" уровень знания относительно ROM хакинга. Если это не так, Вы можете столкнуться с терминами или понятиями, которых Вы не понимаете. Если дело обстоит так, изучите их, и возвращайтесь к этому руководству.

Окей бродяги, давайте погуляем:

Предварительные действия:
Откройте ff1.nes в Thingy.
Поместите ваши ff1.nes, ff1.tbl, и freedom.txt файлы в одну директорию, затем запустите "thingy.exe ff1.nes ff1.tbl". Я уже сделал установку в файле таблицы, чтобы иметь все необходимые пометки, в которых вы будете нуждаться, так что эта часть документа, где рассматривается программа Thingy, должна быть довольно проста.

1. Найдите место, где начинатеся блок диалогов.
(Не делайте это в этой демонстрации, так как я это уже сделал для Вас)

Возможно, что, если Вы были способны сделать дамп скрипат (должным образом), что Вы знаете, где этот адрес. Легкий способ найти его, это перейти к строкам в диаловом блоке, затем начать двигать курсор вверх. Спустя некоторое время, Вы столкнетесь с местом, где прекратиться показываться текст, и дальше идет только тарабарщина. В ROM файле Final Fantasy, это выглядит подобно этому:

Код:
 t m mm7mqm#m#mhenton
         aln9nQnln.n#n#n#n
         #o woSo#olip#phiqyoq
         Nothing here./LIGHT W
         ARRIORS.. Just as*i
         n Lukahn's prophecy
         .*Garland has kidnap


Как вы видите "Nothing here." является первой строкой в этом диалоговом блоке. Со строки "Nothing here." начинается блок диалогов, в роме с адреса 28210h, это будет нашим адресом "Началом Блока Диалогов ".
Отметье его:

Начало диалогов: 28210

2. Вставка нового скрипта.

Теперь, момент где проявляются лучшие качества Thingy. В файл таблицы, я уже добавил строки местоположения и вставку цитат, которые выглядят похожим на ниже привденные:

Код:
(28210h)Dialogue Block
        {28210h-freedom.txt}Freedom


Первый - первая строка описывает местоположения блока диалогов, вторая - описание файла вставляемого скрипта. Не думайте об этом слишком много, но эти вещи вы будете использовать достаточно часто, если начнете использовать Thingy. Я нахожу их очень полезными, так как я не должен повторно вводить адреса.

Так, теперь, когда вы открыли FF1. NES в Thingy, нажмите "J" (Jump), и выбирите пункт, названная "Dialogue Block". Теперь вы перейдете на строку "Nothing here."

Теперь, чтобы вставить freedom.txt в игру, нажмите "I", и затем выберите пункт называемый "freedom" (этим именем мы назвали наш скрипт в файле таблицы). Разве это было не легко? Но с Thingy мы пока еще не закончили

Имеется еще несколько адресов/значений, которые мы должны получить, так что давайте сделаем это.

Код:
Начало блока Диалогов: 28210
         Конеу блока Дилогов:?
         Начало таблицы Поинтеров:?
         Знак разрыва:?
         Адрес поинта по умолчанию:?

         Dialogue start:          28210
         Dialogue end:            ?
         Pointer table start:     ?
         Break value:             ?
         Default pointer address: ?


3. Нахождение конечного адреса блока диалогов, и адрес поинта по умолчанию.

Сначала, конечный адрес блока диалогов, им будет последний символ разделения сообщений в последней строке нового скрипта, исключая "сообщения по умолчанию". Это это может показаться сложным, но в действительности, это очень просто:

Так как "сообщения по умолчанию" было включено в наш файл скрипта, (если Вы не смотрели на скрипт, "сообщения по умолчанию":

Код:
I have no political
        insight.<END>


Последнее сообщение является сообщением непосредственно перед этим:

Код:
One man with courage is
        a majority.
         --Thomas Jefferson<END>


Адрес конца диалогового блока, расположен в месте где расположена буква 'n' слове Mr. Jefferson's. Если Вы перейдете к её местоположениею в ROM, Вы увидите, что она находится по адресу 2844E.

Также, пока мы здесь, мы можем определить адрес "сообщения по умолчанию", который является 28450. (Начало фразы "I have no po...".)

Код:
Начало блока Диалогов: 28210
         Конеу блока Дилогов:2844E
         Начало таблицы Поинтеров:?
         Знак разрыва:?
         Адрес поинта по умолчанию:28450

         Dialogue start:          28210
         Dialogue end:           2844E
         Pointer table start:     ?
         Break value:             ?
        Default pointer address: 28450


4. Нахождение начального адреса Таблицы Поинтеров

Теперь начинатеся хитрая часть, нахождение начального адреса таблицы поинтеров. Если Вы знаете простой способ вычислить поинтеры для игры, делая это, Вы можете легко вычислить поинтер для первого сообщения. Таблица поинтеров должен быть непосредственно выше блока диалогов, так что знание этого позволяет несколько более легкче, найти начало таблицы поинтеров.

Работая с могими играми, я не знал простого способа вычисления поинтеров (поскольку они имеют нечеткую величину смещения), сейчас я попытаюсь объяснить хороший способ обнаружения начала таблицы поинтеров. Этот способ может вам не подойти, но используя его, мне всегда удавалось добиться результата.

По существу, просто листайте вверх от начала блока диалогов в вашем шестнадцатиричном реадакторе (Thingy:) и следите за каждым вторым байтом строки (на стороне шестнадцатиричного экрана). Вы должны обратить внимание, что число на которое вы смотрите становится прогрессивно меньше. Это выглядит приблизительно так:

Код:
    ,--.
        A3|A2|E9 A2 03 A3 5C A3 78 A3 8A A3 95 A3 BB A3
        E5|A3|35 A4 65 A4 94 A4 DA A4 F8 A4 16 A5 5C A5
        7D|A5|CA A5 0F A6 30 A6 4F A6 89 A6 A1 A6 CB A6
        DF|A6|23 A7 3D A7 63 A7 94 A7 F1 A7 1E A8 4E A8
        6E|A8|7C A8 CF A8 12 A9 36 A9 6F A9 9D A9 C1 A9
          `--'

Посмотрев еще, вы можете заметить что цифры стали изменяться незакономерно.

Код:
        01 01 01 01 05 05 05 05 05 05 05 03 05 05 05 03
        01[01]01 01 01 01 01 01 01 02 00 03 03 03 03 03
        00[82]09 82 5C 82 BD 82 D9 82 30 83 53 83 D1 83
        FF 83 5E 84 78 84 94 84 CF 84 08 85 27 85 80 85


Это достойная догадка, что 00 82 - является первым поинтером.

Код:
[00] 82 09 82 5C 82 BD 82 D9 82 30 83 53 83 D1 83


Местоположение байта "00" и будет местоположением начала таблицы поинтеров. В ROM' t FF1.NES, это - адрес 28010.

Код:
Начало блока Диалогов:    28210
         Конеу блока Дилогов:      2844E
         Начало таблицы Поинтеров: 28010
         Знак разрыва:             ?
         Адрес поинта по умолчанию:28450

         Dialogue start:          28210
         Dialogue end:            2844E
         Pointer table start:     28010
         Break value:             ?
         Default pointer address: 28450


5. Нахождения значения символа разрыва диалогов

Хотя и последняя, но не менее важная цифра, значение Символа Разрыва Диалогов. Это значение символа разрыва диалогов показывает игре когда останавливать вывод текста. Это значение /xx в вашем файле таблицы FF1.TBL. Это значение настолько просто найти, что я не буду объяснять как это делатьSmile
Значение символа разрыва диалогов является 00.

Код:
Начало блока Диалогов:    28210
         Конеу блока Дилогов:      2844E
         Начало таблицы Поинтеров: 28010
         Знак разрыва:             00
         Адрес поинта по умолчанию:28450

         Dialogue start:          28210
         Dialogue end:            2844E
         Pointer table start:     28010
         Break value:             00
        Default pointer address:  28450


6. Запуск программы.

RECALC.EXE FF1.NES 28210 2844E 28010 00 28450

Код:
Рекалькулирование:
        Блок Диалогов (28210-2844E)
        Блок Поинтеров (28010)
        1-ый поинтер: 8200
        Значения символа разрыва: 00

        Recalculating:
                Dialog Block (28210-2844E)
                   Pointer Block (28010)
                1st pointer: 8200
                Break value: 00


.. И затем играйте в игру, я включил несколько скриншотов, конкретный результат работы этого руководства, так что надеюсь этот метод сработает и для вас.

Благодарности:

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

MadHacker
You wrote the first pointer document I ever read, and I still refer new hackers to it.

Aziwoqpd
This poor guy had to put up with all my silly programming questions when I first started programming. I appricate it very much. He has also been more than kind to host my website, and has done me a done of favors.

Haws
Another programming buddy of mine. Thanks again for the "UNIX Network Programming" book, and all the help you've offered by explaining.

DesertAngel
Thanks for nothing, fool.. You wouldn't even offer a word of advice when I had that overflow bug Wink all you could say was "Uhh.. I'm having sex right now", well thanks Smile because after a short debugging session, I fixed it myself Smile Thanks for this "tough love" support/lazyness.

The CTC
Thank you for the service that you provide to romhackers. It is most appricated by everyone.

Как со мной свзяться:

Вам понравилось это руководство? Вы ненавидите го? Вы ненавидите меня? Вы понятия не имеете, сколько я хочу знатьSmile Так сообщите это на ..

E-mail: prez@lfx.org
ICQ: 1035105
IRC: prez_on EFnet (#romhacking)

От переводчика:

Любые советы и комментария по тексту первода присылайте на следующие адреса

E-mail: kazanez@ngs.ru
ICQ: 18607235


Последний раз редактировалось: Rj (Вс Окт 09, 2005 10:25 pm), всего редактировалось 1 раз
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
АнС
RRC2008
RRC2008


Зарегистрирован: 08.11.2003
Сообщения: 2818

СообщениеДобавлено: Сб Окт 08, 2005 3:16 pm    Заголовок сообщения: Ответить с цитатой

Дело ты затеял, конечно, полезное, но сам перевод получился уж слишком дословным, нерусским. Или такова была цель - чтобы текст попахивал американским акцентом? Smile Фразы-то какие -
Цитата:
я вижу много людей, тратящих многие часы, делая это вручную, или потому что вижу недостаток документации к утилитам, в которой есть большая потребность
Shocked

Кстати. Нужно всегда давать ссылку на оригинал документа.

Вообще, лично я использую самописный рекалькулятор, и всем желаю того же, т.к. описываемая прога не универсальна.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Rj



Зарегистрирован: 02.03.2005
Сообщения: 5
Откуда: Zion

СообщениеДобавлено: Сб Окт 08, 2005 3:37 pm    Заголовок сообщения: Ответить с цитатой

Дело то было в 2001 году, того уровня и текст Smile от того и ссылки не сохранились, думаю по приводимому в начале текста названию документа, на оригинальном языке найти его будет несложно.
А запостил, что бы не пропадал зря. Smile
еще валяються пару текстов, ПРОСТО СДЕЛАЙ, ИДИОТ! (Tm) "Перевод" Документ 1 - Основы Замены Текста и Графики и "ХАКИНГ И ПЕРЕВОД ТЕКСТА", но они требуют большей доработки, если руки дойдут и могу запостить.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
АнС
RRC2008
RRC2008


Зарегистрирован: 08.11.2003
Сообщения: 2818

СообщениеДобавлено: Сб Окт 08, 2005 4:00 pm    Заголовок сообщения: Ответить с цитатой

Rj писал(а):
ПРОСТО СДЕЛАЙ, ИДИОТ! (Tm) "Перевод" Документ 1 - Основы Замены Текста и Графики


А, помню, классный док-хохма. Smile Я тоже хотел было написать нечто подобное, но потом это чувство (стёбное) куда-то ушло.

Я думаю, что ромхакерские доки не стоит переводить - так как подразумевается, что их читают переводчики, у которых не должно быть проблем с английским. Переводя и разжевывая доки для всех, мы плодим переводчиков, плохо знающих язык, с которого переводят.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Rj



Зарегистрирован: 02.03.2005
Сообщения: 5
Откуда: Zion

СообщениеДобавлено: Вс Окт 09, 2005 10:13 pm    Заголовок сообщения: Ответить с цитатой

да, уж, дока... в духе книг в жОлтых обертках для думми, что то сделать за 5 сек, ...

к слову о переводу документации, увы массы пассивын, не многие даже знающие ангельский язык полезут разбираться даже в основах, если не дать базовый русскоязычный уровень знаний, то можно еще долго прозябать на задворках (неважно чего, но на задворкахSmile), можно вспомнить трейд с VK, где все все понимали кто то правильно а кто то иначе.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Chaos
Смотрящий в ночи


Зарегистрирован: 08.11.2003
Сообщения: 587
Откуда: Первозданный Хаос

СообщениеДобавлено: Пн Окт 10, 2005 5:46 am    Заголовок сообщения: Ответить с цитатой

Цитата:
увы массы пассивын, не многие даже знающие ангельский язык полезут разбираться даже в основах, если не дать базовый русскоязычный уровень знаний

Ну, в таком случае им просто нефиг делать в благородном деле приставочного ромхакинга, если даже в этом они пассивны.
_________________
Homo sum; humani nibil a me alienum puto.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Rj



Зарегистрирован: 02.03.2005
Сообщения: 5
Откуда: Zion

СообщениеДобавлено: Пн Окт 10, 2005 10:03 am    Заголовок сообщения: Ответить с цитатой

Хе!, благородный дон легонько не врубаеться, нужно призвать легион, что бы выцепить изюменку, увы, это скорее реальность, и даже необходимая, пусть зарисуются 1000 чайников, а если из ни 1-2-3 самовара вычеканяться, так это же лучше, мне кажется нужно быть более раскрытыми. ИМХО
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Chaos
Смотрящий в ночи


Зарегистрирован: 08.11.2003
Сообщения: 587
Откуда: Первозданный Хаос

СообщениеДобавлено: Пн Окт 10, 2005 1:53 pm    Заголовок сообщения: Ответить с цитатой

Ты даже представить себе не можешь, сколько вреда могут нанести 1000 чайников - а самовары на то и САМоВАРЫ, что способны до всего вычеканиться сами.
_________________
Homo sum; humani nibil a me alienum puto.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
АнС
RRC2008
RRC2008


Зарегистрирован: 08.11.2003
Сообщения: 2818

СообщениеДобавлено: Пн Окт 10, 2005 2:36 pm    Заголовок сообщения: Ответить с цитатой

Rj, мы не сторонники количественного подхода. Шапками сейчас не закидаешь даже пиратское качество переводов. Хватит об этом.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Rj_
Гость





СообщениеДобавлено: Пн Окт 10, 2005 11:58 pm    Заголовок сообщения: Ответить с цитатой

Chaos писал(а):
Ты даже представить себе не можешь, сколько вреда могут нанести 1000 чайников - а самовары на то и САМоВАРЫ, что способны до всего вычеканиться сами.

чайников нужно направлять, конечно проще закрыть глаза на существование ньюби, а правельней, помочь и направить Smile ИМХО
Вернуться к началу
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов shedevr.org.ru -> Базовый ромхакинг Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2005 phpBB Group