' I n t y B A S I C G o r i l l a s ' ' by Oscar Toledo G. (nanochess.org) ' Original game (c) Microsoft Corp 1990 ' ' Your mission is to hit your opponent with the exploding banana ' by varying the angle and power of your throw, taking into account ' wind speed, gravity, and the city skyline. ' ' Creation date: Jan/24/2022. ' ' ' Constants CONST ScrWidth = 160 CONST ScrHeight = 96 CONST GHeight = 6 CONST ScaleGame = 20 CONST Power = 32 ' Global Variables DIM BCoor(20 * 2) DIM GorillaX(2) DIM GorillaY(2) DIM TotalWins(2) SIGNED Wind FOR c = 0 TO 30 WAIT NEXT c PLAY FULL restart: GOSUB InitVars GOSUB Intro GOSUB GetInputs GOSUB GorillaIntro GOSUB PlayGame GOTO restart InitVars: PROCEDURE CLS MODE 1 FOR c = 0 TO 7 WAIT NEXT c WAIT DEFINE 0,14,game_bitmaps_0 WAIT DEFINE 16,14,game_bitmaps_1 WAIT END ' DoShot: ' Controls banana shots by accepting player input and plotting ' shot angle. ' Parameters: ' PlayerNum - Player ' DoShot: PROCEDURE ' Input shot IF PlayerNum = 0 THEN LocateCol = 0 ELSE LocateCol = 15 END IF PRINT AT LocateCol COLOR $0207,"ANGLE" GOSUB GetNum #Angle = #c ' Erase input PRINT AT LocateCol," " PRINT AT LocateCol+20," " PRINT AT LocateCol COLOR $0207,"SPEED" GOSUB GetNum #Velocity = #c ' Erase input PRINT AT LocateCol," " PRINT AT LocateCol+20," " IF PlayerNum = 1 THEN #Angle = 180 - #Angle END IF GOSUB PlotShot IF PlayerHit = 255 THEN ELSE i = PlayerHit XOR 1 GOSUB VictoryDance hit = 1 END IF END ' DoSun: ' Draws the sun at the top of the screen. ' Parameters: ' Mouth - If non-zero draws "O" mouth else draws a smile mouth. ' DoSun: PROCEDURE IF Mouth = 0 THEN ' Smile mouth SPRITE 2,$0308+72,$0088+0,$0806+0*8 ' Left side SPRITE 3,$0308+80,$0088+0,$0806+2*8 ' Right side ELSE SPRITE 2,$0308+72,$0088+0,$0806+4*8 ' Left side SPRITE 3,$0308+80,$0088+0,$0806+6*8 ' Right side END IF END ' GetInputs: ' Gets user inputs at beginning of game ' GetInputs: PROCEDURE CLS MODE 0,0,0,0,0 WAIT PRINT AT 20,"Play to how many" PRINT AT 40,"total points" PRINT AT 60,"(Default = 3) ?" PlayerNum = 255 LocateCol = 62 GOSUB GetNum NumGames = #c IF NumGames = 0 THEN NumGames = 3 PRINT AT 120,"Gravity in Mts/Sec" PRINT AT 140,"x10 (Earth = 98) ?" LocateCol = 142 GOSUB GetNum IF #c > 255 THEN #c = 255 #Gravity = #c IF #Gravity = 0 THEN #Gravity = 98 END ' GetNum: ' Gets valid numeric input from user ' GetNum: PROCEDURE #c = 0 cursor_pos = LocateCol + 20 WHILE 1 PRINT AT cursor_pos,"#" GOSUB get_key PRINT AT cursor_pos," " IF key = 10 THEN IF cursor_pos > LocateCol + 20 THEN cursor_pos = cursor_pos - 1 #c = #c / 10 ELSEIF key = 11 THEN RETURN ELSEIF #c * 10 <= 999 THEN PRINT AT cursor_pos,<>key cursor_pos = cursor_pos + 1 #c = #c * 10 + key END IF WEND END ' GorillaIntro: ' Displays gorillas on screen for the first time. ' GorillaIntro: PROCEDURE CLS PRINT AT 103,"--------------" PRINT AT 123,"1 - View Intro" PRINT AT 143,"2 - Play Game" PRINT AT 183," Your Choice?" PlayerNum = 255 GOSUB get_key CLS MODE 1 BORDER 1 WAIT IF key = 1 THEN GOSUB clear_screen PLAY music_intro PRINT AT 21 COLOR $0206,"INTYBASIC GORILLAS" PRINT AT 66 COLOR $0207,"STARRING:" SPRITE 4, $0308 + 56, $0088 + 48, $1802 + 12 * 8 SPRITE 5, $0310 + 56, $0088 + 48, $1802 + 10 * 8 SPRITE 6, $0308 + 88, $0088 + 48, $1802 + 12 * 8 SPRITE 7, $0310 + 88, $0088 + 48, $1802 + 10 * 8 FOR d = 1 TO 120 WAIT NEXT d FOR c = 1 TO 2 SPRITE 4, , $0088 + 48, $1802 + 8 * 8 SPRITE 5, , $0088 + 48, $1802 + 10 * 8 SPRITE 6, , $0488 + 48, $1802 + 10 * 8 SPRITE 7, , $0488 + 48, $1802 + 8 * 8 FOR d = 1 TO 80 WAIT NEXT d SPRITE 4, , $0488 + 48, $1802 + 10 * 8 SPRITE 5, , $0488 + 48, $1802 + 8 * 8 SPRITE 6, , $0088 + 48, $1802 + 8 * 8 SPRITE 7, , $0088 + 48, $1802 + 10 * 8 FOR d = 1 TO 80 WAIT NEXT d NEXT c WHILE music.playing: WAIT: WEND FOR c = 1 TO 4 SPRITE 4, , $0088 + 48, $1802 + 8 * 8 SPRITE 5, , $0088 + 48, $1802 + 10 * 8 SPRITE 6, , $0488 + 48, $1802 + 10 * 8 SPRITE 7, , $0488 + 48, $1802 + 8 * 8 PLAY music_shot_explosion FOR d = 1 TO 20 WAIT NEXT d SPRITE 4, , $0488 + 48, $1802 + 10 * 8 SPRITE 5, , $0488 + 48, $1802 + 8 * 8 SPRITE 6, , $0088 + 48, $1802 + 8 * 8 SPRITE 7, , $0088 + 48, $1802 + 10 * 8 PLAY music_shot_explosion FOR d = 1 TO 20 WAIT NEXT d NEXT c END IF END ' Intro: ' Displays game introduction ' Intro: PROCEDURE CLS MODE 0,0,0,0,0 BORDER 0 FOR c = 0 TO 7 SPRITE c, 0 NEXT c WAIT PRINT AT 1 COLOR 6,"IntyBASIC GORILLAS" PRINT AT 21 COLOR 3,"Port by nanochess" PLAY music_title ' 01234567890123456789 PRINT AT 60 COLOR 7,"Your mission is to" PRINT AT 80,"hit your opponent" PRINT AT 100,"with the exploding" PRINT AT 120,"banana by varying" PRINT AT 140,"the angle and power" PRINT AT 160,"of your throw." PRINT AT 220 COLOR 5," (Press a key)" PlayerNum = 255 GOSUB get_key FOR c = 40 TO 239 #backtab(c) = 0 NEXT c PRINT AT 60 COLOR 7,"You should take in" PRINT AT 80,"account wind speed," PRINT AT 100,"gravity, and the" PRINT AT 120,"city skyline." PRINT AT 220 COLOR 5," (Press a key)" GOSUB get_key FOR c = 40 TO 239 #backtab(c) = 0 NEXT c PRINT AT 60 COLOR 7,"The wind speed is" PRINT AT 80,"shown by a" PRINT AT 100,"directional arrow at" PRINT AT 120,"the bottom of the" PRINT AT 140,"playing field, its" PRINT AT 160,"length relative to" PRINT AT 180,"its strength." PRINT AT 220 COLOR 5," (Press a key)" GOSUB get_key END ' MakeCityScape: ' Creates random skyline for game ' MakeCityScape: PROCEDURE ' Set the sloping trend of the city scape. NewHt is new building height Slope = RANDOM(6) + 1 IF Slope = 1 THEN NewHt = 2 ' Upward slope ELSEIF Slope = 2 THEN NewHt = 10 ' Downward slope ELSEIF Slope = 6 THEN NewHt = 10 ' Inverted "V" slope ELSE NewHt = 2 ' "V" slope - most common END IF HtInc = 1 ' Increase value for new height x = 0 CurBuilding = 0 DO IF Slope = 1 THEN NewHt = NewHt + HtInc ELSEIF Slope = 2 THEN NewHt = NewHt - HtInc ELSEIF Slope = 6 THEN ' It is 4 in original (bug) IF x > 10 THEN NewHt = NewHt + HtInc ELSE NewHt = NewHt - HtInc END IF ELSE IF x > 10 THEN NewHt = NewHt - HtInc ELSE NewHt = NewHt + HtInc END IF END IF ' Set width of building and check to see if it would go off the screen BWidth = RANDOM(2) + 1 IF x + BWidth > 20 THEN BWidth = 20 - x ' Set height of building and check to see if it goes below screen BHeight = RANDOM(3) + NewHt IF BHeight < HtInc THEN BHeight = HtInc ' Check to see if the building is too high IF 11 - BHeight <= 1 THEN BHeight = 2 c = RANDOM(3) IF c = 0 THEN #color = $1200 + $0800 + 16 * 8 IF c = 1 THEN #color = $0400 + $0800 + 16 * 8 IF c = 2 THEN #color = $1000 + $0800 + 16 * 8 BCoor(CurBuilding * 2 + 0) = x BCoor(CurBuilding * 2 + 1) = 11 - BHeight ' Draw the building FOR c = x TO x + BWidth - 1 FOR d = 11 TO 11 - BHeight STEP - 1 IF RANDOM(2) THEN #backtab(c + d * 20) = #color + 6 ELSE #backtab(c + d * 20) = #color END IF NEXT d NEXT c x = x + BWidth CurBuilding = CurBuilding + 1 LOOP UNTIL x >= 20 LastBuilding = CurBuilding - 1 ' Set Wind speed Wind = RANDOM(10) - 5 IF RANDOM(3) = 1 THEN IF Wind > 0 THEN Wind = Wind + RANDOM(10) ELSE Wind = Wind - RANDOM(10) END IF END IF ' Draw Wind speed arrow IF Wind <> 0 THEN c = 230 IF Wind < 0 THEN d = -1: e = -Wind / 2 ELSE d = 1: e = Wind / 2 WHILE e #backtab(c) = 21 * 8 + $0A07 c = c + d e = e - 1 WEND IF Wind < 0 THEN #backtab(c) = 22 * 8 + $0A07 ELSE #backtab(c) = 23 * 8 + $0A07 END IF END IF END ' PlaceGorillas: ' Puts the Gorillas on top of the buildings. ' PlaceGorillas: PROCEDURE ' Place gorillas on second or third building from edge FOR i = 0 TO 1 IF i = 0 THEN BNum = RANDOM(2) + 1 ELSE BNum = LastBuilding - (RANDOM(2) + 1) END IF BWidth = BCoor((BNum + 1) * 2 + 0) - BCoor(BNum * 2 + 0) GorillaX(i) = BCoor(BNum * 2 + 0) * 8 + BWidth * 8 / 2 - 8 GorillaY(i) = BCoor(BNum * 2 + 1) * 8 - 8 ' Draw gorilla with arms down SPRITE 4 + i * 2, $0308 + GorillaX(i), $0088 + GorillaY(i), $1802 + 12 * 8 SPRITE 5 + i * 2, $0310 + GorillaX(i), $0088 + GorillaY(i), $1802 + 10 * 8 NEXT i END ' PlayGame: ' Main game play routine ' PlayGame: PROCEDURE CurrentPlayer = 1 FOR game = 1 TO NumGames GOSUB clear_screen GOSUB MakeCityScape GOSUB PlaceGorillas Mouth = 0 GOSUB DoSun hit = 0 WHILE hit = 0 CurrentPlayer = 1 - CurrentPlayer IF TotalWins(0) < 10 THEN PRINT AT 205 ELSE PRINT AT 204 END IF PRINT COLOR $0207,<>TotalWins(0), ">SCORE<", <>TotalWins(1) PlayerNum = CurrentPlayer ' Plot the shot. Hit is non-zero if Gorilla gets hit. GOSUB DoShot ' Reset the sun, if it got hit Mouth = 0: GOSUB DoSun IF Hit <> 0 THEN GOSUB UpdateScores WEND FOR c = 0 TO 60 WAIT NEXT c NEXT game PRINT AT 25 COLOR $0207,"GAME OVER" IF TotalWins(0) < 10 THEN PRINT AT 205 ELSE PRINT AT 204 END IF PRINT COLOR $0207,<>TotalWins(0), ">SCORE<", <>TotalWins(1) GOSUB get_key END ' PlotShot: ' Plots banana shot across the screen ' Parameters: ' #Angle - shot angle ' #Velocity - shot velocity ' PlayerNum - the banana thrower ' PlotShot: PROCEDURE StartX = GorillaX(PlayerNum) StartY = GorillaY(PlayerNum) StartXPos = StartX StartYPos = StartY - 3 IF PlayerNum = 1 THEN StartXPos = StartX + 8 END IF WHILE #Angle >= 360 #Angle = #Angle - 360 WEND #Angle = #Angle * 72 / 360 #InitXVel = cos(#Angle) * #Velocity IF #InitXVel < 0 THEN #InitXVel = -(-#InitXVel / ScaleGame) ELSE #InitXVel = #InitXVel / ScaleGame END IF #InitYVel = sin(#Angle) * #Velocity IF #InitYVel < 0 THEN #InitYVel = -(-#InitYVel / ScaleGame) ELSE #InitYVel = #InitYVel / ScaleGame END IF ' Draw gorilla toss IF PlayerNum = 0 THEN SPRITE 4, $0308 + StartX, $0088 + StartY, $1802 + 8 * 8 SPRITE 5, $0310 + StartX, $0088 + StartY, $1802 + 10 * 8 ELSE SPRITE 6, $0308 + StartX, $0488 + StartY, $1802 + 10 * 8 SPRITE 7, $0310 + StartX, $0488 + StartY, $1802 + 8 * 8 END IF ' Throw sound PLAY music_throw FOR c = 1 TO 6 WAIT NEXT c IF PlayerNum = 0 THEN SPRITE 4, $0308 + StartX, $0088 + StartY, $1802 + 12 * 8 SPRITE 5, $0310 + StartX, $0088 + StartY, $1802 + 10 * 8 ELSE SPRITE 6, $0308 + StartX, $0088 + StartY, $1802 + 12 * 8 SPRITE 7, $0310 + StartX, $0088 + StartY, $1802 + 10 * 8 END IF Impact = 0 OnScreen = 1 PlayerHit = 255 #v = 0 #x = StartXPos * 64 #y = StartYPos * 64 IF Wind < 0 THEN #v = -(-Wind / 2) ELSE #v = Wind / 2 END IF #v = #v * #v / (4 * ScaleGame) #u = #gravity / 2 #u = #u * #u * 2 / (3 * ScaleGame) #w = #v #z = #u WHILE Impact = 0 AND OnScreen = 1 IF #y < 0 THEN SPRITE 0, 0 ELSE SPRITE 0, $0304 + #x / 64, $0104 + #y / 64, $0806 + (((FRAME / 2) AND 3) + 17) * 8 END IF WAIT WAIT IF #x >= 0 AND #y >= 0 AND #x < 160 * 64 AND #y < 96 * 64 THEN IF (#backtab(#x / 64 / 8 + #y / 64 / 8 * 20) AND $3FF8) <> $0200 THEN Impact = 1 EXIT WHILE END IF END IF IF COL0 AND $0030 THEN PlayerHit = 0 Impact = 1 #x = (GorillaX(0) + 8) * 64 #y = (GorillaY(0) + 4) * 64 EXIT WHILE END IF IF COL0 AND $00C0 THEN PlayerHit = 1 Impact = 1 #x = (GorillaX(1) + 8) * 64 #y = (GorillaY(1) + 4) * 64 EXIT WHILE END IF IF COL0 AND $000C THEN Mouth = 1 ELSE Mouth = 0 END IF GOSUB DoSun #x = #x + #InitXVel + #w #y = #y - #InitYVel + #z IF #x < 4 * 64 OR #x >= 168 * 64 OR #y >= 92 * 64 THEN OnScreen = 0 END IF IF #w < 0 THEN #w = #w - -#w / Power ELSE #w = #w + #w / Power END IF #z = #z + #z / Power WEND IF PlayerHit = 255 AND Impact <> 0 THEN PLAY music_shot_explosion #backtab(#x / 64 / 8 + #y / 64 / 8 * 20) = $0200 FOR c = 28 TO 24 STEP -1 SPRITE 0, $0304 + #x / 64, $0104 + #y / 64, $0802 + c * 8 WAIT WAIT NEXT c ELSEIF Impact <> 0 THEN PLAY music_gorilla_explosion FOR c = 24 TO 28 SPRITE 0, $0700 + #x / 64, $0104 + #y / 64, $0802 + c * 8 WAIT WAIT WAIT WAIT NEXT c FOR c = 0 TO 10 WAIT NEXT c IF PlayerHit = 0 THEN SPRITE 4, 0 SPRITE 5, 0 END IF IF PlayerHit = 1 THEN SPRITE 6, 0 SPRITE 7, 0 END IF FOR c = 28 TO 24 STEP -1 SPRITE 0, $0700 + #x / 64, $0104 + #y / 64, $0802 + c * 8 WAIT WAIT WAIT WAIT NEXT c END IF SPRITE 0, 0 END ' UpdateScores: ' Update player's scores ' UpdateScores: PROCEDURE TotalWins(PlayerHit XOR 1) = TotalWins(PlayerHit XOR 1) + 1 END ' VictoryDance: ' gorilla dances after he has eliminated his opponent ' VictoryDance: PROCEDURE FOR c = 1 TO 4 PLAY music_shot_explosion SPRITE 4 + i * 2, $0308 + GorillaX(i), $0088 + GorillaY(i), $1802 + 8 * 8 SPRITE 5 + i * 2, $0310 + GorillaX(i), $0088 + GorillaY(i), $1802 + 10 * 8 FOR d = 1 TO 12 WAIT NEXT d PLAY music_shot_explosion SPRITE 4 + i * 2, $0308 + GorillaX(i), $0488 + GorillaY(i), $1802 + 10 * 8 SPRITE 5 + i * 2, $0310 + GorillaX(i), $0488 + GorillaY(i), $1802 + 8 * 8 FOR d = 1 TO 12 WAIT NEXT d NEXT c END clear_screen: PROCEDURE FOR c = 0 TO 239 #backtab(c) = $0200 NEXT c FOR c = 0 TO 7 SPRITE c, 0 NEXT c END get_key: PROCEDURE debounce = 15 DO WAIT IF debounce THEN debounce = debounce - 1 ' IF PlayerNum = 0 THEN ' key = cont1.key ' ELSEIF PlayerNum = 1 THEN ' key = cont2.key ' ELSE key = cont.key ' END IF LOOP WHILE debounce <> 0 OR key = 12 key = cont.key END game_bitmaps_0: BITMAP "....X..X" ' 0 BITMAP "..X..X.X" BITMAP "...X.X.X" BITMAP "...X.X.X" BITMAP ".X..X.XX" BITMAP "..XX.XXX" BITMAP "....XX.X" BITMAP "XXXXXXXX" BITMAP "....X.XX" BITMAP "....XX.." BITMAP "..XX.XXX" BITMAP ".X..X.XX" BITMAP "...X.X.X" BITMAP "...X.X.X" BITMAP "..X..X.X" BITMAP "....X..X" BITMAP "...X...." ' 2 BITMAP "..X..X.." BITMAP "..X.X..." BITMAP "X.X.X..." BITMAP "XX.X..X." BITMAP "XXX.XX.." BITMAP "X.XX...." BITMAP "XXXXXXXX" BITMAP "XX.X...." BITMAP "..XX...." BITMAP "XXX.XX.." BITMAP "XX.X..X." BITMAP "X.X.X..." BITMAP "..X.X..." BITMAP "..X..X.." BITMAP "...X...." BITMAP "....X..X" ' 4 BITMAP "..X..X.X" BITMAP "...X.X.X" BITMAP "...X.X.X" BITMAP ".X..X.XX" BITMAP "..XX.XXX" BITMAP "....XX.X" BITMAP "XXXXXXXX" BITMAP "....XXX." BITMAP "....XXX." BITMAP "..XX.XXX" BITMAP ".X..X.XX" BITMAP "...X.X.X" BITMAP "...X.X.X" BITMAP "..X..X.X" BITMAP "....X..X" BITMAP "...X...." ' 6 BITMAP "..X..X.." BITMAP "..X.X..." BITMAP "X.X.X..." BITMAP "XX.X..X." BITMAP "XXX.XX.." BITMAP "X.XX...." BITMAP "XXXXXXXX" BITMAP ".XXX...." BITMAP ".XXX...." BITMAP "XXX.XX.." BITMAP "XX.X..X." BITMAP "X.X.X..." BITMAP "..X.X..." BITMAP "..X..X.." BITMAP "...X...." BITMAP "...XX.XX" ' 8 BITMAP "..XX.X.." BITMAP ".XX..XXX" BITMAP ".XX..XX." BITMAP ".XX..XXX" BITMAP "..XX..XX" BITMAP "...XXXXX" BITMAP "....XXXX" BITMAP "....XXXX" BITMAP "....X..." BITMAP ".....XXX" BITMAP ".....XXX" BITMAP ".....XX." BITMAP "....XX.." BITMAP "....XX.." BITMAP ".....XX." BITMAP "XX......" ' 10 BITMAP "..X....." BITMAP "XXX....." BITMAP "X.X....." BITMAP "XXX....." BITMAP "XX......" BITMAP "XXXXX..." BITMAP ".XXXXX.." BITMAP ".XXXXX.." BITMAP "X...XX.." BITMAP "XXX.XX.." BITMAP "XXXXX..." BITMAP ".XX....." BITMAP "..XX...." BITMAP "..XX...." BITMAP ".XX....." BITMAP "......XX" ' 12 BITMAP ".....X.." BITMAP ".....XXX" BITMAP ".....XX." BITMAP ".....XXX" BITMAP "......XX" BITMAP "...XXXXX" BITMAP "..XX.XXX" BITMAP "..XX.XXX" BITMAP "..XX...." BITMAP "...XXXXX" BITMAP ".....XXX" BITMAP ".....XX." BITMAP "....XX.." BITMAP "....XX.." BITMAP ".....XX." game_bitmaps_1: BITMAP "........" ' 16 BITMAP ".XX..XX." BITMAP ".XX..XX." BITMAP "........" BITMAP "........" BITMAP ".XX..XX." BITMAP ".XX..XX." BITMAP "........" BITMAP "........" ' 17 BITMAP "........" BITMAP "....XX.." BITMAP "...XX..." BITMAP "...XX..." BITMAP "....XX.." BITMAP "........" BITMAP "........" BITMAP "........" ' 18 BITMAP "........" BITMAP "..X..X.." BITMAP "..XXXX.." BITMAP "...XX..." BITMAP "........" BITMAP "........" BITMAP "........" BITMAP "........" ' 19 BITMAP "........" BITMAP "..XX...." BITMAP "...XX..." BITMAP "...XX..." BITMAP "..XX...." BITMAP "........" BITMAP "........" BITMAP "........" ' 20 BITMAP "........" BITMAP "...XX..." BITMAP "..XXXX.." BITMAP "..X..X.." BITMAP "........" BITMAP "........" BITMAP "........" BITMAP "........" ' 21 BITMAP "........" BITMAP "........" BITMAP "XXXXXXXX" BITMAP "........" BITMAP "........" BITMAP "........" BITMAP "........" BITMAP "........" ' 22 BITMAP "..XX...." BITMAP ".XX....." BITMAP "XXXXXXXX" BITMAP ".XX....." BITMAP "..XX...." BITMAP "........" BITMAP "........" BITMAP "........" ' 23 BITMAP "....XX.." BITMAP ".....XX." BITMAP "XXXXXXXX" BITMAP ".....XX." BITMAP "....XX.." BITMAP "........" BITMAP "........" BITMAP "........" ' 24 BITMAP "........" BITMAP "........" BITMAP "...XX..." BITMAP "...XX..." BITMAP "........" BITMAP "........" BITMAP "........" BITMAP "........" ' 25 BITMAP "........" BITMAP "...XX..." BITMAP "..XXXX.." BITMAP "..XXXX.." BITMAP "...XX..." BITMAP "........" BITMAP "........" BITMAP "........" ' 26 BITMAP "...XX..." BITMAP "..XXXX.." BITMAP ".XXXXXX." BITMAP ".XXXXXX." BITMAP "..XXXX.." BITMAP "...XX..." BITMAP "........" BITMAP "...XX..." ' 27 BITMAP "..XXXX.." BITMAP ".XXXXXX." BITMAP "XXXXXXXX" BITMAP "XXXXXXXX" BITMAP ".XXXXXX." BITMAP "..XXXX.." BITMAP "...XX..." BITMAP "..XXXX.." ' 28 BITMAP ".XXXXXX." BITMAP "XXXXXXXX" BITMAP "XXXXXXXX" BITMAP "XXXXXXXX" BITMAP "XXXXXXXX" BITMAP ".XXXXXX." BITMAP "...XX..." sin: DATA 0 DATA 6 DATA 11 DATA 17 DATA 22 DATA 27 DATA 32 DATA 37 DATA 41 DATA 45 DATA 49 DATA 52 DATA 55 DATA 58 DATA 60 DATA 62 DATA 63 DATA 63 DATA 63 DATA 63 DATA 63 DATA 62 DATA 60 DATA 58 DATA 55 DATA 52 DATA 49 DATA 45 DATA 41 DATA 37 DATA 32 DATA 27 DATA 22 DATA 17 DATA 11 DATA 6 DATA 0 DATA -5 DATA -10 DATA -16 DATA -21 DATA -26 DATA -31 DATA -36 DATA -40 DATA -44 DATA -48 DATA -51 DATA -54 DATA -57 DATA -59 DATA -61 DATA -62 DATA -63 DATA -63 DATA -63 DATA -62 DATA -61 DATA -59 DATA -57 DATA -54 DATA -51 DATA -48 DATA -44 DATA -40 DATA -36 DATA -31 DATA -26 DATA -21 DATA -16 DATA -10 DATA -5 cos: DATA 63 DATA 63 DATA 63 DATA 62 DATA 60 DATA 58 DATA 55 DATA 52 DATA 49 DATA 45 DATA 41 DATA 37 DATA 32 DATA 27 DATA 22 DATA 17 DATA 11 DATA 6 DATA 0 DATA -5 DATA -10 DATA -16 DATA -21 DATA -26 DATA -31 DATA -36 DATA -40 DATA -44 DATA -48 DATA -51 DATA -54 DATA -57 DATA -59 DATA -61 DATA -62 DATA -63 DATA -63 DATA -63 DATA -62 DATA -61 DATA -59 DATA -57 DATA -54 DATA -51 DATA -48 DATA -44 DATA -40 DATA -36 DATA -31 DATA -26 DATA -21 DATA -16 DATA -10 DATA -5 DATA 0 DATA 6 DATA 11 DATA 17 DATA 22 DATA 27 DATA 32 DATA 37 DATA 41 DATA 45 DATA 49 DATA 52 DATA 55 DATA 58 DATA 60 DATA 62 DATA 63 DATA 63 music_shot_explosion: DATA 3 MUSIC E3Z,-,- MUSIC F3Z,-,- MUSIC G3Z,-,- MUSIC E3Z,-,- MUSIC F3Z,-,- MUSIC D3Z,-,- MUSIC C3Z,-,- MUSIC STOP music_gorilla_explosion: DATA 7 MUSIC E3Z,-,- MUSIC F3Z,-,- MUSIC G3Z,-,- MUSIC E3Z,-,- MUSIC F3Z,-,- MUSIC D3Z,-,- MUSIC C3Z,-,- MUSIC STOP music_intro: DATA 7 MUSIC B2W,-,- MUSIC -,-,- ' MUSIC -,-,- ' MUSIC -,-,- ' MUSIC -,-,- ' MUSIC -,-,- ' MUSIC -,-,- ' MUSIC -,-,- ' MUSIC -,-,- ' MUSIC -,-,- MUSIC B2,-,- MUSIC A2,-,- MUSIC A2,-,- MUSIC -,-,- MUSIC B2,-,- MUSIC -,-,- MUSIC B2,-,- MUSIC -,-,- MUSIC B2,-,- MUSIC A2,-,- MUSIC A2,-,- MUSIC A2,-,- MUSIC -,-,- MUSIC B2,-,- MUSIC -,-,- ' MUSIC -,-,- ' MUSIC -,-,- ' MUSIC -,-,- ' MUSIC -,-,- ' MUSIC -,-,- ' MUSIC -,-,- ' MUSIC -,-,- ' MUSIC -,-,- MUSIC B2,-,- MUSIC A2,-,- MUSIC A2,-,- MUSIC -,-,- MUSIC B2,-,- MUSIC D3#,-,- MUSIC -,-,- ' MUSIC -,-,- ' MUSIC -,-,- ' MUSIC -,-,- ' MUSIC -,-,- ' MUSIC -,-,- ' MUSIC -,-,- ' MUSIC -,-,- ' MUSIC -,-,- MUSIC D3#,-,- MUSIC C3#,-,- MUSIC C3#,-,- MUSIC -,-,- MUSIC D3#,-,- MUSIC -,-,- MUSIC D3#,-,- MUSIC -,-,- MUSIC D3#,-,- MUSIC C3#,-,- MUSIC C3#,-,- MUSIC C3#,-,- MUSIC -,-,- MUSIC D3#,-,- MUSIC -,-,- MUSIC D3#,-,- MUSIC C3#,-,- MUSIC C3#,-,- MUSIC -,-,- MUSIC D3#,-,- MUSIC F3#,-,- MUSIC -,-,- ' MUSIC -,-,- ' MUSIC -,-,- ' MUSIC -,-,- ' MUSIC -,-,- ' MUSIC -,-,- ' MUSIC -,-,- ' MUSIC -,-,- ' MUSIC -,-,- MUSIC F3#,-,- MUSIC E3,-,- MUSIC E3,-,- MUSIC -,-,- MUSIC F3#,-,- MUSIC -,-,- MUSIC F3#,-,- MUSIC -,-,- MUSIC F3#,-,- MUSIC E3,-,- MUSIC E3,-,- MUSIC E3,-,- MUSIC -,-,- MUSIC F3#,-,- MUSIC -,-,- ' MUSIC -,-,- ' MUSIC -,-,- ' MUSIC -,-,- ' MUSIC -,-,- ' MUSIC -,-,- ' MUSIC -,-,- ' MUSIC -,-,- ' MUSIC -,-,- MUSIC F3#,-,- MUSIC E3,-,- MUSIC E3,-,- MUSIC -,-,- MUSIC F3#,-,- MUSIC -,-,- MUSIC B3,-,- MUSIC -,-,- ' MUSIC -,-,- ' MUSIC -,-,- ' MUSIC -,-,- ' MUSIC -,-,- ' MUSIC -,-,- ' MUSIC -,-,- ' MUSIC -,-,- ' MUSIC -,-,- MUSIC B3,-,- MUSIC A3,-,- MUSIC A3,-,- MUSIC -,-,- MUSIC F3#,-,- MUSIC -,-,- MUSIC F3#,-,- MUSIC -,-,- MUSIC F3#,-,- MUSIC E3,-,- MUSIC E3,-,- MUSIC E3,-,- MUSIC -,-,- MUSIC B2,-,- MUSIC -,-,- ' MUSIC -,-,- ' MUSIC -,-,- ' MUSIC -,-,- ' MUSIC -,-,- ' MUSIC -,-,- ' MUSIC -,-,- ' MUSIC -,-,- ' MUSIC -,-,- MUSIC B2,-,- MUSIC A2,-,- MUSIC A2,-,- MUSIC -,-,- MUSIC B2,-,- MUSIC STOP music_title: DATA 8 MUSIC C2Y,-,- MUSIC D2,-,- MUSIC E2,-,- MUSIC D2,-,- MUSIC C2,-,- MUSIC D2,-,- MUSIC E2,-,- MUSIC S,-,- MUSIC C2,-,- MUSIC S,-,- MUSIC C2,-,- MUSIC S,-,- MUSIC STOP music_throw: DATA 3 MUSIC G3#Z,-,- MUSIC S,-,- MUSIC C3,-,- MUSIC B3,-,- MUSIC S,-,- MUSIC S,-,- MUSIC S,-,- MUSIC A3#,-,- MUSIC STOP