; Phantom Star ; by ; Joe Pemberton ; ; This source is public domain. Feel free to modify it or use it however you ; like, but please credit me. ; ;========================= Lookup tables for enemy sprites ================ enemysprtable: enemysprtable0: .dw enemyspr0 .dw enemyspr0 .dw enemyspr0 .dw enemyspr0 enemysprtable1: .dw enemyspr1d ;displayed fourth .dw enemyspr1c ;displayed third .dw enemyspr1b ;displayed second .dw enemyspr1a ;note - this sprite is displayed first! enemysprtable2: .dw enemyspr1a .dw enemyspr1b .dw enemyspr1c .dw enemyspr1d enemysprtable3: .dw enemyspr2a .dw enemyspr2a .dw enemyspr2b .dw enemyspr2b enemysprtable4: .dw enemyspr3a .dw enemyspr3b .dw enemyspr3c .dw enemyspr3d enemysprtable5: .dw enemyspr4a .dw enemyspr4a .dw enemyspr4a .dw enemyspr4a enemysprtable6: .dw enemyspr5a .dw enemyspr5a .dw enemyspr5a .dw enemyspr5a enemysprtable7: .dw enemyspr6a .dw enemyspr6a .dw enemyspr6a .dw enemyspr6a enemysprtable8: .dw boss0spr0 .dw boss0spr1 .dw boss0spr2 .dw boss0spr3 enemysprtable9: .dw boss1spr0 .dw boss1spr0 .dw boss1spr0 .dw boss1spr0 enemysprtable10: .dw enemyspr7a .dw enemyspr7a .dw enemyspr7a .dw enemyspr7a enemysprtable11: .dw bigbossspr0 .dw bigbossspr0 .dw bigbossspr0 .dw bigbossspr0 enemysprtable12: .dw enemyspr8a .dw enemyspr8a .dw enemyspr8a .dw enemyspr8a enemysprtable13: .dw enemyspr9a .dw enemyspr9a .dw enemyspr9a .dw enemyspr9a explosionsprtable: .dw explosionspr0 .dw explosionspr1 .dw explosionspr2 .dw explosionspr3 ;======================= enemy sprites =========================== enemySPR0: .db 7 .db %00000010 .db %00000110 .db %00011111 .db %11110010 .db %00011111 .db %00000110 .db %00000010 enemyspr1a: .db 8 .db %00111100 .db %01100110 .db %11100111 .db %11100111 .db %11100111 .db %11100111 .db %01100110 .db %00111100 enemyspr1b: .db 8 .db %00111100 .db %01111110 .db %11110011 .db %11100011 .db %11000111 .db %11001111 .db %01111110 .db %00111100 enemyspr1c: .db 8 .db %00111100 .db %01111110 .db %11111111 .db %10000001 .db %10000001 .db %11111111 .db %01111110 .db %00111100 enemyspr1d: .db 8 .db %00111100 .db %01111110 .db %11001111 .db %11000111 .db %11100011 .db %11110011 .db %01111110 .db %00111100 enemyspr2a: .db 8 .db %00011000 .db %00100100 .db %01100010 .db %01110010 .db %01111110 .db %01111110 .db %00111100 .db %00011000 enemyspr2b: .db 7 .db %00000000 .db %00111100 .db %01100110 .db %11110011 .db %11111111 .db %01111110 .db %00111100 enemyspr3a: .db 11 .db %00011000 .db %00100100 .db %00111100 .db %01111110 .db %11100111 .db %11100111 .db %11100111 .db %01111110 .db %00100100 .db %00100100 .db %00011000 enemyspr3b: .db 11 .db %00011000 .db %00111100 .db %00100100 .db %01100110 .db %11111111 .db %11111111 .db %11111111 .db %01100110 .db %00100100 .db %00111100 .db %00011000 enemyspr3c: .db 11 .db %00011000 .db %00100100 .db %00100100 .db %01111110 .db %11100111 .db %11100111 .db %11100111 .db %01111110 .db %00111100 .db %00100100 .db %00011000 enemyspr3d: .db 11 .db %00011000 .db %00111100 .db %00100100 .db %01100110 .db %11100111 .db %11111111 .db %11100111 .db %01100110 .db %00100100 .db %00111100 .db %00011000 enemyspr4a: .db 7 .db %11000110 .db %11101110 .db %01111100 .db %00111000 .db %01111100 .db %11101110 .db %11000110 enemyspr5a: .db 5 .db %00111000 .db %01111100 .db %01101100 .db %01111100 .db %00111000 enemyspr6a: .db 8 .db %01111110 .db %11111111 .db %00011000 .db %00111100 .db %00111100 .db %00011000 .db %11111111 .db %01111110 boss0spr0: .db 14 .db %00010000 .db %01111010 .db %11111101 .db %11111101 .db %11111101 .db %11111101 .db %11111101 .db %11111101 .db %11111101 .db %11111101 .db %11111101 .db %11111101 .db %01111010 .db %00010000 boss0spr1: .db 14 .db %00010000 .db %01110110 .db %11110011 .db %11110011 .db %11110011 .db %11110011 .db %11110011 .db %11110011 .db %11110011 .db %11110011 .db %11110011 .db %11110011 .db %01110110 .db %00010000 boss0spr2: .db 14 .db %00001000 .db %01101110 .db %11001111 .db %11001111 .db %11001111 .db %11001111 .db %11001111 .db %11001111 .db %11001111 .db %11001111 .db %11001111 .db %11001111 .db %01101110 .db %00001000 boss0spr3: .db 14 .db %00001000 .db %01011110 .db %10111111 .db %10111111 .db %10111111 .db %10111111 .db %10111111 .db %10111111 .db %10111111 .db %10111111 .db %10111111 .db %10111111 .db %01011110 .db %00001000 boss1spr0: .db 16 .db %00001111 .db %00111111 .db %11111111 .db %00111111 .db %00011110 .db %00011110 .db %00001110 .db %00111110 .db %00111110 .db %00001110 .db %00011110 .db %00011110 .db %00111111 .db %11111111 .db %00111111 .db %00001111 bigbossspr0: .db 26 .db %00111100 .db %11111111 .db %01111111 .db %00011111 .db %00001101 .db %00001101 .db %00011111 .db %00001111 .db %00001101 .db %00001101 .db %00111111 .db %01111111 .db %11111111 .db %11111111 .db %01111111 .db %00111111 .db %00001101 .db %00001101 .db %00001111 .db %00011111 .db %00001101 .db %00001101 .db %00011111 .db %01111111 .db %11111111 .db %00111100 enemyspr7a: .db 8 .db %01111110 .db %00000100 .db %00000110 .db %00001111 .db %00001111 .db %00000110 .db %00000100 .db %01111110 enemyspr8a: .db 5 .db %00110110 .db %00111110 .db %00011100 .db %00111110 .db %00110110 enemyspr9a: .db 7 .db %00010000 .db %00111000 .db %01101100 .db %11010110 .db %01101100 .db %00111000 .db %00010000 explosionspr0: .db 8 .db %00111000 .db %01110111 .db %11111101 .db %11011110 .db %00111100 .db %01111100 .db %01110110 .db %00011000 explosionspr1: .db 7 .db %00001000 .db %00111100 .db %01111111 .db %00111100 .db %11101110 .db %01111110 .db %00111000 explosionspr2: .db 6 .db %00000000 .db %00011100 .db %01111110 .db %01101110 .db %00111000 .db %00001000 explosionspr3: .db 5 .db %00000000 .db %00000000 .db %00111000 .db %00101000 .db %00010000 ;=========================== enemy path/sprite lookup tables ====================== enemy_shotAI_table: .dw enemyshotAI0 ;normal shot, random .dw enemyshotAI1 ;normal shot .dw enemyshotAI2 ;powerful normal shot, random .dw enemyshotAI3 ;powerful normal shot .dw enemyshotAI4 ;random shot, random .dw enemyshotAI5 ;random shot .dw enemyshotAI6 ;powerful random shot, random .dw enemyshotAI7 ;powerful random shot .dw enemyshotAI8 ;aimed shot, random .dw enemyshotAI9 ;aimed shot .dw enemyshotAIboss ;2 aimed shots .dw enemyshotAIboss2 ;3 aimed shots .dw enemyshotAI10 ;mostly aimed shot, random .dw enemyshotAI11 ;mostly aimed shot enemy_startpath_table: .dw enemystartpath0 .dw enemystartpath1 .dw enemystartpath2 .dw enemystartpath3 .dw enemystartpath4 .dw enemyspdown1 .dw enemyspdown2 .dw enemyspdown3 .dw enemyspup1 .dw enemyspup2 .dw enemyspup3 .dw enemyspzigzag .dw enemyspupleft1 .dw enemyspupleft2 .dw enemyspupleft3 .dw enemyspdownleft1 .dw enemyspdownleft2 .dw enemyspdownleft3 enemy_path_table: .dw ep_cc_circle_large .dw ep_cc_circle_med .dw ep_c_circle_large .dw ep_c_circle_med .dw ep_cc_oval .dw ep_cc_square .dw ep_cc_square_smooth .dw ep_staystill .dw ep_cc_diamond .dw ep_c_diamond .dw ep_updown .dw ep_boss_updown .dw ep_figure8 .dw ep_forward explosionpathtable: .dw explosionpath0 .dw explosionpath1 .dw explosionpath2 .dw explosionpath3 ;================ start paths ; start paths are different from normal paths in that they must be ; preceded by a binary mask that limits the length of the path. ; enemystartpath0: .db %00000000 ;mask .db -1,0 ;x,y enemystartpath1: .db %00000000 .db -2,0 enemystartpath2: .db %00000000 .db -3,0 enemystartpath3: .db %00000001 .db -2,0 .db -2,1 enemystartpath4: .db %00000001 .db -2,0 .db -2,-1 enemyspdown1: .db %00000000 .db 0,1 enemyspdown2: .db %00000000 .db 0,2 enemyspdown3: .db %00000000 .db 0,3 enemyspup1: .db %00000000 .db 0,-1 enemyspup2: .db %00000000 .db 0,-2 enemyspup3: .db %00000000 .db 0,-3 enemyspzigzag: .db %00000111 .db -2,-2 .db -2,-2 .db -2,-2 .db -2,-2 .db -2,2 .db -2,2 .db -2,2 .db -2,2 enemyspupleft1: .db %00000000 .db -1,-1 enemyspupleft2: .db %00000000 .db -2,-2 enemyspupleft3: .db %00000000 .db -3,-3 enemyspdownleft1: .db %00000000 .db -1,1 enemyspdownleft2: .db %00000000 .db -2,2 enemyspdownleft3: .db %00000000 .db -3,3 ;==================== explosions paths ; these paths must never be used for enemies, since they are not ; preceded by the length of the path. ; explosionpath0: .db -1,0 .db -1,0 .db -1,0 .db 0,1 explosionpath1: .db -1,0 .db -1,0 .db -1,0 .db 0,-1 explosionpath2: .db -1,0 .db -1,1 .db -1,0 .db 0,1 explosionpath3: .db -1,0 .db -1,-1 .db -1,0 .db 0,-1 ;===================== normal paths ; these paths must be preceded by the number of x,y pairs minus 1 (byte) ; ; ;a large sized circle, going counterclockwise, starting at the top (90 degrees) ; ; 36x36 ; ep_cc_circle_large: .db 31 ;32 x,y pairs .db -3,0 .db -3,0 .db -3,3 .db -3,3 .db -3,3 .db -3,3 .db 0,3 .db 0,3 .db 0,3 .db 0,3 .db 3,3 .db 3,3 .db 3,3 .db 3,3 .db 3,0 .db 3,0 .db 3,0 .db 3,0 .db 3,-3 .db 3,-3 .db 3,-3 .db 3,-3 .db 0,-3 .db 0,-3 .db 0,-3 .db 0,-3 .db -3,-3 .db -3,-3 .db -3,-3 .db -3,-3 .db -3,0 .db -3,0 ;a medium sized circle, going counterclockwise, starting at the top (90 degrees) ; ; 24x24 ; ep_cc_circle_med: .db 31 ;32 x,y pairs .db -2,0 .db -2,0 .db -2,2 .db -2,2 .db -2,2 .db -2,2 .db 0,2 .db 0,2 .db 0,2 .db 0,2 .db 2,2 .db 2,2 .db 2,2 .db 2,2 .db 2,0 .db 2,0 .db 2,0 .db 2,0 .db 2,-2 .db 2,-2 .db 2,-2 .db 2,-2 .db 0,-2 .db 0,-2 .db 0,-2 .db 0,-2 .db -2,-2 .db -2,-2 .db -2,-2 .db -2,-2 .db -2,0 .db -2,0 ;a large sized circle, going clockwise, starting at the bottom (270 degrees) ep_c_circle_large: .db 31 ;32 x,y pairs .db -3,0 .db -3,0 .db -3,-3 .db -3,-3 .db -3,-3 .db -3,-3 .db 0,-3 .db 0,-3 .db 0,-3 .db 0,-3 .db 3,-3 .db 3,-3 .db 3,-3 .db 3,-3 .db 3,0 .db 3,0 .db 3,0 .db 3,0 .db 3,3 .db 3,3 .db 3,3 .db 3,3 .db 0,3 .db 0,3 .db 0,3 .db 0,3 .db -3,3 .db -3,3 .db -3,3 .db -3,3 .db -3,0 .db -3,0 ;a medium sized circle, going clockwise, starting at the bottom (270 degrees) ep_c_circle_med: .db 31 ;32 x,y pairs .db -2,0 .db -2,0 .db -2,-2 .db -2,-2 .db -2,-2 .db -2,-2 .db 0,-2 .db 0,-2 .db 0,-2 .db 0,-2 .db 2,-2 .db 2,-2 .db 2,-2 .db 2,-2 .db 2,0 .db 2,0 .db 2,0 .db 2,0 .db 2,2 .db 2,2 .db 2,2 .db 2,2 .db 0,2 .db 0,2 .db 0,2 .db 0,2 .db -2,2 .db -2,2 .db -2,2 .db -2,2 .db -2,0 .db -2,0 ;a large oval, going counterclockwise ep_cc_oval: .db 59 ;60 x,y pairs .db -3,1 .db -2,2 .db -2,2 .db -1,3 .db 0,3 .db 0,3 .db 0,3 .db 0,3 .db 0,3 .db 0,3 .db 0,3 .db 0,3 .db 0,3 .db 0,3 .db 0,3 .db 0,3 .db 0,3 .db 0,3 .db 0,3 .db 0,3 .db 0,3 .db 0,3 .db 0,3 .db 0,3 .db 0,3 .db 0,3 .db 1,3 .db 2,2 .db 2,2 .db 3,1 .db 3,-1 .db 2,-2 .db 2,-2 .db 1,-3 .db 0,-3 .db 0,-3 .db 0,-3 .db 0,-3 .db 0,-3 .db 0,-3 .db 0,-3 .db 0,-3 .db 0,-3 .db 0,-3 .db 0,-3 .db 0,-3 .db 0,-3 .db 0,-3 .db 0,-3 .db 0,-3 .db 0,-3 .db 0,-3 .db 0,-3 .db 0,-3 .db 0,-3 .db 0,-3 .db -1,-3 .db -2,-2 .db -2,-2 .db -3,-1 ep_cc_square: .db 19 .db -3,0 .db -3,0 .db -3,0 .db -3,0 .db -3,0 .db 0,3 .db 0,3 .db 0,3 .db 0,3 .db 0,3 .db 3,0 .db 3,0 .db 3,0 .db 3,0 .db 3,0 .db 0,-3 .db 0,-3 .db 0,-3 .db 0,-3 .db 0,-3 ep_cc_square_smooth: .db 31 .db -2,0 .db -2,0 .db -2,0 .db -2,0 .db -2,0 .db -2,0 .db -2,0 .db -2,0 .db 0,2 .db 0,2 .db 0,2 .db 0,2 .db 0,2 .db 0,2 .db 0,2 .db 0,2 .db 2,0 .db 2,0 .db 2,0 .db 2,0 .db 2,0 .db 2,0 .db 2,0 .db 2,0 .db 0,-2 .db 0,-2 .db 0,-2 .db 0,-2 .db 0,-2 .db 0,-2 .db 0,-2 .db 0,-2 ;this path stays still :) ep_staystill: .db 0 ;1 x,y pair .db 0,0 ep_cc_diamond: .db 31 .db -2,2 .db -2,2 .db -2,2 .db -2,2 .db -2,2 .db -2,2 .db -2,2 .db -2,2 .db 2,2 .db 2,2 .db 2,2 .db 2,2 .db 2,2 .db 2,2 .db 2,2 .db 2,2 .db 2,-2 .db 2,-2 .db 2,-2 .db 2,-2 .db 2,-2 .db 2,-2 .db 2,-2 .db 2,-2 .db -2,-2 .db -2,-2 .db -2,-2 .db -2,-2 .db -2,-2 .db -2,-2 .db -2,-2 .db -2,-2 ep_c_diamond: .db 31 .db -2,2 .db -2,2 .db -2,2 .db -2,2 .db -2,2 .db -2,2 .db -2,2 .db -2,2 .db -2,-2 .db -2,-2 .db -2,-2 .db -2,-2 .db -2,-2 .db -2,-2 .db -2,-2 .db -2,-2 .db 2,-2 .db 2,-2 .db 2,-2 .db 2,-2 .db 2,-2 .db 2,-2 .db 2,-2 .db 2,-2 .db 2,2 .db 2,2 .db 2,2 .db 2,2 .db 2,2 .db 2,2 .db 2,2 .db 2,2 ep_updown: .db 15 .db 0,-2 .db 0,-2 .db 0,-2 .db 0,-3 .db 0,-2 .db 0,-2 .db 0,-2 .db 0,-3 .db 0,2 .db 0,2 .db 0,2 .db 0,3 .db 0,2 .db 0,2 .db 0,2 .db 0,3 ep_figure8: .db 71 .db -3,0 .db -3,0 .db -3,1 .db -3,1 .db -3,2 .db -2,2 .db -2,3 .db -1,3 .db -1,3 .db 0,3 .db 0,3 .db 1,3 .db 1,3 .db 2,3 .db 2,2 .db 3,2 .db 3,1 .db 3,1 .db 3,0 .db 3,0 .db 3,1 .db 3,1 .db 3,2 .db 2,2 .db 2,3 .db 1,3 .db 1,3 .db 0,3 .db 0,3 .db -1,3 .db -1,3 .db -2,3 .db -2,2 .db -3,2 .db -3,1 .db -3,1 .db -3,0 .db -3,0 .db -3,-1 .db -3,-1 .db -3,-2 .db -2,-2 .db -2,-3 .db -1,-3 .db -1,-3 .db 0,-3 .db 0,-3 .db 1,-3 .db 1,-3 .db 2,-3 .db 2,-2 .db 3,-2 .db 3,-1 .db 3,-1 .db 3,0 .db 3,0 .db 3,-1 .db 3,-1 .db 3,-2 .db 2,-2 .db 2,-3 .db 1,-3 .db 1,-3 .db 0,-3 .db 0,-3 .db -1,-3 .db -1,-3 .db -2,-3 .db -2,-2 .db -3,-2 .db -3,-1 .db -3,-1 ep_boss_updown: .db 43 .db 0,3 .db 0,3 .db 0,3 .db 0,3 .db 0,3 .db 0,3 .db 0,3 .db 0,3 .db 0,3 .db 0,3 .db 0,3 .db 0,3 .db 0,3 .db 0,3 .db 0,3 .db 0,3 .db 0,3 .db 0,3 .db 0,3 .db 0,3 .db 0,3 .db 0,3 .db 0,-3 .db 0,-3 .db 0,-3 .db 0,-3 .db 0,-3 .db 0,-3 .db 0,-3 .db 0,-3 .db 0,-3 .db 0,-3 .db 0,-3 .db 0,-3 .db 0,-3 .db 0,-3 .db 0,-3 .db 0,-3 .db 0,-3 .db 0,-3 .db 0,-3 .db 0,-3 .db 0,-3 .db 0,-3 ep_forward: .db 52 .db -2,0 .db -2,0 .db -2,0 .db -2,0 .db -2,0 .db -2,0 .db -2,0 .db -2,0 .db -2,0 .db -2,0 .db -2,0 .db -2,0 .db -2,0 .db -2,0 .db -2,0 .db -2,0 .db -2,0 .db -2,0 .db -2,0 .db -2,0 .db -2,0 .db -2,0 .db -2,0 .db -2,0 .db -2,0 .db -2,0 .db -2,0 .db -2,0 .db -2,0 .db -2,0 .db -2,0 .db -2,0 .db -2,0 .db -2,0 .db -2,0 .db -2,0 .db -2,0 .db -2,0 .db -2,0 .db -2,0 .db -2,0 .db -2,0 .db -2,0 .db -2,0 .db -2,0 .db -2,0 .db -2,0 .db -2,0 .db -2,0 .db -2,0 .db -2,0 .db -2,0 .db 104,0 ; ================= enemy shot sprites ================ enemyshotspr: enemyshotspr0: .db 3 .db %00111100 .db %01111110 .db %00111100 enemyshotspr1: .db 4 .db %00011100 .db %00111110 .db %00111110 .db %00011100 enemyshotspr2: .db 2 .db %01111111 .db %01111111 enemyshotspr3: .db 3 .db %00001110 .db %00011111 .db %00001110