Jump to content

Photo

TI-99/4A Megademo


178 replies to this topic

#1 orbitaldecay OFFLINE  

orbitaldecay

    Space Invader

  • 41 posts

Posted Wed Apr 27, 2016 2:05 PM

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.



#2 orbitaldecay OFFLINE  

orbitaldecay

    Space Invader

  • Topic Starter
  • 41 posts

Posted Wed Apr 27, 2016 2:22 PM

I've answered question (2), as PSGMOD can be found in this thread. Are any of the authors available to share current status in terms of permitted use? There seems to be some debate in that thread as to whether or not what is posted is actually permitted to be used.



#3 ti99iuc OFFLINE  

ti99iuc

    Stargunner

  • 1,157 posts
  • Location:Italy

Posted Wed Apr 27, 2016 2:37 PM

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, Wed Apr 27, 2016 2:53 PM.


#4 Tursi ONLINE  

Tursi

    River Patroller

  • 4,715 posts
  • Location:BUR

Posted Wed Apr 27, 2016 5:41 PM

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....oftware/epsgmod
VGMComp: http://harmlesslion....oftware/vgmcomp
Convert9918: http://harmlesslion....are/convert9918
Bad Apple:

Edited by Tursi, Wed Apr 27, 2016 5:41 PM.


#5 OLD CS1 OFFLINE  

OLD CS1

    River Patroller

  • 3,822 posts
  • Technology Samurai
  • Location:Tallahassee, FL

Posted Wed Apr 27, 2016 7:40 PM

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.



#6 Asmusr OFFLINE  

Asmusr

    River Patroller

  • 2,401 posts
  • Location:Denmark

Posted Wed Apr 27, 2016 10:53 PM

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.



#7 Tursi ONLINE  

Tursi

    River Patroller

  • 4,715 posts
  • Location:BUR

Posted Thu Apr 28, 2016 7:11 AM

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

Attached File  Music_DLS.DSK   180KB   19 downloads

#8 orbitaldecay OFFLINE  

orbitaldecay

    Space Invader

  • Topic Starter
  • 41 posts

Posted Thu Apr 28, 2016 8:59 AM

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



#9 Flottmann1 OFFLINE  

Flottmann1

    Star Raider

  • 84 posts

Posted Thu Apr 28, 2016 9:08 AM

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, Thu Apr 28, 2016 9:11 AM.


#10 OLD CS1 OFFLINE  

OLD CS1

    River Patroller

  • 3,822 posts
  • Technology Samurai
  • Location:Tallahassee, FL

Posted Thu Apr 28, 2016 9:19 AM

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.



#11 Asmusr OFFLINE  

Asmusr

    River Patroller

  • 2,401 posts
  • Location:Denmark

Posted Thu Apr 28, 2016 10:49 AM

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.



#12 Tursi ONLINE  

Tursi

    River Patroller

  • 4,715 posts
  • Location:BUR

Posted Thu Apr 28, 2016 1:12 PM

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.

#13 Tursi ONLINE  

Tursi

    River Patroller

  • 4,715 posts
  • Location:BUR

Posted Thu Apr 28, 2016 1:13 PM

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


Very cool! I've had that disk since at least 1992, but I think I got it earlier, in '89 or so...

#14 orbitaldecay OFFLINE  

orbitaldecay

    Space Invader

  • Topic Starter
  • 41 posts

Posted Thu Apr 28, 2016 1:51 PM

 

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, Thu Apr 28, 2016 1:58 PM.


#15 carlsson OFFLINE  

carlsson

    River Patroller

  • 4,525 posts
  • Location:Västerås, Sweden

Posted Thu Apr 28, 2016 2:24 PM

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?



#16 Tursi ONLINE  

Tursi

    River Patroller

  • 4,715 posts
  • Location:BUR

Posted Thu Apr 28, 2016 5:09 PM

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

#17 orbitaldecay OFFLINE  

orbitaldecay

    Space Invader

  • Topic Starter
  • 41 posts

Posted Thu Apr 28, 2016 5:29 PM

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



#18 Asmusr OFFLINE  

Asmusr

    River Patroller

  • 2,401 posts
  • Location:Denmark

Posted Thu Apr 28, 2016 9:53 PM

 

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.



#19 Asmusr OFFLINE  

Asmusr

    River Patroller

  • 2,401 posts
  • Location:Denmark

Posted Thu Apr 28, 2016 9:58 PM

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:

 

 



#20 artrag OFFLINE  

artrag

    Dragonstomper

  • 692 posts

Posted Thu Apr 28, 2016 11:55 PM

This IO demo shows also a rotozoom in multicolor mode

Edited by artrag, Thu Apr 28, 2016 11:56 PM.


#21 Tursi ONLINE  

Tursi

    River Patroller

  • 4,715 posts
  • Location:BUR

Posted Fri Apr 29, 2016 5:44 AM

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

#22 Ksarul OFFLINE  

Ksarul

    River Patroller

  • 4,085 posts

Posted Fri Apr 29, 2016 8:09 AM

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.



#23 orbitaldecay OFFLINE  

orbitaldecay

    Space Invader

  • Topic Starter
  • 41 posts

Posted Fri Apr 29, 2016 2:06 PM

 

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.



#24 carlsson OFFLINE  

carlsson

    River Patroller

  • 4,525 posts
  • Location:Västerås, Sweden

Posted Fri Apr 29, 2016 2:10 PM

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.



#25 Asmusr OFFLINE  

Asmusr

    River Patroller

  • 2,401 posts
  • Location:Denmark

Posted Fri Apr 29, 2016 4:08 PM

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.






0 user(s) are browsing this forum

0 members, 0 guests, 0 anonymous users