DS994a - A Texas Instruments Emulator for the DS/DSi

wavemotion

Benign Geek
OP
Member
Joined
Nov 23, 2020
Messages
916
Trophies
1
XP
7,345
Country
United States
So... I worked my ass off over the holidays to bring this to life. It's still has a long ways to go - and for a while, I didn't think it would work. Was super frustrated hour after hour of not seeing anything but black and white line on my screen...

1672757577654.png


And then this happened!

1672757761793.png


And there was much rejoicing!

Only 33 frames per second on simple games... but you know that's where my shit goes all kung-fu and I'll have it running at 60+ in no time :)

1672757832439.png



My main goal is to bring back my childhood memories of this absolutely pinnacle game:

1672757883777.png


Soon... Soon...
 

ber71

Well-Known Member
Member
Joined
Apr 24, 2019
Messages
561
Trophies
0
Age
58
XP
2,465
Country
Spain
The hardware, cpu, gpu... seems a bit unrelated to your other emulators. Wondering if you could reutilize any existing code.
As a side note, to fully cover the atari world, do you consider feasible a ST emulator? Or it requires way more horsepower than the poor DS can offer.
 
  • Like
Reactions: wavemotion

wavemotion

Benign Geek
OP
Member
Joined
Nov 23, 2020
Messages
916
Trophies
1
XP
7,345
Country
United States
So the TI disguises the names of the chips... but the Video Chip is the venerable 9918 used in Colecovision/MSX and the sound chip is really the SN76489 also used in the Colecovision.

So it's really the CPU (TMS9900) that is all-new plus the IO chip (TMS9901) memory map... plus this god-awful hardware design that tries to cobble an 8-bit bus onto a 16-bit bus via a multiplexer. That's what screwed me hard for almost 20 hours.

1672769550340.png


I suspect the ST is well out of bounds for the DS/DSi. It's impossible - so on this planet - only FluBBa could do it :)
 

asiekierka

Well-Known Member
Member
Joined
Sep 26, 2007
Messages
120
Trophies
1
XP
989
Country
Poland
I suspect the ST is well out of bounds for the DS/DSi. It's impossible - so on this planet - only FluBBa could do it :)

