ファミコンの画像フォーマット

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
KEYONN_

ファミコンの画像フォーマット

#1

投稿記事 by KEYONN_ » 15年前

ネット上で入手したソースに手を加えて、Windowsのコマンドプロンプトで
動く様にしたものなのですが、0番スプライトしか表示されません。
1番スプライト以降も表示させるには、どうすれば良いですか?
誰か詳しい方教えてください。

#include<stdio.h>
#include<windows.h>

#define BACK_RED (BACKGROUND_RED | BACKGROUND_INTENSITY)
#define BACK_YELLOW (BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_INTENSITY)
#define BACK_GREEN (BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_INTENSITY)
#define BACK_BLUE (BACKGROUND_BLUE | BACKGROUND_INTENSITY)
#define BACK_WHITE (BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE | BACKGROUND_INTENSITY)
#define BACK_PURPLE (BACKGROUND_RED | BACKGROUND_BLUE | BACKGROUND_INTENSITY)
#define BACK_WATER (BACKGROUND_BLUE | BACKGROUND_GREEN | BACKGROUND_INTENSITY)

#define FORE_RED (FOREGROUND_RED | FOREGROUND_INTENSITY)
#define FORE_YELLOW (FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_INTENSITY)
#define FORE_GREEN (FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_INTENSITY)
#define FORE_BLUE (FOREGROUND_BLUE | FOREGROUND_INTENSITY)
#define FORE_WHITE (FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE | FOREGROUND_INTENSITY)
#define FORE_PURPLE (FOREGROUND_RED | FOREGROUND_BLUE | FOREGROUND_INTENSITY)
#define FORE_WATER (FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_INTENSITY)

void print_pixel(unsigned char b)
{
HANDLE mystdout;

mystdout=GetStdHandle(STD_OUTPUT_HANDLE);

switch(b)
{
case 0 :
SetConsoleTextAttribute(mystdout,0 );
printf(" ");
break;
case 1 :
SetConsoleTextAttribute(mystdout,BACK_RED | FORE_RED );
printf("■");
break;
case 2 :
SetConsoleTextAttribute(mystdout,BACK_WHITE | FORE_WHITE);
printf("■");
break;
case 3 :
SetConsoleTextAttribute(mystdout,BACK_WATER | FORE_WATER);
printf("■");
break;
default :
printf("%d", b);
}
}

void DrawPixel(unsigned char tile[16])
{
int i,j,k;
for(i = 0, j = 8; i < 8; i++, j++)
{
for(k = 7; k >= 0; k--)
print_pixel(((((tile >> k) & 1) << 1) |
((tile[j] >> k) & 1)));
putchar('\n');
}
}

int main(void)
{
FILE *fp;
int l;
unsigned char tile[2][16];
char filename[64];

printf("ファイル名を入力してください。\n");
scanf("%s",filename);
//if(argc < 2) return 1;
if(!(fp = fopen(filename, "r")))
return 1;
for(l=0;l<2;l++)
{
fread(tile[[/url], 1, 16, fp);
DrawPixel(tile[[/url]);
}
fclose(fp);

int temp;
scanf("%d",&temp);

return 0;
}

使用例:
ファイル名を表示してください。
giko.spr[enterで
表示される。] 画像

KEYONN_

Re:ファミコンの画像フォーマット

#2

投稿記事 by KEYONN_ » 15年前

すみません。自己解決しました。迷惑かけてすみません。 画像

閉鎖

“C言語何でも質問掲示板” へ戻る