NES TDD

230. Validation tiny rom writes ppu registers

ВАЛИДАЦИОННЫЙ ТЕСТ: крошечный iNES ROM записывает в регистры PPU.

Урок 230 из 356 · tests/chapter_03_ppu_memory_and_graphics_data/test_230_VALIDATION_tiny_rom_writes_ppu_registers.py

Этот файл не является шагом реализации для студента.

Для этого теста нет ничего нового для реализации. Он существует только для проверки того, что построенные до сих пор части работают вместе через свои реальные границы:

iNES bytes
    -> Cartridge.from_ines_bytes(data)
    -> CpuBus(cartridge=cartridge, ppu=ppu)
    -> CPU.reset()
    -> CPU.step()
    -> STA $2000 / STA $2001
    -> CpuBus.write(...)
    -> PPU.write_register(...)

Зачем нужна эта валидация

Предыдущие тесты проверяли регистры PPU и маршрутизацию CpuBus по отдельности. Этот тест доказывает, что реальные инструкции CPU, выбранные из PRG ROM картриджа, могут записывать в регистры PPU через шину.

Крошечная программа, размещённая по адресу CPU $8000:

A9 80       LDA #$80
8D 00 20    STA $2000
A9 1E       LDA #$1E
8D 01 20    STA $2001
EA          NOP

Ожидаемый результат

ppu.ctrl == $80
ppu.mask == $1E

Вне рамок

  • рендеринг
  • тайминг VBlank
  • поведение NMI
  • OAMDMA
  • реальное поведение защёлки PPUSCROLL/PPUADDR

Запустить этот урок

uv run pytest tests/chapter_03_ppu_memory_and_graphics_data/test_230_VALIDATION_tiny_rom_writes_ppu_registers.py -v