From 92b9c966939f36273823d762d5a0ac7cbcb83618 Mon Sep 17 00:00:00 2001 From: Pecusx Date: Sat, 31 May 2025 20:04:58 +0200 Subject: [PATCH] Scores and name input with one little problem --- lumber.asm | 98 ++++++++++++++++++++++++++++++++++++++++++++++++++++- lumber.xex | Bin 32873 -> 33104 bytes 2 files changed, 97 insertions(+), 1 deletion(-) diff --git a/lumber.asm b/lumber.asm index d4efc81..b3930d9 100644 --- a/lumber.asm +++ b/lumber.asm @@ -1485,6 +1485,13 @@ training_mode sta dmactls mva #%00000011 GRACTL pause 1 + lda Difficulty + bne training_mode2 + lda NewHiScorePosition + cmp #5 + beq training_mode2 + jsr EnterPlayerName ; enter name only in normal game mode and if there are new score +training_mode2 OverLoop jsr GetKey cmp #@kbcode._space @@ -1853,7 +1860,90 @@ no_in_hiscore ; great success!! rts .endp - +;-------------------------------------------------- +.proc EnterPlayerName +;-------------------------------------------------- + ; initial variables - "A" on first position + mva #0 PositionInName + mva #1 CharCode ; 1 = "A" + mva NewHiScorePosition ScorePosition ; HiScore table position (0-4) + jsr PrepareScores.InMemoryCacl ; position in temp (word) + adw temp #5 ; after points + ; clear name + lda #0 + ldy #4 +@ sta (temp),y + dey + bpl @- +input_name_loop + jsr PrepareScores.InMemoryCacl ; position in temp (word) + adw temp #5 ; after points + jsr PrepareScores.OnScreenCacl ; positiom in temp2 (word) + adw temp2 #10 ; after points + ldy PositionInName + ldx CharCode + lda char_ascii,x + sta (temp),y + ; display name on Game Over screen + ldx #5 ; 5 characters + jsr TextToScreen + pause 1 + jsr GetKey + cmp #@kbcode._left + beq leftkey + cmp #@kbcode._right + beq rightkey + cmp #@kbcode._space + bne input_name_loop + beq next_char +leftkey + ldx CharCode + dex + bne not_minimal ; check for lowart than A (not space) + ldx #char_count +not_minimal +not_maximal + stx CharCode + jmp input_name_loop +rightkey + ldx CharCode + inx + cpx #char_count+1 + bne not_maximal + ldx #1 ; A (not space) + bne not_maximal +next_char + ; space / fire pressed + ; next character or DEL or end of name + lda CharCode + cmp #char_count ; DEL + bne no_del + ; backspace :) + ; set current char to space (clear) + jsr PrepareScores.InMemoryCacl ; position in temp (word) + adw temp #5 ; after points + ldy PositionInName + bne no_first_char + ; first char in name - nothing to do + jmp input_name_loop +no_first_char + lda char_ascii ; first char i table = space + sta (temp),y ; clear current char + dey + sty PositionInName + jmp input_name_loop +no_del + inc PositionInName + lda PositionInName + cmp #5 ; last character in name + beq end_of_name + ; set naxt char to space - no .. no change charcode + ldx CharCode + bne not_maximal +end_of_name + mva #5 NewHiScorePosition ; name entered, set color to standard + rts +.endp ;-------------------------------------------------- .proc AudioInit ;-------------------------------------------------- @@ -2768,6 +2858,10 @@ ScorePosition .ds 1 ; line number in hi-score list (0-4) NewHiScorePosition .ds 1 ; line number in hi-score list (0-4) +PositionInName + .ds 1 ; position in player name +CharCode + .ds 1 ; input character code in player name ;-------------------------------------------------- .proc MenuAnimationsReset ;-------------------------------------------------- @@ -3755,6 +3849,8 @@ hs_pos5 .by "0000000090 TDC " hs_posX .by "0000000000 NEW " ; buffer for last score +hs_def_name + .by "A " ;------------------------------------------------- ;RMT PLAYER variables track_variables diff --git a/lumber.xex b/lumber.xex index 68c18827f2ce778a5a7a92e2db09813e5fa6f70a..757bb3028aa0de4018218103509f4de86afcacb6 100644 GIT binary patch delta 4179 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 delta 4021 zcma)9e{@sT9Zz18HZ8P`qEHIO*H#_X!HRga0+rAmMKMJ{ksqTF!Io7gbn2XPgoL)Q zv`KE7+?OV|KVIpg(Y~C$N@Xf#eabJfDFTn;6n9qFoo%(9tiJ8+D0rOgd*6dX)IZjf z-rVo^^Z9gyoniV z=I>oOlj%VGhLv-3hmqsd3+(&I8M~n{RVj-JN~V-PSa?CnVN3k{Yby(;Zt;tsavjGz zVtcPZX>6mPA71&Ii{S1sR%Z@d)a=n=i(-x%)Rf_Lg^61HVa&?dk+VZ0I5A6^BN`CF zG_gs|OBj_Kq84hTs!Y@{K^+g%bP(1Z!K!U^cse99_#>Ddz>eiRG=0-gwO|M~>fXta zBXQ%ti&a^u1@FK9k#|f?JLVr>a}Pgh%_`d6v<8{mae~o&g=<$)!=xDpbi+)I{Y%$< z%{)>ZX6rcC9cIsZMFU$MX5Xx3vw7-s)`?c?hyv_&#B1Rr+NfhP=V+)EFL54mCkUWa z0kgF}Htb{5{A_1{4{caFYZBKaM!0}uex0}i-E9}2Ma6dUCfyk|@|!BA-o&12PNb;j zM5>Y&3qEM%f(~n)ljfxKY#?Pwk&&Otw6L=(zY*wG+RJz@qGD|q?Cm)xsDy8Di@@!f=t8S6$O4hK6x{}B0)D!6%)=}f?lF}V{H^@+fTvZRq*vJvRh)YFDcS{y@7z3p zW>uJ`ROf<%Yd3VrP6=OZo-qZ^i)%KS?$6zlTe;nHd=ET-orWHF)G%~cM756o?MKR& zD(jRtMpPzPBiBbpY7}Oq7P{S$BI^}n#0}2fR7)FXk9ycYd7|lTg=f4COKmt|Q9gHy z=Q%f=kGsLpx^x zKGV}7INUAjx`bIR(PB=uVE~|Nam+oI!qvofj~TdH@J_hg`IQ^J5jo7VSO2-&(oQ^|CLTCC@>^;{|dF68=&kmqD91VEY_`-sTR7 zo48)-(^BrR^ygCUNYpHsBVl9yfbA>D_og&l%Do%4%0qd%n~^XCQU3wPNM7z!NEo3O zB^&}*HP~8^k$cOzdUZTL@y`!eE=mOrHW?wlVCx*qdjYr<@T<4xG>`0{FYFD z!+=e7MpI*L*;Upq*~kaBveptmyTwm01P8Y6b-9~b3cjqpI|ZpNdd!#Vpb{${K^6o1i2WArh zbr^A2s>P@dt1wS$7QLk#Rjc+DAN8PG>}27l3|GNR>P1-BGN+U^SZG#KrL@5W@7>)u9R+;=wf+qc>lucZlmca zG3@`>FAEq3o|~!9Ij7!Fdfpe75z!zlC!$eUMMSqyNqFCL^IWTlQYzn1xD)a+!hO)U zoP4{S^qk<7!o`UaHFMvc!egYr=ftwYT@av!UZE_jRNxa+3RPh}88#`ui=E>>K}U$A zTu3ZdX8>?WO-sM+HmK&9BtQ=6KyK*Al%h#sbLYTxInK7j;L|7$;MsP^wsr^8F;Mh% zUnMEJz*Y;6^#W*!{Sm7492K4<-06P!-bOeDSMOOO_(^9vI52U+OwjFp1ZHD0LHCj&zU|W~o!8w@CKW zZxD0