I have a work-in-progress Atari ST emulator that runs at essentially full speed on the DS (!), but I never had the time to finish it (audio's missing, peripheral code is janky, no controls remappings, etc). The code's on my GitHub somewhere - it uses Cyclone for the 68000 core and FluBBa's AY-3-8910 core (with permission, but without the licensing fully figured out for public binary distribution).

The Atari ST is essentially a 68000 hooked up to a frame buffer, and jEnesisDS proves the DS is capable of much more than that given a 68000. Now, full-speed STe emulation, that would be more of a challenge. But vanilla ST? If you don't care about "proper" cycle accuracy (that would probably need a New 3DS)?
 

wavemotion

Benign Geek
OP
Member
Joined
Nov 23, 2020
Messages
916
Trophies
1
XP
7,345
Country
United States
First public Alpha 0.1 is available: https://github.com/wavemotion-dave/DS994a

Don't expect much... but in general this is what I got working as of last night:

  • Basic TI 99/4a emulation - 95% of commercial games run.
  • Bank switching up to 64K
  • 32K RAM Expansion is working
  • Save State and Load State is working
  • Full mapping of any of the 12 DS keys to any combination of TI joysticks (P1 or P2) and keyboard keys... makes playing Tunnels of Doom easy when the d-pad is directed to the ESDX keys.
  • No Speech Synth yet
  • No Disk or Cassette yet

That means if you want to run Tunnels of Doom (and you should!), you would use the ToD Hacks found over on AtariAge (and elsewhere) that are designated for SSS/FinalGrom99 use. These will load up without a cassette interface. You can use Save/Load state to save and restore progress of your game.

And a word of warning for DS users... this thing is a bit slow. On a DSi or above running Twilight Menu or Unlaunch to gain the full 2X CPU, it will generally operate at full frame rate. On the DS-Lite/Phat (or when running from an R4 card which doesn't unlock the faster CPU) you will be on the struggle bus. Optimization comes later... for now it's just getting the basics to work.

Please look at the readme file. You will need two (not supplied) TI Console ROMs. They should be easy to find... place them in /roms/bios on your SD card.

If anyone manages to get this to run... I'll be pleasantly surprised :)

ROMS are weird for the TI-99... there are 'C', 'D' and 'G' plus some flat full-load binaries. When picking games - you generally pick the 'C' version of the ROM or the flat/full-load binary. The system should auto-find the related files.

Enjoy!
 
Last edited by wavemotion,

wavemotion

Benign Geek
OP
Member
Joined
Nov 23, 2020
Messages
916
Trophies
1
XP
7,345
Country
United States
Version 0.3 is available: https://github.com/wavemotion-dave/DS994a

V0.3: 7-Jan-2023 by wavemotion-dave
  • Improved speed 8% across the board
  • Fixed spirte cut-off at top of screen
  • Fixed X in control mapping so that it toggles P1 vs P2
  • Added PAL (along with default NTSC) support
  • New splash screen and logo
  • Other minor cleanups as time permitted
V0.2: 6-Jan-2023 by wavemotion-dave
  • Increased bankswitch support to 512k
  • Fixed IDLE instruction so games like Slymoids works
  • Improved speed by 10-15% across the board...
  • Other minor cleanups as time permitted
 

CrashMidnick

Well-Known Member
Member
Joined
Jul 22, 2015
Messages
726
Trophies
0
Age
41
XP
2,836
Country
France
Thanks Dave for this new emulator :)
On my side, I cannot get the file explorer to see my roms. Is there any restriction ?
 

Attachments

  • Sans titre 1.jpg
    Sans titre 1.jpg
    217.6 KB · Views: 62

wavemotion

Benign Geek
OP
Member
Joined
Nov 23, 2020
Messages
916
Trophies
1
XP
7,345
Country
United States
Yeah.. ROM naming is so damn strange for the TI. You're using the older naming scheme - and if you got your games from another site they might be in a different naming format.

Rename any .c file to <filename>C.bin and any D and G the same.

So if you wanted to play QBert with your current setup, just rename your .c and .g to:

qbertC.bin
qbertG.bin

Working on .DSK support this morning... slow going but I'll get there!
 

CrashMidnick

Well-Known Member
Member
Joined
Jul 22, 2015
Messages
726
Trophies
0
Age
41
XP
2,836
Country
France
I tested some games on my DS-lite and it is already working great, most of them run at 60fps with FS :toot:
I deleted my romset taken from that "archive" site because many modules I tried did not work. I found something else with the right extension and they all worked but it is incomplete. For example I cannot say if Q*Bert works or not as it is missing in the last romset I found and it is not working with the 1st one :wacko:.

I wil investigate a little more :)
 

wavemotion

Benign Geek
OP
Member
Joined
Nov 23, 2020
Messages
916
Trophies
1
XP
7,345
Country
United States
I tested some games on my DS-lite and it is already working great, most of them run at 60fps with FS :toot:
I deleted my romset taken from that "archive" site because many modules I tried did not work. I found something else with the right extension and they all worked but it is incomplete. For example I cannot say if Q*Bert works or not as it is missing in the last romset I found and it is not working with the 1st one :wacko:.

I wil investigate a little more :)
Cool! Look. At whtech and look for the FinalGrom99 archives. And the FinalGrom99 repository thread on AtariAge. That’s the good stuff and lots of homebrews.
 

wavemotion

Benign Geek
OP
Member
Joined
Nov 23, 2020
Messages
916
Trophies
1
XP
7,345
Country
United States
Version 0.4 is ready: https://github.com/wavemotion-dave/DS994a


