Other Modes

  • See below for how Offset-Per-Tile modes work

Most SNES games use Mode 1 most of the time. It gives you 2 layers of 16 color per tile, and 1 layer of 4 color per tile. All the other blog pages cover Mode 1, and I think we’ve talked enough about that. Let’s take a look at examples of games using the other modes.

Mode 0

(4 layers of 4 colors per tile)

The only advantage is the extra layer. (Well, also the graphics are half the size in this mode.) Very few games use this except for screens of text. (Final Fantasy 2, US)

I found a game that uses it for regular game play. Bart’s Nightmare uses it, I guess to have an extra layer.
The bus is a layer, the tree in front of it is a layer, the tree behind it is a layer, and there is a house layer behind that. 4 colors per tile works ok for a cartoon style, but I would rather have 16 colors to work with.

Mode 2

This is similar to Mode 1, but with only 2 layers of 16 color per tile. This is an Offset-Per-Tile layer, meaning that the screen can ignore the scroll value and instead have a unique scroll value per column (it should really be called offset-per-column). I will talk about it a little more below.

Yoshi’s Island really makes good use of this mode in the “Touch Fuzzy Get Dizzy” level.

Where it is raising and lowering each column individually.

Tetris Attack uses Mode 2 to raise the game board as you play.

And, Prehistorik Man uses it for this level, to tilt the platform.
The vertical offset works very well, but the horizontal shift is more limited, only allowing course 8 pixel shifts. I wouldn’t think horizontal offset is useful at all, but Super Genjin 2 (sequel to Super Bonk) uses it for a neat effect on the title screen.

Another Mode 2 example is Shin Nekketsu Kouha – Kunio-tachi no Banka. The bridge moves in waves.

Mode 3

Mode 3 has 1 layer 256 color and 1 layer 16 color per tile. You see it a lot in title screens and cut scenes. Personally, I think this has the highest quality images. The graphic files are 2x as big (8 bits per pixel instead of 4 bpp). One advantage of this mode, you don’t need to align graphics to a grid. All tiles have use of all colors in the palette.

Though, you almost never see games use Mode 3 for actual gameplay. I found only 1 game that does: NBA All-Star Challenge.

It’s a one-on-one basketball game. Nearly every screen in this game uses mode 3, like this.

If you are going to use mode 3 with sprites, you need to reserve some colors for the sprites… so technically the BG graphics should use maybe 128 colors, because sprites need to use the 2nd half of the CGRAM.

Mode 4

Another Offset-Per-Tile mode. You get 1 layer of 256 color and 1 layer with 4 color per tile. This is rarely seen, and only one game I know uses the offset OPT system. Bust-A-Move uses it for regular gameplay, and only to slightly jiggle the pieces once in a while. But any other time the pieces move (like when they fall), they are sprites.

A few other games use Mode 4 without using the Offset-Per-Tile. I guess they wanted the second layer to use 4 color graphics instead of 16 colors (like Mode 3).

Direct Color Mode

This mode is an option for any 256 color layer (such as Mode 3, 4, or 7), to ignore the palette and use the graphic data as an RGB value itself (R3,G3,B2 plus each tile can add another R1,G1,B1). It’s actually lower quality than standard 256 colors, so it was almost never used, except for this map in ActRaiser 2.

Mode 5

This is the High Resolution Mode. 1 layer of 16 color per tile, 1 layer of 4 color per tile. It has these weird 16×8 tiles which squish down into 8×8 on screen giving a sharper image (double the horizontal resolution). The graphics would have to be twice as big (takes up 2x as much VRAM). This mode was rarely used, and typically only for the text of some Japanese only games. Romancing Sa-Ga 3.

Another game (not shown) that uses Mode 5 is Seiken Densetsu 3, for text.

In Modes 5 or 6, you could also turn on “Interlaced Mode” which (only for these Hires Modes) increase the vertical resolution as well. Interlaced Mode can cause some flickering on the screen, on some TVs. The graphics would use 4x as much space, making it very difficult to fit into the VRAM. The only game that used it for standard gameplay is the US version of RPM Racing.
And, I also found 1 other game that used Mode 5 + Interlaced… A.S.P. Air Strike Patrol use it for this screen (and one other screen, for the bottom 1/2 the screen, for the text). Again, because it is very difficult to fit a full screen worth of Mode 5 + Interlaced graphics into the VRAM, it would not be ideal for standard gameplay.

You might notice that the upper right 3 boxes aren’t quite as sharp as the rest of the screen (like the guy with headphones on). Those are sprite graphics. High Resolution only affects backgrounds.

Mode 6

I haven’t found an example of this. It is a HiRes mode with 1 layer of 16 colors per tile. It also has Offset-Per-Tile mode, like mode 2. No game uses this mode.

I just want to point out that I did some testing, and old CRT TVs tended to blur a bit, and didn’t really have the ability to generate 512 pixels wide, so the final result was not nearly as good as I was expecting. That would explain why so few game developers used the High Resolution modes.

However, emulators do a much better job, so maybe these modes could work for future homebrew development. One option, to get around running out of VRAM space, would be to split the screen, and use Mode 0 for the top (HUD) and then Mode 5 for just part of the screen.

Unfortunately, there are no good tools for creating Mode 5/6 game levels. I had to manually type the map data in a hex editor when I was testing these modes.

Pseudo HiRes Mode

For Modes 0-4, you can kind of fake High Resolution, by turning on the Pseudo HiRes. Unlike the Mode 5 (which uses 16×8 tiles)… Pseudo HiRes uses the standard 8×8 tiles, but it draws the pixels half wide and alternates between the Main Screen pixel and the Sub Screen pixel… so it squeezes 2 different pixels into the normal 1 pixel size, doubling the horizontal resolution. It goes without saying that this would be complicated to set up since the graphics would have to be split pixel by pixel into 2 different CHR files, and “why wouldn’t you just use HiRes Modes 5/6?”

Well, the way games actually used it was for a 50% transparency effect, because if you put different layers on Main Screen than on the Sub Screen, they blended together. Old TVs tended to blur this, and it would look like this (Jurassic Park, look at the yellow things at the bottom).

If you look closely in an emulator, you can see how it alternates between the pixel on the Main Screen and the pixel on the Sub Screen.

Another game that does this is Kirby’s Dreamland 3. There is an area with trees that uses Pseudo HiRes to make a transparency effect.

For transparency effects, most games use Color Math (Add with Half) to blend the Main Screen and the Sub Screen. I recommend you use Color Math, because you have more control and it will look better. Some emulators even fail to emulate Pseudo HiRes mode correctly.

Mode 7

This mode really deserves its own page, there is just so much to talk about. You get one layer with 256 colors that can be stretched, skewed, and rotated. Any time you see something zoom in or out, that’s mode 7. One limitation, you get only 256 tiles max, and those individual tiles can’t be flipped. All layering effects have to be done with sprites. F-Zero has a perspective effect by zooming in as the screen gets closer to the bottom.

More Mode 7 effects. Yoshi’s Island.

Contra 3.

Final Fantasy 6

Super Castlevania 4

Super Mario Kart

.

.

.

.

How Offset-Per-Tile Modes Work

Modes 2, 4, and 6 have the option to use Offset per Tile Mode (also called Offset Change Mode).

Mode 2 and 6 works like this. You put the table of offsets where layer 3 map should be (neither of these modes has a layer 3). The first part of the table affects horizontal shifting (course shifting only) and the second part of the table affects vertical shifting (fine 1 pixel shifts). You don’t have to enable layer 3 on the main screen, just layer 1 (and/or layer 2).

It should really be called Offset-Per-Column, since each value affects an entire column of the screen. There are 32 columns times 2 bytes per column is 64 bytes for horizontal offset followed by 64 bytes for vertical offset. The left most column of the screen is unaffected by offset-per-tile… it will use that layer’s usual scrolling values. So, the first entry in the OPT table affects the 2nd column, and so forth. And, the right most OPT value is for when the screen isn’t exactly aligned to a tile (horizontal scroll & 0x07 != zero) , so you can see a portion of a 33rd column on the far right. Some games use a window to hide the left most 8 pixels of the screen so it doesn’t have to manage that part, which isn’t affected by OPT.

When I first tested this mode, I thought that the OPT values in layer 3’s map correspond to layer 1’s map. But that was wrong. They correspond to the screen itself. Like, if you divide the visual picture into 32 columns. As the layer scrolls horizontally, the offset will apply to a different tile column. It is a particular column on screen that is affected, not a particular column in the map.

Just to keep things simple, we will put our offsets at the start of layer 3’s map. You probably don’t want to use horizontal offset (using map addresses 0-0x1f), so add 0x20 to the start of the layer 3 map to place your vertical offset values. The bit order works like this…

bit 15 = 0 H, 1 V (for mode 4 only)
bit 14 = BG2 affected
bit 13 = BG1 affected
10-12 = unused
0-9 = scroll offset

(lower 3 bits of horizontal offset are ignored)

So, if you wanted a vertical offset, affecting BG1+2, with an offset of 3…

111xxx00 00000011 = $e003

Really, in mode 2 or 6 you don’t really need that upper bit, so $6003

And that offset value completely overrides the vertical scroll for that column. It’s not added to the vertical scroll, but it replaces it entirely.

For Mode 4, you can’t do both horizontal and vertical OPT, you have to choose (per column) which one you want. The data will start at the beginning of layer 3’s map, just 1 set of values, and bit 15 of each value will determine if that column will offset horizontally or vertically.

You might ask yourself, will I still be able to scroll the level? Yes. Horizontally. We just need to make sure that the first 32 values in map 3 are zero, so that the “affect layer 1” and “affect layer 2” bits are off. Thus, horizontal scrolling will function as normal. (except for Mode 4, in which the first 32 values are the only values, in which case you make sure that the upper bit “H or V” is set, then OPT will only affect V, and horizontal scrolling will work as normal).

One more detail. They made it so you can have multiple OPT tables stored in the map 3 (in VRAM). Registers $2111 (BG3HOFS) and $2112 (BG3VOFS) are used to switch between the different tables. If you are doing what I said above, where the OPT values are at the start of map 3, you need $2111 and $2112 to be zero. If they are not zero, then d3-d7 of these registers will change the start location of the OPT table. These bits are the ones I mean.

00000000 11111000

and the calculation is like this. (where register $2109 defines the start of map 3)

OPT table = map 3 base address + ($2112.d3-7 * 32) + ($2111.d3-7).

Personally, I would just keep $2111 and $2112 as zero and just update the table every frame. It’s no big deal to do 32 writes per frame. You will probably want a local copy of the values anyway… so that you have something to check for collisions with objects.

.

I made some example code for Mode 2.

https://github.com/nesdoug/SNES_MODE2

.

.

Here’s a nice video covering all the modes, 0-6.

.

SNESMOD

Another option for SNES audio is SNESMOD. It doesn’t have its own tracker, but you would use OpenMPT in the IT format, and save the file as an IT file. SNESMOD comes with a converter program called smconv.exe which can turn the IT file into a soundbank that can be used in a game. (It can, optionally, convert the IT into an SPC file to be used as a standalone music file).

https://github.com/mukunda-/snesmod

This is the original SNESMOD, and Mukunda has been nice enough to change the license to a more permissive open source (MIT). And, because of that I have gone and modified both the SPC and the SNES code. The SPC code (tree/master/driver/spc/sm_spc.asm) is supposed to be assembled with TASM using the TASM07.TAB file as the table… but I found it easier to assemble it with ca65 using blargg’s macro pack.

You can find both TASM and smconv.exe in the PVSNESLIB repository. Also the SPC code here has a bug fix that is missing from the original version.

https://github.com/alekmaul/pvsneslib/tree/master/pvsneslib/snesmod

https://github.com/alekmaul/pvsneslib/tree/master/devkitsnes/tools

(by the way, absent is the TASM documentation, which I found online. As far as I know, it is not freeware, and it asks that you pay for a license and register each computer that uses it… which is another reason that I suggest you use ca65 if you need to reassemble the SPC code). It didn’t assemble perfectly at first, but I only needed to make a few minor syntax changes to get it to work.

https://github.com/nesdoug/SNES_14_SNESMOD

OpenMPT

This is what you will use to make the IT files. I really thought this would be easier than SNESGSS, but surprisingly I had several difficulties. Let’s go over this really quick.

File/New IT file.

You will see 5 tabs: General, Patterns, Samples, Instruments, Comments

First thing you should do (in the General tab) is to click the button that says IT…32 channels, and set it to IT…8 channels.

Then click on the Instrument tab, and click the folder icon (import instrument) to load… and you select your .wav files. It will load it both as a sample and as an instrument. You can go back to the Sample tab if you want to turn on looping and edit the start/end point.

Back to the Instrument tab, you will want to give it a volume envelope. So at the bottom click “Vol” and move and add dots to create a volume envelope for the instrument. If you like, you can loop the envelope, or part of the envelope. You could use this to make a tremolo effect (like a vibraphone).

Then you write the song in the Pattern. Select an instrument and a column and press keyboard keys to enter notes. Personally, I changed the keyboard layout to be more like Famitracker… View/Setup/Keyboard/Keyboard Mapping-Import Keys then find the More Keymaps folder and select one. I can’t remember which one I chose… maybe it was UK_IT2 (?).

This is part of where I had confusion. To play just the current pattern, you click the arrow buttons that point down below the Pattern Tab… but it will keep looping back to the same pattern. If you want to play not looped, as in to hear the whole song, you press the arrow above that (next to the word octave).

Each column is NOTE, VOL, INSTRUMENT, then EFFECT.

To add a new pattern, you right click on the next blank pattern box and select Create New Pattern.

Here are the effects that are supported by SNESMOD.

