It's a similar concept to FN037, but FN037 is a simple function of N.
X2J uses an Alpha-N table and then corrects that with ACT and normalizes with BP, at
687C EF68F5 L687C call FLUW_UU
687F 0801 word FN070(N) (#$C108)
6881 AA00 vect N
6883 A03830 ldw REG_30,REG_38
6886 EF5EF5 call FLUW_UU
6889 D083 word FN044(TP_REL_X) (#$CA48)
688B 5C02 vect TP_REL_X
688D A03832 ldw REG_32,REG_38
6890 AD0A34 ldzbw REG_34,#$0A
6893 457300F838 ad3w REG_38,REG_F8,#$0073 ; T_5 FNALPHA_N(N,TP_REL_X)
6898 EF19F6 call TLUB_Ub
689B 5F72AF3B3C ml3b REG_3C,REG_3B,BP ; BP
68A0 EFC3F4 call FLUB_SS
68A3 A4C0 word FNAPLHA_N_CORR(ACT) (#$CCFE)
68A5 AE00 vect ACT
68A7 090138 shlw REG_38,#$01
68AA 6C3C38 ml2w REG_38,REG_3C
68AD 8DEF0038 divw REG_38,#$00EF ; 29.875
68B1 D503 jnv L68B6
68B3 BDFF38 ldbse REG_38,#$FF
68B6 C3763638 L68B6 stw REG_38,ALPHA_N_MAF ; ALPHA_N_MAF[/code]
What I've called ALPHA_N_MAF is the limiting value, the equivalent of AIR37 in A9L.
The limiting code is at
Code: Select all
569C A376C250 ldw REG_50,AMINT ; AMINT
56A0 3BE371 jb MFMFLG,L5714
56A3 6776B050 ad2w REG_50,ARCHLI ; ARCHLI
56A7 DB06 jc L56AF
56A9 8B763650 cmpw REG_50,ALPHA_N_MAF ; ALPHA_N_MAF
56AD D104 jleu L56B3
56AF A3763650 L56AF ldw REG_50,ALPHA_N_MAF ; ALPHA_N_MAF
56B3 C376B250 L56B3 stw REG_50,ARCHI ; ARCHI
while ARCHI is written to at 0x2D70 in A9L.