Jump to content

Search the Community

Showing results for tags 'tia'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • Atari Systems
    • Atari 2600
    • Atari 5200
    • Atari 7800
    • Atari Lynx
    • Atari Jaguar
    • Dedicated Systems
    • Atari 8-Bit Computers
    • Atari ST/TT/Falcon Computers
  • Gaming General
    • Classic Gaming General
    • Classic Computing
    • Modern Gaming
    • Prototypes
    • Arcade and Pinball
    • Emulation
    • Hardware
    • Gaming Publications and Websites
    • International
  • Marketplace
  • Community
  • Game Programming
  • Site
  • Classic Gaming News
  • The Club of Clubs's Discussion
  • I Hate Sauron's Topics
  • 1088 XEL/XLD Owners and Builders's Topics
  • Atari BBS Gurus's Community Chat
  • Atari BBS Gurus's BBS Callers
  • Atari BBS Gurus's BBS SysOps
  • Atari BBS Gurus's Resources
  • Atari Lynx Programmer Club's CC65
  • Atari Lynx Programmer Club's ASM
  • Atari Lynx Programmer Club's Lynx Programming
  • Atari Lynx Programmer Club's Music/Sound
  • Atari Lynx Programmer Club's Graphics
  • The Official AtariAge Shitpost Club's Shitty meme repository
  • The Official AtariAge Shitpost Club's Read this before you enter too deep
  • Tesla's Vehicles
  • Tesla's Solar
  • Tesla's PowerWall
  • Tesla's General
  • Harmony/Melody's CDFJ
  • Harmony/Melody's DPC+
  • Harmony/Melody's BUS
  • Harmony/Melody's General
  • ZeroPage Homebrew's Discussion
  • Furry Club's Chat/RP
  • PSPMinis.com's General PSP Minis Discussion and Questions
  • PSPMinis.com's Reviews
  • Atari Lynx 30th Birthday's 30th Birthday Programming Competition Games
  • 3D Printing Club's Chat
  • Drivers' Club's Members' Vehicles
  • Drivers' Club's Drives & Events
  • Drivers' Club's Wrenching
  • Drivers' Club's Found in the Wild
  • Drivers' Club's General Discussion
  • Dirtarians's General Discussion
  • Dirtarians's Members' Rigs
  • Dirtarians's Trail Runs & Reports
  • Dirtarians's Wrenching

Blogs

There are no results to display.

There are no results to display.

Calendars

  • AtariAge Calendar
  • The Club of Clubs's Events
  • Atari BBS Gurus's Calendar
  • ZeroPage Homebrew's Schedule

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


Website


Facebook


Twitter


Instagram


YouTube


eBay


GitHub


Custom Status


Location


Interests


Currently Playing


Playing Next

