Tutorials

This section contains tutorials to help you learn how to use ndspy!

I suggest starting with Tutorial 0: Getting Started to ensure that you’ve installed ndspy correctly and know how to run the correct copy of Python. After that, you should try Tutorial 1: Editing a File in a ROM, which is intended to be a relatively gentle introduction to basic ndspy usage. Once you’ve completed both of those, you can pretty much jump around to whatever tutorials interest you.

Some familiarity with Python is assumed; however, we won’t be using any particularly advanced syntax [1], so it’s OK if you’re not too good at it yet.

These tutorials use New Super Mario Bros. as the example game, because it’s popular and it’s what I’m most familiar with. However, ndspy should work with any games that use file formats it supports.

[1]with blocks for opening files could be considered an exception; however, you don’t really need to understand how they work in order to use them.

Todo

  • Messing with ARM9: change the value at 0xADDR to VALUE. Basically manual Magigoomba replaces. (Maybe also mention that you can do this with MG.)
  • Messing with overlays: same as previous, but with overlays.
  • Exporting and importing to/from SDAT: show how to save things out of an SDAT and import them back in. Include an example of exporting SWAVs from a SWAR.
  • Importing a music track from one game into another: involves setting bank IDs and stuff. Also show how sequences can share banks and explain why you can’t necessarily add new banks directly.
  • Messing with a sound effect (very basic): swap a SWAV for another one – as discussed on Discord.
  • Messing with a sound effect (basic): change the 1-UP tune (maybe to the SMM 1UP-but-it-doesn’t-count tune?).
  • Messing with a sound effect (intermediate): replace something with a single NSMBW WAV. Should involve deleting some sequence events. After showing how to do it manually, show how it can be done using extras.soundEffect.
  • Messing with a sound effect (advanced): insert the NSMBW powerup SFX, which has two notes and plays at two different pitches! Good place to use a regional instrument.
  • Compressing/decompressing with LZ10.
  • Editing BMG messages.