今天,小站的投稿系统上线啦!!!第一位投稿的是Aillis兄弟,他的作品是为KOF98增加BC系统,厉害了,小编沉迷了,手感超爽!
Aillis兄弟的作品在这:http://www.hackrom.cn/html/7/73.html
现在Aillis兄弟,把源代码贴出来了,希望对大家抛砖引玉,在别的KOF系统也用上,这确实是一个难得的干货啊!小编现在对这堆代码,还一头雾水!
include "def.inc"
globl _start
_start:
org 0x1B388
JSR 0x99000
org 0x99000
|| 增加:招式过程中的取消
MOVE.B D0,-(A7) | D0压栈
|| [BC] Power Up
L_XPU: || 能量测试
TST.B (0x1E3,A4) | 测试能量珠的剩余数
BEQ L_CANCEL | 为零(相等)转移到 -->> L_CANCEL
|| 地空分支
BTST #0x1,(0xE0,A4) | 跳测试
BNE L_JUMP | 不为零(不相等)转移到 -->> L_JUMP
|| 按键测试
MOVE.B (A6),D0 | (A6)置入D0
ANDI.B #0xF0,D0 | 仅保留按键
CMPI.B #0x60,D0 | 比较BC
BNE L_CANCEL | 不为零(不相等)转移到 -->> L_CANCEL
|| MAX状态测试,避免再次Power Up
BTST #0x4,(0xE0,A4) | 测试(0xE0,A4)的4位(即右数第5位),如果是 Power MAX 状态,这个位置的值是0x10
BNE L_CANCEL | 为零(相等)转移到 -->> L_CANCEL
BSR L_CLEAR | 清除必要位置
MOVE.L #L_POWER_UP,(0x198,A4) | Power Up
BRA L_RETURN_TRUE
L_POWER_UP: || 执行 Power Up
SUBQ.B #1,(0x1E3,A4) | 剩余能量珠减1
JSR 0x1558C | 无条件跳入子程序 <<-- 01558C [Power Up 音效及状态位设定]
MOVE.W #0x80,(0xEC,A4) | 设定MAX状态的倒计时速度
MOVE.W #0x4D,(0x72,A4) | [Advanced模式 Power Up动作]
MOVE.W #0xFFFF,(0x78,A4)
JSR 0x5BB0 | 无条件跳入子程序 <<-- 005BB0 [动作数据的载入和处理]
MOVE.L #0x15004,(A4) | 前冲或前疾跳
MOVEA.L (0xB6,A4),A0 | 取得对手基地址到A0
ORI.B #0x4,(0x12C,A0) | 被击中无后弹
ADDI.B #0x4,(0x124,A0) | 增加4帧对手硬直
L_001:
TST.B (0x7C,A4) | 负数代表当前ACT结束
BPL L_002 | 非负数转移到 -->> L_002
JMP 0x13AA2 | 总是转移到 -->> 013AA2
L_002:
JMP 0x139E6 | 总是转移到 -->> 0139E6
L_RETURN_TRUE:
MOVE.W (A7)+,D0 | D0出栈
MOVEQ #0x1,D1 | D1置1
RTS | 返回 -->>
L_CANCEL: || Cancel测试
MOVE.W (A7)+,D0 | D0出栈
JMP 0x24BB2 | 无条件跳入子程序 <<-- 024BB2 [Cancel条件测试(0:No 1:Yes)]
L_JUMP: || 跳分支(未完成)
BRA L_CANCEL | 总是转移到 -->> L_CANCEL
L_CLEAR: || 清除必要位置
JSR 0x2517A | 无条件跳入子程序 <<-- 02517A [收招后的状态设置]
ORI.B #0x80,(0xD1,A4) | 清除特效
ORI.B #0x4,(0xE2,A4) | 清除飞行道具残留
ANDI.B #0xEF,(0xE4,A4) | 取消双倍宽度身位框
CLR.L (0x198,A4) | 清除当前招式入口地址
MOVE.B #0x1,(0xA4,A4) | 消除互相穿越
MOVEA.L (0xB6,A4),A0 | 取得对手基地址到A0
ANDI.B #0x7F,(0xE5,A0) | 取消对手无攻击&被攻击硬直
RTS | 返回 -->>
感谢Aillis兄弟对小站的支持!!!!!!!!