Tip: Take advantage of easy to install Patches in your hack. The No More Sprite Tile Limits or SA-1 patches should be considered if you're encountering glitches where Mario and/or sprites are turning invisible.
Thank you! It turns out it already DID have that code but once you said the code is written every frame I realized I inserted it as a generator rather than a regular sprite. I made it a regular sprite and now it works perfectly!
Heya. I'm working on a boss and I'm pretty much almost done. During the "death" sequence (it's kinda unusual) I need the sprite to turn the tile in its current position into a map16 tile. Can anyone help me with this? Thanks.
$98-$9B hold the X and Y positions the tile will be spawned at. (See the RAM map.) You'll want to set this to the same values as the sprite X/Y position beforehand, like so:
It's crashing my ROM when I use this code:
dcb "INIT" ;initial code, doesn't do anything
dcb "MAIN" ;main code
insert the rest of the map16 code I obviously copy-pasted here
Hello! Some of the screenshots look decent, but some need work. For example, the overworld needs lots of work. Unless you are planning to change it, the bottom of the top cliffs are cutoff, the palette of some of the water appears green instead of blue, and some land tiles are using the wrong palette. Try looking at the original Super Mario World overworld and see how the tiles are placed there.
The first screenshot shows an interesting background palette.
The last three screenshots show a strange outline to the background clouds in the sky, including the sixth screenshot. Make sure to fix that unless you are planning to have a custom background later on.
And this is minor, but the palette for the blood-like ghost house should have a better red gradient for the background and foreground, including the spikes.
Lastly, the semifinal and final screenshots show empty level design. Try spicing it up a little bit by adding in question blocks, for example, or even decoration.
Good luck with this hack!
I see where one would mistake the overworld tiles for a miscolor, but the screenshots with the toxic waste are in a level tile near the green water. The discolored tiles are actually the toxic waste (the green water) and the dead grass/etc. (the brown ground).
The blood-like area is actually supposed to be darker and redder than the rest of the level.
As for the other stuff, I completely agree with you.
The outline is REALLY awkward and I actually haven't gotten to figuring out how to fix it yet.
The empty level design is something I've noticed and gotten to fixing.
So, I'm just making a level where there's a ton of 4th-wall breaks. At one point it's going to reset the game, and you'll need to go back to the level.
In the beginning of this particular level, there's a generator that checks if a certain RAM address is at a certain value and runs even more code if it is at a value. However, all of the "empty" RAM addresses that I see in the RAM map reset when the game resets, the title screen loads, or even when a level loads.
How do I make it so a RAM address stays a certain value even after a reset or title screen load?
Save it in SRAM instead. SRAM starts at $700000, and its length is defined by a value at $00FFD8.
Some portions of WRAM don't get cleared too, though (e.g. most of bank $7F), but since there's no way of telling whether you actually wrote to that address or if that's just how it ended up on power on, it's not recommended to try using it that way.
So what is SUPPOSED to happen is when Mario touches this block, it shows different messages depending on which emulator you're using. That part works flawlessly.
What I'm TRYING to get working is the part where the block increases $9C by 1. Even when I set it to 0 using a placeholder block (because that's the easiest way for me) it goes straight to the "Disappear" branch. The branch is supposed to bring up another message immediately after the second (it's set to act like tile 25).
I made it so it only changes the value from 0 to 1 using INC after it checks if the value isn't equal to 0, so what am I doing wrong?
It checks for $5C (free ram) and checks if its value is #00, and if it isn't it checks if it's #$01, and if it's not THAT then it just ends the code.
In the Projectile1 and Projectile2 branches it counts down 64 frames then runs the code that I totally didn't copy-paste from one of Nesquik Bunny's posts. After it spawns the bone/fireball it changes $5C's value and ends the code.
What happens in-game is that it just spawns a bone and doesn't even get to the fireball, and it does nothing afterwards.
What am I doing wrong? Am I epicly failing at branching without even knowing it?
I'm not too experienced at ASM but I think you'd need some serious ASM skills to make all this happen. Don't think that I know how to do any of the things I'm about to suggest but it's definitely a simple to-do list for you basically.
i.e. detect if it's a 2-player game, make a new fireball powerup that only Luigi can use, maybe even modify/tweak the fire flower sprite
You'd most likely even need to change Mario (yes he's a sprite too).
You'd definitely need to modify Yoshi.
As I said before I don't know how to do any of this, but I felt like what I said is at least a little helpful (hopefully). :3