Skip to content
PORTSNATIVE.
HomeCatalog
Web GamesEmulatorsToolsNews
PORTSNATIVE.

A catalog for discovering ports and related projects. We link to official sources and do not host original game files.

ExploreCatalogMy list
InformationAbout usSuggest a portSupportDonationsLegal notice
© 2026 PortsNative
Back to catalog
Medal of Honor: Rising Sun
PORTSNATIVE

Medal of Honor: Rising Sun

NATIVE PORTSHOOTER / ACTIONWINDOWSLINUXMACOSALPHA

Medal of Honor: Rising Sun

OriginGameCube

TechnologyNative C/C++ port (engine reimplementation)

Available forWindows, Linux, macOS

View official project

About the project

Medal of Honor: Rising Sun es un videojuego de disparos en primera persona basado en las batallas libradas durante la Segunda Guerra Mundial en el Océano Pacífico, desde el bombardeo de Pearl Harbor hasta las calles de Singapur.

Official project information

Author's original READMEOpen on GitHub ↗

Medal of Honor: Rising Sun

An early matching decompilation of Medal of Honor: Rising Sun for GameCube, targeting the USA release GR8E69, Disc 1, revision 0. The initial game-code target is the disc's MOH3RDVD.ELF.

Verified progress snapshot

See current matching progress and unfinished functions on decomp.dev. The project combines reconstructed game-specific C++ with compatible public library reconstructions, including Lua, Dolphin SDK, Newlib, GCC runtime, STLport and network helpers. Accepted source is checked against the original executable as part of a complete rebuilt analysis-image comparison. The remainder stays original binary context. AI-assisted contributions are welcome; see CONTRIBUTING.md.

Progress counts verified, nonoverlapping source-built function bytes against all bytes in the original executable sections (.init and .text). Generated data and BSS are verified separately and earn no code-progress credit; neither do stripped functions, original context or debug metadata. Exact counts and input hashes live in the verified snapshot. See how progress is verified and published and the reuse index for library provenance, evidence and next work.

Verified starting point

  • MOH3RDVD.ELF: 3,628,980 bytes; SHA-1 dd797412be7d631e78c98f194a1bb47981174d75.
  • 15,507 symbol entries, including 9,883 function entries and 954 source-file entries. Entries are not necessarily unique functions or complete original source units.
  • Preserved DWARF 1 information covers seven Nintendo GBA-library compilation units. It is not full game-wide type information.
  • The original-object relink matches the complete 2,860,576-byte DOL derived from the ELF, including its header. Every original allocated ELF file byte, entry point, and BSS extent is checked separately.
  • Accepted game and library source passes that same complete-image comparison. Code and generated data are both checked; reconstructed game code and restored library code are reported separately. The project manifest lists accepted units and fragments.

This comparison is against a derived analysis image. It does not mean the original ELF's debug/symbol tables have been reproduced, the on-disc boot DOL has been replaced, or the game has been tested in an emulator. The boot DOL is a separate 206,016-byte program containing references to the game ELFs.

Join the project — AI-assisted contributions welcome

Want to help bring Rising Sun back to readable source? Human and AI-assisted contributions are welcome: reconstruct game functions, investigate compiler behavior, improve verification tools, document evidence, or test the loading path. You do not need to use AI to contribute. AI-generated suggestions receive the same review and byte-verification requirements as other changes.

Start with the next work below and contribution guide. Open an issue to coordinate a source unit or investigation, then send a focused pull request with your evidence, verification results and any AI assistance used. Pseudonymous contributors are welcome. Preserve upstream credit and license notices.

Bring your own game copy for local verification. This repository contains source, configuration and tooling; please do not upload game images, executable binaries, assets, compiler binaries or complete debug dumps to commits, issues or PRs.

Research notes

The research notes index collects contributor investigations and their GameCube comparisons. Thanks to kyleckroeger for sharing PS2 research on FlexProp names, particle recipes, script instructions, class descriptions, gameplay data, interactive music, runtime timing and camera behavior. These notes provide leads for reconstruction; each topic separates its evidence and open questions from verified matching source.

Progress integration

Explore the live decomp.dev map to find unfinished functions. The remaining code is divided into grey boxes: named file groups where supported by symbols, unknown-file groups, shared entry points and unidentified bytes. Inferred ownership is labeled and earns no matching credit. See code-map evidence and starting points and the reuse index and ranked next work. The new direct dependency map ranks shared helpers by unfinished callers and preserves unresolved indirect calls.

