| Alien (BUGFIX 1.7) | Routines |
| Prev: 34967 | Up: Map | Next: 35065 |
|
Animates marker channel B — the blinking box cursor on a candidate room (placed by PlaceRoomMarkerB). Identical logic to AnimateCrewA but uses a faster frame rate (counter resets to 5 rather than 10), the B-set animation table at 26861, and the B-channel screen address at SpriteDestAddr. Cycles through four cursor shapes (RoomCursor0-3) at twice the speed of the crew walk animation.
|
||||
| 35016 | LD A,(31264) | A = animation-freeze / frame-phase byte (31264) | ||
| 35019 | BIT 7,A | bit 7 = freeze flag | ||
| 35021 | RET NZ | frozen: skip | ||
| 35022 | LD HL,33690 | HL = frame counter B ($839A) | ||
| 35025 | DEC (HL) | tick down counter | ||
| 35026 | RET NZ | not expired | ||
| 35027 | LD (HL),5 | reset to 5 frames per phase (2× speed of set A) | ||
| 35029 | LD B,2 | draw 2 sprite rows | ||
|
This entry point is used by the routines at 35128, 35146 and 43242.
|
||||
| 35031 | PUSH BC | |||
| 35032 | LD E,A | E = frame phase (0-3) | ||
| 35033 | LD D,0 | |||
| 35035 | LD HL,26861 | base of crew-B animation table (26861) | ||
| 35038 | ADD HL,DE | index by phase × 2 | ||
| 35039 | ADD HL,DE | |||
| 35040 | LD A,(HL) | read 16-bit sprite bitmap pointer | ||
| 35041 | INC HL | |||
| 35042 | LD H,(HL) | |||
| 35043 | LD L,A | HL = pointer to sprite row data | ||
| 35044 | EX DE,HL | DE = sprite data source | ||
| 35045 | LD HL,(33688) | HL = screen destination address (33688) | ||
| 35048 | CALL 35065 | XOR-blit 3 bytes × 12 rows onto screen | ||
| 35051 | POP BC | |||
| 35052 | DEC B | |||
| 35053 | RET Z | |||
| 35054 | LD A,(31264) | advance frame phase | ||
| 35057 | INC A | |||
| 35058 | AND 3 | wrap 0-3 | ||
| 35060 | LD (31264),A | |||
| 35063 | JR 35031 | |||
| Prev: 34967 | Up: Map | Next: 35065 |