A = song speed (ticks per row)
B = set position (jump backwards to a specific pattern #)
C = pattern break (jump the the next pattern) [must be C00]
D = volume slide (fade in/out)
E = pitch bend down (for 1 line)
F = pitch bend up (for 1 line)
G = portamento speed (turns off once it hits the target note)
H = vibrato speed,depth
J = arpeggio +x semitones +y semitones
K = volume slide + vibrato
M = channel volume
N = channel volume slide
O = (I don’t think this is supported) **
P = pan slide
Q = retrigger
S = special (see below) *
T = set tempo (BPM)
V = global volume
X = set pan

*S01 – Turn off echo for channel.
S02 – Turn on echo for channel.
S03 – Turn off echo for all channels.
S04 – Turn on echo for all channels.

** The spc code sets t_sampoff, but never uses it. Makes me think it doesn’t do anything.

Oh, and to do echo settings, you have to put it in comments, like this…

[[SNESMOD]]
edl 4
efb 90
evol 70 70
efir 127 0 0 0 0 0 0 0
eon 1 2 3 4 5

edl = echo buffer size x $800 bytes, affects delay time.

efb = feedback, don’t set it too high

evol = echo volume L and R

efir = FIR filter settings

eon = which channels to have echo on.

You don’t need to use Sxx effects to turn echo on at the start of the song, it does it automatically.

I wrote a whole page about why you should use mono WAV files at sample rate 16000 and tune the samples to B+21 cents. 16000 to reduce file size without loosing too much high end. B+21 so that you can perfectly loop short samples with the BRR compression limitation of 16 samples per block. That is still my recommendation here. Use short samples if possible, there isn’t very much ARAM space and all the used samples need to fit into 64k along with the SPC code and the echo buffer.

Why B+21 Cents?

Once the song is done, save the IT file. smconv.exe can convert it into soundbank. (It’s a command line program). -s puts it in soundbank mode (otherwise it will generate an SPC file). One interesting point here… if you specify multiple .it files, it will put them all into the same soundbank. However, it may be a waste of space since (I think) it will duplicate the samples, even if the same sample is used in multiple songs.

If you used that method, when you go to LOAD the song, you use #0 for the first song, #1 for the second. Again, I don’t think this is the best use of space. Here’s what I recommend for putting multiple songs in…

You make one song that has multiple songs back to back in it. At the end of each song you insert a Bxx effect to loop back onto itself. So each song would be a closed loop to itself. When you go to PLAY the song, you select the pattern # of the start of the song as the parameter you send when you call it. It’s a bit more of a pain to set it up this way, but (I think) you save ROM space, as samples used in multiple songs would only be stored once.

You might need many many songs, and this method won’t be enough, because you will run out of ARAM space to fit all the song data. In that case, you will need to make multiple soundbanks.

Another advantage of this (multiple songs squished together into one song) approach is that you can switch back and forth between songs without having to wait for a it to be transferred from the SNES ROM to the ARAM. You only have to wait at the beginning when you initially load everything.

When you include the soundbank to the SNES source file, it needs to be located at the very beginning of a bank. If you have multiple soundbanks, each needs to be at the beginning of a bank (ie, address $8000 in LoROM mapping).

For sound effects, you can make a separate soundbank… just an IT file with no song, just samples, converted by smconv into a soundbank. Or, you can use the existing song soundbank to store your samples, but there is a caveat. The song samples use a different table than the sfx, so you will have to load the sample, which might be a duplicate of a sample in the song… ie. you would have to copy the same sample in twice. But, I made a function (spcClone) so you don’t have to have 2 copies of the same sample to use them both in the song and as a sfx.

If you opt to use the streaming functions, you don’t need a soundbank, you need a BRR file (without the 2 byte loop address at the beginning, like you might find on BRR files at SMWcentral). The BRR file should exactly be divisible by 9. If it isn’t, then you will have to strip the 2 bytes off the beginning of the file. You can use brr_encoder.exe from brrtool to convert a WAV to BRR. There is an app called snesbrr.exe in the pvnsneslib github that probably does the same thing.

You need to allocate room for the streamed sample with spcAllocateSoundRegion. Send the size of the largest BRR you might use / 256 and round up) so that it can reserve space for it. This needs to be done before you Play the song. Don’t use spcAllocateSoundRegion while a song is playing. Interesting side note, there is no error check in the SPC code on size… if you load a lot of big files with spcLoad or spcLoadEffect, it could overflow into the echo buffer or the sound region.

But (to use the streaming functions) you also need to make an 8 byte array…

1 = pitch (1-6)

2 = pan (0-15)

3 = volume (0-15)

4-5 = length of the BRR / 9

6,7,8 = long address of the BRR sample

and pass the address of this array to spcSetSoundTable()

Then you call a play the sample with spcPlaySound, spcPlaySoundV, or spcPlaySoundEx and the sample will stream in as it plays.

So.. confession time. I removed the streaming functions from my version. I had modified the SPC code and I made it too big and the streaming code overlapped where the module loads, and it would crash if you tried to play a streamed sample. You can modify where the module loads, but that breaks the song playing code, because the song pointer table will be in the wrong location, and so I would need to modify the smconv.exe source code… etc, etc, etc. and I didn’t do that. The easiest thing was to disable streaming.

But, I believe I made the regular sfx playing functions robust enough that we don’t need it. Also, the streaming function had very limited ability to repitch the sample. Furthermore, it sometimes didn’t work right, such as for PAL systems. I didn’t really want to use the streaming much.

Let’s look at the files we need. In my project (SNES 14) in the SNESMOD folder there is a file called sm_spc.s which is the SPC program code. spc-ca65.asm is the macro pack from blargg that allows us to assemble this file with ca65. The output file is called snesmod_driver.bin and that is what we are sending with the spc boot code. I just .incbin it between these labels SNESMOD_SPC and SNESMOD_SPC_END.

Over in the MUSIC folder is smconv.exe which I used to convert the .it files into soundbanks (the .bank files). The other files generated (.asm and .inc) aren’t interesting to me.

Also in the MUSIC folder, snesmod_ca65.asm has our SNESMOD 65816 functions. I made some changes. Also, the SFX_LIB.asm has some functions for generating a sfx sequence. SFX_DATA.txt is the data for those sequences.

SNESMOD Functions

spcBoot – call this at the very beginning to send the SPC program over to the ARAM.

spcSetBank – tells the Loading functions where our soundbank is located. Use it before spcLoad and again before spcLoadEffect.

spcLoad – loads a song (and its samples) to the ARAM. (Also, it resets the sfx loader back to zero). The parameter is if you have multiple songs loaded to the same soundbank.

(Note, spcLoad takes a long time, maybe even several seconds to complete)

spcPlay – plays a song. The parameter is the starting pattern #.

spcStop – stops the song

spcSetModuleVolume – sets the volume for the song (0-255)

spcFadeModuleVolume – fade in or out the song volume

spcLoadEffect – loads a sfx sample (up to 16). The parameter is the position of the sample in the soundbank, which may or may not be the same as the “id”, which depends on the order that the samples are loaded as effects.

spcEffect – plays a sfx sample. The parameter is the “id”

spcProcess – call this once per frame. Several of the functions above do nothing at all until spcProcess is called. They are stored in a queue and sent to the SPC one at a time.

Functions I removed —

spcTest – didn’t seem to do anything useful

spcAllocateSoundRegion – tells the SPC how big the streamed BRR might be

spcSetSoundTable – sets pointer to an 8 byte array (see above) describing the BRR sample. You need 8 bytes per BRR sample you would use.

spcPlaySound – play the streamed sample (using that 8 byte table)

spcPlaySoundV – same, but with custom volume setting

spcPlaySoundEx – same, but you manually send it the settings (volume, pitch, pan)

spcProcess calls spcProcessStream, which needs to run every frame

Note, streamed sound always plays on channel 7.

Functions I added —

spcGlobalVolume – set the volume level for everything (except echo) (0-127)

spcEffect – has been modified so pitch can now be 0-60 which corresponds to C2 to C7.

Before, it was volume, pan, pitch, and id. Now it’s just volume, pitch, and id.

Note, I made it so that sending a volume of zero will cancel the effect.

spcFxParams – additional parameters. Call this before you use spcEffect. It is used to set the pan and which channel the effect will go to. Originally, you wouldn’t get the choice, it would alternate between channels 6 and 7.

spcClone – copy the pointer for a BRR from the song table to the sfx table. Do this after loading the song to the ARAM. This is so you can use a BRR sample from the song as a sound effect without having to have 2 copies of it. (I’m using the word clone in the sense that it is used in programming, which is that the data itself is not copied, only creating a 2nd reference to the same data.)

Functions in SFX_LIB —

Sfx_Stop_All – stops the sound effects

Sfx_Queue – use this to call a sound effect from the data tables, however only the last sfx called per frame will actually play. It’s not really a cue or stack or whatever, I just didn’t want to call the sfx functions multiple times a frame and waste so much CPU time trying to communicate with the SPC. I believe that allowing only one sfx per frame should be sufficient… however, you might decide that one sfx is more important, and you might have to modify this code so that the more important sfx has higher priority.

Sfx_Process – call this once per frame. It handles new sfx to play (from the queue) and it processes the data of

Notes

If you look at the example, in main.s, you notice that the “id” of each sound effect depends on the order that they are loaded, not the order that they are in the soundbank.

ldx #0 ;saw
jsr spcLoadEffect

ldx #1 ;square
jsr spcLoadEffect

ldx #2 ;piano
jsr spcLoadEffect

So, the 0,1,2 here refers to the sample’s position in the soundbank, and coincidentally since they are loaded in the same order their ID would be 0,1,2 as well. If you changed the order and put ldx #2 ;piano first, then the piano sample would have the “id” of zero (for when you play it with spcEffect). I threw a curveball and put…

lda #1 ;strings
jsr spcClone

and actually, that the string sample would have an “id” of #3 (because of the order of how things were loaded to the SPC). The lda #1 here refers to the position of the sample in the song’s soundbank. If you open the song IT file, this would be the 2nd sample (the first sample would be #0).

Max Sound Effects are 16.

The Data Format

My main goal in modifying SNESMOD was to get a sound effect note sequence. This is what I came up with. Once all the sound effects are loaded, you just call Sfx_Queue to trigger a note sequence. The data for that is store in SFX_DATA.

The data system is fairly easy. 1-127 means wait that # of frames. 0 = end of data. $80-BF = pitches of notes. $C0-CF = id of sample. $D0-DF = pan (L to R). $E0-EF = volume. $F0 = retrigger off. $FF = retrigger on. There is table of constants you can use. Unfortunately, there is no app to generate this data, you just have to type it in.

So… I should explain an important point, the volume and pan don’t go into effect until a pitch is entered (that is just the way I decided, a new pitch is the thing that makes the code send the info to the SPC) which means you would have to send the note signal again, which would restart the note. Because this might sound weird retriggering the note over and over, I made it so you can skip the retriggering part.

Don’t put “retrigger off” before the first note in the sequence. That note needs to be triggered. Also, if you volume down to zero and then have more sequence after that, you will have to retrigger the next non-zero volume part (internally, my SPC code sees a volume of zero as “off”). Retrigger means that it sends a key off and then key on signal to restart the BRR sample.

Maybe I will refactor this in the future. It’s a bit complicated, and some of the data is repetative (putting the same note value over and over). But, it seems to work the way I planned it, and I’m not having any difficulties making data.

One of the key things that I changed is that you can have LOOPED samples for sound effects. That way you could use very small BRR samples… like 128 bytes, for example. How do you loop the sample? In OpenMPT, under the sample tab, change the sample to looped, and change the start and end points of the loop. Keep in mind that the length of the sample and the staring loop point need to be exactly divisible by 16. That is a limitation of the BRR compression format.

Is SNESMOD better than SNESGSS?

SNESMOD has more effects column possibilities, such as arpeggio and volume slide. You can make a more elaborate volume envelope (SNESGSS uses only the built in ADSR), and can make a looped volume envelope for a tremolo effect. It is a little weird that the effects column requires you to put the same effect on every row, where other tools let you use an effect once and it persists until it is shut off.

SNESGSS gives you better information about the size of each thing and how much room you have left. Originally, SNESGSS didn’t have the ability to use echo, but I manage to fix that issue.

I still feel like both of these are acceptable, but need further development.

Note: I’ve been told the version of smconv.exe in my github may have a minor bug that incorrectly calculates the size of some things… although the data seems to be correctly playing back… I’ll assume that the bug makes it more difficult to determine how much space is available. Maybe I can fix this soon.

Sega Genesis FM Instrument Basics

This is a bit off subject for my other topics, but I find this stuff fascinating. The Sega Genesis / Mega Drive has a very interesting FM synth chip, YM2612. It also has a simpler (pulse wave) audio chip, TI SN76489, which isn’t much different from earlier consoles (NES, gameboy, etc), and I won’t talk about that today. It was the FM chip really made Sega Genesis music shine.

This is for newcomers, who are not familiar with how FM synth works, and are wondering how to make their own instruments for it.

I am using Deflemask, set to Genesis. Now, if you click on the “edit” next to the instrument, you get this panel with 100 different settings and it’s not clear what everything does.

So, I’m going to try to make this as simple as possible, so you can understand it. The FM chip is generating sine waves. It generates 4 different sine waves, and their rates depend on the MULT (multiplier) values. Those sine waves could be half speed (MULT = 0), normal speed (MULT = 1), double speed (MULT = 2), or higher. It volumes up or down each sine wave based on a standard ADSR model, and then combines them based on the Algorithm (ALG).

The standard FM synthesis has a carrier wave and a modulator wave.

We start out at Algorithm 4, which has 2 separate sets of FM synth. OP 1 modulates OP 2. OP 3 modulates OP 4. Those are then combined to generate the note. Algorithm 4 is a good place to start.

Let’s simplify it a little more, just for learning purposes. Turn off OP 1, OP 3, and OP 4 by lowering their TL (max volume) to the bottom (127 = silent). That leaves OP 2 as a unmodified sine wave. I raised the S (sustain level) so it’s just a constant tone.

And this is what is generated, just a sine wave. At higher frequencies it sounds a bit like a flute. At lower frequencies it is barely audible.

Because OP 1 is off, it is unmodulated. Let’s turn OP 1 back on, by raising its TL nearly to the top. (Also, I set S, sustain level, to the top so it’s a constant value). TL is very touchy… it’s not linear, it’s some kind of logarithm scale. This is a middle range modulation.

And this is the output.

Half the time, the sine wave is stretched out, and half the time the sine wave is squished in. If we continue to raise the TL (max volume), it gets more and more modulated. The more modulated the sound, the more “interesting” it gets.
And you can go much further, because OP 1 always has the ability to feedback into itself for extra modulation. FB is the feedback level, and it only applies to OP 1.

If you turn it up, while OP 1 has its TL very high, you get so much modulation it turns into noise.

This effect could be used for percussion instruments, such as cymbals.

But, the main takeaway is that OP 1 modulates OP 2, and OP 3 modulates OP 4. Other algorithms modulate in different ways, and I will talk about that later.

.

ADSR

Now, let’s go over the ADSR settings.

First, the TL sets the maximum volume. S sets the sustain volume. The scale is not linear. 0 = 100%, about 8 is 50%, 16 is 25%, etc. It goes all the way to 127, but at 40 it’s already so quiet it’s basically off.

A is the initial fade in period. It raises to the TL level, and then it immediately goes into decay until it reaches the Sustain level, then if D2 is set to the top it will hold until it gets a “note off” signal, and that’s where R (fade out) comes in. But, if D2 is set low, it will automatically fade out after it reaches the sustain level.

“Note off” is the TAB button in the pattern editor. It will say “OFF”.

The ADSR for the carrier wave (in Algorithm 4, those are OP 2 and OP 4) will change the volume of the note. If you want a fade in, you could set the values like this, and increase the attack period.

Or if you want a fade out, you lower S Sustain level and D Decay controls how fast it fades out.

There are thousands of different ways you could adjust these. You could even try to simulate an actual instrument. I took a recording of a piano note…

and adjusted the settings until I got a similar output.

I know this doesn’t look the same, but this was the WAV export…
So, I would conclude that what you see in the Deflemask box isn’t exactly the shape of the output. Attack happens much faster than it appears. I’m not complaining. Just an observation.

But, back on subject. ADSR… how does it affect the modulation wave? Where the value is high, there is more modulation, and when it is low the carrier wave returns to a basic sine wave.

OP 1 will be the modulator for OP 2…

You could keep the modulation wave constant, and get an unchanging tone.

Or you could fade in to get a wah kind of effect (below)

Or, you could start at full modulation and fade it down for a “ow” sound (below)

This is similar to the default instrument that loads in Deflemask, and it is the kind of sound I usually think of when I think of FM instruments. This setting sounds good for most purposes.

Now, I said that this chip only makes Sine waves, but if you do some things, you can kind of fake some other waveforms. If you turn just OP 2 and OP 4 on, and play them at max level with the exact same settings, they combine and the peaks will clip, and it forms square waves.

Interesting effect, but 99% of the time you would want to set the 2 carrier waves to different multipliers.

