TMS9918/9928/9929 programming

Talk about programming CreatiVision (except games programming). Projects of homebrew hardware are also welcome.
User avatar
MADrigal
Site Admin
Posts: 1017
Joined: Sun Sep 15, 2013 1:00 pm
Contact:

TMS9918/9928/9929 programming

Post by MADrigal » Wed Apr 24, 2013 12:13 pm

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
User avatar
TBCTBC
Posts: 64
Joined: Wed Mar 13, 2013 1:27 pm
Location: Solna, Sweden
Contact:

Re: TMS9918/9928/9929 programming

Post by TBCTBC » Wed Apr 24, 2013 9:53 pm

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.
User avatar
MADrigal
Site Admin
Posts: 1017
Joined: Sun Sep 15, 2013 1:00 pm
Contact:

Re: TMS9918/9928/9929 programming

Post by MADrigal » Mon May 13, 2013 1:19 pm

I just added an article on TMS timing, provided by Mobsie.
User avatar
Mobsie
Posts: 495
Joined: Fri Jun 13, 2008 10:38 am
Location: Weinheim, Germany

Re: TMS9918/9928/9929 programming

Post by Mobsie » Tue May 28, 2013 12:20 pm

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.
User avatar
Mobsie
Posts: 495
Joined: Fri Jun 13, 2008 10:38 am
Location: Weinheim, Germany

Re: TMS9918/9928/9929 programming

Post by Mobsie » Thu Sep 05, 2013 11:58 am

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.
User avatar
carlsson
Posts: 505
Joined: Fri Jun 13, 2008 7:39 am
Location: Västerås, Sweden

Re: TMS9918/9928/9929 programming

Post by carlsson » Thu Sep 05, 2013 12:58 pm

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.
User avatar
Mobsie
Posts: 495
Joined: Fri Jun 13, 2008 10:38 am
Location: Weinheim, Germany

Re: TMS9918/9928/9929 programming

Post by Mobsie » Thu Sep 05, 2013 1:14 pm

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.
User avatar
carlsson
Posts: 505
Joined: Fri Jun 13, 2008 7:39 am
Location: Västerås, Sweden

Re: TMS9918/9928/9929 programming

Post by carlsson » Fri Sep 06, 2013 3:19 pm

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.
User avatar
Mobsie
Posts: 495
Joined: Fri Jun 13, 2008 10:38 am
Location: Weinheim, Germany

Re: TMS9918/9928/9929 programming

Post by Mobsie » Fri Sep 06, 2013 8:43 pm

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.
User avatar
Mobsie
Posts: 495
Joined: Fri Jun 13, 2008 10:38 am
Location: Weinheim, Germany

Re: TMS9918/9928/9929 programming

Post by Mobsie » Sat Sep 07, 2013 9:50 am

And Not forget to Check www.msx.org
The MSX is the bigest Community with this VDP.
Post Reply