mirror of
https://github.com/pkali/scorch_src.git
synced 2026-05-20 22:34:21 +02:00
Code cleanup.
This commit is contained in:
+305
@@ -2032,6 +2032,311 @@ EndPut4x4
|
|||||||
rts
|
rts
|
||||||
.endp
|
.endp
|
||||||
|
|
||||||
|
;--------------------------------------------------------
|
||||||
|
.proc DisplayOffensiveTextNr ;
|
||||||
|
ldx TextNumberOff
|
||||||
|
lda talk.OffensiveTextTableL,x
|
||||||
|
sta LineAddress4x4
|
||||||
|
lda talk.OffensiveTextTableH,x
|
||||||
|
sta LineAddress4x4+1
|
||||||
|
inx ; the next text
|
||||||
|
lda talk.OffensiveTextTableH,x
|
||||||
|
sta temp+1
|
||||||
|
lda talk.OffensiveTextTableL,x
|
||||||
|
sta temp ; opty possible
|
||||||
|
; substract address of the next text from previous to get text length
|
||||||
|
sbw temp LineAddress4x4 temp2
|
||||||
|
mva temp2 fx
|
||||||
|
|
||||||
|
;jsr Display4x4AboveTank
|
||||||
|
;rts
|
||||||
|
; POZOR !!!
|
||||||
|
.endp
|
||||||
|
|
||||||
|
;--------------------------------------------------------
|
||||||
|
.proc Display4x4AboveTank ;
|
||||||
|
; Displays texts using PutChar4x4 above tank and mountains.
|
||||||
|
; Pretty cool, eh!
|
||||||
|
;parameters are:
|
||||||
|
;Y - number of tank above which text is displayed
|
||||||
|
;fx - length of text
|
||||||
|
;LineAddress4x4 - address of the text
|
||||||
|
|
||||||
|
;lets calculate position of the text first!
|
||||||
|
;that's easy because we have number of tank
|
||||||
|
;and xtankstableL and H keep X position of a given tank
|
||||||
|
|
||||||
|
lda xtankstableL,y
|
||||||
|
sta temp
|
||||||
|
lda xtankstableH,y
|
||||||
|
sta temp+1
|
||||||
|
;now we should substract length of the text-1
|
||||||
|
;temp2 = (fx-1)*2
|
||||||
|
ldy fx
|
||||||
|
dey
|
||||||
|
tya
|
||||||
|
asl
|
||||||
|
sta temp2
|
||||||
|
mva #0 temp2+1
|
||||||
|
;now we have HALF length in pixels
|
||||||
|
;stored in temp2
|
||||||
|
|
||||||
|
;here we assume max length of text
|
||||||
|
;to display is 127 chars, but later it turns out it must be max 63!
|
||||||
|
|
||||||
|
sbw temp temp2 ; here begin of the text is in TEMP !!!!
|
||||||
|
;now we should check overflows
|
||||||
|
;lda temp+1 ; opty
|
||||||
|
bpl DOTNnotLessThanZero
|
||||||
|
;less than zero, so should be zero
|
||||||
|
mwa #0 temp
|
||||||
|
beq DOTNnoOverflow
|
||||||
|
|
||||||
|
DOTNnotLessThanZero
|
||||||
|
;so check if end larger than screenwidth
|
||||||
|
|
||||||
|
|
||||||
|
lda fx
|
||||||
|
asl
|
||||||
|
asl
|
||||||
|
;length in pixels -
|
||||||
|
;text length max 63 chars !!!!!!!!
|
||||||
|
|
||||||
|
|
||||||
|
clc
|
||||||
|
adc temp
|
||||||
|
sta temp2
|
||||||
|
lda #0
|
||||||
|
adc temp+1
|
||||||
|
sta temp2+1
|
||||||
|
;now in temp2 is end of the text in pixels
|
||||||
|
;so check if not greater than screenwitdth
|
||||||
|
cpw temp2 #screenwidth
|
||||||
|
bcc DOTNnoOverflow
|
||||||
|
|
||||||
|
;if end is greater than screenwidth
|
||||||
|
;then screenwidth - length is fine
|
||||||
|
lda fx
|
||||||
|
asl
|
||||||
|
asl
|
||||||
|
sta temp
|
||||||
|
mva #0 temp+1
|
||||||
|
|
||||||
|
sec
|
||||||
|
lda #<(screenwidth-1)
|
||||||
|
sbc temp
|
||||||
|
sta temp
|
||||||
|
lda #>(screenwidth-1)
|
||||||
|
sbc temp+1
|
||||||
|
sta temp+1
|
||||||
|
DOTNnoOverflow
|
||||||
|
;here in temp we have really good x position of text
|
||||||
|
|
||||||
|
mwa temp LineXdraw
|
||||||
|
|
||||||
|
;now let's get y position
|
||||||
|
;we will try to put text as low as possible
|
||||||
|
;just above mountains (so mountaintable will be checked)
|
||||||
|
lda fx
|
||||||
|
asl
|
||||||
|
asl
|
||||||
|
tay
|
||||||
|
;in temp there still is X position of text
|
||||||
|
;if we add temp and Y we will get end of the text
|
||||||
|
;so, lets go through mountaintable and look for
|
||||||
|
;the lowest value within
|
||||||
|
;Mountaitable+temp and Mountaitable+temp+Y
|
||||||
|
|
||||||
|
adw temp #MountainTable
|
||||||
|
|
||||||
|
mva #screenheight temp2 ;initialisation of the lowest value
|
||||||
|
|
||||||
|
DOTLowestMountainValueLoop
|
||||||
|
lda (temp),y
|
||||||
|
cmp temp2
|
||||||
|
bcs DOTOldLowestValue ;old lowest value
|
||||||
|
;new lowest value
|
||||||
|
sta temp2
|
||||||
|
DOTOldLowestValue
|
||||||
|
dey
|
||||||
|
cpy #$ff
|
||||||
|
bne DOTLowestMountainValueLoop
|
||||||
|
|
||||||
|
sec
|
||||||
|
lda temp2
|
||||||
|
sbc #(4+9) ;9 pixels above ground (and tanks...)
|
||||||
|
sta LineYdraw
|
||||||
|
|
||||||
|
jmp TypeLine4x4.noLengthNoColor ; rts
|
||||||
|
|
||||||
|
.endp
|
||||||
|
|
||||||
|
;--------------------------------------------------------
|
||||||
|
.proc DisplayTankNameAbove ;
|
||||||
|
lda tankNr
|
||||||
|
:3 asl ; *8
|
||||||
|
clc
|
||||||
|
adc #<TanksNames
|
||||||
|
sta temp ; TextAddress
|
||||||
|
lda #0
|
||||||
|
adc #>Tanksnames
|
||||||
|
sta temp+1 ; TextAddress+1
|
||||||
|
mwa temp LineAddress4x4
|
||||||
|
|
||||||
|
;find length of the tank's name
|
||||||
|
ldy #7
|
||||||
|
@
|
||||||
|
lda (temp),y
|
||||||
|
bne end_found
|
||||||
|
dey
|
||||||
|
bne @-
|
||||||
|
|
||||||
|
end_found
|
||||||
|
iny
|
||||||
|
sty fx
|
||||||
|
ldy tankNr
|
||||||
|
jsr Display4x4AboveTank
|
||||||
|
rts
|
||||||
|
.endp
|
||||||
|
|
||||||
|
;-------------------------------
|
||||||
|
.proc TypeLine4x4 ;
|
||||||
|
;-------------------------------
|
||||||
|
;this routine prints line of length `fx`
|
||||||
|
;address in LineAddress4x4
|
||||||
|
;starting from LineXdraw, LineYdraw
|
||||||
|
|
||||||
|
lda #14 ; default length of 4x4 texts
|
||||||
|
sta fx
|
||||||
|
|
||||||
|
variableLength
|
||||||
|
lda #$ff ; $ff - visible characters, $00 - clearing
|
||||||
|
|
||||||
|
staplot4x4color
|
||||||
|
sta plot4x4color
|
||||||
|
noLengthNoColor
|
||||||
|
|
||||||
|
ldy #0
|
||||||
|
sty LineCharNr
|
||||||
|
|
||||||
|
TypeLine4x4Loop
|
||||||
|
ldy LineCharNr
|
||||||
|
|
||||||
|
lda (LineAddress4x4),y
|
||||||
|
and #$3f ;always CAPITAL letters
|
||||||
|
sta CharCode4x4
|
||||||
|
mwa LineXdraw dx
|
||||||
|
mva LineYdraw dy
|
||||||
|
mva #0 dy+1 ; dy is 2 bytes value
|
||||||
|
jsr PutChar4x4 ;type empty pixels as well!
|
||||||
|
adw LineXdraw #4
|
||||||
|
inc:lda LineCharNr
|
||||||
|
cmp fx
|
||||||
|
bne TypeLine4x4Loop
|
||||||
|
|
||||||
|
EndOfTypeLine4x4
|
||||||
|
rts
|
||||||
|
.endp
|
||||||
|
|
||||||
|
|
||||||
|
;--------------------------------
|
||||||
|
.proc AreYouSure
|
||||||
|
;using 4x4 font
|
||||||
|
|
||||||
|
mva #4 ResultY ; where seppuku text starts Y-wise on the screen
|
||||||
|
|
||||||
|
;top frame
|
||||||
|
mva ResultY LineYdraw
|
||||||
|
jsr TL4x4_top
|
||||||
|
adb ResultY #4 ;next line
|
||||||
|
|
||||||
|
;sure?
|
||||||
|
mwa #areYouSureText LineAddress4x4
|
||||||
|
jsr _sep_opty
|
||||||
|
;bottom frame
|
||||||
|
mva ResultY LineYdraw
|
||||||
|
jsr TL4x4_bottom
|
||||||
|
|
||||||
|
|
||||||
|
jsr GetKey
|
||||||
|
cmp #@kbcode._Y ; $2b ; "Y"
|
||||||
|
bne @+
|
||||||
|
mva #$80 escFlag
|
||||||
|
bne skip01
|
||||||
|
@ mva #0 escFlag
|
||||||
|
skip01
|
||||||
|
jsr WaitForKeyRelease
|
||||||
|
|
||||||
|
;clean
|
||||||
|
mva #3 di
|
||||||
|
mva #4 ResultY
|
||||||
|
@
|
||||||
|
mva #$ff plot4x4color
|
||||||
|
mwa #lineClear LineAddress4x4
|
||||||
|
jsr _sep_opty
|
||||||
|
dec di
|
||||||
|
bne @-
|
||||||
|
|
||||||
|
quit_areyousure
|
||||||
|
rts
|
||||||
|
.endp
|
||||||
|
|
||||||
|
.proc _sep_opty
|
||||||
|
mwa #((ScreenWidth/2)-(8*4)) LineXdraw ; centering
|
||||||
|
mva ResultY LineYdraw
|
||||||
|
jsr TypeLine4x4
|
||||||
|
adb ResultY #4 ;next line
|
||||||
|
rts
|
||||||
|
.endp
|
||||||
|
|
||||||
|
;--------------------------------
|
||||||
|
.proc DisplaySeppuku
|
||||||
|
;using 4x4 font
|
||||||
|
|
||||||
|
|
||||||
|
mva #20 fs ; temp, how many times blink the billboard
|
||||||
|
seppuku_loop
|
||||||
|
lda CONSOL ; turbo mode
|
||||||
|
and #%00000001 ; START KEY
|
||||||
|
sne:mva #1 fs ; finish it
|
||||||
|
|
||||||
|
mva #4 ResultY ; where seppuku text starts Y-wise on the screen
|
||||||
|
|
||||||
|
;top frame
|
||||||
|
mva ResultY LineYdraw
|
||||||
|
jsr TL4x4_top
|
||||||
|
adb ResultY #4 ;next line
|
||||||
|
|
||||||
|
;seppuku
|
||||||
|
mwa #seppukuText LineAddress4x4
|
||||||
|
jsr _sep_opty
|
||||||
|
|
||||||
|
;bottom frame
|
||||||
|
mva ResultY LineYdraw
|
||||||
|
jsr TL4x4_bottom ; just go
|
||||||
|
|
||||||
|
;clean seppuku
|
||||||
|
|
||||||
|
mva #3 di
|
||||||
|
;mva #4 ResultY
|
||||||
|
lda #4
|
||||||
|
sta ResultY
|
||||||
|
loplop ;@
|
||||||
|
mwa #lineClear LineAddress4x4
|
||||||
|
jsr _sep_opty
|
||||||
|
|
||||||
|
dec di
|
||||||
|
bne loplop ;@-
|
||||||
|
|
||||||
|
dec fs
|
||||||
|
jne seppuku_loop
|
||||||
|
|
||||||
|
quit_seppuku
|
||||||
|
rts
|
||||||
|
|
||||||
|
.endp
|
||||||
|
|
||||||
|
;--------------------------------------------------
|
||||||
.proc SetMainScreen
|
.proc SetMainScreen
|
||||||
; mva #0 dmactls
|
; mva #0 dmactls
|
||||||
SetDLI DLIinterruptGraph ; jsr SetDLI for graphics (game) screen
|
SetDLI DLIinterruptGraph ; jsr SetDLI for graphics (game) screen
|
||||||
|
|||||||
+267
@@ -0,0 +1,267 @@
|
|||||||
|
; @com.wudsn.ide.asm.mainsourcefile=scorch.asm
|
||||||
|
|
||||||
|
.IF *>0 ;this is a trick that prevents compiling this file alone
|
||||||
|
|
||||||
|
;--------------------------------------------------
|
||||||
|
.proc DLIinterruptGraph
|
||||||
|
pha
|
||||||
|
phy
|
||||||
|
ldy dliCounter
|
||||||
|
lda dliColorsBack,y
|
||||||
|
.IF TARGET = 800
|
||||||
|
nop ; necessary on 800 because DLIs take less time, jitter visible without it
|
||||||
|
nop
|
||||||
|
nop
|
||||||
|
.ENDIF
|
||||||
|
nop
|
||||||
|
nop
|
||||||
|
sta COLPF1
|
||||||
|
lda GradientNr
|
||||||
|
bne GoGradient
|
||||||
|
ldy #$ff ; one mauntain color
|
||||||
|
GoGradient
|
||||||
|
iny
|
||||||
|
lda (GradientColors),y ; mountains colors array
|
||||||
|
sta COLPF2
|
||||||
|
inc dliCounter
|
||||||
|
ply
|
||||||
|
pla
|
||||||
|
rti
|
||||||
|
.endp
|
||||||
|
;--------------------------------------------------
|
||||||
|
.proc DLIinterruptOptions
|
||||||
|
pha
|
||||||
|
phy
|
||||||
|
lda #0 ; background color
|
||||||
|
sta COLPF1
|
||||||
|
ldy GradientNr
|
||||||
|
beq @+
|
||||||
|
ldy #1
|
||||||
|
@ lda (GradientColors),y ; mountains colors array
|
||||||
|
sta COLPF2
|
||||||
|
ply
|
||||||
|
pla
|
||||||
|
rti
|
||||||
|
.endp
|
||||||
|
;--------------------------------------------------
|
||||||
|
.proc DLIinterruptGameOver
|
||||||
|
pha
|
||||||
|
phy
|
||||||
|
lda dliCounter
|
||||||
|
bne EndofPMG
|
||||||
|
lda #%00100001 ; playfield after P/M - prior=1
|
||||||
|
;STA WSYNC
|
||||||
|
sta PRIOR
|
||||||
|
bne EndOfDLI_GO
|
||||||
|
EndofPMG
|
||||||
|
cmp #1
|
||||||
|
bne ColoredLines
|
||||||
|
lda #%00100100 ; playfield before P/M
|
||||||
|
;STA WSYNC
|
||||||
|
sta PRIOR
|
||||||
|
bne EndOfDLI_GO
|
||||||
|
ColoredLines
|
||||||
|
cmp #9
|
||||||
|
beq CreditsScroll
|
||||||
|
tay
|
||||||
|
lda GameOverColoursTable-3,y ; -2 because this is DLI nr 2 and -1 (labels line)
|
||||||
|
ldy #$0a ; text colour (brightnes)
|
||||||
|
;STA WSYNC
|
||||||
|
sta COLPF2
|
||||||
|
sty COLPF1
|
||||||
|
bne EndOfDLI_GO
|
||||||
|
CreditsScroll
|
||||||
|
lda #$00
|
||||||
|
sta COLPF2
|
||||||
|
EndOfDLI_GO
|
||||||
|
inc dliCounter
|
||||||
|
ply
|
||||||
|
pla
|
||||||
|
rti
|
||||||
|
.endp
|
||||||
|
;--------------------------------------------------
|
||||||
|
.proc DLIinterruptText
|
||||||
|
pha
|
||||||
|
lda dliCounter
|
||||||
|
bne MoreBarsColorChange
|
||||||
|
lda #TextBackgroundColor
|
||||||
|
;sta WSYNC
|
||||||
|
sta COLPF2
|
||||||
|
mva #TextForegroundColor COLPF3
|
||||||
|
bne EndOfDLI_Text
|
||||||
|
MoreBarsColorChange
|
||||||
|
and #%00000001
|
||||||
|
rol
|
||||||
|
sta COLPF2
|
||||||
|
EndOfDLI_Text
|
||||||
|
inc dliCounter
|
||||||
|
pla
|
||||||
|
DLIinterruptNone
|
||||||
|
rti
|
||||||
|
|
||||||
|
.endp
|
||||||
|
;--------------------------------------------------
|
||||||
|
.proc VBLinterrupt
|
||||||
|
mva #0 dliCounter
|
||||||
|
mva #$02 DliColorBack
|
||||||
|
|
||||||
|
lda PAL
|
||||||
|
and #%00001110
|
||||||
|
beq itsPAL
|
||||||
|
;it is NTSC here
|
||||||
|
dec NTSCcounter
|
||||||
|
bne itsPAL
|
||||||
|
mva #6 NTSCcounter
|
||||||
|
bne SkippedIfNTSC ; skip doing VBL things each 6 frames in Amerika, Amerika
|
||||||
|
; We're all living in Amerika, Coca Cola, Wonderbra
|
||||||
|
|
||||||
|
itsPAL
|
||||||
|
; pressTimer is trigger tick counter. always 50 ticks / s
|
||||||
|
bit:smi:inc pressTimer ; timer halted if >127. max time measured 2.5 s
|
||||||
|
|
||||||
|
SkippedIfNTSC
|
||||||
|
|
||||||
|
bit RMT_blocked
|
||||||
|
bmi SkipRMTVBL
|
||||||
|
; ------- RMT -------
|
||||||
|
lda sfx_effect
|
||||||
|
bmi lab2
|
||||||
|
asl @ ; * 2
|
||||||
|
tay ;Y = 2,4,..,16 instrument number * 2 (0,2,4,..,126)
|
||||||
|
ldx #0 ;X = 0 channel (0..3 or 0..7 for stereo module)
|
||||||
|
lda #0 ;A = 0 note (0..60)
|
||||||
|
bit noSfx
|
||||||
|
smi:jsr RASTERMUSICTRACKER+15 ;RMT_SFX start tone (It works only if FEAT_SFX is enabled !!!)
|
||||||
|
|
||||||
|
lda #$ff
|
||||||
|
sta sfx_effect ;reinit value
|
||||||
|
lab2
|
||||||
|
jsr RASTERMUSICTRACKER+3 ;1 play
|
||||||
|
; ------- RMT -------
|
||||||
|
SkipRMTVBL
|
||||||
|
bit ScrollFlag
|
||||||
|
bpl EndOfCreditsVBI
|
||||||
|
CreditsVBI
|
||||||
|
inc CreditsVScrol
|
||||||
|
lda CreditsVScrol
|
||||||
|
cmp #32 ;not too fast
|
||||||
|
beq nextlinedisplay
|
||||||
|
:2 lsr ;not too fast
|
||||||
|
sta VSCROL
|
||||||
|
jmp EndOfCreditsVBI
|
||||||
|
nextlinedisplay
|
||||||
|
lda #0
|
||||||
|
sta CreditsVScrol
|
||||||
|
sta VSCROL
|
||||||
|
clc
|
||||||
|
lda DLCreditsAddr
|
||||||
|
adc #40
|
||||||
|
sta DLCreditsAddr
|
||||||
|
bcc @+
|
||||||
|
inc DLCreditsAddr+1
|
||||||
|
@
|
||||||
|
cmp #<CreditsLastLine
|
||||||
|
bne EndOfCreditsVBI
|
||||||
|
lda DLCreditsAddr+1
|
||||||
|
cmp #>CreditsLastLine
|
||||||
|
bne EndOfCreditsVBI
|
||||||
|
; adw DLCreditsAddr #40
|
||||||
|
; cpw DLCreditsAddr #CreditsLastLine
|
||||||
|
; bne EndOfCreditsVBI
|
||||||
|
mwa #Credits DLCreditsAddr
|
||||||
|
EndOfCreditsVBI
|
||||||
|
.IF TARGET = 5200
|
||||||
|
lda SkStatSimulator
|
||||||
|
bmi @+
|
||||||
|
inc SkStatSimulator
|
||||||
|
@
|
||||||
|
lda JoystickNumber ; select port
|
||||||
|
ora #%00000100 ; Speaker off, Pots enabled
|
||||||
|
sta CONSOL5200
|
||||||
|
|
||||||
|
center = 114 ;Read analog stick and make it look like a digital stick
|
||||||
|
threshold = 60
|
||||||
|
|
||||||
|
lda JoystickNumber
|
||||||
|
asl
|
||||||
|
tax
|
||||||
|
lda paddl0,x ;Read POT0 value (horizontal position)
|
||||||
|
cmp #center+threshold ;Compare with right threshold
|
||||||
|
rol stick0 ;Feed carry into digital stick value
|
||||||
|
cmp #center-threshold ;Compare with left threshold
|
||||||
|
rol stick0 ;Feed carry into digital stick value
|
||||||
|
|
||||||
|
lda paddl1,x ;Read POT1 value (vertical position)
|
||||||
|
cmp #center+threshold ;Compare with down threshold
|
||||||
|
rol stick0 ;Feed carry into digital stick value
|
||||||
|
cmp #center-threshold ;Compare with down threshold
|
||||||
|
rol stick0 ;Feed carry into digital stick value
|
||||||
|
|
||||||
|
lda stick0 ;0 indicates a press so the right/down values need to be inverted
|
||||||
|
eor #2+8
|
||||||
|
and #$0f
|
||||||
|
sta stick0
|
||||||
|
|
||||||
|
ldx JoystickNumber
|
||||||
|
; check shift key (5200 second fire button)
|
||||||
|
lda SKSTAT
|
||||||
|
:3 lsr ; third bit
|
||||||
|
and trig0,x ; and first button
|
||||||
|
;lda trig0,x
|
||||||
|
sta strig0 ;Move hardware to shadow
|
||||||
|
|
||||||
|
mva chbas chbase
|
||||||
|
|
||||||
|
lda skstat ;Reset consol key shadow is no key is pressed anymore
|
||||||
|
and #4
|
||||||
|
beq @+
|
||||||
|
mva #consol_reset consol
|
||||||
|
mva #@kbcode._none kbcode
|
||||||
|
@
|
||||||
|
|
||||||
|
pla
|
||||||
|
tay
|
||||||
|
pla
|
||||||
|
tax
|
||||||
|
pla
|
||||||
|
rti
|
||||||
|
.ELSE
|
||||||
|
; support for joysticks :)
|
||||||
|
ldx JoystickNumber
|
||||||
|
lda STICK0,x
|
||||||
|
sta STICK0
|
||||||
|
lda STRIG0,x
|
||||||
|
sta STRIG0
|
||||||
|
jmp XITVBV
|
||||||
|
.ENDIF
|
||||||
|
.endp
|
||||||
|
.IF TARGET = 5200
|
||||||
|
.proc kb_continue
|
||||||
|
sta kbcode ;Store key code in shadow.
|
||||||
|
mva #0 SkStatSimulator
|
||||||
|
exit pla
|
||||||
|
tay
|
||||||
|
pla
|
||||||
|
tax
|
||||||
|
pla
|
||||||
|
rti
|
||||||
|
.endp
|
||||||
|
.ENDIF
|
||||||
|
|
||||||
|
;--------------------------------------------------
|
||||||
|
.macro SetDLI
|
||||||
|
; SetDLI #WORD
|
||||||
|
; Initialises Display List Interrupts
|
||||||
|
LDY # <:1
|
||||||
|
LDX # >:1
|
||||||
|
jsr _SetDLIproc
|
||||||
|
.endm
|
||||||
|
.proc _SetDLIproc
|
||||||
|
LDA #$C0
|
||||||
|
STY VDSLST
|
||||||
|
STX VDSLST+1
|
||||||
|
STA NMIEN
|
||||||
|
rts
|
||||||
|
.endp
|
||||||
|
|
||||||
|
.ENDIF
|
||||||
+1
-305
@@ -1257,251 +1257,6 @@ MakeTanksVisible
|
|||||||
bpl @-
|
bpl @-
|
||||||
rts
|
rts
|
||||||
.endp
|
.endp
|
||||||
;--------------------------------------------------
|
|
||||||
.proc DLIinterruptGraph
|
|
||||||
pha
|
|
||||||
phy
|
|
||||||
ldy dliCounter
|
|
||||||
lda dliColorsBack,y
|
|
||||||
.IF TARGET = 800
|
|
||||||
nop ; necessary on 800 because DLIs take less time, jitter visible without it
|
|
||||||
nop
|
|
||||||
nop
|
|
||||||
.ENDIF
|
|
||||||
nop
|
|
||||||
nop
|
|
||||||
sta COLPF1
|
|
||||||
lda GradientNr
|
|
||||||
bne GoGradient
|
|
||||||
ldy #$ff ; one mauntain color
|
|
||||||
GoGradient
|
|
||||||
iny
|
|
||||||
lda (GradientColors),y ; mountains colors array
|
|
||||||
sta COLPF2
|
|
||||||
inc dliCounter
|
|
||||||
ply
|
|
||||||
pla
|
|
||||||
rti
|
|
||||||
.endp
|
|
||||||
;--------------------------------------------------
|
|
||||||
.proc DLIinterruptOptions
|
|
||||||
pha
|
|
||||||
phy
|
|
||||||
lda #0 ; background color
|
|
||||||
sta COLPF1
|
|
||||||
ldy GradientNr
|
|
||||||
beq @+
|
|
||||||
ldy #1
|
|
||||||
@ lda (GradientColors),y ; mountains colors array
|
|
||||||
sta COLPF2
|
|
||||||
ply
|
|
||||||
pla
|
|
||||||
rti
|
|
||||||
.endp
|
|
||||||
;--------------------------------------------------
|
|
||||||
.proc DLIinterruptGameOver
|
|
||||||
pha
|
|
||||||
phy
|
|
||||||
lda dliCounter
|
|
||||||
bne EndofPMG
|
|
||||||
lda #%00100001 ; playfield after P/M - prior=1
|
|
||||||
;STA WSYNC
|
|
||||||
sta PRIOR
|
|
||||||
bne EndOfDLI_GO
|
|
||||||
EndofPMG
|
|
||||||
cmp #1
|
|
||||||
bne ColoredLines
|
|
||||||
lda #%00100100 ; playfield before P/M
|
|
||||||
;STA WSYNC
|
|
||||||
sta PRIOR
|
|
||||||
bne EndOfDLI_GO
|
|
||||||
ColoredLines
|
|
||||||
cmp #9
|
|
||||||
beq CreditsScroll
|
|
||||||
tay
|
|
||||||
lda GameOverColoursTable-3,y ; -2 because this is DLI nr 2 and -1 (labels line)
|
|
||||||
ldy #$0a ; text colour (brightnes)
|
|
||||||
;STA WSYNC
|
|
||||||
sta COLPF2
|
|
||||||
sty COLPF1
|
|
||||||
bne EndOfDLI_GO
|
|
||||||
CreditsScroll
|
|
||||||
lda #$00
|
|
||||||
sta COLPF2
|
|
||||||
EndOfDLI_GO
|
|
||||||
inc dliCounter
|
|
||||||
ply
|
|
||||||
pla
|
|
||||||
rti
|
|
||||||
.endp
|
|
||||||
;--------------------------------------------------
|
|
||||||
.proc DLIinterruptText
|
|
||||||
pha
|
|
||||||
lda dliCounter
|
|
||||||
bne MoreBarsColorChange
|
|
||||||
lda #TextBackgroundColor
|
|
||||||
;sta WSYNC
|
|
||||||
sta COLPF2
|
|
||||||
mva #TextForegroundColor COLPF3
|
|
||||||
bne EndOfDLI_Text
|
|
||||||
MoreBarsColorChange
|
|
||||||
and #%00000001
|
|
||||||
rol
|
|
||||||
sta COLPF2
|
|
||||||
EndOfDLI_Text
|
|
||||||
inc dliCounter
|
|
||||||
pla
|
|
||||||
DLIinterruptNone
|
|
||||||
rti
|
|
||||||
|
|
||||||
.endp
|
|
||||||
;--------------------------------------------------
|
|
||||||
.proc VBLinterrupt
|
|
||||||
mva #0 dliCounter
|
|
||||||
mva #$02 DliColorBack
|
|
||||||
|
|
||||||
lda PAL
|
|
||||||
and #%00001110
|
|
||||||
beq itsPAL
|
|
||||||
;it is NTSC here
|
|
||||||
dec NTSCcounter
|
|
||||||
bne itsPAL
|
|
||||||
mva #6 NTSCcounter
|
|
||||||
bne SkippedIfNTSC ; skip doing VBL things each 6 frames in Amerika, Amerika
|
|
||||||
; We're all living in Amerika, Coca Cola, Wonderbra
|
|
||||||
|
|
||||||
itsPAL
|
|
||||||
; pressTimer is trigger tick counter. always 50 ticks / s
|
|
||||||
bit:smi:inc pressTimer ; timer halted if >127. max time measured 2.5 s
|
|
||||||
|
|
||||||
SkippedIfNTSC
|
|
||||||
|
|
||||||
bit RMT_blocked
|
|
||||||
bmi SkipRMTVBL
|
|
||||||
; ------- RMT -------
|
|
||||||
lda sfx_effect
|
|
||||||
bmi lab2
|
|
||||||
asl @ ; * 2
|
|
||||||
tay ;Y = 2,4,..,16 instrument number * 2 (0,2,4,..,126)
|
|
||||||
ldx #0 ;X = 0 channel (0..3 or 0..7 for stereo module)
|
|
||||||
lda #0 ;A = 0 note (0..60)
|
|
||||||
bit noSfx
|
|
||||||
smi:jsr RASTERMUSICTRACKER+15 ;RMT_SFX start tone (It works only if FEAT_SFX is enabled !!!)
|
|
||||||
|
|
||||||
lda #$ff
|
|
||||||
sta sfx_effect ;reinit value
|
|
||||||
lab2
|
|
||||||
jsr RASTERMUSICTRACKER+3 ;1 play
|
|
||||||
; ------- RMT -------
|
|
||||||
SkipRMTVBL
|
|
||||||
bit ScrollFlag
|
|
||||||
bpl EndOfCreditsVBI
|
|
||||||
CreditsVBI
|
|
||||||
inc CreditsVScrol
|
|
||||||
lda CreditsVScrol
|
|
||||||
cmp #32 ;not too fast
|
|
||||||
beq nextlinedisplay
|
|
||||||
:2 lsr ;not too fast
|
|
||||||
sta VSCROL
|
|
||||||
jmp EndOfCreditsVBI
|
|
||||||
nextlinedisplay
|
|
||||||
lda #0
|
|
||||||
sta CreditsVScrol
|
|
||||||
sta VSCROL
|
|
||||||
clc
|
|
||||||
lda DLCreditsAddr
|
|
||||||
adc #40
|
|
||||||
sta DLCreditsAddr
|
|
||||||
bcc @+
|
|
||||||
inc DLCreditsAddr+1
|
|
||||||
@
|
|
||||||
cmp #<CreditsLastLine
|
|
||||||
bne EndOfCreditsVBI
|
|
||||||
lda DLCreditsAddr+1
|
|
||||||
cmp #>CreditsLastLine
|
|
||||||
bne EndOfCreditsVBI
|
|
||||||
; adw DLCreditsAddr #40
|
|
||||||
; cpw DLCreditsAddr #CreditsLastLine
|
|
||||||
; bne EndOfCreditsVBI
|
|
||||||
mwa #Credits DLCreditsAddr
|
|
||||||
EndOfCreditsVBI
|
|
||||||
.IF TARGET = 5200
|
|
||||||
lda SkStatSimulator
|
|
||||||
bmi @+
|
|
||||||
inc SkStatSimulator
|
|
||||||
@
|
|
||||||
lda JoystickNumber ; select port
|
|
||||||
ora #%00000100 ; Speaker off, Pots enabled
|
|
||||||
sta CONSOL5200
|
|
||||||
|
|
||||||
center = 114 ;Read analog stick and make it look like a digital stick
|
|
||||||
threshold = 60
|
|
||||||
|
|
||||||
lda JoystickNumber
|
|
||||||
asl
|
|
||||||
tax
|
|
||||||
lda paddl0,x ;Read POT0 value (horizontal position)
|
|
||||||
cmp #center+threshold ;Compare with right threshold
|
|
||||||
rol stick0 ;Feed carry into digital stick value
|
|
||||||
cmp #center-threshold ;Compare with left threshold
|
|
||||||
rol stick0 ;Feed carry into digital stick value
|
|
||||||
|
|
||||||
lda paddl1,x ;Read POT1 value (vertical position)
|
|
||||||
cmp #center+threshold ;Compare with down threshold
|
|
||||||
rol stick0 ;Feed carry into digital stick value
|
|
||||||
cmp #center-threshold ;Compare with down threshold
|
|
||||||
rol stick0 ;Feed carry into digital stick value
|
|
||||||
|
|
||||||
lda stick0 ;0 indicates a press so the right/down values need to be inverted
|
|
||||||
eor #2+8
|
|
||||||
and #$0f
|
|
||||||
sta stick0
|
|
||||||
|
|
||||||
ldx JoystickNumber
|
|
||||||
; check shift key (5200 second fire button)
|
|
||||||
lda SKSTAT
|
|
||||||
:3 lsr ; third bit
|
|
||||||
and trig0,x ; and first button
|
|
||||||
;lda trig0,x
|
|
||||||
sta strig0 ;Move hardware to shadow
|
|
||||||
|
|
||||||
mva chbas chbase
|
|
||||||
|
|
||||||
lda skstat ;Reset consol key shadow is no key is pressed anymore
|
|
||||||
and #4
|
|
||||||
beq @+
|
|
||||||
mva #consol_reset consol
|
|
||||||
mva #@kbcode._none kbcode
|
|
||||||
@
|
|
||||||
|
|
||||||
pla
|
|
||||||
tay
|
|
||||||
pla
|
|
||||||
tax
|
|
||||||
pla
|
|
||||||
rti
|
|
||||||
.ELSE
|
|
||||||
; support for joysticks :)
|
|
||||||
ldx JoystickNumber
|
|
||||||
lda STICK0,x
|
|
||||||
sta STICK0
|
|
||||||
lda STRIG0,x
|
|
||||||
sta STRIG0
|
|
||||||
jmp XITVBV
|
|
||||||
.ENDIF
|
|
||||||
.endp
|
|
||||||
.IF TARGET = 5200
|
|
||||||
.proc kb_continue
|
|
||||||
sta kbcode ;Store key code in shadow.
|
|
||||||
mva #0 SkStatSimulator
|
|
||||||
exit pla
|
|
||||||
tay
|
|
||||||
pla
|
|
||||||
tax
|
|
||||||
pla
|
|
||||||
rti
|
|
||||||
.endp
|
|
||||||
.ENDIF
|
|
||||||
;----------------------------------------------
|
;----------------------------------------------
|
||||||
.proc RandomizeSequence0
|
.proc RandomizeSequence0
|
||||||
ldx #0
|
ldx #0
|
||||||
@@ -1973,66 +1728,7 @@ noingame
|
|||||||
rts
|
rts
|
||||||
.endp
|
.endp
|
||||||
;--------------------------------------------------
|
;--------------------------------------------------
|
||||||
.macro SetDLI
|
icl 'interrupts.asm'
|
||||||
; SetDLI #WORD
|
|
||||||
; Initialises Display List Interrupts
|
|
||||||
LDY # <:1
|
|
||||||
LDX # >:1
|
|
||||||
jsr _SetDLIproc
|
|
||||||
.endm
|
|
||||||
.proc _SetDLIproc
|
|
||||||
LDA #$C0
|
|
||||||
STY VDSLST
|
|
||||||
STX VDSLST+1
|
|
||||||
STA NMIEN
|
|
||||||
rts
|
|
||||||
.endp
|
|
||||||
;--------------------------------------------------
|
|
||||||
/* ;--------------------------------------------------
|
|
||||||
.macro randomize floor ceiling
|
|
||||||
;--------------------------------------------------
|
|
||||||
;usage: randomize floor ceiling
|
|
||||||
;returns (in A) a random .byte between "floor" and "ceiling"
|
|
||||||
jsr _randomizator
|
|
||||||
.byte :floor
|
|
||||||
.byte :ceiling
|
|
||||||
.endm
|
|
||||||
|
|
||||||
.proc _randomizator
|
|
||||||
; private function that accompanies `randomize` macro
|
|
||||||
; trashes: magic, temp, Y
|
|
||||||
pla
|
|
||||||
sta magic
|
|
||||||
pla
|
|
||||||
sta magic+1
|
|
||||||
ldy #1 ; add 1 to the value got from the stack to point to the input parameters
|
|
||||||
lda (magic),y
|
|
||||||
sta temp
|
|
||||||
iny
|
|
||||||
lda (magic),y
|
|
||||||
sta temp+1
|
|
||||||
|
|
||||||
?rand
|
|
||||||
lda random
|
|
||||||
cmp temp ;floor
|
|
||||||
bcc ?rand
|
|
||||||
cmp temp+1 ;ceiling
|
|
||||||
bcs ?rand
|
|
||||||
tay ; save the result
|
|
||||||
|
|
||||||
; point the PC to a byte after the parameters
|
|
||||||
clc
|
|
||||||
lda magic
|
|
||||||
adc #2 ; length of the parameters in bytes
|
|
||||||
sta magic
|
|
||||||
lda magic+1
|
|
||||||
adc #0
|
|
||||||
pha
|
|
||||||
lda magic
|
|
||||||
pha
|
|
||||||
tya ; retrieve the result
|
|
||||||
rts
|
|
||||||
.endp */
|
|
||||||
;----------------------------------------------
|
;----------------------------------------------
|
||||||
icl 'constants.asm'
|
icl 'constants.asm'
|
||||||
;----------------------------------------------
|
;----------------------------------------------
|
||||||
|
|||||||
BIN
Binary file not shown.
BIN
Binary file not shown.
-303
@@ -1603,309 +1603,6 @@ displayloop1
|
|||||||
rts
|
rts
|
||||||
.endp
|
.endp
|
||||||
|
|
||||||
;--------------------------------------------------------
|
|
||||||
.proc DisplayOffensiveTextNr ;
|
|
||||||
ldx TextNumberOff
|
|
||||||
lda talk.OffensiveTextTableL,x
|
|
||||||
sta LineAddress4x4
|
|
||||||
lda talk.OffensiveTextTableH,x
|
|
||||||
sta LineAddress4x4+1
|
|
||||||
inx ; the next text
|
|
||||||
lda talk.OffensiveTextTableH,x
|
|
||||||
sta temp+1
|
|
||||||
lda talk.OffensiveTextTableL,x
|
|
||||||
sta temp ; opty possible
|
|
||||||
; substract address of the next text from previous to get text length
|
|
||||||
sbw temp LineAddress4x4 temp2
|
|
||||||
mva temp2 fx
|
|
||||||
|
|
||||||
;jsr Display4x4AboveTank
|
|
||||||
;rts
|
|
||||||
; POZOR !!!
|
|
||||||
.endp
|
|
||||||
|
|
||||||
;--------------------------------------------------------
|
|
||||||
.proc Display4x4AboveTank ;
|
|
||||||
; Displays texts using PutChar4x4 above tank and mountains.
|
|
||||||
; Pretty cool, eh!
|
|
||||||
;parameters are:
|
|
||||||
;Y - number of tank above which text is displayed
|
|
||||||
;fx - length of text
|
|
||||||
;LineAddress4x4 - address of the text
|
|
||||||
|
|
||||||
;lets calculate position of the text first!
|
|
||||||
;that's easy because we have number of tank
|
|
||||||
;and xtankstableL and H keep X position of a given tank
|
|
||||||
|
|
||||||
lda xtankstableL,y
|
|
||||||
sta temp
|
|
||||||
lda xtankstableH,y
|
|
||||||
sta temp+1
|
|
||||||
;now we should substract length of the text-1
|
|
||||||
;temp2 = (fx-1)*2
|
|
||||||
ldy fx
|
|
||||||
dey
|
|
||||||
tya
|
|
||||||
asl
|
|
||||||
sta temp2
|
|
||||||
mva #0 temp2+1
|
|
||||||
;now we have HALF length in pixels
|
|
||||||
;stored in temp2
|
|
||||||
|
|
||||||
;here we assume max length of text
|
|
||||||
;to display is 127 chars, but later it turns out it must be max 63!
|
|
||||||
|
|
||||||
sbw temp temp2 ; here begin of the text is in TEMP !!!!
|
|
||||||
;now we should check overflows
|
|
||||||
;lda temp+1 ; opty
|
|
||||||
bpl DOTNnotLessThanZero
|
|
||||||
;less than zero, so should be zero
|
|
||||||
mwa #0 temp
|
|
||||||
beq DOTNnoOverflow
|
|
||||||
|
|
||||||
DOTNnotLessThanZero
|
|
||||||
;so check if end larger than screenwidth
|
|
||||||
|
|
||||||
|
|
||||||
lda fx
|
|
||||||
asl
|
|
||||||
asl
|
|
||||||
;length in pixels -
|
|
||||||
;text length max 63 chars !!!!!!!!
|
|
||||||
|
|
||||||
|
|
||||||
clc
|
|
||||||
adc temp
|
|
||||||
sta temp2
|
|
||||||
lda #0
|
|
||||||
adc temp+1
|
|
||||||
sta temp2+1
|
|
||||||
;now in temp2 is end of the text in pixels
|
|
||||||
;so check if not greater than screenwitdth
|
|
||||||
cpw temp2 #screenwidth
|
|
||||||
bcc DOTNnoOverflow
|
|
||||||
|
|
||||||
;if end is greater than screenwidth
|
|
||||||
;then screenwidth - length is fine
|
|
||||||
lda fx
|
|
||||||
asl
|
|
||||||
asl
|
|
||||||
sta temp
|
|
||||||
mva #0 temp+1
|
|
||||||
|
|
||||||
sec
|
|
||||||
lda #<(screenwidth-1)
|
|
||||||
sbc temp
|
|
||||||
sta temp
|
|
||||||
lda #>(screenwidth-1)
|
|
||||||
sbc temp+1
|
|
||||||
sta temp+1
|
|
||||||
DOTNnoOverflow
|
|
||||||
;here in temp we have really good x position of text
|
|
||||||
|
|
||||||
mwa temp LineXdraw
|
|
||||||
|
|
||||||
;now let's get y position
|
|
||||||
;we will try to put text as low as possible
|
|
||||||
;just above mountains (so mountaintable will be checked)
|
|
||||||
lda fx
|
|
||||||
asl
|
|
||||||
asl
|
|
||||||
tay
|
|
||||||
;in temp there still is X position of text
|
|
||||||
;if we add temp and Y we will get end of the text
|
|
||||||
;so, lets go through mountaintable and look for
|
|
||||||
;the lowest value within
|
|
||||||
;Mountaitable+temp and Mountaitable+temp+Y
|
|
||||||
|
|
||||||
adw temp #MountainTable
|
|
||||||
|
|
||||||
mva #screenheight temp2 ;initialisation of the lowest value
|
|
||||||
|
|
||||||
DOTLowestMountainValueLoop
|
|
||||||
lda (temp),y
|
|
||||||
cmp temp2
|
|
||||||
bcs DOTOldLowestValue ;old lowest value
|
|
||||||
;new lowest value
|
|
||||||
sta temp2
|
|
||||||
DOTOldLowestValue
|
|
||||||
dey
|
|
||||||
cpy #$ff
|
|
||||||
bne DOTLowestMountainValueLoop
|
|
||||||
|
|
||||||
sec
|
|
||||||
lda temp2
|
|
||||||
sbc #(4+9) ;9 pixels above ground (and tanks...)
|
|
||||||
sta LineYdraw
|
|
||||||
|
|
||||||
jmp TypeLine4x4.noLengthNoColor ; rts
|
|
||||||
|
|
||||||
.endp
|
|
||||||
|
|
||||||
;--------------------------------------------------------
|
|
||||||
.proc DisplayTankNameAbove ;
|
|
||||||
lda tankNr
|
|
||||||
:3 asl ; *8
|
|
||||||
clc
|
|
||||||
adc #<TanksNames
|
|
||||||
sta temp ; TextAddress
|
|
||||||
lda #0
|
|
||||||
adc #>Tanksnames
|
|
||||||
sta temp+1 ; TextAddress+1
|
|
||||||
mwa temp LineAddress4x4
|
|
||||||
|
|
||||||
;find length of the tank's name
|
|
||||||
ldy #7
|
|
||||||
@
|
|
||||||
lda (temp),y
|
|
||||||
bne end_found
|
|
||||||
dey
|
|
||||||
bne @-
|
|
||||||
|
|
||||||
end_found
|
|
||||||
iny
|
|
||||||
sty fx
|
|
||||||
ldy tankNr
|
|
||||||
jsr Display4x4AboveTank
|
|
||||||
rts
|
|
||||||
.endp
|
|
||||||
|
|
||||||
;-------------------------------
|
|
||||||
.proc TypeLine4x4 ;
|
|
||||||
;-------------------------------
|
|
||||||
;this routine prints line of length `fx`
|
|
||||||
;address in LineAddress4x4
|
|
||||||
;starting from LineXdraw, LineYdraw
|
|
||||||
|
|
||||||
lda #14 ; default length of 4x4 texts
|
|
||||||
sta fx
|
|
||||||
|
|
||||||
variableLength
|
|
||||||
lda #$ff ; $ff - visible characters, $00 - clearing
|
|
||||||
|
|
||||||
staplot4x4color
|
|
||||||
sta plot4x4color
|
|
||||||
noLengthNoColor
|
|
||||||
|
|
||||||
ldy #0
|
|
||||||
sty LineCharNr
|
|
||||||
|
|
||||||
TypeLine4x4Loop
|
|
||||||
ldy LineCharNr
|
|
||||||
|
|
||||||
lda (LineAddress4x4),y
|
|
||||||
and #$3f ;always CAPITAL letters
|
|
||||||
sta CharCode4x4
|
|
||||||
mwa LineXdraw dx
|
|
||||||
mva LineYdraw dy
|
|
||||||
mva #0 dy+1 ; dy is 2 bytes value
|
|
||||||
jsr PutChar4x4 ;type empty pixels as well!
|
|
||||||
adw LineXdraw #4
|
|
||||||
inc:lda LineCharNr
|
|
||||||
cmp fx
|
|
||||||
bne TypeLine4x4Loop
|
|
||||||
|
|
||||||
EndOfTypeLine4x4
|
|
||||||
rts
|
|
||||||
.endp
|
|
||||||
|
|
||||||
|
|
||||||
;--------------------------------
|
|
||||||
.proc AreYouSure
|
|
||||||
;using 4x4 font
|
|
||||||
|
|
||||||
mva #4 ResultY ; where seppuku text starts Y-wise on the screen
|
|
||||||
|
|
||||||
;top frame
|
|
||||||
mva ResultY LineYdraw
|
|
||||||
jsr TL4x4_top
|
|
||||||
adb ResultY #4 ;next line
|
|
||||||
|
|
||||||
;sure?
|
|
||||||
mwa #areYouSureText LineAddress4x4
|
|
||||||
jsr _sep_opty
|
|
||||||
;bottom frame
|
|
||||||
mva ResultY LineYdraw
|
|
||||||
jsr TL4x4_bottom
|
|
||||||
|
|
||||||
|
|
||||||
jsr GetKey
|
|
||||||
cmp #@kbcode._Y ; $2b ; "Y"
|
|
||||||
bne @+
|
|
||||||
mva #$80 escFlag
|
|
||||||
bne skip01
|
|
||||||
@ mva #0 escFlag
|
|
||||||
skip01
|
|
||||||
jsr WaitForKeyRelease
|
|
||||||
|
|
||||||
;clean
|
|
||||||
mva #3 di
|
|
||||||
mva #4 ResultY
|
|
||||||
@
|
|
||||||
mva #$ff plot4x4color
|
|
||||||
mwa #lineClear LineAddress4x4
|
|
||||||
jsr _sep_opty
|
|
||||||
dec di
|
|
||||||
bne @-
|
|
||||||
|
|
||||||
quit_areyousure
|
|
||||||
rts
|
|
||||||
.endp
|
|
||||||
|
|
||||||
.proc _sep_opty
|
|
||||||
mwa #((ScreenWidth/2)-(8*4)) LineXdraw ; centering
|
|
||||||
mva ResultY LineYdraw
|
|
||||||
jsr TypeLine4x4
|
|
||||||
adb ResultY #4 ;next line
|
|
||||||
rts
|
|
||||||
.endp
|
|
||||||
|
|
||||||
;--------------------------------
|
|
||||||
.proc DisplaySeppuku
|
|
||||||
;using 4x4 font
|
|
||||||
|
|
||||||
|
|
||||||
mva #20 fs ; temp, how many times blink the billboard
|
|
||||||
seppuku_loop
|
|
||||||
lda CONSOL ; turbo mode
|
|
||||||
and #%00000001 ; START KEY
|
|
||||||
sne:mva #1 fs ; finish it
|
|
||||||
|
|
||||||
mva #4 ResultY ; where seppuku text starts Y-wise on the screen
|
|
||||||
|
|
||||||
;top frame
|
|
||||||
mva ResultY LineYdraw
|
|
||||||
jsr TL4x4_top
|
|
||||||
adb ResultY #4 ;next line
|
|
||||||
|
|
||||||
;seppuku
|
|
||||||
mwa #seppukuText LineAddress4x4
|
|
||||||
jsr _sep_opty
|
|
||||||
|
|
||||||
;bottom frame
|
|
||||||
mva ResultY LineYdraw
|
|
||||||
jsr TL4x4_bottom ; just go
|
|
||||||
|
|
||||||
;clean seppuku
|
|
||||||
|
|
||||||
mva #3 di
|
|
||||||
;mva #4 ResultY
|
|
||||||
lda #4
|
|
||||||
sta ResultY
|
|
||||||
loplop ;@
|
|
||||||
mwa #lineClear LineAddress4x4
|
|
||||||
jsr _sep_opty
|
|
||||||
|
|
||||||
dec di
|
|
||||||
bne loplop ;@-
|
|
||||||
|
|
||||||
dec fs
|
|
||||||
jne seppuku_loop
|
|
||||||
|
|
||||||
quit_seppuku
|
|
||||||
rts
|
|
||||||
|
|
||||||
.endp
|
|
||||||
;--------------------------------
|
;--------------------------------
|
||||||
.proc DisplayResults ;
|
.proc DisplayResults ;
|
||||||
;displays results of the round
|
;displays results of the round
|
||||||
|
|||||||
Reference in New Issue
Block a user