processor 6502 seg.u stella ;LIST ON ;PW 80 ;PL 253 ;SYNTAX 6502 ;CODE ;RADIX 10 ;ABSOLUTE ; VERSION 19.4 DATE 22-FEB-86 ; ;TITLE UNIVERSE COPYRIGHT 1986, DOUGLAS NEUBAUER ; ; ; ******************************** ; COPYRIGHT (C) 1986, DOUGLAS NEUBAUER ; THIS SOURCE LISTING IS COPYRIGHTED. ; NO RIGHT TO REPRODUCE THIS LISTING ; IS GRANTED UNLESS BY WRITTEN AGREEMENT ; OR WRITTEN PERMISSION BY DOUGLAS NEUBAUER ; ******************************** ; ; FILE NAME UNIV.ASM,UNIV.OBJ ; ; BEGINS 07-JAN-83 ; SCREEN 11-MAR-83 ; ENDS ???????? ; ; ******************************** ; BURN = 1 THEN BURN PROMS, BURN = 0 THEN ASSEMBLE FOR DEVELOPMENT SYSTEM BURN EQU 1 ; ******************************** ; ; BANK2 BANK4 ; 0 FIGHTER PLN FIG ; 8 PIRATE PLN PIR ; 10 WARP GRA. MISC GRAPH ; 14 DARTER ---- ; 18 HYPERJUMPER MAN + KEY ; 20 P KILLER LANDING ZONE ; 28 BLOCKADER TRN TOWER ; 30 ENEMY PHOTON ENE PHOTON ; 38 EXPLOSIONS EXPLOS ; 40 SATURN RINGS CRATER ; 48-53 MOON1 ; 54-5F MOON2 ; E0 PBLK (60+80) ; ; ; *** ZERO PAGE RAM *** ; ; BEGIN DATA SECTION ;DATA ; ORG $80 MAZRAM DS 8 CURSOR DS 1 JMPCNT DS 1 MAZSTA DS 1 ;MUST BE RIGHT AFTER JMPCNT (FOR FINDV) RANDOM DS 2 PROGST DS 1 HCOLP1 DS 2 JMPTIM DS 1 NOCLER ; DONT CLEAR PREVIOUS RAM ON WARM START NEWLEV DS 1 ;NO CLEAR ON GAME SEL. PNTR1 DS 2 PNTR2 DS 2 PNTR3 DS 2 PNTR4 DS 2 PNTR5 DS 2 PNTR6 DS 2 ATRACT DS 2 ;2 BYTE FRAME TIMER ONESHT DS 1 ; HGRAP1 DS 3 ; PLAYER TYPE DS 1 HGRAP0 DS 4 IQREAP DS 1 ;ALSO HWARF TARGET NUM. ; HHORP1 DS 3 ; PLAYER X DS 1 HHORP0 DS 4 PLINES DS 1 ; HVERP1 DS 3 ; PLAYER Y DS 1 HVERP0 DS 4 VWALL DS 1 ; ZPOSP1 DS 2 ; PHOTON Z DS 1 ZPOSP0 DS 4 DS 1 ;IQPATH-1 IQPATH DS 4 ; ; TEMPORARY STUFF ********* STARS DS 2 ;STAR PNTR REQUST DS 1 BOTSCN DS 1 HHORM2 DS 1 ; STAR HPOS NEWATT DS 1 PAUTIM DS 1 CENTER DS 1 ; HORIZ ZOOM BYTE IQPNTR DS 1 ;IQ RAM IQSTAK DS 1 IQWARP DS 1 SHIPST DS 1 HOLDM2 DS 1 HOLDM0 DS 1 ; END TEMP ****************** ; GAMTIM DS 1 LSTCUR DS 1 GAMEST DS 1 LIVES DS 1 TARNUM DS 1 FUEL DS 1 SCORE DS 3 CH0PTR DS 1 CH1PTR DS 1 CH0SHD DS 1 CH1SHD DS 1 ORG $E3 ; BEGIN CHART BLOCK EXPNTR DS 1 ; ALSO USED AS CHART TIMER CHTBLK VECTP1 DS 2 PNTRP1 DS 1 DS 1 XDELP0 DS 4 DS 1 YDELP0 DS 4 DS 1 ZDELP0 DS 4 ; SPEED OF OBJS. VELOC DS 1 ; FOR HORIZ SHIP HPOSL DS 1 ; FOR HORIZ SHIP HHITP0 DS 4 ; USES STAK1 TOO ,ALSO USED FOR STACK IN BRAIN, 4LEV DEEP ; END CHART BLOCK ; FOLLOWING VARIABLES RESIDE IN STACK STAK1 DS 1 STAK2 DS 1 STAK3 DS 1 STAK4 DS 1 ; ; ; END DATA SECTION ;; CODE ; ; ; VCS EQUATES VSYNC EQU 0 VBLANK EQU 1 WSYNC EQU 2 SIZPM0 EQU 4 SIZPM1 EQU 5 COLPM0 EQU 6 COLPM1 EQU 7 COLPF EQU 8 COLBK EQU 9 PRIOR EQU $A REFP0 EQU $B REFP1 EQU $C GRFPF0 EQU $D GRFPF1 EQU $E GRFPF2 EQU $F HPOSP0 EQU $10 HPOSP1 EQU $11 HPOSM0 EQU $12 HPOSM1 EQU $13 HPOSM2 EQU $14 AUDC0 EQU $15 AUDC1 EQU $16 AUDF0 EQU $17 AUDF1 EQU $18 AUDV0 EQU $19 AUDV1 EQU $1A GRAFP0 EQU $1B GRAFP1 EQU $1C GRAFM0 EQU $1D GRAFM1 EQU $1E GRAFM2 EQU $1F HDELP0 EQU $20 HDELP1 EQU $21 HDELM0 EQU $22 HDELM1 EQU $23 HDELM2 EQU $24 VDELP0 EQU $25 VDELP1 EQU $26 VDELM2 EQU $27 GCTLM0 EQU $28 GCTLM1 EQU $29 ADDEL EQU $2A CLRDEL EQU $2B HITCLR EQU $2C M0PL EQU $30 M1PL EQU $31 P0PF EQU $32 P1PF EQU $33 M0PF EQU $34 M1PF EQU $35 M2PF EQU $36 MIPL EQU $37 POT0 EQU $38 POT1 EQU $39 POT2 EQU $3A POT3 EQU $3B TRIG0 EQU $3C TRIG1 EQU $3D PORTA EQU $280 RACTL EQU $281 PORTB EQU $282 PBCTL EQU $283 RTIMER EQU $284 RFLAG EQU $285 STIME1 EQU $294 STIME8 EQU $295 STIM64 EQU $296 ST1024 EQU $297 FTIME1 EQU $29C FTIME8 EQU $29D FTIM64 EQU $29E FT1024 EQU $29F ; ; ; BANK SELECT EQUATES IFCONST BURN BANK1 EQU $F000 BANK2 EQU $F000 BANK3 EQU $F000 BANK4 EQU $F000 ELSE BANK1 EQU $C000 BANK2 EQU $D000 BANK3 EQU $E000 BANK4 EQU $F000 ENDIF STROB1 EQU $FFF6 STROB2 EQU $FFF8 STROB3 EQU $FFF7 STROB4 EQU $FFF9 ; ; ; GAME EQUATES NUMCOL EQU 3+4 K EQU 8 ; CHTRAM POS. OF HOME PLANET U EQU 1 TOPSCN EQU $99 SCNSIZ EQU TOPSCN+39 MTNTOP EQU $62 TRNTOP EQU $62 VSHIP EQU $1D ZVIS EQU $78 PBLK EQU $60+$80 ; BLANK P0 POFF EQU $A8 ;NEW P0 SCLR EQU $F2 ;STAR COLOR VCENT EQU $53 ;VERT ZOOM CENTR OF SCRN SKYCOL EQU $70 SURCOL EQU $62 TRNCOL EQU $84 ; Z= USED IN BANK2 ; EQUATE Q= BRNTB1 ; EQUATE W= TYPTAB ; EQUATE J= AUDTAB ; BOTTOM OF SCREEN = 0 ; ; VBLANK EQUATES ; TEMP4 EQU PNTR5+0 TEMP5 EQU PNTR2+1 TEMP6 EQU PNTR1+0 TEMP7 EQU PNTR1+1 TEMP9 EQU PNTR4+0 TEMP10 EQU PNTR4+1 JOYRMH EQU PNTR6+0 JOYRMV EQU PNTR6+1 TEMP11 EQU PNTR2+0 TEMP12 EQU PNTR3+0 TEMP13 EQU PNTR3+1 THGRP1 EQU PNTR5+1 ;SHIP GRAPHIC 0,1,2 NEWAVE EQU STARS+1 ; ; ; SCREEN EQUATES VECTP0 EQU PNTR1 HOLDP1 EQU PNTR2+0 CROSP1 EQU PNTR2+1 VERTP0 EQU PNTR3+0 VERTP1 EQU PNTR3+1 MISC1 EQU PNTR4 MOON2 EQU PNTR5 MOON1 EQU PNTR6 MOON3 EQU STAK1 ;AND STAK2 MISC2 EQU STAK3 ;AND STAK4 ; ; ; ; .BEGIN PROGRAM ; ; LIST OFF ; INCLUDE B:BANK2.ASM ; ; ; LIST OFF ; INCLUDE B:BANK3.ASM ; ; ; LIST OFF ; INCLUDE B:BANK4.ASM ; ; ; LIST OFF ; INCLUDE B:BANK1.ASM ; ; ; LIST OFF IFNCONST BURN ; JUMP VECTORS FOR UNIV.ASM DURNING DEVELOPMENT ; BK3 ORG BANK3+$FCC JMP BANK2+$FCF JMP BANK1+$FD2 JMP BANK4+$FD5 ORG BANK3+$FEA JMP BANK2+$FED JMP BANK4+$FF0 ; BK1 ORG BANK1+$FCF JMP BANK4+$FD2 ORG BANK1+$FD5 JMP BANK3+$FD8 ORG BANK1+$FDE JMP BANK2+$FE1 ORG BANK1+$FF0 JMP BANK3+$FF3 ; BK4 ORG BANK4+$FD2 JMP BANK3+$FD5 ORG BANK4+$FD8 JMP BANK1+$FDB ORG BANK4+$FE4 JMP BANK3+$FE7 ORG BANK4+$FEA JMP BANK1+$FED JMP BANK3+$FF0 ; BK2 ORG BANK2+$FCC JMP BANK1+$FCF ORG BANK2+$FD5 JMP BANK3+$FD8 ORG BANK2+$FDE JMP BANK4+$FE1 ORG BANK2+$FE4 JMP BANK4+$FE7 ; DEFINE PC (FOR DEVELOPMENT SYSTEM) ORG $9C04 DW INIT ; FOR HALT DURING VBLANK ORG HACKCLI CLI ORG HACKSEI SEI ENDIF ;.END ; bank 1 seg bank1 ORG $0000 rorg $f000 DIVTB1 .byte $08,$03,$02,$01,$01,$01,$00,$00 .byte $00,$00,$00,$00,$00,$00,$00,$00 .byte $0C,$08,$05,$13,$13,$12,$12,$22 .byte $22,$31,$41,$51,$61,$71,$80,$F0 .byte $0E,$09,$18,$16,$14,$24,$23,$33 .byte $32,$42,$62,$72,$82,$91,$91,$F1 .byte $0F,$0B,$19,$18,$26,$25,$34,$34 .byte $43,$63,$73,$82,$92,$92,$A2,$F2 .byte $0F,$1C,$19,$28,$38,$37,$46,$45 .byte $54,$74,$83,$93,$A3,$A3,$B2,$F2 .byte $0F,$1D,$1B,$29,$38,$48,$47,$56 .byte $65,$85,$94,$A4,$B4,$B3,$C3,$F3 .byte $0F,$1E,$2B,$3A,$39,$48,$58,$67 .byte $76,$95,$95,$A4,$B4,$C4,$D3,$F3 .byte $0F,$1F,$2C,$3A,$49,$59,$68,$78 .byte $87,$96,$A6,$B5,$C5,$D4,$E4,$F4 ZOOMTB .byte $0F,$7F,$5D,$4B,$3A,$29,$29,$28 .byte $28,$17,$17,$16,$15,$15,$15,$04 .byte $1F,$0F,$1E,$0B,$9A,$89,$99,$89 .byte $08,$18,$07,$07,$06,$16,$05,$05 .byte $8F,$8F,$9C,$8C,$0B,$0A,$09,$09 .byte $08,$18,$08,$07,$07,$06,$06,$05 .byte $0F,$0F,$1F,$0C,$0B,$0A,$0A,$09 .byte $89,$88,$88,$88,$07,$07,$06,$06 .byte $9F,$8F,$8F,$8D,$0C,$0B,$0A,$09 .byte $89,$89,$88,$88,$08,$07,$07,$06 .byte $0F,$0F,$0F,$0E,$8C,$8B,$8A,$9A .byte $09,$09,$09,$08,$08,$08,$07,$07 .byte $0F,$0F,$0F,$0E,$0C,$0B,$0A,$0A GRATB7 .byte $09,$09,$89,$08,$88,$08,$08,$07 .byte $8F,$8F,$0F,$0F,$8D,$0C,$8B,$8A .byte $0A,$89,$89,$89,$88,$88,$88,$88 ; ; ; ; SUBROUTINES FOR BANK 1 NEWOB1 ; SUB. STY IQSTAK NEWOB2 ; GTO STA IQPNTR ; NEWOBJ LDY IQPNTR LDA TYPTAB,Y BMI NEWOB3 STA PNTR3 LDA #>NEWOB1 STA PNTR3+1 CLC LDA TYPTAB+1,Y JMP.ind (PNTR3) NEWB55 ; EMP CMP HGRAP0+3 JMP NEWB62 NEWB78 ; RNW CMP RANDOM NEWB62 LDA TYPTAB+2,Y BCC NEWB61 BCS NEWOB2 ;JMP NEWB50 ; LVS ADC NEWAVE TAX LDA NEWT11,X STA IQREAP JMP NEWOB7 NEWB51 ; BRN DEC IQREAP BPL NEWOB2 BMI NEWOB7 ;JMP NEWOB5 ; RET LDY IQSTAK LDA #$00 STA IQSTAK BEQ NEWOB7 ;JMP NEWB81 ; INL LDA LIVES CMP #$05 BCS NEWOB8 INC LIVES BCC NEWOB8 ;JMP NEWB41 ; STO TAX LDA #$00 BEQ NEWB60 ;JMP NEWOB4 ; ENB TAX LDA 0,X NEWB60 ORA TYPTAB+2,Y NEWB54 STA 0,X NEWB61 INY NEWOB7 INY NEWOB8 INY STY IQPNTR NEWB58 RTS NEWB40 ; RND LDA RANDOM AND #$03 ADC TYPTAB+1,Y TAY LDA NEWTB7-$E0,Y ; FALL THRU TO NEWOB3 ; EQUATES **** SUB EQU BRAN32 STA PNTR4+1 LDA SHIPST AND #$30 BEQ BRAN58 LDA HGRAP0-1,X ;DOING TAKEOFF BPL BRAN47 LDA #PBLK STA HGRAP0-1,X BRAN58 LDA #$27 CMP HGRAP0-1,X LDA GAMEST BPL BRAN56 ; WANDER BCC BRAN47 ;NOT VISIBLE AND #$7F STA GAMEST BRAN47 TYA EOR GAMTIM AND #$03 ;RANDOM PATH BPL BRAN55 ;JMP BRAN56 LDA IQPATH-1,X AND #$07 CLC ADC BRNT11,Y BRAN55 STA TEMP13 ;PATH PNTR LDA #$00 JMP.ind (PNTR4) ; ; BRAN36 ; PHOTON TYPE STA JOYRMV JMP BRAN38 ; BRAN31 ; BLOCK TYPE LDA ZPOSP0-1,X BNE BRAIN7 JSR LSOUN2 BRAIN7 LDA NEWAVE ADC #$03 ;C=0 LDY HHORP0-1,X CPY CENTER BCC BRAN15 EOR #$FF ; BRAN15 ; MOON TYPE STA JOYRMH LDA IQWARP CMP #$80 ROR SEC SBC #$02 TAY CPY #$F7 BCC BRAN48 ; SPECIAL MOON ZDEL FIX LDA BRNTB8-$F7,Y STA TEMP5 TYA BRAN48 JSR ZHELP2 LDA ZDELP0-1,X JSR POSTH1 STA ZDELP0-1,X ; ; XDEL MOON SEC LDA HHORP0-1,X SBC CENTER JSR DIVIDE BRAN35 CLC ADC JOYRMH JSR PREHL5 ;PACK LDA XDELP0-1,X JSR POSTH1 STA XDELP0-1,X ; ; YDEL MOON BRAN38 SEC LDA HVERP0-1,X SBC #VCENT JSR DIVIDE CLC ADC JOYRMV JSR PREHL5 ;PACK LDA YDELP0-1,X JSR POSTH1 BCC BRAIN2 ;JMP ; BRAN30 ; PBLK TYPE STA ZDELP0-1,X STA XDELP0-1,X BRAIN2 STA YDELP0-1,X BRAN42 ; WARP GRA TYPE JMP BRAN46 ; BRN100 ; TRN TOWER LDA IQPATH-1,X AND #$E0 STA IQPATH-1,X BRAN32 ; PLANET TYPE LDA IQWARP JSR ZHELP1 ;SLOW AND PACK LDA ZDELP0-1,X JSR POSTH1 STA ZDELP0-1,X LDA #$00 LDY PROGST CPY #$40 BNE BRAN35 ; TRENCH STA TEMP10 ;A=0 LDA #$F9 SBC IQWARP ;C=1 STA TEMP7 ;MAX SPEED LDA #$4C BCC BRAN89 LDY ZPOSP0-1,X CPY #$54 BCS BRAN89 LDA IQPATH-1,X LSR LSR ADC #$2B BRAN89 ; A=DEST JMP BRAN21 ; BRAIN9 ; DARTER LDA HGRAP0-1,X CMP #$14 BCC BRAN42 ;WARP IN ; BRAN11 ; SHIP TYPE LDA PROGST CMP #$40 BEQ BRN100 ;TRENCH ; PATH LOGIC STY TEMP11 LDY TEMP13 LDA ATRACT AND #$FC CMP #$F0 BEQ BRAN73 ;RE-SYNC AND #$04 BNE BRAN72 BRAN73 ORA IQPATH-1,X CLC ADC #$10 STA IQPATH-1,X BCC BRAN72 LDA BRNTB1,Y LSR LDY TEMP11 BCS BRAN74 ; INC PATH SEC LDA BRNT12,Y AND #$F0 ADC IQPATH-1,X JMP BRAN75 BRAN74 ; NEW PATH LDA BRNT13,Y ;MASK BPL BRAN78 STA HGRAP0-1,X ;DARTER OFF JMP BRN105 ; NEWOBJ? BRAN78 AND RANDOM ORA BRNT12,Y CPY #$06 ;WARPER BNE BRAN75 LDY NEWAVE SBC BRNT16,Y ;C=1 BRAN75 STA IQPATH-1,X BRAN72 ; ZDEL STUFF LDA IQWARP CLC ADC #$07 STA TEMP10 LDY TEMP13 LDA BRNTB1,Y TAY AND #$0F STA TEMP7 TYA BMI BRAN87 LDY NEWAVE CMP BRNT17,Y BCC BRAN87 LDA BRNT17,Y BRAN87 SEC SBC ZPOSP0-1,X JSR ZHELP SEC ;DEFINE C=TYPE 2 LDA ZDELP0-1,X JSR POSTHP JSR POSTHP ;TWICE FOR TYPE 2 MOTION STA ZDELP0-1,X ; ; FROM BEHIND KLUDGE FIX AND #$1F CMP #$10 BCS BRAN12 LDA ZPOSP0-1,X CMP #$F8 BCC BRAN12 LDA HHORP0-1,X CMP #$50 LDA #$A0 BCS BRAN13 LDA #$00 BRAN13 STA HHORP0-1,X BRAN12 ; ; XDEL STUFF SEC LDA HHORP0-1,X SBC CENTER JSR DIVIDE ;ZOOM CLC ADC JOYRMH ;JOYSTK ADC JOYRMH ;ADD TWICE STA TEMP10 LDY TEMP13 LDA BRNTB2,Y STA TEMP12 LDA BRNTB3,Y AND #$0F STA TEMP7 CPY #PH6-Q BCC BRAIN1 LDA RANDOM ;HWARPER AND #$20 BCS BRAN69 ;JMP BRAIN1 LSR LDA IQPATH-1,X AND #$08 BEQ BRAN69 LDA #$FF ;REFLECT BRAN69 EOR BRNTB3,Y BCS BRAN62 ADC #$50 JMP BRAN21 BRAN62 ADC CENTER BRAN21 LDY RTIMER CPY #$0A BCS BRN101 RTS ;ABORT BRN101 SEC SBC HHORP0-1,X JSR PREHLP LSR TEMP12 ;DEFINE C LDA XDELP0-1,X JSR POSTHP STA XDELP0-1,X ; ; YDEL STUFF SEC LDA HVERP0-1,X SBC #VCENT JSR DIVIDE ;ZOOM CLC ADC JOYRMV ADC JOYRMV ;TWICE WHY? STA TEMP10 LDA TEMP12 ASL TAY AND #$0F STA TEMP7 TYA SEC SBC HVERP0-1,X JSR PREHLP LDA YDELP0-1,X LDY PAUTIM CPY #$01 ;C=0=TYPE 1 JSR POSTHP STA YDELP0-1,X ; BRAN46 ; ; SWAP LOGIC LDA HGRAP0-1,X CMP #PBLK BNE BRAN23 BRN105 ; EMPTY LDY HGRAP1+3 BPL BRAN24 CPY #PBLK BNE BRAN26 BRAN50 JMP NEWOBJ BRAN26 ; OFF SCREEN LDA HVERP1+3 CMP #TOPSCN BCC BRAN98 BRAN16 CPX #$04 BEQ BRAN85 TXA TAY INX JSR BRAN29 JMP BRAN16 BRAN24 ; ONSCREEN CPY #$48 ;SATURN STUFF BCS BRAN50 LDA BRNTB6,Y AND #$3F CLC ADC HVERP0-2,X ;NO LOAD P0+0 BUG BCS BRAN98 ;OOPS LOOK OUT! CMP HVERP1+3 BCS BRAN98 CPX #$04 BCS BRAN85 LDA HGRAP0,X AND #$7F TAY LDA BRNTB6,Y AND #$3F ADC HVERP1+3 ;C=0 CMP HVERP0,X ;2PBLKS IN A ROW BCC BRAN85 LDA HGRAP0-2,X CMP #PBLK BNE BRAN98 TXA TAY INX BCS BRAN22 ;C=1,JMP SWAP BRAN85 LDA #$80 STA YDELP0-1 TXA TAY LDX #$00 BEQ BRAN22 ;JMP SWAP ; BRAN23 ; FULL OBJ ; VISUAL SWAP STUFF ?? LDY SWAPT5-1,X BIT PROGST BVC BRAN59 ; PLANET/TRN LDA ZPOSP0-1,X CMP #$77 BCS BRAN25 LDA.wy HGRAP0-1,Y CMP #PBLK BEQ BRAN29 BRAN98 RTS BRAN59 LDA HVERP0-1,X CMP SWAPT2-1,X BCC BRAN28 CMP SWAPT3-1,X BCC BRAN25 CPX #$01 BEQ BRAN61 LDA HGRAP0-1,X ;1LINE JITTER FIX AND #$7F TAY LDA BRNTB6,Y BPL BRAN61 AND #$3F ADC #$01 ;C=1 ADC HVERP0-2,X CMP HVERP0-1,X BCS BRAN25 ; END FIX BRAN61 LDY SWAPT4-1,X BRAN28 LDA.wy HGRAP0-1,Y CMP #PBLK BEQ BRAN29 AND #$7F STX TEMP4 TAX LDA SWAPT1-1,Y BNE BRAN25 ;Y NOT 1,4 LDA BRNTB6,X CMP #$40 ;FIXES PHOTON OFF,ALSO BCS BRAN25 LDX TEMP4 BRAN29 ; BRAN22 ; DO SWAP LDA HGRAP0-1,X STA.wy HGRAP0-1,Y LDA #PBLK STA HGRAP0-1,X LDA ZDELP0-1,X STA.wy ZDELP0-1,Y LDA XDELP0-1,X STA.wy XDELP0-1,Y LDA YDELP0-1,X STA.wy YDELP0-1,Y LDA IQPATH-1,X STA.wy IQPATH-1,Y LDA HHORP0-1,X STA.wy HHORP0-1,Y LDA ZPOSP0-1,X STA.wy ZPOSP0-1,Y LDA HVERP0-1,X STA.wy HVERP0-1,Y BRAN25 RTS ; ; ; HYPSRV LDX HCOLP1+1 LDA ZOOMTB,X STA HOLDM0 ;FOR SHPSRV LDX ZPOSP1 LDA ZOOMTB,X STA VECTP1 LDX ZPOSP1+1 LDA ZOOMTB,X STA VECTP1+1 ;PHOTONS ; LDX #$01 LDA PROGST AND #$10 BEQ HYPSR1 HYPSR2 LDY ZDELP0,X LDA ZOOMTB,Y LSR LSR LSR LSR AND #$07 EOR #$FF SEC ADC YDELP0,X BPL HYPSR4 LDA #$00 HYPSR4 STA YDELP0,X DEY BEQ HYPSR3 STY ZDELP0,X HYPSR3 DEX BPL HYPSR2 RTS HYPSR1 ; FALL THRU ; ; GRAPH ; ANIMATION HANDLER ; X=1 STX TARNUM ;DEFAULT LDX #$04 GRAPH1 BIT PROGST ;DEFINE V FOR PLN/TRN ; WARNING DONT REDEFINE V FLAG CPX TEMP5 BCS GRAPH2 TXA BEQ GRAPH2 BVS GRAPH3 ; VECTOR DOWN STUFF LDA YDELP0-1,X EOR #$1F CMP YDELP0-1,X BCC GRAPH2 ;JMP GRAPH2 STA YDELP0-1,X BCS GRAPH2 ;JMP GRAPH2 GRAPH3 ; PLN/TRN LDA IQPATH-1,X ORA #$03 STA IQPATH-1,X GRAPH2 LDA HGRAP0-1,X CMP #PBLK BEQ GRAPH4 AND #$7F LDY ZPOSP0-1,X CMP #$40 BCS GRAPH5 CPY TEMP6 BCC GRAPH5 STY TEMP6 STX TARNUM ;NEW TARNUM GRAPH5 ; OFFSCN CHECK CPY #ZVIS BCS GRAPH6 LDY HVERP0-1,X CPY #TOPSCN BCS GRAPH6 LDY HHORP0-1,X CPY #$04 ;BIG MOONS FIX BCC GRAPH6 CPY #$9C BCS GRAPH6 ; ONSCREEN STA HGRAP0-1,X AND #$78 STA TEMP7 LSR LSR TAY BVC GRAPH7 INY ;PLN/TRN GRAPH7 LDA GRATB6,Y STA PNTR4 LDA GRATB7,Y ASL LDA #[>GRAP23]/2 ROL STA PNTR4+1 LDA ZPOSP0-1,X BVC GRAPH8 TAY ;PLN/TRN LDA SURTB2,Y STA TEMP12 TYA LSR GRAPH8 LSR CMP #$13 BCC GRAPH9 LDA #$13 GRAPH9 TAY JMP.ind (PNTR4) ; GRAPH6 ; OFFSCREEN ORA #$87 ;DEFAULT SMALL SIZE CMP #POFF BCC GRAPH4 BVS GRAPH4 GRAP10 LDA #PBLK GRAPH4 STA HGRAP0-1,X BVC GRAP11 LDY ZPOSP0-1,X CPY #ZVIS BCC GRAP69 LDY #ZVIS-1 GRAP69 LDA SURTB2,Y STA HVERP0-1,X GRAP11 JMP GRAP12 ; GRAP20 ; RINGS LDA HGRAP1+3 AND #$7F CMP #$48 BCC GRAP40 LDA #$48 STA HGRAP1+3 LDA HHORP0-1,X STA HHORP1+3 LDA ZPOSP0-1,X STA ZPOSP0-1 LDA HVERP0-1,X SBC #$01 ;C=1 STA HVERP1+3 CMP #TOPSCN-3 BCS GRAP10 ;TURN OFF GRAP40 JMP GRAP36 ; GRAP24 ; PLNPIR LDA TEMP4 JMP GRAP70 GRAP26 ; BLOCK LDA TEMP11 JMP GRAP65 GRAP23 ; SPACE FIGHT, ETC LDA TEMP4 GRAP65 CPY #$09 ;ZOOM ADJ BCC GRAP61 AND #$01 CPY #$0E ;ZOOM ADJ JMP GRAP60 GRAP21 ; MAN LDA PROGST AND #$FD CMP #$40 BNE GRAP22 ; IN TRENCH LDA ATRACT LSR BCC GRAP22 LDA PNTR3 ;VERT ADC #$04 ;C=1 AND #$FE CMP #$56 BCS GRAP22 CMP #$0C BCC GRAP22 STA VWALL LDA GAMEST LSR LDA VWALL BCS GRAP54 ADC #$56 LSR GRAP54 STA YDELP0-1 DEC YDELP0-1 ;VWIND ; GRAP22 ; TRN TOWER STX TEMP5 GRAP71 ; PLN FIGHT LDA TEMP13 GRAP70 CPY #$11 GRAP60 BCC GRAP61 LDA #$00 GRAP61 CLC ADC GRATB4,Y BIT PROGST BVC GRAP44 ;SPACE GUYS LSR LSR LSR LSR GRAP44 JMP GRAP42 ; GRAP29 ; WARNING: IN PAGE 8! ; PLN PHOT LDA HVERP0-1,X CMP TEMP12 BCS GRAP41 STA TEMP12 GRAP41 LDA ATRACT LSR AND #$01 ORA GRATB2,Y JMP GRAP42 ; GRAP28 ; WARINING: IN PAGE 9! ; SPA PHOT TYA ORA PAUTIM BNE GRAP41 LDY #EXPREG-EXPTAB STY EXPNTR LDA #$20 STA PAUTIM LDA #$3F BNE GRAP96 ;JMP ; GRAP27 ; DAR/WRPGRA LDA HGRAP0-1,X CMP #$14 BCC GRAP46 ; DARTER LDA #AUDVAR-J STA CH0SHD LDA ATRACT LSR LSR AND #$01 ORA #$04 CPY #$10 BCC GRAP42 ORA #$02 BCS GRAP42 ;JMP ; GRAP46 ; WARP GRA STX TEMP5 LDY HVERP1+3 STY HVERP0-1,X LDY HHORP0-1,X CPY HHORP1+3 BCS GRAP43 LDA #PBLK STA HGRAP1+3 LDA #$00 STA XDELP0-1,X LDA #$18 GRAP96 BNE GRAP43 ;JMP ; GRAP30 ; MOONS LDA GRATB1,Y CPX #$01 BCS GRAP47 ADC #$04 ;C=0 LDY #$A0 STY ZPOSP0-1 BNE GRAP66 ;JMP GRAP47 LSR LSR LSR LSR GRAP66 AND #$0F LDY HGRAP0-1,X CPY #$54 BCC GRAP67 ADC #$0B ;C=1 GRAP67 ADC #$48 ;C=0 BNE GRAP43 ;JMP ; GRAP32 ; SPA EXPLOS STX TEMP5 GRAP33 ; PLN EXPLOS LDY EXPNTR LDA EXPTAB,Y BMI GRAP48 DEY CMP PAUTIM BEQ GRAP49 BNE GRAP50 ;JMP GRAP48 CMP #PBLK BEQ GRAP51 LSR LSR LSR SEC SBC #$18 CLC ADC HVERP0-1,X STA HVERP0-1,X GRAP49 INC EXPNTR GRAP50 LDA EXPTAB,Y AND #$07 TAY ORA #$38 GRAP51 STA HGRAP0-1,X BIT PROGST BVS GRAP52 LDA EXPOFF,Y BVC GRAP53 ;JMP ; GRAP34 ; LZ GRAP35 ; CRATER STX TEMP5 GRAP36 ; PKILLER,ETC. LDA GRATB1,Y GRAP42 AND #$07 ORA TEMP7 GRAP43 STA HGRAP0-1,X BIT PROGST BVC GRAP97 ; PLN/TRN LDA TEMP12 STA HVERP0-1,X GRAP52 LDY HGRAP0-1,X CPY #$40 LDA GRATB3-$40,Y BCS GRAP53 LDA BRNTB9,Y GRAP55 AND #$80 BEQ GRAP53 LDA #$FC GRAP53 CLC ADC HHORP0-1,X CMP #$A0 BCC GRAP56 LDA #$00 GRAP56 STA HHITP0-1,X GRAP12 DEX BMI GRAP68 JMP GRAPH1 GRAP68 RTS GRAP97 TAY TXA BEQ GRAP68 LDA ZOOMTB,Y BVC GRAP55 ;JMP ; ; ; ; ; ; ; CLOS35 ; PBLK LDA HVERP0-1,X ADC #$01 ;C=1 JMP CLOS36 CLOS33 LDA ZPOSP0-1,X ADC #$10 ;C=0 CMP #$12 BCS CLOS44 LDA HGRAP0-1,X AND #$78 LDY #ATTSB1-W ;5 IN A ROW? CMP #$18 BCC CLOS42 BNE CLOS43 ;NOT MAN BIT GAMEST BVS CLOS43 ; NOT ENEMY LDY #$5F ;ABORT ENEMY PLANET CLOS42 CPY IQPNTR BCS CLOS43 STY IQPNTR CLOS43 LDA #PBLK STA HGRAP0-1,X CLOS44 LDA HGRAP0,X CMP #PBLK BEQ CLOS35 AND #$7F TAY LDA BRNTB9,Y AND #$1F ADC HVERP0-1,X ;C=0 CMP HVERP0+0,X BCC CLOS31 ;NO ERROR CLOS36 STA HVERP0,X CPX #$03 BNE CLOS51 LDA ZPOSP0+3 CMP #ZVIS-1 BCS CLOS31 CLOS51 LDA #$FF STA ZDELP0,X ;NO MOVE DOWN CLOS31 LDA HVERP0+0,X ;RESTORE CMP PNTR3+1 ;FROM PLNSRV BCS CLOS39 STX PNTRP1 CLOS39 INX CLOS30 ; BEGIN PLANET/TRENCH LDA BRNTB9,Y AND #$20 BEQ CLOS32 LSR HVERP0-1,X SEC ROL HVERP0-1,X CLOS32 CPX #$4 BNE CLOS33 CLOS40 RTS ; CLOSE LDX #$00 ;OLD TAX LDA HVERP0+0 CMP #$F3 BCC CLOS77 STX HVERP0+0 ;FIX JUMP UP BUG CLOS77 STX REQUST STX PNTRP1 INX LDA HGRAP0 AND #$7F TAY LDA BRNTB6,Y STA TEMP4 BNE CLOS34 STA HVERP0+0 CLOS34 BIT PROGST BVS CLOS30 ;PLN/TRENCH ; ; P1+3 CHECK LDA HGRAP1+3 AND #$7F TAY LDA BRNTB6,Y AND #$3F STA HOLDM0 ;FOR HITS CLC ADC HVERP1+2 CMP HVERP1+3 BCC CLOSE1 STA HVERP1+3 CPY #$40 BCC CLOSE1 LDA #PBLK ;MOON OFF STA HGRAP1+3 CLOSE21 ; P0 CHECK STUFF ; CLOSE1 LDA HVERP0+0,X CMP #TOPSCN BCS CLOSE2 ;OFFSCRN ; ON SCREEN LDA HGRAP0,X AND #$7F TAY LDA BRNTB6,Y TAY BEQ CLOSE3 ;PBLK AND #$3F ADC HVERP0-1,X ;C=0 CMP HVERP0,X BCC CLOSE4 ;NO ERROR STA HVERP0+0,X CMP #TOPSCN BCS CLOSE5 ;WENT OFFSCRN ; REQUEST LOGIC TYA BMI CLOSE6 BIT TEMP4 BMI CLOS11 AND #$40 BNE CLOSE7 BEQ CLOSE4 ;JMP CLOSE6 ; TOP =NORMAL LDA HGRAP0,X ;NO SWAP IF OFFSCRN BMI CLOSE4 LDA #$40 BIT TEMP4 BMI CLOSE8 BVS CLOSE4 CLOSE7 LDA #PBLK STA HGRAP0-1,X LDA #$80 CLOSE8 ORA CLSTB1-1,X CMP REQUST BCC CLOSE4 STA REQUST CLOSE4 STX PNTRP1 CLOSE9 STY TEMP4 INX CPX #$04 BCC CLOSE1 RTS CLOS10 LDA HVERP0+0,X CLOSE2 CMP HVERP0-1,X BCS CLOSE5 LDA HVERP0-1,X STA HVERP0,X LDA REQUST BNE CLOSE5 LDA CLSTB1-1,X STA REQUST CLOSE5 INX CPX #$04 BCC CLOS10 RTS CLOS11 LDA YDELP0,X AND #$10 BEQ CLOSE4 LDA #PBLK STA HGRAP0,X CLOSE3 LDA #$02 CLC ADC HVERP0-1,X STA HVERP0,X JMP CLOSE9 ; ; ; ; ; ; TABLES ; ; ; TYPTAB W EQU TYPTAB ;EQUATE .byte $00 ; SPACE TYPE GUYS BLKTYP .byte $CA,$CA,$D6,$D6 .byte LVS,$00,$AB,$AB,BRN,BLKTYP+6-W DONTYP .byte $A1 .byte $C8,ENB,SHIPST,$01 MONTYP .byte STO,IQREAP,$04 .byte $CA,$D6,$CA,$D6,$C2,BRN,MONTYP+3-W .byte $C8,ENB,GAMEST,$20,GTO,MONTYP-W COBTYP .byte LVS,$0A,$92,BRN,COBTYP+2-W,GTO,DONTYP-W PIRTYP .byte $89,LVS,$05,RNW,$C0,PIRTY1-W,$89,BRN,PIRTYP+6-W .byte GTO,DONTYP-W PIRTY1 .byte STO,GAMEST,$00,$8B,$8B,$8B,GTO,DONTYP-W PLNTYP .byte $A1,LVS,$0A PLNTY1 .byte RNW,$20,PIRTY1-W,RND,$E0,BRN,PLNTY1+3-W,GTO,DONTYP-W FIGTYP .byte $81,LVS,$05 FIGTY1 .byte RNW,$20,PIRTY1-W,RND,$F0,BRN,FIGTY1+3-W,GTO,DONTYP-W ; PLANET TYPES FRNTYP .byte $A7,$9B,$C3,$C3,EMP,PBLK-1,FRNTYP+1-W,$C0,$C3 FRNTY1 .byte $C3,ENB,GAMEST,$20 CRATYP .byte ENB,SHIPST,$10,$C3,GTO,CRATYP-W TRNTYP .byte ENB,GAMEST,$02,$A7,$AB,EMP,PBLK-1,TRNTYP+4-W .byte $A8,GTO,FRNTY1-W TRNTY1 .byte STO,PROGST,$40,STO,GAMEST,$15 .byte LVS,$0F,$9F,$AB,EMP,PBLK-1,TRNTY1+9-W .byte BRN,TRNTY1+8-W,$AB,$AB,$AB,$AB,$AB .byte ENB,PROGST,$08,$C0 BLOWT2 .byte ENB,SHIPST,$41 BLOWIT .byte ENB,SHIPST,$50,GTO,CRATYP+3-W ; HYPSUB .byte $92,$92,$92,RET ; ; ENETYP 2ND LAST IN TYPTAB ENETYP .byte LVS,$0F,$9F,RND,$E8,EMP,PBLK-1,ENETYP+3-W .byte BRN,ENETYP+2-W,$C0,INL,GTO,BLOWT2-W ; ; ATTSUB IS LAST IN TYPTAB ATTSUB .byte STO,HGRAP0+3,PBLK ATTSB1 .byte $C3,LVS,$14,RND,$EC,BRN,ATTSB1+3-W .byte $C0,ENB,SHIPST,$01,RET ; ; CLSTB1 .byte $01,$02,$03 ; SHARE 1 SWAPT1 .byte $00,$01,$04 ; SHARE 1 SWAPT2 .byte $00,$32,$53,$72 SWAPT3 .byte $50,$53,$72,$FF SWAPT4 .byte $02,$03,$04,$04 ; NEWTB1 .byte $78,$18,$38,$59,$76 NEWTB5 .byte $E0,$D0,$00,$00,$B0 NEWTB7 .byte $A1,$81,$89,$CB,$A3,$8B,$83,$83 .byte $8B,$83,$83,$C3,$8B,$83,$93,$93 .byte $81,$81,$83,$8B NEWT11 .byte $1E,$28,$37,$4B,$64 .byte $00,$00,$01,$01,$02 .byte $01,$02,$02,$03,$04 .byte $00,$01,$01,$02,$04 .byte $02,$04,$05,$05,$06 NEWTB3 .byte $84,$9E,$AE,$BE,$67 NEWTB4 .byte $3F,$3F,$1F,$1F,$7F ; ; EXPTAB EXPPLN .byte $C5,$1C,$C4,$19,$C3,$16,$C2,$13 .byte $C1,$10,$C0,$0D,PBLK EXPTRN .byte $C3,$1E,$C5,$C5,PBLK EXPREG .byte $C7,$CE,$CD,$C4,$1A,$CB,$16,$CA .byte $11,$D1,$0C,$D0,$07,PBLK EXPFAR .byte $C7,$1E,$CE,$C6,$CD,$C5,$C4,$15 .byte $CB,$12,PBLK ; ; ; BRNTB9 ; BRNTB6 FOR PLANET .byte $52,$52,$52,$4F,$4F,$0F,$0C,$0A .byte $53,$13,$53,$51,$11,$51,$4E,$4B .byte $53,$53,$53,$51,$51,$51,$0E,$0B .byte $14,$14,$14,$11,$11,$11,$0E,$0B .byte $93,$91,$90,$8F,$0E,$0D,$0C,$0B .byte $13,$53,$13,$11,$51,$11,$4E,$0A .byte $10,$0F,$10,$0F,$0E,$0D,$0C,$0B .byte $B9,$B7,$B5,$B3,$11,$0F,$0F,$0F .byte $32,$30,$2E,$8D,$8C,$8B,$8B,$0A ; BRNT15 .byte $1C,$14,$0C,$08,$04 BRNT16 .byte $60,$40,$30,$20 ; SHARE 1 BRNT10 ; PHOT VECTORS .byte $00,$03,$06,$08,$0C BRNT17 ; MAX Z GUYS .byte $18,$20,$28,$30,$38 ; BRNTB1 ; ZDELST Q EQU BRNTB1 ;EQUATE .byte $01,$01,$01,$01 PH1 .byte $2E,$1A,$08,$13 PH2 .byte $F4,$F4,$F3,$F7 PH3 .byte $17,$26,$36,$FC,$3D PH4 .byte $F2,$F2,$F3,$F7 PH5 .byte $20,$06,$06,$06,$07 PH7 .byte $24,$08,$18,$05 ; LAST IN TABLE PH6 .byte $19,$0F,$09,$1A,$FF ; BRNTB2 ; YDEST .byte $C4,$C4,$E4,$E4 .byte $46,$3E,$3C,$38 .byte $02,$02,$02,$02 .byte $29,$39,$3B,$37,$3B .byte $01,$01,$01,$01 .byte $0E,$2E,$1E,$0E,$0E .byte $2B,$55,$45,$55 .byte $28,$38,$0A,$58,$48 ; BRNTB3 ; XDEST .byte $74,$B4,$74,$B4 .byte $DB,$1B,$18,$FC .byte $1D,$F9,$E4,$24 .byte $1D,$FD,$FD,$28,$E8 .byte $2E,$DE,$FF,$24 .byte $C0,$2F,$CF,$FF,$0A .byte $DE,$19,$25,$ED .byte $1D,$ED,$FD,$0D,$FD ; BRNT11 .byte PH1-Q,PH2-Q,PH3-Q,PH4-Q .byte PH5-Q,PH2-Q,PH6-Q,$00,PH7-Q BRNT12 .byte $80,$C0,$80,$40,$C0,$A0,$E0,$00,$70 BRNT13 .byte $08,$08,$09,$08,$E0,$0B,$0B,$00,$0B ; ; ; SURTB2 .byte $02,$05,$08,$0B,$0E,$10,$13,$15,$17,$19,$1B,$1D,$1F,$20,$22,$24 .byte $25,$27,$28,$29,$2B,$2C,$2D,$2E,$2F,$30,$31,$32,$33,$34,$35,$36 .byte $37,$38,$39,$39,$3A,$3B,$3C,$3C,$3D,$3E,$3E,$3F,$40,$40,$41,$41 .byte $42,$42,$43,$43,$44,$44,$45,$45,$46,$46,$47,$47,$47,$48,$48,$49 .byte $49,$49,$4A,$4A,$4B,$4B,$4B,$4C,$4C,$4C,$4D,$4D,$4D,$4D,$4E,$4E .byte $4E,$4F,$4F,$4F,$4F,$50,$50,$50,$50,$51,$51,$51,$51,$52,$52,$52 .byte $52,$52,$53,$53,$53,$53,$53,$54,$54,$54,$54,$54,$55,$55,$55,$55 .byte $55,$55,$56,$56,$56,$56,$56,$56 ; ; GRATB6 .byte 127 DIVID3 AND #$F0 ORA TEMP4 ;Z VAL TAY LDA DIVTB1,Y AND #$0F ORA TEMP5 ;Z DEL TAY LDA DIVTB1,Y LSR LSR LSR LSR TAY LDA BRNTB5,Y ;UNPACK VALUE EOR PNTR1 ; -ZOOM RTS ; ; ; ZHELP ; FOR Z ONLY LDY #$00 STY TEMP11 CMP #$70 BCC ZHELP3 DEC TEMP11 ZHELP3 EOR TEMP11 CMP TEMP7 BCC ZHELP4 LDA TEMP7 ZHELP4 EOR TEMP11 ROL TEMP11 ADC TEMP10 ; ZHELP1 ; SLOW DOWN LDY ZPOSP0-1,X CPY #ZVIS BCC ZHELP2 BIT PROGST BVS ZHELP7 ;PLANET/TRENCH BIT GAMEST BMI ZHELP7 ;WANDERING CPY #$D0 BCS ZHELP2 LDA #$FE BNE ZHELP8 ;JMP ZHELP7 LDA ATRACT LSR LSR AND #$01 ORA #$FE ;SLOW DOWN ZHELP8 LDY IQWARP CPY #$F6 BCS ZHELP2 SBC #$01 ;GO A LITTLE FASTER ,C=0 ; ZHELP2 ; PACK Z TAY BMI ZHELP5 CMP #$10 BCC ZHELP6 LDA #$0F BCS ZHELP6 ;JMP ZHELP5 CMP #$F0 BCS ZHELP6 LDA #$F0 ZHELP6 AND #$1F STA TEMP10 ZHEL99 RTS ; ; ; PREHLP ; FOR X AND Y ONLY LDY #$00 STY TEMP11 CMP #$80 BCC PREHL1 DEC TEMP11 PREHL1 EOR TEMP11 LSR LSR CMP TEMP7 BCC PREHL2 LDA TEMP7 PREHL2 TAY LDA BRNT20,Y EOR TEMP11 ROL TEMP11 ADC TEMP10 PREHL5 ; PACK BPL PREHL3 EOR #$FF JSR PREHL3 EOR #$1F STA TEMP10 RTS PREHL3 TAY CPY #$28 BCC PREHL4 LDY #$27 PREHL4 LDA BRNTB7,Y STA TEMP10 RTS ; ; POSTH1 CLC ;TYPE 1 POSTHP STA TEMP11 AND #$E0 ORA TEMP10 BCC POSTH2 CMP TEMP11 BEQ POSTH2 EOR TEMP11 AND #$10 BEQ POSTH4 LDA #$FE POSTH4 BCS POSTH3 EOR #$FF POSTH3 ADC TEMP11 SEC RTS POSTH2 CLC RTS ; ; EXCHNG ; EXCJAMGE PBK X-1 WITH X-2 LDA HVERP0-1,X LDY HVERP0-2,X STA HVERP0-2,X STY HVERP0-1,X EXCHN1 ; NO VERT EXCHANGE LDA ZDELP0-1,X LDY ZDELP0-2,X STA ZDELP0-2,X STY ZDELP0-1,X LDA HHORP0-1,X LDY HHORP0-2,X STA HHORP0-2,X STY HHORP0-1,X LDA ZPOSP0-1,X LDY ZPOSP0-2,X STA ZPOSP0-2,X STY ZPOSP0-1,X LDA YDELP0-1,X LDY YDELP0-2,X STA YDELP0-2,X STY YDELP0-1,X LDA XDELP0-1,X LDY XDELP0-2,X STA XDELP0-2,X STY XDELP0-1,X LDA HGRAP0-1,X LDY HGRAP0-2,X STA HGRAP0-2,X STY HGRAP0-1,X LDA IQPATH-1,X LDY IQPATH-2,X STA IQPATH-2,X STY IQPATH-1,X RTS ; ; ; ; BANK SELECT CODE ORG $0FCF RORG BANK1+$0FCF PON1 STA STROB4 ;JMP FFD2 JSR BRAIN STA STROB3 ;JMP DFD8 .byte $00,$00,$00 JSR HYPSRV STA STROB2 ;JMP EFE1 EXPOFF .byte $FF,$FC,$FD,$FA,$FA,$00,$00,$00 SWAPT5 .byte $01,$01,$02,$03 JSR CLOSE STA STROB3 ;JMP DFF3 BRNT14 .byte $00,$1F .byte $00 .byte "DOUG N" .word PON1 .word PON1 ; ; ; ********************** ; END INCLUDE BANK1.SRC ; ********************** ; ;END ; ; ********************************** ; VERSION 17.6 08-MAR-86 ;COPYRIGHT (C) 1986, DOUGLAS NEUBAUER ; INCLUDE BANK3.SRC FOR UNIV.SRC ; ********************************** ; ; ;********* seg bank3 ORG $1000 RORG BANK3 ; BEGIN BANK3 ;********* ; ; SCRTAB .byte $00,$1E,$33,$33,$33,$33,$33,$1E .byte $00,$3F,$0C,$0C,$0C,$0C,$3C,$1C .byte $00,$3F,$30,$30,$1E,$03,$23,$3E .byte $00,$1E,$23,$03,$06,$03,$23,$1E .byte $00,$06,$06,$3F,$26,$16,$0E,$06 .byte $00,$3E,$23,$03,$3E,$30,$30,$3F .byte $00,$1E,$33,$33,$3E,$30,$31,$1E .byte $00,$0C,$0C,$0C,$06,$03,$21,$3F .byte $00,$1E,$33,$33,$1E,$33,$33,$1E .byte $00,$1E,$23,$03,$1F,$33,$33,$1E .byte $00,$00,$00,$08,$1C,$3E,$00,$00 ;DOWN .byte $00,$00,$08,$18,$38,$18,$08,$00 ;LEFT .byte $00,$00,$00,$3E,$1C,$08,$00,$00 ;UP .byte $00,$00,$08,$0C,$0E,$0C,$08,$00 ;RIGHT .byte $00,$00,$66,$3C,$18,$3C,$66,$00 ;X .byte $00,$00,$00,$00,$00,$00,$00,$00 ;BLANK ; SCANNER .byte $00,$FB,$0B,$0B,$FB,$C3,$C3,$FB .byte $00,$D9,$19,$19,$1F,$19,$19,$DF .byte $00,$65,$6D,$6D,$7D,$75,$75,$65 .byte $00,$97,$B6,$B6,$F7,$D6,$D6,$97 .byte $00,$B6,$36,$34,$BE,$32,$32,$BE ; JUMP .byte $00,$78,$CC,$0C,$0C,$0C,$0C,$3E .byte $00,$79,$CD,$CD,$CD,$CD,$CD,$CD .byte $00,$8D,$8D,$AD,$AD,$FD,$DD,$8D .byte $00,$80,$83,$83,$F0,$9B,$9B,$F0 ; COPYRIGHT .byte $00,$00,$F7,$95,$87,$80,$90,$F0 .byte $47,$41,$77,$55,$75,$00,$00,$00 .byte $03,$00,$4B,$4A,$6B,$00,$08,$00 .byte $80,$80,$AA,$AA,$BA,$22,$27,$02 .byte $00,$00,$11,$11,$17,$15,$17,$00 .byte $00,$00,$77,$55,$77,$54,$77,$00 ; FUELT1 .byte $7F,$7E,$7C,$78,$70,$60,$40,$00 ; CHTAB8 ; CHART GRAPHICS .byte $00,$00,$00,$00,$00,$00,$00 ;BLANK ; SHARE 1 LD107 .byte $00 SMSKTB .byte $01,$02,$04,$08,$10,$20,$40,$80 .byte $00,$00,$66,$3C,$18,$3C,$66,$00 ;X .byte $00,$08,$2A,$1C,$7F,$1C,$2A,$08 ;GOOD .byte $00,$FF,$80,$BA,$AA,$BB,$80,$E0 ;TRN .byte $00,$18,$99,$C3,$E7,$C3,$99,$18 ;BLK .byte $00,$80,$40,$60,$72,$FF,$00,$80 ;FIGH .byte $00,$00,$E8,$98,$5A,$39,$1F,$00 ;BAD .byte $00,$00,$C3,$99,$FF,$99,$C3,$00 ;PIRATE .byte $00,$18,$3C,$FF,$18,$FF,$3C,$18 ;PLN .byte $00,$08,$1C,$08,$03,$E7,$B6,$9C ;HOL .byte $00,$1C,$26,$4E,$1C,$18,$18,$0E ;COBRA .byte $00,$08,$81,$00,$10,$00,$81,$10 ;WALL ; COMPANY NAME .byte $00,$F2,$D8,$D8,$D8,$D8,$D8,$F0 .byte $00,$CD,$DD,$DD,$FD,$ED,$EC,$CC .byte $00,$EF,$8D,$CD,$8D,$ED,$00,$00 .byte $00,$7A,$6A,$7B,$6A,$7B,$00,$00 .byte $00,$BD,$B5,$B5,$B5,$B5,$00,$00 .byte $00,$ED,$8F,$EF,$8D,$EF,$00,$00 ; SOME TARG GRA .byte $18,$3C,$3C,$3C,$18 ;MOON/CRA .byte $24,$3C,$18,$7E,$18 ;MAN .byte $FF,$81,$81,$FF,$FF ;LZ ; ; ; .byte $A0,$90 XTABLE .byte $71,$61,$51,$41,$31,$21,$11,$01 .byte $F1,$E1,$D1,$C1,$B1,$A1,$91,$72 .byte $62,$52,$42,$32,$22,$12,$02,$F2 .byte $E2,$D2,$C2,$B2,$A2,$92,$73,$63 .byte $53,$43,$33,$23,$13,$03,$F3,$E3 .byte $D3,$C3 ; ; ; SCRKER ; SETUP SCORE ; DISPLAY PNTR 654321 LDY #$07 SCRKR4 LDX #$F0 SKRKR3 ; ENTRY STA WSYNC STA ADDEL STX TEMP7 STX TEMP5 LDA #$10 STA VBLANK ;TURN OFF STX PNTR3+1 STX PNTR4+1 STX PNTR5+1 STX PNTR6+1 STA HDELP1 STA REFP0 STA REFP1 LDA #$00 STA HPOSP0 STA HPOSP1 STA WSYNC STA ADDEL ; NEXT LINE SETUP STA GRAFP0 STY STAK1 LDA #$03 STA SIZPM0 STA SIZPM1 STA VDELP0 STA VDELP1 STA CLRDEL ; SCRKR1 ; DISPLAY SCORE LDY STAK1 LDA (PNTR1),Y STA STAK2 STA WSYNC STA ADDEL LDA (PNTR2),Y TAX LDA (PNTR6),Y STA GRAFP0 LDA (PNTR5),Y STA GRAFP1 LDA (PNTR4),Y STA GRAFP0 LDA (PNTR3),Y LDY STAK2 STA GRAFP1 STX GRAFP0 STY GRAFP1 STA GRAFP0 DEC STAK1 BNE SCRKR1 LDA #$00 STA VDELP1 STA GRAFP0 STA GRAFP1 WAIT1L ; ENTRY STA WSYNC STA ADDEL RTS ; ; CHART LDY #$08 JSR LDSCR4 JSR SCRKER ; SETUP CHART STA VDELP0 LDA #$17 STA STAK1 LDA HCOLP1 ;CHART COLOR ORA #$0E STA COLPM0 STA COLPM1 LDX #$A0 STA HPOSP0 STA HPOSM0 STX HDELM1 LDY #$C0 LDX #$0A STA HPOSM1 STA HPOSP1 STY HDELM0 EOR #$22 STA COLPF CHAR98 STA WSYNC STA ADDEL LDA #$F1 STA TEMP7,X LDY #$9F NOP NOP NOP NOP NOP DEX STA CLRDEL BPL CHAR98 ; CHART2 ; DISPLAY CHART ; LINE 1 SETUP LDA #$1F STA WSYNC STA ADDEL ; LIN 2 STA GRFPF1 STY GRFPF2 STA GRAFM0 STA GRAFM1 LDX #$05 CHAR82 DEX BPL CHAR82 STX GRFPF2 LDY STAK1 BMI CHAR86 LDX #$0C LDA #$00 STA GRFPF2 CHART5 STA WSYNC STA ADDEL ; LINES 3,4,5 TYA AND #$FE EOR #$0C BEQ CHAR85 LDA #$10 CHAR85 STA GRFPF1 LDA.wy CHTBLK,Y AND #$F0 LSR STA PNTR1-2,X DEX DEX LDA.wy CHTBLK,Y AND #$0F ASL ASL ASL STA PNTR1-2,X DEY DEX DEX BNE CHART5 ; STY STAK1 LDY #$07 CHART1 LDA (PNTR1),Y STA WSYNC STA ADDEL STA STAK2 LDA (PNTR6),Y STA GRAFP0 LDA (PNTR3),Y STA GRAFP1 LDA (PNTR4),Y TAX LDA (PNTR5),Y NOP STA GRAFP0 NOP STX GRAFP0 LDX STAK2 LDA (PNTR2),Y STA GRAFP1 DEY STX GRAFP1 BPL CHART1 STA WSYNC STA ADDEL ; LINE 1 LDA #$10 STA GRFPF1 ; Y = FF BIT STAK1 BPL CHAR87 LDY #$9F CHAR87 JMP CHART2 CHAR86 ; FINISH LINE 2 LDA HCOLP1 ADC #$C8 TAX STA WSYNC STA ADDEL ; LINE 3, ALL DONE CHART LDA #$00 STA GRFPF1 STA GRFPF2 STA GRAFM0 STA GRAFM1 LDY #$02 LDA #$A8 ;JUMP JSR LDSCOR LDA JMPTIM AND #$0F ASL ASL ASL STA PNTR1 LDA JMPTIM AND #$F0 LSR STA PNTR2 JSR SCRKER LDY #$08 JSR LDSCR1 ; WAIT ; FALL THRU TO SCANDS ; ; SCANDS STA WSYNC STA ADDEL ; LINE 1 LDA #$00 STA VDELP0 STA VDELM2 STA GRAFP0 STA GRAFP1 STA GRAFM2 STA SIZPM0 STA COLPF ; RANGE LDX TARNUM LDA ZPOSP0-1,X CMP #$40 BCC SCAND8 ADC #$3F ROR SCAND8 TAY LSR AND #$78 STA PNTR5+0 TYA AND #$0F TAY LDA SCNTB1,Y STA PNTR5+1 LDA FUEL LSR LSR LSR STA WSYNC STA ADDEL ; LINE 2 LDY #$01 STY PRIOR BIT PROGST BPL SCAN10 ; COPYRIGHT STY COLBK LDA #$C7 LDX #$FF TXS LDX #$2C JSR LDSCOR LDY #$08 JSR SCRKR4 LDA #$68 ;TITLE LDX #$2A LDY #$01 JSR LDSCOR LDX #>CHTAB8 LDY #$07 JSR SKRKR3 LDY #$04 ;WAIT JMP HORZ11 SCAN10 ; HORIZ STA STAK1 ;TEMPORARY REG SEC LDA HHORP0-1,X SBC CENTER CLC ADC #$28 CMP #$50 BCC SCAND1 CMP #$A8 LDA #$50 BCC SCAND1 LDA #$00 SCAND1 LSR TAY LDA #$70-9 ;X CPY #$13 BEQ SCAND5 LDA #$68-9 ;RT BCS SCAND5 LDA #$58-9 ;LT SCAND5 STA PNTR2 LDA XTABLE,Y STA HDELP0 STA WSYNC STA ADDEL ; LINE 3 ; HPOSP0 AND #$0F TAY LDA #>MASKTB STA PNTR6+1 LDA #$B8 STA COLPM1 LDA #$F2 STA COLBK LDA #$00 STA GRAFM0 LDA #>SCRTAB STA PNTR2+1 STA PNTR3+1 SCAND6 DEY BNE SCAND6 STA HPOSP0 LDA HGRAP0-1,X AND #$78 LSR LSR LSR TAY STA WSYNC STA ADDEL ; LINE 4 LDA #$04 STA SIZPM1 ; VERTICAL LDA HVERP0-1,X CLC ADC #$48 LSR LSR LSR LSR STA PNTR1 ;HOLD REG LDX #$0E STA CLRDEL STA HPOSP1 ; NUMBERS POSITION LDA #$10 STA HDELM2 LDA #$F0 STA HDELP1 STA HPOSM2 ;CROSSHAIRS POSITION LDA SCNTB4,Y BIT ONESHT BVC SCAN11 LDA RANDOM TAX SCAN11 STA PNTR4 STX COLPM0 LDX #$03 STA WSYNC STA ADDEL STX GRAFM2 STX GRFPF1 ;DISP 1ST LINE SCANNER LDX #$FF STX GRFPF2 LDX #$70-9 ;X LDA PNTR1 CMP #$08 BEQ SCAND7 LDX #$60-9 ;UP BCS SCAND7 LDX #$50-9 ;DWN SCAND7 STX PNTR3 LDA #CHTAB8 STA PNTR1+1 STA CLRDEL LDY #$0F LDA #$01 ;C=1 ; SCAND2 ; DISPLAY SCANNER AND (PNTR6),Y SBC #$01 STA WSYNC STA ADDEL AND (PNTR1),Y STA GRAFP0 LDA TACTB1,Y STA GRFPF2 LDA (PNTR2),Y ; LEFT NO. LDX TACTB2,Y BMI SCAND3 STA GRAFP1 LDA PNTR4 ; SCANNER COLOR STA COLBK STX PRIOR LDA (PNTR3),Y ; RIGHT # STA GRAFP1 SCAND4 SEC LDX #$F2 ;BAK COLOR LDA #$01 STA PRIOR STX COLBK DEY BPL SCAND2 BMI SCAN33 ;JMP SCAND3 STX PRIOR LDA PNTR5 STA PNTR2 LDA PNTR5+1 STA PNTR3 JMP SCAND4 SCAN33 ; ; STA WSYNC STA ADDEL ; SETUP FUEL LDA #$00 STA GRAFP0 NOP STX COLPF ;BAKCOL LDX LIVES LDA LIVTAB,X STA GRFPF0 LDA LIVTAB+1,X STA GRFPF1 LDA #$34 STA PRIOR LDA STAK1 ;HOLDS FUEL LSR LSR TAY LDA FUELT1,Y STA GRFPF2 LDY STAK1 STA HPOSP0 STA HPOSP1 LDA XTABLE-2,Y STA HDELM2 STA WSYNC STA ADDEL AND #$0F CLC ADC #$07 TAX DISP70 DEX BPL DISP70 LDA #$10 STA HDELP1 LDA ATRACT STA HPOSM2 STA WSYNC STA ADDEL LDX #$F2 ;BAKCOL LDY FUEL CPY #$01 BCC DISP72 CPY #$20 BCS DISP71 LDY #$52 ;#AUDLOW-J STY CH0SHD ;LOW FUEL AND #$10 BNE DISP72 DISP71 LDX #$1A DISP72 LDY #$04 NOP NOP NOP NOP STA CLRDEL ; DISP73 ; DISPLAY FUEL LDA #$8E STA WSYNC STA ADDEL STA COLPM0 STA COLPM1 LDA #$04 STA SIZPM0 STA SIZPM1 LDA FUELT3,Y STA GRAFP0 STA GRAFP1 LDA FUELT4,Y STA GRAFP0 LDA FUELT2,Y STA GRAFP1 LDA #$03 STA SIZPM0 STA SIZPM1 STX COLPM0 STX COLPM1 LDA FUELT5,Y STA GRAFP0 STA GRAFP1 DEY BPL DISP73 JMP MAIN2 ; SCREEN ALL DONE ; ; ; FUELT2 .byte $EE,$88,$E8,$88,$E8 FUELT5 .byte $FF,$00,$EE,$CC FUELT3 .byte $88,$88,$CC,$EE,$CC FUELT4 .byte $8E,$8A,$EA,$8A,$EA ; ; ; MASKTB BLOCK TACTB1 .byte $FF,$23,$03,$03,$03,$03,$03,$07 .byte $FF,$07,$03,$03,$03,$03,$03,$23 MASKTB SCNTB4 .byte $44,$44,$44,$B4,$B4,$55,$55,$87 .byte $85,$85,$87,$87,$15 TACTB2 .byte $05,$05,$25,$05,$25,$05,$25,$05 .byte $85,$05,$25,$05,$25,$05,$25,$05 ; END MASKTB BLOCK ; ; SCNTB1 .byte $00,$08,$10,$18,$20,$20,$28,$28 .byte $30,$30,$38,$38,$40,$40,$48,$48 ; SCNTB2 .byte $14,$44,$4C,$9F,$A4,$2C,$1C,$5B .byte $9A,$9A,$3C,$9A,$14 ; ; ; ; LDSCR3 ; ENTRY FROM MESSRV LDY #$01 LDSCR4 ; ENTRY FROM CHART LDX #$48 LDA #$78 ;SCANNER LDSCOR ; WORD TO SCORE KERNAL ; A=PNTR,X=COLOR,Y=WAIT STX COLPM0 STX COLPM1 CLC STA PNTR6 ADC #$08 STA TEMP4 ADC #$08 STA PNTR4 ADC #$08 STA PNTR3 ADC #$08 STA PNTR2 ADC #$08 STA PNTR1 LDSCR1 STA WSYNC STA ADDEL DEY BNE LDSCR1 RTS ; ; ; ; ; MESSRV LDA NEWATT CMP #$40 BCC MESSR1 BIT ATRACT BPL LDSCR3 MESSR1 LDA #$1E STA COLPM0 STA COLPM1 ;SCORE COLOR LSR ;A = 0F AND SCORE ASL ASL ASL STA PNTR2 LDA #$F0 AND SCORE LSR STA PNTR3 LDA SCORE+1 AND #$0F ASL ASL ASL STA PNTR4 LDA SCORE+1 AND #$F0 LSR STA PNTR5 LDA SCORE+2 AND #$0F ASL ASL ASL STA PNTR6 LDY #$78 ;BLANK TYA LDX PROGST CPX #$CE ;PWR UP BEQ MESSR6 LDA #$00 MESSR6 STA PNTR1 ; LDX #$0A MESSR2 LDA PNTR1,X BNE MESSR3 STY PNTR1,X DEX DEX BNE MESSR2 MESSR3 RTS ; ; ; CRAZY ; CANT CROSS PAGE BOUNDARY .byte $60,$71,$50,$61,$40,$51,$30,$41 .byte $20,$31,$10,$21,$00,$11,$F0,$01 .byte $E0,$F1,$D0,$E1,$C0,$D1,$B0,$C1 .byte $A0,$B1,$90,$62,$73,$52,$63,$42 .byte $53,$32,$43,$22,$33,$12,$23,$02 .byte $13,$F2,$03,$E2,$F3,$D2,$E3,$C2 .byte $D3,$B2,$C3,$A2,$B3,$92,$64,$75 .byte $54,$65,$44,$55,$34,$45,$24,$35 .byte $14,$25,$04,$15,$F4,$05,$E4,$F5 .byte $D4,$E5,$C4,$D5,$B4,$C5,$A4,$B5 .byte $94,$66,$77,$56,$67,$46,$57,$36 .byte $47,$26,$37,$16,$27,$06,$17,$F6 .byte $07,$E6,$F7,$D6,$E7,$C6,$D7,$B6 .byte $C7,$A6,$B7,$96,$68,$79,$58,$69 .byte $48,$59,$38,$49,$28,$39,$18,$29 .byte $08,$19,$F8,$09,$E8,$F9,$D8,$E9 .byte $C8,$D9,$B8,$C9,$A8,$B9,$98,$6A .byte $7B,$5A,$6B,$4A,$5B,$3A,$4B,$2A .byte $3B,$1A,$2B,$0A,$1B,$FA,$0B,$EA .byte $FB,$DA,$EB,$CA,$DB,$BA,$CB,$AA ; ; ; ; ; *** END KERNALS FOR BANK 3 ***** ; ; ; ; ; INIT SECTION INIT SEI CLD LDX #$00 ;COLD START LDY #$CE ; GAME OVER INIT2 ; WARM START: GAME RESET/SELECT LDA #$00 INIT1 STA VSYNC,X INX BNE INIT1 STY PROGST DEX ;X=FF TXS ; LDA #$60 STA JMPTIM LDA #$15 STA CURSOR LDA #$04 STA LIVES LDY #$07 JSR DOOR24 ;SETUP CHART ; INIT3 ; ENTRY FROM MAN DIED LDY #$FF STY FUEL INY STY ONESHT ;Y=0 ,CLEAR DAMAGE LDA #$50 STA CENTER LDY #$40 ;CRATERS LDX #VSHIP DEC LIVES BNE INIT6 LDX #$00 INIT8 ; ENTRY FROM END GAME (DOOR) LDA #$CA STA PROGST INIT6 STX HVERP1 ;REDUNDANT LDA PROGST AND #$84 BEQ INIT7 ;MAN DIED,GAME NOT OVER ; RESET TO PLANET LDA #CRATYP-W STA IQPNTR LDA #$40 STA GAMEST ;YOUR PLANET INIT4 ; ENTRY FROM SHIP TAKEOFF STX HVERP1 ;SHIP VERT LDA #PBLK STA HGRAP1+3 LDX #$03 INIT10 LDA #$00 STA XDELP0,X STA ZDELP0,X LDA INTAB1,X STA ZPOSP0,X LDA INTAB2,X STA HHORP0,X STY HGRAP0,X DEX BPL INIT10 ; INIT7 ; MAN DIED GAME NOT OVER LDA #$58 STA PLINES LDA #$80 STA ZPOSP1 STA ZPOSP1+1 INIT5 ; ENTRY FROM SECTOR IS EMPTY LDX #$FF TXS ;DEFINE STACK LDA SHIPST AND #$10 ASL AND SHIPST STA SHIPST ;IF SHIPST=30 THEN =20 INX ;X=0 STX VELOC STX CH0SHD STX CH1SHD ; ; ; END INIT SECTION ; MAIN ; ; VBLANK SERVICE ; LDY HHORM2 BIT PROGST BVC MAIN11 LDY #$88 ;PLN/TRN FIXED MAIN11 LDA CRAZY,Y LDY RTIMER ;FOR RANDOM MAIN70 LDX RTIMER ;TEMP *** BPL MAIN70 STA WSYNC LDX #$FF STX VSYNC STA HDELM2 AND #$0F LSR BCS HORIZ1 ;DELAY HORIZ1 SEC NOP SBC #$01 BPL HORIZ1 STA HPOSM2 STA WSYNC STA ADDEL JMP EXIT3 ;TO MOVER ; MAIN9 LDX #$03 HORIZ17 LDY HHITP0,X LDA CRAZY,Y STA HHITP0,X DEX BPL HORIZ17 ; MAIN8 JSR MESSRV ; HACKSEI NOP ; TEMPORARY $78 ********* ; ; ; END VBLANK SERVICE ; ; BIT SHIPST BMI HORZ15 LDY HHORP1 LDA CRAZY-$2D,Y STA HHORP1 HORZ15 LDX HOLDM2 BEQ HORZ14 LDA CRAZY-$2D,X STA HHORP1+1 HORZ14 BIT PROGST BVC HORZ16 SEC ;PLN/TRN LDA #$A0 SBC VWALL TAX LDA CRAZY+8,X STA HOLDM0 LDY VWALL LDA CRAZY-$0B,Y STA HOLDM2 HORZ16 LDY THGRP1 HORIZ LDX $0285 ;TEMP *** BPL HORIZ STA WSYNC CLC LDA HORTB1,Y ADC RANDOM+1 ;HOLD CENTER TAX LDA CRAZY,X STA HDELM1 AND #$0F LSR BCS HORIZ4 ;DELAY HORIZ4 SEC NOP SBC #$01 BPL HORIZ4 STA HPOSM1 STA WSYNC ;?? NEEDED ?? ; ; SETUP FOR SCREEN LDX #$00 LDA PROGST LSR BCS HORIZ5 ;SCREEN PROTECT AND #$18 BNE HORIZ8 ; NORMAL LDA LJOYT10,Y STA RANDOM+1 ;HDELM1 LDY #NULL SBC #$00 STA WSYNC STA ADDEL STA MOON2+1 JMP.ind (VECTP1) ; ; DIS100 ; DISPLAY P1+3 LDA (MISC1),Y STA GRAFP1 LDA (MISC2),Y STA COLPM1 DIS102 ; ENTRY FROM WAIT P1+3, 27CY STX HDELP0 DEY LDA (STARS),Y STA GRAFM2 ORA #SCLR STA COLPF ; LDA (MISC1),Y TAX BEQ DIS101 ;ALL DONE LDA (MISC2),Y STA COLPM1 JMP.ind (VECTP0) DIS101 LDA #PHOGR1 STA MISC1+1 LDA #>DIS300 STA VECTP1+1 ;PAGE CROSS !!!!! LDA #>YCL1 ;SHIP COLOR STA MISC2+1 LDA #DIS700 ;SHIP GO! STA VECTP1+1 LDA #DIS205 STA VECTP0+1 STA RANDOM+1 LDA STARS+1 STA HDELP1 STA WSYNC STA ADDEL AND #$0F LDX #>STARTB STX STARS+1 LDX #>DIS150 STX VECTP1+1 LSR BCS DISPL2 ;DELAY DISPL2 BEQ DISPL9 DISPL1 SEC NOP SBC #$01 BNE DISPL1 NOP DISPL9 STA HPOSP1 ; 2 SPARE CY STA WSYNC STA ADDEL LDX HGRAP1+3 LDA MTABL2,X CPX #$48 BCC DISPL7 LDA #FGR8 .byte Z,Z,Z,Z,Z,Z,Z,Z Z EQM >PGR8 .byte Z,Z,Z,Z,Z,Z,Z,Z Z EQM >DGR8 .byte Z,0,0,0,Z,Z,Z,Z Z EQM >HGR8 .byte Z,Z,Z,Z,Z,Z,Z,Z Z EQM >KGR8 .byte Z,Z,Z,Z,Z,Z,Z,Z Z EQM >BGR8 .byte Z,Z,Z,Z,Z,Z,Z,Z Z EQM >EGR6 .byte 0,0,Z,Z,Z,Z,Z,Z Z EQM >XGR8 .byte Z,Z,Z,Z,Z,Z,Z,Z Z EQM >RGR8 .byte Z,Z,Z,Z,Z,Z,Z,Z Z EQM >CGRF .byte Z,Z,Z,Z,Z,Z,Z,Z .byte Z,Z,Z,Z .byte Z,Z,Z,Z,Z,Z,Z,Z .byte Z,Z,Z,Z ; ; ; ; MTABL4 ; MOON2+0, HDEL .byte $00,$00,$00,$00,$00,$00,$00,$00 .byte $00,$00,$00,$00,$00,$00,$00,$00 .byte $00,$00,$00,$00,$00,$00,$00,$00 .byte $00,$00,$00,$00,$00,$00,$00,$00 .byte YPL4 STA MOON3+1 BNE TRN463 ;JMP ; ; PLN740 ; HPOSP1 STA COLBK LDA #$00 STA GRAFP1 STX VECTP1 LDA HOLDP1 LSR BCS PLN742 ;DELAY PLN742 BNE PLN741 STA HPOSP1 ;CY 39-40 DEY JMP PLN746 PLN741 DEY CMP #$02 BCC PLN743 LDA (STARS),Y NOP NOP NOP STA HPOSP1 ;CY-57-58 PLN744 AND CROSP1 BEQ PLN745 LDA #SURCOL PLN745 LDX #$00 JMP.ind (VECTP0) PLN743 ; CY 48-49 STA.w HPOSP1 ;STA ABS HPOSP1 (ORIG=DB $8D,HPOSP1,0) PLN746 LDA (STARS),Y JMP PLN744 ; ; ; HYPER ; SETUP HYPERSPACE LDA ATRACT+1 ;SHIP COLOR STA MISC2 LDA #>HYP730 STA VECTP1+1 LDA #SHP4 STA MISC1+1 STA MISC2+1 LDA HGRAP1 STA MISC1 LDA #>LINTB4 STA STARS+1 LDA #$10 STA CROSP1 STA WSYNC STA ADDEL LDA #$02 STA GRAFM2 STA GRAFM0 LDA #>HYP200 STA VECTP0+1 LDA #PLN198 ;TEMP, DEV.SYS.ONLY STA MISC1+1 LDA #>PLN198+1 STA MISC2+1 ; END TEMP LDX IQPATH-1 STX STARS LDA PROGST AND #$08 BEQ TRN140 STA WSYNC STA ADDEL ; PLANET SETUP DEX DEX STX MOON2 LDA XDELP0-1 ;MTNCOL STA COLPF LDA #>SURTB3 STA STARS+1 STA MOON2+1 LDA #PLN400 STA VECTP0+1 LDA #>PLN145 STA VECTP1+1 LDX #SURTB5 STA STARS+1 NOP NOP NOP NOP LDX HOLDM0 LDA HOLDM2 STA HDELM2 STX HDELM0 STA WSYNC STA ADDEL LDY #$20 STY SIZPM0 AND #$0F LSR BCS TRN144 ;DELAY TRN144 SEC NOP SBC #$01 BPL TRN144 STA HPOSM2 STA WSYNC STA ADDEL JMP TRN146 ;HUH? ; ; PLN100 ; MOUNTAINS LDX #$06 PLN101 LDA PLNTB1-1,X STA GRFPF0 LDA PLNTB2-1,X STA GRFPF1 LDA PLNTB3-1,X STA GRFPF2 LDA PLNTB4-1,X STA GRFPF0 LDA PLNTB5-1,X DEY STA GRFPF1 LDA PLNTB6-1,X STA GRFPF2 LDA #$08 CPY HVERP1 BEQ PLN104 LDA #$00 PLN104 STA GRAFP1 DEX STA WSYNC STA ADDEL BNE PLN101 ; SETUP PLANET ; X=0 LDA XDELP0-1 STA COLBK STX GRFPF0 STX GRFPF1 STX GRFPF2 DEY LDA #SHP4 STA MISC1+1 STA MISC2+1 LDA ATRACT+1 ;SHIP COLOR STA MISC2 LDA #PLN370 STA VECTP1+1 LDA #$00 ;COLBK JMP.ind (VECTP0) ; ; TRN146 ; CONTINUE SETUP TRENCH TXA AND #$0F LSR BCS TRN145 ;DELAY TRN145 SEC NOP SBC #$01 BPL TRN145 STA HPOSM0 STA WSYNC STA ADDEL LDA #>TRN400 STA VECTP0+1 LDA #>PLN370 STA VECTP1+1 LDA #$FF STA GRFPF0 STA GRFPF1 STA GRFPF2 LDA #$00 STA HDELM2 STA WSYNC STA ADDEL LDA #SHP4 STA MISC1+1 STA MISC2+1 LDA ATRACT+1 STA MISC2 ;SHIP COLOR LDA #