For ancient phones that can no longer install directly from Android Studio, choose: Build -> Build Bundle(s) / APK(s) -> Build APK
Then run:
adb install android/build/outputs/apk/normal/optimized/android-normal-optimized.apk
Use the following very long command line to cleanly filter out PPSSPP-relevant logs:
adb logcat -s DEBUG AndroidRuntime PPSSPPNativeActivity PPSSPP NativeGLView NativeRenderer NativeSurfaceView PowerSaveModeReceiver InputDeviceState PpssppActivity CameraHelper
More instructions here.
Here's an example setup. Note that --shm-size=8g
(or bigger) is critically important!
build_test_headless_alpine:
runs-on: ubuntu-latest
container:
image: alpine:latest
options: --shm-size=8g
Compat.ini
on AndroidIt's inconvenient to directly edit compat.ini
since it's built into the APK's asset subdirectory,
but you can put a separate compat.ini
in your PSP/SYSTEM
directory. It will be automatically merged
with the one from assets in the APK.
The quickest way to check what machine code was generated when you compiled some C++ function, is to, in Visual Studio, set a breakpoint on the code, then run until it gets hit, and then press Ctrl+Alt+D to show disassembly. Best used to verify that your SIMD instrinsics don't do something silly, like reload a matrix for every vertex for example...
In Android Studio, go Run -> Profiler: Run Android as profilable (low overhead)
. Then choose Find CPU Hotspots
.
Launch.json
in VS CodeHere's a quick .vscode/launch.json
one for debugging on Mac:
{
"version": "0.2.0",
"configurations": [
{
"name": "(lldb) Launch",
"type": "cppdbg",
"request": "launch",
"program": "",
"osx": {
"program": "${workspaceFolder}/build/PPSSPPSDL.app/Contents/MacOS/PPSSPPSDL"
},
"linux": {
"program": "${workspaceRoot}/build/PPSSPPSDL"
},
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "lldb"
}
]
}
Can be improved a lot, like currently it doesn't even perform the build.
See this Stack Overflow post: https://stackoverflow.com/questions/79151910/how-to-fix-errors-in-wsl-gui
With this, both OpenGL and Vulkan will work in WSL. The latter works through dzn, a Vulkan-on-top-of-DX12 wrapper.
From 1.20, there's a new script in scripts/
in the root of the code tree.
Use as follows:
python scripts\websocket-test.py 56244 gpu.stats.get 3
where 56244
is the configured port, and gpu.stats.get
is the command you want to test, and 3 is the number of seconds
you want to wait for additional messages.