; 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. ; #include "levelequ.z80" mylevel: #ifdef TI83P .db $BB,$6D #endif ret .db "PSv0.3" myleveldesc: .db "The built-in levels",0 .dw 5000 .db "JOE P.",0,0 .dw 4000 .db "JOE P.",0,0 .dw 3000 .db "JOE P.",0,0 .dw 2000 .db "JOE P.",0,0 .dw 1000 .db "JOE P.",0,0 .dw 500 .db "JOE P.",0,0 .dw 1200 ;game timer SET_HEALTH(3) SET_SHOT_TYPE(SHOT_NORMAL_R) SET_SHOT_RATE(10) SET_HEIGHT(8) SET_SPRITE(E_TIE) SET_PATH(SQUARE_SMOOTH_CC) SET_START_PATH(SP_LEFT2, 13) INSTALL_ROW(8, 10, 96+8, 10, 0, 0) INSTALL_ROW(8, 10, 96+8+10, 10, 0, 0) WAIT_NUMENEMY(0) SET_START_PATH(SP_LEFT2, 17) INSTALL_ROW(8, 10, 96+8, 10, 0, 0) INSTALL_ROW(7, 15, 96+8+10, 10, 0, 0) SET_SYNC(31) WAIT_NUMENEMY(8) SYNC() INSTALL_ROW(8, 10, 96+8+20, 10, 0, 0) INSTALL_ROW(7, 15, 96+8+30, 10, 0, 0) WAIT_NUMENEMY(0) SET_SHOT_RATE(6) SET_PATH(OVAL_CC) SET_START_PATH(SP_DOWNLEFT2, 15) SET_PATH_TIMER(4) ;start them going down on the oval INSTALL_ROW(8, -10, 96+8, -8, 8, 4) SET_TIMER(10) SET_START_PATH(SP_UPLEFT2, 7) SET_PATH_TIMER(34) ;start them going up on the oval INSTALL_ROW(7, 96+8, 96+8, 8, 8, 4) WAIT_NUMENEMY(0) SET_START_PATH(SP_LEFT2, 25) SET_PATH(UPDOWN) INSTALL_ROW(8, 16+8, 96+8, 10, 0, 0) INSTALL_ROW(8, 16+8, 96+8+10, 10, 0, 0) SET_TIMER(10) SET_SHOT_TYPE(SHOT_BOSS) SET_SHOT_RATE(10) SET_FLAG(%01000000) SET_HEALTH(80) SET_PATH(BOSS_UPDOWN) SET_START_PATH(SP_LEFT1, 16) SET_PATH_TIMER(11) SET_HEIGHT(16) SET_SPRITE(E_BOSS1) INSTALL_ONE(48,96+8) SET_FLAG(%00000000) WAIT_NUMENEMY(0) LEVEL_END() ;end of 1st level SET_HEALTH(8) SET_SHOT_TYPE(SHOT_NORMAL_R) SET_SHOT_RATE(11) SET_START_PATH(SP_DOWNLEFT2, 12) SET_PATH(MEDIUM_CIRCLE_CC) SET_PATH_TIMER(2) SET_HEIGHT(8) SET_SPRITE(E_NORMAL) INSTALL_ROW(8, -14, 96+8, -8, 8, 4) INSTALL_ROW(8, 16, 96+8, -8, 8, 4) INSTALL_ROW(8, 46, 96+8, -8, 8, 4) WAIT_NUMENEMY(0) SET_HEALTH(22) SET_SHOT_RATE(9) SET_START_PATH(SP_LEFT1, 11) SET_PATH(STAY_STILL) ;stay still SET_HEIGHT(11) SET_SPRITE(E_ORBIT) SET_SHOT_TYPE(SHOT_BADAIM) INSTALL_ROW(4, 10, 96+8, 23, 0, 0) SET_HEALTH(8) SET_SHOT_TYPE(SHOT_NORMAL_R) SET_SHOT_RATE(11) SET_START_PATH(SP_LEFT3, 21) SET_PATH(MEDIUM_CIRCLE_CC) SET_HEIGHT(8) SET_SPRITE(E_NORMAL) INSTALL_ROW(8, 24, 96+8+33, 0, 12, 4) SET_PATH(MEDIUM_CIRCLE_C) INSTALL_ROW(8, 70, 96+8+33, 0, 12, 4) WAIT_NUMENEMY(0) SET_HEALTH(18) SET_PATH(DIAMOND_CC) SET_START_PATH(SP_ZIGZAG, 28) SET_SHOT_RATE(7) INSTALL_ROW(7, 12, 96+8+4+12, 10, 0, 0) INSTALL_ROW(7, 12, 96+8+4+12+12, 10, 0, 0) SET_SHOT_TYPE(SHOT_BOSS) SET_SHOT_RATE(10) SET_FLAG(%01000000) SET_HEALTH(100) SET_PATH(BOSS_UPDOWN) SET_START_PATH(SP_LEFT1, 16) SET_PATH_TIMER(11) SET_HEIGHT(18) SET_SPRITE(E_BOSS1) INSTALL_ONE(48,96+8) SET_FLAG(%00000000) SET_VAR(VAR2, 2) SET_VAR(VAR1, 96+8+4) SET_HEALTH(8) SET_SHOT_TYPE(SHOT_NORMAL_R) SET_START_PATH(SP_ZIGZAG, 28) SET_PATH(DIAMOND_CC) SET_HEIGHT(8) SET_SPRITE(E_NORMAL) bossloop1: bossloop1fixed .equ bossloop1-mylevel SET_TIMER(96) GET_NUMENEMY(VAR3) GOTO_GT(VAR3, 10, bossloop1fixed) ;loop back if there's more than 10 GOTO_EQ(VAR3, 0, endloop1fixed) ;quit if there are no more enemies GET_NUMBOSS(VAR4) GOTO_EQ(VAR4, 0, endloop1fixed) ;quit out if the boss is dead ADD_VAR(VAR2, 10) ;increment the counter GOTO_EQ(VAR2, 82, endloop1fixed) ;only make 7 enemies INSTALL_ONE_VAR(VAR2, VAR1) GOTO(bossloop1fixed) endloop1: endloop1fixed .equ endloop1-mylevel WAIT_NUMENEMY(0) LEVEL_END() ;end of 2nd level SET_HEIGHT(8) SET_HEALTH(12) SET_SHOT_TYPE(SHOT_RANDOM_R) SET_SHOT_RATE(14) SET_PATH(SQUARE_CC) SET_SPRITE(E_BUBBLE) SET_START_PATH(SP_LEFT2,5) INSTALL_ROW(8, 10,96+8, 10, 0, 0) SET_TIMER(15) SET_START_PATH(SP_LEFT2,10) INSTALL_ROW(8, 10,96+8, 10, 0, 0) SET_TIMER(15) SET_START_PATH(SP_LEFT2,15) INSTALL_ROW(8, 10,96+8, 10, 0, 0) WAIT_NUMENEMY(0) SET_PATH(LARGE_CIRCLE_C) SET_START_PATH(SP_LEFT3, 10) INSTALL_ROW(8, 70, 96+8, 0, 12, 4) SET_HEALTH(30) SET_PATH(MEDIUM_CIRCLE_C) SET_HEIGHT(5) SET_SPRITE(E_SMALLCIRCLE) SET_SHOT_TYPE(SHOT_AIMED_R) SET_SHOT_RATE(8) INSTALL_ROW(8, 65, 96+8, 0, 12, 4) WAIT_NUMENEMY(0) SET_START_PATH(SP_LEFT2,25) SET_PATH(SQUARE_CC) SET_HEIGHT(5) INSTALL_ROW(8, 10, 96+8+10+10, 10, 0, 0) SET_HEIGHT(8) SET_HEALTH(12) SET_SHOT_TYPE(SHOT_RANDOM_R) SET_SHOT_RATE(14) SET_SPRITE(E_BUBBLE) INSTALL_ROW(8, 10,96+8+10, 10, 0, 0) SET_SHOT_TYPE(SHOT_BOSS) SET_SHOT_RATE(10) SET_FLAG(%01000000) SET_HEALTH(130) SET_PATH(BOSS_UPDOWN) SET_START_PATH(SP_LEFT1, 16) SET_PATH_TIMER(11) SET_HEIGHT(16) SET_SPRITE(E_BOSS2) INSTALL_ONE(48,96+8) SET_FLAG(%00000000) WAIT_NUMENEMY(0) LEVEL_END() ;end of 3rd level WAIT_NUMENEMY(0) SET_HEIGHT(7) SET_PATH(SQUARE_SMOOTH_CC) SET_SPRITE(E_X) SET_SHOT_TYPE(SHOT_AIMED_R) SET_SHOT_RATE(8) SET_HEALTH(25) SET_START_PATH(SP_UP2, 46) INSTALL_ROW(8, 96+8, 90, 10, 0, 0) SET_TIMER(7) SET_START_PATH(SP_DOWN2, 39) INSTALL_ROW(8, 0, 80, -10, 0, 0) WAIT_NUMENEMY(0) SET_HEALTH(40) SET_HEIGHT(5) SET_SPRITE(E_SMALLX) SET_START_PATH(SP_UP2, 47) INSTALL_ROW(8, 96+8, 70, 10, 0, 0) SET_TIMER(8) SET_HEALTH(25) SET_HEIGHT(7) SET_SPRITE(E_X) SET_START_PATH(SP_DOWN2, 39) INSTALL_ROW(8, 0, 60, -10, 0, 0) SET_SHOT_TYPE(SHOT_BOSS) SET_SHOT_RATE(10) SET_FLAG(%01000000) SET_HEALTH(150) SET_PATH(BOSS_UPDOWN) SET_START_PATH(SP_LEFT1, 16) SET_PATH_TIMER(11) SET_HEIGHT(16) SET_SPRITE(E_BOSS2) INSTALL_ONE(48,96+8) SET_START_PATH(SP_LEFT1, 26) INSTALL_ONE(48,96+8+10) SET_FLAG(%00000000) WAIT_NUMENEMY(0) LEVEL_END() ;end of 4th level SET_HEIGHT(8) SET_PATH(FIGURE8) SET_START_PATH(SP_LEFT2, 14) SET_SPRITE(E_ROTATER_C) SET_HEALTH(24) SET_SHOT_TYPE(SHOT_RANDOM_R) SET_SHOT_RATE(4) INSTALL_ROW(18, 10,96+8, 0, 8, 4) WAIT_NUMENEMY(0) SET_PATH(FORWARD) SET_START_PATH(SP_LEFT2, -1) SET_SPRITE(E_FIGHTER) SET_HEALTH(16) INSTALL_ROW(7, 10, 96+8, 0, 10, 5) INSTALL_ROW(7, 94, 96+8, 0, 10, 5) INSTALL_ROW(7, 48, 96+8, 0, 10, 5) WAIT_NUMENEMY(0) INSTALL_ROW(7, 71, 96+8, 0, 10, 5) INSTALL_ROW(7, 25, 96+8, 0, 10, 5) SET_SHOT_TYPE(SHOT_BOSS) SET_SHOT_RATE(10) SET_FLAG(%01000000) SET_HEALTH(150) SET_PATH(BOSS_UPDOWN) SET_START_PATH(SP_LEFT1, 16) SET_PATH_TIMER(11) SET_HEIGHT(16) SET_SPRITE(E_BOSS2) INSTALL_ONE(48,96+8) SET_START_PATH(SP_LEFT1, 36) INSTALL_ONE(48,96+8+20) SET_FLAG(%00000000) WAIT_NUMENEMY(0) LEVEL_END() ;end of 5th level SET_SHOT_RATE(4) SET_SHOT_TYPE(SHOT_BADAIM_R) SET_HEIGHT(7) SET_HEALTH(55) SET_START_PATH(SP_LEFT1, -1) SET_PATH(STAY_STILL) SET_SPRITE(E_DIAMOND) SET_VAR(VAR1, 0) randloop: randloopfixed .equ randloop-mylevel RAND(VAR2, 40+8, 30) RAND(VAR3, 10, 80) INSTALL_ONE_VAR(VAR3, VAR2) SET_TIMER(15) ADD_VAR(VAR1, 1) GOTO_NEQ(VAR1, 14, randloopfixed) WAIT_NUMENEMY(6) SET_SHOT_TYPE(SHOT_AIMED) SET_START_PATH(SP_LEFT2, 11) SET_HEIGHT(11) SET_SPRITE(E_ORBIT) INSTALL_ROW(6, 10, 96+8, 16, 0, 0) SET_SHOT_TYPE(SHOT_BOSS_STRONG) SET_SHOT_RATE(7) SET_FLAG(%01000000) SET_HEALTH(250) SET_PATH(BOSS_UPDOWN) SET_START_PATH(SP_LEFT1, 16) SET_PATH_TIMER(11) SET_HEIGHT(26) SET_SPRITE(E_BIGBOSS) INSTALL_ONE(44,96+8) SET_FLAG(%00000000) WAIT_NUMENEMY(0) GAME_OVER()