Jump to content
IGNORED

Pitfall! binaries and source code


retroclouds

Recommended Posts

Today is a special day for me. I'm releasing both the binaries and source code for

my remake of Pitfall! for the Texas Instruments TI-99/4A.

 

This is revision B, which runs on a bare console without 32K memory expansion.

 

Binaries

pitfall_rev_b.zip

 

Source code

pitfall_rev_b_source.zip

 

The source code is fully documented and includes instructions on how to assemble the game.

I'm hoping it's showing how much fun programming TMS9900 assembly language can be. :)

 

If you like this, you also may want to checkout my SPECTRA arcade game library.

 

Enjoy :D

  • Like 7
Link to comment
Share on other sites

Filip, could you do a short writeup on exactly how you built this thing? I wanted to go into much more detail in our RTM article, but didn't think the venue was right for it. Most of those readers want reviews of Mega-man, not a bunch of technical stuff... I know you have several entries at your site--maybe you could copy and paste them here for the Atariage group?

Edited by Opry99er
Link to comment
Share on other sites

Filip, could you do a short writeup on exactly how you built this thing? I wanted to go into much more detail in our RTM article, but didn't think the venue was right for it. Most of those readers want reviews of Mega-man, not a bunch of technical stuff... I know you have several entries at your site--maybe you could copy and paste them here for the Atariage group?

 

I'll add it to my to-do list Owen.

This may take some time though, work has been a killer lately and most likely will stay that way for the next few months.

Link to comment
Share on other sites

Hey Filip... In looking through your source, (and I'm by no means a competent AL decipherer) it appears that you've utilized several of these subroutines over and over by branching back to them

over the course of your game... Essentially, if I'm understanding this correctly, once you get a whole bunch of these subs built, you maintain a very organized structure by simply branching and linking--- almost like a GOSUB in XB. Sorry, I'm new to this but I'm starting to make heads and tails of it all by reading a bit of your source here. Amazing comments man/-/ it really makes the while thing make so much more sense!!! This doesn't appear to be much more difficult than XB, once you have a big set of subroutines built up--- it's just a matter of understanding how to manually build a CALL CLEAR from scratch, and such. :)

Link to comment
Share on other sites

Hey Filip... In looking through your source, (and I'm by no means a competent AL decipherer) it appears that you've utilized several of these subroutines over and over by branching back to them

over the course of your game... Essentially, if I'm understanding this correctly, once you get a whole bunch of these subs built, you maintain a very organized structure by simply branching and linking--- almost like a GOSUB in XB. Sorry, I'm new to this but I'm starting to make heads and tails of it all by reading a bit of your source here. Amazing comments man/-/ it really makes the while thing make so much more sense!!! This doesn't appear to be much more difficult than XB, once you have a big set of subroutines built up--- it's just a matter of understanding how to manually build a CALL CLEAR from scratch, and such. :)

 

Hi Owen,

 

that is exactly what I'm doing, calling subroutines from the main program.

The "basic" subroutines I'm using are all documented. check the SPECTRA reference manual here.

 

The main difference compared to an extended basic program is that I'm actually running the whole game from a driver table.

 

Basically what I have is like an extended basic array and each entry in the array contains the address of the subroutine to call

(+some additional info like when it should be called, etc.)

The main program constantly loops over this array, checks if its time to call the subroutine and calls it.

The good thing is that you can fiddle with this array while the program is running.

So it is not a problem to add/remove/rearrange the array from inside a subroutine.

 

That way you can do things like pause the game, slow down, add new animations, etc.

Check out the "Timers" section in the mentioned SPECTRA reference manual (starting page 64).

It should give you a pretty good idea of what is going on ;)

Link to comment
Share on other sites

  • 6 months later...

I don't play games much and when PITFALL! originally came out (in 1982) I could not get it because, well, I had a 99/4A and the game did not exist for the 99/4A until a few months ago. ;)

 

Now that I have had to actually *play* the game to make sure the carts sold on the CHC store are good, I have to say Retroclouds' conversion is absolutely AWESOME! Admittedly I had not actually played the game prior - *hangs head in shame* - BUT I downloaded though, and looked at the title screen in Classic99!?!?

 

If you have not actually played the game, even a little, you really need to! I can't get over how smooth the whole thing runs, and now I'm going to have to go read the source code because he did things in the game that I don't know how I would do.

 

I just wanted to throw this out there and give my two cents on the game. It is fantastic! Retroclouds nailed it! Even if you don't like games very much, you should play it a little just to see what I'm talking about.

 

Matthew

Link to comment
Share on other sites

I don't play games much and when PITFALL! originally came out (in 1982) I could not get it because, well, I had a 99/4A and the game did not exist for the 99/4A until a few months ago. ;)

 

Now that I have had to actually *play* the game to make sure the carts sold on the CHC store are good, I have to say Retroclouds' conversion is absolutely AWESOME! Admittedly I had not actually played the game prior - *hangs head in shame* - BUT I downloaded though, and looked at the title screen in Classic99!?!?

 

If you have not actually played the game, even a little, you really need to! I can't get over how smooth the whole thing runs, and now I'm going to have to go read the source code because he did things in the game that I don't know how I would do.

 

I just wanted to throw this out there and give my two cents on the game. It is fantastic! Retroclouds nailed it! Even if you don't like games very much, you should play it a little just to see what I'm talking about.

 

Matthew

 

 

Thanks, I'm really glad you like it :)

 

When I started looking for a game to port to the TI-99/4A, I checked several candidates.

In the end I picked Pitfall! because it looked easy to convert. I had to play it a lot to learn it has quite a few subtle tricks.

The one I like the best visually-wise, is how the rope swings between the tree leaves. If you look closely, you'll see how a few pixels

of the rope appear between the "holes" in the tree tops.

The colecovision programmers did a nice job there, overlaying sprites in a a clever way.

 

As far as the source code is concerned, there is plenty I would do differently now. First of all I think it's important to decide

what your "target" platform will be. Meaning, are you heading for a cartridge version that runs without memory expansion or are

you targetting a disk version with 32K memory expansion. I started from the disk version and shoehorned it to fit in the cartridge space.

That shows in the source code, but in the end I was pretty pleased with it.

 

:)

