Jump to content
IGNORED

TI-99/4A Megademo


orbitaldecay

Recommended Posts

This turned out great, congrats to the team that made it (and won the friggin' compo, how awesome is that!). I was lucky enough to be privy to some of the early versions of these effects, and it's great to see how it all turned into an awesome demo. Back when work started on this I was asked if I wanted to help out and I prototyped two effects. Unfortunately life got in the way before I was able to finish them (mostly because they're written in C, and I never got to porting them to Assembler and the megademo framework).

 

Anyway, I just wanted to share these two effects here:

 

Twisters, very similar to the (very cool) twister that Rasmus did, but along the horizontal axis:

 

And, a spinning texturemapped 3D bar:

Edited by TheMole
  • Like 9
Link to comment
Share on other sites

  • 3 years later...

I'm pretty sure that is possible for some TI99 guru (maybe with less color) ... but someone could help me to understand how this demo could be realized?

In my heart I can undestand that is not rocket science but how/where to start ? any hints from the TI99ers guru ? even something of high level...

 

thanks a lot in advance for your patience  and thanks for sharing your knoledge

 

 

Link to comment
Share on other sites

I don't have any specifics on the C64 video capabilities, but my guess, it exceeds the 9918 and in many ways, exceeds the 9938 capabilities.

 

Can it be done on the TI-99/4A and/or Geneve, yes, but by cheating.  Not knowing any other details, I can think of three routes.

 

One, with some very rare hardware for the TI-99/4A, superimpose the graphic feed to be displayed on a transparent screen by the 4A.  That might be one route which really isn't a TI program, but something more like playing a VCR tape to the screen of a 4A monitor while the TI is on using some hardware I have never seen in action.

 

Second, record the video and store as digital data for video playback in a module like what was done for DragonsLair (I think that is the name) and play it back.  Not sure what the maximum frames per second rate could be when avoiding sound, but that is one way.

 

While the Geneve has hardware line draws, fills, block moves, etc, it does not have the capability to rotate the screen and nowhere near that speed.

 

If I were doing it for the Geneve, I would "record" the video at the lowest acceptable resolution possible to be adequate and take frame grabs every 15th or 30'th of a second, store that digital data uncompressed, load it prior to video execution, and then do video hardware block moves to display the screen.  That is the only way I see to approach the speed they had using a Geneve.  Likely, there is too much video data to play the entire video to match resolution and frame rate.

 

If you ever saw the MEMEX-DEMO program for the Geneve, there was a spinning rotating sign coming down from the top left corner to the bottom right. Ron Walters stored "frames" of the rotating sign and loaded it from disk, then displayed it.

 

I am nowhere near a video guru as we have seen some amazing capabilities the last couple of years by others.

 

My 2 cents.

 

Beery

 

 

 

 

Link to comment
Share on other sites

I think you have much better control over the video timing on the C64, so they can change the colors several times each scanline.

 

On the TI-99/4A the only way to find out which part of the screen in being drawn is to place five sprites on a row and poll the VDP status register until the 5th sprite flag is set. That would be far too slow for something like the C64 demo, but it was used in the megadome for several of the effects.

 

Here is something slightly similar I did on the TI using a complete different technique. This is more like a compressed animation.

 

 

  • Like 3
Link to comment
Share on other sites

4 minutes ago, Asmusr said:

I think you have much better control over the video timing on the C64, so they can change the colors several times each scanline.

 

On the TI-99/4A the only way to find out which part of the screen in being drawn is to place five sprites on a row and poll the VDP status register until the 5th sprite flag is set. That would be far too slow for something like the C64 demo, but it was used in the megadome for several of the effects.

 

Here is something slightly similar I did on the TI using a complete different technique. This is more like a compressed animation.

 

 

That's pretty impressive.  Is it individual frames you have buffered, then moving to the display screen?  Do you recall what the resolution and frames per second were?

  • Like 1
Link to comment
Share on other sites

Thanks Gentelman I knew that I was not alone ... The only point is that my background is very poor so please I kindly ask you for some "high-level" hints and simplify the explanation id possible... 

I'm interested from the concept to possible techniques that allows to develop a demo like the Rasmus one (that's very very close to the C64) ... 

I know he's a generous guy that would kindly share the code of his demo ... that would be very helpfull for me to study...

I'm not interested to realize exactly the C64 demo but to learn how to...   the demo from Rasmus would be the perfect start for me 

Even some documentation/books or links that could help me to learn this techniques are welcome... and of course your suggestions but for a dummy level like mine...

 

Why don't start a new thread as tutorial (like Matthew thread for Assembly) demo for dummy or demo from scratch ... 

 

Thanks once again for your time e patience

Ciao

Francesco   

  • Thanks 1
Link to comment
Share on other sites

I have checked the code of the roto-zoom demo, and it's basically just updating the whole name table and a set of character patterns each frame with data pre-calculated on a PC, so the TI code is not very exciting. It would probably be more interesting to look at the code for the megademo or some of the other demos I have posted over time. I found a few of them in this forum by searching for 'demo' in the title. 

 

https://github.com/Rasmus-M/ti99demo

 

  • Like 4
Link to comment
Share on other sites

Thanks a lot Rasmus , thanks for your usual support and patience ... from your hints I guess I've understood the main principle of roto-zoom demo ... If you don't mind and you still have the code , I kindly ask you if you can share the code of roto-zoom demo with your illuminant explation or remarks  ... I'm very interested on the basis of the demo ...

 

The TI hat-demo works on the same concept of roto-zoom ? 

 

Thanks once again for your help 

All my best

Francesco 

Link to comment
Share on other sites

8 hours ago, whoami999ster said:

Thanks a lot Rasmus , thanks for your usual support and patience ... from your hints I guess I've understood the main principle of roto-zoom demo ... If you don't mind and you still have the code , I kindly ask you if you can share the code of roto-zoom demo with your illuminant explation or remarks  ... I'm very interested on the basis of the demo ...

 

The TI hat-demo works on the same concept of roto-zoom ? 

 

Thanks once again for your help 

All my best

Francesco 

Here is the source code and a link to the original post. Yes it's much the same technique as the hat demo except that hat demo is bitmap mode.

decoder.a99

  • Like 3
Link to comment
Share on other sites

Thanks as usual Rasmus ... that's what I mean for sharing the knowledge! 

Do you mind if I will come back to you with some questions?

 

Have a nice day/night whatever you're placed 

 

....

in the mean time I tried to compile decoder.a99 with winasm99 but no no success ... undefined symbol for FRM2 and undefined opcode XORG

I had also debuged rotozoom8.bin but the disassembly is quite different from decoder.a99 

Maybe I'm missing something but I was not able to find in the source code the "graphic" part deinition ... where I'm doing wrong... 

maybe should be better to move the discussion to the Roto-zoom animation thread ? or email :)

 

