├── 240pee ├── 240pee-bnrom.nes └── 240pee.nes ├── MMC1_A12 ├── MMC1.asm ├── alphabet.chr ├── joypad.asm ├── joypad.lib ├── linkfile.txt ├── maping.asm ├── mmc1.lib ├── mmc1_a12.asm ├── mmc1_a12.nes └── snrom.bin ├── PaddleTest3 ├── Info.txt ├── KaboomASM.bat ├── PaddleTest.asm ├── PaddleTest.nes ├── PaddleTestGraphics.chr ├── PaddleTestScreen.bin └── Palette.bin ├── apu_mixer ├── dmc.nes ├── noise.nes ├── readme.txt ├── source │ ├── common │ │ ├── ascii.chr │ │ ├── build_rom.s │ │ ├── console.s │ │ ├── crc.s │ │ ├── delay.s │ │ ├── devcart.bin │ │ ├── macros.inc │ │ ├── neshw.inc │ │ ├── ppu.s │ │ ├── print.s │ │ ├── shell.inc │ │ ├── shell.s │ │ ├── shell_misc.s │ │ ├── testing.s │ │ ├── text_out.s │ │ └── vol_shell.inc │ ├── dmc.s │ ├── nes.cfg │ ├── noise.s │ ├── readme.txt │ ├── square.s │ └── triangle.s ├── square.nes └── triangle.nes ├── apu_mixer_recordings ├── dmc.mp3 ├── noise.mp3 ├── square.mp3 └── triangle.mp3 ├── apu_reset ├── 4015_cleared.nes ├── 4017_timing.nes ├── 4017_written.nes ├── irq_flag_cleared.nes ├── len_ctrs_enabled.nes ├── readme.txt ├── source │ ├── 4015_cleared.s │ ├── 4017_timing.s │ ├── 4017_written.s │ ├── common │ │ ├── ascii.chr │ │ ├── build_rom.s │ │ ├── console.s │ │ ├── crc.s │ │ ├── delay.s │ │ ├── devcart.bin │ │ ├── macros.inc │ │ ├── neshw.inc │ │ ├── ppu.s │ │ ├── print.s │ │ ├── run_at_reset.s │ │ ├── shell.inc │ │ ├── shell.s │ │ ├── shell_misc.s │ │ ├── testing.s │ │ └── text_out.s │ ├── irq_flag_cleared.s │ ├── len_ctrs_enabled.s │ ├── nes.cfg │ ├── readme.txt │ └── works_immediately.s └── works_immediately.nes ├── apu_test ├── apu_test.nes ├── readme.txt ├── rom_singles │ ├── 1-len_ctr.nes │ ├── 2-len_table.nes │ ├── 3-irq_flag.nes │ ├── 4-jitter.nes │ ├── 5-len_timing.nes │ ├── 6-irq_flag_timing.nes │ ├── 7-dmc_basics.nes │ └── 8-dmc_rates.nes └── source │ ├── 1-len_ctr.s │ ├── 2-len_table.s │ ├── 3-irq_flag.s │ ├── 4-jitter.s │ ├── 5-len_timing.s │ ├── 6-irq_flag_timing.s │ ├── 7-dmc_basics.s │ ├── 8-dmc_rates.s │ ├── common │ ├── apu_shell.inc │ ├── ascii.chr │ ├── build_rom.s │ ├── console.s │ ├── crc.s │ ├── delay.s │ ├── devcart.bin │ ├── macros.inc │ ├── neshw.inc │ ├── ppu.s │ ├── print.s │ ├── shell.inc │ ├── shell.s │ ├── shell_misc.s │ ├── sync_apu.s │ ├── sync_dmc.s │ ├── test_main_chans.s │ ├── testing.s │ └── text_out.s │ ├── nes.cfg │ └── readme.txt ├── blargg_apu_2005.07.30 ├── 01.len_ctr.nes ├── 02.len_table.nes ├── 03.irq_flag.nes ├── 04.clock_jitter.nes ├── 05.len_timing_mode0.nes ├── 06.len_timing_mode1.nes ├── 07.irq_flag_timing.nes ├── 08.irq_timing.nes ├── 09.reset_timing.nes ├── 10.len_halt_timing.nes ├── 11.len_reload_timing.nes ├── readme.txt ├── source │ ├── 01.len_ctr.asm │ ├── 02.len_table.asm │ ├── 03.irq_flag.asm │ ├── 04.clock_jitter.asm │ ├── 05.len_timing_mode0.asm │ ├── 06.len_timing_mode1.asm │ ├── 07.irq_flag_timing.asm │ ├── 08.irq_timing.asm │ ├── 09.reset_timing.asm │ ├── 10.len_halt_timing.asm │ ├── 11.len_reload_timing.asm │ ├── apu_util.asm │ └── prefix_apu.asm └── tests.txt ├── blargg_litewall ├── blargg_litewall-10c.nes ├── blargg_litewall-9.nes ├── litewall2.nes ├── litewall3.nes └── litewall5.nes ├── blargg_nes_cpu_test5 ├── cpu.nes ├── official.nes ├── readme.txt └── source │ ├── 01-implied.a │ ├── 02-immediate.a │ ├── 03-zero_page.a │ ├── 04-zp_xy.a │ ├── 05-absolute.a │ ├── 06-abs_xy.a │ ├── 07-ind_x.a │ ├── 08-ind_y.a │ ├── 09-branches.a │ ├── 10-stack.a │ ├── 11-special.a │ ├── common │ ├── ascii.chr │ ├── common.a │ ├── console.a │ ├── crc.a │ ├── crc_fast.a │ ├── delay.a │ ├── instr_test.a │ ├── instr_test_end.a │ ├── macros.a │ ├── nes.a │ ├── ppu.a │ ├── print.a │ ├── serial.a │ ├── shell.a │ └── testing.a │ ├── nes.cfg │ └── readme.txt ├── blargg_ppu_tests_2005.09.15b ├── palette_ram.nes ├── power_up_palette.nes ├── readme.txt ├── source │ ├── palette_ram.asm │ ├── power_up_palette.asm │ ├── prefix_ppu.asm │ ├── sprite_ram.asm │ ├── vbl_clear_time.asm │ └── vram_access.asm ├── sprite_ram.nes ├── vbl_clear_time.nes └── vram_access.nes ├── branch_timing_tests ├── 1.Branch_Basics.nes ├── 2.Backward_Branch.nes ├── 3.Forward_Branch.nes ├── readme.txt └── source │ ├── 1.Branch_Basics.a │ ├── 2.Backward_Branch.a │ ├── 3.Forward_Branch.a │ ├── console.a │ ├── debug.a │ ├── delays.a │ ├── ppu_util.a │ ├── prefix.a │ ├── runtime_rom.a │ ├── runtime_rom_common.a │ └── validation.a ├── cpu_dummy_reads ├── cpu_dummy_reads.nes └── source │ ├── common │ ├── ascii.chr │ ├── console.s │ ├── crc.s │ ├── delay.s │ ├── macros.inc │ ├── nes.inc │ ├── print.s │ ├── serial.s │ ├── shell.inc │ └── testing.s │ ├── cpu_dummy_reads.s │ ├── nes.cfg │ └── readme.txt ├── cpu_dummy_writes ├── cpu_dummy_writes_oam.nes ├── cpu_dummy_writes_ppumem.nes ├── readme.txt └── source │ ├── Makefile │ ├── common │ ├── ascii_1.chr │ ├── ascii_2.chr │ ├── ascii_3.chr │ ├── build_rom.s │ ├── colors.inc │ ├── console.s │ ├── crc.s │ ├── crc_fast.s │ ├── delay.s │ ├── devcart.bin │ ├── macros.inc │ ├── neshw.inc │ ├── ppu.s │ ├── print.s │ ├── shell.inc │ ├── shell.s │ ├── testing.s │ └── text_out.s │ ├── cpu_dummy_writes_oam.s │ ├── cpu_dummy_writes_ppumem.s │ └── readme.txt ├── cpu_exec_space ├── readme.txt ├── source │ ├── Makefile │ ├── common │ │ ├── ascii_1.chr │ │ ├── ascii_2.chr │ │ ├── ascii_3.chr │ │ ├── build_rom.s │ │ ├── colors.inc │ │ ├── console.s │ │ ├── crc.s │ │ ├── delay.s │ │ ├── macros.inc │ │ ├── neshw.inc │ │ ├── ppu.s │ │ ├── print.s │ │ ├── shell.inc │ │ ├── shell.s │ │ ├── testing.s │ │ └── text_out.s │ ├── readme.txt │ ├── test_cpu_exec_space_apu.s │ └── test_cpu_exec_space_ppuio.s ├── test_cpu_exec_space_apu.nes └── test_cpu_exec_space_ppuio.nes ├── cpu_interrupts_v2 ├── cpu_interrupts.nes ├── readme.txt ├── rom_singles │ ├── 1-cli_latency.nes │ ├── 2-nmi_and_brk.nes │ ├── 3-nmi_and_irq.nes │ ├── 4-irq_and_dma.nes │ └── 5-branch_delays_irq.nes └── source │ ├── 1-cli_latency.s │ ├── 2-nmi_and_brk.s │ ├── 3-nmi_and_irq.s │ ├── 4-irq_and_dma.s │ ├── 4-nmi_and_dma.s │ ├── 5-branch_delays_irq.s │ ├── common │ ├── ascii.chr │ ├── build_rom.s │ ├── console.s │ ├── crc.s │ ├── delay.s │ ├── devcart.bin │ ├── macros.inc │ ├── neshw.inc │ ├── ppu.s │ ├── print.s │ ├── shell.inc │ ├── shell.s │ ├── shell_misc.s │ ├── sync_apu.s │ ├── sync_vbl.s │ ├── testing.s │ └── text_out.s │ ├── nes.cfg │ └── readme.txt ├── cpu_reset ├── ram_after_reset.nes ├── readme.txt ├── registers.nes └── source │ ├── common │ ├── ascii.chr │ ├── build_rom.s │ ├── console.s │ ├── crc.s │ ├── delay.s │ ├── devcart.bin │ ├── macros.inc │ ├── neshw.inc │ ├── ppu.s │ ├── print.s │ ├── run_at_reset.s │ ├── shell.inc │ ├── shell.s │ ├── testing.s │ └── text_out.s │ ├── nes.cfg │ ├── ram_after_reset.s │ ├── readme.txt │ └── registers.s ├── cpu_timing_test6 ├── cpu_timing_test.nes ├── readme.txt └── source │ ├── console.a │ ├── cpu_timing_test.asm │ ├── debug.a │ ├── delays.a │ ├── ppu_util.a │ ├── runtime_rom.a │ └── runtime_rom_common.a ├── dmc_dma_during_read4 ├── dma_2007_read.nes ├── dma_2007_write.nes ├── dma_4016_read.nes ├── double_2007_read.nes ├── read_write_2007.nes └── source │ ├── common │ ├── ascii.chr │ ├── common.inc │ ├── console.s │ ├── crc.s │ ├── delay.s │ ├── macros.inc │ ├── nes.inc │ ├── print.s │ ├── serial.s │ ├── shell.inc │ ├── sync_dmc.s │ └── testing.s │ ├── dma_2007_read.s │ ├── dma_2007_write.s │ ├── dma_4016_read.s │ ├── double_2007_read.s │ ├── nes.cfg │ ├── read_write_2007.s │ └── readme.txt ├── dmc_tests ├── buffer_retained.nes ├── latency.nes ├── status.nes └── status_irq.nes ├── dpcmletterbox ├── CHANGES.txt ├── NROM.ini ├── README.txt ├── dpcmletterbox.nes ├── makefile ├── obj │ └── nes │ │ └── index.txt ├── src │ ├── nes.h │ └── reset.s ├── tilesets │ └── ac16.png └── tools │ └── pilbmp2nes.py ├── exram ├── mmc5exram.asm ├── mmc5exram.chr ├── mmc5exram.imk └── mmc5exram.nes ├── fdsirqtests ├── fdsirqtests.fds └── fdsirqtestsV7_patched.fds ├── full_palette ├── flowing_palette.nes ├── full_palette.nes ├── full_palette.s ├── full_palette_smooth.nes └── full_palette_smooth.s ├── instr_misc ├── instr_misc.nes ├── readme.txt ├── rom_singles │ ├── 01-abs_x_wrap.nes │ ├── 02-branch_wrap.nes │ ├── 03-dummy_reads.nes │ └── 04-dummy_reads_apu.nes └── source │ ├── 01-abs_x_wrap.s │ ├── 02-branch_wrap.s │ ├── 03-dummy_reads.s │ ├── 04-dummy_reads_apu.s │ ├── common │ ├── ascii.chr │ ├── build_rom.s │ ├── console.s │ ├── crc.s │ ├── delay.s │ ├── devcart.bin │ ├── macros.inc │ ├── neshw.inc │ ├── ppu.s │ ├── print.s │ ├── shell.inc │ ├── shell.s │ ├── testing.s │ └── text_out.s │ ├── nes.cfg │ └── readme.txt ├── instr_test-v3 ├── all_instrs.nes ├── official_only.nes ├── readme.txt ├── rom_singles │ ├── 01-implied.nes │ ├── 02-immediate.nes │ ├── 03-zero_page.nes │ ├── 04-zp_xy.nes │ ├── 05-absolute.nes │ ├── 06-abs_xy.nes │ ├── 07-ind_x.nes │ ├── 08-ind_y.nes │ ├── 09-branches.nes │ ├── 10-stack.nes │ ├── 11-jmp_jsr.nes │ ├── 12-rts.nes │ ├── 13-rti.nes │ ├── 14-brk.nes │ └── 15-special.nes └── source │ ├── 01-implied.s │ ├── 02-immediate.s │ ├── 03-zero_page.s │ ├── 04-zp_xy.s │ ├── 05-absolute.s │ ├── 06-abs_xy.s │ ├── 07-ind_x.s │ ├── 08-ind_y.s │ ├── 09-branches.s │ ├── 10-stack.s │ ├── 11-jmp_jsr.s │ ├── 12-rts.s │ ├── 13-rti.s │ ├── 14-brk.s │ ├── 15-special.s │ ├── common │ ├── ascii.chr │ ├── bootloader.bin │ ├── build_rom.s │ ├── console.s │ ├── crc.s │ ├── crc_fast.s │ ├── delay.s │ ├── instr_test.inc │ ├── instr_test_end.s │ ├── macros.inc │ ├── neshw.inc │ ├── ppu.s │ ├── print.s │ ├── shell.inc │ ├── shell.s │ ├── shell_misc.s │ ├── testing.s │ └── text_out.s │ ├── nes.cfg │ └── readme.txt ├── instr_test-v5 ├── all_instrs.nes ├── official_only.nes ├── readme.txt ├── rom_singles │ ├── 01-basics.nes │ ├── 02-implied.nes │ ├── 03-immediate.nes │ ├── 04-zero_page.nes │ ├── 05-zp_xy.nes │ ├── 06-absolute.nes │ ├── 07-abs_xy.nes │ ├── 08-ind_x.nes │ ├── 09-ind_y.nes │ ├── 10-branches.nes │ ├── 11-stack.nes │ ├── 12-jmp_jsr.nes │ ├── 13-rts.nes │ ├── 14-rti.nes │ ├── 15-brk.nes │ └── 16-special.nes └── source │ ├── 01-basics.s │ ├── 02-implied.s │ ├── 03-immediate.s │ ├── 04-zero_page.s │ ├── 05-zp_xy.s │ ├── 06-absolute.s │ ├── 07-abs_xy.s │ ├── 08-ind_x.s │ ├── 09-ind_y.s │ ├── 10-branches.s │ ├── 11-stack.s │ ├── 12-jmp_jsr.s │ ├── 13-rts.s │ ├── 14-rti.s │ ├── 15-brk.s │ ├── 16-special.s │ ├── common │ ├── ascii.chr │ ├── bootloader.bin │ ├── build_rom.s │ ├── console.s │ ├── crc.s │ ├── crc_fast.s │ ├── delay.s │ ├── instr_test.inc │ ├── instr_test_end.s │ ├── macros.inc │ ├── neshw.inc │ ├── ppu.s │ ├── print.s │ ├── shell.inc │ ├── shell.s │ ├── shell_misc.s │ ├── testing.s │ └── text_out.s │ ├── nes.cfg │ └── readme.txt ├── instr_timing ├── instr_timing.nes ├── readme.txt ├── rom_singles │ ├── 1-instr_timing.nes │ └── 2-branch_timing.nes └── source │ ├── 1-instr_timing.s │ ├── 2-branch_timing.s │ ├── common │ ├── ascii.chr │ ├── build_rom.s │ ├── console.s │ ├── crc.s │ ├── delay.s │ ├── devcart.bin │ ├── macros.inc │ ├── neshw.inc │ ├── ppu.s │ ├── print.s │ ├── shell.inc │ ├── shell.s │ ├── testing.s │ └── text_out.s │ ├── nes.cfg │ └── readme.txt ├── m22chrbankingtest ├── 0-127.c ├── 0-127.cfg ├── 0-127.chr ├── 0-127.nes ├── 0-127.png ├── 0-127.sh └── 0-127h.asm ├── mmc3_irq_tests ├── 1.Clocking.nes ├── 2.Details.nes ├── 3.A12_clocking.nes ├── 4.Scanline_timing.nes ├── 5.MMC3_rev_A.nes ├── 6.MMC3_rev_B.nes ├── readme.txt └── source │ ├── 1.Clocking.asm │ ├── 2.Details.asm │ ├── 3.A12_clocking.asm │ ├── 4.Scanline_timing.asm │ ├── 5.MMC3_rev_A.asm │ ├── 6.MMC3_rev_B.asm │ ├── console.asm │ ├── debug.asm │ ├── delays.asm │ ├── ppu_sync.asm │ ├── ppu_util.asm │ ├── prefix_cpu.asm │ ├── prefix_mmc3.asm │ ├── prefix_mmc3_validation.asm │ ├── prefix_swap.asm │ ├── runtime_swapcart.asm │ └── validation.asm ├── mmc3_test ├── 1-clocking.nes ├── 2-details.nes ├── 3-A12_clocking.nes ├── 4-scanline_timing.nes ├── 5-MMC3.nes ├── 6-MMC6.nes ├── readme.txt └── source │ ├── 1-clocking.s │ ├── 2-details.s │ ├── 3-A12_clocking.s │ ├── 4-scanline_timing.s │ ├── 5-MMC3.s │ ├── 6-MMC6.s │ ├── common │ ├── ascii.chr │ ├── build_rom.s │ ├── console.s │ ├── crc.s │ ├── delay.s │ ├── devcart.bin │ ├── macros.inc │ ├── neshw.inc │ ├── ppu.s │ ├── print.s │ ├── shell.inc │ ├── shell.s │ ├── sync_vbl.s │ ├── test_mmc3.inc │ ├── testing.s │ └── text_out.s │ ├── nes.cfg │ └── readme.txt ├── mmc3_test_2 ├── readme.txt ├── rom_singles │ ├── 1-clocking.nes │ ├── 2-details.nes │ ├── 3-A12_clocking.nes │ ├── 4-scanline_timing.nes │ ├── 5-MMC3.nes │ └── 6-MMC3_alt.nes └── source │ ├── 1-clocking.s │ ├── 2-details.s │ ├── 3-A12_clocking.s │ ├── 4-scanline_timing.s │ ├── 5-MMC3.s │ ├── 6-MMC3_alt.s │ ├── common │ ├── ascii.chr │ ├── build_rom.s │ ├── console.s │ ├── crc.s │ ├── delay.s │ ├── devcart.bin │ ├── macros.inc │ ├── neshw.inc │ ├── ppu.s │ ├── print.s │ ├── shell.inc │ ├── shell.s │ ├── shell_misc.s │ ├── sync_vbl.s │ ├── test_mmc3.inc │ ├── testing.s │ └── text_out.s │ ├── nes.cfg │ └── readme.txt ├── mmc5test └── mmc5test.nes ├── mmc5test_v2 ├── mmc5test.asm ├── mmc5test.chr ├── mmc5test.nes └── mmc5test_v2.prg ├── nes15-1.0.0 ├── LICENSE ├── Makefile ├── README ├── bin2pkb │ ├── Makefile │ └── bin2pkb.c ├── clib │ ├── binio.c │ ├── binio.h │ ├── img8.c │ ├── img8.h │ ├── img8_pcx.c │ ├── neschr.c │ ├── neschr.h │ ├── packbits.c │ └── packbits.h ├── fifteen │ ├── Makefile │ ├── fifteen.inc │ ├── fifteen.s │ ├── test.cfg │ └── test.s ├── game.cfg ├── gfx │ ├── bgd.pal │ ├── cursor.pcx │ ├── edges.pcx │ ├── font.pcx │ ├── nums.pcx │ ├── play.nam │ ├── spr.pal │ ├── tile.pcx │ └── title.nam ├── nes-lib │ ├── apu.inc │ ├── bcd.inc │ ├── bcd16.s │ ├── bcd16_from_bin.s │ ├── bcd16_to_vrub.s │ ├── joy.inc │ ├── joy_read1.s │ ├── joy_repeat1.s │ ├── joy_update1.s │ ├── lfsr32.inc │ ├── lfsr32.s │ ├── muse.inc │ ├── muse.s │ ├── oam.inc │ ├── oam_clear.s │ ├── pkb.inc │ ├── pkb.s │ ├── pkb_to_vram.s │ ├── ppu.inc │ ├── vrub.inc │ ├── vrub.s │ └── vrub_from_mem.s ├── nes15-NTSC.nes ├── nes15-PAL.nes ├── pcx2chr │ ├── Makefile │ └── pcx2chr.c ├── snd │ ├── mus0.s │ ├── mus1.s │ ├── sfx0.s │ ├── sfx1.s │ ├── snd.inc │ └── snd.s └── src │ ├── game.inc │ ├── game.s │ ├── gfx.inc │ ├── gfx.s │ ├── header.s │ ├── nmi.inc │ ├── nmi.s │ ├── play.inc │ ├── play.s │ ├── title.inc │ └── title.s ├── nes_instr_test ├── nsf_singles │ ├── 01-implied.nsf │ ├── 02-immediate.nsf │ ├── 03-zero_page.nsf │ ├── 04-zp_xy.nsf │ ├── 05-absolute.nsf │ ├── 06-abs_xy.nsf │ ├── 07-ind_x.nsf │ ├── 08-ind_y.nsf │ ├── 09-branches.nsf │ ├── 10-stack.nsf │ └── 11-special.nsf ├── readme.txt ├── rom_singles │ ├── 01-implied.nes │ ├── 02-immediate.nes │ ├── 03-zero_page.nes │ ├── 04-zp_xy.nes │ ├── 05-absolute.nes │ ├── 06-abs_xy.nes │ ├── 07-ind_x.nes │ ├── 08-ind_y.nes │ ├── 09-branches.nes │ ├── 10-stack.nes │ └── 11-special.nes └── source │ ├── 01-implied.s │ ├── 02-immediate.s │ ├── 03-zero_page.s │ ├── 04-zp_xy.s │ ├── 05-absolute.s │ ├── 06-abs_xy.s │ ├── 07-ind_x.s │ ├── 08-ind_y.s │ ├── 09-branches.s │ ├── 10-stack.s │ ├── 11-special.s │ ├── common │ ├── ascii.chr │ ├── build_nsf.s │ ├── build_rom.s │ ├── console.s │ ├── crc.s │ ├── crc_fast.s │ ├── delay.s │ ├── instr_test.inc │ ├── instr_test_end.s │ ├── macros.inc │ ├── neshw.inc │ ├── ppu.s │ ├── print.s │ ├── shell.inc │ ├── shell.s │ ├── testing.s │ └── text_out.s │ ├── nes.cfg │ ├── nsf.cfg │ └── readme.txt ├── nmi_sync ├── demo_ntsc.nes ├── demo_ntsc.s ├── demo_pal.nes ├── demo_pal.s ├── nmi_sync.s ├── readme.txt └── unrom.cfg ├── nrom368 ├── _c.bat ├── compile_all.bat ├── crt0.s ├── fail368.nes ├── famitone.s ├── music.s ├── nes.cfg ├── neslib.h ├── neslib.s ├── nrom368.chr ├── nrom368.prg ├── runtime.lib ├── sounds.s ├── test1.c ├── test1.nes └── tileset.chr ├── ny2011 └── ny2011.nes ├── oam_read ├── oam_read.nes ├── readme.txt └── source │ ├── common │ ├── ascii.chr │ ├── build_rom.s │ ├── console.s │ ├── crc.s │ ├── delay.s │ ├── devcart.bin │ ├── macros.inc │ ├── neshw.inc │ ├── ppu.s │ ├── print.s │ ├── shell.inc │ ├── shell.s │ ├── testing.s │ └── text_out.s │ ├── nes.cfg │ ├── oam_read.s │ └── readme.txt ├── oam_stress ├── oam_stress.nes ├── readme.txt └── source │ ├── common │ ├── ascii.chr │ ├── build_multi.s │ ├── build_nsf.s │ ├── build_rom.s │ ├── console.s │ ├── crc.s │ ├── crc_fast.s │ ├── delay.s │ ├── devcart.bin │ ├── macros.inc │ ├── neshw.inc │ ├── ppu.s │ ├── print.s │ ├── shell.inc │ ├── shell.s │ ├── testing.s │ └── text_out.s │ ├── nes.cfg │ ├── oam_stress.s │ └── readme.txt ├── other ├── 2003-test.nes ├── 8bitpeoples_-_deadline_console_invitro.nes ├── BLOCKS.NES ├── BladeBuster.nes ├── CMC80s.NES ├── DROPOFF7.NES ├── Duelito - Leame.txt ├── Duelito.nes ├── FLAME.NES ├── GENIE.NES ├── GREYS.NES ├── LINUS.ASM ├── LINUS.NSF ├── LINUSMUS.NES ├── MOTION.NES ├── NESMPROP.TXT ├── PCM.demo.wgraphics.nes ├── RasterChromaLuma.NES ├── RasterDemo.NES ├── RasterTest1.NES ├── RasterTest2.NES ├── RasterTest3.NES ├── RasterTest3a.NES ├── RasterTest3b.NES ├── RasterTest3c.NES ├── RasterTest3d.NES ├── RasterTest3e.NES ├── ReadmeCMC80s.TXT ├── ReadmeSayoonara!.txt ├── Retrocoders - Years behind.NES ├── S0.NES ├── SPRITE.NES ├── Sayoonara!.NES ├── SimpleParallaxDemo.nes ├── Streemerz_bundle.nes ├── TANESPOT.NES ├── TEST.NES ├── The Duel - Readme.txt ├── apocalypse.nes ├── apocalypse.src ├── blargg_litewall-2.nes ├── blargg_litewall-9.nes ├── demo jitter.nes ├── demo.nes ├── dnsf2_enginetest3.nsf ├── fceuxd.nes ├── firefly.asm ├── firefly.nes ├── high-hopes.nes ├── logo (E).nes ├── manhole.nes ├── max-300.nes ├── midscanline.nes ├── minipack.nes ├── minipack.txt ├── nescafe.nes ├── nestest.log ├── nestest.nes ├── nestest.txt ├── nestopia.nes ├── new-game.nes ├── nintendulator.nes ├── oam3.nes ├── oc.nes ├── physics.0.1.nes ├── pulsar.nes ├── quantum_disco_brothers_by_wAMMA.nes ├── rastesam4.nes ├── read2004.nes ├── readme.txt ├── smbdis.asm ├── snow.nes ├── snow.txt ├── test001.nes ├── test28.nes ├── window2_ntsc.nes ├── window2_pal.nes ├── window_old_ntsc.nes └── window_old_pal.nes ├── pal_apu_tests ├── 01.len_ctr.nes ├── 02.len_table.nes ├── 03.irq_flag.nes ├── 04.clock_jitter.nes ├── 05.len_timing_mode0.nes ├── 06.len_timing_mode1.nes ├── 07.irq_flag_timing.nes ├── 08.irq_timing.nes ├── 10.len_halt_timing.nes ├── 11.len_reload_timing.nes ├── readme.txt └── source │ ├── 01.len_ctr.a │ ├── 02.len_table.a │ ├── 03.irq_flag.a │ ├── 04.clock_jitter.a │ ├── 05.len_timing_mode0.a │ ├── 06.len_timing_mode1.a │ ├── 07.irq_flag_timing.a │ ├── 08.irq_timing.a │ ├── 10.len_halt_timing.a │ ├── 11.len_reload_timing.a │ ├── console.a │ ├── debug.a │ ├── delays.a │ ├── prefix_apu.a │ ├── runtime_rom.a │ ├── runtime_rom_common.a │ ├── sync_apu.a │ └── validation.a ├── ppu_open_bus ├── ppu_open_bus.nes ├── readme.txt └── source │ ├── common │ ├── ascii.chr │ ├── build_rom.s │ ├── console.s │ ├── crc.s │ ├── delay.s │ ├── devcart.bin │ ├── macros.inc │ ├── neshw.inc │ ├── ppu.s │ ├── print.s │ ├── shell.inc │ ├── shell.s │ ├── testing.s │ └── text_out.s │ ├── nes.cfg │ ├── ppu_open_bus.s │ └── readme.txt ├── ppu_read_buffer ├── readme.txt ├── source │ ├── Makefile │ ├── bank_switch.s │ ├── common │ │ ├── ascii_1.chr │ │ ├── ascii_w.chr │ │ ├── binarysearch.s │ │ ├── build_rom.s │ │ ├── colors.inc │ │ ├── console.s │ │ ├── crc.s │ │ ├── delay.s │ │ ├── macros.inc │ │ ├── make_ascii.php │ │ ├── neshw.inc │ │ ├── ppu.s │ │ ├── print.s │ │ ├── scanline_delay.s │ │ ├── shell.inc │ │ ├── shell.s │ │ ├── testing.s │ │ └── text_out.s │ ├── crash_proof.s │ ├── dte_translate.php │ ├── filler │ │ ├── apacker-filler.cc │ │ ├── apu.inc │ │ ├── cpu.asm │ │ ├── disasm.inc │ │ ├── exec.inc │ │ ├── exec_opt.php │ │ ├── help.asm │ │ ├── help2.asm │ │ ├── joypad.inc │ │ ├── maketestsl.inc │ │ ├── part1.asm │ │ └── ppu.inc │ ├── gfx.bank4.bin │ ├── gfx.mixed.dat │ ├── gfx │ │ ├── encode_image.php │ │ ├── image.php │ │ ├── nes_palette.php │ │ ├── ntsc.inc │ │ ├── quantize.php │ │ ├── quantize_with_sprites.cc │ │ ├── reduce.php │ │ ├── scolorq.inc │ │ └── thomaskinkade50.jpg │ ├── graphics.s │ ├── inc │ │ ├── binpacker.php │ │ ├── dte_reader.php │ │ ├── font.php │ │ ├── ins_defs.php │ │ ├── linker.php │ │ └── overlapfinder.php │ ├── nes.cfg │ ├── nes.map │ ├── readme.txt │ ├── test_ppu_read_buffer.s │ ├── testing2-begin.s │ └── testing2-end.s └── test_ppu_read_buffer.nes ├── ppu_vbl_nmi ├── ppu_vbl_nmi.nes ├── readme.txt ├── rom_singles │ ├── 01-vbl_basics.nes │ ├── 02-vbl_set_time.nes │ ├── 03-vbl_clear_time.nes │ ├── 04-nmi_control.nes │ ├── 05-nmi_timing.nes │ ├── 06-suppression.nes │ ├── 07-nmi_on_timing.nes │ ├── 08-nmi_off_timing.nes │ ├── 09-even_odd_frames.nes │ └── 10-even_odd_timing.nes └── source │ ├── 01-vbl_basics.s │ ├── 02-vbl_set_time.s │ ├── 03-vbl_clear_time.s │ ├── 04-nmi_control.s │ ├── 05-nmi_timing.s │ ├── 06-suppression.s │ ├── 07-nmi_on_timing.s │ ├── 08-nmi_off_timing.s │ ├── 09-even_odd_frames.s │ ├── 10-even_odd_timing.s │ ├── common │ ├── ascii.chr │ ├── bootloader.bin │ ├── build_rom.s │ ├── console.s │ ├── crc.s │ ├── delay.s │ ├── macros.inc │ ├── neshw.inc │ ├── ppu.s │ ├── print.s │ ├── shell.inc │ ├── shell.s │ ├── shell_misc.s │ ├── sync_vbl.s │ ├── testing.s │ └── text_out.s │ ├── nes.cfg │ └── readme.txt ├── read_joy3 ├── count_errors.nes ├── count_errors_fast.nes ├── source │ ├── common │ │ ├── ascii.chr │ │ ├── console.s │ │ ├── crc.s │ │ ├── delay.s │ │ ├── macros.inc │ │ ├── nes.inc │ │ ├── print.s │ │ ├── serial.s │ │ ├── shell.inc │ │ ├── sync_dmc.s │ │ └── testing.s │ ├── count_errors.s │ ├── count_errors_fast.s │ ├── nes.cfg │ ├── read_joy.inc │ ├── readme.txt │ ├── test_buttons.s │ └── thorough_test.s ├── test_buttons.nes └── thorough_test.nes ├── scanline-a1 ├── scanline.asm ├── scanline.chr ├── scanline.imk ├── scanline.nes ├── scanline.umk └── scanline.unif ├── scanline ├── scanline.asm ├── scanline.chr ├── scanline.imk ├── scanline.nes ├── scanline.umk └── scanline.unif ├── scrolltest ├── makefile ├── nesedit.cfg ├── scroll.bin ├── scroll.nes ├── scroll.s ├── scrollhd.bin ├── scrollhd.s ├── scrtest.blk ├── scrtest.chr ├── scrtest.map └── scrtest.pal ├── soundtest ├── README.TXT ├── SNDTEST.ASM ├── SNDTEST.CHR └── SNDTEST.NES ├── sprdma_and_dmc_dma ├── sprdma_and_dmc_dma.nes └── sprdma_and_dmc_dma_512.nes ├── sprite_hit_tests_2005.10.05 ├── 01.basics.nes ├── 02.alignment.nes ├── 03.corners.nes ├── 04.flip.nes ├── 05.left_clip.nes ├── 06.right_edge.nes ├── 07.screen_bottom.nes ├── 08.double_height.nes ├── 09.timing_basics.nes ├── 10.timing_order.nes ├── 11.edge_timing.nes ├── readme.txt └── source │ ├── 01.basics.asm │ ├── 02.alignment.asm │ ├── 03.corners.asm │ ├── 04.flip.asm │ ├── 05.left_clip.asm │ ├── 06.right_edge.asm │ ├── 07.screen_bottom.asm │ ├── 08.double_height.asm │ ├── 09.timing_basics.asm │ ├── 10.timing_order.asm │ ├── 11.edge_timing.asm │ ├── prefix_sprite_hit.a │ └── runtime │ ├── console.a │ ├── debug.a │ ├── delays.a │ ├── ppu_sync.a │ ├── ppu_util.a │ ├── prefix_ppu.a │ ├── runtime_rom.a │ ├── runtime_rom_common.a │ └── validation.a ├── sprite_overflow_tests ├── 1.Basics.nes ├── 2.Details.nes ├── 3.Timing.nes ├── 4.Obscure.nes ├── 5.Emulator.nes ├── readme.txt └── source │ ├── 1.Basics.a │ ├── 2.Details.a │ ├── 3.Timing.a │ ├── 4.Obscure.a │ ├── 5.Emulator.a │ ├── console.a │ ├── debug.a │ ├── delays.a │ ├── ppu_sync.a │ ├── ppu_util.a │ ├── prefix.a │ ├── prefix_ppu.a │ ├── runtime_rom.a │ ├── runtime_rom_common.a │ └── validation.a ├── spritecans-2011 ├── README.txt ├── makefile ├── nes.ini ├── obj │ └── nes │ │ └── index.txt ├── spritecans.nes ├── src │ ├── music.s │ ├── musicseq.h │ ├── musicseq.s │ ├── nes.h │ ├── paldetect.s │ ├── sound.s │ ├── sprite.nam │ └── sprite.s ├── tilesets │ └── main.png ├── tools │ ├── 8name.py │ ├── mktables.py │ └── pilbmp2nes.py └── zip.in ├── stars_se ├── Header_32k ├── Make_StarsSE ├── ReadmeStarsSE.TXT ├── StarsSE.CHR ├── StarsSE.NES ├── StarsSE.SPR ├── StarsSE.asm ├── scrolltext.bin └── starsnam.asm ├── status.txt ├── stomper ├── smwnsf.dat ├── smwstomp.asm ├── smwstomp.chr ├── smwstomp.imk ├── smwstomp.nes ├── smwstomp.umk └── smwstomp.unif ├── stress ├── FIREWAVE.ASM ├── Header_Mapper0 ├── Make_NEStress ├── NEStress.NES ├── NEStress.asm ├── NEStress.txt ├── SolarTitleNAM.asm ├── Tanks.chr ├── TanksFadePal.ASM └── TanksPal.ASM ├── test_roms.xml ├── tutor ├── make.bat ├── tutor.asm ├── tutor.nes ├── tutorchr.asm └── tutorprg.asm ├── tvpassfail ├── README.txt ├── health.nam ├── mk.bat ├── nes.ini ├── palsquare.nam ├── square.nam ├── square.pal ├── tiled.pal ├── tv.chr ├── tv.nam ├── tv.nes ├── tv.pal ├── tv.s └── tvpassfail.zip ├── vaus-test ├── README.txt ├── makefile ├── nes.ini ├── obj │ └── nes │ │ └── index.txt ├── src │ ├── main.s │ ├── nes.h │ ├── ppuclear.s │ ├── ram.h │ └── vauspads.s ├── tilesets │ ├── bggfx.png │ └── spritegfx.png ├── tools │ └── pilbmp2nes.py ├── vaus-test.nes └── zip.in ├── vbl_nmi_timing ├── 1.frame_basics.nes ├── 2.vbl_timing.nes ├── 3.even_odd_frames.nes ├── 4.vbl_clear_timing.nes ├── 5.nmi_suppression.nes ├── 6.nmi_disable.nes ├── 7.nmi_timing.nes ├── readme.txt └── source │ ├── 1.frame_basics.a │ ├── 2.vbl_timing.a │ ├── 3.even_odd_frames.a │ ├── 4.vbl_clear_timing.a │ ├── 5.nmi_suppression.a │ ├── 6.nmi_disable.a │ ├── 7.nmi_timing.a │ └── support │ ├── chr.bin │ ├── console.a │ ├── debug.a │ ├── delays.a │ ├── ppu_sync.a │ ├── ppu_util.a │ ├── prefix_ppu.a │ ├── runtime_rom.a │ ├── runtime_rom_common.a │ └── validation.a ├── volume_tests ├── README.txt ├── empty.chr ├── makefile ├── nes.ini ├── obj │ └── nes │ │ └── khan ├── recordings │ ├── fceux.ogg │ ├── nes-001.ogg │ ├── nestopia.ogg │ └── nintendulator.ogg ├── src │ ├── hello.s │ ├── pads.s │ └── sound.s ├── volumes.nes └── zip.in └── window5 ├── colorwin.asm ├── colorwin.chr ├── colorwin_ntsc.nes ├── colorwin_pal.nes ├── header ├── linkfile ├── maping.asm └── win_timing.asm /240pee/240pee-bnrom.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/240pee/240pee-bnrom.nes -------------------------------------------------------------------------------- /240pee/240pee.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/240pee/240pee.nes -------------------------------------------------------------------------------- /MMC1_A12/MMC1.asm: -------------------------------------------------------------------------------- 1 | ;MMC1 write handler 2 | .define R0 $9fff 3 | .define R1 $bfff 4 | .define R2 $dfff 5 | .define R3 $f000 6 | 7 | .section "MMC1" FREE 8 | WriteR0 9 | sta R0 10 | lsr A 11 | sta R0 12 | lsr A 13 | sta R0 14 | lsr A 15 | sta R0 16 | lsr A 17 | sta R0 18 | rts 19 | 20 | WriteR1 21 | sta R1 22 | lsr A 23 | sta R1 24 | lsr A 25 | sta R1 26 | lsr A 27 | sta R1 28 | lsr A 29 | sta R1 30 | rts 31 | 32 | WriteR2 33 | sta R2 34 | lsr A 35 | sta R2 36 | lsr A 37 | sta R2 38 | lsr A 39 | sta R2 40 | lsr A 41 | sta R2 42 | rts 43 | 44 | ProgramSwitch1 45 | sta BankLatch1 46 | ProgramSwitch2 47 | sta BankLatch2 48 | WriteR3 49 | tax 50 | lda M2000 51 | and #$7f 52 | sta $2000 53 | txa 54 | sta R3 55 | lsr A 56 | sta R3 57 | lsr A 58 | sta R3 59 | lsr A 60 | sta R3 61 | lsr A 62 | sta R3 63 | lda M2000 64 | sta $2000 65 | rts 66 | .ends -------------------------------------------------------------------------------- /MMC1_A12/alphabet.chr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/MMC1_A12/alphabet.chr -------------------------------------------------------------------------------- /MMC1_A12/joypad.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/MMC1_A12/joypad.lib -------------------------------------------------------------------------------- /MMC1_A12/linkfile.txt: -------------------------------------------------------------------------------- 1 | [objects] 2 | mmc1_a12.o 3 | 4 | [libraries] 5 | BANK 7 SLOT 3 mmc1.lib 6 | BANK 7 SLOT 3 joypad.lib 7 | 8 | [header] 9 | snrom.bin -------------------------------------------------------------------------------- /MMC1_A12/maping.asm: -------------------------------------------------------------------------------- 1 | ;Defines NES's RAM for any games witout SRAM 2 | ;Stack isn't defined, it's use is reserved 3 | ;Also $200-$2ff is reserved for SpriteRam and isn't defined here 4 | 5 | .memorymap 6 | defaultslot 0 7 | slotsize $100 8 | slot 0 $0 ;0 page RAM 9 | slotsize $500 10 | slot 1 $300 ;BSS RAM 11 | slotsize $4000 ;PRG ROM slot (16kb) 12 | slot 2 $8000 13 | slotsize $4000 14 | slot 3 $c000 ;Resitant PRG slot (16kb) 15 | .endme 16 | 17 | ;Define a CNROM structure with 32kb PRG and 32kb CHR 18 | 19 | .rombankmap 20 | bankstotal 8 21 | banksize $4000 ;4x 32kb PRG 22 | banks 8 23 | .endro -------------------------------------------------------------------------------- /MMC1_A12/mmc1.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/MMC1_A12/mmc1.lib -------------------------------------------------------------------------------- /MMC1_A12/mmc1_a12.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/MMC1_A12/mmc1_a12.nes -------------------------------------------------------------------------------- /MMC1_A12/snrom.bin: -------------------------------------------------------------------------------- 1 | NES -------------------------------------------------------------------------------- /PaddleTest3/Info.txt: -------------------------------------------------------------------------------- 1 | Use NESASM3 to assemble code. 2 | 3 | Program made by Aaron Bottegal (3GenGames) and finished on 3/17/2011, at 2:25AM. No warranty implied on this program. Use at your own risk. Don't steal my code! If you want to use my program, contact me please. Some of this is still a template from the Nerdy Nights tutorials that I've never really had to change yet, thanks bunnyboy. (www.retrousb.com) -------------------------------------------------------------------------------- /PaddleTest3/KaboomASM.bat: -------------------------------------------------------------------------------- 1 | NESASM3 PaddleTest.asm 2 | pause -------------------------------------------------------------------------------- /PaddleTest3/PaddleTest.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/PaddleTest3/PaddleTest.nes -------------------------------------------------------------------------------- /PaddleTest3/PaddleTestGraphics.chr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/PaddleTest3/PaddleTestGraphics.chr -------------------------------------------------------------------------------- /PaddleTest3/PaddleTestScreen.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/PaddleTest3/PaddleTestScreen.bin -------------------------------------------------------------------------------- /PaddleTest3/Palette.bin: -------------------------------------------------------------------------------- 1 | 0 -------------------------------------------------------------------------------- /apu_mixer/dmc.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/apu_mixer/dmc.nes -------------------------------------------------------------------------------- /apu_mixer/noise.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/apu_mixer/noise.nes -------------------------------------------------------------------------------- /apu_mixer/source/common/ascii.chr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/apu_mixer/source/common/ascii.chr -------------------------------------------------------------------------------- /apu_mixer/source/common/devcart.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/apu_mixer/source/common/devcart.bin -------------------------------------------------------------------------------- /apu_mixer/source/common/shell.inc: -------------------------------------------------------------------------------- 1 | ; Included at beginning of program 2 | 3 | .ifdef CUSTOM_PREFIX 4 | .include "custom_prefix.s" 5 | .endif 6 | 7 | ; Sub-test in a multi-test ROM 8 | .ifdef BUILD_MULTI 9 | .include "build_multi.s" 10 | .else 11 | 12 | ; NSF music file 13 | .ifdef BUILD_NSF 14 | .include "build_nsf.s" 15 | .endif 16 | 17 | ; Devcart 18 | .ifdef BUILD_DEVCART 19 | .include "build_devcart.s" 20 | .endif 21 | 22 | ; NES internal RAM 23 | .ifdef BUILD_NOCART 24 | .include "build_nocart.s" 25 | .endif 26 | 27 | ; NES ROM (default) 28 | .ifndef SHELL_INCLUDED 29 | .include "build_rom.s" 30 | .endif 31 | 32 | .endif ; .ifdef BUILD_MULTI 33 | -------------------------------------------------------------------------------- /apu_mixer/square.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/apu_mixer/square.nes -------------------------------------------------------------------------------- /apu_mixer/triangle.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/apu_mixer/triangle.nes -------------------------------------------------------------------------------- /apu_mixer_recordings/dmc.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/apu_mixer_recordings/dmc.mp3 -------------------------------------------------------------------------------- /apu_mixer_recordings/noise.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/apu_mixer_recordings/noise.mp3 -------------------------------------------------------------------------------- /apu_mixer_recordings/square.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/apu_mixer_recordings/square.mp3 -------------------------------------------------------------------------------- /apu_mixer_recordings/triangle.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/apu_mixer_recordings/triangle.mp3 -------------------------------------------------------------------------------- /apu_reset/4015_cleared.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/apu_reset/4015_cleared.nes -------------------------------------------------------------------------------- /apu_reset/4017_timing.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/apu_reset/4017_timing.nes -------------------------------------------------------------------------------- /apu_reset/4017_written.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/apu_reset/4017_written.nes -------------------------------------------------------------------------------- /apu_reset/irq_flag_cleared.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/apu_reset/irq_flag_cleared.nes -------------------------------------------------------------------------------- /apu_reset/len_ctrs_enabled.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/apu_reset/len_ctrs_enabled.nes -------------------------------------------------------------------------------- /apu_reset/source/common/ascii.chr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/apu_reset/source/common/ascii.chr -------------------------------------------------------------------------------- /apu_reset/source/common/devcart.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/apu_reset/source/common/devcart.bin -------------------------------------------------------------------------------- /apu_reset/source/common/shell.inc: -------------------------------------------------------------------------------- 1 | ; Included at beginning of program 2 | 3 | .ifdef CUSTOM_PREFIX 4 | .include "custom_prefix.s" 5 | .endif 6 | 7 | ; Sub-test in a multi-test ROM 8 | .ifdef BUILD_MULTI 9 | .include "build_multi.s" 10 | .else 11 | 12 | ; NSF music file 13 | .ifdef BUILD_NSF 14 | .include "build_nsf.s" 15 | .endif 16 | 17 | ; Devcart 18 | .ifdef BUILD_DEVCART 19 | .include "build_devcart.s" 20 | .endif 21 | 22 | ; NES internal RAM 23 | .ifdef BUILD_NOCART 24 | .include "build_nocart.s" 25 | .endif 26 | 27 | ; NES ROM (default) 28 | .ifndef SHELL_INCLUDED 29 | .include "build_rom.s" 30 | .endif 31 | 32 | .endif ; .ifdef BUILD_MULTI 33 | -------------------------------------------------------------------------------- /apu_reset/source/irq_flag_cleared.s: -------------------------------------------------------------------------------- 1 | ; At power and reset, IRQ flag is clear. 2 | 3 | CUSTOM_RESET=1 4 | .include "shell.inc" 5 | .include "run_at_reset.s" 6 | 7 | nv_res flag 8 | 9 | reset: lda $4015 10 | sta flag 11 | jmp std_reset 12 | 13 | main: jsr num_resets 14 | bne was_reset 15 | 16 | power: set_test 2,"At power, flag should be clear" 17 | lda flag 18 | and #$40 19 | jne test_failed 20 | 21 | jsr prompt_to_reset 22 | setb $4017,$00 ; get flag set 23 | delay 29850 24 | setb $4017,$80 ; stop setting flag 25 | jmp wait_reset 26 | 27 | was_reset: 28 | set_test 3,"At reset, flag should be clear" 29 | lda flag 30 | and #$40 31 | jne test_failed 32 | 33 | jmp tests_passed 34 | -------------------------------------------------------------------------------- /apu_reset/works_immediately.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/apu_reset/works_immediately.nes -------------------------------------------------------------------------------- /apu_test/apu_test.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/apu_test/apu_test.nes -------------------------------------------------------------------------------- /apu_test/rom_singles/1-len_ctr.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/apu_test/rom_singles/1-len_ctr.nes -------------------------------------------------------------------------------- /apu_test/rom_singles/2-len_table.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/apu_test/rom_singles/2-len_table.nes -------------------------------------------------------------------------------- /apu_test/rom_singles/3-irq_flag.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/apu_test/rom_singles/3-irq_flag.nes -------------------------------------------------------------------------------- /apu_test/rom_singles/4-jitter.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/apu_test/rom_singles/4-jitter.nes -------------------------------------------------------------------------------- /apu_test/rom_singles/5-len_timing.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/apu_test/rom_singles/5-len_timing.nes -------------------------------------------------------------------------------- /apu_test/rom_singles/6-irq_flag_timing.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/apu_test/rom_singles/6-irq_flag_timing.nes -------------------------------------------------------------------------------- /apu_test/rom_singles/7-dmc_basics.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/apu_test/rom_singles/7-dmc_basics.nes -------------------------------------------------------------------------------- /apu_test/rom_singles/8-dmc_rates.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/apu_test/rom_singles/8-dmc_rates.nes -------------------------------------------------------------------------------- /apu_test/source/2-len_table.s: -------------------------------------------------------------------------------- 1 | ; Verifies all length table entries 2 | 3 | .include "apu_shell.inc" 4 | 5 | main: test_main_chans test 6 | jmp tests_passed 7 | 8 | test: loop_n_times test_entry,32 9 | rts 10 | 11 | test_entry: 12 | tay 13 | setb SNDMODE,0 14 | 15 | ; Load 16 | tya 17 | asl a 18 | asl a 19 | asl a 20 | ldx chan_off 21 | sta $4003,x 22 | 23 | ; Verify 24 | lda table,y 25 | tax 26 | dex 27 | : setb SNDMODE,$C0 ; clock length counter 28 | dex 29 | bne :- 30 | jsr len_should_be_1 31 | rts 32 | 33 | table: .byte 10, 254, 20, 2, 40, 4, 80, 6 34 | .byte 160, 8, 60, 10, 14, 12, 26, 14 35 | .byte 12, 16, 24, 18, 48, 20, 96, 22 36 | .byte 192, 24, 72, 26, 16, 28, 32, 30 37 | -------------------------------------------------------------------------------- /apu_test/source/common/apu_shell.inc: -------------------------------------------------------------------------------- 1 | .include "shell.inc" 2 | .include "sync_apu.s" 3 | .include "test_main_chans.s" 4 | 5 | len_2 = $18 ; value that loads length counter with 2 6 | len_4 = $28 ; value that loads length counter with 4 7 | len_6 = $38 ; value that loads length counter with 6 8 | 9 | halt = $B0 10 | unhalt = $10 11 | 12 | should_be_playing: 13 | lda chan_bit 14 | and SNDCHN 15 | jeq chan_failed 16 | rts 17 | 18 | len_should_be_1: 19 | jsr should_be_playing 20 | setb SNDMODE,$C0 ; clock length 21 | should_be_silent: 22 | lda chan_bit 23 | and SNDCHN 24 | jne chan_failed 25 | rts 26 | 27 | chan_failed: 28 | print_str "Channel: " 29 | lda chan_idx 30 | jsr print_dec 31 | jsr print_newline 32 | jmp test_failed 33 | -------------------------------------------------------------------------------- /apu_test/source/common/ascii.chr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/apu_test/source/common/ascii.chr -------------------------------------------------------------------------------- /apu_test/source/common/devcart.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/apu_test/source/common/devcart.bin -------------------------------------------------------------------------------- /apu_test/source/common/shell.inc: -------------------------------------------------------------------------------- 1 | ; Included at beginning of program 2 | 3 | .ifdef CUSTOM_PREFIX 4 | .include "custom_prefix.s" 5 | .endif 6 | 7 | ; Sub-test in a multi-test ROM 8 | .ifdef BUILD_MULTI 9 | .include "build_multi.s" 10 | .else 11 | 12 | ; NSF music file 13 | .ifdef BUILD_NSF 14 | .include "build_nsf.s" 15 | .endif 16 | 17 | ; Devcart 18 | .ifdef BUILD_DEVCART 19 | .include "build_devcart.s" 20 | .endif 21 | 22 | ; NES internal RAM 23 | .ifdef BUILD_NOCART 24 | .include "build_nocart.s" 25 | .endif 26 | 27 | ; NES ROM (default) 28 | .ifndef SHELL_INCLUDED 29 | .include "build_rom.s" 30 | .endif 31 | 32 | .endif ; .ifdef BUILD_MULTI 33 | -------------------------------------------------------------------------------- /apu_test/source/common/sync_apu.s: -------------------------------------------------------------------------------- 1 | ; Synchronizes APU divide-by-two so that an STA $4017 2 | ; immediately after the JSR (or some even number of 3 | ; clocks after) will start the frame counter without 4 | ; an extra clock delay. 5 | ; Preserved: A, X, Y 6 | ; Time: 16.7 msec 7 | sync_apu: 8 | pha 9 | 10 | ; Clear IRQ flag 11 | sei 12 | lda #$40 13 | sta SNDMODE 14 | 15 | ; Mode 0, frame IRQ enabled 16 | lda #$00 17 | sta SNDMODE 18 | delay 29825 19 | 20 | ; Delay extra clock if odd alignment 21 | lda #$40 22 | bit SNDCHN 23 | bne :+ 24 | : 25 | ; Clear IRQ flag 26 | sta SNDMODE 27 | pla 28 | rts 29 | -------------------------------------------------------------------------------- /apu_test/source/common/test_main_chans.s: -------------------------------------------------------------------------------- 1 | zp_byte chan_idx 2 | zp_byte chan_off 3 | zp_byte chan_bit 4 | 5 | ; Calls routine for the four main channels 6 | .macro test_main_chans routine 7 | ldy #0 ; channel index: 0-3 8 | : sty chan_idx 9 | 10 | tya 11 | asl a 12 | asl a 13 | tax 14 | stx chan_off 15 | 16 | setb {$4000,x},$11 ; near-silent 17 | lda chan_bits,y 18 | sta chan_bit 19 | sta SNDCHN 20 | 21 | ; A = chan_bit 22 | ; X = chan_off 23 | ; Y = chan_idx 24 | jsr routine 25 | 26 | ldy chan_idx 27 | iny 28 | cpy #4 29 | bne :- 30 | .endmacro 31 | 32 | .align 4 33 | chan_bits: 34 | .byte $01,$02,$04,$08 35 | -------------------------------------------------------------------------------- /blargg_apu_2005.07.30/01.len_ctr.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/blargg_apu_2005.07.30/01.len_ctr.nes -------------------------------------------------------------------------------- /blargg_apu_2005.07.30/02.len_table.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/blargg_apu_2005.07.30/02.len_table.nes -------------------------------------------------------------------------------- /blargg_apu_2005.07.30/03.irq_flag.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/blargg_apu_2005.07.30/03.irq_flag.nes -------------------------------------------------------------------------------- /blargg_apu_2005.07.30/04.clock_jitter.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/blargg_apu_2005.07.30/04.clock_jitter.nes -------------------------------------------------------------------------------- /blargg_apu_2005.07.30/05.len_timing_mode0.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/blargg_apu_2005.07.30/05.len_timing_mode0.nes -------------------------------------------------------------------------------- /blargg_apu_2005.07.30/06.len_timing_mode1.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/blargg_apu_2005.07.30/06.len_timing_mode1.nes -------------------------------------------------------------------------------- /blargg_apu_2005.07.30/07.irq_flag_timing.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/blargg_apu_2005.07.30/07.irq_flag_timing.nes -------------------------------------------------------------------------------- /blargg_apu_2005.07.30/08.irq_timing.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/blargg_apu_2005.07.30/08.irq_timing.nes -------------------------------------------------------------------------------- /blargg_apu_2005.07.30/09.reset_timing.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/blargg_apu_2005.07.30/09.reset_timing.nes -------------------------------------------------------------------------------- /blargg_apu_2005.07.30/10.len_halt_timing.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/blargg_apu_2005.07.30/10.len_halt_timing.nes -------------------------------------------------------------------------------- /blargg_apu_2005.07.30/11.len_reload_timing.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/blargg_apu_2005.07.30/11.len_reload_timing.nes -------------------------------------------------------------------------------- /blargg_litewall/blargg_litewall-10c.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/blargg_litewall/blargg_litewall-10c.nes -------------------------------------------------------------------------------- /blargg_litewall/blargg_litewall-9.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/blargg_litewall/blargg_litewall-9.nes -------------------------------------------------------------------------------- /blargg_litewall/litewall2.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/blargg_litewall/litewall2.nes -------------------------------------------------------------------------------- /blargg_litewall/litewall3.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/blargg_litewall/litewall3.nes -------------------------------------------------------------------------------- /blargg_litewall/litewall5.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/blargg_litewall/litewall5.nes -------------------------------------------------------------------------------- /blargg_nes_cpu_test5/cpu.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/blargg_nes_cpu_test5/cpu.nes -------------------------------------------------------------------------------- /blargg_nes_cpu_test5/official.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/blargg_nes_cpu_test5/official.nes -------------------------------------------------------------------------------- /blargg_nes_cpu_test5/source/common/ascii.chr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/blargg_nes_cpu_test5/source/common/ascii.chr -------------------------------------------------------------------------------- /blargg_nes_cpu_test5/source/common/instr_test.a: -------------------------------------------------------------------------------- 1 | .include "common.a" 2 | .include "testing.a" 3 | .include "crc_fast.a" 4 | 5 | ; Instructions to test 6 | .macro entry op,name 7 | .byte op,0 8 | str_addr name 9 | .endmacro 10 | 11 | zp_byte in_p 12 | zp_byte in_a 13 | zp_byte in_x 14 | zp_byte in_y 15 | zp_byte in_s 16 | 17 | values: 18 | .byte 0,1,2,$40,$7F,$80,$81,$FF 19 | values_size = * - values 20 | .byte 0,1,2,$40,$7F,$80,$81,$FF 21 | 22 | .macro set_paxyso 23 | ldx in_s 24 | txs 25 | lda values,y 26 | sta operand 27 | lda in_p 28 | pha 29 | lda in_a 30 | ldx in_x 31 | ldy in_y 32 | plp 33 | .endmacro 34 | 35 | .macro check_paxyso 36 | php 37 | cld ; limits effect of buggy emulator 38 | jsr update_crc_fast 39 | pla 40 | jsr update_crc_fast 41 | txa 42 | jsr update_crc_fast 43 | tya 44 | jsr update_crc_fast 45 | tsx 46 | txa 47 | jsr update_crc_fast 48 | lda operand 49 | jsr update_crc_fast 50 | .endmacro 51 | -------------------------------------------------------------------------------- /blargg_nes_cpu_test5/source/common/nes.a: -------------------------------------------------------------------------------- 1 | .if !BUILD_NSF ; PPU PPUCTRL = $2000 PPUMASK = $2001 PPUSTATUS = $2002 SPRADDR = $2003 SPRDATA = $2004 PPUSCROLL = $2005 PPUADDR = $2006 PPUDATA = $2007 SPRDMA = $4014 PPUCTRL_NMI = $80 PPUMASK_BG0 = $0A PPUCTRL_8X8 = $00 PPUCTRL_8X16 = $20 PPUMASK_SPR = $14 PPUMASK_BG0CLIP = $08 .endif ; APU SNDCHN = $4015 JOY1 = $4016 JOY2 = $4017 SNDMODE = $4017 SNDMODE_NOIRQ = $40 ; Temporaries temp = $A temp2 = $B temp3 = $C addr = $E .macro init_nes ; Init NES sei cld ldx #$FF txs lda #0 .if !BUILD_NSF ; Init PPU sta PPUCTRL sta PPUMASK .endif ; Clear RAM ldx #7 ; last page tay ; offset in last page+1 sta <0 @clear_page: stx <1 : dey sta (0),y bne :- dex bpl @clear_page .if !BUILD_NSF ; Let PPU initialize : bit PPUSTATUS bpl :- : bit PPUSTATUS bpl :- .endif .endmacro -------------------------------------------------------------------------------- /blargg_ppu_tests_2005.09.15b/palette_ram.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/blargg_ppu_tests_2005.09.15b/palette_ram.nes -------------------------------------------------------------------------------- /blargg_ppu_tests_2005.09.15b/power_up_palette.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/blargg_ppu_tests_2005.09.15b/power_up_palette.nes -------------------------------------------------------------------------------- /blargg_ppu_tests_2005.09.15b/sprite_ram.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/blargg_ppu_tests_2005.09.15b/sprite_ram.nes -------------------------------------------------------------------------------- /blargg_ppu_tests_2005.09.15b/vbl_clear_time.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/blargg_ppu_tests_2005.09.15b/vbl_clear_time.nes -------------------------------------------------------------------------------- /blargg_ppu_tests_2005.09.15b/vram_access.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/blargg_ppu_tests_2005.09.15b/vram_access.nes -------------------------------------------------------------------------------- /branch_timing_tests/1.Branch_Basics.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/branch_timing_tests/1.Branch_Basics.nes -------------------------------------------------------------------------------- /branch_timing_tests/2.Backward_Branch.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/branch_timing_tests/2.Backward_Branch.nes -------------------------------------------------------------------------------- /branch_timing_tests/3.Forward_Branch.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/branch_timing_tests/3.Forward_Branch.nes -------------------------------------------------------------------------------- /branch_timing_tests/source/prefix.a: -------------------------------------------------------------------------------- 1 | .include "validation.a" 2 | 3 | nmi_count = 10 4 | 5 | nmi: inc (instr+1) 26 | sta $100,x 27 | 28 | set_paxyso 29 | .endmacro 30 | 31 | .include "instr_test_end.s" 32 | 33 | test_values: 34 | test_normal 35 | rts 36 | 37 | correct_checksums: 38 | .dword $E1EB954A 39 | -------------------------------------------------------------------------------- /instr_test-v3/source/13-rti.s: -------------------------------------------------------------------------------- 1 | .include "instr_test.inc" 2 | 3 | instrs: 4 | entry $40,"RTI" 5 | instrs_size = * - instrs 6 | 7 | instr_template: 8 | rti 9 | inx 10 | inx 11 | jmp instr_done 12 | instr_template_size = * - instr_template 13 | 14 | zp_res operand 15 | 16 | .define check_out check_paxyso 17 | 18 | .macro set_in 19 | ; Put return address and P on stack 20 | ldx in_s 21 | inx 22 | lda operand 23 | sta $100,x 24 | inx 25 | lda #<(instr+1) 26 | sta $100,x 27 | inx 28 | lda #>(instr+1) 29 | sta $100,x 30 | 31 | set_paxyso 32 | .endmacro 33 | 34 | .include "instr_test_end.s" 35 | 36 | test_values: 37 | test_normal 38 | rts 39 | 40 | correct_checksums: 41 | .dword $F4B30222 42 | -------------------------------------------------------------------------------- /instr_test-v3/source/14-brk.s: -------------------------------------------------------------------------------- 1 | CUSTOM_IRQ = 1 2 | .include "instr_test.inc" 3 | 4 | zp_byte p_inside_brk 5 | 6 | irq: pha 7 | php 8 | pla 9 | sta p_inside_brk 10 | pla 11 | rti 12 | 13 | instrs: 14 | entry $00,"BRK" 15 | instrs_size = * - instrs 16 | 17 | instr_template: 18 | brk 19 | inx 20 | inx 21 | jmp instr_done 22 | instr_template_size = * - instr_template 23 | 24 | operand = in_a 25 | 26 | .macro set_in 27 | set_stack 28 | set_paxyso 29 | .endmacro 30 | 31 | .macro check_out 32 | ; By looking at stack, we verify 33 | ; values BRK pushed on it 34 | check_paxyso 35 | check_stack 36 | lda p_inside_brk 37 | jsr update_crc_fast 38 | .endmacro 39 | 40 | .include "instr_test_end.s" 41 | 42 | test_values: 43 | test_normal 44 | rts 45 | 46 | correct_checksums: 47 | .dword $1392F39C 48 | -------------------------------------------------------------------------------- /instr_test-v3/source/common/ascii.chr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/instr_test-v3/source/common/ascii.chr -------------------------------------------------------------------------------- /instr_test-v3/source/common/bootloader.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/instr_test-v3/source/common/bootloader.bin -------------------------------------------------------------------------------- /instr_test-v3/source/common/shell.inc: -------------------------------------------------------------------------------- 1 | ; Included at beginning of program 2 | 3 | .ifdef CUSTOM_PREFIX 4 | .include "custom_prefix.s" 5 | .endif 6 | 7 | ; Sub-test in a multi-test ROM 8 | .ifdef BUILD_MULTI 9 | .include "build_multi.s" 10 | .else 11 | 12 | ; NSF music file 13 | .ifdef BUILD_NSF 14 | .include "build_nsf.s" 15 | .endif 16 | 17 | ; Devcart 18 | .ifdef BUILD_DEVCART 19 | .include "build_devcart.s" 20 | .endif 21 | 22 | ; NES internal RAM 23 | .ifdef BUILD_NOCART 24 | .include "build_nocart.s" 25 | .endif 26 | 27 | ; NES ROM (default) 28 | .ifndef SHELL_INCLUDED 29 | .include "build_rom.s" 30 | .endif 31 | 32 | .endif ; .ifdef BUILD_MULTI 33 | -------------------------------------------------------------------------------- /instr_test-v5/all_instrs.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/instr_test-v5/all_instrs.nes -------------------------------------------------------------------------------- /instr_test-v5/official_only.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/instr_test-v5/official_only.nes -------------------------------------------------------------------------------- /instr_test-v5/rom_singles/01-basics.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/instr_test-v5/rom_singles/01-basics.nes -------------------------------------------------------------------------------- /instr_test-v5/rom_singles/02-implied.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/instr_test-v5/rom_singles/02-implied.nes -------------------------------------------------------------------------------- /instr_test-v5/rom_singles/03-immediate.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/instr_test-v5/rom_singles/03-immediate.nes -------------------------------------------------------------------------------- /instr_test-v5/rom_singles/04-zero_page.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/instr_test-v5/rom_singles/04-zero_page.nes -------------------------------------------------------------------------------- /instr_test-v5/rom_singles/05-zp_xy.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/instr_test-v5/rom_singles/05-zp_xy.nes -------------------------------------------------------------------------------- /instr_test-v5/rom_singles/06-absolute.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/instr_test-v5/rom_singles/06-absolute.nes -------------------------------------------------------------------------------- /instr_test-v5/rom_singles/07-abs_xy.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/instr_test-v5/rom_singles/07-abs_xy.nes -------------------------------------------------------------------------------- /instr_test-v5/rom_singles/08-ind_x.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/instr_test-v5/rom_singles/08-ind_x.nes -------------------------------------------------------------------------------- /instr_test-v5/rom_singles/09-ind_y.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/instr_test-v5/rom_singles/09-ind_y.nes -------------------------------------------------------------------------------- /instr_test-v5/rom_singles/10-branches.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/instr_test-v5/rom_singles/10-branches.nes -------------------------------------------------------------------------------- /instr_test-v5/rom_singles/11-stack.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/instr_test-v5/rom_singles/11-stack.nes -------------------------------------------------------------------------------- /instr_test-v5/rom_singles/12-jmp_jsr.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/instr_test-v5/rom_singles/12-jmp_jsr.nes -------------------------------------------------------------------------------- /instr_test-v5/rom_singles/13-rts.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/instr_test-v5/rom_singles/13-rts.nes -------------------------------------------------------------------------------- /instr_test-v5/rom_singles/14-rti.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/instr_test-v5/rom_singles/14-rti.nes -------------------------------------------------------------------------------- /instr_test-v5/rom_singles/15-brk.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/instr_test-v5/rom_singles/15-brk.nes -------------------------------------------------------------------------------- /instr_test-v5/rom_singles/16-special.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/instr_test-v5/rom_singles/16-special.nes -------------------------------------------------------------------------------- /instr_test-v5/source/12-jmp_jsr.s: -------------------------------------------------------------------------------- 1 | .include "instr_test.inc" 2 | 3 | instrs: 4 | entry $4C,"JMP" 5 | entry $20,"JSR" 6 | instrs_size = * - instrs 7 | 8 | instr_template: 9 | jsr :+ 10 | inx 11 | : inx 12 | jmp instr_done 13 | instr_template_size = * - instr_template 14 | 15 | operand = in_a 16 | 17 | .define set_in set_paxyso 18 | .define check_out check_paxyso 19 | 20 | .include "instr_test_end.s" 21 | 22 | test_values: 23 | test_normal 24 | rts 25 | 26 | correct_checksums: 27 | .dword $4F91B466 28 | .dword $D794E018 29 | -------------------------------------------------------------------------------- /instr_test-v5/source/13-rts.s: -------------------------------------------------------------------------------- 1 | .include "instr_test.inc" 2 | 3 | instrs: 4 | entry $60,"RTS" 5 | instrs_size = * - instrs 6 | 7 | instr_template: 8 | rts 9 | inx 10 | inx 11 | jmp instr_done 12 | instr_template_size = * - instr_template 13 | 14 | operand = in_a 15 | 16 | .define check_out check_paxyso 17 | 18 | .macro set_in 19 | ; Put return address on stack 20 | ldx in_s 21 | inx 22 | lda #<(instr+1) 23 | sta $100,x 24 | inx 25 | lda #>(instr+1) 26 | sta $100,x 27 | 28 | set_paxyso 29 | .endmacro 30 | 31 | .include "instr_test_end.s" 32 | 33 | test_values: 34 | test_normal 35 | rts 36 | 37 | correct_checksums: 38 | .dword $E1EB954A 39 | -------------------------------------------------------------------------------- /instr_test-v5/source/14-rti.s: -------------------------------------------------------------------------------- 1 | .include "instr_test.inc" 2 | 3 | instrs: 4 | entry $40,"RTI" 5 | instrs_size = * - instrs 6 | 7 | instr_template: 8 | rti 9 | inx 10 | inx 11 | jmp instr_done 12 | instr_template_size = * - instr_template 13 | 14 | zp_res operand 15 | 16 | .define check_out check_paxyso 17 | 18 | .macro set_in 19 | ; Put return address and P on stack 20 | ldx in_s 21 | inx 22 | lda operand 23 | sta $100,x 24 | inx 25 | lda #<(instr+1) 26 | sta $100,x 27 | inx 28 | lda #>(instr+1) 29 | sta $100,x 30 | 31 | set_paxyso 32 | .endmacro 33 | 34 | .include "instr_test_end.s" 35 | 36 | test_values: 37 | test_normal 38 | rts 39 | 40 | correct_checksums: 41 | .dword $F4B30222 42 | -------------------------------------------------------------------------------- /instr_test-v5/source/15-brk.s: -------------------------------------------------------------------------------- 1 | CUSTOM_IRQ = 1 2 | .include "instr_test.inc" 3 | 4 | zp_byte p_inside_brk 5 | 6 | irq: pha 7 | php 8 | pla 9 | sta p_inside_brk 10 | pla 11 | rti 12 | 13 | instrs: 14 | entry $00,"BRK" 15 | instrs_size = * - instrs 16 | 17 | instr_template: 18 | brk 19 | inx 20 | inx 21 | jmp instr_done 22 | instr_template_size = * - instr_template 23 | 24 | operand = in_a 25 | 26 | .macro set_in 27 | set_stack 28 | set_paxyso 29 | .endmacro 30 | 31 | .macro check_out 32 | ; By looking at stack, we verify 33 | ; values BRK pushed on it 34 | check_paxyso 35 | check_stack 36 | lda p_inside_brk 37 | jsr update_crc_fast 38 | .endmacro 39 | 40 | .include "instr_test_end.s" 41 | 42 | test_values: 43 | test_normal 44 | rts 45 | 46 | correct_checksums: 47 | .dword $1392F39C 48 | -------------------------------------------------------------------------------- /instr_test-v5/source/common/ascii.chr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/instr_test-v5/source/common/ascii.chr -------------------------------------------------------------------------------- /instr_test-v5/source/common/bootloader.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/instr_test-v5/source/common/bootloader.bin -------------------------------------------------------------------------------- /instr_test-v5/source/common/shell.inc: -------------------------------------------------------------------------------- 1 | ; Included at beginning of program 2 | 3 | .ifdef CUSTOM_PREFIX 4 | .include "custom_prefix.s" 5 | .endif 6 | 7 | ; Sub-test in a multi-test ROM 8 | .ifdef BUILD_MULTI 9 | .include "build_multi.s" 10 | .else 11 | 12 | ; NSF music file 13 | .ifdef BUILD_NSF 14 | .include "build_nsf.s" 15 | .endif 16 | 17 | ; Devcart 18 | .ifdef BUILD_DEVCART 19 | .include "build_devcart.s" 20 | .endif 21 | 22 | ; NES internal RAM 23 | .ifdef BUILD_NOCART 24 | .include "build_nocart.s" 25 | .endif 26 | 27 | ; NES ROM (default) 28 | .ifndef SHELL_INCLUDED 29 | .include "build_rom.s" 30 | .endif 31 | 32 | .endif ; .ifdef BUILD_MULTI 33 | -------------------------------------------------------------------------------- /instr_timing/instr_timing.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/instr_timing/instr_timing.nes -------------------------------------------------------------------------------- /instr_timing/rom_singles/1-instr_timing.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/instr_timing/rom_singles/1-instr_timing.nes -------------------------------------------------------------------------------- /instr_timing/rom_singles/2-branch_timing.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/instr_timing/rom_singles/2-branch_timing.nes -------------------------------------------------------------------------------- /instr_timing/source/common/ascii.chr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/instr_timing/source/common/ascii.chr -------------------------------------------------------------------------------- /instr_timing/source/common/devcart.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/instr_timing/source/common/devcart.bin -------------------------------------------------------------------------------- /instr_timing/source/common/neshw.inc: -------------------------------------------------------------------------------- 1 | ; NES I/O locations and masks 2 | 3 | ; Clocks per second 4 | .ifndef CLOCK_RATE 5 | CLOCK_RATE = 1789773 ; NTSC 6 | ; CLOCK_RATE = 1662607 ; PAL 7 | .endif 8 | 9 | .ifndef BUILD_NSF 10 | 11 | ; PPU 12 | PPUCTRL = $2000 13 | PPUMASK = $2001 14 | PPUSTATUS = $2002 15 | SPRADDR = $2003 16 | SPRDATA = $2004 17 | PPUSCROLL = $2005 18 | PPUADDR = $2006 19 | PPUDATA = $2007 20 | SPRDMA = $4014 21 | 22 | PPUCTRL_NMI = $80 23 | PPUMASK_BG0 = $0A 24 | PPUCTRL_8X8 = $00 25 | PPUCTRL_8X16 = $20 26 | PPUMASK_SPR = $14 27 | PPUMASK_BG0CLIP = $08 28 | 29 | .endif 30 | 31 | ; APU 32 | SNDCHN = $4015 33 | JOY1 = $4016 34 | JOY2 = $4017 35 | SNDMODE = $4017 36 | 37 | SNDMODE_NOIRQ = $40 38 | 39 | .if CLOCK_RATE = 1789773 40 | PPU_FRAMELEN = 29781 41 | .elseif CLOCK_RATE = 1662607 42 | PPU_FRAMELEN = 33248 43 | .endif 44 | -------------------------------------------------------------------------------- /instr_timing/source/common/shell.inc: -------------------------------------------------------------------------------- 1 | ; Included at beginning of program 2 | 3 | .ifdef CUSTOM_PREFIX 4 | .include "custom_prefix.s" 5 | .endif 6 | 7 | ; Sub-test in a multi-test ROM 8 | .ifdef BUILD_MULTI 9 | .include "build_multi.s" 10 | .else 11 | 12 | ; NSF music file 13 | .ifdef BUILD_NSF 14 | .include "build_nsf.s" 15 | .endif 16 | 17 | ; Devcart 18 | .ifdef BUILD_DEVCART 19 | .include "build_devcart.s" 20 | .endif 21 | 22 | ; NES internal RAM 23 | .ifdef BUILD_NOCART 24 | .include "build_nocart.s" 25 | .endif 26 | 27 | ; NES ROM (default) 28 | .ifndef SHELL_INCLUDED 29 | .include "build_rom.s" 30 | .endif 31 | 32 | .endif ; .ifdef BUILD_MULTI 33 | -------------------------------------------------------------------------------- /m22chrbankingtest/0-127.chr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/m22chrbankingtest/0-127.chr -------------------------------------------------------------------------------- /m22chrbankingtest/0-127.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/m22chrbankingtest/0-127.nes -------------------------------------------------------------------------------- /m22chrbankingtest/0-127.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/m22chrbankingtest/0-127.png -------------------------------------------------------------------------------- /m22chrbankingtest/0-127.sh: -------------------------------------------------------------------------------- 1 | cl65 -t nes -c --create-dep 0-127.c.d -Cl -I ../../knes/knes -Oris --listing 0-127.c.lst -o 0-127.o 0-127.c 2 | cl65 -t nes -c --create-dep 0-127h.asm.d -Cl -I ../../knes/knes -Oris --listing 0-127h.asm.lst -o 0-127h.o 0-127h.asm 3 | cl65 -t none --mapfile 0-127.map -Wl --dbgfile,0-127.nes.dbg -o 0-127.nes -C 0-127.cfg 0-127h.o 0-127.o ../../knes/knes/knes.lib 4 | -------------------------------------------------------------------------------- /m22chrbankingtest/0-127h.asm: -------------------------------------------------------------------------------- 1 | .segment "HEADER" 2 | MAPPER = 22 3 | SUBMAPPER = 0 4 | 5 | .byte "NES", $1a ; iNES header identifier 6 | .byte 1 ; PRG ROM - 16KiB = 1*16 7 | .byte 16 ; CHR ROM - 128KiB = 16*8 8 | .byte ((MAPPER&15)<<4) ; 4:mapper 0 &9=1:vertical &4:noTrainer &2:noBatt 9 | .byte ((MAPPER&240))|$08 ; 4:mapper 00 &C=8:NES2 &2:notVS &1:notPC10 10 | .byte ((MAPPER&3840)>>8)|(SUBMAPPER<<4) ; 4:mapper 000 4:submapper 0 11 | .byte $00 ; > 4MB PRG, > 2MB CHR 12 | .byte $00 ; no NV nor volatile PRG RAM 13 | .byte $00 ; no NV CHRRAM, no volatile CHRRAM 14 | .byte 0 ; NTSC preferred 15 | .byte 0 ; nothing for VS 16 | .byte 0,0 ; padding 17 | 18 | .RODATA 19 | 20 | .segment "CHR" 21 | .incbin "0-127.chr" 22 | -------------------------------------------------------------------------------- /mmc3_irq_tests/1.Clocking.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/mmc3_irq_tests/1.Clocking.nes -------------------------------------------------------------------------------- /mmc3_irq_tests/2.Details.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/mmc3_irq_tests/2.Details.nes -------------------------------------------------------------------------------- /mmc3_irq_tests/3.A12_clocking.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/mmc3_irq_tests/3.A12_clocking.nes -------------------------------------------------------------------------------- /mmc3_irq_tests/4.Scanline_timing.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/mmc3_irq_tests/4.Scanline_timing.nes -------------------------------------------------------------------------------- /mmc3_irq_tests/5.MMC3_rev_A.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/mmc3_irq_tests/5.MMC3_rev_A.nes -------------------------------------------------------------------------------- /mmc3_irq_tests/6.MMC3_rev_B.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/mmc3_irq_tests/6.MMC3_rev_B.nes -------------------------------------------------------------------------------- /mmc3_irq_tests/source/5.MMC3_rev_A.asm: -------------------------------------------------------------------------------- 1 | ; Tests MMC3 revision A differences 2 | 3 | .include "prefix_mmc3_validation.a" 4 | 5 | test_name: 6 | .db "MMC3 IRQ COUNTER REVISION A",0 7 | 8 | reset: 9 | jsr begin_mmc3_tests 10 | 11 | lda #2;) IRQ should be set when reloading to 0 after clear 12 | ldx #0 13 | jsr begin_counter_test 14 | jsr clock_counter ; 0 15 | jsr should_be_set 16 | 17 | lda #3;) IRQ shouldn't occur when reloading after counter normally reaches 0 18 | ldx #1 19 | jsr begin_counter_test 20 | jsr clock_counter ; 1 21 | lda #0 22 | jsr set_reload 23 | jsr clock_counter ; 0 24 | jsr clear_irq 25 | jsr clock_counter ; 0 26 | jsr should_be_clear 27 | ldx #255 28 | 29 | jmp tests_passed 30 | 31 | -------------------------------------------------------------------------------- /mmc3_irq_tests/source/prefix_cpu.asm: -------------------------------------------------------------------------------- 1 | .include "validation.a" 2 | 3 | ; Arrange for IRQ to be pending on return. 4 | ; Preserved: A, X, Y 5 | setup_pending_irq: 6 | sei 7 | pha 8 | lda #$40 ; clear frame irq flag 9 | sta $4017 10 | lda #$00 ; begin mode 0 11 | sta $4017 12 | 13 | lda #40 ; wait for irq flag to be set 14 | jsr delay_msec 15 | pla 16 | rts 17 | .code 18 | 19 | -------------------------------------------------------------------------------- /mmc3_irq_tests/source/prefix_mmc3_validation.asm: -------------------------------------------------------------------------------- 1 | .include "prefix_mmc3.a" 2 | 3 | begin_counter_test: 4 | sta result 5 | jsr clock_counter ; avoid pathological reload behavior 6 | jsr clock_counter 7 | txa 8 | jsr set_reload 9 | jsr clear_counter 10 | jsr clear_irq 11 | rts 12 | .code 13 | 14 | should_be_clear: 15 | jsr get_pending 16 | cpx #0 17 | jsr error_if_ne 18 | jsr clear_irq 19 | rts 20 | 21 | should_be_set: 22 | jsr get_pending 23 | cpx #1 24 | jsr error_if_ne 25 | jsr clear_irq 26 | rts 27 | 28 | -------------------------------------------------------------------------------- /mmc3_irq_tests/source/prefix_swap.asm: -------------------------------------------------------------------------------- 1 | .include "prefix_cpu.a" 2 | .include "util.a" 3 | .include "ppu_sync.a" 4 | -------------------------------------------------------------------------------- /mmc3_irq_tests/source/runtime_swapcart.asm: -------------------------------------------------------------------------------- 1 | .include "delays.a" 2 | .include "serial.a" 3 | .include "debug.a" 4 | .include "ppu_util.a" 5 | 6 | debug_newline: 7 | lda #13 8 | debug_char: 9 | debug_char_no_wait: 10 | jmp serial_write 11 | .code 12 | 13 | init_runtime: 14 | rts 15 | .code 16 | 17 | forever: 18 | jmp $0700 19 | .code 20 | 21 | .default main = reset 22 | 23 | .org $fffa 24 | .dw nmi 25 | .dw main 26 | .dw irq 27 | -------------------------------------------------------------------------------- /mmc3_test/1-clocking.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/mmc3_test/1-clocking.nes -------------------------------------------------------------------------------- /mmc3_test/2-details.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/mmc3_test/2-details.nes -------------------------------------------------------------------------------- /mmc3_test/3-A12_clocking.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/mmc3_test/3-A12_clocking.nes -------------------------------------------------------------------------------- /mmc3_test/4-scanline_timing.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/mmc3_test/4-scanline_timing.nes -------------------------------------------------------------------------------- /mmc3_test/5-MMC3.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/mmc3_test/5-MMC3.nes -------------------------------------------------------------------------------- /mmc3_test/6-MMC6.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/mmc3_test/6-MMC6.nes -------------------------------------------------------------------------------- /mmc3_test/source/5-MMC3.s: -------------------------------------------------------------------------------- 1 | ; Tests MMC3-specifics 2 | 3 | .include "test_mmc3.inc" 4 | 5 | main: 6 | jsr begin_mmc3_tests 7 | 8 | set_test 2,"Should reload and set IRQ every clock when reload is 0" 9 | ldx #0 10 | jsr begin_counter_test 11 | jsr clock_counter ; 0 12 | jsr should_be_set 13 | jsr clock_counter ; 0 14 | jsr should_be_set 15 | jsr clock_counter ; 0 16 | jsr should_be_set 17 | 18 | set_test 3,"IRQ should be set when counter is 0 after reloading" 19 | ldx #1 20 | jsr begin_counter_test 21 | jsr clock_counter ; 1 22 | jsr clock_counter ; 0 23 | jsr clear_irq 24 | lda #0 25 | jsr set_reload 26 | jsr clock_counter ; 0 27 | jsr should_be_set 28 | 29 | 30 | jmp tests_passed 31 | 32 | -------------------------------------------------------------------------------- /mmc3_test/source/6-MMC6.s: -------------------------------------------------------------------------------- 1 | ; Tests MMC6-specific behavior. Some MMC3 chips also have this behavior, 2 | ; though their markings appear identical to those that have normal 3 | ; MMC3 behavior. My copy of Crystalis in particular behaves this way, 4 | ; but not my copy of Super Mario Bros. 3, even though both have a chip 5 | ; marked MMC3B. 6 | 7 | .include "test_mmc3.inc" 8 | 9 | main: 10 | jsr begin_mmc3_tests 11 | 12 | set_test 2,"IRQ should be set when reloading to 0 after clear" 13 | ldx #0 14 | jsr begin_counter_test 15 | jsr clock_counter ; 0 16 | jsr should_be_set 17 | 18 | set_test 3,"IRQ shouldn't occur when reloading after counter normally reaches 0" 19 | ldx #1 20 | jsr begin_counter_test 21 | jsr clock_counter ; 1 22 | lda #0 23 | jsr set_reload 24 | jsr clock_counter ; 0 25 | jsr clear_irq 26 | jsr clock_counter ; 0 27 | jsr should_be_clear 28 | ldx #255 29 | 30 | jmp tests_passed 31 | 32 | -------------------------------------------------------------------------------- /mmc3_test/source/common/ascii.chr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/mmc3_test/source/common/ascii.chr -------------------------------------------------------------------------------- /mmc3_test/source/common/devcart.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/mmc3_test/source/common/devcart.bin -------------------------------------------------------------------------------- /mmc3_test/source/common/neshw.inc: -------------------------------------------------------------------------------- 1 | ; NES I/O locations and masks 2 | 3 | ; Clocks per second 4 | .ifndef CLOCK_RATE 5 | CLOCK_RATE = 1789773 ; NTSC 6 | ; CLOCK_RATE = 1662607 ; PAL 7 | .endif 8 | 9 | .ifndef BUILD_NSF 10 | 11 | ; PPU 12 | PPUCTRL = $2000 13 | PPUMASK = $2001 14 | PPUSTATUS = $2002 15 | SPRADDR = $2003 16 | SPRDATA = $2004 17 | PPUSCROLL = $2005 18 | PPUADDR = $2006 19 | PPUDATA = $2007 20 | SPRDMA = $4014 21 | 22 | PPUCTRL_NMI = $80 23 | PPUMASK_BG0 = $0A 24 | PPUCTRL_8X8 = $00 25 | PPUCTRL_8X16 = $20 26 | PPUMASK_SPR = $14 27 | PPUMASK_BG0CLIP = $08 28 | 29 | .endif 30 | 31 | ; APU 32 | SNDCHN = $4015 33 | JOY1 = $4016 34 | JOY2 = $4017 35 | SNDMODE = $4017 36 | 37 | SNDMODE_NOIRQ = $40 38 | 39 | .if CLOCK_RATE = 1789773 40 | PPU_FRAMELEN = 29781 41 | .elseif CLOCK_RATE = 1662607 42 | PPU_FRAMELEN = 33248 43 | .endif 44 | -------------------------------------------------------------------------------- /mmc3_test/source/common/shell.inc: -------------------------------------------------------------------------------- 1 | ; Included at beginning of program 2 | 3 | .ifdef CUSTOM_PREFIX 4 | .include "custom_prefix.s" 5 | .endif 6 | 7 | ; Sub-test in a multi-test ROM 8 | .ifdef BUILD_MULTI 9 | .include "build_multi.s" 10 | .else 11 | 12 | ; NSF music file 13 | .ifdef BUILD_NSF 14 | .include "build_nsf.s" 15 | .endif 16 | 17 | ; Devcart 18 | .ifdef BUILD_DEVCART 19 | .include "build_devcart.s" 20 | .endif 21 | 22 | ; NES internal RAM 23 | .ifdef BUILD_NOCART 24 | .include "build_nocart.s" 25 | .endif 26 | 27 | ; NES ROM (default) 28 | .ifndef SHELL_INCLUDED 29 | .include "build_rom.s" 30 | .endif 31 | 32 | .endif ; .ifdef BUILD_MULTI 33 | -------------------------------------------------------------------------------- /mmc3_test_2/rom_singles/1-clocking.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/mmc3_test_2/rom_singles/1-clocking.nes -------------------------------------------------------------------------------- /mmc3_test_2/rom_singles/2-details.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/mmc3_test_2/rom_singles/2-details.nes -------------------------------------------------------------------------------- /mmc3_test_2/rom_singles/3-A12_clocking.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/mmc3_test_2/rom_singles/3-A12_clocking.nes -------------------------------------------------------------------------------- /mmc3_test_2/rom_singles/4-scanline_timing.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/mmc3_test_2/rom_singles/4-scanline_timing.nes -------------------------------------------------------------------------------- /mmc3_test_2/rom_singles/5-MMC3.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/mmc3_test_2/rom_singles/5-MMC3.nes -------------------------------------------------------------------------------- /mmc3_test_2/rom_singles/6-MMC3_alt.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/mmc3_test_2/rom_singles/6-MMC3_alt.nes -------------------------------------------------------------------------------- /mmc3_test_2/source/5-MMC3.s: -------------------------------------------------------------------------------- 1 | ; Tests MMC3-specifics 2 | 3 | .include "test_mmc3.inc" 4 | 5 | main: 6 | jsr begin_mmc3_tests 7 | 8 | set_test 2,"Should reload and set IRQ every clock when reload is 0" 9 | ldx #0 10 | jsr begin_counter_test 11 | jsr clock_counter ; 0 12 | jsr clock_counter ; 0 13 | jsr should_be_set 14 | jsr clock_counter ; 0 15 | jsr should_be_set 16 | jsr clock_counter ; 0 17 | jsr should_be_set 18 | 19 | set_test 3,"IRQ should be set when counter is 0 after reloading, even when counter was 0 before reloading" 20 | ldx #1 21 | jsr begin_counter_test 22 | jsr clock_counter ; 1 23 | jsr clock_counter ; 0 24 | jsr clear_irq 25 | lda #0 26 | jsr set_reload 27 | jsr clock_counter ; 0 28 | jsr should_be_set 29 | 30 | jmp tests_passed 31 | 32 | -------------------------------------------------------------------------------- /mmc3_test_2/source/common/ascii.chr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/mmc3_test_2/source/common/ascii.chr -------------------------------------------------------------------------------- /mmc3_test_2/source/common/devcart.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/mmc3_test_2/source/common/devcart.bin -------------------------------------------------------------------------------- /mmc3_test_2/source/common/shell.inc: -------------------------------------------------------------------------------- 1 | ; Included at beginning of program 2 | 3 | .ifdef CUSTOM_PREFIX 4 | .include "custom_prefix.s" 5 | .endif 6 | 7 | ; Sub-test in a multi-test ROM 8 | .ifdef BUILD_MULTI 9 | .include "build_multi.s" 10 | .else 11 | 12 | ; NSF music file 13 | .ifdef BUILD_NSF 14 | .include "build_nsf.s" 15 | .endif 16 | 17 | ; Devcart 18 | .ifdef BUILD_DEVCART 19 | .include "build_devcart.s" 20 | .endif 21 | 22 | ; NES internal RAM 23 | .ifdef BUILD_NOCART 24 | .include "build_nocart.s" 25 | .endif 26 | 27 | ; NES ROM (default) 28 | .ifndef SHELL_INCLUDED 29 | .include "build_rom.s" 30 | .endif 31 | 32 | .endif ; .ifdef BUILD_MULTI 33 | -------------------------------------------------------------------------------- /mmc5test/mmc5test.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/mmc5test/mmc5test.nes -------------------------------------------------------------------------------- /mmc5test_v2/mmc5test.chr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/mmc5test_v2/mmc5test.chr -------------------------------------------------------------------------------- /mmc5test_v2/mmc5test.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/mmc5test_v2/mmc5test.nes -------------------------------------------------------------------------------- /mmc5test_v2/mmc5test_v2.prg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/mmc5test_v2/mmc5test_v2.prg -------------------------------------------------------------------------------- /nes15-1.0.0/bin2pkb/Makefile: -------------------------------------------------------------------------------- 1 | # 2 | # 'bin2pkb' GNU Makefile 3 | # 4 | 5 | OBJS = \ 6 | ../clib/binio.o \ 7 | ../clib/packbits.o \ 8 | bin2pkb.o 9 | 10 | PROG = bin2pkb 11 | 12 | CC = gcc 13 | LFLAGS = -o $(PROG) 14 | CFLAGS = -I ../clib -Wall -Wextra -pedantic -ansi 15 | 16 | # 17 | # Targets 18 | # 19 | 20 | $(PROG): $(OBJS) 21 | $(CC) $(OBJS) $(LFLAGS) 22 | 23 | -include $(OBJS:.o=.d) 24 | 25 | %.o: %.c 26 | $(CC) $(CFLAGS) -c $*.c -o $*.o 27 | $(CC) $(CFLAGS) -MM $*.c > $*.d 28 | 29 | .PHONY: debug 30 | debug: CFLAGS += -g 31 | debug: $(PROG) 32 | 33 | .PHONY: clean 34 | clean: 35 | rm $(OBJS) $(OBJS:.o=.d) $(PROG) 36 | 37 | -------------------------------------------------------------------------------- /nes15-1.0.0/fifteen/Makefile: -------------------------------------------------------------------------------- 1 | # 2 | # 'fifteen' test GNU Makefile 3 | # 4 | 5 | INCS = \ 6 | ../nes-lib/lfsr32.inc \ 7 | fifteen.inc 8 | 9 | OBJS = \ 10 | ../nes-lib/lfsr32.o \ 11 | fifteen.o \ 12 | test.o 13 | 14 | BIN = test.bin 15 | 16 | AS65 = ca65 17 | LD65 = ld65 18 | AFLAGS65 = -l -I ../nes-lib 19 | LCONFIG = test.cfg 20 | MAPFILE = map.txt 21 | 22 | # 23 | # Targets 24 | # 25 | 26 | $(BIN): $(OBJS) 27 | $(LD65) -C $(LCONFIG) $(OBJS) -m $(MAPFILE) -o $(BIN) 28 | 29 | .PHONY: clean 30 | clean: 31 | rm $(BIN) $(OBJS) $(OBJS:.o=.lst) $(MAPFILE) 32 | 33 | %.o: %.s $(INCS) $(LCONFIG) 34 | $(AS65) $(AFLAGS65) $< -o $@ 35 | 36 | -------------------------------------------------------------------------------- /nes15-1.0.0/fifteen/test.cfg: -------------------------------------------------------------------------------- 1 | # 2 | # 'fifteen' test linker configuration 3 | # 4 | 5 | MEMORY { 6 | ZP: start = $00, size = $100, type = rw; 7 | RAM: start = $200, size = $600, type = rw; 8 | ROM: start = $8000, size = $8000, type = ro, file %O, fill = yes; 9 | } 10 | 11 | SEGMENTS { 12 | ZEROPAGE: load = ZP, type = zp; 13 | BSS: load = RAM, type = bss; 14 | CODE: load = ROM, type = ro; 15 | LFSRLIB: load = ROM, type = ro; 16 | FIFTEENLIB: load = ROM, type = ro; 17 | VECTORS: load = ROM, start = $FFFA, type = ro; 18 | } 19 | 20 | -------------------------------------------------------------------------------- /nes15-1.0.0/gfx/bgd.pal: -------------------------------------------------------------------------------- 1 | (8 -------------------------------------------------------------------------------- /nes15-1.0.0/gfx/cursor.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/nes15-1.0.0/gfx/cursor.pcx -------------------------------------------------------------------------------- /nes15-1.0.0/gfx/edges.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/nes15-1.0.0/gfx/edges.pcx -------------------------------------------------------------------------------- /nes15-1.0.0/gfx/font.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/nes15-1.0.0/gfx/font.pcx -------------------------------------------------------------------------------- /nes15-1.0.0/gfx/nums.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/nes15-1.0.0/gfx/nums.pcx -------------------------------------------------------------------------------- /nes15-1.0.0/gfx/spr.pal: -------------------------------------------------------------------------------- 1 | 08 -------------------------------------------------------------------------------- /nes15-1.0.0/gfx/tile.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/nes15-1.0.0/gfx/tile.pcx -------------------------------------------------------------------------------- /nes15-1.0.0/nes-lib/apu.inc: -------------------------------------------------------------------------------- 1 | ; 2 | ; File: apu.inc 3 | ; Namespace: apu_ / APU_ 4 | ; Code Segment: APULIB 5 | ; Copyright (c) 2011 Mathew Brenaman (see 'LICENSE' for details) 6 | ; Assembled with ca65 7 | ; 8 | ; General purpose APU library 9 | ; 10 | 11 | .ifndef APU_INC 12 | APU_INC = 1 13 | 14 | ; APU I/O locations 15 | 16 | SQ1_VOL = $4000 17 | SQ1_SWEEP = $4001 18 | SQ1_LO = $4002 19 | SQ1_HI = $4003 20 | SQ2_VOL = $4004 21 | SQ2_SWEEP = $4005 22 | SQ2_LO = $4006 23 | SQ2_HI = $4007 24 | TRI_LINEAR = $4008 25 | TRI_LO = $400A 26 | TRI_HI = $400B 27 | NOISE_VOL = $400C 28 | NOISE_LO = $400E 29 | NOISE_HI = $400F 30 | DMC_FREQ = $4010 31 | DMC_RAW = $4011 32 | DMC_START = $4012 33 | DMC_LEN = $4013 34 | SND_CHN = $4015 35 | 36 | .endif 37 | 38 | -------------------------------------------------------------------------------- /nes15-1.0.0/nes-lib/bcd16.s: -------------------------------------------------------------------------------- 1 | ; 2 | ; File: bcd16.s 3 | ; Copyright (c) 2011 Mathew Brenaman (see 'LICENSE' for details) 4 | ; Assembled with ca65 5 | ; 6 | ; Common 16-bit binary-coded decimal subroutines and data 7 | ; 8 | 9 | .include "bcd.inc" 10 | 11 | 12 | 13 | .segment "BSS" 14 | 15 | bcd_num: .res 2 16 | bcd_bin: .res 2 17 | 18 | 19 | 20 | .segment "BCDLIB" 21 | 22 | .export bcd_table_lo 23 | bcd_table_lo: 24 | .byte <1, <2, <4, <8 25 | .byte <10, <20, <40, <80 26 | .byte <100, <200, <400, <800 27 | .byte <1000, <2000, <4000, <8000 28 | 29 | .export bcd_table_hi 30 | bcd_table_hi: 31 | .byte >1, >2, >4, >8 32 | .byte >10, >20, >40, >80 33 | .byte >100, >200, >400, >800 34 | .byte >1000, >2000, >4000, >8000 35 | 36 | -------------------------------------------------------------------------------- /nes15-1.0.0/nes-lib/joy_read1.s: -------------------------------------------------------------------------------- 1 | ; 2 | ; File: joy_read1.s 3 | ; Copyright (c) 2011 Mathew Brenaman (see 'LICENSE' for details) 4 | ; Assembled with ca65 5 | ; 6 | ; 'joy_read1' subroutine 7 | ; 8 | 9 | .include "joy.inc" 10 | 11 | 12 | 13 | .segment "BSS" 14 | 15 | joy_state: .res 1 16 | 17 | 18 | 19 | .segment "JOYLIB" 20 | 21 | .proc joy_read1 22 | 23 | lda #$01 24 | sta JOY1 25 | lsr 26 | sta JOY1 27 | ror 28 | sta joy_state 29 | 30 | loop: 31 | lda JOY1 32 | and #$03 33 | cmp #$01 34 | ror joy_state 35 | bcc loop 36 | lda joy_state 37 | rts 38 | 39 | .endproc 40 | 41 | -------------------------------------------------------------------------------- /nes15-1.0.0/nes-lib/joy_repeat1.s: -------------------------------------------------------------------------------- 1 | ; 2 | ; File: joy_update1.s 3 | ; Copyright (c) 2011 Mathew Brenaman (see 'LICENSE' for details) 4 | ; Assembled with ca65 5 | ; 6 | ; 'joy_repeat1' subroutine 7 | ; 8 | ; Adapted from the source code to 'Concentration Room' by 'Damian Yerrick' 9 | ; found at: 10 | ; http://www.pineight.com/croom/ 11 | ; 12 | 13 | .include "joy.inc" 14 | 15 | 16 | 17 | .segment "BSS" 18 | 19 | joy_repeat: .res 1 20 | joy_timer: .res 1 21 | 22 | 23 | 24 | .segment "JOYLIB" 25 | 26 | .proc joy_repeat1 27 | 28 | lda joy_held 29 | beq done 30 | lda joy_pressed 31 | beq cont 32 | sta joy_repeat 33 | lda #JOY_REP_DELAY 34 | sta joy_timer 35 | bne done 36 | 37 | cont: 38 | dec joy_timer 39 | bne done 40 | lda #JOY_REP_SPEED 41 | sta joy_timer 42 | lda joy_repeat 43 | and joy_held 44 | ora joy_pressed 45 | sta joy_pressed 46 | 47 | done: 48 | rts 49 | 50 | .endproc 51 | 52 | -------------------------------------------------------------------------------- /nes15-1.0.0/nes-lib/joy_update1.s: -------------------------------------------------------------------------------- 1 | ; 2 | ; File: joy_update1.s 3 | ; Copyright (c) 2011 Mathew Brenaman (see 'LICENSE' for details) 4 | ; Assembled with ca65 5 | ; 6 | ; 'joy_update1' subroutine 7 | ; 8 | ; Adapted from the source code by 'blargg' posted in the thread 'Button 9 | ; Handling Headaches' at: 10 | ; http://nesdev.parodius.com/bbs/ 11 | ; 12 | 13 | .include "joy.inc" 14 | 15 | 16 | 17 | .segment "BSS" 18 | 19 | joy_held: .res 1 20 | joy_pressed: .res 1 21 | joy_released: .res 1 22 | 23 | 24 | 25 | .segment "JOYLIB" 26 | 27 | .proc joy_update1 28 | 29 | jsr joy_read1 30 | tay 31 | ora joy_held 32 | eor joy_held 33 | sta joy_pressed 34 | tya 35 | eor joy_held 36 | and joy_held 37 | sta joy_released 38 | sty joy_held 39 | rts 40 | 41 | .endproc 42 | 43 | -------------------------------------------------------------------------------- /nes15-1.0.0/nes-lib/lfsr32.inc: -------------------------------------------------------------------------------- 1 | ; 2 | ; File: lfsr32.inc 3 | ; Namespace: lfsr_ / LFSR_ 4 | ; Code Segment: LFSRLIB 5 | ; Copyright (c) 2011 Mathew Brenaman (see 'LICENSE' for details) 6 | ; Assembled with ca65 7 | ; 8 | ; 32-bit Galois Linear Feedback Shift Register 9 | ; 10 | 11 | .ifndef LFSR32_INC 12 | LFSR32_INC = 1 13 | 14 | ; Used to hold the current state of the LFSR. It is the user's responsibility 15 | ; to set the initial state. 16 | 17 | .globalzp lfsr32 18 | 19 | 20 | 21 | ; 22 | ; 32-bit Galois LFSR with taps at 32, 31, 29, and 1. 23 | ; 24 | ; In: 25 | ; y = The number of states to shift through 26 | ; 27 | ; Preserved: x 28 | ; Destroyed: a, y 29 | ; 30 | .global lfsr32_next 31 | 32 | .endif 33 | 34 | -------------------------------------------------------------------------------- /nes15-1.0.0/nes-lib/lfsr32.s: -------------------------------------------------------------------------------- 1 | ; 2 | ; File: lfsr32.s 3 | ; Copyright (c) 2011 Mathew Brenaman (see 'LICENSE' for details) 4 | ; Assembled with ca65 5 | ; 6 | ; 'lfsr32_next' subroutine 7 | ; 8 | 9 | .include "lfsr32.inc" 10 | 11 | 12 | 13 | .segment "ZEROPAGE" 14 | 15 | lfsr32: .res 4 16 | 17 | 18 | 19 | .segment "LFSRLIB" 20 | 21 | .proc lfsr32_next 22 | 23 | lsr lfsr32 + 3 24 | ror lfsr32 + 2 25 | ror lfsr32 + 1 26 | ror lfsr32 27 | bcc zero 28 | lda lfsr32 + 3 ; Taps 32, 31, and 29 29 | eor #$D0 30 | sta lfsr32 + 3 31 | lda lfsr32 32 | eor #$01 ; Tap 1 33 | sta lfsr32 34 | 35 | zero: 36 | dey 37 | bne lfsr32_next 38 | rts 39 | 40 | .endproc 41 | 42 | -------------------------------------------------------------------------------- /nes15-1.0.0/nes-lib/oam_clear.s: -------------------------------------------------------------------------------- 1 | ; 2 | ; File: oam_clear.s 3 | ; Copyright (c) 2011 Mathew Brenaman (see 'LICENSE' for details) 4 | ; Assembled with ca65 5 | ; 6 | ; 'oam_clear' subroutine 7 | ; 8 | 9 | .include "oam.inc" 10 | 11 | 12 | 13 | .segment "OAMLIB" 14 | 15 | .proc oam_clear 16 | 17 | ldx #0 18 | lda #248 19 | 20 | loop: 21 | sta oam_buff + OAM_Y, x 22 | inx 23 | inx 24 | inx 25 | inx 26 | bne loop 27 | rts 28 | 29 | .endproc 30 | 31 | -------------------------------------------------------------------------------- /nes15-1.0.0/nes-lib/pkb.s: -------------------------------------------------------------------------------- 1 | ; 2 | ; File: pkb.s 3 | ; Copyright (c) 2011 Mathew Brenaman (see 'LICENSE' for details) 4 | ; Assembled with ca65 5 | ; 6 | ; Common Packbits decoding subroutines and data 7 | ; 8 | 9 | .include "pkb.inc" 10 | 11 | 12 | 13 | .segment "ZEROPAGE" 14 | 15 | pkb_src: .res 2 16 | 17 | -------------------------------------------------------------------------------- /nes15-1.0.0/nes-lib/vrub.s: -------------------------------------------------------------------------------- 1 | ; 2 | ; File: vrub.s 3 | ; Copyright (c) 2011 Mathew Brenaman (see 'LICENSE' for details) 4 | ; Assembled with ca65 5 | ; 6 | ; Common VRUB subroutines and data 7 | ; 8 | 9 | .include "vrub.inc" 10 | 11 | 12 | 13 | .segment "ZEROPAGE" 14 | 15 | vrub_end: .res 1 16 | 17 | -------------------------------------------------------------------------------- /nes15-1.0.0/nes15-NTSC.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/nes15-1.0.0/nes15-NTSC.nes -------------------------------------------------------------------------------- /nes15-1.0.0/nes15-PAL.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/nes15-1.0.0/nes15-PAL.nes -------------------------------------------------------------------------------- /nes15-1.0.0/pcx2chr/Makefile: -------------------------------------------------------------------------------- 1 | # 2 | # 'pcx2chr' GNU Makefile 3 | # 4 | 5 | OBJS = \ 6 | ../clib/binio.o \ 7 | ../clib/img8.o \ 8 | ../clib/img8_pcx.o \ 9 | ../clib/neschr.o \ 10 | pcx2chr.o 11 | 12 | PROG = pcx2chr 13 | 14 | CC = gcc 15 | LFLAGS = -o $(PROG) 16 | CFLAGS = -I ../clib -Wall -Wextra -pedantic -ansi 17 | 18 | # 19 | # Targets 20 | # 21 | 22 | $(PROG): $(OBJS) 23 | $(CC) $(OBJS) $(LFLAGS) 24 | 25 | -include $(OBJS:.o=.d) 26 | 27 | %.o: %.c 28 | $(CC) $(CFLAGS) -c $*.c -o $*.o 29 | $(CC) $(CFLAGS) -MM $*.c > $*.d 30 | 31 | .PHONY: debug 32 | debug: CFLAGS += -g 33 | debug: $(PROG) 34 | 35 | .PHONY: clean 36 | clean: 37 | rm $(OBJS) $(OBJS:.o=.d) $(PROG) 38 | 39 | -------------------------------------------------------------------------------- /nes15-1.0.0/snd/sfx0.s: -------------------------------------------------------------------------------- 1 | ; 2 | ; File: sfx0.s 3 | ; Copyright (c) 2011 Mathew Brenaman (see 'LICENSE' for details) 4 | ; Assembled with ca65 5 | ; 6 | ; Tile movement SFX 7 | ; 8 | 9 | .include "muse.inc" 10 | 11 | .include "snd.inc" 12 | 13 | 14 | 15 | .segment "CODE" 16 | 17 | .export snd_sfx0 18 | .proc snd_sfx0 19 | 20 | .byte 1 21 | .byte MUSE_SFX3 22 | .addr stream0 23 | .byte $80 24 | 25 | 26 | 27 | stream0: 28 | .byte MUSE_SET_ENV, SND1_ENV0 29 | .byte MUSE_SET_TRANS, 0 30 | 31 | .byte MUSE_DS | MUSE_D8 32 | .byte MUSE_END 33 | 34 | .endproc 35 | 36 | -------------------------------------------------------------------------------- /nes15-1.0.0/snd/sfx1.s: -------------------------------------------------------------------------------- 1 | ; 2 | ; File: sfx1.s 3 | ; Copyright (c) 2011 Mathew Brenaman (see 'LICENSE' for details) 4 | ; Assembled with ca65 5 | ; 6 | ; Play paused SFX 7 | ; 8 | 9 | .include "muse.inc" 10 | 11 | .include "snd.inc" 12 | 13 | 14 | 15 | .segment "CODE" 16 | 17 | .export snd_sfx1 18 | .proc snd_sfx1 19 | 20 | .byte 1 21 | .byte MUSE_SFX1 22 | .addr stream0 23 | .byte $80 24 | 25 | 26 | 27 | stream0: 28 | .byte MUSE_SET_ENV, SND3_ENV0 29 | .byte MUSE_SET_TRANS, 12 * 2 + 3 30 | 31 | .byte MUSE_BB | MUSE_8 32 | .byte MUSE_FH | MUSE_8 33 | .byte MUSE_DH | MUSE_8 34 | .byte MUSE_BBH | MUSE_2 35 | .byte MUSE_END 36 | 37 | .endproc 38 | 39 | -------------------------------------------------------------------------------- /nes15-1.0.0/snd/snd.inc: -------------------------------------------------------------------------------- 1 | ; 2 | ; File: snd.inc 3 | ; Namespace: snd_ / SND_ 4 | ; Code Segment: CODE 5 | ; Copyright (c) 2011 Mathew Brenaman (see 'LICENSE' for details) 6 | ; Assembled with ca65 7 | ; 8 | ; Music and sound effects data module 9 | ; 10 | 11 | .ifndef SND_INC 12 | SND_INC = 1 13 | 14 | ; Available music and sound effects 15 | 16 | .enum 17 | 18 | SND_MUS0 19 | SND_MUS1 20 | SND_NUM_MUS 21 | SND_SFX0 = SND_NUM_MUS 22 | SND_SFX1 23 | 24 | .endenum 25 | 26 | ; Available register envelopes 27 | 28 | .enum 29 | 30 | SND0_ENV0 31 | SND0_ENV1 32 | SND0_ENV2 33 | SND1_ENV0 34 | SND3_ENV0 35 | 36 | .endenum 37 | 38 | .endif 39 | 40 | -------------------------------------------------------------------------------- /nes15-1.0.0/src/header.s: -------------------------------------------------------------------------------- 1 | ; 2 | ; File: header.inc 3 | ; Copyright (c) 2011 Mathew Brenaman (see 'LICENSE' for details) 4 | ; Assembled with ca65 5 | ; 6 | ; NROM-128 iNES header 7 | ; 8 | 9 | .segment "INESHDR" 10 | 11 | .byte "NES", $1A 12 | .byte $01 ; 1 16k bank of PRGROM 13 | .byte $01 ; 1 8k back of CHRROM 14 | .byte $01, $00 ; Mapper 0 with vertical mirroring 15 | .byte $00 16 | 17 | -------------------------------------------------------------------------------- /nes15-1.0.0/src/play.inc: -------------------------------------------------------------------------------- 1 | ; 2 | ; File: play.inc 3 | ; Namespace: play_ / PLAY_ 4 | ; Code Segment: CODE 5 | ; Copyright (c) 2011 Mathew Brenaman (see 'LICENSE' for details) 6 | ; Assembled with ca65 7 | ; 8 | ; Playing game state module 9 | ; 10 | 11 | .ifndef PLAY_INC 12 | PLAY_INC = 1 13 | 14 | ; 15 | ; Initializes the playing game state. 16 | ; 17 | ; Destroyed: Assume everything 18 | ; 19 | .global play_init 20 | 21 | ; 22 | ; Updates the playing game state. 23 | ; 24 | ; Destroyed: Assume everything 25 | ; 26 | .global play_update 27 | 28 | .endif 29 | 30 | -------------------------------------------------------------------------------- /nes15-1.0.0/src/title.inc: -------------------------------------------------------------------------------- 1 | ; 2 | ; File: title.inc 3 | ; Namespace: title_ / TITLE_ 4 | ; Code Segment: CODE 5 | ; Copyright (c) 2011 Mathew Brenaman (see 'LICENSE' for details) 6 | ; Assembled with ca65 7 | ; 8 | ; Title screen state module 9 | ; 10 | 11 | .ifndef TITLE_INC 12 | TITLE_INC = 1 13 | 14 | ; 15 | ; Initializes the title screen state. 16 | ; 17 | ; Destroyed: Assume everything 18 | ; 19 | .global title_init 20 | 21 | ; 22 | ; Updates the title screen state. 23 | ; 24 | ; Destroyed: Assume everything 25 | ; 26 | .global title_update 27 | 28 | .endif 29 | 30 | -------------------------------------------------------------------------------- /nes_instr_test/nsf_singles/01-implied.nsf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/nes_instr_test/nsf_singles/01-implied.nsf -------------------------------------------------------------------------------- /nes_instr_test/nsf_singles/02-immediate.nsf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/nes_instr_test/nsf_singles/02-immediate.nsf -------------------------------------------------------------------------------- /nes_instr_test/nsf_singles/03-zero_page.nsf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/nes_instr_test/nsf_singles/03-zero_page.nsf -------------------------------------------------------------------------------- /nes_instr_test/nsf_singles/04-zp_xy.nsf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/nes_instr_test/nsf_singles/04-zp_xy.nsf -------------------------------------------------------------------------------- /nes_instr_test/nsf_singles/05-absolute.nsf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/nes_instr_test/nsf_singles/05-absolute.nsf -------------------------------------------------------------------------------- /nes_instr_test/nsf_singles/06-abs_xy.nsf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/nes_instr_test/nsf_singles/06-abs_xy.nsf -------------------------------------------------------------------------------- /nes_instr_test/nsf_singles/07-ind_x.nsf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/nes_instr_test/nsf_singles/07-ind_x.nsf -------------------------------------------------------------------------------- /nes_instr_test/nsf_singles/08-ind_y.nsf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/nes_instr_test/nsf_singles/08-ind_y.nsf -------------------------------------------------------------------------------- /nes_instr_test/nsf_singles/09-branches.nsf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/nes_instr_test/nsf_singles/09-branches.nsf -------------------------------------------------------------------------------- /nes_instr_test/nsf_singles/10-stack.nsf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/nes_instr_test/nsf_singles/10-stack.nsf -------------------------------------------------------------------------------- /nes_instr_test/nsf_singles/11-special.nsf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/nes_instr_test/nsf_singles/11-special.nsf -------------------------------------------------------------------------------- /nes_instr_test/rom_singles/01-implied.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/nes_instr_test/rom_singles/01-implied.nes -------------------------------------------------------------------------------- /nes_instr_test/rom_singles/02-immediate.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/nes_instr_test/rom_singles/02-immediate.nes -------------------------------------------------------------------------------- /nes_instr_test/rom_singles/03-zero_page.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/nes_instr_test/rom_singles/03-zero_page.nes -------------------------------------------------------------------------------- /nes_instr_test/rom_singles/04-zp_xy.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/nes_instr_test/rom_singles/04-zp_xy.nes -------------------------------------------------------------------------------- /nes_instr_test/rom_singles/05-absolute.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/nes_instr_test/rom_singles/05-absolute.nes -------------------------------------------------------------------------------- /nes_instr_test/rom_singles/06-abs_xy.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/nes_instr_test/rom_singles/06-abs_xy.nes -------------------------------------------------------------------------------- /nes_instr_test/rom_singles/07-ind_x.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/nes_instr_test/rom_singles/07-ind_x.nes -------------------------------------------------------------------------------- /nes_instr_test/rom_singles/08-ind_y.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/nes_instr_test/rom_singles/08-ind_y.nes -------------------------------------------------------------------------------- /nes_instr_test/rom_singles/09-branches.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/nes_instr_test/rom_singles/09-branches.nes -------------------------------------------------------------------------------- /nes_instr_test/rom_singles/10-stack.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/nes_instr_test/rom_singles/10-stack.nes -------------------------------------------------------------------------------- /nes_instr_test/rom_singles/11-special.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/nes_instr_test/rom_singles/11-special.nes -------------------------------------------------------------------------------- /nes_instr_test/source/common/ascii.chr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/nes_instr_test/source/common/ascii.chr -------------------------------------------------------------------------------- /nes_instr_test/source/common/neshw.inc: -------------------------------------------------------------------------------- 1 | ; NES I/O locations and masks 2 | 3 | ; Clocks per second 4 | .ifndef CLOCK_RATE 5 | CLOCK_RATE = 1789773 ; NTSC 6 | ; CLOCK_RATE = 1662607 ; PAL 7 | .endif 8 | 9 | .ifndef BUILD_NSF 10 | 11 | ; PPU 12 | PPUCTRL = $2000 13 | PPUMASK = $2001 14 | PPUSTATUS = $2002 15 | SPRADDR = $2003 16 | SPRDATA = $2004 17 | PPUSCROLL = $2005 18 | PPUADDR = $2006 19 | PPUDATA = $2007 20 | SPRDMA = $4014 21 | 22 | PPUCTRL_NMI = $80 23 | PPUMASK_BG0 = $0A 24 | PPUCTRL_8X8 = $00 25 | PPUCTRL_8X16 = $20 26 | PPUMASK_SPR = $14 27 | PPUMASK_BG0CLIP = $08 28 | 29 | .endif 30 | 31 | ; APU 32 | SNDCHN = $4015 33 | JOY1 = $4016 34 | JOY2 = $4017 35 | SNDMODE = $4017 36 | 37 | SNDMODE_NOIRQ = $40 38 | -------------------------------------------------------------------------------- /nes_instr_test/source/common/shell.inc: -------------------------------------------------------------------------------- 1 | ; Included at beginning of program 2 | 3 | ; Sub-test in a multi-test ROM 4 | .ifdef BUILD_MULTI 5 | .include "build_multi.s" 6 | .else 7 | 8 | ; NSF music file 9 | .ifdef BUILD_NSF 10 | .include "build_nsf.s" 11 | .endif 12 | 13 | ; Devcart 14 | .ifdef BUILD_DEVCART 15 | .include "build_devcart.s" 16 | .endif 17 | 18 | ; NES ROM (default) 19 | .ifndef SHELL_INCLUDED 20 | .include "build_rom.s" 21 | .endif 22 | 23 | .endif ; .ifdef BUILD_MULTI 24 | -------------------------------------------------------------------------------- /nmi_sync/demo_ntsc.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/nmi_sync/demo_ntsc.nes -------------------------------------------------------------------------------- /nmi_sync/demo_pal.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/nmi_sync/demo_pal.nes -------------------------------------------------------------------------------- /nmi_sync/unrom.cfg: -------------------------------------------------------------------------------- 1 | # 32K iNES ROM with optional 8K CHR 2 | 3 | MEMORY 4 | { 5 | ZP: start = $10, size = $E0; 6 | RAM: start = $200, size = $500; 7 | 8 | HEADER: start = 0, size = $10, fill=yes; 9 | 10 | ROM: start = $8000, size = $7FF4, fill=yes, fillval=$FF; 11 | VECTORS:start = $FFF4, size = $C, fill=yes; 12 | 13 | CHARS: start = 0, size = $2000, fillval=$FF; 14 | } 15 | 16 | SEGMENTS 17 | { 18 | ZEROPAGE: load = ZP, type = zp; 19 | BSS: load = RAM, type = bss,align=$100; 20 | 21 | HEADER: load = HEADER, type = ro; 22 | CODE: load = ROM, type = ro, align=$100; 23 | RODATA: load = ROM, type = ro, align=$100; 24 | VECTORS: load = VECTORS, type = ro; 25 | 26 | CHARS: load = CHARS, type = ro, align=$2000, optional=yes; 27 | } 28 | -------------------------------------------------------------------------------- /nrom368/_c.bat: -------------------------------------------------------------------------------- 1 | rem this file compiles C source file with given name into NES file 2 | rem it is useful to compile few projects at once without repeating the build script 3 | path=path;..\bin\ 4 | set CC65_HOME=..\ 5 | cc65 -Oi %1.c --add-source 6 | ca65 crt0.s 7 | ca65 %1.s 8 | ld65 -C nes.cfg -o %1.nes crt0.o %1.o runtime.lib 9 | del %1.s -------------------------------------------------------------------------------- /nrom368/compile_all.bat: -------------------------------------------------------------------------------- 1 | echo off 2 | call _c test1 3 | pause 4 | del *.o -------------------------------------------------------------------------------- /nrom368/fail368.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/nrom368/fail368.nes -------------------------------------------------------------------------------- /nrom368/music.s: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/nrom368/music.s -------------------------------------------------------------------------------- /nrom368/nrom368.chr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/nrom368/nrom368.chr -------------------------------------------------------------------------------- /nrom368/nrom368.prg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/nrom368/nrom368.prg -------------------------------------------------------------------------------- /nrom368/runtime.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/nrom368/runtime.lib -------------------------------------------------------------------------------- /nrom368/sounds.s: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/nrom368/sounds.s -------------------------------------------------------------------------------- /nrom368/test1.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/nrom368/test1.nes -------------------------------------------------------------------------------- /nrom368/tileset.chr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/nrom368/tileset.chr -------------------------------------------------------------------------------- /ny2011/ny2011.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/ny2011/ny2011.nes -------------------------------------------------------------------------------- /oam_read/oam_read.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/oam_read/oam_read.nes -------------------------------------------------------------------------------- /oam_read/source/common/ascii.chr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/oam_read/source/common/ascii.chr -------------------------------------------------------------------------------- /oam_read/source/common/devcart.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/oam_read/source/common/devcart.bin -------------------------------------------------------------------------------- /oam_read/source/common/neshw.inc: -------------------------------------------------------------------------------- 1 | ; NES I/O locations and masks 2 | 3 | ; Clocks per second 4 | .ifndef CLOCK_RATE 5 | CLOCK_RATE = 1789773 ; NTSC 6 | ; CLOCK_RATE = 1662607 ; PAL 7 | .endif 8 | 9 | .ifndef BUILD_NSF 10 | 11 | ; PPU 12 | PPUCTRL = $2000 13 | PPUMASK = $2001 14 | PPUSTATUS = $2002 15 | SPRADDR = $2003 16 | SPRDATA = $2004 17 | PPUSCROLL = $2005 18 | PPUADDR = $2006 19 | PPUDATA = $2007 20 | SPRDMA = $4014 21 | 22 | PPUCTRL_NMI = $80 23 | PPUMASK_BG0 = $0A 24 | PPUCTRL_8X8 = $00 25 | PPUCTRL_8X16 = $20 26 | PPUMASK_SPR = $14 27 | PPUMASK_BG0CLIP = $08 28 | 29 | .endif 30 | 31 | ; APU 32 | SNDCHN = $4015 33 | JOY1 = $4016 34 | JOY2 = $4017 35 | SNDMODE = $4017 36 | 37 | SNDMODE_NOIRQ = $40 38 | -------------------------------------------------------------------------------- /oam_read/source/common/shell.inc: -------------------------------------------------------------------------------- 1 | ; Included at beginning of program 2 | 3 | .ifdef CUSTOM_PREFIX 4 | .include "custom_prefix.s" 5 | .endif 6 | 7 | ; Sub-test in a multi-test ROM 8 | .ifdef BUILD_MULTI 9 | .include "build_multi.s" 10 | .else 11 | 12 | ; NSF music file 13 | .ifdef BUILD_NSF 14 | .include "build_nsf.s" 15 | .endif 16 | 17 | ; Devcart 18 | .ifdef BUILD_DEVCART 19 | .include "build_devcart.s" 20 | .endif 21 | 22 | ; NES internal RAM 23 | .ifdef BUILD_NOCART 24 | .include "build_nocart.s" 25 | .endif 26 | 27 | ; NES ROM (default) 28 | .ifndef SHELL_INCLUDED 29 | .include "build_rom.s" 30 | .endif 31 | 32 | .endif ; .ifdef BUILD_MULTI 33 | -------------------------------------------------------------------------------- /oam_stress/oam_stress.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/oam_stress/oam_stress.nes -------------------------------------------------------------------------------- /oam_stress/source/common/ascii.chr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/oam_stress/source/common/ascii.chr -------------------------------------------------------------------------------- /oam_stress/source/common/devcart.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/oam_stress/source/common/devcart.bin -------------------------------------------------------------------------------- /oam_stress/source/common/neshw.inc: -------------------------------------------------------------------------------- 1 | ; NES I/O locations and masks 2 | 3 | ; Clocks per second 4 | .ifndef CLOCK_RATE 5 | CLOCK_RATE = 1789773 ; NTSC 6 | ; CLOCK_RATE = 1662607 ; PAL 7 | .endif 8 | 9 | .ifndef BUILD_NSF 10 | 11 | ; PPU 12 | PPUCTRL = $2000 13 | PPUMASK = $2001 14 | PPUSTATUS = $2002 15 | SPRADDR = $2003 16 | SPRDATA = $2004 17 | PPUSCROLL = $2005 18 | PPUADDR = $2006 19 | PPUDATA = $2007 20 | SPRDMA = $4014 21 | 22 | PPUCTRL_NMI = $80 23 | PPUMASK_BG0 = $0A 24 | PPUCTRL_8X8 = $00 25 | PPUCTRL_8X16 = $20 26 | PPUMASK_SPR = $14 27 | PPUMASK_BG0CLIP = $08 28 | 29 | .endif 30 | 31 | ; APU 32 | SNDCHN = $4015 33 | JOY1 = $4016 34 | JOY2 = $4017 35 | SNDMODE = $4017 36 | 37 | SNDMODE_NOIRQ = $40 38 | -------------------------------------------------------------------------------- /oam_stress/source/common/shell.inc: -------------------------------------------------------------------------------- 1 | ; Included at beginning of program 2 | 3 | .ifdef CUSTOM_PREFIX 4 | .include "custom_prefix.s" 5 | .endif 6 | 7 | ; Sub-test in a multi-test ROM 8 | .ifdef BUILD_MULTI 9 | .include "build_multi.s" 10 | .else 11 | 12 | ; NSF music file 13 | .ifdef BUILD_NSF 14 | .include "build_nsf.s" 15 | .endif 16 | 17 | ; Devcart 18 | .ifdef BUILD_DEVCART 19 | .include "build_devcart.s" 20 | .endif 21 | 22 | ; NES internal RAM 23 | .ifdef BUILD_NOCART 24 | .include "build_nocart.s" 25 | .endif 26 | 27 | ; NES ROM (default) 28 | .ifndef SHELL_INCLUDED 29 | .include "build_rom.s" 30 | .endif 31 | 32 | .endif ; .ifdef BUILD_MULTI 33 | -------------------------------------------------------------------------------- /other/2003-test.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/other/2003-test.nes -------------------------------------------------------------------------------- /other/8bitpeoples_-_deadline_console_invitro.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/other/8bitpeoples_-_deadline_console_invitro.nes -------------------------------------------------------------------------------- /other/BLOCKS.NES: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/other/BLOCKS.NES -------------------------------------------------------------------------------- /other/BladeBuster.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/other/BladeBuster.nes -------------------------------------------------------------------------------- /other/CMC80s.NES: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/other/CMC80s.NES -------------------------------------------------------------------------------- /other/DROPOFF7.NES: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/other/DROPOFF7.NES -------------------------------------------------------------------------------- /other/Duelito - Leame.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/other/Duelito - Leame.txt -------------------------------------------------------------------------------- /other/Duelito.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/other/Duelito.nes -------------------------------------------------------------------------------- /other/FLAME.NES: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/other/FLAME.NES -------------------------------------------------------------------------------- /other/GENIE.NES: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/other/GENIE.NES -------------------------------------------------------------------------------- /other/GREYS.NES: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/other/GREYS.NES -------------------------------------------------------------------------------- /other/LINUS.NSF: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/other/LINUS.NSF -------------------------------------------------------------------------------- /other/LINUSMUS.NES: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/other/LINUSMUS.NES -------------------------------------------------------------------------------- /other/MOTION.NES: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/other/MOTION.NES -------------------------------------------------------------------------------- /other/PCM.demo.wgraphics.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/other/PCM.demo.wgraphics.nes -------------------------------------------------------------------------------- /other/RasterChromaLuma.NES: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/other/RasterChromaLuma.NES -------------------------------------------------------------------------------- /other/RasterDemo.NES: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/other/RasterDemo.NES -------------------------------------------------------------------------------- /other/RasterTest1.NES: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/other/RasterTest1.NES -------------------------------------------------------------------------------- /other/RasterTest2.NES: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/other/RasterTest2.NES -------------------------------------------------------------------------------- /other/RasterTest3.NES: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/other/RasterTest3.NES -------------------------------------------------------------------------------- /other/RasterTest3a.NES: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/other/RasterTest3a.NES -------------------------------------------------------------------------------- /other/RasterTest3b.NES: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/other/RasterTest3b.NES -------------------------------------------------------------------------------- /other/RasterTest3c.NES: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/other/RasterTest3c.NES -------------------------------------------------------------------------------- /other/RasterTest3d.NES: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/other/RasterTest3d.NES -------------------------------------------------------------------------------- /other/RasterTest3e.NES: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/other/RasterTest3e.NES -------------------------------------------------------------------------------- /other/ReadmeCMC80s.TXT: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/other/ReadmeCMC80s.TXT -------------------------------------------------------------------------------- /other/Retrocoders - Years behind.NES: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/other/Retrocoders - Years behind.NES -------------------------------------------------------------------------------- /other/S0.NES: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/other/S0.NES -------------------------------------------------------------------------------- /other/SPRITE.NES: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/other/SPRITE.NES -------------------------------------------------------------------------------- /other/Sayoonara!.NES: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/other/Sayoonara!.NES -------------------------------------------------------------------------------- /other/SimpleParallaxDemo.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/other/SimpleParallaxDemo.nes -------------------------------------------------------------------------------- /other/Streemerz_bundle.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/other/Streemerz_bundle.nes -------------------------------------------------------------------------------- /other/TANESPOT.NES: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/other/TANESPOT.NES -------------------------------------------------------------------------------- /other/TEST.NES: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/other/TEST.NES -------------------------------------------------------------------------------- /other/The Duel - Readme.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/other/The Duel - Readme.txt -------------------------------------------------------------------------------- /other/apocalypse.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/other/apocalypse.nes -------------------------------------------------------------------------------- /other/blargg_litewall-2.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/other/blargg_litewall-2.nes -------------------------------------------------------------------------------- /other/blargg_litewall-9.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/other/blargg_litewall-9.nes -------------------------------------------------------------------------------- /other/demo jitter.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/other/demo jitter.nes -------------------------------------------------------------------------------- /other/demo.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/other/demo.nes -------------------------------------------------------------------------------- /other/dnsf2_enginetest3.nsf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/other/dnsf2_enginetest3.nsf -------------------------------------------------------------------------------- /other/fceuxd.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/other/fceuxd.nes -------------------------------------------------------------------------------- /other/firefly.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/other/firefly.nes -------------------------------------------------------------------------------- /other/high-hopes.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/other/high-hopes.nes -------------------------------------------------------------------------------- /other/logo (E).nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/other/logo (E).nes -------------------------------------------------------------------------------- /other/manhole.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/other/manhole.nes -------------------------------------------------------------------------------- /other/max-300.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/other/max-300.nes -------------------------------------------------------------------------------- /other/midscanline.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/other/midscanline.nes -------------------------------------------------------------------------------- /other/minipack.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/other/minipack.nes -------------------------------------------------------------------------------- /other/nescafe.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/other/nescafe.nes -------------------------------------------------------------------------------- /other/nestest.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/other/nestest.nes -------------------------------------------------------------------------------- /other/nestopia.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/other/nestopia.nes -------------------------------------------------------------------------------- /other/new-game.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/other/new-game.nes -------------------------------------------------------------------------------- /other/nintendulator.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/other/nintendulator.nes -------------------------------------------------------------------------------- /other/oam3.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/other/oam3.nes -------------------------------------------------------------------------------- /other/oc.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/other/oc.nes -------------------------------------------------------------------------------- /other/physics.0.1.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/other/physics.0.1.nes -------------------------------------------------------------------------------- /other/pulsar.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/other/pulsar.nes -------------------------------------------------------------------------------- /other/quantum_disco_brothers_by_wAMMA.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/other/quantum_disco_brothers_by_wAMMA.nes -------------------------------------------------------------------------------- /other/rastesam4.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/other/rastesam4.nes -------------------------------------------------------------------------------- /other/read2004.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/other/read2004.nes -------------------------------------------------------------------------------- /other/readme.txt: -------------------------------------------------------------------------------- 1 | up left up 2 | down right down 3 | left left down 4 | right right up 5 | A 6 | B 7 | Start StartGame 8 | Select 9 | 10 | Program KZ-S 11 | Graphics misaki 12 | Special 13 | Thanks Norix 14 | 15 | http://dev.fam.cx/~kz_s/ 16 | -------------------------------------------------------------------------------- /other/snow.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/other/snow.nes -------------------------------------------------------------------------------- /other/test001.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/other/test001.nes -------------------------------------------------------------------------------- /other/test28.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/other/test28.nes -------------------------------------------------------------------------------- /other/window2_ntsc.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/other/window2_ntsc.nes -------------------------------------------------------------------------------- /other/window2_pal.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/other/window2_pal.nes -------------------------------------------------------------------------------- /other/window_old_ntsc.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/other/window_old_ntsc.nes -------------------------------------------------------------------------------- /other/window_old_pal.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/other/window_old_pal.nes -------------------------------------------------------------------------------- /pal_apu_tests/01.len_ctr.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/pal_apu_tests/01.len_ctr.nes -------------------------------------------------------------------------------- /pal_apu_tests/02.len_table.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/pal_apu_tests/02.len_table.nes -------------------------------------------------------------------------------- /pal_apu_tests/03.irq_flag.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/pal_apu_tests/03.irq_flag.nes -------------------------------------------------------------------------------- /pal_apu_tests/04.clock_jitter.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/pal_apu_tests/04.clock_jitter.nes -------------------------------------------------------------------------------- /pal_apu_tests/05.len_timing_mode0.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/pal_apu_tests/05.len_timing_mode0.nes -------------------------------------------------------------------------------- /pal_apu_tests/06.len_timing_mode1.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/pal_apu_tests/06.len_timing_mode1.nes -------------------------------------------------------------------------------- /pal_apu_tests/07.irq_flag_timing.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/pal_apu_tests/07.irq_flag_timing.nes -------------------------------------------------------------------------------- /pal_apu_tests/08.irq_timing.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/pal_apu_tests/08.irq_timing.nes -------------------------------------------------------------------------------- /pal_apu_tests/10.len_halt_timing.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/pal_apu_tests/10.len_halt_timing.nes -------------------------------------------------------------------------------- /pal_apu_tests/11.len_reload_timing.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/pal_apu_tests/11.len_reload_timing.nes -------------------------------------------------------------------------------- /pal_apu_tests/source/runtime_rom.a: -------------------------------------------------------------------------------- 1 | ; Build as standalone NES ROM using console for output 2 | 3 | .include "runtime_rom_common.a" 4 | 5 | patch_reset_then_wait: 6 | exit: jmp exit 7 | 8 | .default reset = main 9 | 10 | .org $fffa 11 | .dw nmi 12 | .dw reset 13 | .dw irq 14 | -------------------------------------------------------------------------------- /pal_apu_tests/source/runtime_rom_common.a: -------------------------------------------------------------------------------- 1 | 2 | .include "delays.a" 3 | .include "console.a" 4 | .include "debug.a" 5 | .include "ppu_util.a" 6 | 7 | console_ready = $7f1 8 | 9 | debug_char: 10 | pha 11 | lda #$a5 12 | cmp console_ready 13 | beq + 14 | sta console_ready 15 | txa 16 | pha 17 | tya 18 | pha 19 | jsr init_console 20 | pla 21 | tay 22 | pla 23 | tax 24 | : pla 25 | jmp print_char 26 | 27 | debug_newline: 28 | jsr console_newline 29 | jmp console_newline 30 | 31 | debug_char_no_wait: 32 | jmp print_char_no_wait 33 | 34 | init_runtime: 35 | clear_console_ready: 36 | lda #0 37 | sta console_ready 38 | rts 39 | 40 | forever: 41 | sei ; disable interrupts 42 | lda #0 43 | sta $2000 44 | jsr clear_console_ready 45 | jmp exit 46 | -------------------------------------------------------------------------------- /pal_apu_tests/source/sync_apu.a: -------------------------------------------------------------------------------- 1 | ; Synchronize APU divide-by-two so that an sta $4017 will 2 | ; start the frame counter without an extra clock delay. 3 | ; Takes 16 msec to execute. 4 | sync_apu: 5 | sei 6 | lda #$40 ; clear irq flag 7 | sta $4017 8 | lda #$00 ; mode 0, frame irq enabled 9 | sta $4017 10 | ldy #62 ; 33251 delay 11 | lda #106 12 | jsr delay_ya2 13 | lda $4015 14 | and #$40 15 | bne + ; delay extra clock if odd jitter 16 | : lda #$40 ; clear irq flag 17 | sta $4017 18 | rts 19 | .code 20 | -------------------------------------------------------------------------------- /ppu_open_bus/ppu_open_bus.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/ppu_open_bus/ppu_open_bus.nes -------------------------------------------------------------------------------- /ppu_open_bus/source/common/ascii.chr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/ppu_open_bus/source/common/ascii.chr -------------------------------------------------------------------------------- /ppu_open_bus/source/common/devcart.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/ppu_open_bus/source/common/devcart.bin -------------------------------------------------------------------------------- /ppu_open_bus/source/common/neshw.inc: -------------------------------------------------------------------------------- 1 | ; NES I/O locations and masks 2 | 3 | ; Clocks per second 4 | .ifndef CLOCK_RATE 5 | CLOCK_RATE = 1789773 ; NTSC 6 | ; CLOCK_RATE = 1662607 ; PAL 7 | .endif 8 | 9 | .ifndef BUILD_NSF 10 | 11 | ; PPU 12 | PPUCTRL = $2000 13 | PPUMASK = $2001 14 | PPUSTATUS = $2002 15 | SPRADDR = $2003 16 | SPRDATA = $2004 17 | PPUSCROLL = $2005 18 | PPUADDR = $2006 19 | PPUDATA = $2007 20 | SPRDMA = $4014 21 | 22 | PPUCTRL_NMI = $80 23 | PPUMASK_BG0 = $0A 24 | PPUCTRL_8X8 = $00 25 | PPUCTRL_8X16 = $20 26 | PPUMASK_SPR = $14 27 | PPUMASK_BG0CLIP = $08 28 | 29 | .endif 30 | 31 | ; APU 32 | SNDCHN = $4015 33 | JOY1 = $4016 34 | JOY2 = $4017 35 | SNDMODE = $4017 36 | 37 | SNDMODE_NOIRQ = $40 38 | -------------------------------------------------------------------------------- /ppu_open_bus/source/common/shell.inc: -------------------------------------------------------------------------------- 1 | ; Included at beginning of program 2 | 3 | .ifdef CUSTOM_PREFIX 4 | .include "custom_prefix.s" 5 | .endif 6 | 7 | ; Sub-test in a multi-test ROM 8 | .ifdef BUILD_MULTI 9 | .include "build_multi.s" 10 | .else 11 | 12 | ; NSF music file 13 | .ifdef BUILD_NSF 14 | .include "build_nsf.s" 15 | .endif 16 | 17 | ; Devcart 18 | .ifdef BUILD_DEVCART 19 | .include "build_devcart.s" 20 | .endif 21 | 22 | ; NES internal RAM 23 | .ifdef BUILD_NOCART 24 | .include "build_nocart.s" 25 | .endif 26 | 27 | ; NES ROM (default) 28 | .ifndef SHELL_INCLUDED 29 | .include "build_rom.s" 30 | .endif 31 | 32 | .endif ; .ifdef BUILD_MULTI 33 | -------------------------------------------------------------------------------- /ppu_read_buffer/source/bank_switch.s: -------------------------------------------------------------------------------- 1 | .macro set_vrom_page n 2 | lda #(n) ;VROM page n 3 | sta bus_conflict_antidote+(n) 4 | .endmacro 5 | 6 | seg_data "RODATA", { bus_conflict_antidote: .byte 0,1,2,3 } 7 | -------------------------------------------------------------------------------- /ppu_read_buffer/source/common/ascii_1.chr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/ppu_read_buffer/source/common/ascii_1.chr -------------------------------------------------------------------------------- /ppu_read_buffer/source/common/ascii_w.chr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/ppu_read_buffer/source/common/ascii_w.chr -------------------------------------------------------------------------------- /ppu_read_buffer/source/common/neshw.inc: -------------------------------------------------------------------------------- 1 | ; NES I/O locations and masks 2 | 3 | ; Clocks per second 4 | .ifndef CLOCK_RATE 5 | CLOCK_RATE = 1789773 ; NTSC 6 | ; CLOCK_RATE = 1662607 ; PAL 7 | .endif 8 | 9 | .ifndef BUILD_NSF 10 | 11 | ; PPU 12 | PPUCTRL = $2000 13 | PPUMASK = $2001 14 | PPUSTATUS = $2002 15 | SPRADDR = $2003 16 | SPRDATA = $2004 17 | PPUSCROLL = $2005 18 | PPUADDR = $2006 19 | PPUDATA = $2007 20 | SPRDMA = $4014 21 | 22 | PPUCTRL_NMI = $80 23 | PPUMASK_BG0 = $0A 24 | PPUCTRL_8X8 = $00 25 | PPUCTRL_8X16 = $20 26 | PPUMASK_SPR = $14 27 | PPUMASK_BG0CLIP = $08 28 | 29 | .endif 30 | 31 | ; APU 32 | SNDCHN = $4015 33 | JOY1 = $4016 34 | JOY2 = $4017 35 | SNDMODE = $4017 36 | 37 | SNDMODE_NOIRQ = $40 38 | -------------------------------------------------------------------------------- /ppu_read_buffer/source/common/shell.inc: -------------------------------------------------------------------------------- 1 | ; Included at beginning of program 2 | 3 | .ifdef CUSTOM_PREFIX 4 | .include "custom_prefix.s" 5 | .endif 6 | 7 | ; Sub-test in a multi-test ROM 8 | .ifdef BUILD_MULTI 9 | .include "build_multi.s" 10 | .else 11 | 12 | ; NSF music file 13 | .ifdef BUILD_NSF 14 | .include "build_nsf.s" 15 | .endif 16 | 17 | ; Devcart 18 | .ifdef BUILD_DEVCART 19 | .include "build_devcart.s" 20 | .endif 21 | 22 | ; NES internal RAM 23 | .ifdef BUILD_NOCART 24 | .include "build_nocart.s" 25 | .endif 26 | 27 | ; NES ROM (default) 28 | .ifndef SHELL_INCLUDED 29 | .include "build_rom.s" 30 | .endif 31 | 32 | .endif ; .ifdef BUILD_MULTI 33 | -------------------------------------------------------------------------------- /ppu_read_buffer/source/dte_translate.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/ppu_read_buffer/source/dte_translate.php -------------------------------------------------------------------------------- /ppu_read_buffer/source/gfx.bank4.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/ppu_read_buffer/source/gfx.bank4.bin -------------------------------------------------------------------------------- /ppu_read_buffer/source/gfx/thomaskinkade50.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/ppu_read_buffer/source/gfx/thomaskinkade50.jpg -------------------------------------------------------------------------------- /ppu_read_buffer/source/inc/ins_defs.php: -------------------------------------------------------------------------------- 1 | iter 27 | ldx # $@ 32 | -------------------------------------------------------------------------------- /volume_tests/nes.ini: -------------------------------------------------------------------------------- 1 | MEMORY { 2 | ZP: start = $10, size = $f0, type = rw; 3 | # use first $10 zeropage locations as locals 4 | HEADER: start = $0000, size = $0010, type = ro, file = %O, fill=yes, fillval=$00; 5 | RAM: start = $0300, size = $0500, type = rw; 6 | ROM: start = $C000, size = $4000, type = ro, file = %O, fill=yes, fillval=$FF; 7 | } 8 | 9 | SEGMENTS { 10 | INESHDR: load = HEADER, type = ro, align = $10; 11 | ZEROPAGE: load = ZP, type = zp; 12 | BSS: load = RAM, type = bss, define = yes, align = $100; 13 | CODE: load = ROM, type = ro, align = $100; 14 | RODATA: load = ROM, type = ro, align = $100; 15 | DMC: load = ROM, type = ro, start = $C000, optional = yes; 16 | VECTORS: load = ROM, type = ro, start = $FFFA; 17 | } 18 | 19 | FILES { 20 | %O: format = bin; 21 | } 22 | 23 | -------------------------------------------------------------------------------- /volume_tests/obj/nes/khan: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/volume_tests/obj/nes/khan -------------------------------------------------------------------------------- /volume_tests/recordings/fceux.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/volume_tests/recordings/fceux.ogg -------------------------------------------------------------------------------- /volume_tests/recordings/nes-001.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/volume_tests/recordings/nes-001.ogg -------------------------------------------------------------------------------- /volume_tests/recordings/nestopia.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/volume_tests/recordings/nestopia.ogg -------------------------------------------------------------------------------- /volume_tests/recordings/nintendulator.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/volume_tests/recordings/nintendulator.ogg -------------------------------------------------------------------------------- /volume_tests/volumes.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/volume_tests/volumes.nes -------------------------------------------------------------------------------- /volume_tests/zip.in: -------------------------------------------------------------------------------- 1 | obj/nes/khan 2 | empty.chr 3 | makefile 4 | nes.ini 5 | volumes.nes 6 | recordings/nes-001.ogg 7 | recordings/nestopia.ogg 8 | recordings/nintendulator.ogg 9 | recordings/fceux.ogg 10 | src/pads.s 11 | src/hello.s 12 | src/sound.s 13 | README.txt 14 | zip.in -------------------------------------------------------------------------------- /window5/colorwin.chr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/window5/colorwin.chr -------------------------------------------------------------------------------- /window5/colorwin_ntsc.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/window5/colorwin_ntsc.nes -------------------------------------------------------------------------------- /window5/colorwin_pal.nes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/christopherpow/nes-test-roms/95d8f621ae55cee0d09b91519a8989ae0e64753b/window5/colorwin_pal.nes -------------------------------------------------------------------------------- /window5/header: -------------------------------------------------------------------------------- 1 | NES -------------------------------------------------------------------------------- /window5/linkfile: -------------------------------------------------------------------------------- 1 | [objects] 2 | colorwin.o 3 | 4 | [header] 5 | header 6 | -------------------------------------------------------------------------------- /window5/maping.asm: -------------------------------------------------------------------------------- 1 | ;Defines NES's RAM for any games witout SRAM 2 | ;Stack isn't defined, it's use is reserved 3 | ;Also $200-$2ff is reserved for SpriteRam and isn't defined here 4 | 5 | .memorymap 6 | defaultslot 0 7 | slotsize $100 8 | slot 0 $0 ;0 page RAM 9 | slotsize $500 10 | slot 1 $300 ;BSS RAM 11 | slotsize $4000 ;PRG ROM slot (32kb) 12 | slot 2 $c000 13 | slotsize $2000 ;CHR ROM slot (8kb) 14 | slot 3 $0 15 | .endme 16 | 17 | ;Define a CNROM structure with 32kb PRG and 32kb CHR 18 | 19 | .rombankmap 20 | bankstotal 2 21 | banksize $4000 ;1x 16kb PRG 22 | banks 1 23 | banksize $2000 ;1x 8kb CHR 24 | banks 1 25 | .endro --------------------------------------------------------------------------------