passport.py/passport/patchers/a6bc95.py
2018-05-23 09:24:20 -04:00

37 lines
1.2 KiB
Python

from passport.patchers import Patch, Patcher
from passport.util import *
class A6BC95Patcher(Patcher):
"""nibble count after $A6 $BC $95 prologue
tested on
- The Secrets of Science Island
"""
def should_run(self, track_num):
return self.g.is_pascal
def run(self, logical_sectors, track_num):
buffy = concat_track(logical_sectors)
if -1 == find.wild(buffy,
b'\xBD\x8C\xC0'
b'\x10\xFB'
b'\xC9\xA6'
b'\xD0\xED'):
return False
if -1 == find.wild(buffy,
b'\xBD\x8C\xC0'
b'\x10\xFB'
b'\xC9\xBC'):
return False
if -1 == find.wild(buffy,
b'\xBD\x8C\xC0'
b'\x10\xFB'
b'\xC9\x95'):
return False
offset = find.wild(buffy,
b'\xAE\xF8\x01'
b'\xA9\x0A'
b'\x8D\xFE\x01')
if offset == -1: return []
return [Patch(track_num, offset // 256, offset % 256, b'\x60', "a6bc95")]