Language…
20 users online:  Ahrion, Anas, anonimzwx, autisticsceptile1993, Batata Douce, drkrdnk,  Eden_, Hammerer, LadiesMan217, LuigiTron, magianegra21, masl, Maw, NewPointless, ppp9q,  Ringo, sinseiga, Sokobansolver, Sparx, The_Uber_Camper - Guests: 261 - Bots: 316
Users: 64,795 (2,376 active)
Latest user: mathew

Posts by Runic_Rain

Runic_Rain's Profile → Posts

Totally thought they already were as well!

We should throw a pâté to congratulate them :3
I vote this cake.
These are impressive! I like how they all have expressive distinct personality despite being done in only 5min a piece. Nice job! Glad this hit spotlight!
This is a super cool idea. I just have half-finished projects and scraps lying around though, so I thought I'd go the "important to me" route like a few others.
This pic sums it up I guess :3
Originally posted by ninj
Name: Pink triangle... fix?
Type: Patch
Description: A patch that makes so you can use the pink triangle on any (solid) block without using tile 1EB.


That's "not possible" with SMW as-is. Really it's not. The best way if you *were* actually to do it would be to have a hijack do a pre-check before block collision with feet collision shifted up 1px (basically always apply a slope-assist by default) and if the map16 you lookup isn't a triangle shift the position back to normal. But that's so much extra processing. Just stick a slope assist where it's needed. I know it's annoying, but that's really better than making smw pretend there's a slope-assist under everything. (Given that, nobody's probably going to touch this request unless you can point out a use-case other than convenience).

edit: If you want to use an alt-triangle block and can tolerate mario being 1px *actually* higher. The direction taken below would indeed work.
Originally posted by GrumpyWalrus
Name: Invisible Block with a Muncher Inside
Type: Patch
Description: Pretty simple, just an invisible block that, when triggered, spawns a standard muncher.


That's just blockreator code.
"Change block above current block into Muncher (12F). ActAs Block with nothing in it (129)"

Code
db $37

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
JMP Return : JMP Return			; WallFeet|Body

Main:
	REP #$20				; \
	LDA $98					; |
	PHA					; |
	LDA #$FFF0				; |
	CLC					; |
	ADC $98					; |
	STA $98					; |
	SEP #$20				; |
	PHX					; | Change the block at (x+0, y-16) to #$012F.
	REP #$10				; |
	LDX #$012F				; |
	%change_map16()				; | <-- Replaced this with GPS shared routine
	SEP #$10				; |
	PLX					; |
	REP #$20				; |
	PLA					; |
	STA $98					; |
	SEP #$20				; /
Return:
	RTL

ActAs 129

Blockreator is worth figuring out how to use. (And GPS's shared routines after that if you want to dip your toes into asm. Understand if you don't.)
Originally posted by Gamma V
(C)rossover Level Design Contest
Design a level that incorporates something from another media franchise, like Mario going through Green Hill Zone or fighting Decepticons.

Maybe instead:
(X)-over Level Design Contest
Gamma's got a cool idea, C is already taken, Xylitol is a little weird #smrpg{:D}, and X is commonly used for this anyway (as well as eXchange but that's already on E...)
So I have an odd one:

Does LM detect where certain information is stored, or is it hardcoded? Like if I wanted to move the level table could I do so? If it's hardcoded would it be possible to remap the banks at the very least from within LM?
🎵 We tried so hard. And got so far. But in the end. The extension didn't matter 🎵

Dropped out due to technical difficulties rather than hack-difficulties. Got over halfway done I think. We had something cool. So maybe we'll release at a C3 someday and let y'all know it started here. Awesome job to the finishers!
I don't know if this has been suggested before. But scaling in the 8x8 Editor? Obviously 100% increments would be best since it's pixel editing.

I'm using the 8x8 tile editor for touch-ups after I import from GIMP... and the window size is making my eyes bleed (downside of a larger resolution monitor).

Additionally, I don't know how feasible non-square 16x16 Map Editor is, but the ability to shrink it on the Y-axis (not full-resize option) so that when you go to 400% you can still access the full scrollbar. (I don't even think I'd want this change I just noticed that if my mouse didn't have a wheel, like on a laptop, it would be counter-productive to work at those larger sizes)
For what it's worth. For SNES most people use Shex and BSNES Plus to disassemble
Apparently "SNES Binary Utility" is useful for formating Shex data as well? Can't really speak for that though, or even what/where it is.
Although if you have or can get IDA Pro and there's 65c816 in it's supported languages then more power to you. That's a fairly amazing tool.
Originally posted by RollingRigatonis
Hey so I was messing with the smoke sprite data and came across an oddity of some sort, specifically in the code for the contact graphic effect. There is a JMP to $029838, which appears to be a duplicate of $0297B2. I removed the JMP and blanked out all of $029838 to see if it was important and it doesn't seem to have done anything. Out of curiosity, what exactly is this and is it safe to overwrite or remove this?


