Jump to content
IGNORED

Legacy versus ARM-based 2600 Game Development


Thomas Jentzsch

Recommended Posts

16 hours ago, johnnywc said:

So at 18 million a cart, it would have been possible (plus the "cart" would have been the size of 2 or so tennis courts)?  :lol:  I'm pretty sure I could still do Galaga for the 2600 with only .8 Gigaflops (vs. .84). ;)  

 

 

And FPGA implementation of the Cray II would be feasible I think. No need to spend 18 million and require a small nuclear reactor to power it. It would probably fit inside an XM module if not a cart.

  • Like 4
Link to comment
Share on other sites

13 hours ago, johnnywc said:

If I didn't have 10 or so other 2600 projects I was working on, I would consider it... ;) 

 

I think it may be a good exercise to see what kind of Galaga port could be done with the technology of the time, perhaps with 32K, extra RAM (SARA, CBS RAM+, etc.) and with the DPC chip.  I already know the formation would be almost identical to what it is now since it's almost identical to the way Atari did it for Galaxian, so the rest would be needed to implement the enemies flying in, the double ship logic, etc.

 

 

Can you do Galaga '88 ???

Link to comment
Share on other sites

18 hours ago, johnnywc said:

PS I'm not sure but I thought at some point Darrell said that there is a bug in the ARM chip where the processor only runs at half speed.

 

There's a bug with the cache, so we have to partial disable it to prevent program crashes. We didn't know about it for DPC+, so we have to update MAMCR in main().  In BUS and CDFJ the driver does that automatically.

 

Just like the 6507, the ARM can only run game logic during VB and OS so we get just over 20% of its processing time for game logic.  

 

30 minutes ago, Kosmic Stardust said:

Has any gsme programmed thus far actually bottlenecked the ARM? There are some extremely restrictive limits the TIA and 6507 continue to impose.

 

In Draconian I ran out of processing time, so had to spread some of the game logic over multiple frames:

// work is spread across frames due to performance reasons
//
// FRAME & 3 FUNCTION           FEATURE - work spread across 4 frames
// --------- ------------------ -------------------------------------
//     0     StationMissiles()  fire new shots from stations 1, 5
//           MoveEnemyShips()   spawn I-Type missile
//     1     StationMissiles()  fire new shots from stations 2, 6
//           MoveEnemyShips()   spawn P-Type missile
//     2     StationMissiles()  fire new shots from stations 3, 7
//           MoveFormation()    spawn Formation
//     3     StationMissiles()  fire new shots from stations 4, 8
//           MoveSpyShip()      spawn Spy Ship
//
// FRAME & 7 FUNCTION           FEATURE - work spread across 8 frames
// --------- ------------------ -------------------------------------
//     0     StationOpenClose() Open/Close core of Station 1
//           MoveEnemyShips()   change direction I&P-Type 24
//           MoveFormation()    update direction of formation ships
//     1     StationOpenClose() Open/Close core of Station 2
//           MoveEnemyShips()   change direction I&P-Type 25
//           MoveSpyShip()      update direction of spy ship
//     2     StationOpenClose() Open/Close core of Station 3
//           MoveEnemyShips()   change direction I&P-Type 26
//     3     StationOpenClose() Open/Close core of Station 4
//           MoveEnemyShips()   change direction I&P-Type 27
//     4     StationOpenClose() Open/Close core of Station 5
//           MoveEnemyShips()   change direction I&P-Type 28
//     5     StationOpenClose() Open/Close core of Station 6
//           MoveEnemyShips()   change direction I&P-Type 29
//     6     StationOpenClose() Open/Close core of Station 7
//           MoveEnemyShips()   change direction I&P-Type 30
//     7     StationOpenClose() Open/Close core of Station 8
//           MoveEnemyShips()   change direction I&P-Type 23

 

In code that's done by this in StationMissiles()

  // For performance reasons, shoot from at most 2 of the stations per frame.
  // If need be, change to this for 1 station per frame:
  //    S=FRAME & 7
  for(s=FRAME & 3;s<8;s+=4)

 

this in StationOpenClose()

//  only process 1 station per frame;
  s = FRAME & 7;

 

similar logic in the other functions.

  • Like 4
Link to comment
Share on other sites

8 minutes ago, SpiceWare said:

 

There's a bug with the cache, so we have to partial disable it to prevent program crashes. We didn't know about it for DPC+, so we have to update MAMCR in main().  In BUS and CDFJ the driver does that automatically.

 

Just like the 6507, the ARM can only run game logic during VB and OS so we get just over 20% of its processing time for game logic.  

 

Thanks for clarifying Darrell!  And good point about the ARM only being used for at about 20% (still a huge boost though).

8 minutes ago, SpiceWare said:

 

In Draconian I ran out of processing time, so had to spread some of the game logic over multiple frames:

Yeah, I've had this same issue in almost every game, especially with Mappy.  Usually I throw whatever I can at the ARM to see what it can handle and then spend a few months optimizing everything so it can run in one frame since in Stella it always runs in one frame since the ARM processing time is not accurately emulated (it's always 0).  I do a Lot of testing on real hardware to make sure there aren't any screen rolls! :thumbsup: 

 

  • Like 1
