![]() |
Routines |
| Prev: D61E | Up: Map | Next: D71E |
|
Used by the routines at Draw_PlayWithDoors, Customer_Frame_01, Bandit_State_Reference, Bowie_Good_Bad, Julius_Good_Bad and Bandit_Draw.
|
|||||||||||
|
Preps door frame 1.
|
|||||||||||
| Draw_DoorFrame1 | D664 | LD HL,$D6B1 | Calls Door_Attributes using Door_Attributes_01. | ||||||||
| D667 | CALL Door_Attributes | ||||||||||
| D66A | LD DE,$BA80 | DE=Door_Frame_01. | |||||||||
|
Referencing the door frame index, work out the screen position and send it to the Draw_DoorFrame routine.
|
|||||||||||
| Prep_Door_Frame | D66D | LD A,($CE1A) | A=Door_Frame_Reference. | ||||||||
| D670 | LD HL,$4082 | Determines which screen address to use for the door reference index currently held in A.
|
|||||||||
| D673 | DEC A | ||||||||||
| D674 | JP Z,Draw_DoorFrame | ||||||||||
| D677 | LD HL,$408D | ||||||||||
| D67A | DEC A | ||||||||||
| D67B | JP Z,Draw_DoorFrame | ||||||||||
| D67E | LD HL,$4098 | ||||||||||
| D681 | JP Draw_DoorFrame | ||||||||||
|
Copies attributes for the current door frame index.
|
|||||||||||
| Door_Attributes | D684 | PUSH AF | Stash the accumulator for later. | ||||||||
| D685 | LD A,($CE1A) | A=Door_Frame_Reference. | |||||||||
| D688 | LD DE,$5882 |
|
|||||||||
| D68B | DEC A | ||||||||||
| D68C | JR Z,Door_Attributes_Skip | ||||||||||
| D68E | LD DE,$588D | ||||||||||
| D691 | DEC A | ||||||||||
| D692 | JR Z,Door_Attributes_Skip | ||||||||||
| D694 | LD DE,$5898 | ||||||||||
| Door_Attributes_Skip | D697 | LD B,$0B | Sets the height of the door image. | ||||||||
| Door_Attributes_Loop | D699 | PUSH BC | Stash the references for later and call Door_Attributes_Copy. | ||||||||
| D69A | PUSH HL | ||||||||||
| D69B | PUSH DE | ||||||||||
| D69C | CALL Door_Attributes_Copy | ||||||||||
| D69F | POP DE | Moves the screen attribute address down to the next attribute row. | |||||||||
| D6A0 | LD HL,$0020 | ||||||||||
| D6A3 | ADD HL,DE | ||||||||||
| D6A4 | EX DE,HL | ||||||||||
| D6A5 | POP HL | Restore the counter and loop back to Door_Attributes_Loop until complete. | |||||||||
| D6A6 | POP BC | ||||||||||
| D6A7 | DJNZ Door_Attributes_Loop | ||||||||||
| D6A9 | POP AF | Restore the accumulator and return. | |||||||||
| D6AA | RET | ||||||||||
|
Simple helper copy routine for sending attribute data to the screen attribute buffer.
|
|||||||||||
| Door_Attributes_Copy | D6AB | LD BC,$0007 | Set the door width, copy the attribute data to the screen and return. | ||||||||
| D6AE | LDIR | ||||||||||
| D6B0 | RET | ||||||||||
|
Door frame attribute data.
|
|||||||||||
| Door_Attributes_01 | D6B1 | DEFB $30,$30,$30,$30,$30,$30,$30,$30 | Attribute data for door frame 1. | ||||||||
| Door_Attributes_02 | D6B9 | DEFB $28,$28,$30,$30,$30,$30,$30,$30 | Attribute data for door frame 2. | ||||||||
| Door_Attributes_03 | D6C1 | DEFB $28,$28,$28,$28,$30,$30,$30,$30 | Attribute data for door frame 3. | ||||||||
| Door_Attributes_04 | D6C9 | DEFB $28,$28,$28,$28,$28,$28,$30,$28 | Attribute data for door frame 4. | ||||||||
|
Preps door frame 2.
|
|||||||||||
| Draw_DoorFrame02 | D6D1 | LD HL,$D6B9 | Calls Door_Attributes using Door_Attributes_02. | ||||||||
| D6D4 | CALL Door_Attributes | ||||||||||
| D6D7 | CALL Character_Door_Frame_02 | Prepare the character/ door image by calling Character_Door_Frame_02. Then pass Door_Buffer to Prep_Door_Frame which will draw it to the screen. | |||||||||
| D6DA | LD DE,$EA90 | ||||||||||
| D6DD | JR Prep_Door_Frame | ||||||||||
|
Preps door frame 3.
|
|||||||||||
| Draw_DoorFrame03 | D6DF | LD HL,$D6C1 | Calls Door_Attributes using Door_Attributes_03. | ||||||||
| D6E2 | CALL Door_Attributes | ||||||||||
| D6E5 | CALL Character_Door_Frame_03 | Prepare the character/ door image by calling Character_Door_Frame_03. Then pass Door_Buffer to Prep_Door_Frame which will draw it to the screen. | |||||||||
| D6E8 | LD DE,$EA90 | ||||||||||
| D6EB | JR Prep_Door_Frame | ||||||||||
|
Preps door frame 4.
|
|||||||||||
| Draw_DoorFrame04 | D6ED | LD HL,$D6C9 | Calls Door_Attributes using Door_Attributes_04. | ||||||||
| D6F0 | CALL Door_Attributes | ||||||||||
| D6F3 | CALL Draw_CharacterInDoorway | The door is fully open so draw the whole character in the doorway directly. | |||||||||
| D6F6 | LD B,$58 | Reference Door_Frame_04 and the dimensions for the copy routine. | |||||||||
| D6F8 | LD C,$01 | ||||||||||
| D6FA | LD DE,$BFA8 | ||||||||||
| D6FD | LD A,($CE1A) | A=Door_Frame_Reference. | |||||||||
| D700 | LD HL,$4088 | Determines which screen address to use for the door reference index currently held in A.
|
|||||||||
| D703 | DEC A | ||||||||||
| D704 | JP Z,Copy_Routine | ||||||||||
| D707 | LD HL,$4093 | ||||||||||
| D70A | DEC A | ||||||||||
| D70B | JP Z,Copy_Routine | ||||||||||
| D70E | LD HL,$409E | ||||||||||
| D711 | JP Copy_Routine | ||||||||||
| D714 | LD DE,$EA90 | DE=Door_Buffer. | |||||||||
| Draw_DoorFrame | D717 | LD B,$58 | Draws the image pointed at by DE to the screen address in HL using Copy_Routine. | ||||||||
| D719 | LD C,$07 | ||||||||||
| D71B | JP Copy_Routine | ||||||||||
| Prev: D61E | Up: Map | Next: D71E |