TirNaNog | Routines |
Prev: 7A35 | Up: Map | Next: 7B01 |
Used by the routine at Vector_Main.
|
||||
ActionOlcWeed | 7A64 | LD A,(CamDirection_DFD2) | Olcweeds only appear for N/S facing cameras. | |
7A67 | BIT 0,A | |||
7A69 | JR NZ,ActionOlcWeed_0 | |||
7A6B | LD HL,(ManData_PosSecondary_dfc5) | Make sure it is visible. | ||
7A6E | LD E,(IX+$07) | |||
7A71 | LD D,(IX+$08) | |||
7A74 | CALL abs(hl_minus_de) | |||
7A77 | LD DE,$0022 | |||
7A7A | AND A | |||
7A7B | SBC HL,DE | |||
7A7D | JR C,ActionOlcWeed_1 | |||
7A7F | RET Z | |||
ActionOlcWeed_0 | 7A80 | LD (IX+$0B),$00 | Do nothing. | |
7A84 | RET | |||
Work out animation
|
||||
ActionOlcWeed_1 | 7A85 | ADD HL,DE | Get back position. | |
7A86 | EX DE,HL | |||
7A87 | LD HL,($5C78) | FRAMES, for a timer. | ||
7A8A | LD A,H | |||
7A8B | AND $3F | |||
7A8D | LD H,A | |||
7A8E | LD A,$5F | |||
7A90 | LD BC,$2004 | |||
7A93 | AND A | |||
7A94 | SBC HL,BC | |||
7A96 | JR NC,ActionOlcWeed_2 | |||
7A98 | LD A,$64 | |||
ActionOlcWeed_2 | 7A9A | EX AF,AF' | ||
7A9B | LD A,(IX+$0B) | Get bitmap to blit. | ||
7A9E | CP $5F | |||
7AA0 | JR NZ,ActionOlcWeed_3 | |||
7AA2 | LD L,E | |||
7AA3 | LD H,D | |||
7AA4 | LD BC,$0008 | |||
7AA7 | AND A | |||
7AA8 | SBC HL,BC | |||
7AAA | JR C,ActionOlcWeed_6 | |||
ActionOlcWeed_3 | 7AAC | EX AF,AF' | ||
7AAD | BIT 0,(IX+$0D) | |||
7AB1 | JR NZ,ActionOlcWeed_4 | |||
7AB3 | LD (IX+$0B),A | |||
7AB6 | JR ActionOlcWeed_6 | |||
ActionOlcWeed_4 | 7AB8 | CP (IX+$0B) | ||
7ABB | JR Z,ActionOlcWeed_6 | If current bitmap index is at the end frame, then do no animating. | ||
7ABD | JR C,ActionOlcWeed_5 | If current bitmap index is less than the end frame, then the weed is standing up... | ||
7ABF | INC (IX+$0B) | Move onto next frame. (bending down) | ||
7AC2 | JR ActionOlcWeed_6 | |||
ActionOlcWeed_5 | 7AC4 | DEC (IX+$0B) | Move onto previous frame. (standing up) | |
Check for death
|
||||
ActionOlcWeed_6 | 7AC7 | LD A,(DeathMode) | If hero is having a 'death' then do nothing. | |
7ACA | AND A | |||
7ACB | JR NZ,ActionOlcWeed_7 | |||
7ACD | LD A,(IX+$0B) | If the olc weed is standing up, do nothing. | ||
7AD0 | CP $5F | |||
7AD2 | JR Z,ActionOlcWeed_7 | |||
7AD4 | LD HL,$0005 | See if player is close enough to be 'stung'. | ||
7AD7 | AND A | |||
7AD8 | SBC HL,DE | |||
7ADA | JR NZ,ActionOlcWeed_7 | |||
7ADC | LD A,$14 | Set hero up for death. | ||
7ADE | LD (DeathMode),A | |||
Calculat Y position on screen
|
||||
ActionOlcWeed_7 | 7AE1 | LD A,(IX+$0B) | Calculate Y position based on bitmap. | |
7AE4 | LD B,$10 | |||
7AE6 | CP $61 | |||
7AE8 | JR C,ActionOlcWeed_8 | |||
7AEA | LD B,$18 | |||
7AEC | CP $63 | |||
7AEE | JR C,ActionOlcWeed_8 | |||
7AF0 | LD B,$20 | |||
Draw Olc Weed
|
||||
ActionOlcWeed_8 | 7AF2 | LD (IX+$09),B | Store Y position. | |
7AF5 | LD (IX+$0D),$01 | |||
7AF9 | LD (IX+$0C),$01 | |||
7AFD | CALL Vector_SpriteBlit | |||
7B00 | RET |
Prev: 7A35 | Up: Map | Next: 7B01 |