mirror of
https://github.com/Pecusx/dino-game.git
synced 2026-05-21 06:39:38 +02:00
91 lines
1.7 KiB
Plaintext
91 lines
1.7 KiB
Plaintext
|
|
/*
|
|
MPT Relocator
|
|
|
|
$0000..$003F - 32 adresy brzmien (LSB/MSB), bajty $00,$00 oznaczaja ze dane brzmienie jest puste
|
|
$0040..$00BF - 64 adresy patternow (LSB/MSB), bajty $00,$00 oznaczaja ze dany pattern jest pusty
|
|
$01C0..$01C3 - mlodsze bajty adresow trackow
|
|
$01C4..$01C7 - starsze bajty adresow trackow
|
|
$01C8..$01C8 - dlugosc patternow (wartosci - $10,$20,$30 lub $40)
|
|
$01C9..$01C9 - tempo utworu
|
|
|
|
Example:
|
|
mpt_relocator 'file.mpt' , new_address
|
|
*/
|
|
|
|
.macro mpt_relocator
|
|
|
|
.get :1 // wczytujemy plik do bufora MADS'a
|
|
|
|
ift (.wget[0]) <> $FFFF
|
|
ert 'Bad file format'
|
|
eif
|
|
|
|
new_add equ :2 // nowy adres dla modulu MPT
|
|
|
|
old_add equ .wget[2] // stary adres modulu MPT
|
|
|
|
.def ?length = .wget[4] - old_add + 1 // dlugosc pliku MPT bez naglowka DOS'u
|
|
|
|
.put[2] = .lo(new_add) // poprawiamy naglowek DOS'a
|
|
.put[3] = .hi(new_add) // tak aby zawieral informacje o nowym
|
|
|
|
.put[4] = .lo(new_add + ?length - 1) // adresie modulu MPT
|
|
.put[5] = .hi(new_add + ?length - 1)
|
|
|
|
ofs equ 6
|
|
|
|
.def ?lenpat = .get[ofs+$1c8]
|
|
.def ?speed = .get[ofs+$1c9]
|
|
|
|
// instruments
|
|
|
|
.rept 32
|
|
|
|
?tmp = .wget[ofs+#*2]
|
|
|
|
ift ?tmp <> 0
|
|
?hlp = ?tmp - old_add + new_add
|
|
|
|
.put[ofs+#*2] = .lo(?hlp)
|
|
.put[ofs+#*2+1] = .hi(?hlp)
|
|
eif
|
|
|
|
.endr
|
|
|
|
// patterns
|
|
|
|
.rept 64
|
|
|
|
?tmp = .wget[ofs+$40+#*2]
|
|
|
|
ift ?tmp <> 0
|
|
?hlp = ?tmp - old_add + new_add
|
|
|
|
.put[ofs+$40+#*2] = .lo(?hlp)
|
|
.put[ofs+$40+#*2+1] = .hi(?hlp)
|
|
eif
|
|
|
|
.endr
|
|
|
|
// 4 tracks
|
|
|
|
.rept 4
|
|
|
|
?tmp = .get[ofs+$1c0+#] + .get[ofs+$1c4+#]<<8
|
|
|
|
ift ?tmp <> 0
|
|
?hlp = ?tmp - old_add + new_add
|
|
|
|
.put[ofs+$1c0+#] = .lo(?hlp)
|
|
.put[ofs+$1c4+#] = .hi(?hlp)
|
|
eif
|
|
|
|
.endr
|
|
|
|
// out new file
|
|
|
|
; .sav 'test.mpt',?length + 6 // zapisujemy zawartosc bufora MADS'a do pliku
|
|
|
|
.endm
|