UNPKG

snes-disassembler

Version:

A Super Nintendo (SNES) ROM disassembler for 65816 assembly

81 lines 2.93 kB
/** * Phase 4: Output & Integration - Multiple Output Formats * * Implements various assembler formats and output types for SNES disassembly: * - ca65-compatible assembly source files * - WLA-DX assembler format support * - bass assembler output format * - HTML output with hyperlinked cross-references * - JSON/XML export for external tools * - Symbol table management with external file support */ import { DisassemblyLine } from './types'; import { SNESRom } from './rom-parser'; export interface OutputOptions { includeHeader?: boolean; includeComments?: boolean; includeBytes?: boolean; includeTiming?: boolean; includeSymbols?: boolean; includeCrossReferences?: boolean; lineNumbers?: boolean; uppercase?: boolean; tabWidth?: number; } export interface SymbolTableEntry { address: number; name: string; type: 'CODE' | 'DATA' | 'VECTOR' | 'REGISTER' | 'CONSTANT'; scope: 'GLOBAL' | 'LOCAL' | 'IMPORT' | 'EXPORT'; size?: number; description?: string; references?: number[]; } export interface CrossReference { fromAddress: number; toAddress: number; type: 'CALL' | 'JUMP' | 'BRANCH' | 'DATA_READ' | 'DATA_WRITE'; instruction?: string; } export declare abstract class OutputFormatter { protected rom: SNESRom; protected symbols: Map<number, SymbolTableEntry>; protected crossRefs: CrossReference[]; protected options: OutputOptions; constructor(rom: SNESRom, symbols?: Map<number, SymbolTableEntry>, crossRefs?: CrossReference[], options?: OutputOptions); abstract format(lines: DisassemblyLine[]): string; abstract getFileExtension(): string; abstract getName(): string; protected formatAddress(address: number): string; protected formatBytes(bytes: number[]): string; protected getSymbolName(address: number): string | undefined; protected generateHeader(): string[]; protected formatOperand(line: DisassemblyLine): string; addSymbol(address: number, entry: SymbolTableEntry): void; addCrossReference(ref: CrossReference): void; getSymbols(): Map<number, SymbolTableEntry>; getCrossReferences(): CrossReference[]; } export declare class CA65Formatter extends OutputFormatter { getName(): string; getFileExtension(): string; format(lines: DisassemblyLine[]): string; private addMemoryMapping; private formatCA65Line; } export declare class WLADXFormatter extends OutputFormatter { getName(): string; getFileExtension(): string; format(lines: DisassemblyLine[]): string; private addWLAMemoryMapping; private formatWLALine; private formatWLAOperand; } export declare class BassFormatter extends OutputFormatter { getName(): string; getFileExtension(): string; format(lines: DisassemblyLine[]): string; private formatBassLine; private formatBassOperand; } //# sourceMappingURL=output-formatters.d.ts.map