3DS Resolution Switching - ZFEbHVUE/Batocera-CRT-Script GitHub Wiki
This guide demonstrates how to toggle between 400ร240 and 320ร240 resolutions during gameplay for 3DS titles using the Citra emulator on Batocera.
This is especially useful when:
- You want to play 3DS games in native resolution (400ร240), preserving the system's original pixel layout.
- You want to switch to 320ร240 for better fullscreen compatibility on 15kHz CRTs.
๐ Table of Contents (click to expand)
Enable in-game resolution switching for 3DS titles with a button combination, toggling between:
| Resolution | Use Case |
|---|---|
400x240 |
Matches the top screen |
320x240 |
Matches the bottom screen |
- Citra emulator installed and working
- Valid
videomodes.confentries for:400x240.60.00021320x240.60.00010
-
evmapyenabled in Batocera - SSH or file access to create/edit files
- Hotkey +
Xbutton available on your controller
Create a file at:
/userdata/system/configs/evmapy/3ds.keys
Paste the following JSON content:
{
"actions_player1": [
{
"trigger": [
"hotkey",
"x"
],
"type": "exec",
"target": "/userdata/system/citra-resolution"
}
]
}This will bind HOTKEY + X to a custom script.
๐ก The name
3ds.keysensures the config applies to all 3DS games using Citra.
Create the following file:
/userdata/system/citra-resolution
Make sure it is executable:
chmod +x /userdata/system/citra-resolutionPaste the following content into the script:
#!/bin/bash
RES=$(batocera-resolution currentResolution)
case "$RES" in
400x240) batocera-resolution setMode 320x240.60.00010 ;;
320x240) batocera-resolution setMode 400x240.60.00021 ;;
esacThis script checks the current resolution and switches to the other.
๐ This script idea and logic were contributed by Bloodred217.
- Launch a 3DS game from EmulationStation.
- Once the game is running, press:
HOTKEY + X - The resolution should switch instantly between
400x240and320x240.
๐ Use
DISPLAY=:0 batocera-resolution currentResolutionfrom SSH to verify resolution names if unsure.
This setup uses:
- evmapy to bind a controller input to a shell command.
- A Bash script that uses
batocera-resolutionto query and switch video modes. - The video mode names must match entries in your
videomodes.conffile.
The behavior is fully integrated into Batoceraโs resolution handling system and works without restarting EmulationStation or the emulator.
- Double-check file permissions:
chmod +x /userdata/system/citra-resolution
- Confirm the video modes exist using:
DISPLAY=:0 batocera-resolution listModes
- Validate the names in
videomodes.conf:400x240.60.00021:400x240 1.0:0:0 15KHz 60Hz 320x240.60.00010:320x240 1.0:0:0 15KHz 60Hz
# Before toggle
batocera-resolution currentResolution
> 400x240
# After pressing HOTKEY+X
batocera-resolution currentResolution
> 320x240๐ฌ Have another emulator that could benefit from this technique? The same principle applies โ just adjust the .keys file name and script logic.