![]() |
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 |