📄 tc006vcu.c
字号:
MAP_PALETTE_MAPPED_NEW( RAM_BG[zz]|pal_ofs, 16, map ); ta = ReadWord(&RAM_BG[zz+2]) & tile_mask; switch(RAM_BG[zz+1]&0xC0){ case 0x00: Draw16x16_64_Mapped_ZoomXY(&RAM_GFX[ta<<8],x,y,map,txx,tyy); break; case 0x40: Draw16x16_64_Mapped_ZoomXY_FlipY(&RAM_GFX[ta<<8],x,y,map,txx,tyy); break; case 0x80: Draw16x16_64_Mapped_ZoomXY_FlipX(&RAM_GFX[ta<<8],x,y,map,txx,tyy); break; case 0xC0: Draw16x16_64_Mapped_ZoomXY_FlipXY(&RAM_GFX[ta<<8],x,y,map,txx,tyy); break; } zz=(zz&0xF80)|((zz+4)&0x7F); } zz = zzzz = (zzzz+0x80)&0xFFF; } } } else{ zoom = RAM_SCR[0x10]; zoom_2 = RAM_SCR[0x11]; if((zoom<=0x7F)){ MAKE_SCROLL_512x512_4_16( scr_x - (ReadWord(&RAM_SCR[0])), scr_y + (ReadWord(&RAM_SCR[8])) ); START_SCROLL_512x512_4_16(bmp_x,bmp_y,bmp_w,bmp_h); ta = ReadWord(&RAM_BG[zz+2]) & tile_mask; if(RAM_MSK[ta]!=0){ // No pixels; skip MAP_PALETTE_MAPPED_NEW( RAM_BG[zz]|pal_ofs, 16, map ); if(RAM_MSK[ta]==1){ // Some pixels; trans switch(RAM_BG[zz+1]&0xC0){ case 0x00: Draw16x16_Trans_Mapped_Rot(&RAM_GFX[ta<<8],x,y,map); break; case 0x40: Draw16x16_Trans_Mapped_FlipY_Rot(&RAM_GFX[ta<<8],x,y,map); break; case 0x80: Draw16x16_Trans_Mapped_FlipX_Rot(&RAM_GFX[ta<<8],x,y,map); break; case 0xC0: Draw16x16_Trans_Mapped_FlipXY_Rot(&RAM_GFX[ta<<8],x,y,map); break; } } else{ // all pixels; solid switch(RAM_BG[zz+1]&0xC0){ case 0x00: Draw16x16_Mapped_Rot(&RAM_GFX[ta<<8],x,y,map); break; case 0x40: Draw16x16_Mapped_FlipY_Rot(&RAM_GFX[ta<<8],x,y,map); break; case 0x80: Draw16x16_Mapped_FlipX_Rot(&RAM_GFX[ta<<8],x,y,map); break; case 0xC0: Draw16x16_Mapped_FlipXY_Rot(&RAM_GFX[ta<<8],x,y,map); break; } } } END_SCROLL_512x512_4_16(); } else{ z_data_x = &z_step[(zoom-0x80)<<5]; z_data_y = &z_step[(zoom-0x80)<<5]; tx=0; ty=0; zzz = scr_x - (ReadWord(&RAM_SCR[0])); zzzz=(zzz&0x1F0)>>2; x16=zzz&15; zzz = scr_y + (ReadWord(&RAM_SCR[8])); zzzz|=(zzz&0x1F0)<<3; y16=zzz&15; //x16 = (x16 * z_data_x[tx])/16; //y16 = (y16 * z_data_y[ty])/16; x16 = (x16 * (zoom-0x40))/0x40; y16 = (y16 * (zoom-0x40))/0x40; zz=zzzz; for(y=(48-y16);y<(224+48);y+=tyy){ tyy = z_data_y[ty]; ty = (ty+1)&3; for(x=(48-x16);x<(320+48);x+=txx){ txx = z_data_x[tx]; tx = (tx+1)&3; ta = ReadWord(&RAM_BG[zz+2]) & tile_mask; if(RAM_MSK[ta]!=0){ // No pixels; skip MAP_PALETTE_MAPPED_NEW( RAM_BG[zz]|pal_ofs, 16, map ); if(RAM_MSK[ta]==1){ // Some pixels; trans switch(RAM_BG[zz+1]&0xC0){ case 0x00: Draw16x16_64_Trans_Mapped_ZoomXY_Rot(&RAM_GFX[ta<<8],x,y,map,txx,tyy); break; case 0x40: Draw16x16_64_Trans_Mapped_ZoomXY_FlipY_Rot(&RAM_GFX[ta<<8],x,y,map,txx,tyy); break; case 0x80: Draw16x16_64_Trans_Mapped_ZoomXY_FlipX_Rot(&RAM_GFX[ta<<8],x,y,map,txx,tyy); break; case 0xC0: Draw16x16_64_Trans_Mapped_ZoomXY_FlipXY_Rot(&RAM_GFX[ta<<8],x,y,map,txx,tyy); break; } } else{ // all pixels; solid switch(RAM_BG[zz+1]&0xC0){ case 0x00: Draw16x16_64_Mapped_ZoomXY_Rot(&RAM_GFX[ta<<8],x,y,map,txx,tyy); break; case 0x40: Draw16x16_64_Mapped_ZoomXY_FlipY_Rot(&RAM_GFX[ta<<8],x,y,map,txx,tyy); break; case 0x80: Draw16x16_64_Mapped_ZoomXY_FlipX_Rot(&RAM_GFX[ta<<8],x,y,map,txx,tyy); break; case 0xC0: Draw16x16_64_Mapped_ZoomXY_FlipXY_Rot(&RAM_GFX[ta<<8],x,y,map,txx,tyy); break; } } } zz=(zz&0xF80)|((zz+4)&0x7F); } zz = zzzz = (zzzz+0x80)&0xFFF; } } } tc0006vcu_layer_count ++;}void tc0006vcu_render_layer_1024(int layer){ int zoom,zoom_2,tx,ty,txx,tyy; UINT8 *z_data_x,*z_data_y; int x,y,x16,y16,zzzz,zzz,zz,ta; UINT8 *map; UINT8 *RAM_BG; UINT8 *RAM_SCR; UINT8 *RAM_GFX; UINT8 *RAM_MSK; mapper_direct *pal_map; UINT32 bmp_x,bmp_y,bmp_w,bmp_h; UINT32 scr_x, scr_y, pal_ofs, tile_mask; if(!check_layer_enabled(layer_id_data[layer])) return; RAM_BG = tc0006vcu.RAM + (layer * 0x2000); RAM_SCR = tc0006vcu.RAM_SCR + (layer * 0x0002); RAM_GFX = tc0006vcu.GFX_BG; RAM_MSK = tc0006vcu.GFX_BG_MASK; pal_map = tc0006vcu.mapper; pal_ofs = tc0006vcu.pal_ofs; tile_mask = tc0006vcu.tile_mask; bmp_x = tc0006vcu.bmp_x; bmp_y = tc0006vcu.bmp_y; bmp_w = tc0006vcu.bmp_w; bmp_h = tc0006vcu.bmp_h; scr_x = tc0006vcu.scr_x[layer]; scr_y = tc0006vcu.scr_y[layer]; if(tc0006vcu_layer_count == 0){ zoom = RAM_SCR[0x10]; zoom_2 = RAM_SCR[0x11]; if((zoom<=0x7F)){ MAKE_SCROLL_1024x512_4_16( scr_x - (ReadWord(&RAM_SCR[0])), scr_y + (ReadWord(&RAM_SCR[8])) ); START_SCROLL_1024x512_4_16(bmp_x,bmp_y,bmp_w,bmp_h); MAP_PALETTE_MAPPED_NEW( (RAM_BG[zz]|pal_ofs), 16, map ); ta = ReadWord(&RAM_BG[zz+2]) & tile_mask; switch(RAM_BG[zz+1]&0xC0){ case 0x00: Draw16x16_Mapped_Rot(&RAM_GFX[ta<<8],x,y,map); break; case 0x40: Draw16x16_Mapped_FlipY_Rot(&RAM_GFX[ta<<8],x,y,map); break; case 0x80: Draw16x16_Mapped_FlipX_Rot(&RAM_GFX[ta<<8],x,y,map); break; case 0xC0: Draw16x16_Mapped_FlipXY_Rot(&RAM_GFX[ta<<8],x,y,map); break; } END_SCROLL_1024x512_4_16(); } else{ z_data_x = &z_step[(zoom-0x80)<<5]; z_data_y = &z_step[(zoom-0x80)<<5]; tx=0; ty=0; zzz = scr_x - (ReadWord(&RAM_SCR[0])); zzzz=(zzz&0x3F0)>>2; x16=zzz&15; zzz = scr_y + (ReadWord(&RAM_SCR[8])); zzzz|=(zzz&0x1F0)<<4; y16=zzz&15; x16 = (x16 * z_data_x[tx])/16; y16 = (y16 * z_data_y[ty])/16; zz=zzzz; for(y=(48-y16);y<(224+48);y+=tyy){ tyy = z_data_y[ty]; ty = (ty+1)&3; for(x=(48-x16);x<(320+48);x+=txx){ txx = z_data_x[tx]; tx = (tx+1)&3; MAP_PALETTE_MAPPED_NEW( RAM_BG[zz]|pal_ofs, 16, map ); ta = ReadWord(&RAM_BG[zz+2]) & tile_mask; switch(RAM_BG[zz+1]&0xC0){ case 0x00: Draw16x16_64_Mapped_ZoomXY(&RAM_GFX[ta<<8],x,y,map,txx,tyy); break; case 0x40: Draw16x16_64_Mapped_ZoomXY_FlipY(&RAM_GFX[ta<<8],x,y,map,txx,tyy); break; case 0x80: Draw16x16_64_Mapped_ZoomXY_FlipX(&RAM_GFX[ta<<8],x,y,map,txx,tyy); break; case 0xC0: Draw16x16_64_Mapped_ZoomXY_FlipXY(&RAM_GFX[ta<<8],x,y,map,txx,tyy); break; } zz=(zz&0x1F00)|((zz+4)&0xFF); } zz = zzzz = (zzzz+0x100)&0x1FFF; } } } else{ zoom = RAM_SCR[0x10]; zoom_2 = RAM_SCR[0x11]; if((zoom<=0x7F)){ MAKE_SCROLL_1024x512_4_16( scr_x - (ReadWord(&RAM_SCR[0])), scr_y + (ReadWord(&RAM_SCR[8])) ); START_SCROLL_1024x512_4_16(bmp_x,bmp_y,bmp_w,bmp_h); ta = ReadWord(&RAM_BG[zz+2]) & tile_mask; if(RAM_MSK[ta]!=0){ // No pixels; skip MAP_PALETTE_MAPPED_NEW( RAM_BG[zz]|pal_ofs, 16, map ); if(RAM_MSK[ta]==1){ // Some pixels; trans switch(RAM_BG[zz+1]&0xC0){ case 0x00: Draw16x16_Trans_Mapped_Rot(&RAM_GFX[ta<<8],x,y,map); break; case 0x40: Draw16x16_Trans_Mapped_FlipY_Rot(&RAM_GFX[ta<<8],x,y,map); break; case 0x80: Draw16x16_Trans_Mapped_FlipX_Rot(&RAM_GFX[ta<<8],x,y,map); break; case 0xC0: Draw16x16_Trans_Mapped_FlipXY_Rot(&RAM_GFX[ta<<8],x,y,map); break; } } else{ // all pixels; solid switch(RAM_BG[zz+1]&0xC0){ case 0x00: Draw16x16_Mapped_Rot(&RAM_GFX[ta<<8],x,y,map); break; case 0x40: Draw16x16_Mapped_FlipY_Rot(&RAM_GFX[ta<<8],x,y,map); break; case 0x80: Draw16x16_Mapped_FlipX_Rot(&RAM_GFX[ta<<8],x,y,map); break; case 0xC0: Draw16x16_Mapped_FlipXY_Rot(&RAM_GFX[ta<<8],x,y,map); break; } } } END_SCROLL_1024x512_4_16(); } else{ z_data_x = &z_step[(zoom-0x80)<<5]; z_data_y = &z_step[(zoom-0x80)<<5]; tx=0; ty=0; zzz = scr_x - (ReadWord(&RAM_SCR[0])); zzzz=(zzz&0x3F0)>>2; x16=zzz&15; zzz = scr_y + (ReadWord(&RAM_SCR[8])); zzzz|=(zzz&0x1F0)<<4; y16=zzz&15; //x16 = (x16 * z_data_x[tx])/16; //y16 = (y16 * z_data_y[ty])/16; x16 = (x16 * (zoom-0x40))/0x40; y16 = (y16 * (zoom-0x40))/0x40; zz=zzzz; for(y=(48-y16);y<(224+48);y+=tyy){ tyy = z_data_y[ty]; ty = (ty+1)&3; for(x=(48-x16);x<(320+48);x+=txx){ txx = z_data_x[tx]; tx = (tx+1)&3; ta = ReadWord(&RAM_BG[zz+2]) & tile_mask; if(RAM_MSK[ta]!=0){ // No pixels; skip MAP_PALETTE_MAPPED_NEW( RAM_BG[zz]|pal_ofs, 16, map ); if(RAM_MSK[ta]==1){ // Some pixels; trans switch(RAM_BG[zz+1]&0xC0){ case 0x00: Draw16x16_64_Trans_Mapped_ZoomXY(&RAM_GFX[ta<<8],x,y,map,txx,tyy); break; case 0x40: Draw16x16_64_Trans_Mapped_ZoomXY_FlipY(&RAM_GFX[ta<<8],x,y,map,txx,tyy); break; case 0x80: Draw16x16_64_Trans_Mapped_ZoomXY_FlipX(&RAM_GFX[ta<<8],x,y,map,txx,tyy); break; case 0xC0: Draw16x16_64_Trans_Mapped_ZoomXY_FlipXY(&RAM_GFX[ta<<8],x,y,map,txx,tyy); break; } } else{ // all pixels; solid switch(RAM_BG[zz+1]&0xC0){ case 0x00: Draw16x16_64_Mapped_ZoomXY(&RAM_GFX[ta<<8],x,y,map,txx,tyy); break; case 0x40: Draw16x16_64_Mapped_ZoomXY_FlipY(&RAM_GFX[ta<<8],x,y,map,txx,tyy); break; case 0x80: Draw16x16_64_Mapped_ZoomXY_FlipX(&RAM_GFX[ta<<8],x,y,map,txx,tyy); break; case 0xC0: Draw16x16_64_Mapped_ZoomXY_FlipXY(&RAM_GFX[ta<<8],x,y,map,txx,tyy); break; } } } zz=(zz&0x1F00)|((zz+4)&0xFF); } zz = zzzz = (zzzz+0x100)&0x1FFF; } } } tc0006vcu_layer_count ++;}void tc0006vcu_render_fg0(void){ int x,y,x16,y16,zzzz,zzz,zz,ta; UINT8 *map; UINT8 *RAM_BG; UINT8 *RAM_SCR; UINT8 *RAM_GFX; UINT8 *RAM_MSK; mapper_direct *pal_map; UINT32 bmp_x,bmp_y,bmp_w,bmp_h; UINT32 scr_x,scr_y, pal_ofs; if(!check_layer_enabled(layer_id_data[4])) return; tc0006vcu_update_gfx_fg0(); RAM_BG = tc0006vcu.RAM + 0x0C000; RAM_SCR = tc0006vcu.RAM_SCR + 0x00018; RAM_GFX = tc0006vcu.GFX_FG; RAM_MSK = tc0006vcu.GFX_FG_MASK; pal_map = tc0006vcu.mapper; pal_ofs = tc0006vcu.pal_ofs; bmp_x = tc0006vcu.bmp_x; bmp_y = tc0006vcu.bmp_y; bmp_w = tc0006vcu.bmp_w; bmp_h = tc0006vcu.bmp_h; scr_x = tc0006vcu.scr_x[4]; scr_y = tc0006vcu.scr_y[4]; MAKE_SCROLL_512x512_2_8( scr_x - (ReadWord(&RAM_SCR[0])), scr_y - (ReadWord(&RAM_SCR[2])) ); START_SCROLL_512x512_2_8(bmp_x,bmp_y,bmp_w,bmp_h); ta=RAM_BG[zz]; if(RAM_MSK[ta]!=0){ // No pixels; skip MAP_PALETTE_MAPPED_NEW( ((RAM_BG[1+zz]&0x3F)|pal_ofs), 16, map ); if(RAM_MSK[ta]==1){ // Some pixels; trans switch(RAM_BG[1+zz]&0xC0){ case 0x00: Draw8x8_Trans_Mapped_Rot(&RAM_GFX[ta<<6],x,y,map); break; case 0x40: Draw8x8_Trans_Mapped_FlipY_Rot(&RAM_GFX[ta<<6],x,y,map); break; case 0x80: Draw8x8_Trans_Mapped_FlipX_Rot(&RAM_GFX[ta<<6],x,y,map); break; case 0xC0: Draw8x8_Trans_Mapped_FlipXY_Rot(&RAM_GFX[ta<<6],x,y,map); break; } } else{ // all pixels; solid switch(RAM_BG[1+zz]&0xC0){ case 0x00: Draw8x8_Mapped_Rot(&RAM_GFX[ta<<6],x,y,map); break; case 0x40: Draw8x8_Mapped_FlipY_Rot(&RAM_GFX[ta<<6],x,y,map); break; case 0x80: Draw8x8_Mapped_FlipX_Rot(&RAM_GFX[ta<<6],x,y,map); break; case 0xC0: Draw8x8_Mapped_FlipXY_Rot(&RAM_GFX[ta<<6],x,y,map); break; } } } END_SCROLL_512x512_2_8(); tc0006vcu_layer_count ++;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -