Jump to content
IGNORED

Titanium


Asmusr

Recommended Posts

post-35226-0-43817600-1376116740_thumb.png

Titanium is my first game for the Ti-99/4A written purely in assembly language. The name is a reference to the C64 game Uridium - a favorite of mine - from which I have borrowed many ideas, and, of course, to the TI. The game engine and the graphics on level 1 are based on my half-bitmap mode, vertical scrolling demo. (I would like to do a proper port of Uridium for the TI at some point, but that should be based on a different technique for the scrolling.)

The game requires a disk drive, a 32K memory expansion, and a E/A cart or similar to run it. To start the game, insert the disk in any drive and use E/A option 5 to run DSKX.TITANIUM. I have not tried it with a real floppy drive, but I expect it to work.

The gameplay is very simple: shoot all the targets, e.g. pyramids, to reach the next level. Avoid the blinking spheres and the enemy ships. Use joystick 1 or S, D, E, X + space to control the ship. P pauses the game. I don't know if it's too easy or too hard - it's difficult to tell when you have tried it so many times.

This is the first game I'm aware that’s using the F18A, but only to avoid the sprite duplication issue that exists in the old VDPs (9918A, 9928A) in half-bitmap mode. If an F18A is detected the program uses a standard half-bitmap mode with only one pattern table. If an F18A is not present it uses three pattern tables, but still only one color table. This eliminates the problem on the old hardware, but also lowers the frame rate because it doubles the amount of data that must be sent to the VDP. If you press F on the start page you can manually switch between F18A mode and standard mode. This allows you to see the sprite duplication problem in action on the old hardware, and can also be used to increase performance on MESS where the F18A is not detected (the F18A is detected in Classic99).

I'm using Tursi's mod player for the music on the start page. I tried to compose my own music, but it ended up sounding very similar to the Blade Runner, so I decided to use that as my main theme. Within the game I'm using my own, simpler sound player and excerpts from Bach's 'toccata and fugue in d minor' - a reference to Gyruss, which is another favorite of mine.

I consider the game in its present stage a beta version. I welcome suggestions for improving the gameplay, but major additions at this point are likely to slow down the game. For now I will fix any reported bugs and release the first version, and in a month or two when I regain some energy I may release a version 2. More levels/maps could easily be added without affecting performance.

I include the full source code and data files. The maps were created using Magellan, the music using mod2psg2.

Thank you to everyone who has helped me on this project. It has been very interesting and a great learning experience, and I think it demonstrates that there's still some potential left in the old TI.

[Edit 14 Aug 2013] Added version 1.0 attachment. Titanium_1.0.zip. An XB loader is now included, and the E/A 5 file is called TITA.

 

 

64K bank switched (379) ROM image: Titanium3.zip

  • Like 14
Link to comment
Share on other sites

Absolutely fantastic .... This is the one to show people what a TI & a good coder can really do ..... :thumbsup:

 

I used to have a Commodore 64, and I had Uridium, and this game is very close in feel, and look ... but wow this thing is on a TI99 .... I love the way you can turn the ship around, to get that base you missed on the way up! .... also , neat little things like you can leave it kind of tilted as it flies along ...

 

I'm loving this.

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

Gorgeous game! Has a similar feel to Tormanen's War Zone. Music is great and the mod player addition is a nice touch which I will try to use with my own project as well. Game play is actually quite balanced, challenging enough but not overwhelming. I love the animation of the ship with half loops and the variable speed.

Truly excellent job :thumbsup:

Now if I may ask, could I include it on the TI Gameshelf site?

Link to comment
Share on other sites

Very nice! just getting a black screen using MESS though, I know MESS has no F18A emulation but could it be something to do with F18A mode being accessed before play has started as it does'nt even get to the title screen?

Edited by OX.
Link to comment
Share on other sites

Very nice! just getting a black screen using MESS though, I know MESS has no F18A emulation but could it be something to do with F18A mode being accessed before play has started as it does'nt even get to the title screen?

 

It's working fine for me in MESS (0149b_x64), it just takes a little while longer to load the files during which time the screen will be blank. You can turn on the F18A mode be pressing F. Are you using Windows or Linux?

Link to comment
Share on other sites

Interestingly, when I start it with the TI floppy controller (instead of the HFDC), the game is running.

 

However, I should warn everyone that I observed some issues with the BwG and TI controllers in recent releases, maybe due to the fact that other developers are "messing" around with the WD17xx chip. I did not have time to fix the regression yet. The HFDC, however, is not affected because it uses another controller chip.

 

The problems are seen here may be related to a different VDP RAM usage by the controller. I suppose you only tested with the tifdc?

Link to comment
Share on other sites

I'm using MESS V140 as it's the only version I can use for maximum compatibility with cart images in Gamebase for both Classic99 and MESS, It starts with the TI floppy controller but the game defaults to F18a Mode and in MESS 140 this messes up the title screen and the game graphics unless I press "F". So it looks like the loader needs fixing to be compatible with all floppy controllers and not default game startup in F18A mode, or is there a way to detect presence of F18a hardware to enable the mode?

 

I realise this is in beta, looks like it's going to be a great game.

Link to comment
Share on other sites

If your concern with cartridges is that .bin is not supported anymore, all cartridges are available on Whtech for RPK.

 

I'd really suggest you upgrade MESS to the latest version and give my improvements and patches a chance. Please keep in mind that if you run into problems you're on your own. A fix for that old version is hardly possible and won't be made available.

Link to comment
Share on other sites

