![]() |
Routines |
| Prev: 34907 | Up: Map | Next: 35101 |
|
||||||||||||||||||
| 34914 | PUSH BC | Store BC (B = number of inventory slots) | ||||||||||||||||
| 34915 | PUSH DE | Store DE | ||||||||||||||||
| 34916 | PUSH HL | Store HL | ||||||||||||||||
| 34917 | PUSH IX | Store IX | ||||||||||||||||
| 34919 | CALL 38108 | Set parameters for and play downward scale sound | ||||||||||||||||
| 34922 | POP IX | Restore IX | ||||||||||||||||
| 34924 | POP HL | Restore HL | ||||||||||||||||
| 34925 | POP DE | Restore DE | ||||||||||||||||
| 34926 | POP BC | Restore BC (B = number of inventory slots) | ||||||||||||||||
| 34927 | LD A,(IX+0) | Load first object in character's inventory into A | ||||||||||||||||
| 34930 | OR A | If nothing in first slot... | ||||||||||||||||
| 34931 | JP Z,35069 | ...jump ahead to 35069 (display "YOU ARE NOT CARRYING ANYTHING" message and return to game) | ||||||||||||||||
| 34934 | LD A,105 | Modify instruction at 34989 with 105, denoting window as a menu rather than information window... | ||||||||||||||||
| 34936 | LD (34990),A | ... | ||||||||||||||||
| 34939 | PUSH BC | Store BC (B = number of inventory slots) | ||||||||||||||||
| 34940 | PUSH HL | Store HL | ||||||||||||||||
| 34941 | PUSH IX | Store IX | ||||||||||||||||
| 34943 | LD A,D | If DE is zero (i.e. summary command text unset)... | ||||||||||||||||
| 34944 | OR E | ... | ||||||||||||||||
| 34945 | JR Z,34955 | ...jump ahead to 34955 | ||||||||||||||||
| 34947 | PUSH DE | Store DE | ||||||||||||||||
| 34948 | CALL 37654 | Display / update command summary window at bottom of screen | ||||||||||||||||
| 34951 | POP DE | Restore DE | ||||||||||||||||
| 34952 | CALL 38693 | ...and print in command summary window at bottom of screen | ||||||||||||||||
| 34955 | POP IX | Restore IX | ||||||||||||||||
| 34957 | POP HL | Restore HL | ||||||||||||||||
| 34958 | POP BC | Restore BC (B = number of inventory slots) | ||||||||||||||||
|
This entry point is used by the routine at 34907.
|
||||||||||||||||||
| 34959 | LD C,0 | Load C (object counter) with zero | ||||||||||||||||
| 34961 | PUSH BC | Store BC (B = number of inventory slots) | ||||||||||||||||
| 34962 | PUSH IX | Store IX | ||||||||||||||||
| 34964 | LD A,(IX+0) | Load object from character's inventory (slot number C) into A | ||||||||||||||||
| 34967 | OR A | If nothing in this slot... | ||||||||||||||||
| 34968 | JR Z,34975 | ...then jump ahead to 34975 | ||||||||||||||||
| 34970 | INC C | Increase count of objects in inventory | ||||||||||||||||
| 34971 | INC IX | Advance IX to next slot | ||||||||||||||||
| 34973 | DJNZ 34964 | Repeat for next slot | ||||||||||||||||
| 34975 | POP IX | Restore IX (points to start of inventory) | ||||||||||||||||
| 34977 | LD A,C | Copy number of objects into A | ||||||||||||||||
| 34978 | OR A | If number of objects is zero... (see trivia) | ||||||||||||||||
| 34979 | JP Z,35078 | ...then jump ahead to 35078 | ||||||||||||||||
| 34982 | LD A,C | Copy number of objects into A | ||||||||||||||||
| 34983 | ADD A,3 | Add 3 to this (menu window padding) | ||||||||||||||||
| 34985 | LD (41909),A | Modify height of window 4 to accommodate list of C objects | ||||||||||||||||
| 34988 | PUSH HL | Store HL (pointer to full command text) | ||||||||||||||||
| 34989 | LD A,0 | Load A with draw-hand-menu-cursor flag | ||||||||||||||||
| 34991 | CP 105 | If this is not 105 (i.e. window is not a menu, but a simple information window)... | ||||||||||||||||
| 34993 | JR NZ,35002 | ...then jump ahead to 35002 | ||||||||||||||||
| 34995 | LD A,4 | Draw a menu window... | ||||||||||||||||
| 34997 | CALL 36979 | ... | ||||||||||||||||
| 35000 | JR 35007 | ...and skip over "draw an information window" section | ||||||||||||||||
| 35002 | LD A,4 | Draw window 4... | ||||||||||||||||
| 35004 | CALL 36987 | ... | ||||||||||||||||
| 35007 | LD A,64 | Set character at 43221 (letter preceding menu items) to "@" (i.e. the character immediately before "A")... | ||||||||||||||||
| 35009 | LD (43221),A | ... | ||||||||||||||||
| 35012 | POP HL | Restore HL (pointer to full command text)... | ||||||||||||||||
| 35013 | CALL 36725 | ...and print the text | ||||||||||||||||
| 35016 | POP BC | Restore BC (B = number of remaining inventory slots) | ||||||||||||||||
| 35017 | PUSH BC | Store BC (B = number of remaining inventory slots) | ||||||||||||||||
| 35018 | LD A,(IX+0) | Load index of first object in inventory into A | ||||||||||||||||
| 35021 | OR A | If index is zero (i.e. if nothing in inventory)... | ||||||||||||||||
| 35022 | JP Z,35064 | ...then skip ahead to 35064 | ||||||||||||||||
| 35025 | LD B,A | Copy index into B | ||||||||||||||||
| 35026 | PUSH IX | Store IX (pointer to start of inventory) | ||||||||||||||||
| 35028 | LD HL,43221 | Point HL to letter shortcut (currently set to "@" as at instruction 35007)... | ||||||||||||||||
| 35031 | LD A,(HL) | ... | ||||||||||||||||
| 35032 | INC A | ... | ||||||||||||||||
| 35033 | LD (HL),A | ...and increase index by one to change to "A" | ||||||||||||||||
| 35034 | LD HL,43220 | Point HL to 43220 | ||||||||||||||||
| 35037 | PUSH BC | Store BC (B = index of an object) | ||||||||||||||||
| 35038 | CALL 36725 | Print text (i.e. "A] ") to screen | ||||||||||||||||
| 35041 | POP BC | Restore BC (B = index of an object) | ||||||||||||||||
| 35042 | CALL 34842 | Point HL to B-th entry in list of object names | ||||||||||||||||
| 35045 | CALL 36725 | Print object name to screen | ||||||||||||||||
| 35048 | POP IX | Restore IX (pointer to start of inventory) | ||||||||||||||||
| 35050 | INC IX | Advance IX to next inventory slot | ||||||||||||||||
| 35052 | POP BC | Restore BC (B = number of remaining inventory slots) | ||||||||||||||||
| 35053 | DJNZ 35017 | Repeat loop for next object in inventory, decreasing B (number of remaining inventory slots) | ||||||||||||||||
| 35055 | LD A,(34990) | If window is a menu, rather than information window... | ||||||||||||||||
| 35058 | CP 105 | ... | ||||||||||||||||
| 35060 | CALL Z,37333 | ...then process input for menu, and load ASCII code of shortcut for selected (i.e. SPACE or fire pressed) item into A... | ||||||||||||||||
| 35063 | RET | ...and return | ||||||||||||||||
| 35064 | POP BC | Restore BC | ||||||||||||||||
| 35065 | CALL Z,37333 | Process input for menu, and load ASCII code of shortcut for selected (i.e. SPACE or fire pressed) item into A | ||||||||||||||||
| 35068 | RET | Return | ||||||||||||||||
| 35069 | LD A,13 | Display "YOU ARE NOT CARRYING ANYTHING" window... | ||||||||||||||||
| 35071 | POP HL | ...restoring HL... | ||||||||||||||||
| 35072 | LD HL,45447 | ... | ||||||||||||||||
| 35075 | JP 34768 | ...and return to game | ||||||||||||||||
| 35078 | PUSH HL | Store HL (points to full command text, e.g. "BLOW WHICH OBJECT?", or "YOU ARE NOW CARRYING") | ||||||||||||||||
| 35079 | LD A,4 | Modify height of window 4... | ||||||||||||||||
| 35081 | LD (41909),A | ... | ||||||||||||||||
| 35084 | LD A,4 | Draw window 4... | ||||||||||||||||
| 35086 | CALL 36987 | ... | ||||||||||||||||
| 35089 | POP HL | Restore HL (points to window title line, e.g. "BLOW WHICH OBJECT?", or "YOU ARE NOW CARRYING") | ||||||||||||||||
| 35090 | CALL 36725 | Print the text | ||||||||||||||||
| 35093 | LD HL,41236 | Point HL at text... |
||||||||||||||||
| 35096 | CALL 36725 | ...and print | ||||||||||||||||
| 35099 | POP BC | Restore BC | ||||||||||||||||
| 35100 | RET | Return | ||||||||||||||||
| Prev: 34907 | Up: Map | Next: 35101 |