Language…
8 users online: aroohwahoou, Cesarpks134,  Dark Prince,  Lazy, MM102, NiHiL00098, signature_steve, Weird_Val - Guests: 112 - Bots: 170
Users: 69,705 (2,533 active)
Latest user: Cesarpks134

Posts by hash

hash's Profile → Posts

I have the same issue Bensalot is describing, except with Boo Blocks. I have messed around in the .asm file and attempted to fix it to no avail. Going down to the "org $07F590 ObjectInteraction:" section and changing the bytes doesn't change anything. If anyone else knows a fix for this jittery behavior on Boo Blocks and Reznor, it would be appreciated.

Also, message boxes don't function as usual after this patch either. When I bump the bottom of the block slightly off center Mario will sometimes pop to the side like he got stuck in a 16x16 solid block and the game is pushing him out (this happens with boo blocks also).

The ability to have this patch ignore certain sprites (i.e. keep their vanilla behavior) would be a good way to fix it.
It sounds like what you're after are one-way blocks (like the one-way panels in Mario Maker). You can pass through them from one direction, but cannot pass back through them. If that's what you're after, here you go: https://www.smwcentral.net/?p=section&a=details&id=15352

If you want an invisible block that becomes visible, and blocks your path left or right when you collide with it, I can't help with that.
In the vanilla SMW Sprite 52, the Ghost Floor Hole, was only ever located above a pit. Because of this, it seems the developers never intended the player to jump back up through the hole. I have a section in a level where I need the player to jump back up, but only through the hole and not the ground surrounding it (leaving pass-from-below blocks out of the question).

Is there a hex edit, or an ASM patch that would allow mario to pass up through the location of the hole? The blocks it passes over need to retain any Act Like settings I give them (in my case, 130) when the hole is not covering them.

A custom block that is solid, except when the sprite passes over it would be fine too if that were easier.

Thanks for any help
Thank you Thomas, while that worked, it has caused another issue. I looked up the address you provided in the ROM Map, and the closest entry was #03B620: Height of Sprite Clippings which makes sense given the new issue that has arose. I seem to be getting clipped off any block that is 1 or 2 tiles below the ghost hole as seen in this image:



I tested this on a clean ROM just to be sure it wasn't a conflict with another patch.

I also tried changing the value to $18 / $19 / $1B without any successful results. Is this a limitation, or a fixable problem?
I've been away for a bit, but thank you for continuing to assist Thomas, and Sonikku, if you manage to get a patch working to help this functionality that would be great.

I had checked out the disassembled sprite to see if a fix like the one mentioned would be possible for me to achieve but with such limited ASM knowledge I wasn't entirely sure where to begin additional code.

Currently I've redesigned the room I was using such close proximity ghost hole + blocks, to be moved up 1 tile, but a patch to adjust the interaction for this design would be appreciated.
As an alternative to WYE's UberASM, I have had success with using:
'Sprite EF' - Layer 2 Scroll Sideways Short

I have used this in vertical levels to prevent horizontal scroll while maintaining vertical scroll. You can use as many screens as vertical levels allow, and it is 100% vanilla :).

I hope this helps you with what you're looking for.
(restricted)
After stumbling around some old forum posts I located a nice piece of code for Layer 3 priority that gives me almost the effect I am going for.

What I am trying to accomplish is getting the top of the water, the white part, to only have partial transparency (or none at all), and not to the degree it currently has. Much like the first photo below. Is it possible to exclude this colour from the palette / colour math being applied? Any help modifying this code would be great.

Here are some screen shots of what I've got so far:

This is exactly what I am after, and what it looks like in LM without the ASM I found (note the transparent ripple effect, but white water top only slightly transparent):


This is what it looked like in game without the ASM (CgadSub only on the BG):


And this is what it looks like in game with the ASM applied (CgadSub on Layer 1,2, and 4):


And finally, here is the ASM I found here:
Code
;a = 0 for Addition, 1 for Subtraction, b = 1/2 Enable c = Back Enable, d = Object Enable,
	;efgh = Enable BG 4, 3, 2, 1 (bit 3 only affect below the status bar)
	;	abcdefgh
	LDA.b #%01100100
	STA $40 ; CGADDSUB 
	;	000abcde a = Object b = BG 4 c = BG 3 d = BG 2 e = BG 1
	LDA.b #%00010111
	STA $212C ; Main Screen
	;	000abcde a = Object b = BG 4 c = BG 3 d = BG 2 e = BG 1
	LDA.b #%00010011
	STA $212D ; Sub Screen


