| alien | Routines |
| Prev: 37490 | Up: Map | Next: 39655 |
|
Despite the old name, this block is the SHIP-SIMULATION layer: it drives the destruct countdown, fixture proximity events, the oxygen clock, engine states and the alien encounter animation, and hosts the fixture-action handlers (destruct lever, hypersleep pods, fires, airlocks, launch console) that the action key dispatches into.
|
||||||||
| 38379 | CALL 38846 | DestructTicker: countdown + border flash | ||||||
| 38382 | CALL 38903 | fixture-proximity checks on strip cells 6/7/20 | ||||||
| 38385 | CALL 39531 | oxygen clock / status line | ||||||
| 38388 | CALL 39171 | event pacing / ambient events | ||||||
| 38391 | CALL 39041 | EngineStateScan: engine damage/repair states | ||||||
| 38394 | CALL 39718 | alien encounter animation layers | ||||||
| 38397 | RET | |||||||
|
FixtureAction: the action-key (key 0) handler for corridor fixtures, dispatched via the RoomDispatchTable tail. Reads the corridor cell under the cursor and dispatches on the CELL VALUE: 70 -> arm self-destruct 72 -> abort self-destruct 74 -> enter hypersleep pod 76 -> fight fire (engine rooms) 78 -> Narcissus launch 53/54 -> blow airlock #1/#2 55/56 -> seal airlock #1/#2
|
||||||||
| 38398 | CALL 45846 | |||||||
| 38401 | LD HL,29630 | corridor position table | ||||||
| 38404 | LD E,A | |||||||
| 38405 | LD D,0 | |||||||
| 38407 | ADD HL,DE | |||||||
| 38408 | LD A,(HL) | A = cell value under the cursor | ||||||
| 38409 | LD (33685),A | |||||||
| 38412 | CP 70 | destruct lever (off)? | ||||||
| 38414 | JR Z,38454 | |||||||
| 38416 | CP 72 | destruct lever (armed)? | ||||||
| 38418 | JR Z,38483 | |||||||
| 38420 | CP 74 | hypersleep pod? | ||||||
| 38422 | JR Z,38529 | |||||||
| 38424 | CP 76 | fire? | ||||||
|
This entry point is used by the routine at 37490.
|
||||||||
| 38426 | JR Z,38546 | |||||||
| 38428 | CP 78 | launch console? | ||||||
| 38430 | JP Z,40212 | |||||||
| 38433 | CP 53 | airlock #1 door (closed)? | ||||||
| 38435 | JP Z,38645 | blow it | ||||||
| 38438 | CP 54 | airlock #2 door (closed)? | ||||||
| 38440 | JP Z,38645 | blow it | ||||||
| 38443 | CP 55 | airlock #1 door (blown)? | ||||||
| 38445 | JP Z,38588 | seal it | ||||||
| 38448 | CP 56 | airlock #2 door (blown)? | ||||||
| 38450 | JP Z,38588 | seal it | ||||||
| 38453 | RET | anything else: no action | ||||||
| 38454 | LD A,13 | msg #13 "DESTRUCT SEQUENCE INITIATED" | ||||||
| 38456 | CALL 37176 | |||||||
| 38459 | LD A,72 | cells 15/16 := armed lever sprites 72/73 | ||||||
| 38461 | LD (29645),A | |||||||
| 38464 | LD HL,20502 | |||||||
| 38467 | LD (31257),HL | |||||||
| 38470 | CALL 31634 | |||||||
| 38473 | LD A,73 | |||||||
| 38475 | LD (29646),A | |||||||
| 38478 | CALL 31634 | |||||||
| 38481 | JR 38510 | |||||||
| 38483 | LD A,14 | msg #14 "DESTRUCT SEQUENCE ABORTED" | ||||||
| 38485 | CALL 37176 | |||||||
| 38488 | LD A,70 | cells 15/16 := off lever sprites 70/71 | ||||||
| 38490 | LD (29645),A | |||||||
| 38493 | LD HL,20502 | |||||||
| 38496 | LD (31257),HL | |||||||
| 38499 | CALL 31634 | |||||||
| 38502 | LD A,71 | |||||||
| 38504 | LD (29646),A | |||||||
| 38507 | CALL 31634 | |||||||
| 38510 | LD HL,12336 | HL = "00" in ASCII | ||||||
| 38513 | LD (38366),HL | DestructSeconds := "00" | ||||||
| 38516 | LD HL,38364 | |||||||
| 38519 | LD (HL),53 | DestructMinutes := '5' -> 5:00 countdown | ||||||
| 38521 | LD HL,31253 | |||||||
| 38524 | LD A,(HL) | |||||||
| 38525 | XOR 1 | toggle ShipSystemFlags bit 0 (destruct armed) | ||||||
| 38527 | LD (HL),A | |||||||
| 38528 | RET | |||||||
| 38529 | LD (IX+3),6 | action state 6 = entering hypersleep | ||||||
| 38533 | LD (IX+0),255 | |||||||
| 38537 | LD A,11 | msg #11 "{actor} prepares for hypersleep" | ||||||
| 38539 | LD HL,(31241) | |||||||
| 38542 | CALL 37176 | |||||||
| 38545 | RET | |||||||
| 38546 | LD A,(31248) | A = actor's corridor cell | ||||||
| 38549 | CP 8 | fire cells occupy positions 8-11 | ||||||
| 38551 | RET C | |||||||
| 38552 | CP 12 | |||||||
| 38554 | RET NC | |||||||
| 38555 | LD E,A | |||||||
| 38556 | LD D,0 | |||||||
| 38558 | LD HL,33746 | |||||||
| 38561 | ADD HL,DE | HL -> extinguisher charges for this position | ||||||
| 38562 | XOR A | |||||||
| 38563 | CP (HL) | |||||||
| 38564 | JR NZ,38575 | |||||||
| 38566 | LD HL,(31241) | empty: | ||||||
| 38569 | LD A,6 | msg #6 "{actor}'s extinguisher is empty" | ||||||
| 38571 | CALL 37176 | |||||||
| 38574 | RET | |||||||
| 38575 | DEC (HL) | use one extinguisher charge | ||||||
| 38576 | LD A,(31242) | |||||||
| 38579 | SUB 17 | engine-room index 0-2 (rooms 17/18/19) | ||||||
| 38581 | LD E,A | |||||||
| 38582 | LD HL,38351 | |||||||
| 38585 | ADD HL,DE | |||||||
| 38586 | INC (HL) | bump this engine room's fire-fighting progress | ||||||
| 38587 | RET | |||||||
| 38588 | LD HL,31253 | SealLock: repressurise an airlock | ||||||
| 38591 | LD A,(33683) | |||||||
| 38594 | SUB 15 | cursor cell - 15 -> 0 = airlock #1, 1 = #2 | ||||||
| 38596 | AND A | |||||||
| 38597 | JR Z,38617 | |||||||
| 38599 | RES 2,(HL) | clear "airlock #2 blown" flag | ||||||
| 38601 | LD A,54 | cell := closed-door sprite 54 | ||||||
| 38603 | LD (29646),A | |||||||
| 38606 | LD HL,20534 | |||||||
| 38609 | LD (31257),HL | |||||||
| 38612 | CALL 31634 | |||||||
| 38615 | JR 38633 | |||||||
| 38617 | RES 1,(HL) | clear "airlock #1 blown" flag | ||||||
| 38619 | LD A,53 | cell := closed-door sprite 53 | ||||||
| 38621 | LD (29645),A | |||||||
| 38624 | LD HL,20502 | |||||||
| 38627 | LD (31257),HL | |||||||
| 38630 | CALL 31634 | |||||||
| 38633 | LD A,(33683) | |||||||
| 38636 | SUB 15 | |||||||
| 38638 | LD L,A | L = airlock room (0/1) for the {sprite} field | ||||||
| 38639 | LD A,17 | msg #17 "{room} PRESSURE RESTORED" | ||||||
| 38641 | CALL 37176 | |||||||
| 38644 | RET | |||||||
| 38645 | LD HL,31253 | BlowLock: blow an airlock open | ||||||
| 38648 | LD A,(33683) | |||||||
| 38651 | SUB 15 | cursor cell - 15 -> 0 = airlock #1, 1 = #2 | ||||||
| 38653 | AND A | |||||||
| 38654 | JR Z,38674 | |||||||
| 38656 | SET 2,(HL) | set "airlock #2 blown" flag | ||||||
| 38658 | LD A,56 | cell := blown-door sprite 56 | ||||||
| 38660 | LD (29646),A | |||||||
| 38663 | LD HL,20534 | |||||||
| 38666 | LD (31257),HL | |||||||
| 38669 | CALL 31634 | |||||||
| 38672 | JR 38690 | |||||||
| 38674 | LD A,55 | cell := blown-door sprite 55 | ||||||
| 38676 | SET 1,(HL) | set "airlock #1 blown" flag | ||||||
| 38678 | LD (29645),A | |||||||
| 38681 | LD HL,20502 | |||||||
| 38684 | LD (31257),HL | |||||||
| 38687 | CALL 31634 | |||||||
| 38690 | LD A,(33683) | |||||||
| 38693 | SUB 15 | A = the depressurised room (0/1) | ||||||
| 38695 | PUSH IX | |||||||
| 38697 | LD B,8 | sweep all 8 actor slots (alien included!) | ||||||
| 38699 | LD IX,29566 | |||||||
| 38703 | LD DE,8 | |||||||
| 38706 | CP (IX+1) | actor in the depressurised room? | ||||||
| 38709 | JR NZ,38719 | |||||||
| 38711 | LD (IX+1),255 | yes: swept into space - room := none, | ||||||
| 38715 | LD (IX+7),1 | status := dead | ||||||
| 38719 | ADD IX,DE | |||||||
| 38721 | DJNZ 38706 | |||||||
| 38723 | POP IX | |||||||
| 38725 | LD HL,29940 | clear their markers from the corridor strip | ||||||
| 38728 | LD B,22 | |||||||
| 38730 | CP (HL) | |||||||
| 38731 | JR NZ,38735 | |||||||
| 38733 | LD (HL),255 | |||||||
| 38735 | INC HL | |||||||
| 38736 | DJNZ 38730 | |||||||
| 38738 | LD L,A | |||||||
| 38739 | LD A,16 | msg #16 "WARNING: {room} DEPRESSURISED" | ||||||
| 38741 | CALL 37176 | |||||||
| 38744 | LD HL,29567 | was the ALIEN in there? | ||||||
| 38747 | LD A,255 | |||||||
| 38749 | CP (HL) | alien's room = 255 means it was swept out | ||||||
| 38750 | RET NZ | |||||||
| 38751 | LD A,(29570) | alien already wounded 3+ times: | ||||||
| 38754 | CP 3 | |||||||
| 38756 | JP NC,44125 | it dies in space -> endgame/rating screen | ||||||
| 38759 | CALL 33589 | else ROM-script roll: nibble >= 2 | ||||||
| 38762 | CP 2 | |||||||
| 38764 | JP NC,44125 | (14 in 16): the alien dies -> endgame | ||||||
| 38767 | LD A,32 | survived! it crawls back in: | ||||||
| 38769 | LD (29567),A | alien's room := 32 (ShuttleBay) | ||||||
| 38772 | LD L,A | |||||||
| 38773 | LD A,18 | msg #18 "INTRUDER ENTERING {ShuttleBay}" | ||||||
| 38775 | CALL 37176 | |||||||
| 38778 | LD HL,29566 | |||||||
| 38781 | LD (HL),0 | reset the alien's action byte | ||||||
| 38783 | RET | |||||||
|
CrewAction6_Handler — dispatched via CrewActionDispatch entry 6.
|
||||||||
| 38784 | LD HL,(33700) | |||||||
| 38787 | LD A,12 | |||||||
| 38789 | CALL 37176 | |||||||
| 38792 | LD (IX+7),255 | |||||||
| 38796 | LD (IX+1),255 | |||||||
| 38800 | LD HL,29940 | |||||||
| 38803 | LD A,(33700) | |||||||
| 38806 | ADD A,128 | |||||||
| 38808 | LD E,A | |||||||
| 38809 | ADD A,32 | |||||||
| 38811 | LD D,A | |||||||
| 38812 | LD C,(IX+1) | |||||||
| 38815 | LD B,22 | |||||||
| 38817 | LD A,(HL) | |||||||
| 38818 | CP E | |||||||
| 38819 | JR Z,38824 | |||||||
| 38821 | CP D | |||||||
| 38822 | JR NZ,38826 | |||||||
| 38824 | LD (HL),15 | |||||||
| 38826 | INC HL | |||||||
| 38827 | DJNZ 38817 | |||||||
| 38829 | LD A,(31252) | |||||||
| 38832 | CP 1 | |||||||
| 38834 | RET NZ | |||||||
| 38835 | LD A,(31241) | |||||||
| 38838 | LD HL,33700 | |||||||
| 38841 | JP 45676 | |||||||
| 38844 | NOP | |||||||
| 38845 | NOP | |||||||
| 38846 | LD HL,31253 | DestructTicker (per frame) | ||||||
| 38849 | BIT 0,(HL) | destruct armed? | ||||||
| 38851 | RET Z | no: done | ||||||
| 38852 | LD A,(38367) | flash the border from the seconds digit | ||||||
| 38855 | AND 3 | |||||||
| 38857 | OUT (254),A | |||||||
| 38859 | LD HL,38355 | |||||||
| 38862 | DEC (HL) | |||||||
| 38863 | RET NZ | |||||||
| 38864 | LD (HL),20 | every 20 frames = one game second | ||||||
| 38866 | LD A,47 | '/' = '0'-1: ASCII underflow sentinel | ||||||
| 38868 | LD HL,(38366) | L = seconds tens, H = seconds units | ||||||
| 38871 | DEC H | |||||||
| 38872 | CP H | |||||||
| 38873 | JR NZ,38897 | |||||||
| 38875 | LD H,57 | units wrapped: back to '9' | ||||||
| 38877 | DEC L | |||||||
| 38878 | CP L | |||||||
| 38879 | JR NZ,38897 | |||||||
| 38881 | LD L,53 | tens wrapped: back to '5' (fresh :59..:50) | ||||||
| 38883 | LD (38366),HL | |||||||
| 38886 | LD HL,38364 | |||||||
| 38889 | DEC (HL) | borrow into the minutes digit | ||||||
| 38890 | CP (HL) | |||||||
| 38891 | JP Z,38317 | minutes below '0': BOOM - flash + game over | ||||||
| 38894 | JP 39572 | redraw countdown / oxygen status | ||||||
| 38897 | LD (38366),HL | |||||||
| 38900 | JP 39572 | |||||||
| 38903 | LD HL,33692 | |||||||
| 38906 | LD A,(29946) | |||||||
| 38909 | CP 160 | |||||||
| 38911 | CALL NC,38941 | |||||||
| 38914 | INC HL | |||||||
| 38915 | LD A,(29947) | |||||||
| 38918 | CP 160 | |||||||
| 38920 | CALL NC,38941 | |||||||
| 38923 | INC HL | |||||||
| 38924 | LD A,(29960) | |||||||
| 38927 | CP 160 | |||||||
| 38929 | CALL NC,38941 | |||||||
| 38932 | LD A,(29961) | |||||||
| 38935 | CP 160 | |||||||
| 38937 | CALL NC,38941 | |||||||
| 38940 | RET | |||||||
| 38941 | CP 255 | |||||||
| 38943 | RET Z | |||||||
| 38944 | PUSH HL | |||||||
| 38945 | SUB 160 | |||||||
| 38947 | ADD A,A | |||||||
| 38948 | ADD A,A | |||||||
| 38949 | ADD A,A | |||||||
| 38950 | LD E,A | |||||||
| 38951 | LD D,0 | |||||||
| 38953 | LD HL,29567 | |||||||
| 38956 | ADD HL,DE | |||||||
| 38957 | LD A,(HL) | |||||||
| 38958 | LD (38356),A | |||||||
| 38961 | LD BC,29171 | |||||||
| 38964 | BIT 6,A | |||||||
| 38966 | JR Z,38971 | |||||||
| 38968 | CALL 45683 | |||||||
| 38971 | LD L,A | |||||||
| 38972 | LD H,0 | |||||||
| 38974 | PUSH HL | |||||||
| 38975 | ADD HL,HL | |||||||
| 38976 | ADD HL,HL | |||||||
| 38977 | POP DE | |||||||
| 38978 | ADD HL,DE | |||||||
| 38979 | ADD HL,BC | |||||||
| 38980 | LD DE,8 | |||||||
| 38983 | LD B,5 | |||||||
| 38985 | PUSH BC | |||||||
| 38986 | PUSH HL | |||||||
| 38987 | LD C,(HL) | |||||||
| 38988 | LD A,(38356) | |||||||
| 38991 | CP C | |||||||
| 38992 | JR Z,39023 | |||||||
| 38994 | LD A,(33706) | |||||||
| 38997 | JP 45705 | |||||||
|
This entry point is used by the routine at 45401.
|
||||||||
| 39000 | LD B,8 | |||||||
| 39002 | LD HL,29567 | |||||||
| 39005 | LD A,(HL) | |||||||
| 39006 | AND 63 | |||||||
| 39008 | CP C | |||||||
| 39009 | JR NZ,39020 | |||||||
| 39011 | PUSH HL | |||||||
| 39012 | ADD HL,DE | |||||||
| 39013 | DEC HL | |||||||
| 39014 | DEC HL | |||||||
| 39015 | XOR A | |||||||
| 39016 | CP (HL) | |||||||
| 39017 | JR Z,39034 | |||||||
| 39019 | POP HL | |||||||
| 39020 | ADD HL,DE | |||||||
| 39021 | DJNZ 39005 | |||||||
| 39023 | POP HL | |||||||
| 39024 | INC HL | |||||||
| 39025 | POP BC | |||||||
| 39026 | DJNZ 38985 | |||||||
| 39028 | POP HL | |||||||
| 39029 | LD A,(38356) | |||||||
| 39032 | LD (HL),A | |||||||
| 39033 | RET | |||||||
| 39034 | POP HL | |||||||
|
This entry point is used by the routine at 45401.
|
||||||||
| 39035 | POP HL | |||||||
| 39036 | POP BC | |||||||
| 39037 | POP HL | |||||||
| 39038 | LD (HL),255 | |||||||
| 39040 | RET | |||||||
| 39041 | LD D,8 | |||||||
| 39043 | LD A,(31253) | |||||||
| 39046 | LD E,17 | |||||||
| 39048 | BIT 3,A | |||||||
| 39050 | CALL NZ,39077 | |||||||
| 39053 | SLA D | |||||||
| 39055 | INC E | |||||||
| 39056 | BIT 4,A | |||||||
| 39058 | CALL NZ,39077 | |||||||
| 39061 | SLA D | |||||||
| 39063 | INC E | |||||||
| 39064 | BIT 5,A | |||||||
| 39066 | CALL NZ,39077 | |||||||
| 39069 | LD HL,38354 | |||||||
| 39072 | DEC (HL) | |||||||
| 39073 | RET NZ | |||||||
| 39074 | LD (HL),100 | |||||||
| 39076 | RET | |||||||
| 39077 | PUSH AF | |||||||
| 39078 | PUSH DE | |||||||
| 39079 | LD C,1 | |||||||
| 39081 | LD B,D | |||||||
| 39082 | LD D,0 | |||||||
| 39084 | LD HL,30006 | |||||||
| 39087 | ADD HL,DE | |||||||
| 39088 | ADD HL,DE | |||||||
| 39089 | LD A,(HL) | |||||||
| 39090 | CP 54 | |||||||
| 39092 | JR C,39100 | |||||||
| 39094 | INC C | |||||||
| 39095 | CP 56 | |||||||
| 39097 | JR C,39100 | |||||||
| 39099 | INC C | |||||||
| 39100 | LD HL,38334 | |||||||
| 39103 | ADD HL,DE | |||||||
| 39104 | LD A,(HL) | |||||||
| 39105 | CP C | |||||||
| 39106 | JR C,39159 | |||||||
| 39108 | LD A,(31253) | |||||||
| 39111 | XOR B | |||||||
| 39112 | LD (31253),A | |||||||
| 39115 | LD A,(31252) | |||||||
| 39118 | CP 1 | |||||||
| 39120 | JR NZ,39149 | |||||||
| 39122 | LD A,(31242) | |||||||
| 39125 | CP E | |||||||
| 39126 | JR NZ,39149 | |||||||
| 39128 | LD HL,65535 | |||||||
| 39131 | LD (29645),HL | |||||||
| 39134 | LD A,L | |||||||
| 39135 | LD HL,20502 | |||||||
| 39138 | LD (31257),HL | |||||||
| 39141 | CALL 31634 | |||||||
| 39144 | LD A,255 | |||||||
| 39146 | CALL 31634 | |||||||
| 39149 | POP HL | |||||||
| 39150 | PUSH HL | |||||||
| 39151 | LD A,15 | msg #15 "Fire extinguished in {room}" | ||||||
| 39153 | CALL 37176 | |||||||
| 39156 | POP DE | |||||||
| 39157 | POP AF | |||||||
| 39158 | RET | |||||||
| 39159 | LD A,(38354) | |||||||
| 39162 | DEC A | |||||||
| 39163 | LD A,1 | |||||||
| 39165 | CALL Z,38186 | |||||||
| 39168 | POP DE | |||||||
| 39169 | POP AF | |||||||
| 39170 | RET | |||||||
| 39171 | LD A,(31252) | |||||||
| 39174 | CP 1 | |||||||
| 39176 | RET NZ | |||||||
| 39177 | LD A,(31241) | |||||||
| 39180 | ADD A,160 | |||||||
| 39182 | LD C,A | |||||||
| 39183 | LD HL,33692 | |||||||
| 39186 | LD A,(29946) | |||||||
| 39189 | CP C | |||||||
| 39190 | JR Z,39213 | |||||||
| 39192 | LD A,(29947) | |||||||
| 39195 | INC HL | |||||||
| 39196 | CP C | |||||||
| 39197 | JR Z,39213 | |||||||
| 39199 | INC HL | |||||||
| 39200 | LD A,(29960) | |||||||
| 39203 | CP C | |||||||
| 39204 | JR Z,39228 | |||||||
| 39206 | LD A,(29961) | |||||||
| 39209 | CP C | |||||||
| 39210 | JR Z,39228 | |||||||
| 39212 | RET | |||||||
| 39213 | LD A,(HL) | |||||||
| 39214 | CP 255 | |||||||
| 39216 | RET NZ | |||||||
| 39217 | LD HL,38378 | |||||||
| 39220 | INC (HL) | |||||||
| 39221 | LD A,(HL) | |||||||
| 39222 | AND 7 | |||||||
| 39224 | CALL Z,39242 | |||||||
| 39227 | RET | |||||||
| 39228 | LD A,(HL) | |||||||
| 39229 | CP 255 | |||||||
| 39231 | RET NZ | |||||||
| 39232 | LD A,(31242) | |||||||
| 39235 | LD L,A | L = current room | ||||||
| 39236 | LD A,19 | msg #19 "Jones is looking uneasy" | ||||||
| 39238 | CALL 37176 | |||||||
| 39241 | RET | |||||||
|
This entry point is used by the routine at 42821.
|
||||||||
| 39242 | PUSH IX | |||||||
| 39244 | LD DE,5 | |||||||
| 39247 | LD HL,549 | |||||||
| 39250 | CALL 949 | |||||||
| 39253 | POP IX | |||||||
| 39255 | RET | |||||||
|
CrewAction5_Investigate — dispatched via CrewActionDispatch entry 5.
|
||||||||
| 39256 | LD HL,65535 | |||||||
| 39259 | LD (33696),HL | |||||||
| 39262 | LD DE,33695 | |||||||
| 39265 | LD A,255 | |||||||
| 39267 | LD (DE),A | |||||||
| 39268 | XOR A | |||||||
| 39269 | CALL 37891 | |||||||
| 39272 | LD C,0 | |||||||
| 39274 | LD HL,33695 | |||||||
| 39277 | LD A,255 | |||||||
| 39279 | LD B,3 | |||||||
| 39281 | CP (HL) | |||||||
| 39282 | JR Z,39285 | |||||||
| 39284 | INC C | |||||||
| 39285 | INC HL | |||||||
| 39286 | DJNZ 39281 | |||||||
| 39288 | LD A,C | |||||||
| 39289 | AND A | |||||||
| 39290 | RET Z | |||||||
| 39291 | CP 1 | |||||||
| 39293 | JR NZ,39298 | |||||||
| 39295 | XOR A | |||||||
| 39296 | JR 39317 | |||||||
| 39298 | CP 2 | |||||||
| 39300 | JR NZ,39309 | |||||||
| 39302 | CALL 33589 | |||||||
| 39305 | AND 1 | |||||||
| 39307 | JR 39317 | |||||||
| 39309 | CALL 33589 | |||||||
| 39312 | AND 7 | |||||||
| 39314 | CALL 36763 | |||||||
| 39317 | LD E,A | |||||||
| 39318 | LD D,0 | |||||||
| 39320 | LD HL,33695 | |||||||
| 39323 | ADD HL,DE | |||||||
| 39324 | LD C,(HL) | |||||||
| 39325 | LD (HL),255 | |||||||
| 39327 | LD A,C | |||||||
| 39328 | ADD A,A | |||||||
| 39329 | ADD A,A | |||||||
| 39330 | ADD A,A | |||||||
| 39331 | ADD A,7 | |||||||
| 39333 | LD E,A | |||||||
| 39334 | LD D,0 | |||||||
| 39336 | LD HL,29566 | |||||||
| 39339 | ADD HL,DE | |||||||
| 39340 | XOR A | |||||||
| 39341 | CP (HL) | |||||||
| 39342 | JP NZ,39459 | |||||||
| 39345 | DEC HL | |||||||
| 39346 | DEC HL | |||||||
| 39347 | DEC HL | HL -> victim's +4 strength | ||||||
| 39348 | DEC (HL) | the alien drains one strength point | ||||||
| 39349 | LD A,(HL) | |||||||
| 39350 | CP 2 | below 2: victim collapses | ||||||
| 39352 | JR C,39400 | |||||||
| 39354 | CP 4 | 2-3: wounded | ||||||
| 39356 | JR C,39365 | |||||||
| 39358 | LD L,C | still healthy: | ||||||
| 39359 | LD A,1 | msg #1 "The ALIEN is attacking {actor}" | ||||||
| 39361 | CALL 37176 | |||||||
| 39364 | RET | |||||||
| 39365 | LD L,C | |||||||
| 39366 | LD A,10 | msg #10 "{actor} is being wounded" | ||||||
| 39368 | CALL 37176 | |||||||
| 39371 | LD A,(31252) | |||||||
| 39374 | CP 1 | |||||||
| 39376 | RET NZ | |||||||
| 39377 | PUSH IX | |||||||
| 39379 | LD A,(31241) | |||||||
| 39382 | ADD A,A | |||||||
| 39383 | ADD A,A | |||||||
| 39384 | ADD A,A | |||||||
| 39385 | LD IX,29566 | |||||||
| 39389 | LD E,A | |||||||
| 39390 | LD D,0 | |||||||
| 39392 | ADD IX,DE | |||||||
| 39394 | CALL 32385 | |||||||
| 39397 | POP IX | |||||||
| 39399 | RET | |||||||
|
This entry point is used by the routine at 40439.
|
||||||||
| 39400 | INC HL | |||||||
| 39401 | INC HL | |||||||
| 39402 | CALL 45476 | |||||||
| 39405 | LD DE,65529 | |||||||
| 39408 | ADD HL,DE | |||||||
| 39409 | LD (HL),0 | |||||||
| 39411 | LD A,C | |||||||
| 39412 | PUSH AF | |||||||
| 39413 | ADD A,128 | |||||||
| 39415 | LD E,A | |||||||
| 39416 | ADD A,32 | |||||||
| 39418 | LD D,A | |||||||
| 39419 | LD C,(IX+1) | |||||||
| 39422 | LD B,22 | |||||||
| 39424 | LD HL,29940 | |||||||
| 39427 | LD A,(HL) | |||||||
| 39428 | CP E | |||||||
| 39429 | JR Z,39434 | |||||||
| 39431 | CP D | |||||||
| 39432 | JR NZ,39435 | |||||||
| 39434 | LD (HL),C | |||||||
| 39435 | INC HL | |||||||
| 39436 | DJNZ 39427 | |||||||
| 39438 | POP AF | |||||||
| 39439 | LD L,A | |||||||
| 39440 | LD A,(31252) | |||||||
| 39443 | CP 1 | |||||||
| 39445 | RET NZ | |||||||
| 39446 | LD A,(31241) | |||||||
| 39449 | CP L | |||||||
| 39450 | RET NZ | |||||||
| 39451 | LD A,21 | msg #21 "{actor} has collapsed" | ||||||
| 39453 | CALL 37176 | |||||||
| 39456 | JP 31417 | |||||||
| 39459 | XOR A | |||||||
| 39460 | CP (IX+5) | |||||||
| 39463 | JR NZ,39484 | |||||||
| 39465 | PUSH HL | |||||||
| 39466 | CALL 33589 | |||||||
| 39469 | POP HL | |||||||
| 39470 | CP 4 | |||||||
| 39472 | JR NC,39484 | |||||||
| 39474 | LD DE,65530 | |||||||
| 39477 | ADD HL,DE | |||||||
| 39478 | LD (HL),255 | |||||||
| 39480 | CALL 45533 | |||||||
| 39483 | RET | |||||||
| 39484 | LD DE,1 | |||||||
| 39487 | LD HL,33695 | |||||||
| 39490 | CP 7 | |||||||
| 39492 | JR C,39500 | |||||||
| 39494 | LD DE,65535 | |||||||
| 39497 | LD HL,33697 | |||||||
| 39500 | LD B,3 | |||||||
| 39502 | LD A,(HL) | |||||||
| 39503 | CP 255 | |||||||
| 39505 | JR Z,39516 | |||||||
| 39507 | CP C | |||||||
| 39508 | JR Z,39516 | |||||||
| 39510 | LD (HL),255 | |||||||
| 39512 | LD C,A | |||||||
| 39513 | JP 39328 | |||||||
| 39516 | ADD HL,DE | |||||||
| 39517 | DJNZ 39502 | |||||||
| 39519 | CALL 36717 | |||||||
| 39522 | LD (IX+0),40 | |||||||
| 39526 | LD (IX+3),1 | |||||||
| 39530 | RET | |||||||
| 39531 | LD HL,38357 | |||||||
| 39534 | DEC (HL) | |||||||
| 39535 | RET NZ | |||||||
| 39536 | LD HL,29573 | |||||||
| 39539 | LD DE,8 | |||||||
| 39542 | LD BC,2048 | |||||||
| 39545 | XOR A | |||||||
| 39546 | CP (HL) | |||||||
| 39547 | JR Z,39550 | |||||||
| 39549 | INC C | |||||||
| 39550 | ADD HL,DE | |||||||
| 39551 | DJNZ 39546 | |||||||
| 39553 | LD A,C | |||||||
| 39554 | ADD A,A | |||||||
| 39555 | LD (38357),A | |||||||
| 39558 | LD A,47 | |||||||
| 39560 | LD HL,38377 | |||||||
| 39563 | DEC (HL) | |||||||
| 39564 | CP (HL) | |||||||
| 39565 | JR NZ,39572 | |||||||
| 39567 | LD (HL),57 | |||||||
| 39569 | DEC HL | |||||||
| 39570 | JR 39563 | |||||||
| 39572 | LD HL,(38374) | |||||||
| 39575 | LD A,L | |||||||
| 39576 | CP 48 | |||||||
| 39578 | JR NZ,39601 | |||||||
| 39580 | LD A,H | |||||||
| 39581 | CP 53 | |||||||
| 39583 | JR NZ,39601 | |||||||
| 39585 | LD HL,(38376) | |||||||
| 39588 | LD A,48 | |||||||
| 39590 | CP L | |||||||
| 39591 | JR NZ,39601 | |||||||
| 39593 | CP H | |||||||
| 39594 | JR NZ,39601 | |||||||
| 39596 | LD A,26 | |||||||
| 39598 | CALL 37176 | |||||||
| 39601 | LD A,(38373) | |||||||
| 39604 | CP 32 | |||||||
| 39606 | JP NZ,44277 | |||||||
| 39609 | LD A,(31252) | |||||||
| 39612 | CP 2 | |||||||
| 39614 | RET Z | |||||||
| 39615 | CP 3 | |||||||
| 39617 | RET Z | |||||||
| 39618 | LD HL,20598 | |||||||
| 39621 | LD (31257),HL | |||||||
| 39624 | LD DE,38368 | |||||||
| 39627 | LD HL,31253 | |||||||
| 39630 | BIT 0,(HL) | |||||||
| 39632 | JR Z,39637 | |||||||
| 39634 | LD DE,38358 | |||||||
| 39637 | LD B,10 | |||||||
| 39639 | PUSH BC | |||||||
| 39640 | PUSH DE | |||||||
| 39641 | CALL 31369 | |||||||
| 39644 | POP DE | |||||||
| 39645 | POP BC | |||||||
| 39646 | INC DE | |||||||
| 39647 | LD HL,31257 | |||||||
| 39650 | INC (HL) | |||||||
| 39651 | DJNZ 39639 | |||||||
| 39653 | RET | |||||||
| 39654 | RET | |||||||
| Prev: 37490 | Up: Map | Next: 39655 |