Routines |
Prev: 42616 | Up: Map | Next: 42938 |
Used by the routine at 64623.
|
||||
42638 | CALL 63399 | Print or update command summary window at top of screen | ||
42641 | LD DE,52158 | Point DE at "[Current Command] " text... | ||
42644 | CALL 63349 | ...and print in command summary window at top of screen | ||
42647 | LD A,16 | Draw "EXAMINE WHAT?" menu window... | ||
42649 | CALL 47185 | ... | ||
42652 | LD HL,52162 | Point HL at "[Current Command] WHAT ?" menu text... | ||
42655 | CALL 46902 | ...and print to screen | ||
42658 | CALL 47502 | Process keyboard / joystick input on a menu and load A with selected item index | ||
42661 | OR A | If "OBJECT" selected... | ||
42662 | JP Z,42834 | ...then skip ahead to 42834 | ||
42665 | CP 1 | If "CHARACTER" selected... | ||
42667 | JP Z,42715 | ...then skip ahead to 42715 | ||
Examine yourself
|
||||
42670 | LD DE,52521 | Point DE at "YOURSELF " text... | ||
42673 | CALL 63349 | ...and print in command summary window at top of screen | ||
42676 | CALL 64207 | Display execute / reject command window and return here if execute chosen, else exit to main game loop | ||
42679 | LD A,18 | Draw window 18... | ||
42681 | CALL 47193 | ... | ||
42684 | LD A,32 | Set Current Character index to 32... | ||
42686 | LD (41937),A | ...as index of "MAGIC KNIGHT" text is 32 relative to start of characters' names at 58544 | ||
42689 | LD HL,52311 | Point HL at percentage completion text | ||
42692 | LD DE,52323 | Point DE at time left text | ||
42695 | CALL 45522 | Insert current time and score into "time left" and "percentage completion" texts | ||
42698 | LD HL,24768 | Point HL at start of Magic Knight's current stats | ||
42701 | LD A,37 | Set graphic index to 37... | ||
42703 | LD (42827),A | ...and store as operand to instruction at 42826 | ||
42706 | LD A,(24846) | Load Magic Knight's attribute value into... | ||
42709 | LD (49193),A | ...content attribute slot of window 19 (examine portrait frame) | ||
42712 | JP 42763 | Skip ahead to 42763 (display window as in examine character) | ||
Examine character
|
||||
42715 | LD HL,51408 | Point HL at "[Current Command] ?" text (end of sub-menu title, after "WHO DO YOU WANT TO ") | ||
42718 | LD DE,0 | Load DE with zero (i.e. no command summary text) | ||
42721 | CALL 45963 | Display and process input for character selection menu (current room's characters only), setting Current Character | ||
42724 | JP Z,41742 | If there are no characters in the room then return to game | ||
42727 | CALL 64207 | Display execute / reject command window and return here if execute chosen, else exit to main game loop | ||
42730 | LD A,5 | Increase Current Character's happiness by 5... | ||
42732 | CALL 45434 | ... | ||
42735 | LD A,18 | Draw window 18... | ||
42737 | CALL 47193 | ... | ||
42740 | LD A,(41937) | Load A with index of Current Character | ||
42743 | LD E,0 | Point HL at start of character's stats... | ||
42745 | CALL 45406 | ... | ||
42748 | PUSH HL | Transfer address from HL... | ||
42749 | POP IX | ...into IX | ||
42751 | LD A,(IX+5) | Load character graphic index into A... | ||
42754 | LD (42827),A | ...and modify operand of instruction at 42826 to match | ||
42757 | LD A,(IX+4) | Load character's attribute value into... | ||
42760 | LD (49193),A | ...content attribute slot of window 19 (examine portrait frame) | ||
42763 | CALL 42938 | Insert numeric stats (at HL) of a character into "EXAMINE CHARACTER" window text | ||
42766 | PUSH HL | Store HL (points to start of character's current stats) | ||
42767 | LD HL,52180 | Print examine character window text (i.e. "EXAMINE [CHARACTER] ... STRENGTH XX..." text)... | ||
42770 | CALL 46902 | ... | ||
42773 | POP IX | Restore IX (points to start of character's current stats) | ||
42775 | LD B,10 | Load B with 10 (index of "[Current Character's short name] IS ASLEEP" text) | ||
42777 | BIT 7,(IX+6) | If character's asleep flag is set... | ||
42781 | JR NZ,42786 | ...then skip ahead to 42786 | ||
42783 | LD B,(IX+7) | Load B with index of character's current status text | ||
42786 | LD A,(41937) | If Current Character index is not 32 (Magic Knight, i.e. EXAMINE YOURSELF)... | ||
42789 | CP 32 | ... | ||
42791 | JR NZ,42795 | ...then skip ahead to 42795 | ||
42793 | LD B,1 | Load B with 1 (index of Magic Knight's current status text) | ||
42795 | RES 7,B | Reset bit 7 of status text index (see trivia) | ||
42797 | LD HL,52301 | Point HL at start of characters' "current status" texts | ||
42800 | CALL 63335 | Advance HL to B-th entry in list of zero-terminated strings starting at HL... | ||
42803 | CALL 46902 | ...and print | ||
42806 | LD A,(42827) | If character graphic index is zero... | ||
42809 | OR A | ... | ||
42810 | JR Z,42831 | ...then skip ahead to 42831 | ||
42812 | LD A,19 | Draw window 19 (examine portrait frame)... | ||
42814 | CALL 47193 | ... | ||
42817 | LD BC,(23408) | Load BC with top-left coordinate of current window | ||
42821 | LD A,71 | Store 71 (white INK, black PAPER, BRIGHT) at 23695... | ||
42823 | LD (23695),A | ... | ||
42826 | LD A,0 | Load A with character's graphic index... | ||
42828 | CALL 63504 | ...and draw this graphic at character coordinates (C, B) with width 2 and height 4 | ||
42831 | JP 41739 | Display "PRESS FIRE TO CONTINUE" window and wait for input and return to main game loop | ||
Examine object
|
||||
42834 | CALL 45641 | Display "YOU ARE NOT CARRYING ANYTHING" window and set zero flag if Magic Knight's inventory (carrying) is empty | ||
42837 | JP Z,41742 | If Magic Knight's inventory (carrying) is empty then return to game | ||
42840 | LD A,15 | Set bottom edge of window 20 to 15... | ||
42842 | LD (49197),A | ... | ||
42845 | LD IX,24848 | Point IX at Magic Knight's current inventory (carrying) | ||
42849 | LD B,5 | Load B with 5 (five inventory slots) | ||
42851 | LD HL,51920 | Point HL at "[Current Command] WHICH OBJECT ?" text | ||
42854 | LD DE,0 | Load DE with zero (i.e. no command summary text) | ||
42857 | CALL 45809 | Show list of objects in Magic Knight's inventory (carrying) as a menu and load A with selected item index | ||
42860 | LD HL,24848 | Point HL at start of characters' current inventories table | ||
42863 | CALL 45766 | Print name of object in inventory slot A of inventory data at HL in command summary window | ||
42866 | CALL 64207 | Display execute / reject command window and return here if execute chosen, else exit to main game loop | ||
42869 | LD A,(41779) | Load A with index of Current Object... | ||
42872 | CALL 45685 | ...and if this is 4 (Teddy Bear) then display "THE BEAR SAYS..." message and wait for fire to be pressed | ||
42875 | LD E,0 | Point HL to the start of the Current Object's record in object properties table... | ||
42877 | CALL 45390 | ... | ||
42880 | PUSH HL | Store HL (pointer to Current Object's properties) | ||
42881 | CALL 43000 | Insert numeric / text properties of the object into "examine object" window text | ||
42884 | LD A,20 | Draw window 20 ("EXAMINE OBJECT" window)... | ||
42886 | CALL 47193 | ... | ||
42889 | LD HL,52251 | Point HL at " [Current Command]" text | ||
42892 | CALL 46902 | ...and print to screen | ||
42895 | LD A,(41779) | Load B with index of Current Object... | ||
42898 | LD B,A | ... | ||
42899 | CALL 63332 | ...and point HL at its entry in table of object names | ||
42902 | CALL 46902 | Print the Current Object's name | ||
42905 | LD HL,52256 | Point HL at object properties text... | ||
42908 | CALL 46902 | ...and print to screen | ||
42911 | POP IX | Restore IX (pointer to Current Object's properties) | ||
42913 | LD A,(IX+6) | Set content attribute of window 21 (frame around object in "EXAMINE OBJECT" window)... | ||
42916 | LD (49209),A | ...to match attribute of object | ||
42919 | LD A,21 | Draw window 21... | ||
42921 | CALL 47193 | ... | ||
42924 | LD BC,(23408) | Load BC with top-left coordinate of current window | ||
42928 | INC B | Increase y-coordinate by 1 (as object positions are based upon their bottom-left corner) | ||
42929 | LD A,(41779) | Load A with index of Current Object | ||
42932 | CALL 48191 | Set terrain interaction data for character blocks spanned by object and draw the object | ||
42935 | JP 41739 | Display "PRESS FIRE TO CONTINUE" window and wait for input and return to main game loop |
Prev: 42616 | Up: Map | Next: 42938 |