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

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



Зарегистрирован: 21.11.2008
Сообщения: 139
Откуда: Петербург

СообщениеДобавлено: Вт Янв 20, 2009 10:38 am    Заголовок сообщения: Ответить с цитатой

Djinn писал(а):
Ну и чего тут вычислять? Стандартные гбашные пойнтеры. Вычислять их вообще не надо - они абсолютные.


Отсюда подробнее, пожалуйста.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Марат



Зарегистрирован: 08.01.2008
Сообщения: 211
Откуда: Казахстан, Астана

СообщениеДобавлено: Вт Янв 20, 2009 11:24 am    Заголовок сообщения: Ответить с цитатой

Stealth писал(а):
Djinn писал(а):
Ну и чего тут вычислять? Стандартные гбашные пойнтеры. Вычислять их вообще не надо - они абсолютные.


Отсюда подробнее, пожалуйста.

Абсолютные, значит, что значение поинтера - адрес строки сообщения. Т.е., если значение поинтера равно 00025344, то строка на которую указывает поинтер, находится по адресу 00025344.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
HoRRoR
RRC2008
RRC2008


Зарегистрирован: 21.06.2006
Сообщения: 2341
Откуда: Ростов-на-Дону

СообщениеДобавлено: Вт Янв 20, 2009 12:27 pm    Заголовок сообщения: Ответить с цитатой

У GBA адресное пространство РОМа начинается с 0x08000000. Сам файл дамп РОМа начинается с нуля. Т.е. чтобы узнать адрес в файле - тупо отнимаем от поинтера 0x08000000.
_________________
Работаю за деньги
KILL ALL HUMANS!!!!!111
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Axel
Советник


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

СообщениеДобавлено: Вт Янв 20, 2009 8:07 pm    Заголовок сообщения: Ответить с цитатой

*хвастаюсь*
В ПП2 в hex-гляделке есть:
1. настраиваемая подсветка хексов (для наглядности)
2. спец. кнопка для перехода по "указателям"

_________________
Всех их вместе переведём!
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Stealth



Зарегистрирован: 21.11.2008
Сообщения: 139
Откуда: Петербург

СообщениеДобавлено: Ср Янв 21, 2009 12:47 am    Заголовок сообщения: Ответить с цитатой

Слона-то я и не приметил. Сработало, спасибо!
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Shinigami
Неграмотный


Зарегистрирован: 25.09.2008
Сообщения: 87
Откуда: Екатеринбург

СообщениеДобавлено: Чт Фев 12, 2009 1:16 pm    Заголовок сообщения: Ответить с цитатой

Помогите пожалуйста!!!!!!
Как вычислять значение поинтеров и как найти таблицу поинтеров вот для этой игры - Cowboy Kid (U) [!] (NES)
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Griever
RRC2008
RRC2008


Зарегистрирован: 15.07.2005
Сообщения: 112
Откуда: Н.Новгород

СообщениеДобавлено: Чт Фев 12, 2009 8:56 pm    Заголовок сообщения: Ответить с цитатой

Они в таблице поинтеров прямо перед текстом - обычное дело.
_________________
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
TamerLan Zero



Зарегистрирован: 25.04.2007
Сообщения: 94
Откуда: Место где ступила нога человека

СообщениеДобавлено: Вс Фев 22, 2009 9:30 am    Заголовок сообщения: Ответить с цитатой

Кстати насчёт Cowboy Kid (U) [!] (NES).
Когда то хотел занятся этой темой, но чёт западло было, зато кое что осталось. Могу предоставить тебе ром с готовыми шрифтами и надписями на заборе. Если тебя конечно не смущает когда вместо "Saloon" висит вывеска "Кабак".
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Mefistotel
RRC2008
RRC2008


Зарегистрирован: 08.03.2008
Сообщения: 294
Откуда: МАГАДАН

СообщениеДобавлено: Ср Авг 26, 2009 2:32 am    Заголовок сообщения: Ответить с цитатой