thanks  

Edited by whoami999ster
Link to comment
Share on other sites

9 hours ago, whoami999ster said:

Thanks as usual Rasmus ... that's what I mean for sharing the knowledge! 

Do you mind if I will come back to you with some questions?

 

Have a nice day/night whatever you're placed 

 

....

in the mean time I tried to compile decoder.a99 with winasm99 but no no success ... undefined symbol for FRM2 and undefined opcode XORG

I had also debuged rotozoom8.bin but the disassembly is quite different from decoder.a99 

Maybe I'm missing something but I was not able to find in the source code the "graphic" part deinition ... where I'm doing wrong... 

maybe should be better to move the discussion to the Roto-zoom animation thread ? or email :)

 

thanks  

It should be assembled using xas99.

The graphics are not in the source code.

If you place a breakpoint at >6020 in rotozoom8.bin you will should the code there.

 

Link to comment
Share on other sites

but normally the "graphics" should be in the source code right?

I exactly placed the breakboint at >6020 and the step by step I found that code was little different from the source ... maybe I was wrong...

Let me try to compile with xas99 ... but even without the "graphics" do you think that assembly step will work ?

 

Thanks and have a nice weekend

 

sorry for boring you ..would you like to describe high level your source code (like the documentation for the smoothscrolling that was very brillant)  

Link to comment
Share on other sites

4 hours ago, whoami999ster said:

but normally the "graphics" should be in the source code right?

Yes if is was to be assembled as an E/A#5 file it would usually contain the graphics.

4 hours ago, whoami999ster said:

but even without the "graphics" do you think that assembly step will work ?

Yes it should work, because I have been assembling it. But without the cartridge with the graphics the screen will be filled with garbage when you run it.

4 hours ago, whoami999ster said:

would you like to describe high level your source code

The source code is already commented. The code is not responsible for generating the graphics. There is no code to rotate on zoom in there. It's just sending graphics from the cartridge to the VDP as fast as possible. If you know how the VDP functions it should be pretty simple. It's nothing like the smooth scrolling where there is an algorithm to describe.

Link to comment
Share on other sites

8 hours ago, whoami999ster said:

Thanks a lot Rasmus above all for your patience... 

just to get an idea ... how many "pictures" (frames) did you produced to get this animation and on average what as the "dimension" in bytes... 

If I well understood you did it with Magellan ... 

No way to have also the Magellan File? ... 

Thanks as usual :)

 

It's described here 

I think I added some special code to Magellan to import the frames. I don't have the file, but you can try to make a screendump from an emulator and import it into Magellan, just to get an idea.

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