NESmaker 4.5.9 – The Interface

The fourth choice on the Menu Bar (Map in this example) will change depending on what you have selected in the Context Menu on the left. Here we will only look at Map. There are specific functions for Game Objects and Monster Objects, but those are covered in a specific section for objects.

File – New: Create a new NESmaker project.

File – Load: Open a previous NESmaker project.

File – Save: Save the current project you’re working on.

File – Save As: Save the current project you’re working on as a new project file.

File – Export: Exports the current project as a folder. The following folders are included in the project export:

– GameData
– Graphics
– Plugins
– ScreenData
– ScreenData2
– Sound

PS! This export should only be used if you know that you need this specific data. There are better ways of exporting a complete NESmaker project that includes everything you need to export from a working project and import to an empty NESmaker install.

File – Backup Script Folder: This will create a zip file of the specified folder. It will store all .asm files in the folder and allow them to be restored in the Routines subfolder.

Project – Info: This will open a window with several options for setting some of the starting values of your project, like for example what weapons are unlocked and if some screens are triggered by default. Unfortunately, many of these options are not fully implemented in NESmaker, and will not work as expected.

Project – Screen Groups: This will display a list of names for screen groups. This feature is either not fully implemented in NESmaker or perhaps has some hidden functionality that is not easily accessible. Screen Groups are not covered in the official NESmaker tutorials.

Project – Project Settings: This opens a very important window in NESmaker. From here you can access a lot of different settings and change important values for scripts, variables, constants etc. Project Settings is covered more in detail in a separate section. The tabs in Project Settings are the following:

– Project Labels
– Tilesets
– Emulator
– Script Settings
– User Variables
– User Constants
– Object Variables
– Zero Page RAM
– Overflow RAM
– Export Settings

Project – Import Project Module: This will import and replace a module in the current (open) NESmaker project. This feature should be used with care since all the values in Project Settings will be replaced. It is recommended that you only use this on a blank NESmaker project, unless you know what you’re doing. Modules are covered more in detail in a separate section.

Project – Export Project Module: This will export the module of the NESmaker project you’re currently working on to a .MOD file. This feature can be very useful if you modify a default module (like for example Arcade Platformer) and you want to use the same setup in future NESmaker projects. Examples of this would be changing some scripts in Script Settings, adding new variables or constants, changing names of Project Labels and so on. If you export a module after adding or changing some scripts in Script Settings, you also need to make a copy of the files/folders that are connected to your setup there.

Project – Run Project Script: This feature is rarely used since it requires a special setup in advance. It is not covered in the official NESmaker tutorials and should probably be ignored unless you have an intimate knowledge about NESmaker.

Test – Export: This will export all the Assembly code of your project into a new .asm file. It is rarely used since you have to manually assemble the .asm file after running this command.

Test – Export & Test: This is the main RUN function for your project and is therefore a very important part of NESmaker. This will assemble your project and run it in an emulator. You will be using this every time you want to test out any changes you made to your game. A ROM file of your game will be created after running this command:


This ROM file can be shared with anyone who has an emulator capable of running NES games (with mapper 30 support).

Test – Retest Last Export: A rarely used function that creates and runs the ROM file of the previously exported Assembly code. This could be used with Text – Export, but normally you would just use the Test – Export & Test command instead.

Test – Make Cart: This will copy the ROM file of your game onto a physical NES cartridge. It requires a flasher connected to your computer, like for example the INLretro USB Programmer. Setting up the flasher is covered in a separate section.

Map – Export Both Maps: This will export the entire game map of your game, both the Overworld and the Underworld maps. It exports all the graphics on the different screens as well as tile collisions and all the Screen Info for every screen. This can be very handy to make a backup of just the maps of your game. However, it is important to know that it does not export monster groups or what monster groups were selected for the different screens. It does however export the placement of the different monsters on the screens. That means you have to create a new monster group after importing this map-export file. Then you have to set up that monster group with the monsters you want, and finally go into each screen (Screen Info) and assign that monster group you just created to Day Monster Group or Night Monster Group. The monster objects should now be visible on the different screens.

Map – Import Both Maps: This will import a map file that was previously exported from NESmaker. It replaces all the current screens on both the Overworld and Underworld maps. For more detailed information about monster groups, read the paragraph above (Map – Export Both Maps).

Map – Export Map Image: This will export a detailed picture file (.png) of the current map in NESmaker. The resolution of the picture file is 4096 x 3328. This can be very useful when designing a map and you want a better way of navigating around or zooming in (in a picture viewer application on your computer).

Map – Erase Map: This will erase all the screens on the current map. Make sure you know what you’re doing because this option can’t be undone. It will only erase the screens on the current map. So if you erase the Overworld map, then only the screens there will be erased, not the screens on the Underworld map, and vice versa.

