STGraves Posted May 22, 2015 Share Posted May 22, 2015 Hello, I've got one question, is there a way to keep fixed the colors in the playfield?, in my game I'm currently using pfscroll and as the screen moves the colors too change from one line to the next, and I wonder is there a way to keep the color fixed in the same line, scrolling with the playfield simultaneously? thanks Quote Link to comment Share on other sites More sharing options...
+Random Terrain Posted May 22, 2015 Share Posted May 22, 2015 You'd change the playfield colors every time playfieldpos=8. Quote Link to comment Share on other sites More sharing options...
STGraves Posted May 22, 2015 Author Share Posted May 22, 2015 No that didn't work, do you want me to insert the code of the game for you to check it out and to see why it doesn't work? Quote Link to comment Share on other sites More sharing options...
+Random Terrain Posted May 22, 2015 Share Posted May 22, 2015 No that didn't work, do you want me to insert the code of the game for you to check it out and to see why it doesn't work? You can if you want. Quote Link to comment Share on other sites More sharing options...
STGraves Posted May 22, 2015 Author Share Posted May 22, 2015 Thanks here it is E.T.'sRevenge.bas Quote Link to comment Share on other sites More sharing options...
+Random Terrain Posted May 22, 2015 Share Posted May 22, 2015 I don't see "if playfieldpos = 8 then blah blah blah" or "if playfieldpos <> 8 then blah blah blah" anywhere in that code. Can you post the version you said didn't work? Quote Link to comment Share on other sites More sharing options...
STGraves Posted May 23, 2015 Author Share Posted May 23, 2015 Emmm, it turns out that I don't know the exact code for that, can you please tell me the command?, because I only added the line playfieldpos=8 nothing else. Quote Link to comment Share on other sites More sharing options...
+Random Terrain Posted May 23, 2015 Share Posted May 23, 2015 Emmm, it turns out that I don't know the exact code for that, can you please tell me the command?, because I only added the line playfieldpos=8 nothing else. Then that's why it didn't work. Like I said, you'd change the playfield colors every time playfieldpos=8, so that means checking if playfieldpos is equal to 8, then displaying the correct batch of playfield colors. It would look kind of like this: if playfieldpos <> 8 then goto __Skip_PF_Color_Change on _PFColor_Counter goto __PFC00 __PFC01 __PFC02 __PFC03 __PFC04 . . . _PFColor_Counter = _PFColor_Counter + 1 if _PFColor_Counter >= [whatever the limit is] then _PFColor_Counter = 0 __Skip_PF_Color_Change [This section would be outside of your main loop] __PFC00 pfcolors: $50 $52 $56 $58 $5A $5C $5E $6C $6A $68 $66 $62 $60 end goto __Skip_PF_Color_Change __PFC01 pfcolors: $60 $50 $52 $56 $58 $5A $5C $5E $6C $6A $68 $66 $62 end goto __Skip_PF_Color_Change [And you'd continue with the rest of the color changing code here.] Quote Link to comment Share on other sites More sharing options...
STGraves Posted May 23, 2015 Author Share Posted May 23, 2015 Ok thanks¡¡¡, I have one more question, do I have to make just one loop of the color change? or do I have to repeat as much as the games lasts? Quote Link to comment Share on other sites More sharing options...
STGraves Posted May 23, 2015 Author Share Posted May 23, 2015 I've updated the code with the different stages of the playfield colors, but I get some weird error on one of the color codes, the $50 here is the updated code, please check it out and tell me what's wrong with it please. E.T.'sRevenge.bas Quote Link to comment Share on other sites More sharing options...
+Random Terrain Posted May 23, 2015 Share Posted May 23, 2015 Looks like pfcolors: got unintented by mistake and the other problem is that you have those labels inside of your main loop when they need to be outside of the main loop. Quote Link to comment Share on other sites More sharing options...
STGraves Posted May 23, 2015 Author Share Posted May 23, 2015 Can you explain me with a bit more of detail please?, it's just that I'm trying to do some new stuff, in other words I'm a newbie in this commands, since they're new to me. Quote Link to comment Share on other sites More sharing options...
+Random Terrain Posted May 23, 2015 Share Posted May 23, 2015 Search your code for "pfcolors:" and make sure all of them are indented.The code I said to put outside of your main loop goes here: ;*************************************************************** ; ; Reset switch check and end of main loop. ; ; Any Atari 2600 program should restart when the reset ; switch is pressed. It is part of the usual standards ; and procedures. ; ;``````````````````````````````````````````````````````````````` ; If the reset switch is not pressed, turn off reset ; restrainer bit and skip this subsection. ; if !switchreset then _Bit0_Reset_Restrainer{0} = 0 : goto __Main_Loop ;``````````````````````````````````````````````````````````````` ; If the reset switch hasn't been released since starting the ; game, skip this subsection. ; if _Bit0_Reset_Restrainer{0} then goto __Main_Loop ;``````````````````````````````````````````````````````````````` ; Clears the GAME OVER bit so the title screen will appear. ; _Bit2_Game_Over{2} = 0 ;``````````````````````````````````````````````````````````````` ; Reset pressed appropriately. Restart the program. ; goto __Start_Restart ;*************************************************************** ; ; PUT THE CODE YOU ARE GOTOING HERE. ; THIS IS OUTSIDE OF YOUR MAIN LOOP. ; ;*************************************************************** ;*************************************************************** ; ; Thomas animation frames. ; __Tom00 player1: %11100111 %01100110 %01100110 %00111100 %11011011 %10100101 %11011011 %11011011 %01011010 %00011100 %00110000 %01111011 %01010110 %00010100 %01111111 %00111100 end goto __Thomas_Frame_Done Quote Link to comment Share on other sites More sharing options...
STGraves Posted May 23, 2015 Author Share Posted May 23, 2015 Ok I did just that, it compiles correctly but when I try to run it for some reason only a black screen pops out with a buzzing noise, here are both the code and the .bas file ;**************************************************************** ; ; E.T.'s Revenge ; ; Stop E.T. from conquering the world. ; ;*************************************************************** ;*************************************************************** ; ; Kernel options. ; set kernel_options player1colors pfcolors no_blank_lines ;*************************************************************** ; ; Variable aliases go here (DIMs). ; ; You can have more than one alias for each variable. ; If you use different aliases for bit operations, it is ; easier to understand and remember what they do. ; ;``````````````````````````````````````````````````````````````` ;``````````````````````````````````````````````````````````````` ; _Master_Counter can be used for many things, but it is ; really useful for animating sprite frames when used ; with _Frame_Counter. ; dim _Master_Counter = a dim _Frame_Counter = b ;``````````````````````````````````````````````````````````````` ; Sound variables. ; dim _Sound0 = c dim _SoundCounter0 = d dim _C0 = e dim _V0 = f dim _F0 = g ;``````````````````````````````````````````````````````````````` ; Converts 6 digit score to 3 sets of two digits. ; ; The 100 thousands and 10 thousands digits are held by sc1. ; The thousands and hundreds digits are held by sc2. ; The tens and ones digits are held by sc3. ; dim sc1 = score dim sc2 = score+1 dim sc3 = score+2 ;``````````````````````````````````````````````````````````````` ; These can be used for other things using different aliases, ; but for the GAME OVER loop, they are used to temporarily ; remember the score for the 2 second score/high score flip. ; dim _Temp_Score01 = s dim _Temp_Score02 = t dim _Temp_Score03 = u ;``````````````````````````````````````````````````````````````` ; Remembers the high score until the game is turned off. ; dim _High_Score01 = v dim _High_Score02 = w dim _High_Score03 = x ;``````````````````````````````````````````````````````````````` ; All-purpose bits for various jobs. ; dim _BitOp_All_Purpose_01 = y dim _Bit0_Reset_Restrainer = y dim _Bit1_FireB_Restrainer = y dim _Bit2_Game_Over = y dim _Bit3_Swap_Scores = y dim _Bit7_Last_Life = y ;``````````````````````````````````````````````````````````````` ; Makes better random numbers. ; dim rand16 = z ;*************************************************************** ; ; Turns on pfscore bars. ; const pfscore = 1 ;*************************************************************** ;*************************************************************** ; ; PROGRAM START/RESTART ; ; __Start_Restart ;*************************************************************** ; ; Clears the screen. ; pfclear ;*************************************************************** ; ; Mutes volume of both sound channels. ; AUDV0 = 0 : AUDV1 = 0 ;*************************************************************** ; ; Clears 21 of the normal 26 variables (fastest way). ; Do not clear v, w, x, y, or z in this program. The variables ; v through x remember the high score. The variable y holds a ; bit that should not be cleared. The variable z is used for ; random numbers in this program and clearing it would mess ; up those random numbers. ; a = 0 : b = 0 : c = 0 : d = 0 : e = 0 : f = 0 : g = 0 : h = 0 : i = 0 j = 0 : k = 0 : l = 0 : m = 0 : n = 0 : o = 0 : p = 0 : q = 0 : r = 0 s = 0 : t = 0 : u = 0 ;*************************************************************** ; ; Clears 7 of the 8 All_Purpose_01 bits. ; ; Bit 2 is not cleared because _Bit2_Game_Over{2} is used ; to control how the program is reset. ; _BitOp_All_Purpose_01 = _BitOp_All_Purpose_01 & %00000100 ;*************************************************************** ; ; Makes sure sprites and missile are off the screen. ; player1y = 200 : player0y = 200 : bally = 200 ;*************************************************************** ; ; Skips title screen if game has been played and player ; presses fire button or reset switch at the end of the game. ; if _Bit2_Game_Over{2} then goto __Main_Loop_Setup ;*************************************************************** ;*************************************************************** ; ; TITLE SCREEN SETUP ; ; __Setup_Title_Screen ;*************************************************************** ; ; Clears lives and sets score color. ; pfscore1 = 0 : score = 2015 : scorecolor = $BE ;*************************************************************** ; ; Sets title screen background color. ; COLUBK = $60 ;*************************************************************** ; ; Restrains the reset switch. ; ; This bit fixes it so the reset switch becomes inactive if ; it hasn't been released after entering a different segment ; of the program. It does double duty by restraining the ; fire button too in the title screen loop. ; _Bit0_Reset_Restrainer{0} = 1 ;*************************************************************** ; ; Makes sure playfield is back to normal. ; playfieldpos = 8 ;*************************************************************** ; ; Sets up title screen playfield. ; playfield: .......XXX..XXX.X..XX........... .......X.....X..X.X..X.......... .......XX....X.....X............ .......X.....X...X..X........... .......XXX.X.X.X..XX............ ................................ XXX..XXX.X.X.XXX.X..X..XXX.XXX.. X..X.X...X.X.X...XX.X.X....X.... X..X.XX..X.X.XX..X.XX.X.XX.XX... XXX..X...X.X.X...X..X.X..X.X.... X..X.XXX..X..XXX.X..X..XXX.XXX.. end ;*************************************************************** ;*************************************************************** ; ; TITLE SCREEN LOOP ; ; __Title_Screen_Loop ;*************************************************************** ; ; Sets title screen playfield pixel color. ; pfcolors: $C0 $C2 $C6 $C8 $CA $CC $CE $CC $CA $C8 $C6 $C2 $C0 end ;*************************************************************** ; ; Displays the screen. ; drawscreen ;*************************************************************** ; ; Reset/fire button check and end of title screen loop. ; ; Starts the game if the reset switch or the fire button ; is pressed appropriately. ; ;``````````````````````````````````````````````````````````````` ; If fire button or reset switch is not pressed, clear the ; restrainer bit and jump to beginning of title screen loop. ; if !switchreset && !joy0fire then _Bit0_Reset_Restrainer{0} = 0 : goto __Title_Screen_Loop ;``````````````````````````````````````````````````````````````` ; If reset/fire hasn't been released since starting 'title ; screen' loop, jump to beginning of title screen loop. ; if _Bit0_Reset_Restrainer{0} then goto __Title_Screen_Loop ;``````````````````````````````````````````````````````````````` ; Reset or Fire pressed appropriately. Jump to main loop setup. ; goto __Main_Loop_Setup ;*************************************************************** ;*************************************************************** ; ; MAIN LOOP SETUP ; ; __Main_Loop_Setup ;*************************************************************** ; ; Clears the GAME OVER bit for the main loop. ; _Bit2_Game_Over{2} = 0 ;*************************************************************** ; ; Restrains the reset switch for the main loop. ; ; This bit fixes it so the reset switch becomes inactive if ; it hasn't been released after being pressed in the title ; screen section or the GAME OVER section. If the reset ; switch isn't being held down, this bit will be cleared ; in the main loop. ; _Bit0_Reset_Restrainer{0} = 1 ;*************************************************************** ; ; Restrains the fire button for the main loop. ; ; This bit fixes it so the fire button becomes inactive if it ; hasn't been released after being pressed in the title ; screen section or the GAME OVER section. If the fire ; button isn't being held down, this bit will be cleared ; in the main loop. ; _Bit1_FireB_Restrainer{1} = 1 ;*************************************************************** ; ; Starting position of player0 (Thomas). ; player1x = 74 : player1y = 78 ;*************************************************************** ; ; Starting position of player0 (E.T.). ; player0x = (rand/2) + (rand&15) : player0y = 0 ;*************************************************************** ; ; Defines ball height and location. ; ballheight = 4 : bally = 250 ;*************************************************************** ; ; Sets background color. ; COLUBK = $F0 ;*************************************************************** ; ; Sets score and score color. ; score = 0 : scorecolor = $1E ;*************************************************************** ; ; Sets number of lives and sets color. ; pfscore1 = %01010101 : pfscorecolor = $AE ;*************************************************************** ; ; Sets up the main loop playfield. ; playfield: ...........X.......X............ ...........X.......X............ ...........X.......X............ ...........X.......X............ XXXXXXXXXXXX.......XXXXXXXXXXXXX ................................ ................................ ................................ XXXXXXXXXXXX.......XXXXXXXXXXXXX ...........X.......X............ ...........X.......X............ ...........X.......X............ end ;*************************************************************** ;*************************************************************** ; ; MAIN LOOP (MAKES THE GAME GO) ; ; CTRLPF = $31 ballheight = 8 __Main_Loop ;*************************************************************** ; ; Sets E.T. sprite color. ; COLUP0 = $DC ;*************************************************************** ; ; Makes ball a little wider. ; NUSIZ0 = $35 ;*************************************************************** ; ; Animation counters. ; ;``````````````````````````````````````````````````````````````` ; Increments _Master_Counter. ; _Master_Counter = _Master_Counter + 1 ;``````````````````````````````````````````````````````````````` ; Skips this subsection if _Master_Counter is less than 7. ; if _Master_Counter < 7 then goto __Skip_Counters ;``````````````````````````````````````````````````````````````` ; Increments _Frame_Counter and clears _Master_Counter. ; _Frame_Counter = _Frame_Counter + 1 : _Master_Counter = 0 ;``````````````````````````````````````````````````````````````` ; Clears _Frame_Counter if it is greater than 3. ; if _Frame_Counter > 3 then _Frame_Counter = 0 __Skip_Counters ;*************************************************************** ; ; Thomas animation (4 frames, 0 through 3). ; on _Frame_Counter goto __Tom00 __Tom01 __Tom02 __Tom03 __Thomas_Frame_Done ;*************************************************************** ; ; E.T animation (4 frames, 0 through 3). ; on _Frame_Counter goto __ET00 __ET01 __ET02 __ET03 __ET_Frame_Done ;*************************************************************** ; ; ball check and fire button check. ; ;``````````````````````````````````````````````````````````````` ; If ball is off the screen, jump to fire button check. ; if bally > 240 then goto __FireB_Check ;``````````````````````````````````````````````````````````````` ; Moves ball and skips fire button check. ; bally = bally - 2 : goto __Skip_FireB __FireB_Check ;``````````````````````````````````````````````````````````````` ; Checks fire button since ball is off the screen. ; If fire button is not pressed, skip this subsection. ; if !joy0fire then _Bit1_FireB_Restrainer{1} = 0 : goto __Skip_FireB ;``````````````````````````````````````````````````````````````` ; If fire button hasn't been released since title screen, ; skip this subsection. ; if _Bit1_FireB_Restrainer{1} then goto __Skip_FireB ;``````````````````````````````````````````````````````````````` ; Starts the firing of ball. ; bally = player1y - 16 : ballx = player1x + 4 __Skip_FireB ;*************************************************************** ; ; Joystick movement check. ; if joy0up then player1y = player1y - 1 : pfscroll down if joy0down then player1y = player1y + 1 : pfscroll up if joy0left then player1x = player1x - 1 : pfscroll right if joy0right then player1x = player1x + 1 : pfscroll left ;*************************************************************** ; ; Keeps player1 within screen borders. ; if player1x < 3 then player1x = 3 if player1x > 150 then player1x = 150 if player1y < 20 then player1y = 20 if player1y > 84 then player1y = 84 ;*************************************************************** ; ; E.T. chases the player. ; if player0y < player1y then player0y = player0y + 1 if player0y > player1y then player0y = player0y - 1 if player0x < player1x then player0x = player0x + 1 if player0x > player1x then player0x = player0x - 1 ;*************************************************************** ; ; E.T./ball collision check. ; if !collision(ball,player0) then goto __Skip_ET_Kill ;``````````````````````````````````````````````````````````````` ; Adds 1 to the score. ; score = score + 1 ;``````````````````````````````````````````````````````````````` ; Sound effect 1 setup. ; if _Sound0 then goto __Skip_Sound0_Setup _Sound0 = 1 : _SoundCounter0 = 10 _C0 = 4 : _V0 = 12 : _F0 = 14 temp5 = 255 : if player0y < player1y then temp5 = player1y - player0y if temp5 < 30 then _C0 = 12 ; Makes a different sound when closer to player. __Skip_Sound0_Setup ;``````````````````````````````````````````````````````````````` ; Moves E.T. to new location and removes missile. ; player0x = (rand/2) + (rand&15) : player0y = 0 : bally = 250 __Skip_ET_Kill ;*************************************************************** ; ; E.T./Thomas collision check. ; ;``````````````````````````````````````````````````````````````` ; if no collision between sprites, skip this subsection. ; if !collision(player0,player1) then goto __Skip_Players_Touch ;``````````````````````````````````````````````````````````````` ; Subtracts 1 from the score. ; if sc3 > 0 then score = score - 1 ;``````````````````````````````````````````````````````````````` ; if pfscore1 bar is empty, activate last life bit. ; if !pfscore1 then _Bit7_Last_Life{7} = 1 ;``````````````````````````````````````````````````````````````` ; Deletes a life. ; if pfscore1 then pfscore1 = pfscore1/4 ;``````````````````````````````````````````````````````````````` ; Moves E.T. to new location and removes missile. ; player0x = (rand/2) + (rand&15) : player0y = 0 : bally = 250 ;``````````````````````````````````````````````````````````````` ; Sound effect 2 setup. ; if _Sound0 then goto __Skip_Players_Touch _Sound0 = 2 : _SoundCounter0 = 10 _C0 = 7 : _V0 = 12 : _F0 = 12 __Skip_Players_Touch ;*************************************************************** ; ; Point sound. ; ;``````````````````````````````````````````````````````````````` ; If the sound isn't on, skip this subsection. ; if _Sound0 <> 1 then goto __Skip_Sound1 ;``````````````````````````````````````````````````````````````` ; Flips the frequency between 11 and 14. ; _F0 = _F0 ^ 5 ;``````````````````````````````````````````````````````````````` ; Sets the tone, volume and frequency. ; AUDC0 = _C0 : AUDV0 = _V0 : AUDF0 = _F0 ;``````````````````````````````````````````````````````````````` ; Decreases volume by 1 and makes sure it doesn't go below 2. ; _V0 = _V0 - 1 : if _V0 < 2 then _V0 = 2 ;``````````````````````````````````````````````````````````````` ; Decreases the sound counter. ; _SoundCounter0 = _SoundCounter0 - 1 ;``````````````````````````````````````````````````````````````` ; If sound counter is zero, clear _Sound0 and mute channel. ; if !_SoundCounter0 then _Sound0 = 0 : AUDV0 = 0 __Skip_Sound1 ;*************************************************************** ; ; E.T. touches Thomas sound. ; ;``````````````````````````````````````````````````````````````` ; If the sound isn't on, skip this subsection. ; if _Sound0 <> 2 then goto __Skip_Sound2 ;``````````````````````````````````````````````````````````````` ; Sets the tone, volume and frequency. ; AUDC0 = _C0 : AUDV0 = _V0 : AUDF0 = _F0 ;``````````````````````````````````````````````````````````````` ; Decreases volume by 1 and makes sure it doesn't go below 2. ; _V0 = _V0 - 1 : if _V0 < 2 then _V0 = 2 ;``````````````````````````````````````````````````````````````` ; Decreases the sound counter. ; _SoundCounter0 = _SoundCounter0 - 1 ;``````````````````````````````````````````````````````````````` ; If sound counter is zero, clear _Sound0 and mute channel. ; Also tells game to end if last life is lost. ; if !_SoundCounter0 then _Sound0 = 0 : AUDV0 = 0 : if _Bit7_Last_Life{7} then _Bit2_Game_Over{2} = 1 __Skip_Sound2 ;*************************************************************** ; ; Sets player1 color. ; player1color: $26 $26 $44 $44 $2A $2A $26 $44 $26 $2A $2A $2A $2A $2A $44 $44 end ;*************************************************************** ; ; Sets main loop playfield pixel color. ; __PFC00 pfcolors: $50 $52 $56 $58 $5A $5C $5E $6C $6A $68 $66 $62 $60 end goto __Skip_PF_Color_Change __PFC01 pfcolors: $60 $50 $52 $56 $58 $5A $5C $5E $6C $6A $68 $66 $62 end goto __Skip_PF_Color_Change __PFC02 pfcolors: $62 $60 $50 $52 $56 $58 $5A $5C $5E $6C $6A $68 $66 end goto __Skip_PF_Color_Change __PFC03 pfcolors: $66 $62 $60 $50 $52 $56 $58 $5A $5C $5E $6C $6A $68 end goto __Skip_PF_Color_Change __PFC04 pfcolors: $68 $66 $62 $60 $50 $52 $56 $58 $5A $5C $5E $6C $6A end goto __Skip_PF_Color_Change __PFC05 pfcolors: $6A $68 $66 $62 $60 $50 $52 $56 $58 $5A $5C $5E $6C end goto __Skip_PF_Color_Change __PFC06 pfcolors: $6C $6A $68 $66 $62 $60 $50 $52 $56 $58 $5A $5C $5E end goto __Skip_PF_Color_Change __PFC07 pfcolors: $5E $6C $6A $68 $66 $62 $60 $50 $52 $56 $58 $5A $5C end goto __Skip_PF_Color_Change __PFC08 pfcolors: $5C $5E $6C $6A $68 $66 $62 $60 $50 $52 $56 $58 $5A end goto __Skip_PF_Color_Change __PFC09 pfcolors: $5A $5C $5E $6C $6A $68 $66 $62 $60 $50 $52 $56 $58 end goto __Skip_PF_Color_Change __PFC10 pfcolors: $58 $5A $5C $5E $6C $6A $68 $66 $62 $60 $50 $52 $56 end goto __Skip_PF_Color_Change __PFC11 pfcolors: $56 $58 $5A $5C $5E $6C $6A $68 $66 $62 $60 $50 $52 end goto __Skip_PF_Color_Change __PFC12 pfcolors: $52 $56 $58 $5A $5C $5E $6C $6A $68 $66 $62 $60 $50 end goto __Skip_PF_Color_Change __PFC13 pfcolors: $50 $52 $56 $58 $5A $5C $5E $6C $6A $68 $66 $62 $60 end goto __Skip_PF_Color_Change ;*************************************************************** ; ; Displays the screen. ; drawscreen ;*************************************************************** ; ; Checks to see if the game is over. ; if _Bit2_Game_Over{2} then goto __Game_Over_Setup ;*************************************************************** ; ; Reset switch check and end of main loop. ; ; Any Atari 2600 program should restart when the reset ; switch is pressed. It is part of the usual standards ; and procedures. ; ;``````````````````````````````````````````````````````````````` ; If the reset switch is not pressed, turn off reset ; restrainer bit and skip this subsection. ; if !switchreset then _Bit0_Reset_Restrainer{0} = 0 : goto __Main_Loop ;``````````````````````````````````````````````````````````````` ; If the reset switch hasn't been released since starting the ; game, skip this subsection. ; if _Bit0_Reset_Restrainer{0} then goto __Main_Loop ;``````````````````````````````````````````````````````````````` ; Clears the GAME OVER bit so the title screen will appear. ; _Bit2_Game_Over{2} = 0 ;``````````````````````````````````````````````````````````````` ; Reset pressed appropriately. Restart the program. ; goto __Start_Restart ;*************************************************************** ; ; pf color restart ; ;*************************************************************** if playfieldpos = 8 then goto __Skip_PF_Color_Change on _PFColor_Counter goto __PFC00 __PFC01 __PFC02 __PFC03 __PFC04 __PFC05 __PFC06 __PFC07 __PFC08 __PFC09 __PFC10 __PFC11 __PFC12 __PFC13 _PFColor_Counter = _PFColor_Counter + 1 if _PFColor_Counter >= 14 then _PFColor_Counter = 0 __Skip_PF_Color_Change ;*************************************************************** ; ; Thomas animation frames. ; __Tom00 player1: %11100111 %01100110 %01100110 %00111100 %11011011 %10100101 %11011011 %11011011 %01011010 %00011100 %00110000 %01111011 %01010110 %00010100 %01111111 %00111100 end goto __Thomas_Frame_Done __Tom01 player1: %01100000 %11000000 %01100011 %00001111 %11011101 %11001010 %11100100 %01110101 %00101011 %00011101 %00110000 %01111011 %01010110 %00010100 %01111111 %00111100 end goto __Thomas_Frame_Done __Tom02 player1: %00000111 %10000110 %11110110 %11111010 %00111100 %00111110 %01001111 %01010011 %00101100 %00011100 %00110000 %01111011 %01010110 %00010100 %01111111 %00111100 end goto __Thomas_Frame_Done __Tom03 player1: %00011000 %00110010 %00110100 %00101110 %01110011 %01101101 %01011100 %01011010 %00111010 %00011100 %00110000 %01111011 %01010110 %00010100 %01111111 %00111100 end goto __Thomas_Frame_Done ;*************************************************************** ; ; E.T. animation frames. ; __ET00 player0: %01110000 %00110111 %00011111 %10011111 %11111111 %00011111 %00001111 %00000011 %11000011 %11111111 %10111111 %11111100 end goto __ET_Frame_Done __ET01 player0: %01110000 %00110111 %00011111 %10011111 %11111111 %00011111 %00001111 %00000011 %00000011 %00000011 %11000011 %11111111 %10111111 %11111100 end goto __ET_Frame_Done __ET02 player0: %00000111 %01110011 %00011111 %10011111 %11111111 %00011111 %00001111 %00000011 %00000011 %00000011 %00000011 %00000011 %11000011 %11111111 %10111111 %11111100 end goto __ET_Frame_Done __ET03 player0: %00000111 %01110011 %00011111 %10011111 %11111111 %00011111 %00001111 %00000011 %00000011 %00000011 %11000011 %11111111 %10111111 %11111100 end goto __ET_Frame_Done ;*************************************************************** ;*************************************************************** ; ; GAME OVER SETUP ; ; __Game_Over_Setup ;*************************************************************** ; ; Checks for a new high score. ; if sc1 > _High_Score01 then goto __New_High_Score if sc1 < _High_Score01 then goto __Skip_High_Score ;``````````````````````````````````````````````````````````````` ; First byte equal. Do the next test. ; if sc2 > _High_Score02 then goto __New_High_Score if sc2 < _High_Score02 then goto __Skip_High_Score ;``````````````````````````````````````````````````````````````` ; Second byte equal. Do the next test. ; if sc3 > _High_Score03 then goto __New_High_Score if sc3 < _High_Score03 then goto __Skip_High_Score ;``````````````````````````````````````````````````````````````` ; All bytes equal. Current score is the same as the high score. ; goto __Skip_High_Score __New_High_Score ;``````````````````````````````````````````````````````````````` ; Saves new high score. ; _High_Score01 = sc1 : _High_Score02 = sc2 : _High_Score03 = sc3 __Skip_High_Score ;*************************************************************** ; ; Saves the latest score for the high score flip. ; _Temp_Score01 = sc1 : _Temp_Score02 = sc2 : _Temp_Score03 = sc3 ;*************************************************************** ; ; Clears the counters. ; _Master_Counter = 0 : _Frame_Counter = 0 ;*************************************************************** ; ; Makes sure sprites and missile are off the screen. ; player0y = 200 : player1y = 200 : bally = 200 ;*************************************************************** ; ; Restrains reset switch and fire button for GAME OVER loop. ; ; This bit fixes it so the reset switch becomes inactive if ; it hasn't been released after entering a different segment ; of the program. It does double duty by restraining the ; fire button too in the GAME OVER loop. ; _Bit0_Reset_Restrainer{0} = 1 ;*************************************************************** ; ; Puts playfield back to normal after all of the scrolling. ; playfieldpos = 8 ;*************************************************************** ; ; Clears the screen. ; pfclear ;*************************************************************** ; ; Sets GAME OVER background color. ; COLUBK = $6E ;*************************************************************** ; ; Sets up GAME OVER playfield. ; playfield: XXX..XXX.....XX...XX..XX.XX.XXX. X.....X.....X..X.X..X.X.X.X.X... XX....X.....X....XXXX.X...X.XX.. X.....X.....X..X.X..X.X...X.X... XXX.X.X.X....XX..X..X.X...X.XXX. ................................ XXX...XX...XX..X..X..X.X.X...... X..X.X..X.X..X.X.X...X.X.X...... XXX..XXXX.X....XX....X.X.X...... X..X.X..X.X..X.X.X.............. XXX..X..X..XX..X..X..X.X.X...... end ;*************************************************************** ;*************************************************************** ; ; GAME OVER LOOP ; ; __Game_Over_Loop ;*************************************************************** ; ; Goes to title screen after 20 seconds if player does nothing. ; ; This includes a 2 second countdown timer. Any Atari 2600 ; program should freeze for 2 seconds when the game is over. ; It is part of the usual standards and procedures. ; ;``````````````````````````````````````````````````````````````` ; Increments the master counter. ; _Master_Counter = _Master_Counter + 1 ;``````````````````````````````````````````````````````````````` ; The master counter resets every 2 seconds (60 + 60 = 120). ; if _Master_Counter < 120 then goto __Skip_20_Counter ;``````````````````````````````````````````````````````````````` ; Clears the master counter after 2 seconds have gone by ; and flips the Swap_Scores bit. ; _Master_Counter = 0 : _Bit3_Swap_Scores{3} = !_Bit3_Swap_Scores{3} ;``````````````````````````````````````````````````````````````` ; If the Swap_Scores bit is on, display the high score. ; if _Bit3_Swap_Scores{3} then scorecolor = $AE : sc1=_High_Score01 : sc2=_High_Score02 : sc3=_High_Score03 : goto __Skip_Flip ;``````````````````````````````````````````````````````````````` ; If the Swap_Scores bit is off, display the current score. ; scorecolor = $1C : sc1=_Temp_Score01 : sc2=_Temp_Score02 : sc3=_Temp_Score03 __Skip_Flip ;``````````````````````````````````````````````````````````````` ; The frame counter increments every 2 seconds. ; _Frame_Counter = _Frame_Counter + 1 ;``````````````````````````````````````````````````````````````` ; If _Frame_Counter reaches 10 (2 x 10 = 20 seconds), the ; program resets and goes to the title screen. The GAME OVER ; bit is cleared so the title screen will appear. ; if _Frame_Counter = 10 then _Bit2_Game_Over{2} = 0 : goto __Start_Restart __Skip_20_Counter ;*************************************************************** ; ; Sets GAME OVER playfield pixel color. ; pfcolors: $80 $82 $84 $86 $88 $8A $8C $8E $8C $8A $88 $86 end ;*************************************************************** ; ; Displays the screen. ; drawscreen ;*************************************************************** ; ; Reset/fire button check and end of GAME OVER loop. ; ; Restarts the program if the reset switch or the fire ; button is pressed appropriately. ; ;``````````````````````````````````````````````````````````````` ; If the initial 2 second freeze is not over, jump to ; beginning of the GAME OVER loop. ; if _Frame_Counter = 0 then goto __Game_Over_Loop ;``````````````````````````````````````````````````````````````` ; If fire button or reset switch is not pressed, clear the ; restrainer bit and jump to beginning of GAME OVER loop. ; if !switchreset && !joy0fire then _Bit0_Reset_Restrainer{0} = 0 : goto __Game_Over_Loop ;``````````````````````````````````````````````````````````````` ; If fire button hasn't been released since leaving the ; main loop, jump to beginning of the GAME OVER loop. ; if _Bit0_Reset_Restrainer{0} then goto __Game_Over_Loop ;``````````````````````````````````````````````````````````````` ; Reset or Fire pressed appropriately. Restart the program. ; goto __Start_Restart E.T.'sRevenge.bas Quote Link to comment Share on other sites More sharing options...
+Random Terrain Posted May 23, 2015 Share Posted May 23, 2015 You did it backwards. You put the wrong thing outside of the main loop. ets_revenge_2015y_05m_23d_0025t.bas Quote Link to comment Share on other sites More sharing options...
STGraves Posted May 23, 2015 Author Share Posted May 23, 2015 What I meant from the begining is that if there is a way to stick the specific color of the line to that line on the playfield, the bottom color to the starting bottom line and as it is scrolling either up or down the color scrolling up or down with it without it being fixed to the same position in the playfield Quote Link to comment Share on other sites More sharing options...
+Random Terrain Posted May 23, 2015 Share Posted May 23, 2015 What I meant from the begining is that if there is a way to stick the specific color of the line to that line on the playfield, the bottom color to the starting bottom line and as it is scrolling either up or down the color scrolling up or down with it without it being fixed to the same position in the playfield Now that the program is setup correctly, it's up to you to play with the color data to get the results that you desire. Quote Link to comment Share on other sites More sharing options...
STGraves Posted May 23, 2015 Author Share Posted May 23, 2015 One thing that I did notice though is that the version of the game that provided me yesterday works exactly the same that the version of the game that didn't have that part of the code, and if I understand correctly what the playfieldpos = 8 part meant is that every time the playfield scrolls the order of the color has to change to the order of the one written in every single frame right? if that's the case it didn't work Quote Link to comment Share on other sites More sharing options...
+Random Terrain Posted May 23, 2015 Share Posted May 23, 2015 I forgot to add another label that is needed. The code also needs an extra bit or two. I'll post the updated code in a few minutes. Quote Link to comment Share on other sites More sharing options...
STGraves Posted May 23, 2015 Author Share Posted May 23, 2015 OK thanks Quote Link to comment Share on other sites More sharing options...
+Random Terrain Posted May 23, 2015 Share Posted May 23, 2015 It's taking me longer than I thought. I'll have to stop for a while to mow, then I should be able to fix the last problem I'm having with the program. Quote Link to comment Share on other sites More sharing options...
STGraves Posted May 23, 2015 Author Share Posted May 23, 2015 Sure no problem, take your time, thanks for the help. Quote Link to comment Share on other sites More sharing options...
+Random Terrain Posted May 23, 2015 Share Posted May 23, 2015 I got lucky and it looks like I fixed it before going out to mow: ets_revenge_2015y_05m_23d_1830t.bas ets_revenge_2015y_05m_23d_1830t.bin Quote Link to comment Share on other sites More sharing options...
STGraves Posted May 23, 2015 Author Share Posted May 23, 2015 Holy lord, thanks random terrain, worked perfectly that was what i was going forma, thanks a lot Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.