mirror of
https://github.com/hrydgard/ppsspp.git
synced 2026-10-01 14:58:14 +00:00
Instead of the PSP's web browser, a dialog shows the URL the game wants and opens it in the host's browser on X, or backs out on O. Either way the game sees the browser closed normally. Platforms that can't open a URL (the new SYSPROP_CAN_LAUNCH_URL) only offer to back out. Only plain printable-ASCII http(s) addresses are handed over, and on Linux without a shell. What the firmware does (sceUtility_Driver, 6.61, plus utility/dialog/htmlviewer): the HtmlViewer has its own state apart from the other dialogs, so they don't block each other, and its calls return WRONG_TYPE until one has started. The request size picks the 2.00 to 3.00 layout, and InitStart allocates 3.5MB of user memory (4.5MB with options bit 0x400 from 2.70 on), failing with 800200d9 without it. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
151 lines
6.0 KiB
C++
151 lines
6.0 KiB
C++
// Copyright (c) 2012- PPSSPP Project.
|
|
|
|
// This program is free software: you can redistribute it and/or modify
|
|
// it under the terms of the GNU General Public License as published by
|
|
// the Free Software Foundation, version 2.0 or later versions.
|
|
|
|
// This program is distributed in the hope that it will be useful,
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
// GNU General Public License 2.0 for more details.
|
|
|
|
// A copy of the GPL 2.0 should have been included with the program.
|
|
// If not, see http://www.gnu.org/licenses/
|
|
|
|
// Official git repository and contact information can be found at
|
|
// https://github.com/hrydgard/ppsspp and http://www.ppsspp.org/.
|
|
|
|
#pragma once
|
|
|
|
#include <map>
|
|
#include <string>
|
|
|
|
class PointerWrap;
|
|
|
|
// Valid values for PSP_SYSTEMPARAM_ID_INT_LANGUAGE
|
|
#define PSP_SYSTEMPARAM_LANGUAGE_JAPANESE 0
|
|
#define PSP_SYSTEMPARAM_LANGUAGE_ENGLISH 1
|
|
#define PSP_SYSTEMPARAM_LANGUAGE_FRENCH 2
|
|
#define PSP_SYSTEMPARAM_LANGUAGE_SPANISH 3
|
|
#define PSP_SYSTEMPARAM_LANGUAGE_GERMAN 4
|
|
#define PSP_SYSTEMPARAM_LANGUAGE_ITALIAN 5
|
|
#define PSP_SYSTEMPARAM_LANGUAGE_DUTCH 6
|
|
#define PSP_SYSTEMPARAM_LANGUAGE_PORTUGUESE 7
|
|
#define PSP_SYSTEMPARAM_LANGUAGE_RUSSIAN 8
|
|
#define PSP_SYSTEMPARAM_LANGUAGE_KOREAN 9
|
|
#define PSP_SYSTEMPARAM_LANGUAGE_CHINESE_TRADITIONAL 10
|
|
#define PSP_SYSTEMPARAM_LANGUAGE_CHINESE_SIMPLIFIED 11
|
|
|
|
#define PSP_SYSTEMPARAM_TIME_FORMAT_24HR 0
|
|
#define PSP_SYSTEMPARAM_TIME_FORMAT_12HR 1
|
|
|
|
#define PSP_SYSTEMPARAM_ID_STRING_NICKNAME 1
|
|
#define PSP_SYSTEMPARAM_ID_INT_ADHOC_CHANNEL 2
|
|
#define PSP_SYSTEMPARAM_ID_INT_WLAN_POWERSAVE 3
|
|
#define PSP_SYSTEMPARAM_ID_INT_DATE_FORMAT 4
|
|
#define PSP_SYSTEMPARAM_ID_INT_TIME_FORMAT 5
|
|
//Timezone offset from UTC in minutes, (EST = -300 = -5 * 60)
|
|
#define PSP_SYSTEMPARAM_ID_INT_TIMEZONE 6
|
|
#define PSP_SYSTEMPARAM_ID_INT_DAYLIGHTSAVINGS 7
|
|
#define PSP_SYSTEMPARAM_ID_INT_LANGUAGE 8
|
|
#define PSP_SYSTEMPARAM_ID_INT_BUTTON_PREFERENCE 9
|
|
#define PSP_SYSTEMPARAM_ID_INT_LOCK_PARENTAL_LEVEL 10
|
|
|
|
// Return values for the SystemParam functions
|
|
#define PSP_SYSTEMPARAM_RETVAL_OK 0
|
|
|
|
// Valid values for PSP_SYSTEMPARAM_ID_INT_ADHOC_CHANNEL
|
|
#define PSP_SYSTEMPARAM_ADHOC_CHANNEL_AUTOMATIC 0
|
|
#define PSP_SYSTEMPARAM_ADHOC_CHANNEL_1 1
|
|
#define PSP_SYSTEMPARAM_ADHOC_CHANNEL_6 6
|
|
#define PSP_SYSTEMPARAM_ADHOC_CHANNEL_11 11
|
|
|
|
// Valid values for PSP_SYSTEMPARAM_ID_INT_WLAN_POWERSAVE
|
|
#define PSP_SYSTEMPARAM_WLAN_POWERSAVE_OFF 0
|
|
#define PSP_SYSTEMPARAM_WLAN_POWERSAVE_ON 1
|
|
|
|
// Valid values for PSP_SYSTEMPARAM_ID_INT_DATE_FORMAT
|
|
#define PSP_SYSTEMPARAM_DATE_FORMAT_YYYYMMDD 0
|
|
#define PSP_SYSTEMPARAM_DATE_FORMAT_MMDDYYYY 1
|
|
#define PSP_SYSTEMPARAM_DATE_FORMAT_DDMMYYYY 2
|
|
|
|
// Valid values for PSP_SYSTEMPARAM_ID_INT_DAYLIGHTSAVINGS
|
|
#define PSP_SYSTEMPARAM_DAYLIGHTSAVINGS_STD 0
|
|
#define PSP_SYSTEMPARAM_DAYLIGHTSAVINGS_SAVING 1
|
|
|
|
// Valid values for PSP_SYSTEMPARAM_ID_INT_BUTTON_PREFERENCE
|
|
#define PSP_SYSTEMPARAM_BUTTON_CIRCLE 0
|
|
#define PSP_SYSTEMPARAM_BUTTON_CROSS 1
|
|
|
|
// Valid values for NetParam
|
|
#define PSP_NETPARAM_NAME 0 // string
|
|
#define PSP_NETPARAM_SSID 1 // string
|
|
#define PSP_NETPARAM_SECURE 2 // int
|
|
#define PSP_NETPARAM_WEPKEY 3 // string
|
|
#define PSP_NETPARAM_IS_STATIC_IP 4 // int
|
|
#define PSP_NETPARAM_IP 5 // string
|
|
#define PSP_NETPARAM_NETMASK 6 // string
|
|
#define PSP_NETPARAM_ROUTE 7 // string
|
|
#define PSP_NETPARAM_MANUAL_DNS 8 // int
|
|
#define PSP_NETPARAM_PRIMARYDNS 9 // string
|
|
#define PSP_NETPARAM_SECONDARYDNS 10 // string
|
|
#define PSP_NETPARAM_PROXY_USER 11 // string
|
|
#define PSP_NETPARAM_PROXY_PASS 12 // string
|
|
#define PSP_NETPARAM_USE_PROXY 13 // int
|
|
#define PSP_NETPARAM_PROXY_SERVER 14 // string
|
|
#define PSP_NETPARAM_PROXY_PORT 15 // int
|
|
#define PSP_NETPARAM_VERSION 16 // int
|
|
#define PSP_NETPARAM_UNKNOWN 17 // int
|
|
#define PSP_NETPARAM_8021X_AUTH_TYPE 18 // int
|
|
#define PSP_NETPARAM_8021X_USER 19 // string
|
|
#define PSP_NETPARAM_8021X_PASS 20 // string
|
|
#define PSP_NETPARAM_WPA_TYPE 21 // int
|
|
#define PSP_NETPARAM_WPA_KEY 22 // string
|
|
#define PSP_NETPARAM_BROWSER 23 // int
|
|
#define PSP_NETPARAM_WIFI_CONFIG 24 // int
|
|
|
|
// X-Men Legends 2, and some homebrew may support up to 10 net config entries, but we currently only have 1 faked net config
|
|
#define PSP_NETPARAM_MAX_NUMBER_DUMMY_ENTRIES 1
|
|
|
|
enum class UtilityDialogType {
|
|
NONE,
|
|
SAVEDATA,
|
|
MSG,
|
|
OSK,
|
|
NET,
|
|
SCREENSHOT,
|
|
GAMESHARING,
|
|
GAMEDATAINSTALL,
|
|
NPSIGNIN,
|
|
HTMLVIEWER,
|
|
};
|
|
|
|
void __UtilityInit();
|
|
void __UtilityDoState(PointerWrap &p);
|
|
void __UtilityShutdown();
|
|
|
|
void UtilityDialogInitialize(UtilityDialogType type, int delayUs, int accessPriority, int graphicsPriority);
|
|
void UtilityDialogShutdown(UtilityDialogType type, int delayUs, int accessPriority, int graphicsPriority);
|
|
|
|
typedef void (*ModuleLoadCallback)(int state, u32 loadAddr, u32 loadSize);
|
|
|
|
struct ModuleLoadInfo {
|
|
ModuleLoadInfo(int m, u32 s, const char *name, ModuleLoadCallback cb = nullptr);
|
|
ModuleLoadInfo(int m, u32 s, const char *name, const int *d, ModuleLoadCallback cb = nullptr);
|
|
const char *name;
|
|
const int mod;
|
|
const u32 size;
|
|
const int *const dependencies;
|
|
ModuleLoadCallback notify;
|
|
};
|
|
|
|
const std::map<int, u32> &__UtilityGetLoadedModules(); // ->first gets the module ID, for use in the following two functions.
|
|
const ModuleLoadInfo *__UtilityModuleInfo(int moduleID);
|
|
bool __UtilityModuleGetMemoryRange(int moduleID, u32 *startPtr, u32 *sizePtr);
|
|
|
|
void Register_sceUtility();
|
|
|
|
// Return value is one of PSP_SYSTEMPARAM_LANGUAGE_*.
|
|
const std::map<std::string, std::pair<std::string, int>, std::less<>> &GetLangValuesMapping();
|
|
int GetPSPLanguage();
|