Prev: 33203 Up: Map Next: 33339
33236: Handler: Ticker
Used by the routine at 32853.
Example messaging (note, this is two frames at a time - the game is smoother - plus, in the game the message starts off-screen).
ticker-animation
Handler_Ticker 33236 LD HL,61435 Return if the ticker is not currently enabled.
33239 BIT 0,(HL)
33241 RET Z
33242 LD HL,30741 HL=Ticker_SpeedCounter.
33245 DEC (HL) Decrease *Ticker_SpeedCounter by one.
33246 JR NZ,Handler_Ticker_2 Jump to Handler_Ticker_2 if *Ticker_SpeedCounter is not zero.
33248 LD (HL),7 Reset *Ticker_SpeedCounter to 7.
33250 LD HL,30738 HL=Ticker_CharacterCounter.
33253 DEC (HL) Decrease *Ticker_CharacterCounter by one.
33254 JR NZ,Handler_Ticker_1 Jump to Handler_Ticker_1 if *Ticker_CharacterCounter is not zero.
33256 LD HL,61435 Jump to Handler_Ticker_0 if bit 1 ("Flightpath In-Progress") of *GameState_2 is set.
33259 BIT 1,(HL)
33261 JR NZ,Handler_Ticker_0
33263 LD A,(61434) Jump to TickerAnimation_Complete if the ticker animation has completed.
33266 CP 0
33268 JR Z,TickerAnimation_Complete
33270 CALL Messaging_GenerateTicker Call Messaging_GenerateTicker.
33273 JR Handler_Ticker Jump to Handler_Ticker.
The ticker animation is complete, so reset the state flag.
TickerAnimation_Complete 33275 RES 0,(HL) Set the ticker bit in *GameState_2 to "ticker OFF".
33277 RET Return.
Handler_Ticker_0 33278 LD A,(30750) A=*30750.
33281 CALL DoneFillingTickerBuffer Call DoneFillingTickerBuffer.
33284 JP Handler_Ticker Jump to Handler_Ticker.
Handler_Ticker_1 33287 LD HL,(30739) HL=*TickerCharacter_Pointer.
33290 INC HL Increment *TickerCharacter_Pointer by one.
33291 LD (30739),HL
33294 LD L,(HL) L=*HL.
33295 LD H,0 H=0.
33297 ADD HL,HL HL*=8.
33298 ADD HL,HL
33299 ADD HL,HL
33300 LD DE,63296 HL+=63296.
33303 ADD HL,DE
33304 LD DE,30742 Copy 0008 bytes from *HL to Buffer_TickerCharacter.
33307 LD BC,8
33310 LDIR
Rotate the messaging left across the screen.
Handler_Ticker_2 33312 LD C,8 Set a counter in C for the lines (bytes) in a character (8).
33314 LD HL,30742 HL=Buffer_TickerCharacter.
33317 LD DE,20703 Set DE to the screen buffer location 20703.
TickerRotate_Loop 33320 RLC (HL) Rotate *HL left (with carry).
33322 PUSH DE Stash DE on the stack.
33323 EX DE,HL Exchange the DE and HL registers.
Rotate the current line.
33324 LD B,32 Set a counter in B for the number of characters in a line (32).
TickerRotateLine_Loop 33326 RL (HL) Rotate *HL left.
33328 DEC HL Decrease HL by one.
33329 DJNZ TickerRotateLine_Loop Decrease counter by one and loop back to TickerRotateLine_Loop until counter is zero.
33331 POP HL Restore HL from the stack.
33332 INC H Increment H by one.
33333 EX DE,HL Exchange the DE and HL registers.
33334 INC HL Increment HL by one.
33335 DEC C Decrease the line counter by one.
33336 JR NZ,TickerRotate_Loop Jump to TickerRotate_Loop until the line counter is zero.
33338 RET Return.
Prev: 33203 Up: Map Next: 33339