PocketNES FAQ

From PHWiki

This article contains information about PocketNES, a NES emulator for Gameboy Advance. For practical guides on how to use it, see the PocketNES HowTo.

Contents

Basics

What is PocketNES?

PocketNES is a NES emulator for Gameboy Advance. In other words, it lets you play Nintendo 8-bit games on a Gameboy Advance.

PocketNES is written by loopy and flubba and started out as an assembler port of loopynes emulator for DOS.

Is it good? What about the speed?

Is it good? It's bloody marvellous. And, yes, PocketNES does emulate NES games on the GBA in full speed, as incredible as it sounds. It can actually do quite a few games at twice the normal speed in accelerated mode.

What features does PocketNES have?

PocketNES version 9 is loaded with the following goodies:

  • Emulates the NES in full speed
  • Emulates all sound channels
  • Emulates some of the NES mappers (more info)
  • Link play support for up to 4 players, single cart and multi cart (more info)
  • Scaled mode: shrinks the NES display down to fit in the GBA screen, sprite scaling optional (more info)
  • Unscaled mode: the NES display is in full size cut off by the GBA screen (more info)
  • State and SRAM saving support, up to 56kbyte, about 10-20 compressed states
  • Sleep mode, auto sleep after 5 minutes, start+select to wake up
  • Autofire
  • Accelerated mode and slow motion
  • 1P/2P Controller switchable
  • Sprite following in unscaled mode. (creator) (more info)
  • Optional splash screen (creator) (more info)

See How to control PocketNES for more info.

Features marked (creator) are controlled through options added when you create the menu rom, see What are options or variables? below.

What do I need to get this thing to play on a real Gameboy Advance?

You need a flash card and a flashing device. If you're only going to use the card for PocketNES a 64mbit card should suffice, holding about 50-100 NES roms.

See below for more info on how PocketNES works on specific brands.

Also see the how to for more info how to use flash cards.

If you are planning to use the card for more than PocketNES there's quite a few things to consider. See Category:GBA Flash Cards.

Does PocketNES work with all brands of flash cards?

See the chart below for known issues with specific brands of flash cards.

For more detailed info and advice on how to use flash cards correctly with PocketNES, see the How To.

Brand Playing Menu* Saving Comments
EZ Flash Fine Fine Fine Use the latest version of the software. If you have problems getting PocketNES to work with the loader menu, try using PocketNES as a single rom.
EZ-Flash 2 (EZ II) Fine Fine Manual size Manually set save size to 512kbit every time you flash PocketNES. Use the latest software.
Extreme Flash Advance Fine Works? Manual size? If you have problems with crashing using PocketNES with other roms, try flashing it as a single rom. You may need to manually set save size to 512kbit when you flash PocketNES.
EZF Advance Fine Fine Manual size Previous save issues should be fixed since version 0.99a of the EZFA Client. Manually set the save size to 512kbit every time you flash PocketNES. Linking should work with the loader since PocketNES version 9.94.
Flash Advance Turbo Fine Fine Fine Needs padded file size
Flash Advance Xtreme Fine Fine Issues Some save issues with the Xtreme software (not only with PocketNES). Try flashing with the parallel port instead of USB if you have saving issues, or flash as a single rom.
Flash2Advance/Flash Advance Pro Fine Fine Fine Works fine with the visoly menu and Pogoshell, as plugin or menu rom
Flash2Advance Ultra Fine Fine Fine No known issues
X-ROM Fine Fine Possible state saving issues Some reports of state saving not working
XG Flash Fine Fine Fine No known issues
XG Flash 2 Lite/ยง II/Magic Flash Fine Link issues? Fine Should work fine with the loader menu since PocketNES v9.9. If you have problems with linking try using PocketNES as a single rom. Note: EZFA II and Magic Flash are rebranded XG carts.

* Menu = PocketNES used together with other GBA roms on the flash card using a loader/multiboot menu.

I highly recommend the original Flash2Advance card as they are very stable and there's plenty of tools available for them. Also, PocketNES was mainly coded and debugged using these cards so compatibility is pretty much guaranteed.

