Prev: F801 Up: Map Next: FC43
F85D: Routine at F85D
Used by the routine at AliasInterruptRedirect.
F85D DI Disable interrupts.
F85E PUSH AF Stash AF, BC, DE, HL and IX on the stack.
F85F PUSH BC
F860 PUSH DE
F861 PUSH HL
F862 PUSH IX
F864 LD HL,$D839 Jump to F9A1 if bit 7 of *D839 is set.
F867 BIT 7,(HL)
F869 JP NZ,$F9A1
F86C LD A,($D835) Jump to F87D if *PlayerCursor_Flag is OFF (00).
F86F CP $00
F871 JP Z,$F87D
The players cursor is showing, so update the attribute cycling animation.
F874 CALL Remove_PlayerCursorAttributes Call Remove_PlayerCursorAttributes.
F877 CALL PlayerCursor_AttributesRotator Call PlayerCursor_AttributesRotator.
F87A CALL Draw_Cursor Call Draw_Cursor.
F87D LD A,($D83B) Jump to F8C6 if *D83B is equal to 00.
F880 CP $00
F882 JP Z,$F8C6
F885 LD HL,$D842 HL=D842.
F888 DEC (HL) Decrease *HL by one.
F889 JP NZ,$F8C6 Jump to F8C6 if *HL is not zero.
F88C LD (HL),$03 Write 03 to *HL.
F88E LD HL,($D853) HL=*D853.
F891 LD C,(HL) C=*HL.
F892 INC HL Increment HL by one.
F893 LD B,(HL) B=*HL.
F894 LD A,($DA15) A=*DA15.
F897 CALL $DA85 Call DA85.
F89A LD A,($DA16) A=*DA16.
F89D CALL $DA8F Call DA8F.
F8A0 LD HL,$D846 HL=D846.
F8A3 DEC (HL) Decrease *HL by one.
F8A4 JP NZ,$F8C6 Jump to F8C6 if *HL is not zero.
F8A7 LD (HL),$06 Write 06 to *HL.
F8A9 LD HL,($D853) HL=*D853.
F8AC INC HL Increment HL by two.
F8AD INC HL
F8AE LD A,(HL) Jump to F8C3 if *HL is not equal to FF.
F8AF CP $FF
F8B1 JP NZ,$F8C3
F8B4 LD HL,$D838 HL=Bomb.
F8B7 SET 1,(HL) Set bit 1 of *HL.
F8B9 XOR A Write 00 to *D83B.
F8BA LD ($D83B),A
F8BD CALL $DAB1 Call DAB1.
F8C0 LD HL,$DA1F Write DA1F to *D853.
F8C3 LD ($D853),HL
F8C6 LD A,($D83C) Jump to F90F if *D83C is equal to 00.
F8C9 CP $00
F8CB JP Z,$F90F
F8CE LD HL,$D843 HL=D843.
F8D1 DEC (HL) Decrease *HL by one.
F8D2 JP NZ,$F90F Jump to F90F if *HL is not zero.
F8D5 LD (HL),$03 Write 03 to *HL.
F8D7 LD HL,($D855) HL=*D855.
F8DA LD C,(HL) C=*HL.
F8DB INC HL Increment HL by one.
F8DC LD B,(HL) B=*HL.
F8DD LD A,($DA17) A=*DA17.
F8E0 CALL $DA85 Call DA85.
F8E3 LD A,($DA18) A=*DA18.
F8E6 CALL $DA8F Call DA8F.
F8E9 LD HL,$D847 HL=D847.
F8EC DEC (HL) Decrease *HL by one.
F8ED JP NZ,$F90F Jump to F90F if *HL is not zero.
F8F0 LD (HL),$06 Write 06 to *HL.
F8F2 LD HL,($D855) HL=*D855.
F8F5 INC HL Increment HL by two.
F8F6 INC HL
F8F7 LD A,(HL) Jump to F90C if *HL is not equal to FF.
F8F8 CP $FF
F8FA JP NZ,$F90C
F8FD LD HL,$D838 HL=Bomb.
F900 SET 2,(HL) Set bit 2 of *HL.
F902 XOR A Write 00 to *D83C.
F903 LD ($D83C),A
F906 CALL $DAB1 Call DAB1.
F909 LD HL,$DA1F Write DA1F to *D855.
F90C LD ($D855),HL
F90F LD A,($D83D) Jump to F958 if *D83D is equal to 00.
F912 CP $00
F914 JP Z,$F958
F917 LD HL,$D844 HL=D844.
F91A DEC (HL) Decrease *HL by one.
F91B JP NZ,$F958 Jump to F958 if *HL is not zero.
F91E LD (HL),$03 Write 03 to *HL.
F920 LD HL,($D857) HL=*D857.
F923 LD C,(HL) C=*HL.
F924 INC HL Increment HL by one.
F925 LD B,(HL) B=*HL.
F926 LD A,($DA19) A=*DA19.
F929 CALL $DA85 Call DA85.
F92C LD A,($DA1A) A=*DA1A.
F92F CALL $DA8F Call DA8F.
F932 LD HL,$D848 HL=D848.
F935 DEC (HL) Decrease *HL by one.
F936 JP NZ,$F958 Jump to F958 if *HL is not zero.
F939 LD (HL),$06 Write 06 to *HL.
F93B LD HL,($D857) HL=*D857.
F93E INC HL Increment HL by two.
F93F INC HL
F940 LD A,(HL) Jump to F955 if *HL is not equal to FF.
F941 CP $FF
F943 JP NZ,$F955
F946 LD HL,$D838 HL=Bomb.
F949 SET 3,(HL) Set bit 3 of *HL.
F94B XOR A Write 00 to *D83D.
F94C LD ($D83D),A
F94F CALL $DAB1 Call DAB1.
F952 LD HL,$DA1F Write DA1F to *D857.
F955 LD ($D857),HL
F958 LD A,($D83E) Jump to F9A1 if *D83E is equal to 00.
F95B CP $00
F95D JP Z,$F9A1
F960 LD HL,$D845 HL=D845.
F963 DEC (HL) Decrease *HL by one.
F964 JP NZ,$F9A1 Jump to F9A1 if *HL is not zero.
F967 LD (HL),$03 Write 03 to *HL.
F969 LD HL,($D859) HL=*D859.
F96C LD C,(HL) C=*HL.
F96D INC HL Increment HL by one.
F96E LD B,(HL) B=*HL.
F96F LD A,($DA1B) A=*DA1B.
F972 CALL $DA85 Call DA85.
F975 LD A,($DA1C) A=*DA1C.
F978 CALL $DA8F Call DA8F.
F97B LD HL,$D849 HL=D849.
F97E DEC (HL) Decrease *HL by one.
F97F JP NZ,$F9A1 Jump to F9A1 if *HL is not zero.
F982 LD (HL),$06 Write 06 to *HL.
F984 LD HL,($D859) HL=*D859.
F987 INC HL Increment HL by two.
F988 INC HL
F989 LD A,(HL) Jump to F99E if *HL is not equal to FF.
F98A CP $FF
F98C JP NZ,$F99E
F98F LD HL,$D838 HL=Bomb.
F992 SET 4,(HL) Set bit 4 of *HL.
F994 XOR A Write 00 to *D83E.
F995 LD ($D83E),A
F998 CALL $DAB1 Call DAB1.
F99B LD HL,$DA1F Write DA1F to *D859.
F99E LD ($D859),HL
F9A1 LD HL,$D839 Jump to F9DD if bit 1 of *D839 is set.
F9A4 BIT 1,(HL)
F9A6 JP NZ,$F9DD
F9A9 LD HL,$D850 HL=D850.
F9AC DEC (HL) Decrease *HL by one.
F9AD JP NZ,$FA49 Jump to FA49 if *HL is not zero.
F9B0 LD (HL),$01 Write 01 to *HL.
F9B2 LD A,($D839) Jump to FA49 if bit 0 of *D839 is set.
F9B5 BIT 0,A
F9B7 JP NZ,$FA49
F9BA LD (HL),$1E Write 1E to *HL.
F9BC LD HL,$D839 HL=D839.
F9BF SET 1,(HL) Set bit 1 of *HL.
F9C1 LD HL,$D815 HL=Timer_DoorTop.
F9C4 RLC (HL) Rotate *HL left (with carry).
F9C6 LD HL,$D839 HL=D839.
F9C9 JP NC,$F9D6 Jump to F9D6 if *HL is higher.
F9CC BIT 7,(HL) Test bit 7 of *HL.
F9CE JP NZ,$F9D6 Jump to F9D6 if *HL is not zero.
F9D1 SET 2,(HL) Set bit 2 of *HL.
F9D3 JP $F9DD Jump to F9DD.
F9D6 RES 2,(HL) Reset bit 2 of *HL.
F9D8 LD A,$FF Write FF to *E264.
F9DA LD ($E264),A
F9DD BIT 2,(HL) Test bit 2 of *HL.
F9DF LD A,$45 A=INK: CYAN, PAPER: BLACK (BRIGHT) .
F9E1 LD ($5809),A Write A to *5809 (attribute buffer location).
F9E4 LD ($580A),A Write A to *580A (attribute buffer location).
F9E7 LD ($580B),A Write A to *580B (attribute buffer location).
F9EA LD ($580C),A Write A to *580C (attribute buffer location).
F9ED LD HL,($D84A) HL=*D84A.
F9F0 LD B,$08 B=08.
F9F2 JP Z,$FA22 Jump to FA22 if *HL is zero.
F9F5 SLA (HL) Shift *HL left two positions (with carry).
F9F7 SLA (HL)
F9F9 JP NC,$FA02 Jump to FA02 if *HL is higher.
F9FC INC H Increment H by one.
F9FD DJNZ $F9F5 Decrease counter by one and loop back to F9F5 until counter is zero.
F9FF JP $FA49 Jump to FA49.
FA02 LD A,($D828) A=*D828.
FA05 CP $01 Jump to FA15 if A is equal to 01.
FA07 JP Z,$FA15
FA0A DEC A Decrease A by one.
FA0B LD ($D828),A Write A to *D828.
FA0E DEC HL Decrease HL by one.
FA0F LD ($D84A),HL Write HL to *D84A.
FA12 JP $F9F5 Jump to F9F5.
FA15 LD HL,$D839 HL=D839.
FA18 RES 1,(HL) Reset bit 1 of *HL.
FA1A LD A,$80 Write 80 to *E264.
FA1C LD ($E264),A
FA1F JP $FA49 Jump to FA49.
FA22 SCF Set the carry flag.
FA23 RR (HL) Rotate *HL right.
FA25 SCF Set the carry flag.
FA26 RR (HL) Rotate *HL right.
FA28 JP C,$FA31 Jump to FA31 if HL is lower.
FA2B INC H Increment H by one.
FA2C DJNZ $FA22 Decrease counter by one and loop back to FA22 until counter is zero.
FA2E JP $FA49 Jump to FA49.
FA31 LD A,($D828) A=*D828.
FA34 CP $04 Jump to FA44 if A is equal to 04.
FA36 JP Z,$FA44
FA39 INC A Increment A by one.
FA3A LD ($D828),A Write A to *D828.
FA3D INC HL Increment HL by one.
FA3E LD ($D84A),HL Write HL to *D84A.
FA41 JP $FA22 Jump to FA22.
FA44 LD HL,$D839 HL=D839.
FA47 RES 1,(HL) Reset bit 1 of *HL.
FA49 LD HL,$D839 HL=D839.
FA4C BIT 3,(HL) Test bit 3 of *HL.
FA4E JP NZ,$FA85 Jump to FA85 if HL is not zero.
FA51 LD HL,$D851 HL=D851.
FA54 DEC (HL) Decrease *HL by one.
FA55 JP NZ,$FB09 Jump to FB09 if *HL is not zero.
FA58 LD (HL),$01 Write 01 to *HL.
FA5A LD A,($D839) A=*D839.
FA5D BIT 0,A Test bit 0 of A.
FA5F JP NZ,$FB09 Jump to FB09 if *HL is not zero.
FA62 LD (HL),$1E Write 1E to *HL.
FA64 LD HL,$D839 HL=D839.
FA67 SET 3,(HL) Set bit 3 of *HL.
FA69 LD HL,$D816 HL=Timer_DoorBottom.
FA6C RLC (HL) Rotate *HL left (with carry).
FA6E LD HL,$D839 HL=D839.
FA71 JP NC,$FA7E Jump to FA7E if *HL is higher.
FA74 BIT 7,(HL) Test bit 7 of *HL.
FA76 JP NZ,$FA7E Jump to FA7E if *HL is not zero.
FA79 SET 4,(HL) Set bit 4 of *HL.
FA7B JP $FA85 Jump to FA85.
FA7E RES 4,(HL) Reset bit 4 of *HL.
FA80 LD A,$FF Write FF to *E28E.
FA82 LD ($E28E),A
FA85 BIT 4,(HL) Test bit 4 of *HL.
FA87 LD A,$45 A=INK: CYAN, PAPER: BLACK (BRIGHT) .
FA89 LD ($5AA9),A Write A to *5AA9 (attribute buffer location).
FA8C LD ($5AAA),A Write A to *5AAA (attribute buffer location).
FA8F LD ($5AAB),A Write A to *5AAB (attribute buffer location).
FA92 LD ($5AAC),A Write A to *5AAC (attribute buffer location).
FA95 LD HL,($D84C) HL=*D84C.
FA98 LD B,$08 B=08.
FA9A JP Z,$FAD6 Jump to FAD6 if *HL is zero.
This entry point is used by the routine at EE61.
FA9D SRL (HL) Shift *HL right.
FA9F SRL (HL) Shift *HL right.
FAA1 JP NC,$FAB0 Jump to FAB0 if *HL is higher.
FAA4 INC H Increment H by one.
FAA5 DJNZ $FA9D Decrease counter by one and loop back to FA9D until counter is zero.
FAA7 LD HL,$D83A HL=Time.
FAAA BIT 7,(HL) Test bit 7 of *HL.
FAAC RET NZ Return if H is not zero.
FAAD JP $FB09 Jump to FB09.
FAB0 LD A,($D829) A=*D829.
FAB3 CP $01 Jump to FAC3 if A is equal to 01.
FAB5 JP Z,$FAC3
FAB8 DEC A Decrease A by one.
FAB9 LD ($D829),A Write A to *D829.
FABC INC HL Increment HL by one.
FABD LD ($D84C),HL Write HL to *D84C.
FAC0 JP $FA9D Jump to FA9D.
FAC3 LD HL,$D839 HL=D839.
FAC6 RES 3,(HL) Reset bit 3 of *HL.
FAC8 LD A,$80 Write 80 to *E28E.
FACA LD ($E28E),A
FACD LD HL,$D83A HL=Time.
FAD0 BIT 7,(HL) Test bit 7 of *HL.
FAD2 RET NZ Return if HL is not zero.
FAD3 JP $FB09 Jump to FB09.
This entry point is used by the routine at EE61.
FAD6 SCF Set the carry flag.
FAD7 RL (HL) Rotate *HL left.
FAD9 SCF Set the carry flag.
FADA RL (HL) Rotate *HL left.
FADC JP C,$FAEB Jump to FAEB if HL is lower.
FADF INC H Increment H by one.
FAE0 DJNZ $FAD6 Decrease counter by one and loop back to FAD6 until counter is zero.
FAE2 LD HL,$D83A HL=Time.
FAE5 BIT 7,(HL) Test bit 7 of *HL.
FAE7 RET NZ Return if H is not zero.
FAE8 JP $FB09 Jump to FB09.
FAEB LD A,($D829) A=*D829.
FAEE CP $04 Jump to FAFE if A is equal to 04.
FAF0 JP Z,$FAFE
FAF3 INC A Increment A by one.
FAF4 LD ($D829),A Write A to *D829.
FAF7 DEC HL Decrease HL by one.
FAF8 LD ($D84C),HL Write HL to *D84C.
FAFB JP $FAD6 Jump to FAD6.
FAFE LD HL,$D839 HL=D839.
FB01 RES 3,(HL) Reset bit 3 of *HL.
FB03 LD HL,$D83A HL=Time.
FB06 BIT 7,(HL) Test bit 7 of *HL.
FB08 RET NZ Return if HL is not zero.
FB09 LD HL,$D839 HL=D839.
FB0C BIT 5,(HL) Test bit 5 of *HL.
FB0E JP NZ,$FB45 Jump to FB45 if HL is not zero.
FB11 LD HL,$D852 HL=D852.
FB14 DEC (HL) Decrease *HL by one.
FB15 JP NZ,$FBDD Jump to FBDD if *HL is not zero.
FB18 LD (HL),$01 Write 01 to *HL.
FB1A LD A,($D839) A=*D839.
FB1D BIT 0,A Test bit 0 of A.
FB1F JP NZ,$FBDD Jump to FBDD if *HL is not zero.
FB22 LD (HL),$1E Write 1E to *HL.
FB24 LD HL,$D839 HL=D839.
FB27 SET 5,(HL) Set bit 5 of *HL.
FB29 LD HL,$D817 HL=Timer_DoorLeft.
FB2C RLC (HL) Rotate *HL left (with carry).
FB2E LD HL,$D839 HL=D839.
FB31 JP NC,$FB3E Jump to FB3E if *HL is higher.
FB34 BIT 7,(HL) Test bit 7 of *HL.
FB36 JP NZ,$FB3E Jump to FB3E if *HL is not zero.
FB39 SET 6,(HL) Set bit 6 of *HL.
FB3B JP $FB45 Jump to FB45.
FB3E RES 6,(HL) Reset bit 6 of *HL.
FB40 LD A,$FF Write FF to *E276.
FB42 LD ($E276),A
FB45 BIT 6,(HL) Test bit 6 of *HL.
FB47 LD A,$45 A=INK: CYAN, PAPER: BLACK (BRIGHT) .
FB49 LD ($5920),A Write A to *5920 (attribute buffer location).
FB4C LD ($5940),A Write A to *5940 (attribute buffer location).
FB4F LD ($5960),A Write A to *5960 (attribute buffer location).
FB52 LD ($5980),A Write A to *5980 (attribute buffer location).
FB55 LD HL,($D84E) HL=*D84E.
FB58 JP Z,$FBA0 Jump to FBA0 if *HL is zero.
FB5B LD A,(HL) Jump to FB93 if *HL is equal to 00.
FB5C CP $00
FB5E JP Z,$FB93
FB61 LD (HL),$00 Write 00 to *HL.
FB63 INC H Increment H by one.
FB64 LD (HL),$00 Write 00 to *HL.
FB66 INC H Increment H by one.
FB67 LD ($D84E),HL Write HL to *D84E.
FB6A LD HL,$D82A HL=D82A.
FB6D DEC (HL) Decrease *HL by one.
FB6E JP NZ,$FBDD Jump to FBDD if *HL is not zero.
FB71 LD (HL),$04 Write 04 to *HL.
FB73 LD HL,($D84E) HL=*D84E.
FB76 LD DE,$07E0 DE=07E0.
FB79 SCF Set the carry flag.
FB7A CCF Invert the carry flag.
FB7B SBC HL,DE HL-=DE (with carry).
FB7D LD ($D84E),HL Write HL to *D84E.
FB80 LD HL,$D82B HL=D82B.
FB83 DEC (HL) Decrease *HL by one.
FB84 JP NZ,$FBDD Jump to FBDD if *HL is not zero.
FB87 LD (HL),$04 Write 04 to *HL.
FB89 LD HL,($D84E) HL=*D84E.
FB8C LD DE,$06E0 HL+=06E0.
FB8F ADD HL,DE
FB90 LD ($D84E),HL Write HL to *D84E.
FB93 LD HL,$D839 HL=D839.
FB96 RES 5,(HL) Reset bit 5 of *HL.
FB98 LD A,$80 Write 80 to *E276.
FB9A LD ($E276),A
FB9D JP $FBDD Jump to FBDD.
FBA0 LD A,(HL) Jump to FBD8 if *HL is not equal to 00.
FBA1 CP $00
FBA3 JP NZ,$FBD8
FBA6 LD (HL),$FF Write FF to *HL.
FBA8 DEC H Decrease H by one.
FBA9 LD (HL),$FF Write FF to *HL.
FBAB DEC H Decrease H by one.
FBAC LD ($D84E),HL Write HL to *D84E.
FBAF LD HL,$D82A HL=D82A.
FBB2 DEC (HL) Decrease *HL by one.
FBB3 JP NZ,$FBDD Jump to FBDD if *HL is not zero.
FBB6 LD (HL),$04 Write 04 to *HL.
FBB8 LD HL,($D84E) HL=*D84E.
FBBB LD DE,$07E0 HL+=07E0.
FBBE ADD HL,DE
FBBF LD ($D84E),HL Write HL to *D84E.
FBC2 LD HL,$D82B HL=D82B.
FBC5 DEC (HL) Decrease *HL by one.
FBC6 JP NZ,$FBDD Jump to FBDD if *HL is not zero.
FBC9 LD (HL),$04 Write 04 to *HL.
FBCB LD HL,($D84E) HL=*D84E.
FBCE LD DE,$06E0 DE=06E0.
FBD1 SCF Set the carry flag.
FBD2 CCF Invert the carry flag.
FBD3 SBC HL,DE HL-=DE (with carry).
FBD5 LD ($D84E),HL Write HL to *D84E.
FBD8 LD HL,$D839 HL=D839.
FBDB RES 5,(HL) Reset bit 5 of *HL.
FBDD LD HL,$D85F HL=D85F.
FBE0 LD B,$0C B=0C.
FBE2 DEC (HL) Decrease *HL by one.
FBE3 CALL Z,$FBEC Call FBEC zero.
FBE6 INC HL Increment HL by one.
FBE7 DJNZ $FBE2 Decrease counter by one and loop back to FBE2 until counter is zero.
FBE9 JP $FC43 Jump to FC43.
FBEC LD (HL),$1E Write 1E to *HL.
FBEE PUSH HL Stash HL on the stack.
FBEF LD HL,$D818 HL=Timer_Crack_01.
FBF2 LD A,$0C A=0C.
FBF4 SUB B A-=B.
FBF5 LD D,$00 D=00.
FBF7 LD E,A E=A.
FBF8 ADD HL,DE HL+=DE.
FBF9 RLC (HL) Rotate *HL left (with carry).
FBFB JP NC,$FC10 Jump to FC10 if HL is higher.
FBFE LD HL,$D839 HL=D839.
FC01 BIT 7,(HL) Test bit 7 of *HL.
FC03 JP NZ,$FC10 Jump to FC10 if HL is not zero.
FC06 LD C,$68 C=68.
FC08 CALL $FC1A Call FC1A.
FC0B LD C,$40 C=40.
FC0D JP $FC32 Jump to FC32.
FC10 LD C,$6D C=6D.
FC12 CALL $FC1A Call FC1A.
FC15 LD C,$FF C=FF.
FC17 JP $FC32 Jump to FC32.
FC1A LD IX,$D6B4 IX=D6B4.
FC1E RLCA RLCA.
FC1F RLCA
FC20 LD E,A E=A.
FC21 ADD IX,DE IX+=DE.
FC23 LD L,(IX+$00) L=*IX+00.
FC26 LD H,(IX+$01) H=*IX+01.
FC29 LD (HL),C Write C to *HL.
FC2A LD L,(IX+$02) L=*IX+02.
FC2D LD H,(IX+$03) H=*IX+03.
FC30 LD (HL),C Write C to *HL.
FC31 RET Return.
FC32 LD IX,$D6E4 IX=D6E4.
FC36 RRCA RRCA.
FC37 LD E,A E=A.
FC38 ADD IX,DE IX+=DE.
FC3A LD L,(IX+$00) L=*IX+00.
FC3D LD H,(IX+$01) H=*IX+01.
FC40 LD (HL),C Write C to *HL.
FC41 POP HL Restore HL from the stack.
FC42 RET Return.
Prev: F801 Up: Map Next: FC43