UNPKG

snes-disassembler

Version:

A Super Nintendo (SNES) ROM disassembler for 65816 assembly

137 lines 4.07 kB
/** * SNES Disassembler Validation Engine * * Provides real-time validation and enhancement of disassembly output * using authoritative SNES reference data from snes-mcp-server */ import { type InstructionReference, type RegisterReference } from './snes-reference-tables'; import { DisassemblyLine } from './types'; export interface ValidationResult { isValid: boolean; accuracy: number; discrepancies: ValidationDiscrepancy[]; enhancements: ValidationEnhancement[]; summary: ValidationSummary; } export interface ValidationDiscrepancy { type: 'instruction' | 'register' | 'addressing' | 'timing'; severity: 'error' | 'warning' | 'info'; message: string; address: number; expected?: any; actual?: any; reference?: InstructionReference | RegisterReference; } export interface ValidationEnhancement { type: 'comment' | 'label' | 'context' | 'reference'; address: number; content: string; priority: 'high' | 'medium' | 'low'; } export interface ValidationSummary { totalInstructions: number; validatedInstructions: number; totalRegisters: number; validatedRegisters: number; accuracyScore: number; recommendedImprovements: string[]; } export declare class SNESValidationEngine { private instructionStats; private registerStats; private validationResults; private enhancements; private logger; private validationCache; private logLevel; private errorFrequency; constructor(logLevel?: 'minimal' | 'normal' | 'verbose'); /** * Generate cache key for validation request */ private generateValidationCacheKey; /** * Generate error key based on type and specific details for frequency tracking */ private generateErrorKey; /** * Validate a complete disassembly against SNES reference data */ validateDisassembly(lines: DisassemblyLine[]): ValidationResult; /** * Validate a single disassembly line */ private validateDisassemblyLine; /** * Validate register access against SNES hardware specifications */ private validateRegisterAccess; /** * Generate comprehensive validation summary */ private generateSummary; /** * Log detailed validation summary (verbose mode) */ private logValidationSummary; /** * Log normal validation summary (normal mode) */ private logNormalSummary; /** * Log minimal validation summary (minimal mode) */ private logMinimalSummary; /** * Generate specific recommendations for improvement */ private generateRecommendations; /** * Enhance disassembly output with reference data */ enhanceDisassemblyOutput(lines: DisassemblyLine[]): DisassemblyLine[]; /** * Generate detailed validation report */ generateValidationReport(result: ValidationResult): string; private reset; /** * Clear validation cache */ clearCache(): void; /** * Get cache statistics */ getCacheStats(): { size: number; maxSize: number; }; /** * Get most common errors */ getMostCommonErrors(limit: number): [string, number][]; private isRegisterAddress; private getOperationType; private isImportantRegister; } /** * Quick validation of an instruction opcode */ export declare function quickValidateOpcode(opcode: number): boolean; /** * Quick validation of a register address */ export declare function quickValidateRegister(address: number): boolean; /** * Get reference data for an instruction */ export declare function getInstructionReference(opcode: number): InstructionReference | undefined; /** * Get reference data for a register */ export declare function getRegisterReference(address: number): RegisterReference | undefined; /** * Standalone validation function for integration testing */ export declare function validateSNESDisassembly(lines: DisassemblyLine[]): ValidationResult; //# sourceMappingURL=validation-engine.d.ts.map