Prev: E352 Up: Map Next: E5B0
E396: Routine at E396
Used by the routine at F39E.
E396 LD A,($E5B2) A=*Data_Control.
E399 LD HL,$D834 HL=D834.
E39C CP $01 Jump to E3F9 if A is not equal to 01.
E39E JR NZ,$E3F9
E3A0 LD A,($D82D) A=*D82D.
E3A3 CP $0F Compare A with 0F.
E3A5 JP P,$E53C Jump to E53C P.
E3A8 CP $02 Compare A with 02.
E3AA JR NZ,$E3F0 Jump to E3F0 if A is not zero.
E3AC LD A,($D82C) Compare *D82C with 02.
E3AF CP $02
E3B1 LD A,($D82D) A=*D82D.
E3B4 JR NZ,$E3F0 Jump to E3F0 if *D82C is not equal to 02.
E3B6 ADD A,$04 A+=04.
E3B8 LD ($D82D),A Write A to *D82D.
E3BB INC (HL) Increment *HL by one.
E3BC LD A,$00 Write 00 to *PlayerCursor_Flag.
E3BE LD ($D835),A
E3C1 LD A,$2F A=INK: WHITE, PAPER: CYAN .
E3C3 CALL ColouriseHome Call ColouriseHome.
E3C6 LD HL,$D82F HL=PlayerCursor_X_Position.
E3C9 INC (HL) Increment *HL by one.
E3CA LD B,$03 B=03.
E3CC PUSH BC Stash BC and HL on the stack.
E3CD PUSH HL
E3CE CALL Draw_Cursor Call Draw_Cursor.
E3D1 CALL $E66A Call E66A.
E3D4 CALL $E5B3 Call E5B3.
E3D7 HALT Halt operation (suspend CPU until the next interrupt).
E3D8 CALL Remove_PlayerCursorAttributes Call Remove_PlayerCursorAttributes.
E3DB POP HL Restore HL and BC from the stack.
E3DC POP BC
E3DD INC (HL) Increment *HL by one.
E3DE DJNZ $E3CC Decrease counter by one and loop back to E3CC until counter is zero.
E3E0 CALL Display_PlayerCursor Call Display_PlayerCursor.
E3E3 LD A,($D82C) Write *D82C to *D830.
E3E6 LD ($D830),A
E3E9 LD A,($D82D) Write *D82D to *D831.
E3EC LD ($D831),A
E3EF RET Return.
E3F0 ADD A,$04 A+=04.
E3F2 LD ($D82D),A Write A to *D82D.
E3F5 INC (HL) Increment *HL by one.
E3F6 JP $E53C Jump to E53C.
E3F9 CP $02 Jump to E454 if A is not equal to 02.
E3FB JR NZ,$E454
E3FD LD A,($D82D) A=*D82D.
E400 CP $05 Compare A with 05.
E402 JP M,$E53C Jump to E53C M.
E405 CP $06 Jump to E44B if A is not equal to 06.
E407 JR NZ,$E44B
E409 LD A,($D82C) A=*D82C.
E40C CP $02 Compare A with 02.
E40E LD A,($D82D) A=*D82D.
E411 JR NZ,$E44B Jump to E44B if A is not zero.
E413 SUB $04 A-=04.
E415 LD ($D82D),A Write A to *D82D.
E418 DEC (HL) Decrease *HL by one.
E419 CALL Remove_PlayerCursor Call Remove_PlayerCursor.
E41C LD HL,$D82F HL=PlayerCursor_X_Position.
E41F LD B,$04 B=04.
E421 CP $02 Jump to E3FD if A is equal to 02.
E423 JR Z,$E3FD
E425 PUSH BC Stash BC and HL on the stack.
E426 PUSH HL
E427 CALL Draw_Cursor Call Draw_Cursor.
E42A CALL $E66A Call E66A.
E42D CALL $E5B3 Call E5B3.
E430 HALT Halt operation (suspend CPU until the next interrupt).
E431 CALL Remove_PlayerCursorAttributes Call Remove_PlayerCursorAttributes.
E434 POP HL Restore HL and BC from the stack.
E435 POP BC
E436 DEC (HL) Decrease *HL by one.
E437 DJNZ $E425 Decrease counter by one and loop back to E425 until counter is zero.
E439 LD A,$00 Write 00 to *PlayerCursor_Flag.
E43B LD ($D835),A
E43E LD A,($D82C) Write *D82C to *D830.
E441 LD ($D830),A
E444 LD A,($D82D) Write *D82D to *D831.
E447 LD ($D831),A
E44A RET Return.
E44B SUB $04 A-=04.
E44D LD ($D82D),A Write A to *D82D.
E450 DEC (HL) Decrease *HL by one.
E451 JP $E53C Jump to E53C.
E454 CP $04 Jump to E47B if A is not equal to 04.
E456 JR NZ,$E47B
E458 LD A,($D82C) A=*D82C.
E45B CP $0F Compare A with 0F.
E45D JP P,$E53C Jump to E53C P.
E460 CP $02 Jump to E46F if A is not equal to 02.
E462 JR NZ,$E46F
E464 LD A,($D82D) Jump to E53C if *D82D is equal to 02.
E467 CP $02
E469 JP Z,$E53C
E46C LD A,($D82C) A=*D82C.
E46F ADD A,$04 A+=04.
E471 LD ($D82C),A Write A to *D82C.
E474 LD A,(HL) A=*HL.
E475 ADD A,$07 A+=07.
E477 LD (HL),A Write A to *HL.
E478 JP $E53C Jump to E53C.
E47B CP $08 Jump to E4A2 if A is not equal to 08.
E47D JR NZ,$E4A2
E47F LD A,($D82C) A=*D82C.
E482 CP $05 Compare A with 05.
E484 JP M,$E53C Jump to E53C M.
E487 CP $06 Jump to E496 if A is not equal to 06.
E489 JR NZ,$E496
E48B LD A,($D82D) Jump to E53C if *D82D is equal to 02.
E48E CP $02
E490 JP Z,$E53C
E493 LD A,($D82C) A=*D82C.
E496 SUB $04 A-=04.
E498 LD ($D82C),A Write A to *D82C.
E49B LD A,(HL) A=*HL.
E49C SUB $07 A-=07.
E49E LD (HL),A Write A to *HL.
E49F JP $E53C Jump to E53C.
E4A2 CP $05 Jump to E4C5 if A is not equal to 05.
E4A4 JR NZ,$E4C5
E4A6 LD A,($D82D) A=*D82D.
E4A9 CP $0F Compare A with 0F.
E4AB JP P,$E458 Jump to E458 P.
E4AE CP $02 Jump to E4BD if A is not equal to 02.
E4B0 JR NZ,$E4BD
E4B2 LD A,($D82C) Jump to E3A0 if *D82C is equal to 02.
E4B5 CP $02
E4B7 JP Z,$E3A0
E4BA LD A,($D82D) A=*D82D.
E4BD ADD A,$04 A+=04.
E4BF LD ($D82D),A Write A to *D82D.
E4C2 INC (HL) Increment *HL by one.
E4C3 JR $E458 Jump to E458.
E4C5 CP $06 Jump to E4E9 if A is not equal to 06.
E4C7 JR NZ,$E4E9
E4C9 LD A,($D82D) A=*D82D.
E4CC CP $05 Compare A with 05.
E4CE JP M,$E458 Jump to E458 M.
E4D1 CP $06 Jump to E4E0 if A is not equal to 06.
E4D3 JR NZ,$E4E0
E4D5 LD A,($D82C) Jump to E3FD if *D82C is equal to 02.
E4D8 CP $02
E4DA JP Z,$E3FD
E4DD LD A,($D82D) A=*D82D.
E4E0 SUB $04 A-=04.
E4E2 LD ($D82D),A Write A to *D82D.
E4E5 DEC (HL) Decrease *HL by one.
E4E6 JP $E458 Jump to E458.
E4E9 CP $09 Jump to E512 if A is not equal to 09.
E4EB JR NZ,$E512
E4ED LD A,($D82D) A=*D82D.
E4F0 CP $0F Compare A with 0F.
E4F2 JP P,$E47F Jump to E47F P.
E4F5 CP $02 Jump to E509 if A is not equal to 02.
E4F7 JR NZ,$E509
E4F9 LD A,($D82C) Jump to E3A0 if *D82C is equal to 06.
E4FC CP $06
E4FE JP Z,$E3A0
E501 CP $02 Jump to E3A0 if *D82C is equal to 02.
E503 JP Z,$E3A0
E506 LD A,($D82D) A=*D82D.
E509 ADD A,$04 A+=04.
E50B LD ($D82D),A Write A to *D82D.
E50E INC (HL) Increment *HL by one.
E50F JP $E47F Jump to E47F.
E512 CP $0A Compare A with 0A.
E514 JP NZ,$F43E Jump to F43E if A is not zero.
E517 LD A,($D82D) A=*D82D.
E51A CP $05 Compare A with 05.
E51C JP M,$E47F Jump to E47F M.
E51F CP $06 Compare A with 06.
E521 JR NZ,$E533 Jump to E533 if A is not zero.
E523 LD A,($D82C) A=*D82C.
E526 CP $06 Compare A with 06.
E528 JP Z,$E53C Jump to E53C if A is zero.
E52B CP $02 Compare A with 02.
E52D JP Z,$E3FD Jump to E3FD if A is zero.
E530 LD A,($D82D) A=*D82D.
E533 SUB $04 A-=04.
E535 LD ($D82D),A Write A to *D82D.
E538 DEC (HL) Decrease *HL by one.
E539 JP $E47F Jump to E47F.
E53C CALL $E2CA Call E2CA.
E53F LD A,($D82C) Write *D82C to *D830.
E542 LD ($D830),A
E545 LD A,($D82D) Write *D82D to *D831.
E548 LD ($D831),A
E54B LD A,R A=the contents of the Memory Refresh Register.
E54D RLCA RLCA.
E54E LD L,A L=A.
E54F LD H,$00 H=00.
E551 LD B,$46 B=46.
E553 LD D,$05 D=05.
E555 LD A,(HL) A=*HL.
E556 AND %00011000 Keep only bits 3-4.
E558 OR %00000101 Set bits 0, 2.
E55A OUT ($FE),A Set border to the colour held by A.
E55C INC HL Increment HL by one.
E55D PUSH BC Stash BC on the stack.
E55E LD B,D B=D.
E55F DJNZ $E55F Decrease counter by one and loop back to E55F until counter is zero.
E561 POP BC Restore BC from the stack.
E562 DJNZ $E555 Decrease counter by one and loop back to E555 until counter is zero.
E564 HALT Halt operation (suspend CPU until the next interrupt).
E565 LD A,($D82C) Jump to E575 if *D82C is equal to *PlayerCursor_Y_Position.
E568 LD HL,$D82E
E56B CP (HL)
E56C JR Z,$E575
E56E JP P,$E574 Jump to E574 P.
E571 DEC (HL) Decrease *HL by one.
E572 JR $E575 Jump to E575.
E574 INC (HL) Increment *HL by one.
E575 LD A,($D82D) Jump to E585 if *D82D is equal to *PlayerCursor_X_Position.
E578 LD HL,$D82F
E57B CP (HL)
E57C JR Z,$E585
E57E JP P,$E584 Jump to E584 P.
E581 DEC (HL) Decrease *HL by one.
E582 JR $E585 Jump to E585.
E584 INC (HL) Increment *HL by one.
E585 LD A,($D82E) Jump to E53C if *PlayerCursor_Y_Position is not equal to *D82C.
E588 LD HL,$D82C
E58B CP (HL)
E58C JR NZ,$E53C
E58E LD A,($D82F) Jump to E53C if *PlayerCursor_X_Position is not equal to *D82D.
E591 LD HL,$D82D
E594 CP (HL)
E595 JR NZ,$E53C
E597 LD A,R L=the contents of the Memory Refresh Register.
E599 LD L,A
E59A LD H,$0A H=0A.
E59C LD B,$23 B=23.
E59E LD C,$64 C=64.
E5A0 LD A,(HL) A=*HL.
E5A1 INC HL Increment HL by one.
E5A2 AND %00011000 Keep only bits 3-4.
E5A4 OR %00000101 Set bits 0, 2.
E5A6 OUT ($FE),A Set border to the colour held by A.
E5A8 PUSH BC Stash BC on the stack.
E5A9 LD B,C B=C.
E5AA DJNZ $E5AA Decrease counter by one and loop back to E5AA until counter is zero.
E5AC POP BC Restore BC from the stack.
E5AD DJNZ $E5A0 Decrease counter by one and loop back to E5A0 until counter is zero.
E5AF RET Return.
Prev: E352 Up: Map Next: E5B0