Category Archives: Emulation

Any-Yes: A Cycle-Accurate Java NES emulator

I present Any-Yes, my attempt at a cycle-accurate NES emulator. I’ve been spending a lot of my free time lately working on this project, and I think it’s good enough for an initial release.
Any-Yes 0.1.0

I have some cool plans for Any-Yes, I plan to carve out some unexplored niches in NES emulation with it.

I’ll let some screenshots and the readme text do the rest of the talking:

Some features of note include NTSC simulation, gameplay recording, mid-instruction cycle-accuracy, game genie support.
Currently Supported Mappers: 0, 1, 2, 3, 4, 5, 7, 9, 10, 11, 13, 16, 19, 28, 66, 69, 71, 118, 119, 140, 163, 228, 232

Many difficult to emulate games work correctly, such as BattleToads, Bee-52, Mig 29 Soviet Fighter, and Crystalis to name a few.

> Operating Any-Yes
To run: You must have Java installed. Simply double click the .jar file if you are in Windows.
If that doesn’t work, or you are in Linux, run this command:
java -jar any-yes.jar

Put ROMs in the included ROMS folder, which is the easiest method of accessing them.
You can also navigate to whereever they are using the built-in file browser, but it’s still somewhat of a work in prgress.

The file browser is simply a frontend. To set key mappings and other options, you must launch a game.
To navigate, click files or directories. To go up to a previous directory, click the folder name in the top bar.
If you need to change the start-up directory, edit last_dir.txt, which is in the loader/config/all/ subdirectory of the config location (see below)

You can make the window large by double clicking the title bar, or dragging the edges to resize. True fullscreen support will come soon.

Zip support is very temperamental, some zip files refuse to open currently. If you run into this problem, please unzip the rom and try again.

> Configuration
To map controller controls:
Press Escape while in a game
Click “Map Controls”
Currently cannot remap keyboard controls.

All config data currently is put in:
Windows: :/vnand/
Linux: ~/vnand/
(VNAnd is the name of a larger multi-emulator platform I am working on, of which Any-Yes is a module)
Any-Yes specific data and configs are in the engine_data/any-yes subdirectory.

> Recordings

Some notes about the recording system:
Press R or click “Create” in the menu to begin recording.
Press R again or click “Finish” to complete the recording.
Press T to play the recording. Currently you can only have one recording at a time per game, to have more, move the recording file for that game.
You can make a recording over multiple play sessions by saving the state (F5) while recording. If you load the save state later, it will continue recording.

> Key list

Escape: Toggle Pause / Menu

Q – toggle NTSC simulation
W – toggle linear screen filter
S – toggle scanline overlay

` – hold for fast forward

R – toggle recording
T – play recording

F1 – quick save state
F2 – quick load state

F5 – save state file
F6 – Load state file

Arrow key – D-Pad
Z – B
X – A
Tab – Select
Enter – Start

> Upcoming Features

Some lofty and not-so-lofty upcoming features I plan on supporting:

– Rewind
– Game Manual / Cover archival
– Better frontend
– Android (Mostly working)
– Neural Network to learn to play games (via reinforcement learning, think Mar I/O)
– Javascript plugins
– External hardware simulation (plug and unplug virtual controllers, TVs, etc in a visual way)
– Fast cycle-innacurate core