diff --git a/scorch.asm b/scorch.asm index 47c3954..3d1b1eb 100644 --- a/scorch.asm +++ b/scorch.asm @@ -316,6 +316,7 @@ START RMTSong song_main_menu jsr Options ;startup screen + jsr SetVariablesFromOptions jsr MakeDarkScreen bit escFlag bmi START diff --git a/scorch.bin b/scorch.bin index e6cff53..3cb45e9 100644 Binary files a/scorch.bin and b/scorch.bin differ diff --git a/scorch.xex b/scorch.xex index acac694..d17166d 100644 Binary files a/scorch.xex and b/scorch.xex differ diff --git a/textproc.asm b/textproc.asm index 33f08d1..9759a89 100644 --- a/textproc.asm +++ b/textproc.asm @@ -109,7 +109,7 @@ OptionsNoLeft OptionsNoRight cmp #@kbcode._ret ; $c ;Return key bne OptionsNoReturn - jmp OptionsFinished + rts ; options selected OptionsNoReturn cmp #@kbcode._tab ; Tab key @@ -119,63 +119,7 @@ OptionsNoReturn sta Gradient OptionsNoTab jmp OptionsMainLoop - -OptionsFinished - ;first option - ldy OptionsTable - iny - iny - sty NumberOfPlayers ;1=1 player (but minimum is 2) - - ;second option (cash) - - - ldy OptionsTable+1 - ldx #0 -@ - lda CashOptionL,y - sta moneyL,x - lda CashOptionH,y - sta moneyH,x - inx - cpx NumberOfPlayers - bne @- - - ;third option (gravity) - ldy OptionsTable+2 - lda GravityTable,y - sta gravity - - ;fourth option (wind) - ldy OptionsTable+3 - lda MaxWindTable,y - sta MaxWind - - ;fifth option (no of rounds) - ldy OptionsTable+4 - lda RoundsTable,y - sta RoundsInTheGame - - ;6th option (shell speed) - ldy OptionsTable+5 - lda flyDelayTable,y - sta flyDelay - - ;7th option (Airstrike after how many missess) - ldy OptionsTable+6 - lda seppukuTable,y - sta seppukuVal - - ;8th option (how aggressive are mountains) - ldy OptionsTable+7 - lda mountainsDeltaTableH,y - sta mountainDeltaH - lda mountainsDeltaTableL,y - sta mountainDeltaL - - - rts - .endp +.endp ;-------- ; inversing selected option (cursor) ;-------- @@ -236,6 +180,66 @@ invertme rts .endp +; -------------------------------------- +; Sets the appropriate variables based on the options table +; +.proc SetVariablesFromOptions + ;first option + ldy OptionsTable + iny + iny + sty NumberOfPlayers ;1=1 player (but minimum is 2) + + ;second option (cash) + + + ldy OptionsTable+1 + ldx #0 +@ + lda CashOptionL,y + sta moneyL,x + lda CashOptionH,y + sta moneyH,x + inx + cpx NumberOfPlayers + bne @- + + ;third option (gravity) + ldy OptionsTable+2 + lda GravityTable,y + sta gravity + + ;fourth option (wind) + ldy OptionsTable+3 + lda MaxWindTable,y + sta MaxWind + + ;fifth option (no of rounds) + ldy OptionsTable+4 + lda RoundsTable,y + sta RoundsInTheGame + + ;6th option (shell speed) + ldy OptionsTable+5 + lda flyDelayTable,y + sta flyDelay + + ;7th option (Airstrike after how many missess) + ldy OptionsTable+6 + lda seppukuTable,y + sta seppukuVal + + ;8th option (how aggressive are mountains) + ldy OptionsTable+7 + lda mountainsDeltaTableH,y + sta mountainDeltaH + lda mountainsDeltaTableL,y + sta mountainDeltaL + + + rts +.endp + ;------------------------------------------- ; call of the purchase (and activate) screens for each tank .proc CallPurchaseForEveryTank