-
Posts
16 -
Joined
-
Last visited
Content Type
Profiles
Forums
Blogs
Gallery
Events
Store
Posts posted by eswartz
-
-
Sorry, I was replying to NorthWay.

-
Probably both of these emulators have accurate TMS5220 support. I compared my implementation with MAME's (the precursor to MESS) to compare some decoding tables, but the two emulators have otherwise independent implementations of the speech synthesis.
I guess the distinction is whether you can use the innards well enough in a "standalone" way and are more comfortable with hacking in C or Java.
See https://github.com/eswartz/emul/tree/master/v9t9/v9t9-java/v9t9-engine/src/v9t9/engine/speech for the guts of V9t9's version. (Reviewing it now, I'm a bit embarrassed at how messy it looks -- it was hand-converted from C a long time ago
. But it works.)If you're willing to do some hacking, V9t9's sources has a standalone speech generator program which speaks some phrases from speech ROM and from direct data. (https://github.com/eswartz/emul/blob/master/v9t9/v9t9-java/v9t9-machines/tests/v9t9/machine/common/tests/ManualTestSpeech.java).
There are quite a few things to fix in that file to make it generically useful, but if you have questions, I'd be willing to help.
-- Ed
-
Scramble is hanging in this loop:
...
Titanium is hanging in a similar loop waiting for the joystick button to be released (although it was never pressed):
Ok, this is my bug. Due to the way various OSes send keyboard events, I have to do some chicanery to ensure a smooth typing experience, and I expect CRU addresses >6 and >8 both to be read at some point before updating the keyboard and joystick state. A short-term workaround is to do TB >1 before TB >0, I think.
Is it possible to set a breakpoint in the debugger?
Not directly, yet... V9t9 supports them, but it's not exposed yet.
I'm pretty busy these days -- would you mind filing bug reports or feature requests for these on my github page <https://github.com/eswartz/emul/issues> ?
Thanks,
-- Ed
-
It was very easy to set up, and a like the front end, but unfortunately my two games (Titanium and TI Scramble) don't work - both are hanging on the opening screen. I couldn't get into the debugger (SysRq doesn't work) to see what was wrong.
Use the "Advanced Controls" (right click on the screen) and you'll get a button bar at the bottom of the screen. One of them is the debugger. (SysRq is usually captured by OSes nowadays...)
I'd be interested to see what is blocking you from using your games. I'll try to fix it as soon as possible.
BTW, are there any plans to support the F18A on v9t9? I might be able to contribute with code for some of the VDP features, but the GPU would probably require too much knowledge of the source code.
Not at this time, though don't let that stop you from trying
Thanks,
-- Ed
-
Tursi, retroclouds, thanks for the info about the .rpk format. I'll look into it.
As for arc303, I do remember it challenged the earlier disk system emulation. This is definitely where debuggers help out. I once hacked in a feature to help in situations like this, which could be developed as follows:
When a certain mode was enabled, the emulator could record a circular queue of recent instructions, with actual operands and all, then at a certain point (like, when an i/o error was triggered), it would dump the queue to disk.
This would be preferable to what v9t9 does now, which is let you start and stop dumping this info at some point based solely on watching the screen in user time, which usually results in huge files with little context.
-
1
-
-
Thanks, too! Although I like to maintain that it's not that Classic99's disk support has idiosyncrases, but that Classic99 does not emulate the TI disk system.
Not to toot too many horns, but V9t9 supports the hardware-level disk access too. I was able to get it to comprehend the Millers Graphics encrypted disks. Only trouble is, you need a way to transfer all the tracks from the 99/4A to your PC. I think all the software I used for that is long rusted.
You said that backwards.
DSR level support is much easier than hardware level support. But yeah, I want serial support too. It's on that crazy list.I agree on this count. Serial support is hard. (The new V9t9 does not even pretend to support it.) No one wants to use the DSR level for it, and there are such bad bugs in the RS232 DSR interrupt handler that it's hard to tell whether it's working correctly or not. I fought serial support in the DOS V9t9 for a long time before just kind of giving up on it.
I've seen it said before, but three cheers to Thierry Nouspiekel for providing the info that would make either of us even consider implementing serial support

-
I think they've just named it the "Jon Guidry bank switching method". LOL... Tursi coined it

The nice thing is that all you have to do for emulation is manually reverse the banks if the emulator supports the method of banking up to 512K non inverted. The new 512K board will be non inverted, but one can always manually flip the 8K banks around for backward compatibility with an inverted 64K board. (So to run Pitfall in the new 512K one, we just flip the four 8K banks around and all is well in the first 32K of the 512K 49F040.)
Okay. I've updated V9t9 with support for Pitfall (banking + keyboard fix).
Like above, you'll need to make a modules.xml and add this:
<module name="Pitfall"> <memoryEntries> <bankedModuleEntry fileName="PITFALL.bin" reversed="true" /> </memoryEntries> </module>
(note the "reversed" attribute lets you switch the ordering).
-
Uh oh.. am I going to have to get onto my long-neglected task list?
This is a long shot, but since your emulator works and mine doesn't -- did you ever run into a problem with Arc303 failing to generate compressed archives? It's the last seemingly CPU bug I have to track down in Classic99. (It's either CPU or disk.)

I vaguely remember this. IIRC, it comes down to supporting e.g. "SRC reg, >0" properly, when R0 also contains either a 0 or 16. 16 really means 16 in that case.
-
Wow. V9T9 - I remember that one. I actually submitted the joystick assembly code which was integrated into it - IIRC.
-H
Hmm, I'm not sure. Someone did contribute support for handling German keyboards... was that you?
-- Ed
-
Ed,
Where can I find out more information about the F99B Forth processor? I didn't see anything on the website. I'm very interested in Forth.
Thanks
For now, there's not much info except in the source -- it's just a pet project of mine.
Basically, it's an invented processor whose opcodes are Forth primitives (DUP, LIT, BRANCH, etc). Most are one byte except for double-width primitives. It was a test-bed for the V9938 support.
The ROM is built with a Forth compiler written in Java (also buried in sources). I had tried in the early aughts to use GNU Forth's cross compiler (written in Forth!) to build a Forth ROM (for 9900), but it was a royal pain.
I was going to post information about how to invoke the F99B machine, but I realize I didn't include the required files in the build. Maybe I could add that at some point or mail you instructions...
-- Ed
-
Ed Swartz! Nice to see you around! Your V9T9 got me interested in TI Emulation in the first place! hehe.
Cool! I noticed you were working on an emulator... kind of lit a fire under my butt to get some of this newer stuff out there.

-
Yes, nice to see Ed here! Welcome Ed! I remember talking to you by telephone in the early 90's. I was in the UK, you in the USA. You shocked me with some of your tails of BBS hacking

You must have the wrong person O.o !
-
I had some troubles loading the disk version of Pitfall. That is, I copied the files to a directory and pointed the emulator to that directory. When trying to load using #EA5 I got disk error 0.
Hmm, it worked for me with Editor/Assembler by pointing to the pitfall directory and loading DSK1.PITFALLB.
Error 0 would be 'device not found'... which software do you mean when you say #EA5? (I am definitely behind the times with regard to recent retro computing.) If not E/A, then it'd be interesting to see what DSR calls it's attempting.
So it might be a TIFILES headers issue? (which the binary files does not have as I generated it on my windows box and mainly used the classic99 emulator).
Nope -- the file is in classic V9t9 format, which still works.
If you are still having trouble, email me the config and workspace.StandardTI994A files from the ".v9t9j" directory in your home directory, so I can see if there's anything odd going on.
-
The Pitfall! rom image is actually a 32K single binary file containing 4 concatenated 8K banks.
The bank-switching method used is named after Jon Guidry who made a batch of new PCB's that support ROM's up to 512K (if I'm not mistaking).
If my memory serves me right, it's a "reversed" bank-switching order.
So, what is this bank-switching method called? Guidry-switching?

You can get Pitfall! (both source code and binaries) at this thread: http://www.atariage....nd-source-code/
Thanks! I was able to make the necessary changes and get it to run from the module (this brings back memories! nice work!).
But the keyboard support doesn't seem to work as expected, as you found. I'll be checking the assembly to see where I'm going wrong.
-- Ed
-
Thanks for the post (and email).
It does not seem to support the new bankswitching method, so I was not able to test Pitfall!
Wow, I wasn't aware of a Pitfall for the 99/4A.
V9t9 supports the usual two-bank module ROM switching method -- which is probably the "old" method.
V9t9 has a registry of known modules in it, to make setup easy, but there's nothing for Pitfall yet.
In the meantime, try registering the module ROMs with V9t9 and see if it "just works":
1) You can create a "modules.xml" file in one of the paths mentioned in "Search Locations" in the "Setup ROMs" dialog.
2) Add content like this (assuming the files are named as below):
<modules> <module name="Pitfall!"> <memoryEntries> <bankedModuleEntry fileName="pitfallc.bin" fileName2="pitfalld.bin" /> <gromModuleEntry fileName="pitfallg.bin" /> </memoryEntries> </module> </modules>
3) Then click the "Switch Modules" button again and the new entry should be in the list.
If indeed Pitfall does something different, then if you could provide info about Pitfall's bank-switching method (and, of course, testable versions), I'd be happy to support it.
Also had some trouble setting up disk support
Let me know what issues you had, specifically, and I can try to help. It'd be good to get feedback on usability issues or just plain bugs

V9t9 should be able to handle TIFILES or V9t9 style files in host directories, sector-based disk images, or V9t9-format track-based images. Note that I've only tested single-density disks -- never got my hands on the Corcomp controller ROMs. If you were trying that, then some work will be needed


v9t9 TI-99/4A emulator written in java
in TI-99/4A Development
Posted
Northway,
OK, it sounds like you're taking on something more complex than you may realize. Some clarification from the other side:
-- TMS5220 is essentially a LPC-10 decoder chip, taking sets of bit-encoded equations and producing audio samples from it. This was done with 1978-era hardware, so, definitely a 68020 could handle the calculations (more) easily.
-- But, TMS5220 is not a general audio playback chip. The audio is not "compressed", but in a completely different format, which is in the form of equations, as it were. Those equations are in a bitstream that tries to minimize storage. Several seconds of speech use only hundreds of bytes, but from that it makes an 8 KHz PCM stream with 8-bit samples. See http://www.nouspikel.com/ti99/speech.htm for more details. The sources I posted encapsulate this logic.
-- So, yes, if you are able to get a high-quality PCM recording of the Gauntlet speech, and run it through whatever software the person in the video used, then you could get data suitable for the TMS5220, with all its limitations. But it's pretty much only useful if you're running it in emulated 99/4A/etc hardware. There'd be no point doing this for a different processor that doesn't use a TMS5220, since I believe the 68020 could handle much better-sounding LPC.
-- Take a look at e.g. http://src.gnu-darwin.org/ports/audio/hawkvoice/work/HawkVoiceDI/src/openlpc/openlpc.c -- this is a general-purpose LPC encoder/decoder that seems like it is flexible enough for your purposes, and which doesn't have any of the emulator-specific logic buried in it.
-- Ed