このページの元はKAODUNのhikiの掲示板です。wiki形式に変換して使用しているものです。
コメントを追加する場合、wikiとhikiとの形式の違いに注意してください。自動的にwikiの形式へ変換されたりしません。
スパムがうざったいので、一時的に掲示板機能を殺しておきます。
by 聖人
Ver0.2の動作報告・感想・要望はここに書くべ!
お名前: | コメント: | [] |
wikiやプラグインとかに関する要望とかはここへ!
お名前: | コメント: | [] |
「思うところがあって、汎用のグラフィックドライバを作ることに。完成したら、今の画面回りをそいつに置き換える予定。」
との事ですが、ある程度お手伝い等できるかと思います。
良かったらお返事頂ければと思います。
グラフィックシステムライブラリ予定仕様 16bit(15bit)カラー専用 グラフィックボックスに描画 実画面/仮想画面サイズ可変(但し8dot単位) BG/SP共通で1パターンのサイズを設定可能(8*8,16*16,32*32のいずれか) 登録可能なパターン数は可変 1パターンで利用可能な色数は任意の16色 登録可能なパレット数は可変 パレットの中の#0は透過色扱い パターン/パレットはBG/SP共通 BG画面最大4枚 2つのモード(タイルモードとピクセルモード) (タイル)1パターンのサイズは画面単位で設定可能 (タイル)画面単位にパレット設定可能 (ピクセル)各種描画命令(日本語16dot文字描画、8*8or16*16or32*32ブロック転送) (ピクセル)このモードでは真っ黒(0,0,0)が透明色扱い スクロール可能 画面単位で属性設定(半透明、任意の画面とのマスク) SP画面1枚 スプライト毎に表示/非表示を設定可能 画面単位でプライオリティ設定可能 パターン単位にパレット設定可能 画面全体にモザイク,フェード可能(0~31の範囲) 目標 比較的扱いやすい 目指せスーファミ! TOWNSでも快適
/* グラフィックシステムライブラリ定義用構造体 */ struct GSL_SYSTEM { struct LIB_GRAPHBOX *gbox; /* 描画先グラフィックボックス */ struct GSL_BGSCREEN *bg; /* BG画面定義の先頭アドレス */ struct GSL_SPRSCREEN *spr; /* スプライト画面定義の先頭アドレス */ unsigned char bg_count; /* BG画面の枚数 */ struct GSL_PATTERN *ptrn; /* パターン定義の先頭アドレス */ unsigned int max_ptrn; /* パターンの最大数 */ struct GSL_PAL *pal; /* パレット定義の先頭アドレス */ unsigned char max_pal; /* パレットの最大数 */ unsigned int width; /* 実画面の横幅(1dot単位) */ unsigned int height; /* 実画面の縦幅(1dot単位) */ unsigned int v_width; /* 仮想画面の横幅(1dot単位) */ unsigned int v_height; /* 仮想画面の縦幅(1dot単位) */ unsigned char mozaic; /* モザイクの度合い(無効0 - 31最大) */ unsigned char fade; /* 暗さの度合い(明るい0 - 31暗い) */ }; /* BG画面定義用構造体 */ struct GSL_BGSCREEN { unsigned int *tile; /* (タイルモード時)タイルマップ配列の先頭アドレス */ unsigned short *pixel; /* (ピクセルモード時)ピクセルマップ配列の先頭アドレス */ unsigned char pal; /* (タイルモード時)使用するパレットの番号 */ int x; /* 横座標(1dot単位) */ int y; /* 縦座標(1dot単位) */ unsigned char mode; /* 0=タイルモード,1=ピクセルモード */ unsigned char trnsprnt; /* 1=半透明表示,0=通常表示 */ unsigned char mask; /* 特定の画面との演算マスク */ /* bit0-bit3=BG画面1-4,bit5=スプライト画面 */ }; /* スプライト画面定義用構造体 */ struct GSL_SPRSCREEN { struct GSL_SPRITE *spr; /* スプライト配列の先頭アドレス */ unsigned int max_spr; /* スプライトの最大数 */ unsigned char priority; /* 0=BG1の上,1=BG2の上,2=BG3の上,3=BG4の上,3=BG4の下 */ }; /* パターン定義用構造体 */ struct GSL_PATTERN { unsigned char *adr; /* パターンの先頭アドレス */ unsigned char size; /* パターンのサイズ0=無効,1=8*8,2=16*16,3=32*32 */ }; /* スプライト定義用構造体 */ struct GSL_SPRITE { unsigned int ptrn; /* 定義パターンの番号 */ unsigned char pal; /* 使用するパレットの番号 */ int x; /* 横座標(1dot単位,実画面上) */ int y; /* 縦座標(1dot単位,実画面上) */ unsigned char visible; /* !0=表示,0=非表示 */ }; /* パレットデータ形式 */ struct GSL_PAL{ union{ struct{ char b : 5; /* 青 00000000 000?????*/ char g : 6; /* 緑 00000??? ???00000*/ char r : 5; /* 赤 ?????000 00000000*/ }p; unsigned short u; }n[16]; }; /* ライブラリ内でアプリ側のGSL_SYSTEMを扱うためのポインタ */ struct GSL_SYSTEM *gsl_sysp; /*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 初期化(アプリ側のGSL_SYSTEMを*gsl_syspに代入)*/ void gsl_init(struct GSL_SYSTEM *org){ gsl_sysp = org; } /*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 描画 */ void gsl_draw(void){ /* BG画面の最大番号から描画 */ /* スプライトのプライオリティで指定された深度に達したらスプライトを描画 */ /* モザイクの度合いが指定されていればモザイク化 */ /* 暗さが設定されていれば暗くする */ /* グラフィックボックスのフラッシュはしない */ } /*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ kaodunで使用した描画関数 */ void drawpattern_8t(int x, int y, unsigned char *padr); void drawpattern_8m(unsigned short *dest, int x, int y, int width, unsigned char *src); void drawpattern_8tm(unsigned short *dest, int x, int y, int width, unsigned char *src); void drawpattern_16t(int x, int y, unsigned char *padr); void drawpattern_16m(unsigned short *dest, int x, int y, int width, unsigned char *src); void drawpattern_16tm(unsigned short *dest, int x, int y, int width, unsigned char *src); void drawpattern_32t(int x, int y, unsigned char *padr); void drawpattern_32m(unsigned short *dest, int x, int y, int width, unsigned char *src); void drawpattern_32tm(unsigned short *dest, int x, int y, int width, unsigned char *src); void putstring_16bgbox(int x, int y, int col, char *strings); void putbox(int x, int y, int width, int height, int r, int g, int b); /* これらを以下のように改名/仕様変更して使う */ void gsl_drawptrn8g(int x, int y, unsigned char *padr); void gsl_drawptrn8(unsigned short *dest, int x, int y, unsigned char *src); void gsl_drawptrn8t(unsigned short *dest, int x, int y, unsigned char *src); void gsl_drawptrn16g(int x, int y, unsigned char *padr); void gsl_drawptrn16(unsigned short *dest, int x, int y, unsigned char *src); void gsl_drawptrn16t(unsigned short *dest, int x, int y, unsigned char *src); void gsl_drawptrn32g(int x, int y, unsigned char *padr); void gsl_drawptrn32(unsigned short *dest, int x, int y, unsigned char *src); void gsl_drawptrn32t(unsigned short *dest, int x, int y, unsigned char *src); void gsl_drawstr16(unsigned short *dest, int x, int y, unsigned short col, char *strings); void gsl_drawbox(unsigned short *dest, int x, int y, int w, int h, unsigned short col); /* メモリ転送系関数の引数widthはGSL_SYSTEM.v_widthに置き換える */ /* 文字描画関数と矩形描画関数はメモリへの転送命令にする。 */
お名前: | コメント: | [] |
Ver0.1の動作報告・感想・要望はここに書くべ!
お名前: | コメント: | [] |
最初の公開バージョンについての報告はこちらへ
お名前: | コメント: | [] |
お名前: | コメント: | [] |
でましたね!!
お名前: | コメント: | [] |