Jump to content

Search the Community

Showing results for tags 'stella'.

More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


  • 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
  • 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
  • Arcade Gaming's Discussion
  • 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
  • The Green Herb's Discussions
  • Robin Gravel's new blog's My blog
  • Atari Video Club's Harmony Games
  • Atari Video Club's The Atari Gamer
  • Atari Video Club's Video Game Summit
  • Atari Video Club's Discsuuions
  • Star Wars - The Original Trilogy's Star Wars Talk
  • DMGD Club's Incoming!
  • DASM's General
  • AtariVox's Topics
  • Gran Turismo's Gran Turismo
  • Gran Turismo's Misc.
  • Gran Turismo's Announcements
  • The Food Club's Food
  • The Food Club's Drinks
  • The Food Club's Read me first!
  • The (Not So) Official Arcade Archives Club's Rules (READ FIRST)
  • The (Not So) Official Arcade Archives Club's Feedback
  • The (Not So) Official Arcade Archives Club's Rumor Mill
  • The (Not So) Official Arcade Archives Club's Coming Soon
  • The (Not So) Official Arcade Archives Club's General Talk
  • The (Not So) Official Arcade Archives Club's High Score Arena
  • Adelaide South Australia Atari Chat's General Chat & Welcome
  • Adelaide South Australia Atari Chat's Meets
  • Adelaide South Australia Atari Chat's Trades & Swaps
  • KC-ACE Reboot's KC-ACE Reboot Forum
  • The Official Lost Gaming Club's Lost Gaming
  • The Official Lost Gaming Club's Undumped Games
  • The Official Lost Gaming Club's Tip Of My Tounge
  • The Official Lost Gaming Club's Lost Gaming Vault
  • The Official Lost Gaming Club's Club Info
  • GIMP Users's Discussion


There are no results to display.

There are no results to display.


  • 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


Last Updated

  • Start


Filter by number of...


  • Start










Custom Status



Currently Playing

Playing Next

