Page 1 of 2

TMS9918/9928/9929 programming

Posted: Wed Apr 24, 2013 12:13 pm
by MADrigal
I thought it might be a good idea to gather all useful links to software, tutorials, tips and tricks useful to programme on the TMS99xx video display processor.

I will update this post with all the useful links you'll provide me :)

GUIDES + DATASHEETS
- Official TMS 9918 programming guide + examples
http://www.madrigaldesign.it/creativemu ... _guide.pdf

- Official datasheet
http://emu-docs.org/VDP%20TMS9918/Datas ... MS9918.pdf

- Article about TMS timing, provided by Mobsie (* Added on may 13th, 2013)
http://www.madrigaldesign.it/creativemu ... ng_article


GRAPHICS DESIGNER TOOLS
- SpriteSX ED (not yet available, to be released soon as of april 2013)
http://code.google.com/p/spritesx-ed/

- TI99 Patterns (online graphics designer for sprites)
http://sometimes.planet-99.net/patterns.html

- Convert9918 (transforms PC images into TMS99xx pictures in "bitmap mode")
http://www.harmlesslion.com/cgi-bin/sho ... onvert9918

- Grapefruit (editor for monochrome characters set)
http://sometimes.planet-99.net/grapefruit.zip

Re: TMS9918/9928/9929 programming

Posted: Wed Apr 24, 2013 9:53 pm
by TBCTBC
That's nice. Those graphics tools are useful I guess, but I have my own way for creating graphics.
I first use Photoshop on a PC, then I have two small programs I've written in C under Linux to convert either to characters or sprites.
I haven't made any full screen graphics conversion software, like a bitmap, but that's possible I guess, I did that for Vic-20.
I like to use Photoshop first, because then I can take some graphics from some other platform, like an arcade original, and work with it until I get something that's usable on the TMS.
If anyone is interested, I can upload that I have.

Re: TMS9918/9928/9929 programming

Posted: Mon May 13, 2013 1:19 pm
by MADrigal
I just added an article on TMS timing, provided by Mobsie.

Re: TMS9918/9928/9929 programming

Posted: Tue May 28, 2013 12:20 pm
by Mobsie
if someone need the Collision-Flag in the VDP Register, the Bios read the Register in every VBI and store in $0c.
So you can read $0c in your VB-Routine and test the collision Bit.

Re: TMS9918/9928/9929 programming

Posted: Thu Sep 05, 2013 11:58 am
by Mobsie
Hi, again we See that ALL VDP programmers have the Same
Trouble. See a Part from a Post in the colocovision area.
"When you try to modify the video RAM or just play with video registers while the videochip is busy rendering the screen it's running into trouble... it's the nitemare of corruption that every Coleco programmer wants to avoid and sadly no emulator simulates that; they all instead assume that no data is lost. On the real console, the result is partial lost of data who can either be the instruction telling which video register number you want to deal with, the data to set that video register to, or any part of the data you send to the video chip. For example, it happenned to me in the GhostBlaster project where I could see missing "characters" at the bottom of the game screen (last part of my graphic engine rendering) causing some shifting and so nasty video corruptions."

After i change all and Access only in the vbi, all is Perfect
In all my Projekts.

Re: TMS9918/9928/9929 programming

Posted: Thu Sep 05, 2013 12:58 pm
by carlsson
Hm, ok. So 3.5 MHz Z80 vs 2 MHz 6502 doesn't make a difference in this case. I have an idea how to move my VDP calls to the VBI too, hopefully I will have the time and motivation to implement it soonish so I can wrap up the Reversi game and go on to the next project.

Re: TMS9918/9928/9929 programming

Posted: Thu Sep 05, 2013 1:14 pm
by Mobsie
Some different because the 6502 at 2 MHz can move more Data
as the Z-80, the result are more Problems.
Nice to know you soon back with your stuff.

Re: TMS9918/9928/9929 programming

Posted: Fri Sep 06, 2013 3:19 pm
by carlsson
I've dug into the VDP threads on AtariAge relating both ColecoVision and TI-99/4A programming and ... well, I realize I have a long way to go before I'll master those jedi tricks others are using.

Re: TMS9918/9928/9929 programming

Posted: Fri Sep 06, 2013 8:43 pm
by Mobsie
yes, but on both machines are great experts there. As a beginner in VDP programming all try the same way to handle the writing, and this is try nop`s to slow down the access. First here they take CPU power/cycles for nothing, second this dont really help because the error can happen when you first set your write adress.
In this little time when at the same time the VDP is render the screen you got wrong adress and then when you write you see the mistakes on screen.
I see my english is strange today, sorry for that.

Re: TMS9918/9928/9929 programming

Posted: Sat Sep 07, 2013 9:50 am
by Mobsie
And Not forget to Check www.msx.org
The MSX is the bigest Community with this VDP.