shithub: pokered

Download patch

ref: b42672a0a07793f1ddd15e7132d229bd214877ac
parent: 96db7d1cd78232f345eb74bc2c91ad5698d1b11f
parent: c57d257243a214f269859439cbca46f55791e2e1
author: YamaArashi <[email protected]>
date: Thu Jan 26 05:32:40 EST 2012

Merge music changes

hg-commit-id: 279fd0d79924


--- a/music.asm
+++ b/music.asm
@@ -5261,23 +5261,1301 @@
 
 ;Meet Prof. Oak
 MeetProfOak_md_1: ;AF59 - AFA8
-INCBIN "baserom.gbc",$af59,$afa9 - $af59
+	; AF59
+	mus_tempo 0, 112
+	mus_volume 119
+	mus_duty duty75
+	db $E8
+	mus_vel 11, 4
 
+	mus_octave oct2
+	mus_note noteF#, note16
+	mus_note noteB, note16
+
+	mus_octave oct3
+	mus_note noteD#, note16
+	mus_note noteE, note16
+	mus_note noteF#, note2_4
+	mus_vel 10, 2
+
+	mus_octave oct2
+	mus_note noteE, note4_8
+	mus_note noteB, note2_8
+	mus_note noteE, note4_8
+	mus_note noteB, note2_8
+	mus_note noteE, note4_8
+	mus_note noteD#, note4
+	mus_note noteF#, note8
+	mus_note noteF#, note4
+	mus_note noteE, note4_8
+	mus_note noteD#, note4
+	mus_note noteF#, note8
+	mus_note noteF#, note4
+	mus_note noteE, note4_8
+	mus_note noteB, note2_8
+	mus_note noteE, note4_8
+	mus_note noteB, note2_8
+	mus_note noteE, note4_8
+	mus_note noteD#, note4
+	mus_note noteF#, note8
+	mus_note noteF#, note4
+	mus_note noteE, note4_8
+	mus_note noteD#, note4
+	mus_note noteF#, note8
+	mus_note noteF#, note4
+	
+branch_af85:
+	mus_note noteF#, note4_8
+	mus_note noteE, note4
+	mus_note noteA, note8
+	mus_note noteA, note4
+	mus_note noteF#, note4_8
+	mus_note noteE, note4
+	mus_note noteA, note8
+	mus_note noteA, note4
+	mus_note noteF#, note4_8
+	mus_note noteE, note4
+	mus_note noteG#, note8
+	mus_note noteG#, note4
+	mus_note noteF#, note4_8
+	mus_note noteE, note4
+	mus_note noteG#, note8
+	mus_note noteG#, note4
+	mus_note noteE, note4_8
+	mus_note noteD#, note4
+	mus_note noteF#, note8
+	mus_note noteF#, note4
+	mus_note noteE, note4_8
+	mus_note noteD#, note4
+	mus_note noteF#, note8
+	mus_note noteF#, note4
+	mus_note noteF#, note4_8
+	mus_note noteE, note4
+	mus_note noteG#, note8
+	mus_note noteG#, note4
+	mus_note noteF#, note4_8
+	mus_note noteE, note4
+	mus_note noteG#, note8
+	mus_note noteG#, note4
+	mus_jump 0, branch_af85
+	; AFA8
+
 MeetProfOak_md_2: ;AFA9 - B03D
-INCBIN "baserom.gbc",$afa9,$b03d - $afa9
+	; AFA9
+	mus_mod 8, 1, 1
+	mus_duty duty50
+	mus_vel 12, 4
 
+	mus_octave oct2
+	mus_note noteB, note16
+
+	mus_octave oct3
+	mus_note noteD#, note16
+	mus_note noteF#, note16
+	mus_note noteA#, note16
+	mus_note noteB, note2_4
+	mus_vel 11, 2
+
+	mus_octave oct2
+	mus_note noteB, note8
+
+	mus_octave oct3
+	mus_note noteC#, note8
+	mus_note noteD#, note8
+	mus_note noteE, note4
+	mus_note noteD#, note8
+	mus_note noteC#, note4
+	mus_vel 6, 4
+
+	mus_octave oct3
+	mus_note noteB, note8
+
+	mus_octave oct4
+	mus_note noteC#, note8
+	mus_note noteD#, note8
+	mus_note noteE, note4
+	mus_note noteD#, note8
+	mus_note noteC#, note4
+	mus_vel 11, 2
+
+	mus_octave oct2
+	mus_note noteB, note8
+	mus_note noteA, note8
+	mus_note noteG#, note8
+	mus_note noteA, note4
+	mus_note noteB, note8
+	mus_note noteB, note4
+	mus_vel 8, 1
+
+	mus_octave oct3
+	mus_note noteB, note8
+	mus_note noteA, note8
+	mus_note noteG#, note8
+	mus_note noteA, note4
+	mus_note noteB, note8
+	mus_note noteB, note4
+	mus_vel 11, 2
+
+	mus_octave oct2
+	mus_note noteB, note8
+
+	mus_octave oct3
+	mus_note noteC#, note8
+	mus_note noteD#, note8
+	mus_note noteE, note4
+	mus_note noteD#, note8
+	mus_note noteC#, note4
+	mus_vel 6, 4
+
+	mus_octave oct3
+	mus_note noteB, note8
+
+	mus_octave oct4
+	mus_note noteC#, note8
+	mus_note noteD#, note8
+	mus_note noteE, note4
+	mus_note noteD#, note8
+	mus_note noteC#, note4
+	mus_vel 11, 2
+
+	mus_octave oct2
+	mus_note noteB, note8
+	mus_note noteA, note8
+	mus_note noteG#, note8
+	mus_note noteA, note4
+	mus_note noteB, note8
+	mus_note noteB, note4
+	mus_vel 8, 1
+
+	mus_octave oct3
+	mus_note noteB, note8
+	mus_note noteA, note8
+	mus_note noteG#, note8
+	mus_note noteA, note4
+	mus_note noteB, note8
+	mus_note noteB, note4
+	mus_vel 11, 5
+
+branch_b005:
+	mus_octave oct3
+	mus_note noteC#, note4_8
+
+	mus_octave oct2
+	mus_note noteA, note16
+
+	mus_octave oct3
+	mus_note noteC#, note16
+	mus_note noteE, note4_8
+	mus_note noteC#, note16
+	mus_note noteE, note16
+	mus_note noteF#, note4
+	mus_note noteE, note4
+	mus_note noteD#, note4
+	mus_note noteC#, note4
+
+	mus_octave oct2
+	mus_note noteB, note4_8
+	mus_note noteG#, note16
+	mus_note noteB, note16
+
+	mus_octave oct3
+	mus_note noteE, note2
+	mus_vel 6, 5
+
+	mus_octave oct3
+	mus_note noteB, note4_8
+	mus_note noteG#, note16
+	mus_note noteB, note16
+
+	mus_octave oct4
+	mus_note noteE, note2
+	mus_vel 11, 5
+
+	mus_octave oct2
+	mus_note noteA, note4_8
+	mus_note noteF#, note16
+	mus_note noteA, note16
+
+	mus_octave oct3
+	mus_note noteD#, note2
+	mus_note noteE, note4
+	mus_note noteD#, note4
+	mus_note noteC#, note4
+	mus_note noteC, note4
+
+	mus_octave oct2
+	mus_note noteB, note4_8
+	mus_note noteG#, note16
+	mus_note noteB, note16
+
+	mus_octave oct3
+	mus_note noteE, note4_8
+
+	mus_octave oct2
+	mus_note noteB, note16
+
+	mus_octave oct3
+	mus_note noteE, note16
+	mus_vel 11, 7
+	mus_note noteG#, note1
+	mus_jump 0, branch_b005
+	; B03C
+
 MeetProfOak_md_3: ;B03D - B11F
