8D0907551M 002
CWLAMFAW is a byte located at 0x818ECB
DZWWL is a signed byte located at 0x380DA5 Timing Offset Degrees 0.75 (positive numbers for advance, negative for retard)
WKRMA is a unsigned byte located at 0xF9B3 Timing Retard Degrees 0.75 (postive numbers for retard)
Here is the CWLAMFAW logic with the result of the equation being timing retard used for the table lookup:
CWLAMFAW 0: (max(0, DZWWL) * -1) + WKRMA
CWLAMFAW 1: min(0, (DZWWL * -1) + WKRMA)
loc_859228:
extp #206h, #1
movbz r4, CWLAMFAW
and r4, #1
jmpr cc_Z, loc_859284
movb rl4, DZWWL
cmpb rl4, #0
jmpr cc_SLE, DZWWL_LessThanOrEqualToZero
cmpb rl4, WKRMA
jmpr cc_ULE, loc_859248
movb KFLAMKRL, ZEROS
jmpr cc_UC, loc_8592B8
; -----------------------------------
loc_859248:
movb rl4, DZWWL
movb rl5, WKRMA
subb rl5, rl4
jmpr cc_NC, loc_859256
movb rl5, #0
loc_859256:
movb KFLAMKRL, rl5
jmpr cc_UC, loc_8592B8
; -----------------------------------
DZWWL_LessThanOrEqualToZero:
movb rl4, DZWWL
cplb rl4
addb rl4, #1
movb rl5, WKRMA
cmpb rl4, #0
jmpr cc_SLT, loc_859276
addb rl5, rl4
jmpr cc_NC, loc_85927E
movb rl5, #0FFh
jmpr cc_UC, loc_85927E
; -----------------------------------
loc_859276:
negb rl4
subb rl5, rl4
jmpr cc_NC, loc_85927E
movb rl5, #0
loc_85927E:
movb DZWLAMFAW, rl5
jmpr cc_UC, loc_8592B8
; -----------------------------------
loc_859284:
movb rl4, DZWWL
cmpb rl4, #0
jmpr cc_SGE, loc_859296
movb rl6, DZWWL
cplb rl6
addb rl6, #1
jmpr cc_UC, loc_859298
; -----------------------------------
loc_859296:
movb rl6, #0
loc_859298:
movb rl4, rl6
movb rl5, WKRMA ; Move Byte
cmpb rl4, #0
jmpr cc_SLT, loc_8592AC
addb rl5, rl4
jmpr cc_NC, loc_8592B4
movb rl5, #0FFh
jmpr cc_UC, loc_8592B4
; -----------------------------------
loc_8592AC:
negb rl4
subb rl5, rl4
jmpr cc_NC, loc_8592B4
movb rl5, #0
loc_8592B4:
movb DZWLAMFAW, rl5
loc_8592B8:
EDIT: I added a code block of the assembly code for the CWLAMFAW logic.