Fandom

Little Sound Dj

.sav structure

70pages on
this wiki
Add New Page
Comments0 Share

This is the structure of the .sav file, produced by emulators and backup devices for storing the LSDJ song data.

For some examples how to parse this, check https://github.com/alexras/lsdj-sav-utils and http://code.google.com/p/lsdj2xml/

MapEdit

This map is valid for v4.1.8:

Bank 0:
4080 0000-0FEF: phrases-> notes
  64 0FF0-102F: bookmarks
  96 1030-108F: empty
 512 1090-128F: grooves
1024 1290-168F: song-> chainno (listed PU1,PU2,WAV,NOI for $00 .. $ff in order)
 512 1690-188F: tables-> envelope
1344 1890-1DCF: instrument->speech->words ($20*42)
 168 1DD0-1E77: instr->speech->wordnames
   2 1E78-1E79: mem initialized flag (set to “rb” on init)
 320 1E7A-1FB9: instr->names
  70 1FBA-1FFF: empty

Bank 1:
  32 2000-201F: empty 
  32 2020-203F: table allocation table (byte per table, 1 if alloced, 0 else)
  64 2040-207F: instr alloc table (byte per instrument, 1 if alloced, 0 else)
2048 2080-287F: chains-> phraseno
2048 2880-307F: chains-> transposes
1024 3080-347F: instr->param
 512 3480-367F: tables-> transpose
 512 3680-387F: tables-> fx
 512 3880-3A7F: tables-> fx val
 512 3A80-3C7F: tables-> fx 2
 512 3C80-3E7F: tables-> fx 2 val
   2 3E80-3E81: mem initialized flag (set to “rb” on init)
  32 3E82-3EA1: phrase allocation table (bit per phrase, 1 if alloced, 0 else)
  16 3EA2-3EB1: chain allocation table (bit per chain, 1 if alloced, 0 else)
 256 3EB2-3FB1: softsynth params (16 parameter blocks of 16 bytes each)
   1 3FB2-3FB2: clock, hours
   1 3FB3-3FB3: clock, minutes
   1 3FB4-3FB4: tempo
   1 3FB5-3FB5: tune setting
   1 3FB6-3FB6: total clock, days
   1 3FB7-3FB7: total clock, hours
   1 3FB8-3FB8: total clock, minutes
   1 3FB9-3FB9: total clock, checksum (days+hours+minutes)
   1 3FBA-3FBA: key delay
   1 3FBB-3FBB: key repeat
   1 3FBC-3FBC: font
   1 3FBD-3FBD: sync setting
   1 3FBE-3FBE: colorset
   1 3FBF-3FBF: empty
   1 3FC0-3FC0: clone (0=deep, 1=slim)
   1 3FC1-3FC1: file changed?
   1 3FC2-3FC2: power save
   1 3FC3-3FC3: prelisten
   2 3FC4-3FC5: wave synth overwrite locks
  58 3FC6-3FFF: empty

Bank 2:
4080 4000-4FEF: phrases->fx
4080 4FF0-5FDF: phrases->fx val
  32 5FE0-5FFF: empty

Bank 3:
4096 6000-6FFF: 256 wave frames (each frame has 32 4-bit samples)
4080 7000-7FEF: phrases->instr
   2 7FF0-7FF1: mem initialized flag (set to “rb” on init)
  13 7FF2-7FFE: empty
   1 7FFF-7FFF: version byte (0 = before 3.6.0, 1 = 3.6.0, 2 = 3.6.1 and up)

Instrument StructureEdit

Default InstrumentEdit

0, $a8, 0, 0, $ff, 0, 0, 3, 0, 0, $d0, 0, 0, $f3, 0, 0

Pulse InstrumentEdit

  • Byte 0: 0
  • Byte 1: Envelope
  • Byte 2: Phase transpose
  • Byte 3: Sound length (bit 6-0). If bit 6 is unset, sound length is UNLIM, otherwise length is bitwise not of bits 5-0
  • Byte 4: Sweep
  • Byte 5: Automate 1,2 (bit 4-3); Vibrato (bit 2-1: type, bit 0: down/up)
  • Byte 6: Table (bit 5-0: bit 5 = table on/off)
  • Byte 7: Wave (bits 7-6); Phase finetune (bit 5-2); Pan (bit 1-0)

Wave InstrumentEdit

  • Byte 0: 1
  • Byte 1: Volume (what will be written to Game Boy register $FF1C)
  • Byte 2: Softsynth parameters (bit 7-4, chooses one of the 16 softsynth parameter blocks); Repeat (3-0)
  • Byte 3: -
  • Byte 4: -
  • Byte 5: Automate 1,2 (bit 4-3); Vibrato (bit 2-1: type, bit 0: down/up)
  • Byte 6: Table (bit 5-0: bit 5 = table on/off)
  • Byte 7: Pan (bit 1-0)
  • Byte 8: -
  • Byte 9: Play type (bits 1-0; 0=once, 1=loop, 2=pingpong, 3=manual)
  • Byte 10: -
  • Byte 11: -
  • Byte 12: -
  • Byte 13: -
  • Byte 14: Steps (bit 7-4); Speed (bit 3-0)

Kit InstrumentEdit

  • Byte 0: 2
  • Byte 1: Volume
  • Byte 2: Keep attack 1 (bit 7); Half-speed (bit 6); Kit (bit 5-0)
  • Byte 3: Length 1 (0 = auto)
  • Byte 4: -
  • Byte 5: Loop 1,2 (bit 6-5); Automate 1,2 (bit 4-3); Vibrato (bit 2-1: type, bit 0: down/up)
  • Byte 6: Table (bit 5-0; bit 5 = table on/off)
  • Byte 7: Pan (bit 1-0)
  • Byte 8: Pitch
  • Byte 9: Keep attack 2 (bit 7); Kit 2 (bit 5-0)
  • Byte 10: Dist. type ($d0 = CLIP, $d1 = SHAPE, $d2 = SHAP2, $d3 = WRAP)
  • Byte 11: Length 2 (0 = auto)
  • Byte 12: Offset
  • Byte 13: Offset 2

Noise InstrumentEdit

  • Byte 0: 3
  • Byte 1: Envelope
  • Byte 2: S CMD (0 = free, 1 = stable)
  • Byte 3: Sound length (bit 6-0; if bit 6 is unset, soundlength = UNLIM, otherwise length is bitwise not of bits 5-0)
  • Byte 4: Shape
  • Byte 5: Automate 1,2 (bit 4-3)
  • Byte 6: Table (bit 5-0; bit 5 = table on/off)
  • Byte 7: Pan (bit 1-0)

Softsynth ParametersEdit

  • Byte 0: Waveform (0 = sawtooth, 1 = square, 2 = triangle)
  • Byte 1: Filter Type (0 = lowpass, 1 = highpass, 2 = bandpass, 3 = allpass)
  • Byte 2: Filter Resonance
  • Byte 3: Distortion (0 = clip, 1 = wrap)
  • Byte 4: Phase Type (0 = normal, 1 = resync, 2 = resync2)
  • Byte 5: Volume Start
  • Byte 6: Filter Cutoff Start
  • Byte 7: Phase Amount Start
  • Byte 8: Vertical Shift Start
  • Byte 9: Volume End
  • Byte 10: Filter Cutoff End
  • Byte 11: Phase Amount End
  • Byte 12: Vertical Shift End

Ad blocker interference detected!


Wikia is a free-to-use site that makes money from advertising. We have a modified experience for viewers using ad blockers

Wikia is not accessible if you’ve made further modifications. Remove the custom ad blocker rule(s) and the page will load as expected.