Prev: 62FF Up: Map Next: 63CB
630F: Routine at 630F
630F LD B,$02 B=$02
6311 PUSH BC Stores BC on the stack
6312 XOR A Clear A (sets to $00)
6313 LD ($5DF0),A CURRENT_LEVEL=A
6316 LD A,$04 A=Number of lives for 1UP on starting a game
6318 LD ($5DF1),A Updates 1UP_CURRENT_LIVES with the number of starting lives
631B CALL LEVEL_INIT_3
631E CALL LEVEL_INIT_14
6321 POP BC
6322 DJNZ $6311 Decrease B by one, jump to 6311 if not zero
6324 LD A,$05 A=Number of lives for 2UP on starting a game
6326 LD ($5DF9),A Updates 2UP_CURRENT_LIVES with the number of starting lives
6329 LD A,($5CF3) A=GAME_TYPE
632C AND $01 Return if this is a 2UP game
632E RET NZ
632F LD ($5DF9),A Sets 2UP_CURRENT_LIVES to zero (as a 1UP game is in progress)
6332 RET Return
This entry point is used by the routine at LEVEL_INIT.
6333 LD HL,$5CF4 HL=1UP_SCORE_1ST
6336 LD BC,$6000 BC=6000
6339 CALL CLEAR_PIXELS_0
633C CALL $630F
633F CALL $698B
6342 CALL LEVEL_INIT_1
This entry point is used by the routine at 63DA.
6345 LD SP,$5CF0 Change the stack pointer to HIGH_SCORE
6348 EI Enable interrupts
6349 LD IX,$5D30 IX=5D30
634D XOR A Clear A (sets to $00)
634E LD ($5DCB),A Writes A to 5DCB
This entry point is used by the routine at 63DA.
6351 LD A,($5C78)
6354 LD C,A
6355 LD A,($5DD4)
6358 CP C
6359 CALL NZ,$6965
635C LD HL,$69A8
635F PUSH HL
6360 LD HL,$6374
6363 LD A,(IX+$00)
6366 RLCA
6367 AND $7E
This entry point is used by the routine at 63DA.
6369 LD C,A
636A LD B,$00
636C ADD HL,BC
636D LD A,(HL)
636E INC HL
636F LD H,(HL)
6370 LD L,A
6371 JP $5CB0
6374 DEC DE
6375 LD L,C
6376 OR D
6377 LD (HL),E
6378 LD (HL),C
6379 LD (HL),L
637A OUT ($6D),A
637C RRA
637D LD H,L
637E PUSH AF
637F LD L,H
6380 CPL
6381 LD L,H
6382 JP C,$B163
6385 LD L,B
6386 RLCA
6387 LD H,A
6388 RST $00
6389 LD H,(HL)
638A EX DE,HL
638B LD H,(HL)
638C LD D,H
638D LD L,B
638E LD C,E
638F LD L,B
6390 SBC A,B
6391 LD H,H
6392 RST $28
6393 LD L,D
6394 CALL M,$6C6F
6397 LD L,D
This entry point is used by the routine at LEVEL_INIT.
6398 LD HL,($5CF4)
639B LD DE,($5CF7)
639F LD A,L
63A0 LD L,H
63A1 LD H,A
63A2 LD A,E
63A3 LD E,D
63A4 LD D,A
63A5 AND A
63A6 SBC HL,DE
63A8 JR C,COMPARE_2UP_SCORE
63AA JR NZ,COMPARE_1UP_SCORE
63AC LD A,($5CF6) E=1UP_SCORE_3RD
63AF LD E,A
63B0 LD A,($5CF9) Compare E with 2UP_SCORE_3RD
63B3 CP E
63B4 JR C,COMPARE_1UP_SCORE Jump if carry flag is set to COMPARE_1UP_SCORE
Tests to see if the highscore has been beaten by 2UP.
COMPARE_2UP_SCORE 63B6 LD HL,$5CF7 HL=2UP_SCORE_1ST
This entry point is used by the routine at UPDATE_HIGHSCORE.
CHECK_HIGHSCORE 63B9 PUSH HL Push HL onto the stack (see UPDATE_HIGHSCORE)
63BA LD DE,$5CF0 DE=HIGH_SCORE
63BD LD B,$03 B=$03
63BF LD A,(DE) Compare A against HIGH_SCORE
63C0 CP (HL)
63C1 JR C,UPDATE_HIGHSCORE If it's higher, update the highscore
63C3 JR NZ,$63C9 Jump if not zero to 63C9 (so if it's less than the current highscore)
63C5 INC HL Increase HL by one
63C6 INC DE Increase DE by one
63C7 DJNZ $63BF Decrease B by one, jump to 63BF if not zero
63C9 POP HL Fetch HL off the stack (to clear it)
63CA RET Return
Prev: 62FF Up: Map Next: 63CB