Armed for Battle has a brand new demo to try!

I'm sorry this is not a demo for a new game, but this was the quick side project that needed to happen.  At Midwest Gaming Classic, I spoke with a great guy named Greg.  Greg runs several stores, called Cash-In Culture in the Pennsylvania area (looks like the kind of store I would love to check out).  At those stores, a handful of Armed For Battle games are available to play and purchase.  Greg pointed out that a demo, where a player is thrust into the middle of a level would probably be helpful to players trying it out.  I absolutely agreed, because when I demo the game at Midwest Gaming Classic, it usually takes a little while for a player to get 'into the level.'

Please try out the new demo.  On the title screen, you have 4 scenarios to choose from:
  • Train An Archer
  • Locate The Enemy
  • Battle An Enemy
  • Try A Full Level
Very simple scenarios, and you'll easily be able to see various portions of the gameplay.  Plus, you still have the option to try out a full level from the very start.  Thanks for trying it out, and let me know what you think!


Midwest Gaming Classic 2016 is less than 24 hours away!!

I apologize for the lack of updates - as always, things have been crazy busy.  The good news, is that I have a brand new office, which will serve well for future homebrewing efforts.  Almost exactly one year ago, my wife and I bought a new house, and with the move, it was tough to fit in homebrew development due to lack of free time and not a very adequate work environment.  The work environment issue has been resolved.  As far as the free time issue, I can't really do anything about this, but not to worry - Armed for Battle somehow got created with the same dilemma.

For now though, let's concentrate on Midwest Gaming Classic.  As always, I will be there, and can again be found with the same great group of guys in the NintendoAge room.  If you still have not gotten a copy of Armed For Battle - please check it out.  Say hi, play the game, hang out, it's all good.  And if you want to see some of the other things I've been working on (very slowly), I will be happy to show you.

If you like new NES homebrews, you will not be disappointed!  You can see these at the NintendoAge room:

Legends of Owlia
The Incident
Haunted Halloween '85
Unexpected Ordinance
Armed For Battle
and more...

In other homebrew news, you probably don't know this, but I am very happy to say that I was the 'man behind the scenes' for production of the box, manual, and more for these great games:
Swords and Runes
The Incident
0 to X
Haunted Halloween '85
Legends of Owlia (brand new)

I seriously recommend checking them out!  And if you are a homebrew developer that is looking to get some pristine looking materials made, please contact me!  So far, I've had experience producing boxes, manuals, cartridge stickers, dust sleeves with hot-stamped logos, and styrofoam blocks.  Just let me know what you need and I'm happy to give you a quote.


In only 3 days, I am returning to the Portland Retro Gaming Expo!

It was phenomenal last year.  The best part of my 2014 experience was meeting the people that I have conversed with through email, social media, and forums.

I enjoy competitive NES Tetris, and periodically visit tetrisconcept.net.  Many of the top players on those forums come to the Classic Tetris Championships, which are a big part of weekend at PRGE.  There were also some great guys from NintendoAge at the show, not to mention Paul from infiniteneslives, who handles the hardware for my homebrew games.

Speaking of Tetris, I have finally completed my goal of a max out!  It's not an easy feat, and I am very relieved to finally achieve this.

If you still need a copy of Armed For Battle, it will be available again at the show.  It will be in very limited quantity, so get it quick!  Look for the NintendoAge megabooth, which is where you can buy it, or just give it a try.

At the NintendoAge booth, you'll be sure to meet some great people.  Brian Parker, who is selling my game will be there.  He is sure to have many more homebrew titles there from his site, retrousb.com.  You can also say hi to KHAN, a very gifted NES developer, who will be selling The Incident (shhh, it's not officially released yet), as well as Beau (aka Sole Goose), the producer of 2 brand new NES games titled Swords and Runes, and 0 to X.  If you love NES homebrew, this is the place to visit during PRGE!

I'll see you there!


