Wikifang:Telefang 1 Translation Patch/NatsumeGB compression: Difference between revisions

From Wikifang, a definitive guide to Telefang, Dino Device and Bugsite
Jump to navigation Jump to search
m (Sanky moved page Wikifang:Telefang 1 Translation Patch/Malias compression to Wikifang:Telefang 1 Translation Patch/NatsumeGB compression: naming a compression algorithm after the person who first cracked it is passé)
(rename to NatsumeGB compression)
 
Line 1: Line 1:
Malias compression is the compression used in numerous Natsume games, namely, at least Telefang and Medarot.  It is a modified implementation of the LZ77 algorithm, which works by referencing previously decompressed data using length-distance pairs.  [http://en.wikipedia.org/wiki/LZ77_and_LZ78_%28algorithms%29 Wikipedia] has a good description of the algorithm.
'''NatsumeGB compression''' is the compression algorithm used in numerous Game Boy Natsume games, namely, at least Telefang and Medarot.  It is a modified implementation of the LZ77 algorithm, which works by referencing previously decompressed data using length-distance pairs.  [http://en.wikipedia.org/wiki/LZ77_and_LZ78_%28algorithms%29 Wikipedia] has a good description of the algorithm.


Malias compression is named after [http://s15.zetaboards.com/Tulunk_Village/topic/515644/ Malias], the person who wrote the first decompresser.
NatsumeGB was formerly called Malias compression after [http://s15.zetaboards.com/Tulunk_Village/topic/515644/ Malias], the person who wrote the first decompresser.


Implementation of the Malias compression in pseudocode:
Implementation of the NatsumeGB compression in pseudocode:


<pre>compressed = readbyte()
<pre>compressed = readbyte()
Line 20: Line 20:
             else:                  # Insert mode
             else:                  # Insert mode
                 data += readbyte()</pre>
                 data += readbyte()</pre>
== Games that use the compression ==
== Games that use the compression ==
* Keitai Denjuu Telefang
* Keitai Denjuu Telefang

Latest revision as of 08:11, 16 November 2020

NatsumeGB compression is the compression algorithm used in numerous Game Boy Natsume games, namely, at least Telefang and Medarot. It is a modified implementation of the LZ77 algorithm, which works by referencing previously decompressed data using length-distance pairs. Wikipedia has a good description of the algorithm.

NatsumeGB was formerly called Malias compression after Malias, the person who wrote the first decompresser.

Implementation of the NatsumeGB compression in pseudocode:

compressed = readbyte()
if compressed != 0x00:
    total = readshort()             # Total length of the graphics
    while bytes < total:            # bytes is number of bytes decompressed
        modes = readshort()         # Contains modes for the next 10 bytes
        for mode in bits(modes):
            if mode == 0x1:         # Copy mode
                loc = -(readshort() & 0x7ff)
                num = lastbyte >> 3 & 0x1f + 0x03
                loc += bytes-1
                do num times:
                    data += data[loc]
                    loc += 1
            else:                   # Insert mode
                data += readbyte()

Games that use the compression[edit]

  • Keitai Denjuu Telefang
  • Medarot 1
  • Medarot 2
  • Medarot 3
  • Medarot 4 (assumed)
  • Medarot 5 (assumed)
  • Croc 2

Decompression tools[edit]

  • Malias' Telefang Tools can decompress and recompress the graphics with ease, provided locations.
  • punika is a simple implementation in Python which decompresses all compressed graphics at once, working off tables in the ROM.