Research & Community

Swordigo Desktop exists because of years of reverse engineering, binary analysis, and community knowledge. This page documents the sources, discoveries, and people that made a Linux-native port possible.

Research Sources

The external projects and techniques that provided the foundation for SRE development.

Community
๐Ÿงช

SwMini Mod Loader

by ItsJustSomeDude & Kiziyon

Decompiled the Swordigo engine source, identified function signatures and object layouts. Critical for SRE hook development โ€” provided the roadmap for intercepting GameSceneView::Update, MusicPlayer commands, and GUI view hierarchies.

Community
๐ŸŽฎ

Swordigo Vita Port

by Rinnegatamante

First ARM โ†’ desktop porting research for Swordigo. Identified JNI entry points, GL translation patterns, and proved the engine could run outside Android. Established the viability of the entire SwordigoDesktop approach.

Internal
๐Ÿ”ฌ

Binary Analysis

IDA Pro / Ghidra / radare2

Direct decompilation of libswordigo.so (ARM64 v1.4.12). Symbol maps, function tracing, vtable reconstruction, and cross-referencing with SwMini's decompiled source to build the complete native engine map.


Key Discoveries

Critical findings from reverse engineering that directly shaped the runtime architecture.

๐Ÿ”„ STXR Spin Loops Critical

ARM64 exclusive store instructions (STXR / LDXR) causing infinite loops on single-threaded emulation. The atomics never succeed because no other thread releases the exclusive monitor. Required SRE to NOP-patch or rewrite these sequences.

๐ŸŽต MusicPlayer Architecture Engine

Shared memory command interface pattern discovered through tracing. The game uses a ring buffer of music commands (play, stop, fade) that the MusicPlayer thread consumes. SRE intercepts this to route audio through native PulseAudio/PipeWire.

๐Ÿ–ผ๏ธ GUI Object Layout Engine

GUIView hierarchy with reconstructed offsets: +0x58 superview, +0x100 label text, +0x60 subview list. Enabled direct manipulation of the HUD without modifying engine code.

โš”๏ธ GameSceneView::Update Engine

~400-line function responsible for all HUD rendering โ€” health bars, magic meter, item slots, minimap. Understanding this function was essential for adding custom overlays and the FPS counter without breaking the render pipeline.

๐Ÿ’€ Death Handler Runtime

GameOverViewController::ShowAdMaybe โ†’ calls into the ad SDK which attempts network access and hangs indefinitely without connectivity. SRE hooks this to skip the ad path entirely, restoring instant respawn behavior.

๐ŸŒ€ Wastelands Spinlock Critical

Heavy ARM64 emulation path in the Wastelands zone causing infinite stalls. A tight atomic loop in the physics thread deadlocks when the emulator serializes execution. Fixed by identifying and short-circuiting the contended lock.


Research Documents

Key engineering documents from the project's research archive, hosted on GitHub.

Browse Full Archive on GitHub โ†’

Community Credits

The people and teams whose work made this project possible.

๐Ÿ› ๏ธ
ItsJustSomeDude
SwMini Mod Loader โ€” Engine decompilation, function signatures, hook research
โšก
Kiziyon
SwMini Mod Loader โ€” Object layout analysis, modding framework
๐ŸŽฎ
Rinnegatamante
Swordigo Vita Port โ€” ARMโ†’desktop porting pioneer, JNI & GL translation research
๐Ÿ—ก๏ธ
Touch Foo
Original Game โ€” Swordigo game developer & Caver engine creator
Standing on the shoulders of giants

SwordigoDesktop is an independent community project. It would not exist without the reverse engineering efforts of SwMini, the porting research from the Vita community, and the original game created by Touch Foo. We are deeply grateful for their work.