- .db 16,7 ;invulnerable....:.......:
- .db %10000000,%01010100 ; █ O O O
- .db %10011110,%00101010 ; █ OOOO O O O
- .db %10111000,%00010101 ; █ OOO O O O
- .db %10111111,%10101010 ; █ OOOOOOO O O O
- .db %10111111,%00010101 ; █ OOOOOOO O O O
- .db %10111000,%00101010 ; █ OOO O O O
- .db %10011110,%01010100 ; █ OOOO O O O
-
-;---------------------------- texts -------------------------------------------
-
-txt_about: .db "v0.9.94 ","by Shiar "
- .db "(ICQ#43840958)",0
-txt_1player: .db "1 PLAYER",0
-txt_2players: .db "2 PLAYERS",0
-txt_level: .db "LEVEL ",0
-txt_gameover: .db "GAME OVER!",0
-txt_lives: .db "Lx0?",0
-
-;---------------------------- save data ---------------------------------------
-
-stored_data_start:
-
-PutWhere .dw GRAPH_MEM ;where to put the wide sprites
-
-timer .db $00 ;frame counter
-level .db $00 ;level number
-levelp .dw level01 ;pointer to level data
-
-eventenemy .db $02 ;enemy type
-eventtime .db $15 ;enemy frequency
-eventleft .db $00 ;nr. of enemies still to come
-nextevent .db $50 ;time to next event
-
-score .dw $0000
-
-your_pickup .db $00
-your_occ .db $00 ;0=normal 1..16=exploding
-your_inv .db $50 ;invincibility left
-your_armor .db $13 ;HP left
-lives .db $04 ;
-x .db $16 ;x-pos
-y .db $46 ;think about it..
-hp .db $00 ;hitpoints left
-
-torp_occ .db $00 ;torp.state: 0=unavail 1=avail 2=presnt
-torp_pos .dw $0000 ;torpedo position (x,y)
-
-ybullets .dw 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ;10 x (state,x,y)
-ebullets .dw 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ;10 x (state,x,y)
-
-nrenemies = 10
-enemies .dw $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
- .dw $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
- .dw $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
- .dw $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
-
-enemiesxtra .dw $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
- .dw $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
- .dw $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
- .dw $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
-add2enemy = 40
-
-; %111111 (HP left) 11 (00=no enemy 01=exploding 10=normal 11=moving)
-; %11111111 (ship type or explosion frame) %11111111 (x) %11111111 (y)
-
-;---------------------------- enemy data --------------------------------------
-
-sprites:
- .db $00
- .db spr_enemy01-spr_enemy00
- .db spr_enemy02-spr_enemy00
- .db spr_enemy03-spr_enemy00
- .db spr_enemy04-spr_enemy00
- .db spr_enemy05-spr_enemy00
- .db spr_enemy06-spr_enemy00
- .db spr_enemy07-spr_enemy00
+ .db 16,7 ;laser .......:.......:
+ .db %10000000 ;█ ▒
+ .db %10001010 ;█ █ █ ▒▒▒ ▒
+ .db %11101100 ;███ ██ ▒▒▒ ▒
+ .db %11110111 ;████ ███████▒▒▒█▒
+ .db %11101100 ;███ ██ ▒▒▒ ▒
+ .db %10001010 ;█ █ █ ▒▒▒ ▒
+ .db %10000000 ;█ ▒
+ .db 4
+ .db %00000000
+ .db %00000000
+ .db %00000000
+ .db %11111111
+spr_icon05:
+ .db 16,7 ;multiple.......:.......:
+ .db %10000011 ;█ ███ ▒
+ .db %10000001 ;█ ████ ██ ▒
+ .db %10000001 ;█ ████ ▒
+ .db %10000011 ;█ ███ ▒
+ .db %10011000 ;█ ██ ▒
+ .db %10111100 ;█ ████ ██ ██▒
+ .db %10011000 ;█ ██ ▒
+ .db 6
+ .db %10000000
+ .db %11100110
+ .db %11100000
+ .db %10000000
+ .db %00000000
+ .db %11000011
+spr_dividerline:
+ .db 8,7
+ .db 128,128,128,128,128,128,128 ;128 = %10000000
+
+;---------------------------- texts -----------------------------------------
+
+txt_email: .db "www.shiar.org ",127 ;title screen
+ .db " shiar0@hotmail.com",0
+_txt_email = $3A01 ;$3A1E=just email
+txt_about: .db "v0.99.99 ",127," by Shiar",0 ;right behind txt_email
+_txt_about = $3321
+txt_menu1: .db "NEW GAME",0
+txt_menu2: .db "CONTINUE",0
+
+txt_difhardcore:.db "Hardcore!",0
+txt_difnormal: .db "Normal",0
+txt_updouble: .db "Up Double",0
+txt_tailbeam: .db "Tail Beam",0
+
+txt_level: .db "LEVEL ",0 ;new level screen
+txt_lives: .db "Lx0",0
+txt_savekey: .db "Press [F1] to save",0
+
+txt_gameover: .db "GAME OVER!",0 ;game over screen
+txt_score: .db "Score",0
+txt_hiscore: .db "Hiscore",0
+
+txt_pause: .db " ",6,"/",7," ",$1C,"contrast; "
+ .db "F1",$1C,"B",$CF,5,"W Mode",0
+_txt_pause = $020B
+txt_pressenter: .db "Enter to continue",0 ;pause
+_txt_pressenter = $0201
+#ifdef teacherkey
+txt_teacher: .db "(2",Lpi,"*.98)/sin 13",0 ;teacher
+txt_teacherans: .db Lneg,"14.6549373495",0
+#endif
+
+;---------------------------- save data -------------------------------------
+
+storehi_start:
+hiscore .dw 0 ;default hiscore
+hiname .db "shiar.99",0 ; " " name
+storehi_end:
+
+invertmode: cpl ;/or a ;saves B<>W mode setting cpl
+
+storesave_start: ;--SAVED GAME-- defs:
+your_ship .dw spr_ship01 ;your sprite (^invertmode^) sprs1
+level .db 1 ;level number 1
+levelp .dw level00 ;pointer to level data lev00
+pickuptimer .db 4 ;counts when to place a pickup 4
+your_extramode .db 1 ;you have tail or double 1
+your_score .dw 0 ;current score 0
+your_pickup .db 0 ;pickups already picked up 0
+your_occ .db 0 ;0=normal 1..16=exploding 0
+your_shield .db 0 ;invincibility left 0
+your_armor .db 24 ;HP left 24
+your_lives .db 3 ;lives left 3
+your_weapon .db 17 ;current weapon upgrade 0
+your_multiples .db 0 ;multiples present 0
+your_extra .db 0 ;extra beam present 0
+hardcore .db 0 ;hardcore mode if non-0 0
+storesave_end:
+
+time2invert: .db 0 ;time until b<>w switch (0 at startup)
+
+;------------------------------ levels data ---------------------------------
+
+;format:boss: [moveType] [enemyType]
+; @level: [nr.dif.enemies]x [enemy nr]
+; [min. enemy frequency] [enemy frequency max.inc]
+; [next lvl (=nrenemies+4)] [level_info: 000000 1:ceiling 1:ground]
+; [tunnel size] [groundtype] [stars1] [stars2]
+;efrequency must be odd if halfluring!
+
+ .db 0 ;storyline ID
+levelstart: ;[y-pos] [x-pos] [text,0] [SFX lines; 0=more text] [-1=end]
+ .db 25,33,"Imperial ships have",0,0
+ .db 31,9,"been sent to intercept you",0,31-25+6,-1
+
+ .db 30
+level00:.db 5,3,5,3,2,2
+ .db 28,73,13
+ .db %00,0,1,1
+
+ .db 31 ;boss for level01
+level01:.db 2,3,5 ;enemies
+ .db 26,70,20
+ .db %00,0,1,1
+
+ .db 32
+level02:.db 3,3,4,5
+ .db 20,60,60
+ .db %00,0,1,1
+
+ .db 33
+level03:.db 4,4,5,6,7
+ .db 17,40,75
+ .db %00,0,1,1
+
+ .db 0
+ .db 1,1,"Long-Range scanners are ",
+ .db "showing",0,0
+ .db 8,1,"lots of enemy vessels ",
+ .db "advancing fast.",0,8-1+6
+ .db 24,1,"I'm changing course to a",
+ .db " nearby ",0,0
+ .db 31,1,"asteroid belt and try to",0,0
+ .db 38,1,"lose them inthere.",0,38-24+6,-1
+
+;---- approaching asteroid belt
+ .db 34
+level04:.db 5,8,8,9,11,12
+ .db 17,27,70
+ .db %00,0,1,1
+
+;---- inside
+ .db 35
+level05:.db 7,10,11,9,11,12,12,14
+ .db 12,24,80
+ .db %00,0,1,1
+
+ .db 36
+level06:.db 10,10,11,12,12,14,13,13,14,15,15
+ .db 7,18,180
+ .db %00,0,1,1
+
+;out
+ .db 37
+level07:.db 4,16,17,18,6
+ .db 22,29,62
+ .db %00,0,1,1 ;-1=%11111111=line
+
+ .db 38
+level08:.db 5,16,17,18,19,19
+ .db 20,38,57
+ .db %00,0,1,1
+
+ .db 39
+level09:.db 3,19,20,21
+ .db 19,63,57
+ .db %00,0,1,1
+
+ .db 40
+level10:.db 7,22,23,24,24,24,25,26
+ .db 20,22,63
+ .db %00,0,1,1
+
+;endlevel
+ .db 41
+level11:.db 1,26
+ .db 20,20,80
+ .db %00,0,1,1
+
+ .db 0,1,1,"That`s all folks...",0,0
+ .db 20,50,"for now...",0,20-0+6,-1
+
+endlevel = 12
+
+pickupfreq = 19
+
+;------------------------------ enemies -------------------------------------
+
+;format: [HP64] [000000:HP 00:occ] [sprite] [xpos] [appearance(ypos)]
+; [movetype] [time2fire] [firefreq] [firetype]
+;occ: 00=no enemy; 01=exploding (sprite=frame); 10=pickup; 11=enemy
+;appearances: 1=random; 2=lure; 3=halflure
+;movetypes: 1=updown; 2=1/4x; 3=1/2x; 4=3/4x; 5=3/2x; 6=2x; 7=ylure50%;
+; 8=ylure; 9=ylure50%; 10=x+y-lure 50%; 11=-1/2x; 12=-1x
+;firetypes: 1=normal; 6=aiming; 7=triple; 8=double; 9=quad; 10=dquad; 11=ran
+
+enemyspecs: ;10 bytes/enemy | max.enemies <64 | sprites use <768 bytes
+;0-1=pickups
+ .db 0,%00000010,spr_enemyP1&255,spr_enemyP1/256,128,2,03, 0, 0,1 ;pickup
+ .db 0,%00000110,spr_enemyP2&255,spr_enemyP2/256,128,2,03, 0, 0,1 ;bigpickup
+;2-7=basic enemies , , , , , , , ,
+ .db 0,%00001011,spr_enemyE0&255,spr_enemyE0/256,128,1,00,12, 0,1 ;intro
+ .db 0,%00100011,spr_enemyE1&255,spr_enemyE1/256,128,1,00,10, 0,1 ;weak
+ .db 0,%01100011,spr_enemyE4&255,spr_enemyE4/256,128,1,03, 6,50,1 ;slow
+ .db 0,%01001011,spr_enemyE2&255,spr_enemyE2/256,128,1,00, 1, 0,1
+ .db 0,%01011011,spr_enemyE3&255,spr_enemyE3/256,128,3,00,19,39,8 ;heavy
+ .db 0,%01010011,spr_enemyE5&255,spr_enemyE5/256,128,3,05, 1, 0,1 ;fast
+;8-10=backwards enemies, , , , , , , ,
+ .db 0,%00111011,spr_enemyB1&255,spr_enemyB1/256,000,3,11,19,92,1
+ .db 0,%01011011,spr_enemyB2&255,spr_enemyB2/256,000,1,12,11,45,1
+ .db 0,%01101011,spr_enemyB3&255,spr_enemyB3/256,000,1,11,10,41,8 ;small
+;11-15=asteroid , , , , , , , ,
+ .db 0,%01001011,spr_enemyA1&255,spr_enemyA1/256,128,1,04, 0, 0,1
+ .db 0,%01111011,spr_enemyA2&255,spr_enemyA2/256,128,1,00, 0, 0,1
+ .db 0,%10110011,spr_enemyA3&255,spr_enemyA3/256,128,1,05, 0, 0,1
+ .db 1,%00010011,spr_enemyA4&255,spr_enemyA4/256,128,1,03, 0, 0,1 ;slow+hard
+ .db 0,%01111011,spr_enemyA4&255,spr_enemyA4/256,128,1,06, 0, 0,1
+;16-21=improved enemies, , , , , , , ,
+ .db 0,%10010011,spr_enemyG1&255,spr_enemyG1/256,128,3,00, 3,40,1
+ .db 0,%10111011,spr_enemyG2&255,spr_enemyG2/256,128,3,00, 1,36,1
+ .db 0,%01100011,spr_enemyG5&255,spr_enemyG5/256,128,1,01, 9,52,1 ;updown
+ .db 0,%11110011,spr_enemyG3&255,spr_enemyG3/256,128,3,04, 7,99,7 ;3x
+ .db 1,%01101011,spr_enemyG4&255,spr_enemyG4/256,128,2,01,17, 0,7 ;updown3x
+ .db 1,%00010011,spr_enemyG6&255,spr_enemyG6/256,128,2,07,62,60,8 ;lure
+;22-26=hi-speed , , , , , , , ,
+ .db 1,%00010011,spr_enemyS2&255,spr_enemyS2/256,128,2,05, 3,32,8 ;fast
+ .db 0,%11111011,spr_enemyS1&255,spr_enemyS1/256,128,3,07, 2,28,1 ;lure
+ .db 1,%00101011,spr_enemyS4&255,spr_enemyS4/256,128,3,06, 0, 0,1 ;vfast+nofire
+ .db 1,%01110011,spr_enemyS3&255,spr_enemyS3/256,128,1,07, 1,20,8 ;lure
+ .db 0,%11011011,spr_enemyS2&255,spr_enemyS2/256,128,2,01, 3,7,11 ;updown+ran
+;27-28=unused, , , , , , , , ,
+ .db 0,%00000011,spr_enemy00&255,spr_enemy00/256,128,2,03, 0, 0,1 ;27
+ .db 0,%00000011,spr_enemy00&255,spr_enemy00/256,128,2,03, 0, 0,1 ;28
+;29=final boss' enemy
+ .db 0,%11110011,spr_enemyM1&255,spr_enemyM1/256,128,3,01, 0, 0,1 ;lure
+bossenemy = 29
+;30-34=first bosses , , , , , , , ,
+ .db 2,%01000111,spr_boss01 &255,spr_boss01 /256,127,1,09,35,50,7 ;triple
+ .db 2,%01010011,spr_boss02 &255,spr_boss02 /256,127,1,09,20,12,1 ;small
+ .db 2,%01111011,spr_boss03 &255,spr_boss03 /256,127,1,09,15,11,8 ;normal
+ .db 2,%10011111,spr_boss04 &255,spr_boss04 /256,127,3,10,10,11,1 ;moving
+ .db 1,%11111011,spr_boss05 &255,spr_boss05 /256,127,2,10, 1, 4,1 ;weak+rapidfire
+;35-36=asteroid bosses , , , , , , , ,
+ .db 4,%00010111,spr_bossA1 &255,spr_bossA1 /256,127,1,10,36,14,6
+ .db 4,%01101111,spr_bossA1 &255,spr_bossA1 /256,127,2,10,28,12,6
+;37-41=big bosses , , , , , , , ,
+ .db 4,%00010111,spr_boss07 &255,spr_boss07 /256,127,3,08,31, 8,7
+ .db 5,%00101011,spr_boss06 &255,spr_boss06 /256,127,3,08,13, 7,7
+ .db 6,%10001111,spr_boss08 &255,spr_boss08 /256,127,1,08,18, 8,9 ;quad
+ .db 7,%00101011,spr_boss09 &255,spr_boss09 /256,127,1,08,21, 9,10 ;6x
+ .db 9,%11011011,spr_boss09 &255,spr_boss09 /256,127,1,08,12,11,12 ;enemies