【2021.3.1更新】Exomizer3 リンク先URL間違いのお詫び を掲載しました。LZ4DMVはBSDライセンスである旨を追記しました。
MSX(Z80 CPU)向けでゲームソフトなどの組み込みに利用可能な、データ圧縮・展開ルーチンをまとめてみました。他にも見つかり次第追加してゆきます。
- Exomizer3
- LZEe - LZE enhancement for Z80
- LZ4DMV by ipheion78(LZ4)
- BARGAIN
- MAGフォーマット(MAG形式)
- BPE(Byte Pair Encoding)
- 次点:Heatshrink
- あとがき
Exomizer3
- 作者:Magnus Lind. さん 他
- 配布先:https://github.com/uniabis/z80depacker
- データ圧縮環境:Windows(Win32) https://uniabis.net/pico/msx/z80packer/
- データの配置先と展開先:RAM(ROM) → RAM ※VRAMへの展開は要改造
- 組み込みライセンス:zlibライセンス
Exomizer3 リンク先URL間違いのお詫び(2021.3.1)
当ブログで当初紹介させていただいたExomizer3のリンク先URLがzlibライセンスでないもので紹介してしまいました。正しくは内藤さんご指摘のURLです。お詫びして訂正させていただきます。申し訳ありませんでした。
LZEe - LZE enhancement for Z80
- 作者:GORRYさん 他
- 配布先:https://github.com/uniabis/lzee
- データ圧縮環境:Windows(Win32) http://gorry.haun.org/pw/?lze
- データの配置先と展開先:RAM(ROM) → RAM ※VRAMへの展開は要改造
- 組み込みライセンス:zlibライセンス
LZ4DMV by ipheion78(LZ4)
- 作者:むらかたとうじ(村方凍二)さん
- 動作環境:MSX2 以降
- 配布先:http://mikusx.html.xdomain.jp/LZ4DMV.MAC
- データ圧縮環境:LZ4形式データを圧縮できる環境 https://github.com/lz4/lz4
- データの配置先と展開先:RAM(ROM) → VRAM
- 組み込みライセンス:BSDライセンス
BARGAIN
- 作者:KATSUさん
- 動作環境:MSX2 以降, MSX-BASIC
- 配布先:https://www.vector.co.jp/soft/dl/other/msx/se179373.html
- データ圧縮環境:MSX-BASIC
- データの配置先と展開先:RAM(ROM) → RAMまたはVRAM
- 組み込みライセンス:プログラムの転載・再配布・改変は自由
MAGフォーマット(MAG形式)
MA5(孫, まご)・MA7(愛, まな)
- 作者:夢神楽遊睡さん(Genuine Network)
- 配布先:http://sakuramail.net/fswold/graphic.html
- 動作環境:MSX2 以降, MSX-BASIC, MSX-DOS(2)/Nextor
- データ圧縮環境:MSX-DOS(2)/Nextor, MAGセーバの動作する機種
- データの配置先と展開先:RAM(ROM) → VRAM
- 組み込みライセンス:提示条件に準拠すること
XMGS・BAMP・護送バス
- 作者:たろさん
- 配布先:http://sakuramail.net/fswold/basic.html
- 動作環境:MSX2 以降, MSX-BASIC
- データ圧縮環境:MSX-DOS(2)/Nextor, MAGセーバの動作する機種
- データの配置先と展開先:RAM(ROM) → RAMまたはVRAM
- 組み込みライセンス:提示条件に準拠すること
EDCOM3+MA57
- 作者:杉山夏樹 さん
- 配布先:https://www.vector.co.jp/vpack/filearea/other/msx/edcom
- 動作環境:MSX2 以降, MSX-BASIC
- データ圧縮環境:MSX-DOS(2)/Nextor, MAGセーバの動作する機種
- データの配置先と展開先:RAM(ROM) → RAMまたはVRAM
- 組み込みライセンス:プログラムの転載・再配布は自由。連絡不要
BPE(Byte Pair Encoding)
- 作者:Gigamix
- 配布先:https://www.gigamix.jp/ds2/
- 動作環境:MSX2 以降, MSX-BASIC
- データ圧縮環境:MSX-DOS(2)/Nextor, MS-DOS汎用, Windows(Win32)
- データの配置先と展開先:RAM(ROM)またはVRAM → RAMまたはVRAM
- 組み込みライセンス:提示条件に準拠すること https://www.gigamix.jp/ds2/embed.html
他にも便利なルーチンがありましたら情報をお待ちしております。→ twitter@nf_ban
次点:Heatshrink
HeatshrinkはLZSSをベースにした圧縮/解凍ライブラリで、マークIIIよりスペックが低いレトロゲーム機やPCでも全然使えます(フルアセンブラはちょっと難しそうですが)。
— itoken(SND-L/KSND)【公式】🆗 (@SNDR_SNDL) 2022年6月23日
リアルタイム/一括の圧縮/解凍機能を使いたい場合は検討してみると良さそうです。
LZSSをベースにした圧縮・解凍ライブラリ。ソースコードはC言語で、MSX(Z80)向けのアセンブラコードがあるわけでは無さそうですが、データ展開速度の速さが魅力。
あとがき
1990年代は「MAGフォーマット(MAG形式)」が望まれていた件
MAGフォーマットについては別記事にするかもしれませんが、とりあえずここに入れておきます。
当クラブで採用していた圧縮アルゴリズムの「BPE(Byte Pair Encoding)」は画像だけでなくBGMデータやマシン語プログラムなど画像以外のデータ圧縮用途も想定していて当時はそこそこ高性能なものであったと自負していたのでしたが、MSXの同人ソフトを開発する個人・サークル(いわゆる「現場」)の方々にはあまり良い顔をされませんでした。
パソコン通信全盛の時代、画像のデータ圧縮と言えば「MAGフォーマット(MAG形式)」が当時のデファクトスタンダードでした。MSX・FANの付録ディスクにはMERONさん開発のMSX版MAGローダー・MAGセーバーが収録され、パソコン通信で公開された他機種のMAG形式CGも度々転載されていましたから、MAG形式はパソコン通信を利用していないMSXユーザーにも馴染みがありました。
MAG形式が好まれた主な理由(諸説あり):
- 【相性の良さ】MAG形式は16色ないし256色の「手描きCG」に最適と言われており、色数が少ないMSXと相性が良いアルゴリズムだった(MAGフォーマットはPC-9801が発祥のコミュニティでしたがMSXからの利用も想定された仕様になっている)。
- 【クロス開発】他機種(主にPC-9801)からMSXへ画像データを持ってくる等、他機種とのクロス開発に便利だった。
- 【露出の拡大】MSX用のCGを他機種でも観られるように、データ形式をMAGにしておきたい。
- 【開発の効率化】MSX用の同人ソフト(CG集や画像表示が主体のミニゲーム集)がリリースしやすい開発環境を他機種のコミュニティが欲しがった。
ですので、一サークルの独自形式ではなくMAG形式をMSX-BASICでも利用したいというニーズが当時のMSXの同人ソフトコミュニティに現れていたと思っています。
MSXの同人ソフトにおけるMAG形式の採用においては、福岡の「G-NET(Genuine Network)」主宰・夢神楽遊睡さん開発のMAGデコードプログラム「孫(まご, MA5, SCREEN5用)」「愛(まな, MA7, SCREEN7用)」の存在が大きいです。そのデコードプログラムを包括した拡張BASICシステム(いわゆるミドルウェア)も開発されていて、BASICプログラム上でMAG形式画像表示が可能になっています。
2021年現在は圧縮率の高さで「Exomizer3」、展開速度の速さで「LZe」が優位のようです。当時の「MAG」は圧縮率の優位性と言うよりは利用シーンの多様さ、そして先行きが暗いMSXシーンからの緩やかなデータ移行手段として選ばれていた印象です。
HTML5版・MAGローダー(MAGフォーマットビュアー)
今やWebブラウザ上でMAG画像が閲覧できる時代です。MAGフォーマットの画像データをお持ちの方はぜひ!