Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Stealth
Зарегистрирован: 21.11.2008 Сообщения: 139 Откуда: Петербург
|
Добавлено: Вт Янв 20, 2009 10:38 am Заголовок сообщения: |
|
|
Djinn писал(а): | Ну и чего тут вычислять? Стандартные гбашные пойнтеры. Вычислять их вообще не надо - они абсолютные. |
Отсюда подробнее, пожалуйста. |
|
Вернуться к началу |
|
|
Марат
Зарегистрирован: 08.01.2008 Сообщения: 211 Откуда: Казахстан, Астана
|
Добавлено: Вт Янв 20, 2009 11:24 am Заголовок сообщения: |
|
|
Stealth писал(а): | Djinn писал(а): | Ну и чего тут вычислять? Стандартные гбашные пойнтеры. Вычислять их вообще не надо - они абсолютные. |
Отсюда подробнее, пожалуйста. |
Абсолютные, значит, что значение поинтера - адрес строки сообщения. Т.е., если значение поинтера равно 00025344, то строка на которую указывает поинтер, находится по адресу 00025344. |
|
Вернуться к началу |
|
|
HoRRoR RRC2008
Зарегистрирован: 21.06.2006 Сообщения: 2341 Откуда: Ростов-на-Дону
|
Добавлено: Вт Янв 20, 2009 12:27 pm Заголовок сообщения: |
|
|
У GBA адресное пространство РОМа начинается с 0x08000000. Сам файл дамп РОМа начинается с нуля. Т.е. чтобы узнать адрес в файле - тупо отнимаем от поинтера 0x08000000. _________________ Работаю за деньги
KILL ALL HUMANS!!!!!111 |
|
Вернуться к началу |
|
|
Axel Советник
Зарегистрирован: 14.11.2003 Сообщения: 680
|
Добавлено: Вт Янв 20, 2009 8:07 pm Заголовок сообщения: |
|
|
*хвастаюсь*
В ПП2 в hex-гляделке есть:
1. настраиваемая подсветка хексов (для наглядности)
2. спец. кнопка для перехода по "указателям"
_________________ Всех их вместе переведём! |
|
Вернуться к началу |
|
|
Stealth
Зарегистрирован: 21.11.2008 Сообщения: 139 Откуда: Петербург
|
Добавлено: Ср Янв 21, 2009 12:47 am Заголовок сообщения: |
|
|
Слона-то я и не приметил. Сработало, спасибо! |
|
Вернуться к началу |
|
|
Shinigami Неграмотный
Зарегистрирован: 25.09.2008 Сообщения: 87 Откуда: Екатеринбург
|
Добавлено: Чт Фев 12, 2009 1:16 pm Заголовок сообщения: |
|
|
Помогите пожалуйста!!!!!!
Как вычислять значение поинтеров и как найти таблицу поинтеров вот для этой игры - Cowboy Kid (U) [!] (NES) |
|
Вернуться к началу |
|
|
Griever RRC2008
Зарегистрирован: 15.07.2005 Сообщения: 112 Откуда: Н.Новгород
|
Добавлено: Чт Фев 12, 2009 8:56 pm Заголовок сообщения: |
|
|
Они в таблице поинтеров прямо перед текстом - обычное дело. _________________
|
|
Вернуться к началу |
|
|
TamerLan Zero
Зарегистрирован: 25.04.2007 Сообщения: 94 Откуда: Место где ступила нога человека
|
Добавлено: Вс Фев 22, 2009 9:30 am Заголовок сообщения: |
|
|
Кстати насчёт Cowboy Kid (U) [!] (NES).
Когда то хотел занятся этой темой, но чёт западло было, зато кое что осталось. Могу предоставить тебе ром с готовыми шрифтами и надписями на заборе. Если тебя конечно не смущает когда вместо "Saloon" висит вывеска "Кабак". |
|
Вернуться к началу |
|
|
Mefistotel RRC2008
Зарегистрирован: 08.03.2008 Сообщения: 294 Откуда: МАГАДАН
|
|
Вернуться к началу |
|
|
Cool-Spot Гость
|
Добавлено: Ср Мар 03, 2010 1:42 pm Заголовок сообщения: |
|
|
Люди, помогите новичку! Разъясните, как находить поинтеры и что с ними делать на примере заставки Battle City!
rus-roms. ucoz. ru/ forum/ 8-38-1#297 |
|
Вернуться к началу |
|
|
Griever 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
|
Не в коня корм, конечно, но можно же помечтать _________________
|
|
Вернуться к началу |
|
|
АнС RRC2008
Зарегистрирован: 08.11.2003 Сообщения: 2818
|
Добавлено: Чт Мар 04, 2010 12:34 am Заголовок сообщения: |
|
|
Griever, да у тебя там прямо археологический детектив. ;)
Да, сколько всё-таки глупостей и надуманных аббревиатур было изобретено в те бородатые годы. Какие-то шаманские SH и внушающий трепет SetOff X000. И вообще, почему "пойнтер", а не традиционное программистское "указатель"? (ладно, на этот вопрос ответ ясен - под абстрактными "поинтерами" подразумевается более общее понятие, касающееся доступа к ресурсам, а под указателями - абсолютный адрес переменной в ОЗУ) |
|
Вернуться к началу |
|
|
dnd1
Зарегистрирован: 21.11.2009 Сообщения: 21
|
Добавлено: Вс Мар 28, 2010 6:30 pm Заголовок сообщения: |
|
|
Сталкнулся со "странными" поинтерами
http://slil.ru/28837251
http://www.multiupload.com/VMBSAAZRXD
В архиве 3 языка(для сравнения). Сами поинтеры я нашел, но вот разобрать их так и не получилось(нет связи с текстом).
Если не трудно взгляните кто-нибудь на них. Очень интересно что я упустил. |
|
Вернуться к началу |
|
|
ToledO
Зарегистрирован: 06.05.2009 Сообщения: 87 Откуда: РСО-АЛАНИЯ Владикавказ
|
Добавлено: Вс Мар 28, 2010 9:11 pm Заголовок сообщения: |
|
|
АнС если они надуманные, то почему вы их не уберете? Действительно на подобных сайтах есть достаточно информации, которая современному ромхакеру по сути дела не нужна, и почему то ее продолжают держать на виду. |
|
Вернуться к началу |
|
|
BSV
Зарегистрирован: 05.08.2007 Сообщения: 64 Откуда: Новокузнецк
|
Добавлено: Вс Мар 28, 2010 9:20 pm Заголовок сообщения: |
|
|
dnd1 писал(а): | Сталкнулся со "странными" поинтерами
http://slil.ru/28837251
http://www.multiupload.com/VMBSAAZRXD
В архиве 3 языка(для сравнения). Сами поинтеры я нашел, но вот разобрать их так и не получилось(нет связи с текстом).
Если не трудно взгляните кто-нибудь на них. Очень интересно что я упустил. |
Порядок байт здесь Big Endian (игра с кубика или вии?).. Формат примерно такой:
Код: |
Заголовок:
int - волшебное слово "NLOC"
int - ?
int - хэш?
int - количество поинтеров в таблице
Таблица поинтеров
int - поинтер
int - хэш?
|
Длина каждой записи в таблице поинтеров равняется 8 байтам.
Чтобы высчитать начало текстового блока, нужно количество поинтеров в таблице перемножить на размер записи и прибавить размер заголовка.
Чтобы выйти на строку, нужно поинтер умножить на два и сложить с началом текстового блока. _________________
|
|
Вернуться к началу |
|
|
dnd1
Зарегистрирован: 21.11.2009 Сообщения: 21
|
Добавлено: Вс Мар 28, 2010 11:11 pm Заголовок сообщения: |
|
|
Цитата: | игра с кубика или вии? |
Вий
Заголовок я тоже просчитал
Скорее всего нет. Так как у всех трех языков эти данные одинаковы, то возможно это указатель для игры(индивилуальный указатель каждого "куска" текста)
Цитата: | Длина каждой записи в таблице поинтеров равняется 8 байтам. |
Это да. 4 байта на сам поинтер(причем используются только 2) и 4 на "указатель для игры"
Цитата: | Чтобы выйти на строку, нужно поинтер умножить на два и сложить с началом текстового блока. |
ОГРОМНОЕ ЧЕЛОВЕЧЕСКОЕ СПАСИБО!!! До этого встречал только "явные" поинтеры(без дополнительных операций с ними). Пойду писать что-нибудь чтобы это извлечь |
|
Вернуться к началу |
|
|
BSV
Зарегистрирован: 05.08.2007 Сообщения: 64 Откуда: Новокузнецк
|
Добавлено: Вс Мар 28, 2010 11:48 pm Заголовок сообщения: |
|
|
dnd1 писал(а): |
Скорее всего нет. Так как у всех трех языков эти данные одинаковы, то возможно это указатель для игры(индивилуальный указатель каждого "куска" текста) |
Да-да, с хэшем я тут ступил) "Указатель для игры" пограмотнее будет :)
dnd1 писал(а): |
Цитата: | Длина каждой записи в таблице поинтеров равняется 8 байтам. |
Это да. 4 байта на сам поинтер(причем используются только 2) и 4 на "указатель для игры" |
Отчего же Все 4 и используются. Только, поскольку все файлы по размеру меньше 132 килобайт, это не заметно. _________________
|
|
Вернуться к началу |
|
|
HoRRoR RRC2008
Зарегистрирован: 21.06.2006 Сообщения: 2341 Откуда: Ростов-на-Дону
|
Добавлено: Пн Мар 29, 2010 12:41 am Заголовок сообщения: |
|
|
dnd1 писал(а): |
Скорее всего нет. Так как у всех трех языков эти данные одинаковы, то возможно это указатель для игры(индивилуальный указатель каждого "куска" текста) |
BSV писал(а): | Да-да, с хэшем я тут ступил) "Указатель для игры" пограмотнее будет |
Объясните мне, почему, если эти данные одинаковы для всех языков, то они не могут быть хэшем? Более того, это хэш по определению, если для его генерации использована хэш-функция (преобразование произвольного количества данных в данные фиксированного размера с использованием определённой хэш-функции). А использована она, скорей всего, от текстового идентификатора (что-то вроде "dialogs_str" или т.п.), но игре, естественно, удобней оперировать целочисленными значениями, чем именами, поэтому и генерируются хэши - производительность будет выше. _________________ Работаю за деньги
KILL ALL HUMANS!!!!!111 |
|
Вернуться к началу |
|
|
dnd1
Зарегистрирован: 21.11.2009 Сообщения: 21
|
Добавлено: Пн Мар 29, 2010 1:12 am Заголовок сообщения: |
|
|
Цитата: | Объясните мне, почему, если эти данные одинаковы для всех языков, то они не могут быть хэшем? |
В моем словаре хэш в первую очередь ассациируется с контрольной суммой(дырка в моих знаниях ) и первое, что мне пришло в голову это хеш-сумма текста, на который указывает поинтер(вполне логичное предположение). Так как в разных языках текст отличается, то и его хеш тоже должен меняться.
Второй момент: эти данные постоянно увеличиваются. Насколько я знаю(могу ошибаться) алгоритмы получения хешей при изменении даже одного байта дают координально разные результаты и получить аккуратную возрастаюшую последовательность таким образом довольно проблематично. |
|
Вернуться к началу |
|
|
BSV
Зарегистрирован: 05.08.2007 Сообщения: 64 Откуда: Новокузнецк
|
Добавлено: Пн Мар 29, 2010 1:33 am Заголовок сообщения: |
|
|
HoRRoR писал(а): | А использована она, скорей всего, от текстового идентификатора (что-то вроде "dialogs_str" или т.п.), но игре, естественно, удобней оперировать целочисленными значениями, чем именами, поэтому и генерируются хэши - производительность будет выше. |
Тоже не знал про такое применение хэша. Спасибо :)
dnd1 писал(а): | Второй момент: эти данные постоянно увеличиваются. Насколько я знаю(могу ошибаться) алгоритмы получения хешей при изменении даже одного байта дают координально разные результаты и получить аккуратную возрастаюшую последовательность таким образом довольно проблематично. |
Да, ты правильно знаешь Однако, ты не думал, что в этих табличках всего-навсего сортированный массив хэшей? _________________
|
|
Вернуться к началу |
|
|
HoRRoR RRC2008
Зарегистрирован: 21.06.2006 Сообщения: 2341 Откуда: Ростов-на-Дону
|
Добавлено: Пн Мар 29, 2010 1:39 am Заголовок сообщения: |
|
|
Не правильно он знает. Хэш-функция может быть любой, хоть плюс один, хоть остаток от деления, хоть что - всё зависит от того, что от этой хэш-функции надо. Естественно, хорошая хэш-функция будет удовлетворять условиям, для которых писалась.
В контексте идентификаторов основная задача - обеспечить уникальность хэша. В Silent Hill Origins/Shattered Memories, например, хэши похожих строк могут отличаться всего на единичку. Но уникальность всё равно гарантирована алгоритмом функции.
Кстати, в хэш-функции запросто может использоваться, например, индекс элемента или ещё какие-нибудь сторонние данные, что может обеспечить возрастание хэшей. _________________ Работаю за деньги
KILL ALL HUMANS!!!!!111 |
|
Вернуться к началу |
|
|
dnd1
Зарегистрирован: 21.11.2009 Сообщения: 21
|
Добавлено: Пн Мар 29, 2010 5:44 pm Заголовок сообщения: |
|
|
Цитата: | однако, ты не думал, что в этих табличках всего-навсего сортированный массив хэшей? |
Кстати об этом совсем не подумал. Судя по тому, в каком безобразном порядке хранятся поинтеры, сортирован массив скорее всего как раз по хэшам.
Цитата: | Хэш-функция может быть любой, хоть плюс один, хоть остаток от деления, хоть что - всё зависит от того, что от этой хэш-функции надо. |
Об этом я в курсе. Еще в курсе, что чаще всего это суммирование или xor.
PS. Снова благодарю за просвещение темных масс |
|
Вернуться к началу |
|
|
HoRRoR RRC2008
Зарегистрирован: 21.06.2006 Сообщения: 2341 Откуда: Ростов-на-Дону
|
Добавлено: Пн Мар 29, 2010 6:14 pm Заголовок сообщения: |
|
|
[вырезано]
dnd1 писал(а): | Еще в курсе, что чаще всего это суммирование или xor. |
Цитата: | Насколько я знаю(могу ошибаться) алгоритмы получения хешей при изменении даже одного байта дают координально разные результаты и получить аккуратную возрастаюшую последовательность таким образом довольно проблематично. |
Сам себе противоречишь... _________________ Работаю за деньги
KILL ALL HUMANS!!!!!111 |
|
Вернуться к началу |
|
|
|