|  | Routines | 
| Prev: 36183 | Up: Map | Next: 36275 | 
| 36215 | LD A,35 | Load A with index of object 35 (Mirror) | ||
| 36217 | CALL 34256 | Check whether Magic Knight is carrying the Mirror... | ||
| 36220 | RET NZ | ...and if not, return | ||
| 36221 | LD HL,20642 | Point HL to position of start of health bar in display file | ||
| 36224 | LD A,(25315) | Load A with Magic Knight's strength | ||
| 36227 | RRCA | Divide strength by eight, rounding down to nearest integer... | ||
| 36228 | RRCA | ... | ||
| 36229 | RRCA | ... | ||
| 36230 | AND 15 | ...and if lowest four bits are reset (i.e. don't need to draw part of a character block)... | ||
| 36232 | JR Z,36251 | ...then skip ahead to 36251 | ||
| 36234 | LD B,A | Load number of full character blocks to draw into B | ||
| 36235 | LD A,255 | Place 255 into A | ||
| 36237 | PUSH HL | Store HL (display file position of start of health bar block) | ||
| 36238 | PUSH BC | Store BC (B = number of full character blocks to draw) | ||
| 36239 | LD B,4 | Load B with 4 (health bar has 4 stripes) | ||
| 36241 | LD (HL),A | Draw a byte (i.e. a "block" of 8 health units) to health bar | ||
| 36242 | INC H | Advance HL two rows down (as bar is made of alternating horizontal stripes)... | ||
| 36243 | INC H | ... | ||
| 36244 | DJNZ 36241 | And if there's another stripe of the 4 to draw, then loop back and draw it | ||
| 36246 | POP BC | Restore BC (B = number of full character blocks to draw) | ||
| 36247 | POP HL | Restore HL (display file position of start of health bar) | ||
| 36248 | INC HL | Advance HL (horizontally) one character to draw next full block, if applicable | ||
| 36249 | DJNZ 36237 | If there's another block to draw, then loop back to draw it | ||
| 36251 | LD A,(25315) | Load A with Magic Knight's strength | ||
| 36254 | AND 7 | Get fractional part (i.e. amount by which strength is more than a multiple of eight) | ||
| 36256 | JR NZ,36261 | If it is not zero, then skip ahead to 36261 | ||
| 36258 | XOR A | Set A to zero | ||
| 36259 | JR 36267 | Skip ahead to draw the blank rows (see trivia) | ||
| 36261 | LD B,A | Load fractional part of strength into B | ||
| 36262 | XOR A | Set A to zero | ||
| 36263 | SCF | Set the carry flag | ||
| 36264 | RRA | Move carry flag bit into MSB of A | ||
| 36265 | DJNZ 36263 | 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!) | ||
| 36267 | LD B,4 | Load B with 4 (health bar has 4 stripes) | ||
| 36269 | LD (HL),A | Draw a byte (i.e. a "block" of 8 health units) to health bar | ||
| 36270 | INC H | Advance HL two rows down (as bar is made of alternating horizontal stripes)... | ||
| 36271 | INC H | ... | ||
| 36272 | DJNZ 36269 | Loop back to draw next row | ||
| 36274 | RET | Return | ||
| Prev: 36183 | Up: Map | Next: 36275 |