-
Content Count
1,599 -
Joined
-
Last visited
Content Type
Profiles
Member Map
Forums
Blogs
Gallery
Calendar
Store
Everything posted by Fort Apocalypse
-
What you've done so far is really great. If regular Q-bert gets tough to do, maybe you could put a new spin on it somehow.
-
So far the best tool I've evaluated is bmptoascii by Peter Bone at http://www.geocities.com/peter_bone_uk/software.html Unfortunately, only works in Windows. You run the executable, specify the options to use the chars ".X" and you have to specify the percentage of reduction (width and height reduction can be different). The problem with this is that I'd want to specify exact number of chars in width and length, and you can only do that via time-consuming trial and error. However, it did a good job with the following B/W world map at available character ".X", 22% width reduction, 15% height reduction (note the latter two would change based on image size). ........XXXXXX.................. .....X.X..XXXX.........XXX...... XXXXXXX....X.....XXXXXXXXXXXXXXX ....XXXXXX......XXXXXXXXXXXX.... ....XXXXX......X.XXXXXXXXXXX.... .....XX.......XXXXXXXXXXXX...... ..............XXXXXX............ ........XXXX.....XX............. .........XXX.....XX.......XXX... .........X..................X... ................................
-
A pfcolors question for Batari Basic experts
Fort Apocalypse replied to jbs30000's topic in batari Basic
I'm glad you told me that, now I know why no one has downloaded the SDK stuff I posted links to. The problem is, I tried to link to attachments that are uploaded to my personal space or whatever. I'll just attach it to this post. Michael Michael, Could you repost this in the bB bugs topic? Since it's pinned, people will be more sure to find it. Thanks, man! -
Is it possible to reduce flicker in my program
Fort Apocalypse replied to jbs30000's topic in batari Basic
When you tried using player0 twice AND player1 twice were you setting COLUP0 and COLUP1 before each drawscreen? If not, that is the reason flicker is bad. Also, Stella will appear to flicker a little unless you use Alt-P for phorphor effect. The phoshor effect simulates what it would be like on a real 2600 and real T.V. -
Is it possible to reduce flicker in my program
Fort Apocalypse replied to jbs30000's topic in batari Basic
I think you can get by with having 2 balls, 2 missiles, 2 player0 sprites, and 2 player1 sprites (alternating at each drawscreen). Lots to play with... -
This is awesome in so many ways! Here is the critique. Please take with grain of salt because is way obvious you spent lots and lots of time getting this to look so good: I really like light cycles although is kind of too easy compared to arcade version (but doing AI with limitations of 2600 and bB is *hard*. My favorite is tanks. Spiders has trouble with collision detection with bullets. MCP cone was better in last version (although not as pretty) because it was harder and less flickery (for some reason I didn't shoot very much and made it through easily). A+ on closeness to arcade version on 2600! A+ on use of colors. Wow and wow! Good stuff!
-
Please invite him to get involved in the discussion. My hope for all of us would be to have a web-based tool where you could upload an image and get either the player definition or bB playfield definition or asm code to write a playfield back. That would kick butt. But for now, having something that we could download and run to convert images would be awesome.
-
goto setup rem setup all the game variables setup That goto is unnecessary. Labels don't interrupt the flow of code. In fact if you don't have a return or goto code will just run "off" the end of your source if you let it! rem include for player scores multikernel include playerscores.asm rem include bcd math helper include bcd_math.asm Did you actually download and put the playerscores.asm and the other asm (I think it is bcd_math.asm but I forget. it mentions it in the playerscores thread) into the includes directory under the bB install that your IDE is using? Also, these should be at the *end* of the source, not the beginning, at least in a 4k game. and they should be inline instead of include so take those out and put these at the end: rem should be last lines in game inline playerscores.asm inline bcd_math.asm let's move on... rem set the rom size set romsize 2k I don't know if they will work in 2k or not. Try it with 4k (or just don't define since 4k is default). I'd think 2k would work though. rem define the number of player scores const playerscores = 2 rem define noscores constant const noscore = 1 rem set kernel options rem readpaddle - set it so the paddle controlers are read set kernel_options no_blank_lines readpaddle rem set an alias for the ball's x velocity dim ballxvelocity = a rem set an alias for the ball's y velocity dim ballyvelocity = b rem set an alias for troggling the 2 player mode dim playervsplayer = c rem set an alias for the sound effects timer dim soundeffectstimer = d rem set an alias for weither high boink should play dim hiboinkplaying = e rem set an alias for weither low boink should play dim loboinkplaying = f rem color the background green COLUBK = 198 rem set the color of the playfield to white COLUPF = 14 rem set player 2's score color to his sprite color player0scorecolor = $1C rem set player 1's score color to his sprite color player1scorecolor = $8C I'm not sure but I think you have to define the player0scorecolor and player1scorecolor before every drawscreen. rem define the playfield playfield: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ................................ ................................ ................................ ................................ ................................ ................................ ................................ ................................ ................................ XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX end This is a waste for a few reasons: * You can use: pfclear pfhline 0 0 31 on pfhline 0 10 31 on instead (or if you want to get tricky do the pfscroll upup hack to get an extra playfield line of resolution - see other threads for better explanation, because you can only do it once I think, so you have to set a flag showing you did it and check for that flag if you do that trick). BUT I would just leave out the lines - you don't need them as the ball could just bounce off the top and bottom. You might also try PF0 for border to see if that would help (but that would be more for sides). rem define player 1's sprite player0: %00011000 %00011000 %00011000 %00011000 %00011000 %00011000 %00011000 %00011000 end rem define player 2's sprite player1: %00011000 %00011000 %00011000 %00011000 %00011000 %00011000 %00011000 %00011000 end Instead of doing this, use either ball and missile1 (if want no lined playfield) or missile0 and missile1 and use TIA registers to make width 2 (NUSIZ0=$10 : NUSIZ1=$10 : CTRLPF=$11 - notice that ball/playfield TIA is defined with 1 at end and not 0!) and use missile1height, ballheight to make height 8. rem finished seting up the game variables rem start the game loop goto startNewGame rem start a new game and reset everything that was changed during rem the course of the game startNewGame rem set player 1's inital x positon player0x = 140 rem set player 1's inital y positon player0y = 45 rem set a default value for the 2 player troggle playervsplayer = 0 rem if the left switch is set to B, paddle 1 controls the rem computers paddle if !switchleftb then playervsplayer = 1 rem set player2's inital x positon player1x = 15 rem set player2's inital y positon player1y = 45 rem set ball's inital x positon ballx = 80 rem set ball's inital y positon bally = 45 rem set the ball's initial x velocity ballxvelocity = 1 rem set the ball's initial x velocity ballyvelocity = 1 rem reset player 1's score player0score = $00 rem reset player 1's score player1score = $00 rem reset high boink playing to 0 hiboinkplaying = 0 rem reset low boink playing to 0 loboinkplaying = 0 rem finished reseting all the game variables changed during rem the course of the game rem go to the game loop goto gameLoop rem start of the game loop gameLoop rem if the user presses the reset switch, start a new game if switchreset then goto startNewGame rem color player 1's paddle COLUP0 = 140 rem color player 2's paddle COLUP1 = 28 rem read paddle 0, use it to position player 1 across the screen currentpaddle = 0 rem draw the game screen drawscreen rem set player1's y position to the paddle control's axis rem plus 8 player0y = paddle + 8 rem make sure player 1 doesn't go off the top screen if player0y < 16 then player0y = 16 rem make sure player 1 doesn't go off the bottom screen if player0y > 79 then player0y = 79 rem if the 2 player mode is activated then paddle 1 controls the rem second paddle if playervsplayer = 1 then gosub player2controls rem otherwise set player 2's y position to the balls y position if playervsplayer = 0 then player1y = bally rem make sure player 2 doesn't go off the top screen if player1y < 16 then player1y = 16 rem make sure player 2 doesn't go off the bottom screen if player1y > 79 then player1y = 79 rem move the ball ballx = ballx + ballxvelocity bally = bally + ballyvelocity rem make sure the ball doesn't go off the top screen if bally < 9 then ballyvelocity = 0 - ballyvelocity rem make sure the ball doesn't go off the bottom screen if bally > 77 then ballyvelocity = 0 - ballyvelocity rem if the ball collides with player 1's paddle if collision(player0, ball) then gosub player1collision rem if highboinkplaying is 1 then play the high boink sound effect if hiboinkplaying = 1 then gosub hiboink rem if the ball collides with player 2's paddle if collision(player1, ball) then gosub player2collision rem if loghboinkplaying is 1 then play the low boink sound effect if loboinkplaying = 1 then gosub loboink rem if the ball goes past player 1's paddle if ballx > 160 then gosub player2scores rem if the ball goes past the computer paddle if ballx < 1 then gosub player1scores rem if player 1 scores 11 points then its game if player0score > $10 then goto gameover rem if player 2 scores 11 points then its game if player1score > $10 then goto gameover goto gameLoop rem end of the game loop code, restart the game loop rem code for handling collision between player and ball player1collision rem set high boink playing to 1 hiboinkplaying = 1 rem move the ball a bit so it doesn't stick ballx = ballx - 3 rem and reverse its x velocity ballxvelocity = 0 - ballxvelocity return rem end of player 1 collision code rem code for handling the high boink sound effect hiboink rem increase the music timer musictimer = musictimer + 1 rem play the high bounk sound effect AUDV0 = 12 AUDC0 = 7 AUDF0 = 3 rem if 1 second has passed then don't play the boink sound rem anymore if musictimer > 59 then AUDV0 = 0 if musictimer > 59 then hiboinkplaying = 0 if musictimer > 59 then musictimer = 0 Don't do that. Use this: if musictimer > 59 then AUDV0 = 0 : hiboinkplaying = 0 : musictimer = 0 and you shouldn't need hiboinkplaying either I'd think. save a variable and just change the TIA reg with the frequency of the beep and reset the timer whenever there is a collision and set vol to 0 when timer hits limit. and now back to the program... return rem end of high boink code rem code for handling when the ball hits player 2's paddle player2collision rem set low boink playing to 1 loboinkplaying = 1 rem move the ball a bit so it doesn't stick ballx = ballx + 3 rem and reverse its x velocity ballxvelocity = 0 - ballxvelocity return rem end of player 2 collision code rem code for handling the low boink sound effect loboink rem increase the music timer musictimer = musictimer + 1 rem play the low bounk sound effect AUDV0 = 12 AUDC0 = 7 AUDF0 = 3 rem if 1 second has passed then don't play the boink sound rem anymore if musictimer > 59 then AUDV0 = 0 if musictimer > 59 then loboinkplaying = 0 if musictimer > 59 then musictimer = 0 return rem end of low boink code rem code for handling when the ball goes past player 2's paddle rem and the player 1 scores player1scores rem increase player 1's score by 1 player1score = addbcd(player1score,1) rem have the computer serve the ball ballx = player1x + 3 bally = player1y - 5 rem reverse the balls x velocity ballxvelocity = 0 - ballxvelocity return rem end of player 1 scores rem code for handling when player 1 misses the ball and rem player 2 scores player2scores rem increase player 2's score by 1 player0score = addbcd(player0score,1) rem have the player serve the ball ballx = player0x - 3 bally = player0y - 5 rem reverse the balls x velocity ballxvelocity = 0 - ballxvelocity return rem end of player 2 scores code rem code for handling when the 2 player troggle is enabled and rem the second paddle controls the computer paddle player2controls rem read paddle 1, use it to position player 2's paddle across the screen currentpaddle = 1 rem draw the game screen drawscreen rem set player 2's y position to the paddle 2's control's axis rem plus 8 player1y = paddle + 8 return rem end of player 2 controls code rem code for handling when either players score reaches 11 rem and its gameover gameover rem if the user presses the reset switch, start a new game if switchreset then goto startNewGame rem color player 1's paddle COLUP0 = 140 rem color player 2's paddle COLUP1 = 28 rem draw the screen drawscreen rem if the user presses the fire button, start a new game if joy0left then goto startNewGame rem otherwise just keep looping goto gameover Hope that helps
-
Well, I ran the track image through the software with the forementioned dither filter and It looked rather good. The only other part (if you are wanting it for a background) would be to create a smart filter for proper resizing to the Atari 2600's graphical standards of streatched pixels and possibly some colour too. If anything, the filter could be used and then some touching up to the image could work. I also thought that for some pictures where you want certain things to either be intact or have the original dimentions or as close as possible, a sort of mask or outline overlay could be used to treat certain areas of the picture diffrently than others like the track itself. the resize filter is something I have been working on and planning for a few days when I have time to think about it. I could lay a floor plan and post an outline for what I think could be done.I'll get back to you on this. Would really like to see that. The hardest part of this I assume is the converting to extremely low resolution in such a way that it looks good. I have an application that can convert it to low resolution (b/w, not even grayscale), but what it produces in the 2600 resolution necessary needs so much touch-up it isn't worth the trouble.
-
Wow! Cool! are the rabbits from Rabbit Transit. Always likes those! Nope, just did these on my own. Thanks!
-
Here are a few things that I have been interested in converting to playfield (convert track to 2 color at resolution I mentioned above) and to sprite (the two indy car pictures). Have also attached picture of Garry Kitchen that would be interesting to see what would look like in playfield resolution above. If you can convert these and post them that would be way cool as a sample. Thanks!
-
both throw eggs. bunny hops easter_0.3.bas easter_0.3.bas.bin
-
0.2 - no playfield empty lines easter_0.2.bas easter_0.2.bas.bin
-
really like the title screen and the slower and cool looking cursor! however it is no longer uses double-click to erase (just clicking erases) and overwriting a previously drawn line erases it. I don't know if that was your intention or not. are you going to utilize the double-click? if not, maybe we should rename it to "draw"?
-
I saw him over here fighting with the Easter Snake!
-
What would be great is a tool that could take a jpeg, png, bmp, etc. image and convert it to either something that looks like: ................................ .........X............X......... ........XXX..........XXX........ X.......XXXX........XXXX.......X X.......XXXXXXXXXXXXXXXX.......X X.......XXXXXXXXXXXXXXXX.......X X.......XXXXXXXXXXXXXXXX.......X X......XXXXXXXXXXXXXXXXXX......X X.....XXXXXXXXXXXXXXXXXXXX.....X X....XXXXXXXXXXXXXXXXXXXXXX....X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX or something that looks like: %01110110 %11101100 %11111110 %01001010 %10111100 %00110000 %00000000 %00000000 If there were an easy way to do that that looked good, it would be really helpful for coming up with this stuff. However, when I've tried to do similar before by hand converting an image to b/w with low res, it always looks like crap. I think creating very low res b/w color sprites and playfields is more art than anything that could be automated easily, but I'd be really interested in trying it out if you could give an example.
-
Here are 3 frames for a bunny sprite I did. Feel free to use in your own games. player0: %01110110 %11101100 %11111110 %01001010 %10111100 %00110000 %00000000 %00000000 end return player0: %01100000 %00111011 %00110110 %01011110 %00001110 %00100111 %00110101 %00011110 end return player0: %00000111 %01011100 %11101111 %01111101 %00110110 %01001100 %00011000 %00000000 end return
-
Easter bunny vs. easter snake! Various fight screens with easter theme. A game for the Atari 2600 for 1 or 2 players with joystick. Happy Easter! easter_0.1.bas easter_0.1.bas.bin
-
It would help us to help you if you could post source, even if just the relevant part
