Routines |
Prev: 30123 | Up: Map | Next: 30533 |
Used by the routine at 55726.
|
||||
30145 | CALL 54333 | Print or update command summary window at top of screen | ||
30148 | LD DE,39152 | Point DE at "EXAMINE"... | ||
30151 | CALL 54283 | ...and print in command summary window at top of screen | ||
30154 | LD A,16 | Draw "EXAMINE WHAT?" menu window... | ||
30156 | CALL 34982 | ... | ||
30159 | LD HL,39154 | Point HL at "EXAMINE WHAT ?" menu text... | ||
30162 | CALL 34762 | ...and print to screen | ||
30165 | CALL 35296 | Process keyboard / joystick input on a menu and load A with selected item index | ||
30168 | OR A | If "OBJECT" selected... | ||
30169 | JP Z,30432 | ...then skip ahead to 30432 | ||
30172 | CP 1 | If "CHARACTER" selected... | ||
30174 | JP Z,30300 | ...then skip ahead to 30300 | ||
30177 | CP 2 | If "YOURSELF" selected... | ||
30179 | JP Z,30250 | ...then skip ahead to 30250 | ||
Examine USS Pisces
|
||||
30182 | LD A,17 | Set bottom edge of window 20 to 17... | ||
30184 | LD (37252),A | ... | ||
30187 | LD DE,39524 | Point DE at "USS PISCES" text... | ||
30190 | CALL 54283 | ...and print in command summary window at top of screen | ||
30193 | CALL 55115 | Display execute / reject command window and return here if execute chosen, else exit to main game loop | ||
30196 | LD A,(23701) | Load A with Magic Knight's current room... | ||
30199 | CP 12 | ...and if this is at least 12... (bug) | ||
30201 | JP NC,55267 | ...then display "YOU CANNOT EXAMINE THE USS PISCES IF..." window (29) and return to game | ||
30204 | LD A,20 | Draw window 20 ("EXAMINE OBJECT" / "EXAMINE USS PISCES" window)... | ||
30206 | CALL 34990 | ... | ||
30209 | LD HL,39283 | Point HL at " EXAMINE" text... | ||
30212 | CALL 34762 | ...and print to screen | ||
30215 | LD HL,25012 | Point HL at USS Pisces' current stats | ||
30218 | CALL 30533 | Insert numeric stats (at HL) of USS Pisces into "examine USS Pisces" window text | ||
30221 | LD HL,39359 | Point HL at USS Pisces stats text... | ||
30224 | CALL 34762 | ...and print to screen | ||
30227 | LD C,0 | Load C with 0 (don't apply mirror) | ||
30229 | LD A,64 | Load A with 64 (graphic index of left half of USS Pisces picture) | ||
30231 | LD HL,2061 | Load H (y-coordinate) with 8 and L (x-coordinate) with 13 | ||
30234 | CALL 28631 | Draw the left half of the USS Pisces picture | ||
30237 | LD C,1 | Load C with 1 (apply vertical mirror) | ||
30239 | LD A,64 | Load A with 64 (graphic index of left half of USS Pisces picture) | ||
30241 | LD HL,2065 | Load H (y-coordinate) with 8 and L (x-coordinate) with 17 | ||
30244 | CALL 28631 | Draw the right half of the USS Pisces picture | ||
30247 | JP 29479 | Display "PRESS FIRE TO CONTINUE" window and wait for input and return to main game loop | ||
Examine yourself
|
||||
30250 | LD A,16 | Set left edge of window 19 ("examine portrait frame") to 16... | ||
30252 | LD (37241),A | ... | ||
30255 | LD DE,39352 | Point DE at "YOURSELF"... | ||
30258 | CALL 54283 | ...and print in command summary window at top of screen | ||
30261 | CALL 55115 | Display execute / reject command window and return here if execute chosen, else exit to main game loop | ||
30264 | LD A,18 | Draw window 18... | ||
30266 | CALL 34990 | ... | ||
30269 | LD A,205 | Set Current Character index to 205 (i.e. -51)... | ||
30271 | LD (29632),A | ...as index of "MAGIC KNIGHT" text is -51 relative to start of characters' names at 44088 | ||
30274 | LD HL,47501 | Point HL at percentage completion text | ||
30277 | LD DE,47513 | Point DE at time left text | ||
30280 | CALL 33657 | Insert current time and score into "time left" and "percentage completion" texts | ||
30283 | LD HL,25020 | Point HL at start of Magic Knight's current stats | ||
30286 | LD A,1 | Set graphic index to 1... | ||
30288 | LD (30412),A | ...and store as operand to instruction at 30411 | ||
30291 | LD A,(25162) | Load character's magic level / attribute value into... | ||
30294 | LD (37248),A | ...content attribute slot of window 19 (examine portrait frame) | ||
30297 | JP 30353 | Skip ahead to 30353 (display window as in examine character) | ||
Examine character
|
||||
30300 | LD A,17 | Set left edge of window 19 ("examine portrait frame") to 17... | ||
30302 | LD (37241),A | ... | ||
30305 | LD HL,38665 | Point HL at "EXAMINE ?" text (end of sub-menu title, after "WHO DO YOU WANT TO ") | ||
30308 | LD DE,0 | Load DE with zero (i.e. no command summary text) | ||
30311 | CALL 34122 | Display and process input for character selection menu (current room's characters only), setting Current Character | ||
30314 | JP Z,29482 | If there are no characters in the room then return to game | ||
30317 | CALL 55115 | Display execute / reject command window and return here if execute chosen, else exit to main game loop | ||
30320 | LD A,5 | Increase Current Character's happiness by 5... | ||
30322 | CALL 33569 | ... | ||
30325 | LD A,18 | Draw window 18... | ||
30327 | CALL 34990 | ... | ||
30330 | LD A,(29632) | Load A with index of Current Character | ||
30333 | LD E,0 | Point HL at start of character's stats... | ||
30335 | CALL 33541 | ... | ||
30338 | PUSH HL | Transfer address from HL... | ||
30339 | POP IX | ...into IX | ||
30341 | LD A,(IX+5) | Load character graphic index into A... | ||
30344 | LD (30412),A | ...and modify operand of instruction at 30411 to match | ||
30347 | LD A,(IX+4) | Load character's magic level / attribute value into... | ||
30350 | LD (37248),A | ...content attribute slot of window 19 (examine portrait frame) | ||
30353 | CALL 30583 | Insert numeric stats (at HL) of a character into "EXAMINE CHARACTER" window text | ||
30356 | PUSH HL | Store HL (points to start of character's current stats) | ||
30357 | LD HL,39187 | Print examine character window text (i.e. "EXAMINE [CHARACTER] ... STRENGTH XX..." text)... | ||
30360 | CALL 34762 | ... | ||
30363 | POP IX | Restore IX (points to start of character's current stats) | ||
30365 | LD A,(IX+6) | Load A with character's asleep flag (bit 7)... | ||
30368 | AND 128 | ... | ||
30370 | RRCA | Divide value (0 for awake / 128 for asleep) by 8... | ||
30371 | RRCA | ... | ||
30372 | RRCA | ...to give 0 for awake / 16 for asleep | ||
30373 | LD B,A | Load this awake / asleep offset value into B | ||
30374 | LD A,(IX+7) | Load A with index of character's current status text... | ||
30377 | AND 15 | ... | ||
30379 | ADD A,B | Add value in B to this index to select between "awake" and "asleep" versions... | ||
30380 | LD B,A | ...and place result back in B to get index of string required | ||
30381 | LD HL,47491 | Point HL at start of characters' "current status" texts | ||
30384 | CALL 54269 | Advance HL to B-th entry in list of zero-terminated strings starting at HL... | ||
30387 | CALL 34762 | ...and print | ||
30390 | LD A,(30412) | If character graphic index is zero... | ||
30393 | OR A | ... | ||
30394 | JP Z,30420 | ...then skip ahead to 30420 | ||
30397 | LD A,19 | Draw window 19 (examine portrait frame)... | ||
30399 | CALL 34990 | ... | ||
30402 | LD BC,(23493) | Load BC with top-left coordinate of current window | ||
30406 | LD A,71 | Store 71 (white INK, black PAPER, BRIGHT) at 23695... | ||
30408 | LD (23695),A | ... | ||
30411 | LD A,0 | Load A with character's graphic index... | ||
30413 | CP 1 | ...and if this is 1 (i.e. Magic Knight)... | ||
30415 | JR Z,30423 | ...then skip ahead to 30423 | ||
30417 | CALL 54411 | Draw the graphic with lookup index A at character coordinates (C, B) with width 2 and height 4 | ||
30420 | JP 29479 | Display "PRESS FIRE TO CONTINUE" window and wait for input and return to main game loop | ||
30423 | XOR A | Draw a graphic with lookup index 0 at character coordinates (C, B) with width 3 and height 4... | ||
30424 | LD DE,1027 | ...(Magic Knight facing right, frame 1)... | ||
30427 | CALL 54414 | ... | ||
30430 | JR 30420 | Display "PRESS FIRE TO CONTINUE" window and wait for input and return to main game loop | ||
Examine Object
|
||||
30432 | CALL 33834 | Display "YOU ARE NOT CARRYING ANYTHING" window and set zero flag if Magic Knight's inventory (carrying) is empty | ||
30435 | JP Z,29482 | If Magic Knight's inventory (carrying) is empty then return to game | ||
30438 | LD A,15 | Set bottom edge of window 20 to 15... | ||
30440 | LD (37252),A | ... | ||
30443 | LD IX,25164 | Point IX at Magic Knight's current inventory (carrying) | ||
30447 | LD B,5 | Load B with 5 (five inventory slots) | ||
30449 | LD HL,39140 | Point HL at "EXAMINE WHICH OBJECT ?" text | ||
30452 | LD DE,0 | Load DE with zero (i.e. no command summary text) | ||
30455 | CALL 33952 | Show list of objects in Magic Knight's inventory (carrying) as a menu and load A with selected item index | ||
30458 | LD HL,25164 | Point HL at start of characters' current inventories table | ||
30461 | CALL 33911 | Print name of object in inventory slot A of inventory data at HL in command summary window | ||
30464 | CALL 55115 | Display execute / reject command window and return here if execute chosen, else exit to main game loop | ||
30467 | LD A,(29526) | Load A with index of Current Object | ||
30470 | LD E,0 | Point HL to the start of the Current Object's record in object properties table... | ||
30472 | CALL 33525 | ... | ||
30475 | PUSH HL | Store HL (pointer to Current Object's properties) | ||
30476 | CALL 30643 | Insert numeric / text properties of the object into "examine object" window text | ||
30479 | LD A,20 | Draw window 20 ("EXAMINE OBJECT" / "EXAMINE USS PISCES" window)... | ||
30481 | CALL 34990 | ... | ||
30484 | LD HL,39283 | Point HL at " EXAMINE" text... | ||
30487 | CALL 34762 | ...and print to screen | ||
30490 | LD A,(29526) | Load B with index of Current Object... | ||
30493 | LD B,A | ... | ||
30494 | CALL 54266 | ...and point HL at its entry in table of object names | ||
30497 | CALL 34762 | Print the Current Object's name | ||
30500 | LD HL,39288 | Point HL at object properties text... | ||
30503 | CALL 34762 | ...and print to screen | ||
30506 | POP IX | Restore IX (pointer to Current Object's properties) | ||
30508 | LD A,(IX+6) | Set content attribute of window 21 (frame around object in "EXAMINE OBJECT" window)... | ||
30511 | LD (37264),A | ...to match attribute of object | ||
30514 | LD A,21 | Draw window 21... | ||
30516 | CALL 34990 | ... | ||
30519 | LD BC,(23493) | Load BC with top-left coordinate of current window | ||
30523 | INC B | Increase y-coordinate by 1 (as object positions are based upon their bottom-left corner) | ||
30524 | LD A,(29526) | Load A with index of Current Object | ||
30527 | CALL 36104 | Set terrain interaction data for character blocks spanned by object and draw the object | ||
30530 | JP 29479 | Display "PRESS FIRE TO CONTINUE" window and wait for input and return to main game loop |
Prev: 30123 | Up: Map | Next: 30533 |