Language…
13 users online: amie5057, autisticsceptile1993, Green Jerry, Hot Sauce, MangoFZP, Saela,  Sayuri, stormflowermario, SweatyNoodle, TheMorganah, TheRedCrystal, VeracitySMWC, ZedPakku - Guests: 127 - Bots: 134
Users: 70,177 (2,559 active)
Latest user: brenknife

Posts by hash

hash's Profile → Posts

As the tiles says I am having some problems with the overworld border GFX/palettes not updating when traversing submaps via red exit tiles. Pipes and stars work correctly.

I have posted a video here showcasing the issue:
Video Here
I am entering the overworld contest, so I have blurred the map so as not to spoil judges if they see it.

As you can see the main overworld has a nice cream coloured border. I enter into the submap via a pipe, and the border updates to the correct grey/black border with different graphics. When I travel from this submap back to the main overworld via a red exit tile, the GFX/palette do not update correctly. This only happens with the red exit tiles.

Does anyone know to to correct this behavior?

I've consulted the Memory Map and found a few RAM addresses that seem to correspond to what I'm trying to accomplish, but I need a bit of guidance from there.

Originally posted by RAM Map
$7E1B9C 1 byte Overworld Player is entering a warp pipe/star flag.
#$00 = No; #$01 = Yes.

Originally posted by RAM Map
$7E1DE8 1 byte Overworld This is a pointer index used for various tasks during the submap switching scene ($7E:13D9 is #$0A), possible values are:
#$00 = Commence with handling windowing HDMA.
#$01-04 = Update layer 1 on the overworld.
#$05 = Handle palette loading.
#$06 = End with windowing HDMA.
#$07 = Terminate submap switching phase by storing #$04 to $7E:13D9, make eventual submap changes (for example, what music to play).


I'm thinking if it were possible to make the red exit tiles run the code that pipes/stars do, and skip that growing/shrinking windowing HDMA, it may update properly. Or perhaps a patch that forces a Layer 3 update when switching submaps? Normally, I consult Thomas' Bankxx.asm files to look for clues on how code is run, but overworld documentation seems sparse. Any help would be appreciated.

Thanks!
Would it be possible to have separate submap extended animation frames (for palettes) for regular submaps and for 'special world passed' submaps? I have a bunch of palette animation that doesn't look right when my overworld switches to 'special world passed' colours.
Bump

I'm hoping someone can understand what is happening here, and how to fix it, so I've made a graphic that hopefully explains the issue a little better.


As you can see my palettes aren't updating correctly, and neither are the Layer 3 tilemaps. I am using the same ExGFX file for all maps. The only thing that is different are the palettes and the LT3 Tilemaps. Is this something that can be fixed and does anyone know how? Thank you!
I have made some code that changes Mario's player pose, but I'd like it to flip back and fourth between frames before reverting back to normal. I am using UberASM, then using a block to make it all come together. This is the code I have made so far (UberASM):

Code
!freeram = $0D9C
!pose = #$38

init:
	LDA #$B0
	STA !freeram
	RTL

main:
	LDA !freeram	;\
	BEQ +		; Timer
	INC !freeram	;/

	LDA !pose	;\Player Pose
	STA $13E0	;/
+ RTL


I'd like the !pose to alternate between #$38 and #$39 displaying each value for 1 frame each until my timer (#$B0) has expired but am unsure how to accomplish this. Any help would be appreciated!
Originally posted by MarioFanGamer
*snip*

Originally posted by Darolac
*snip*


Thank you both for your help! MarioFanGamer your method worked exactly as I needed it (I increased the AND opcode so I could have more frames, and it looks great now). Darolac, your code threw me an error about the lone LDA above 'LDA Pose,x' but after removing that it did work. Thanks again guys :)
I didn't realize this tool existed! Thanks Vitor, this will prove useful. As for additional ideas, it would be cool if this tool had the ability to remove the 2nd/3rd file as well as disable the 2 Player Game. Not just removing the text, but removing the ability to select them.

It would also be nice to be able to edit the text for sprites/koopa kids in the credits section of the game.

Seeing as this is only a tile editor and not an image editor, it would be neat if another companion tool existed that could also modify the images as well.
I am attempting to use both the OW Speed and the OW Music patches but they seem to be incompatible with one another. First I patched the OW Speed, then the OW Music and my game works, but the speed of Mario is reverted to normal. If I patch them the other way around, the game crashes when the overworld loads. Looking at the code, it seems they both change data around the $048242 / $048246 addresses. So they are definitely incompatible with one another.

Does anyone know how I can utilize both patches simultaneously?
Thanks for the reply! I tried what you said above, patching to an entirely fresh ROM (with only the newest AMK patched for song reasons) but the edits throw me an error about !addr not being found.

Looking at other patches, it seems this is an SA-1 check? I'm not using SA-1 so I tried a few different things:
Removing the !addr [with and without ,x], changing it to !base1 or !base2 [with and without ,x] will all patch successfully, but the overworld freezes when it loads. I used !base1 / !base2 because it seems that is what this patch uses for SA-1 check. It doesn't crash, as the graphics remain fine and the music plays, but Mario and the animations are frozen in place (which is progress from before when it would crash entirely).

