Add pose changing for Grace

Currently has 3 poses

ALSO: Disable music playback in DS(i) version
This commit is contained in:
RocketRobz 2023-01-13 22:52:58 -07:00
parent fef99ce06c
commit cfeddde346
23 changed files with 258 additions and 13 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 61 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

View File

@ -0,0 +1,4 @@
--atlas -f rgba -z auto
"characters/Style Savvy series/Grace/Spring/pose1/zoom0.png"
"characters/Style Savvy series/Grace/Spring/pose1/zoom1.png"
"characters/Style Savvy series/Grace/Spring/pose1/zoom2.png"

View File

@ -0,0 +1,4 @@
--atlas -f rgba -z auto
"characters/Style Savvy series/Grace/Spring/pose2/zoom0.png"
"characters/Style Savvy series/Grace/Spring/pose2/zoom1.png"
"characters/Style Savvy series/Grace/Spring/pose2/zoom2.png"

View File

@ -0,0 +1,4 @@
--atlas -f rgba -z auto
"characters/Style Savvy series/Grace/Spring/pose3/zoom0.png"
"characters/Style Savvy series/Grace/Spring/pose3/zoom1.png"
"characters/Style Savvy series/Grace/Spring/pose3/zoom2.png"

View File

@ -483,7 +483,7 @@ void GFX::reloadBgSprite() {
loadBgSprite(); loadBgSprite();
} }
bool GFX::loadCharSprite(int num, const char* t3xPathAllSeasons, const char* t3xPathOneSeason) { bool GFX::loadCharSprite(int num, const char* t3xPathPose, const char* t3xPathAllSeasons, const char* t3xPathOneSeason) {
if (chracterSpriteLoaded) { if (chracterSpriteLoaded) {
C2D_SpriteSheetFree(chracterSprite); C2D_SpriteSheetFree(chracterSprite);
chracterSpriteLoaded = false; chracterSpriteLoaded = false;
@ -491,7 +491,13 @@ bool GFX::loadCharSprite(int num, const char* t3xPathAllSeasons, const char* t3x
chracterSpriteFound[num] = false; chracterSpriteFound[num] = false;
bool allSeasons = true; bool allSeasons = true;
bool fileFound = false; bool fileFound = false;
fileFound = (access(t3xPathAllSeasons, F_OK) == 0); bool poseable = false;
fileFound = (access(t3xPathPose, F_OK) == 0);
if (fileFound) {
poseable = true;
} else {
fileFound = (access(t3xPathAllSeasons, F_OK) == 0);
}
if (!fileFound) { if (!fileFound) {
allSeasons = false; allSeasons = false;
fileFound = (access(t3xPathOneSeason, F_OK) == 0); fileFound = (access(t3xPathOneSeason, F_OK) == 0);
@ -501,7 +507,7 @@ bool GFX::loadCharSprite(int num, const char* t3xPathAllSeasons, const char* t3x
return false; return false;
} }
FILE* charFile = fopen((allSeasons ? t3xPathAllSeasons : t3xPathOneSeason), "rb"); FILE* charFile = fopen(poseable ? t3xPathPose : (allSeasons ? t3xPathAllSeasons : t3xPathOneSeason), "rb");
fread((void*)charSpriteMem[num], 1, charSpriteSize, charFile); fread((void*)charSpriteMem[num], 1, charSpriteSize, charFile);
fclose(charFile); fclose(charFile);

View File

@ -61,7 +61,7 @@ namespace GFX {
void unloadGameSelSheets(); void unloadGameSelSheets();
// Sprite Functions. // Sprite Functions.
bool loadCharSprite(int num, const char* t3xPathAllSeasons, const char* t3xPathOneSeason); bool loadCharSprite(int num, const char* t3xPathPose, const char* t3xPathAllSeasons, const char* t3xPathOneSeason);
#ifdef __3DS__ #ifdef __3DS__
void loadCharSpriteMem(int num); void loadCharSpriteMem(int num);
#else #else

View File

@ -2,7 +2,7 @@
#define _SAVVY_MANAGER_IMPORT_SS1_CHAR_NAMES_HPP #define _SAVVY_MANAGER_IMPORT_SS1_CHAR_NAMES_HPP
extern const char* import_ss1CharacterNames[8]; extern const char* import_ss1CharacterNames[8];
extern bool import_ss1CharacterGenders[8]; extern bool import_ss1CharacterGenders[8];
extern int import_ss1CharacterPoses[8];
#endif #endif

View File

@ -37,6 +37,7 @@ private:
const char* charGameTitle(void) const; const char* charGameTitle(void) const;
const char* bgmGameTitle(void) const; const char* bgmGameTitle(void) const;
bool charGender(int i) const; bool charGender(int i) const;
int charPose(int i) const;
const char* bgName(int i) const; const char* bgName(int i) const;
const char* charName(int i) const; const char* charName(int i) const;
const char* bgmName(int i) const; const char* bgmName(int i) const;
@ -63,13 +64,16 @@ private:
char chrFilePath[256]; char chrFilePath[256];
char chrFilePath2[256]; char chrFilePath2[256];
char chrFilePathPose[256];
char chrCounter[24]; char chrCounter[24];
char chrPoseCounter[24];
bool displayNothing = false; bool displayNothing = false;
bool displayStudioBg = false; bool displayStudioBg = false;
bool showScrollingBg = true; bool showScrollingBg = true;
bool characterPicked[5] = {false}; bool characterPicked[5] = {false};
bool characterFlipH[5] = {false}; bool characterFlipH[5] = {false};
int characterPose[5] = {0};
mutable int charFadeAlpha = 0; mutable int charFadeAlpha = 0;
bool previewCharacter = false; bool previewCharacter = false;
@ -101,6 +105,9 @@ private:
int bgmList_cursorPositionOnScreen = 0; int bgmList_cursorPositionOnScreen = 0;
int bgmShownFirst = 0; int bgmShownFirst = 0;
int charSettings_cursorPosition = 0;
int charSettings_cursorPositionOnScreen = 0;
int numberOfSettings = 1; int numberOfSettings = 1;
int settings_cursorPosition = 0; int settings_cursorPosition = 0;
int settings_cursorPositionOnScreen = 0; int settings_cursorPositionOnScreen = 0;

View File

@ -792,7 +792,7 @@ void GFX::reloadBgSprite() {
if (dsiFeatures()) dmaCopyHalfWordsAsynch(1, bmpImageBuffer2[0], bgGetGfxPtr(bg3Main), 0x18000); if (dsiFeatures()) dmaCopyHalfWordsAsynch(1, bmpImageBuffer2[0], bgGetGfxPtr(bg3Main), 0x18000);
} }
bool GFX::loadCharSprite(int num, const char* t3xPathAllSeasons, const char* t3xPathOneSeason) { bool GFX::loadCharSprite(int num, const char* t3xPathPose, const char* t3xPathAllSeasons, const char* t3xPathOneSeason) {
animateTitle = false; animateTitle = false;
if (chracterSpriteLoaded) { if (chracterSpriteLoaded) {
@ -801,7 +801,13 @@ bool GFX::loadCharSprite(int num, const char* t3xPathAllSeasons, const char* t3x
chracterSpriteFound[num] = false; chracterSpriteFound[num] = false;
bool allSeasons = true; bool allSeasons = true;
bool fileFound = false; bool fileFound = false;
fileFound = (access(t3xPathAllSeasons, F_OK) == 0); bool poseable = false;
fileFound = (access(t3xPathPose, F_OK) == 0);
if (fileFound) {
poseable = true;
} else {
fileFound = (access(t3xPathAllSeasons, F_OK) == 0);
}
if (!fileFound) { if (!fileFound) {
allSeasons = false; allSeasons = false;
fileFound = (access(t3xPathOneSeason, F_OK) == 0); fileFound = (access(t3xPathOneSeason, F_OK) == 0);
@ -813,7 +819,7 @@ bool GFX::loadCharSprite(int num, const char* t3xPathAllSeasons, const char* t3x
std::vector<unsigned char> image; std::vector<unsigned char> image;
unsigned width, height; unsigned width, height;
lodepng::decode(image, width, height, allSeasons ? t3xPathAllSeasons : t3xPathOneSeason); lodepng::decode(image, width, height, poseable ? t3xPathPose : (allSeasons ? t3xPathAllSeasons : t3xPathOneSeason));
bool alternatePixel = false; bool alternatePixel = false;
if (num == 4) { if (num == 4) {
for(unsigned i=0;i<image.size()/4;i++) { for(unsigned i=0;i<image.size()/4;i++) {

View File

@ -96,6 +96,8 @@ mm_sfxhand SoundControl::playBack() { return mmEffectEx(&snd_back); }
mm_sfxhand SoundControl::playHighlight() { return mmEffectEx(&snd_highlight); } mm_sfxhand SoundControl::playHighlight() { return mmEffectEx(&snd_highlight); }
void SoundControl::loadStream(const char* path, const char* pathCache, const char* loopPath, const char* loopPathCache, u32 sampleRate, bool stereo, bool loop) { void SoundControl::loadStream(const char* path, const char* pathCache, const char* loopPath, const char* loopPathCache, u32 sampleRate, bool stereo, bool loop) {
return; // Temporarily disabled
if (stream_source) { if (stream_source) {
stream_is_playing = false; stream_is_playing = false;
mmStreamClose(); mmStreamClose();

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 61 KiB

View File

@ -20,4 +20,15 @@ bool import_ss1CharacterGenders[] = {
false, // Female false, // Female
false, // Female false, // Female
false, // Female false, // Female
};
int import_ss1CharacterPoses[] = {
3,
1,
1,
1,
1,
1,
1,
1,
}; };

View File

@ -737,6 +737,50 @@ bool PhotoStudio::charGender(int i) const {
return true; return true;
} }
int PhotoStudio::charPose(int i) const {
switch (charPageOrder[char_highlightedGame[currentCharNum]]) {
case 0:
return import_ss1CharacterPoses[i];
/* case 1:
return import_ss2CharacterGenders[i];
case 2:
return import_ss3CharacterGenders[i];
case 3:
return import_ss4CharacterGenders[i];
case 4:
return rocketCharacterGenders[i];
case 5:
return smCharacterGenders[i];
case 6:
return sthCharacterGenders[i];
case 7:
return jfgCharacterGenders[i];
case 8:
return conkerCharacterGenders[i];
case 9:
return banjokCharacterGenders[i];
case 10:
return pacCharacterGenders[i];
case 11:
return swapCharacterGenders[i];
case 12:
return metroidCharacterGenders[i];
case 13:
return sc5CharacterGenders[i];
case 14:
return vvvvvvCharacterGenders[i];
case 15:
return kirbyCharacterGenders[i];
case 16:
return nesCharacterGenders[i];
case 17:
return nightsCharacterGenders[i];
case 0xFF:
return getExportedCharacterGender(i); */
}
return 0;
}
const char* PhotoStudio::bgmGameTitle(void) const { const char* PhotoStudio::bgmGameTitle(void) const {
switch (bgmPageOrder[bgm_highlightedGame]) { switch (bgmPageOrder[bgm_highlightedGame]) {
case 0: case 0:
@ -930,8 +974,10 @@ void PhotoStudio::loadChrImage(void) {
previewCharacter = false; previewCharacter = false;
#ifdef NDS #ifdef NDS
ditherlaceOnVBlank = true; ditherlaceOnVBlank = true;
const char* nullPath = "nitro:/null.png";
#else #else
gspWaitForVBlank(); gspWaitForVBlank();
const char* nullPath = "romfs:/null.t3x";
#endif #endif
if (charPageOrder[char_highlightedGame[currentCharNum]] == 0xFF) { if (charPageOrder[char_highlightedGame[currentCharNum]] == 0xFF) {
#ifdef NDS #ifdef NDS
@ -939,7 +985,7 @@ void PhotoStudio::loadChrImage(void) {
#else #else
sprintf(chrFilePath, "sdmc:/3ds/SuperPhotoStudio/characters/%s.t3x", getExportedCharacterName(importCharacterList_cursorPosition[currentCharNum])); sprintf(chrFilePath, "sdmc:/3ds/SuperPhotoStudio/characters/%s.t3x", getExportedCharacterName(importCharacterList_cursorPosition[currentCharNum]));
#endif #endif
previewCharacterFound[currentCharNum] = GFX::loadCharSprite(currentCharNum, chrFilePath, chrFilePath); previewCharacterFound[currentCharNum] = GFX::loadCharSprite(currentCharNum, nullPath, chrFilePath, nullPath);
} else if (charPageOrder[char_highlightedGame[currentCharNum]] >= 2) { } else if (charPageOrder[char_highlightedGame[currentCharNum]] >= 2) {
/*if (numberOfExportedCharacters > 0) { /*if (numberOfExportedCharacters > 0) {
sprintf(chrFilePath, "sdmc:/3ds/SavvyManager/SS%i/characters/previews/%s.t3x", 4, getExportedCharacterName(importCharacterList_cursorPosition[currentCharNum])); // All Seasons sprintf(chrFilePath, "sdmc:/3ds/SavvyManager/SS%i/characters/previews/%s.t3x", 4, getExportedCharacterName(importCharacterList_cursorPosition[currentCharNum])); // All Seasons
@ -951,16 +997,18 @@ void PhotoStudio::loadChrImage(void) {
#else #else
sprintf(chrFilePath, "romfs:/gfx/%s.t3x", import_characterFileName()); sprintf(chrFilePath, "romfs:/gfx/%s.t3x", import_characterFileName());
#endif #endif
previewCharacterFound[currentCharNum] = GFX::loadCharSprite(currentCharNum, chrFilePath, chrFilePath); previewCharacterFound[currentCharNum] = GFX::loadCharSprite(currentCharNum, nullPath, chrFilePath, chrFilePath);
} else { } else {
#ifdef NDS #ifdef NDS
sprintf(chrFilePathPose, "nitro:/graphics/char/ss%i_%s0/%i.png", 4, import_characterName(), characterPose[currentCharNum]+1);
sprintf(chrFilePath, "nitro:/graphics/char/ss%i_%s.png", 4, import_characterName()); // All Seasons sprintf(chrFilePath, "nitro:/graphics/char/ss%i_%s.png", 4, import_characterName()); // All Seasons
sprintf(chrFilePath2, "nitro:/graphics/char/ss%i_%s%i.png", 4, import_characterName(), seasonNo[currentCharNum]); // One Season sprintf(chrFilePath2, "nitro:/graphics/char/ss%i_%s%i.png", 4, import_characterName(), seasonNo[currentCharNum]); // One Season
#else #else
sprintf(chrFilePathPose, "romfs:/gfx/ss%i_%s0_pose%i.t3x", 4, import_characterName(), characterPose[currentCharNum]+1);
sprintf(chrFilePath, "romfs:/gfx/ss%i_%s.t3x", 4, import_characterName()); // All Seasons sprintf(chrFilePath, "romfs:/gfx/ss%i_%s.t3x", 4, import_characterName()); // All Seasons
sprintf(chrFilePath2, "romfs:/gfx/ss%i_%s%i.t3x", 4, import_characterName(), seasonNo[currentCharNum]); // One Season sprintf(chrFilePath2, "romfs:/gfx/ss%i_%s%i.t3x", 4, import_characterName(), seasonNo[currentCharNum]); // One Season
#endif #endif
previewCharacterFound[currentCharNum] = GFX::loadCharSprite(currentCharNum, chrFilePath, chrFilePath2); previewCharacterFound[currentCharNum] = GFX::loadCharSprite(currentCharNum, chrFilePathPose, chrFilePath, chrFilePath2);
} }
#ifdef NDS #ifdef NDS
ditherlaceOnVBlank = false; ditherlaceOnVBlank = false;
@ -1008,7 +1056,34 @@ void PhotoStudio::Draw(void) const {
} }
cursorX = 200; cursorX = 200;
if (subScreenMode == 3) { if (subScreenMode == 4) {
cursorY = 52+(40*charSettings_cursorPositionOnScreen);
if (redrawText) {
printSmall(false, 0, 6, "Character Settings", Alignment::center);
}
if (!displayNothing) {
int i2 = 40;
int i3 = 0;
// Reset item button Y positions
for (int i = 0; i < 3; i++) {
for (int x = 0; x < 4; x++) {
oamSub.oamMemory[(2+i)+(x*3)].y = 192;
}
oamSub.oamMemory[14+i].y = 192;
oamSub.oamMemory[17+i].y = 192;
}
//for (int i = 0; i < 2; i++) {
for (int x = 0; x < 4; x++) {
oamSub.oamMemory[(2+i3)+(x*3)].y = i2-16;
}
sprintf((char*)chrPoseCounter, "Pose < %d/%d >", characterPose[currentCharNum]+1, charPose(importCharacterList_cursorPosition[currentCharNum]));
if (redrawText) printSmall(false, 26, i2, chrPoseCounter);
//i2 += 40;
//i3++;
//}
}
} else if (subScreenMode == 3) {
cursorY = 52+(40*bgmList_cursorPositionOnScreen); cursorY = 52+(40*bgmList_cursorPositionOnScreen);
if (redrawText) { if (redrawText) {
printSmall(false, 0, 6, bgmGameTitle(), Alignment::center); printSmall(false, 0, 6, bgmGameTitle(), Alignment::center);
@ -1245,6 +1320,20 @@ void PhotoStudio::Draw(void) const {
cursorX = 248; cursorX = 248;
if (subScreenMode == 10) { if (subScreenMode == 10) {
SettingsDraw(); SettingsDraw();
} else if (subScreenMode == 4) {
cursorY = 64+(48*charSettings_cursorPositionOnScreen);
Gui::DrawStringCentered(0, 8, 0.50, WHITE, "Character Settings");
if (!displayNothing) {
int i2 = 48;
//for (int i = 0; i < 2; i++) {
GFX::DrawSprite(sprites_item_button_idx, 18, i2-20);
sprintf((char*)chrPoseCounter, "Pose < %d/%d >", characterPose[currentCharNum]+1, charPose(importCharacterList_cursorPosition[currentCharNum]));
Gui::DrawString(32, i2, 0.65, WHITE, chrPoseCounter);
//i2 += 48;
//}
}
} else if (subScreenMode == 3) { } else if (subScreenMode == 3) {
cursorY = 64+(48*bgmList_cursorPositionOnScreen); cursorY = 64+(48*bgmList_cursorPositionOnScreen);
@ -1427,6 +1516,113 @@ void PhotoStudio::Logic(u32 hDown, u32 hHeld, touchPosition touch) {
} else if (subScreenMode == 10) { } else if (subScreenMode == 10) {
SettingsLogic(hDown, hHeld, touch); SettingsLogic(hDown, hHeld, touch);
#endif #endif
} else if (subScreenMode == 4) {
if (hDown & KEY_A) {
sndSelect();
subScreenMode = 0;
#ifdef NDS
redrawText = true;
Gui::DrawScreen();
#endif
}
if (hDown & KEY_SELECT) {
sndSelect();
characterFlipH[currentCharNum] = !characterFlipH[currentCharNum];
#ifdef NDS
GFX::loadCharSpriteMem(zoomIn, &characterFlipH[0]);
#endif
renderTop = true;
}
if (charPose(importCharacterList_cursorPosition[currentCharNum]) > 0) {
if (hDown & KEY_DLEFT) {
sndHighlight();
characterPose[currentCharNum]--;
if (characterPose[currentCharNum] < 0) characterPose[currentCharNum] = charPose(importCharacterList_cursorPosition[currentCharNum])-1;
getMaxChars();
renderTop = true;
}
if (hDown & KEY_DRIGHT) {
sndHighlight();
characterPose[currentCharNum]++;
if (characterPose[currentCharNum] > charPose(importCharacterList_cursorPosition[currentCharNum])-1) characterPose[currentCharNum] = 0;
getMaxChars();
renderTop = true;
}
if ((hDown & KEY_DLEFT) || (hDown & KEY_DRIGHT)) {
if (charPageOrder[char_highlightedGame[currentCharNum]] == 0xFF) {
previewCharacter = false;
if (!exportedCharListGotten) {
displayNothing = true;
gspWaitForVBlank();
getExportedCharacterContents();
exportedCharListGotten = true;
displayNothing = false;
}
}
getMaxChars();
#ifdef NDS
redrawText = true;
Gui::DrawScreen();
#endif
renderTop = true;
loadChrImage();
}
}
if (charPageOrder[char_highlightedGame[currentCharNum]] != 0xFF) {
if ((hDown & KEY_L) || (hDown & KEY_ZL)) {
sndHighlight();
seasonNo[currentCharNum]--;
if (seasonNo[currentCharNum] < 0) seasonNo[currentCharNum] = 3;
#ifdef NDS
redrawText = true;
Gui::DrawScreen();
#endif
loadChrImage();
renderTop = true;
}
if ((hDown & KEY_R) || (hDown & KEY_ZR)) {
sndHighlight();
seasonNo[currentCharNum]++;
if (seasonNo[currentCharNum] > 3) seasonNo[currentCharNum] = 0;
#ifdef NDS
redrawText = true;
Gui::DrawScreen();
#endif
loadChrImage();
renderTop = true;
}
if (hDown & KEY_Y) {
int seasonNoBak = seasonNo[currentCharNum];
seasonNo[currentCharNum] = 4; // Special outfit
if (strcmp(seasonName(), "") != 0) {
sndHighlight();
#ifdef NDS
redrawText = true;
Gui::DrawScreen();
#endif
loadChrImage();
renderTop = true;
} else {
seasonNo[currentCharNum] = seasonNoBak;
}
}
}
if ((hDown & KEY_B) || ((hDown & KEY_TOUCH) && touchingBackButton())) {
sndBack();
subScreenMode = 2;
#ifdef NDS
redrawText = true;
Gui::DrawScreen();
#endif
}
} else if (subScreenMode == 3) { } else if (subScreenMode == 3) {
if (showCursor) { if (showCursor) {
if (hDown & KEY_DUP) { if (hDown & KEY_DUP) {
@ -1542,6 +1738,7 @@ void PhotoStudio::Logic(u32 hDown, u32 hHeld, touchPosition touch) {
if (seasonNo[currentCharNum] == 4 && strcmp(seasonName(), "") == 0) { if (seasonNo[currentCharNum] == 4 && strcmp(seasonName(), "") == 0) {
seasonNo[currentCharNum] = 0; seasonNo[currentCharNum] = 0;
} }
characterPose[currentCharNum] = 0;
#ifdef NDS #ifdef NDS
redrawText = true; redrawText = true;
Gui::DrawScreen(); Gui::DrawScreen();
@ -1570,6 +1767,7 @@ void PhotoStudio::Logic(u32 hDown, u32 hHeld, touchPosition touch) {
if (seasonNo[currentCharNum] == 4 && strcmp(seasonName(), "") == 0) { if (seasonNo[currentCharNum] == 4 && strcmp(seasonName(), "") == 0) {
seasonNo[currentCharNum] = 0; seasonNo[currentCharNum] = 0;
} }
characterPose[currentCharNum] = 0;
#ifdef NDS #ifdef NDS
redrawText = true; redrawText = true;
Gui::DrawScreen(); Gui::DrawScreen();
@ -1581,7 +1779,7 @@ void PhotoStudio::Logic(u32 hDown, u32 hHeld, touchPosition touch) {
if (hDown & KEY_A) { if (hDown & KEY_A) {
sndSelect(); sndSelect();
subScreenMode = 0; subScreenMode = 4;
#ifdef NDS #ifdef NDS
redrawText = true; redrawText = true;
Gui::DrawScreen(); Gui::DrawScreen();
@ -1662,6 +1860,7 @@ void PhotoStudio::Logic(u32 hDown, u32 hHeld, touchPosition touch) {
} }
} }
getMaxChars(); getMaxChars();
characterPose[currentCharNum] = 0;
#ifdef NDS #ifdef NDS
redrawText = true; redrawText = true;
Gui::DrawScreen(); Gui::DrawScreen();
@ -1675,6 +1874,7 @@ void PhotoStudio::Logic(u32 hDown, u32 hHeld, touchPosition touch) {
sndHighlight(); sndHighlight();
seasonNo[currentCharNum]--; seasonNo[currentCharNum]--;
if (seasonNo[currentCharNum] < 0) seasonNo[currentCharNum] = 3; if (seasonNo[currentCharNum] < 0) seasonNo[currentCharNum] = 3;
characterPose[currentCharNum] = 0;
#ifdef NDS #ifdef NDS
redrawText = true; redrawText = true;
Gui::DrawScreen(); Gui::DrawScreen();
@ -1687,6 +1887,7 @@ void PhotoStudio::Logic(u32 hDown, u32 hHeld, touchPosition touch) {
sndHighlight(); sndHighlight();
seasonNo[currentCharNum]++; seasonNo[currentCharNum]++;
if (seasonNo[currentCharNum] > 3) seasonNo[currentCharNum] = 0; if (seasonNo[currentCharNum] > 3) seasonNo[currentCharNum] = 0;
characterPose[currentCharNum] = 0;
#ifdef NDS #ifdef NDS
redrawText = true; redrawText = true;
Gui::DrawScreen(); Gui::DrawScreen();