Jump to content

Ryan Witmer

+AtariAge Subscriber
  • Content Count

  • Joined

  • Last visited

Community Reputation

674 Excellent

About Ryan Witmer

  • Rank
  • Birthday 03/08/1979

Profile Information

  • Custom Status
    Fleeing all W'rkncacnter
  • Gender
  • Location
    Burien, WA
  • Interests
    Programming, board games, martial arts, baseball, cricket
  • Currently Playing
    Phantasy Star
  • Playing Next
    Shining Force

Recent Profile Visitors

14,638 profile views
  1. Thanks, there will be plenty of test builds down the road, and I could use as many people as I can get. I think I ironed out all the bugs I introduced yesterday. Basically, the game was losing track of how many enemies were alive at any given time, which completely screws up the appearance of new enemies. The way this is working right now is supremely hacky and I don't like it. I might need to do a significant rewrite of some of this logic. I decided to use the lowest digit of the score to track the enemy count so I could see it (this digit is normally always 0) and I left that code in there until I'm certain the issues are fixed. If you see any screenshots with a number other than 0 at the end of the score, that's just debug code. I also fixed up some of the timings surrounding enemy respawns. They might need a little tweaking still, but there were some bugs in the areas where these timers got reset and started. My coffee maker stopped working this morning, and since a programmer is just a machine that converts coffee into code, I think I'm done for this weekend. Cleaning up this spawning logic was a big deal, even though it's not the sort of thing that shows up in screenshots and videos. Next, I need to add the rest of the details to player damage, then I should be able to start adding the other enemy types.
  2. It's closer. I got the player taking damage and the game ends when your health hits 0. The damage system is very simple right now, I still need to add the appropriate animation effects and make the player's speed decrease like it does in the real game. I also haven't dealt with health recovery yet. I fixed some glitches today, the biggest one probably being that the hit detection for blocking was actually totally wrong on one axis. I've also been trying to nail down exactly when an enemy is considered dead for spawning purposes. In the Inty game, enemy discs are allowed to continue in flight after the enemy dies, which makes this rather complicated. I mostly got this whole mess sorted out today, but ended up introducing a bunch of bugs into the wave spawn code so I'm not quite there yet. When the player "dies" the game just goes into a lock-up loop at the moment. It does look for the reset key while in this loop, so I guess I sort of have game resetting working, after a fashion. I also took the time to test on real hardware today. It seems pretty good, although the block/crouch key seems to be a little off. I'm not sure if that's my code, or the unreliable nature of the 5200 keypads. Needs more investigation. Here's a pointless picture of the game running on my 5200:
  3. The central problem is that the missile colors are tied to the player colors, and not independent. Fifth player mode gets you an independent missile color, but it's the same for all four missiles. Without resorting to sprite flickering or restricting the enemies to specific vertical zones (which I believe the 2600 version does) I can't get the enemy/disc color combinations that the Intellivision can do. I'm a also using a five-color playfield mode, which means one of the playfield colors is shared with the missiles in fifth-player mode. I would have to make some serious gameplay sacrifices to match the color scheme the Intellivision uses, and I'm just not willing to do that. I also have some other surprises planned that would compromised by doing anything too crazy, so I'll just have to get by with a less than optimal solution. Sadly, I won't be able to get much done this weekend because of real life stuff. Today I went and mopped up a few little things that had been bothering for me a while. In the original game, if a character catches their disc while in the blocking or crouching stance, they immediately stand up. I've made this happen. Related, you can now throw your disc from the blocking and crouching stances. I think I had this working at point but I broke it when I made some changes to the crouching logic. It works again. I also made sure that the disc is thrown from a common position no matter what state the character is in when they throw it. Previously it was thrown from where ever it happened to be located in the carrying or blocking state. The new behavior more closely matches what the Intellivision does. I also made sure you can go back to the blocking stance after crouching. I missed this the first time through. I'm not sure if I'll find time to work on this tomorrow, but if I do it will most likely be to fix up some similar little things. The next big feature to implement is player damage and death, but that will have to wait for next week.
  4. I have my own sound engine that keeps getting fancier from game to game. The POKEY maestros would probably point and laugh at it.
  5. The sound chip deals mostly in frequencies. I found this really cool website: https://www.liutaiomottola.com/formulae/freqtab.htm I used this to translate O Canada one note at a time from the sheet music for my curling game.
  6. I mopped up a few graphical odds and ends today, and put together this little video showing off the blocking mode:
  7. A fine day's work. Disc blocking is now, as far as I can tell, completely implemented. I have the following working: The enemy disc shatters on impact with your shield. Points are awarded as appropriate. A new disc eventually reappears for the enemy that lost their disc. Due to the resolution limitation of the 5200 missile sprites, my disc shatter animation isn't as cool as the Intellivision's. There really isn't anything I can do about this. Tomorrow I'm planning on cleaning up a few bugs, in particular I need to deal with positioning the disc correctly when the player crouches. After a little cleanup I'll probably make a new video. For now, I'm going to play with my cat.
  8. This is something I talked about when the 5200 Podcast guys had me on. I really want to make use of the things that make the 5200 special, like the trakball and the four controller ports. Ratcatcher has a three-player mode, Curling uses all four ports in some modes and uses the analog features of the joystick. Magical Fairy Force uses trakball control, and now I'm going for that awesome joystick coupler. I think I just got the disc blocking working a couple minutes ago. Now I need to do everything that comes after it. That would be the disc-shattering animation and the enemy's new disc eventually showing up. Sounds like something to do after lunch.
  9. I've heard about this several times, but this is the first time I've actually seen it. Not sure I have anything that cool up my sleeve, though. Yes, that's still going to be done. I probably won't do it until I have some kind of title screen put together because I need some kind of simple menu for selecting the control mode. The code so far was written in a way that should allow me to easily plug that in when the time is right.
  10. Hexen, if you don't stop beating me up I'm telling Dad!

  11. I'm not, but I don't know what anyone else is doing. I usually start working on sound toward the end of a project. The score line on top is mode 7. The rest of the screen is mode 4. This is the first time I've messed with character-based graphics and I really wish I'd tried it sooner.
  12. So here's a shot of the player in the blocking stance. The Intellivision game had six blocking positions, and I've got all six in place. This was way harder than I expected it to be, but it's finally done. When I did my PC version of this game long, long, ago, I actually didn't bother with whole block/crouch system so this is the first time I've had to deal with it. Note that the blocking logic is not there yet, nothing happens when an enemy disc hits your shield. That's the next step. Also, exiting blocking mode isn't very clean yet. I need to work on disc positioning for crouching/hit players and also take a closer look at how the original game behaves when you throw your disc from the blocking or crouching stances. Even without those things, this was my big goal for the weekend so I'm really happy. I've been putting this off for a long time and it's a relief to finally have the hard part done.
  13. Ryan Witmer


    Screenshots and media for Intellidiscs for the Atari 5200.
  14. I started working on the blocking system today. I started by doing the blocking animation frame for the player and putting in the code that transitions you to blocking mode. I started working on putting the player's disc in the proper location for blocking when I realized that I had a much more general problem to solve. I've mentioned it a few times, but I never really dealt with putting the disc in the proper place in the player's hands. Since the blocking mode is really just a special case of this, I decided to pause for a bit and go solve this in general. Unfortunately this screen shot seems to have caught an in-between frame or something so it's a bit blurry, but if you look at the player and the enemy to his left you can see the discs are now moved to the right places instead of floating behind the dude's head. I also changed the player color, making it a very light blue because good guys are blue in Tron. I still need to do a little more work on this. It works fine when you're running around holding the disc, but I need to make sure things work when you catch the disc too, because right now they don't. Once this is fully working I can go back to the blocking mode. It would great to get the blocking done this weekend. My target is to get the player logic done, that is I want to be able to enter and leave blocking mode and move the disc around while in that mode. The actual act of blocking enemy discs, destroying them, and their replacements showing up can wait for later.
  • Create New...