![]() |
Routines |
Prev: 26190 | Up: Map | Next: 26361 |
Scrolls the play area horizontally by shifting pixel data right using
RRD instructions.
|
||||
ScrollPlayarea_Right | 26192 | LD HL,(30743) | HL=*Current_ScreenPosition. | |
26195 | LD A,(30745) | Jump to ScrollPlayarea_Right_1 if *ScrollPhase_Counter is not zero. | ||
26198 | AND A | |||
26199 | JR NZ,ScrollPlayarea_Right_1 | |||
26201 | LD A,L | Jump to ScrollPlayarea_Right_0 if L is not zero. | ||
26202 | AND A | |||
26203 | JR NZ,ScrollPlayarea_Right_0 | |||
26205 | LD A,H | H-=5. | ||
26206 | SUB 5 | |||
26208 | LD H,A | |||
ScrollPlayarea_Right_0 | 26209 | DEC L | Decrease L by one. | |
26210 | LD (30743),HL | Write HL to *Current_ScreenPosition. | ||
26213 | LD A,8 | A=8. | ||
ScrollPlayarea_Right_1 | 26215 | DEC A | Decrease A by one. | |
26216 | LD (30745),A | Write A to *ScrollPhase_Counter. | ||
26219 | LD D,H | Copy HL to DE. | ||
26220 | LD E,L | |||
26221 | LD B,255 | B=255. | ||
26223 | CALL PrepareScrollData | Call PrepareScrollData. | ||
Start of screen buffer.
|
||||
26226 | LD HL,16384 | HL=16384 (screen buffer). | ||
26229 | LD D,H | Copy the screen position pointer into DE. | ||
26230 | LD E,L | |||
26231 | EXX | Switch to the shadow registers. | ||
ScrollPlayarea_Right_2 | 26232 | LD A,(DE) | A=*DE. | |
26233 | INC E | Increment E by one. | ||
26234 | LD L,A | L=A. | ||
26235 | LD H,31 | H=31. | ||
26237 | ADD HL,HL | Multiply HL by 4. | ||
26238 | ADD HL,HL | |||
26239 | EXX | Switch to the shadow registers. | ||
Scroll one character row (32 characters) left by 1 pixel using
RRD .
|
||||
26240 | LD B,4 | Set a counter in B for 4 rows. | ||
ScrollCharacterRow_Right | 26242 | EXX | Switch to the shadow registers. | |
26243 | LD A,(HL) | A=*HL. | ||
26244 | INC L | Increment L by one. | ||
26245 | EXX | Switch to the shadow registers. | ||
26246 | RRD | RRD. | ||
26248 | INC L | Increment L by one. | ||
26249 | RRD | RRD. | ||
26251 | INC L | Increment L by one. | ||
26252 | RRD | RRD. | ||
26254 | INC L | Increment L by one. | ||
26255 | RRD | RRD. | ||
26257 | INC L | Increment L by one. | ||
26258 | RRD | RRD. | ||
26260 | INC L | Increment L by one. | ||
26261 | RRD | RRD. | ||
26263 | INC L | Increment L by one. | ||
26264 | RRD | RRD. | ||
26266 | INC L | Increment L by one. | ||
26267 | RRD | RRD. | ||
26269 | INC L | Increment L by one. | ||
26270 | RRD | RRD. | ||
26272 | INC L | Increment L by one. | ||
26273 | RRD | RRD. | ||
26275 | INC L | Increment L by one. | ||
26276 | RRD | RRD. | ||
26278 | INC L | Increment L by one. | ||
26279 | RRD | RRD. | ||
26281 | INC L | Increment L by one. | ||
26282 | RRD | RRD. | ||
26284 | INC L | Increment L by one. | ||
26285 | RRD | RRD. | ||
26287 | INC L | Increment L by one. | ||
26288 | RRD | RRD. | ||
26290 | INC L | Increment L by one. | ||
26291 | RRD | RRD. | ||
26293 | INC L | Increment L by one. | ||
26294 | RRD | RRD. | ||
26296 | INC L | Increment L by one. | ||
26297 | RRD | RRD. | ||
26299 | INC L | Increment L by one. | ||
26300 | RRD | RRD. | ||
26302 | INC L | Increment L by one. | ||
26303 | RRD | RRD. | ||
26305 | INC L | Increment L by one. | ||
26306 | RRD | RRD. | ||
26308 | INC L | Increment L by one. | ||
26309 | RRD | RRD. | ||
26311 | INC L | Increment L by one. | ||
26312 | RRD | RRD. | ||
26314 | INC L | Increment L by one. | ||
26315 | RRD | RRD. | ||
26317 | INC L | Increment L by one. | ||
26318 | RRD | RRD. | ||
26320 | INC L | Increment L by one. | ||
26321 | RRD | RRD. | ||
26323 | INC L | Increment L by one. | ||
26324 | RRD | RRD. | ||
26326 | INC L | Increment L by one. | ||
26327 | RRD | RRD. | ||
26329 | INC L | Increment L by one. | ||
26330 | RRD | RRD. | ||
26332 | INC L | Increment L by one. | ||
26333 | RRD | RRD. | ||
26335 | INC L | Increment L by one. | ||
26336 | RRD | RRD. | ||
26338 | INC L | Increment L by one. | ||
26339 | RRD | RRD. | ||
26341 | LD L,E | L=E. | ||
26342 | INC H | Increment H by two. | ||
26343 | INC H | |||
26344 | DJNZ ScrollCharacterRow_Right | Decrease counter by one and loop back to ScrollCharacterRow_Right until counter is zero. | ||
26346 | LD A,32 | E+=32. | ||
26348 | ADD A,E | |||
26349 | LD E,A | |||
26350 | LD L,A | L=A. | ||
26351 | JR NC,ContinueScreenScroll_Right | Jump to ContinueScreenScroll_Right if {} is higher. | ||
26353 | LD D,72 | D=72. | ||
ContinueScreenScroll_Right | 26355 | LD H,D | Update the screen pointer. | |
26356 | EXX | Switch to the shadow registers. | ||
26357 | DJNZ ScrollPlayarea_Right_2 | Decrease counter by one and loop back to ScrollPlayarea_Right_2 until counter is zero. | ||
26359 | EXX | Switch back to the normal registers. | ||
26360 | RET | Return. |
Prev: 26190 | Up: Map | Next: 26361 |