![]() |
Routines |
| Prev: 26030 | Up: Map | Next: 26368 |
|
Used by the routine at Door_Prep_01.
|
||||
|
It's only necessary to scroll 11 character blocks as the display moves for one door only.
|
||||
| ScreenScroll_Right | 26112 | LD B,11 | B=11. | |
| ScreenScroll_Right_Loop | 26114 | PUSH BC | Push the counter onto the stack. | |
| 26115 | CALL ScreenScroll_Main_Right | Call ScreenScroll_Main_Right. | ||
|
Calling this twice provides parallax scrolling!
|
||||
| 26118 | CALL ScreenScroll_Tellers_Right | Call ScreenScroll_Tellers_Right. | ||
| 26121 | CALL ScreenScroll_Tellers_Right | Call ScreenScroll_Tellers_Right again. | ||
| 26124 | POP BC | Restore the counter off the stack. | ||
| 26125 | DJNZ ScreenScroll_Right_Loop | Decrease counter by one and loop back to ScreenScroll_Right_Loop until counter is zero. | ||
| 26127 | RET | Return. | ||
|
Copies the playfield data into the buffer, and then out onto the screen.
|
||||
| ScreenScroll_Main_Right | 26128 | LD IX,23296 | IX=BufferGeneral. | |
| 26132 | LD HL,16490 | HL=16490. | ||
| 26135 | LD B,13 | B=13. | ||
| 26137 | CALL ScreenScroll_Buffer_Right | Call ScreenScroll_Buffer_Right. | ||
| 26140 | LD HL,16510 | HL=16510. | ||
| 26143 | LD DE,16511 | DE=16511. | ||
| 26146 | LD IX,23296 | IX=BufferGeneral. | ||
| 26150 | LD B,13 | B=13. | ||
| 26152 | CALL ScreenScroll_Copy_Right | Call ScreenScroll_Copy_Right. | ||
| 26155 | LD HL,23018 | HL=23018. | ||
| 26158 | LD IX,23296 | IX=BufferGeneral. | ||
| 26162 | LD B,13 | B=13. | ||
| 26164 | CALL ScreenScroll_BufferAttrs_Right | Call ScreenScroll_BufferAttrs_Right. | ||
| 26167 | LD HL,23038 | HL=23038. | ||
| 26170 | LD DE,23039 | DE=23039. | ||
| 26173 | LD IX,23296 | IX=BufferGeneral. | ||
| 26177 | LD B,13 | B=13. | ||
| 26179 | CALL ScreenScroll_CopyAttrs_Right | Call ScreenScroll_CopyAttrs_Right. | ||
| 26182 | RET | Return. | ||
|
Scroll Tellers Desk right one character block.
|
||||
| ScreenScroll_Tellers_Right | 26183 | LD IX,23296 | IX=BufferGeneral. | |
| 26187 | LD HL,20522 | HL=20522. | ||
| 26190 | LD B,4 | B=4. | ||
| 26192 | CALL ScreenScroll_Buffer_Right | Call ScreenScroll_Buffer_Right. | ||
| 26195 | LD HL,20542 | HL=20542. | ||
| 26198 | LD DE,20543 | DE=20543. | ||
| 26201 | LD IX,23296 | IX=BufferGeneral. | ||
| 26205 | LD B,4 | B=4. | ||
| 26207 | CALL ScreenScroll_Copy_Right | Call ScreenScroll_Copy_Right. | ||
| 26210 | RET | Return. | ||
| 26211 | RET | Return? Possibly unused. | ||
|
Copies screen data into the (general) buffer.
|
||||
| ScreenScroll_Buffer_Right | 26212 | LD C,8 | C=8. | |
| ScreenScroll_Buffer_Right_Loop | 26214 | LD A,(HL) | Store the contents of memory HL is referencing to IX. | |
| 26215 | LD (IX+0),A | |||
| 26218 | INC IX | Increment IX by one. | ||
| 26220 | INC H | Increment H by one. | ||
| 26221 | DEC C | Decrease C by one. | ||
| 26222 | JR NZ,ScreenScroll_Buffer_Right_Loop | |||
| 26224 | LD A,H | |||
| 26225 | SUB 8 | |||
| 26227 | LD H,A | |||
| 26228 | LD DE,32 | |||
| 26231 | ADD HL,DE | |||
| 26232 | LD A,H | |||
| 26233 | AND %00000111 | Keep only bits 0-2. | ||
| 26235 | CALL NZ,ScreenScroll_NextLine_Right | |||
| 26238 | DJNZ ScreenScroll_Buffer_Right | |||
| 26240 | RET | Return. | ||
|
Copies attribute data into the (general) buffer.
|
||||
| ScreenScroll_BufferAttrs_Right | 26241 | LD A,(HL) | Store the contents of memory HL is referencing to IX. | |
| 26242 | LD (IX+0),A | |||
| 26245 | LD DE,65504 | DE=65504. | ||
| 26248 | ADD HL,DE | |||
| 26249 | INC IX | |||
| 26251 | DJNZ ScreenScroll_BufferAttrs_Right | Decrease counter by one and loop back to ScreenScroll_BufferAttrs_Right until counter is zero. | ||
| 26253 | RET | Return. | ||
|
Writes the attribute bytes out of the buffer and onto the screen.
|
||||
| ScreenScroll_CopyAttrs_Right | 26254 | PUSH BC | ||
| 26255 | LD BC,31 | |||
| 26258 | LD A,(IX+0) | |||
| 26261 | LDDR | |||
| 26263 | LD (DE),A | |||
| 26264 | INC IX | |||
| 26266 | DEC HL | |||
| 26267 | DEC DE | |||
| 26268 | POP BC | |||
| 26269 | DJNZ ScreenScroll_CopyAttrs_Right | |||
| 26271 | RET | Return. | ||
|
Copies the data held in the buffer back to the screen.
|
||||
| ScreenScroll_Copy_Right | 26272 | PUSH BC | ||
| 26273 | PUSH HL | |||
| 26274 | CALL ScreenScroll_CopyTeller_Right | |||
| 26277 | POP HL | |||
| 26278 | LD BC,32 | |||
| 26281 | ADD HL,BC | |||
| 26282 | LD A,H | |||
| 26283 | AND %00000111 | Keep only bits 0-2. | ||
| 26285 | JR Z,ScreenScroll_Copy_Right_Skip | |||
| 26287 | LD A,H | |||
| 26288 | ADD A,7 | |||
| 26290 | LD H,A | |||
|
Skips over moving down one line from above.
|
||||
| ScreenScroll_Copy_Right_Skip | 26291 | PUSH HL | ||
| 26292 | POP DE | |||
| 26293 | INC DE | |||
| 26294 | POP BC | |||
| 26295 | DJNZ ScreenScroll_Copy_Right | |||
| 26297 | RET | Return. | ||
|
Scrolls the very top part of the tellers desks.
|
||||
| ScreenScroll_CopyTeller_Right | 26298 | PUSH HL | ||
| 26299 | PUSH HL | |||
| 26300 | LD BC,31 | |||
| 26303 | LD A,(IX+0) | |||
| 26306 | INC IX | |||
| 26308 | LDDR | |||
| 26310 | LD (DE),A | |||
| 26311 | POP DE | |||
| 26312 | POP HL | |||
| 26313 | INC H | |||
| 26314 | INC D | |||
| 26315 | INC DE | |||
| 26316 | LD A,H | |||
| 26317 | AND %00000111 | Keep only bits 0-2. | ||
| 26319 | RET Z | |||
| 26320 | JR ScreenScroll_CopyTeller_Right | |||
|
Adds 7 to H (as part of HL).
|
||||
| ScreenScroll_NextLine_Right | 26322 | LD A,H | Adds 7 to H. | |
| 26323 | ADD A,7 | |||
| 26325 | LD H,A | |||
| 26326 | RET | Return. | ||
| Prev: 26030 | Up: Map | Next: 26368 |