This is an attempt to make a complete, and playable atari emulator entirely in python and some common modules. Currently, it only requires PyGame 1.5.0 and Numeric.
Be the first to post a text review of pyTari. Rate and review a project by clicking thumbs up or thumbs down in the right column.
Ok, long time without updates, and I can assure you I am still working on the project. First off, I've done some work on the TIA emulation, and things work a lot better now. Most of the work has been on the TIA register viewer, and it's almost finished. I have internet in my house now so making updates should be a lot less painful now. There are some bugs in the way that addressing modes are handled in some of the indirect modes, like ($00, X) . That is the only one I've confirmed to be failing. Shouldn't take long to crack that one open though. As soon as I get that fixed, and the TIA viewer done, I'll release a package.
(10-16-2002) This release is all about working out bugs in the emulation, not adding features. I will only be adding things if it makes it easier to debug. I implemented player graphics, and they appear to work. Alien's Revenge displays at least one frame correctly, I'm very stoked about that. Added Vertical delay graphics to the player Modified the Panel constant to simply return Beginner, Color, No reset / select,Adventures of Tron would infinately loop because it was constantly being reset. (10-17-2002) Ironed out several kinks, mostly stupid mistakes (forgetting parens, order of ops, not being logical, not bitwise, using the wrong variables, etc), also, the TIA runs at 3x the speed of the CPU and RIOT, I failed to remember this, which resulted in graphic errors on delicately timed writes (adventures of tron). Fixed that as well. I also made a function that runs the atari 59736 (I actually have that number memorized now) (TIA) cycles per frame, which is as real-world as it's going to get. I generally avoid using that because it draws WAY too much CPU time without doing an event dump. The TIA also now has a back buffer, that is automatically transformed into something a real projection (flipped, rotated, and scaled). This also occurs only once per blanking period, so it should in THEORY be a wee faster. There is no vertical delay on the ball currently. This isn't too big of an issue seeing as I can't even get the player graphics to display properly. I think it's a palette issue.... maybe not though. On a side note, the Adventures of Tron title screen displays near perfectly (No copyright information in the lower right corner) I've also geared my priorities to debugging the processor cores. Input is silly to write if I can't even run software to use it in. I actually read up on numeric's slicing... and dang it, I didn't know you could actually create slices in multiple dimensions. So, now there is only a scale transformation applied. (10-18-2002) I rebuilt the palette generators, fixed some bugs, and hopefully made it a wee more accurate. I know it wouldn't work on certain parts. (10-22-2002) Started work on the TIA debugger, displays some neato keen information on what it is currently doing. No numerical outputs though. I'll get to that eventually. I'm basicly done with the release, I want to flesh out the debugger functions a wee more before I make another release. I really need to clean up the container atom for chemistry so it's not so horrendously slow to open the memory viewer.
Ok, I have a memory viewer that SORTA works, and a good start on the disassembler output. The memory viewer is seriously gimped out right now, so I'm going to iron out kinks in it before I even think about a release (seg fault / core dumps) I made a work around the problem (has to do with pygame, sub surfaces in sub surfaces and blits, weird) Ok, no more 'I'll release in a week' crap. This is what I'm going to do: 1: Get the Register and Disassembly views up and running, possibly with 'step' and such buttons 2: Get the panel window done 3: Finish the Joystick input pump 4: Make joysticks configurable 5: Finish TIA signal generators 6: Make a TIA frame buffer viewer These are my goals. I don't know how long they will take me. I'll throw in a teaser screenshot when I can get a disk from my house to the computer lab with the required PNG on it.
I'm still working. I want to at the VERY least get a graphics window up and running before I make the first release. There are very few things missing in the TIA emulation, namely the pattern generators for the players and the playfield. The only reason I've not done this yet is because i'm attempting to find fast mirroring techniques that don't require multiple copies of the player, along with stretching. I've been focusing on creating debugger functions (simple dissassembly, ram viewer, register viewer is planned) so I can validate the CPU core and other various goodies. I've also been revamping the cart system to work on slices rather than ORing in an offset. I think this method might be faster, it also provides the ability to have a consistant buffer for a disassembly output. I'll probibly also throw together a 'Panel' window with the 3 switches (Difficulty 1 and 2, and Color) This would all probibly be finished but I do have another job.
CPU (Doc/Undoc): 100% / 0% RIOT: %95 TIA: 75% INPUT: 10% GUI: 100% Interface: 30% As of right now, pyTari could in theory run games. It doesn't generate graphics for the playfield, or player objects, but everything else on the TIA is complete. I have 'silent' sound emulation, since pygame's realtime sound system is crippled. The GUI is done, it can handle anything I can throw at it without any noticable bugs. I just need to slap together some dialogs and such to handle the UI. The Event pump does everything but forward input to joysticks. The is no display of the frame buffer to the screen. Other than that, the project is ready for release. If I'm not done in a week, I'll throw up what I have now, just as a show of good fortune. I do need to stitch in the GNU licence before release though.
Be the first person to add a text review.
Copyright © 2009 Geeknet, Inc. All rights reserved. Terms of Use
Thanks for your rating!
Would you also like to write a review?