Prev: 34967 Up: Map Next: 35065
35016: AnimateCrewB
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.
Used by the routines at 36457, 39718 and 43242.
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