Jump to content
IGNORED

Flash ROM Cart


ralphb

Recommended Posts

...built my kit today and it is awesome!

 

A couple of things caught me off guard though. First, there's no instructions, or silk screen markings to indicate what value resistors/caps go where, 20-pin I.C.'s were a mystery and no notch marks for the I.C.'s either. At least the LED had its polarity marking etched! lol None of this was a big deal though, thanks to ti99iuc's excellent picture, of which I used to put things in their proper place. :)

 

Second thing that had me all screwed up for a while was how picky this thing is when it comes to what files it can use. Okay, I get the .bin thing (never tried to use anything else like .dsk or .rpk whatever that is), but discovered that there are all these other "special" circumstances that go along with TI-99 dumps. Yeah, excuse me… haven't touched a TI emulator in over 15 years probably V9T9 I think it was, but anyway… looking at the popular TI sites (GameShelf, WHTech, etc.) you see files with C, D and G, 3 & 9 designations all over the place. Can't simply throw a .bin file onto an SD card and expect it to work. What?! I thought that's exactly what this thing is supposed to do? :ponder: :lol:

 

Needless to say, learned a lot from Ralph as to the designations here today and forwarding this on for those (surely I can't be the only one) not in the know:

 

Files with same name, but end with a capital C and D needed to be "stitched" back together. Why they were ever separated, don't know and don't really care. Guessing because some TI emulator wanted certain games divided up for whatever reason?

 

Files with a capital G at the end designate a GROM file, which even though ends with a .bin extension is still not compatible with the FlashROM 99.

 

Files with a 3 or a 9 at the end of their title need to be inverted. Umm… okay?! Not sure what that's all about (have to do with burning to EEPROMS maybe?) and haven't looked into how to do this yet with OSX, but whatever. lol

 

Files need to be 32k or smaller. This I did know from reading here, just mentioning again in case someone missed that little tidbit.

 

[edit] Wanted to also mention this other little miracle about the FlashROM… title of the .bin file you drop into your SD card, isn't necessarily what you see on the menu screen! Could be an abbreviation or whatever, but in the menu, the title is listed appropriately. Tells me that the standards that have been in place for a while are recognized and this cart is smart enough to decipher all that and give a nice display. :love:

 

…anyway, after triple checking my board work, ensuring all solder joints were good, nothing was shorted, etc. kept trying different files until I finally found one that worked: Rabbit Trail. Whee! Didn't accidentally overheat a chip soldering to the board (not common for me to do so, but was beginning to wonder). :rolling:

 

post-13896-0-90434300-1464820732_thumb.jpg post-13896-0-46519300-1464820727_thumb.jpg

 

The solder side of the reset button wants to come directly into contact with the ground shield on the SD card input, so first placed some electrical tape on the shield for protection, then cut a piece off of business card for that extra bit of cushion. Was concerned about this shorting originally, so soldered the SD card input so that there was a bit of room between the reset buttons contacts, but that turned out to be a mistake as the board didn't exactly sit in the shell properly. Tried to remove the solder and re-seat the SD card input, but was a lot more work than I wanted to spend and decided to grind down the solder ends of the input instead. Problem solved! ;)

 

And yes, caps are bent on purpose so that they don't interfere with the top of the shell.

 

post-13896-0-12018900-1464820731_thumb.jpg

 

Happened to have a spare Indoor Soccer that gladly gave up its shell. Would have loved to use a Romox shell, but couldn't bring myself to ruin any of mine. The regular TI cart shell is not horrible anyway and is obviously superior to leaving it naked. Used a razor blade and side cutters to make way for the SD card reader. Plastic is soft enough and like to avoid using a Dremel when I can as it makes too much of a mess and usually looks like crooked shit afterwards.

 

post-13896-0-98344600-1464820735_thumb.jpg post-13896-0-35197200-1464820737_thumb.jpg

 

Left the LED raised up a bit and Loc-Tite'd the end of a pop bumper skirt (pinball machine part) to the reset button.

 

post-13896-0-85540000-1464820725_thumb.jpg post-13896-0-58802800-1464820728_thumb.jpg

 

post-13896-0-62362800-1464820729_thumb.jpg post-13896-0-26966100-1464820724_thumb.jpg

 

TI cartridges have some of the hardest labels to remove without making a mess or soaking for a long time using Goo Gone, etc. Lift Off tape remover is excellent for this! Nice and quick and thorough.

 

Lastly, placed a few drops of Super Glue around the edges of the inside of the cartridge shell to secure. Learned a looooong time ago that less is more when it comes to these kinds of glue. Absolutely no mess around the edges as a result. Final touch was a label using my Brother P-Touch label maker:

 

post-13896-0-89393300-1464821612_thumb.jpg post-13896-0-90405700-1464821613_thumb.jpg

 

 

Re: the dust cover, spring and screw of a TI cartridge shell: Thought I could drill a hole through the PCB board for all that, but nope… couple of lines running right through the middle there. Thought about re-routing the lines with wire to make it all work, but glad I didn't go through all that trouble since it became obvious that there's absolutely no room for the dust cover plastic to fit anyway. Rear of the board is right up against the rear of the shell.

 

Oh and the reset button plastic… guess it kind of sits up higher than it should but actually, acts as a lever so don't need to just press down. :) BTW: The reset button does NOT reset the system or bring you back to a menu. Only used to reset the cartridge if compatible games and programs allow when soft-resetting your system. Thought it could be used in lieu of switching power on/off but that's not the case. Thought about leaving it concealed and not using it at all, but will come in handy and help save the power switch x percent of the time. :)

 

