Language…
6 users online:  Ahrion, Dispace, katun24,  patcdr, Quite430Goo, TheBiob - Guests: 223 - Bots: 168
Users: 70,811 (2,353 active)
Latest user: FeralStone

Ask anything about SMW Hacking - 2019 Edition

  • Pages:
  • 1
  • 2
  • 3
  • 4
  • 5
  • 278
  • 279
  • 280
  • 281
  • 282
  • 283
  • 284
  • 285
  • 286
  • 287
  • 288
  • 289
  • 290
  • 291
I made a hack way back in like 2010 or something, likely with Lunar Magic 1.65 and Addmusic for custom music. I'd been considering getting it working today, but it was originally played in ZSNES. I've been told by several people that the music is likely going to be the problem with modern hardware solutions like SuperNT or anything similar. Is there an "easy" way to use custom music/modify the old ROM with modern tools, or will I need to completely remake the hack from scratch?

What things would I need to use? If needed, I can likely provide a list of most tools I used, which are almost certainly all obsolete now, and I fear the modern version may be more "Accurate", but it may also mess things up. Any advice on where to start?


Unfortunately, it's not really easy to reverse-engineer music, much less fix it afterwards. If you still have the old music files, you could try inserting them with the current AMK though and see if it still works. You can tell AMK to treat the song as if it were on older Addmusic's by adding a "#am4" tag to the top of the text file. And I believe you can still use AMK on a ROM that had music from previous addmusic versions (it will just overwrite the old music), but if not, you may have to port to a new ROM.

For what it's worth though, older music only really had issues if it relied on a high echo delay, which not all songs do. So potentially your older songs will still be perfectly fine on accurate emulators, you'd just have to test. If there was an issue, you'd know because the sound engine would completely crash, and you'd stop hearing sound at all.

Professional frame-by-frame time wizard. YouTube - Bluesky - SMW Glitch List - SMW Randomizer
How do you use the stars with this BG? Thanks!


Originally posted by danthaman4671
How do you use the stars with this BG? Thanks!

The answer is a bit complicated due to the way SMW handles animated tiles. Certain animations are only available depending on the FG/BG setting chosen in #lm{gfxby}, with the animated BG stars only available when it is set to 6 (i.e. Rope 2). If you want to use that setting with different graphics, you can change it to 6 and then override the graphics files using the #lm{sgfxby} menu.

If you'll not familiar with doing this, in the #lm{gfxby} menu you'll notice each setting has "FG1=XX, FG2=XX...." text with it. These correspond to the files listed in the #lm{sgfxby} menu. Just copy the file numbers over and you'll be able to load the graphics you want, while still having the animations from the Rope 2 tileset available.


Now, that may not always be an option for you, particularly if your level already depends on tileset-specific objects that the Rope 2 tileset doesn't have. If that's the case, an alternative option would be to recreate the tile animation yourself using ExAnimation.

Professional frame-by-frame time wizard. YouTube - Bluesky - SMW Glitch List - SMW Randomizer
So I was always curious about the SNES Registers and Level Modes section having four selectable level modes listed as "Do not use" as they appear to cause graphical glitches, those being 03, 04, 05 and 06. What I was wondering though, would it be possible to fix these with ASM patches so that they can finally become usable? While I'm aware that pseudo level modes can be made with UberASM, I think it would still be cool to utilize some of this more obscure unused data.
Don't eat the sandwich


It's possible, but keep in mind that Lunar Magic will likely not respect any modifications to the data, meaning UberASM will still be far easier to work with overall.

Still though, if you do want to try, the main issue with the level modes is actually the Map16 data. Now, I don't know how in particular Lunar Magic messes with this routine, but in the original game, level modes handle the Map16 layout of a level through a series of overcomplicated pointer tables from $00BAD8 through $00BEAF. The main part for level modes is four tables at $00BDA8/$00BE28 (Layer 1) and $00BDE8/$00BE68 (Layer 2). These contain 16-bit addresses for another series of pointer tables preceding them, which in turn give indices in RAM for each screen's Map16 data. The issue with modes 3-6 is that they're set up to use two unused Map16 layouts that were never properly handled anywhere. You can probably fix them by just changing their pointers to the same ones as modes 0-2, like so:

Code
org $00BDA8
	skip 6
	dw $BAD8
	dw $BAD8
	dw $BAD8
	dw $BAD8

org $00BDE8
	skip 6
	dw $BB08
	dw $BB08
	dw $BB08
	dw $BB08

org $00BE28
	skip 6
	dw $BC40
	dw $BC40
	dw $BC40
	dw $BC40

org $00BE68
	skip 6
	dw $BC70
	dw $BC70
	dw $BC70
	dw $BC70

