PART 1: ; --------------------------------------------------------------------------- ; Sprite mappings - SCORE, TIME, RINGS ; --------------------------------------------------------------------------- Map_obj21: incbin _maps/sfhud.bin PART 2: Hud_ChkTime: tst.b ($FFFFFE1E).w ; does the time need updating? beq.w Hud_ChkLives ; if not, branch tst.w ($FFFFF63A).w ; is the game paused? bne.w Hud_ChkLives ; if yes, branch lea ($FFFFFE22).w,a1 cmpi.l #$93B3B,(a1)+ ; is the time 9.59? beq.w TimeOver ; if yes, branch addq.b #1,-(a1) jsr centiseconds cmpi.b #60,(a1) bcs.w Hud_ChkLives move.b #0,(a1) addq.b #1,-(a1) cmpi.b #60,(a1) bcs.w loc_1C734 move.b #0,(a1) addq.b #1,-(a1) cmpi.b #9,(a1) bcs.w loc_1C734 move.b #9,(a1) centiseconds: move.l a1,-(sp) moveq #0,d0 moveq #0,d1 move.b ($FFFFFE25).w,d1 move.b d1,d0 divu.w #3,d0 mulu.w #2,d0 add.b d0,d1 sub.w #1,d1 bpl notminus move.w #0,d1 notminus: cmp.w #100,d1 blo.w nothundred move.w #99,d1 nothundred: cmp.b #3,($FFFFFE25).w bne notwrongcenti move.w #5,d1 notwrongcenti: move.l #$72E00003,d0 jsr Hud_Secs move.l (sp)+,a1 rts loc_1C734: move.l #$5E400003,d0 moveq #0,d1 move.b ($FFFFFE23).w,d1 ; load minutes bsr.w Hud_Mins move.l #$5EC00003,d0 moveq #0,d1 move.b ($FFFFFE24).w,d1 ; load seconds bsr.w Hud_Secs Hud_ChkLives: tst.b ($FFFFFE1C).w ; does the lives counter need updating? beq.s Hud_ChkBonus ; if not, branch clr.b ($FFFFFE1C).w bsr.w Hud_Lives Hud_ChkBonus: tst.b ($FFFFF7D6).w ; do time/ring bonus counters need updating? beq.s Hud_End ; if not, branch clr.b ($FFFFF7D6).w move.l #$6E000002,($C00004).l moveq #0,d1 move.w ($FFFFF7D2).w,d1 ; load time bonus bsr.w Hud_TimeRingBonus moveq #0,d1 move.w ($FFFFF7D4).w,d1 ; load ring bonus bsr.w Hud_TimeRingBonus Hud_End: rts PART 3: Ensure the sfhud.bin (or change the name to whatever) in included in the correct location.