TI-99/4A on Mister (based on Speccery's)

https://github.com/MiSTer-devel/Main_MiSTer/wiki

Moderators: Mug UK, Zorro 2, spiny, Greenious, Sorgelig, Moderator Team

uigiflip
Atariator
Atariator
Posts: 22
Joined: Sun May 13, 2018 6:41 pm

Re: TI-99/4A on Mister (based on Speccery's)

Postby uigiflip » Thu May 24, 2018 11:40 pm

finally got working now to find working programs
Vampire 500 V2+, Mister, FPGA Replay + 68060 Daughterboard

hrvoje
Atarian
Atarian
Posts: 6
Joined: Wed Nov 29, 2017 1:32 pm

Re: TI-99/4A on Mister (based on Speccery's)

Postby hrvoje » Fri May 25, 2018 9:05 am

This is *AMAZING*. This was my first computer as a kid and it's magical to be able to play around with it again. I am a beginner in vhdl/fpga and hope to be able to port some cores eventually.

I hope this post encourages you to keep working on the TI99 because it's an amazing project. Thank you!

Hrvoje

hrvoje
Atarian
Atarian
Posts: 6
Joined: Wed Nov 29, 2017 1:32 pm

Re: TI-99/4A on Mister (based on Speccery's)

Postby hrvoje » Fri May 25, 2018 9:05 am

This is *AMAZING*. This was my first computer as a kid and it's magical to be able to play around with it again. I am a beginner in vhdl/fpga and hope to be able to port some cores eventually.

I hope this post encourages you to keep working on the TI99 because it's an amazing project. Thank you!

Hrvoje

brunosilva
Retro freak
Retro freak
Posts: 10
Joined: Mon Apr 09, 2018 10:58 pm

Re: TI-99/4A on Mister (based on Speccery's)

Postby brunosilva » Sat May 26, 2018 11:41 am

hi

i'm trying to compile this core with quartus 17.0 (menu compilation / Start compilation)

it end with the message: Info (293000): Quartus Prime Full Compilation was successful. 0 errors, 178 warnings

i didn't change any setting in quartus (should I?)...

but i didnt get any rbf file... what did I do wrong?

(i want the last version of the core because from what i read... that are some fixes from last compiled version).

full compilation message in attach
You do not have the required permissions to view the files attached to this post.

GreyRogue
Atariator
Atariator
Posts: 20
Joined: Thu Mar 22, 2018 3:50 am

Re: TI-99/4A on Mister (based on Speccery's)

Postby GreyRogue » Sat May 26, 2018 4:36 pm

brunosilva wrote:hi

i'm trying to compile this core with quartus 17.0 (menu compilation / Start compilation)

it end with the message: Info (293000): Quartus Prime Full Compilation was successful. 0 errors, 178 warnings

i didn't change any setting in quartus (should I?)...

but i didnt get any rbf file... what did I do wrong?

(i want the last version of the core because from what i read... that are some fixes from last compiled version).

full compilation message in attach

From the log:
Info (115017): Design contains a time-limited core -- only a single, time-limited programming file can be generated

You can only build the lite version (VGA) with the free license of Quartus. Change the drop down from ti994a to ti994a-lite. Someone with the full license would need to build the non-lite rbf.

I just tried the lite version, and it looks like it actually does work over HDMI, but it resets after loading the tiroms (looks like it hangs at first). If you wait for a minute or two, it will restart the entire Nano and then when you load the tiroms it will work, but won't be scaled. I just checked in the lite version rbf which you can download from GitHub if you have VGA or don't mind the small video size, feel free to use it. Otherwise someone else will have to build the full rbf.

NML32
Atari Super Hero
Atari Super Hero
Posts: 503
Joined: Tue Mar 11, 2014 1:54 am
Location: USA/Florida

Re: TI-99/4A on Mister (based on Speccery's)

Postby NML32 » Sat May 26, 2018 7:21 pm

GreyRogue wrote:
I just tried the lite version, and it looks like it actually does work over HDMI, but it resets after loading the tiroms (looks like it hangs at first). If you wait for a minute or two, it will restart the entire Nano and then when you load the tiroms it will work, but won't be scaled. I just checked in the lite version rbf which you can download from GitHub if you have VGA or don't mind the small video size, feel free to use it. Otherwise someone else will have to build the full rbf.


The light version just keeps resetting my DE10-nano. Hopefully, someone with the full version of Quartus will compile it for you.

davide
Atarian
Atarian
Posts: 1
Joined: Sun May 20, 2018 2:48 pm

Re: TI-99/4A on Mister (based on Speccery's)

Postby davide » Sun May 27, 2018 5:45 am

Here's a quick build of the Full version. I've only tried TI Basic and that seems to be working fine.
You do not have the required permissions to view the files attached to this post.

NML32
Atari Super Hero
Atari Super Hero
Posts: 503
Joined: Tue Mar 11, 2014 1:54 am
Location: USA/Florida

Re: TI-99/4A on Mister (based on Speccery's)

Postby NML32 » Sun May 27, 2018 11:44 am

davide wrote:Here's a quick build of the Full version. I've only tried TI Basic and that seems to be working fine.


Thanks for compiling the core, I tried a few games and they loaded and ran fine. :cheers:

User avatar
diwou
Retro freak
Retro freak
Posts: 13
Joined: Sun Mar 25, 2018 7:56 am

Re: TI-99/4A on Mister (based on Speccery's)

Postby diwou » Mon May 28, 2018 9:33 am

I still can't quite get along with creating the ROMs. What you find on the Internet is either C, C + D, C + D + G, D + G or just G. So far, so good. Creating the tiroms.bin was no problem. Creating a tiroms.bin with C + D files also works (even the only CDCDCD works). But that's all I can get to work.

For example, if I want to make a ROM out of C + D + G, I understood that the file should look like this:

Code: Select all

C-FILE D-FILE hole48k hole64k 994agrom.bin G-FILE hole8k hole8k hole8k hole32k 994arom.bin hole8k hole8k


But when I load this, not only the TI994a core crashes, but the whole board and has to be disconnected from the power supply.

So my question would be how to handle the C + D + G, D + G and G files. Do I always have to make a complete 256k image, or does it work like with the C+D files in a 64k file?

NML32
Atari Super Hero
Atari Super Hero
Posts: 503
Joined: Tue Mar 11, 2014 1:54 am
Location: USA/Florida

Re: TI-99/4A on Mister (based on Speccery's)

Postby NML32 » Mon May 28, 2018 1:51 pm

diwou, All you need to do is create the tiroms.bin (make sure it's 192Kb). 994aROM.bin is missing from the repository so you'll need to find it and add it to the firmware directory before you make the tiroms.bin.

First load tiroms.bin under the first option in the OSD: "Load full or c.bin *.bin"
Then you can load the game ROMS C, D, or G bins from the OSD.

GreyRogue
Atariator
Atariator
Posts: 20
Joined: Thu Mar 22, 2018 3:50 am

Re: TI-99/4A on Mister (based on Speccery's)

Postby GreyRogue » Mon May 28, 2018 11:28 pm

diwou wrote:I still can't quite get along with creating the ROMs. What you find on the Internet is either C, C + D, C + D + G, D + G or just G. So far, so good. Creating the tiroms.bin was no problem. Creating a tiroms.bin with C + D files also works (even the only CDCDCD works). But that's all I can get to work.

For example, if I want to make a ROM out of C + D + G, I understood that the file should look like this:

Code: Select all

C-FILE D-FILE hole48k hole64k 994agrom.bin G-FILE hole8k hole8k hole8k hole32k 994arom.bin hole8k hole8k


But when I load this, not only the TI994a core crashes, but the whole board and has to be disconnected from the power supply.

So my question would be how to handle the C + D + G, D + G and G files. Do I always have to make a complete 256k image, or does it work like with the C+D files in a 64k file?

Sorry, the comments in the cmd file are wrong. I just copied the file Speccery made and modified it to work with this one. His has more memory and the image isn't the same. I need to update the comments in the file but haven't done so yet. See my comment above for the correct order of files. Short version:
First 64K=Cart Roms (e.g. C, D)
Second 64K = GRoms (system GRoms and cart GRoms)
Third 64K = System Roms 994aROM.bin needs to be at 40K of this bank.

Your example has an extra hole64k which is throwing things off (also assuming your G-FILE is 24K so that the GRom section takes the full 64K [24K system GROM, 24K cart GROM and two 8K holes] and which would place the 994aROM.bin file at 40K). Note you might need to replace the first hole48k with copies of C-FILE and D-FILE depending on how the banking is handled by the code.

Alternatively, just do what NML32 suggested and create the tiroms.bin, load that first, then use the OSD to load each individual cart C,D and G file (D-File should always be last).

NML32
Atari Super Hero
Atari Super Hero
Posts: 503
Joined: Tue Mar 11, 2014 1:54 am
Location: USA/Florida

Re: TI-99/4A on Mister (based on Speccery's)

Postby NML32 » Sat Jun 09, 2018 7:37 pm

I don't think it was mentioned in this thread but if you rename tiroms.bin to boot.rom the rom loads automatically just like it does for other MiSTer cores. :cheers:

User avatar
diwou
Retro freak
Retro freak
Posts: 13
Joined: Sun Mar 25, 2018 7:56 am

Re: TI-99/4A on Mister (based on Speccery's)

Postby diwou » Sun Jun 17, 2018 2:58 pm

NML32 wrote:First load tiroms.bin under the first option in the OSD: "Load full or c.bin *.bin"
Then you can load the game ROMS C, D, or G bins from the OSD.


Thanks for the tip! Now it works too!

NML32
Atari Super Hero
Atari Super Hero
Posts: 503
Joined: Tue Mar 11, 2014 1:54 am
Location: USA/Florida

Re: TI-99/4A on Mister (based on Speccery's)

Postby NML32 » Mon Jun 18, 2018 12:56 pm

diwou wrote:
NML32 wrote:First load tiroms.bin under the first option in the OSD: "Load full or c.bin *.bin"
Then you can load the game ROMS C, D, or G bins from the OSD.


Thanks for the tip! Now it works too!

Have you tried renaming tiroms.bin to boot.rom?

User avatar
diwou
Retro freak
Retro freak
Posts: 13
Joined: Sun Mar 25, 2018 7:56 am

Re: TI-99/4A on Mister (based on Speccery's)

Postby diwou » Mon Jun 18, 2018 1:42 pm

NML32 wrote:Have you tried renaming tiroms.bin to boot.rom?


Yes, and then copied to the TI-99_4A directory. Now the Basic is loaded automatically when the core is started.

GHPS
Atarian
Atarian
Posts: 2
Joined: Fri Jul 13, 2018 11:14 am

Re: TI-99/4A on Mister (based on Speccery's)

Postby GHPS » Thu Jul 19, 2018 12:34 pm

GreyRogue wrote:Alternatively, just do what NML32 suggested and create the tiroms.bin, load that first, then use the OSD to load each individual cart C,D and G file (D-File should always be last).

To get rid of the tedious process of loading roms in order I wrote
this small Python program. It takes the respective C, D and G roms,
checks their availability and packs them into a single, full rom file with
the necessary padding applied. Works with the latests version of the
TI core (Ti994a.rbf) and Python 3 (and legacy Python 2).

Code: Select all

# File: create_full_rom.py
# Description: Create a full TI-99 rom image from C, D, G and system roms.
# Version 1.5
# Author: GHPS
# License: GPL-2.0
# Versions
#  1.0 Initial release
#  1.1 Python 2 support
#  1.5 Support for romPath, systemromPath and MD5 checksums

from __future__ import print_function  # Legacy Python 2 support
import argparse
import hashlib
import os.path

lsExpectedFiles=[['', '', ''],['994AGROM-EP.Bin', 'hole32k','', ''],['hole8k', 'hole32k', '994aROM.Bin', '', '']]

vParser = argparse.ArgumentParser()
vParser.add_argument('OutputFile',help="The Full Rom file to be created.",type=str)
vParser.add_argument('--Crom',help="The C Rom file to use.",type=str)
vParser.add_argument('--Drom',help="The D Rom file to use.",type=str)
vParser.add_argument('--Grom',help="The G Rom file to use.",type=str)
vParser.add_argument('--romPath',help="The path to the all roms - C, D, G and system roms (default .).",type=str, default='')
vParser.add_argument('--systemromPath',help="The path to the system roms. Takes precedence over --romPath (default .).",type=str, default='')
vParser.add_argument("-c","--check", help='Checksum files - generate MD5 sums for input and output files (implies --verbose)',action="store_true")
vParser.add_argument("-d","--diskIO", help='Support disk I/O (future feature).',action="store_true")
vParser.add_argument("-s","--speech", help='Support speech synthesizer (future feature).',action="store_true")
vParser.add_argument("-v","--verbose", help='Display respective actions and results.',action="store_true")
lsArguments = vParser.parse_args()

stROMFile=lsArguments.OutputFile

if (lsArguments.systemromPath=='') and (lsArguments.romPath!=''):
    lsArguments.systemromPath=lsArguments.romPath

if (lsArguments.systemromPath!=''):
    lsExpectedFiles[1][0]=os.path.join(lsArguments.systemromPath,lsExpectedFiles[1][0])
    lsExpectedFiles[2][2]=os.path.join(lsArguments.systemromPath,lsExpectedFiles[2][2])
if (lsArguments.Crom is not None):
    lsExpectedFiles[0][0]=os.path.join(lsArguments.romPath,lsArguments.Crom)
if (lsArguments.Drom is not None):
    lsExpectedFiles[0][1]=os.path.join(lsArguments.romPath,lsArguments.Drom)
if (lsArguments.Grom is not None):
    lsExpectedFiles[1][1]=os.path.join(lsArguments.romPath,lsArguments.Grom)

if lsArguments.check: lsArguments.verbose=True
if lsArguments.verbose: print('== Checking input files ==')
lsMissingFiles=[]
for stInputFile in sorted(set([stFileName for lsOuterList in lsExpectedFiles for stFileName in lsOuterList if stFileName!=''])):
    if lsArguments.verbose: print('Checking %-27s'%stInputFile,end=' ')
    if os.path.isfile(stInputFile):
        if lsArguments.verbose: print('found')
    else:
        if lsArguments.verbose: print('not found')
        lsMissingFiles.append(stInputFile)
if lsArguments.verbose: print()

if lsMissingFiles==[]:
    if lsArguments.verbose: print('== Copying input files ==')
    with open(stROMFile,'wb') as fOutputFile:
        for lsBlock in lsExpectedFiles:
            iPaddingRequired=8
            for stCurrentFile in lsBlock:
                if stCurrentFile!='':
                    if lsArguments.verbose: print('Copying %-28s'%stCurrentFile,end=' ')
                    with open(stCurrentFile,'rb') as fCurrentFile:
                        vSingleFile=fCurrentFile.read()
                        if lsArguments.check:
                            stChecksum=hashlib.md5(vSingleFile).hexdigest()
                        fOutputFile.write(vSingleFile)
                    if lsArguments.verbose: print('done',end='')
                    iClustersCurrentFile=os.path.getsize(stCurrentFile)//8192
                    if lsArguments.check: print(', MD5 Checksum:',stChecksum, end=' ')
                    if lsArguments.verbose: print(' (',iClustersCurrentFile,' cluster of 8k occupied)', sep='')
                    iPaddingRequired-=iClustersCurrentFile
                else:
                    if iPaddingRequired>0:
                        if lsArguments.verbose: print('Padding',iPaddingRequired,'clusters of 8k')
                        for iFill in range(iPaddingRequired):
                            with open('hole8k','rb') as fCurrentFile:
                                fOutputFile.write(fCurrentFile.read())
                        iPaddingRequired=0
            if lsArguments.verbose: print('-------')
    if lsArguments.verbose: print('Target ROM',stROMFile,'created',end='')
    if lsArguments.check:
        with open(stROMFile,'rb') as fOutputFile:
            vSingleFile=fOutputFile.read()
            stChecksum=hashlib.md5(vSingleFile).hexdigest()
        print(', MD5 Checksum:',stChecksum)
    else:
        print('')
else:
    print(len(lsMissingFiles),"files missing:",end=' ')
    print(*lsMissingFiles,sep=', ')
    print('No ROM file created')


Usage is quite simple: Specify the OutputFile and the optional Crom, Drom
and Grom parameter. More verbose messages are generated with -v, MD5 Checksums
are generated with -c and help is available with -h.

I tested the script with the following roms:
    Standard, no Cartridge | python create_full_rom.py -v defaultRom.bin
    Diagnostic Tests | python create_full_rom.py -v --Grom=DiagnosG.Bin diagnosticTests.bin
    Extended Basic | python create_full_rom.py -v --Crom=TIEXTC.BIN --Drom=TIEXTD.BIN --Grom=TIEXTG.BIN extendedBasic.bin
    TI Logo II | python create_full_rom.py -v --Crom=LOGOC.BIN --Grom=LOGOG.BIN Logo.bin
    Hunt the Wumpus | python create_full_rom.py -v --Grom=WUMPUSG.BIN HuntTheWumpus.bin
    Parsec | python create_full_rom.py -v --Crom=PARSECC.BIN --Grom=PARSECG.BIN Parsec.bin
    Tunnels of Doom | python create_full_rom.py -v --Grom=TunDoomG.Bin TunnelsOfDoom.bin
    Fathom | python create_full_rom.py -v --Crom=FATHOMC.BIN --Drom=FATHOMD.BIN --Grom=FATHOMG.BIN Fathom.bin
    Mini Memory | python create_full_rom.py -v --Crom=MiniMemC.Bin --Grom=MiniMemG.Bin MiniMemory.bin
    Home Finance | python create_full_rom.py -v --Grom=HomFDecG.Bin HomeFinance.bin
    Hustle | python create_full_rom.py -v --Grom=HustleG.Bin Hustle.bin
    TI-Editor-Assembler | python create_full_rom.py -v --Grom=TIEAG.BIN TI-Editor-Assembler.bin
    A-Maze-ing | python create_full_rom.py -v --Grom=AMAZEG.BIN a-maze-ing.bin
Currently missing is the support for diskIO and speech. The key problem with
diskIO is that the patched/padded rom diskdsr_4000_padded8k.bin isn't available
in the repo anymore. With speech I need more info concerning which rom to
use and where to place it in memory.

Updates:
- 21.07.2018: Version 1.1 Added Python 2 Support and Updated ROM List
- 25.07.2018: Version 1.5 Support for romPath, systemromPath and MD5 checksums
Last edited by GHPS on Wed Jul 25, 2018 2:29 pm, edited 2 times in total.

NML32
Atari Super Hero
Atari Super Hero
Posts: 503
Joined: Tue Mar 11, 2014 1:54 am
Location: USA/Florida

Re: TI-99/4A on Mister (based on Speccery's)

Postby NML32 » Fri Jul 20, 2018 3:34 pm

@GHPS I had to remove one of the leading dots in the firmware path statements.
change ../firmware/994AGROM-EP.Bin to ./firmware/994AGROM-EP.Bin and ../firmware/994aROM.Bin to ./firmware/994aROM.Bin

Other than that the script works great. Thanks :cheers:

NML32
Atari Super Hero
Atari Super Hero
Posts: 503
Joined: Tue Mar 11, 2014 1:54 am
Location: USA/Florida

Re: TI-99/4A on Mister (based on Speccery's)

Postby NML32 » Sun Jul 22, 2018 5:30 pm

@GHPS, I used your script to combine the following ROMs without issues:
- Alpiner
- BurgerTime
- Centipede
- DeamonAttack
- DigDug
- DonkeyKong
- MunchMan
- NightStalker
- Parsec
- PolePosition
- Ti-Invaders

The following failed to load after the combine:
- Pac-Man C&D
- Q-Bert C&G
- Popeye C&G

I did a recording of the ROMs I combined using your script.
https://youtu.be/SgIRTyaf-SQ

Thank you!! :cheers:

Sorgelig
Fuji Shaped Bastard
Fuji Shaped Bastard
Posts: 2171
Joined: Mon Dec 14, 2015 10:51 am
Location: Russia/Taiwan

Re: TI-99/4A on Mister (based on Speccery's)

Postby Sorgelig » Wed Jul 25, 2018 5:16 pm

@GHPS,
i suggest you to make couple more posts, so i won't need to approve your first post every time you edit it.

GHPS
Atarian
Atarian
Posts: 2
Joined: Fri Jul 13, 2018 11:14 am

Re: TI-99/4A on Mister (based on Speccery's)

Postby GHPS » Wed Jul 25, 2018 7:30 pm

NML32 wrote:@GHPS I had to remove one of the leading dots in the firmware path statements.

I replaced the hard coded paths with a more flexible solution in version 1.5 of the script. You
can specify the (general) path to your roms with the --romPath parameter. This will be used
for all roms (C, D, G and system roms). If you specify a --systemromPath parameter this will
be valid for the system roms only thus overwriting the romPaths part for the system roms.

Example:

Code: Select all

python create_full_rom.py -v --Crom=TI-InvaC.Bin --Grom=TI-InvaG.Bin --systemromPath=../firmware --romPath=roms FullRoms/TI-Invaders.bin

-> C and G roms are in "roms"
-> system roms are in "../firmware"

NML32 wrote:The following failed to load after the combine:

To make debugging easier I also added MD5 checksums for all input and the output file.
The checksums are enabled with -c (which also enables -v to make any sense).

The only non-working rom I came across was Demostration where both versions (1979 and 198x) are affected.
Checksums are
- Demonstration ROM (1970)/Full ROM: a01a87e959f38c2bd01e8247b2c5abc2 / 45248e48fcec3c73bb6af263769eb371
- Demonstration ROM (198x)/Full ROM: a77c109097647929b49e46bcd1a74a96 / 8714d54872c236e4ce59650f0470ac1d


Return to “MiSTer”

Who is online

Users browsing this forum: gnasher666 and 2 guests