diff --git a/data/icons2.png b/data/icons2.png index e9e408a..7059007 100644 Binary files a/data/icons2.png and b/data/icons2.png differ diff --git a/source/Globals.c b/source/Globals.c index cc4c99b..1b5bf2f 100644 --- a/source/Globals.c +++ b/source/Globals.c @@ -1468,23 +1468,20 @@ void reloadColors() { dirtColor[3] = SWAP_UINT32(sf2d_get_pixel(icons, 16, 3)); dirtColor[4] = SWAP_UINT32(sf2d_get_pixel(icons, 16, 4)); - grassColor[0] = SWAP_UINT32(sf2d_get_pixel(icons, 17, 0)); - grassColor[1] = SWAP_UINT32(sf2d_get_pixel(icons, 17, 1)); + grassColor = SWAP_UINT32(sf2d_get_pixel(icons, 17, 0)); - sandColor[0] = SWAP_UINT32(sf2d_get_pixel(icons, 18, 0)); - sandColor[1] = SWAP_UINT32(sf2d_get_pixel(icons, 18, 1)); + sandColor = SWAP_UINT32(sf2d_get_pixel(icons, 18, 0)); - waterColor[0] = SWAP_UINT32(sf2d_get_pixel(icons, 19, 0)); - waterColor[1] = SWAP_UINT32(sf2d_get_pixel(icons, 19, 1)); + waterColor[0] = SWAP_UINT32(sf2d_get_pixel(icons, 19, 0)); + waterColor[1] = SWAP_UINT32(sf2d_get_pixel(icons, 19, 1)); - lavaColor[0] = SWAP_UINT32(sf2d_get_pixel(icons, 20, 0)); - lavaColor[1] = SWAP_UINT32(sf2d_get_pixel(icons, 20, 1)); + lavaColor[0] = SWAP_UINT32(sf2d_get_pixel(icons, 20, 0)); + lavaColor[1] = SWAP_UINT32(sf2d_get_pixel(icons, 20, 1)); rockColor[0] = SWAP_UINT32(sf2d_get_pixel(icons, 21, 0)); rockColor[1] = SWAP_UINT32(sf2d_get_pixel(icons, 21, 1)); rockColor[2] = SWAP_UINT32(sf2d_get_pixel(icons, 21, 2)); rockColor[3] = SWAP_UINT32(sf2d_get_pixel(icons, 21, 3)); - woodColor[0] = SWAP_UINT32(sf2d_get_pixel(icons, 22, 0)); - woodColor[1] = SWAP_UINT32(sf2d_get_pixel(icons, 22, 1)); + woodColor = SWAP_UINT32(sf2d_get_pixel(icons, 22, 0)); } \ No newline at end of file diff --git a/source/Globals.h b/source/Globals.h index 8ce33b2..be50ad1 100644 --- a/source/Globals.h +++ b/source/Globals.h @@ -74,17 +74,14 @@ sf2d_texture *bottombg; sf2d_texture * minimap[5]; u8 map[5][128*128]; u8 data[5][128*128]; -u8 treeTable[256]; -u16 rockTable[256]; -u16 grassTable[16]; u32 dirtColor[5]; -u32 grassColor[2]; -u32 sandColor[2]; +u32 grassColor; +u32 sandColor; u32 waterColor[2]; u32 lavaColor[2]; u32 rockColor[4]; -u32 woodColor[2]; +u32 woodColor; char currentFileName[256]; extern u8 currentMenu; diff --git a/source/Menu.c b/source/Menu.c index 0422bb2..7a49e77 100644 --- a/source/Menu.c +++ b/source/Menu.c @@ -879,16 +879,17 @@ void renderMenu(int menu,int xscr,int yscr){ drawTextColor("Touch the keypad below",(320-22*12)/2,12,0xFF33FFFF); sf2d_draw_rectangle(0, 50, 320, 110, 0xFF7F7FBF); + + if(touchDelay > 0){ + sf2d_draw_rectangle(touchX, touchY, touchW, touchH, 0xFF0000AF); + } + 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); @@ -1031,7 +1032,7 @@ void renderMenu(int menu,int xscr,int yscr){ 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,0x0000AFAF + opacity); + drawTextColor("You Win!",158,76,0x0000AFAF + (opacity << 24)); drawText(scoreText, 200-((strlen(scoreText)-1)*6), 100); drawText("Press to continue", 96, 150); renderButtonIcon(k_attack.input & -k_attack.input, 166, 148, 1); @@ -1052,7 +1053,7 @@ void renderMenu(int menu,int xscr,int yscr){ 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,0x000000AF + opacity); + drawTextColor("You DIED!",158,76,0x000000AF + (opacity << 24)); drawText(scoreText, 200-((strlen(scoreText)-1)*6), 100); drawText("Press to continue", 96, 150); renderButtonIcon(k_attack.input & -k_attack.input, 166, 148, 1); @@ -1240,11 +1241,8 @@ void renderMenu(int menu,int xscr,int yscr){ 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,waterColor[0]);// water pit - render16b(startX+16,startY,32,96,0,waterColor[0]); - render16b(startX,startY+16,48,96,0,waterColor[0]); - render16b(startX+16,startY+16,64,96,0,waterColor[0]); - renderc (startX+8,startY+12,48,160,16,8,0);//Waves + menuRenderTilePit(startX,startY,176,16,waterColor[0]);// water pit + 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 @@ -1257,10 +1255,7 @@ void renderMenu(int menu,int xscr,int yscr){ 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,grassColor[0]);// grass pit - render16b(startX+16,startY,32,80,0,grassColor[0]); - render16b(startX,startY+16,48,80,0,grassColor[0]); - render16b(startX+16,startY+16,64,80,0,grassColor[0]); + menuRenderTilePit(startX,startY,112,16,grassColor);// grass pit 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 @@ -1315,3 +1310,22 @@ void renderMenu(int menu,int xscr,int yscr){ } } + +void menuRenderTilePit(int x,int y,int xt,int yt,u32 color) { + render16b(x+8,y+8,xt+48,yt,0,color); + + renderb(x, y, xt, yt, 0,color); + renderb(x+24,y, xt+8, yt, 0,color); + renderb(x, y+24,xt, yt+8,0,color); + renderb(x+24,y+24,xt+8, yt+8,0,color); + + renderb(x+8, y, xt+16,yt, 0,color); + renderb(x+16,y, xt+24,yt, 0,color); + renderb(x+8, y+24,xt+16,yt+8,0,color); + renderb(x+16,y+24,xt+24,yt+8,0,color); + + renderb(x, y+8, xt+32,yt, 0,color); + renderb(x, y+16,xt+32,yt, 0,color); + renderb(x+24,y+8, xt+40,yt, 0,color); + renderb(x+24,y+16,xt+40,yt, 0,color); +} diff --git a/source/Menu.h b/source/Menu.h index 61c20f9..8899882 100644 --- a/source/Menu.h +++ b/source/Menu.h @@ -5,3 +5,5 @@ void renderMenu(int menu,int xscr,int yscr); void tickMenu(int menu); + +void menuRenderTilePit(int x,int y,int xt,int yt,u32 color); diff --git a/source/MenuTutorial.c b/source/MenuTutorial.c index 34681e5..a7c33c8 100644 --- a/source/MenuTutorial.c +++ b/source/MenuTutorial.c @@ -114,20 +114,14 @@ void renderTutorialPage(bool topScreen){ renderButtonIcon(k_attack.input & -k_attack.input, 80, 56, 2); renderc(60,68,16,160,16,8,2);//Slash - render16b(12,20,16,80,0,grassColor[0]);// grass pit - render16b(12+16,20,32,80,0,grassColor[0]); - render16b(12,20+16,48,80,0,grassColor[0]); - render16b(12+16,20+16,64,80,0,grassColor[0]); + menuRenderTilePit(12,20,112,16,grassColor);// grass pit render16(12+8,20+4,0,16,0);//Tree renderc(12+9,20+14,16,160,16,8,0);//Slash render(12+9+4,20+14,192,144,0);//Axe render16(12+9,20+18,16,112,0);//Player-up - render16b(122,62,16,80,0,sandColor[0]);// sand pit - render16b(122+16,62,32,80,0,sandColor[0]); - render16b(122,62+16,48,80,0,sandColor[0]); - render16b(122+16,62+16,64,80,0,sandColor[0]); - render16b(130,70,0,96,0,0xFF383838);// hole + menuRenderTilePit(122,62,112,16,sandColor);// sand pit + render16b(130,70,176,16,0,0xFF383838);// hole render16(116,70,48,112,0);//Player-right renderb(136,76,16,152,0,0xFF8197AF);// Dirt item renderc(128,70,40,160,8,16,0);//Slash @@ -147,7 +141,7 @@ void renderTutorialPage(bool topScreen){ renderButtonIcon(biasedCirclePad(k_down.input), 44, 125, 1); break; case 3: // Furniture - sf2d_draw_rectangle(64, 48, 192, 32, grassColor[0]); + sf2d_draw_rectangle(64, 48, 192, 32, grassColor); renderc(32,24,64,128,96,16,0);//Furniture entities renderFurniture(ITEM_WORKBENCH, 50,60); @@ -186,14 +180,14 @@ void renderTutorialPage(bool topScreen){ render(76,48,40,152,0); // Seeds sf2d_draw_rectangle(216, 80, 32, 32, dirtColor[1]); // Dirt color for grass - render16b(108, 40, 0, 80, 0, grassColor[0]); // Grass + render16b(108, 40, 112, 16, 0, grassColor); // Grass render16(124, 40,144,0,0); // Farm Tile render16(108,54,16,112,0); // Player (Up) renderc(108,50,16,160,16,8,0); // Slash (Up) render(112,48,72,144,0); // Gem Hoe sf2d_draw_rectangle(112, 156, 32, 32, dirtColor[1]); // Dirt color for grass - render16b(56, 78, 0, 80, 0, grassColor[0]); // Grass + render16b(56, 78, 112, 16, 0, grassColor); // Grass sf2d_draw_rectangle(80, 156, 32, 32, dirtColor[1]); // Dirt color render16b(40, 78, 0, 0, 0, 0xFF8F8FA8); // Dirt Dots render(44, 82, 40,152,0); // Seeds diff --git a/source/MenuTutorial.h b/source/MenuTutorial.h index 84d5733..682d7c7 100644 --- a/source/MenuTutorial.h +++ b/source/MenuTutorial.h @@ -7,6 +7,7 @@ #include #include "Render.h" +#include "Menu.h" extern u8 pageNum; extern u8 maxPageNum; diff --git a/source/Render.c b/source/Render.c index 42385af..2f5601b 100644 --- a/source/Render.c +++ b/source/Render.c @@ -256,142 +256,6 @@ void renderFrame(int x1, int y1, int x2, int y2, u32 bgColor) { } } -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; - } -} - -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; - } -} - void bakeLights() { playerLightBake = sf2d_create_texture(64, 64, TEXFMT_RGBA8, SF2D_PLACE_RAM); lanternLightBake = sf2d_create_texture(128, 128, TEXFMT_RGBA8, @@ -495,66 +359,94 @@ void bakeLight(sf2d_texture* texture, int x, int y, int r) { sf2d_texture_tile32(texture); } -u8 checkSurrTiles8(int xt, int yt, int id) { - u8 vt = 0; - if (getTile(xt, yt - 1) == id) - vt |= 1; - if (getTile(xt - 1, yt) == id) - vt |= 2; - if (getTile(xt + 1, yt) == id) - vt |= 4; - if (getTile(xt, yt + 1) == id) - vt |= 8; - if (getTile(xt - 1, yt - 1) == id) - vt |= 16; - if (getTile(xt + 1, yt - 1) == id) - vt |= 32; - if (getTile(xt - 1, yt + 1) == id) - vt |= 64; - if (getTile(xt + 1, yt + 1) == id) - vt |= 128; - return vt; -} -u8 checkSurrTiles4(int xt, int yt, int id) { - u8 vt = 0; - if (getTile(xt, yt - 1) == id) - vt |= 1; - if (getTile(xt - 1, yt) == id) - vt |= 2; - if (getTile(xt + 1, yt) == id) - vt |= 4; - if (getTile(xt, yt + 1) == id) - vt |= 8; - return vt; +bool tu = false; +bool td = false; +bool tl = false; +bool tr = false; + +bool tul = false; +bool tur = false; +bool tdl = false; +bool tdr = false; + +void renderDotsWithColor(int x, int y, u8 bits1, u8 bits2, u8 bits3, u8 bits4, u32 color) { + if(tu && tl) renderb(x, y, 0, 0, bits1, color); + if(tu && tr) renderb(x + 8, y, 8, 0, bits2, color); + if(td && tl) renderb(x, y + 8, 0, 8, bits3, color); + if(td && tr) renderb(x + 8, y + 8, 8, 8, bits4, color); +} + +void resetSurrTiles() { + tu = false; + td = false; + tl = false; + tr = false; + + tul = false; + tur = false; + tdl = false; + tdr = false; +} + +void checkSurrTiles8(int xt, int yt, int id) { + if (getTile(xt, yt - 1) == id) + tu = true; + if (getTile(xt - 1, yt) == id) + tl = true; + if (getTile(xt + 1, yt) == id) + tr = true; + if (getTile(xt, yt + 1) == id) + td = true; + if (getTile(xt - 1, yt - 1) == id) + tul = true; + if (getTile(xt + 1, yt - 1) == id) + tur = true; + if (getTile(xt - 1, yt + 1) == id) + tdl = true; + if (getTile(xt + 1, yt + 1) == id) + tdr = true; +} +void checkSurrTiles4(int xt, int yt, int id) { + if (getTile(xt, yt - 1) == id) + tu = true; + if (getTile(xt - 1, yt) == id) + tl = true; + if (getTile(xt + 1, yt) == id) + tr = true; + if (getTile(xt, yt + 1) == id) + td = true; } -u8 v = 0; u8 tData = 0; void renderTile(int i, int x, int y) { int age = 0; switch (i) { case TILE_GRASS: - v = checkSurrTiles4(x >> 4, y >> 4, TILE_GRASS) - | checkSurrTiles4(x >> 4, y >> 4, TILE_TREE) - | checkSurrTiles4(x >> 4, y >> 4, TILE_FLOWER) - | checkSurrTiles4(x >> 4, y >> 4, TILE_SAPLING_TREE); - render16b(x, y, grassTable[v], 80, 0, grassColor[0]); - renderDotsWithColor(v, x, y, 0, grassColor[1]); + checkSurrTiles4(x >> 4, y >> 4, TILE_GRASS); + checkSurrTiles4(x >> 4, y >> 4, TILE_TREE); + checkSurrTiles4(x >> 4, y >> 4, TILE_FLOWER); + checkSurrTiles4(x >> 4, y >> 4, TILE_SAPLING_TREE); + + renderConnectedTile4(x, y, 112, 16, grassColor); break; case TILE_TREE: renderTile(TILE_GRASS, x, y); - render16(x, y, treeTable[checkSurrTiles8(x >> 4, y >> 4, TILE_TREE)], - 16, 0); + + checkSurrTiles8(x >> 4, y >> 4, TILE_TREE); + + render(x, y, 0+((tu && tl && tul) ? 16 : 0), 16, 0); + render(x+8, y, 8+((tu && tr && tur) ? 16 : 0), 16, 0); + render(x, y+8, 0+((td && tl && tdl) ? 16 : 0), 24, 0); + render(x+8, y+8, 8+((td && tr && tdr) ? 16 : 0), 24, 0); + break; case TILE_ROCK: - v = checkSurrTiles8(x >> 4, y >> 4, TILE_ROCK); - render16s(x, y, rockTable[v] + 8192, 0, rockColor[0]); - renderRockDotsWithColor(rockTable[v], x, y, rockColor[1]); + checkSurrTiles8(x >> 4, y >> 4, TILE_ROCK); + renderConnectedTile8(x, y, 32, 16, rockColor[0]); break; case TILE_HARDROCK: - v = checkSurrTiles8(x >> 4, y >> 4, TILE_HARDROCK); - render16s(x, y, rockTable[v] + 8192, 0, rockColor[2]); - renderRockDotsWithColor(rockTable[v], x, y, rockColor[3]); + checkSurrTiles8(x >> 4, y >> 4, TILE_HARDROCK); + renderConnectedTile8(x, y, 32, 16, rockColor[2]); break; case TILE_DIRT: // render dots. if (currentLevel > 1) @@ -563,32 +455,36 @@ void renderTile(int i, int x, int y) { render16b(x, y, 0, 0, 0, 0xFF8F8FA8); break; case TILE_SAND: - v = checkSurrTiles4(x >> 4, y >> 4, TILE_SAND) - | checkSurrTiles4(x >> 4, y >> 4, TILE_CACTUS) - | checkSurrTiles4(x >> 4, y >> 4, TILE_SAPLING_CACTUS); - render16b(x, y, grassTable[v], 80, 0, sandColor[0]); - renderDotsWithColor(v, x, y, 0, sandColor[1]); + checkSurrTiles4(x >> 4, y >> 4, TILE_SAND); + checkSurrTiles4(x >> 4, y >> 4, TILE_CACTUS); + checkSurrTiles4(x >> 4, y >> 4, TILE_SAPLING_CACTUS); + + renderConnectedTile4(x, y, 112, 16, sandColor); break; case TILE_WATER: - v = checkSurrTiles4(x >> 4, y >> 4, TILE_WATER) - | checkSurrTiles4(x >> 4, y >> 4, TILE_HOLE); - render16b(x, y, grassTable[v], 96, 0, waterColor[0]); + checkSurrTiles4(x >> 4, y >> 4, TILE_WATER); + checkSurrTiles4(x >> 4, y >> 4, TILE_HOLE); + + renderConnectedTile4(x, y, 176, 16, waterColor[0]); + srand((tickCount + (x / 2 - y) * 4311) / 10); - renderDotsWithColor(v, x, y, rand() & 3, waterColor[1]); + renderDotsWithColor(x, y, rand() & 3, rand() & 3, rand() & 3, rand() & 3, waterColor[1]); break; case TILE_LAVA: - v = checkSurrTiles4(x >> 4, y >> 4, TILE_LAVA) - | checkSurrTiles4(x >> 4, y >> 4, TILE_HOLE); - render16b(x, y, grassTable[v], 96, 0, lavaColor[0]); + checkSurrTiles4(x >> 4, y >> 4, TILE_LAVA); + checkSurrTiles4(x >> 4, y >> 4, TILE_HOLE); + + renderConnectedTile4(x, y, 176, 16, lavaColor[0]); + srand((tickCount + (x / 2 - y) * 4311) / 10); - renderDotsWithColor(v, x, y, rand() & 3, lavaColor[1]); + renderDotsWithColor(x, y, rand() & 3, rand() & 3, rand() & 3, rand() & 3, lavaColor[1]); break; case TILE_HOLE: - render16b(x, y, - grassTable[checkSurrTiles4(x >> 4, y >> 4, TILE_HOLE) - | checkSurrTiles4(x >> 4, y >> 4, TILE_WATER) - | checkSurrTiles4(x >> 4, y >> 4, TILE_LAVA)], 96, 0, - 0xFF383838); + checkSurrTiles4(x >> 4, y >> 4, TILE_HOLE); + checkSurrTiles4(x >> 4, y >> 4, TILE_WATER); + checkSurrTiles4(x >> 4, y >> 4, TILE_LAVA); + + renderConnectedTile4(x, y, 176, 16, 0xFF383838); break; case TILE_CACTUS: renderTile(TILE_SAND, x, y); @@ -616,11 +512,11 @@ void renderTile(int i, int x, int y) { render16b(x, y, 80, 0, 0, 0xFFDE98DF); break; case TILE_CLOUD: - render16b(x, y, - grassTable[checkSurrTiles4(x >> 4, y >> 4, TILE_CLOUD) - | checkSurrTiles4(x >> 4, y >> 4, TILE_STAIRS_DOWN) - | checkSurrTiles4(x >> 4, y >> 4, TILE_CLOUDCACTUS)], - 80, 0, 0xFFFFFFFF); + checkSurrTiles4(x >> 4, y >> 4, TILE_CLOUD); + checkSurrTiles4(x >> 4, y >> 4, TILE_STAIRS_DOWN); + checkSurrTiles4(x >> 4, y >> 4, TILE_CLOUDCACTUS); + + renderConnectedTile4(x, y, 64, 32, 0xFFFFFFFF); break; case TILE_CLOUDCACTUS: renderTile(TILE_CLOUD, x, y); @@ -644,10 +540,49 @@ void renderTile(int i, int x, int y) { render16(x, y, 160 + (age << 4), 0, 0); break; case TILE_WOOD_WALL: - render16b(x, y, grassTable[checkSurrTiles4(x >> 4, y >> 4, TILE_WOOD_WALL)], 176, 0, woodColor[0]); + checkSurrTiles4(x >> 4, y >> 4, TILE_WOOD_WALL); + + renderConnectedTile4(x, y, 0, 32, woodColor); break; } + resetSurrTiles(); +} + +void renderConnectedTile4(int x, int y, u32 xTile, u32 yTile, u32 color) { + //render complete tile in one piece to reduce strain(added for o3DS) + if (tl && tr && tu && td) { + render16b(x, y, xTile+48, yTile, 0, color); + return; + } + + int l = (tl ? 16 : 0); + int r = (tr ? 16 : 0); + int u = (tu ? 32 : 0); + int d = (td ? 32 : 0); + + renderb(x, y, xTile +l+u, yTile, 0, color); + renderb(x+8, y, xTile+8+r+u, yTile, 0, color); + renderb(x, y+8, xTile +l+d, yTile+8, 0, color); + renderb(x+8, y+8, xTile+8+r+d, yTile+8, 0, color); +} + +void renderConnectedTile8(int x, int y, u32 xTile, u32 yTile, u32 color) { + //render complete tile in one piece to reduce strain(added for o3DS) + if (tl && tr && tu && td && tul && tur && tdl && tdr) { + render16b(x, y, xTile+64, yTile, 0, color); + return; + } + + int l = (tl ? 16 : 0); + int r = (tr ? 16 : 0); + int u = (tu ? 32 : 0); + int d = (td ? 32 : 0); + + renderb(x, y, xTile +l+u+((tl && tu && tul) ? 16 : 0), yTile, 0, color); + renderb(x+8, y, xTile+8+r+u+((tr && tu && tur) ? 16 : 0), yTile, 0, color); + renderb(x, y+8, xTile +l+d+((tl && td && tdl) ? 16 : 0), yTile+8, 0, color); + renderb(x+8, y+8, xTile+8+r+d+((tr && td && tdr) ? 16 : 0), yTile+8, 0, color); } void renderZoomedMap() { @@ -1157,7 +1092,7 @@ void renderItemIcon(int itemID, int countLevel, int x, int y) { renderb(x, y, 16, 152, 0, rockColor[1]); break; case ITEM_SAND: - renderb(x, y, 16, 152, 0, sandColor[0]); + renderb(x, y, 16, 152, 0, sandColor); break; case ITEM_DIRT: renderb(x, y, 16, 152, 0, 0xFF8197AF); @@ -1215,169 +1150,3 @@ void renderItemIcon(int itemID, int countLevel, int x, int y) { break; } } - -void defineTables() { - - int i = 0; - for (i = 256; i > 0; --i) { - // Creates the lookup table for the tree tile. - if ((i & 255) == 255) - treeTable[i] = 208; - else if ((i & 239) == 239) - treeTable[i] = 144; - else if ((i & 191) == 191) - treeTable[i] = 160; - else if ((i & 127) == 127) - treeTable[i] = 176; - else if ((i & 223) == 223) - treeTable[i] = 192; - else if ((i & 206) == 206) - treeTable[i] = 112; - else if ((i & 55) == 55) - treeTable[i] = 128; - else if ((i & 173) == 173) - treeTable[i] = 96; - else if ((i & 91) == 91) - treeTable[i] = 80; - - else if ((i & 159) == 159) - treeTable[i] = 224; - else if ((i & 111) == 111) - treeTable[i] = 240; - - else if ((i & 19) == 19) - treeTable[i] = 64; - else if ((i & 37) == 37) - treeTable[i] = 48; - else if ((i & 74) == 74) - treeTable[i] = 32; - else if ((i & 140) == 140) - treeTable[i] = 16; - } - - /* - boolean up = i & 1 - boolean left = i & 2 - boolean right = i & 4 - boolean down = i & 8 - boolean up-left = i & 16 - boolean up-right = i & 32 - boolean down-left = i & 64 - boolean down-right = i & 128 - */ - - for (i = 256; i > 0; --i) { - // Creates the lookup table for the rock tile. - if ((i & 255) == 255) - rockTable[i] = 208; - else if ((i & 239) == 239) - rockTable[i] = 144; - else if ((i & 191) == 191) - rockTable[i] = 160; - else if ((i & 127) == 127) - rockTable[i] = 176; - else if ((i & 223) == 223) - rockTable[i] = 192; - else if ((i & 207) == 207) - rockTable[i] = 256 * 16 + 32; - else if ((i & 63) == 63) - rockTable[i] = 256 * 16 + 16; - else if ((i & 206) == 206) - rockTable[i] = 112; - else if ((i & 95) == 95) - rockTable[i] = 256 * 32 + 144; - else if ((i & 159) == 159) - rockTable[i] = 256 * 32 + 160; - else if ((i & 31) == 31) - rockTable[i] = 256 * 32 + 208; - else if ((i & 55) == 55) - rockTable[i] = 128; - else if ((i & 175) == 175) - rockTable[i] = 256 * 32 + 128; - else if ((i & 143) == 143) - rockTable[i] = 256 * 32 + 224; - else if ((i & 173) == 173) - rockTable[i] = 96; - else if ((i & 111) == 111) - rockTable[i] = 256 * 32 + 112; - else if ((i & 47) == 47) - rockTable[i] = 256 * 32 + 48; - else if ((i & 45) == 45) - rockTable[i] = 256 * 32 + 176; - else if ((i & 79) == 79) - rockTable[i] = 256 * 32 + 192; - else if ((i & 23) == 23) - rockTable[i] = 256 * 32 + 96; - else if ((i & 91) == 91) - rockTable[i] = 80; - else if ((i & 27) == 27) - rockTable[i] = 256 * 16 + 96; - else if ((i & 19) == 19) - rockTable[i] = 64; - else if ((i & 75) == 75) - rockTable[i] = 256 * 32; - else if ((i & 141) == 141) - rockTable[i] = 256 * 32 + 16; - else if ((i & 142) == 142) - rockTable[i] = 256 * 32 + 32; - else if ((i & 78) == 78) - rockTable[i] = 256 * 32 + 64; - else if ((i & 39) == 39) - rockTable[i] = 256 * 32 + 80; - else if ((i & 37) == 37) - rockTable[i] = 48; - else if ((i & 74) == 74) - rockTable[i] = 32; - else if ((i & 140) == 140) - rockTable[i] = 16; - else if ((i & 15) == 15) - rockTable[i] = 256 * 16 + 112; - else if ((i & 11) == 11) - rockTable[i] = 256 * 16 + 192; - else if ((i & 13) == 13) - rockTable[i] = 256 * 16 + 208; - else if ((i & 14) == 14) - rockTable[i] = 256 * 16 + 224; - else if ((i & 7) == 7) - rockTable[i] = 256 * 16 + 240; - else if ((i & 12) == 12) - rockTable[i] = 256 * 16 + 128; - else if ((i & 10) == 10) - rockTable[i] = 256 * 16 + 144; - else if ((i & 5) == 5) - rockTable[i] = 256 * 16 + 160; - else if ((i & 3) == 3) - rockTable[i] = 256 * 16 + 176; - else if ((i & 9) == 9) - rockTable[i] = 256 * 16; - else if ((i & 6) == 6) - rockTable[i] = 256 * 16 + 48; - else if ((i & 8) == 8) - rockTable[i] = 224; - else if ((i & 4) == 4) - rockTable[i] = 256 * 16 + 64; - else if ((i & 2) == 2) - rockTable[i] = 256 * 16 + 80; - else if ((i & 1) == 1) - rockTable[i] = 240; - - } - - // Lookup table for the grass/sand tile. - grassTable[1] = 192; - grassTable[2] = 160; - grassTable[3] = 64; - grassTable[4] = 144; - grassTable[5] = 48; - grassTable[6] = 224; - grassTable[7] = 128; - grassTable[8] = 176; - grassTable[9] = 240; - grassTable[10] = 32; - grassTable[11] = 80; - grassTable[12] = 16; - grassTable[13] = 96; - grassTable[14] = 112; - grassTable[15] = 208; - -} diff --git a/source/Render.h b/source/Render.h index 1b91e04..237139e 100644 --- a/source/Render.h +++ b/source/Render.h @@ -27,6 +27,8 @@ void render16s(s32 xp, s32 yp, u32 tile, u8 bits, u32 color); void renderTitle(int x, int y); void renderFrame(int x1, int y1, int x2, int y2, u32 bgColor); void renderTile(int i, int x, int y); +void renderConnectedTile4(int x, int y, u32 xTile, u32 yTile, u32 color); +void renderConnectedTile8(int x, int y, u32 xTile, u32 yTile, u32 color); void renderBackground(int xScroll, int yScroll); void renderMenuBackground(int xScroll, int yScroll); //Renders the darkness void renderButtonIcon(u32 icon, int x, int y, float scale); @@ -61,5 +63,3 @@ void renderItemStuffWithText(int itemID, int itemCL, bool onlyOne, int x, int y) void renderItemWithTextCentered(Item* item, int width, int y); void renderItemIcon(int itemID, int countLevel, int x, int y); void renderItemIcon2(int itemID, int countLevel, int x, int y, int z); - -void defineTables(); diff --git a/source/Sound.c b/source/Sound.c index aedd70c..70f7d64 100644 --- a/source/Sound.c +++ b/source/Sound.c @@ -38,6 +38,22 @@ void updateMusic(int lvl) { } } +void loadSounds() { + loadSound(&snd_playerHurt, "resources/playerhurt.raw"); + loadSound(&snd_playerDeath, "resources/playerdeath.raw"); + loadSound(&snd_monsterHurt, "resources/monsterhurt.raw"); + loadSound(&snd_test, "resources/test.raw"); + loadSound(&snd_pickup, "resources/pickup.raw"); + loadSound(&snd_bossdeath, "resources/bossdeath.raw"); + loadSound(&snd_craft, "resources/craft.raw"); + + loadSound(&music_menu, "resources/music/menu.raw"); + loadSound(&music_floor0, "resources/music/floor0.raw"); + loadSound(&music_floor1, "resources/music/floor1.raw"); + loadSound(&music_floor23, "resources/music/floor2_3.raw"); + loadSound(&music_floor4, "resources/music/floor4.raw"); +} + void freeSounds(){ linearFree(snd_playerHurt.buffer); linearFree(snd_playerDeath.buffer); diff --git a/source/Sound.h b/source/Sound.h index 4946cd7..2e36791 100644 --- a/source/Sound.h +++ b/source/Sound.h @@ -16,6 +16,7 @@ void playSound(Sound snd); void playMusic(Sound snd); void updateMusic(int lvl); +void loadSounds(); void freeSounds(); Sound snd_playerHurt; diff --git a/source/main.c b/source/main.c index 6a1e69f..cee125a 100644 --- a/source/main.c +++ b/source/main.c @@ -171,20 +171,7 @@ int main() { font = sfil_load_PNG_buffer(Font_png, SF2D_PLACE_RAM); bottombg = sfil_load_PNG_buffer(bottombg_png, SF2D_PLACE_RAM); - loadSound(&snd_playerHurt, "resources/playerhurt.raw"); - loadSound(&snd_playerDeath, "resources/playerdeath.raw"); - loadSound(&snd_monsterHurt, "resources/monsterhurt.raw"); - loadSound(&snd_test, "resources/test.raw"); - loadSound(&snd_pickup, "resources/pickup.raw"); - loadSound(&snd_bossdeath, "resources/bossdeath.raw"); - loadSound(&snd_craft, "resources/craft.raw"); - - loadSound(&music_menu, "resources/music/menu.raw"); - loadSound(&music_floor0, "resources/music/floor0.raw"); - loadSound(&music_floor1, "resources/music/floor1.raw"); - loadSound(&music_floor23, "resources/music/floor2_3.raw"); - loadSound(&music_floor4, "resources/music/floor4.raw"); - + loadSounds(); playMusic(music_menu); bakeLights(); @@ -244,7 +231,6 @@ int main() { tickCount = 0; initRecipes(); - defineTables(); while (aptMainLoop()) { ++tickCount; hidScanInput();