Add 1.7alpha7 settings: legacy mount profiles, emulator updates, AMPR

This commit is contained in:
KarnerF committed 2026-08-22 14:50:07 +02:00
1 parent abba950b04
commit 8649d476d1
2 files changed
+99 -4

No files matched your search

+21 -1
View File
@@ -128,7 +128,11 @@ typedef enum {
LS_ICON_FRONT = 116,
LS_ICON_FRONT_LABEL = 117,
LS_ALWAYS_RESTART_SM = 118,
LS_COUNT = 119
LS_LEGACY_MOUNT = 119,
LS_EMUS = 120,
LS_UPDATE_EMUS = 121,
LS_EMUS_PATH = 122,
LS_COUNT = 123
} LangStrId;
static int ui_lang = LANG_EN;
@@ -254,6 +258,10 @@ static const char *lang_table[LANG_COUNT][LS_COUNT] = {
"Icon-Position",
"Icon immer nach vorne schieben",
"SM immer neu starten (auch wenn l\u00e4uft)",
"Legacy Mount-Profile",
"Emulatoren",
"Emulatoren aus Ordner aktualisieren",
"Emulator-Ordner",
},
/* EN */ {
"running",
@@ -374,6 +382,10 @@ static const char *lang_table[LANG_COUNT][LS_COUNT] = {
"Icon Position",
"Always move icon to front",
"Always restart SM (even if running)",
"Legacy Mount Profiles",
"Emulators",
"Update emulators from folder",
"Emulators path",
},
/* FR */ {
"actif",
@@ -495,6 +507,10 @@ static const char *lang_table[LANG_COUNT][LS_COUNT] = {
"Position de l'ic\u00f4ne",
"Toujours mettre l'ic\u00f4ne au premier plan",
"Toujours red\u00e9marrer SM (m\u00eame si actif)",
"Profils de montage h\u00e9rit\u00e9s",
"\u00c9mulateurs",
"Mettre \u00e0 jour les \u00e9mulateurs depuis le dossier",
"Dossier des \u00e9mulateurs",
},
/* ES */ {
"activo",
@@ -616,6 +632,10 @@ static const char *lang_table[LANG_COUNT][LS_COUNT] = {
"Posici\u00f3n del icono",
"Siempre mover el icono al frente",
"Siempre reiniciar SM (incluso si est\u00e1 activo)",
"Perfiles de montaje heredados",
"Emuladores",
"Actualizar emuladores desde la carpeta",
"Ruta de emuladores",
}
};
+78 -3
View File
@@ -367,6 +367,16 @@ typedef struct {
int global_fakelib_exclude_count;
/* 1.7alpha5 */
char fan_target_temperature[8];
/* 1.7alpha7 */
int legacy_mount_ufs;
int legacy_mount_exfat;
int legacy_mount_pfs;
int legacy_mount_pfsc;
int legacy_gddr5_cache;
int update_emulators;
char emulators_path[PATH_LEN];
int auto_update_ampr;
char ampr_update_url[256];
} ShadowConfig;
static void set_defaults(ShadowConfig *cfg) {
@@ -392,7 +402,14 @@ static void set_defaults(ShadowConfig *cfg) {
cfg->image_ro_count=0; cfg->image_rw_count=0; cfg->image_sector_count=0;
cfg->kstuff_no_pause_count=0; cfg->kstuff_delay_count=0;
cfg->global_fakelib_exclude_count=0;
strncpy(cfg->fan_target_temperature,"auto",7);
strncpy(cfg->fan_target_temperature,"system",7);
cfg->legacy_mount_ufs=1; cfg->legacy_mount_exfat=1;
cfg->legacy_mount_pfs=1; cfg->legacy_mount_pfsc=1;
cfg->legacy_gddr5_cache=0;
cfg->update_emulators=1;
strncpy(cfg->emulators_path,"/data/shadowmount/emus",PATH_LEN-1);
cfg->auto_update_ampr=0;
strncpy(cfg->ampr_update_url,"https://github.com/drakmor/ampr_emu/releases/latest/download/libSceAmpr.sprx",255);
}
static int parse_bool(const char *v) {
@@ -443,6 +460,15 @@ static void load_config(ShadowConfig *cfg) {
S("global_fakelib_priority",global_fakelib_priority,16)
S("exfat_backend",exfat_backend,8)
S("ufs_backend",ufs_backend,8)
B("legacy_mount_ufs",legacy_mount_ufs)
B("legacy_mount_exfat",legacy_mount_exfat)
B("legacy_mount_pfs",legacy_mount_pfs)
B("legacy_mount_pfsc",legacy_mount_pfsc)
B("legacy_gddr5_cache",legacy_gddr5_cache)
B("update_emulators",update_emulators)
S("emulators_path",emulators_path,PATH_LEN)
B("auto_update_ampr",auto_update_ampr)
S("ampr_update_url",ampr_update_url,256)
I("lvd_exfat_sector_size",lvd_exfat_sector_size)
I("lvd_ufs_sector_size",lvd_ufs_sector_size)
I("lvd_pfs_sector_size",lvd_pfs_sector_size)
@@ -482,6 +508,7 @@ static int save_config(ShadowConfig *cfg) {
int wsd=0,wrs=0,wsi=0,wss=0;
int warm=0,wargd=0,warmd=0;
int wkgt=0,wkcd=0,wkpi=0,wkpd=0;
int wlmu=0,wlme=0,wlmp=0,wlmpc=0,wlgc=0,wue=0,wep=0,waua=0,wauf=0;
int wbf=0,wgf=0,wgfp=0,wgfpr=0;
int web=0,wub=0,wles=0,wlus=0,wlps=0,wmes=0,wmus=0;
int wscan=0,wfan=0;
@@ -524,6 +551,15 @@ static int save_config(ShadowConfig *cfg) {
else if(MATCH("global_fakelib_priority")&&!wgfpr){fprintf(out,"global_fakelib_priority=%s\n",cfg->global_fakelib_priority);wgfpr=1;}
else if(MATCH("exfat_backend")&&!web){fprintf(out,"exfat_backend=%s\n",cfg->exfat_backend);web=1;}
else if(MATCH("ufs_backend")&&!wub){fprintf(out,"ufs_backend=%s\n",cfg->ufs_backend);wub=1;}
else if(MATCH("legacy_mount_ufs")&&!wlmu){fprintf(out,"legacy_mount_ufs=%d\n",cfg->legacy_mount_ufs);wlmu=1;}
else if(MATCH("legacy_mount_exfat")&&!wlme){fprintf(out,"legacy_mount_exfat=%d\n",cfg->legacy_mount_exfat);wlme=1;}
else if(MATCH("legacy_mount_pfs")&&!wlmp){fprintf(out,"legacy_mount_pfs=%d\n",cfg->legacy_mount_pfs);wlmp=1;}
else if(MATCH("legacy_mount_pfsc")&&!wlmpc){fprintf(out,"legacy_mount_pfsc=%d\n",cfg->legacy_mount_pfsc);wlmpc=1;}
else if(MATCH("legacy_gddr5_cache")&&!wlgc){fprintf(out,"legacy_gddr5_cache=%d\n",cfg->legacy_gddr5_cache);wlgc=1;}
else if(MATCH("update_emulators")&&!wue){fprintf(out,"update_emulators=%d\n",cfg->update_emulators);wue=1;}
else if(MATCH("emulators_path")&&!wep){fprintf(out,"emulators_path=%s\n",cfg->emulators_path);wep=1;}
else if(MATCH("auto_update_ampr")&&!waua){fprintf(out,"auto_update_ampr=%d\n",cfg->auto_update_ampr);waua=1;}
else if(MATCH("ampr_update_url")&&!wauf){fprintf(out,"ampr_update_url=%s\n",cfg->ampr_update_url);wauf=1;}
else if(MATCH("lvd_exfat_sector_size")&&!wles){fprintf(out,"lvd_exfat_sector_size=%d\n",cfg->lvd_exfat_sector_size);wles=1;}
else if(MATCH("lvd_ufs_sector_size")&&!wlus){fprintf(out,"lvd_ufs_sector_size=%d\n",cfg->lvd_ufs_sector_size);wlus=1;}
else if(MATCH("lvd_pfs_sector_size")&&!wlps){fprintf(out,"lvd_pfs_sector_size=%d\n",cfg->lvd_pfs_sector_size);wlps=1;}
@@ -564,6 +600,10 @@ static int save_config(ShadowConfig *cfg) {
MATCH("backport_fakelib")||MATCH("global_fakelib")||
MATCH("global_fakelib_path")||MATCH("global_fakelib_priority")||
MATCH("exfat_backend")||MATCH("ufs_backend")||
MATCH("legacy_mount_ufs")||MATCH("legacy_mount_exfat")||
MATCH("legacy_mount_pfs")||MATCH("legacy_mount_pfsc")||
MATCH("legacy_gddr5_cache")||MATCH("update_emulators")||
MATCH("emulators_path")||MATCH("auto_update_ampr")||MATCH("ampr_update_url")||
MATCH("lvd_exfat_sector_size")||MATCH("lvd_ufs_sector_size")||
MATCH("lvd_pfs_sector_size")||MATCH("md_exfat_sector_size")||
MATCH("md_ufs_sector_size")
@@ -598,6 +638,15 @@ static int save_config(ShadowConfig *cfg) {
if(!wgfpr) fprintf(out,"global_fakelib_priority=%s\n",cfg->global_fakelib_priority);
if(!web) fprintf(out,"exfat_backend=%s\n",cfg->exfat_backend);
if(!wub) fprintf(out,"ufs_backend=%s\n",cfg->ufs_backend);
if(!wlmu) fprintf(out,"legacy_mount_ufs=%d\n",cfg->legacy_mount_ufs);
if(!wlme) fprintf(out,"legacy_mount_exfat=%d\n",cfg->legacy_mount_exfat);
if(!wlmp) fprintf(out,"legacy_mount_pfs=%d\n",cfg->legacy_mount_pfs);
if(!wlmpc) fprintf(out,"legacy_mount_pfsc=%d\n",cfg->legacy_mount_pfsc);
if(!wlgc) fprintf(out,"legacy_gddr5_cache=%d\n",cfg->legacy_gddr5_cache);
if(!wue) fprintf(out,"update_emulators=%d\n",cfg->update_emulators);
if(!wep) fprintf(out,"emulators_path=%s\n",cfg->emulators_path);
if(!waua) fprintf(out,"auto_update_ampr=%d\n",cfg->auto_update_ampr);
if(!wauf) fprintf(out,"ampr_update_url=%s\n",cfg->ampr_update_url);
if(!wles) fprintf(out,"lvd_exfat_sector_size=%d\n",cfg->lvd_exfat_sector_size);
if(!wlus) fprintf(out,"lvd_ufs_sector_size=%d\n",cfg->lvd_ufs_sector_size);
if(!wlps) fprintf(out,"lvd_pfs_sector_size=%d\n",cfg->lvd_pfs_sector_size);
@@ -1038,6 +1087,8 @@ static void fn(struct mg_connection *c, int ev, void *ev_data) {
int has_autoremove= !sm_running || sm_version_at_least(sm_ver,1,7,"alpha",3);
int has_api = !sm_running || sm_version_at_least(sm_ver,1,7,"alpha",3);
int has_fan = !sm_running || sm_version_at_least(sm_ver,1,7,"alpha",5);
int has_legacy_mp = !sm_running || sm_version_at_least(sm_ver,1,7,"alpha",7);
int has_emus = !sm_running || sm_version_at_least(sm_ver,1,7,"alpha",7);
H("<form action='/save' method='POST' onsubmit='try{doSave();}catch(e){}return false;' style='flex:1;min-height:0;display:flex;flex-direction:column;'><div class='layout'>");
H("<nav class='sidebar'>");
@@ -1226,6 +1277,15 @@ static void fn(struct mg_connection *c, int ev, void *ev_data) {
for(int i=0;i<cfg.global_fakelib_exclude_count;i++)
H("<div class='path-row'><input type='text' name='global_fakelib_exclude[]' value='%s' placeholder='PPSA12345'><button type='button' class='rm' onclick='this.parentElement.remove()'>&times;</button></div>",cfg.global_fakelib_exclude[i]);
H("</div><button type='button' class='addbtn' onclick='addRow(\"fakelib-ex-list\",\"global_fakelib_exclude[]\",\"PPSA12345\")'>+ global_fakelib_exclude</button>");
/* Emulator settings (1.7alpha7+) */
H("<div style='%s'><div class='sublist-title' style='margin-top:16px;'>%s</div>",
has_emus?"":"opacity:.35;pointer-events:none",L(LS_EMUS));
if(!has_emus) H("<p style='margin:0 0 8px;'><span class='vbadge'>ab 1.7alpha7</span></p>");
SW("ue","update_emulators",L(LS_UPDATE_EMUS),cfg.update_emulators);
TF("emulators_path",L(LS_EMUS_PATH),cfg.emulators_path,"/data/shadowmount/emus");
SW("aua","auto_update_ampr","auto_update_ampr",cfg.auto_update_ampr);
TF("ampr_update_url","ampr_update_url",cfg.ampr_update_url,"https://github.com/drakmor/ampr_emu/...");
H("</div>");
H("</div></div>"); /* close fakelib section + panel-fkl */
/* Panel: Backend */
@@ -1260,12 +1320,22 @@ static void fn(struct mg_connection *c, int ev, void *ev_data) {
H("<div class='numfield'><label>fan_target_temperature"
"<span class='vbadge' style='%s'>ab 1.7alpha5</span></label>",
has_fan?"display:none;":"");
H("<select name='fan_target_temperature'><option value='auto'%s>auto</option>",
strcmp(cfg.fan_target_temperature,"auto")==0?" selected":"");
H("<select name='fan_target_temperature'><option value='system'%s>system</option>",
strcmp(cfg.fan_target_temperature,"system")==0||strcmp(cfg.fan_target_temperature,"auto")==0?" selected":"");
{ int cur=atoi(cfg.fan_target_temperature);
for(int t=50;t<=91;t++)
H("<option value='%d'%s>%d&deg;C</option>",t,cur==t?" selected":"",t); }
H("</select></div></div>");
/* Legacy mount profiles (1.7alpha7+) */
H("<div style='%s'><div class='sublist-title' style='margin-top:16px;'>%s</div>",
has_legacy_mp?"":"opacity:.35;pointer-events:none",L(LS_LEGACY_MOUNT));
if(!has_legacy_mp) H("<p style='margin:0 0 8px;'><span class='vbadge'>ab 1.7alpha7</span></p>");
SW("lmu","legacy_mount_ufs","legacy_mount_ufs (.ffpkg)",cfg.legacy_mount_ufs);
SW("lme","legacy_mount_exfat","legacy_mount_exfat (.exfat)",cfg.legacy_mount_exfat);
SW("lmp","legacy_mount_pfs","legacy_mount_pfs (.ffpfs)",cfg.legacy_mount_pfs);
SW("lmpc","legacy_mount_pfsc","legacy_mount_pfsc (.ffpfsc)",cfg.legacy_mount_pfsc);
SW("lgc","legacy_gddr5_cache","legacy_gddr5_cache",cfg.legacy_gddr5_cache);
H("</div>");
H("</div></div>"); /* close backend section + panel-bkd */
/* Panel: API */
@@ -2092,6 +2162,11 @@ static void fn(struct mg_connection *c, int ev, void *ev_data) {
GS("global_fakelib_path",global_fakelib_path)
GS("global_fakelib_priority",global_fakelib_priority)
GS("exfat_backend",exfat_backend) GS("ufs_backend",ufs_backend)
GB("legacy_mount_ufs",legacy_mount_ufs) GB("legacy_mount_exfat",legacy_mount_exfat)
GB("legacy_mount_pfs",legacy_mount_pfs) GB("legacy_mount_pfsc",legacy_mount_pfsc)
GB("legacy_gddr5_cache",legacy_gddr5_cache)
GB("update_emulators",update_emulators) GS("emulators_path",emulators_path)
GB("auto_update_ampr",auto_update_ampr) GS("ampr_update_url",ampr_update_url)
GI("lvd_exfat_sector_size",lvd_exfat_sector_size)
GI("lvd_ufs_sector_size",lvd_ufs_sector_size)
GI("lvd_pfs_sector_size",lvd_pfs_sector_size)