244. Проверка: крошечный ROM пишет в память PPU
ПРОВЕРОЧНЫЙ ТЕСТ: крошечный iNES ROM пишет в память PPU через PPUADDR/PPUDATA.
Урок 244 из 356 · tests/chapter_03_ppu_memory_and_graphics_data/test_244_VALIDATION_tiny_rom_writes_ppu_memory.py
Этот файл не является шагом реализации для студента.
В этом тесте нечего реализовывать нового. Он существует только для проверки того, что построенные до этого части работают вместе через свои реальные границы:
iNES bytes
-> Cartridge.from_ines_bytes(data)
-> CpuBus(cartridge=cartridge, ppu=ppu)
-> CPU.reset()
-> CPU.step()
-> STA $2006 / STA $2007
-> CpuBus.write(...)
-> PPU.write_register(...)
-> PPUADDR sets vram_addr
-> PPUDATA writes through PpuBus
-> VRAM stores the byteПочему нужна эта проверка
Предыдущие тесты проверяли поведение PPUADDR, PPUDATA, приращение PPUCTRL, PpuBus и маршрутизацию CpuBus по отдельности. Этот тест доказывает, что реальная программа CPU, полученная из крошечного iNES ROM на картридже, может писать в память со стороны PPU.
Крошечная программа, размещённая по адресу CPU $8000:
A9 20 LDA #$20
8D 06 20 STA $2006 ; PPUADDR high byte
A9 00 LDA #$00
8D 06 20 STA $2006 ; PPUADDR low byte
A9 AA LDA #$AA
8D 07 20 STA $2007 ; PPUDATA write to PPU memory at $2000
EA NOPОжидаемый результат
ppu.ppu_bus.read($2000) == $AA
ppu.vram_addr == $2001Вне рамок
- рендеринг
- точность зеркалирования таблиц имён
- точность палитровой RAM
- запись в CHR RAM
- чтение PPUDATA/буферизация чтения
- тайминг VBlank/NMI
Запустить этот урок
uv run pytest tests/chapter_03_ppu_memory_and_graphics_data/test_244_VALIDATION_tiny_rom_writes_ppu_memory.py -v