snes-disassembler
Version:
A Super Nintendo (SNES) ROM disassembler for 65816 assembly
131 lines • 4.65 kB
TypeScript
/**
* AI-Powered Pattern Recognition for SNES Asset Extraction
*
* This module provides GenAI-enhanced pattern recognition capabilities
* to make asset extraction generic across all SNES games, avoiding
* game-specific implementations.
*/
export interface PatternConfidence {
type: string;
confidence: number;
metadata?: any;
}
export interface GraphicsClassification {
type: 'sprite' | 'tile' | 'background' | 'ui' | 'font' | 'palette';
confidence: number;
dimensions?: {
width: number;
height: number;
};
format?: '2bpp' | '4bpp' | '8bpp';
}
export interface AudioClassification {
type: 'brr_sample' | 'sequence' | 'spc_code' | 'instrument' | 'sfx' | 'voice' | 'percussion';
confidence: number;
sampleRate?: number;
channels?: number;
encoding?: 'brr' | 'raw' | 'compressed';
category?: 'instrument' | 'sfx' | 'voice' | 'percussion' | 'ambient';
instrumentType?: 'piano' | 'strings' | 'brass' | 'woodwind' | 'synth' | 'drum' | 'unknown';
voiceType?: 'male' | 'female' | 'child' | 'narrator' | 'unknown';
sfxType?: 'impact' | 'environment' | 'ui' | 'magic' | 'mechanical' | 'unknown';
loopDetected?: boolean;
boundaryQuality?: number;
musicPattern?: {
melodyComplexity: number;
rhythmPattern: string;
keySignature?: string;
tempo?: number;
};
}
export interface TextClassification {
type: 'dialogue' | 'menu' | 'item_name' | 'credits' | 'code_comment';
confidence: number;
encoding: 'ascii' | 'shift-jis' | 'custom' | 'compressed';
compression?: 'dte' | 'dictionary' | 'rle' | 'lz77' | 'none';
}
export interface CompressionInfo {
type: 'RLE' | 'LZ77' | 'LZSS' | 'DTE' | 'dictionary' | 'huffman' | 'none';
confidence: number;
blockSize?: number;
dictionarySize?: number;
decompressHint?: string;
}
/**
* AI-Enhanced Pattern Recognition Engine
* Uses multiple machine learning approaches for robust pattern detection
*/
export declare class AIPatternRecognizer {
private modelPath?;
private graphicsClassifier?;
private sequenceClassifier?;
private compressionDetector?;
constructor(modelPath?: string | undefined);
/**
* Classify graphics data using Vision Transformer approach
*/
classifyGraphicsData(data: Uint8Array, format: '2bpp' | '4bpp' | '8bpp'): Promise<GraphicsClassification>;
/**
* Classify audio data using sequence-based transformers with enhanced BRR sample analysis
*/
classifyAudioData(data: Uint8Array, offset?: number): Promise<AudioClassification>;
/**
* Classify text data and detect encoding/compression
*/
classifyTextData(data: Uint8Array, offset?: number): Promise<TextClassification>;
/**
* Detect compression patterns in binary data
*/
detectCompression(data: Uint8Array): Promise<CompressionInfo>;
/**
* Comprehensive data classification combining all AI approaches
*/
classifyDataRegion(data: Uint8Array, offset: number, length: number): Promise<{
graphics?: GraphicsClassification;
audio?: AudioClassification;
text?: TextClassification;
compression?: CompressionInfo;
mostLikely: 'graphics' | 'audio' | 'text' | 'code' | 'unknown';
confidence: number;
}>;
private initializeModels;
private convertTileDataToPatches;
private heuristicGraphicsClassification;
/**
* Enhanced heuristic audio classification with detailed sample type detection
*/
private enhancedHeuristicAudioClassification;
/**
* Enhance AI classification results with additional pattern analysis
*/
private enhanceAudioClassification;
private heuristicTextClassification;
private statisticalCompressionDetection;
private calculateEntropy;
private calculateRepetitionScore;
private detectCommonPatterns;
private detectSpritePatterns;
private detectCharacterPatterns;
private detectTexturePatterns;
private calculateVariation;
private hasEdgePattern;
private hasCharacterLikePattern;
private detectBRRPattern;
private detectSPCCodePattern;
private detectSequencePattern;
private detectDictionaryCompression;
private detectDTECompression;
/**
* Detect sample type characteristics for audio classification
*/
private detectSampleType;
/**
* Analyze audio boundaries for quality assessment
*/
private heuristicAudioBoundaries;
/**
* Detect music pattern characteristics
*/
private detectMusicPattern;
}
//# sourceMappingURL=ai-pattern-recognition.d.ts.map