FANDOM


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.