Prev: 32239 Up: Map Next: 32543
32252: Process command to use transporter
Used by the routine at 55726.
32252 CALL 54333 Print or update command summary window at top of screen
32255 LD DE,42015 Point DE at "SEND TRANSPORTER CONTENTS"...
32258 CALL 54283 ...and print in command summary window at top of screen
32261 LD DE,42145 Point DE at "TO"...
32264 CALL 54283 ...and print in command summary window at top of screen
32267 LD DE,37227 Point DE at y-coordinate of top edge of window 17 in window data table at 37089...
32270 LD A,13 ...and set this window's height to 13...
32272 CALL 33782 ...
32275 LD A,17 Draw window 17...
32277 CALL 34990 ...
32280 LD HL,42032 Point HL at "ENTER TRANSPORTER COORDINATES" menu text...
32283 CALL 34762 ...and print to screen
32286 LD A,127 Store 127 (white INK, white PAPER, BRIGHT) at 23695...
32288 LD (23695),A ...
32291 LD DE,18438 Load D with 72 (pixels) and E with 6 (characters)
32294 CALL 32694 Handle vertical scrolling digit selection for x-coordinate and load A with selected digit's ASCII code
32297 LD (42174),A Set x-coordinate value (as ASCII character code) in "YOU HAVE ARRIVED AT..." text at 42171
32300 LD DE,18440 Load D with 72 (pixels) and E with 8 (characters)
32303 CALL 32694 Handle vertical scrolling digit selection for y-coordinate and load A with selected digit's ASCII code
32306 LD (42176),A Set y-coordinate value (as ASCII character code) in "YOU HAVE ARRIVED AT..." text at 42171
32309 LD DE,18442 Load D with 72 (pixels) and E with 10 (characters)
32312 CALL 32694 Handle vertical scrolling digit selection for z-coordinate and load A with selected digit's ASCII code
32315 LD (42178),A Set z-coordinate value (as ASCII character code) in "YOU HAVE ARRIVED AT..." text at 42171
32318 LD A,78 Store 78 (yellow INK, blue PAPER, BRIGHT) at 23695...
32320 LD (23695),A ...
32323 LD DE,42173 Point DE at "X.Y.Z."...
32326 CALL 54283 ...and print in command summary window at top of screen
32329 CALL 55115 Display execute / reject command window and return here if execute chosen, else exit to main game loop
32332 LD A,(23451) If transporter-repaired flag is reset...
32335 BIT 0,A ...
32337 JP Z,32521 ...then skip ahead to 32521
32340 LD HL,32543 Point HL at table of transporter pad data
32343 LD BC,8 Load BC with 8 (as each transporter pad entry is eight bytes wide)
32346 LD A,(23700) If current transporter pad is at the same location as the USS Pisces...
32349 CP (HL) ...
32350 JR Z,32360 ...then skip ahead to 32360
32352 LD A,99 If current transporter pad's current location is 99 (end marker)...
32354 CP (HL) ...
32355 JR Z,32360 ...then skip ahead to 32360
32357 ADD HL,BC Advance HL by eight bytes to next transporter pad entry
32358 JR 32346 Loop back to 32346 for next transporter pad
32360 INC HL Advance HL to transporter pad's x-coordinate (ASCII)
32361 LD A,(42174) Load A with ASCII x-coordinate value from "YOU HAVE ARRIVED AT..." text at 42171...
32364 CP 48 ...and if this is 48 ("0", i.e. first digit in USS Pisces' transporter coordinates)...
32366 JP Z,32449 ...then skip ahead to 32449
32369 CP (HL) If current transporter pad's ASCII x-coordinate is not the same as x-coordinate value in A...
32370 JP NZ,32482 ...then skip ahead to 32482
32373 LD A,(42176) Load A with ASCII y-coordinate value from "YOU HAVE ARRIVED AT..." text at 42171
32376 INC HL Advance HL to transporter pad's ASCII y-coordinate
32377 CP (HL) If current transporter pad's ASCII y-coordinate is not the same as y-coordinate value in A...
32378 JP NZ,32482 ...then skip ahead to 32482
32381 LD A,(42178) Load A with ASCII z-coordinate value from "YOU HAVE ARRIVED AT..." text at 42171
32384 INC HL Advance HL to transporter pad's ASCII z-coordinate
32385 CP (HL) If current transporter pad's ASCII z-coordinate is not the same as z-coordinate value in A...
32386 JP NZ,32482 ...then skip ahead to 32482
32389 INC HL Advance HL to transporter pad's room
32390 LD A,(HL) Set operand of instruction at 32427 to index of pad's room...
32391 LD (32428),A ...
32394 INC HL Advance HL to destination x-coordinate (for Magic Knight)
32395 LD A,(HL) Set operand of instruction at 32417 to destination x-coordinate...
32396 LD (32418),A ...
32399 INC HL Advance HL to destination y-coordinate (for Magic Knight)
32400 LD A,(HL) Set operand of instruction at 32422 to destination y-coordinate...
32401 LD (32423),A ...
32404 CALL 27765 Draw Magic Knight's current room, draw objects and characters and initialise room-specific data
32407 CALL 32623 Set top-left and bottom-right of area to cycle attributes (for transporter effect)
32410 XOR A Prepare to fill a region with attribute 0 (black INK, black PAPER)...
32411 LD (35948),A ...
32414 CALL 32602 Display transporter glow effect
The operand of the instruction at 32417 is Magic Knight's new x-coordinate. This is modified by the instructions at 32396 and 32472.
32417 LD A,0 Set Magic Knight's x-coordinate (pixels) to transporter pad arrival point
32419 LD (25156),A ...
The operand of the instruction at 32422 is Magic Knight's new y-coordinate. This is modified by the instructions at 32401 and 32477.
32422 LD A,0 Set Magic Knight's y-coordinate (pixels) to transporter pad arrival point
32424 LD (25157),A ...
The operand of the instruction at 32427 is the index of the room to move Magic Knight into. This is modified by the instructions at 32391 and 32467.
32427 LD A,0 Move Magic Knight into room A, draw room and initialise room-specific data...
32429 CALL 27762 ...
32432 CALL 32623 Set top-left and bottom-right of area to cycle attributes (for transporter effect)
32435 CALL 32602 Display transporter glow effect
32438 LD A,7 Prepare to fill a region with attribute 7 (white INK, black PAPER)...
32440 LD (35948),A ...
32443 CALL 35940 Fill a region of attribute file with specified attribute
32446 JP 55272 Display "YOU HAVE ARRIVED AT X.Y.Z." window (17) and return to game
32449 LD A,(42176) Load A with y-coordinate value (as ASCII character code) from "YOU HAVE ARRIVED AT..." text at 42171...
32452 CP 48 ...and if this is not 48 ("0")...
32454 JP NZ,32482 ...then skip ahead to 32482
32457 LD A,(42178) Load A with z-coordinate value (as ASCII character code) from "YOU HAVE ARRIVED AT..." text at 42171
32460 CP 48 ...and if this is not 48 ("0")...
32462 JP NZ,32482 ...then skip ahead to 32482
32465 LD A,2 Set operand of instruction at 32427 to 2 (USS Pisces, 2, The Transporter Room)...
32467 LD (32428),A ...
32470 LD A,120 Set operand of instruction at 32417 to 120 (x-coordinate of middle of USS Pisces' transporter pad)...
32472 LD (32418),A ...
32475 LD A,120 Set operand of instruction at 32422 to 120 (y-coordinate of USS Pisces' transporter pad)...
32477 LD (32423),A ...
32480 JR 32404 Jump back to 32404 to beam Magic Knight back to USS Pisces
32482 CALL 27765 Draw Magic Knight's current room, draw objects and characters and initialise room-specific data
32485 CALL 32623 Set top-left and bottom-right of area to cycle attributes (for transporter effect)
32488 CALL 32602 Display transporter glow effect
32491 LD HL,45157 Point HL at "IT WOULD MAKE MORE SENSE TO ENTER COORDINATES..." text
32494 PUSH HL Store HL (pointer to "IT WOULD MAKE MORE SENSE TO ENTER COORDINATES..." text)
32495 LD DE,37187 Prepare to adjust height of window 12 to accommodate text
32498 LD HL,45013 Point HL at "THE TRANSPORTER SENDS YOU TO SUFFOCATE..." text
32501 CALL 33774 Adjust height of window 12 to accommodate text
32504 PUSH HL Store HL (pointer to "THE TRANSPORTER SENDS YOU TO SUFFOCATE..." / "THE TRANSPORTER IS BROKEN" text)
32505 LD A,12 Draw window 12...
32507 CALL 34990 ...
32510 POP HL Restore HL (pointer to "THE TRANSPORTER SENDS YOU TO SUFFOCATE..." / "THE TRANSPORTER IS BROKEN" text)
32511 CALL 34762 Print text to screen
32514 CALL 55138 Display "PRESS FIRE TO CONTINUE" window and wait for fire to be pressed
32517 POP HL Restore HL (pointer to "IT WOULD MAKE MORE SENSE TO ENTER COORDINATES..." / "THE TRANSPORTER HAS MALFUNCTIONED..." text)
32518 JP 55685 Jump to "game over" window routine and return to control selection menu
Magic Knight has used the transporter while it is broken
32521 CALL 27765 Draw Magic Knight's current room, draw objects and characters and initialise room-specific data
32524 CALL 32623 Set top-left and bottom-right of area to cycle attributes (for transporter effect)
32527 CALL 32602 Display transporter glow effect
32530 LD HL,45059 Point HL at "THE TRANSPORTER HAS MALFUNCTIONED..." text
32533 PUSH HL Store HL (pointer to "THE TRANSPORTER HAS MALFUNCTIONED..." text)
32534 LD DE,37187 Prepare to adjust height of window 12 to accommodate text
32537 LD HL,42147 Point HL at "THE TRANSPORTER IS BROKEN" text
32540 JP 32501 Jump back to 32501 (display GAME OVER message and return to control selection menu)
Prev: 32239 Up: Map Next: 32543