Страниц (4): « 1 [2] 3 4 » |
|
Описание: АРХИВНАЯ ТЕМА 2009-2011 годов |
Поиск в теме | Версия для печати |
CrazyMax |
Отправлено: 21 Декабря, 2015 - 05:04:13
|
Покинул форум
Сообщений всего: 80
Дата рег-ции: Июнь 2015
|
CrazyMax
Цитата: To CrazyMax: нифига подобного, программа сама распаковывает тайловые карты, а не биос, так как обычный LZ распаковывает байты попорядку, так, как они лежат в пакете, а здесь распаковка происзодит не так, а диапазонами: первые (допустим) 8 байт распаковываются как обычно, затем идёт пропуск (допустим) 24 байт (в результате, а не в пакете), затем распаковываются следующие (допустим) 8 байт и т.д. раз (допустим) 8, затем идёт возврат к первому пропуску и в нём заполняется (допустим) 8 байт, затем опять пропуск (допустим) 24 байта и т.д. до конца пакета.
А это никакой не биосовский LZ, так что асм нужен для того, чтобы вычислить эти допустимые значения, потому как перебором это можно до конца жизни пытаться.
Значитс так...
Вот, что я обнаружил:
программа вызывает при смене экранов SWI11 (это BIOS функция LZ77UnCompWram), а
SWI распаковывает из рома в WRAM по адресу 0x0200e474 (по этому адресу находится карта тайлов)
вот так я немного поиздевался над картинкой :rolleyes: |
|
|
alex_231 |
Отправлено: 21 Декабря, 2015 - 05:13:12
|
Chief-Net
Покинул форум
Сообщений всего: 4688
Дата рег-ции: Окт. 2014
|
alex_231
Цитата: Цитата: To CrazyMax: нифига подобного, программа сама распаковывает тайловые карты, а не биос, так как обычный LZ распаковывает байты попорядку, так, как они лежат в пакете, а здесь распаковка происзодит не так, а диапазонами: первые (допустим) 8 байт распаковываются как обычно, затем идёт пропуск (допустим) 24 байт (в результате, а не в пакете), затем распаковываются следующие (допустим) 8 байт и т.д. раз (допустим) 8, затем идёт возврат к первому пропуску и в нём заполняется (допустим) 8 байт, затем опять пропуск (допустим) 24 байта и т.д. до конца пакета.
А это никакой не биосовский LZ, так что асм нужен для того, чтобы вычислить эти допустимые значения, потому как перебором это можно до конца жизни пытаться.
Значитс так...
Вот, что я обнаружил:
программа вызывает при смене экранов SWI11 (это BIOS функция LZ77UnCompWram), а
SWI распаковывает из рома в WRAM по адресу 0x0200e474 (по этому адресу находится карта тайлов)
вот так я немного поиздевался над картинкой :rolleyes:
Вообще-то тайловая карта хранится в видеопамяти (VRAM), а не в WRAM, поэтому то что распаковывает LZ - это не тайловая карта (в том виде, как она отображается на экране), да и нашёл ты это не без асма...
----- Делая выбор, отбрось простое решение и выбери правильное...
|
|
|
CrazyMax |
Отправлено: 21 Декабря, 2015 - 05:14:20
|
Покинул форум
Сообщений всего: 80
Дата рег-ции: Июнь 2015
|
CrazyMax
Цитата: Цитата: Цитата: To CrazyMax: нифига подобного, программа сама распаковывает тайловые карты, а не биос, так как обычный LZ распаковывает байты попорядку, так, как они лежат в пакете, а здесь распаковка происзодит не так, а диапазонами: первые (допустим) 8 байт распаковываются как обычно, затем идёт пропуск (допустим) 24 байт (в результате, а не в пакете), затем распаковываются следующие (допустим) 8 байт и т.д. раз (допустим) 8, затем идёт возврат к первому пропуску и в нём заполняется (допустим) 8 байт, затем опять пропуск (допустим) 24 байта и т.д. до конца пакета.
А это никакой не биосовский LZ, так что асм нужен для того, чтобы вычислить эти допустимые значения, потому как перебором это можно до конца жизни пытаться.
Значитс так...
Вот, что я обнаружил:
программа вызывает при смене экранов SWI11 (это BIOS функция LZ77UnCompWram), а
SWI распаковывает из рома в WRAM по адресу 0x0200e474 (по этому адресу находится карта тайлов)
вот так я немного поиздевался над картинкой :rolleyes:
Вообще-то тайловая карта хранится в видеопамяти (VRAM), а не в WRAM, поэтому то что распаковывает LZ - это не тайловая карта (в том виде, как она отображается на экране), да и нашёл ты это не без асма...
Вообще-то есть еще мапинг памяти, а VRAM как такового вообще не существует в GBA.
Короче, что бы дохрина не флудить, я сегодня постараюсь написать распаковщик.
P.S. и по поводу GBA я знаю что говорю, я кодер в DeSmuME Team :rolleyes: |
|
|
Altman |
Отправлено: 21 Декабря, 2015 - 05:15:00
|
Покинул форум
Сообщений всего: 29
Дата рег-ции: Июнь 2015
|
Altman
Цитата:Цитата:Тогда название может быть таким "Гармония в ее отсутствии"
Имхо, бред.
Цитата:А мне, как бывшему ученику муз. школы и диссонанс ухо не режет. Гармония Диссонанса.
А ты как ученик муз.школы, как себе представляешь гармонию негармоничного?
По мне так Алекс подобрал неплохое название. И плевать, говорят некоторые обсиратели. Лучше бы они предложили вариант получше.
Анархия - мать порядка! |
|
|
CrazyMax |
Отправлено: 21 Декабря, 2015 - 05:19:36
|
Покинул форум
Сообщений всего: 80
Дата рег-ции: Июнь 2015
|
CrazyMax
Цитата: 2CrazуMаx
Во всех дебаггерах указана vrаm, даже в спецификации к no$gbа указан ее адрес. Да и вообще как без vrаm? То, что ты нашел - это распаковка графики, а не тайловой карты.
Я уже говорил о мапинге адресов. VRAM адресуется в RAM или WRAM.
(Я это точно знаю, так как переписывал код работы с VRAM банками/LCD в DeSmuME).
поводу того, что я нашел... почему же тогда, в этих адресах при смене данных меняется не графика, а тайлы?
ладно, не будем переводить тему на тех. о GBA
alex_231, попробуй вот этим распаковать. и кстати, где у тебя косяк с распаковкой? какой адрес? |
|
|
alex_231 |
Отправлено: 21 Декабря, 2015 - 05:20:20
|
Chief-Net
Покинул форум
Сообщений всего: 4688
Дата рег-ции: Окт. 2014
|
alex_231
Спасибо, но распаковщик у меня есть, это пакер глючил, но я ошибку уже исправил, теперь всё норм. (Да и от, о чём я говорил в начале было переплетением с другим очень похожим проектом, но об этом потом)
Guyver, графика классно смортрится, даже лучше оригинала, ИМХО, вот только один косяк: в тайловой карте нет отделных указаний на окончания (квадратик 2х2 тайла справа) кнопок "Select data" и "Delete data", они рисуются по одному шаблону, и поэтому на выходе получается проблема. Можешь нарисовать эти кнопки выровняв по левому краю с остальными и вместо "Выбор слота" написать "Выбрать", или вместо "Удалить" - "Чистка слота" (но по-моему первый вариант лучше).
----- Делая выбор, отбрось простое решение и выбери правильное...
|
|
|
|
Поиск в теме | Версия для печати |
Страниц (4): « 1 [2] 3 4 » |
Сейчас эту тему просматривают: 2 (гостей: 2, зарегистрированных: 0) |
« Переводы » |
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
|
|
|