home *** CD-ROM | disk | FTP | other *** search
- /* fxsp2lib.c */
-
- #include <stdlib.h>
- #include <stdio.h>
-
-
- typedef struct {
- signed short vx; /* 相対座標データ */
- signed short vy; /* 相対座標データ */
- unsigned short pt; /* スプライトパターンNo. */
- unsigned short rv; /* 反転コード */
- } SP_WORK;
-
- static FILE *fp;
- static int pattern_no;
- static int sprite_no;
- extern char n_option;
-
-
- short fxsp_on (void)
- {
- if (n_option)
- return (0);
-
- if ((fp = fopen ("temp001.obj", "wb")) == NULL) {
- printf ("ファイルを書き込めません\n");
- return (-1);
- }
- fprintf (fp, "\nPCG_FILE = ***.sp 256 * 使用する PCG データ\n"
- "\n"
- "XY_OFFSET = $0000 $0000 * 座標のオフセット\n"
- "PT_OFFSET = $0000 * PCGパターンナンバーのオフセット\n"
- "OBJ_RV = $0000 * 全体の反転コード\n"
- "\n");
- pattern_no = 0;
- sprite_no = 0;
- return (0);
- }
-
-
-
- static void write_pos (signed short pos)
- {
- signed short p = pos;
-
- if (n_option)
- return;
-
- if (p < 0)
- fprintf (fp, "-$%04hx ", -p);
- else
- fprintf (fp, " $%04hx ", p);
-
- return;
- }
-
-
-
- /* xsp_set_st と置き換えて使うと引き数の構造体を .obj ファイルに書き出す */
- short fxsp_set_st (void *sp_work0)
- {
- SP_WORK *sp_work = (SP_WORK *) sp_work0;
-
- if (n_option)
- return (0);
-
- if (!sprite_no) {
- fprintf (fp,
- "******************************** 複合スプライトパターン %3d ****\n\n"
- "No. = NEXT * 複合スプライトのパターンナンバー\n"
- " * 左から順に、X Y PT RV (以下同様)\n"
- ,pattern_no);
- }
- fprintf (fp, " ");
- write_pos (sp_work->vx);
- write_pos (sp_work->vy);
-
- fprintf (fp, "$%04x ", sp_work->pt);
- fprintf (fp, "$%04x\n", sp_work->rv);
- sprite_no++;
-
- return (0);
- }
-
-
-
- short fxsp_out (void)
- {
- short s = sprite_no;
-
- if (n_option)
- return (0);
-
- fprintf (fp, "\n\n");
- pattern_no++;
- sprite_no = 0;
-
- return (s);
- }
-
-
-
- short fxsp_off (void)
- {
- if (n_option)
- return (0);
-
- if (fp != NULL)
- fclose (fp);
- fp = NULL;
-
- return (0);
- }
-