; ; ADD POINTS FOR DEFEATING REPTILE ; FFCAC9F0: MOVE @10519E0h,A1,0 ; GET WINNING PLAYER NUM FFCACA20: DEC A1 ; 0=P1, 1=P2 FFCACA30: MOVI 20001h,B0 ; 2,000,000 POINTS FFCACA60: CALLA FFC82F80h ; ADD TO SCORE 5 TIMES TO AWARD 10,000,000 FFCACA90: CALLA FFC82F80h FFCACAC0: CALLA FFC82F80h FFCACAF0: CALLA FFC82F80h FFCACB20: CALLA FFC82F80h ; ; ADD TO PLAYER SCORE PER-DIGIT (8-BIT BCD) ; ; PARAMETERS ; ; A1[00] = PLAYER NUMBER (0=P1, 1=P2) ; B0[03:00] = DIGIT INDEX (0=MOST SIGNIFICANT, 7=LEAST SIGNIFICANT) ; B0[19:16] = BCD DIGIT ; FFC82F80: MOVE B0,A0 FFC82F90: JREQ FFC831B0h ; BRANCH IF NOTHING TO ADD FFC82FA0: MOVI 10512A0h,A2 ; P1 SCORE ADDRESS (MOST SIGNIFICANT DIGIT) FFC82FD0: MOVE A1,A1 ; TEST PLAYER NUM AND CHOOSE ADDRESS FFC82FE0: JREQ FFC83020h FFC82FF0: MOVI 1051580h,A2 ; P2 SCORE ADDRESS FFC83020: MOVE A2,A3 FFC83030: MOVE A0,A1 FFC83040: SLL 10h,A1 ; GET DIGIT INDEX FFC83050: SRL Dh,A1 FFC83060: ADD A1,A2 ; FORM DIGIT ADDRESS FFC83070: SRL 10h,A0 FFC83080: MOVB *A2,A1 ; READ CURRENT VALUE AT THIS DIGIT FFC83090: ADD A0,A1 ; ADD POINT VALUE TO DIGIT FFC830A0: CMPI Ah,A1 ; CHECK FOR BCD OVERFLOW FFC830C0: JRC FFC831A0h ; OTHERWISE WRITE NEW DIGIT FFC830D0: SUBK Ah,A1 FFC830E0: MOVB A1,*A2 ; CARRY TO HIGHER DIGIT FFC830F0: SUBK 8h,A2 FFC83100: MOVK 1h,A0 FFC83110: CMP A3,A2 ; CHECK FOR SCORE OVERFLOW FFC83120: JRNC FFC83080h FFC83130: MOVI 9090909h,A0 ; CLAMP TO MAXIMUM SCORE (99999999) FFC83160: MOVE A0,*A3,1 FFC83170: MOVE A0,*A3(20h),1 FFC83190: RETS FFC831A0: MOVB A1,*A2 ; WRITE NEW DIGIT FFC831B0: RETS