Link to comment
Share on other sites

2 minutes ago, sramirez2008 said:

Add Lunar Lander to this list. Can’t wait to find out what the remaining six + games are.

A few I have mentioned before, like Champ Sports Hockey, Elevator Action, Rip Off! & Mountain Raider (still in design phase).  Another one is Archon, but that is just a proof of concept from a few years ago, and the last one I started a POC last week (inspired by the brick pattern in Zoo Keeper), but I'm not sure if I'm going to pursue it yet. :roll:;) 

 

 

 

 

  • Like 7
Link to comment
Share on other sites

58 minutes ago, save2600 said:

Oh yeah, Champ Sports games sound awesome too! Besides Hockey, I also dream of a Champ Sports Baseball.  :love:

 

I do have a very old POC for baseball, actually it's one of the first things I tried way back in 2001 when I was first learning 6502.  I love baseball too, so a Champ Sports Baseball is definitely a possibility! :D 

  • Like 7
Link to comment
Share on other sites

20 minutes ago, johnnywc said:

I do have a very old POC for baseball, actually it's one of the first things I tried way back in 2001 when I was first learning 6502.  I love baseball too, so a Champ Sports Baseball is definitely a possibility! :D 

Yeees! Whenever this is completed, we’ll need to get softball jerseys and meet up at PRGE.  Field of Dreams baby!

 

The jerseys and caps can display the Champ Games logo.

Edited by sramirez2008
Logo
  • Haha 2
Link to comment
Share on other sites

2 minutes ago, sramirez2008 said:

Yeees! Whenever this is completed, we’ll need to get softball jerseys and meet up at PRGE.  Field of Dreams baby!

Sounds good Steve!  :thumbsup:  I've always dreamed of a better baseball game for the 2600.  Pete Rose Baseball is pretty good IMO as is M-Network baseball, but I was super disappointed with RS and Super Baseball. :(  Homerun I'll always have a soft spot for, mostly because I got it with my Atari back in 78 and played the heck out of it.  Being a Red Sox fan, I always pretended the red team were the Red Sox and the blue team were the damn Yankees... ;)  

 

I'd love a game that looks and plays more like 5200 version (my favorite baseball game for classic consoles; Earl Weaver BB takes the cake for the PC though!), maybe even with voice! :music: 

  • Like 5
Link to comment
Share on other sites

Excellent. Being a Bronx boy, my team is still the Yankees. We can replay the rivalry, as long as we don’t include the ‘04 comeback by the Sox.?


Voice would be great, especially if you could include a few homerun calls from each teams announcers. 

Edited by sramirez2008
Voice
  • Like 1
Link to comment
Share on other sites

4 hours ago, johnnywc said:

 Being a Red Sox fan, I always pretended the red team were the Red Sox and the blue team were the damn Yankees... ;)  

 

I played a full season of Major League Baseball on the Intellivision with my best friend when we were kids. He was a Cubs fan and I'm a Reds fan so the colors were perfect.

  • Like 1
Link to comment
Share on other sites

5 hours ago, johnnywc said:

I love baseball too, so a Champ Sports Baseball is definitely a possibility!

you do not know how happy it makes me to hear this!

 

4 hours ago, sramirez2008 said:

Being a Bronx boy, my team is still the Yankees.

sadly, I gave up on the yankees when they tore down yankee stadium.  tearing through the american league, i could accept; tearing down yankee stadium I could not.  I lived a couple of blocks from the stadium in those days and listening to the pile drivers pound foundation into Macomb's Dam Park convinced me to move elsewhere.  ?

  • Like 1
Link to comment
Share on other sites

 

Quote

Yeah, I've had this same issue in almost every game, especially with Mappy.  Usually I throw whatever I can at the ARM to see what it can handle and then spend a few months optimizing everything so it can run in one frame since in Stella it always runs in one frame since the ARM processing time is not accurately emulated (it's always 0).  I do a Lot of testing on real hardware to make sure there aren't any screen rolls! :thumbsup:

Now imagine the effort when trying something remotely complex with just 1 MHz.

 

For Boulder Dash and Star Castle Arcade we (Andrew came up with the idea and first implementation) developed some kind of scheduler for tasks, which tries to prioritize and optimize CPU usage. For BD it allows low priority tasks to be skipped or delayed. All tasks are heavily optimized and must have carefully calculated and measured cycles, so that the scheduler can make sure that there will be no timer underflows happening.

Edited by Thomas Jentzsch
  • Like 1
Link to comment
Share on other sites

By this logic, nobody should develop hardware upgrades for our old machines because that will possibly make people write code for those upgrades.  We wouldn't want anything new showing what couldn't be previously done on the old machines.  Let's just keep cranking out Pong and Combat clones in 2020.

 

Similarly, how dare anybody modify an old classic car by adding horsepower.  It will ruin the image of the originals that don't go as fast.

 