-INCBIN "baserom.gbc",$b03d,$b120 - $b03d
+	; B03D
+	mus_vel 1, 2
+	mus_note noteRst, note2_8
 
+	mus_octave oct3
+	mus_note noteF#, note16
+	mus_note noteRst, note16
+	mus_note noteB, note16
+	mus_note noteRst, note16
+
+	mus_octave oct4
+	mus_note noteC#, note16
+	mus_note noteRst, note16
+
+	mus_octave oct3
+	mus_note noteB, note16
+	mus_note noteRst, note4_16
+
+	mus_octave oct4
+	mus_note noteE, note4
+	mus_note noteRst, note4_8
+
+	mus_octave oct3
+	mus_note noteB, note16
+	mus_note noteRst, note4_16
+
+	mus_octave oct4
+	mus_note noteE, note4
+
+	mus_octave oct3
+	mus_note noteF#, note16
+	mus_note noteRst, note16
+	mus_note noteB, note16
+	mus_note noteRst, note16
+
+	mus_octave oct4
+	mus_note noteC#, note16
+	mus_note noteRst, note16
+
+	mus_octave oct3
+	mus_note noteF#, note16
+	mus_note noteRst, note16
+	mus_note noteF#, note16
+	mus_note noteRst, note16
+	mus_note noteB, note16
+	mus_note noteRst, note16
+	mus_note noteF#, note16
+	mus_note noteRst, note16
+	mus_note noteB, note16
+	mus_note noteRst, note16
+	mus_note noteF#, note16
+	mus_note noteRst, note16
+	mus_note noteB, note16
+	mus_note noteRst, note16
+	mus_note noteF#, note16
+	mus_note noteRst, note16
+	mus_note noteB, note16
+	mus_note noteRst, note16
+	mus_note noteF#, note16
+	mus_note noteRst, note16
+	mus_note noteB, note16
+	mus_note noteRst, note16
+	mus_note noteF#, note16
+	mus_note noteRst, note16
+	mus_note noteB, note16
+	mus_note noteRst, note16
+	mus_note noteF#, note16
+	mus_note noteRst, note16
+	mus_note noteB, note16
+	mus_note noteRst, note16
+	mus_note noteF#, note16
+	mus_note noteRst, note16
+	mus_note noteB, note16
+	mus_note noteRst, note16
+	mus_note noteE, note16
+	mus_note noteRst, note16
+	mus_note noteB, note16
+	mus_note noteRst, note16
+	mus_note noteE, note16
+	mus_note noteRst, note16
+	mus_note noteB, note16
+	mus_note noteRst, note16
+	mus_note noteE, note16
+	mus_note noteRst, note16
+	mus_note noteB, note16
+	mus_note noteRst, note16
+	mus_note noteE, note16
+	mus_note noteRst, note16
+	mus_note noteB, note16
+	mus_note noteRst, note16
+	mus_note noteE, note16
+	mus_note noteRst, note16
+	mus_note noteB, note16
+	mus_note noteRst, note16
+	mus_note noteE, note16
+	mus_note noteRst, note16
+	mus_note noteB, note16
+	mus_note noteRst, note16
+	mus_note noteE, note16
+	mus_note noteRst, note16
+	mus_note noteA, note16
+	mus_note noteRst, note16
+	mus_note noteB, note16
+	mus_note noteRst, note16
+	mus_note noteF#, note16
+	mus_note noteRst, note16
+	mus_note noteF#, note16
+	mus_note noteRst, note16
+	mus_note noteB, note16
+	mus_note noteRst, note16
+	mus_note noteF#, note16
+	mus_note noteRst, note16
+	mus_note noteB, note16
+	mus_note noteRst, note16
+	mus_note noteF#, note16
+	mus_note noteRst, note16
+	mus_note noteB, note16
+	mus_note noteRst, note16
+	mus_note noteF#, note16
+	mus_note noteRst, note16
+	mus_note noteB, note16
+	mus_note noteRst, note16
+	mus_note noteF#, note16
+	mus_note noteRst, note16
+	mus_note noteB, note16
+	mus_note noteRst, note16
+	mus_note noteF#, note16
+	mus_note noteRst, note16
+	mus_note noteB, note16
+	mus_note noteRst, note16
+	mus_note noteF#, note16
+	mus_note noteRst, note16
+	mus_note noteG, note16
+	mus_note noteRst, note16
+	mus_note noteG#, note16
+	mus_note noteRst, note16
+
+branch_bobc:
+	mus_octave oct3
+	mus_note noteA, note16
+	mus_note noteRst, note16
+
+	mus_octave oct4
+	mus_note noteC#, note16
+	mus_note noteRst, note16
+
+	mus_octave oct3
+	mus_note noteA, note16
+	mus_note noteRst, note16
+
+	mus_octave oct4
+	mus_note noteC#, note16
+	mus_note noteRst, note16
+
+	mus_octave oct3
+	mus_note noteA, note16
+	mus_note noteRst, note16
+
+	mus_octave oct4
+	mus_note noteC#, note16
+	mus_note noteRst, note16
+
+	mus_octave oct3
+	mus_note noteA, note16
+	mus_note noteRst, note16
+
+	mus_octave oct4
+	mus_note noteC#, note16
+	mus_note noteRst, note16
+	mus_jump 2, branch_bobc
+
+branch_b0d8:
+	mus_octave oct3
+	mus_note noteG#, note16
+	mus_note noteRst, note16
+	mus_note noteB, note16
+	mus_note noteRst, note16
+	mus_note noteG#, note16
+	mus_note noteRst, note16
+	mus_note noteB, note16
+	mus_note noteRst, note16
+	mus_note noteG#, note16
+	mus_note noteRst, note16
+	mus_note noteB, note16
+	mus_note noteRst, note16
+	mus_note noteG#, note16
+	mus_note noteRst, note16
+	mus_note noteB, note16
+	mus_note noteRst, note16
+	mus_jump 2, branch_b0d8
+	
+branch_b0ed:
+	mus_note noteF#, note16
+	mus_note noteRst, note16
+	mus_note noteA, note16
+	mus_note noteRst, note16
+	mus_note noteF#, note16
+	mus_note noteRst, note16
+	mus_note noteA, note16
+	mus_note noteRst, note16
+	mus_note noteF#, note16
+	mus_note noteRst, note16
+	mus_note noteA, note16
+	mus_note noteRst, note16
+	mus_note noteF#, note16
+	mus_note noteRst, note16
+	mus_note noteA, note16
+	mus_note noteRst, note16
+	mus_jump 2, branch_b0ed
+	
+branch_b101:
+	mus_note noteG#, note16
+	mus_note noteRst, note16
+	mus_note noteB, note16
+	mus_note noteRst, note16
+	mus_note noteG#, note16
+	mus_note noteRst, note16
+	mus_note noteB, note16
+	mus_note noteRst, note16
+	mus_note noteG#, note16
+	mus_note noteRst, note16
+	mus_note noteB, note16
+	mus_note noteRst, note16
+	mus_note noteG#, note16
+	mus_note noteRst, note16
+	mus_note noteB, note16
+	mus_note noteRst, note16
+	mus_jump 2, branch_b101
+	mus_jump 0, branch_bobc
+	mus_tempo 0, 100
+	mus_jump 0, $7123
+	; B11F
+
 ;Meet Rival
 MeetRival_md_1: ;B120 - B1BA
