̃hLgł́Amck.txt / mckc.txt ̕ύX_L܂B
(pmckŒǉꂽ@\ƁA2ch̃pb`Œǉꂽ@\AppmckŒǉꂽ@\
LqĂ܂)

------------------------------------------------------------------------
hCoɂāii͈ӎȂĂ̂œǂݔ΂ĉBj

define.inc
	(ppmckcŏo͂̂ł܂CɂȂĂ悳ł)

ǉꂽhCoR}h
	$ee, <bank>, <adr low>, <adr high>
	oN؂ւ
		<bank> c oNl
		<adr low>, <adr high> c WvAhX
		݂̃`l̃oN<bank>ɐ؂ւAR}hǂݏoAhX
		ύXđs܂B
		oNl͐؂ւۂɎgp鐔lɂȂĂāA
		NSF̏ꍇ͎woN*2ɂȂ܂B(ڂnsfspec.txtƃ\[X)
		define.incɂALLOW_BANK_SWITCH=0ƒ`Ăꍇ̓oN͐؂ւA
		R}hǂݏoAhX̕ύXs܂B

dlύX
	mck.txt uf[eBGx[vv@̍
		> f[^lDDD3,7,11,15̒lŉ
		> ꂼ
		> @@@ 3 - 12.5%
		> @@@ 7 - 25.0%
		> @@@11 - 50.0%
		> @@@15 - 75.0%
		> ̃f[eB䂪܂
	
		> f[^lDDD0,1,2,3̒lŉ
		> ꂼ
		> @@@ 0 - 12.5%
		> @@@ 1 - 25.0%
		> @@@ 2 - 50.0%
		> @@@ 3 - 75.0%
		> ̃f[eB䂪܂
	ƓǂݑւĂB
	mck.txt u$fe,f[^lv@̍
		> bit7on ̎AFwƂȂ܂
		> bit2-3ŉFif[eBjI
		> \tgEFAGx[vLɂꍇ
		> bit0-1bit𗧂ĂĂ
	
		> bit7on ̎AFwƂȂ܂
		> bit0-1ŉFif[eBjI
	ƓǂݑւĂB
	ȏ͓`g̏ꍇɂĂłBVRC6̋`gɂĂ͏ȗB

	
	$ffR}h͔p~(release 7c)
	$a1, $a0R}hdlύX(release 7c)
	FDS$fdR}hdlύX(release 8)
	FDS̃n[hEFAGx[v$f0R}h(release 8)
	
------------------------------------------------------------------------
RpCɂ

̈
      LqA"-"܂"~"ĂЂƂLq邱Ƃɂ
    ̌Zł܂BƂc8~#5Ƃ邱ƂŁA85t[
    ɂȂ܂B

ǉ܂͎dlύXꂽwb_[

    #EX-VRC7
        VRC7Lɂ܂B
        gbN6chŁAGHIJKLɂȂ܂B
        ʔ͈͂ v0-v15 łB
        F́A@@0[U[`FA@@1`@@15vZbgFƂȂ܂B
        ȂA[U[F̒`̌ĂяoOP<num>ōs܂Bڂ@OP̍
        ĂB

    #EX-VRC6
        VRC6Lɂ܂B
        gbN3chŁAMNOɂȂ܂B
        M, Nf[eB[ϋ`gAOmRMgłB
        M, N͉ʔ͈͂ v0-v15 Af[eB[͈͂ @0-@7 ƂȂ܂B
        f[eB[Gx[vgp\łB
        Fwƃf[eB[̑Ή͎̂悤ɂȂ܂B
        @0: 1/16th  ( 6.25%)
        @1: 2/16ths (12.50%)
        @2: 3/16ths (18.75%)
        @3: 4/16ths (25.00%)
        @4: 5/16ths (31.25%)
        @5: 6/16ths (37.50%)
        @6: 7/16ths (43.75%)
        @7: 8/16ths (50.00%)
        O͉ʔ͈͂ v0-v63 ƂȂ܂B
        (͉ʂグƓIɐlI[o[t[ămRMg
        ȂȂ܂Bvrcvi.txtQƁBv42܂łOK)

    #EX-MMC5
        MMC5Lɂ܂B
        gbN2chŁAabɂȂ܂B
        ʔ͈: v0-v15
        f[eB[͈: @0-@3
        f[eB[Gx[vgp\łB
        ̋`gƂقƂǓłB(sweep@\Ȃ)

    #EX-FME7
        Sunsoft 5BLɂ܂B
        gbN3chŁAXYZɂȂ܂B
        ʔ͈: v0-15
        

    @OP<num> = { ` }
        VRC7FM̉F`sƂł܂B
        :
        @OP0 = { $00,$00,$00,$00,$00,$00,$00,$00 }
        8̃f[^KvłBl̈Ӗvrcvii.txtA
        mckXߋO(part 5̍ŏ)QƂĂB
        
        @OP<num>Œ`F́AgbNOP<num>i܂@@<num+64>jƂ邱ƂVRC7̃WX^
        [h܂B
        
        :
        @OP0 Œ`F
        G @@0 OP0
        Ŏgp܂B
        
        ȂA[U[`F͓Ɉނg܂B@@0̉F́A
        Ō(G`L̂ꂩ̃gbN)gpꂽOP<num>ɂČ܂܂B
        ppmckłA珇ɃgbNĂ邽߁AgbN
        [U[`FgpꍇAOP<num>GgbNɏĂƂ悳łB
        
        G @@0 OP0  c d     ;GgbN[U[`FɂAOP0sAc𔭉
        H @@0      e f     ;HgbN[U[`FɂAe𔭉(łOP0͎sĂ)
        I @@0      g a     ;IgbN[U[`FɂAg𔭉(łOP0͎sĂ)
        
        t̓_łB
        G @@0      c d     ;(܂OP0͎sĂȂ̂)c𔭉
        H @@0      e f     ;e𔭉
        I @@0 OP0  g a     ;̌OP0s
        
    #AUTO-BANKSWITCH <num>
        oN̎؊s܂B
        <num>́Abank 0̂f[^ƂĎgpł̈̃TCYłB
        Ƃ肠0w肵ăRpC΃oN؊ꂽf[^ɂȂ܂B
        nesasmŃAZuɕ\BANK 0FREEoCg<num>Ɏw肷
        ɍœKꂽf[^zuɂȂ܂B
        #AUTO-BANKSWITCHw肵ꍇ́ASĂ#SETBANK, #BANK-CHANGE, NB܂B
        #AUTO-BANKSWITCH𕡐w肵ꍇ́AŏɎw肵<num>LɂȂ܂B
        Ȃ̏ꍇ͍ŏMMLɏĂB

    #NO-BANKSWITCH
        (release 7cȍ~ł́A̋@\͂܂Ӗ܂)
        oN؂ւñR}h0`3ȊÕoNw肳ꂽꍇɃG[ɂ܂B
        
    #SETBANK ch,InitialBank
        (release 9ȍ~ł́A̋@\̑ւ#AUTO-BANKSWITCHgƂ𐄏܂B)
        
        ch̓gbNŁAA`Z܂ab̂ǂꂩꕶw肵܂B
        io[Wł͐ɂwł܂ł͐܂Bj
        InitialBanḱÃgbN̊JñoNw肵܂B
        
        łoŃAnesasm.bankR}h̒lɑΉ܂B
        eoN8KBłB
        
        ȉłbank֘A̋ɂďڂĂ܂B
        
        {IɁAppmckc̓gbNf[^songdata.hA珇Ԃɏo܂B
        SETBANKw肵ȂꍇASbank 0ɏ܂܂B
        //------------------------
         1:
        
        songdata_00:	;A
            :
            :
            :
        songdata_01:	;B
            :
            :
            :
        songdata_02:	;C
        ------------------------//
        
        #SETBANK A,4 ƂꍇA
        AgbNJnɏo̓oNbank 4ɂȂ܂B
        
        //------------------------------------------------
         2:
        #SETBANK A,4 Ƃꍇ
        
        	.bank	4
        	.org	$a000
        songdata_00:	;A
            :
            :
            :
        songdata_01:	;B
            :
            :
            :
        songdata_02:	;C
        
        ŒӂׂƂ́ASETBANKNBgȂ΁A
        㑱BECgbNbank 4ɓƂƂłB
        #SETBANK A,4 ƂwŁAAgbNbank 4ɓ킯ł͂܂B
        ------------------------------------------------//
        
        //------------------------------------------------
         3:
        #SETBANK A,4 ƂA
        BgbN̂ǂNBR}hgꍇ
        
        	.bank	4
        	.org	$a000
        songdata_00:	;A
            :
            :
            :
        songdata_01:	;B
            :
            :
        	db	$ee				;bank ύX߁iNBj
        	db	bank(songdata_bnk005)*2		;NB߂̈
        	dw	songdata_bnk005			;NB߂̈
        	.bank	5				;ȍ~ bank 5 ɏ
        	.org	$a000
        songdata_bnk005:
            :
            :
        songdata_02:	;C
        
        ̏ꍇł́AAgbNBgbN̓r܂ł bank 4 ɓA
        BgbNNBȍ~(CgbNȍ~) bank 5 ɓ܂B
        ------------------------------------------------//
        
        //------------------------------------------------
         4:
        #SETBANK A,4
        #SETBANK B,4 Ƃꍇ
        
        	.bank	4	;u珑f[^́Abank 4̃AhX$a000ɏށv
        	.org	$a000	;Ƃnesasm̖
        songdata_00:	;A
            :
            :
        	.bank	4	;u珑f[^́Abank 4̑ɏށv
        songdata_01:	;B
            :
            :
            :
        songdata_02:	;C
        
        ppmck04Aʂ̃gbN𓯂oNŎw肵ĂOKɂȂ܂B
        ------------------------------------------------//
        
    @MW<num> = { ` }
        FDS̃GtFNgg``܂B<num>0`7̒lA̐l
        q@MHwb_[<param4>̒lɂȂ܂B
        "{"`"}"320`7͈͓̔̐lłBlƔg`̊֌W͈ȉ
        悤ȑΕωɂȂ܂B
            0 c  0    4 c 0ɃZbg
            1 c +1    5 c -4
            2 c +2    6 c -2
            3 c +4    7 c -1
        Ɛ̊Ԃ́AXy[X","ŋ؂܂B

    @MH<num> = { <param1>, <param2>, <param3>, <param4> }
        FDS̃n[hEFAGtFNgf[^ݒ肵܂B
        <num>0`15̒lA̐lqMHR}h̒lɂȂ܂B
        <param1>̓GtFNg܂ł̎(fBC)0`255̒lƂ܂B
        <param2>̓GtFNggŁA0`4095̒lƂ܂Bl傫Ȃ
        قǃGtFNggȂ܂B
        <param3>̓GtFNĝłB0`63̒lƂ܂B
        l傫قǃGtFNg܂B
        <param4>̓GtFNgɎgg`w肵܂B@MWŒ`
        g`̔ԍw肵܂B

    @DPCM<num> = { "<str>", <param0>, <param1>, <param2>, <param3> }
        f^PCM̉Fo^܂B<num>̓f^PCMԍ0`63̒lƂ܂B
        ̒lq̒ڃm[gw̒lɂȂ܂B
        <str>̓f^PCM̃t@CłB
        <param0>͍Đgp[^ŁA0`15̒lƂ܂Bl傫Ȃ
        قǍĐgȂ܂B
        
        <param1>͍ĐTCYłBĐTCY4081ȉłKv܂B
        0w肷Ǝw肪ȗꂽƂ݂ȂAt@CTCYĐTCY
        Ȃ܂B
        AĐTCÝu16Ŋ1]vƂ𖞂Kv
        ܂B(΁u16iŕ\ɉ1P^1v)
        ̏𖞂Ȃꍇ́A𖞂ł߂lɐ؂グA0xAA
        pfBO܂B
        
        <param2>̓f^JE^lłBŎw肵l$4011
        ܂܂BA$ffw肷Ɣւ$4011݂̏
        sȂ悤ɂȂ܂B
        ȂAt@~Rɂ$40110ȊO̒lނƎOpgуmCY
        {[ςƂ܂B
        
        <param3>DMCĐ[hwłB0,1,2̒l邱Ƃł܂B
        0͒ʏĐ[hłB1̓[vĐ[hłB2͍ĐIRQ
        郂[hłA{I2͎w肵ȂŉB
        
        ȂA<param1>ȍ~͏ȗ\łB
        <param1>̏ȗ̒l̓t@CTCYɂȂ܂B(ĐTCY̏
        ȂꍇpfBOs܂)
        <param2>̏ȗ̒l0łB
        <param3>̏ȗ̒l0łB
        
        DPCMg[^TCY0x4000oCg𒴂ꍇAŃoN؂ւ܂B
        ̎oN؂ւꍇ́ADPCMuoNƓoN
        NB#SETBANKŎw肵ăgbNf[^ނƂ͂ł܂B
        #NO-BANKSWITCHw肵ꍇ͂̎oN؂ւ͍s܂B
        
        ȂADPCMg[^TCY͊et@C̒PȍvƂ
        v܂B(ACĝ)


    #DPCM-RESTSTOP
        DPCM`lrR}hg̋ύX܂B
        ̃R}hw肷ƁArR}h̎ɑDPCM̍Đ~܂܂B
        wR}h͕̋ςȂ̂ŎgĂB


    #GATE-DENOM <num> (8)
        ftHg8ɂȂĂNI^CYR}h̕ύX܂B

    #PITCH-CORRECTION
        ׂẲɂāAsb`Gx[vALFOAfB`[̕
        Ȃ܂BɁANamco 106`l̃fB`[̐ݒ肪
        IN^[uɈˑȂ悤ɂȂ܂B


ǉ܂͎dlύXꂽMMLR}h@ ()̓ftHg̐l
  R}h͑啶Aʂ܂B

    ENI^CY
      q<num0>,<num1> (8,0)
        (NI^CY)̎w܂B
        Ԃ*<num0>/8+<num1>悤ɂ܂B(t[P)
        <num0>͈̔͂0`8łB<num1>͐̒lw肷邱Ƃł܂A
        Ԃ100%𒴂0ȉɂȂ悤Ȏw͂ł܂B
        <num1>ȗꍇ0ɂȂ܂B
        #GATE-DENOM <num>w肵ꍇAL̐8ƂȂĂ镔<num>
        Ȃ܂B

    EoNړ
      NB<num>
        (release 9ȍ~ł́A̋@\̑ւ#AUTO-BANKSWITCHgƂ𐄏܂B)
        
        <num>w肵Ȃꍇ͎̃oNֈڍs܂B
        <num>w肵ꍇ͂̃oNֈڍs܂B
        
        <num>w肵ȂꍇANBR}hs[gR}h([ ` ])ŎgpƁA
        [ ` ]s[gœWJꂽNBsĂ܂܂BӂĂB
        <num>w肵ꍇNB<num>R}h̓s[gR}h([ ` ])Ŏgpł܂B
        
        <num>̎wɊւ炸As[g2R}h(|: ` :|)ł͎gpł܂B

    Ee|2
      @t<len>,<num> (4,30)
        <len><num>t[ɂȂ悤Ƀe|w肵܂B
        (14400 / <num> / <len>)̃e|ɑ܂B
        :@t4,24ƂꍇA4m24t[ɓԊuŖ点܂B

    EgX|[Y
      K<num> (0)
        ȍ~̉<num>㉺܂B

    En[hEFAGtFNg
      MH<num> (255)
        FDSgbN݂̂̃R}hłBn[hEFAGtFNg
        w肵܂B<num>̓n[hEFAGtFNgԍłB255($ff)
        w肷ƃn[hEFAGtFNg܂B

    En[hEFAGtFNg OFF
      MHOF
        n[hEFAGtFNg܂BMH255Ɠ̏܂B

    E[XFw
      @@r<num> (255)
        @vr̉FłłB<num>0`127̎쉹F̔ԍłB
        255w肷ƃItɂȂ܂B

    EL[It
      k<len> (4)
        [XGx[v𔭓A<len>Ŏw肵Ԃҋ@܂B
        <len>ȗꍇ́AlR}h̒lgp܂B
        u[XGx[vxvƂƂ炦ĂB

    EZtfBC
      SD<num>
        [XGx[v^C~OŁA<num>Õm[gI
        Ŏct܂B
        ӂ̃[XGx[v̗F
            MMLLqF      @v0 @vr1 l4 q4 cdefg
            ۂ̏óF   l8 q8 @v0c@v1w@v0d@v1w@v0e@v1w@v0f@v1w@v0g@v1w
        ZtfBC̗F
            MMLLqF      SD1 @v0 @vr1 l4 q4 cdefg
            ۂ̏óF   l8 q8 @v0c@v1w@v0d@v1c@v0e@v1d@v0f@v1e@v0g@v1f

    EZtfBC OFF
      SDOF
        ZtfBC܂B

    EZtfBC obt@Zbg
      SDQR
        ZtfBCp̃obt@ɂ܂B܂Am[gI̗Y܂B
        F
            MMLLqF      A SD1 @v0 @vr1 l4 q4
                           A cdefg
                           A cSDQRdefSDQRg
            ۂ̏óF   A l8 q8
                           A @v0c@v1w@v0d@v1c@v0e@v1d@v0f@v1e@v0g@v1f
                           A @v0c@v1g@v0d@v1w@v0e@v1d@v0f@v1e@v0g@v1w


    EVRC7[UF`ǂݍ
      OP<num>
        @OP<num>Œ`VRC7̃[U[F`VRC7̃WX^Ƀ[h܂B
        <num>͈̔͂0`63łB

    EF1
      @<num> (0)
        X, Y, Z`l̏ꍇ͈ȉ̂悤ɂȂ܂B
            0 c ~[g
            1 c g[(ݒ)
            2 c mCY
            3 c g[{mCY
        @2̎́An0(o0c)`n31(o2g)Ńm[gԍ̂܂܃mCYgɂȂ܂B
        EPENmCYgɔf܂B

    ESunsoft 5B n[hEFAGx[v`I
      S<num>
        Sunsoft 5B(X, Y, ZgbN)p̃R}hłB
        n[hEFAGx[v`I܂B
        <num>PSG13ԃWX^ɏޒl(0`15)łB

    ESunsoft 5B n[hEFAGx[vݒ
      M<num>
        Sunsoft 5B(X, Y, ZgbN)p̃R}hłB
        n[hEFAGx[vݒ肵܂B
        <num>PSG11,12ԃWX^ɏޒl(0`65535)łB

    ESunsoft 5B mCYgݒ
      N<num>
        Sunsoft 5B(X, Y, ZgbN)p̃R}hłB
        mCYgݒ肵܂B
        <num>PSG6ԃWX^ɏޒl(0`31)łB
        @2w肵Ă鎞͖łB

    Esb`Vtgʐݒ
      SA<num>
        N106(P`WgbN)p̃R}hłB
        fB`[Asb`Gx[vAru[ĝ܂
        DAEPAMP̐l<num>񍶃VtgĂglɉZ܂B
        l͈̔͂0`8łB
        #PITCH-CORRECTIONgpꍇ̂ݎgp\łB
        

------------------------------------------------------------------------
̑
mk*.bat
	NSF쐬̎菇܂B
	1) eLXgGfB^MMLLq܂B
	2) songstH_ɕۑ܂Błsongdata.mmlƂO
	   ۑ̂Ƃ܂B
	3) songstH_ɂ00startcmd.bat_uNbNāA
	   R}hvvgJ܂B
	
	4a) mknsf t@C(gq)
	    ƃ^CvāANSFt@C쐬܂B
	    ̗ł́A
	    mknsf songdata
	    ƃ^Cv܂BRpC΁Asongdata.nsf쐬܂B
	
	4b) mknes songdata
	    ƃ^CvƁAiNES`ROMC[W쐬܂B
	    }bp[#0Ȃ̂ŃoN؂ւg͎g܂B
	
	4c) Ȃ܂NSF쐬ꍇ
	    mkmultinsf song1.mml song2.mml ... 
	    ƃ^Cv܂B
	    
	    ȓo^NSF쐬̒:
	    effect.h͋ʂłB@v́AʂMMLłĂAGtFNgԍ
	    Փ˂N肦܂BƂsong1.mml@v0`Asong2.mmlł@v0`
	    ꍇ͈LɂȂ܂B
	    RpC鏇Ԃ́Asong1.mml̃gbNA, B, C, ..., song2.mml
	    A, B, C, ... ƂȂĂ܂BoNݒ̏Ԃňp܂B
	    
	4d) mkmultines song1.mml song2.mml ... 
	    ƃ^CvƁAȂo^ꂽnest@C쐬܂B
	


	FDSƑ̊g𓯎gpƖ肪܂BFDSgp$6000-$DFFF
	RAMƂĈ邽߁A͈̔͂ɂg̃WX^ɏƂ
	ƂɁA$8000-$DFFFɑ݂ł낤vOf[^j󂷂\
	܂B
	i2a03.orgForum http://www.2a03.org/forum/viewtopic.php?id=198#1330j

	Ql܂łɂ͈̔͂ɂ郌WX^Ă܂B
	$9000	W	VRC6 squ1
	$9001	W	VRC6 squ1
	$9002	W	VRC6 squ1

	$9010	W	VRC7 address
	$9030	W	VRC7 data

	$A000	W	VRC6 squ2
	$A001	W	VRC6 squ2
	$A002	W	VRC6 squ2

	$B000	W	VRC6 saw
	$B001	W	VRC6 saw
	$B002	W	VRC6 saw

	$C000	W	Sunsoft 5B address

