欢迎光临散文网 会员登陆 & 注册

M1与V的解释与应用

2019-03-22 10:17 作者:神族使者魔瞳  | 我要投稿

关于M1的基地址数据:(KOF2K2)

1600番台 (NN×6) + 6090

.1700番台 (NN×6) + 5AF0

.1800番台 (NN×6) + 3FE4

.1A00番台 (NN×6) + 4470

.1B00番台 (NN×6) + 5550

.1C00番台 (NN×6) + 4A10

.1D00番台 (NN×B) + 6BF0

.1E00番台 (NN×6) + 4FB0

.1F00番台 (NN×6) + 6630


关于M1的基地址数据:(KOF2K1)

.1600番台 (NN×6) + 61A4

.1700番台 (NN×6) + 5C04

.1800番台 (NN×6) + 3FE4

.1A00番台 (NN×6) + 4584

.1B00番台 (NN×6) + 5664

.1C00番台 (NN×6) + 4B24

.1D00番台 (NN×B) + 6C0E

.1E00番台 (NN×6) + 50C4

.1F00番台 (NN×6) + 664E


关于M1的基地址数据:(KOF98)

  1600番台 (NN×6) + 604C

.1700番台 (NN×6) + 5A4C

.1800番台 (NN×6) + 3C4C

.1A00番台 (NN×6) + 424C

.1B00番台 (NN×6) + 544c

.1C00番台 (NN×6) + 484c

.1D00番台 (NN×B) + 65fa       

.1E00番台 (NN×6) + 4E4C

.1F00番台 (NN×6) + 65FA


关于M1的基地址数据:(KOF97)

  1600番台 (NN×6) + 7218

.1700番台 (NN×6) + 66f8

.1800番台 (NN×6) + 48d8

.1A00番台 (NN×6) + 4ed8

.1B00番台 (NN×6) + 60d8

.1C00番台 (NN×6) + 54d8

.1D00番台 (NN×B) + 66F8

.1E00番台 (NN×6) + 5ad8

.1F00番台 (NN×6) + 4838


关于M1的基地址数据:(KOF99)

  1600番台 (NN×6) + 65d9

.1700番台 (NN×6) + 6075

.1800番台 (NN×6) + 432f

.1A00番台 (NN×6) + 492f

.1B00番台 (NN×6) + 5a75

.1C00番台 (NN×6) + 4e75

.1D00番台 (NN×B) + 74aa

.1E00番台 (NN×6) + 5475

.1F00番台 (NN×6) + 6995


关于M1的基地址数据:(KOF2K)

.1600番台 (NN×6) + 61A4

.1700番台 (NN×6) + 5C04

.1800番台 (NN×6) + 3FE4

.1A00番台 (NN×6) + 4584

.1B00番台 (NN×6) + 5664

.1C00番台 (NN×6) + 4B24

.1D00番台 (NN×B) + 6d04

.1E00番台 (NN×6) + 50C4

.1F00番台 (NN×6) + 6744

关于M1的基地址数据:(KOF96)

  1600番台 (NN×6) + 5e38

.1700番台 (NN×6) + 5b9a

.1800番台 (NN×6) + 3edc

.1A00番台 (NN×6) + 447c

.1B00番台 (NN×6) + 55aa

.1C00番台 (NN×6) + 49aa

.1D00番台 (NN×B) + 3edc

.1E00番台 (NN×6) + 4faa

.1F00番台 (NN×6) + 3e3c

嗯,

计算方法:

98 BGM

jsr     $7a6e.l ;场景音乐写入


就拿98的8神暗勾手为例:

根据暗勾手的招式程序里

0713EC  303C 03BC                  MOVE.W   #0x3BC,D0

0713F0  4EB8 7A98                  JSR      0x7A98

在程序7A98里,得到声音转换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) ;新声音寻址参数(id+声音编号)

007AB8: 542D 5938                  addq.b  #2, ($5938,A5) ;新声音启动标志

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 ;新声音启动标志,不一样,启动

007A54: 6716                       beq     $7a6c

007A56: 522D 5939                  addq.b  #1, ($5939,A5)

007A5A: 1030 0000                  move.b  (A0,D0.w), D0 ;新声音的人物id号,为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芯片反汇编源码


因为,1B9B=1B00+9B,所以,查找公式得

1B00番台 (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 ;新声音启动

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+为实际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


这个57ED就是暗勾手的M1调用V声音地址了

-------------------------------------------------------

在M1地址:57EE得以下数据:50 77 6E 92 6E DC 

50为优先顺序;

77 6E为开始地址;926E为结束地址;V的地址数据为,6E77---6E92

DC中的C为音量大小,是特殊值,D的二进制是1101左声道,右声道,不扩展,开启增益

(开启扩展,只在开启双声道+增益才有效。也就是Fx才有效

正常使用v1~v4。开启扩展,会寻址v5~v8)

得这个M1调用V的地址数据为,6E77---6E92

这6E77--6E92代表的V的地址为

6E77*100---(6E93*100-1)

这个就是暗勾手的V的声音代码的地址范围了。


50 77 6E 92 6E DC

V地址是6E77-6E92

50 77 6E 92 6E FC

V地址是16E77-16E92


因为V的文件只有4M,也就是说一个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+为实际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切区参数

112C: rlca

112D: rlca

112E: ld   e,a

112F: ld   d,$00

1131: ld   hl,$2708

1134: add  hl,de ;2708+4*m1切区参数

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切区

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


M1与V的解释与应用的评论 (共 条)

分享到微博请遵守国家法律