Changelog¶
All notable changes to MioROM will be documented in this file.
[0.13.1] — 2026-09-10¶
Added¶
- Flexible Buffer Support in
PatchWriter(miorom.patch.patch_writer): PatchWriter.__init__now acceptsUnion[bytes, bytearray], automatically casting immutablebytesto a mutablebytearraywhen needed.- Documentation Design with MkDocs Material:
- Added documentations.
[0.13.0] — 2026-09-10¶
Added¶
- DMA Filesystem Abstraction (
miorom.archive.dma): - Declarative
DmaTableEntryStructviaBinaryStruct. DmaTableArchiveandDmaFileEntryfor parsing, querying, extracting, and decompressing N64 DMA filesystems (Zelda OoT, Pokemon Stadium, Animal Forest).- MIPS COP1 (Floating Point) & Architecture Expansion (
miorom.asm,miorom.script): - Added full MIPS COP1 float instruction decoder to
UniversalDisassembler:lwc1,ldc1,swc1,sdc1,mfc1,mtc1,add.s,sub.s,mul.s,div.s,c.lt.s,bc1t,bc1f. - Added SM83 (Game Boy) and Motorola 68000 (Sega Mega Drive) instruction decoding and SSA IR lifting.
- Added fluent MIPS snippet assembly builder methods (
li,lw,sw,addu,subu,sll,srl,ori,andi,move,j,jal) toMipsSnippet. - Fast3D Microcode Pipeline (
miorom.graphics.fast3d): Fast3DParser: Discovers texture descriptors (F3DTextureDescriptor), dimensions, and formats from N64 microcode streams (G_SETTIMG,G_SETTILE,G_SETTILESIZE,G_LOADBLOCK).Fast3DBuilder: Fluent Python emitter for N64 display lists (set_timg,set_tile,set_tile_size,load_block,end_dl).- N64 Fast3D Textures (
miorom.graphics.n64_texture): - Pixel-accurate encoders and decoders for
RGBA32,RGBA16(5551),IA16,IA8,IA4,I8,I4,CI8, andCI4. - Dialogue Script & Hex Sanitizer (
miorom.formats.script_catalog): DialogueCleaner: Strips low-level pointer artifacts, garbage byte tags, and parses control codes to natural newlines.ScriptCatalog: Bidirectional translation catalog manager in clean human-readable[id]\ntextformat with synchronization back to CSV.- Universal Control Code Tokenizer (
miorom.text.tokenizer): - Bidirectional serialization between binary control codes and markup tags (
ControlCodeSchema,ControlCodeTokenizer,ControlCodeDef). - Far-Memory Layout Allocation (
miorom.patch.slack): FarMemoryHeap: Manages memory allocation in expanded ROM address spaces (e.g. 32 MB -> 64 MB) with alignment and boundary enforcement.- Constant-Memory Streaming Patcher (
miorom.patch.ips): IpsPatcher.apply_stream(): Stream-based chunked patching (<64 KB RAM) for multi-gigabyte disc images (Wii/GameCube/PS1).- Segmented Address Resolution (
miorom.core.pointer): SegmentTableandSegmentedAddressResolverfor two-way translation of segmented virtual addresses (0x07xxxxxx, KSEG0, SNES banks) to physical ROM offsets.- N64 Audio & Sequences (
miorom.audio.n64_seq): M64Sequence(N64 Compact MIDI command parser) andN64Audiobank(instrument sample metadata).- Universal Save File Checksum Engine (
miorom.save.checksum): SaveChecksumEngine.verify_and_fix()supporting SRAM, EEPROM, and FlashRAM save files.- Symbol Table Interop (
miorom.core.symbol_map): - Added export methods:
to_ghidra_script()(Python Script Manager),to_ida_idc()(IDA Pro IDC), andto_sym()(No$GBA / PCSX symbol format). - Automated Function Boundary Detection (
miorom.asm.prologue_scanner): FunctionPrologueScanner: Bitmask preamble scanning for MIPS (addiu $sp), ARM (push {lr}), and PowerPC (stwu r1).- Proportional Font Kerning & Textbox Collision (
miorom.text.vwf): VWFMetricsInspector: Kerning pair tracking and automated dialogue overflow detection against textbox boundaries.- MIPS Compound Relocation Matching (
miorom.link.relocator): CompoundRelocationLinker: Proper sign-extension carry bit compensation for pairedR_MIPS_HI16andR_MIPS_LO16relocations.- Native Color Quantization (
miorom.graphics.palette): FloydSteinbergDitherer: Pure-Python error-diffusion dithering for palette reduction without external dependencies.- Bytecode Interpreter Profiling (
miorom.script.vm_profiler): VMBytecodeSynthesizer.detect_dispatcher_tables(): Automated jump table discovery for custom virtual machine opcode interpreters.- Semantic Patch Safety Validation (
miorom.diff.patch_auditor): PatchAuditor: Validates IPS/BPS patch hunks against critical ROM memory regions (headers, DMA descriptors, vectors) to prevent asset collision.- Declarative Schema Constraints (
miorom.core.schema): SchemaField(validate=...): Custom validation hooks on struct fields with structuredParseErrorexceptions.- Emulator Database Compatibility (
miorom.platforms.n64): - Added
preserve_database_crcparameter toN64Rom.recalculate_checksum()andfix_n64_checksum()to retain No-Intro database matching for emulator boxart and profiles.
Changed¶
- Standardized
CsvHandler.export_csv()andexport_clean_csv()to automatically ensure parent directories exist before writing. - Bumped version to
0.13.0.
[0.12.0] — Initial Release¶
- Core ROM hacking toolkit: scanning, patching, compression, disassembly, platform handlers.
Previous
Security & Path Safety