Jump to content

Setting up a 512k cart


Recommended Posts

I'd think the kids games (Peter Pan, Germ Patrol, Honey Hunt, I'm Hiding, Telly Turtle, etc.) would go better on the Educational multicart.




It was asked if we'd be willing to pay $30 for these carts crammed with games, so yes - the kiddie games should have their own special Edutainment/Educational type cartridge. Game cartridges should be just that. :)

Link to comment
Share on other sites

I think there might be as many cart dividing decisions as we have users still... :)


I'd vastly prefer to have dividing (compilation/cart) lines like: all first party games (TI itself) / BITD third party games / homebrew-smallbrew / productivity / edutainment - education

That would be the best way to do it (at least to me), but also the most difficult. I think the best we can hope for is: Games / Utilities / Educational. That seems like a easy and logical split.

Link to comment
Share on other sites

Thank you, Gazoo! Caesar will thank you profusely for this one too--he plays Arcturus a few times a day right now. . .he switched to the standalone Arcturus cart (one I made using Acadiel's file, not my original side port Arcturus cartridge) due to the issues the original files had.

Link to comment
Share on other sites

  • 2 weeks later...

Found two more games for testing:


Backsteine (3)

Breakout (2)



EDIT: Here also is FREDDY (7),

there are 7 files here but 4 of them are very small.

This one may not work as it appears to look at

Dsk1 for the SC# files, unless this can be altered.



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

  • 1 month later...

The attached 512K cartridge image is literally the biggest waste of space seen on the TI-99/4A. You can load it in Classic99 using the Cartridge/User/Open menu item.


This demo is simply loading a series of uncompressed bitmap images from ROM, alternating between loading 16 characters pattern data and 16 characters color data. Each pattern table or color table is stored in a separate ROM bank (last 6K), and the program to copy the data to the VDP is stored in the first 2K of every ROM bank.


Unfortunately there's no way to double buffer this, so the only way to prevent the visible artifacts when the pattern table is updated before the color table is to alternate between updating pattern and color more frequently, with the cost of lower update speed. Alternating after 16 characters as in this demo is a good compromise between speed and visual quality.

Thanks to Gustavo Torres for the animation, the original can be viewed here. If anyone has a suggestion for an animation with up to 32 frames that would be better suited for the 9918A bitmap mode, please let me know.


I used Tursi's Covert9918 tool to convert each frame of the original animated gif to a 9918A file.


Note that I have only tried this demo in Classic99, so it might look really horrible on a real TI.


  • Like 5
Link to comment
Share on other sites

Note that if you really needed a lot of space, you could probably target the 2M cartridge for a more complex demo. That would give you four times the number of frames. . .and you can test it in Classic99, as that cartridge size is supported there. I can burn real iron test chips too, if it comes to that.

Link to comment
Share on other sites

Arg! I can't believe you beat me to it! I've been working for a couple of weeks on this. (More correctly on and off for about ten years, I did my first tests when I first released Convert9918, but I had finally got it done ;) ).


Oh well. C'est la vie! ;) Here's my take on it, 2MB cart, though.




I see yours is full screen and still looks pretty decent.. I went with 1/2 screen, but I do a full 4 rows before flipping between color and pattern. (So 96 characters). This version runs in scratchpad, but I have a larger version that runs from CPU memory and it doesn't make much of an impact (compared to the data transfer, comparably little time is spent reading program data). My eventual goal is hardware that reads from SD and streams the data with autoincrement so the CPU doesn't need to do it.


This was tested for me by Karsul and he confirms it works on hardware! It will also work on Classic99 but the released version doesn't have the DAC emulation working so you won't hear anything.


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

