Jump to content

Recommended Posts

I got a weird idea that sounds like it ought to be easy enough to pull off and perhaps a good exercise in learning how to use the TMS9918.

 

I'm thinking of porting Freeway from the 2600, but I'm not really sure where to start. Most likely it'll be FPBASIC with a machine code assist, at least initially.

  • Like 1
Link to comment
https://forums.atariage.com/topic/234608-this-ought-to-be-easy-enoughin-theory/
Share on other sites

I got a weird idea that sounds like it ought to be easy enough to pull off and perhaps a good exercise in learning how to use the TMS9918.

 

I'm thinking of porting Freeway from the 2600, but I'm not really sure where to start. Most likely it'll be FPBASIC with a machine code assist, at least initially.

 

How are you Interfacing the TMS9918????

 

MarkO

How are you Interfacing the TMS9918????

 

MarkO

It's the Third Millennium Arcade Board (-sl4 arcbd in MESS). I wrote a little wedge (it's in another thread here) that gives me basic access to the TMS9918 (but not the AY-8910) through & commands - kinda like Amparcade but a bit more intuitive.

 

Setting up graphics mode is easy enough - &GR1 - and down and dirty work can be done with commands such as &POKE, if I haven't implemented something simpler yet.

  • Like 1

It's the Third Millennium Arcade Board (-sl4 arcbd in MESS). I wrote a little wedge (it's in another thread here) that gives me basic access to the TMS9918 (but not the AY-8910) through & commands - kinda like Amparcade but a bit more intuitive.

 

Setting up graphics mode is easy enough - &GR1 - and down and dirty work can be done with commands such as &POKE, if I haven't implemented something simpler yet.

 

Ahh... MESS So it Virtual...

 

I have been reading Apple Interfacing, ( I have a First Edition, Third Printing I bought on Amazon ), and after reading this thread, I wonder what it would be like to put a TMS9918A or TMS9928A on a Card and see what the Apple ][ can do....

 

MarkO




			
		

 

 

Ahh... MESS So it Virtual...

 

I have been reading Apple Interfacing, ( I have a First Edition, Third Printing I bought on Amazon ), and after reading this thread, I wonder what it would be like to put a TMS9918A or TMS9928A on a Card and see what the Apple ][ can do....

 

MarkO


The 9918 only requires 4 signals for the CPU interface in addition to data lines.

It requires Read, Write, Mode and Interrupt.

R/W from the 6502 is connected to Write and R/W needs passed through and inverter to generate the Read signal.

A0 from the CPU has to be tied to Mode.

Interrupt has to be attached to an interrupt line on the CPU.

D0-D7 from the 6502 are attached to CD0-CD7 on the VDP

Then you just need address decoding that sets Read, Write and Mode high unless the chip is being accessed.

Too bad they didn't just use a chip select line and a R/W signal.

 

That is the simple part if you ask me. Then the VDP needs it's own RAM, clock and video out circuit.

Since the CPU interface is basically the same for the later Yamaha chips I'd go with one of those if I were to build a video card.

It's only slightly more complicated than the 9918.

Findchips shows no Pricing for the TMS9918 or TMS9918A or TMS9928A. No Go on the Yamaha V9938 and Yamaha V9958 either..

 

It appears that disassembling Units will be the only way to get working Video Processors... :(

 

 

MarkO

Findchips shows no Pricing for the TMS9918 or TMS9918A or TMS9928A. No Go on the Yamaha V9938 and Yamaha V9958 either..

 

It appears that disassembling Units will be the only way to get working Video Processors... :(

 

 

MarkO

Or you can buy them 10 at a time on ebay

I didn't look... just figured I should point that out. I think I already bought one from that seller. It takes a while to get it (Hong Kong) but you should get it.

 

What sort of RAM did you connect it to???

 

MarkO

 

What sort of RAM did you connect it to???

 

MarkO

The project burned in a fire before I got that far. I was actually going to use a large SRAM and latch some of the address lines using the RAS signal from the chip. I was going to use the select between banks of RAM as just another address line. It's cheaper to buy the 1 large SRAM and simpler to design a board than for a bunch of old RAM chips.

 

A couple other items from that project:

Sockets: http://www.ebay.com/itm/360646672229

Sound chip: http://www.ebay.com/itm/321234170354

Companion D/A converter for the sound chip: http://www.ebay.com/itm/371080942144

 

That was actually going to be a Z180 based machine but the same parts could be used to make an arcade board clone with enhanced capabilities.

 

I don't even know where to start to go from here. I'm not targetting the TI-99/4A, the ColecoVision, the CreatiVision or the MSX, but people who dev for those platforms would be much more familiar with what I'm trying to do and might be able to point me in the right direction.

I don't even know where to start to go from here. I'm not targetting the TI-99/4A, the ColecoVision, the CreatiVision or the MSX, but people who dev for those platforms would be much more familiar with what I'm trying to do and might be able to point me in the right direction.

Check the MSX forums at http://www.msx.org/

I think I finally figured it out and part of the problem was I was looking at the memory map for the wrong mode.

 

I have to load the sprite chargen at $0000 (so &LOAD 0,24576,26624, since I already have a font there from before), then start poking in attributes at $1000 (so &POKE 4096,0: &POKE 4097,0: &POKE 4098,0: &POKE 4099,3).

 

So I do this: FOR I=0 TO 255: &POKE 4097, I: NEXT and a green block zooms across the screen.

 

That's definitely a start.

Edited by The Usotsuki
  • Like 2

Perhaps you should try to develop for the CreatiVision to start with, then back-port your work to the Apple ][ with expansion? Of course the way the VDP is accessed from the CPU might differ, but at least you got the 6502, the VDP and a different sound chip (the SN76489 rather than AY-3-8910) in the VTech machine.

 

I took my first dev steps on this system last year, and despite I'm far and oceans away from being fully trained - so far I have only touched one text mode and barely any sprites - it was reasonably easy to get something going on screen. I seems you have too, from Apple BASIC in this case. I wonder if you have to worry about blanking intervals and other stuff, if you run the VDP on an expansion card at least there should not be any system BIOS in the way that keeps refreshing the screen. Also as long as you stick with BASIC, it will be slow enough to never worry about overrunning the VDP with calls.

 

Also there should be a way to set up status registers and configure the memory map on the VDP. Many of the systems using it will either have OUT (Z80) or POKE (6502) to a certain memory address that works like an I/O port, but it seems you have the ability to @POKE directly to the VDP RAM.

Edited by carlsson

Perhaps.

 

Regarding "POKE", that's actually a trick of BASIC: the "TMS" program on the disk images I've uploaded has an &POKE command that does the dirty work. (The "goomba" demo in the other thread shows an example of actually writing to the port instead of indirecting it through the & parser.)

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