Link to comment
Share on other sites

I have a Pitfall cart--- I won it. Hehe--- anyway, this game project is partly responsible for renewed external interest in our machine here on atariage and elsewhere. I remember a couple of years ago when this game was still in the works--- there was virtually no interest from most over at the stiff-ass list... But the atariage homebrew thread was hoppin!! When the game was completed and eventually put into cart form, the list came around--- but the die was cast for the Atariage model. Here, people are actually excited and positive about projects. That's why we're all here. :)

 

I've said it before, I'll say it again... Filip is a pioneer---

 

thank you for Pitfall, your source code, the RGPC, and your continued support for programmers and new developments.

 

Now we have Adamantyr with "Realms of Antiquity," Codex's Magellan and his Flyguy which is on it's way to assembly immortality--- Matthew's tutorials and future book--- Marc Hull's brilliant XB offerings and SID card, John Chase has been on a TEAR with his games and hardware... There are too many to mention. And alot of this forward motion can be traced back to the excitement generated by Pitfall. :)

Link to comment
Share on other sites

  • 9 months later...

Wow, that is a really nice review! Very very well done. Does anyone know who the guy is?

 

As for the differences, I noticed a few of them, like the slowing when jumping from screen to screen and the logs starting in a position such that you get nailed when you enter a screen when running to the left. But, I have not played any other version in over 20 years, so I had no idea if those were aspects (or bugs) of the originals.

 

I suppose some of the things he mentions, i.e. the really close collision detection, slowing when you jump, speed of the traps, etc. could be used to incorporate a difficulty system if you wanted. Just a thought.

 

The reviewed has other TI titles on his YouTube page, so I'll be checking those out now... :-)

Link to comment
Share on other sites

  • 3 months later...

Is there anything special about the beige non-v2.2 console (QI, I believe) which would cause some of the graphical elements to not appear during the title sequence? In particular, he has not face or legs, and half the swinging vine is missing. My concern is there is something actually wrong with my console.

Link to comment
Share on other sites

Not that I'm aware of. Any chance you can take a picture of the reported behaviour?

 

I remember that the title screen was kinda tricky to implement, because it uses half bit-map mode and has some overlapping sprites.

Would expect that -if it runs-, it should run the same on all stock TI-99/4A's.

 

Could imagine it acts kinda weird on a 9938 or 9958 VDP.

But I think Matthew was able to make it run fine on the F18A.

 

What happens if you get passed the title screen. Does everything look ok then ?

Edited by retroclouds
Link to comment
Share on other sites

Not that I'm aware of. Any chance you can take a picture of the reported behaviour?

 

(...)

 

What happens if you get passed the title screen. Does everything look ok then ?

 

Yeah, I will get a picture tonight. Everything seems to work fine after the title screen.

Link to comment
Share on other sites

I use Pitfall! as one of my main test carts. It runs fine on the F18A. I'm not sure how it would run on the 9938/58 since I ignore most of the 9938/58 registers. My enhanced features use registers that the 9938/58 don't use. However, the 9938 datasheet states that it is "software" compatible with the 9918A, so if you don't do any "rule breaking" in your use of the 9918A, then your software will run on the 9938 just fine.

Link to comment
Share on other sites

Today I hooked up the beige console again, but everything worked fine. Not sure if the last problem was a cartridge seating issue, or if my new hardware is flakey. I guess time will have to tell as I do not have the time nor patience right now to troubleshoot it.

Link to comment
Share on other sites

  • 1 month later...

Yes, me and my kids bought the last Pitfall cart at the fair this year and was playing till 4 a.m. Very nice job! I never new the TI could manage so well with all the action on the screen. Clearly my best cart game in my families collection. I like that you posted the codes, would realy like to start learning how to program on the TI other then Basic and Extended Basic.

 

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