Map – Advanced Map Properties: Here you can merge two rows on the map to allow screens with more detailed tile graphics. Changing these properties will clear all screen data of modified rows. Please save your work before making this change! Changing to “High Resoultion” mode on a row will allow placement of 8×8 pixel tiles, but will use 4 times the space, and reduce the total screens.

Map – Merge Maps: This option will allow you to merge different maps into one. So if you have exported a map previously, you can merge it with the map in your current project. There are several things to be aware of though. First of all you must be careful with the placement of the screens. If you exported a map with screens only on the bottom row of the map, and in your current map you only have screens on the top row of the map, then you should be OK. But if some screens overlap you will get a conflict. NESmaker will warn you about this, and the instructions on-screen do a pretty good job on explaining the different scenarios. You also need to be aware that since you are importing a previously exported map, it will import all the tile collisions for that map as well. So if the different tile types don’t match between the file you’re importing and the current map, you will have to manually correct that. An example of this would be if you for some reason changed tile number 10 from a Ladder Tile to a Warp Tile in the previous project, and your current project is set up with Ladder Tile for tile type 10. Then you will get screens that have Ladder Tiles where you would expect Warp Tiles.

Map – Show Screen Info: This will show a column of information on the right side of the NESmaker user interface. The information displayed there is all sorts of information about the screens on the map, like screen number, screen flags and user screen bytes. NESmaker will display the information for whatever screen the mouse pointer is hovering over. This can be very useful when troubleshooting or if you want to double check some information on different screens at a glance. For some reason, after selecting Show Screen Info, Merge Maps is selected in the drop-down menu (under Map). To hide the Show Screen Info column just select Show Screen Info again.

Map – Set Map Focus: This function should be used together with the check box called Show Type in the Display Menu.

The point of this is to display a value from the Screen Info window for each screen, so you can quickly see values for all screens at a glance. What value is displayed at any given time depends on your choice from this menu (Set Map Focus). By default it is set up with Screen Type as the display value.

Keep in mind that this will only show decimal numbers, so if you choose one of the screen flags it will show a 0 or a 1, depending on whether that box is checked or not (0=unchecked 1=checked).

B. Toolbar

The Toolbar is basically the same as the Menu Bar (File, Project and Test), only here the options are displayed as easily accessible buttons instead of drop-down menus. Just hover the mouse cursor over each button to see what it does. For more information about each option, see section A (Menu Bar) above.

C. Context Menu

The Context Menu is one of the main navigation areas when making your game. Here you will set up your player object, pickup/power up objects, monster objects etc. It is also here that you will find things like the Pixel Editor, Input Editor and Palettes. Let’s take a quick look at each of the elements in the list.

Overworld: Selecting this will display the Overworld screens in the Game Map area.

Underworld: Selecting this will display the Underworld screens in the Game Map area.

HUD & Boxes: Selecting this will change the Game Map Area into a section with different tabs. Every one of these tabs has something to do with setting up a static HUD in your game. Keep in mind that if you’re using a module that has a sprite HUD (MetroVania, LR Platformer, Shooter and Brawler), then this section will not be used. Setting up the HUD is covered in a different section.

All Graphics: This is a place to organize your tiles. It is not required to use this in order to make a game, but it can make designing levels easier. This section has four subsections:

– Assets: Here you can set up tiles with a specific collision type (tile type) as well as a certain subpalette for this specific tile. You can give it a name to easily identify it later. You can even make an asset that is made up of several different tile graphics and have different collisions on each of the tile graphics. When designing a screen you can place your ready-made asset on the screen without placing the same combination of tile graphics and collisions over and over. This is especially useful if you have a certain combination of tile graphics and corresponding collisions that you use often, like for example a house. This house-asset could be five tiles wide and three tiles tall. Maybe you want the roof to have “jump through” collision and the door to be a warp tile.

– Path Info: This section is for setting up paths in NESmaker. Paths is covered in another section.

– Special Tiles: Not used by default in NESmaker 4.5.9. This was used in the previous version (4.1.5).

– Asset Groups: You can organize your assets in different groups. Right click on Asset Groups and choose “Add Group”. To assign the different assets to these groups you must right click on them (under Assets) and choose “Assign To Group”.

Palettes: This is where you set up and organize the palettes for background graphics. It’s important to know that these palettes are not for use with the Game Objects or Monster Objects. Palettes are covered more in detail in another section.

– Palette Groups: You can organize the palettes in different groups to make it easier to keep track of the different palettes when setting up a game screen.

– All Palettes: This will display all 64 palettes in NESmaker (only background palettes, not sprite palettes).