If you add feedback at just the right level, (carrier wave at MULT=1) you can kind of get sawtooth waves.

I added a little attack fade in, and this sounds a bit like brass.

Most of the instrument design decisions will be carefully adjusting the TL level or the ADSR of the modulation wave. Even slight changes to the modulation wave will sound like a different instrument.

Algorithms

Lets go over the different algorithms in reverse order.

Algorithm 7 has 4 unmodulated sine waves. You would set the multiplier values different for each wave, and it would sound like a church organ.

.

Algorithm 6 has 2 unmodulated sine waves (3 and 4), and it has OP 1 modulate OP 2. It’s basically a single FM synth with some unmodulated sine waves added to it. You could maybe use 3 and 4 at higher multiples to create a chord.

.

Algorithm 5 has 3 carrier waves, and OP 1 modulates all of them. Again, you could make a chord by setting 2,3,4 at different multiples.

.

Algorithm 4 we already covered. OP 1 modulates OP 2. OP 3 modulates OP 4. I like this one best, you have 2 different FM synths to work with. It’s easy to understand what’s going on. The rest of the algorithms below are a bit complex.

.

Algorithm 3 has OP 1 modulate OP 2, which is then added to OP 3 to finally modulate OP 4. You could turn OP 3 off, to simplify it to 1->2->4 modulation chain.

.

Algorithm 2 is similar to 3. OP 2 modulates OP 3, which is added to OP 1 to finally modulate OP 4.

.

Algorithm 1 has OP 1 and OP 2 combine to modulate OP 3 which then modulates OP 4.

.

Algorithm 0 is the most modulated, and typically produces highly noisy sounds (cymbals or electric guitar). OP 1 modulates OP 2 which modulates OP 3 which modulates OP 4. I have seen instruments that just turn off OP 1, because you get enough modulation with just 2,3, and 4.

Now, Deflemask has dozens of FM instruments in a folder for the Genesis that you should try out, and usually you can get what you want by just slightly adjusting the TL on the modulation wave, or slightly adjusting the ADSR levels.

.

A few more buttons

The FMS is frequency modulation, which is vibrato. The AMS is amplitude modulation, which is tremolo. You have to manually click the AM checkbox on each Operator that you want Amplitude Modulation to work. Unfortunately you can’t modify the speed of the FM or AM effects, just the depth.

RS (rate scale, or key scale) shortens the note at higher octaves. I just leave it at 0 or 1.

DT is detune. -3 to +3, and zero is normal. Presumably, you would set different carrier waves to different detuned rates to have them make a wuwuwuwuh kind of effect. This is kind of how a chorus effect works on a guitar.

SSG-EG has different effects depending on the value, some of them are retriggering the note, 5 is a fade in. I don’t really use SSG-EG. Values 2 and 6 continuously fade in and out, which I guess could be used as a slow tremolo effect.

There’s also some other weird mode that involves channel 3. In Deflemask you have to change the system mode to Genesis Ext Ch3. Something like… channel 3 can set 4 different frequencies to play, and those 4 frequencies can be any 4 notes. I’m not really sure how this works, so I won’t say any more.

.

Also…

The Genesis can also use samples. I believe that only one channel can use samples, and they tend to be low quality. I think people use them for drum samples, or a single vocal sample.

.

I plan to make a YouTube video so you can watch me adjust the instrument settings and hear how it changes. It’s on my TODO list.

.

NES VRC7

The Konami VRC7 chip is also an FM synth. It was only used in the game Lagrange Point. It works very similar to the Sega Genesis chip, except that you always have 1 modulation wave and 1 carrier wave. This is from Famitracker.

Unlike the Genesis, you mostly have to use the presets built into it. You can use any of the 15 presets and 1 custom instrument. You can’t play 2 different custom instruments at the same time. Luckily, the presets sound ok.

The ADSR values work like this…

attack (<-slow | fast->)
decay (<-slow | fast->)
sustain level (<-high | low->)
release (<-slow | fast->)

A value of zero (for A,D,or R) = don’t increase or decrease

The “wave rectification” button makes the sine wave do this.

It sounds a bit more like a triangle wave than a a smooth sine wave.

In order to get the VRC7 set, you have to go to Module/Module Properties, and change the dropdown from “NES channels only” to “Konami VRC7”. And in order to test / hear the FM instrument while you edit it, you need to have one of the FM channels selected in the pattern editor. When you add an instrument, if you have a standard NES channel highlighted, it will add that kind of instrument. If you have an FM channel highlighted, it will add that kind of instrument.

Why B+21 Cents?

I keep getting this question, about why I make SNES samples tuned exactly to B+21 Cents.

Let’s start with these premises:

  1. There is a limited amount of ARAM space.
  2. In order to make best use of the available space, we need short, LOOPED samples
  3. BRR samples are made of blocks of 16 samples
  4. End point and Loop point will be exactly a multiple of 16
  5. We don’t want clicks or buzz at every loop point
  6. SNES internal sample rate is 32000 Hz.

Therefore, we must make looped samples that perfectly loop at a multiple of 16 samples. Unlooped samples (drums) can be any frequency, and need no special tuning.

Look at the sine wave here. This is one cycle.

So we need this to exactly be a multiple of 16 samples. The shortest (highest pitch) looped sample we can make is 16 samples per cycle. 32000 samples per second / 16 samples = 2000 Hz. Which is B6+21 cents. Here’s a chart of all the possible tunings for simple, short, looped samples.

32000 / 16 sample loop = 2000 Hz = B6+21 Cents

32000 / 32 sample loop = 1000 Hz = B5+21 Cents

32000 / 48 sample loop = 666.7 Hz = E5+19 Cents

32000 / 64 sample loop = 500 Hz = B4+21 Cents

32000 / 80 sample loop = 400 Hz = G4+35 Cents

32000 / 96 sample loop = 333.3 Hz = E4+19 Cents

32000 / 112 sample loop = 285.7 Hz = D4-48 Cents

…(note, middle C would be here at 261.6 Hz)

32000 / 128 sample loop = 250 Hz = B3+21 Cents

32000 / 144 sample loop = 222.2 Hz = A3+17 Cents

32000 / 160 sample loop = 200 Hz = G3+35 Cents

32000 / 176 sample loop = 181.8 Hz = F#3-30 Cents

32000 / 192 sample loop = 166.7 Hz = E3+19 Cents

32000 / 208 sample loop = 153.8 Hz = D#3-20 Cents

32000 / 224 sample loop = 142.9 Hz = D3-47 Cents

32000 / 240 sample loop = 133.3 Hz = C3+33 Cents

32000 / 256 sample loop = 125 Hz = B2+21 Cents

Given this chart, the most common tuning found is B+21.

So, if we make a perfect loop, the wave will continue infinitely, and a short sample can play as long as you need it with no problems. But, if the loop is even a little bit off, you get weird clicks and buzz.

And it makes sense to tune ALL samples to B+21 so that they are in tune with each other. To do that, I record at C and then slow down the speed by 4.5-4.6% in Audacity. (Effect/Change Speed… Percent Change = -4.6%).

And, I’m sure some naysayer will argue that you could use a number of other tunings, if the loop was longer… say 1000-10000 samples long. Yes, you could just record at C and make a very large loop, and cross fade them, but remember premise 1 above, there is limited ARAM space. We want each sample to be as short as possible.

There might be a few exceptions. Strings (violins) don’t sound very good with a short loop. The best sounding string samples I have heard have a very long loop period… 10000+ samples. But for 99% of samples, I find it’s best to just copy the last cycle, cut to the nearest 16, and then loop that last single cycle repeatedly.

Side note, I usually resample my original samples to 16000 Hz (mono), before importing to SNESGSS. You do that in Audacity by opening the WAV at whatever rate it is. Select and copy it. Open a new file, and change the project sample rate (bottom left) to 16000, then paste the sample. This usually works best in order to reduce file size without losing too much high end. But, sometimes you need 32000 Hz if the sample has a lot of high frequency sounds (for example, cymbals).

FREE SAMPLES !

I have made a ton of samples freely available. Check them out. You need SNESGSS to open these files, and go to instruments to hear them. You can save the instrument (to mix and match). You can extract the original WAV. Or, you can export an SPC file, and then open that with Echo4GSS (an app I made), which can extract all the BRR files.

https://github.com/nesdoug/SNES_13/tree/master/MUSIC/More_Samples

(SNESGSS is in the MUSIC folder also = snesgssQv2.exe)

https://github.com/nesdoug/Echo4GSS/releases/

Most of them were made with Famitracker or Deflemask. The drums are all royalty free samples.

Update 2022

I made some changes to the neslib and nesdoug library files.

There was a bug where, if you called one of the sprite functions at the exact end of the frame, it could have placed only half of a sprite’s data in the sprite buffer before the nmi sent it to the OAM RAM for the next frame. This could cause an incorrect sprite to be be shown.

The nmi code has been modified so that it will only DMA the OAM (sprite data) if you have reached the next ppu_wait_frame() or ppu_wait_nmi(). Now, a lag frame will just result in the previous frame being shown twice, with no changes.

Another change — I removed clear_vram_buffer(). I feel like this is something that should be done automatically, when the vram buffer is copied to the PPU. I have seen people confused as to when to use clear_vram_buffer(), so this should clear up any confusion, it will manage itself.

If you need clear_vram_buffer() for some reason, the code is still there, it’s just commented out (in nesdoug.h and nesdoug.s… and I removed the .export _clear_vram_buffer). You can easily put it back in.

And, I changed the name of flush_vram_update_nmi() to flush_vram_update2(). The name was misleading, the way I was using it — entirely outside of the nmi (ie. pushing updates to the PPU with the screen off).

One caution — split screens still can’t handle lag frames. If you are using a sprite zero split screen, make sure that the code isn’t so complex that it runs past the bottom of the frame. I suppose you could rewrite the nmi code (in assembly) and put the split screen code directly there, to fix it.

I did make sure that the MMC3 code can handle lag frames and do split screens. That is because you can handle the split with IRQs. The nmi code still runs the IRQ function on lag frames.

Minor change — I redid the Full BG and Fade examples. The code is the same, but I thought I could make it look nicer if I used the NESIFIER tool that I made.

old was

new is

More Tools.

Keep watching for updates.

.

M8TE

Here’s another SNES tool that I made. It’s a copy of my previous map editor / tile editor / palette editor, except that this one targets the 256 color / 8bpp modes (Mode 3 and Mode 7).

https://github.com/nesdoug/M8TE/

There is also some example code in the folders that I used to test both modes.

https://github.com/nesdoug/M8TE/tree/master/SNES_MODE3

https://github.com/nesdoug/M8TE/tree/master/SNES_MODE7

.

I will write some more details a little later. Mode 7 is completely unlike the other modes, and will need some explanation. (TODO later)

.

Echo4GSS

Multiple functions:

-Add Echo to the SPC files exported by SNESGSS.
-Make Echo settings file for the nesdoug’s SNES dev music code
-Export BRR files from SPC files exported by SNESGSS.
(also error checks the settings)

https://github.com/nesdoug/Echo4GSS/

(click on Releases to find the .exe)

Also see SNES example 13 to get the latest music.asm file

https://github.com/nesdoug/SNES_13/blob/master/MUSIC/music.asm

.

Now you can set all the echo parameters with one function. SPC_All_Echo

Just pass it a pointer to the 14 byte array that Echo4GSS makes (Settings/save Settings)

and it sets all the echo settings (and the main volume).

See mainB.asm (in SNES_13) for use. And the readme for Echo4GSS should explain it.

SNES main page

SNES Music 2

I added echo functions to SNESGSS.

https://github.com/nesdoug/SNES_13

Again, I only patched the SPC code. You will not notice anything different in the actual app, and you won’t be able to hear the echo effect in the app.

So, I wrote over the streaming functions so they now write to the echo registers. Don’t worry too much about the SPC code itself. When you export from snesgssQv2 it will output a spc700.bin file which will be copied to the Audio RAM on spc_init.

You need to include the newest music.asm file which has these new functions.

Echo_Vol

Echo_Addr

Echo_Fb_Fir

All these functions prefer 8 bit arguments, loaded into A and X, so it’s best to put AXY in 8 bit mode.

.

NOTE – use snesgssQv2. Version 1 has a bug, if you set a echo buffer size of zero, it will crash.

.

Echo_Vol

Sets the Echo Volume, and turns specific channels on or off. Probably, you should set the Echo Volume lower than the Main Volume.

A = volume 0-$7f (0 will turn off echo completely)

X = a bitfield (bit 0 = channel 0, bit 1 = channel 1, etc) 1 = on, 0 = off.

example:

LDA #$50

LDX #$ff ;all channels on

JSL Echo_Vol

Echo_Addr

Sets the Echo Buffer Address, and how big it is ( controls the delay timing)

A = Echo Buffer location (times $100, and the low byte of the address will be 00)

X = Echo Delay 0-$0f (times $800 = buffer size)

A delay value of 0 does actually function and it writes a minimal number of values at the echo buffer address (I think it’s 4 bytes per channel, so 32 bytes total) but you probably don’t want to use such a short delay time. You will probably want to use values 1-5 for the delay ($800-$2800 byte buffer size).

Example:

LDA #$ef ;buffer at $ef00

LDX #$02 ;buffer size = $1000

JSL Echo_Addr

This setup will use $ef00-feff as the buffer.

!!! It is absolutely critical that your buffer address is set higher than everything else loaded to the SPC RAM, and that the buffer size isn’t larger than the remaining space. Also, you probably want to avoid the BOOTROM at $ffc0.

!!! You must have echo volume set to zero when making changes to the echo address. If echo volume is not zero, It can and will destroy all the SPC code/data and probably crash the game. Changing the echo address also takes a very long time, because the code does a mandatory wait loop to avoid this sort of failure. So, probably, you should set the address only once at the very beginning of starting the game.

The SNESGSS app has no way of warning you about your SPC files being in the same location as your echo buffer. You will have to manage this yourself, and make sure you don’t overlap them.

Echo_Fb_Fir

This sets the Echo Feedback Volume and the FIR filter settings. I recommend you don’t set the feedback above $60. It would be like putting a microphone directly in front of a speaker. A FIR filter controls how the echo is processed.

A = 0-3 to select a set of values for the FIR filter. I chose some popular ones.

a = 0 = simple echo = 7f 00 00 00 00 00 00 00
a = 1 = multi echo = 48 20 12 0c 00 00 00 00
a = 2 = low pass echo = 0c 21 2b 2b 13 fe f3 f9
a = 3 = high pass echo = 01 02 04 08 10 20 40 80

X = 0-$7f, the echo feedback volume

Example:

LDA #$00

LDX #$40

JSL Echo_Fb_Fir

Note:

After some consideration, I thought that someone might like to use a custom FIR filter. This could be accomplished by manually patching over the first FIR filter set, at SPC address $3aa (copy 8 bytes here). In the main.asm file, you will see some commented out code at line 180. It’s a bit complex, because patching like this is beyond what SNESGSS what intended to do. After overwriting the table, you have to call echo_fb_fir with A=0 to copy the table to the DSP FIR registers.

Here’s a link for more FIR examples

https://sneslab.net/wiki/FIR_Filter

Turning Echo Off

In the example code, when you touch the yellow square, and it darkens the screen. I added a little bit of code here to also turn off the echo effect. You can do this any time.

