使用五線譜來(lái)直接寫入洛克人3-6(CAPCOM1990)的方法
所需資料:https://www.romhacking.net/documents/634/
以下是洛克人3-6(CAPCOM1990)中的所有指令,其中大部分指令都是需要學(xué)的,附注部分解釋
.dw l84D9_cmd0_triplet(三連音專用)
.dw l84DD_cmd1_connect (音之間連接,需要在連接的音前用,然后最后一個(gè)連接的音結(jié)束)
.dw l84E1_cmd2_dotted_note (附點(diǎn)音符)
.dw l84E8_cmd3_octave_jump
.dw l8575_cmd4_set_flags
.dw l84F1_cmd5_set_speed (相當(dāng)于BPM)
.dw l84FF_cmd6_set_note_sustain_len (ADSR中的S)
.dw l865A_cmd7_set_volume(設(shè)置音量上限)
.dw l866F_cmd8_set_instrument (設(shè)置演奏樂(lè)器)
.dw l8505_cmd9_set_octave (設(shè)置八度)
.dw l8510_cmdA_global_transpose (所有音軌移調(diào))
.dw l8515_cmdB_channel_transpose (單音軌移調(diào))
.dw l86A1_cmdC_pitch_tune
.dw l86A7_cmdD_pitch_slide
.dw l851B_cmdE_loop1
.dw l851F_cmdF_loop2
.dw l8523_cmd10_loop3
.dw l8527_cmd11_loop4
.dw l851B_cmd12_break1
.dw l851F_cmd13_break2
.dw l8523_cmd14_break3
.dw l8527_cmd15_break4
.dw l855A_cmd16_jump
.dw l8580_cmd17_stop
.dw l86AD_cmd18_set_duty_cycle (設(shè)置方波占空比,起到調(diào)音色作用)
音符與代碼之間的關(guān)系(x值范圍00-1F):
全音符=Ex
二分音符=Cx
四分音符=Ax
八分音符=8x
十六分音符=6x
三十二分音符=4x
特別地,x=00時(shí),此時(shí)作為休止符處理,因此只有當(dāng)非0的時(shí)候才是一個(gè)帶有音階的音符。
五線譜部分
需要找的要素:BPM,調(diào)性,節(jié)拍(可忽略因?yàn)榇蟛糠侄际?/4拍),譜號(hào)

至于調(diào)性,需要利用譜號(hào)與節(jié)拍的之間的?或?來(lái)尋找。為什么要找調(diào)性,是因?yàn)槊總€(gè)音在正常情況下,它們之間是有間隔的,而且在寫入的對(duì)應(yīng)數(shù)據(jù)的時(shí)候,根據(jù)一一對(duì)應(yīng)關(guān)系來(lái)尋找就不容易看錯(cuò)。至于曲子用大調(diào)和小調(diào)表示都沒(méi)太大問(wèn)題,我個(gè)人習(xí)慣用大調(diào)來(lái)表示。調(diào)性尋找方法參照:https://www.sin80.com/pub/staff-key-signature(不需要死記硬背)
從2個(gè)?來(lái)看,這是一首降b大調(diào)曲子,知道之后,如何通過(guò)指令來(lái)寫入
由于是所有樂(lè)器都是降b,所以可以使用0A來(lái)寫入,其中0A后面的值,如果是負(fù)值,就表示降x個(gè)半音,正值就表示升x個(gè)半音,默認(rèn)0A 00就相當(dāng)于是一首C大調(diào)曲子,以這個(gè)為例,由于是降b,相當(dāng)于A?(為了表示清楚),所以正確寫法是0A FE。
至于x大調(diào)是什么意思呢,簡(jiǎn)單來(lái)說(shuō),如果有留意到簡(jiǎn)譜上(1=x),就明白了,以x為基礎(chǔ)作為1。。。
BPM怎么寫入正確的數(shù)值,這里需要用到節(jié)拍和BPM的定義,以及利用nsfimport輸出1分鐘長(zhǎng)度(位置于0E 10在256rows,900BPM軟件里頭的狀態(tài)下)的文件,由于上圖是4/4拍,所以是以一個(gè)四分音符為一拍,一個(gè)小節(jié)有四拍。所以尋找就是使用循環(huán)n個(gè)Ax來(lái)達(dá)到相近的1分鐘位置,上圖BPM是114,所以要循環(huán)71(16進(jìn)制數(shù),這里減1是因?yàn)槲囱h(huán)前已經(jīng)用了1次)來(lái)找正確的05后面的兩個(gè)數(shù)值。。。。。。
找到后就可以對(duì)著五線譜開寫了,然后要注意1234567和調(diào)性對(duì)應(yīng)關(guān)系。其默認(rèn)對(duì)應(yīng)關(guān)系是(以C大調(diào)為例)
1=x1=C
2=x3=D
3=x5=E
4=x6=F
5=x8=G
6=xA=A
7=xC=B
大調(diào)中音與音之間的間隔關(guān)系如下:全全半全全全半
由于圖中為降b大調(diào),所以實(shí)際對(duì)應(yīng)關(guān)系為
1=A+
2=C
3=D
4=D+
5=F
6=G
7=A
理清實(shí)際對(duì)應(yīng)關(guān)系后,就可以正式開寫了,注意一下特殊符號(hào)就行,如?還原調(diào)。

抽取這個(gè),結(jié)果是......09 02 0A FE B4 AF AE B4 B2 AD AA AC……此處省略。