; TRC1A.ASM ; *** round control for one player *** EXCRND PROC JSR KILSND LDX $58 ;Beginning screen LDY $59 ; ram pointer STX $80 ;ZERO PAGE P-INDEX STY $81 LDX #00 JSR HORIZ JSR VERT JSR HORIZ ; clear player missle ram LDA #00 TAX :LOOP STA PBASE,X STA PBASE+$100,X STA PBASE+$200,X STA PBASE+$300,X INX BNE :LOOP ; place colors in OS shadows LDX #8 :LOOP2 LDA COLTBL,X STA PCOLR0,X DEX BPL :LOOP2 ; get random number between 0 & 7 LDA RANDOM AND #%00000111 STA RNDX ; place objects in ram vertically ; set direction index regs and stkcpl regs CLC ADC #88 TAX LDY #3 :LOOP3 LDA BASEP,X STA INDEX,Y TXA SEC SBC #8 TAX DEY BPL :LOOP3 LDY #3 :LOOP4 LDA BASEP,X STA PHPRG,Y TXA ! SEC SBC #8 TAX DEY BPL :LOOP4 LDY #3 :LOOP5 LDA BASEP,X STA PVPRG,Y TXA ! SEC SBC #8 TAX DEY BPL :LOOP5 JSR CRSET1 LDX RNDX LDA SSTK,X STA SSTICK LDA STKC,X STA STKCPL LDA #1 ;set audctl for STA AUDCTL ;ship appearance LDX #3 :NEXT TXA ! PHA JSR HVHSET ;X must be intact TXA ;ongosub to Pammy subs ASL A ! ASL A ! ASL A STA WORK LDA INDEX,X CLC ADC WORK TAY LDA PIVTBL,Y STA SUBVC5+1 LDA PIVTBL+1,Y STA SUBVC5+2 SUBVC5 JSR SUBVC5 PLA ! TAX JSR SHSSND ;ship set snd LDA #8 ;consol exit check STA CONSOL LDA CONSOL AND #1 BNE :OVER PLA ! PLA LDA #0 STA AUDCTL JMP REPEAT ;rerun :OVER LDA CONSOL AND #4 BNE :OVER2 ;uncond branch PLA ! PLA LDA #0 STA AUDCTL JMP RETTTL ;return to title :OVER2 DEX BPL :NEXT ; Reset attract mode to zero LDA #0 STA ATRACT ; clear min. move reg ; LDA #$FF ; STA MINMV2 ; clear any collisions LDY #20 ;wait for screen to print JSR PAUSE ;and then some STA HITCLR ; Set sounds for the race LDA #%01010000 STA AUDCTL LDA #255 STA AUDF3 STA AUDF4 ; clear p0flg sounds: hi and lo LDA #0 ; cycle thru both STA P0FLG ; possible cond's JSR TRIG LDA #1 STA P0FLG JSR TRIG ; Set colors for the race LDA #124 STA PCOLR0 STA PCOLR1 LDA #60 STA PCOLR2 STA PCOLR3 ; enable movement LDX #3 ;clear comp move STX ALTCMS ;cheap clear altcms NXCMV LDA #0 ;enable move and STA CMVEN,X ;collision reg's STA CLLEN,X STA CPPTVA,X STA CPPTVA+4,X LDA #$FF STA NWORK,X DEX BPL NXCMV LDY #LOW MVPLYI LDX #HIGH MVPLYI LDA #7 JSR SETVBV ; Main subroutine control MAINP1 = * JSR RANGER JSR SCANNR JSR PROCLL JSR MVCMP JSR ALLDRZ ; check for break key pause request JSR BPAUSE ; check for option or start key LDA #8 STA CONSOL LDA CONSOL AND #4 BNE CKMYBR PLA ;clear return to PLA ;plyone control LDA #0 ;return to title screen STA DMACTL STA SDMCTL STA COLOR2 STA COLPF2 LDA #LOW TTLDL STA SDLSTL LDA #HIGH TTLDL STA SDLSTH LDA #%00101010 STA SDMCTL JSR FSTXIT JSR ZHPOS ;move plyrs off JSR KILSND ;shut off all snd LDY #15 JSR PAUSE RTS CKMYBR LDA MYBRK ;exit rtn if brk BEQ XTMAIN ;key pressed LDA CONSOL AND #1 BNE MAINP1 PLA ! PLA ;clear return address LDY #LOW XITVBV LDX #HIGH XITVBV LDA #7 JSR SETVBV JMP XTP3 XTMAIN = * LDY #LOW VBSND LDX #HIGH VBSND LDA #7 JSR SETVBV JSR FINEXP LDY #50 JSR PAUSE FSTXIT LDY #LOW XITVBV LDX #HIGH XITVBV LDA #7 JSR SETVBV RTS ; are all cmptr plyrs move disabled ALLDRZ PROC LDX #3 :LOOP LDA CMVEN,X BEQ :EXIT DEX BNE :LOOP LDA #0 STA MYBRK STA AUDC2 :EXIT RTS ; finish explosions FINEXP PROC LDY #3 STY MYBRK :LOOP LDA NWORK,Y BMI :OVER STY ALTCMS JSR EXPLOS LDY RTCLOK+2 INY ! INY :WAIT CPY RTCLOK+2 ;slow down explosion BNE :WAIT ;processing LDA #0 STA MYBRK LDY ALTCMS :OVER DEY BPL :LOOP LDA MYBRK BEQ FINEXP ;a zero means still working RTS MYBRK DB 1 ; set column row soft registers ; x index picks starting point variation CRSET1 PROC LDA RNDX CLC ADC #56 TAX LDY #3 :LOOP LDA BASEG,X STA PLCOL,Y TXA ! SEC SBC #8 TAX DEY BPL :LOOP LDY #3 :LOOP2 LDA BASEG,X STA PLROW,Y TXA ! SEC SBC #8 TAX DEY BPL :LOOP2 RTS ; routine to create boundaries HORIZ PROC LDY #40 :LOOP LDA #$55 STA ($80,X) JSR INCADR DEY BNE :LOOP RTS VERT PROC LDY #89 :LOOP LDA #$40 STA ($80,X) JSR INCADR JSR INC38 LDA #01 STA ($80,X) JSR INCADR DEY BPL :LOOP RTS INC38 PROC TYA PHA LDY #37 LDA #00 :LOOP STA ($80,X) JSR INCADR DEY BPL :LOOP PLA TAY RTS INCADR PROC CLC LDA $80 ADC #01 STA $80 LDA #00 ADC $81 STA $81 LDA #00 RTS ; kill all sounds KILSND PROC LDY #7 LDA #0 :LOOP STA AUDC1,Y DEY BPL :LOOP RTS LINK D:TRC1B.ASM