Deep Dive: intro to sprite zero hit detection

You may have encountered this concept in the NESmaker UI, various online tutorials or retro explaining videos: Sprite Zero. What is it, what would you need it for and how would you detect such a hit? Although this is “just an intro,” we’re diving pretty deep into this concept, how to implement it and it’s caveats. We even do a sidestep into interrupt requests for a different mapper. Do you have about 7 spare minutes? Strap in then, because we’re about to hit… sprite zero!

Read more

Deep Dive: doLoadScreen

This episode of Deep Dive will touch upon doLoadScreen (and, subsequently, doLoadScreen2). These are huge subroutines, so we’re not gonne dissect them line by line. Instead, we’ll mainly go through the order in which things get done. This might explain why, for example, your HUD value doesn’t update, or a triggered tile is not being destroyed. Either way, let’s go!

Read more

Deep Dive: Object values

For this post, I’ll dive into the values NESmaker uses in its object system. I’ll zoom in on the object direction variable especially, and add a Markdown file with the other object values that are available.

Read more

Deep Dive: VBlank and NMI

Sometimes, you’ll want to stop code execution until the screen is done drawing. For instance, if you need to update more tiles on screen than the vBlank period is capable of, when you want to turn off the screen to do additional updates, or simply because you want a few frames of idle time in your game. There are two ways to do this, which NESmaker both applies. Let’s go into the details.

Read more

Deep Dive: LoadChrData

Here’s a post about loading CHR data! NESMaker uses a macro, which in turn uses a subroutine, to load the graphic tiles into the PPU. In this post, I will dissect what NESMaker does under the hood exactly, while adding some context to how the NES loads tiles from the game into its picture processing unit.

Read more

Deep Dive: NESmaker Summer Camp ’22

This is a news message more than an insightful post, but it absolutely belongs to the Deep Dive category. Starting on wedNESday, july 6th 2022, Joe Granato (founder and creator of NESmaker) is organizing a five weeks long online boot camp for NESmaker developers, going deeper into Assembly coding then ever. The main topic will be the Empty module, one that has been untouched in tutorials up until now.

Read more

Deep Dive: Bankswitching

So, earlier on, I explained that NESmaker projects use Mapper 30, which has 32 banks of 16KB data. The NES console itself can only handle up to 32KB – or 2 NESmaker banks – of program data though. So how can we get access to all the data we have available on the cartridge? Well, this is where bankswitching comes in handy.

Read more