Here are my Layer 3 settings if that information helps:
MarioFanGamer, what you said makes a lot of sense. Also, I must give you a BIG thanks because changing that LDA.b to #%00100100 and modifying a few colours gave me exactly what I am after! Thank you very much for your reply. The effect now looks identical in game as it does in lunar magic; light ripples, and a brighter white surface :)

This is some really great work Blind Devil! I especially like the falling leaf sprites and bumper sprites. I think both of those will get a lot of usage in hacks. I plan to use them both myself, so thank you :).

If I could suggest one minor addition for your Hypothermia UberASM; would it be possible to have mario's palette turn shades of blue when he stands still to indicate he is freezing? Perhaps using the blue palette of his overalls on his skin and shirt? I think it would add a nice effect.

That suggestion aside, your showcase is really top notch stuff!
Fantastic sprites as always RussianMan, and thank you for fulfilling a request I had made for the jumping fish! I am also a fan of that exploding football, and second the idea for a Puntin' Chuck that can kick this custom sprite.
I'm enjoying the falling leaf sprite in the hack I am creating, Blind Devil, but I am having problems with the Bumper Sprite. I can't seem to get it to follow a line guide no matter how much I try. I have placed it above, below, beside, and on the line, but either this happens or it falls off screen:

https://bin.smwcentral.net/u/32624/bumper.gif
https://bin.smwcentral.net/u/32624/bumper2.gif

Aside from modifying the tilemap, I am using your provided .asm and .cfg files in Pixi. I insert my sprite as bit 2, and I set the extension to 03. Other line guided sprites follow my line guides so I don't think they are the problem. If it matters I am also using the Line Guide Acts-Like Fix Patch because my lines are not on the vanilla Map16 page.

Any idea what might be causing this? Have I overlooked something?
WhiteYoshiEgg, that fix worked flawlessly! I'll be sure to save your post for any potential future line-guide related problems. Thank you very much :)
Requests: Upwards Launched Torpedo Ted
Type: Sprite
Description: Exactly like the original torpedo ted, except instead of the hand extending down and launching torpedo ted left or right, it extends upwards and launches the torpedo left or right. Using the extra bit (2, and 3) to define upwards or vanilla launcher would be kind of a neat bonus.

Extra: Launching torpedo ted vertically (up and down) would be a cool addition, but definitely not a required part of this request.
So I've successfully converted imamelia Eating Vine Disassembly using Pixi's included converter. It works great. I found the section of code that defines what tile to create as the sprite rises:

Code
LDA #!03	; block to generate:
STA $9C		; vine tile
JSL $00BEB0	; generate common Map16 tile routine


I have made a tiny modification to make it into a !define for easy editing:

Code
!BLOCK = $03	;$01 = none  $02 = tile25  $03 = Vine  $0D = brown block

LDA #!BLOCK	; defined block to generate:
STA $9C		; vine tile
JSL $00BEB0	; generate common Map16 tile routine


My question is, where do the #$01, #$02, #$03 etc values come from? Why do they generate the blocks they do and is there an easy way to figure out what the values are instead of trial and error? Also, when generating the brown block [#$0D] the vine creates only 1 block, instead of a row of them like I expected, is this a limitation and if so is there a work around?

Thank you for any help :)

Excellent, thank you :)

Originally posted by Telinc1
In this case, the sprite is writing a value to $7E009C and then calling $00BEB0, the tile generation routine. The "magic numbers" for $7E009C are documented here.

As for the brown block being generated only once, I'm not sure why that's happening. Are the blocks actually not there, or are they only visually not there?


The brown block only spawns once as a single tile, and is not a row visually or physically.

https://bin.smwcentral.net/u/32624/vine.gif

edit:
Originally posted by Alcaro
The vine stops whenever it encounters a solid block. The brown block is solid. I agree it shouldn't hit its own output, but the original only spawns non-solid tiles, so there was no reason to care.]


