このメールは、OSASK-ML投稿フォームから書き込まれた内容です。
お名前: ベイサイド
32bitグラフィックボックスに点を打とうとしています。
WorkFrameには5-5-5の色情報が入っているらしく、
これを8-8-8に変換して渡そうと思い、以下のような
コードを書きましたが、ほとんど真っ黒になってしまいました。
何かうまい方法があったら教えてください。
あと、bochsではStack Protectが起こるのに実機で
おきないのはなんでだろう?
void OsaskMain(){
:
:
/* Open graphic box */
gbox = lib_opengraphbox(0x8001, AUTO_MALLOC, 4, 8, NES_DISP_WIDTH, NES_DISP_HEIGHT, 0, 0, window);
:
:
}
union UNI_PIXEL32 {
struct {
unsigned char blue, green, red;
};
int i;
};
/* Transfer the contents of work frame on the screen */
void InfoNES_LoadFrame(){
int x, y;
WORD rgb;
union UNI_PIXEL32 *p;
/* Initialize graphic box pointer */
p = (union UNI_PIXEL32 *) (((char *) gbox) + 64);
/* Copy WorkFrame to VRAM */
for(x = 0; x < NES_DISP_WIDTH; x++){
for(y = 0; y < NES_DISP_HEIGHT; y++){
rgb = WorkFrame[y * NES_DISP_WIDTH + x];
p->i = 0;
p->blue = (rgb & 0x1F);
p->green = (rgb & 0x3E0)/0x1F;
p->red = (rgb & 0x7C00)/0x3FF;
p++;
}
}
lib_flushgraphbox(0x8024, window, 0, 0, NES_DISP_WIDTH, NES_DISP_HEIGHT, 0, ((char *) gbox) + 64);
}