M1與V的解釋與應(yīng)用

關(guān)于M1的基地址數(shù)據(jù):(KOF2K2)
1600番臺(tái) (NN×6) + 6090
.1700番臺(tái) (NN×6) + 5AF0
.1800番臺(tái) (NN×6) + 3FE4
.1A00番臺(tái) (NN×6) + 4470
.1B00番臺(tái) (NN×6) + 5550
.1C00番臺(tái) (NN×6) + 4A10
.1D00番臺(tái) (NN×B) + 6BF0
.1E00番臺(tái) (NN×6) + 4FB0
.1F00番臺(tái) (NN×6) + 6630
關(guān)于M1的基地址數(shù)據(jù):(KOF2K1)
.1600番臺(tái) (NN×6) + 61A4
.1700番臺(tái) (NN×6) + 5C04
.1800番臺(tái) (NN×6) + 3FE4
.1A00番臺(tái) (NN×6) + 4584
.1B00番臺(tái) (NN×6) + 5664
.1C00番臺(tái) (NN×6) + 4B24
.1D00番臺(tái) (NN×B) + 6C0E
.1E00番臺(tái) (NN×6) + 50C4
.1F00番臺(tái) (NN×6) + 664E
關(guān)于M1的基地址數(shù)據(jù):(KOF98)
? 1600番臺(tái) (NN×6) + 604C
.1700番臺(tái) (NN×6) + 5A4C
.1800番臺(tái) (NN×6) + 3C4C
.1A00番臺(tái) (NN×6) + 424C
.1B00番臺(tái) (NN×6) + 544c
.1C00番臺(tái) (NN×6) + 484c
.1D00番臺(tái) (NN×B) + 65fa? ? ? ?
.1E00番臺(tái) (NN×6) + 4E4C
.1F00番臺(tái) (NN×6) + 65FA
關(guān)于M1的基地址數(shù)據(jù):(KOF97)
? 1600番臺(tái) (NN×6) + 7218
.1700番臺(tái) (NN×6) + 66f8
.1800番臺(tái) (NN×6) + 48d8
.1A00番臺(tái) (NN×6) + 4ed8
.1B00番臺(tái) (NN×6) + 60d8
.1C00番臺(tái) (NN×6) + 54d8
.1D00番臺(tái) (NN×B) + 66F8
.1E00番臺(tái) (NN×6) + 5ad8
.1F00番臺(tái) (NN×6) + 4838
關(guān)于M1的基地址數(shù)據(jù):(KOF99)
? 1600番臺(tái) (NN×6) + 65d9
.1700番臺(tái) (NN×6) + 6075
.1800番臺(tái) (NN×6) + 432f
.1A00番臺(tái) (NN×6) + 492f
.1B00番臺(tái) (NN×6) + 5a75
.1C00番臺(tái) (NN×6) + 4e75
.1D00番臺(tái) (NN×B) + 74aa
.1E00番臺(tái) (NN×6) + 5475
.1F00番臺(tái) (NN×6) + 6995
關(guān)于M1的基地址數(shù)據(jù):(KOF2K)
.1600番臺(tái) (NN×6) + 61A4
.1700番臺(tái) (NN×6) + 5C04
.1800番臺(tái) (NN×6) + 3FE4
.1A00番臺(tái) (NN×6) + 4584
.1B00番臺(tái) (NN×6) + 5664
.1C00番臺(tái) (NN×6) + 4B24
.1D00番臺(tái) (NN×B) + 6d04
.1E00番臺(tái) (NN×6) + 50C4
.1F00番臺(tái) (NN×6) + 6744
關(guān)于M1的基地址數(shù)據(jù):(KOF96)
? 1600番臺(tái) (NN×6) + 5e38
.1700番臺(tái) (NN×6) + 5b9a
.1800番臺(tái) (NN×6) + 3edc
.1A00番臺(tái) (NN×6) + 447c
.1B00番臺(tái) (NN×6) + 55aa
.1C00番臺(tái) (NN×6) + 49aa
.1D00番臺(tái) (NN×B) + 3edc
.1E00番臺(tái) (NN×6) + 4faa
.1F00番臺(tái) (NN×6) + 3e3c
嗯,
計(jì)算方法:
98 BGM
jsr? ? ?$7a6e.l ;場(chǎng)景音樂寫入
就拿98的8神暗勾手為例:
根據(jù)暗勾手的招式程序里
0713EC? 303C 03BC? ? ? ? ? ? ? ? ? MOVE.W? ?#0x3BC,D0
0713F0? 4EB8 7A98? ? ? ? ? ? ? ? ? JSR? ? ? 0x7A98
在程序7A98里,得到聲音轉(zhuǎn)換ID的基地址為A9BCE。
007A98: 41F9 000A 9BCE? ? ? ? ? ? ?lea? ? ?$a9bce.l, A0
007A9E: 3200? ? ? ? ? ? ? ? ? ? ? ?move.w? D0, D1
007AA0: D040? ? ? ? ? ? ? ? ? ? ? ?add.w? ?D0, D0
007AA2: 3B70 0000 593C? ? ? ? ? ? ?move.w? (A0,D0.w), ($593c,A5) ;;;
007AA8: 41ED 5940? ? ? ? ? ? ? ? ? lea? ? ?($5940,A5), A0
007AAC: 7000? ? ? ? ? ? ? ? ? ? ? ?moveq? ?#$0, D0
007AAE: 102D 5938? ? ? ? ? ? ? ? ? move.b? ($5938,A5), D0
007AB2: 31AD 593C 0000? ? ? ? ? ? ?move.w? ($593c,A5), (A0,D0.w) ;新聲音尋址參數(shù)(id+聲音編號(hào))
007AB8: 542D 5938? ? ? ? ? ? ? ? ? addq.b? #2, ($5938,A5) ;新聲音啟動(dòng)標(biāo)志
007ABC: 4E75? ? ? ? ? ? ? ? ? ? ? ?rts
所以,3BC*2+A9BCE=AA346,在AA346里,得暗勾手的聲音ID:1B9B。即($593c,A5)的寫入值為1B9B
007A46: 7000? ? ? ? ? ? ? ? ? ? ? ?moveq? ?#$0, D0
007A48: 41ED 5940? ? ? ? ? ? ? ? ? lea? ? ?($5940,A5), A0
007A4C: 102D 5939? ? ? ? ? ? ? ? ? move.b? ($5939,A5), D0
007A50: B02D 5938? ? ? ? ? ? ? ? ? cmp.b? ?($5938,A5), D0 ;新聲音啟動(dòng)標(biāo)志,不一樣,啟動(dòng)
007A54: 6716? ? ? ? ? ? ? ? ? ? ? ?beq? ? ?$7a6c
007A56: 522D 5939? ? ? ? ? ? ? ? ? addq.b? #1, ($5939,A5)
007A5A: 1030 0000? ? ? ? ? ? ? ? ? move.b? (A0,D0.w), D0 ;新聲音的人物id號(hào),為0?
007A5E: 67EC? ? ? ? ? ? ? ? ? ? ? ?beq? ? ?$7a4c
007A60: 0C00 0001? ? ? ? ? ? ? ? ? cmpi.b? #$1, D0
007A64: 6706? ? ? ? ? ? ? ? ? ? ? ?beq? ? ?$7a6c
007A66: 13C0 0032 0000? ? ? ? ? ? ?move.b? D0, $320000.l ;68K芯片音頻輸出端口
007A6C: 4E75? ? ? ? ? ? ? ? ? ? ? ?rts
DASM kof98z80.asm,0,ffff,0,AUDIOCPU
獲得z80芯片反匯編源碼
因?yàn)椋?B9B=1B00+9B,所以,查找公式得
1B00番臺(tái) (NN×6) + 544c
所以,9B*6+544C=57EE
013C: ld? ?a,($FD67)
013F: ld? ?b,a
0140: ld? ?a,($FD66)
0143: cp? ?b
0144: jr? ?z,$012B
0146: ld? ?hl,$FD66 ;新聲音啟動(dòng)
0149: inc? (hl)
014A: and? $3F
014C: ld? ?e,a
014D: ld? ?d,$00
014F: ld? ?hl,$FD25
0152: add? hl,de
0153: ld? ?a,(hl)
0121: ld? ?($FD18),a ;AF==1B ,1b為音軌類型
0124: call $0175
0175: cp? ?$20
0177: jr? ?nc,$017C ;音軌超20為BGM,20為靜音,21+為實(shí)際bgm
0179: jp? ?$0D6B ;
0D6B: ld? ?a,($FD18)
0D6E: ld? ?e,a
0D6F: ld? ?d,$00
0D71: ld? ?hl,$0D7B
0D74: add? hl,de
0D75: add? hl,de ;$0D7B+1B*2
0D76: ld? ?e,(hl) ;2位地址低位
0D77: inc? hl
0D78: ld? ?d,(hl) ;2位地址高位
0D79: ex? ?de,hl ;獲得完整2位地址
0D7A: jp? ?(hl) ;不同音軌,初始尋址載入
0EE5: call $0F1A ;DE==9B
0EE8: ret? z
0EE9: ld? ?a,$04
0EEB: ld? ?ix,($2E16) ;ix寫入544C
0EEF: jp? ?$0EB6
0EB6: ld? ?($FD68),a ;
0EB9: ld? ?a,$18
0EBB: ld? ?($FD19),a
0EBE: ld? ?a,($FD18)
0EC1: di
0EC2: jp? ?$0204 ;
0217: ld? ?l,e
0218: ld? ?h,$00
021A: ld? ?d,h
021B: add? hl,hl
021C: add? hl,de
021D: add? hl,hl
021E: ex? ?de,hl ;9B*6
021F: add? ix,de ;9B*6+544C=57EE
0221: call $0439
0224: ret? c
0439: push iy
043B: ld? ?c,(ix+$00)
043E: ld? ?a,($FD68)
0441: ld? ?e,a
0442: call $0463
0445: jr? ?nc,$044A
0447: pop? iy
0449: ret
這個(gè)57ED就是暗勾手的M1調(diào)用V聲音地址了
-------------------------------------------------------
在M1地址:57EE得以下數(shù)據(jù):50 77 6E 92 6E DC?
50為優(yōu)先順序;
77 6E為開始地址;926E為結(jié)束地址;V的地址數(shù)據(jù)為,6E77---6E92
DC中的C為音量大小,是特殊值,D的二進(jìn)制是1101左聲道,右聲道,不擴(kuò)展,開啟增益
(開啟擴(kuò)展,只在開啟雙聲道+增益才有效。也就是Fx才有效
正常使用v1~v4。開啟擴(kuò)展,會(huì)尋址v5~v8)
得這個(gè)M1調(diào)用V的地址數(shù)據(jù)為,6E77---6E92
這6E77--6E92代表的V的地址為
6E77*100---(6E93*100-1)
這個(gè)就是暗勾手的V的聲音代碼的地址范圍了。
50 77 6E 92 6E DC
V地址是6E77-6E92
50 77 6E 92 6E FC
V地址是16E77-16E92
因?yàn)閂的文件只有4M,也就是說一個(gè)V的地址只有3FFFFF,
所以得到的地址如果比3FFFFF大,就減去3FFFFF,然后再與3FFFFF比較,如果小的話
就在V2,并且減了得到的地址就是V2的地址;如果還是大于,就再減3FFFFF,再與3FFFFFF比較,如果小于的話,就在V3,并且減了得到的地址就是V3的地址;如果大于。。。。。。。。。。。。。。。。。。。。。
-------------------------------------------
98 BGM分析
0121: ld? ?($FD18),a ;AF==1B ,1b為音軌類型
0124: call $0175
0175: cp? ?$20
0177: jr? ?nc,$017C ;音軌超20為BGM,20為靜音,21+為實(shí)際bgm
0179: jp? ?$0D6B ;
017C: ld? ?d,a
017D: sub? $20 ;id-20
017F: ld? ?e,a
0180: ld? ?a,d
0181: ld? ?d,$00
0183: ld? ?hl,$3038
0186: add? hl,de ;3038+id-20
0187: ld? ?e,a ;id
0188: ld? ?a,(hl) ;(3038+id-20)
0189: or? ?a
018A: ret? z
018B: dec? a
018C: jp? ?z,$0D6B
018F: dec? a
0190: jp? ?z,$01A4
0193: dec? a
0194: jp? ?z,$01D3
0197: dec? a
0198: jp? ?z,$06CD
019B: dec? a
019C: jp? ?z,$0AC0
019F: xor? a
01A0: ld? ?($FD18),a
01A3: ret
01A4: ld? ?b,e
01A5: xor? a
01A6: ld? ?($FD0E),a
01A9: jp? ?$10E5
10E5: di
10E6: ld? ?a,($FD11)
10E9: or? ?a
10EA: ret? nz
10EB: ld? ?a,$00
10ED: ld? ?($FDA2),a
10F0: ld? ?a,b ;id
10F1: sub? $20 ;id-20
10F3: ld? ?hl,$2BA2
10F6: or? ?a
10F7: jr? ?z,$1108
10F9: ld? ?b,a
10FA: ld? ?e,a
10FB: ld? ?d,$00
10FD: ld? ?hl,$329E
1100: add? hl,de
1101: add? hl,de ;BGM尋址329E+2*(id-20)
1102: ld? ?a,(hl) ;BGM尋址低位
1103: inc? hl
1104: ld? ?h,(hl) ;BGM尋址高位
1105: ld? ?l,a ;BGM尋址完整地址
1106: or? ?h
1107: ret? z
1108: ld? ?a,($FA19)
110B: or? ?a
110C: jr? ?nz,$111D
110E: xor? a
110F: ld? ?($FA1D),a
1112: ld? ?de,$1001
1115: call $26AE
1118: ld? ?e,$00
111A: call $26AE
111D: push hl
111E: ld? ?a,($FDA2)
1121: or? ?a
1122: jr? ?nz,$1144
1124: ld? ?hl,($2E06) ;($2E06)=33de
1127: ld? ?e,b
1128: ld? ?d,$00
112A: add? hl,de ;33de+id-20
112B: ld? ?a,(hl) ;m1切區(qū)參數(shù)
112C: rlca
112D: rlca
112E: ld? ?e,a
112F: ld? ?d,$00
1131: ld? ?hl,$2708
1134: add? hl,de ;2708+4*m1切區(qū)參數(shù)
1135: ld? ?a,(hl)
1136: in? ?a,($08)
1138: inc? hl
1139: ld? ?a,(hl)
113A: in? ?a,($09)
113C: inc? hl
113D: ld? ?a,(hl)
113E: in? ?a,($0A)
1140: inc? hl
1141: ld? ?a,(hl)
1142: in? ?a,($0B) ;m1切區(qū)
1144: pop? ix
1146: call $0C52
1149: ld? ?b,(ix+$0b)
114C: xor? a
114D: CD 56 26? ? ? call $2656
1150: 3E FF? ? ? ? ?ld? ?a,$FF
1152: 32 DD FD? ? ? ld? ?($FDDD),a
1155: 3E C0? ? ? ? ?ld? ?a,$C0
1157: 32 4E F9? ? ? ld? ?($F94E),a
115A: 32 4F F9? ? ? ld? ?($F94F),a
115D: 32 D5 F9? ? ? ld? ?($F9D5),a
1160: 32 D6 F9? ? ? ld? ?($F9D6),a
1163: 06 05? ? ? ? ?ld? ?b,$05
1165: 21 00 F8? ? ? ld? ?hl,$F800
1168: AF? ? ? ? ? ? xor? a
1169: 11 0D 00? ? ? ld? ?de,$000D
116C: 77? ? ? ? ? ? ld? ?(hl),a
116D: 19? ? ? ? ? ? add? hl,de
116E: 10 FC? ? ? ? ?djnz $116C
1170: 06 05? ? ? ? ?ld? ?b,$05
1172: 21 68 F8? ? ? ld? ?hl,$F868
1175: 77? ? ? ? ? ? ld? ?(hl),a
1176: 19? ? ? ? ? ? add? hl,de
1177: 10 FC? ? ? ? ?djnz $1175
1179: DD E5? ? ? ? ?push ix
117B: E1? ? ? ? ? ? pop? hl
117C: FD 21 24 FA? ?ld? ?iy,$FA24
1180: 06 0B? ? ? ? ?ld? ?b,$0B
1182: 11 0E 00? ? ? ld? ?de,$000E
1185: 19? ? ? ? ? ? add? hl,de
1186: DD E5? ? ? ? ?push ix
1188: D1? ? ? ? ? ? pop? de
1189: FD 36 00 00? ?ld? ?(iy+$00),$00
118D: FD 36 08 C1? ?ld? ?(iy+$08),$C1
1191: FD 36 02 FF? ?ld? ?(iy+$02),$FF
1195: 1A? ? ? ? ? ? ld? ?a,(de) ;BGM尋址完整地址
1196: 13? ? ? ? ? ? inc? de
1197: D5? ? ? ? ? ? push de
1198: B7? ? ? ? ? ? or? ?a
1199: 20 04? ? ? ? ?jr? ?nz,$119F
119B: 23? ? ? ? ? ? inc? hl
119C: 23? ? ? ? ? ? inc? hl
119D: 18 36? ? ? ? ?jr? ?$11D5