Prev: 6352 Up: Map Next: 6534
638A: Update the screen.
Used by the routines at Vector_HeroInit, HeroInit, GameScrDisplay and HeroInputHandler.
ScreenUpdate 638A DI
638B LD HL,Zeros
638E LD DE,Exits
6391 LD BC,$0004
6394 LDIR
6396 CALL PathIntersect
6399 CALL Screen_DrawStage
639C LD DE,(Hero_Anim)
63A0 LD A,(ThruDoorCounter_E004)
63A3 AND A
63A4 JR NZ,ScreenUpdate_0
63A6 LD A,(ManCamDirection_DFD5)
63A9 LD HL,(CamDirection_DFD2)
63AC LD E,$12
63AE CP L
63AF JR Z,ScreenUpdate_0
63B1 LD E,$13
63B3 ADD A,$02
63B5 AND $03
63B7 CP L
63B8 JR Z,ScreenUpdate_0
63BA LD E,$10
63BC LD A,(ManCamDirection_DFD5)
63BF SUB L
63C0 AND $03
63C2 LD (ManWalkDirection_DFD4),A
63C5 CP $03
63C7 JR NZ,ScreenUpdate_0
63C9 LD A,$02
63CB LD (ManWalkDirection_DFD4),A
ScreenUpdate_0 63CE LD D,$00
63D0 LD (Hero_Anim),DE
63D4 LD A,(ThruDoorCounter_E004)
63D7 AND A
63D8 JR Z,ScreenUpdate_1
63DA CALL Vector_MobilesUpdate1
63DD JR ScreenUpdate_2
ScreenUpdate_1 63DF LD A,(Hero_Anim)
63E2 CALL Vector_MobilesUpdate2
ScreenUpdate_2 63E5 LD A,(BgType)
63E8 AND A
63E9 JR Z,ScreenUpdate_7
63EB LD HL,$5800
63EE LD DE,$5801
63F1 LD BC,$009F
63F4 LD A,(BgType)
63F7 CP $02
63F9 JR NZ,ScreenUpdate_3
63FB LD BC,$00DF
ScreenUpdate_3 63FE LD A,(BgColour)
6401 LD (HL),A
6402 LDIR
6404 INC HL
6405 INC DE
6406 LD A,(BgColour)
6409 RRA
640A RRA
640B RRA
640C AND $07
640E LD B,A
640F LD A,($DFEE)
6412 AND $F8
6414 OR B
6415 LD (HL),A
6416 LD BC,$001F
6419 LDIR
641B INC HL
641C INC DE
641D LD A,($DFEE)
6420 LD (HL),A
6421 LD BC,$013F
6424 LD A,(BgType)
6427 CP $02
6429 JR NZ,ScreenUpdate_4
642B LD BC,$00FF
642E LDIR
6430 LD DE,$40E0
6433 JR ScreenUpdate_5
ScreenUpdate_4 6435 LDIR
6437 LD DE,$40A0
ScreenUpdate_5 643A PUSH DE
643B LD HL,$4000
643E LD DE,$4001
6441 LD BC,$07FF
6444 LD (HL),$00
6446 LDIR
6448 POP DE
6449 LD HL,( BitmapData_d08f)
644C LD BC,BmpStart_E
644F ADD HL,BC
ScreenUpdate_6 6450 PUSH DE
6451 LD BC,$0020
6454 LDIR
6456 POP DE
6457 INC D
6458 LD A,D
6459 AND $07
645B JR NZ,ScreenUpdate_6
645D JP ScreenUpdate_11
ScreenUpdate_7 6460 LD HL,$4000
6463 LD DE,$4001
6466 LD BC,$07FF
6469 LD (HL),$00
646B LDIR
646D LD HL,(CamDirection_DFD2)
6470 LD A,(AreaDataCurrent_CompassOffset)
6473 ADD A,L
6474 AND $03
6476 LD L,A
6477 LD H,$00
6479 ADD HL,HL
647A ADD HL,HL
647B ADD HL,HL
647C EX DE,HL
647D LD IX,SkyColours
6481 ADD IX,DE
6483 LD HL,$5800
6486 LD DE,$5801
6489 LD A,$08
ScreenUpdate_8 648B EX AF,AF'
648C LD A,(IX+$00)
648F LD (HL),A
6490 LD BC,$001F
6493 LDIR
6495 INC IX
6497 INC HL
6498 INC DE
6499 EX AF,AF'
649A DEC A
649B JR NZ,ScreenUpdate_8
649D LD (HL),$30
649F LD BC,$00FF
64A2 LDIR
64A4 LD B,$30
64A6 LD C,$00
64A8 LD HL,$00D1
64AB XOR A
64AC CALL Vector_BlitBitmap
64AF LD A,(CamDirection_DFD2)
64B2 LD HL,(AreaDataCurrent_CompassOffset)
64B5 ADD A,L
64B6 AND $03
64B8 ADD A,$D2
64BA LD B,$18
64BC CP $D4
64BE JR NZ,ScreenUpdate_9
64C0 LD HL,$00AD
64C3 XOR A
64C4 LD C,$80
64C6 CALL Vector_BlitBitmap
64C9 LD B,$20
64CB LD A,$D4
ScreenUpdate_9 64CD PUSH AF
64CE LD L,A
64CF LD H,$00
64D1 XOR A
64D2 LD C,A
64D3 CALL Vector_BlitBitmap
64D6 POP AF
64D7 CP $D2
64D9 JR NZ,ScreenUpdate_10
64DB LD HL,$00D6
64DE LD B,$10
64E0 LD C,$40
64E2 XOR A
64E3 CALL Vector_BlitBitmap
ScreenUpdate_10 64E6 LD A,(CamDirection_DFD2)
64E9 LD HL,(AreaDataCurrent_CompassOffset)
64EC ADD A,L
64ED BIT 0,A
64EF JR Z,ScreenUpdate_11
64F1 LD HL,$00CF
64F4 LD B,$08
64F6 LD C,$00
64F8 XOR A
64F9 CALL Vector_BlitBitmap
Draw Compass
ScreenUpdate_11 64FC DEFB $21,$C9,$00,$06,$80,$0E,$00,$AF Blit the compass image
6504 DEFB $CD,$0F,$7B
Update Compass
6507 DEFB $2A,$D2,$DF,$3A,$E9,$DF,$85,$E6 Get camera direction and offset to get true NORTH for area.
650F DEFB $03
6510 DEFB $6F,$26,$00,$11,$72,$63,$19 Using the true compass point work out which letter is needed for the top of the compass.
6517 DEFB $11,$7A,$63,$0E,$04,$06,$07 Pointer to string holding ascii codes for positioning letter at top of compass. Made up of seven characters.
ScreenUpdate_DisplayCompass 651E DEFB $1A,$CD,$25,$89,$13,$10,$F9 Use ascii characters to position cursor.
6525 DEFB $7E,$CD,$25,$89,$23 Now print the expected compass letter.
652A DEFB $06,$03,$0D,$20,$EF From now on position codes are made up of three characters.
Blit offscreen to the DF.
652F CALL Vector_OffScrBlit
6532 EI
6533 RET
Prev: 6352 Up: Map Next: 6534