Jump to content
IGNORED

TI-99/4A Megademo


orbitaldecay

Recommended Posts

Myself and some of my comrades have been tinkering with the idea of writing a megademo for the TI-99/4A as, to my knowledge, no one has endeavored to do such a thing. If you aren't familiar with demos or the demoscene, please read some of these links.

 

I have several questions to pose to the community as a whole:

 

1. Do any of you know of any useful tools for creating fullscreen graphics to be displayed on a TI-99? Some of the tools for the MSX might be useful here as they use the same VDP, but the fixed palette on the TI-99 might be a problem.

 

2. I vaguely recall hearing about some music player code having already been written. Does anyone know where I can find this offhand? Is there a tracker or VST plugin for this?

 

3. I am a programmer, and I have cross-assembled TI-99 cartridge code before, though I have not written any code to be loaded from a floppy (which would obviously be necessary for a demo containing lots of graphics and music). Does anyone know offhand how painful it would be to write code to span multiple floppies?

 

4. Are YOU interested in helping out? I know several artists and musicians who are interested in this project and can deliver, but so far I am the only coder on board. It's going to be a nice first for the platform and would be a cool thing to have your name attached to. Just sayin' ;)

 

Timeline for the project will be roughly the next 8 months, as I'd like to release it in January 2017 at the Synchrony demoparty in NYC (so bonus if you're on the U.S. east coast and interested in attending). If that particular party doesn't materialize, the release date will probably be July 2017 at @party in Boston. Thanks for reading, and I hope this tickles the fancy of some of you kind folks.

Link to comment
Share on other sites

Hello ! :)

Last (and second in the demoscene history of the TI99) was 99tro from (Realms of Illusions group) you can found it - HERE -

 

probably seems like that the first demoscene in the TI-99 history is this -Julius Demo- by Tursi :)

 

this speaking about Demoscene because instead there are around the TI99 lot of little demos coded from differents developers.

 

i am really happy to know about this megademo project finally for TI-99 too.

 

on Puet.net there are almost all computers and consoles but not the Texas Instruments TI-99/4A present !!
it is not good and i hope it will be added soon on the list! maybe we could have our TI-99 version of Bad-Apple ? :D :D

thank you for this dream ;)

Edited by ti99iuc
Link to comment
Share on other sites

probably seems like that the first demoscene in the TI-99 history is this -Julius Demo- by Tursi

Nah, not my little demo, there was some cool stuff from Germany I had before I wrote that. Just music and graphics but I think they counted. I'll see if I can track down the disk later, I think I still have it.

 

I might be interested in helping out... doubt I can produce a screen though.

 

That said... I ported the PSGMod player to the TI, and Martin popped up in one of these threads to say it could be used. The PSGMod tracker is your best bet for composing.

 

For playback, I /think/ you can use the player now in anything (IIRC it was always okay except for commercial), but you'd best double check with him. Or you can export as VGM and use my VGM compressor and playback tool.

 

For converting graphics to mode 2 bitmap I also have a tool Convert9918. I don't have anything for converting to other modes. Read the docs - it supports a number of flicker modes as well as a couple of F18A modes (though not the chunky mode).

 

I also did a TI Bad Apple, though it's just video playback so it's way too big to count for anything. ;)

 

PSGMod Player: http://harmlesslion.com/software/epsgmod

VGMComp: http://harmlesslion.com/software/vgmcomp

Convert9918: http://harmlesslion.com/software/convert9918

Bad Apple:

Edited by Tursi
  • Like 3
Link to comment
Share on other sites

These damn PSG trackers aggravate me. Maybe I am just too accustomed to the SID Editor, I dunno, it seems they should not bother me so much. Even OctaMED was easier for me. I have been creating all of my music and sound effects using the standard TI-99 ISR sound list format. As I am making longer and longer songs -- still toying with Monty on the Run and recently started Last Ninja 2 -- I appreciate how un-Godly unruly this format can be. Along with my ARexx script to manipulate the sound list binaries, I started putting together my own player routine and an ARexx script to convert from ISR format.

 

You can see some of the other songs I have done in my blog, as well as in Rasmus' thread on SoundListRipper where I originally deposited them.

Link to comment
Share on other sites

Re 3: I would forget about the floppy disks and use a 512 KB cart for loading the data instead.

 

I believe the PSG2Mod tracker together with Tursi's VGM player is the perfect set of tools for sound and music on the TI.

 

For graphics that are not full screen I use Magellan a lot, and I add to the code when there's something it cannot do that I need.

 

I might be interested in participating. Have you thought about which sections/effects you would like in the demo? Unfortunately the raster/scanline effects often seen on other platforms are hard to do on the TI.

Link to comment
Share on other sites

