I understood the item1 rise.
It is affected by $04C4(item1-1st) $04C3(item1-2nd) $04C2(item1-3rd).
It is a test of taking changing $04C4 in putting by 1frame.
$8C->$4B->$0A->$C9(item1 up)->
$88->$47->$06->$C5(item1 up)->
$84->$43->$02->$C1(item1 up)->
$80->$3F->$FE(item1 up)
$BD->$7C->$3B->$FA(item1 up)
$B9->$78->$37->$F6(item1 up)
$B5->$74->$33->$F2(item1 up)
$41 is subtracted every frame, and the item1 rises when the boundary of $0 is exceeded.
The arms that are influenced these address
$04C4 is affected by A,Q,M,1
$04C3 is affected by A,B,Q,M,1
$04C2 is affected by A,B,Q,M,C,1,2,3
The value of $04C4-$04C2 is not initialized.
In a word, the coordination is possible according to other arms or item1 , etc..
Rising beginning
$FF~$81: Item1 rises after 4frame
$81~$41: Item1 rises after 3frame
$40~$00: Item1 rises after 2frame.
Interval of rising frame
$FF~$81:rise:4-4-.....3-4-4..
$FF~$81:rise:3-4-.....3-4-4..
$40~$00:rise:2-4-.....3-4-4..
They are the rises of every 3 frames or 4 frames usually.
But,the value of $40-$00 becomes a rise by 2 frames of the momentarily at the time of set up the item1.
Though the jump might not reach when the rise is too fast :P
It is one of the reasons why "copypastes" result in desync.
Rising code of item1
EECD:SEC //set carry flag
EECE:LDA $04C0,X @ $04C4 = $67 //$04C4: It is a related value in coordinates of item1 or other arms.
EED1:SBC $0660,X @ $0664 = $41 //When the boundary of $0 is exceeded, clear carry flag.
//$0664: It is fixed with $41.
EED4:STA $04C0,X @ $04C4 = $26
EED7:LDA $04A0,X @ $04A4 = $5F //$04A4: Y coordinates of item 1
EEDA:SBC $0640,X @ $0644 = $00 //When the carry flag is cleared, the value of A is subtracted.(-1)
EEDD:STA $04A4,X @ $04A4 = $5F
EEE0:CMP #$F0 //Judgment outside screen
EEE2:BCC $EEE7
EEE4:JMP $EF6A
For the reference :)