📄 robokid.c
字号:
0x0000+0x0000+0x0100+0x0000, // 0x40 0x0800+0x0000+0x0100+0x0000, // 0x50 0x0000+0x0400+0x0100+0x0000, // 0x60 0x0800+0x0400+0x0100+0x0000, // 0x70 0x0000+0x0000+0x0000+0x0200, // 0x80 0x0800+0x0000+0x0000+0x0200, // 0x90 0x0000+0x0400+0x0000+0x0200, // 0xA0 0x0800+0x0400+0x0000+0x0200, // 0xB0 0x0000+0x0000+0x0100+0x0200, // 0xC0 0x0800+0x0000+0x0100+0x0200, // 0xD0 0x0000+0x0400+0x0100+0x0200, // 0xE0 0x0800+0x0400+0x0100+0x0200, // 0xF0};void DrawRoboKid(void){ int zz,zzz,zzzz,x16,y16,x,y,ta; int xx,yy,rr; UINT8 *map; ClearPaletteMap(); // BG0 // --- if(RAM_BG0!=NULL){ zzz=(ReadWord(&SCR_BG0[0])); zzzz =((zzz&0x00F0)>>4)<<1; // X Offset (16-255) zzzz+=((zzz&0x0100)>>4)<<6; // X Offset (256-511) x16=zzz&15; // X Offset (0-15) zzz=(ReadWord(&SCR_BG0[2])+32); zzzz+=((zzz&0x01F0)>>4)<<5; // Y Offset (16-511) y16=zzz&15; // Y Offset (0-15) zzzz=zzzz&0x7FF; zz=zzzz; for(y=(32-y16);y<(192+32);y+=16){ for(x=(32-x16);x<(256+32);x+=16){ ta = RAM_BG0[zz+0] | bg_map[RAM_BG0[zz+1]>>4]; MAP_PALETTE_MAPPED_NEW( (RAM_BG0[zz+1]&0x0F)|mask_bg0, 16, map ); Draw16x16_Mapped_Rot(&GFX_BG0[ta<<8], x, y, map); zz+=2; if((zz&0x1F)==0){zz+=0x3E0;zz&=0x7FF;} } zzzz+=0x20; if((zzzz&0x3E0)==0){zzzz-=0x400;} zzzz&=0x7FF; zz=zzzz; } } // BG1 // --- if(RAM_BG1!=NULL){ zzz=(ReadWord(&SCR_BG1[0])); zzzz =((zzz&0x00F0)>>4)<<1; // X Offset (16-255) zzzz+=((zzz&0x0100)>>4)<<6; // X Offset (256-511) x16=zzz&15; // X Offset (0-15) zzz=(ReadWord(&SCR_BG1[2])+32); zzzz+=((zzz&0x01F0)>>4)<<5; // Y Offset (16-511) y16=zzz&15; // Y Offset (0-15) zzzz=zzzz&0x7FF; zz=zzzz; for(y=(32-y16);y<(192+32);y+=16){ for(x=(32-x16);x<(256+32);x+=16){ ta = RAM_BG1[zz+0] | bg_map[RAM_BG1[zz+1]>>4]; if(BG1_Mask[ta]!=0){ // No pixels; skip MAP_PALETTE_MAPPED_NEW( (RAM_BG1[zz+1]&0x0F)|mask_bg1, 16, map ); if(BG1_Mask[ta]==1){ // Some pixels; trans Draw16x16_Trans_Mapped_Rot(&GFX_BG1[ta<<8], x, y, map); } else{ // all pixels; solid Draw16x16_Mapped_Rot(&GFX_BG1[ta<<8], x, y, map); } } zz+=2; if((zz&0x1F)==0){zz+=0x3E0;zz&=0x7FF;} } zzzz+=0x20; if((zzzz&0x3E0)==0){zzzz-=0x400;} zzzz&=0x7FF; zz=zzzz; } } // BG2 // --- if(RAM_BG2!=NULL){ zzz=(ReadWord(&SCR_BG2[0])); zzzz =((zzz&0x00F0)>>4)<<1; // X Offset (16-255) zzzz+=((zzz&0x0100)>>4)<<6; // X Offset (256-511) x16=zzz&15; // X Offset (0-15) zzz=(ReadWord(&SCR_BG2[2])+32); zzzz+=((zzz&0x01F0)>>4)<<5; // Y Offset (16-511) y16=zzz&15; // Y Offset (0-15) zzzz=zzzz&0x7FF; zz=zzzz; for(y=(32-y16);y<(192+32);y+=16){ for(x=(32-x16);x<(256+32);x+=16){ ta = RAM_BG2[zz+0] | bg_map[RAM_BG2[zz+1]>>4]; if(BG2_Mask[ta]!=0){ // No pixels; skip MAP_PALETTE_MAPPED_NEW( (RAM_BG2[zz+1]&0x0F)|mask_bg2, 16, map ); if(BG2_Mask[ta]==1){ // Some pixels; trans Draw16x16_Trans_Mapped_Rot(&GFX_BG2[ta<<8], x, y, map); } else{ // all pixels; solid Draw16x16_Mapped_Rot(&GFX_BG2[ta<<8], x, y, map); } } zz+=2; if((zz&0x1F)==0){zz+=0x3E0;zz&=0x7FF;} } zzzz+=0x20; if((zzzz&0x3E0)==0){zzzz-=0x400;} zzzz&=0x7FF; zz=zzzz; } } // OBJECT // ------ for(zz=0x0000;zz<0x0600;zz+=16){ if((RAM_SPR[zz+0x0D]&2)!=0){ x = (32 + RAM_SPR[zz+0x0C] + ((RAM_SPR[zz+0x0D]<<8)&0x0100))&0x1FF; y = ( 0 + RAM_SPR[zz+0x0B])&0x0FF; ta = RAM_SPR[zz+0x0E] | ((RAM_SPR[zz+0x0D]<<2)&0x0300) | ((RAM_SPR[zz+0x0D]<<7)&0x0400); MAP_PALETTE_MAPPED_NEW( (RAM_SPR[zz+0x0F]&0x0F)|mask_spr, 16, map ); if((RAM_SPR[zz+0x0D]&4)!=0){ switch(RAM_SPR[zz+0x0D]&0x30){ case 0x00: yy=2; rr=y; do{ xx=2; do{ if((x>16)&&(y>16)&&(x<256+32)&&(y<192+32)){ if(SPR_Mask[ta]!=0){ // No pixels; skip if(SPR_Mask[ta]==1) Draw16x16_Trans_Mapped_Rot(&GFX_SPR[ta<<8], x, y, map); else Draw16x16_Mapped_Rot( &GFX_SPR[ta<<8], x, y, map); } } ta++; y=(y+16)&0xFF; }while(--xx); x=(x+16)&0x1FF; y=rr; }while(--yy); break; case 0x10: x+=16; yy=2; rr=y; do{ xx=2; do{ if((x>16)&&(y>16)&&(x<256+32)&&(y<192+32)){ if(SPR_Mask[ta]!=0){ // No pixels; skip if(SPR_Mask[ta]==1) Draw16x16_Trans_Mapped_FlipY_Rot(&GFX_SPR[ta<<8], x, y, map); else Draw16x16_Mapped_FlipY_Rot( &GFX_SPR[ta<<8], x, y, map); } } ta++; y=(y+16)&0xFF; }while(--xx); x=(x-16)&0x1FF; y=rr; }while(--yy); break; case 0x20: y+=16; yy=2; rr=y; do{ xx=2; do{ if((x>16)&&(y>16)&&(x<256+32)&&(y<192+32)){ if(SPR_Mask[ta]!=0){ // No pixels; skip if(SPR_Mask[ta]==1) Draw16x16_Trans_Mapped_FlipX_Rot(&GFX_SPR[ta<<8], x, y, map); else Draw16x16_Mapped_FlipX_Rot( &GFX_SPR[ta<<8], x, y, map); } } ta++; y=(y-16)&0xFF; }while(--xx); x=(x+16)&0x1FF; y=rr; }while(--yy); break; case 0x30: x+=16; y+=16; yy=2; rr=y; do{ xx=2; do{ if((x>16)&&(y>16)&&(x<256+32)&&(y<192+32)){ if(SPR_Mask[ta]!=0){ // No pixels; skip if(SPR_Mask[ta]==1) Draw16x16_Trans_Mapped_FlipXY_Rot(&GFX_SPR[ta<<8], x, y, map); else Draw16x16_Mapped_FlipXY_Rot( &GFX_SPR[ta<<8], x, y, map); } } ta++; y=(y-16)&0xFF; }while(--xx); x=(x-16)&0x1FF; y=rr; }while(--yy); break; } } else{ if((x>16)&&(y>16)&&(x<256+32)&&(y<192+32)){ if(SPR_Mask[ta]!=0){ // No pixels; skip if(SPR_Mask[ta]==1){ // Some pixels; trans switch(RAM_SPR[zz+0x0D]&0x30){ case 0x00: Draw16x16_Trans_Mapped_Rot(&GFX_SPR[ta<<8], x, y, map); break; case 0x10: Draw16x16_Trans_Mapped_FlipY_Rot(&GFX_SPR[ta<<8], x, y, map); break; case 0x20: Draw16x16_Trans_Mapped_FlipX_Rot(&GFX_SPR[ta<<8], x, y, map); break; case 0x30: Draw16x16_Trans_Mapped_FlipXY_Rot(&GFX_SPR[ta<<8], x, y, map); break; } } else{ // all pixels; solid switch(RAM_SPR[zz+0x0D]&0x30){ case 0x00: Draw16x16_Mapped_Rot(&GFX_SPR[ta<<8], x, y, map); break; case 0x10: Draw16x16_Mapped_FlipY_Rot(&GFX_SPR[ta<<8], x, y, map); break; case 0x20: Draw16x16_Mapped_FlipX_Rot(&GFX_SPR[ta<<8], x, y, map); break; case 0x30: Draw16x16_Mapped_FlipXY_Rot(&GFX_SPR[ta<<8], x, y, map); break; } } } } } } } // FG0 // --- MAKE_SCROLL_256x256_2_8( 0, 32 ); START_SCROLL_256x256_2_8(32,32,256,192); ta = RAM_FG0[0+zz] | ((RAM_FG0[1+zz]<<2)&0x0300); if(FG0_Mask[ta]!=0){ // No pixels; skip MAP_PALETTE_MAPPED_NEW( (RAM_FG0[1+zz]&0x0F)|mask_fg0, 16, map ); if(FG0_Mask[ta]==1){ // Some pixels; trans switch(RAM_FG0[1+zz]&0x30){ case 0x00: Draw8x8_Trans_Mapped_Rot(&GFX_FG0[ta<<6], x, y, map); break; case 0x10: Draw8x8_Trans_Mapped_FlipY_Rot(&GFX_FG0[ta<<6], x, y, map); break; case 0x20: Draw8x8_Trans_Mapped_FlipX_Rot(&GFX_FG0[ta<<6], x, y, map); break; case 0x30: Draw8x8_Trans_Mapped_FlipXY_Rot(&GFX_FG0[ta<<6], x, y, map); break; } } else{ // all pixels; solid switch(RAM_FG0[1+zz]&0x30){ case 0x00: Draw8x8_Mapped_Rot(&GFX_FG0[ta<<6], x, y, map); break; case 0x10: Draw8x8_Mapped_FlipY_Rot(&GFX_FG0[ta<<6], x, y, map); break; case 0x20: Draw8x8_Mapped_FlipX_Rot(&GFX_FG0[ta<<6], x, y, map); break; case 0x30: Draw8x8_Mapped_FlipXY_Rot(&GFX_FG0[ta<<6], x, y, map); break; } } } END_SCROLL_256x256_2_8();}/*nnhv.????.nnnn.nnnn*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -