mirror of
https://github.com/pkali/scorch_src.git
synced 2026-05-20 22:34:21 +02:00
Manuals and code cleanup
This commit is contained in:
@@ -204,66 +204,6 @@ invertme
|
||||
rts
|
||||
.endp
|
||||
|
||||
; --------------------------------------
|
||||
; Sets the appropriate variables based on the options table
|
||||
;
|
||||
.proc SetVariablesFromOptions
|
||||
;first option
|
||||
ldy OptionsTable
|
||||
iny
|
||||
iny
|
||||
sty NumberOfPlayers ;1=1 player (but minimum is 2)
|
||||
|
||||
;second option (cash)
|
||||
|
||||
|
||||
ldy OptionsTable+1
|
||||
ldx #0
|
||||
@
|
||||
lda CashOptionL,y
|
||||
sta moneyL,x
|
||||
lda CashOptionH,y
|
||||
sta moneyH,x
|
||||
inx
|
||||
cpx NumberOfPlayers
|
||||
bne @-
|
||||
|
||||
;third option (gravity)
|
||||
ldy OptionsTable+2
|
||||
lda GravityTable,y
|
||||
sta gravity
|
||||
|
||||
;fourth option (wind)
|
||||
ldy OptionsTable+3
|
||||
lda MaxWindTable,y
|
||||
sta MaxWind
|
||||
|
||||
;fifth option (no of rounds)
|
||||
ldy OptionsTable+4
|
||||
lda RoundsTable,y
|
||||
sta RoundsInTheGame
|
||||
|
||||
;6th option (shell speed)
|
||||
ldy OptionsTable+5
|
||||
lda flyDelayTable,y
|
||||
sta flyDelay
|
||||
|
||||
;7th option (Airstrike after how many missess)
|
||||
ldy OptionsTable+6
|
||||
lda seppukuTable,y
|
||||
sta seppukuVal
|
||||
|
||||
;8th option (how aggressive are mountains)
|
||||
ldy OptionsTable+7
|
||||
lda mountainsDeltaTableH,y
|
||||
sta mountainDeltaH
|
||||
lda mountainsDeltaTableL,y
|
||||
sta mountainDeltaL
|
||||
|
||||
|
||||
rts
|
||||
.endp
|
||||
|
||||
;-------------------------------------------
|
||||
; call of the purchase (and activate) screens for each tank
|
||||
.proc CallPurchaseForEveryTank
|
||||
@@ -1603,173 +1543,6 @@ displayloop1
|
||||
rts
|
||||
.endp
|
||||
|
||||
;--------------------------------
|
||||
.proc DisplayResults ;
|
||||
;displays results of the round
|
||||
;using 4x4 font
|
||||
jsr RoundOverSprites
|
||||
|
||||
|
||||
mva #$ff plot4x4color
|
||||
|
||||
;centering the result screen
|
||||
mva #((ScreenHeight/2)-(8*4)) ResultY
|
||||
|
||||
|
||||
;upper frame
|
||||
mva ResultY LineYdraw
|
||||
jsr TL4x4_top
|
||||
|
||||
adb ResultY #4 ;next line
|
||||
|
||||
;Header1
|
||||
;Displays round number
|
||||
lda CurrentRoundNr
|
||||
cmp RoundsInTheGame
|
||||
beq GameOver4x4
|
||||
|
||||
sta decimal
|
||||
mwa #RoundNrDisplay displayposition
|
||||
jsr displaybyte ;decimal (byte), displayposition (word)
|
||||
|
||||
mwa #LineHeader1 LineAddress4x4
|
||||
mwa #((ScreenWidth/2)-(8*4)) LineXdraw
|
||||
mva ResultY LineYdraw
|
||||
jsr TypeLine4x4
|
||||
beq @+ ;unconditional jump, because TypeLine4x4 ends with beq
|
||||
|
||||
GameOver4x4
|
||||
RmtSong song_round_over
|
||||
mwa #LineGameOver LineAddress4x4
|
||||
mwa #((ScreenWidth/2)-(8*4)) LineXdraw
|
||||
mva ResultY LineYdraw
|
||||
jsr TypeLine4x4
|
||||
mva #1 GameIsOver
|
||||
|
||||
@
|
||||
adb ResultY #4 ;next line
|
||||
|
||||
;Empty line
|
||||
mva ResultY LineYdraw
|
||||
jsr TL4x4_empty
|
||||
|
||||
adb ResultY #2 ;next line
|
||||
|
||||
|
||||
;Header2
|
||||
mwa #LineHeader2 LineAddress4x4
|
||||
mwa #((ScreenWidth/2)-(8*4)) LineXdraw
|
||||
mva ResultY LineYdraw
|
||||
jsr TypeLine4x4
|
||||
|
||||
adb ResultY #4 ;next line
|
||||
|
||||
;Empty line
|
||||
mva ResultY LineYdraw
|
||||
jsr TL4x4_empty
|
||||
|
||||
sbb ResultY #2 ;next line (was empty)
|
||||
|
||||
ldx NumberOfPlayers ;we start from the highest (best) tank
|
||||
dex ;and it is the last one
|
||||
stx ResultOfTankNr ;in TankSequence table
|
||||
|
||||
mwa #TanksNames tempXROLLER
|
||||
|
||||
ResultOfTheNextPlayer
|
||||
ldx ResultOfTankNr ;we are after a round, so we can use TankNr
|
||||
lda TankSequence,x ;and we keep here real number if the tank
|
||||
sta TankNr ;for which we are displaying results
|
||||
|
||||
|
||||
|
||||
|
||||
adb ResultY #4 ;next line
|
||||
|
||||
;there are at least 2 players, so we can safely
|
||||
;start displaying the result
|
||||
|
||||
lda #3 ;it means |
|
||||
sta ResultLineBuffer
|
||||
|
||||
ldy TankNr
|
||||
lda ResultsTable,y
|
||||
sta decimal
|
||||
mva #0 decimal+1
|
||||
mwa #(ResultLineBuffer+8) displayposition
|
||||
jsr displaydec5 ;decimal (byte), displayposition (word)
|
||||
|
||||
; overwrite the second digit of the points (max 255)
|
||||
;it means ":"
|
||||
mva #26 ResultLineBuffer+9
|
||||
|
||||
ldx #0
|
||||
lda TankNr
|
||||
asl
|
||||
asl ; times 8, because it is lengtgh
|
||||
asl ; of the names of the tanks
|
||||
tay
|
||||
|
||||
TankNameCopyLoop
|
||||
lda (tempXROLLER),y ;XROLLER is not working now
|
||||
and #$3f ;always CAPITAL letters
|
||||
inx
|
||||
sta ResultLineBuffer,x
|
||||
iny
|
||||
cpx #8 ; end of name
|
||||
bne TankNameCopyLoop
|
||||
; last letter of tank name overwrites first digit of the points (max 255)
|
||||
|
||||
|
||||
;just after the digits
|
||||
;it means |
|
||||
mva #$3 ResultLineBuffer+13
|
||||
|
||||
;result line display
|
||||
mwa #ResultLineBuffer LineAddress4x4
|
||||
mwa #((ScreenWidth/2)-(8*4)) LineXdraw
|
||||
mva ResultY LineYdraw
|
||||
jsr TypeLine4x4
|
||||
|
||||
adb ResultY #4 ;next line
|
||||
|
||||
;Empty line
|
||||
mva ResultY LineYdraw
|
||||
jsr TL4x4_empty
|
||||
|
||||
dec ResultOfTankNr
|
||||
bmi FinishResultDisplay
|
||||
|
||||
sbb ResultY #2 ;distance between lines is smaller
|
||||
|
||||
jmp ResultOfTheNextPlayer
|
||||
|
||||
FinishResultDisplay
|
||||
mva ResultY LineYdraw
|
||||
;jmp TL4x4_bottom ; just go
|
||||
.endp
|
||||
|
||||
.proc TL4x4_bottom
|
||||
;bottom of the frame
|
||||
mwa #LineBottom LineAddress4x4
|
||||
mwa #((ScreenWidth/2)-(8*4)) LineXdraw
|
||||
jmp TypeLine4x4 ; jsr:rts
|
||||
.endp
|
||||
|
||||
.proc TL4x4_top
|
||||
;bottom of the frame
|
||||
mwa #LineTop LineAddress4x4
|
||||
mwa #((ScreenWidth/2)-(8*4)) LineXdraw
|
||||
jmp TypeLine4x4 ; jsr:rts
|
||||
.endp
|
||||
|
||||
.proc TL4x4_empty
|
||||
;empty frame
|
||||
mwa #LineEmpty LineAddress4x4
|
||||
mwa #((ScreenWidth/2)-(8*4)) LineXdraw
|
||||
jmp TypeLine4x4 ; jsr:rts
|
||||
.endp
|
||||
|
||||
;--------------------------------------------------
|
||||
.proc GameOverScreen
|
||||
;--------------------------------------------------
|
||||
|
||||
@@ -9,7 +9,12 @@ On the first screen, you can configure gameplay options:
|
||||
* number of players (2 - 6) includes both human and computer-controlled players
|
||||
* the initial amount of cash of each player (2K is the optimal value we chose, but for short games, it is worth choosing a higher value)
|
||||
* gravity
|
||||
* maximum wind strength (wind is drawn at the beginning of each round or during the round between turns, here we can choose how strong it can be)
|
||||
* maximum wind strength (wind is drawn at the beginning of each round or during the round between turns, here we can choose how strong it can be):
|
||||
* 1B - maximum wind strength: 5
|
||||
* 3B - maximum wind strength: 20
|
||||
* 5B - maximum wind strength: 40
|
||||
* 7B - maximum wind strength: 70
|
||||
* 9B - maximum wind strength: 99
|
||||
* 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)
|
||||
* 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.
|
||||
|
||||
@@ -9,7 +9,12 @@ Na pierwszym ekranie możemy skonfigurować opcje rozgrywki:
|
||||
* ilość graczy (2 - 6) obejmuje tak ludzi jak graczy sterowanych przez komputer
|
||||
* początkową ilość gotówki każdego z graczy (8k to wybrana przez nas wartość optymalna, lecz przy krótkich rozgrywkach warto wybrać większą wartość)
|
||||
* grawitacja
|
||||
* maksymalna siła wiatru (wiatr jest losowany na początku każdej z rund lub w czasie rundy pomiędzy turami, tu możemy wybrać jak silny może być)
|
||||
* maksymalna siła wiatru (wiatr jest losowany na początku każdej z rund lub w czasie rundy pomiędzy turami, tu możemy wybrać jak silny może być):
|
||||
* 1B - maksymalna siła wiatru: 5
|
||||
* 3B - maksymalna siła wiatru: 20
|
||||
* 5B - maksymalna siła wiatru: 40
|
||||
* 7B - maksymalna siła wiatru: 70
|
||||
* 9B - maksymalna siła wiatru: 99
|
||||
* liczba rozgrywanych rund
|
||||
* 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.
|
||||
|
||||
@@ -1158,5 +1158,229 @@ SetRandomWalls
|
||||
sta WallsType
|
||||
rts
|
||||
.endp
|
||||
; --------------------------------------
|
||||
; Sets the appropriate variables based on the options table
|
||||
;
|
||||
.proc SetVariablesFromOptions
|
||||
;first option
|
||||
ldy OptionsTable
|
||||
iny
|
||||
iny
|
||||
sty NumberOfPlayers ;1=1 player (but minimum is 2)
|
||||
|
||||
;second option (cash)
|
||||
|
||||
ldy OptionsTable+1
|
||||
ldx #0
|
||||
@
|
||||
lda CashOptionL,y
|
||||
sta moneyL,x
|
||||
lda CashOptionH,y
|
||||
sta moneyH,x
|
||||
inx
|
||||
cpx NumberOfPlayers
|
||||
bne @-
|
||||
|
||||
;third option (gravity)
|
||||
ldy OptionsTable+2
|
||||
lda GravityTable,y
|
||||
sta gravity
|
||||
|
||||
;fourth option (wind)
|
||||
ldy OptionsTable+3
|
||||
lda MaxWindTable,y
|
||||
sta MaxWind
|
||||
|
||||
;fifth option (no of rounds)
|
||||
ldy OptionsTable+4
|
||||
lda RoundsTable,y
|
||||
sta RoundsInTheGame
|
||||
|
||||
;6th option (shell speed)
|
||||
ldy OptionsTable+5
|
||||
lda flyDelayTable,y
|
||||
sta flyDelay
|
||||
|
||||
;7th option (Airstrike after how many missess)
|
||||
ldy OptionsTable+6
|
||||
lda seppukuTable,y
|
||||
sta seppukuVal
|
||||
|
||||
;8th option (how aggressive are mountains)
|
||||
ldy OptionsTable+7
|
||||
lda mountainsDeltaTableH,y
|
||||
sta mountainDeltaH
|
||||
lda mountainsDeltaTableL,y
|
||||
sta mountainDeltaL
|
||||
|
||||
rts
|
||||
.endp
|
||||
|
||||
;--------------------------------
|
||||
.proc DisplayResults ;
|
||||
;displays results of the round
|
||||
;using 4x4 font
|
||||
jsr RoundOverSprites
|
||||
|
||||
|
||||
mva #$ff plot4x4color
|
||||
|
||||
;centering the result screen
|
||||
mva #((ScreenHeight/2)-(8*4)) ResultY
|
||||
|
||||
|
||||
;upper frame
|
||||
mva ResultY LineYdraw
|
||||
jsr TL4x4_top
|
||||
|
||||
adb ResultY #4 ;next line
|
||||
|
||||
;Header1
|
||||
;Displays round number
|
||||
lda CurrentRoundNr
|
||||
cmp RoundsInTheGame
|
||||
beq GameOver4x4
|
||||
|
||||
sta decimal
|
||||
mwa #RoundNrDisplay displayposition
|
||||
jsr displaybyte ;decimal (byte), displayposition (word)
|
||||
|
||||
mwa #LineHeader1 LineAddress4x4
|
||||
mwa #((ScreenWidth/2)-(8*4)) LineXdraw
|
||||
mva ResultY LineYdraw
|
||||
jsr TypeLine4x4
|
||||
beq @+ ;unconditional jump, because TypeLine4x4 ends with beq
|
||||
|
||||
GameOver4x4
|
||||
RmtSong song_round_over
|
||||
mwa #LineGameOver LineAddress4x4
|
||||
mwa #((ScreenWidth/2)-(8*4)) LineXdraw
|
||||
mva ResultY LineYdraw
|
||||
jsr TypeLine4x4
|
||||
mva #1 GameIsOver
|
||||
|
||||
@
|
||||
adb ResultY #4 ;next line
|
||||
|
||||
;Empty line
|
||||
mva ResultY LineYdraw
|
||||
jsr TL4x4_empty
|
||||
|
||||
adb ResultY #2 ;next line
|
||||
|
||||
|
||||
;Header2
|
||||
mwa #LineHeader2 LineAddress4x4
|
||||
mwa #((ScreenWidth/2)-(8*4)) LineXdraw
|
||||
mva ResultY LineYdraw
|
||||
jsr TypeLine4x4
|
||||
|
||||
adb ResultY #4 ;next line
|
||||
|
||||
;Empty line
|
||||
mva ResultY LineYdraw
|
||||
jsr TL4x4_empty
|
||||
|
||||
sbb ResultY #2 ;next line (was empty)
|
||||
|
||||
ldx NumberOfPlayers ;we start from the highest (best) tank
|
||||
dex ;and it is the last one
|
||||
stx ResultOfTankNr ;in TankSequence table
|
||||
|
||||
mwa #TanksNames tempXROLLER
|
||||
|
||||
ResultOfTheNextPlayer
|
||||
ldx ResultOfTankNr ;we are after a round, so we can use TankNr
|
||||
lda TankSequence,x ;and we keep here real number if the tank
|
||||
sta TankNr ;for which we are displaying results
|
||||
|
||||
|
||||
|
||||
|
||||
adb ResultY #4 ;next line
|
||||
|
||||
;there are at least 2 players, so we can safely
|
||||
;start displaying the result
|
||||
|
||||
lda #3 ;it means |
|
||||
sta ResultLineBuffer
|
||||
|
||||
ldy TankNr
|
||||
lda ResultsTable,y
|
||||
sta decimal
|
||||
mva #0 decimal+1
|
||||
mwa #(ResultLineBuffer+8) displayposition
|
||||
jsr displaydec5 ;decimal (byte), displayposition (word)
|
||||
|
||||
; overwrite the second digit of the points (max 255)
|
||||
;it means ":"
|
||||
mva #26 ResultLineBuffer+9
|
||||
|
||||
ldx #0
|
||||
lda TankNr
|
||||
asl
|
||||
asl ; times 8, because it is lengtgh
|
||||
asl ; of the names of the tanks
|
||||
tay
|
||||
|
||||
TankNameCopyLoop
|
||||
lda (tempXROLLER),y ;XROLLER is not working now
|
||||
and #$3f ;always CAPITAL letters
|
||||
inx
|
||||
sta ResultLineBuffer,x
|
||||
iny
|
||||
cpx #8 ; end of name
|
||||
bne TankNameCopyLoop
|
||||
; last letter of tank name overwrites first digit of the points (max 255)
|
||||
|
||||
|
||||
;just after the digits
|
||||
;it means |
|
||||
mva #$3 ResultLineBuffer+13
|
||||
|
||||
;result line display
|
||||
mwa #ResultLineBuffer LineAddress4x4
|
||||
mwa #((ScreenWidth/2)-(8*4)) LineXdraw
|
||||
mva ResultY LineYdraw
|
||||
jsr TypeLine4x4
|
||||
|
||||
adb ResultY #4 ;next line
|
||||
|
||||
;Empty line
|
||||
mva ResultY LineYdraw
|
||||
jsr TL4x4_empty
|
||||
|
||||
dec ResultOfTankNr
|
||||
bmi FinishResultDisplay
|
||||
|
||||
sbb ResultY #2 ;distance between lines is smaller
|
||||
|
||||
jmp ResultOfTheNextPlayer
|
||||
|
||||
FinishResultDisplay
|
||||
mva ResultY LineYdraw
|
||||
;jmp TL4x4_bottom ; just go
|
||||
.endp
|
||||
|
||||
.proc TL4x4_bottom
|
||||
;bottom of the frame
|
||||
mwa #LineBottom LineAddress4x4
|
||||
mwa #((ScreenWidth/2)-(8*4)) LineXdraw
|
||||
jmp TypeLine4x4 ; jsr:rts
|
||||
.endp
|
||||
|
||||
.proc TL4x4_top
|
||||
;bottom of the frame
|
||||
mwa #LineTop LineAddress4x4
|
||||
mwa #((ScreenWidth/2)-(8*4)) LineXdraw
|
||||
jmp TypeLine4x4 ; jsr:rts
|
||||
.endp
|
||||
|
||||
.proc TL4x4_empty
|
||||
;empty frame
|
||||
mwa #LineEmpty LineAddress4x4
|
||||
mwa #((ScreenWidth/2)-(8*4)) LineXdraw
|
||||
jmp TypeLine4x4 ; jsr:rts
|
||||
.endp
|
||||
|
||||
.ENDIF
|
||||
+1
-1
@@ -21,7 +21,7 @@
|
||||
|
||||
;---------------------------------------------------
|
||||
.macro build
|
||||
dta d"1.28" ; number of this build (4 bytes)
|
||||
dta d"1.30" ; number of this build (4 bytes)
|
||||
.endm
|
||||
|
||||
.macro RMTSong
|
||||
|
||||
BIN
Binary file not shown.
BIN
Binary file not shown.
Reference in New Issue
Block a user