Jump to content

FarmerPotato

+AtariAge Subscriber
  • Content Count

    1,465
  • Joined

  • Last visited

Everything posted by FarmerPotato

  1. Hi, I see, you are interested in matching the timing in any case. That could be some interesting code. I'm interested in optimising (because I spent most of Saturday studying the V9938/58) Do you have these optimisations: 1. inner loop running from PAD (I forget whether this really helps on the 9995) 2. When sending data in HMMC, do you load the byte into R#44 the usual way, or do you use Register Indirect Addressing? i.e. set R#44 by writing 2 bytes to VDPWA vs set R#17 to 44 once set R#44 by writing 1 byte to VDPWA+4
  2. why not a FORTH program to put it in there? just copy 4 blocks directly to memory at >7000, then do the opposite on your destination system.
  3. This is a steal for $10 Console with speech, joysticks, Return to Pirate's Isle w/ manual, MoonMine, Wumpus, Munchman, Car Wars. https://www.shopgoodwill.com/Item/70046262#shipping-tab The kicker is, it's in Seattle, and they ship USPS, which costs $48. No-charge local pickup at: 1400 South Lane Street Seattle, WA 98144
  4. Point of concurrence: When the TI Employee Store in Lubbock put its stock of TI-99/4A items on clearance, Munchmobile was one of the few things left after a few frenzied days, and it was marked at $1.
  5. For those who haven't programmed the 9938, this is the flowchart of a HMMC command (high speed CPU to VRAM block) Setup Registers including first byte in R#44 Start Command Read VDP status SR#2 If CE=1, DONE if TR=0, go back to Read SR#2 Put next byte in R#44 Go back to Read SR#2 Writing to SR#44 can be optimised using Register Indirect Addressing. (Based on page 59 of V9938 MSX-VIDEO USER'S MANUAL )
  6. This is fascinating. I'm wondering if you are calling MDOS LBlockMove etc. or rolling your own code? Maybe there is a bit of optimization possible on setup or inner loop time. Drawing lines requires the VDP to do some internal counting, as well as external memory operations. Each of these has different opportunities for optimisation in the hardware of the VDP. Horizontal lines can be optimised because 4464 DRAMs (aka 41464) have "page write" where pixels of the same row don't require another row address setup. This is also why wide rectangles are faster than tall ones. You measured 6.8 microseconds / pixel for LINE. I calculate that just 10% of this time is memory access. (Math: for an n pixel line, optimal memory time is: vertical 300n and horizontal 150*(n+1) in nanoseconds. So a 100 pixel line in horizontal would take 15 us, while the vertical would take 30 us. This is the optimal memory bound for line drawing.) Screen retracing steals 55% of memory bandwidth in G6 or G7. DRAM refresh, not sure, maybe 1%. So VDP operations just have to pause 55% of the time. All told, that means VDP operations might be waiting on DRAM 65-70% of the time. If they run on a 3.58 MHz internal clock, there's additional slippage. I think that accounts for your actual measurements being 10x slower than my optimal memory bound. HMMV at 25k pixels/second must be comically wasting many chances to send the next byte. By comparison, there are 15750 (192*60) horizontal lines read from memory per second by the VDP in that 55% of memory bandwidth. It's like your able to send only 1 pixel on average before the VDP pauses again. Actually that's an average; during horizontal retrace, G6 or G7 consume 85% of memory bandwidth. (48 microsecond period per line; 40 microseconds of memory read for 256 bytes.) Followed by blanking interval (vertical retrace), 60 times/second. If code were very optimised to read the TR bit and respond, it might squeak out an extra pixel per line retracel! Though maybe HMMV is totally unable to accept any pixels until the vertical blanking interval comes around. The 9938 manual says commands are faster when sprites are disabled, or when screen is blanked. I wonder if all your timing would be 4x better with the screen blanked out? Not that that helps for a real program!
  7. The first time I saw that I assumed it was part of the game. GO DATABASE UP LOOK TAKE ALL ESCAPE WHAT DATABASE QUIT
  8. Bryan Roppolo put a lot of effort into his cartridge rarity list. Here's one version: https://www.99er.net/rarity.html Bryan was active (decade ago) in writing for RetroGaming Monthly and searching out programmers for interviews.
  9. I looked up the Sega mega drive cable. I like that idea. What I came up with was: put all the signals on a 2x6 header. Two of them for twin VDPs. Connect by ribbon cable to a small PCB with the port. So that could be a choice of two SCART, two VGA, or two Sega mini-DIN-8, all equally inexpensive from DirtyPCBs. For the EXT video source, I'm not sure what makes sense. I'm not sure what RGBs sources you would be likely to have today? I imagine adding 99/4A graphics over your YouTube video production would be the typical use of an EXT source. another Sega Genesis? a 15KHz ancient video card? But see this retro $95 Radeon 5450 from Ultimarc discussed on RetroRGB.com an MSX+ or Amiga or Apple IIgs an arcade cabinet a downscaler. Nowhere as common as upscalers! Ridiculous prices, eBay $395 for the TVOne C2-400, recommended on shmups. $2500 for a new TVOne Coria rackmount. And how to record the combined result? The more I look into it, the more I want to just have twin VDP with the ability to superimpose VDP2 over VDP1.
  10. Question: what video connectors would you care about? DE-15HD (VGA) + jumper for RGB-Csync or VGA-Hsync-Vsync SCART with jumper to choose RGB-S or composite S-Video (basically free with CXA2075 encoder) RCA composite (basically free with CXA2075 encoder) 99/4A Din-5 composite Commodore 1084S 6-pin DIN Apple DB-15 RGB-S port (Apple IIgs, Mac era) I consider SCART because some of us recommend Samsung 910MP with SCART. I'm not sure what DE-15HD to SCART cable is available unless you wire your own. I think Apple passive adaptors are generally available. I think there should be a separate PCB for connectors, with a ribbon cable. Pros: relieves stress, allows connectors to change without major rework. Cons: impact on impedance, crosstalk
  11. I thought about your magazine and it grew into a bigger idea in my head. This is what it looks like now.. but it's only an idea. == Festschrift == A magazine in tribute to Micropendium and 99/4 40th anniversary. PDF and print A mixture of beginner tutorial, history, and exciting recent product reviews. Ads are free! Want as much variety as possible. Point to urls (AtariAge FAQ) whenever possible Include a list of hardware needed with each topic All content to be repurposed into ninerpedia when done! Needs more content from old-timers Tutorials * I just got a 99/4A, now what? * what are the online forums? (tiny historical sidebar about BBSes, The Source, CIS, Genie, Delphi) * do I need a Pbox? * what should I buy to go with it? Explain 32k, nanoPEB, FinalGROM, TiPi, etc. * what classic games should I play? * Transferring files to your 4A with nanoPEB or TiPi * Classic99 * BBSes for the TI-99 today Interviews * Ralph Benziger (FinalGROM) * InsaneMultitasker * Matthew Hagerty (F18A) * Speccery * Tursi * Doug Warren (Gram Kracker, MG Explorer) * JediMatt42 (TiPi) * Opry99er * Hal Shanafield * repurpose some RetroGaming / Brian Roppolo interviews History * Brief Story of TI Home Computer * History of TI Faire * History of Fest West * Magazines that covered the TI-99/4A Reviews * FinalGROM * Joystick roundup.. joystick adaptor * Games of Rasmus * Dragon's Lair * TiPi * Stratego * Borzork Ads * arcadeshopper (everything, TiPi) * chris schneider (Genies) * jedimatt42? * schmitzi nanoPEB * ralph benziger (FinalGROM) * hummingbird eproms * dheins hardware TI warehouse haul * Chicago TI FAIRE * TI Treff * UK TIUG * TIjdingen * Fest 99/4ATX * Midwest Gaming Classic * Portland Retro Gaming Expo * Old time classifieds. BBS numbers, wanted, for sale, vanity ads. * Parody ad written by Munch Man. Hoono extermination service * Used Space Fighter, Parsec model, only 20 light years. Will trade for Bynite. * (Barrage) Dramis Jeep-Eagle-Chrysler! Certified Pre-Owned Vehicles. Battle tested, hardly any radiation damage. Articles * Programming XB today * Learning Assembly.. whats it like, where to start? xdt99, file transfer * Building hardware: tips and sources (mention hackmac 4A schematics in kicad) * FORTH column * F18A - what was it? hey Mk2! * Rarities (not too rare) TIny-99/4A * Type in 10 liners! from contest. Users Groups * Portland, OR * Chicago, IL * Hustisford, WI Interview question starters * Tell us about your first TI experience * How did you come up with the idea for... * What are your finished projects? * What are you working on now? * Tell us more about...
  12. Wow. I had a book of TRS-80 BASIC programs that I tried to adapt to TI Basic. I remember struggling through how to change some constructs.
  13. Submission: Microtower Platform: XB Written by: Erik Olson Instructions: Drive the elevator up and down. Press fire at the first floor to load a passenger. Press fire on any other floor to drop them off. (They're not picky.) If you get a yellow construction worker (looks like a wizard) take them to the roof, where they build another floor. 10 CALL CLEAR::F=1::C=9:=24::E=C*8-23::V=169::Z=16::CALL COLOR(9,5,5)::CALL COLOR(10,9,9)::CALL MAGNIFY(2)::CALL SCREEN(15) 20 CALL CHAR(97,"18FF8181818181FF003A327E723232000018183C3C1818000018183C183C7E00", 101,"00000018183C180000182424181A1E0000182C70703C1800005A3C1818183C00") 30 P=Z::F=F+1::CALL MOTION(#P,0,0)::T=24-F*3::FOR I=24 TO T STEP -3::CALL HCHAR(I,C+1,96,D-C-1)::NEXT I::CALL HCHAR(T,C-2,32,2) 40 CALL VCHAR(T-3,C-3,104,28-T)::CALL VCHAR(T-3,C,104,28-T)::CALL VCHAR(T,D,104,25-T)::CALL HCHAR(24,C-3,104,4)::CALL HCHAR(T-3,C-3,104,4) 50 CALL SPRITE(#Z,97,7,V,E,0,0)::U=(192-8*F*3-23) 60 CALL JOYST(1,X,Y)::CALL KEY(1,K,S)::CALL POSITION(#Z,A,B)::IF ((Y<=0 AND A>=V) OR (Y>=0 AND A<=U)) THEN Y=0 70 CALL MOTION(#Z,-Y,0,#P,-Y,0)::IF K<>18 OR Y<>0 THEN 60 ELSE IF P<Z THEN 90 80 IF A>=V THEN P=INT(RND*F+1)::CALL SPRITE(#P,97+P,2+(P*2+8 AND 15),A,B,0,0)::GOTO 60 ELSE 60 90 IF A<=V-20 THEN CALL LOCATE(#P,7+A-INT(A/24),INT(RND*96+73))::IF P=1 AND A<=U AND F<8 THEN 30 ELSE P=Z::GOTO 60 ELSE 60 microtower.dsk
  14. You are hardcore using TI BASIC. That's truly 10 lines. With XB it's more like 50 statements but limited chances to loop (ELSE can't contain a NEXT for instance).
  15. Here is another one. The program is based on one of David H. Ahl's Best Basic Games, so I can't take credit for it. 10 INPUT "TORMENT! ENTER A WORD: ": A$ 20 X=1 30 FOR I=1 TO LEN(A$) 40 X=X*(ASC(SEG$(A$,I,1))-64) 50 NEXT I 60 PRINT :: 70 IF X<H(LEN(A$)) THEN 10 80 PRINT "NEW BEST";LEN(A$);"LETTER WORD!":: 90 H(LEN(A$)) = X 100 GOTO 10 Your score is the letter values multiplied. For instance ACE scores 1*3*5. ZEBRA scores 4680. Try to find the highest scoring word for each length.
  16. Maybe we can post our working code here instead of in separate threads? I made a third entry, MicroTower. Instructions: Drive the elevator up and down. Press fire at the first floor to load a passenger. Press fire on any other floor to drop them off. (They're not picky.) If you get a yellow construction worker (looks like a wizard) take them to the roof, where they build another floor. 10 CALL CLEAR::F=1::C=9:=24::E=C*8-23::V=169::Z=16::CALL COLOR(9,5,5)::CALL COLOR(10,9,9)::CALL MAGNIFY(2)::CALL SCREEN(15) 20 CALL CHAR(97,"18FF8181818181FF003A327E723232000018183C3C1818000018183C183C7E00", 101,"00000018183C180000182424181A1E0000182C70703C1800005A3C1818183C00") 30 P=Z::F=F+1::CALL MOTION(#P,0,0)::T=24-F*3::FOR I=24 TO T STEP -3::CALL HCHAR(I,C+1,96,D-C-1)::NEXT I::CALL HCHAR(T,C-2,32,2) 40 CALL VCHAR(T-3,C-3,104,28-T)::CALL VCHAR(T-3,C,104,28-T)::CALL VCHAR(T,D,104,25-T)::CALL HCHAR(24,C-3,104,4)::CALL HCHAR(T-3,C-3,104,4) 50 CALL SPRITE(#Z,97,7,V,E,0,0)::U=(192-8*F*3-23) 60 CALL JOYST(1,X,Y)::CALL KEY(1,K,S)::CALL POSITION(#Z,A,B)::IF ((Y<=0 AND A>=V) OR (Y>=0 AND A<=U)) THEN Y=0 70 CALL MOTION(#Z,-Y,0,#P,-Y,0)::IF K<>18 OR Y<>0 THEN 60 ELSE IF P<Z THEN 90 80 IF A>=V THEN P=INT(RND*F+1)::DISPLAY AT(1,1)::CALL SPRITE(#P,97+P,2+(P*2+8 AND 15),A,B,0,0)::GOTO 60 ELSE 60 90 IF A<=V-20 THEN CALL LOCATE(#P,7+A-INT(A/24),INT(RND*96+73))::IF P=1 AND A<=U AND F<6 THEN 30 ELSE P=Z::GOTO 60 ELSE 60 Writing these is so much fun.
  17. I forgot it was the 9th. I just remembered it being a Thursday last month. I will remember the 9th next time around.
  18. Thanks. Ksarul is supplying me with a few. I prefer the dual-wipe kind anyway. I worked on the twin V9958 board analog side all weekend. Lots of cheap Yamaha CXA1675 and CXA2075 encoders/drivers on eBay (RGB to composite) so I'm using the CXA2075. I hope they are genuine.
  19. Yay! Please bring your emulator setup to the Fest! I'd like to see it working (I have not invested the time) There will be a real 99/4 and 99/2 (non working) at 99/4ATX,
  20. Another chapter in my quest for V9938 sockets. This is what I made when I was 17 when I could not find them anywhere. Yamaha sent the free sample chip (but no socket). 64-pin machined socket, basswood, 64 wire wrap/solder connections. A TI engineer provided the suggestion (and his wire wrap gun!) and helped me solder it. I found the machined socket at OEM Parts, Colorado Springs, where I worked as a pin straightener on salvaged ICs for $3.35/hr. During the DRAM shortage, used 4116s resold for 99 cents. Straightening thousands of 4116s earned me money for a Geneve.
  21. Oh.. I hadn't thought of it that way. Coexisting with a 9918A means there is no way to separate the write addresses in >8C00 to keep data away from the 9918A. So, thinking through that, a side port or PEB vdp could be in mirror mode (accepting writes at >8C00 but not reads) until accessed at some other base like >8500 (sorry, Mr. sound chip.. I'd move you to the VDP card.) My plan was one board, 1 or 2 VDP, goes in the console. First prototype will have a 40 pin ribbon cable socket to replace the 9918A (plus 3 wires A10,A11,A13 = 17 signals) and two PMOD connectors to plug into IceTea (16 pins.. no RESET) . A step down from there is a single VDP for less money. I think the most sensible path for me is to 1.) lay out the Twin+EXT PCB but populate it and debug it for Twin+SUP. A smaller spinoff would be 2) a single 9958 upgrade (what Stuart wanted.) The sale prices would be like $100 and $50 that way. 9918A socket pins used: MODE (A14) CSW* CSR* INT1* RESET* CPUCLK/GROMCLK (output) CD0-CD7 (cpu data) wires needed to decode additional addreses: A10,A11,A13 A13 is optional if you don't mind losing the palette register write and indirect register write (at >8C04 and >8C06) A10 and A11 would be set to select just VDP1 or VDP2 read/write. So installing a Twin board is harder, you need to solder 3 wires (I'll provide jumpers.) But installing a Single board would be a plain swap for the 9918A.
  22. FarmerPotato

    V9938

    From the album: Making

    A TI engineer came up with this solution when I could not obtain any kind of socket for the V9938. That was in 1988. It is a 64 pin machine socket (from OEM Parts, Colorado Springs where I previously worked as a pin straightener.) There's a block of basswood and 64 wire wrap (Kynar) connections. Soldered at one end. The carrier plugged into 2 rows of wire wrap socket strip, cut from 24 pin sockets and glued to the perfboard.
  23. Ugh, I tried to get sockets for the V9958 and this is what arrived today from Hong Kong: eBay seller mayetoto18 . Of 27 parts ordered, 2 ICs were in foam, but 25 sockets were not and were damaged beyond use. EDIT: got an immediate refund from seller.
×
×
  • Create New...