-
Notifications
You must be signed in to change notification settings - Fork 0
/
format_song.rb
32 lines (24 loc) · 757 Bytes
/
format_song.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#!/bin/ruby
src_filename = ARGV[0]
dst_filename = ARGV[1]
src = File.read(src_filename)
pitch_flag = false
File.open(dst_filename, 'w') do |dst|
src.lines do |line|
next if /\.even/.match?(line)
line = if pitch_flag
pitch_flag = false
line.sub('.byte', '.word')
else
line
end
# .word $ + 2
line.sub!(/(\s+.word )\$(.+)/, '\1.\2')
# .word Justaddcream_Pitch1 + 4 * 0 + 1
line.sub!(/(\.word \w+_Pitch\d+ \+ \d+ \* \d+ \+ )\d+/, '\12')
dst << line
dst << " .even\r\n" if /DisarkPointerRegionStart/.match?(line)
dst << " .even\r\n" if /DisarkWordForceReference/.match?(line)
pitch_flag = true if /^\w+_Pitch\d+:/.match?(line)
end
end