このメールは、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); }