Phantasy Star Tunnel routine Disassembly
Posted: Thu Dec 12, 2019 3:19 am
At the request of a patreon backer I took a look at the caves of the "Phantasy star" game...
These are a 3d animated cave section, which has smooth great looking graphics... While I don't usually do it, I had a go at disassembling the section in a livestream... the stream is pretty long, and not so interesting, so it's up to you if you watch it!
https://youtu.be/egghnQY_Qpg
After the livestream I've done some more work, and will now post my findings below!
Basically it's a pre-rendered animation, and the Tilemaps and patterns are RLE compressed... Please see below!
If you're not familiar with RLE... think of this... Suppose I wanted to store the string
"AAABBBCDEEEEEE"
and make it smaller... well lets store a letter and a count - eg:
"A3B3C1D1E6"
We've saved a few bytes!
Some data won't compress of course... that "CD" part got bigger as we stored it as C1D1 - but we could write our code to split RLE compressable data and LINEAR uncompressed data separately to avoid this.
These are a 3d animated cave section, which has smooth great looking graphics... While I don't usually do it, I had a go at disassembling the section in a livestream... the stream is pretty long, and not so interesting, so it's up to you if you watch it!
https://youtu.be/egghnQY_Qpg
After the livestream I've done some more work, and will now post my findings below!
Basically it's a pre-rendered animation, and the Tilemaps and patterns are RLE compressed... Please see below!
If you're not familiar with RLE... think of this... Suppose I wanted to store the string
"AAABBBCDEEEEEE"
and make it smaller... well lets store a letter and a count - eg:
"A3B3C1D1E6"
We've saved a few bytes!
Some data won't compress of course... that "CD" part got bigger as we stored it as C1D1 - but we could write our code to split RLE compressable data and LINEAR uncompressed data separately to avoid this.