I might be interested in helping out... doubt I can produce a screen though.

 

...you can export as VGM and use my VGM compressor and playback tool.

 

Cool! Any level of involvement is welcome, even just consultation and ideas would be very useful :) Per your and Asmusr's recommendation, the VGM compressor and playback tool sounds like the way to go.

 

Hello ! :)

Last (and second in the demoscene history of the TI99) was 99tro from (Realms of Illusions group) you can found it - HERE -

 

probably seems like that the first demoscene in the TI-99 history is this -Julius Demo- by Tursi :)

 

this speaking about Demoscene because instead there are around the TI99 lot of little demos coded from differents developers.

 

i am really happy to know about this megademo project finally for TI-99 too.

 

on Puet.net there are almost all computers and consoles but not the Texas Instruments TI-99/4A present !!

it is not good and i hope it will be added soon on the list! maybe we could have our TI-99 version of Bad-Apple ? :D :D

 

thank you for this dream ;)

 

Thanks for the links! I would like to see a TI-99/4A category on pouet as well, but first we need to make some demos :)

 

Re 3: I would forget about the floppy disks and use a 512 KB cart for loading the data instead.

 

I believe the PSG2Mod tracker together with Tursi's VGM player is the perfect set of tools for sound and music on the TI.

 

For graphics that are not full screen I use Magellan a lot, and I add to the code when there's something it cannot do that I need.

 

I might be interested in participating. Have you thought about which sections/effects you would like in the demo? Unfortunately the raster/scanline effects often seen on other platforms are hard to do on the TI.

 

Per 512 KB cart: I'm 95% sure this will be big enough to store everything we'll have the time and energy to make, but in the event that we need more space has anyone ever experimented with multicart software? I can't seem to remember if swapping out the cart reboots the machine?

 

Magellan is exactly the sort of tool I was looking for, what is the full screen limitation all about? I'll just have to take a closer look at it.

 

I don't exactly have a list what sections and effects I'd like to see in the demo, but there are some obvious classics that will work on the platform. A lot of inspiration comes from dvik and joyrex, who did things with the MSX VDP that no one thought was possible. Some of what is in the following links will be nearly impossible to do with the CPU in the TI, but inspiration comes in the form of:

 

(still haven't figured out how half of that is possible)

 

... etc. The fixed palette and lack of vblank interrupt make it tricky / impossible to do some effects, as you've mentioned. Of course, this challenge is exactly why I'm so interested in this platform :)

 

Slightly OT, here's the music disk I mentioned above. A bit less demo-y than I remembered, but it's something. ;) EA#3 "POP".

 

attachicon.gifMusic_DLS.DSK

 

Not OT at all. This is exactly the kind of stuff I was looking for. Thanks for the link!

 

Thanks for all the kind words everyone. I'm going to be a little busy over the next month, but I'd like to get started on this project after that. If you're interested in participating, start thinking about ideas for screens and effects now :)

Link to comment
Share on other sites

hi,

 

 

This Music Programmes are from my TI-Friend Roman Majer (Heilbronn/Germany) he write it in 1982 or so.........

 

at this Time he transfered many TI-Moduls to Disk (see Miner-2049 -> RM99 !)

In 1984 he moved to the Amstrad CPC (in Germany Schneider CPC) and write Utilities for Disk Drive and Hard Drive (1984 for a 10 MB) for the CPC and transfered also many CPC Games form Cassette (copy Protected) to Disk

Today he lives in the area, but not seen him since .1986

 

he was a great TI Programmer

Edited by Flottmann1
Link to comment
Share on other sites

I have seen a couple of demos on an 8088 PC which use raster-type effects without a raster interrupt. I do not have links but I have a couple downloaded.

 

The issue as I understand it is that the clocks for the CPU and the VPDs on the TI are not in sync, so it would difficult to keep your scanline effects steady. I have never really tried it, however, except I made a demo with more than 32 sprites on the screen. This was done by placing 5 sprites on a row half way down the screen, and then polling the VDP status until the 5th sprite flag was set. At that point I switched to another sprite attribute table, and it was accurate to +/- one scanline. But you would need much more accurate control for some of the effects in the MSX demos.

Link to comment
Share on other sites

Just a quickie as I need to be in bed, but this does interest me ;)

 

Cart swap does indeed reboot the machine... 512k is pretty big though. If you DO get super ambitious, we have cart board layouts for up to 2MB and the banking scheme in use today supports up to 32MB, if you want to throw in some more latches. ;)

 

