Harbinger 2 -
Cunt Punch
NES Game

Scratch programmed NES game by Mario’s Right Nut.

Game Description

This game was never finished, but I’m not sure I ever really meant to finish it.  I was just messing around trying to see if I could make a game similar to “Blade Buster”, a master class in NES Homebrew.  If you search around, you can find it pretty easily.

The game was a simple vertical scrolling shoot-em-up.  It had lots of moving backgrounds that you could blow up, waves of enemies coming at you, and upgradeable ship stuff.

It was meant to be a direct sequel to “Bust A Nut“.  

I got pretty far into the proof of concept.  Then got distracted with getting married or some such nonsense and never got back to it.  

The ROM attached below is fully functional, as I recall…?

TLDR - Backstory Draft

Started 9/19/14
Captain sitting in a bar. Missing an arm. Burn scars covering his face and good arm. Flashback as he drinks.

It had been a year since the Quagarr attack.

Wakes up next to the empress and his newborn son. Talk for a bit.

Hear air raid sirens go off. Up, dressed. Runs into the hall to see what’s up.

He’d refused promotion, still a Captain. Empire was still in ruin, rebuilding was a long process.

Their closest neighbors were launching an all out sneak attack in order to annex the empire. Their leader told them to surrender as they had no choice. The empress and the baby walked in, looked at him, and nodded. He sprinted to the back of the palace to where the Harbinger lie, shut down, silently sleeping.
She was still the last of her kind. The designs had been lost in the war and the reverse engineering process was slow because of the Captain’s insistence that the Harbinger not be dismantled.

As he burst through the back door into the Harbinger’s courtyard, he felt the impact of the shockwave from the palace’s shield generator exploding. He screamed through his neural interface, “Initiate start up sequence!” just in time for a missile to come screaming down from orbit and impact the Harbinger.
He felt a terrible pain in his shoulder and was showered in burning wreckage. As he rolled around on the ground putting himself out, he tried to push up to find the arm gone. He staggered to the Harbinger and attempted manual start up. She would put him in stasis and extend her shields over the palace. But she had no power. He ran around the back and climbed up to on top. The crater had destroyed her Everlong reactor core. It was over. No replacement parts and no way to repair. It was the one part required to run the auto repair system.

He stood up as the shock finally hit him. His girl was dead, his arm was gone, and he was horribly burned. He was thrown off his feet as the palace exploded in front of him. His wife, empress, son, and prince were gone. In an instant.

The empire had finally fallen.

Flash forward.

The Captain downs his drink and asks for another. The barkeep hands him the bottle and says it’s on the house. Thanks.

A young girl walks up and asks if he’s the Captain. He replies to get lost. She wants to talk. He repeats himself, she insists. The barkeep comes over and asks if there’s a problem. She slams a cylinder on the table about the size of his whiskey bottle. It’s a core.

“Now, where did you get that?” he stares, mesmerized.

Father owns a salvage business. We searched the wreckage of the Battlestars in orbit. We found 4 of them, they were all spent and only this one was intact. We need your help to make more.

He picks it up and pushes a button. A battery indicator flashes 9%. It’s not spent, but close. 10% could reinitialize the Harbinger.


They are in the courtyard and the core has been changed out. He pumps the jumpstart, 1, 2, 3 times, hits the manual initiation. The running lights flash and the reactor sputters, then it all dies. The indicator flashes 8%. Tries again, no avail. 7%.

The Captain opens a panel and pulls out a component. “What’s that?” “It’s the initialization power regulator. It keeps all the battery energy from being shunted into the reactor at once. It’ll probably explode, but that would be a welcome release.”

Pumps the starter and closes his eyes, “Please, come on, now!” and pushes the button. The running lights explode in showers of sparks and a panel flies off the side of the ship, but the reactor catches. Slowly it winds up until it becomes a familiar background hum. 11%, 14%, 16%

He hears a gasp in his neural link and starts to cry. His girl lives.

“Oh, you look horrible,” she says.

“Yea, well I look better than you.”

“Auto repair initiated. It seems we’ve been detected.” Air raid sirens.

“Captain,” the kid says, “we need to get out of here. They’ve detected your power up sequence.”

“Get off my ship, kid, now.”

He started flipping switches and could hear thrusters powering up.

“What are you doing? We need to turn everything off and hide this wreck before they get here. We can build more and save the empire.”

