Prev: 30154 Up: Map Next: 30198
30160: Determine the interval between the last message and the next
Used by the routine at 28357. Returns with the interval in A, which indicates the minimum number of subintervals of 0.64s that the current message should be displayed for.
30160 LD A,(30153) Collect the urgent message number from 30153
30163 AND A Is it 0 (no message)?
30164 JR Z,30194 Jump if so
30166 LD HL,32695 Collect the index of the current message in the queue from 32695
30169 LD A,(HL)
30170 INC A A=index of the next message in the queue
30171 AND 7
30173 ADD A,184 Point HL at the slot for the next message in the queue
30175 LD L,A
30176 LD B,7 There are up to 7 messages ahead in the queue
30178 LD A,(30153) A=urgent message number
30181 CP (HL) Set the zero flag if the urgent message is in this slot in the queue
30182 INC HL Move HL along to the next slot in the message queue (or past the end of the queue and into the bullet buffers at 32704 and 32708, which is a bug)
30183 JR NZ,30188 Jump unless the urgent message is at this position in the queue
30185 LD A,1 Set A=1 so that the next message is displayed as soon as possible
30187 RET
30188 DJNZ 30181 Jump back until all messages in the queue have been checked
30190 XOR A Clear the urgent message number at 30153: it was not in the queue
30191 LD (30153),A
30194 LD A,(28612) Collect the normal message display interval from 28612
30197 RET
Prev: 30154 Up: Map Next: 30198