gitextract_bip8yc8i/ ├── .cargo/ │ └── config.toml ├── .config/ │ └── nextest.toml ├── .git-blame-ignore-revs ├── .gitattributes ├── .github/ │ ├── ISSUE_TEMPLATE/ │ │ ├── defect-report.md │ │ └── feature_request.md │ ├── dependabot.yml │ └── workflows/ │ ├── cd.yml │ ├── ci.yml │ ├── outdated.yml │ ├── release-pr.yml │ ├── security.yml │ └── triage.yml ├── .gitignore ├── .gitmodules ├── .prettierignore ├── .rgignore ├── Cargo.toml ├── Cross.toml ├── LICENSE-APACHE ├── LICENSE-MIT ├── Makefile.toml ├── README.md ├── ROADMAP.md ├── assets/ │ ├── linux/ │ │ └── tetanes.desktop │ └── macos/ │ ├── .DS_Store │ ├── Icon.icns │ └── Info.plist ├── cliff.toml ├── deny.toml ├── docs/ │ ├── apu/ │ │ ├── apu_ref.txt │ │ ├── audio_psuedo_code.txt │ │ ├── blargg_tests_readme.txt │ │ ├── mixer_readme.txt │ │ ├── test_readme.txt │ │ └── volume_readme.txt │ ├── cartridge_board_list.txt │ ├── cpu/ │ │ ├── branch_timing_readme.txt │ │ ├── dummy_writes_readme.txt │ │ ├── exec_space_readme.txt │ │ ├── instr_misc_readme.txt │ │ ├── instr_test_readme.txt │ │ ├── instr_timing_readme.txt │ │ ├── interrupts_readme.txt │ │ ├── opcode_list.txt │ │ └── reset_readme.txt │ ├── genie_codes │ ├── mapper/ │ │ ├── 000.txt │ │ ├── 001.txt │ │ ├── 002.txt │ │ ├── 003.txt │ │ ├── 004.txt │ │ ├── 005.txt │ │ ├── 007.txt │ │ ├── 009.txt │ │ ├── 010.txt │ │ ├── 011.txt │ │ ├── 013.txt │ │ ├── 015.txt │ │ ├── 016.txt │ │ ├── 018.txt │ │ ├── 019.txt │ │ ├── 021.txt │ │ ├── 022.txt │ │ ├── 023.txt │ │ ├── 024.txt │ │ ├── 025.txt │ │ ├── 026.txt │ │ ├── 032.txt │ │ ├── 033.txt │ │ ├── 034.txt │ │ ├── 044.txt │ │ ├── 045.txt │ │ ├── 046.txt │ │ ├── 047.txt │ │ ├── 048.txt │ │ ├── 049.txt │ │ ├── 050.txt │ │ ├── 052.txt │ │ ├── 057.txt │ │ ├── 058.txt │ │ ├── 060.txt │ │ ├── 061.txt │ │ ├── 062.txt │ │ ├── 064.txt │ │ ├── 065.txt │ │ ├── 066.txt │ │ ├── 067.txt │ │ ├── 068.txt │ │ ├── 069.txt │ │ ├── 070.txt │ │ ├── 071.txt │ │ ├── 072.txt │ │ ├── 073.txt │ │ ├── 074.txt │ │ ├── 075.txt │ │ ├── 076.txt │ │ ├── 077.txt │ │ ├── 078.txt │ │ ├── 079.txt │ │ ├── 080.txt │ │ ├── 082.txt │ │ ├── 085.txt │ │ ├── 086.txt │ │ ├── 087.txt │ │ ├── 088.txt │ │ ├── 089.txt │ │ ├── 090.txt │ │ ├── 091.txt │ │ ├── 092.txt │ │ ├── 093.txt │ │ ├── 094.txt │ │ ├── 095.txt │ │ ├── 096.txt │ │ ├── 097.txt │ │ ├── 105.txt │ │ ├── 107.txt │ │ ├── 112.txt │ │ ├── 113.txt │ │ ├── 115.txt │ │ ├── 118.txt │ │ ├── 119.txt │ │ ├── 140.txt │ │ ├── 152.txt │ │ ├── 154.txt │ │ ├── 159.txt │ │ ├── 164.txt │ │ ├── 165.txt │ │ ├── 180.txt │ │ ├── 182.txt │ │ ├── 184.txt │ │ ├── 185.txt │ │ ├── 189.txt │ │ ├── 191.txt │ │ ├── 192.txt │ │ ├── 193.txt │ │ ├── 194.txt │ │ ├── 200.txt │ │ ├── 201.txt │ │ ├── 203.txt │ │ ├── 205.txt │ │ ├── 207.txt │ │ ├── 209.txt │ │ ├── 210.txt │ │ ├── 225.txt │ │ ├── 226.txt │ │ ├── 227.txt │ │ ├── 228.txt │ │ ├── 230.txt │ │ ├── 231.txt │ │ ├── 232.txt │ │ ├── 233.txt │ │ ├── 234.txt │ │ ├── 240.txt │ │ ├── 242.txt │ │ ├── 243.txt │ │ ├── 245.txt │ │ ├── 246.txt │ │ ├── __ READ THIS FIRST __.txt │ │ ├── changes.txt │ │ ├── mmc3_irq_tests_readme.txt │ │ └── mmc3_test_readme.txt │ ├── memory_mapping.txt │ ├── nes_arch.txt │ ├── nes_graphics.txt │ ├── nes_tech.txt │ └── ppu/ │ ├── blargg_tests_readme.txt │ ├── nmi_sync_ntsc_readme.txt │ ├── oam_read_readme.txt │ ├── oam_stress_readme.txt │ ├── open_bus_readme.txt │ ├── ppu_2c02_ref.txt │ ├── ppu_scrolling.txt │ ├── read_buffer_test_readme.txt │ ├── sprite_hit_readme.txt │ ├── sprite_overflow_readme.txt │ ├── tv_readme.txt │ ├── vbl_nmi_readme.txt │ └── vbl_nmi_timing_readme.txt ├── release-plz.toml ├── rust-toolchain.toml ├── static/ │ └── tetanes.xcf ├── tetanes/ │ ├── CHANGELOG.md │ ├── Cargo.toml │ ├── assets/ │ │ ├── main.css │ │ ├── pixeloid-license.txt │ │ └── roms/ │ │ ├── alter_ego.nes │ │ ├── alter_ego.txt │ │ ├── ao_demo.nes │ │ ├── ao_demo.txt │ │ ├── assimilate.nes │ │ ├── assimilate.txt │ │ ├── blade_buster.nes │ │ ├── blade_buster.txt │ │ ├── cheril_the_goddess.nes │ │ ├── cheril_the_goddess.txt │ │ ├── data_man_demo.nes │ │ ├── dushlan.nes │ │ ├── dushlan.txt │ │ ├── from_below.nes │ │ ├── from_below.txt │ │ ├── lan_master.nes │ │ ├── lan_master.txt │ │ ├── lawn_mower.nes │ │ ├── lawn_mower.txt │ │ ├── mad_wizard.nes │ │ ├── mad_wizard.txt │ │ ├── micro_knight.nes │ │ ├── micro_knight.txt │ │ ├── nebs_n_debs.txt │ │ ├── nebs_n_debs_demo.nes │ │ ├── owlia.nes │ │ ├── owlia.txt │ │ ├── streemerz.nes │ │ ├── streemerz.txt │ │ ├── super_painter.nes │ │ ├── super_painter.txt │ │ ├── tiger_jenny.nes │ │ ├── tiger_jenny.txt │ │ ├── yun.nes │ │ └── yun.txt │ ├── build.rs │ ├── index.html │ ├── initializer.js │ ├── shaders/ │ │ ├── crt-easymode.wgsl │ │ └── gui.wgsl │ ├── src/ │ │ ├── bin/ │ │ │ └── build_artifacts.rs │ │ ├── error.rs │ │ ├── lib.rs │ │ ├── logging.rs │ │ ├── main.rs │ │ ├── nes/ │ │ │ ├── action.rs │ │ │ ├── audio.rs │ │ │ ├── config.rs │ │ │ ├── emulation/ │ │ │ │ ├── replay.rs │ │ │ │ └── rewind.rs │ │ │ ├── emulation.rs │ │ │ ├── event.rs │ │ │ ├── input.rs │ │ │ ├── renderer/ │ │ │ │ ├── clipboard.rs │ │ │ │ ├── event.rs │ │ │ │ ├── gui/ │ │ │ │ │ ├── keybinds.rs │ │ │ │ │ ├── lib.rs │ │ │ │ │ ├── ppu_viewer.rs │ │ │ │ │ └── preferences.rs │ │ │ │ ├── gui.rs │ │ │ │ ├── painter.rs │ │ │ │ ├── shader.rs │ │ │ │ └── texture.rs │ │ │ ├── renderer.rs │ │ │ ├── rom.rs │ │ │ └── version.rs │ │ ├── nes.rs │ │ ├── opts.rs │ │ ├── platform.rs │ │ ├── sys/ │ │ │ ├── info/ │ │ │ │ ├── os.rs │ │ │ │ └── wasm.rs │ │ │ ├── info.rs │ │ │ ├── logging/ │ │ │ │ ├── os.rs │ │ │ │ └── wasm.rs │ │ │ ├── logging.rs │ │ │ ├── platform/ │ │ │ │ ├── os.rs │ │ │ │ └── wasm.rs │ │ │ ├── platform.rs │ │ │ ├── thread/ │ │ │ │ ├── os.rs │ │ │ │ └── wasm.rs │ │ │ └── thread.rs │ │ ├── sys.rs │ │ └── thread.rs │ └── wix/ │ └── main.wxs ├── tetanes-core/ │ ├── CHANGELOG.md │ ├── Cargo.toml │ ├── README.md │ ├── benches/ │ │ └── clock_frame.rs │ ├── game_database.txt │ ├── ntscpalette.pal │ ├── src/ │ │ ├── action.rs │ │ ├── apu/ │ │ │ ├── dmc.rs │ │ │ ├── envelope.rs │ │ │ ├── filter.rs │ │ │ ├── frame_counter.rs │ │ │ ├── length_counter.rs │ │ │ ├── noise.rs │ │ │ ├── pulse.rs │ │ │ ├── timer.rs │ │ │ └── triangle.rs │ │ ├── apu.rs │ │ ├── bus.rs │ │ ├── cart.rs │ │ ├── common.rs │ │ ├── control_deck.rs │ │ ├── cpu/ │ │ │ └── instr.rs │ │ ├── cpu.rs │ │ ├── debug.rs │ │ ├── error.rs │ │ ├── fs.rs │ │ ├── genie.rs │ │ ├── input.rs │ │ ├── lib.rs │ │ ├── mapper/ │ │ │ ├── bandai_fcg.rs │ │ │ ├── m000_nrom.rs │ │ │ ├── m001_sxrom.rs │ │ │ ├── m002_uxrom.rs │ │ │ ├── m003_cnrom.rs │ │ │ ├── m004_txrom.rs │ │ │ ├── m005_exrom.rs │ │ │ ├── m007_axrom.rs │ │ │ ├── m009_pxrom.rs │ │ │ ├── m010_fxrom.rs │ │ │ ├── m011_color_dreams.rs │ │ │ ├── m018_jalecoss88006.rs │ │ │ ├── m019_namco163.rs │ │ │ ├── m024_m026_vrc6.rs │ │ │ ├── m034_bnrom.rs │ │ │ ├── m034_nina001.rs │ │ │ ├── m066_gxrom.rs │ │ │ ├── m069_sunsoft_fme7.rs │ │ │ ├── m071_bf909x.rs │ │ │ ├── m079_nina003_006.rs │ │ │ └── vrc_irq.rs │ │ ├── mapper.rs │ │ ├── mem.rs │ │ ├── ppu/ │ │ │ ├── ctrl.rs │ │ │ ├── frame.rs │ │ │ ├── mask.rs │ │ │ ├── scroll.rs │ │ │ ├── sprite.rs │ │ │ └── status.rs │ │ ├── ppu.rs │ │ ├── sys/ │ │ │ ├── fs/ │ │ │ │ ├── os.rs │ │ │ │ └── wasm.rs │ │ │ ├── fs.rs │ │ │ └── time.rs │ │ ├── sys.rs │ │ ├── time.rs │ │ └── video.rs │ └── test_roms/ │ ├── apu/ │ │ ├── apu_env.nes │ │ ├── blargg_readme.txt │ │ ├── clock_jitter.nes │ │ ├── dmc.nes │ │ ├── dmc_basics.nes │ │ ├── dmc_buffer_retained.nes │ │ ├── dmc_dma_2007_read.nes │ │ ├── dmc_dma_2007_write.nes │ │ ├── dmc_dma_4016_read.nes │ │ ├── dmc_dma_double_2007_read.nes │ │ ├── dmc_dma_read_write_2007.nes │ │ ├── dmc_latency.nes │ │ ├── dmc_pitch.nes │ │ ├── dmc_rates.nes │ │ ├── dmc_status.nes │ │ ├── dmc_status_irq.nes │ │ ├── dpcmletterbox.nes │ │ ├── dpcmletterbox.txt │ │ ├── irq_flag.nes │ │ ├── irq_flag_timing.nes │ │ ├── irq_timing.nes │ │ ├── len_ctr.nes │ │ ├── len_halt_timing.nes │ │ ├── len_reload_timing.nes │ │ ├── len_table.nes │ │ ├── len_timing.nes │ │ ├── len_timing_mode0.nes │ │ ├── len_timing_mode1.nes │ │ ├── lin_ctr.nes │ │ ├── mixer.txt │ │ ├── noise.nes │ │ ├── noise_pitch.nes │ │ ├── pal_clock_jitter.nes │ │ ├── pal_irq_flag.nes │ │ ├── pal_irq_flag_timing.nes │ │ ├── pal_irq_timing.nes │ │ ├── pal_len_ctr.nes │ │ ├── pal_len_halt_timing.nes │ │ ├── pal_len_reload_timing.nes │ │ ├── pal_len_table.nes │ │ ├── pal_len_timing_mode0.nes │ │ ├── pal_len_timing_mode1.nes │ │ ├── pal_readme.txt │ │ ├── phase_reset.nes │ │ ├── readme.txt │ │ ├── reset.txt │ │ ├── reset_4015_cleared.nes │ │ ├── reset_4017_timing.nes │ │ ├── reset_4017_written.nes │ │ ├── reset_irq_flag_cleared.nes │ │ ├── reset_len_ctrs_enabled.nes │ │ ├── reset_timing.nes │ │ ├── reset_works_immediately.nes │ │ ├── square.nes │ │ ├── square_pitch.nes │ │ ├── sweep_cutoff.nes │ │ ├── sweep_sub.nes │ │ ├── test_1.nes │ │ ├── test_10.nes │ │ ├── test_2.nes │ │ ├── test_3.nes │ │ ├── test_4.nes │ │ ├── test_5.nes │ │ ├── test_6.nes │ │ ├── test_7.nes │ │ ├── test_8.nes │ │ ├── test_9.nes │ │ ├── tests.json │ │ ├── triangle.nes │ │ ├── triangle_pitch.nes │ │ ├── volumes.nes │ │ └── volumes.txt │ ├── cpu/ │ │ ├── branch.txt │ │ ├── branch_backward.nes │ │ ├── branch_basics.nes │ │ ├── branch_forward.nes │ │ ├── dummy_reads.nes │ │ ├── dummy_writes.txt │ │ ├── dummy_writes_oam.nes │ │ ├── dummy_writes_ppumem.nes │ │ ├── exec_space.txt │ │ ├── exec_space_apu.nes │ │ ├── exec_space_ppuio.nes │ │ ├── flag_concurrency.nes │ │ ├── instr.txt │ │ ├── instr_abs.nes │ │ ├── instr_abs_xy.nes │ │ ├── instr_basics.nes │ │ ├── instr_branches.nes │ │ ├── instr_brk.nes │ │ ├── instr_imm.nes │ │ ├── instr_imp.nes │ │ ├── instr_ind_x.nes │ │ ├── instr_ind_y.nes │ │ ├── instr_jmp_jsr.nes │ │ ├── instr_misc.nes │ │ ├── instr_misc.txt │ │ ├── instr_rti.nes │ │ ├── instr_rts.nes │ │ ├── instr_special.nes │ │ ├── instr_stack.nes │ │ ├── instr_timing.nes │ │ ├── instr_timing.txt │ │ ├── instr_zp.nes │ │ ├── instr_zp_xy.nes │ │ ├── int_branch_delays_irq.nes │ │ ├── int_cli_latency.nes │ │ ├── int_irq_and_dma.nes │ │ ├── int_nmi_and_brk.nes │ │ ├── int_nmi_and_irq.nes │ │ ├── interrupts.txt │ │ ├── nestest.nes │ │ ├── nestest.txt │ │ ├── overclock.nes │ │ ├── ram_after_reset.nes │ │ ├── regs_after_reset.nes │ │ ├── reset.txt │ │ ├── sprdma_and_dmc_dma.nes │ │ ├── sprdma_and_dmc_dma_512.nes │ │ ├── tests.json │ │ ├── timing.txt │ │ └── timing_test.nes │ ├── input/ │ │ ├── tests.json │ │ ├── zapper_flip.nes │ │ ├── zapper_light.nes │ │ ├── zapper_stream.nes │ │ └── zapper_trigger.nes │ ├── mapper/ │ │ ├── m004_txrom/ │ │ │ ├── a12_clocking.nes │ │ │ ├── big_chr_ram.nes │ │ │ ├── clocking.nes │ │ │ ├── details.nes │ │ │ ├── irq.txt │ │ │ ├── rev_a.nes │ │ │ ├── rev_b.nes │ │ │ ├── scanline_timing.nes │ │ │ └── tests.json │ │ └── m005_exrom/ │ │ ├── basics.nes │ │ ├── exram.nes │ │ └── tests.json │ ├── ppu/ │ │ ├── _240pee.nes │ │ ├── blargg_readme.txt │ │ ├── color.nes │ │ ├── ntsc_torture.nes │ │ ├── oam_read.nes │ │ ├── oam_read.txt │ │ ├── oam_stress.nes │ │ ├── oam_stress.txt │ │ ├── open_bus.nes │ │ ├── open_bus.txt │ │ ├── palette.nes │ │ ├── palette_ram.nes │ │ ├── read_buffer.nes │ │ ├── read_buffer.txt │ │ ├── scanline.nes │ │ ├── spr_hit.txt │ │ ├── spr_hit_alignment.nes │ │ ├── spr_hit_basics.nes │ │ ├── spr_hit_corners.nes │ │ ├── spr_hit_double_height.nes │ │ ├── spr_hit_edge_timing.nes │ │ ├── spr_hit_flip.nes │ │ ├── spr_hit_left_clip.nes │ │ ├── spr_hit_right_edge.nes │ │ ├── spr_hit_screen_bottom.nes │ │ ├── spr_hit_timing_basics.nes │ │ ├── spr_hit_timing_order.nes │ │ ├── spr_overflow.txt │ │ ├── spr_overflow_basics.nes │ │ ├── spr_overflow_details.nes │ │ ├── spr_overflow_emulator.nes │ │ ├── spr_overflow_obscure.nes │ │ ├── spr_overflow_timing.nes │ │ ├── sprite_ram.nes │ │ ├── tests.json │ │ ├── tv.nes │ │ ├── tv.txt │ │ ├── vbl_nmi.txt │ │ ├── vbl_nmi_basics.nes │ │ ├── vbl_nmi_clear_timing.nes │ │ ├── vbl_nmi_control.nes │ │ ├── vbl_nmi_disable.nes │ │ ├── vbl_nmi_even_odd_frames.nes │ │ ├── vbl_nmi_even_odd_timing.nes │ │ ├── vbl_nmi_frame_basics.nes │ │ ├── vbl_nmi_off_timing.nes │ │ ├── vbl_nmi_on_timing.nes │ │ ├── vbl_nmi_set_time.nes │ │ ├── vbl_nmi_suppression.nes │ │ ├── vbl_nmi_timing.nes │ │ ├── vbl_nmi_timing.txt │ │ ├── vbl_timing.nes │ │ └── vram_access.nes │ └── spritecans.nes ├── tetanes-utils/ │ ├── Cargo.toml │ └── src/ │ └── bin/ │ ├── generate_db.rs │ └── list_boards.rs └── vendored/ ├── linuxdeploy-aarch64.AppImage └── linuxdeploy-x86_64.AppImage