Jump to content
IGNORED

Hell's Halls - 16K TI BASIC Game - Completion and Physical Release


pixelpedant
 Share

Recommended Posts

I've gone silent about my TI BASIC 16K cassette game project Hell's Halls lately for the most part here.  But it's for the best of reasons.  Namely, that I've been too busy working on it.  And in the end, I'm really happy with the outcome, and really do think it's a great demonstration of what a TI-99/4A can do with only the console's ROM BASIC and cassette. 

 

A sampling of the game is here:

 

 

 

So to recapitulate, Hell's Halls is a dungeon adventure written in TI BASIC for the unexpanded TI-99/4 and 99/4A featuring pseudo-random dungeon generation and some use of scene graphics and story text.  It uses ESDX control for dungeon navigation and combat.  

 

I wanted to make the best game which in principle I could have written back in the day, using only the TI-99 console and Program Recorder.  That is to say, using only what can be directly typed in via TI BASIC and saved to cassette.  

 

And the good news is, I've finally gotten the game to a release stage.  Or rather, I've gotten two versions of it to a release stage, one of which I call the Main Quest and one of which I call the Second Quest.  Ultimately, these are meant to complement each other and have slightly different priorities, and also to conveniently occupy two sides of the game cassette.  

 

1146623472_Tapeinclosedpackage-Edit.thumb.jpg.6a49e55f068cd94eb056e2ddf054a0f4.jpg

 

And that last part is genuinely a major motivation for me.  Because I've been all in on this project and intent on making it one of the most ambitious TI BASIC cassette games out there.  And it couldn't be any of that if it didn't have proper physical materials.  Hence my doing up a small batch of them on cassette, in cases with the look that I want for the game, and accompanied by the supporting materials it deserves.

 

514874990_tapeandfoldoutstillfolded-edit.thumb.jpg.4732d13a9d84fdbc26d35d96b822340f.jpg1430392002_completepackagelaidout-Edit.thumb.jpg.666a5f3d734fa858fe20f0b4c193ab98.jpg

 

 

I have absolutely no idea how many people are actually interested in a branded and packaged 16K TI BASIC cassette game in the year 2022.  We'll just have to see.  But regardless, putting these together is fairly time-consuming, so I'm just doing a small run of about 20 game packages (as I lack materials for more, right now), and posting here first, so folks around here get a crack at it before I take it to YouTube or Twitter.

 

Technical Considerations:

 

The game (in either of its two variants) does not require the total absence of VDP buffers associated with a disk controller.  It does require that CALL FILES(1) be used, however, in the customary manner.  Recording length is about 2m40s in both cases, but the tapes are 5m per side so as to minimize rewind time when changing sides.  

 

Use of Extended BASIC is not recommended, as the game has been heavily optimized around TI BASIC timings and performance idiosyncrasies.  And compiling will not be possible, due to extensive use (and abuse) of floating point math.  

 

But Can I Play It?  Like Now?

 

Yes.  I am releasing the main quest here.  The game package with the second game variant (which features different and more randomized quest text and scenes) I'm releasing with the physical release (on Side B, with the Main Quest on Side A).  But here is the main quest:

 

https://pixelpedant.com/HALLS-MAIN.wav

 

And How Can I Buy It?

 

The very small batch of 20 or so that I've mostly now finished is currently available here:

 

https://shop.pixelpedant.com/products/hells-halls-for-ti-99-4a

 

Items will ship from Canada, where I am located, and should ship fairly quickly, as most of the materials are ready to go, as I say:

 

1625334277_HellsHallscopiesstackedonprogramrecorder2.thumb.jpg.e5b36e89874645678d304d7ca1d308b1.jpg

 

If you strongly prefer US domestic ordering, ordering via ArcadeShopper will likely be an option shortly, as long as they don't just sell out, and I actually have stock to send him.

 

 

  • Like 31
  • Thanks 6
Link to comment
Share on other sites

VERY COOL!

It is great that you have used the "TI as is" to make this game and run it! I think you have used the strong points of the TI and made a really good game. From what I can see this game is so good that it works today even being used to a much faster game pace. You have done some smart programming "moves" to make it "Fast". I will for sure test it out when I get back from vacation!

