Prev: 8800 Up: Map Next: 89A6
8900: Verifica se o Score é maior que o Highscore, e pede o nome ao recordista se for
Used by the routine at the_end.
Input
Output
compara_score_com_highscore 8900 LD HL,($C346) Le primeiros dois valores (yyXX) do score em HL
8903 LD DE,($C342) Le primeiros dois valores (yyXX) do highscore em DE
8907 LD A,H Le o primeiro valor (yXXX) do score em A
8908 SUB D Subtrai com D - primeiro valor (XyXX) do highscore
8909 RET C Se der a volta (D > A - Carry = 1) sai
890A LD A,H A = (yXXX) do score
890B CP D Compara com D (yXXX) do highscore
890C JP NZ,compara_score_com_highscore_0 Se for diferente salta para compara_score_com_highscore_0
890F LD A,L A = (XyXX) do score
8910 SUB E Subtrai E - (XyXX) do highscore
8911 RET C Se der a volta (E > A - Carry = 1) sai
8912 LD A,L A = (XyXX) do score
8913 CP E Compara com E (XyXX) do highscore
8914 JP NZ,compara_score_com_highscore_0 Se for diferente salta para compara_score_com_highscore_0
8917 LD HL,($C348) Le os segundos dois valores (XXyy) do score em HL
891A LD DE,($C344) Le os segundos dois valores (XXyy) do highscore em DE
891E LD A,H Le o terceiro valor (XXyX) do score em A
891F SUB D Subtrai com D - terceiro valor (XXyX) do highscore
8920 RET C Se der a volta (D > A - Carry = 1) sai
8921 LD A,H A = (XXyX) do score
8922 CP D Compara com D (XXyX) do highscore
8923 JP NZ,compara_score_com_highscore_0 Se for diferente salta para compara_score_com_highscore_0
8926 LD A,L A = (XXXy) do score
8927 SUB E Subtrai com E - (XXXy) do highscore
8928 RET C Se der a volta (E > A - Carry = 1) sai
8929 LD A,L A = (XXXy) do score
892A CP E Compara com E (XXXy) do highscore
892B JP NZ,compara_score_com_highscore_0 Se for diferente salta para compara_score_com_highscore_0
892E RET Sai
compara_score_com_highscore_0 892F LD DE,$3C00 Define CHARS em $3C00
8932 CALL de_to_chars
8935 LD HL,$89D2 Desenha frame_record_introduza_nome
8938 CALL desenhaFrameHL
compara_score_com_highscore_1 893B LD HL,$89A6 Endereço do recordista em HL
893E LD A,$16 (PRINT AT)
8940 RST $10
8941 LD A,$0C Y = 12
8943 RST $10
8944 LD A,$00 X = 0
8946 RST $10
8947 LD A,$10 INK
8949 RST $10
894A LD A,$06 Amarelo
894C RST $10
894D LD B,$20 Mete B = $20 (32) - Numero de letras permitidas
compara_score_com_highscore_2 894F PUSH BC Guarda BC e HL na Stack
8950 PUSH HL
8951 CALL espera_por_keypress
8954 POP HL Tira HL e BC da Stack
8955 POP BC
8956 LD A,($C34C) Carrega ultima tecla pressionada em A
8959 CP $0D Se pressionou ENTER salta para compara_score_com_highscore_3
895B JP Z,compara_score_com_highscore_3
895E PUSH BC
895F LD (HL),A Escreve o valor de A na posicao de memoria de HL
8960 RST $10 Printa a letra pressionada
8961 NOP
8962 NOP
8963 INC HL Incrementa HL
8964 POP BC
8965 DJNZ compara_score_com_highscore_2 Decrementa B se for diferente de 0 salta para compara_score_com_highscore_2
compara_score_com_highscore_3 8967 PUSH BC
8968 PUSH HL
8969 LD HL,$8A09 Desenha frame_esta_correcto_o_seu_nome
896C CALL desenhaFrameHL
compara_score_com_highscore_4 896F CALL espera_por_keypress
8972 LD A,($C34C) Carrega ultima tecla pressionada em A
8975 CP $6E Compara com $6E - "n" em ASCII
8977 POP HL
8978 POP BC
8979 JP Z,compara_score_com_highscore_6 Se for igual salta para compara_score_com_highscore_6
897C CP $73 Compara com $73 - "s" em ASCII
897E JP Z,compara_score_com_highscore_5 Se for igual salta para compara_score_com_highscore_5
8981 PUSH BC
8982 PUSH HL
8983 JR compara_score_com_highscore_4 Se carregar noutra qualquer salta para compara_score_com_highscore_4
compara_score_com_highscore_5 8985 LD A,$20 Define com $20 - um espaço, o que faltar da recordista ate que B seja 0
8987 LD (HL),A
8988 INC HL
8989 DJNZ compara_score_com_highscore_5
898B LD HL,($C346) Mete o highscore com o valor de score
898E LD ($C342),HL
8991 LD HL,($C348)
8994 LD ($C344),HL
8997 LD A,$05 Delay de 5
8999 CALL delay_em_A
899C RET
compara_score_com_highscore_6 899D LD HL,$8A29 Desenha frame_duas_linhas
89A0 CALL desenhaFrameHL
89A3 JP compara_score_com_highscore_1
Prev: 8800 Up: Map Next: 89A6