Yeah, I just got my system back out of storage tonight (I still do not have a real place to put it, but I am working on that.) I will be transferring it to my nPEB and trying it out. Sadly, I have no F18A :_( (And I need to find my E/A cartridge...)

 

I tried it out in Classic99 today and it looks damned awesome. Just like a C64 scroller. Although, after my first game it tried playing on the title screen. If I can get that to replicate I will put up a picture.

 

This is really just bad-ass for the TI and I think it is a good demonstration of what could have been if skilled programmers from the era had been given due time.

Link to comment
Share on other sites

Sadly, I have no F18A :_( (And I need to find my E/A cartridge...)

 

This is really just bad-ass for the TI and I think it is a good demonstration of what could have been if skilled programmers from the era had been given due time.

 

Yeah, I'm wondering how many F18A's this program is going indirectly sell for Matthew? You're free to buy one of course... but you have to get in line behind me! :grin:

 

If you cannot find your E/A, but have an Extended BASIC cartridge, you could use the utility loader in BA-WRITER ftp://whtech.com/word%20processors/BA-Writer/

I've found that that thing will load damn near anything!

 

I also agree with you, with programs like this, the TI would have probably sold more systems, TI might not have lost so much money and we might have not been ABANDONED in 1983!

Edited by Kevan
Link to comment
Share on other sites

The problem is that you will very likely run into the same problems on the real hardware. Or, the other way round, if the real HFDC does not produce the file error, I'm having a problem in MESS. :-)

 

When I try with the hfdc controller I'm also getting the FILE ERROR message. This is just a generic message I display whenever the DRSLNK OPEN command returns an error. A possible explanation is that I'm using a non-standard DSRLNK routine that I found at:

http://atariage.com/forums/topic/163692-ea-file-access/#entry2071618

I'm also using some boot tracking code from "The Art Of Assembly — Part 7. Why A Duck? By Bruce Harrison 1991", but this seems to work because is has correctly detected DSK1.

 

I will try with another DRSLNK routine that Willsy provided to see if that makes a difference.

Link to comment
Share on other sites

I will try with another DRSLNK routine that Willsy provided to see if that makes a difference.

 

No, that didn't change anything.

 

Michael, I understand how MESS maps the different PEB slots to different cards, but how does the floppy controller cards map to the floppy drives, e.g. if you have both the tifdc and the hfdc in the PEB?

Link to comment
Share on other sites

When I try with the hfdc controller I'm also getting the FILE ERROR message. This is just a generic message I display whenever the DRSLNK OPEN command returns an error. A possible explanation is that I'm using a non-standard DSRLNK routine that I found at:

http://atariage.com/...s/#entry2071618

I'm also using some boot tracking code from "The Art Of Assembly — Part 7. Why A Duck? By Bruce Harrison 1991", but this seems to work because is has correctly detected DSK1.

 

I will try with another DRSLNK routine that Willsy provided to see if that makes a difference.

 

The DSRLNK you refer to as non-standard is relatively common for programs not relying upon the EA cart utilities.

 

A quick look at your code seems to show nothing out of the ordinary. I compared your routine to some of my old code to read files and you follow essentially the same sequence. I do find it good practice to clear the filename buffer and pad with spaces (0x20) through to the 10th character of the filename, though technically, the length byte _should_ be sufficient to signal the filename length.

 

For troubleshooting I would suggest the following "simple" steps:

1. Upon encountering the error, print the PAB and filename to the screen. How many files fail and which one(s)?

2. Disable your boot tracking then test a hard-coded DSK1. with the HFDC. Does it work?

3. PAd the filename with spaces

 

It is probably something very simple :)

Edited by InsaneMultitasker
Link to comment
Share on other sites

I cannot find my E/A cart, so I used the option in the CF7's (which I have now confirmed I have, rather than the nPEB I thought it was) utility to run a program with E/A VDP settings. The program plays that way, kind-of -- graphics were way suck, such as the ship in two places, and the screen pretty much incoherent. I do not want to take the thread off-topic too far, so I simple answer will suffice: is there a substantial difference between running E/A5 programs in a real E/A environment versus the load option in the CF7/nPEB's utility?

Link to comment
Share on other sites

It is probably something very simple :)

 

I'm afraid not so simple. Error 6 is a kind of unexpected error, and usually says that the device or medium is faulty. As we have an emulation here and the image is correct (already tested), the device and medium are OK, so unexpected is what remains.

 

If I remember correctly, switching between video modes may become a problem, since the controller expects buffer space at the high end of the video RAM. Maybe something goes wrong here.

 

For a first test, my suggestions would be

 

1. If SPRITES is not the first file to be loaded, try to swap the order of loading. When I had a look, DSK1.SPRITES was the file name in VDP RAM when the error occured.

2. If possible, load all files in standard video mode, then switch to the graphics mode.

 

What you can do to track the problem: Use the debug mode in MESS. Start the emulation with "-debug". You will get a debug window and the emulation window which remains black.

 

F5 is run up to the next breakpoint (if any), F11 is single step. You should start by pressing F5 to get the emulation going.

 

While the emulation is running, go into the debug window and type "bpset a000" (so it sets a breakpoint at >A000). You can set breakpoints at any time. Of course, you must do it before you start your program if you want to get control right from the start.

 

Continue as normal, E/A option 5, load the file. The emulation will stop as soon as the program starts.

 

In the "Debug" menu of the debug window you have some items like a disassembler window (Dasm window) and a memory inspection window (Memory window). Open one of each. You can enter an address in the line at the top of the new windows. The memory window can show different memory areas; you should probably have a look at "TMS9929A ':vdp' vram space memory" so you can check the VDP RAM where the PAB and the buffers are.

 

While the program is still suspended, you can set some breakpoints, maybe right before or after the DSRLNK calls. Note that the symbols are not available in the program code; you must find the calls by yourself; look out for data >0008.

 

As said, pressing F11 will execute the next command. On the left of the main debug window you see the workspace and status register (flags). When you press F5, the program continues.

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