Routines |
Prev: 36979 | Up: Map | Next: 37147 |
|
||||||||||
36987 | EX AF,AF' | Switch AF and AF' | ||||||||
36988 | LD A,111 | Reset draw-hand-menu-cursor flag (later in this routine)... | ||||||||
36990 | LD (37084),A | ... | ||||||||
This entry point is used by the routines at 36919 and 36979.
|
||||||||||
36993 | SET 1,(IY+65) | Set disable-in-game-glow flag | ||||||||
36997 | EX AF,AF' | Restore original AF (with A being index of window) | ||||||||
36998 | LD (37655),A | Set this index as the Current Window index | ||||||||
37001 | LD L,A | Load HL with A value (index of required window, e.g. 14 for "PRESS SPACE OR FIRE TO CONTINUE" window)... | ||||||||
37002 | LD H,0 | ... | ||||||||
37004 | ADD HL,HL | Multiply index by eight (as each window's data takes up eight bytes in table at 41874)... | ||||||||
37005 | ADD HL,HL | ... | ||||||||
37006 | ADD HL,HL | ... | ||||||||
37007 | LD BC,41874 | Set BC to start of window data table | ||||||||
37010 | ADD HL,BC | Calculate location of start of required window's data | ||||||||
37011 | LD E,(HL) | Load E with x-coordinate of left edge (characters) | ||||||||
37012 | INC HL | Load C with x-coordinate of right edge (characters)... | ||||||||
37013 | LD C,(HL) | ... | ||||||||
37014 | INC HL | Load D with y-coordinate of top edge (characters)... | ||||||||
37015 | LD D,(HL) | ... | ||||||||
37016 | INC HL | Load B with y-coordinate of bottom edge (characters)... | ||||||||
37017 | LD B,(HL) | ... | ||||||||
37018 | LD (23493),DE | Store values for later use... | ||||||||
37022 | LD (23495),BC | ... | ||||||||
37026 | INC HL | Load A with window's upper edge border style... | ||||||||
37027 | LD A,(HL) | ... | ||||||||
37028 | LD (36912),A | Store for later use | ||||||||
37031 | INC HL | Load A with window's border attribute... | ||||||||
37032 | LD A,(HL) | ... | ||||||||
37033 | EX AF,AF' | Exchange AF and AF' | ||||||||
37034 | INC HL | Load A with starting y-coordinate of hand cursor... | ||||||||
37035 | LD A,(HL) | ... | ||||||||
37036 | LD (23489),A | Store for later use | ||||||||
37039 | INC HL | Load A with window's content attribute... | ||||||||
37040 | LD A,(HL) | ... | ||||||||
37041 | LD (23477),A | Store for later use | ||||||||
37044 | EX AF,AF' | Exchange AF and AF' (restoring border attribute to A and putting background colour in A') | ||||||||
37045 | CALL 37147 | Draw window frame | ||||||||
37048 | LD HL,23493 | Point HL at previously stored values | ||||||||
37051 | INC (HL) | Increase top-left x-coordinate | ||||||||
37052 | INC HL | Increase top-left y-coordinate... | ||||||||
37053 | INC (HL) | ... | ||||||||
37054 | INC HL | Decrease bottom-right x-coordinate... | ||||||||
37055 | DEC (HL) | ... | ||||||||
37056 | INC HL | Decrease bottom-right y-coordinate... | ||||||||
37057 | DEC (HL) | ... | ||||||||
37058 | LD A,(23477) | Load window background attribute into A | ||||||||
37061 | LD (38250),A | Load this attribute into instruction in routine at 38242 that sets attribute of window contents | ||||||||
37064 | LD (23695),A | Store window background attribute at 23695 | ||||||||
37067 | CALL 38242 | Fill the interior of the window with its specified attribute (i.e. background colour and colour of text within) | ||||||||
37070 | CALL 38417 | Blank the interior of the window (bitmap area) | ||||||||
37073 | LD HL,23493 | Load x-coordinate of left of interior of window into C... | ||||||||
37076 | LD C,(HL) | ... | ||||||||
37077 | INC HL | Load y-coordinate of top of interior of window into B... | ||||||||
37078 | LD B,(HL) | ... | ||||||||
37079 | CALL 36551 | Move virtual cursor (bitmap) to top-left of interior or window | ||||||||
37082 | PUSH HL | Store HL | ||||||||
37083 | LD A,0 | Load A with draw-hand-menu-cursor flag | ||||||||
37085 | CP 105 | If value is not 105... | ||||||||
37087 | JP NZ,37138 | ...then jump to 37138 (i.e. don't draw the hand cursor) | ||||||||
Window is a menu (105)
|
||||||||||
37090 | LD BC,(23493) | Load B with y-coordinate of top edge and C with x-coordinate of left edge | ||||||||
37094 | INC C | Increase x-coordinate by one | ||||||||
37095 | LD A,(23489) | Load A with starting y-coordinate of hand cursor | ||||||||
37098 | ADD A,B | Add y-coordinate of top of area to this... | ||||||||
37099 | LD B,A | ...and place back into B | ||||||||
37100 | PUSH BC | Store coordinates for later | ||||||||
37101 | CALL 36551 | Move virtual cursor (bitmap) to coordinates in BC | ||||||||
37104 | LD DE,54701 | Load DE with pointer to "menu hand" graphic | ||||||||
37107 | LD B,8 | Loop over 8 pixel rows (drawing upper half of hand): | ||||||||
37109 | LD A,(DE) | Load a bitmap byte from hand graphic | ||||||||
37110 | LD (HL),A | Place bitmap byte at virtual cursor (bitmap) location (i.e. draw it to screen) | ||||||||
37111 | INC DE | Advance DE | ||||||||
37112 | INC L | Advance L (i.e. move right one character as hand graphic is 2-by-2 characters) | ||||||||
37113 | LD A,(DE) | Load a bitmap byte from hand graphic | ||||||||
37114 | LD (HL),A | Place bitmap byte at virtual cursor (bitmap) location (i.e. draw it to screen) | ||||||||
37115 | DEC L | Move virtual cursor (bitmap) left one character again | ||||||||
37116 | INC DE | Advance DE | ||||||||
37117 | INC H | Advance H (i.e. move down one pixel row, or 256 bytes) | ||||||||
37118 | DJNZ 37109 | Repeat loop to draw next row | ||||||||
37120 | POP BC | Recover coordinates | ||||||||
37121 | INC B | Increase y-coordinate as we are now drawing lower half of hand | ||||||||
37122 | CALL 36551 | Move virtual cursor (bitmap) to coordinates in BC | ||||||||
37125 | LD B,8 | Loop over 8 pixel rows (drawing lower half of hand): | ||||||||
37127 | LD A,(DE) | Load a bitmap byte from hand graphic | ||||||||
37128 | LD (HL),A | Place bitmap byte at virtual cursor (bitmap) location (i.e. draw it to screen) | ||||||||
37129 | INC DE | Advance DE | ||||||||
37130 | INC L | Advance L (i.e. move right one character as hand graphic is 2-by-2 characters) | ||||||||
37131 | LD A,(DE) | Load a bitmap byte from hand graphic | ||||||||
37132 | LD (HL),A | Place bitmap byte at virtual cursor (bitmap) location (i.e. draw it to screen) | ||||||||
37133 | DEC L | Move virtual cursor (bitmap) left one character again | ||||||||
37134 | INC DE | Advance DE | ||||||||
37135 | INC H | Advance H (i.e. move down one pixel row, or 256 bytes) | ||||||||
37136 | DJNZ 37127 | Repeat loop to draw next row | ||||||||
37138 | XOR A | Set A to zero | ||||||||
37139 | LD (23475),A | Set hand cursor's current y-coordinate to zero (i.e. defaults to top of its movement range within current window) | ||||||||
37142 | POP HL | Restore HL | ||||||||
37143 | LD (36488),HL | Set memory location to start printing character | ||||||||
37146 | RET | Return |
Prev: 36979 | Up: Map | Next: 37147 |