Change name to Super Photo Studio

This commit is contained in:
RocketRobz 2020-07-17 01:48:14 -06:00
parent a5efadd99a
commit e8f733597b
18 changed files with 339 additions and 26 deletions

View File

@ -48,7 +48,7 @@ VERSION_MICRO := 1
# - icon.png
# - <libctru folder>/default_icon.png
#---------------------------------------------------------------------------------
TARGET := RocketPhotoShoot
TARGET := SuperPhotoStudio
BUILD := build
UNIVCORE := Universal-Core
SOURCES := $(UNIVCORE) source source/screens source/utils
@ -58,7 +58,7 @@ GRAPHICS := assets/gfx assets/gfx_chars assets/gfx_charprevbg
ROMFS := romfs
GFXBUILD := $(ROMFS)/gfx
APP_AUTHOR := RocketRobz
APP_NAME := Rocket Photo Shoot
APP_NAME := Super Photo Studio
ICON := app/icon.png
BNR_IMAGE := app/banner.png
BNR_AUDIO := app/BannerAudio.bcwav
@ -228,7 +228,7 @@ $(OUTPUT).cia : $(OUTPUT).elf $(OUTPUT).smdh
$(BANNERTOOL) makesmdh -i "../app/icon.png" -s "$(APP_NAME)" -l "$(APP_NAME)" -p "$(APP_AUTHOR)" -o "../app/icon.bin"
$(MAKEROM) -f cia -target t -exefslogo -o "../RocketPhotoShoot.cia" -elf "../RocketPhotoShoot.elf" -rsf "../app/build-cia.rsf" -banner "../app/banner.bin" -icon "../app/icon.bin" -logo "../app/logo.bcma.lz" -DAPP_ROMFS="$(TOPDIR)/$(ROMFS)" -major $(VERSION_MAJOR) -minor $(VERSION_MINOR) -micro $(VERSION_MICRO) -DAPP_VERSION_MAJOR="$(VERSION_MAJOR)"
$(MAKEROM) -f cia -target t -exefslogo -o "../SuperPhotoStudio.cia" -elf "../SuperPhotoStudio.elf" -rsf "../app/build-cia.rsf" -banner "../app/banner.bin" -icon "../app/icon.bin" -logo "../app/logo.bcma.lz" -DAPP_ROMFS="$(TOPDIR)/$(ROMFS)" -major $(VERSION_MAJOR) -minor $(VERSION_MINOR) -micro $(VERSION_MICRO) -DAPP_VERSION_MAJOR="$(VERSION_MAJOR)"
#---------------------------------------------------------------------------------
# you need a rule like this for each extension you use as binary data
#---------------------------------------------------------------------------------

View File

@ -1,15 +1,26 @@
<p align="center">
<img src="https://github.com/RocketRobz/RocketPhotoShoot/blob/master/resources/title.png"><br>
<img src="https://github.com/RocketRobz/SuperPhotoStudio/blob/master/resources/title.png"><br>
</p>
A photo studio for your Nintendo 3DS, in glorious Hori-HD (800px mode)!
What happens when you take the concept of *Super Smash Bros.*, and turn it from a fighting game, into a photo shoot application?
The result, *Super Photo Studio*! Take pictures of your favorite all-star characters, including Robz himself, in any location possible!
# Features
* High-resolution Hori-HD (800px wide mode), exclusive to 3DS, New 3DS, and New 2DS consoles!
* Pre-rendered characters and backgrounds, from the Mario, Sonic, and Style Savvy series, and more to come!
* Take pictures of your favorite characters, and even Robz himself, in any location possible!
* Pre-rendered characters and backgrounds, from Mario, Sonic, Style Savvy, and more!
* Take pictures of your favorite characters, and even Robz himself, in any location possible!
* The first homebrew appearance of Robz' fashionable twin, Rabz!
* A Girls Mode/Style Savvy/Style Boutique soundfont cover of the Sega CD (Model 2) BIOS music!
# Characters and Locations by
* Nintendo
* Rare
* RocketRobz*
* SEGA
* StackZ*
* Syn Sophia
(*Homebrew dev)
# Credits
* devkitPro: libctru, citro2d/3d, nds-hb-menu's file/folder browsing code
* Universal Team: Universal Core

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 31 KiB

View File

@ -1,5 +1,5 @@
BasicInfo:
Title : "RocketPhotoShoot"
Title : "SuperPhotoStudio"
ProductCode : "CTR-H-RPHO"
Logo : Nintendo # Nintendo / Licensed / Distributed / iQue / iQueForSystem

