| Alien (BUGFIX 1.7) | Routines |
| Prev: 34933 | Up: Map | Next: 35016 |
|
Animates marker channel A — the walking crew figure that marks the viewed room on the deck map (placed by PlaceRoomMarkerA). Skips if bit 7 of the animation-freeze flag at 31263 is set.
Decrements the frame counter at 33739; when it reaches zero, resets the counter to 10 and XOR-blits two consecutive 3×12-byte sprite frames from the animation table at 26853 (indexed by the frame phase in 31263 bits 0-1) onto the display at the address stored in SprDestA.
Calling this routine twice per frame (once to erase, once to draw the next frame) produces flicker-free sprite animation via double-buffered XOR.
|
||||
| 34967 | LD A,(31263) | A = animation-freeze / frame-phase byte (31263) | ||
| 34970 | BIT 7,A | bit 7 = freeze flag | ||
| 34972 | RET NZ | frozen: skip animation this frame | ||
| 34973 | LD HL,33691 | HL = frame counter A (33739) | ||
| 34976 | DEC (HL) | tick down counter | ||
| 34977 | RET NZ | not expired: nothing to do | ||
| 34978 | LD (HL),10 | reset counter to 10 frames per phase | ||
| 34980 | LD B,2 | draw 2 sprite rows | ||
|
This entry point is used by the routines at 35101 and 43242.
|
||||
| 34982 | PUSH BC | save row counter | ||
| 34983 | LD E,A | E = frame phase (0-3) | ||
| 34984 | LD D,0 | |||
| 34986 | LD HL,26853 | HL = base of crew-A animation table (26853) | ||
| 34989 | ADD HL,DE | index by phase × 2 | ||
| 34990 | ADD HL,DE | |||
| 34991 | LD A,(HL) | read 16-bit sprite bitmap pointer | ||
| 34992 | INC HL | |||
| 34993 | LD H,(HL) | |||
| 34994 | LD L,A | HL = pointer to 3-byte sprite row data | ||
| 34995 | EX DE,HL | DE = sprite data source | ||
| 34996 | LD HL,(33686) | HL = screen destination address (33686) | ||
| 34999 | CALL 35065 | XOR-blit 3 bytes × 12 rows onto screen | ||
| 35002 | POP BC | restore row counter | ||
| 35003 | DEC B | |||
| 35004 | RET Z | done after 2 rows | ||
| 35005 | LD A,(31263) | advance to next frame phase | ||
| 35008 | INC A | |||
| 35009 | AND 3 | wrap phase 0-3 | ||
| 35011 | LD (31263),A | store updated phase | ||
| 35014 | JR 34982 | blit second sprite row | ||
| Prev: 34933 | Up: Map | Next: 35016 |