TriCNES, or "Coin's Contrabulous Cartswapulator", is a Nintendo Entertainment System emulator written by Chris "100th_Coin" Siebert with a focus on test-driven accuracy. This emulator was originally made in order to experiment with a theorhetical arbitary code exploit I created titled "Intercycle Cartridge Swapping" where the NES cartridge is replaced every CPU cycle in order to run custom code. Intercycle Cartridge Swapping was later verified to work on real hardware by Youtube user Decrazyo.
This NES emulator was built from the ground up starting from a blank .net winforms project
This emulator does not produce audio.
This emulator only accepts inputs in the form of a TAS file. (This is fixed in the dev build)
This emulator can only run NTSC cartridges properly.
This emulator only supports the following mapper chips:
Due to varying emulator accuracy, this emulator is not guaranteed to sync all TAS files. Despite this, it supports loading inputs from the following formats:
In addition to those TAS file types, my emulator can also load my very own intercycle-cart-swapping TAS format, .3ct.
TAS files that were made with the intention of swapping cartridges between cycles are stored in the following format.
The first line of the file is an integer, indicating how many cartridges are being used for this TAS. This integer will be called 'n'.
The following 'n' lines are local file paths to the ROMs you wish to use. This will set up an array of cartridges.
The remaining lines until the end of the file are in the following format: "x y" where an integer 'x' is seperated from an integer 'y' with a space.
When the TAS is being played back, before CPU cycle 'x', swap to the cartridge at index 'y' into the cartridge array.
Here's an example:
5 Super Mario Bros. [!].nes Dash Galaxy in the Alien Asylum (U) [!].nes Kung Fu (JU) [!].nes Pipe Dream (U) [!].nes Super Mario Bros. 3 (U) (V1.1) [!].nes 6 0 7 1 8 2 9 3 10 4
In this example, there are 5 cartridges. Before cycle 6, the emulator will swap to Super Mario Bros. [!].nes, as that is index 0 into the cartridge array. Before cycle 7, the emulator will swap to index 1, Dash Galaxy in the Alien Asylum (U) [!].nes, and so on.
337 followers · starred Apr 2025
296 followers · starred Mar 2025
2,187 followers · starred Jan 2026
147 followers · starred Mar 2025
TriCNES, or "Coin's Contrabulous Cartswapulator", is a Nintendo Entertainment System emulator written by Chris "100th_Coin" Siebert with a focus on test-driven accuracy. This emulator was originally made in order to experiment with a theorhetical arbitary code exploit I created titled "Intercycle Cartridge Swapping" where the NES cartridge is replaced every CPU cycle in order to run custom code. Intercycle Cartridge Swapping was later verified to work on real hardware by Youtube user Decrazyo.
This NES emulator was built from the ground up starting from a blank .net winforms project
This emulator does not produce audio.
This emulator only accepts inputs in the form of a TAS file. (This is fixed in the dev build)
This emulator can only run NTSC cartridges properly.
This emulator only supports the following mapper chips:
Due to varying emulator accuracy, this emulator is not guaranteed to sync all TAS files. Despite this, it supports loading inputs from the following formats:
In addition to those TAS file types, my emulator can also load my very own intercycle-cart-swapping TAS format, .3ct.
TAS files that were made with the intention of swapping cartridges between cycles are stored in the following format.
The first line of the file is an integer, indicating how many cartridges are being used for this TAS. This integer will be called 'n'.
The following 'n' lines are local file paths to the ROMs you wish to use. This will set up an array of cartridges.
The remaining lines until the end of the file are in the following format: "x y" where an integer 'x' is seperated from an integer 'y' with a space.
When the TAS is being played back, before CPU cycle 'x', swap to the cartridge at index 'y' into the cartridge array.
Here's an example:
5 Super Mario Bros. [!].nes Dash Galaxy in the Alien Asylum (U) [!].nes Kung Fu (JU) [!].nes Pipe Dream (U) [!].nes Super Mario Bros. 3 (U) (V1.1) [!].nes 6 0 7 1 8 2 9 3 10 4
In this example, there are 5 cartridges. Before cycle 6, the emulator will swap to Super Mario Bros. [!].nes, as that is index 0 into the cartridge array. Before cycle 7, the emulator will swap to index 1, Dash Galaxy in the Alien Asylum (U) [!].nes, and so on.
337 followers · starred Apr 2025
296 followers · starred Mar 2025
2,187 followers · starred Jan 2026
147 followers · starred Mar 2025