![]() |
Routines |
| Prev: 30222 | Up: Map | Next: 30540 |
| 30439 | CALL 38075 | Play upward scale sound | ||
| 30442 | LD IX,25395 | Point IX at start of Magic Knight's inventory | ||
| 30446 | LD B,5 | Load B with 5, as there are five inventory slots to check | ||
| 30448 | LD HL,45429 | Point HL at "DROP WHICH OBJECT?" text | ||
| 30451 | LD DE,45440 | Point DE at "DROP" text | ||
| 30454 | CALL 34914 | Show list of objects (window or menu) and handle selection if a menu | ||
| 30457 | LD HL,25395 | Point HL at start of Magic Knight's current inventory | ||
| 30460 | CALL 34864 | Point DE at name of a selected object in object names table and print in command summary window | ||
| 30463 | CALL 38725 | Display execute / reject command window and return if execute chosen, else exit | ||
|
The operand of the instruction at 30466 represents the index of the Current Object used in multiple routines. This is modified by the instructions at 30342 and 34871.
|
||||
| 30466 | LD A,0 | Load A with index of Current Object | ||
| 30468 | LD E,1 | Load E with 1 (drop-status) | ||
| 30470 | CALL 34160 | Point HL to drop-status of object A | ||
| 30473 | BIT 0,(HL) | If drop-status is not zero, i.e. object can't be dropped then... | ||
| 30475 | JP NZ,34442 | ...jump to 34442 (display "YOU CAN'T DROP THAT OBJECT" window and return to game) | ||
| 30478 | LD A,(30467) | Load A with index of Current Object | ||
| 30481 | CP 16 | If not object 16 (i.e. not Glowing Bottle)... | ||
| 30483 | JR NZ,30490 | ...skip ahead to 30490... | ||
| 30485 | CALL 30540 | ...else smash Glowing Bottle and release Banshee... | ||
| 30488 | JR 30504 | ...and skip ahead to 30504 | ||
| 30490 | LD A,(30467) | Load A with index of Current Object | ||
| 30493 | LD C,A | Copy into C | ||
| 30494 | PUSH BC | Store BC | ||
| 30495 | LD B,5 | Load B with 5 | ||
| 30497 | LD HL,25395 | Point HL at start of Magic Knight's current inventory | ||
| 30500 | CALL 38674 | Remove object C from Magic Knight's inventory (and tidy up remainder of slots) | ||
| 30503 | POP BC | Restore BC | ||
| 30504 | LD A,C | Load Current Object's index into A | ||
| 30505 | ADD A,A | Multiply object index by 3... | ||
| 30506 | ADD A,C | ... | ||
| 30507 | LD C,A | ...and load back into C | ||
| 30508 | LD B,0 | Load B with zero | ||
| 30510 | LD HL,25464 | Point HL at start of objects' current positions table at 25464 | ||
| 30513 | ADD HL,BC | Add three times Current Object's index as offset to point HL at position data of Current Object | ||
| 30514 | LD A,(65529) | Load A with Magic Knight's current room | ||
| 30517 | LD (HL),A | Set object's current room to be same as Magic Knight's | ||
| 30518 | INC HL | Advance HL to x-coordinate of object | ||
| 30519 | LD B,0 | Set B to zero | ||
| 30521 | LD A,(25387) | Load Magic Knight's current x-coordinate into A | ||
| 30524 | AND 7 | Get x-coordinate in terms of pixels within current character block (i.e. lowest 3 bits of x-coordinate) | ||
| 30526 | JR Z,30529 | If this is zero (i.e. Magic Knight at left-most pixel in character block) then skip ahead to 30529... | ||
| 30528 | INC B | ...else increase B | ||
| 30529 | CALL 34385 | Load Magic Knight's coordinates (in characters) into DE | ||
| 30532 | LD A,B | Load B into A | ||
| 30533 | ADD A,E | Add Magic Knight's x-coordinate to A | ||
| 30534 | LD (HL),A | Set this as object's x-coordinate | ||
| 30535 | INC HL | Advance HL to y-coordinate of object | ||
| 30536 | LD (HL),D | Set this to same as Magic Knight's y-coordinate | ||
| 30537 | JP 30410 | Display Magic Knight's current inventory and return to game | ||
| Prev: 30222 | Up: Map | Next: 30540 |