
	 今天,Aillis兄弟又来和大家分享近期捣鼓的好东东,就是为KOF97的ADV模式中增加按BCD键 畜气系统,厉害了,小编沉迷了,手感超爽! 
 
Aillis兄弟的作品下载在这:http://www.hackrom.cn/html/7/371.html
	现在Aillis兄弟,把源代码贴出来了,希望对大家抛砖引玉,在别的KOF系统也用上,这确实是一个难得的干货啊!小编现在对这堆代码,还一头雾水! 
 
	代码开始: 
 
	ORG 0xF4D0
JMP      0x88900
	ORG 0x88900 || 增加:蓄气测试和执行
|| 参数: A4:攻方基址
K000:  | 蓄气测试
BSR      L000  | <<-- 蓄气按键及条件测试
BNE.S K100 | 不为零 -->> 蓄气动作执行
JMP      0xF4DA  | -->> 继续原来的处理 
	K100:  | 蓄气动作执行
        | 设置音效
LEA      0xA3610,A0
JSR      0x16190
MOVE.W   D1,(0x1BC,A4)
MOVE.W   #0x90,D0
JSR      0x7700
MOVE.W   #0x90,(0x1BE,A4)
MOVE.B   #0x2,(0x1BA,A4)
	|| 设置属性
JSR      0x15692  | <<-- 清空部分标志
JSR 0x122C8 | <<-- 更新角色的朝向 
	|| 蓄气启动
MOVE.W #0x42,(0x72,A4) | (蓄气启动动作)
MOVE.W #0xFFFF,(0x78,A4)
JSR 0x584C | <<-- 动作数据处理
MOVE.L #K101,(A4)
	K101:
BSR T000 | <<-- 蓄气持续共通处理
BEQ K300 | 为零 -->> 蓄气结束 (终止蓄气跳出) 
	|| 动作中止测试
TST.B    (0x7C,A4)
BPL      K400  | 非负数 -->> 执行动作 
	|| 设置光效
LEA      0x10E12,A0
MOVE.W   (0x2C,A4),D1
ADDQ.W   #2,D1
MOVE.W   #0x20,D2
MOVE.W   #0x4A,D3
MOVE.W   #0x0,D5
MOVE.W   #0x0,D6
JSR      0x1E374  | <<-- 创建子对象 
	|| 蓄气持续
MOVE.W #0x43,(0x72,A4) | (蓄气持续动作)
MOVE.L #K103,(A4)
BRA K400 | -->> 执行动作 
	K103:
BSR      T000  | <<-- 蓄气持续共通处理
BEQ K300 | 为零 -->> 蓄气结束 (终止蓄气跳出)
BRA      K400  | -->> 执行动作 
	K200:  || Extra模式蓄气满值进入MAX状态
JSR      0x10E5C  | <<-- Extra模式进入MAX状态
MOVE.W #0x10,(0xEC,A4) | MAX状态能量槽的消耗速度:0x10 
	K300: || 蓄气结束
JSR 0x161B0 | <<-- 停止重复音效
MOVE.W #0x44,(0x72,A4) | (蓄气结束动作)
MOVE.L #K301,(A4)
	K301: || 可通过任意输入来取消蓄气结束动作
TST.B (0x1,A6) | 测试输入
BNE.S K302 | 不为零 -->> 回到站立状态 (有输入跳出)
        | 动作中止测试
TST.B    (0x7C,A4)
BPL      K400  | 非负数 -->> 执行动作 
	K302:  || 回到站立状态
JMP      0xF43E
	K400:  || 执行动作
JMP      0xF382
	|| 蓄气按键及条件测试
 | 返回: D0:1-可蓄气/0-不可蓄气
L000:
        MOVE.B   (A6),D0  | D0:持续输入
ANDI.B   #0xF0,D0  | 保留ABCD
TST.B    (0x1D5,A4)  | 测试模式 (0:Advanced/1:Extra)
BEQ.S    L100  | 为零 -->> Advanced (Advanced跳出) 
	|| Extra
CMPI.B   #0x70,D0  | 测试按住ABC
BNE.S    L300  | 不相等 -->> 不可蓄气 (ABC以外跳出) 
	|| MAX状态不许蓄气
MOVE.W   (0xE0,A4),D0
ANDI.W   #0x1002,D0
BNE.S    L300 | 不为零 -->> 不可蓄气 (MAX状态跳出)
BRA.S    L200  | -->> 可蓄气 
	L100:  || Advanced
CMPI.B   #0xE0,D0  | 测试按住BCD
BNE.S    L300  | 不相等 -->> 不可蓄气 (BCD以外跳出)
JSR      0x1169C  | <<-- 能量珠上限测试
BEQ.S L300 | 为零 -->> 不可蓄气 (已抵达上限跳出) 
	L200:  || 可蓄气
MOVEQ    #0x1,D0
RTS
	L300:  || 不可蓄气
MOVEQ    #0x0,D0
RTS
	|| 蓄气持续共通处理
 | 返回: D0:1-继续蓄气/0-终止蓄气
T000:
BSR      L000  | <<-- 蓄气按键及条件测试
BEQ K300 | 为零 -->> 终止蓄气 (不可蓄气跳出) 
	|| 两种模式的蓄气速度
ADDI.W   #0x180,(0xE8,A4)  | 能量值 += 0x180
TST.B    (0x1D5,A4)  | 测试模式 (0:Advanced/1:Extra)
BNE.S    T101  | 不为零 -->> 测试能量是否满值 (Extra跳出)
SUBI.W   #0x100,(0xE8,A4)  | 能量值 -= 0x100 (减慢ADV模式的蓄气速度) 
	T101:  || 测试能量是否满值
JSR      0x10E44  | <<-- 能量是否已满值的测试
BNE.S T200 | 为零 -->> 能量满值后的分支处理 (能量已满跳出) 
	|| 继续蓄气
MOVEQ    #0x1,D0
RTS
	T200:  || 能量满值后的分支处理
TST.B    (0x1D5,A4)  | 测试模式 (0:Advanced/1:Extra)
BNE.S    T201  | 为零 -->> 进入MAX状态 (Extra跳出)
        | Advance模式蓄气满值增加能量珠
JSR      0x10F1C  | <<-- 能量珠+1 
	|| 继续蓄气
MOVEQ #0x1,D0
RTS
	T201: || Extra模式蓄气满值进入MAX状态
JSR 0x10E5C | <<-- 进入MAX状态
MOVE.W #0x10,(0xEC,A4) | MAX状态能量槽的消耗速度:0x10 
	T300: || 终止蓄气
MOVEQ #0x0,D0
RTS