How jrmcpeek/vb3dec works
vb3dec is a Go decompiler for 16-bit Visual Basic 3 executables. Its CLI opens an NE binary, recovers project metadata and form resources, and reconstructs form files and assets; it also disassembles P-code into Basic modules and writes project artifacts. The README documents broader P-code analysis capabilities, including control-flow recovery, type and parameter inference, and event mapping. Sampled source confirms NE parsing, form decoding, asset extraction, and ANSI conversion; P-code orchestration details are not fully shown, so uncertain internal wiring is omitted.
Main entry points: main.go Decompiler CLI · extractor.go Form extraction · decoder.go Form stream decoder · disasm.go P-Code disassembler
Components 16
Command line
- Decompiler CLI
cmd/vb3dec/main.go
NE parsing
- NE file parser
pkg/ne/ne.go - Resource directory
pkg/ne/resource.go
Forms and assets
- VB project metadata
pkg/frm/project.go - Form extraction
pkg/frm/extractor.go - Form stream decoder
pkg/frm/decoder.go - FRX asset extraction
pkg/frm/asset.go - Form artifact writer
pkg/frm/writer.go - Windows-1252 conversion
pkg/win1252/win1252.go
P-Code reconstruction
- P-Code project analysis
pkg/pcode/project.go - P-Code disassembler
pkg/pcode/disasm.go - Opcode definitions
pkg/pcode/opcodes.go - Control token table
pkg/pcode/control_table.go
Other components
- Analyst
- VB3 executable
- Project artifacts
Connections 17
- Analyst → Decompiler CLI: runs
- VB3 executable → Decompiler CLI: supplies input
- Decompiler CLI → NE file parser: opens binary
- NE file parser → Resource directory: parses resources
- Decompiler CLI → Form extraction: extracts forms
- Form extraction → VB project metadata: parses project
- Form extraction → Resource directory: reads resources
- Form extraction → Form stream decoder: decodes streams
- Form stream decoder → Windows-1252 conversion: decodes text
- Form stream decoder → FRX asset extraction: provides FRX data
- Decompiler CLI → Form artifact writer: saves forms
- Form artifact writer → Project artifacts: writes artifacts
- Decompiler CLI → P-Code project analysis: decompiles code
- P-Code project analysis → P-Code disassembler: disassembles procedures
- P-Code disassembler → Opcode definitions: looks up opcodes
- P-Code disassembler → Control token table: maps control tokens
- Decompiler CLI → Project artifacts: writes project files