Prev: 56529 Up: Map Next: 56658
56540: Move Tile Up
Used by the routine at 62526.
MoveTile_Up 56540 LD A,(59230) Take *Tile_Vertical_Position and store it in A. Decrease it by one, which adjusts the value for the tile height, and write this value to *Tile_Vertical_Coordinate.
56543 DEC A
56544 LD (59232),A
56547 LD A,(59233) B=*Tile_SpacesToMove.
56550 LD B,A
MoveTile_Up_Loop 56551 PUSH BC Stash the row counter on the stack.
56552 LD A,(59229) A=*Tile_Horizontal_Position.
56555 DEC A Decrease A by one.
56556 LD (59231),A Write A to *Tile_Horizontal_Coordinate.
56559 LD B,4 B=4.
MoveTile_Up_0 56561 PUSH BC Stash the row (tile height) counter on the stack.
56562 LD A,(59231) B=*Tile_Horizontal_Coordinate.
56565 LD B,A
56566 LD A,(59232) C=*Tile_Vertical_Coordinate.
56569 LD C,A
56570 CALL Calculate_ScreenBlockAddress Call Calculate_ScreenBlockAddress.
56573 PUSH HL Stash the destination screen buffer address on the stack.
56574 DEC B Decrease B by one.
56575 CALL Calculate_ScreenBlockAddress Call Calculate_ScreenBlockAddress.
56578 PUSH HL DE=screen buffer address of the tile (using the stack).
56579 POP DE
56580 POP HL Restore the destination screen buffer address from the stack.
56581 LD A,8 A=8.
56583 LD BC,4 BC=0004.
56586 PUSH HL Stash HL, HL and DE on the stack.
MoveTile_Up_1 56587 PUSH HL
56588 PUSH DE
56589 LDIR LDIR.
56591 DEC HL Decrease HL by one.
56592 PUSH HL Stash HL on the stack.
56593 LD (HL),C Write C to *HL.
56594 POP DE Restore DE from the stack.
56595 DEC DE Decrease DE by one.
56596 LD BC,3 BC=0003.
56599 LDDR LDDR.
56601 POP DE Restore DE and HL from the stack.
56602 POP HL
56603 INC D Increment D by one.
56604 INC H Increment H by one.
56605 LD BC,4 BC=0004.
56608 DEC A Decrease A by one.
56609 JP NZ,MoveTile_Up_1 Jump to MoveTile_Up_1 if A is not zero.
56612 POP HL Restore HL from the stack.
56613 CALL Calculate_AttributeAddress Call Calculate_AttributeAddress.
Move DE up one attribute row.
56616 LD HL,65504 DE+=65504 (subtract 0032).
56619 ADD HL,DE
56620 EX DE,HL
56621 LD BC,4 BC=0004.
56624 LDIR LDIR.
56626 LD BC,3 BC=0003.
56629 LD A,71 A=INK: WHITE, PAPER: BLACK (BRIGHT) .
56631 DEC HL Decrease HL by one.
56632 LD (HL),A Write A to *HL.
56633 PUSH HL Stash HL on the stack.
56634 POP DE Restore DE from the stack.
56635 DEC DE Decrease DE by one.
56636 LDDR LDDR.
56638 LD HL,59231 HL=Tile_Horizontal_Coordinate.
56641 INC (HL) Increment *HL by one.
56642 POP BC Restore BC from the stack.
56643 DJNZ MoveTile_Up_0 Decrease counter by one and loop back to MoveTile_Up_0 until counter is zero.
The tile has successfully moved one space!
56645 POP BC Using the number of spaces left to move (from the stack) call Sound_TileMovement.
56646 PUSH BC
56647 CALL Sound_TileMovement
56650 LD HL,59229 Decrease *Tile_Horizontal_Position by one.
56653 DEC (HL)
56654 POP BC Restore the number of spaces left to move from the stack.
56655 DJNZ MoveTile_Up_Loop Decrease the number of spaces counter by one and loop back to MoveTile_Up_Loop until the tile is in the destination space.
56657 RET Return.
Prev: 56529 Up: Map Next: 56658