Polling VDP status is really the only thing we can do for raster effects, and as Rasmus also notes, it's not 100% accurate, it jitters. I think it is possible (though I haven't tried it yet) to give the illusion of a clean transition if you break in the middle (or near the top) of a character cell and leave the entire character row blank (so the jitter can't be seen ;) ). But yeah, the separate clocks mean we can't get terribly reproducible effects -- it's worse because the tolerance on each of the clocks means that between two machines there can be quite a different amount of skew. (The CPU clock is rated to +/- 5%, and I have actually measured consoles at both ends of that. I haven't characterized the VDP clock, but I expect it's generally a little tighter tolerance since it needs to generate color).

 

When the clocks are fed from a common base you can cycle count, because you know 'x' cycles on the CPU will be 'y' cycles on the VDP, and that the vertical blank will be delivered at a consistent point in your run, but that's not true in the 99/4A, particularly between machines.

Link to comment
Share on other sites

 

The issue as I understand it is that the clocks for the CPU and the VPDs on the TI are not in sync, so it would difficult to keep your scanline effects steady. I have never really tried it, however, except I made a demo with more than 32 sprites on the screen. This was done by placing 5 sprites on a row half way down the screen, and then polling the VDP status until the 5th sprite flag was set. At that point I switched to another sprite attribute table, and it was accurate to +/- one scanline. But you would need much more accurate control for some of the effects in the MSX demos.

 

Yeah, I figured anything close to accurate scanline timing would be impossible from my limited experimentation with the TI. Your 48 sprite demo is particularly impressive and seems relatively easy to do. I can see such an approach being very useful for some fake bob effects. Something like the bob effects in this intro I watched recently and has been on my mind:

 

 

Just a quickie as I need to be in bed, but this does interest me ;)

 

Cart swap does indeed reboot the machine... 512k is pretty big though. If you DO get super ambitious, we have cart board layouts for up to 2MB and the banking scheme in use today supports up to 32MB, if you want to throw in some more latches. ;)

 

Polling VDP status is really the only thing we can do for raster effects, and as Rasmus also notes, it's not 100% accurate, it jitters. I think it is possible (though I haven't tried it yet) to give the illusion of a clean transition if you break in the middle (or near the top) of a character cell and leave the entire character row blank (so the jitter can't be seen ;) ). But yeah, the separate clocks mean we can't get terribly reproducible effects -- it's worse because the tolerance on each of the clocks means that between two machines there can be quite a different amount of skew. (The CPU clock is rated to +/- 5%, and I have actually measured consoles at both ends of that. I haven't characterized the VDP clock, but I expect it's generally a little tighter tolerance since it needs to generate color).

 

When the clocks are fed from a common base you can cycle count, because you know 'x' cycles on the CPU will be 'y' cycles on the VDP, and that the vertical blank will be delivered at a consistent point in your run, but that's not true in the 99/4A, particularly between machines.

 

I thought I remembered correctly that a cart swap reboots the machine. Bummer.

 

I agree that 512k is probably plenty. An uncompressed fullscreen bitmap in graphics mode II will use somewhere around 13k I think, throw a few of those in, some animated sprites, music, etc. Precomputed tables (sine tables, etc.) stored on the cart might be my biggest concern when it comes to space requirements. I imagine the largest contiguous array is limited by some bank switching mechanism that is desirable not to use too frequently? I would be interested in how this works in code, if there are any examples floating around. (Edit: As an afterthought, this seems like a really great opportunity to come up with some new tricks ;)) The memory map here seems to suggest that there is only a 4K window for the cart (edit x 2: actually, it looks like 8k of contiguous cartridge memory is available at any given time?).

 

It will be interesting to see what can be done by simply polling the VDP status alone. Creativity thrives on restriction, in my experience :)

Edited by orbitaldecay
Link to comment
Share on other sites

Isn't the palette on all TMS9918/28/29 based machines fixed, i.e. no matter if you're using a TI-99/4(A), MSX1, Colecovision, ADAM, Creativision, Sord M5, Spectravideo SVI-318/328, Memotech MTX or any other design using one, you are stuck with a single palette, that perhaps can be tweaked some by external components. When you talk about changing the palette, are you referring to MSX2 demos then, using 9939?

Link to comment
Share on other sites

Bitmap is 12k unless you're taking advantage of repeated characters, then you also need the screen image table (768 bytes, but of course you might not need all the characters anymore in that case).

 

As for the cart space - 8k window, but our current schemes bank the whole thing. I think it would be worth it to keep the demo to 512k and standard cartridge, since many people can currently get those boards. :)

Link to comment
Share on other sites

I was thinking of some of the tricks that are used on the MSX1 to vary output color which aren't available on the TI, but I believe you are correct in saying that the palette on the TMS9918 is always technically fixed.

 

Forgive me; I don't know much about bank switching. When you say "bank the whole thing", do you mean that the entire 8K is swapped out when a bank switch occurs? I assume a switch is triggered by writing to some address in cart space. Is this expensive in terms of clock cycles (which would obviously limit the possibility of having tables larger than 8K)?

 

