Language…
18 users online:  Anorakun, AntonioDosGames, dezoito18, Diary of a Madman, Doc-red,  Doctor No,  Fernap, Green Jerry, jdero, LightAligns, Maw, Phyll, Rykon-V73, Somebody for sure, Steven, VitorSMHack, ZachJamesGames, Zavok - Guests: 119 - Bots: 178
Users: 58,131 (2,459 active)
Latest user: TuNieViel

Posts by Runic_Rain

Runic_Rain's Profile → Posts

Originally posted by GatoSlashFish
Request: Fireball only with X button
Type: Code
Tool: ASAR
Desc.: I'm looking for a patch that disables shooting fireballs with the Y button. Hopefully this should be simple. Any help is much appreciated.


Good call. Patch this:
Code
org $00D08D
	db $18  ;       revert: $16
Originally posted by Arobam
So im using this sprite here the propeller block:

https://www.smwcentral.net/?p=section&a=details&id=9599


The problem is if you do an up throw while switching directions, Mario will do a jump. If he does that he can regrab the block in air which i dont think is intended for this block.


I cant figure out what part in the asm causes that.


Can't really say I like the code but I also don't know a whole lot of sprite coding yet...
That said, if I had to guess it would be

Can't see why they would've coded it the way they did if that wasn't the intention (up throw reset) although the side effect is probably not intentional. As far as I can tell by reading the code up throw resets it to normal state, turning makes the clipping cover Mario. The %SolidSprite() is then called, which presumably gives you a boost? Didn't test it, but if you can stand on the propellor block then that should be what causes it. Otherwise I have no idea. As for fixing (assuming that's the problem) quite a lot of recoding or a couple frames of timer added to the state switch from carry to normal might fix it.

(Edit) Something like this maybe? : instead of reseting to #$08 pretend we kicked it (#$0A), set timer in sprite table. Then make kicked state not call the %SolidSprite(), and count down the timer, if timer is 0 change to #$08.
Originally posted by Mandagary
I'm looking for something like this patch, but without saving of any sort. Technically, whenever you open up the ROM in your emulator, it just plays without saving anything. Any help on this?


Not sure, but theoretically couldn't you "hijack" the save routine and just put an RTL right there? Always a fresh game because nothing is ever saved?

Code
org $$009BC9
	db $6B


Apologies if any of my help on this "Play On Start" endeavor has been broken by the way.

EDIT: Make sure to apply that after the one-file one-player patch, since it's a conflicting hijack (which is in-fact the point).
OR... ya know, just edit the code in that patch to be db $6B.
Took a little tinkering for me to figure it out, and I'm the one who suggested it! :3
Turns out you don't need to keep track of the state if you don't care about riding it while it's bouncing off the ground. Feel free to add a state tracking but this should get you going in the right direction.

(I left some header and footer code for each edit, so you can figure out where the edits go)
(restricted)
@Magmatic That's a slightly more advanced bit of playing with LM. Which I don't remember all the ins and outs of. But to get you started: In LM, click #lm{MARIO69} in the first drop box your gonna want to scroll down to 1E or 1F. If you have the box active but not open you can watch the desctiption below the box as you cycle down to see what each setting does. Your looking for the translucent levels in this case. Then in #lm{props} you're going to want to enable Layer 3, Tileset Specific in this case, it will tell you what the current tileset has for graphics. Then you enable Force above layers (first box), check CGADSUB for transparency. Depending on what you're doing with your graphics you may or may not need to Bypass for Layer 3, and you may or may not twiddle the Tileset which changes your Tileset Specific Layer 3 you'll change it in one of these: #lm{gfxby}#lm{sgfxby}#lm{l3gfxby}. Note that there's certain things that'll have conflicts when you play with level settings (the first thing you changed). A particularly well known example is that standard text boxes conflict with Tides (and I believe a foreground Layer 3 in general?) there is info hiding around in the forum threads somewhere on these things though if you dig through them.
You can use an exanimated pallet, straight from LM. Although the methods you thought of would also work of course. Not positive since I don't have LM on my phone... But if you go into the MAP16 editor and change the pallet to the Yoshi Coin one I'm pretty sure there's a block that'll have a bit of flash to it, if not a couple. That would probably be the easiest method if so.
It might just be me, but coding a boss seems a lot harder than what you want to do with the "Glitch Reset". But I could be wrong. If you're confident enough in coding and just wanted resources/ideas though then there seems to be some Soft Reset code here. You'd just need a flag in the save file (BW-RAM or SRAM) that got toggled by the Boss at that point. And if not, then that's hopefully a helpful resource link for whoever helps :d
Haven't done any cutscenes yet myself (if I'm understanding your question correctly). Seems like all the resources related to making cutscenes are old or only work for specific cutscenes like the title screen. There's LM's built-in tools for that, as well as a tool in the tool section if your not using SA-1 or PIXI, and then there's this, although I'm not sure about any restrictions on that or if it even still works. Someone else might have a better direction to point you hopefully...

