Exemple #1
0
void renderDotsWithColor(int val, int x, int y, u8 bits, u32 color) {
	switch (val) {
	case 3:
		renderb(x, y, 0, 0, bits, color);
		return;
	case 5:
		renderb(x + 8, y, 8, 0, bits, color);
		return;
	case 7:
		renderbc(x, y, 0, 0, 16, 8, bits, color);
		return;
	case 10:
		renderb(x, y + 8, 0, 8, bits, color);
		return;
	case 11:
		renderbc(x, y, 0, 0, 8, 16, bits, color);
		return;
	case 12:
		renderb(x + 8, y + 8, 8, 8, bits, color);
		return;
	case 13:
		renderbc(x + 8, y, 8, 0, 8, 16, bits, color);
		return;
	case 14:
		renderbc(x, y + 8, 0, 8, 16, 8, bits, color);
		return;
	case 15:
		render16b(x, y, 0, 0, bits, color);
		return;
	}
}
Exemple #2
0
void renderMenu(int menu,int xscr,int yscr){
    int i = 0;
    switch(menu){
        case MENU_LOADGAME:
		sf2d_start_frame(GFX_TOP, GFX_LEFT);
        if(!enteringName){ // World select
            offsetX = 0;offsetY = (currentSelection * 32) - 48;
            drawText("Select a file",122,-16);
            for(i = 0; i < worldFileCount + 1; ++i){
                int color = 0x201092FF;
                char * text = fileNames[i];
                if(i == worldFileCount){
                    text = "Generate New World";
                    color = 0x109220FF;
                }
                if(i != currentSelection) color &= 0x7F7F7FFF; // Darken color.
                else {
                    if(areYouSure)color = 0xDF1010FF;
                }
                
                char scoreText[24];
                sprintf(scoreText,"Score: %d",fileScore[i]);
                
                renderFrame(1,i*4,24,(i*4)+4,color);
                if(i != worldFileCount){
                    drawText(text,(400-(strlen(text)*12))/2,i*64+12);
                    drawText(scoreText,(400-(strlen(scoreText)*12))/2,i*64+32);
                } else {
                    drawText(text,(400-(strlen(text)*12))/2,i*64+24);
                }
                if(fileWin[i] && i != worldFileCount) render16(18,i*32+8,24,208,0); // Render crown
            }
            offsetX = 0;offsetY = 0;
        } else { // Enter new world name.
            drawText("Enter a name",128,16);
            drawText(fileNames[worldFileCount],(400-(strlen(fileNames[worldFileCount])*12))/2, 48);
            
            if(errorFileName > 0){
                switch(errorFileName){// Error: Filename cannot already exist.
                    case 1: drawTextColor("ERROR: Length cannot be 0!",(400-26*12)/2,200,0xAF1010FF); break;    
                    case 2: drawTextColor("ERROR: You need Letters/Numbers!",(400-32*12)/2,200,0xAF1010FF); break;    
                    case 3: drawTextColor("ERROR: Filename already exists!",(400-31*12)/2,200,0xAF1010FF); break;    
                }    
            }
        }
		sf2d_end_frame();
		sf2d_start_frame(GFX_BOTTOM, GFX_LEFT);
        if(!enteringName){ // World select
            if(!areYouSure){
                drawTextColor("Load World",100,12,0xFFFF3FFF);
                drawText("Press   or   to scroll", 28, 50);
                renderButtonIcon(k_up.input & -k_up.input, 98, 48, 1);
                renderButtonIcon(k_down.input & -k_down.input, 160, 48, 1);
                drawText("Press   to load world", (320-21*12)/2, 100);
                renderButtonIcon(k_accept.input & -k_accept.input, 104, 98, 1);
                drawText("Press   to return", 58, 150);
                renderButtonIcon(k_decline.input & -k_decline.input, 128, 148, 1);
                if(currentSelection != worldFileCount){
                    drawText("Press   to delete",(320-17*12)/2, 200);
                    renderButtonIcon(k_delete.input & -k_delete.input, 128, 198, 1);
                }
            } else {
                drawTextColor("Delete File?",88,12,0xFF3F3FFF);
                drawText("Press   to confirm", (320-18*12)/2, 100);
                renderButtonIcon(k_accept.input & -k_accept.input, 122, 98, 1);
                drawText("Press   to return", 58, 150);
                renderButtonIcon(k_decline.input & -k_decline.input, 128, 148, 1);
            }
            
        } else { // Draw the "keyboard"
            drawTextColor("Touch the keypad below",(320-22*12)/2,12,0xFFFF33FF);
            
            sf2d_draw_rectangle(0, 50, 320, 110, 0xBF7F7FFF);
            drawSizedText(guiText0,4, 60, 2);
            drawSizedText(guiText1,4, 80, 2);
            drawSizedText(guiText2,12, 100, 2);
            drawSizedText(guiText3,28, 120, 2);
            drawSizedText(guiText4,12, 140, 2);
            
            if(touchDelay > 0){
                sf2d_draw_rectangle(touchX, touchY, touchW, touchH, 0xAF);
            }
            
            drawText("Press   to confirm", (320-18*12)/2, 180);
            renderButtonIcon(k_accept.input & -k_accept.input, 122, 178, 1);
            drawText("Press   to return", 58, 210);
            renderButtonIcon(k_decline.input & -k_decline.input, 128, 208, 1);
        }
            
		sf2d_end_frame();
        break;
        case MENU_SETTINGS:
		    sf2d_start_frame(GFX_TOP, GFX_LEFT);
		        drawTextColor("Rebind Buttons",116,12,0xAFAF00FF);
                drawText("Button",16,32);
                drawText("Game",140,32);
                drawText("Menus",280,32);
		    
                char gameButText[34];
                char menuButText[34];
                    
                for(i = 0; i < 5; ++i){
                    if((currentSelection-2) + i > 21 || (currentSelection-2) + i < 0) continue;
                    renderButtonIcon(keys[(currentSelection-2) + i], 16, (i * 18) + 30, 2);
                    int ccol = 0x7F7F7FFF;
                    
                    sprintf(gameButText,"%s",getButtonFunctionGame(keys[(currentSelection-2) + i]));
                    sprintf(menuButText,"%s",getButtonFunctionMenu(keys[(currentSelection-2) + i]));
                    
                    if(i == 2){ 
                        if(!selBut)ccol = 0xFFFFFFFF;
                        else{ 
                            ccol = 0x00FF00FF;
                            if(left)sprintf(gameButText,"<%s>",getButtonFunctionGame(keys[(currentSelection-2) + i]));
                            else sprintf(menuButText,"<%s>",getButtonFunctionMenu(keys[(currentSelection-2) + i]));
                        }
                    }
                    if(left){
                        drawTextColor(gameButText, 112, (i * 33) + 80, ccol);
                        drawTextColor(menuButText, 280, (i * 33) + 80, 0x7F7F7FFF);
                    } else {
                        drawTextColor(gameButText, 112, (i * 33) + 80, 0x7F7F7FFF);
                        drawTextColor(menuButText, 280, (i * 33) + 80, ccol);
                    }
                }
                if(bindOpt){
                    renderFrame(1,1,24,14,0x1010BFFF);
                    drawTextColor("Save changes?",122,32,0xAFAF00FF);
                    for(i = 2; i >= 0; --i){
                        char* msg = keybOptions[i];
                        u32 color = 0x4F4F4FFF;
                        if(i == curSaveSel) color = 0xFFFFFFFF;
                        drawTextColor(msg,(400 - (strlen(msg) * 12))/2, (i * 24) + 92, color);    
                    }
                    drawText("Press   to return", 98, 190);
                    renderButtonIcon(k_decline.input & -k_decline.input, 168, 188, 1);
                    
                    if(errorBut >= 0 && errorBut < 9){
                        char errorText[30];
                        switch(errorBut){
                            case 0: sprintf(errorText, "Error: Missing 'Move up'"); break;
                            case 1: sprintf(errorText, "Error: Missing 'Move down'"); break;
                            case 2: sprintf(errorText, "Error: Missing 'Move right'"); break;
                            case 3: sprintf(errorText, "Error: Missing 'Move left'"); break;
                            case 4: sprintf(errorText, "Error: Missing 'Attack'"); break;
                            case 5: sprintf(errorText, "Error: Missing 'Toggle Menu'"); break;
                            case 6: sprintf(errorText, "Error: Missing 'Pause'"); break;
                            case 7: sprintf(errorText, "Error: Missing 'Accept'"); break;
                            case 8: sprintf(errorText, "Error: Missing 'Decline'"); break;
                            case 9: sprintf(errorText, "Error: Missing 'Delete'"); break;
                        }
                        drawTextColor(errorText,(400 - (strlen(errorText) * 12))/2,50,0xFF0000FF);
                    }
                    
                }
		    sf2d_end_frame();
		    sf2d_start_frame(GFX_BOTTOM, GFX_LEFT);	
		    if(!selBut){
                drawText("Press   to select", 58, 80);
                renderButtonIcon(k_accept.input & -k_accept.input, 128, 78, 1);
                drawText("Press   to return", 58, 130);
                renderButtonIcon(k_decline.input & -k_decline.input, 128, 128, 1);
            } else {
                drawText("Press   or   to scroll", 28, 50);
                renderButtonIcon(k_left.input & -k_left.input, 98, 48, 1);
                renderButtonIcon(k_right.input & -k_right.input, 160, 48, 1);
                drawText("Press   to unselect", 46, 100);
                renderButtonIcon(k_accept.input & -k_accept.input, 118, 98, 1);
                drawText("Press   to return", 58, 150);
                renderButtonIcon(k_decline.input & -k_decline.input, 128, 148, 1);
            }
		    sf2d_end_frame();
        break;
        
        case MENU_PAUSED:
		    sf2d_start_frame(GFX_TOP, GFX_LEFT);
                if(currentLevel == 0){ 
                    sf2d_draw_texture_part_scale(minimap[1],(-xscr/3)-256,(-yscr/3)-32,0,0,128,128,12.5,7.5);
                    sf2d_draw_rectangle(0,0,400,240, 0xDFDFDFAF);
                }
	            offsetX = xscr;offsetY = yscr;
		            renderMenuBackground(xscr,yscr);
	            offsetX = 0;offsetY = 0;
                renderFrame(1,1,24,14,0xAF1010FF);
                drawText("Paused",164,32);
                for(i = 2; i >= 0; --i){
                    char* msg = pOptions[i];
                    u32 color = 0x7F7F7FFF;
                    if(i == currentSelection) color = 0xFFFFFFFF;
                    drawTextColor(msg,(400 - (strlen(msg) * 12))/2, (i * 24) + 100, color);    
                }
                
                if(pauseSaveDisplayTimer > 0) drawTextColor("Game Saved!", (400-(11*12))/2, 64,0x20FF20FF);
                
                if(areYouSure || areYouSureSave){
                    if(areYouSure)renderFrame(6,5,19,10,0x8F1010FF);
                    else renderFrame(6,5,19,10,0x108F10FF);
                    
                    drawText("Are you sure?",122,96);
                    drawText("   Yes", 164, 117);
                    renderButtonIcon(k_accept.input & -k_accept.input, 166, 114, 1);
                    drawText("   No", 170, 133);
                    renderButtonIcon(k_decline.input & -k_decline.input, 166, 130, 1);
                }
                
		    sf2d_end_frame();
        break;  
        case MENU_WIN:
		    sf2d_start_frame(GFX_TOP, GFX_LEFT);
                if(currentLevel == 0){ 
                    sf2d_draw_texture_part_scale(minimap[1],(-xscr/3)-256,(-yscr/3)-32,0,0,128,128,12.5,7.5);
                    sf2d_draw_rectangle(0,0,400,240, 0xDFDFDFAF);
                }
	            offsetX = xscr;offsetY = yscr;
		            renderMenuBackground(xscr,yscr);
	            offsetX = 0;offsetY = 0;
                renderFrame(5,3,21,12,0x1010FFFF);
                if(!rev){ opacity+=5; if(opacity == 255) rev = true; }
                else { opacity-=5; if(opacity == 100) rev = false; }
                sprintf(scoreText,"Score: %d", player.p.score);
                drawTextColor("You Win!",158,76,0xAFAF0000 + opacity);
                drawText(scoreText, 200-((strlen(scoreText)-1)*6), 100);
                drawText("Press   to continue", 96, 150);
                renderButtonIcon(k_attack.input & -k_attack.input, 166, 148, 1);
                
                //printf("0x%08X",k_attack.input & -k_attack.input);
		    sf2d_end_frame();
        break;  
        case MENU_LOSE:
		    sf2d_start_frame(GFX_TOP, GFX_LEFT);
                if(currentLevel == 0){ 
                    sf2d_draw_texture_part_scale(minimap[1],(-xscr/3)-256,(-yscr/3)-32,0,0,128,128,12.5,7.5);
                    sf2d_draw_rectangle(0,0,400,240, 0xDFDFDFAF);
                }
	            offsetX = xscr;offsetY = yscr;
		            renderMenuBackground(xscr,yscr);
	            offsetX = 0;offsetY = 0;
                renderFrame(5,3,21,12,0x1010FFFF);
                if(!rev){ opacity+=5; if(opacity == 255) rev = true; }
                else { opacity-=5; if(opacity == 100) rev = false; }
                sprintf(scoreText,"Score: %d", player.p.score);
                drawTextColor("You DIED!",158,76,0xAF000000 + opacity);
                drawText(scoreText, 200-((strlen(scoreText)-1)*6), 100);
                drawText("Press   to continue", 96, 150);
                renderButtonIcon(k_attack.input & -k_attack.input, 166, 148, 1);
                //printf("0x%08X",k_attack.input & -k_attack.input);
		    sf2d_end_frame();
        break;  
        case MENU_INVENTORY:
		    sf2d_start_frame(GFX_TOP, GFX_LEFT);
                if(currentLevel == 0){ 
                    sf2d_draw_texture_part_scale(minimap[1],(-xscr/3)-256,(-yscr/3)-32,0,0,128,128,12.5,7.5);
                    sf2d_draw_rectangle(0,0,400,240, 0xDFDFDFAF);
                }
	            offsetX = xscr;offsetY = yscr;
		            renderMenuBackground(xscr,yscr);
	            offsetX = 0;offsetY = 0;
                renderFrame(1,1,24,14,0x1010FFFF);
                renderItemList(player.p.inv, 1,1,24,14, curInvSel);
		    sf2d_end_frame();
        break;  
        case MENU_CRAFTING:
		    sf2d_start_frame(GFX_TOP, GFX_LEFT);
                if(currentLevel == 0){ 
                    sf2d_draw_texture_part_scale(minimap[1],(-xscr/3)-256,(-yscr/3)-32,0,0,128,128,12.5,7.5);
                    sf2d_draw_rectangle(0,0,400,240, 0xDFDFDFAF);
                }
	            offsetX = xscr;offsetY = yscr;
		            renderMenuBackground(xscr,yscr);
	            offsetX = 0;offsetY = 0;
	            
                renderFrame(15,1,24,4,0x1010FFFF);
                renderFrame(15,5,24,14,0x1010FFFF);
                renderFrame(1,1,14,14,0x1010FFFF);
                renderRecipes(currentRecipes, 1, 1, 14, 14, curInvSel);
                
                Recipe* rec = &currentRecipes->recipes[curInvSel];
                renderItemIcon(rec->itemResult,rec->itemAmountLevel,128,16);
                char craftText[12];
                sprintf(craftText,"%d",countItemInv(rec->itemResult,rec->itemAmountLevel, player.p.inv));
                drawText(craftText,274,34);
                
                if(rec->numOfCosts > 0){
                    int i;
                    for(i = 0; i < rec->numOfCosts; i++){
                        int amnt = countItemInv(rec->costs[i].costItem,0, player.p.inv);
                        int ttlCst = rec->costs[i].costAmount;
                        int col = 0xFFFFFFFF; if(amnt<ttlCst) col = 0x7F7F7FFF;
                        renderItemIcon(rec->costs[i].costItem,1,128,48+(i*8));
                        sprintf(craftText,"%d/%d",amnt,ttlCst);
                        drawTextColor(craftText,274,96+(i*18),col);
                    }
                }
                
		    sf2d_end_frame();
        break;  
        
        case MENU_CONTAINER:
		    sf2d_start_frame(GFX_TOP, GFX_LEFT);
                if(currentLevel == 0){ 
                    sf2d_draw_texture_part_scale(minimap[1],(-xscr/3)-256,(-yscr/3)-32,0,0,128,128,12.5,7.5);
                    sf2d_draw_rectangle(0,0,400,240, 0xDFDFDFAF);
                }
	            offsetX = xscr;offsetY = yscr;
		            renderMenuBackground(xscr,yscr);
		        if (curChestEntity->entityFurniture.r == 1){ offsetX = 48;offsetY = 0;}
		        else {offsetX = 0;offsetY = 0;}
		        
		        renderFrame(1,1,14,14,0x1010FFFF);
		        renderItemList(curChestEntity->entityFurniture.inv,1,1,14,14,
                curChestEntity->entityFurniture.r == 0 ? curInvSel : -curChestEntity->entityFurniture.oSel - 1);
		        renderFrame(15,1,28,14,0x1010FFFF);
		        renderItemList(player.p.inv,15,1,28,14,
                curChestEntity->entityFurniture.r == 1 ? curInvSel : -curChestEntity->entityFurniture.oSel - 1);
		        offsetX = 0;offsetY = 0;
		    sf2d_end_frame();
        break;
        case MENU_ABOUT:
		    sf2d_start_frame(GFX_TOP, GFX_LEFT);
		        drawText("About Minicraft",110,12);
		        drawSizedText("Minicraft was made by Markus Persson for the",24,36,1.0);
		        drawSizedText("22'nd ludum dare competition in december 2011.",16,48,1.0);
		        drawSizedText("it is dedicated to my father. <3",72,60,1.0);
		        drawSizedText("- Markus \"Notch\" Persson",104,76,1.0);
		        
		        drawTextColor("3DS Homebrew Edition",74,120,0x00FF00FF);
		        drawSizedTextColor("This port was made by David Benepe (Davideesk)",16,144,1.0,0x00FF00FF);
		        drawSizedTextColor("just for fun in September/October 2015.",44,156,1.0,0x00FF00FF);
		        drawSizedTextColor("TY Notch for creating a fun game to remake!",28,180,1.0,0x00FF00FF);
		    sf2d_end_frame();
		    sf2d_start_frame(GFX_BOTTOM, GFX_LEFT);
		        drawTextColor("Special Thanks to:",52,12,0xFF7F7FFF);
		        drawTextColor("Smea",136,60,0xFF2020FF);
		        drawSizedTextColor("for ctrulib",116,80,1.0,0xFF2020FF);
		        drawTextColor("Xerpi",130,120,0x2020FFFF);
		        drawSizedTextColor("for sf2dlib",116,140,1.0,0x2020FFFF);
                drawText("Press   to return", 58, 220);
                renderButtonIcon(k_decline.input & -k_decline.input, 128, 218, 1);
		    sf2d_end_frame();
        break;
        case MENU_TITLE:
            /* Top Screen */
		    sf2d_start_frame(GFX_TOP, GFX_LEFT);
		        renderTitle(76,16);
		    
		        for(i = 4; i >= 0; --i){
                    char* msg = options[i];
                    u32 color = 0x7F7F7FFF;
                    if(i == currentSelection) color = 0xFFFFFFFF;
                    drawSizedTextColor(msg,(200 - (strlen(msg) * 8))/2, ((8 + i) * 20 - 50) >> 1,2.0, color);    
                }
		    
		        drawText(versionText,2,225);
		    sf2d_end_frame();
		    
            /* Bottom Screen */
		    sf2d_start_frame(GFX_BOTTOM, GFX_LEFT);	
		      int startX = 0, startY = 0;// relative coordinates ftw
		        switch(currentSelection){
                    case 0: // "Start Game"
                        startX = 20;startY = 50;
                        render16(startX,startY+12,0,128,0);//Player(Carrying)
                        render16(startX,startY,128,128,0);//Workbench
                        startX = 120;startY = 20;
                        render16b(startX,startY,16,96,0,0x001DC1FF);// water pit
                        render16b(startX+16,startY,32,96,0,0x001DC1FF);
                        render16b(startX,startY+16,48,96,0,0x001DC1FF);
                        render16b(startX+16,startY+16,64,96,0,0x001DC1FF);
                        renderc  (startX+8,startY+12,48,160,16,8,0);//Waves
                        renderc  (startX+8,startY+8,0,112,16,8,0);//Player (Top-Half)
                        startX = 110;startY = 76;
                        render16 (startX,startY,48,112,0);//Player
                        renderc  (startX+12,startY,40,160,8,16,0);//Slash
                        render   (startX+14,startY+4,152,144,0);//Pickaxe
                        render16b(startX+18,startY,80,0,0,0xDCC6AEFF);//Iron ore
                        startX = 40;startY = 90;
                        render16b (startX,startY,128,112,0,0xADFFADFF);//Slime
                        render16 (startX+18,startY,48,112,1);//Player (Mirrored)
                        renderc  (startX+14,startY,32,160,8,16,0);//Slash
                        render   (startX+12,startY+4,104,144,1);//Sword
                        startX = 64;startY = 40;
                        render16b(startX,startY,16,80,0,0x69B569FF);// grass pit
                        render16b(startX+16,startY,32,80,0,0x69B569FF);
                        render16b(startX,startY+16,48,80,0,0x69B569FF);
                        render16b(startX+16,startY+16,64,80,0,0x69B569FF);
                        render16 (startX+8,startY+4,0,16,0);//Tree
                        render   (startX+1,startY+14,80,152,0);// Apple
                        render16 (startX+9,startY+18,16,112,0);//Player
                        renderc  (startX+9,startY+14,16,160,16,8,0);//Slash
                        drawTextColor("Play minicraft",24,24,0xFFFF7FFF);
                    break;
                    case 1: // "How To Play"
                        startX = 72;startY = 54;
                        render16(startX,startY,96,208,0);//C-PAD
                        startX = 72;startY = 37;
                        render16(startX,startY-16,16,112,0);//Player
                        render16(startX,startY,112,208,0);//C-PAD up
                        startX = 72;startY = 71;
                        render16(startX,startY+16,0,112,0);//Player
                        render16(startX,startY,144,208,0);//C-PAD down
                        startX = 39;startY = 54;
                        render16(startX,startY,48,112,1);//Player
                        render16(startX+16,startY,128,208,0);//C-PAD left
                        startX = 89;startY = 54;
                        render16(startX+16,startY,48,112,0);//Player
                        render16(startX,startY,160,208,0);//C-PAD right
                        
                        drawTextColor("Learn the basics",64,24,0xFFFF7FFF);
                    break;
                    case 2: // "Settings"
                    break;
                    case 3: // "About"
                    break;
                }
		    sf2d_end_frame();
            break;
        
        
    }
    
}
Exemple #3
0
void renderRockDotsWithColor(int val, int x, int y, u32 color) {
	switch (val) {
	case 208:
		render16b(x, y, 0, 0, 0, color);
		return;
	case 16:
		renderb(x + 8, y + 8, 8, 8, 0, color);
		return;
	case 32:
		renderb(x, y + 8, 0, 8, 0, color);
		return;
	case 48:
		renderb(x, y + 8, 0, 8, 0, color);
		return;
	case 64:
		renderb(x, y, 0, 0, 0, color);
		return;
	case 80:
		renderbc(x, y, 0, 0, 8, 16, 0, color);
		return;
	case 96:
		renderbc(x + 8, y, 8, 0, 8, 16, 0, color);
		return;
	case 112:
		renderbc(x, y + 8, 0, 8, 16, 8, 0, color);
		return;
	case 128:
		renderbc(x, y, 0, 0, 16, 8, 0, color);
		return;
	case 144:
		renderb(x, y + 8, 0, 8, 0, color);
		renderbc(x + 8, y, 8, 0, 8, 16, 0, color);
		return;
	case 160:
		renderb(x, y, 0, 0, 0, color);
		renderbc(x + 8, y, 8, 0, 8, 16, 0, color);
		return;
	case 176:
		renderb(x + 8, y, 8, 0, 0, color);
		renderbc(x, y, 0, 0, 8, 16, 0, color);
		return;
	case 192:
		renderb(x + 8, y + 8, 8, 8, 0, color);
		renderbc(x, y, 0, 0, 8, 16, 0, color);
		return;
	case 4112:
		renderbc(x, y, 0, 0, 8, 16, 0, color);
		return;
	case 4128:
		renderbc(x, y + 8, 0, 8, 8, 16, 0, color);
		return;
	case 4192:
		renderb(x, y, 0, 0, 0, color);
		return;
	case 8192:
		renderb(x, y + 8, 0, 8, 0, color);
		return;
	case 8208:
		renderb(x + 8, y + 8, 8, 8, 0, color);
		return;
	case 8224:
		renderb(x + 8, y + 8, 8, 8, 0, color);
		return;
	case 8240:
		renderb(x + 8, y, 8, 0, 0, color);
		return;
	case 8256:
		renderb(x, y + 8, 0, 8, 0, color);
		return;
	case 8272:
		renderb(x + 8, y, 8, 0, 0, color);
		return;
	case 8288:
		renderb(x, y, 0, 0, 0, color);
		return;
	case 8304:
		renderb(x + 8, y, 8, 0, 0, color);
		renderb(x, y + 8, 0, 8, 0, color);
		return;
	case 8320:
		renderbc(x + 8, y, 8, 0, 8, 16, 0, color);
		return;
	case 8336:
		renderbc(x, y, 0, 0, 8, 16, 0, color);
		return;
	case 8352:
		renderb(x, y, 0, 0, 0, color);
		renderb(x + 8, y + 8, 8, 8, 0, color);
		return;
	case 8368:
		renderb(x + 8, y, 8, 0, 0, color);
		return;
	case 8384:
		renderb(x, y + 8, 0, 8, 0, color);
		return;
	case 8400:
		renderb(x, y, 0, 0, 0, color);
		return;
	case 8416:
		renderb(x + 8, y + 8, 8, 8, 0, color);
		return;
	}
}