![]() |
Routines |
| Prev: 65AE | Up: Map | Next: 6700 |
|
Used by the routine at Door_Prep_01.
|
||||
|
It's only necessary to scroll 0B character blocks as the display moves for one door only.
|
||||
| ScreenScroll_Right | 6600 | LD B,$0B | B=0B. | |
| ScreenScroll_Right_Loop | 6602 | PUSH BC | Push the counter onto the stack. | |
| 6603 | CALL ScreenScroll_Main_Right | Call ScreenScroll_Main_Right. | ||
|
Calling this twice provides parallax scrolling!
|
||||
| 6606 | CALL ScreenScroll_Tellers_Right | Call ScreenScroll_Tellers_Right. | ||
| 6609 | CALL ScreenScroll_Tellers_Right | Call ScreenScroll_Tellers_Right again. | ||
| 660C | POP BC | Restore the counter off the stack. | ||
| 660D | DJNZ ScreenScroll_Right_Loop | Decrease counter by one and loop back to ScreenScroll_Right_Loop until counter is zero. | ||
| 660F | RET | Return. | ||
|
Copies the playfield data into the buffer, and then out onto the screen.
|
||||
| ScreenScroll_Main_Right | 6610 | LD IX,$5B00 | IX=BufferGeneral. | |
| 6614 | LD HL,$406A | HL=406A. | ||
| 6617 | LD B,$0D | B=0D. | ||
| 6619 | CALL ScreenScroll_Buffer_Right | Call ScreenScroll_Buffer_Right. | ||
| 661C | LD HL,$407E | HL=407E. | ||
| 661F | LD DE,$407F | DE=407F. | ||
| 6622 | LD IX,$5B00 | IX=BufferGeneral. | ||
| 6626 | LD B,$0D | B=0D. | ||
| 6628 | CALL ScreenScroll_Copy_Right | Call ScreenScroll_Copy_Right. | ||
| 662B | LD HL,$59EA | HL=59EA. | ||
| 662E | LD IX,$5B00 | IX=BufferGeneral. | ||
| 6632 | LD B,$0D | B=0D. | ||
| 6634 | CALL ScreenScroll_BufferAttrs_Right | Call ScreenScroll_BufferAttrs_Right. | ||
| 6637 | LD HL,$59FE | HL=59FE. | ||
| 663A | LD DE,$59FF | DE=59FF. | ||
| 663D | LD IX,$5B00 | IX=BufferGeneral. | ||
| 6641 | LD B,$0D | B=0D. | ||
| 6643 | CALL ScreenScroll_CopyAttrs_Right | Call ScreenScroll_CopyAttrs_Right. | ||
| 6646 | RET | Return. | ||
|
Scroll Tellers Desk right one character block.
|
||||
| ScreenScroll_Tellers_Right | 6647 | LD IX,$5B00 | IX=BufferGeneral. | |
| 664B | LD HL,$502A | HL=502A. | ||
| 664E | LD B,$04 | B=04. | ||
| 6650 | CALL ScreenScroll_Buffer_Right | Call ScreenScroll_Buffer_Right. | ||
| 6653 | LD HL,$503E | HL=503E. | ||
| 6656 | LD DE,$503F | DE=503F. | ||
| 6659 | LD IX,$5B00 | IX=BufferGeneral. | ||
| 665D | LD B,$04 | B=04. | ||
| 665F | CALL ScreenScroll_Copy_Right | Call ScreenScroll_Copy_Right. | ||
| 6662 | RET | Return. | ||
| 6663 | RET | Return? Possibly unused. | ||
|
Copies screen data into the (general) buffer.
|
||||
| ScreenScroll_Buffer_Right | 6664 | LD C,$08 | C=08. | |
| ScreenScroll_Buffer_Right_Loop | 6666 | LD A,(HL) | Store the contents of memory HL is referencing to IX. | |
| 6667 | LD (IX+$00),A | |||
| 666A | INC IX | Increment IX by one. | ||
| 666C | INC H | Increment H by one. | ||
| 666D | DEC C | Decrease C by one. | ||
| 666E | JR NZ,ScreenScroll_Buffer_Right_Loop | |||
| 6670 | LD A,H | |||
| 6671 | SUB $08 | |||
| 6673 | LD H,A | |||
| 6674 | LD DE,$0020 | |||
| 6677 | ADD HL,DE | |||
| 6678 | LD A,H | |||
| 6679 | AND %00000111 | Keep only bits 0-2. | ||
| 667B | CALL NZ,ScreenScroll_NextLine_Right | |||
| 667E | DJNZ ScreenScroll_Buffer_Right | |||
| 6680 | RET | Return. | ||
|
Copies attribute data into the (general) buffer.
|
||||
| ScreenScroll_BufferAttrs_Right | 6681 | LD A,(HL) | Store the contents of memory HL is referencing to IX. | |
| 6682 | LD (IX+$00),A | |||
| 6685 | LD DE,$FFE0 | DE=FFE0. | ||
| 6688 | ADD HL,DE | |||
| 6689 | INC IX | |||
| 668B | DJNZ ScreenScroll_BufferAttrs_Right | Decrease counter by one and loop back to ScreenScroll_BufferAttrs_Right until counter is zero. | ||
| 668D | RET | Return. | ||
|
Writes the attribute bytes out of the buffer and onto the screen.
|
||||
| ScreenScroll_CopyAttrs_Right | 668E | PUSH BC | ||
| 668F | LD BC,$001F | |||
| 6692 | LD A,(IX+$00) | |||
| 6695 | LDDR | |||
| 6697 | LD (DE),A | |||
| 6698 | INC IX | |||
| 669A | DEC HL | |||
| 669B | DEC DE | |||
| 669C | POP BC | |||
| 669D | DJNZ ScreenScroll_CopyAttrs_Right | |||
| 669F | RET | Return. | ||
|
Copies the data held in the buffer back to the screen.
|
||||
| ScreenScroll_Copy_Right | 66A0 | PUSH BC | ||
| 66A1 | PUSH HL | |||
| 66A2 | CALL ScreenScroll_CopyTeller_Right | |||
| 66A5 | POP HL | |||
| 66A6 | LD BC,$0020 | |||
| 66A9 | ADD HL,BC | |||
| 66AA | LD A,H | |||
| 66AB | AND %00000111 | Keep only bits 0-2. | ||
| 66AD | JR Z,ScreenScroll_Copy_Right_Skip | |||
| 66AF | LD A,H | |||
| 66B0 | ADD A,$07 | |||
| 66B2 | LD H,A | |||
|
Skips over moving down one line from above.
|
||||
| ScreenScroll_Copy_Right_Skip | 66B3 | PUSH HL | ||
| 66B4 | POP DE | |||
| 66B5 | INC DE | |||
| 66B6 | POP BC | |||
| 66B7 | DJNZ ScreenScroll_Copy_Right | |||
| 66B9 | RET | Return. | ||
|
Scrolls the very top part of the tellers desks.
|
||||
| ScreenScroll_CopyTeller_Right | 66BA | PUSH HL | ||
| 66BB | PUSH HL | |||
| 66BC | LD BC,$001F | |||
| 66BF | LD A,(IX+$00) | |||
| 66C2 | INC IX | |||
| 66C4 | LDDR | |||
| 66C6 | LD (DE),A | |||
| 66C7 | POP DE | |||
| 66C8 | POP HL | |||
| 66C9 | INC H | |||
| 66CA | INC D | |||
| 66CB | INC DE | |||
| 66CC | LD A,H | |||
| 66CD | AND %00000111 | Keep only bits 0-2. | ||
| 66CF | RET Z | |||
| 66D0 | JR ScreenScroll_CopyTeller_Right | |||
|
Adds 07 to H (as part of HL).
|
||||
| ScreenScroll_NextLine_Right | 66D2 | LD A,H | Adds 07 to H. | |
| 66D3 | ADD A,$07 | |||
| 66D5 | LD H,A | |||
| 66D6 | RET | Return. | ||
| Prev: 65AE | Up: Map | Next: 6700 |