Jump to content

Photo

Titanium

game assembly scrolling

122 replies to this topic

#1 Asmusr OFFLINE  

Asmusr

    River Patroller

  • 2,496 posts
  • Location:Denmark

Posted Sat Aug 10, 2013 12:44 AM

Attached File  Titanium logo.png   929bytes   53 downloads

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. Attached File  Titanium_1.0.zip   109.1KB   105 downloads. An XB loader is now included, and the E/A 5 file is called TITA.

 

 

64K bank switched (379) ROM image: Attached File  Titanium3.zip   14.25KB   74 downloads



#2 sometimes99er OFFLINE  

sometimes99er

    River Patroller

  • 3,993 posts
  • Location:Denmark

Posted Sat Aug 10, 2013 1:05 AM

Awesome ! Pure magic. Love the care for details. :thumbsup:

Edited by sometimes99er, Sat Aug 10, 2013 1:09 AM.


#3 Retrospect ONLINE  

Retrospect

    Dragonstomper

  • 883 posts
  • Location:Wakefield, England

Posted Sat Aug 10, 2013 1:09 AM

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, Sat Aug 10, 2013 1:11 AM.


#4 ti99iuc OFFLINE  

ti99iuc

    Stargunner

  • 1,224 posts
  • Location:Italy

Posted Sat Aug 10, 2013 2:17 AM

Wow... it's a really great game !! :D
i am agree with Retrospect about the coder ;)

... Rasmus... if this is your first Game ... i beg you... do NOT STOP to Code !! :D

#5 senior_falcon OFFLINE  

senior_falcon

    Dragonstomper

  • 960 posts
  • Location:Lansing, NY, USA

Posted Sat Aug 10, 2013 8:40 AM

Very nice! As with most games of this type, my life span is usually under a minute before I meet a violent death!

#6 Vorticon OFFLINE  

Vorticon

    River Patroller

  • 2,816 posts
  • Location:Eagan, MN, USA

Posted Sat Aug 10, 2013 8:58 AM

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?

#7 Asmusr OFFLINE  

Asmusr

    River Patroller

  • Topic Starter
  • 2,496 posts
  • Location:Denmark

Posted Sat Aug 10, 2013 9:13 AM


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


Certainly, a great honor for me. But you should be prepared for updates.

BTW, here'a a link to the disk for those who are not logged into AtariAge:
Sorry, no longer valid.

#8 --- Ω --- OFFLINE  

--- Ω ---

    TI-Runner

  • 10,733 posts

Posted Sat Aug 10, 2013 10:00 AM

Attached File  Titanium logo.png   929bytes   53 downloads
Titanium is my first game for the Ti-99/4A written purely in assembly language.

Fricken AWESOME Dude!

#9 OX. OFFLINE  

OX.

    Moonsweeper

  • 458 posts

Posted Sat Aug 10, 2013 12:20 PM

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., Sat Aug 10, 2013 12:29 PM.


#10 Asmusr OFFLINE  

Asmusr

    River Patroller

  • Topic Starter
  • 2,496 posts
  • Location:Denmark

Posted Sat Aug 10, 2013 1:25 PM

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?

#11 mizapf OFFLINE  

mizapf

    River Patroller

  • 2,634 posts
  • Location:Germany

Posted Sat Aug 10, 2013 1:45 PM

I'm getting a FILE ERROR when I start it in MESS, and the last entry in VDP@>2F00 is

00 cc 2f 80 80 00 00 00 00 0c DSK1.SPRITES

Looks like an error 6. (MESS from subversion, Linux)

#12 mizapf OFFLINE  

mizapf

    River Patroller

  • 2,634 posts
  • Location:Germany

Posted Sat Aug 10, 2013 2:06 PM

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?

#13 Asmusr OFFLINE  

Asmusr

    River Patroller

  • Topic Starter
  • 2,496 posts
  • Location:Denmark

Posted Sat Aug 10, 2013 2:13 PM

I suppose you only tested with the tifdc?

Yes.

#14 OX. OFFLINE  

OX.

    Moonsweeper

  • 458 posts

Posted Sat Aug 10, 2013 2:25 PM

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.

#15 mizapf OFFLINE  

mizapf

    River Patroller

  • 2,634 posts
  • Location:Germany

Posted Sat Aug 10, 2013 3:04 PM

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.

#16 mizapf OFFLINE  

mizapf

    River Patroller

  • 2,634 posts
  • Location:Germany

Posted Sat Aug 10, 2013 3:06 PM

Yes.


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

#17 Tursi OFFLINE  

Tursi

    River Patroller

  • 4,852 posts
  • HarmlessLion
  • Location:BUR

Posted Sat Aug 10, 2013 4:16 PM

Tested here with the CF7 device, both F18A and non F18A consoles. - working fine.


#18 OLD CS1 OFFLINE  

OLD CS1

    River Patroller

  • 4,078 posts
  • Technology Samurai
  • Location:Tallahassee, FL

Posted Sat Aug 10, 2013 8:53 PM

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.

#19 --- Ω --- OFFLINE  

--- Ω ---

    TI-Runner

  • 10,733 posts

Posted Sat Aug 10, 2013 10:35 PM

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, Sat Aug 10, 2013 10:36 PM.


#20 Asmusr OFFLINE  

Asmusr

    River Patroller

  • Topic Starter
  • 2,496 posts
  • Location:Denmark

Posted Sat Aug 10, 2013 10:50 PM

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

#21 Asmusr OFFLINE  

Asmusr

    River Patroller

  • Topic Starter
  • 2,496 posts
  • Location:Denmark

Posted Sat Aug 10, 2013 11:08 PM

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?

#22 Asmusr OFFLINE  

Asmusr

    River Patroller

  • Topic Starter
  • 2,496 posts
  • Location:Denmark

Posted Sun Aug 11, 2013 12:00 AM

Looks like an error 6.


Yes the error code is 6.

#23 InsaneMultitasker OFFLINE  

InsaneMultitasker

    Stargunner

  • 1,745 posts

Posted Sun Aug 11, 2013 12:51 AM

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, Sun Aug 11, 2013 12:54 AM.


#24 OLD CS1 OFFLINE  

OLD CS1

    River Patroller

  • 4,078 posts
  • Technology Samurai
  • Location:Tallahassee, FL

Posted Sun Aug 11, 2013 2:40 AM

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?

#25 mizapf OFFLINE  

mizapf

    River Patroller

  • 2,634 posts
  • Location:Germany

Posted Sun Aug 11, 2013 4:17 AM

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.





Also tagged with one or more of these keywords: game, assembly, scrolling

0 user(s) are browsing this forum

0 members, 0 guests, 0 anonymous users