本帖最后由 冰炎梦幻 于 2020-9-2 00:50 编辑
先上张图。
当EX模式为爆气状态时,开启霸体模式。
基本属性:主体未防御受到攻击时被打康的时候,行动不会被打断。
实际上,代码中也添加了P2的霸体判定,若结合P2,RALF的MAX宇宙幻影也可以改出98版本的效果。
注:普通非攻击状态无霸体。
68000源码如下:
[Asm] 纯文本查看 复制代码 ; KOF97EX模式霸体------------------------------------------------------------
; 当EX模式为爆气状态时,开启霸体模式。
; 基本属性:主体未防御受到攻击时被打康的时候,行动不会被打断。
; ---------------------------------------------------------------------------
org $1657C
jsr sub_1B94A
jmp loc_16582
org $16A1C
jmp sub_16A1C
org $94C00
;1st part:根据受攻击方的受攻击判定选择,投机允许开关
sub_16A1C:
cmpi.b #$38,d1 ;检测攻击方判定E0-E3对空当身
beq.w loc_16A50
cmpi.b #$39,d1 ;检测攻击方判定E4-E7对地当身
beq.w loc_16A50
cmpi.b #$37,d1 ;检测攻击方判定DC-DF
bne.w loc_16A4C
btst #6,$7C(a4)
bne.w loc_16A50
move.b $AB(a4),d0
cmpi.b #9,d0 ;检测受攻击方当前FD判定,24-27为霸体模式。
beq.w loc_16A4C
tst.b ($1d5,A0) ;检测被攻击方AD模式和EX模式
beq.s loc1820e11 ;ADV模式跳走
btst #$4, ($e0,A0)
beq.s loc1820e11 ;非爆气状态则跳走
btst #$0, ($E0,A0) ;被攻击方检测是否有攻击标记
bne.w loc_16A4C ;标志位为1有,则跳走,霸体成立
loc1820e11:
jsr $15662
beq.w loc_16A50
loc_16A4C:
moveq #$FFFFFFFF,d1
rts
loc_16A50:
btst #6,$E1(a4)
rts
; End of function sub_16A1C
; ---------------------------------------------------------------------------
;2nd part:检测受攻击方受攻击判定框,查受攻击方对应动作ACT
sub_1B94A:
moveq #5,d0
movea.l $B2(a4),a0
btst #0,$E6(a0)
bne.w locret_1B9BC
moveq #3,d0
cmpi.b #$A,$AC(a4)
beq.w locret_1B9BC
moveq #4,d0
cmpi.b #$B,$AC(a4)
beq.w locret_1B9BC
moveq #6,d0
cmpi.b #9,$AC(a4) ;检测受攻击方当前FD判定,24-27为霸体模式。
beq.w locret_1B9BC
tst.b ($1d5,A4) ;*检测AD模式和EX模式
beq.s loc1820e ;ADV模式跳走
btst #$4, ($e0,A4) ;检测是否爆气状态
beq.s loc1820e ;非爆气状态则跳走
btst #$0, ($E0,A4) ;被攻击方检测是否有攻击标记
bne.w locret_1B9BC ;为1跳走,霸体成立
loc1820e:
cmpi.w #$146,$72(a4)
bcs.s loc_1B9AE
cmpi.w #$14F,$72(a4)
bhi.s loc_1B9AE
moveq #2,d0
moveq #0,d1
cmpi.w #$14B,$72(a4)
bcs.s loc_1B9A2
moveq #3,d1
loc_1B9A2:
add.b $12D(a4),d1
move.b d1,$12E(a4)
bra.s locret_1B9BC
loc_1B9AE:
moveq #0,d0
cmpi.b #$18,$AD(a4)
bcs.s locret_1B9BC
moveq #1,d0
locret_1B9BC:
rts
; End of function sub_1B94A
;------------------------------------------------------------------------
;3rd part:根据受攻击方的受攻击判定数据选择后续程序
loc_16582:
;tst.b ($1d5,A4) ;检测AD模式和EX模式
;beq.s normal_lookup ;ADV模式跳走
;btst #$4, ($e0,A4) ;检测是否爆气状态
;beq.s normal_lookup ;非爆气状态则跳走
;cmpi.b #$37,d2 ;检测是否缠身技能
;beq.w normal_lookup ;缠身技跳走,霸体不成立
;movea.l bati,a0
;jmp (a0)
normal_lookup:
add.w d0,d0
add.w d0,d0
lea off_1658C,a0
movea.l (A0,d0),a0
jmp (a0)
; ---------------------------------------------------------------------------
off_1658C: dc.l $165A4
dc.l $16686
dc.l $1670A
dc.l $1674C
dc.l $1681A
dc.l $16854
bati: dc.l loc_1B812 ;FD判定为24-27
loc_1B812:
jsr $169E4
nop
beq.w normal_lookup
jsr $190AC
nop
andi.b #$FB,$E2(a4)
jsr $156AC
jsr $15DAC
jsr $13572
jsr $1287E
clr.l $AA(a4)
jmp $18418
代码可使用easy68k自行编译,所得二进制数据写入ROM的P1文件中即可。
如果转载的话希望大家把全文都贴上去,不要断章取义!并附上原帖地址! 禁止用于任何商业用途! 禁止蓝色宇宙、Psycho RFG、abcd524、taoenwen、wangboku、romman等罔顾廉耻的lamer及此类人自己的站点使用!
|