Надеюсь, пойнтеры не покажутся вам такими страшными и ужасными, если прочитаете эту документацию: Пойнтеры. Часть вторая. Smile
_________________
Перевод приставочных игр
База переводов
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Cool-Spot
Гость





СообщениеДобавлено: Ср Мар 03, 2010 1:42 pm    Заголовок сообщения: Ответить с цитатой

Люди, помогите новичку! Разъясните, как находить поинтеры и что с ними делать на примере заставки Battle City!
rus-roms. ucoz. ru/ forum/ 8-38-1#297
Вернуться к началу
Griever
RRC2008
RRC2008


Зарегистрирован: 15.07.2005
Сообщения: 112
Откуда: Н.Новгород

СообщениеДобавлено: Ср Мар 03, 2010 7:51 pm    Заголовок сообщения: Ответить с цитатой

Цитата:
...такая система просто физически не сможет работать для ROM'ов, сидящих на нулевом маппере, или которые имеют только два PRG банка (а таких случаев очень много), так как физический адрес в ROM'е текста всегда будет меньше, чем его же адрес в RAM'e.


Код:
; ███████████████ S U B R O U T I N E ███████████████████████████████████████


Draw_TitleScreen:         ; CODE XREF: ROM:BEGINp
      JSR   Screen_Off
      LDA   #$24 ; '$'
      STA   PPU_Addr_Ptr
      JSR   Null_NT_Buffer
      LDX   #$1A
      STX   Block_X
      LDY   #$2E ; '.'
      STY   Block_Y
      LDA   #>aBattle   ; Загрузка указателя на   string 'BATTLE'
      STA   HighStrPtr_Byte
      LDA   #<aBattle   ; "BATTLE\xFF"
      STA   LowStrPtr_Byte
      JSR   Draw_BrickStr

Не в коня корм, конечно, но можно же помечтать Smile
_________________
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
АнС
RRC2008
RRC2008


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

СообщениеДобавлено: Чт Мар 04, 2010 12:34 am    Заголовок сообщения: Ответить с цитатой

Griever, да у тебя там прямо археологический детектив. ;)

Да, сколько всё-таки глупостей и надуманных аббревиатур было изобретено в те бородатые годы. Smile Какие-то шаманские SH и внушающий трепет SetOff X000. Very Happy И вообще, почему "пойнтер", а не традиционное программистское "указатель"? (ладно, на этот вопрос ответ ясен - под абстрактными "поинтерами" подразумевается более общее понятие, касающееся доступа к ресурсам, а под указателями - абсолютный адрес переменной в ОЗУ)
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
dnd1



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

СообщениеДобавлено: Вс Мар 28, 2010 6:30 pm    Заголовок сообщения: Ответить с цитатой

Сталкнулся со "странными" поинтерами
http://slil.ru/28837251
http://www.multiupload.com/VMBSAAZRXD

В архиве 3 языка(для сравнения). Сами поинтеры я нашел, но вот разобрать их так и не получилось(нет связи с текстом).
Если не трудно взгляните кто-нибудь на них. Очень интересно что я упустил. Embarassed
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
ToledO



Зарегистрирован: 06.05.2009
Сообщения: 87
Откуда: РСО-АЛАНИЯ Владикавказ

СообщениеДобавлено: Вс Мар 28, 2010 9:11 pm    Заголовок сообщения: Ответить с цитатой

АнС если они надуманные, то почему вы их не уберете? Действительно на подобных сайтах есть достаточно информации, которая современному ромхакеру по сути дела не нужна, и почему то ее продолжают держать на виду.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
BSV



Зарегистрирован: 05.08.2007
Сообщения: 64
Откуда: Новокузнецк

СообщениеДобавлено: Вс Мар 28, 2010 9:20 pm    Заголовок сообщения: Ответить с цитатой

dnd1 писал(а):
Сталкнулся со "странными" поинтерами
http://slil.ru/28837251
http://www.multiupload.com/VMBSAAZRXD

