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

Функции разжатия данных в BIOS GBA

 
Начать новую тему   Ответить на тему    Список форумов shedevr.org.ru -> Утилита PokePerevod
Предыдущая тема :: Следующая тема  
Автор Сообщение
Axel
Советник


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

СообщениеДобавлено: Пт Ноя 21, 2003 1:07 pm    Заголовок сообщения: Функции разжатия данных в BIOS GBA Ответить с цитатой

BIOS Decompression Functions

BitUnPack
Diff8bitUnFilterWram
Diff8bitUnFilterVram
Diff16bitUnFilter
HuffUnComp
LZ77UnCompWram
LZ77UnCompVram
RLUnCompVram
RLUnCompWram

SWI 16 (10h) - BitUnPack
Used to increase the color depth of bitmaps or tile data. For example, to convert a 1bit monochrome font into 4bit or 8bit GBA tiles. The Unpack Info is specified separately, allowing to convert the same source data into different formats.
r0 Source Address (no alignment required)
r1 Destination Address (must be 32bit-word aligned)
r2 Pointer to UnPack information:
16bit Length of Source Data in bytes (0-FFFFh)
8bit Width of Source Units in bits (only 1,2,4,8 supported)
8bit Width of Destination Units in bits (only 1,2,4,8,16,32 supported)
32bit Data Offset (Bit 0-30), and Zero Data Flag (Bit 31)
The Data Offset is always added to all non-zero source units.
If the Zero Data Flag was set, it is also added to zero units.

Data is written in 32bit units, Destination can be Wram or Vram. The size of unpacked data must be a multiple of 4 bytes. The width of source units (plus the offset) should not exceed the destination width.
Return: No return value, Data written to destination address.

SWI 22 (16h) - Diff8bitUnFilterWram
SWI 23 (17h) - Diff8bitUnFilterVram
SWI 24 (18h) - Diff16bitUnFilter
These aren't actually real decompression functions, destination data will have exactly the same size as source data. However, assume a bitmap or wave form to contain a stream of increasing numbers such like 10..19, the filtered/unfiltered data would be:
unfiltered: 10 11 12 13 14 15 16 17 18 19
filtered: 10 +1 +1 +1 +1 +1 +1 +1 +1 +1


In this case using filtered data (combined with actual compression algorhytms) will obviously produce better compression results.
Data units may be either 8bit or 16bit used with Diff8bit or Diff16bit functions respectively. The 8bitVram function allows to write to VRAM directly (which uses 16bit data bus) by writing two 8bit values at once, the downside is that it is eventually slower as the 8bitWram function.
r0 Source address (must be aligned by 4) pointing to data as follows:
Data Header (32bit)
Bit 0-3 Data size (must be 1 for Diff8bit, 2 for Diff16bit)
Bit 4-7 Type (must be 8 for DiffFiltered)
Bit 8-31 24bit size after decompression
Data Units (each 8bit or 16bit depending on used SWI function)
Data0 ;original data
Data1-Data0 ;difference data
Data2-Data1 ;...
Data3-Data2
...
r1 Destination address


Return: No return value, Data written to destination address.

