|  | Routines | 
| Prev: 34512 | Up: Map | Next: 34627 | 
| 
Used by the routine at 27703.
 | ||||
| 34567 | LD A,35 | If Magic Knight is not carrying the Mirror (35)... | ||
| 34569 | CALL 33645 | ... | ||
| 34572 | RET NZ | ...then return | ||
| 34573 | LD HL,16482 | Point HL at display file address for top pixel row of cell at (2, 3) (characters) | ||
| 34576 | LD A,(25020) | Load A with Magic Knight's strength | ||
| 34579 | CALL 28625 | Divide A by eight, rounding down to nearest integer | ||
| 34582 | AND 15 | If lowest four bits are reset (i.e. don't need to draw part of a character block)... | ||
| 34584 | JR Z,34603 | ...then skip ahead to 34603 | ||
| 34586 | LD B,A | Load number of full character blocks to draw into B | ||
| 34587 | LD A,255 | Load A with 255 (draw row of eight pixels) | ||
| 34589 | PUSH HL | Store HL (current display file position in health bar block) | ||
| 34590 | PUSH BC | Store BC (B = remaining number of full character blocks to draw) | ||
| 34591 | LD B,4 | Load B with 4 (health bar has 4 stripes) | ||
| 34593 | LD (HL),A | Draw a byte (i.e. a "block" of 8 health units) to health bar | ||
| 34594 | INC H | Advance HL two rows down (as bar is made of alternating horizontal stripes)... | ||
| 34595 | INC H | ... | ||
| 34596 | DJNZ 34593 | Decrease B (number of stripes to draw) and loop back to 34593 if not zero | ||
| 34598 | POP BC | Restore BC (B = remaining number of full character blocks to draw) | ||
| 34599 | POP HL | Restore HL (current display file position in health bar block) | ||
| 34600 | INC HL | Advance HL (horizontally) one character to draw next full block | ||
| 34601 | DJNZ 34589 | Decrease B (remaining number of full character blocks to draw) and loop back to 34589 if not zero | ||
| 34603 | LD A,(25020) | Load A with Magic Knight's strength | ||
| 34606 | AND 7 | Get fractional part (i.e. amount by which strength is more than a multiple of eight) | ||
| 34608 | JR NZ,34613 | If this is not zero, then skip ahead to 34613 | ||
| 34610 | XOR A | Set A to zero | ||
| 34611 | JR 34619 | Skip ahead to draw the blank rows (see trivia) | ||
| 34613 | LD B,A | Load fractional part of strength into B | ||
| 34614 | XOR A | Set A to zero | ||
| 34615 | SCF | Set the carry flag | ||
| 34616 | RRA | Move carry flag bit into MSB of A | ||
| 34617 | DJNZ 34615 | Decrease B and loop back if not zero (i.e. place a bit at the LHS of A for each unit of strength that is left!) | ||
| 34619 | LD B,4 | Load B with 4 (health bar has 4 stripes) | ||
| 34621 | LD (HL),A | Draw a byte (i.e. a "block" of 8 health units) to health bar | ||
| 34622 | INC H | Advance HL two rows down (as bar is made of alternating horizontal stripes)... | ||
| 34623 | INC H | ... | ||
| 34624 | DJNZ 34621 | Loop back to 34621 to draw next row | ||
| 34626 | RET | Return | ||
| Prev: 34512 | Up: Map | Next: 34627 |