В архиве 3 языка(для сравнения). Сами поинтеры я нашел, но вот разобрать их так и не получилось(нет связи с текстом).
Если не трудно взгляните кто-нибудь на них. Очень интересно что я упустил. Embarassed

Порядок байт здесь Big Endian (игра с кубика или вии?).. Формат примерно такой:
Код:

Заголовок:
int - волшебное слово "NLOC"
int - ?
int - хэш?
int - количество поинтеров в таблице

Таблица поинтеров
int - поинтер
int - хэш?

Длина каждой записи в таблице поинтеров равняется 8 байтам.
Чтобы высчитать начало текстового блока, нужно количество поинтеров в таблице перемножить на размер записи и прибавить размер заголовка.
Чтобы выйти на строку, нужно поинтер умножить на два и сложить с началом текстового блока.
_________________
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
dnd1



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

СообщениеДобавлено: Вс Мар 28, 2010 11:11 pm    Заголовок сообщения: Ответить с цитатой

Цитата:
игра с кубика или вии?

Вий Smile
Цитата:
Заголовок...

Заголовок я тоже просчитал Smile
Цитата:
int - хэш?

Скорее всего нет. Так как у всех трех языков эти данные одинаковы, то возможно это указатель для игры(индивилуальный указатель каждого "куска" текста)
Цитата:
Длина каждой записи в таблице поинтеров равняется 8 байтам.

Это да. 4 байта на сам поинтер(причем используются только 2) и 4 на "указатель для игры"
Цитата:
Чтобы выйти на строку, нужно поинтер умножить на два и сложить с началом текстового блока.

ОГРОМНОЕ ЧЕЛОВЕЧЕСКОЕ СПАСИБО!!! До этого встречал только "явные" поинтеры(без дополнительных операций с ними). Пойду писать что-нибудь чтобы это извлечь Smile
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
BSV



Зарегистрирован: 05.08.2007
Сообщения: 64
Откуда: Новокузнецк

СообщениеДобавлено: Вс Мар 28, 2010 11:48 pm    Заголовок сообщения: Ответить с цитатой

dnd1 писал(а):

Цитата:
int - хэш?

Скорее всего нет. Так как у всех трех языков эти данные одинаковы, то возможно это указатель для игры(индивилуальный указатель каждого "куска" текста)

Да-да, с хэшем я тут ступил) "Указатель для игры" пограмотнее будет :)

dnd1 писал(а):

Цитата:
Длина каждой записи в таблице поинтеров равняется 8 байтам.

Это да. 4 байта на сам поинтер(причем используются только 2) и 4 на "указатель для игры"

Отчего же Smile Все 4 и используются. Только, поскольку все файлы по размеру меньше 132 килобайт, это не заметно.
_________________
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
HoRRoR
RRC2008
RRC2008


Зарегистрирован: 21.06.2006
Сообщения: 2341
Откуда: Ростов-на-Дону

СообщениеДобавлено: Пн Мар 29, 2010 12:41 am    Заголовок сообщения: Ответить с цитатой

dnd1 писал(а):

Скорее всего нет. Так как у всех трех языков эти данные одинаковы, то возможно это указатель для игры(индивилуальный указатель каждого "куска" текста)

BSV писал(а):
Да-да, с хэшем я тут ступил) "Указатель для игры" пограмотнее будет Smile

Объясните мне, почему, если эти данные одинаковы для всех языков, то они не могут быть хэшем? Более того, это хэш по определению, если для его генерации использована хэш-функция (преобразование произвольного количества данных в данные фиксированного размера с использованием определённой хэш-функции). А использована она, скорей всего, от текстового идентификатора (что-то вроде "dialogs_str" или т.п.), но игре, естественно, удобней оперировать целочисленными значениями, чем именами, поэтому и генерируются хэши - производительность будет выше.
_________________
Работаю за деньги
KILL ALL HUMANS!!!!!111
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
dnd1



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

СообщениеДобавлено: Пн Мар 29, 2010 1:12 am    Заголовок сообщения: Ответить с цитатой

Цитата:
Объясните мне, почему, если эти данные одинаковы для всех языков, то они не могут быть хэшем?

