Module: GBTiles::GBT::Export::ASM::Effects

Included in:
Channel
Defined in:
lib/gbtiles/gbt/export/asm/effects/pan.rb,
lib/gbtiles/gbt/export/asm/effects/jump.rb,
lib/gbtiles/gbt/export/asm/effects/speed.rb,
lib/gbtiles/gbt/export/asm/effects/volume.rb,
lib/gbtiles/gbt/export/asm/effects/arpeggio.rb,
lib/gbtiles/gbt/export/asm/effects/cut_note.rb,
lib/gbtiles/gbt/export/asm/effects/break_and_set_step.rb

Instance Method Summary collapse

Instance Method Details

#effect_arpeggioObject



6
7
8
9
10
11
# File 'lib/gbtiles/gbt/export/asm/effects/arpeggio.rb', line 6

def effect_arpeggio
  {
    :number => 1,
    :params => effect_param
  }
end

#effect_break_and_set_stepObject



6
7
8
9
10
11
# File 'lib/gbtiles/gbt/export/asm/effects/break_and_set_step.rb', line 6

def effect_break_and_set_step
  {
    :number => 9,
    :params => effect_param_as_bcd
  }
end

#effect_cut_noteObject



6
7
8
9
10
11
# File 'lib/gbtiles/gbt/export/asm/effects/cut_note.rb', line 6

def effect_cut_note
  {
    :number => 2,
    :params => effect_param_2
  }
end

#effect_jumpObject



6
7
8
9
10
11
# File 'lib/gbtiles/gbt/export/asm/effects/jump.rb', line 6

def effect_jump
  {
    :number => 8,
    :params => effect_param
  }
end

#effect_panObject



6
7
8
9
10
11
12
13
14
# File 'lib/gbtiles/gbt/export/asm/effects/pan.rb', line 6

def effect_pan
  left = effect_param_2.between?(0, 11) ? 1 : 0
  right = effect_param_2.between?(4, 15) ? 1 : 0

  {
    :number => 0,
    :params => (left << (3 + channel_number)) | (right << (channel_number - 1))
  }
end

#effect_speedObject



6
7
8
9
10
11
12
13
14
15
16
17
# File 'lib/gbtiles/gbt/export/asm/effects/speed.rb', line 6

def effect_speed
  speed = effect_param

  if speed > 0x1F then
    throw "Unsupported BPM speed effect: #{speed}"
  end

  {
    :number => 10,
    :params => convert_speed(speed)
  }
end

#effect_volumeObject



6
7
8
# File 'lib/gbtiles/gbt/export/asm/effects/volume.rb', line 6

def effect_volume
  throw "Volume is implemented on a per-channel basis"
end