-INCBIN "baserom.gbc",$b120,$b1bb - $b120
+; B120
+        mus_tempo 0, 112
+        mus_volume 119
+        mus_duty duty75
+        mus_mod 6, 3, 4
+        db $e8; B12A
+        mus_vel 11, 3
 
+        mus_octave oct3
+                mus_note noteD, note16
+                mus_note noteC#, note16
+                mus_note noteC, note16; B130
+
+        mus_octave oct2
+                mus_note noteB, note16
+                mus_note noteA#, note8
+                mus_note noteA, note16
+                mus_note noteG#, note16; B135
+                mus_note noteG, note16
+                mus_note noteF#, note16
+                mus_note noteF, note4_8
+                mus_note noteD, note16
+                mus_note noteRst, note8_16; B13A
+
+                mus_note noteD, note16
+                mus_note noteRst, note4_16
+
+                mus_note noteA, note8
+                mus_note noteG, note8
+                mus_note noteA, note8; B13F
+				
+branch_b140:
+                mus_note noteB, note4
+                mus_note noteA#, note8
+                mus_note noteA, note4
+                mus_note noteG, note8
+
+        mus_octave oct3; B144
+                mus_note noteC, note4
+                mus_note noteD, note8
+                mus_note noteRst, note4
+
+                mus_note noteD, note4
+                mus_note noteC#, note8; B149
+                mus_note noteC, note8
+
+        mus_octave oct2
+                mus_note noteB, note8
+
+        mus_octave oct3
+                mus_note noteC, note4; B14E
+                mus_note noteE, note8
+                mus_note noteD, note4
+                mus_note noteC, note8
+
+        mus_octave oct2
+                mus_note noteB, note4; B153
+
+        mus_octave oct3
+                mus_note noteC, note8
+                mus_note noteRst, note4
+
+                mus_note noteG, note4
+                mus_note noteG, note8; B158
+                mus_note noteF#, note8
+                mus_note noteE, note8
+                mus_note noteD, note8
+                mus_note noteF#, note8
+
+        mus_octave oct2; B15D
+                mus_note noteA, note8
+
+        mus_octave oct3
+                mus_note noteD, note8
+                mus_note noteF#, note8
+
+        mus_octave oct2; B162
+                mus_note noteA, note8
+
+        mus_octave oct3
+                mus_note noteD, note8
+
+        mus_octave oct2
+                mus_note noteD, note8; B167
+
+        mus_octave oct3
+                mus_note noteD, note8
+                mus_note noteRst, note8
+
+        mus_octave oct2
+                mus_note noteD, note8; B16C
+
+        mus_octave oct3
+                mus_note noteC, note4
+
+        mus_octave oct2
+                mus_note noteB, note8
+                mus_note noteA#, note8; B171
+                mus_note noteB, note8
+
+        mus_octave oct3
+                mus_note noteC, note8
+                mus_note noteF, note8
+
+        mus_octave oct2; B176
+                mus_note noteG, note8
+
+        mus_octave oct3
+                mus_note noteC, note8
+                mus_note noteF, note8
+                mus_note noteD#, note8; B17B
+                mus_note noteC, note8
+
+        mus_octave oct2
+                mus_note noteA#, note8
+                mus_note noteG, note8
+                mus_note noteRst, note4; B180
+
+                mus_note noteA#, note4
+
+        mus_octave oct3
+                mus_note noteC, note8
+
+        mus_octave oct2
+                mus_note noteA#, note8; B185
+
+        mus_octave oct3
+                mus_note noteC, note8
+
+        mus_vel 11, 7
+
+        mus_octave oct2
+                mus_note noteG, note4; B18B
+                mus_note noteD, note8
+                mus_note noteF, note4_8
+                mus_note noteF#, note4
+                mus_note noteD, note8
+                mus_note noteRst, note4; B190
+
+                mus_note noteD, note4
+
+        mus_vel 11, 3
+                mus_note noteA, note8
+                mus_note noteG, note8
+                mus_note noteA, note8; B196
+
+        mus_jump 0, branch_b140
+        mus_tempo 0, 100
+        mus_jump 0, branch_b1a5
+        mus_tempo 0, 112
+		
+branch_b1a5:
+        mus_volume 119; B1A6
+        mus_duty duty75
+        mus_mod 6, 3, 4
+        db $e8
+        mus_vel 11, 3
+
+        mus_octave oct2; B1AF
+                mus_note noteD, note16
+                mus_note noteRst, note8_16
+
+                mus_note noteD, note16
+                mus_note noteRst, note4_16
+
+                mus_note noteA, note8; B1B4
+                mus_note noteG, note8
+                mus_note noteA, note8
+
+        mus_jump 0, branch_b140
+; B1BA
+
 MeetRival_md_2: ;B1BB - B232
-INCBIN "baserom.gbc",$b1bb,$b233 - $b1bb
+; B1BB
+        mus_duty duty75
+        mus_mod 10, 2, 6
+        mus_vel 12, 7
 
