123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251 |
- ; GDAC2.S
- ;THIS SUBROUTINE DETECTS A COLLISION BETWEEN A HERO MISSLE AND AN ENEMY SHIP
- ;
- ;
- COLDET1 LDX #56 ;INIT PTR TO BEGINNING OF HERO MISSLES
- NEWMIS LDA TYPE,X ;SEE IF MISSLE EXISTS
- BEQ NXMIS
- LDY #0
- NXEN LDA TYPE,Y ;SEE IF ENEMY EXISTS
- BEQ NXENMY
- LDA YCORD,X ;TEST FOR COLLISION
- CLC ;IF: (YSHIP < YMIS+7) AND
- ADC #4 ; (YSHIP+10 > YMIS) AND
- CMP YCORD,Y ; (XSHIP < XMIS+4 < XSHIP+7)
- BCC NXENMY
- LDA YCORD,Y
- CLC
- ADC #6
- CMP YCORD,X
- BCC NXENMY
- LDA TYPE+62 ;SEE IF SECOND SHIP ACTIVE
- BEQ MONODTCT
- LDA XCORD,Y
- CLC
- ADC #3
- CMP XCORD,X
- BCC NXENMY
- LDA XCORD,X
- CLC
- ADC #3 ;SEE IF SHIP IS BETWEEN MISSILES
- CMP XCORD,Y
- BEQ NXENMY
- ADC #6
- CMP XCORD,Y
- BCC NXENMY
- JSR COLLIS1
- RTS
- ; JMP NXMIS
- MONODTCT LDA XCORD,X
- CLC
- ADC #3
- CMP XCORD,Y
- BCC NXENMY
- LDA XCORD,Y
- CLC
- ADC #2
- CMP XCORD,X
- BCC NXENMY
- JSR COLLIS1 ;FOUND A COLLISION
- RTS
- ; JMP NXMIS
- NXENMY INY ;INC ELISTPTR TO NEXT ENEMY
- CPY #40 ;SEE IF CAPTD HERO
- BNE CHKPHERO
- LDA MODE+40
- CMP #6
- BCC CHKPHERO
- CMP #10 ;MODES 6 - 9 ARE SAFE FROM EXPLOSION
- BCS CHKPHERO
- SKIPHERO INY ;IF SO, DON'T CHECK FOR COLLISION
- CHKPHERO CPY #45 ;AND SEE IF AT END OF ENMYLIST
- BNE NXEN
- NXMIS CPX #57 ;INC MISPTR TO NEXT MISSLE AND SEE
- BNE NDONCOL ;IF AT END OF HMISLST
- RTS ;YES, SO RETURN FROM SUBROUTINE
- NDONCOL LDX #57 ;NO, SO CHECK NEW MISSLE AGAINST ALL
- JMP NEWMIS ;OF ENMYLIST
- ;
- ;
- ;THIS SUBROUTINE IS CALLED BY COLDET1 WHEN A COLLISION IS FOUND BETWEEN A HERO
- ;MISSLE (POINTED TO BY X REG) AND AN ENEMY SHIP (POINTED TO BY Y REG).
- ;
- COLLIS1 LDA TYPE,Y ;SEE IF IS BOSS SHIP AND FIRST SHOT
- AND #$7F ;TO HIT IT
- CMP #3
- BEQ COLLIXY
- CMP #4 ;SEE IF BLUE BOSS
- BNE COLLIXZ
- LDA MODE,Y ;SEE IF IN BOSS WAIT MODE
- AND #$8F ;LOOK AT MSB AND LOW 4 BITS
- CMP #3
- BNE COLLIXZ
- LDA #0
- STA WAITCNT ;CLEAR WAITCNT
- JSR SCRAPALL ;KILL TRACTOR BEAM
- JMP COLLIXX ;NOW HANDLE EXPLOSION
- COLLIXY LDA TYPE,Y ;CHANGE TO BLUE BOSS
- CLC
- ADC #1
- STA TYPE,Y
- LDA #14 ;BOSS HIT SOUND
- JSR TUNIN
- LDA #0 ;ZERO OUT MISSLE
- STA TYPE,X
- RTS
- COLLIXZ
- CMP #16 ;GREEN BOSS W/ CAPTURED HERO
- BNE DAK1
- LDA TYPE,Y
- CLC
- ADC #1
- STA TYPE,Y ;CHANGE TYPE TO BLUE BOSS W/ HERO
- LDA #14
- JSR TUNIN
- LDA #0
- STA TYPE,X ;ZERO OUT MISSILE
- RTS
- DAK1 CMP #17 ;BLUE BOSS W/ CAPTURED HERO
- BNE COLLIXX
- LDA WAITCNT ;SEE IF FIRST PICKED UP
- BEQ NOTRACTR
- LDA #0
- STA WAITCNT ;BOOT TRACTOR BEAM IF FIRST PICKED UP
- JSR SCRAPALL ;BOOT TRACTOR BEAM TUNE
- LDA #11 ;PUT IN 'PUT HERO BACK DOWN' MODE
- STA MODE+40
- BNE BIRDBUG1
- NOTRACTR
- LDA MODE,Y ;GET MODE OF BOSS
- BEQ HREAPR
- CMP #1
- BNE NOTHRP
- HREAPR LDA #5
- STA HEROREAP ;SET HERO REAPPEAR MODE
- ;MAY NEED TO STORE A 5 TO THE MODE HERE
- STX BOZO0
- LDX #40
- JSR COTBOATK
- LDX BOZO0 ;NEED TO SAVE THE X VALUE
- JMP BIRDBUG1 ;CONTINUE TO KILL BOSS
- NOTHRP LDA #8 ;HERO SPIN MODE
- STA MODE+40
- LDA #5
- JSR TUNIN ;TUNE 5 IS RELEASED HERO TUNE
- LDA #6
- JSR TUNIN ;TUNE 6 IS OTHER CHANNEL OF TUNE
- BIRDBUG1 LDA #4
- STA TYPE,Y ;HANDLE LIKE REGULAR BLUE BOSS
- COLLIXX CPY #40 ;SEE IF CAPTURED HERO SHIP
- BEQ NOATC
- ; DEC NUMFLY
- LDA MODE,Y ;SEE IF IN SHIFT OR EXPAND MODE
- BEQ NOATC
- CMP #1 ;DEC AIRBORNE IF WAS FLYING
- BEQ NOATC
- ;NOW, DEC IF SHOT WHILE IN ORIENT MODE
- DEC AIRBORNE
- NOATC CPY #40 ;SEE WHAT TYPE ENEMY SHIP WAS KILLED
- BNE NOTHER ;SEE IF HERO SHIP
- LDA #27 ;HERO DEATH SOUND
- JSR TUNIN
- LDA #28 ;HERO DEATH SOUND
- JSR TUNIN
- LDA #$00 ;HERO DEATH SCORE
- STA HEROREAP
- STA MODE+40 ;RESET MODE OF DEAD HERO
- JSR CLEARBOS ;CLEAR BOSS WHICH CARRIED HERO
- LDA #$01
- STA TEMP4
- LDA #11 ;ONE THOUSAND TYPE
- STA SCRTEMP
- JMP NOATCX
- NOTHER LDA CHALSTG ;SEE IF CHALLENGING STAGE
- BEQ NOTHER0
- SED
- LDA CHALSCR
- CLC
- ADC #1 ;INCREMENT SCORE FOR CHLNGING STAGE
- STA CHALSCR
- CLD
- INC WAVESCR ;INCREMENT SCORE FOR THIS WAVE
- NOTHER0 LDA TYPE,Y
- AND #$7F
- CMP #1 ;SEE IF BLUE SHIP
- BEQ META10
- CMP #13
- BNE NOTBLU
- LDA CHALSTG
- BNE META10 DONT GIVE 1000 BONUS IF CHAL STAGE
- INC SCORPCNT
- LDA SCORPCNT
- CMP #3 ;SEE IF HAVE 2 ALREADY
- BNE META10
- LDA #11
- STA SCRTEMP ;GIVE THOUSAND BONUS
- LDA #$01
- STA TEMP4
- BNE NOATCX
- META10 LDA #12 ;BLUE DEATH SOUND
- JSR TUNIN
- LDA MODE,Y ;GET MODE OF DEAD SHIP
- BEQ LOWBLUE ;SEE IF IN SHIFTING MODE
- CMP #1 ;SEE IF IN EXPANSION MODE
- BEQ LOWBLUE ;IF SO, SCORE = 50
- LDA #$10 ;BLUE DEATH SCORE
- STA TEMP5
- BNE NOATCX
- LOWBLUE LDA #$05
- STA TEMP5 ;GIVE SCORE OF 50
- BNE NOATCX
- NOTBLU CMP #2 ;SEE IF RED SHIP
- BEQ ISREDX
- CMP #50
- BNE NOTREDX
- ISREDX LDA #11 ;RED DEATH SOUND
- JSR TUNIN
- LDA MODE,Y ;GET MODE OF DEAD SHIP
- BEQ LOWRED
- CMP #1
- BEQ LOWRED ;SEE IF IN SHIFT OR EXPAND MODE
- LDA #$16 ;RED DEATH SCORE
- STA TEMP5
- BNE NOATCX
- LOWRED LDA #$08
- STA TEMP5 ;GIVE SCORE OF 80
- BNE NOATCX
- NOTREDX
- LDA #10 ;BOSS DEATH SOUND (MUST BE BOSS)
- JSR TUNIN
- JSR ABOSSHIT
- ; ENTRY POINT FROM OTHER CODE SEGMENTS (I'M SORRY TO SAY)
- NOATCX
- LDA WAVESCR ;CHECK SCORE OF WAVE
- CMP #8 ;SEE IF PERFECT
- BNE NOTHOBON ;NO THOUSAND BONUS
- LDA #0
- STA WAVESCR
- LDA #$80
- STA BORNCNT PUT DELAY BEFORE NEXT WAVE
- LDA #$01
- STA TEMP4
- LDA CHALNUM ;SEE WHAT STAGE THIS IS
- CMP #4
- BMI THOBON
- LDA #$60
- STA TEMP5
- LDA #12
- BNE SIXTNBON
- THOBON LDA #11
- SIXTNBON STA SCRTEMP ;STORE 1000 SCORE BONUS
- NOTHOBON LDA #0 ;ZERO OUT MISSLE
- STA TYPE,X
- STA TYPE,Y ;ZERO OUT ENEMY SHIP
- JSR ENMYBOOM
- RTS
- ;
- ;THIS SUBROUTINE DETECTS A COLLISION BETWEEN THE HERO SHIP AND ANY ENEMY
- ;SHIP
- ;
- COLDET2 LDA TYPE+63 ;SEE IF HERO SHIP EXISTS
- BNE CONTC2
- NONIE RTS
- CONTC2 LDA FARREN
- BMI NONIE
- LDA CHALSTG DONT DETECT IF CHALLENGING STAGE
- BNE NONIE
- LDY #0 ;INIT PTR TO BEGINNING OF ENEMY SHIPS
- NXSHP LDA TYPE,Y ;SEE IF ENEMY SHIP EXISTS
- BEQ NXESHIP
- LDA YCORD,Y ;TEST FOR COLLISION
- CMP #162 ;IF: 161 < YSHIP < 181 AND
- BCC NXESHIP ; (HEROX + 7) > XSHIP AND
- CMP #181 ; (XSHIP + 7) > HEROX
- BCS NXESHIP
- LDA XCORD+63 ;(HEROX)
- CLC
- ADC #6
- CMP XCORD,Y
- BCC HERO2TST
- LDA XCORD,Y
- CLC
- ADC #6
- CMP XCORD+63 ;(HEROX)
- BCC NXESHIP
- JSR COLLIS2
- RTS NEW CODE
- HERO2TST LDA TYPE+62
- BEQ NXESHIP
- LDA XCORD+62
- CLC
- ADC #6
- CMP XCORD,Y ;MAKE SURE Y ISN'T TRASHED
- BCC NXESHIP
- LDA XCORD,Y
- CLC
- ADC #6
- CMP XCORD+62 ;(HEROX)
- BCC NXESHIP
- JSR COLLIS2A
- RTS
- NXESHIP INY ;INC ELISTPTR TO NEXT ENEMY
- CPY #45 ;AND SEE IF AT END OF ENMYLIST
- BMI NXSHP
- ;THIS CHECKS FOR COLLISION BETWEEN AN ENEMY MISSILE AND THE HERO SHIP
- LDY #46
- NXEMIS1 LDA TYPE,Y ;SEE IF ENEMY MISSLE EXISTS
- BEQ NXEMIS
- LDA YCORD,Y ;TEST FOR COLLISION
- CLC ;IF: (171 < YMIS+7) AND
- ADC #6 (181 > YMIS) AND
- CMP #171 ; (XHERO < XMIS+4 < XHERO+7)
- BCC NXEMIS
- LDA #180
- CMP YCORD,Y
- BCC NXEMIS
- LDA XCORD,Y
- CLC
- ADC #4
- CMP XCORD+63
- BCC NXEMIS ;MISSILE TOO FAR TO LEFT OF SHIP
- LDA XCORD+63
- CLC
- ADC #4
- CMP XCORD,Y
- BCC HERO2CHK ;MISSILE TOO FAR TO RIGHT OF SHIP
- JSR COLLIS3
- RTS
- HERO2CHK LDA TYPE+62 ;SEE IF 2ND HERO ACTIVE
- BEQ NXEMIS
- LDA XCORD+62 ;CHECK FOR HIT ON 2ND HERO
- SEC
- SBC #4
- CMP XCORD,Y
- BCS NXEMIS
- CLC
- ADC #7
- CMP XCORD,Y
- BCC NXEMIS
- JSR COLLIS3A
- RTS
- NXEMIS INY ;INC ELISTPTR TO NEXT ENEMY
- CPY #56 ;AND SEE IF AT END OF ENMYLIST
- BNE NXEMIS1
- RTS
- H2BOOM LDA #0 ;ZERO OUT SECOND SHIP
- STA TYPE+62
- STA MODE+63 ;RESET DUAL MODE
- LDA #52 ;STORE HERO EXPLOSION TYPE
- STA TYPE+65
- LDA XCORD+62
- SEC
- SBC #4
- STA XCORD+65 ;STORE XCORD FOR EXPLOSION
- LDA #7
- STA ANGLE+65
- LDA #168
- STA YCORD+65
- LDA #5
- STA ML+65
- LDA #0
- STA MODE+65
- RTS
- H1BOOM LDA #0 ;ZERO OUT HERO SHIP
- STA TYPE+63
- LDA #52 ;STORE HERO EXPLOSION TYPE
- STA TYPE+66
- LDA XCORD+63
- SEC
- SBC #4
- STA XCORD+66 ;STORE XCORD FOR EXPLOSION
- LDA #7
- STA ANGLE+66
- LDA #168
- STA YCORD+66
- LDA #5
- STA ML+66
- LDA #0
- STA MODE+66
- RTS
- ;
- ;THIS SUBROUTINE IS CALLED WHEN AN ENEMY SHIP RUNS INTO THE HERO SHIP
- ;
- COLLIS2A JSR H2BOOM
- JMP COLLIS2B
- COLLIS2 CPY #40
- BNE COLLIS2M
- LDA MODE+40 ;GET MODE OF SHIP
- CMP #9 ;SEE IF IN REUNITE MODE
- BNE COLLIS2M
- RTS ;DON'T DO ANYTHING
- COLLIS2M JSR H1BOOM
- LDA TYPE+62 ;SEE IF 2ND HERO ACTIVE
- BEQ COLLIS2B ;NO, GO ON
- LDA #5 ;RESET HERO SHIP
- STA TYPE+63
- LDA XCORD+62
- ; STA XCORD+63 ;SWITCH XCORDS
- STA HEROX
- LDA #0
- STA TYPE+62 ;KILL 2ND SHIP
- STA MODE+63 ;RESET DUAL MODE
- COLLIS2B LDA TYPE,Y ;SEE IF IS BOSS SHIP AND FIRST TIME
- AND #$7F ;HIT
- CMP #3
- BEQ COLL21
- CMP #16 ;SEE IF GREEN BOSS W/ HERO
- BNE COLLIS2G
- LDA #17
- STA TYPE,Y ;CHANGE TO BLUE BOSS W/ HERO
- JMP COLL22
- COLL21 LDA #4
- STA TYPE,Y ;CHANGE TO BLUE BOSS
- COLL22 LDA #9 ;HERO DEATH SOUND
- JSR TUNIN
- LDA #14 ;CHANGE TO BLUE BOSS SOUND
- JSR TUNIN
- LDX #58
- JMP TRYNXSP1
- COLLIS2G CMP #17 ;SEE IF IS BLUE BOSS W/ HERO
- BNE COLLIS2H
- LDA #8
- STA MODE+40 ;SET TO HERO SPIN MODE
- LDA #4 ;SET TO REG BLUE BOSS
- STA TYPE,Y
- LDA #5
- JSR TUNIN
- LDA #6
- JSR TUNIN ;HERO RELEASE SOUND
- COLLIS2H CPY #40 ;SEE IF IS CAPTURED HERO SHIP
- BNE NOTCAPH
- JSR CLEARBOS ;CLEAR BOSS THAT CARRIED HERO
- LDA #$01
- STA TEMP4
- LDA #11 ;ONE THOUSAND TYPE
- STA SCRTEMP
- LDA #0
- STA HEROREAP
- JMP ZAPHERO
- NOTCAPH
- ; DEC NUMFLY ;DEC NUMBER SHPS FLYING
- DEC AIRBORNE
- LDA TYPE,Y ;SEE WHAT TYPE OF ENEMY SHIP IT WAS
- AND #$7F
- CMP #1 ;SEE IF BLUE SHIP
- BEQ META11
- CMP #13
- BNE NOTBLUG
- META11 LDA #$10 ;BLUE DEATH SCORE
- STA TEMP5
- LDA FARREN
- CMP #4
- BNE DSBLFAR
- LDA SWCHA
- ASL A
- ASL A
- ASL A
- BCS DSBLFAR
- LDA #$FF
- STA FARREN
- JMP ZAPHERO
- DSBLFAR LDA #0
- STA FARREN
- JMP ZAPHERO
- NOTBLUG
- CMP #2 ;SEE IF RED SHIP
- BNE NOTREDXG
- LDA #$16 ;RED DEATH SCORE
- STA TEMP5
- JMP ZAPHERO
- NOTREDXG
- JSR ABOSSHIT ; HOW YOU PRONOUNCE IT IS YOUR OWN
- ; BUSINESS
- ; THIS IS AN ENTRY POINT FOR BIZARRE CODE SEGMENTS ABOVE
- ZAPHERO LDA #0 ; FORMERLY COLLIS2X
- STA TYPE,Y ;ZERO OUT ENEMY SHIP
- LDA #9 ;HERO DEATH SOUND
- JSR TUNIN
- TRYNXSP1
- JSR ENMYBOOM
- RTS ;
- ; COMBINED NOTREDXG AND NOTREDX
- ABOSSHIT
- LDA MODE,Y ;MUST BE BOSS
- BPL FOURHX ;SEE IF WAS ATTACKING WITH ESCORTS
- AND #$0F
- CMP #5
- BMI FOURHX
- CMP #9
- BPL FOURHX
- LDA COUNTXY,Y ;SEE HOW MANY ESCORTS IT HAD
- CMP #$0F
- BEQ FOURHX ;GO TO NO ESCORT
- CMP #$1F
- BNE SIXTENHX
- LDA #$80 ;ONE ESCORT
- STA TEMP5
- LDA #10 ;EIGHT HUNDRED TYPE
- STA SCRTEMP
- RTS
- SIXTENHX LDA #$60 ;TWO ESCORTS
- STA TEMP5
- LDA #$01
- STA TEMP4
- LDA #12 ;SIXTEEN HUNDRED TYPE
- STA SCRTEMP
- RTS
- FOURHX LDA YCORD,Y ;GET YCORD OF BOSS
- CMP #13 ;SEE IF AT RESTING YCORD
- BEQ FOURH1 ;SCORE IS 150 IF SO
- LDA #$40 ;NO ESCORTS
- STA TEMP5 ;SCORE
- LDA #9 ;FOUR HUNDRED TYPE
- STA SCRTEMP
- RTS
- FOURH1 LDA #$15
- STA TEMP5 ;GIVE SCORE OF 150
- RTS
- ; ENEMY BOOM !
- ENMYBOOM LDX #58
- BOOMLOOP LDA TYPE,X ; IT IS NOW TIME FOR THE GALAGA ON
- BEQ GOTSP1 ; YOUR TELEVISION TO EXPLODE
- INX
- CPX #62
- BNE BOOMLOOP
- LDX #58 ;ALL SPACES TAKEN, JUST USE FIRST SPACE
- BOMLOP LDA TYPE,X ;FIND A USABLE SPOT
- CMP #9
- BPL GOTSP1 USE A 'NUMBER' SPOT
- INX
- CPX #62
- BNE BOMLOP
- LDX #58
- GOTSP1 LDA #8 ;CHANGE ENEMY SHIP INTO EXPLOSION
- STA TYPE,X
- LDA XCORD,Y
- SEC
- SBC #3 ;CENTER THE EXPLOSION
- STA XCORD,X
- LDA YCORD,Y
- STA YCORD,X
- LDA #5
- STA ML,X
- LDA #7
- STA ANGLE,X
- LDA SCRTEMP
- STA MODE,X
- LDA #0
- STA SCRTEMP
- RTS
- ;
- ;THIS SUBROUTINE IS CALLED WHEN AN ENEMY MISSLE RUNS INTO THE HERO SHIP
- ;
- COLLIS3A JSR H2BOOM ;ZERO OUT 2ND HERO
- JMP COLLIS3B
- COLLIS3 JSR H1BOOM ;ZERO OUT HERO SHIP
- LDA TYPE+62 ;SEE IF 2ND SHIP ACTIVE
- BEQ COLLIS3B ;NO, GO ON
- LDA #0
- STA MODE+63 ;PUT BACK IN SINGLE MODE
- STA TYPE+62 ;KILL 2ND SHIP
- LDA #5
- STA TYPE+63 ;SWITCH TO HERO SHIP
- LDA XCORD+62
- ; STA XCORD+63 ;SET NEW XCORD
- STA HEROX
- COLLIS3B LDA #0
- STA TYPE,Y ;ZERO OUT MISSLE
- LDA #9 ;HERO DEATH SOUND
- JSR TUNIN
- LDA FARREN
- BEQ NON1
- LDA SWCHA
- ASL A
- ASL A
- ASL A
- ASL A
- BCS DISFAR
- INC FARREN
- BNE NON1
- DISFAR LDA #0
- STA FARREN
- NON1 RTS
- ;THIS SUBROUTINE CLEARS THE BOSS GALAGA WHICH WAS CARRYING A HERO SHIP
- ; IT IS CALLED WHEN THE CAPTURED HERO IS KILLED
- CLEARBOS STY KEEPY
- LDY CAPBOS1
- LDA TYPE,Y ;GET TYPE OF CAPTURING HERO
- AND #$7F ;BOOT HIGH BIT
- CMP #16 ;SEE IF HAS HERO
- BMI ENDCLRBS
- LDA TYPE,Y
- SEC
- SBC #13
- STA TYPE,Y
- ENDCLRBS LDY KEEPY
- RTS
- ;
- ;THIS SUBROUTINE HANDLES EXPLOSIONS. THE EXPLOSION IS POINTED TO BY THE
- ;Y REG
- ;THE Y REG IS SAVED
- ;
- EXPLO TYA ;TRANSFER Y REG TO X REG
- TAX
- LDA TYPE,X ;CHECK TYPE
- CMP #8 ;SEE IF EXPLOSION
- BEQ BUGEXPLO
- CMP #52
- BNE SHOWNUM
- BUGEXPLO DEC ML,X
- BPL ENDNUM
- CPY #60 ;SEE IF IS HERO EXPLOSION
- BMI BUGEX1
- LDA #7
- BNE BUGEX2
- BUGEX1 LDA #3
- BUGEX2 STA ML,X
- DEC ANGLE,X
- BNE ENDNUM
- LDA MODE,X
- STA TYPE,X
- LDA #100
- STA ML,X
- LDA #1
- STA ANGLE,X ;PREVENT FLAPPING
- BNE ENDNUM
- SHOWNUM CMP #9
- BMI ENDNUM ;NOT A SCORE
- CMP #13
- BPL ENDNUM ;NOT A SCORE
- DEC ML,X
- BNE ENDNUM
- LDA #0
- STA TYPE,X
- STA MODE,X
- ENDNUM RTS
- *******************************************************************************
- *
- * SOUND.S by Kevin G. Osborn
- * Contains subroutines
- * TUNER
- * SCRAPALL
- * SCRAPONE
- * TUNIN
- *******************************************************************************
- ********************************************************************************
- * SIMPSONG VERSION 0.03
- *
- * THIS SIMPLE SOUND DRIVER HAS, IN SOME WAYS, FEWER FEATURES BUT USES LESS RAM
- * AND ROM AND DOES NOT BACK UP SOUNDS FOR LATER (SOMETIMES MUCH LATER)
- * CONTINUATION. IT FEATURES 256 NOTE TUNES, SINGLE DURATION PER TUNE, ENDLESS
- * TUNES. IF A VALUE IN THE CONTROL OR VOLUME TABLES HAS THE HIGH BIT SET, THAT
- * VOLUME OR CONTROL WILL REMAIN IN EFFECT TILL THE END OF THE TUNE.
- * AN FF IN THE FREQUENCY TABLE WILL TERMINATE THE TUNE, AN FE WILL CAUSE IT TO
- * RESTART. AN FD WILL CALL THE TUNE NUMBER FOLLOWING (IN THE FREQ TABLE).
- *
- * SUBROUTINES:
- * SCRAPALL -- KILL ALL TUNES. SHOULD BE CALLED AT POWERUP, CHANGING PLAYERS,
- * AND GAME OVER
- *
- * SCRAPONE -- KILL A PARTICULAR TUNE. PUT THE NUMBER OF THE TUNE YA WANNA
- * AXE IN THE ACCUMULATOR.
- *
- * TUNIN -- START THAT TUNE YOU PUT IN ACC.
- *
- * THE ABOVE ROUTINES PRESERVE THE X AND Y REGS
- *
- * TABLES NEEDED ARE:
- * RAM:
- *DCH0 DS 1 ONE BYTE--DURATION CNTR CHAN. 0
- *DCH1 DS 1 ONE BYTE--DURATION CNTR CHAN. 1
- *TUNNUM DS 1 ONE BYTE--TUNE NUM FOR CHAN. 0
- *TUNNUM1 DS 1 ONE BYTE--TUNE NUM FOR CHAN. 1
- *TINDEX0 DS 1 ONE BYTE--NOTE POINTER 0
- *TINDEX1 DS 1 ONE BYTE--NOTE POINTER 1
- *CINDEX0 DS 1 CONTROL INDEX
- *CINDEX1 DS 1
- *VINDEX0 DS 1 VOLUME INDEX
- *VINDEX1 DS 1
- *MPTRL EQU KTEMP0 ZERO PAGE TEMP(NOT GAMEPLAY)
- *MPTRH EQU KTEMP1 ZERO PAGE TEMP(NOT GAMEPLAY)
- *TUNTEMP EQU TEMP0 ANY GAMEPLAY TEMP
- * ROM:
- * DURTABL ONE DURATION IN FRAMES PER TUNE
- * TBASE LOW ADDRESS OF THE START OF FREQ DATA BY TUNE NUMBER
- * TBASEH DITTO FOR HIGH ADDRESS
- * VBASE LOW ADDRESS OF THE START OF VOL DATA BY TUNE NUMBER
- * VBASEH DITTO FOR HIGH ADDRESS
- * CBASE LOW ADDRESS OF THE START OF CTRL DATA BY TUNE NUMBER
- * CBASEH DITTO FOR HIGH ADDRESS
- * PRYOR PRIORITY BY TUNE NUMBERS -- ZERO THE LOWEST
- * VOLTABL VOLUMES
- * FREQTABL FREQUENCIES
- * CTLTABL CONTROLS
- ********************************************************************************
- * SCRAPALL
- * KILL ALL TUNES. SHOULD BE CALLED AT POWERUP, CHANGING PLAYERS,
- * AND GAME OVER
- * ALSO BEFORE INITIATING A TUNE WITH TWO VOICES
- SCRAPALL TYA
- PHA
- TXA
- PHA
- LDY #0
- STY AUDV0
- STY AUDV1
- DEY
- STY TUNNUM
- STY TUNNUM1
- PLA
- TAX
- PLA
- TAY
- RTS
- ; IF YOU WANT, LOOP THIS UP
- ********************************************************************************
- * SCRAPONE
- * KILL A PARTICULAR TUNE. PUT THE NUMBER OF THE TUNE YA WANNA
- * AXE IN THE ACCUMULATOR.
- SCRAPONE CMP TUNNUM
- BNE CKCH1
- LDA #0
- STA AUDV0
- LDA #$FF
- STA TUNNUM
- RTS
- CKCH1 SEC
- SBC TUNNUM1
- BNE REETS
- STA AUDV1
- LDA #$FF
- STA TUNNUM1
- REETS RTS
- ********************************************************************************
- * TUNIN
- * START THAT TUNE YOU PUT IN ACC.
- TUNIN STA TUNTEMP
- TYA
- PHA
- TXA
- PHA
- LDY #1
- LDX TUNTEMP
- TROIK1 LDA TUNNUM,Y
- CMP TUNTEMP ;SEE IF TUNE IS ALREADY IN
- BEQ DO ;GO AHEAD AND LOAD
- DEY
- BPL TROIK1
- LDY #1
- TROIKA LDA TUNNUM,Y ;FIRST CHECK FOR AN EMPTY CHANNEL
- CMP #$FF
- BEQ DO
- TRKNX DEY
- BPL TROIKA
- LDA TUNNUM1 ;THIS IS DONE TO PREVENT GLITCHINESS
- AND #$7F
- TAY
- LDA PRYOR,X
- CMP PRYOR,Y ;CHECK FOR LOWEST PRIORITY
- LDY #1
- BCS DO
- LDA TUNNUM ;THIS IS DONE TO PREVENT GLITCHINESS
- AND #$7F
- TAY
- LDA PRYOR,X
- CMP PRYOR,Y ;CHECK FOR LOWEST PRIORITY
- BCC ROOTS
- LDY #0
- DO TXA
- ORA #$80
- STA TUNNUM,Y
- ROOTS PLA
- TAX
- PLA
- TAY
- RTS
- ********************************************************************************
- *TUNER SHOULD BE CALLED ONCE PER FRAME, NO INPUTS, AND IT OPERATES WITH
- *A TOTAL DISREGARD FOR REGISTER SANCTITY. EACH TUNE CAN BE 256 NOTES LONG
- *IF YOUR TUNES ARE VERY SMALL, YOU COULD DO AWAY WITH ALL THE INDIRECT STUFF
- TUNER
- ; TEST FOR ATTRACT
- LDA AUTOPLAY
- BNE REETS
- ; TEST FOR PAUSE
- LDA PAUSE
- BMI REETS ;MINUS IF IN PAUSE
- LDX #1
- TUNLOP LDY TUNNUM,X
- INY
- BNE NETN ;TUNNUM=FF DO NEXT CHANNEL
- JNXTCH JMP NXTCH
- NETN DEY
- BPL BOOGIE
- TYA ;NEW TUNE--INTITIATE
- AND #$7F
- STA TUNNUM,X
- TAY
- LDA CTRLTABL,Y
- STA AUDC0,X ; IN EFFECT UNTIL CHANGED
- LDA #$FF
- STA DCH0,X ;START
- STA TINDEX0,X
- * STA CINDEX0,X
- STA VINDEX0,X
- BOOGIE LDA TBASE,Y
- STA MPTRL
- LDA TBASEH,Y
- STA MPTRH
- DEC DCH0,X
- BPL JNXTCH
- LDA DURTABL,Y
- STA DCH0,X
- LDY TINDEX0,X
- * INC CINDEX0,X
- INC VINDEX0,X
- INY
- LDA (MPTRL),Y ;FREQ
- CMP #$FF
- BNE CKENL
- STA TUNNUM,X ;END THIS FUNKY TUNE
- LDA #0
- STA AUDV0,X
- BEQ JNXTCH
- CKENL CMP #$FE ; TEST FOR REPEATS
- BEQ FOOBEQ
- CKNXTT CMP #$FD ; CONTINUE WITH THE NEXT TUNE
- BNE STFREQ
- INY ; NEXT BYTE IS TUNE INDEX
- LDA (MPTRL),Y
- TAY
- ORA #$80 ; SO THAT NEW CTRL AND VOLUME GET READ
- STA TUNNUM,X
- LDA TBASE,Y ; GET ADDRESS OF NEW TUNE
- STA MPTRL
- LDA TBASEH,Y
- STA MPTRH
- FOOBEQ LDY #0 ; JUMP HERE FOR REPEAT
- TYA ; Y MUST BE 0, IT'S THE FREQ. INDEX
- * STA CINDEX0,X
- STA VINDEX0,X
- FRQLOOP LDA (MPTRL),Y
- STFREQ ; BPL SKIP0 ; IF BIT 7 SET, GET NEW DURATION
- ; INY
- ; LDA (MPTRL),Y ;DURATION CHANGES ARE DISABLED
- ; STA DCH0,X
- ; DEY
- ; LDA (MPTRL),Y
- ; INY
- ; JMP STIT0
- SKIP0 ASL A
- BPL SKIP1 ; IF BIT 6 SET, THIS IS A REST
- LSR A
- AND #$BF
- STA DCH0,X
- TYA
- STA TINDEX0,X
- DEC VINDEX0,X
- * DEC CINDEX0,X
- LDA #0
- STA AUDV0,X
- BEQ NXTCH
- SKIP1 ASL A
- BPL STIT ; IF BIT 5 IS SET, THIS IS A NEW CTRL
- LSR A
- LSR A
- AND #$1F
- STA AUDC0,X
- INY
- JMP FRQLOOP ; DO NEXT BYTE BEFORE RETURNING
- STIT LSR A
- LSR A
- STIT0 STA AUDF0,X
- TYA
- STA TINDEX0,X
- LDY TUNNUM,X
- LDA VBASE,Y
- STA MPTRL
- LDA VBASEH,Y
- STA MPTRH
- LDY VINDEX0,X
- LDA (MPTRL),Y
- BPL STVL
- DEY
- STVL STA AUDV0,X
- TYA
- STA VINDEX0,X
- NXTCH DEX
- BMI ROTS
- JMP TUNLOP
- ROTS RTS
- ********************************************************************************
- ********************************************************************************
- * POINTER TABLES.
- TBASE DB L(TTITLE0),L(TTITLE1),L(TSTACHA),L(TFREE1),L(TFREE2)
- DB L(TRELEAS1),L(TRELEAS2),L(THERSHOT),L(TBIRDSWO)
- DB L(THERDEA),L(TBOSDEA),L(TREDDEA),L(TBLUDEA)
- DB L(TTRANSFM),L(TBOSCHNG),L(TCHALNG1),L(TCHALNG2)
- DB L(TPERFEC1),L(TPERFEC2),L(TSTATS1),L(TSTATS2)
- DB L(TTRACTOR),L(TCAPTURE),L(TKIDNAP1),L(TKIDNAP2)
- DB L(TBACMUS),L(TTRAC2),L(TSUIC),L(TSUIC2)
- TBASEH DB H(TTITLE0),H(TTITLE1),H(TSTACHA),H(TFREE1),H(TFREE2)
- DB H(TRELEAS1),H(TRELEAS2),H(THERSHOT),H(TBIRDSWO)
- DB H(THERDEA),H(TBOSDEA),H(TREDDEA),H(TBLUDEA)
- DB H(TTRANSFM),H(TBOSCHNG),H(TCHALNG1),H(TCHALNG2)
- DB H(TPERFEC1),H(TPERFEC2),H(TSTATS1),H(TSTATS2)
- DB H(TTRACTOR),H(TCAPTURE),H(TKIDNAP1),H(TKIDNAP2)
- DB H(TBACMUS),H(TTRAC2),H(TSUIC),H(TSUIC2)
- VBASE DB L(TTITLE0V),L(TTITLE1V),L(TSTACHAV),L(TFREE1V),L(TFREE2V)
- DB L(TRELES1V),L(TRELES2V),L(THERSHOV),L(TBIRDSWV)
- DB L(THERDEAV),L(TBOSDEAV),L(TREDDEAV),L(TBLUDEAV)
- DB L(TTRNSFMV),L(TBOSCHGV),L(TCHLNG1V),L(TCHLNG2V)
- DB L(TPERFC1V),L(TPERFC2V),L(TSTATS1V),L(TSTATS2V)
- DB L(TTRACTRV),L(TCAPTURV),L(TKIDNP1V),L(TKIDNP2V)
- DB L(TBACMUSV),L(TTRAC2V),L(TSUICV),L(TSUIC2V)
- VBASEH DB H(TTITLE0V),H(TTITLE1V),H(TSTACHAV),H(TFREE1V),H(TFREE2V)
- DB H(TRELES1V),H(TRELES2V),H(THERSHOV),H(TBIRDSWV)
- DB H(THERDEAV),H(TBOSDEAV),H(TREDDEAV),H(TBLUDEAV)
- DB H(TTRNSFMV),H(TBOSCHGV),H(TCHLNG1V),H(TCHLNG2V)
- DB H(TPERFC1V),H(TPERFC2V),H(TSTATS1V),H(TSTATS2V)
- DB H(TTRACTRV),H(TCAPTURV),H(TKIDNP1V),H(TKIDNP2V)
- DB H(TBACMUSV),H(TTRAC2V),H(TSUICV),H(TSUIC2V)
- ********************************************************************************
- CTRLTABL DB $0D,$0D,4,4,4
- DB 4,$D,4,4
- DB 8,4,1,1
- DB 4,4,4,4
- DB 4,$D,$D,$D
- DB 4,4,4,$D
- DB $D,4,4,$D ;29 TUNES
- DURTABL DB $08,$08,$00,$03,$03
- DB $02,$02,$00,$03
- DB $09,$02,$01,$01
- DB $03,$00,$05,$05
- DB $02,$02,$08,$08
- DB $01,$02,$02,$02
- DB $03,$01,$00,$00
- PRYOR DB 6,5,7,8,7
- DB 13,12,3,4
- DB 7,5,5,5
- DB 9,5,8,7
- DB 15,14,15,14
- DB 9,9,11,10
- DB 1,8,8,1
- ********************************************************************************
- * FREQTABL
- ;TUNE 0: TITLE SONG
- TTITLE0 DB $0D,$0D,$24,$1F,$1B,$1B,$17,$18,$18,$1F,$1B,$1B,$12,$14,$14
- DB $1F,$1B,$1B,$17,$18,$18,$1F,$1B,$1B,$10,$0F,$0F,$11,$13,$13
- DB $14,$17,$17,$1A,$1B,$1B,$2D,$0B,$24,$11,$11,$0F,$11,$11,$14
- DB $12,$17,$1B,$14,$14,$14,$FF
- TREDDEAV
- TBLUDEAV
- TTITLE0V
- TBIRDSWV
- TBOSDEAV
- TBOSCHGV
- TCHLNG1V
- TCHLNG2V
- TPERFC1V
- TSTATS1V
- TTRACTRV
- TSUICV DB $89
- ;TUNE1: TITLE SONG
- TTITLE1 DB $10,$51,$0F,$51,$0D,$51,$0F,$51,$10,$51
- DB $0F,$51,$0D,$51,$0F,$48,$0F,$11,$11,$12,$14,$14
- DB $17,$1A,$1A,$1B,$1F,$1F,$1B,$12,$12,$11,$12,$12,$16,$18,$18
- DB $18,$1B,$1B,$1B,$FF
- TTITLE1V
- TTRAC2V
- TSUIC2V DB $84
- ;TUNE2: STAGE CHANGE
- TSTACHA DB $0F,$40,$13,$40,$11,$43
- DB $0F,$40,$13,$40,$11,$FF
- TSTACHAV
- TKIDNP1V
- TFREE2V DB $87
- ;TUNE3: EXTRA SHIP FANFARE
- TFREE1 DB $13,$17,$13,$0E,$0B,$09,$FF
- TFREE1V DB $8A
- TBACMUSV DB $83 ;LOWERED THIS VOLUME
- ;TUNE4: EXTRA SHIP FANFARE
- TFREE2 DB $17,$1D,$17,$13,$0F,$11,$FF
- ;TUNE5: CAPTURED SHIP RELEASED, PLAYS UNTIL UNITED
- TRELEAS1 DB $D,$42,$10,$42,$F,$42,$12,$42
- DB $10,$42,$14,$42,$12,$42,$15,$42
- DB $14,$42,$19,$42,$1C,$42,$1F,$42
- DB $2D,$A,$42,$C,$42,$D,$42,$E,$42
- DB $D,$42,$A,$42,$C,$42,$24,$1F,$42
- DB $2D,$A,$42,$24,$1C,$42,$1F,$42,$19,$42
- DB $1C,$42,$14,$42,$15,$42,$14,$42
- DB $12,$42,$1C,$42,$19,$42,$16,$42,$FE
- TRELES1V
- TTRNSFMV DB $88
- ;TUNE6: SAME AS 4
- TRELEAS2 DB $1C,$1C,$1C,$1C,$12,$12,$12,$12
- DB $D,$D,$D,$D,$D,$D,$10,$10
- DB $12,$12,$14,$14,$15,$15,$18,$18
- DB $1C,$1C,$1D,$1D,$1C,$1C,$18,$18
- DB $15,$15,$45,$14,$14,$45
- DB $12,$12,$45,$10,$10,$45
- DB $12,$12,$12,$41,$14,$14,$15,$15
- DB $18,$18,$1C,$1C,$1D,$1D,$18,$18,$FE
- TPERFC2V
- TRELES2V
- TSTATS2V
- TKIDNP2V DB $85
- ;TUNE7: HERO SHOT
- THERSHOT DB 6,7,8,9,$A,$B,$C,$D ;FREQ
- DB $F,$11,$13,$15,$17,$19,$1C,$1F
- DB $FF
- THERSHOV DB 3,4,5,5,5,5,5,5,5,5,4,4,3,3,4,4,$FF
- ;TUNE8: BIRDSWOOPING SOUND
- TBIRDSWO DB $0A,$0B,$0C,$0D,$0E ;FREQ
- DB $0F,$10,$11,$12,$13
- DB $14,$15,$17,$18,$1A
- DB $1B,$1D,$1F,$2D,$0B,$0C
- DB $0D,$0E,$0F,$10,$11
- DB $12,$13,$14,$15,$FF
- ;TUNE9: HERO DEATH SOUND
- THERDEA DB $1F,$1F,$1F,$1F,$1F,$1F,$1F,$1F,$FF
- THERDEAV DB $B,$D,$C,$B,$A,9,7,5,3,2,1,$FF
- ;TUNE10: BOSS DEATH SOUND
- TBOSDEA DB $1F,$1C,$1A,$1C,$1A
- DB $19,$1A,$19,$18,$FF
- ;TUNE11: RED DEATH SOUND
- TREDDEA DB $09,$08,$07,$05,$41 ;FREQ
- DB $06,$07,$08,$0B,$FF
- ;TUNE12: BLUE DEATH SOUND
- TBLUDEA DB $0D,$0B,$0A,$09,$41 ;FREQ
- DB $0A,$0B,$0D,$0F,$FF
- ;TUNE13: ONE BIRD INTO THREE BIRDS
- TTRANSFM DB $1D,$1A,$1D,$1A,$16,$13,$16,3,$FF
- ;TUNE14: BOSS GOING TO BLUE
- TBOSCHNG DB $1F,$1E,$40,$1C,$1B
- DB $40,$19,$18,$FF
- ;TUNE15: CHALLENGING STAGE CHANNEL 1
- TCHALNG1 DB $13,$4B,$13,$12
- DB $10,$0E,$0E,$0E,$FF
- ;TUNE16: CHALLENGING STAGE CHANNEL 2
- TCHALNG2 DB $1F,$4B,$1F,$1D
- DB $1A,$17,$17,$17,$FF
- ;TUNE17: PERFECT SCORE FANFARE
- TPERFEC1 DB $12,$12,$12,$12,$12,$00,$12,$00
- DB $12,$12,$12,$12,$14,$14,$14,$14
- DB $14,$14,$14,$00,$14,$14,$14,$14
- DB $14,$14,$14,$00,$14,$14,$14,$14
- DB $11,$11,$11,$11,$11,$00,$11,$00
- DB $11,$11,$11,$11,$12,$12,$12,$12
- DB $12,$12,$12,$00,$12,$12,$12,$12
- DB $12,$12,$12,$00,$12,$12,$12,$00
- DB $11,$00,$11,$11,$11,$00,$11,$00
- DB $11,$11,$11,$11,$0F,$00,$0F,$0F
- DB $0F,$00,$0F,$00,$0F,$0F,$0F,$00
- DB $0F,$0F,$0F,$00,$0F,$0F,$0F,$00
- DB $0D,$0D,$0D,$0D,$0D,$0D,$0D,$0D
- DB $0D,$0D,$0D,$0D,$0D,$0D,$0D,$0D
- DB $FD,8 ;CALL BIRD SWOOP SOUND
- ;TUNE18: PERFECT SCORE FANFARE
- TPERFEC2 DB $1F,$1F,$18,$18,$14,$14,$0F,$0F
- DB $1F,$1F,$18,$18,$14,$14,$0F,$0F
- DB $1F,$1F,$18,$18,$14,$14,$0F,$0F
- DB $1F,$1F,$18,$18,$14,$14,$0F,$0F
- DB $1F,$1F,$18,$18,$14,$14,$0F,$0F
- DB $1F,$1F,$18,$18,$14,$14,$0F,$0F
- DB $1F,$1F,$18,$18,$14,$14,$0F,$0F
- DB $1F,$1F,$18,$18,$14,$14,$0F,$0F
- DB $1D,$42,$1D,$1D,$1D,$42,$1D,$42
- DB $1D,$1D,$1D,$1D,$1A,$42,$1A,$1A
- DB $1A,$42,$1A,$42,$1A,$1A,$1A,$42
- DB $1A,$1A,$1A,$42,$1A,$1A,$1A,$42
- DB $17,$17,$14,$14,$12,$12,$0F,$0F
- DB $12,$12,$12,$12,$17,$17,$17,$17,$FF
- ;TUNE19: STATISTICS DISPLAY SOUND
- TSTATS1 DB $D,$D,$24,$1F,$1B,$1B,$17,$18,$18
- DB $1F,$1B,$1B,$12,$14,$14,$1F,$1B
- DB $1B,$17,$18,$18,$1F,$1B,$1B,$10
- DB $F,$F,$11,$13,$13,$14,$17,$17
- DB $1A,$1B,$1B,$2D,$B,$24,$11,$11,$F,$11
- DB $11,$14,$12,$17,$1B,$14,$14,$14
- ABCD DB $14,$14,$14,$FF
- ;TUNE20: STATISTICS DISPLAY SOUND
- TSTATS2 DB $51,$D,$D,$24,$1F,$1B,$1B,$17
- DB $18,$18,$1F,$1B,$1B,$12,$14,$14
- DB $1F,$1B,$1B,$17,$18,$18,$1F,$1B
- DB $1B,$10,$F,$F,$11,$13,$13,$14
- DB $17,$17,$1A,$1B,$1B,$2D,$B,$24,$11,$11
- DB $F,$11,$11,$14,$12,$17,$1B,$14
- ABCDE DB $14,$14,$14,$FF
- ;TUNE21: TRACTOR BEAM
- TTRACTOR DB $0E,$41,$0F,$41,$11,$41,$13,$41,$FE ;REPEATS
- ;TUNE26 SECOND CHANNEL OF TRACTOR BEAM SOUND
- TTRAC2 DB $41,$11,$41,$13,$41,$16,$41,$17,$FE ;REPEATS
- ;TUNE22: HERO SHIP BEING CAPTURED
- TCAPTURE DB $17,$13,$10,$0D,$0B
- DB $0D,$10,$13,$FE ;REPEATS
- TCAPTURV DB $02,$04,$06,$08,$08,$06,$04,$02
- DB $03,$03,$03,$03,$03,$03,$03,$03
- DB $07,$09,$0A,$0A,$0A,$0A,$09,$07
- DB $04,$04,$04,$04,$04,$04,$04,$04
- DB $03,$05,$07,$09,$09,$07,$05,$03
- DB $04,$04,$04,$04,$04,$04,$04,$04
- DB $0A,$0A,$0A,$0A,$0A,$0A,$0A,$0A
- DB $03,$FE ;REPEATS
- ;TUNE23: HERO BEING TAKEN TO TOP OF SCREEN
- TKIDNAP1 DB $0D,$42,$11,$42,$0F,$42,$12,$42
- DB $11,$42,$14,$42,$12,$42,$15
- DB $42,$14,$42,$1A,$42,$1C,$42,$1F
- DB $42,$2D,$0B,$42,$0C,$42,$0D,$42
- DB $0E,$42,$0D,$42,$0B,$42,$0C,$42
- DB $24,$1F,$42,$2D,$0B,$42,$24,$1C,$42,$1F
- DB $42,$1A,$42,$1C,$42,$14,$42,$16
- DB $42,$14,$42,$12,$42,$1C,$42
- DB $19,$42,$16,$42,$FF ;MAY END ABRUPTLY???
- ;TUNE24: HERO BEING TAKEN TO TOP OF SCREEN
- TKIDNAP2 DB $1C,$1C,$1C,$1C,$12,$12,$12,$12
- DB $0D,$0D,$0D,$0D,$0D,$0D,$11
- DB $11,$12,$12,$14,$14,$17,$17,$18
- DB $18,$1C,$1C,$1E,$1E,$1C,$1C
- DB $18,$18,$17,$17,$17,$17,$14,$14
- DB $14,$14,$12,$12,$12,$12,$11
- DB $11,$11,$11,$12,$12,$12,$12,$14
- DB $14,$17,$17,$18,$18,$1C,$1C
- DB $1D,$1D,$18,$18,$FF ;MAY END ABRUPTLY???
- ;TUNE25: BACKGROUND MUSIC
- TBACMUS DB $1F,$1D,$1B,$1A,$18 ;FREQ
- DB $17,$15,$14,$13,$12
- DB $15,$14,$13,$12,$1F
- DB $1D,$1B,$1A,$18,$17
- DB $15,$14,$13,$12,$1F
- DB $1D,$1B,$1A,$18,$17
- DB $15,$14,$13,$12,$1F
- DB $1D,$1B,$1A,$18,$17
- DB $15,$14,$13,$12,$13
- DB $14,$15,$17,$12,$13
- DB $14,$15,$17,$18,$1A
- DB $1B,$1D,$1F,$12,$13
- DB $14,$15,$17,$18,$1A
- DB $1B,$1D,$1F,$12,$13
- DB $14,$15,$17,$18,$1A
- DB $1B,$1D,$1F,$12,$13
- DB $14,$15,$17,$18,$1A
- DB $1B,$1D,$1F,$FE
- ;TUNE27 SUICIDE CHANNEL 1
- TSUIC DB $0D,$40,$11,$40,$F,$40,$12,$40
- DB $11,$40,$14,$40,$12,$40,$15,$40
- DB $14,$40,$1C,$40,$1A,$40,$1F,$40
- DB $1C,$40,$2D,$0B,$40,$24,$15,$40,$1A,$40
- DB $14,$40,$1C,$40,$1A,$40,$1F,$40
- DB $1C,$40,$2D,$0B,$40,$15,$40,$1F,$40
- DB $14,$40,$FF
- ;TUNE28 SUICIDE CHANNEL 2
- TSUIC2 DB $1C,$1C,$1C,$1C,$12,$12,$12,$12
- DB $D,$D,$D,$D,$D,$D,$11,$11
- DB $12,$12,$12,$12,$14,$14,$14,$14
- DB $17,$17,$17,$17,$18,$18,$18,$18
- DB $17,$17,$17,$17,$14,$14,$14,$14
- DB $12,$12,0,0,$12,$12,0,0
- DB $1C,$1C
- DB $FF
|