lda #$00 ;echo volume off
ldx #$00 ;channels off
jsl Echo_Vol

You can also adjust the echo volume any time.

lda #$40 ;echo volume
ldx #$ff ;all channels
jsl Echo_Vol

SPC_All_Echo

Added Nov 6, 2021.

This function can change all the echo parameters (and the main volume). You need to pass it a pointer to the 14 byte array that Echo4GSS makes (Setting/Save Settings). You need the most current version of music.asm (should say ver 5). See this page for more details…

More Tools.

ANOTHER CHANGE

SPC_Init now can handle an spc700.bin file larger than $8000 (32768) bytes. Even though the spc700 is split accross 2 banks, it will wrap from ffff to 8000 in the next bank (with LOROM = 1 defined in music.asm).

It helps that I remembered that you can split a binary file using extra arguments on the .incbin line. If you look at the bottom of main.asm you see…

.incbin “MUSIC/spc700.bin”, 0, 32768

and

.incbin “MUSIC/spc700.bin”, 32768

The top one says copy 32768 bytes starting at 0. The second one (with 1 number) says to include from 32768 to the end of the file. The file is split across bank 6 and 7, but SPC_Init can copy the entire thing to the SPC RAM.

THE EXAMPLE SONG

I retuned my samples to B+21, and that seems to help on looping samples. But, sometimes I had to crossfade the end point and the loop point. One important thing I learned, for looped samples. You need the end point a multiple of 16 samples and the loop point needs to be a multiple of 16 samples. This is just how BRR compression works. It’s always blocks of 16. Tuning to B+21 makes 16 samples line up much better, but it’s not necessary. I’ve seen samples tuned to F, or other keys. But the cross fading to the loop point is very helpful to create a clean loop (no click).

Here’s a link of me processing audio to work on the SNES.

DEEP IN THE WEEDS

I wanted to give a little more information about SNES Music. Open this link, and let’s review…

https://wiki.superfamicom.org/spc700-reference

The SPC program needs to set DSP variables. Scroll down to “Registers”… these are addresses in the SPC RAM. F2 and F3 are for communicating with the DSP. First you set a DSP address at F2 and then you set the value at F3. Scroll down this link to “DSP Register Map”.

So there are 8 channels, each one has a set of variables. Channel #0 will use 00-09, channel #1 will use 10-19, channel #2 will use 20-29, etc. Volume, Pitch, ASDR. An important one here is called Source Number. That says “which BRR sample?” But how does it know where the samples are?

DSP register 5d is the Source Directory. Whatever value there (x $100) is our list of addresses to the BRR samples. So if the value of the Source Directory Register is 2, the DSP will look for the pointer table at $200. The table consists of 4 bytes per BRR sample, that’s 2 addresses, first the start of the BRR sample, then the loop point of the BRR sample.

So, let’s go back to the Source Number for each channel. That value is multiplied by 4 and added to the source directory base, to locate the BRR sample. Source Number #3, with Source Directory at 2, the pointers to that BRR sample will be at $200 + (3 x 4) = $20c.

If the value at $20c is $1234, then when it will start playing the BRR sample at SPC address $1234. When (if) the sample sees a “loop” in the header, it will look to $20e for the loop point to jump to.

A note is triggered with a KON and stopped with a KOFF signal.

BRR samples is a compression system that always uses blocks of 16 samples. There is a header byte and then 8 bytes of 2 samples per byte. That means a BRR file size will always be multiple of 9. If you find a sample somewhere that isn’t a multiple of 9, it probably has 2 bytes at the beginning of the file that indicates the loop point. You might have to delete those 2 bytes to get a BRR file to work with some of the BRR tools available.

There is no way to import a BRR into SNESGSS, but you can convert the BRR to WAV (with BRR Tools) and load that into SNESGSS.

Exporting an SPC from SNESGSS

See the “More Tools” page for the Echo4GSS app I made.

More Tools.

Interesting Side Note

SNESGSS files (GSM) are text files. They can be opened with a text editor (like Notepad++). This could be a way to copy a song from a one GSM file to another.

.

SNES main page

NESIFIER

Hey, I made an app this week. It can convert an image into a 4 color NES palette image. It can also save as CHR and do different levels of dithering. It runs on Windows computers. It should run on non-Windows computers with MONO.

https://github.com/nesdoug/NESIFIER/releases

Load an image from file, or paste from the clipboard (should be 256×256 or smaller).

Press Auto Generate Palette (or select colors from the NES palette)…(or select colors directly from the image).

Then press “convert”. This is with dithering set to Floyd Steinberg.

And below is Bayer 8×8 positioned dithering.

You can also convert to grayscale first (press the “grayscale” button).

Above is the image converted and dithered in gray.

Sometimes the Auto Generate won’t give the colors you want. You will have to manually change one of the colors. (click on the NES palette, then a box).

And you can save this as an image or as a CHR file for NES game development (nesdev). You can open the CHR file with a CHR editor, like YY-CHR.

You don’t need to use “auto generate palette”. You can click on the NES palette, then a box. You can click on the image itself to pick a color, then a box. You can load a palette from file (12 byte RGB or 4 byte NES).

Terraria Review and Guide

My kids were in love with Minecraft. I bought them Terraria for Wii U because it’s sort of similar. After months of playing they finally got to hard mode (beating the wall of Flesh) but it was immediately way too hard for them and due to loss of data from unknown bugs… we gave up on that. But I decided to try the Nintendo Switch version. After about 6 months, we finally defeated the Moon Lord (final boss) this week.

My thoughts. It’s a very creative game. You can build your houses any way you want. Paint blocks different colors. Make your avatar look a 1000 different ways. Dye your armor different colors. Just endless customizations.

Gameplay is very fun, but hard. Many of the events are just 100s of enemies spawning endlessly. I did not like that. In other games there are a few well designed enemies that you have to learn their AI to defeat. This game is just “lets dump 100 pirates on you randomly”. And I mean randomly. Any random day could trigger these events. There is no way to trigger them or avoid them. The randomness is a bit frustrating.

Also frustrating is that there are always too many enemies on screen… all the time. You will be trying to build a sky bridge or dig for ore, and you can’t go 5 seconds without some thing annoying you. No matter how many harpies you kill.. you try to go back to building the bridge and 5 seconds later the screen is filled with damn harpies again.

Music. Decent. Sets the mood. Never annoying. I would call the regular BG music relaxing and peaceful.

Graphics. A bit underwhelming. They intentionally went with pixelated look, but some things look like too simple, and it comes across as mediocre.

Would I recommend the game? Yes if you have lots of time and like sandbox style building crafting games. Not recommended for kids under 10. It’s very hard at times. And there is teenage level humor. There is a fishing item called Master Bait. There is a magic book called the Golden Shower, that literally looks like a yellow stream of liquid. This is a game that will require lots of reading of wiki and watching YouTube tutorials to complete.

Game Tips

When the kids played on the Wii U, they had a hard time because they didn’t do any fishing, didn’t craft any potions, and didn’t build very good arenas. Boss fights are enormously easier if you do lots of preparations beforehand. You should always have regeneration potions, which you craft from mushrooms, daybloom, and bottled water. All easily obtainable at the start of the game, and can be crafted with a placed bottle (just an empty bottle placed on a table or platform). Also easy to make is ironskin potion…iron ore, daybloom, and bottled water.

Before every boss fight, take those potions, and eat some food (buy from traveling merchant) to get a well fed buff. Build an arena (big flat area with some platforms going accross) filled with campfires and heart lanterns and sunflowers and maybe a pool of honey. All for regeneration and sunflowers for speed boost. Also, have a stack of the best healing potions you can find.

Try to build the arena near the nurse. You can even build a little house next to the arena just for the nurse. She can heal you to full. But I’m getting ahead of myself…start over.

First priorities are to build the basic crafting stuff, and build some rooms to get NPCs to move in. Anvil. Workbench. Furnace. Wood and stone houses are easy to make. Then dig for hearts during the day and mana stars at night. While you are digging around get ores, make weapons, armor, etc. Tungsten and Silver is probably fine now. Then, once you have full hearts, start building a tower up to look for sky islands. You should have found a ton of rope (in chests) while looking for hearts, just build a big rope tower every 1/8th of the world and find the island with the Starfury sword. That will take you 90% through easy mode.

Go to the dungeon at night, fight the Skeletron (build an arena right there, and a house for the nurse). Now you can go in the dungeon, but it’s going to be hard. There are really good items in the chests here.

Go to the corruption / crimson and break 2 orbs (or hearts) and get the meteorite to fall. You can craft excellent easy mode armor with metorite, and a space gun.

The eye of Cthulhu will probably randomly show up some night. If not, you can find Suspicious Eyes in underground chests to spawn him (at night). Have an arena set up near your base for that.

You should fight the Eater of Worlds (easy) or Brain of Cthulhu (a bit hard) by breaking a 3rd orb / heart. The ore it drops and make a good pickax.

Immediately make a hellivator straight down the middle of the world, and dig for hellstone and obsidian and grab a hell forge. Make the best pre-hardmode weapons / armor / and pickax. If you found an Enchanted Boomerang, you can make a Flamarang with hellstone bars, which is nice. Or just a Flaming Greatsword is good.

Now sit back and build a nice house, go fishing, explore at a leisurely pace. The King Slime might show up, optional and easy boss. Goblins might attack, no problem. If you defeat them the Goblin Tinkerer will show up and you can buy Rocket Boots from him and the Tinkerer’s Workshop. When you get bored of Easy Mode, you can kill the Wall of Flesh to trigger hardmode to start. The Wall of Flesh shows up if a guide voodoo doll drops in the lava.

To defeat the Wall of Flesh, get 100+ beenades from fighting queen bees in the Jungle. You will probably have to make abeenimations to spawn queen bees and maybe do that 8-10 times. Also make a huge (half the world wide) platform all the way across the underworld. You will spend the entire fight running away from the wall of flesh.

Hardmode

The wall of flesh drops a Pwnhammer. Go to the Crimson / corruption and break as many altars as you can (12 or more). This will spawn hardmode ores. If you killed a nymph, you should have a metal detector to help you find them. Spend a lot of time getting hardmode ores. Build more houses for NPCs. Go fishing for hardmode ores in crates. You need to make full titanium armor and weapons (or adamantium). Craft a hardmode anvil. Make a Titanium Forge from a Hell Forge and Titanium Ore.

Now fight Wyverns and harpies forever until you can craft wings.

Pirates will show up some day, if you have full hearts. They are a pain in the ass. I like the Cutlass sword that the Captain drops, but it’s not useful against bosses (too short).

Now, the hardmode bosses are just insanely hard. Get a Daedalus Stormbow (Hallowed Mimics) and craft a ton of Holy Arrows 1000+. The Destroyer is the easiest. Key to that is to make a tall arena with several screens tall of platforms and have campfires and heart lanterns and sunflowers. Take a bunch of debuff potions and eat Pho before boss fights. Stay just out of range and shoot arrows. No problem.

The Twins and Skeletron Prime are very hard. Same arena and same weapon, Daedalus Stormbow, just move up and down and shoot arrows, and heal up, keep moving to avoid getting hit. Skeletron Prime… just avoid that spinning head of spikes. The Twins, kill the laser eye first. Try to avoid getting hit with the green vomit from the other eye.

Now Plantera bulbs will start to form. Make an arena in the jungle and a house for the nurse. Keep moving in circles and be aggressive. Once Plantera is killed, Cholophyte will start growing a lot more. Collect a ton of it and make armor. If you are lucky, you can get turtle shells from Giant Tortoises and make turtle armor, later converted to beetle armor (you get beetle shells dropped from the Golem). Also grab heart fruit to get max health.

Plantera should drop a temple key. Go in the Golem Temple and defeat Golem (probably the easiest hardmode boss fight). This triggers the Lunatic Cultists to spawn at the dungeon entrance. This is a much harder fight. You need a really good arena with a house for the nurse. The Golem Temple had solar tablet fragments in chests, you should trigger several solar eclipse events and get Death Sickles from Reapers which I think is excellent against the Lunatic Cultists. You can get Broken Hero Swords from Mothrons too, and craft a Terra Blade. There is a very complicated crafting tree for the Terra Blade, so you could skip this altogether.

Make sure you reforge these weapons from the Goblin Tinkerer. Solar Eclipse events are great for getting gold to do that.

Fight the Cultists and win. They drop the ancient manipulator crafting station (very important). Defeating the Cultists spawns 4 celestial pillars in the world. Go for the solar one (red). Kill 100 solar enemies and the pillar, and get the solar fragments. You can now make the weapon you need to defeat the Moon Lord, the Solar Eruption. Save up the rest of the pillar drops to make super healing potions. Also make a Stardust Dragon Staff with the stardust fragments. This summons an excellent minion that helps fight the Moon Lord.

Once the 4th pillar is defeated, the Moon Lord will spawn in 1 minute. Wait until you have everything you can imagine set up before defeating this last pillar. I had a very small arena with a pool of honey, and with 2 heart statues (I found them in the dungeon) set up with timers. Heart lantern and campfire. Took a bunch of potions – regeneration, ironskin, wrath, etc. Ate some Pho to get well fed buff. In the end, I just stood still and wacked away with the Solar Eruption (Demonic modifier) and healed (I had the Charm of Myths to reduce potion sickness time). Moon Lord is dead.

I guess I never fought Duke Fishron. I don’t really want to. You can also summon special Halloween and Christmas events (optional) and the Old Ones Army event (also optional). It’s just more “dump 100 enemies on you at once” things. Not my thing.

I probably forgot a whole bunch of things. This post was off the top of my head and not planned out.

Anyway, since I am an amateur game designer, I was planning on making a game inspired by Terraria. But, 2020 has been insane, so maybe in 2021 or 2022 I will get started on that. One thing’s for sure, my version will have less random enemies bothering you. That pirate attack is just awful. Don’t get me started.

Other great weapons… Star Cannon. Minishark and Megashark. Anything from the Celestial Pillars and Moon Lord Fight are great. Oh, I did forget the Alien Invasion (Martian Madness) event. It can happen if you defeated the Golem, and get scanned by an alien ship. That drops some great items, like a Spaceship mount (Cosmic Car Key). I don’t know. Maybe I should do the Halloween and Christmas events and see if they drop anything cool.

Lists of NES games

I am frequently looking this stuff up, so I decided to just post the lists here. Sources BootGod and Wikipedia.

US NES games

(minus the prototypes and duplicates)

