diff --git a/display.asm b/display.asm index 7467f02..0d9e740 100644 --- a/display.asm +++ b/display.asm @@ -1,10 +1,58 @@ ; @com.wudsn.ide.asm.mainsourcefile=scorch.asm .IF *>0 ;this is a trick that prevents compiling this file alone +; ------------------------------------------------- + ; .ALIGN $1000 ; WARNING!!!! 4KiB barrier crossing here, might need reassignment!!! +;----------------------------------------------- +;------------------------ +; start of "variables" (RAM) +; --------------- +OptionsHere + ; 0123456789012345678901234567890123456789 + dta d"Players : 2 3 4 5 6 " + dta d"Cash : none 2K 8K 12K 20K " + dta d"Gravity : 0.2G 0.5G 1G 2G 4G " + dta d"Wind : 1B 3B 5B 7B 9B " + dta d"Rounds : 10 20 30 40 50 " + dta d"Missiles : slug slow norm fast hare " + dta d"Seppuku : nevr rare norm oftn alws " + dta d"Mountains: NL BE CZ CH NP " +OptionsScreenEnd +;----------------------------------------------- +ListOfWeapons + :36 dta d" " +ListOfWeapons1End +ListOfDefensiveWeapons + :16 dta d" " +ListOfDefensiveWeaponsEnd ;constant useful when clearing +NameScreen + dta d" Enter names of players " + dta d" Tank 01 Name:" +NameAdr + dta d" " + dta d" Human/Atari (difficulty level) " + dta d" " +NamesOfLevels + dta d" HUMAN Moron Shooter " + dta d" Poolshark Tosser Chooser " + dta d" Spoiler Cyborg Unknown " + dta d" " + dta d"Tab"* + dta d" - Player/Difficulty level " + dta d" " + dta d"Return"* + dta d" - Proceed " +;--------------------------------------------------- +textbuffer + ; 0123456789012345678901234567890123456789 + dta d"Player: " + dta d"Energy: Angle: Force: " + dta d"Round: Wind: " +textbuffer2 + dta d"Player: Cash: 0 " ; ZERO TO MAKE YOU RICHER ON THE SCREEN -;----------------------------------------------------- -;-------------display-lists--------------------------- -;----------------------------------------------------- +; DLs fragments (modified by game code) +; all Purchase DL :) PurchaseDL .byte $70 .byte $47 @@ -31,6 +79,75 @@ PurActDescAddr .byte $41 .word PurchaseDL ;------------------------ +DLCreditsFragm + .byte $60+$80 + .byte $42+$20 ; VSCRL +DLCreditsAddr + .word Credits + :6 .byte $02+$20 + .byte $02 + .byte $41 + .word GameOverDL +;------------------------ +; end of "variables" (RAM) +; --------------- +; start of "constants" (ROM) +;----------------------------------------------- +;Screen displays go first to avoid crossing 4kb barrier +;----------------------------------------------- +OptionsScreen + dta d"Welcome to Scorch v. " + build ; 4 bytes from scorch.asm (fancy method) :) + dta d" (un)2000-2022" + dta d" Please select option with cursor keys " + dta d" and press (Return) to proceed " +MoreUp + dta d" " + dta 92,92,92 + dta d" more " + dta 92,92,92 + dta d" " + .ALIGN $1000 ; WARNING!!!! 4KiB barrier crossing here, might need reassignment!!! +MoreDown + dta d" " + dta 93,93,93 + dta d" more " + dta 93,93,93 + dta d" " +WeaponsDescription + dta d" " + dta d"Tab"* + dta d" - Defensive/Offensive weapon " +PurchaseDescription + dta d" " + dta d"Space"* + dta d" - Purchase " + dta d"Return"* + dta d" - Finish " +ActivateDescription + dta d" " + dta d"Space"* + dta d" - Activate " + dta d"Return"* + dta d" - Finish " +EmptyLine + dta d" " +;--------------------------------------------------- +OptionsTitle + dta d" scorch "* +DifficultyTitle + dta d" difficulty "* +PurchaseTitle + dta d" weapons purchase " +InventoryTitle + dta d" weapons activate "* +GameOverTitle + dta d" game over "* +GameOverTitle2 + dta d" Player Points Hits Earned Money " +;----------------------------------------------------- +;-------------display-lists--------------------------- +;----------------------------------------------------- OptionsDL .byte $70 .byte $47 @@ -39,7 +156,10 @@ OptionsDL .byte $42 .word OptionsScreen .byte $30,$02,$02,$70 - :maxOptions .by $02,$10 + .byte $42 + .word OptionsHere + .byte $10 + :maxOptions-1 .by $02,$10 :(9-maxOptions) .by $70,$10 .byte $80 .byte $4f @@ -110,66 +230,6 @@ dl ; MAIN game display list .byte $41 .word dl ;----------------------------------------------- -;Screen displays go first to avoid crossing 4kb barrier -;----------------------------------------------- -OptionsScreen - dta d"Welcome to Scorch v. " - build ; 4 bytes from scorch.asm (fancy method) :) - dta d" (un)2000-2022" - dta d" Please select option with cursor keys " - dta d" and press (Return) to proceed " -OptionsHere - ; 0123456789012345678901234567890123456789 - dta d"Players : 2 3 4 5 6 " - dta d"Cash : none 2K 8K 12K 20K " - dta d"Gravity : 0.2G 0.5G 1G 2G 4G " - dta d"Wind : 1B 3B 5B 7B 9B " - dta d"Rounds : 10 20 30 40 50 " - dta d"Missiles : slug slow norm fast hare " - dta d"Seppuku : nevr rare norm oftn alws " - dta d"Mountains: NL BE CZ CH NP " -OptionsScreenEnd -;----------------------------------------------- -MoreUp - dta d" " - dta 92,92,92 - dta d" more " - dta 92,92,92 - dta d" " -MoreDown - dta d" " - dta 93,93,93 - dta d" more " - dta 93,93,93 - dta d" " -ListOfWeapons - :36 dta d" " -ListOfWeapons1End -;GameOverResults ; reuse after game (remember to clear on start new) -ListOfDefensiveWeapons - :16 dta d" " -ListOfDefensiveWeaponsEnd ;constant useful when clearing -WeaponsDescription - dta d" " - dta d"Tab"* - dta d" - Defensive/Offensive weapon " -PurchaseDescription - dta d" " - dta d"Space"* - dta d" - Purchase " - dta d"Return"* - dta d" - Finish " -ActivateDescription - dta d" " - dta d"Space"* - dta d" - Activate " - dta d"Return"* - dta d" - Finish " -EmptyLine - dta d" " -; ------------------------------------------------- - ; .ALIGN $1000 ; WARNING!!!! 4KiB barrier crossing here, might need reassignment!!! -;----------------------------------------------- GameOverResults = display+$0ff0 ; reuse after game Credits = GameOverResults +(6*40) CreditsLastLine = Credits + (41*40) @@ -195,52 +255,9 @@ GameOverDL .byte $42 .word GameOverResults :5 .byte $00+$80,$02 - .byte $70+$80 - .byte $42+$20 ; VSCRL -DLCreditsAddr - .word Credits - :6 .byte $02+$20 - .byte $02 - .byte $41 - .word GameOverDL - -NameScreen - dta d" Enter names of players " - dta d" Tank 01 Name:" -NameAdr - dta d" " - dta d" Human/Atari (difficulty level) " - dta d" " -NamesOfLevels - dta d" HUMAN Moron Shooter " - dta d" Poolshark Tosser Chooser " - dta d" Spoiler Cyborg Unknown " - dta d" " - dta d"Tab"* - dta d" - Player/Difficulty level " - dta d" " - dta d"Return"* - dta d" - Proceed " -;--------------------------------------------------- -textbuffer - ; 0123456789012345678901234567890123456789 - dta d"Player: " - dta d"Energy: Angle: Force: " - dta d"Round: Wind: " -textbuffer2 - dta d"Player: Cash: 0 " ; ZERO TO MAKE YOU RICHER ON THE SCREEN -; dta d"----------------------------------------" -;--------------------------------------------------- -OptionsTitle - dta d" scorch "* -DifficultyTitle - dta d" difficulty "* -PurchaseTitle - dta d" weapons purchase " -InventoryTitle - dta d" weapons activate "* -GameOverTitle - dta d" game over "* -GameOverTitle2 - dta d" Player Points Hits Earned Money " + .byte $01 + .word DLCreditsFragm +; --------------- +; end of "constants" (ROM) +;----------------------------------------------- .endif \ No newline at end of file diff --git a/scorch.asm b/scorch.asm index 6dd5e57..210ab75 100644 --- a/scorch.asm +++ b/scorch.asm @@ -214,6 +214,15 @@ START ; for the round #1 shooting sequence is random MainGameLoop + ; first set default barrel lengths (fix for Long Schlong activation :) ) + ; we must do it before purchase/activate + ldx #(MaxPlayers-1) +SettingBarrel + lda #StandardBarrel ; standard barrel length + sta BarrelLength,x + dex + bpl SettingBarrel + jsr CallPurchaseForEveryTank ; issue #72 (glitches when switches) @@ -394,8 +403,6 @@ SettingEnergies sta Energy,x sta eXistenZ,x sta LASTeXistenZ,x - lda #StandardBarrel ; standard barrel length - sta BarrelLength,x ; anything in eXistenZ table means that this tank exist ; in the given round lda #<1000 diff --git a/scorch.xex b/scorch.xex index a7e41c9..bb48b09 100644 Binary files a/scorch.xex and b/scorch.xex differ