In this instructional series, we will learn to create a NES game from scratch using NESmaker. That may sound counterintuitive. Most people presume that NESmaker is solely a GUI tool for drag and drop style game development. That couldn’t be further from the truth. NESmaker is an asset creator and organizer that allows for modular, drag and drop development of NES games, but as an asset creator and organizer, it is possible to create entire engines and games from scratch, no different than if you were using a notepad program and an assembler. This is the side of NESmaker that we’ll focus on here.
We’ll start with a few assumptions. If you are brand new to the software, you will definitely want to start with one of the orientation series. These go over the parts of the tool, and get you up and running quickly with prebuilt template modules. This is meant for users who have already gone through those tutorials and have some level of understanding of how the tool operates.
Also, you should have the latest version of the tool, which is NESmaker 4.5.9, and I highly recommend installing Notepad++ for doing your script editing. Once you do, set .asm files to open with Notepad++ by default.
Keep in mind, this tutorial series dives deep, starts with nothing, and jettisons use of some of the convenient GUI methods of doing things. That means progress through creating a game this way will be very slow. But hopefully it will give confidence in using NESmaker at an advanced level, and give a broader understanding of how to manipulate and customize existing modules.
In this lesson, we will start with building a skeleton for our code base. By the end of the lesson, you should understand how the Script Settings tab works; how to set up new script defines, make new scripts, and include those scripts into your project. You should understand the general idea of a memory map, of variables and labels and constants.
In this lesson, we'll focus on setting up the NMI and talk a bit about vBlank. We'll learn about the stack, a small bit about how NES graphics are drawn, and about the separation between the normal game logic and the functioning of the Picture Processing Unit. We'll also get something we can push to our emulator to verify that our code is working as expected.