The progress workflow publishes an objdiff v2 GR8E69_report artifact compatible with decomp.dev. CI validates source hashes against a locally verified snapshot; it does not rebuild the game. Source changes require a fresh local complete-image verification before their progress can be published. See progress reporting and registration.

Local setup

Requires Python 3.9+ on macOS ARM64 or Linux x86-64 (including WSL2). On macOS, source compilation also uses existing Rosetta support; on Linux, wibo runs the Windows compilers natively. Tools are downloaded into ignored build/tools/ and build/compiler/ with pinned SHA-256 checksums. ProDG 3.8.1 with -O2 -G0 is the working MathFun profile; the restored Lua library adds -ffast-math and uses native unused-function stripping. The SDK units use CodeWarrior GC/1.2.5n; EXI uses -O3,p, the other SDK units use -O4,p, with -opt nopeep for the documented fragments. Newlib libc uses ProDG 3.8.1 with -O2 -G8 -fsigned-char -DMB_CAPABLE; math uses -O2 -G1024 -fno-builtin -msafe-sda and the language profiles in Newlib.md. GCC runtime helpers use -O2 -G8. The script interpreter handlers use ProDG 3.9.3; see Script.md for the compiler comparison and accepted scope. The original compiler releases remain unconfirmed.

python3 tools/import_disc.py "/path/to/Medal of Honor - Rising Sun (USA) (Disc 1).nkit.iso"
python3 tools/setup.py
python3 tools/audit.py
python3 tools/baseline.py
python3 tools/reconstruct.py
python3 -m unittest discover -s tests -v

The importer reads the standard GameCube filesystem table, including the provided uncompressed NKit v01 image. It extracts only four pinned executables into orig/GR8E69/, checks their sizes and SHA-1/SHA-256 digests, and leaves the input image untouched. This does not recover or verify a full retail-disc image. Other compressed formats and other revisions are not currently supported.

Run the scripts from any directory; all outputs remain inside this checkout. baseline.py and reconstruct.py recreate their own build directories, so keep experiments under scratch/.

Outputs

