![]() |
Routines |
Prev: 27797 | Up: Map |
|
|||||||||||||
27842 | PUSH BC | Save BC. | |||||||||||
27843 | PUSH DE | Save DE. | |||||||||||
27844 | PUSH HL | Save the sprite location. | |||||||||||
27845 | LD BC,16384 | Convert the sprite location into a display file address. | |||||||||||
27848 | ADD HL,BC | ||||||||||||
27849 | CALL 27927 | Set HL the display file address of the tile in front of the sprite. | |||||||||||
27852 | CALL 27663 | Set HL' to the corresponding attribute file address. | |||||||||||
27855 | EXX | Exchange registers. | |||||||||||
27856 | LD E,0 | E' will hold the indicator of any interesting tiles at this location; initialise it now. | |||||||||||
27858 | CALL 27898 | Check the top-left tile. | |||||||||||
27861 | INC HL | Point HL' at the top-right tile. | |||||||||||
27862 | CALL 27898 | Check the top-right tile. | |||||||||||
27865 | LD BC,31 | Point HL' at the bottom-left tile. | |||||||||||
27868 | ADD HL,BC | ||||||||||||
27869 | CALL 27898 | Check the bottom-left tile. | |||||||||||
27872 | INC HL | Point HL' at the bottom-right tile. | |||||||||||
27873 | CALL 27898 | Check the bottom-right tile. | |||||||||||
27876 | LD A,E | Copy the tile indicator to A. | |||||||||||
27877 | EXX | Exchange registers. | |||||||||||
27878 | POP HL | Restore the sprite location to HL. | |||||||||||
27879 | POP DE | Restore DE. | |||||||||||
27880 | POP BC | Restore BC. | |||||||||||
27881 | CP 255 | Is the sprite facing a wall tile? | |||||||||||
27883 | JR NZ,27888 | Jump if not. | |||||||||||
27885 | LD A,3 | Signal: sprite is facing a wall tile. | |||||||||||
27887 | RET | ||||||||||||
27888 | AND 10 | Return with A=1 if the sprite is facing a tunnel entrance. | |||||||||||
27890 | RRC A | ||||||||||||
27892 | CP 1 | ||||||||||||
27894 | RET Z | ||||||||||||
27895 | RRC A | Now A=2 if the sprite is facing the maze exit/entrance, or 0 otherwise. | |||||||||||
27897 | RET |
Prev: 27797 | Up: Map |