Cancel
class Cancel
{
public:
CancelDirectionCode DirectionCommand_ListIdentifier; //0x0000
CancelAttackCode AttackCommand; //0x0004
int64_t requirement_addr; //0x0008
class cancel_extradata *extradata_addr; //0x0010
int32_t frame_window_start; //0x0018
int32_t frame_window_end; //0x001C
int32_t starting_frame; //0x0020
uint16_t move_id; //0x0024
uint16_t cancel_option; //0x0026
}; //Size: 0x0028
static_assert(sizeof(Cancel) == 0x28);
DirectionCommand_ListIdentifier: if the 15th bit isnt' set, it's a direction command. If 15th bit is set, it's a ListIdentifier: identifies the end of the list or a pointer to a group cancel, or possibly something else.
requirement_addr: pointer to the start of the requirement list.
extradata_addr: pointer to the start of the extradata list.
frame_window_start: the start of the window at which the cancel is active.
frame_window_end: the end of the window at which the cancel is active.
move_id: id of a move into which this cancel cancels the object. So, for example, if value of the move_id
member is 0x1605
, this cancel will cancel current move into the move at index 0x1605
in the move list.
cancel_option: todo.
CancelDirectionCode
class CancelDirectionCode(Enum):
_D_B = 1 << 1
_D = 1 << 2
_D_F = 1 << 3
_B = 1 << 4
_N = 1 << 5
_F = 1 << 6
_U_B = 1 << 7
_U = 1 << 8
_U_F = 1 << 9
special = 1 << 15
cancel_list_end = 0x8000
group_cancel = 0x800B
group_cancel_list_end = 0x800C
CancelDirectionCode enum
inside Cancel
objects.
If 15th bit is not set, it means it's a direction code of an input. If 15th bit is set, depending on the value of the variable, it indicates the end of the cancel list, or a pointer to a group cancel list.
0x8001 is forward dash and 0x8002 is backdash.
0x8003 and 0x8004 the sidesteps.
If it's a pointer to a group cancel list, the index of the cancel in the group cancel list is in the move_id
member in the Cancel
object.
CancelAttackCode
class CancelAttackCode(Enum):
_N = 0
_1 = 1 << 0 & 1 <<
_2 = 1 << 1
_3 = 1 << 2
_4 = 1 << 3
_1_2 = _1 & _2
_1_3 = _1 & _3
_1_4 = _1 & _4
_2_3 = _2 & _3
_2_4 = _2 & _4
_3_4 = _3 & _4
_1_2_3 = _1 & _2 & _3
_1_2_4 = _1 & _2 & _4
_1_3_4 = _1 & _3 & _4
_2_3_4 = _2 & _3 & _4
_1_2_3_4 = _1 & _2 & _3 & _4
_1_hold = 1 << 9
_2_hold = 1 << 10
_3_hold = 1 << 11
_4_hold = 1 << 12
Indicates what attack buttons have to be pressed in order for this cancel to become active(cancel the move).