(→Cancel) |
(→Cancel) |
||
Line 16: | Line 16: | ||
</syntaxhighlight>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. | </syntaxhighlight>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. | ||
RequirementsListAddress: pointer to the start of the requirement list. | |||
ExtradataListAddr: pointer to the start of the extradata list. | |||
FrameWindowStart: the start of the window at which the cancel is active. | |||
FrameWindowEnd: the end of the window at which the cancel is active. | |||
StartingFrame: number of the frame to which the cancel cancels the move. In other words at which frame the next move will start. | |||
MoveID: id of a move into which this cancel cancels the object. So, for example, if value of the <code>move_id</code> member is <code>0x1605</code> , this cancel will cancel current move into the move at index <code>0x1605</code> in the move list. | |||
CancelOption: todo. | |||
===== CancelDirectionCode ===== | ===== CancelDirectionCode ===== |
Revision as of 21:00, 16 June 2021
Cancel
class Cancel
{
public:
int64_t DirectionCommand_ListIdentifier; //0x0000
int64_t RequirementsListAddress; //0x0008
class cancel_extradata *ExtradataListAddr; //0x0010
int32_t FrameWindowStart; //0x0018
int32_t FrameWindowEnd; //0x001C
int32_t StartingFrame; //0x0020
uint16_t MoveID; //0x0024
uint16_t CancelOption; //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.
RequirementsListAddress: pointer to the start of the requirement list.
ExtradataListAddr: pointer to the start of the extradata list.
FrameWindowStart: the start of the window at which the cancel is active.
FrameWindowEnd: the end of the window at which the cancel is active.
StartingFrame: number of the frame to which the cancel cancels the move. In other words at which frame the next move will start.
MoveID: 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.
CancelOption: todo.
CancelDirectionCode
class CancelDirectionCode(Enum):
_ANY = 0
_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
_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).
30th bit determines if the attack button should be presses again, or it should just be held down.
For the non-hold buttons to work, the 30th bit should be set to 1 in order for the input to work.
For the _hold buttons to work, the 30th bit should be set to 0.