Heaven/TQA Posted September 29, 2002 Share Posted September 29, 2002 Atari800win 3.0 plus... even for 5200... but 5200 guys here will recommend another one...because this emulator is perfect for atari computers but lacks in some 5200 specials like joystick routines... heaven Quote Link to comment Share on other sites More sharing options...
icbrkr Posted September 29, 2002 Author Share Posted September 29, 2002 I tried using MESS32, but I couldn't find an already compiled Win32 version of 0.61. I tried it on .37, but I couldn't get the joystick to work at all. If someone knows of a page with MESS32 .61 available for download, that'd work. Brian Quote Link to comment Share on other sites More sharing options...
calamari Posted September 30, 2002 Share Posted September 30, 2002 The most faithful emulator I've seen (and the one I've been using for 5200 programming) is Atari800 for MS-DOS, but I'd guess the Windows version is similar. It does the best job I've seen with music & sound effects, and also properly emulates the weird GTIA trick modes. It still has problems, they all do... it just seems to have less of them. And it's also open source, so if I wasn't so lazy I guess I could fix the bugs. calamari Quote Link to comment Share on other sites More sharing options...
+Cafeman Posted October 1, 2002 Share Posted October 1, 2002 Speaking as a 5200 programmer, I use VSS in MSDOS mode and Atari800win 3.0 (used to use 2.7 too) in 5200 mode. Atari800win 3.0 is the more accurate of the two. COLORS -- Atari800win is the more accurate, slightly. Both have incorrect palettes though -- Koffi's blue raindrops and eyes are green on the emulators using colors in the $70's or $80's I believe. VSS is more brilliant appearing, which caused me to use darker luminosities until I saw how dark they appeared on the actual 5200. Timing -- Atari800win seems very, very accurate in counting cycles. For an example of this, play the latest Koffi Yellow Kopter demo in both VSS and Atari800win 3.0. The brown mountains in the 'background' on stage 1 -- their peaks are disjointed from the body of the mountains in VSS only. This is because I change COLBK via a DLI, and the timing of which scanline it should start on is different between the 2 emulators. Atari800win's choice of scanline is the accurate one. Speed -- VSS runs a bit faster than Atari800win. Again, I think Atari800win's slightly slower speed is the more accurate one. That being said, I like playing Koffi in VSS more -- it's more bold and faster and louder. But I don't feel comfortable with new revisions until I've tested them on both Emulators. Quote Link to comment Share on other sites More sharing options...
icbrkr Posted October 1, 2002 Author Share Posted October 1, 2002 When I get back from the CinciClassic I'll have to try them both out.. of course, this is when I recode part of the game I'm working on. Nothing worse than spending hours bughunting and finding *nothing* wrong I figure I just did something way wrong and should probably find a better way of coding a routine. Brian Quote Link to comment Share on other sites More sharing options...
icbrkr Posted October 22, 2002 Author Share Posted October 22, 2002 Calamari: Could you give an example on how the Randomizer (RND) works? I see it being used but I don't quite get it. Where I'm having the issue is: DO 'return a random number from 0 to 9. A=RND A=A AND 16 LOOP UNTIL A<10 A=A AND 16 ... how does that produce a number thats between 0 and 9? Brian Quote Link to comment Share on other sites More sharing options...
DEBRO Posted October 22, 2002 Share Posted October 22, 2002 Calamari: Could you give an example on how the Randomizer (RND) works? I see it being used but I don't quite get it. Where I'm having the issue is: DO 'return a random number from 0 to 9. A=RND A=A AND 16 LOOP UNTIL A<10 A=A AND 16 ... how does that produce a number thats between 0 and 9? Brian I don't know 5200BAS but I assume the loop will keep going to the DO line. If so, then it will continue to get a random value until it's AND value is less than 10. Quote Link to comment Share on other sites More sharing options...
calamari Posted October 22, 2002 Share Posted October 22, 2002 DO 'return a random number from 0 to 9. A=RND A=A AND 16 LOOP UNTIL A<10 A=A AND 16 ... how does that produce a number thats between 0 and 9? A=A AND 16 is actually an error, it should be A=A AND 15, I have corrected it in the command reference, sorry about that. In any case that line isn't the one producing the random number. You could leave the A=A AND 15 out and you'd get a random number from 0 to 9, it would just take longer. Some background: I made RND with a simple equate to RANDOM. So A=RND is the same as A=RANDOM or A=PEEK($E80A). The memory address $E80A is the POKEY random number generator, and it returns values from 0-255. The above code (minus the A=A AND 15 line) gets a random number from 0 through 255. If the number is less than 10 (meaning 0 through 9), it exits the loop, otherwise it gets another number, etc. We don't want to keep testing values from 0 through 255, because there is only a 10/256=3.9% chance of getting a number that is in the 0 through 9 range, so it's slow. In QuickBasic we might use something like A=A MOD 10 to force the number into range, but on the 6502 that would involve division and that's slow too. You can quickly turn bits off with AND. The A=A AND 15 only allows the lower 4 bits to be on (15 decimal=00001111 binary) so it cuts down the possible values of A to 0 through 15. That gives us a 10/16=62.5% chance of getting a number that is in range. Not perfect, but good enough. It won't have to throw away as many values before returning a number in the requested range. Just as a sidenote, 16 decimal=00010000 binary, so the original A=A AND 16 would return values of either 0 or 16. Since 0 is the only one in the range 0 to 9, I'm guessing that you always got 0 as your "random" number calamari Quote Link to comment Share on other sites More sharing options...
icbrkr Posted October 26, 2002 Author Share Posted October 26, 2002 Just as a sidenote, 16 decimal=00010000 binary, so the original A=A AND 16 would return values of either 0 or 16. Since 0 is the only one in the range 0 to 9, I'm guessing that you always got 0 as your "random" number Something like that Thanks for the help, it seems to be working. I needed a random generator for the AI in my game. Brian Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.