10-Yard Fight
1942
1943: The Battle of Midway
3-D Battles of Worldrunner, The
6 in 1
720°
8 Eyes
Abadox: The Deadly Inner War
Action 52
Addams Family, The
Addams Family, The: Pugsley’s Scavenger Hunt
Adventure Island
Adventure Island II
Adventure Island III
Adventures in the Magic Kingdom, Disney’s
Adventures of Bayou Billy, The
Adventures of Dino Riki
Adventures of Gilligan’s Island, The
Adventures of Lolo
Adventures of Lolo 2
Adventures of Lolo 3
Adventures of Rad Gravity, The
Adventures of Rocky and Bullwinkle and Friends, The
Adventures of Tom Sawyer
After Burner
Air Fortress
Airwolf
Al Unser Jr. Turbo Racing
Alfred Chicken
Alien Syndrome
Alien³
All-Pro Basketball
Alpha Mission
Amagon
American Gladiators
Anticipation
Arch Rivals: A Basketbrawl!
Archon
Arkanoid
Arkista’s Ring
Astyanax
Athena
Athletic World
Attack of the Killer Tomatoes
Baby Boomer
Back to the Future
Back to the Future II & III
Bad Dudes
Bad News Baseball
Bad Street Brawler
Balloon Fight
Bandai Golf: Challenge Pebble Beach
Bandit Kings of Ancient China
Barbie (RevA)
Bard’s Tale, The: Tales of the Unknown
Barker Bill’s Trick Shooting
Base Wars: Cyber Stadium Series
Baseball
Baseball Simulator 1.000
Baseball Stars
Baseball Stars II
Bases Loaded (RevA)
Bases Loaded 3, Ryne Sandberg Plays
Bases Loaded 4
Bases Loaded II: Second Season
Batman
Batman Returns
Batman: Return of the Joker
Battle Chess
Battle of Olympus, The
Battle Tank, Garry Kitchen’s
Battleship
Battletoads
Battletoads & Double Dragon: The Ultimate Team
Bee 52
Beetlejuice
Best of the Best: Championship Karate
Bible Adventures (Ver1.4)
Bible Buffet (Ver6.0)
Big Nose Freaks Out
Big Nose the Caveman
Bigfoot
Bill & Ted’s Excellent Video Game Adventure
Bill Elliott’s NASCAR Challenge
Bionic Commando
Black Bass, The
Blackjack
Blades of Steel
Blaster Master
Blue Marlin, The
Blues Brothers, The
Bo Jackson Baseball
Bomberman
Bomberman II
Bonk’s Adventure
Boulder Dash
Boy and His Blob, A: Trouble on Blobolonia, David Crane’s
Bram Stoker’s Dracula
Break Time: The National Pool Tour
BreakThru
Bubble Bath Babes
Bubble Bobble
Bubble Bobble: Part 2
Bucky O’Hare
Bugs Bunny Birthday Blowout, The
Bugs Bunny Crazy Castle, The
Bump ‘n’ Jump
Burai Fighter
BurgerTime
Cabal
Caesars Palace
California Games
Capcom’s Gold Medal Challenge ’92
Captain America and the Avengers
Captain Comic: The Adventure
Captain Planet and the Planeteers
Captain SkyHawk
Casino Kid
Casino Kid II
Castelian
Castle of Deceit
Castle of Dragon
Castlequest
Castlevania
Castlevania II: Simon’s Quest
Castlevania III: Dracula’s Curse
Caveman Games
Challenge of the Dragon
Championship Bowling
Championship Pool
Chessmaster, The
Chiller (CHR-CB55)
Chip ‘n Dale Rescue Rangers 2, Disney’s
Chip ‘n Dale Rescue Rangers, Disney’s
Chubby Cherub
Circus Caper
City Connection
Clash At Demonhead
Classic Concentration
Cliffhanger
Clu Clu Land
Cobra Command
Cobra Triangle
Code Name: Viper
Color A Dinosaur
Commando
Conan
Conflict
Conquest of the Crystal Palace
Contra
Contra Force
Cool World
Cowboy Kid
Crash ‘n The Boys: Street Challenge
Crystal Mines
Crystalis
Cyberball
Cybernoid: The Fighting Machine
Dance Aerobics
Darkman
Darkwing Duck, Disney’s
Dash Galaxy in the Alien Asylum
Day Dreamin’ Davey
Days of Thunder
Deadly Towers
Death Race
Deathbots
Defender II
Defender of the Crown
Defenders of Dynatron City
Déjà Vu
Demon Sword
Desert Commander
Destination Earthstar
Destiny of an Emperor
Dick Tracy
Die Hard
Dig Dug II: Trouble in Paradise
Digger T. Rock: The Legend of the Lost City
Dirty Harry
Dizzy The Adventurer
Donkey Kong (RevA)
Donkey Kong 3
Donkey Kong Classics
Donkey Kong Jr. (RevA)
Donkey Kong Jr. Math
Double Dare
Double Dragon
Double Dragon II: The Revenge (RevA)
Double Dragon III: The Sacred Stones
Double Dribble (RevA)
Double Strike (Ver1.1)
Dr. Chaos
Dr. Jekyll and Mr. Hyde
Dr. Mario
Dragon Fighter
Dragon Power
Dragon Spirit: The New Legend
Dragon Warrior (RevA)
Dragon Warrior II
Dragon Warrior III (Rev0B)
Dragon Warrior IV
Dragon’s Lair
DragonStrike, Advanced Dungeons & Dragons
Duck Hunt
DuckTales 2, Disney’s
DuckTales, Disney’s
Dudes with Attitude
Dungeon Magic: Sword of the Elements
Dusty Diamond’s All-Star Softball
Dynowarz: The Destruction of Spondylus
Elevator Action
Eliminator Boat Duel
Excitebike
Exodus: Journey to the Promised Land (Ver4.0)
F-117a Stealth Fighter
F-15 City War (Ver1.1)
F-15 Strike Eagle
Family Feud, The All New
Fantastic Adventures of Dizzy, The
Fantasy Zone
Faria
Faxanadu (RevA)
Felix the Cat
Ferrari Grand Prix Challenge
Fester’s Quest
Final Fantasy
Fire Hawk
Fire’n Ice
Fisher-Price: Firehouse Rescue
Fisher-Price: I Can Remember
Fisher-Price: Perfect Fit
Fist of the North Star
Flight of the Intruder
Flintstones, The: The Rescue of Dino & Hoppy
Flintstones, The: The Surprise at Dinosaur Peak!
Flying Dragon: The Secret Scroll
Flying Warriors
Formula One: Built to Win
Fox’s Peter Pan & The Pirates: The Revenge of Captain Hook
Frankenstein: The Monster Returns
Freedom Force
Friday the 13th
Fun House
G.I. Joe
G.I. Joe: The Atlantis Factor
Galactic Crusader
Galaga: Demons of Death
Galaxy 5000: Racing in the 51st Century
Game Genie (Rev1.5A)
Gargoyle’s Quest II
Gauntlet
Gauntlet II
Gemfire
Genghis Khan
George Foreman’s KO Boxing
Ghostbusters
Ghostbusters II
Ghosts ‘n Goblins
Ghoul School
Goal!
Goal! Two
Godzilla 2: War of the Monsters
Godzilla: Monster of Monsters!
Golf
Golf Grand Slam
Golgo 13: The Mafat Conspiracy
Golgo 13: Top Secret Episode
Goonies II, The
Gotcha! The Sport!
Gradius
Great Waldo Search, The
Greg Norman’s Golf Power
Gremlins 2: The New Batch
Guardian Legend, The
Guerrilla War
Gumshoe
Gun Nac
Gun.Smoke
Gyromite
Gyruss
Harlem Globetrotters
Hatris
Heavy Barrel
Heavy Shreddin’
Heroes of the Lance, Advanced Dungeons & Dragons
High Speed
Hillsfar, Advanced Dungeons & Dragons
Hogan’s Alley
Hollywood Squares
Home Alone (RevA)
Home Alone 2: Lost in New York
Hook
Hoops
Hudson Hawk
Hunt for Red October, The (RevA)
Hydlide
Ice Climber
Ice Hockey
Ikari Warriors
Ikari Warriors II: Victory Road
Ikari Warriors III: The Rescue
Image Fight
Immortal, Will Harvey Presents The
Impossible Mission-II
Incredible Crash Dummies, The
Indiana Jones and The Last Crusade (Taito)
Indiana Jones and The Last Crusade (UBI Soft)
Indiana Jones and the Temple of Doom (Mindscape)
Indiana Jones and the Temple of Doom (Tengen)
Indy Heat, Danny Sullivan’s
Infiltrator
Iron Tank: The Invasion of Normandy
IronSword: Wizards & Warriors II
Isolated Warrior
Jack Nicklaus’ Greatest 18 Holes of Major Championship Golf
Jackal
Jackie Chan’s Action Kung Fu
James Bond Jr.
Jaws
Jeopardy! (RevA)
Jeopardy!: 25th Anniversary Edition
Jeopardy!: Junior Edition
Jetsons, The: Cogswell’s Caper
Jimmy Connors Tennis
Joe & Mac
John Elway’s Quarterback
Jordan vs. Bird: One on One
Joshua & the Battle of Jericho (Ver6.0)
Journey to Silius
Joust
Jungle Book, Disney’s The
Jurassic Park
Kabuki: Quantum Fighter
Karate Champ (RevA)
Karate Kid, The
Karnov
Kick Master
Kickle Cubicle
Kid Icarus
Kid Klown in Night Mayor World
Kid Kool and the Quest for the Seven Wonder Herbs
Kid Niki: Radical Ninja (RevA)
King Neptune’s Adventure
King of Kings, The: The Early Years (Ver1.2)
King’s Knight
King’s Quest V
Kings of the Beach
Kirby’s Adventure (RevA)
Kiwi Kraze: A Bird-Brained Adventure!
KlashBall
Klax
Knight Rider
Krazy Kreatures (Ver1.1)
Krion Conquest, The
Krusty’s Fun House
Kung Fu
Kung-Fu Heroes
L’Empereur
Laser Invasion
Last Action Hero
Last Ninja, The
Last Starfighter, The
Lee Trevino’s Fighting Golf
Legacy of the Wizard
Legend of Kage, The
Legend of the Ghost Lion
Legend of Zelda, The (RevA)
Legendary Wings
Legends of the Diamond: The Baseball Championship Game
Lemmings
Lethal Weapon
Life Force (Rev0A)
Linus Spacehead’s Cosmic Crusade
Little League Baseball Championship Series
Little Mermaid, Disney’s The
Little Nemo: The Dream Master
Little Ninja Brothers
Little Samson
Lode Runner
Lone Ranger, The
Loopz
Low G Man: The Low Gravity Man
Lunar Pool
M.C. Kids
M.U.L.E.
M.U.S.C.L.E.: Tag Team Match
Mach Rider
Mad Max
Magic Darts
Magic Johnson’s Fast Break
Magic of Scheherazade, The
Magician
Magmax
Major League Baseball (RevA)
Maniac Mansion
Mappy-Land
Marble Madness
Mario Bros.
Mario Is Missing!
Mario’s Time Machine
Master Chu and the Drunkard Hu
Maxi 15
Mechanized Attack
Mega Man
Mega Man 2
Mega Man 3
Mega Man 4 (RevA)
Mega Man 5
Mega Man 6
Menace Beach
Mendel Palace
Mermaids of Atlantis: The Riddle of the Magic Bubble
Metal Fighter
Metal Gear
Metal Mech: Man & Machine
Metal Storm
Metroid
Michael Andretti’s World GP
Mickey Mousecapade
Mickey’s Adventure in Numberland
Mickey’s Safari in Letterland
Micro Machines
MIG-29 Soviet Fighter
Might and Magic: Secret of the Inner Sanctum
Mighty Bomb Jack
Mighty Final Fight
Mike Tyson’s Punch-Out!! (RevA)
Millipede
Milon’s Secret Castle
Miracle Piano Teaching System, The
Mission Cobra
Mission: Impossible
Monopoly
Monster In My Pocket
Monster Party
Monster Truck Rally
Moon Ranger
Motor City Patrol
Ms. Pac-Man (Namco)
Ms. Pac-Man (Tengen)
MTV’s Remote Control
Muppet Adventure: Chaos at the Carnival
Mutant Virus, The: Crisis in a Computer World
Mystery Quest
NARC
NES Open Tournament Golf
NES Play Action Football
NFL
Nigel Mansell’s World Championship Racing
Nightmare on Elm Street, A
Nightshade
Ninja Crusaders
Ninja Gaiden
Ninja Gaiden II: The Dark Sword of Chaos
Ninja Gaiden III: The Ancient Ship of Doom
Ninja Kid
Nintendo World Championships 1990
Nintendo World Cup
Nobunaga’s Ambition
Nobunaga’s Ambition II
North & South
NTF2 System Cartridge
Operation Secret Storm
Operation Wolf: Take no Prisoners (Rev0A)
Orb 3-D
Othello
Overlord
P’radikus Conflict
P.O.W.: Prisoners of War
Pac-Man (Tengen)
Pac-Man (Namco)
Pac-Mania
Palamedes
Panic Restaurant
Paperboy
Paperboy 2
Pesterminator
Phantom Fighter
Pictionary
Pin-Bot
Pinball
Pinball Quest
Pipe Dream
Pirates!
Platoon (RevA)
Pool of Radiance, Advanced Dungeons & Dragons
Popeye (RevA)
Power Blade
Power Blade 2
Power Punch II
Predator
Prince of Persia
Princess Tomato in the Salad Kingdom
Pro Sport Hockey
Pro Wrestling (RevA)
Punch-Out!!
Punisher, The
Puss ‘n Boots: Pero’s Great Adventure
Puzzle
Puzznic
Pyramid
Q*bert
Qix
Quattro Adventure
Quattro Arcade
Quattro Sports
R.B.I. Baseball
R.B.I. Baseball 2
R.B.I. Baseball 3
R.C. Pro-Am (RevA)
R.C. Pro-Am II
Race America, Alex DeMeo’s
RacerMate Challenge II (9.03.128)
Racket Attack
Rad Racer
Rad Racer II
Rad Racket: Deluxe Tennis II
Raid 2020
Raid on Bungeling Bay
Rainbow Islands
Rally Bike
Rambo
Rampage
Rampart
Ren & Stimpy Show, The: Buckeroo$!
Renegade
Rescue: The Embassy Mission
Ring King
River City Ransom
Road Runner
RoadBlasters
Robin Hood: Prince of Thieves
Robo Warrior
RoboCop
RoboCop 2 (RevA)
RoboCop 3
Robodemons
Rock’n’ Ball
Rocket Ranger
Rocketeer, The
Rockin’ Kats
Roger Clemens’ MVP Baseball
Rollerball
Rollerblade Racer
Rollergames
Rolling Thunder
Romance of the Three Kingdoms
Romance of the Three Kingdoms II
Roundball: 2-on-2 Challenge
Rush’n Attack
Rygar (RevA)
S.C.A.T.: Special Cybernetic Attack Team
Secret Scout in the Temple of Demise
Section Z
Seicross
Sesame Street 123
Sesame Street ABC
Sesame Street ABC & 123
Sesame Street Countdown
Sesame Street: Big Bird’s Hide and Speak
Shadow of the Ninja
Shadowgate
Shatterhand
Shingen The Ruler
Shinobi
Shockwave
Shooting Range
Short Order / Eggsplode!
Side Pocket
Silent Assault
Silent Service (RevA)
Silkworm
Silver Surfer
Simpsons, The: Bart vs. The Space Mutants
Simpsons, The: Bart vs. The World
Simpsons, The: Bartman Meets Radioactive Man
Skate or Die 2: The Search for Double Trouble
Skate or Die!
Ski or Die
Skull & Crossbones
Sky Kid
Sky Shark (Rev0A)
Slalom
Smash T.V.
Snake Rattle ‘n Roll
Snake’s Revenge
Snoopy’s Silly Sports Spectacular!
Snow Brothers
Soccer
Solar Jetman: Hunt for the Golden Warpship
Solitaire (Ver1.1)
Solomon’s Key
Solstice: The Quest for the Staff of Demnos
Space Shuttle Project
Spelunker
Spider-Man: Return of the Sinister Six
Spiritual Warfare (Ver6.1)
Spot
Spy Hunter
Spy vs. Spy
Sqoon
Stack-Up
Stadium Events
Stanley: The Search for Dr. Livingston
Star Force
Star Soldier
Star Trek: 25th Anniversary
Star Trek: The Next Generation
Star Voyager
Star Wars
Star Wars: The Empire Strikes Back
Starship Hector
StarTropics
Stealth ATF
Stinger
Street Cop
Street Fighter 2010: The Final Fight
Strider
Stunt Kids
Sunday Funday: The Ride
Super C
Super Cars
Super Dodge Ball
Super Glove Ball
Super Jeopardy!
Super Mario Bros.
Super Mario Bros. / Duck Hunt
Super Mario Bros. / Duck Hunt / World Class Track Meet
Super Mario Bros. 2 (RevA)
Super Mario Bros. 3
Super Off Road, Ivan “Ironman” Stewart’s
Super Pitfall
Super Spike V’Ball
Super Spike V’Ball / Nintendo World Cup
Super Sprint
Super Spy Hunter
Super Team Games
Superman
Swamp Thing
Sword Master
Swords and Serpents
T&C Surf Designs 2: Thrilla’s Surfari
T&C Surf Designs: Wood and Water Rage
T2: Terminator 2: Judgment Day
Taboo: The Sixth Sense
Tag Team Wrestling
Tagin’ Dragon
TaleSpin, Disney’s
Target: Renegade
Tecmo Baseball
Tecmo Bowl
Tecmo Cup: Soccer Game
Tecmo NBA Basketball
Tecmo Super Bowl
Tecmo World Wrestling
Teenage Mutant Ninja Turtles
Teenage Mutant Ninja Turtles II: The Arcade Game
Teenage Mutant Ninja Turtles III: The Manhattan Project
Teenage Mutant Ninja Turtles: Tournament Fighters
Tennis
Terminator, The
Terra Cresta
Tetris (Nintendo)
Tetris (Tengen)
Tetris 2
Three Stooges, The
Thunder & Lightning
Thunderbirds
Thundercade
Tiger-Heli
Tiles of Fate
Time Lord
Times of Lore
Tiny Toon Adventures
Tiny Toon Adventures 2: Trouble in Wackyland
Tiny Toon Adventures: Cartoon Workshop
To The Earth
Toki
Tom & Jerry
Tombs and Treasure
Toobin’
Top Gun
Top Gun: The Second Mission
Top Players’ Tennis, Chris Evert & Ivan Lendl in
Total Recall
Totally Rad
Touchdown Fever
Toxic Crusaders
Track & Field
Track & Field II (RevA)
Treasure Master
Trog!
Trojan
Trolls on Treasure Island
Twin Cobra
Twin Eagle
Ultima: Exodus
Ultima: Quest of the Avatar
Ultima: Warriors of Destiny
Ultimate Air Combat
Ultimate Basketball
Ultimate League Soccer
Ultimate Stuntman, The
Uncanny X-Men, The
Uncharted Waters
Uninvited
Untouchables, The (RevA)
Urban Champion
Vegas Dream
Venice Beach Volleyball
Vice: Project Doom
Videomation
Vindicators
Volleyball
Wacky Races
Wall Street Kid
Wally Bear and the No! Gang
Wario’s Woods
Wayne Gretzky Hockey
Wayne’s World
WCW World Championship Wrestling
Werewolf: The Last Warrior
Wheel of Fortune
Wheel of Fortune featuring Vanna White
Wheel of Fortune: Family Edition
Wheel of Fortune: Junior Edition
Where in Time is Carmen Sandiego?
Where’s Waldo?
Who Framed Roger Rabbit
Whomp ‘Em
Widget
Wild Gunman
Willow
Win, Lose or Draw
Winter Games (RevA)
Wizardry: Knight of Diamonds
Wizardry: Proving Grounds of the Mad Overlord
Wizards & Warriors
Wizards & Warriors III
Wolverine
World Champ
World Class Track Meet
World Games
Wrath of the Black Manta (RevA)
Wrecking Crew
WURM: Journey to the Center of the Earth
WWF King of the Ring
WWF WrestleMania
WWF WrestleMania Challenge
WWF WrestleMania: Steel Cage Challenge
Xenophobe
Xevious: The Avenger
Xexyz
Yo! Noid
Yoshi
Yoshi’s Cookie
Young Indiana Jones Chronicles, The
Zanac
Zelda II: The Adventure of Link
Zen: Intergalactic Ninja
Zoda’s Revenge: StarTropics II
Zombie Nation