Strange it hits it's own output, but that makes sense not to code vanilla for what I'm attempting. I saw some code about encountering solid tiles. I'll play around in the .asm and see what I can change. Thank you

edit 2:

Success! I managed to prevent the sprite from interacting with itself by commenting out some of the code. It appears to function without error. For those interested, commenting out these first 3 lines worked:

Code
;JSL $019138	; interact with objects
;LDA $1588,x	; load sprite blocked status
;BNE SKIPSTUFF	; branch if the sprite is touching anything  
LDA $14D4,x	; sprite Y position (high byte)
BPL DONTERASESPRITE	; don't erase the sprite if it hasn't gone offscreen


https://bin.smwcentral.net/u/32624/vine2.gif
I've spent the better part of two hours trying to figure out how to change the palette row of the Map16 tiles drawn when the growing pipe sprite extends. The Map16 tiles use palette row 5, and I am trying to get it to use row 2. I have read both of these tutorials but one seems to be directed at sprite palettes and the second one I tried to use the YXPPCCCT part but nothing works. I've looked at the code for other sprites that draw a Map16 tile in hopes of borrowing code but have had no luck. Any help would be appreciated.

Here is the section of code I am pretty sure calls the Map16 tile routine to draw the pipe tiles beneath the sprite:

Code
TilesToGen1:
db $00,$14,$00,$02

TilesToGen2:
db $00,$15,$00,$02

...

GenerateTiles:		;

LDA !7FAB10,x		;
AND #!ExtraBit		;
BEQ NotUpsideDown2	;

TYA			;
INC			;
INC			;
AND #$03		;
TAY			;

NotUpsideDown2:		;

LDA TilesToGen1,y		;
STA $185E|!Base2		; first tile
LDA TilesToGen2,y		;
STA $18B6|!Base2		; second tile

LDA $185E|!Base2		;
STA $9C			;
LDA !E4,x		;
STA $9A			; set the position
LDA !14E0,x		;
STA $9B			; of the tile
LDA !D8,x		;
STA $98			; that will be generated
LDA !14D4,x		;
STA $99			;

JSL $00BEB0		; generate Map16 tile routine

LDA $18B6|!Base2		;
STA $9C			;
LDA !E4,x		;
CLC			;
ADC #$10		; generate the second tile 1 tile to the right
STA $9A			;
LDA !14E0,x		;
ADC #$00		;
STA $9B			;
LDA !D8,x		;
STA $98			;
LDA !14D4,x		;
STA $99			;

JSL $00BEB0		;

RTS			;
Once again, thank you for your help and knowledge Thomas. Simply changing the palette of 168/169 gave me my desired effect as I wasn't aware the pipe drew different tiles than standard pipes. This is enough for my needs.

Still, I wanted to see what I could achieve with ASM (I'm trying to learn so I don't have so many questions) so I attempted to utilize the code you provided.
Replacing the JSL $00BEB0 with your provided code hangs the game on a black screen on level entry unfortunately. Looking at the RAM Map it appears that 00:BEB0 is often used in conjunction with $9C, $185E and $18B6. I thought perhaps I'm having a conflict, but removing code referencing those addresses also didn't solve anything.

Looking at this tutorial the code you've given me should set (REP) the accumulator into 16-bit mode (needed to call the Map16 tile number directly?), load (LDA) my desired value to A, then reset (SEP) the accumulator back into 8-bit mode. I think I understand why this should work, but it doesn't seem to. Am I supposed to store the value elsewhere? When I set #$30 (Register XY) it doesn't hang, but I get this result:


I've attempted to remove all asm code calling for the original Map16 tiles to be drawn, and keep only this new code, but haven't had any successful results yet. I feel like I'm placing the draw routine in an incorrect spot (I'm placing it exactly where the JSL's were in the above code).

I did however manage to draw any tile I want under mario's feet on the same timer the pipe grows/shrinks #tb{XD} (useless but kinda funny).
There is also this sprite: Sprite Respawner

This is made by Sonikku and is what I use in my hack to respawn these very same Bowser Balls (among other things). Very useful.

Edit:
Also, another way you could achieve this effect (although it wouldn't be respawning the sprite) is to use Vertical Wrap Blocks. These are also useful and create a slightly more fluid effect than respawning the sprite once it goes off screen. Of course Mario would be affected as well if he were to fall in the pit.