Jump to content
acadiel

TI MIST FPGA Core

Recommended Posts

I saw this a few days ago too and was intrigued. I would like to see it, i have a MiST.

Share this post


Link to post
Share on other sites

I'm the person who ported it. I mentioned it in Speccery's "TI-99/4A with a Pipistrello FPGA board"

http://atariage.com/forums/topic/255855-ti-994a-with-a-pipistrello-fpga-board/?view=getnewpost

thread a week or so ago. It's for the MiSTer, though not the MiST. It should be relatively easy to do for MiST, but I don't have one. Speccery said in that thread he might port it himself, but if anyone wants to try, I'd be happy to answer questions if I can help.

I did make a couple of improvements. I added instruction cycle counting so games run at close to correct speed (can be turned off with Turbo setting), and I fixed some audio distortion from overflow issues.

  • Like 4

Share this post


Link to post
Share on other sites

I'm the person who ported it. I mentioned it in Speccery's "TI-99/4A with a Pipistrello FPGA board"

http://atariage.com/forums/topic/255855-ti-994a-with-a-pipistrello-fpga-board/?view=getnewpost

thread a week or so ago. It's for the MiSTer, though not the MiST. It should be relatively easy to do for MiST, but I don't have one. Speccery said in that thread he might port it himself, but if anyone wants to try, I'd be happy to answer questions if I can help.

I did make a couple of improvements. I added instruction cycle counting so games run at close to correct speed (can be turned off with Turbo setting), and I fixed some audio distortion from overflow issues.

 

Did you just port the 99/4A console to MiSTer or did you port other hardware for it such as 32k, Floppy Disk controller, etc ?

Share this post


Link to post
Share on other sites

I ported Speccery's project, so it has 64k expansion RAM (Speccery has 256k). I'm only using 256k of Altsyncram, so I could easily double that and the Cart Rom max to 128k each. I didn't want to require the optional SDRAM board, but if using that there's plenty of room for larger Cart Roms and more expansion RAM. I think it's possible to make an option to choose which one to use.

The layout for DSRs is already in place, and I can probably import an existing disk drive implementation, but I'm currently working on something else.

I was trying to play Parsec, but the game is too confusing without a female Texan narrating and advising, so I thought I'd try to do something about that first. I've only started teaching myself Fpga programming a few weeks ago, so no guarantees.

  • Like 3

Share this post


Link to post
Share on other sites

I do now have the MIST system, and I have ported the CPU to the Altera toolchain, so I will probably make a port for the MIST myself. The code is open source so obviously this available for anyone...

  • Like 1

Share this post


Link to post
Share on other sites

Greetings! This is exciting news! Congrats on the FPGA core creation. I just got into messing with the TI99 and you can pick them up inexpensively. I like their sleek look and keyboard feel. I got into them BECAUSE of the absence of a MiST FPGA core. I'd love to see this get developed. Even if like some Beatles records where mono mixes were the main project and stereo the afterthought at the time, Mister projects with more headroom can always be ported for systems that still fit on the MiST. Interestingly some YT video comments also talk about porting this to the ZX Next too. Any updates on the MisT port?

Share this post


Link to post
Share on other sites
On 5/23/2018 at 12:55 PM, greyrogue said:

I was trying to play Parsec, but the game is too confusing without a female Texan narrating and advising, so I thought I'd try to do something about that first. I've only started teaching myself Fpga programming a few weeks ago, so no guarantees.

Two years later, but I took darfpga's LPC vhdl code and hooked up some extra code for the TMS5200 and added speech ROM code.  Parsec is finally now less confusing on my MiSTer port of speccery's core.

To try for yourself, just add the speech ROMs to your file to load and switch the speech OSD option to 5200. "Press fire to begin."

  • Like 7

Share this post


Link to post
Share on other sites
4 hours ago, greyrogue said:

Two years later, but I took darfpga's LPC vhdl code and hooked up some extra code for the TMS5200 and added speech ROM code.  Parsec is finally now less confusing on my MiSTer port of speccery's core.