European PAL Exclusive NES Games

Asterix
Aussie Rules Footy
Banana Prince
Championship Rally
Crackout
Devil World
Disney’s Aladdin
Disney’s Beauty and the Beast
Disney’s The Lion King
Dropzone
Elite
Formula One Sensation
Hammerin’ Harry
International Cricket
Kick Off
Konami Hyper Soccer
The Legend of Prince Valiant
Les Chevaliers du Zodiaque : La Légende d’or
Mario Bros. (Classic Series)
Mr. Gimmick!
New Ghostbusters II
Noah’s Ark
Over Horizon
Parasol Stars: Rainbow Islands II
Parodius
Rackets & Rivals
Rainbow Islands: Bubble Bobble 2
Road Fighter
Rod Land
The Smurfs
Super Mario Bros./Tetris/Nintendo World Cup
Super Turrican
Tecmo World Cup Soccer
The Trolls in Crazyland
Ufouria: The Saga

Japanese / Famicom Games

Note: Airwolf, Star Wars, and Tetris are different from the US versions.

’89 Dennou Kyuusei Uranai
10-Yard Fight
1942
1943: The Battle of Valhalla
2010 Street Fighter
4 Nin Uchi Mahjong
8 Eyes
A Ressha de Ikou
A Week of Garfield
Aa Yakyu Jinsei Itchokusen
Abadox
Abarenbou Tengu
Aces: Iron Eagle III
Advanced Dungeons & Dragons: Dragons of Flame
Advanced Dungeons & Dragons: Heroes of the Lance
Advanced Dungeons & Dragons: Hillsfar
Advanced Dungeons & Dragons: Pool of Radiance
Adventures of Lolo
Adventures of Lolo 2
After Burner
Ai Sensei no Oshiete: Watashi no Hoshi
Aigiina no Yogen: From the Legend of Balubalouk
Air Fortress
Airwolf
Akagawa Jirou no Yuurei Ressha
Akira
Akuma no Shoutaijou
Akuma-kun: Makai no Wana
Akumajou Densetsu
Akumajou Dracula
Akumajou Special: Boku Dracula Kun
Alien Syndrome
America Daitoryo Senkyo
America Oudan Ultra Quiz: Shijou Saidai no Tatakai
American Dream
Ankoku Shinwa: Yamato Takeru Densetsu
Antarctic Adventure
Aoki Ookami to Shiroki Mejika: Genchou Hishi
Aoki Ookami to Shiroki Mejika: Genghis Khan
Arabian Dream Scheherazade
Arctic
Argos no Senshi
Argus
Arkanoid
Arkanoid II
Armadillo
Artelius
Asmik-kun Land
ASO: Armored Scrum Object
Astro Fang: Super Machine
Astro Robo Sasa
Athena
Atlantis no Nazo
Attack Animal Gakuen
B-Wings
Babel no Tou
Baken Hisshou Gaku: Gate In
Bakusho! Ai no Gekijo
Bakushou!! Jinsei Gekijou
Bakushou!! Jinsei Gekijou 2
Bakushou!! Jinsei Gekijou 3
Bakusho! Star Monomane Shitenno
Ballblazer
Balloon Fight
Baltron
Banana
Bananan Ouji no Daibouken
Barcode World
Bard’s Tale: Tales of the Unknown
The Bard’s Tale II: The Destiny Knight
Baseball
Baseball Fighter
Baseball Stars: Mezase Sankanou!!
Batman
Bats & Terry
Battle Baseball
Battle City
Battle Fleet
Battle Formula
Datach: Battle Rush: Build Up Robot Tournament
Battle Stadium: Senbatsu Pro Yakyuu
Battle Storm
Battletoads
Be-Bop High School: Koukousei Gokuraku Densetsu
Best Keiba: Derby Stallion
Best Play Pro Yakyuu
Best Play Pro Yakyuu II
Best Play Pro Yakyuu ’90
Best Play Pro Yakyuu Shin Data
Best Play Pro Yakyuu Special
Bikkuri Nekketsu Shin Kiroku! Harukanaru Kin Medal
Bikkuriman World: Gekitou Sei Senshi
Binary Land
Bio Miracle Bokutte Upa
Bio Senshi Dan: Increaser to no Tatakai
Bird Week
The Black Bass
The Black Bass 2
Block Set (Rob the Robot and Stack-Up “Block”)
Blodia Land: Puzzle Quest
Bloody Warriors: Shan-Go no Gyakushuu
Blue Marlin, The
Bokosuka Wars
Bomber King
Bomberman
Bomberman II
Booby Kids
Boulder Dash
Bubble Bobble 2
Bucky O’Hare
Buggy Popper
Burai Fighter
BurgerTime
Business Wars
Cadillac
Capcom Barcelona ’92
Captain Ed
Captain Saver
Captain Silver
Captain Tsubasa
Captain Tsubasa Vol. II: Super Striker
Casino Derby & Super Bingo
Castle Excellent
Castle Quest
Chack’n Pop
Challenger
Championship Bowling
Championship Lode Runner
Chaos World
Chester Field: Ankoku Shin e no Chosen
Chibi Maruko-Chan: Uki Uki Shopping
Chiisana Obake: Achhi Sochhi Kocchi
Chiki Chiki Machine Mou Race
Chip to Dale no Daisakusen
Chip to Dale no Daisakusen 2
Chitei Senkou Bazolder
Chiyonofuji no Oicho
Choplifter
Chou-Wakusei Senki MetaFight
Choujikuu Yousai Macross
Chojin Sentai Jetman
Choujin Ultra Baseball
Choujinrou Senki Warwolf
Chuugoku Janshi Story: Tonpuu
Chuugoku Senseijutsu
Chuuka Taisen
Circus Charlie
City Adventure Touch: Mystery of Triangle
City Connection
Clu Clu Land
Cobra Command
Cocoron
Columbus: Ougon no Yoake
Conflict
Contra
Cosmic Epsilon
Cosmic Wars
Cosmo Genesis
Cosmo Police Galivan
Crayon Shin-Chan: Ora to Poi Poi
Crazy Climber
Crisis Force
Cross Fire
Cycle Race: Road Man
Dai-2-Ji Super Robot Taisen
Daikaijyu Deburasu
Daikoukai Jidai
Daiku no Gen-San
Daiku no Gen-San 2
Dai Meiro – Meikyuu no Tatsujin
Daisenryaku
Daiva
Dark Lord
Dash Yarou
Datach Crayon Shin-Chan: Ora to Poi Poi
Datsugoku
De-Block
Deep Dungeon III
Deep Dungeon IV
Deja Vu
Dengeki Big Bang!
Densetsu no Kishi Elrond
Derby Stallion Zengokuban
Devilman
Devil World
Dezaemon
Die Hard
Dig Dug
Dig Dug II
Digital Devil Monogatari Megami Tensei
Digital Devil Monogatari: Megami Tensei II
Doki! Doki! Yuenchi: Crazy Land Daisakusen
Dokuganryu Masamune
Don Doko Don
Don Doko Don 2
Donald Duck
Donald Land
Donkey Kong
Donkey Kong 3
Donkey Kong Jr. Math
Donkey Kong Jr.
Door Door
Doraemon
Doraemon: Giga Zombie no Gyakushu
Double Dragon
Double Dragon II: The Revenge
Double Dragon III: The Rosetta Stone
Double Moon Densetsu
Dough Boy
Downtown Nekketsu Koushinkyoku: Soreyuke Daiundoukai
Downtown Nekketsu Monogatari
Downtown Special: Kunio-kun no Jidaigeki Dayo Zenin Shuugou! 
Dr. Mario
Dragon Ball 3: Gokuuden
Dragon Ball Z
Dragon Ball Z Side Story: Plan to Eradicate the Saiyans
Dragon Ball Z II: Gekishin Freeza
Dragon Ball Z III: Ressen Jinzou Ningen
Datach: Dragon Ball Z: Gekitou Tenkaichi Budokai
Dragon Ball: Daimaou Fukkatsu
Dragon Ball: Shenron no Nazo
Dragon Buster
Dragon Buster II
Dragon Fighter
Dragon Ninja
Dragon Quest
Dragon Quest II: Gods of the Evil Spirits
Dragon Quest III: And thus into Legend…
Dragon Quest IV: The Guided Ones
Dragon Scroll
Dragon Slayer IV: Drasle Family
Dragon Slayer Jr.: Romancia
Dragon Spirit: Aratanaru Densetsu
Dragon Unit
Dragon Wars
Dragon’s Lair
Dream Master
Duck Hunt
DuckTales 2
Dungeon Kid
Dungeon & Magic: Sword of Element
Dynamite Batman
Dynamite Bowl
Eggerland: Meikyu no Fukkatsu
Egypt
Elevator Action
Elnark no Zaihou
Elysion
Emoyan no 10-bai Pro Yakyuu
Erika to Satoru no Yume Boken
Esper Boukentai
Esper Dream 2
Excitebike
Exciting Boxing
Exciting Rally
Exed Exes
Exerion
F-1 Hero 2, Nakajima Satoru Kanshuu
F1 Circus
F-1 Sensation
F-1 Race
Famicom Igo Nyuumon
Famicom Jump: Hero Retsuden
Famicom Jump II: The Strongest Seven
Famicom Meijinsen
Famicom Shougi: Ryuu-Ou-Sen
Famicom Top Management
Famicom Wars
Famicom Yakyuuban
Family Block
Family Boxing
Family Circuit
Family Circuit ’91
Family Computer Othello
Family Jockey
Family Mahjong
Family Mahjong II: Shanghai he no Michi
Family Pinball
Family Quiz
Family Tennis
Family Trainer: Aerobics Studio
Family Trainer: Athletic World
Family Trainer: Daiundokai
Family Trainer: Fuuun! Takeshi Shiro 2
Family Trainer: Jogging Race
Family Trainer: Manhattan Police
Family Trainer: Meiro Daisakusen
Family Trainer: Rai Rai! Kyonshizu: Baby Kyonshi no Amida Daibouken
Family Trainer: Running Stadium
Family Trainer: Totsugeki! Fuuun Takeshi Shiro
Famista ’89 Kaimaku Ban!!
Famista ’90
Famista ’91
Famista ’92
Famista ’93
Famista ’94
Fantasy Zone
Fantasy Zone 2: The Teardrop of Opa-Opa
Faria Fuuin no Tsurugi
Faxanadu
FC Genjin
Ferrari
Field Combat
Fighting Golf
Fighting Road
Final Fantasy
Final Fantasy I+II
Final Fantasy II
Final Fantasy III
Final Lap
Final Mission
Fire Emblem: Shadow Dragon and the Blade of Light
Fire Emblem Gaiden
Flappy
Fleet Commander
Flintstones: The Rescue of Dino and Hoppy
Flipull
Flying Hero
Formation Z
Front Line
Fudou Myououden
Fushigi na Blobby
Fushigi no Umi no Nadia
Fuzzical Fighter
Galaga
Galaxian
Gambler Jiko Chuushinha
Gambler Jiko Chuushinha 2
Game Party
Ganbare Goemon! Karakuri Dochu
Ganbare Goemon 2
Ganbare Goemon Gaiden: Kieta Ougon Kiseru
Ganbare Goemon Gaiden 2
Ganbare Pennant Race!
Ganso Saiyuki: Super Monkey Daiboken
Gegege no Kitaro: Youkai Daimakyou
Gegege no Kitaro 2
Geimos
Gekikame Ninja Den (= TMNT)
Gekitotsu Shiku Battle
Gekitou Pro Wrestling!! Toukon Densetsu
Gekitou!! Stadium
Genpei Toma Den
Getsu Fuma Den
Ghostbusters
Gimme a Break: Shijou Saikyou no Quiz Ou Ketteisen
Gimme a Break: Shijou Saikyou no Quiz Ou Ketteisen 2
Gimmick!
Ginga Eiyuu Densetsu
Ginga no Sannin
Goal !!
God Slayer: Haruka Tenku no Sonata
Gojira (Godzilla)
Golf
The Golf ’92
Golf Club: Birdie Rush
Golf Grand Slam
Golf-kko Open
Golgo 13: Kamigami no Koukon
Golgo 13 II
Gomoku Narabe Renju
Goonies
Goonies II: Fratelli Saigo no Chousen
Gorby no Pipeline Daisakusen
Gorilla Man
Gozonji Yajikitatin Douchuu
Gradius
Gradius II
Grand Master
Great Battle Cyber
Great Boxing – Rush Up
Great Deal
Great Tank
Gremlins 2: The New Batch
Guardic Gaiden
Guevara
GunHed: Aratanaru Tatakai
Gun-Nac
Gun Sight
Gun-Dec
Gyro (Gyromite)
Gyrodine
Haja No Fuuin: Miracle Warriors
Hana no Star Kaidou
Hanjuku Hero
Happy Birthday Bugs
Hatris
Hayauchi Super Igo
Heavy Barrel
Hebereke
Hector ’87
Heisei Tensai Bakabon
Hello Kitty no Hanabatake
Hello Kitty World
Heracles no Eikou: Toujin Makyouden
Heracles no Eikou II: Titan no Metsubou
Hi no Tori Hououhen: Gaou no Bouken
Higemaru Makaijima – Nanatsu no Shima Daiboken
Highway Star
Hirake! Ponkikki
Hiryu no Ken
Hiryu no Ken II
Hiryu no Ken III: 5 Nin no Ryuu Senshi
Hiryu no Ken Special: Fighting Wars
Hissatsu Doujou Yaburi
Hissatsu Shigotojin
Hitler no Fukkatsu: Top Secret
Hogan’s Alley
Hokkaidou Rensa Satsujin: Ohotsuku ni Kiyu
Hokuto no Ken
Hokuto no Ken 2
Hokuto no Ken 3
Hokuto no Ken 4
Holy Diver
Home Run Night
Home Run Night ’90
Honmei
Honoo no Doukyuuji: Dodge Danpei
Honoo no Doukyuuji: Dodge Danpei 2
Honshougi: Naitou Kudan Shougi Hiden
Hook
Hoshi no Kirby: Yume no Izumi no Monogatari
Hoshi wo Miru Hito
Hostages
Hototogisu
Hottaman no Chitei Tanken
Houma ga Koku
Hudson Hawk
Hyakkiyakou
Hyaku no Sekai no Monogatari
Hydlide Special
Hydlide 3
Hyokkori Hyoutan Shima: Nazo no Kaizokusen
Hyper Olympic
Hyper Sports
I Love Softball
Ice Climber
Idemitsu – Space College – Kikenbutsu no Yasashii Butsuri to Kagaku[7]
Ide Yosuke Meijin no Jissen Mahjong
Ide Yosuke Meijin no Jissen Mahjong II
Idol Hakkenden
Igo Meikan
Igo Shinan
Igo Shinan ’91
Igo Shinan ’92
Igo Shinan ’93
Igo Shinan ’94
Igo: Kyu Roban Taikyoku
Ikari
Ikari II
Ikari III
IkeIke! Nekketsu Hockey-bu
Ikinari Musician
Ikki
Image Fight
Inbou no Wakusei: Shankara
Indora no Hikari
Insector X
Ishin no Arashi
Itadaki Street: Watashi no Oten Niyottete
Izaki Shuugorou no Keiba Hisshougaku
J-League Fighting Soccer: The King of Ace Strikers
Datach: J. League Super Top Players
J-League Winning Goal
Jackie Chan
Jajamaru Gekimaden
Jajamaru Ninpou Chou
JaJaMaru no Daibouken
Jangou
Jarin-Ko Chie
Jesus: Kyofu no Bio Monster
The Jetsons: Cogswell’s Caper!
Jigoku Gokuraku Maru
Jikuu (Toki) no Tabibito
Jikuu Yuten Debias
Jongbou
Joust
Joy Mech Fight
JuJu Densetsu
Jumbo Ozaki no Hole in One Professional
Jumpin’ Kid: Jack to Mame no Ki Monogatari
Just Breed
Juuryoku Soukou Metal Storm
Juvei Quest
Jyuouki
Kabushiki Doujou
Kage
Kage no Densetsu
Kagerou Densetsu
Kaguya Hime Densetsu
Kai no Bouken: The Quest of Ki
Kaijuu Monogatari
Kaiketsu Yancha Maru
Kaiketsu Yancha Maru 2: Karakuri Land
Kaiketsu Yanchamaru 3: Taiketsu! Zouringen
Kakefu Kimi no Jump Tengoku
Kame no Ongaeshi
Kamen no Ninja Akakage
Kamen no Ninja Hamaru
Kamen Rider Club
Kamen Rider SD
Karakuri Kengoden Musashi Lord: Karakuri Jin Shissouru
Karaoke Studio
Karaoke Studio Senyou Cassette Vol. 1
Karaoke Studio Senyou Cassette Vol. 2
Karateka
Karnov
Katte ni Shirokuma
Kawa no Nushi Tsuri
Kekkyoku Nankyoku Daibouken
Kero Kero Keroppi no Daibouken
Kero Kero Keroppi no Daibouken 2
Keroppi to Keroriinu no Splash Bomb
Kido Senshi Z-Gundam: Hot Scramble
King Kong 2: Ikari no Megaton Punch
King of Kings
King’s Knight
Kinnikuman: Muscle Tag Match
Kiteretsu Daihyakka
Kitte Rai Da! Gunjin Shougi Nanya Sore?
Klax
Knight Rider
Konami Sports in Seoul
Koufuku o Yobu Game: Dora Dora Dora
Koryu Densetsu Villgust Gaiden
Koshien
Kujaku Ou
Kujaku Ou II
Kunio-Kun no Jidaigeki dayo Zenin Shuugou: Downtown Special
Kunio-Kun no Nekketsu Soccer League
Kurogane Hiroshi no Yosou Daisuki! Kachiuma Densetsu
Kyatto Ninden Teyandee
Kyonshis 2
Kyorochan Land
Kyoryu Sentai Zyuranger
Kyouto Hana no Misshitsu Satsujin Jiken – Yamamura Misa Suspense
Kyouto Ryuu no Tera Satsujin Jiken – Yamamura Misa Suspense
Kyouto Zaiteku Satsujin Jiken Yamamura Misa Suspense
Kyuukyoku Harikiri Koshien
Kyuukyoku Harikiri Stadium
Kyuukyoku Harikiri Stadium ’88
Kyuukyoku Harikiri Stadium Heisei Gannenhan
Kyuukyoku Harikiri Stadium III
Kyuukyoku Tiger
L’Empereur
Labyrinth
Lagrange Point
Last Armageddon
Law of the West
Layla
Little Magic
Little Mermaid
Lode Runner
Lord of King
Lost Word of Jenny
Lot Lot
Lunar Ball
Lupin III Sansei: Pandora No Isan
Mach Rider
Mad City
Magic Candle
Magic Darts
Magic John
Magical Taruruto-Kun: Fantastic World!!
Magical Taruruto-Kun 2: Magical Adventure
Magical Kids Doropi
MagMax
Magnum Kiki Ippatsu: Empire City 1931
MahaRaja
Mahjong
Mahjong Club Nagatacho: Sousaisen
Mahjong Taikai
Mahjong Taisen
Mahou no Princess Minkiimomo Remember Dream
Maison Ikkoku
Majaventure – Mahjong Senki
Majou Densetsu II: The Maze of Galious
Major League
Makai-Mura
Maniac Mansion
Mappy
Mappy Kids
Mappy-Land
Mario Bros.
Mario Open Golf
Marusa no Onna
Mashin Eiyuden Wataru Gaiden
Mashou
Masuzoe Kaname Icchou Made Famicom
Matendo Douji
Matsumoto Akira no Kabushiki Hisshougaku
Matsumoto Akira no Kabushiki Hisshougaku II
Max Warrior
Meiji Ishin
Meikyuu Kumikyoku
Meikyuu Shima
Meimon! Daisan Yakyuubu
Meimon! Tako Nishiouendan
Meitantei Holmes: Kiri no London Satsujin Jiken
Meitantei Holmes: M-Kara no Chousenjou
Melville no Honoo
Metal Flame: Psybuster
Metal Gear
Metal Max
Metal Slader Glory
Metro Cross
Mezase! Top Pro: Green ni Kakeru Yume
Mickey Mouse
Mickey Mouse III: Yume Fuusen
Might and Magic Book One: The Secret of the Inner Sanctum
Mighty Bomb Jack
Mighty Final Fight
Millipede
Mindseeker
Minelvaton Saga: Ragon no Fukkatsu
Mini-Putt
Minna no Tabou no Nakayoshi Daisakusen
Miracle Ropitt: 2100-Nen no Daiboken
Mirai Senshi Raios
Mirai Shinwa Jarvas
Mississippi Satsujin Jiken
Mitokoumon
Mitokoumon II: Sekai Manyuuki
Mitsume ga Tooru
Mizushima Shinji no Daikoushien
Moai-Kun
Moe-Pro! Saikyou Hen
Moero TwinBee
Moero!! Judo Warriors
Moero!! Junior Basket
Moero!! Pro Soccer
Moero!! Pro Tennis
Moero!! Pro Yakyuu
Moero!! Pro Yakyuu ’88
Moero!! Pro Yakyuu ’90: Kandouhen
Moeru! Oniisan
Mokushi Pachi Pro: Pachi Otto-Kun
Momotaro Densetsu
Momotarou Densetsu Gaiden
Momotaro Dentetsu
Money Game
Money Game II: Kabutochou no Kiseki
Monopoly
Monster Maker: Nanatsu no Hiho
Moon Crystal
Morita Shougi
Mother
Motocross Champion
Mottomo Abunai Deka
Mouryou Senki Madara
Murder Club
Musashi no Boken
Musashi no Ken – Tadaima Shugyo Chu
My Life My Love: Boku no Yume: Watashi no Negai
Nagagutsu o Haita Neko: Sekai Isshu 80 Nichi Dai Boken
Nakajima Satoru: F-1 Hero
Nakajima Satoru F-1 Hero 2
Nakayo Shito Issho
Namco Classic
Namco Classic II
Namco Mahjong III: Mahjong Tengoku
Nantettatte!! Baseball
Nantettatte Baseball KO Game Cassette ’91 Kaimakuban
Nantettatte Baseball KO Game Set OB All Star Hen
Napoleon Senki
Navy Blue
Nekketsu Kakutou Densetsu
Nekketsu Kouha Kunio Kun
Nekketsu Koukou Dodge Ball Bu
Nekketsu Koukou Dodgeball-bu Soccer-hen
Nekketsu Street Basket: Ganbare Dunk Heroes
New Ghostbusters 2
New York Nyankies
NHK Gakuen – Space School – Sansu 4 Nen (Ge)[8][9][10]
NHK Gakuen – Space School – Sansu 4 Nen (Jou)
NHK Gakuen – Space School – Sansu 5 Nen (Ge)
NHK Gakuen – Space School – Sansu 5 Nen (Jou)
NHK Gakuen – Space School – Sansu 6 Nen (Ge)
NHK Gakuen – Space School – Sansu 6 Nen (Jou)
Nichibutsu Mahjong III
Niji no Silkroad
Ningen Heiki Dead Fox
Ninja Cop Saizou
Ninja Crusaders
Ninja Hattori-kun
Ninja JaJaMaru-kun
Ninja Jajamaru: Ginga Daisakusen
Ninja Kun
Ninja Kun: Ashura no Shou
Ninja Ra Hoi!
Ninja Ryuukenden
Ninja Ryuukenden II
Ninja Ryuukenden III
Nippon Ichi no Meikantoku
Nishimura Kyoutarou Mystery: Blue Train Satsujin Jiken
Nishimura Kyoutarou Mystery: Super Express Satsujin Jiken
Nobunaga no Yabou: Bushou Fuuunroku
Nobunaga no Yabou: Sengouku Gunyuuden
Nobunaga no Yabou: Zenkokuban
North and South
Nuts & Milk
Obake no Q Tarou: Wan Wan Panic
Obocchamakun
Ochinnitoshi Puzzle Tonjan!?
Oeka Kids – Anpanman no Hiragana Daisuki
Oeka Kids – Anpanman to Oekaki Shiyou
Oishinbo: Kyukyoku no Menu 3bon Syoubu
Olympus no Tatakai
Onyanko Town
Operation Wolf
Osomatsu-Kun: Back to Zami no Deppa
Otaku no Seiza
Outlanders
Over Horizon
Paaman
Paaman Part 2
Pac-Land
Pac-Man
Pachicom
Pachi-Slot Adventure 2
Pachi-Slot Adventure 3: Bitaoshii 7 Kenzan!
Pachinko Daisakusen
Pachinko Daisakusen 2
Pachiokun 2
Pachiokun 3
Pachiokun 4
Pachiokun 5
Palamedes
Palamedes 2
Paperboy
Parareru World
Parasol Henbee
Paris-Dakar Rally Special
Parodius Da! -Shinwa kara Owarai e-
Peepar Time
Penguin-Kun Wars
Perfect Bowling
Photon: The Ultimate Game on Planet Earth
Pinball
Pinball Quest
Pizza Pop
Plasma Ball
Pocket Zaurus: Ju Ouken no Nazo
Pooyan
Popeye
Popeye no Eigo Asobi
Portopia Renzoku Satsujin Jiken
Power Blazer
Power Soccer
Predator
President no Sentaku
Pro Yakyuu Family Stadium
Pro Yakyuu Family Stadium ’87
Pro Yakyuu Family Stadium ’88
Pro Yakyuu Satsujin Jiken!
Punch-Out!!
Puyo Puyo
Puzslot
Puzznic
Pajama Hero Nemo
Pyokotan no Daimeiro
Quarterback Scramble
Quarth
Quinty
Quiz Project Q: Cutie Project & Battle 1000
Racer Mini Yonku: Japan Cup
Radia Senki: Reimeihen
Raf World
Raid on Bungeling Bay
Rainbow Island: The Story of Bubble Bobble 2
Rambo
Rampart
Rasaru Ishii no Childs Quest
Recca – Summer Carnival ’92
Red Arremer II
Reigen Doushi
Ripple Island
Road Fighter
Robocco Wars
RoboCop
RoboCop 2
Robot Block
Robot Gyro
Rockman
Rockman 2: Dr. Wily no Nazo
Rockman 3: Dr. Wily no Saigo!?
Rockman 4: Aratanaru Yabo!!
Rockman 5: Blues no Wana!?
Rockman 6: Shijo Saidai no Tatakai!!
Rokudenashi Blues
Rollerball
Rolling Thunder
Route 16 Turbo
Royal Blood
RPG Jinsei Game
Sensha Senryaku: Sabaku no Kitsune
Saikoushi Sedi
Saint Seiya
Saint Seiya 2
Saiyuuki World
Saiyuuki World 2
Sakigake!! Otokojuku
Salad no Kuni no Tomato Hime
Salamander
San Goku Shi
San Goku Shi II
San Goku Shi: Chuugen no Hasha
San Goku Shi II: Haou no Tairiku
Sanada Juu Yuushi
Sanma no Meitantei
Sanrio Carnival
Sanrio Carnival 2
Sanrio Cup: Pon Pon Volley
Sansara Naga
Sansu 1-nen: Keisan Game
Sansu 2-nen: Keisan Game
Sansu 3-nen: Keisan Game
Sansu 4-nen: Keisan Game
Sansu 5+6-nen: Keisan Game
Satomi Hakkenden
Satsui no Kaisou
SD Battle Oozumou
SD Gundam Gachapon Senshi 2: Capsule Senki
SD Gundam Gachapon Senshi 3: Eiyuu Senki
SD Gundam Gachapon Senshi 4: New Type Story
SD Gundam Gachapon Senshi 5: Battle of Universal Century
SD Gundam Gaiden: Knight Gundam Monogatari
SD Gundam Gaiden: Knight Gundam Monogatari 2: Hikari no Kishi
SD Gundam Gaiden: Knight Gundam Monogatari 3
Datach: SD Gundam: Gundam Wars
SD Hero Soukessen: Taose! Aku no Gundan
SD Keiji Blader
SD Sengoku Bushou Retsuden: Rekka no Gotoku Tenka o Nusure!
Seicross
Seikima II Akuma no Gyakushu!
Seirei Densetsu Lickle
Seirei Gari
Sekiryuou
Senjo no Ookami
Shadow Brain
Shadowgate
Shanghai
Shanghai II
Sherlock Holmes: Hakushaku Reijo Yukai Jiken
Shikinjo
Shin 4-Jin Uchi Mahjong: Yakuman Tengoku
Shin Moero!! Pro Yakyuu
Shin Satomi Hakken-Den – Hikari to Yami no Tatakai
Shinjinrui
Shinsenden
Shougi Meikan ’92
Shougi Meikan ’93
Shogun
Shonen Ashibe Nepal Daibouken no Maki
Shuffle Fight
Shufflepuck Café
Side Pocket
Silva Saga
Sky Destroyer
Sky Kid
Snow Bros.
Soccer
Softball Tengoku
Solomon no Kagi
Solomon no Kagi 2
Solstice
SonSon
Soreike! Anapanman Minna de Hiking Game
Space Harrier
Space Hunter
Space Invaders
Space Shadow
Spartan X
Spartan X 2
Spelunker
Spelunker II: Yusha e no Chosen
Splatterhouse: Wanpaku Graffiti
Spot
Spy vs. Spy
Spy vs. Spy II: Nankoku Shirei!!
Sqoon
Square no Tom Sawyer
Star Force
Star Luster
Star Soldier
Star Wars
Star Wars
Star Wars: Teikoku no Gyakushuu
Stargate
STED: Iseki Wakusei no Yabou
Stick Hunter
Sugoro Quest: Dice no Senshi Tachi
Suikoden: Tenmei no Chikai
Sukeban Deka III
Super Arabian
Super Black Onyx
Super Chinese
Super Chinese 2
Super Chinese 3
Super Contra
Super Dynamix Badminton
Super Mario Bros.
Super Mario Bros. 3
Super Mario USA
Super Mogura Tataki!! Pokkun Mogura
Super Momotaro Dentetsu
Super Pinball
Super Pitfall
Super Real Baseball ’88
Super Rugby
Super Sprint
Super Star Force: Jikureki no Himitsu
Super Star Pro Wrestling
Super Xevious: GAMP no Nazo
Superman
SWAT: Special Weapons and Tactics
Sweet Home
Sword Master
Tag Team Pro Wrestling
Taito Basketball
Taito Chase H.Q.
Taito Grand Prix: Eikou heno License
Taiyou no Shinden Asteka II
Taiyou no Yuusha Firebird
Takahashi Meijin no Boken Jima
Takahashi Meijin no Boken Jima II
Takahashi Meijin no Boken Jima III
Master Takahashi’s Adventure Island IV
Takahashi Meijin no Bug-tte Honey
Takeda Shingen
Takeda Shingen II
Takeshi no Chosenjo
Takeshi no Sengoku Fuunji
Tamura Teruaki no Mahjong Seminar
Tanigawa Koji no Shougi Shinan II
Tanigawa Koji no Shougi Shinan III
Tantei Jinguji Saburo: Yokohamakou Renzoku Satsujin Jiken
Tantei Jinguji Saburo: Toki no Sugiyuku Mama Ni
Tao
Tashiro Masashi no Princess ga Ippai
Tatakae! Cho Robot Seimeitai Transformers: Convoy no Nazo
Tatakai no Banka
Tatake!! Ramen-Man
Tecmo Bowl
Tecmo Super Bowl
Tecmo World Cup Soccer r
(for TMNT 1, see Gekikame Ninja Den)
Teenage Mutant Ninja Turtles: Super Kame Ninja (= TMNT 2)
Teenage Mutant Ninja Turtles 2: The Manhattan Project (= TMNT 3)
Tenchi o Kurau
Tenchi o Kurau II
Tenkaichi Bushi Keru Naguuru
Tennis
Terao no Dosukoi Oozumou
Terminator 2
Terra Cresta
Tetra Star
Tetris
Tetris 2 + Bombliss
Tetris Flash
Tetsudou-Oh
Tetsuwan Atom
Thexder
Thunderbirds
Tiger-Heli
Time Zone
Times of Lore
Tiny Toon Adventures
Tiny Toon Adventures 2: Montana Land e Yokoso
Titan
TM Network: Live in Power Bowl
Tobidase Daisakusen 2: JJ
Tokkyu Shirei Solbrain
Tokoro-san no Mamoru mo Semeru mo
Tokyo Pachi-Slot Adventure
Tom & Jerry
Tom Sawyer no Bouken
Top Gun
Top Gun: Dual Fighters
Top Rider
Top Striker
Totsuzen! Macho Man
Touch Down Fever: American Football
Touhou Kenbunku
Tokaido Gojusan-tsugi
Toukon Club
The Tower of Druaga
The Triathlon
Tsuppari Oozumou
Tsuppari Wars
Tsurikichi Sanpei
Tsuru Pikahage Maru: Mezase! Tsuruseko no Akashi
Twin Eagle: Revenge Joe’s Brother
TwinBee
TwinBee 3
Uchuu Keibitai SDF
Uchusen: Cosmo Carrier
Ultima
Ultima: Seisha he no Michi
Ultraman Club Kaijuu Dai Kessen!!
Datach: Ultraman Club: Supokon Fight!
Ultraman Club 2: Kaettekita Ultraman Club
Ultraman Club 3
The Untouchables
Urban Champion
Urusei Yatsura: Lum’s Wedding Bell
US Championship V’Ball
USA Ice Hockey in FC
Ushio to Tora: Shin’en no Daiyo
Utsurun Desu.: Kawauso Hawaii e Iku!!!
Valkyrie no Boken: Toki no Kagi Densetsu
Valis: The Fantasm Soldier
Vegas Connection: Casino Kara Ai wo Komete
Venus Senki
Viva Las Vegas
Volguard II
Wagyan Land
Wagyan Land 2
Wagyan Land 3
Wai Wai World
Wai Wai World 2: SOS!! Parsley Jo
Wanpaku Duck Yume Bouken
Wanpaku Kokkun no Gourmet World
Wario no Mori
Warpman
Western Kids
White Lion Densetsu
Wild Gunman
Willow
Wily & Right no RockBoard: That’s Paradise
Wing of Madoola
Winners Cup
Wit’s
Wizardry: Proving Grounds of the Mad Overlord
Wizardry II: Legacy of Llylgamyn – The Third Scenario
Wizardry III: Knight of Diamonds – The Second Scenario
Woody Poko
World Boxing
World Grand-Prix – Pole To Finish
World Super Tennis
Wrecking Crew
WWF WrestleMania Challenge
Xevious
Yie Ar Kung Fu
Yoshi no Cookie
Yoshi no Tamago
Yokai Dochuki
Youkai Club
Yousei Monogatari RodLand
Ys
Ys II
Ys III: Wanderers from Ys
Yume Penguin Monogatari
Datach: YuYu Hakusho: Bakuto Ankoku Bujutsu Kai
Zelda no Densetsu 1
Zenbei!! Pro Basketball