В моем словаре хэш в первую очередь ассациируется с контрольной суммой(дырка в моих знаниях Smile ) и первое, что мне пришло в голову это хеш-сумма текста, на который указывает поинтер(вполне логичное предположение). Так как в разных языках текст отличается, то и его хеш тоже должен меняться.
Второй момент: эти данные постоянно увеличиваются. Насколько я знаю(могу ошибаться) алгоритмы получения хешей при изменении даже одного байта дают координально разные результаты и получить аккуратную возрастаюшую последовательность таким образом довольно проблематично.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
BSV



Зарегистрирован: 05.08.2007
Сообщения: 64
Откуда: Новокузнецк

СообщениеДобавлено: Пн Мар 29, 2010 1:33 am    Заголовок сообщения: Ответить с цитатой

HoRRoR писал(а):
А использована она, скорей всего, от текстового идентификатора (что-то вроде "dialogs_str" или т.п.), но игре, естественно, удобней оперировать целочисленными значениями, чем именами, поэтому и генерируются хэши - производительность будет выше.

Тоже не знал про такое применение хэша. Спасибо :)

dnd1 писал(а):
Второй момент: эти данные постоянно увеличиваются. Насколько я знаю(могу ошибаться) алгоритмы получения хешей при изменении даже одного байта дают координально разные результаты и получить аккуратную возрастаюшую последовательность таким образом довольно проблематично.

Да, ты правильно знаешь Smile Однако, ты не думал, что в этих табличках всего-навсего сортированный массив хэшей?
_________________
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
HoRRoR
RRC2008
RRC2008


Зарегистрирован: 21.06.2006
Сообщения: 2341
Откуда: Ростов-на-Дону

СообщениеДобавлено: Пн Мар 29, 2010 1:39 am    Заголовок сообщения: Ответить с цитатой

Не правильно он знает. Хэш-функция может быть любой, хоть плюс один, хоть остаток от деления, хоть что - всё зависит от того, что от этой хэш-функции надо. Естественно, хорошая хэш-функция будет удовлетворять условиям, для которых писалась.
В контексте идентификаторов основная задача - обеспечить уникальность хэша. В Silent Hill Origins/Shattered Memories, например, хэши похожих строк могут отличаться всего на единичку. Но уникальность всё равно гарантирована алгоритмом функции.
Кстати, в хэш-функции запросто может использоваться, например, индекс элемента или ещё какие-нибудь сторонние данные, что может обеспечить возрастание хэшей.
_________________
Работаю за деньги
KILL ALL HUMANS!!!!!111
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
dnd1



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

СообщениеДобавлено: Пн Мар 29, 2010 5:44 pm    Заголовок сообщения: Ответить с цитатой

Цитата:
однако, ты не думал, что в этих табличках всего-навсего сортированный массив хэшей?

Кстати об этом совсем не подумал. Судя по тому, в каком безобразном порядке хранятся поинтеры, сортирован массив скорее всего как раз по хэшам.
Цитата:
Хэш-функция может быть любой, хоть плюс один, хоть остаток от деления, хоть что - всё зависит от того, что от этой хэш-функции надо.

Об этом я в курсе. Еще в курсе, что чаще всего это суммирование или xor.
PS. Снова благодарю за просвещение темных масс Smile
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
HoRRoR
RRC2008
RRC2008


Зарегистрирован: 21.06.2006
Сообщения: 2341
Откуда: Ростов-на-Дону

СообщениеДобавлено: Пн Мар 29, 2010 6:14 pm    Заголовок сообщения: Ответить с цитатой

[вырезано]

dnd1 писал(а):
Еще в курсе, что чаще всего это суммирование или xor.

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

Сам себе противоречишь...
_________________
Работаю за деньги
KILL ALL HUMANS!!!!!111
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов shedevr.org.ru -> Базовый ромхакинг Часовой пояс: GMT + 3
На страницу Пред.  1, 2
Страница 2 из 2

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


Powered by phpBB © 2001, 2005 phpBB Group