LOL - When is Hells Halls II released? ?

Also, I think your game concept is a strong one and can grow, in many ways.

PS! I think you will sell out!

Edited by oddemann
Bugs?
  • Like 3
  • Thanks 2
Link to comment
Share on other sites

2 hours ago, oddemann said:

LOL - When is Hells Halls II released? ?

Also, I think your game concept is a strong one and can grow, in many ways.

We'll just have to see ;)

 

But I do think it can grow, and I've got my eyes on where to go from here with some of the things I cooked up for this one, absolutely.  After a break from putting so much work into this project in recent months. 

 

The main thing that took a long time to cook up, but is a really tempting tool for any subsequent project is just the bytecode I've used to encode nearly all the CALL HCHAR/VCHAR/SOUND/COLOR data the program uses.  So for example, this DATA statement is several HCHAR/VCHAR commands interleaved with 21 CALL SOUNDs (in groups of 3), and a CALL COLOR:

 

9600 DATA "ABB}JA~'DA`}J7~'RA`}J>~'TKL}J4~'VJN}J7~'XIP}J'~'EL3}J7~'EU3"

 

With tokens within the DATA statement identifying data types for the purpose of an "interpreter", and passing control to relevant subprograms for the ensuing data accordingly.

 

It allows for quite compact music and scene graphics, and positioning of text.  And it's very likely I would reuse this strategy and encoding in subsequent projects, consequently.  Since in 16K TI BASIC programs, "compact" is everything. 

 

 

  • Like 8
  • Thanks 3
Link to comment
Share on other sites

It is a really nice result for the package, I really like. 

 

Because at the moment I have dumped about 700 old cassette tapes, I have experience in some loading problems of some programs, often because part of the tape is not always the same quality.

I can say that if you have remaining space per side (and I understand you have) probably it could be good if you can save the game for two time per side. 

 

So that if a user will have problems loading the first one of the side can try to load the second one. 

It is just a suggestion if you agree it could be good. 

Edited by ti99iuc
  • Like 5
Link to comment
Share on other sites

1 hour ago, ti99iuc said:

I can say that if you have remaining space per side (and I understand you have) probably it could be good if you can save the game for two time per side. 

 

So that if a user will have problems loading the first one of the side can try to load the second one. 

It is just a suggestion if you agree it could be good. 

 

Clever idea.  God knows, we need all the help we can get, when it comes to making this medium reliable, despite everything arrayed against it. 

 

  • Like 7
  • Thanks 1
Link to comment
Share on other sites

I am curious about how you are producing the recordings.  When I did my games, I used "real" hardware (console and Program Recorder.)  This took a lot of time, but compared to options like dubbing (tape-to-tape copy from a master tape) or recording from a PC-played wav file, I felt it gave a better one-on-one chance of being successfully played back on real hardware.  Of course, I also lack anything other than consumer-grade equipment.

  • Like 2
Link to comment
Share on other sites

Yeah,  I started with a bulk cassette copier, but testing the results, the failure rate was unacceptably high.  Also tried PC line out (playing the WAV file) to cassette recorder.  Also seemed too finicky. 

 

In the end, I've ended up doing them all with a Program Recorder and TI-99, which, while time-consuming, basically always *just works* for non-faulty tapes.

  • Like 8
  • Thanks 1
Link to comment
Share on other sites

On 8/2/2022 at 11:13 AM, pixelpedant said:

After a break from putting so much work into this project in recent months. 

I wonder how you developed this program ... on the real iron, hard-core nostalgic, or on an emulator and some tools ... which?

  • Like 2
Link to comment
Share on other sites

5 hours ago, SteveB said:

I wonder how you developed this program ... on the real iron, hard-core nostalgic, or on an emulator and some tools ... which?

Classic99 and Notepad++ mostly.  So a bit of a middle ground.  In that I wrote it mainly just by typing it into a text editor and designed the overall program's control flow and logic mainly just by remembering line numbers (of subprogram entry points and DATA statement locations), and by keeping lists of DATA and Subprogram line numbers in separate documents during development. 

 