“You have three seconds to exit or you’re coming with us.”

She steps down the ramp and screams, “Please. You have to listen to reason.”

“No. There is nothing left. My wife and son are gone. The empress and prince are dead. The royal bloodline has been ended. All of the planets of this empire lay conquered and defeated. We were betrayed by our closest allies. Not only did they leave us to the Quagarrs, they invaded during our time of rebuilding to rape our planets. Now I only have one mission in my life.”

She watched dumbfounded as the Harbinger’s nanites rebuilt the turret before her eyes.

“Please,” she screamed over the wine of the thrusters. “There is so much left for us to try.”

“There is only one thing left,” he snarled, “revenge.”

From the NintendoAGE Thread:

D-PAD on controller 2 shoots.
. Cunt. Had to censor for work peeps.

1/7/14 – Update

So, I haven’t had time to work on this very much in the past couple months. I figured I’d post another demo ROM just cause when I do have time, I’ll probably get distracted with a Christmas game I thought of and would like to release next holiday season. Simple NROM game.

Anyway, this one shows the progress of enemy construction and such. They are in the reverse order of how I programmed them, most recent first. The first one isn’t done, it needs an explosion pattern. Enjoy.

10/2/14 – Update

I added a couple more ships.

1. “S-Ships” for want of a better term. Basically green blobs that take a 3rd order polynomial path across the screen and look neat. I honestly just wanted to see if putting that many things on the screen would break it. But it didn’t. It looks pretty cool with the swarm following each other. Reminds me of that scene in Close Encounters when they watch all the ships chase each other.

2. I added a Tardis type enemy. They take a parabolic trajectory across the screen and shoot at you as they pass you by. It’s a pain in the ass as the missles are hard to avoid. They look neat though and actually look like a Tardis. I’ll probably use the missle type as another enemy. Maybe a swarm of them or something.

After this I ran into a nasty bug that took me 2 days to find. Basically the enemy counter wasn’t working and it kept throwing off random parts of the explosions in all directions. It made no sense that the two seemingly unrelated things could mess you up that bad…but it did. Anyway, I forgot to set a sprite type on a couple explosion slaves (the right hand side of the sprite which is slaved to the dominate sprite) and, as a result, it was using whatever happened to be in the RAM address (from the previous sprite). When it did this, the explosion half moved like the random sprite type AND, when it reset after going off the screen, altered the counter so the program’s bad guy count was f-ed up. 20-20 hindsight, but it was frustrating. I had no idea what was happening and thought it was 2 bugs.

Anyway, right now, with no encouragement from the user blowing shit up, it takes about a minute for the sprite sequence to run. The background goes for about 2:51, so we have some more work to do!!


9/30/14 – Update

I’m pretty sure on the name, sure enough to change the thread title. Mostly because of the look on my gf’s face when I told her this was the direction in which I was leaning.

I finished the Ori ships. They basically move like a sine wave down the screen. They’ll damage you if you run into them and explode into 8 pieces if you shoot them. Pretty neat, if I do say so myself.

Hallowed are the Ori.


9/25/14 – Updates

This update took a lot longer than it needed to because I’m a dumbass. Let’s leave it at that.

I changed the pattern in which the two Enterprise bad guys come on the screen. It’s not just a progression across the screen. It’s a little more advanced.

Next, I added another badguy, the “Cross” just cause that’s how it’s shaped. These just make their way across the screen…unless you shoot them. Then they stop and you have a certain amount of time to kill them or they explode sending bullets scattering around the screen. It’s actually a little challenging, especally when you’re running around blowing shit up. It’s got different sounds and explosions depending on how you get hit.

The next ship I’ll imput is based on SG1 Ori ships. They will do something and explode if you shoot them.


9/23/14 – Updates

So, I’ve done quite a bit in a short time.

First, I added a second bad guy, sorta. I basically made the Enterprise guys green/purple and made them shoot up from the bottom. But in doing so, I made a sprite engine. It can load different #s of guys at different intervals with various palletts, etc. Just needs time to add new guys. I have sprites ready, just need to get to it. But I’ve been distracted:

Second, I was running out of processing time. Strictly speaking, running everything every frame isn’t necessary…and here’s why. As long as you keep the timer running, you’re not going to notice if the on screen timer updates only run at 30fps. Same thing with the score display. There are a couple of other things like that.

