Home » Archimedes archive » Archimedes World » AW-1994-06-Disc2.adf » Disk2Jun94 » !AWJune94/Goodies/Alien/!Invasion/BasicProgs/WEdit

!AWJune94/Goodies/Alien/!Invasion/BasicProgs/WEdit

This website contains an archive of files for the Acorn Electron, BBC Micro, Acorn Archimedes, Commodore 16 and Commodore 64 computers, which Dominic Ford has rescued from his private collection of floppy disks and cassettes.

Some of these files were originally commercial releases in the 1980s and 1990s, but they are now widely available online. I assume that copyright over them is no longer being asserted. If you own the copyright and would like files to be removed, please contact me.

Tape/disk: Home » Archimedes archive » Archimedes World » AW-1994-06-Disc2.adf » Disk2Jun94
Filename: !AWJune94/Goodies/Alien/!Invasion/BasicProgs/WEdit
Read OK:
File size: 8299 bytes
Load address: 0000
Exec address: 0000
File contents
   10REM > <Invasion$Dir>.BasicProgs.WEdit
   20
   30REM Program : Invader Wave Editor
   40REM Version : 1
   50REM Author  : A.S.W.Nelson
   60REM Date    : 19.12.89
   70:
   80ON ERROR CLS:PRINT "Unexpected Error: ";ERR;:REPORT:PRINT " at line: ";ERL:END
   90PROCinit
  100PROCnow_what
  110CHAIN "<Invasion$Dir>.BASICPROGS.Menu"
  120:
  130DEFPROCinit
  140PROCdefine_variables
  150MODE 12
  160OSCLI("CHANNELVOICE 1 WaveSynth-Beep")
  170OSCLI("SNEW")
  180OSCLI("POINTER 1")
  190OSCLI("fx 229 1")
  200MOUSE ON
  210MOUSE RECTANGLE 0,10,1280,1010
  220MOUSE TO 640,512
  230PROCdefault_palette
  240PROCinit_menus
  250CLS
  260PROCdraw_screen
  270PROCsprite_load(oldspritefilename$)
  280PROCwave_load(oldfilename$)
  290PROCshow_current_wave
  300OFF
  310PROCmessage("Invader Waves Can Now Be Edited")
  320PROCinfo_line
  330ENDPROC
  340:
  350DEFPROCdefine_variables
  360LOCAL offset%
  370black%=0
  380dark_grey%=1
  390light_grey%=3
  400red%=4
  410orange%=5
  420yellow%=6
  430bright_green%=8
  440dark_green%=9
  450cyan%=10
  460dark_blue%=11
  470dark_brown%=12
  480light_brown%=13
  490white%=15
  500magenta%=9
  510WY%=32+3*12*4+8
  520current_sprite%=0
  530current_wave%=1
  540max_no_sprites%=122
  550max_no_waves%=128
  560num_spaces%=3
  570floodx%=FALSE
  580floody%=FALSE
  590current_invader%=1
  600sprite_size%=48+max_no_sprites%*384
  610sprite_X%=72
  620sprite_Y%=68
  630swap%=FALSE
  640defined_waves%=0
  650unhighlight%=TRUE
  660free_edit%=0
  670seed%=1024*16
  680old_invader%=0
  690wave_size%=2+max_no_waves%*144
  700to_wave%=0
  710original%=TRUE
  720num%=0
  730oldspritefilename$="<Invasion$Dir>.MISC.InvSprite"
  740oldfilename$="<Invasion$Dir>.MISC.WaveCopy"
  750B$=""
  760filename$=""
  770password$=""
  780wavepassword$=""
  790DIM sprite_data% sprite_size%
  800DIM wave_data% wave_size%
  810DIM current_sprite_c%(16,16)
  820DIM current_wave_i%(16,8)
  830DIM wave_attributes%(4)
  840wave_attributes%()=0
  850current_sprite_c%()=0
  860current_wave_i%()=0
  870FOR I%=1 TO 128
  880   PROCwave_offset(I%)
  890   wavepassword$="DUMMY WORD"
  900   FOR K%=0 TO 9
  910      ?(wave_data%+offset%+K%)=255-ASC(MID$(wavepassword$,K%+1,1))
  920   NEXT K%
  930   ?(wave_data%+offset%+10)=16:REM width
  940   ?(wave_data%+offset%+11)=7 :REM bomb attributes
  950   ?(wave_data%+offset%+12)=1 :REM wave height
  960   ?(wave_data%+offset%+13)=10:REM num bombs
  970   ?(wave_data%+offset%+14)=3 :REM num rockets
  980   ?(wave_data%+offset%+15)=1 :REM init dir
  990   FOR K%=16 TO 143
 1000      ?(wave_data%+offset%+K%)=32
 1010   NEXT K%
 1020NEXT I%
 1030ENDPROC
 1040:
 1050DEFPROCdefault_palette
 1060LOCAL A%,B%(),C%
 1070DIM B%(3)
 1080RESTORE
 1090DATA 0,0,0
 1100DATA 128,128,128
 1110DATA 176,176,176
 1120DATA 208,208,208
 1130DATA 240,0,0
 1140DATA 240,176,0
 1150DATA 240,224,0
 1160DATA 240,240,208
 1170DATA 0,240,0
 1180DATA 0,176,96
 1190DATA 0,192,240
 1200DATA 0,0,160
 1210DATA 160,112,96
 1220DATA 192,144,80
 1230DATA 240,208,176
 1240DATA 240,240,240
 1250REMDATA 0,0,0
 1260REMDATA 255,0,0
 1270REMDATA 0,255,0
 1280REMDATA 255,255,0
 1290REMDATA 0,0,255
 1300REMDATA 255,0,255
 1310REMDATA 0,255,255
 1320REMDATA 255,255,255
 1330REMDATA 190,130,0
 1340REMDATA 255,120,50
 1350REMDATA 128,128,128
 1360REMDATA 0,0,128
 1370REMDATA 200,200,200
 1380REMDATA 0,128,0
 1390REMDATA 240,220,0
 1400REMDATA 255,180,0
 1410FOR A%=0 TO 15
 1420   FOR C%=1 TO 3
 1430      READ B%(C%)
 1440   NEXT C%
 1450   COLOUR A%,B%(1),B%(2),B%(3)
 1460NEXT A%
 1470ENDPROC
 1480:
 1490DEFPROCinit_menus
 1500READ total_menus%
 1510DIM menu_length%(total_menus%),menu_origin%(total_menus%)
 1520max_menu_length%=0
 1530FOR A%=1 TO total_menus%
 1540   READ menu_length%(A%)
 1550   IF menu_length%(A%)>max_menu_length% THEN max_menu_length%=menu_length%(A%)
 1560NEXT A%
 1570FOR A%=1 TO total_menus%
 1580   READ menu_origin%(A%)
 1590NEXT A%
 1600DIM menu$(total_menus%,max_menu_length%)
 1610FOR A%=1 TO total_menus%
 1620   FOR B%=1 TO menu_length%(A%)
 1630      READ menu$(A%,B%)
 1640   NEXT B%
 1650NEXT A%
 1660current_menu%=1
 1670menu_position=0
 1680DATA 9
 1690DATA 6, 8, 7, 4, 8, 3, 3, 4, 5
 1700DATA 0, 1, 1, 1, 1, 2, 2, 2, 2
 1710DATA Wave Editor Menu, Edit Wave, Edit Wave Attributes, File Options, Select Wave, Exit Editor
 1720DATA Edit Wave Menu, Clear, Flip Menu, Flood Menu, Reflect Menu, Shift Menu, Swap, Undo All Changes
 1730DATA Wave Attributes Menu, Bomb Types, Max Invader Bombs, Max Player Rockets, Initial Direction, Initial Wave Height, Password
 1740DATA File Options Menu, Load Sprites, Load Waves, Save Waves
 1750DATA Select Wave Menu, Copy To Wave Number,To Wave Number, Set Random Attribute, Random Wave, Random X Reflect, Random Y Reflect, Random X & Y Reflect
 1760DATA Flip Wave Menu, Row, Column
 1770DATA Flood Menu, Row, Column
 1780DATA Reflect Menu, X Axis, Y Axis, X And Y Axis
 1790DATA Shift Menu, Left, Right, Up, Down
 1800ENDPROC
 1810:
 1820DEFPROCdraw_screen
 1830LOCAL D%
 1840PROCshow_menu(current_menu%,0)
 1850PROClogo
 1860GCOL 0,dark_blue%
 1870RECTANGLE FILL 0,0,1280,36
 1880RECTANGLE FILL 0,738,4+18*44,36
 1890GCOL 0,white%:REM show initial height
 1900RECTANGLE 1160,464,118,266
 1910GCOL 0,dark_grey%
 1920RECTANGLE FILL 1162,692,114,32
 1930RECTANGLE FILL 1160,410,118,40
 1940RECTANGLE FILL 1162,92,114,40
 1950RECTANGLE FILL 998,92+44,152,40
 1960GCOL 0,white%
 1970VDU 5
 1980MOVE 1172,720
 1990PRINT "HEIGHT";
 2000MOVE 1180,442
 2010PRINT "BOMBS";
 2020VDU 4
 2030OFF
 2040LINE 1160,688,1279,688
 2050REM show bomb title
 2060RECTANGLE 1160,410,118,40
 2070REM show num bombs box
 2080RECTANGLE 1160,WY%-56+20,118,56
 2090D%=WY%-14+20
 2100VDU 5
 2110MOVE 1166,D%
 2120PRINT CHR$(93);
 2130MOVE 1166+16,D%
 2140PRINT CHR$(95);
 2150MOVE 1279-22,D%
 2160PRINT CHR$(94);
 2170MOVE 1279-22-16,D%
 2180PRINT CHR$(95);
 2190VDU 4
 2200OFF
 2210REM show max no. players rockets
 2220RECTANGLE 1160,92,118,40
 2230RECTANGLE 1160,40,118,52
 2240VDU 5
 2250MOVE 1164,124
 2260PRINT "ROCKETS";
 2270MOVE 1166,80
 2280PRINT CHR$(93);
 2290MOVE 1166+16,80
 2300PRINT CHR$(95);
 2310MOVE 1279-22,80
 2320PRINT CHR$(94);
 2330MOVE 1279-22-16,80
 2340PRINT CHR$(95);
 2350REM show initial dir
 2360RECTANGLE 998,92+44,152,40
 2370FOR D%=0 TO 2
 2380   RECTANGLE 998+D%*50,40,52,96
 2390NEXT D%
 2400LINE 998,40+48,1150,40+48
 2410MOVE 1002,92+76
 2420PRINT "DIRECTION";
 2430MOVE 1014,40+86
 2440PRINT CHR$(93);
 2450MOVE 1066,40+86
 2460PRINT "?";
 2470MOVE 1066+52,40+86
 2480PRINT CHR$(94);
 2490REM show which wave
 2500GCOL 0,dark_grey%
 2510RECTANGLE FILL 840,92,150,40
 2520GCOL 0,white%
 2530RECTANGLE 840,92,118+32,40
 2540RECTANGLE 840,40,118+32,52
 2550VDU 5
 2560MOVE 884,124
 2570PRINT "WAVE";
 2580MOVE 846,80
 2590PRINT CHR$(93);
 2600MOVE 846+16,80
 2610PRINT CHR$(95);
 2620MOVE 958+32-22,80
 2630PRINT CHR$(94);
 2640MOVE 958+32-22-16,80
 2650PRINT CHR$(95);
 2660VDU 4
 2670OFF
 2680ENDPROC
 2690:
 2700DEFPROCshow_invader(X%,Y%)
 2710PROCplot_sprite(current_wave_i%(X%,Y%),(X%-1)*18*4,WY%+(8-Y%)*17*4)
 2720ENDPROC
 2730:
 2740DEFPROCnow_what
 2750LOCAL exit%,MX%,MY%,MB%,valid%
 2760exit%=FALSE
 2770REPEAT
 2780VDU 4
 2790PRINTTAB(0,0)wavepassword$,password$
 2800
 2810   valid%=FALSE
 2820   PROCmouse
 2830   IF MY%>776 AND MX%<16*4+32+16*44 THEN PROCcheck_menu_options
 2840   IF FNis_mouse_in_box(MX%,MY%,0,WY%,8+16*18*4,16+8*16*4) THEN PROCinvader_grid
 2850   IF FNis_mouse_in_box(MX%,MY%,0,40,sprite_X%*6,sprite_Y%*2) THEN PROCselect_invader
 2860   IF FNis_mouse_in_box(MX%,MY%,840,40,150,48) THEN PROCget_new_wave
 2870   IF FNis_mouse_in_box(MX%,MY%,8+18*16*4,WY%+20,1278-8-18*16*4,sprite_Y%*3) THEN PROCtoggle_bomb_type
 2880   IF FNis_mouse_in_box(MX%,MY%,1162,468,114,36*6) THEN PROCget_wave_height
 2890   IF FNis_mouse_in_box(MX%,MY%,1162,WY%-56+20,114,56) THEN PROCget_num_bombs
 2900   IF FNis_mouse_in_box(MX%,MY%,1162,40,114,52) THEN PROCget_num_rockets
 2910   IF FNis_mouse_in_box(MX%,MY%,1000,40,150,48) THEN PROCget_init_dir
 2920   IF NOT valid% THEN PROCwrong_sound
 2930UNTIL exit%
 2940ENDPROC
 2950:
 2960DEFPROCmouse
 2970*FX21,9
 2980REPEAT
 2990   MOUSE MX%,MY%,MB%
 3000   PROCdelay(.15)
 3010UNTIL MB%>0
 3020ENDPROC
 3030:
 3040DEFPROCdelay(seconds)
 3050TIME=0
 3060REPEAT
 3070UNTIL TIME>seconds*100
 3080ENDPROC
 3090:
 3100DEFPROCwrong_sound
 3110LOCAL I%
 3120FOR I%=11 TO 90 STEP 2
 3130   SOUND 1,-14,I%,3
 3140   SOUND 1,-14,I%-10,3
 3150NEXT I%
 3160ENDPROC
 3170:
 3180DEFPROCinvader_grid
 3190LOCAL X%,Y%,offset%,inv%,action$,A%
 3200X%=1+INT(MX%/(18*4))
 3210Y%=8-INT((MY%-WY%)/sprite_Y%)
 3220IF Y%<1 THEN Y%=1
 3230IF Y%>8 THEN Y%=8
 3240IF X%>16 THEN X%=16
 3250IF X%<1 THEN X%=1
 3260action$=" "
 3270CASE MB% OF
 3280   WHEN 4: inv%=current_invader%: action$="Added To"
 3290   WHEN 1: inv%=0: action$="Wiped From"
 3300   OTHERWISE: REM ignore
 3310ENDCASE
 3320IF action$<>" " THEN
 3330   IF floodx%=FALSE AND floody%=FALSE THEN
 3340      PROCmessage("Invader "+action$+" Wave")
 3350      current_wave_i%(X%,Y%)=inv%
 3360      PROCshow_invader(X%,Y%)
 3370   ELSE
 3380      IF floodx%=TRUE THEN
 3390         PROCmessage("Invader Row "+action$+" Wave")
 3400         FOR A%=1 TO 16
 3410            current_wave_i%(A%,Y%)=inv%
 3420            PROCshow_invader(A%,Y%)
 3430         NEXT A%
 3440      ELSE
 3450         PROCmessage("Invader Column "+action$+" Wave")
 3460         FOR A%=1 TO 8
 3470            current_wave_i%(X%,A%)=inv%
 3480            PROCshow_invader(X%,A%)
 3490         NEXT A%
 3500      ENDIF
 3510   ENDIF
 3520   PROCusual
 3530ENDIF
 3540ENDPROC
 3550:
 3560DEFPROCshift_right
 3570LOCAL I%,J%
 3580FOR J%=1 TO 8
 3590   current_wave_i%(0,J%)=current_wave_i%(16,J%)
 3600NEXT J%
 3610FOR I%=15 TO 0 STEP - 1
 3620   FOR J%=1 TO 8
 3630      current_wave_i%(I%+1,J%)=current_wave_i%(I%,J%)
 3640   NEXT J%
 3650NEXT I%
 3660PROCmessage("Invader Wave Shifted Right")
 3670PROCredisplay
 3680ENDPROC
 3690:
 3700DEFPROCshift_left
 3710LOCAL I%,J%
 3720FOR I%=1 TO 16
 3730   FOR J%=1 TO 8
 3740      current_wave_i%(I%-1,J%)=current_wave_i%(I%,J%)
 3750   NEXT J%
 3760NEXT I%
 3770FOR J%=1 TO 8
 3780   current_wave_i%(16,J%)=current_wave_i%(0,J%)
 3790NEXT J%
 3800PROCmessage("Invader Wave Shifted Left")
 3810PROCredisplay
 3820ENDPROC
 3830:
 3840DEFPROCredisplay
 3850PROCdisplay_wave
 3860PROCusual
 3870ENDPROC
 3880:
 3890DEFPROCshift_up
 3900LOCAL I%,J%
 3910FOR I%=1 TO 8
 3920   FOR J%=1 TO 16
 3930       current_wave_i%(J%,I%-1)=current_wave_i%(J%,I%)
 3940   NEXT J%
 3950NEXT I%
 3960FOR J%=1 TO 16
 3970   current_wave_i%(J%,8)=current_wave_i%(J%,0)
 3980NEXT J%
 3990PROCmessage("Invader Wave Shifted Up")
 4000PROCredisplay
 4010ENDPROC
 4020:
 4030DEFPROCshift_down
 4040LOCAL I%,J%
 4050FOR J%=1 TO 16
 4060   current_wave_i%(J%,0)=current_wave_i%(J%,8)
 4070NEXT J%
 4080FOR I%=7 TO 0 STEP - 1
 4090   FOR J%=1 TO 16
 4100      current_wave_i%(J%,I%+1)=current_wave_i%(J%,I%)
 4110   NEXT J%
 4120NEXT I%
 4130PROCmessage("Invader Wave Shifted Down")
 4140PROCredisplay
 4150ENDPROC
 4160:
 4170DEFPROCflipy
 4180LOCAL I%,J%
 4190FOR I%=1 TO 4
 4200   FOR J%=1 TO 16
 4210      SWAP current_wave_i%(J%,I%),current_wave_i%(J%,8-I%+1)
 4220   NEXT J%
 4230NEXT I%
 4240PROCmessage("Invader Wave Y Flipped")
 4250PROCredisplay
 4260ENDPROC
 4270:
 4280DEFPROCflipx
 4290LOCAL I%,J%
 4300FOR I%=1 TO 8
 4310   FOR J%=1 TO 8
 4320      SWAP current_wave_i%(I%,J%),current_wave_i%(16-I%+1,J%)
 4330   NEXT J%
 4340NEXT I%
 4350PROCmessage("Invader Wave X Flipped")
 4360PROCredisplay
 4370ENDPROC
 4380:
 4390DEFPROCclear
 4400current_wave_i%()=0
 4410PROCredisplay
 4420PROCmessage("Invader Wave Now Cleared")
 4430ENDPROC
 4440:
 4450DEFPROCcopy
 4460LOCAL offset1%,offset2%,I%,from%,to%
 4470from%=current_wave%
 4480PROCto_which_wave_no
 4490PROCwave_offset(from%)
 4500offset1%=offset%
 4510PROCwave_offset(to%)
 4520offset2%=offset%
 4530FOR I%=0 TO 143 STEP 4
 4540   !(wave_data%+offset2%+I%)=!(wave_data%+offset1%+I%)
 4550NEXT I%
 4560valid%=TRUE
 4570PROCmessage("Invader Wave Copied")
 4580ENDPROC
 4590:
 4600DEFPROCexit
 4610exit%=TRUE
 4620ON
 4630MOUSE OFF
 4640MODE 9
 4650CLS
 4660unhighlight%=FALSE
 4670valid%=TRUE
 4680OSCLI("fx 229 0")
 4690ENDPROC
 4700:
 4710DEFPROCsprite_load(filename$)
 4720LOCAL file%,offset%,E%,F%,dummy%,T%,byte%,loadaddr,filelen,B%()
 4730LOCAL ERROR
 4740DIM B%(3)
 4750num%=0
 4760REMON ERROR LOCAL PROCerror:ENDPROC
 4770PROCmessage("Please Wait...Loading Sprite File")
 4780REMON ERROR LOCAL PROCerror:ENDPROC
 4790SYS "OS_File",5,filename$ TO ,,loadaddr,,filelen
 4800IF (loadaddr>>>20)=&FFF THEN
 4810   loadaddr=&FFF AND (loadaddr>>>8)
 4820ELSE
 4830   loadaddr = -1
 4840ENDIF
 4850IF loadaddr=&333 THEN
 4860   offset%=num%*1536
 4870   IF num%>0 THEN
 4880      FOR A%=0 TO 47 STEP 4
 4890         !(palette%+A%)=!(sprite_data%+offset%+A%)
 4900      NEXT A%
 4910   ENDIF
 4920   temp%=sprite_data%+offset%
 4930   REMON ERROR LOCAL PROCerror:ENDPROC
 4940   OSCLI("LOAD "+filename$+" "+STR$~temp%)
 4950   IF num%>0 THEN
 4960      FOR A%=0 TO 47 STEP 4
 4970         !(sprite_data%+offset%+A%)=!(palette%+A%)
 4980      NEXT A%
 4990   ELSE
 5000      FOR A%=0 TO 15
 5010         FOR C%=1 TO 3
 5020            B%(C%)=?(sprite_data%+A%*3+C%-1)
 5030         NEXT C%
 5040         COLOUR A%,B%(1),B%(2),B%(3)
 5050      NEXT A%
 5060   ENDIF
 5070   PROCdraw_invaders
 5080   PROCplot_sprite(current_invader%,8+6*sprite_X%,40+sprite_Y%/2)
 5090   oldspritefilename$=filename$
 5100   PROCinfo_line
 5110   PROCmessage("Sprite File Loaded")
 5120ELSE
 5130   PROCmessage("File Specified Is Not A Sprite File")
 5140ENDIF
 5150valid%=TRUE
 5160ENDPROC
 5170:
 5180DEFPROCwave_load(filename$)
 5190LOCAL file%,offset%,E%,F%,dummy%,T%,byte%,loadaddr,filelen,B%(),temp%
 5200LOCAL ERROR
 5210DIM B%(3)
 5220num%=0
 5230REMON ERROR LOCAL PROCerror:ENDPROC
 5240PROCmessage("Please Wait...Loading Wave File")
 5250REMON ERROR LOCAL PROCerror:ENDPROC
 5260SYS "OS_File",5,filename$ TO ,,loadaddr,,filelen
 5270IF (loadaddr>>>20)=&FFF THEN
 5280   loadaddr=&FFF AND (loadaddr>>>8)
 5290ELSE
 5300   loadaddr = -1
 5310ENDIF
 5320IF loadaddr=&334 THEN
 5330   offset%=num%*144
 5340   IF num%>0 THEN
 5350      REM preserve 2 bytes that would get written over
 5360   ENDIF
 5370   temp%=wave_data%+offset%
 5380   REMON ERROR LOCAL PROCerror:ENDPROC
 5390   OSCLI("LOAD "+filename$+" "+STR$~temp%)
 5400   IF num%>0 THEN
 5410      REM reset 2 bytes that were overwritten
 5420   ENDIF
 5430   oldfilename$=filename$
 5440   PROCinfo_line
 5450   PROCmessage("Wave File Loaded")
 5460ELSE
 5470   PROCmessage("File Specified Is Not A Wave File")
 5480ENDIF
 5490defined_waves%=?(wave_data%+1)
 5500free_edit%=?wave_data%
 5510PROCshow_current_wave
 5520original%=TRUE
 5530oldfilename$=filename$
 5540PROCinfo_line
 5550valid%=TRUE
 5560ENDPROC
 5570:
 5580DEFPROCwave_save(filename$)
 5590LOCAL L%,offset%,E%,file%,M%,A%,B%,to%
 5600PROCstore_current_wave
 5610PROCto_which_wave_no
 5620?(wave_data%+1)=to%
 5630num%=to%
 5640REMON ERROR LOCAL PROCerror:ENDPROC
 5650PROCmessage("Please Wait...Saving Wave File")
 5660temp%=2+(num%+1)*144
 5670REMON ERROR LOCAL PROCerror:ENDPROC
 5680OSCLI("SAVE "+filename$+" "+STR$~wave_data%+"+"+STR$~temp%)
 5690OSCLI("SETTYPE "+filename$+" 334")
 5700valid%=TRUE
 5710original%=TRUE
 5720defined_waves%=?(wave_data%+1)
 5730PROCinfo_line
 5740PROCmessage("Wave File Saved")
 5750ENDPROC
 5760:
 5770DEFPROCdisplay_sprite
 5780LOCAL I%,J%
 5790FOR I%=1 TO 16
 5800   FOR J%=1 TO 16
 5810      PROCdisplay_point(I%-1,J%-1)
 5820   NEXT J%
 5830NEXT I%
 5840ENDPROC
 5850:
 5860DEFPROCdisplay_point(X%,Y%)
 5870GCOL 0,current_sprite_c%(X%+1,Y%+1)
 5880Y%=15-Y%
 5890RECTANGLE FILL SX%+2+X%*mag%,SY%+4+Y%*mag%,mag%-2,mag%-4
 5900POINT AX%+2+X%*4,AY%+4+Y%*4
 5910POINT AX%+4+X%*4,AY%+4+Y%*4
 5920ENDPROC
 5930:
 5940DEFPROCshow_current_sprite
 5950PROCget_sprite_info
 5960PROCdisplay_sprite
 5970ENDPROC
 5980:
 5990DEFPROCget_sprite_info
 6000LOCAL offset%,I%,J%
 6010PROCcalc_offset(current_sprite%)
 6020FOR J%=1 TO 16
 6030   FOR I%=1 TO 16
 6040       current_sprite_c%(I%,J%)=FNget_col(I%,J%)
 6050   NEXT I%
 6060NEXT J%
 6070ENDPROC
 6080:
 6090DEFPROCto_which_wave_no
 6100LOCAL thru%
 6110thru%=FALSE
 6120COLOUR white%
 6130REPEAT
 6140   IF thru%=TRUE THEN PROCwrong_sound
 6150   PROCclearmessage
 6160   PRINT TAB(1,8);"To Which Wave ==> ";
 6170   INPUT to%
 6180   thru%=TRUE
 6190UNTIL to%>=1 AND to%<=max_no_waves%
 6200ENDPROC
 6210:
 6220DEFPROCget_filename
 6230LOCAL thru%
 6240thru%=FALSE
 6250COLOUR white%
 6260REPEAT
 6270   IF thru%=TRUE THEN PROCwrong_sound
 6280   PROCclearmessage
 6290   PRINT TAB(1,8);"Filename=";
 6300   INPUT filename$
 6310   thru%=TRUE
 6320UNTIL LEN(filename$)>0 AND LEN(filename$)<11
 6330ENDPROC
 6340:
 6350DEFPROCcalc_offset(value%)
 6360offset%=48+value%*384
 6370ENDPROC
 6380:
 6390DEFPROCwave_offset(value%)
 6400offset%=2+(value%-1)*144
 6410ENDPROC
 6420:
 6430DEFPROCclearmessage
 6440LOCAL L%
 6450L%=4+18*44
 6460GCOL 0,magenta%
 6470RECTANGLE FILL 0,738,L%,36
 6480COLOUR 128+magenta%
 6490ENDPROC
 6500:
 6510DEFPROCmessage(M$)
 6520LOCAL L%
 6530L%=4+18*44
 6540GCOL 0,dark_blue%
 6550RECTANGLE FILL 0,738,L%,36
 6560GCOL 0,white%
 6570VDU 5
 6580MOVE (L%-LEN(M$)*16)/2,766
 6590PRINT M$;
 6600VDU 4
 6610OFF
 6620ENDPROC
 6630:
 6640DEFPROCinfo_line
 6650LOCAL S1$,S2$,SUB%
 6660S1$=oldfilename$
 6670S2$=oldspritefilename$
 6680COLOUR 128+dark_blue%:REM background blue
 6690COLOUR white%
 6700OFF
 6710PRINT TAB(1,31);STRING$(78," ");
 6720SUB%=INSTR(oldfilename$,".")
 6730WHILE SUB%>0
 6740   oldfilename$=MID$(oldfilename$,SUB%+1,LEN(oldfilename$)-SUB%)
 6750   SUB%=INSTR(oldfilename$,".")
 6760ENDWHILE
 6770PRINT TAB(1,31);"File: """;oldfilename$;""" (";
 6780IF original% THEN
 6790   PRINT "Original";
 6800ELSE
 6810   PRINT "Modified";
 6820ENDIF
 6830PRINT ")";TAB(33,31);"Current Wave: ";STR$(current_wave%);
 6840SUB%=INSTR(oldspritefilename$,".")
 6850WHILE SUB%>0
 6860   oldspritefilename$=MID$(oldspritefilename$,SUB%+1,LEN(oldspritefilename$)-SUB%)
 6870   SUB%=INSTR(oldspritefilename$,".")
 6880ENDWHILE
 6890PRINT TAB(54,31);"Sprite File: """;oldspritefilename$;"""";
 6900oldfilename$=S1$
 6910oldspritefilename$=S2$
 6920ENDPROC
 6930:
 6940DEFFNis_mouse_in_box(MX%,MY%,X1%,Y1%,XD%,YD%)
 6950=MX%>X1% AND MX%<X1%+XD% AND MY%>Y1% AND MY%<Y1%+YD%
 6960:
 6970DEFPROCshow_menu(N%,highlight%)
 6980LOCAL A%,L%
 6990GCOL 0,black%
 7000RECTANGLE FILL 0,800,800,216
 7010L%=22
 7020COLOUR white%
 7030GCOL 0,white%
 7040COLOUR 128+red%
 7050PRINT TAB(0,0);STRING$(22," ");
 7060VDU 5
 7070MOVE (L%-LEN(menu$(N%,1)))*8,1023
 7080PRINT menu$(N%,1);
 7090VDU 4
 7100OFF
 7110FOR A%=2 TO menu_length%(N%)
 7120   IF highlight%=A% THEN
 7130      COLOUR 128+magenta%
 7140   ELSE
 7150      COLOUR 128+dark_blue%
 7160   ENDIF
 7170   PRINT TAB(L%,A%-2);STRING$(28," ");
 7180   VDU 5
 7190   MOVE 22*16+(27-LEN(menu$(N%,A%)))*8,1023-(A%-2)*32
 7200   PRINT menu$(N%,A%);
 7210   VDU 4
 7220   OFF
 7230NEXT A%
 7240ENDPROC
 7250:
 7260DEFPROCselect_invader
 7270LOCAL SSX%,SSY%
 7280SSX%=INT(MX%/sprite_X%)+1
 7290SSY%=INT((MY%-40)/sprite_Y%)
 7300old_invader%=current_invader%
 7310current_invader%=SSX%+SSY%*6
 7320PROCplot_sprite(current_invader%,8+6*sprite_X%,40+sprite_Y%/2)
 7330IF swap% THEN PROCdo_swap(old_invader%):PROCdisplay_wave
 7340valid%=TRUE
 7350PROCinfo_line
 7360ENDPROC
 7370:
 7380DEFPROCusual
 7390valid%=TRUE
 7400original%=FALSE
 7410PROCinfo_line
 7420ENDPROC
 7430:
 7440DEFPROCcheck_menu_options
 7450LOCAL expected_option%
 7460IF MX%<22*16 THEN
 7470   REM check go back to last menu
 7480   IF MY%>1023-32 THEN
 7490      current_menu%=menu_origin%(current_menu%)
 7500      IF current_menu%=0 THEN
 7510         PROCmessage("Invader Wave Editor By Adrian S.W.Nelson Version 1")
 7520         current_menu%=1
 7530      ELSE
 7540         PROCshow_menu(current_menu%,0)
 7550      ENDIF
 7560      floodx%=FALSE
 7570      floody%=FALSE
 7580      valid%=TRUE
 7590      unhighlight%=TRUE
 7600   ENDIF
 7610ELSE
 7620   REM get menu option
 7630   expected_option%=1+(1023-MY%)/32
 7640   IF expected_option%<=menu_length%(current_menu%)-1 THEN
 7650      valid%=TRUE
 7660      CASE current_menu% OF
 7670         WHEN 1: IF expected_option%=5 THEN
 7680                    PROCexit
 7690                 ELSE
 7700                    current_menu%=expected_option%+1
 7710                    PROCshow_menu(current_menu%,0)
 7720                 ENDIF
 7730         WHEN 2: CASE expected_option% OF
 7740                     WHEN 1: PROCshow_menu(current_menu%,expected_option%+1)
 7750                             PROCclear
 7760                     WHEN 6: PROCshow_menu(current_menu%,expected_option%+1)
 7770                             PROCswap
 7780                     WHEN 7: PROCshow_menu(current_menu%,expected_option%+1)
 7790                             PROCundo_all
 7800                     OTHERWISE: current_menu%=expected_option%+4
 7810                 ENDCASE
 7820         WHEN 3: PROCshow_menu(current_menu%,expected_option%+1)
 7830                 ON expected_option% PROCbomb_types,PROCmax_bombs,PROCmax_rockets,PROCinitial_dir,PROCheight,PROCpassword
 7840         WHEN 4: PROCshow_menu(current_menu%,expected_option%+1)
 7850                 ON expected_option% PROCload_sprite,PROCload_file,PROCsave_file
 7860         WHEN 5: PROCshow_menu(current_menu%,expected_option%+1)
 7870                 ON expected_option% PROCcopy_to_number,PROCto_number,PROCset_rnd_seed,PROCrnd_wave,PROCrnd_x_wave,PROCrnd_y_wave,PROCrnd_x_y_wave
 7880         WHEN 6: PROCshow_menu(current_menu%,expected_option%+1)
 7890                 ON expected_option% PROCflipx,PROCflipy
 7900         WHEN 7: PROCshow_menu(current_menu%,expected_option%+1)
 7910                 ON expected_option% PROCfloodx,PROCfloody
 7920         WHEN 8: PROCshow_menu(current_menu%,expected_option%+1)
 7930                 ON expected_option% PROCref_x,PROCref_y,PROCref_x_y
 7940         WHEN 9: PROCshow_menu(current_menu%,expected_option%+1)
 7950                 ON expected_option% PROCshift_left,PROCshift_right,PROCshift_up,PROCshift_down
 7960      ENDCASE
 7970      IF unhighlight% THEN PROCshow_menu(current_menu%,0)
 7980   ENDIF
 7990ENDIF
 8000ENDPROC
 8010:
 8020DEFPROCswap
 8030PROCmessage("Change Invader In Wave With Next Chosen One")
 8040swap%=TRUE
 8050valid%=TRUE
 8060ENDPROC
 8070:
 8080DEFPROCdo_swap(oldinvader%)
 8090LOCAL X%,Y%
 8100FOR X%=1 TO 16
 8110   FOR Y%=1 TO 8
 8120      IF current_wave_i%(X%,Y%)=oldinvader% THEN current_wave_i%(X%,Y%)=current_invader%
 8130   NEXT Y%
 8140NEXT X%
 8150PROCredisplay
 8160PROCmessage("New Invader Changed With Old Invader In Wave")
 8170swap%=FALSE
 8180ENDPROC
 8190:
 8200DEFPROCfloodx
 8210floodx%=TRUE
 8220floody%=FALSE
 8230valid%=TRUE
 8240unhighlight%=FALSE
 8250ENDPROC
 8260:
 8270DEFPROCfloody
 8280floody%=TRUE
 8290floodx%=FALSE
 8300valid%=TRUE
 8310unhighlight%=FALSE
 8320ENDPROC
 8330:
 8340DEFPROCto_number
 8350LOCAL to_wave%
 8360PROCto_which_wave_no
 8370PROCstore_current_wave
 8380PROCshow_height(0)
 8390current_wave%=to%
 8400PROCupdate_wave_box
 8410PROCshow_current_wave
 8420valid%=TRUE
 8430PROCmessage("Now At The Required Wave Number")
 8440PROCinfo_line
 8450ENDPROC
 8460:
 8470DEFPROCload_file
 8480PROCget_filename
 8490filename$="<Invasion$Dir>.WAVES."+filename$
 8500PROCwave_load(filename$)
 8510ENDPROC
 8520:
 8530DEFPROCsave_file
 8540PROCget_filename
 8550PROCto_lower(filename$)
 8560filename$="<Invasion$Dir>.WAVES."+filename$
 8570PROCwave_save(filename$)
 8580ENDPROC
 8590:
 8600DEFPROCload_sprite
 8610PROCget_filename
 8620filename$="<Invasion$Dir>.SPRITES."+filename$
 8630PROCsprite_load(filename$)
 8640ENDPROC
 8650:
 8660DEFPROCundo_all
 8670PROCshow_current_wave
 8680valid%=TRUE
 8690PROCinfo_line
 8700ENDPROC
 8710:
 8720DEFPROCdraw_invaders
 8730LOCAL A%,I%
 8740FOR A%=1 TO 15
 8750   CASE A% OF
 8760      WHEN  1:I%=25
 8770      WHEN  2:I%=17
 8780      WHEN  3:I%=21
 8790      WHEN  4:I%=85-28
 8800      WHEN  5:I%=89-28
 8810      WHEN  6:I%=93-28
 8820      WHEN  7:I%=73-28
 8830      WHEN  8:I%=77-28
 8840      WHEN  9:I%=97-28
 8850      WHEN 10:I%=81-28
 8860      WHEN 11:I%=109-28
 8870      WHEN 12:I%=101-28
 8880      WHEN 13:I%=14
 8890      WHEN 14:I%=15
 8900      WHEN 15:I%=0
 8910   ENDCASE
 8920   PROCshow_full_size(I%,A%-1)
 8930NEXT A%
 8940ENDPROC
 8950:
 8960DEFPROCshow_full_size(snumber%,pos%)
 8970LOCAL SSX%,SSY%
 8980CASE TRUE OF
 8990   WHEN pos%<12:SSX%=0+(pos% MOD 6)*sprite_X%
 9000                SSY%=40+(pos% DIV 6)*sprite_Y%
 9010   WHEN pos%<15:SSX%=8+18*16*4
 9020                SSY%=WY%+(pos%-12)*sprite_Y%+20
 9030                GCOL 0,white%
 9040                RECTANGLE SSX%+18*4,SSY%,1279-SSX%-18*4,sprite_Y%
 9050ENDCASE
 9060GCOL 0,black%
 9070RECTANGLE FILL SSX%+2,SSY%+4,sprite_X%-4,sprite_Y%-8
 9080GCOL 0,white%
 9090RECTANGLE SSX%,SSY%,sprite_X%,sprite_Y%
 9100IF snumber%=25 THEN PROCget_sprite(0,SSX%,SSY%,SSX%+sprite_X%,SSY%+sprite_Y%)
 9110PROCcalc_offset(snumber%)
 9120FOR J%=1 TO 16
 9130   FOR I%=1 TO 16
 9140       GCOL 0,FNget_col(I%,J%)
 9150       POINT SSX%+I%*4,SSY%+(17-J%)*4
 9160       POINT SSX%+I%*4+2,SSY%+(17-J%)*4
 9170   NEXT I%
 9180NEXT J%
 9190IF pos%<12 THEN PROCget_sprite(A%,SSX%,SSY%,SSX%+sprite_X%,SSY%+sprite_Y%)
 9200ENDPROC
 9210:
 9220DEFPROCerror
 9230CASE (ERR MOD 256) OF
 9240   WHEN 152,153 :PROCmessage("Disc Needs Compacting...Please Wait")
 9250                 OSCLI("COMPACT")
 9260   WHEN 198 :PROCmessage("This Disc Is Already Full")
 9270   WHEN 201 :PROCmessage("This Disc Is Write Protected")
 9280   WHEN 211 :PROCmessage("Please Insert A Disc Into The Drive")
 9290   WHEN 214 :PROCmessage("That File Does Not Exist")
 9300   OTHERWISE:PROCmessage("Error: "+STR$(ERR)+" at Line: "+STR$(ERL))
 9310ENDCASE
 9320ENDPROC
 9330:
 9340DEFPROCdisplay_wave
 9350LOCAL I%,J%
 9360FOR I%=1 TO 8
 9370   FOR J%=1 TO 16
 9380      PROCplot_sprite(current_wave_i%(J%,I%),(J%-1)*18*4,WY%+(8-I%)*17*4)
 9390   NEXT J%
 9400NEXT I%
 9410ENDPROC
 9420:
 9430DEFPROCref_x
 9440LOCAL I%,J%
 9450FOR I%=1 TO 8
 9460   FOR J%=1 TO 8
 9470      current_wave_i%(17-J%,I%)=current_wave_i%(J%,I%)
 9480   NEXT J%
 9490NEXT I%
 9500PROCmessage("Invader Wave X Reflected")
 9510PROCredisplay
 9520ENDPROC
 9530:
 9540DEFPROCref_y
 9550LOCAL I%,J%
 9560FOR I%=1 TO 4
 9570   FOR J%=1 TO 16
 9580      current_wave_i%(J%,9-I%)=current_wave_i%(J%,I%)
 9590   NEXT J%
 9600NEXT I%
 9610PROCmessage("Invader Wave Y Reflected")
 9620PROCredisplay
 9630ENDPROC
 9640:
 9650DEFPROCref_x_y
 9660LOCAL I%,J%
 9670FOR I%=1 TO 4
 9680   FOR J%=1 TO 8
 9690      current_wave_i%(17-J%,I%)=current_wave_i%(J%,I%)
 9700   NEXT J%
 9710   FOR J%=1 TO 16
 9720      current_wave_i%(J%,9-I%)=current_wave_i%(J%,I%)
 9730   NEXT J%
 9740NEXT I%
 9750PROCmessage("Invader Wave X and Y Reflected")
 9760PROCredisplay
 9770ENDPROC
 9780:
 9790DEFPROCset_rnd_seed
 9800LOCAL dummy%, thru%
 9810thru%=FALSE
 9820COLOUR white%
 9830REPEAT
 9840   IF thru%=TRUE THEN PROCwrong_sound
 9850   PROCclearmessage
 9860   PRINT TAB(1,8);"Set Random Seed (";seed%;") = ";
 9870   INPUT seed%
 9880   thru%=TRUE
 9890UNTIL seed%>0
 9900dummy%=RND(-seed%)
 9910thru%=FALSE
 9920REPEAT
 9930   IF thru%=TRUE THEN PROCwrong_sound
 9940   PROCclearmessage
 9950   PRINT TAB(1,8);"Set Random Spaces (";num_spaces%;") = ";
 9960   INPUT num_spaces%
 9970   thru%=TRUE
 9980UNTIL num_spaces%>=0
 9990PROCmessage("RND Seed Accepted")
10000ENDPROC
10010:
10020DEFPROCrnd_wave
10030LOCAL I%,J%,V%
10040FOR I%=1 TO 8
10050   FOR J%=1 TO 16
10060      current_wave_i%(J%,I%)=FNconvert(RND(12+num_spaces%))
10070   NEXT J%
10080NEXT I%
10090PROCmessage("Random Invader Wave Created")
10100PROCredisplay
10110ENDPROC
10120:
10130DEFFNconvert(value%)
10140IF value%>12 THEN value%=0
10150=value%
10160:
10170DEFFNunconvert(value%)
10180IF value%>0 THEN value%+=64 ELSE value%=32
10190=value%
10200:
10210DEFPROCrnd_x_wave
10220LOCAL I%,J%,V%
10230FOR I%=1 TO 8
10240   FOR J%=1 TO 8
10250      current_wave_i%(J%,I%)=FNconvert(RND(12+num_spaces%))
10260      current_wave_i%(17-J%,I%)=current_wave_i%(J%,I%)
10270   NEXT J%
10280NEXT I%
10290PROCmessage("Random X Reflected Invader Wave Created")
10300PROCredisplay
10310ENDPROC
10320:
10330DEFPROCrnd_y_wave
10340LOCAL I%,J%,V%
10350FOR I%=1 TO 4
10360   FOR J%=1 TO 16
10370      current_wave_i%(J%,I%)=FNconvert(RND(12+num_spaces%))
10380      current_wave_i%(J%,9-I%)=current_wave_i%(J%,I%)
10390   NEXT J%
10400NEXT I%
10410PROCmessage("Random Y Reflected Invader Wave Created")
10420PROCredisplay
10430ENDPROC
10440:
10450DEFPROCrnd_x_y_wave
10460LOCAL I%,J%,V%
10470FOR I%=1 TO 4
10480   FOR J%=1 TO 8
10490      current_wave_i%(J%,I%)=FNconvert(RND(12+num_spaces%))
10500      current_wave_i%(17-J%,I%)=current_wave_i%(J%,I%)
10510   NEXT J%
10520   FOR J%=1 TO 16
10530      current_wave_i%(J%,9-I%)=current_wave_i%(J%,I%)
10540   NEXT J%
10550NEXT I%
10560PROCmessage("Random X and Y Reflected Invader Wave Created")
10570PROCredisplay
10580ENDPROC
10590:
10600DEFPROCbomb_types
10610LOCAL value%, thru%
10620thru%=FALSE
10630COLOUR white%
10640REPEAT
10650   IF thru%=TRUE THEN PROCwrong_sound
10660   PROCclearmessage
10670   PRINT TAB(1,8);"Set Bomb Types (1=norm 2=diag 4=homing) = ";
10680   INPUT value%
10690   thru%=TRUE
10700UNTIL value%>=0 AND value%<=7
10710wave_attributes%(0)=value%
10720PROCshow_bomb_attributes
10730PROCmessage("New Bomb Types Accepted")
10740ENDPROC
10750:
10760DEFPROCmax_bombs
10770LOCAL value%, true%
10780thru%=FALSE
10790COLOUR white%
10800REPEAT
10810   IF thru%=TRUE THEN PROCwrong_sound
10820   PROCclearmessage
10830   PRINT TAB(1,8);"Max Invader Bombs At Any Time (1-16) = ";
10840   INPUT value%
10850   thru%=TRUE
10860UNTIL value%>=1 AND value%<=16
10870wave_attributes%(2)=value%
10880PROCshow_num_bombs
10890PROCmessage("Max Invader Bombs Accepted")
10900ENDPROC
10910:
10920DEFPROCmax_rockets
10930LOCAL value%, true%
10940thru%=FALSE
10950COLOUR white%
10960REPEAT
10970   IF thru%=TRUE THEN PROCwrong_sound
10980   PROCclearmessage
10990   PRINT TAB(1,8);"Max Player Rockets At Any Time (1-3) = ";
11000   INPUT value%
11010   thru%=TRUE
11020UNTIL value%>=1 AND value%<=3
11030PROCmessage("Max Player Rockets Accepted")
11040wave_attributes%(3)=value%
11050ENDPROC
11060:
11070DEFPROCinitial_dir
11080LOCAL value%, true%
11090thru%=FALSE
11100COLOUR white%
11110REPEAT
11120   IF thru%=TRUE THEN PROCwrong_sound
11130   PROCclearmessage
11140   PRINT TAB(1,8);"Wave Direction (0=RND 1=Left 2=Right) = ";
11150   INPUT value%
11160   thru%=TRUE
11170UNTIL value%>=0 AND value%<=2
11180PROCmessage("Wave Direction Accepted")
11190wave_attributes%(4)=value%
11200ENDPROC
11210:
11220DEFPROCheight
11230LOCAL value%, true%
11240thru%=FALSE
11250COLOUR white%
11260REPEAT
11270   IF thru%=TRUE THEN PROCwrong_sound
11280   PROCclearmessage
11290   PRINT TAB(1,8);"Wave Initial Height (1=Top...6=Bottom) = ";
11300   INPUT value%
11310   thru%=TRUE
11320UNTIL value%>=1 AND value%<=6
11330PROCshow_height(0)
11340wave_attributes%(1)=value%
11350PROCshow_height(1)
11360PROCmessage("Wave Initial Height Accepted")
11370ENDPROC
11380:
11390DEFPROCpassword
11400LOCAL valid%,I%,part$,in$
11410COLOUR white%
11420REPEAT
11430   valid%=FALSE
11440   PROCclearmessage
11450   PRINT TAB(1,8);"Wave Password (""";wavepassword$;""")";
11460   INPUT in$
11470   IF LEN(in$)>0 AND LEN(in$)<=10 THEN
11480      IF LEN(in$)<10 THEN
11490         in$+=STRING$(10-LEN(in$)," ")
11500      ENDIF
11510      valid%=TRUE
11520      FOR I%=1 TO 10
11530         part$=MID$(in$,I%,1)
11540         IF part$>="a" AND part$<="z" THEN
11550            part$=CHR$(ASC(part$)-32)
11560         ENDIF
11570         IF part$<>" " AND (part$<"A" OR part$>"Z") THEN valid%=FALSE
11580      NEXT I%
11590   ENDIF
11600   IF valid%=FALSE THEN PROCwrong_sound
11610UNTIL valid%
11620wavepassword$=""
11630FOR I%=1 TO 10
11640   part$=MID$(in$,I%,1)
11650   IF part$>="a" THEN part$=CHR$(ASC(part$)-32)
11660   wavepassword$+=part$
11670NEXT I%
11680PROCmessage("New Password Accepted")
11690ENDPROC
11700:
11710DEFFNget_col(X%,Y%)
11720LOCAL value%
11730value%=?(sprite_data%+offset%+((X%-1) DIV 2)+(Y%-1)*12)
11740IF X% MOD 2 = 0 THEN
11750   value%=value% DIV 16
11760ELSE
11770   value%=value% MOD 16
11780ENDIF
11790=value%
11800:
11810DEFPROCget_sprite(sprite%,left_X%,bot_Y%,right_X%,top_Y%)
11820MOVE left_X%,bot_Y%
11830MOVE right_X%,top_Y%
11840VDU 23,27,1,sprite%,0,0,0,0,0,0
11850ENDPROC
11860:
11870DEFPROCplot_sprite(sprite%,left_X%,bot_Y%)
11880VDU 23,27,0,sprite%,0,0,0,0,0,0
11890PLOT &ED,left_X%,bot_Y%
11900ENDPROC
11910:
11920DEFPROCshow_current_wave
11930PROCget_wave_info
11940PROCdisplay_wave
11950PROCshow_attributes
11960ENDPROC
11970:
11980DEFPROCget_wave_info
11990LOCAL offset%,I%,J%,K%,M%,width%,wave$,value%,reps%
12000PROCwave_offset(current_wave%)
12010wavepassword$=""
12020wave$=""
12030current_wave_i%()=0
12040FOR I%=0 TO 9
12050   wavepassword$+=CHR$(255-(?(wave_data%+offset%+I%)))
12060NEXT I%
12070width%=?(wave_data%+offset%+10)
12080IF width%>16 THEN width%=16
12090FOR I%=0 TO 4
12100   wave_attributes%(I%)=?(wave_data%+offset%+11+I%)
12110NEXT I%
12120CASE wave_attributes%(0) OF
12130   WHEN 0,1,2,3,4,5,6,7:REM ok
12140   OTHERWISE:wave_attributes%(0)=7
12150ENDCASE
12160CASE wave_attributes%(1) OF
12170   WHEN 1,2,3,4,5,6:REM ok
12180   OTHERWISE:wave_attributes%(1)=1
12190ENDCASE
12200CASE wave_attributes%(2) OF
12210   WHEN 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16:REM ok
12220   OTHERWISE:wave_attributes%(2)=10
12230ENDCASE
12240CASE wave_attributes%(3) OF
12250   WHEN 1,2,3:REM ok
12260   OTHERWISE:wave_attributes%(3)=3
12270ENDCASE
12280CASE wave_attributes%(4) OF
12290   WHEN 0,1,2:REM ok
12300   OTHERWISE:wave_attributes%(4)=1
12310ENDCASE
12320I%=0
12330value%=?(wave_data%+offset%+16+I%)
12340REPEAT
12350   wave$+=CHR$(value%)
12360   I%+=1
12370   value%=?(wave_data%+offset%+16+I%)
12380UNTIL I%>127 OR value%=0
12390K%=1:I%=1:J%=1
12400WHILE K%<=LEN(wave$)
12410   value%=ASC(MID$(wave$,K%,1))
12420   IF value%=ASC(" ") THEN
12430      I%+=1:IF I%>width% THEN I%=1:J%+=1
12440      K%+=1
12450   ELSE
12460      IF value%>=ASC("A") AND value%<=ASC("Z") THEN
12470         current_wave_i%(I%,J%)=value%-64
12480         I%+=1:IF I%>width% THEN I%=1:J%+=1
12490         K%+=1
12500      ELSE
12510         reps%=0
12520         WHILE value%>=ASC("0") AND value%<=ASC("9")
12530            reps%=reps%*10
12540            reps%+=value%-ASC("0")
12550            K%+=1
12560            value%=ASC(MID$(wave$,K%,1))
12570         ENDWHILE
12580         FOR M%=1 TO reps%
12590            IF value%>ASC(" ") THEN current_wave_i%(I%,J%)=value%-64
12600            I%+=1:IF I%>width% THEN I%=1:J%+=1
12610         NEXT M%
12620         K%+=1
12630      ENDIF
12640   ENDIF
12650ENDWHILE
12660ENDPROC
12670:
12680DEFPROCstore_current_wave
12690LOCAL offset%,I%,J%,width%,S%,F%,count%
12700PROCwave_offset(current_wave%)
12710FOR I%=0 TO 9
12720   ?(wave_data%+offset%+I%)=255-ASC(MID$(wavepassword$,I%+1,1))
12730NEXT I%
12740width%=0:S%=17:F%=0
12750FOR I%=1 TO 8
12760   FOR J%=1 TO 16
12770      IF current_wave_i%(J%,I%)<>0 THEN
12780          IF J%<S% THEN S%=J%
12790          IF J%>F% THEN F%=J%
12800      ENDIF
12810   NEXT J%
12820NEXT I%
12830IF S%=17 THEN S%=16
12840IF F%-S%+1>width% THEN width%=F%-S%+1
12850?(wave_data%+offset%+10)=width%
12860FOR I%=0 TO 4
12870   ?(wave_data%+offset%+11+I%)=wave_attributes%(I%)
12880NEXT I%
12890count%=0
12900FOR I%=1 TO 8
12910   FOR J%=S% TO F%
12920      ?(wave_data%+offset%+16+count%)=FNunconvert(current_wave_i%(J%,I%))
12930      count%+=1
12940   NEXT J%
12950NEXT I%
12960IF count%<127 THEN
12970   FOR I%=count% TO 127
12980      ?(wave_data%+offset%+16+count%)=0
12990   NEXT I%
13000ENDIF
13010ENDPROC
13020:
13030DEFPROCshow_attributes
13040PROCshow_bomb_attributes
13050PROCshow_height(1)
13060PROCshow_num_bombs
13070PROCshow_num_rockets
13080PROCshow_init_dir
13090PROCupdate_wave_box
13100ENDPROC
13110:
13120DEFPROCshow_bomb_attributes
13130LOCAL A%,V%,SSX%,SSY%
13140V%=wave_attributes%(0)
13150VDU 5
13160GCOL 0,black%
13170FOR A%=0 TO 2
13180   SSX%=18*4+16+18*16*4
13190   SSY%=WY%+20+A%*sprite_Y%+20
13200   GCOL 0,black%
13210   RECTANGLE FILL SSX%,SSY%,32,32
13220   MOVE SSX%+8,SSY%+28
13230   GCOL 0,red%
13240   IF (V% AND 2^A%)>0 THEN
13250      PRINT CHR$(91);
13260   ELSE
13270      PRINT CHR$(92);
13280   ENDIF
13290NEXT A%
13300VDU 4
13310OFF
13320ENDPROC
13330:
13340DEFPROCtoggle_bomb_type
13350LOCAL Y%,V%,W%
13360valid%=TRUE
13370V%=wave_attributes%(0)
13380Y%=(MY%-WY%-20)/sprite_Y%
13390IF Y%<0 THEN Y%=0
13400IF Y%>2 THEN Y%=2
13410W%=0
13420FOR A%=0 TO 2
13430   IF A%=Y% THEN
13440      IF (V% AND 2^A%)=0 THEN W%+=2^A%
13450   ELSE
13460      IF (V% AND 2^A%)>0 THEN W%+=2^A%
13470   ENDIF
13480NEXT A%
13490wave_attributes%(0)=W%
13500PROCshow_bomb_attributes
13510ENDPROC
13520:
13530DEFPROCshow_height(delete%)
13540LOCAL V%,SSX%,SSY%,A$
13550SSX%=1162
13560V%=wave_attributes%(1)
13570SSY%=468+(6-V%)*36
13580IF delete%=0 THEN
13590   GCOL 0,black%
13600   RECTANGLE FILL SSX%,SSY%,114,36
13610ELSE
13620   GCOL 0,red%
13630   RECTANGLE FILL SSX%,SSY%,114,36
13640   GCOL 0,white%
13650   VDU 5
13660   CASE V% OF
13670      WHEN 1: A$="  TOP"
13680      WHEN 2: A$=" HIGH" :SSX%+=8
13690      WHEN 3: A$="MIDDLE":SSX%+=8
13700      WHEN 4: A$="MIDDLE":SSX%+=8
13710      WHEN 5: A$="  LOW"
13720      WHEN 6: A$="BOTTOM":SSX%+=8
13730   ENDCASE
13740   MOVE SSX%,SSY%+32
13750   PRINT A$;
13760   VDU 4
13770   OFF
13780ENDIF
13790ENDPROC
13800:
13810DEFPROCget_wave_height
13820LOCAL Y%,V%
13830V%=wave_attributes%(1)
13840Y%=(MY%-468)/36
13850IF Y%<0 THEN Y%=0
13860IF Y%>5 THEN Y%=5
13870Y%=6-Y%
13880IF V%<>Y% THEN
13890   PROCshow_height(0)
13900   wave_attributes%(1)=Y%
13910   PROCshow_height(1)
13920ENDIF
13930valid%=TRUE
13940ENDPROC
13950:
13960DEFPROCshow_num_bombs
13970LOCAL V$
13980V$=STR$(wave_attributes%(2))
13990IF LEN(V$)=1 THEN V$="0"+V$
14000GCOL 0,black%
14010RECTANGLE FILL 1166+38,WY%-14+20,32,-32
14020GCOL 0,red%
14030VDU 5
14040MOVE 1166+38,WY%-14+24
14050PRINT V$;
14060VDU 4
14070OFF
14080ENDPROC
14090:
14100DEFPROCget_num_bombs
14110LOCAL X%,V%
14120V%=wave_attributes%(2)
14130X%=(MX%-1162)/57
14140IF X%=0 THEN
14150   IF V%>1 THEN V%-=1
14160ELSE
14170   IF V%<16 THEN V%+=1
14180ENDIF
14190wave_attributes%(2)=V%
14200PROCshow_num_bombs
14210valid%=TRUE
14220ENDPROC
14230:
14240DEFPROCshow_num_rockets
14250GCOL 0,black%
14260RECTANGLE FILL 1166+38+8,44,32,32
14270GCOL 0,red%
14280VDU 5
14290MOVE 1166+38+8,40+36
14300PRINT STR$(wave_attributes%(3));
14310VDU 4
14320OFF
14330ENDPROC
14340:
14350DEFPROCget_num_rockets
14360LOCAL X%,V%
14370V%=wave_attributes%(3)
14380X%=(MX%-1162)/57
14390IF X%=0 THEN
14400   IF V%>1 THEN V%-=1
14410ELSE
14420   IF V%<3 THEN V%+=1
14430ENDIF
14440wave_attributes%(3)=V%
14450PROCshow_num_rockets
14460valid%=TRUE
14470ENDPROC
14480:
14490DEFPROCshow_init_dir
14500LOCAL V%,D%
14510V%=wave_attributes%(4)
14520VDU 5
14530FOR D%=0 TO 2
14540   GCOL 0,black%
14550   RECTANGLE FILL 1000+D%*52,44,44,32
14560   GCOL 0,red%
14570   MOVE 1014+D%*52,40+36
14580   CASE D% OF
14590      WHEN 0: IF V%=1 THEN PRINT CHR$(91); ELSE PRINT CHR$(92);
14600      WHEN 1: IF V%=0 THEN PRINT CHR$(91); ELSE PRINT CHR$(92);
14610      WHEN 2: IF V%=2 THEN PRINT CHR$(91); ELSE PRINT CHR$(92);
14620   ENDCASE
14630NEXT D%
14640VDU 4
14650OFF
14660ENDPROC
14670:
14680DEFPROCget_init_dir
14690LOCAL X%,V%
14700V%=wave_attributes%(4)
14710X%=(MX%-1000)/52
14720CASE X% OF
14730   WHEN 0:V%=1
14740   WHEN 1:V%=0
14750   OTHERWISE:V%=2
14760ENDCASE
14770wave_attributes%(4)=V%
14780PROCshow_init_dir
14790valid%=TRUE
14800ENDPROC
14810:
14820DEFPROCcopy_to_number
14830LOCAL offset1%,offset2%,I%,from%,to%
14840from%=current_wave%
14850PROCto_which_wave_no
14860offset1%=2+(from%-1)*144
14870offset2%=2+(to%-1)*144
14880FOR I%=0 TO 143 STEP 4
14890   !(wave_data%+offset2%+I%)=!(wave_data%+offset1%+I%)
14900NEXT I%
14910valid%=TRUE
14920PROCmessage("Invader Wave Copied")
14930ENDPROC
14940:
14950DEFPROClogo
14960LOCAL Y%,SY%,mag%
14970mag%=44
14980SY%=48
14990Y%=SY%+680+8
15000GCOL 0,dark_grey%
15010COLOUR 128+dark_grey%
15020RECTANGLE FILL 112+16*mag%,Y%,460,1020-Y%
15030GCOL 0,white%
15040RECTANGLE 112+16*mag%,Y%,460,1020-Y%
15050GCOL 0,red%
15060PROCprint(16,16,"ALIEN INVASION",51.5,0.5)
15070PROCprint(32,16,"WAVE",57,2.5)
15080PROCprint(32,16,"EDITOR",53,4.5)
15090GCOL 0,cyan%
15100PROCprint(8,16,"By",52,7)
15110PROCprint(16,16,"Arc-World",55,7)
15120GCOL 0,white%
15130ENDPROC
15140:
15150DEFPROCprint(XS%,YS%,text$,X,Y)
15160VDU 5
15170MOVE X*16,1024-Y*32
15180VDU 23,17,7,6,XS%;YS%;0,0
15190PRINT text$;
15200VDU 23,17,7,6,8;8;0,0
15210VDU 4
15220OFF
15230ENDPROC
15240:
15250DEFPROCupdate_wave_box
15260LOCAL W$
15270VDU 5
15280GCOL 0,black%
15290RECTANGLE FILL 892,48,48,36
15300GCOL 0,red%
15310MOVE 892,48+32
15320W$=STR$(current_wave%)
15330IF LEN(W$)<3 THEN W$=STRING$(3-LEN(W$),"0")+W$
15340PRINT W$;
15350VDU 4
15360OFF
15370ENDPROC
15380:
15390DEFPROCget_new_wave
15400IF MX%<915 THEN
15410   IF current_wave%>1 THEN
15420      PROCstore_current_wave
15430      PROCshow_height(0)
15440      current_wave%-=1
15450      PROCupdate_wave_box
15460      PROCshow_current_wave
15470      PROCmessage("Now At The Required Wave Number")
15480      PROCinfo_line
15490      valid%=TRUE
15500   ENDIF
15510ELSE
15520   IF current_wave%<128 THEN
15530      PROCstore_current_wave
15540      PROCshow_height(0)
15550      current_wave%+=1
15560      PROCupdate_wave_box
15570      PROCshow_current_wave
15580      PROCmessage("Now At The Required Wave Number")
15590      PROCinfo_line
15600      valid%=TRUE
15610   ENDIF
15620ENDIF
15630ENDPROC
15640:
15650DEFPROCto_lower(A$)
15660LOCAL len%, M$
15670B$=""
15680len%=1
15690WHILE len%<=LEN(A$)
15700   M$=MID$(A$,len%,1)
15710   IF M$>="A" AND M$<="Z" THEN M$=CHR$(ASC(M$) + 32)
15720   B$=B$+M$
15730   len%+=1
15740ENDWHILE
15750ENDPROC

'� > <Invasion$Dir>.BasicProgs.WEdit

#� Program : Invader Wave Editor
(� Version : 1
2� Author  : A.S.W.Nelson
<� Date    : 19.12.89
F:
P8� � �:� "Unexpected Error: ";�;:�:� " at line: ";�:�
Z	�init
d
�now_what
n&� "<Invasion$Dir>.BASICPROGS.Menu"
x:
�
��init
��define_variables
�� 12
�&�("CHANNELVOICE 1 WaveSynth-Beep")
�
�("SNEW")
��("POINTER 1")
��("fx 229 1")
�ȗ �
�ȗ ȓ 0,10,1280,1010
�ȗ � 640,512
��default_palette
��init_menus
��
�draw_screen
$�sprite_load(oldspritefilename$)
�wave_load(oldfilename$)
"�show_current_wave
,�
6/�message("Invader Waves Can Now Be Edited")
@�info_line
J�
T:
^��define_variables
h
� offset%
rblack%=0
|dark_grey%=1
�light_grey%=3
�
red%=4
�
orange%=5
�
yellow%=6
�bright_green%=8
�dark_green%=9
�cyan%=10
�dark_blue%=11
�dark_brown%=12
�light_brown%=13
�
white%=15
�magenta%=9
�WY%=32+3*12*4+8
current_sprite%=0
current_wave%=1
max_no_sprites%=122
&max_no_waves%=128
0num_spaces%=3
:
floodx%=�
D
floody%=�
Ncurrent_invader%=1
X'sprite_size%=48+max_no_sprites%*384
bsprite_X%=72
lsprite_Y%=68
vswap%=�
�defined_waves%=0
�unhighlight%=�
�free_edit%=0
�seed%=1024*16
�old_invader%=0
�"wave_size%=2+max_no_waves%*144
�to_wave%=0
�original%=�
�
num%=0
�6oldspritefilename$="<Invasion$Dir>.MISC.InvSprite"
�/oldfilename$="<Invasion$Dir>.MISC.WaveCopy"
�	B$=""
�filename$=""
password$=""
wavepassword$=""
� sprite_data% sprite_size%
 � wave_data% wave_size%
*� current_sprite_c%(16,16)
4� current_wave_i%(16,8)
>� wave_attributes%(4)
Hwave_attributes%()=0
Rcurrent_sprite_c%()=0
\current_wave_i%()=0
f� I%=1 � 128
p   �wave_offset(I%)
z!   wavepassword$="DUMMY WORD"
�   � K%=0 � 9
�@      ?(wave_data%+offset%+K%)=255-�(�wavepassword$,K%+1,1))
�   � K%
�*   ?(wave_data%+offset%+10)=16:� width
�4   ?(wave_data%+offset%+11)=7 :� bomb attributes
�0   ?(wave_data%+offset%+12)=1 :� wave height
�.   ?(wave_data%+offset%+13)=10:� num bombs
�0   ?(wave_data%+offset%+14)=3 :� num rockets
�-   ?(wave_data%+offset%+15)=1 :� init dir
�   � K%=16 � 143
�%      ?(wave_data%+offset%+K%)=32
�   � K%
�� I%
�
:
��default_palette
$� A%,B%(),C%
.� B%(3)
8�
B� 0,0,0
L� 128,128,128
V� 176,176,176
`� 208,208,208
j
� 240,0,0
t� 240,176,0
~� 240,224,0
�� 240,240,208
�
� 0,240,0
�� 0,176,96
�� 0,192,240
�
� 0,0,160
�� 160,112,96
�� 192,144,80
�� 240,208,176
�� 240,240,240
��DATA 0,0,0
��DATA 255,0,0
��DATA 0,255,0
�DATA 255,255,0

�DATA 0,0,255
�DATA 255,0,255
�DATA 0,255,255
(�DATA 255,255,255
2�DATA 190,130,0
<�DATA 255,120,50
F�DATA 128,128,128
P�DATA 0,0,128
Z�DATA 200,200,200
d�DATA 0,128,0
n�DATA 240,220,0
x�DATA 255,180,0
�� A%=0 � 15
�   � C%=1 � 3
�      � B%(C%)
�   � C%
�   � A%,B%(1),B%(2),B%(3)
�� A%
��
�:
���init_menus
�� total_menus%
�;� menu_length%(total_menus%),menu_origin%(total_menus%)
�max_menu_length%=0
�� A%=1 � total_menus%
   � menu_length%(A%)
N   � menu_length%(A%)>max_menu_length% � max_menu_length%=menu_length%(A%)
� A%
"� A%=1 � total_menus%
,   � menu_origin%(A%)
6� A%
@*� menu$(total_menus%,max_menu_length%)
J� A%=1 � total_menus%
T    � B%=1 � menu_length%(A%)
^      � menu$(A%,B%)
h   � B%
r� A%
|current_menu%=1
�menu_position=0
�� 9
�� 6, 8, 7, 4, 8, 3, 3, 4, 5
�� 0, 1, 1, 1, 1, 2, 2, 2, 2
�_� Wave Editor Menu, Edit Wave, Edit Wave Attributes, File Options, Select Wave, Exit Editor
�d� Edit Wave Menu, Clear, Flip Menu, Flood Menu, Reflect Menu, Shift Menu, Swap, Undo All Changes
�� Wave Attributes Menu, Bomb Types, Max Invader Bombs, Max Player Rockets, Initial Direction, Initial Wave Height, Password
�=� File Options Menu, Load Sprites, Load Waves, Save Waves
֗� Select Wave Menu, Copy To Wave Number,To Wave Number, Set Random Attribute, Random Wave, Random X Reflect, Random Y Reflect, Random X & Y Reflect
�!� Flip Wave Menu, Row, Column
�� Flood Menu, Row, Column
�0� Reflect Menu, X Axis, Y Axis, X And Y Axis
�'� Shift Menu, Left, Right, Up, Down
�
:
��draw_screen
&� D%
0�show_menu(current_menu%,0)
:	�logo
D� 0,dark_blue%
Nȓ Ȑ 0,0,1280,36
Xȓ Ȑ 0,738,4+18*44,36
b$� 0,white%:� show initial height
lȓ 1160,464,118,266
v� 0,dark_grey%
�ȓ Ȑ 1162,692,114,32
�ȓ Ȑ 1160,410,118,40
�ȓ Ȑ 1162,92,114,40
�ȓ Ȑ 998,92+44,152,40
�� 0,white%
�� 5
�� 1172,720
�� "HEIGHT";
�� 1180,442
�� "BOMBS";
�� 4
��
�� 1160,688,1279,688
� show bomb title
ȓ 1160,410,118,40
� show num bombs box
 ȓ 1160,WY%-56+20,118,56
*D%=WY%-14+20
4� 5
>
� 1166,D%
H� �(93);
R� 1166+16,D%
\� �(95);
f� 1279-22,D%
p� �(94);
z� 1279-22-16,D%
�� �(95);
�� 4
��
�"� show max no. players rockets
�ȓ 1160,92,118,40
�ȓ 1160,40,118,52
�� 5
�� 1164,124
�� "ROCKETS";
�
� 1166,80
�� �(93);
�� 1166+16,80
�� �(95);
	� 1279-22,80
	� �(94);
	� 1279-22-16,80
	$� �(95);
	.� show initial dir
	8ȓ 998,92+44,152,40
	B� D%=0 � 2
	L   ȓ 998+D%*50,40,52,96
	V� D%
	`� 998,40+48,1150,40+48
	j� 1002,92+76
	t� "DIRECTION";
	~� 1014,40+86
	�� �(93);
	�� 1066,40+86
	�
� "?";
	�� 1066+52,40+86
	�� �(94);
	�� show which wave
	�� 0,dark_grey%
	�ȓ Ȑ 840,92,150,40
	�� 0,white%
	�ȓ 840,92,118+32,40
	�ȓ 840,40,118+32,52
	�� 5

� 884,124


� "WAVE";
� 846,80
� �(93);
(� 846+16,80
2� �(95);
<� 958+32-22,80
F� �(94);
P� 958+32-22-16,80
Z� �(95);
d� 4
n�
x�
�:
���show_invader(X%,Y%)
�D�plot_sprite(current_wave_i%(X%,Y%),(X%-1)*18*4,WY%+(8-Y%)*17*4)
��
�:
���now_what
�� exit%,MX%,MY%,MB%,valid%
�exit%=�
��
�� 4
�!�0,0)wavepassword$,password$
�
�   valid%=�

   �mouse
:   � MY%>776 � MX%<16*4+32+16*44 � �check_menu_options
L   � �is_mouse_in_box(MX%,MY%,0,WY%,8+16*18*4,16+8*16*4) � �invader_grid
"Q   � �is_mouse_in_box(MX%,MY%,0,40,sprite_X%*6,sprite_Y%*2) � �select_invader
,@   � �is_mouse_in_box(MX%,MY%,840,40,150,48) � �get_new_wave
6b   � �is_mouse_in_box(MX%,MY%,8+18*16*4,WY%+20,1278-8-18*16*4,sprite_Y%*3) � �toggle_bomb_type
@G   � �is_mouse_in_box(MX%,MY%,1162,468,114,36*6) � �get_wave_height
JI   � �is_mouse_in_box(MX%,MY%,1162,WY%-56+20,114,56) � �get_num_bombs
TD   � �is_mouse_in_box(MX%,MY%,1162,40,114,52) � �get_num_rockets
^A   � �is_mouse_in_box(MX%,MY%,1000,40,150,48) � �get_init_dir
h    � � valid% � �wrong_sound
r� exit%
|�
�:
���mouse
�*FX21,9
��
�   ȗ MX%,MY%,MB%
�   �delay(.15)
�� MB%>0
��
�:
���delay(seconds)
��=0
��
�� �>seconds*100
�
:
��wrong_sound
&� I%
0� I%=11 � 90 � 2
:   � 1,-14,I%,3
D   � 1,-14,I%-10,3
N� I%
X�
b:
l��invader_grid
v#� X%,Y%,offset%,inv%,action$,A%
�X%=1+�(MX%/(18*4))
�Y%=8-�((MY%-WY%)/sprite_Y%)
�� Y%<1 � Y%=1
�� Y%>8 � Y%=8
�� X%>16 � X%=16
�� X%<1 � X%=1
�action$=" "
�Ȏ MB% �
�5   � 4: inv%=current_invader%: action$="Added To"
�(   � 1: inv%=0: action$="Wiped From"
�   : � ignore
��
�� action$<>" " �

    � floodx%=� � floody%=� �

.      �message("Invader "+action$+" Wave")

%      current_wave_i%(X%,Y%)=inv%

       �show_invader(X%,Y%)

*   �

4      � floodx%=� �

>5         �message("Invader Row "+action$+" Wave")

H         � A%=1 � 16

R+            current_wave_i%(A%,Y%)=inv%

\$            �show_invader(A%,Y%)

f         � A%

p      �

z8         �message("Invader Column "+action$+" Wave")

�         � A%=1 � 8

�+            current_wave_i%(X%,A%)=inv%

�$            �show_invader(X%,A%)

�         � A%

�      �

�   �

�
   �usual

��

��

�:

���shift_right

�� I%,J%

�� J%=1 � 8
3   current_wave_i%(0,J%)=current_wave_i%(16,J%)
� J%
� I%=15 � 0 � - 1
$   � J%=1 � 8
.9      current_wave_i%(I%+1,J%)=current_wave_i%(I%,J%)
8   � J%
B� I%
L*�message("Invader Wave Shifted Right")
V�redisplay
`�
j:
t��shift_left
~� I%,J%
�� I%=1 � 16
�   � J%=1 � 8
�9      current_wave_i%(I%-1,J%)=current_wave_i%(I%,J%)
�   � J%
�� I%
�� J%=1 � 8
�3   current_wave_i%(16,J%)=current_wave_i%(0,J%)
�� J%
�)�message("Invader Wave Shifted Left")
��redisplay
��
�:
��redisplay

�display_wave

�usual
�
(:
2��shift_up
<� I%,J%
F� I%=1 � 8
P   � J%=1 � 16
Z:       current_wave_i%(J%,I%-1)=current_wave_i%(J%,I%)
d   � J%
n� I%
x� J%=1 � 16
�2   current_wave_i%(J%,8)=current_wave_i%(J%,0)
�� J%
�'�message("Invader Wave Shifted Up")
��redisplay
��
�:
���shift_down
�� I%,J%
�� J%=1 � 16
�2   current_wave_i%(J%,0)=current_wave_i%(J%,8)
�� J%
�� I%=7 � 0 � - 1
�   � J%=1 � 16
9      current_wave_i%(J%,I%+1)=current_wave_i%(J%,I%)
   � J%
� I%
")�message("Invader Wave Shifted Down")
,�redisplay
6�
@:
J��flipy
T� I%,J%
^� I%=1 � 4
h   � J%=1 � 16
r>      Ȕ current_wave_i%(J%,I%),current_wave_i%(J%,8-I%+1)
|   � J%
�� I%
�&�message("Invader Wave Y Flipped")
��redisplay
��
�:
���flipx
�� I%,J%
�� I%=1 � 8
�   � J%=1 � 8
�?      Ȕ current_wave_i%(I%,J%),current_wave_i%(16-I%+1,J%)
�   � J%
�� I%
�&�message("Invader Wave X Flipped")
�redisplay
�
:
&��clear
0current_wave_i%()=0
:�redisplay
D(�message("Invader Wave Now Cleared")
N�
X:
b
��copy
l$� offset1%,offset2%,I%,from%,to%
vfrom%=current_wave%
��to_which_wave_no
��wave_offset(from%)
�offset1%=offset%
��wave_offset(to%)
�offset2%=offset%
�� I%=0 � 143 � 4
�:   !(wave_data%+offset2%+I%)=!(wave_data%+offset1%+I%)
�� I%
�valid%=�
�#�message("Invader Wave Copied")
��
�:
�
��exit
exit%=�
�
ȗ �
 � 9
*�
4unhighlight%=�
>valid%=�
H�("fx 229 0")
R�
\:
f��sprite_load(filename$)
p?� file%,offset%,E%,F%,dummy%,T%,byte%,loadaddr,filelen,B%()
z� �
�� B%(3)
�
num%=0
�%�ON ERROR LOCAL PROCerror:ENDPROC
�1�message("Please Wait...Loading Sprite File")
�%�ON ERROR LOCAL PROCerror:ENDPROC
�2ș "OS_File",5,filename$ � ,,loadaddr,,filelen
�� (loadaddr>>>20)=&FFF �
�%   loadaddr=&FFF � (loadaddr>>>8)
��
�   loadaddr = -1
��
�� loadaddr=&333 �
�   offset%=num%*1536
   � num%>0 �
      � A%=0 � 47 � 4
6         !(palette%+A%)=!(sprite_data%+offset%+A%)
$      � A%
.   �
8!   temp%=sprite_data%+offset%
B(   �ON ERROR LOCAL PROCerror:ENDPROC
L'   �("LOAD "+filename$+" "+�~temp%)
V   � num%>0 �
`      � A%=0 � 47 � 4
j6         !(sprite_data%+offset%+A%)=!(palette%+A%)
t      � A%
~   �
�      � A%=0 � 15
�         � C%=1 � 3
�0            B%(C%)=?(sprite_data%+A%*3+C%-1)
�         � C%
�#         � A%,B%(1),B%(2),B%(3)
�      � A%
�   �
�   �draw_invaders
�B   �plot_sprite(current_invader%,8+6*sprite_X%,40+sprite_Y%/2)
�#   oldspritefilename$=filename$
�   �info_line
�%   �message("Sprite File Loaded")
�

6   �message("File Specified Is Not A Sprite File")
�
valid%=�
(�
2:
<��wave_load(filename$)
FE� file%,offset%,E%,F%,dummy%,T%,byte%,loadaddr,filelen,B%(),temp%
P� �
Z� B%(3)
d
num%=0
n%�ON ERROR LOCAL PROCerror:ENDPROC
x/�message("Please Wait...Loading Wave File")
�%�ON ERROR LOCAL PROCerror:ENDPROC
�2ș "OS_File",5,filename$ � ,,loadaddr,,filelen
�� (loadaddr>>>20)=&FFF �
�%   loadaddr=&FFF � (loadaddr>>>8)
��
�   loadaddr = -1
��
�� loadaddr=&334 �
�   offset%=num%*144
�   � num%>0 �
�8      � preserve 2 bytes that would get written over
�   �
�   temp%=wave_data%+offset%
(   �ON ERROR LOCAL PROCerror:ENDPROC
'   �("LOAD "+filename$+" "+�~temp%)
   � num%>0 �
"/      � reset 2 bytes that were overwritten
,   �
6   oldfilename$=filename$
@   �info_line
J#   �message("Wave File Loaded")
T�
^4   �message("File Specified Is Not A Wave File")
h�
r"defined_waves%=?(wave_data%+1)
|free_edit%=?wave_data%
��show_current_wave
�original%=�
�oldfilename$=filename$
��info_line
�valid%=�
��
�:
���wave_save(filename$)
�&� L%,offset%,E%,file%,M%,A%,B%,to%
��store_current_wave
��to_which_wave_no
�?(wave_data%+1)=to%
�num%=to%
%�ON ERROR LOCAL PROCerror:ENDPROC
.�message("Please Wait...Saving Wave File")
temp%=2+(num%+1)*144
&%�ON ERROR LOCAL PROCerror:ENDPROC
05�("SAVE "+filename$+" "+�~wave_data%+"+"+�~temp%)
:"�("SETTYPE "+filename$+" 334")
Dvalid%=�
Noriginal%=�
X"defined_waves%=?(wave_data%+1)
b�info_line
l�message("Wave File Saved")
v�
�:
���display_sprite
�� I%,J%
�� I%=1 � 16
�   � J%=1 � 16
�#      �display_point(I%-1,J%-1)
�   � J%
�� I%
��
�:
���display_point(X%,Y%)
�$� 0,current_sprite_c%(X%+1,Y%+1)
�Y%=15-Y%
3ȓ Ȑ SX%+2+X%*mag%,SY%+4+Y%*mag%,mag%-2,mag%-4
Ȓ AX%+2+X%*4,AY%+4+Y%*4
Ȓ AX%+4+X%*4,AY%+4+Y%*4
 �
*:
4��show_current_sprite
>�get_sprite_info
H�display_sprite
R�
\:
f��get_sprite_info
p� offset%,I%,J%
z!�calc_offset(current_sprite%)
�� J%=1 � 16
�   � I%=1 � 16
�3       current_sprite_c%(I%,J%)=�get_col(I%,J%)
�   � I%
�� J%
��
�:
���to_which_wave_no
�� thru%
�thru%=�
�� white%
��
�   � thru%=� � �wrong_sound
   �clearmessage
$   � �1,8);"To Which Wave ==> ";
   � to%
$   thru%=�
.!� to%>=1 � to%<=max_no_waves%
8�
B:
L��get_filename
V� thru%
`thru%=�
j� white%
t�
~   � thru%=� � �wrong_sound
�   �clearmessage
�   � �1,8);"Filename=";
�   � filename$
�   thru%=�
�&� �(filename$)>0 � �(filename$)<11
��
�:
���calc_offset(value%)
�offset%=48+value%*384
��
�:
���wave_offset(value%)
offset%=2+(value%-1)*144

�
:
��clearmessage
(� L%
2L%=4+18*44
<� 0,magenta%
Fȓ Ȑ 0,738,L%,36
P� 128+magenta%
Z�
d:
n��message(M$)
x� L%
�L%=4+18*44
�� 0,dark_blue%
�ȓ Ȑ 0,738,L%,36
�� 0,white%
�� 5
�� (L%-�(M$)*16)/2,766
�	� M$;
�� 4
��
��
�:
���info_line
�� S1$,S2$,SUB%
S1$=oldfilename$
S2$=oldspritefilename$
&� 128+dark_blue%:� background blue
"� white%
,�
6� �1,31);�78," ");
@SUB%=�oldfilename$,".")
J
ȕ SUB%>0
T>   oldfilename$=�oldfilename$,SUB%+1,�(oldfilename$)-SUB%)
^   SUB%=�oldfilename$,".")
h�
r,� �1,31);"File: """;oldfilename$;""" (";
|� original% �
�   � "Original";
��
�   � "Modified";
��
�4� ")";�33,31);"Current Wave: ";�(current_wave%);
�!SUB%=�oldspritefilename$,".")
�
ȕ SUB%>0
�P   oldspritefilename$=�oldspritefilename$,SUB%+1,�(oldspritefilename$)-SUB%)
�$   SUB%=�oldspritefilename$,".")
��
�8� �54,31);"Sprite File: """;oldspritefilename$;"""";
�oldfilename$=S1$
�oldspritefilename$=S2$
�
:
.ݤis_mouse_in_box(MX%,MY%,X1%,Y1%,XD%,YD%)
&2=MX%>X1% � MX%<X1%+XD% � MY%>Y1% � MY%<Y1%+YD%
0:
:��show_menu(N%,highlight%)
D� A%,L%
N� 0,black%
Xȓ Ȑ 0,800,800,216
b	L%=22
l� white%
v� 0,white%
�� 128+red%
�� �0,0);�22," ");
�� 5
� � (L%-�(menu$(N%,1)))*8,1023
�� menu$(N%,1);
�� 4
��
�� A%=2 � menu_length%(N%)
�   � highlight%=A% �
�      � 128+magenta%
�   �
�      � 128+dark_blue%
�   �
   � �L%,A%-2);�28," ");

   � 5
4   � 22*16+(27-�(menu$(N%,A%)))*8,1023-(A%-2)*32
    � menu$(N%,A%);
*
   � 4
4   �
>� A%
H�
R:
\��select_invader
f� SSX%,SSY%
pSSX%=�(MX%/sprite_X%)+1
zSSY%=�((MY%-40)/sprite_Y%)
�!old_invader%=current_invader%
� current_invader%=SSX%+SSY%*6
�?�plot_sprite(current_invader%,8+6*sprite_X%,40+sprite_Y%/2)
�2� swap% � �do_swap(old_invader%):�display_wave
�valid%=�
��info_line
��
�:
���usual
�valid%=�
�original%=�
��info_line
��
:
��check_menu_options
� expected_option%
$� MX%<22*16 �
.#   � check go back to last menu
8   � MY%>1023-32 �
B3      current_menu%=menu_origin%(current_menu%)
L      � current_menu%=0 �
VK         �message("Invader Wave Editor By Adrian S.W.Nelson Version 1")
`         current_menu%=1
j      �
t(         �show_menu(current_menu%,0)
~      �
�      floodx%=�
�      floody%=�
�      valid%=�
�      unhighlight%=�
�   �
��
�   � get menu option
�'   expected_option%=1+(1023-MY%)/32
�:   � expected_option%<=menu_length%(current_menu%)-1 �
�      valid%=�
�      Ȏ current_menu% �
�(         � 1: � expected_option%=5 �
                    �exit

                 �
8                    current_menu%=expected_option%+1
3                    �show_menu(current_menu%,0)
(                 �
2'         � 2: Ȏ expected_option% �
<J                     � 1: �show_menu(current_menu%,expected_option%+1)
F'                             �clear
PJ                     � 6: �show_menu(current_menu%,expected_option%+1)
Z&                             �swap
dJ                     � 7: �show_menu(current_menu%,expected_option%+1)
n*                             �undo_all
x<                     : current_menu%=expected_option%+4
�                 �
�>         � 3: �show_menu(current_menu%,expected_option%+1)
�j                 � expected_option% �bomb_types,�max_bombs,�max_rockets,�initial_dir,�height,�password
�>         � 4: �show_menu(current_menu%,expected_option%+1)
�J                 � expected_option% �load_sprite,�load_file,�save_file
�>         � 5: �show_menu(current_menu%,expected_option%+1)
��                 � expected_option% �copy_to_number,�to_number,�set_rnd_seed,�rnd_wave,�rnd_x_wave,�rnd_y_wave,�rnd_x_y_wave
�>         � 6: �show_menu(current_menu%,expected_option%+1)
�5                 � expected_option% �flipx,�flipy
�>         � 7: �show_menu(current_menu%,expected_option%+1)
�7                 � expected_option% �floodx,�floody
�>         � 8: �show_menu(current_menu%,expected_option%+1)
�>                 � expected_option% �ref_x,�ref_y,�ref_x_y
>         � 9: �show_menu(current_menu%,expected_option%+1)
V                 � expected_option% �shift_left,�shift_right,�shift_up,�shift_down
      �
"6      � unhighlight% � �show_menu(current_menu%,0)
,   �
6�
@�
J:
T
��swap
^;�message("Change Invader In Wave With Next Chosen One")
hswap%=�
rvalid%=�
|�
�:
���do_swap(oldinvader%)
�� X%,Y%
�� X%=1 � 16
�   � Y%=1 � 8
�X      � current_wave_i%(X%,Y%)=oldinvader% � current_wave_i%(X%,Y%)=current_invader%
�   � Y%
�� X%
��redisplay
�<�message("New Invader Changed With Old Invader In Wave")
�swap%=�
��
�:
 ��floodx
 
floodx%=�
 
floody%=�
 &valid%=�
 0unhighlight%=�
 :�
 D:
 N��floody
 X
floody%=�
 b
floodx%=�
 lvalid%=�
 vunhighlight%=�
 ��
 �:
 ���to_number
 �� to_wave%
 ��to_which_wave_no
 ��store_current_wave
 ��show_height(0)
 �current_wave%=to%
 ��update_wave_box
 ��show_current_wave
 �valid%=�
 �/�message("Now At The Required Wave Number")
 ��info_line
!�
!:
!��load_file
! �get_filename
!*/filename$="<Invasion$Dir>.WAVES."+filename$
!4�wave_load(filename$)
!>�
!H:
!R��save_file
!\�get_filename
!f�to_lower(filename$)
!p/filename$="<Invasion$Dir>.WAVES."+filename$
!z�wave_save(filename$)
!��
!�:
!���load_sprite
!��get_filename
!�1filename$="<Invasion$Dir>.SPRITES."+filename$
!��sprite_load(filename$)
!��
!�:
!���undo_all
!��show_current_wave
!�valid%=�
!��info_line
!��
":
"��draw_invaders
"� A%,I%
"$� A%=1 � 15
".   Ȏ A% �
"8      �  1:I%=25
"B      �  2:I%=17
"L      �  3:I%=21
"V      �  4:I%=85-28
"`      �  5:I%=89-28
"j      �  6:I%=93-28
"t      �  7:I%=73-28
"~      �  8:I%=77-28
"�      �  9:I%=97-28
"�      � 10:I%=81-28
"�      � 11:I%=109-28
"�      � 12:I%=101-28
"�      � 13:I%=14
"�      � 14:I%=15
"�      � 15:I%=0
"�   �
"�   �show_full_size(I%,A%-1)
"�� A%
"��
"�:
##��show_full_size(snumber%,pos%)
#
� SSX%,SSY%
#
Ȏ � �
#,   � pos%<12:SSX%=0+(pos% � 6)*sprite_X%
#(0                SSY%=40+(pos% � 6)*sprite_Y%
#2   � pos%<15:SSX%=8+18*16*4
#<3                SSY%=WY%+(pos%-12)*sprite_Y%+20
#F                � 0,white%
#P>                ȓ SSX%+18*4,SSY%,1279-SSX%-18*4,sprite_Y%
#Z�
#d� 0,black%
#n/ȓ Ȑ SSX%+2,SSY%+4,sprite_X%-4,sprite_Y%-8
#x� 0,white%
#�$ȓ SSX%,SSY%,sprite_X%,sprite_Y%
#�J� snumber%=25 � �get_sprite(0,SSX%,SSY%,SSX%+sprite_X%,SSY%+sprite_Y%)
#��calc_offset(snumber%)
#�� J%=1 � 16
#�   � I%=1 � 16
#�       � 0,�get_col(I%,J%)
#�&       Ȓ SSX%+I%*4,SSY%+(17-J%)*4
#�(       Ȓ SSX%+I%*4+2,SSY%+(17-J%)*4
#�   � I%
#�� J%
#�G� pos%<12 � �get_sprite(A%,SSX%,SSY%,SSX%+sprite_X%,SSY%+sprite_Y%)
#��
#�:
$��error
$Ȏ (� � 256) �
$A   � 152,153 :�message("Disc Needs Compacting...Please Wait")
$"!                 �("COMPACT")
$,3   � 198 :�message("This Disc Is Already Full")
$66   � 201 :�message("This Disc Is Write Protected")
$@=   � 211 :�message("Please Insert A Disc Into The Drive")
$J2   � 214 :�message("That File Does Not Exist")
$T3   :�message("Error: "+�(�)+" at Line: "+�(�))
$^�
$h�
$r:
$|��display_wave
$�� I%,J%
$�� I%=1 � 8
$�   � J%=1 � 16
$�J      �plot_sprite(current_wave_i%(J%,I%),(J%-1)*18*4,WY%+(8-I%)*17*4)
$�   � J%
$�� I%
$��
$�:
$���ref_x
$�� I%,J%
$�� I%=1 � 8
$�   � J%=1 � 8
$�:      current_wave_i%(17-J%,I%)=current_wave_i%(J%,I%)
%   � J%
%� I%
%(�message("Invader Wave X Reflected")
%&�redisplay
%0�
%::
%D��ref_y
%N� I%,J%
%X� I%=1 � 4
%b   � J%=1 � 16
%l9      current_wave_i%(J%,9-I%)=current_wave_i%(J%,I%)
%v   � J%
%�� I%
%�(�message("Invader Wave Y Reflected")
%��redisplay
%��
%�:
%�
��ref_x_y
%�� I%,J%
%�� I%=1 � 4
%�   � J%=1 � 8
%�:      current_wave_i%(17-J%,I%)=current_wave_i%(J%,I%)
%�   � J%
%�   � J%=1 � 16
%�9      current_wave_i%(J%,9-I%)=current_wave_i%(J%,I%)
&   � J%
&� I%
&.�message("Invader Wave X and Y Reflected")
& �redisplay
&*�
&4:
&>��set_rnd_seed
&H� dummy%, thru%
&Rthru%=�
&\� white%
&f�
&p   � thru%=� � �wrong_sound
&z   �clearmessage
&�0   � �1,8);"Set Random Seed (";seed%;") = ";
&�   � seed%
&�   thru%=�
&�
� seed%>0
&�dummy%=�(-seed%)
&�thru%=�
&��
&�   � thru%=� � �wrong_sound
&�   �clearmessage
&�8   � �1,8);"Set Random Spaces (";num_spaces%;") = ";
&�   � num_spaces%
&�   thru%=�
&�� num_spaces%>=0
'!�message("RND Seed Accepted")
'�
':
'$��rnd_wave
'.� I%,J%,V%
'8� I%=1 � 8
'B   � J%=1 � 16
'L<      current_wave_i%(J%,I%)=�convert(�(12+num_spaces%))
'V   � J%
'`� I%
'j+�message("Random Invader Wave Created")
't�redisplay
'~�
'�:
'�ݤconvert(value%)
'�� value%>12 � value%=0
'�=value%
'�:
'�ݤunconvert(value%)
'�'� value%>0 � value%+=64 � value%=32
'�=value%
'�:
'���rnd_x_wave
'�� I%,J%,V%
'�� I%=1 � 8
(   � J%=1 � 8
(
<      current_wave_i%(J%,I%)=�convert(�(12+num_spaces%))
(:      current_wave_i%(17-J%,I%)=current_wave_i%(J%,I%)
(   � J%
((� I%
(27�message("Random X Reflected Invader Wave Created")
(<�redisplay
(F�
(P:
(Z��rnd_y_wave
(d� I%,J%,V%
(n� I%=1 � 4
(x   � J%=1 � 16
(�<      current_wave_i%(J%,I%)=�convert(�(12+num_spaces%))
(�9      current_wave_i%(J%,9-I%)=current_wave_i%(J%,I%)
(�   � J%
(�� I%
(�7�message("Random Y Reflected Invader Wave Created")
(��redisplay
(��
(�:
(���rnd_x_y_wave
(�� I%,J%,V%
(�� I%=1 � 4
(�   � J%=1 � 8
(�<      current_wave_i%(J%,I%)=�convert(�(12+num_spaces%))
):      current_wave_i%(17-J%,I%)=current_wave_i%(J%,I%)
)   � J%
)   � J%=1 � 16
)"9      current_wave_i%(J%,9-I%)=current_wave_i%(J%,I%)
),   � J%
)6� I%
)@=�message("Random X and Y Reflected Invader Wave Created")
)J�redisplay
)T�
)^:
)h��bomb_types
)r� value%, thru%
)|thru%=�
)�� white%
)��
)�   � thru%=� � �wrong_sound
)�   �clearmessage
)�<   � �1,8);"Set Bomb Types (1=norm 2=diag 4=homing) = ";
)�   � value%
)�   thru%=�
)�� value%>=0 � value%<=7
)�wave_attributes%(0)=value%
)��show_bomb_attributes
)�'�message("New Bomb Types Accepted")
)��
)�:
*��max_bombs
*� value%, true%
*thru%=�
*&� white%
*0�
*:   � thru%=� � �wrong_sound
*D   �clearmessage
*N9   � �1,8);"Max Invader Bombs At Any Time (1-16) = ";
*X   � value%
*b   thru%=�
*l� value%>=1 � value%<=16
*vwave_attributes%(2)=value%
*��show_num_bombs
*�*�message("Max Invader Bombs Accepted")
*��
*�:
*���max_rockets
*�� value%, true%
*�thru%=�
*�� white%
*��
*�   � thru%=� � �wrong_sound
*�   �clearmessage
*�9   � �1,8);"Max Player Rockets At Any Time (1-3) = ";
*�   � value%
+   thru%=�
+� value%>=1 � value%<=3
++�message("Max Player Rockets Accepted")
+ wave_attributes%(3)=value%
+*�
+4:
+>��initial_dir
+H� value%, true%
+Rthru%=�
+\� white%
+f�
+p   � thru%=� � �wrong_sound
+z   �clearmessage
+�:   � �1,8);"Wave Direction (0=RND 1=Left 2=Right) = ";
+�   � value%
+�   thru%=�
+�� value%>=0 � value%<=2
+�'�message("Wave Direction Accepted")
+�wave_attributes%(4)=value%
+��
+�:
+���height
+�� value%, true%
+�thru%=�
+�� white%
+��
,   � thru%=� � �wrong_sound
,   �clearmessage
,;   � �1,8);"Wave Initial Height (1=Top...6=Bottom) = ";
,$   � value%
,.   thru%=�
,8� value%>=1 � value%<=6
,B�show_height(0)
,Lwave_attributes%(1)=value%
,V�show_height(1)
,`,�message("Wave Initial Height Accepted")
,j�
,t:
,~��password
,�� valid%,I%,part$,in$
,�� white%
,��
,�   valid%=�
,�   �clearmessage
,�7   � �1,8);"Wave Password (""";wavepassword$;""")";
,�   � in$
,�    � �(in$)>0 � �(in$)<=10 �
,�      � �(in$)<10 �
,�!         in$+=�10-�(in$)," ")
,�      �
,�      valid%=�
-      � I%=1 � 10
-
         part$=�in$,I%,1)
-(         � part$>="a" � part$<="z" �
-$            part$=�(�(part$)-32)
-(         �
-2>         � part$<>" " � (part$<"A" � part$>"Z") � valid%=�
-<      � I%
-F   �
-P    � valid%=� � �wrong_sound
-Z� valid%
-dwavepassword$=""
-n� I%=1 � 10
-x   part$=�in$,I%,1)
-�*   � part$>="a" � part$=�(�(part$)-32)
-�   wavepassword$+=part$
-�� I%
-�%�message("New Password Accepted")
-��
-�:
-�ݤget_col(X%,Y%)
-�� value%
-�9value%=?(sprite_data%+offset%+((X%-1) � 2)+(Y%-1)*12)
-�� X% � 2 = 0 �
-�   value%=value% � 16
-��
-�   value%=value% � 16
.�
.=value%
.:
."8��get_sprite(sprite%,left_X%,bot_Y%,right_X%,top_Y%)
.,� left_X%,bot_Y%
.6� right_X%,top_Y%
.@!� 23,27,1,sprite%,0,0,0,0,0,0
.J�
.T:
.^)��plot_sprite(sprite%,left_X%,bot_Y%)
.h!� 23,27,0,sprite%,0,0,0,0,0,0
.r� &ED,left_X%,bot_Y%
.|�
.�:
.���show_current_wave
.��get_wave_info
.��display_wave
.��show_attributes
.��
.�:
.���get_wave_info
.�3� offset%,I%,J%,K%,M%,width%,wave$,value%,reps%
.��wave_offset(current_wave%)
.�wavepassword$=""
.�wave$=""
.�current_wave_i%()=0
/� I%=0 � 9
/7   wavepassword$+=�(255-(?(wave_data%+offset%+I%)))
/� I%
/&#width%=?(wave_data%+offset%+10)
/0� width%>16 � width%=16
/:� I%=0 � 4
/D7   wave_attributes%(I%)=?(wave_data%+offset%+11+I%)
/N� I%
/XȎ wave_attributes%(0) �
/b   � 0,1,2,3,4,5,6,7:� ok
/l   :wave_attributes%(0)=7
/v�
/�Ȏ wave_attributes%(1) �
/�   � 1,2,3,4,5,6:� ok
/�   :wave_attributes%(1)=1
/��
/�Ȏ wave_attributes%(2) �
/�4   � 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16:� ok
/�   :wave_attributes%(2)=10
/��
/�Ȏ wave_attributes%(3) �
/�   � 1,2,3:� ok
/�   :wave_attributes%(3)=3
/��
/�Ȏ wave_attributes%(4) �
0   � 0,1,2:� ok
0   :wave_attributes%(4)=1
0�
0 I%=0
0*&value%=?(wave_data%+offset%+16+I%)
04�
0>   wave$+=�(value%)
0H   I%+=1
0R)   value%=?(wave_data%+offset%+16+I%)
0\� I%>127 � value%=0
0fK%=1:I%=1:J%=1
0pȕ K%<=�(wave$)
0z   value%=�(�wave$,K%,1))
0�   � value%=�(" ") �
0�(      I%+=1:� I%>width% � I%=1:J%+=1
0�      K%+=1
0�   �
0�-      � value%>=�("A") � value%<=�("Z") �
0�-         current_wave_i%(I%,J%)=value%-64
0�+         I%+=1:� I%>width% � I%=1:J%+=1
0�         K%+=1
0�      �
0�         reps%=0
0�/         ȕ value%>=�("0") � value%<=�("9")
0�            reps%=reps%*10
0�$            reps%+=value%-�("0")
1            K%+=1
1&            value%=�(�wave$,K%,1))
1         �
1$         � M%=1 � reps%
1.B            � value%>�(" ") � current_wave_i%(I%,J%)=value%-64
18.            I%+=1:� I%>width% � I%=1:J%+=1
1B         � M%
1L         K%+=1
1V      �
1`   �
1j�
1t�
1~:
1���store_current_wave
1�'� offset%,I%,J%,width%,S%,F%,count%
1��wave_offset(current_wave%)
1�� I%=0 � 9
1�=   ?(wave_data%+offset%+I%)=255-�(�wavepassword$,I%+1,1))
1�� I%
1�width%=0:S%=17:F%=0
1�� I%=1 � 8
1�   � J%=1 � 16
1�'      � current_wave_i%(J%,I%)<>0 �
1�          � J%<S% � S%=J%
1�          � J%>F% � F%=J%
2      �
2
   � J%
2� I%
2� S%=17 � S%=16
2(%� F%-S%+1>width% � width%=F%-S%+1
22#?(wave_data%+offset%+10)=width%
2<� I%=0 � 4
2F7   ?(wave_data%+offset%+11+I%)=wave_attributes%(I%)
2P� I%
2Zcount%=0
2d� I%=1 � 8
2n   � J%=S% � F%
2xL      ?(wave_data%+offset%+16+count%)=�unconvert(current_wave_i%(J%,I%))
2�      count%+=1
2�   � J%
2�� I%
2�� count%<127 �
2�   � I%=count% � 127
2�+      ?(wave_data%+offset%+16+count%)=0
2�   � I%
2��
2��
2�:
2���show_attributes
2��show_bomb_attributes
2��show_height(1)
3�show_num_bombs
3�show_num_rockets
3�show_init_dir
3"�update_wave_box
3,�
36:
3@��show_bomb_attributes
3J� A%,V%,SSX%,SSY%
3TV%=wave_attributes%(0)
3^� 5
3h� 0,black%
3r� A%=0 � 2
3|   SSX%=18*4+16+18*16*4
3�"   SSY%=WY%+20+A%*sprite_Y%+20
3�   � 0,black%
3�   ȓ Ȑ SSX%,SSY%,32,32
3�   � SSX%+8,SSY%+28
3�   � 0,red%
3�   � (V% � 2^A%)>0 �
3�      � �(91);
3�   �
3�      � �(92);
3�   �
3�� A%
3�� 4
3��
4�
4:
4��toggle_bomb_type
4&� Y%,V%,W%
40valid%=�
4:V%=wave_attributes%(0)
4DY%=(MY%-WY%-20)/sprite_Y%
4N� Y%<0 � Y%=0
4X� Y%>2 � Y%=2
4bW%=0
4l� A%=0 � 2
4v   � A%=Y% �
4�$      � (V% � 2^A%)=0 � W%+=2^A%
4�   �
4�$      � (V% � 2^A%)>0 � W%+=2^A%
4�   �
4�� A%
4�wave_attributes%(0)=W%
4��show_bomb_attributes
4��
4�:
4���show_height(delete%)
4�� V%,SSX%,SSY%,A$
4�
SSX%=1162
4�V%=wave_attributes%(1)
5SSY%=468+(6-V%)*36
5� delete%=0 �
5   � 0,black%
5    ȓ Ȑ SSX%,SSY%,114,36
5*�
54   � 0,red%
5>   ȓ Ȑ SSX%,SSY%,114,36
5H   � 0,white%
5R
   � 5
5\   Ȏ V% �
5f      � 1: A$="  TOP"
5p"      � 2: A$=" HIGH" :SSX%+=8
5z"      � 3: A$="MIDDLE":SSX%+=8
5�"      � 4: A$="MIDDLE":SSX%+=8
5�      � 5: A$="  LOW"
5�"      � 6: A$="BOTTOM":SSX%+=8
5�   �
5�   � SSX%,SSY%+32
5�   � A$;
5�
   � 4
5�   �
5��
5��
5�:
5���get_wave_height
5�� Y%,V%
6V%=wave_attributes%(1)
6Y%=(MY%-468)/36
6� Y%<0 � Y%=0
6$� Y%>5 � Y%=5
6.Y%=6-Y%
68� V%<>Y% �
6B   �show_height(0)
6L   wave_attributes%(1)=Y%
6V   �show_height(1)
6`�
6jvalid%=�
6t�
6~:
6���show_num_bombs
6�� V$
6�V$=�(wave_attributes%(2))
6�� �(V$)=1 � V$="0"+V$
6�� 0,black%
6�"ȓ Ȑ 1166+38,WY%-14+20,32,-32
6�� 0,red%
6�� 5
6�� 1166+38,WY%-14+24
6�	� V$;
6�� 4
6��
7�
7
:
7��get_num_bombs
7� X%,V%
7(V%=wave_attributes%(2)
72X%=(MX%-1162)/57
7<� X%=0 �
7F   � V%>1 � V%-=1
7P�
7Z   � V%<16 � V%+=1
7d�
7nwave_attributes%(2)=V%
7x�show_num_bombs
7�valid%=�
7��
7�:
7���show_num_rockets
7�� 0,black%
7�ȓ Ȑ 1166+38+8,44,32,32
7�� 0,red%
7�� 5
7�� 1166+38+8,40+36
7�� �(wave_attributes%(3));
7�� 4
7��
7��
8:
8��get_num_rockets
8� X%,V%
8"V%=wave_attributes%(3)
8,X%=(MX%-1162)/57
86� X%=0 �
8@   � V%>1 � V%-=1
8J�
8T   � V%<3 � V%+=1
8^�
8hwave_attributes%(3)=V%
8r�show_num_rockets
8|valid%=�
8��
8�:
8���show_init_dir
8�� V%,D%
8�V%=wave_attributes%(4)
8�� 5
8�� D%=0 � 2
8�   � 0,black%
8�    ȓ Ȑ 1000+D%*52,44,44,32
8�   � 0,red%
8�   � 1014+D%*52,40+36
8�   Ȏ D% �
8�+      � 0: � V%=1 � � �(91); � � �(92);
9+      � 1: � V%=0 � � �(91); � � �(92);
9+      � 2: � V%=2 � � �(91); � � �(92);
9   �
9&� D%
90� 4
9:�
9D�
9N:
9X��get_init_dir
9b� X%,V%
9lV%=wave_attributes%(4)
9vX%=(MX%-1000)/52
9�Ȏ X% �
9�   � 0:V%=1
9�   � 1:V%=0
9�
   :V%=2
9��
9�wave_attributes%(4)=V%
9��show_init_dir
9�valid%=�
9��
9�:
9���copy_to_number
9�$� offset1%,offset2%,I%,from%,to%
9�from%=current_wave%
:�to_which_wave_no
:offset1%=2+(from%-1)*144
:offset2%=2+(to%-1)*144
: � I%=0 � 143 � 4
:*:   !(wave_data%+offset2%+I%)=!(wave_data%+offset1%+I%)
:4� I%
:>valid%=�
:H#�message("Invader Wave Copied")
:R�
:\:
:f
��logo
:p� Y%,SY%,mag%
:zmag%=44
:�
SY%=48
:�Y%=SY%+680+8
:�� 0,dark_grey%
:�� 128+dark_grey%
:�$ȓ Ȑ 112+16*mag%,Y%,460,1020-Y%
:�� 0,white%
:�!ȓ 112+16*mag%,Y%,460,1020-Y%
:�� 0,red%
:�+�print(16,16,"ALIEN INVASION",51.5,0.5)
:��print(32,16,"WAVE",57,2.5)
:�!�print(32,16,"EDITOR",53,4.5)
:�
� 0,cyan%
:��print(8,16,"By",52,7)
;"�print(16,16,"Arc-World",55,7)
;� 0,white%
;�
;$:
;.��print(XS%,YS%,text$,X,Y)
;8� 5
;B� X*16,1024-Y*32
;L� 23,17,7,6,XS%;YS%;0,0
;V� text$;
;`� 23,17,7,6,8;8;0,0
;j� 4
;t�
;~�
;�:
;���update_wave_box
;�� W$
;�� 5
;�� 0,black%
;�ȓ Ȑ 892,48,48,36
;�� 0,red%
;�� 892,48+32
;�W$=�(current_wave%)
;�#� �(W$)<3 � W$=�3-�(W$),"0")+W$
;�	� W$;
;�� 4
<�
<
�
<:
<��get_new_wave
<(� MX%<915 �
<2   � current_wave%>1 �
<<      �store_current_wave
<F      �show_height(0)
<P      current_wave%-=1
<Z      �update_wave_box
<d      �show_current_wave
<n5      �message("Now At The Required Wave Number")
<x      �info_line
<�      valid%=�
<�   �
<��
<�   � current_wave%<128 �
<�      �store_current_wave
<�      �show_height(0)
<�      current_wave%+=1
<�      �update_wave_box
<�      �show_current_wave
<�5      �message("Now At The Required Wave Number")
<�      �info_line
<�      valid%=�
<�   �
=�
=�
=:
="��to_lower(A$)
=,� len%, M$
=6	B$=""
=@
len%=1
=Jȕ len%<=�(A$)
=T   M$=�A$,len%,1)
=^-   � M$>="A" � M$<="Z" � M$=�(�(M$) + 32)
=h   B$=B$+M$
=r   len%+=1
=|�
=��
�
00000000  0d 00 0a 27 f4 20 3e 20  3c 49 6e 76 61 73 69 6f  |...'. > <Invasio|
00000010  6e 24 44 69 72 3e 2e 42  61 73 69 63 50 72 6f 67  |n$Dir>.BasicProg|
00000020  73 2e 57 45 64 69 74 0d  00 14 04 0d 00 1e 23 f4  |s.WEdit.......#.|
00000030  20 50 72 6f 67 72 61 6d  20 3a 20 49 6e 76 61 64  | Program : Invad|
00000040  65 72 20 57 61 76 65 20  45 64 69 74 6f 72 0d 00  |er Wave Editor..|
00000050  28 11 f4 20 56 65 72 73  69 6f 6e 20 3a 20 31 0d  |(.. Version : 1.|
00000060  00 32 1c f4 20 41 75 74  68 6f 72 20 20 3a 20 41  |.2.. Author  : A|
00000070  2e 53 2e 57 2e 4e 65 6c  73 6f 6e 0d 00 3c 18 f4  |.S.W.Nelson..<..|
00000080  20 44 61 74 65 20 20 20  20 3a 20 31 39 2e 31 32  | Date    : 19.12|
00000090  2e 38 39 0d 00 46 05 3a  0d 00 50 38 ee 20 85 20  |.89..F.:..P8. . |
000000a0  db 3a f1 20 22 55 6e 65  78 70 65 63 74 65 64 20  |.:. "Unexpected |
000000b0  45 72 72 6f 72 3a 20 22  3b 9f 3b 3a f6 3a f1 20  |Error: ";.;:.:. |
000000c0  22 20 61 74 20 6c 69 6e  65 3a 20 22 3b 9e 3a e0  |" at line: ";.:.|
000000d0  0d 00 5a 09 f2 69 6e 69  74 0d 00 64 0d f2 6e 6f  |..Z..init..d..no|
000000e0  77 5f 77 68 61 74 0d 00  6e 26 d7 20 22 3c 49 6e  |w_what..n&. "<In|
000000f0  76 61 73 69 6f 6e 24 44  69 72 3e 2e 42 41 53 49  |vasion$Dir>.BASI|
00000100  43 50 52 4f 47 53 2e 4d  65 6e 75 22 0d 00 78 05  |CPROGS.Menu"..x.|
00000110  3a 0d 00 82 0a dd f2 69  6e 69 74 0d 00 8c 15 f2  |:......init.....|
00000120  64 65 66 69 6e 65 5f 76  61 72 69 61 62 6c 65 73  |define_variables|
00000130  0d 00 96 08 eb 20 31 32  0d 00 a0 26 ff 28 22 43  |..... 12...&.("C|
00000140  48 41 4e 4e 45 4c 56 4f  49 43 45 20 31 20 57 61  |HANNELVOICE 1 Wa|
00000150  76 65 53 79 6e 74 68 2d  42 65 65 70 22 29 0d 00  |veSynth-Beep")..|
00000160  aa 0d ff 28 22 53 4e 45  57 22 29 0d 00 b4 12 ff  |...("SNEW").....|
00000170  28 22 50 4f 49 4e 54 45  52 20 31 22 29 0d 00 be  |("POINTER 1")...|
00000180  11 ff 28 22 66 78 20 32  32 39 20 31 22 29 0d 00  |..("fx 229 1")..|
00000190  c8 08 c8 97 20 ee 0d 00  d2 18 c8 97 20 c8 93 20  |.... ....... .. |
000001a0  30 2c 31 30 2c 31 32 38  30 2c 31 30 31 30 0d 00  |0,10,1280,1010..|
000001b0  dc 10 c8 97 20 b8 20 36  34 30 2c 35 31 32 0d 00  |.... . 640,512..|
000001c0  e6 14 f2 64 65 66 61 75  6c 74 5f 70 61 6c 65 74  |...default_palet|
000001d0  74 65 0d 00 f0 0f f2 69  6e 69 74 5f 6d 65 6e 75  |te.....init_menu|
000001e0  73 0d 00 fa 05 db 0d 01  04 10 f2 64 72 61 77 5f  |s..........draw_|
000001f0  73 63 72 65 65 6e 0d 01  0e 24 f2 73 70 72 69 74  |screen...$.sprit|
00000200  65 5f 6c 6f 61 64 28 6f  6c 64 73 70 72 69 74 65  |e_load(oldsprite|
00000210  66 69 6c 65 6e 61 6d 65  24 29 0d 01 18 1c f2 77  |filename$).....w|
00000220  61 76 65 5f 6c 6f 61 64  28 6f 6c 64 66 69 6c 65  |ave_load(oldfile|
00000230  6e 61 6d 65 24 29 0d 01  22 16 f2 73 68 6f 77 5f  |name$).."..show_|
00000240  63 75 72 72 65 6e 74 5f  77 61 76 65 0d 01 2c 05  |current_wave..,.|
00000250  87 0d 01 36 2f f2 6d 65  73 73 61 67 65 28 22 49  |...6/.message("I|
00000260  6e 76 61 64 65 72 20 57  61 76 65 73 20 43 61 6e  |nvader Waves Can|
00000270  20 4e 6f 77 20 42 65 20  45 64 69 74 65 64 22 29  | Now Be Edited")|
00000280  0d 01 40 0e f2 69 6e 66  6f 5f 6c 69 6e 65 0d 01  |..@..info_line..|
00000290  4a 05 e1 0d 01 54 05 3a  0d 01 5e 16 dd f2 64 65  |J....T.:..^...de|
000002a0  66 69 6e 65 5f 76 61 72  69 61 62 6c 65 73 0d 01  |fine_variables..|
000002b0  68 0d ea 20 6f 66 66 73  65 74 25 0d 01 72 0c 62  |h.. offset%..r.b|
000002c0  6c 61 63 6b 25 3d 30 0d  01 7c 10 64 61 72 6b 5f  |lack%=0..|.dark_|
000002d0  67 72 65 79 25 3d 31 0d  01 86 11 6c 69 67 68 74  |grey%=1....light|
000002e0  5f 67 72 65 79 25 3d 33  0d 01 90 0a 72 65 64 25  |_grey%=3....red%|
000002f0  3d 34 0d 01 9a 0d 6f 72  61 6e 67 65 25 3d 35 0d  |=4....orange%=5.|
00000300  01 a4 0d 79 65 6c 6c 6f  77 25 3d 36 0d 01 ae 13  |...yellow%=6....|
00000310  62 72 69 67 68 74 5f 67  72 65 65 6e 25 3d 38 0d  |bright_green%=8.|
00000320  01 b8 11 64 61 72 6b 5f  67 72 65 65 6e 25 3d 39  |...dark_green%=9|
00000330  0d 01 c2 0c 63 79 61 6e  25 3d 31 30 0d 01 cc 11  |....cyan%=10....|
00000340  64 61 72 6b 5f 62 6c 75  65 25 3d 31 31 0d 01 d6  |dark_blue%=11...|
00000350  12 64 61 72 6b 5f 62 72  6f 77 6e 25 3d 31 32 0d  |.dark_brown%=12.|
00000360  01 e0 13 6c 69 67 68 74  5f 62 72 6f 77 6e 25 3d  |...light_brown%=|
00000370  31 33 0d 01 ea 0d 77 68  69 74 65 25 3d 31 35 0d  |13....white%=15.|
00000380  01 f4 0e 6d 61 67 65 6e  74 61 25 3d 39 0d 01 fe  |...magenta%=9...|
00000390  13 57 59 25 3d 33 32 2b  33 2a 31 32 2a 34 2b 38  |.WY%=32+3*12*4+8|
000003a0  0d 02 08 15 63 75 72 72  65 6e 74 5f 73 70 72 69  |....current_spri|
000003b0  74 65 25 3d 30 0d 02 12  13 63 75 72 72 65 6e 74  |te%=0....current|
000003c0  5f 77 61 76 65 25 3d 31  0d 02 1c 17 6d 61 78 5f  |_wave%=1....max_|
000003d0  6e 6f 5f 73 70 72 69 74  65 73 25 3d 31 32 32 0d  |no_sprites%=122.|
000003e0  02 26 15 6d 61 78 5f 6e  6f 5f 77 61 76 65 73 25  |.&.max_no_waves%|
000003f0  3d 31 32 38 0d 02 30 11  6e 75 6d 5f 73 70 61 63  |=128..0.num_spac|
00000400  65 73 25 3d 33 0d 02 3a  0d 66 6c 6f 6f 64 78 25  |es%=3..:.floodx%|
00000410  3d a3 0d 02 44 0d 66 6c  6f 6f 64 79 25 3d a3 0d  |=...D.floody%=..|
00000420  02 4e 16 63 75 72 72 65  6e 74 5f 69 6e 76 61 64  |.N.current_invad|
00000430  65 72 25 3d 31 0d 02 58  27 73 70 72 69 74 65 5f  |er%=1..X'sprite_|
00000440  73 69 7a 65 25 3d 34 38  2b 6d 61 78 5f 6e 6f 5f  |size%=48+max_no_|
00000450  73 70 72 69 74 65 73 25  2a 33 38 34 0d 02 62 10  |sprites%*384..b.|
00000460  73 70 72 69 74 65 5f 58  25 3d 37 32 0d 02 6c 10  |sprite_X%=72..l.|
00000470  73 70 72 69 74 65 5f 59  25 3d 36 38 0d 02 76 0b  |sprite_Y%=68..v.|
00000480  73 77 61 70 25 3d a3 0d  02 80 14 64 65 66 69 6e  |swap%=.....defin|
00000490  65 64 5f 77 61 76 65 73  25 3d 30 0d 02 8a 12 75  |ed_waves%=0....u|
000004a0  6e 68 69 67 68 6c 69 67  68 74 25 3d b9 0d 02 94  |nhighlight%=....|
000004b0  10 66 72 65 65 5f 65 64  69 74 25 3d 30 0d 02 9e  |.free_edit%=0...|
000004c0  11 73 65 65 64 25 3d 31  30 32 34 2a 31 36 0d 02  |.seed%=1024*16..|
000004d0  a8 12 6f 6c 64 5f 69 6e  76 61 64 65 72 25 3d 30  |..old_invader%=0|
000004e0  0d 02 b2 22 77 61 76 65  5f 73 69 7a 65 25 3d 32  |..."wave_size%=2|
000004f0  2b 6d 61 78 5f 6e 6f 5f  77 61 76 65 73 25 2a 31  |+max_no_waves%*1|
00000500  34 34 0d 02 bc 0e 74 6f  5f 77 61 76 65 25 3d 30  |44....to_wave%=0|
00000510  0d 02 c6 0f 6f 72 69 67  69 6e 61 6c 25 3d b9 0d  |....original%=..|
00000520  02 d0 0a 6e 75 6d 25 3d  30 0d 02 da 36 6f 6c 64  |...num%=0...6old|
00000530  73 70 72 69 74 65 66 69  6c 65 6e 61 6d 65 24 3d  |spritefilename$=|
00000540  22 3c 49 6e 76 61 73 69  6f 6e 24 44 69 72 3e 2e  |"<Invasion$Dir>.|
00000550  4d 49 53 43 2e 49 6e 76  53 70 72 69 74 65 22 0d  |MISC.InvSprite".|
00000560  02 e4 2f 6f 6c 64 66 69  6c 65 6e 61 6d 65 24 3d  |../oldfilename$=|
00000570  22 3c 49 6e 76 61 73 69  6f 6e 24 44 69 72 3e 2e  |"<Invasion$Dir>.|
00000580  4d 49 53 43 2e 57 61 76  65 43 6f 70 79 22 0d 02  |MISC.WaveCopy"..|
00000590  ee 09 42 24 3d 22 22 0d  02 f8 10 66 69 6c 65 6e  |..B$=""....filen|
000005a0  61 6d 65 24 3d 22 22 0d  03 02 10 70 61 73 73 77  |ame$=""....passw|
000005b0  6f 72 64 24 3d 22 22 0d  03 0c 14 77 61 76 65 70  |ord$=""....wavep|
000005c0  61 73 73 77 6f 72 64 24  3d 22 22 0d 03 16 1f de  |assword$="".....|
000005d0  20 73 70 72 69 74 65 5f  64 61 74 61 25 20 73 70  | sprite_data% sp|
000005e0  72 69 74 65 5f 73 69 7a  65 25 0d 03 20 1b de 20  |rite_size%.. .. |
000005f0  77 61 76 65 5f 64 61 74  61 25 20 77 61 76 65 5f  |wave_data% wave_|
00000600  73 69 7a 65 25 0d 03 2a  1e de 20 63 75 72 72 65  |size%..*.. curre|
00000610  6e 74 5f 73 70 72 69 74  65 5f 63 25 28 31 36 2c  |nt_sprite_c%(16,|
00000620  31 36 29 0d 03 34 1b de  20 63 75 72 72 65 6e 74  |16)..4.. current|
00000630  5f 77 61 76 65 5f 69 25  28 31 36 2c 38 29 0d 03  |_wave_i%(16,8)..|
00000640  3e 19 de 20 77 61 76 65  5f 61 74 74 72 69 62 75  |>.. wave_attribu|
00000650  74 65 73 25 28 34 29 0d  03 48 18 77 61 76 65 5f  |tes%(4)..H.wave_|
00000660  61 74 74 72 69 62 75 74  65 73 25 28 29 3d 30 0d  |attributes%()=0.|
00000670  03 52 19 63 75 72 72 65  6e 74 5f 73 70 72 69 74  |.R.current_sprit|
00000680  65 5f 63 25 28 29 3d 30  0d 03 5c 17 63 75 72 72  |e_c%()=0..\.curr|
00000690  65 6e 74 5f 77 61 76 65  5f 69 25 28 29 3d 30 0d  |ent_wave_i%()=0.|
000006a0  03 66 10 e3 20 49 25 3d  31 20 b8 20 31 32 38 0d  |.f.. I%=1 . 128.|
000006b0  03 70 17 20 20 20 f2 77  61 76 65 5f 6f 66 66 73  |.p.   .wave_offs|
000006c0  65 74 28 49 25 29 0d 03  7a 21 20 20 20 77 61 76  |et(I%)..z!   wav|
000006d0  65 70 61 73 73 77 6f 72  64 24 3d 22 44 55 4d 4d  |epassword$="DUMM|
000006e0  59 20 57 4f 52 44 22 0d  03 84 11 20 20 20 e3 20  |Y WORD"....   . |
000006f0  4b 25 3d 30 20 b8 20 39  0d 03 8e 40 20 20 20 20  |K%=0 . 9...@    |
00000700  20 20 3f 28 77 61 76 65  5f 64 61 74 61 25 2b 6f  |  ?(wave_data%+o|
00000710  66 66 73 65 74 25 2b 4b  25 29 3d 32 35 35 2d 97  |ffset%+K%)=255-.|
00000720  28 c1 77 61 76 65 70 61  73 73 77 6f 72 64 24 2c  |(.wavepassword$,|
00000730  4b 25 2b 31 2c 31 29 29  0d 03 98 0b 20 20 20 ed  |K%+1,1))....   .|
00000740  20 4b 25 0d 03 a2 2a 20  20 20 3f 28 77 61 76 65  | K%...*   ?(wave|
00000750  5f 64 61 74 61 25 2b 6f  66 66 73 65 74 25 2b 31  |_data%+offset%+1|
00000760  30 29 3d 31 36 3a f4 20  77 69 64 74 68 0d 03 ac  |0)=16:. width...|
00000770  34 20 20 20 3f 28 77 61  76 65 5f 64 61 74 61 25  |4   ?(wave_data%|
00000780  2b 6f 66 66 73 65 74 25  2b 31 31 29 3d 37 20 3a  |+offset%+11)=7 :|
00000790  f4 20 62 6f 6d 62 20 61  74 74 72 69 62 75 74 65  |. bomb attribute|
000007a0  73 0d 03 b6 30 20 20 20  3f 28 77 61 76 65 5f 64  |s...0   ?(wave_d|
000007b0  61 74 61 25 2b 6f 66 66  73 65 74 25 2b 31 32 29  |ata%+offset%+12)|
000007c0  3d 31 20 3a f4 20 77 61  76 65 20 68 65 69 67 68  |=1 :. wave heigh|
000007d0  74 0d 03 c0 2e 20 20 20  3f 28 77 61 76 65 5f 64  |t....   ?(wave_d|
000007e0  61 74 61 25 2b 6f 66 66  73 65 74 25 2b 31 33 29  |ata%+offset%+13)|
000007f0  3d 31 30 3a f4 20 6e 75  6d 20 62 6f 6d 62 73 0d  |=10:. num bombs.|
00000800  03 ca 30 20 20 20 3f 28  77 61 76 65 5f 64 61 74  |..0   ?(wave_dat|
00000810  61 25 2b 6f 66 66 73 65  74 25 2b 31 34 29 3d 33  |a%+offset%+14)=3|
00000820  20 3a f4 20 6e 75 6d 20  72 6f 63 6b 65 74 73 0d  | :. num rockets.|
00000830  03 d4 2d 20 20 20 3f 28  77 61 76 65 5f 64 61 74  |..-   ?(wave_dat|
00000840  61 25 2b 6f 66 66 73 65  74 25 2b 31 35 29 3d 31  |a%+offset%+15)=1|
00000850  20 3a f4 20 69 6e 69 74  20 64 69 72 0d 03 de 14  | :. init dir....|
00000860  20 20 20 e3 20 4b 25 3d  31 36 20 b8 20 31 34 33  |   . K%=16 . 143|
00000870  0d 03 e8 25 20 20 20 20  20 20 3f 28 77 61 76 65  |...%      ?(wave|
00000880  5f 64 61 74 61 25 2b 6f  66 66 73 65 74 25 2b 4b  |_data%+offset%+K|
00000890  25 29 3d 33 32 0d 03 f2  0b 20 20 20 ed 20 4b 25  |%)=32....   . K%|
000008a0  0d 03 fc 08 ed 20 49 25  0d 04 06 05 e1 0d 04 10  |..... I%........|
000008b0  05 3a 0d 04 1a 15 dd f2  64 65 66 61 75 6c 74 5f  |.:......default_|
000008c0  70 61 6c 65 74 74 65 0d  04 24 10 ea 20 41 25 2c  |palette..$.. A%,|
000008d0  42 25 28 29 2c 43 25 0d  04 2e 0b de 20 42 25 28  |B%(),C%..... B%(|
000008e0  33 29 0d 04 38 05 f7 0d  04 42 0b dc 20 30 2c 30  |3)..8....B.. 0,0|
000008f0  2c 30 0d 04 4c 11 dc 20  31 32 38 2c 31 32 38 2c  |,0..L.. 128,128,|
00000900  31 32 38 0d 04 56 11 dc  20 31 37 36 2c 31 37 36  |128..V.. 176,176|
00000910  2c 31 37 36 0d 04 60 11  dc 20 32 30 38 2c 32 30  |,176..`.. 208,20|
00000920  38 2c 32 30 38 0d 04 6a  0d dc 20 32 34 30 2c 30  |8,208..j.. 240,0|
00000930  2c 30 0d 04 74 0f dc 20  32 34 30 2c 31 37 36 2c  |,0..t.. 240,176,|
00000940  30 0d 04 7e 0f dc 20 32  34 30 2c 32 32 34 2c 30  |0..~.. 240,224,0|
00000950  0d 04 88 11 dc 20 32 34  30 2c 32 34 30 2c 32 30  |..... 240,240,20|
00000960  38 0d 04 92 0d dc 20 30  2c 32 34 30 2c 30 0d 04  |8..... 0,240,0..|
00000970  9c 0e dc 20 30 2c 31 37  36 2c 39 36 0d 04 a6 0f  |... 0,176,96....|
00000980  dc 20 30 2c 31 39 32 2c  32 34 30 0d 04 b0 0d dc  |. 0,192,240.....|
00000990  20 30 2c 30 2c 31 36 30  0d 04 ba 10 dc 20 31 36  | 0,0,160..... 16|
000009a0  30 2c 31 31 32 2c 39 36  0d 04 c4 10 dc 20 31 39  |0,112,96..... 19|
000009b0  32 2c 31 34 34 2c 38 30  0d 04 ce 11 dc 20 32 34  |2,144,80..... 24|
000009c0  30 2c 32 30 38 2c 31 37  36 0d 04 d8 11 dc 20 32  |0,208,176..... 2|
000009d0  34 30 2c 32 34 30 2c 32  34 30 0d 04 e2 0f f4 44  |40,240,240.....D|
000009e0  41 54 41 20 30 2c 30 2c  30 0d 04 ec 11 f4 44 41  |ATA 0,0,0.....DA|
000009f0  54 41 20 32 35 35 2c 30  2c 30 0d 04 f6 11 f4 44  |TA 255,0,0.....D|
00000a00  41 54 41 20 30 2c 32 35  35 2c 30 0d 05 00 13 f4  |ATA 0,255,0.....|
00000a10  44 41 54 41 20 32 35 35  2c 32 35 35 2c 30 0d 05  |DATA 255,255,0..|
00000a20  0a 11 f4 44 41 54 41 20  30 2c 30 2c 32 35 35 0d  |...DATA 0,0,255.|
00000a30  05 14 13 f4 44 41 54 41  20 32 35 35 2c 30 2c 32  |....DATA 255,0,2|
00000a40  35 35 0d 05 1e 13 f4 44  41 54 41 20 30 2c 32 35  |55.....DATA 0,25|
00000a50  35 2c 32 35 35 0d 05 28  15 f4 44 41 54 41 20 32  |5,255..(..DATA 2|
00000a60  35 35 2c 32 35 35 2c 32  35 35 0d 05 32 13 f4 44  |55,255,255..2..D|
00000a70  41 54 41 20 31 39 30 2c  31 33 30 2c 30 0d 05 3c  |ATA 190,130,0..<|
00000a80  14 f4 44 41 54 41 20 32  35 35 2c 31 32 30 2c 35  |..DATA 255,120,5|
00000a90  30 0d 05 46 15 f4 44 41  54 41 20 31 32 38 2c 31  |0..F..DATA 128,1|
00000aa0  32 38 2c 31 32 38 0d 05  50 11 f4 44 41 54 41 20  |28,128..P..DATA |
00000ab0  30 2c 30 2c 31 32 38 0d  05 5a 15 f4 44 41 54 41  |0,0,128..Z..DATA|
00000ac0  20 32 30 30 2c 32 30 30  2c 32 30 30 0d 05 64 11  | 200,200,200..d.|
00000ad0  f4 44 41 54 41 20 30 2c  31 32 38 2c 30 0d 05 6e  |.DATA 0,128,0..n|
00000ae0  13 f4 44 41 54 41 20 32  34 30 2c 32 32 30 2c 30  |..DATA 240,220,0|
00000af0  0d 05 78 13 f4 44 41 54  41 20 32 35 35 2c 31 38  |..x..DATA 255,18|
00000b00  30 2c 30 0d 05 82 0f e3  20 41 25 3d 30 20 b8 20  |0,0..... A%=0 . |
00000b10  31 35 0d 05 8c 11 20 20  20 e3 20 43 25 3d 31 20  |15....   . C%=1 |
00000b20  b8 20 33 0d 05 96 12 20  20 20 20 20 20 f3 20 42  |. 3....      . B|
00000b30  25 28 43 25 29 0d 05 a0  0b 20 20 20 ed 20 43 25  |%(C%)....   . C%|
00000b40  0d 05 aa 1d 20 20 20 fb  20 41 25 2c 42 25 28 31  |....   . A%,B%(1|
00000b50  29 2c 42 25 28 32 29 2c  42 25 28 33 29 0d 05 b4  |),B%(2),B%(3)...|
00000b60  08 ed 20 41 25 0d 05 be  05 e1 0d 05 c8 05 3a 0d  |.. A%.........:.|
00000b70  05 d2 10 dd f2 69 6e 69  74 5f 6d 65 6e 75 73 0d  |.....init_menus.|
00000b80  05 dc 12 f3 20 74 6f 74  61 6c 5f 6d 65 6e 75 73  |.... total_menus|
00000b90  25 0d 05 e6 3b de 20 6d  65 6e 75 5f 6c 65 6e 67  |%...;. menu_leng|
00000ba0  74 68 25 28 74 6f 74 61  6c 5f 6d 65 6e 75 73 25  |th%(total_menus%|
00000bb0  29 2c 6d 65 6e 75 5f 6f  72 69 67 69 6e 25 28 74  |),menu_origin%(t|
00000bc0  6f 74 61 6c 5f 6d 65 6e  75 73 25 29 0d 05 f0 16  |otal_menus%)....|
00000bd0  6d 61 78 5f 6d 65 6e 75  5f 6c 65 6e 67 74 68 25  |max_menu_length%|
00000be0  3d 30 0d 05 fa 19 e3 20  41 25 3d 31 20 b8 20 74  |=0..... A%=1 . t|
00000bf0  6f 74 61 6c 5f 6d 65 6e  75 73 25 0d 06 04 19 20  |otal_menus%.... |
00000c00  20 20 f3 20 6d 65 6e 75  5f 6c 65 6e 67 74 68 25  |  . menu_length%|
00000c10  28 41 25 29 0d 06 0e 4e  20 20 20 e7 20 6d 65 6e  |(A%)...N   . men|
00000c20  75 5f 6c 65 6e 67 74 68  25 28 41 25 29 3e 6d 61  |u_length%(A%)>ma|
00000c30  78 5f 6d 65 6e 75 5f 6c  65 6e 67 74 68 25 20 8c  |x_menu_length% .|
00000c40  20 6d 61 78 5f 6d 65 6e  75 5f 6c 65 6e 67 74 68  | max_menu_length|
00000c50  25 3d 6d 65 6e 75 5f 6c  65 6e 67 74 68 25 28 41  |%=menu_length%(A|
00000c60  25 29 0d 06 18 08 ed 20  41 25 0d 06 22 19 e3 20  |%)..... A%..".. |
00000c70  41 25 3d 31 20 b8 20 74  6f 74 61 6c 5f 6d 65 6e  |A%=1 . total_men|
00000c80  75 73 25 0d 06 2c 19 20  20 20 f3 20 6d 65 6e 75  |us%..,.   . menu|
00000c90  5f 6f 72 69 67 69 6e 25  28 41 25 29 0d 06 36 08  |_origin%(A%)..6.|
00000ca0  ed 20 41 25 0d 06 40 2a  de 20 6d 65 6e 75 24 28  |. A%..@*. menu$(|
00000cb0  74 6f 74 61 6c 5f 6d 65  6e 75 73 25 2c 6d 61 78  |total_menus%,max|
00000cc0  5f 6d 65 6e 75 5f 6c 65  6e 67 74 68 25 29 0d 06  |_menu_length%)..|
00000cd0  4a 19 e3 20 41 25 3d 31  20 b8 20 74 6f 74 61 6c  |J.. A%=1 . total|
00000ce0  5f 6d 65 6e 75 73 25 0d  06 54 20 20 20 20 e3 20  |_menus%..T    . |
00000cf0  42 25 3d 31 20 b8 20 6d  65 6e 75 5f 6c 65 6e 67  |B%=1 . menu_leng|
00000d00  74 68 25 28 41 25 29 0d  06 5e 18 20 20 20 20 20  |th%(A%)..^.     |
00000d10  20 f3 20 6d 65 6e 75 24  28 41 25 2c 42 25 29 0d  | . menu$(A%,B%).|
00000d20  06 68 0b 20 20 20 ed 20  42 25 0d 06 72 08 ed 20  |.h.   . B%..r.. |
00000d30  41 25 0d 06 7c 13 63 75  72 72 65 6e 74 5f 6d 65  |A%..|.current_me|
00000d40  6e 75 25 3d 31 0d 06 86  13 6d 65 6e 75 5f 70 6f  |nu%=1....menu_po|
00000d50  73 69 74 69 6f 6e 3d 30  0d 06 90 07 dc 20 39 0d  |sition=0..... 9.|
00000d60  06 9a 1f dc 20 36 2c 20  38 2c 20 37 2c 20 34 2c  |.... 6, 8, 7, 4,|
00000d70  20 38 2c 20 33 2c 20 33  2c 20 34 2c 20 35 0d 06  | 8, 3, 3, 4, 5..|
00000d80  a4 1f dc 20 30 2c 20 31  2c 20 31 2c 20 31 2c 20  |... 0, 1, 1, 1, |
00000d90  31 2c 20 32 2c 20 32 2c  20 32 2c 20 32 0d 06 ae  |1, 2, 2, 2, 2...|
00000da0  5f dc 20 57 61 76 65 20  45 64 69 74 6f 72 20 4d  |_. Wave Editor M|
00000db0  65 6e 75 2c 20 45 64 69  74 20 57 61 76 65 2c 20  |enu, Edit Wave, |
00000dc0  45 64 69 74 20 57 61 76  65 20 41 74 74 72 69 62  |Edit Wave Attrib|
00000dd0  75 74 65 73 2c 20 46 69  6c 65 20 4f 70 74 69 6f  |utes, File Optio|
00000de0  6e 73 2c 20 53 65 6c 65  63 74 20 57 61 76 65 2c  |ns, Select Wave,|
00000df0  20 45 78 69 74 20 45 64  69 74 6f 72 0d 06 b8 64  | Exit Editor...d|
00000e00  dc 20 45 64 69 74 20 57  61 76 65 20 4d 65 6e 75  |. Edit Wave Menu|
00000e10  2c 20 43 6c 65 61 72 2c  20 46 6c 69 70 20 4d 65  |, Clear, Flip Me|
00000e20  6e 75 2c 20 46 6c 6f 6f  64 20 4d 65 6e 75 2c 20  |nu, Flood Menu, |
00000e30  52 65 66 6c 65 63 74 20  4d 65 6e 75 2c 20 53 68  |Reflect Menu, Sh|
00000e40  69 66 74 20 4d 65 6e 75  2c 20 53 77 61 70 2c 20  |ift Menu, Swap, |
00000e50  55 6e 64 6f 20 41 6c 6c  20 43 68 61 6e 67 65 73  |Undo All Changes|
00000e60  0d 06 c2 7f dc 20 57 61  76 65 20 41 74 74 72 69  |..... Wave Attri|
00000e70  62 75 74 65 73 20 4d 65  6e 75 2c 20 42 6f 6d 62  |butes Menu, Bomb|
00000e80  20 54 79 70 65 73 2c 20  4d 61 78 20 49 6e 76 61  | Types, Max Inva|
00000e90  64 65 72 20 42 6f 6d 62  73 2c 20 4d 61 78 20 50  |der Bombs, Max P|
00000ea0  6c 61 79 65 72 20 52 6f  63 6b 65 74 73 2c 20 49  |layer Rockets, I|
00000eb0  6e 69 74 69 61 6c 20 44  69 72 65 63 74 69 6f 6e  |nitial Direction|
00000ec0  2c 20 49 6e 69 74 69 61  6c 20 57 61 76 65 20 48  |, Initial Wave H|
00000ed0  65 69 67 68 74 2c 20 50  61 73 73 77 6f 72 64 0d  |eight, Password.|
00000ee0  06 cc 3d dc 20 46 69 6c  65 20 4f 70 74 69 6f 6e  |..=. File Option|
00000ef0  73 20 4d 65 6e 75 2c 20  4c 6f 61 64 20 53 70 72  |s Menu, Load Spr|
00000f00  69 74 65 73 2c 20 4c 6f  61 64 20 57 61 76 65 73  |ites, Load Waves|
00000f10  2c 20 53 61 76 65 20 57  61 76 65 73 0d 06 d6 97  |, Save Waves....|
00000f20  dc 20 53 65 6c 65 63 74  20 57 61 76 65 20 4d 65  |. Select Wave Me|
00000f30  6e 75 2c 20 43 6f 70 79  20 54 6f 20 57 61 76 65  |nu, Copy To Wave|
00000f40  20 4e 75 6d 62 65 72 2c  54 6f 20 57 61 76 65 20  | Number,To Wave |
00000f50  4e 75 6d 62 65 72 2c 20  53 65 74 20 52 61 6e 64  |Number, Set Rand|
00000f60  6f 6d 20 41 74 74 72 69  62 75 74 65 2c 20 52 61  |om Attribute, Ra|
00000f70  6e 64 6f 6d 20 57 61 76  65 2c 20 52 61 6e 64 6f  |ndom Wave, Rando|
00000f80  6d 20 58 20 52 65 66 6c  65 63 74 2c 20 52 61 6e  |m X Reflect, Ran|
00000f90  64 6f 6d 20 59 20 52 65  66 6c 65 63 74 2c 20 52  |dom Y Reflect, R|
00000fa0  61 6e 64 6f 6d 20 58 20  26 20 59 20 52 65 66 6c  |andom X & Y Refl|
00000fb0  65 63 74 0d 06 e0 21 dc  20 46 6c 69 70 20 57 61  |ect...!. Flip Wa|
00000fc0  76 65 20 4d 65 6e 75 2c  20 52 6f 77 2c 20 43 6f  |ve Menu, Row, Co|
00000fd0  6c 75 6d 6e 0d 06 ea 1d  dc 20 46 6c 6f 6f 64 20  |lumn..... Flood |
00000fe0  4d 65 6e 75 2c 20 52 6f  77 2c 20 43 6f 6c 75 6d  |Menu, Row, Colum|
00000ff0  6e 0d 06 f4 30 dc 20 52  65 66 6c 65 63 74 20 4d  |n...0. Reflect M|
00001000  65 6e 75 2c 20 58 20 41  78 69 73 2c 20 59 20 41  |enu, X Axis, Y A|
00001010  78 69 73 2c 20 58 20 41  6e 64 20 59 20 41 78 69  |xis, X And Y Axi|
00001020  73 0d 06 fe 27 dc 20 53  68 69 66 74 20 4d 65 6e  |s...'. Shift Men|
00001030  75 2c 20 4c 65 66 74 2c  20 52 69 67 68 74 2c 20  |u, Left, Right, |
00001040  55 70 2c 20 44 6f 77 6e  0d 07 08 05 e1 0d 07 12  |Up, Down........|
00001050  05 3a 0d 07 1c 11 dd f2  64 72 61 77 5f 73 63 72  |.:......draw_scr|
00001060  65 65 6e 0d 07 26 08 ea  20 44 25 0d 07 30 1f f2  |een..&.. D%..0..|
00001070  73 68 6f 77 5f 6d 65 6e  75 28 63 75 72 72 65 6e  |show_menu(curren|
00001080  74 5f 6d 65 6e 75 25 2c  30 29 0d 07 3a 09 f2 6c  |t_menu%,0)..:..l|
00001090  6f 67 6f 0d 07 44 12 e6  20 30 2c 64 61 72 6b 5f  |ogo..D.. 0,dark_|
000010a0  62 6c 75 65 25 0d 07 4e  15 c8 93 20 c8 90 20 30  |blue%..N... .. 0|
000010b0  2c 30 2c 31 32 38 30 2c  33 36 0d 07 58 1a c8 93  |,0,1280,36..X...|
000010c0  20 c8 90 20 30 2c 37 33  38 2c 34 2b 31 38 2a 34  | .. 0,738,4+18*4|
000010d0  34 2c 33 36 0d 07 62 24  e6 20 30 2c 77 68 69 74  |4,36..b$. 0,whit|
000010e0  65 25 3a f4 20 73 68 6f  77 20 69 6e 69 74 69 61  |e%:. show initia|
000010f0  6c 20 68 65 69 67 68 74  0d 07 6c 17 c8 93 20 31  |l height..l... 1|
00001100  31 36 30 2c 34 36 34 2c  31 31 38 2c 32 36 36 0d  |160,464,118,266.|
00001110  07 76 12 e6 20 30 2c 64  61 72 6b 5f 67 72 65 79  |.v.. 0,dark_grey|
00001120  25 0d 07 80 19 c8 93 20  c8 90 20 31 31 36 32 2c  |%...... .. 1162,|
00001130  36 39 32 2c 31 31 34 2c  33 32 0d 07 8a 19 c8 93  |692,114,32......|
00001140  20 c8 90 20 31 31 36 30  2c 34 31 30 2c 31 31 38  | .. 1160,410,118|
00001150  2c 34 30 0d 07 94 18 c8  93 20 c8 90 20 31 31 36  |,40...... .. 116|
00001160  32 2c 39 32 2c 31 31 34  2c 34 30 0d 07 9e 1a c8  |2,92,114,40.....|
00001170  93 20 c8 90 20 39 39 38  2c 39 32 2b 34 34 2c 31  |. .. 998,92+44,1|
00001180  35 32 2c 34 30 0d 07 a8  0e e6 20 30 2c 77 68 69  |52,40..... 0,whi|
00001190  74 65 25 0d 07 b2 07 ef  20 35 0d 07 bc 0e ec 20  |te%..... 5..... |
000011a0  31 31 37 32 2c 37 32 30  0d 07 c6 0f f1 20 22 48  |1172,720..... "H|
000011b0  45 49 47 48 54 22 3b 0d  07 d0 0e ec 20 31 31 38  |EIGHT";..... 118|
000011c0  30 2c 34 34 32 0d 07 da  0e f1 20 22 42 4f 4d 42  |0,442..... "BOMB|
000011d0  53 22 3b 0d 07 e4 07 ef  20 34 0d 07 ee 05 87 0d  |S";..... 4......|
000011e0  07 f8 17 86 20 31 31 36  30 2c 36 38 38 2c 31 32  |.... 1160,688,12|
000011f0  37 39 2c 36 38 38 0d 08  02 15 f4 20 73 68 6f 77  |79,688..... show|
00001200  20 62 6f 6d 62 20 74 69  74 6c 65 0d 08 0c 16 c8  | bomb title.....|
00001210  93 20 31 31 36 30 2c 34  31 30 2c 31 31 38 2c 34  |. 1160,410,118,4|
00001220  30 0d 08 16 18 f4 20 73  68 6f 77 20 6e 75 6d 20  |0..... show num |
00001230  62 6f 6d 62 73 20 62 6f  78 0d 08 20 1c c8 93 20  |bombs box.. ... |
00001240  31 31 36 30 2c 57 59 25  2d 35 36 2b 32 30 2c 31  |1160,WY%-56+20,1|
00001250  31 38 2c 35 36 0d 08 2a  10 44 25 3d 57 59 25 2d  |18,56..*.D%=WY%-|
00001260  31 34 2b 32 30 0d 08 34  07 ef 20 35 0d 08 3e 0d  |14+20..4.. 5..>.|
00001270  ec 20 31 31 36 36 2c 44  25 0d 08 48 0c f1 20 bd  |. 1166,D%..H.. .|
00001280  28 39 33 29 3b 0d 08 52  10 ec 20 31 31 36 36 2b  |(93);..R.. 1166+|
00001290  31 36 2c 44 25 0d 08 5c  0c f1 20 bd 28 39 35 29  |16,D%..\.. .(95)|
000012a0  3b 0d 08 66 10 ec 20 31  32 37 39 2d 32 32 2c 44  |;..f.. 1279-22,D|
000012b0  25 0d 08 70 0c f1 20 bd  28 39 34 29 3b 0d 08 7a  |%..p.. .(94);..z|
000012c0  13 ec 20 31 32 37 39 2d  32 32 2d 31 36 2c 44 25  |.. 1279-22-16,D%|
000012d0  0d 08 84 0c f1 20 bd 28  39 35 29 3b 0d 08 8e 07  |..... .(95);....|
000012e0  ef 20 34 0d 08 98 05 87  0d 08 a2 22 f4 20 73 68  |. 4........". sh|
000012f0  6f 77 20 6d 61 78 20 6e  6f 2e 20 70 6c 61 79 65  |ow max no. playe|
00001300  72 73 20 72 6f 63 6b 65  74 73 0d 08 ac 15 c8 93  |rs rockets......|
00001310  20 31 31 36 30 2c 39 32  2c 31 31 38 2c 34 30 0d  | 1160,92,118,40.|
00001320  08 b6 15 c8 93 20 31 31  36 30 2c 34 30 2c 31 31  |..... 1160,40,11|
00001330  38 2c 35 32 0d 08 c0 07  ef 20 35 0d 08 ca 0e ec  |8,52..... 5.....|
00001340  20 31 31 36 34 2c 31 32  34 0d 08 d4 10 f1 20 22  | 1164,124..... "|
00001350  52 4f 43 4b 45 54 53 22  3b 0d 08 de 0d ec 20 31  |ROCKETS";..... 1|
00001360  31 36 36 2c 38 30 0d 08  e8 0c f1 20 bd 28 39 33  |166,80..... .(93|
00001370  29 3b 0d 08 f2 10 ec 20  31 31 36 36 2b 31 36 2c  |);..... 1166+16,|
00001380  38 30 0d 08 fc 0c f1 20  bd 28 39 35 29 3b 0d 09  |80..... .(95);..|
00001390  06 10 ec 20 31 32 37 39  2d 32 32 2c 38 30 0d 09  |... 1279-22,80..|
000013a0  10 0c f1 20 bd 28 39 34  29 3b 0d 09 1a 13 ec 20  |... .(94);..... |
000013b0  31 32 37 39 2d 32 32 2d  31 36 2c 38 30 0d 09 24  |1279-22-16,80..$|
000013c0  0c f1 20 bd 28 39 35 29  3b 0d 09 2e 16 f4 20 73  |.. .(95);..... s|
000013d0  68 6f 77 20 69 6e 69 74  69 61 6c 20 64 69 72 0d  |how initial dir.|
000013e0  09 38 17 c8 93 20 39 39  38 2c 39 32 2b 34 34 2c  |.8... 998,92+44,|
000013f0  31 35 32 2c 34 30 0d 09  42 0e e3 20 44 25 3d 30  |152,40..B.. D%=0|
00001400  20 b8 20 32 0d 09 4c 1c  20 20 20 c8 93 20 39 39  | . 2..L.   .. 99|
00001410  38 2b 44 25 2a 35 30 2c  34 30 2c 35 32 2c 39 36  |8+D%*50,40,52,96|
00001420  0d 09 56 08 ed 20 44 25  0d 09 60 1a 86 20 39 39  |..V.. D%..`.. 99|
00001430  38 2c 34 30 2b 34 38 2c  31 31 35 30 2c 34 30 2b  |8,40+48,1150,40+|
00001440  34 38 0d 09 6a 10 ec 20  31 30 30 32 2c 39 32 2b  |48..j.. 1002,92+|
00001450  37 36 0d 09 74 12 f1 20  22 44 49 52 45 43 54 49  |76..t.. "DIRECTI|
00001460  4f 4e 22 3b 0d 09 7e 10  ec 20 31 30 31 34 2c 34  |ON";..~.. 1014,4|
00001470  30 2b 38 36 0d 09 88 0c  f1 20 bd 28 39 33 29 3b  |0+86..... .(93);|
00001480  0d 09 92 10 ec 20 31 30  36 36 2c 34 30 2b 38 36  |..... 1066,40+86|
00001490  0d 09 9c 0a f1 20 22 3f  22 3b 0d 09 a6 13 ec 20  |..... "?";..... |
000014a0  31 30 36 36 2b 35 32 2c  34 30 2b 38 36 0d 09 b0  |1066+52,40+86...|
000014b0  0c f1 20 bd 28 39 34 29  3b 0d 09 ba 15 f4 20 73  |.. .(94);..... s|
000014c0  68 6f 77 20 77 68 69 63  68 20 77 61 76 65 0d 09  |how which wave..|
000014d0  c4 12 e6 20 30 2c 64 61  72 6b 5f 67 72 65 79 25  |... 0,dark_grey%|
000014e0  0d 09 ce 17 c8 93 20 c8  90 20 38 34 30 2c 39 32  |...... .. 840,92|
000014f0  2c 31 35 30 2c 34 30 0d  09 d8 0e e6 20 30 2c 77  |,150,40..... 0,w|
00001500  68 69 74 65 25 0d 09 e2  17 c8 93 20 38 34 30 2c  |hite%...... 840,|
00001510  39 32 2c 31 31 38 2b 33  32 2c 34 30 0d 09 ec 17  |92,118+32,40....|
00001520  c8 93 20 38 34 30 2c 34  30 2c 31 31 38 2b 33 32  |.. 840,40,118+32|
00001530  2c 35 32 0d 09 f6 07 ef  20 35 0d 0a 00 0d ec 20  |,52..... 5..... |
00001540  38 38 34 2c 31 32 34 0d  0a 0a 0d f1 20 22 57 41  |884,124..... "WA|
00001550  56 45 22 3b 0d 0a 14 0c  ec 20 38 34 36 2c 38 30  |VE";..... 846,80|
00001560  0d 0a 1e 0c f1 20 bd 28  39 33 29 3b 0d 0a 28 0f  |..... .(93);..(.|
00001570  ec 20 38 34 36 2b 31 36  2c 38 30 0d 0a 32 0c f1  |. 846+16,80..2..|
00001580  20 bd 28 39 35 29 3b 0d  0a 3c 12 ec 20 39 35 38  | .(95);..<.. 958|
00001590  2b 33 32 2d 32 32 2c 38  30 0d 0a 46 0c f1 20 bd  |+32-22,80..F.. .|
000015a0  28 39 34 29 3b 0d 0a 50  15 ec 20 39 35 38 2b 33  |(94);..P.. 958+3|
000015b0  32 2d 32 32 2d 31 36 2c  38 30 0d 0a 5a 0c f1 20  |2-22-16,80..Z.. |
000015c0  bd 28 39 35 29 3b 0d 0a  64 07 ef 20 34 0d 0a 6e  |.(95);..d.. 4..n|
000015d0  05 87 0d 0a 78 05 e1 0d  0a 82 05 3a 0d 0a 8c 19  |....x......:....|
000015e0  dd f2 73 68 6f 77 5f 69  6e 76 61 64 65 72 28 58  |..show_invader(X|
000015f0  25 2c 59 25 29 0d 0a 96  44 f2 70 6c 6f 74 5f 73  |%,Y%)...D.plot_s|
00001600  70 72 69 74 65 28 63 75  72 72 65 6e 74 5f 77 61  |prite(current_wa|
00001610  76 65 5f 69 25 28 58 25  2c 59 25 29 2c 28 58 25  |ve_i%(X%,Y%),(X%|
00001620  2d 31 29 2a 31 38 2a 34  2c 57 59 25 2b 28 38 2d  |-1)*18*4,WY%+(8-|
00001630  59 25 29 2a 31 37 2a 34  29 0d 0a a0 05 e1 0d 0a  |Y%)*17*4).......|
00001640  aa 05 3a 0d 0a b4 0e dd  f2 6e 6f 77 5f 77 68 61  |..:......now_wha|
00001650  74 0d 0a be 1e ea 20 65  78 69 74 25 2c 4d 58 25  |t..... exit%,MX%|
00001660  2c 4d 59 25 2c 4d 42 25  2c 76 61 6c 69 64 25 0d  |,MY%,MB%,valid%.|
00001670  0a c8 0b 65 78 69 74 25  3d a3 0d 0a d2 05 f5 0d  |...exit%=.......|
00001680  0a dc 07 ef 20 34 0d 0a  e6 21 f1 8a 30 2c 30 29  |.... 4...!..0,0)|
00001690  77 61 76 65 70 61 73 73  77 6f 72 64 24 2c 70 61  |wavepassword$,pa|
000016a0  73 73 77 6f 72 64 24 0d  0a f0 04 0d 0a fa 0f 20  |ssword$........ |
000016b0  20 20 76 61 6c 69 64 25  3d a3 0d 0b 04 0d 20 20  |  valid%=.....  |
000016c0  20 f2 6d 6f 75 73 65 0d  0b 0e 3a 20 20 20 e7 20  | .mouse...:   . |
000016d0  4d 59 25 3e 37 37 36 20  80 20 4d 58 25 3c 31 36  |MY%>776 . MX%<16|
000016e0  2a 34 2b 33 32 2b 31 36  2a 34 34 20 8c 20 f2 63  |*4+32+16*44 . .c|
000016f0  68 65 63 6b 5f 6d 65 6e  75 5f 6f 70 74 69 6f 6e  |heck_menu_option|
00001700  73 0d 0b 18 4c 20 20 20  e7 20 a4 69 73 5f 6d 6f  |s...L   . .is_mo|
00001710  75 73 65 5f 69 6e 5f 62  6f 78 28 4d 58 25 2c 4d  |use_in_box(MX%,M|
00001720  59 25 2c 30 2c 57 59 25  2c 38 2b 31 36 2a 31 38  |Y%,0,WY%,8+16*18|
00001730  2a 34 2c 31 36 2b 38 2a  31 36 2a 34 29 20 8c 20  |*4,16+8*16*4) . |
00001740  f2 69 6e 76 61 64 65 72  5f 67 72 69 64 0d 0b 22  |.invader_grid.."|
00001750  51 20 20 20 e7 20 a4 69  73 5f 6d 6f 75 73 65 5f  |Q   . .is_mouse_|
00001760  69 6e 5f 62 6f 78 28 4d  58 25 2c 4d 59 25 2c 30  |in_box(MX%,MY%,0|
00001770  2c 34 30 2c 73 70 72 69  74 65 5f 58 25 2a 36 2c  |,40,sprite_X%*6,|
00001780  73 70 72 69 74 65 5f 59  25 2a 32 29 20 8c 20 f2  |sprite_Y%*2) . .|
00001790  73 65 6c 65 63 74 5f 69  6e 76 61 64 65 72 0d 0b  |select_invader..|
000017a0  2c 40 20 20 20 e7 20 a4  69 73 5f 6d 6f 75 73 65  |,@   . .is_mouse|
000017b0  5f 69 6e 5f 62 6f 78 28  4d 58 25 2c 4d 59 25 2c  |_in_box(MX%,MY%,|
000017c0  38 34 30 2c 34 30 2c 31  35 30 2c 34 38 29 20 8c  |840,40,150,48) .|
000017d0  20 f2 67 65 74 5f 6e 65  77 5f 77 61 76 65 0d 0b  | .get_new_wave..|
000017e0  36 62 20 20 20 e7 20 a4  69 73 5f 6d 6f 75 73 65  |6b   . .is_mouse|
000017f0  5f 69 6e 5f 62 6f 78 28  4d 58 25 2c 4d 59 25 2c  |_in_box(MX%,MY%,|
00001800  38 2b 31 38 2a 31 36 2a  34 2c 57 59 25 2b 32 30  |8+18*16*4,WY%+20|
00001810  2c 31 32 37 38 2d 38 2d  31 38 2a 31 36 2a 34 2c  |,1278-8-18*16*4,|
00001820  73 70 72 69 74 65 5f 59  25 2a 33 29 20 8c 20 f2  |sprite_Y%*3) . .|
00001830  74 6f 67 67 6c 65 5f 62  6f 6d 62 5f 74 79 70 65  |toggle_bomb_type|
00001840  0d 0b 40 47 20 20 20 e7  20 a4 69 73 5f 6d 6f 75  |..@G   . .is_mou|
00001850  73 65 5f 69 6e 5f 62 6f  78 28 4d 58 25 2c 4d 59  |se_in_box(MX%,MY|
00001860  25 2c 31 31 36 32 2c 34  36 38 2c 31 31 34 2c 33  |%,1162,468,114,3|
00001870  36 2a 36 29 20 8c 20 f2  67 65 74 5f 77 61 76 65  |6*6) . .get_wave|
00001880  5f 68 65 69 67 68 74 0d  0b 4a 49 20 20 20 e7 20  |_height..JI   . |
00001890  a4 69 73 5f 6d 6f 75 73  65 5f 69 6e 5f 62 6f 78  |.is_mouse_in_box|
000018a0  28 4d 58 25 2c 4d 59 25  2c 31 31 36 32 2c 57 59  |(MX%,MY%,1162,WY|
000018b0  25 2d 35 36 2b 32 30 2c  31 31 34 2c 35 36 29 20  |%-56+20,114,56) |
000018c0  8c 20 f2 67 65 74 5f 6e  75 6d 5f 62 6f 6d 62 73  |. .get_num_bombs|
000018d0  0d 0b 54 44 20 20 20 e7  20 a4 69 73 5f 6d 6f 75  |..TD   . .is_mou|
000018e0  73 65 5f 69 6e 5f 62 6f  78 28 4d 58 25 2c 4d 59  |se_in_box(MX%,MY|
000018f0  25 2c 31 31 36 32 2c 34  30 2c 31 31 34 2c 35 32  |%,1162,40,114,52|
00001900  29 20 8c 20 f2 67 65 74  5f 6e 75 6d 5f 72 6f 63  |) . .get_num_roc|
00001910  6b 65 74 73 0d 0b 5e 41  20 20 20 e7 20 a4 69 73  |kets..^A   . .is|
00001920  5f 6d 6f 75 73 65 5f 69  6e 5f 62 6f 78 28 4d 58  |_mouse_in_box(MX|
00001930  25 2c 4d 59 25 2c 31 30  30 30 2c 34 30 2c 31 35  |%,MY%,1000,40,15|
00001940  30 2c 34 38 29 20 8c 20  f2 67 65 74 5f 69 6e 69  |0,48) . .get_ini|
00001950  74 5f 64 69 72 0d 0b 68  20 20 20 20 e7 20 ac 20  |t_dir..h    . . |
00001960  76 61 6c 69 64 25 20 8c  20 f2 77 72 6f 6e 67 5f  |valid% . .wrong_|
00001970  73 6f 75 6e 64 0d 0b 72  0b fd 20 65 78 69 74 25  |sound..r.. exit%|
00001980  0d 0b 7c 05 e1 0d 0b 86  05 3a 0d 0b 90 0b dd f2  |..|......:......|
00001990  6d 6f 75 73 65 0d 0b 9a  0b 2a 46 58 32 31 2c 39  |mouse....*FX21,9|
000019a0  0d 0b a4 05 f5 0d 0b ae  15 20 20 20 c8 97 20 4d  |.........   .. M|
000019b0  58 25 2c 4d 59 25 2c 4d  42 25 0d 0b b8 12 20 20  |X%,MY%,MB%....  |
000019c0  20 f2 64 65 6c 61 79 28  2e 31 35 29 0d 0b c2 0b  | .delay(.15)....|
000019d0  fd 20 4d 42 25 3e 30 0d  0b cc 05 e1 0d 0b d6 05  |. MB%>0.........|
000019e0  3a 0d 0b e0 14 dd f2 64  65 6c 61 79 28 73 65 63  |:......delay(sec|
000019f0  6f 6e 64 73 29 0d 0b ea  07 d1 3d 30 0d 0b f4 05  |onds).....=0....|
00001a00  f5 0d 0b fe 13 fd 20 91  3e 73 65 63 6f 6e 64 73  |...... .>seconds|
00001a10  2a 31 30 30 0d 0c 08 05  e1 0d 0c 12 05 3a 0d 0c  |*100.........:..|
00001a20  1c 11 dd f2 77 72 6f 6e  67 5f 73 6f 75 6e 64 0d  |....wrong_sound.|
00001a30  0c 26 08 ea 20 49 25 0d  0c 30 14 e3 20 49 25 3d  |.&.. I%..0.. I%=|
00001a40  31 31 20 b8 20 39 30 20  88 20 32 0d 0c 3a 13 20  |11 . 90 . 2..:. |
00001a50  20 20 d4 20 31 2c 2d 31  34 2c 49 25 2c 33 0d 0c  |  . 1,-14,I%,3..|
00001a60  44 16 20 20 20 d4 20 31  2c 2d 31 34 2c 49 25 2d  |D.   . 1,-14,I%-|
00001a70  31 30 2c 33 0d 0c 4e 08  ed 20 49 25 0d 0c 58 05  |10,3..N.. I%..X.|
00001a80  e1 0d 0c 62 05 3a 0d 0c  6c 12 dd f2 69 6e 76 61  |...b.:..l...inva|
00001a90  64 65 72 5f 67 72 69 64  0d 0c 76 23 ea 20 58 25  |der_grid..v#. X%|
00001aa0  2c 59 25 2c 6f 66 66 73  65 74 25 2c 69 6e 76 25  |,Y%,offset%,inv%|
00001ab0  2c 61 63 74 69 6f 6e 24  2c 41 25 0d 0c 80 16 58  |,action$,A%....X|
00001ac0  25 3d 31 2b a8 28 4d 58  25 2f 28 31 38 2a 34 29  |%=1+.(MX%/(18*4)|
00001ad0  29 0d 0c 8a 1f 59 25 3d  38 2d a8 28 28 4d 59 25  |)....Y%=8-.((MY%|
00001ae0  2d 57 59 25 29 2f 73 70  72 69 74 65 5f 59 25 29  |-WY%)/sprite_Y%)|
00001af0  0d 0c 94 11 e7 20 59 25  3c 31 20 8c 20 59 25 3d  |..... Y%<1 . Y%=|
00001b00  31 0d 0c 9e 11 e7 20 59  25 3e 38 20 8c 20 59 25  |1..... Y%>8 . Y%|
00001b10  3d 38 0d 0c a8 13 e7 20  58 25 3e 31 36 20 8c 20  |=8..... X%>16 . |
00001b20  58 25 3d 31 36 0d 0c b2  11 e7 20 58 25 3c 31 20  |X%=16..... X%<1 |
00001b30  8c 20 58 25 3d 31 0d 0c  bc 0f 61 63 74 69 6f 6e  |. X%=1....action|
00001b40  24 3d 22 20 22 0d 0c c6  0c c8 8e 20 4d 42 25 20  |$=" "...... MB% |
00001b50  ca 0d 0c d0 35 20 20 20  c9 20 34 3a 20 69 6e 76  |....5   . 4: inv|
00001b60  25 3d 63 75 72 72 65 6e  74 5f 69 6e 76 61 64 65  |%=current_invade|
00001b70  72 25 3a 20 61 63 74 69  6f 6e 24 3d 22 41 64 64  |r%: action$="Add|
00001b80  65 64 20 54 6f 22 0d 0c  da 28 20 20 20 c9 20 31  |ed To"...(   . 1|
00001b90  3a 20 69 6e 76 25 3d 30  3a 20 61 63 74 69 6f 6e  |: inv%=0: action|
00001ba0  24 3d 22 57 69 70 65 64  20 46 72 6f 6d 22 0d 0c  |$="Wiped From"..|
00001bb0  e4 12 20 20 20 7f 3a 20  f4 20 69 67 6e 6f 72 65  |..   .: . ignore|
00001bc0  0d 0c ee 05 cb 0d 0c f8  14 e7 20 61 63 74 69 6f  |.......... actio|
00001bd0  6e 24 3c 3e 22 20 22 20  8c 0d 0d 02 20 20 20 20  |n$<>" " ....    |
00001be0  e7 20 66 6c 6f 6f 64 78  25 3d a3 20 80 20 66 6c  |. floodx%=. . fl|
00001bf0  6f 6f 64 79 25 3d a3 20  8c 0d 0d 0c 2e 20 20 20  |oody%=. .....   |
00001c00  20 20 20 f2 6d 65 73 73  61 67 65 28 22 49 6e 76  |   .message("Inv|
00001c10  61 64 65 72 20 22 2b 61  63 74 69 6f 6e 24 2b 22  |ader "+action$+"|
00001c20  20 57 61 76 65 22 29 0d  0d 16 25 20 20 20 20 20  | Wave")...%     |
00001c30  20 63 75 72 72 65 6e 74  5f 77 61 76 65 5f 69 25  | current_wave_i%|
00001c40  28 58 25 2c 59 25 29 3d  69 6e 76 25 0d 0d 20 1e  |(X%,Y%)=inv%.. .|
00001c50  20 20 20 20 20 20 f2 73  68 6f 77 5f 69 6e 76 61  |      .show_inva|
00001c60  64 65 72 28 58 25 2c 59  25 29 0d 0d 2a 08 20 20  |der(X%,Y%)..*.  |
00001c70  20 cc 0d 0d 34 17 20 20  20 20 20 20 e7 20 66 6c  | ...4.      . fl|
00001c80  6f 6f 64 78 25 3d b9 20  8c 0d 0d 3e 35 20 20 20  |oodx%=. ...>5   |
00001c90  20 20 20 20 20 20 f2 6d  65 73 73 61 67 65 28 22  |      .message("|
00001ca0  49 6e 76 61 64 65 72 20  52 6f 77 20 22 2b 61 63  |Invader Row "+ac|
00001cb0  74 69 6f 6e 24 2b 22 20  57 61 76 65 22 29 0d 0d  |tion$+" Wave")..|
00001cc0  48 18 20 20 20 20 20 20  20 20 20 e3 20 41 25 3d  |H.         . A%=|
00001cd0  31 20 b8 20 31 36 0d 0d  52 2b 20 20 20 20 20 20  |1 . 16..R+      |
00001ce0  20 20 20 20 20 20 63 75  72 72 65 6e 74 5f 77 61  |      current_wa|
00001cf0  76 65 5f 69 25 28 41 25  2c 59 25 29 3d 69 6e 76  |ve_i%(A%,Y%)=inv|
00001d00  25 0d 0d 5c 24 20 20 20  20 20 20 20 20 20 20 20  |%..\$           |
00001d10  20 f2 73 68 6f 77 5f 69  6e 76 61 64 65 72 28 41  | .show_invader(A|
00001d20  25 2c 59 25 29 0d 0d 66  11 20 20 20 20 20 20 20  |%,Y%)..f.       |
00001d30  20 20 ed 20 41 25 0d 0d  70 0b 20 20 20 20 20 20  |  . A%..p.      |
00001d40  cc 0d 0d 7a 38 20 20 20  20 20 20 20 20 20 f2 6d  |...z8         .m|
00001d50  65 73 73 61 67 65 28 22  49 6e 76 61 64 65 72 20  |essage("Invader |
00001d60  43 6f 6c 75 6d 6e 20 22  2b 61 63 74 69 6f 6e 24  |Column "+action$|
00001d70  2b 22 20 57 61 76 65 22  29 0d 0d 84 17 20 20 20  |+" Wave")....   |
00001d80  20 20 20 20 20 20 e3 20  41 25 3d 31 20 b8 20 38  |      . A%=1 . 8|
00001d90  0d 0d 8e 2b 20 20 20 20  20 20 20 20 20 20 20 20  |...+            |
00001da0  63 75 72 72 65 6e 74 5f  77 61 76 65 5f 69 25 28  |current_wave_i%(|
00001db0  58 25 2c 41 25 29 3d 69  6e 76 25 0d 0d 98 24 20  |X%,A%)=inv%...$ |
00001dc0  20 20 20 20 20 20 20 20  20 20 20 f2 73 68 6f 77  |           .show|
00001dd0  5f 69 6e 76 61 64 65 72  28 58 25 2c 41 25 29 0d  |_invader(X%,A%).|
00001de0  0d a2 11 20 20 20 20 20  20 20 20 20 ed 20 41 25  |...         . A%|
00001df0  0d 0d ac 0b 20 20 20 20  20 20 cd 0d 0d b6 08 20  |....      ..... |
00001e00  20 20 cd 0d 0d c0 0d 20  20 20 f2 75 73 75 61 6c  |  .....   .usual|
00001e10  0d 0d ca 05 cd 0d 0d d4  05 e1 0d 0d de 05 3a 0d  |..............:.|
00001e20  0d e8 11 dd f2 73 68 69  66 74 5f 72 69 67 68 74  |.....shift_right|
00001e30  0d 0d f2 0b ea 20 49 25  2c 4a 25 0d 0d fc 0e e3  |..... I%,J%.....|
00001e40  20 4a 25 3d 31 20 b8 20  38 0d 0e 06 33 20 20 20  | J%=1 . 8...3   |
00001e50  63 75 72 72 65 6e 74 5f  77 61 76 65 5f 69 25 28  |current_wave_i%(|
00001e60  30 2c 4a 25 29 3d 63 75  72 72 65 6e 74 5f 77 61  |0,J%)=current_wa|
00001e70  76 65 5f 69 25 28 31 36  2c 4a 25 29 0d 0e 10 08  |ve_i%(16,J%)....|
00001e80  ed 20 4a 25 0d 0e 1a 15  e3 20 49 25 3d 31 35 20  |. J%..... I%=15 |
00001e90  b8 20 30 20 88 20 2d 20  31 0d 0e 24 11 20 20 20  |. 0 . - 1..$.   |
00001ea0  e3 20 4a 25 3d 31 20 b8  20 38 0d 0e 2e 39 20 20  |. J%=1 . 8...9  |
00001eb0  20 20 20 20 63 75 72 72  65 6e 74 5f 77 61 76 65  |    current_wave|
00001ec0  5f 69 25 28 49 25 2b 31  2c 4a 25 29 3d 63 75 72  |_i%(I%+1,J%)=cur|
00001ed0  72 65 6e 74 5f 77 61 76  65 5f 69 25 28 49 25 2c  |rent_wave_i%(I%,|
00001ee0  4a 25 29 0d 0e 38 0b 20  20 20 ed 20 4a 25 0d 0e  |J%)..8.   . J%..|
00001ef0  42 08 ed 20 49 25 0d 0e  4c 2a f2 6d 65 73 73 61  |B.. I%..L*.messa|
00001f00  67 65 28 22 49 6e 76 61  64 65 72 20 57 61 76 65  |ge("Invader Wave|
00001f10  20 53 68 69 66 74 65 64  20 52 69 67 68 74 22 29  | Shifted Right")|
00001f20  0d 0e 56 0e f2 72 65 64  69 73 70 6c 61 79 0d 0e  |..V..redisplay..|
00001f30  60 05 e1 0d 0e 6a 05 3a  0d 0e 74 10 dd f2 73 68  |`....j.:..t...sh|
00001f40  69 66 74 5f 6c 65 66 74  0d 0e 7e 0b ea 20 49 25  |ift_left..~.. I%|
00001f50  2c 4a 25 0d 0e 88 0f e3  20 49 25 3d 31 20 b8 20  |,J%..... I%=1 . |
00001f60  31 36 0d 0e 92 11 20 20  20 e3 20 4a 25 3d 31 20  |16....   . J%=1 |
00001f70  b8 20 38 0d 0e 9c 39 20  20 20 20 20 20 63 75 72  |. 8...9      cur|
00001f80  72 65 6e 74 5f 77 61 76  65 5f 69 25 28 49 25 2d  |rent_wave_i%(I%-|
00001f90  31 2c 4a 25 29 3d 63 75  72 72 65 6e 74 5f 77 61  |1,J%)=current_wa|
00001fa0  76 65 5f 69 25 28 49 25  2c 4a 25 29 0d 0e a6 0b  |ve_i%(I%,J%)....|
00001fb0  20 20 20 ed 20 4a 25 0d  0e b0 08 ed 20 49 25 0d  |   . J%..... I%.|
00001fc0  0e ba 0e e3 20 4a 25 3d  31 20 b8 20 38 0d 0e c4  |.... J%=1 . 8...|
00001fd0  33 20 20 20 63 75 72 72  65 6e 74 5f 77 61 76 65  |3   current_wave|
00001fe0  5f 69 25 28 31 36 2c 4a  25 29 3d 63 75 72 72 65  |_i%(16,J%)=curre|
00001ff0  6e 74 5f 77 61 76 65 5f  69 25 28 30 2c 4a 25 29  |nt_wave_i%(0,J%)|
00002000  0d 0e ce 08 ed 20 4a 25  0d 0e d8 29 f2 6d 65 73  |..... J%...).mes|
00002010  73 61 67 65 28 22 49 6e  76 61 64 65 72 20 57 61  |sage("Invader Wa|
00002020  76 65 20 53 68 69 66 74  65 64 20 4c 65 66 74 22  |ve Shifted Left"|
00002030  29 0d 0e e2 0e f2 72 65  64 69 73 70 6c 61 79 0d  |).....redisplay.|
00002040  0e ec 05 e1 0d 0e f6 05  3a 0d 0f 00 0f dd f2 72  |........:......r|
00002050  65 64 69 73 70 6c 61 79  0d 0f 0a 11 f2 64 69 73  |edisplay.....dis|
00002060  70 6c 61 79 5f 77 61 76  65 0d 0f 14 0a f2 75 73  |play_wave.....us|
00002070  75 61 6c 0d 0f 1e 05 e1  0d 0f 28 05 3a 0d 0f 32  |ual.......(.:..2|
00002080  0e dd f2 73 68 69 66 74  5f 75 70 0d 0f 3c 0b ea  |...shift_up..<..|
00002090  20 49 25 2c 4a 25 0d 0f  46 0e e3 20 49 25 3d 31  | I%,J%..F.. I%=1|
000020a0  20 b8 20 38 0d 0f 50 12  20 20 20 e3 20 4a 25 3d  | . 8..P.   . J%=|
000020b0  31 20 b8 20 31 36 0d 0f  5a 3a 20 20 20 20 20 20  |1 . 16..Z:      |
000020c0  20 63 75 72 72 65 6e 74  5f 77 61 76 65 5f 69 25  | current_wave_i%|
000020d0  28 4a 25 2c 49 25 2d 31  29 3d 63 75 72 72 65 6e  |(J%,I%-1)=curren|
000020e0  74 5f 77 61 76 65 5f 69  25 28 4a 25 2c 49 25 29  |t_wave_i%(J%,I%)|
000020f0  0d 0f 64 0b 20 20 20 ed  20 4a 25 0d 0f 6e 08 ed  |..d.   . J%..n..|
00002100  20 49 25 0d 0f 78 0f e3  20 4a 25 3d 31 20 b8 20  | I%..x.. J%=1 . |
00002110  31 36 0d 0f 82 32 20 20  20 63 75 72 72 65 6e 74  |16...2   current|
00002120  5f 77 61 76 65 5f 69 25  28 4a 25 2c 38 29 3d 63  |_wave_i%(J%,8)=c|
00002130  75 72 72 65 6e 74 5f 77  61 76 65 5f 69 25 28 4a  |urrent_wave_i%(J|
00002140  25 2c 30 29 0d 0f 8c 08  ed 20 4a 25 0d 0f 96 27  |%,0)..... J%...'|
00002150  f2 6d 65 73 73 61 67 65  28 22 49 6e 76 61 64 65  |.message("Invade|
00002160  72 20 57 61 76 65 20 53  68 69 66 74 65 64 20 55  |r Wave Shifted U|
00002170  70 22 29 0d 0f a0 0e f2  72 65 64 69 73 70 6c 61  |p").....redispla|
00002180  79 0d 0f aa 05 e1 0d 0f  b4 05 3a 0d 0f be 10 dd  |y.........:.....|
00002190  f2 73 68 69 66 74 5f 64  6f 77 6e 0d 0f c8 0b ea  |.shift_down.....|
000021a0  20 49 25 2c 4a 25 0d 0f  d2 0f e3 20 4a 25 3d 31  | I%,J%..... J%=1|
000021b0  20 b8 20 31 36 0d 0f dc  32 20 20 20 63 75 72 72  | . 16...2   curr|
000021c0  65 6e 74 5f 77 61 76 65  5f 69 25 28 4a 25 2c 30  |ent_wave_i%(J%,0|
000021d0  29 3d 63 75 72 72 65 6e  74 5f 77 61 76 65 5f 69  |)=current_wave_i|
000021e0  25 28 4a 25 2c 38 29 0d  0f e6 08 ed 20 4a 25 0d  |%(J%,8)..... J%.|
000021f0  0f f0 14 e3 20 49 25 3d  37 20 b8 20 30 20 88 20  |.... I%=7 . 0 . |
00002200  2d 20 31 0d 0f fa 12 20  20 20 e3 20 4a 25 3d 31  |- 1....   . J%=1|
00002210  20 b8 20 31 36 0d 10 04  39 20 20 20 20 20 20 63  | . 16...9      c|
00002220  75 72 72 65 6e 74 5f 77  61 76 65 5f 69 25 28 4a  |urrent_wave_i%(J|
00002230  25 2c 49 25 2b 31 29 3d  63 75 72 72 65 6e 74 5f  |%,I%+1)=current_|
00002240  77 61 76 65 5f 69 25 28  4a 25 2c 49 25 29 0d 10  |wave_i%(J%,I%)..|
00002250  0e 0b 20 20 20 ed 20 4a  25 0d 10 18 08 ed 20 49  |..   . J%..... I|
00002260  25 0d 10 22 29 f2 6d 65  73 73 61 67 65 28 22 49  |%..").message("I|
00002270  6e 76 61 64 65 72 20 57  61 76 65 20 53 68 69 66  |nvader Wave Shif|
00002280  74 65 64 20 44 6f 77 6e  22 29 0d 10 2c 0e f2 72  |ted Down")..,..r|
00002290  65 64 69 73 70 6c 61 79  0d 10 36 05 e1 0d 10 40  |edisplay..6....@|
000022a0  05 3a 0d 10 4a 0b dd f2  66 6c 69 70 79 0d 10 54  |.:..J...flipy..T|
000022b0  0b ea 20 49 25 2c 4a 25  0d 10 5e 0e e3 20 49 25  |.. I%,J%..^.. I%|
000022c0  3d 31 20 b8 20 34 0d 10  68 12 20 20 20 e3 20 4a  |=1 . 4..h.   . J|
000022d0  25 3d 31 20 b8 20 31 36  0d 10 72 3e 20 20 20 20  |%=1 . 16..r>    |
000022e0  20 20 c8 94 20 63 75 72  72 65 6e 74 5f 77 61 76  |  .. current_wav|
000022f0  65 5f 69 25 28 4a 25 2c  49 25 29 2c 63 75 72 72  |e_i%(J%,I%),curr|
00002300  65 6e 74 5f 77 61 76 65  5f 69 25 28 4a 25 2c 38  |ent_wave_i%(J%,8|
00002310  2d 49 25 2b 31 29 0d 10  7c 0b 20 20 20 ed 20 4a  |-I%+1)..|.   . J|
00002320  25 0d 10 86 08 ed 20 49  25 0d 10 90 26 f2 6d 65  |%..... I%...&.me|
00002330  73 73 61 67 65 28 22 49  6e 76 61 64 65 72 20 57  |ssage("Invader W|
00002340  61 76 65 20 59 20 46 6c  69 70 70 65 64 22 29 0d  |ave Y Flipped").|
00002350  10 9a 0e f2 72 65 64 69  73 70 6c 61 79 0d 10 a4  |....redisplay...|
00002360  05 e1 0d 10 ae 05 3a 0d  10 b8 0b dd f2 66 6c 69  |......:......fli|
00002370  70 78 0d 10 c2 0b ea 20  49 25 2c 4a 25 0d 10 cc  |px..... I%,J%...|
00002380  0e e3 20 49 25 3d 31 20  b8 20 38 0d 10 d6 11 20  |.. I%=1 . 8.... |
00002390  20 20 e3 20 4a 25 3d 31  20 b8 20 38 0d 10 e0 3f  |  . J%=1 . 8...?|
000023a0  20 20 20 20 20 20 c8 94  20 63 75 72 72 65 6e 74  |      .. current|
000023b0  5f 77 61 76 65 5f 69 25  28 49 25 2c 4a 25 29 2c  |_wave_i%(I%,J%),|
000023c0  63 75 72 72 65 6e 74 5f  77 61 76 65 5f 69 25 28  |current_wave_i%(|
000023d0  31 36 2d 49 25 2b 31 2c  4a 25 29 0d 10 ea 0b 20  |16-I%+1,J%).... |
000023e0  20 20 ed 20 4a 25 0d 10  f4 08 ed 20 49 25 0d 10  |  . J%..... I%..|
000023f0  fe 26 f2 6d 65 73 73 61  67 65 28 22 49 6e 76 61  |.&.message("Inva|
00002400  64 65 72 20 57 61 76 65  20 58 20 46 6c 69 70 70  |der Wave X Flipp|
00002410  65 64 22 29 0d 11 08 0e  f2 72 65 64 69 73 70 6c  |ed").....redispl|
00002420  61 79 0d 11 12 05 e1 0d  11 1c 05 3a 0d 11 26 0b  |ay.........:..&.|
00002430  dd f2 63 6c 65 61 72 0d  11 30 17 63 75 72 72 65  |..clear..0.curre|
00002440  6e 74 5f 77 61 76 65 5f  69 25 28 29 3d 30 0d 11  |nt_wave_i%()=0..|
00002450  3a 0e f2 72 65 64 69 73  70 6c 61 79 0d 11 44 28  |:..redisplay..D(|
00002460  f2 6d 65 73 73 61 67 65  28 22 49 6e 76 61 64 65  |.message("Invade|
00002470  72 20 57 61 76 65 20 4e  6f 77 20 43 6c 65 61 72  |r Wave Now Clear|
00002480  65 64 22 29 0d 11 4e 05  e1 0d 11 58 05 3a 0d 11  |ed")..N....X.:..|
00002490  62 0a dd f2 63 6f 70 79  0d 11 6c 24 ea 20 6f 66  |b...copy..l$. of|
000024a0  66 73 65 74 31 25 2c 6f  66 66 73 65 74 32 25 2c  |fset1%,offset2%,|
000024b0  49 25 2c 66 72 6f 6d 25  2c 74 6f 25 0d 11 76 17  |I%,from%,to%..v.|
000024c0  66 72 6f 6d 25 3d 63 75  72 72 65 6e 74 5f 77 61  |from%=current_wa|
000024d0  76 65 25 0d 11 80 15 f2  74 6f 5f 77 68 69 63 68  |ve%.....to_which|
000024e0  5f 77 61 76 65 5f 6e 6f  0d 11 8a 17 f2 77 61 76  |_wave_no.....wav|
000024f0  65 5f 6f 66 66 73 65 74  28 66 72 6f 6d 25 29 0d  |e_offset(from%).|
00002500  11 94 14 6f 66 66 73 65  74 31 25 3d 6f 66 66 73  |...offset1%=offs|
00002510  65 74 25 0d 11 9e 15 f2  77 61 76 65 5f 6f 66 66  |et%.....wave_off|
00002520  73 65 74 28 74 6f 25 29  0d 11 a8 14 6f 66 66 73  |set(to%)....offs|
00002530  65 74 32 25 3d 6f 66 66  73 65 74 25 0d 11 b2 14  |et2%=offset%....|
00002540  e3 20 49 25 3d 30 20 b8  20 31 34 33 20 88 20 34  |. I%=0 . 143 . 4|
00002550  0d 11 bc 3a 20 20 20 21  28 77 61 76 65 5f 64 61  |...:   !(wave_da|
00002560  74 61 25 2b 6f 66 66 73  65 74 32 25 2b 49 25 29  |ta%+offset2%+I%)|
00002570  3d 21 28 77 61 76 65 5f  64 61 74 61 25 2b 6f 66  |=!(wave_data%+of|
00002580  66 73 65 74 31 25 2b 49  25 29 0d 11 c6 08 ed 20  |fset1%+I%)..... |
00002590  49 25 0d 11 d0 0c 76 61  6c 69 64 25 3d b9 0d 11  |I%....valid%=...|
000025a0  da 23 f2 6d 65 73 73 61  67 65 28 22 49 6e 76 61  |.#.message("Inva|
000025b0  64 65 72 20 57 61 76 65  20 43 6f 70 69 65 64 22  |der Wave Copied"|
000025c0  29 0d 11 e4 05 e1 0d 11  ee 05 3a 0d 11 f8 0a dd  |).........:.....|
000025d0  f2 65 78 69 74 0d 12 02  0b 65 78 69 74 25 3d b9  |.exit....exit%=.|
000025e0  0d 12 0c 05 ee 0d 12 16  08 c8 97 20 87 0d 12 20  |........... ... |
000025f0  07 eb 20 39 0d 12 2a 05  db 0d 12 34 12 75 6e 68  |.. 9..*....4.unh|
00002600  69 67 68 6c 69 67 68 74  25 3d a3 0d 12 3e 0c 76  |ighlight%=...>.v|
00002610  61 6c 69 64 25 3d b9 0d  12 48 11 ff 28 22 66 78  |alid%=...H..("fx|
00002620  20 32 32 39 20 30 22 29  0d 12 52 05 e1 0d 12 5c  | 229 0")..R....\|
00002630  05 3a 0d 12 66 1c dd f2  73 70 72 69 74 65 5f 6c  |.:..f...sprite_l|
00002640  6f 61 64 28 66 69 6c 65  6e 61 6d 65 24 29 0d 12  |oad(filename$)..|
00002650  70 3f ea 20 66 69 6c 65  25 2c 6f 66 66 73 65 74  |p?. file%,offset|
00002660  25 2c 45 25 2c 46 25 2c  64 75 6d 6d 79 25 2c 54  |%,E%,F%,dummy%,T|
00002670  25 2c 62 79 74 65 25 2c  6c 6f 61 64 61 64 64 72  |%,byte%,loadaddr|
00002680  2c 66 69 6c 65 6c 65 6e  2c 42 25 28 29 0d 12 7a  |,filelen,B%()..z|
00002690  07 ea 20 85 0d 12 84 0b  de 20 42 25 28 33 29 0d  |.. ...... B%(3).|
000026a0  12 8e 0a 6e 75 6d 25 3d  30 0d 12 98 25 f4 4f 4e  |...num%=0...%.ON|
000026b0  20 45 52 52 4f 52 20 4c  4f 43 41 4c 20 50 52 4f  | ERROR LOCAL PRO|
000026c0  43 65 72 72 6f 72 3a 45  4e 44 50 52 4f 43 0d 12  |Cerror:ENDPROC..|
000026d0  a2 31 f2 6d 65 73 73 61  67 65 28 22 50 6c 65 61  |.1.message("Plea|
000026e0  73 65 20 57 61 69 74 2e  2e 2e 4c 6f 61 64 69 6e  |se Wait...Loadin|
000026f0  67 20 53 70 72 69 74 65  20 46 69 6c 65 22 29 0d  |g Sprite File").|
00002700  12 ac 25 f4 4f 4e 20 45  52 52 4f 52 20 4c 4f 43  |..%.ON ERROR LOC|
00002710  41 4c 20 50 52 4f 43 65  72 72 6f 72 3a 45 4e 44  |AL PROCerror:END|
00002720  50 52 4f 43 0d 12 b6 32  c8 99 20 22 4f 53 5f 46  |PROC...2.. "OS_F|
00002730  69 6c 65 22 2c 35 2c 66  69 6c 65 6e 61 6d 65 24  |ile",5,filename$|
00002740  20 b8 20 2c 2c 6c 6f 61  64 61 64 64 72 2c 2c 66  | . ,,loadaddr,,f|
00002750  69 6c 65 6c 65 6e 0d 12  c0 1c e7 20 28 6c 6f 61  |ilelen..... (loa|
00002760  64 61 64 64 72 3e 3e 3e  32 30 29 3d 26 46 46 46  |daddr>>>20)=&FFF|
00002770  20 8c 0d 12 ca 25 20 20  20 6c 6f 61 64 61 64 64  | ....%   loadadd|
00002780  72 3d 26 46 46 46 20 80  20 28 6c 6f 61 64 61 64  |r=&FFF . (loadad|
00002790  64 72 3e 3e 3e 38 29 0d  12 d4 05 cc 0d 12 de 14  |dr>>>8).........|
000027a0  20 20 20 6c 6f 61 64 61  64 64 72 20 3d 20 2d 31  |   loadaddr = -1|
000027b0  0d 12 e8 05 cd 0d 12 f2  15 e7 20 6c 6f 61 64 61  |.......... loada|
000027c0  64 64 72 3d 26 33 33 33  20 8c 0d 12 fc 18 20 20  |ddr=&333 .....  |
000027d0  20 6f 66 66 73 65 74 25  3d 6e 75 6d 25 2a 31 35  | offset%=num%*15|
000027e0  33 36 0d 13 06 11 20 20  20 e7 20 6e 75 6d 25 3e  |36....   . num%>|
000027f0  30 20 8c 0d 13 10 19 20  20 20 20 20 20 e3 20 41  |0 .....      . A|
00002800  25 3d 30 20 b8 20 34 37  20 88 20 34 0d 13 1a 36  |%=0 . 47 . 4...6|
00002810  20 20 20 20 20 20 20 20  20 21 28 70 61 6c 65 74  |         !(palet|
00002820  74 65 25 2b 41 25 29 3d  21 28 73 70 72 69 74 65  |te%+A%)=!(sprite|
00002830  5f 64 61 74 61 25 2b 6f  66 66 73 65 74 25 2b 41  |_data%+offset%+A|
00002840  25 29 0d 13 24 0e 20 20  20 20 20 20 ed 20 41 25  |%)..$.      . A%|
00002850  0d 13 2e 08 20 20 20 cd  0d 13 38 21 20 20 20 74  |....   ...8!   t|
00002860  65 6d 70 25 3d 73 70 72  69 74 65 5f 64 61 74 61  |emp%=sprite_data|
00002870  25 2b 6f 66 66 73 65 74  25 0d 13 42 28 20 20 20  |%+offset%..B(   |
00002880  f4 4f 4e 20 45 52 52 4f  52 20 4c 4f 43 41 4c 20  |.ON ERROR LOCAL |
00002890  50 52 4f 43 65 72 72 6f  72 3a 45 4e 44 50 52 4f  |PROCerror:ENDPRO|
000028a0  43 0d 13 4c 27 20 20 20  ff 28 22 4c 4f 41 44 20  |C..L'   .("LOAD |
000028b0  22 2b 66 69 6c 65 6e 61  6d 65 24 2b 22 20 22 2b  |"+filename$+" "+|
000028c0  c3 7e 74 65 6d 70 25 29  0d 13 56 11 20 20 20 e7  |.~temp%)..V.   .|
000028d0  20 6e 75 6d 25 3e 30 20  8c 0d 13 60 19 20 20 20  | num%>0 ...`.   |
000028e0  20 20 20 e3 20 41 25 3d  30 20 b8 20 34 37 20 88  |   . A%=0 . 47 .|
000028f0  20 34 0d 13 6a 36 20 20  20 20 20 20 20 20 20 21  | 4..j6         !|
00002900  28 73 70 72 69 74 65 5f  64 61 74 61 25 2b 6f 66  |(sprite_data%+of|
00002910  66 73 65 74 25 2b 41 25  29 3d 21 28 70 61 6c 65  |fset%+A%)=!(pale|
00002920  74 74 65 25 2b 41 25 29  0d 13 74 0e 20 20 20 20  |tte%+A%)..t.    |
00002930  20 20 ed 20 41 25 0d 13  7e 08 20 20 20 cc 0d 13  |  . A%..~.   ...|
00002940  88 15 20 20 20 20 20 20  e3 20 41 25 3d 30 20 b8  |..      . A%=0 .|
00002950  20 31 35 0d 13 92 17 20  20 20 20 20 20 20 20 20  | 15....         |
00002960  e3 20 43 25 3d 31 20 b8  20 33 0d 13 9c 30 20 20  |. C%=1 . 3...0  |
00002970  20 20 20 20 20 20 20 20  20 20 42 25 28 43 25 29  |          B%(C%)|
00002980  3d 3f 28 73 70 72 69 74  65 5f 64 61 74 61 25 2b  |=?(sprite_data%+|
00002990  41 25 2a 33 2b 43 25 2d  31 29 0d 13 a6 11 20 20  |A%*3+C%-1)....  |
000029a0  20 20 20 20 20 20 20 ed  20 43 25 0d 13 b0 23 20  |       . C%...# |
000029b0  20 20 20 20 20 20 20 20  fb 20 41 25 2c 42 25 28  |        . A%,B%(|
000029c0  31 29 2c 42 25 28 32 29  2c 42 25 28 33 29 0d 13  |1),B%(2),B%(3)..|
000029d0  ba 0e 20 20 20 20 20 20  ed 20 41 25 0d 13 c4 08  |..      . A%....|
000029e0  20 20 20 cd 0d 13 ce 15  20 20 20 f2 64 72 61 77  |   .....   .draw|
000029f0  5f 69 6e 76 61 64 65 72  73 0d 13 d8 42 20 20 20  |_invaders...B   |
00002a00  f2 70 6c 6f 74 5f 73 70  72 69 74 65 28 63 75 72  |.plot_sprite(cur|
00002a10  72 65 6e 74 5f 69 6e 76  61 64 65 72 25 2c 38 2b  |rent_invader%,8+|
00002a20  36 2a 73 70 72 69 74 65  5f 58 25 2c 34 30 2b 73  |6*sprite_X%,40+s|
00002a30  70 72 69 74 65 5f 59 25  2f 32 29 0d 13 e2 23 20  |prite_Y%/2)...# |
00002a40  20 20 6f 6c 64 73 70 72  69 74 65 66 69 6c 65 6e  |  oldspritefilen|
00002a50  61 6d 65 24 3d 66 69 6c  65 6e 61 6d 65 24 0d 13  |ame$=filename$..|
00002a60  ec 11 20 20 20 f2 69 6e  66 6f 5f 6c 69 6e 65 0d  |..   .info_line.|
00002a70  13 f6 25 20 20 20 f2 6d  65 73 73 61 67 65 28 22  |..%   .message("|
00002a80  53 70 72 69 74 65 20 46  69 6c 65 20 4c 6f 61 64  |Sprite File Load|
00002a90  65 64 22 29 0d 14 00 05  cc 0d 14 0a 36 20 20 20  |ed")........6   |
00002aa0  f2 6d 65 73 73 61 67 65  28 22 46 69 6c 65 20 53  |.message("File S|
00002ab0  70 65 63 69 66 69 65 64  20 49 73 20 4e 6f 74 20  |pecified Is Not |
00002ac0  41 20 53 70 72 69 74 65  20 46 69 6c 65 22 29 0d  |A Sprite File").|
00002ad0  14 14 05 cd 0d 14 1e 0c  76 61 6c 69 64 25 3d b9  |........valid%=.|
00002ae0  0d 14 28 05 e1 0d 14 32  05 3a 0d 14 3c 1a dd f2  |..(....2.:..<...|
00002af0  77 61 76 65 5f 6c 6f 61  64 28 66 69 6c 65 6e 61  |wave_load(filena|
00002b00  6d 65 24 29 0d 14 46 45  ea 20 66 69 6c 65 25 2c  |me$)..FE. file%,|
00002b10  6f 66 66 73 65 74 25 2c  45 25 2c 46 25 2c 64 75  |offset%,E%,F%,du|
00002b20  6d 6d 79 25 2c 54 25 2c  62 79 74 65 25 2c 6c 6f  |mmy%,T%,byte%,lo|
00002b30  61 64 61 64 64 72 2c 66  69 6c 65 6c 65 6e 2c 42  |adaddr,filelen,B|
00002b40  25 28 29 2c 74 65 6d 70  25 0d 14 50 07 ea 20 85  |%(),temp%..P.. .|
00002b50  0d 14 5a 0b de 20 42 25  28 33 29 0d 14 64 0a 6e  |..Z.. B%(3)..d.n|
00002b60  75 6d 25 3d 30 0d 14 6e  25 f4 4f 4e 20 45 52 52  |um%=0..n%.ON ERR|
00002b70  4f 52 20 4c 4f 43 41 4c  20 50 52 4f 43 65 72 72  |OR LOCAL PROCerr|
00002b80  6f 72 3a 45 4e 44 50 52  4f 43 0d 14 78 2f f2 6d  |or:ENDPROC..x/.m|
00002b90  65 73 73 61 67 65 28 22  50 6c 65 61 73 65 20 57  |essage("Please W|
00002ba0  61 69 74 2e 2e 2e 4c 6f  61 64 69 6e 67 20 57 61  |ait...Loading Wa|
00002bb0  76 65 20 46 69 6c 65 22  29 0d 14 82 25 f4 4f 4e  |ve File")...%.ON|
00002bc0  20 45 52 52 4f 52 20 4c  4f 43 41 4c 20 50 52 4f  | ERROR LOCAL PRO|
00002bd0  43 65 72 72 6f 72 3a 45  4e 44 50 52 4f 43 0d 14  |Cerror:ENDPROC..|
00002be0  8c 32 c8 99 20 22 4f 53  5f 46 69 6c 65 22 2c 35  |.2.. "OS_File",5|
00002bf0  2c 66 69 6c 65 6e 61 6d  65 24 20 b8 20 2c 2c 6c  |,filename$ . ,,l|
00002c00  6f 61 64 61 64 64 72 2c  2c 66 69 6c 65 6c 65 6e  |oadaddr,,filelen|
00002c10  0d 14 96 1c e7 20 28 6c  6f 61 64 61 64 64 72 3e  |..... (loadaddr>|
00002c20  3e 3e 32 30 29 3d 26 46  46 46 20 8c 0d 14 a0 25  |>>20)=&FFF ....%|
00002c30  20 20 20 6c 6f 61 64 61  64 64 72 3d 26 46 46 46  |   loadaddr=&FFF|
00002c40  20 80 20 28 6c 6f 61 64  61 64 64 72 3e 3e 3e 38  | . (loadaddr>>>8|
00002c50  29 0d 14 aa 05 cc 0d 14  b4 14 20 20 20 6c 6f 61  |).........   loa|
00002c60  64 61 64 64 72 20 3d 20  2d 31 0d 14 be 05 cd 0d  |daddr = -1......|
00002c70  14 c8 15 e7 20 6c 6f 61  64 61 64 64 72 3d 26 33  |.... loadaddr=&3|
00002c80  33 34 20 8c 0d 14 d2 17  20 20 20 6f 66 66 73 65  |34 .....   offse|
00002c90  74 25 3d 6e 75 6d 25 2a  31 34 34 0d 14 dc 11 20  |t%=num%*144.... |
00002ca0  20 20 e7 20 6e 75 6d 25  3e 30 20 8c 0d 14 e6 38  |  . num%>0 ....8|
00002cb0  20 20 20 20 20 20 f4 20  70 72 65 73 65 72 76 65  |      . preserve|
00002cc0  20 32 20 62 79 74 65 73  20 74 68 61 74 20 77 6f  | 2 bytes that wo|
00002cd0  75 6c 64 20 67 65 74 20  77 72 69 74 74 65 6e 20  |uld get written |
00002ce0  6f 76 65 72 0d 14 f0 08  20 20 20 cd 0d 14 fa 1f  |over....   .....|
00002cf0  20 20 20 74 65 6d 70 25  3d 77 61 76 65 5f 64 61  |   temp%=wave_da|
00002d00  74 61 25 2b 6f 66 66 73  65 74 25 0d 15 04 28 20  |ta%+offset%...( |
00002d10  20 20 f4 4f 4e 20 45 52  52 4f 52 20 4c 4f 43 41  |  .ON ERROR LOCA|
00002d20  4c 20 50 52 4f 43 65 72  72 6f 72 3a 45 4e 44 50  |L PROCerror:ENDP|
00002d30  52 4f 43 0d 15 0e 27 20  20 20 ff 28 22 4c 4f 41  |ROC...'   .("LOA|
00002d40  44 20 22 2b 66 69 6c 65  6e 61 6d 65 24 2b 22 20  |D "+filename$+" |
00002d50  22 2b c3 7e 74 65 6d 70  25 29 0d 15 18 11 20 20  |"+.~temp%)....  |
00002d60  20 e7 20 6e 75 6d 25 3e  30 20 8c 0d 15 22 2f 20  | . num%>0 ..."/ |
00002d70  20 20 20 20 20 f4 20 72  65 73 65 74 20 32 20 62  |     . reset 2 b|
00002d80  79 74 65 73 20 74 68 61  74 20 77 65 72 65 20 6f  |ytes that were o|
00002d90  76 65 72 77 72 69 74 74  65 6e 0d 15 2c 08 20 20  |verwritten..,.  |
00002da0  20 cd 0d 15 36 1d 20 20  20 6f 6c 64 66 69 6c 65  | ...6.   oldfile|
00002db0  6e 61 6d 65 24 3d 66 69  6c 65 6e 61 6d 65 24 0d  |name$=filename$.|
00002dc0  15 40 11 20 20 20 f2 69  6e 66 6f 5f 6c 69 6e 65  |.@.   .info_line|
00002dd0  0d 15 4a 23 20 20 20 f2  6d 65 73 73 61 67 65 28  |..J#   .message(|
00002de0  22 57 61 76 65 20 46 69  6c 65 20 4c 6f 61 64 65  |"Wave File Loade|
00002df0  64 22 29 0d 15 54 05 cc  0d 15 5e 34 20 20 20 f2  |d")..T....^4   .|
00002e00  6d 65 73 73 61 67 65 28  22 46 69 6c 65 20 53 70  |message("File Sp|
00002e10  65 63 69 66 69 65 64 20  49 73 20 4e 6f 74 20 41  |ecified Is Not A|
00002e20  20 57 61 76 65 20 46 69  6c 65 22 29 0d 15 68 05  | Wave File")..h.|
00002e30  cd 0d 15 72 22 64 65 66  69 6e 65 64 5f 77 61 76  |...r"defined_wav|
00002e40  65 73 25 3d 3f 28 77 61  76 65 5f 64 61 74 61 25  |es%=?(wave_data%|
00002e50  2b 31 29 0d 15 7c 1a 66  72 65 65 5f 65 64 69 74  |+1)..|.free_edit|
00002e60  25 3d 3f 77 61 76 65 5f  64 61 74 61 25 0d 15 86  |%=?wave_data%...|
00002e70  16 f2 73 68 6f 77 5f 63  75 72 72 65 6e 74 5f 77  |..show_current_w|
00002e80  61 76 65 0d 15 90 0f 6f  72 69 67 69 6e 61 6c 25  |ave....original%|
00002e90  3d b9 0d 15 9a 1a 6f 6c  64 66 69 6c 65 6e 61 6d  |=.....oldfilenam|
00002ea0  65 24 3d 66 69 6c 65 6e  61 6d 65 24 0d 15 a4 0e  |e$=filename$....|
00002eb0  f2 69 6e 66 6f 5f 6c 69  6e 65 0d 15 ae 0c 76 61  |.info_line....va|
00002ec0  6c 69 64 25 3d b9 0d 15  b8 05 e1 0d 15 c2 05 3a  |lid%=..........:|
00002ed0  0d 15 cc 1a dd f2 77 61  76 65 5f 73 61 76 65 28  |......wave_save(|
00002ee0  66 69 6c 65 6e 61 6d 65  24 29 0d 15 d6 26 ea 20  |filename$)...&. |
00002ef0  4c 25 2c 6f 66 66 73 65  74 25 2c 45 25 2c 66 69  |L%,offset%,E%,fi|
00002f00  6c 65 25 2c 4d 25 2c 41  25 2c 42 25 2c 74 6f 25  |le%,M%,A%,B%,to%|
00002f10  0d 15 e0 17 f2 73 74 6f  72 65 5f 63 75 72 72 65  |.....store_curre|
00002f20  6e 74 5f 77 61 76 65 0d  15 ea 15 f2 74 6f 5f 77  |nt_wave.....to_w|
00002f30  68 69 63 68 5f 77 61 76  65 5f 6e 6f 0d 15 f4 17  |hich_wave_no....|
00002f40  3f 28 77 61 76 65 5f 64  61 74 61 25 2b 31 29 3d  |?(wave_data%+1)=|
00002f50  74 6f 25 0d 15 fe 0c 6e  75 6d 25 3d 74 6f 25 0d  |to%....num%=to%.|
00002f60  16 08 25 f4 4f 4e 20 45  52 52 4f 52 20 4c 4f 43  |..%.ON ERROR LOC|
00002f70  41 4c 20 50 52 4f 43 65  72 72 6f 72 3a 45 4e 44  |AL PROCerror:END|
00002f80  50 52 4f 43 0d 16 12 2e  f2 6d 65 73 73 61 67 65  |PROC.....message|
00002f90  28 22 50 6c 65 61 73 65  20 57 61 69 74 2e 2e 2e  |("Please Wait...|
00002fa0  53 61 76 69 6e 67 20 57  61 76 65 20 46 69 6c 65  |Saving Wave File|
00002fb0  22 29 0d 16 1c 18 74 65  6d 70 25 3d 32 2b 28 6e  |")....temp%=2+(n|
00002fc0  75 6d 25 2b 31 29 2a 31  34 34 0d 16 26 25 f4 4f  |um%+1)*144..&%.O|
00002fd0  4e 20 45 52 52 4f 52 20  4c 4f 43 41 4c 20 50 52  |N ERROR LOCAL PR|
00002fe0  4f 43 65 72 72 6f 72 3a  45 4e 44 50 52 4f 43 0d  |OCerror:ENDPROC.|
00002ff0  16 30 35 ff 28 22 53 41  56 45 20 22 2b 66 69 6c  |.05.("SAVE "+fil|
00003000  65 6e 61 6d 65 24 2b 22  20 22 2b c3 7e 77 61 76  |ename$+" "+.~wav|
00003010  65 5f 64 61 74 61 25 2b  22 2b 22 2b c3 7e 74 65  |e_data%+"+"+.~te|
00003020  6d 70 25 29 0d 16 3a 22  ff 28 22 53 45 54 54 59  |mp%)..:".("SETTY|
00003030  50 45 20 22 2b 66 69 6c  65 6e 61 6d 65 24 2b 22  |PE "+filename$+"|
00003040  20 33 33 34 22 29 0d 16  44 0c 76 61 6c 69 64 25  | 334")..D.valid%|
00003050  3d b9 0d 16 4e 0f 6f 72  69 67 69 6e 61 6c 25 3d  |=...N.original%=|
00003060  b9 0d 16 58 22 64 65 66  69 6e 65 64 5f 77 61 76  |...X"defined_wav|
00003070  65 73 25 3d 3f 28 77 61  76 65 5f 64 61 74 61 25  |es%=?(wave_data%|
00003080  2b 31 29 0d 16 62 0e f2  69 6e 66 6f 5f 6c 69 6e  |+1)..b..info_lin|
00003090  65 0d 16 6c 1f f2 6d 65  73 73 61 67 65 28 22 57  |e..l..message("W|
000030a0  61 76 65 20 46 69 6c 65  20 53 61 76 65 64 22 29  |ave File Saved")|
000030b0  0d 16 76 05 e1 0d 16 80  05 3a 0d 16 8a 14 dd f2  |..v......:......|
000030c0  64 69 73 70 6c 61 79 5f  73 70 72 69 74 65 0d 16  |display_sprite..|
000030d0  94 0b ea 20 49 25 2c 4a  25 0d 16 9e 0f e3 20 49  |... I%,J%..... I|
000030e0  25 3d 31 20 b8 20 31 36  0d 16 a8 12 20 20 20 e3  |%=1 . 16....   .|
000030f0  20 4a 25 3d 31 20 b8 20  31 36 0d 16 b2 23 20 20  | J%=1 . 16...#  |
00003100  20 20 20 20 f2 64 69 73  70 6c 61 79 5f 70 6f 69  |    .display_poi|
00003110  6e 74 28 49 25 2d 31 2c  4a 25 2d 31 29 0d 16 bc  |nt(I%-1,J%-1)...|
00003120  0b 20 20 20 ed 20 4a 25  0d 16 c6 08 ed 20 49 25  |.   . J%..... I%|
00003130  0d 16 d0 05 e1 0d 16 da  05 3a 0d 16 e4 1a dd f2  |.........:......|
00003140  64 69 73 70 6c 61 79 5f  70 6f 69 6e 74 28 58 25  |display_point(X%|
00003150  2c 59 25 29 0d 16 ee 24  e6 20 30 2c 63 75 72 72  |,Y%)...$. 0,curr|
00003160  65 6e 74 5f 73 70 72 69  74 65 5f 63 25 28 58 25  |ent_sprite_c%(X%|
00003170  2b 31 2c 59 25 2b 31 29  0d 16 f8 0c 59 25 3d 31  |+1,Y%+1)....Y%=1|
00003180  35 2d 59 25 0d 17 02 33  c8 93 20 c8 90 20 53 58  |5-Y%...3.. .. SX|
00003190  25 2b 32 2b 58 25 2a 6d  61 67 25 2c 53 59 25 2b  |%+2+X%*mag%,SY%+|
000031a0  34 2b 59 25 2a 6d 61 67  25 2c 6d 61 67 25 2d 32  |4+Y%*mag%,mag%-2|
000031b0  2c 6d 61 67 25 2d 34 0d  17 0c 1c c8 92 20 41 58  |,mag%-4...... AX|
000031c0  25 2b 32 2b 58 25 2a 34  2c 41 59 25 2b 34 2b 59  |%+2+X%*4,AY%+4+Y|
000031d0  25 2a 34 0d 17 16 1c c8  92 20 41 58 25 2b 34 2b  |%*4...... AX%+4+|
000031e0  58 25 2a 34 2c 41 59 25  2b 34 2b 59 25 2a 34 0d  |X%*4,AY%+4+Y%*4.|
000031f0  17 20 05 e1 0d 17 2a 05  3a 0d 17 34 19 dd f2 73  |. ....*.:..4...s|
00003200  68 6f 77 5f 63 75 72 72  65 6e 74 5f 73 70 72 69  |how_current_spri|
00003210  74 65 0d 17 3e 14 f2 67  65 74 5f 73 70 72 69 74  |te..>..get_sprit|
00003220  65 5f 69 6e 66 6f 0d 17  48 13 f2 64 69 73 70 6c  |e_info..H..displ|
00003230  61 79 5f 73 70 72 69 74  65 0d 17 52 05 e1 0d 17  |ay_sprite..R....|
00003240  5c 05 3a 0d 17 66 15 dd  f2 67 65 74 5f 73 70 72  |\.:..f...get_spr|
00003250  69 74 65 5f 69 6e 66 6f  0d 17 70 13 ea 20 6f 66  |ite_info..p.. of|
00003260  66 73 65 74 25 2c 49 25  2c 4a 25 0d 17 7a 21 f2  |fset%,I%,J%..z!.|
00003270  63 61 6c 63 5f 6f 66 66  73 65 74 28 63 75 72 72  |calc_offset(curr|
00003280  65 6e 74 5f 73 70 72 69  74 65 25 29 0d 17 84 0f  |ent_sprite%)....|
00003290  e3 20 4a 25 3d 31 20 b8  20 31 36 0d 17 8e 12 20  |. J%=1 . 16.... |
000032a0  20 20 e3 20 49 25 3d 31  20 b8 20 31 36 0d 17 98  |  . I%=1 . 16...|
000032b0  33 20 20 20 20 20 20 20  63 75 72 72 65 6e 74 5f  |3       current_|
000032c0  73 70 72 69 74 65 5f 63  25 28 49 25 2c 4a 25 29  |sprite_c%(I%,J%)|
000032d0  3d a4 67 65 74 5f 63 6f  6c 28 49 25 2c 4a 25 29  |=.get_col(I%,J%)|
000032e0  0d 17 a2 0b 20 20 20 ed  20 49 25 0d 17 ac 08 ed  |....   . I%.....|
000032f0  20 4a 25 0d 17 b6 05 e1  0d 17 c0 05 3a 0d 17 ca  | J%.........:...|
00003300  16 dd f2 74 6f 5f 77 68  69 63 68 5f 77 61 76 65  |...to_which_wave|
00003310  5f 6e 6f 0d 17 d4 0b ea  20 74 68 72 75 25 0d 17  |_no..... thru%..|
00003320  de 0b 74 68 72 75 25 3d  a3 0d 17 e8 0c fb 20 77  |..thru%=...... w|
00003330  68 69 74 65 25 0d 17 f2  05 f5 0d 17 fc 1f 20 20  |hite%.........  |
00003340  20 e7 20 74 68 72 75 25  3d b9 20 8c 20 f2 77 72  | . thru%=. . .wr|
00003350  6f 6e 67 5f 73 6f 75 6e  64 0d 18 06 14 20 20 20  |ong_sound....   |
00003360  f2 63 6c 65 61 72 6d 65  73 73 61 67 65 0d 18 10  |.clearmessage...|
00003370  24 20 20 20 f1 20 8a 31  2c 38 29 3b 22 54 6f 20  |$   . .1,8);"To |
00003380  57 68 69 63 68 20 57 61  76 65 20 3d 3d 3e 20 22  |Which Wave ==> "|
00003390  3b 0d 18 1a 0c 20 20 20  e8 20 74 6f 25 0d 18 24  |;....   . to%..$|
000033a0  0e 20 20 20 74 68 72 75  25 3d b9 0d 18 2e 21 fd  |.   thru%=....!.|
000033b0  20 74 6f 25 3e 3d 31 20  80 20 74 6f 25 3c 3d 6d  | to%>=1 . to%<=m|
000033c0  61 78 5f 6e 6f 5f 77 61  76 65 73 25 0d 18 38 05  |ax_no_waves%..8.|
000033d0  e1 0d 18 42 05 3a 0d 18  4c 12 dd f2 67 65 74 5f  |...B.:..L...get_|
000033e0  66 69 6c 65 6e 61 6d 65  0d 18 56 0b ea 20 74 68  |filename..V.. th|
000033f0  72 75 25 0d 18 60 0b 74  68 72 75 25 3d a3 0d 18  |ru%..`.thru%=...|
00003400  6a 0c fb 20 77 68 69 74  65 25 0d 18 74 05 f5 0d  |j.. white%..t...|
00003410  18 7e 1f 20 20 20 e7 20  74 68 72 75 25 3d b9 20  |.~.   . thru%=. |
00003420  8c 20 f2 77 72 6f 6e 67  5f 73 6f 75 6e 64 0d 18  |. .wrong_sound..|
00003430  88 14 20 20 20 f2 63 6c  65 61 72 6d 65 73 73 61  |..   .clearmessa|
00003440  67 65 0d 18 92 1b 20 20  20 f1 20 8a 31 2c 38 29  |ge....   . .1,8)|
00003450  3b 22 46 69 6c 65 6e 61  6d 65 3d 22 3b 0d 18 9c  |;"Filename=";...|
00003460  12 20 20 20 e8 20 66 69  6c 65 6e 61 6d 65 24 0d  |.   . filename$.|
00003470  18 a6 0e 20 20 20 74 68  72 75 25 3d b9 0d 18 b0  |...   thru%=....|
00003480  26 fd 20 a9 28 66 69 6c  65 6e 61 6d 65 24 29 3e  |&. .(filename$)>|
00003490  30 20 80 20 a9 28 66 69  6c 65 6e 61 6d 65 24 29  |0 . .(filename$)|
000034a0  3c 31 31 0d 18 ba 05 e1  0d 18 c4 05 3a 0d 18 ce  |<11.........:...|
000034b0  19 dd f2 63 61 6c 63 5f  6f 66 66 73 65 74 28 76  |...calc_offset(v|
000034c0  61 6c 75 65 25 29 0d 18  d8 19 6f 66 66 73 65 74  |alue%)....offset|
000034d0  25 3d 34 38 2b 76 61 6c  75 65 25 2a 33 38 34 0d  |%=48+value%*384.|
000034e0  18 e2 05 e1 0d 18 ec 05  3a 0d 18 f6 19 dd f2 77  |........:......w|
000034f0  61 76 65 5f 6f 66 66 73  65 74 28 76 61 6c 75 65  |ave_offset(value|
00003500  25 29 0d 19 00 1c 6f 66  66 73 65 74 25 3d 32 2b  |%)....offset%=2+|
00003510  28 76 61 6c 75 65 25 2d  31 29 2a 31 34 34 0d 19  |(value%-1)*144..|
00003520  0a 05 e1 0d 19 14 05 3a  0d 19 1e 12 dd f2 63 6c  |.......:......cl|
00003530  65 61 72 6d 65 73 73 61  67 65 0d 19 28 08 ea 20  |earmessage..(.. |
00003540  4c 25 0d 19 32 0e 4c 25  3d 34 2b 31 38 2a 34 34  |L%..2.L%=4+18*44|
00003550  0d 19 3c 10 e6 20 30 2c  6d 61 67 65 6e 74 61 25  |..<.. 0,magenta%|
00003560  0d 19 46 15 c8 93 20 c8  90 20 30 2c 37 33 38 2c  |..F... .. 0,738,|
00003570  4c 25 2c 33 36 0d 19 50  12 fb 20 31 32 38 2b 6d  |L%,36..P.. 128+m|
00003580  61 67 65 6e 74 61 25 0d  19 5a 05 e1 0d 19 64 05  |agenta%..Z....d.|
00003590  3a 0d 19 6e 11 dd f2 6d  65 73 73 61 67 65 28 4d  |:..n...message(M|
000035a0  24 29 0d 19 78 08 ea 20  4c 25 0d 19 82 0e 4c 25  |$)..x.. L%....L%|
000035b0  3d 34 2b 31 38 2a 34 34  0d 19 8c 12 e6 20 30 2c  |=4+18*44..... 0,|
000035c0  64 61 72 6b 5f 62 6c 75  65 25 0d 19 96 15 c8 93  |dark_blue%......|
000035d0  20 c8 90 20 30 2c 37 33  38 2c 4c 25 2c 33 36 0d  | .. 0,738,L%,36.|
000035e0  19 a0 0e e6 20 30 2c 77  68 69 74 65 25 0d 19 aa  |.... 0,white%...|
000035f0  07 ef 20 35 0d 19 b4 19  ec 20 28 4c 25 2d a9 28  |.. 5..... (L%-.(|
00003600  4d 24 29 2a 31 36 29 2f  32 2c 37 36 36 0d 19 be  |M$)*16)/2,766...|
00003610  09 f1 20 4d 24 3b 0d 19  c8 07 ef 20 34 0d 19 d2  |.. M$;..... 4...|
00003620  05 87 0d 19 dc 05 e1 0d  19 e6 05 3a 0d 19 f0 0f  |...........:....|
00003630  dd f2 69 6e 66 6f 5f 6c  69 6e 65 0d 19 fa 12 ea  |..info_line.....|
00003640  20 53 31 24 2c 53 32 24  2c 53 55 42 25 0d 1a 04  | S1$,S2$,SUB%...|
00003650  14 53 31 24 3d 6f 6c 64  66 69 6c 65 6e 61 6d 65  |.S1$=oldfilename|
00003660  24 0d 1a 0e 1a 53 32 24  3d 6f 6c 64 73 70 72 69  |$....S2$=oldspri|
00003670  74 65 66 69 6c 65 6e 61  6d 65 24 0d 1a 18 26 fb  |tefilename$...&.|
00003680  20 31 32 38 2b 64 61 72  6b 5f 62 6c 75 65 25 3a  | 128+dark_blue%:|
00003690  f4 20 62 61 63 6b 67 72  6f 75 6e 64 20 62 6c 75  |. background blu|
000036a0  65 0d 1a 22 0c fb 20 77  68 69 74 65 25 0d 1a 2c  |e..".. white%..,|
000036b0  05 87 0d 1a 36 16 f1 20  8a 31 2c 33 31 29 3b c4  |....6.. .1,31);.|
000036c0  37 38 2c 22 20 22 29 3b  0d 1a 40 1b 53 55 42 25  |78," ");..@.SUB%|
000036d0  3d a7 6f 6c 64 66 69 6c  65 6e 61 6d 65 24 2c 22  |=.oldfilename$,"|
000036e0  2e 22 29 0d 1a 4a 0d c8  95 20 53 55 42 25 3e 30  |.")..J... SUB%>0|
000036f0  0d 1a 54 3e 20 20 20 6f  6c 64 66 69 6c 65 6e 61  |..T>   oldfilena|
00003700  6d 65 24 3d c1 6f 6c 64  66 69 6c 65 6e 61 6d 65  |me$=.oldfilename|
00003710  24 2c 53 55 42 25 2b 31  2c a9 28 6f 6c 64 66 69  |$,SUB%+1,.(oldfi|
00003720  6c 65 6e 61 6d 65 24 29  2d 53 55 42 25 29 0d 1a  |lename$)-SUB%)..|
00003730  5e 1e 20 20 20 53 55 42  25 3d a7 6f 6c 64 66 69  |^.   SUB%=.oldfi|
00003740  6c 65 6e 61 6d 65 24 2c  22 2e 22 29 0d 1a 68 05  |lename$,".")..h.|
00003750  ce 0d 1a 72 2c f1 20 8a  31 2c 33 31 29 3b 22 46  |...r,. .1,31);"F|
00003760  69 6c 65 3a 20 22 22 22  3b 6f 6c 64 66 69 6c 65  |ile: """;oldfile|
00003770  6e 61 6d 65 24 3b 22 22  22 20 28 22 3b 0d 1a 7c  |name$;""" (";..||
00003780  11 e7 20 6f 72 69 67 69  6e 61 6c 25 20 8c 0d 1a  |.. original% ...|
00003790  86 14 20 20 20 f1 20 22  4f 72 69 67 69 6e 61 6c  |..   . "Original|
000037a0  22 3b 0d 1a 90 05 cc 0d  1a 9a 14 20 20 20 f1 20  |";.........   . |
000037b0  22 4d 6f 64 69 66 69 65  64 22 3b 0d 1a a4 05 cd  |"Modified";.....|
000037c0  0d 1a ae 34 f1 20 22 29  22 3b 8a 33 33 2c 33 31  |...4. ")";.33,31|
000037d0  29 3b 22 43 75 72 72 65  6e 74 20 57 61 76 65 3a  |);"Current Wave:|
000037e0  20 22 3b c3 28 63 75 72  72 65 6e 74 5f 77 61 76  | ";.(current_wav|
000037f0  65 25 29 3b 0d 1a b8 21  53 55 42 25 3d a7 6f 6c  |e%);...!SUB%=.ol|
00003800  64 73 70 72 69 74 65 66  69 6c 65 6e 61 6d 65 24  |dspritefilename$|
00003810  2c 22 2e 22 29 0d 1a c2  0d c8 95 20 53 55 42 25  |,".")...... SUB%|
00003820  3e 30 0d 1a cc 50 20 20  20 6f 6c 64 73 70 72 69  |>0...P   oldspri|
00003830  74 65 66 69 6c 65 6e 61  6d 65 24 3d c1 6f 6c 64  |tefilename$=.old|
00003840  73 70 72 69 74 65 66 69  6c 65 6e 61 6d 65 24 2c  |spritefilename$,|
00003850  53 55 42 25 2b 31 2c a9  28 6f 6c 64 73 70 72 69  |SUB%+1,.(oldspri|
00003860  74 65 66 69 6c 65 6e 61  6d 65 24 29 2d 53 55 42  |tefilename$)-SUB|
00003870  25 29 0d 1a d6 24 20 20  20 53 55 42 25 3d a7 6f  |%)...$   SUB%=.o|
00003880  6c 64 73 70 72 69 74 65  66 69 6c 65 6e 61 6d 65  |ldspritefilename|
00003890  24 2c 22 2e 22 29 0d 1a  e0 05 ce 0d 1a ea 38 f1  |$,".")........8.|
000038a0  20 8a 35 34 2c 33 31 29  3b 22 53 70 72 69 74 65  | .54,31);"Sprite|
000038b0  20 46 69 6c 65 3a 20 22  22 22 3b 6f 6c 64 73 70  | File: """;oldsp|
000038c0  72 69 74 65 66 69 6c 65  6e 61 6d 65 24 3b 22 22  |ritefilename$;""|
000038d0  22 22 3b 0d 1a f4 14 6f  6c 64 66 69 6c 65 6e 61  |"";....oldfilena|
000038e0  6d 65 24 3d 53 31 24 0d  1a fe 1a 6f 6c 64 73 70  |me$=S1$....oldsp|
000038f0  72 69 74 65 66 69 6c 65  6e 61 6d 65 24 3d 53 32  |ritefilename$=S2|
00003900  24 0d 1b 08 05 e1 0d 1b  12 05 3a 0d 1b 1c 2e dd  |$.........:.....|
00003910  a4 69 73 5f 6d 6f 75 73  65 5f 69 6e 5f 62 6f 78  |.is_mouse_in_box|
00003920  28 4d 58 25 2c 4d 59 25  2c 58 31 25 2c 59 31 25  |(MX%,MY%,X1%,Y1%|
00003930  2c 58 44 25 2c 59 44 25  29 0d 1b 26 32 3d 4d 58  |,XD%,YD%)..&2=MX|
00003940  25 3e 58 31 25 20 80 20  4d 58 25 3c 58 31 25 2b  |%>X1% . MX%<X1%+|
00003950  58 44 25 20 80 20 4d 59  25 3e 59 31 25 20 80 20  |XD% . MY%>Y1% . |
00003960  4d 59 25 3c 59 31 25 2b  59 44 25 0d 1b 30 05 3a  |MY%<Y1%+YD%..0.:|
00003970  0d 1b 3a 1e dd f2 73 68  6f 77 5f 6d 65 6e 75 28  |..:...show_menu(|
00003980  4e 25 2c 68 69 67 68 6c  69 67 68 74 25 29 0d 1b  |N%,highlight%)..|
00003990  44 0b ea 20 41 25 2c 4c  25 0d 1b 4e 0e e6 20 30  |D.. A%,L%..N.. 0|
000039a0  2c 62 6c 61 63 6b 25 0d  1b 58 17 c8 93 20 c8 90  |,black%..X... ..|
000039b0  20 30 2c 38 30 30 2c 38  30 30 2c 32 31 36 0d 1b  | 0,800,800,216..|
000039c0  62 09 4c 25 3d 32 32 0d  1b 6c 0c fb 20 77 68 69  |b.L%=22..l.. whi|
000039d0  74 65 25 0d 1b 76 0e e6  20 30 2c 77 68 69 74 65  |te%..v.. 0,white|
000039e0  25 0d 1b 80 0e fb 20 31  32 38 2b 72 65 64 25 0d  |%..... 128+red%.|
000039f0  1b 8a 15 f1 20 8a 30 2c  30 29 3b c4 32 32 2c 22  |.... .0,0);.22,"|
00003a00  20 22 29 3b 0d 1b 94 07  ef 20 35 0d 1b 9e 20 ec  | ");..... 5... .|
00003a10  20 28 4c 25 2d a9 28 6d  65 6e 75 24 28 4e 25 2c  | (L%-.(menu$(N%,|
00003a20  31 29 29 29 2a 38 2c 31  30 32 33 0d 1b a8 12 f1  |1)))*8,1023.....|
00003a30  20 6d 65 6e 75 24 28 4e  25 2c 31 29 3b 0d 1b b2  | menu$(N%,1);...|
00003a40  07 ef 20 34 0d 1b bc 05  87 0d 1b c6 1d e3 20 41  |.. 4.......... A|
00003a50  25 3d 32 20 b8 20 6d 65  6e 75 5f 6c 65 6e 67 74  |%=2 . menu_lengt|
00003a60  68 25 28 4e 25 29 0d 1b  d0 18 20 20 20 e7 20 68  |h%(N%)....   . h|
00003a70  69 67 68 6c 69 67 68 74  25 3d 41 25 20 8c 0d 1b  |ighlight%=A% ...|
00003a80  da 18 20 20 20 20 20 20  fb 20 31 32 38 2b 6d 61  |..      . 128+ma|
00003a90  67 65 6e 74 61 25 0d 1b  e4 08 20 20 20 cc 0d 1b  |genta%....   ...|
00003aa0  ee 1a 20 20 20 20 20 20  fb 20 31 32 38 2b 64 61  |..      . 128+da|
00003ab0  72 6b 5f 62 6c 75 65 25  0d 1b f8 08 20 20 20 cd  |rk_blue%....   .|
00003ac0  0d 1c 02 1c 20 20 20 f1  20 8a 4c 25 2c 41 25 2d  |....   . .L%,A%-|
00003ad0  32 29 3b c4 32 38 2c 22  20 22 29 3b 0d 1c 0c 0a  |2);.28," ");....|
00003ae0  20 20 20 ef 20 35 0d 1c  16 34 20 20 20 ec 20 32  |   . 5...4   . 2|
00003af0  32 2a 31 36 2b 28 32 37  2d a9 28 6d 65 6e 75 24  |2*16+(27-.(menu$|
00003b00  28 4e 25 2c 41 25 29 29  29 2a 38 2c 31 30 32 33  |(N%,A%)))*8,1023|
00003b10  2d 28 41 25 2d 32 29 2a  33 32 0d 1c 20 16 20 20  |-(A%-2)*32.. .  |
00003b20  20 f1 20 6d 65 6e 75 24  28 4e 25 2c 41 25 29 3b  | . menu$(N%,A%);|
00003b30  0d 1c 2a 0a 20 20 20 ef  20 34 0d 1c 34 08 20 20  |..*.   . 4..4.  |
00003b40  20 87 0d 1c 3e 08 ed 20  41 25 0d 1c 48 05 e1 0d  | ...>.. A%..H...|
00003b50  1c 52 05 3a 0d 1c 5c 14  dd f2 73 65 6c 65 63 74  |.R.:..\...select|
00003b60  5f 69 6e 76 61 64 65 72  0d 1c 66 0f ea 20 53 53  |_invader..f.. SS|
00003b70  58 25 2c 53 53 59 25 0d  1c 70 1b 53 53 58 25 3d  |X%,SSY%..p.SSX%=|
00003b80  a8 28 4d 58 25 2f 73 70  72 69 74 65 5f 58 25 29  |.(MX%/sprite_X%)|
00003b90  2b 31 0d 1c 7a 1e 53 53  59 25 3d a8 28 28 4d 59  |+1..z.SSY%=.((MY|
00003ba0  25 2d 34 30 29 2f 73 70  72 69 74 65 5f 59 25 29  |%-40)/sprite_Y%)|
00003bb0  0d 1c 84 21 6f 6c 64 5f  69 6e 76 61 64 65 72 25  |...!old_invader%|
00003bc0  3d 63 75 72 72 65 6e 74  5f 69 6e 76 61 64 65 72  |=current_invader|
00003bd0  25 0d 1c 8e 20 63 75 72  72 65 6e 74 5f 69 6e 76  |%... current_inv|
00003be0  61 64 65 72 25 3d 53 53  58 25 2b 53 53 59 25 2a  |ader%=SSX%+SSY%*|
00003bf0  36 0d 1c 98 3f f2 70 6c  6f 74 5f 73 70 72 69 74  |6...?.plot_sprit|
00003c00  65 28 63 75 72 72 65 6e  74 5f 69 6e 76 61 64 65  |e(current_invade|
00003c10  72 25 2c 38 2b 36 2a 73  70 72 69 74 65 5f 58 25  |r%,8+6*sprite_X%|
00003c20  2c 34 30 2b 73 70 72 69  74 65 5f 59 25 2f 32 29  |,40+sprite_Y%/2)|
00003c30  0d 1c a2 32 e7 20 73 77  61 70 25 20 8c 20 f2 64  |...2. swap% . .d|
00003c40  6f 5f 73 77 61 70 28 6f  6c 64 5f 69 6e 76 61 64  |o_swap(old_invad|
00003c50  65 72 25 29 3a f2 64 69  73 70 6c 61 79 5f 77 61  |er%):.display_wa|
00003c60  76 65 0d 1c ac 0c 76 61  6c 69 64 25 3d b9 0d 1c  |ve....valid%=...|
00003c70  b6 0e f2 69 6e 66 6f 5f  6c 69 6e 65 0d 1c c0 05  |...info_line....|
00003c80  e1 0d 1c ca 05 3a 0d 1c  d4 0b dd f2 75 73 75 61  |.....:......usua|
00003c90  6c 0d 1c de 0c 76 61 6c  69 64 25 3d b9 0d 1c e8  |l....valid%=....|
00003ca0  0f 6f 72 69 67 69 6e 61  6c 25 3d a3 0d 1c f2 0e  |.original%=.....|
00003cb0  f2 69 6e 66 6f 5f 6c 69  6e 65 0d 1c fc 05 e1 0d  |.info_line......|
00003cc0  1d 06 05 3a 0d 1d 10 18  dd f2 63 68 65 63 6b 5f  |...:......check_|
00003cd0  6d 65 6e 75 5f 6f 70 74  69 6f 6e 73 0d 1d 1a 16  |menu_options....|
00003ce0  ea 20 65 78 70 65 63 74  65 64 5f 6f 70 74 69 6f  |. expected_optio|
00003cf0  6e 25 0d 1d 24 11 e7 20  4d 58 25 3c 32 32 2a 31  |n%..$.. MX%<22*1|
00003d00  36 20 8c 0d 1d 2e 23 20  20 20 f4 20 63 68 65 63  |6 ....#   . chec|
00003d10  6b 20 67 6f 20 62 61 63  6b 20 74 6f 20 6c 61 73  |k go back to las|
00003d20  74 20 6d 65 6e 75 0d 1d  38 16 20 20 20 e7 20 4d  |t menu..8.   . M|
00003d30  59 25 3e 31 30 32 33 2d  33 32 20 8c 0d 1d 42 33  |Y%>1023-32 ...B3|
00003d40  20 20 20 20 20 20 63 75  72 72 65 6e 74 5f 6d 65  |      current_me|
00003d50  6e 75 25 3d 6d 65 6e 75  5f 6f 72 69 67 69 6e 25  |nu%=menu_origin%|
00003d60  28 63 75 72 72 65 6e 74  5f 6d 65 6e 75 25 29 0d  |(current_menu%).|
00003d70  1d 4c 1d 20 20 20 20 20  20 e7 20 63 75 72 72 65  |.L.      . curre|
00003d80  6e 74 5f 6d 65 6e 75 25  3d 30 20 8c 0d 1d 56 4b  |nt_menu%=0 ...VK|
00003d90  20 20 20 20 20 20 20 20  20 f2 6d 65 73 73 61 67  |         .messag|
00003da0  65 28 22 49 6e 76 61 64  65 72 20 57 61 76 65 20  |e("Invader Wave |
00003db0  45 64 69 74 6f 72 20 42  79 20 41 64 72 69 61 6e  |Editor By Adrian|
00003dc0  20 53 2e 57 2e 4e 65 6c  73 6f 6e 20 56 65 72 73  | S.W.Nelson Vers|
00003dd0  69 6f 6e 20 31 22 29 0d  1d 60 1c 20 20 20 20 20  |ion 1")..`.     |
00003de0  20 20 20 20 63 75 72 72  65 6e 74 5f 6d 65 6e 75  |    current_menu|
00003df0  25 3d 31 0d 1d 6a 0b 20  20 20 20 20 20 cc 0d 1d  |%=1..j.      ...|
00003e00  74 28 20 20 20 20 20 20  20 20 20 f2 73 68 6f 77  |t(         .show|
00003e10  5f 6d 65 6e 75 28 63 75  72 72 65 6e 74 5f 6d 65  |_menu(current_me|
00003e20  6e 75 25 2c 30 29 0d 1d  7e 0b 20 20 20 20 20 20  |nu%,0)..~.      |
00003e30  cd 0d 1d 88 13 20 20 20  20 20 20 66 6c 6f 6f 64  |.....      flood|
00003e40  78 25 3d a3 0d 1d 92 13  20 20 20 20 20 20 66 6c  |x%=.....      fl|
00003e50  6f 6f 64 79 25 3d a3 0d  1d 9c 12 20 20 20 20 20  |oody%=.....     |
00003e60  20 76 61 6c 69 64 25 3d  b9 0d 1d a6 18 20 20 20  | valid%=.....   |
00003e70  20 20 20 75 6e 68 69 67  68 6c 69 67 68 74 25 3d  |   unhighlight%=|
00003e80  b9 0d 1d b0 08 20 20 20  cd 0d 1d ba 05 cc 0d 1d  |.....   ........|
00003e90  c4 18 20 20 20 f4 20 67  65 74 20 6d 65 6e 75 20  |..   . get menu |
00003ea0  6f 70 74 69 6f 6e 0d 1d  ce 27 20 20 20 65 78 70  |option...'   exp|
00003eb0  65 63 74 65 64 5f 6f 70  74 69 6f 6e 25 3d 31 2b  |ected_option%=1+|
00003ec0  28 31 30 32 33 2d 4d 59  25 29 2f 33 32 0d 1d d8  |(1023-MY%)/32...|
00003ed0  3a 20 20 20 e7 20 65 78  70 65 63 74 65 64 5f 6f  |:   . expected_o|
00003ee0  70 74 69 6f 6e 25 3c 3d  6d 65 6e 75 5f 6c 65 6e  |ption%<=menu_len|
00003ef0  67 74 68 25 28 63 75 72  72 65 6e 74 5f 6d 65 6e  |gth%(current_men|
00003f00  75 25 29 2d 31 20 8c 0d  1d e2 12 20 20 20 20 20  |u%)-1 .....     |
00003f10  20 76 61 6c 69 64 25 3d  b9 0d 1d ec 1c 20 20 20  | valid%=.....   |
00003f20  20 20 20 c8 8e 20 63 75  72 72 65 6e 74 5f 6d 65  |   .. current_me|
00003f30  6e 75 25 20 ca 0d 1d f6  28 20 20 20 20 20 20 20  |nu% ....(       |
00003f40  20 20 c9 20 31 3a 20 e7  20 65 78 70 65 63 74 65  |  . 1: . expecte|
00003f50  64 5f 6f 70 74 69 6f 6e  25 3d 35 20 8c 0d 1e 00  |d_option%=5 ....|
00003f60  1d 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |.               |
00003f70  20 20 20 20 20 f2 65 78  69 74 0d 1e 0a 16 20 20  |     .exit....  |
00003f80  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 cc  |               .|
00003f90  0d 1e 14 38 20 20 20 20  20 20 20 20 20 20 20 20  |...8            |
00003fa0  20 20 20 20 20 20 20 20  63 75 72 72 65 6e 74 5f  |        current_|
00003fb0  6d 65 6e 75 25 3d 65 78  70 65 63 74 65 64 5f 6f  |menu%=expected_o|
00003fc0  70 74 69 6f 6e 25 2b 31  0d 1e 1e 33 20 20 20 20  |ption%+1...3    |
00003fd0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00003fe0  f2 73 68 6f 77 5f 6d 65  6e 75 28 63 75 72 72 65  |.show_menu(curre|
00003ff0  6e 74 5f 6d 65 6e 75 25  2c 30 29 0d 1e 28 16 20  |nt_menu%,0)..(. |
00004000  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00004010  cd 0d 1e 32 27 20 20 20  20 20 20 20 20 20 c9 20  |...2'         . |
00004020  32 3a 20 c8 8e 20 65 78  70 65 63 74 65 64 5f 6f  |2: .. expected_o|
00004030  70 74 69 6f 6e 25 20 ca  0d 1e 3c 4a 20 20 20 20  |ption% ...<J    |
00004040  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00004050  20 c9 20 31 3a 20 f2 73  68 6f 77 5f 6d 65 6e 75  | . 1: .show_menu|
00004060  28 63 75 72 72 65 6e 74  5f 6d 65 6e 75 25 2c 65  |(current_menu%,e|
00004070  78 70 65 63 74 65 64 5f  6f 70 74 69 6f 6e 25 2b  |xpected_option%+|
00004080  31 29 0d 1e 46 27 20 20  20 20 20 20 20 20 20 20  |1)..F'          |
00004090  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000040a0  20 20 20 f2 63 6c 65 61  72 0d 1e 50 4a 20 20 20  |   .clear..PJ   |
000040b0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000040c0  20 20 c9 20 36 3a 20 f2  73 68 6f 77 5f 6d 65 6e  |  . 6: .show_men|
000040d0  75 28 63 75 72 72 65 6e  74 5f 6d 65 6e 75 25 2c  |u(current_menu%,|
000040e0  65 78 70 65 63 74 65 64  5f 6f 70 74 69 6f 6e 25  |expected_option%|
000040f0  2b 31 29 0d 1e 5a 26 20  20 20 20 20 20 20 20 20  |+1)..Z&         |
00004100  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00004110  20 20 20 20 f2 73 77 61  70 0d 1e 64 4a 20 20 20  |    .swap..dJ   |
00004120  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00004130  20 20 c9 20 37 3a 20 f2  73 68 6f 77 5f 6d 65 6e  |  . 7: .show_men|
00004140  75 28 63 75 72 72 65 6e  74 5f 6d 65 6e 75 25 2c  |u(current_menu%,|
00004150  65 78 70 65 63 74 65 64  5f 6f 70 74 69 6f 6e 25  |expected_option%|
00004160  2b 31 29 0d 1e 6e 2a 20  20 20 20 20 20 20 20 20  |+1)..n*         |
00004170  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00004180  20 20 20 20 f2 75 6e 64  6f 5f 61 6c 6c 0d 1e 78  |    .undo_all..x|
00004190  3c 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |<               |
000041a0  20 20 20 20 20 20 7f 3a  20 63 75 72 72 65 6e 74  |      .: current|
000041b0  5f 6d 65 6e 75 25 3d 65  78 70 65 63 74 65 64 5f  |_menu%=expected_|
000041c0  6f 70 74 69 6f 6e 25 2b  34 0d 1e 82 16 20 20 20  |option%+4....   |
000041d0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 cb 0d  |              ..|
000041e0  1e 8c 3e 20 20 20 20 20  20 20 20 20 c9 20 33 3a  |..>         . 3:|
000041f0  20 f2 73 68 6f 77 5f 6d  65 6e 75 28 63 75 72 72  | .show_menu(curr|
00004200  65 6e 74 5f 6d 65 6e 75  25 2c 65 78 70 65 63 74  |ent_menu%,expect|
00004210  65 64 5f 6f 70 74 69 6f  6e 25 2b 31 29 0d 1e 96  |ed_option%+1)...|
00004220  6a 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |j               |
00004230  20 20 ee 20 65 78 70 65  63 74 65 64 5f 6f 70 74  |  . expected_opt|
00004240  69 6f 6e 25 20 f2 62 6f  6d 62 5f 74 79 70 65 73  |ion% .bomb_types|
00004250  2c f2 6d 61 78 5f 62 6f  6d 62 73 2c f2 6d 61 78  |,.max_bombs,.max|
00004260  5f 72 6f 63 6b 65 74 73  2c f2 69 6e 69 74 69 61  |_rockets,.initia|
00004270  6c 5f 64 69 72 2c f2 68  65 69 67 68 74 2c f2 70  |l_dir,.height,.p|
00004280  61 73 73 77 6f 72 64 0d  1e a0 3e 20 20 20 20 20  |assword...>     |
00004290  20 20 20 20 c9 20 34 3a  20 f2 73 68 6f 77 5f 6d  |    . 4: .show_m|
000042a0  65 6e 75 28 63 75 72 72  65 6e 74 5f 6d 65 6e 75  |enu(current_menu|
000042b0  25 2c 65 78 70 65 63 74  65 64 5f 6f 70 74 69 6f  |%,expected_optio|
000042c0  6e 25 2b 31 29 0d 1e aa  4a 20 20 20 20 20 20 20  |n%+1)...J       |
000042d0  20 20 20 20 20 20 20 20  20 20 ee 20 65 78 70 65  |          . expe|
000042e0  63 74 65 64 5f 6f 70 74  69 6f 6e 25 20 f2 6c 6f  |cted_option% .lo|
000042f0  61 64 5f 73 70 72 69 74  65 2c f2 6c 6f 61 64 5f  |ad_sprite,.load_|
00004300  66 69 6c 65 2c f2 73 61  76 65 5f 66 69 6c 65 0d  |file,.save_file.|
00004310  1e b4 3e 20 20 20 20 20  20 20 20 20 c9 20 35 3a  |..>         . 5:|
00004320  20 f2 73 68 6f 77 5f 6d  65 6e 75 28 63 75 72 72  | .show_menu(curr|
00004330  65 6e 74 5f 6d 65 6e 75  25 2c 65 78 70 65 63 74  |ent_menu%,expect|
00004340  65 64 5f 6f 70 74 69 6f  6e 25 2b 31 29 0d 1e be  |ed_option%+1)...|
00004350  80 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |.               |
00004360  20 20 ee 20 65 78 70 65  63 74 65 64 5f 6f 70 74  |  . expected_opt|
00004370  69 6f 6e 25 20 f2 63 6f  70 79 5f 74 6f 5f 6e 75  |ion% .copy_to_nu|
00004380  6d 62 65 72 2c f2 74 6f  5f 6e 75 6d 62 65 72 2c  |mber,.to_number,|
00004390  f2 73 65 74 5f 72 6e 64  5f 73 65 65 64 2c f2 72  |.set_rnd_seed,.r|
000043a0  6e 64 5f 77 61 76 65 2c  f2 72 6e 64 5f 78 5f 77  |nd_wave,.rnd_x_w|
000043b0  61 76 65 2c f2 72 6e 64  5f 79 5f 77 61 76 65 2c  |ave,.rnd_y_wave,|
000043c0  f2 72 6e 64 5f 78 5f 79  5f 77 61 76 65 0d 1e c8  |.rnd_x_y_wave...|
000043d0  3e 20 20 20 20 20 20 20  20 20 c9 20 36 3a 20 f2  |>         . 6: .|
000043e0  73 68 6f 77 5f 6d 65 6e  75 28 63 75 72 72 65 6e  |show_menu(curren|
000043f0  74 5f 6d 65 6e 75 25 2c  65 78 70 65 63 74 65 64  |t_menu%,expected|
00004400  5f 6f 70 74 69 6f 6e 25  2b 31 29 0d 1e d2 35 20  |_option%+1)...5 |
00004410  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00004420  ee 20 65 78 70 65 63 74  65 64 5f 6f 70 74 69 6f  |. expected_optio|
00004430  6e 25 20 f2 66 6c 69 70  78 2c f2 66 6c 69 70 79  |n% .flipx,.flipy|
00004440  0d 1e dc 3e 20 20 20 20  20 20 20 20 20 c9 20 37  |...>         . 7|
00004450  3a 20 f2 73 68 6f 77 5f  6d 65 6e 75 28 63 75 72  |: .show_menu(cur|
00004460  72 65 6e 74 5f 6d 65 6e  75 25 2c 65 78 70 65 63  |rent_menu%,expec|
00004470  74 65 64 5f 6f 70 74 69  6f 6e 25 2b 31 29 0d 1e  |ted_option%+1)..|
00004480  e6 37 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |.7              |
00004490  20 20 20 ee 20 65 78 70  65 63 74 65 64 5f 6f 70  |   . expected_op|
000044a0  74 69 6f 6e 25 20 f2 66  6c 6f 6f 64 78 2c f2 66  |tion% .floodx,.f|
000044b0  6c 6f 6f 64 79 0d 1e f0  3e 20 20 20 20 20 20 20  |loody...>       |
000044c0  20 20 c9 20 38 3a 20 f2  73 68 6f 77 5f 6d 65 6e  |  . 8: .show_men|
000044d0  75 28 63 75 72 72 65 6e  74 5f 6d 65 6e 75 25 2c  |u(current_menu%,|
000044e0  65 78 70 65 63 74 65 64  5f 6f 70 74 69 6f 6e 25  |expected_option%|
000044f0  2b 31 29 0d 1e fa 3e 20  20 20 20 20 20 20 20 20  |+1)...>         |
00004500  20 20 20 20 20 20 20 20  ee 20 65 78 70 65 63 74  |        . expect|
00004510  65 64 5f 6f 70 74 69 6f  6e 25 20 f2 72 65 66 5f  |ed_option% .ref_|
00004520  78 2c f2 72 65 66 5f 79  2c f2 72 65 66 5f 78 5f  |x,.ref_y,.ref_x_|
00004530  79 0d 1f 04 3e 20 20 20  20 20 20 20 20 20 c9 20  |y...>         . |
00004540  39 3a 20 f2 73 68 6f 77  5f 6d 65 6e 75 28 63 75  |9: .show_menu(cu|
00004550  72 72 65 6e 74 5f 6d 65  6e 75 25 2c 65 78 70 65  |rrent_menu%,expe|
00004560  63 74 65 64 5f 6f 70 74  69 6f 6e 25 2b 31 29 0d  |cted_option%+1).|
00004570  1f 0e 56 20 20 20 20 20  20 20 20 20 20 20 20 20  |..V             |
00004580  20 20 20 20 ee 20 65 78  70 65 63 74 65 64 5f 6f  |    . expected_o|
00004590  70 74 69 6f 6e 25 20 f2  73 68 69 66 74 5f 6c 65  |ption% .shift_le|
000045a0  66 74 2c f2 73 68 69 66  74 5f 72 69 67 68 74 2c  |ft,.shift_right,|
000045b0  f2 73 68 69 66 74 5f 75  70 2c f2 73 68 69 66 74  |.shift_up,.shift|
000045c0  5f 64 6f 77 6e 0d 1f 18  0b 20 20 20 20 20 20 cb  |_down....      .|
000045d0  0d 1f 22 36 20 20 20 20  20 20 e7 20 75 6e 68 69  |.."6      . unhi|
000045e0  67 68 6c 69 67 68 74 25  20 8c 20 f2 73 68 6f 77  |ghlight% . .show|
000045f0  5f 6d 65 6e 75 28 63 75  72 72 65 6e 74 5f 6d 65  |_menu(current_me|
00004600  6e 75 25 2c 30 29 0d 1f  2c 08 20 20 20 cd 0d 1f  |nu%,0)..,.   ...|
00004610  36 05 cd 0d 1f 40 05 e1  0d 1f 4a 05 3a 0d 1f 54  |6....@....J.:..T|
00004620  0a dd f2 73 77 61 70 0d  1f 5e 3b f2 6d 65 73 73  |...swap..^;.mess|
00004630  61 67 65 28 22 43 68 61  6e 67 65 20 49 6e 76 61  |age("Change Inva|
00004640  64 65 72 20 49 6e 20 57  61 76 65 20 57 69 74 68  |der In Wave With|
00004650  20 4e 65 78 74 20 43 68  6f 73 65 6e 20 4f 6e 65  | Next Chosen One|
00004660  22 29 0d 1f 68 0b 73 77  61 70 25 3d b9 0d 1f 72  |")..h.swap%=...r|
00004670  0c 76 61 6c 69 64 25 3d  b9 0d 1f 7c 05 e1 0d 1f  |.valid%=...|....|
00004680  86 05 3a 0d 1f 90 1a dd  f2 64 6f 5f 73 77 61 70  |..:......do_swap|
00004690  28 6f 6c 64 69 6e 76 61  64 65 72 25 29 0d 1f 9a  |(oldinvader%)...|
000046a0  0b ea 20 58 25 2c 59 25  0d 1f a4 0f e3 20 58 25  |.. X%,Y%..... X%|
000046b0  3d 31 20 b8 20 31 36 0d  1f ae 11 20 20 20 e3 20  |=1 . 16....   . |
000046c0  59 25 3d 31 20 b8 20 38  0d 1f b8 58 20 20 20 20  |Y%=1 . 8...X    |
000046d0  20 20 e7 20 63 75 72 72  65 6e 74 5f 77 61 76 65  |  . current_wave|
000046e0  5f 69 25 28 58 25 2c 59  25 29 3d 6f 6c 64 69 6e  |_i%(X%,Y%)=oldin|
000046f0  76 61 64 65 72 25 20 8c  20 63 75 72 72 65 6e 74  |vader% . current|
00004700  5f 77 61 76 65 5f 69 25  28 58 25 2c 59 25 29 3d  |_wave_i%(X%,Y%)=|
00004710  63 75 72 72 65 6e 74 5f  69 6e 76 61 64 65 72 25  |current_invader%|
00004720  0d 1f c2 0b 20 20 20 ed  20 59 25 0d 1f cc 08 ed  |....   . Y%.....|
00004730  20 58 25 0d 1f d6 0e f2  72 65 64 69 73 70 6c 61  | X%.....redispla|
00004740  79 0d 1f e0 3c f2 6d 65  73 73 61 67 65 28 22 4e  |y...<.message("N|
00004750  65 77 20 49 6e 76 61 64  65 72 20 43 68 61 6e 67  |ew Invader Chang|
00004760  65 64 20 57 69 74 68 20  4f 6c 64 20 49 6e 76 61  |ed With Old Inva|
00004770  64 65 72 20 49 6e 20 57  61 76 65 22 29 0d 1f ea  |der In Wave")...|
00004780  0b 73 77 61 70 25 3d a3  0d 1f f4 05 e1 0d 1f fe  |.swap%=.........|
00004790  05 3a 0d 20 08 0c dd f2  66 6c 6f 6f 64 78 0d 20  |.:. ....floodx. |
000047a0  12 0d 66 6c 6f 6f 64 78  25 3d b9 0d 20 1c 0d 66  |..floodx%=.. ..f|
000047b0  6c 6f 6f 64 79 25 3d a3  0d 20 26 0c 76 61 6c 69  |loody%=.. &.vali|
000047c0  64 25 3d b9 0d 20 30 12  75 6e 68 69 67 68 6c 69  |d%=.. 0.unhighli|
000047d0  67 68 74 25 3d a3 0d 20  3a 05 e1 0d 20 44 05 3a  |ght%=.. :... D.:|
000047e0  0d 20 4e 0c dd f2 66 6c  6f 6f 64 79 0d 20 58 0d  |. N...floody. X.|
000047f0  66 6c 6f 6f 64 79 25 3d  b9 0d 20 62 0d 66 6c 6f  |floody%=.. b.flo|
00004800  6f 64 78 25 3d a3 0d 20  6c 0c 76 61 6c 69 64 25  |odx%=.. l.valid%|
00004810  3d b9 0d 20 76 12 75 6e  68 69 67 68 6c 69 67 68  |=.. v.unhighligh|
00004820  74 25 3d a3 0d 20 80 05  e1 0d 20 8a 05 3a 0d 20  |t%=.. .... ..:. |
00004830  94 0f dd f2 74 6f 5f 6e  75 6d 62 65 72 0d 20 9e  |....to_number. .|
00004840  0e ea 20 74 6f 5f 77 61  76 65 25 0d 20 a8 15 f2  |.. to_wave%. ...|
00004850  74 6f 5f 77 68 69 63 68  5f 77 61 76 65 5f 6e 6f  |to_which_wave_no|
00004860  0d 20 b2 17 f2 73 74 6f  72 65 5f 63 75 72 72 65  |. ...store_curre|
00004870  6e 74 5f 77 61 76 65 0d  20 bc 13 f2 73 68 6f 77  |nt_wave. ...show|
00004880  5f 68 65 69 67 68 74 28  30 29 0d 20 c6 15 63 75  |_height(0). ..cu|
00004890  72 72 65 6e 74 5f 77 61  76 65 25 3d 74 6f 25 0d  |rrent_wave%=to%.|
000048a0  20 d0 14 f2 75 70 64 61  74 65 5f 77 61 76 65 5f  | ...update_wave_|
000048b0  62 6f 78 0d 20 da 16 f2  73 68 6f 77 5f 63 75 72  |box. ...show_cur|
000048c0  72 65 6e 74 5f 77 61 76  65 0d 20 e4 0c 76 61 6c  |rent_wave. ..val|
000048d0  69 64 25 3d b9 0d 20 ee  2f f2 6d 65 73 73 61 67  |id%=.. ./.messag|
000048e0  65 28 22 4e 6f 77 20 41  74 20 54 68 65 20 52 65  |e("Now At The Re|
000048f0  71 75 69 72 65 64 20 57  61 76 65 20 4e 75 6d 62  |quired Wave Numb|
00004900  65 72 22 29 0d 20 f8 0e  f2 69 6e 66 6f 5f 6c 69  |er"). ...info_li|
00004910  6e 65 0d 21 02 05 e1 0d  21 0c 05 3a 0d 21 16 0f  |ne.!....!..:.!..|
00004920  dd f2 6c 6f 61 64 5f 66  69 6c 65 0d 21 20 11 f2  |..load_file.! ..|
00004930  67 65 74 5f 66 69 6c 65  6e 61 6d 65 0d 21 2a 2f  |get_filename.!*/|
00004940  66 69 6c 65 6e 61 6d 65  24 3d 22 3c 49 6e 76 61  |filename$="<Inva|
00004950  73 69 6f 6e 24 44 69 72  3e 2e 57 41 56 45 53 2e  |sion$Dir>.WAVES.|
00004960  22 2b 66 69 6c 65 6e 61  6d 65 24 0d 21 34 19 f2  |"+filename$.!4..|
00004970  77 61 76 65 5f 6c 6f 61  64 28 66 69 6c 65 6e 61  |wave_load(filena|
00004980  6d 65 24 29 0d 21 3e 05  e1 0d 21 48 05 3a 0d 21  |me$).!>...!H.:.!|
00004990  52 0f dd f2 73 61 76 65  5f 66 69 6c 65 0d 21 5c  |R...save_file.!\|
000049a0  11 f2 67 65 74 5f 66 69  6c 65 6e 61 6d 65 0d 21  |..get_filename.!|
000049b0  66 18 f2 74 6f 5f 6c 6f  77 65 72 28 66 69 6c 65  |f..to_lower(file|
000049c0  6e 61 6d 65 24 29 0d 21  70 2f 66 69 6c 65 6e 61  |name$).!p/filena|
000049d0  6d 65 24 3d 22 3c 49 6e  76 61 73 69 6f 6e 24 44  |me$="<Invasion$D|
000049e0  69 72 3e 2e 57 41 56 45  53 2e 22 2b 66 69 6c 65  |ir>.WAVES."+file|
000049f0  6e 61 6d 65 24 0d 21 7a  19 f2 77 61 76 65 5f 73  |name$.!z..wave_s|
00004a00  61 76 65 28 66 69 6c 65  6e 61 6d 65 24 29 0d 21  |ave(filename$).!|
00004a10  84 05 e1 0d 21 8e 05 3a  0d 21 98 11 dd f2 6c 6f  |....!..:.!....lo|
00004a20  61 64 5f 73 70 72 69 74  65 0d 21 a2 11 f2 67 65  |ad_sprite.!...ge|
00004a30  74 5f 66 69 6c 65 6e 61  6d 65 0d 21 ac 31 66 69  |t_filename.!.1fi|
00004a40  6c 65 6e 61 6d 65 24 3d  22 3c 49 6e 76 61 73 69  |lename$="<Invasi|
00004a50  6f 6e 24 44 69 72 3e 2e  53 50 52 49 54 45 53 2e  |on$Dir>.SPRITES.|
00004a60  22 2b 66 69 6c 65 6e 61  6d 65 24 0d 21 b6 1b f2  |"+filename$.!...|
00004a70  73 70 72 69 74 65 5f 6c  6f 61 64 28 66 69 6c 65  |sprite_load(file|
00004a80  6e 61 6d 65 24 29 0d 21  c0 05 e1 0d 21 ca 05 3a  |name$).!....!..:|
00004a90  0d 21 d4 0e dd f2 75 6e  64 6f 5f 61 6c 6c 0d 21  |.!....undo_all.!|
00004aa0  de 16 f2 73 68 6f 77 5f  63 75 72 72 65 6e 74 5f  |...show_current_|
00004ab0  77 61 76 65 0d 21 e8 0c  76 61 6c 69 64 25 3d b9  |wave.!..valid%=.|
00004ac0  0d 21 f2 0e f2 69 6e 66  6f 5f 6c 69 6e 65 0d 21  |.!...info_line.!|
00004ad0  fc 05 e1 0d 22 06 05 3a  0d 22 10 13 dd f2 64 72  |...."..:."....dr|
00004ae0  61 77 5f 69 6e 76 61 64  65 72 73 0d 22 1a 0b ea  |aw_invaders."...|
00004af0  20 41 25 2c 49 25 0d 22  24 0f e3 20 41 25 3d 31  | A%,I%."$.. A%=1|
00004b00  20 b8 20 31 35 0d 22 2e  0e 20 20 20 c8 8e 20 41  | . 15."..   .. A|
00004b10  25 20 ca 0d 22 38 14 20  20 20 20 20 20 c9 20 20  |% .."8.      .  |
00004b20  31 3a 49 25 3d 32 35 0d  22 42 14 20 20 20 20 20  |1:I%=25."B.     |
00004b30  20 c9 20 20 32 3a 49 25  3d 31 37 0d 22 4c 14 20  | .  2:I%=17."L. |
00004b40  20 20 20 20 20 c9 20 20  33 3a 49 25 3d 32 31 0d  |     .  3:I%=21.|
00004b50  22 56 17 20 20 20 20 20  20 c9 20 20 34 3a 49 25  |"V.      .  4:I%|
00004b60  3d 38 35 2d 32 38 0d 22  60 17 20 20 20 20 20 20  |=85-28."`.      |
00004b70  c9 20 20 35 3a 49 25 3d  38 39 2d 32 38 0d 22 6a  |.  5:I%=89-28."j|
00004b80  17 20 20 20 20 20 20 c9  20 20 36 3a 49 25 3d 39  |.      .  6:I%=9|
00004b90  33 2d 32 38 0d 22 74 17  20 20 20 20 20 20 c9 20  |3-28."t.      . |
00004ba0  20 37 3a 49 25 3d 37 33  2d 32 38 0d 22 7e 17 20  | 7:I%=73-28."~. |
00004bb0  20 20 20 20 20 c9 20 20  38 3a 49 25 3d 37 37 2d  |     .  8:I%=77-|
00004bc0  32 38 0d 22 88 17 20 20  20 20 20 20 c9 20 20 39  |28."..      .  9|
00004bd0  3a 49 25 3d 39 37 2d 32  38 0d 22 92 17 20 20 20  |:I%=97-28."..   |
00004be0  20 20 20 c9 20 31 30 3a  49 25 3d 38 31 2d 32 38  |   . 10:I%=81-28|
00004bf0  0d 22 9c 18 20 20 20 20  20 20 c9 20 31 31 3a 49  |."..      . 11:I|
00004c00  25 3d 31 30 39 2d 32 38  0d 22 a6 18 20 20 20 20  |%=109-28."..    |
00004c10  20 20 c9 20 31 32 3a 49  25 3d 31 30 31 2d 32 38  |  . 12:I%=101-28|
00004c20  0d 22 b0 14 20 20 20 20  20 20 c9 20 31 33 3a 49  |."..      . 13:I|
00004c30  25 3d 31 34 0d 22 ba 14  20 20 20 20 20 20 c9 20  |%=14."..      . |
00004c40  31 34 3a 49 25 3d 31 35  0d 22 c4 13 20 20 20 20  |14:I%=15."..    |
00004c50  20 20 c9 20 31 35 3a 49  25 3d 30 0d 22 ce 08 20  |  . 15:I%=0.".. |
00004c60  20 20 cb 0d 22 d8 1f 20  20 20 f2 73 68 6f 77 5f  |  .."..   .show_|
00004c70  66 75 6c 6c 5f 73 69 7a  65 28 49 25 2c 41 25 2d  |full_size(I%,A%-|
00004c80  31 29 0d 22 e2 08 ed 20  41 25 0d 22 ec 05 e1 0d  |1)."... A%."....|
00004c90  22 f6 05 3a 0d 23 00 23  dd f2 73 68 6f 77 5f 66  |"..:.#.#..show_f|
00004ca0  75 6c 6c 5f 73 69 7a 65  28 73 6e 75 6d 62 65 72  |ull_size(snumber|
00004cb0  25 2c 70 6f 73 25 29 0d  23 0a 0f ea 20 53 53 58  |%,pos%).#... SSX|
00004cc0  25 2c 53 53 59 25 0d 23  14 0a c8 8e 20 b9 20 ca  |%,SSY%.#.... . .|
00004cd0  0d 23 1e 2c 20 20 20 c9  20 70 6f 73 25 3c 31 32  |.#.,   . pos%<12|
00004ce0  3a 53 53 58 25 3d 30 2b  28 70 6f 73 25 20 83 20  |:SSX%=0+(pos% . |
00004cf0  36 29 2a 73 70 72 69 74  65 5f 58 25 0d 23 28 30  |6)*sprite_X%.#(0|
00004d00  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00004d10  53 53 59 25 3d 34 30 2b  28 70 6f 73 25 20 81 20  |SSY%=40+(pos% . |
00004d20  36 29 2a 73 70 72 69 74  65 5f 59 25 0d 23 32 1f  |6)*sprite_Y%.#2.|
00004d30  20 20 20 c9 20 70 6f 73  25 3c 31 35 3a 53 53 58  |   . pos%<15:SSX|
00004d40  25 3d 38 2b 31 38 2a 31  36 2a 34 0d 23 3c 33 20  |%=8+18*16*4.#<3 |
00004d50  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 53  |               S|
00004d60  53 59 25 3d 57 59 25 2b  28 70 6f 73 25 2d 31 32  |SY%=WY%+(pos%-12|
00004d70  29 2a 73 70 72 69 74 65  5f 59 25 2b 32 30 0d 23  |)*sprite_Y%+20.#|
00004d80  46 1e 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |F.              |
00004d90  20 20 e6 20 30 2c 77 68  69 74 65 25 0d 23 50 3e  |  . 0,white%.#P>|
00004da0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00004db0  c8 93 20 53 53 58 25 2b  31 38 2a 34 2c 53 53 59  |.. SSX%+18*4,SSY|
00004dc0  25 2c 31 32 37 39 2d 53  53 58 25 2d 31 38 2a 34  |%,1279-SSX%-18*4|
00004dd0  2c 73 70 72 69 74 65 5f  59 25 0d 23 5a 05 cb 0d  |,sprite_Y%.#Z...|
00004de0  23 64 0e e6 20 30 2c 62  6c 61 63 6b 25 0d 23 6e  |#d.. 0,black%.#n|
00004df0  2f c8 93 20 c8 90 20 53  53 58 25 2b 32 2c 53 53  |/.. .. SSX%+2,SS|
00004e00  59 25 2b 34 2c 73 70 72  69 74 65 5f 58 25 2d 34  |Y%+4,sprite_X%-4|
00004e10  2c 73 70 72 69 74 65 5f  59 25 2d 38 0d 23 78 0e  |,sprite_Y%-8.#x.|
00004e20  e6 20 30 2c 77 68 69 74  65 25 0d 23 82 24 c8 93  |. 0,white%.#.$..|
00004e30  20 53 53 58 25 2c 53 53  59 25 2c 73 70 72 69 74  | SSX%,SSY%,sprit|
00004e40  65 5f 58 25 2c 73 70 72  69 74 65 5f 59 25 0d 23  |e_X%,sprite_Y%.#|
00004e50  8c 4a e7 20 73 6e 75 6d  62 65 72 25 3d 32 35 20  |.J. snumber%=25 |
00004e60  8c 20 f2 67 65 74 5f 73  70 72 69 74 65 28 30 2c  |. .get_sprite(0,|
00004e70  53 53 58 25 2c 53 53 59  25 2c 53 53 58 25 2b 73  |SSX%,SSY%,SSX%+s|
00004e80  70 72 69 74 65 5f 58 25  2c 53 53 59 25 2b 73 70  |prite_X%,SSY%+sp|
00004e90  72 69 74 65 5f 59 25 29  0d 23 96 1a f2 63 61 6c  |rite_Y%).#...cal|
00004ea0  63 5f 6f 66 66 73 65 74  28 73 6e 75 6d 62 65 72  |c_offset(snumber|
00004eb0  25 29 0d 23 a0 0f e3 20  4a 25 3d 31 20 b8 20 31  |%).#... J%=1 . 1|
00004ec0  36 0d 23 aa 12 20 20 20  e3 20 49 25 3d 31 20 b8  |6.#..   . I%=1 .|
00004ed0  20 31 36 0d 23 b4 1e 20  20 20 20 20 20 20 e6 20  | 16.#..       . |
00004ee0  30 2c a4 67 65 74 5f 63  6f 6c 28 49 25 2c 4a 25  |0,.get_col(I%,J%|
00004ef0  29 0d 23 be 26 20 20 20  20 20 20 20 c8 92 20 53  |).#.&       .. S|
00004f00  53 58 25 2b 49 25 2a 34  2c 53 53 59 25 2b 28 31  |SX%+I%*4,SSY%+(1|
00004f10  37 2d 4a 25 29 2a 34 0d  23 c8 28 20 20 20 20 20  |7-J%)*4.#.(     |
00004f20  20 20 c8 92 20 53 53 58  25 2b 49 25 2a 34 2b 32  |  .. SSX%+I%*4+2|
00004f30  2c 53 53 59 25 2b 28 31  37 2d 4a 25 29 2a 34 0d  |,SSY%+(17-J%)*4.|
00004f40  23 d2 0b 20 20 20 ed 20  49 25 0d 23 dc 08 ed 20  |#..   . I%.#... |
00004f50  4a 25 0d 23 e6 47 e7 20  70 6f 73 25 3c 31 32 20  |J%.#.G. pos%<12 |
00004f60  8c 20 f2 67 65 74 5f 73  70 72 69 74 65 28 41 25  |. .get_sprite(A%|
00004f70  2c 53 53 58 25 2c 53 53  59 25 2c 53 53 58 25 2b  |,SSX%,SSY%,SSX%+|
00004f80  73 70 72 69 74 65 5f 58  25 2c 53 53 59 25 2b 73  |sprite_X%,SSY%+s|
00004f90  70 72 69 74 65 5f 59 25  29 0d 23 f0 05 e1 0d 23  |prite_Y%).#....#|
00004fa0  fa 05 3a 0d 24 04 0b dd  f2 65 72 72 6f 72 0d 24  |..:.$....error.$|
00004fb0  0e 12 c8 8e 20 28 9f 20  83 20 32 35 36 29 20 ca  |.... (. . 256) .|
00004fc0  0d 24 18 41 20 20 20 c9  20 31 35 32 2c 31 35 33  |.$.A   . 152,153|
00004fd0  20 3a f2 6d 65 73 73 61  67 65 28 22 44 69 73 63  | :.message("Disc|
00004fe0  20 4e 65 65 64 73 20 43  6f 6d 70 61 63 74 69 6e  | Needs Compactin|
00004ff0  67 2e 2e 2e 50 6c 65 61  73 65 20 57 61 69 74 22  |g...Please Wait"|
00005000  29 0d 24 22 21 20 20 20  20 20 20 20 20 20 20 20  |).$"!           |
00005010  20 20 20 20 20 20 ff 28  22 43 4f 4d 50 41 43 54  |      .("COMPACT|
00005020  22 29 0d 24 2c 33 20 20  20 c9 20 31 39 38 20 3a  |").$,3   . 198 :|
00005030  f2 6d 65 73 73 61 67 65  28 22 54 68 69 73 20 44  |.message("This D|
00005040  69 73 63 20 49 73 20 41  6c 72 65 61 64 79 20 46  |isc Is Already F|
00005050  75 6c 6c 22 29 0d 24 36  36 20 20 20 c9 20 32 30  |ull").$66   . 20|
00005060  31 20 3a f2 6d 65 73 73  61 67 65 28 22 54 68 69  |1 :.message("Thi|
00005070  73 20 44 69 73 63 20 49  73 20 57 72 69 74 65 20  |s Disc Is Write |
00005080  50 72 6f 74 65 63 74 65  64 22 29 0d 24 40 3d 20  |Protected").$@= |
00005090  20 20 c9 20 32 31 31 20  3a f2 6d 65 73 73 61 67  |  . 211 :.messag|
000050a0  65 28 22 50 6c 65 61 73  65 20 49 6e 73 65 72 74  |e("Please Insert|
000050b0  20 41 20 44 69 73 63 20  49 6e 74 6f 20 54 68 65  | A Disc Into The|
000050c0  20 44 72 69 76 65 22 29  0d 24 4a 32 20 20 20 c9  | Drive").$J2   .|
000050d0  20 32 31 34 20 3a f2 6d  65 73 73 61 67 65 28 22  | 214 :.message("|
000050e0  54 68 61 74 20 46 69 6c  65 20 44 6f 65 73 20 4e  |That File Does N|
000050f0  6f 74 20 45 78 69 73 74  22 29 0d 24 54 33 20 20  |ot Exist").$T3  |
00005100  20 7f 3a f2 6d 65 73 73  61 67 65 28 22 45 72 72  | .:.message("Err|
00005110  6f 72 3a 20 22 2b c3 28  9f 29 2b 22 20 61 74 20  |or: "+.(.)+" at |
00005120  4c 69 6e 65 3a 20 22 2b  c3 28 9e 29 29 0d 24 5e  |Line: "+.(.)).$^|
00005130  05 cb 0d 24 68 05 e1 0d  24 72 05 3a 0d 24 7c 12  |...$h...$r.:.$|.|
00005140  dd f2 64 69 73 70 6c 61  79 5f 77 61 76 65 0d 24  |..display_wave.$|
00005150  86 0b ea 20 49 25 2c 4a  25 0d 24 90 0e e3 20 49  |... I%,J%.$... I|
00005160  25 3d 31 20 b8 20 38 0d  24 9a 12 20 20 20 e3 20  |%=1 . 8.$..   . |
00005170  4a 25 3d 31 20 b8 20 31  36 0d 24 a4 4a 20 20 20  |J%=1 . 16.$.J   |
00005180  20 20 20 f2 70 6c 6f 74  5f 73 70 72 69 74 65 28  |   .plot_sprite(|
00005190  63 75 72 72 65 6e 74 5f  77 61 76 65 5f 69 25 28  |current_wave_i%(|
000051a0  4a 25 2c 49 25 29 2c 28  4a 25 2d 31 29 2a 31 38  |J%,I%),(J%-1)*18|
000051b0  2a 34 2c 57 59 25 2b 28  38 2d 49 25 29 2a 31 37  |*4,WY%+(8-I%)*17|
000051c0  2a 34 29 0d 24 ae 0b 20  20 20 ed 20 4a 25 0d 24  |*4).$..   . J%.$|
000051d0  b8 08 ed 20 49 25 0d 24  c2 05 e1 0d 24 cc 05 3a  |... I%.$....$..:|
000051e0  0d 24 d6 0b dd f2 72 65  66 5f 78 0d 24 e0 0b ea  |.$....ref_x.$...|
000051f0  20 49 25 2c 4a 25 0d 24  ea 0e e3 20 49 25 3d 31  | I%,J%.$... I%=1|
00005200  20 b8 20 38 0d 24 f4 11  20 20 20 e3 20 4a 25 3d  | . 8.$..   . J%=|
00005210  31 20 b8 20 38 0d 24 fe  3a 20 20 20 20 20 20 63  |1 . 8.$.:      c|
00005220  75 72 72 65 6e 74 5f 77  61 76 65 5f 69 25 28 31  |urrent_wave_i%(1|
00005230  37 2d 4a 25 2c 49 25 29  3d 63 75 72 72 65 6e 74  |7-J%,I%)=current|
00005240  5f 77 61 76 65 5f 69 25  28 4a 25 2c 49 25 29 0d  |_wave_i%(J%,I%).|
00005250  25 08 0b 20 20 20 ed 20  4a 25 0d 25 12 08 ed 20  |%..   . J%.%... |
00005260  49 25 0d 25 1c 28 f2 6d  65 73 73 61 67 65 28 22  |I%.%.(.message("|
00005270  49 6e 76 61 64 65 72 20  57 61 76 65 20 58 20 52  |Invader Wave X R|
00005280  65 66 6c 65 63 74 65 64  22 29 0d 25 26 0e f2 72  |eflected").%&..r|
00005290  65 64 69 73 70 6c 61 79  0d 25 30 05 e1 0d 25 3a  |edisplay.%0...%:|
000052a0  05 3a 0d 25 44 0b dd f2  72 65 66 5f 79 0d 25 4e  |.:.%D...ref_y.%N|
000052b0  0b ea 20 49 25 2c 4a 25  0d 25 58 0e e3 20 49 25  |.. I%,J%.%X.. I%|
000052c0  3d 31 20 b8 20 34 0d 25  62 12 20 20 20 e3 20 4a  |=1 . 4.%b.   . J|
000052d0  25 3d 31 20 b8 20 31 36  0d 25 6c 39 20 20 20 20  |%=1 . 16.%l9    |
000052e0  20 20 63 75 72 72 65 6e  74 5f 77 61 76 65 5f 69  |  current_wave_i|
000052f0  25 28 4a 25 2c 39 2d 49  25 29 3d 63 75 72 72 65  |%(J%,9-I%)=curre|
00005300  6e 74 5f 77 61 76 65 5f  69 25 28 4a 25 2c 49 25  |nt_wave_i%(J%,I%|
00005310  29 0d 25 76 0b 20 20 20  ed 20 4a 25 0d 25 80 08  |).%v.   . J%.%..|
00005320  ed 20 49 25 0d 25 8a 28  f2 6d 65 73 73 61 67 65  |. I%.%.(.message|
00005330  28 22 49 6e 76 61 64 65  72 20 57 61 76 65 20 59  |("Invader Wave Y|
00005340  20 52 65 66 6c 65 63 74  65 64 22 29 0d 25 94 0e  | Reflected").%..|
00005350  f2 72 65 64 69 73 70 6c  61 79 0d 25 9e 05 e1 0d  |.redisplay.%....|
00005360  25 a8 05 3a 0d 25 b2 0d  dd f2 72 65 66 5f 78 5f  |%..:.%....ref_x_|
00005370  79 0d 25 bc 0b ea 20 49  25 2c 4a 25 0d 25 c6 0e  |y.%... I%,J%.%..|
00005380  e3 20 49 25 3d 31 20 b8  20 34 0d 25 d0 11 20 20  |. I%=1 . 4.%..  |
00005390  20 e3 20 4a 25 3d 31 20  b8 20 38 0d 25 da 3a 20  | . J%=1 . 8.%.: |
000053a0  20 20 20 20 20 63 75 72  72 65 6e 74 5f 77 61 76  |     current_wav|
000053b0  65 5f 69 25 28 31 37 2d  4a 25 2c 49 25 29 3d 63  |e_i%(17-J%,I%)=c|
000053c0  75 72 72 65 6e 74 5f 77  61 76 65 5f 69 25 28 4a  |urrent_wave_i%(J|
000053d0  25 2c 49 25 29 0d 25 e4  0b 20 20 20 ed 20 4a 25  |%,I%).%..   . J%|
000053e0  0d 25 ee 12 20 20 20 e3  20 4a 25 3d 31 20 b8 20  |.%..   . J%=1 . |
000053f0  31 36 0d 25 f8 39 20 20  20 20 20 20 63 75 72 72  |16.%.9      curr|
00005400  65 6e 74 5f 77 61 76 65  5f 69 25 28 4a 25 2c 39  |ent_wave_i%(J%,9|
00005410  2d 49 25 29 3d 63 75 72  72 65 6e 74 5f 77 61 76  |-I%)=current_wav|
00005420  65 5f 69 25 28 4a 25 2c  49 25 29 0d 26 02 0b 20  |e_i%(J%,I%).&.. |
00005430  20 20 ed 20 4a 25 0d 26  0c 08 ed 20 49 25 0d 26  |  . J%.&... I%.&|
00005440  16 2e f2 6d 65 73 73 61  67 65 28 22 49 6e 76 61  |...message("Inva|
00005450  64 65 72 20 57 61 76 65  20 58 20 61 6e 64 20 59  |der Wave X and Y|
00005460  20 52 65 66 6c 65 63 74  65 64 22 29 0d 26 20 0e  | Reflected").& .|
00005470  f2 72 65 64 69 73 70 6c  61 79 0d 26 2a 05 e1 0d  |.redisplay.&*...|
00005480  26 34 05 3a 0d 26 3e 12  dd f2 73 65 74 5f 72 6e  |&4.:.&>...set_rn|
00005490  64 5f 73 65 65 64 0d 26  48 13 ea 20 64 75 6d 6d  |d_seed.&H.. dumm|
000054a0  79 25 2c 20 74 68 72 75  25 0d 26 52 0b 74 68 72  |y%, thru%.&R.thr|
000054b0  75 25 3d a3 0d 26 5c 0c  fb 20 77 68 69 74 65 25  |u%=..&\.. white%|
000054c0  0d 26 66 05 f5 0d 26 70  1f 20 20 20 e7 20 74 68  |.&f...&p.   . th|
000054d0  72 75 25 3d b9 20 8c 20  f2 77 72 6f 6e 67 5f 73  |ru%=. . .wrong_s|
000054e0  6f 75 6e 64 0d 26 7a 14  20 20 20 f2 63 6c 65 61  |ound.&z.   .clea|
000054f0  72 6d 65 73 73 61 67 65  0d 26 84 30 20 20 20 f1  |rmessage.&.0   .|
00005500  20 8a 31 2c 38 29 3b 22  53 65 74 20 52 61 6e 64  | .1,8);"Set Rand|
00005510  6f 6d 20 53 65 65 64 20  28 22 3b 73 65 65 64 25  |om Seed (";seed%|
00005520  3b 22 29 20 3d 20 22 3b  0d 26 8e 0e 20 20 20 e8  |;") = ";.&..   .|
00005530  20 73 65 65 64 25 0d 26  98 0e 20 20 20 74 68 72  | seed%.&..   thr|
00005540  75 25 3d b9 0d 26 a2 0d  fd 20 73 65 65 64 25 3e  |u%=..&... seed%>|
00005550  30 0d 26 ac 14 64 75 6d  6d 79 25 3d b3 28 2d 73  |0.&..dummy%=.(-s|
00005560  65 65 64 25 29 0d 26 b6  0b 74 68 72 75 25 3d a3  |eed%).&..thru%=.|
00005570  0d 26 c0 05 f5 0d 26 ca  1f 20 20 20 e7 20 74 68  |.&....&..   . th|
00005580  72 75 25 3d b9 20 8c 20  f2 77 72 6f 6e 67 5f 73  |ru%=. . .wrong_s|
00005590  6f 75 6e 64 0d 26 d4 14  20 20 20 f2 63 6c 65 61  |ound.&..   .clea|
000055a0  72 6d 65 73 73 61 67 65  0d 26 de 38 20 20 20 f1  |rmessage.&.8   .|
000055b0  20 8a 31 2c 38 29 3b 22  53 65 74 20 52 61 6e 64  | .1,8);"Set Rand|
000055c0  6f 6d 20 53 70 61 63 65  73 20 28 22 3b 6e 75 6d  |om Spaces (";num|
000055d0  5f 73 70 61 63 65 73 25  3b 22 29 20 3d 20 22 3b  |_spaces%;") = ";|
000055e0  0d 26 e8 14 20 20 20 e8  20 6e 75 6d 5f 73 70 61  |.&..   . num_spa|
000055f0  63 65 73 25 0d 26 f2 0e  20 20 20 74 68 72 75 25  |ces%.&..   thru%|
00005600  3d b9 0d 26 fc 14 fd 20  6e 75 6d 5f 73 70 61 63  |=..&... num_spac|
00005610  65 73 25 3e 3d 30 0d 27  06 21 f2 6d 65 73 73 61  |es%>=0.'.!.messa|
00005620  67 65 28 22 52 4e 44 20  53 65 65 64 20 41 63 63  |ge("RND Seed Acc|
00005630  65 70 74 65 64 22 29 0d  27 10 05 e1 0d 27 1a 05  |epted").'....'..|
00005640  3a 0d 27 24 0e dd f2 72  6e 64 5f 77 61 76 65 0d  |:.'$...rnd_wave.|
00005650  27 2e 0e ea 20 49 25 2c  4a 25 2c 56 25 0d 27 38  |'... I%,J%,V%.'8|
00005660  0e e3 20 49 25 3d 31 20  b8 20 38 0d 27 42 12 20  |.. I%=1 . 8.'B. |
00005670  20 20 e3 20 4a 25 3d 31  20 b8 20 31 36 0d 27 4c  |  . J%=1 . 16.'L|
00005680  3c 20 20 20 20 20 20 63  75 72 72 65 6e 74 5f 77  |<      current_w|
00005690  61 76 65 5f 69 25 28 4a  25 2c 49 25 29 3d a4 63  |ave_i%(J%,I%)=.c|
000056a0  6f 6e 76 65 72 74 28 b3  28 31 32 2b 6e 75 6d 5f  |onvert(.(12+num_|
000056b0  73 70 61 63 65 73 25 29  29 0d 27 56 0b 20 20 20  |spaces%)).'V.   |
000056c0  ed 20 4a 25 0d 27 60 08  ed 20 49 25 0d 27 6a 2b  |. J%.'`.. I%.'j+|
000056d0  f2 6d 65 73 73 61 67 65  28 22 52 61 6e 64 6f 6d  |.message("Random|
000056e0  20 49 6e 76 61 64 65 72  20 57 61 76 65 20 43 72  | Invader Wave Cr|
000056f0  65 61 74 65 64 22 29 0d  27 74 0e f2 72 65 64 69  |eated").'t..redi|
00005700  73 70 6c 61 79 0d 27 7e  05 e1 0d 27 88 05 3a 0d  |splay.'~...'..:.|
00005710  27 92 15 dd a4 63 6f 6e  76 65 72 74 28 76 61 6c  |'....convert(val|
00005720  75 65 25 29 0d 27 9c 1a  e7 20 76 61 6c 75 65 25  |ue%).'... value%|
00005730  3e 31 32 20 8c 20 76 61  6c 75 65 25 3d 30 0d 27  |>12 . value%=0.'|
00005740  a6 0b 3d 76 61 6c 75 65  25 0d 27 b0 05 3a 0d 27  |..=value%.'..:.'|
00005750  ba 17 dd a4 75 6e 63 6f  6e 76 65 72 74 28 76 61  |....unconvert(va|
00005760  6c 75 65 25 29 0d 27 c4  27 e7 20 76 61 6c 75 65  |lue%).'.'. value|
00005770  25 3e 30 20 8c 20 76 61  6c 75 65 25 2b 3d 36 34  |%>0 . value%+=64|
00005780  20 8b 20 76 61 6c 75 65  25 3d 33 32 0d 27 ce 0b  | . value%=32.'..|
00005790  3d 76 61 6c 75 65 25 0d  27 d8 05 3a 0d 27 e2 10  |=value%.'..:.'..|
000057a0  dd f2 72 6e 64 5f 78 5f  77 61 76 65 0d 27 ec 0e  |..rnd_x_wave.'..|
000057b0  ea 20 49 25 2c 4a 25 2c  56 25 0d 27 f6 0e e3 20  |. I%,J%,V%.'... |
000057c0  49 25 3d 31 20 b8 20 38  0d 28 00 11 20 20 20 e3  |I%=1 . 8.(..   .|
000057d0  20 4a 25 3d 31 20 b8 20  38 0d 28 0a 3c 20 20 20  | J%=1 . 8.(.<   |
000057e0  20 20 20 63 75 72 72 65  6e 74 5f 77 61 76 65 5f  |   current_wave_|
000057f0  69 25 28 4a 25 2c 49 25  29 3d a4 63 6f 6e 76 65  |i%(J%,I%)=.conve|
00005800  72 74 28 b3 28 31 32 2b  6e 75 6d 5f 73 70 61 63  |rt(.(12+num_spac|
00005810  65 73 25 29 29 0d 28 14  3a 20 20 20 20 20 20 63  |es%)).(.:      c|
00005820  75 72 72 65 6e 74 5f 77  61 76 65 5f 69 25 28 31  |urrent_wave_i%(1|
00005830  37 2d 4a 25 2c 49 25 29  3d 63 75 72 72 65 6e 74  |7-J%,I%)=current|
00005840  5f 77 61 76 65 5f 69 25  28 4a 25 2c 49 25 29 0d  |_wave_i%(J%,I%).|
00005850  28 1e 0b 20 20 20 ed 20  4a 25 0d 28 28 08 ed 20  |(..   . J%.((.. |
00005860  49 25 0d 28 32 37 f2 6d  65 73 73 61 67 65 28 22  |I%.(27.message("|
00005870  52 61 6e 64 6f 6d 20 58  20 52 65 66 6c 65 63 74  |Random X Reflect|
00005880  65 64 20 49 6e 76 61 64  65 72 20 57 61 76 65 20  |ed Invader Wave |
00005890  43 72 65 61 74 65 64 22  29 0d 28 3c 0e f2 72 65  |Created").(<..re|
000058a0  64 69 73 70 6c 61 79 0d  28 46 05 e1 0d 28 50 05  |display.(F...(P.|
000058b0  3a 0d 28 5a 10 dd f2 72  6e 64 5f 79 5f 77 61 76  |:.(Z...rnd_y_wav|
000058c0  65 0d 28 64 0e ea 20 49  25 2c 4a 25 2c 56 25 0d  |e.(d.. I%,J%,V%.|
000058d0  28 6e 0e e3 20 49 25 3d  31 20 b8 20 34 0d 28 78  |(n.. I%=1 . 4.(x|
000058e0  12 20 20 20 e3 20 4a 25  3d 31 20 b8 20 31 36 0d  |.   . J%=1 . 16.|
000058f0  28 82 3c 20 20 20 20 20  20 63 75 72 72 65 6e 74  |(.<      current|
00005900  5f 77 61 76 65 5f 69 25  28 4a 25 2c 49 25 29 3d  |_wave_i%(J%,I%)=|
00005910  a4 63 6f 6e 76 65 72 74  28 b3 28 31 32 2b 6e 75  |.convert(.(12+nu|
00005920  6d 5f 73 70 61 63 65 73  25 29 29 0d 28 8c 39 20  |m_spaces%)).(.9 |
00005930  20 20 20 20 20 63 75 72  72 65 6e 74 5f 77 61 76  |     current_wav|
00005940  65 5f 69 25 28 4a 25 2c  39 2d 49 25 29 3d 63 75  |e_i%(J%,9-I%)=cu|
00005950  72 72 65 6e 74 5f 77 61  76 65 5f 69 25 28 4a 25  |rrent_wave_i%(J%|
00005960  2c 49 25 29 0d 28 96 0b  20 20 20 ed 20 4a 25 0d  |,I%).(..   . J%.|
00005970  28 a0 08 ed 20 49 25 0d  28 aa 37 f2 6d 65 73 73  |(... I%.(.7.mess|
00005980  61 67 65 28 22 52 61 6e  64 6f 6d 20 59 20 52 65  |age("Random Y Re|
00005990  66 6c 65 63 74 65 64 20  49 6e 76 61 64 65 72 20  |flected Invader |
000059a0  57 61 76 65 20 43 72 65  61 74 65 64 22 29 0d 28  |Wave Created").(|
000059b0  b4 0e f2 72 65 64 69 73  70 6c 61 79 0d 28 be 05  |...redisplay.(..|
000059c0  e1 0d 28 c8 05 3a 0d 28  d2 12 dd f2 72 6e 64 5f  |..(..:.(....rnd_|
000059d0  78 5f 79 5f 77 61 76 65  0d 28 dc 0e ea 20 49 25  |x_y_wave.(... I%|
000059e0  2c 4a 25 2c 56 25 0d 28  e6 0e e3 20 49 25 3d 31  |,J%,V%.(... I%=1|
000059f0  20 b8 20 34 0d 28 f0 11  20 20 20 e3 20 4a 25 3d  | . 4.(..   . J%=|
00005a00  31 20 b8 20 38 0d 28 fa  3c 20 20 20 20 20 20 63  |1 . 8.(.<      c|
00005a10  75 72 72 65 6e 74 5f 77  61 76 65 5f 69 25 28 4a  |urrent_wave_i%(J|
00005a20  25 2c 49 25 29 3d a4 63  6f 6e 76 65 72 74 28 b3  |%,I%)=.convert(.|
00005a30  28 31 32 2b 6e 75 6d 5f  73 70 61 63 65 73 25 29  |(12+num_spaces%)|
00005a40  29 0d 29 04 3a 20 20 20  20 20 20 63 75 72 72 65  |).).:      curre|
00005a50  6e 74 5f 77 61 76 65 5f  69 25 28 31 37 2d 4a 25  |nt_wave_i%(17-J%|
00005a60  2c 49 25 29 3d 63 75 72  72 65 6e 74 5f 77 61 76  |,I%)=current_wav|
00005a70  65 5f 69 25 28 4a 25 2c  49 25 29 0d 29 0e 0b 20  |e_i%(J%,I%).).. |
00005a80  20 20 ed 20 4a 25 0d 29  18 12 20 20 20 e3 20 4a  |  . J%.)..   . J|
00005a90  25 3d 31 20 b8 20 31 36  0d 29 22 39 20 20 20 20  |%=1 . 16.)"9    |
00005aa0  20 20 63 75 72 72 65 6e  74 5f 77 61 76 65 5f 69  |  current_wave_i|
00005ab0  25 28 4a 25 2c 39 2d 49  25 29 3d 63 75 72 72 65  |%(J%,9-I%)=curre|
00005ac0  6e 74 5f 77 61 76 65 5f  69 25 28 4a 25 2c 49 25  |nt_wave_i%(J%,I%|
00005ad0  29 0d 29 2c 0b 20 20 20  ed 20 4a 25 0d 29 36 08  |).),.   . J%.)6.|
00005ae0  ed 20 49 25 0d 29 40 3d  f2 6d 65 73 73 61 67 65  |. I%.)@=.message|
00005af0  28 22 52 61 6e 64 6f 6d  20 58 20 61 6e 64 20 59  |("Random X and Y|
00005b00  20 52 65 66 6c 65 63 74  65 64 20 49 6e 76 61 64  | Reflected Invad|
00005b10  65 72 20 57 61 76 65 20  43 72 65 61 74 65 64 22  |er Wave Created"|
00005b20  29 0d 29 4a 0e f2 72 65  64 69 73 70 6c 61 79 0d  |).)J..redisplay.|
00005b30  29 54 05 e1 0d 29 5e 05  3a 0d 29 68 10 dd f2 62  |)T...)^.:.)h...b|
00005b40  6f 6d 62 5f 74 79 70 65  73 0d 29 72 13 ea 20 76  |omb_types.)r.. v|
00005b50  61 6c 75 65 25 2c 20 74  68 72 75 25 0d 29 7c 0b  |alue%, thru%.)|.|
00005b60  74 68 72 75 25 3d a3 0d  29 86 0c fb 20 77 68 69  |thru%=..)... whi|
00005b70  74 65 25 0d 29 90 05 f5  0d 29 9a 1f 20 20 20 e7  |te%.)....)..   .|
00005b80  20 74 68 72 75 25 3d b9  20 8c 20 f2 77 72 6f 6e  | thru%=. . .wron|
00005b90  67 5f 73 6f 75 6e 64 0d  29 a4 14 20 20 20 f2 63  |g_sound.)..   .c|
00005ba0  6c 65 61 72 6d 65 73 73  61 67 65 0d 29 ae 3c 20  |learmessage.).< |
00005bb0  20 20 f1 20 8a 31 2c 38  29 3b 22 53 65 74 20 42  |  . .1,8);"Set B|
00005bc0  6f 6d 62 20 54 79 70 65  73 20 28 31 3d 6e 6f 72  |omb Types (1=nor|
00005bd0  6d 20 32 3d 64 69 61 67  20 34 3d 68 6f 6d 69 6e  |m 2=diag 4=homin|
00005be0  67 29 20 3d 20 22 3b 0d  29 b8 0f 20 20 20 e8 20  |g) = ";.)..   . |
00005bf0  76 61 6c 75 65 25 0d 29  c2 0e 20 20 20 74 68 72  |value%.)..   thr|
00005c00  75 25 3d b9 0d 29 cc 1b  fd 20 76 61 6c 75 65 25  |u%=..)... value%|
00005c10  3e 3d 30 20 80 20 76 61  6c 75 65 25 3c 3d 37 0d  |>=0 . value%<=7.|
00005c20  29 d6 1e 77 61 76 65 5f  61 74 74 72 69 62 75 74  |)..wave_attribut|
00005c30  65 73 25 28 30 29 3d 76  61 6c 75 65 25 0d 29 e0  |es%(0)=value%.).|
00005c40  19 f2 73 68 6f 77 5f 62  6f 6d 62 5f 61 74 74 72  |..show_bomb_attr|
00005c50  69 62 75 74 65 73 0d 29  ea 27 f2 6d 65 73 73 61  |ibutes.).'.messa|
00005c60  67 65 28 22 4e 65 77 20  42 6f 6d 62 20 54 79 70  |ge("New Bomb Typ|
00005c70  65 73 20 41 63 63 65 70  74 65 64 22 29 0d 29 f4  |es Accepted").).|
00005c80  05 e1 0d 29 fe 05 3a 0d  2a 08 0f dd f2 6d 61 78  |...)..:.*....max|
00005c90  5f 62 6f 6d 62 73 0d 2a  12 13 ea 20 76 61 6c 75  |_bombs.*... valu|
00005ca0  65 25 2c 20 74 72 75 65  25 0d 2a 1c 0b 74 68 72  |e%, true%.*..thr|
00005cb0  75 25 3d a3 0d 2a 26 0c  fb 20 77 68 69 74 65 25  |u%=..*&.. white%|
00005cc0  0d 2a 30 05 f5 0d 2a 3a  1f 20 20 20 e7 20 74 68  |.*0...*:.   . th|
00005cd0  72 75 25 3d b9 20 8c 20  f2 77 72 6f 6e 67 5f 73  |ru%=. . .wrong_s|
00005ce0  6f 75 6e 64 0d 2a 44 14  20 20 20 f2 63 6c 65 61  |ound.*D.   .clea|
00005cf0  72 6d 65 73 73 61 67 65  0d 2a 4e 39 20 20 20 f1  |rmessage.*N9   .|
00005d00  20 8a 31 2c 38 29 3b 22  4d 61 78 20 49 6e 76 61  | .1,8);"Max Inva|
00005d10  64 65 72 20 42 6f 6d 62  73 20 41 74 20 41 6e 79  |der Bombs At Any|
00005d20  20 54 69 6d 65 20 28 31  2d 31 36 29 20 3d 20 22  | Time (1-16) = "|
00005d30  3b 0d 2a 58 0f 20 20 20  e8 20 76 61 6c 75 65 25  |;.*X.   . value%|
00005d40  0d 2a 62 0e 20 20 20 74  68 72 75 25 3d b9 0d 2a  |.*b.   thru%=..*|
00005d50  6c 1c fd 20 76 61 6c 75  65 25 3e 3d 31 20 80 20  |l.. value%>=1 . |
00005d60  76 61 6c 75 65 25 3c 3d  31 36 0d 2a 76 1e 77 61  |value%<=16.*v.wa|
00005d70  76 65 5f 61 74 74 72 69  62 75 74 65 73 25 28 32  |ve_attributes%(2|
00005d80  29 3d 76 61 6c 75 65 25  0d 2a 80 13 f2 73 68 6f  |)=value%.*...sho|
00005d90  77 5f 6e 75 6d 5f 62 6f  6d 62 73 0d 2a 8a 2a f2  |w_num_bombs.*.*.|
00005da0  6d 65 73 73 61 67 65 28  22 4d 61 78 20 49 6e 76  |message("Max Inv|
00005db0  61 64 65 72 20 42 6f 6d  62 73 20 41 63 63 65 70  |ader Bombs Accep|
00005dc0  74 65 64 22 29 0d 2a 94  05 e1 0d 2a 9e 05 3a 0d  |ted").*....*..:.|
00005dd0  2a a8 11 dd f2 6d 61 78  5f 72 6f 63 6b 65 74 73  |*....max_rockets|
00005de0  0d 2a b2 13 ea 20 76 61  6c 75 65 25 2c 20 74 72  |.*... value%, tr|
00005df0  75 65 25 0d 2a bc 0b 74  68 72 75 25 3d a3 0d 2a  |ue%.*..thru%=..*|
00005e00  c6 0c fb 20 77 68 69 74  65 25 0d 2a d0 05 f5 0d  |... white%.*....|
00005e10  2a da 1f 20 20 20 e7 20  74 68 72 75 25 3d b9 20  |*..   . thru%=. |
00005e20  8c 20 f2 77 72 6f 6e 67  5f 73 6f 75 6e 64 0d 2a  |. .wrong_sound.*|
00005e30  e4 14 20 20 20 f2 63 6c  65 61 72 6d 65 73 73 61  |..   .clearmessa|
00005e40  67 65 0d 2a ee 39 20 20  20 f1 20 8a 31 2c 38 29  |ge.*.9   . .1,8)|
00005e50  3b 22 4d 61 78 20 50 6c  61 79 65 72 20 52 6f 63  |;"Max Player Roc|
00005e60  6b 65 74 73 20 41 74 20  41 6e 79 20 54 69 6d 65  |kets At Any Time|
00005e70  20 28 31 2d 33 29 20 3d  20 22 3b 0d 2a f8 0f 20  | (1-3) = ";.*.. |
00005e80  20 20 e8 20 76 61 6c 75  65 25 0d 2b 02 0e 20 20  |  . value%.+..  |
00005e90  20 74 68 72 75 25 3d b9  0d 2b 0c 1b fd 20 76 61  | thru%=..+... va|
00005ea0  6c 75 65 25 3e 3d 31 20  80 20 76 61 6c 75 65 25  |lue%>=1 . value%|
00005eb0  3c 3d 33 0d 2b 16 2b f2  6d 65 73 73 61 67 65 28  |<=3.+.+.message(|
00005ec0  22 4d 61 78 20 50 6c 61  79 65 72 20 52 6f 63 6b  |"Max Player Rock|
00005ed0  65 74 73 20 41 63 63 65  70 74 65 64 22 29 0d 2b  |ets Accepted").+|
00005ee0  20 1e 77 61 76 65 5f 61  74 74 72 69 62 75 74 65  | .wave_attribute|
00005ef0  73 25 28 33 29 3d 76 61  6c 75 65 25 0d 2b 2a 05  |s%(3)=value%.+*.|
00005f00  e1 0d 2b 34 05 3a 0d 2b  3e 11 dd f2 69 6e 69 74  |..+4.:.+>...init|
00005f10  69 61 6c 5f 64 69 72 0d  2b 48 13 ea 20 76 61 6c  |ial_dir.+H.. val|
00005f20  75 65 25 2c 20 74 72 75  65 25 0d 2b 52 0b 74 68  |ue%, true%.+R.th|
00005f30  72 75 25 3d a3 0d 2b 5c  0c fb 20 77 68 69 74 65  |ru%=..+\.. white|
00005f40  25 0d 2b 66 05 f5 0d 2b  70 1f 20 20 20 e7 20 74  |%.+f...+p.   . t|
00005f50  68 72 75 25 3d b9 20 8c  20 f2 77 72 6f 6e 67 5f  |hru%=. . .wrong_|
00005f60  73 6f 75 6e 64 0d 2b 7a  14 20 20 20 f2 63 6c 65  |sound.+z.   .cle|
00005f70  61 72 6d 65 73 73 61 67  65 0d 2b 84 3a 20 20 20  |armessage.+.:   |
00005f80  f1 20 8a 31 2c 38 29 3b  22 57 61 76 65 20 44 69  |. .1,8);"Wave Di|
00005f90  72 65 63 74 69 6f 6e 20  28 30 3d 52 4e 44 20 31  |rection (0=RND 1|
00005fa0  3d 4c 65 66 74 20 32 3d  52 69 67 68 74 29 20 3d  |=Left 2=Right) =|
00005fb0  20 22 3b 0d 2b 8e 0f 20  20 20 e8 20 76 61 6c 75  | ";.+..   . valu|
00005fc0  65 25 0d 2b 98 0e 20 20  20 74 68 72 75 25 3d b9  |e%.+..   thru%=.|
00005fd0  0d 2b a2 1b fd 20 76 61  6c 75 65 25 3e 3d 30 20  |.+... value%>=0 |
00005fe0  80 20 76 61 6c 75 65 25  3c 3d 32 0d 2b ac 27 f2  |. value%<=2.+.'.|
00005ff0  6d 65 73 73 61 67 65 28  22 57 61 76 65 20 44 69  |message("Wave Di|
00006000  72 65 63 74 69 6f 6e 20  41 63 63 65 70 74 65 64  |rection Accepted|
00006010  22 29 0d 2b b6 1e 77 61  76 65 5f 61 74 74 72 69  |").+..wave_attri|
00006020  62 75 74 65 73 25 28 34  29 3d 76 61 6c 75 65 25  |butes%(4)=value%|
00006030  0d 2b c0 05 e1 0d 2b ca  05 3a 0d 2b d4 0c dd f2  |.+....+..:.+....|
00006040  68 65 69 67 68 74 0d 2b  de 13 ea 20 76 61 6c 75  |height.+... valu|
00006050  65 25 2c 20 74 72 75 65  25 0d 2b e8 0b 74 68 72  |e%, true%.+..thr|
00006060  75 25 3d a3 0d 2b f2 0c  fb 20 77 68 69 74 65 25  |u%=..+... white%|
00006070  0d 2b fc 05 f5 0d 2c 06  1f 20 20 20 e7 20 74 68  |.+....,..   . th|
00006080  72 75 25 3d b9 20 8c 20  f2 77 72 6f 6e 67 5f 73  |ru%=. . .wrong_s|
00006090  6f 75 6e 64 0d 2c 10 14  20 20 20 f2 63 6c 65 61  |ound.,..   .clea|
000060a0  72 6d 65 73 73 61 67 65  0d 2c 1a 3b 20 20 20 f1  |rmessage.,.;   .|
000060b0  20 8a 31 2c 38 29 3b 22  57 61 76 65 20 49 6e 69  | .1,8);"Wave Ini|
000060c0  74 69 61 6c 20 48 65 69  67 68 74 20 28 31 3d 54  |tial Height (1=T|
000060d0  6f 70 2e 2e 2e 36 3d 42  6f 74 74 6f 6d 29 20 3d  |op...6=Bottom) =|
000060e0  20 22 3b 0d 2c 24 0f 20  20 20 e8 20 76 61 6c 75  | ";.,$.   . valu|
000060f0  65 25 0d 2c 2e 0e 20 20  20 74 68 72 75 25 3d b9  |e%.,..   thru%=.|
00006100  0d 2c 38 1b fd 20 76 61  6c 75 65 25 3e 3d 31 20  |.,8.. value%>=1 |
00006110  80 20 76 61 6c 75 65 25  3c 3d 36 0d 2c 42 13 f2  |. value%<=6.,B..|
00006120  73 68 6f 77 5f 68 65 69  67 68 74 28 30 29 0d 2c  |show_height(0).,|
00006130  4c 1e 77 61 76 65 5f 61  74 74 72 69 62 75 74 65  |L.wave_attribute|
00006140  73 25 28 31 29 3d 76 61  6c 75 65 25 0d 2c 56 13  |s%(1)=value%.,V.|
00006150  f2 73 68 6f 77 5f 68 65  69 67 68 74 28 31 29 0d  |.show_height(1).|
00006160  2c 60 2c f2 6d 65 73 73  61 67 65 28 22 57 61 76  |,`,.message("Wav|
00006170  65 20 49 6e 69 74 69 61  6c 20 48 65 69 67 68 74  |e Initial Height|
00006180  20 41 63 63 65 70 74 65  64 22 29 0d 2c 6a 05 e1  | Accepted").,j..|
00006190  0d 2c 74 05 3a 0d 2c 7e  0e dd f2 70 61 73 73 77  |.,t.:.,~...passw|
000061a0  6f 72 64 0d 2c 88 19 ea  20 76 61 6c 69 64 25 2c  |ord.,... valid%,|
000061b0  49 25 2c 70 61 72 74 24  2c 69 6e 24 0d 2c 92 0c  |I%,part$,in$.,..|
000061c0  fb 20 77 68 69 74 65 25  0d 2c 9c 05 f5 0d 2c a6  |. white%.,....,.|
000061d0  0f 20 20 20 76 61 6c 69  64 25 3d a3 0d 2c b0 14  |.   valid%=..,..|
000061e0  20 20 20 f2 63 6c 65 61  72 6d 65 73 73 61 67 65  |   .clearmessage|
000061f0  0d 2c ba 37 20 20 20 f1  20 8a 31 2c 38 29 3b 22  |.,.7   . .1,8);"|
00006200  57 61 76 65 20 50 61 73  73 77 6f 72 64 20 28 22  |Wave Password ("|
00006210  22 22 3b 77 61 76 65 70  61 73 73 77 6f 72 64 24  |"";wavepassword$|
00006220  3b 22 22 22 29 22 3b 0d  2c c4 0c 20 20 20 e8 20  |;""")";.,..   . |
00006230  69 6e 24 0d 2c ce 20 20  20 20 e7 20 a9 28 69 6e  |in$.,.    . .(in|
00006240  24 29 3e 30 20 80 20 a9  28 69 6e 24 29 3c 3d 31  |$)>0 . .(in$)<=1|
00006250  30 20 8c 0d 2c d8 17 20  20 20 20 20 20 e7 20 a9  |0 ..,..      . .|
00006260  28 69 6e 24 29 3c 31 30  20 8c 0d 2c e2 21 20 20  |(in$)<10 ..,.!  |
00006270  20 20 20 20 20 20 20 69  6e 24 2b 3d c4 31 30 2d  |       in$+=.10-|
00006280  a9 28 69 6e 24 29 2c 22  20 22 29 0d 2c ec 0b 20  |.(in$)," ").,.. |
00006290  20 20 20 20 20 cd 0d 2c  f6 12 20 20 20 20 20 20  |     ..,..      |
000062a0  76 61 6c 69 64 25 3d b9  0d 2d 00 15 20 20 20 20  |valid%=..-..    |
000062b0  20 20 e3 20 49 25 3d 31  20 b8 20 31 30 0d 2d 0a  |  . I%=1 . 10.-.|
000062c0  1d 20 20 20 20 20 20 20  20 20 70 61 72 74 24 3d  |.         part$=|
000062d0  c1 69 6e 24 2c 49 25 2c  31 29 0d 2d 14 28 20 20  |.in$,I%,1).-.(  |
000062e0  20 20 20 20 20 20 20 e7  20 70 61 72 74 24 3e 3d  |       . part$>=|
000062f0  22 61 22 20 80 20 70 61  72 74 24 3c 3d 22 7a 22  |"a" . part$<="z"|
00006300  20 8c 0d 2d 1e 24 20 20  20 20 20 20 20 20 20 20  | ..-.$          |
00006310  20 20 70 61 72 74 24 3d  bd 28 97 28 70 61 72 74  |  part$=.(.(part|
00006320  24 29 2d 33 32 29 0d 2d  28 0e 20 20 20 20 20 20  |$)-32).-(.      |
00006330  20 20 20 cd 0d 2d 32 3e  20 20 20 20 20 20 20 20  |   ..-2>        |
00006340  20 e7 20 70 61 72 74 24  3c 3e 22 20 22 20 80 20  | . part$<>" " . |
00006350  28 70 61 72 74 24 3c 22  41 22 20 84 20 70 61 72  |(part$<"A" . par|
00006360  74 24 3e 22 5a 22 29 20  8c 20 76 61 6c 69 64 25  |t$>"Z") . valid%|
00006370  3d a3 0d 2d 3c 0e 20 20  20 20 20 20 ed 20 49 25  |=..-<.      . I%|
00006380  0d 2d 46 08 20 20 20 cd  0d 2d 50 20 20 20 20 e7  |.-F.   ..-P    .|
00006390  20 76 61 6c 69 64 25 3d  a3 20 8c 20 f2 77 72 6f  | valid%=. . .wro|
000063a0  6e 67 5f 73 6f 75 6e 64  0d 2d 5a 0c fd 20 76 61  |ng_sound.-Z.. va|
000063b0  6c 69 64 25 0d 2d 64 14  77 61 76 65 70 61 73 73  |lid%.-d.wavepass|
000063c0  77 6f 72 64 24 3d 22 22  0d 2d 6e 0f e3 20 49 25  |word$="".-n.. I%|
000063d0  3d 31 20 b8 20 31 30 0d  2d 78 17 20 20 20 70 61  |=1 . 10.-x.   pa|
000063e0  72 74 24 3d c1 69 6e 24  2c 49 25 2c 31 29 0d 2d  |rt$=.in$,I%,1).-|
000063f0  82 2a 20 20 20 e7 20 70  61 72 74 24 3e 3d 22 61  |.*   . part$>="a|
00006400  22 20 8c 20 70 61 72 74  24 3d bd 28 97 28 70 61  |" . part$=.(.(pa|
00006410  72 74 24 29 2d 33 32 29  0d 2d 8c 1b 20 20 20 77  |rt$)-32).-..   w|
00006420  61 76 65 70 61 73 73 77  6f 72 64 24 2b 3d 70 61  |avepassword$+=pa|
00006430  72 74 24 0d 2d 96 08 ed  20 49 25 0d 2d a0 25 f2  |rt$.-... I%.-.%.|
00006440  6d 65 73 73 61 67 65 28  22 4e 65 77 20 50 61 73  |message("New Pas|
00006450  73 77 6f 72 64 20 41 63  63 65 70 74 65 64 22 29  |sword Accepted")|
00006460  0d 2d aa 05 e1 0d 2d b4  05 3a 0d 2d be 14 dd a4  |.-....-..:.-....|
00006470  67 65 74 5f 63 6f 6c 28  58 25 2c 59 25 29 0d 2d  |get_col(X%,Y%).-|
00006480  c8 0c ea 20 76 61 6c 75  65 25 0d 2d d2 39 76 61  |... value%.-.9va|
00006490  6c 75 65 25 3d 3f 28 73  70 72 69 74 65 5f 64 61  |lue%=?(sprite_da|
000064a0  74 61 25 2b 6f 66 66 73  65 74 25 2b 28 28 58 25  |ta%+offset%+((X%|
000064b0  2d 31 29 20 81 20 32 29  2b 28 59 25 2d 31 29 2a  |-1) . 2)+(Y%-1)*|
000064c0  31 32 29 0d 2d dc 12 e7  20 58 25 20 83 20 32 20  |12).-... X% . 2 |
000064d0  3d 20 30 20 8c 0d 2d e6  19 20 20 20 76 61 6c 75  |= 0 ..-..   valu|
000064e0  65 25 3d 76 61 6c 75 65  25 20 81 20 31 36 0d 2d  |e%=value% . 16.-|
000064f0  f0 05 cc 0d 2d fa 19 20  20 20 76 61 6c 75 65 25  |....-..   value%|
00006500  3d 76 61 6c 75 65 25 20  83 20 31 36 0d 2e 04 05  |=value% . 16....|
00006510  cd 0d 2e 0e 0b 3d 76 61  6c 75 65 25 0d 2e 18 05  |.....=value%....|
00006520  3a 0d 2e 22 38 dd f2 67  65 74 5f 73 70 72 69 74  |:.."8..get_sprit|
00006530  65 28 73 70 72 69 74 65  25 2c 6c 65 66 74 5f 58  |e(sprite%,left_X|
00006540  25 2c 62 6f 74 5f 59 25  2c 72 69 67 68 74 5f 58  |%,bot_Y%,right_X|
00006550  25 2c 74 6f 70 5f 59 25  29 0d 2e 2c 14 ec 20 6c  |%,top_Y%)..,.. l|
00006560  65 66 74 5f 58 25 2c 62  6f 74 5f 59 25 0d 2e 36  |eft_X%,bot_Y%..6|
00006570  15 ec 20 72 69 67 68 74  5f 58 25 2c 74 6f 70 5f  |.. right_X%,top_|
00006580  59 25 0d 2e 40 21 ef 20  32 33 2c 32 37 2c 31 2c  |Y%..@!. 23,27,1,|
00006590  73 70 72 69 74 65 25 2c  30 2c 30 2c 30 2c 30 2c  |sprite%,0,0,0,0,|
000065a0  30 2c 30 0d 2e 4a 05 e1  0d 2e 54 05 3a 0d 2e 5e  |0,0..J....T.:..^|
000065b0  29 dd f2 70 6c 6f 74 5f  73 70 72 69 74 65 28 73  |)..plot_sprite(s|
000065c0  70 72 69 74 65 25 2c 6c  65 66 74 5f 58 25 2c 62  |prite%,left_X%,b|
000065d0  6f 74 5f 59 25 29 0d 2e  68 21 ef 20 32 33 2c 32  |ot_Y%)..h!. 23,2|
000065e0  37 2c 30 2c 73 70 72 69  74 65 25 2c 30 2c 30 2c  |7,0,sprite%,0,0,|
000065f0  30 2c 30 2c 30 2c 30 0d  2e 72 18 f0 20 26 45 44  |0,0,0,0..r.. &ED|
00006600  2c 6c 65 66 74 5f 58 25  2c 62 6f 74 5f 59 25 0d  |,left_X%,bot_Y%.|
00006610  2e 7c 05 e1 0d 2e 86 05  3a 0d 2e 90 17 dd f2 73  |.|......:......s|
00006620  68 6f 77 5f 63 75 72 72  65 6e 74 5f 77 61 76 65  |how_current_wave|
00006630  0d 2e 9a 12 f2 67 65 74  5f 77 61 76 65 5f 69 6e  |.....get_wave_in|
00006640  66 6f 0d 2e a4 11 f2 64  69 73 70 6c 61 79 5f 77  |fo.....display_w|
00006650  61 76 65 0d 2e ae 14 f2  73 68 6f 77 5f 61 74 74  |ave.....show_att|
00006660  72 69 62 75 74 65 73 0d  2e b8 05 e1 0d 2e c2 05  |ributes.........|
00006670  3a 0d 2e cc 13 dd f2 67  65 74 5f 77 61 76 65 5f  |:......get_wave_|
00006680  69 6e 66 6f 0d 2e d6 33  ea 20 6f 66 66 73 65 74  |info...3. offset|
00006690  25 2c 49 25 2c 4a 25 2c  4b 25 2c 4d 25 2c 77 69  |%,I%,J%,K%,M%,wi|
000066a0  64 74 68 25 2c 77 61 76  65 24 2c 76 61 6c 75 65  |dth%,wave$,value|
000066b0  25 2c 72 65 70 73 25 0d  2e e0 1f f2 77 61 76 65  |%,reps%.....wave|
000066c0  5f 6f 66 66 73 65 74 28  63 75 72 72 65 6e 74 5f  |_offset(current_|
000066d0  77 61 76 65 25 29 0d 2e  ea 14 77 61 76 65 70 61  |wave%)....wavepa|
000066e0  73 73 77 6f 72 64 24 3d  22 22 0d 2e f4 0c 77 61  |ssword$=""....wa|
000066f0  76 65 24 3d 22 22 0d 2e  fe 17 63 75 72 72 65 6e  |ve$=""....curren|
00006700  74 5f 77 61 76 65 5f 69  25 28 29 3d 30 0d 2f 08  |t_wave_i%()=0./.|
00006710  0e e3 20 49 25 3d 30 20  b8 20 39 0d 2f 12 37 20  |.. I%=0 . 9./.7 |
00006720  20 20 77 61 76 65 70 61  73 73 77 6f 72 64 24 2b  |  wavepassword$+|
00006730  3d bd 28 32 35 35 2d 28  3f 28 77 61 76 65 5f 64  |=.(255-(?(wave_d|
00006740  61 74 61 25 2b 6f 66 66  73 65 74 25 2b 49 25 29  |ata%+offset%+I%)|
00006750  29 29 0d 2f 1c 08 ed 20  49 25 0d 2f 26 23 77 69  |))./... I%./&#wi|
00006760  64 74 68 25 3d 3f 28 77  61 76 65 5f 64 61 74 61  |dth%=?(wave_data|
00006770  25 2b 6f 66 66 73 65 74  25 2b 31 30 29 0d 2f 30  |%+offset%+10)./0|
00006780  1b e7 20 77 69 64 74 68  25 3e 31 36 20 8c 20 77  |.. width%>16 . w|
00006790  69 64 74 68 25 3d 31 36  0d 2f 3a 0e e3 20 49 25  |idth%=16./:.. I%|
000067a0  3d 30 20 b8 20 34 0d 2f  44 37 20 20 20 77 61 76  |=0 . 4./D7   wav|
000067b0  65 5f 61 74 74 72 69 62  75 74 65 73 25 28 49 25  |e_attributes%(I%|
000067c0  29 3d 3f 28 77 61 76 65  5f 64 61 74 61 25 2b 6f  |)=?(wave_data%+o|
000067d0  66 66 73 65 74 25 2b 31  31 2b 49 25 29 0d 2f 4e  |ffset%+11+I%)./N|
000067e0  08 ed 20 49 25 0d 2f 58  1c c8 8e 20 77 61 76 65  |.. I%./X... wave|
000067f0  5f 61 74 74 72 69 62 75  74 65 73 25 28 30 29 20  |_attributes%(0) |
00006800  ca 0d 2f 62 1d 20 20 20  c9 20 30 2c 31 2c 32 2c  |../b.   . 0,1,2,|
00006810  33 2c 34 2c 35 2c 36 2c  37 3a f4 20 6f 6b 0d 2f  |3,4,5,6,7:. ok./|
00006820  6c 1e 20 20 20 7f 3a 77  61 76 65 5f 61 74 74 72  |l.   .:wave_attr|
00006830  69 62 75 74 65 73 25 28  30 29 3d 37 0d 2f 76 05  |ibutes%(0)=7./v.|
00006840  cb 0d 2f 80 1c c8 8e 20  77 61 76 65 5f 61 74 74  |../.... wave_att|
00006850  72 69 62 75 74 65 73 25  28 31 29 20 ca 0d 2f 8a  |ributes%(1) ../.|
00006860  19 20 20 20 c9 20 31 2c  32 2c 33 2c 34 2c 35 2c  |.   . 1,2,3,4,5,|
00006870  36 3a f4 20 6f 6b 0d 2f  94 1e 20 20 20 7f 3a 77  |6:. ok./..   .:w|
00006880  61 76 65 5f 61 74 74 72  69 62 75 74 65 73 25 28  |ave_attributes%(|
00006890  31 29 3d 31 0d 2f 9e 05  cb 0d 2f a8 1c c8 8e 20  |1)=1./..../.... |
000068a0  77 61 76 65 5f 61 74 74  72 69 62 75 74 65 73 25  |wave_attributes%|
000068b0  28 32 29 20 ca 0d 2f b2  34 20 20 20 c9 20 31 2c  |(2) ../.4   . 1,|
000068c0  32 2c 33 2c 34 2c 35 2c  36 2c 37 2c 38 2c 39 2c  |2,3,4,5,6,7,8,9,|
000068d0  31 30 2c 31 31 2c 31 32  2c 31 33 2c 31 34 2c 31  |10,11,12,13,14,1|
000068e0  35 2c 31 36 3a f4 20 6f  6b 0d 2f bc 1f 20 20 20  |5,16:. ok./..   |
000068f0  7f 3a 77 61 76 65 5f 61  74 74 72 69 62 75 74 65  |.:wave_attribute|
00006900  73 25 28 32 29 3d 31 30  0d 2f c6 05 cb 0d 2f d0  |s%(2)=10./..../.|
00006910  1c c8 8e 20 77 61 76 65  5f 61 74 74 72 69 62 75  |... wave_attribu|
00006920  74 65 73 25 28 33 29 20  ca 0d 2f da 13 20 20 20  |tes%(3) ../..   |
00006930  c9 20 31 2c 32 2c 33 3a  f4 20 6f 6b 0d 2f e4 1e  |. 1,2,3:. ok./..|
00006940  20 20 20 7f 3a 77 61 76  65 5f 61 74 74 72 69 62  |   .:wave_attrib|
00006950  75 74 65 73 25 28 33 29  3d 33 0d 2f ee 05 cb 0d  |utes%(3)=3./....|
00006960  2f f8 1c c8 8e 20 77 61  76 65 5f 61 74 74 72 69  |/.... wave_attri|
00006970  62 75 74 65 73 25 28 34  29 20 ca 0d 30 02 13 20  |butes%(4) ..0.. |
00006980  20 20 c9 20 30 2c 31 2c  32 3a f4 20 6f 6b 0d 30  |  . 0,1,2:. ok.0|
00006990  0c 1e 20 20 20 7f 3a 77  61 76 65 5f 61 74 74 72  |..   .:wave_attr|
000069a0  69 62 75 74 65 73 25 28  34 29 3d 31 0d 30 16 05  |ibutes%(4)=1.0..|
000069b0  cb 0d 30 20 08 49 25 3d  30 0d 30 2a 26 76 61 6c  |..0 .I%=0.0*&val|
000069c0  75 65 25 3d 3f 28 77 61  76 65 5f 64 61 74 61 25  |ue%=?(wave_data%|
000069d0  2b 6f 66 66 73 65 74 25  2b 31 36 2b 49 25 29 0d  |+offset%+16+I%).|
000069e0  30 34 05 f5 0d 30 3e 17  20 20 20 77 61 76 65 24  |04...0>.   wave$|
000069f0  2b 3d bd 28 76 61 6c 75  65 25 29 0d 30 48 0c 20  |+=.(value%).0H. |
00006a00  20 20 49 25 2b 3d 31 0d  30 52 29 20 20 20 76 61  |  I%+=1.0R)   va|
00006a10  6c 75 65 25 3d 3f 28 77  61 76 65 5f 64 61 74 61  |lue%=?(wave_data|
00006a20  25 2b 6f 66 66 73 65 74  25 2b 31 36 2b 49 25 29  |%+offset%+16+I%)|
00006a30  0d 30 5c 17 fd 20 49 25  3e 31 32 37 20 84 20 76  |.0\.. I%>127 . v|
00006a40  61 6c 75 65 25 3d 30 0d  30 66 12 4b 25 3d 31 3a  |alue%=0.0f.K%=1:|
00006a50  49 25 3d 31 3a 4a 25 3d  31 0d 30 70 13 c8 95 20  |I%=1:J%=1.0p... |
00006a60  4b 25 3c 3d a9 28 77 61  76 65 24 29 0d 30 7a 1d  |K%<=.(wave$).0z.|
00006a70  20 20 20 76 61 6c 75 65  25 3d 97 28 c1 77 61 76  |   value%=.(.wav|
00006a80  65 24 2c 4b 25 2c 31 29  29 0d 30 84 18 20 20 20  |e$,K%,1)).0..   |
00006a90  e7 20 76 61 6c 75 65 25  3d 97 28 22 20 22 29 20  |. value%=.(" ") |
00006aa0  8c 0d 30 8e 28 20 20 20  20 20 20 49 25 2b 3d 31  |..0.(      I%+=1|
00006ab0  3a e7 20 49 25 3e 77 69  64 74 68 25 20 8c 20 49  |:. I%>width% . I|
00006ac0  25 3d 31 3a 4a 25 2b 3d  31 0d 30 98 0f 20 20 20  |%=1:J%+=1.0..   |
00006ad0  20 20 20 4b 25 2b 3d 31  0d 30 a2 08 20 20 20 cc  |   K%+=1.0..   .|
00006ae0  0d 30 ac 2d 20 20 20 20  20 20 e7 20 76 61 6c 75  |.0.-      . valu|
00006af0  65 25 3e 3d 97 28 22 41  22 29 20 80 20 76 61 6c  |e%>=.("A") . val|
00006b00  75 65 25 3c 3d 97 28 22  5a 22 29 20 8c 0d 30 b6  |ue%<=.("Z") ..0.|
00006b10  2d 20 20 20 20 20 20 20  20 20 63 75 72 72 65 6e  |-         curren|
00006b20  74 5f 77 61 76 65 5f 69  25 28 49 25 2c 4a 25 29  |t_wave_i%(I%,J%)|
00006b30  3d 76 61 6c 75 65 25 2d  36 34 0d 30 c0 2b 20 20  |=value%-64.0.+  |
00006b40  20 20 20 20 20 20 20 49  25 2b 3d 31 3a e7 20 49  |       I%+=1:. I|
00006b50  25 3e 77 69 64 74 68 25  20 8c 20 49 25 3d 31 3a  |%>width% . I%=1:|
00006b60  4a 25 2b 3d 31 0d 30 ca  12 20 20 20 20 20 20 20  |J%+=1.0..       |
00006b70  20 20 4b 25 2b 3d 31 0d  30 d4 0b 20 20 20 20 20  |  K%+=1.0..     |
00006b80  20 cc 0d 30 de 14 20 20  20 20 20 20 20 20 20 72  | ..0..         r|
00006b90  65 70 73 25 3d 30 0d 30  e8 2f 20 20 20 20 20 20  |eps%=0.0./      |
00006ba0  20 20 20 c8 95 20 76 61  6c 75 65 25 3e 3d 97 28  |   .. value%>=.(|
00006bb0  22 30 22 29 20 80 20 76  61 6c 75 65 25 3c 3d 97  |"0") . value%<=.|
00006bc0  28 22 39 22 29 0d 30 f2  1e 20 20 20 20 20 20 20  |("9").0..       |
00006bd0  20 20 20 20 20 72 65 70  73 25 3d 72 65 70 73 25  |     reps%=reps%|
00006be0  2a 31 30 0d 30 fc 24 20  20 20 20 20 20 20 20 20  |*10.0.$         |
00006bf0  20 20 20 72 65 70 73 25  2b 3d 76 61 6c 75 65 25  |   reps%+=value%|
00006c00  2d 97 28 22 30 22 29 0d  31 06 15 20 20 20 20 20  |-.("0").1..     |
00006c10  20 20 20 20 20 20 20 4b  25 2b 3d 31 0d 31 10 26  |       K%+=1.1.&|
00006c20  20 20 20 20 20 20 20 20  20 20 20 20 76 61 6c 75  |            valu|
00006c30  65 25 3d 97 28 c1 77 61  76 65 24 2c 4b 25 2c 31  |e%=.(.wave$,K%,1|
00006c40  29 29 0d 31 1a 0e 20 20  20 20 20 20 20 20 20 ce  |)).1..         .|
00006c50  0d 31 24 1b 20 20 20 20  20 20 20 20 20 e3 20 4d  |.1$.         . M|
00006c60  25 3d 31 20 b8 20 72 65  70 73 25 0d 31 2e 42 20  |%=1 . reps%.1.B |
00006c70  20 20 20 20 20 20 20 20  20 20 20 e7 20 76 61 6c  |           . val|
00006c80  75 65 25 3e 97 28 22 20  22 29 20 8c 20 63 75 72  |ue%>.(" ") . cur|
00006c90  72 65 6e 74 5f 77 61 76  65 5f 69 25 28 49 25 2c  |rent_wave_i%(I%,|
00006ca0  4a 25 29 3d 76 61 6c 75  65 25 2d 36 34 0d 31 38  |J%)=value%-64.18|
00006cb0  2e 20 20 20 20 20 20 20  20 20 20 20 20 49 25 2b  |.            I%+|
00006cc0  3d 31 3a e7 20 49 25 3e  77 69 64 74 68 25 20 8c  |=1:. I%>width% .|
00006cd0  20 49 25 3d 31 3a 4a 25  2b 3d 31 0d 31 42 11 20  | I%=1:J%+=1.1B. |
00006ce0  20 20 20 20 20 20 20 20  ed 20 4d 25 0d 31 4c 12  |        . M%.1L.|
00006cf0  20 20 20 20 20 20 20 20  20 4b 25 2b 3d 31 0d 31  |         K%+=1.1|
00006d00  56 0b 20 20 20 20 20 20  cd 0d 31 60 08 20 20 20  |V.      ..1`.   |
00006d10  cd 0d 31 6a 05 ce 0d 31  74 05 e1 0d 31 7e 05 3a  |..1j...1t...1~.:|
00006d20  0d 31 88 18 dd f2 73 74  6f 72 65 5f 63 75 72 72  |.1....store_curr|
00006d30  65 6e 74 5f 77 61 76 65  0d 31 92 27 ea 20 6f 66  |ent_wave.1.'. of|
00006d40  66 73 65 74 25 2c 49 25  2c 4a 25 2c 77 69 64 74  |fset%,I%,J%,widt|
00006d50  68 25 2c 53 25 2c 46 25  2c 63 6f 75 6e 74 25 0d  |h%,S%,F%,count%.|
00006d60  31 9c 1f f2 77 61 76 65  5f 6f 66 66 73 65 74 28  |1...wave_offset(|
00006d70  63 75 72 72 65 6e 74 5f  77 61 76 65 25 29 0d 31  |current_wave%).1|
00006d80  a6 0e e3 20 49 25 3d 30  20 b8 20 39 0d 31 b0 3d  |... I%=0 . 9.1.=|
00006d90  20 20 20 3f 28 77 61 76  65 5f 64 61 74 61 25 2b  |   ?(wave_data%+|
00006da0  6f 66 66 73 65 74 25 2b  49 25 29 3d 32 35 35 2d  |offset%+I%)=255-|
00006db0  97 28 c1 77 61 76 65 70  61 73 73 77 6f 72 64 24  |.(.wavepassword$|
00006dc0  2c 49 25 2b 31 2c 31 29  29 0d 31 ba 08 ed 20 49  |,I%+1,1)).1... I|
00006dd0  25 0d 31 c4 17 77 69 64  74 68 25 3d 30 3a 53 25  |%.1..width%=0:S%|
00006de0  3d 31 37 3a 46 25 3d 30  0d 31 ce 0e e3 20 49 25  |=17:F%=0.1... I%|
00006df0  3d 31 20 b8 20 38 0d 31  d8 12 20 20 20 e3 20 4a  |=1 . 8.1..   . J|
00006e00  25 3d 31 20 b8 20 31 36  0d 31 e2 27 20 20 20 20  |%=1 . 16.1.'    |
00006e10  20 20 e7 20 63 75 72 72  65 6e 74 5f 77 61 76 65  |  . current_wave|
00006e20  5f 69 25 28 4a 25 2c 49  25 29 3c 3e 30 20 8c 0d  |_i%(J%,I%)<>0 ..|
00006e30  31 ec 1d 20 20 20 20 20  20 20 20 20 20 e7 20 4a  |1..          . J|
00006e40  25 3c 53 25 20 8c 20 53  25 3d 4a 25 0d 31 f6 1d  |%<S% . S%=J%.1..|
00006e50  20 20 20 20 20 20 20 20  20 20 e7 20 4a 25 3e 46  |          . J%>F|
00006e60  25 20 8c 20 46 25 3d 4a  25 0d 32 00 0b 20 20 20  |% . F%=J%.2..   |
00006e70  20 20 20 cd 0d 32 0a 0b  20 20 20 ed 20 4a 25 0d  |   ..2..   . J%.|
00006e80  32 14 08 ed 20 49 25 0d  32 1e 13 e7 20 53 25 3d  |2... I%.2... S%=|
00006e90  31 37 20 8c 20 53 25 3d  31 36 0d 32 28 25 e7 20  |17 . S%=16.2(%. |
00006ea0  46 25 2d 53 25 2b 31 3e  77 69 64 74 68 25 20 8c  |F%-S%+1>width% .|
00006eb0  20 77 69 64 74 68 25 3d  46 25 2d 53 25 2b 31 0d  | width%=F%-S%+1.|
00006ec0  32 32 23 3f 28 77 61 76  65 5f 64 61 74 61 25 2b  |22#?(wave_data%+|
00006ed0  6f 66 66 73 65 74 25 2b  31 30 29 3d 77 69 64 74  |offset%+10)=widt|
00006ee0  68 25 0d 32 3c 0e e3 20  49 25 3d 30 20 b8 20 34  |h%.2<.. I%=0 . 4|
00006ef0  0d 32 46 37 20 20 20 3f  28 77 61 76 65 5f 64 61  |.2F7   ?(wave_da|
00006f00  74 61 25 2b 6f 66 66 73  65 74 25 2b 31 31 2b 49  |ta%+offset%+11+I|
00006f10  25 29 3d 77 61 76 65 5f  61 74 74 72 69 62 75 74  |%)=wave_attribut|
00006f20  65 73 25 28 49 25 29 0d  32 50 08 ed 20 49 25 0d  |es%(I%).2P.. I%.|
00006f30  32 5a 0c 63 6f 75 6e 74  25 3d 30 0d 32 64 0e e3  |2Z.count%=0.2d..|
00006f40  20 49 25 3d 31 20 b8 20  38 0d 32 6e 13 20 20 20  | I%=1 . 8.2n.   |
00006f50  e3 20 4a 25 3d 53 25 20  b8 20 46 25 0d 32 78 4c  |. J%=S% . F%.2xL|
00006f60  20 20 20 20 20 20 3f 28  77 61 76 65 5f 64 61 74  |      ?(wave_dat|
00006f70  61 25 2b 6f 66 66 73 65  74 25 2b 31 36 2b 63 6f  |a%+offset%+16+co|
00006f80  75 6e 74 25 29 3d a4 75  6e 63 6f 6e 76 65 72 74  |unt%)=.unconvert|
00006f90  28 63 75 72 72 65 6e 74  5f 77 61 76 65 5f 69 25  |(current_wave_i%|
00006fa0  28 4a 25 2c 49 25 29 29  0d 32 82 13 20 20 20 20  |(J%,I%)).2..    |
00006fb0  20 20 63 6f 75 6e 74 25  2b 3d 31 0d 32 8c 0b 20  |  count%+=1.2.. |
00006fc0  20 20 ed 20 4a 25 0d 32  96 08 ed 20 49 25 0d 32  |  . J%.2... I%.2|
00006fd0  a0 12 e7 20 63 6f 75 6e  74 25 3c 31 32 37 20 8c  |... count%<127 .|
00006fe0  0d 32 aa 18 20 20 20 e3  20 49 25 3d 63 6f 75 6e  |.2..   . I%=coun|
00006ff0  74 25 20 b8 20 31 32 37  0d 32 b4 2b 20 20 20 20  |t% . 127.2.+    |
00007000  20 20 3f 28 77 61 76 65  5f 64 61 74 61 25 2b 6f  |  ?(wave_data%+o|
00007010  66 66 73 65 74 25 2b 31  36 2b 63 6f 75 6e 74 25  |ffset%+16+count%|
00007020  29 3d 30 0d 32 be 0b 20  20 20 ed 20 49 25 0d 32  |)=0.2..   . I%.2|
00007030  c8 05 cd 0d 32 d2 05 e1  0d 32 dc 05 3a 0d 32 e6  |....2....2..:.2.|
00007040  15 dd f2 73 68 6f 77 5f  61 74 74 72 69 62 75 74  |...show_attribut|
00007050  65 73 0d 32 f0 19 f2 73  68 6f 77 5f 62 6f 6d 62  |es.2...show_bomb|
00007060  5f 61 74 74 72 69 62 75  74 65 73 0d 32 fa 13 f2  |_attributes.2...|
00007070  73 68 6f 77 5f 68 65 69  67 68 74 28 31 29 0d 33  |show_height(1).3|
00007080  04 13 f2 73 68 6f 77 5f  6e 75 6d 5f 62 6f 6d 62  |...show_num_bomb|
00007090  73 0d 33 0e 15 f2 73 68  6f 77 5f 6e 75 6d 5f 72  |s.3...show_num_r|
000070a0  6f 63 6b 65 74 73 0d 33  18 12 f2 73 68 6f 77 5f  |ockets.3...show_|
000070b0  69 6e 69 74 5f 64 69 72  0d 33 22 14 f2 75 70 64  |init_dir.3"..upd|
000070c0  61 74 65 5f 77 61 76 65  5f 62 6f 78 0d 33 2c 05  |ate_wave_box.3,.|
000070d0  e1 0d 33 36 05 3a 0d 33  40 1a dd f2 73 68 6f 77  |..36.:.3@...show|
000070e0  5f 62 6f 6d 62 5f 61 74  74 72 69 62 75 74 65 73  |_bomb_attributes|
000070f0  0d 33 4a 15 ea 20 41 25  2c 56 25 2c 53 53 58 25  |.3J.. A%,V%,SSX%|
00007100  2c 53 53 59 25 0d 33 54  1a 56 25 3d 77 61 76 65  |,SSY%.3T.V%=wave|
00007110  5f 61 74 74 72 69 62 75  74 65 73 25 28 30 29 0d  |_attributes%(0).|
00007120  33 5e 07 ef 20 35 0d 33  68 0e e6 20 30 2c 62 6c  |3^.. 5.3h.. 0,bl|
00007130  61 63 6b 25 0d 33 72 0e  e3 20 41 25 3d 30 20 b8  |ack%.3r.. A%=0 .|
00007140  20 32 0d 33 7c 1b 20 20  20 53 53 58 25 3d 31 38  | 2.3|.   SSX%=18|
00007150  2a 34 2b 31 36 2b 31 38  2a 31 36 2a 34 0d 33 86  |*4+16+18*16*4.3.|
00007160  22 20 20 20 53 53 59 25  3d 57 59 25 2b 32 30 2b  |"   SSY%=WY%+20+|
00007170  41 25 2a 73 70 72 69 74  65 5f 59 25 2b 32 30 0d  |A%*sprite_Y%+20.|
00007180  33 90 11 20 20 20 e6 20  30 2c 62 6c 61 63 6b 25  |3..   . 0,black%|
00007190  0d 33 9a 1c 20 20 20 c8  93 20 c8 90 20 53 53 58  |.3..   .. .. SSX|
000071a0  25 2c 53 53 59 25 2c 33  32 2c 33 32 0d 33 a4 17  |%,SSY%,32,32.3..|
000071b0  20 20 20 ec 20 53 53 58  25 2b 38 2c 53 53 59 25  |   . SSX%+8,SSY%|
000071c0  2b 32 38 0d 33 ae 0f 20  20 20 e6 20 30 2c 72 65  |+28.3..   . 0,re|
000071d0  64 25 0d 33 b8 18 20 20  20 e7 20 28 56 25 20 80  |d%.3..   . (V% .|
000071e0  20 32 5e 41 25 29 3e 30  20 8c 0d 33 c2 12 20 20  | 2^A%)>0 ..3..  |
000071f0  20 20 20 20 f1 20 bd 28  39 31 29 3b 0d 33 cc 08  |    . .(91);.3..|
00007200  20 20 20 cc 0d 33 d6 12  20 20 20 20 20 20 f1 20  |   ..3..      . |
00007210  bd 28 39 32 29 3b 0d 33  e0 08 20 20 20 cd 0d 33  |.(92);.3..   ..3|
00007220  ea 08 ed 20 41 25 0d 33  f4 07 ef 20 34 0d 33 fe  |... A%.3... 4.3.|
00007230  05 87 0d 34 08 05 e1 0d  34 12 05 3a 0d 34 1c 16  |...4....4..:.4..|
00007240  dd f2 74 6f 67 67 6c 65  5f 62 6f 6d 62 5f 74 79  |..toggle_bomb_ty|
00007250  70 65 0d 34 26 0e ea 20  59 25 2c 56 25 2c 57 25  |pe.4&.. Y%,V%,W%|
00007260  0d 34 30 0c 76 61 6c 69  64 25 3d b9 0d 34 3a 1a  |.40.valid%=..4:.|
00007270  56 25 3d 77 61 76 65 5f  61 74 74 72 69 62 75 74  |V%=wave_attribut|
00007280  65 73 25 28 30 29 0d 34  44 1d 59 25 3d 28 4d 59  |es%(0).4D.Y%=(MY|
00007290  25 2d 57 59 25 2d 32 30  29 2f 73 70 72 69 74 65  |%-WY%-20)/sprite|
000072a0  5f 59 25 0d 34 4e 11 e7  20 59 25 3c 30 20 8c 20  |_Y%.4N.. Y%<0 . |
000072b0  59 25 3d 30 0d 34 58 11  e7 20 59 25 3e 32 20 8c  |Y%=0.4X.. Y%>2 .|
000072c0  20 59 25 3d 32 0d 34 62  08 57 25 3d 30 0d 34 6c  | Y%=2.4b.W%=0.4l|
000072d0  0e e3 20 41 25 3d 30 20  b8 20 32 0d 34 76 10 20  |.. A%=0 . 2.4v. |
000072e0  20 20 e7 20 41 25 3d 59  25 20 8c 0d 34 80 24 20  |  . A%=Y% ..4.$ |
000072f0  20 20 20 20 20 e7 20 28  56 25 20 80 20 32 5e 41  |     . (V% . 2^A|
00007300  25 29 3d 30 20 8c 20 57  25 2b 3d 32 5e 41 25 0d  |%)=0 . W%+=2^A%.|
00007310  34 8a 08 20 20 20 cc 0d  34 94 24 20 20 20 20 20  |4..   ..4.$     |
00007320  20 e7 20 28 56 25 20 80  20 32 5e 41 25 29 3e 30  | . (V% . 2^A%)>0|
00007330  20 8c 20 57 25 2b 3d 32  5e 41 25 0d 34 9e 08 20  | . W%+=2^A%.4.. |
00007340  20 20 cd 0d 34 a8 08 ed  20 41 25 0d 34 b2 1a 77  |  ..4... A%.4..w|
00007350  61 76 65 5f 61 74 74 72  69 62 75 74 65 73 25 28  |ave_attributes%(|
00007360  30 29 3d 57 25 0d 34 bc  19 f2 73 68 6f 77 5f 62  |0)=W%.4...show_b|
00007370  6f 6d 62 5f 61 74 74 72  69 62 75 74 65 73 0d 34  |omb_attributes.4|
00007380  c6 05 e1 0d 34 d0 05 3a  0d 34 da 1a dd f2 73 68  |....4..:.4....sh|
00007390  6f 77 5f 68 65 69 67 68  74 28 64 65 6c 65 74 65  |ow_height(delete|
000073a0  25 29 0d 34 e4 15 ea 20  56 25 2c 53 53 58 25 2c  |%).4... V%,SSX%,|
000073b0  53 53 59 25 2c 41 24 0d  34 ee 0d 53 53 58 25 3d  |SSY%,A$.4..SSX%=|
000073c0  31 31 36 32 0d 34 f8 1a  56 25 3d 77 61 76 65 5f  |1162.4..V%=wave_|
000073d0  61 74 74 72 69 62 75 74  65 73 25 28 31 29 0d 35  |attributes%(1).5|
000073e0  02 16 53 53 59 25 3d 34  36 38 2b 28 36 2d 56 25  |..SSY%=468+(6-V%|
000073f0  29 2a 33 36 0d 35 0c 11  e7 20 64 65 6c 65 74 65  |)*36.5... delete|
00007400  25 3d 30 20 8c 0d 35 16  11 20 20 20 e6 20 30 2c  |%=0 ..5..   . 0,|
00007410  62 6c 61 63 6b 25 0d 35  20 1d 20 20 20 c8 93 20  |black%.5 .   .. |
00007420  c8 90 20 53 53 58 25 2c  53 53 59 25 2c 31 31 34  |.. SSX%,SSY%,114|
00007430  2c 33 36 0d 35 2a 05 cc  0d 35 34 0f 20 20 20 e6  |,36.5*...54.   .|
00007440  20 30 2c 72 65 64 25 0d  35 3e 1d 20 20 20 c8 93  | 0,red%.5>.   ..|
00007450  20 c8 90 20 53 53 58 25  2c 53 53 59 25 2c 31 31  | .. SSX%,SSY%,11|
00007460  34 2c 33 36 0d 35 48 11  20 20 20 e6 20 30 2c 77  |4,36.5H.   . 0,w|
00007470  68 69 74 65 25 0d 35 52  0a 20 20 20 ef 20 35 0d  |hite%.5R.   . 5.|
00007480  35 5c 0e 20 20 20 c8 8e  20 56 25 20 ca 0d 35 66  |5\.   .. V% ..5f|
00007490  19 20 20 20 20 20 20 c9  20 31 3a 20 41 24 3d 22  |.      . 1: A$="|
000074a0  20 20 54 4f 50 22 0d 35  70 22 20 20 20 20 20 20  |  TOP".5p"      |
000074b0  c9 20 32 3a 20 41 24 3d  22 20 48 49 47 48 22 20  |. 2: A$=" HIGH" |
000074c0  3a 53 53 58 25 2b 3d 38  0d 35 7a 22 20 20 20 20  |:SSX%+=8.5z"    |
000074d0  20 20 c9 20 33 3a 20 41  24 3d 22 4d 49 44 44 4c  |  . 3: A$="MIDDL|
000074e0  45 22 3a 53 53 58 25 2b  3d 38 0d 35 84 22 20 20  |E":SSX%+=8.5."  |
000074f0  20 20 20 20 c9 20 34 3a  20 41 24 3d 22 4d 49 44  |    . 4: A$="MID|
00007500  44 4c 45 22 3a 53 53 58  25 2b 3d 38 0d 35 8e 19  |DLE":SSX%+=8.5..|
00007510  20 20 20 20 20 20 c9 20  35 3a 20 41 24 3d 22 20  |      . 5: A$=" |
00007520  20 4c 4f 57 22 0d 35 98  22 20 20 20 20 20 20 c9  | LOW".5."      .|
00007530  20 36 3a 20 41 24 3d 22  42 4f 54 54 4f 4d 22 3a  | 6: A$="BOTTOM":|
00007540  53 53 58 25 2b 3d 38 0d  35 a2 08 20 20 20 cb 0d  |SSX%+=8.5..   ..|
00007550  35 ac 15 20 20 20 ec 20  53 53 58 25 2c 53 53 59  |5..   . SSX%,SSY|
00007560  25 2b 33 32 0d 35 b6 0c  20 20 20 f1 20 41 24 3b  |%+32.5..   . A$;|
00007570  0d 35 c0 0a 20 20 20 ef  20 34 0d 35 ca 08 20 20  |.5..   . 4.5..  |
00007580  20 87 0d 35 d4 05 cd 0d  35 de 05 e1 0d 35 e8 05  | ..5....5....5..|
00007590  3a 0d 35 f2 15 dd f2 67  65 74 5f 77 61 76 65 5f  |:.5....get_wave_|
000075a0  68 65 69 67 68 74 0d 35  fc 0b ea 20 59 25 2c 56  |height.5... Y%,V|
000075b0  25 0d 36 06 1a 56 25 3d  77 61 76 65 5f 61 74 74  |%.6..V%=wave_att|
000075c0  72 69 62 75 74 65 73 25  28 31 29 0d 36 10 13 59  |ributes%(1).6..Y|
000075d0  25 3d 28 4d 59 25 2d 34  36 38 29 2f 33 36 0d 36  |%=(MY%-468)/36.6|
000075e0  1a 11 e7 20 59 25 3c 30  20 8c 20 59 25 3d 30 0d  |... Y%<0 . Y%=0.|
000075f0  36 24 11 e7 20 59 25 3e  35 20 8c 20 59 25 3d 35  |6$.. Y%>5 . Y%=5|
00007600  0d 36 2e 0b 59 25 3d 36  2d 59 25 0d 36 38 0e e7  |.6..Y%=6-Y%.68..|
00007610  20 56 25 3c 3e 59 25 20  8c 0d 36 42 16 20 20 20  | V%<>Y% ..6B.   |
00007620  f2 73 68 6f 77 5f 68 65  69 67 68 74 28 30 29 0d  |.show_height(0).|
00007630  36 4c 1d 20 20 20 77 61  76 65 5f 61 74 74 72 69  |6L.   wave_attri|
00007640  62 75 74 65 73 25 28 31  29 3d 59 25 0d 36 56 16  |butes%(1)=Y%.6V.|
00007650  20 20 20 f2 73 68 6f 77  5f 68 65 69 67 68 74 28  |   .show_height(|
00007660  31 29 0d 36 60 05 cd 0d  36 6a 0c 76 61 6c 69 64  |1).6`...6j.valid|
00007670  25 3d b9 0d 36 74 05 e1  0d 36 7e 05 3a 0d 36 88  |%=..6t...6~.:.6.|
00007680  14 dd f2 73 68 6f 77 5f  6e 75 6d 5f 62 6f 6d 62  |...show_num_bomb|
00007690  73 0d 36 92 08 ea 20 56  24 0d 36 9c 1d 56 24 3d  |s.6... V$.6..V$=|
000076a0  c3 28 77 61 76 65 5f 61  74 74 72 69 62 75 74 65  |.(wave_attribute|
000076b0  73 25 28 32 29 29 0d 36  a6 19 e7 20 a9 28 56 24  |s%(2)).6... .(V$|
000076c0  29 3d 31 20 8c 20 56 24  3d 22 30 22 2b 56 24 0d  |)=1 . V$="0"+V$.|
000076d0  36 b0 0e e6 20 30 2c 62  6c 61 63 6b 25 0d 36 ba  |6... 0,black%.6.|
000076e0  22 c8 93 20 c8 90 20 31  31 36 36 2b 33 38 2c 57  |".. .. 1166+38,W|
000076f0  59 25 2d 31 34 2b 32 30  2c 33 32 2c 2d 33 32 0d  |Y%-14+20,32,-32.|
00007700  36 c4 0c e6 20 30 2c 72  65 64 25 0d 36 ce 07 ef  |6... 0,red%.6...|
00007710  20 35 0d 36 d8 17 ec 20  31 31 36 36 2b 33 38 2c  | 5.6... 1166+38,|
00007720  57 59 25 2d 31 34 2b 32  34 0d 36 e2 09 f1 20 56  |WY%-14+24.6... V|
00007730  24 3b 0d 36 ec 07 ef 20  34 0d 36 f6 05 87 0d 37  |$;.6... 4.6....7|
00007740  00 05 e1 0d 37 0a 05 3a  0d 37 14 13 dd f2 67 65  |....7..:.7....ge|
00007750  74 5f 6e 75 6d 5f 62 6f  6d 62 73 0d 37 1e 0b ea  |t_num_bombs.7...|
00007760  20 58 25 2c 56 25 0d 37  28 1a 56 25 3d 77 61 76  | X%,V%.7(.V%=wav|
00007770  65 5f 61 74 74 72 69 62  75 74 65 73 25 28 32 29  |e_attributes%(2)|
00007780  0d 37 32 14 58 25 3d 28  4d 58 25 2d 31 31 36 32  |.72.X%=(MX%-1162|
00007790  29 2f 35 37 0d 37 3c 0c  e7 20 58 25 3d 30 20 8c  |)/57.7<.. X%=0 .|
000077a0  0d 37 46 15 20 20 20 e7  20 56 25 3e 31 20 8c 20  |.7F.   . V%>1 . |
000077b0  56 25 2d 3d 31 0d 37 50  05 cc 0d 37 5a 16 20 20  |V%-=1.7P...7Z.  |
000077c0  20 e7 20 56 25 3c 31 36  20 8c 20 56 25 2b 3d 31  | . V%<16 . V%+=1|
000077d0  0d 37 64 05 cd 0d 37 6e  1a 77 61 76 65 5f 61 74  |.7d...7n.wave_at|
000077e0  74 72 69 62 75 74 65 73  25 28 32 29 3d 56 25 0d  |tributes%(2)=V%.|
000077f0  37 78 13 f2 73 68 6f 77  5f 6e 75 6d 5f 62 6f 6d  |7x..show_num_bom|
00007800  62 73 0d 37 82 0c 76 61  6c 69 64 25 3d b9 0d 37  |bs.7..valid%=..7|
00007810  8c 05 e1 0d 37 96 05 3a  0d 37 a0 16 dd f2 73 68  |....7..:.7....sh|
00007820  6f 77 5f 6e 75 6d 5f 72  6f 63 6b 65 74 73 0d 37  |ow_num_rockets.7|
00007830  aa 0e e6 20 30 2c 62 6c  61 63 6b 25 0d 37 b4 1c  |... 0,black%.7..|
00007840  c8 93 20 c8 90 20 31 31  36 36 2b 33 38 2b 38 2c  |.. .. 1166+38+8,|
00007850  34 34 2c 33 32 2c 33 32  0d 37 be 0c e6 20 30 2c  |44,32,32.7... 0,|
00007860  72 65 64 25 0d 37 c8 07  ef 20 35 0d 37 d2 15 ec  |red%.7... 5.7...|
00007870  20 31 31 36 36 2b 33 38  2b 38 2c 34 30 2b 33 36  | 1166+38+8,40+36|
00007880  0d 37 dc 1d f1 20 c3 28  77 61 76 65 5f 61 74 74  |.7... .(wave_att|
00007890  72 69 62 75 74 65 73 25  28 33 29 29 3b 0d 37 e6  |ributes%(3));.7.|
000078a0  07 ef 20 34 0d 37 f0 05  87 0d 37 fa 05 e1 0d 38  |.. 4.7....7....8|
000078b0  04 05 3a 0d 38 0e 15 dd  f2 67 65 74 5f 6e 75 6d  |..:.8....get_num|
000078c0  5f 72 6f 63 6b 65 74 73  0d 38 18 0b ea 20 58 25  |_rockets.8... X%|
000078d0  2c 56 25 0d 38 22 1a 56  25 3d 77 61 76 65 5f 61  |,V%.8".V%=wave_a|
000078e0  74 74 72 69 62 75 74 65  73 25 28 33 29 0d 38 2c  |ttributes%(3).8,|
000078f0  14 58 25 3d 28 4d 58 25  2d 31 31 36 32 29 2f 35  |.X%=(MX%-1162)/5|
00007900  37 0d 38 36 0c e7 20 58  25 3d 30 20 8c 0d 38 40  |7.86.. X%=0 ..8@|
00007910  15 20 20 20 e7 20 56 25  3e 31 20 8c 20 56 25 2d  |.   . V%>1 . V%-|
00007920  3d 31 0d 38 4a 05 cc 0d  38 54 15 20 20 20 e7 20  |=1.8J...8T.   . |
00007930  56 25 3c 33 20 8c 20 56  25 2b 3d 31 0d 38 5e 05  |V%<3 . V%+=1.8^.|
00007940  cd 0d 38 68 1a 77 61 76  65 5f 61 74 74 72 69 62  |..8h.wave_attrib|
00007950  75 74 65 73 25 28 33 29  3d 56 25 0d 38 72 15 f2  |utes%(3)=V%.8r..|
00007960  73 68 6f 77 5f 6e 75 6d  5f 72 6f 63 6b 65 74 73  |show_num_rockets|
00007970  0d 38 7c 0c 76 61 6c 69  64 25 3d b9 0d 38 86 05  |.8|.valid%=..8..|
00007980  e1 0d 38 90 05 3a 0d 38  9a 13 dd f2 73 68 6f 77  |..8..:.8....show|
00007990  5f 69 6e 69 74 5f 64 69  72 0d 38 a4 0b ea 20 56  |_init_dir.8... V|
000079a0  25 2c 44 25 0d 38 ae 1a  56 25 3d 77 61 76 65 5f  |%,D%.8..V%=wave_|
000079b0  61 74 74 72 69 62 75 74  65 73 25 28 34 29 0d 38  |attributes%(4).8|
000079c0  b8 07 ef 20 35 0d 38 c2  0e e3 20 44 25 3d 30 20  |... 5.8... D%=0 |
000079d0  b8 20 32 0d 38 cc 11 20  20 20 e6 20 30 2c 62 6c  |. 2.8..   . 0,bl|
000079e0  61 63 6b 25 0d 38 d6 20  20 20 20 c8 93 20 c8 90  |ack%.8.    .. ..|
000079f0  20 31 30 30 30 2b 44 25  2a 35 32 2c 34 34 2c 34  | 1000+D%*52,44,4|
00007a00  34 2c 33 32 0d 38 e0 0f  20 20 20 e6 20 30 2c 72  |4,32.8..   . 0,r|
00007a10  65 64 25 0d 38 ea 19 20  20 20 ec 20 31 30 31 34  |ed%.8..   . 1014|
00007a20  2b 44 25 2a 35 32 2c 34  30 2b 33 36 0d 38 f4 0e  |+D%*52,40+36.8..|
00007a30  20 20 20 c8 8e 20 44 25  20 ca 0d 38 fe 2b 20 20  |   .. D% ..8.+  |
00007a40  20 20 20 20 c9 20 30 3a  20 e7 20 56 25 3d 31 20  |    . 0: . V%=1 |
00007a50  8c 20 f1 20 bd 28 39 31  29 3b 20 8b 20 f1 20 bd  |. . .(91); . . .|
00007a60  28 39 32 29 3b 0d 39 08  2b 20 20 20 20 20 20 c9  |(92);.9.+      .|
00007a70  20 31 3a 20 e7 20 56 25  3d 30 20 8c 20 f1 20 bd  | 1: . V%=0 . . .|
00007a80  28 39 31 29 3b 20 8b 20  f1 20 bd 28 39 32 29 3b  |(91); . . .(92);|
00007a90  0d 39 12 2b 20 20 20 20  20 20 c9 20 32 3a 20 e7  |.9.+      . 2: .|
00007aa0  20 56 25 3d 32 20 8c 20  f1 20 bd 28 39 31 29 3b  | V%=2 . . .(91);|
00007ab0  20 8b 20 f1 20 bd 28 39  32 29 3b 0d 39 1c 08 20  | . . .(92);.9.. |
00007ac0  20 20 cb 0d 39 26 08 ed  20 44 25 0d 39 30 07 ef  |  ..9&.. D%.90..|
00007ad0  20 34 0d 39 3a 05 87 0d  39 44 05 e1 0d 39 4e 05  | 4.9:...9D...9N.|
00007ae0  3a 0d 39 58 12 dd f2 67  65 74 5f 69 6e 69 74 5f  |:.9X...get_init_|
00007af0  64 69 72 0d 39 62 0b ea  20 58 25 2c 56 25 0d 39  |dir.9b.. X%,V%.9|
00007b00  6c 1a 56 25 3d 77 61 76  65 5f 61 74 74 72 69 62  |l.V%=wave_attrib|
00007b10  75 74 65 73 25 28 34 29  0d 39 76 14 58 25 3d 28  |utes%(4).9v.X%=(|
00007b20  4d 58 25 2d 31 30 30 30  29 2f 35 32 0d 39 80 0b  |MX%-1000)/52.9..|
00007b30  c8 8e 20 58 25 20 ca 0d  39 8a 0f 20 20 20 c9 20  |.. X% ..9..   . |
00007b40  30 3a 56 25 3d 31 0d 39  94 0f 20 20 20 c9 20 31  |0:V%=1.9..   . 1|
00007b50  3a 56 25 3d 30 0d 39 9e  0d 20 20 20 7f 3a 56 25  |:V%=0.9..   .:V%|
00007b60  3d 32 0d 39 a8 05 cb 0d  39 b2 1a 77 61 76 65 5f  |=2.9....9..wave_|
00007b70  61 74 74 72 69 62 75 74  65 73 25 28 34 29 3d 56  |attributes%(4)=V|
00007b80  25 0d 39 bc 12 f2 73 68  6f 77 5f 69 6e 69 74 5f  |%.9...show_init_|
00007b90  64 69 72 0d 39 c6 0c 76  61 6c 69 64 25 3d b9 0d  |dir.9..valid%=..|
00007ba0  39 d0 05 e1 0d 39 da 05  3a 0d 39 e4 14 dd f2 63  |9....9..:.9....c|
00007bb0  6f 70 79 5f 74 6f 5f 6e  75 6d 62 65 72 0d 39 ee  |opy_to_number.9.|
00007bc0  24 ea 20 6f 66 66 73 65  74 31 25 2c 6f 66 66 73  |$. offset1%,offs|
00007bd0  65 74 32 25 2c 49 25 2c  66 72 6f 6d 25 2c 74 6f  |et2%,I%,from%,to|
00007be0  25 0d 39 f8 17 66 72 6f  6d 25 3d 63 75 72 72 65  |%.9..from%=curre|
00007bf0  6e 74 5f 77 61 76 65 25  0d 3a 02 15 f2 74 6f 5f  |nt_wave%.:...to_|
00007c00  77 68 69 63 68 5f 77 61  76 65 5f 6e 6f 0d 3a 0c  |which_wave_no.:.|
00007c10  1c 6f 66 66 73 65 74 31  25 3d 32 2b 28 66 72 6f  |.offset1%=2+(fro|
00007c20  6d 25 2d 31 29 2a 31 34  34 0d 3a 16 1a 6f 66 66  |m%-1)*144.:..off|
00007c30  73 65 74 32 25 3d 32 2b  28 74 6f 25 2d 31 29 2a  |set2%=2+(to%-1)*|
00007c40  31 34 34 0d 3a 20 14 e3  20 49 25 3d 30 20 b8 20  |144.: .. I%=0 . |
00007c50  31 34 33 20 88 20 34 0d  3a 2a 3a 20 20 20 21 28  |143 . 4.:*:   !(|
00007c60  77 61 76 65 5f 64 61 74  61 25 2b 6f 66 66 73 65  |wave_data%+offse|
00007c70  74 32 25 2b 49 25 29 3d  21 28 77 61 76 65 5f 64  |t2%+I%)=!(wave_d|
00007c80  61 74 61 25 2b 6f 66 66  73 65 74 31 25 2b 49 25  |ata%+offset1%+I%|
00007c90  29 0d 3a 34 08 ed 20 49  25 0d 3a 3e 0c 76 61 6c  |).:4.. I%.:>.val|
00007ca0  69 64 25 3d b9 0d 3a 48  23 f2 6d 65 73 73 61 67  |id%=..:H#.messag|
00007cb0  65 28 22 49 6e 76 61 64  65 72 20 57 61 76 65 20  |e("Invader Wave |
00007cc0  43 6f 70 69 65 64 22 29  0d 3a 52 05 e1 0d 3a 5c  |Copied").:R...:\|
00007cd0  05 3a 0d 3a 66 0a dd f2  6c 6f 67 6f 0d 3a 70 11  |.:.:f...logo.:p.|
00007ce0  ea 20 59 25 2c 53 59 25  2c 6d 61 67 25 0d 3a 7a  |. Y%,SY%,mag%.:z|
00007cf0  0b 6d 61 67 25 3d 34 34  0d 3a 84 0a 53 59 25 3d  |.mag%=44.:..SY%=|
00007d00  34 38 0d 3a 8e 10 59 25  3d 53 59 25 2b 36 38 30  |48.:..Y%=SY%+680|
00007d10  2b 38 0d 3a 98 12 e6 20  30 2c 64 61 72 6b 5f 67  |+8.:... 0,dark_g|
00007d20  72 65 79 25 0d 3a a2 14  fb 20 31 32 38 2b 64 61  |rey%.:... 128+da|
00007d30  72 6b 5f 67 72 65 79 25  0d 3a ac 24 c8 93 20 c8  |rk_grey%.:.$.. .|
00007d40  90 20 31 31 32 2b 31 36  2a 6d 61 67 25 2c 59 25  |. 112+16*mag%,Y%|
00007d50  2c 34 36 30 2c 31 30 32  30 2d 59 25 0d 3a b6 0e  |,460,1020-Y%.:..|
00007d60  e6 20 30 2c 77 68 69 74  65 25 0d 3a c0 21 c8 93  |. 0,white%.:.!..|
00007d70  20 31 31 32 2b 31 36 2a  6d 61 67 25 2c 59 25 2c  | 112+16*mag%,Y%,|
00007d80  34 36 30 2c 31 30 32 30  2d 59 25 0d 3a ca 0c e6  |460,1020-Y%.:...|
00007d90  20 30 2c 72 65 64 25 0d  3a d4 2b f2 70 72 69 6e  | 0,red%.:.+.prin|
00007da0  74 28 31 36 2c 31 36 2c  22 41 4c 49 45 4e 20 49  |t(16,16,"ALIEN I|
00007db0  4e 56 41 53 49 4f 4e 22  2c 35 31 2e 35 2c 30 2e  |NVASION",51.5,0.|
00007dc0  35 29 0d 3a de 1f f2 70  72 69 6e 74 28 33 32 2c  |5).:...print(32,|
00007dd0  31 36 2c 22 57 41 56 45  22 2c 35 37 2c 32 2e 35  |16,"WAVE",57,2.5|
00007de0  29 0d 3a e8 21 f2 70 72  69 6e 74 28 33 32 2c 31  |).:.!.print(32,1|
00007df0  36 2c 22 45 44 49 54 4f  52 22 2c 35 33 2c 34 2e  |6,"EDITOR",53,4.|
00007e00  35 29 0d 3a f2 0d e6 20  30 2c 63 79 61 6e 25 0d  |5).:... 0,cyan%.|
00007e10  3a fc 1a f2 70 72 69 6e  74 28 38 2c 31 36 2c 22  |:...print(8,16,"|
00007e20  42 79 22 2c 35 32 2c 37  29 0d 3b 06 22 f2 70 72  |By",52,7).;.".pr|
00007e30  69 6e 74 28 31 36 2c 31  36 2c 22 41 72 63 2d 57  |int(16,16,"Arc-W|
00007e40  6f 72 6c 64 22 2c 35 35  2c 37 29 0d 3b 10 0e e6  |orld",55,7).;...|
00007e50  20 30 2c 77 68 69 74 65  25 0d 3b 1a 05 e1 0d 3b  | 0,white%.;....;|
00007e60  24 05 3a 0d 3b 2e 1e dd  f2 70 72 69 6e 74 28 58  |$.:.;....print(X|
00007e70  53 25 2c 59 53 25 2c 74  65 78 74 24 2c 58 2c 59  |S%,YS%,text$,X,Y|
00007e80  29 0d 3b 38 07 ef 20 35  0d 3b 42 14 ec 20 58 2a  |).;8.. 5.;B.. X*|
00007e90  31 36 2c 31 30 32 34 2d  59 2a 33 32 0d 3b 4c 1b  |16,1024-Y*32.;L.|
00007ea0  ef 20 32 33 2c 31 37 2c  37 2c 36 2c 58 53 25 3b  |. 23,17,7,6,XS%;|
00007eb0  59 53 25 3b 30 2c 30 0d  3b 56 0c f1 20 74 65 78  |YS%;0,0.;V.. tex|
00007ec0  74 24 3b 0d 3b 60 17 ef  20 32 33 2c 31 37 2c 37  |t$;.;`.. 23,17,7|
00007ed0  2c 36 2c 38 3b 38 3b 30  2c 30 0d 3b 6a 07 ef 20  |,6,8;8;0,0.;j.. |
00007ee0  34 0d 3b 74 05 87 0d 3b  7e 05 e1 0d 3b 88 05 3a  |4.;t...;~...;..:|
00007ef0  0d 3b 92 15 dd f2 75 70  64 61 74 65 5f 77 61 76  |.;....update_wav|
00007f00  65 5f 62 6f 78 0d 3b 9c  08 ea 20 57 24 0d 3b a6  |e_box.;... W$.;.|
00007f10  07 ef 20 35 0d 3b b0 0e  e6 20 30 2c 62 6c 61 63  |.. 5.;... 0,blac|
00007f20  6b 25 0d 3b ba 16 c8 93  20 c8 90 20 38 39 32 2c  |k%.;.... .. 892,|
00007f30  34 38 2c 34 38 2c 33 36  0d 3b c4 0c e6 20 30 2c  |48,48,36.;... 0,|
00007f40  72 65 64 25 0d 3b ce 0f  ec 20 38 39 32 2c 34 38  |red%.;... 892,48|
00007f50  2b 33 32 0d 3b d8 17 57  24 3d c3 28 63 75 72 72  |+32.;..W$=.(curr|
00007f60  65 6e 74 5f 77 61 76 65  25 29 0d 3b e2 23 e7 20  |ent_wave%).;.#. |
00007f70  a9 28 57 24 29 3c 33 20  8c 20 57 24 3d c4 33 2d  |.(W$)<3 . W$=.3-|
00007f80  a9 28 57 24 29 2c 22 30  22 29 2b 57 24 0d 3b ec  |.(W$),"0")+W$.;.|
00007f90  09 f1 20 57 24 3b 0d 3b  f6 07 ef 20 34 0d 3c 00  |.. W$;.;... 4.<.|
00007fa0  05 87 0d 3c 0a 05 e1 0d  3c 14 05 3a 0d 3c 1e 12  |...<....<..:.<..|
00007fb0  dd f2 67 65 74 5f 6e 65  77 5f 77 61 76 65 0d 3c  |..get_new_wave.<|
00007fc0  28 0f e7 20 4d 58 25 3c  39 31 35 20 8c 0d 3c 32  |(.. MX%<915 ..<2|
00007fd0  1a 20 20 20 e7 20 63 75  72 72 65 6e 74 5f 77 61  |.   . current_wa|
00007fe0  76 65 25 3e 31 20 8c 0d  3c 3c 1d 20 20 20 20 20  |ve%>1 ..<<.     |
00007ff0  20 f2 73 74 6f 72 65 5f  63 75 72 72 65 6e 74 5f  | .store_current_|
00008000  77 61 76 65 0d 3c 46 19  20 20 20 20 20 20 f2 73  |wave.<F.      .s|
00008010  68 6f 77 5f 68 65 69 67  68 74 28 30 29 0d 3c 50  |how_height(0).<P|
00008020  1a 20 20 20 20 20 20 63  75 72 72 65 6e 74 5f 77  |.      current_w|
00008030  61 76 65 25 2d 3d 31 0d  3c 5a 1a 20 20 20 20 20  |ave%-=1.<Z.     |
00008040  20 f2 75 70 64 61 74 65  5f 77 61 76 65 5f 62 6f  | .update_wave_bo|
00008050  78 0d 3c 64 1c 20 20 20  20 20 20 f2 73 68 6f 77  |x.<d.      .show|
00008060  5f 63 75 72 72 65 6e 74  5f 77 61 76 65 0d 3c 6e  |_current_wave.<n|
00008070  35 20 20 20 20 20 20 f2  6d 65 73 73 61 67 65 28  |5      .message(|
00008080  22 4e 6f 77 20 41 74 20  54 68 65 20 52 65 71 75  |"Now At The Requ|
00008090  69 72 65 64 20 57 61 76  65 20 4e 75 6d 62 65 72  |ired Wave Number|
000080a0  22 29 0d 3c 78 14 20 20  20 20 20 20 f2 69 6e 66  |").<x.      .inf|
000080b0  6f 5f 6c 69 6e 65 0d 3c  82 12 20 20 20 20 20 20  |o_line.<..      |
000080c0  76 61 6c 69 64 25 3d b9  0d 3c 8c 08 20 20 20 cd  |valid%=..<..   .|
000080d0  0d 3c 96 05 cc 0d 3c a0  1c 20 20 20 e7 20 63 75  |.<....<..   . cu|
000080e0  72 72 65 6e 74 5f 77 61  76 65 25 3c 31 32 38 20  |rrent_wave%<128 |
000080f0  8c 0d 3c aa 1d 20 20 20  20 20 20 f2 73 74 6f 72  |..<..      .stor|
00008100  65 5f 63 75 72 72 65 6e  74 5f 77 61 76 65 0d 3c  |e_current_wave.<|
00008110  b4 19 20 20 20 20 20 20  f2 73 68 6f 77 5f 68 65  |..      .show_he|
00008120  69 67 68 74 28 30 29 0d  3c be 1a 20 20 20 20 20  |ight(0).<..     |
00008130  20 63 75 72 72 65 6e 74  5f 77 61 76 65 25 2b 3d  | current_wave%+=|
00008140  31 0d 3c c8 1a 20 20 20  20 20 20 f2 75 70 64 61  |1.<..      .upda|
00008150  74 65 5f 77 61 76 65 5f  62 6f 78 0d 3c d2 1c 20  |te_wave_box.<.. |
00008160  20 20 20 20 20 f2 73 68  6f 77 5f 63 75 72 72 65  |     .show_curre|
00008170  6e 74 5f 77 61 76 65 0d  3c dc 35 20 20 20 20 20  |nt_wave.<.5     |
00008180  20 f2 6d 65 73 73 61 67  65 28 22 4e 6f 77 20 41  | .message("Now A|
00008190  74 20 54 68 65 20 52 65  71 75 69 72 65 64 20 57  |t The Required W|
000081a0  61 76 65 20 4e 75 6d 62  65 72 22 29 0d 3c e6 14  |ave Number").<..|
000081b0  20 20 20 20 20 20 f2 69  6e 66 6f 5f 6c 69 6e 65  |      .info_line|
000081c0  0d 3c f0 12 20 20 20 20  20 20 76 61 6c 69 64 25  |.<..      valid%|
000081d0  3d b9 0d 3c fa 08 20 20  20 cd 0d 3d 04 05 cd 0d  |=..<..   ..=....|
000081e0  3d 0e 05 e1 0d 3d 18 05  3a 0d 3d 22 12 dd f2 74  |=....=..:.="...t|
000081f0  6f 5f 6c 6f 77 65 72 28  41 24 29 0d 3d 2c 0e ea  |o_lower(A$).=,..|
00008200  20 6c 65 6e 25 2c 20 4d  24 0d 3d 36 09 42 24 3d  | len%, M$.=6.B$=|
00008210  22 22 0d 3d 40 0a 6c 65  6e 25 3d 31 0d 3d 4a 12  |"".=@.len%=1.=J.|
00008220  c8 95 20 6c 65 6e 25 3c  3d a9 28 41 24 29 0d 3d  |.. len%<=.(A$).=|
00008230  54 15 20 20 20 4d 24 3d  c1 41 24 2c 6c 65 6e 25  |T.   M$=.A$,len%|
00008240  2c 31 29 0d 3d 5e 2d 20  20 20 e7 20 4d 24 3e 3d  |,1).=^-   . M$>=|
00008250  22 41 22 20 80 20 4d 24  3c 3d 22 5a 22 20 8c 20  |"A" . M$<="Z" . |
00008260  4d 24 3d bd 28 97 28 4d  24 29 20 2b 20 33 32 29  |M$=.(.(M$) + 32)|
00008270  0d 3d 68 0f 20 20 20 42  24 3d 42 24 2b 4d 24 0d  |.=h.   B$=B$+M$.|
00008280  3d 72 0e 20 20 20 6c 65  6e 25 2b 3d 31 0d 3d 7c  |=r.   len%+=1.=||
00008290  05 ce 0d 3d 86 05 e1 0d  ff                       |...=.....|
00008299