Patcher for OpenPatcher/DS Scene ROM Tool-style patches.
This patcher uses the same patch format as OpenPatcher/DS Scene ROM Tool. An example:
5584 - Pokemon White Version [B552501C]
00004600: B0 68 8A 00 79 AA 19 72 13 9A B6 9F E1 CC 8B 10 → 3C 00 9F E5 00 10 90 E5 38 20 9F E5 02 00 51 E1
00004610: 6F 5B 4F A0 96 42 86 94 76 C3 26 C3 A8 DE 0F A0 → 34 10 9F 05 08 10 80 05 48 11 80 05 2C 10 9F 05
00004620: 67 61 FE DF 5A F9 45 41 DA 64 3C B1 23 5C 8A F6 → A8 10 80 05 E8 11 80 05 24 00 9F E5 00 10 90 E5
00004630: A4 4F EC 86 C5 A7 9C B9 41 BB E4 30 F4 FF 67 5D → 20 20 9F E5 02 00 51 E1 01 10 A0 03 0A 10 C0 05
00004640: 26 8E B1 79 8B 29 02 64 C9 D7 AA 3E 9A A4 83 EA → 1E FF 2F E1 84 7F 18 02 4F 03 5F E1 37 B3 AA 36
00004650: 70 FB D7 39 32 C6 6D 3A D2 6F 6F 7B → 6A E0 AA 36 00 0A 18 02 1F FF AA 28
00004EA4: 1E FF 2F E1 → D5 FD FF EA
...
$ ./ds-rom-patch.py rom.nds patch.txt rom_patched.nds
Input ROM: rom.nds (CRC32: B552501C)
Patch for B552501C found on line 1
Found @ 0x00004600: B0688A0079AA1972139AB69FE1CC8B10
Replaced with: 3C009FE5001090E538209FE5020051E1
Found @ 0x00004610: 6F5B4FA09642869476C326C3A8DE0FA0
Replaced with: 34109F0508108005481180052C109F05
Found @ 0x00004620: 6761FEDF5AF94541DA643CB1235C8AF6
Replaced with: A8108005E811800524009FE5001090E5
Found @ 0x00004630: A44FEC86C5A79CB941BBE430F4FF675D
Replaced with: 20209FE5020051E10110A0030A10C005
Found @ 0x00004640: 268EB1798B290264C9D7AA3E9AA483EA
Replaced with: 1EFF2FE1847F18024F035FE137B3AA36
Found @ 0x00004650: 70FBD73932C66D3AD26F6F7B
Replaced with: 6AE0AA36000A18021FFFAA28
Found @ 0x00004EA4: 1EFF2FE1
Replaced with: D5FDFFEA
Output ROM: rom_patched.nds (CRC32: E8E5BDDB)