Заранее прошу прощения за открытость и общую слабость этого вопроса, потому что, честно говоря, мое знание темы очень неоднозначно, и мне трудно даже описать мою проблему. Я действительно не хотел оставлять сообщения, но я полностью застрял.
Я запустил эмулятор NES. Это интерпретируется (поэтому без динамического перекомпоновки).
АТМ может загружать и отображать roms (mapper 0 roms) и выполнять код инициализации вплоть до того места, где мне приходится иметь дело с прерываниями и PPU. Вот где я застрял.
Вот пример выходных данных из моего emu atm. Выполнение начинается в 8000, и я нахожусь на бесконечном цикле в 800a, где я понятия не имею, как продвигаться оттуда.
8002: LDA #$10 ; read immediate value to set PPU control registers
8004: STA $2000 ; store value
8007: LDX #$FF ; load immediate value into X register
8009: TXS ; store X register into stack
800a: LDA $2002 ; read PPU flags into accumulator (set N flag based on bit 7)
800d: BPL ; test N flag, branch to 800a if not positive, (N is set)
800a: LDA $2002
800d: BPL
800a: LDA $2002
800d: BPL
800a: LDA $2002
800d: BPL
etc, etc etc (inf loop)
Итак, мой вопрос, может ли кто-нибудь объяснить, пожалуйста, основы 1 итерации по рендеру PPU для меня, включая такие вещи, как счетчик циклов, прерывания и т. Д. (Т. Е. Нарисуйте один весь экран 240 строк развертки и перейдите на рядом).