RK3326 handheld on a workbench with original pixel-art combat on the screen, no logos

How to Push the R36S to the Max for Heavy PSP Games (Ghost of Sparta)

By the Hobbyist Nirvana team · Updated September 2026 · 14 min read

This is the September 2026 “push it to the max” recipe for heavy 3D PSP on an RK3326 handheld — God of War: Ghost of Sparta as the torture test. After PPSSPP 2021, skip-buffer, a 20 FPS cap, and clocks that actually stay high, our overlay read 15/19 at ~101% speed: full logical speed, frameskip doing the choppy part. It will not become 60 FPS. It becomes playable.

RK3326 handheld on a workbench with original pixel-art combat on the screen, no logos
Same RK3326 chip on HN-R36S-WiFi and R36S Plus. Heavy PSP is a settings + heat problem, not a missing “turbo” button.
Which handheld?

Works on HN-R36S-WiFi (3.5") and R36S Plus (4.0" / 720×720). Plus units often never list 1.51 GHz until the device tree is grafted — that is a separate, workshop-level step in why the R36S Plus stops at 1.30 GHz. The SSH / PPSSPP half of this guide needs WiFi (or you edit the SD in a PC reader).

What “max” actually means

Stock Ghost of Sparta on current ArkOS PPSSPP sat at 10–13 FPS and slow-mo on the Plus we opened. After this stack, the overlay was 15 drawn / 19 logical at ~101% speed. Combat moves at the game’s intended pace; you see every other frame because frameskip is 2. Hold R2 to unthrottle menus and cutscenes.

Use a dump you own. We do not link ISOs. For which PSP titles are actually full-speed on this chip, start with the PSP tier list. Ghost of Sparta is Tier 3 — the honest “heavy 3D” bucket.

The four things that were actually wrong

  1. Wrong PPSSPP. Newest standalone is fine for light games. Heavy 3D on this Mali wants standalone-2021.
  2. Compat silently undid skip-buffer. Setting Skip Buffer Effects on is not enough. Game compatibility was forcing it off until we set IgnoreCompatSettings = SkipBufferEffects.
  3. 70°C thermal trip. God of War walks ~90–105°C. Stock IPA trips at 70°C, so the chip sits at ~1.01 GHz / 400 MHz GPU while the UI still says “performance”.
  4. Plus clock cap (Plus only). The 720×720 DTB never listed 1.51 GHz. And even after grafting it, ArkOS perfmax was hardcoded to 1296 MHz on every game launch — so the extra OPP never got used.

If you only change PPSSPP settings and skip heat + clocks, Ghost of Sparta still feels like it is running underwater. If you only raise clocks and stay on new PPSSPP with skip-buffer off, you still get 10–13 FPS.

What you need

  • Handheld on the same 2.4 GHz WiFi as your PC (5 GHz dongles on these boards often do nothing)
  • Windows / Mac / Linux with ssh (already in Windows Terminal)
  • ISO on the PSP folder — how to add PSP games. Prefer ISO over CSO on heavy 3D.
  • Game not running while you edit files (PPSSPP copies ini back on exit)

1. Turn Remote Services on (and keep it on)

EmulationStation → OptionsEnable Remote Services. Note the IP under Network Info.

That starts SSH (port 22), Filebrowser (port 80, title “ArkOS Browser”), and Samba. If SSH later says connection refused, the handheld slept or Remote Services stopped — run the option again.

Filebrowser is enough for the ini

Open http://YOUR-IP/ on a PC. Use SSH when you want to paste the Python block or watch clocks live while the game is running.

Default SSH login is ark / ark unless you changed it:

ssh ark@192.168.1.43
Quit the game first

ArkOS ppsspp.sh copies ppsspp.ini.sdlppsspp.ini on start and copies back on exit. Edit while Ghost of Sparta is running and your changes vanish when you quit.

2. Switch the game to PPSSPP 2021

Highlight the game → SelectEdit this game's metadata → Emulator standalone-2021 → save.

On ArkOS the EmulationStation system for this card is often named ppsspp (folder still /roms2/psp/), not psp. After launch you want a process like /opt/ppsspp-2021/PPSSPPSDL:

pgrep -af PPSSPPSDL

You can also stamp the default for the whole system in ~/.emulationstation/es_settings.cfg:

<string name="ppsspp.emulator" value="standalone-2021" />

Restart EmulationStation if the picker looks stale.

3. The PPSSPP file that actually moves the needle

Persistent files sit next to the ROMs:

  • SD1: /roms/psp/ppsspp/PSP/SYSTEM/ppsspp.ini and ppsspp.ini.sdl
  • SD2: /roms2/psp/ppsspp/PSP/SYSTEM/ppsspp.ini and ppsspp.ini.sdl

Patch both files. The line most people miss is IgnoreCompatSettings — without it, Ghost of Sparta’s compatibility profile turns Skip Buffer Effects back off.

Setting Value Why
SkipBufferEffects True Biggest extra FPS; water/shadows may glitch
IgnoreCompatSettings SkipBufferEffects Stops the game profile undoing the line above
FrameSkip 2 Draw every other frame so combat keeps moving
AutoFrameSkip True Adds skip only when a scene is heavy
ForceMaxEmulatedFPS 20 Stops the game aiming at 30–60 the chip cannot hold
InternalResolution 1 Native 1×. 2× looks the same on these panels and tanks FPS
BloomHack 3 Aggressive bloom skip on this title
DisableSlowFramebufEffects True Drops expensive framebuffer passes
DisableStencilTest True Cheaper 3D on Mali
SkipGPUReadbackMode 1 Avoids stalling the GPU for CPU readbacks
MemBlockTransferGPU False Less GPU memcpy work
CPUSpeed 222 Less emulated PSP work than the default 333
IOTimingMethod 0 Fast I/O timing
VSyncInterval False Do not wait on the display
RenderDuplicateFrames True Smoother presentation at the 20 cap
ShowFPSCounter 3 FPS + speed % overlay so you can verify

Paste this after SSH (change /roms2/ to /roms/ if the ISO is on SD1). It only rewrites keys that already exist; it adds IgnoreCompatSettings if missing:

python3 - << 'PY'
import os, re
paths = [
  "/roms2/psp/ppsspp/PSP/SYSTEM/ppsspp.ini",
  "/roms2/psp/ppsspp/PSP/SYSTEM/ppsspp.ini.sdl",
]
u = {
  "FrameSkip": "2", "AutoFrameSkip": "True", "ForceMaxEmulatedFPS": "20",
  "InternalResolution": "1", "SkipBufferEffects": "True",
  "IgnoreCompatSettings": "SkipBufferEffects",
  "BloomHack": "3", "DisableSlowFramebufEffects": "True",
  "DisableStencilTest": "True", "SkipGPUReadbackMode": "1",
  "MemBlockTransferGPU": "False", "CPUSpeed": "222",
  "IOTimingMethod": "0", "VSyncInterval": "False",
  "RenderDuplicateFrames": "True", "HardwareTransform": "True",
  "SoftwareSkinning": "True", "ShowFPSCounter": "3",
  "SplineBezierQuality": "0", "HardwareTessellation": "False",
}
for p in paths:
  if not os.path.exists(p):
    print("skip missing", p); continue
  text = open(p, errors="replace").read()
  for k, v in u.items():
    pat = r"(?m)^" + re.escape(k) + r" = .*$"
    line = "%s = %s" % (k, v)
    if re.search(pat, text):
      text = re.sub(pat, line, text)
    else:
      text += "\n" + line + "\n"
  open(p, "w").write(text)
  print("patched", p)
PY

Leave the overlay on for one session. Target is ~20 logical FPS at ~100% speed, not a locked 30. Turn the counter off later in the PPSSPP menu (L2 on ArkOS). If skip-buffer makes water unreadable, turn it off in-menu — you will lose FPS; that is the trade.

4. Fast-forward on R2

Stock mappings often put Unthrottle on a keyboard key. PSP games do not use R2. In /roms2/psp/ppsspp/PSP/SYSTEM/controls.ini (or the /roms/psp/... twin):

Unthrottle = 1-61,10-195,10-105

Hold R2 for menus, boats, and cutscenes. It will not 2× a heavy fight.

5. Confirm you are not thermally clipped

With Ghost of Sparta running, SSH a second session:

cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq
cat /sys/devices/system/cpu/cpufreq/policy0/scaling_available_frequencies
cat /sys/devices/platform/ff400000.gpu/devfreq/ff400000.gpu/cur_freq
awk '{print $1/1000 " C"}' /sys/class/thermal/thermal_zone0/temp
cat /sys/class/thermal/thermal_zone0/trip_point_0_temp
What you see Meaning
CPU 1512000, GPU 520000000, ~90°C Healthy top gear (3.5" units, or a Plus that already has the extra OPP)
CPU 1296000 and available list ends at 1296000 Plus device tree never listed 1.51 GHz — see the Plus clock article
Available includes 1512000 but in-game max is still 1296000 ArkOS perfmax is hardcoding 1296 on launch. Max must follow cpuinfo_max_freq
CPU 1008000, GPU 400000000, SoC already >70°C Stock IPA trip. Settings will not save you

GPU max on both trees we measured is already 520 MHz. RAM is 786 MHz. There is no extra GPU overclock hiding in a menu.

Workshop thermal unlock (heat is real)

Stock IPA trip0 is 70°C. Ghost of Sparta sits above that within minutes. In the workshop we persist trip0 105°C / trip1 110°C and leave critical shutdown at 115°C. A conservative home test (does not survive reboot unless you also edit /etc/rc.local) is 90°C:

echo 90000 | sudo tee /sys/class/thermal/thermal_zone0/trip_point_0_temp
echo 105000 | sudo tee /sys/class/thermal/thermal_zone0/trip_point_1_temp
echo 0 | sudo tee /sys/class/thermal/cooling_device0/cur_state
The shell will run hotter

At 1.51 GHz in Ghost of Sparta the Plus SoC we logged walked ~90→105°C, then IPA oscillated (1.51 GHz ↔ ~1.01 GHz, GPU 520 ↔ 400 MHz) until the game closed. Keep vents clear. Do not play under a pillow. Stop if the back is uncomfortable to hold. This is not a voltage overclock — it is letting the chip use the clocks the OPP table already has.

To survive reboot, the same echoes belong in /etc/rc.local (use #!/bin/sh, not sh -e, and || true on any optional sysfs writes) and in /usr/local/bin/perfmax so every game launch re-applies them. Backup those two files first. If that sounds like more than you want to own, book the video call — we will show a unit that already has it.

6. Plus-only: 1.51 GHz is missing from the device tree

Classic 3.5" ArkOS images we see already expose 1512 MHz. Plus boots rk3326-r36plus-linux.dtb so the square panel works — and that file simply omits the top CPU step. Same RK3326 silicon. Do not copy rg351mp-kernel.dtb over it or the screen goes wrong.

The graft, restore file, and the perfmax 1296 trap are written up in why the R36S Plus stops at 1.30 GHz. If you are not comfortable restoring a DTB from a PC card reader, skip that article’s workshop section and stay at 1.30 GHz — the PPSSPP 2021 + skip-buffer + 20 FPS cap still does most of the “playable” work.

What “good” looks like

Moment Expect
Overlay ~15 drawn / ~19 logical at ~100% speed on Ghost of Sparta
Menus / shops Smooth; hold R2 to skip through
Linear combat Playable at the 20 FPS cap
Particle fights, water, big set pieces Still dips. That is the chip
After 15–20 minutes SoC near the IPA trip; clocks may oscillate. Take a break

Frequently asked questions

Can the R36S actually play Ghost of Sparta?

Yes, as a 20 FPS, frameskipped, thermally hot experience. It is playable, not pretty. Showcase 3D PSP is the weak spot of every RK3326 handheld.

Is this the same as the August God of War SSH article?

Same family of changes. This September write-up adds IgnoreCompatSettings (skip-buffer staying on), the Plus 1.30 GHz DTB cap, the perfmax 1296 trap, and the 105°C workshop trip we measured in-game. Keep the original SSH walkthrough for the shorter path.

Do I need the WiFi model?

For live SSH / Filebrowser, yes. Base non-WiFi units can still get the ini from a PC card reader; you just cannot watch clocks while playing.

Will this break other PSP games?

One shared ppsspp.ini will make lighter titles more frameskipped than they need. Prefer per-game emulator metadata, or keep a backup of ppsspp.ini.sdl.

ISO or CSO?

ISO. CSO spends CPU decompressing. Ghost of Sparta is already GPU-heavy.

Want Ghost of Sparta on a real unit before you buy?

Free 10-minute video call. We will open an HN-R36S-WiFi or R36S Plus, load the game, and show the FPS overlay plus current clocks. Ships from Gurgaon in 24–48h, GST-inclusive, COD/UPI, 7-day returns.

HN-R36S-WiFi R36S Plus Book a video call

Hobbyist Nirvana · Happiness Awaits You

Verified September 2026 on live ArkOS RK3326 hardware (HN-R36S-WiFi family and R36S Plus 720×720). Settings are for God of War PSP — Ghost of Sparta as the heavy case. Not affiliated with Sony. Thermal and device-tree edits can affect boot and heat — backup first.
Back to blog