SWI 19 (13h) - HuffUnComp
Expands Huffman-compressed data and writes in units of 32bits.
If the size of the compressed data is not a multiple of 4, please adjust it as much as possible by padding with 0.
Align the source address to a 4Byte boundary.
r0 Source Address, aligned by 4, pointing to:
Data Header (32bit)
Bit 0-3 Data size in bit units (normally 4 or Cool
Bit 4-7 Compressed type (must be 2 for Huffman)
Bit 8-31 24bit size of decompressed data in bytes
Tree Table
u8 tree table size/2-1
Each of the nodes below defined as:
u8
6bit offset to next node -1 (2 byte units)
1bit right node end flag (if set, data is in next node)
1bit left node end flag
1 node Root node
2 nodes Left, and Right node
4 nodes LeftLeft, LeftRight, RightLeft, and RightRight node
...
Compressed data
...
r1 Destination Address


Return: No return value, Data written to destination address.

SWI 17 (11h) - LZ77UnCompWram
SWI 18 (12h) - LZ77UnCompVram
Expands LZ77-compressed data. The Wram function is faster, and writes in units of 8bits. For the Vram function the destination must be halfword aligned, data is written in units of 16bits.
If the size of the compressed data is not a multiple of 4, please adjust it as much as possible by padding with 0. Align the source address to a 4-Byte boundary.
r0 Source address, pointing to data as such:
Data header (32bit)
Bit 0-3 Reserved
Bit 4-7 Compressed type (must be 1 for LZ77)
Bit 8-31 Size of decompressed data
Repeat below. Each Flag Byte followed by eight Blocks.
Flag data (8bit)
Bit 0-7 Type Flags for next 8 Blocks, MSB first
Block Type 0 - Uncompressed - Copy 1 Byte from Source to Dest
Bit 0-7 One data byte to be copied to dest
Block Type 1 - Compressed - Copy N+3 Bytes from Dest-Disp-1 to Dest
Bit 0-3 Disp MSBs
Bit 4-7 Number of bytes to copy (minus 3)
Bit 8-15 Disp LSBs
r1 Destination address


Return: No return value.

SWI 21 (15h) - RLUnCompVram
SWI 20 (14h) - RLUnCompWram
Expands run-length compressed data. The Wram function is faster, and writes in units of 8bits. For the Vram function the destination must be halfword aligned, data is written in units of 16bits.
If the size of the compressed data is not a multiple of 4, please adjust it as much as possible by padding with 0. Align the source address to a 4Byte boundary.
r0 Source Address, pointing to data as such:
Data header (32bit)
Bit 0-3 Reserved
Bit 4-7 Compressed type (must be 3 for run-length)
Bit 8-31 Size of decompressed data
Repeat below. Each Flag Byte followed by one or more Data Bytes.
Flag data (8bit)
Bit 0-6 Expanded Data Length (uncompressed N-1, compressed N-3)
Bit 7 Flag (0=uncompressed, 1=compressed)
Data Byte(s) - N uncompressed bytes, or 1 byte repeated N times
r1 Destination Address

Return: No return value, Data written to destination address.
_________________
Всех их вместе переведём!
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Fish



Зарегистрирован: 15.11.2003
Сообщения: 425
Откуда: издалека...

СообщениеДобавлено: Вт Ноя 25, 2003 11:36 am    Заголовок сообщения: Ответить с цитатой

Ух ты!... Круто. И всё же, откуда такая инфа?
_________________
 Однажды знакомый спросил - <Ну ты как?> <Да я... всё нормально. Нормально, чувак...>
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Axel
Советник


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

СообщениеДобавлено: Вт Ноя 25, 2003 12:24 pm    Заголовок сообщения: Ответить с цитатой

Fish писал(а):
Ух ты!... Круто. И всё же, откуда такая инфа?


газеты надо читать! ;)

http://www.work.de/nocash/gbatek.htm
_________________
Всех их вместе переведём!
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Fish



Зарегистрирован: 15.11.2003
Сообщения: 425
Откуда: издалека...

СообщениеДобавлено: Вт Ноя 25, 2003 1:27 pm    Заголовок сообщения: Ответить с цитатой

Axel писал(а):
Fish писал(а):
[...]откуда такая инфа?
газеты надо читать! Wink
О, спасибочки!!! Бум изучать.

ЗЫ: Чукча не читатель, чукча - писатель! ;)

*часом позже*

Вах-вах-вах... $5000 за деглюкер... Crying or Very sad Печально...

*шутя* Может скинемся всем "Шедевром" на дебагер? Very Happy Wink
_________________
 Однажды знакомый спросил - <Ну ты как?> <Да я... всё нормально. Нормально, чувак...>
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Axel
Советник


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

СообщениеДобавлено: Ср Ноя 26, 2003 6:29 pm    Заголовок сообщения: Ответить с цитатой

Fish писал(а):
Вах-вах-вах... $5000 за деглюкер... Crying or Very sad Печально...

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



Зарегистрирован: 15.11.2003
Сообщения: 425
Откуда: издалека...

СообщениеДобавлено: Чт Ноя 27, 2003 4:34 pm    Заголовок сообщения: Ответить с цитатой

Axel писал(а):
Fish писал(а):
Вах-вах-вах... $5000 за деглюкер... Crying or Very sad Печально...
А чем тебя не устраивает встроенный в VBA ?
А где же это в VBA дебагер?! Confused
Дизассемблер - имеется, просмотрщик спрайтов - имеется, просмотрщик памяти - тоже.
Но! Брейк-поинт поставить нельзя (ихмо). Что-либо изменить в памяти - тоже нельзя (имхо). Crying or Very sad
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
АнС
RRC2008
RRC2008


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

