UNPKG

snes-disassembler

Version:

A Super Nintendo (SNES) ROM disassembler for 65816 assembly

144 lines 3.5 kB
/** * SPC File Export for SNES Disassembler * Implements SPC700 state export for audio playback as per SPC File Format v0.30 * * Based on SPC File Format Specification: * - 27-byte header with SPC700 register states * - 64KB SPC700 RAM state * - 128 bytes DSP register states * - ID666 metadata tags support * - Timer and I/O port states */ export interface SPC700State { pc: number; a: number; x: number; y: number; psw: number; sp: number; ram: Uint8Array; timer0: { value: number; target: number; enabled: boolean; }; timer1: { value: number; target: number; enabled: boolean; }; timer2: { value: number; target: number; enabled: boolean; }; ports: { cpuToApu: Uint8Array; apuToCpu: Uint8Array; }; } export interface DSPState { registers: Uint8Array; voices: Array<{ volumeLeft: number; volumeRight: number; pitch: number; sourceNumber: number; adsr1: number; adsr2: number; gain: number; envx: number; outx: number; }>; mainVolumeLeft: number; mainVolumeRight: number; echoVolumeLeft: number; echoVolumeRight: number; keyOn: number; keyOff: number; flg: number; endx: number; efb: number; pmon: number; non: number; eon: number; dir: number; esa: number; edl: number; } export interface ID666Metadata { songTitle?: string; gameTitle?: string; dumperName?: string; comments?: string; dumpDate?: string; playTime?: number; fadeLength?: number; artist?: string; defaultChannelDisables?: number; emulator?: number; publisher?: string; year?: number; genre?: string; originalSoundtrack?: string; introduction?: number; loop?: number; ending?: number; mixing?: number; preamp?: number; } export interface SPCExportOptions { includeID666?: boolean; binaryFormat?: boolean; includeExtended?: boolean; filename?: string; validate?: boolean; } export declare class SPCExporter { private static readonly SPC_HEADER; private static readonly SPC_SIGNATURE; private static readonly RAM_SIZE; private static readonly DSP_REG_SIZE; private static readonly EXTRA_RAM_SIZE; /** * Export SPC700 and DSP state to SPC file format */ static exportSPC(spcState: SPC700State, dspState: DSPState, metadata?: ID666Metadata, options?: SPCExportOptions): Uint8Array; /** * Write SPC file header including SPC700 register states */ private static writeHeader; /** * Write ID666 metadata tags */ private static writeID666; /** * Create extended ID666 (xid6) chunk */ private static createExtendedID666; /** * Create individual xid6 sub-chunk */ private static createXID6Chunk; /** * Write string to buffer with null padding */ private static writeString; /** * Parse date string to binary format */ private static parseDateToBinary; /** * Validate exported SPC file */ private static validateSPCFile; /** * Create default SPC700 state for testing */ static createDefaultSPC700State(): SPC700State; /** * Create default DSP state for testing */ static createDefaultDSPState(): DSPState; } //# sourceMappingURL=spc-exporter.d.ts.map