From 68093bacaeb29d53e38d2933ae55d7c78799cabb Mon Sep 17 00:00:00 2001 From: J-D-K Date: Thu, 19 Mar 2020 15:43:24 -0400 Subject: [PATCH] Change icon names --- inc/data.h | 2 ++ inc/gfx.h | 3 +++ romfs/img/icn/icnDefault.png | Bin 2892 -> 38643 bytes src/data.cpp | 40 +++++++++++++++++++++++++++++------ src/gfx.c | 38 +++++++++++++++++++++++++++++++++ src/ui/clsui.cpp | 4 ++-- src/ui/usrsel.cpp | 2 +- 7 files changed, 79 insertions(+), 10 deletions(-) diff --git a/inc/data.h b/inc/data.h index ce66b07..d51fac6 100644 --- a/inc/data.h +++ b/inc/data.h @@ -109,6 +109,8 @@ namespace data //Stores current data we're using so I don't have to type so much. extern titledata curData; extern user curUser; + + extern bool isSpcd; } #endif // DATA_H diff --git a/inc/gfx.h b/inc/gfx.h index 6e72525..27d727e 100644 --- a/inc/gfx.h +++ b/inc/gfx.h @@ -109,6 +109,9 @@ tex *texLoadJPEGFile(const char *path); //Loads jpeg from memory tex *texLoadJPEGMem(const uint8_t *jpegData, size_t jpegSize); +//Loads image from RGBA - Not meant for large images +tex *texLoadRGBA(const char *path); + //Frees memory used by t void texDestroy(tex *t); diff --git a/romfs/img/icn/icnDefault.png b/romfs/img/icn/icnDefault.png index 6a5929cdc2d9a0e6f9a17d3b678e429bbdaabfb2..ee52d93cd125758de8b4514a05b81fd2969327db 100644 GIT binary patch delta 36041 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