PathContents
config/GR8E69/target.jsonExecutable identities and hashes
config/GR8E69/baseline.jsonEntry point, SDA bases and comparison layout
build/audit/summary.jsonSection and symbol statistics
build/audit/symbols.jsonComplete local symbol inventory
build/audit/dwarf.txtLocal debug-information dump
build/audit/elf-config/Experimental dtk symbol/split exports
build/baseline/report.jsonVerified baseline result, with zero source credit
build/baseline/relinked.dolRebuilt analysis image
build/audit/dependencies.jsonLocal direct-branch dependency graph and research ranking (python3 tools/dependencies.py)
src/matrix/, include/game/CMatrix.h, include/game/CVector3.hReconstructed matrix and vector functions and their shared layouts
src/quaternion/, src/geometry/Reconstructed quaternion conversions, line geometry and integer-angle helpers, with scoped storage evidence
src/camera/, include/game/Camera.h, include/game/Frustum.hReconstructed camera projection, view/clip updates and frustum transforms, guided by contributed runtime research
src/sys_memory.cpp, src/memory/Reconstructed game allocation operators and MemStack lifecycle; original heap routines remain external
src/stlport/Tree, container, sorting and heap functions using an attributed STLport 4.5.3 subset
src/eagl/Reconstructed rendering state and material drawing fragments; evidence and remaining work
src/eagl_anim/Reconstructed animation decoders, channels and support interfaces; reference and evidence
src/eagl_loading/Reconstructed EAGL symbol pools and dynamic-loader fragments; reference and evidence
src/particles/, src/flexprop/, src/string_crc.cppReconstructed particle recipes, state, pool and clock helpers, FlexProp loading, lookup and string CRC
src/scene/, include/game/SceneNode.hRecovered scene-node virtual-slot order and base-class defaults
src/script/Reconstructed all opcode handlers, timers, message registrations, spatial access, projectile aiming, fog and camera controls, music, ambience, objective and value built-ins, and AI behavior, player, event and stub built-ins, guided by contributed PS2 research, the Frontline GameCube reconstruction and independent GameCube analysis
src/bpd/, src/endian/Reconstructed BPD/property conversion, pointer setup, cleanup and lighting-volume point test
src/ai/, src/bpd/load_properties.cpp, src/bpd/load_bsp.cppReconstructed property loaders, spline walking, locomotion and AI clock, with scoped record and allocation evidence
src/ai/target*.cpp, include/game/AITargeting.hReconstructed AI target values, script-target updates, spatial queries, aim-mode choices and blind fire
src/lighting/, include/game/Light.hReconstructed light-volume selection and transitions, scene-light transforms and animated-light lifecycle
src/bullets/, include/game/Bullet.hReconstructed bullet defaults, accessors and collision helpers
src/triggers/Reconstructed trigger initialization, property/transform queries, startup sizing, player starts and machine-gun searches
src/sound/Reconstructed ambient-track and sound accessors
src/player/Reconstructed camera-shake initialization, evaluation and player wrappers, plus path controls and spline evaluation
src/objectives/Reconstructed objective initialization, status and visibility helpers
src/observers/Reconstructed observers, weak pointers and destruction queue; evidence
src/frontend/Reconstructed uppercase conversion and front-end string hash, guided by the EA reference comparison
src/MathFun.cpp, src/mathfun/Reconstructed angles, rotations, pan/tilt, random helpers and clamp templates
src/lua/Restored Lua 4.0.1 source units, headers and copyright notice
src/dolphin/, include/dolphin-sdk/Accepted SDK source units, reference headers and attribution
src/newlib/, include/newlib/Accepted Newlib units, supporting headers and attribution
src/libgcc/Verified GCC 2.95.2 runtime helpers, target configuration and notices
config/GR8E69/MathFun.jsonFunction ranges, external references and compiler profile
config/GR8E69/project.jsonAccepted unit list, source provenance and fixed progress denominator
build/reconstruction/report.jsonFull-image result and source/tool fingerprints
build/reconstruction/units/Per-unit compiler, linker and generated-section output
build/reconstruction/rebuilt.dolAnalysis image containing all accepted compiled source
progress/GR8E69.snapshot.jsonVerification metadata, source hashes and unfinished-code map; no original bytes
build/progress/report.jsonGenerated objdiff v2 progress for decomp.dev

The automatic dtk ELF split export emits warnings for this executable's symbol ordering. Treat it as research output; it is not accepted source ownership. The baseline uses a separate original-object split and retains every compared byte.

Next work

  1. Extend the animation formats using the shared delta-decoder interfaces and attributed NFS reference, and the rendering reconstruction through its remaining lighting blocks, startup registration and PCode interpreter. The reuse index ranks other candidates, including matrix, container, string and allocation helpers. Preserve the documented limits of shared storage views; establish missing types and constant ownership before adding callers that depend on them.
  2. Distinguish the original compiler release using larger functions. Five tested SN/ProDG versions match the accepted fragment, so its byte match alone cannot identify the original release. Nintendo libraries may use different compilers.
  3. Extend the network-library subset by recovering the older target's behavior and storage; the remaining TCP, UDP, PPP and Ethernet reference routines differ. Continue shared game-code reconstruction alongside library restoration. Only compiled source bytes that pass complete-image verification count toward progress.
  4. Inspect Disc 2 and test the game's executable-loading path before claiming complete game coverage or a runnable replacement disc.

See the initial audit for evidence and limitations.

License

Original project contributions are dedicated under CC0 1.0 Universal, to the extent contributors hold the relevant rights. Third-party source and adaptations retain their existing terms and notices; the dedication grants no rights in the original game or its assets. See licensing scope and third-party notices.

Tooling

Uses decomp-toolkit 1.8.4, gc-wii-binutils 2.42-2, and wibo 1.0.3. The project layout follows the separation of originals, source and build output documented by dtk-template; its standard CodeWarrior build configuration has not been adopted for the SN-compiled game code.

View official project
CALIFICACIÓN
—
Loading votes…
Advertisement

PROJECT FILE

Project type
NATIVE PORT
Genre
Shooter / Action
Status
alpha
Original platform
GameCube
Technology
Native C/C++ port (engine reimplementation)
Version
—
Updated
—

Target platforms 3

Windows
Linux
macOS
View on GitHub
Advertisement