卡片召唤师
精华
|
战斗力 鹅
|
回帖 0
注册时间 2016-12-26
|
楼主 |
发表于 2020-5-21 08:53
|
显示全部楼层
金银里就看到一个压缩怪兽图像文件的工具是岩田聪写的。贴一点点吧
- /*
- * ポケモングラフィックデータの圧縮・バンク詰めコンバータ
- * Created by S.Iwata / HAL Laboragtory, Inc.
- */
- #include <stdio.h>
- #include <stdlib.h>
- typedef unsigned char BYTE;
- typedef unsigned int WORD;
- typedef unsigned long DWORD;
- /* ファイルに1バイト出力 */
- void putByte(BYTE, FILE*);
- /* ファイルfpiの内容を圧縮してfpoに出力し圧縮後のサイズを返す */
- int vpack(FILE *fpi, FILE *fpo);
- /* 圧縮用データバッファ(データ出力に使用) */
- extern BYTE data[];
- /* データ種別定義 */
- typedef enum {
- MonsFront = 0, /* モンスター正面 */
- MonsBack, /* モンスター背面 */
- UnknownFront, /* アンノーン正面 */
- UnknownBack, /* アンノーン背面 */
- Trainer /* トレーナー */
- } DKind;
- /* データ断片 */
- typedef struct {
- DKind kind; /* データ種別 */
- int idno; /* データID(モンスター番号) */
- int bank; /* バンク番号 */
- long bpoint; /* バンク内のポインタ */
- int size; /* この情報のサイズ */
- } BLOCKREC;
复制代码- /*
- * データ圧縮ユーティリティー
- * Written by S.Iwata
- * on April,1989
- * revised by M.Kanai
- * on Aug., 1989
- * revised by T.Gunji
- * on May., 1994
- * revised by S.Iwata
- * on September, 1996
- * revised by S.Iwata
- * on September, 1998
- *
- */
- #include <stdio.h>
- #include <stdlib.h>
- typedef unsigned char BYTE;
- typedef unsigned int WORD;
- typedef unsigned long DWORD;
- #define TRUE 1
- #define FALSE 0
- #define FILENAMELENGTH 64 /* ファイル名用バッファの大きさ */
- #define DATASIZELIMIT 65536 /* 扱えるデータの最大値 64KB */
- #define EMPTY (WORD)DATASIZELIMIT /* ハッシュテーブル内で空きを示す */
- #define HASHTABLESIZE 131111 /* 素数 524287 512KB */
- /* (old-version 131111) */
- BYTE data[DATASIZELIMIT + 1]; /* 圧縮データバッファ */
- BYTE algorythm[DATASIZELIMIT]; /* 圧縮アルゴリズム */
- WORD compLength[DATASIZELIMIT]; /* 圧縮対象データ長 */
- WORD reference[DATASIZELIMIT]; /* 参照インデックス */
- WORD originalSize = 0; /* 圧縮前のデータ長 */
- WORD packedSize = 0; /* 圧縮後のデータ長 */
- WORD nrefHash[HASHTABLESIZE];
- WORD vrefHash[HASHTABLESIZE];
- BYTE invertTable[256]; /* 左右反転用テーブル */
- #define Invert(n) (invertTable[n]) /* 左右反転データを得る */
- #define NORMAL (BYTE)0 /* 非圧縮通常データ */
- #define RUNLENGTH (BYTE)1 /* 1データ連続 */
- #define RUNLENGTH2 (BYTE)2 /* 2データ交互連続 */
- #define INCRUNLEN (BYTE)3 /* インクリメンタルデータ連続 */
- #define REFERENCE (BYTE)4 /* 通常データ参照 */
- #define REFERLR (BYTE)5 /* 左右反転データ参照 */
- #define REFERUD (BYTE)6 /* 上下反転データ参照 */
- #define SPECIAL (BYTE)7 /* 特殊データ */
- #define ENDMARK (BYTE)0xff /* データ終端 */
复制代码
|
|