+        mus_octave oct3
+                mus_note noteB, note16; B1C3
+                mus_note noteA#, note16
+                mus_note noteA, note16
+                mus_note noteG#, note16
+                mus_note noteG, note8
+                mus_note noteF#, note16; B1C8
+                mus_note noteF, note16
+                mus_note noteE, note16
+                mus_note noteD#, note16
+                mus_note noteD, note4_8
+
+        mus_octave oct2; B1CD
+                mus_note noteG, note16
+                mus_note noteRst, note8_16
+
+                mus_note noteG, note16
+                mus_note noteRst, note8_16
+
+                mus_note noteD, note16; B1D2
+                mus_note noteRst, note16
+
+        mus_octave oct3
+                mus_note noteD, note8
+                mus_note noteF, note8
+                mus_note noteF#, note8; B1D7
+
+branch_b1d8:
+        mus_vel 12, 7
+                mus_note noteG, note4
+                mus_note noteD, note8
+                mus_note noteF, note4_8
+                mus_note noteF#, note4; B1DD
+                mus_note noteG, note8
+                mus_note noteRst, note4
+
+                mus_note noteG, note4
+                mus_note noteG, note8
+                mus_note noteA#, note8; B1E2
+                mus_note noteB, note8
+
+        mus_octave oct4
+                mus_note noteC, note4
+
+        mus_octave oct3
+                mus_note noteG, note8; B1E7
+                mus_note noteA#, note4_8
+                mus_note noteB, note4
+
+        mus_octave oct4
+                mus_note noteC, note8
+                mus_note noteRst, note4; B1EC
+
+                mus_note noteC, note4
+                mus_note noteC, note8
+
+        mus_octave oct3
+                mus_note noteB, note8
+
+        mus_octave oct4; B1F1
+                mus_note noteC, note8
+
+        mus_vel 11, 0
+                mus_note noteD, note1
+
+        mus_vel 11, 5
+                mus_note noteD, note4_8; B1F8
+
+        mus_vel 12, 7
+                mus_note noteF, note4
+                mus_note noteD, note8
+                mus_note noteC, note8
+                mus_note noteD, note8; B1FE
+
+        mus_vel 11, 0
+                mus_note noteC, note2
+
+        mus_vel 12, 7
+                mus_note noteC, note2
+
+        mus_octave oct3; B205
+                mus_note noteC, note8
+                mus_note noteRst, note4
+
+                mus_note noteA#, note4
+                mus_note noteG, note8
+                mus_note noteF, note8; B20A
+
+        mus_vel 11, 0
+                mus_note noteG, note1
+
+        mus_vel 11, 3
+                mus_note noteG, note8
+
+        mus_octave oct2; B211
+                mus_note noteG, note8
+                mus_note noteRst, note4
+
+                mus_note noteG, note4
+
+        mus_octave oct3
+                mus_note noteD, note8; B216
+                mus_note noteF, note8
+                mus_note noteF#, note8
+
+        mus_jump 0, branch_b1d8
+        mus_duty duty75
+        mus_mod 10, 2, 6; B221
+        mus_vel 12, 7
+
+        mus_octave oct2
+                mus_note noteG, note16
+                mus_note noteRst, note8_16
+
+                mus_note noteG, note16; B227
+                mus_note noteRst, note8_16
+
+                mus_note noteD, note16
+                mus_note noteRst, note16
+
+        mus_octave oct3
+                mus_note noteD, note8; B22C
+                mus_note noteF, note8
+                mus_note noteF#, note8
+
+        mus_jump 0, branch_b1d8
+; B232
+
 MeetRival_md_3: ;B233 - B3A6
-INCBIN "baserom.gbc",$b233,$b3a7 - $b233
+; B233
+        mus_vel 1, 4
+
+        mus_octave oct4
+                mus_note noteD, note8
+                mus_note noteRst, note8
+
+                mus_note noteC#, note8; B238
+                mus_note noteRst, note8
+
+                mus_note noteC, note8
+                mus_note noteRst, note8
+
+        mus_octave oct3
+                mus_note noteB, note8; B23D
+                mus_note noteRst, note8
+
+                mus_note noteG, note16
+                mus_note noteRst, note8_16
+
+                mus_note noteG, note16
+                mus_note noteRst, note8_16; B242
+
+                mus_note noteG, note16
+                mus_note noteRst, note16
+
+                mus_note noteG, note16
+                mus_note noteRst, note16
+
+                mus_note noteG, note16; B247
+                mus_note noteRst, note16
+
+                mus_note noteG, note16
+                mus_note noteRst, note16
+
+branch_b24b:
+                mus_note noteG, note8
+
+        mus_octave oct4; B24C
+                mus_note noteD, note8
+
+        mus_octave oct3
+                mus_note noteG, note8
+                mus_note noteRst, note8
+
+        mus_octave oct4; B251
+                mus_note noteD, note8
+
+        mus_octave oct3
+                mus_note noteG, note8
+                mus_note noteRst, note8
+
+        mus_octave oct4; B256
+                mus_note noteD, note8
+
+        mus_octave oct3
+                mus_note noteG, note8
+                mus_note noteRst, note4
+
+        mus_octave oct4; B25B
+                mus_note noteD, note4
+
+        mus_octave oct3
+                mus_note noteG, note8
+                mus_note noteA#, note8
+                mus_note noteB, note8; B260
+                mus_note noteG, note8
+
+        mus_octave oct4
+                mus_note noteC, note8
+
+        mus_octave oct3
+                mus_note noteG, note8; B265
+                mus_note noteRst, note8
+
+        mus_octave oct4
+                mus_note noteC, note8
+
+        mus_octave oct3
+                mus_note noteG, note8; B26A
+                mus_note noteRst, note8
+
+                mus_note noteB, note8
+
+        mus_octave oct4
+                mus_note noteC, note8
+                mus_note noteRst, note4; B26F
+
+                mus_note noteC, note4
+                mus_note noteC, note8
+
+        mus_octave oct3
+                mus_note noteB, note8
+                mus_note noteA, note8; B274
+                mus_note noteF#, note8
+                mus_note noteA, note8
+                mus_note noteRst, note8
+
+                mus_note noteF#, note8
+                mus_note noteA, note8; B279
+                mus_note noteF#, note8
+                mus_note noteRst, note8
+
+                mus_note noteA, note8
+                mus_note noteF#, note8
+                mus_note noteA, note8; B27E
+                mus_note noteRst, note8
+
+                mus_note noteF#, note8
+                mus_note noteA, note8
+                mus_note noteF#, note8
+
+        mus_octave oct4; B283
+                mus_note noteD, note8
+
+        mus_octave oct3
+                mus_note noteA, note8
+                mus_note noteE, note8
+
+        mus_octave oct4; B288
+                mus_note noteC, note8
+                mus_note noteRst, note8
+
+        mus_octave oct3
+                mus_note noteE, note8
+
+        mus_octave oct4; B28D
+                mus_note noteC, note8
+
+        mus_octave oct3
+                mus_note noteE, note8
+                mus_note noteF, note8
+                mus_note noteG, note8; B292
+                mus_note noteE, note8
+                mus_note noteRst, note4
+
+                mus_note noteE, note8
+
+        mus_octave oct4
+                mus_note noteC, note8; B297
+
+        mus_octave oct3
+                mus_note noteB, note8
+                mus_note noteA#, note8
+                mus_note noteA, note8
+                mus_note noteG, note8; B29C
+                mus_note noteA#, note8
+                mus_note noteRst, note8
+
+                mus_note noteG, note8
+                mus_note noteA#, note8
+                mus_note noteG, note8; B2A1
+                mus_note noteRst, note8
+
+                mus_note noteA#, note8
+                mus_note noteG, note8
+
+        mus_octave oct4
+                mus_note noteD, note8; B2A6
+
+        mus_octave oct3
+                mus_note noteG, note8
+                mus_note noteRst, note8
+
+        mus_octave oct4
+                mus_note noteD, note8; B2AB
+
+        mus_octave oct3
+                mus_note noteG, note8
+                mus_note noteRst, note8
+
+        mus_octave oct4
+                mus_note noteD, note8; B2B0
+
+        mus_jump 0, branch_b24b
+        mus_vel 1, 4
+
+        mus_octave oct3
+                mus_note noteG, note16
+                mus_note noteRst, note8_16; B2B9
+
+                mus_note noteG, note16
+                mus_note noteRst, note8_16
+
+                mus_note noteG, note16
+                mus_note noteRst, note16
+
+                mus_note noteG, note16; B2BE
+                mus_note noteRst, note16
+
+                mus_note noteG, note16
+                mus_note noteRst, note16
+
+                mus_note noteG, note16
+                mus_note noteRst, note16; B2C3
+
+        mus_jump 0, branch_b24b
+        db $f8
+        mus_tempo 1, 0
+        mus_volume 119
+        mus_duty duty50; B2CF
+        db $d5
+
+                mus_note noteB, note8
+
+        mus_octave oct2
+                mus_note noteA, note8
+                mus_note noteA, note8; B2D4
+                mus_note noteG, note8
+                mus_note noteG, note8
+                mus_note noteF, note8
+                mus_note noteE, note8
+                mus_note noteF, note8; B2D9
+                mus_note noteA, note8
+
+        mus_octave oct3
+                mus_note noteC, note4
+                mus_note noteE, note4
+
+        mus_octave oct2; B2DE
+                mus_note noteF, note4
+
+        mus_end
+; B2E0
+
+; B2E1
+branch_b2e1:
+        db $f8
+        mus_duty duty50
+        db $d5
+
+                mus_note noteRst, note8_16
+
+        mus_octave oct4; B2E6
+                mus_note noteF, note8
+                mus_note noteE, note16
+                mus_note noteRst, note16
+
+                mus_note noteD, note8
+                mus_note noteC, note16; B2EB
+                mus_note noteRst, note16
+
+        mus_octave oct3
+                mus_note noteA#, note8
+
+        mus_octave oct4
+                mus_note noteC, note8; B2F0
+                mus_note noteD, note8
+                mus_note noteE, note8
+                mus_note noteF, note4
+                mus_note noteG, note4
+                mus_note noteF, note4; B2F5
+
+        mus_end
+; B2F6
+
+; B2F7
+branch_b2f7:
+        db $f8
+        db $d5
+
+                mus_note noteC#, note16
+
+        mus_octave oct4
+                mus_note noteC, note16; B2FB
+                mus_note noteRst, note16
+
+        mus_octave oct3
+                mus_note noteF, note8
+
+        mus_octave oct4
+                mus_note noteC, note16; B300
+                mus_note noteRst, note16
+
+        mus_octave oct3
+                mus_note noteA#, note16
+                mus_note noteRst, note16
+
+                mus_note noteA, note16; B305
+                mus_note noteRst, note16
+
+                mus_note noteG, note16
+                mus_note noteRst, note16
+
+                mus_note noteF, note16
+                mus_note noteRst, note16; B30A
+
+                mus_note noteE, note16
+                mus_note noteRst, note16
+
+        mus_octave oct4
+                mus_note noteF, note16
+                mus_note noteRst, note8_16; B30F
+
+                mus_note noteC, note16
+                mus_note noteRst, note8_16
+
+        mus_octave oct3
+                mus_note noteF, note8
+                mus_note noteRst, note8; B314
+
+        mus_end
+; B315
+
+; B316
+branch_b316:
+        db $f8
+        mus_tempo 1, 0
+        mus_volume 119
+        mus_duty duty50
+        db $e8; B31E
+        db $d5
+
+                mus_note noteB, note4_16
+
+        mus_octave oct3
+                mus_note noteD, note4
+                mus_note noteC, note4; B323
+
+        mus_octave oct2
+                mus_note noteA, note2
+
+        db $d5
+
+                mus_note noteB, note8_16
+
+        mus_octave oct3; B328
+                mus_note noteD#, note8
+                mus_note noteD#, note8
+                mus_note noteD, note8
+                mus_note noteC, note8
+                mus_note noteC, note8; B32D
+
+        mus_octave oct2
+                mus_note noteA#, note8
+
+        db $d5
+
+                mus_note noteB, note4_16
+
+        mus_octave oct3; B332
+                mus_note noteC, note2
+
+        mus_end
+; B334
+
+; B335
+branch_b335:
+        db $f8
+        mus_mod 8, 2, 7
+        mus_duty duty50
+        db $d5
+
+                mus_note noteRst, note4_8; B33C
+
+        mus_octave oct3
+                mus_note noteA, note4
+                mus_note noteF, note4
+                mus_note noteC, note2
+
+        db $d5; B341
+
+                mus_note noteRst, note8_16
+
+                mus_note noteA#, note8
+                mus_note noteA#, note8
+                mus_note noteA#, note8
+                mus_note noteG, note8; B346
+                mus_note noteG, note8
+                mus_note noteA#, note8
+
+        db $d5
+
+                mus_note noteRst, note4_16
+
+                mus_note noteA, note2; B34B
+
+        mus_end
+; B34C
+
+; B34D
+branch_b34d:
+        db $f8
+        db $d5
+
+                mus_note noteC#, note16
+
+        mus_octave oct4
+                mus_note noteF, note4; B351
+                mus_note noteD#, note4
+                mus_note noteC, note2
+                mus_note noteD#, note16
+                mus_note noteRst, note16
+
+                mus_note noteD#, note16; B356
+                mus_note noteRst, note16
+
+                mus_note noteE, note16
+                mus_note noteRst, note16
+
+                mus_note noteF, note16
+                mus_note noteRst, note16; B35B
+
+                mus_note noteF, note16
+                mus_note noteRst, note16
+
+                mus_note noteG, note16
+                mus_note noteRst, note16
+
+                mus_note noteA, note2; B360
+
+        mus_end
+; B361
+
+; B362
+branch_b362:
+        db $f8
+        mus_tempo 1, 0
+        mus_volume 119
+        mus_duty duty50
+        db $e8; B36A
+        db $d5
+
+                mus_note noteA#, note4_16
+
+        mus_octave oct2
+                mus_note noteA#, note4
+
+        db $d5; B36F
+
+                mus_note noteB, note8
+
+        mus_octave oct3
+                mus_note noteC, note8
+                mus_note noteC, note16
+                mus_note noteC, note16; B374
+
+        db $d5
+
+                mus_note noteA#, note4_16
+                mus_note noteD#, note4
+
+        db $d5
+
+                mus_note noteB, note8; B379
+                mus_note noteF, note8
+                mus_note noteF, note16
+                mus_note noteF, note16
+
+        db $d5
+
+                mus_note noteB, note4_16; B37E
+                mus_note noteA#, note2
+
+        mus_end
+; B380
+
+; B381
+branch_b381:
+        db $f8
+        mus_mod 4, 2, 3
+        mus_duty duty50
+        db $d5
+        db $d1; B388
+
+        mus_octave oct3
+                mus_note noteG, note8
+                mus_note noteG, note16
+                mus_note noteG, note16
+
+        db $d5; B38D
+
+                mus_note noteRst, note4_16
+
+                mus_note noteD#, note4
+
+        db $d5
+        db $d1
+
+                mus_note noteG#, note8; B392
+                mus_note noteG#, note16
+                mus_note noteG#, note16
+                mus_note noteA#, note8
+                mus_note noteA#, note16
+                mus_note noteA#, note16; B397
+
+        db $d5
+
+                mus_note noteRst, note4_16
+
+        mus_octave oct4
+                mus_note noteD#, note2
+
+        mus_end; B39C
+; B39C
+
+; B39D
+branch_b39d:
+        db $f8
+        db $d5
+
+                mus_note noteC#, note16
+
+        mus_octave oct3
+                mus_note noteD#, note4; B3A1
+                mus_note noteG#, note4
+                mus_note noteG, note4
+                mus_note noteF, note4
+                mus_note noteD#, note2
+
+        mus_end; B3A6
+; B3A6
 
 ;SS Anne
 SSAnne_md_1: ;B3A7 - B418
--- a/music/pokeredmusicdisasm/AbstractData.h
+++ b/music/pokeredmusicdisasm/AbstractData.h
@@ -10,11 +10,11 @@
     AbstractData();
 
     virtual std::string GenAsm(); // Generate Assembly Output
-    virtual bool IsValid(unsigned char* byte); // Check for byte validity
     virtual bool Parse(unsigned char* byte); // Parse Given Data
-    virtual unsigned int Arguments(); // Number of arguments taken
+	virtual bool GetError(); // Get Error (No Write, Error is read only)
 
-    virtual bool GetError(); // Get Error (No Write, Error is read only)
+	virtual bool IsValid(unsigned char* byte); // Check for byte validity
+    virtual unsigned int Arguments(); // Number of arguments taken
 
 protected:
     bool error; // Whether there's an error in parsing or not
--- a/music/pokeredmusicdisasm/Parser.cpp
+++ b/music/pokeredmusicdisasm/Parser.cpp
@@ -18,6 +18,7 @@
 	fileLength = 0;
 	filePos = 0;
 	stop = false;
+	stopAddress = 0;
 
 	SetFilename(filename);
 }
@@ -63,7 +64,9 @@
 
 	for(unsigned int i = 0; i < parsedString.size(); i++)
 	{
-		tmpStr += parsedString[i] + "\n";
+		// Ensure each line isn't already a new-line, this prevents double or tripple empty lines from piling up
+		if(parsedString[i] != "\n") tmpStr += parsedString[i] + "\n";
+		else tmpStr += parsedString[i];
 	}
 
 	return tmpStr;
@@ -87,6 +90,8 @@
 	// Read filedata
 	tmpFile.read(rawBytes, fileLength);
 	tmpFile.close();
+
+	rawBytesFixed = (unsigned char*)rawBytes;
 }
 
 // Code Operations
@@ -96,114 +101,165 @@
 	ParseNext();
 }
 
+template<class T>
+bool Parser::ParseData(unsigned int& pos, bool reado)
+{
+	// Create the class to use if correct and a dummy class for validating
+	T* tmpC = 0;
+	T dummy;
+
+	// If the bytes are this data type then create and save it
+	if(dummy.IsValid(&rawBytesFixed[pos]))
+	{
+		// Ensure this whole opperation isn't read-only (just peeking)
+		if(!reado)
+		{
+			// Initialize the class
+			tmpC = new T(&rawBytesFixed[pos]);
+
+			// Push it onto the stack and it's assembly generation onto the output class
+			parsedBytes.push_back(tmpC);	// 
+			parsedString.push_back(tmpC->GenAsm());
+
+			// If the class had any arguments, increment the counter that much forward
+			pos += tmpC->Arguments();
+		}
+		return true;	// Let the code know this class was valid
+	}
+
+	return false;	// Let the code know this class wasn't valid
+}
+
 void Parser::ParseNext() // Parses the block immidiately following
 {
 	stringstream tmpStr;
-	unsigned char* rawBytesFixed = (unsigned char*)rawBytes;
 	stop = false;
 
 	// Smart generation
-	bool indent = false;
-	bool firstNonNote = false;	// First byte wasn't a note or octacve switch, add ";Setup" comment
-	bool firstNote = false;	// First note or octave
+	bool firstNonNote = false;	// (unused so far)First byte wasn't a note or octacve switch, add ";Setup" comment
+	bool firstNote = false;	// (unused so far) First note or octave
+	unsigned char lDataType = DATA_NA;
 
 	stringstream pos;
 	pos << "; " << hex << uppercase << (unsigned int)filePos;
 	parsedString.push_back(pos.str());
 
+	unsigned int count = 1;	// Counter for processed instructions
 	for(unsigned int i = filePos; (i <= fileLength) && (stop == false); i++)
 	{
-		// There's a way to make this block shorter but for now it does it's job
+		// First peek to see what kind of data it is, then perform any pre and post setup
+		if(ParseData<Call>(i, true))
+		{
+			if(lDataType == DATA_NOTE) parsedString.push_back("\n"); // Insert a newline after notes
 
-		// Check to see if it's the correct data type and if so then use it
-		if(tmpCall.IsValid(&rawBytesFixed[i])) // Should have made IsValid static
+			ParseData<Call>(i);
+			lDataType = DATA_CALL;
+		}
+		else if(ParseData<Duty>(i, true))
 		{
-			// Call data type
+			if(lDataType == DATA_NOTE) parsedString.push_back("\n"); // Insert a newline after notes
 
-			// Create data type then move the increment pointer further up as needed
-			parsedBytes.push_back(new Call(&rawBytesFixed[i]));
-			parsedString.push_back(parsedBytes[parsedBytes.size() - 1]->GenAsm());
-			i += tmpCall.Arguments(); // should have made Arguments static
-
-			Call* _tmp = (Call*)parsedBytes[parsedBytes.size() - 1];
+			ParseData<Duty>(i);
+			lDataType = DATA_DUTY;
 		}
-		else if(tmpDuty.IsValid(&rawBytesFixed[i]))
+		else if(ParseData<Jump>(i, true))
 		{
-			// Duty data type
-			parsedBytes.push_back(new Duty(&rawBytesFixed[i]));
-			parsedString.push_back(parsedBytes[parsedBytes.size() - 1]->GenAsm());
-			i += tmpDuty.Arguments();
+			if(lDataType == DATA_NOTE) parsedString.push_back("\n"); // Insert a newline after notes
+
+			ParseData<Jump>(i);
+			lDataType = DATA_JUMP;
 		}
-		else if(tmpJump.IsValid(&rawBytesFixed[i]))
+		else if(ParseData<Modulation>(i, true))
 		{
-			// Jump data type
-			parsedBytes.push_back(new Jump(&rawBytesFixed[i]));
-			parsedString.push_back(parsedBytes[parsedBytes.size() - 1]->GenAsm());
-			i += tmpJump.Arguments();
+			if(lDataType == DATA_NOTE) parsedString.push_back("\n"); // Insert a newline after notes
 
-			Jump* _tmp = (Jump*)parsedBytes[parsedBytes.size() - 1];
+			ParseData<Modulation>(i);
+			lDataType = DATA_MODULATION;
 		}
-		else if(tmpModulation.IsValid(&rawBytesFixed[i]))
+		else if(ParseData<Note>(i, true))
 		{
-			// Modulation data type
-			parsedBytes.push_back(new Modulation(&rawBytesFixed[i]));
-			parsedString.push_back(parsedBytes[parsedBytes.size() - 1]->GenAsm());
-			i += tmpModulation.Arguments();
+			 // Insert a newline after certain types
+			if((lDataType == DATA_UNKCODE) ||
+				(lDataType == DATA_UNKEB)) parsedString.push_back("\n");
+
+			// If the previous item was a rest note then insert a new line
+			else if(lDataType == DATA_NOTE)
+			{
+				Note* _tmpNote = (Note*)parsedBytes[parsedBytes.size() - 1];
+				if(_tmpNote->GetPitch() == _tmpNote->noteRst) parsedString.push_back("\n");
+			}
+
+			ParseData<Note>(i);
+
+			// Further indent each note
+			parsedString[parsedString.size() - 1] = "\t" + parsedString[parsedString.size() - 1];
+			lDataType = DATA_NOTE;
 		}
-		else if(tmpNote.IsValid(&rawBytesFixed[i]))
+		else if(ParseData<Octave>(i, true))
 		{
-			// Note data type
-			parsedBytes.push_back(new Note(&rawBytesFixed[i]));
-			parsedString.push_back(parsedBytes[parsedBytes.size() - 1]->GenAsm());
-			i += tmpNote.Arguments();
+			// Insert new-line if previous line isn't a newline
+			if(parsedString[parsedString.size() - 1] != "\n") parsedString.push_back("\n");
+
+			ParseData<Octave>(i);
+			lDataType = DATA_OCTAVE;
 		}
-		else if(tmpOctave.IsValid(&rawBytesFixed[i]))
+		else if(ParseData<Tempo>(i, true))
 		{
-			// Octave data type
-			parsedBytes.push_back(new Octave(&rawBytesFixed[i]));
-			parsedString.push_back("\n" + parsedBytes[parsedBytes.size() - 1]->GenAsm());
-			i += tmpOctave.Arguments();
+			if(lDataType == DATA_NOTE) parsedString.push_back("\n"); // Insert a newline after notes
+
+			ParseData<Tempo>(i);
+			lDataType = DATA_TEMPO;
 		}
-		else if(tmpStop.IsValid(&rawBytesFixed[i]))
+		else if(ParseData<Velocity>(i, true))
 		{
-			// Stop data type
-			parsedBytes.push_back(new Stop(&rawBytesFixed[i]));
-			parsedString.push_back(parsedBytes[parsedBytes.size() - 1]->GenAsm());
-			i += tmpStop.Arguments();
+			if(lDataType == DATA_NOTE) parsedString.push_back("\n"); // Insert a newline after notes
 
-			stop = true;	// Stop all further processing, we've reached the end of the song
+			ParseData<Velocity>(i);
+			lDataType = DATA_VELOCITY;
 		}
-		else if(tmpTempo.IsValid(&rawBytesFixed[i]))
+		else if(ParseData<Volume>(i, true))
 		{
-			// Tempo data type
-			parsedBytes.push_back(new Tempo(&rawBytesFixed[i]));
-			parsedString.push_back(parsedBytes[parsedBytes.size() - 1]->GenAsm());
-			i += tmpTempo.Arguments();
+			if(lDataType == DATA_NOTE) parsedString.push_back("\n"); // Insert a newline after notes
+
+			ParseData<Volume>(i);
+			lDataType = DATA_VOLUME;
 		}
-		else if(tmpVelocity.IsValid(&rawBytesFixed[i]))
+		else if(ParseData<UnkEB>(i, true))	// The opcode is 0xEB which is unknown and takes a 1-byte argument
 		{
-			// Velocity data type
-			parsedBytes.push_back(new Velocity(&rawBytesFixed[i]));
-			parsedString.push_back(parsedBytes[parsedBytes.size() - 1]->GenAsm());
-			i += tmpVelocity.Arguments();
+			if(lDataType == DATA_NOTE) parsedString.push_back("\n"); // Insert a newline after notes
+
+			ParseData<UnkEB>(i);
+			lDataType = DATA_UNKEB;
 		}
-		else if(tmpVolume.IsValid(&rawBytesFixed[i]))
+		else if(ParseData<Stop>(i, true))
 		{
-			// Volume data type
-			parsedBytes.push_back(new Volume(&rawBytesFixed[i]));
-			parsedString.push_back(parsedBytes[parsedBytes.size() - 1]->GenAsm());
-			i += tmpVolume.Arguments();
+			if(lDataType == DATA_NOTE) parsedString.push_back("\n"); // Insert a newline after notes
+
+			ParseData<Stop>(i);
+			stop = true; // Raise the stop flag informing the parser to stop
+			lDataType = DATA_STOP;
 		}
 		else
 		{
-			// Unknown code
-			stringstream unkCode;
-			short tmpByte = (short)rawBytesFixed[i];
-			unkCode << "db $" << hex << uppercase << (short)rawBytesFixed[i];
-			parsedString.push_back(unkCode.str());
+			if(lDataType == DATA_NOTE) parsedString.push_back("\n"); // Insert a newline after notes
+
+			ParseData<UnkCode>(i);	// The opcode is unknown - process the raw byte and move on
+			lDataType = DATA_UNKCODE;
 		}
 
+		// Put everything tabbed over at least 1 time to fix some weird RGBDS bug by pre-pending a tab character
+		parsedString[parsedString.size() - 1] = "\t" + parsedString[parsedString.size() - 1];
+
+		// Append File Position in hexidecimal at end of line every 5 instructions
+		if((count % 5) == 0)
+		{
+			stringstream _tmpCount;
+			_tmpCount << hex << uppercase << i;
+			parsedString[parsedString.size() - 1] = parsedString[parsedString.size() - 1] + "; " + _tmpCount.str();
+		}
+
 		filePos = i;
+		count++;
 
 		// If the stop address parameter is set, break when we get there
 		if( (stopAddress != 0) && (i >= stopAddress) ) break;
--- a/music/pokeredmusicdisasm/Parser.h
+++ b/music/pokeredmusicdisasm/Parser.h
@@ -13,11 +13,12 @@
 #include "Modulation.h"
 #include "Note.h"
 #include "Octave.h"
-#include "Parser.h"
 #include "Stop.h"
 #include "Tempo.h"
 #include "Velocity.h"
 #include "Volume.h"
+#include "UnkCode.h"
+#include "UnkEB.h"
 
 // This is the final class, it takes all of the data types, abstract class, and helper functions and uses them
 // for parsing
@@ -49,6 +50,27 @@
 	void Parse(unsigned int offset);
 	void ParseNext(); // Parses the block immidiately following
 
+	// Templates
+	template<class T>
+	bool ParseData(unsigned int& pos, bool reado = false);
+
+	const enum dataType : unsigned char
+	{
+		DATA_NA,
+		DATA_CALL,
+		DATA_DUTY,
+		DATA_JUMP,
+		DATA_MODULATION,
+		DATA_NOTE,
+		DATA_OCTAVE,
+		DATA_STOP,
+		DATA_TEMPO,
+		DATA_UNKCODE,
+		DATA_UNKEB,
+		DATA_VELOCITY,
+		DATA_VOLUME
+	};
+
 private:
 	std::string filename;
 	std::vector<AbstractData*> parsedBytes;
@@ -55,6 +77,7 @@
 	std::vector<std::string> parsedString;
 
 	char* rawBytes;
+	unsigned char* rawBytesFixed;
 	unsigned int fileLength;
 	unsigned int filePos;
 	bool stop;
@@ -61,18 +84,6 @@
 
 	// Optional Settings
 	unsigned int stopAddress;
-
-	// A lot of tmp classes
-	Call tmpCall;
-	Duty tmpDuty;
-	Jump tmpJump;
-	Modulation tmpModulation;
-	Note tmpNote;
-	Octave tmpOctave;
-	Stop tmpStop;
-	Tempo tmpTempo;
-	Velocity tmpVelocity;
-	Volume tmpVolume;
 };
 
 #endif
\ No newline at end of file
--- /dev/null
+++ b/music/pokeredmusicdisasm/UnkCode.cpp
@@ -1,0 +1,67 @@
+#include <sstream>
+
+#include "Call.h"
+#include "Duty.h"
+#include "Jump.h"
+#include "Modulation.h"
+#include "Note.h"
+#include "Octave.h"
+#include "Stop.h"
+#include "Tempo.h"
+#include "Velocity.h"
+#include "Volume.h"
+
+#include "UnkCode.h"
+
+using namespace std;
+
+UnkCode::UnkCode()
+{
+	code = 0;
+}
+
+UnkCode::UnkCode(unsigned char* byte)
+{
+	code = 0;
+	Parse(byte);
+}
+
+UnkCode::UnkCode(unsigned char code, bool)
+{
+	SetCode(code);
+}
+
+// Getters / Setters
+unsigned char UnkCode::GetCode()
+{
+	return code;
+}
+
+void UnkCode::SetCode(unsigned char value)
+{
+	code = value;
+}
+
+// Re-implemented
+string UnkCode::GenAsm()
+{
+	stringstream tmpAsmOut;
+	tmpAsmOut << "db $" << hex << (short)code;
+	return tmpAsmOut.str();
+}
+
+bool UnkCode::Parse(unsigned char* byte)
+{
+	code = byte[0];
+	return true;
+}
+
+bool UnkCode::IsValid(unsigned char* byte)
+{
+	return true;
+}
+
+unsigned int UnkCode::Arguments()
+{
+	return 0;
+}
\ No newline at end of file
--- /dev/null
+++ b/music/pokeredmusicdisasm/UnkCode.h
@@ -1,0 +1,29 @@
+#ifndef UNKCODE_H
+#define UNKCODE_H
+
+#include "AbstractData.h"
+
+// Represents an unknown opcode
+class UnkCode : public AbstractData
+{
+public:
+	// Constructors
+	UnkCode();
+	UnkCode(unsigned char* byte); // Parse Immidiately
+	UnkCode(unsigned char code, bool); // Set Value
+
+	// Getters / Setters
+	unsigned char GetCode();
+	void SetCode(unsigned char value);
+
+	// Re-implemented
+	virtual std::string GenAsm();
+	virtual bool Parse(unsigned char* byte);
+	virtual bool IsValid(unsigned char* byte);
+	virtual unsigned int Arguments();
+
+private:
+	unsigned char code;
+};
+
+#endif
\ No newline at end of file
--- /dev/null
+++ b/music/pokeredmusicdisasm/UnkEB.cpp
@@ -1,0 +1,69 @@
+#include <sstream>
+
+#include "Call.h"
+#include "Duty.h"
+#include "Jump.h"
+#include "Modulation.h"
+#include "Note.h"
+#include "Octave.h"
+#include "Stop.h"
+#include "Tempo.h"
+#include "Velocity.h"
+#include "Volume.h"
+
+#include "UnkEB.h"
+
+using namespace std;
+
+UnkEB::UnkEB()
+{
+	param = 0;
+}
+
+UnkEB::UnkEB(unsigned char* byte)
+{
+	param = 0;
+	Parse(byte);
+}
+
+UnkEB::UnkEB(unsigned char code, bool)
+{
+	SetParam(code);
+}
+
+// Getters / Setters
+unsigned char UnkEB::GetParam()
+{
+	return param;
+}
+
+void UnkEB::SetParam(unsigned char value)
+{
+	param = value;
+}
+
+// Re-implemented
+string UnkEB::GenAsm()
+{
+	stringstream tmpAsmOut;
+	tmpAsmOut << hex << "db $" << (short)0xEB << ", $" << (short)param;
+	return tmpAsmOut.str();
+}
+
+bool UnkEB::Parse(unsigned char* byte)
+{
+	param = byte[1];
+	return true;
+}
+
+bool UnkEB::IsValid(unsigned char* byte)
+{
+	if(byte[0] == 0xEB) return true;
+	else return false;
+}
+
+unsigned int UnkEB::Arguments()
+{
+	// 1 1-Byte param
+	return 1;
+}
\ No newline at end of file
--- /dev/null
+++ b/music/pokeredmusicdisasm/UnkEB.h
@@ -1,0 +1,29 @@
+#ifndef UNKEB_H
+#define UNKEB_H
+
+#include "AbstractData.h"
+
+// Represents an unknown opcode
+class UnkEB : public AbstractData
+{
+public:
+	// Constructors
+	UnkEB();
+	UnkEB(unsigned char* byte); // Parse Immidiately
+	UnkEB(unsigned char code, bool); // Set Value
+
+	// Getters / Setters
+	unsigned char GetParam();
+	void SetParam(unsigned char value);
+
+	// Re-implemented
+	virtual std::string GenAsm();
+	virtual bool Parse(unsigned char* byte);
+	virtual bool IsValid(unsigned char* byte);
+	virtual unsigned int Arguments();
+
+private:
+	unsigned char param;
+};
+
+#endif
\ No newline at end of file