Then you can just set up any additional settings for them in the tables over at [urlhttps://smwc.me/m/smw/rom/058417]$058417[/url].

Professional frame-by-frame time wizard. YouTube - Bluesky - SMW Glitch List - SMW Randomizer
There are the shells with a Koopa inside and you can see the Koopa's eyes. Where do I find the GFX tile for the eyes?
My hack in progress: Mario Quits 2
44D for the closed eyes and 64 for the open eyes.
I'm editting Mario's sprite and I noticed that when I get Fire Power, it is changing the sprites skin color. I have skin on color 88 of palette 8. I realize this must because the fire power's palette is separate, probably 9 and changing to color 98. The simplest solution would seem to be to change palette 9 so it aligns with the colors I need them to be. post palette swap. But my gut says it can't be this simple

What else uses palette 9?
Palette 9 actually has nothing to do with it - the colors for powerup states are all on palette 8, just different "versions" of palette 8 that the game loads as needed.

To edit them, open the palette editor and select a different item from the dropdown menu that says "Mario palette". Changes to those palettes will affect the whole game, and can only be made when the "enable custom palette" checkbox is unchecked.


 
Hello, I just wanted to know if someone could create a patch for a layer 3 tile in the overworld, the basic operation would be that touching the tile changes the ex-graphic loaded in one of the slots. I would appreciate any help
I do want to use the Floor Button sprite as replacement for the switch palaces as that can be used anytime.
I inserted it as sprite 50, extra bit 2 with the following extra byte extensions: 02 04 3A 00. 3A is responsible for toggling the yellow switch palace. Thing is it doesn't work. Am I missing a thing here?

I've stumbled upon 18+ year old code and I've been trying to set a different music for when Mario dies, which happens after sprite contact.

Code
HandleContact:
	LDA RAM_SpriteState,x	; Only hurt Mario when jumping
	BEQ Return2
	LDA.B #$09		; Set death animation
	STA $71
	STA $1DFB		; Set death music
	LDA.B #$30		; Set time until we return to the OW


Because of AddmusicK, this plays the bonus game end music. I've tried different banks and what plays does make sense (1DF9 would be Fly with cape SFX), but I can't seem to figure out how to set the Mario died SFX or where it is. Any help?
Check out
my hack thread (Taomb)
my twitch (irregular schedule)


Exits done: >50, Overworld: 99.8%
Play through Taomb Demo 3
Taomb is almost finished. It will definitely be relased in 2025 after 17 years of work!



It's because you're currently reusing the LDA.B #$09 line that is setting the death animation state. You want to insert an additional LDA opcode before the write to $1DFB in order to set the song of your choice:
Code
	LDA.B #$09		; Set death animation
	STA $71
	LDA.B #$xx		; Set death music
	STA $1DFB

...where #$xx is the song ID you want to play.

If you want to make it a bit easier to identify and edit for the future, you can also just make this a define. Instead of #$xx, use something like #!deathMusic, and add a line at the top of the file like !deathMusic = $xx:
Code
!deathMusic	=	$xx

; ...rest of the code...

	LDA.B #!deathMusic		; Set death music
	STA $1DFB


Professional frame-by-frame time wizard. YouTube - Bluesky - SMW Glitch List - SMW Randomizer
That worked perfectly, thank you Thomas!
edit: I also didn't know that Mario died (SFX) was named Miss.txt in AddmusicK so I had trouble finding the bank and song number first.
Check out
my hack thread (Taomb)
my twitch (irregular schedule)


Exits done: >50, Overworld: 99.8%
Play through Taomb Demo 3
Taomb is almost finished. It will definitely be relased in 2025 after 17 years of work!

Hey there, first time posting here!
I'm trying to hack Mario 64 to replace all sounds and instruments with my voice. I keep running into some trouble.

Some sound banks just don't seem to work. Instruments especially don't 'inject in place' and break with a 'ctl too big' error, or just has a memory crash when starting the rom, even after shortening the sound or rerecording it.

Sometimes sound effects seem to go quiet after messing around in certain worlds. It usually starts after a different song starts to play, or after a text box appears.

Hope I'm posting in the right spot, any help would be appreciated!


Hello, and welcome to the site! Unfortunately this thread is mainly intended for SMW hacking rather than SM64, so it may be difficult to people to provide proper support here. SMWC used to have a section for SM64 hacking, but it was phased out due its smaller community and certain bad actors present in it. You might be able to get some help asking in the misc ROM hacking section or trying other more-SM64-focused resources like the SM64 ROM hacks discord or the N64 decompilation discord.

I don't know a lot about SM64 ROM hacking myself, but I'd guess from the error that the issue is the sample files being too large. The crash when starting the ROM might be from the APU crashing, which often time hardlocks the entire game because transfers between the CPU and APU during loading can no longer complete. In addition to shortening the sample, you may need to also perform bitcrushing to decrease the size (in exchange for the sound becoming less crisp). Audio on older consoles in general is not well-suited to vocals, though, which is why a lot of older games opted for "mumble" style speech.

Professional frame-by-frame time wizard. YouTube - Bluesky - SMW Glitch List - SMW Randomizer
So I need a little help. I wanna place the blocks that purple coins turn into, when hitting a P-Switch, directly into my level, but I can't find those on map16. The reason I need them is because I was planning to change the palette in my level to make them look like ordinary blocks. And thus, use them to make areas look inaccessible when they actually aren't.
Currently working on an SMW hack. Check out my WIP Thread!
https://www.smwcentral.net/?p=viewthread&t=120148


The blocks that the purple coins turn into is more of an accident than anything. When the P-switch is hit, the coins aren't actually changing the tile number, they're changing their actual graphics (and interaction). The reason the purple coins also turn into a block is because they're using the same graphics as the normal coins, just with a different palette; them turning into a block with the P-switch are just an unintended consequence of that. So the blocks they're turning into don't actually exist anywhere in the Map16 data.

You can recreate them pretty easily though by just creating some custom Map16 tiles. Just copy tile 132 (the normal brown block) and change the palette from 6 to 7. If you still want the behavior of it acting like a coin, just change the act-as setting to 2B.

Professional frame-by-frame time wizard. YouTube - Bluesky - SMW Glitch List - SMW Randomizer
Thank you! Now I can just change the palettes to make purple coins and their blocks look identical to normal ones, and let the fun begin. >:)
Currently working on an SMW hack. Check out my WIP Thread!
https://www.smwcentral.net/?p=viewthread&t=120148
  • Pages:
  • 1
  • 2
  • 3
  • 4
  • 5
  • 278
  • 279
  • 280
  • 281
  • 282
  • 283
  • 284
  • 285
  • 286
  • 287
  • 288
  • 289
  • 290
  • 291