Language…
15 users online:  Anorakun, Fiblizo, GEMINIANA, gui, Gutawer, Hayashi Neru, Heitor Porfirio, jhonz22, JimmyBuffet, MVXgameS_, Roo, Rykon-V73, Serena, TheBourgyman, Zavok - Guests: 65 - Bots: 124
Users: 58,840 (2,257 active)
Latest user: lamarvandusen

Posts by Runic_Rain

Runic_Rain's Profile → Posts

Suspicious =3=

Seems to share the image file with the username badges... Turns them publicly on/off maybe? *waits for donation availability to test and stops poking at website*
(yes, it's been tickling my curiosity rather hard :P)
Originally posted by Deeke
Patch: Water Splashing SFX
Entering or leaving a body of water creates a configurable sound effect.
Optionally, swimming along the surface of the water can create a different sound effect (emulating the sound design from Yoshi's Island


I would assume you could use Extended Sprite SFX? at least for the first part. Unless you're aiming for only applying it to Mario?

Edit: Should've checked that patch, sorry. Poking at it but not claiming it. Since this is the first time I've had to dig into all.log
Originally posted by Deeke
Patch: Water Splashing SFX
Entering or leaving a body of water creates a configurable sound effect.
Optionally, swimming along the surface of the water can create a different sound effect (emulating the sound design from Yoshi's Island



Edit: For usage, insert into Extended Sprite SFX patch at the "freecode" location or
Originally posted by PUN
Request: Jukebox block
Type: Block/patch
short description: a block that opens a text box that let you choose what music you wnt in the level
long description: I wish that someone can make a block that works just like a text box. you punch it and the time froze then a black window appear. in it a select screen that you choose what you want to hear in the level. Mostly used in a music room level to hear all the game ost. if not possible just a block that scrolls the music -1. (if the first music is selected it goes to the second and continues to the end of the list. but its last ressource.) if possible not too many things to edit manually like inserting things by uberasm.

I would like to provide a gfx but i don't know witch one is the good one

a big thanks to anyone that could make this request true. you will be thanks and add to the end credits


I'm right there with you! I personally am going to make this have a numerical display above it in the end (probably not a dialogue due to Layer interactions although I'm not sure what I want to do yet) and will probably post it to the blocks section in the future, especially since this has been requested a few times before I think. However, I have about 30 other things that are higher priority right now, so if you're fine with this "Debug BGM Jukebox" for the moment.... otherwise say so, I'm interested in your request too! :3
Do note the lag from loading songs is completely unavoidable, which is probably why must people (from what I gather) end up scrapping the concept or limiting it to globally loaded or unused OST.
(I'd toss you a matching Debug SFX Jukebox but that's beyond buggy)



Also, code is ugly, sorry about that. Did a quick convert for non-SA1 which I still know nothing about >__>. If you don't know what freeram is, then try replacing $000F34 with $000060 it should work unless you apply a patch/block that conflicts with it. If you don't do so be aware that if you have a score you need to press UP/DOWN once minimum to reset your score into the song range. X/Y scrolls fast, A/B plays song.

Edit: minor Jukebox update, never pressed down before so never realized it was broken >__>
Context: Know next to nothing about SPC. Or which/whatever does the music thingies! X3
Was the only idea I had just now to increase decrease loading time of music besides global music.

Question: Is it possible to cache a projected "next song" into RAM somewhere and DMA/"redirect via pointer (multibuffer)" to quickly load it when asked? Or is that RAM completely isolated/other technical difficulty (no actual speed gains, etc.)? If so, anyone have any pointers? Docs/wikis/RAM addresses/co-dev recommendations/gimme free code/pseudo code/write my will and testament?

Use Case: Eventual fleshing out of the Jukebox Block I posted in ASM Request. Waaaay down the road, but figured it wouldn't hurt to ask for help! Especially since learning an entire topic just for a (I would assume) few lines of code is... daunting (TT^TT)

Fringe Idea: Make 2 global songs that are just a "calloc()" of the largest song essentially and load next song into that ram via DMA then load that global song. This would be the multibuffer approach pseudo-concept.

Edit: Was bitten by the urge to poke and I'm now a little scared to touch this project. I was wrong. Very wrong. I see that now. Not a patch for the faint of heart. Seems I'd need to apply a patch maybe even hijack NMI to ignore SPC I/O when flagged and probably learn SPC-asm and SA1-asm so I can upload a byte at a time in a remotely fast manner. That about the gist of it? Or did I careen off course? *shivers*
Originally posted by Haithius
Originally posted by Darolac
Probably a conflict between two patches. Try to reinsert your patches one by one and see if you can reproduce the issue.


I just re-inserted everything into a cleam rom starting with the pallette patch and it didnt show any issues, same code, everything, any ideas?


For your curiosity: Afaik, most likely 2 scenarios are Patch B was built to resolve patch conflicts and Patch A was not built that way. So basically applying them in one order breaks it and another doesn't (I think this is rare case though). Either that or there was a step you didn't follow in a readme the first time that you did this time. *shrugs* or something else, working is better than broken though!
Originally posted by Haithius
Hey sorry if this is to much but I am looking for a way to have the SMB3 bowser in my rom hack without having to do any ASM coding myself (im bad at it)

Thanks!


I don't think you can get fully away from ASM since there isn't a sprite up for it. If you can read asm though you might be able to get a working setup with some variation of this block for the floor plus some variation of a boss sprite for the bowser possibly this one. (Not going to defend those recommendations, I haven't looked at the code, but nothing else seems remotely related to what you want. Unless I missed it somewhere.)

Seems like you're moving pretty fast on your hack! If you poke at the linked resources a little bit and use the SWRAM Map I'd imagine it wouldn't be too insurmountable. If it's outside your expertise, seems like around here getting help with "custom" bosses is pretty rare (with exceptions like the boss you're looking for since it's a well-known Mario standard!!!). Given what it is, maybe you can try requesting it. First post has some good heads-up guideline info. Some Resources to add to your request might be what I linked. The more the better though! Maybe even a youtube link to the boss fight?

EDIT: Seems there's a request up for the SMB3 Bowser already actually! Dynamic sprite maybe? and a hopeful year out? You can always just set space aside for it and hope it comes out next C3 I guess? :D
Originally posted by Haithius
Idk if this thread is still voable but im having the same issue, i have custom powerups, quicksand block(just the normal one), SA-1 patch, and when it comes to aprites i have boomerang bros, pendulum rotating platforms, classic goombas, and big goombas, ive tried times to reinsert the block in different places in map16 and even tried to change the act like section to things other than 25 and behold it still never works, i kinda just keep bouncing ontop insyead of sinking, any help would be appreciated, thanks!


I'm going to *guess* there's likely a comment in the ASM or readme that tells you the "Y-Speed" shouldn't be higher than a certain value. ($00-7F are usable and higher than that is pushing you up)

reference

Since that block shouldn't depend on other blocks or sprite: acts-like left as-specfied on the block page/in the file, and map16 in any open slot should be fine (if you want to be *extra safe* I think I read somewhere skipping the first free page was advised in the past, not sure if that still holds true today.)

Edit: Also that's a fairly decent necro for a supposedly solved problem? (OP wasn't last post)... >__>
Not trying to mod-ish or saucy...I mean they asked :x

But, honestly. I mean, it kinda makes sense there. Future search will find more info. (Or not, depends on whether someone showed up and how helpful they were I guess). So is there a policy? Is it personal/mod judgement? Or just-don't-care as long as post isn't stupid/obnoxious? On a related note: should those kind of Q's generally go on the resource page or the forums preferentially? Or no preference?

Cheers!
After designing levels in GIMP, 5+ months up until MM2 launch, this hurts my soul that you've just now released this \(TT^TT)/
It's beautiful...
Not sure if this is tool-related (ASAR) or asm-related...
Anywho, I'm making a patch and currently it's setup like so:
Code
org $someaddress
JMP routine

I'd like to replace that with:
Code
freecode
JMP routine

or similar. Only problem is, I need to access that location from outside the patch (shared-subroutine essentially, and I could do it that way if needed). Is there a way to get the generated address (I assume I can lock it in place with the static keyword? Maybe a define file?) Not really sure the best way to set this up. Any help with this? Or is this not possible?

Edit: This has been tried a couple times before it seems. For those who follow: yes you can get it by writing external tools, no you can't using just ASAR. Afaik, from what I found anyway.
(restricted)
The included readme for the Prize Koopas tells you how to set the prizes to a different sprite. The powerup sprite numbers would be in the respective .cfg files for each powerup inside: custom_powerups\powerups\pixi\sprites\powerups (second set of numbers). I think the Prize Koopas are coded to only do normal sprites though, not custom ones. If that's so, you'd need to write some code and add a custom sprite spawn option where it selects between coin and "JSR spawn" I think.
If there's no obvious glitches your hack needs a guy from the outside to show up with a red pill and a blue pill to know if it's in the Matrix.
You couldn't lock off TAS completely anyway.

However, one thing you could try is detecting if buttons are being pressed faster than human reflexes. Doesn't lock off savestates or TAS but makes it more fair maybe by limiting how much performance enhancement you can get out of it. It'd be a lot of work though. There's a ton of edge cases you'd have to work through and decided what you wanted to do (ie: if lag frame be more forgiving). Not to mention it might be a lot of code to call every frame for limited benefit if you're handling all the edge cases.

Edit: Fastest human button pressing is a press every 3.75 frames though (3 rounded down). With an "average guy" top speed of every 5 frames, I think? So at most that would say you can't press the same button loading in from a save state within 3-5 frames, but you *could* hold the same buttons (or wait 5 frames before doing anything). All in all, maybe not worth the effort involved. Unless you found a lot of frame-perfect exploits you wanted to remove from your game on top of the current goal.
Originally posted by Mandagary
I am looking for something that as soon as you press a button on the title screen, makes a small sound effect and lead directly to level C5. Any ideas?

Apply Patches:
One file, One player
No Overworld
Apply UberASM (game modes 07 and 08):
"Press start" sign
Inside the "Press Start" sign UberASM replace:
Code
main:

with:
Code
!sfx_number = $29
!sfx_port = $1DFC

if read1($00FFD5) == $23	;sa-1 compatibility
	!addr = $6000
else
	!addr = $0000
endif

main:
	LDA $18
	AND #$80
	ORA $16
	AND #$90
	BEQ .no_press	; check start, a, & b for press
	LDA #!sfx_number
	STA !sfx_port|!addr
	LDA #$00
	STA $0100
.no_press:

Ideally you'd want to disable controller input on game modes 04/05/06 (didn't test how far back you'd need to go but at least 6) and disable a/b/start for whichever ones you don't want to use (and edit the controller detect code accordingly)
Unfortunately, UberASM runs after the normal code though and I couldn't find the hijacks after 50 minutes :/

Edit: Not *thoroughly* tested. May break with saves. Didn't get that far in testing.
I'm trying to check a table to see if all the values are the same. If so, I want to conditionally compile different code.
Code
!counter = (table_end-table_start)
!prev = table_start+!counter
!flag = 0
while !counter
	if table_start+!counter-1 != !prev
		!flag #= 1
	!counter #= !counter--
endif

table_start
	db $00, $00, $00
table_end

table_start+!counter is, of course, not a table access afaik. Anyone know some preprocessor magic for this?
That's pretty simple actually (from what I understand, I don't know how the lights actually work yet :3), some variation of:
Code
Global UberASM:
	; Every frame (you could modify this to be a larger gap)
	if (Blinking%fps != current_frame)
		Blinking = 0			; Turn off blinking
Light:
	if (Blinking)
		On = current_frame % 1
	else
		if (On == 1) return
	Blinking = current_frame+1	; +1 so we can detect fully off (0) also cheap compare in UberASM


Edit for future readers: "fps" was mislabeled, it should be "MaxFrameValue" (aka, current_frame_max)
Fwiw, have to say this is a pretty rare issue statistically. Even considering that though, half the time it's not a hardware issue, the other half they promptly replace after sending in. About the only downside is not having controllers while you send them in. But if you keep a Player 2...
Simple concept, ugly code. And too many comments. Meh.
Also don't expect this to run.
This is just more grounded than the pseudocode for explanation purposes.


This is what I meant roughly:
Code


TL;DR predict, check prediction, run code based on result.

REP, SEP, etc. not included except where I thought it was crucial to understanding. (I think? x__X)
I feel like I'm missing an edge case on the +/- 1 shenanigans when the modulus is taken.
Bit tired lately ^__^;;;
Might want to make sure you understand that bit the most.
Also you could rework the code to have a third flag and just keep the current frame
(conceptually the same code, just harder to explain and more twisty outside the modulus)

Now, I assumed the sprite wouldn't do anything when OFF from the light block, that's probably the confusion.
That's wrong because the sprite is still loaded correct? >___<
One fix there could be to add state to the prediction.
(Check predicted state, if we don't match somebody played with a light switch last frame)

Conceptually this *should* be a double lock, like a car driving over a detection wire. One wire tells you if there's a car, two can tell you what way it's driving. I was assuming you could freeze the car and wanted to detect if the car had been frozen while driving, which was probably the confusion. Anyhow, some sort of prediction check to suit your code should work. As long as your prediction check happens a minimum of twice every "loop" (0-255 is frame loop here, but it could be any sort of loop) to avoid false positives/negatives. Bit of a mess on the psuedocode, like I said tired lately (=___=), let me know if you don't get what I was hinting at.

EDIT: Also if the sprite is running it's code while off b/c of light switch then you can collapse the UberASM into the Light
I'm looking at Bomb Explosion at $02808D as well as the Explosion Sensitivity patch, and I'm not seeing it yet. Is there a way to have the explosion itself trigger block code on blocks it interesects (I'm not sure where to look for block-sprite interactions)? Atm, I'm just trying to merge several "explosions" and the bomb one *will* effect the block it's on, but I have a couple other ideas as well.

Thanks for the previous reply Thomas! Yeah a flag would be simple, was trying hold out on that though to make it easier for end-use.