'CYBERNOID, ED. 2022-12-28, BY NATHANIEL BABIAK, ADDITIONAL CREDITS SHOWN IN GAME. 'GAME OPTIONS. VOLUMES MAY RANGE FROM 0 (OFF) TO 15 (FULL). GLOBAL P_SFX_VOL, P_SFX_VOL_MAX, P_MUSIC_VOL, P_MUSIC_VOL_MAX P_SFX_VOL = 15 P_SFX_VOL_MAX = 15 P_MUSIC_VOL = 7 P_MUSIC_VOL_MAX = 15 'STARTING ROOM_ID MAY RANGE FROM 0 TO 11, AND UP TO 71(!) IN FINAL VERSION. GLOBAL R_ID0, R_ID_MAX R_ID0 = 0 R_ID_MAX = 11 REPEAT '_RESULT (USED BY SUBPROGRAMS TO RETURN A _RESULT). GLOBAL _RESULT 'HUD. GLOBAL H_LIVES, H_SCORE, H_AAA, H_BBB, H_SPCWPN_TYPE, H_LEN, H_BEG 'BINARY SEARCH (SINCE LOWRES NX LACKS INDIRECTION/POINTERS). DIM GLOBAL B_0(31), B_1(31), B_2(31), B_3(31), B_4(31) 'SPRITES. SUFFIX A, B, AND C VARY DEPENDING ON OBJECT_ID. SEE EOF FOR DESC. GLOBAL S_MGMT$, S_SHIP, S_UNDEAD, S_NULL, S_SN, S_MOVE, S_NUM2ASC$, S_ALLOC DIM GLOBAL S_RX(63), S_RY(63), S_VX(63), S_VY(63), S_A(63), S_B(63), S_C(63) 'TITLE CARDS. GLOBAL T_PY,T_XA,T_YA,T_FR2DEG, T_SL2DEG, T_FR2DEG, T_XS, T_YS, T_PAUSE DIM GLOBAL T_4D2CH(35), T_FX(63), T_FY(63), T_FZ(63) 'PLAY MUSIC (ADDRESS) AND SFX (LEVEL MUSIC FREE-TRACK LOOKUP). GLOBAL P_SRC, P_SFX_VOL, P_MUSIC_VOL DIM GLOBAL P_PN2VC(63) 'ROOMS. GLOBAL R_ID0, R_ID1, R_STEP, R_GAMEOVER DIM GLOBAL R_DIR2PX(3), R_DIR2PY(3) DIM GLOBAL R_I2SRC(104), R_I2CX(104), R_I2CY(104), R_I2DIR(104) 'UNZIP (HTTPS://LOWRESNX.INUTILIS.COM/TOPIC.PHP?ID=2347). GLOBAL U_SRC,U_SBIT,U_P2,U_GAM_0,U_G2P3,U_1BITS,U_2BITS,U_3BITS,U_EXTND,U_P3 UNTIL 1 CALL MAIN END SUB MAIN P_SRC = $C000 GAMEPAD 1 CALL TITLE_INIT CALL GAME_INIT DO USE_TITLE = 1 IF USE_TITLE = 1 THEN CALL TITLE_MAIN IF USE_TITLE <> 1 THEN CALL PLAY_LOAD( ROM( 14 ) ) IF USE_TITLE <> 1 THEN CALL PLAY_MUSIC( 0 ) CALL GAME_MAIN LOOP SPRITE 10 PAL 1 SIZE 1 SPRITE 10, 70, 40, 66 SPRITE 11 PAL 7 SIZE 1 SPRITE 11, 70, 80, 68 SPRITE 12 PAL 4 SIZE 1 SPRITE 12, 90, 40, 72 END SUB SUB TITLE_INIT RESTORE TITLE_INI1 TITLE_INI1: READ T_4D2CH(4*0.00), T_4D2CH(4*0.25), T_4D2CH(4*0.50), T_4D2CH(4*0.75) DATA 192 , 192 , 193 , 194 READ T_4D2CH(4*1.00), T_4D2CH(4*1.25), T_4D2CH(4*1.50), T_4D2CH(4*1.75) DATA 194 , 195 , 195 , 196 READ T_4D2CH(4*2.00), T_4D2CH(4*3.00), T_4D2CH(4*4.00), T_4D2CH(4*5.00) DATA 197 , 198 , 199 , 200 READ T_4D2CH(4*6.00), T_4D2CH(4*7.00), T_4D2CH(4*8.00) DATA 201 , 202 , 203 FOR J = 2.00 TO 8.00 T_4D2CH( 4 * ( J + 0.25 ) ) = T_4D2CH( 4 * J ) T_4D2CH( 4 * ( J + 0.50 ) ) = T_4D2CH( 4 * J ) T_4D2CH( 4 * ( J + 0.75 ) ) = T_4D2CH( 4 * J ) NEXT J FOR J = 0 TO 63 T_FZ( J ) = RND( 72 ) T_FX( J ) = ( RND( 160 ) - 80 ) * T_FZ( J ) T_FY( J ) = ( RND( 128 ) - 64 ) * T_FZ( J ) NEXT J END SUB SUB TITLE_MAIN FOR J = 0 TO 63 SPRITE J PAL 1 SIZE 0 NEXT J CALL PLAY_LOAD( ROM( 12 ) ) CALL PLAY_MUSIC( 0 ) DO CALL TITLE_CRAWL CALL TITLE_TEXT IF T_XS < 0 THEN CALL TITLE_CREDITS CALL PLAY_LOAD( ROM( 12 ) ) CALL PLAY_MUSIC( 0 ) ELSE IF T_XS > 0 THEN CALL TITLE_OPTIONS ELSE IF T_YS > 0 THEN EXIT END IF LOOP CALL TITLE_OVER END SUB SUB TITLE_CRAWL CLS COPY ROM( 1 ), SIZE( 1 ) TO $FF00 COPY ROM( 6 ), SIZE( 6 ) TO $8000 'PALETTES AND CHARS WILL BE RESTORED PER ROM(1) WITHIN SUB TITLE_TEXT (NOT HERE). PALETTE 2, , %010101, %000010, %010110 PALETTE 3, , %101010, %101011, %111111 'FILL $8000 + T_4D2CH( 1 ) * 16, ( T_4D2CH( 35 ) - T_4D2CH( 1 ) + 1 ) * 16 BG SOURCE ROM( 4 ) CX2 = 2 CY2 = 16 BG 1 BG COPY 0, 8, 16, 4 TO CX2, CY2 BG 0 BG COPY 0, 4, 16, 4 TO CX2, CY2 T_XA = 15 T_YA = 5 T_SL2DEG = 3.0 T_FR2DEG = 3.0 ON RASTER CALL TITLE_RASTER T_XS = 0 T_YS = 0.375 MY_STEP = 0.25 PAUSE OFF FOR T_PY = 0 TO 116 STEP MY_STEP CALL TITLE_WAIT_VBL GOSUB TITLE_CRWL_HURRY GOSUB TITLE_CRWL_PAUSE NEXT T_PY T_PY = 116 FOR T_XA = 15 TO 0 STEP -MY_STEP T_YA = 5 * T_XA / 15 CALL TITLE_WAIT_VBL GOSUB TITLE_CRWL_HURRY GOSUB TITLE_CRWL_PAUSE NEXT T_XA PAUSE ON T_XA = 0 T_YA = 0 CALL TITLE_WAIT_VBL ON RASTER OFF EXIT SUB TITLE_CRWL_PAUSE: IF PAUSE THEN ADD T_PAUSE, T_FR2DEG * TIMER TEMP = T_FR2DEG T_FR2DEG = 0 PAUSE T_FR2DEG = TEMP ADD T_PAUSE, -T_FR2DEG * TIMER END IF RETURN TITLE_CRWL_HURRY: IF BUTTON TAP(0) AND MY_STEP=0.25 THEN MY_STEP = 8 * MY_STEP T_FR2DEG = T_FR2DEG * 8 T_YS = 8 * T_YS END IF RETURN END SUB SUB TITLE_RASTER RADI_RESULT = ( T_SL2DEG * RASTER + T_FR2DEG * TIMER + T_PAUSE ) / 57.2957795 SCROLL 0, T_XA * COS( RADI_RESULT ) + 4, T_YA * SIN( RADI_RESULT ) + T_PY 'COPY SCROLL OFFSET FROM BG0 TO BG1. POKEW $FF23, PEEKW( $FF21 ) END SUB SUB TITLE_TEXT OFFSET = T_4D2CH( 1 ) * 16 COPY ROM( 6 ) + OFFSET, ( T_4D2CH( 35 ) - T_4D2CH( 1 ) + 1 ) * 16 TO $8000 + OFFSET PRIO 1 PAL 0 BG 0 CELL 9, 19, 0 BG 1 CELL 9, 19, 0 TEXT 7, 19, "THE" TEXT 9, 20, "FIGHTING" TEXT 11, 21, "MACHINE" PAL 5 TEXT 1, 26, "CREDITS" TEXT 13, 26, "OPTIONS" TEXT 7, 29, "NEW GAME" PAL 1 CELL 9, 26, 58 CELL 11, 26, 56 CELL 10, 27, 59 T_YS = 0 DST = $8000 + 56 * 16 REPEAT IF TIMER MOD 120 = 0 THEN COPY ROM( 6 ) + 56 * 16, 4 * 16 TO DST IF TIMER MOD 120 = 90 THEN FILL DST, 4 * 16 CALL TITLE_WAIT_VBL UNTIL LEFT( 0 ) OR RIGHT( 0 ) OR UP( 0 ) OR DOWN( 0 ) COPY ROM( 6 ) + 56 * 16, 4 * 16 TO DST IF RIGHT( 0 ) THEN T_XS = 3 IF UP ( 0 ) THEN T_YS =-2 IF LEFT ( 0 ) THEN T_XS =-3 IF DOWN ( 0 ) THEN T_YS = 2 IF T_YS THEN FRMS = 124 / 2 ELSE FRMS = 155 / 3 IF T_XS < 0 THEN CALL PLAY_LOAD( ROM( 13 ) ) FOR FRAME = 0 TO FRMS IF FRAME = 24 THEN IF T_XS < 0 THEN BG 1 BG FILL 13, 0 TO 19, 31 CHAR 0 BG 0 BG FILL 13, 0 TO 19, 31 CHAR 0 ELSE IF T_XS > 0 THEN BG 1 BG FILL 1, 0 TO 7, 31 CHAR 0 BG 0 BG FILL 1, 0 TO 7, 31 CHAR 0 END IF END IF SCROLL 0, SCROLL.X( 0 ) + T_XS, SCROLL.Y( 0 ) + T_YS SCROLL 1, SCROLL.X( 1 ) + T_XS, SCROLL.Y( 1 ) + T_YS CALL TITLE_WAIT_VBL NEXT FRAME COPY ROM( 1 ), SIZE( 1 ) TO $FF00 END SUB SUB TITLE_CREDITS T_XS = 0 T_YS = 0 FOR FRAME = 1 TO 360 CALL TITLE_WAIT_VBL IF BUTTON TAP(0) THEN EXIT SUB IF FRAME = 120 THEN CALL PLAY_MUSIC( 0 ) NEXT FRAME CLS COPY ROM( 7 ), SIZE( 7 ) TO $8000 BG SOURCE ROM( 4 ) COPY ROM( 1 ), SIZE( 1 ) TO $FF00 CY1 = 13 CY2 = 16 PY2 = 18.5 * 32 + 48 FOR PY1 = 0 TO PY2 IF PY1 MOD 32 = 0 THEN IF CY1 <= 31 THEN BG COPY 0, CY1, 20, 1 TO 0, CY2 ELSE BG FILL 0, CY2 TO 19, CY2 CHAR 0 END IF INC CY1 END IF IF PY1 MOD 8 = 0 THEN INC CY2 SCROLL 0, 4, PY1 FRMS = 32 IF PY1 < PY2 - 8 THEN FRMS = 16 IF PY1 < PY2 - 24 THEN FRMS = 8 IF PY1 < PY2 - 40 THEN FRMS = 4 FOR FRAME = 1 TO FRMS CALL TITLE_WAIT_VBL IF BUTTON TAP(0) THEN EXIT SUB NEXT FRAME NEXT PY1 FOR FRAME = 1 TO 1200 CALL TITLE_WAIT_VBL IF BUTTON TAP(0) THEN EXIT SUB NEXT FRAME 'CALL FADE( "TO", %000000, 15 ) DO CALL TITLE_WAIT_VBL IF BUTTON TAP(0) THEN EXIT SUB LOOP END SUB SUB TITLE_OPTIONS T_XS = 0 T_YS = 0 CUR_SEL = 0 DO_EXIT = 0 REPEAT CLS PAL 1 PRINT "OPTIONS" PRINT "" IF CUR_SEL = 0 THEN PAL 5 ELSE PAL 1 PRINT " SFX LEVEL: ", P_SFX_VOL IF CUR_SEL = 1 THEN PAL 5 ELSE PAL 1 PRINT " MUSIC LEVEL: ", P_MUSIC_VOL PRINT "" IF CUR_SEL = 2 THEN PAL 5 ELSE PAL 1 PRINT " STARTING ROOM: ", (R_ID0 + 1) PRINT "" IF CUR_SEL = 3 THEN PAL 5 ELSE PAL 1 PRINT " BACK" PAL 1 PRINT "" PRINT "TAP [A] OR [B] TO" PRINT "CHANGE THE SELECTED" PRINT "VALUE" CALL TITLE_WAIT_VBL IF UP TAP(0) THEN CUR_SEL = ((CUR_SEL + 4) - 1) MOD 4 IF DOWN TAP(0) THEN CUR_SEL = (CUR_SEL + 1) MOD 4 IF BUTTON TAP(0, 0) THEN IF CUR_SEL = 0 THEN INC P_SFX_VOL IF P_SFX_VOL > P_SFX_VOL_MAX THEN P_SFX_VOL = P_SFX_VOL_MAX ELSE IF CUR_SEL = 1 THEN INC P_MUSIC_VOL IF P_MUSIC_VOL>P_MUSIC_VOL_MAX THEN P_MUSIC_VOL=P_MUSIC_VOL_MAX ELSE IF CUR_SEL = 2 THEN INC R_ID0 IF R_ID0 > R_ID_MAX THEN R_ID0 = R_ID_MAX ELSE IF CUR_SEL = 3 THEN DO_EXIT = 1 END IF ELSE IF BUTTON TAP(0, 1) THEN IF CUR_SEL = 0 THEN DEC P_SFX_VOL IF P_SFX_VOL < 0 THEN P_SFX_VOL = 0 ELSE IF CUR_SEL = 1 THEN DEC P_MUSIC_VOL IF P_MUSIC_VOL < 0 THEN P_MUSIC_VOL = 0 ELSE IF CUR_SEL = 2 THEN DEC R_ID0 IF R_ID0 < 0 THEN R_ID0 = 0 ELSE IF CUR_SEL = 3 THEN DO_EXIT = 1 END IF END IF UNTIL DO_EXIT = 1 END SUB SUB TITLE_OVER CLS STOP BG 0 PAL 1 PRIO 1 FILL $8000 + 16 * 140, 32 FILL $8000 + 16 * 156, 32 SEED = RND( 2 ^ 24 - 1 ) RANDOMIZE 0 FOR CY = 0 TO 15 FOR CX = 0 TO 19 STEP 4 FLIP 1, RND( 1 ) CELL CX , CY, 141 FLIP 1, RND( 1 ) CELL CX + 1, CY, 140 FLIP 0, RND( 1 ) CELL CX + 2, CY, 140 FLIP 0, RND( 1 ) CELL CX + 3, CY, 141 NEXT CX NEXT CY ACC = 0 RESTORE FIZZLE DO READ PX, PY IF PX = -1 THEN EXIT CH = 140 IF PX >= 8 THEN ADD CH, 1 IF PY >= 8 THEN ADD CH, 16 ADR = $8000 + 16 * CH + PY MOD 8 POKE ADR , PEEK( ADR ) OR 2 ^ ( 7 - PX MOD 8 ) POKE ADR + 8, PEEK( ADR + 8 ) OR 2 ^ ( 7 - PX MOD 8 ) IF ACC MOD 4 = 0 THEN CALL TITLE_WAIT_VBL INC ACC LOOP SPRITE OFF FOR CY = 0 TO 14 FOR CX = 0 TO 19 STEP 4 FLIP 1, 0 CELL CX , CY, 141 CELL CX + 1, CY, 140 FLIP 0, 0 CELL CX + 2, CY, 140 CELL CX + 3, CY, 141 NEXT CX NEXT CY FOR CX = 0 TO 19 STEP 4 FLIP 1, 0 CELL CX , CY, 157 CELL CX + 1, CY, 156 FLIP 0, 0 CELL CX + 2, CY, 156 CELL CX + 3, CY, 157 NEXT CX COPY ROM( 2 ) + 16 * 140, 32 TO $8000 + 16 * 140 COPY ROM( 2 ) + 16 * 156, 32 TO $8000 + 16 * 156 CALL PLAY_LOAD( ROM( 14 ) ) CALL PLAY_MUSIC( 0 ) FOR PY = 0 TO 128 SCROLL 0, 0, PY IF PY MOD 4 = 0 THEN WAIT VBL NEXT PY RANDOMIZE SEED EXIT SUB FIZZLE: DATA 9, 3, 4, 1, 6,14, 2, 1, 13, 1, 2, 2, 8, 8, 14, 0 DATA 9, 1, 7, 6, 13, 3, 10,10, 9, 5, 8, 9, 13, 8, 3,12 DATA 5,12, 2, 5, 13, 5, 5, 0, 4,13, 0,15, 10,14, 8,12 DATA 8,10, 5,14, 0,13, 10, 4, 11, 1, 14,12, 12, 8, 11, 6 DATA 9, 0, 11, 7, 1, 8, 11, 8, 1,12, 1,13, 5, 5, 3, 9 DATA 7, 2, 14, 2, 12, 6, 11, 4, 6, 8, 14, 5, 13, 0, 1,15 DATA 7,12, 4, 8, 13, 4, 6, 0, 5,13, 0, 1, 9,12, 2,10 DATA 7, 5, 5, 9, 2, 6, 4, 5, 9, 8, 2, 9, 9,14, 4,12 DATA 7,10, 0,10, 10,12, 10,15, 11,13, 0, 2, 14,10, 10, 2 DATA 0, 4, 6, 5, 5, 8, 12,15, 0, 3, 4, 9, 14, 7, 11,14 DATA 14, 1, 3, 6, 12, 1, 7,14, 3, 0, 4,10, 5, 1, 7, 0 DATA 8, 3, 14,13, 11, 5, 9, 7, 13, 6, 14, 9, 3, 2, 4, 2 DATA 0,14, 14,14, 2, 0, 13,10, 13,12, 12,10, 1,10, 0, 7 DATA 7, 3, 8, 5, 2, 4, 3, 3, 10, 5, 14, 6, 0, 0, 14, 8 DATA 6,15, 11,15, 14,15, 3,14, 12,14, 12, 0, 10, 6, 5, 3 DATA 8,11, 10, 1, 3, 4, 11,10, 2, 7, 5, 4, 11,12, 9,15 DATA 1, 4, 5,15, 4,15, 7, 7, 3,15, 12,12, 3,10, 1, 1 DATA 5, 7, 2,14, 7,15, 10,11, 8,13, 11,11, 11, 0, 3,11 DATA 7, 1, 4, 4, 12, 9, 3, 5, 6,11, 1,11, 10, 9, 7, 8 DATA 10, 8, 13,11, 4, 6, 8,15, 0, 8, 0, 6, 1, 9, 9,13 DATA 10,13, 14, 4, 6,10, 5,10, 1, 2, 12, 4, 2,11, 4, 0 DATA 0,12, 1, 7, 8, 7, 14, 3, 6, 4, 1, 5, 7,13, 3, 8 DATA 9,10, 5,11, 6, 1, 9, 6, 7,11, 10, 0, 2, 8, 1,14 DATA 10, 3, 0, 9, 6, 9, 0,11, 2, 3, 1, 6, 9, 2, 8, 6 DATA 11, 2, 3, 1, 13, 9, 14,11, 12, 5, 6, 2, 4,11, 6, 3 DATA 13, 7, 4,14, 3, 7, 9, 4, 6,13, 8, 1, 8,14, 2,12 DATA 7, 9, 12,11, 5, 6, 8, 0, 12,13, 13,13, 5, 2, 12, 3 DATA 1, 3, 12, 2, 4, 7, 12, 7, 7, 4, 3,13, 13, 2, 11, 9 DATA 4, 3, 9, 9, 6, 7, 0, 5, 6, 6, 6,12, 13,14, 2,13 DATA 11, 3, 8, 4, 2,15, 8, 2, 13,15, 10, 7, 1, 0, 9,11 DATA -1,-1 END SUB SUB TITLE_WAIT_VBL WAIT VBL CALL TITLE_STARFIELD END SUB SUB TITLE_STARFIELD FOR J = 0 TO 63 IF T_FZ( J ) THEN PX = 80 + T_FX( J ) / T_FZ( J ) IF INT( PX / 160 ) THEN T_FZ( J ) = 0.0 ELSE PY = 64 - T_FY( J ) / T_FZ( J ) IF INT( PY / 160 ) THEN T_FZ( J ) = 0.0 ELSE SPRITE J, PX, PY, T_4D2CH( 35.99 / MAX( T_FZ( J ), 1 ) ) ADD T_FX( J ), -10 * T_XS ADD T_FY( J ), 10 * T_YS ADD T_FZ( J ), -0.25 END IF END IF ELSE IF T_FZ( J ) = 0 THEN 'EXPECTED VALUE WAS 36 IN EARLY DRAFTS, BUT 72 LOOKS BETTER. T_FZ( J ) = RND( 2 ) + 71 'RND SEQ IS BELL CURVE (NOT UNIFORM DISTR.), 2880=40*72. T_FX( J ) = ( RND( 160 ) - 80 ) * T_FZ( J ) 'RND SEQ IS BELL CURVE (NOT UNIFORM DISTR.), 2304=32*72. T_FY( J ) = ( RND( 128 ) - 64 ) * T_FZ( J ) END IF NEXT J END SUB SUB GAME_INIT RESTORE R_INI1 'DIR VALUES 0=EAST, 1=NORTH, 2=WEST, OR 3=SOUTH. R_INI1: 'FOR EACH "FLIP SCREEN" DIRECTION, DEFINE HORZ, VERT LINES INDICATING FLIP. READ R_DIR2PX(0), R_DIR2PY(0), R_DIR2PX(1), R_DIR2PY(1) DATA 148 , 0.5 , 0.5 , 15 READ R_DIR2PX(2), R_DIR2PY(2), R_DIR2PX(3), R_DIR2PY(3) DATA -4 , 0.5 , 0.5 , 116 'FOR EACH ROOM, DEFINE ROOM_ID (OR ROM), AND GFX BACKGROUND LOCATION. DO READ R_ID1 IF R_ID1 < 0 THEN IF R_ID1 = -2 THEN READ SRC_ROM ELSE EXIT ELSE R_I2SRC( R_ID1 ) = ROM( SRC_ROM ) READ R_I2CX( R_ID1 ), R_I2CY( R_ID1 ), R_I2DIR( R_ID1 ) END IF LOOP ' R_ID1 CX CY DIR ROM DATA -2, 3 DATA 0, 0, 0, 3 DATA 1, 0, 15, 3 DATA 2, 0, 30, 0 DATA 3, 21, 30, 0 DATA 4, 42, 30, 1 DATA 5, 42, 15, 2 DATA 6, 21, 15, 1 DATA 7, 21, 0, 0 DATA 8, 42, 0, 0 DATA 9, 0, 45, 0 DATA 10, 21, 45, 3 DATA 11, 42, 45, -1 DATA -2, 8 DATA 12, 0, 0, 0 DATA 13, 0, 0, 0 DATA 14, 0, 0, 0 DATA 15, 0, 0, 0 DATA 16, 0, 0, 0 DATA 17, 0, 0, 0 DATA 18, 0, 0, 0 DATA 19, 0, 0, 0 DATA 20, 0, 0, 0 DATA 21, 0, 0, 0 DATA 22, 0, 0, 0 DATA 23, 0, 0, 0 ' R_ID1 CX CY DIR ROM DATA -2, 9 DATA 24, 0, 0, 0 DATA 25, 0, 0, 0 DATA 26, 0, 0, 0 DATA 27, 0, 0, 0 DATA 28, 0, 0, 0 DATA 29, 0, 0, 0 DATA 30, 0, 0, 0 DATA 31, 0, 0, 0 DATA 32, 0, 0, 0 DATA 33, 0, 0, 0 DATA 34, 0, 0, 0 DATA 35, 0, 0, 0 DATA -2, 10 DATA 36, 0, 0, 0 DATA 37, 0, 0, 0 DATA 38, 0, 0, 0 DATA 39, 0, 0, 0 DATA 40, 0, 0, 0 DATA 41, 0, 0, 0 DATA 42, 0, 0, 0 DATA 43, 0, 0, 0 DATA 44, 0, 0, 0 DATA 45, 0, 0, 0 DATA 46, 0, 0, 0 DATA 47, 0, 0, 0 ' R_ID1 CX CY DIR ROM DATA -2, 11 DATA 48, 0, 0, 0 DATA 49, 0, 0, 0 DATA 50, 0, 0, 0 DATA 51, 0, 0, 0 DATA 52, 0, 0, 0 DATA 53, 0, 0, 0 DATA 54, 0, 0, 0 DATA 55, 0, 0, 0 DATA 56, 0, 0, 0 DATA 57, 0, 0, 0 DATA 58, 0, 0, 0 DATA 59, 0, 0, 0 DATA -2, 0 DATA 60, 0, 0, 0 DATA 61, 0, 0, 0 DATA 62, 0, 0, 0 DATA 63, 0, 0, 0 DATA 64, 0, 0, 0 DATA 65, 0, 0, 0 DATA 66, 0, 0, 0 DATA 67, 0, 0, 0 DATA 68, 0, 0, 0 DATA 69, 0, 0, 0 DATA 70, 0, 0, 0 DATA 71, 0, 0, 0 DATA -1 'QUICK SINGLE-CHARACTER ENCODING OF ANY NUMBER FROM 0 TO 63. S_NUM2ASC$ = " !" + CHR$( 34 ) + "#$%&'()*+,-./0123456789:;<=" S_NUM2ASC$ = S_NUM2ASC$ + ">?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_" 'SPRITE RESOURCE MANAGEMENT, LEN=64 (VIA "INSTR" INSTRUCTION LATER). S_MGMT$ = "01234567" S_MGMT$ = S_MGMT$ + S_MGMT$ S_MGMT$ = S_MGMT$ + S_MGMT$ S_MGMT$ = S_MGMT$ + S_MGMT$ 'QUICK LOOKKUPS FOR BINARY SEARCH (SINCE LOWRES NX LACKS INDIRECTION/POINTERS). FOR J = 0 TO 31 IF J AND %10000 THEN INC B_4( J ) IF J AND %01000 THEN INC B_3( J ) IF J AND %00100 THEN INC B_2( J ) IF J AND %00010 THEN INC B_1( J ) IF J AND %00001 THEN INC B_0( J ) NEXT J 'LOOKUP "MOST (?)" AVAILABLE VOICE FOR A GIVEN PATTERN (WITHIN LEVEL MUSIC). FOR PATTERN = 0 TO 63 READ P_PN2VC( PATTERN ) IF P_PN2VC( PATTERN ) = -1 THEN EXIT NEXT PATTERN ' 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 DATA 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3 ' 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 DATA 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 ' 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 DATA 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 1 ' 48 49 50 EOF DATA 1, 1, 1, -1 END SUB SUB GAME_MAIN CALL FADE( "TO", %000000, 1 ) CLS SPRITE OFF COPY ROM( 2 ), SIZE( 2 ) TO $8000 CALL GAME_NEW REPEAT CALL GAME_LOAD_ROOM CALL FADE( "FROM", %000000, 9 ) PAUSE OFF REPEAT FRAME = TIMER CALL DEBUG CALL GAME_HUD_TIMEBAR CALL GAME_ANIMATE CALL GAME_SEED CALL GAME_LIVE CALL GAME_PAUSE_SPCL_WPN IF FRAME = TIMER THEN WAIT VBL UNTIL R_STEP OR R_GAMEOVER PAUSE ON CALL FADE( "TO", %000000, 9 ) UNTIL R_GAMEOVER CALL GAME_OVER END SUB SUB GAME_NEW CALL SPRITE_INIT 'ALLOCATE NEXT AVAILABLE SPRITE TO PLAYER'S SHIP, OBJECT_ID=1. CALL SPRITE_ALLOC( 1 ) '_RESULT NOW CONTAINS SN TO USE FOR PLAYER SHIP. S_SHIP = _RESULT 'ESTABLISH "UNDEAD" OBJECT_ID MEANING "ALLOCATE BUT DO NOT BRING ALIVE" S_UNDEAD = 7 'OBJECT_ID=S_UNDEAD, ALLOCATE LAST AVAILABLE SPRITE (63) TO NULL (TEMP). CALL SPRITE_ALLOC_LAST( S_UNDEAD ) S_NULL = _RESULT RESTORE NEWGAME_STAT1 NEWGAME_STAT1: R_ID1 = R_ID0 READ R_STEP, S_RX( S_SHIP ), S_RY( S_SHIP ), S_A( S_SHIP ) DATA 0, 72, 64, 0 READ H_LIVES, H_SCORE, H_AAA, H_BBB, H_SPCWPN_TYPE, H_LEN DATA 4, 7890, 19, 20, 0, 9999 H_BEG = TIMER BG SOURCE ROM( 4 ) BG 1 BG COPY 0, 0, 20, 1 TO 0, 0 BG COPY 0, 3, 20, 1 TO 0, 1 BG 0 BG COPY 0, 1, 20, 1 TO 0, 1 BG COPY 0, 2, 20, 1 TO 0, 0 BG SOURCE ROM( 3 ) CALL GAME_HUD_ALL SPRITE S_SHIP PAL 0 SIZE 1 SPRITE S_SHIP,,, 64 END SUB SUB GAME_LOAD_ROOM IF R_STEP = 1 THEN IF R_I2DIR( R_ID1 ) = 0 THEN S_RX( S_SHIP ) = 0 IF R_I2DIR( R_ID1 ) = 1 THEN S_RY( S_SHIP ) = 112 IF R_I2DIR( R_ID1 ) = 2 THEN S_RX( S_SHIP ) = 144 IF R_I2DIR( R_ID1 ) = 3 THEN S_RY( S_SHIP ) = 16 INC R_ID1 ELSE IF R_STEP = -1 THEN DEC R_ID1 IF R_I2DIR( R_ID1 ) = 0 THEN S_RX( S_SHIP ) = 144 IF R_I2DIR( R_ID1 ) = 1 THEN S_RY( S_SHIP ) = 16 IF R_I2DIR( R_ID1 ) = 2 THEN S_RX( S_SHIP ) = 0 IF R_I2DIR( R_ID1 ) = 3 THEN S_RY( S_SHIP ) = 112 END IF R_STEP = 0 BG SOURCE R_I2SRC( R_ID1 ) BG COPY R_I2CX( R_ID1 ), R_I2CY( R_ID1 ) + 1, 22, 15 TO -1, 2 'FREE ALL SPRITES EXCEPT SHIP. FOR SN = 0 TO 63 IF SN <> S_SHIP AND SN <> S_NULL THEN CALL SPRITE_FREE( SN ) NEXT SN SPRITE OFF S_SHIP 'OUT-OF-BOUNDS TO DELETE ENEMIES THAT MIGHT INDICATED IN THE LEVEL FORMAT TO SPAWN. FOR CY = 2 TO 16 FOR CX = -1 TO 20 CH = CELL.C( CX, CY ) 'REPLACE THIS WITH A BUNCH OF LOADING OF CELL CHARACTERS INTO SEEDS OF LIFE. IF CH >= 64 THEN CELL CX, CY, 0 '..................................................................... NEXT CX NEXT CY END SUB SUB GAME_HUD_ALL CALL GAME_HUD_TIMEBAR PAL 2 CALL SHOW_NUMBER( 2, 1, H_LIVES, 2, 1 ) CALL SHOW_NUMBER( 6, 1, H_SCORE, 6, 1 ) 'SHOW SPECIAL WEAPON. CALL SHOW_NUMBER( 12, 1, H_AAA , 2, 0 ) CALL SHOW_NUMBER( 14, 1, H_BBB , 2, 0 ) CALL ANIMATE( 104, 5, H_SPCWPN_TYPE, 128 ) END SUB SUB GAME_HUD_TIMEBAR BAR = INT( 9 * ( 1 - ( TIMER - H_BEG ) / H_LEN ) + 0.5 ) IF BAR >= 2 THEN DEC BAR BAR = MIN( MAX( 0, BAR ), 8 ) CALL ANIMATE( 86, 2, BAR, 174 ) END SUB SUB GAME_ANIMATE RESTORE GAME_ANIMAT1 GAME_ANIMAT1: ' CH1 WIDTH FRAMES SPEED CH2 DESCRIPTION DATA 0, 2, 4, 0.25, 66, "SHROOM/BANDIT 1/2" DATA 16, 2, 4, 0.25, 82, "SHROOM/BANDIT 2/2" DATA 8, 2, 4, 0.25, 72, "PIRATE2, PIRATE4/CRUISER" DATA 24, 1, 4, 0.10, 87, "PIRATE3/PILLBUG 1/2" DATA 28, 1, 4, 0.10, 76, "PIRATE3/PILLBUG 2/2" DATA 32, 2, 8, 0.25, 74, "ARROW 1/2" DATA 48, 2, 8, 0.25, 90, "ARROW 2/2" DATA 64, 2, 5, 0.40, 68, "PIRATE1/ELAVATOR" DATA 74, 1, 4, 0.25, 43, "GYROID" DATA 78, 2, 4, 0.10, 70, "CANNON" FOR J = 0 TO 9 READ CH1, WIDTH, FRMS, SPEED, CH2, GARBAGE$ CALL ANIMATE( CH1, WIDTH, SPEED * TIMER MOD FRMS, CH2 ) NEXT J END SUB SUB GAME_SEED 'DO STUFF TO ESTABLISH EACH NEW OBJECT_ID (CREATE SPRITES AND CHARACTERS). END SUB SUB GAME_LIVE 'DO STUFF TO "BRING EACH OBJECT_ID TO LIFE". FOR S_MOVE = -1 TO 0 'S_MOVE<>0 IS MOVE WITHOUT CLIPPING. S_MOVE=0 IS CELL-HIT AND SPRITE-HIT. FOR S_SN = 1 TO 63 'RETREIVE OBJECT_ID ASSOCIATED WITH EACH SN. CALL SPRITE_PEEK( S_SN ) 'EXECUTE SUBPROGRAM APPLICABLE TO SPECIFIC OBJECT_ID. IF _RESULT >= 0 THEN CALL BINARY_SEARCH NEXT S_SN NEXT S_MOVE SPRITE OFF S_NULL END SUB SUB GAME_PAUSE_SPCL_WPN IF PAUSE THEN PATTERN = MUSIC( 0 ) TEMP = TIMER DIM PAUSED( 5 ), BKGRND( 5 ) FOR J = 0 TO 5 CALL SPRITE_ALLOC( S_UNDEAD ) SPRITE _RESULT PAL 1 PRIO 1 SIZE 1 SPRITE _RESULT, 8 * J + 52, 57, 142 BKGRND( J ) = _RESULT NEXT J FOR J = 0 TO 5 CALL SPRITE_ALLOC( S_UNDEAD ) SPRITE _RESULT PAL 0 PRIO 1 SPRITE _RESULT, 8 * J + 56, 60, ASC( MID$( "PAUSED", J + 1, 1 ) ) + 160 PAUSED( J ) = _RESULT NEXT J STOP CALL PLAY_SFX( "PAUSE" ) CALL DEBUG REPEAT VERT = UP TAP( 0 ) - DOWN TAP( 0 ) IF VERT THEN GOSUB GAMEPAUSE_SPCLWPN1 WAIT VBL UNTIL PAUSE FOR J = 0 TO 5 CALL SPRITE_FREE( PAUSED( J ) ) CALL SPRITE_FREE( BKGRND( J ) ) NEXT J ADD H_BEG, TIMER - TEMP CALL PLAY_MUSIC( PATTERN ) ELSE IF DOWN TAP( 0 ) THEN VERT = 1 GOSUB GAMEPAUSE_SPCLWPN1 END IF EXIT SUB GAMEPAUSE_SPCLWPN1: ADD H_SPCWPN_TYPE, VERT, 0 TO 4 CALL ANIMATE( 104, 5, H_SPCWPN_TYPE, 128 ) RETURN END SUB SUB GAME_OVER END SUB SUB BINARY_SEARCH IF B_4( _RESULT ) THEN IF B_3( _RESULT ) THEN IF B_2( _RESULT ) THEN IF B_1( _RESULT ) THEN 'IF B_0( _RESULT ) THEN CALL OBJECT_31 ELSE CALL OBJECT_30 ELSE 'IF B_0( _RESULT ) THEN CALL OBJECT_29 ELSE CALL OBJECT_28 END IF ELSE IF B_1( _RESULT ) THEN 'IF B_0( _RESULT ) THEN CALL OBJECT_27 ELSE CALL OBJECT_26 ELSE 'IF B_0( _RESULT ) THEN CALL OBJECT_25 ELSE CALL OBJECT_24 END IF END IF ELSE IF B_2( _RESULT ) THEN IF B_1( _RESULT ) THEN 'IF B_0( _RESULT ) THEN CALL OBJECT_23 ELSE CALL OBJECT_22 ELSE 'IF B_0( _RESULT ) THEN CALL OBJECT_21 ELSE CALL OBJECT_20 END IF ELSE IF B_1( _RESULT ) THEN 'IF B_0( _RESULT ) THEN CALL OBJECT_19 ELSE CALL OBJECT_18 ELSE 'IF B_0( _RESULT ) THEN CALL OBJECT_17 ELSE CALL OBJECT_16 END IF END IF END IF ELSE IF B_3( _RESULT ) THEN IF B_2( _RESULT ) THEN IF B_1( _RESULT ) THEN 'IF B_0( _RESULT ) THEN CALL OBJECT_15 ELSE CALL OBJECT_14 ELSE 'IF B_0( _RESULT ) THEN CALL OBJECT_13 ELSE CALL OBJECT_12 END IF ELSE IF B_1( _RESULT ) THEN 'IF B_0( _RESULT ) THEN CALL OBJECT_11 ELSE CALL OBJECT_10 ELSE 'IF B_0( _RESULT ) THEN CALL OBJECT_09 ELSE CALL OBJECT_08 END IF END IF ELSE IF B_2( _RESULT ) THEN IF B_1( _RESULT ) THEN IF B_0( _RESULT ) THEN CALL OBJECT_07 ELSE CALL OBJECT_06 ELSE IF B_0( _RESULT ) THEN CALL OBJECT_05 ELSE CALL OBJECT_04 END IF ELSE IF B_1( _RESULT ) THEN IF B_0( _RESULT ) THEN CALL OBJECT_03 ELSE CALL OBJECT_02 ELSE IF B_0( _RESULT ) THEN CALL OBJECT_01 ELSE CALL OBJECT_00 END IF END IF END IF END IF END SUB SUB OBJECT_00 'OBJECT_ID=0 MEANS FREE (NOT ALLOCATED). DO NOTHING. END SUB SUB OBJECT_01 'OBJECT_ID=1 MEANS PLAYER SHIP. IF S_MOVE = 0 THEN EXIT SUB HORZ = LEFT ( 0 ) - RIGHT( 0 ) 'S_A(S_SN) REPRESENTS DIRECTION PLAYER SHIP IS FACING. IF HORZ = -1 THEN S_A( S_SN ) = -1 ELSE IF HORZ THEN S_A( S_SN ) = 0 VERT = 2 * UP( 0 ) + 1 'VERT = UP( 0 ) - DOWN( 0 ) TEMPX = S_RX( S_SN ) + HORZ TEMPY = S_RY( S_SN ) + VERT _RESULT = 0 IF HORZ = 1 THEN CALL CELL_HIT( TEMPX + 13, S_RY( S_SN ) + 1 ) CALL CELL_HIT( TEMPX + 13, S_RY( S_SN ) + 7 ) CALL CELL_HIT( TEMPX + 13, S_RY( S_SN ) + 13 ) ELSE IF HORZ THEN CALL CELL_HIT( TEMPX + 2, S_RY( S_SN ) + 1 ) CALL CELL_HIT( TEMPX + 2, S_RY( S_SN ) + 7 ) CALL CELL_HIT( TEMPX + 2, S_RY( S_SN ) + 13 ) END IF IF HORZ THEN IF _RESULT = 0 THEN S_RX( S_SN ) = TEMPX _RESULT = 0 IF VERT = 1 THEN CALL CELL_HIT( S_RX( S_SN ) + 2, TEMPY + 13 ) CALL CELL_HIT( S_RX( S_SN ) + 7, TEMPY + 13 ) CALL CELL_HIT( S_RX( S_SN ) + 13, TEMPY + 13 ) ELSE IF VERT THEN CALL CELL_HIT( S_RX( S_SN ) + 2, TEMPY + 1 ) CALL CELL_HIT( S_RX( S_SN ) + 7, TEMPY + 1 ) CALL CELL_HIT( S_RX( S_SN ) + 13, TEMPY + 1 ) END IF IF VERT THEN IF _RESULT = 0 THEN S_RY( S_SN ) = TEMPY SPRITE S_SN FLIP S_A( S_SN ), 0 SPRITE S_SN, S_RX( S_SN ), S_RY( S_SN ), FOR DIR = 0 TO 3 IF INT(S_RX(S_SN)) = R_DIR2PX(DIR) OR INT(S_RY(S_SN)) = R_DIR2PY(DIR) THEN EXIT NEXT DIR IF R_I2DIR( R_ID1 ) = DIR THEN INC R_STEP ELSE IF DIR <= 3 THEN DEC R_STEP 'S_B(S_SN) REPRESENTS TIME NEEDED TO RELOAD GUN (AND REDUCES SPRITES NEEDED). IF S_B( S_SN ) THEN DEC S_B( S_SN ) ELSE IF BUTTON( 0, 0 ) THEN S_B( S_SN ) = 15 CALL PLAY_SFX( "FIRE" ) 'NEW BULLET, OBJECT_ID=2. CALL SPRITE_ALLOC( 2 ) IF S_A(S_SN) THEN S_RX(_RESULT) = S_RX(S_SN) ELSE S_RX(_RESULT) = S_RX(S_SN) + 10 S_RY( _RESULT ) = S_RY( S_SN ) + 13 SPRITE _RESULT, -8, S_RY( _RESULT ), 86 SPRITE _RESULT PAL 4 'S_A REPRESENTS DIRECTION BULLET TRAVELS. IF S_A( S_SN ) THEN S_A( _RESULT ) = -1 ELSE S_A( _RESULT ) = 1 'ON ENTRY, S_B=0. S_B( _RESULT ) = 0 'S_C=1 REPRESENTS BULLET STATE=MOVING (NOT EXPLODING). S_C( _RESULT ) = 1 END IF IF BUTTON( 0, 1 ) THEN 'USE SPECIAL WEAPON.................................... END IF END SUB SUB OBJECT_02 'S_SN=2 IS PLAYER BULLET. IF STATE=MOVING (NOT EXPLODING) THEN. IF S_C( S_SN ) THEN 'S_A IS DIRECTION OF BULLET MOTION (ZERO MEANS NO BULLET MOTION). ADD S_RX( S_SN ), S_A( S_SN ) SPRITE S_SN, S_RX( S_SN ), S_RY( S_SN ), IF S_A( S_SN ) = 1 THEN PW = 5 ELSE PW = 0 'CHECK FOR COLLISION WITH EDGE OF ROOM. IF S_RX( S_SN ) + PW >= 164 OR S_RX( S_SN ) + PW <= -5 THEN CALL SPRITE_FREE( S_SN ) ELSE 'CHECK FOR COLLISION WITH BACKGROUND. CX = ( S_RX( S_SN ) + PW ) \ 8 CY = S_RY( S_SN ) \ 8 CH = CELL.C( CX, CY ) IF CH <> 29 AND CH <> 30 AND ( CH < 49 OR CH > 59 ) THEN SPRITE.A S_NULL, CELL.A( CX, CY ) SPRITE S_NULL, 8 * CX, 8 * CY, CH IF SPRITE HIT( S_SN, S_NULL ) THEN DEC S_C( S_SN ) 'S_B=5 MEANS ANIMATE AN EXPLOSION. S_B( S_SN ) = 5 CALL PLAY_SFX( "BANG" ) END IF END IF END IF ELSE IF S_B( S_SN ) THEN SPRITE S_SN PAL 5 PRIO 1 IF S_A( S_SN ) = 1 THEN PW = 2 ELSE PW = -2 SPRITE S_SN, S_RX( S_SN ) + PW, S_RY( S_SN ) - 4, 149 - S_B( S_SN ) ADD S_B( S_SN ), -0.125 IF S_B( S_SN ) = 0 THEN CALL SPRITE_FREE( S_SN ) END IF END SUB SUB OBJECT_03 END SUB SUB OBJECT_04 END SUB SUB OBJECT_05 END SUB SUB OBJECT_06 END SUB SUB OBJECT_07 'OBJECT_ID=7 MEANS ALLOCATED AND "UNDEAD" (DO NOTHING). END SUB SUB PLAY_LOAD( ZIP_ADR ) STOP CALL UNZIP( ZIP_ADR, P_SRC ) 'NESTED LOOPS (FOR EACH PATTERN, VOICE'S TRACK, AND NOTE). SRC128 = P_SRC + 128 SRC384 = P_SRC + 384 FOR PATTERN = 0 TO 255 STEP 4 FOR VOICE1 = 0 TO 3 TRACK1 = PEEK( SRC128 + PATTERN + VOICE1 ) AND $7F 'IF TRACK USED THEN. IF TRACK1 <> 64 THEN TRACK1 = 96 * TRACK1 FOR NOTE1 = 1 TO 95 STEP 3 'SET VOLUME. NOTE_DATA_ADR = SRC384 + TRACK1 + NOTE1 VOLUME1 = PEEK( NOTE_DATA_ADR ) AND $0F 'CALCULATE RATIO OF OLD VS. NEW VOLUME. IF USED, THEN SONGS NEED MODIFIED. VOLUME2 = MIN( MAX( 1, P_MUSIC_VOL / 15 * VOLUME1 + 0.50 ), 15 ) 'IGNORE CALC'D RATIO ABOVE (SONGS DON'T NEED MODIFIED). VOLUME2 = P_MUSIC_VOL POKE NOTE_DATA_ADR, PEEK( NOTE_DATA_ADR ) AND $F0 OR VOLUME2 NEXT NOTE1 END IF NEXT VOICE1 NEXT PATTERN SOUND SOURCE P_SRC END SUB SUB PLAY_MUSIC( PATTERN ) IF P_MUSIC_VOL THEN MUSIC PATTERN END SUB SUB PLAY_SFX( SND$ ) IF SND$ = "FIRE" THEN NOTE$ = "C " OCTAVE = 4 SOUND1 = 1 ELSE IF SND$ = "BANG" THEN NOTE$ = "F " OCTAVE = 3 SOUND1 = 1 ELSE IF SND$ = "PAUSE" THEN NOTE$ = "C " OCTAVE = 4 SOUND1 = 0 ELSE NOTE$ = "C " OCTAVE = 5 SOUND1 = 15 END IF NOTE1 = INSTR( " C C#D D#E F F#G G#A A#B ", NOTE$ ) / 2 SOUND SOURCE ROM( 15 ) VOLUME P_PN2VC( MUSIC( 0 ) ), P_SFX_VOL, IF P_SFX_VOL THEN PLAY P_PN2VC( MUSIC( 0 ) ), 12 * OCTAVE + NOTE1 SOUND SOUND1 SOUND SOURCE P_SRC END SUB SUB SPRITE_INIT FOR SN = 0 TO 63 CALL SPRITE_FREE( SN ) NEXT SN S_ALLOC = 0 END SUB SUB SPRITE_FREE( SN ) POS = 64 - SN IF MID$( S_MGMT$, POS, 1 ) = " " THEN EXIT SUB MID$( S_MGMT$, POS, 1 ) = " " SPRITE OFF SN DEC S_ALLOC END SUB SUB SPRITE_ALLOC( ID ) 'WARNING - FAILURE HALTS CONSOLE! CALLING SUBPROGRAM MUST CHECK S_ALLOC! POS = INSTR( S_MGMT$, " " ) MID$( S_MGMT$, POS, 1 ) = MID$( S_NUM2ASC$, ID + 1, 1 ) SN = 64 - POS SPRITE.A SN, 0 INC S_ALLOC 'ON EXIT, _RESULT IS (A NEW) SN (ASSOCIATED WITH OBJECT_ID). _RESULT = SN END SUB SUB SPRITE_ALLOC_LAST( ID ) POS = 64 IF MID$( S_MGMT$, POS, 1 ) = " " THEN INC S_ALLOC MID$( S_MGMT$, POS, 1 ) = MID$( S_NUM2ASC$, ID + 1, 1 ) SN = 64 - POS 'ON EXIT, _RESULT IS "LAST" SN (ASSOCIATED WITH OBJECT_ID). _RESULT = SN END SUB SUB SPRITE_PEEK( SN ) POS = 64 - SN ID = INSTR( S_NUM2ASC$, MID$( S_MGMT$, POS, 1 ) ) - 1 'ON EXIT, _RESULT IS OBJECT_ID (ALLOCATED TO SN). _RESULT = ID END SUB SUB DEBUG TRACE "SN ALLOC" TRACE STR$( S_ALLOC ) + "/64" TRACE CHR$(10), CHR$(10), CHR$(10), CHR$(10), CHR$(10) TRACE CHR$(10), CHR$(10), CHR$(10), CHR$(10), CHR$(10) END SUB SUB SHOW_NUMBER( CX, CY, NUM, DIGITS, USE_SHIFT ) T$ = RIGHT$( "00000" + STR$( NUM ), DIGITS ) IF USE_SHIFT THEN T$ = ":" + T$ L$ = LEFT$( T$, 1 ) + MID$( T$, 3, 1 ) + MID$( T$, 5, 1 ) + MID$( T$, 7, 1 ) R$ = MID$( T$, 2, 1 ) + MID$( T$, 4, 1 ) + MID$( T$, 6, 1 ) PRIO 1 BG 1 FONT 160 - 48 + 32 TEXT CX, CY, L$ BG 0 FONT 176 - 48 + 32 TEXT CX, CY, R$ END SUB SUB CELL_HIT( PX, PY ) CH = CELL.C( PX \ 8, PY \ 8 ) IF PY <= 15 OR CH = 29 OR CH = 30 OR CH >= 49 AND CH <= 59 THEN CH = 0 ADD _RESULT, CH END SUB SUB ANIMATE( CH1, WIDTH, FRAME, CH2 ) COPY ROM( 5 ) + 16 * ( WIDTH * FRAME + CH1 ), 16 * WIDTH TO $8000 + 16 * CH2 END SUB SUB FADE( MODE$, SOLID_VAL, FRMS ) FOR FRAME = 0 TO FRMS FOR PL = 0 TO 7 FOR CLR = 1 TO 3 VAL1 = SOLID_VAL VAL2 = PEEK( ROM( 1 ) + 4 * PL + CLR ) IF MODE$ = "TO" THEN SWAP VAL1, VAL2 R1 = VAL1 \ 16 R2 = VAL2 \ 16 G1 = VAL1 \ 4 MOD 4 G2 = VAL2 \ 4 MOD 4 B1 = VAL1 MOD 4 B2 = VAL2 MOD 4 ADD R1, INT( ( R2 - R1 ) * FRAME / FRMS + 0.5 ) ADD G1, INT( ( G2 - G1 ) * FRAME / FRMS + 0.5 ) ADD B1, INT( ( B2 - B1 ) * FRAME / FRMS + 0.5 ) POKE $FF00 + 4 * PL + CLR, 16 * R1 + 4 * G1 + B1 NEXT CLR NEXT PL WAIT VBL NEXT FRAME END SUB SUB UNZIP( SRC_ADR, DST_ADR ) U_SRC = SRC_ADR U_SBIT = 7 CALL UNZIP_PEEKB( 14, U_P2 ) CALL UNZIP_PEEKB( 2, U_G2P3 ) CALL UNZIP_PEEKB( 1, U_GAM_0 ) CALL UNZIP_PEEKB( 3, U_1BITS ) CALL UNZIP_PEEKB( 4, U_2BITS ) CALL UNZIP_PEEKB( 4, U_3BITS ) CALL UNZIP_PEEKB( 4, U_EXTND ) DIM BUF1( $4FFF ) FOR P1 = 0 TO U_P2 CALL UNZIP_PEEKG( U_P3 ) IF U_GAM_0 AND U_P3 = 1 THEN CALL UNZIP_PEEKB( 1, U_P3 ) IF U_GAM_0 + U_P3 = 1 THEN CALL UNZIP_PEEKB( 8, BUF1( P1 ) ) ELSE ADD U_P3, -U_G2P3 IF U_P3 = 1 THEN LO = U_2BITS ELSE IF U_P3 THEN LO = U_3BITS ELSE LO = U_1BITS CALL UNZIP_PEEKB( LO, LO ) HI = 1 IF U_P3 >= U_EXTND THEN CALL UNZIP_PEEKG( HI ) ADD U_P3, P1 FOR P1 = P1 TO U_P3 BUF1( P1 ) = BUF1( P1 - 2 ^ U_3BITS * ( HI - 1 ) - LO - 1 ) NEXT P1 DEC P1 END IF NEXT P1 FOR P1 = 0 TO U_P2 POKE DST_ADR + P1, BUF1( P1 ) NEXT P1 END SUB SUB UNZIP_PEEKB( BITS, VALUE ) BIT2 = BITS VALUE = 0 WHILE BIT2 DEC BIT2 IF PEEK( U_SRC ) AND 2 ^ U_SBIT THEN ADD VALUE, 2 ^ BIT2 IF U_SBIT = 0 THEN INC U_SRC ADD U_SBIT, -1, 0 TO 7 WEND END SUB SUB UNZIP_PEEKG( VALUE ) DIGITS = -1 REPEAT CALL UNZIP_PEEKB( 1, VALUE ) INC DIGITS UNTIL VALUE CALL UNZIP_PEEKB( DIGITS, VALUE ) ADD VALUE, 2 ^ DIGITS END SUB 'IMPLEMENT ALL OF THESE! (TO DO!) ' ' OBJECT_ID CHAR PALLETTE FLIP DESCRIPTION ' 0 -- -- -- NOT ALLOCATED, "NULL" ' 1 64 0PURPLE -- PLAYER SHIP ' 2 86 0PURPLE -- PLAYER BULLET ' 3 66 7BLUE -- SHROOM/BANDIT ' 4 72 7BLUE -- PIRATE2 ' 5 72 4ORANAGE -Y PIRATE4/CRUISER, FLIP FY ' 6 76/87 4ORANAGE *XY* PIRATE3/PILLBUG ' 7 74 7BLUE *X-* ARROW ' 8 68 5RED *-Y* PIRATE1/ELAVATOR ' 9 42 5RED -- ZOGGIAN BULLET ' 10 100 7BLUE CARGO1, 20 ' 11 102 7BLUE CARGO2, 40 ' 12 104 7BLUE CARGO3, 80 ' 13 106 7BLUE CARGO4, 100 ' 14 133 7BLUE *-Y* MISSILE ' 15 149 0PURPLE *X-* BLASTER ' 16 150 7BLUE -- CYBERMACE ' ? 148 4ORANGE ** CYBERMACE SPARKLES FLIP RANDOMLY (HOW TO TRAIL WITH MULTIPLE SN?) ' 17 170 7BLUE ELEVATOR (NEED TWO) ' 18 144-8 2GRAY -- SMOKE ' ' -- 96 5RED ** EYE(?) ' -- 28 6GREEN *-Y* BLOB ' -- 98 4ORANGE CRATE1 ' -- 108 6GREEN CRATE2 ' -- 70 0PURPLE *-Y* CANNON ' 64 4ORANGE *X* Y END OF LEVEL ' #0:60-71 BG(HOLD!) 00000000000000000000000000000000 00000000000000000000000000000000 #1:MAIN PALETTES 003F2B16003B2611003F2A1500240708 003E3924003A3520002E1904002F1B06 #2:MAIN CHARACTERS 00000000000000000000000000000000 285FA1D0B956AA1A377FE5B04BEFB555 904CF4CDB854A91598D53CB569EDB61B 1F3F70E0C0C0C1C200000F1F3F3F3F3F F0F80002030383430804FEFFFFFFFFBF A16823B042BC5124DE9FDDCFBFCBAFDE 1B264B66DCB9EC55BBE6FB66FCF9FCF5 38710019001C191CC78F002700232723 7379006C00CC64CCF3F900EC00CCE4CC 1E7870606000000001078F9F9FFFFFC0 180E1F0F1F0F1F03F8FEFFFFFFFFFF03 1858A45A5A241A15255ABC6666BC5A2D 000000FF00FF00FFFF00FF00FFFF00FF C07E81D5D58154003FABD5D5ABD5D5FF E8F4E8F4E8E48874170B170B1003170B 1629070F172F172FFEF9E71FFFFFFFFF C3C3C3C3C3C3C3C33F3F3F3F3F3F3F3F 1538277D8BDA0E151BAE154EF7D60A5B 0C0E084BD4BB5C340A5A0EDD1BF76D2C C2C1C0C040001F0F3F3E3F3FBF7F3F1F 43830303070EFCF8BF7FFFFFFFFEFCF8 6B214AB56557B46B9FDEBFD99FABCE97 5AE8A6FDAA14EE6AFAE8F6FDEADCEEFA 191C19001830790027232700274F877F 64CC64004CA673F2E4CCE400CCE6F3F2 0D0D0D0D0D0D0D0D3232323232323232 2C2C2C2C2C2C2C2CFCFCFCFCFCFCFCFC A8A8A8A8A8A8A8A8B5B5B5B5B5B5B5B5 687CF8720C741A3510F8348E7E7B674F 00030C152658D7B30000030F1E2EB87C 0000881619122B760000881E1F3FF7FB 141E3FDEA1DF79960A3F1CE1FF3FA77F C3C3C3C3FBE7E7E73F3F3F3F3F3B3B3B FFFF0F080807FFFF0000FFFFFFF8FFFF FFFFE01010F0FFFF0000FFEFEF0FFFFF FFFF00000000FFFF0000FFFFFFFFFFFF 001230640A162E1F1F6ECE9FFEFE7E1F 00007E00FF00FF0000FF00FFFF7EFF00 000020410A172E18F87E5FBF7F7F7EF8 001000304E002C00002C004E7E003C00 0010480A50501000001852505A5A1800 0000102C005600C300182C3C006E003F 183C1800018354282442E7BF5FAB5428 1C1C0C0C0C10000024243C3C3C080000 8377AD783A65CA9BFFFCFA77059B376F 9135147BADA6545B7EFFFFFFFFFFEBE7 AF36B17AFF708A1F71F9FEFDBFEFF5E0 79CBA656FCF42381FFF77EBEFC7CDF7F E7E7E7DFC3C3C3C33B3B3B233F3F3F3F 000201070C121424000303050A1E1C2C 000020481C120B0D00002078041E0D0F 00061804281010280006161C38203038 40600834080A0A144020382C1C060E1C 0000010205010A180000010306070F18 20E050882659AAF760A0B078DEF7FFFF 0101040923D67AAD0307060F3EFDFFAD 00C0C0B0D0E8BC6E00C0C0B0D0E8FCFE 000000020A1C0414000000020E141C18 0000030009131431000003030E1C1B3F 10601060044A86011060F0A0C4CE8403 59277840AA2013FF3F3F1FBF555F6FFF B91548AA056F7FFFC7EFBF7FFFBFFFFF 5F0ED9C480C9E2FFA0F1E6FBFFF7FFFF 21895206AA0A7DFEDF7FFEFEFEFEFFFE 042875CC36F9FE370F347CFCFE3731F8 000080200CF408E2806010080CFAF61E 071B372F4E444020071C2830717B7F3F 80CC860607071772703C7EFEF7F7F7F2 1E78E000666600E001071F000101001F B8BEBF00090900BFF8FEFF00393900FF 4CA654640E170802B45F2E5E351F0F03 09400A0448E010C019D95A5EDCF8F0C0 01011D71E0811DFC013C608C1D7CFCFD 000038382101071F80BC86879FBFBFBF 281C0A2DC03FFFC058241633C0FF003F 0000C03028B4FA740000C07058CC06CC 306350A0481B783B081B285BB8787838 FE82AA92AA82FE000000000000000000 FE82AA92AA82FE000000000000000000 FE82AA92AA82FE000000000000000000 F83E09013648330CFF3F0F0F39773F0C 3CC08000C06E8000FCC08000CCFB8000 1B0005000C0C00001F000A0405040800 EC009800D8188000EC00781050100880 E0006020303069071F001F1F0F2F3763 BF00BEBCBCBC72E0FF00FEFCFCF8FCE6 B400000000000000CC00000000000000 0052A3C7EF00A2A2182E5F3F1F000A0A 00080F0033CE005C000700003C710063 0070F0008C3F000E00B030007CFF00FE C0211E3468F00000C03F122C58F00000 2830C000000000005870C00000000000 FE82AA92AA82FE000000000000000000 FE82AA92AA82FE000000000000000000 FE82AA92AA82FE000000000000000000 FE82AA92AA82FE000000000000000000 010382E1384ED324010243D1348D2318 80D05890020480E88050C890060440CC E780838080A0A0A0005B435B587B7B78 FE01F9754D3D050501FFFF8BBBFBFBEB 0103070F1F3F7FFF0000000000000000 000000201028144A80C0E0F0F8FCFEFF 030C10274F5F9F9F020000000000831F C03008A4A2A2A1A1C0300824A2A2A1A1 010C11272600000002000000010E0C0C C030888404040404C030484484040404 01030600000000000001020913264890 80C02090C8C4820000C0201048C48201 FF80BFA0A0A0A1A2007F7F7F7F7F7E7D FE1DDB374F89152501FFF5DDB17FFBFB FE82AA92AA82FE000000000000000000 FE82AA92AA82FE000000000000000000 21212AD52F00807F1E1F1F3FFF007F7F 109090901060408030B0B0B03020C080 A0B8B4B4AC9F807F7E666E6E7F607FFF 0505050105E501E34BABEBE3EB03EFE3 0000000000000000FF7F3F1F0F070301 FFFEFCF8F0E0C080FFFEFCF8F0E0C080 9C80404020100C039C80404021110C03 000100126480204001011270E08810C0 2020202020100C032020202020110C03 040004146088004004041430648030C0 90402010080402019040201009040201 0108102050204080011A34E8C0200080 A4A891F2ECDBB87F7B776F7F577447FF 4585050505FD01FFFBFBFBFBFB03FFFF FE82AA92AA82FE000000000000000000 FE82AA92AA82FE000000000000000000 00000000824428100000000000000000 00000000F54095000000000000949500 00000100240025000000000101952500 00000000680068000000000000446800 2828EEAA00000000006CEEAA00000000 1882142418101000AA10C65C38001010 FE82AA92AA82FE000000000000000000 FE82AA92AA82FE000000000000000000 FE82AA92AA82FE000000000000000000 FE82AA92AA82FE000000000000000000 FE82AA92AA82FE000000000000000000 FE82AA92AA82FE000000000000000000 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE 0F3F7F7FFFFFFFFF0F3F7F7FFFFFFFFF F0FCFEFEFFFFFFFFF0FCFEFEFFFFFFFF 897651AA658A7106EF99BFF61FFD7706 0956AA5DAA5536090F59EDBFDE7B390F 0A55AA54B04C120C0E5BF6BCFC521E0C 040A54A84C120C00040E5CE84C1E0C00 00040840000C000000040840000C0000 00140842A4420814001C0062DA62001C 42BD665A5A66BD4266DBBD6666BDDB66 FE82AA92AA82FE000000000000000000 FE82AA92AA82FE000000000000000000 FE82AA92AA82FE000000000000000000 FE82AA92AA82FE000000000000000000 FE82AA92AA82FE000000000000000000 FFFFFFFFFFFFFF00FFFFFFFFFFFF00FF FCFCFCF8F0C00000FEF8F8F0C830C000 FFFFFF7F7F3F0F00FFFFFF7F7F3F0F00 FFFFFFFEFEFCF000FFFFFFFEFEFCF000 408020400000FF000020A04000FFFF00 204000200000FF000020202000FFFF00 802000600000FF00400040E000FFFF00 C00040200000FF00002020E000FFFF00 408020000000FF000000E02000FFFF00 808000600000FF00604020E000FFFF00 208000600000FF004040A0E000FFFF00 800000400000FF006020404000FFFF00 800000E00000FF0020E0A0E000FFFF00 400020800000FF0020A060C000FFFF00 000000000000FF000000000000FFFF00 0000000002132207000000003E45878A 000000003C42B9B9000000000C028919 0000000060500000000000001E022418 030303C300000000030F3F3F00000000 000000000000FF000000303000FFFF00 040802040000000000020A0400000000 02040002000000000002020200000000 08020006000000000400040E00000000 0C000402000000000002020E00000000 040802000000000000000E0200000000 08080006000000000604020E00000000 020800060000000004040A0E00000000 08000004000000000602040400000000 0800000E00000000020E0A0E00000000 0400020800000000020A060C00000000 00000000000000000000000000000000 2C1008160000000076180C7A04000000 A1844A2000000000A58D483C00000000 081C3E7E00000000183C6E7E00000000 080C7E0C080000000000000000000000 40404040E0B05F3060606060E0DF7F30 00000000000000000000000000000000 00181810100010180010000808000818 00442244000000000066440000000000 000004660066200000002078241E0400 0066181866181866007860607E06061E 00426408102044060022660C18306246 001866060660666600001E601E060678 00181020000000000010083000000000 00061860606000060006000000001806 00601806060600600060000000001860 00002424782400000000003C063C2400 0000101064001000000000001C101000 00000000001810200000000000100830 00000000240000000000000038000000 00000000000010180000000000000818 00020408102040000002060C18306040 0066060666606066007860600006061E 00181818180000180000000000181818 0066060678606066007E00000600007E 006606067E000066007800000006061E 00600000787E18000060606000000018 006600007E000066007860600006061E 006600007E606066007E60600606061E 00660C0C180000300078000000183030 006606067E606066007E60606606067E 006606067E000066007E60600006061E 00001018000010180000081800000818 00001018001810200000081800100830 00061818600000060006000000181806 00000024002400000000003800380000 00601818060000600060000000181860 006600001E001018007E660600000818 0030020E6E606030003C6060000E003C 006606067E606066007E606000060606 006606067E606066007E60600606061E 0066060060606666007866600000067E 0064060666606064007C60600006061C 006600007E6060780078606000000006 00660000786060600078606000000000 0066000060606666007E6060000E067E 006606067E6060660060606000060606 0066181818181866007800000000001E 007E060606006066006000000006061E 00660618787860660060607E001E0606 0060000060606066006060600000001E 004200667E60606600426618001E0606 006600667E60606600667618000E0606 0066060666606066007E60600006067E 006606067E606060007E606006000000 0066060666606666007E606000061E78 006606067E606066007E606006060606 006600007E000066007860600006061E 00661818181818000078000000000018 0066060666606066006060600006061E 0066060666607E000060606000066618 00660606667E00420060606018006642 006606067E6060660066606066060606 00660606607E18000060606006660018 0066060E18187066007E00000660001E 0066000060606066007860600000001E 000040201008040200406030180C0602 0066060606000066007800000006061E 00007E66000000000018660000000000 00000000000000240000000000000038 #3:00-11 BG(DONE!) 000040400000B0000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 B7000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000B80000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000001010201010102010101 02010101020110022402250226022702 24022502260210020201010102010000 05020602010102010101020101010201 01010201100202210121022101210221 01210221012102210000022101210221 01210221012102210121022102210121 02210121300201010201010102010101 02010000000011011201110112011101 12011101120110020000000000000000 00000000000020021201110112010000 15021602230221022202230223022102 22022302140239313131323133313231 313134313A313B310000393131313231 33313231313134313A313B3139313131 32313331130221022202230223022302 23020000000001010302210222022102 22022102220214020000000000000000 00000000000030020201010102010000 05020602000000000000171018100000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 0000000000003C363D363E363F360000 00000000000011011002000000000000 00000000000000000000000000000000 00000302230214021201110112010000 15021602000000000000071008100000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 0000000000002C362D362E362F360000 00000000000001012002000000000000 00000000000000000000000000000000 00002002020101010201010102010000 05020602000000000000460047000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 0000000000001C361D361E361F360000 00000000000011013002000000000000 00000000000000000000000000000000 00003002120111011201110112010000 15021602000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 4B0F4A0F000001011002000000000000 00000000000000000000000000000000 00002002020101010201010102010000 05020602000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 5B0F5A0F000011011002000000000000 00000000000000000000000000000000 00003002120111011201110112010000 15021602000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 4B0F4A0F000001012002000000000000 00000000000000000000000000000000 00001302210222020402010102010000 05020602000000000000000000000000 000000000000000000001C261D261E26 1F260000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 5B0F5A0F000011013002000000000000 29020000000000000000000000000000 00000000000000002002110112010000 15021602000000000000000039213421 312134213121322100002C262D262E26 2F260000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 4B0F4A0F000001011002000000000000 10020000000000000000000000000000 00000000000000003002010102010000 05020602000000000000000011211221 112112211121122100003C263D263E26 3F260000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 5B0F5A0F000011011002000000000000 10023121322133213421352136213721 382139213A213B211302210222020000 150216020000000000000D060C060C06 0C060C060C060C060C060C060C060C06 0D060302230221020000220223022302 23022102220223022302230223020402 00000000000000000000000000000000 4B0F4A0F000001012002000000000000 20020121022101210221012102210121 02210121022101210201010102010000 050206020000000000001B060E060F06 000000000E060F06000000000E060F06 1B061002010102010000010102010101 02010101020101010201010102011002 00000000000000000000000000000000 5B0F5A0F000011013002000000000000 30021101120111011201110112011101 12011101120111011201110112010000 150216020000000000001B060E060F06 000000000E060F06000000000E060F06 1B062002110112010000110112011101 12011101120111011201110112012002 32213321342131213221332134213121 322100000000B1000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 B6000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000B50000000000 00000000000000000000000000000000 23032303230323032303230323032303 23030000000001011002000000000000 10020101020101010201010102010101 02010101020101010201010102010000 050206020000000000000D060C060C06 0C060C060C060C060C060C060C060C06 0D061002010102010000010102010101 02010101020101010201010130020101 02010101020101010201010102010101 02010000000011011002000000000000 13022102220223022302210222022302 23022102220204021201110112010000 1502160200000000000000000E060F06 000000000E060F06000000000E060F06 00001002110112010000110112011101 12011101120111011201110110021101 12011101120111011201110112011101 12010000000001012002000000000000 00000000000000000000000000000000 00000000000020020201010102010000 0502060200000000000000000E060F06 0000000017161816000000000E060F06 00001302210222020000230223022102 22022302230221022202230223022302 21022202230223022102220223022302 23020000000011013002000000000000 00000000000000000000000000000000 00000000000030021201110112010000 1502160200000000000000000E060F06 0000000007160816000000000E060F06 00000000000000004A074B0700000000 00000000000000000000000000000000 00000000850200000000000000000000 05020000000001011002000000000000 00000000000000000000000000000000 00000302230214020201010102010000 0502060200000000000000000E060F06 00000000000000000000000017161816 00000000000000005A075B0700000000 00000000000000000000000000000000 00000000000000000000000000000000 15020000000011011002000000000000 00000000000000000000000000000000 00002002120111011201110112010000 15021602000000000000000017161816 00000000000000000000000007160816 00000000000000004A074B0700000000 00000000000000000000000000000000 00000000000000000000000000000000 05020000000001012002000000000000 00000000000000000000000000000000 00003002020101010201010102010000 05020602000000000000000007160816 00000000070608060000000000000000 00000000000000005A075B0700000000 00000000000000000000000000000000 00000000000000000000000000000000 15020000000011013002000000000000 00000000000000000000000000000000 00001302230223022302040212010000 15021602000000000000000000000000 44004500170618060000000000000000 00000000000000004A074B0700000000 00000000000000000000000000000000 00000000000000000000000000000000 05020000000001011002000000000000 00000000000000000000000000000000 00000000000000000000200202010000 05020602000000000000000000000000 540055000E060F060000000007060806 00000000000000005A075B0700000000 00000000000000000000000000000000 00000000000000000000000000000000 15020000000011011002000000009600 00000000000000000000000000000000 00000000000000000000300212010000 15021602000000000000000007060806 000000000E060F060000000017061806 00000000030223020000230221022202 23020402000000000000000000000000 00000000000000000000000000000000 05020000000001011302210222022302 04020000000000000000000000000000 00000000000003022302140202010000 05020602000000000000000017061806 000000000E060F06440045000E060F06 00000000100202010000010102010101 02011002000000000000000000000000 00000000000000000000000000000000 15020000000011011201110112011101 10020000000000000000000000000000 00000000000010021201110112010000 1502160200000000000000000E060F06 000000000E060F06540055000E060F06 00000000100212010000110112011101 12011302230221022202230223022102 22022302040200000000000000000302 23020000000001010201010102010101 10020000000000000000000000000000 00000000000010020201010102010000 05020602322133213121030223022302 21022202230223022102220223022302 23022302140202010000010102010101 02010101020101010201010102010101 02010101100200000000000000001002 02010000000011011201110112011101 20020000000048004900000000004800 49000000000020021201110112010000 15021602112112211121100211011201 11011201110112011101120111011201 11011201110112010000110112011101 12011101120111011201110112011101 12011101100200000000000000002002 120100000000B2000000000000000000 00000000000058005900000000005800 59000000000000000000000000000000 B3000000230323032303000000000000 00000000000000000000000000000000 00000000000000000000B40000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000001010201010102010101 30020000000000000000000000000000 00000000000030020201010102010000 01010201010102010101020101010201 01010201010120020101020101010201 01010201010102010000010102013002 0201010130020C060C060C060C060C06 0C060C060D0600000000000000001002 02010000000011011201110112011101 10020000000000000000000000000000 00000000000010021201110112010000 11011201110112011101120111011201 11011201110130021121122111211221 11211221112112210000112112211302 23022302140200000E060F0600000000 0E060F06000000000000000000001002 12010000000001010201010102010101 10020000000000000000000000000000 00000000000020020201010102010000 01010201010102010101020101010201 01010201010110023331313134313331 313133313431323100003A313B310000 00000000000000001716181600000000 0E060F06000000000000000000002002 02010000000011011201110112011101 10020000000000000000000000000000 00000000000030021201110112010000 11011201110112011101120111011201 11011201110110020000000000000000 00000000000000000000000000000000 00000000000000000716081600000000 0E060F06000000000000000000003002 12010000000001010302230223022302 14020000000000000000000000000000 00000000000013022302040202010000 01010201010102010101020101010201 01010201010120020000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 0E060F06000000000000000000001002 0201000000001101100200002B020000 00000000000000000000000000000000 00000000000000000000100212010000 11011201110112011101120111011201 11011201110130020000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 0E060F06000000000000000000001002 12010000000001012002000000000000 00000000000000000000000000000000 00000000000000000000200202010000 01010201010102010101020101010201 01010201010110020000000000000000 00000000000000000000000000000000 00000000000000000706080600000000 17161816000000000000000000002002 02010000000011013002000000000000 00000000000000000000000000000000 00000000000000000000300212010000 11011201110112011101120111011201 11011201110110020000000000000000 00000000000000000000000000000000 00000000000000001706180600000000 07160816000000000000000000003002 12010000000001011302230223022302 04020000000000000000000000000000 00000000000000000000130223020000 23022302230223022302210222022302 23022302230214020000000000000000 00000000000000000000000000000000 00000000000000000E060F0600000000 00000000000000000000000000001002 02010000000011011201110112011101 10020000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 60056105000000000000000000000000 00000000000000000E060F0600000000 00000000000000000000000000001002 12010000000001010201010102010101 2002000000000000000000001C261D26 1E261F26000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 70057105851285120000000000000000 00000000000000000E060F0600000000 07060806000036261D261E2637262002 02010000000011011201110112011101 30020000000000003A263B262C262D26 2E262F26312634263226000000000000 0000000009020A020000000009020A02 0000000009020A020000000000000000 27028512070008000000270233213421 31213221392100000E060F0644004500 1706180600002C262D262E262F263002 12010000000001010201010102010101 1002000000002B12012602263C263D26 3E263F26112612261126000000000000 0000000019021A020000000019021A02 0000000019021A020000000000000000 01210201010102010000012102210121 02210121022100000E060F0654005500 0E060F0600003C063D063E063F061002 02010000000023022302210222022302 14020B000C000C000C000C000C000C00 0C000C000C000C000C000C000C000000 0C000C000C000C000C000C000C000C00 0C000C000C000C000C000B0831213221 11211201110112010000110112011101 1201110112010B000C000C000C000C00 0C000C000B0824022502260228021002 120100000000B9000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 B100B000000000000000000000000000 00000000000000000000000023032303 00000000000000000000B100B1000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000001010201010102013002 0B000D000C000C000C000C000C000C00 0C000C000C000C000C000C000C000000 0C000C000C000C000C000C000C000C00 0C000C000C000C000C000D000B081002 02010101020101010000110112011101 12011101120111011201110112011002 00000000000000000000000010020201 01010000000021022202230223021402 000000000000000000000E060F060000 00000E060F0600000000000000000000 00000000000000008502000000000000 85020000000000000000000000001302 23022302230204020000230223022302 23022302230223022302230223021402 00000000000000000000000013022302 04020000000000000000000000000000 00000000000000000000171618160000 00000E060F0600000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000010020000150216023D26 3E263D2638363C363D363E363F360000 00000000000000000000000000000000 10020000000000000000000000000000 00000000000000000000071608160000 00000E060F0600000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000010020000050206023836 3A363B3600002C362D362E362F360000 00000000000000000000000000000000 10020000000000000000000000000000 00000000000000000000000000000000 00000E060F0600000000000000004C04 00000000000000000000000000000000 00000000000000000000000000000000 00006206630610020000050206020000 0000000000001C361D361E361F360000 00000000000000000000000000000000 10020000000000000000000000000000 00000000000000000000000000000000 00000E060F0600000000000000004C04 00000000000000000000000000000000 00000000000000000000000000000000 00007206730610020000150216020000 00000000000000000000000000000000 00000000000000000000000000000000 10020000000000000000000000000000 00000000000000000000070608060000 00001716181600000000000057045704 00000000000000000000000000000000 00000000000000000000620663066C06 6D066206630610020000050206020000 00000000AA07AA0F0000000000000000 00000000000000000000000000000000 10020000000000000000000000000000 00000000000000000000170618060000 00000716081600000000030221020000 23022302040200000000000000000000 00000000000000000000720673067C06 7D067206730610020000150216020000 00000B02000000000B0A000000000000 00000000000000000000000000000000 10020000000000000000000000000000 000000000000000000000E060F060000 00000000000000000000100202010000 01010201100200000000000000000000 00006C066D06620663066C066D066206 63066C066D0610020000050206020000 00001B02000000001B02000000000000 00000000000000000000000000000000 10020000000000000000000000000000 000000000000000000000E060F060000 00000000000000000000200212010000 11011201100200000000000000000000 00007C067D06720673067C067D067206 73067C067D0610020000150216020000 00001B02000000000D02000000000000 00000000000000000000000000000000 10020000000000000000000000000000 000000000000000000000E060F060000 00000706080600000000300202010000 01010201100200000000620663066C06 6D06620663066C066D06620663066C06 6D066206630610020000050206020000 00000D02000000001B02000000000000 00000000000000000000000000000000 10020000000000000000000000000000 000000000000000000000E060F064400 45001706180600000000100212010000 11011201100200000000720673067C06 7D06720673067C067D06720673067C06 7D067206730610020000150216020000 00001B02000000001B02000000000000 00000000000000000000000000000000 10020000000000000000000000000000 000000000000000000000E060F065400 55000E060F0600000000100202010000 01010201130223022302230223022302 230223020402620663066C066D066206 63060302230214020000050206020000 00001B024014401C1B02000000000000 00000000000000000000000000000000 10020000000032213321342131213221 33213421312132210302210222022302 23022102220223022302140212010000 11011201110112011101120111011201 110112011002720673067C067D067206 73061002020101010000230223022302 23022302230223022302230223022302 23022302230223022302230223022302 14020000000023032303230323032303 23032303230323030000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000 #4:AUX. BG 00001420BF12AA12AA12BF1ABF12AA12 AA12AA12AA12BF1ABF12AA12AA12AA12 AA12BF1ABF12AA12AA12BF1ABF22AA22 B005BF2ABF22AA22B005B705B905BF2A BF22AA22B905AA22B005BF2ABF22AA22 AF22BF2A0000AB00000000000000AC00 00000000000000000000800081008200 830000000000AD00000000000000BB00 AA05A4050000BC00AA05A005A805A005 00008400A105BE03A20500000000BD00 AE030000000201220222032204220522 06220722082209220A220B220C220D22 0E220F22000000000000000000001122 12221322142215221622172218221922 1A221B221C221D221E221F2200000000 00000000000000202222232224222522 26222722282229222A222B222C222D22 2E222F22000000000000000000000020 00203322342200200020372200200020 00200020002000200020002000000000 00000000000041234223432344234523 46234723482349234A234B234C234D23 4E230000000000000000000000005123 52235323542355235623572358235923 5A235B235C235D235E23000000000000 00000000000000006223632364236523 66236723682369236A236B236C236D23 6E230000000000000000000000000000 00007323742300000000772300000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000120022003200420052006200720 082009200A200B200C200D200E200F20 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000007004 71047204730474047504760477040000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000007804 79047A047B047C047D047E0400004A05 4B054C054D054E054F05000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00008005810582058305840500002021 21212221232124212521262127212821 29210000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000018211921 1A211B211C211D211E211F2100004027 41274227432744274527462747274827 49270000000000000000000000000000 00000000000000000000000000000000 00000000000000006507660767076807 69076A076B076C076D076E0700001022 11221222132214221522162217220000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000602261226222632200003026 31263226332634263526362637263826 39260000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 59265A265B265C265D265E2600002A24 2B242C242D242E242F24000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00003A243B243C243D243E2400000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000005025512552255325 54255525562557255825000000000000 00000000 #5:ANIM. CHARS 071B372F4E444020071C2830717B7F3F 80CC860607071772703C7EFEF7F7F7F2 071B372F4E444020071C2830717B7F3F 80CC86060B0B1B76502C76F6FBFBFBF6 071B372F4E444020071C2830717B7F3F 004C06060F0F1F7E703C7EBEBFBF7F7E 0619332B46444022061C283071737B3F 80CC86060F0F1F7E703C7EFEFFFFFFFE 01011D71E0811DFC013C608C1D7CFCFD 000038382101071F80BC86879FBFBFBF 000003060C08031F00070C1913171F1F 400C8C060202A2AE60AC24AEAEAEAEAE 03070F0E1400001F000408091B1F1F1F 00009010181878F8C0E070F0F8F8F8F8 02001120401014750635245535757575 0000C0E0400838F800E03018B8F8F8F8 1B0005000C0C00001F000A0405040800 EC009800D8188000EC00781050100880 1B000503020302001F000A0301010200 EC009840E0608000EC00782040402080 1B000501000101001F000A0001010100 7C0098C040C0C0007C0078C0C0404080 19000501020300001D000A0201010200 FC009820E060A000FC00786060402080 0052A3C7EF00A2A2182E5F3F1F000A0A 0052A3C7EF00A8A8182E5F3F1F008282 0052A3C7EF002A2A182E5F3F1F00A0A0 0052A3C7EF008A8A182E5F3F1F002828 306350A040030003081B285BB8787838 306050A340030003081B2858B878783B 306350A34003000008182858B87B783B 306350A3400000030818285BB87B7838 281C0A2DC03FFFC058241633C0FF003F 0000C03028B4FA740000C07058CC06CC 001C0A2DC03FFFC000241633C0FF003F 0000C03028B4FA740000C07058CC06CC 00000A2DC03FFFC000001633C0FF003F 0000C03028B4FA740000C07058CC06CC 0000002DC03FFFC000000033C0FF003F 0000C03028B4FA740000C07058CC06CC 00000000C03FFFC000000000C0FF003F 0000C03028B4FA740000C07058CC06CC 0000002DC03FFFC000000033C0FF003F 0000C03028B4FA740000C07058CC06CC 00000A2DC03FFFC000001633C0FF003F 0000C03028B4FA740000C07058CC06CC 001C0A2DC03FFFC000241633C0FF003F 0000C03028B4FA740000C07058CC06CC C0211E3468F00000C03F122C58F00000 2830C000000000005870C00000000000 C0211E3400000000C03F122C00000000 2830C000000000005870C00000000000 C0211E0000000000C03F120000000000 2830C000000000005870C00000000000 C021000000000000C03F000000000000 2830C000000000005870C00000000000 C000000000000000C000000000000000 2830C000000000005870C00000000000 C021000000000000C03F000000000000 2830C000000000005870C00000000000 C0211E0000000000C03F120000000000 2830C000000000005870C00000000000 C0211E3400000000C03F122C00000000 2830C000000000005870C00000000000 1E78E000666600E001071F000101001F B8BEBF00090900BFF8FEFF00393900FF 1E78E0004C4C00E001071F000202001F B8BEBF00131300BFF8FEFF00737300FF 1E78E0009C9C00E001071F000000001F B8BEBF00262600BFF8FEFF00E6E600FF 1E78E000393900E001071F000000001F B8BEBF00464600BFF8FEFF00CECE00FF 1E78E000737300E001071F000000001F B8BEBF00040400BFF8FEFF009C9C00FF 1C1C0C0C0C10000024243C3C3C080000 4C4C0C000C0C10003A3A3C003C3C0800 CECE0C000C0C00107D7D3C003C3C0008 6C6C0C000C0C10003E3E3C003C3C0800 4CA654640E170802B45F2E5E351F0F03 09400A0448E010C019D95A5EDCF8F0C0 4EA456670C170802B65E2D5F341F0F03 09004AC408E010C05959DADE1CF8F0C0 4CA654640E170802B45F2E5E351F0F03 09400A0448E010C019D95A5EDCF8F0C0 4CA457660C140802B45C2F5F361E0F03 0900CA44082010C01919DADE5C78F0C0 00000000000000000000000000000000 000000000000FF000000000000FFFF00 00000080000000000000000000000000 000000000000FF000000000000FFFF00 000000C0000000000000000000000000 000000000000FF000000000000FFFF00 000000C0000000000000202000000000 000000000000FF000000202000FFFF00 000000C0000000000000303000000000 000000000000FF000000303000FFFF00 000000C0000000000008383800000000 000000000000FF000000303000FFFF00 000000C000000000000C3C3C00000000 000000000000FF000000303000FFFF00 020202C200000000020E3E3E00000000 000000000000FF000000303000FFFF00 030303C300000000030F3F3F00000000 000000000000FF000000303000FFFF00 00000000824428100000000000000000 00000000F54095000000000000949500 00000100240025000000000101952500 00000000680068000000000000446800 2828EEAA00000000006CEEAA00000000 000000000000123200000000003C6E4E 000080006E2244000000008080AACC00 00000400F34192000000000404959600 00000000400040000000000000204000 260E3C00000000005E7E3C0000000000 000000000000003E0000000000003C42 00000000F54095000000000000959500 000000009A005A000000000000515A00 00000000000000000000000000000000 3E3C000000000000423C000000000000 00000000824428100000000000000000 000010009D0095000000001000559500 000008006302690000000008084A6900 00008000000000000000008080808000 2828EEAA00000000006CEEAA00000000 00000000824428100000000000000000 000080006E2244000000008080AACC00 00000000AC006A000000000000AA6A00 000000005B00DA00000000000092DA00 2828EEAA00000000006CEEAA00000000 #6:TITLE CHARS 00000000000000000000000000000000 000000000000000F000000000000000F 04020000000000FF00000000000000FF 043030084E2601800030300C0E260180 00B60E0E88F0F04100360E0E0870F040 00000000000000330000000000000033 00000000000000E000000000000000C0 000000000000401F000000000000001F 00000000000000C300000000000000D3 000000000000001E000000000000001C 00000000000020440000000000000004 00000000000000690000000000000060 00000000000080110000000000000011 00000000000002A60000000000000082 00000000010020000000000001002020 00000000E0C0C0C000000000E0C0C0C0 FE82AA92AA82FE000000000000000000 63230108000001000303010000000000 FFFF80A04010180CFFFF80C06010100C 80800000000000008080000000000000 40404851515054524040404141404042 3202F8C1FE0FCF3E3000C1C1FE0F0F3E F2F0C0D10306401BE0E0C0010304041F 3F20C0FFFC0006F73F20C0FFFC0002F7 C3000F1C1FE7DF0BC3000C1C1FE79F03 2E0C8C10F103838C0E0C1C18F103028C 1C1070E08183132E1C1070E08183030E 38183041C286080F3C187061C2860C0F 3040C081070E4CB83040C181070E0EB8 7060D68C0A1028517060C78C08182051 81071F3B31C1810181071F3321C1C101 C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0 FE82AA92AA82FE000000000000000000 FE82AA92AA82FE000000000000000000 2222010C040001000202010000000000 0000F070703080000000807070300000 51514640404043404141474040404040 FCFA01000000FF00FCF8F10000000000 3F3F00000000FF003F3FFF0000000000 EFDC00000000FF00EFDCBC0000000000 000100000000FF000001000000000000 FCF081000000FF00FCF0F00000000000 1C1C00000000FF001C1C700000000000 0F0F2E000000FF000F0F0D0000000000 F0E108000000FF00F0E1CE0000000000 870730000000FF0087073F0000000000 FFFF00000000C000FFFFFF0000000000 C0C0400000000000C0C0800000000000 FE82AA92AA82FE000000000000000000 FE82AA92AA82FE000000000000000000 FE82AA92AA82FE000000000000000000 00080000040001000000000000000000 40404040404080004040404040400000 FE82AA92AA82FE000000000000000000 FE82AA92AA82FE000000000000000000 00100000621010000000000000000000 000C0E7F7E1C08000814728172140800 00183C7E7C181810102844826C282810 0018387F7E38100010284E814E281000 0018181C7E7C38101028286C82442810 FE82AA92AA82FE000000000000000000 FE82AA92AA82FE000000000000000000 FE82AA92AA82FE000000000000000000 FE82AA92AA82FE000000000000000000 FE82AA92AA82FE000000000000000000 000000000000FF60000000000000FF70 030001000000FF00030100000000FF00 088080403000F20EF0C0C0701018FE43 00483030400000000040303030000080 000000000000FF800000000000007F4C 000000000000C000000000000000C000 0000000000003FC00000000000003FE0 000000000000FB04000000000000F324 000000000000FC00000000000000FCE0 0000000000001F300000000000001F1B 000000000000F000000000000000F090 0000000000007FC00000000000007F6E 000000000000C101000000000000C141 0000000006040404000000000007C7C7 FE82AA92AA82FE000000000000000000 FE82AA92AA82FE000000000000000000 10100C04020100001C1C060303000000 00000000008080400000000080E06070 06060606060606060303030303030303 010606080808080D8183838E8E8E8888 00010400002000C0C1C1063E003030C0 01030408182020C0000107060C3838E0 0000000000020000C0C0000000010100 1810600000000000041C3063E0180004 001061020C0C1000101160E302041C10 40808102020C001060E08001020C0C10 01428608103040804163838E0C187070 8001060C08300102C181020208303141 0600002141C60008878008303167C78E 38204000040404FC0638E0C4C6060606 FE82AA92AA82FE000000000000000000 FE82AA92AA82FE000000000000000000 FE82AA92AA82FE000000000000000000 10100C02020100001C1C0E0303010000 06060606068606060303038383C37373 08080800000800008E8E808080878080 01010600000000000101000000FF0000 0000000000000000C0C0000000FF0000 00000000000000000000000000FF0000 00000000000000000302000000FF0000 00000000000000000000000000FF0000 40408000000000006060000000FF0000 40401000000000007070000000FF0000 0608000000000000030E000000FF0000 20200000000000003838000000FF0000 00000000000000000000000000F00000 FE82AA92AA82FE000000000000000000 FE82AA92AA82FE000000000000000000 FE82AA92AA82FE000000000000000000 FE82AA92AA82FE000000000000000000 760608060201000073030F0301010000 00000000000040008080808080804000 FE82AA92AA82FE000000000000000000 FE82AA92AA82FE000000000000000000 00001000140000000000000000000000 FE82AA92AA82FE000000000000000000 FE82AA92AA82FE000000000000000000 FE82AA92AA82FE000000000000000000 FE82AA92AA82FE000000000000000000 FE82AA92AA82FE000000000000000000 FE82AA92AA82FE000000000000000000 FE82AA92AA82FE000000000000000000 FE82AA92AA82FE000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000010000000000000001000000000 00000000000000000000001000000000 00001038100000000000103810000000 00001028100000000000103810000000 00000000000000000000001818000000 00001824241800000000183C3C180000 00000018180000000000182424180000 00003C3C3C3C00000000240000240000 0000183C3C1800000018244242241800 18183CFFFF3C18181824428181422418 003C7E7E7E7E3C003C4281818181423C 3C7EFFFFFFFF7E3C4281000000008142 #7:CREDIT CHARS 00000000000000000000000000000000 04101010100400001C303232321D0003 10104844444840803030F9EEEFF9C080 000089509050000000009FF5B5F50000 0002108A8A920000000630DFDFB60000 2024202024200000606CE0606CE00000 02080808080800007F19191919190000 80804422242200008080CC767C6E0000 02100410101000003E313C3131310000 028209888888081006863FDDDDBD1870 10120892928A0000303679B7B79F0000 00004222222202040000CE76766E061C 1109151111110000333F3F3333330000 0000111414110000000077BCBC770000 4044201414140000C0CCE3BEBEBE0000 0000884448440000000098ECF8DC0000 084140494909000079C3C7DBDB7B0000 80008810100800008000D83030580000 104A4A124A480000F3DEDEF6DEDB0000 9149555151910000B3FFFFF3F3B30000 080808080801000018181818181F0000 000011111111010200007BBBBB77030E 000021111121000000006BBBBB670000 20201020201000006060F06060300000 02010102020200000607070707060000 4040444444440000C1C1DFEDEDDC0000 9090488484440000B0B0F9AEAEED0000 00014845454500000003F8EFEFEF0000 02022212221200000E0666B6E6760000 0804080404080000382C392E2E390000 10114845454900003033F8EFEFFB0000 04041512121100000C0C7FBEBE7B0000 2010122444440000E0B0B6EDCDCC0000 00004222224202040000CE7777CF061C 00004485858500000000DFAFAF9F0000 0000A255141400000000EFFF3C3C0000 001082515151000000308EFBFBFB0000 0000101010101020000070B1B17030E0 00002422222200000000FC7777F60000 00212020202000000163E16060E30000 4408844848880000CC18BED9D99A0000 00004080804000000000C08080C00000 4040414040090000C0C0C3C5C5FB0000 000022A2AA140000010167E7FF3D0000 2090922192910000E0B0B6EBBEB70000 0000102010200000010171E131E10000 9452519192940000BCF7F3F3F7BC0000 4000000000400000C000000000C00000 0411101111110000FC33303333330000 22221222221200006E66F66767360000 00004020402000000000C162C2E10000 00004844444400000000F9EEEEED0000 4140404142420000C7C5C5C7C6C60000 00808808080800000080BD5D5D3B0000 00008990899000000000BBF59FF30000 04020584048400000C0F0F8C0C8C0000 4040444444440000C0C0EDEFECDF0000 00104194549100000030C7BCFCB70000 0411101111110000FC33303333330000 00002854444400000000F9FECECD0000 0202824042820000070787C6C7870000 9090921191920000F0B0B63BBBB60000 0000112211220000000077EE33EE0000 FE82AA92AA82FE000000000000000000 0048094A4A4A000060D8FBDEDEDE0000 20201020201000006060F06161300000 00002422222200000000FC7777F60000 21212121212000006363E36363E30000 000004020422000000000D171CEE0000 000024224442000001006C76DCCE0000 4241424242420000C6C7C7C6C6C60000 2020A2222222000060E0F677766F0000 0008204A2A4800000018E3DE7EDB0000 00008000008000000000800000800000 1048494A4A12000070D8DBDEDE760000 004104454545040800C31CEFEFDF0C18 00002111111100000000E7BBBBB70000 2020212222220000E060676766660000 000042A2222200000000D7F7766F0000 00104094549000000030C6BCFCB60000 01040404040400003F0C0C0C0C0C0000 4040211111110000C0C0E7BBBBB70000 04042512121100000C0CEFBEBEBB0000 0000102010200000000070E130E00000 204044224244000060C0CCF7D7CD0000 00004180808102020000C78585870606 202022A2A2220000E0606FF7F76E0001 00082128282820400018677D7DFD60C0 00020A8A888A081000063EDED8BE1870 00000000000000000001010101000000 2080828282220000E181979797EF0000 8088402A2A4800008098C37E7EDB0000 10109211129100007030B63B3EB70000 4040221112110000C0C0E6BBBEB70000 0101111111110000030377BBBB770000 FE82AA92AA82FE000000000000000000 04020504040400000C0F0F0C0C0C0000 4040445051450000C3C2DEF3F3DF0000 804048840804010180C0DBAE3A1F0303 0010815454910000003087FCFCB70000 FE82AA92AA82FE000000000000000000 0000000004010000030101010D070000 80809088900800008080B3DDF53B0000 00009089888800000000F0DFD8D80000 4425544545450000CCFFFCCFCFCF0000 2020242222240000E0606D77766D0000 08084488488400001818FC98D88C0000 0824240824240000786C6D7A6F6D0000 00008445854504080000AFEFAFDF0C18 0000A251111200000000E6FB3B360000 01012111111100000303E7BBBBB70000 FE82AA92AA82FE000000000000000000 1048494A4A12000070D8DBDEDE760000 004104454545040800C31CEFEFDF0C18 00002111111100000000E7BBBBB70000 2020202222200000E060636666630000 00009108089000000000B75D5DB50000 000009A0A188000000003BE5E7BB0000 0101108909902020030377DB5BF16060 00008000008000000000800000800000 1048481048480000F0D8DBF5DDDB0000 08119188919100001933B3FFB3B30000 000009880908000000003BDD5F3B0000 1010129112910000703036BB3EB70000 0104040404010000070C0C0C0C070000 0000211424110000000067BCEC770000 0000124141120000000076CBCB760000 FE82AA92AA82FE000000000000000000 080809084900000038181B1DDF630000 000012A121A20000000036EB6BE60000 000022112111000000006EBBEB7B0000 01040404040400003F0C0D0E0F0D0000 09098949894900003F1B9BDB9BDB0000 #8:12-23 BG(HOLD!) 00000000000000000000000000000000 00000000000000000000000000000000 #9:24-35 BG(HOLD!) 00000000000000000000000000000000 00000000000000000000000000000000 #10:36-47 BG(HOLD!) 00000000000000000000000000000000 00000000000000000000000000000000 #11:48-59 BG(HOLD!) 00000000000000000000000000000000 00000000000000000000000000000000 #12:*INNER REC.SONG 1DFE234284402273380102FFC1C8540D 51811F8C08FCE13809817EFD42A07768 878135F80A0310121E0443C0E08DC020 A4FC189F8393F086E134029A8590D428 86A184350D2FE1E4FC3C9F8793EB84F0 21D4001721A4C3E013D6A8865D2C65E9 81874097DD3066A27B9DB54232E9632F 4C0C3A0FFBA48C742854D8C6E6C6742A F4C0C3AA4824754C1EEA72D514CBA58C BD3030EA92091D0DB2015432D8F9572F 32E631F029F98699A5E054F30DF192A0 2A7986C9A5A054F37FC65E932F54F5AA 21974B197A6061D025F74C19A933F6A6 E05C5CC5D988175736766C05D5CB5D96 81757FF02B083D16192D3C282BFF4F0A 3A0EFB8006BDC0 #13:*ONE DAY SONG 53FD04429440261888030C620150C691 F085F8F23E709E01192BAC0420DFA854 0DEA010F0263F011D4101A020804091C 0606DF046F8291F14A041A0B15A041E1 7258BC2219408C4261B408CC2A1D138B 2F87BFC41FE22FF128B46E3B1E8FC71F 923720471C9191F218A27914560F0B92 075C9299349E512A6E494CAE5B40954B 25C47C51BE2A107637F8E5F4002804AA 11FFC005067E11143033B17AA705BCF4 23ECC28CE5061E613A84C103DE698847 54BC3BE6960BD5282DE5A11F66152F06 BE613A84C1013F984C65E17899627C64 B023E61F106DE60DF8C0AF981CF8787E 87410F824131A2046260D105A93FE2E3 3D0BC431E0A813FB0DF82A1923C0A9E3 2850F26941878C32E70211098CE42319 D853C1B098CD0231306683BC124BC17F 82A1FA0C815782D9685FC312F011FE30 CB9408442632A08C6582FCD4C979F0C1 289AF44454928A35E962350989B50497 4B10A41F4141FE678CC2A9C3BD857C48 C0824F60F3C65381AF8CA388D43E2129 0951C2EE380841A58BF1331988B2CC85 96662CB341659A8B2CD85966E2CB3816 59C8B2CE8596762CB3C1659E8B2CF859 67E28B21A79146C8CAB92D3C21A3A422 050F8C84232CC18F53C21190053CC263 2808C46764621148C2EC244C41878C0C 7890C38E03378C02A04679825E06C9F8 5E265CEC720197FE0CBC0EA1EF306FC0 51057CDFF02C204CE10181E6030780A8 096808FA385E3470BFBA485E34706BE6 128A8411804A3E342032F80B40090782 A0193E604FE04EFF846007B827F02703 0F3030F02A027F061FF08C00F704FE0C 018798187836760298DDA105E227A60C FC476801788FF60C3CD4404DE6800077 FC0840 #14:*CYBERNOID SONG 647E244194402613A549290A91268102 8DCB66D00B442261DA2FE109443D9600 05A791C42223FE6F85A60302A040E090 55C1A0EDF0884B7C2E14DE85B7C308F6 782C36350C8143C8788C5226B8A91F16 21E2E43C609F8C91F1B8EC7A391F21E4 121912E4647C90879290F2627E4E47CA 10CF299491F2A679590F2C21E5A31F2E 21E5E43CC0879890F3299B724D0879A9 0F3621E713742E75399C8A7CEE173C5C F680CF3BA01DF3E5B324397105C4B814 006C199C2A000B832C19EE5432F2F850 5CD9C205B53C7BFFE71429DE00052BCB 81848C06E102DA9C09FE1214B1459B03 09193A19EC6D927032F3585845480565 3C281AC82A06E102DA9E751A10B394F7 9C9A229637A16F73634452E6A689D7FF 030484A366D02CC9E1E2ECF16778CC3C 28EA4B0F2F43EEA32659EE772CCE1E04 7717350939492622294B2CC21E22E70C DDC6710F2AE666A410820DD440CC0CB9 ACBC34E226C048F193A093948C2488A3 A6752919E158C1B02A137527360F0FBA 3C860F72B95B8E9D8123C64E06394798 4BBE05EF05520359E5833C790C7C7A1E 14752A8797A095D1EF1E3385E771F2DC 8B394F79C1A229637A0AFDCDA3E17704 004F08127C1B0A704628061C4100127C 64FC4B968226342346883FA2A583A754 6131A3C3C4749122E8865823BC39AE1A F0D0C550616E4D0A54F58A9D42553884 2A6D0754D60CA99C15531822A5D0354B 204A9540552904FE05D1BD063E0609A8 123C3137093966A66028C8067808A900 CC0338126F3C8D0859CA7BCE0D114B1B D04BEE6E689D605FF02A43C7381401E8 6790F0A0818888A7A054F0330D3193D8 F8859CA7BCE8D114B1BD057ECEA04F91 1ACF2E19E158E9B00AE13744B02C4B81 3BA3DE40640D4F00C1E054024F83614E 1D9E0F802A8127C60A602A50C4C68827 C09C37A2A583A7548131A4C3C4749122 E8C65823BC39AE1AF0D0C550E16E4D0A 2E016A790954EA10A9C41D537832A6B0 554CE08A9840D52E812A590154AC4C83 93E02107B7938C90492418602AC093E6 958C70ECB065E891810B216866BD0C48 A05CEA822454FE3022F413740ABE308E A58126016804CF0330DF0244D40A9E0F 06F8C9C0FE01162A22BA2A054D46000C 097184A78CC03C22E6E3F4A29CA37C0A F3707920FCFA02328232C81315431820 23E862751C1CFC108814C26A0274E286 F86C7500D1878387028042219F0289FC C4111311310F888A4C6042C85A41AF48 8F861D4603AEA8C2451241B1EF463767 83F458A7173F182A781210D02B084140 B616147202C0AF02B9F50D802D872844 F425A2E7A12D0533819218063E02F640 30406A4B04B80D438A1A88E8036A3625 102BF73B8B17A135CEA2C529E22BA428 31F71B18E027A4E3CC02163511F00217 16128815FB9B1B8E135CD62C529E22BA 42831F73C09283A9E0C70E92F3A18004 B1581E056A038817780B48D857C02404 202A9C8024229C287503C9D1067C6504 4AC6F808DA1833206E047F009006DC40 #15: SFX 6801009A115E20006801002F11FF0000 7001009F128E08000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 0000000000000000680F000F00000000 40404040404040404040404040404040 40404040404040404040404040404040 40404040404040404040404040404040 40404040404040404040404040404040 40404040404040404040404040404040 40404040404040404040404040404040 40404040404040404040404040404040 40404040404040404040404040404040 40404040404040404040404040404040 40404040404040404040404040404040 40404040404040404040404040404040 40404040404040404040404040404040 40404040404040404040404040404040 40404040404040404040404040404040 40404040404040404040404040404040 40404040404040404040404040404040 421F0000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000