-
Content Count
855 -
Joined
-
Last visited
Posts posted by TheMole
-
-
Do you have any idea what it would take to make a full track and field game?
I think you'd need to add a couple of extra events (Hurdles, Long jump, High jump, Javelin throw, ... would all work with basically the same scrolling engine, if you want to change it up skeet shooting and/or biathlon should be easy to do with static screens), and a competition mode that perhaps supports multiple players (not necessarily at the same time though, this is a high score type competition) and a couple of CPU contestants.
-
But the TI sticks are so small so surely you can't be comparing it to that?
... oh, now I see.

Nah, I use a different joystick, I thought the TI sticks were too stiff...
-
I'm very, very tempted to make a joke about agility of the wrist and the sort of training exercises that one would do to get said agility... I won't though, I don't wanna be a wanker about it...

*ducks and hides*
-
1
-
-
Not on the actual system, but I'm figuring out what sprites would look like for this. I edited sprites from the Gameboy, Master System and Genesis from the original game to match the F18A's requirements:
Only the Genesis version fits with the background, imho, but that is really at the edge of what we'd be able to do. Each player character would be made up of 15-16 16x16 sprites, which immediately puts us at the limit of what we have. We do have enough room for the two sprite's patterns in VRAM though, but we'd have to stream in the animations from the host system.
-
Yup, I know... but hey, this doesn't count as a real program, now does it?
.Anyway, I'll take that into account next time.
-
I have turned my sports demo into a very simple joystick waggling game. Post your best times here...
I love these types of games
. Just gave it one try via js99er.net and I got 0:23:43 (or thereabouts) using the arrow keys. I haven't tried any further, because my colleagues were already looking at me strangely
. -
xdt99 comes with a command-line tool called xvm99, which allows transfer of disk images to nanopeb/CF7+ devices, and it works beautifully on my Mac. I understand the command line might be off-putting to some (I love it personally), but at least there's a way to make it work without booting a windows or Linux PC.
-
1
-
-
Makes sense, but how would a program be able to restore GM1, color palette, etc... in such a scenario? It can never catch the reset, right?
-
It's a cool demo, bit it does not close graphics mode properly on R.I.
Indeed it doesn't, but it also doesn't run the ISR so I'm curious how you get out of the program without power cycling?
-
Yup, that did the trick. I'd neglected to put a jump back to the first statement of the loop, so the GPU resumed in lalaland once triggered a second time.
So, I am building a level editor for Alex Kidd's F18A port and figured I'd put together a demo of some F18A features myself. This one focuses on parallax scrolling. It uses the two tile layers, but also the "trigger on next scanline" feature of the GPU to create a fake 3rd layer (the house in the background) and an extra parallax effect on the floor.
Video for those without F18A:
C-code running on the GPU is extremely simple:
// Define VRAM memory locations we want to read/write #define VREG25 *((volatile unsigned char*)0x6019) #define VREG27 *((volatile unsigned char*)0x601b) #define VREG50 *((volatile unsigned char*)0x6032) #define SCANLINE *((volatile unsigned char*)0x7000) #define SCROLL1 *((volatile unsigned char*)0x1801) #define SCROLL2 *((volatile unsigned char*)0x1802) int main(int argc, char *argv[]) { // Set stack pointer, not needed here but... __asm__("LI r15,>47fe"); unsigned char scroll1 = 0, scroll2 = 0; int factor = 0; // Write flag to trigger GPU every scanline to video register 50 (0x32) VREG50 |= 0x40; // loop that runs once every scanline while (1) { __asm__("IDLE"); // Check for start of image if (SCANLINE == 0) { scroll1 = SCROLL1; scroll2 = SCROLL2; // Only scroll half the amount for the top half of the background layer VREG27 = scroll2 >> 1; VREG25 = scroll1; } // Bottom half of background layer scrolls at normal speed if (SCANLINE > 96) { VREG27 = scroll2; } // Create extra paralax effect on floor if ((SCANLINE > 152) && (SCANLINE < 184)) { factor = SCANLINE - 152; factor = factor * (80 - SCROLL1); scroll1 = SCROLL1 - (factor >> 7); VREG25 = scroll1; } } return 0; }And a disk image for those that want to run it on the real thing is attached as well.
-
9
-
-
I have tried both but the former is far more interesting. This is really funny: Try to run E/A#3 SLSSIN from the attached disk, then run a game (I can recommend Donkey Kong).
So clearly this works without involvement from the host program. I assume you're not just letting the GPU run at full speed but you're using VR50 to trigger the code at every scanline?
So what's the overall framework for something like that then? I'd imagine something like this:
- Load VR54 and VR55 with the start address of your GPU code
- End your GPU code with an IDLE statement
- Let the host program set VR50 to trigger the GPU code every scanline (As in, set VR50 to a value ORed with 64).
But where does execution take off when the next scanline is hit? After the IDLE statement, or at the original location set in VR54/55?
Does the above sound about right?
-
Ok, now I understand, your needs.
It is not the task of a program (like the TiDisk-Manager) to handle different file systems. This is a task for the operation system. So there have to be a kernel extension to extend the OS to handle TI compatible memory devices formatted with the TI file systems.
I thought about such solutions earlier, so it would be nice to mount TI image files directly and I thought about to build some Quick View extensions to view the contents of some specific files directly in the Finder. But those plans could be realized in the future, sometimes.
Yeah, a kernel module or FUSE implementation would absolutely rock! I'd help, but I hate developing for OS X (probably because I'm crap at it, but also because in my very biased personal opinion Xcode is a bloated heap of steaming mammoth poo
).-
2
-
-
I tried reading /dev/disk2 (my CF cart) on my Mac and even that gave a permission problem when launching the app via the UI (btw, thank you for making the Metal Look & Feel standard, the app works much better than v1.5 now that there's no compatibility issues with the native file dialogs). The error message was a bit confusing, so I didn't push on ("File not found: permission denied" or something along those lines), but reading your message it probably is just a matter of running tiimagetool as root.
-
Thanks for this, just started using xdt99's xvm99 tool to manage the volumes on my CF7+ from my Mac and it works flawlessly!
-
1
-
-
Yes, I was hoping the app could at one point support writing disk images directly to a CF card that is formatted for use with the CF7+/nanopeb.
In the mean time I've figured out that Ralphb's implementation in xdt99 seems to work well, and that is cross-platform. It's also command-line based, so I can easily integrate it in my Makefiles, but it would still be nice to have a GUI app that read/write to an entire physical CF cards (I should not have called these images, that must have created additional confusion).
I think TIImagetool also does not support reading from/writing to CF cards directly?
-
Thanks for this, it's a cool program. How hard would it be for you to add support for CF7+/nanopeb images to this? There's currently nothing (that I know) that supports writing these on the mac.
-
Cool. Perhaps we will see some GPU powered raycasting soon?

Dunno about soon, but it sure is on my list of things to do

-
I know I've asked this before, and I searched this thread for the answer, but I can't seem to find it anywhere.
Anyway. Does the F18A implementation in js99er draw the image per scanline? ie, could I use js99er to test the development of raster effects? I know the scanline interrupt isn't supported (just reminded myself of that after hunting for a bug in my code over the past two hours or so
), but perhaps you do draw the screen one scanline at a time?Also, I have one tiny feature request: would it be possible to reload the .dsk image from disk whenever the system is reset? That would save me from having to reload the image every time I want test an updated version.
-
For those that are interested, it is perfectly possible to use gcc to create GPU binaries (at least in the few simple cases that I've tested).
Suppose your GPU code resides in a source file called gpucode.c, you can use the following commands to get the pure binary that you can upload to the GPU:
tms9900-gcc -std=c99 -Werror -Wall -c gpucode.c -Os -s -o gpucode.o tms9900-ld gpucode.o --section-start .text=0x1900 -o gpucode.elf tms9900-objcopy -O binary gpucode.elf gpucode.bin
The resulting gpucode.bin file is a raw binary dump that can then be uploaded to VRAM at location >1900 (or whatever you defined with the --section-start parameter).
For more complex stuff (such as when using global variables, or the heap), you need to objcopy some other sections as well, but you can easily work around the need for that in most cases by addressing VRAM directly instead of working with variables.
-
1
-
-
I'm not even trying to run it at full speed, in fact I don't know what full speed is. With the TMS9900 emulation I have accurate control over how many cycles each instructions take (borrowed from Classic99) and can run it for 50000 clock cycles between each video frame is drawn, but for the GPU I haven't really got a clue, so my implementation is simply using the timing of the TMS9900 but running it 10 times longer (500000 cycles). This is based on what my 3 years old laptop can manage. If your browser can't keep up the video frame rate will be lower, but even if it can keep up, the full GPU speed is really perhaps 150% faster.
I'm not really doing anything complex on the GPU, so the GPU speed itself shouldn't be a problem. But I notice that when I run my code, the framerate of the overall emulation drops to about 30fps. Or alternatively, when I run some of the F18A demo programs, I get the same thing (the spinning bitmap and the plasma being two examples).
-
There are a couple of Beige PAL consoles for sale in Argentina right now, although only one of them looks to be functional (and they do have the better keyboards). They are a bit pricey though. . .
Do you have a link for those?
-
Does js99er have a speed control? Vt9t9j (written in Java, not javascript) speeds up well beyond original hardware.
-Ed
I don't think it has speed controls. But the real problem is the GPU in the F18A, which runs at 100mhz. Javascript just isn't fast enough on my config to emulate both the 100mhz GPU and the 3mhz CPU in parallel...
-
I have a working black&silver one, a bit scratched, with 220V power, what u could have for free
if you dont find the wanted beige one.
I might have to take you up on that, since a working beige console with decent keyboard is probably a pipe dream anyway
. Is it a qwerty keyboard, or is it qwertz?-
1
-
-
So, I seem to have lost or misplaced my consoles during one of my moves in the past couple of years. I just spent 3 hours digging around in old cardboard boxes in a musty basement and they are nowhere to be found (I did find my C64 and my Atari ST, which I completely forgot I had
). I found my twe PEB's, my carts and other goodies (although I can't imagine the floppies have survived the damp storage space), but no consoles or power supplies.Anyway, I just started playing around with coding for the F18A, and would need real hardware to test some things on (js99er.net is great, but my computer isn't fast enough to run the GPU emulation at full speed). Does anyone on here who's in Europe have a console and power supply that they are willing to part with for a reasonable price? I'm not looking for a collector-quality item, just something that works. I'm willing to spend extra for a beige model with working keyboard though!

TI Sports game
in TI-99/4A Development
Posted
It's been a looooong time since I got anything under 20...
I swear, that was the last one!