If it's hard to burn a cart larger than 512k, then that's one more reason to keep it under 512k :)

Link to comment
Share on other sites

 

Magellan is exactly the sort of tool I was looking for, what is the full screen limitation all about?

 

 

Magellan, being intended as a map editor, doesn't allow you to work with 3 different pattern tables, each covering one third of the screen. If need to work with full screen bitmap mode graphics in Magellan you have to split it into 3 files.

Link to comment
Share on other sites

Just a quickie as I need to be in bed, but this does interest me ;)

 

Cart swap does indeed reboot the machine... 512k is pretty big though. If you DO get super ambitious, we have cart board layouts for up to 2MB and the banking scheme in use today supports up to 32MB, if you want to throw in some more latches. ;)

 

Polling VDP status is really the only thing we can do for raster effects, and as Rasmus also notes, it's not 100% accurate, it jitters. I think it is possible (though I haven't tried it yet) to give the illusion of a clean transition if you break in the middle (or near the top) of a character cell and leave the entire character row blank (so the jitter can't be seen ;) ). But yeah, the separate clocks mean we can't get terribly reproducible effects -- it's worse because the tolerance on each of the clocks means that between two machines there can be quite a different amount of skew. (The CPU clock is rated to +/- 5%, and I have actually measured consoles at both ends of that. I haven't characterized the VDP clock, but I expect it's generally a little tighter tolerance since it needs to generate color).

 

When the clocks are fed from a common base you can cycle count, because you know 'x' cycles on the CPU will be 'y' cycles on the VDP, and that the vertical blank will be delivered at a consistent point in your run, but that's not true in the 99/4A, particularly between machines.

 

I'm thinking we could still have multiple split points a few rows (i.e. 16 pixels) apart based on the 5th sprite flag. That might be good enough for something like the perspective scroller from the MSX IO demo:

 

Link to comment
Share on other sites

Forgive me; I don't know much about bank switching. When you say "bank the whole thing", do you mean that the entire 8K is swapped out when a bank switch occurs? I assume a switch is triggered by writing to some address in cart space. Is this expensive in terms of clock cycles (which would obviously limit the possibility of having tables larger than 8K)?

That's correct, but it's just a single 8-bit memory write, so it's not terribly expensive. :)

Link to comment
Share on other sites

On burning cartridges, the boards up to 512K use chips that can be programmed by almost anyone with a bog-standard EPROM burner. I build the boards and sell them directly or they can also be acquired through Arcadeshopper on his website. I also build the 2M boards (and provide them to Arcadeshopper as well). These use 40 and 42 pin EPROMs which most EPROM burners can't handle out of the box. Several of us have appropriate hardware to do that though, so it is not a major problem to go that large if you really need that much space.

Link to comment
Share on other sites

 

I'm thinking we could still have multiple split points a few rows (i.e. 16 pixels) apart based on the 5th sprite flag. That might be good enough for something like the perspective scroller from the MSX IO demo:

 

Excellent. I need to dig into the source for your 48 sprite code :) I think you posted that in the thread?

 

That's correct, but it's just a single 8-bit memory write, so it's not terribly expensive. :)

 

Ah, OK. After some reading I think I follow this now. Good to know.

 

On burning cartridges, the boards up to 512K use chips that can be programmed by almost anyone with a bog-standard EPROM burner. I build the boards and sell them directly or they can also be acquired through Arcadeshopper on his website. I also build the 2M boards (and provide them to Arcadeshopper as well). These use 40 and 42 pin EPROMs which most EPROM burners can't handle out of the box. Several of us have appropriate hardware to do that though, so it is not a major problem to go that large if you really need that much space.

 

Thanks for the info. I think it is a good idea to stick within 512k at this point for all of the reasons you folks have provided.

Link to comment
Share on other sites

Vary output colour = change colour sets mid screen, so you get bigger colour resolution? Then I understand, but bigger resolution is different from a bigger palette. Or perhaps you can multiplex colours on MSX so they appear like a third one. I remember some programs on the C64 would alternate between two different colours on every second frame, giving the impression of a bigger palette than built in.

Link to comment
Share on other sites

Vary output colour = change colour sets mid screen, so you get bigger colour resolution? Then I understand, but bigger resolution is different from a bigger palette. Or perhaps you can multiplex colours on MSX so they appear like a third one. I remember some programs on the C64 would alternate between two different colours on every second frame, giving the impression of a bigger palette than built in.

 

The MSX demo shows an example of a flicker mode where they alternate between two screens each frame. This makes the MSX appear to have more colors.

  • Like 1
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...