View File

@ -17,5 +17,6 @@ photo_bg.png
logo_horiHD.png
logo_rocketrobz.png
title.png
titleMetal.png
logo_UniversalCore.png
homeicon.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 227 KiB

BIN
assets/gfx/titleMetal.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 609 B

View File

@ -43,7 +43,8 @@ namespace GFX {
void showBgSprite(int zoomIn);
void animateBgSprite(void);
void showCharSprite(int num, bool flipH, int zoomIn, int fadeAlpha, bool lightingEffects = false);
void DrawSprite(int img, int x, int y, float ScaleX = 1, float ScaleY = 1, GPU_TEXTURE_FILTER_PARAM filter = GPU_NEAREST);
void DrawSprite(int img, int x, int y, float ScaleX = 1, float ScaleY = 1);
void DrawSpriteLinear(int img, int x, int y, float ScaleX = 1, float ScaleY = 1);
void DrawSpriteBlend(int img, float x, float y, u32 color, float ScaleX = 1, float ScaleY = 1, GPU_TEXTURE_FILTER_PARAM filter = GPU_NEAREST);
// Draw Cursor.

285
resources/curve_bend.points Normal file
View File

@ -0,0 +1,285 @@
POINTFILE_CURVE_BEND
VERSION 1.0
# points for upper and lower smooth curve (0.0 <= pt <= 1.0)
# there are upto 17 points where unused points are set to -1
# UPPERX UPPERY LOWERX LOWERY
POINTS +0.000000 +0.500000 +0.000000 +0.447059
POINTS -1.000000 -1.000000 -1.000000 -1.000000
POINTS -1.000000 -1.000000 -1.000000 -1.000000
POINTS -1.000000 -1.000000 -1.000000 -1.000000
POINTS +0.250980 +0.580392 +0.250980 +0.533333
POINTS -1.000000 -1.000000 -1.000000 -1.000000
POINTS -1.000000 -1.000000 -1.000000 -1.000000
POINTS -1.000000 -1.000000 -1.000000 -1.000000
POINTS +0.501961 +0.623529 +0.501961 +0.568627
POINTS -1.000000 -1.000000 -1.000000 -1.000000
POINTS -1.000000 -1.000000 -1.000000 -1.000000
POINTS -1.000000 -1.000000 -1.000000 -1.000000
POINTS +0.752941 +0.580392 +0.752941 +0.537255
POINTS -1.000000 -1.000000 -1.000000 -1.000000
POINTS -1.000000 -1.000000 -1.000000 -1.000000
POINTS -1.000000 -1.000000 -1.000000 -1.000000
POINTS +1.000000 +0.500000 +1.000000 +0.443137
# y values for upper/lower freehand curve (0 <= y <= 255)
# there must be exactly 256 y values
# UPPER_Y LOWER_Y
VAL_Y 128 114
VAL_Y 128 115
VAL_Y 128 115
VAL_Y 129 115
VAL_Y 129 116
VAL_Y 129 116
VAL_Y 130 116
VAL_Y 130 117
VAL_Y 130 117
VAL_Y 131 117
VAL_Y 131 118
VAL_Y 131 118
VAL_Y 132 119
VAL_Y 132 119
VAL_Y 132 119
VAL_Y 133 120
VAL_Y 133 120
VAL_Y 133 121
VAL_Y 134 121
VAL_Y 134 121
VAL_Y 134 122
VAL_Y 135 122
VAL_Y 135 122
VAL_Y 136 123
VAL_Y 136 123
VAL_Y 136 124
VAL_Y 137 124
VAL_Y 137 124
VAL_Y 137 125
VAL_Y 138 125
VAL_Y 138 125
VAL_Y 138 126
VAL_Y 139 126
VAL_Y 139 126
VAL_Y 139 127
VAL_Y 140 127
VAL_Y 140 127
VAL_Y 140 128
VAL_Y 141 128
VAL_Y 141 129
VAL_Y 141 129
VAL_Y 141 129
VAL_Y 142 130
VAL_Y 142 130
VAL_Y 142 130
VAL_Y 143 131
VAL_Y 143 131
VAL_Y 143 131
VAL_Y 144 132
VAL_Y 144 132
VAL_Y 144 132
VAL_Y 145 132
VAL_Y 145 133
VAL_Y 145 133
VAL_Y 145 133
VAL_Y 146 134
VAL_Y 146 134
VAL_Y 146 134
VAL_Y 147 135
VAL_Y 147 135
VAL_Y 147 135
VAL_Y 147 135
VAL_Y 148 136
VAL_Y 148 136
VAL_Y 148 136
VAL_Y 148 136
VAL_Y 149 137
VAL_Y 149 137
VAL_Y 149 137
VAL_Y 149 137
VAL_Y 150 138
VAL_Y 150 138
VAL_Y 150 138
VAL_Y 150 138
VAL_Y 151 138
VAL_Y 151 139
VAL_Y 151 139
VAL_Y 151 139
VAL_Y 152 139
VAL_Y 152 139
VAL_Y 152 140
VAL_Y 152 140
VAL_Y 153 140
VAL_Y 153 140
VAL_Y 153 140
VAL_Y 153 141
VAL_Y 153 141
VAL_Y 154 141
VAL_Y 154 141
VAL_Y 154 141
VAL_Y 154 142
VAL_Y 155 142
VAL_Y 155 142
VAL_Y 155 142
VAL_Y 155 142
VAL_Y 155 142
VAL_Y 156 142
VAL_Y 156 143
VAL_Y 156 143
VAL_Y 156 143
VAL_Y 156 143
VAL_Y 156 143
VAL_Y 157 143
VAL_Y 157 143
VAL_Y 157 143
VAL_Y 157 144
VAL_Y 157 144
VAL_Y 157 144
VAL_Y 158 144
VAL_Y 158 144
VAL_Y 158 144
VAL_Y 158 144
VAL_Y 158 144
VAL_Y 158 144
VAL_Y 158 144
VAL_Y 158 145
VAL_Y 158 145
VAL_Y 159 145
VAL_Y 159 145
VAL_Y 159 145
VAL_Y 159 145
VAL_Y 159 145
VAL_Y 159 145
VAL_Y 159 145
VAL_Y 159 145
VAL_Y 159 145
VAL_Y 159 145
VAL_Y 159 145
VAL_Y 159 145
VAL_Y 159 145
VAL_Y 159 145
VAL_Y 159 145
VAL_Y 159 145
VAL_Y 159 145
VAL_Y 159 145
VAL_Y 159 145
VAL_Y 159 145
VAL_Y 159 145
VAL_Y 159 145
VAL_Y 158 145
VAL_Y 158 145
VAL_Y 158 145
VAL_Y 158 145
VAL_Y 158 145
VAL_Y 158 145
VAL_Y 158 144
VAL_Y 158 144
VAL_Y 158 144
VAL_Y 157 144
VAL_Y 157 144
VAL_Y 157 144
VAL_Y 157 144
VAL_Y 157 144
VAL_Y 157 144
VAL_Y 157 144
VAL_Y 156 144
VAL_Y 156 143
VAL_Y 156 143
VAL_Y 156 143
VAL_Y 156 143
VAL_Y 155 143
VAL_Y 155 143
VAL_Y 155 143
VAL_Y 155 143
VAL_Y 155 142
VAL_Y 154 142
VAL_Y 154 142
VAL_Y 154 142
VAL_Y 154 142
VAL_Y 153 142
VAL_Y 153 142
VAL_Y 153 141
VAL_Y 153 141
VAL_Y 153 141
VAL_Y 152 141
VAL_Y 152 141
VAL_Y 152 140
VAL_Y 152 140
VAL_Y 151 140
VAL_Y 151 140
VAL_Y 151 140
VAL_Y 151 139
VAL_Y 150 139
VAL_Y 150 139
VAL_Y 150 139
VAL_Y 150 139
VAL_Y 149 138
VAL_Y 149 138
VAL_Y 149 138
VAL_Y 149 138
VAL_Y 148 137
VAL_Y 148 137
VAL_Y 148 137
VAL_Y 148 137
VAL_Y 147 136
VAL_Y 147 136
VAL_Y 147 136
VAL_Y 147 135
VAL_Y 146 135
VAL_Y 146 135
VAL_Y 146 135
VAL_Y 145 134
VAL_Y 145 134
VAL_Y 145 134
VAL_Y 145 133
VAL_Y 144 133
VAL_Y 144 133
VAL_Y 144 132
VAL_Y 143 132
VAL_Y 143 132
VAL_Y 143 131
VAL_Y 142 131
VAL_Y 142 130
VAL_Y 142 130
VAL_Y 141 130
VAL_Y 141 129
VAL_Y 141 129
VAL_Y 140 128
VAL_Y 140 128
VAL_Y 140 128
VAL_Y 139 127
VAL_Y 139 127
VAL_Y 139 127
VAL_Y 138 126
VAL_Y 138 126
VAL_Y 138 125
VAL_Y 137 125
VAL_Y 137 124
VAL_Y 137 124
VAL_Y 136 124
VAL_Y 136 123
VAL_Y 136 123
VAL_Y 135 122
VAL_Y 135 122
VAL_Y 135 122
VAL_Y 134 121
VAL_Y 134 121
VAL_Y 134 120
VAL_Y 133 120
VAL_Y 133 119
VAL_Y 133 119
VAL_Y 132 119
VAL_Y 132 118
VAL_Y 131 118
VAL_Y 131 117
VAL_Y 131 117
VAL_Y 130 116
VAL_Y 130 116
VAL_Y 130 116
VAL_Y 129 115
VAL_Y 129 115
VAL_Y 129 114
VAL_Y 128 114
VAL_Y 128 114
VAL_Y 128 113
VAL_Y 127 113

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 109 KiB

After

Width:  |  Height:  |  Size: 374 KiB

Binary file not shown.

View File

@ -527,14 +527,23 @@ void GFX::showCharSprite(int num, bool flipH, int zoomIn, int fadeAlpha, bool li
}
}
void GFX::DrawSprite(int img, int x, int y, float ScaleX, float ScaleY, GPU_TEXTURE_FILTER_PARAM filter) {
void GFX::DrawSprite(int img, int x, int y, float ScaleX, float ScaleY) {
float yPos = y;
if (shiftBySubPixel /*&& img != sprites_logo_savvymanager_idx*/) {
yPos -= 0.5f;
}
C2D_DrawImageAt(C2D_SpriteSheetGetImage(sprites, img), x, yPos, 0.5f, NULL, ScaleX, ScaleY);
}
void GFX::DrawSpriteLinear(int img, int x, int y, float ScaleX, float ScaleY) {
float yPos = y;
if (shiftBySubPixel /*&& img != sprites_logo_savvymanager_idx*/) {
yPos -= 0.5f;
}
C2D_Image image = C2D_SpriteSheetGetImage(sprites, img);
C3D_TexSetFilter(image.tex, filter, filter);
C3D_TexSetFilter(image.tex, GPU_LINEAR, GPU_LINEAR);
C2D_DrawImageAt(image, x, yPos, 0.5f, NULL, ScaleX, ScaleY);
}

View File

@ -23,7 +23,7 @@ bool rocketRobzScreen = false;
int delay = 0;
Handle threadRequest;
#define settingsIni "sdmc:/3ds/RocketPhotoShoot/settings.ini"
#define settingsIni "sdmc:/3ds/SuperPhotoStudio/settings.ini"
char verText[32];
int studioBg = 0;
@ -53,18 +53,18 @@ void loadSettings(void) {
CIniFile settingsini(settingsIni);
//studioBg = settingsini.GetInt("RocketPhotoShoot", "STUDIO_BG", studioBg);
setting = settingsini.GetInt("RocketPhotoShoot", "CINEMA_WIDE", false);
//studioBg = settingsini.GetInt("SuperPhotoStudio", "STUDIO_BG", studioBg);
setting = settingsini.GetInt("SuperPhotoStudio", "CINEMA_WIDE", false);
if (setting > 0) cinemaWide = true;
iFps = settingsini.GetInt("RocketPhotoShoot", "FRAME_RATE", iFps);
iFps = settingsini.GetInt("SuperPhotoStudio", "FRAME_RATE", iFps);
}
void saveSettings(void) {
CIniFile settingsini(settingsIni);
//settingsini.SetInt("RocketPhotoShoot", "STUDIO_BG", studioBg);
settingsini.SetInt("RocketPhotoShoot", "CINEMA_WIDE", (cinemaWide) ? true : false);
settingsini.SetInt("RocketPhotoShoot", "FRAME_RATE", iFps);
//settingsini.SetInt("SuperPhotoStudio", "STUDIO_BG", studioBg);
settingsini.SetInt("SuperPhotoStudio", "CINEMA_WIDE", (cinemaWide) ? true : false);
settingsini.SetInt("SuperPhotoStudio", "FRAME_RATE", iFps);
settingsini.SaveIniFileModified(settingsIni);
}
@ -181,7 +181,7 @@ int main()
// make folders if they don't exist
mkdir("sdmc:/3ds", 0777);
mkdir("sdmc:/3ds/RocketPhotoShoot", 0777);
mkdir("sdmc:/3ds/SuperPhotoStudio", 0777);
if ( access( "sdmc:/3ds/dspfirm.cdc", F_OK ) != -1 ) {
ndspInit();

View File

@ -23,6 +23,7 @@
static int charPageOrder[] = {4, 7, 5, 6, 0, 1, 2, 3};
static int metalXpos = 0;
static int currentCharacterRendered = 0;
extern bool musicPlayStarted;
extern bool clearTop;
@ -306,6 +307,11 @@ void PhotoStudio::Draw(void) const {
if (displayStudioBg) {
GFX::showBgSprite(zoomIn);
} else if (showScrollingBg) {
GFX::DrawSpriteLinear(sprites_titleMetal_idx, metalXpos, 0, 16, 16);
metalXpos--;
if (metalXpos < -8*16) {
metalXpos = 0;
}
GFX::DrawSprite(sprites_title_idx, 0, 0, 0.5);
} else {
Gui::Draw_Rect(0, 0, 400, 240, WHITE);
@ -367,7 +373,7 @@ void PhotoStudio::Draw(void) const {
Gui::DrawStringCentered(0, 8, 0.50, WHITE, "Super Mario series");
break;
case 4:
Gui::DrawStringCentered(0, 8, 0.50, WHITE, "Rocket Photo Shoot");
Gui::DrawStringCentered(0, 8, 0.50, WHITE, "Super Photo Studio");
break;
case 3:
Gui::DrawStringCentered(0, 8, 0.50, WHITE, ss4Title());
@ -449,7 +455,7 @@ void PhotoStudio::Draw(void) const {
Gui::DrawStringCentered(0, 8, 0.50, WHITE, "Perfect Dark");
break;
case 4:
Gui::DrawStringCentered(0, 8, 0.50, WHITE, "Rocket Photo Shoot");
Gui::DrawStringCentered(0, 8, 0.50, WHITE, "Super Photo Studio");
break;
case 3:
Gui::DrawStringCentered(0, 8, 0.50, WHITE, ss4Title());

View File

@ -32,7 +32,7 @@ void ProductIdent::Draw(void) const {
}
Gui::Draw_Rect(24, 100-(shiftBySubPixel ? 0.5f : 0), 400-28, 1, LIGHTRED);
Gui::DrawString(40, 100-(shiftBySubPixel ? 0.5f : 0), 0.45, LIGHTRED, "Title:");
Gui::DrawString(192, 100-(shiftBySubPixel ? 0.5f : 0), 0.45, LIGHTRED, "RocketPhotoShoot");
Gui::DrawString(192, 100-(shiftBySubPixel ? 0.5f : 0), 0.45, LIGHTRED, "SuperPhotoStudio");
Gui::DrawString(40, 110-(shiftBySubPixel ? 0.5f : 0), 0.45, LIGHTRED, "Product Code:");
Gui::DrawString(192, 110-(shiftBySubPixel ? 0.5f : 0), 0.45, LIGHTRED, "CTR-H-RPHO");
Gui::DrawString(40, 120-(shiftBySubPixel ? 0.5f : 0), 0.45, LIGHTRED, "Unique ID:");

View File

@ -13,9 +13,9 @@ void RocketRobz::Draw(void) const {
Gui::ScreenDraw(Top);
if (cinemaWide) {
GFX::DrawSprite(sprites_logo_rocketrobz_idx, 60, 36, 0.35f, 0.7f, GPU_LINEAR);
GFX::DrawSpriteLinear(sprites_logo_rocketrobz_idx, 60, 36, 0.35f, 0.7f);
} else {
GFX::DrawSprite(sprites_logo_rocketrobz_idx, 0, 0, 0.5, 1, (gfxIsWide() ? GPU_NEAREST : GPU_LINEAR));
GFX::DrawSpriteLinear(sprites_logo_rocketrobz_idx, 0, 0, 0.5, 1);
}
Gui::Draw_Rect(0, 238, 400, 2, C2D_Color32(0, 0, 0, 255)); // Hide line from other texture(s)

View File

@ -129,9 +129,9 @@ static void Screenshot_GenerateFilename(int count, char *file_name) {
int month = localtime(&t)->tm_mon + 1;
int year = localtime(&t)->tm_year + 1900;
mkdir("sdmc:/3ds/RocketPhotoShoot/photos", 0777);
mkdir("sdmc:/3ds/SuperPhotoStudio/photos", 0777);
sprintf(file_name, "sdmc:/3ds/RocketPhotoShoot/photos/Screenshot_%02d%02d%02d-%i.bmp", year, month, day, count);
sprintf(file_name, "sdmc:/3ds/SuperPhotoStudio/photos/Screenshot_%02d%02d%02d-%i.bmp", year, month, day, count);
}
void Screenshot_Capture(void) {