Dun Darach | Routines |
Prev: 8C2D | Up: Map |
Used by the routine at EventDoorOpenClose.
|
|||||||||||
Blits inner 'door' part of door image to memory.
Memory image if shifted for 4 pixel animation.
|
|||||||||||
Door_CreateBitmap | 8C72 | PUSH AF | |||||||||
8C73 | LD L,(IX+$02) | Calculate address of bitmap info from index. | |||||||||
8C76 | LD H,$00 | ||||||||||
8C78 | ADD HL,HL | ||||||||||
8C79 | ADD HL,HL | ||||||||||
8C7A | LD DE,Bitmap_PtrTable | ||||||||||
8C7D | ADD HL,DE | ||||||||||
8C7E | LD E,(HL) | Get address of bitmap. | |||||||||
8C7F | INC HL | ||||||||||
8C80 | LD D,(HL) | ||||||||||
8C81 | LD HL,$0029 | Offset to miss out the door frame part of image. | |||||||||
8C84 | ADD HL,DE | ||||||||||
8C85 | LD DE,ScratchPad | Use spare memory for blitting to. | |||||||||
8C88 | CP $02 | ||||||||||
8C8A | JR NC,Door_CreateBitmap_1 | ||||||||||
Door fully closed.
|
|||||||||||
8C8C | LD C,$C0 | ||||||||||
Door_CreateBitmap_0 | 8C8E | LDI | Blit two columns | ||||||||
8C90 | LDI | ||||||||||
8C92 | LDI | ||||||||||
8C94 | INC HL | Skip two columns (door frame) | |||||||||
8C95 | INC HL | ||||||||||
8C96 | DEC C | ||||||||||
8C97 | JR NZ,Door_CreateBitmap_0 | ||||||||||
8C99 | JR Door_CreateBitmap_6 | ||||||||||
Door_CreateBitmap_1 | 8C9B | CP $04 | |||||||||
8C9D | JR NC,Door_CreateBitmap_3 | ||||||||||
Door one third open.
|
|||||||||||
8C9F | LD C,$90 | ||||||||||
8CA1 | LD A,$FF | ||||||||||
Door_CreateBitmap_2 | 8CA3 | INC HL | |||||||||
8CA4 | LDI | Blit two columns | |||||||||
8CA6 | LDI | ||||||||||
8CA8 | LD (DE),A | Blit blank column | |||||||||
8CA9 | INC DE | ||||||||||
8CAA | INC HL | Skip two columns | |||||||||
8CAB | INC HL | ||||||||||
8CAC | DEC C | ||||||||||
8CAD | JR NZ,Door_CreateBitmap_2 | ||||||||||
8CAF | JR Door_CreateBitmap_6 | ||||||||||
Door_CreateBitmap_3 | 8CB1 | CP $06 | |||||||||
8CB3 | JR NC,Door_CreateBitmap_5 | ||||||||||
Door two thirds open.
|
|||||||||||
8CB5 | LD C,$60 | ||||||||||
8CB7 | LD A,$FF | ||||||||||
Door_CreateBitmap_4 | 8CB9 | INC HL | Skip two columns | ||||||||
8CBA | INC HL | ||||||||||
8CBB | LDI | Blit one column | |||||||||
8CBD | LD (DE),A | Blank two columns | |||||||||
8CBE | INC DE | ||||||||||
8CBF | LD (DE),A | ||||||||||
8CC0 | INC DE | ||||||||||
8CC1 | INC HL | Skip two columns | |||||||||
8CC2 | INC HL | ||||||||||
8CC3 | DEC C | ||||||||||
8CC4 | JR NZ,Door_CreateBitmap_4 | ||||||||||
8CC6 | JR Door_CreateBitmap_6 | ||||||||||
Door fully open.
|
|||||||||||
Door_CreateBitmap_5 | 8CC8 | LD HL,ScratchPad | Blank image. | ||||||||
8CCB | INC DE | ||||||||||
8CCC | LD (HL),$FF | ||||||||||
8CCE | LD BC,$008F | ||||||||||
8CD1 | LDIR | ||||||||||
Determine inbetween frame.
|
|||||||||||
Door_CreateBitmap_6 | 8CD3 | POP AF | Get back animation count | ||||||||
8CD4 | BIT 0,A | If the frame index is even, finish. | |||||||||
8CD6 | RET Z | ||||||||||
8CD7 | LD HL,ScratchPad_DoorBottom | If the frame index is odd, shift the image 4 pixels. | |||||||||
8CDA | LD B,$30 | ||||||||||
Shift door by a nibble
|
|||||||||||
Door_CreateBitmap_7 | 8CDC | LD A,$FF | |||||||||
8CDE | RLD | ||||||||||
8CE0 | DEC HL | ||||||||||
8CE1 | RLD | ||||||||||
8CE3 | DEC HL | ||||||||||
8CE4 | RLD | ||||||||||
8CE6 | DEC HL | ||||||||||
8CE7 | DJNZ Door_CreateBitmap_7 | ||||||||||
Door_PreFrameTable | 8CE9 | RET |
Prev: 8C2D | Up: Map |