MLdB Posted March 9, 2013 Share Posted March 9, 2013 I'm a little hesitant if I should start a topic when I'm still about half-way with my project. But I hope this will help me commit my time and maybe get one or two other members interested in going over (parts of) my (asm) code to help me compact it. This is my first project for the Atari 2600 (or any console to be honest), please be kind. It's a 'port' (tongue-in-cheek) of Unreal Tournament (needless to say it's barely recognizable), more specifically the Capture the Flag mode. I've named it 'FLUT', with the UT part needing no explanation, and 'flut' being a Dutch equivalent of 'crappy' (albeit without the excremental connotation). Note: Press either joystick fire trigger to get past the 'company' logo appearing on startup So far I have added 9 maps very loosely based on original UT99 maps: Command, Coret, Eternal Cave, Face, Gauntlet, Lava Giant, Niven, November and Nucleus. For testing purposes, you can flip through these by pressing/holding SELECT. Because I haven't yet had time to implement the routines for displaying the (correct) information, both players will be unaware of the weapon they are carrying and the amount of ammo, but they do know their health (first three digits on either side of the screen). Eventually I will add more weapons, each with different capabilities, strengths and weaknesses. Weapons are obtained by picking up the blinking box (you can't now). To hit your opponent you either have to be in roughly the same horizontal or vertical position. When your health reaches 0 the 'player_dies' action starts, which for now is just 100 frames of frozen you. Do not be alarmed. My biggest problem is available ROM. I really want my first project to be 4k or less, but I'm already hitting 2.6 or something. flut.bin 1 Quote Link to comment Share on other sites More sharing options...
ACrystal2011 Posted March 9, 2013 Share Posted March 9, 2013 Pretty neat. In stella the numbers on bottom left a scrambled. Quote Link to comment Share on other sites More sharing options...
Thomas Jentzsch Posted March 9, 2013 Share Posted March 9, 2013 The scanlines are far off. Use Alt+L with Stella so see. Quote Link to comment Share on other sites More sharing options...
MLdB Posted March 9, 2013 Author Share Posted March 9, 2013 The problem with the digits is that I haven't figured out a fast and compact way to generate the 20 bytes of PF0,1 and 2 'masks' needed to cover the correct segments of the digits. My current routine is about 180 bytes of code, 50 bytes of data and runs for 567 cycles which accounts for the blank (vertical) space between the playfield and the digits. I still need to add the code for rendering the two 'ammo' digits, but I was procrastinating because I felt the 4k barrier breathing down my neck. I'm a bit in the dark with the scanlines, Thomas... I checked some original NTSC games and they come in at ~262 scanlines. I added a 32 WSYNC loop and now FLUT is at 262 too. Are all these scanlines visible? Can I do more coding after these 262 lines or do I need to return to VSYNC immediately? Quote Link to comment Share on other sites More sharing options...
Thomas Jentzsch Posted March 9, 2013 Share Posted March 9, 2013 (edited) Check page 2 of the Stella Programmer's Guide. This should answer some questions. You can vary the sizes a bit, e.g. increase picture display to 200 instead of 192 lines. And reduce vertical blank and overscan areas by 8 lines in total to get back to the total 262 lines. You can also display a few lines more (or less) in total. Everything between +/-5% should be safe. Edited March 9, 2013 by Thomas Jentzsch Quote Link to comment Share on other sites More sharing options...
Kurt_Woloch Posted March 9, 2013 Share Posted March 9, 2013 I'd like to try this, but something goes wrong when downloading the ROM... somehow I can't manage to download it completely. One download attempt "waited" for a long time, then I only got about 2.5 k of it. Maybe a bug in Atariage itself? Quote Link to comment Share on other sites More sharing options...
MLdB Posted March 10, 2013 Author Share Posted March 10, 2013 I buckled... caved... surrendered to the ROM-God There where so many things I still want to implement (weapons, powerups, maps, sound, a title and options screen, animations, etc.) and I realized I probably could do none of them properly if I sticked to my 4k ideals and most-if-not-all-of-them if I split the code in two banks. I think I've fixed the scanlines during the actual game, the company screen will probably still roll on real hardware, not on Stella. The health points for player 2 are also correctly displayed and both players now have a death action for testing purposes. Player 1 dies and Player 2 gets a 'hologram' powerup. flut_20130310.bin Quote Link to comment Share on other sites More sharing options...
MLdB Posted March 21, 2013 Author Share Posted March 21, 2013 I reorganized and optimized a lot of the code, started work on the rocket launcher, got a title screen and found a friend willing (and: able) to write the score! (Eventually there will be an explosion animation on missile impact, haven't had the time yet, busy painting stairs) flut_20130321.bin Quote Link to comment Share on other sites More sharing options...
jdrose Posted March 21, 2013 Share Posted March 21, 2013 Interesting. Did you develop this in bBasic or Assembly? How are you determining where the walls of the maze are? Collision detection, position or something else? I like how the player overlaps the wall by just a touch. Makes movement more fun. Quote Link to comment Share on other sites More sharing options...
MLdB Posted March 21, 2013 Author Share Posted March 21, 2013 It's done in assembly. Collision detection has been a bit of a struggle... I only allow one player to move horizontally and the other vertically every frame (and vice versa during the next frame). The new X and Y position is converted into a grid location, which is used to retrieve a bit (1 for wall and 0 for floor) from a table. If the new position is on a wall tile (a 1), the move is canceled. This effectively only cancels out either vertical or horizontal movement (because only one of them was allowed) and thus makes it possible to 'slide' along walls by running diagonally against them (or: prevents 'sticking' to walls) with a handful of machine cycles. I like the players overlapping the playfield too It provides more space to move around. Quote Link to comment Share on other sites More sharing options...
MLdB Posted March 24, 2013 Author Share Posted March 24, 2013 Things are slowly falling into place. Now the asm code has some complexity, it starts to feel a bit like programming in a higher language, like there should be classes in there somewhere, but of course it's all macros and JSRs I included Slocum's music driver in bank 4 and a preliminary intro song by the friend mentioned earlier. Both players start with a Redeemer weapon, for testing purposes naturally (it can be steered, but it is not easy in tight places). The ammo display of player 2 shows the lowest recorded value of the INTIM register right before entering the VBlank-wait routine. It should probably go no lower than $0A, which means I have about 10*64=640 cycles left if in VBlank I'm not mistaken and about 12*76 in overscan. Still no explosions/splash damage, sorry. @Thomas: Cycle counts are off again, sorry. They are not stable after I added Slocum's routine, but that may be entirely my fault. flut_20130324-2.bin 1 Quote Link to comment Share on other sites More sharing options...
KevinMos3 Posted March 24, 2013 Share Posted March 24, 2013 I'd like to see some pics, as I won't be able to try out the rom for a while. Quote Link to comment Share on other sites More sharing options...
jdrose Posted March 25, 2013 Share Posted March 25, 2013 No worries. Interesting development. No one is expecting perfection until it is ready to be burned to a cartridge. Quote Link to comment Share on other sites More sharing options...
Impaler_26 Posted March 25, 2013 Share Posted March 25, 2013 I'd like to see some pics, as I won't be able to try out the rom for a while. Here you go: Quote Link to comment Share on other sites More sharing options...
MLdB Posted March 25, 2013 Author Share Posted March 25, 2013 @Impaler_26: Thanks for doing that. Which reminds me... I wasn't completely unhappy about the Unreal logo at first, but a feeling is growing that I should redo it with a 48-pixel sprite technique. This is simply unacceptable Quote Link to comment Share on other sites More sharing options...
awace Posted March 28, 2013 Share Posted March 28, 2013 @Impaler_26: Thanks for doing that. Which reminds me... I wasn't completely unhappy about the Unreal logo at first, but a feeling is growing that I should redo it with a 48-pixel sprite technique. This is simply unacceptable I it looks just Fine to me as its 4 bit graphics and on a machine thats 34 years old so it looks great and I think you should leave it alone as I am already used to it now! : Quote Link to comment Share on other sites More sharing options...
MLdB Posted April 28, 2013 Author Share Posted April 28, 2013 Simple, but functional, options menu menutest.bin I'm busy fixing the hitscan weapons (single and double enforcers, minigun). To keep things simple they do little damage, but fire fast and through walls (this last one being the 'keeping things simple') Notes on the options: Game Type 'team' CTF and DM are tournaments of 1-on-1 matches where each player scores points for his/her team. Pickups Type - Single and Double Up will give the player a single or double 'weapon upgrade' (one or two 'slots' up). - TBD (to be determined, naturally). - With RocketFest, all pickups are rocketlaunchers or, rarely, Redeemers. - DeltaForce lets playes choose between a minigun or sniper rifle before the match starts, pickups contain only ammo for the selected weapon. - Redemption: all pickups are Redeemers or players start with Redeemers with infinite ammo. - No Pickups: see below Weapon Set The bio rifle, ripper and pulse gun will be harder to implement faithfully, so I excluded them from the original weapon set. But players may choose to allow them anyway. Out of Ammo 1 and 2 down are the opposites of Single and Double up. Enforcer always gives the player an enforcer when his/her current weapon is empty and Hectique is an in-joke between some of my friends and me and in it's FLUT incarnation means players start with a random weapon and 1 ammo point. Each time the player fires he/she get's another randomly selected weapon (and 1 ammo point). This is best played without pickups, hence the no pickups option is automatically selected. Map Rotation Eventually I hope to include 16 maps. As soon as I have a working menu and hitscan weapons, I will post an updated version of FLUT here. Quote Link to comment Share on other sites More sharing options...
Godzilla Posted May 7, 2013 Share Posted May 7, 2013 sweet! look forward to seeing where this goes! great work! Quote Link to comment Share on other sites More sharing options...
Der Luchs Posted May 10, 2013 Share Posted May 10, 2013 Great Stuff Quote Link to comment Share on other sites More sharing options...
MLdB Posted May 14, 2013 Author Share Posted May 14, 2013 Playtesting the game with friends this weekend confirmed: it's playable Flags were captured, opponents fragged and some really embarassing bugs found. Quote Link to comment Share on other sites More sharing options...
MLdB Posted July 4, 2013 Author Share Posted July 4, 2013 (edited) A lot of changes since my previous post. Most of them internal and mostly invisible. But UT2600 is quickly progressing towards becoming a 'game'. Some elements that now work (+) countered by elements that do not work (-): + playing tournaments with up to 6 players, either individually or divided into two teams. - displaying each player's score, so players will have no way of knowing who won the tournament + pickups appear randomly on the map + players can select the bonus gained by pickups: random weapons, weapon upgrades, rocket launchers etc. - 'random up' is not yet implemented and other settings may contain bugs + music driver reworked to support multiple 'songs' - there's only one song + splash damage (you can take damage from your own rocket when standing too close when they explode) - only the rocket launcher's splash damage has been correctly balanced. Other weapons may do far too much damage or no damage at all + health bonus for up to 399 health points and many other things I hope you enjoy this pre-alpha version Do not waste your time reporting bugs yet, there are still way too many bugs I'm currently aware of. flut_20130704.bin Notes: Only player 1 can change the game's settings Before each match a screen comes up with two colored rectangles beneath a yellow line. Somewhere in the distant future, this screen will display the scores for all players, so you can keep track of who's ahead. Both players need to press the fire button to indicate they are 'ready'. The rectangles will flash a few seconds and the match will begin. Edited July 4, 2013 by MLdB 1 Quote Link to comment Share on other sites More sharing options...
MLdB Posted July 11, 2013 Author Share Posted July 11, 2013 + Players flash (white) when taking damage + Random map is chosen for every match (I forgot to enable this in the previous bin, sorry) + Flak Cannon has balanced hit and splash damage values. - Removed the possibility to change the color of the walls every N frames. I decided it took up too much ROM for such a lousy effect. Started work on optimizing my code to reduce ROM footprint. FLUT is already 450+ bytes 'lighter'. flut_20130711.bin Next release may have a functioning Sniper Rifle Quote Link to comment Share on other sites More sharing options...
MLdB Posted July 12, 2013 Author Share Posted July 12, 2013 Small update, no Sniper Rifle yet. + A preview of the (randomly selected) map is shown on the 'match screen'. + Players can choose to play a different map than the one randomly selected by pressing L or R + Players can withdraw their 'READY' on the match screen (e.g. when they disagree with the other player's choice of map) flut_20130712.bin Still too many bugs and missing bits to start asking for test reports... but feel free to share insights on the overall game play. I'm curious as to how the game behaves when actually played. Quote Link to comment Share on other sites More sharing options...
Atari_Warlord Posted July 12, 2013 Share Posted July 12, 2013 I just gave this a quick play and this looks like it will be a fun multiplayer game. I'm not quite setup to do real testing, so don't have any useful feedback yet, but wanted to let you know I hope this gets released. Quote Link to comment Share on other sites More sharing options...
MLdB Posted July 17, 2013 Author Share Posted July 17, 2013 Working on the score board. Sorting algorithm is in place, now I need to assign scores to various match outcomes. I'm also thinking of making a (separate) map editor (to be named FlutED, naturally) so anyone can modify the 16 maps included in the final game and distribute 'mods' if they like. This feels like an obligation to the UT community 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.