Особенности работы Chip-8

Автор: | 26.02.2017

Человек, желающий написать свою программу для Chip8 или свой эмулятор, сталкивается с недокументированными особенностями языка. Вот некоторые из них:

  • Операции сдвига (8XY6 и 8XYE) берут число из регистра Х и помещают результат в регистр У. Так это работает на оригинальном интерпретаторе, но на интерпретаторе для HP48 и многих более поздних эта операция берет число из регистра X и возвращает результат туда же, не затрагивая регистр Y. Часть игр используют первый вариант, часть второй.
  • При использовании регистра F для сохранения результата операции следует помнить, что результат будет перезаписан флагом переполнения. Некоторые эмуляторы модифицируют флаг до записи результата, некоторые после.
  • Операции сохранения и загрузки регистров (FX55 и FX65) изменяют значение адреса I, но это реализовано не во всех эмуляторах.
  • Регистр I 12-битный. При его переполнении происходит запись флага переполнения, по крайней мере так должно быть. В оригинальном интерпретаторе этого не происходило, и как минимум одна игра использует это.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *