• Our software update is now concluded. You will need to reset your password to log in. In order to do this, you will have to click "Log in" in the top right corner and then "Forgot your password?".
  • Forum moderator applications are now open! Click here for details.
  • Welcome to PokéCommunity! Register now and join one of the best fan communities on the 'net to talk Pokémon and more! We are not affiliated with The Pokémon Company or Nintendo.

GBA Music Looping

Status
Not open for further replies.

clonex25

Just droppin' by...
74
Posts
16
Years
WARNING:
The following steps may or may not affect the performance of your operating system. These may include DLL-related errors.
USE IT AT YOUR OWN RISK (But dont tell me I didn't warn you).

CREDITS:
Teh Baro, for posting the code primer (without that post, I couldn't get the idea of manual S file editing)
http://www.pokecommunity.com/showthread.php?p=2936767#post2936767
Kawa's Sappy bytecode help file

LET'S GET STARTED

- Before anything else, convert your custom MIDI to a GBA S file through the MIDI2GBA tool. After conversion, just open the text editor (you may choose WordPad or NotePad), Click File>Open, choose "All Documents" in "Files of Type" option, and select the S File.

REMINDERS: Associating S files with the text editor may affect the performance of Sappy especially in its assembling feature. You may get a permanent kernel32 error upon assembly.

Let's familiarize ourselves with the code (The items necessary for the looping procedure will be boldfaced):

Code:
 	.include "MPlayDef.s"

	.equ	frlgmbattlb_grp, voicegroup000
	.equ	frlgmbattlb_pri, 0
	.equ	frlgmbattlb_rev, 0
	.equ	frlgmbattlb_mvl, 127
	.equ	frlgmbattlb_key, 0
	.equ	frlgmbattlb_tbs, 1
	.equ	frlgmbattlb_exg, 0
	.equ	frlgmbattlb_cmp, 1

	.section .rodata
	.global	frlgmbattlb
	.align	2

@**************** Track 1 (Midi-Chn.5) ****************@

[B]frlgmbattlb_1:   @ ------> label [/B]
	.byte	KEYSH , frlgmbattlb_key+0
[B]@ 000   -------- @ ------> measure number [/B]
	.byte	TEMPO , 182*frlgmbattlb_tbs/2
	.byte		VOICE , 33
	.byte		VOL   , 127*frlgmbattlb_mvl/mxv
	.byte		N06   , Ds1 , v104
	.byte	W12
	.byte		N06   
	.byte	W06
	.byte		        Dn1 
	.byte	W06
	.byte		        En1 
	.byte	W12
	.byte		N06   
	.byte	W06
	.byte		        Dn1 
	.byte	W06
	.byte		        Fn1 
	.byte	W12
	.byte		N06   
	.byte	W06
	.byte		        Dn1 
	.byte	W06
	.byte		        Fs1 
	.byte	W12
	.byte		N06   
	.byte	W06
	.byte		        Dn1 
	.byte	W06
@ 001   ----------------------------------------
	.byte		        Gn1 
	.byte	W12
	.byte		N06   
	.byte	W06
	.byte		        Dn1 
	.byte	W06
	.byte		        Gs1 
	.byte	W12
	.byte		N06   
	.byte	W06
	.byte		        Dn1 
	.byte	W06
	.byte		        An1 
	.byte	W12
	.byte		N06   
	.byte	W06
	.byte		        Dn1 
	.byte	W06
	.byte		N12   , As1 
	.byte	W12
	.byte		        An1 
	.byte	W12
@ 002   ----------------------------------------
[B]frlgmbattlb_1_002: @ ------> a pattern label [/B]
	.byte		N12   , Dn1 , v116
	.byte	W12
	.byte		        An1 
	.byte	W12
	.byte		        Dn1 
	.byte	W12
	.byte		        An1 
	.byte	W12
	.byte		        Dn1 
	.byte	W12
	.byte		        An1 
	.byte	W12
	.byte		        Dn2 
	.byte	W12
	.byte		        An1 
	.byte	W12
	.byte	PEND
@ 003   ----------------------------------------
	.byte		        Dn1 
	.byte	W12
	.byte		        An1 
	.byte	W12
	.byte		        Dn2 
	.byte	W12
	.byte		        An1 
	.byte	W12
	.byte		        As1 
	.byte	W12
	.byte		        Cn2 
	.byte	W12
	.byte		        Gn1 
	.byte	W12
	.byte		        An1 
	.byte	W12
@ 004   ----------------------------------------
	.byte		        Ds1 
	.byte	W12
	.byte		        As1 
	.byte	W12
	.byte		        Ds1 
	.byte	W12
	.byte		N32   , Ds2 
	.byte	W08
	.byte		BEND  , c_v-2
	.byte	W01
	.byte		        c_v-8
	.byte	W02
	.byte		        c_v-10
	.byte	W01
	.byte		        c_v-15
	.byte	W02
	.byte		        c_v-17
	.byte	W01
	.byte		        c_v-21
	.byte	W02
	.byte		        c_v-23
	.byte	W01
	.byte		        c_v-29
	.byte	W02
	.byte		        c_v-31
	.byte	W01
	.byte		        c_v-39
	.byte	W02
	.byte		        c_v-40
	.byte	W01
	.byte		        c_v-44
	.byte	W02
	.byte		        c_v-46
	.byte	W01
	.byte		        c_v-52
	.byte	W02
	.byte		        c_v-54
	.byte	W01
	.byte		        c_v-60
	.byte	W02
	.byte		        c_v-61
	.byte	W01
	.byte		        c_v-63
	.byte	W02
	.byte		        c_v-51
	.byte	W01
	.byte		        c_v+0
	.byte		N12   , Ds1 
	.byte	W12
	.byte		        As1 
	.byte	W12
@ 005   ----------------------------------------
	.byte		        Ds1 
	.byte	W12
	.byte		        As1 
	.byte	W12
	.byte		        Ds2 
	.byte	W12
	.byte		        Cn2 
	.byte	W12
	.byte		N12   
	.byte	W12
	.byte		        Dn2 
	.byte	W12
	.byte		        As1 
	.byte	W12
	.byte		        Cn2 
	.byte	W12
@ 006   ----------------------------------------
	.byte	PATT
	 .word	frlgmbattlb_1_002
@ 007   ----------------------------------------
	.byte		N12   , Dn1 , v116
	.byte	W12
	.byte		        An1 
	.byte	W12
	.byte		        Dn2 
	.byte	W12
	.byte		        An1 
	.byte	W12
	.byte		N12   
	.byte	W12
	.byte		        As1 
	.byte	W12
	.byte		        Gn1 
	.byte	W12
	.byte		        An1 
	.byte	W12
@ 008   ----------------------------------------
	.byte		        Ds1 
	.byte	W12
	.byte		        As1 
	.byte	W12
	.byte		N06   , Dn1 
	.byte	W06
	.byte		        Ds1 
	.byte	W06
	.byte		        Gn1 
	.byte	W06
	.byte		        As1 
	.byte	W06
	.byte		N12   , Ds2 
	.byte	W12
	.byte		        Dn2 
	.byte	W12
	.byte		        Cn2 
	.byte	W12
	.byte		        Dn2 
	.byte	W12
@ 009   ----------------------------------------
	.byte		        Ds1 
	.byte	W12
	.byte		        As1 
	.byte	W12
	.byte		        Dn2 
	.byte	W12
	.byte		        Ds2 
	.byte	W12
	.byte		N06   , Ds1 
	.byte	W06
	.byte		        Gn1 
	.byte	W06
	.byte		        As1 
	.byte	W06
	.byte		        Cn2 
	.byte	W06
	.byte		N12   , Ds2 
	.byte	W12
	.byte		        Cn2 
	.byte	W12
@ 010   ----------------------------------------
frlgmbattlb_1_010:
	.byte		N12   , Dn1 , v116
	.byte	W12
	.byte		        An1 
	.byte	W12
	.byte		        Dn1 
	.byte	W12
	.byte		        An1 
	.byte	W12
	.byte		        Dn2 
	.byte	W12
	.byte		        An1 
	.byte	W12
	.byte		N06   , Gn1 
	.byte	W06
	.byte		        Fs1 
	.byte	W06
	.byte		        En1 
	.byte	W06
	.byte		        Ds1 
	.byte	W06
	.byte	PEND
@ 011   ----------------------------------------
frlgmbattlb_1_011:
	.byte		N12   , Dn1 , v116
	.byte	W12
	.byte		        An1 
	.byte	W12
	.byte		        Dn1 
	.byte	W12
	.byte		        An1 
	.byte	W12
	.byte		        Dn1 
	.byte	W12
	.byte		        An1 
	.byte	W12
	.byte		        As1 
	.byte	W12
	.byte		        An1 
	.byte	W12
	.byte	PEND
@ 012   ----------------------------------------
frlgmbattlb_1_012:
	.byte		N12   , Ds1 , v116
	.byte	W12
	.byte		        As1 
	.byte	W12
	.byte		        Ds1 
	.byte	W12
	.byte		        An1 
	.byte	W12
	.byte		        Ds1 
	.byte	W12
	.byte		        Gs1 
	.byte	W12
	.byte		        Ds1 
	.byte	W12
	.byte		        Gn1 
	.byte	W12
	.byte	PEND
@ 013   ----------------------------------------
frlgmbattlb_1_013:
	.byte		N12   , Ds1 , v116
	.byte	W12
	.byte		        Fs1 
	.byte	W12
	.byte		        Ds1 
	.byte	W12
	.byte		        Fn1 
	.byte	W12
	.byte		        Cn2 
	.byte	W12
	.byte		        Dn2 
	.byte	W12
	.byte		        As1 
	.byte	W12
	.byte		        Cn2 
	.byte	W12
	.byte	PEND
@ 014   ----------------------------------------
frlgmbattlb_1_014:
	.byte		N24   , Dn1 , v116
	.byte	W24
	.byte		N12   , An1 
	.byte	W12
	.byte		N18   , Dn1 
	.byte	W24
	.byte		N12   
	.byte	W12
	.byte		        An1 
	.byte	W12
	.byte		        Dn1 
	.byte	W12
	.byte	PEND
@ 015   ----------------------------------------
frlgmbattlb_1_015:
	.byte		N12   , Dn1 , v116
	.byte	W12
	.byte		        An1 
	.byte	W24
	.byte		N12   
	.byte	W24
	.byte		N12   
	.byte	W12
	.byte		        Gs1 
	.byte	W12
	.byte		N06   , An1 
	.byte	W12
	.byte	PEND
@ 016   ----------------------------------------
frlgmbattlb_1_016:
	.byte		N12   , Dn1 , v116
	.byte	W12
	.byte		        An1 
	.byte	W24
	.byte		N12   
	.byte	W24
	.byte		N12   
	.byte	W12
	.byte		        Gs1 
	.byte	W12
	.byte		        An1 
	.byte	W12
	.byte	PEND
@ 017   ----------------------------------------
frlgmbattlb_1_017:
	.byte		N24   , Dn1 , v108
	.byte	W24
	.byte		        Cn2 
	.byte	W24
	.byte		        Cn1 
	.byte	W24
	.byte		N18   , Gn1 
	.byte	W18
	.byte		N03   , Fn1 
	.byte	W03
	.byte		        En1 
	.byte	W03
	.byte	PEND
@ 018   ----------------------------------------
frlgmbattlb_1_018:
	.byte		N24   , Ds1 , v116
	.byte	W24
	.byte		N12   , As1 
	.byte	W12
	.byte		N18   , Ds1 
	.byte	W24
	.byte		N12   
	.byte	W12
	.byte		N03   , As1 
	.byte	W12
	.byte		N12   , Cn1 
	.byte	W12
	.byte	PEND
@ 019   ----------------------------------------
frlgmbattlb_1_019:
	.byte		N12   , Ds2 , v116
	.byte	W12
	.byte		N06   , Gn1 
	.byte	W12
	.byte		N12   , As1 
	.byte	W12
	.byte		N06   , Ds2 
	.byte	W12
	.byte		        Ds1 
	.byte	W06
	.byte		        Gn1 
	.byte	W06
	.byte		        An1 
	.byte	W06
	.byte		        As1 
	.byte	W06
	.byte		N12   , Ds2 
	.byte	W12
	.byte		        Cs2 
	.byte	W12
	.byte	PEND
@ 020   ----------------------------------------
frlgmbattlb_1_020:
	.byte		N12   , An1 , v116
	.byte	W12
	.byte		        Dn1 
	.byte	W12
	.byte		        An1 
	.byte	W12
	.byte		N06   , Dn1 
	.byte	W12
	.byte		N12   
	.byte	W12
	.byte		N06   , An1 
	.byte	W12
	.byte		N12   
	.byte	W12
	.byte		        Gs1 
	.byte	W12
	.byte	PEND
@ 021   ----------------------------------------
frlgmbattlb_1_021:
	.byte		N12   , Dn1 , v116
	.byte	W12
	.byte		        An1 
	.byte	W12
	.byte		        Dn1 
	.byte	W12
	.byte		        An1 
	.byte	W12
	.byte		N06   , Cs2 
	.byte	W06
	.byte		        Dn2 
	.byte	W06
	.byte		        As1 
	.byte	W06
	.byte		        Cn2 
	.byte	W06
	.byte		        An1 
	.byte	W06
	.byte		        Gs1 
	.byte	W06
	.byte		        Gn1 
	.byte	W06
	.byte		        Fs1 
	.byte	W06
	.byte	PEND
@ 022   ----------------------------------------
frlgmbattlb_1_022:
	.byte		N06   , Cn1 , v116
	.byte	W12
	.byte		N12   
	.byte	W24
	.byte		N12   
	.byte	W12
	.byte		        Cn2 
	.byte	W12
	.byte		N18   , Cn1 
	.byte	W24
	.byte		N06   
	.byte	W12
	.byte	PEND
@ 023   ----------------------------------------
frlgmbattlb_1_023:
	.byte		N12   , Cn1 , v116
	.byte	W24
	.byte		N06   
	.byte	W12
	.byte		N03   
	.byte	W06
	.byte		N03   
	.byte	W06
	.byte		N44   , Cn2 
	.byte	W11
	.byte		BEND  , c_v-2
	.byte	W01
	.byte		        c_v-6
	.byte	W02
	.byte		        c_v-7
	.byte	W01
	.byte		        c_v-10
	.byte	W02
	.byte		        c_v-12
	.byte	W01
	.byte		        c_v-17
	.byte	W02
	.byte		        c_v-19
	.byte	W01
	.byte		        c_v-23
	.byte	W02
	.byte		        c_v-25
	.byte	W01
	.byte		        c_v-31
	.byte	W02
	.byte		        c_v-32
	.byte	W01
	.byte		        c_v-35
	.byte	W02
	.byte		        c_v-37
	.byte	W01
	.byte		        c_v-42
	.byte	W02
	.byte		        c_v-43
	.byte	W01
	.byte		        c_v-47
	.byte	W02
	.byte		        c_v-51
	.byte	W01
	.byte		        c_v-64
	.byte	W11
	.byte		        c_v-52
	.byte	W01
	.byte	PEND
@ 024   ----------------------------------------
frlgmbattlb_1_024:
	.byte		BEND  , c_v+0
	.byte		N24   , An1 , v116
	.byte	W24
	.byte		N06   , Fs1 
	.byte	W12
	.byte		        An1 
	.byte	W06
	.byte		        Bn1 
	.byte	W06
	.byte		N12   , Dn2 
	.byte	W12
	.byte		        An1 
	.byte	W12
	.byte		        Fs1 
	.byte	W12
	.byte		        An1 
	.byte	W12
	.byte	PEND
@ 025   ----------------------------------------
frlgmbattlb_1_025:
	.byte		N12   , Dn1 , v116
	.byte	W12
	.byte		        An1 
	.byte	W24
	.byte		N32   
	.byte	W11
	.byte		BEND  , c_v-2
	.byte	W01
	.byte		        c_v-6
	.byte	W05
	.byte		        c_v-7
	.byte	W01
	.byte		        c_v-10
	.byte	W02
	.byte		        c_v-11
	.byte	W01
	.byte		        c_v-15
	.byte	W02
	.byte		        c_v-16
	.byte	W01
	.byte		        c_v-20
	.byte	W02
	.byte		        c_v-22
	.byte	W01
	.byte		        c_v-28
	.byte	W02
	.byte		        c_v-29
	.byte	W01
	.byte		        c_v-32
	.byte	W02
	.byte		        c_v-34
	.byte	W01
	.byte		        c_v-39
	.byte	W02
	.byte		        c_v-32
	.byte	W01
	.byte		        c_v+0
	.byte	W12
	.byte		N12   
	.byte	W12
	.byte	PEND
@ 026   ----------------------------------------
frlgmbattlb_1_026:
	.byte		N12   , Cn2 , v116
	.byte	W36
	.byte		N03   
	.byte	W06
	.byte		N03   
	.byte	W06
	.byte		N44   , Gn1 
	.byte	W11
	.byte		BEND  , c_v-2
	.byte	W01
	.byte		        c_v-6
	.byte	W02
	.byte		        c_v-7
	.byte	W01
	.byte		        c_v-10
	.byte	W02
	.byte		        c_v-12
	.byte	W01
	.byte		        c_v-17
	.byte	W02
	.byte		        c_v-19
	.byte	W01
	.byte		        c_v-23
	.byte	W02
	.byte		        c_v-25
	.byte	W01
	.byte		        c_v-31
	.byte	W02
	.byte		        c_v-32
	.byte	W01
	.byte		        c_v-35
	.byte	W02
	.byte		        c_v-37
	.byte	W01
	.byte		        c_v-42
	.byte	W02
	.byte		        c_v-43
	.byte	W01
	.byte		        c_v-47
	.byte	W02
	.byte		        c_v-51
	.byte	W01
	.byte		        c_v-64
	.byte	W11
	.byte		        c_v-52
	.byte	W01
	.byte	PEND
@ 027   ----------------------------------------
frlgmbattlb_1_027:
	.byte		BEND  , c_v+0
	.byte		N12   , Dn1 , v116
	.byte	W12
	.byte		        Dn2 
	.byte	W12
	.byte		        Dn1 
	.byte	W12
	.byte		        Cn2 
	.byte	W12
	.byte		        Dn1 
	.byte	W12
	.byte		        Bn1 
	.byte	W12
	.byte		        Fs1 
	.byte	W12
	.byte		        Gn1 
	.byte	W12
	.byte	PEND
@ 028   ----------------------------------------
frlgmbattlb_1_028:
	.byte		N12   , Dn1 , v116
	.byte	W12
	.byte		        An1 
	.byte	W12
	.byte		        Dn1 
	.byte	W12
	.byte		        Gn1 
	.byte	W12
	.byte		        Dn1 
	.byte	W12
	.byte		        Fs1 
	.byte	W12
	.byte		        Gs1 
	.byte	W12
	.byte		        An1 
	.byte	W12
	.byte	PEND
@ 029   ----------------------------------------
frlgmbattlb_1_029:
	.byte		N12   , Dn2 , v116
	.byte	W12
	.byte		N06   , An1 
	.byte	W12
	.byte		N12   , Fs1 
	.byte	W12
	.byte		N06   , An1 
	.byte	W12
	.byte		        Cn2 
	.byte	W06
	.byte		        Dn2 
	.byte	W06
	.byte		        An1 
	.byte	W06
	.byte		        As1 
	.byte	W06
	.byte		        Fs1 
	.byte	W06
	.byte		        Fn1 
	.byte	W06
	.byte		        En1 
	.byte	W06
	.byte		        Ds1 
	.byte	W06
	.byte	PEND
@ 030   ----------------------------------------
frlgmbattlb_1_030:
	.byte		N28   , Dn1 , v116
	.byte	W36
	.byte		N06   
	.byte	W24
	.byte		N24   
	.byte	W36
	.byte	PEND
@ 031   ----------------------------------------
frlgmbattlb_1_031:
	.byte		N12   , Cs2 , v116
	.byte	W12
	.byte		N24   , Dn2 
	.byte	W24
	.byte		N18   , Dn1 
	.byte	W24
	.byte		N06   
	.byte	W24
	.byte		N06   
	.byte	W12
	.byte	PEND
@ 032   ----------------------------------------
frlgmbattlb_1_032:
	.byte		N24   , Ds1 , v116
	.byte	W24
	.byte		N12   , Ds2 
	.byte	W12
	.byte		N18   , Ds1 
	.byte	W24
	.byte		N12   
	.byte	W12
	.byte		N24   , Ds2 
	.byte	W24
	.byte	PEND
@ 033   ----------------------------------------
	.byte		N12   , Dn2 
	.byte	W12
	.byte		        Ds2 
	.byte	W36
	.byte		        As1 
	.byte	W12
	.byte		N06   , Cn2 
	.byte	W12
	.byte		N12   , Gn1 
	.byte	W12
	.byte		N06   , As1 
	.byte	W12
@ 034   ----------------------------------------
	.byte	PATT
	 .word	frlgmbattlb_1_010
@ 035   ----------------------------------------
	.byte	PATT
	 .word	frlgmbattlb_1_011
@ 036   ----------------------------------------
	.byte	PATT
	 .word	frlgmbattlb_1_012
@ 037   ----------------------------------------
	.byte	PATT
	 .word	frlgmbattlb_1_013
@ 038   ----------------------------------------
	.byte	PATT
	 .word	frlgmbattlb_1_014
@ 039   ----------------------------------------
	.byte	PATT
	 .word	frlgmbattlb_1_015
@ 040   ----------------------------------------
	.byte	PATT
	 .word	frlgmbattlb_1_016
@ 041   ----------------------------------------
	.byte	PATT
	 .word	frlgmbattlb_1_017
@ 042   ----------------------------------------
	.byte	PATT
	 .word	frlgmbattlb_1_018
@ 043   ----------------------------------------
	.byte	PATT
	 .word	frlgmbattlb_1_019
@ 044   ----------------------------------------
	.byte	PATT
	 .word	frlgmbattlb_1_020
@ 045   ----------------------------------------
	.byte	PATT
	 .word	frlgmbattlb_1_021
@ 046   ----------------------------------------
	.byte	PATT
	 .word	frlgmbattlb_1_022
@ 047   ----------------------------------------
	.byte	PATT
	 .word	frlgmbattlb_1_023
@ 048   ----------------------------------------
	.byte	PATT
	 .word	frlgmbattlb_1_024
@ 049   ----------------------------------------
	.byte	PATT
	 .word	frlgmbattlb_1_025
@ 050   ----------------------------------------
	.byte	PATT
	 .word	frlgmbattlb_1_026
@ 051   ----------------------------------------
	.byte	PATT
	 .word	frlgmbattlb_1_027
@ 052   ----------------------------------------
	.byte	PATT
	 .word	frlgmbattlb_1_028
@ 053   ----------------------------------------
	.byte	PATT
	 .word	frlgmbattlb_1_029
@ 054   ----------------------------------------
	.byte	PATT
	 .word	frlgmbattlb_1_030
@ 055   ----------------------------------------
	.byte	PATT
	 .word	frlgmbattlb_1_031
@ 056   ----------------------------------------
	.byte	PATT
	 .word	frlgmbattlb_1_032
@ 057   ----------------------------------------
	.byte		N12   , Dn2 , v116
	.byte	W12
	.byte		        Ds2 
	.byte	W36
	.byte		        As1 
	.byte	W12
	.byte		N06   , Cn2 
	.byte	W12
	.byte		N12   , Gn1 
	.byte	W12
	.byte		N06   , As1 
	.byte	W06
[B]	.byte	FINE	@ ------> end of track [/B]

@******************************************************@
	.align	2

frlgmbattlb:
	.byte	1	@ NumTrks
	.byte	0	@ NumBlks
	.byte	frlgmbattlb_pri	@ Priority
	.byte	frlgmbattlb_rev	@ Reverb.

	.word	frlgmbattlb_grp

	.word	frlgmbattlb_1

	.end

SINGLE TRACK LOOPING

-----------

- To make the loop, you must first find the end of the track, and it usually ends with:

Code:
[B]	.byte	FINE [/B]

-Place the following code before the ".byte FINE" code line:

Code:
	[B].byte GOTO @ ----> Unconditional jump Ref. Sappy's Help file
	.word <name of loop label/pointer> @ ----> loop label name
	.byte W06 [/B]

REMINDERS: Although an option to place in the code, the purpose of the ".byte W06" after the GOTO and label statement is to give the GBA processor and memory enough time to go at the specified label's position, avoiding crashes at runtime. Adding an additional measure name before the ".byte FINE" code line is also optional, but recommended to avoid confusion. Besides the "@" sign signifies commenting in the S file. I also recommend using a label name which is similar to what is already in there (e.g. frlgmbattlb_1, newbark_2...).

The end of track must look like this:
Code:
	.byte GOTO
	.word frlgmbattlb_1_loop
	.byte W06
	.byte FINE


-and place the exact same label name (in this case, frlgmbattlb_1_loop) followed by a colon (:) in the place or measure you want to consider as the start of the loop. If a measure has a pattern statement (begins with a pattern label, format: <filename>_<track number>_<measure number>, and ends with .byte PEND), place the loop label before the pattern label.

Code:
@ 010   ----------------------------------------
frlgmbattlb_1_loop:
[B]frlgmbattlb_1_010: @ -----> start of pattern statement [/B]
	.byte		N12   , Dn1 , v116
	.byte	W12
	.byte		        An1 
	.byte	W12
	.byte		        Dn1 
	.byte	W12
	.byte		        An1 
	.byte	W12
	.byte		        Dn2 
	.byte	W12
	.byte		        An1 
	.byte	W12
	.byte		N06   , Gn1 
	.byte	W06
	.byte		        Fs1 
	.byte	W06
	.byte		        En1 
	.byte	W06
	.byte		        Ds1 
	.byte	W06
[B]	.byte	PEND @ -----> end of pattern statement [/B]

To make things simple, always remember that:
Code:
[B]frlgmbattlb_1_loop:   @ ----> start of GOTO (loop) statement [/B]

<lines of code to loop>

[B].byte GOTO			@ \
.word frlgmbattlb_1_loop	@  > ---> end of GOTO (loop statement)
.byte W06				@ /
[/B]

.byte FINE

As an end result, you must have a code that looks like this (pay attention to the boldfaced codes for further understanding):
Code:
	.include "MPlayDef.s"

	.equ	frlgmbattlb_grp, voicegroup000
	.equ	frlgmbattlb_pri, 0
	.equ	frlgmbattlb_rev, 0
	.equ	frlgmbattlb_mvl, 127
	.equ	frlgmbattlb_key, 0
	.equ	frlgmbattlb_tbs, 1
	.equ	frlgmbattlb_exg, 0
	.equ	frlgmbattlb_cmp, 1

	.section .rodata
	.global	frlgmbattlb
	.align	2

@**************** Track 1 (Midi-Chn.5) ****************@

frlgmbattlb_1:
	.byte	KEYSH , frlgmbattlb_key+0
@ 000   ----------------------------------------
	.byte	TEMPO , 182*frlgmbattlb_tbs/2
	.byte		VOICE , 33
	.byte		VOL   , 127*frlgmbattlb_mvl/mxv
	.byte		N06   , Ds1 , v104
	.byte	W12
	.byte		N06   
	.byte	W06
	.byte		        Dn1 
	.byte	W06
	.byte		        En1 
	.byte	W12
	.byte		N06   
	.byte	W06
	.byte		        Dn1 
	.byte	W06
	.byte		        Fn1 
	.byte	W12
	.byte		N06   
	.byte	W06
	.byte		        Dn1 
	.byte	W06
	.byte		        Fs1 
	.byte	W12
	.byte		N06   
	.byte	W06
	.byte		        Dn1 
	.byte	W06
@ 001   ----------------------------------------
	.byte		        Gn1 
	.byte	W12
	.byte		N06   
	.byte	W06
	.byte		        Dn1 
	.byte	W06
	.byte		        Gs1 
	.byte	W12
	.byte		N06   
	.byte	W06
	.byte		        Dn1 
	.byte	W06
	.byte		        An1 
	.byte	W12
	.byte		N06   
	.byte	W06
	.byte		        Dn1 
	.byte	W06
	.byte		N12   , As1 
	.byte	W12
	.byte		        An1 
	.byte	W12
@ 002   ----------------------------------------
frlgmbattlb_1_002:
	.byte		N12   , Dn1 , v116
	.byte	W12
	.byte		        An1 
	.byte	W12
	.byte		        Dn1 
	.byte	W12
	.byte		        An1 
	.byte	W12
	.byte		        Dn1 
	.byte	W12
	.byte		        An1 
	.byte	W12
	.byte		        Dn2 
	.byte	W12
	.byte		        An1 
	.byte	W12
	.byte	PEND
@ 003   ----------------------------------------
	.byte		        Dn1 
	.byte	W12
	.byte		        An1 
	.byte	W12
	.byte		        Dn2 
	.byte	W12
	.byte		        An1 
	.byte	W12
	.byte		        As1 
	.byte	W12
	.byte		        Cn2 
	.byte	W12
	.byte		        Gn1 
	.byte	W12
	.byte		        An1 
	.byte	W12
@ 004   ----------------------------------------
	.byte		        Ds1 
	.byte	W12
	.byte		        As1 
	.byte	W12
	.byte		        Ds1 
	.byte	W12
	.byte		N32   , Ds2 
	.byte	W08
	.byte		BEND  , c_v-2
	.byte	W01
	.byte		        c_v-8
	.byte	W02
	.byte		        c_v-10
	.byte	W01
	.byte		        c_v-15
	.byte	W02
	.byte		        c_v-17
	.byte	W01
	.byte		        c_v-21
	.byte	W02
	.byte		        c_v-23
	.byte	W01
	.byte		        c_v-29
	.byte	W02
	.byte		        c_v-31
	.byte	W01
	.byte		        c_v-39
	.byte	W02
	.byte		        c_v-40
	.byte	W01
	.byte		        c_v-44
	.byte	W02
	.byte		        c_v-46
	.byte	W01
	.byte		        c_v-52
	.byte	W02
	.byte		        c_v-54
	.byte	W01
	.byte		        c_v-60
	.byte	W02
	.byte		        c_v-61
	.byte	W01
	.byte		        c_v-63
	.byte	W02
	.byte		        c_v-51
	.byte	W01
	.byte		        c_v+0
	.byte		N12   , Ds1 
	.byte	W12
	.byte		        As1 
	.byte	W12
@ 005   ----------------------------------------
	.byte		        Ds1 
	.byte	W12
	.byte		        As1 
	.byte	W12
	.byte		        Ds2 
	.byte	W12
	.byte		        Cn2 
	.byte	W12
	.byte		N12   
	.byte	W12
	.byte		        Dn2 
	.byte	W12
	.byte		        As1 
	.byte	W12
	.byte		        Cn2 
	.byte	W12
@ 006   ----------------------------------------
	.byte	PATT
	 .word	frlgmbattlb_1_002
@ 007   ----------------------------------------
	.byte		N12   , Dn1 , v116
	.byte	W12
	.byte		        An1 
	.byte	W12
	.byte		        Dn2 
	.byte	W12
	.byte		        An1 
	.byte	W12
	.byte		N12   
	.byte	W12
	.byte		        As1 
	.byte	W12
	.byte		        Gn1 
	.byte	W12
	.byte		        An1 
	.byte	W12
@ 008   ----------------------------------------
	.byte		        Ds1 
	.byte	W12
	.byte		        As1 
	.byte	W12
	.byte		N06   , Dn1 
	.byte	W06
	.byte		        Ds1 
	.byte	W06
	.byte		        Gn1 
	.byte	W06
	.byte		        As1 
	.byte	W06
	.byte		N12   , Ds2 
	.byte	W12
	.byte		        Dn2 
	.byte	W12
	.byte		        Cn2 
	.byte	W12
	.byte		        Dn2 
	.byte	W12
@ 009   ----------------------------------------
	.byte		        Ds1 
	.byte	W12
	.byte		        As1 
	.byte	W12
	.byte		        Dn2 
	.byte	W12
	.byte		        Ds2 
	.byte	W12
	.byte		N06   , Ds1 
	.byte	W06
	.byte		        Gn1 
	.byte	W06
	.byte		        As1 
	.byte	W06
	.byte		        Cn2 
	.byte	W06
	.byte		N12   , Ds2 
	.byte	W12
	.byte		        Cn2 
	.byte	W12
@ 010   ----------------------------------------
[B]frlgmbattlb_1_loop:[/B]
frlgmbattlb_1_010:
	.byte		N12   , Dn1 , v116
	.byte	W12
	.byte		        An1 
	.byte	W12
	.byte		        Dn1 
	.byte	W12
	.byte		        An1 
	.byte	W12
	.byte		        Dn2 
	.byte	W12
	.byte		        An1 
	.byte	W12
	.byte		N06   , Gn1 
	.byte	W06
	.byte		        Fs1 
	.byte	W06
	.byte		        En1 
	.byte	W06
	.byte		        Ds1 
	.byte	W06
	.byte	PEND
@ 011   ----------------------------------------
frlgmbattlb_1_011:
	.byte		N12   , Dn1 , v116
	.byte	W12
	.byte		        An1 
	.byte	W12
	.byte		        Dn1 
	.byte	W12
	.byte		        An1 
	.byte	W12
	.byte		        Dn1 
	.byte	W12
	.byte		        An1 
	.byte	W12
	.byte		        As1 
	.byte	W12
	.byte		        An1 
	.byte	W12
	.byte	PEND
@ 012   ----------------------------------------
frlgmbattlb_1_012:
	.byte		N12   , Ds1 , v116
	.byte	W12
	.byte		        As1 
	.byte	W12
	.byte		        Ds1 
	.byte	W12
	.byte		        An1 
	.byte	W12
	.byte		        Ds1 
	.byte	W12
	.byte		        Gs1 
	.byte	W12
	.byte		        Ds1 
	.byte	W12
	.byte		        Gn1 
	.byte	W12
	.byte	PEND
@ 013   ----------------------------------------
frlgmbattlb_1_013:
	.byte		N12   , Ds1 , v116
	.byte	W12
	.byte		        Fs1 
	.byte	W12
	.byte		        Ds1 
	.byte	W12
	.byte		        Fn1 
	.byte	W12
	.byte		        Cn2 
	.byte	W12
	.byte		        Dn2 
	.byte	W12
	.byte		        As1 
	.byte	W12
	.byte		        Cn2 
	.byte	W12
	.byte	PEND
@ 014   ----------------------------------------
frlgmbattlb_1_014:
	.byte		N24   , Dn1 , v116
	.byte	W24
	.byte		N12   , An1 
	.byte	W12
	.byte		N18   , Dn1 
	.byte	W24
	.byte		N12   
	.byte	W12
	.byte		        An1 
	.byte	W12
	.byte		        Dn1 
	.byte	W12
	.byte	PEND
@ 015   ----------------------------------------
frlgmbattlb_1_015:
	.byte		N12   , Dn1 , v116
	.byte	W12
	.byte		        An1 
	.byte	W24
	.byte		N12   
	.byte	W24
	.byte		N12   
	.byte	W12
	.byte		        Gs1 
	.byte	W12
	.byte		N06   , An1 
	.byte	W12
	.byte	PEND
@ 016   ----------------------------------------
frlgmbattlb_1_016:
	.byte		N12   , Dn1 , v116
	.byte	W12
	.byte		        An1 
	.byte	W24
	.byte		N12   
	.byte	W24
	.byte		N12   
	.byte	W12
	.byte		        Gs1 
	.byte	W12
	.byte		        An1 
	.byte	W12
	.byte	PEND
@ 017   ----------------------------------------
frlgmbattlb_1_017:
	.byte		N24   , Dn1 , v108
	.byte	W24
	.byte		        Cn2 
	.byte	W24
	.byte		        Cn1 
	.byte	W24
	.byte		N18   , Gn1 
	.byte	W18
	.byte		N03   , Fn1 
	.byte	W03
	.byte		        En1 
	.byte	W03
	.byte	PEND
@ 018   ----------------------------------------
frlgmbattlb_1_018:
	.byte		N24   , Ds1 , v116
	.byte	W24
	.byte		N12   , As1 
	.byte	W12
	.byte		N18   , Ds1 
	.byte	W24
	.byte		N12   
	.byte	W12
	.byte		N03   , As1 
	.byte	W12
	.byte		N12   , Cn1 
	.byte	W12
	.byte	PEND
@ 019   ----------------------------------------
frlgmbattlb_1_019:
	.byte		N12   , Ds2 , v116
	.byte	W12
	.byte		N06   , Gn1 
	.byte	W12
	.byte		N12   , As1 
	.byte	W12
	.byte		N06   , Ds2 
	.byte	W12
	.byte		        Ds1 
	.byte	W06
	.byte		        Gn1 
	.byte	W06
	.byte		        An1 
	.byte	W06
	.byte		        As1 
	.byte	W06
	.byte		N12   , Ds2 
	.byte	W12
	.byte		        Cs2 
	.byte	W12
	.byte	PEND
@ 020   ----------------------------------------
frlgmbattlb_1_020:
	.byte		N12   , An1 , v116
	.byte	W12
	.byte		        Dn1 
	.byte	W12
	.byte		        An1 
	.byte	W12
	.byte		N06   , Dn1 
	.byte	W12
	.byte		N12   
	.byte	W12
	.byte		N06   , An1 
	.byte	W12
	.byte		N12   
	.byte	W12
	.byte		        Gs1 
	.byte	W12
	.byte	PEND
@ 021   ----------------------------------------
frlgmbattlb_1_021:
	.byte		N12   , Dn1 , v116
	.byte	W12
	.byte		        An1 
	.byte	W12
	.byte		        Dn1 
	.byte	W12
	.byte		        An1 
	.byte	W12
	.byte		N06   , Cs2 
	.byte	W06
	.byte		        Dn2 
	.byte	W06
	.byte		        As1 
	.byte	W06
	.byte		        Cn2 
	.byte	W06
	.byte		        An1 
	.byte	W06
	.byte		        Gs1 
	.byte	W06
	.byte		        Gn1 
	.byte	W06
	.byte		        Fs1 
	.byte	W06
	.byte	PEND
@ 022   ----------------------------------------
frlgmbattlb_1_022:
	.byte		N06   , Cn1 , v116
	.byte	W12
	.byte		N12   
	.byte	W24
	.byte		N12   
	.byte	W12
	.byte		        Cn2 
	.byte	W12
	.byte		N18   , Cn1 
	.byte	W24
	.byte		N06   
	.byte	W12
	.byte	PEND
@ 023   ----------------------------------------
frlgmbattlb_1_023:
	.byte		N12   , Cn1 , v116
	.byte	W24
	.byte		N06   
	.byte	W12
	.byte		N03   
	.byte	W06
	.byte		N03   
	.byte	W06
	.byte		N44   , Cn2 
	.byte	W11
	.byte		BEND  , c_v-2
	.byte	W01
	.byte		        c_v-6
	.byte	W02
	.byte		        c_v-7
	.byte	W01
	.byte		        c_v-10
	.byte	W02
	.byte		        c_v-12
	.byte	W01
	.byte		        c_v-17
	.byte	W02
	.byte		        c_v-19
	.byte	W01
	.byte		        c_v-23
	.byte	W02
	.byte		        c_v-25
	.byte	W01
	.byte		        c_v-31
	.byte	W02
	.byte		        c_v-32
	.byte	W01
	.byte		        c_v-35
	.byte	W02
	.byte		        c_v-37
	.byte	W01
	.byte		        c_v-42
	.byte	W02
	.byte		        c_v-43
	.byte	W01
	.byte		        c_v-47
	.byte	W02
	.byte		        c_v-51
	.byte	W01
	.byte		        c_v-64
	.byte	W11
	.byte		        c_v-52
	.byte	W01
	.byte	PEND
@ 024   ----------------------------------------
frlgmbattlb_1_024:
	.byte		BEND  , c_v+0
	.byte		N24   , An1 , v116
	.byte	W24
	.byte		N06   , Fs1 
	.byte	W12
	.byte		        An1 
	.byte	W06
	.byte		        Bn1 
	.byte	W06
	.byte		N12   , Dn2 
	.byte	W12
	.byte		        An1 
	.byte	W12
	.byte		        Fs1 
	.byte	W12
	.byte		        An1 
	.byte	W12
	.byte	PEND
@ 025   ----------------------------------------
frlgmbattlb_1_025:
	.byte		N12   , Dn1 , v116
	.byte	W12
	.byte		        An1 
	.byte	W24
	.byte		N32   
	.byte	W11
	.byte		BEND  , c_v-2
	.byte	W01
	.byte		        c_v-6
	.byte	W05
	.byte		        c_v-7
	.byte	W01
	.byte		        c_v-10
	.byte	W02
	.byte		        c_v-11
	.byte	W01
	.byte		        c_v-15
	.byte	W02
	.byte		        c_v-16
	.byte	W01
	.byte		        c_v-20
	.byte	W02
	.byte		        c_v-22
	.byte	W01
	.byte		        c_v-28
	.byte	W02
	.byte		        c_v-29
	.byte	W01
	.byte		        c_v-32
	.byte	W02
	.byte		        c_v-34
	.byte	W01
	.byte		        c_v-39
	.byte	W02
	.byte		        c_v-32
	.byte	W01
	.byte		        c_v+0
	.byte	W12
	.byte		N12   
	.byte	W12
	.byte	PEND
@ 026   ----------------------------------------
frlgmbattlb_1_026:
	.byte		N12   , Cn2 , v116
	.byte	W36
	.byte		N03   
	.byte	W06
	.byte		N03   
	.byte	W06
	.byte		N44   , Gn1 
	.byte	W11
	.byte		BEND  , c_v-2
	.byte	W01
	.byte		        c_v-6
	.byte	W02
	.byte		        c_v-7
	.byte	W01
	.byte		        c_v-10
	.byte	W02
	.byte		        c_v-12
	.byte	W01
	.byte		        c_v-17
	.byte	W02
	.byte		        c_v-19
	.byte	W01
	.byte		        c_v-23
	.byte	W02
	.byte		        c_v-25
	.byte	W01
	.byte		        c_v-31
	.byte	W02
	.byte		        c_v-32
	.byte	W01
	.byte		        c_v-35
	.byte	W02
	.byte		        c_v-37
	.byte	W01
	.byte		        c_v-42
	.byte	W02
	.byte		        c_v-43
	.byte	W01
	.byte		        c_v-47
	.byte	W02
	.byte		        c_v-51
	.byte	W01
	.byte		        c_v-64
	.byte	W11
	.byte		        c_v-52
	.byte	W01
	.byte	PEND
@ 027   ----------------------------------------
frlgmbattlb_1_027:
	.byte		BEND  , c_v+0
	.byte		N12   , Dn1 , v116
	.byte	W12
	.byte		        Dn2 
	.byte	W12
	.byte		        Dn1 
	.byte	W12
	.byte		        Cn2 
	.byte	W12
	.byte		        Dn1 
	.byte	W12
	.byte		        Bn1 
	.byte	W12
	.byte		        Fs1 
	.byte	W12
	.byte		        Gn1 
	.byte	W12
	.byte	PEND
@ 028   ----------------------------------------
frlgmbattlb_1_028:
	.byte		N12   , Dn1 , v116
	.byte	W12
	.byte		        An1 
	.byte	W12
	.byte		        Dn1 
	.byte	W12
	.byte		        Gn1 
	.byte	W12
	.byte		        Dn1 
	.byte	W12
	.byte		        Fs1 
	.byte	W12
	.byte		        Gs1 
	.byte	W12
	.byte		        An1 
	.byte	W12
	.byte	PEND
@ 029   ----------------------------------------
frlgmbattlb_1_029:
	.byte		N12   , Dn2 , v116
	.byte	W12
	.byte		N06   , An1 
	.byte	W12
	.byte		N12   , Fs1 
	.byte	W12
	.byte		N06   , An1 
	.byte	W12
	.byte		        Cn2 
	.byte	W06
	.byte		        Dn2 
	.byte	W06
	.byte		        An1 
	.byte	W06
	.byte		        As1 
	.byte	W06
	.byte		        Fs1 
	.byte	W06
	.byte		        Fn1 
	.byte	W06
	.byte		        En1 
	.byte	W06
	.byte		        Ds1 
	.byte	W06
	.byte	PEND
@ 030   ----------------------------------------
frlgmbattlb_1_030:
	.byte		N28   , Dn1 , v116
	.byte	W36
	.byte		N06   
	.byte	W24
	.byte		N24   
	.byte	W36
	.byte	PEND
@ 031   ----------------------------------------
frlgmbattlb_1_031:
	.byte		N12   , Cs2 , v116
	.byte	W12
	.byte		N24   , Dn2 
	.byte	W24
	.byte		N18   , Dn1 
	.byte	W24
	.byte		N06   
	.byte	W24
	.byte		N06   
	.byte	W12
	.byte	PEND
@ 032   ----------------------------------------
frlgmbattlb_1_032:
	.byte		N24   , Ds1 , v116
	.byte	W24
	.byte		N12   , Ds2 
	.byte	W12
	.byte		N18   , Ds1 
	.byte	W24
	.byte		N12   
	.byte	W12
	.byte		N24   , Ds2 
	.byte	W24
	.byte	PEND
@ 033   ----------------------------------------
	.byte		N12   , Dn2 
	.byte	W12
	.byte		        Ds2 
	.byte	W36
	.byte		        As1 
	.byte	W12
	.byte		N06   , Cn2 
	.byte	W12
	.byte		N12   , Gn1 
	.byte	W12
	.byte		N06   , As1 
	.byte	W12
@ 034   ----------------------------------------
	.byte	PATT
	 .word	frlgmbattlb_1_010
@ 035   ----------------------------------------
	.byte	PATT
	 .word	frlgmbattlb_1_011
@ 036   ----------------------------------------
	.byte	PATT
	 .word	frlgmbattlb_1_012
@ 037   ----------------------------------------
	.byte	PATT
	 .word	frlgmbattlb_1_013
@ 038   ----------------------------------------
	.byte	PATT
	 .word	frlgmbattlb_1_014
@ 039   ----------------------------------------
	.byte	PATT
	 .word	frlgmbattlb_1_015
@ 040   ----------------------------------------
	.byte	PATT
	 .word	frlgmbattlb_1_016
@ 041   ----------------------------------------
	.byte	PATT
	 .word	frlgmbattlb_1_017
@ 042   ----------------------------------------
	.byte	PATT
	 .word	frlgmbattlb_1_018
@ 043   ----------------------------------------
	.byte	PATT
	 .word	frlgmbattlb_1_019
@ 044   ----------------------------------------
	.byte	PATT
	 .word	frlgmbattlb_1_020
@ 045   ----------------------------------------
	.byte	PATT
	 .word	frlgmbattlb_1_021
@ 046   ----------------------------------------
	.byte	PATT
	 .word	frlgmbattlb_1_022
@ 047   ----------------------------------------
	.byte	PATT
	 .word	frlgmbattlb_1_023
@ 048   ----------------------------------------
	.byte	PATT
	 .word	frlgmbattlb_1_024
@ 049   ----------------------------------------
	.byte	PATT
	 .word	frlgmbattlb_1_025
@ 050   ----------------------------------------
	.byte	PATT
	 .word	frlgmbattlb_1_026
@ 051   ----------------------------------------
	.byte	PATT
	 .word	frlgmbattlb_1_027
@ 052   ----------------------------------------
	.byte	PATT
	 .word	frlgmbattlb_1_028
@ 053   ----------------------------------------
	.byte	PATT
	 .word	frlgmbattlb_1_029
@ 054   ----------------------------------------
	.byte	PATT
	 .word	frlgmbattlb_1_030
@ 055   ----------------------------------------
	.byte	PATT
	 .word	frlgmbattlb_1_031
@ 056   ----------------------------------------
	.byte	PATT
	 .word	frlgmbattlb_1_032
@ 057   ----------------------------------------
	.byte		N12   , Dn2 , v116
	.byte	W12
	.byte		        Ds2 
	.byte	W36
	.byte		        As1 
	.byte	W12
	.byte		N06   , Cn2 
	.byte	W12
	.byte		N12   , Gn1 
	.byte	W12
	.byte		N06   , As1 
	.byte	W06
[B]	.byte GOTO
	.word frlgmbattlb_1_loop [/B]
@ 058   ----------------------------------------
	.byte	FINE

@******************************************************@
	.align	2

frlgmbattlb:
	.byte	1	@ NumTrks
	.byte	0	@ NumBlks
	.byte	frlgmbattlb_pri	@ Priority
	.byte	frlgmbattlb_rev	@ Reverb.

	.word	frlgmbattlb_grp

	.word	frlgmbattlb_1

	.end

MULTIPLE TRACK LOOPING

-----------
Now, if you think looping a single-tracked S file is easy, think of looping a multi-tracked S file a bit complicated. Because unlike looping a single-tracked file, looping a multi-tracked file requires that you must loop EACH AND EVERY TRACK inside it. It means that if you looped one track doesn't mean that the others will loop as well. What makes it more complicated is that not all tracks end with the same number and the same W<xx> values (contrary to what I've posted previously). To know more about it, click the file tes.zip in the Attachments part of the thread (thanks to megiddo for the code). Once you've extracted it, open the file "tes.txt". Upon thorough examination of the file, you will notice that some tracks end with "@ 042" measure while others end with "@ 050". Also, some of the tracks don't have W<xx> values that equal to 96, the "whole rest" value for a 4/4 metered file (to be explained later on).

In this kind of situation, we must adjust the other tracks to align with the track which has the highest amount of length (in this case the longest track has a measure of @ 050 and has W<xx> values equal to 96).

Code:
@ 042   ----------------------------------------
	.byte		N23   , Cs3 , v064
	.byte	W24
	.byte		        As2 
	.byte	W24
	.byte		        Cn3 
	.byte	W24
	.byte		        Gs2 
	.byte	W23
	.byte	FINE

Let's say this code above (taken from Track 2 of tes.txt) is your track's last measure. To make this track equal to the longest track in the file, we will add the following code lines:

Code:
@ 043   ----------------------------------------
	.byte	W96

Do so until the track reaches the same length as the longest track. Just like:

Code:
@ 042   ----------------------------------------
	.byte		N23   , Cs3 , v064
	.byte	W24
	.byte		        As2 
	.byte	W24
	.byte		        Cn3 
	.byte	W24
	.byte		        Gs2 
	.byte	W23
@ 043   ----------------------------------------
	.byte	W96
@ 044   ----------------------------------------
	.byte	W96
@ 045   ----------------------------------------
	.byte	W96
@ 046   ----------------------------------------
	.byte	W96
@ 047   ----------------------------------------
	.byte	W96
@ 048   ----------------------------------------
	.byte	W96
@ 049   ----------------------------------------
	.byte	W96
@ 050   ----------------------------------------
	.byte	W96
	.byte	FINE

But we're not done yet. It may look aligned to the longest track for now, but let's go back to measure @ 042. If you add the W<xx> values, it would be: 24+24+24+23=95. We must also remember that the measure's meter is 4/4, which has a W<xx> value of 96. Ignoring this fact may cause crashing at runtime (which we don't want to happen). To make the W<xx> bytecodes equal to 96, simply change the value of the last W<xx> bytecode to a value that would make them equal to 96. In this code, we will change ".byte W23" to ".byte W24". You will have a code that looks like:

Code:
@ 042   ----------------------------------------
	.byte		N23   , Cs3 , v064
	.byte	W24
	.byte		        As2 
	.byte	W24
	.byte		        Cn3 
	.byte	W24
	.byte		        Gs2 
	.byte	W24
@ 043   ----------------------------------------
	.byte	W96
@ 044   ----------------------------------------
	.byte	W96
@ 045   ----------------------------------------
	.byte	W96
@ 046   ----------------------------------------
	.byte	W96
@ 047   ----------------------------------------
	.byte	W96
@ 048   ----------------------------------------
	.byte	W96
@ 049   ----------------------------------------
	.byte	W96
@ 050   ----------------------------------------
	.byte	W96
	.byte	FINE


After that, you may start looping the file. Always remember upon looping a multi-tracked S file, you must loop each and every track of the file. Open "tes_r.txt" to see the results.

WHAT'S IN THE W<xx>?

-----------
You may ask "You keep mentioning about this W<xx> and the 4/4 meter stuff, but what exactly is it?"

Actually, here's the definition for the W<xx> from Sappy 2006's help file:

Wxx (0x80++)
Wait for the specified number of clock ticks

The value of W<xx> varies on its use, and it adds up to a total of:

96 – for 4/4 metered measure (4 beats per measure/beat value of 4)
72 – for 3/4 metered measure, and
48 – for 3/4 metered measure

In a W96 measure:

96 – whole (note if .byte W96 has N<xx> line before it/rest if none)
48 – half
24 – quarter
12 – half quarter


- Save the file when you're done. The next step is to insert it in Sappy. Follow the help file or Search the Forum for instructions.

NOTES:
  • You may preview the S file using Sappy. Just be warned that it may close the program upon playing the file on the first run. Preview using GBA emulator for safety.
  • If you are about to use a multi-track S file, you may want to shorten the length of your MIDI to a single repetition for easier loop coding.
  • Always check everything about the loop statement (the spelling, location, etc.) to avoid crashes or erroneous loops at runtime. Do so by pressing Ctrl+F, typing the loop label name, and cilck Find Next.
  • You must also refer to the "Event List" of your MIDI software to know where to loop in your S file (e.g. knowing the measure number, the formula is (MIDI measure number)-1).
  • About knowing where to (start and end a) loop, always ask yourself: "Which part of this song do I want to hear over and over again?" and "Which particular measure number does the looping start?" Simple questions that need tough answers, but you'll be able to push through when you do.
  • Always backup your files.

EXAMPLES:

I have included some reference files and examples below. Use them as guides for music looping.

GOOD LUCK IN YOUR GBA MUSIC LOOPING!!!
 
Last edited:

Chiaki Shinichi

Beginning Hacker
118
Posts
17
Years
Nice work there clonex25!!!

I knew about the:

.byte GOTO
.word "song"

but not the:
.byte W06

So the song didn't loop properly, anyways its nice to know how to loop songs!
 
230
Posts
16
Years
  • Seen Jan 3, 2010
And where exactly you put the W96 byte? And did I understand correctly that it fills space to make all tracks have same length? How many should be used? I am sorry, this is completely new area of hacking for me (Not really, as I can already successfully transfer music from game to game and put in custom MIDI without looping). I made up a MIDI for one project and it has around 7 or 8 tracks, can you tell me more specifically how to put it into the game without some problems with looping e.g. one track starts looping before another?

And I know this isn't related to this tutorial, but how do I change instruments of the song by hex (in game)? Can you answer me either here or via PM?
 

clonex25

Just droppin' by...
74
Posts
16
Years
And where exactly you put the W96 byte? And did I understand correctly that it fills space to make all tracks have same length? How many should be used? I am sorry, this is completely new area of hacking for me (Not really, as I can already successfully transfer music from game to game and put in custom MIDI without looping). I made up a MIDI for one project and it has around 7 or 8 tracks, can you tell me more specifically how to put it into the game without some problems with looping e.g. one track starts looping before another?

And I know this isn't related to this tutorial, but how do I change instruments of the song by hex (in game)? Can you answer me either here or via PM?

Actually, the MIDI2GBA tool automatically fills up empty spaces (such as measures) with a W96 (or any W [wait] value needed to make each measure having a 96 total W value). By the way, the W thing here is a delay command in the S file programming (similar to delay() in C/C++ and Sleep in Visual Basic, <sigh> too technical, isn't it?). As I have said in my additional notes, you must aslo refer to your MIDI software. If you can see loop markers in the MIDI, then it's the right place to insert the loop label (beginning of the loop) and the GOTO statement (before the end of track). To fully understand the looping thing, try clicking the attachments above. Those may serve as guide in GBA looping.

As for the instrumentation by hex, I doubt I can help you. I just made a song test MIDI (playing notes in different patches), inserted it in GBA, and listened carefully at each patch. I think there is "Export samples" in Sappy. Hope it can help you. :)
 
Last edited:

clonex25

Just droppin' by...
74
Posts
16
Years
I've had some problems assembling songs, you see when I insert
the music not all of the instruments are inserted... :(
will you please help me, clonex25?

Could that be:
1. Your instruments doesn't sound the way you expect it? Or
2. You've placed too many instruments after all.

I'll forward a message if you have problems regarding the instruments. ;)
 

destinedjagold

You can contact me in PC's discord server...
8,593
Posts
16
Years
  • Age 33
  • Seen Dec 23, 2023
hey... I got a question, but before that, I noticed this in your first post...
newbark_1_010:
from that, is it the last track in new bark song?
if so, then does that mean we can only add music which is only up to 10?

other than that, it's a great tutorial. :)
 

Master_Track

ROM Reaverz Scripter
916
Posts
16
Years
i'm sry to ask this, but can anyone loop the following song for me?
I tryed but failed, maybe it would help me to understand O.o
Spoiler:

should loop from track 2 I think.
if nobody can do it I'll just try again and again..
 

clonex25

Just droppin' by...
74
Posts
16
Years
i'm sry to ask this, but can anyone loop the following song for me?
I tryed but failed, maybe it would help me to understand O.o
Spoiler:

should loop from track 2 I think.
if nobody can do it I'll just try again and again..


i see... you haven't looped all the tracks in the S file.

if you're looping a multi-track file, you must loop all the tracks in it. Meaning the first track has its own loop command, and so as the 2nd, the 3rd, up to the nth track. Download any of the attachments above to learn more of multi-track looping.
 

destinedjagold

You can contact me in PC's discord server...
8,593
Posts
16
Years
  • Age 33
  • Seen Dec 23, 2023
I got to admit, this is an awesome tutorial. :)
I can loop D/P Music now, but I can't lower their volumes. :P
Oh well.., I need to make further experiments.
Thankies for this tutorial...

But, I got a question... :\
Everytime I loop D/P Music and insert them in the ROM, it works, but if I loop non-pokemon music, it won't work in neither Sappy nor VBA... :\
Spoiler:
 

Master_Track

ROM Reaverz Scripter
916
Posts
16
Years
thx, I'll try it out now ^^

@DJG: Try to download Anvil Studio.
I did it because I searched for programs which loop automatically (I was even able to loop a song, but only one instrument and that sounded odd..so I make it manually now ^^)
However, I was able to change the volume of my sound easily, and u can choose which instrument should have which volume.

E: didn't work :'(
what did I do wrong?
I think I just don't understand WHERE to put the songname_1_loop:

Code:
    .include "MPlayDef.s"

    .equ    zelda2_grp, voicegroup000
    .equ    zelda2_pri, 0
    .equ    zelda2_rev, 0
    .equ    zelda2_mvl, 127
    .equ    zelda2_key, 0
    .equ    zelda2_tbs, 1
    .equ    zelda2_exg, 0
    .equ    zelda2_cmp, 1

    .section .rodata
    .global    zelda2
    .align    2

@**************** Track 1 (Midi-Chn.1) ****************@

zelda2_1:
    .byte    KEYSH , zelda2_key+0
@ 000   ----------------------------------------
    .byte    TEMPO , 148*zelda2_tbs/2
    .byte        VOICE , 71
    .byte        VOL   , 74*zelda2_mvl/mxv
    .byte        N48   , As3 , v064
    .byte    W64
    .byte        N05   
    .byte    W08
    .byte        N05   
    .byte    W08
    .byte        N05   
    .byte    W08
    .byte        N05   
    .byte    W08
@ 001   ----------------------------------------
zelda2_1_loop:
    .byte        N07   , As3 , v064
    .byte    W16
    .byte        N05   , Gs3 
    .byte    W08
    .byte        N32   , As3 
    .byte    W40
    .byte        N05   
    .byte    W08
    .byte        N05   
    .byte    W08
    .byte        N05   
    .byte    W08
    .byte        N05   
    .byte    W08
    .byte    PEND
@ 002   ----------------------------------------
    .byte    PATT
     .word    zelda2_1_001
@ 003   ----------------------------------------
    .byte        N08   , As3 , v064
    .byte    W12
    .byte        N04   , Fn3 
    .byte    W06
    .byte        N04   
    .byte    W06
    .byte        N08   
    .byte    W12
    .byte        N04   
    .byte    W06
    .byte        N04   
    .byte    W06
    .byte        N08   
    .byte    W12
    .byte        N04   
    .byte    W06
    .byte        N04   
    .byte    W06
    .byte        N08   
    .byte    W12
    .byte        N08   
    .byte    W12
@ 004   ----------------------------------------
zelda2_1_004:
    .byte        N16   , As3 , v064
    .byte    W24
    .byte        N32   , Fn3 
    .byte    W42
    .byte        N05   , As3 
    .byte    W06
    .byte        N05   
    .byte    W06
    .byte                Cn4 
    .byte    W06
    .byte                Dn4 
    .byte    W06
    .byte                Ds4 
    .byte    W06
    .byte    PEND
@ 005   ----------------------------------------
zelda2_1_005:
    .byte        N44   , Fn4 , v064
    .byte    W60
    .byte        N08   
    .byte    W12
    .byte        N07   
    .byte    W08
    .byte                Fs4 
    .byte    W08
    .byte                Gs4 
    .byte    W08
    .byte    PEND
@ 006   ----------------------------------------
    .byte        N54   , As4 
    .byte    W56
    .byte        N07   
    .byte    W08
    .byte        N07   
    .byte    W08
    .byte        N07   
    .byte    W08
    .byte                Gs4 
    .byte    W08
    .byte                Fs4 
    .byte    W08
@ 007   ----------------------------------------
    .byte                Gs4 
    .byte    W16
    .byte                Fs4 
    .byte    W08
    .byte        N44   , Fn4 
    .byte    W48
    .byte        N23   
    .byte    W24
@ 008   ----------------------------------------
    .byte        N11   , Ds4 
    .byte    W12
    .byte        N05   
    .byte    W06
    .byte                Fn4 
    .byte    W06
    .byte        N44   , Fs4 
    .byte    W48
    .byte        N11   , Fn4 
    .byte    W12
    .byte                Ds4 
    .byte    W12
@ 009   ----------------------------------------
    .byte                Cs4 
    .byte    W12
    .byte        N05   
    .byte    W06
    .byte                Ds4 
    .byte    W06
    .byte        N44   , Fn4 
    .byte    W48
    .byte        N11   , Ds4 
    .byte    W12
    .byte                Cs4 
    .byte    W12
@ 010   ----------------------------------------
zelda2_1_010:
    .byte        N11   , Cn4 , v064
    .byte    W12
    .byte        N05   
    .byte    W06
    .byte                Dn4 
    .byte    W06
    .byte        N44   , En4 
    .byte    W48
    .byte        N23   , Gn4 
    .byte    W24
    .byte    PEND
@ 011   ----------------------------------------
    .byte        N08   , Fn4 
    .byte    W12
    .byte        N04   , Fn3 
    .byte    W06
    .byte        N04   
    .byte    W06
    .byte        N08   
    .byte    W12
    .byte        N04   
    .byte    W06
    .byte        N04   
    .byte    W06
    .byte        N08   
    .byte    W12
    .byte        N04   
    .byte    W06
    .byte        N04   
    .byte    W06
    .byte        N08   
    .byte    W12
    .byte        N08   
    .byte    W12
@ 012   ----------------------------------------
    .byte    PATT
     .word    zelda2_1_004
@ 013   ----------------------------------------
    .byte    PATT
     .word    zelda2_1_005
@ 014   ----------------------------------------
    .byte        N68   , As4 , v064
    .byte    W72
    .byte        N23   , Cs5 
    .byte    W24
@ 015   ----------------------------------------
    .byte        N12   , Cn5 
    .byte    W24
    .byte        N40   , An4 
    .byte    W48
    .byte        N23   , Fn4 
    .byte    W24
@ 016   ----------------------------------------
    .byte        N52   , Fs4 
    .byte    W72
    .byte        N23   , As4 
    .byte    W24
@ 017   ----------------------------------------
    .byte        N12   , An4 
    .byte    W24
    .byte        N40   , Fn4 
    .byte    W48
    .byte        N23   
    .byte    W24
@ 018   ----------------------------------------
    .byte        N44   , Fs4 
    .byte    W72
    .byte        N23   , As4 
    .byte    W24
@ 019   ----------------------------------------
    .byte        N11   , An4 
    .byte    W24
    .byte        N44   , Fn4 
    .byte    W48
    .byte        N23   , Dn4 
    .byte    W24
@ 020   ----------------------------------------
    .byte        N44   , Ds4 
    .byte    W72
    .byte        N23   , Fs4 
    .byte    W24
@ 021   ----------------------------------------
    .byte        N11   , Fn4 
    .byte    W24
    .byte        N44   , Cs4 
    .byte    W48
    .byte        N23   , As3 
    .byte    W24
@ 022   ----------------------------------------
    .byte    PATT
     .word    zelda2_1_010
@ 023   ----------------------------------------
    .byte        N08   , Fn4 , v064
    .byte    W12
    .byte        N04   , Fn3 
    .byte    W06
    .byte        N04   
    .byte    W06
    .byte        N08   
    .byte    W12
    .byte        N04   
    .byte    W06
    .byte        N04   
    .byte    W06
    .byte        N08   
    .byte    W12
    .byte        N04   
    .byte    W06
    .byte        N04   
    .byte    W06
    .byte        N08   
    .byte    W12
    .byte        N08   
    .byte    W08
@ 024   ----------------------------------------
    .byte GOTO
     .word zelda2_1_loop
    .byte W06    
@ 025   ----------------------------------------         
        .byte    FINE

@**************** Track 2 (Midi-Chn.2) ****************@

zelda2_2:
    .byte    KEYSH , zelda2_key+0
@ 000   ----------------------------------------
zalda2_2_loop:
    .byte        VOICE , 71
    .byte        VOL   , 95*zelda2_mvl/mxv
    .byte        PAN   , c_v-1
    .byte        N48   , Dn3 , v060
    .byte    W64
    .byte        N05   
    .byte    W08
    .byte        N05   
    .byte    W08
    .byte        N05   
    .byte    W08
    .byte        N05   
    .byte    W08
@ 001   ----------------------------------------
    .byte        N07   , Cn3 
    .byte    W16
    .byte        N05   
    .byte    W08
    .byte        N32   
    .byte    W48
    .byte        N05   
    .byte    W08
    .byte        N05   
    .byte    W08
    .byte        N05   
    .byte    W08
@ 002   ----------------------------------------
    .byte        N07   , Cs3 
    .byte    W16
    .byte        N05   
    .byte    W08
    .byte        N32   
    .byte    W40
    .byte        N05   
    .byte    W08
    .byte        N05   
    .byte    W08
    .byte        N05   
    .byte    W08
    .byte        N05   
    .byte    W08
@ 003   ----------------------------------------
    .byte        N11   
    .byte    W12
    .byte        N04   , An2 
    .byte    W06
    .byte        N04   
    .byte    W06
    .byte        N08   
    .byte    W12
    .byte        N04   
    .byte    W06
    .byte        N04   
    .byte    W06
    .byte        N08   
    .byte    W12
    .byte        N04   
    .byte    W06
    .byte        N04   
    .byte    W06
    .byte        N08   
    .byte    W12
    .byte        N08   
    .byte    W12
@ 004   ----------------------------------------
zelda2_2_004:
    .byte        N16   , Dn3 , v060
    .byte    W24
    .byte        N07   
    .byte    W08
    .byte        N07   
    .byte    W08
    .byte                Cn3 
    .byte    W08
    .byte        N11   , Dn3 
    .byte    W18
    .byte        N05   
    .byte    W06
    .byte        N05   
    .byte    W06
    .byte                Ds3 
    .byte    W06
    .byte                Fn3 
    .byte    W06
    .byte                Gn3 
    .byte    W06
    .byte    PEND
@ 005   ----------------------------------------
zelda2_2_005:
    .byte        N17   , Gs3 , v060
    .byte    W18
    .byte        N05   , As3 
    .byte    W06
    .byte        N05   
    .byte    W06
    .byte                Cn4 
    .byte    W06
    .byte                Dn4 
    .byte    W06
    .byte                Ds4 
    .byte    W06
    .byte        N11   , Fn4 
    .byte    W12
    .byte        N11   
    .byte    W12
    .byte        N07   , Gs3 
    .byte    W08
    .byte                As3 
    .byte    W08
    .byte                Cn4 
    .byte    W08
    .byte    PEND
@ 006   ----------------------------------------
    .byte        N17   , Cs4 
    .byte    W18
    .byte        N05   , Fs3 
    .byte    W06
    .byte        N05   
    .byte    W06
    .byte                Gs3 
    .byte    W06
    .byte                As3 
    .byte    W06
    .byte                Cn4 
    .byte    W06
    .byte        N11   , Cs4 
    .byte    W12
    .byte        N11   
    .byte    W12
    .byte        N07   
    .byte    W08
    .byte                Cn4 
    .byte    W08
    .byte                As3 
    .byte    W08
@ 007   ----------------------------------------
    .byte                Cs4 
    .byte    W16
    .byte                Gs3 
    .byte    W08
    .byte        N07   
    .byte    W08
    .byte        N07   
    .byte    W08
    .byte                Fs3 
    .byte    W08
    .byte                Gs3 
    .byte    W16
    .byte        N07   
    .byte    W08
    .byte        N07   
    .byte    W08
    .byte                Fs3 
    .byte    W08
    .byte                Gs3 
    .byte    W08
@ 008   ----------------------------------------
    .byte        N14   , Fs3 
    .byte    W16
    .byte        N03   
    .byte    W04
    .byte                Fn3 
    .byte    W04
    .byte        N15   , Fs3 
    .byte    W16
    .byte        N03   
    .byte    W04
    .byte                Gs3 
    .byte    W04
    .byte        N23   , As3 
    .byte    W24
    .byte        N11   , Gs3 
    .byte    W12
    .byte                Fs3 
    .byte    W12
@ 009   ----------------------------------------
    .byte        N15   , Fn3 
    .byte    W16
    .byte        N03   
    .byte    W04
    .byte                Ds3 
    .byte    W04
    .byte        N15   , Fn3 
    .byte    W16
    .byte        N03   
    .byte    W04
    .byte                Fs3 
    .byte    W04
    .byte        N23   , Gs3 
    .byte    W24
    .byte        N11   , Fs3 
    .byte    W12
    .byte                Fn3 
    .byte    W12
@ 010   ----------------------------------------
zelda2_2_010:
    .byte        N23   , En3 , v060
    .byte    W24
    .byte        N17   
    .byte    W18
    .byte        N05   , Fn3 
    .byte    W06
    .byte        N15   , Gn3 
    .byte    W16
    .byte        N03   
    .byte    W04
    .byte                An3 
    .byte    W04
    .byte        N11   , As3 
    .byte    W12
    .byte                Cn4 
    .byte    W12
    .byte    PEND
@ 011   ----------------------------------------
    .byte        N08   , An3 
    .byte    W12
    .byte        N04   , An2 
    .byte    W06
    .byte        N04   
    .byte    W06
    .byte        N08   
    .byte    W12
    .byte        N04   
    .byte    W06
    .byte        N04   
    .byte    W06
    .byte        N08   
    .byte    W12
    .byte        N04   
    .byte    W06
    .byte        N04   
    .byte    W06
    .byte        N08   
    .byte    W12
    .byte        N08   
    .byte    W12
@ 012   ----------------------------------------
    .byte    PATT
     .word    zelda2_2_004
@ 013   ----------------------------------------
    .byte    PATT
     .word    zelda2_2_005
@ 014   ----------------------------------------
    .byte        N68   , Cs4 , v060
    .byte    W72
    .byte        N23   , En4 
    .byte    W24
@ 015   ----------------------------------------
    .byte        N12   , Ds4 
    .byte    W24
    .byte        N40   , Cn4 
    .byte    W48
    .byte        N23   , An3 
    .byte    W24
@ 016   ----------------------------------------
    .byte        N52   , Bn3 
    .byte    W72
    .byte        N23   , Cs4 
    .byte    W24
@ 017   ----------------------------------------
    .byte        N11   , Cn4 
    .byte    W24
    .byte        N40   , An3 
    .byte    W48
    .byte        N23   
    .byte    W24
@ 018   ----------------------------------------
    .byte        N44   , Bn3 
    .byte    W72
    .byte        N23   , Cs4 
    .byte    W24
@ 019   ----------------------------------------
    .byte        N11   , Cn4 
    .byte    W24
    .byte        N44   , An3 
    .byte    W48
    .byte        N23   
    .byte    W24
@ 020   ----------------------------------------
    .byte        N44   , Fs3 
    .byte    W72
    .byte        N23   , Bn3 
    .byte    W24
@ 021   ----------------------------------------
    .byte        N11   , As3 
    .byte    W24
    .byte        N44   , Fn3 
    .byte    W48
    .byte        N23   , Cs3 
    .byte    W24
@ 022   ----------------------------------------
    .byte    PATT
     .word    zelda2_2_010
@ 023   ----------------------------------------
    .byte        N08   , An3 , v060
    .byte    W12
    .byte        N04   , An2 
    .byte    W06
    .byte        N04   
    .byte    W06
    .byte        N08   
    .byte    W12
    .byte        N04   
    .byte    W06
    .byte        N04   
    .byte    W06
    .byte        N08   
    .byte    W12
    .byte        N04   
    .byte    W06
    .byte        N04   
    .byte    W06
    .byte        N08   
    .byte    W12
    .byte        N08   
    .byte    W08
@ 024   ----------------------------------------
    .byte GOTO
     .word zelda2_2_loop
    .byte W06
@ 025   ----------------------------------------
    .byte    FINE

@**************** Track 3 (Midi-Chn.3) ****************@

zelda2_3:
    .byte    KEYSH , zelda2_key+0
@ 000   ----------------------------------------
zelda2_3_loop:
    .byte        VOICE , 15
    .byte        VOL   , 103*zelda2_mvl/mxv
    .byte        N16   , As1 , v127
    .byte    W24
    .byte        N05   
    .byte    W08
    .byte        N05   
    .byte    W08
    .byte        N05   
    .byte    W08
    .byte        N16   
    .byte    W24
    .byte        N05   
    .byte    W08
    .byte        N05   
    .byte    W08
    .byte        N05   
    .byte    W08
@ 001   ----------------------------------------
    .byte        N16   , Gs1 
    .byte    W24
    .byte        N05   
    .byte    W08
    .byte        N05   
    .byte    W08
    .byte        N05   
    .byte    W08
    .byte        N16   
    .byte    W24
    .byte        N05   
    .byte    W08
    .byte        N05   
    .byte    W08
    .byte        N05   
    .byte    W08
@ 002   ----------------------------------------
    .byte        N16   , Fs1 
    .byte    W24
    .byte        N05   
    .byte    W08
    .byte        N05   
    .byte    W08
    .byte        N05   
    .byte    W08
    .byte        N16   
    .byte    W24
    .byte        N05   
    .byte    W08
    .byte        N05   
    .byte    W08
    .byte        N05   
    .byte    W08
@ 003   ----------------------------------------
    .byte        N11   
    .byte    W24
    .byte        N08   , Fn1 
    .byte    W24
    .byte        N08   
    .byte    W24
    .byte        N11   , Gn1 
    .byte    W12
    .byte                An1 
    .byte    W12
@ 004   ----------------------------------------
zelda2_3_004:
    .byte        N08   , As1 , v127
    .byte    W24
    .byte        N05   
    .byte    W08
    .byte        N05   
    .byte    W08
    .byte                Gs1 
    .byte    W08
    .byte        N08   , As1 
    .byte    W24
    .byte        N08   
    .byte    W24
    .byte    PEND
@ 005   ----------------------------------------
zelda2_3_005:
    .byte        N08   , Gs1 , v127
    .byte    W24
    .byte        N05   
    .byte    W08
    .byte        N05   
    .byte    W08
    .byte                Fs1 
    .byte    W08
    .byte        N08   , Gs1 
    .byte    W24
    .byte        N08   
    .byte    W24
    .byte    PEND
@ 006   ----------------------------------------
zelda2_3_006:
    .byte        N08   , Fs1 , v127
    .byte    W24
    .byte        N05   
    .byte    W08
    .byte        N05   
    .byte    W08
    .byte                En1 
    .byte    W08
    .byte        N08   , Fs1 
    .byte    W24
    .byte        N08   
    .byte    W24
    .byte    PEND
@ 007   ----------------------------------------
    .byte        N11   , Cs2 
    .byte    W24
    .byte        N07   
    .byte    W08
    .byte        N07   
    .byte    W08
    .byte                Bn1 
    .byte    W08
    .byte        N11   , Cs2 
    .byte    W24
    .byte        N11   
    .byte    W24
@ 008   ----------------------------------------
    .byte                Bn1 
    .byte    W24
    .byte        N07   
    .byte    W08
    .byte        N07   
    .byte    W08
    .byte                As1 
    .byte    W08
    .byte        N11   , Bn1 
    .byte    W24
    .byte        N07   
    .byte    W08
    .byte        N07   
    .byte    W08
    .byte        N07   
    .byte    W08
@ 009   ----------------------------------------
    .byte        N11   , As1 
    .byte    W24
    .byte        N07   
    .byte    W08
    .byte        N07   
    .byte    W08
    .byte                Gs1 
    .byte    W08
    .byte        N11   , As1 
    .byte    W24
    .byte        N07   
    .byte    W08
    .byte        N07   
    .byte    W08
    .byte        N07   
    .byte    W08
@ 010   ----------------------------------------
    .byte        N11   , Cn2 
    .byte    W24
    .byte        N07   
    .byte    W08
    .byte        N07   
    .byte    W08
    .byte                As1 
    .byte    W08
    .byte        N11   , Cn2 
    .byte    W24
    .byte        N07   
    .byte    W08
    .byte        N07   
    .byte    W08
    .byte        N07   
    .byte    W08
@ 011   ----------------------------------------
    .byte        N08   , Fn1 
    .byte    W24
    .byte        N08   
    .byte    W24
    .byte        N08   
    .byte    W24
    .byte        N11   , Gn1 
    .byte    W12
    .byte                An1 
    .byte    W12
@ 012   ----------------------------------------
    .byte    PATT
     .word    zelda2_3_004
@ 013   ----------------------------------------
    .byte    PATT
     .word    zelda2_3_005
@ 014   ----------------------------------------
    .byte    PATT
     .word    zelda2_3_006
@ 015   ----------------------------------------
    .byte        N08   , Fn1 , v127
    .byte    W24
    .byte        N05   
    .byte    W08
    .byte        N05   
    .byte    W08
    .byte        N07   , Ds1 
    .byte    W08
    .byte        N08   , Fn1 
    .byte    W24
    .byte        N08   
    .byte    W24
@ 016   ----------------------------------------
zelda2_3_016:
    .byte        N05   , En1 , v127
    .byte    W08
    .byte                As1 
    .byte    W08
    .byte                Cs2 
    .byte    W08
    .byte                En2 
    .byte    W08
    .byte                As2 
    .byte    W08
    .byte                Cs3 
    .byte    W08
    .byte        N08   , En3 
    .byte    W48
    .byte    PEND
@ 017   ----------------------------------------
zelda2_3_017:
    .byte        N08   , Fn3 , v127
    .byte    W24
    .byte        N05   , Fn1 
    .byte    W08
    .byte        N05   
    .byte    W08
    .byte        N05   
    .byte    W08
    .byte        N08   
    .byte    W48
    .byte    PEND
@ 018   ----------------------------------------
    .byte    PATT
     .word    zelda2_3_016
@ 019   ----------------------------------------
    .byte    PATT
     .word    zelda2_3_017
@ 020   ----------------------------------------
    .byte        N08   , Bn1 , v127
    .byte    W24
    .byte        N05   
    .byte    W08
    .byte        N05   
    .byte    W08
    .byte                As1 
    .byte    W08
    .byte        N08   , Bn1 
    .byte    W24
    .byte        N05   
    .byte    W08
    .byte        N05   
    .byte    W08
    .byte        N05   
    .byte    W08
@ 021   ----------------------------------------
    .byte        N08   , As1 
    .byte    W24
    .byte        N05   
    .byte    W08
    .byte        N05   
    .byte    W08
    .byte                Gs1 
    .byte    W08
    .byte        N08   , As1 
    .byte    W24
    .byte        N05   
    .byte    W08
    .byte        N05   
    .byte    W08
    .byte        N05   
    .byte    W08
@ 022   ----------------------------------------
    .byte        N08   , Cn2 
    .byte    W24
    .byte        N05   
    .byte    W08
    .byte        N05   
    .byte    W08
    .byte        N05   
    .byte    W08
    .byte        N08   
    .byte    W24
    .byte        N05   
    .byte    W08
    .byte        N05   
    .byte    W08
    .byte        N05   
    .byte    W08
@ 023   ----------------------------------------
    .byte        N08   , Fn1 
    .byte    W24
    .byte        N08   
    .byte    W24
    .byte    W02
    .byte        N08   
    .byte    W22
    .byte        N11   , Gn1 
    .byte    W12
    .byte                An1 
    .byte    W11
@ 024   ----------------------------------------
    .byte GOTO
     .word zelda2_3_loop
    .byte W06
@ 025   ----------------------------------------
    .byte    FINE

@**************** Track 4 (Midi-Chn.10) ****************@

zelda2_4:
    .byte    KEYSH , zelda2_key+0
@ 000   ----------------------------------------
zelda2_4_loop:
    .byte        VOICE , 0
    .byte        VOL   , 100*zelda2_mvl/mxv
    .byte        N16   , Dn1 , v044
    .byte    W72
    .byte        N05   
    .byte    W08
    .byte        N05   
    .byte    W08
    .byte        N05   
    .byte    W08
@ 001   ----------------------------------------
zelda2_4_001:
    .byte        N16   , Dn1 , v044
    .byte    W72
    .byte        N05   
    .byte    W08
    .byte        N05   
    .byte    W08
    .byte        N05   
    .byte    W08
    .byte    PEND
@ 002   ----------------------------------------
    .byte    PATT
     .word    zelda2_4_001
@ 003   ----------------------------------------
    .byte        N08   , Dn1 , v044
    .byte    W24
    .byte        N08   
    .byte    W24
    .byte        N08   
    .byte    W24
    .byte        N08   
    .byte    W12
    .byte        N08   
    .byte    W12
@ 004   ----------------------------------------
zelda2_4_004:
    .byte        N08   , Dn1 , v044
    .byte    W24
    .byte        N05   
    .byte    W08
    .byte        N05   
    .byte    W08
    .byte        N05   
    .byte    W08
    .byte        N08   
    .byte    W24
    .byte        N08   
    .byte    W24
    .byte    PEND
@ 005   ----------------------------------------
    .byte    PATT
     .word    zelda2_4_004
@ 006   ----------------------------------------
    .byte    PATT
     .word    zelda2_4_004
@ 007   ----------------------------------------
    .byte    PATT
     .word    zelda2_4_004
@ 008   ----------------------------------------
    .byte    PATT
     .word    zelda2_4_004
@ 009   ----------------------------------------
    .byte    PATT
     .word    zelda2_4_004
@ 010   ----------------------------------------
    .byte    PATT
     .word    zelda2_4_004
@ 011   ----------------------------------------
    .byte    PATT
     .word    zelda2_4_004
@ 012   ----------------------------------------
    .byte    PATT
     .word    zelda2_4_004
@ 013   ----------------------------------------
    .byte    PATT
     .word    zelda2_4_004
@ 014   ----------------------------------------
    .byte    PATT
     .word    zelda2_4_004
@ 015   ----------------------------------------
    .byte    PATT
     .word    zelda2_4_004
@ 016   ----------------------------------------
    .byte    PATT
     .word    zelda2_4_004
@ 017   ----------------------------------------
    .byte    PATT
     .word    zelda2_4_004
@ 018   ----------------------------------------
    .byte    PATT
     .word    zelda2_4_004
@ 019   ----------------------------------------
    .byte    PATT
     .word    zelda2_4_004
@ 020   ----------------------------------------
    .byte    PATT
     .word    zelda2_4_004
@ 021   ----------------------------------------
    .byte    PATT
     .word    zelda2_4_004
@ 022   ----------------------------------------
    .byte    PATT
     .word    zelda2_4_004
@ 023   ----------------------------------------
    .byte        N08   , Dn1 , v044
    .byte    W24
    .byte        N05   
    .byte    W08
    .byte        N05   
    .byte    W08
    .byte        N05   
    .byte    W08
    .byte        N08   
    .byte    W24
    .byte        N08   
    .byte    W08
@ 024   ----------------------------------------
    .byte GOTO
     .word zelda2_4_loop
    .byte W06
@ 025   ----------------------------------------
    .byte    FINE

@******************************************************@
    .align    2

zelda2:
    .byte    4    @ NumTrks
    .byte    0    @ NumBlks
    .byte    zelda2_pri    @ Priority
    .byte    zelda2_rev    @ Reverb.

    .word    zelda2_grp

    .word    zelda2_1
    .word    zelda2_2
    .word    zelda2_3
    .word    zelda2_4

    .end
a few notes are played, maybe a second long, and then the game freezes.
I know I inserted it right O.o

It only looks like spaces would be wrong in the whole thing, in the original file they're okay. It's because of copying.
 
Last edited:

clonex25

Just droppin' by...
74
Posts
16
Years
thx, I'll try it out now ^^

@DJG: Try to download Anvil Studio.
I did it because I searched for programs which loop automatically (I was even able to loop a song, but only one instrument and that sounded odd..so I make it manually now ^^)
However, I was able to change the volume of my sound easily, and u can choose which instrument should have which volume.

E: didn't work :'(
what did I do wrong?
I think I just don't understand WHERE to put the songname_1_loop:

Code:
    .include "MPlayDef.s"

    .equ    zelda2_grp, voicegroup000
    .equ    zelda2_pri, 0
    .equ    zelda2_rev, 0
    .equ    zelda2_mvl, 127
    .equ    zelda2_key, 0
    .equ    zelda2_tbs, 1
    .equ    zelda2_exg, 0
    .equ    zelda2_cmp, 1

    .section .rodata
    .global    zelda2
    .align    2

@**************** Track 1 (Midi-Chn.1) ****************@

zelda2_1:
    .byte    KEYSH , zelda2_key+0
@ 000   ----------------------------------------
    .byte    TEMPO , 148*zelda2_tbs/2
    .byte        VOICE , 71
    .byte        VOL   , 74*zelda2_mvl/mxv
    .byte        N48   , As3 , v064
    .byte    W64
    .byte        N05   
    .byte    W08
    .byte        N05   
    .byte    W08
    .byte        N05   
    .byte    W08
    .byte        N05   
    .byte    W08
@ 001   ----------------------------------------
zelda2_1_loop:
    .byte        N07   , As3 , v064
    .byte    W16
    .byte        N05   , Gs3 
    .byte    W08
    .byte        N32   , As3 
    .byte    W40
    .byte        N05   
    .byte    W08
    .byte        N05   
    .byte    W08
    .byte        N05   
    .byte    W08
    .byte        N05   
    .byte    W08
    .byte    PEND
@ 002   ----------------------------------------
    .byte    PATT
     .word    zelda2_1_001
@ 003   ----------------------------------------
    .byte        N08   , As3 , v064
    .byte    W12
    .byte        N04   , Fn3 
    .byte    W06
    .byte        N04   
    .byte    W06
    .byte        N08   
    .byte    W12
    .byte        N04   
    .byte    W06
    .byte        N04   
    .byte    W06
    .byte        N08   
    .byte    W12
    .byte        N04   
    .byte    W06
    .byte        N04   
    .byte    W06
    .byte        N08   
    .byte    W12
    .byte        N08   
    .byte    W12
@ 004   ----------------------------------------
zelda2_1_004:
    .byte        N16   , As3 , v064
    .byte    W24
    .byte        N32   , Fn3 
    .byte    W42
    .byte        N05   , As3 
    .byte    W06
    .byte        N05   
    .byte    W06
    .byte                Cn4 
    .byte    W06
    .byte                Dn4 
    .byte    W06
    .byte                Ds4 
    .byte    W06
    .byte    PEND
@ 005   ----------------------------------------
zelda2_1_005:
    .byte        N44   , Fn4 , v064
    .byte    W60
    .byte        N08   
    .byte    W12
    .byte        N07   
    .byte    W08
    .byte                Fs4 
    .byte    W08
    .byte                Gs4 
    .byte    W08
    .byte    PEND
@ 006   ----------------------------------------
    .byte        N54   , As4 
    .byte    W56
    .byte        N07   
    .byte    W08
    .byte        N07   
    .byte    W08
    .byte        N07   
    .byte    W08
    .byte                Gs4 
    .byte    W08
    .byte                Fs4 
    .byte    W08
@ 007   ----------------------------------------
    .byte                Gs4 
    .byte    W16
    .byte                Fs4 
    .byte    W08
    .byte        N44   , Fn4 
    .byte    W48
    .byte        N23   
    .byte    W24
@ 008   ----------------------------------------
    .byte        N11   , Ds4 
    .byte    W12
    .byte        N05   
    .byte    W06
    .byte                Fn4 
    .byte    W06
    .byte        N44   , Fs4 
    .byte    W48
    .byte        N11   , Fn4 
    .byte    W12
    .byte                Ds4 
    .byte    W12
@ 009   ----------------------------------------
    .byte                Cs4 
    .byte    W12
    .byte        N05   
    .byte    W06
    .byte                Ds4 
    .byte    W06
    .byte        N44   , Fn4 
    .byte    W48
    .byte        N11   , Ds4 
    .byte    W12
    .byte                Cs4 
    .byte    W12
@ 010   ----------------------------------------
zelda2_1_010:
    .byte        N11   , Cn4 , v064
    .byte    W12
    .byte        N05   
    .byte    W06
    .byte                Dn4 
    .byte    W06
    .byte        N44   , En4 
    .byte    W48
    .byte        N23   , Gn4 
    .byte    W24
    .byte    PEND
@ 011   ----------------------------------------
    .byte        N08   , Fn4 
    .byte    W12
    .byte        N04   , Fn3 
    .byte    W06
    .byte        N04   
    .byte    W06
    .byte        N08   
    .byte    W12
    .byte        N04   
    .byte    W06
    .byte        N04   
    .byte    W06
    .byte        N08   
    .byte    W12
    .byte        N04   
    .byte    W06
    .byte        N04   
    .byte    W06
    .byte        N08   
    .byte    W12
    .byte        N08   
    .byte    W12
@ 012   ----------------------------------------
    .byte    PATT
     .word    zelda2_1_004
@ 013   ----------------------------------------
    .byte    PATT
     .word    zelda2_1_005
@ 014   ----------------------------------------
    .byte        N68   , As4 , v064
    .byte    W72
    .byte        N23   , Cs5 
    .byte    W24
@ 015   ----------------------------------------
    .byte        N12   , Cn5 
    .byte    W24
    .byte        N40   , An4 
    .byte    W48
    .byte        N23   , Fn4 
    .byte    W24
@ 016   ----------------------------------------
    .byte        N52   , Fs4 
    .byte    W72
    .byte        N23   , As4 
    .byte    W24
@ 017   ----------------------------------------
    .byte        N12   , An4 
    .byte    W24
    .byte        N40   , Fn4 
    .byte    W48
    .byte        N23   
    .byte    W24
@ 018   ----------------------------------------
    .byte        N44   , Fs4 
    .byte    W72
    .byte        N23   , As4 
    .byte    W24
@ 019   ----------------------------------------
    .byte        N11   , An4 
    .byte    W24
    .byte        N44   , Fn4 
    .byte    W48
    .byte        N23   , Dn4 
    .byte    W24
@ 020   ----------------------------------------
    .byte        N44   , Ds4 
    .byte    W72
    .byte        N23   , Fs4 
    .byte    W24
@ 021   ----------------------------------------
    .byte        N11   , Fn4 
    .byte    W24
    .byte        N44   , Cs4 
    .byte    W48
    .byte        N23   , As3 
    .byte    W24
@ 022   ----------------------------------------
    .byte    PATT
     .word    zelda2_1_010
@ 023   ----------------------------------------
    .byte        N08   , Fn4 , v064
    .byte    W12
    .byte        N04   , Fn3 
    .byte    W06
    .byte        N04   
    .byte    W06
    .byte        N08   
    .byte    W12
    .byte        N04   
    .byte    W06
    .byte        N04   
    .byte    W06
    .byte        N08   
    .byte    W12
    .byte        N04   
    .byte    W06
    .byte        N04   
    .byte    W06
    .byte        N08   
    .byte    W12
    .byte        N08   
    .byte    W08
@ 024   ----------------------------------------
    .byte GOTO
     .word zelda2_1_loop
    .byte W06    
@ 025   ----------------------------------------         
        .byte    FINE

@**************** Track 2 (Midi-Chn.2) ****************@

zelda2_2:
    .byte    KEYSH , zelda2_key+0
@ 000   ----------------------------------------
zalda2_2_loop:
    .byte        VOICE , 71
    .byte        VOL   , 95*zelda2_mvl/mxv
    .byte        PAN   , c_v-1
    .byte        N48   , Dn3 , v060
    .byte    W64
    .byte        N05   
    .byte    W08
    .byte        N05   
    .byte    W08
    .byte        N05   
    .byte    W08
    .byte        N05   
    .byte    W08
@ 001   ----------------------------------------
    .byte        N07   , Cn3 
    .byte    W16
    .byte        N05   
    .byte    W08
    .byte        N32   
    .byte    W48
    .byte        N05   
    .byte    W08
    .byte        N05   
    .byte    W08
    .byte        N05   
    .byte    W08
@ 002   ----------------------------------------
    .byte        N07   , Cs3 
    .byte    W16
    .byte        N05   
    .byte    W08
    .byte        N32   
    .byte    W40
    .byte        N05   
    .byte    W08
    .byte        N05   
    .byte    W08
    .byte        N05   
    .byte    W08
    .byte        N05   
    .byte    W08
@ 003   ----------------------------------------
    .byte        N11   
    .byte    W12
    .byte        N04   , An2 
    .byte    W06
    .byte        N04   
    .byte    W06
    .byte        N08   
    .byte    W12
    .byte        N04   
    .byte    W06
    .byte        N04   
    .byte    W06
    .byte        N08   
    .byte    W12
    .byte        N04   
    .byte    W06
    .byte        N04   
    .byte    W06
    .byte        N08   
    .byte    W12
    .byte        N08   
    .byte    W12
@ 004   ----------------------------------------
zelda2_2_004:
    .byte        N16   , Dn3 , v060
    .byte    W24
    .byte        N07   
    .byte    W08
    .byte        N07   
    .byte    W08
    .byte                Cn3 
    .byte    W08
    .byte        N11   , Dn3 
    .byte    W18
    .byte        N05   
    .byte    W06
    .byte        N05   
    .byte    W06
    .byte                Ds3 
    .byte    W06
    .byte                Fn3 
    .byte    W06
    .byte                Gn3 
    .byte    W06
    .byte    PEND
@ 005   ----------------------------------------
zelda2_2_005:
    .byte        N17   , Gs3 , v060
    .byte    W18
    .byte        N05   , As3 
    .byte    W06
    .byte        N05   
    .byte    W06
    .byte                Cn4 
    .byte    W06
    .byte                Dn4 
    .byte    W06
    .byte                Ds4 
    .byte    W06
    .byte        N11   , Fn4 
    .byte    W12
    .byte        N11   
    .byte    W12
    .byte        N07   , Gs3 
    .byte    W08
    .byte                As3 
    .byte    W08
    .byte                Cn4 
    .byte    W08
    .byte    PEND
@ 006   ----------------------------------------
    .byte        N17   , Cs4 
    .byte    W18
    .byte        N05   , Fs3 
    .byte    W06
    .byte        N05   
    .byte    W06
    .byte                Gs3 
    .byte    W06
    .byte                As3 
    .byte    W06
    .byte                Cn4 
    .byte    W06
    .byte        N11   , Cs4 
    .byte    W12
    .byte        N11   
    .byte    W12
    .byte        N07   
    .byte    W08
    .byte                Cn4 
    .byte    W08
    .byte                As3 
    .byte    W08
@ 007   ----------------------------------------
    .byte                Cs4 
    .byte    W16
    .byte                Gs3 
    .byte    W08
    .byte        N07   
    .byte    W08
    .byte        N07   
    .byte    W08
    .byte                Fs3 
    .byte    W08
    .byte                Gs3 
    .byte    W16
    .byte        N07   
    .byte    W08
    .byte        N07   
    .byte    W08
    .byte                Fs3 
    .byte    W08
    .byte                Gs3 
    .byte    W08
@ 008   ----------------------------------------
    .byte        N14   , Fs3 
    .byte    W16
    .byte        N03   
    .byte    W04
    .byte                Fn3 
    .byte    W04
    .byte        N15   , Fs3 
    .byte    W16
    .byte        N03   
    .byte    W04
    .byte                Gs3 
    .byte    W04
    .byte        N23   , As3 
    .byte    W24
    .byte        N11   , Gs3 
    .byte    W12
    .byte                Fs3 
    .byte    W12
@ 009   ----------------------------------------
    .byte        N15   , Fn3 
    .byte    W16
    .byte        N03   
    .byte    W04
    .byte                Ds3 
    .byte    W04
    .byte        N15   , Fn3 
    .byte    W16
    .byte        N03   
    .byte    W04
    .byte                Fs3 
    .byte    W04
    .byte        N23   , Gs3 
    .byte    W24
    .byte        N11   , Fs3 
    .byte    W12
    .byte                Fn3 
    .byte    W12
@ 010   ----------------------------------------
zelda2_2_010:
    .byte        N23   , En3 , v060
    .byte    W24
    .byte        N17   
    .byte    W18
    .byte        N05   , Fn3 
    .byte    W06
    .byte        N15   , Gn3 
    .byte    W16
    .byte        N03   
    .byte    W04
    .byte                An3 
    .byte    W04
    .byte        N11   , As3 
    .byte    W12
    .byte                Cn4 
    .byte    W12
    .byte    PEND
@ 011   ----------------------------------------
    .byte        N08   , An3 
    .byte    W12
    .byte        N04   , An2 
    .byte    W06
    .byte        N04   
    .byte    W06
    .byte        N08   
    .byte    W12
    .byte        N04   
    .byte    W06
    .byte        N04   
    .byte    W06
    .byte        N08   
    .byte    W12
    .byte        N04   
    .byte    W06
    .byte        N04   
    .byte    W06
    .byte        N08   
    .byte    W12
    .byte        N08   
    .byte    W12
@ 012   ----------------------------------------
    .byte    PATT
     .word    zelda2_2_004
@ 013   ----------------------------------------
    .byte    PATT
     .word    zelda2_2_005
@ 014   ----------------------------------------
    .byte        N68   , Cs4 , v060
    .byte    W72
    .byte        N23   , En4 
    .byte    W24
@ 015   ----------------------------------------
    .byte        N12   , Ds4 
    .byte    W24
    .byte        N40   , Cn4 
    .byte    W48
    .byte        N23   , An3 
    .byte    W24
@ 016   ----------------------------------------
    .byte        N52   , Bn3 
    .byte    W72
    .byte        N23   , Cs4 
    .byte    W24
@ 017   ----------------------------------------
    .byte        N11   , Cn4 
    .byte    W24
    .byte        N40   , An3 
    .byte    W48
    .byte        N23   
    .byte    W24
@ 018   ----------------------------------------
    .byte        N44   , Bn3 
    .byte    W72
    .byte        N23   , Cs4 
    .byte    W24
@ 019   ----------------------------------------
    .byte        N11   , Cn4 
    .byte    W24
    .byte        N44   , An3 
    .byte    W48
    .byte        N23   
    .byte    W24
@ 020   ----------------------------------------
    .byte        N44   , Fs3 
    .byte    W72
    .byte        N23   , Bn3 
    .byte    W24
@ 021   ----------------------------------------
    .byte        N11   , As3 
    .byte    W24
    .byte        N44   , Fn3 
    .byte    W48
    .byte        N23   , Cs3 
    .byte    W24
@ 022   ----------------------------------------
    .byte    PATT
     .word    zelda2_2_010
@ 023   ----------------------------------------
    .byte        N08   , An3 , v060
    .byte    W12
    .byte        N04   , An2 
    .byte    W06
    .byte        N04   
    .byte    W06
    .byte        N08   
    .byte    W12
    .byte        N04   
    .byte    W06
    .byte        N04   
    .byte    W06
    .byte        N08   
    .byte    W12
    .byte        N04   
    .byte    W06
    .byte        N04   
    .byte    W06
    .byte        N08   
    .byte    W12
    .byte        N08   
    .byte    W08
@ 024   ----------------------------------------
    .byte GOTO
     .word zelda2_2_loop
    .byte W06
@ 025   ----------------------------------------
    .byte    FINE

@**************** Track 3 (Midi-Chn.3) ****************@

zelda2_3:
    .byte    KEYSH , zelda2_key+0
@ 000   ----------------------------------------
zelda2_3_loop:
    .byte        VOICE , 15
    .byte        VOL   , 103*zelda2_mvl/mxv
    .byte        N16   , As1 , v127
    .byte    W24
    .byte        N05   
    .byte    W08
    .byte        N05   
    .byte    W08
    .byte        N05   
    .byte    W08
    .byte        N16   
    .byte    W24
    .byte        N05   
    .byte    W08
    .byte        N05   
    .byte    W08
    .byte        N05   
    .byte    W08
@ 001   ----------------------------------------
    .byte        N16   , Gs1 
    .byte    W24
    .byte        N05   
    .byte    W08
    .byte        N05   
    .byte    W08
    .byte        N05   
    .byte    W08
    .byte        N16   
    .byte    W24
    .byte        N05   
    .byte    W08
    .byte        N05   
    .byte    W08
    .byte        N05   
    .byte    W08
@ 002   ----------------------------------------
    .byte        N16   , Fs1 
    .byte    W24
    .byte        N05   
    .byte    W08
    .byte        N05   
    .byte    W08
    .byte        N05   
    .byte    W08
    .byte        N16   
    .byte    W24
    .byte        N05   
    .byte    W08
    .byte        N05   
    .byte    W08
    .byte        N05   
    .byte    W08
@ 003   ----------------------------------------
    .byte        N11   
    .byte    W24
    .byte        N08   , Fn1 
    .byte    W24
    .byte        N08   
    .byte    W24
    .byte        N11   , Gn1 
    .byte    W12
    .byte                An1 
    .byte    W12
@ 004   ----------------------------------------
zelda2_3_004:
    .byte        N08   , As1 , v127
    .byte    W24
    .byte        N05   
    .byte    W08
    .byte        N05   
    .byte    W08
    .byte                Gs1 
    .byte    W08
    .byte        N08   , As1 
    .byte    W24
    .byte        N08   
    .byte    W24
    .byte    PEND
@ 005   ----------------------------------------
zelda2_3_005:
    .byte        N08   , Gs1 , v127
    .byte    W24
    .byte        N05   
    .byte    W08
    .byte        N05   
    .byte    W08
    .byte                Fs1 
    .byte    W08
    .byte        N08   , Gs1 
    .byte    W24
    .byte        N08   
    .byte    W24
    .byte    PEND
@ 006   ----------------------------------------
zelda2_3_006:
    .byte        N08   , Fs1 , v127
    .byte    W24
    .byte        N05   
    .byte    W08
    .byte        N05   
    .byte    W08
    .byte                En1 
    .byte    W08
    .byte        N08   , Fs1 
    .byte    W24
    .byte        N08   
    .byte    W24
    .byte    PEND
@ 007   ----------------------------------------
    .byte        N11   , Cs2 
    .byte    W24
    .byte        N07   
    .byte    W08
    .byte        N07   
    .byte    W08
    .byte                Bn1 
    .byte    W08
    .byte        N11   , Cs2 
    .byte    W24
    .byte        N11   
    .byte    W24
@ 008   ----------------------------------------
    .byte                Bn1 
    .byte    W24
    .byte        N07   
    .byte    W08
    .byte        N07   
    .byte    W08
    .byte                As1 
    .byte    W08
    .byte        N11   , Bn1 
    .byte    W24
    .byte        N07   
    .byte    W08
    .byte        N07   
    .byte    W08
    .byte        N07   
    .byte    W08
@ 009   ----------------------------------------
    .byte        N11   , As1 
    .byte    W24
    .byte        N07   
    .byte    W08
    .byte        N07   
    .byte    W08
    .byte                Gs1 
    .byte    W08
    .byte        N11   , As1 
    .byte    W24
    .byte        N07   
    .byte    W08
    .byte        N07   
    .byte    W08
    .byte        N07   
    .byte    W08
@ 010   ----------------------------------------
    .byte        N11   , Cn2 
    .byte    W24
    .byte        N07   
    .byte    W08
    .byte        N07   
    .byte    W08
    .byte                As1 
    .byte    W08
    .byte        N11   , Cn2 
    .byte    W24
    .byte        N07   
    .byte    W08
    .byte        N07   
    .byte    W08
    .byte        N07   
    .byte    W08
@ 011   ----------------------------------------
    .byte        N08   , Fn1 
    .byte    W24
    .byte        N08   
    .byte    W24
    .byte        N08   
    .byte    W24
    .byte        N11   , Gn1 
    .byte    W12
    .byte                An1 
    .byte    W12
@ 012   ----------------------------------------
    .byte    PATT
     .word    zelda2_3_004
@ 013   ----------------------------------------
    .byte    PATT
     .word    zelda2_3_005
@ 014   ----------------------------------------
    .byte    PATT
     .word    zelda2_3_006
@ 015   ----------------------------------------
    .byte        N08   , Fn1 , v127
    .byte    W24
    .byte        N05   
    .byte    W08
    .byte        N05   
    .byte    W08
    .byte        N07   , Ds1 
    .byte    W08
    .byte        N08   , Fn1 
    .byte    W24
    .byte        N08   
    .byte    W24
@ 016   ----------------------------------------
zelda2_3_016:
    .byte        N05   , En1 , v127
    .byte    W08
    .byte                As1 
    .byte    W08
    .byte                Cs2 
    .byte    W08
    .byte                En2 
    .byte    W08
    .byte                As2 
    .byte    W08
    .byte                Cs3 
    .byte    W08
    .byte        N08   , En3 
    .byte    W48
    .byte    PEND
@ 017   ----------------------------------------
zelda2_3_017:
    .byte        N08   , Fn3 , v127
    .byte    W24
    .byte        N05   , Fn1 
    .byte    W08
    .byte        N05   
    .byte    W08
    .byte        N05   
    .byte    W08
    .byte        N08   
    .byte    W48
    .byte    PEND
@ 018   ----------------------------------------
    .byte    PATT
     .word    zelda2_3_016
@ 019   ----------------------------------------
    .byte    PATT
     .word    zelda2_3_017
@ 020   ----------------------------------------
    .byte        N08   , Bn1 , v127
    .byte    W24
    .byte        N05   
    .byte    W08
    .byte        N05   
    .byte    W08
    .byte                As1 
    .byte    W08
    .byte        N08   , Bn1 
    .byte    W24
    .byte        N05   
    .byte    W08
    .byte        N05   
    .byte    W08
    .byte        N05   
    .byte    W08
@ 021   ----------------------------------------
    .byte        N08   , As1 
    .byte    W24
    .byte        N05   
    .byte    W08
    .byte        N05   
    .byte    W08
    .byte                Gs1 
    .byte    W08
    .byte        N08   , As1 
    .byte    W24
    .byte        N05   
    .byte    W08
    .byte        N05   
    .byte    W08
    .byte        N05   
    .byte    W08
@ 022   ----------------------------------------
    .byte        N08   , Cn2 
    .byte    W24
    .byte        N05   
    .byte    W08
    .byte        N05   
    .byte    W08
    .byte        N05   
    .byte    W08
    .byte        N08   
    .byte    W24
    .byte        N05   
    .byte    W08
    .byte        N05   
    .byte    W08
    .byte        N05   
    .byte    W08
@ 023   ----------------------------------------
    .byte        N08   , Fn1 
    .byte    W24
    .byte        N08   
    .byte    W24
    .byte    W02
    .byte        N08   
    .byte    W22
    .byte        N11   , Gn1 
    .byte    W12
    .byte                An1 
    .byte    W11
@ 024   ----------------------------------------
    .byte GOTO
     .word zelda2_3_loop
    .byte W06
@ 025   ----------------------------------------
    .byte    FINE

@**************** Track 4 (Midi-Chn.10) ****************@

zelda2_4:
    .byte    KEYSH , zelda2_key+0
@ 000   ----------------------------------------
zelda2_4_loop:
    .byte        VOICE , 0
    .byte        VOL   , 100*zelda2_mvl/mxv
    .byte        N16   , Dn1 , v044
    .byte    W72
    .byte        N05   
    .byte    W08
    .byte        N05   
    .byte    W08
    .byte        N05   
    .byte    W08
@ 001   ----------------------------------------
zelda2_4_001:
    .byte        N16   , Dn1 , v044
    .byte    W72
    .byte        N05   
    .byte    W08
    .byte        N05   
    .byte    W08
    .byte        N05   
    .byte    W08
    .byte    PEND
@ 002   ----------------------------------------
    .byte    PATT
     .word    zelda2_4_001
@ 003   ----------------------------------------
    .byte        N08   , Dn1 , v044
    .byte    W24
    .byte        N08   
    .byte    W24
    .byte        N08   
    .byte    W24
    .byte        N08   
    .byte    W12
    .byte        N08   
    .byte    W12
@ 004   ----------------------------------------
zelda2_4_004:
    .byte        N08   , Dn1 , v044
    .byte    W24
    .byte        N05   
    .byte    W08
    .byte        N05   
    .byte    W08
    .byte        N05   
    .byte    W08
    .byte        N08   
    .byte    W24
    .byte        N08   
    .byte    W24
    .byte    PEND
@ 005   ----------------------------------------
    .byte    PATT
     .word    zelda2_4_004
@ 006   ----------------------------------------
    .byte    PATT
     .word    zelda2_4_004
@ 007   ----------------------------------------
    .byte    PATT
     .word    zelda2_4_004
@ 008   ----------------------------------------
    .byte    PATT
     .word    zelda2_4_004
@ 009   ----------------------------------------
    .byte    PATT
     .word    zelda2_4_004
@ 010   ----------------------------------------
    .byte    PATT
     .word    zelda2_4_004
@ 011   ----------------------------------------
    .byte    PATT
     .word    zelda2_4_004
@ 012   ----------------------------------------
    .byte    PATT
     .word    zelda2_4_004
@ 013   ----------------------------------------
    .byte    PATT
     .word    zelda2_4_004
@ 014   ----------------------------------------
    .byte    PATT
     .word    zelda2_4_004
@ 015   ----------------------------------------
    .byte    PATT
     .word    zelda2_4_004
@ 016   ----------------------------------------
    .byte    PATT
     .word    zelda2_4_004
@ 017   ----------------------------------------
    .byte    PATT
     .word    zelda2_4_004
@ 018   ----------------------------------------
    .byte    PATT
     .word    zelda2_4_004
@ 019   ----------------------------------------
    .byte    PATT
     .word    zelda2_4_004
@ 020   ----------------------------------------
    .byte    PATT
     .word    zelda2_4_004
@ 021   ----------------------------------------
    .byte    PATT
     .word    zelda2_4_004
@ 022   ----------------------------------------
    .byte    PATT
     .word    zelda2_4_004
@ 023   ----------------------------------------
    .byte        N08   , Dn1 , v044
    .byte    W24
    .byte        N05   
    .byte    W08
    .byte        N05   
    .byte    W08
    .byte        N05   
    .byte    W08
    .byte        N08   
    .byte    W24
    .byte        N08   
    .byte    W08
@ 024   ----------------------------------------
    .byte GOTO
     .word zelda2_4_loop
    .byte W06
@ 025   ----------------------------------------
    .byte    FINE

@******************************************************@
    .align    2

zelda2:
    .byte    4    @ NumTrks
    .byte    0    @ NumBlks
    .byte    zelda2_pri    @ Priority
    .byte    zelda2_rev    @ Reverb.

    .word    zelda2_grp

    .word    zelda2_1
    .word    zelda2_2
    .word    zelda2_3
    .word    zelda2_4

    .end
a few notes are played, maybe a second long, and then the game freezes.
I know I inserted it right O.o

It only looks like spaces would be wrong in the whole thing, in the original file they're okay. It's because of copying.

Code:
@ 000   ----------------------------------------
[B]zalda2_2_loop:[/B] --- This is where things went wrong...
    .byte        VOICE , 71
    .byte        VOL   , 95*zelda2_mvl/mxv
    .byte        PAN   , c_v-1
    .byte        N48   , Dn3 , v060

Always check the spelling of your labels before inserting it in Sappy. Also, i recommend to place the labels AFTER the track's major info. Like this:

Code:
@ 000   ----------------------------------------
    .byte        VOICE , 71
    .byte        VOL   , 95*zelda2_mvl/mxv
    .byte        PAN   , c_v-1
zelda2_2_loop:
    .byte        N48   , Dn3 , v060

One more question: Do you expect that the looping starts at @001 (Measure 2 in MIDI)? If yes, then you should place the loop in it and place it BEFORE the pattern labels for example:

Code:
@ 001   ----------------------------------------
zelda2_2_loop:
zelda2_2_001:
...

@DJG: I've checked your code and I found no problems regarding the loop placements. Can you PM me for a link to the files you want to insert so that I may know the problem (actually, zel has encountered no porblem for Cyrus' Battle theme, which is from D/P and some Final Fantasy music, for Carlos' battle theme).
 
Last edited:

Master_Track

ROM Reaverz Scripter
916
Posts
16
Years
wow thx, I think I understand it now :)
try it out today.
And now I'll check the spelling 2 times xD
 

clonex25

Just droppin' by...
74
Posts
16
Years
hey... I got a question, but before that, I noticed this in your first post...

from that, is it the last track in new bark song?
if so, then does that mean we can only add music which is only up to 10?

other than that, it's a great tutorial. :)

No, the one you showed me (newbark_1_010:) is a pattern label. You may use any number of tracks as you want (just like in Zoids Legacy, which has 12 tracks) butI recommend to limit it to 10 tracks, as the Pokemon ROMs suggest.
 

destinedjagold

You can contact me in PC's discord server...
8,593
Posts
16
Years
  • Age 33
  • Seen Dec 23, 2023
hm.., I see, so ten tracks, ei, so I guess it's the safest. :3

also, yeah, I'll PM you the link. thankies in advance...
 

Magnius

Pokemon Music Hacking Guru
295
Posts
18
Years
  • Seen Feb 17, 2014
I think I've pretty much given up on successfully looping. Just too hard a concept for me to grasp. I mean it's like, how do you know what measure it is? How do you know where to loop? Too complicated. When the thing started crashing I pretty much said screw it because looping doesn't make sense to me(Could've sworn I put a loop in like 3 different places on a track and it still looped the same thing, I mean what sense does that make?).
 
Last edited:

Master_Track

ROM Reaverz Scripter
916
Posts
16
Years
I tryed loopin quite often now, and again instead of looping, the game freezes when the sound ends and the last note keeps on playing...
I'm really sure I looped it right, I did it exactly like in ur examples O.o

but well, then I'll have to try again..and again..and again, untill it works.
 
Status
Not open for further replies.
Back
Top