Add more locations from *Style Savvy: Styling Star*
BIN
3ds/assets/gfx_charprevbg/bg_cakeShop4.png
Normal file
After Width: | Height: | Size: 545 KiB |
1
3ds/assets/gfx_charprevbg/bg_cakeShop4.t3s
Normal file
@ -0,0 +1 @@
|
||||
-f rgba -z auto "bg_cakeShop4.png"
|
BIN
3ds/assets/gfx_charprevbg/bg_charityStage.png
Normal file
After Width: | Height: | Size: 608 KiB |
1
3ds/assets/gfx_charprevbg/bg_charityStage.t3s
Normal file
@ -0,0 +1 @@
|
||||
-f rgba -z auto "bg_charityStage.png"
|
BIN
3ds/assets/gfx_charprevbg/bg_concertHall.png
Normal file
After Width: | Height: | Size: 361 KiB |
1
3ds/assets/gfx_charprevbg/bg_concertHall.t3s
Normal file
@ -0,0 +1 @@
|
||||
-f rgba -z auto "bg_concertHall.png"
|
BIN
3ds/assets/gfx_charprevbg/bg_florist.png
Normal file
After Width: | Height: | Size: 669 KiB |
1
3ds/assets/gfx_charprevbg/bg_florist.t3s
Normal file
@ -0,0 +1 @@
|
||||
-f rgba -z auto "bg_florist.png"
|
BIN
3ds/assets/gfx_charprevbg/bg_girlyStage_0.png
Normal file
After Width: | Height: | Size: 370 KiB |
1
3ds/assets/gfx_charprevbg/bg_girlyStage_0.t3s
Normal file
@ -0,0 +1 @@
|
||||
-f rgba -z auto "bg_girlyStage_0.png"
|
BIN
3ds/assets/gfx_charprevbg/bg_girlyStage_1.png
Normal file
After Width: | Height: | Size: 370 KiB |
1
3ds/assets/gfx_charprevbg/bg_girlyStage_1.t3s
Normal file
@ -0,0 +1 @@
|
||||
-f rgba -z auto "bg_girlyStage_1.png"
|
BIN
3ds/assets/gfx_charprevbg/bg_lifestyleShop4.png
Normal file
After Width: | Height: | Size: 894 KiB |
1
3ds/assets/gfx_charprevbg/bg_lifestyleShop4.t3s
Normal file
@ -0,0 +1 @@
|
||||
-f rgba -z auto "bg_lifestyleShop4.png"
|
BIN
3ds/assets/gfx_charprevbg/bg_livelyStage_0.png
Normal file
After Width: | Height: | Size: 463 KiB |
1
3ds/assets/gfx_charprevbg/bg_livelyStage_0.t3s
Normal file
@ -0,0 +1 @@
|
||||
-f rgba -z auto "bg_livelyStage_0.png"
|
BIN
3ds/assets/gfx_charprevbg/bg_livelyStage_1.png
Normal file
After Width: | Height: | Size: 462 KiB |
1
3ds/assets/gfx_charprevbg/bg_livelyStage_1.t3s
Normal file
@ -0,0 +1 @@
|
||||
-f rgba -z auto "bg_livelyStage_1.png"
|
BIN
3ds/assets/gfx_charprevbg/bg_livelyStage_2.png
Normal file
After Width: | Height: | Size: 463 KiB |
1
3ds/assets/gfx_charprevbg/bg_livelyStage_2.t3s
Normal file
@ -0,0 +1 @@
|
||||
-f rgba -z auto "bg_livelyStage_2.png"
|
BIN
3ds/assets/gfx_charprevbg/bg_livelyStage_3.png
Normal file
After Width: | Height: | Size: 464 KiB |
1
3ds/assets/gfx_charprevbg/bg_livelyStage_3.t3s
Normal file
@ -0,0 +1 @@
|
||||
-f rgba -z auto "bg_livelyStage_3.png"
|
@ -84,6 +84,7 @@ void GFX::loadBgSprite(void) {
|
||||
if (bgSpriteLoaded) return;
|
||||
|
||||
timeOutside = 2; // Default is Nighttime
|
||||
int aniFrames = 0;
|
||||
|
||||
const char* bgPath;
|
||||
time_t t = time(0);
|
||||
@ -143,8 +144,10 @@ void GFX::loadBgSprite(void) {
|
||||
case 12:
|
||||
if (isDaytime(hour, minutes)) {
|
||||
bgPath = "romfs:/gfx/bgDay_tropicaBeach_0.t3x";
|
||||
aniFrames = 2;
|
||||
} else if (isEvening(hour, minutes)) {
|
||||
bgPath = "romfs:/gfx/bgSunset_tropicaBeach_0.t3x";
|
||||
aniFrames = 2;
|
||||
} else {
|
||||
bgPath = "romfs:/gfx/bgNight_tropicaBeach.t3x";
|
||||
}
|
||||
@ -287,6 +290,7 @@ void GFX::loadBgSprite(void) {
|
||||
break;
|
||||
case 51:
|
||||
bgPath = "romfs:/gfx/bg_liveMusicClub3_0.t3x";
|
||||
aniFrames = 3;
|
||||
break;
|
||||
case 52:
|
||||
if (isDaytime(hour, minutes)) {
|
||||
@ -326,40 +330,63 @@ void GFX::loadBgSprite(void) {
|
||||
break;
|
||||
case 56:
|
||||
if (isDaytime(hour, minutes)) {
|
||||
bgPath = "romfs:/gfx/bgDay_countrysideSpring.png";
|
||||
bgPath = "romfs:/gfx/bgDay_countrysideSpring.t3x";
|
||||
} else if (isEvening(hour, minutes)) {
|
||||
bgPath = "romfs:/gfx/bgSunset_countrysideSpring.png";
|
||||
bgPath = "romfs:/gfx/bgSunset_countrysideSpring.t3x";
|
||||
} else {
|
||||
bgPath = "romfs:/gfx/bgNight_countrysideSpring.png";
|
||||
bgPath = "romfs:/gfx/bgNight_countrysideSpring.t3x";
|
||||
}
|
||||
break;
|
||||
case 57:
|
||||
if (isDaytime(hour, minutes)) {
|
||||
bgPath = "romfs:/gfx/bgDay_countrysideSummer.png";
|
||||
bgPath = "romfs:/gfx/bgDay_countrysideSummer.t3x";
|
||||
} else if (isEvening(hour, minutes)) {
|
||||
bgPath = "romfs:/gfx/bgSunset_countrysideSummer.png";
|
||||
bgPath = "romfs:/gfx/bgSunset_countrysideSummer.t3x";
|
||||
} else {
|
||||
bgPath = "romfs:/gfx/bgNight_countrysideSummer.png";
|
||||
bgPath = "romfs:/gfx/bgNight_countrysideSummer.t3x";
|
||||
}
|
||||
break;
|
||||
case 58:
|
||||
if (isDaytime(hour, minutes)) {
|
||||
bgPath = "romfs:/gfx/bgDay_countrysideFall.png";
|
||||
bgPath = "romfs:/gfx/bgDay_countrysideFall.t3x";
|
||||
} else if (isEvening(hour, minutes)) {
|
||||
bgPath = "romfs:/gfx/bgSunset_countrysideFall.png";
|
||||
bgPath = "romfs:/gfx/bgSunset_countrysideFall.t3x";
|
||||
} else {
|
||||
bgPath = "romfs:/gfx/bgNight_countrysideFall.png";
|
||||
bgPath = "romfs:/gfx/bgNight_countrysideFall.t3x";
|
||||
}
|
||||
break;
|
||||
case 59:
|
||||
if (isDaytime(hour, minutes)) {
|
||||
bgPath = "romfs:/gfx/bgDay_countrysideWinter.png";
|
||||
bgPath = "romfs:/gfx/bgDay_countrysideWinter.t3x";
|
||||
} else if (isEvening(hour, minutes)) {
|
||||
bgPath = "romfs:/gfx/bgSunset_countrysideWinter.png";
|
||||
bgPath = "romfs:/gfx/bgSunset_countrysideWinter.t3x";
|
||||
} else {
|
||||
bgPath = "romfs:/gfx/bgNight_countrysideWinter.png";
|
||||
bgPath = "romfs:/gfx/bgNight_countrysideWinter.t3x";
|
||||
}
|
||||
break;
|
||||
case 60:
|
||||
bgPath = "romfs:/gfx/bg_lifestyleShop4.t3x";
|
||||
break;
|
||||
case 61:
|
||||
bgPath = "romfs:/gfx/bg_florist.t3x";
|
||||
break;
|
||||
case 62:
|
||||
bgPath = "romfs:/gfx/bg_cakeShop4.t3x";
|
||||
break;
|
||||
case 63:
|
||||
bgPath = "romfs:/gfx/bg_livelyStage_0.t3x";
|
||||
aniFrames = 3;
|
||||
break;
|
||||
case 64:
|
||||
bgPath = "romfs:/gfx/bg_girlyStage_0.t3x";
|
||||
aniFrames = 1;
|
||||
break;
|
||||
case 65:
|
||||
bgPath = "romfs:/gfx/bg_concertHall.t3x";
|
||||
break;
|
||||
case 66:
|
||||
bgPath = "romfs:/gfx/bg_charityStage.t3x";
|
||||
break;
|
||||
}
|
||||
FILE* bgFile = fopen(bgPath, "rb");
|
||||
fread((void*)bgSpriteMem[0], 1, 0x200000, bgFile);
|
||||
@ -373,32 +400,38 @@ void GFX::loadBgSprite(void) {
|
||||
bgCanAnimate = false;
|
||||
|
||||
// Load animated parts
|
||||
if ((studioBg == 12 || studioBg == 51) && (timeOutside == 0 || timeOutside == 1 || studioBg == 51)) {
|
||||
if (studioBg == 51) {
|
||||
bgPath = "romfs:/gfx/bg_liveMusicClub3_1.t3x";
|
||||
} else if (timeOutside == 0) {
|
||||
bgPath = "romfs:/gfx/bgDay_tropicaBeach_1.t3x";
|
||||
} else {
|
||||
bgPath = "romfs:/gfx/bgSunset_tropicaBeach_1.t3x";
|
||||
if (aniFrames > 0) {
|
||||
switch (studioBg) {
|
||||
case 12:
|
||||
if (timeOutside == 0) {
|
||||
bgPath = "romfs:/gfx/bgDay_tropicaBeach_%i.t3x";
|
||||
} else {
|
||||
bgPath = "romfs:/gfx/bgSunset_tropicaBeach_%i.t3x";
|
||||
}
|
||||
break;
|
||||
case 51:
|
||||
bgPath = "romfs:/gfx/bg_liveMusicClub3_%i.t3x";
|
||||
break;
|
||||
case 63:
|
||||
bgPath = "romfs:/gfx/bg_livelyStage_%i.t3x";
|
||||
break;
|
||||
case 64:
|
||||
bgPath = "romfs:/gfx/bg_girlyStage_%i.t3x";
|
||||
break;
|
||||
}
|
||||
bgFile = fopen(bgPath, "rb");
|
||||
fread((void*)bgSpriteMem[1], 1, 0x200000, bgFile);
|
||||
fclose(bgFile);
|
||||
if (studioBg == 51) {
|
||||
bgPath = "romfs:/gfx/bg_liveMusicClub3_2.t3x";
|
||||
} else if (timeOutside == 0) {
|
||||
bgPath = "romfs:/gfx/bgDay_tropicaBeach_2.t3x";
|
||||
} else {
|
||||
bgPath = "romfs:/gfx/bgSunset_tropicaBeach_2.t3x";
|
||||
}
|
||||
bgFile = fopen(bgPath, "rb");
|
||||
fread((void*)bgSpriteMem[2], 1, 0x200000, bgFile);
|
||||
fclose(bgFile);
|
||||
if (studioBg == 51) {
|
||||
bgPath = "romfs:/gfx/bg_liveMusicClub3_3.t3x";
|
||||
bgFile = fopen(bgPath, "rb");
|
||||
fread((void*)bgSpriteMem[3], 1, 0x200000, bgFile);
|
||||
char bgAniPath[64];
|
||||
for (int i = 1; i <= aniFrames; i++) {
|
||||
sprintf(bgAniPath, bgPath, i);
|
||||
bgFile = fopen(bgAniPath, "rb");
|
||||
fread((void*)bgSpriteMem[i], 1, 0x200000, bgFile);
|
||||
fclose(bgFile);
|
||||
}
|
||||
if (studioBg == 64) {
|
||||
bgAnimationDelay = iFps/2;
|
||||
bgAnimation[0] = 0;
|
||||
bgAnimation[1] = 1;
|
||||
bgAnimation[2] = 100;
|
||||
} else if (studioBg == 51 || studioBg == 63) {
|
||||
bgAnimationDelay = iFps/2;
|
||||
bgAnimation[0] = 0;
|
||||
bgAnimation[1] = 1;
|
||||
|
@ -15,10 +15,17 @@ const char* import_ss4BgNames[] {
|
||||
"Beautician",
|
||||
"Hair Salon",
|
||||
"Live Music Club",
|
||||
"Lifestyle Shop",
|
||||
"Florist",
|
||||
"Cake Shop",
|
||||
"Menswear Shop",
|
||||
"VIP Room",
|
||||
"Restauraunt",
|
||||
"Lively Stage",
|
||||
"Girly Stage",
|
||||
"Concert Hall",
|
||||
"Cinema",
|
||||
"Charity Stage"
|
||||
};
|
||||
|
||||
int import_ss4BgNums[] {
|
||||
@ -38,8 +45,15 @@ int import_ss4BgNums[] {
|
||||
4,
|
||||
5,
|
||||
7,
|
||||
60,
|
||||
61,
|
||||
62,
|
||||
8,
|
||||
9,
|
||||
10,
|
||||
11
|
||||
63,
|
||||
64,
|
||||
65,
|
||||
11,
|
||||
66
|
||||
};
|
||||
|
@ -178,6 +178,7 @@ void GFX::loadBgSprite(void) {
|
||||
dmaFillWords(0xFFFFFFFF, bgGetGfxPtr(bg3Sub), 0x18000);
|
||||
|
||||
timeOutside = 2; // Default is Nighttime
|
||||
int aniFrames = 0;
|
||||
|
||||
const char* bgPath;
|
||||
time_t t = time(0);
|
||||
@ -237,8 +238,10 @@ void GFX::loadBgSprite(void) {
|
||||
case 12:
|
||||
if (isDaytime(hour, minutes)) {
|
||||
bgPath = "nitro:/graphics/bg/Day_tropicaBeach_0.png";
|
||||
aniFrames = 2;
|
||||
} else if (isEvening(hour, minutes)) {
|
||||
bgPath = "nitro:/graphics/bg/Sunset_tropicaBeach_0.png";
|
||||
aniFrames = 2;
|
||||
} else {
|
||||
bgPath = "nitro:/graphics/bg/Night_tropicaBeach.png";
|
||||
}
|
||||
@ -381,6 +384,7 @@ void GFX::loadBgSprite(void) {
|
||||
break;
|
||||
case 51:
|
||||
bgPath = "nitro:/graphics/bg/liveMusicClub3_0.png";
|
||||
aniFrames = 3;
|
||||
break;
|
||||
case 52:
|
||||
if (isDaytime(hour, minutes)) {
|
||||
@ -454,6 +458,29 @@ void GFX::loadBgSprite(void) {
|
||||
bgPath = "nitro:/graphics/bg/Night_countrysideWinter.png";
|
||||
}
|
||||
break;
|
||||
case 60:
|
||||
bgPath = "nitro:/graphics/bg/lifestyleShop4.png";
|
||||
break;
|
||||
case 61:
|
||||
bgPath = "nitro:/graphics/bg/florist.png";
|
||||
break;
|
||||
case 62:
|
||||
bgPath = "nitro:/graphics/bg/cakeShop4.png";
|
||||
break;
|
||||
case 63:
|
||||
bgPath = "nitro:/graphics/bg/livelyStage_0.png";
|
||||
aniFrames = 3;
|
||||
break;
|
||||
case 64:
|
||||
bgPath = "nitro:/graphics/bg/girlyStage_0.png";
|
||||
aniFrames = 1;
|
||||
break;
|
||||
case 65:
|
||||
bgPath = "nitro:/graphics/bg/concertHall.png";
|
||||
break;
|
||||
case 66:
|
||||
bgPath = "nitro:/graphics/bg/charityStage.png";
|
||||
break;
|
||||
}
|
||||
std::vector<unsigned char> image;
|
||||
unsigned width, height;
|
||||
@ -469,39 +496,40 @@ void GFX::loadBgSprite(void) {
|
||||
animateBg = false;
|
||||
|
||||
// Load animated parts
|
||||
if (*(vu32*)(0x0279FFFC) == 1 && (studioBg == 12 || studioBg == 51)
|
||||
&& (timeOutside == 0 || timeOutside == 1 || studioBg == 51)) {
|
||||
image.clear();
|
||||
if (studioBg == 51) {
|
||||
bgPath = "nitro:/graphics/bg/liveMusicClub3_1.png";
|
||||
} else if (timeOutside == 0) {
|
||||
bgPath = "nitro:/graphics/bg/Day_tropicaBeach_1.png";
|
||||
} else {
|
||||
bgPath = "nitro:/graphics/bg/Sunset_tropicaBeach_1.png";
|
||||
if (*(vu32*)(0x0279FFFC) == 1 && aniFrames > 0) {
|
||||
switch (studioBg) {
|
||||
case 12:
|
||||
if (timeOutside == 0) {
|
||||
bgPath = "nitro:/graphics/bg/Day_tropicaBeach_%i.png";
|
||||
} else {
|
||||
bgPath = "nitro:/graphics/bg/Sunset_tropicaBeach_%i.png";
|
||||
}
|
||||
break;
|
||||
case 51:
|
||||
bgPath = "nitro:/graphics/bg/liveMusicClub3_%i.png";
|
||||
break;
|
||||
case 63:
|
||||
bgPath = "nitro:/graphics/bg/livelyStage_%i.png";
|
||||
break;
|
||||
case 64:
|
||||
bgPath = "nitro:/graphics/bg/girlyStage_%i.png";
|
||||
break;
|
||||
}
|
||||
lodepng::decode(image, width, height, bgPath);
|
||||
for(unsigned i=0;i<image.size()/4;i++) {
|
||||
bgSpriteMemExt[0][i] = image[i*4]>>3 | (image[(i*4)+1]>>3)<<5 | (image[(i*4)+2]>>3)<<10 | BIT(15);
|
||||
}
|
||||
image.clear();
|
||||
if (studioBg == 51) {
|
||||
bgPath = "nitro:/graphics/bg/liveMusicClub3_2.png";
|
||||
} else if (timeOutside == 0) {
|
||||
bgPath = "nitro:/graphics/bg/Day_tropicaBeach_2.png";
|
||||
} else {
|
||||
bgPath = "nitro:/graphics/bg/Sunset_tropicaBeach_2.png";
|
||||
}
|
||||
lodepng::decode(image, width, height, bgPath);
|
||||
for(unsigned i=0;i<image.size()/4;i++) {
|
||||
bgSpriteMemExt[1][i] = image[i*4]>>3 | (image[(i*4)+1]>>3)<<5 | (image[(i*4)+2]>>3)<<10 | BIT(15);
|
||||
}
|
||||
if (studioBg == 51) {
|
||||
char bgAniPath[64];
|
||||
for (int i = 1; i <= aniFrames; i++) {
|
||||
sprintf(bgAniPath, bgPath, i);
|
||||
image.clear();
|
||||
bgPath = "nitro:/graphics/bg/liveMusicClub3_3.png";
|
||||
lodepng::decode(image, width, height, bgPath);
|
||||
for(unsigned i=0;i<image.size()/4;i++) {
|
||||
bgSpriteMemExt[2][i] = image[i*4]>>3 | (image[(i*4)+1]>>3)<<5 | (image[(i*4)+2]>>3)<<10 | BIT(15);
|
||||
lodepng::decode(image, width, height, bgAniPath);
|
||||
for(unsigned p=0;p<image.size()/4;p++) {
|
||||
bgSpriteMemExt[i-1][p] = image[p*4]>>3 | (image[(p*4)+1]>>3)<<5 | (image[(p*4)+2]>>3)<<10 | BIT(15);
|
||||
}
|
||||
}
|
||||
if (studioBg == 64) {
|
||||
bgAnimationDelay = iFps/2;
|
||||
bgAnimation[0] = 0;
|
||||
bgAnimation[1] = 1;
|
||||
bgAnimation[2] = 100;
|
||||
} else if (studioBg == 51 || studioBg == 63) {
|
||||
bgAnimationDelay = iFps/2;
|
||||
bgAnimation[0] = 0;
|
||||
bgAnimation[1] = 1;
|
||||
|
BIN
nds/nitrofiles/graphics/bg/cakeShop4.png
Normal file
After Width: | Height: | Size: 63 KiB |
BIN
nds/nitrofiles/graphics/bg/charityStage.png
Normal file
After Width: | Height: | Size: 64 KiB |
BIN
nds/nitrofiles/graphics/bg/concertHall.png
Normal file
After Width: | Height: | Size: 47 KiB |
BIN
nds/nitrofiles/graphics/bg/florist.png
Normal file
After Width: | Height: | Size: 61 KiB |
BIN
nds/nitrofiles/graphics/bg/girlyStage_0.png
Normal file
After Width: | Height: | Size: 34 KiB |
BIN
nds/nitrofiles/graphics/bg/girlyStage_1.png
Normal file
After Width: | Height: | Size: 35 KiB |
BIN
nds/nitrofiles/graphics/bg/lifestyleShop4.png
Normal file
After Width: | Height: | Size: 72 KiB |
BIN
nds/nitrofiles/graphics/bg/livelyStage_0.png
Normal file
After Width: | Height: | Size: 100 KiB |
BIN
nds/nitrofiles/graphics/bg/livelyStage_1.png
Normal file
After Width: | Height: | Size: 100 KiB |
BIN
nds/nitrofiles/graphics/bg/livelyStage_2.png
Normal file
After Width: | Height: | Size: 101 KiB |
BIN
nds/nitrofiles/graphics/bg/livelyStage_3.png
Normal file
After Width: | Height: | Size: 101 KiB |
@ -108,7 +108,7 @@ void PhotoStudio::getMaxChars() {
|
||||
import_totalCharacters = 9;
|
||||
break;
|
||||
case 3:
|
||||
import_totalCharacters = 19;
|
||||
import_totalCharacters = 26;
|
||||
break;
|
||||
case 4:
|
||||
case 5:
|
||||
|