All said, love this new cartridge! Just need to get used to the fussiness of file formats and waiting for the LED to turn off on the FlashROM upon a cold start *before* hitting space to make a selection. Hit a key before it's time and the FlashROM will not be recognized.

  • Like 10
Link to comment
Share on other sites

Great writeup, save2600! :thumbsup:

 

I just would like to take the opportunity to point out again the homepage that contains information about what images can be used, and the repository with build instructions. KiCad placed all values in an odd layer so that they didn't wind up in the silkscreen. Unfortunately I didn't notice until I got the boards. :ponder: At least jedimatt42 didn't, either. ;) Second batch is better, I hope.

 

And regarding image types: In the prototype I had the cart recognize and auto-join split images ...C.BIN, ...D.BIN, but when I put more than 50 images on the SD card, startup suddenly took more than a minute! As it turns out, opening a file by name (or checking if a file exists) is not an instantaneous operation (duh!), but requires the linear scanning of the entire directory, which is costly on the 8515. So if I do this for every file in order to check if there's a companion, I spend a lot of time (i.e., n^2) scanning, and the LED remains lit for unacceptable times.

 

If conventions C, D, G, 3, 8, 9, ... were universally adhered to one could do better, but I thought it will be less confusing to assume a single, linear, non-inverted plain memory dump. Note that split images can be joined by COPY /B on Windows or cat on OSX/Linux (see homepage), and inverted images can be un-inverted by this script (Python) or Rasmus' tool (Java).

  • Like 6
Link to comment
Share on other sites

...built my kit today and it is awesome!

....thanks to ti99iuc's excellent picture, of which I used to put things in their proper place.

Really glad that my trials have been useful for some people. Thanks for letting mentioned :)

 

Congratulation for your nice clean mod too ! i really like the final result.

can i use your pictures and informations on my website when i will have possibility to create my review ?

Edited by ti99iuc
Link to comment
Share on other sites

I want to get one of these, but I have all 5 of the Games multicarts that got produced last year so I'm not sure what this offers me over those except for the ability to add new games. Maybe once more games that can be converted to run as a file can be found I'll break down and snag one.

Link to comment
Share on other sites

...

KiCad placed all values in an odd layer so that they didn't wind up in the silkscreen. Unfortunately I didn't notice until I got the boards. :ponder: At least jedimatt42 didn't, either. ;) Second batch is better, I hope.

Odd layer is right... Looks like it was called 'hidden' in KiCad :) I was able to check another box and plot the gerber silk screen containing the 'U1', 'C4' labels... but not the values like 100nf, or the part names like 8515... Any hints?

 

-M@

Link to comment
Share on other sites

Odd layer is right... Looks like it was called 'hidden' in KiCad :) I was able to check another box and plot the gerber silk screen containing the 'U1', 'C4' labels... but not the values like 100nf, or the part names like 8515... Any hints?

 

-M@

 

Yes, I hid the references, since I wanted to plot the values instead. If you edit the values you'll see that they're in "F.Fab" instead of "F.SilkS" ... :roll:

 

I'll push a fix later this weekend that moves them to F.SilkS.

  • Like 2
Link to comment
Share on other sites

The documentation notes the FRC99 is in single-file image mode by default but does have a multi-file image mode (romc.bin, romd.bin, etc.) Is it possible for the end-user to put it into the multi-file image mode?

Link to comment
Share on other sites

Is it possible for the end-user to put it into the multi-file image mode?

 

No, unfortunately not, it requires re-compilation and re-programming.

 

The 8515 has lots of I/O pins, but very little storage space, e.g., only 8K for programs. Of those 8K, I only have about 100 Bytes left. Enabling multi-file requires you to disable FAT16, or things won't fit into 8K. (The 1284, by comparison, has 128K of ERPOM for programs.)

 

There was also no room left for a boot loader that would allow for updates from the SD card.

 

But note that multi-file wasn't really practical ... startup time for more than two dozen images was outrageous. The reason was again lack of RAM: the 8515 only has 512 Bytes of RAM (twice a TI 99! ;) ), and 256 Bytes of that are needed for data transfer from the SD card. This means I cannot save filenames for sorting or finding matching pairs of files. The code could be improved upon by enforcing the conventions described further above, but I feel this would work only for power users, whereas most people would wonder why THEPOND.BIN isn't found. :)

  • Like 1
Link to comment
Share on other sites

The only other question I have is if there is an option for a future version with a microSD slot rather than a full SD. While I know the full SD makes it easier to move between PC and TI, just about every good microSD comes with an SD adapter, or some with a USB key to read the card. That may also help with fitting in available cartridges.

 

By no means a criticism of the design, by the way. This is a little gem which fulfills quite a few different needs for our old gal.

Link to comment
Share on other sites

There seems to be one kind of micro-SD Arduino shield that's as ubiquitous on ebay as the SD one. It's almost trivial to swap them out using the current PCB layout, except that the micro-SD shield doesn't do voltage regulation and requires 3.3V. So the cart would have to supply that, which again adds to the component count.

 

I'm quite happy about those SD shields, as they're quite compact, handle all the tedious stuff, and provide a nice, clean interface.

 

Personally, I also find micro-SD too flimsy for my grubby hands, which was the other reason why I opted for full SD.

  • Like 2
Link to comment
Share on other sites

While we're at it, let's talk about the reset button.

 

Pushing the button will reset the microcontroller and thus reset the FlashROM, which means that it will re-read the SD card and repopulate the menu, either the native TI menu or (if more than 8 entries are found) the FlashROM menu.

 

It will NOT reset the TI 99, because my go-to supplier only had single-switch buttons. With a double-switch button you could simultaneously short -5V and RESET on the cartridge port and thus reset the TI 99. But I didn't have that, so I connected -5V and RESET permanently, like most cartridges, to trigger reset when inserting the cart.

 

But the upside is that you can now switch modules while the TI 99 is running. You just have to make sure that you're not executing the first cart when you switch. That's also the reason that when using the FlashROM normally, you should first reset the TI 99 and then the FlashROM -- if you do it the other way around you basically rip out the cartridge while the cartridge program is running, so the TI 99 must crash.

Link to comment
Share on other sites

The only other question I have is if there is an option for a future version with a microSD slot rather than a full SD. While I know the full SD makes it easier to move between PC and TI, just about every good microSD comes with an SD adapter, or some with a USB key to read the card. That may also help with fitting in available cartridges.

 

By no means a criticism of the design, by the way. This is a little gem which fulfills quite a few different needs for our old gal.

I've got some 5v based SPI microsd shields, I'm going to give a try. I'll have to use wires to connect as the pins don't align. I'm hoping to mount it to the inside top of a cart shell instead of to the cart board directly.

I imagine you could do the same with the full sd card shield. This will involve desoldering the headers that come with the shields so I can have a lower profile.

 

Wish me luck.

 

Another good alignment with full sd, is you finally have a use for the 2gig sdcard that came with your Wii. ( even that will be overkill ) I often appreciate that 32k is a BIG file for the TI. at 171 menu entries ( I think that is what I read ) of 32k max file size, we only need 6 meg sdcards :)

 

-M@

Link to comment
Share on other sites

It may have been already mentioned but what is the limit of games to 171 due to?

 

Thanks!

Ralph?

 

I could guess that there are limits in the microcontroller on how much room it has to compose the menu entries, and mapping to files.

I am just guessing... Another good reason might simply be level of effort weighed against practical benefit.

 

-M@

Link to comment
Share on other sites

Ok, so I finished my first board! This is really slick Ralph! Love it.

 

I went straight to my microSd reader with a ribbon cable. Worked like a champ!

 

Pictures:

 

post-42954-0-12539100-1465071597_thumb.png

 

post-42954-0-83790400-1465071611_thumb.jpg

 

Now I'll have to work on encasing that.

 

post-42954-0-55670000-1465071741_thumb.jpg

 

But in the mean time, IT WORKS! So time to play!

 

-M@

  • Like 6
Link to comment
Share on other sites

It may have been already mentioned but what is the limit of games to 171 due to?

 

Memory again, but in this case TI memory, plus a bit of laziness.

 

The menu software for the TI (image browser and image loader) takes up about >800 bytes. For every image entry I create an entry of 32 bytes that contains the filename, the entry name, plus some other data like the start address. 32 bytes is somewhat arbitrary, but I wanted this to be a power of 2 so that I can SLA to go from index to memory address containing the data.

 

So 8K minus >800 bytes is >1800 bytes left, divided by 32 bytes/entry leaves 192 entries. Since I didn't know upfront how large the menu will eventually be I decided to limit myself to 9 pages (keys 1-9) of 19 entries (that looked nice) each, so 171 it was.

 

Only later, after I added sorting, did I remove direct addressing of entry data, so I could remove the fixed 32 bytes allocation per entry. As most entries are rather short I could fit more image entries into the cart memory. Sorting is done in scratchpad RAM, which again limits the number of entries to 255, but I also have a working version that sorts in VDP RAM instead.

 

But in the end I couldn't find more than 6 or 7 pages worth of images anyway, and I left it the way it is. :)

  • Like 2
Link to comment
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.
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...