⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 wgp.c

📁 十七种模拟器源代码 非常有用的作课程设计不可缺少的
💻 C
📖 第 1 页 / 共 3 页
字号:
            }            y = (y+zzy)&0x1FF;            SPR_MAP+=8;            x=xx;            }            break;            case 0x40:            x+=(zx+1);            xx=x;            for(ry=0;ry<8;ry++){            zzy = zoom_dat_y[ry];            if((y>16)&&(y<240+32)){            ta=0;            for(rx=0;rx<4;rx++){            zzx = zoom_dat_x[rx];            x = (x-zzx)&0x1FF;            if((x>16)&&(x<320+32)){               tb=ReadWord(&SPR_MAP[ta])&0x3FFF;               if(GFX_OBJ_B_SOLID[tb]!=0){			// No pixels; skip                  if(GFX_OBJ_B_SOLID[tb]==1)			// Some pixels; trans                     Draw16x16_Trans_Mapped_ZoomXY_FlipY_Rot(&GFX_OBJ_B[tb<<8],x,y,map,zzx,zzy);                  else						// all pixels; solid                     Draw16x16_Mapped_ZoomXY_FlipY_Rot(&GFX_OBJ_B[tb<<8],x,y,map,zzx,zzy);               }            }            ta+=2;            }            }            y = (y+zzy)&0x1FF;            SPR_MAP+=8;            x=xx;            }            break;            case 0x80:            y+=zy;            xx=x;            for(ry=0;ry<8;ry++){            zzy = zoom_dat_y[ry];            y = (y-zzy)&0x1FF;            if((y>16)&&(y<240+32)){            ta=0;            for(rx=0;rx<4;rx++){            zzx = zoom_dat_x[rx];            if((x>16)&&(x<320+32)){               tb=ReadWord(&SPR_MAP[ta])&0x3FFF;               if(GFX_OBJ_B_SOLID[tb]!=0){			// No pixels; skip                  if(GFX_OBJ_B_SOLID[tb]==1)			// Some pixels; trans                     Draw16x16_Trans_Mapped_ZoomXY_FlipX_Rot(&GFX_OBJ_B[tb<<8],x,y,map,zzx,zzy);                  else						// all pixels; solid                     Draw16x16_Mapped_ZoomXY_FlipX_Rot(&GFX_OBJ_B[tb<<8],x,y,map,zzx,zzy);               }            }            ta+=2;            x = (x+zzx)&0x1FF;            }            }            SPR_MAP+=8;            x=xx;            }            break;            case 0xC0:            x+=(zx+1);            y+=zy;            xx=x;            for(ry=0;ry<8;ry++){            zzy = zoom_dat_y[ry];            y = (y-zzy)&0x1FF;            if((y>16)&&(y<240+32)){            ta=0;            for(rx=0;rx<4;rx++){            zzx = zoom_dat_x[rx];            x = (x-zzx)&0x1FF;            if((x>16)&&(x<320+32)){               tb=ReadWord(&SPR_MAP[ta])&0x3FFF;               if(GFX_OBJ_B_SOLID[tb]!=0){			// No pixels; skip                  if(GFX_OBJ_B_SOLID[tb]==1)			// Some pixels; trans                     Draw16x16_Trans_Mapped_ZoomXY_FlipXY_Rot(&GFX_OBJ_B[tb<<8],x,y,map,zzx,zzy);                  else						// all pixels; solid                     Draw16x16_Mapped_ZoomXY_FlipXY_Rot(&GFX_OBJ_B[tb<<8],x,y,map,zzx,zzy);               }            }            ta+=2;            }            }            SPR_MAP+=8;            x=xx;            }            break;            }            }            else{						// [32x128]            zoom_dat_x = zoom16_ofs+(((zx<<2)|3)<<3);            zoom_dat_y = zoom16_ofs+(zy<<3);            SPR_MAP = OBJECT_MAP + 0x60000 + (ta<<5);            switch(RAM[zz+5]&0xC0){            case 0x00:            xx=x;            for(ry=0;ry<8;ry++){            zzy = zoom_dat_y[ry];            if((y>16)&&(y<240+32)){            ta=0;            for(rx=0;rx<2;rx++){            zzx = zoom_dat_x[rx];            if((x>16)&&(x<320+32)){               tb=ReadWord(&SPR_MAP[ta])&0x3FFF;               if(GFX_OBJ_B_SOLID[tb]!=0){			// No pixels; skip                  if(GFX_OBJ_B_SOLID[tb]==1)			// Some pixels; trans                     Draw16x16_Trans_Mapped_ZoomXY_Rot(&GFX_OBJ_B[tb<<8],x,y,map,zzx,zzy);                  else						// all pixels; solid                     Draw16x16_Mapped_ZoomXY_Rot(&GFX_OBJ_B[tb<<8],x,y,map,zzx,zzy);               }            }            ta+=2;            x = (x+zzx)&0x1FF;            }            }            y = (y+zzy)&0x1FF;            SPR_MAP+=4;            x=xx;            }            break;            case 0x40:            x+=(zx+1);            xx=x;            for(ry=0;ry<8;ry++){            zzy = zoom_dat_y[ry];            if((y>16)&&(y<240+32)){            ta=0;            for(rx=0;rx<2;rx++){            zzx = zoom_dat_x[rx];            x = (x-zzx)&0x1FF;            if((x>16)&&(x<320+32)){               tb=ReadWord(&SPR_MAP[ta])&0x3FFF;               if(GFX_OBJ_B_SOLID[tb]!=0){			// No pixels; skip                  if(GFX_OBJ_B_SOLID[tb]==1)			// Some pixels; trans                     Draw16x16_Trans_Mapped_ZoomXY_FlipY_Rot(&GFX_OBJ_B[tb<<8],x,y,map,zzx,zzy);                  else						// all pixels; solid                     Draw16x16_Mapped_ZoomXY_FlipY_Rot(&GFX_OBJ_B[tb<<8],x,y,map,zzx,zzy);               }            }            ta+=2;            }            }            y = (y+zzy)&0x1FF;            SPR_MAP+=4;            x=xx;            }            break;            case 0x80:            y+=zy;            xx=x;            for(ry=0;ry<8;ry++){            zzy = zoom_dat_y[ry];            y = (y-zzy)&0x1FF;            if((y>16)&&(y<240+32)){            ta=0;            for(rx=0;rx<2;rx++){            zzx = zoom_dat_x[rx];            if((x>16)&&(x<320+32)){               tb=ReadWord(&SPR_MAP[ta])&0x3FFF;               if(GFX_OBJ_B_SOLID[tb]!=0){			// No pixels; skip                  if(GFX_OBJ_B_SOLID[tb]==1)			// Some pixels; trans                     Draw16x16_Trans_Mapped_ZoomXY_FlipX_Rot(&GFX_OBJ_B[tb<<8],x,y,map,zzx,zzy);                  else						// all pixels; solid                     Draw16x16_Mapped_ZoomXY_FlipX_Rot(&GFX_OBJ_B[tb<<8],x,y,map,zzx,zzy);               }            }            ta+=2;            x = (x+zzx)&0x1FF;            }            }            SPR_MAP+=4;            x=xx;            }            break;            case 0xC0:            x+=(zx+1);            y+=zy;            xx=x;            for(ry=0;ry<8;ry++){            zzy = zoom_dat_y[ry];            y = (y-zzy)&0x1FF;            if((y>16)&&(y<240+32)){            ta=0;            for(rx=0;rx<2;rx++){            zzx = zoom_dat_x[rx];            x = (x-zzx)&0x1FF;            if((x>16)&&(x<320+32)){               tb=ReadWord(&SPR_MAP[ta])&0x3FFF;               if(GFX_OBJ_B_SOLID[tb]!=0){			// No pixels; skip                  if(GFX_OBJ_B_SOLID[tb]==1)			// Some pixels; trans                     Draw16x16_Trans_Mapped_ZoomXY_FlipXY_Rot(&GFX_OBJ_B[tb<<8],x,y,map,zzx,zzy);                  else						// all pixels; solid                     Draw16x16_Mapped_ZoomXY_FlipXY_Rot(&GFX_OBJ_B[tb<<8],x,y,map,zzx,zzy);               }            }            ta+=2;            }            }            SPR_MAP+=4;            x=xx;            }            break;            }            }            }         }      }   }}void DrawWorldGrandPrix(void){   int x,y,ta,zz,zzz,zzzz,x16,y16;   //int zy,tb,tb2;   UINT8 *map;   //UINT32 mask_count;   //UINT32 mask_pos[32];   //UINT32 mask_pos_y[32];   ClearPaletteMap();   // Init tc0100scn emulation   // ------------------------   tc0100scn_layer_count = 0;   tc0100scn[0].ctrl = ReadWord(RAM_SCROLL+12);   // BG0   // ---   set_col_bank(2);   render_tc0100scn_layer_mapped(0,0);   // BG1   // ---   set_col_bank(3);   render_tc0100scn_layer_mapped(0,1);   // OBJECT   // ------   set_col_bank(1);   if(check_layer_enabled(obj_id))      render_z_system_sprites();   // PIV   // ---   //if(check_layer_enabled(f3_bg1_id)){   set_col_bank(2);   MAKE_SCROLL_1024x1024_2_16(      ReadWord(&RAM_SCROLL_2[0x06]),      ReadWord(&RAM_SCROLL_2[0x00])   );   START_SCROLL_1024x1024_2_16(32,32,320,240);      ta=ReadWord(&RAM[zz+0x22000])&0x3FFF;      if(GFX_PIV_SOLID[ta]!=0){			// No pixels; skip         MAP_PALETTE_MAPPED_NEW(            ReadWord(&RAM[zz+0x32000])&0x3F,            16,            map         );         if(GFX_PIV_SOLID[ta]==1){		// Some pixels; trans            switch(RAM[zz+0x32001]&0xC0){               case 0x00: Draw16x16_Trans_Mapped_Rot(&GFX_PIV[ta<<8],x,y,map);        break;               case 0x40: Draw16x16_Trans_Mapped_FlipY_Rot(&GFX_PIV[ta<<8],x,y,map);  break;               case 0x80: Draw16x16_Trans_Mapped_FlipX_Rot(&GFX_PIV[ta<<8],x,y,map);  break;               case 0xC0: Draw16x16_Trans_Mapped_FlipXY_Rot(&GFX_PIV[ta<<8],x,y,map); break;            }         }         else{					// all pixels; solid            switch(RAM[zz+0x32001]&0xC0){               case 0x00: Draw16x16_Mapped_Rot(&GFX_PIV[ta<<8],x,y,map);        break;               case 0x40: Draw16x16_Mapped_FlipY_Rot(&GFX_PIV[ta<<8],x,y,map);  break;               case 0x80: Draw16x16_Mapped_FlipX_Rot(&GFX_PIV[ta<<8],x,y,map);  break;               case 0xC0: Draw16x16_Mapped_FlipXY_Rot(&GFX_PIV[ta<<8],x,y,map); break;            }         }      }   END_SCROLL_1024x1024_2_16();   //}   // PIV   // ---   //if(check_layer_enabled(f3_bg1_id)){   set_col_bank(2);   MAKE_SCROLL_1024x1024_2_16(      ReadWord(&RAM_SCROLL_2[0x08]),      ReadWord(&RAM_SCROLL_2[0x02])   );   START_SCROLL_1024x1024_2_16(32,32,320,240);      ta=ReadWord(&RAM[zz+0x24000])&0x3FFF;      if(GFX_PIV_SOLID[ta]!=0){			// No pixels; skip         MAP_PALETTE_MAPPED_NEW(            ReadWord(&RAM[zz+0x34000])&0x3F,            16,            map         );         if(GFX_PIV_SOLID[ta]==1){		// Some pixels; trans            switch(RAM[zz+0x34001]&0xC0){               case 0x00: Draw16x16_Trans_Mapped_Rot(&GFX_PIV[ta<<8],x,y,map);        break;               case 0x40: Draw16x16_Trans_Mapped_FlipY_Rot(&GFX_PIV[ta<<8],x,y,map);  break;               case 0x80: Draw16x16_Trans_Mapped_FlipX_Rot(&GFX_PIV[ta<<8],x,y,map);  break;               case 0xC0: Draw16x16_Trans_Mapped_FlipXY_Rot(&GFX_PIV[ta<<8],x,y,map); break;            }         }         else{					// all pixels; solid            switch(RAM[zz+0x34001]&0xC0){               case 0x00: Draw16x16_Mapped_Rot(&GFX_PIV[ta<<8],x,y,map);        break;               case 0x40: Draw16x16_Mapped_FlipY_Rot(&GFX_PIV[ta<<8],x,y,map);  break;               case 0x80: Draw16x16_Mapped_FlipX_Rot(&GFX_PIV[ta<<8],x,y,map);  break;               case 0xC0: Draw16x16_Mapped_FlipXY_Rot(&GFX_PIV[ta<<8],x,y,map); break;            }         }      }   END_SCROLL_1024x1024_2_16();   //}   // PIV   // ---   //if(check_layer_enabled(f3_bg1_id)){   set_col_bank(2);   MAKE_SCROLL_1024x1024_2_16(      ReadWord(&RAM_SCROLL_2[0x0A]),      ReadWord(&RAM_SCROLL_2[0x04])   );   START_SCROLL_1024x1024_2_16(32,32,320,240);      ta=ReadWord(&RAM[zz+0x26000])&0x3FFF;      if(GFX_PIV_SOLID[ta]!=0){			// No pixels; skip         MAP_PALETTE_MAPPED_NEW(            ReadWord(&RAM[zz+0x36000])&0x3F,            16,            map         );         if(GFX_PIV_SOLID[ta]==1){		// Some pixels; trans            switch(RAM[zz+0x36001]&0xC0){               case 0x00: Draw16x16_Trans_Mapped_Rot(&GFX_PIV[ta<<8],x,y,map);        break;               case 0x40: Draw16x16_Trans_Mapped_FlipY_Rot(&GFX_PIV[ta<<8],x,y,map);  break;               case 0x80: Draw16x16_Trans_Mapped_FlipX_Rot(&GFX_PIV[ta<<8],x,y,map);  break;               case 0xC0: Draw16x16_Trans_Mapped_FlipXY_Rot(&GFX_PIV[ta<<8],x,y,map); break;            }         }         else{					// all pixels; solid            switch(RAM[zz+0x36001]&0xC0){               case 0x00: Draw16x16_Mapped_Rot(&GFX_PIV[ta<<8],x,y,map);        break;               case 0x40: Draw16x16_Mapped_FlipY_Rot(&GFX_PIV[ta<<8],x,y,map);  break;               case 0x80: Draw16x16_Mapped_FlipX_Rot(&GFX_PIV[ta<<8],x,y,map);  break;               case 0xC0: Draw16x16_Mapped_FlipXY_Rot(&GFX_PIV[ta<<8],x,y,map); break;            }         }      }   END_SCROLL_1024x1024_2_16();   //}   // FG0   // ---   set_col_bank(1);   render_tc0100scn_layer_mapped(0,2);   set_col_bank(0);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -