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

📄 spr64.c

📁 十七种模拟器源代码 非常有用的作课程设计不可缺少的
💻 C
字号:
#include "raine.h"#include "newspr.h"static UINT8 *ZOOM64;static UINT8 *ZOOM64R;/********************************************************************/// Init64x64_Table():// Setup zoom table data for 64x64 sprites.// TPOS Points to $2000 bytes of memory.void Init64x64_Table(UINT8 *TPOS){   UINT8 *ZZZ;   int xx,yy;   ZOOM64=TPOS;   for(yy=1;yy<65;yy++){	// NORMAL      ZZZ=ZOOM64+((yy-1)<<6);      for(xx=0;xx<yy;xx++){         ZZZ[xx]=((xx<<6)/yy);      }   }   ZOOM64R=TPOS+0x1000;   for(yy=1;yy<65;yy++){	// FLIP      ZZZ=ZOOM64R+((yy-1)<<6);      for(xx=0;xx<yy;xx++){         ZZZ[xx]=((((yy-1)-xx)<<6)/yy);      }   }}/********************************************************************/// Draw64x64_Trans_Mapped_Zoom():// Draw64x64_Trans_Mapped_Zoom_FlipY():// Draw64x64_Trans_Mapped_Zoom_FlipX():// Draw64x64_Trans_Mapped_Zoom_FlipXY():// Zoomed 64x64 sprites, using colour mapping.// From Looking at the compiled asm, I'm not sure it's worth trying// to rewrite these in asm...void Draw64x64_Trans_Mapped_Zoom(UINT8 *SPR, int x, int y, UINT8 *cmap, int zoom){   UINT8 *BIT,*SSS,*ZZXY;   int xx,yy;   if(zoom>=63){      Draw64x64_Trans_Mapped(SPR,x,y,cmap);   }   else{   ZZXY=ZOOM64+(zoom<<6);   BIT=GameBitmap->line[y]+x;   for(yy=0;yy<=zoom;yy++){      SSS=SPR+(ZZXY[yy]<<6);      for(xx=0;xx<=zoom;xx++){         if(SSS[ZZXY[xx]]!=0)BIT[xx]=cmap[SSS[ZZXY[xx]]];      }      BIT+=GameBitmap->w;   }   }}void Draw64x64_Trans_Mapped_Zoom_FlipY(UINT8 *SPR, int x, int y, UINT8 *cmap, int zoom){   UINT8 *BIT,*SSS,*ZZX,*ZZY;   int xx,yy;   if(zoom>=63){      Draw64x64_Trans_Mapped_FlipY(SPR,x,y,cmap);   }   else{   ZZX=ZOOM64R+(zoom<<6);   ZZY=ZOOM64+(zoom<<6);   BIT=GameBitmap->line[y]+x;   for(yy=0;yy<=zoom;yy++){      SSS=SPR+(ZZY[yy]<<6);      for(xx=0;xx<=zoom;xx++){         if(SSS[ZZX[xx]]!=0)BIT[xx]=cmap[SSS[ZZX[xx]]];      }      BIT+=GameBitmap->w;   }   }}void Draw64x64_Trans_Mapped_Zoom_FlipX(UINT8 *SPR, int x, int y, UINT8 *cmap, int zoom){   UINT8 *BIT,*SSS,*ZZX,*ZZY;   int xx,yy;   if(zoom>=63){      Draw64x64_Trans_Mapped_FlipX(SPR,x,y,cmap);   }   else{   ZZX=ZOOM64+(zoom<<6);   ZZY=ZOOM64R+(zoom<<6);   BIT=GameBitmap->line[y]+x;   for(yy=0;yy<=zoom;yy++){      SSS=SPR+(ZZY[yy]<<6);      for(xx=0;xx<=zoom;xx++){         if(SSS[ZZX[xx]]!=0)BIT[xx]=cmap[SSS[ZZX[xx]]];      }      BIT+=GameBitmap->w;   }   }}void Draw64x64_Trans_Mapped_Zoom_FlipXY(UINT8 *SPR, int x, int y, UINT8 *cmap, int zoom){   UINT8 *BIT,*SSS,*ZZXY;   int xx,yy;   if(zoom>=63){      Draw64x64_Trans_Mapped_FlipXY(SPR,x,y,cmap);   }   else{   ZZXY=ZOOM64R+(zoom<<6);   BIT=GameBitmap->line[y]+x;   for(yy=0;yy<=zoom;yy++){      SSS=SPR+(ZZXY[yy]<<6);      for(xx=0;xx<=zoom;xx++){         if(SSS[ZZXY[xx]]!=0)BIT[xx]=cmap[SSS[ZZXY[xx]]];      }      BIT+=GameBitmap->w;   }   }}/********************************************************************/void Draw64x64_Trans_Mapped_Zoom2(UINT8 *SPR, int x, int y, UINT8 *cmap, int zoomx, int zoomy){   UINT8 *BIT,*SSS,*ZZX,*ZZY;   int xx,yy;   if((zoomx>=63)&&(zoomy>=63)){      Draw64x64_Trans_Mapped(SPR,x,y,cmap);   }   else{   ZZX=ZOOM64+(zoomx<<6);   ZZY=ZOOM64+(zoomy<<6);   BIT=GameBitmap->line[y]+x;   for(yy=0;yy<=zoomy;yy++){      SSS=SPR+(ZZY[yy]<<6);      for(xx=0;xx<=zoomx;xx++){         if(SSS[ZZX[xx]]!=0)BIT[xx]=cmap[SSS[ZZX[xx]]];      }      BIT+=GameBitmap->w;   }   }}void Draw64x64_Trans_Mapped_Zoom2_FlipY(UINT8 *SPR, int x, int y, UINT8 *cmap, int zoomx, int zoomy){   UINT8 *BIT,*SSS,*ZZX,*ZZY;   int xx,yy;   if((zoomx>=63)&&(zoomy>=63)){      Draw64x64_Trans_Mapped_FlipY(SPR,x,y,cmap);   }   else{   ZZX=ZOOM64R+(zoomx<<6);   ZZY=ZOOM64+(zoomy<<6);   BIT=GameBitmap->line[y]+x;   for(yy=0;yy<=zoomy;yy++){      SSS=SPR+(ZZY[yy]<<6);      for(xx=0;xx<=zoomx;xx++){         if(SSS[ZZX[xx]]!=0)BIT[xx]=cmap[SSS[ZZX[xx]]];      }      BIT+=GameBitmap->w;   }   }}void Draw64x64_Trans_Mapped_Zoom2_FlipX(UINT8 *SPR, int x, int y, UINT8 *cmap, int zoomx, int zoomy){   UINT8 *BIT,*SSS,*ZZX,*ZZY;   int xx,yy;   if((zoomx>=63)&&(zoomy>=63)){      Draw64x64_Trans_Mapped_FlipX(SPR,x,y,cmap);   }   else{   ZZX=ZOOM64+(zoomx<<6);   ZZY=ZOOM64R+(zoomy<<6);   BIT=GameBitmap->line[y]+x;   for(yy=0;yy<=zoomy;yy++){      SSS=SPR+(ZZY[yy]<<6);      for(xx=0;xx<=zoomx;xx++){         if(SSS[ZZX[xx]]!=0)BIT[xx]=cmap[SSS[ZZX[xx]]];      }      BIT+=GameBitmap->w;   }   }}void Draw64x64_Trans_Mapped_Zoom2_FlipXY(UINT8 *SPR, int x, int y, UINT8 *cmap, int zoomx, int zoomy){   UINT8 *BIT,*SSS,*ZZX,*ZZY;   int xx,yy;   if((zoomx>=63)&&(zoomy>=63)){      Draw64x64_Trans_Mapped_FlipXY(SPR,x,y,cmap);   }   else{   ZZX=ZOOM64R+(zoomx<<6);   ZZY=ZOOM64R+(zoomy<<6);   BIT=GameBitmap->line[y]+x;   for(yy=0;yy<=zoomy;yy++){      SSS=SPR+(ZZY[yy]<<6);      for(xx=0;xx<=zoomx;xx++){         if(SSS[ZZX[xx]]!=0)BIT[xx]=cmap[SSS[ZZX[xx]]];      }      BIT+=GameBitmap->w;   }   }}/********************************************************************/void Draw64x64_Mapped_Zoom2(UINT8 *SPR, int x, int y, UINT8 *cmap, int zoomx, int zoomy){   UINT8 *BIT,*SSS,*ZZX,*ZZY;   int xx,yy;   if((zoomx>=63)&&(zoomy>=63)){      Draw64x64_Mapped(SPR,x,y,cmap);   }   else{   ZZX=ZOOM64+(zoomx<<6);   ZZY=ZOOM64+(zoomy<<6);   BIT=GameBitmap->line[y]+x;   for(yy=0;yy<=zoomy;yy++){      SSS=SPR+(ZZY[yy]<<6);      for(xx=0;xx<=zoomx;xx++){         BIT[xx]=cmap[SSS[ZZX[xx]]];      }      BIT+=GameBitmap->w;   }   }}void Draw64x64_Mapped_Zoom2_FlipY(UINT8 *SPR, int x, int y, UINT8 *cmap, int zoomx, int zoomy){   UINT8 *BIT,*SSS,*ZZX,*ZZY;   int xx,yy;   if((zoomx>=63)&&(zoomy>=63)){      Draw64x64_Mapped_FlipY(SPR,x,y,cmap);   }   else{   ZZX=ZOOM64R+(zoomx<<6);   ZZY=ZOOM64+(zoomy<<6);   BIT=GameBitmap->line[y]+x;   for(yy=0;yy<=zoomy;yy++){      SSS=SPR+(ZZY[yy]<<6);      for(xx=0;xx<=zoomx;xx++){         BIT[xx]=cmap[SSS[ZZX[xx]]];      }      BIT+=GameBitmap->w;   }   }}void Draw64x64_Mapped_Zoom2_FlipX(UINT8 *SPR, int x, int y, UINT8 *cmap, int zoomx, int zoomy){   UINT8 *BIT,*SSS,*ZZX,*ZZY;   int xx,yy;   if((zoomx>=63)&&(zoomy>=63)){      Draw64x64_Mapped_FlipX(SPR,x,y,cmap);   }   else{   ZZX=ZOOM64+(zoomx<<6);   ZZY=ZOOM64R+(zoomy<<6);   BIT=GameBitmap->line[y]+x;   for(yy=0;yy<=zoomy;yy++){      SSS=SPR+(ZZY[yy]<<6);      for(xx=0;xx<=zoomx;xx++){         BIT[xx]=cmap[SSS[ZZX[xx]]];      }      BIT+=GameBitmap->w;   }   }}void Draw64x64_Mapped_Zoom2_FlipXY(UINT8 *SPR, int x, int y, UINT8 *cmap, int zoomx, int zoomy){   UINT8 *BIT,*SSS,*ZZX,*ZZY;   int xx,yy;   if((zoomx>=63)&&(zoomy>=63)){      Draw64x64_Mapped_FlipXY(SPR,x,y,cmap);   }   else{   ZZX=ZOOM64R+(zoomx<<6);   ZZY=ZOOM64R+(zoomy<<6);   BIT=GameBitmap->line[y]+x;   for(yy=0;yy<=zoomy;yy++){      SSS=SPR+(ZZY[yy]<<6);      for(xx=0;xx<=zoomx;xx++){         BIT[xx]=cmap[SSS[ZZX[xx]]];      }      BIT+=GameBitmap->w;   }   }}/********************************************************************/

⌨️ 快捷键说明

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