/* ５１２＊５１２／６５５３５色 -> ５１２＊５１２／２５６色 */
/* 実際に画面上に使われている色に順番に番号を付けて、その番号を格納する */
/* これは高速版のみ：低速版との速度の差が１００倍以上あるため */

#include <stdio.h>
#include <doslibm.h>
#include "defines.h"
#include "abuff.h"

int trns256(unchar *buff,unsint cols[256],int k)
{
unchar *check;
unsint *gram=(unsint *)GRAM;
int i;
	check=newmalloc(65536);
	if (check==NULL) return(1);
	
	/* ワークエリアクリア */
	/* 現在表示中の絵とcols[]が一致しているならば本当は不要 */
	/* 一致していない時は絵がおかしくなる */
	for (i=0;i<65536;i++) check[i]=0;
	
	/* 色情報展開 */
	for (i=0;i<k;i++) check[cols[i]]=i;
	
	i=SUPER(0);
	do {
		*buff++=check[*gram++];
		*buff++=check[*gram++];
	} while (gram<(unsint *)(GRAM+GRSIZE));
	if (i>=0) SUPER(i);
	free(check);
	return(0);
}
