Skip to content

add webOS to CMakeLists#2167

Merged
flyinghead merged 1 commit intoflyinghead:masterfrom
cscd98:webos
Jan 4, 2026
Merged

add webOS to CMakeLists#2167
flyinghead merged 1 commit intoflyinghead:masterfrom
cscd98:webos

Conversation

@cscd98
Copy link
Contributor

@cscd98 cscd98 commented Dec 19, 2025

Allows building for webOS

@flyinghead
Copy link
Owner

Does it build?
Has this been tested on any webOS device?

@cscd98
Copy link
Contributor Author

cscd98 commented Dec 31, 2025

It compiles as a libretro core using:

cmake ../ -DLIBRETRO=ON -DCMAKE_BUILD_TYPE=Release

I just tried Dead or Alive Demo (I don't have any Saturn games) on my G4 OLED and it just goes to a black screen. I tried both GLES and GLES 2 compiled modes. It's correctly identified architecture as ARM according to my debugging in CMakeLists (I assume the JIT is automatically enabled by taking a quick look at the source?)

I haven't used flycast before, but I tried a pre-compiled core on Ubuntu and that worked fine. I'm maintaining the webOS cores at the moment and doing lots of PRs to fix compilation issues.

Here is a log if its any use:

https://pastebin.com/ALCe5qbB

@flyinghead flyinghead merged commit 594d82b into flyinghead:master Jan 4, 2026
@flyinghead
Copy link
Owner

I happen to own a webOS TV. Unfortunately it's running an antique version (1.4) so I doubt I can run anything on it.

@cscd98
Copy link
Contributor Author

cscd98 commented Jan 4, 2026

Thanks for merging. If you want to give it a go:

https://www.webosbrew.org/devmode/
https://github.com/webosbrew/dev-manager-desktop/releases/tag/v1.99.16
https://github.com/webosbrew/RetroArch/releases/tag/v1.22.2

The oldest confirmed version to work is webOS 3.4 (nobody has reported webOS 1 or 2 to me so I don't know)

@flyinghead
Copy link
Owner

Surprisingly, not only retroarch installs fine but it actually runs!
Unfortunately the main retroarch config/data directory doesn't exist and I can't create it so I couldn't get very far.

@cscd98
Copy link
Contributor Author

cscd98 commented Jan 4, 2026

I'm curious did it produce a log? if it doesn't you can run it from ssh:

cd /media/developer/apps/usr/palm/applications/com.retroarch.webos
./retroarch --verbose

@flyinghead
Copy link
Owner

[INFO] [Config] Looking for config in: "/media/developer/.config/retroarch/retroarch.cfg".
[INFO] [Config] Looking for config in: "/media/developer/.retroarch.cfg".
[INFO] RetroArch 1.22.2 (Git 4c4953b)
[INFO] === Build =======================================
[INFO] CPU Model Name: ARMv7 Processor rev 0 (v7l)

[INFO] Capabilities: NEON VFPV3 
[INFO] Version: 1.22.2
[INFO] Git: 4c4953b
[INFO] Built: Nov 21 2025
[INFO] =================================================
[INFO] [Input] Found input driver: "sdl2".
[INFO] [Environ] SET_PIXEL_FORMAT: RGB565.
[INFO] [Core] Version of libretro API: 1, Compiled against API: 1
[INFO] [Core] Geometry: 320x240, Aspect: 1.333, FPS: 60.00, Sample rate: 48000.00 Hz.
[INFO] [Video] Set video size to: 1920x1080.
ERROR: Failed to register app: Failed to get nativeLifeCycleInterfaceVersion: Failed to parse output of luna://com.webos.applicationManager/getAppInfo
[INFO] [SDL GL] SDL 2.30.12 gfx context driver initialized.
[INFO] [GL] Found GL context: "gl_sdl".
[INFO] [GL] Detecting screen resolution: 0x0.
[INFO] [GL] Vendor: Imagination Technologies, Renderer: PowerVR SGX 543MP.
[INFO] [GL] Version: OpenGL ES 2.0 build 1.10@2605106.
[INFO] [GL] Using resolution 1920x1080.
[INFO] [GL] Default shader backend found: glsl.
[INFO] [GL] Using GLSL shader backend.
[WARN] [GLSL] Stock GLSL shaders will be used.
[INFO] [GLSL] Found GLSL vertex shader.
[INFO] [GLSL] Shader log: Success.
.
[INFO] [GLSL] Found GLSL fragment shader.
[INFO] [GLSL] Shader log: Success.
.
[INFO] [GLSL] Linking GLSL program.
[INFO] [GLSL] Found GLSL vertex shader.
[INFO] [GLSL] Shader log: Success.
.
[INFO] [GLSL] Found GLSL fragment shader.
[INFO] [GLSL] Shader log: Success.
.
[INFO] [GLSL] Linking GLSL program.
[INFO] [GLSL] Found GLSL vertex shader.
[INFO] [GLSL] Shader log: Success.
.
[INFO] [GLSL] Found GLSL fragment shader.
[INFO] [GLSL] Shader log: Success.
WARNING: 0:15: Calls to any function that may require a gradient calculation inside a conditional block may return undefined results
WARNING: 1 compilation warnings.

.
[INFO] [GLSL] Linking GLSL program.
[INFO] [GL] Using 4 textures.
[INFO] [GL] Loaded 1 program(s).
[INFO] [Video] Graphics driver did not initialize an input driver. Attempting to pick a suitable driver.
[INFO] [Input] Found joypad driver: "sdl2".
[INFO] [Video] Found display server: "null".
[INFO] [Audio] Set audio input rate to: 48000.00 Hz.
Home directory /media/developer/ not ours.
[INFO] [PulseAudio] Requested 24576 bytes buffer, got 51032.
[INFO] [Audio] Started synchronous audio driver.
[INFO] [Display] Found display driver: "gl".
[ERROR] [Overrides] Config directory not set, cannot save configuration.
[INFO] [Playlist] Loading favorites file: "/media/developer//.config/retroarch/playlists/builtin/content_favorites.lpl".
[INFO] [Playlist] Loading history file: "/media/developer//.config/retroarch/playlists/builtin/content_history.lpl".
[INFO] [Playlist] Loading history file: "/media/developer//.config/retroarch/playlists/builtin/content_image_history.lpl".
[INFO] [Playlist] Loading history file: "/media/developer//.config/retroarch/playlists/builtin/content_music_history.lpl".

@cscd98
Copy link
Contributor Author

cscd98 commented Jan 4, 2026

I think if you launched it with a setting to somewhere you had write access, it might work (but then again, launching it from the menu should have write access!)

e.g. for me when debugging, but I created the retroarch folder.

./retroarch --verbose --config /media/developer/temp/retroarch/.config/retroarch.cfg

@flyinghead
Copy link
Owner

After manually creating the config folder and editing retroarch.cfg, I managed to install the flycast core.
Now it can't find libgomp.so.1

[ERROR] [Core] Failed to open libretro core: "/media/developer/temp/retroarch/.config/retroarch/cores/flycast_libretro.so"
[ERROR] [Core] Error(s): libgomp.so.1: cannot open shared object file: No such file or directory

This is the openmp shared lib used for texture upscaling. (I'm deprecating this feature btw) It can be disabled at build time with USE_OPENMP=OFF

@cscd98
Copy link
Contributor Author

cscd98 commented Jan 4, 2026

Looks like libgomp was introduced in webOS 3.9.2. I've removed it from retroarch-cores repo (might take a few mins to appear).

On a clean install of retroarch, did it give you any indication of why it wasn't able to create the directories ? It should have had write permission to /media/developer/apps/usr/palm/applications/com.retroarch.webos/ where it was installed to.

@flyinghead
Copy link
Owner

I installed retroarch from https://github.com/webosbrew/RetroArch/releases/tag/v1.22.2 and it installed without issue (I don't recall any notification in webos dev manager.) I don't know if retroarch itself showed any error since my TV is at the other end of the house 😄 and I first launched it from webos dev manager.
No change if launched from the TV app menu however.

@flyinghead
Copy link
Owner

Some progress. Now it looks like an issue with GLES. We might have reached the limit of what this version of webOS can do.

[INFO] [Core] Using content: "/media/developer/temp/retroarch/.config/retroarch/downloads/240pSuite.cdi".
[INFO] [Core] Unloading core...
[INFO] [Core] Unloading core symbols...
[INFO] RetroArch 1.22.2 (Git 4c4953b)
[INFO] === Build =======================================
[INFO] CPU Model Name: ARMv7 Processor rev 0 (v7l)

[INFO] Capabilities: NEON VFPV3 
[INFO] Version: 1.22.2
[INFO] Git: 4c4953b
[INFO] Built: Nov 21 2025
[INFO] =================================================
[INFO] [Input] Found input driver: "sdl2".
[INFO] [Core] Loading dynamic libretro core from: "/media/developer/temp/retroarch/.config/retroarch/cores/flycast_libretro.so".
[INFO] [Override] Reverting save file directory to /media/developer//.config/retroarch/saves
[INFO] [Override] Reverting save state directory to /media/developer//.config/retroarch/states
[INFO] [Environ] GET_CORE_OPTIONS_VERSION.
[INFO] [Environ] GET_LANGUAGE: "0".
[INFO] [Environ] SET_CORE_OPTIONS_V2_INTL.
[INFO] [Environ] SET_CONTROLLER_INFO.
[INFO] [Environ] SET_SUPPORT_NO_GAME: yes.
[INFO] [Environ] GET_LOG_INTERFACE.
[libretro INFO] shell/libretro/libretro.cpp:330 N[BOOT]: retro_init
[INFO] [Environ] GET_PERF_INTERFACE.
[INFO] [Environ] SET_PIXEL_FORMAT: XRGB8888.
[INFO] [Environ] SET_KEYBOARD_CALLBACK.
[INFO] [Environ] GET_DISK_CONTROL_INTERFACE_VERSION.
[INFO] [Environ] SET_DISK_CONTROL_EXT_INTERFACE.
[libretro INFO] core/hw/mem/addrspace.cpp:425 N[VMEM]: Info: nvmem is enabled
[libretro INFO] core/hw/mem/addrspace.cpp:457 N[VMEM]: BASE 0x47f20000 RAM(16 MB) 0x53f20000 VRAM64(8 MB) 0x4bf20000 ARAM(2 MB) 0x67f20000
[ERROR] [Disk index file] Failed to create directory for disk index file: "/media/developer//.config/retroarch/saves".
[INFO] [Content] Content loading skipped. Implementation will load it on its own.
[libretro INFO] shell/libretro/libretro.cpp:2136 N[BOOT]: retro_load_game: /media/developer/temp/retroarch/.config/retroarch/downloads/240pSuite.cdi
[INFO] [Environ] GET_RUMBLE_INTERFACE.
[INFO] [Environ] GET_SYSTEM_DIRECTORY: "/media/developer/temp/retroarch/.config/retroarch/system".
[INFO] [Environ] GET_SAVE_DIRECTORY: "/media/developer//.config/retroarch/saves".
[ERROR] [Environ] GET_VARIABLE: reicast_texupscale - Invalid value.
[ERROR] [Environ] GET_VARIABLE: reicast_texupscale_max_filtered_texture_size - Invalid value.
[ERROR] [Environ] GET_VARIABLE: reicast_oit_layers - Invalid value.
[INFO] [Environ] SET_SAVE_STATE_IN_BACKGROUND: no.
[libretro INFO] File extension is: .cdi
[INFO] [Environ] GET_PREFERRED_HW_RENDER, video driver: "gl"...
[INFO] [Environ] GET_PREFERRED_HW_RENDER: RETRO_HW_CONTEXT_OPENGL.
[INFO] [Environ] SET_HW_RENDER, context type: gl.
[INFO] [HW] Requesting OpenGLES2 context.
[libretro INFO] core/hw/mem/addrspace.cpp:425 N[VMEM]: Info: nvmem is enabled
[libretro INFO] core/hw/mem/addrspace.cpp:457 N[VMEM]: BASE 0x47f20000 RAM(16 MB) 0x53f20000 VRAM64(8 MB) 0x4bf20000 ARAM(2 MB) 0x67f20000
[ERROR] [Environ] GET_VARIABLE: reicast_texupscale - Invalid value.
[ERROR] [Environ] GET_VARIABLE: reicast_texupscale_max_filtered_texture_size - Invalid value.
[ERROR] [Environ] GET_VARIABLE: reicast_oit_layers - Invalid value.
[libretro INFO] core/emulator.cpp:63 N[BOOT]: Game ID is [T0001]
[INFO] [Environ] GET_SYSTEM_DIRECTORY: "/media/developer/temp/retroarch/.config/retroarch/system".
[libretro INFO] core/emulator.cpp:63 N[BOOT]: Game ID is [T0001]
[INFO] [Environ] SET_ROTATION: "0" (0 deg).
[INFO] [SRAM] Skipping SRAM load.
[INFO] [Core] Version of libretro API: 1, Compiled against API: 1
[libretro INFO] shell/libretro/libretro.cpp:2485 N[RENDERER]: retro_get_system_av_info: Res=480
[INFO] [Core] Geometry: 640x480, Aspect: 1.333, FPS: 59.94, Sample rate: 44100.00 Hz.
[INFO] [Video] Set video size to: 1920x1080.
[INFO] [Video] Using HW render, OpenGL driver forced.
[INFO] [Video] Using configured "gl" driver for GL HW render.
[INFO] [SDL GL] SDL 2.30.12 gfx context driver initialized.
[INFO] [GL] Found GL context: "gl_sdl".
[INFO] [GL] Detecting screen resolution: 0x0.
[INFO] [GL] Vendor: Imagination Technologies, Renderer: PowerVR SGX 543MP.
[INFO] [GL] Version: OpenGL ES 2.0 build 1.10@2605106.
[INFO] [GL] Using resolution 1920x1080.
[INFO] [GL] Default shader backend found: glsl.
[INFO] [GL] Using GLSL shader backend.
[WARN] [GLSL] Stock GLSL shaders will be used.
[INFO] [GLSL] Found GLSL vertex shader.
[INFO] [GLSL] Shader log: Success.
.
[INFO] [GLSL] Found GLSL fragment shader.
[INFO] [GLSL] Shader log: Success.
.
[INFO] [GLSL] Linking GLSL program.
[INFO] [GLSL] Found GLSL vertex shader.
[INFO] [GLSL] Shader log: Success.
.
[INFO] [GLSL] Found GLSL fragment shader.
[INFO] [GLSL] Shader log: Success.
.
[INFO] [GLSL] Linking GLSL program.
[INFO] [GLSL] Found GLSL vertex shader.
[INFO] [GLSL] Shader log: Success.
.
[INFO] [GLSL] Found GLSL fragment shader.
[INFO] [GLSL] Shader log: Success.
WARNING: 0:15: Calls to any function that may require a gradient calculation inside a conditional block may return undefined results
WARNING: 1 compilation warnings.

.
[INFO] [GLSL] Linking GLSL program.
[INFO] [GL] Using 1 textures.
[INFO] [GL] Loaded 1 program(s).
[INFO] [GL] Initializing HW render (1024x1024).
[INFO] [GL] Max texture size: 4096 px, renderbuffer size: 4096 px.
[INFO] [GL] Supports FBO (render-to-texture).
[ERROR] [GL] GL: Invalid enum.
[ERROR] [Video] Cannot open video driver. Exiting...
[ERROR] Fatal error received in: "video_driver_init_internal()"
[INFO] [Core] Unloading game...
[ERROR] [Environ] GET_VARIABLE: reicast_texupscale - Invalid value.
[ERROR] [Environ] GET_VARIABLE: reicast_texupscale_max_filtered_texture_size - Invalid value.
[ERROR] [Environ] GET_VARIABLE: reicast_oit_layers - Invalid value.
[INFO] [Core] Unloading core...
[INFO] [Core] Unloading core symbols...
[INFO] [Core] Saved core options file to "/media/developer/temp/retroarch/.config/retroarch/config/Flycast/Flycast.opt".
[ERROR] failed_to_start_audio_driver
Segmentation fault

@flyinghead
Copy link
Owner

Setting core logging level to debug doesn't provide more info

@cscd98
Copy link
Contributor Author

cscd98 commented Jan 4, 2026

Do you think you could uninstall it from the menu (this wipes the folder - or do it from webOS dev manager which also wipes the data), and try installing:

https://github.com/webosbrew/RetroArch/actions/runs/20698787571/artifacts/5018990460

This makes sure HOME is set to the current working directory. Might fix the config issue launching from the menu.

Regarding flycast, I haven't had the chance to investigate properly why it doesn't work on mine yet, and I'm on webOS 10.

@cscd98
Copy link
Contributor Author

cscd98 commented Jan 4, 2026

This is what I get (lots of Unknown trap vector then returns back to menu):

[ERROR] [Environ] GET_VARIABLE: reicast_texupscale - Invalid value.
[ERROR] [Environ] GET_VARIABLE: reicast_texupscale_max_filtered_texture_size - Invalid value.
[ERROR] [Environ] GET_VARIABLE: reicast_oit_layers - Invalid value.
[INFO] [Playlist] Loading favorites file: "/media/developer/apps/usr/palm/applications/com.retroarch.webos/.config/retroarch/playlists/builtin/content_favorites.lpl".
[INFO] [Playlist] Loading history file: "/media/developer/apps/usr/palm/applications/com.retroarch.webos/.config/retroarch/playlists/builtin/content_history.lpl".
[INFO] [Playlist] Loading history file: "/media/developer/apps/usr/palm/applications/com.retroarch.webos/.config/retroarch/playlists/builtin/content_image_history.lpl".
[INFO] [Playlist] Loading history file: "/media/developer/apps/usr/palm/applications/com.retroarch.webos/.config/retroarch/playlists/builtin/content_music_history.lpl".
[libretro INFO] core/reios/reios.cpp:633 N[REIOS]: -----------------
[libretro INFO] core/reios/reios.cpp:634 N[REIOS]: REIOS: Booting up
[libretro INFO] core/reios/reios.cpp:635 N[REIOS]: -----------------
[libretro ERROR] core/reios/reios.cpp:719 E[REIOS]: Unknown trap vector 8c008300 pc ac008300
[libretro ERROR] core/reios/reios.cpp:719 E[REIOS]: Unknown trap vector 8c008302 pc ac008302
[libretro ERROR] core/reios/reios.cpp:719 E[REIOS]: Unknown trap vector 8c008304 pc ac008304
[libretro ERROR] core/reios/reios.cpp:719 E[REIOS]: Unknown trap vector 8c008306 pc ac008306
[libretro ERROR] core/reios/reios.cpp:719 E[REIOS]: Unknown trap vector 8c008308 pc ac008308

My compiler always defines _OPENMP:

echo | arm-webos-linux-gnueabi-gcc -dM -E -fopenmp - | grep OPENMP
#define _OPENMP 201511

@flyinghead
Copy link
Owner

I installed the RA update but it still can't write to its home folder:

Setting HOME to current working directory: /media/developer/apps/usr/palm/applications/com.retroarch.webos
[INFO] [Config] Looking for config in: "/media/developer/apps/usr/palm/applications/com.retroarch.webos/.config/retroarch/retroarch.cfg".
[INFO] [Config] Looking for config in: "/media/developer/apps/usr/palm/applications/com.retroarch.webos/.retroarch.cfg".
[INFO] RetroArch 1.22.2 (Git 60f0e3e)
[INFO] === Build =======================================
[INFO] Running on: webOS (unknown)
[INFO] CPU Model Name: ARMv7 Processor rev 0 (v7l)

[INFO] Capabilities: NEON VFPV3 
[INFO] Version: 1.22.2
[INFO] Git: 60f0e3e
[INFO] Built: Jan  4 2026
[INFO] =================================================
[INFO] [Input] Found input driver: "sdl2".
[INFO] [Environ] SET_PIXEL_FORMAT: RGB565.
[INFO] [Core] Version of libretro API: 1, Compiled against API: 1
[INFO] [Core] Geometry: 320x240, Aspect: 1.333, FPS: 60.00, Sample rate: 48000.00 Hz.
[INFO] [Video] Set video size to: 1920x1080.
ERROR: Failed to register app: Failed to get nativeLifeCycleInterfaceVersion: Failed to parse output of luna://com.webos.applicationManager/getAppInfo
[INFO] [SDL GL] SDL 2.30.12 gfx context driver initialized.
[INFO] [GL] Found GL context: "gl_sdl".
[INFO] [GL] Detecting screen resolution: 0x0.
[INFO] [GL] Vendor: Imagination Technologies, Renderer: PowerVR SGX 543MP.
[INFO] [GL] Version: OpenGL ES 2.0 build 1.10@2605106.
[INFO] [GL] Using resolution 1920x1080.
[INFO] [GL] Default shader backend found: glsl.
[INFO] [GL] Using GLSL shader backend.
[WARN] [GLSL] Stock GLSL shaders will be used.
[INFO] [GLSL] Found GLSL vertex shader.
[INFO] [GLSL] Shader log: Success.
.
[INFO] [GLSL] Found GLSL fragment shader.
[INFO] [GLSL] Shader log: Success.
.
[INFO] [GLSL] Linking GLSL program.
[INFO] [GLSL] Found GLSL vertex shader.
[INFO] [GLSL] Shader log: Success.
.
[INFO] [GLSL] Found GLSL fragment shader.
[INFO] [GLSL] Shader log: Success.
.
[INFO] [GLSL] Linking GLSL program.
[INFO] [GLSL] Found GLSL vertex shader.
[INFO] [GLSL] Shader log: Success.
.
[INFO] [GLSL] Found GLSL fragment shader.
[INFO] [GLSL] Shader log: Success.
WARNING: 0:15: Calls to any function that may require a gradient calculation inside a conditional block may return undefined results
WARNING: 1 compilation warnings.

.
[INFO] [GLSL] Linking GLSL program.
[INFO] [GL] Using 4 textures.
[INFO] [GL] Loaded 1 program(s).
[INFO] [Video] Graphics driver did not initialize an input driver. Attempting to pick a suitable driver.
[INFO] [Input] Found joypad driver: "sdl2".
[INFO] [Video] Found display server: "null".
[INFO] [Audio] Set audio input rate to: 48000.00 Hz.
Home directory /media/developer/apps/usr/palm/applications/com.retroarch.webos not ours.
[DEBUG] [PulseAudio] Sink detected: pcm_output.
[DEBUG] [PulseAudio] Sink detected: palerts.
[DEBUG] [PulseAudio] Sink detected: pfeedback.
[DEBUG] [PulseAudio] Sink detected: pringtones.
[DEBUG] [PulseAudio] Sink detected: pmedia.
[DEBUG] [PulseAudio] Sink detected: pdefaultapp.
[DEBUG] [PulseAudio] Sink detected: peffects.
[DEBUG] [PulseAudio] Sink detected: pvoicerecognition.
[DEBUG] [PulseAudio] Sink detected: ptts.
[DEBUG] [PulseAudio] Sink detected: pndk.
[INFO] [PulseAudio] Requested 24576 bytes buffer, got 51032.
[INFO] [Audio] Started synchronous audio driver.
[INFO] [Display] Found display driver: "gl".
[ERROR] [Overrides] Config directory not set, cannot save configuration.
[INFO] [Playlist] Loading favorites file: "/media/developer/apps/usr/palm/applications/com.retroarch.webos/.config/retroarch/playlists/builtin/content_favorites.lpl".
[INFO] [Playlist] Loading history file: "/media/developer/apps/usr/palm/applications/com.retroarch.webos/.config/retroarch/playlists/builtin/content_history.lpl".
[INFO] [Playlist] Loading history file: "/media/developer/apps/usr/palm/applications/com.retroarch.webos/.config/retroarch/playlists/builtin/content_image_history.lpl".
[INFO] [Playlist] Loading history file: "/media/developer/apps/usr/palm/applications/com.retroarch.webos/.config/retroarch/playlists/builtin/content_music_history.lpl".
[DEBUG] [Audio] Stopped audio driver "pulse".

@cscd98
Copy link
Contributor Author

cscd98 commented Jan 5, 2026

Was that launched from the menu? You would have to uninstall the app using webOS dev manager (which deletes the folder) and then re-install. Then launch from the menu. If you don't it would have been created with the wrong permissions (e.g. if your rooted for example, the folder may have root ownership if the first time you ran it was as root).

@flyinghead
Copy link
Owner

I uninstalled and re-installed RA. Then did the first launch from the TV apps menu instead of dev manager but I was greeted with the usual Configuration directory not set. Cannot save configuration and still no .configdirectory created.

@cscd98
Copy link
Contributor Author

cscd98 commented Jan 5, 2026

I've asked in discord in case anyone can help. If your interested in building it yourself to find out the problem you can get the toolchain from:

https://github.com/openlgtv/buildroot-nc4/releases/download/webos-a38c582/arm-webos-linux-gnueabi_sdk-buildroot-x86_64.tar.gz (or aarch64)

./arm-webos-linux-gnueabi_sdk-buildroot/relocate-sdk.sh
source ./arm-webos-linux-gnueabi_sdk-buildroot/environment-setup

RetroArch is compiled with:

make clean
make -f Makefile.webos ipk PACKAGE_NAME=com.retroarch.webos DEBUG=1 ADD_SDL2_LIB=1-j$(getconf _NPROCESSORS_ONLN)

It will automatically make the IPK in the webos/ folder. Or you can just upload the binary if you have write permissions.

@cscd98
Copy link
Contributor Author

cscd98 commented Jan 6, 2026

Not had any response on discord but would you be OK trying this build? If you uninstall, re-install:

https://github.com/webosbrew/RetroArch/actions/runs/20753390573/artifacts/5038473647

I've added logging to /tmp/retroarch.log. It will set XDG_CONFIG_HOME, then create the .config folder if it doesn't exist.

Could you provide the /tmp/retroarch.log? If you do run it from ssh accidentally, delete the file first otherwise it will have different permissions.

@flyinghead
Copy link
Owner

Here is /tmp/retroarch.log, first run from the menu:
retroarch.log

No write permission to the app main directory.

@cscd98
Copy link
Contributor Author

cscd98 commented Jan 11, 2026

So thanks to a nice chap off Discord, both webOS 1 and 2 do not let you write to the app folders, which was then changed in webOS 3.

Do you think you could find out if a file/directory persists in /tmp when the TV is powered off (switch off at the plug) and turn it back on?

@flyinghead
Copy link
Owner

Unfortunately I can't easily unplug my TV because it's on a rigid wall mount. But I did a test anyway and the folder I created in /tmp was deleted after a power cycle with the remote.
However there is a /media/developer/temp directory where I can create a folder and add files to it, and they persist after a power cycle.

@cscd98
Copy link
Contributor Author

cscd98 commented Jan 11, 2026

That's great. Come up with a workaround if you can try it and let me know? (from the menu). /tmp/retroarch.log is still being written to.

https://github.com/webosbrew/RetroArch/actions/runs/20895378655/artifacts/5089742768

If apps folder is not writeable, it will write config files to /media/developer/temp/webosbrew/com.retroarch.webos

@flyinghead
Copy link
Owner

Yay! This build worked.
It picked /media/tmp/webosbrew/... to store its config successfully. I could download assets, core info files and downloaded the 2048 core, which works fine.

With flycast I got the same Unknown trap vector 8c008300 error over and over.

@cscd98
Copy link
Contributor Author

cscd98 commented Jan 11, 2026

That's great. Is /media/developer/temp a symlink to tmp?

The code definitely says:

snprintf(new_path, sizeof(new_path), "/media/developer/temp/webosbrew/%s", appId);

It's separate directories on mine.

The Unknown trap vector 8c008300 error needs to be investigated.

@flyinghead
Copy link
Owner

Sorry, I meant /media/developer/temp/webosbrew/... as expected.
I'll look into the the Unknown trap vector error.

@cscd98
Copy link
Contributor Author

cscd98 commented Jan 17, 2026

Would you mind trying the build below for me? It has something I've been working on, adding wayland support.

https://github.com/webosbrew/RetroArch/actions/runs/21092233778

You should try the bottom download, it will write to /tmp/retroarch.log as well as the normal retroarch log. If you could provide those logs?

It needs some workarounds for the older wayland version which i've implemented.

There is also a second IPK, this has GLES 3. I am not sure if it will run or not, because retroarch is supposed to use pointers to pick GLES 2 anyway. Would be good to see if that runs or not. (it wont if the above dont run!)

@flyinghead
Copy link
Owner

The first build works and here is the (zipped) log:
retroarch.log.zip

@flyinghead
Copy link
Owner

And the gles3 build also works:
retroarch.log.gles3.zip

@cscd98
Copy link
Contributor Author

cscd98 commented Jan 19, 2026

That's awesome thanks for trying that out. Could you post the normal retroarch.log as well? (not the one in /tmp?). Does the GLES 3 one actually load a core? (preferably one with GLES 2) and it works?

@flyinghead
Copy link
Owner

The GLES3 build does run the 2048 core without issue and unloads then quits cleanly.
Log file from the logs RA folder:
logs_retroarch.log

@cscd98
Copy link
Contributor Author

cscd98 commented Jan 20, 2026

Great, does something with 3D like Nintendo - Nintendo 64 (ParaLLel N64) - run Mario 64 for you? That is a specific GLES 2 core so if it works retroarch should deny GLES 3 and resort to GLES 2.

If that doesnt work does the GLES 2 retroarch one work?

@flyinghead
Copy link
Owner

Mario 64 with the ParaLLel core runs fine. I used the gles3 build. I didn't notice any graphical glitch but I don't have any controller on that thing so I couldn't get very far.
It did crash when I closed the content.
retroarch-sm64.log

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants