Ты — эксперт по разработке игр для NES (Famicom) на ассемблере MOS 6502.
Твоя задача — написать процедуру выбора игры.

### Окружение и Архитектура:
*   **Маппер:** MMC1 (Плата SNROM).
*   **Память:** 256 КБ PRG-ROM (16 банков по 16 КБ), 8 КБ CHR-RAM, 8 КБ WRAM ($6000–$7FFF).
*   **Инструменты:** Ассемблер ca65 и линкер ld65 под Linux.

### Постановка задачи:
Необходимо реализовать код выбора игры и запись ее параметров в zero page.

### Пошаговый алгоритм загрузчика:
1.  **Получение ID игры:** Считать индекс выбранного пункта меню из RAM по адресу `$001c` (значение от 0 до 255).
2.  **Поиск в таблице повторений:** Использовать этот индекс для чтения из repeat_table` (Таблица повторений), чтобы получить реальный номер игры (от 1 до 9).
3.  **Поиск параметров игры:** По реальному номеру игры получить из `game_table` параметры: стартовый PRG-банк, режим зеркалирования (mirroring) и адрес вектора сброса игры (Reset Vector).
4.  Сохранение параметров игры (5 байт) mmc1 в zero page, не затронь $001c. Свободны адреса $0032 - $003F.
ВАЖНО Другие адреса zero page не трогай!
5. в коне процедуры сделай остановку процессора, чтобы можно было проверить данные в zero page

### Строгие правила синтаксиса ca65 (MOS 6502):
1.  **Локальные метки:** Должны начинаться ТОЛЬКО с символа `@` (например, `@copy_loop:` или `@bit_loop:`).
Начинать локальные метки с точки `.` категарически ЗАПРЕЩЕНО.
2.  **16-битные адреса:** При загрузке старшего/младшего байтов адресов меток всегда используй операторы `<` и `>`
(например: `lda #<repeat_table`, `ldx #>repeat_table`), чтобы избежать ошибок компиляции "range error".
3. учти строгие архитектурные ограничения процессора NES (Ricoh 2A03), который основан на NMOS 6502, а не на более новом CMOS 65C02.
Процессор NES не поддерживает инструкцию DEC A
В системе команд 6502 не существует адресации STA с индексацией по Y для Zero Page


; ==============================================================================
; СТРУКТУРА ДАННЫХ ТАБЛИЦЫ ИГР (Размер одной записи: 5 байт)
; ==============================================================================
; Байт 0: PRG Банк — Номер начального банка PRG (0-14)
; Байт 1: Размер PRG — Количество банков по 16 КБ (1 или 2)
; Байт 2: CHR Банк — Номер банка в PRG-ROM (0-14), где хранится CHR игры
; Байт 3: Зеркалирование — 0 = Горизонтальное (Horizontal), 1 = Вертикальное (Vertical)
; Байт 4: Смещение CHR — Положение в банке для чтения CPU: 0 = $8000, 1 = $A000
; ==============================================================================

game_table:
    ; 01: Super Mario Bros
    .byte 2, 2, 0, 0, 1

    ; 02: Battle City
    .byte 4, 1, 5, 1, 0

    ; 03: Galaxian
    .byte 1, 1, 1, 1, 1

    ; 04: Lunar Ball
    .byte 6, 1, 5, 1, 1

    ; 05: Duck Hunt
    .byte 7, 1, 8, 0, 0

    ; 06: Wild Gunman
    .byte 9, 1, 8, 0, 1

    ; 07: Balloon Fight
    .byte 10, 1, 11, 0, 0

    ; 08: Bomberman
    .byte 12, 1, 11, 0, 1

    ; 09: Ice Climber
    .byte 13, 1, 14, 1, 0


repeat_table:
.byte 01,02,03,04,05,02,01,03,05,03,05,02,03,05,03,01
.byte 02,03,06,05,02,01,03,05,03,05,02,03,05,03,01,02
.byte 03,04,05,02,01,03,05,03,05,02,03,05,03,01,02,03
.byte 06,05,02,01,03,05,03,05,02,03,05,03,01,02,03,04
.byte 05,02,01,03,05,03,05,02,03,05,03,01,07,03,06,05
.byte 02,01,03,05,03,05,02,03,05,03,01,02,03,05,05,02
.byte 01,03,05,03,05,02,03,05,03,01,02,03,05,05,08,01
.byte 03,05,03,05,02,03,05,03,01,02,03,05,05,02,01,03
.byte 05,03,05,02,03,05,03,01,02,03,05,05,02,01,03,05
.byte 03,05,02,03,05,03,01,02,03,05,05,02,01,03,05,03
.byte 05,02,03,05,03,01,02,03,05,05,02,01,03,05,03,05
.byte 02,03,05,03,01,02,03,05,05,02,01,03,05,03,05,02
.byte 03,05,03,01,02,03,05,05,02,01,03,05,03,05,02,03
.byte 05,03,01,02,03,05,05,02,01,03,05,03,05,09,03,05
.byte 03,01,02,03,05,05,02,01,03,05,03,05,02,03,05,03
.byte 01,02,03,05,05,02,01,03,05,03,05,02,03,05,03,01

