From 096bce6e8803aa46abca292702e32df0d6759447 Mon Sep 17 00:00:00 2001 From: pkali Date: Mon, 7 Nov 2022 01:13:37 -0500 Subject: [PATCH] main menu does not blink --- scorch.xex | Bin 48751 -> 48679 bytes textproc.asm | 117 +++++++++++++++++++++++---------------------------- weapons.asm | 4 +- 3 files changed, 54 insertions(+), 67 deletions(-) diff --git a/scorch.xex b/scorch.xex index 656eae32b3309f80549718d97134d458649b9f0b..9c4fcd4b98e69f3ccfc03f239b9d7dfc1773edab 100644 GIT binary patch delta 6454 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 TmKdS|cUeXe^({_Ek-=A~cKL%K5_wgC=b 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 diff --git a/textproc.asm b/textproc.asm index 939ee1e..5154f0b 100644 --- a/textproc.asm +++ b/textproc.asm @@ -168,77 +168,64 @@ OptionsFinished rts + .endp ;-------- ; inversing selected option (cursor) ;-------- -OptionsInversion - ;clean options loop - ;TODO: (optionally) - convert to single byte loop if no new options - mwa #OptionsHere temp - ldy #0 -OptionsInversionLoop1 - lda (temp),y - and #$7F - sta (temp),y - inw temp - cpw temp #OptionsScreenEnd - bne OptionsInversionLoop1 - ;here all past inversions are gone... - - mwa #OptionsHere temp - mva #0 temp2 ;option number pointer - adw temp #10 ;offset of the first option=11 +.proc OptionsInversion +YPos = temp2 +XPos = temp2+1 +optionWidth = 6 +nameWidth = 10 + mwa #OptionsHere temp ; offset of the first option=11 + mva #0 YPos ;option number pointer + mva #0 Xpos ;X position in the menu + tay ; Y is zero here... OptionsSetMainLoop - ldx temp2 - lda OptionsTable,x - asl - asl - adc OptionsTable,x ;OptionsTable value * 5 - adc OptionsTable,x ;OptionsTable value * 6 - tay - ldx #6-1 ; width of the highlight bar (6 chars) -OptionSetLoop - lda (temp),y - ora #$80 - sta (temp),y - iny - dex - bpl OptionSetLoop ;here option is highlighted -; -; next option - adw temp #40 ;jump to next line - inc:lda temp2 - cmp #maxOptions ;number of options - bne OptionsSetMainLoop - + ldx YPos ; Y position in the menu ;inversing the first few chars of the selected line (OptionsY) - mva OptionsY temp - mva #0 temp+1 - asl temp - rol temp+1 - asl temp - rol temp+1 - asl temp - rol temp+1 - mwa temp temp2 ;here is OptionsY*8 - asl temp - rol temp+1 - asl temp - rol temp+1 - ;here is 32*OptionsY - adw temp temp2 - ;in temp is 40*OptionsY - adw temp #OptionsHere - ;now in temp is adres of the line to be inversed - ldy #8 ;9 letters to invers -OptionsYLoop - lda (temp),y - ora #$80 + cpx OptionsY + jsr _inverter + cpy #nameWidth-1 + bne OptionsSetMainLoop + adw temp #nameWidth + ldy #0 + +OptionsLoop + lda XPos + cmp OptionsTable,x + jsr _inverter + cpy #optionWidth ; width of the option highlight + bne OptionsLoop + ldy #0 + ; next X position of the + adw temp #optionWidth ; width of the option highlight + inc:lda XPos + cmp #5 ; number of options in a row + bne OptionsLoop + ; next line + ;adw temp #nameWidth ; beginning of the next line + mva #0 Xpos + tay + inc:lda Ypos + cmp #maxOptions + bne OptionsSetMainLoop + rts + +_inverter + beq invertme + ; clean inversion otherwise + lda (temp),y + and #$7f ; clear the top bit sta (temp),y - dey - bpl OptionsYLoop - - + bpl @+ ; JMP +invertme + lda (temp),y + ora #$80 ; set the top bit + sta (temp),y +@ + ; next character in an option + iny rts .endp diff --git a/weapons.asm b/weapons.asm index 7aafbf7..8e12e4c 100644 --- a/weapons.asm +++ b/weapons.asm @@ -2428,9 +2428,9 @@ InverseScreenByte ; ------------------------------------------------- ; Let's designate the flight altitude. jsr CheckMaxMountain - cmp #(12+18) ; tank witch shield (12) and max alt (18) check + cmp #(12+18) ; tank with shield (12) and max alt (18) check bcc IsToHigh - sbc #12 ; tank witch shield high correction + sbc #12 ; tank with shield high correction bne StoreMaxAlt IsToHigh lda #18