![]() |
Routines |
Prev: 59424 | Up: Map | Next: 59865 |
Used by the routine at InitialiseGame.
|
||||
Only action lifts every other frame.
|
||||
Handler_Lifts | 59425 | LD A,(62260) | A=*LiftsPiratesFrameSkip. | |
59428 | INC A | Increment A by one. | ||
59429 | AND %00000001 | Ensure A is either 0 or 1. | ||
59431 | LD (62260),A | Write A back to *LiftsPiratesFrameSkip. | ||
59434 | CP 1 | Return if A is not equal to 1. | ||
59436 | RET NZ | |||
Set the UDG graphics pointer.
|
||||
59437 | LD HL,61819 | Write 61819 (Graphics_Lifts) to *CHARS. | ||
59440 | LD (23606),HL | |||
Find active lifts.
|
||||
59443 | LD IX,(23524) | IX=*ReferenceLifts. | ||
Are we done?
|
||||
Handler_Lifts_Loop | 59447 | LD A,(IX+0) | Return if the terminator character has been received instead of a co-ordinate (255). | |
59450 | CP 255 | |||
59452 | RET Z | |||
59453 | LD A,(IX+4) | Jump to Handler_Lifts_11 if *IX+4 is equal to 0. | ||
59456 | CP 0 | |||
59458 | JP Z,Handler_Lifts_11 | |||
59461 | LD A,(62016) | Jump to Handler_Lifts_Next if *62016 is not equal to 3. | ||
59464 | CP 3 | |||
59466 | JR NZ,Handler_Lifts_Next | |||
59468 | LD E,(IX+7) | E=*IX+7. | ||
59471 | LD C,(IX+0) | C=*IX+0. | ||
59474 | LD B,(IX+1) | B=*IX+1. | ||
59477 | LD A,(62015) | A=*62015. | ||
59480 | SUB 3 | A-=3. | ||
59482 | CP B | Jump to Handler_Lifts_Next if A is not equal to B. | ||
59483 | JR NZ,Handler_Lifts_Next | |||
59485 | LD C,(IX+0) | C=*IX+0. | ||
59488 | LD B,(IX+1) | B=*IX+1. | ||
59491 | PUSH BC | Stash BC on the stack. | ||
59492 | CALL 3545 | Call CL_SET. | ||
59495 | LD HL,(23684) | HL=*DF_CC. | ||
59498 | POP BC | Restore BC from the stack. | ||
59499 | INC B | Increment B by one. | ||
59500 | PUSH HL | Stash HL on the stack. | ||
59501 | CALL 3545 | Call CL_SET. | ||
59504 | POP HL | Restore HL from the stack. | ||
59505 | LD DE,(23684) | DE=*DF_CC. | ||
59509 | LD A,D | D+=7. | ||
59510 | ADD A,7 | |||
59512 | LD D,A | |||
59513 | LD B,(IX+7) | B=*IX+7. | ||
59516 | LD A,(IX+2) | Jump to Handler_Lifts_0 if *IX+2 is higher than 2. | ||
59519 | CP 2 | |||
59521 | JR NC,Handler_Lifts_0 | |||
59523 | INC B | Increment B by one. | ||
Handler_Lifts_0 | 59524 | LD A,(DE) | A=*DE. | |
59525 | AND (HL) | Merge the bits from *HL. | ||
59526 | JR NZ,Handler_Lifts_1 | Jump to Handler_Lifts_1 if the result is not zero. | ||
59528 | INC HL | Increment HL by one. | ||
59529 | INC DE | Increment DE by one. | ||
59530 | DJNZ Handler_Lifts_0 | Decrease counter by one and loop back to Handler_Lifts_0 until counter is zero. | ||
59532 | JR Handler_Lifts_Next | Jump to Handler_Lifts_Next. | ||
Handler_Lifts_1 | 59534 | LD A,2 | Write 2 to *59424. | |
59536 | LD (59424),A | |||
59539 | LD A,(IX+4) | Jump to Handler_Lifts_2 if *IX+4 is equal to 0. | ||
59542 | CP 0 | |||
59544 | JR Z,Handler_Lifts_2 | |||
59546 | CP 255 | Compare A with 255. | ||
59548 | PUSH AF | Stash AF on the stack. | ||
59549 | CALL Z,Handler_Lifts_8 | Call Handler_Lifts_8 zero. | ||
59552 | POP AF | Restore AF from the stack. | ||
59553 | CALL NZ,Handler_Lifts_7 | Call Handler_Lifts_7 not zero. | ||
Handler_Lifts_2 | 59556 | LD A,(IX+5) | Jump to Handler_Lifts_Next if *IX+5 is equal to 0. | |
59559 | CP 0 | |||
59561 | JR Z,Handler_Lifts_Next | |||
59563 | CP 255 | Compare A with 255. | ||
59565 | PUSH AF | Stash AF on the stack. | ||
59566 | CALL Z,Handler_Lifts_10 | Call Handler_Lifts_10 if A was equal to 255 on line 59563. | ||
59569 | POP AF | Restore AF from the stack. | ||
59570 | CALL NZ,Handler_Lifts_9 | Call Handler_Lifts_9 if A was not equal to 255 on line 59563. | ||
Handler_Lifts_Next | 59573 | CALL 61094 | Call 61094. | |
59576 | LD A,(IX+4) | Compare *IX+4 with 0. | ||
59579 | CP 0 | |||
59581 | PUSH AF | Stash AF on the stack. | ||
59582 | CALL Z,Handler_Lifts_5 | Call Handler_Lifts_5 if *IX+4 was equal to 0 on line 59579. | ||
59585 | POP AF | Restore AF from the stack. | ||
59586 | CALL NZ,Handler_Lifts_3 | Call Handler_Lifts_3 if *IX+4 was not equal to 0 on line 59579. | ||
59589 | LD (IX+0),C | Write C to *IX+0. | ||
59592 | LD (IX+1),B | Write B to *IX+1. | ||
59595 | LD (IX+2),E | Write E to *IX+2. | ||
59598 | LD (IX+3),D | Write D to *IX+3. | ||
59601 | CALL 61143 | Call 61143. | ||
59604 | LD DE,16 | IX+=0016. | ||
59607 | ADD IX,DE | |||
59609 | JP Handler_Lifts_Loop | Jump to Handler_Lifts_Loop. | ||
Handler_Lifts_3 | 59612 | LD A,(IX+4) | Jump to Handler_Lifts_4 if *IX+4 is equal to 255. | |
59615 | CP 255 | |||
59617 | JR Z,Handler_Lifts_4 | |||
59619 | LD A,(IX+10) | Return if *IX+10 is not equal to C. | ||
59622 | CP C | |||
59623 | RET NZ | |||
59624 | LD A,(IX+11) | Return if *IX+11 is not equal to E. | ||
59627 | CP E | |||
59628 | RET NZ | |||
59629 | LD (IX+4),255 | Write 255 to *IX+4. | ||
59633 | RET | Return. | ||
Handler_Lifts_4 | 59634 | LD A,(IX+12) | Return if *IX+12 is not equal to C. | |
59637 | CP C | |||
59638 | RET NZ | |||
59639 | LD A,(IX+13) | Return if *IX+13 is not equal to E. | ||
59642 | CP E | |||
59643 | RET NZ | |||
59644 | LD (IX+4),1 | Write 1 to *IX+4. | ||
59648 | RET | Return. | ||
Handler_Lifts_5 | 59649 | LD A,(IX+5) | Jump to Handler_Lifts_6 if *IX+5 is equal to 255. | |
59652 | CP 255 | |||
59654 | JR Z,Handler_Lifts_6 | |||
59656 | LD A,(IX+10) | Return if *IX+10 is not equal to B. | ||
59659 | CP B | |||
59660 | RET NZ | |||
59661 | LD A,(IX+11) | Return if *IX+11 is not equal to D. | ||
59664 | CP D | |||
59665 | RET NZ | |||
59666 | LD (IX+5),255 | Write 255 to *IX+5. | ||
59670 | RET | Return. | ||
Handler_Lifts_6 | 59671 | LD A,(IX+12) | Return if *IX+12 is not equal to B. | |
59674 | CP B | |||
59675 | RET NZ | |||
59676 | LD A,(IX+13) | Return if *IX+13 is not equal to D. | ||
59679 | CP D | |||
59680 | RET NZ | |||
59681 | LD (IX+5),1 | Write 1 to *IX+5. | ||
59685 | RET | Return. | ||
Handler_Lifts_7 | 59686 | LD A,(62005) | Increment *62005 by one. | |
59689 | INC A | |||
59690 | LD (62005),A | |||
59693 | RET | Return. | ||
Handler_Lifts_8 | 59694 | LD A,(62005) | Decrease *62005 by one. | |
59697 | DEC A | |||
59698 | LD (62005),A | |||
59701 | RET | Return. | ||
Handler_Lifts_9 | 59702 | LD A,(62006) | Increment *62006 by one. | |
59705 | INC A | |||
59706 | LD (62006),A | |||
59709 | RET | Return. | ||
Handler_Lifts_10 | 59710 | LD A,(62006) | Decrease *62006 by one. | |
59713 | DEC A | |||
59714 | LD (62006),A | |||
59717 | RET | Return. | ||
Handler_Lifts_11 | 59718 | LD A,(62016) | A=*62016. | |
59721 | INC A | Increment A by one. | ||
59722 | AND %00000011 | Keep only bits 0-1. | ||
59724 | CP (IX+3) | Jump to Handler_Lifts_Next if A is not equal to *IX+3. | ||
59727 | JP NZ,Handler_Lifts_Next | |||
59730 | LD C,(IX+0) | C=*IX+0. | ||
59733 | LD B,(IX+1) | B=*IX+1. | ||
59736 | LD A,(IX+3) | A=*IX+3. | ||
59739 | CP 0 | Compare A with 0. | ||
59741 | LD A,(62015) | A=*62015. | ||
59744 | JR Z,Handler_Lifts_12 | Jump to Handler_Lifts_12 if A was equal to 0 on line 59739. | ||
59746 | DEC A | Decrease A by one. | ||
Handler_Lifts_12 | 59747 | SUB 2 | A-=2. | |
59749 | CP B | Jump to Handler_Lifts_Next if A is not equal to B. | ||
59750 | JP NZ,Handler_Lifts_Next | |||
59753 | LD A,(IX+3) | A=*IX+3. | ||
59756 | LD C,(IX+0) | C=*IX+0. | ||
59759 | LD B,(IX+1) | B=*IX+1. | ||
59762 | PUSH AF | Stash AF on the stack. | ||
59763 | CP 3 | Call Handler_Lifts_16 if A is equal to 3. | ||
59765 | CALL Z,Handler_Lifts_16 | |||
59768 | POP AF | Restore AF from the stack. | ||
59769 | PUSH AF | Stash AF on the stack. | ||
59770 | CP 2 | Call Handler_Lifts_15 if A is equal to 2. | ||
59772 | CALL Z,Handler_Lifts_15 | |||
59775 | POP AF | Restore AF from the stack. | ||
59776 | PUSH AF | Stash AF on the stack. | ||
59777 | CP 1 | Call Handler_Lifts_14 if A is equal to 1. | ||
59779 | CALL Z,Handler_Lifts_14 | |||
59782 | POP AF | Restore AF from the stack. | ||
59783 | CP 0 | Call Handler_Lifts_17 if A is equal to 0. | ||
59785 | CALL Z,Handler_Lifts_17 | |||
59788 | LD B,(IX+7) | B=*IX+7. | ||
Handler_Lifts_13 | 59791 | LD A,(DE) | A=*DE. | |
59792 | AND (HL) | Merge the bits from *HL. | ||
59793 | JP NZ,Handler_Lifts_1 | Jump to Handler_Lifts_1 if the result is not zero. | ||
59796 | INC HL | Increment HL by one. | ||
59797 | INC DE | Increment DE by one. | ||
59798 | DJNZ Handler_Lifts_13 | Decrease counter by one and loop back to Handler_Lifts_13 until counter is zero. | ||
59800 | JP Handler_Lifts_Next | Jump to Handler_Lifts_Next. | ||
Handler_Lifts_14 | 59803 | CALL 3545 | Call CL_SET. | |
59806 | LD HL,(23684) | HL=*DF_CC. | ||
59809 | INC H | Increment H by five. | ||
59810 | INC H | |||
59811 | INC H | |||
59812 | INC H | |||
59813 | INC H | |||
59814 | PUSH HL | DE=HL (using the stack). | ||
59815 | POP DE | |||
59816 | INC H | Increment H by one. | ||
59817 | RET | Return. | ||
Handler_Lifts_15 | 59818 | CALL 3545 | Call CL_SET. | |
59821 | LD HL,(23684) | HL=*DF_CC. | ||
59824 | INC H | Increment H by three. | ||
59825 | INC H | |||
59826 | INC H | |||
59827 | PUSH HL | DE=HL (using the stack). | ||
59828 | POP DE | |||
59829 | INC H | Increment H by one. | ||
59830 | RET | Return. | ||
Handler_Lifts_16 | 59831 | CALL 3545 | Call CL_SET. | |
59834 | LD HL,(23684) | HL=*DF_CC. | ||
59837 | INC H | Increment H by one. | ||
59838 | PUSH HL | DE=HL (using the stack). | ||
59839 | POP DE | |||
59840 | INC H | Increment H by one. | ||
59841 | RET | Return. | ||
Handler_Lifts_17 | 59842 | PUSH BC | Stash BC on the stack. | |
59843 | CALL 3545 | Call CL_SET. | ||
59846 | POP BC | Restore BC from the stack. | ||
59847 | LD DE,(23684) | DE=*DF_CC. | ||
59851 | LD A,D | D+=7. | ||
59852 | ADD A,7 | |||
59854 | LD D,A | |||
59855 | PUSH DE | Stash DE on the stack. | ||
59856 | DEC B | Decrease B by one. | ||
59857 | CALL 3545 | Call CL_SET. | ||
59860 | POP DE | Restore DE from the stack. | ||
59861 | LD HL,(23684) | HL=*DF_CC. | ||
59864 | RET | Return. |
Prev: 59424 | Up: Map | Next: 59865 |