Famicom Disk System (FDS) Games

19 – Neunzehn
Adian no Tsue
Ai Senshi Nicol
Akumajōu Dracula
Akū Senki Raijin
All Night Nippon Super Mario Bros.
All One
Apple Town Story
The Miracle of Almana
Aspic – Majaō no Noroi
Backgammon
Bakutōshi Patton-Kun
Baseball
Big Challenge! Dogfight Spirit
Big Challenge! Go! Go! Bowling
Big Challenge! Gun Fighter
Big Challenge! Judo Senshuken
Bio Miracle-I’m Upa
Bio Miracle Bokutte Upa
Bomberman
Breeder
Bubble Bobble
BurgerTime
Chitei Tairiku Ordola
Cursed Treasure of Cleopatra
Clox
Clu Clu Land: Welcome to New Clu Clu Land
Cocona World
Dandy: Zeuon No Fukkatsu
Dead Zone
Deep Dungeon
Dig Dug
Dig Dug II
Dirty Pair: Project Eden
Donkey Kong
Donkey Kong Jr.
Doremikko
Dr. Chaos
Dracula II: Noroi no Fūin
Druid: Kyōfu no Tobira
Eggerland
Eggerland – Departure to Creation
Electrician
Esper Dream
Exciting Baseball
Exciting Basketball
Exciting Billiard
Exciting Soccer: Konami Cup
Fairytale
Falsion
Famicom Grand Prix: F-1 Race
Famicom Grand Prix II: 3D Hot Rally
Famicom Detective Club: The Missing Heir (first part)
Famicom Detective Club: The Missing Heir (second part)
Famicom Detective Club Part II: The Girl who Stands Behind (first part)
Famicom Detective Club Part II: The Girl who Stands Behind (second part)
Family Composer
Family Computer Othello
Final Command: The Red Fortress
Fire Bam
Fire Rock
Fūun Shōrin Ken
Fūun Shōrin Ken: Ankoku no Maō
Gall Force: Eternal Story
Galaga
Galaxian
German Tanteidan: Marine-gumi Jaaman Tanteidan: Matonarikumi Jaaman Tanteidan Marine Kumi: Maruhi Jigoma Sousa File
Ginga Denshō: Galaxy Odyssey
Gokuraku Yūgi: Game Tengoku
Golf
Golf Japan Course
Golf U.S. Course
The Goonies
Green Beret
Gun.Smoke
Gyruss
Halley Wars
Hao’s Mysterious Journey
Hikari Genji: Roller Panic
Hikari Shinwa: Palthena no Kagami
Hong Kong
I am a Teacher: Super Mario no Sweater
I am a Teacher: Teami no Kiso
Ice Climber
Ice Hockey
Igo: Kyū Roban Taikyoku
Ishido: The Way of Stones
Janken Disk Jō
Jikai Shounen Mettomag
The Return of Mario Bros.
Kamen Rider Black: Taiketsu Shadow Moon
Karate Champ
Kattobi! Dōji
Kick and Run
Kick Challenger: Air Foot
Kidō Keisatsu Patlabor
Kiki Kaikai: Dotō Hen
Kieta Princess
Kinnikuman: Kinniku-Sei Ōi Sōdatsusen
Knight Lore
Knight Move
Konami Ice Hockey
Konami Tennis
A Kitten’s Story: The Adventures of Chatran
The Legend of Zelda
The Legend of Zelda 2: The Adventure of Link
Lutter
Magma Project: Hacker
Mahjong
Mahjong Kazoku
Märchen Veil
Matō no Hōkai: The Hero of Babel
Meikyū Jiin Dababa
Metroid
Michael English Daibōken
Moero Twinbee: Cinnamon Hakase wo Sukue!
Monitor Puzzle, The: Kineco – Kinetic Connection
Monitor Puzzle, The: Kineco Vol. II – Kinetic Connection
Monty no Doki Doki Daisassō: Monty on the Run
Moonball Magic
Mr. Gold: Tōyama no Kinsan in Space
Nakayama Miho no Tokimeki High School
Namida no Sōkoban Special
Nanking no Adventure
Nazo no Kabe: Block Kuzushi
Nazo no Murasame Jō
Nazoler Land
Nazoler Land Dai 2 Gō
Nazoler Land Dai 3 Gō
Nazoler Land Special
Omoikkiri Tanteidan Haado Gumi: Matenrō no Chōsenjō
Otocky
Pac-Man
Pachicom
Pachinko Grand Prix
Panic Space
Pinball
Pro Golfer Saru: Kage no Tournament
Professional Mahjong Goku
Pulsar no Hikari: Space Wars Simulation
Pro Wrestling: Famicom Wrestling Association
Putt Putt Golf
Puyo Puyo
Puzzle Boys
Radical Bomber!! Jirai Kun
Reflect World
Relics: Ankoku Yōsai
Replicart
Risa no Yōsei Densetsu: Risa Tachibana
Roger Rabbit
Samurai Sword
Santa Claus no Takarabako
SD Gundam World: Gachapon Senshi – Scramble Wars
SD Gundam World: Gachapon Senshi – Scramble Wars Map Collection
Section Z
Seiken: Psycho Calibur
Shin Onigashima (Disk 1)
Shin Onigashima (Disk 2)
Smash Ping Pong
Soccer
Solomon no Kagi
Suishō no Dragon
Super Boy Allan
Super Lode Runner
Super Lode Runner II
Super Mario Bros.
Super Mario Bros. 2 (different from US version)
Sword of Kalin
Silviana
Tama & Friends: Great 3rd Street Adventure
Tanigawa Kōji no Shōgi Shinan II
Tanigawa Kōji no Shōgi Shinan II – Shinban
Tantei Jingūji Saburo: Kiken na Ninin (first part)
Tantei Jingūji Saburo: Kiken na Ninin (second part)
Tantei Jingūji Saburo: Shinjuku Chūō Kōen Satsujin Jiken
Tarot
Tennis
Time Twist: Rekishi no Katasumi de… (first part)
Time Twist: Rekishi no Katasumi de… (second part)
Titanic Mystery (Ao no Senritsu)
Tobidase Daisakusen
Topple Zip
Transformers: The Headmasters
TwinBee
Ultraman: Kaijū Teikoku no Gyakushū
Ultraman 2: Shutsugeki Katoku Tai
Ultraman Club: Chikyū Dakkan Sakusen
Volleyball
Vs. Excitebike
Wardner no Mori
Winter Games
Wrecking Crew
Xevious
Yōkai Yashiki
Yume Kōjō: Doki Doki Panic
Yū Maze
Yūshi no Monshō
Yūyūki (first part)
Yūyūki (second part)
Zanac

There are probably mistakes on this page. Sorry.