To try for yourself, just add the speech ROMs to your file to load and switch the speech OSD option to 5200. "Press fire to begin."

 

Nice! I should take a look at this too. I have acquired the parts for a MiSTer build - gosh I don't even remember when, I guess it was last year - but haven't gotten around putting this together. I guess it would be about time.

In the meantime I have ported the code base to Verilog and I have cleaned up the design a little, I have now had a pause in the development but I was using three different boards for testing. One Xilinx boards and two Lattice ECP5 boards. On Xilinx I used ISE 14.7 but on the ECP5 boards the open source Icestrom toolchain.

  • Like 4

Share this post


Link to post
Share on other sites
9 hours ago, greyrogue said:

Two years later, but I took darfpga's LPC vhdl code and hooked up some extra code for the TMS5200 and added speech ROM code.  Parsec is finally now less confusing on my MiSTer port of speccery's core.

To try for yourself, just add the speech ROMs to your file to load and switch the speech OSD option to 5200. "Press fire to begin."

 

Many thanks for adding the speech to your already great port of the TI99 core to MiSTer! Not tested yet, but I've watched a video with Alpiner and it seems really nice. 🙂

 

One technical question/curiosity: is this darfpga's LPC vhdl code more accurate than the software implementations of the speech chip available in emulators like MESS?

 

Again, many thanks for the work done with this core on MiSTer, I really appreciated it.

Share this post


Link to post
Share on other sites
Posted (edited)
10 hours ago, greyrogue said:

---

Wow! thanks for this update! 😍
I still haven't a Mister system because i am not interested in emulate the world but only a good and featured version of TI-99/4A.

if a daythis will be completed as a fully working system with also disk support, well, at least i will seriously think to purchase a Mister at all. 
can i hope it could be possible in future Greyrogue?

 

for the moment i just enjoyed some demontrating videos on YT and i can say that the speech emulation seems to be at a really good level. 😱 impressive result!
On some emulators for windows OS, i still have glitches problems with audio speech, for this i am also curious to know more about your speech for Mister version please  :) 

Edited by ti99iuc
  • Like 1

Share this post


Link to post
Share on other sites
10 hours ago, tmop69 said:

 

One technical question/curiosity: is this darfpga's LPC vhdl code more accurate than the software implementations of the speech chip available in emulators like MESS?

 

The LPC code is based off MAME's source, so I don't expect it to be any better. It's what translates the lpc data to audio samples. It could be rewritten based on the patents or decaps, but I didn't do that. The parts I added were based mainly on this: http://www.unige.ch/medecine/nouspikel/ti99/speech.htm

Some of my code could be improved as well.  The reset command, for example, needs work.

  • Like 3

Share this post


Link to post
Share on other sites
10 hours ago, greyrogue said:

The LPC code is based off MAME's source, so I don't expect it to be any better. It's what translates the lpc data to audio samples. It could be rewritten based on the patents or decaps, but I didn't do that. The parts I added were based mainly on this: http://www.unige.ch/medecine/nouspikel/ti99/speech.htm

Some of my code could be improved as well.  The reset command, for example, needs work.

 

Greyrogue, many thanks for the clarification, really interesting. I'll surely test the Speech during the weekend, however a friend of mine already tested it yesterday and the feedback is that it's really excellent! 🙂

 

I have now another question. I've seen in the change log that the new framework support was added. Does it means that there is now support for features like the audio input for reading cassette tapes? Unfortunately, I cannot check it directly, since I do not have the add on board with the audio jack.

 

Once again, thanks for this improvement, since it means also that the core is still supported. 🙂 May I ask what you plan to add to it in the future? I remember that for the disk there are some problems, related to missing information. Where you able to find them? 

 

Share this post


Link to post
Share on other sites

I've just tried the new TI99 core and the speech is working fine! 🙂 The result it's similar to MESS, but this is expected as clarified in previous posts.

 