Found 16 results

  1. I haven't had any issues with the 2600 incompatibilities on the 7800 so far, but I've recently been wanting to play Kool-Aid Man and was wondering if you could replace the TIA in the 7800 with an earlier one, to possibly fix some of the compatibility issues. Thanks
  2. I have decided to make a rom hack instead of coding from scratch (since I have the programming talents of a peasant) It's a "Sonic-Themed" version of Bentley's Crystal Quest with revamped graphics & levels. Is there a way to insert new music to the game, let alone change POKEY sounds back to the crisp TIA? EDIT: Nevermind, rom itself got corrupted it wouldn't read with the editor...
  3. Howdy all. So after hearing the amazing music on the Stella's Stocking and Mappy carts, I was wondering how that was done and if that programming wizardry would be possible on the 7800. I think it would be a great way to improve the quality of the 7800 sounds, without requiring an extra chip on the cart.
  4. Ok, a bug has been reported in Stella with ROM "Pick & Pile". This is a PAL ROM, and as such I'm unable to test it. If someone with a PAL machine and a Harmony could test it and let me know, it would be great. Otherwise I'll have to work from the code itself. The problem is, there's horrible flickering on the startup screen (once you get into the game, it's a steady 312 scanlines). In Stella, the startup screen alternates between frames with 314 lines and 4 lines. The flickering is because a 4 scanline frame is essentially blank, so every second frame is black, and hence everything flickers (sort of like 30Hz flicker). However, I'm not convinced the blanking is the issue. I feel that a 4 scanline frame should be blank, and this ROM shouldn't be generating such a frame at all. Other emulators I've tested display a consistent 315 lines on this screen, so I'm thinking there's an error in Stella emulation. I've traced it to VSYNC handling (or at least I think I have). I ran the ROM and set a breakpoint at $75A7. This results in the following section of code: The code is as follows, with a printout of Stella state after each line has executed. You can try running it yourself to confirm: 75A7: LDA #$02 ;2 // scan=311 75A9: STA VSYNC ;3 // vsync set @ 311 75AB: STA WSYNC ;3 // scan=312 75AD: STA VSYNC ;3 // vsync set @ 312 75AF: STA WSYNC ;3 // scan=313 75B1: STA VSYNC ;3 // vsync set @ 313 75B3: STA WSYNC ;3 // scan=314 75B5: STA VBLANK ;3 // ... 75B7: LDA #$00 ;2 // ... 75B9: STA VSYNC ;3 // CPU stopped @ 314 75BB: RTS ;6 // scan=0 !!! After this point, it goes on to do 4 more scanlines, then starts over again. So I'm thinking the CPU shouldn't have stopped and went to scanline 0, but proceeded to process a few more scanlines in this frame. Can anyone explain what really should be happening here?
  5. Hi everyone I'm proud to present the MidiBox TIA Cartridge! This is the first FULL midi synthetizer based on the TIA chip and cartridge cased. This is a DIY project, the firmware is opensource. It was not easy. Not because of the technical issues, just bad karma. In 2011/2012 I made a working firmware and a manager under Max/MSP. Because of personal reasons, I put the project on hold. End of 2012, I received a message from Eptheca who asked me the status of the project. With his help we decided to print 3 PCB’s. Unfortunately during this period, the hard drive of my computer suddenly decided to leave me, and I lost all my work: (( I sent the drive to Shanghai to try to recover my data, but of course my disc was one of the non-recoverable 10% (always this bad karma). So now we had the box and the electronics but nothing to put in it. In February I decided to rewrite everything but it took me some time. ... Done! We've now got a new firmware and the application to manage the box. I am inspired by the version 1 MB-SID. I kept all the features of this engine. I improved the management of banks, I dedicated two envelopes to the voice of the TIA which is free, and a few small details that might please you. Here is the features of it: 1 dedicated envelope for each voices(so 2) with optional non-linear curve and Sync which can be assigned to Amplitude and pitch. 3 specifics Mode to mix Modulation matrix and this env Env+Mods, Env*Mods, Env+(Env*Mods). 2 additional envelopes with optional non-linear curve and Sync which can be assigned to Amplitude and pitch. 4 additional LFOs with different waveforms and Sync which can be assigned to Amplitude and pitch. Pitch Bender Portamento/Glide function with Optional "Constant Time Slide". Delays 1 Arpeggiator for each voice(so 2) with optional Sync. Poly, Mono and Legato Mode Separate keyboard zones for each voice (key splitting) allows to play voices separately Extended Mode for keys(all note reponse) or non extended with offset and length. 1 velocity response for each voices (so 2) with optional CC assignment Free controller assignments to Modulation Wheel and Aftertouch LFOs, Envelopes, Arpeggios optionally syncable via external MIDI clock (one for each;) Bankstick support (4 banks of 128 sound patches per stick, up to 8 can be connected) so 32 banks. And much more. Coming soon: wave and CC sequences which allow more percussive sounds (Wavetables) with dedicated banks. Drum or Fx Kit Presets with dedicated banks. 8 Analog I/O 4bit sampling Atari 2600 Joystick and Video touch pad support. There's no CS on the cartridge version, but there's enough room in FW to add it. If someone wants to create it, you are welcome. This firmware is only for 18f4685. You can add MB-Link too if you need it, PORTA.0-7 and PORTB.0-3 share 8 I/O on the AUX connector. No CS; but I designed a Max/MSP Application (windows and Mac compatible): And it has iDevice support(sorry for those who boycott Apple products): I'm trying to finish a Max4Live version, with a common file between both applications that will retrieve the names of banks, patches and all parameters without having to open the input of the midi track and make a CC request (there's no SysEx in Ableton Live). Now i suppose you want to hear it: http://soundcloud.com/bdupeyron/mb-tia-mantua-preset Voilà!!!
  6. I'm requesting help with completing the final remaining bugs in the TIA emulation in Stella. First of all, a little background and the reason I'm asking for help. I've been working on the project for many years (over a decade, in fact), and while I've made improvements to the TIA emulation, I've reached my level of understanding of the code. I can easily understand what the code is doing, just not always why. And without the why, I have no hope of making further improvements. This request was prompted by my situation as described in another thread. Basically, I'm on the verge of burnout in this area, and would like to finally complete this part of the emulation so I can move on to other parts of the code. The alternative from my POV is to walk away from the project entirely before I burn out completely. Please help me avoid that path. Anyway, I suspect this will be a long, ongoing thread, and that I will have to add info to it quite often, as I'm very familiar with the codebase and probably not many other people really are. So, where to begin? Current issues with the TIA emulation The biggest issue is changes to NUSIZx registers after drawing has already began. The core needs to track when drawing started, and then when NUSIZx is changed, update what is drawn from that point on (keeping in mind that sometimes the NUSIZx write will change the output and sometimes it won't; it depends on the timing). There are related issues with RESPx, and I suspect for very similar reasons. How can the code be viewed The ideal way (and what I personally request) is to download the code from the Stella repository, set up a compile environment, and compile/run/test it. The repo (latest version) is located at https://stella.svn.sourceforge.net, and can be checked out at https://stella.svn.s...stella/trunk. The relevant files are TIA.hxx, TIA.cxx, TIATables.hxx, and TIATables.cxx. How does the current TIA emulation work The TIA code makes extensive use of tables, where (as much as possible) conditions are precomputed once, upon TIA creation. These tables essentially create 'masks' that define, for the given conditions, how the graphics should be drawn. For example, take the following example of the BALL mask for the current conditions: myBLMask = &TIATables::BLMask[myPOSBL & 0x03] [(myCTRLPF & 0x30) >> 4] [160 - (myPOSBL & 0xFC)]; This looks complicated, but is basically determining how the ball will look given the current position (myPOSBL) and playfield control register (myCTRLPF). Since the behaviour of the ball is deterministic based on position and playfield register, the state can be precomputed. Another example of setting the player0 mask: myP0Mask = &TIATables::PxMask[myPOSP0 & 0x03] [mySuppressP0][myNUSIZ0 & 0x07] [160 - (myPOSP0 & 0xFC)]; Here, the player0 object state is a combination of 3 things: current position, suppression, and NUSIZx. Suppression in this sense is (I believe) whether the first copy of the player should be suppressed. Since this depends on other factors, it must be decided at runtime. In fact, I believe this is part of the issue; the mySuppressP0 and mySuppressP1 booleans aren't being updated when they should. I suspect this because of the following comment on line 1151: // See if we're at the end of a scanline if(myClocksToEndOfScanLine == 228) { // TODO - 01-21-99: These should be reset right after the first copy // of the player has passed. However, for now we'll just reset at the // end of the scanline since the other way would be too slow. mySuppressP0 = mySuppressP1 = 0; } Similarly, the following is from the update of NUSIZ0: case NUSIZ0: // Number-size of player-missle 0 { // TODO - 08-11-2009: determine correct delay instead of always // using '8' in TIATables::PokeDelay updateFrame(clock + ; myNUSIZ0 = value; mySuppressP0 = 0; break; } The '8' in this case seems to be a delay that corresponds with the majority of ROMs. However, it doesn't work for all of them. If I play with the number, some of the ROMs that don't display correctly suddenly start working. While this doesn't definitely confirm that this is the issue, it lends to the conclusion that this shouldn't be a hard-coded value, and instead should be calculated at runtime based on current state. Anyway, that's probably enough info for now. I would like someone knowledgeable in C/C++ to look at the TIA.cxx class and help me understand what's going on. The class is 2000+ lines of code, but I think the issues are localized to perhaps 100 lines or so. And I can point them all out. But before I do that, I welcome feedback/questions, etc. Thanks in advance for any help you can provide. EDIT: I've added more detailed instructions for checking out code, compiling it, etc on the Stella Development webpage.
  7. https://www.dropbox.com/s/e0kt2uihubvd3h9/dbASF.mp3?dl=0 https://www.dropbox.com/s/2xqr51wq3f8rivs/dbAS.bin?dl=0
  8. Can someone clearly explain the bit pattern for TIA audio distortions 2 and 3? This is what I know so far: Distortion 2: 001010000111011->0100000000000000000100000000000 (465 bits long) Distortion 3: 001010000111011->0010110011111000110111010100001 (465 bits long) These are named "DIV31_POLY4" and "POLY5_POLY4" in the tiasound.c document. <http://web.archive.org/web/20120705120940/http://mamedev.org/source/src/emu/sound/tiasound.c> What exactly is going on here? Also, I noticed that distortion 11 is called "POLY5_POLY5", even though it makes no sound (same as distortion 0). Any reason that name was chosen? The only reason I can think of is that it matches up with distortions 2, 3, and 10: 2 = "DIV31_POLY4" 3 = "POLY5_POLY4" 10 = "DIV31_POLY5" 11 = "POLY5_POLY5"
  9. So, I know that the main CPU runs at 1.19 Mhz, and I also know that the TIA is 3 times as fast as the 6507, so it runs at 3.57 Mhz. How would I figure out how long a single color clock takes to execute?
  10. In Haunted House I see this bit of code being executed (in both Stella and my own emulator): F44E INY F44F SBC $0F F451 BCS F44E That SBC is reading from address $0F. This is in TIA, but there is no readable register there. So what does this read? My own emulator returns zero and so the code hangs. But Stella seems to not hang. When I read the Stella source it looks like this returns (depending on settings) something randomised or what was left on the data bus from before (though I don't fully understand how something can linger on the data bus). As the last thing on the bus was (I think) the $0F of the SBC instruction, it ends up subtracting $0F. That seems pretty weird. Anyone know what's going on here? Im the end I hard-coded a read from $0F to return $0F in my emulator and now I can play Haunted House in it. -- Dan
  11. I'm considering adding better limits for the TV/TIA emulation, since quite a few people have been messaging me about it. Basically, Stella treats a ROM as NTSC or PAL, with an upper limit for scanline count for each mode. Problem is, all counts are treated equally. For example, if a game runs at 262 lines, then it's a proper NTSC signal at 60Hz. However, if it runs at 280 lines, it's still an NTSC signal, and is rock-solid in emulation. On some TV's, though, this will cause a roll. So my question is, what are the upper limits for screen roll? I know it won't be a single number (some TV's will have different behaviour), but I need a number to default to.
  12. I found a scan of a VCS programming guide from Coleco. I 'collect' all the tech docs about the VCS that I can find on the web and while I had quite a few versions of the "Stella Programmer's Guide" from Atari I never saw this one before. The file can be found on "The ADAM Resource" website in the technical manuals section. The doc is called "Coleco TIA.pdf", it lacks a few pages which are on another file "Coleco TIA Schematic.pdf" on the same web page. I haven't read it entirely yet, so I could be wrong, but I think the only reference to Coleco is in the filename. TIA is referred to as VIC (Video Interface Circuit) It seems to me more detailed than the Stella Guide in describing the VCS workings (it also include code snippets in asm), so it might be useful for someone learning VCS programming. The only drawback is that it uses different names for the TIA registers and graphical objects than the 'standard' ones. Here's a corrispondence table: Object A,B -> Player 0,1 Projectile A,B -> Missile 0,1 Border -> Ball Foreground -> Playfield TIA registers: VBLNK = VBLANK HSYNC = WSYNC CRHOR = RSYNC OBASR = NUSIZ0 OBBSR = NUSIZ1 CLROA = COLUP0 CLROB = COLUP1 CLRFB = COLUPF CLRBG = COLUBK BDRSZ = CTRLPF OBADR = REFP0 OBBDR = REFP1 FGNDA = PF0 FGNDB = PF1 FGNDC = PF2 CROBA = RESP0 CROBB = RESP1 CRPJA = RESM0 CRPJB = RESM1 CRBDR = RESBL SNDAS = AUDC0 SNDBS = AUDC1 FREQA = AUDF0 FREQB = AUDF1 LVLSA = AUDV0 LVLSB = AUDV1 OBJAF = GRP0 OBJBF = GRP1 PJAEB = ENAM0 PJBEB = ENAM1 BDREB = ENABL HMOBA = HMP0 HMOBB = HMP1 HMPJA = HMM0 HMPJB = HMM1 HMBDR = HMBL OBARS = VDELP0 OBBRS = VDELP1 BDRES = VDELBL PJATK = RESMP0 PJBTK = RESMP1 HMENB = HMOVE HMRST = HMCLR OCRST = CXCLR I integrated the pages from the two PDFs into a single document in the correct order and also rotated those with diagrams in landscape orientation to make it easier to read on a PC monitor. I always prefer the DJVU format for scanned documents as it results in smaller file size and the viewer software is lightweight and fast even on old pc, so I converted the document in this format. I added OCR text as well so it is now searchable. Here is the link of the fixed file, I also included a PDF version, but it lacks the OCRed text. DJVU PDF
  13. These are some single-channel songs that use variables to switch the noise in controlled intervals alongside the song... (this way the other channel is free to use for sound effects.) 4.bin 11.bin 12.bin 13.bin 17.bin 19.bin 21.bin I think these rock pretty hard for a stock TIA!! Most are variants of Titan Axe songs that I wrote and enhanced. These will be in my next game after Run Out! is complete (an RPG that I can't wait to bring out!!).
  14. Hello there, I'm new here and new to Atari dev, but not new to 6502 assembly. That being the case, I am focusing a lot on the architecture of the TIA and the complexities of writing a decent kernel. After reviewing this site's 2600 101 tutorial, I am a bit confused on the "dos and dont's" of when exactly to perform certain functions. The examples given define what the TIA is doing, but I am hoping for a more comprehensive workflow so that I can visualize when it is best to perform game logic. In the NES world, you are a bit more shileded from TV protocol. For instance, when the TV hits VBLANK, you automatically go into an NMI. I use this time to handle all of my drawing and the main game loop for my logic. I'm happy to not use interrupts for a change, but I don't fully grasp WSYNC or HBLANK and what have you. I guess what I'm asking for is a better kernel example with documentation that provides best practices. Later down the line, I will develop my own tricks, but I would rather not reinvent the 30 year old wheel
  15. I found most emulators have sound that is accurate to the hardware, and the TIA involves two channels with a 9-bit polynomial counter each. The TIA involves 16 waveshape selections, with most of them duplicated and some silent. These range from pure squares, to buzzy tones, to white noise. But the problem is, every doc I found on the internet does not provide the exact timbral or feedback taps that give the sounds their accuracy. If any TIA emulator developer knows of these, let me know immediately!
  16. So, just like we (the Stella team) posted a thread about improving TIA graphics emulation, we now also want to start on TIA sound emulation. This work is documented at https://github.com/stella-emu/stella/issues/80. Last year, some code was donated to Stella from crispy (Chris Brenner) from his FPGA work. At the time the TIA emulation core wasn't properly structured to make use of it, but now it is. As a result, Christian Speckner (DirtyHairy) has ported the code to Stellerator. The initial results are very good; many test ROMs that didn't sound quite correct are now properly emulated. So now work begins on refining this code, and porting to Stella. What we need are test cases. That is, ROMs that illustrate where the current sound emulation is inaccurate/incorrect. We'd like you to test in Stellerator and in Stella 5, and (potentially) with new test builds of Stella as they become available. Please try to be as specific as possible when describing the issues (keeping in mind that it's hard to 'describe' sound). I'll start with some ROMs we already know about, in no particular order: phaser06: correct in Stellerator, in Stella 5 the sound is 'idealized' and sounds much nicer than it should tremolo: correct in Stellerator, left and right channels are properly 'mixed' and interfere with each other E.T.: sounds much better in Stellerator Ms. Pac-man: correct in Stellerator, there is now distortion from the analog mixing of left/right channels. In Stella 5 the sounds is 'better', but it is idealized and not like a real console. Remember, just like when we were improving the TIA graphics emulation, the more test ROMs and cases we get, the better the results. So get testing
×
×
  • Create New...