Yane 0.6.6: Super Mario Bros 3 Yane 0.6.6: Double Dragon 3 Yane 0.6.6: Mega Man 5

What Is Yane?

Yane is an acronym for Yet Another Nes Emulator. Yane is a development version of a NES emulator. It supports basic functionality, such as:

Yane is only capable of playing ROMs of the following types:

Some games that are playable with Yane:

Yane was written in the Code::Blocks IDE using C++11. Libraries used:

Purpose

I created Yane because of several reasons:

Yane is not built for speed, cycle accuracy, rom compability, etc. One goal of Yane was to be able to play Super Mario Bros 1. Yane should only be used a reference for other projects. It should probably not be used for serious NES gaming.

Contact: robin (at) alike.se

Instructions

Install Libraries

Debian/Ubuntu:

# sudo apt-get install libsdl1.2debian libsdl-gfx1.2-4 libsdl1.2-dev libsdl-gfx1.2-dev

Red Hat/Fedora:

# sudo yum install SDL SDL-devel SDL_gfx SDL_gfx-devel

Compile

Download the Yane source code:

# tar zxvf yane-0.6.6.tar.gz
# cd yane-0.6.6
# make

Run Yane

Usage:

Usage: yane [options] --rom <ROM_FILE>:
  --version                    Show version
  --help                       Show this help message
  --rom arg                    What iNES rom file to use
  --nes-test                   Treat rom as nestest (adjusted reset vector)
  --blargh-test                Treat rom as blargh test (polls 0x6000 for 
                               results)
  --log                        Enable logging of instructions (nestest format)
  --rom-info                   Display rom headers
  -f [ --fullscreen ]          Use fullscreen mode
  -r [ --renderer ] arg (=sdl) Use another render engine (default: SDL)

Credits

Screenshots

Early versions

Yane ?: Donkey Kong Jr (basic PPU)

0.1

Yane 0.1: Donkey Kong Jr (attribute data) Yane 0.1: Donkey Kong Jr (8x8 sprites)

0.2.0

Yane 0.2.0: Super Mario Bros

0.3.0

Yane 0.3.0: Mario Bros (controller support) Yane 0.3.0: Mario Bros Yane 0.3.0: Pacman

0.4.0

Yane 0.4.0: Blocks (horizontal scrolling) Yane 0.4.0: Mario bros (vertical scrolling) Yane 0.4.0: Super Mario bros (palette fix)

0.4.3

Yane 0.4.3: Balloon Fight Yane 0.4.3: Excitebike Yane 0.4.3: Ice Climber

0.4.8

Yane 0.4.8: SMB1 Yane 0.4.8: SMB1

0.5.0

Yane 0.5.0: CMCWavy Demo Yane 0.5.0: Dragon Power Yane 0.5.0: Mega Man Yane 0.5.0: Mega Man Yane 0.5.0: Metal Gear Yane 0.5.0: Super Mario Bros (scrolling glitches fixed)

0.6.1

Yane 0.6.1: Darkwing Duck Yane 0.6.1: Lemmings Yane 0.6.1: Mega Man 2 Yane 0.6.1: Metroid Yane 0.6.1: Paperboy

0.6.5

Yane 0.6.5: Super Mario Bros 3 Yane 0.6.5: Super Mario Bros 3 Yane 0.6.5: Super Mario Bros 3 Yane 0.6.5: Double Dragon 3 Yane 0.6.5: Crossfire Yane 0.6.5: Kid Klown Yane 0.6.5: Mega Man 4 Yane 0.6.5: Mega Man 5

TODO

Passed Tests

CPU

instr_test-v3

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

instr_misc

01-abs_x_wrap.nes
02-branch_wrap.nes

cpu_reset

ram_after_reset.nes
registers.nes

PPU

ppu_vbl_nmi

01-vbl_basics.nes
02-vbl_set_time.nes (except: 04 V -)
03-vbl_clear_time.nes
04-nmi_control.nes

blargg_ppu_tests_2005.09.15b

palette_ram.nes
power_up_palette.nes
sprite_ram.nes
vram_access.nes
vbl_clear_time.nes

sprite_hit_tests_2005.10.05

01.basics.nes

sprite_overflow_tests

1.Basics.nes

References

General

Nintendo Entertainment System Documentation, by Patrick Diskin
Nintendo Entertainment System Documentation
NTSC 2C02 technical reference
NES emulator development guide
Everynes - Nocash NES Specs

CPU

6502/6510/8500/8502 Opcode matrix
6502 Microprocessor
CPU unofficial opcodes

PPU

Name tables
Attribute tables
Pattern tables
The skinny on NES scrolling
skinny.txt
Blargg's PPU info
PPU Nametables
Loading backgrounds
how and when to invert sprite virtically ?
Scrolling

Controller

Controller Reading
Standard Controller

Mappers

Comprehensive NES Mapper Document v0.80
MMC 1
MMC 2
MMC 3
Wiki MMC1
Wiki MMC2
Wiki MMC3
Kevin Horton: MMC3

Tests

Emulator tests
A few NES PPU test ROMs

Misc.

CHR-ROM vs CHR-RAM
Programming that 8-bit beast of power, the NES
NMI & IRQ
Emulator's main loop problem
Is Super Mario Bros. the most challenging game ever?
confused about something about sprite rendering
The NES Technical / Emulation / Development Frequently Asked Questions Document