During the setup of the TI99 core to test the speech I've noticed one thing, that I would like to ask to the experts in the forum. I've tested the speech with Alpiner, Parsec and Big Foot. It seems that Parsec and Alpiner do not need the 32K ROM contained in the speech synthesizer to speak correctly, while Big Foot needs it in order to speak any word. I've double checked and I do not have the 32K spchrom.bin content in any place in the TI99 directory (and it's not embedded in .rbf file for the core). So, what is exactly contained in the 32K ROM in the speech synt? Just vocabulary data or there are also code routines?

Share this post


Link to post
Share on other sites

Just plain speech data. You can run the TMS5200 without vocabulary ROM if you only use SPEAK EXTERNAL commands.

  • Thanks 1

Share this post


Link to post
Share on other sites

Like Mizapf says... the speech ROM contains a list of words and the speech data to say them -- anything you can say in Extended BASIC with "CALL SAY" comes from there. Every other word the synthesizer says comes from whatever software is driving it.

 

Although it's a "speech" synthesizer, at the lower level it's really just an audio decompression engine. Think a really primitive MP3 player. "Speech" data is just audio compressed to fit a mathematical model, and then played back in real time by the hardware. However, there are heavy limits on the mathematical model, with the net result being that it's best at simple speech. (And in turn, that was on purpose because they designed it specifically for speech.)

 

 

  • Like 1
  • Thanks 2

Share this post


Link to post
Share on other sites

Just as a minor detail, the speech data are arranged as a binary search tree. This is the reason why you see MORE at the start of the speech ROM, with MORE being the root of the tree.

 

Format of an entry (see Editor/Assembler manual, section 22.2.2):

 

uint8 length;

char* word;

uint16 previous;

uint16 next;

uint24 address;

uint8 datalength;

 

00000000: aa04 4d4f 5245 04b6 0eb5 0046 4251 012d  ..MORE.....FBQ.-
00000010: 09a8 0018 0048 dc7d 012e 0000 0022 0050  .....H.}.....".P
00000020: ec5c 0130 0000 0000 0013 c346 0131 000e  .\.0.......F.1..
00000030: 004a 0014 0953 0132 0000 0040 0014 5c3e  [email protected]\>
00000040: 0133 0000 0000 0014 9a4d 0134 0036 0054  .3.......M.4.6.T
00000050: 0014 e74a 0135 0000 005e 0015 3177 0136  ...J.5...^..1w.6
00000060: 0000 0000 0015 a840 0137 002c 00a9 0015  [email protected],....
00000070: e84f 0138 0000 007c 0016 372d 0139 0000  .O.8...|..7-.9..
00000080: 0000 0016 6480 0141 0072 0090 0016 e41c  ....d..A.r......
00000090: 0241 3100 0000 9b00 1700 1405 4142 4f55  .A1.........ABOU
000000a0: 5400 0000 0000 1714 5505 4146 5445 5200  T.......U.AFTER.
000000b0: 8600 d100 1769 3c05 4147 4149 4e00 0000  .....i<.AGAIN...
000000c0: c500 17a5 6203 414c 4c00 0000 0000 1807  ....b.ALL.......
000000d0: 2902 414d 00b7 00dc 0018 3046 0241 4e00  ).AM......0F.AN.
000000e0: 0000 e700 1876 3603 414e 4400 0000 0000  .....v6.AND.....
000000f0: 18ac 6706 414e 5357 4552 0068 017e 0019  ..g.ANSWER.h.~..
00000100: 134f 0341 4e59 0000 0000 0019 6245 0341  .O.ANY......bE.A
00000110: 5245 0102 011a 0055 6e32 0241 5300 0001  RE.....Un2.AS...
00000120: 2500 19a7 4106 4153 5355 4d45 0000 0000  %...A.ASSUME....
00000130: 0019 e83d 0241 5401 0e01 5600 1a25 1d01  ...=.AT...V..%..

  • Like 1
  • Thanks 1

Share this post


Link to post
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.

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