snes-disassembler
Version:
A Super Nintendo (SNES) ROM disassembler for 65816 assembly
81 lines • 2.93 kB
TypeScript
/**
* 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