From e4bf9e077f722e2fde199fab1b97fc334e9c4877 Mon Sep 17 00:00:00 2001 From: pkali Date: Sun, 1 Oct 2023 09:50:42 -0400 Subject: [PATCH] nicer sources --- Atari/display_static.asm | 4 +- scorch.asm | 150 ++++++++++++++++++++------------------- scorch.bin | Bin 32768 -> 32768 bytes 3 files changed, 78 insertions(+), 76 deletions(-) diff --git a/Atari/display_static.asm b/Atari/display_static.asm index 58a5932..68ffa9c 100644 --- a/Atari/display_static.asm +++ b/Atari/display_static.asm @@ -30,7 +30,7 @@ OptionsSubTitle dta d" Unknown Father of All Games" ;----------------------------------------------- MoreUp - dta d" " ; common part of this text and OptionsSubTitle :) + dta d" " ; common part of this text and OptionsSubTitle :) dta 92,92,92 dta d" more " dta 92,92,92 @@ -40,7 +40,7 @@ MoreDown dta 93,93,93 dta d" more " dta 93,93,93 -; dta d" " ; common part of text and empty line :) +; dta d" " ; common part of text and empty line :) EmptyLine dta d" " ;----------------------------------------------- diff --git a/scorch.asm b/scorch.asm index 94a133d..8404365 100644 --- a/scorch.asm +++ b/scorch.asm @@ -1,17 +1,19 @@ ; @com.wudsn.ide.lng.mainsourcefile=scorch.asm -;Atari 8-bit Scorched Earth source code + +;Atari 8-bit Scorch source code ;--------------------------------------------------- ;by Tomasz 'pecus' Pecko and Pawel 'pirx' Kalinowski ;Warsaw 2000, 2001, 2002, 2003, 2009, 2012, 2013 ;Miami & Warsaw 2022, 2023 +;WARNING! requires mads compiled on 2023-09-13 or later +;atari800 -5200 -cart ${outputFilePath} -cart-type 4 +;atari800 -run ${outputFilePath} + ;--------------------------------------------------- .IFNDEF TARGET .def TARGET = 800 ; 5200 .ENDIF -;WARNING! requires mads compiled on 2023-06-03 or later -;atari800 -5200 -cart ${outputFilePath} -cart-type 4 -;atari800 -run ${outputFilePath} ;--------------------------------------------------- .def CART_VERSION = 0 ; if 1 - dual splash screen @@ -24,7 +26,7 @@ ; (direct writes to screen memory - atari only :) ) ;--------------------------------------------------- - OPT r+ ; saves 10 bytes, and probably work :) : https://github.com/tebe6502/Mad-Assembler/issues/10 + OPT r+ ; saves 10 bytes, and probably works :) https://github.com/tebe6502/Mad-Assembler/issues/10 ;--------------------------------------------------- .macro build @@ -40,30 +42,24 @@ icl 'definitions.asm' ;--------------------------------------------------- AdditionalZPvariables = $20 - .zpvar EplotX .word = AdditionalZPvariables - .zpvar EplotByte .word - .zpvar EplotY .byte - .zpvar Mpoint1X .word ; meteor first point X position - .zpvar Mpoint2X .word ; meteor last point X position - .zpvar Mpoint1Y .byte ; meteor first point Y position - .zpvar Mcounter .byte ; meteor length counter ( $ff - no meteor on sky ) - .zpvar Mpoint2Y .byte ; meteor last point Y position - .zpvar MeteorsFlag .byte ; set 7th bit - block meteors - .zpvar MeteorsRound .byte ; set 7th bit - block meteors in round + .zpvar EplotX .word = AdditionalZPvariables + .zpvar EplotByte .word + .zpvar EplotY .byte + .zpvar Mpoint1X .word ; meteor first point X position + .zpvar Mpoint2X .word ; meteor last point X position + .zpvar Mpoint1Y .byte ; meteor first point Y position + .zpvar Mcounter .byte ; meteor length counter ( $ff - no meteor on sky ) + .zpvar Mpoint2Y .byte ; meteor last point Y position + .zpvar MeteorsFlag .byte ; set 7th bit - block meteors + .zpvar MeteorsRound .byte ; set 7th bit - block meteors in round FirstZpageVariable = $51 .zpvar DliColorBack .byte = FirstZpageVariable - .zpvar FirstKeypressDelay .byte .zpvar ClearSky .byte ; $ff - Crear sky during drawmountains, 0 - no clear sky .zpvar PaddleState .byte ; old state 2nd button for 2 buttons joysticks .zpvar GradientNr .byte .zpvar GradientColors .word - .zpvar WindChangeInRound .byte ; wind change after each turn (not round only) flag - ; (0 - round only, >0 - each turn) - .zpvar RandomMountains .byte ; mountains type change after each turn flag - ; (0 - round only, >0 - each turn) - .zpvar FastSoilDown .byte ; 0 - standard, >0 - fast .zpvar JoystickNumber .byte .zpvar LazyFlag .byte ; 7 bit - run Lazy Darwin, 6 bit - run Lazy Boy or Darwin (!) after inventory ; 0 - nothing @@ -77,7 +73,6 @@ FirstZpageVariable = $51 .zpvar CharCode .byte .zpvar fontind .word .zpvar tanknr .byte - .zpvar TankSequencePointer .byte .zpvar oldplot .word .zpvar xc .word .zpvar temp .word ; temporary word for the most embeded loops only @@ -110,7 +105,6 @@ FirstZpageVariable = $51 .zpvar dliCounter .byte .zpvar pressTimer .byte .zpvar NTSCcounter .byte - .zpvar IsEndOfTheFallFlag .byte ;for small speedup ground falling .zpvar sfx_effect .byte .zpvar RMT_blocked .byte .zpvar ScrollFlag .byte @@ -141,7 +135,15 @@ FirstZpageVariable = $51 .zpvar vx_ .word ; 4 bytes .zpvar HitFlag .byte ; $ff when missile hit ground, $00 when no hit, ; $01-$06 tank index+1 when hit tank - .zpvar PositionOnTheList .byte ; pointer position on the list being displayed + .zpvar PositionOnTheList .byte ; pointer position on the list being displayed + .zpvar FirstKeypressDelay .byte + .zpvar IsEndOfTheFallFlag .byte ;for small speedup ground falling + .zpvar TankSequencePointer .byte + .zpvar WindChangeInRound .byte ; wind change after each turn (not round only) flag + ; (0 - round only, >0 - each turn) + .zpvar RandomMountains .byte ; mountains type change after each turn flag + ; (0 - round only, >0 - each turn) + .zpvar FastSoilDown .byte ; 0 - standard, >0 - fast .zpvar XHit .word .zpvar delta .word .zpvar HowMuchToFall .byte @@ -373,10 +375,10 @@ NoRMT_PALchange ; RMT INIT - lda #$f0 ; initial value - sta RMTSFXVOLUME ; sfx note volume * 16 (0,16,32,...,240) + lda #$f0 ; initial value + sta RMTSFXVOLUME ; sfx note volume * 16 (0,16,32,...,240) - lda #$ff ; initial value + lda #$ff ; initial value sta sfx_effect sta Mcounter sta MeteorsFlag @@ -385,12 +387,12 @@ NoRMT_PALchange .IF TARGET = 5200 mva #$0f STICK0 - mva #$04 CONSOL5200 ; Speaker off, Pots enabled, port #1 selected - mwa #kb_continue VKEYCNT ; Keyboard handler + mva #$04 CONSOL5200 ; Speaker off, Pots enabled, port #1 selected + mwa #kb_continue VKEYCNT ; Keyboard handler .ENDIF - VMAIN VBLinterrupt,7 ; jsr SetVBL + VMAIN VBLinterrupt,7 ; jsr SetVBL - mva #2 chactl ; necessary for 5200 + mva #2 chactl ; necessary for 5200 ;-------------------------------------------------- ; Main program of the game @@ -418,19 +420,19 @@ getKeyAfterWait .IF TARGET = 800 lda SKSTAT cmp #$ff - beq checkJoyGetKey ; key not pressed, check Joy - cmp #$f7 ; SHIFT + beq checkJoyGetKey ; key not pressed, check Joy + cmp #$f7 ; SHIFT beq checkJoyGetKey .ELIF TARGET = 5200 lda SkStatSimulator and #%11111110 - bne checkJoyGetKey ; key not pressed, check Joy + bne checkJoyGetKey ; key not pressed, check Joy .ENDIF lda kbcode cmp #@kbcode._none beq checkJoyGetKey - and #$3f ;CTRL and SHIFT ellimination - cmp #@kbcode._esc ; 28 ; ESC + and #$3f ; CTRL and SHIFT ellimination + cmp #@kbcode._esc ; 28 ; ESC bne getkeyend mvy #$80 escFlag bne getkeyend @@ -451,33 +453,33 @@ notpressedJoyGetKey ;fire lda STRIG0 beq JoyButton - .IF TARGET = 800 ; Second joy button , Select and Option key only on A800 + .IF TARGET = 800 ; Second joy button , Select and Option key only on A800 jsr Check2button bcc SecondButton bne checkSelectKey checkSelectKey lda CONSOL - and #%00000010 ; Select + and #%00000010 ; Select beq SelectPressed lda CONSOL - and #%00000100 ; Option + and #%00000100 ; Option .ENDIF bne getKeyAfterWait OptionPressed - lda #@kbcode._atari ; Option key + lda #@kbcode._atari ; Option key bne getkeyend SecondButton SelectPressed - lda #@kbcode._tab ; Select key + lda #@kbcode._tab ; Select key bne getkeyend JoyButton - lda #@kbcode._ret ;Return key + lda #@kbcode._ret ; Return key getkeyend ldy #0 - sty ATRACT ; reset atract mode + sty ATRACT ; reset atract mode mvy #sfx_keyclick sfx_effect rts - .IF TARGET = 800 ; Second joy button only on A800 + .IF TARGET = 800 ; Second joy button only on A800 Check2button lda PADDL0 and #$c0 @@ -493,16 +495,16 @@ Check2button ;-------------------------------------------------- jsr WaitForKeyRelease lda kbcode - and #$3f ; CTRL and SHIFT ellimination + and #$3f ; CTRL and SHIFT ellimination rts .endp ;-------------------------------------------------- .proc WaitForKeyRelease ;-------------------------------------------------- - lda #128-KeyRepeatSpeed ; tricky + lda #128-KeyRepeatSpeed ; tricky sec - sbc FirstKeypressDelay ; tricky 2 :) + sbc FirstKeypressDelay ; tricky 2 :) sta pressTimer StillWait bit pressTimer @@ -518,7 +520,7 @@ StillWait cmp #$ff bne StillWait lda CONSOL - and #%00000110 ; Select and Option only + and #%00000110 ; Select and Option only cmp #%00000110 bne StillWait .ELIF TARGET = 5200 @@ -529,7 +531,7 @@ StillWait KeyReleased mva #FirstKeySpeed FirstKeypressDelay rts -KeyAutoReleased ; autorepeat +KeyAutoReleased ; autorepeat mva #0 FirstKeypressDelay rts .endp @@ -552,13 +554,12 @@ KeyAutoReleased ; autorepeat ;check demo mode ldx numberOfPlayers dex -checkForHuman ; if all in skillTable other than 0 then switch to DEMO MODE +checkForHuman ; if all in skillTable other than 0 then switch to DEMO MODE lda skillTable,x beq peopleAreHere dex bpl checkForHuman ; no people, just wait a bit - ;pause 150 ldy #75 jmp PauseYFrames ; rts @@ -569,15 +570,15 @@ peopleAreHere ;-------------------------------------------------- MakeDarkScreen ;-------------------------------------------------- - jsr PMoutofScreen ; hide P/M - mva #0 dmactls ; dark screen + jsr PMoutofScreen ; hide P/M + mva #0 dmactls ; dark screen ; and wait one frame :) ;-------------------------------------------------- .proc WaitOneFrame ;-------------------------------------------------- lda CONSOL - and #%00000001 ; START KEY - seq:wait ; or waitRTC ? + and #%00000001 ; START KEY + seq:wait ; or waitRTC ? rts .endp @@ -604,28 +605,28 @@ MakeDarkScreen ; Select and Option lda CONSOL - and #%00000101 ; Start + Option + and #%00000101 ; Start + Option beq QuitToGameover lda SKSTAT cmp #$ff jeq nokeys - cmp #$f7 ; SHIFT + cmp #$f7 ; SHIFT jeq nokeys lda kbcode - and #%10111111 ; SHIFT elimination + and #%10111111 ; SHIFT elimination - cmp #@kbcode._O ; $08 ; O + cmp #@kbcode._O ; $08 ; O bne CheckEsc jsr AreYouSure bit escFlag bpl nokeys ;---O pressed-quit game to game over screen--- QuitToGameover - mva #$C0 escFlag ; bits 7 and 6 set + mva #$C0 escFlag ; bits 7 and 6 set rts CheckEsc - cmp #@kbcode._esc ; 28 ; ESC + cmp #@kbcode._esc ; 28 ; ESC bne nokeys DisplayAreYouSure jsr AreYouSure @@ -640,7 +641,7 @@ nokeys ;-------------------------------------------------- ldy flyDelay Y lda CONSOL - and #%00000001 ; START KEY + and #%00000001 ; START KEY beq noShellDelay DelayLoop lda VCOUNT @@ -657,14 +658,14 @@ noShellDelay ; starting song line 0-255 to A reg ;-------------------------------------------------- cmp #song_main_menu - beq noingame ; noMusic blocks only ingame songs + beq noingame ; noMusic blocks only ingame songs bit noMusic spl:lda #song_silencio noingame mvx #$ff RMT_blocked - ldx #MODUL ; hi byte of RMT module to Y reg - jsr RASTERMUSICTRACKER ; Init + ldx #MODUL ; hi byte of RMT module to Y reg + jsr RASTERMUSICTRACKER ; Init mva #0 RMT_blocked rts .endp @@ -708,7 +709,7 @@ noingame icl 'artwork/talk.asm' ;---------------------------------------------- TankFont - ins 'artwork/tanksv4.fnt',+0,384 ; 48 characters only + ins 'artwork/tanksv4.fnt',+0,384 ; 48 characters only ;---------------------------------------------- font4x4 ins 'artwork/font4x4s.bmp',+62 @@ -721,7 +722,7 @@ font4x4 lda TankNr asl asl - asl ; 8 chars per name + asl ; 8 chars per name tax @ lda CheatName,y sec @@ -767,10 +768,10 @@ EndofBFGDLI .endp ; ------------------------ .proc BFGblink - SetDLI DLIinterruptBFG ; blinking on + SetDLI DLIinterruptBFG ; blinking on ldy #50 jsr PauseYFrames - SetDLI DLIinterruptGraph ; blinking off + SetDLI DLIinterruptGraph ; blinking off rts .endp ;-------------------------------------------------- @@ -781,16 +782,17 @@ EndofBFGDLI .ECHO "Bytes left: ",$b000-* - org $b000 ;address of RMT module + org $b000 ; address of RMT module MODUL - ;RMT module is standard Atari binary file already - ins "artwork/sfx/scorch_str9-NTSC.rmt",+6 ;include music RMT module + ; RMT module is standard Atari binary file already + ; include music RMT module: + ins "artwork/sfx/scorch_str9-NTSC.rmt",+6 MODULEND ;---------------------------------------------- icl 'constants_top.asm' ;---------------------------------------------- - .ECHO "Bytes on top left: ",$bfe8-* ;ROM_SETTINGS-* + .ECHO "Bytes on top left: ",$bfe8-* ; ROM_SETTINGS-* .IF TARGET = 800 run FirstSTART .ELIF TARGET = 5200 diff --git a/scorch.bin b/scorch.bin index 523d1d08b585da84a973048d48e0838eebba2969..59274529658d07a29a47beeb9d7c7bdd48e6fc51 100644 GIT binary patch delta 13727 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 Xv**sr#g7Yw-<6J03r9aMP1FBBOcBj1 delta 13727 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%0A1% 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 M)x7-qqv@vq16RfKq5uE@