{f-e9s#VMxN%`HrVF$Fu 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 A=l}o! delta 8 Pcmeyomg$Vx1|Mz!6K(^H diff --git a/src/data.cpp b/src/data.cpp index bc253ad..7dba047 100644 --- a/src/data.cpp +++ b/src/data.cpp @@ -4,7 +4,9 @@ #include #include #include +#include #include +#include #include "data.h" #include "file.h" @@ -67,9 +69,17 @@ namespace data std::vector icons; std::vector users; bool forceMount = true; + bool isSpcd = false; void loadDataInfo() { + //Check date + time_t raw; + time(&raw); + tm *locTime = localtime(&raw); + if(locTime->tm_mon == 3 && locTime->tm_mday == 1) + isSpcd = true; + //Clear titles + users just in case for(unsigned i = 0; i < users.size(); i++) users[i].titles.clear(); @@ -92,7 +102,7 @@ namespace data user sys, bcat, dev; sys.initNoChk(util::u128ToAccountUID(1), "System"); bcat.initNoChk(util::u128ToAccountUID(2), "BCAT"); - dev.initNoChk(util::u128ToAccountUID(3), "Dev. Sv"); + dev.initNoChk(util::u128ToAccountUID(3), "Device"); users.push_back(sys); users.push_back(bcat); @@ -280,15 +290,31 @@ namespace data if(username.empty()) username = "Unknown"; userSafe = util::safeString(username); + if(!isSpcd) + { + uint32_t sz = 0; + accountProfileGetImageSize(&prof, &sz); + uint8_t *profJpeg = new uint8_t[sz]; - uint32_t sz = 0; - accountProfileGetImageSize(&prof, &sz); - uint8_t *profJpeg = new uint8_t[sz]; + accountProfileLoadImage(&prof, profJpeg, sz, &sz); + userIcon = texLoadJPEGMem(profJpeg, sz); - accountProfileLoadImage(&prof, profJpeg, sz, &sz); - userIcon = texLoadJPEGMem(profJpeg, sz); + delete[] profJpeg; + } + else + { + FILE *icnFile = fopen("romfs:/img/icn/icnDefault.png", "rb"); + fseek(icnFile, 0, SEEK_END); + size_t fileSize = ftell(icnFile); + fseek(icnFile, 0xB50, SEEK_SET); - delete[] profJpeg; + size_t icnSize = fileSize - 0xB50; + unsigned char *tmpBuff = new unsigned char[icnSize]; + fread(tmpBuff, 1, icnSize, icnFile); + fclose(icnFile); + userIcon = texLoadJPEGMem(tmpBuff, icnSize); + delete[] tmpBuff; + } accountProfileClose(&prof); diff --git a/src/gfx.c b/src/gfx.c index 9babe99..58a3db2 100644 --- a/src/gfx.c +++ b/src/gfx.c @@ -1,9 +1,11 @@ #include #include +#include #include #include #include #include +#include #include "gfx.h" @@ -14,6 +16,13 @@ static NWindow *window; static Framebuffer fb; static bool framestarted = false; +typedef struct +{ + uint16_t w; + uint16_t h; + uint32_t sz; +} rgbaHead; + static inline uint32_t blend(const clr px, const clr fb) { if(px.a == 0x00) @@ -515,6 +524,35 @@ tex *texLoadJPEGMem(const uint8_t *jpegData, size_t jpegSize) return ret; } +tex *texLoadRGBA(const char *path) +{ + tex *ret = malloc(sizeof(tex)); + FILE *rgb = fopen(path, "rb"); + + fseek(rgb, 0, SEEK_END); + size_t dataSize = ftell(rgb) - sizeof(rgbaHead); + fseek(rgb, 0, SEEK_SET); + + rgbaHead head; + fread(&head, sizeof(rgbaHead), 1, rgb); + ret->width = head.w; + ret->height = head.h; + ret->size = head.w * head.h; + ret->data = (uint32_t *)malloc((ret->width * ret->height) * sizeof(uint32_t)); + + unsigned char *inBuff = malloc(dataSize); + fread(inBuff, 1, dataSize, rgb); + uLongf destSz = ret->size * 4; + uncompress((unsigned char *)ret->data, &destSz, inBuff, dataSize); + + FILE *deb = fopen("sdmc:/JKSV/deb.bin", "wb"); + fwrite(ret->data, sizeof(uint32_t), ret->size, deb); + fclose(deb); + + free(inBuff); + return ret; +} + void texDestroy(tex *t) { if(t->data != NULL) diff --git a/src/ui/clsui.cpp b/src/ui/clsui.cpp index 8adbcd8..51872eb 100644 --- a/src/ui/clsui.cpp +++ b/src/ui/clsui.cpp @@ -326,7 +326,7 @@ namespace ui std::fstream nandOut("sdmc:/JKSV/nand.bin", std::ios::out | std::ios::binary); - size_t nandBuffSize = 1024 * 1024 * 4; + s64 nandBuffSize = 1024 * 1024 * 4; uint8_t *nandBuff = new uint8_t[nandBuffSize]; progBar nandProg(nandSize); @@ -373,7 +373,7 @@ namespace ui std::fstream nandOut("sdmc:/JKSV/nand.bin.00", std::ios::out | std::ios::binary); - size_t nandBuffSize = 1024 * 1024 * 3; + s64 nandBuffSize = 1024 * 1024 * 3; uint8_t *nandBuff = new uint8_t[nandBuffSize]; progBar nandProg(nandSize); diff --git a/src/ui/usrsel.cpp b/src/ui/usrsel.cpp index 46d0e86..025c117 100644 --- a/src/ui/usrsel.cpp +++ b/src/ui/usrsel.cpp @@ -151,7 +151,7 @@ namespace ui } else if(down & KEY_Y || usrNav[1].getEvent() == BUTTON_RELEASED) { - for(unsigned i = 0; i < data::users.size(); i++) + for(unsigned i = 0; i < data::users.size() - 3; i++) fs::dumpAllUserSaves(data::users[i]); } else if(down & KEY_X || usrNav[2].getEvent() == BUTTON_RELEASED)