Jump to content

Photo

UT2600


40 replies to this topic

#1 MLdB OFFLINE  

MLdB

    Star Raider

  • 71 posts
  • Location:Netherlands

Posted Fri Mar 8, 2013 8:35 PM

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.

Attached File  flut.bin   4KB   367 downloads

#2 ACrystal2011 OFFLINE  

ACrystal2011

    Dragonstomper

  • 583 posts
  • Location:Jennings, Louisiana

Posted Fri Mar 8, 2013 11:33 PM

Pretty neat. In stella the numbers on bottom left a scrambled.

#3 Thomas Jentzsch OFFLINE  

Thomas Jentzsch

    Thrust, Jammed, SWOOPS!, Boulder Dash, THREE·S, Star Castle

  • 23,399 posts
  • Always left from right here!
  • Location:Düsseldorf, Germany, Europe, Earth

Posted Sat Mar 9, 2013 2:39 AM

The scanlines are far off. Use Alt+L with Stella so see.

#4 MLdB OFFLINE  

MLdB

    Star Raider

  • Topic Starter
  • 71 posts
  • Location:Netherlands

Posted Sat Mar 9, 2013 4:31 AM

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?

#5 Thomas Jentzsch OFFLINE  

Thomas Jentzsch

    Thrust, Jammed, SWOOPS!, Boulder Dash, THREE·S, Star Castle

  • 23,399 posts
  • Always left from right here!
  • Location:Düsseldorf, Germany, Europe, Earth

Posted Sat Mar 9, 2013 4:39 AM

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 by Thomas Jentzsch, Sat Mar 9, 2013 4:39 AM.


#6 Kurt_Woloch OFFLINE  

Kurt_Woloch

    Stargunner

  • 1,347 posts

Posted Sat Mar 9, 2013 5:57 AM

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?

#7 MLdB OFFLINE  

MLdB

    Star Raider

  • Topic Starter
  • 71 posts
  • Location:Netherlands

Posted Sun Mar 10, 2013 5:27 AM

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.

Attached File  flut_20130310.bin   8KB   316 downloads

#8 MLdB OFFLINE  

MLdB

    Star Raider

  • Topic Starter
  • 71 posts
  • Location:Netherlands

Posted Thu Mar 21, 2013 3:47 AM

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)

Attached File  flut_20130321.bin   8KB   221 downloads

#9 jdrose OFFLINE  

jdrose

    Chopper Commander

  • 119 posts

Posted Thu Mar 21, 2013 10:11 AM

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.

#10 MLdB OFFLINE  

MLdB

    Star Raider

  • Topic Starter
  • 71 posts
  • Location:Netherlands

Posted Thu Mar 21, 2013 11:32 AM

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.

#11 MLdB OFFLINE  

MLdB

    Star Raider

  • Topic Starter
  • 71 posts
  • Location:Netherlands

Posted Sun Mar 24, 2013 5:21 AM

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 :-D

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.

Attached File  flut_20130324-2.bin   16KB   249 downloads

#12 KevinMos3 OFFLINE  

KevinMos3

    Stargunner

  • 1,554 posts
  • Founder of the Timothy Dalton as Bond fan club
  • Location:Behind YOU!

Posted Sun Mar 24, 2013 4:51 PM

I'd like to see some pics, as I won't be able to try out the rom for a while.

#13 jdrose OFFLINE  

jdrose

    Chopper Commander

  • 119 posts

Posted Sun Mar 24, 2013 8:08 PM

No worries. Interesting development.

No one is expecting perfection until it is ready to be burned to a cartridge.

#14 Impaler_26 OFFLINE  

Impaler_26

    Cookie Meister

  • 2,603 posts
  • Braindead
  • Location:Hueco Mundo

Posted Mon Mar 25, 2013 5:11 AM

I'd like to see some pics, as I won't be able to try out the rom for a while.


Here you go:

flut_20130324-2.bin.png flut_20130324-2.bin_1.png
flut_20130324-2.bin_4.png

#15 MLdB OFFLINE  

MLdB

    Star Raider

  • Topic Starter
  • 71 posts
  • Location:Netherlands

Posted Mon Mar 25, 2013 5:37 AM

@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 :-D

#16 awace OFFLINE  

awace

    Dragonstomper

  • 551 posts
  • Location:MN,USA

Posted Thu Mar 28, 2013 2:58 PM

@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 Posted Image


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! ::)

#17 MLdB OFFLINE  

MLdB

    Star Raider

  • Topic Starter
  • 71 posts
  • Location:Netherlands

Posted Sun Apr 28, 2013 3:27 AM

Simple, but functional, options menu
Attached File  menutest.bin   4KB   225 downloads

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.

#18 Godzilla OFFLINE  

Godzilla

    Quadrunner

  • 6,794 posts
  • Location:Jacksonville, Fl

Posted Mon May 6, 2013 9:15 PM

sweet! look forward to seeing where this goes! great work!

#19 Der Luchs OFFLINE  

Der Luchs

    Dragonstomper

  • 854 posts
  • Location:Germany

Posted Fri May 10, 2013 7:08 AM

Great Stuff ;-) :thumbsup:

#20 MLdB OFFLINE  

MLdB

    Star Raider

  • Topic Starter
  • 71 posts
  • Location:Netherlands

Posted Tue May 14, 2013 10:59 AM

Playtesting the game with friends this weekend confirmed: it's playable :-D Flags were captured, opponents fragged and some really embarassing bugs found.

#21 MLdB OFFLINE  

MLdB

    Star Raider

  • Topic Starter
  • 71 posts
  • Location:Netherlands

Posted Thu Jul 4, 2013 9:38 AM

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.

Attached File  flut_20130704.bin   16KB   301 downloads

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 by MLdB, Thu Jul 4, 2013 9:42 AM.


#22 MLdB OFFLINE  

MLdB

    Star Raider

  • Topic Starter
  • 71 posts
  • Location:Netherlands

Posted Wed Jul 10, 2013 7:05 PM

+ 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'.

Attached File  flut_20130711.bin   16KB   167 downloads

Next release may have a functioning Sniper Rifle

#23 MLdB OFFLINE  

MLdB

    Star Raider

  • Topic Starter
  • 71 posts
  • Location:Netherlands

Posted Fri Jul 12, 2013 1:58 AM

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)

Attached File  flut_20130712.bin   16KB   212 downloads

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.

#24 Waggie OFFLINE  

Waggie

    Dragonstomper

  • 733 posts
  • Location:Dayton, OH

Posted Fri Jul 12, 2013 11:06 AM

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.

#25 MLdB OFFLINE  

MLdB

    Star Raider

  • Topic Starter
  • 71 posts
  • Location:Netherlands

Posted Wed Jul 17, 2013 2:57 AM

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 :)




0 user(s) are browsing this forum

0 members, 0 guests, 0 anonymous users