I'll add that I spent a little time looking at the artifacting and tried a few different things (and some of my test videos were pretty abusive). What I went with was the pattern table first looks better than color table first, and a small tweak was injected into my packing code that made a small change. When Convert9918 outputs a block that has a solid pattern (0x00 or 0xFF, I forget which), it sets the unused color for that block to 0. Pattern table updates can make that black briefly visible, causing black sparkles in bright areas. So my pack program just checked, if any pattern was 0x00 or 0xff, it forced it to 0x00, and forced the color table entry to be the same color for foreground and background (ie: 0xCC). This way, whatever the pattern was updated to would not show any change until the color table was also updated. That helped a lot.

Link to comment
Share on other sites

My boys looked at this when I put the cartridge into the machine and lost it when they saw what was going on. Then they ended up watching it over and over for at least half an hour. . .apparently my general responses to life situations resemble those of one of the characters.


And for anyone wanting to put this onto real iron to watch it run there, I can burn the necessary chip and build the circuit card for it.

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

There are only a couple of ways an unexpanded TI can be playing audio. Audio gate or sound chip. ;) The audio gate makes a tick when you turn it on and off, and can play back 1-bit audio (Perfect Push uses this on the title page to say "Golden Games presents Perfect Push"). For this demo I am using the sound chip to get 4-bit audio playback. I experimented for a couple of days with different ways of doing the conversion, based on my experience with the MOD converter (which will get an update based on THIS work). For the sound chip, the usual method (and what I used here) is to just crank the frequency as high as it goes and then modulate the volume. (I still need to test with a scope whether I can get the noise channel to stay flat if I hit it fast enough).


The standard way is to just downconvert 8-bit audio to 4-bit by dividing. This works, but there are a couple of issues I noted. The first is that very subtle sounds become very crackly or outright cut out - I was having this problem with the whole intro to 'Let it go', for instance, which opens softly. This is just a side effect of a raw division. Also, the scale of the TI volume is logarithmic, with more detail at the low end than the high. So I thought I would try mapping as close as possible to that, which is what the MOD converter does.


And that works, but again it was losing a lot of soft detail. So I decided to throw accuracy to the wind and go for detail, manually creating a conversion mapping that emphasized softer sounds. Although the waveforms looked smushed at the bottom (makes for a funny looking sinewave), it seemed to sound the best.


The playback is pretty straightforward. It simply sends out an audio sample after every 4 video bytes (as well as after each address setup, to keep the timing even). The data source is a single interleaved stream. My math says it should play back at roughly 8.9fps, and audio should be roughly 13755Hz (that's what the audio was resampled to, anyway).


And yes, to build this I needed Classic99 to be able to play samples again, which I called "DAC emulation" in the past. ;) In order to get this method of playback to be accurately emulated, you'd need the sound chip to be able to update at twice the frequency of the sound generator, which would be nearly 100Khz. Since that's a bit overkill for something so rarely used, Classic99 just fakes it when it detects a high frequency audio channel. It used to do this way back before I rewrote the sound system, too.


I'll have to figure out how to release the tools though...

  • Like 2
Link to comment
Share on other sites

That's just all kinds of awesome! I almost didn't notice this 'cause it's buried in this 512k cart thread. Luckily I'm subscribed to Tursi's youtube channel.


Anyway, so do I understand it correctly that if you could do a video in pure B/W, you could get an even higher framerate? I think I've already mentioned this somewhere on the forum, but I really wonder how good Bad Apple would look using this approach:


Looking forward to those tools!

  • Like 1
Link to comment
Share on other sites

I almost didn't notice this 'cause it's buried in this 512k cart thread.


Me too. :)


Animation and video have been possible for a long time. Some approaches do not need 2M, 512K, 64K etc., but the larger carts certainly opens up for some not so file based possibilities. On the other hand, SAMS cards and the likes, has had this door open for almost like forever.


A separate thread for video and animation would maybe an idea ?


I've experimented with quite a few approaches through the years.


This is logged as something to do. Maybe if one only record character (8 by 8 pixel) changes. Or perhaps a more line (line drawing) oriented approach. ;)



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

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.

  • Recently Browsing   0 members

    • No registered users viewing this page.
  • Create New...