Alright, going to throw another update on this project and I'm sure I'll get some laughs and groans again. The name is still a WIP as it's no longer just a "Zero Project" but rather a general update of everything. Maybe just an enhanced version of the original? Don't know, it's not exactly a huge game changing thing, but it doesn't really make it a huge overhaul either. It's just sort of an upgrade in some areas.
I've started the project ENTIRELY over again from ground up which some might find ridiculous and redundant, but oh well, this is for the best of the project and for MANY other features I have in mind in the future! Onto the topic at hand.
Why start this over again? Wasn't the original already good enough?
Mainly because I felt I could do better and that my original versions were hackney in many ways. So this version is going to be a large underneath the hood improvement but also a spectacular update for later features in the game.
The code is starting to be completely rewritten ground up, MANY of the original code locations I used have been shifted by a bit due to a better understanding of what the changes I made were and where they were located at. This helps not only to ensure things are more smoothly implemented, but makes it easier to use global routines instead of very specific ones per location. A good example is the character's icon code. In the original, I had MULTIPLE routines to load a characters icon when switching a character, jumping out of the ride armor, starting a level, etc.. This has now been remedied so there is a universal routine each location can use which saves a TON of room and coding issues. I just have to change one thing, and all subsequent areas that use this code change as well. Easy peasy!
The next large difference comes on my own personal end. I'm writing the code I do in Geiger's still to an extent but I am slowly transitioning into using Asar to import the code instead. I tend to write out in Geiger's first to get a good idea of where I want things placed, but after I port the code over to Notepad++ as .ASM files which then Asar imports. Of course, I'll probably shift entirely to Notepad++ to write my code out but as of right now, this works wonders. Everything I am writing is now split into specific files to note what they are and it makes it easier to just generally import the code if I ever need to change something dramatic. This has saved me a ludicrous amount of time already so I'm quite happy with what's going on so far.
What's so different about this version than your other ones, what're you planning?
Oh there's going to be a plethora of changes but here's a good general list.
1. Many of the code changes I have done now leave gaps in-between for "just in case" scenarios where I may need to expand upon or add new things to the new code. Of course, this can be altered easily in the .ASM files.
2. Most of my code is not only being split between X and Zero, but rather a group of 'four' characters. X, Zero, PC #3, and PC #4. Of course, I really don't plan on adding any new characters but this could be exceptionally useful for anyone who wants to modify this project and add someone. Heck, maybe even just copy/paste X or Zero and give them a new armor but use them as a 'new character'. There's enough gaps in the code to allow for specific checks and updates so this shouldn't be too big of a problem now.
3. Text has been split up and updated heavily underneath so it's no longer hard-set to a very specific bank by the game, but rather, it's a bank setup PER CHARACTER. The text is now using banks 40-46, but each character gets 2 banks of data for text. Of course, this is way more than needed but it doesn't hurt to have more. I'm also planning to implement a dictionary compression system to further compress the text down in case things gets very text heavy.
4. Mentioned above where characters are split between four, I'm splitting ALL general character data into their own new locations. With this, all original locations are unused and obsolete.
PC #3: 7E:F360
PC #4: 7E:F390
5. Each PC will have their own setup for Energy Tanks, weapon health, PC swap health, max health, Heart Tank collection, Energy Tank collection, Armors (Up to four armors are possible in total RAM wise now! Not yet put into game yet though), whether the character is available or not, which armors you have that are completed, and 16 bytes of unused data for more "just in case" scenarios.
6. Password system will be removed in favor of the 'Save Game/Load Game' system. There is absolutely no way around this right now, even with with only the basics.
7. An option for difficulty. The game's standard is 'Normal' but I plan to add a "Hard Mode" at least before I go any further on that.
8. With the said above "Hard Mode", all enemy damage tables will be completely redone. Each enemy will now have their OWN table instead of sharing data which will end up being a large ROM space waster, but it's kind of necessary unfortunately. All enemies will have at least 2 damage tables now for the regular mode and Hard Mode where they will take less damage overall, or more, depending on what a person wants to do.
What's been done so far?
Well, not a whole lot per se, nothing I can really show off since it's all just game code and nothing visual quite yet but a good basis has already been done.
1. X, Zero, PC #3, and PC #4 now all have their own banks of text. I have Atlas ready to import for them as well so easy changing.
2. Zero's basic setup is ready. He can collect everything as of right now and use everything, but of course there's no limiter yet nor any changes to what he's able to use so far. Just a good basic layout.
3. No more character switch limiting like the original X3 and all mid-boss checks for Zero have been removed from each level.
4. The basis location for each characters RAM is ready. The only working thing right now though is their max health, character swap health and how many Heart Tanks obtained. This INCLUDES the difficulty bit being set to 'Hard' where it gets split.
5. Heart Tanks no longer have a life cap like the original game or even the original project. Of course, that means someone could keep collecting Heart Tanks infinitely if someone were to code a new system for Heart Tanks, but this is done for a reason later on if I'm able to figure out how to do it. Things are a bit tough since there's a big sprite limitation on the health bars.. so we'll see where it goes.
6. General decompressed graphics that I need are ready to go, but their code and use has not been implemented yet.
Zero's 1-up Icon is implemented but not functional quite yet.
The "general VRAM" that houses the explosions, life bars etc.. has been updated to remove unused dash particles in favor of letting Zero have a 1-up icon.
The menu graphics have been heavily expanded so each character can now have their own weapon icon for all weapons in-game, including the Hyper Chip.
That's all for now! I'm trying to make this a much further improved project from the other versions so hopefully this keeps going relatively smoothly!