Skip to content

Commit 189bccd

Browse files
committed
Add setting TWL clock speed for when screen filter and/or DS Phat colors are used for nds-bootstrap
Turned on by default
1 parent 29495b0 commit 189bccd

File tree

14 files changed

+90
-42
lines changed

14 files changed

+90
-42
lines changed

quickmenu/arm9/source/graphics/graphics.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@
2424
extern bool moveIconUp[7];
2525
extern int iconYpos[7];
2626

27+
extern u16* colorTable;
28+
2729
bool screenFadedIn(void);
2830
bool screenFadedOut(void);
2931
void SetBrightness(u8 screen, s8 bright);

quickmenu/arm9/source/main.cpp

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,7 @@ int mpuregion = 0;
128128
int mpusize = 0;
129129

130130
bool applaunch = false;
131+
bool colorLutBlacklisted = false;
131132
bool dsModeForced = false;
132133
// bool showCursor = true;
133134
bool startMenu = false;
@@ -181,6 +182,7 @@ bool setDSPhatColors() {
181182
for (unsigned int i = 0; i < sizeof(colorLutBlacklist)/sizeof(colorLutBlacklist[0]); i++) {
182183
if (memcmp(gameTid[ms().secondaryDevice], colorLutBlacklist[i], 3) == 0) {
183184
// Found match
185+
colorLutBlacklisted = true;
184186
return false;
185187
}
186188
}
@@ -191,7 +193,7 @@ bool setDSPhatColors() {
191193
/**
192194
* Disable TWL clock speed for a specific game.
193195
*/
194-
bool setClockSpeed() {
196+
bool setClockSpeed(const bool phatColors) {
195197
if (!ms().ignoreBlacklists) {
196198
// TODO: If the list gets large enough, switch to bsearch().
197199
for (unsigned int i = 0; i < sizeof(twlClockExcludeList)/sizeof(twlClockExcludeList[0]); i++) {
@@ -203,7 +205,12 @@ bool setClockSpeed() {
203205
}
204206
}
205207

206-
return perGameSettings_boostCpu == -1 ? DEFAULT_BOOST_CPU : perGameSettings_boostCpu;
208+
bool defaultSetting = DEFAULT_BOOST_CPU;
209+
if (perGameSettings_boostCpu == -1 && !colorLutBlacklisted && ((dsiFeatures() && !bs().b4dsMode) || !ms().secondaryDevice) && sys().dsiWramAccess() && !sys().dsiWramMirrored() && (colorTable || phatColors)) {
210+
defaultSetting = ms().boostCpuForClut;
211+
}
212+
213+
return perGameSettings_boostCpu == -1 ? defaultSetting : perGameSettings_boostCpu;
207214
}
208215

209216
/**
@@ -2606,8 +2613,9 @@ int dsClassicMenu(void) {
26062613

26072614
SetMPUSettings();
26082615

2609-
bool boostCpu = setClockSpeed();
2610-
bool useWidescreen = (perGameSettings_wideScreen == -1 ? ms().wideScreen : perGameSettings_wideScreen);
2616+
const bool phatColors = setDSPhatColors();
2617+
const bool boostCpu = setClockSpeed(phatColors);
2618+
const bool useWidescreen = (perGameSettings_wideScreen == -1 ? ms().wideScreen : perGameSettings_wideScreen);
26112619

26122620
const char *bootstrapinipath = (sys().isRunFromSD() ? BOOTSTRAP_INI : BOOTSTRAP_INI_FC);
26132621
CIniFile bootstrapini(bootstrapinipath);
@@ -2619,7 +2627,7 @@ int dsClassicMenu(void) {
26192627
bootstrapini.SetString("NDS-BOOTSTRAP", "HOMEBREW_ARG", (useWidescreen && (gameTid[ms().secondaryDevice][0] == 'W' || romVersion[ms().secondaryDevice] == 0x57)) ? "wide" : "");
26202628
bootstrapini.SetString("NDS-BOOTSTRAP", "RAM_DRIVE_PATH", (perGameSettings_ramDiskNo >= 0 && !ms().secondaryDevice) ? ramdiskpath : "sd:/null.img");
26212629
bootstrapini.SetString("NDS-BOOTSTRAP", "GUI_LANGUAGE", ms().getGuiLanguageString());
2622-
bootstrapini.SetInt("NDS-BOOTSTRAP", "PHAT_COLORS", setDSPhatColors());
2630+
bootstrapini.SetInt("NDS-BOOTSTRAP", "PHAT_COLORS", phatColors);
26232631
bootstrapini.SetInt("NDS-BOOTSTRAP", "LANGUAGE", perGameSettings_language == -2 ? ms().gameLanguage : perGameSettings_language);
26242632
bootstrapini.SetInt("NDS-BOOTSTRAP", "REGION", perGameSettings_region < -1 ? ms().gameRegion : perGameSettings_region);
26252633
bootstrapini.SetInt("NDS-BOOTSTRAP", "USE_ROM_REGION", perGameSettings_region < -1 ? ms().useRomRegion : 0);

romsel_aktheme/arm9/source/graphics/graphics.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@
2020
#pragma once
2121
#define REFRESH_EVERY_VBLANKS 60
2222

23+
extern u16* colorTable;
24+
2325
bool screenFadedIn(void);
2426
bool screenFadedOut(void);
2527
void SetBrightness(u8 screen, s8 bright);

romsel_aktheme/arm9/source/main.cpp

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@ int mpuregion = 0;
9898
int mpusize = 0;
9999

100100
bool applaunch = false;
101+
bool colorLutBlacklisted = false;
101102
bool dsModeForced = false;
102103

103104
bool startMenu = false;
@@ -248,6 +249,7 @@ bool setDSPhatColors() {
248249
for (unsigned int i = 0; i < sizeof(colorLutBlacklist)/sizeof(colorLutBlacklist[0]); i++) {
249250
if (memcmp(gameTid[cursorPosOnScreen], colorLutBlacklist[i], 3) == 0) {
250251
// Found match
252+
colorLutBlacklisted = true;
251253
return false;
252254
}
253255
}
@@ -258,7 +260,7 @@ bool setDSPhatColors() {
258260
/**
259261
* Disable TWL clock speed for a specific game.
260262
*/
261-
bool setClockSpeed() {
263+
bool setClockSpeed(const bool phatColors) {
262264
if (!ms().ignoreBlacklists) {
263265
// TODO: If the list gets large enough, switch to bsearch().
264266
for (unsigned int i = 0; i < sizeof(twlClockExcludeList)/sizeof(twlClockExcludeList[0]); i++) {
@@ -270,7 +272,12 @@ bool setClockSpeed() {
270272
}
271273
}
272274

273-
return perGameSettings_boostCpu == -1 ? DEFAULT_BOOST_CPU : perGameSettings_boostCpu;
275+
bool defaultSetting = DEFAULT_BOOST_CPU;
276+
if (perGameSettings_boostCpu == -1 && !colorLutBlacklisted && ((dsiFeatures() && !bs().b4dsMode) || !ms().secondaryDevice) && sys().dsiWramAccess() && !sys().dsiWramMirrored() && (colorTable || phatColors)) {
277+
defaultSetting = ms().boostCpuForClut;
278+
}
279+
280+
return perGameSettings_boostCpu == -1 ? defaultSetting : perGameSettings_boostCpu;
274281
}
275282

276283
/**
@@ -1702,8 +1709,9 @@ int akTheme(void) {
17021709

17031710
SetMPUSettings();
17041711

1705-
bool boostCpu = setClockSpeed();
1706-
bool useWidescreen = (perGameSettings_wideScreen == -1 ? ms().wideScreen : perGameSettings_wideScreen);
1712+
const bool phatColors = setDSPhatColors();
1713+
const bool boostCpu = setClockSpeed(phatColors);
1714+
const bool useWidescreen = (perGameSettings_wideScreen == -1 ? ms().wideScreen : perGameSettings_wideScreen);
17071715

17081716
const char *bootstrapinipath = (sys().isRunFromSD() ? BOOTSTRAP_INI : BOOTSTRAP_INI_FC);
17091717
CIniFile bootstrapini( bootstrapinipath );
@@ -1715,7 +1723,7 @@ int akTheme(void) {
17151723
bootstrapini.SetString("NDS-BOOTSTRAP", "HOMEBREW_ARG", (useWidescreen && (gameTid[cursorPosOnScreen][0] == 'W' || romVersion[cursorPosOnScreen] == 0x57)) ? "wide" : "");
17161724
bootstrapini.SetString("NDS-BOOTSTRAP", "RAM_DRIVE_PATH", (perGameSettings_ramDiskNo >= 0 && !ms().secondaryDevice) ? ramdiskpath : "sd:/null.img");
17171725
bootstrapini.SetString("NDS-BOOTSTRAP", "GUI_LANGUAGE", ms().getGuiLanguageString());
1718-
bootstrapini.SetInt("NDS-BOOTSTRAP", "PHAT_COLORS", setDSPhatColors());
1726+
bootstrapini.SetInt("NDS-BOOTSTRAP", "PHAT_COLORS", phatColors);
17191727
bootstrapini.SetInt("NDS-BOOTSTRAP", "LANGUAGE", perGameSettings_language == -2 ? ms().getGameLanguage() : perGameSettings_language);
17201728
bootstrapini.SetInt("NDS-BOOTSTRAP", "REGION", perGameSettings_region < -1 ? ms().gameRegion : perGameSettings_region);
17211729
bootstrapini.SetInt("NDS-BOOTSTRAP", "USE_ROM_REGION", perGameSettings_region < -1 ? ms().useRomRegion : 0);

romsel_dsimenutheme/arm9/source/fileBrowse.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1242,12 +1242,12 @@ void launchInternetBrowser(const vector<DirEntry>& dirContents) {
12421242
bootstrapini.SetInt("NDS-BOOTSTRAP", "BOOST_CPU", true);
12431243
bootstrapini.SetInt("NDS-BOOTSTRAP", "BOOST_VRAM", true);
12441244
} else {
1245-
extern bool setClockSpeed(void);
1245+
extern bool setClockSpeed(const bool phatColors);
12461246

12471247
bootstrapini.SetString("NDS-BOOTSTRAP", "SAV_PATH", savepath.c_str());
12481248
bootstrapini.SetString("NDS-BOOTSTRAP", "PRV_PATH", "");
12491249
bootstrapini.SetInt("NDS-BOOTSTRAP", "DSI_MODE", perGameSettings_dsiMode == -1 ? DEFAULT_DSI_MODE : perGameSettings_dsiMode);
1250-
bootstrapini.SetInt("NDS-BOOTSTRAP", "BOOST_CPU", setClockSpeed());
1250+
bootstrapini.SetInt("NDS-BOOTSTRAP", "BOOST_CPU", setClockSpeed(false));
12511251
bootstrapini.SetInt("NDS-BOOTSTRAP", "BOOST_VRAM", perGameSettings_boostVram == -1 ? DEFAULT_BOOST_VRAM : perGameSettings_boostVram);
12521252
}
12531253
bootstrapini.SetString("NDS-BOOTSTRAP", "HOMEBREW_ARG", "");

romsel_dsimenutheme/arm9/source/main.cpp

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,7 @@ int mpuregion = 0;
120120
int mpusize = 0;
121121

122122
bool applaunch = false;
123+
bool colorLutBlacklisted = false;
123124
bool dsModeForced = false;
124125

125126
bool useBackend = false;
@@ -179,6 +180,7 @@ bool setDSPhatColors() {
179180
for (unsigned int i = 0; i < sizeof(colorLutBlacklist)/sizeof(colorLutBlacklist[0]); i++) {
180181
if (memcmp(gameTid[CURPOS], colorLutBlacklist[i], 3) == 0) {
181182
// Found match
183+
colorLutBlacklisted = true;
182184
return false;
183185
}
184186
}
@@ -189,7 +191,7 @@ bool setDSPhatColors() {
189191
/**
190192
* Disable TWL clock speed for a specific game.
191193
*/
192-
bool setClockSpeed() {
194+
bool setClockSpeed(const bool phatColors) {
193195
if (!ms().ignoreBlacklists) {
194196
// TODO: If the list gets large enough, switch to bsearch().
195197
for (unsigned int i = 0; i < sizeof(twlClockExcludeList)/sizeof(twlClockExcludeList[0]); i++) {
@@ -201,7 +203,12 @@ bool setClockSpeed() {
201203
}
202204
}
203205

204-
return perGameSettings_boostCpu == -1 ? DEFAULT_BOOST_CPU : perGameSettings_boostCpu;
206+
bool defaultSetting = DEFAULT_BOOST_CPU;
207+
if (perGameSettings_boostCpu == -1 && !colorLutBlacklisted && ((dsiFeatures() && !bs().b4dsMode) || !ms().secondaryDevice) && sys().dsiWramAccess() && !sys().dsiWramMirrored() && (colorTable || phatColors)) {
208+
defaultSetting = ms().boostCpuForClut;
209+
}
210+
211+
return perGameSettings_boostCpu == -1 ? defaultSetting : perGameSettings_boostCpu;
205212
}
206213

207214
/**
@@ -1672,8 +1679,9 @@ int dsiMenuTheme(void) {
16721679

16731680
SetMPUSettings();
16741681

1675-
bool boostCpu = setClockSpeed();
1676-
bool useWidescreen = (perGameSettings_wideScreen == -1 ? ms().wideScreen : perGameSettings_wideScreen);
1682+
const bool phatColors = setDSPhatColors();
1683+
const bool boostCpu = setClockSpeed(phatColors);
1684+
const bool useWidescreen = (perGameSettings_wideScreen == -1 ? ms().wideScreen : perGameSettings_wideScreen);
16771685

16781686
const char *bootstrapinipath = (sys().isRunFromSD() ? BOOTSTRAP_INI : BOOTSTRAP_INI_FC);
16791687
CIniFile bootstrapini(bootstrapinipath);
@@ -1685,7 +1693,7 @@ int dsiMenuTheme(void) {
16851693
}
16861694
bootstrapini.SetString("NDS-BOOTSTRAP", "RAM_DRIVE_PATH", (perGameSettings_ramDiskNo >= 0 && !ms().secondaryDevice) ? ramdiskpath : "sd:/null.img");
16871695
bootstrapini.SetString("NDS-BOOTSTRAP", "GUI_LANGUAGE", ms().getGuiLanguageString());
1688-
bootstrapini.SetInt("NDS-BOOTSTRAP", "PHAT_COLORS", setDSPhatColors());
1696+
bootstrapini.SetInt("NDS-BOOTSTRAP", "PHAT_COLORS", phatColors);
16891697
bootstrapini.SetInt("NDS-BOOTSTRAP", "LANGUAGE", perGameSettings_language == -2 ? ms().gameLanguage : perGameSettings_language);
16901698
bootstrapini.SetInt("NDS-BOOTSTRAP", "REGION", perGameSettings_region < -1 ? ms().gameRegion : perGameSettings_region);
16911699
bootstrapini.SetInt("NDS-BOOTSTRAP", "USE_ROM_REGION", perGameSettings_region < -1 ? ms().useRomRegion : 0);

romsel_r4theme/arm9/source/graphics/graphics.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@
2020
#pragma once
2121
#define REFRESH_EVERY_VBLANKS 60
2222

23+
extern u16* colorTable;
24+
2325
bool screenFadedIn(void);
2426
bool screenFadedOut(void);
2527
void SetBrightness(u8 screen, s8 bright);

romsel_r4theme/arm9/source/main.cpp

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,7 @@ int mpuregion = 0;
9999
int mpusize = 0;
100100

101101
bool applaunch = false;
102+
bool colorLutBlacklisted = false;
102103
bool dsModeForced = false;
103104

104105
bool startMenu = true;
@@ -223,6 +224,7 @@ bool setDSPhatColors() {
223224
for (unsigned int i = 0; i < sizeof(colorLutBlacklist)/sizeof(colorLutBlacklist[0]); i++) {
224225
if (memcmp(gameTid, colorLutBlacklist[i], 3) == 0) {
225226
// Found match
227+
colorLutBlacklisted = true;
226228
return false;
227229
}
228230
}
@@ -233,7 +235,7 @@ bool setDSPhatColors() {
233235
/**
234236
* Disable TWL clock speed for a specific game.
235237
*/
236-
bool setClockSpeed() {
238+
bool setClockSpeed(const bool phatColors) {
237239
if (!ms().ignoreBlacklists) {
238240
// TODO: If the list gets large enough, switch to bsearch().
239241
for (unsigned int i = 0; i < sizeof(twlClockExcludeList)/sizeof(twlClockExcludeList[0]); i++) {
@@ -245,7 +247,12 @@ bool setClockSpeed() {
245247
}
246248
}
247249

248-
return perGameSettings_boostCpu == -1 ? DEFAULT_BOOST_CPU : perGameSettings_boostCpu;
250+
bool defaultSetting = DEFAULT_BOOST_CPU;
251+
if (perGameSettings_boostCpu == -1 && !colorLutBlacklisted && ((dsiFeatures() && !bs().b4dsMode) || !ms().secondaryDevice) && sys().dsiWramAccess() && !sys().dsiWramMirrored() && (colorTable || phatColors)) {
252+
defaultSetting = ms().boostCpuForClut;
253+
}
254+
255+
return perGameSettings_boostCpu == -1 ? defaultSetting : perGameSettings_boostCpu;
249256
}
250257

251258
/**
@@ -1862,8 +1869,9 @@ int r4Theme(void) {
18621869

18631870
SetMPUSettings();
18641871

1865-
bool boostCpu = setClockSpeed();
1866-
bool useWidescreen = (perGameSettings_wideScreen == -1 ? ms().wideScreen : perGameSettings_wideScreen);
1872+
const bool phatColors = setDSPhatColors();
1873+
const bool boostCpu = setClockSpeed(phatColors);
1874+
const bool useWidescreen = (perGameSettings_wideScreen == -1 ? ms().wideScreen : perGameSettings_wideScreen);
18671875

18681876
const char *bootstrapinipath = (sys().isRunFromSD() ? BOOTSTRAP_INI : BOOTSTRAP_INI_FC);
18691877
CIniFile bootstrapini( bootstrapinipath );
@@ -1875,7 +1883,7 @@ int r4Theme(void) {
18751883
bootstrapini.SetString("NDS-BOOTSTRAP", "HOMEBREW_ARG", (useWidescreen && (gameTid[0] == 'W' || romVersion == 0x57)) ? "wide" : "");
18761884
bootstrapini.SetString("NDS-BOOTSTRAP", "RAM_DRIVE_PATH", (perGameSettings_ramDiskNo >= 0 && !ms().secondaryDevice) ? ramdiskpath : "sd:/null.img");
18771885
bootstrapini.SetString("NDS-BOOTSTRAP", "GUI_LANGUAGE", ms().getGuiLanguageString());
1878-
bootstrapini.SetInt("NDS-BOOTSTRAP", "PHAT_COLORS", setDSPhatColors());
1886+
bootstrapini.SetInt("NDS-BOOTSTRAP", "PHAT_COLORS", phatColors);
18791887
bootstrapini.SetInt("NDS-BOOTSTRAP", "LANGUAGE", perGameSettings_language == -2 ? ms().getGameLanguage() : perGameSettings_language);
18801888
bootstrapini.SetInt("NDS-BOOTSTRAP", "REGION", perGameSettings_region < -1 ? ms().gameRegion : perGameSettings_region);
18811889
bootstrapini.SetInt("NDS-BOOTSTRAP", "USE_ROM_REGION", perGameSettings_region < -1 ? ms().useRomRegion : 0);

settings/arm9/source/language.inl

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -186,6 +186,7 @@ STRING(DESCRIPTION_GBAR2_WRAMICACHE, "Boosts speed, but some games may crash.")
186186
STRING(DESCRIPTION_BIOSINTRO, "Select whether the Game Boy Advance splash screen is shown when launching a GameBoy Advance ROM.")
187187

188188
// Games/Apps settings
189+
STRING(TWL_SPEED_FOR_SCREEN_FILTERS, "TWL Speed for Screen Filters")
189190
STRING(ASPECTRATIO, "Screen Aspect Ratio")
190191
STRING(SD_ASPECTRATIO, "SD: Screen Aspect Ratio")
191192
STRING(GBABORDER, "GBA border")
@@ -213,8 +214,6 @@ STRING(PHOTOLOCATION, "Photo Location")
213214
STRING(TWLNANDLOCATION, "TWLNAND Location")
214215
STRING(SYSSD_CACHEBLOCKSIZE, "Sys SD: Cache block size")
215216
STRING(CACHEBLOCKSIZE, "Cache block size")
216-
STRING(SAVEFATTABLECACHE, "Save FAT table cache")
217-
STRING(SYSSD_SAVEFATTABLECACHE, "Sys SD: Save FAT table cache")
218217
STRING(LOAD_BOOTLOADER, "Load Bootloader")
219218
STRING(BOOTSTRAP, "Bootstrap")
220219
STRING(DEBUG, "Debug")
@@ -248,6 +247,7 @@ STRING(THRU_NDS_BS, "Thru nds-bs")
248247
STRING(RELEASE, "Release")
249248
STRING(NIGHTLY, "Nightly")
250249

250+
STRING(DESCRIPTION_TWL_SPEED_FOR_SCREEN_FILTERS, "Speeds up screen filter and/or DS Phat color proccessing by setting the ARM9 CPU speed to 133mhz (TWL). Does not affect titles which blacklist TWL speed.")
251251
STRING(DESCRIPTION_ASPECTRATIO, "Adjusts the top screen to be the original size or wider for DS games. Some games may not use this. Requires TWPatch to be used as well as external sysmodules enabled in Luma.")
252252
STRING(DESCRIPTION_GBABORDER, "Changes the border in GBA mode. Does not affect GBARunner2.")
253253
STRING(DESCRIPTION_GAMELOADER, "Select whether to use nds-bootstrap or the flashcard kernel to boot DS ROMs.")
@@ -269,7 +269,6 @@ STRING(DESCRIPTION_DSIWARETOSD_DSBIOS, "Copies the launched DSiWare from flashca
269269
STRING(DESCRIPTION_PHOTOLOCATION, "Select the photo folder location you want to use in DSiWare titles.")
270270
STRING(DESCRIPTION_TWLNANDLOCATION, "Select which device you want DSiWare titles to read the TWLNAND contents from.")
271271
STRING(DESCRIPTION_CACHEBLOCKSIZE, "Depending on the size, some areas in DS(i) games will load slightly faster or slower.")
272-
STRING(DESCRIPTION_SAVEFATTABLECACHE, "Saves the created FAT table cache as a 512KB file. If you soon encounter SD corruption, please turn this off.")
273272
STRING(DESCRIPTION_LOAD_BOOTLOADER, "Directly loading the bootloader speeds up boot time. If you have issues loading DS mode homebrew, then set this to load through nds-bootstrap.")
274273
STRING(DESCRIPTION_BOOTSTRAP_1, "The release build is the latest version usually bundled. The nightly build is based on a commit from GitHub, and can contain bugs.")
275274
STRING(DESCRIPTION_DEBUG_1, "Displays some text before launched game.")

settings/arm9/source/main.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1298,6 +1298,10 @@ int settingsMode(void)
12981298
}
12991299
}
13001300

1301+
if ((dsiFeatures() || sdFound()) && sys().dsiWramAccess() && !sys().dsiWramMirrored()) {
1302+
bootstrapPage.option(STR_TWL_SPEED_FOR_SCREEN_FILTERS, STR_DESCRIPTION_TWL_SPEED_FOR_SCREEN_FILTERS, Option::Bool(&ms().boostCpuForClut), {STR_ON, STR_OFF}, {true, false});
1303+
}
1304+
13011305
if (widescreenFound) {
13021306
bootstrapPage.option((dsiFeatures() ? STR_ASPECTRATIO : STR_SD_ASPECTRATIO),
13031307
STR_DESCRIPTION_ASPECTRATIO,

0 commit comments

Comments
 (0)