• 您的当前位置:首页 > HACK教程 > [ 投稿 ][ 教程 ] 如何让KOF增加KOF14的BC系统源代码 注释

[ 投稿 ][ 教程 ] 如何让KOF增加KOF14的BC系统源代码 注释

  • 作者:Aillis
  • 2020-03-21 09:47:18

今天,小站的投稿系统上线啦!!!第一位投稿的是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兄弟对小站的支持!!!!!!!!

*_*
互动小天地
点击加载更多...