Prev: 26190 Up: Map Next: 26361
26192: Scroll Playarea Right
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