diff --git a/grafproc.asm b/grafproc.asm index 78ba7a4..1be436b 100644 --- a/grafproc.asm +++ b/grafproc.asm @@ -542,7 +542,7 @@ NotHigherByte02 ; x correction for P/M ; -- .IF XCORRECTION_FOR_PM = 1 - and #$fe + and #$fe .ENDIF ; -- sta xtankstableL,x @@ -585,7 +585,7 @@ UnequalTanks jsr PMoutofScreen mva #1 Erase ; erase tanks flag .endp -;-- +;------------------------------------------------- .proc drawtanks ;------------------------------------------------- lda TankNr @@ -705,12 +705,12 @@ NoMissile ClearPM cpy temp bne ZeroesToGo -@ lda (xbyte),y - and #%11110000 - ora #%00001111 ; (2 bits set) we set on two pixels in three lines - sta (xbyte),y - dey - dex +@ lda (xbyte),y + and #%11110000 + ora #%00001111 ; (2 bits set) we set on two pixels in three lines + sta (xbyte),y + dey + dex bne @- ZeroesToGo lda (xbyte),y @@ -725,12 +725,12 @@ PMForTank6 ClearPM6 cpy temp bne ZeroesToGo6 -@ lda (xbyte),y - and #%00001111 - ora #%11110000 ; (2 bits set) we set on two pixels in three lines - sta (xbyte),y - dey - dex +@ lda (xbyte),y + and #%00001111 + ora #%11110000 ; (2 bits set) we set on two pixels in three lines + sta (xbyte),y + dey + dex bne @- ZeroesToGo6 lda (xbyte),y @@ -743,9 +743,8 @@ NoPlayerMissile noTankNoPM ldy #$01 lda Erase - beq @+ - dey -@ sty color + seq:dey + sty color ; draw defensive weapons like shield ( tank number in X ) ; in xdraw, ydraw we have coordinates left LOWER corner of Tank char ldx TankNr @@ -786,9 +785,8 @@ NoShieldDraw BarrelChange ldy #$01 lda Erase - beq @+ - dey -@ sty color + seq:dey + sty color jsr DrawBarrel ldx TankNr DoNotDrawTankNr @@ -879,7 +877,7 @@ tankflash_loop .nowarn dew xdraw ; 1 pixel left sbw ydraw #$0a ; 10 pixels up jsr plot -.nowarn dew ydraw +.nowarn dew ydraw inw xdraw jsr plot sbw xdraw #$0d ; 13 pixels left @@ -895,14 +893,14 @@ tankflash_loop ; this proc draws bold top on shield. ; Symbol of ablative shield ? :) ;-------------------------------------------------- - sbw xdraw #$04 ; 5 pixels left + sbw xdraw #$04 ; 5 pixels left sbw ydraw #$0b ; 11 pixels up ; draw additional top horizontal line of shield ( _ ) mva #6 temp @ - jsr plot -.nowarn dew xdraw - dec temp + jsr plot +.nowarn dew xdraw + dec temp bne @- rts ; Z allways set .endp @@ -910,7 +908,7 @@ tankflash_loop .proc DrawTankParachute ;Tank number in X ;-------------------------------------------------- - lda #char_parachute ; parachute symbol + lda #char_parachute ; parachute symbol sta CharCode lda Ytankstable,x cmp #16 @@ -953,18 +951,18 @@ ToHighToParachute dec temp bne @- - sbw xdraw #2 ; 2 pixels left + sbw xdraw #2 ; 2 pixels left inw ydraw ; 1 pixel down ; draw second horizontal line mva #3 temp @ - jsr plot -.nowarn dew xdraw - dec temp + jsr plot +.nowarn dew xdraw + dec temp bne @- - adw xdraw #2 ; 2 pixels right + adw xdraw #2 ; 2 pixels right inw ydraw ; 1 pixel down ; and last pixel @@ -995,14 +993,14 @@ ToHighToParachute inw xdraw ; plot 6 random color pixels mva #6 temp -@ lda Erase - eor #%00000001 - and random - and #%00000001 - sta color - jsr plot - inw xdraw - dec temp +@ lda Erase + eor #%00000001 + and random + and #%00000001 + sta color + jsr plot + inw xdraw + dec temp bne @- ; clear last pixel under tank mva #0 color @@ -1046,11 +1044,11 @@ NoFallingSound and #01 beq DoNotClearParachute ; here we clear the parachute -; ldx TankNr + ; ldx TankNr jsr DrawTankParachute DoNotClearParachute mva #0 Erase -; ldx TankNr + ; ldx TankNr lda EndOfTheFallFlag ; We only get byte below the tank if still falling bne NoGroundCheck ; coordinates of the first pixel under the tank @@ -1062,8 +1060,8 @@ DoNotClearParachute ; time in our lives! Tada! It opens a new chapter!!! sta ydraw ; -; UnderTank1 ; byte under tank -; UnderTank2 ; byte under tank reversed (for simple check right direction) + ; UnderTank1 ; byte under tank + ; UnderTank2 ; byte under tank reversed (for simple check right direction) lda #08 sta temp ; Loop Counter ByteBelowTank @@ -1569,14 +1567,14 @@ SetYofNextTank ldy #0 ldx #screenheight-1 nextPointChecking - txa - cmp (modify),y - bcc NotHigher - lda (modify),y - tax + txa + cmp (modify),y + bcc NotHigher + lda (modify),y + tax NotHigher - inw modify - cpw modify #(mountaintable+screenwidth) + inw modify + cpw modify #(mountaintable+screenwidth) bne nextPointChecking txa rts @@ -1596,9 +1594,8 @@ notZero jsr _calc_inverse_display ; now find length of the text -@ - iny - lda (LineAddress4x4),y +@ iny + lda (LineAddress4x4),y bpl @- iny sty fx @@ -2046,8 +2043,8 @@ ybarrel ;-------------------------------------------------- lda #$00 ; let all P/M disappear ldy #7 -@ sta hposp0,y - dey +@ sta hposp0,y + dey bpl @- ;:8 sta hposp0+# ; optimized... but Y! rts @@ -2057,27 +2054,16 @@ ybarrel lda #%01010101 sta sizem ; all missiles, double width ldy #3 -@ lda #$00 - sta sizep0,y ; P0-P3 widths - lda TankColoursTable,y ; colours of sprites under tanks - sta PCOLR0,y - dey +@ lda #$00 + sta sizep0,y ; P0-P3 widths + lda TankColoursTable,y ; colours of sprites under tanks + sta PCOLR0,y + dey bpl @- LDA TankColoursTable+4 STA COLOR3 ; joined missiles (5th tank) rts .endp -;-------------------------------------------------- -.proc Lissajous -;-------------------------------------------------- -; x = Asin(at + fi) -; y = Bsin(bt) -; center: xdraw, ydraw - - - rts -.endp - .endif \ No newline at end of file diff --git a/scorch.asm b/scorch.asm index d7fed75..e9a24d1 100644 --- a/scorch.asm +++ b/scorch.asm @@ -52,19 +52,23 @@ AdditionalZPvariables = $20 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 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 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 - .zpvar SpyHardFlag .byte ; >$7f - run SpyHard after inventory - .zpvar Vdebug .byte ; "visual debug" flag ($00 - off, $ff - on) - .zpvar xdraw .word ;= $64 ;variable X for plot - .zpvar ydraw .word ;variable Y for plot (like in Atari Basic - Y=0 in upper right corner of the screen) + .zpvar LazyFlag .byte ; 7 bit - run Lazy Darwin, 6 bit - run Lazy Boy or Darwin (!) after inventory + ; 0 - nothing + .zpvar SpyHardFlag .byte ; >$7f - run SpyHard after inventory + .zpvar Vdebug .byte ; "visual debug" flag ($00 - off, $ff - on) + .zpvar xdraw .word ; = $64 ;variable X for plot + .zpvar ydraw .word ; variable Y for plot + ; (like in Atari Basic - Y=0 in upper right corner of the screen) .zpvar xbyte .word .zpvar ybyte .word .zpvar CharCode .byte @@ -73,12 +77,12 @@ FirstZpageVariable = $51 .zpvar TankSequencePointer .byte .zpvar oldplot .word .zpvar xc .word - .zpvar temp .word ;temporary word for the most embeded loops only - .zpvar temp2 .word ;same as above - .zpvar modify .word ;origially used to replace self-modyfying code - .zpvar tempXROLLER .word ;same as above for XROLLER routine (used also in result display routine) - .zpvar xtempDRAW .word ;same as above for XDRAW routine - .zpvar ytempDRAW .word ;same as above for XDRAW routine + .zpvar temp .word ; temporary word for the most embeded loops only + .zpvar temp2 .word ; same as above + .zpvar modify .word ; origially used to replace self-modyfying code + .zpvar tempXROLLER .word ; same as above for XROLLER routine (used also in result display routine) + .zpvar xtempDRAW .word ; same as above for XDRAW routine + .zpvar ytempDRAW .word ; same as above for XDRAW routine .zpvar tempor2 .word .zpvar CreditsVScrol .byte ;--------------temps used in circle routine @@ -103,7 +107,7 @@ FirstZpageVariable = $51 .zpvar dliCounter .byte .zpvar pressTimer .byte .zpvar NTSCcounter .byte - .zpvar IsEndOfTheFallFlag .byte ; for small speedup ground falling + .zpvar IsEndOfTheFallFlag .byte ;for small speedup ground falling .zpvar sfx_effect .byte .zpvar RMT_blocked .byte .zpvar ScrollFlag .byte @@ -129,10 +133,11 @@ FirstZpageVariable = $51 .zpvar xcircle .word .zpvar ycircle .word .zpvar vy .word - .zpvar vy_ .word ; 4 bytes + .zpvar vy_ .word ; 4 bytes .zpvar vx .word - .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 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 XHit .word .zpvar delta .word @@ -147,7 +152,8 @@ FirstZpageVariable = $51 .zpvar RangeLeft .word .zpvar RangeRight .word .zpvar NewAngle .byte - .zpvar escFlag .byte ; 7 bit - Exit game, 6 bit - Exit to GameOver (cleared - exit to Menu), 0 - nothing + .zpvar escFlag .byte ; 7 bit - Exit game, + ; 6 bit - Exit to GameOver (cleared - exit to Menu), 0 - nothing .zpvar LineYdraw .byte .zpvar LineXdraw .word .zpvar plot4x4color .byte ; $00 / $ff @@ -163,7 +169,7 @@ FirstZpageVariable = $51 .zpvar goleft .byte .zpvar OffsetDL1 .byte .zpvar L1 .byte - HotNapalmFlag = FunkyBombCounter ; reuse variable! + HotNapalmFlag = FunkyBombCounter ; variable reuse! displayposition = modify LineAddress4x4 = xcircle ;* RMT ZeroPage addresses in artwork/sfx/scorch_str9-NTSC.rmt @@ -184,23 +190,6 @@ FirstZpageVariable = $51 icl 'Atari/lib/5200SYS.ASM' icl 'Atari/lib/5200MACRO.ASM' .enum @kbcode - /* - _0 - _1 - _2 - _3 - _4 - _5 - _6 - _7 - _8 - _9 - _asterisk = $0a - _hash = $0b - _start = $0c - _pause = $0d - _reset = $0e - */ _space = $00 _Y = $01 _up = $02 @@ -266,15 +255,15 @@ StatusBufferCopyEnd ;-------------------------------------------------- FirstSTART .IF TARGET = 5200 - ; start in 5200 diagnostic mode - ; move original startup procedure to RAM + ; start in 5200 diagnostic mode + ; move original startup procedure to RAM Modified5200Splash = $2100 ; apparently there is some free space here - ; check kernel version + ; check kernel version Atari5200KernelByte = $fff8 - ; $32 - 4 joy - ; $00 - 2 joy - ; $ff - Altirra kernel + ; $32 - 4 joy + ; $00 - 2 joy + ; $ff - Altirra kernel lda Atari5200KernelByte beq rom2joy