Compare commits

...

6 Commits

Author SHA1 Message Date
Pirx 8b29184886 Merge pull request #126 from pkali/develop
Develop
2022-08-22 15:05:42 -04:00
Pirx 4218791068 readme updt 2022-08-22 15:05:21 -04:00
Pecusx 90eff39dda Manuals update 2022-08-22 20:30:24 +02:00
Pecusx 662bc1304a v 1.11
Manuals update
2022-08-22 20:25:41 +02:00
Pecusx 8052add0ab Veeeeeery long tank names fix 2022-08-22 19:48:46 +02:00
Pecusx 7f85a7ed6a Walls added! #50
And Battery activation fix :)
2022-08-22 19:27:02 +02:00
11 changed files with 112 additions and 16 deletions
+11 -4
View File
@@ -12,8 +12,15 @@ On the first screen, you can configure gameplay options:
* number of rounds in a game * number of rounds in a game
* missile speed (does not affect the flight path - only changes the apparent missile speed - does not change anything in the gameplay itself) * missile speed (does not affect the flight path - only changes the apparent missile speed - does not change anything in the gameplay itself)
* frequency of suicides :) - if for a number of turns the game has not recorded hits (tanks are constantly shooting inaccurately), after one of such misses a tank commits suicide - here you determine how long they can "shooting for the stars" :) - if only people play the optimal setting is "norm", in the case of computer-controlled players ... you choose. * frequency of suicides :) - if for a number of turns the game has not recorded hits (tanks are constantly shooting inaccurately), after one of such misses a tank commits suicide - here you determine how long they can "shooting for the stars" :) - if only people play the optimal setting is "norm", in the case of computer-controlled players ... you choose.
* The height (and undulation) of the mountains from almost flat (NL - Kingdom of the Netherlands), to soaring and high (NP - Federal Democratic Republic of Nepal) * The height (and undulation) of the mountains from almost flat (NL - Kingdom of the Netherlands), to soaring and high (NP - Federal Democratic Republic of Nepal)
* the way the walls (edges of the screen) work:
1. none - projectiles that flew off the screen do not return
2. wrap - the screen "wraps" and projectiles that flew to the right appear on the left side (and vice versa)
3. bump - the right and left walls deflect projectiles that want to fly through them
4. boxy - just like bump, except that the "ceiling" also reflects projectiles
5. rand - at the beginning of each round, one of the above 4 ways the walls work is drawn.
Translated with www.DeepL.com/Translator (free version)
Select options with cursor keys or joystick. Select options with cursor keys or joystick.
The [RETURN] key or Joystick button moves to the next screen. The [RETURN] key or Joystick button moves to the next screen.
@@ -126,16 +133,16 @@ And here are the `ExplosionRadius` values for each weapon:
| Baby Missile | 11 | | Baby Missile | 11 |
| Missile | 17 | | Missile | 17 |
| Baby Nuke | 25 | | Baby Nuke | 25 |
| Nuke | 31 | | Nuke | 30 |
| LeapFrog| 17 15 13 | | LeapFrog| 17 15 13 |
| Funky Bomb | 21 11 (* 5) | | Funky Bomb | 21 11 (* 5) |
| MIRV | 17 (* 5) | | MIRV | 17 (* 5) |
| Death's Head | 31 (* 5) | | Death's Head | 30 (* 5) |
| Napalm | x 40 (this weapon is different and the distance from the center is not determined, simply any tank within range of the flames loses 40 units of energy - the ExplosionRadius variable is not used) | | Napalm | x 40 (this weapon is different and the distance from the center is not determined, simply any tank within range of the flames loses 40 units of energy - the ExplosionRadius variable is not used) |
| Hot Napalm | x 80 (the same principle as in Napalm) | | Hot Napalm | x 80 (the same principle as in Napalm) |
| Baby Roller | 11 | | Baby Roller | 11 |
| Roller | 21 | | Roller | 21 |
| Heavy Roller | 31 | | Heavy Roller | 30 |
| Riot Charge | 31 | | Riot Charge | 31 |
| Riot Blast | 0 (in reality - 61 but with these weapons it is not taken into account when counting energy loss only the width of the ground to fall) | | Riot Blast | 0 (in reality - 61 but with these weapons it is not taken into account when counting energy loss only the width of the ground to fall) |
| Riot Bomb | 17 | | Riot Bomb | 17 |
+10 -3
View File
@@ -12,6 +12,13 @@ Na pierwszym ekranie możemy skonfigurować opcje rozgrywwki:
* szybkość lotu pocisków (nie ma wpływu na tor lotu - zmienia jedynie widoczną prędkość rysowania - nie zmienia nic w samej rozgrywce) * szybkość lotu pocisków (nie ma wpływu na tor lotu - zmienia jedynie widoczną prędkość rysowania - nie zmienia nic w samej rozgrywce)
* częstotliwość samobójstw :) - jeśli przez ileś tur gra nie odnotowała trafień (czołgi ciągle strzelają niecelnie) jeden z takich pudłujących czołgów popełnia samobójstwo - tu określamy jak długo mogą “strzelać w próżnię” :) - jeśli grają tylko ludzie optymalne ustawienie to “norm”, w przypadku graczy sterowanych przez komputer… wedle uznania. * częstotliwość samobójstw :) - jeśli przez ileś tur gra nie odnotowała trafień (czołgi ciągle strzelają niecelnie) jeden z takich pudłujących czołgów popełnia samobójstwo - tu określamy jak długo mogą “strzelać w próżnię” :) - jeśli grają tylko ludzie optymalne ustawienie to “norm”, w przypadku graczy sterowanych przez komputer… wedle uznania.
* wysokość (i pofałdowanie) gór od prawie płaskich (NL - Królestwo Niderlandów), do strzelistych i wysokich (NP - Federalna Demokratyczna Republika Nepalu) * wysokość (i pofałdowanie) gór od prawie płaskich (NL - Królestwo Niderlandów), do strzelistych i wysokich (NP - Federalna Demokratyczna Republika Nepalu)
* sposób działania ścian (krawędzi ekranu):
1. none - pociski, które wyleciały poza ekran nie wracają
2. wrap - ekran "zawija się" i pociski, które wyleciały w prawo pojawiają się z lewej strony (i odwrotnie)
3. bump - prawa i lewa ściana odbijają pociski, które chcą przez nie przelecieć
4. boxy - tak jak bump, tyle że "sufit" także odbija pociski
5. rand - na początku każdej rundy losowany jest jeden z 4 powyższych sposobów działania ścian
Wybór opcji klawiszami kursora lub joystickiem. Wybór opcji klawiszami kursora lub joystickiem.
@@ -122,16 +129,16 @@ A oto wartości promienia rażenia (ExplosionRadius) dla poszczególnych broni:
| Baby Missile | 11 | | Baby Missile | 11 |
| Missile | 17 | | Missile | 17 |
| Baby Nuke | 25 | | Baby Nuke | 25 |
| Nuke | 31 | | Nuke | 30 |
| LeapFrog| 17 15 13 | | LeapFrog| 17 15 13 |
| Funky Bomb | 21 11 (* 5) | | Funky Bomb | 21 11 (* 5) |
| MIRV | 17 (* 5) | | MIRV | 17 (* 5) |
| Death's Head | 31 (* 5) | | Death's Head | 30 (* 5) |
| Napalm | x 40 (ta broń jest inna i nie jest wyznaczana odległość od centrum, po prostu każdy czołg znajdujący się w zasięgu płomieni traci 40 jednostek energii - zmienna ExplosionRadius nie jest używana) | | Napalm | x 40 (ta broń jest inna i nie jest wyznaczana odległość od centrum, po prostu każdy czołg znajdujący się w zasięgu płomieni traci 40 jednostek energii - zmienna ExplosionRadius nie jest używana) |
| Hot Napalm | x 80 (zasada taka jak w Napalm) | | Hot Napalm | x 80 (zasada taka jak w Napalm) |
| Baby Roller | 11 | | Baby Roller | 11 |
| Roller | 21 | | Roller | 21 |
| Heavy Roller | 31 | | Heavy Roller | 30 |
| Riot Charge | 31 | | Riot Charge | 31 |
| Riot Blast | 0 (tak na prawdę - 61 ale przy tych broniach nie jest brana pod uwagę przy liczeniu ubytku energii tylko szerokości gruntu do opadnięcia) | | Riot Blast | 0 (tak na prawdę - 61 ale przy tych broniach nie jest brana pod uwagę przy liczeniu ubytku energii tylko szerokości gruntu do opadnięcia) |
| Riot Bomb | 17 | | Riot Bomb | 17 |
+11
View File
@@ -48,6 +48,17 @@ With the advent of [fujinet](https://fujinet.online/) we are thinking about maki
## Changes: ## Changes:
###### Version 1.11
2022-08-22
A release lollapalooza.
The silliness indicator crashed. What are we doing?
Changes:
* A very silly buffer overflow bug fixed - it allowed for infinite (well... to the point) lengths of tank names, or rather for overwriting code with arbitrary values.
* Gamefield walls added https://github.com/pkali/scorch_src/issues/50. Choosing a different wall effect from the main options menu allows for a sophisticated tactics change.
###### Version 1.10 ###### Version 1.10
2022-08-21 2022-08-21
+1 -1
View File
@@ -4,7 +4,7 @@
; initial values for some variables ; initial values for some variables
initialvaluesStart initialvaluesStart
I_OptionsTable .by 0,1,2,2,0,1,3,2 I_OptionsTable .by 0,1,2,2,0,1,3,2,0
I_RoundsInTheGame .by 10 ;how many rounds in the current game I_RoundsInTheGame .by 10 ;how many rounds in the current game
I_seppukuVal .by 75 I_seppukuVal .by 75
I_mountainDeltaH .by 3 I_mountainDeltaH .by 3
+1 -1
View File
@@ -17,7 +17,7 @@ display = $1010 ;screen takes $2K due to clearing routine
margin = 40 ;mountain drawing Y variable margin margin = 40 ;mountain drawing Y variable margin
MaxPlayers = 6 MaxPlayers = 6
maxOptions = 8 ;number of all options maxOptions = 9 ;number of all options
PMOffsetX = $2C ; P/M to graphics offset PMOffsetX = $2C ; P/M to graphics offset
PMOffsetY = $23 ; P/M to graphics offset PMOffsetY = $23 ; P/M to graphics offset
napalmRadius = 10 napalmRadius = 10
+1
View File
@@ -17,6 +17,7 @@ OptionsHere
dta d"Missiles : slug slow norm fast hare " dta d"Missiles : slug slow norm fast hare "
dta d"Seppuku : nevr rare norm oftn alws " dta d"Seppuku : nevr rare norm oftn alws "
dta d"Mountains: NL BE CZ CH NP " dta d"Mountains: NL BE CZ CH NP "
dta d"Walls : none wrap bump boxy rand "
OptionsScreenEnd OptionsScreenEnd
;----------------------------------------------- ;-----------------------------------------------
ListOfWeapons ListOfWeapons
+21 -3
View File
@@ -36,7 +36,7 @@
;we decided it must go in 'English' to let other people work on it ;we decided it must go in 'English' to let other people work on it
.macro build .macro build
dta d"1.10" ; number of this build (3 bytes) dta d"1.11" ; number of this build (3 bytes)
.endm .endm
icl 'definitions.asm' icl 'definitions.asm'
@@ -219,7 +219,7 @@ FirstSTART
START START
; Startup sequence ; Startup sequence
jsr Initialize jsr Initialize
;jsr GameOverScreen ; only for test !!! ;jsr GameOverScreen ; only for test !!!
lda #song_main_menu lda #song_main_menu
@@ -242,6 +242,7 @@ START
; for the round #1 shooting sequence is random ; for the round #1 shooting sequence is random
MainGameLoop MainGameLoop
jsr SetWallsType
; first set default barrel lengths (fix for Long Schlong activation :) ) ; first set default barrel lengths (fix for Long Schlong activation :) )
; we must do it before purchase/activate ; we must do it before purchase/activate
ldx #(MaxPlayers-1) ldx #(MaxPlayers-1)
@@ -1508,7 +1509,24 @@ nextishigher
rts rts
.endp .endp
;--------------------------------------------------
.proc SetWallsType
;--------------------------------------------------
mva #0 WallsType
lda OptionsTable+8
cmp #4
beq SetRandomWalls
lsr
ror WallsType
lsr
ror WallsType
rts
SetRandomWalls
lda random
and #%11000000
sta WallsType
rts
.endp
;-------------------------------------------------- ;--------------------------------------------------
.proc GetKey ; waits for pressing a key and returns pressed value in A .proc GetKey ; waits for pressing a key and returns pressed value in A
; when [ESC] is pressed, escFlag is set to 1 ; when [ESC] is pressed, escFlag is set to 1
BIN
View File
Binary file not shown.
+4 -1
View File
@@ -204,7 +204,7 @@ OptionSetLoop
; next option ; next option
adw temp #40 ;jump to next line adw temp #40 ;jump to next line
inc:lda temp2 inc:lda temp2
cmp #maxoptions ;number of options cmp #maxOptions ;number of options
bne OptionsSetMainLoop bne OptionsSetMainLoop
;inversing the first few chars of the selected line (OptionsY) ;inversing the first few chars of the selected line (OptionsY)
@@ -853,7 +853,9 @@ invSelectDef
; if activate battery, we do it differently ; if activate battery, we do it differently
mva #sfx_battery sfx_effect mva #sfx_battery sfx_effect
mva #99 Energy,x mva #99 Energy,x
phy
jsr MaxForceCalculate jsr MaxForceCalculate
ply
jmp DecreaseDefensive ; bypass activation jmp DecreaseDefensive ; bypass activation
NotBattery NotBattery
cmp #ind_Long_Barrel____ cmp #ind_Long_Barrel____
@@ -1105,6 +1107,7 @@ LastNameChar
lda #$80 ; place cursor on the end lda #$80 ; place cursor on the end
sta NameAdr,y sta NameAdr,y
dey
sty PositionInName sty PositionInName
+3 -2
View File
@@ -29,7 +29,7 @@ skilltable ; computer controlled players' skills (1-8), 0 - human (no cleaning
;---------------------------------------------------- ;----------------------------------------------------
variablesToInitialize variablesToInitialize
;Options DO NOT ZERO ON RESTART GAME - ticket #27 ;Options DO NOT ZERO ON RESTART GAME - ticket #27
OptionsTable .by 0,1,2,2,0,1,3,2 OptionsTable .by 0,1,2,2,0,1,3,2,0
RoundsInTheGame .by 10 ;how many rounds in the current game RoundsInTheGame .by 10 ;how many rounds in the current game
seppukuVal .by 75 seppukuVal .by 75
mountainDeltaH .by 3 mountainDeltaH .by 3
@@ -138,7 +138,8 @@ MaxWind .ds 1 ;
WindOrientation .DS 1 ;(0-right,1-left) WindOrientation .DS 1 ;(0-right,1-left)
;---------------------------------------------------- ;----------------------------------------------------
;Counter .DS 1 ;temporary Counter for outside loops ;Counter .DS 1 ;temporary Counter for outside loops
;HitFlag .DS 1 ;$ff when missile hit ground, $00 when no hit, $01-$06 tank index+1 when hit tank ;HitFlag .DS 1 ;$ff when missile hit ground, $00 when no hit, $01-$06 tank index+1 when hit tank
WallsType .ds 1 ; bits 6 and 7: 00 - none, 01 - bump, 10 - wrap, 11 - boxy
;---------------------------------------------------- ;----------------------------------------------------
xtankstableL ;X positions of tanks (lower left point) xtankstableL ;X positions of tanks (lower left point)
.DS [MaxPlayers] .DS [MaxPlayers]
+49 -1
View File
@@ -1798,6 +1798,12 @@ NoWind
mwa ytraj+1 ybyte mwa ytraj+1 ybyte
jsr draw jsr draw
;key ;key
bit LaserFlag
bmi LaserNoWalls
; Check for walls
jsr MakeWalls
;
LaserNoWalls
mwa xtraj+1 XtrajOld+1 mwa xtraj+1 XtrajOld+1
mwa ytraj+1 YtrajOld+1 mwa ytraj+1 YtrajOld+1
@@ -2333,7 +2339,49 @@ MIRValreadyAll
;jsr drawtanks ;jsr drawtanks
rts rts
.endp .endp
; -------------------------------------------------
.proc MakeWalls
; -------------------------------------------------
bit WallsType ; ; bits 6 and 7: 00 - none, 01 - bump, 10 - wrap, 11 - boxy
bpl WrapAndNone
bvc MakeBump
; top bounce
bit ytraj+2
bpl NoOnTop
sec
.rept 4
lda #$00
sbc vy+#
sta vy+#
.endr
NoOnTop
MakeBump
cpw xtraj+1 #screenwidth
bcc OnScreen
; inverse vx (bouncing wall)
sec
.rept 4
lda #$00
sbc vx+#
sta vx+#
.endr
rts
WrapAndNone
bvc NoWall
cpw xtraj+1 #screenwidth
bcc OnScreen
; (wrapping wall)
bit xtraj+2
bmi LeftWrap
RightWrap
sbw xtraj+1 #screenwidth
rts
LeftWrap
adw xtraj+1 #screenwidth
OnScreen
NoWall
rts
.endp
; ------------------------------------------------- ; -------------------------------------------------
.proc WhiteFlag .proc WhiteFlag
; ------------------------------------------------- ; -------------------------------------------------