Game Objects: Here are the 16 objects that can be active on any given screen, as opposed to monster objects which are assigned to a monster group (which in turn needs to be assigned on a screen by screen basis). That is why we find the player object here. By default there are labels set up for the first 8 game objects. Most of these have no real meaning, and you can change them to whatever you want. The first one however (game object 0) is the player object. That is correct for every module. The other labels can mostly be viewed as example text labels. Gamel objects 1 for example is named Melee, but in some modules this is set up as the player projectile. Game Objects are covered more in detail in another section.

Monster Graphic Banks: This is where you set up monster objects and monster groups. These objects can actually be anything you like (for example pickup objects) but it’s important to remember that monster groups are loaded in on a screen by screen basis. So things like pickups, player projectiles or any other object that needs to spawn on any screen in the game should usually be set up as Game Objects. Therefore, in most cases, it’s best to use this section only for setting up monsters. Every monster needs to be assigned to a monster group to be able to spawn in on a screen. A monster group can have four different monster objects assigned to it. Then the monster group needs to be assigned to a screen where you want them to spawn. On scrolling levels NESmaker only reads the Screen Info from the first screen (where the player spawns), but in order to place the monster objects on the following screens in the interface you also need to assign the monster group to those screens as well. There are two graphic banks set up in NESmaker. This means that in order to use all the monster graphic sheets you have to use both Graphics Bank 0 and Graphics Bank 1. Each of those have 8 graphic sheets assigned to them. So Graphics Bank 0 has all sheets from Monster_0_00.bmp to Monster_0_07.bmp, and Graphics Bank 1 has all the sheets from Monster_1_00.bmp to Monster_1_07.bmp.

– Monsters: When setting up a new monster object you must be very careful not to click on any other item in the Context Menu list (like for example Game Objects, Palettes or Pixel Editor) before you have saved the object. If you do, all the work you have done with setting up the monster will go away. Setting up a new monster object should be done by selecting the folder icon that says “Monsters” and then click the Save button when you’re done. When you want to edit the monster object you need to select the appropriate monster icon under the Monsters (folder) icon.

– Monster Groups: Monster Groups are more than just organizing monster objects neatly together. It is actually very important to plan what monsters you are grouping together because the four monsters in a monster group are the ones you can place on a given screen. Since one screen can only have one monster group, you need to make sure that all monsters you want for that screen (level) are in that monster group. It is also important to remember that a monster group can only have monster graphics from one specific graphic sheet. So for example if you draw graphics for two different monsters in two different graphic sheets (Monster_0_00.bmp and Monster_0_01.bmp) you can’t group those two monsters in the same group.

Monster Palettes: This is where you set up palettes for all the sprite objects in your game. These palettes are only used for objects. It’s important to remember that even though these palettes are called Monster Palettes they also apply to the Game Objects. Background graphics have their own palettes. Palettes are covered more in detail in another section.

– All Monster Palettes: This will display all 64 monster palettes. You can modify a palette by selecting it from the list and right clicking on the colors that appear to the right.

Sound: NESmaker can import music and sounds effects in the famitracker.txt format. So in other words the text export from Famitracker (or FamiStudio). This can be done by right clicking Sound and choosing “Import Famitracker.txt”. The songs will be placed under Music and the sound effects will be placed under SFX. When making a file in Famitracker or FamiStudio the naming of the songs and sound effects are important. All sound effects must be named with a starting suffix like this sfx_ . So if you have a sound effect called shoot, it must be named sfx_shoot. All the entries in the Famitracker file that don’t have this suffix will be placed under Music.

Text: You can have 512 text entries in NESmaker. This is text that will be displayed during gameplay, start menus, cutscenes etc. Text entries must be assigned to a text group. Then the text group in turn needs to be assigned to a screen. A text group can have four text entries. Every text entry can have a descriptive name. There is a drop-down menu called “End of Text Action”. This is what should happen after the text box has finished drawing and goes away. Some of the choices in this drop-down menu don’t work by default in NESmaker, but a screen can be triggered at the end of the text if you choose “NPC Is Trigger” as the text end action. There are tutorials on the NESmaker forum that will allow you to do all sorts of custom things as the text end action. The Adventure module uses the “NPC Gives Item” end action. Before you start writing text in the text entries you should set up the text are on the screen first. This is done in the HUD & Boxes section (towards the top of the Context Menu list). Setting up text is covered in another section.

Text Groups: This is used to group four text entries together. A text group needs to be assigned to a specific screen where the text entries should be used. There can only be one text group per screen. It is a good idea to give a descriptive name to a text group if you plan to use a lot of text in your game.

Scripts: This is the section of NESmaker that keeps track of input scripts in your game. There is also a section where you can view or modify other scripts in your project. NESmaker has a built-in code editor that will be displayed in the area where the Game Map is usually shown.

