Yeah, I used GPS to save ROM space because the patch itself already uses a lot of space.
If I used BTSD, the blocks would consume a lot of space due to the change map16 routine and the blocks won't have those special features that I use to make the blocks a bit customizable.
Not to mention, when you attempted to insert all the blocks at once, you have to wait long enough since the program inserts each block at a time (approximately 1 block every 0.8 seconds). Not to mention, if you are having multiple blocks in a huge pack (like my screen scrolling pipes), you can just copy the "built in list" and paste it in the list.txt without having to input data into the "edit block database" (like seriously, why do I have to manually paste the file path, add a block name (the file name itself is enough, why another block name for BTSD?) and block id (what's the point in that? Map16 number is tolerable, but why an extra colum?)). Not to mention, GPS doesn't require .net framework.
And since this is asar and not xkas, you can use if statements. ("If !DefineVariable = x") (inequalities symbols: !=, <, >, <=, and >=), rather than the horrendous rep-1 macro tricks (which is really confusing on what do they do), even Alcaro says "they're ugly", said here.
-------------------- Give thanks to RPG hacker for working on Asar.
Making powerups would be a LOT easier (since you won't need to search more hijacks and all of that stuff), you still need some ASM knowledge to make them, though.
Changing powerups would be easy too, it's just about adding a line in powerup_code.asm in the right place. it will also depends on the powerup, though. It may need some normal/extended/cluster/etc sprite to work correctly or some other ASM hack.
These are great news
I'm really looking forward to the finished version of these powerups.
I always wanted to make a mega man styled hack and this would be very helpful.
Your current items are already really nice and I like some of the concepts, you are trying to realize soon (especially bubble Mario could be awesome).
I got the Mario ExGFX thing to work well with my patch. All that you need to do get it to work is fill two RAM addresses. One being a flag and the other being the GFX index, note that the RAM addresses will never get cleared, you may want to use uberASM and put in gamemode_11 the code to clear those RAM addresses in level load.
Another thing that I added is making every powerup projectile to be completely dynamic, but don't worry, the DMA routine won't run if there isn't a projectile being processed. This won't affect the original fireballs and this can be disabled if you don't like this.
Also I fixed a bunch of bugs that Tahixham reported (and other people too) plus a DKC Status bar support.
I'm currently compressing the graphics files to not use 24kB and adding a lot of defines to move around the powerup tiles and their properties and other defines that are used to remap most of the GFX00 and GFX01 stuff. I'm doing this because I need space in GFX00 and GFX01 to have all of the powerup items to be global.
Nothing new about Bubble Mario and fixing the Tanooki suit... yet.
Your work is truly excellent! The only problem is that I would like to use the patch called "FuSoYa's SMB3 Screen Scrolling Pipes" but I have just discovered that this patch unfortunately, to be inserted together with the power-ups, make my hack freeze.
To be more precise, the patch is called "Pipes.asm". Is this file, which when inserted, freezes my hack. I would love to be able to use this patch. Is there anything I can do to fix this? If not possible, I will be anxious waiting for the completion of your work! Perhaps it would be solved.
@TheRealSMW: Oh, I'll look into that patch to solve that issue.
@KDeee: Well, I'm not surprised that tilemap editor doesn't work (at all) with my patch due to shell suit and the raccoon tilemaps doesn't use $00E00C & $00E0CC for their tilemaps. You will need to manually recreate your tilemaps in powerups_data.asm. Use this diagram and this wiki page to build those tables manually.
You can also use an hex editor and open your rom, search the SNES address $00E052 (PC offset 0x06252) and copy all of the bytes in the range from $00E052 to $00E098 (0x06298) and paste them in powerups_data.asm after the label MarioUpperTileShell, then do the same with the bytes in the range $00E112 (0x06312) to $00E158 (0x06358) and paste them in the label MarioLowerTileShell. Do the same with the raccoon tilemap. I don't how well this will work, but giving a try won't hurt.
I know that this isn't good for this patch, but I don't know how to make tools to edit the tilemaps easier.
Oh, and I have something else to say.
I'm not going to include Luigi graphics on this patch, I'm doing this because they consume a lot of space, but this doesn't mean that you can't have separate Luigi graphics, you just need to rip them from somewhere else or draw them and edit a table at the top of powerup_data.asm.
Doing that reduces the insert size by 50000 bytes, plus the optimizations that I'm doing to the other .bin files, the patch insert size (for now) is approximately 109405 bytes and there are two more .bin files that I need to reduce.
Yeah, I need to fix some issues that pop out and I haven noticed, but this won't take too much. It's very likely that I release the new update in less than 24 hours!
That said, there is a list of what I've done in this time.
- Bubble projectile is now available.
- Mario ExGFX integrated in the patch. More info when I release the update.
- Added a feature that uploads dynamically the projectiles GFX to the VRAM and it can be disabled if the user wants. More info when I release the update.
- Optimized most of the graphic files for the powerup tilemaps, now they are 12kB instead of 24kB.
- The new insert size of the patch is 86641 bytes instead of 178909 bytes.
- There are a bunch of defines in powerup_defs.asm that let you to remap some GFX00 and GFX01 stuff.
- DKC Status bar compatibility.
- !shell_immunity now has a purpose. Thanks to Lui37.
- Included some defines to set the tile/YXPPCCCT properties of the projectiles in powerup_defs.asm
- Added some settings for Mario Statue in sprite_props.asm.
- Tanooki suit was using the wrong combination of buttons to trigger the statue.
- Mario statue was able to climb in nets.
- Mario statue was using spin jump instead of a custom routine to detect sprites and kill them or be invincible to them.
- Fixed a bug in question block that doesn't do anything in vertical levels.
- Ice blocks weren't detecting ceilings correctly.
- Iceballs now really listen to the sprite_props.asm settings.
- Iceballs doesn't display a fireball when are about to disappear in a puff of smoke.
- And probably a lot more. I don't remember what I fixed (forgot to create a list... >.>).
- Luigi graphics aren't included in the patch, you must search/draw your own graphics in order to have Luigi graphics.
Maybe I'll update the Fixes list if I remember more fixes and when I solve those issues that I mentioned.
Yes, but they doesn't affect the original hammers that are used by the hammer bro.
@The other question: Probably I'll do Cloud Mario and/or select one of your suggestions on the C3 thread to see what I'll do, but I won't be able to do much progress on it due to high school.
The next major update (add one or two powerups or some features) would be in the next C3, unless I have more free time than I expect to have it could come before C3.
Also, sorry for not being able to release the patch at the time that I stated above, some other issues pop out of nowhere and the fix for the Mario statue being able to climb stopped working for some dumb reason...
It seems that everything is ok, I'll test it once more and start putting everything into a .zip file.