![]() |
Routines |
Prev: 664E | Up: Map | Next: 66F9 |
Scrolls the play area horizontally by shifting pixel data right using
RRD instructions.
|
||||
ScrollPlayarea_Right | 6650 | LD HL,($7817) | HL=*Current_ScreenPosition. | |
6653 | LD A,($7819) | Jump to ScrollPlayarea_Right_1 if *ScrollPhase_Counter is not zero. | ||
6656 | AND A | |||
6657 | JR NZ,ScrollPlayarea_Right_1 | |||
6659 | LD A,L | Jump to ScrollPlayarea_Right_0 if L is not zero. | ||
665A | AND A | |||
665B | JR NZ,ScrollPlayarea_Right_0 | |||
665D | LD A,H | H-=05. | ||
665E | SUB $05 | |||
6660 | LD H,A | |||
ScrollPlayarea_Right_0 | 6661 | DEC L | Decrease L by one. | |
6662 | LD ($7817),HL | Write HL to *Current_ScreenPosition. | ||
6665 | LD A,$08 | A=08. | ||
ScrollPlayarea_Right_1 | 6667 | DEC A | Decrease A by one. | |
6668 | LD ($7819),A | Write A to *ScrollPhase_Counter. | ||
666B | LD D,H | Copy HL to DE. | ||
666C | LD E,L | |||
666D | LD B,$FF | B=FF. | ||
666F | CALL PrepareScrollData | Call PrepareScrollData. | ||
Start of screen buffer.
|
||||
6672 | LD HL,$4000 | HL=4000 (screen buffer). | ||
6675 | LD D,H | Copy the screen position pointer into DE. | ||
6676 | LD E,L | |||
6677 | EXX | Switch to the shadow registers. | ||
ScrollPlayarea_Right_2 | 6678 | LD A,(DE) | A=*DE. | |
6679 | INC E | Increment E by one. | ||
667A | LD L,A | L=A. | ||
667B | LD H,$1F | H=1F. | ||
667D | ADD HL,HL | Multiply HL by 04. | ||
667E | ADD HL,HL | |||
667F | EXX | Switch to the shadow registers. | ||
Scroll one character row (20 characters) left by 01 pixel using
RRD .
|
||||
6680 | LD B,$04 | Set a counter in B for 04 rows. | ||
ScrollCharacterRow_Right | 6682 | EXX | Switch to the shadow registers. | |
6683 | LD A,(HL) | A=*HL. | ||
6684 | INC L | Increment L by one. | ||
6685 | EXX | Switch to the shadow registers. | ||
6686 | RRD | RRD. | ||
6688 | INC L | Increment L by one. | ||
6689 | RRD | RRD. | ||
668B | INC L | Increment L by one. | ||
668C | RRD | RRD. | ||
668E | INC L | Increment L by one. | ||
668F | RRD | RRD. | ||
6691 | INC L | Increment L by one. | ||
6692 | RRD | RRD. | ||
6694 | INC L | Increment L by one. | ||
6695 | RRD | RRD. | ||
6697 | INC L | Increment L by one. | ||
6698 | RRD | RRD. | ||
669A | INC L | Increment L by one. | ||
669B | RRD | RRD. | ||
669D | INC L | Increment L by one. | ||
669E | RRD | RRD. | ||
66A0 | INC L | Increment L by one. | ||
66A1 | RRD | RRD. | ||
66A3 | INC L | Increment L by one. | ||
66A4 | RRD | RRD. | ||
66A6 | INC L | Increment L by one. | ||
66A7 | RRD | RRD. | ||
66A9 | INC L | Increment L by one. | ||
66AA | RRD | RRD. | ||
66AC | INC L | Increment L by one. | ||
66AD | RRD | RRD. | ||
66AF | INC L | Increment L by one. | ||
66B0 | RRD | RRD. | ||
66B2 | INC L | Increment L by one. | ||
66B3 | RRD | RRD. | ||
66B5 | INC L | Increment L by one. | ||
66B6 | RRD | RRD. | ||
66B8 | INC L | Increment L by one. | ||
66B9 | RRD | RRD. | ||
66BB | INC L | Increment L by one. | ||
66BC | RRD | RRD. | ||
66BE | INC L | Increment L by one. | ||
66BF | RRD | RRD. | ||
66C1 | INC L | Increment L by one. | ||
66C2 | RRD | RRD. | ||
66C4 | INC L | Increment L by one. | ||
66C5 | RRD | RRD. | ||
66C7 | INC L | Increment L by one. | ||
66C8 | RRD | RRD. | ||
66CA | INC L | Increment L by one. | ||
66CB | RRD | RRD. | ||
66CD | INC L | Increment L by one. | ||
66CE | RRD | RRD. | ||
66D0 | INC L | Increment L by one. | ||
66D1 | RRD | RRD. | ||
66D3 | INC L | Increment L by one. | ||
66D4 | RRD | RRD. | ||
66D6 | INC L | Increment L by one. | ||
66D7 | RRD | RRD. | ||
66D9 | INC L | Increment L by one. | ||
66DA | RRD | RRD. | ||
66DC | INC L | Increment L by one. | ||
66DD | RRD | RRD. | ||
66DF | INC L | Increment L by one. | ||
66E0 | RRD | RRD. | ||
66E2 | INC L | Increment L by one. | ||
66E3 | RRD | RRD. | ||
66E5 | LD L,E | L=E. | ||
66E6 | INC H | Increment H by two. | ||
66E7 | INC H | |||
66E8 | DJNZ ScrollCharacterRow_Right | Decrease counter by one and loop back to ScrollCharacterRow_Right until counter is zero. | ||
66EA | LD A,$20 | E+=20. | ||
66EC | ADD A,E | |||
66ED | LD E,A | |||
66EE | LD L,A | L=A. | ||
66EF | JR NC,ContinueScreenScroll_Right | Jump to ContinueScreenScroll_Right if {} is higher. | ||
66F1 | LD D,$48 | D=48. | ||
ContinueScreenScroll_Right | 66F3 | LD H,D | Update the screen pointer. | |
66F4 | EXX | Switch to the shadow registers. | ||
66F5 | DJNZ ScrollPlayarea_Right_2 | Decrease counter by one and loop back to ScrollPlayarea_Right_2 until counter is zero. | ||
66F7 | EXX | Switch back to the normal registers. | ||
66F8 | RET | Return. |
Prev: 664E | Up: Map | Next: 66F9 |