Also, sprite cycling takes a long, fucking, long time. Like almost 40 scanlines. I must be doing it wrong. Anyway, the solution? Run cycling one frame, run the updates above the next, and flip flop. Kinda evens out and “saves” a shit load of time.

Problem: everything I’ve seen thus far has the NMI write to $4014 for sprite DMA as a hard coded #…why? So, if we use a variable, we can use $0200 one frame (for the uncycled sprites) and $0700 the next (for the cycled ones). That way we always use the $0200 block to update sprites and just copy it every time we need to flip/flop the sprite order. Reverse engineering FTW.

Next, I went through and consolidated a lot of shit. I removed some short loops that were not necessary (while trying to minimize processing time, not space) and removed some unnecessary things (like the writing $FE to both the horz and vert part of a sprite when moving it off screen. If you program right, you only need vert). This didn’t help much, but it helped me find some dumbass attacks and runs a tad faster.

I also removed the various bugs I encountered while doing this. Ufda.

Next, I removed 2 of the bullets. So, rather than firing 3 bulletts from each drone in tri fire mode, it fires 1 from each drone and 2 from the center. You wouldn’t have noticed if I hadn’t told you. This reduced the total number of bullett sprites by 6…and thus reducing the total from 18 to 12. It didn’t make a big difference in game play, but EVERY routine using this number is reduced by 1/3. Background collisions, loading, moving, sprite collisions, etc…all reduced by 1/3.

The result of all this was the removal of the processing time issues. I think that I might run into it again in the future, but we’ll see what happens. There are always ways around it.

Next, I had just about filled up one of the static banks…so I had to reorganize. Copy/paste and we’re golden…but still have half the static space filled. This may result in some fancy bank switching, but not today. Hard to believe that I filled that up without including any data tables!! (I ususally use a seperate file [with .include] for each bank, or each routine if I feel fancy. This keeps it organized.)

I’ve also been watching long plays on YouTube of various SHMUPs just to see what’s been done and to come up with some ideas. It’s all been done before, so it’s not stealing, right???

I like the swaying they do in Recca…I might do this in level transitions just to see if I can make it work.


9/18/14
Today I managed a little work. Nothing too spectatular for as long as it took.

First, I made a death routine. I used the ramdom function in excel to come up with an explosion pattern for when your ship dies. Pretty bad ass, actually. This took a while to figure out as it involved transitioning from one game state to another while seamlessly finishing off whatever badguys, bulletts, etc. were still on the screen. Then I had to make sure that if your ship was too close to one of the edges, the explosions didn’t overlap on the other side of the screen.

I also lessened the health of the background destruct-o-blocks. Makes for a faster paced game and provides easy access to killing bad guys. I also decreased (by 50%) the amount of time between the time the harbinger can fire and fire again. Still only 3 sets of bulletts, but with the faster firing, you blow shit up faster and can save yourself from badguys better.

Second, I made a new life initiation. It’s pretty simple, but it gets you going again where you left off and displays how many guys you have left. Here I ran into some issues with scrolling and the limits I set so the CPU wouldn’t be overrun. Anyway, it’s fixed and works. Not sure what to do next!! Probably add new bad guys.


9/17/14
Updated ROM attached. I haven’t had much time to work on this recently, but I thought I’d post my progress cause I like me and so do you.

New features include bad guys, more or less. The rest of the features were in the last version, it just wasn’t active in that ROM unless you tried really hard to find it.
-Bad guys don’t do much yet, but they function about how I want them. Just need to make them move around.
-Special blocks release extra point multipliers, drones, and the tri fire upgrade.
-Drones can be destroyed independently.
-Tri fire and drone bonuses increase health.
-If you’re hit, you’ll loose your tri fire, then bonus multiplier, then health.

The main problem is CPU time. I am trying to think of ways to modify it so that certain routines are excluded when it’s updating the background, but I may have to calm down some things cause it’s still overrunning the time. The sprite routines are pretty salty, so we’ll see where this game takes me!

Oh, and I also have a name more or less picked out. Thanks to he suggested it, you know who you are.

“Cunt Punch: The Revenge of the Harbinger”

Suggestions are welcome!!


4/27/14
So, I’ve been wanting to follow up The Grind with a new game. I think that the video explains it very well. I’d be interested in any and all comments. See the demo ROM attached.

Thanks!!