According to all.log:
Code
CODE_029838:					;```````````| Contact sprite in Reznor/Morton/Roy's rooms (use $0300 range instead of $0200).

That is, certain Mode7 Boss Rooms reshuffle how OAM is arranged. This allows things to work properly there. If you're not using Mode7 then this should be safe to overwrite. Just be aware you'll leave dangling JMPs that'll make your game crash in the Mode7 code (if you ever enter it).

As part of my baserom for my hack I started working on a player system. Oh my goodness, just looked it up and I've been working on this slowly for 2 years! I ripped apart almost all of Bank0/1 to unravel the Player from Blocks and Animation. Still a ways to go, but I got most of the hard stuff out of the way. It's got a bunch of little bugs in it at the moment (a swarm of mosquitos if you will).
But I figured it was time to stop saying "maybe next C3" and finally showoff an Alpha. However ugly it might be. So I'm proud to present: The Custom Player Patch!

The expectation is if you're using the patch you're going FULL Chocolate. Cutscenes, Vanilla Mode7, and other "basic vanilla" aren't available. That said you can add multiple characters really easily. And as a bonus you even get your own ActAs blocks!

Chaining ActAs is also possible. So if you want to add a "Fire Property" block you can make Fire+Crumble+Slopes or whatever combination you want! It's a little extra processing though so it's always faster if you can make a custom block that does *exactly* what you need instead of chaining them.

As for the Characters... well there's Powerups too! You can add your own by adding to the Powerups list, much like you would Characters. "But I don't know how to program!" you say. Worry not! There's no programming needed! You can build a Character or Powerup by just adding Abilities to the file:
Adding
Code
%Jump()
for example would let that Character jump! Or adding
Code
%RocketFly()
to a Powerup would let you fly like a comet!

At the moment there's a massive amount of half-tested "Abilities" that I removed for a more "stable" release.
This release will only have some simple Abilities (not even the full Mario set at the moment sadly...)
So it's a little lackluster. But there will be more to look forward to later!

Adding graphics or palettes to your Custom Players should also be simple for a non-coder.
There's plans to let you add Accessories (Tanuki tail, etc.) at a future date.
You can have any format for your inserted graphics as long as you provide the tables for where all the tiles are.

Custom animations are a little trickier. At the moment there's a full animation system in place. But I've really only been using a walk and death animation for testing. And trying to throw a basic character animation together in a few hours for C3 showed me it's not *that* simple. Although the animation system helps a ton.

All-in-all it's certainly not ready to use in a *serious* project unless you're starting it now and planning for it to take at least another 6 months, when I'll hopefully have most of it ironed out. Although you're welcome to attempt.
But I figured it was time to release something for people to toy with/see.
Hope it's interesting in it's current state!

(Oh yeah, not finished with duplicating all the Vanilla ActAs blocks to full satisfaction atm... But you can do curved slopes right now if you want ;3)

Download
(Note: the GPS+ may be flagged as a virus. Nothing I can do about that)

Aaaaaaaaaaaaaaah!!!!! Like 5 things broke since Monday including hurt(fixed)/death(fixed)/fireballs/wallrun/sideways pipes/etc.
I'm honestly too sick to fix them at any decent pace at the moment or do more testing. And I promised myself I'd release C3 so here it is. We'll see if I can clean this up more today (-___- ;)


Update 1/9/22: Ummm, so yeah... Turns out out I disabled/broke the patch completely in the previously uploaded version so if you're one of the 3 people that decided to tinker with it. There's a new upload (all I changed was generate.bat though, so if you have a setup already just replace that with the new one)
Originally posted by 1UPdudes
I guess its all about giving the player the tools to truly create a different type of game within the SMW Engine say for example a Sidescrolling Shooter of sorts?


Thank you! #smrpg{<3} Actually probably the simplest use is to make your own "Lx5 Custom Powerups" without knowing any coding. Although you could certainly do a shooter!
Secretly there's also a GenericGFX routine you can use for sprites and Mario tucked inside among other things as well :3

Originally posted by Veck
It's still a little early to tell, but even with incompatibilities in mind I'm really excited to see what comes of this in future versions. A lot of potential in the idea of a completely new player system and all these features that you've got in mind for it will be amazing for designers to use once they're more fleshed out.


Very early! I honestly wanted to do a full "Hey you can use this for a serious project right now" release. But major bugs stopped that last C3 and I wanted to finally show it off. Since it's been so long working in secret :3
Hopefully next C3! (certainly isn't happening tomorrow X3)
Entering to annihilate (my team or yours X3)
Not sure if it's worth posting in the Advanced Documentation or not. And it's less digestable if I format it to merge with the disassembly. But thought I'd save this somewhere *searchable* rather than a filebin.

I understand how it all works now and hopefully commented it fully. Although I have no idea about the significance of the specific value configuration in the FadeTable. There's likely some math equation behind it.
It seems you could tweak the table though for different fade gradients. Also it seems likely that you could FadeToColor and put any color you wanted in $02 and the target color in A. Although I'd have to test that, and haven't time atm.

These are RTL versions of SMW's JSR routines, but other than that they're exactly the same. SMW ping pongs back and forth between the two palette tables to run this. Keeping one as a fade buffer. If you need additional usage hints you can lookup how SMW uses JSR CODE_00AFC0 but usage is fully explained here.
Code
!fade_timer = $1495		; $20 steps (!fade_timer=$40) in a single fade cycle
; Fades may finish earlier or later. There are 32 steps and 32 intensities.
; But some steps may be skipped to do a relative fade.
; So you'll likely need to do a second cycle for large transitions in intensity.

GetFadeInfo:	; CODE_00AFA3 (run once per frame)
	LDA !fade_timer : TAY : INC #2 : STA !fade_timer	; dw INC
	REP #$30
	TYA : LSR #4 : AND #$0002 : STA $0C
	TYA : AND #$001E : TAY					; get as valid index
	; Note: 32 steps in fade but they're repeated twice a cycle, so $0E uses 16 entries
	LDA RGBFrameLimit,y : STA $0E
	RTL

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; FadeColor		Fade a single color over 32 steps
; 16-bit A, X-bit X/Y
;
; Inputs:
; A		original SNES RGB value	(Fade 00%, "target")
; $02	current SNES RGB value	(Fade XX%, "blackened")
; $0C	00 or 02, depending on which half of the timer you're in.
; $0E	Current Frame divided by 2
;
; Returns:
; $04	new SNES RGB value (store back into where $02 came from)
; $06	Base R component, divided by 2 (0rrr rr00)
; $08	Base G component, divided by 2 (0ggg gg00)
; $0A	Base B component, divided by 2 (0bbb bb00)
;
; Note: You need to keep the original color around in a buffer!
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
FadeColor:	; CODE_00AFC0
	; get raw components of color in 6/8/A
	STA $0A				; save temp
	AND #$001F : ASL #2 : STA $06			; R
	LDA $0A : AND #$03E0 : LSR #3 : STA $08	; G
	LDA $0B : AND #$007C : STA $0A			; B
	STZ $04				; get new color
	LDY #$0004
.loop:	; for each component
	PHY	; can we relative color fade this frame?
	LDA $0006,y : ORA $0C : TAY : LDA FadeTable,y : AND $0E		; See FadeTable
	PLY
	BEQ .no_update		; fade allowed?
	LDA RGB_DEC,y
	BIT $1493 : BPL .update	; fade to black or color? (checking $1494)
	LDA RGB_INC,y
.update: .no_update:
	CLC : ADC $02 : AND RGB_Mask,y : TSB $04	; pack rgb (clamp update to component)
	DEY #2
	BPL .loop
	RTL

RGB:	; RGB component tables (in R,G,B order)
.Mask:	;$00AE65	SNES RGB component locations (-bbb bbgg gggr rrrr)
	dw $001F,$03E0,$7C00
.DEC:	;$00AE6B	Fade to black table. Decreases a component by 1.
	dw $FFFF,$FFE0,$FC00
.INC:	;$00AE71	Fade to color table. Increases a component by 1.
	dw $0001,$0020,$0400

RGBFrameLimit:	;$00AEF7	Table for the maximum values of a component to allow fading each frame. (AND Table)
	dw $8000,$4000,$2000,$1000,$0800,$0400,$0200,$0100
	dw $0080,$0040,$0020,$0010,$0008,$0004,$0002,$0001

FadeTable:	;$00AE77	Table of how much each component is allowed to fade relative to its brightness.
; each row is intensity of component doing lookup (32 intensities)
; left column is first half of timer	+($0C = 0)
; right column is second half of timer	+($0C = 2)
; Essentially we'll slide across all columns over 32 frames. Left to right. (AND $0E)
; If the bit is set █, then we're allowed to modify that intensity that frame
	dw $0000,$0000	;░░░░░░░░░░░░░░░░,░░░░░░░░░░░░░░░░
	dw $0001,$0000	;░░░░░░░░░░░░░░░█,░░░░░░░░░░░░░░░░
	dw $8000,$8000	;█░░░░░░░░░░░░░░░,█░░░░░░░░░░░░░░░
	dw $8020,$0400	;█░░░░░░░░░█░░░░░,░░░░░█░░░░░░░░░░
	dw $8080,$8080	;█░░░░░░░█░░░░░░░,█░░░░░░░█░░░░░░░
	dw $8208,$1040	;█░░░░░█░░░░░█░░░,░░░█░░░░░█░░░░░░
	dw $8420,$8420	;█░░░░█░░░░█░░░░░,█░░░░█░░░░█░░░░░
	dw $8844,$2210	;█░░░█░░░░█░░░█░░,░░█░░░█░░░░█░░░░
	dw $8888,$8888	;█░░░█░░░█░░░█░░░,█░░░█░░░█░░░█░░░
	dw $9122,$4488	;█░░█░░░█░░█░░░█░,░█░░░█░░█░░░█░░░
	dw $9248,$9248	;█░░█░░█░░█░░█░░░,█░░█░░█░░█░░█░░░
	dw $A492,$4924	;█░█░░█░░█░░█░░█░,░█░░█░░█░░█░░█░░
	dw $A4A4,$A4A4	;█░█░░█░░█░█░░█░░,█░█░░█░░█░█░░█░░
	dw $A949,$5294	;█░█░█░░█░█░░█░░█,░█░█░░█░█░░█░█░░
	dw $AAAA,$5294	;█░█░█░█░█░█░█░█░,░█░█░░█░█░░█░█░░
	dw $AAAA,$5554	;█░█░█░█░█░█░█░█░,░█░█░█░█░█░█░█░░
	dw $AAAA,$AAAA	;█░█░█░█░█░█░█░█░,█░█░█░█░█░█░█░█░
	dw $D5AA,$AAAA	;██░█░█░██░█░█░█░,█░█░█░█░█░█░█░█░
	dw $D5AA,$D5AA	;██░█░█░██░█░█░█░,██░█░█░██░█░█░█░
	dw $D6B5,$AD6A	;██░█░██░█░██░█░█,█░█░██░█░██░█░█░
	dw $DADA,$DADA	;██░██░█░██░██░█░,██░██░█░██░██░█░
	dw $DB6D,$B6DA	;██░██░██░██░██░█,█░██░██░██░██░█░
	dw $EDB6,$EDB6	;███░██░██░██░██░,███░██░██░██░██░
	dw $EEDD,$BB76	;███░███░██░███░█,█░███░██░███░██░
	dw $EEEE,$EEEE	;███░███░███░███░,███░███░███░███░
	dw $F7BB,$DDEE	;████░████░███░██,██░███░████░███░
	dw $FBDE,$FBDE	;█████░████░████░,█████░████░████░
	dw $FDF7,$EFBE	;██████░█████░███,███░█████░█████░
	dw $FEFE,$FEFE	;███████░███████░,███████░███████░
	dw $FFDF,$FBFE	;██████████░█████,█████░█████████░
	dw $FFFE,$FFFE	;███████████████░,███████████████░
	dw $FFFF,$FFFE	;████████████████,███████████████░
As a Seattleite I am a true fan of coffee. There's a large variety of things I like:
- Doppios on good blends (with a side of seltzer like you should :3)
- French Press of a Dark Roast
- Shot in the Dark
- Super Sweet Drinks (caramel macchiatos, etc.)

But my favorite? (and just about impossible to find around here)

White Coffee White Mocha

(White coffee has more caffeine and tastes like if you made tea out of peanuts. Mild caffeinated Reeses flavor in that drink basically)
Vanilla SMW (other than Tubular) was never hard enough. I went back to get blue Yoshi's and feathers sure. But I did it because "hey I want to float through a level". Or "can I hold right" etc. To me part of the joy is that being non-kaizo you can kinda do your own thing as a player. That's one of the joys of standard level design. Someone could show up or use anything from the bag of tricks they have. It's one of the things that makes metroidvanias so good. Jank filters offset that. Like, NSMB1/2 for example have hidden areas powerup locked. Sure, taking a gold fire flower trivializes the current level. But it's also required to unlock the "hard route" that's the sort of design that you can't do well within a single level. But as a part of the larger whole that is the game you can make into a very rewarding experience.