To be clear, I patched AMK first. Tested ROM. It worked.
Then patched OW Music with the edits you suggested, and the overworld froze.

I also noticed that the OW Speed patch uses address $048246. It uses that address near the bottom of the code, as it JML's to it:
Code
.return
	LDX #$01			; \ Restore the hijacked code and return
	JML $048246			; /


I couldn't find any documentation in the ROM/RAM map for that address so I don't know what it's used for (assuming empty). Do you have any other ideas that could make these patches compatible?

I appreciate your assistance Meirdent.
Originally posted by Erik
*snip*

Thanks Erik, this modification works fine and doesn't seem to cause any issues.

I appreciate everyone's help, but the modifications suggested for the OW Music patch don't seem to work (game freezes on main overworld). Asar throws an error about !addr not being found, so I changed it to !base2 as that's what the patch seems to use instead. I have tried different combinations of the default patches, and the suggested edits as well as different patching order. Either I get a game crash, game freeze, or the game loads but the speed is reduced to normal. Anyone have any other ideas?
Perhaps there is an easier way than the speed patch to double Mario's speed? I have a rather large overworld, and increased speed really helps with wait times.
Really awesome sprites Darolac! New twists on vanilla enemies is always cool to see. Your talent for sprite creation really shows here. Keep up the good work :)
I know it's far from an 8 bit or 16 bit game, but I've always wanted Steam Gardens from Super Mario Odyssey that plays in the wooded Kingdom to be ported.
Song: https://www.youtube.com/watch?v=s8Mx18uR1dY

Completely understandable if it's too complex, but if you wanna give it a go, good luck!
How about a pokey that can be jumped/spin jumped on, but each time that happens, it gets one segment shorter? Configurable speed and number of starting segments with the extra bytes in LM would be a bonus. Also, perhaps it could 'rex-hop' jump Mario when he spin jumps on it. I'm looking forward to what kind of sprites come out of the requests you turn out!
Without you providing very much information to go on, try clicking either #lm{exan} or #lm{exang} in the toolbar and clicking the 'Clear All Slots' button and see if that helps. This will clear all custom exanimation you may have added to the level (this button #lm{exan}) or added globally (this button #lm{exang}).

Other than that, I've not seen this tile cycling issue before. Did you make sure to extract (#lm{extgfx}#lm{extexgfx}) your gfx first, then reinsert (#lm{insgfx}#lm{insexgfx}) before trying to add ExGFX?? You've got to do that [I believe] before trying to add custom graphics so Lunar Magic can convert the original graphics to 4bpp first.

Always make backups of your ROM before doing major changes. If you haven't, Lunar Magic does have an auto-backup feature under "File>Restore>Restore ROM to previous state" that you can use to 'rollback' your ROM to times before problems arise; however, you will lose any changes you've made since the last "auto-save" Lunar Magic performed.

Hope that helps.
A crude way of doing this with minimal effort would be to set a condition that if Mario collects exactly 8 coins and hits the block from below, it will transform into tile 11F; which is the vanilla '?' block that contains a Mushroom (or flower if you're already big).

Code
db $37

JMP MarioBelow : JMP MarioAbove : JMP MarioSide
JMP SpriteV : JMP SpriteH
JMP Cape : JMP Fireball
JMP MarioCorner : JMP MarioBody : JMP MarioHead
JMP WallFeet : JMP WallBody

MarioBelow:
	LDA $0DBF		; \ If the player's coin count is equal to 8...
	CMP #$08		; |
	BNE Label_0000		; /
	LDA #$1F		; \ Make this block act like block #$011F.
	STA $1693		; |
	LDY #$01		; /
Label_0000:			; > --------


MarioAbove:
MarioSide:
SpriteV:
SpriteH:
Cape:
Fireball:
MarioCorner:
MarioBody:
MarioHead:
WallFeet:
WallBody:
RTL



print "When hit from below after collecting exactly 8 coins, you'll receive a powerup."

Do note, that this block will only work if you have exactly 8 coins. If you collect more or less, it will not transform.

The options I used in blockreator are as follows:
Code
If the player's coin count is equal to 8...
	Make this block act like block #$011F.
---------


There are other more elegant ways to perform this task, but this is a quick solution with Blockreator.
Originally posted by jona255
but I mean if the blue p-switch the coins appear and when you collect 8 coins you are given a life
What do you mean by 'if the blue p-switch the coins appear'? There are coins in the vanilla game (item 4 in the #lm{objects} dialog) that will only appear if the blue p-switch is active; can you use those? Then you can apply this patch to change the required amount of coins you need for a 1UP from the green star block (item 17):
Code
org $0091AC	;number of coins needed to get an 1up from the green star block.
db $08		;change this number, in hex, to the amount of coins needed for a 1up to spawn

As indicated above, this will modify the existing vanilla Green Star Block to give mario a 1up if he has collected at least 8 coins but not less than 8 coins. Otherwise it will only give him a coin. Sure this isn't using blockreator, but I can never get the sprite spawn to work properly with blockreator which is why I suggest this (and the map16 change in my last post).
You're missing a line of code at the top. Change
Code
init:
	LDA #$3200
	STA $4330

to
Code
init:
	REP #$20
	LDA #$3200
	STA $4330