diff --git a/artwork/sfx/scorch_SFX-feat.txt b/artwork/sfx/scorch_SFX-feat.txt new file mode 100644 index 0000000..e7bb349 --- /dev/null +++ b/artwork/sfx/scorch_SFX-feat.txt @@ -0,0 +1,40 @@ +;* --------BEGIN-------- +;* C:\Atari\rmt\rmt128\scorch_SFX-only-str.rmt +FEAT_SFX equ 1 +FEAT_GLOBALVOLUMEFADE equ 0 ;RMTGLOBALVOLUMEFADE variable +FEAT_NOSTARTINGSONGLINE equ 0 +FEAT_INSTRSPEED equ 1 +FEAT_CONSTANTSPEED equ 16 ;(0 times) +FEAT_COMMAND1 equ 1 ;(8 times) +FEAT_COMMAND2 equ 0 ;(0 times) +FEAT_COMMAND3 equ 0 ;(0 times) +FEAT_COMMAND4 equ 0 ;(0 times) +FEAT_COMMAND5 equ 0 ;(0 times) +FEAT_COMMAND6 equ 0 ;(0 times) +FEAT_COMMAND7SETNOTE equ 0 ;(0 times) +FEAT_COMMAND7VOLUMEONLY equ 0 ;(0 times) +FEAT_PORTAMENTO equ 0 ;(0 times) +FEAT_FILTER equ 1 ;(22 times) +FEAT_FILTERG0L equ 0 ;(0 times) +FEAT_FILTERG1L equ 0 ;(0 times) +FEAT_FILTERG0R equ 0 ;(0 times) +FEAT_FILTERG1R equ 0 ;(0 times) +FEAT_BASS16 equ 0 ;(0 times) +FEAT_BASS16G1L equ 0 ;(0 times) +FEAT_BASS16G3L equ 0 ;(0 times) +FEAT_BASS16G1R equ 0 ;(0 times) +FEAT_BASS16G3R equ 0 ;(0 times) +FEAT_VOLUMEONLYG0L equ 0 ;(0 times) +FEAT_VOLUMEONLYG2L equ 0 ;(0 times) +FEAT_VOLUMEONLYG3L equ 0 ;(0 times) +FEAT_VOLUMEONLYG0R equ 0 ;(0 times) +FEAT_VOLUMEONLYG2R equ 0 ;(0 times) +FEAT_VOLUMEONLYG3R equ 0 ;(0 times) +FEAT_TABLETYPE equ 0 ;(0 times) +FEAT_TABLEMODE equ 0 ;(0 times) +FEAT_TABLEGO equ 1 ;(2 times) +FEAT_AUDCTLMANUALSET equ 1 ;(6 times) +FEAT_VOLUMEMIN equ 0 ;(0 times) +FEAT_EFFECTVIBRATO equ 1 ;(1 times) +FEAT_EFFECTFSHIFT equ 1 ;(11 times) +;* --------END-------- diff --git a/artwork/sfx/scorch_SFX-only-str.rmt b/artwork/sfx/scorch_SFX-only-str.rmt new file mode 100644 index 0000000..cc689e5 Binary files /dev/null and b/artwork/sfx/scorch_SFX-only-str.rmt differ diff --git a/artwork/sfx/scorch_SFX-only.rmt b/artwork/sfx/scorch_SFX-only.rmt new file mode 100644 index 0000000..9fa9461 Binary files /dev/null and b/artwork/sfx/scorch_SFX-only.rmt differ diff --git a/constants.asm b/constants.asm index 2f55d79..5cdd5a4 100644 --- a/constants.asm +++ b/constants.asm @@ -559,8 +559,6 @@ CreditsStart dta d"Warsaw, Miam",d"i"* dta d"2000-202",d"2"* dta d" "* - dta d"B",d"y"* - dta d" "* dta d"Programmin",d"g"* dta d"Tomasz 'Pecus' Peck",d"o"* dta d"Pawel 'pirx' Kalinowsk",d"i"* @@ -568,15 +566,19 @@ CreditsStart dta d"SFX, Music and Suppor",d"t"* dta d"Michal 'Miker' Szpilowsk",d"i"* dta d" "* - dta d"Additional Musi",d"c"* - dta d"Mario 'Emkay' Kri",d"x"* - dta d" "* + .IF target != 5200 + dta d"Additional Musi",d"c"* + dta d"Mario 'Emkay' Kri",d"x"* + dta d" "* + .ENDIF dta d"Code Optimizatio",d"n"* dta d"Piotr '0xF' Fusi",d"k"* dta d" "* dta d"Ar",d"t"* dta d"Adam Wachowsk",d"i"* - dta d"Krzysztof 'Kaz' Ziembi",d"k"* + .IF target != 5200 + dta d"Krzysztof 'Kaz' Ziembi",d"k"* + .ENDIF dta d" "* dta d"Ideas and Q",d"A"* dta d"Bocianu, Probabilitydragon, EnderDude",d","* @@ -586,9 +588,16 @@ CreditsStart dta d" "* dta d"Additional testin",d"g"* dta d"Arek and Alex Peck",d"o"* - dta d" "* - dta d"Stay tuned for the FujiNet version",d"!"* + .IF target != 5200 + dta d" "* + dta d"Stay tuned for the FujiNet version",d"!"* + .ENDIF dta d" "* CreditsEnd -CreditsLines=44 +.IF target = 5200 + CreditsLines=36 +.ELSE + CreditsLines=42 ; 34 in reality. add 7? +.ENDIF + .endif diff --git a/display.asm b/display.asm index 7c4a95e..4da3c22 100644 --- a/display.asm +++ b/display.asm @@ -103,173 +103,5 @@ DLCreditsAddr ;------------------------ ; 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" " -MoreDown - dta d" " - dta 93,93,93 - dta d" more " - dta 93,93,93 - dta d" " -WeaponsDescription - ; 0123456789012345678901234567890123456789 - dta d"Tab"* - dta d ": Defensive/Offensive weapon " -PurchaseDescription - ; 0123456789012345678901234567890123456789 - dta d"Space"* - dta d": Purchase " - dta d"Return"* - dta d": Finish " -ActivateDescription - ; 0123456789012345678901234567890123456789 - 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"purchase weapons" -InventoryTitle - dta d"activate weapons"* -GameOverTitle - dta d" game over "* -GameOverTitle2 - dta d" Player Points Hits Earned Money " -;----------------------------------------------------- -;-------------display-lists--------------------------- -;----------------------------------------------------- -dl ; MAIN game display list - .byte 0 - .byte $42 - .word textbuffer - .byte $02, $02 +$80 ;DLI - .byte $10 ; 2 blank lines - - .byte $4f - .word display ; 1 line - :76 .by $0f ;76 - .by $0f+$80 ; DLI (black bar) ;2 - .by $0f+$80 ; DLI - :13 .by $0f ;13 - .by $0f+$80 ; DLI (black bar) ;2 - .by $0f+$80 ; DLI - :8 .by $0f ;8 - .by $4f ;1 - .wo display+$0ff0 - :2 .by $0f ;2 - .by $0f+$80 ; DLI (black bar) ;2 - .by $0f+$80 ; DLI - :9 .by $0f ;9 - .by $0f+$80 ; DLI (black bar) ;2 - .by $0f+$80 ; DLI - :8 .by $0f ;8 - .by $0f+$80 ; DLI (black bar) ;2 - .by $0f+$80 ; DLI - :7 .by $0f ;7 - .by $0f+$80 ; DLI (black bar) ;2 - .by $0f+$80 ; DLI - :6 .by $0f ;6 - .by $0f+$80 ; DLI (black bar) ;2 - .by $0f+$80 ; DLI - :5 .by $0f ;5 - .by $0f+$80 ; DLI (black bar) ;2 - .by $0f+$80 ; DLI - :4 .by $0f ;4 - .by $0f+$80 ; DLI (black bar) ;2 - .by $0f+$80 ; DLI - :3 .by $0f ;3 - .by $0f+$80 ; DLI (black to end);1 - :38 .byte $0f ;35 ..... = 200 - .by $4f - .wo EmptyLine ; additional line of ground - .byte $41 - .word dl -;----------------------------------------------- - .ALIGN $1000 ; WARNING!!!! 4KiB barrier crossing here, might need reassignment!!! -OptionsDL - .byte $70 - .byte $47 - .word OptionsTitle - .byte $70,$70 - .byte $42 - .word OptionsScreen - .byte $30,$02,$02,$70 - .byte $42 - .word OptionsHere - .byte $10 - :maxOptions-1 .by $02,$10 - :(9-maxOptions) .by $70,$10 - .byte $80 - .byte $4f - .word (display+140*40) - :21 .by $0f ;76 - .byte $41 - .word OptionsDL -;------------------------ -;Enter names of tanks DL -NameDL - .byte $70 - .byte $47 - .word DifficultyTitle - .byte $70,$70 - .byte $42 - .word NameScreen - .byte $30 - .byte $02,$30+$80,$02 - .byte $10,$02,$02,$02,$30,$02,$02 - .byte $41 - .word NameDL -; ------------------------------------------------- -GameOverResults = display+$0ff0 ; reuse after game -Credits = GameOverResults +(6*40) -CreditsLastLine = Credits + (CreditsLines*40) -GameOverDL - .byte $70,$40 - .byte $47 ; 16 gr8 lines - .word GameOverTitle - .byte $4f ; 1 line - .word display+(40*72) - :28 .byte $0f ; 28 lines - .byte $0f+$80 - .byte $4f ; 1 line - .word display+(40*32) - :30 .byte $0f ; 30 lines - .byte $0f+$80 ; 1 line - .byte $4f ; 1 line - .word display+(40*72) - :7 .byte $0f ; 7 lines - .byte $00+$80 ; 1 line - .byte $42 ; 7 tekst lines - .word GameOverTitle2 - .byte $00+$80 - .byte $42 - .word GameOverResults - :5 .byte $00+$80,$02 - .byte $01 - .word DLCreditsFragm -; --------------- -; end of "constants" (ROM) -;----------------------------------------------- .endif \ No newline at end of file diff --git a/display_static.asm b/display_static.asm new file mode 100644 index 0000000..b8f8d10 --- /dev/null +++ b/display_static.asm @@ -0,0 +1,174 @@ +; @com.wudsn.ide.asm.mainsourcefile=scorch.asm + +.IF *>0 ;this is a trick that prevents compiling this file alone +;------------------------ +; 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" " +MoreDown + dta d" " + dta 93,93,93 + dta d" more " + dta 93,93,93 + dta d" " +WeaponsDescription + ; 0123456789012345678901234567890123456789 + dta d"Tab"* + dta d ": Defensive/Offensive weapon " +PurchaseDescription + ; 0123456789012345678901234567890123456789 + dta d"Space"* + dta d": Purchase " + dta d"Return"* + dta d": Finish " +ActivateDescription + ; 0123456789012345678901234567890123456789 + 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"purchase weapons" +InventoryTitle + dta d"activate weapons"* +GameOverTitle + dta d" game over "* +GameOverTitle2 + dta d" Player Points Hits Earned Money " +;----------------------------------------------------- +;-------------display-lists--------------------------- +;----------------------------------------------------- + +dl ; MAIN game display list + .byte 0 + .byte $42 + .word textbuffer + .byte $02, $02 +$80 ;DLI + .byte $10 ; 2 blank lines + + .byte $4f + .word display ; 1 line + :76 .by $0f ;76 + .by $0f+$80 ; DLI (black bar) ;2 + .by $0f+$80 ; DLI + :13 .by $0f ;13 + .by $0f+$80 ; DLI (black bar) ;2 + .by $0f+$80 ; DLI + :8 .by $0f ;8 + .by $4f ;1 + .wo display+$0ff0 + :2 .by $0f ;2 + .by $0f+$80 ; DLI (black bar) ;2 + .by $0f+$80 ; DLI + :9 .by $0f ;9 + .by $0f+$80 ; DLI (black bar) ;2 + .by $0f+$80 ; DLI + :8 .by $0f ;8 + .by $0f+$80 ; DLI (black bar) ;2 + .by $0f+$80 ; DLI + :7 .by $0f ;7 + .by $0f+$80 ; DLI (black bar) ;2 + .by $0f+$80 ; DLI + :6 .by $0f ;6 + .by $0f+$80 ; DLI (black bar) ;2 + .by $0f+$80 ; DLI + :5 .by $0f ;5 + .by $0f+$80 ; DLI (black bar) ;2 + .by $0f+$80 ; DLI + :4 .by $0f ;4 + .by $0f+$80 ; DLI (black bar) ;2 + .by $0f+$80 ; DLI + :3 .by $0f ;3 + .by $0f+$80 ; DLI (black to end);1 + :38 .byte $0f ;35 ..... = 200 + .by $4f + .wo EmptyLine ; additional line of ground + .byte $41 + .word dl +;----------------------------------------------- + .ALIGN $1000 ; WARNING!!!! 4KiB barrier crossing here, might need reassignment!!! +OptionsDL + .byte $70 + .byte $47 + .word OptionsTitle + .byte $70,$70 + .byte $42 + .word OptionsScreen + .byte $30,$02,$02,$70 + .byte $42 + .word OptionsHere + .byte $10 + :maxOptions-1 .by $02,$10 + :(9-maxOptions) .by $70,$10 + .byte $80 + .byte $4f + .word (display+140*40) + :21 .by $0f ;76 + .byte $41 + .word OptionsDL +;------------------------ +;Enter names of tanks DL +NameDL + .byte $70 + .byte $47 + .word DifficultyTitle + .byte $70,$70 + .byte $42 + .word NameScreen + .byte $30 + .byte $02,$30+$80,$02 + .byte $10,$02,$02,$02,$30,$02,$02 + .byte $41 + .word NameDL +; ------------------------------------------------- +GameOverResults = display+$0ff0 ; reuse after game +Credits = GameOverResults +(6*40) +CreditsLastLine = Credits + (CreditsLines*40) +GameOverDL + .byte $70,$40 + .byte $47 ; 16 gr8 lines + .word GameOverTitle + .byte $4f ; 1 line + .word display+(40*72) + :28 .byte $0f ; 28 lines + .byte $0f+$80 + .byte $4f ; 1 line + .word display+(40*32) + :30 .byte $0f ; 30 lines + .byte $0f+$80 ; 1 line + .byte $4f ; 1 line + .word display+(40*72) + :7 .byte $0f ; 7 lines + .byte $00+$80 ; 1 line + .byte $42 ; 7 tekst lines + .word GameOverTitle2 + .byte $00+$80 + .byte $42 + .word GameOverResults + :5 .byte $00+$80,$02 + .byte $01 + .word DLCreditsFragm +; --------------- +; end of "constants" (ROM) +;----------------------------------------------- +.endif \ No newline at end of file diff --git a/scorch.asm b/scorch.asm index 451d42c..ff1c750 100644 --- a/scorch.asm +++ b/scorch.asm @@ -35,10 +35,19 @@ ;and due to being always short of time/energy (to finish the game) ;we decided it must go in 'English' to let other people work on it +.def target = 800 ;5200 ; or 800 + .macro build dta d"1.13" ; number of this build (3 bytes) .endm +.macro RMTSong + .IF target != 5200 + lda #:1 + jsr RMTSongSelect + .ENDIF +.endm + icl 'definitions.asm' @@ -153,9 +162,10 @@ icl 'lib/ATARISYS.ASM' icl 'lib/macro.hea' - ;splash screen and musix - icl 'artwork/Scorch50.asm' - + .IF target !=5200 + ;splash screen and musix + icl 'artwork/Scorch50.asm' + .ENDIF ;Game loading address ORG $3000 @@ -165,6 +175,7 @@ WeaponFont ;Screen displays go here to avoid crossing 4kb barrier ;----------------------------------------------- icl 'display.asm' + icl 'display_static.asm' ;---------------------------------------------- ;-------------------------------------------------- @@ -221,9 +232,7 @@ START ;jsr GameOverScreen ; only for test !!! - lda #song_main_menu - jsr RmtSongSelect - + RMTSong song_main_menu jsr Options ;startup screen jsr MakeDarkScreen @@ -281,8 +290,7 @@ SettingBarrel ; Results are number of other deaths ; before the player dies itself - lda #song_round_over - jsr RmtSongSelect + RmtSong song_round_over jsr DisplayResults jsr DemoModeOrKey @@ -385,7 +393,7 @@ GoGameOver NoGameOverYet inc CurrentRoundNr jsr MakeDarkScreen ; issue #72 - jsr RmtSongSelect + ; jsr RmtSongSelect ; ????? mva #sfx_silencer sfx_effect jsr PMoutofscreen @@ -402,8 +410,7 @@ NoGameOverYet ; the shooting angle is randomized ; of course gains an loses are zeroed - lda #song_ingame - jsr RmtSongSelect + RmtSong song_ingame jsr SetPMWidth lda #0 @@ -1641,7 +1648,7 @@ MakeDarkScreen ;-------------------------------------------------- ; starting song line 0-255 to A reg cmp #song_ingame - bne noingame ; noMusic blck onlu ingame song + bne noingame ; noMusic blocks only ingame song bit noMusic spl:lda #song_silencio noingame @@ -1691,11 +1698,20 @@ PLAYER .ECHO 'PLAYER: ',* icl 'artwork/sfx/rmtplayr.a65' + .IF target=5200 MODUL equ $b000 ;address of RMT module - opt h- ;RMT module is standard Atari binary file already - ins "artwork/sfx/scorch_str6.rmt" ;include music RMT module - opt h+ + opt h- ;RMT module is standard Atari binary file already + ins "artwork/sfx/scorch_SFX-only-str.rmt" ;include music RMT module + opt h+ + + .ELSE +MODUL equ $b000 ;address of RMT module + opt h- ;RMT module is standard Atari binary file already + ins "artwork/sfx/scorch_str6.rmt" ;include music RMT module + opt h+ + .ENDIF ; +MODULEND ;---------------------------------------------- org $bf80 font4x4 diff --git a/scorch.xex b/scorch.xex index d54baea..62634f5 100644 Binary files a/scorch.xex and b/scorch.xex differ diff --git a/textproc.asm b/textproc.asm index f112879..964d17f 100644 --- a/textproc.asm +++ b/textproc.asm @@ -298,12 +298,14 @@ GoToActivation lda #@dmactl(narrow|dma) ; narrow screen width, DL on, P/M off sta dmactls + .IF target != 5200 lda #song_supermarket bit IsInventory bpl @+ lda #song_inventory @ jsr RmtSongSelect - + .ENDIF + ldx tankNr lda TankStatusColoursTable,x sta COLOR2 @@ -1864,8 +1866,7 @@ quit_seppuku beq @+ ;unconditional jump, because TypeLine4x4 ends with beq GameOver4x4 - lda #song_round_over - jsr RmtSongSelect + RmtSong song_round_over mwa #LineGameOver LineAddress4x4 mwa #((ScreenWidth/2)-(8*4)) LineXdraw mva ResultY LineYdraw @@ -2113,8 +2114,7 @@ MakeAllTanksVisible jsr SetStandardBarrels ; start music and animations - lda #song_ending_looped - jsr RmtSongSelect + RmtSong song_ending_looped ; initial tank positions randomization ldx #(MaxPlayers-1) ;maxNumberOfPlayers-1 @ diff --git a/weapons.asm b/weapons.asm index 5fb42cd..60d8780 100644 --- a/weapons.asm +++ b/weapons.asm @@ -1192,8 +1192,7 @@ callInventory jsr Purchase afterInventory jsr MakeDarkScreen - lda #song_ingame - jsr RmtSongSelect + RmtSong song_ingame mva #0 escFlag jsr DisplayStatus jsr SetMainScreen @@ -1430,8 +1429,7 @@ pressedM ; have you tried turning the music off and on again? lda #$ff eor:sta noMusic - lda #song_ingame - jsr RmtSongSelect + RmtSong song_ingame jsr WaitForKeyRelease jmp BeforeFire