It's this kind of thinking I believe that has totally destroyed any chance of the VBXE video upgrade for the Atari 8-bit computer to gain traction in the past 10 years.  One of the best upgrades I've ever encountered and the level of disdain for it just blows my mind.

  • Like 3
Link to comment
Share on other sites

7 minutes ago, Stephen said:

By this logic, nobody should develop hardware upgrades for our old machines because that will possibly make people write code for those upgrades.  We wouldn't want anything new showing what couldn't be previously done on the old machines.  Let's just keep cranking out Pong and Combat clones in 2020.

I don't think polemic posts help this discussion (or any other).

  • Like 4
Link to comment
Share on other sites

1 hour ago, Thomas Jentzsch said:

I don't think polemic posts help this discussion (or any other).

It's an alternate viewpoint and I tried to do it in a non name-calling manner.  Is discussion with a dissenting opinion no longer allowed?

Link to comment
Share on other sites

3 hours ago, Andrew Davie said:


I'm sure that I'm not the only one who had to look up the meaning of "polemic"!

As did I.  I read the definition, thought about what I had typed.  I then sat back and thought of the contributions that Mr. Jentzsch has put forth to the 2600 community.  Upon reflection (and seeing as that I have contributed nothing to the 2600 community), I have no right to this argument.  I really do apologize for my hostile post.

 

I will try to elucidate my thoughts in a much nicer and non-confrontational manner:

I  remain sad about this line of reasoning leading to the lack of support for, and even derision for the VBXE2 upgrade for the Atari 8-bit computer.  Everybody in the 7800 forum is stoked about the release of the XM module.  I know I am - I think I even have a single digit order number for the initial pre-order nearly a decade ago.  I find it odd (but am grateful for the fact) that so many people are excited for the new life this upgrade has breathed into the 7800 homebrew community.

 

I don't want to say that "any new game is a good thing" as shovel-ware is never a good thing.  But, we are seeing (and hearing) titles on the 7800 that could have never existed when it was sold.  But, at the core, it is still using the same hardware to generate video.  So we have more RAM.  Upgraded sound was a possibility when the 7800 was new (the same as the DPC ship made extended audio possible way back when Pitfall 2 was released).

 

I am truly curious as to why some upgrades such as the 7800XM and FX-18A (apologies if incorrect) for the Colecovision are lauded with praise and supported, while others, such as Harmony for 2600 and VBXE for 8-bit are derided.

Link to comment
Share on other sites

54 minutes ago, Stephen said:

I am truly curious as to why some upgrades such as the 7800XM and FX-18A (apologies if incorrect) for the Colecovision are lauded with praise and supported, while others, such as Harmony for 2600 and VBXE for 8-bit are derided.

 

Retracted because I really don't want to be misunderstood.

In short, though... programmers each choose what they think is the meaning of '2600 programming.

There are no wrong choices.
 

Edited by Andrew Davie
  • Like 6
  • Thanks 1
Link to comment
Share on other sites

Thank you.  Perfectly understandable, and succinct.  I am a few years late to the party.  My first computer was a 16kB Atari 400 with a b-key keyboard, and 410 recorder for my 7th b-day in 82.  Family had a 2600, I remember growing up with it.  Never coded for it.  Later learned what it took, and said "no thanks - I at least need a frame buffer".

 

For me, starting my coding life as a youngster on the 8-bit, I was used to regular upgrades.  Sound, RAM, 3rd-party video for even the 800.  It was just natural for the machine.  There's always been that delineation between computer (expandable) and console (fixed, it is what it is!).

 

Still, even on the platform I am equally enthusiastic for (and do code for), I am grateful for all new software.  Everything from stock 16kB machines, through 1MB VBXE stereo machines.  For me, it's the logical progression the machine would have taken, had Atari not lost all capability for innovation and improvement after losing Miner and company.  Had the 8-bit line progressed, we would have seen what we now have.  6502 to 65816, single pokey to dual pokey, more RAM.  The VBXE is a progression of the GTIA.  More bandwidth per line (but still a display list driven, pine by line display), etc.

 

I'll stop clogging the thread, and say peace to all Atari coders.  I demoed this on a Harmony cart for 3 days at VCFMW this year and the reaction was nothing short of stunning.  It was played non stop the entire weekend.  Looking forward to a cart soon.

Link to comment
Share on other sites

Well, overall this thread is just showcasing that everyone thinks differently and has different opinions. Nothing wrong with that. 

 

In terms of new tech the only true constant is change. There's no stopping it.

 

As a programmer it is easy to look at a game and get a rough idea of its construction through a quick peek in Stella's Debugger. The GP don't know how to do so or even what they are looking at. A programmer does and forms a different perspective on what went into a game. Again, nothing really wrong with that.

 

Shovelware has its place. I personally have no issues with better tools allowing barriers to be taken down and gives more people the opportunity to create games themselves. They can expierence the joy (and pain) of programming. I'm all about letting people expierence this. Truithfully we need much more programmers to help keep the 2600 alive.

  • Like 2
Link to comment
Share on other sites

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.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...