Jump to content

Tursi

Members
  • Posts

    8,709
  • Joined

  • Last visited

  • Days Won

    9

Tursi last won the day on December 27 2023

Tursi had the most liked content!

6 Followers

About Tursi

  • Birthday 11/29/1971

Contact / Social Media

Profile Information

  • Custom Status
    HarmlessLion
  • Gender
    Male
  • Location
    YYC
  • Interests
    Buy me a Kofi! https://Ko-fi.com/tursilion

    Or fill in my 'SurveyWalrus' and help choose my next task!
    https://harmlesslion.com/cgi-bin/walrusquery.cgi
  • Currently Playing
    Current Project: Website update
  • Playing Next
    Next project (per survey): Finish Super Space Acer ColecoVision

Recent Profile Visitors

34,055 profile views

Tursi's Achievements

Quadrunner

Quadrunner (9/9)

10.2k

Reputation

  1. Astounding! Depending on how much free time the GPU has, you could watch the scanline register and change the sprite mode for the bottom half, if that helps memory at all.
  2. The main trick IIRC with it is you need to get a high voltage pulse on sync into the sync/reset line. I don't think the circuit is documented, only the concept... The datasheet I have backs up my memory -- you have to drive the RESET pin above 9V (Recommended is listed as 10-12V) for external sync. Which means you need to extract sync from the previous VDP's composite output (rated as 1.85-2.1V), raise it cleanly, and juggle it with the console reset line. Honestly the 9928's approach of just signaling an external video switch seems easier. That said, when I played with the video input line many, many years ago, I actually just cut the reset line (with the intent of figuring it out later) and fed in composite video from a VCR. Everything /worked/ technically, switching, overlay, but it was useless without the sync of course... When the 9918A was in charge, there was slight bleed-through from the VCR, out of sync of course. The balancing circuit would probably solve that. When I switched on external video from the VDP register, the VCR input took over sync and was stable, but without sync pulses, the VDP was now out of sync. It was clearly superimposed, though! Radio Electronics did an article on making a titler out of a 9918 and using the video overlay feature, so in theory all the needed information and circuitry are in there. I've saved the article all these decades out of interest of seeing it someday. Their job was a little more complex since they needed to take a slightly incompatible external video signal, but stacking VDPs you should be able to assume they are starting pretty damn close. (edit: All these years I've been sharing the wrong issues - turns out R-E did video titlers /twice/. The first was just for generating text screens. The SECOND was the TI-based overlay one. BUT... my brain remembered wrong (and young me in 1985 probably misunderstood)... it does use the 9928 and externally switches the video, it does not use the internal mixer. BUT, it still needs to generate that SYNC pulse, so there is still valuable info in here. Also, my archived scans are terrible quality...) Radio-Electronics-1985-11.pdf Radio-Electronics-1985-12.pdf Radio-Electronics-1986-01.pdf Radio-Electronics-1986-03.pdf
  3. Could be they were considering something along the lines of GROM banking - every four bytes accessing a different bank of GROM. The same is feasible with the VDP for up to 256 VDPs in the current reserved space. That's what I want to see, Gary. The issue with the banking is the same as for the GROMs, it's not fully decoded on the motherboard, so you have to add the hardware to split up the address space. Not too complex for a few though.
  4. That's possible, especially given in the /4 it IS only 6 bytes per character!
  5. It looks interesting, but it looks like you need to have an Azure account as well just to access the service...? Still, looks like it might work out cheaper than any other service... to start at least
  6. It took significantly more tries to get SNAKE as in the video. This code works, but isn't perfect: 10 REM SNAKE 20 CALL CLEAR 30 X=10 40 Y=10 50 DX=1 60 DY=0 65 PX=X 66 PY=Y 70 CALL HCHAR(Y,X,64) 80 GOSUB 372 90 REM MOVE SNAKE 100 GOSUB 400 110 X=X+DX 120 Y=Y+DY 130 IF (X<1)+(X>28)+(Y<1)+(Y>12)THEN 380 140 CALL GCHAR(Y,X,C) 150 IF C<>ASC("O")THEN 160 151 GOSUB 372 160 CALL HCHAR(Y,X,64) 170 FOR DELAY=1 TO 50 180 NEXT DELAY 190 REM HANDLE KEYS 200 CALL KEY(0,K,S) 210 IF K=ASC("E")THEN 250 220 IF K=ASC("X")THEN 280 230 IF K=ASC("S")THEN 310 240 IF K=ASC("D")THEN 340 245 GOTO 100 250 DX=0 260 DY=-1 270 GOTO 100 280 DX=0 290 DY=1 300 GOTO 100 310 DX=-1 320 DY=0 330 GOTO 100 340 DX=1 350 DY=0 360 GOTO 100 370 REM GENERATE FOOD 372 FX=INT(RND*28)+1 374 FY=INT(RND*12)+1 376 IF (FX=X)*(FY=Y)THEN 372 378 CALL HCHAR(FY,FX,79) 379 RETURN 380 REM END GAME 382 PRINT "GAME OVER" 390 END 400 REM SNAKE TRAIL 410 CALL HCHAR(PY,PX,32) 420 PX=X 430 PY=Y 460 CALL HCHAR(PY,PX,45) 461 RETURN Importantly the trail is only a single character long, so you can never hit yourself and you never grow. It required significant coaxing to make the keyboard and food work, to remember the limitations of IF..THEN, and repeatedly I had to call out specific line numbers in its own code. BUT it did better than ChatGPT did and I didn't WRITE any of this code. (Oh, and for some reason it decided maximum row was 12... but that's good enough for today.)
  7. I played with it after watching the video posted in the Python thread, but I didn't want to hijack that thread. What might be most interesting was this answer, if it's true: Basically, I iterated with it till it created a TI BASIC program that should actually work. This has potential - the system could gain experience from many people teaching it. But it's also highly probable that in many areas it will be taught garbage. It would be interesting if someone else could try it - go to Meta.AI and ask for a program that moves an asterisk across the screen (I actually asked for a human, but it was struggling and kept wanting to use a predefined character) using TI BASIC for the TI-99/4A (you have to specify that, or it uses the calculator syntax). See if it gets it in one try or not. 10 REM MOVECHAR 20 X=1 30 PRINT TAB(X);"*" 40 X=X+1 50 IF X>28 THEN 60 55 GOTO 70 60 X=1 70 FOR DELAY=1 TO 50 80 NEXT DELAY 90 GOTO 30 100 END This isn't a very interesting program, but it's correct and runs. We got there solely by my telling it how to fix errors in the generated code, took 10 iterations.
  8. Cartpack is the funniest one, because there's almost no PC executable code in there. It's a bunch of structures, ROM data, copyright debug, and four 1-line functions to report the ROMs to the emulator. Oddly, using OutputDebugString is now considered suspicious activity. I had no idea many viruses make a point of reporting every step they take. (Maybe the vendors assume that such things are removed from release builds, but running DebugView will quickly show you they aren't ).
  9. I'm sure they've thought about it many times. I dunno if signing it will help... I keep meaning to buy a cert and find out. Just hate the idea of a recurring yearly cost for something that's supposed to just be a hobby. I guess I could go subscription, lootbox and DLC like everything else? Classic99 399 Ultra! Only $2.99/month, comes with 1 disk drive and 32k RAM, just like your original system! Install AMS for only $19.99, and every drive is only another $12! Or purchase the random "PEBBOX" for $7.99 and you'll never know which expansion you might unlock! It might even be the rare Video controller, or the side-car acoustic coupler (you'll have to hold your phone against your PC speakers for this one.)
  10. Getting more and more instances of false positives. At least I hope they're false!! Every single one is an AI detection, so far.
  11. The 9901 interrupt pin was an interesting gotcha too... I accidentally turned on interrupts on the joystick left line when I added the SID Blaster support to Super Space Acer. I didn't realize it was interrupts until I asked ArcadeShopper to try it and he reported that it lit up the PEB. Basically, I was turning on the SID blaster by writing to the keyboard column select at CRU 24. But, I accidentally wrote >24. The result was holding left would freeze the game while the console ROM tried to figure out which DSR asked for an interrupt. Since Classic99 didn't support 9901 pin interrupts, there was no real help there. >24 is 36, but the CRU pin space is only 32 bits long, and Classic99 also wasn't wrapping the address around in that space like it was supposed to. (Bit at address 4 is joystick left.) Soooo.. those two changes to the 9901 code came out of my needing several days to figure that out. Though it's kind of neat to know that yes, joystick and keyboard inputs can trigger interrupts.
  12. This update is worth mentioning - file system fix. It's a gotcha. Classic99 399.069 This fixes a detection issue accessing DF128 headerless on FIAD if any part of your disk path contains a period (assuming an extension exists, which isn't allowed). It was checking the entire path instead of just the filename. Note you can always bypass that restriction using the ".?X" option (ie: DSK1.?X.WIN.EXE would allow opening an exe as DF128). Also: mute "Skipped 0 sentences on shut up" message (we don't care if it was 0) fixed case of DLL load on FilterDLL.dll and hq4xdll.dll for those running from case sensitive filesystems. (If you renamed the DLLs, you may have to rename them back). emit a warning in the debug log if loading a DSR to an invalid CRU base correct address wraparound in the 9901 address mapping add interrupt pin warning to debug log in the 9901 emulation (Classic99 does not support 9901 hardware interrupts) don't spam the same debug statement repeatedly to the log (note: no timeout. If you NEED to see a repeated statement, force another one in between. For instance, press Control to get the speech clear debug) also note the external debugger (debugview) is NOT filtered this way, so that you have best visibility there Given that bug has been in there since I first added DF128 headerless support, it's probably a pretty obscure case. But there was no help in the debug log when it happened, so worth fixing. As usual, the web site may require 24 hours to update but the download zip is uploaded (edit: looks like I got in right before the update ran ) https://harmlesslion.com/software/classic99 (Regarding the 3 uploads comment from way back, yeah. I had to push to git, then ftp the zip to my server, then go into my database update tool and write the update there. Now I just push to git and everything else is automated. )
  13. I'll give these a try! As for the SYNTAX ERROR, you'll probably find all you needed was to insert a CALL INIT before calling CALL LOAD. (Edit) Impressive amount of work there! The Megaman sprite looks great, too!
  14. Well, he won't get a thousand bucks for it. And if he does, I have two I'm not using...
  15. I doubt the disk side is different, but I only have the one dump. It definitely follows the TI DSR, but in doing a direct compare just now, it doesn't directly compare. It's possible he reassembled it with his patches rather than just hacking the binary. (Given that he needed to free the last 512 bytes for the hardware interface, that makes sense.)
×
×
  • Create New...