diff --git a/Atari/lib/5200MACRO.ASM b/Atari/lib/5200MACRO.ASM index 506a5cd..7747352 100644 --- a/Atari/lib/5200MACRO.ASM +++ b/Atari/lib/5200MACRO.ASM @@ -139,6 +139,16 @@ pla tay .endm +;------------------------------------- + .macro txy + txa + tay + .endm +;------------------------------------- + .macro tyx + tya + tax + .endm ;------------------------------------- .macro pause ;waits :1 number (byte) of frames diff --git a/Atari/lib/ATARISYS.ASM b/Atari/lib/ATARISYS.ASM index 3fa62a6..6784f24 100644 --- a/Atari/lib/ATARISYS.ASM +++ b/Atari/lib/ATARISYS.ASM @@ -161,7 +161,7 @@ APPMHI EQU $0E ;APPL MEM HI LIMIT ; POKMSK EQU $10 ;MASK POKEY IRQ BRKKEY EQU $11 ;BREAK KEY FLAG -RTCLOK EQU $12 ;REAL TIME CLOCK +RTCLOK EQU $13 ;REAL TIME CLOCK (only 2 bytes without $12 !!!) BUFADR EQU $15 ;INDIRECT BUFF ADDR ICCOMT EQU $17 ;COMMAND FOR VECTOR DSKFMS EQU $18 ;FMS POINTER diff --git a/definitions.asm b/definitions.asm index 691e50d..7d09d82 100644 --- a/definitions.asm +++ b/definitions.asm @@ -27,6 +27,8 @@ space = 0 ; space in screencodes KeyRepeatSpeed = 8 ; (max 127 !!!) FirstKeySpeed = 8 ; additional delay for first keypress +VuMeterTime = 2 ; Time of inactivity for VU Meter (1=5sec) + ;character codes for symbols (tank, parachute, etc. ) ; characters from tanks.fnt (graphics screen) char_parachute = $02 diff --git a/game.asm b/game.asm index 5d0c1cb..c32c65a 100644 --- a/game.asm +++ b/game.asm @@ -1430,4 +1430,53 @@ FinishResultDisplay jmp TypeLine4x4 ; jsr:rts .endp +.IF VU_METER = 1 +.proc VUMeter + ; No VUMeter if key pressed + jsr GetKeyFast + cmp #@kbcode._none + bne EndMeter + ; check timer + lda RTCLOK + cmp #VuMeterTime + bne EndMeter + ; store all angles + ldx NumberOfPlayers +@ lda AngleTable,x + sta previousAngle,x + dex + bpl @- + ; let's go! +Meter + jsr ClearTanks + ldx NumberOfPlayers +@ lda trackn_audc+2 + :4 asl + sta AngleTable,x + dex + bpl @- + jsr drawtanks + jsr WaitOneFrame + jsr GetKeyFast + cmp #@kbcode._none + beq Meter + ; restore all angles + jsr ClearTanks + ldx NumberOfPlayers +@ lda previousAngle,x + sta AngleTable,x + dex + bpl @- + jsr drawtanks + jsr drawtanknr +EndMeterAndReset + lda #0 + sta RTCLOK+1 + sta RTCLOK +EndMeter + rts +.endp +.ENDIF + + .ENDIF \ No newline at end of file diff --git a/scorch.asm b/scorch.asm index 22c0be8..5e47a22 100644 --- a/scorch.asm +++ b/scorch.asm @@ -30,7 +30,8 @@ .ifndef CART_VERSION .def CART_VERSION = 0 ; if 1 - dual splash screen .endif -.def METEORS = 1 ; if 1 - meteors on game +.def METEORS = 0 ; if 1 - meteors on game +.def VU_METER = 1 ; if 1 - VU Meter on game .def XCORRECTION_FOR_PM = 0 ; if 1 - active x position of tanks correction fo PMG .def FASTER_GRAF_PROCS = 1 ; if 1 - activates faster graphics routines ; (direct writes to screen memory - atari only :) ) @@ -40,7 +41,7 @@ ;--------------------------------------------------- .macro build - dta d"1.46" ; number of this build (4 bytes) + dta d"1.47" ; number of this build (4 bytes) .endm .macro RMTSong diff --git a/scorch.bin b/scorch.bin index f55e18f..b52949c 100644 Binary files a/scorch.bin and b/scorch.bin differ diff --git a/scorch.xex b/scorch.xex index 93d6cfa..737feef 100644 Binary files a/scorch.xex and b/scorch.xex differ diff --git a/weapons.asm b/weapons.asm index 922c255..4dbebe9 100644 --- a/weapons.asm +++ b/weapons.asm @@ -1277,11 +1277,15 @@ ContinueToCheckMaxForce2 ; $FB - any key ; $f7 - shift ; $f3 - shift+key - +.IF VU_METER = 1 + jsr VUMeter.EndMeterAndReset +.ENDIF notpressed jsr CheckExitKeys ; Check for O, Esc or Start+Option keys spl:rts ; exit if pressed 'Exit keys' - +.IF VU_METER = 1 + jsr VUMeter +.ENDIF ldx TankNr ; for optimize jsr GetKeyFast and #%10111111 ; SHIFT elimination