Found 63 results

  1. So, it's time for a new release of Stella. This time we're trying to do smaller releases a little more often, rather than having a 6 month - 1 year gap between them. So the changelog will be shorter. There are changes all across the board. Some new bankswitching schemes, some debugger/developer improvements, UI improvements/re-arrangements, etc. Also now implemented is the ability to change the phase shifts for generating the TIA palettes, and the ability for PAL games to use 50Hz fullscreen mode (when supported), to reduce judder. Anyway, here's the full changelog: Added interactive palette to Video & Audio settings. Added 'Custom' palette, generated from user controlled phase shifts. Added that adjustable audio & video settings are displayed as gauge bars. Added four global hotkeys which allow selecting and changing numerous audio & video settings without having to remember the dedicated hotkeys. Added 'Turbo' mode, runs the game as fast as the computer allows. Added that paddle centering (per ROM) and sensitivity can be adjusted. Added that mouse sensitivity for Driving controller can be adjusted. Added paddle filtering in UI to avoid unwanted navigation events. Added selectable dialog fonts. Added separate positioning of launcher, emulator and debugger. Added optional display to game refresh rate adaption in fullscreen mode. Added option which lets default ROM path follow launcher navigation. Added debugger 'saveaccess' function, which saves memory access counts to a CSV file. Added displaying last write address in the debugger. Added debugger pseudo-register '_scanend', which gives the number of scanlines at the end of the last frame. Added detection of color and audio data in DiStella. Restored 'cfg' directory for Distella config files. Added TV Boy and 3EX bank switching types. Removed unused CV+ and DASH bank switching types. Added support for loading grayscale PNG images in the ROM launcher. As usual, Stella can be downloaded from https://stella-emu.github.io/downloads.html, and donations are appreciated at https://stella-emu.github.io/donations.html. Please report any bugs directly to Github (https://github.com/stella-emu/stella/issues) or here.
  2. Somewhat unrelated, but I suppose I find the right audience here best. If it makes sense, we should enhance Stella to support it too. Assuming it does: How do you code for the Quadtari work? Is there any documentation or example code somewhere? And help welcome!
  3. Currently I'm working on completely rewriting the burger logic code in Chaotic Grill. I've run into an issue where the variable labels in Stella don't match the variables defined in a DASM "SEG.U vars" set. At first I thought it was a bug in Stella, but then I realized that my new title screen variables overlap with the main game variables and are defined later in the code base, which probably causes the issue. The main game variables are: - defined in a SEG.U vars segment - defined as: chefState ds 1 OR enemyY ds 4 The title screen variables are: - defined after the main game variables - defined outside the SEG.U segment - defined as chefState = $87 Now I realize I'm might be shooting myself in the foot by using two different methods to define variables... but I've only recently switched to using SEG.U with the main game variables and haven't gotten around to cleaning up the other areas of code that define their own variables. What are my options for "forcing" Stella to use a certain set of variable labels? Currently I'm just using the DASM built lst/sym files.
  4. ... because hyperkin can't help me, I turn to the community! 🙂 This console seems to have a life of its own. As if he chooses when he wants to work or not. First of all: the included SD card was damaged. Both the R77 and my computer were unable to read it. So I put another SD card (with the Hyperkin firmware) in the console and that seemed to work. Yes! A day later I ran into another problem: the console just won't start. Switching on and off ten times seemed to work for a while. But after that it really didn't work anymore ... example After some research on this forum I came up with a 'community build' Stella 6 firmware. I flashed this firmware on the SD card. And wow! SO MUCH BETTER 😀 !!! and the Retron 77 did it again. But then I ran into the same problem again: the Retron 77 stopped working a day later ... but after re-preparing the SD card with Stella 6, it worked again. And then a day later ... again the same problem. I've already tried several things: all older firmwares (including the Hyperkin firmware). Every time the Retron stopped working a day later. So weird! It doesn't make any sense ?!!! I also don't find any of these bugs on the internet. I would also like to unscrew the console to view the circuit board, but I'm afraid I will lose my warranty. Does anyone ran into the same issue?
  5. OK, it's finally here, the "Corona" edition of Stella, to keep you all busy during your extended isolation First of all, this release was over 1 year in the making, and I want to single out the other members of the team that have put in more work than me: @DirtyHairy and @Thomas Jentzsch. Due to some personal, real-life issues, I wasn't able to dedicate as much time to this release as I'd have liked, and that's partly the reason why it's so late. Hopefully this can improve for the future. Now, where to begin? There are major improvements all across the board here, with some subsystems being completely rewritten. So here's the changelog: * IMPORTANT NOTES: - Because of major event remapping changes, all remappings will be reset to defaults; if you had custom mappings, they will need to be re-entered again. - Because of major internal changes, all state files are now invalid. - Support for Windows XP has been discontinued as of this version. WinXP is now completely out of support from Microsoft, so we are doing the same. * Major improvements to display mode handling in NTSC vs. PAL. The window is now the same size for both modes, and scaling is applied to simulate the height of scanlines (in PAL mode, there are more scanlines and hence each is narrower). This more properly emulates how the display would look on a real TV. * Removed the 'Display_Height' property, changing it to 'Display_VCenter'. This new feature, along with the display mode changes above, almost completely eliminate having to manually tweak each ROM so that it will not have part of the image cut off. * Removed the 'Display_YStart' property and all automatic detection of ystart. It caused problems on some ROMs, and was not the way a real console would work anyway. Related to this, ROMs now load much faster. * Major improvements to event remapping: - Allow mapping of modifier-key and button-direction combinations - Physical controllers can map the same action to different events on different virtual controllers - Many more events can be remapped - Events can be filtered by type in UI * Paths have been simplified: - The following file/directory locations are no longer configurable (statedir, nvramdir, cheatfile, palettefile, propsfile); they are now all under the base directory - Removed cfgdir; Distella config files are now placed with their associated ROMs - Added 'basedir' commandline argument, which allows to change the base directory where almost all config-related items are stored; related to this, discontinued the 'basedir.txt' functionality - Added 'baseinappdir' commandline argument, which sets the base directory to the application folder (Windows only for now); this replaces the functionality of 'basedir.txt' * Added automatic controller detection. * Controllers can be changed during emulation (no ROM reload required anymore). * Added support for Light Gun controller. * Added limited KidVid support (8, 9 and 0 start the games). * Removed superfluous controller option 'PADDLES_IDIR'. * Added configurable paddle dejittering. * Key-repeat mode improved; entering Time Machine by holding down a key combo continues to send events (previously, you had to release and then press the combo again). * Certain buttons in the UI can now be activated repeatedly by holding down the mouse button (Time Machine, debugger step/trace/frame advance, etc.) * Added option to configure mouse double click speed. * Added option to configure controller input repeat speed. * Added high quality scaling. * Made scanlines better aligned to scaling. * Added 'HiDPI' mode, which scales the UI by 2x when enabled. This is meant for 4k and above monitors, but can actually be used at any lower resolution that is large enough to display the scaled UI. * Fixed TIA 'Center' option, Stella now remembers the last windowed position. * Added fractional (25% increments) TIA zooms. * Removed 'tia.fsfill' option, replacing it with 'tia.fs_stretch'. This new option allows to preserve TIA image aspect ratio in fullscreen mode, or stretch to fill the entire screen. * Added configurable 'Overscan' option for fullscreen modes. * Fullscreen TIA modes no longer assume that desktop taskbars, etc are present, hence they are scaled to the proper fullscreen size. * Added option to display dialogs in screen corners. * Added hotkey for sound on/off. * Enhanced 'Command' menu to display current state and more commands. * Added option to save and load all TimeMachine states at once. * Added option to automatically load/save states when entering/exiting emulation. * Added option to change pitch of Pitfall II music. * ROM Info Viewer size is not limited to fixed zoom steps anymore. * ROM Info Viewer can now display multiple lines per property and the bank switching type. * In file listings, you can now select directories by holding 'Shift' on the first character entered. Entering characters in lowercase still selects files, as before. * Fixed bug when starting ROMs via MacOS finder. * Added various developer options for oddball TIAs: - stuffed player, missiles and ball move - delayed playfield bits and color - delayed players and ball VDEL swap * Disabled some developer options for 'Player settings'. * Writes to RAM read ports are ignored now. * Added Developer setting, which breaks on writes to read ports. * Improved breakpoints to now consider the banks. * Improved debugger's TIA display and zoom windows. * Improved hotkeys, now many emulation keys work in debugger too. * Fixed display of negative values in debugger; sometimes they were shown as positive. * Reworked ROM properties database, making it load faster in certain cases. * Updated internal ROM properties database to ROM-Hunter version 16 (thanks go to RomHunter for his tireless research in this area). Related to this, updated the snapshot collection. * Fixed 'Dancing Plate (Unknown) (PAL)' to use joystick. * Fixed cheatcode handling in 2K and 4K ROMs. * Fixed bug where ROMs smaller than 64 bytes were not recognized. * Fixed bug where frying one ROM was continued with the next ROM. * Fixed not working 7800 pause key. * Enhanced UA bankswitching to support certain Brazilian carts. * Fixed WD bankswitching. * Added FC bankswitching for Amiga's Power Play Arcade Video Game Album. * Added auto-detection of display format based on filename. * Auto-detection of bankswitch scheme by file extension now includes more human-readable formats (not restricted to DOS 3-char length). See the documentation for the new names. * Fixed bug in DPC+ scheme; 'fast fetch mode' was enabled at startup, when it should be disabled by default. * Some more work on DPC+ playfield 'jitter' effect for certain older DPC+ driver versions; more ROMs are now detected properly. Special thanks to SpiceWare for his research in this area. * Added proper Retron77 port. * Added proper libretro port, and fixed display for OpenGLES renderers. * PNG/ZIP image support is now conditionally compiled into Stella. All major ports (Linux/macOS/Windows) have it enabled by default. * SDL/GUI support is now conditionally compiled into Stella. All major ports (Linux/macOS/Windows) have it enabled by default. This is currently needed by the libretro port. * Updated included PNG library to latest stable version. * Updated UNIX configure script to work with the gcc version 10 and above. As usual, Stella is available to download at https://stella-emu.github.io, and donations are accepted at https://stella-emu.github.io/donations.html. Feel free to respond here with any issues you find. You can also PM, but feedback here is better, so everyone can see it (and to eliminate duplicate reports). Enjoy
  6. New palettes for Stella - Stella257 & Stella267. Both palettes contain updated NTSC and PAL colors, SECAM retains the standard Stella settings. Stella257 has the 180 degree colorburst in place resulting in 1$ and F$ being a near exact match (Visually they will appear exact to most). Stella267 closer represents the standard Stella palette having a slight phase shift from the 180 degree colorburst, providing the most noticeable change to F$ - darker browns in comparison to 1$, and E$ - giving a more neutral balance between a green and brown hue, instead of a stronger green presence under Stella257. There is no manipulation of contrast, brightness, or gamma for these palettes. Stella has internal controls to handle that Download the palettes here: Stella2XX_Palettes_20130911.zip Screen captures to follow (click pics to enlarge and remove distortion) are in this order: Stella (Standard) --> Stella257 --> Stella267 Color Bar Generation (1984) (VideoSoft) (NTSC) 'Title Screen' & 'Color Bars' [Composite mode @ Stella default values] Color Test (26-09-2002) (Eckhard Stolberg) (NTSC) [Composite mode @ Stella default values] [TV mode disabled (AKA RGB)] Color Test (26-09-2002) (Eckhard Stolberg) (PAL) [Composite mode @ Stella default values] [TV mode disabled (AKA RGB)] Enjoy.
  7. I use a mouse for 2600 games that normally use a paddle (Warlords, Kaboom,etc). but the direction is reversed....left is right and right is left. I have the full Stella users manual but don’t see where I could reverse that so left=left and right=right. I’ve tested a bunch of setting changes with no luck! any suggestions? Bob
  8. After an extremely long time since the last release, we now have a new release candidate for what will become Stella 6.1! I'm not going to go into the entire (huge) changelog here; that will come when we do the final release. For now, I will stress the most important new additions that need some testing. That's the main goal of this release: test, test test. So what do we need tested? Here are the highlights: Video mode handling in NTSC and PAL modes has been completely reworked, 'ystart' setting has been removed, etc. The window is now the same size in both NTSC and PAL modes (simulating a real TV), and in PAL mode the scanlines are vertically shorter, since there are more of them. What we need tested here is to play as many games as possible and make sure the image is correctly displayed. If possible, confirm it on real hardware too. The event remapping subsystem has been completely reworked. You can now map the same action on a controller/keyboard/etc to different virtual controllers. So for example, joystick button 0 could mean 'Fire' when using a virtual joystick, but mean something completely different when using another type of virtual controller. So play a bunch of different games (using different controller types), remap them, and make sure it all works. There is now a 'first-class' port for the Retron77. That means that going forward, when we do a new release, it will (hopefully) included a build for the R77 as well. Please test this if you have an R77. There is now a 'first-class' port for libretro. This one still needs some extra work, but it's already working quite well. If you use RetroArch, please download the latest core and try it out. Note that since we don't control when RetroArch does a release, there may be some lag in when we release and when they pick it up. Of course there are many other changes (dozens), and you should try everything out and report any problems. But the stuff above contains the major changes and has had the least testing, so that's where we want feedback the most. The release candidates aren't on the Stella main webpage, but on Github. The addresses are https://github.com/stella-emu/stella/releases/tag/6.1.0-rc1 and https://github.com/DirtyHairy/r77-firmware-ng/releases/tag/stella-6.1.0-rc1. As usual, feel free to respond here. You can also PM, but feedback here is better, so everyone can see it (and to eliminate duplicate reports). So go forth and test Just a reminder that state files, event remapping and many other settings are not compatible with Stella 6.0, so when you do testing here, it will overwrite your old settings, and you won't be able to go back (unless you backup your settings first).
  9. Exactly ten years ago, I made my first Thrust post to the [stella] mailing list. Thrust_v0_1.bin
  10. Stella 4.1 is now available; it contains a few nice improvements over the last release. Unfortunately, I'm still trying to track down the 'joystick not found' issues, so that hasn't been addressed in this release. Changes are as follows: As usual, Stella can be downloaded from the Stella webpage, and donations are always welcome.
  11. Trebor

    Stella 4.0

    Go get it folks Don't forget to thank Stephena - A donation would be an ideal way.
  12. Hi I'm working on a project needs Display_Phosphor = YES. Is there some way to have Stella automagically pick up on that? I tried adding a file named pal.pro next to my pal.bin file, with this contents: "Cartridge.MD5" "324f559ec4e6da7392371400e9b73111" "Cartridge.Name" "pal" "Display.Phosphor" "YES" "" That didn't work, unfortunately. Digging through the code I can't find a way to do this. I can ship .bat and .sh files for users, but I'd rather not have to. Am I missing something? If this functionality is indeed missing then perhaps I'll write a patch for it.
  13. until
    WHAT: 12 Hour Gaming Marathon Fundraiser for Stella Development WHEN: Friday July 12, 2019 (Noon to Midnight PT!) STARTS: 12PM PT | 3PM ET | 7PM GMT ENDS: 12AM PT | 3AM ET | 7AM GMT WHERE: ZeroPage Homebrew Twitch Stream ZeroPage Homebrew will be streaming a 12 HOUR homebrew gaming marathon fundraiser on July 12, 2019 for the continued development of the amazing Atari 2600 emulator Stella. Stella development began in 1996, is maintained by Stephen Anthony (stephena), and many contributors have put in the their time, equipment and dollars over the years towards its continued success. 100% of all funds raised through auctions and donations will go to the Stella project! Over the twelve hours of the marathon the crew at ZeroPage will be playing all your favourite homebrews, talking with game developers and community members via live video, taking gaming challenges from the chat, trying for new highscores and generally having a ton of fun. We'll also be auctioning off a whole bunch of generously donated items to help raise funds for the incredible work that's being done on Stella. Supporting the development of Stella not only provides you with an amazing Atari 2600 emulator to play all your favourite old school and new homebrew games, it's also and incredibly important tool in the development of new games for your VCS! Stella has a large number of helpful utilities under the hood to help troubleshoot and analyze issues during the process of making a game. By supporting Stella, you're helping accelerate the development of games and push games to further and further heights! CLICK HERE FOR MORE INFO!!
  14. Hey everyone, I'm very new to programming with assembly. Anyways, from the tutorial in this section of the forums I played around with the first kernel that is presented in Session 8. I made the lines alternate their colors with it. I ran it with SECAM60 after being satisfied, and wow is it an eyesore. I attached an image of the screen when I ran it. Challenge: look at the SECAM60 screenshot for 30 seconds and then turn away. pantomchap_test_game_5-17-2017-2.27PM.bin
  15. And now for something completely different: a shameless plug. There is a Stella fundraiser (dubbed 'Stella-thon') happening tomorrow, July 12. Info is available at Please consider a donation or making a bid on an item.
  16. I feel ridiculous for asking such a noob question, but nothing is working. I just got a new Windows 10 laptop, so maybe it is is Windows 10 learning pains? I installed 64-bit Stella. Made a shortcut and attached a cute 2600 icon to the shortcut. Pin the shortcut to the Start menu. Icon is the default Stella Atari symbol. Unpin the icon and delete the icon cache. Restart. The shortcut shows the proper icon, so pin it to the Start menu. Icon in the start menu is the default Stella Atari symbol. Any ideas what is going on?
  17. So it's time for a new release of Stella. I've been sick over the past few months, and didn't get to work on Stella as much as I'd have liked. Anyway, here it is: A number of bugs from the '4.6.5 release thread' have been fixed, but there's still a few more to go. As usual, Stella can be downloaded here, and donations are welcome here. Feedback can be in this thread or by PM.
  18. Here's another release of Stella, fixing/adding a few things I missed in the last release. Changes are as follows: As usual, bug reports can be reported by PM or here in this thread. Download the latest Stella here, and donations are greatly appreciated.
  19. So, it's time for a new release of Stella. I'm still working on the improved paddle emulation as well as a new phosphor mode that looks much nicer than the current implementation. Those changes are taking a little longer than expected, so I decide to do an interim release now. Changes are as follows: As usual, Stella can be downloaded from Stella webpage; any donations are greatly appreciated. Issues, comments, bug reports, etc can be posted in this thread or by PM.
  20. I'm looking to improve emulation of Stella wrt INTIM/TIMINT. Almost all the test ROMs I have are working correctly, but a few cases do not. As well, all the test ROMs only cover a small portion of the values. What I'd like is to have someone provide test ROMs (Batari Basic preferred) that cycle through all combinations of reading and writing these registers, to see where Stella can be improved. Can someone offer some advice and/or help in this area?
  21. I'm looking for help in modernizing the Stella manual, making it look nicer as well as improving the layout, readability, etc. I know documentation is not something a lot people like to work on, but I'm hoping there's at least a few aspiring tech writers here. The main issue is that the current document is a single HTML file that's over 140KB! Ideally I'd like some of the following: break the document up into multiple files (chapters per topic, etc) improve the look with CSS, better fonts, etc improve the readability, looking at it from a users POV and see if it actually explains things improve the layout, again from a users POV, to make sure the more advanced topics aren't being presented when they aren't needed any other issues/problems that might need to be fixed I understand that this is a fairly big undertaking, and I appreciate any help anyone can provide. My only absolute condition is that the manual has to be static (no PHP, etc), as it will be viewed on client systems that don't have a web server installed. I can't offer any payment for this. I can only consider this as a Stella donation, and credit you in the Credits list. Please let me know if you're willing to take a stab at this.
  22. I am currently living in a small apartment, and my girlfriend will be moving in soon. In the interests of maximizing space, I am considering putting my numberous systems into storage and getting a nice emulation setup hooked up to my new TV. How anyone here ever done this, and did it work out for you? Now, what kind of a computer is needed for good emulation? I know next to nothing about hardware, and won't be building a machine. I'll just go to Best Buy when my tax refund comes back and buy a PC. Ideally, I would like to run stuff up to the Dreamcast era smoothly, if that can be done. If not, I'll settle for a machine that runs the classics. Any recommendations on an out-of-the-box machine that does the job? Also, any suggestions for controllers? Also, has anyone here had experience with a first-gen hacked Xbox? Thanks!
  23. Ok, it's time for another Stella release. I'm glad to say that Blargg TV filtering is finally available There are also some other nice changes, and a few bug fixes. Perhaps the biggest change other than Blargg is that this release marks the retirement of the Win98/2000 port. Unfortunately, this decision is final, and that port won't be coming back. As for the Blargg TV effects, please keep the suggestions constructive. There is more work to do in this area, and there are definitely improvements to be made, particularly with respect to the scanline emulation. Anyway, here's the changelog: As usual, Stella can be downloaded from the Stella homepage. Please consider a donation if you find Stella useful. Bug reports can be reported directly to me or in this thread.
  24. Hello, I'm trying to trigger HMOVE without RSYNC, still at the right time. I suppose there is a way to trap a write only after the first color clock cycles. But right how I'm stuck at breakif { (_ccycle > 3) && WRITEAT(HMOVE) } How can I tell Stella what to do at WRITEAT(HMOVE)? Or can I somehow combine trapwrite with a function? Or maybe something like thiis? function strobeccycle { (_ccycle > 3) ? HMOVE : $7F } trapwrite strobeccycle Ideas anyone?
  25. 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.
  • Create New...