Those 2 weeks went by quick - it's time for an update!  I don't know what form these updates will take, other than giving bits and pieces of the development process.  You'll see graphics development, game design and decision making, snippets of assembly code, and more.  I will warn you now - when I show code, you'll be in one of the 3 categories:
1) you are a talented programmer, and will probably see flaws, or inefficiency
    (I welcome any advice if you'd like to share)
2) you have no idea what the code means
     (if you are interested and want to start somewhere, check out Nerdy Nights and NesDev)
3) you have a little coding experience, and might apply some of my ideas to your own homebrew
    (that's awesome)

Another warning about my code - it takes a lot of code to make things function correctly.  I don't want to bore you and paste in huge portions of code, so you'll only see parts and pieces and I'll explain those snippets in plain english.  You can always contact me and ask for more info.  Finally, I want to recommend this site which is excellent for referencing 6502 assembly language.  If you see 3 letters in my code, like JSR or BNE, and want to know what the heck those do, you can look them up at that site.

I imagine I'll reveal the name of this project very soon (maybe in the next update).  In the beginning of a project, it's all about brainstorming. Coming up with game ideas is definitely a lot of fun, but also tricky.  You have to know what the NES is capable of.  Luckily, there are over 700 examples showing what the NES can do.  I'm a bit relieved that Armed For Battle is completed, because I didn't know if real time strategy could be achieved on the NES.  If you have an idea in mind, chances are you can make it, but you might just have to get inventive in how to implement certain things.

After finally deciding on the overall game I was going to make, individual gameplay ideas were jotted down whenever something more came to mind.  My game requires levels that will move left and right only.  I broke out the graph paper, and came up with a rough level.

Instead of a long winded explanation, I'll opt to just explain a few things about what you see above.
23C8, 23D0, 23D8, etc - these are addresses for Attributes
0, 32, 64, 96, etc (in pink) - these are the Y coordinates for sprites
0 through 15 across the top is for meta tiles (1 screen width is 16 meta tiles)
60, 24, 00, 52, 08, 28, 56, etc are numbers I assigned to meta tiles, and you'll see more about those numbers below.

Now you can compare the graph paper layout to what you see here:

I use Tile Layer Pro to make my graphics.  There are likely better methods for making graphics, but TLP is what I know.  In TLP, you make individual tiles which cover an area of 8x8 pixels.  A meta tile is a term that refers to an area 2 tiles wide by 2 tiles tall (in other words, 16x16 pixels).  Picture each tile below having numbers.  00 in the upper left, and then count up as you go across to the right.  The next row starts with tile 16 (or hexadecimal value $10).

After creating some tiles in TLP, I decide how to work with these tiles in the code.  This is what my code looks like, when I'm creating meta tiles.

Now, let's put some of this together.  If you look again at the graph paper, I drew an arrow pointing towards some green grass and wrote in the number "28."  On the graph paper, I wasn't able to label it 28 until I decided how to organize my meta tile data (seen above).  Once I wrote that code, and decided that a "Cliff Left Corner" would be value 0, Cliff Right Corner would be value 4, etc, then I eventually added "Grass Patch Left" and said it would use value 28.  See the other numbers on that line?  $0E, $0E, $0F, $13 (which is 14, 14, 15, 19 in decimal) are the 4 individual tiles that make up meta tile 28.  If you look back at the tile layer pro picture, and visualize tiles 14, 14, 15, and 19 in the upper left, upper right, lower left, lower right, you can probably understand how my meta tiles are coded.

In another part of my code, I type in the level data.  Here's a sample, along with a breakdown.

Each line of data is representing the level, 1 column at a time.
%11001010 - the % symbol is used when I want to type in a binary number.  The reason I'm typing this number in binary, is because I want to carefully type in the individual bits.  The 11 at the beginning is a special code.  When my code accesses the level data, it goes through it byte by byte, and checks for certain things.  Is the value = $FF?  Is the value greater than %11000000 (aka 192 in decimal)?  If so, the code needs to do something special.  When it finds 11 at the beginning, it then looks at the last 4 numbers, which is 1010 (aka 10 in binary).  Altogether, and in plain english, the %11001010 means 'repeat the next tile value 10 times'.  It condenses things nicely.  If I wanted to, I could simply say:


but then 10 bytes would be needed, rather than just 2.

#META_INDEX_SKY is a value of 36.  In another part of my code, I just said
META_INDEX_SKY = 36.  I could have actually used the number 36 there, but using META_INDEX_SKY just helps me read my code easier.  Please don't ask why I then said "60" instead of META_INDEX_BOTTOMBORDER_CLIFF_TOP.  I just found it easier to type in 60.

Finally comes $FF, which is the way I end each column.  The code looks for $FF, to know when to stop getting data for a column.

I had no idea that this blog update would turn into something so technical, but for those of you that are still reading, here is a subroutine/function that I named DrawAMetaTileStraightToNameTable.

Here are a few random things I'd like to point out to other NES homebrewers.
  • This code is used when filling in a full screen (NMI is disabled, so I can write straight to the nametables using $2006 and $2007)
  • level_ptr_metaTileData is a pointer which is pointing to MetaTiles_Data
  • I have found that pushing and pulling the X & Y registers at the beginning and end of a function (when you use those registers inside the function) helps eliminate potential bugs
  • I'm used to coding in C, and it helps me when I add (nameTableAddr, curr_metaTileIndex, level_ptr_metaTileData), into my comments as if I'm passing parameters to the function

That's plenty for this update.  I know screen shots are a lot more fun.  Feel free to use the contact form, and send a comment my way.  I'd be interested to hear whether this technical stuff is a waste of time, or if I should go a different direction with blog updates.  Input is always welcome.


 Here's something in development by 1010 HOWE.

More to come.  Potentially as biweekly updates during development.  Project completion:  02%


Sale going on now!  $5 off Armed for Battle from now until May 10th.

Last night a special episode of The Goldbergs was shown on ABC.  The Goldbergs is a tv show set in the 80's, so many retro things, such as the Nintendo Entertainment System can be seen on the show.  In last night's episode, titled "Bill/Murray," the character Barry Goldberg was shown playing a game on the NES called Mystic Searches.


Mystic Searches is a game currently in development for the Nintendo Entertainment System.  Although it was brief, showing a new NES game on network television is fantastic for promoting the NES homebrew scene.  Mystic Searches is not only a homebrew for the NES though.  Along with it comes a modern game as well as a documentary about the world of NES homebrew.  I am really looking forward to the completion of this project.  Here's the kickstarter for Mystic Searches.


Midwest Gaming Classic 2015 has come and gone.  Once again, it was an incredible event.  The NintendoAge group always has a presence at the show, and that is where I have been showing Armed for Battle for the last 3 years.  It was shortly after last year's MGC that I finished the game, so this year it was for sale.  I was extremely happy to see my copies sell out.  Thank you to the buyers and supporters of NES homebrew.

For the last few years, the designated area for NintendoAge has been a room which normally functions as a hotel room.  During Midwest Gaming Classic, the hotel clears all furniture out of a block of 10 of their hotel rooms, and it's used for extra convention space.  I made a little signage to lure in anyone passing by.

This year's setup was definitely my best.  I brought along a computer which played the game's trailer, and had 2 televisions set up.  The second tv was used to show Nomolos, another homebrew I was promoting for Gradual Games.  Check it out if you haven't already - it's a solid side scrolling platformer with a good challenge and awesome music.  I had a chance to record the room during a short break in the action.

Click for video.
It was great to have my nephew with me this year, who helped me with hauling equipment, and also stayed in the room while I was trying to partake in some of the convention.  As always, the Tetris tournament was happening, and this year had a great setup.

I was extremely fortunate that the Tetris tournament finals were happening right next to the area where panels take place.  Christian Dietering (aka Ferris Bueller of NintendoAge) was presenting "The World of Nintendo Aftermarket Games" and I was able to listen in while getting ready for the final rounds of the tournament.  I snapped a quick photo of Christian's display.  If you are in the Texas area, be sure to check out his epic convention, Let's Play Gaming Expo, which will take place in August!

After a 4th place showing in the Tetris tournament, where I lost to some good friends, and really great tetris players, I took in just a little more of the convention before it ended.

See you at MGC in 2016!