PocketNES should work on all flash cards as it's just like any other rom and uses SRAM saving so no special patching is needed.

Does PocketNES work with the MBV2 multiboot cable?

Yes! The older versions of PocketNES had a special rom for multibooting, but now it auto detects if its loaded via the cable. It even includes sleep mode to preserve power (particularly usefull since you can't turn the GBA off). The MBV2 cable is used for loading GBA roms directly from a PC through the link cable. For more info see the MBV2 site.

What is PogoNES and the NSF player?

They are plugins for the Pogoshell, a file menu system for the GBA. PogoNES is the PocketNES emulator re-made for Pogoshell and NSF player is is a NES Sound File (.NSF) player. See the howto section for instructions and more details.

Also see What is the difference between PogoNES and regular PocketNES?

How does the link play work?

You link up GBAs and then play against each other just like on a real NES. Each player sees the same playing screen, but each GBA works as a separate controller.

You can link 1-4 players, so both 2-player and 4-player games work fine.

You can even send the game to the other players, so only one flash card is needed. This only works for smaller roms, under 192k, due to the GBAs memory limitations. For larger games each player needs their own flash card.

It is highly recommended to use official Nintendo link cables. Third party cables are unstable with PocketNES.

For more details on how to do linked play see the How to.

For lists of 2-player and 4-player games for linked play, see the lists page on the PocketNES site.

How do I get this thing to work?

See the PocketNES HowTo!

Does game *X* work?

Yes, most likely. See PocketNES Incompatible Games for the small number of games that are incompatible or glitchy.

You can also try checking what mapper the game uses. Mapper lists can be found on the lists page. See below for supported mappers.

If the game isn't in the mapper list and you can't find out any other way, just test it already!

Hints and Tips

How many games you can use with the menu?

There are no limits in the menu program or otherwise in how many roms you can include, so the limit is with the space of the flash card. Considering most NES games are between 25-300kB you could fit 25-300 games on a 64mbit card, 50-600 games on a 128mbit card, 100-1200 games on the 256mbit card, or 200-2400 games on the 512mbit card!

Note that the Gameboy Advance itself can't handle roms over 256mbit, so if you have a 512mbit card you need to split PocketNES up into at least two separate roms.

If you have problems getting a large amount of roms to work, it is most likely that some of them are corrupt, check out the Troubleshooting section of the HowTo.

Also, emulators doesn't seem to be able to use roms over 128mbit, so if you have a large PocketNES rom that won't load on an emulator, chances are it will be fine on a flash card.

If I change the order of the games will the saves still work?

Yes! The saves are identified by the internal name in the rom, you can change the order of the games, or their names, do pretty much whatever you want, and the saves will still load!

Does the saves from old versions still work?

With version 8 and 9 the savestates from version 7 and 7a will work, but, sprite following will not work with a lot of games loaded from old save states. Also, you might have to remove a few states to save as the states only have 56k now, 8k is reserved for the SRAM. The SRAM save won't work if you have an old save full with state saves, so you have to delete a few to make room.

The SRAM saves from version 5-7a will no longer work as SRAM is compressed in v8.

Is there a way to make PocketNES use more SRAM on the card?

The Flash Advance cards have 256kbyte (2mbit) of SRAM memory, but PocketNES can only access 64k (512kbit) of it. If you want to get access to more SRAM than that, try making two or more PocketNES roms. If you make four roms you can access all the 256k of memory!

For more info on saving on PocketNES, see the How To.

Is there a way to use cheats with PocketNES?

PocketNES itself does not include any cheat options.

However, there are programs to add gamegenie cheats to the NES games before adding them to the menu. The codes will always be switched on and can not be controlled from PocketNES. Hoe's PocketNES ROM Builder adds the cheats before making the menu, see Hoe's site

rdurbin's GameGenie.exe is a bit older and has more bugs, but it still works. This adds codes permanently to the roms, see downloads on the PocketNES site.

Classic Cheat Code Game Patcher, see [1] and [2].

To find gamegenie codes check out the NES info sites on the PocketNES links page or try a search on Google.

Cautions

Are there any known bugs to watch out for?

There are a few in PocketNES version 9.

  • Unofficial link cables don't work.
Symptom: link play don't work with unofficial link cables.
Cause: The link code is buggy.
Workaround: Use an official Nintendo 2 player link cable.
  • A game won't work or the graphics are garbled:
Symptom: the game won't play, graphics are garbled or the menu don't work at all.
Cause: Most likely you have a corrupt rom/bad dump. It might also be incompatible with PocketNES, see the Compatibility List.
Workaround: see Troubleshooting, verify your roms, if you are sure you have a clean rom, you can try using speed hacks.
  • Savestates disappearing:
Savestates not working or disappearing completely seems to be an issue with the flash cards or flasher software rather than with PocketNES itself. It usually happens with the Xtreme cards or the Xtreme Link software. If at all possible try using a different flasher program or multiboot menu.

Does PocketNES work on GBA emulators?

Yes. But don't judge PocketNES on how it behaves on emulators. I can not stress this enough. It is made to be run on the real Gameboy Advance and not on Gameboy Advance emulators on a PC.

If you are running PocketNES on a GBA emulator see how it actually works theres a few things you need to think of.

  • Speed: The speed might be hampered by running PocketNES through another emulator. PocketNES may seem sluggish on emus but it does run full speed on real Gameboy Advance hardware.
  • Graphics: The softening of the display in scaled mode can make the graphics appear strange on an emulator. The screen might flutter or the softening don't work at all, so graphics might look worse, quite a lot worse, than on real hardware. For example text is quite legible on the real thing.
  • Sound: Sound might be distorted on GBA emulators, but it is fine, if a tad tinny, on real hardware.
  • Emulator limitations: All emulators are somewhat innacurate, so you can never really judge the way a PocketNES game plays through a GBA emulator. Usually games work better on the real hardware but you can't be sure.
  • ROM Size: Watch the size of the PocketNES rom. Some emulators doesn't seem to be able to use roms over 128mbit, so if you have a large PocketNES rom that won't load on an emulator, chances are it will be fine on a flash card.

If you still want to try your luck... PockeNES seems to work on Visual Boy, and it might work on some others also. To get better display and avoid flickering, try turning the motion blur filter and/or frame skip on.

Some emulators require a valid rom size and header, see How to get PocketNES to work with multiboot for info on how to fix this if needed.

Technical

What NES-mappers does PocketNES support?

PocketNES version 9 supports mappers 0, 1, 2, 3, 4, 7, 9, 11, 15, 16, 17, 18, 19, 21, 22, 23, 24, 25, 26, 32, 33, 34, 65, 66, 67, 68, 69, 70, 71, 72, 73, 75, 76, 78, 79, 80, 86, 87, 92, 93, 94, 97, 99, 105, 151, 152, 180, 228, 232.

See also PocketNES Incompatible Games and the PocketNES.org lists section for mapper lists.

NESdevWiki has more information on NES mappers.

What is the difference between PogoNES and regular PocketNES?

PogoNES and PocketNES are really the same program, they're just used in different ways. When using PocketNES you build a menu rom which includes all the NES roms and you use the internal PocketNES menu to select games.

PogoNES is used with Pogoshell and the roms are kept separately in the Pogoshell file system where you select the game.

You can of course use a pre-built PocketNES menu rom with Pogoshell as well. PogoNES can't handle variables so you won't be able to use speed hacks or sprite following.

How does PocketNES compare to the e-Reader games?

Graphics: e-Reader graphics are identical to the scaled mode on PocketNES, but on PocketNES you can select the scaling cut-off lines.

Sound: Sound is slightly better on the e-Reader since it's done in software. PocketNES uses the GBC circuits in the GBA to save processing power.

General: e-Reader basically has none of the features of PocketNES, no saving, no linking, etc. Also the games has to be very small to fit on the cards, so just a few games will be released. See GameFAQs for info on available games.

On the other hand, the e-Reader is much easier to aquire and use, and the cards have a certain charm.

There are also a few NES games available in the GameCube game Animal Crossing. You can send these games to the GBA using a link cable. These games are identical to the e-Reader games, except they include sleep mode. There's also some bigger games, since it's not limited by card sizes. Again, check GameFAQs for info on included games.

What is scaled and unscaled mode? Fullscreen?

- Short and simple answer

Scaled is the same as fullscreen, that is, the full NES display is shrunk down to fit into the GBA screen. Please note that the screen is scaled down and not blown up.

Unscaled means the graphics are not scaled at all. The graphics are displayed in their full size with the NES display cut off by the GBA screen. You can scroll up and down with the L and R buttons to see different parts of the screen.

- Illustrated answer

On the NES Resolution Explained page you will find screenshots comparing the PocketNES display to the intended TV display and raw emulator output.

The scaled PocketNES display is in fact quite accurate even when compared to PC emulators!

On the Screenshots page you can compare the scaled and unscaled display of various games.

Some games work better in scaled mode and some look better in unscaled. Just try both to see which you like best.

- More detailed technical explanation:

The NES has a screen resolution of 256x240 while the GBA has only 240x160. This obviously means that the NES screen does not easily fit into the GBA screen.

There are basically two ways to handle this, either cut off the parts of the screen that does not fit, or shrink the screen to fit.

Horizontally, there are 16 lines that does not fit (NES width is 256 while GBA is only 240). In both scaled and unscaled mode, these are simply cut off, 8 on each side so the screen is centered. Note that these lines are often not used anyway since most TVs don't display them.

The screen background scaling is done by removing every fourth horizontal line, and then blending the bordering lines by drawing them alternately. Removing 1/4 of 240 lines leaves 180 lines though, and with the gba only being 160 lines high, there's 20 lines cut off at the top and bottom. As with the horizontal lines being cut, these are lines that aren't used by games since TVs don't display them.

If sprite scaling is turned on, "SCALED (w/sprite)", the sprites are scaled similarly but without the softening blending. If sprite scaling is turned off, "SCALED", the sprites are not scaled down, but they are moved horisontally to match the scaled background.

What is sprite following?

Sprite following is available in unscaled mode. It makes the screen follow your sprite (character) as you jump up and down in the game.

Without sprite following your sprite would jump out of the screen because in unscaled mode the screen is cut off. You could try and manually scroll the screen up and down to keep track of it, but this get annoying pretty fast.

With sprite following the screen automatically focuses the screen to follow the sprite up and down making sure you never jump offscreen! Sprite following is a great alternative to the scaled mode, allowing the graphics to be kept intact and the games still playable.

See also: How to use options and variables.

What are options and variables?

Options are mainly used to activate sprite following. There's also a few speed/PAL hack options, but those are rarely used anymore as the compatibility has increased.

There are menu creators automating the adding of options, see: How to use options and variables.

More technical info about options and variables follows:

The options are added in a header before each NES rom.

In the older, pre-7a version of the menu the variables were added in a menu.txt text file included with the roms, and some menu creators use a format similar to the old menu format. The sprite following options are 16 and 32. 16 makes the screen follow a sprite number and 32 a memory location. You can get a list of variables to use with these in the lists page. For info on how to find them, see the HowTo.

The hack options are PPU hack (1) and CPU hack (2). 1 enables a PPU hack which can speed up some games. CPU hack 2 is enabled by default, but adding option 2 will disable it, a few games will run better this way.

There is also an undocumented PAL hack 4 which is basically only used for the game Elite. You can try it with other (E) games as well, but most are still too fast.

See also loopy's menu.txt example file from version 7.

What is the menu header format?

The actual menu in v7a onwards is quite techical and not very readable for a human. Use a menu creator program to take care of it. But for those interested the format follows (straight from loopy):

------------------------------------
Format of PocketNES (v8) GBA images:
------------------------------------

???? bytes:  POCKETNES.GBA contents
(optional) 76800 bytes:  Splash screen (raw 240x160 15bit image)
----
32 bytes:  ROM title (NULL terminated)
4 bytes:  ROM size
4 bytes:  ROM flags
4 bytes:  Autoscroll value (a.k.a. "sprite following")
4 bytes:  Reserved (set to 0)
???? bytes:  ROM contents (.NES format)
----
32 bytes:  Next ROM title
etc etc...
----

ROM flags:
   Bit 0: Enable PPU speed hack
      (speeds up some games)
   Bit 1: Disable CPU speed hack
      (a few games need this to work, try this if a game seems buggy)
   Bit 2: Use PAL timing
      (sort of..)
   Bit 5: 0=Autoscroll value is a sprite number
      1=Autoscroll value is a memory location
   Everything else:  Reserved (set to 0) 

About

What is the version history?

Version 9.98 (2005-05-02)

  • Fixed some of the blending issues in the GUI.
  • Changed the position of the screen in scaled modes.
  • Lot of small changes.

Version 9.96 (2004-08-25)

  • Added Player1+Player2 input, good for SMB 2 players.
  • Added gamma adjustment.
  • Better VBLankWait.

Version 9.95 (2004-07-24)

  • Added correct PAL sound pitch (and shaved of 4kB).
  • Added correct PAL timing.
  • Added option to automatically load savestates.
  • Fixed sprite problems in Downtown special.
  • Better MultiBoot transfer. (thanks to Loopy)

Version 9.94 (2004-07-18)

  • Fixed the new cpu core.
  • Fixed the new mapper #4.
  • Fixed a bit with the vertical scrolling (Rad Racer looks better).
  • Fixed transfer when used as compressed (.mbz) plugin.
  • Fixed transfer on EZFA cards when bootmenu used.
  • Fixed garbage when leaving rommenu if too long names used.
  • Fixed a lot of missing text with the new menus.
  • Added swapping of A & B buttons.
  • Saving of Autosleep time.
  • Saving of flicker setting.

Version 9.93 (2004-07-02)

  • Changed back to the old mapper #4.
  • Changed back to the old cpu core.

Version 9.92 (2004-07-01)

  • Added sliding menus.
  • Added scaling without flicker.
  • Added optional FPS meter.
  • Added setting for autosleep time.
  • Added automatic region detection from Pogoshell.
  • Added a clock for cards/emulators that support it.
  • Added mapper #5 again, CV3 specific.
  • Fixed menu dissapearing when first going from unscaled to scaled.
  • Tweaked mapper #4 (Thanks to Kevin Horton).

Version 9.9 (2003-11-07)

  • Fixed lockup when no game was found.
  • Added a little fade when entering the menu.
  • Now saves config also when exiting.
  • B-button is not recognised when leaving menu.
  • Resets more hardware regs before exiting.
  • Workaround for the XG2 bootmenu.

Version 9.8 (2003-09-23)

  • Optimized VRAM writes.
  • Fixed menu when used as PogoNES.
  • Fixed some things with the accumulator in the CPU core.
  • Changed Y & X registers (hopefully a little bit faster).
  • Moved PCM buffer and code to IWRAM (faster).
  • Added check for GameBoyPlayer.
  • Added Exit to normal PocketNES.

Version 9.6 (2003-05-02)

  • Fixed first scanline garbage bug
  • Changed the DPCM routine a bit
  • Changed some small things in the CPU (faster) again
  • Fixed save state bug
  • Changed the scanlines and IRQ back to how it was before V9.
  • Optimized the CPU core a bit.
  • Fixed an issue with scanlines in NTSC, fixes Burger Time and Wizards & Warriors

Version 9 (2003-03-10)

  • Added CPU sleep when idle in VBlank (saves battery =).
  • Added slomo with L+Start.
  • Added PCM IRQ generation, fixes "Fire Hawk", "Last Starfighter" & "Silent Service".
  • Added mapper 228 (Action52 intro is wrong).
  • Added mapper 180 (Crazy Climber (J), no controller yet though).
  • Added mapper 105 (Nintendo World Championship) remember to disable CPU hack (for "Rad Racer").
  • Added mapper 93 (Fantazy Zone (J))
  • Added mapper 72,73,75,76,78,86,87,92,94,232.
  • Added mapper 70/152. Saint Seiya doesn't work correctly anyway, not the mappers fault.
  • Added mapper 68 (Maharaja(J), Platoon(VS), no gfx in After Burner though).
  • Added mapper 67 (Fantasy Zone 2 - The Teardrop of Opa-Opa (J)).
  • Added mapper 34 (Deadly Towers & Impossible Mission 2).
  • Added mapper 33 ("Don Doko Don 2" doesn't work, everything else should).
  • Added mapper 22,24,26,32,65,80 & 97. All "Kaiketsu Yanchamaru" games are playable now.
  • Added mappers 19,23 & 69.
  • Added mapper 79 & 18.
  • Added mapper 15(Contra 16 100-in-1).
  • Fixed "Low G Man".
  • Fixes to mappers 4,16,21 & 25.
  • Fixed some of the savestate problems.
  • Fixed graphic splits in scaled mode (many intro screens).
  • Fixed PCM sample playing, takes a little more CPU now.
  • Fixed multiplay, also supports up to 4 players now.
  • Fixed background flicker.
  • Fixed Sprite 0 hit a bit, Captain Skyhawk, Snow Bros & Saint Seiya starts now, probably break other games.
  • Fixed sprites to background priority.
  • Fixed sprites animation with CHR switching a bit (SMB3).
  • Fixed scaled sprites a bit.
  • Fixed invisible sprites (Ninja gaiden 2, TMNT 2).
  • Fixes to multiboot,sram and Pogoshell (Herg).
  • Fixed VS-palette for Platoon, Hoogans Alley, Pinball, Clu Clu Land, Machrider, Dr Mario, Super Sky Kid, Battle City, Star Luster, Freedom Force & Slalom.
  • Changed GBA hardware PWM frequency for (hopefully) better sound.
  • Changed "Restart" in PogoNES to restart and added "Exit" to exit to the shell.

Version 8 (2002-06-24)

  • PCM sound channel added
  • Left/Right in rom menu skips 10 at a time
  • Quicksave,quickload (R+SELECT,R+START)
  • Accelerated mode (L+START)
  • More than 15 savestates are allowed
  • Automatic SRAM handling
  • Various bugfixes and cosmetic changes

Version 7a (2002-02-18)

  • 2 player link play
  • ROM compilation method changed
  • CPU emulation bugfix

Version 7 (2002-01-25)

  • Multiple save states
  • Better detection of bad roms
  • Optional splash screen
  • 1P/2P Controller switchable
  • Sleep option
  • Brighter NES palette
  • Improved sound
  • More mappers (9,11,66,71,21,25)

Version 6 (2001-11-26)

  • State saving
  • Autofire buttons
  • Unscaled display (back by popular demand)
  • VS Unisystem (mappers 99,151)
  • More display improvements

Version 5a/v5.00000001 (2001-11-02)

  • Fixed a stupid bug that caused saved games to be lost

Version 5 (2001-10-30)

  • Mappers 1,2,3,4
  • Display shifted left 8 pixels (now centered horizontally)
  • Scaled display (autoscroll options removed)
  • SRAM saving
  • Multiboot detect (separate MBV2 version not needed anymore)
  • Fixed menu input (for Flash Advance multiboot)

Version 4 (2001-10-01)

  • Menu system
  • Many display improvements
  • Sprite following
  • Speed hacks
  • L+R reset

Version 3 (2001-07-02)

  • Sound (square channels)
  • Some PPU fixes
  • Scroll screen with L/R buttons

Version 2 (2001-06-19)

  • Multiboot
  • Mapper 1 games (with no CHR)
  • Mapper 2
  • Scrolling (sorta)
  • Minor 6502 bugfixes
  • Moved nes rom to the end of the file

Version 1 (2001-05-17)

  • Runs Balloon Fight
  • Partial mapper 2 support
  • Only works in VGBA

What new features will be included in the future?

New features are often discussed on the forum, so check that out for the latest news.

How can I contribute?

See the PHWiki:Site support page for info on how to donate to loopy.

See Flubba's site for info on donating to him.

Where are the ROMs?

Somewhere else.

Isn't PocketNES for Pocket PC?

There is a completely different NES emulator for the Pocket PC. It's got no relation to loopy's PocketNES. For more info go to the PocketNES for Pocket PC site

Questions

Other questions?

If you have a question not answered here, take it to the forum!

See also

PocketNES, PocketNES HowTo