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