[OSASK 6542] FORM: 32bit グラフィックボックスの使い方

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



ML番号でジャンプ
ML単語検索