V0.4: 9-Jan-2023 by wavemotion-dave

  • Added .DSK support for 90K and 180K disks (read and write both work but write doesn't yet persist back to SD card). Use the Cassette icon in the lower left of the keyboard to mount disks.
  • Added High Score support for 10 scores per game. Use the new 'HI' button on the main keyboard.
  • Fixed loading of 8K "banked" games (Tuthankam, Mancala, etc).
  • Fixed right-side border rendering for "TEXT MODE" games (Adventure, Zork, etc).
  • Added new option to mirror console RAM. This is more accurate but slows down the emualation. Congo Bongo needs this to render level 2+ properly.
  • Games that were hanging looking for Speech Synthesis module no longer freeze up (no voice yet but you can play them).
  • Other minor cleanups as time permitted.
Preliminary disk handling is included - you will need to have the TI Disk controller ROM in /roms/bios. This is often called simply "disk.bin" but given that there are other emulators using the same name, please rename to 994adisk.bin to match the other console ROMs. In short, if you want a fully functional DS99/4a you would have the following 3 console ROMs in /data/bios:

* db8f33e5 994aROM.bin (8K)
* af5c2449 994aGROM.bin (24K)
* 8f7df93f 994aDISK.bin (8K) - this is needed only if you want .DSK support
To mount a disk you use the little cassette icon (yes, the irony here is not lost on me) in the lower left of the keyboard.

One last note... this is the first version that has lost a frame or two of performance. Slight, yes, but... but this is the cost of additional emulation accuracy. I'll get those frames back (and more!) with some optimization in the near future.
 

CrashMidnick

Well-Known Member
Member
Joined
Jul 22, 2015
Messages
726
Trophies
0
Age
41
XP
2,836
Country
France
Version 0.4 is ready: https://github.com/wavemotion-dave/DS994a


V0.4: 9-Jan-2023 by wavemotion-dave

  • Added .DSK support for 90K and 180K disks (read and write both work but write doesn't yet persist back to SD card). Use the Cassette icon in the lower left of the keyboard to mount disks.
  • Added High Score support for 10 scores per game. Use the new 'HI' button on the main keyboard.
  • Fixed loading of 8K "banked" games (Tuthankam, Mancala, etc).
  • Fixed right-side border rendering for "TEXT MODE" games (Adventure, Zork, etc).
  • Added new option to mirror console RAM. This is more accurate but slows down the emualation. Congo Bongo needs this to render level 2+ properly.
  • Games that were hanging looking for Speech Synthesis module no longer freeze up (no voice yet but you can play them).
  • Other minor cleanups as time permitted.
Preliminary disk handling is included - you will need to have the TI Disk controller ROM in /roms/bios. This is often called simply "disk.bin" but given that there are other emulators using the same name, please rename to 994adisk.bin to match the other console ROMs. In short, if you want a fully functional DS99/4a you would have the following 3 console ROMs in /data/bios:

* db8f33e5 994aROM.bin (8K)
* af5c2449 994aGROM.bin (24K)
* 8f7df93f 994aDISK.bin (8K) - this is needed only if you want .DSK support
To mount a disk you use the little cassette icon (yes, the irony here is not lost on me) in the lower left of the keyboard.

One last note... this is the first version that has lost a frame or two of performance. Slight, yes, but... but this is the cost of additional emulation accuracy. I'll get those frames back (and more!) with some optimization in the near future.
I tested V0.4a (DSLite) with speed improvements and this emulator is working really great. Whithout frame skip many games run @60 fps and demanding games are around 50 fps !

Are there any exclusive games on floppy disks or they were used mainly for productivity softwares ?

To be honest, TI-99 is a nice system, I was expecting something old and dusty but it is not (well, it is but it is not :)).

Again, Good job Dave, good job !
 

wavemotion

Benign Geek
OP
Member
Joined
Nov 23, 2020
Messages
916
Trophies
1
XP
7,345
Country
United States
A lot of disk stuff is productivity.

But a lot of disk-based games software was converted to 'FinalGrom99' binaries - generally large bankswitching ROMs. DS994a will support those just fine... however my favorite TI99 game is Tunnels of Doom which uses the ToD "QUEST" disk. There is a disk-less ROM hack out there but the authentic experience is with the disk. You load Tunnels of Doom cartridge (C and G files) and then mount the Tunnels of Doom disk (90KB) and when it asks you where the game is you type: DSK1.QUEST (case sensitive). You will then be playing an absolutely amazing dungeon crawler from 1982. Such fond memories of that game - it's considered an absolute classic!
 

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
  • No one is chatting at the moment.
    K3Nv2 @ K3Nv2: Lol rappers still promoting crypto