Prev: 31435 Up: Map Next: 31509
31436: Draw barriers
The barriers are built from UDGs. Each barrier is 3 rows of chars high, and each row is printed as a string using a special "font".
Used by the routine at start.
draw_barriers 31436 LD A,(_BARRIERS_SUPPRESSED) Barriers suppressed flag, this has to be zero otherwise the barriers aren't drawn
31439 OR A
31440 RET NZ
31441 LD HL,(_CURRENT_FONT) Stash default font address on stack
31444 PUSH HL
31445 LD HL,30987 Switch to the UDGs here. In theory this is the start of the "font", but we only use UDGs starting at char '0'. Char '0' is 48 decimal, 48*8 is 384, 30987+384=31371
31448 LD (_CURRENT_FONT),HL
31451 LD A,3 We need to draw 3 barriers
31453 LD (_DRAW_BARRIER_COUNT),A
31456 LD BC,5125 Y=20, X=05
draw_barriers_0 31459 LD HL,_BARRIER_TOP Sequence of UDGs which display a row of the barrier
31462 PUSH BC
31463 LD A,3 The graphic is 3 rows per barrier
31465 LD (_BARRIER_ROWS_TO_DRAW),A
draw_barriers_1 31468 CALL print_string_at_hl Draw a barrier row using the UDG printer code
31471 DEC C X=X-4
31472 DEC C
31473 DEC C
31474 DEC C
31475 INC B Y=Y+1
31476 LD A,(_BARRIER_ROWS_TO_DRAW) Barrier row drawn
31479 DEC A
31480 LD (_BARRIER_ROWS_TO_DRAW),A
31483 JR NZ,draw_barriers_1 Back for next row
31485 POP BC
31486 LD A,C Move X along 9 chars ready for next barrier
31487 ADD A,9
31489 LD C,A
31490 LD A,(_DRAW_BARRIER_COUNT) One more barrier has been drawn
31493 DEC A
31494 LD (_DRAW_BARRIER_COUNT),A
31497 JR NZ,draw_barriers_0 Back to do the next one
31499 POP HL Recover default font address and put it back
31500 LD (_CURRENT_FONT),HL
31503 LD A,1 Barriers are drawn, flag not to redraw them.
31505 LD (_BARRIERS_SUPPRESSED),A
31508 RET
Prev: 31435 Up: Map Next: 31509