Skip to content

What's left to decompile #74

@trigger-segfault

Description

@trigger-segfault

This is a list of all modules that still have unimplemented functions, which should make it easier to find something to decompile.

For good first modules to implement: ObjInfo, InfoMessages, Priorities, TextMessages, Detail, Roof, SpiderWeb

These modules are all relatively small, and have the least Ghidra gibberish in the decompiled source dump.

Some of the other modules also have plenty of functions that are easy to work on. It's not necessary to implement the entire module in one go, and in-fact, it can be easier to work on them in small bites.

List of modules

  • front/
    • Loader
    • Reward (10%)
  • interface/
    • hud/ObjInfo (40%)
    • HelpWindow
    • InfoMessages
    • Interface (5%)
    • Panels
    • Priorities
    • ScrollInfo
    • TextMessages
  • mission/
    • NERPsFile (30%)
    • Objective (85%)
  • object/
    • AITask (10%)
    • Dependencies
    • Flocks
    • Object (30%)
    • ObjectRecall
    • Upgrade
  • world/
    • Detail
    • ElectricFence
    • Map3D
    • Roof
    • SpiderWeb
    • Teleporter
  • Game (40%)

Post-decompilation

Once all functions have been implemented, the next step is to turn OpenLRR into a self-contained executable, rather than a dll. The following steps need to be taken:

  • Global variables need to be switched from references to locally-defined.
  • Constants and certain global variables will need their default values assigned.
    • Many global variables don't show as having default values, but end up getting zeroed out before the main function.
  • Legacy functions need to be switched to using functions provided by the OpenLRR C Runtime and linked libraries. (i.e. malloc)
  • The OpenLRR project needs to be switched to building an executable.
    • Ideally, separate projects should be created for outputting a dll or exe. And the existing project should be statically linked to either.
    • Handling global variables for both exe and dll versions may get complex, as it may still be beneficial to unhook functions to research issues with decompilation. This means global variables will need to conditionally be assigned as references, and conditionally given default values.
    • Some global variables can be excluded from keeping their reference form, like ones only appearing in a single function (static function variables).

Metadata

Metadata

Assignees

No one assigned

    Labels

    discussionSome input from team members is wanted.informationDescribes something undocumented or not easily deducible.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions