Это выходные, поэтому я расслабляюсь от проведения всех недельных программ, написав проект хобби.
Я написал структуру эмулятора процессора MOS 6502 вчера, регистры, стек, память и все коды операций реализованы. (Ссылка на источник ниже)
Я могу вручную запустить ряд операций в отладчике, который я написал, но я хотел бы загрузить ролик NES и просто указать счетчик программ по его инструкциям, я подумал, что это будет самый быстрый способ найти ошибочные коды операций.
Я написал быстрый загрузчик NES и загрузил банки ROM в память CPU.
Проблема в том, что я не знаю, как кодируются коды операций. Я знаю, что сами коды операций следуют шаблону по одному байту на код операции, который однозначно идентифицирует код операции,
0 - BRK
1 - ORA (D,X)
2 - COP b
и т.д.
Однако я не уверен, где я должен найти аргумент opcode. Является ли это байтом непосредственно следующим? В абсолютной памяти, я полагаю, это может быть не байт, а короткий.
Кто-нибудь знаком с этой моделью памяти CPU?
EDIT: Я понимаю, что это, вероятно, снято в темноте, но я надеялся, что здесь есть скрытые хакеры Apple и Commodore.
EDIT: Спасибо за вашу помощь всем. После того, как я внедрил правильные изменения для согласования каждой операции, CPU может загружать и запускать Mario Brothers. Он не делает ничего, кроме цикла, ожидающего Start, но его хороший знак:)
Я загрузил источник:
http://www.codeplex.com/Cpu6502/SourceControl/DirectoryView.aspx?SourcePath=&changeSetId=1810
Если кто-нибудь когда-либо задавался вопросом, как работает эмулятор, его довольно легко следовать. Не оптимизирован, по крайней мере, но опять же, я эмулирую процессор, который работает на частоте 2 мГц на машине 2.4ghz:)