Ultimate Mortal Kombat 3 (Genesis)/Notes

From Data Crystal
Jump to navigation Jump to search

Chip tiny.png The following article is a Notes Page for Ultimate Mortal Kombat 3 (Genesis).

Archive structure

Offset Size Description
0-1 Word Compression method
2-3 Word Compressed data size
4* Byte Data type
5..n Bytes compressed data

* This parameter is not used in compression method 3

Method 2-1: Unpacking graphics

Flag byte:

XXXXXXXX
1 - there is no compression, just copy one byte from the source to the receiver
0 - there is compression.

LZ:

1 XXX YYYY XXXXXXXX
| |   |    |
| |   |    8 lower bits of string offset
| |   4 bits, defining string length (18 = string length)
| 3 upper bits of string offset
LZ compression code

RLE:

01 YY YYYY AAAAAAAA
|  |       |
|  |       bytes of repetition
|  6 bits (66 = number of repetitions)
RLE compression code

RLE_plus_Arith:

00 YY YYYY AAAAAAAA
|  |       |
|  |       bytes of repetition
|  6 bits (66 = number of sequences), maximum 65 bytes
compression code - RLE + arithmetic progression

Method 2-2: Unpacking the Tile Map

It differs from the previous compression method only in that the highest bytes of the tile map (priority, palette number, reflection) are decompressed first, and then the lowest bytes.

At the same time, after each write to the receiver, the receiver address is increased by two bytes.

Also, during decompression of the low-order bytes, the LZ string can be copied from the high-order bytes.

Flag byte:

XXXXXXXX
1 - there is no compression, just copy one byte from the source to the receiver
0 - there is compression.

EndOfDecompress:

0000 0000 - must be written after compression of low and high bytes

LZ:

1 XXX YYYY XXXXXXXX
| |   |    |
| |   |    8 lower bits of LZ string offset
| |   4 bits (18 = string length)
| 3 upper bits of LZ string offset
LZ compression code

RLE:

01 YYYYYY AAAAAAAA
|  |       |
|  |       repetition byte
|  6 bits (66 = repetition count)
RLE compression code

RLE_plus_Arith:

00 YYYYYY AAAAAAAA
|  |       |
|  |       repetition byte
|  6 bits (66 = number of sequences), maximum 65 bytes
compression code - RLE + arithmetic progression

Method 1-1: Unpacking Graphics

EndOfDecompress:

0000 0000

LZ:

1 XXX YYYY XXXXXXXX
| |   |    |
| |   |    8 lower bits of LZ string offset
| |   4 bits (18 = string length)
| 3 upper bits of LZ string offset
LZ compression code

RAW:

01 YYYYYY AAAAAAAA...
|  |      |
|  |      bytes for copying
|  6 bits - number of bytes for copying
uncompressed data code

RLE:

000 YYYYY AAAAAAAA
|   |     |
|   |     RLE byte
|   5 bits (34 = repetition count), maximum 33 bytes
RLE compression code

LZ_One_Byte:

001 YYYYY
|   |
|   5 bits of LZ string offset
LZ_One_Byte compression code

Method 1-2: Unpacking the Tile map

It differs from the previous compression method only in that the highest bytes of the tile map (priority, palette number, reflection) are decompressed first, and then the lowest bytes.

At the same time, after each write to the receiver, the receiver address is increased by two bytes.

Also, during decompression of the low-order bytes, the LZ string can be copied from the high-order bytes.

EndOfDecompress:

0000 0000 - must be written after compression of the low and high bytes

LZ:

1 XXX YYYY XXXXXXXX
| |   |    |
| |   |    8 lower bits of LZ string offset
| |   4 bits (18 = string length)
| 3 upper bits of LZ string offset
LZ compression code

RAW:

01 YYYYYY
|  |
|  6 bits - number of uncompressed bytes
uncompressed data code

RLE:

000 YYYYY AAAAAAAA
|   |     |
|   |     RLE byte
|   5 bits (34 = repetition count), maximum 33 bytes
RLE compression code

RLE_SEQ:

001 YYYYY AAAAAAAA
|   |     |
|   |     RLE byte
|   5 bits (34 = number of sequences)
compression code - RLE + arithmetic progression

Method 3

very rare method

END Of Decompress:

0000 0000

RLE16bit:

0 XXXXXXX YYYYYYYY YYYYYYYY
| |       |
| |       16-bit RLE word
| 7 bits (130 = repetition count), maximum 129 bytes
RLE compression code

RAW:

1 XXXXXXX YYYYYYYY YYYYYYYY...
| |       |
| |       16-bit word
| 7 bits (128 = number of words for copying)
uncompressed data code