– Input Scripts: This is another very important part of NESmaker. This is where you add, remove or modify the Assembly code files that handles input from the NES gamepad controller. NESmaker has a lot of pre-made input scripts, and some are specific for the different modules. Some input scripts are used for several modules, like for example the script jump_throughPlat.asm is used by all platform style games. To add an input script you must make sure the Input Scripts (folder) icon is selected. Then double click on the area on the right where it says <DIR>BASE_4_5. Then double click again on <DIR>Game. You will now see the main folder for input scripts called inputScripts. There are some important scripts in there, like for example moveLeft.asm, moveRight.asm and stopMoving.asm. These scripts are basic movement scripts that are used by all modules. There are also module specific folder like MOD_PlatformerBase that has it’s own input script folder inside of it. Those scripts are module specific. To add an input script to your project you must double click on the file name of the script. Once an input script has been added to your project it will be shown under the Input Scripts (folder) icon in the Context Menu list on the left. Input scripts can be modified in NESmakers own code editor just by clicking on the added input script, or if you want to use an external application (like for example Notepad++) you can double click on the file name of the script. This assumes that you have installed an application that opens .asm files.

– Defined Scripts: Here you can find many important scripts for your project. These files can be viewed or modified in the NESmaker code editor by clicking on the file name of the script you want to view/modify. Usually it will be easier to use Script Settings and an external application like Notepad++ to modify code files. You must be aware that if you change some code in NESmaker’s own code editor and don’t click Save, then all changes will be lost if you click on another entry in the Context Menu list (like for example Pixel Editor or Game Objects).

Input Editor: After adding input scripts to your project you must assign them to different buttons on the gamepad controller. This process is very easy and intuitive because of the graphical interface. First you choose what game state this input should apply to, then choose what object should be affected (usually the player object), choose what script to run, and finally what button on the controller should trigger this script. Make sure that you select the correct input action on the controller (sometimes you want an action to trigger when a button is released or held down). When you’re done setting this up you simply click Add Script. To remove an input from the list you right click the appropriate line in the list and click Remove.

CHR Viewer: This is a rarely used function of NESmaker. It allows you to view .chr files. CHR files are graphic files that are created from your drawings in the Pixel Editor. This happens when you click Export & Test in the toolbar. Unless you have a specific use for this function it can safely be ignored.

Pixel Editor: This is where you will do all your drawing of sprites and background graphics. The Pixel Editor is almost like a self-contained application in NESmaker, and therefore it has it’s own menu with Load and Save. These load and save buttons apply to the graphic sheet files found in this folder …\NESmaker_4_5\GraphicAssets. Using the Save button on the main toolbar menu (on the top) of NESmakers window will not save the image you’re working on. Saving graphics must be done independently from saving the project file. The Pixel Editor is covered more in detail in another section.

Plugins: This is another rarely used part of NESmaker. Here you can add custom plugins to the interface. By default there is only one. It is a decimal to binary converter, which can be very useful if you’re not using external tools like the Windows Calculator.

D. Game Map

This is another important part of NESmaker. This is where you choose which screen you want to set up. Double click any of the green (free) rectangles to start designing a screen. You can also copy screens here by pressing CTRL + C while the mouse is over the screen you want to copy (just to be sure it can be a good idea to do a single click on that screen first). Then you just choose a free (green) rectangle and press CTRL + V to paste the new screen where you want it. The mouse pointer should be hovering over the rectangle where you want to paste it. Screens can easily be deleted by right clicking on it and choose “Delete Screen”. When right clicking on a screen you also get access to some more advanced features. The options when right clicking are:

– Delete Screen (Remove the selected screen)
– Set Comment (Add a comment to the selected screen)
– Set Starting Screen (Set the selected screen as the screen where the player spawns)
– View Latest Export (View the assembly code / information on the selected screen)
– Edit Screen Info (Open the Screen Info window of the selected screen)

E. Display Menu

This is part of the Game Map screen. The most useful part of this section is the coordinates of your mouse pointer. It will show what screen the mouse pointer is hovering over, but it will show it as a coordinate with the X position and Y position. These values are important for example when setting up “warp out screens”. There are 256 screens on both the Overworld map and Underworld map. The numbering of these start from 0,0 in the top left corner. Moving to the right will increase the number for the X coordinate and moving down will increase the Y coordinate. So the bottom left screen has a coordinate of 15,15. So there are 16 screens across and 16 screens down. The drop-down menu with banks are not explained in the official tutorials, so I have no information about how that works. There are four check boxes on this menu row:

– Show Groups: Unknown (Not explained in the official tutorials)

– Show Tooltips: Unknown (Not explained in the official tutorials)

– Show Type: This will by default display the screen type for each screen on the map. If you have selected something else in Map from the Main Menu bar, then that value will be displayed instead.

– Big Map: Selecting this option will display the screens on the map much bigger. It can possibly be useful when designing levels.