Подкорректировал данные в gfx.rks (см. вложение в первом сообщении) и теперь файл без ошибок грузится в эмуляторы по директиве R.
Заодно придумал, как мне получить правильный rks после компиляции - с помощью внешнего скрипта на Python.
Вот текст скрипта на Python, который пересчитает и впишет правильную контрольную сумму в файл:
Код:
import sys
if len(sys.argv) > 1:
filename = sys.argv[1]
with open(filename, 'rb') as f_obj:
rks = f_obj.read()
finish = len(rks) - 3
cs = 0
for i in range(4, finish):
cs += rks[i]
cs += (rks[i] << 8)
cs = (cs & 0xff00) | ((cs + rks[finish]) & 0xff)
rks = bytearray(rks)
print("Old check sum:", hex(rks[-1] * 256 + rks[-2]))
rks[-1] = cs // 256
rks[-2] = cs % 256
print("New check sum:", hex(cs))
with open(filename, 'wb') as f_obj:
f_obj.write(rks)
else:
print("Usage: python rkscs.py filename.rks")