mirror of
https://github.com/pkali/scorch_src.git
synced 2026-05-20 22:34:21 +02:00
@@ -51,6 +51,29 @@ With the advent of [fujinet](https://fujinet.online/) we are thinking about maki
|
|||||||
|
|
||||||
## Changelog:
|
## Changelog:
|
||||||
|
|
||||||
|
###### Version 1.28
|
||||||
|
2023-04-22
|
||||||
|
|
||||||
|
Greetings and salutations,
|
||||||
|
|
||||||
|
Allow me to present the release notes for Version 1.28 of our esteemed hobby game for 8-bit computers.
|
||||||
|
|
||||||
|
First and foremost, let it be known that we have reached the end of an era. We bid adieu to the solitary player versions, as we are determined to preserve the sanctity of this auspicious round version number.
|
||||||
|
|
||||||
|
Moving on to the technical enhancements and embellishments, we are proud to introduce a simulated stereo feature for those fortunate enough to possess the dual pokey hardware. This auditory wonder was brought to fruition by the esteemed Arthur "Two Pokeys" Jackson, whose mastery in the field of sound engineering knows no bounds.
|
||||||
|
|
||||||
|
Furthermore, we have bestowed upon our beloved creation a splash screen of unrivaled brilliance, crafted by the masterful xorcerer. This work of art, by the Artificial Unintelligence and Machine Forgetting, shall leave an indelible mark on all who behold it.
|
||||||
|
|
||||||
|
Our developers have also painstakingly refined the game's performance with a plethora of improvements, including a refined round and final results sorting mechanism, additional keyboard usage assistance in the main menu, and a significant acceleration of the 8x8 and 4x4 put char routines. Additionally, we have incorporated configurable hardware and screen memory layout agnostic put char routines to accommodate future ports and ensure seamless compatibility.
|
||||||
|
|
||||||
|
Last but certainly not least, our mountain drawing optimization shall elevate the visual experience to new heights, ensuring an immersive and enjoyable experience for all.
|
||||||
|
|
||||||
|
We hope that these improvements shall enhance your gaming experience, and we eagerly anticipate your feedback.
|
||||||
|
|
||||||
|
Yours sincerely,
|
||||||
|
|
||||||
|
The Developers
|
||||||
|
|
||||||
###### Version 1.27
|
###### Version 1.27
|
||||||
2023-02-07
|
2023-02-07
|
||||||
|
|
||||||
|
|||||||
@@ -1,877 +0,0 @@
|
|||||||
/***************************************/
|
|
||||||
/* Use MADS http://mads.atari8.info/ */
|
|
||||||
/* Mode: DLI (char mode) */
|
|
||||||
/***************************************/
|
|
||||||
|
|
||||||
;icl "Scorch50.h"
|
|
||||||
;icl "../lib/ATARISYS.ASM"
|
|
||||||
;icl "../lib/macro.hea"
|
|
||||||
|
|
||||||
; --- dmsc LZSS player routine on zero page
|
|
||||||
org $80
|
|
||||||
|
|
||||||
chn_copy .ds 9
|
|
||||||
chn_pos .ds 9
|
|
||||||
bptr .ds 2
|
|
||||||
cur_pos .ds 1
|
|
||||||
chn_bits .ds 1
|
|
||||||
|
|
||||||
bit_data .ds 1
|
|
||||||
|
|
||||||
fcnt .ds 2
|
|
||||||
fadr .ds 2
|
|
||||||
fhlp .ds 2
|
|
||||||
cloc .ds 1
|
|
||||||
regA .ds 1
|
|
||||||
regX .ds 1
|
|
||||||
regY .ds 1
|
|
||||||
|
|
||||||
WIDTH = 40
|
|
||||||
HEIGHT = 30
|
|
||||||
|
|
||||||
; --- BASIC switch OFF
|
|
||||||
org $2000\ mva #$ff portb\ rts\ ini $2000
|
|
||||||
|
|
||||||
; --- MAIN PROGRAM
|
|
||||||
org $2000
|
|
||||||
ant dta $C2,a(scr)
|
|
||||||
dta $02,$82,$02,$02,$82,$02,$82,$02,$82,$02,$02,$02,$82,$02,$82,$82
|
|
||||||
dta $02,$02,$82,$02,$02,$82,$02,$02,$82,$82,$02,$82,$22
|
|
||||||
;dta $42,a(verline)
|
|
||||||
dta $41,a(ant)
|
|
||||||
|
|
||||||
;verline
|
|
||||||
; :37 dta d" "
|
|
||||||
; dta build
|
|
||||||
|
|
||||||
scr ins "Scorch50.scr"
|
|
||||||
|
|
||||||
.ds 0*40
|
|
||||||
|
|
||||||
.ALIGN $0400
|
|
||||||
fnt ins "Scorch50.fnt"
|
|
||||||
|
|
||||||
ift USESPRITES
|
|
||||||
.ALIGN $0800
|
|
||||||
pmg .ds $0300
|
|
||||||
ift FADECHR = 0
|
|
||||||
SPRITES
|
|
||||||
els
|
|
||||||
.ds $500
|
|
||||||
eif
|
|
||||||
eif
|
|
||||||
|
|
||||||
|
|
||||||
song_data
|
|
||||||
ins 'mmm_16.lzs'
|
|
||||||
song_end
|
|
||||||
|
|
||||||
buffers
|
|
||||||
.ds 256 * 9
|
|
||||||
|
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
||||||
; Song Initialization - this runs in the first tick:
|
|
||||||
;
|
|
||||||
.proc init_song
|
|
||||||
|
|
||||||
mva #1 bit_data
|
|
||||||
|
|
||||||
; Example: here initializes song pointer:
|
|
||||||
|
|
||||||
;mwa #song_data song_ptr
|
|
||||||
|
|
||||||
; Init all channels:
|
|
||||||
ldx #8
|
|
||||||
ldy #0
|
|
||||||
clear
|
|
||||||
; Read just init value and store into buffer and POKEY
|
|
||||||
jsr get_byte
|
|
||||||
sta POKEY, x
|
|
||||||
sty chn_copy, x
|
|
||||||
cbuf
|
|
||||||
sta buffers + 255
|
|
||||||
inc cbuf + 2
|
|
||||||
dex
|
|
||||||
bpl clear
|
|
||||||
|
|
||||||
; Initialize buffer pointer:
|
|
||||||
sty bptr
|
|
||||||
sty cur_pos
|
|
||||||
rts
|
|
||||||
.endp
|
|
||||||
|
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
||||||
; Wait for next frame
|
|
||||||
;
|
|
||||||
.proc wait_frame
|
|
||||||
|
|
||||||
lda 20
|
|
||||||
delay
|
|
||||||
cmp 20
|
|
||||||
beq delay
|
|
||||||
.endp
|
|
||||||
|
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
||||||
; Play one frame of the song
|
|
||||||
;
|
|
||||||
.proc play_frame
|
|
||||||
lda #>buffers
|
|
||||||
sta bptr+1
|
|
||||||
|
|
||||||
lda song_data
|
|
||||||
sta chn_bits
|
|
||||||
ldx #8
|
|
||||||
|
|
||||||
; Loop through all "channels", one for each POKEY register
|
|
||||||
chn_loop:
|
|
||||||
lsr chn_bits
|
|
||||||
bcs skip_chn ; C=1 : skip this channel
|
|
||||||
|
|
||||||
lda chn_copy, x ; Get status of this stream
|
|
||||||
bne do_copy_byte ; If > 0 we are copying bytes
|
|
||||||
|
|
||||||
; We are decoding a new match/literal
|
|
||||||
lsr bit_data ; Get next bit
|
|
||||||
bne got_bit
|
|
||||||
jsr get_byte ; Not enough bits, refill!
|
|
||||||
ror ; Extract a new bit and add a 1 at the high bit (from C set above)
|
|
||||||
sta bit_data ;
|
|
||||||
got_bit:
|
|
||||||
jsr get_byte ; Always read a byte, it could mean "match size/offset" or "literal byte"
|
|
||||||
bcs store ; Bit = 1 is "literal", bit = 0 is "match"
|
|
||||||
|
|
||||||
sta chn_pos, x ; Store in "copy pos"
|
|
||||||
|
|
||||||
jsr get_byte
|
|
||||||
sta chn_copy, x ; Store in "copy length"
|
|
||||||
|
|
||||||
; And start copying first byte
|
|
||||||
do_copy_byte:
|
|
||||||
dec chn_copy, x ; Decrease match length, increase match position
|
|
||||||
inc chn_pos, x
|
|
||||||
ldy chn_pos, x
|
|
||||||
|
|
||||||
; Now, read old data, jump to data store
|
|
||||||
lda (bptr), y
|
|
||||||
|
|
||||||
store:
|
|
||||||
ldy cur_pos
|
|
||||||
sta POKEY, x ; Store to output and buffer
|
|
||||||
sta (bptr), y
|
|
||||||
|
|
||||||
skip_chn:
|
|
||||||
; Increment channel buffer pointer
|
|
||||||
inc bptr+1
|
|
||||||
|
|
||||||
dex
|
|
||||||
bpl chn_loop ; Next channel
|
|
||||||
|
|
||||||
inc cur_pos
|
|
||||||
.endp
|
|
||||||
|
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
||||||
; Check for ending of song and jump to the next frame
|
|
||||||
;
|
|
||||||
|
|
||||||
; not checking really so the tune gets funky :)))
|
|
||||||
;lda song_ptr + 1
|
|
||||||
;cmp #>song_end
|
|
||||||
;bne wait_frame
|
|
||||||
;lda song_ptr
|
|
||||||
;cmp #<song_end
|
|
||||||
;bne wait_frame
|
|
||||||
|
|
||||||
end_loop
|
|
||||||
rts
|
|
||||||
|
|
||||||
song_ptr = get_byte + 1
|
|
||||||
.proc get_byte
|
|
||||||
lda song_data+1
|
|
||||||
inc song_ptr
|
|
||||||
bne skip
|
|
||||||
inc song_ptr+1
|
|
||||||
skip
|
|
||||||
rts
|
|
||||||
.endp
|
|
||||||
|
|
||||||
|
|
||||||
main
|
|
||||||
|
|
||||||
jsr init_song
|
|
||||||
|
|
||||||
; ; copy system font to $a000
|
|
||||||
; ldx #0
|
|
||||||
;@ lda $e000,x
|
|
||||||
; sta $a000,x
|
|
||||||
; ;lda $e100,x ; i need digits only :]
|
|
||||||
; ;sta $a100,x
|
|
||||||
; ;lda $e200,x
|
|
||||||
; ;sta $a200,x
|
|
||||||
; ;lda $e300,x
|
|
||||||
; ;sta $a300,x
|
|
||||||
; inx
|
|
||||||
; bne @-
|
|
||||||
|
|
||||||
; --- init PMG
|
|
||||||
|
|
||||||
ift USESPRITES
|
|
||||||
mva >pmg pmbase ;missiles and players data address
|
|
||||||
mva #$03 GRACTL ;enable players and missiles
|
|
||||||
eif
|
|
||||||
|
|
||||||
lda:cmp:req $14 ;wait 1 frame
|
|
||||||
|
|
||||||
sei ;stop IRQ interrupts
|
|
||||||
mva #$00 nmien ;stop NMI interrupts
|
|
||||||
sta dmactl
|
|
||||||
;mva #$fe portb ;switch off ROM to get 16k more ram
|
|
||||||
|
|
||||||
;mwa #NMI $fffa ;new NMI handler
|
|
||||||
|
|
||||||
sta COLOR4
|
|
||||||
lda #$0E
|
|
||||||
sta COLOR1
|
|
||||||
lda #$84
|
|
||||||
sta COLOR2
|
|
||||||
lda #$0E
|
|
||||||
sta COLOR3
|
|
||||||
lda #$02
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
VMAIN NMI.vbl,6 ;jsr SetVBL
|
|
||||||
VDLI DLI.dli_start
|
|
||||||
|
|
||||||
|
|
||||||
mva #1 vscrol
|
|
||||||
|
|
||||||
mva #$c0 nmien ;switch on NMI+DLI again
|
|
||||||
|
|
||||||
_lp lda trig0 ; FIRE #0
|
|
||||||
beq stop
|
|
||||||
|
|
||||||
lda trig1 ; FIRE #1
|
|
||||||
beq stop
|
|
||||||
|
|
||||||
lda consol ; START
|
|
||||||
and #1
|
|
||||||
beq stop
|
|
||||||
|
|
||||||
lda skctl
|
|
||||||
and #$04
|
|
||||||
bne _lp ;wait to press any key; here you can put any own routine
|
|
||||||
|
|
||||||
|
|
||||||
stop
|
|
||||||
|
|
||||||
cli
|
|
||||||
vmain sysvbv,6
|
|
||||||
|
|
||||||
mva #$00 GRACTL ;PMG disabled
|
|
||||||
tax
|
|
||||||
sta:rne hposp0,x+
|
|
||||||
|
|
||||||
;mva #$ff portb ;ROM switch on
|
|
||||||
mva #$40 nmien ;only NMI interrupts, DLI disabled
|
|
||||||
;cli ;IRQ enabled
|
|
||||||
|
|
||||||
lda #0
|
|
||||||
ldx #8
|
|
||||||
@ sta POKEY,x
|
|
||||||
dex
|
|
||||||
bpl @-
|
|
||||||
|
|
||||||
|
|
||||||
;no glitching please (issue #67)
|
|
||||||
lda #0
|
|
||||||
sta $D400 ;dmactl
|
|
||||||
sta $022F ;dmactls
|
|
||||||
rts ;return to ... DOS
|
|
||||||
|
|
||||||
; --- DLI PROGRAM
|
|
||||||
|
|
||||||
.local DLI
|
|
||||||
|
|
||||||
?old_dli = *
|
|
||||||
|
|
||||||
dli_start
|
|
||||||
|
|
||||||
dli13
|
|
||||||
sta regA
|
|
||||||
|
|
||||||
sta wsync ;line=8
|
|
||||||
sta wsync ;line=9
|
|
||||||
sta wsync ;line=10
|
|
||||||
sta wsync ;line=11
|
|
||||||
sta wsync ;line=12
|
|
||||||
sta wsync ;line=13
|
|
||||||
c9 lda #$14
|
|
||||||
sta wsync ;line=14
|
|
||||||
sta colpm3
|
|
||||||
DLINEW DLI.dli2 1 0 0
|
|
||||||
|
|
||||||
dli2
|
|
||||||
sta regA
|
|
||||||
lda >fnt+$400*$01
|
|
||||||
sta wsync ;line=24
|
|
||||||
sta chbase
|
|
||||||
DLINEW dli3 1 0 0
|
|
||||||
|
|
||||||
dli3
|
|
||||||
sta regA
|
|
||||||
lda >fnt+$400*$02
|
|
||||||
sta wsync ;line=48
|
|
||||||
sta chbase
|
|
||||||
sta wsync ;line=49
|
|
||||||
sta wsync ;line=50
|
|
||||||
sta wsync ;line=51
|
|
||||||
s3 lda #$07
|
|
||||||
sta wsync ;line=52
|
|
||||||
sta sizem
|
|
||||||
DLINEW dli14 1 0 0
|
|
||||||
|
|
||||||
dli14
|
|
||||||
sta regA
|
|
||||||
stx regX
|
|
||||||
sty regY
|
|
||||||
|
|
||||||
x8 lda #$A3
|
|
||||||
sta wsync ;line=64
|
|
||||||
sta hposp3
|
|
||||||
x9 lda #$AB
|
|
||||||
sta wsync ;line=65
|
|
||||||
sta hposm3
|
|
||||||
sta wsync ;line=66
|
|
||||||
sta wsync ;line=67
|
|
||||||
sta wsync ;line=68
|
|
||||||
sta wsync ;line=69
|
|
||||||
sta wsync ;line=70
|
|
||||||
s4 lda #$13
|
|
||||||
x10 ldx #$A6
|
|
||||||
sta wsync ;line=71
|
|
||||||
sta sizem
|
|
||||||
stx hposm2
|
|
||||||
s5 lda #$01
|
|
||||||
x11 ldx #$72
|
|
||||||
x12 ldy #$62
|
|
||||||
sta wsync ;line=72
|
|
||||||
sta sizep2
|
|
||||||
sta sizep3
|
|
||||||
stx hposp2
|
|
||||||
sty hposp3
|
|
||||||
x13 lda #$A9
|
|
||||||
sta wsync ;line=73
|
|
||||||
sta hposp1
|
|
||||||
DLINEW dli4 1 1 1
|
|
||||||
|
|
||||||
dli4
|
|
||||||
sta regA
|
|
||||||
lda >fnt+$400*$03
|
|
||||||
sta wsync ;line=80
|
|
||||||
sta chbase
|
|
||||||
DLINEW dli5 1 0 0
|
|
||||||
|
|
||||||
dli5
|
|
||||||
sta regA
|
|
||||||
stx regX
|
|
||||||
lda >fnt+$400*$04
|
|
||||||
sta wsync ;line=112
|
|
||||||
sta chbase
|
|
||||||
sta wsync ;line=113
|
|
||||||
sta wsync ;line=114
|
|
||||||
sta wsync ;line=115
|
|
||||||
sta wsync ;line=116
|
|
||||||
sta wsync ;line=117
|
|
||||||
sta wsync ;line=118
|
|
||||||
s6 lda #$07
|
|
||||||
x14 ldx #$A3
|
|
||||||
sta wsync ;line=119
|
|
||||||
sta sizem
|
|
||||||
stx hposm1
|
|
||||||
s7 lda #$01
|
|
||||||
x15 ldx #$93
|
|
||||||
sta wsync ;line=120
|
|
||||||
sta sizep1
|
|
||||||
stx hposp1
|
|
||||||
DLINEW dli15 1 1 0
|
|
||||||
|
|
||||||
dli15
|
|
||||||
sta regA
|
|
||||||
stx regX
|
|
||||||
|
|
||||||
sta wsync ;line=128
|
|
||||||
sta wsync ;line=129
|
|
||||||
sta wsync ;line=130
|
|
||||||
sta wsync ;line=131
|
|
||||||
x16 lda #$4A
|
|
||||||
sta wsync ;line=132
|
|
||||||
sta hposp1
|
|
||||||
c10 lda #$D4
|
|
||||||
sta wsync ;line=133
|
|
||||||
sta colpf2
|
|
||||||
s8 lda #$C3
|
|
||||||
x17 ldx #$5A
|
|
||||||
sta wsync ;line=134
|
|
||||||
sta sizem
|
|
||||||
stx hposm3
|
|
||||||
DLINEW dli6 1 1 0
|
|
||||||
|
|
||||||
dli6
|
|
||||||
sta regA
|
|
||||||
stx regX
|
|
||||||
sty regY
|
|
||||||
lda >fnt+$400*$05
|
|
||||||
sta wsync ;line=136
|
|
||||||
sta chbase
|
|
||||||
sta wsync ;line=137
|
|
||||||
sta wsync ;line=138
|
|
||||||
sta wsync ;line=139
|
|
||||||
sta wsync ;line=140
|
|
||||||
sta wsync ;line=141
|
|
||||||
sta wsync ;line=142
|
|
||||||
s9 lda #$C7
|
|
||||||
x18 ldx #$A9
|
|
||||||
sta wsync ;line=143
|
|
||||||
sta sizem
|
|
||||||
stx hposm1
|
|
||||||
s10 lda #$D7
|
|
||||||
x19 ldx #$9E
|
|
||||||
c11 ldy #$02
|
|
||||||
sta wsync ;line=144
|
|
||||||
sta sizem
|
|
||||||
stx hposm2
|
|
||||||
sty colpm2
|
|
||||||
sta wsync ;line=145
|
|
||||||
c12 lda #$04
|
|
||||||
sta wsync ;line=146
|
|
||||||
sta colpm1
|
|
||||||
sta wsync ;line=147
|
|
||||||
sta wsync ;line=148
|
|
||||||
sta wsync ;line=149
|
|
||||||
s11 lda #$00
|
|
||||||
x20 ldx #$74
|
|
||||||
c13 ldy #$02
|
|
||||||
sta wsync ;line=150
|
|
||||||
sta sizep3
|
|
||||||
stx hposp3
|
|
||||||
sty colpm3
|
|
||||||
sta wsync ;line=151
|
|
||||||
sta wsync ;line=152
|
|
||||||
sta wsync ;line=153
|
|
||||||
sta wsync ;line=154
|
|
||||||
sta wsync ;line=155
|
|
||||||
sta wsync ;line=156
|
|
||||||
sta wsync ;line=157
|
|
||||||
c14 lda #$04
|
|
||||||
sta wsync ;line=158
|
|
||||||
sta colpf0
|
|
||||||
DLINEW dli7 1 1 1
|
|
||||||
|
|
||||||
dli7
|
|
||||||
sta regA
|
|
||||||
lda >fnt+$400*$06
|
|
||||||
sta wsync ;line=160
|
|
||||||
sta chbase
|
|
||||||
DLINEW dli8 1 0 0
|
|
||||||
|
|
||||||
dli8
|
|
||||||
sta regA
|
|
||||||
stx regX
|
|
||||||
sty regY
|
|
||||||
lda >fnt+$400*$07
|
|
||||||
sta wsync ;line=184
|
|
||||||
sta chbase
|
|
||||||
sta wsync ;line=185
|
|
||||||
s12 lda #$00
|
|
||||||
x21 ldx #$8E
|
|
||||||
c15 ldy #$08
|
|
||||||
sta wsync ;line=186
|
|
||||||
sta sizep2
|
|
||||||
stx hposp2
|
|
||||||
sty colpm2
|
|
||||||
x22 lda #$4C
|
|
||||||
c16 ldx #$0E
|
|
||||||
sta wsync ;line=187
|
|
||||||
sta hposp3
|
|
||||||
stx colpm3
|
|
||||||
c17 lda #$0A
|
|
||||||
c18 ldx #$34
|
|
||||||
sta wsync ;line=188
|
|
||||||
sta colpf1
|
|
||||||
stx colpm3
|
|
||||||
s13 lda #$43
|
|
||||||
x23 ldx #$49
|
|
||||||
sta wsync ;line=189
|
|
||||||
sta sizem
|
|
||||||
stx hposm3
|
|
||||||
c19 lda #$08
|
|
||||||
c20 ldx #$34
|
|
||||||
sta wsync ;line=190
|
|
||||||
sta colpf1
|
|
||||||
stx colpm2
|
|
||||||
sta wsync ;line=191
|
|
||||||
c21 lda #$0A
|
|
||||||
sta wsync ;line=192
|
|
||||||
sta colpf1
|
|
||||||
c22 lda #$08
|
|
||||||
sta wsync ;line=193
|
|
||||||
sta colpf1
|
|
||||||
c23 lda #$0A
|
|
||||||
sta wsync ;line=194
|
|
||||||
sta colpf1
|
|
||||||
c24 lda #$34
|
|
||||||
sta wsync ;line=195
|
|
||||||
sta colpf2
|
|
||||||
c25 lda #$0C
|
|
||||||
sta wsync ;line=196
|
|
||||||
sta colpf1
|
|
||||||
c26 lda #$0A
|
|
||||||
sta wsync ;line=197
|
|
||||||
sta colpf1
|
|
||||||
c27 lda #$0C
|
|
||||||
sta wsync ;line=198
|
|
||||||
sta colpf1
|
|
||||||
sta wsync ;line=199
|
|
||||||
sta wsync ;line=200
|
|
||||||
c28 lda #$0E
|
|
||||||
sta wsync ;line=201
|
|
||||||
sta colpf1
|
|
||||||
c29 lda #$0C
|
|
||||||
sta wsync ;line=202
|
|
||||||
sta colpf1
|
|
||||||
c30 lda #$0E
|
|
||||||
sta wsync ;line=203
|
|
||||||
sta colpf1
|
|
||||||
c31 lda #$0C
|
|
||||||
sta wsync ;line=204
|
|
||||||
sta colpf1
|
|
||||||
c32 lda #$0E
|
|
||||||
sta wsync ;line=205
|
|
||||||
sta colpf1
|
|
||||||
DLINEW dli16 1 1 1
|
|
||||||
|
|
||||||
dli16
|
|
||||||
sta regA
|
|
||||||
|
|
||||||
sta wsync ;line=208
|
|
||||||
sta wsync ;line=209
|
|
||||||
c33 lda #$0C
|
|
||||||
sta wsync ;line=210
|
|
||||||
sta colpf1
|
|
||||||
c34 lda #$0E
|
|
||||||
sta wsync ;line=211
|
|
||||||
sta colpf1
|
|
||||||
c35 lda #$0C
|
|
||||||
sta wsync ;line=212
|
|
||||||
sta colpf1
|
|
||||||
DLINEW dli9 1 0 0
|
|
||||||
|
|
||||||
dli9
|
|
||||||
sta regA
|
|
||||||
stx regX
|
|
||||||
sty regY
|
|
||||||
lda >fnt+$400*$08
|
|
||||||
c36 ldx #$0A
|
|
||||||
sta wsync ;line=216
|
|
||||||
sta chbase
|
|
||||||
stx colpf1
|
|
||||||
c37 lda #$0C
|
|
||||||
sta wsync ;line=217
|
|
||||||
sta colpf1
|
|
||||||
c38 lda #$0A
|
|
||||||
x24 ldx #$9D
|
|
||||||
c39 ldy #$34
|
|
||||||
sta wsync ;line=218
|
|
||||||
sta colpf1
|
|
||||||
stx hposm1
|
|
||||||
sty colpm1
|
|
||||||
s14 lda #$03
|
|
||||||
x25 ldx #$7D
|
|
||||||
sta wsync ;line=219
|
|
||||||
sta sizep3
|
|
||||||
stx hposp3
|
|
||||||
c40 lda #$08
|
|
||||||
s15 ldx #$13
|
|
||||||
x26 ldy #$45
|
|
||||||
sta wsync ;line=220
|
|
||||||
sta colpf1
|
|
||||||
stx sizem
|
|
||||||
sty hposm2
|
|
||||||
s16 lda #$03
|
|
||||||
x27 ldx #$59
|
|
||||||
sta wsync ;line=221
|
|
||||||
sta sizep2
|
|
||||||
stx hposp2
|
|
||||||
s17 lda #$53
|
|
||||||
x28 ldx #$49
|
|
||||||
x29 ldy #$79
|
|
||||||
sta wsync ;line=222
|
|
||||||
sta sizem
|
|
||||||
stx hposp1
|
|
||||||
sty hposm3
|
|
||||||
c41 lda #$06
|
|
||||||
c42 ldx #$00
|
|
||||||
sta wsync ;line=223
|
|
||||||
sta colpf1
|
|
||||||
stx colpf2
|
|
||||||
lda >fnt+$400*$01
|
|
||||||
s18 ldx #$50
|
|
||||||
x30 ldy #$44
|
|
||||||
sta wsync ;line=224
|
|
||||||
sta chbase
|
|
||||||
stx sizem
|
|
||||||
sty hposm0
|
|
||||||
sta wsync ;line=225
|
|
||||||
c43 lda #$08
|
|
||||||
sta wsync ;line=226
|
|
||||||
sta colpf1
|
|
||||||
c44 lda #$0C
|
|
||||||
sta wsync ;line=227
|
|
||||||
sta colpf1
|
|
||||||
sta wsync ;line=228
|
|
||||||
sta wsync ;line=229
|
|
||||||
c45 lda #$0E
|
|
||||||
sta wsync ;line=230
|
|
||||||
sta colpf1
|
|
||||||
DLINEW dli10 1 1 1
|
|
||||||
|
|
||||||
dli10
|
|
||||||
sta regA
|
|
||||||
lda >fnt+$400*$00
|
|
||||||
sta wsync ;line=232
|
|
||||||
sta chbase
|
|
||||||
;DLINEW dli11 1 0 0
|
|
||||||
|
|
||||||
lda regA
|
|
||||||
rti
|
|
||||||
|
|
||||||
;dli11
|
|
||||||
; sta regA
|
|
||||||
;
|
|
||||||
; lda #>$a000 ; system font
|
|
||||||
; sta wsync ;line=232
|
|
||||||
; sta chbase
|
|
||||||
; lda #$01
|
|
||||||
; sta gtictl
|
|
||||||
;
|
|
||||||
; lda regA
|
|
||||||
; rti
|
|
||||||
|
|
||||||
|
|
||||||
.endl
|
|
||||||
|
|
||||||
; ---
|
|
||||||
|
|
||||||
CHANGES = 1
|
|
||||||
FADECHR = 0
|
|
||||||
|
|
||||||
SCHR = 127
|
|
||||||
|
|
||||||
dliv = $0200
|
|
||||||
|
|
||||||
; ---
|
|
||||||
|
|
||||||
.proc NMI
|
|
||||||
|
|
||||||
bit nmist
|
|
||||||
bpl VBL
|
|
||||||
|
|
||||||
jmp DLI.dli_start
|
|
||||||
|
|
||||||
|
|
||||||
VBL
|
|
||||||
sta regA
|
|
||||||
stx regX
|
|
||||||
sty regY
|
|
||||||
|
|
||||||
;sta nmist ;reset NMI flag
|
|
||||||
|
|
||||||
mwa #ant dlptr ;ANTIC address program
|
|
||||||
|
|
||||||
mva #@dmactl(standard|dma|lineX1|players|missiles) dmactl ;set new screen width
|
|
||||||
|
|
||||||
inc cloc ;little timer
|
|
||||||
|
|
||||||
; Initial values
|
|
||||||
|
|
||||||
lda >fnt+$400*$00
|
|
||||||
sta chbase
|
|
||||||
c0 lda #$00
|
|
||||||
sta colbak
|
|
||||||
c1 lda #$0E
|
|
||||||
sta colpf1
|
|
||||||
c2 lda #$84
|
|
||||||
sta colpf2
|
|
||||||
c3 lda #$0E
|
|
||||||
sta colpf3
|
|
||||||
lda #$02
|
|
||||||
sta CHACTL
|
|
||||||
lda #$01
|
|
||||||
sta PRIOR
|
|
||||||
sta sizep0
|
|
||||||
s0 lda #$03
|
|
||||||
sta sizem
|
|
||||||
x0 lda #$D0
|
|
||||||
sta hposp0
|
|
||||||
x1 lda #$28
|
|
||||||
sta hposm0
|
|
||||||
c4 lda #$00
|
|
||||||
sta colpm0
|
|
||||||
x2 lda #$A2
|
|
||||||
sta hposm3
|
|
||||||
c5 lda #$0E
|
|
||||||
sta colpm3
|
|
||||||
s1 lda #$00
|
|
||||||
sta sizep2
|
|
||||||
sta sizep3
|
|
||||||
x3 lda #$92
|
|
||||||
sta hposp2
|
|
||||||
x4 lda #$8A
|
|
||||||
sta hposp3
|
|
||||||
c6 lda #$14
|
|
||||||
sta colpm2
|
|
||||||
s2 lda #$00
|
|
||||||
sta sizep1
|
|
||||||
x5 lda #$9A
|
|
||||||
sta hposp1
|
|
||||||
c7 lda #$14
|
|
||||||
sta colpm1
|
|
||||||
x6 lda #$A4
|
|
||||||
sta hposm2
|
|
||||||
x7 lda #$A6
|
|
||||||
sta hposm1
|
|
||||||
c8 lda #$00
|
|
||||||
sta colpf0
|
|
||||||
|
|
||||||
mwa #DLI.dli_start dliv ;set the first address of DLI interrupt
|
|
||||||
|
|
||||||
;this area is for yours routines
|
|
||||||
jsr play_frame
|
|
||||||
|
|
||||||
quit
|
|
||||||
lda regA
|
|
||||||
ldx regX
|
|
||||||
ldy regY
|
|
||||||
jmp sysvbv
|
|
||||||
|
|
||||||
.endp
|
|
||||||
|
|
||||||
; ---
|
|
||||||
ini main
|
|
||||||
; ---
|
|
||||||
|
|
||||||
;opt l- ; this stops the listing
|
|
||||||
|
|
||||||
.MACRO SPRITES
|
|
||||||
missiles
|
|
||||||
.he 00 00 00 00 00 00 00 00 03 03 C3 03 03 03 03 03
|
|
||||||
.he 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03
|
|
||||||
.he 03 03 03 03 03 03 03 03 03 83 83 83 C3 C3 C3 C3
|
|
||||||
.he C3 C3 C3 C3 C3 E3 E3 E3 E3 E3 E3 F3 F3 F3 F3 FB
|
|
||||||
.he FB FB FB FB FF FF FF FF F3 33 83 83 83 83 C3 D3
|
|
||||||
.he D3 D3 13 03 03 03 03 03 03 03 03 03 03 03 03 03
|
|
||||||
.he 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03
|
|
||||||
.he 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 0F
|
|
||||||
.he 0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 03 03 03 03 C3 C3
|
|
||||||
.he C3 C3 C3 C3 C3 C3 C3 C3 C3 D3 FF FF 3F 3F 3F 3F
|
|
||||||
.he 3F 3F 33 13 03 03 03 03 03 03 03 03 03 03 03 03
|
|
||||||
.he 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03
|
|
||||||
.he 03 03 03 03 03 03 03 43 43 C3 C3 C3 C3 03 03 03
|
|
||||||
.he 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03
|
|
||||||
.he 03 03 0F 0F 3F 3F FF FC FE FE FF DB 03 03 03 03
|
|
||||||
.he 03 03 03 03 03 03 03 03 00 00 00 00 00 00 00 00
|
|
||||||
player0
|
|
||||||
.he 00 00 00 00 00 00 00 00 FF FF FF FF FF FF FF FF
|
|
||||||
.he FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
||||||
.he FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
||||||
.he FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
||||||
.he FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
||||||
.he FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
||||||
.he FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
||||||
.he FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
||||||
.he FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
||||||
.he FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
||||||
.he FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
||||||
.he FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
||||||
.he FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
||||||
.he FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
||||||
.he FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
||||||
.he FF FF FF FF FF FF FF FF 00 00 00 00 00 00 00 00
|
|
||||||
player1
|
|
||||||
.he 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
|
||||||
.he 00 00 00 00 00 00 00 00 F0 FC FE FE FF FF FF FF
|
|
||||||
.he FF 0F 0F 0F 0F 0F 0F 0F 0F 0F 07 07 07 07 07 07
|
|
||||||
.he 03 03 03 FF FF FF FF FF CF CF FF FF FF FF FF 9F
|
|
||||||
.he 9F FF FF FF FF FF FF FF 00 00 00 00 00 00 00 00
|
|
||||||
.he 00 F0 F0 F0 F0 78 F8 78 78 78 78 38 78 38 3C 3C
|
|
||||||
.he 3C 3C 1C 3C 1C 1C 1C 1C 1E 1E 1E 1E 0E 1E 0E 0E
|
|
||||||
.he 0E 0F 07 0F 07 0F 07 07 07 07 07 07 06 06 06 06
|
|
||||||
.he FF FF FF FF FF FF FF FF FF FF FF 00 00 3E 3F 7F
|
|
||||||
.he 7F 7F 7F 7F 7F 7F 7F 3F 3F 3F 00 00 00 00 00 00
|
|
||||||
.he 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
|
||||||
.he 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
|
||||||
.he 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
|
||||||
.he 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
|
||||||
.he 00 00 00 00 00 00 FF FF FF FF FF FF 00 00 00 00
|
|
||||||
.he 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
|
||||||
player2
|
|
||||||
.he 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
|
||||||
.he 00 00 00 00 00 00 00 00 FF FF FF FF FF FF FF FF
|
|
||||||
.he FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
|
||||||
.he 00 00 00 FF FF FF FF FF 99 99 FF FF FF FF FF 33
|
|
||||||
.he 33 FF FF FF FF FF FF FF 00 00 00 00 00 00 00 00
|
|
||||||
.he 00 00 80 F0 F8 F8 F8 FC FC FC FC FC FC FC FC FC
|
|
||||||
.he FC FE FE FE FE FE FE FF FF FF FF FF FF FF FE FC
|
|
||||||
.he F8 F8 F8 F8 F0 F0 F0 F0 F0 F0 F0 F0 E0 E0 E0 E0
|
|
||||||
.he E0 E0 E0 FC FE FE FF FF 8F 87 87 87 07 07 07 07
|
|
||||||
.he 07 07 07 07 07 07 07 03 00 00 00 00 00 00 00 00
|
|
||||||
.he 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
|
||||||
.he 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
|
||||||
.he 00 00 00 00 00 00 F8 FC FC FE FE FF FF 00 00 00
|
|
||||||
.he 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
|
||||||
.he 00 00 00 00 00 00 FF FF FF FF FF FF 00 00 00 00
|
|
||||||
.he 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
|
||||||
player3
|
|
||||||
.he 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
|
||||||
.he 00 00 00 00 00 00 00 00 01 07 0F 1F 1F 3F 3F 7F
|
|
||||||
.he 7F 78 78 F0 F0 F0 F0 F8 F8 F8 78 7C 7C 7C 3C 3E
|
|
||||||
.he 3E 3E 1E 1F 1F 1F 0F 0F 0F 0F 0F 1F 1F 1F 1F 1F
|
|
||||||
.he 1F 3F 3F 3F 3F 3F 3F 3F FF 7F 7F 3F 3F 1F 1F 0F
|
|
||||||
.he 1F 1F 1F 3F 3F 3F 3F 3F 3F 3B 30 30 30 30 30 30
|
|
||||||
.he 30 30 30 30 38 3E 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F
|
|
||||||
.he 7F 7F 7F 7F 7F 7F 7F FF FF FF FF FF FF FF FF FF
|
|
||||||
.he FF FF FF FF FF FF FF FF 7F 7F 7F 7F 7F 7F FF FF
|
|
||||||
.he FF FF FF FF FE FE FE FE FE FE FE FE FC 1C FF 7E
|
|
||||||
.he 7E FE FE FE FE FF FF FF 7F 7E 7E 3C 00 00 00 00
|
|
||||||
.he 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
|
||||||
.he 00 00 00 00 00 7C FE FE FF FF FF 00 00 00 00 00
|
|
||||||
.he 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
|
||||||
.he 00 00 00 FF FF FF FF FF FF FF FF FF 00 00 00 00
|
|
||||||
.he 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
|
||||||
.ENDM
|
|
||||||
|
|
||||||
USESPRITES = 1
|
|
||||||
|
|
||||||
.MACRO DLINEW
|
|
||||||
mva <:1 dliv
|
|
||||||
ift [>?old_dli]<>[>:1]
|
|
||||||
mva >:1 dliv+1
|
|
||||||
eif
|
|
||||||
|
|
||||||
ift :2
|
|
||||||
lda regA
|
|
||||||
eif
|
|
||||||
|
|
||||||
ift :3
|
|
||||||
ldx regX
|
|
||||||
eif
|
|
||||||
|
|
||||||
ift :4
|
|
||||||
ldy regY
|
|
||||||
eif
|
|
||||||
|
|
||||||
rti
|
|
||||||
|
|
||||||
.def ?old_dli = *
|
|
||||||
.ENDM
|
|
||||||
|
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -616,28 +616,33 @@ qq3
|
|||||||
qq5
|
qq5
|
||||||
stx v_audctl
|
stx v_audctl
|
||||||
rmt_p5
|
rmt_p5
|
||||||
lda v_ainstrspeed
|
; lda v_ainstrspeed
|
||||||
|
.IF TARGET = 800
|
||||||
|
ldx #$10 ; pseudo stereo
|
||||||
|
bne SetPokey_OffsetX ; pseudo stereo
|
||||||
|
.ELSE
|
||||||
rts
|
rts
|
||||||
|
.ENDIF
|
||||||
SetPokey
|
SetPokey
|
||||||
ldy v_audctl
|
ldx #0 ; POKEY registers offset (for stereo)
|
||||||
|
SetPokey_OffsetX
|
||||||
lda trackn_audf+0
|
lda trackn_audf+0
|
||||||
ldx trackn_audc+0
|
sta AUDF1,x
|
||||||
sta AUDF1
|
lda trackn_audc+0
|
||||||
stx AUDC1
|
sta AUDC1,x
|
||||||
lda trackn_audf+1
|
lda trackn_audf+1
|
||||||
ldx trackn_audc+1
|
sta AUDF2,x
|
||||||
sta AUDF2
|
lda trackn_audc+1
|
||||||
stx AUDC2
|
sta AUDC2,x
|
||||||
lda trackn_audf+2
|
lda trackn_audf+2
|
||||||
ldx trackn_audc+2
|
sta AUDF3,x
|
||||||
sta AUDF3
|
lda trackn_audc+2
|
||||||
stx AUDC3
|
sta AUDC3,x
|
||||||
lda trackn_audf+3
|
lda trackn_audf+3
|
||||||
ldx trackn_audc+3
|
sta AUDF4,x
|
||||||
sta AUDF4
|
lda trackn_audc+3
|
||||||
stx AUDC4
|
sta AUDC4,x
|
||||||
sty AUDCTL
|
lda v_audctl
|
||||||
|
sta AUDCTL,x
|
||||||
rts
|
rts
|
||||||
RMTPLAYEREND
|
RMTPLAYEREND
|
||||||
|
|||||||
+27
-8
@@ -215,8 +215,8 @@ SlideLeftTable
|
|||||||
.BY %00000101
|
.BY %00000101
|
||||||
.BY %00000110
|
.BY %00000110
|
||||||
.BY %00000111
|
.BY %00000111
|
||||||
.BY %00001100
|
; .BY %00001100
|
||||||
|
SlideLeftTableLen = *-SlideLeftTable
|
||||||
;-------------------------------------------------
|
;-------------------------------------------------
|
||||||
TanksNamesDefault
|
TanksNamesDefault
|
||||||
dta d"1st.Tank"
|
dta d"1st.Tank"
|
||||||
@@ -550,7 +550,22 @@ DefensiveEnergy = *-(last_offensive_____ - first_offensive____ +1) ; to fake th
|
|||||||
.by 00 ; Auto Defense
|
.by 00 ; Auto Defense
|
||||||
.by 00 ; Spy Hard
|
.by 00 ; Spy Hard
|
||||||
weaponsOfDeath ; weapons used in tank death animations
|
weaponsOfDeath ; weapons used in tank death animations
|
||||||
dta 1,2,3,7,17,18,19,20,21,22,23,24,25,26,27
|
dta ind_Missile________
|
||||||
|
dta ind_Baby_Nuke______
|
||||||
|
dta ind_Nuke___________
|
||||||
|
dta ind_Death_s_Head___
|
||||||
|
dta ind_Hot_Napalm_____ ; why not?
|
||||||
|
dta ind_Riot_Bomb______
|
||||||
|
dta ind_Heavy_Riot_Bomb
|
||||||
|
dta ind_Baby_Digger____
|
||||||
|
dta ind_Digger_________
|
||||||
|
dta ind_Heavy_Digger___
|
||||||
|
dta ind_Baby_Sandhog___
|
||||||
|
dta ind_Sandhog________
|
||||||
|
dta ind_Heavy_Sandhog__
|
||||||
|
dta ind_Dirt_Clod______
|
||||||
|
dta ind_Dirt_Ball______
|
||||||
|
dta ind_Ton_of_Dirt____
|
||||||
weaponsOfDeathEnd
|
weaponsOfDeathEnd
|
||||||
joyToKeyTable
|
joyToKeyTable
|
||||||
.by $ff ;00
|
.by $ff ;00
|
||||||
@@ -623,12 +638,13 @@ CreditsStart
|
|||||||
dta d"Ar",d"t"*
|
dta d"Ar",d"t"*
|
||||||
dta d"Adam Wachowsk",d"i"*
|
dta d"Adam Wachowsk",d"i"*
|
||||||
.IF target != 5200
|
.IF target != 5200
|
||||||
dta d"Krzysztof 'Kaz' Ziembi",d"k"*
|
dta d"Roman 'xorcerer' Fierfa",d"s"*
|
||||||
.ENDIF
|
.ENDIF
|
||||||
dta d" "*
|
dta d" "*
|
||||||
dta d"Ideas, help and Q",d"A"*
|
dta d"Ideas, help and Q",d"A"*
|
||||||
dta d"Bocianu, Probabilitydragon, EnderDude",d","*
|
dta d"Bocianu, Probabilitydragon",d","*
|
||||||
dta d"Beeblebrox, KrzysRog, lopezpb, Dracon",d","*
|
dta d"EnderDude, Dracon",d","*
|
||||||
|
dta d"Beeblebrox, KrzysRog, lopezpb",d","*
|
||||||
dta d"brad-colbert, archon800, nowy80",d","*
|
dta d"brad-colbert, archon800, nowy80",d","*
|
||||||
dta d"Shaggy the Atarian, RetroBorsuk, ZPH"
|
dta d"Shaggy the Atarian, RetroBorsuk, ZPH"
|
||||||
.IF target = 5200
|
.IF target = 5200
|
||||||
@@ -641,6 +657,9 @@ CreditsStart
|
|||||||
dta d" "*
|
dta d" "*
|
||||||
dta d"Additional testin",d"g"*
|
dta d"Additional testin",d"g"*
|
||||||
dta d"Arek and Alex Peck",d"o"*
|
dta d"Arek and Alex Peck",d"o"*
|
||||||
|
dta d" "*
|
||||||
|
dta d"Special thank",d"s"*
|
||||||
|
dta d"Krzysztof 'Kaz' Ziembi",d"k"*
|
||||||
.IF target != 5200
|
.IF target != 5200
|
||||||
dta d" "*
|
dta d" "*
|
||||||
dta d"Stay tuned for the FujiNet version",d"!"*
|
dta d"Stay tuned for the FujiNet version",d"!"*
|
||||||
@@ -648,9 +667,9 @@ CreditsStart
|
|||||||
dta d" "*
|
dta d" "*
|
||||||
CreditsEnd
|
CreditsEnd
|
||||||
.IF target = 5200
|
.IF target = 5200
|
||||||
CreditsLines=38
|
CreditsLines=34 + 7; add 7 for scrollout
|
||||||
.ELSE
|
.ELSE
|
||||||
CreditsLines=42 ; 34 in reality. add 7?
|
CreditsLines=40 + 7 ; add 7 for scrollout
|
||||||
.ENDIF
|
.ENDIF
|
||||||
.IF target = 5200
|
.IF target = 5200
|
||||||
; Atari 5200 splash
|
; Atari 5200 splash
|
||||||
|
|||||||
@@ -145,6 +145,7 @@ last_defensive_____ = ind_Spy_Hard_______
|
|||||||
last_real_defensive = ind_Bouncy_Castle__
|
last_real_defensive = ind_Bouncy_Castle__
|
||||||
number_of_offensives = last_offensive_____ - first_offensive____+1
|
number_of_offensives = last_offensive_____ - first_offensive____+1
|
||||||
number_of_defensives = (last_defensive_____ - first_defensive____+1)
|
number_of_defensives = (last_defensive_____ - first_defensive____+1)
|
||||||
|
number_of_weapons = number_of_offensives + number_of_defensives
|
||||||
;--------------------------------
|
;--------------------------------
|
||||||
; names of RMT instruments (sfx)
|
; names of RMT instruments (sfx)
|
||||||
;--------------------------------
|
;--------------------------------
|
||||||
|
|||||||
+11
-4
@@ -12,8 +12,14 @@ OptionsScreen
|
|||||||
dta d" (un)2000-2023"
|
dta d" (un)2000-2023"
|
||||||
|
|
||||||
.IF TARGET = 800
|
.IF TARGET = 800
|
||||||
dta d" Please select option with cursor keys "
|
dta d" Please select option with "
|
||||||
dta d" and press (Return) to proceed "
|
dta $fe,$dc,$dd,$ff ; cursors in inverse
|
||||||
|
dta d" and "
|
||||||
|
dta d"Tab"*
|
||||||
|
dta d" "
|
||||||
|
dta d" Press "
|
||||||
|
dta d"Return"*
|
||||||
|
dta d" to proceed "
|
||||||
.ELIF TARGET = 5200
|
.ELIF TARGET = 5200
|
||||||
dta d" Please select option with joystick one "
|
dta d" Please select option with joystick one "
|
||||||
dta d" and press FIRE to proceed "
|
dta d" and press FIRE to proceed "
|
||||||
@@ -32,12 +38,13 @@ NameScreen3
|
|||||||
dta d" Human/Atari (difficulty level) "
|
dta d" Human/Atari (difficulty level) "
|
||||||
NameScreen5
|
NameScreen5
|
||||||
.IF TARGET = 800
|
.IF TARGET = 800
|
||||||
dta d" "
|
|
||||||
dta d"TAB"*
|
dta d"TAB"*
|
||||||
dta d" - Port nr "
|
dta d" - Port nr "
|
||||||
dta d"Joy"*
|
dta $fe,$dc,$dd,$ff ; cursors in inverse
|
||||||
dta d" - Difficulty"
|
dta d" - Difficulty"
|
||||||
dta d" "
|
dta d" "
|
||||||
|
dta d"INV"*
|
||||||
|
dta d" - Shape "
|
||||||
dta d"Return"*
|
dta d"Return"*
|
||||||
dta d" - Proceed "
|
dta d" - Proceed "
|
||||||
.ELIF TARGET = 5200
|
.ELIF TARGET = 5200
|
||||||
|
|||||||
+98
-2
@@ -5,6 +5,8 @@
|
|||||||
|
|
||||||
;--------------------------------------------------
|
;--------------------------------------------------
|
||||||
.proc draw ;;fuxxing good draw :)
|
.proc draw ;;fuxxing good draw :)
|
||||||
|
; xdraw,ydraw (word) - coordinates of first point
|
||||||
|
; xbyte,ybyte (word) - coordinates of last point
|
||||||
;--------------------------------------------------
|
;--------------------------------------------------
|
||||||
;creditz to Dr Jankowski / MIM U.W.
|
;creditz to Dr Jankowski / MIM U.W.
|
||||||
; (xi,yi)-----(xk,yk)
|
; (xi,yi)-----(xk,yk)
|
||||||
@@ -291,6 +293,8 @@ EndOfDraw
|
|||||||
|
|
||||||
;--------------------------------------------------
|
;--------------------------------------------------
|
||||||
.proc circle ;fxxxing good circle drawing :)
|
.proc circle ;fxxxing good circle drawing :)
|
||||||
|
; xdraw,ydraw (word) - coordinates of circle center
|
||||||
|
; radius (byte) - radius of circle
|
||||||
;--------------------------------------------------
|
;--------------------------------------------------
|
||||||
;Turbo Basic source
|
;Turbo Basic source
|
||||||
; R=30
|
; R=30
|
||||||
@@ -1136,7 +1140,7 @@ OneTimeParachute
|
|||||||
jmp EndOfFCycle
|
jmp EndOfFCycle
|
||||||
NoFallingDown
|
NoFallingDown
|
||||||
; check direction (left or right)
|
; check direction (left or right)
|
||||||
ldy #7 ; SlideLeftTable length -1 (from 0 to 7)
|
ldy #SlideLeftTableLen-1 ; SlideLeftTable length -1 (from 0 to 7)
|
||||||
@ lda SlideLeftTable,y
|
@ lda SlideLeftTable,y
|
||||||
cmp UnderTank1
|
cmp UnderTank1
|
||||||
beq FallingLeft
|
beq FallingLeft
|
||||||
@@ -1289,7 +1293,7 @@ drawmountainsloop
|
|||||||
beq NoMountain
|
beq NoMountain
|
||||||
sta ydraw
|
sta ydraw
|
||||||
sty ydraw+1
|
sty ydraw+1
|
||||||
; jsr DrawLine
|
.IF FASTER_GRAF_PROCS = 1
|
||||||
; there was Drawline proc
|
; there was Drawline proc
|
||||||
lda #screenheight
|
lda #screenheight
|
||||||
sec
|
sec
|
||||||
@@ -1308,6 +1312,16 @@ drawmountainsloop
|
|||||||
dec tempbyte01
|
dec tempbyte01
|
||||||
bne @-
|
bne @-
|
||||||
; end of Drawline proc
|
; end of Drawline proc
|
||||||
|
.ELSE
|
||||||
|
; there was Drawline proc
|
||||||
|
drawline
|
||||||
|
jsr plot.MakePlot
|
||||||
|
inc ydraw
|
||||||
|
lda ydraw
|
||||||
|
cmp #screenheight
|
||||||
|
bne drawline
|
||||||
|
; end of Drawline proc
|
||||||
|
.ENDIF
|
||||||
NoMountain
|
NoMountain
|
||||||
inw modify
|
inw modify
|
||||||
inw xdraw
|
inw xdraw
|
||||||
@@ -1858,6 +1872,7 @@ CopyMask
|
|||||||
dey
|
dey
|
||||||
bpl CopyMask
|
bpl CopyMask
|
||||||
|
|
||||||
|
.IF FASTER_GRAF_PROCS = 1
|
||||||
; calculating coordinates from xdraw and ydraw
|
; calculating coordinates from xdraw and ydraw
|
||||||
mwa xdraw xbyte
|
mwa xdraw xbyte
|
||||||
|
|
||||||
@@ -1922,6 +1937,44 @@ CharLoopi
|
|||||||
inx
|
inx
|
||||||
cpx #8
|
cpx #8
|
||||||
bne CharLoopi
|
bne CharLoopi
|
||||||
|
.ELSE
|
||||||
|
mvx #7 temp ; line counter (Y)
|
||||||
|
CharLoop1
|
||||||
|
mva #7 temp+1 ; pixel counter (X)
|
||||||
|
CharLoop2
|
||||||
|
mva #0 color
|
||||||
|
rol mask1,x
|
||||||
|
bcc NoMaskNoPlot
|
||||||
|
rol char1,x
|
||||||
|
bcs NoPlot
|
||||||
|
MakeCharPlot
|
||||||
|
lda Erase
|
||||||
|
bne ErasingChar
|
||||||
|
inc color
|
||||||
|
ErasingChar
|
||||||
|
NoPlot
|
||||||
|
jsr plot.MakePlot
|
||||||
|
AfterCharPlot
|
||||||
|
inw xdraw
|
||||||
|
ldx temp
|
||||||
|
dec temp+1
|
||||||
|
bpl CharLoop2
|
||||||
|
sec
|
||||||
|
sbw xdraw #8
|
||||||
|
dec ydraw
|
||||||
|
ldx temp
|
||||||
|
dex
|
||||||
|
stx temp
|
||||||
|
bpl CharLoop1
|
||||||
|
clc
|
||||||
|
lda ydraw
|
||||||
|
adc #8
|
||||||
|
sta ydraw
|
||||||
|
bne EndPutChar
|
||||||
|
NoMaskNoPlot
|
||||||
|
rol char1,x
|
||||||
|
jmp AfterCharPlot
|
||||||
|
.ENDIF
|
||||||
EndPutChar
|
EndPutChar
|
||||||
rts
|
rts
|
||||||
.endp
|
.endp
|
||||||
@@ -1979,6 +2032,7 @@ GetUpper4bits
|
|||||||
dex
|
dex
|
||||||
bpl CopyChar
|
bpl CopyChar
|
||||||
|
|
||||||
|
.IF FASTER_GRAF_PROCS = 1
|
||||||
; calculating coordinates from xdraw and ydraw
|
; calculating coordinates from xdraw and ydraw
|
||||||
mwa dx xbyte
|
mwa dx xbyte
|
||||||
|
|
||||||
@@ -2038,6 +2092,48 @@ PutInColor0_2
|
|||||||
inx
|
inx
|
||||||
cpx #4
|
cpx #4
|
||||||
bne CharLoopi4x4
|
bne CharLoopi4x4
|
||||||
|
.ELSE
|
||||||
|
mwa xdraw char2
|
||||||
|
mwa ydraw mask2
|
||||||
|
mva color mask2+2
|
||||||
|
mwa dx xdraw
|
||||||
|
mwa dy ydraw
|
||||||
|
mvx #3 temp ; line counter (Y)
|
||||||
|
CharLoop1
|
||||||
|
mva #3 temp+1 ; pixel counter (X)
|
||||||
|
CharLoop2
|
||||||
|
mva #0 color
|
||||||
|
rol mask1,x
|
||||||
|
bcc NoMaskNoPlot
|
||||||
|
rol char1,x
|
||||||
|
bcs NoPlot
|
||||||
|
MakeCharPlot
|
||||||
|
lda plot4x4color
|
||||||
|
beq ErasingChar
|
||||||
|
inc color
|
||||||
|
ErasingChar
|
||||||
|
NoPlot
|
||||||
|
jsr plot.MakePlot
|
||||||
|
AfterCharPlot
|
||||||
|
inw xdraw
|
||||||
|
ldx temp
|
||||||
|
dec temp+1
|
||||||
|
bpl CharLoop2
|
||||||
|
sec
|
||||||
|
sbw xdraw #4
|
||||||
|
dec ydraw
|
||||||
|
ldx temp
|
||||||
|
dex
|
||||||
|
stx temp
|
||||||
|
bpl CharLoop1
|
||||||
|
mwa char2 xdraw
|
||||||
|
mwa mask2 ydraw
|
||||||
|
mva mask2+2 color
|
||||||
|
bpl EndPut4x4
|
||||||
|
NoMaskNoPlot
|
||||||
|
rol char1,x
|
||||||
|
jmp AfterCharPlot
|
||||||
|
.ENDIF
|
||||||
EndPut4x4
|
EndPut4x4
|
||||||
rts
|
rts
|
||||||
.endp
|
.endp
|
||||||
|
|||||||
+77
-62
@@ -12,13 +12,16 @@
|
|||||||
;---------------------------------------------------
|
;---------------------------------------------------
|
||||||
.def XCORRECTION_FOR_PM = 0
|
.def XCORRECTION_FOR_PM = 0
|
||||||
; if 1 - active x position of tanks correction fo PMG
|
; 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 :) )
|
||||||
;---------------------------------------------------
|
;---------------------------------------------------
|
||||||
|
|
||||||
;OPT r+ ; saves 12 bytes :O
|
;OPT r+ ; saves 12 bytes :O
|
||||||
|
|
||||||
;---------------------------------------------------
|
;---------------------------------------------------
|
||||||
.macro build
|
.macro build
|
||||||
dta d"1.27" ; number of this build (4 bytes)
|
dta d"1.28" ; number of this build (4 bytes)
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro RMTSong
|
.macro RMTSong
|
||||||
@@ -191,7 +194,7 @@ FirstZpageVariable = $57
|
|||||||
.ELSE
|
.ELSE
|
||||||
icl 'lib/ATARISYS.ASM'
|
icl 'lib/ATARISYS.ASM'
|
||||||
icl 'lib/MACRO.ASM'
|
icl 'lib/MACRO.ASM'
|
||||||
icl 'artwork/Scorch50.asm' ; splash screen and musix
|
icl 'artwork/splash_v2/splash.asm' ; splash screen and musix
|
||||||
.ENDIF
|
.ENDIF
|
||||||
|
|
||||||
;-----------------------------------------------
|
;-----------------------------------------------
|
||||||
@@ -314,14 +317,9 @@ no5200splash
|
|||||||
dey
|
dey
|
||||||
bpl @-
|
bpl @-
|
||||||
|
|
||||||
; initialize one Variable in zero page :)
|
|
||||||
;lda #<dliColorsFore
|
|
||||||
;sta GradientColors
|
|
||||||
;lda #>dliColorsFore
|
|
||||||
;sta GradientColors+1
|
|
||||||
; set gradient to the full LGBTIQQAAPP+ flag on start
|
; set gradient to the full LGBTIQQAAPP+ flag on start
|
||||||
mva #1 GradientNr
|
mva #0 GradientNr ; #1 to set gradient number 2 :) (next one)
|
||||||
jsr SelectNextGradient
|
jsr SelectNextGradient.NotWind
|
||||||
|
|
||||||
; generate linetables
|
; generate linetables
|
||||||
mwa #display temp
|
mwa #display temp
|
||||||
@@ -338,6 +336,12 @@ no5200splash
|
|||||||
bne @-
|
bne @-
|
||||||
|
|
||||||
.IF TARGET = 800
|
.IF TARGET = 800
|
||||||
|
|
||||||
|
; pokeys init
|
||||||
|
lda #3 ; stereo
|
||||||
|
sta POKEY+$0f ; stereo
|
||||||
|
sta POKEY+$1f ; stereo
|
||||||
|
|
||||||
lda PAL
|
lda PAL
|
||||||
and #%00001110
|
and #%00001110
|
||||||
bne NoRMT_PALchange
|
bne NoRMT_PALchange
|
||||||
@@ -643,6 +647,7 @@ SettingEnergies
|
|||||||
.proc MainRoundLoop
|
.proc MainRoundLoop
|
||||||
; here we must check if by a chance there is only one
|
; here we must check if by a chance there is only one
|
||||||
; tank with energy greater than 0 left
|
; tank with energy greater than 0 left
|
||||||
|
;--------------------------------------------------
|
||||||
|
|
||||||
ldy #0 ; in Y - number of tanks with energy greater than zero
|
ldy #0 ; in Y - number of tanks with energy greater than zero
|
||||||
sty ATRACT ; reset atract mode
|
sty ATRACT ; reset atract mode
|
||||||
@@ -908,9 +913,10 @@ NotLastPlayerInRound
|
|||||||
|
|
||||||
;---------------------------------
|
;---------------------------------
|
||||||
.proc PlayerXdeath
|
.proc PlayerXdeath
|
||||||
|
|
||||||
; this tank should not explode anymore:
|
; this tank should not explode anymore:
|
||||||
; there is 0 in A, and Tank Number in X, so...
|
; there is 0 in A, and Tank Number in X, so...
|
||||||
|
;---------------------------------
|
||||||
|
|
||||||
sta LASTeXistenZ,x
|
sta LASTeXistenZ,x
|
||||||
; save x somewhere
|
; save x somewhere
|
||||||
stx TankTempY
|
stx TankTempY
|
||||||
@@ -926,7 +932,7 @@ NotLastPlayerInRound
|
|||||||
|
|
||||||
; in X there is a number of tank that died
|
; in X there is a number of tank that died
|
||||||
|
|
||||||
lda #77 ; mumber of defensive text after BFG!
|
lda #78 ; mumber of defensive text after BFG! ("VERY FUNNY.")
|
||||||
bit AfterBFGflag ; check BFG flag
|
bit AfterBFGflag ; check BFG flag
|
||||||
bmi TextAfterBFG
|
bmi TextAfterBFG
|
||||||
; if BFG then no points for dead tanks ...
|
; if BFG then no points for dead tanks ...
|
||||||
@@ -1039,7 +1045,6 @@ ldahashzero
|
|||||||
NotNegativeEnergy
|
NotNegativeEnergy
|
||||||
sta Energy,x
|
sta Energy,x
|
||||||
;now increase the gain of the shooting tank
|
;now increase the gain of the shooting tank
|
||||||
; phx
|
|
||||||
ldy TankNr
|
ldy TankNr
|
||||||
clc
|
clc
|
||||||
lda gainL,y
|
lda gainL,y
|
||||||
@@ -1048,7 +1053,6 @@ NotNegativeEnergy
|
|||||||
lda gainH,y
|
lda gainH,y
|
||||||
adc #$00
|
adc #$00
|
||||||
sta gainH,y
|
sta gainH,y
|
||||||
; plx
|
|
||||||
rts
|
rts
|
||||||
.endp
|
.endp
|
||||||
|
|
||||||
@@ -1081,6 +1085,7 @@ NotNegativeShieldEnergy
|
|||||||
|
|
||||||
;---------------------------------
|
;---------------------------------
|
||||||
.proc Seppuku
|
.proc Seppuku
|
||||||
|
;---------------------------------
|
||||||
lda #0
|
lda #0
|
||||||
sta ydraw+1
|
sta ydraw+1
|
||||||
; get position of the tank
|
; get position of the tank
|
||||||
@@ -1135,48 +1140,44 @@ NotNegativeShieldEnergy
|
|||||||
;this algiorithm is a little longer than one in Ruszczyc 6502 book
|
;this algiorithm is a little longer than one in Ruszczyc 6502 book
|
||||||
;but it is faster
|
;but it is faster
|
||||||
|
|
||||||
LDy #8
|
ldy #8
|
||||||
LDA #0
|
lda #0
|
||||||
CLC
|
clc
|
||||||
LP0
|
LP0 ror
|
||||||
|
ror L1
|
||||||
|
bcc B0
|
||||||
|
clc
|
||||||
|
adc #10 ; (L2) multiplication by 10
|
||||||
|
B0 dey
|
||||||
|
bne LP0
|
||||||
ror
|
ror
|
||||||
ROR L1
|
ror L1
|
||||||
BCC B0
|
sta MaxForceTableH,x
|
||||||
CLC
|
|
||||||
ADC #10 ; (L2) multiplication by 10
|
|
||||||
B0 DEY
|
|
||||||
BNE LP0
|
|
||||||
ror
|
|
||||||
ROR L1
|
|
||||||
STA MaxForceTableH,x
|
|
||||||
lda L1
|
lda L1
|
||||||
sta MaxForceTableL,x
|
sta MaxForceTableL,x
|
||||||
rts
|
rts
|
||||||
.endp
|
.endp
|
||||||
|
|
||||||
;--------------------------------------------------
|
;--------------------------------------------------
|
||||||
.proc WeaponCleanup;
|
.proc WeaponCleanup
|
||||||
; cleaning of the weapon possesion tables
|
; cleaning of the weapon possesion tables
|
||||||
; 99 of Baby Missles(index==0), all other weapons=0)
|
; 99 of Baby Missles and White Flags, all other weapons=0)
|
||||||
;--------------------------------------------------
|
;--------------------------------------------------
|
||||||
ldx #$3f ; TODO: maxweapons
|
ldx #(number_of_weapons - 1)
|
||||||
@ lda #$0
|
@ lda #$0
|
||||||
cpx #ind_White_Flag_____ ; White Flag
|
cpx #ind_White_Flag_____ ; White Flag
|
||||||
bne @+
|
bne no99
|
||||||
lda #99
|
set99 lda #99
|
||||||
@ sta TanksWeapon1,x
|
no99 sta TanksWeapon1,x
|
||||||
sta TanksWeapon2,x
|
sta TanksWeapon2,x
|
||||||
sta TanksWeapon3,x
|
sta TanksWeapon3,x
|
||||||
sta TanksWeapon4,x
|
sta TanksWeapon4,x
|
||||||
sta TanksWeapon5,x
|
sta TanksWeapon5,x
|
||||||
sta TanksWeapon6,x
|
sta TanksWeapon6,x
|
||||||
dex
|
dex
|
||||||
beq setBmissile
|
beq set99 ; Baby Missile (index=0)
|
||||||
bpl @-1
|
bpl @-
|
||||||
rts
|
rts
|
||||||
setBmissile
|
|
||||||
lda #99
|
|
||||||
bne @-
|
|
||||||
.endp
|
.endp
|
||||||
|
|
||||||
;--------------------------------------------------
|
;--------------------------------------------------
|
||||||
@@ -1256,6 +1257,9 @@ MakeTanksVisible
|
|||||||
.endp
|
.endp
|
||||||
;--------------------------------------------------
|
;--------------------------------------------------
|
||||||
.proc SetStandardBarrels
|
.proc SetStandardBarrels
|
||||||
|
; set standart barrel length and deactivate Auto Defense
|
||||||
|
; for all tanks
|
||||||
|
;--------------------------------------------------
|
||||||
ldx #maxPlayers-1
|
ldx #maxPlayers-1
|
||||||
@ lda #StandardBarrel ; standard barrel length
|
@ lda #StandardBarrel ; standard barrel length
|
||||||
sta BarrelLength,x
|
sta BarrelLength,x
|
||||||
@@ -1266,7 +1270,7 @@ MakeTanksVisible
|
|||||||
rts
|
rts
|
||||||
.endp
|
.endp
|
||||||
;----------------------------------------------
|
;----------------------------------------------
|
||||||
.proc RandomizeSequence0
|
/* .proc RandomizeSequence0
|
||||||
ldx #0
|
ldx #0
|
||||||
@ txa
|
@ txa
|
||||||
sta TankSequence,x
|
sta TankSequence,x
|
||||||
@@ -1274,7 +1278,7 @@ MakeTanksVisible
|
|||||||
cpx #MaxPlayers
|
cpx #MaxPlayers
|
||||||
bne @-
|
bne @-
|
||||||
rts
|
rts
|
||||||
.endp
|
.endp */
|
||||||
;--------------------------------------------------
|
;--------------------------------------------------
|
||||||
.proc RandomizeSequence
|
.proc RandomizeSequence
|
||||||
; in: NumberOfPlayers
|
; in: NumberOfPlayers
|
||||||
@@ -1331,20 +1335,10 @@ UsageLoop
|
|||||||
; X is not changed
|
; X is not changed
|
||||||
;----------------------------------------------
|
;----------------------------------------------
|
||||||
|
|
||||||
;valid angle values are ((256-90)..255) and (0..90)
|
; lets randomize someting between 0 and 180
|
||||||
;it means that values 91..165 must be elliminated...
|
|
||||||
;so, lets randomize someting between 0 and 180
|
|
||||||
;and substract this value from 90
|
|
||||||
lda RANDOM
|
lda RANDOM
|
||||||
|
|
||||||
cmp #180
|
cmp #180
|
||||||
bcs RandomizeAngle
|
bcs RandomizeAngle
|
||||||
|
|
||||||
|
|
||||||
;sta temp
|
|
||||||
;lda #90 ; CARRY=0 here
|
|
||||||
;sbc temp
|
|
||||||
|
|
||||||
rts
|
rts
|
||||||
.endp
|
.endp
|
||||||
;----------------------------------------------
|
;----------------------------------------------
|
||||||
@@ -1395,6 +1389,7 @@ LimitForce
|
|||||||
.endp
|
.endp
|
||||||
;----------------------------------------------
|
;----------------------------------------------
|
||||||
.proc Table2Force
|
.proc Table2Force
|
||||||
|
;----------------------------------------------
|
||||||
lda ForceTableL,x
|
lda ForceTableL,x
|
||||||
sta Force
|
sta Force
|
||||||
lda ForceTableH,x
|
lda ForceTableH,x
|
||||||
@@ -1403,6 +1398,7 @@ LimitForce
|
|||||||
.endp
|
.endp
|
||||||
;----------------------------------------------
|
;----------------------------------------------
|
||||||
.proc MoveBarrelToNewPosition
|
.proc MoveBarrelToNewPosition
|
||||||
|
;----------------------------------------------
|
||||||
mva #1 Erase
|
mva #1 Erase
|
||||||
jsr DrawTankNr.BarrelChange
|
jsr DrawTankNr.BarrelChange
|
||||||
mva #0 Erase
|
mva #0 Erase
|
||||||
@@ -1418,11 +1414,11 @@ MoveBarrel
|
|||||||
lda NewAngle
|
lda NewAngle
|
||||||
cmp AngleTable,x
|
cmp AngleTable,x
|
||||||
beq BarrelPositionIsFine
|
beq BarrelPositionIsFine
|
||||||
bcc rotateLeft ; older is bigger
|
bcc rotateLeft
|
||||||
rotateRight ; older is lower
|
rotateRight ; older is lower
|
||||||
inc angleTable,x
|
inc angleTable,x
|
||||||
jmp MoveBarrel
|
jmp MoveBarrel
|
||||||
rotateLeft
|
rotateLeft ; older is bigger
|
||||||
dec angleTable,x
|
dec angleTable,x
|
||||||
jmp MoveBarrel
|
jmp MoveBarrel
|
||||||
BarrelPositionIsFine
|
BarrelPositionIsFine
|
||||||
@@ -1442,10 +1438,10 @@ BarrelPositionIsFine
|
|||||||
; I think I will go for a stupid bubble sort...
|
; I think I will go for a stupid bubble sort...
|
||||||
; it is easy to test :)
|
; it is easy to test :)
|
||||||
;
|
;
|
||||||
; Results are in ResultsTable, in SortedTable we want to
|
; Results are in ResultsTable, in TankSequence (Sorted Table) we want to
|
||||||
; have numbers of tanks from the worst to the best.
|
; have numbers of tanks from the worst to the best.
|
||||||
; in other words, if ResultsTable=(5,4,65,23,3,6)
|
; in other words, if ResultsTable=(5,4,65,23,3,6)
|
||||||
; the SortedTable=(4,1,0,5,3,2)
|
; the TankSequence=(4,1,0,5,3,2)
|
||||||
; let's assume initially the TankSequence=(0,1,2,3,4,5)
|
; let's assume initially the TankSequence=(0,1,2,3,4,5)
|
||||||
|
|
||||||
ldx #0
|
ldx #0
|
||||||
@@ -1490,10 +1486,20 @@ Bubble
|
|||||||
BubbleBobble
|
BubbleBobble
|
||||||
lda TempResults,x
|
lda TempResults,x
|
||||||
cmp TempResults+1,x
|
cmp TempResults+1,x
|
||||||
|
bcc nextishigher
|
||||||
|
bne swapvalues
|
||||||
|
nextisequal
|
||||||
|
; if results are equal, check Direct Hits (only lower byte - sorry memory)
|
||||||
|
ldy TankSequence,x
|
||||||
|
lda DirectHitsL,y
|
||||||
|
ldy TankSequence+1,x
|
||||||
|
cmp DirectHitsL,y
|
||||||
|
;
|
||||||
beq nextishigher ; this is to block hangs when 2 equal values meet
|
beq nextishigher ; this is to block hangs when 2 equal values meet
|
||||||
bcc nextishigher
|
bcc nextishigher
|
||||||
;here we must swap values
|
;here we must swap values
|
||||||
;because next is smaller than previous
|
;because next is smaller than previous
|
||||||
|
swapvalues
|
||||||
sta temp
|
sta temp
|
||||||
lda TempResults+1,x
|
lda TempResults+1,x
|
||||||
sta TempResults,x
|
sta TempResults,x
|
||||||
@@ -1537,8 +1543,10 @@ SetRandomWalls
|
|||||||
rts
|
rts
|
||||||
.endp
|
.endp
|
||||||
;--------------------------------------------------
|
;--------------------------------------------------
|
||||||
.proc GetKey ; waits for pressing a key and returns pressed value in A
|
.proc GetKey
|
||||||
; when [ESC] is pressed, escFlag is set to 1
|
; waits for pressing a key and returns pressed value in A
|
||||||
|
; when [ESC] is pressed, escFlag is set
|
||||||
|
; result: A=keycode
|
||||||
;--------------------------------------------------
|
;--------------------------------------------------
|
||||||
jsr WaitForKeyRelease
|
jsr WaitForKeyRelease
|
||||||
@
|
@
|
||||||
@@ -1642,7 +1650,8 @@ KeyReleased
|
|||||||
rts
|
rts
|
||||||
.endp
|
.endp
|
||||||
;--------------------------------------------------
|
;--------------------------------------------------
|
||||||
.proc IsKeyPressed ; A=0 - yes , A>0 - no
|
.proc IsKeyPressed
|
||||||
|
; result: A=0 - yes , A>0 - no
|
||||||
;--------------------------------------------------
|
;--------------------------------------------------
|
||||||
lda SKSTAT
|
lda SKSTAT
|
||||||
and #%00000100
|
and #%00000100
|
||||||
@@ -1653,6 +1662,8 @@ KeyReleased
|
|||||||
.endp
|
.endp
|
||||||
;--------------------------------------------------
|
;--------------------------------------------------
|
||||||
.proc DemoModeOrKey
|
.proc DemoModeOrKey
|
||||||
|
; Waits for the key pressed if at least one human is playing.
|
||||||
|
; Otherwise, waits 3 seconds (demo mode).
|
||||||
;--------------------------------------------------
|
;--------------------------------------------------
|
||||||
;check demo mode
|
;check demo mode
|
||||||
ldx numberOfPlayers
|
ldx numberOfPlayers
|
||||||
@@ -1667,17 +1678,19 @@ checkForHuman ; if all in skillTable other than 0 then switch to DEMO MODE
|
|||||||
ldy #75
|
ldy #75
|
||||||
jsr PauseYFrames
|
jsr PauseYFrames
|
||||||
rts
|
rts
|
||||||
|
|
||||||
peopleAreHere
|
peopleAreHere
|
||||||
jmp getkey ; jsr:rts
|
jmp getkey ; jsr:rts
|
||||||
.endp
|
.endp
|
||||||
|
|
||||||
|
;--------------------------------------------------
|
||||||
MakeDarkScreen
|
MakeDarkScreen
|
||||||
jsr PMoutofScreen
|
;--------------------------------------------------
|
||||||
|
jsr PMoutofScreen ; hide P/M
|
||||||
mva #0 dmactls ; dark screen
|
mva #0 dmactls ; dark screen
|
||||||
; sta dmactl ; probably not necessary (3 bytes!!! :) )
|
|
||||||
; and wait one frame :)
|
; and wait one frame :)
|
||||||
|
;--------------------------------------------------
|
||||||
.proc WaitOneFrame
|
.proc WaitOneFrame
|
||||||
|
;--------------------------------------------------
|
||||||
lda CONSOL
|
lda CONSOL
|
||||||
and #%00000101 ; Start + Option
|
and #%00000101 ; Start + Option
|
||||||
sne:mva #$40 escFlag
|
sne:mva #$40 escFlag
|
||||||
@@ -1686,9 +1699,11 @@ MakeDarkScreen
|
|||||||
rts
|
rts
|
||||||
.endp
|
.endp
|
||||||
|
|
||||||
|
;--------------------------------------------------
|
||||||
.proc PauseYFrames
|
.proc PauseYFrames
|
||||||
; Y - number of frames to wait (divided by 2)
|
; Y - number of frames to wait (divided by 2)
|
||||||
; pauses for maximally 510 frames (255 * 2)
|
; pauses for maximally 510 frames (255 * 2)
|
||||||
|
;--------------------------------------------------
|
||||||
@ jsr WaitOneFrame
|
@ jsr WaitOneFrame
|
||||||
jsr WaitOneFrame
|
jsr WaitOneFrame
|
||||||
dey
|
dey
|
||||||
@@ -1698,8 +1713,8 @@ MakeDarkScreen
|
|||||||
|
|
||||||
;--------------------------------------------------
|
;--------------------------------------------------
|
||||||
.proc RmtSongSelect
|
.proc RmtSongSelect
|
||||||
;--------------------------------------------------
|
|
||||||
; starting song line 0-255 to A reg
|
; starting song line 0-255 to A reg
|
||||||
|
;--------------------------------------------------
|
||||||
cmp #song_ingame
|
cmp #song_ingame
|
||||||
bne noingame ; noMusic blocks only ingame song
|
bne noingame ; noMusic blocks only ingame song
|
||||||
bit noMusic
|
bit noMusic
|
||||||
@@ -1784,7 +1799,7 @@ YesCheat
|
|||||||
lda #99
|
lda #99
|
||||||
@ iny
|
@ iny
|
||||||
sta (temp),y
|
sta (temp),y
|
||||||
cpy #(last_defensive_____ - first_offensive____)
|
cpy #(number_of_weapons - 1)
|
||||||
bne @-
|
bne @-
|
||||||
NoCheat
|
NoCheat
|
||||||
rts
|
rts
|
||||||
|
|||||||
BIN
Binary file not shown.
BIN
Binary file not shown.
+29
-35
@@ -2033,34 +2033,33 @@ EndOfCredits
|
|||||||
.proc DisplayStatus
|
.proc DisplayStatus
|
||||||
;-------------------------------------------------
|
;-------------------------------------------------
|
||||||
|
|
||||||
|
;=========================
|
||||||
; displaying number of active controller port
|
; displaying number of active controller port
|
||||||
|
;=========================
|
||||||
ldy JoystickNumber
|
ldy JoystickNumber
|
||||||
lda digits+1,y
|
lda digits+1,y
|
||||||
sta statusBuffer+17
|
sta statusBuffer+17
|
||||||
;---------------------
|
|
||||||
|
;=========================
|
||||||
;displaying symbol of the weapon
|
;displaying symbol of the weapon
|
||||||
;---------------------
|
;=========================
|
||||||
;display name and symbol of the weapon
|
|
||||||
;statusBuffer+18 - symbol (1 char)
|
|
||||||
;statusBuffer+20 - quantity left
|
|
||||||
;statusBuffer+23 - name
|
|
||||||
ldx TankNr
|
ldx TankNr
|
||||||
ldy ActiveWeapon,x
|
ldy ActiveWeapon,x
|
||||||
lda WeaponSymbols,y
|
lda WeaponSymbols,y
|
||||||
sta statusBuffer+19
|
sta statusBuffer+19
|
||||||
|
|
||||||
;---------------------
|
;=========================
|
||||||
;displaying quantity of the given weapon
|
;displaying quantity of the given weapon
|
||||||
;---------------------
|
;=========================
|
||||||
lda ActiveWeapon,x
|
lda ActiveWeapon,x
|
||||||
jsr HowManyBullets
|
jsr HowManyBullets
|
||||||
sta decimal
|
sta decimal
|
||||||
mwa #statusBuffer+21 displayposition
|
mwa #statusBuffer+21 displayposition
|
||||||
jsr displaybyte
|
jsr displaybyte
|
||||||
|
|
||||||
;---------------------
|
;=========================
|
||||||
;displaying name of the weapon
|
;displaying name of the weapon
|
||||||
;---------------------
|
;=========================
|
||||||
ldx TankNr
|
ldx TankNr
|
||||||
lda ActiveWeapon,x
|
lda ActiveWeapon,x
|
||||||
sta temp ;get back number of the weapon
|
sta temp ;get back number of the weapon
|
||||||
@@ -2080,9 +2079,9 @@ EndOfCredits
|
|||||||
dey
|
dey
|
||||||
bpl @-
|
bpl @-
|
||||||
|
|
||||||
;---------------------
|
;=========================
|
||||||
;displaying name of the defence weapon (if active)
|
;displaying name of the defence weapon (if active)
|
||||||
;---------------------
|
;=========================
|
||||||
lda AutoDefenseFlag,x ; Auto Defense symbol (space or "A" in inverse)
|
lda AutoDefenseFlag,x ; Auto Defense symbol (space or "A" in inverse)
|
||||||
bpl @+
|
bpl @+
|
||||||
lda #$5e ; Auto Defense symbol
|
lda #$5e ; Auto Defense symbol
|
||||||
@@ -2119,19 +2118,17 @@ ClearingOnly
|
|||||||
dey
|
dey
|
||||||
bpl @-
|
bpl @-
|
||||||
|
|
||||||
;---------------------
|
;=========================
|
||||||
;displaying the energy of a tank
|
;displaying the energy of a tank
|
||||||
;---------------------
|
;=========================
|
||||||
|
|
||||||
lda Energy,x
|
lda Energy,x
|
||||||
|
|
||||||
sta decimal
|
sta decimal
|
||||||
mwa #statusBuffer+48 displayposition
|
mwa #statusBuffer+48 displayposition
|
||||||
jsr displaybyte
|
jsr displaybyte
|
||||||
|
|
||||||
;---------------------
|
;=========================
|
||||||
;displaying the energy of a tank shield (if exist)
|
;displaying the energy of a tank shield (if exist)
|
||||||
;---------------------
|
;=========================
|
||||||
; clear (if no shield)
|
; clear (if no shield)
|
||||||
lda #space
|
lda #space
|
||||||
sta statusBuffer+40+10
|
sta statusBuffer+40+10
|
||||||
@@ -2158,14 +2155,17 @@ NoShieldEnergy
|
|||||||
; display Wind
|
; display Wind
|
||||||
;=========================
|
;=========================
|
||||||
mwa Wind temp
|
mwa Wind temp
|
||||||
lda Wind+3 ; highest byte of 4 byte wind
|
lda #space
|
||||||
|
bit Wind+3 ; highest byte of 4 byte wind
|
||||||
bmi DisplayLeftWind
|
bmi DisplayLeftWind
|
||||||
|
sta statusBuffer+80+17 ; (space) char
|
||||||
lda #$7f ; (tab) char
|
lda #$7f ; (tab) char
|
||||||
sta statusBuffer+80+20
|
sta statusBuffer+80+20
|
||||||
lda #space
|
bne DisplayWindValue
|
||||||
sta statusBuffer+80+17
|
|
||||||
beq DisplayWindValue
|
|
||||||
DisplayLeftWind
|
DisplayLeftWind
|
||||||
|
sta statusBuffer+80+20 ; (space) char
|
||||||
|
lda #$7e ;(del) char
|
||||||
|
sta statusBuffer+80+17
|
||||||
sec ; Wind = -Wind
|
sec ; Wind = -Wind
|
||||||
lda #$00
|
lda #$00
|
||||||
sbc temp
|
sbc temp
|
||||||
@@ -2173,10 +2173,6 @@ DisplayLeftWind
|
|||||||
lda #$00
|
lda #$00
|
||||||
sbc temp+1
|
sbc temp+1
|
||||||
sta temp+1
|
sta temp+1
|
||||||
lda #$7e ;(del) char
|
|
||||||
sta statusBuffer+80+17
|
|
||||||
lda #space
|
|
||||||
sta statusBuffer+80+20
|
|
||||||
DisplayWindValue
|
DisplayWindValue
|
||||||
:4 lsrw temp ;divide by 16 to have a nice value on a screen
|
:4 lsrw temp ;divide by 16 to have a nice value on a screen
|
||||||
lda temp
|
lda temp
|
||||||
@@ -2207,6 +2203,7 @@ DisplayWindValue
|
|||||||
;display Angle
|
;display Angle
|
||||||
;=========================
|
;=========================
|
||||||
displayAngle
|
displayAngle
|
||||||
|
ldy #space
|
||||||
ldx TankNr
|
ldx TankNr
|
||||||
lda AngleTable,x
|
lda AngleTable,x
|
||||||
cmp #90
|
cmp #90
|
||||||
@@ -2215,28 +2212,25 @@ displayAngle
|
|||||||
AngleToRight
|
AngleToRight
|
||||||
; now we have values from 0 to 89 and right angle
|
; now we have values from 0 to 89 and right angle
|
||||||
sta decimal
|
sta decimal
|
||||||
|
sty statusBuffer+40+22 ; (space) character
|
||||||
lda #$7f ; (tab) character
|
lda #$7f ; (tab) character
|
||||||
sta statusBuffer+40+25
|
sta statusBuffer+40+25
|
||||||
lda #space
|
bne AngleDisplay
|
||||||
sta statusBuffer+40+22
|
|
||||||
beq AngleDisplay
|
|
||||||
AngleToLeft
|
AngleToLeft
|
||||||
sec
|
sec
|
||||||
lda #180
|
lda #180
|
||||||
sbc AngleTable,x
|
sbc AngleTable,x
|
||||||
; angles 180 - 91 converted to 0 - 89
|
; angles 180 - 91 converted to 0 - 89
|
||||||
sta decimal
|
sta decimal
|
||||||
|
sty statusBuffer+40+25 ; (space) character
|
||||||
lda #$7e ;(del) char
|
lda #$7e ;(del) char
|
||||||
sta statusBuffer+40+22
|
sta statusBuffer+40+22
|
||||||
lda #space
|
bne AngleDisplay
|
||||||
sta statusBuffer+40+25
|
|
||||||
beq AngleDisplay
|
|
||||||
VerticallyUp
|
VerticallyUp
|
||||||
; now we have value 90
|
; now we have value 90
|
||||||
sta decimal
|
sta decimal
|
||||||
lda #space
|
sty statusBuffer+40+25 ; (space) character
|
||||||
sta statusBuffer+40+25
|
sty statusBuffer+40+22 ; (space) character
|
||||||
sta statusBuffer+40+22
|
|
||||||
|
|
||||||
AngleDisplay
|
AngleDisplay
|
||||||
mwa #statusBuffer+40+23 displayposition
|
mwa #statusBuffer+40+23 displayposition
|
||||||
|
|||||||
+6
-6
@@ -342,17 +342,17 @@ LaserCoordinate .DS 8 ; 2,2,2,2
|
|||||||
; from $30 the defensive weapons begin
|
; from $30 the defensive weapons begin
|
||||||
TanksWeapons
|
TanksWeapons
|
||||||
TanksWeapon1
|
TanksWeapon1
|
||||||
.DS [last_defensive_____ - first_offensive____ +1]
|
.DS number_of_weapons
|
||||||
TanksWeapon2
|
TanksWeapon2
|
||||||
.DS [last_defensive_____ - first_offensive____ +1]
|
.DS number_of_weapons
|
||||||
TanksWeapon3
|
TanksWeapon3
|
||||||
.DS [last_defensive_____ - first_offensive____ +1]
|
.DS number_of_weapons
|
||||||
TanksWeapon4
|
TanksWeapon4
|
||||||
.DS [last_defensive_____ - first_offensive____ +1]
|
.DS number_of_weapons
|
||||||
TanksWeapon5
|
TanksWeapon5
|
||||||
.DS [last_defensive_____ - first_offensive____ +1]
|
.DS number_of_weapons
|
||||||
TanksWeapon6
|
TanksWeapon6
|
||||||
.DS [last_defensive_____ - first_offensive____ +1]
|
.DS number_of_weapons
|
||||||
|
|
||||||
mountaintable ;table of mountains (size=screenwidth)
|
mountaintable ;table of mountains (size=screenwidth)
|
||||||
.DS [screenwidth]
|
.DS [screenwidth]
|
||||||
|
|||||||
+41
-9
@@ -3,6 +3,9 @@
|
|||||||
.IF *>0 ;this is a trick that prevents compiling this file alone
|
.IF *>0 ;this is a trick that prevents compiling this file alone
|
||||||
;--------------------------------------------------
|
;--------------------------------------------------
|
||||||
.proc Explosion
|
.proc Explosion
|
||||||
|
; xdraw,ydraw (word) - coordinates of explosion center
|
||||||
|
; TankNr - number of shooting tank
|
||||||
|
; ActiveWeapon(TankNr) - weapon that tank fires
|
||||||
;--------------------------------------------------
|
;--------------------------------------------------
|
||||||
;cleanup of the soil fall down ranges (left and right)
|
;cleanup of the soil fall down ranges (left and right)
|
||||||
jsr ClearScreenSoilRange
|
jsr ClearScreenSoilRange
|
||||||
@@ -358,29 +361,34 @@ EndNurnedCheckLoop
|
|||||||
; ------------------------
|
; ------------------------
|
||||||
.proc babyroller
|
.proc babyroller
|
||||||
mva #11 ExplosionRadius
|
mva #11 ExplosionRadius
|
||||||
|
GoRoller
|
||||||
jmp xroller
|
jmp xroller
|
||||||
.endp
|
.endp
|
||||||
; ------------------------
|
; ------------------------
|
||||||
.proc roller ;
|
.proc roller ;
|
||||||
mva #21 ExplosionRadius
|
mva #21 ExplosionRadius
|
||||||
jmp xroller
|
bne babyroller.GoRoller ; 1 byte saved
|
||||||
|
; jmp xroller
|
||||||
.endp
|
.endp
|
||||||
; ------------------------
|
; ------------------------
|
||||||
.proc heavyroller
|
.proc heavyroller
|
||||||
mva #30 ExplosionRadius
|
mva #30 ExplosionRadius
|
||||||
jmp xroller
|
bne babyroller.GoRoller ; 1 byte saved
|
||||||
|
; jmp xroller
|
||||||
.endp
|
.endp
|
||||||
; ------------------------
|
; ------------------------
|
||||||
.proc riotbomb
|
.proc riotbomb
|
||||||
mva #17 ExplosionRadius
|
mva #17 ExplosionRadius
|
||||||
|
GoRiotBomb
|
||||||
jsr CalculateExplosionRange
|
jsr CalculateExplosionRange
|
||||||
jmp xriotbomb
|
jmp xriotbomb
|
||||||
.endp
|
.endp
|
||||||
; ------------------------
|
; ------------------------
|
||||||
.proc heavyriotbomb
|
.proc heavyriotbomb
|
||||||
mva #29 ExplosionRadius
|
mva #29 ExplosionRadius
|
||||||
jsr CalculateExplosionRange
|
bne riotbomb.GoRiotBomb ; 4 bytes saved - optimization :)
|
||||||
jmp xriotbomb
|
; jsr CalculateExplosionRange
|
||||||
|
; jmp xriotbomb
|
||||||
.endp
|
.endp
|
||||||
; ------------------------
|
; ------------------------
|
||||||
.proc babydigger
|
.proc babydigger
|
||||||
@@ -932,6 +940,14 @@ ExplodeNow
|
|||||||
; --------------------------------------------------
|
; --------------------------------------------------
|
||||||
.proc checkRollDirection
|
.proc checkRollDirection
|
||||||
; check rolling direction (for roller and other rolling weapons)
|
; check rolling direction (for roller and other rolling weapons)
|
||||||
|
; xdraw (word) - X coordinate
|
||||||
|
; Y coordinate is taken from mountaintable and go to ydraw (word)
|
||||||
|
; shoot direction is taken from VX+3
|
||||||
|
; result:
|
||||||
|
; HowMuchToFall - direction
|
||||||
|
; $FF - we are in a hole (flying in missile direction)
|
||||||
|
; 1 - right, 2 - left
|
||||||
|
; --------------------------------------------------
|
||||||
ldy #0
|
ldy #0
|
||||||
adw xdraw #mountaintable tempXROLLER
|
adw xdraw #mountaintable tempXROLLER
|
||||||
lda (tempXROLLER),y
|
lda (tempXROLLER),y
|
||||||
@@ -951,15 +967,12 @@ PositiveVelocity
|
|||||||
; 1 - right, 2 - left
|
; 1 - right, 2 - left
|
||||||
mva #$ff HowMuchToFall
|
mva #$ff HowMuchToFall
|
||||||
mva ydraw HeightRol
|
mva ydraw HeightRol
|
||||||
;mwa #mountaintable tempXROLLER - It's already done !!!
|
|
||||||
;adw tempXROLLER xdraw
|
|
||||||
SeekLeft
|
SeekLeft
|
||||||
cpw tempXROLLER #mountaintable
|
cpw tempXROLLER #mountaintable
|
||||||
beq GoRightNow ; "bounce" if we have on left end
|
beq GoRightNow ; "bounce" if we have on left end
|
||||||
.nowarn dew tempXROLLER
|
.nowarn dew tempXROLLER
|
||||||
lda (tempXROLLER),y ;fukk! beware of Y value
|
lda (tempXROLLER),y ;fukk! beware of Y value
|
||||||
cmp HeightRol
|
cmp HeightRol
|
||||||
;bne HowMuchToFallLeft
|
|
||||||
HowMuchToFallLeft
|
HowMuchToFallLeft
|
||||||
bcs GoRightNow
|
bcs GoRightNow
|
||||||
mva #1 HowMuchToFall
|
mva #1 HowMuchToFall
|
||||||
@@ -971,9 +984,7 @@ SeekRight
|
|||||||
inw tempXROLLER
|
inw tempXROLLER
|
||||||
lda (tempXROLLER),y
|
lda (tempXROLLER),y
|
||||||
cmp HeightRol
|
cmp HeightRol
|
||||||
;bne HowMuchToFallRight
|
|
||||||
HowMuchToFallRight
|
HowMuchToFallRight
|
||||||
; check if up or down
|
|
||||||
bcs HowMuchToFallKnown
|
bcs HowMuchToFallKnown
|
||||||
lda HowMuchToFall
|
lda HowMuchToFall
|
||||||
bpl ItIsLeftAlready
|
bpl ItIsLeftAlready
|
||||||
@@ -2393,6 +2404,7 @@ NoWall
|
|||||||
; X and TankNr - index of shooting tank
|
; X and TankNr - index of shooting tank
|
||||||
; -------------------------------------------------
|
; -------------------------------------------------
|
||||||
mva #sfx_sandhog sfx_effect
|
mva #sfx_sandhog sfx_effect
|
||||||
|
.IF FASTER_GRAF_PROCS = 1
|
||||||
ldy #0 ; byte counter (from 0 to 39)
|
ldy #0 ; byte counter (from 0 to 39)
|
||||||
NextColumn
|
NextColumn
|
||||||
; big loop - we repat internal loops for each column of bytes
|
; big loop - we repat internal loops for each column of bytes
|
||||||
@@ -2427,6 +2439,26 @@ NextLine2
|
|||||||
iny
|
iny
|
||||||
cpy #40
|
cpy #40
|
||||||
bne NextColumn
|
bne NextColumn
|
||||||
|
.ELSE
|
||||||
|
mva #1 color
|
||||||
|
mwa #120 ydraw
|
||||||
|
NextLineSlow
|
||||||
|
lda #0
|
||||||
|
sta xdraw
|
||||||
|
sta xdraw+1
|
||||||
|
NextPixelSlow
|
||||||
|
bit random
|
||||||
|
bpl NoPlot
|
||||||
|
bvc NoPlot
|
||||||
|
jsr plot.MakePlot
|
||||||
|
NoPlot
|
||||||
|
inw xdraw
|
||||||
|
cpw xdraw #screenwidth
|
||||||
|
bne NextPixelSlow
|
||||||
|
dec ydraw
|
||||||
|
dec ydraw
|
||||||
|
bpl NextLineSlow
|
||||||
|
.ENDIF
|
||||||
; and we have "snow" :)
|
; and we have "snow" :)
|
||||||
lda #0
|
lda #0
|
||||||
ldx TankNr
|
ldx TankNr
|
||||||
|
|||||||
Reference in New Issue
Block a user