I also managed the difficult problem of mutual interference of subprogram variable values (i.e., if the game is six GOSUBs deep, as it often is, is it "safe" to use an "X" variable in a given subprogram?) by keeping track of "local" variables to each subprogram and "global" variables which should never be used for subprogram-specific purposes. 

 

So most of that strategy is all stuff you could do on a piece of paper back in the day.  Which I would prefer it to be.  I didn't want to use any tools which generate code for me.

 

And the program's line number sequence is kind of bonkers because this approach made use of RES impossible.  By RESequencing it, I'd lose almost everything relevant to navigation and use and reading of the program code.  And lines like this would now be meaningless gobbledigook, instead of mostly meaningful to me:

 

1310 ON 339/GC GOTO 1100,1100,1450,1460,1400,1100,1500,1400,1430,1650

 

So my most invaluable tool during development was really just "making lists", which is pretty era-agnostic stuff.  Simple stuff like this:

 

Low Number GC Values
1=1450 - Additional high number values
2=1460 - Wildcard Tile
3=1400 - Damaged Tile (behaves exactly like floor)
4=1100 - NOTHING
5=1500 - CLOSED V/H DOOR
6=1400 - OPEN V/H DOOR
7=1430 - WALLS
8=1650 - STAIRS

High number GC values
1=2600 - Explosive Tile (R)
2-1100 - Nothing
3=2600 - Explosive Tile (B)
4=1400 - Floor
5=2730 - Healing
6=2700 - Gold

 

Though modern spreadsheets were very helpful in working out some of the more complicated math. 

 

 

  • Like 6
  • Thanks 1
  • Haha 1
Link to comment
Share on other sites

Looking forward to receiving my copy and firing up the dual cassettes!  You mentioned Notepad ++.  I assume you made a User Defined Language (UDL) and that is how you have keyword highlighting that you show in your videos.  Would you consider exporting the UDL for the community to download?  Thanks!

4B549FC9-A3BC-49EA-9568-3286B7045529.jpeg

Edited by Switch1995
  • Like 2
Link to comment
Share on other sites

10 minutes ago, Switch1995 said:

Looking forward to receiving my copy and firing up the dual cassettes!  You mentioned Notepad ++.  I assume you made a User Defined Language (UDL) and that is how you have keyword highlighting that you show in your videos.  Would you consider exporting the UDL for the community to download?  Thanks!

I really should go to the trouble at some point, but honestly, I just use VB syntax highlighting.  It gets things mostly right :P

 

I'm so used to the highlighting this approach results in at this point that any change to it would probably just drive me up the wall.  So I'll probably just stick with it as is. 

 

But it's pretty good generally.  e.g. (as seen in that video)

 

image.png.8f3640c85f4e56d247011b9a01d3940e.png

  • Like 1
  • Thanks 1
Link to comment
Share on other sites

2 hours ago, Switch1995 said:

Looking forward to receiving my copy and firing up the dual cassettes!  You mentioned Notepad ++.  I assume you made a User Defined Language (UDL) and that is how you have keyword highlighting that you show in your videos.  Would you consider exporting the UDL for the community to download?  Thanks!

There is an Extended BASIC language syntax highlighter for Notepad++ in the Development Resources thread.

 

 

 

 

  • Like 1
  • Thanks 2
Link to comment
Share on other sites

I am now sold out of the original batch of 18 as well as 2 more I made last night.  Fittingly, the last of those 20 went to Adamantyr - who better than the king of the TI RPG himself? 

 

Since demand has been significant and orders have now been placed and games packed for a few key people I wanted to be sure got a chance to order one, I'll do a final review of what I have and how many more I can make with it (probably 2 or 3) and put those up at some point soon.

 

It looks like the tape and tape packaging supplier I worked with on this little run could potentially support another run at some point, but that's merely hypothetical at this point. 

  • Like 11
Link to comment
Share on other sites

For anyone who subsequently finds themself coming to this thread still looking for a copy, I have added a "Notify me when back in stock" option to the product page, which will provide for immediate notification of new supply.

 

But perhaps even more importantly from my point of view, it will give me a sense of how many people still want a copy, so I know what to prepare for. 

 

 

  • Like 4
  • Thanks 3
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...
 Share

  • Recently Browsing   0 members

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