| Страниц (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
Покинул форум
Сообщений всего: 4700
Дата рег-ции: Окт. 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
Покинул форум
Сообщений всего: 4700
Дата рег-ции: Окт. 2014

|
alex_231
Спасибо, но распаковщик у меня есть, это пакер глючил, но я ошибку уже исправил, теперь всё норм. (Да и от, о чём я говорил в начале было переплетением с другим очень похожим проектом, но об этом потом)
Guyver, графика классно смортрится, даже лучше оригинала, ИМХО, вот только один косяк: в тайловой карте нет отделных указаний на окончания (квадратик 2х2 тайла справа) кнопок "Select data" и "Delete data", они рисуются по одному шаблону, и поэтому на выходе получается проблема. Можешь нарисовать эти кнопки выровняв по левому краю с остальными и вместо "Выбор слота" написать "Выбрать", или вместо "Удалить" - "Чистка слота" (но по-моему первый вариант лучше).
----- Делая выбор, отбрось простое решение и выбери правильное...
|
| |
|
|
| Поиск в теме | Версия для печати |
| Страниц (4): « 1 [2] 3 4 » |
| Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0) |
| « Переводы » |
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
|
 |
|