Платформа: NES (Famicom) Dendy
Маппер: MMC1 (Плата SNROM).
Память: 256 КБ PRG-ROM (16 банков по 16 КБ), 8 КБ CHR-RAM.
Инструменты: Ассемблер ca65 и линкер ld65 под Linux.
Код будет выполнятся в RAM по адресу $0520, не допусти кривых прыжков.

Ограничения ca65 Локальные метки начинать строго с @ Использование точки запрещено.
Найди и учти Ограничения NMOS 6502.

Учти строгие правила синтаксиса ca65 (MOS 6502).
допиши код:

Алгоритм:
прочитай размер prg
установить соответствющие регистры
прочитай вектор сброс игры
перейди на него

PPUCTRL   = $2000
PPUMASK   = $2001
BANK_SIZE =  $0033, Байт 1: Размер PRG  (1 или 2) 16 или 32 кб, есть банк с игрой super mario bros
BANK_REG_PRG  = $0032
; 37-38 Байт 5-6: Вектор сброса (Адрес старта игры, 2 байта, Little-Endian)
MMC1_PRG  = $E000


; ==============================================================================
; ШАГ 1: ВЫКЛЮЧАЕМ PPU И NMI
; ==============================================================================
    lda #$00
    sta PPUCTRL
    sta PPUMASK

; ==============================================================================
; ШАГ 2: ПЕРЕКЛЮЧЕНИЕ БАНКА MMC1 (Развернутый безопасный цикл)
; ==============================================================================
    lda BANK_REG_PRG    ; Загружаем номер банка

    sta MMC1_PRG    ; Запись 1-го бита (Bit 0)
    lsr a           ; Сдвиг, теперь Bit 1 стал на место Bit 0

    sta MMC1_PRG    ; Запись 2-го бита (Bit 1)
    lsr a           ; Сдвиг, теперь Bit 2 стал на место Bit 0

    sta MMC1_PRG    ; Запись 3-го бита (Bit 2)
    lsr a           ; Сдвиг, теперь Bit 3 стал на место Bit 0

    sta MMC1_PRG    ; Запись 4-го бита (Bit 3)
    lsr a           ; Сдвиг, теперь Bit 4 стал на место Bit 0

    sta MMC1_PRG    ; Запись 5-го бита (Bit 4) -> В этот момент маппер переключит банк

