Skip to content
/ hlbc Public
forked from Gui-Yom/hlbc

Hashlink bytecode disassembler, analyzer, decompiler and assembler.

License

Notifications You must be signed in to change notification settings

sig-a11y/hlbc

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Hashlink bytecode tools


This repository contains a collection of Rust crates and cli tools to load, disassemble, decompile and analyze Hashlink bytecode.

About Hashlink

Hashlink is a VM used as a compilation target for the Haxe language. Hashlink is successfully used to run popular games from developer Shiro Games like Northgard, Dune: Spice Wars and Wartales.

hlbc intends to help the motivated to develop mods and tools for those games.

Those games are packaged with the following model :

  • <game>.exe: A very light executable that contains the Hashlink VM
  • hlboot.dat: The actual bytecode file Hashlink is configured to load on startup. This is the file you want to load in hlbc. It doesn't contain any game assets, this is just code.
  • sdlboot.dat: This is the same code, except it fallbacks to SDL.
  • <lib>.hdll: This is your average native code dll, except it can work with the VM.

Repository structure

  • data/ : Haxe source files to test the tools
  • crates/hlbc/ : Core library to load and disassemble bytecode
  • crates/cli/ : CLI frontend for hlbc
  • crates/decompiler/ : Decompiler library
  • crates/derive/ : helper proc macros for hlbc
  • crates/gui/ : GUI to explore bytecode visually

Wiki

A wiki detailing the specifics of Hashlink bytecode is available here or by using the command wiki in the CLI.

Planned

  • C API

Credits

Development of this project would not have been possible without the hashlink source code. Some algorithms are directly derived from the original C code reading bytecode files.

About

Hashlink bytecode disassembler, analyzer, decompiler and assembler.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Rust 97.5%
  • Haxe 1.5%
  • Other 1.0%