mirror of
https://github.com/pkali/scorch_src.git
synced 2026-05-21 21:35:16 +02:00
+11
-4
@@ -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
@@ -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 |
|
||||||
|
|||||||
@@ -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
@@ -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
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
+20
-2
@@ -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'
|
||||||
@@ -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
Binary file not shown.
+4
-1
@@ -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
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
+2
-1
@@ -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
|
||||||
@@ -139,6 +139,7 @@ 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
@@ -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
|
||||||
; -------------------------------------------------
|
; -------------------------------------------------
|
||||||
|
|||||||
Reference in New Issue
Block a user