СообщениеДобавлено: Чт Ноя 27, 2003 5:47 pm    Заголовок сообщения: Ответить с цитатой

Fish писал(а):
Но! Брейк-поинт поставить нельзя (ихмо). Что-либо изменить в памяти - тоже нельзя (имхо). Crying or Very sad


Wink Имхо-не имхо, но бряки не предусмотрены, а память изменить можно. Но это и то лучше, чем в Gens.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Fish



Зарегистрирован: 15.11.2003
Сообщения: 425
Откуда: издалека...

СообщениеДобавлено: Пт Ноя 28, 2003 2:44 pm    Заголовок сообщения: моя прелесть... Ответить с цитатой

"Моя прелесть, моё сокровище!..."



Взято здесь:
http://www.gbx.ru/index.php?s=6ba6f8620aceb878b25e5bf724776b7d&act=ST&f=7&t=361&st=0&

очень жаль, но боюсь, что лень помешает мне применить этот прекрасный инструмент...
_________________
 Однажды знакомый спросил - <Ну ты как?> <Да я... всё нормально. Нормально, чувак...>
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Fish



Зарегистрирован: 15.11.2003
Сообщения: 425
Откуда: издалека...

СообщениеДобавлено: Чт Дек 11, 2003 11:47 am    Заголовок сообщения: Re: Функции разжатия данных в BIOS GBA Ответить с цитатой

Axel писал(а):
BIOS Decompression Functions[...]

У меня созрел один вопрос. Если есть стандартные функции декомпрессии данных, то, стало быть, должны быть и стандарные функции сжатия данных. Ну и где же они есть? В каком-то SDK, что ли?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Axel
Советник


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

СообщениеДобавлено: Чт Дек 11, 2003 1:01 pm    Заголовок сообщения: Re: Функции разжатия данных в BIOS GBA Ответить с цитатой

Fish писал(а):
Если есть стандартные функции декомпрессии данных, то, стало быть, должны быть и стандарные функции сжатия данных. Ну и где же они есть? В каком-то SDK, что ли?

конечно есть Smile,
в SDK который получают "легальные" разработчики от Nintendo :)

впрочем, например LZ(77) используется в PNG/JPEG/GIF...
а скажем RLE в BMP/PNG...

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



Зарегистрирован: 15.11.2003
Сообщения: 425
Откуда: издалека...

СообщениеДобавлено: Чт Дек 11, 2003 2:33 pm    Заголовок сообщения: Ответить с цитатой

Окей, практический вопрос.

Предположим, нашли вызов функции декомпрессии.
Вытащили ресурс, изменили, хотим засунуть его обратно.
И, чем его теперь сжать? Confused

Иными словами, этот SDK вообще кто-то видел?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Axel
Советник


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

СообщениеДобавлено: Чт Дек 11, 2003 2:38 pm    Заголовок сообщения: Ответить с цитатой

Fish писал(а):
Иными словами, этот SDK вообще кто-то видел?

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


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

СообщениеДобавлено: Чт Дек 11, 2003 2:48 pm    Заголовок сообщения: Ответить с цитатой

Не знаю, зачем вам этот SDK, я сам сел и написал запаковщик/распаковщик и всё.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Axel
Советник


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

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

АнС писал(а):
Зачем вам этот SDK

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



Зарегистрирован: 15.11.2003
Сообщения: 425
Откуда: издалека...

СообщениеДобавлено: Чт Дек 11, 2003 4:31 pm    Заголовок сообщения: Ответить с цитатой

АнС писал(а):
Не знаю, зачем вам этот SDK, я сам сел и написал запаковщик/распаковщик и всё.
В твоем случае игра, видимо, использовала относительно простой алгоритм.
А если бы попался этот самый, как его, Хафман? Как бы ты поступил?
_________________
 Однажды знакомый спросил - <Ну ты как?> <Да я... всё нормально. Нормально, чувак...>
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов shedevr.org.ru -> Утилита PokePerevod Часовой пояс: GMT + 3
Страница 1 из 1

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


Powered by phpBB © 2001, 2005 phpBB Group