diff --git a/grafproc.asm b/grafproc.asm index 50f841d..e5dc298 100644 --- a/grafproc.asm +++ b/grafproc.asm @@ -555,11 +555,10 @@ UnequalTanks bpl CheckNextTank rts .endp -;------------------------------------------------- -drawtanks -;------------------------------------------------- - +;------------------------------------------------- +.proc drawtanks +;------------------------------------------------- lda tanknr pha ldx #$00 @@ -576,8 +575,9 @@ DrawNextTank sta tankNr rts +.endp ;--------- -drawtanknr +.proc DrawTankNr ldx tanknr ; let's check the energy lda eXistenZ,x @@ -665,11 +665,11 @@ ZeroesToGo NoPlayerMissile DoNotDrawTankNr rts +.endp ;-------------------------------------------------- .proc drawmountains ;-------------------------------------------------- - mwa #0 xdraw mwa #mountaintable modify mva #1 color @@ -835,6 +835,7 @@ ColumnIsReady mva #sfx_silencer sfx_effect rts .endp + ;-------------------------------------------------- .proc calculatemountains ;-------------------------------------------------- @@ -962,6 +963,7 @@ SetYofNextTank rts .endp ; **************************************************** + ; ----------------------------------------- .proc unPlot ; plots a point and saves the plotted byte, reverts the previous plot. @@ -1066,6 +1068,7 @@ SkipThisPlot EndOfUnPlot rts .endp + ; ----------------------------------------- .proc plot ;plot (xdraw, ydraw, color) ; color == 1 --> put pixel @@ -1100,11 +1103,7 @@ MakePlot lsr lsr tay ;save -;--- - - - - + ;--- ldx ydraw lda linetableL,x sta xbyte @@ -1126,6 +1125,7 @@ ClearPlot sta (xbyte),y rts .endp + ; ----------------------------------------- .proc point ; ----------------------------------------- @@ -1135,7 +1135,6 @@ ClearPlot ; let's calculate coordinates from xdraw and ydraw mwa xdraw xbyte - lda xbyte and #$7 sta ybit @@ -1147,9 +1146,7 @@ ClearPlot lsr lsr tay ;save - -;--- - + ;--- ldx ydraw lda linetableL,x sta xbyte @@ -1163,6 +1160,7 @@ ClearPlot eor bittable,x rts .endp + ;-------------------------------------------------- .proc DrawLine ;-------------------------------------------------- @@ -1174,20 +1172,19 @@ ClearPlot jsr plot.MakePlot ;rts jmp IntoDraw ; jumps inside Draw routine - ; because one pixel is already plotted + ; because one pixel is already plotted -loopdraw - - lda (xbyte),y - and bittable2,x - sta (xbyte),y +@ + lda (xbyte),y + and bittable2,x + sta (xbyte),y IntoDraw - adw xbyte #screenBytes - dec tempbyte01 - bne loopdraw + adw xbyte #screenBytes + dec tempbyte01 + bne @- rts .endp -; + ; ------------------------------------------ .proc TypeChar ; puts char on the graphics screen @@ -1238,7 +1235,6 @@ CopyMask lsrw xbyte ; div 8 rorw xbyte rorw xbyte - ;--- ldy xbyte @@ -1255,46 +1251,15 @@ CopyMask ldx ybit beq MaskOK00 MakeMask00 - lsr mask1 - ror mask2 - lsr mask1+1 - ror mask2+1 - lsr mask1+2 - ror mask2+2 - lsr mask1+3 - ror mask2+3 - lsr mask1+4 - ror mask2+4 - lsr mask1+5 - ror mask2+5 - lsr mask1+6 - ror mask2+6 - lsr mask1+7 - ror mask2+7 - sec - ror char1 - ror char2 - sec - ror char1+1 - ror char2+1 - sec - ror char1+2 - ror char2+2 - sec - ror char1+3 - ror char2+3 - sec - ror char1+4 - ror char2+4 - sec - ror char1+5 - ror char2+5 - sec - ror char1+6 - ror char2+6 - sec - ror char1+7 - ror char2+7 + .rept 8 + lsr mask1+# + ror mask2+# + .endr + .rept 8 + sec + ror char1+# + ror char2+# + .endr dex bne MakeMask00 MaskOK00 @@ -1327,6 +1292,7 @@ CharLoopi EndPutChar rts .endp + ; ------------------------------------------ .proc PutChar4x4 ; puts 4x4 pixels char on the graphics screen @@ -1368,10 +1334,7 @@ CopyChar lda (fontind),y ; Y must be 0 !!!! bit nibbler4x4 bpl GetUpper4bits - rol - rol - rol - rol + :4 rol GetUpper4bits ora #$0f sta char1,x @@ -1396,7 +1359,6 @@ GetUpper4bits lsrw xbyte ; div 8 rorw xbyte rorw xbyte - ;--- ldy xbyte lda ydraw ; y = y - 3 because left lower. @@ -1412,26 +1374,15 @@ GetUpper4bits ldx ybit beq MaskOK01 MakeMask01 - lsr mask1 - ror mask2 - lsr mask1+1 - ror mask2+1 - lsr mask1+2 - ror mask2+2 - lsr mask1+3 - ror mask2+3 - sec - ror char1 - ror char2 - sec - ror char1+1 - ror char2+1 - sec - ror char1+2 - ror char2+2 - sec - ror char1+3 - ror char2+3 + .rept 4 + lsr mask1+# + ror mask2+# + .endr + .rept 4 + sec + ror char1+# + ror char2+# + .endr dex bne MakeMask01 MaskOK01 diff --git a/scorch.asm b/scorch.asm index 0f19242..93258bd 100644 --- a/scorch.asm +++ b/scorch.asm @@ -474,8 +474,8 @@ missed jsr DisplayOffensiveTextNr NextPlayerShoots - mva #1 Erase - jsr drawtanks + ;mva #1 Erase + ;jsr drawtanks ;before it shoots, the eXistenZ table must be ;updated accordingly to actual energy (was forgotten, sorry to ourselves) @@ -514,11 +514,9 @@ B0 DEY ;was setup of maximum energy for players - mva #0 Erase - jsr drawtanks + ;mva #0 Erase + ;jsr drawtanks - ;inc TankNr - ;lda TankNr inc:lda TankSequencePointer cmp NumberOfPlayers bne PlayersAgain @@ -1056,14 +1054,14 @@ rotateRight;older is lower bne MoveBarrelToNewPosition mva #$30 CharCode ; if angle goes through 0 we clear the barrel - jsr drawtankNrX + jsr DrawTankNr.drawtankNrX jmp MoveBarrelToNewPosition rotateLeft dec angleTable,x bpl MoveBarrelToNewPosition mva #$2e CharCode - jsr drawtankNrX + jsr DrawTankNr.drawtankNrX jmp MoveBarrelToNewPosition diff --git a/scorch.xex b/scorch.xex index 4322120..4e71576 100644 Binary files a/scorch.xex and b/scorch.xex differ diff --git a/weapons.asm b/weapons.asm index 57d9c23..278c945 100644 --- a/weapons.asm +++ b/weapons.asm @@ -1129,7 +1129,7 @@ pressedLeft cmp #$ff ; if angle goes through 0 we clear the barrel bne NotThrough90DegreesLeft mva #$2e CharCode - jsr drawtankNrX + jsr DrawTankNr.drawtankNrX NotThrough90DegreesLeft cmp #(255-91) jne BeforeFire @@ -1144,7 +1144,7 @@ pressedRight lda AngleTable,x bne NotThrough90DegreesRight mva #$30 CharCode ; if angle goes through 0 we clear the barrel - jsr drawtankNrX + jsr DrawTankNr.drawtankNrX NotThrough90DegreesRight cmp #91 jne BeforeFire