Probably seems kind of an odd project to go with especially since my various other ones seem to be RPGs or Mega Man X... but yeah!
What this project is aiming to do is modify SMB2 and 'enhance' it to an extent. My friend and I are NOT going to go the whole route of adding every single bit of the GBA's new stuff into this game as that is not what is intended. Some features will be added from it (Though a couple actually come from BS Mario 2) but it won't be a direct port by any means.
This project itself is quite the undertaking so it may or may not be finished (Much like my many others it seems) but some MAJOR strides have been done!So what exactly has been going on so far?
The first bit was forcing Super Mario All-Stars to load SMB2 on the fly. As soon as I figured out how to do that, I removed as much of the other Mario game's code as possible. I'm sure I missed quite a bit of the actual 'ASM' for the other games, but their graphics, music, level data, etc.. has been removed to allow for over 1MB of extra space. So now when All-Stars is booted, it'll do the whole coin blip with the Nintendo logo then shoot right into the SMB2 title screen!
The second aspect I realized after studying the code a bit was how incredibly ludicrous the graphic storage for PC's were along with their animation data. Everything was hard-coded to the frikin 'T'. Even animations were flat out coded instead of having a routine to set things up properly. Of course, since all characters share the same data this wasn't a big deal for this game, but for what we hope to do it was incredibly hindering.What has been done?
1. The entire PC graphic routine has been rewritten from ground up. The main routine that stored PC graphics was actually shared with the POW/Crystal Orb/Flask.. for whatever reason. I have no clue why they did that. Now, the POW/Orb/Flask routine has been split and set into it's own bit and their graphics in VRAM have been shuffled to accommodate for much larger PC graphics.
2. The PC graphic routine, as I said, has been rewritten ground up. The routine NOW loads the PC graphics based on what 'frame' is currently in RAM (Stored at 7E:02F3 now since that value goes unused from removing the old code). The code checks what PC you are then loads the frame that you're on. It then loads the proper data for that specific PC and that specific frame and THEN stores the graphics into VRAM.
00 - Standing Still
01 - Walking Frame #1
02 - Walking Frame #2
This is done to allow for flexibility on how to handle graphics the way I hope to use them. Of course, the data has to be properly setup in ROM. Right now, it reads 3 bytes to get the pointer to the PC graphics. It then reads the following 2 bytes to dictate HOW much of the data to send to VRAM. This way we can clearly specify how much we want from the current section.
3. Animation data has been added. I'm still rather iffy on this as I feel like it could be handled much better, but we'll see in the future. Right now, everything works as it should.
What 'Animation Data' is basically how each animation is setup. Say for.. walking. It's value is 02 which gets stored to 7E:00C7 (Current PC Action). It reads that value and loads a per PC basis table up, gets the pointer and the current frame and loads the animation data. In that section there's three bytes technically in total. The first byte is ALWAYS the frame you want to load, the second byte is the delay until the next frame, the 'third' byte is technically an end. Set it to 'FF' and it'll stop reading the animation data, reset the values and start loading it from the beginning. There's NUMEROUS animations in the game for Peach at the moment, mostly the basics but there's quite a few 'new' ones too.
4. The game will sport a 'new' HUD. The hearts are now horizontal instead of vertical for positioning reasons. With that, there is now a coin counter, life counter and a score counter! The score counter will be similar to SMW and BS Mario 2 in which you get points depending on your action. The coin counter will be the same as other Mario games. Get 100 coins, get a 1-up. These coins OFFICIALLY replace the cherries. All maps will be edited accordingly to allow for coin collection. However, as of right now, there is no current way to get a 'Starman' quite yet.What needs to be done?
1. Animation data is in the middle of it's third reworking. This time is hopefully the last.
2. A WHOOOOOOLE lot of redoing for the other PCs, enemies and various objects. I want to extend this animation data/sprite assembly code out to EVERYTHING in game, not just the PCs.
3. Big and small sprites. This one I don't think will be TOO hard. I could technically use the life value in RAM to dictate that so that'd make things easier. We'll see though, depends on what I have planned in the future.
4. Add a check in the animation data if you're holding something or not. All this will do is add a specific number of bytes to load 'new' animations with your hands up for all frames. I'm actually thinking of splitting this off into it's own section for PCs as well but we'll see.
Video update: https://www.youtube.com/watch?v=S9blPOs6ijg&feature=youtu.be