So, I tested your codes, and it didn't had any effect when I patched it to the ROM. So I tried studying how that code works and I noticed that you were trying to write a blank tile to the OAM.
Then, I tried to do an experiment by following your tip, and I changed !cape_settings instead:
STA !cape_settings; which in my case was ($7E2145)
After messing with cape_settings bits, it was possible to hide cape/tail without having side effects, it seems that other powerups (non floating ones) don't use that RAM.
When I did these changes (and setting correctly the table of powerups that won't show tail/cape OAM tiles), it worked flawlessly.
I should note that the cant_show_cape_ow table was mislabelled, since the table is to actually define which powerups won't show the cape/tail.
It wasn't need to add any code to the ow_code or ow_init_code, seems that the graphical change is fully handled inside levels.
So applying both codes to gamemode (using your second idea) fixes that problem. There are no more weird tails appearing in overworld.
Also, whoever uses this version of powerup pack, you may want to use this table instead, this one was configured to work with the default v2.1.0 powerups.
Originally posted by LX5
I can't guarantee that it will be 100% fixed with these codes. Also, there should be a better way to do this, but I'm not going to go back to an older version and fix that issue.
What matters now is that it is fixed, I dunno care if it is messy lol.
Thank you very much and sorry for all the trouble.
Originally posted by LX5
Of course I fixed it in 3.y.y, except I had to redo the code in order to have full control over the cape to be able to implement powerups like the small cloud when using the Cloud Powerup and the Propeller Suit small propeller.
Well the stuff is, there are people that still preffers to keep using the old 16x32 tilemap
EDIT: By the way, people may want to change AND #$3E to CMP #$3E, it was making cape walking animation look really weird.
I found another bug when switching between Cape/Raccoon type powerups and non-Cape/Racoon type powerups.
If player is using a non cape/Raccoon/Tanooki and get one of these power-ups, the cape/tail will not appear while climbing. The opposite also happen,if player isn't using cape/Raccoon/Tanooki it will still show the cape if player is climbing in vine/nets, as you could see below:
What is happening is that the !cape_settings isn't being reloaded in some cases. So I found an interesting solution to fix this bug that is to force the game to reload !cape_settings regardless of player actions, by checking which powerup is being used. I just added some code that apply the correct cape_settings depending on power-up being used:
LDA cant_show_cape,x ;Check powerups
+ LDA $19
LDA.b #%00111011 ;Cape Settings for Racoon/Tanooki Suit
STA !cape_settings ;Cape Settings for Cape Suit
I'm not sure about the efficiency of that coding, but now the cape/tail will now hide and appear as it was supposed to happen.
Now the only nasty bug that is still happening is when getting Raccoon/Tanooki Suits while gliding. The player will keep gliding, but since there are no graphics for that due to the different layout and size, garbled graphics will be shown.
If someone is able to make a quick "fix" for that, I guess we can pretty much say the PowerUp Pack v2.1.1 is bug free. By quick fix, I mean, a code that makes the player stop gliding if $19 isn't #$02 (Cape)
EDIT: Actually, it was easier than I thought fixing that bug. I just added a
STZ $1407 ;Cancels Gliding mode
at the start of Raccoon/Tanooki Suit code, since the Gliding Mode is never used by those power-ups. As soon as player gets Raccoon/Tanooki, it will force the Gliding mode to stop.
I was testing out some of the powerups and I noticed an error with the Penguin Suit graphics. The poses for the ducking and throwing the iceball are mapped to the wrong graphics. The graphics seem to be meant for Mario's upward swimming poses.
This is what Mario looks like when ducking:
This is what Mario looks like when throwing and iceball:
Is there hopefully a quick fix for this by changing a small bit of code in some one of the asm files?
As far as I can tell, these are the only bugs I'm running into with the current 3.1.0 patch.
1 - Tanooki / tail powerup flies you waaay too high. Maybe this is just an opinion, but I think being able to fly all the way from the bottom of a horizontal level to the very top is slightly too overpowered. I much prefer the better raccoon powerup version, as it's not too overpowered, and doesn't let you fly over half the level at a time.
2 - The propellor powerup doesn't display proper graphics. I followed all the steps accordingly, and any time I use the propellor powerup, it looks like the tilemaps are all messed up. Yet in the graphics file they're arranged properly.
3 - as mentioned earlier, the penguin powerup displays the wrong tile when shooting an iceball.
4 - Seemingly randomly, the vanilla powerups will display garbled tiles. For example, a 1-up can be displayed correctly on one playthrough, but on another playthrough it may not be displayed correctly. No idea how to fix that one, but it's something to look out for.
5 - Whenever I repatched the powerups patch, say to test custom player graphics, it would crash my ROM, making testing graphics more tedious than it should have been. And at the time I was doing this, I had very few patches applied, just no more sprite tile limits, an overworld save prompt patch, and a patch to save yoshi coins between levels. Now I have more patches applied, but thats because I moved on from making custom graphics.
Thats all I know based off playing around with this patch. I know nothing about coding, but I hope theres a way to fix some of this stuff
It includes mostly bug fixes, so it's nothing too exciting I guess. This version needs to be reapplied in a clean ROM, so if you want to update to this version you should port everything to a new ROM!
- Added missing files.
- Faster Dynamic Items code.
- Fixed a bunch of graphical bugs.
If I'm not lazy enough, I'll put some .bps patches. For now, it's just a ASM patch release. Also, the online readme can be found there, I'll get someone to update it at some point, so it might not be updated when this thing gets uploaded.
As a side note, this is going to be one of the last updates I'll ever publish, the last one will be the one that properly implements GIEPY support.
I'll completely stop doing stuff for this patch (not that I'm doing something at this moment), as I want to focus on another project, it being my own team hack (which I mentioned on twitter, but that's another story).
One of the reasons that I'm dropping this is the whole sprite tool thing that is going on, I have no idea what to use and it's kinda demotivating. The same happened with sa1rom on asar (getting tons of problems and having no idea why it happened) and UberASMTool (kinda my fault for updating the tool, but I didn't know that asar 1.50 had broken sa1 support).
If someone wants to take care of the project, go ahead. I have 0 desires of going back to update things, not even to implement proper GIEPY support since I have no idea when will it be publicily released (aka being in the Tools section).
Darn, that's a bummer. I'd like to still use 1-UPs and Stars in my hack, and the Hammers and Boomerangs can kill things like NPCs, SMB Classic Flags, and the Moving Castle Block...
[Also, I think PIXI is the way to go ]
Star isn't an own powerup but actually a seperate state. You can be big and have a star, you can be small and have a star, you can be firy and have a star or you can caped and have a star.
Nonetheless, yes, all custom powerups uses the same powerup RAM address as the vanilla, just starting from 4 instead of 5.