Routines |
Prev: 9D47 | Up: Map | Next: 9E02 |
Used by the routine at 947A.
|
||||
9D71 | LD A,($A060) | Return if Rex is not teleporting | ||
9D74 | OR A | |||
9D75 | RET Z | |||
9D76 | LD A,($A05D) | Return if Rex not visible | ||
9D79 | OR A | |||
9D7A | RET Z | |||
9D7B | LD A,($A0B7) | Computes into HL the address pointer into room graphic data for Rex position | ||
9D7E | LD L,A | |||
9D7F | LD H,$00 | |||
9D81 | ADD HL,HL | |||
9D82 | ADD HL,HL | |||
9D83 | ADD HL,HL | |||
9D84 | ADD HL,HL | |||
9D85 | ADD HL,HL | |||
9D86 | LD A,($A0B6) | |||
9D89 | SRL A | |||
9D8B | SRL A | |||
9D8D | SRL A | |||
9D8F | LD E,A | |||
9D90 | LD D,$00 | |||
9D92 | ADD HL,DE | |||
9D93 | LD DE,$E89F | |||
9D96 | ADD HL,DE | |||
9D97 | LD C,$00 | Set C the graphic data to draw | ||
9D99 | LD A,($A05E) | Set B to the number of lines to hide from Rex sprite | ||
9D9C | LD B,A | |||
9D9D | CALL $9DF6 | Hide a portion of Rex to simulate teleporting | ||
9DA0 | LD DE,$001D | Garble randomly the last three lines of the Rex sprite not hidden | ||
9DA3 | LD B,$03 | |||
9DA5 | PUSH BC | |||
9DA6 | LD B,$03 | |||
9DA8 | PUSH BC | |||
9DA9 | CALL $A375 | |||
9DAC | AND (HL) | |||
9DAD | LD (HL),A | |||
9DAE | INC HL | |||
9DAF | POP BC | |||
9DB0 | DJNZ $9DA8 | |||
9DB2 | ADD HL,DE | |||
9DB3 | POP BC | |||
9DB4 | DJNZ $9DA5 | |||
9DB6 | LD A,($A062) | Jump forward if teleporting Rex dead | ||
9DB9 | OR A | |||
9DBA | JP NZ,$9DCE | |||
9DBD | LD A,($A05E) | Decrement number of lines to hide | ||
9DC0 | DEC A | |||
9DC1 | LD ($A05E),A | |||
9DC4 | OR A | Return if number of lines is not zero | ||
9DC5 | RET NZ | |||
9DC6 | JP $9DDF | Jump to finish teleporting | ||
Code not reached!
|
||||
9DC9 | LD A,$64 | |||
9DCB | LD ($A061),A | |||
Handle teleporting Rex after dead. This entry point is used by the routine at 9D71.
|
||||
9DCE | LD A,($A05E) | Increment the number of lines to hide | ||
9DD1 | INC A | |||
9DD2 | LD ($A05E),A | |||
9DD5 | CP $12 | Return if number of lines is not 18 | ||
9DD7 | RET NZ | |||
9DD8 | XOR A | Set Rex invisible | ||
9DD9 | LD ($A05D),A | |||
9DDC | JP $9DE8 | Jump to reset teleporting counter | ||
Rex has teleported completely
|
||||
9DDF | XOR A | Stop teleporting | ||
9DE0 | LD ($A060),A | |||
9DE3 | LD A,$01 | Set Rex visible | ||
9DE5 | LD ($A05D),A | |||
Reset teleporting loop counter
|
||||
9DE8 | LD A,$1E | Reset the teleporting loop counter | ||
9DEA | LD ($A061),A | |||
9DED | RET | |||
Code not reached!
|
||||
9DEE | LD A,($A05F) | |||
9DF1 | OR A | |||
9DF2 | CALL NZ,$9E02 | |||
9DF5 | RET | |||
Hide B lines of Rex (used in teleporting animation) beginning from top of sprite
|
||||
9DF6 | LD DE,$001E | Set DE to the increment for point to the next line of pixels | ||
9DF9 | LD (HL),C | Copy the graphic data from C into room graphic data | ||
9DFA | INC HL | |||
9DFB | LD (HL),C | |||
9DFC | INC HL | |||
9DFD | LD (HL),C | |||
9DFE | ADD HL,DE | Increment HL to the next line | ||
9DFF | DJNZ $9DF9 | Jump back until all the lines of Rex are hidden | ||
9E01 | RET |
Prev: 9D47 | Up: Map | Next: 9E02 |