Edit: at the very least the old links to tutorials (inside that link) have better/newer counterparts you should read in the main Tutorials section.
TL;DR: AFAIK. No, probably not easy.

I probably shouldn't be answering this since it's been a hot minute since I've been actively coding...
You'd need to play with RAM and:
A) set it the proper state
B) do different code in main loop depending on state
C) it has "Hurt"-type interaction? I'm going to take a wild guess that that made picking it up difficult to code since it would collide with Mario and hurt you while holding it. So you'd need Custom Player-Sprite Interaction. Which I have no idea how hard that bit actually is, but I assume it's not perfectly trivial or they probably would've made it possible in that sprite.

A & B are more on the "easy" side if you know a little ASM (assuming I'm remembering A & B steps right)

Again, could be completely off-base here, been a while, but I think that's right.

EDIT: Maybe not custom interaction, pretty sure basic goombuddy has this kinda interaction and carryable might turn off hurt? But at any rate carryable, big/"bosses", and line-guided sprites have always appeared to me to be the more difficult of the ASM-things. Beyond game-changing patches.
org $008069, I think. Barebones "How to find an org, and hijack" below.

Since it looks like you're fulfilling you're own Timer request, here's how we'd try finding the org ######
First you need to decide where you want to to run your hijack "conceptually" (I'm thinking whatever code updates the true frame counter at $13 is a good bet).
Then you search through SMWDisc.txt (all.log), the disassembly, to find where that value gets updated. Then you decide which of those locations you're going to use (sometimes the choice matters). Then you insert the hijack, without causing side-effects (this is usually the tricky part).

I looked through and found this guy:
Code
$008070:        E6 13         INC $13                   ; Increment frame number


But a JSL Hijack is 5 bytes so you need to squeeze and re-arrange to fit it in:

Code
$008061:        20 50 92      JSR $9250                 ;
$008064:        A9 03         LDA #$03                  ;\ Set OAM name base to #$03, clear the name and allow 8x8 and 16x16 sprites
$008066:        8D 01 21      STA $2101                 ;/
$008069:        E6 10         INC $10                   ; Bypass the loop the first time
$00806B:        A5 10         LDA $10                   ;\ Loop until $10 isn't 00 (through interrupt?)
$00806D:        F0 FC         BEQ $FC [$806B]           ;/
$00806F:        58            CLI                       ; Enable IRQ 
$008070:        E6 13         INC $13                   ; Increment frame number
$008072:        20 22 93      JSR $9322                 ; 


You likely can't move much, and don't want to add too much processing time where you do hijack. Normally you fold the hijacked code into your hijack if it doesn't fit (sometimes it can fit if you're just straight-up replacing old code). Relative and local stuff (JSR, BEQ, etc) are harder to move. Also you might need to pad with NOP so that you return on a full instruction and not halfway through one.

here we pull 5 bytes minimum worth of instructions out of the original code (3 instructions of 2 bytes each) and fill remainder with NOPs (You could do NOP #2 if you needed 2, btw). Then we shove the code inside the hijack.
Code
org $008069
	autoclean JSL Timer
	NOP

.....

Timer:
	INC $10
.loop:
	LDA $10
	BEQ .loop
; Rest of Timer:
; Maybe save some stuff here

To prevent side-effects you may need to save the registers or anything else you touch. You may also have timing side-effects, especially if you're code is longer or does a lot, in which case you probably need to find a different hijack point or work faster.

Hopefully that's a right hijack point. If not then maybe inside JSR $9322 is? Alternatively you could look to see where some other similar code does a hijack. (UberASM for example must have GameMode Hijacks, they're probably better/safer hijack points as well). Also, it can sometimes be useful to look at the Hijack Map
Originally posted by WIKIDNEZ
Name: Earthquake Message Blocks

Type: Block

Description: A pair of blocks which work in conjunction with each other to create a message/earthquake effect.

Block 1: When hit by Mario from below, acts like a message box, displaying the first message of the current level
and then makes the screen shake continuously/for as long as possible after the message has been displayed, simulating an earthquake.

Block 2:
When the screen is not shaking, this block acts like a normal concrete block which Mario cannot pass through but when the screen is shaking, it shatters when touched by the player, similar to https://www.smwcentral.net/?p=section&a=details&id=4011

I tried my best to create these using Blockreator but I couldn't seem to find the right commands. Any help towards this would be greatly appreciated. Thank you


Both are ActAs 130

#1:
Code
db $42

JMP Main : JMP Return : JMP Return	; MarioBelow|Above|Side
JMP Return : JMP Return				; SpriteV|H
JMP Return : JMP Return				; MarioCape|Fire
JMP Return : JMP Return : JMP Return	; Corner|Body|Head

print "Earthquake"

Main:
	LDA $1887|!addr
	CMP #$00
	BNE Return			; From Main: to here just removes double-tap
	LDA #$01
	STA $7426
	LDA #$FF
	STA $1887|!addr		;|!Base7E
Return:
	RTL

Note: Can't hit this again until shaking stops (removes double-tap which shows message twice)
(this is as long as possible using a block only and no patches or UberASM)

#2:
Code
db $37

JMP Main : JMP Main : JMP Main	; MarioBelow|Above|Side
JMP Return : JMP Return				; SpriteV|H
JMP Return : JMP Return				; MarioCape|Fire
JMP Main : JMP Main : JMP Main	; Corner|Body|Head
JMP Main : JMP Main				; WallFeet|Body

print "Breaks on Earthquake"

Main:
	LDA $1887|!addr
	CMP #$00
	BEQ Return
	%shatter_block()
Return:
	RTL


Tested it on Clean and SA-1 but it breaks on my test ROM so there's a common patch out there that breaks it fyi.
Nice job! Was trying to stay away from an UberASM suggestion because it sounded like you wanted a stand-alone patch. But that's certainly the route I would've taken, UberASM is veeeery friendly for "simple" patches. Sorry about the NMI suggestion. Definitely knew it wasn't the best choice but didn't know anything else that ran every frame except whatever UberASM hijacks (I'm guessing status bar code is one of them). Thanks for swooping in MFG!
Meant to post a comment after your last post about how I thought it was interesting and kinda cool you were doing non-SMW. Honestly, due to that, I never would've even have seen it. If not for me creeping through other people's post history. So that's probably why there's little comment. Glad I put this thread on my watch-list at the very least. Looking forward to seeing what you ended up with!

Edit: I died in 1-2 a lot of places...and spawned in the ground for an eternal softlock... Never played the original but this has been enjoyable level design so far. I appreciated that first jump. There's a few tight jumps in 1-3 which feel like a crazy difficulty spike given the relative ease of the rest of the first few levels (spiky area with 2 donuts and a crab). Unfortunately I've had to reset about every other death so I probably won't be investing too much more time into this. It's kinda frustrating when your x5 lives is pretty much x1.... maybe I'll savestate it...

Edit2:

Was that Nessie at the end?!?! :P
I'd have to say I wouldn't play it without savetates.

Too many random softlocks and the boss at the end is unfair.
It actually took me like 20 attempts at 25% speed to beat it (and I'm fairly good at bullet hell). For bullet hell you have to have one thing you can rely on. It doesn't even matter what it is (you being faster, a certain bullet pattern, being able to destroy projectiles, etc.). Unfortunately the collision on those bullets means you can't always destroy them in under 5 hits. They also either change direction towards Mario or continue on a superball-like path, but you can't count on either to happen. And they can sometimes get split in the middle and do both and you're screwed, there's literally nothing you can do since they move at the same speed as you (but teleport to where they would be next when they split, so move faster when you destroy them).

On the plus side I just watched a playthrough of SML to give a fair comparison... and you're level design is a looooot less claustrophobic than the original's. I disliked the headbonk jumps but it seems the original was a lot more cluttered so I'll take those few headbonkers.

There's seems to be a lot more stars as well. Usually sneakily hidden or in spots that make you question if it's worth going for it. Not sure if that's a pro or a con on the stars, but it's interesting at the very least.

Probably the most unfair thing in the game though isn't the boss, that at least can be chalked up to difficulty... The worst was the blind-invisible-jump-inside-a-wall-with-a-turtle. You essentially need a superball to even begin to detect where the platforms are. And even knowing where they are it's a running headbonk jump.

The custom enemies are pretty cool.

The levels are fun to play, they're more difficult the slower you move because of how it effects your jump height and distance. But if you're moving at a high speed it's easier. Almost plays like Sonic in the aspect of encouraging you to move quickly. (That said I did get kaizo'd by invisible 1UP blocks at high speed... kinda a sour taste since they're probably there to help and not hurt me :P)
Yeah the checkpoints in general was what I meant by softlock. There's a particularly funny one that spawns you over a pit which drains your lives to 0 instead of softlocking. 1-3 spike area wasn't bad it was just a weird difficulty spike. More of a pacing issue than that specific section. Although dropping it 1 tile lower may fix the bonking issues and put it more inline with the rest of the pacing.
Seems you know where the issues with Tatanga are. Honestly even fixing one of the "bullet hell points" I mentioned is enough. You only need 1 crutch. Then again it is a massive difficulty spike at the end of the game. Maybe consider adding a 1UP after the final checkpoint (you made it here, now just get good enough to beat it). As long as it's fair, honestly the difficulty curve can be as absurd as you want as long as the time to get back to that point to grind isn't horrendous (retry patches being abused for this in SMW).

For the wall part, honestly I have a similar mechanic in something I'm working on. As it's nostalgic for you and it is your hack I'd maybe leave it in and remove the ceiling right before the turtle's platform ends. That way you won't headbonk. Nothing you can do I assume about guaranteeing a superball at that point for scouting (what I'm doing w/fireballs for my mechanic), but you can maybe add an enemy to each platform instead (don't remember about the far-side but the middle platform had none) platforms you can completely jump over without a headbonk don't need to be marked (for the player they're just bottomless pit that will luckily save them from death when they screw up their jump some of the time, which is fair enough). TL;DR removing the headbonk in that area honestly might be enough if you have the far-side enemy marked.

On Nessie: The sprite Mario rides in the credits looks liked a garbled Shoe/Nessie/Idk :3
A side-note: Your level design has some repetitious patterns in it, you could definitely chalk this up to theme inside a world but across an entire game it becomes sort of a defining quality (for good or bad). Not saying anything needs to change there, just something to be aware of.

Also, something of note maybe, a weird mechanic I noticed that I didn't really see a use for more than once:
You can do a max height jump without a running start if you crouch while big.
I see you found that file too =3=
We should start the Cult of The P-Switch Secret! (Which we're clearly not members of XD)
Originally posted by Knight of Time
Been a while since I made a request here, but this is one I just cannot get off my mind.

Name: Line Guided Rotating Platform
Type: Sprite
Description: A line guided version of EternityLarva's rotating platform sprite, that stops rotating when the center of the platform touches a line guide end (horizontal or vertical); I'm sure I speak for many people here who were disappointed to see that the rotating platform sprite didn't turn out to be line guided, hence why I brought the request here in the first place.
References: The original sprite here, and at around the 0:45 mark of this video.


That sprite doesn't happen to work with this does it?
Originally posted by Runic_Rain
"Isn't that just Mario falling off the sprite and then the sprite swooping back under him again? That's not jank that's SMW Physics™"

As for "fixing" that You could check "Y Next Frame" and see if it's lower. And if it was then "not fall"
But that would also mean you could run on air off the sprite for 1 frame.


Code
CheckStutter:
	LDA $96|!dp			; Next frame
	SEC
	SBC $D3|!dp			; If Y Coord Changed
	BMI .return			; Skip if not falling.	
	LDA #$01
	STA $1471|!addr			;Allow jump
	LDA #%00000100			;0000UDLR
	STA $77|!dp			;Blocked below
	STZ $72|!dp			;Not falling
	LDA #$00
	STA $13DC|!addr			;Not falling fractional bits
.return:
	RTS


Not sure how much of that is necessary or if I did the SA-1 right. But just calling that after the rest of the physics should fix the stutter I think?
Originally posted by EnzoLipe1
My Request: Super Mario Maker 2 Red Yoshi
Description: A Red Yoshi that behaves like SMM2's one, it can't swallow things.
References:https://youtu.be/GLFS77xS-2M?t=173
Graphics: SMW's Vannila Yoshi

50% sure you can use this and change the button to the "Spit" button with a red shell in Yoshi's mouth. It's in moderation and I didn't test though so grain of salt/warning.

edit: if that did work then that's anywhere that runs for any yoshi color actually, you can fix that by adding:
Code
LDA $0DBA	; Yoshi color.
AND #$08	; red only
BEQ .ret

right underneath "main:"