Yes, it is finally here! Megaman 2 PTC v1.0 is complete. Be warned. This is a big project, so it is going to have A LOT of QR codes. How many? 243 QR codes total, spanned across 6 files. Extensive testing was done to insure that this product is free from as many glitches, bugs, and errors as possible. Even with all our testing, it is still possible that a problem may be found. I will get a “README” file prepared as soon as possible for those that download the program, but do not know how to do things on it (such as the editor, or even certain in-game operations).
So people are wondering where I am in terms of the project, since I continue to repeat myself, that I plan to get this done by the end of the year. That is still my goal, and that’ll only change if I run into a major snag from here to the end. Various parts of the development have ran into snags along its overall development, which I’ve ended up having to spend a lot more time reworking compared to others. As of right now, I’ve got the first 4 Wily bosses done. I’ll likely need to tweak them at some point, but they are working. The Mecha Dragon and Guts Tank had some snags, like needing auto scrolling and working with a platform like the tank has, but they’ve been dealt with. So what else do I have to do? Well, the last 2 remaining bosses, a teleport mechanic, the progress of working through Wily’s Castle (the stuff in between each level), and the little cutscene with Wily surrendering . I am hoping that I can design teleports to be used for custom levels, but we shall see. I’m still planning out how to get that implemented. Unfortunately, while the robot masters are available for use with custom levels, I have no plans for the Wily bosses to be available. Their mechanics are just too restrictive to allow it.
When testing the Wily bosses after getting the first 4 done, there was a screwup with the first Wily stage. The portion of the level where the Mecha Dragon would appear got cut off, so I had to extend that sublevel again. Currently the editor doesn’t clear the sublevel data from previous level in the main array I use, so when extending that last sublevel, it threw in the long stretch of the first sublevel that you start at. Seeing this, I wanted to see how the battle would be like, so I recorded it before I got to fixing it.
The AI for all 8 Robot Masters, including their weapons, is finished, give or take some tweaking and additional bug testing. I have now moved on to developing the main portion of the game, making the interface for level selection and progress data. I still have the Wily bosses to work on, but that’ll be afterwards. Unlike the original, which used a password system, this port will use saving instead (up to 8 slots). Information for the save is displayed, which involves which weapons have been obtained, how many lives and e-tanks you have, and even the difficulty you chose to begin the game (and yes, there will be normal and hard modes). Unfortunately because of all the work I’ve done getting the game working under editor conditions, the original design for loading levels used by the past demos is broken, so that is going under repair procedures.
Long episode of no updates. Completely my fault. So many things going on, and this project was a small portion of that. Sometimes when I have a breather, it ends up being more than a breather. A few things to note that has happened recently.
First was an attempt to make a converter that would take in NSF files (Nintendo Sound Format, basically, NES music/sfx) and convert them into MML structure. I originally was going to put together a small article that would describe the instruments used for replicating the NES audio used in Megaman 2 PTC and how I was able to export them decently accurate, but after diving into that, I learned that certain NES audio players had their sourcse available, so I thought that maybe I could save people the trouble of manually making their own music copies by creating this program and doing it automatically. The output seems to work decently, excluding various effects like pitch sweeps. Unfortunately, attempts to find the main loop points for each musical composition has been less than stellar, likely because the exportation method works off examining the state of the channels at a rate of 60 times per second when the music updates at a far more significant rate. Since the base of the exporter/player is made by someone else, I’d have to examine their work and see if I can retrieve the data a lot more often, or find another way to export the audio. This converter has been put on hold until further notice.
That is what I’ve spent most of my time on since this last update, though I have worked on MM2PTC here and there among other things. Various other distractions came about, such as family unexpectedly dropping by for the week from Idaho, Mario Kart 8, and just recently, E3. At the very least, I can say that all the Robot Master AI is completed, but only Bubbleman’s weapon AI has been programmed. There is one problem that I’m hoping I can get passed. When the program reaches a certain number of sprites on-screen (around 8-9, which include enemies, bullets, etc), the program begins to slow down. In most cases during the main game, that shouldn’t be too much of a problem. However, bosses like Heatman use so many individual sprites at one time (weapon fire mainly) that I can’t help but imagine that their fights will become slow. I’m devising a method that I hope will not only improve those scenarios, but general performance as well.
Sorry for the gap in updates. After dealing with the HDD crash mention in my last post, it became apparent that I was in need of upgrading my computer. So, I did quite a bit of researching as to what I could use/need, and with money saved up (along with my tax return), I purchased items and built a new computer. This dug into my time that I usually spend with this project, but I have done some work nonetheless. No more “terminal” interface appearance. Now the menu system has been implemented for going from one part the program to another. With that, extras have been included, such as the Audio Player and even the Credits. Using methods meant for the menus, I am also incorporating them into the editor so the method of displaying information doesn’t look so plain.
The robot master AI has been put on hold for the moment because I have to decide how I am to deal with them in custom rooms, much in the same way I had to alter/add AI routines for some enemies because they can be placed anywhere that are not normally allowed in the original game.
Had the unfortunate incident of my desktop going out because the main drive stopped working. Thankfully, I had long since used DropBox to store all data and backup versions of my work, so nothing regarding this project has been lost. I can’t say the same for some of my own stuff like pictures and some documents. Drive won’t rev-up during the boot sequence, and so doesn’t get recognized by the system at all. Had someone tell me to try a “freezer-fix” because it might be the grease inside has become tar-ish, but I gotta find some silica gel first (packets usually placed with clothing, shoes, and electronics to absorb moisture). So, there’s a chance of at least getting the drive to run long enough to get some important things, but its general use is over. I’m currently using my laptop for everything now and not just for on-the-go.
As for the project, I’m working on the 8 robot masters right now. Haven’t gotten to the individual AI yet, but the general execution across all of the masters is about done, such as engagement, general hitboxes and responses, exploding and “level cleared” execution. I’m designing them to be usable in the editor (with some restrictions, of course). Some of the restrictions are as follows, to which a robot master will not appear if:
The sublevel they are placed in is longer than 1 screen segment.
Another robot master is already designated in the room.
They won’t necessarily be what ends the level, so technically, you could link 8 rooms together, and fight each of them sequentially. Transitions from room to room will be disabled during a boss fight, but will become enabled once they are dead.
Sorry for the lack of updates. Been going against a bunch of hurdles with the program, but most have been dealt with. As of right now, all enemies and sub-bosses have been completed with their AI improved and adjusted. Dealing with the sub-bosses was a bit of a chore because they didn’t deal with just sprites, but also messed with the background as part of their visuals. Also, because of being able to place them anywhere with the editor, I also had to make numerous code adjustments (to prevent overlapping) as well as numerous palette execution changes with regard to them because of how they may use palette animations (so by doing a palette animation to one, it would have affected all others of the same type in visual range).
I’ve also been refining the code that deals with transition data (that allows moving from one sub level to the next) as I added gate placements. This did cause me to require changing map collision data so now, there will be a 1 tile invisible wall on either side. While this makes Megaman react correctly like the original did in this instance, it will affect how enemies will react to this wall, which are supposed to act differently. Shouldn’t cause much of a problem though. The transitions can either be activated by touching any open portion of the sides, or just one open portion. The gates can be placed on any open section on the left/right sides. The original game does not have gates leading up/down, but I wouldn’t cross that off the list just yet. It won’t be a focus atm.
Before I begin work on the bosses, I will be going through a stabilization session, to ensure that what can be created with the editor would not result in errors that stops the program.
I’ve been sick for the past couple of days, so I’ll make this brief. Been working on numerous things, most involving the remaining regular entity/enemy AI, so the blocks that phase in and out, lazer beams and even lighting changes in Quickman’s stage are all functioning (the lighting, however, restricted to that stage). I have yet to begin AI work on the sub-bosses and regular bosses. Also found numerous bugs in the editor which began to pop up when I began working on the Entity subcategory.
Megaman’s AI is roughly half done. Unlike the Sept demo, he now incorporates some of the iconic movements and animations that make a Megaman game, such as the pixel-forward step before a run, the little slide as he stops, even him sliding on ice. Doesn’t sound like much, but BASIC programming doesn’t make it easy. I haven’t re-implemented his shooting yet, but I hope to also work on all his projectiles and not just one really soon.
Getting much of these things out of the way (mainly all the bugs that were hidden but now fixed), I began testing the waters as to how many graphic blocks I can compress and cram into a single GRP. From the looks of it, having almost all the sprites is estimating to be just under 40Kbytes, roughly 10Kbyte short of filling an entire GRP. Just to give you an idea of the compression ratio, there are currently 3152 8×8 pixel blocks that are compressed. Uncompressed as 4-bit (16 color) blocks would take up 101KBytes. 2-bit (4 color) blocks would be half that, but most of the blocks are not 2-bit. Based on this, I believe I’ll be able to to stay within the 4 GRP at-a-time limit, but I won’t truly know until the project gets closer to finishing.
One last thing. This collection of sprite graphics is roughly equivalent to 31 QR codes (the Sept demo was 43 codes), so be weary, because this game is going to be huge.