Help:Contents/Finding Content/Finding menus and areas
Grab yourself a RAM editor and dive right in! That's pretty much all you need.
There are two ways to enter unused/hidden menus. Either force the game to choose an out-of-bounds "option" that will open it, or tell the game to open the pretended menu instead of the correct one. In theory, during development, the game had the entrances to these menus available, and when it was time to remove them, those option was merely left invisible and non-selectable. If you can force the cursor to choose said options, you may be able to open the menus once again.
Start by highlighting the first option on the main menu. Then, search the RAM for an unsigned byte with the value 0. Then, highlight the second option (if they're not organized linearly, try different options), and check for 1. Keep doing the same with other menus until you'll eventually find the address that stores what option you have highlighted. Now comes the easy part, just change that value to something out-of-bounds and you may just see the cursor pointing to nowhere. Now, cross your fingers, press A, or Start or whatever, and hope that a debug menu pops up in front of you. If you couldn't make it, try it again with different values. Maybe the first option is actually 1, not 0, maybe the second/third/... option isn't the one you thought it was, or, of course, maybe the menu isn't there to begin with.
- Examples of games with debug menus accessed this way: Light Crusader, Pac-Man 2: The New Adventures (SNES)
If that fails, you could try to force the game to open a different menu. If you have several sub-menus, enter the main menu. Search for an unsigned byte, valued with 0. Enter a sub-menu, the one you think is the first one, and search for 1. Keep doing the same, trying to guess which menu has what value, and you should run into an address that stores what (sub-)menu you're in. Keep changing that value, and attempting to reload the menu, and you could enter the debug menu. Again, keep trying with different values in different places. If you can't have it work with menus and sub-menus, try entering the options screen and search for an unknown value. Then try the main menu and search for a different one. Then the password, etc.
- Examples of games with debug screens accessed this way: Super Smash Bros.
It's mostly the same thing, really. If you can notably tell what separates an area from another (for instance, in Metroid, that'd be every time you enter a room), you might be able to force the game to load a different area. Just use the same method, and try all types of values until you hit an area that doesn't exist in the game.
If you can alter the game's files, a pretty obvious and immediate way to access unused areas is by replacing the file of a normal area with the file of an unused one. This isn't guaranteed, though, as some internal aspects in the game might react wrongly when the wrong files are used.
Using Djinn Tile Mapper
Maybe a screenshot of a game in which this works well?
With Djinn Tile Mapper, you can find areas mapped with tiles. Choose a page from the right window, and navigate the ROM using the left window. It'll fill every byte found in the ROM with the corresponding tile from the page. It's hard to find the right page, in the right place, and then find the right spot on the ROM with the map, and that is all implying the tiles and maps aren't compressed. But if you're really lucky, you might just be able to find something.
- Walk-through wall codes
- Out-of game Level editors
- "Forward" and "Back" cheats (Adobe Flash)