Jump to content

DanBoris

Members
  • Content Count

    1,086
  • Joined

  • Last visited

Posts posted by DanBoris


  1. I have just returned from two excellent days at Phillyclassic. Here is a picture for everyone who couldn't make it:

     

    PC3_1.jpg

     

    That Albert (from Atariage) on the right in the white shirt, next to him is John Hardie from CGExpo in the Black shirt, and I believe that's Tempest with his back to the camera. I'll try to put up more pics later.

     

    Dan


  2. Here's a challenge for everyone. I have the disassmbly of the 5200 bios on my page (http://atarihq.com/danb) that I have commented most of it, but for the life of me I can't figure out the part of the code that draws the startup screen with the Atari logo.

     

    There are two parts to the code, $FD93 - $FE01 draw the Fuji logo, and $FE03-$FE61 draw the "ATARI". It isn't doing a straight copy of graphics data to RAM, it's using some tricky algorithm to do it.

     

    Any one have any ideas on how this works?

     

    Dan


  3. I will be there Friday and Saturday, helping out with the setup and running of the show. If anyone want to say hello, I will be wearing my MAME logo pin that should be a good identifier, or you can ask at the CGExpo booth, those guys know me.

     

    Dan


  4. It might just be me being dense, but what system are we talking about?

     

    Dan

     

    quote:

    Originally posted by Heaven/TQA:

    to speed up development...i need your help...

     

    i started to code timepilot...

     

    the vram is organized 120x256 bytes as well as the sprite tables... (16x256)

     

    the sprites are stored in stripes. the timepilot sprites most have 16x16 pixels

    so they take on atari 4x16 = 64 bytes...

     

    here is my actual sprite copy routine... i used a strange trick as the 6502 has no lda/sta (zero) adress mode...

     

    ;---------------------------------------------------

    ;copies testwise player sprite in the middle of the screen

    ;si contains start adress of the sprite

    ;---------------------------------------------------

     

    test_copy mwa si si0 ;set 4 pointers

    mva si+1 si1+1

    mva si+1 si2+1

    mva si+1 si3+1

    lda si

    add #1

    sta si1

    lda si

    add #2

    sta si2

    lda si

    add #3

    sta si3

     

    mwa #screen+14+52*256 di0

    mwa #screen+15+52*256 di1

    mwa #screen+16+52*256 di2

    mwa #screen+17+52*256 di3

     

    ;4 stripes a 16 bytes per sprite (16x16 pixel)

    ldy #15

    ldx #0

    test_copy0 lda (si0,x) ;get sprite data

    sta (di0,x) ;on screen

    lda (si1,x)

    sta (di1,x) ;on screen

    lda (si2,x)

    sta (di2,x) ;on screen

    lda (si3,x)

    sta (di3,x) ;on screen

     

    inc si0+1

    inc si1+1

    inc si2+1

    inc si3+1

     

    inc di0+1

    inc di1+1

    inc di2+1

    inc di3+1

     

    dey

    bpl test_copy0

    rts

     

     

    this can not be the fastes copy routine???

    what would be the cleverst data structure to be very fast in coping sprites on screen???

     

    the routine should be excepting a source adress (which sprite) and the destination screen adress...

     

    so it becomes most flexible (f.e. when animating the sprite...and even moving...)

     

    any good ideas??? i thought it would help when the structure is in 256 byte lengths... even the vram... but really??? is this the fastes way? atari 7800 does it in this way...

     

    thoughts & ideas welcome...

     

    heaven

     

    ps this is really crucial before developing further... timepilot on atari 8bit depends on the sprite engine...and the sprite engine depends on the data structure...and this structure must be optimized for 6502...


  5. You aren't the first person to mention this, and I have to say this is strange. Which version of VSS do you see this problem in? I have check the push and pull instructions and they work fine. There must be more to this problem.

     

    Dan

     

    [ 04-21-2002: Message edited by: Dan Boris ]


  6. This is possible, but a little tricky to build. I don't know of any place on the net to find documentation on how to do this either.

     

    Another good option is to get ahold of a Starpath Supercharger. This was a device that originally allowed you to load games on the 2600 from an audio tape. You can actually hook it to the audio output of a PC sound card and transfer any 2K or 4K ROM image to it so you can play on the real hardware. You can get more details here:

    http://members.cox.net/rcolbert/schookup.htm

     

    Things get much trickier for games that are over 4K. These would require extra hardware to simulate the bank switching the games used.

     

    Dan


  7. How many 5200 programmers (or potential programs) here are going to be at Phillyclassic?

     

    I am putting together what I am calling the 5200 Programmers Scrapbook which I want to have available at Phillyclassic. The main thing it will contain are copies of the excellent series of articles from Byte magazine in 81/82 all about programming the Atari 8-bit computers. It gets right down to the hardware level so it's very applicable to the 5200. There will also be a few other 5200 related items thrown in.

     

    I will probably be charging a small amount for them, just enough to cover the copying costs.

     

    Dan


  8. Well at the moment I am not actually dealing with it. I shortened the number of cpu cycles per line to 80. Since there is a fairly small pool of games for the 5200 this seems to work ok for the most part. I may improve this in the future by simply calcualting the number of cycles the ANTIC is going to steal on each line and adjusting the number of CPU cycles appropriatlly. To fully emulate the Atari 8-bit computers would require much tighter timing so I have no plans to get into this at this point.

     

    Dan


  9. quote:

    Originally posted by Cafeman:

    Most of my DLI's in Koffi are over a mostly black screen though (hence, little Antic time stealing? I'm not sure).


     

    The only time it doesn't cycle steal is when the display list has a blank line instruction. If it's a mode line, even if it's all black, it's still reading the data. Also PMs steal a couple cycles on each line no matter if it's a blank line or not.

     

    The next verison of VSS will still be in DOS. I rather concentrate on the emulation then worring about how to develop under windows. However, since I am developing under Windows XP now it is very Windows friendly. I have it running perfectly with full sound under XP.

     

    Dan


  10. While I was working on getting River Raid to work on my 5200 emulator (VSS), I recalled something that I had forgotten about DLI timing, so I thought I would share it for everyone benefit.

     

    During each scanline there are approximitly 114 cpu cycles in which do load data for the next line. But, the important thing to remeber is that the ANTIC steals a lot of the cycles to move data from memory to the display. ANTIC steals 1 cpu cycle for each byte it read from memory. For example in Antic mode 2 the ANTIC steals 80 cycles, 40 for the character code reads and 40 for the actual graphic data reads. There is some extra overhead on top of that so you can see that you don't end up with to many usuable cycles on each Antic mode 2 scanline.

     

    River Raid is interesting (like a lot of Activision games). It enters a DLI at the top of the display and stays in it for almost the entire screen. It keeps track on the current scanline by incrementing the X register and hitting WSYNC. The tricky part (and the reason it didn't work on my emu) was that at certain points in the display it has to do to much in one line and misses a WSYNC so it increments the X register twice at these points.

     

    Dan

     

    Dan

     

    [ 04-15-2002: Message edited by: Dan Boris ]


  11. I personally don't think that type of team development lends it's self well to the 2600. On newer system like the Jaguar the game can easily be broken into independant modules that different people can work on, eg. Person X writes the game logic, Person Y writes the graphics engine, etc. This would be very difficult the 2600 since everything in a 2600 program is so tightly interrelated. You also couldn't hand something like graphic design to another person, since the appearence of the graphics is heavily dependant on the display engine you write.

     

    What does work well (which is what is done a lot on this message board) is to have a group of people you can bounce ideas and problems off of. That way you develop the game with one programmer, but when you get stuck on something you have people that can lend ideas and suggestions.

     

    Dan

     

    quote:

    Originally posted by Darren Reid:

    Actually I am 2600 prgrammer and do know the system well but i am also involved in Jaguar development where i work as a designer for a team, the idea behind my proposal being to do what the jaguar community does, genuinly work to making the game the best it can be with loads of different people from around the world, i had no idea the 2600 was so anti-social

     

    [ 04-05-2002: Message edited by: Dan Boris ]


  12. quote:

    Originally posted by Atari Chuck:

    @ Curt Vendel

     

    Would the games in that one happen to be Defender, Centipede, Football, and Qix?

     

     

    On the one I got to play around with I believe those where the 4 games. We actually had to pull each cart out and test it since they where not labeled. This game list makes sense with the exception of Qix. Not sure why they didn't put in something more main-stream like Pac-man.

     

    Dan


  13. I actually got a chance to open up and poke around inside one of these recently. They are pretty scary inside, looks like they where pretty much just slapped together. So of the few that are out there, I bet even fewer actually still work.

     

    Dan


  14. This actually makes sense. The POKEY chip was designed for scanning a full size keyboard (64 keys). Since the 5200 only has 16 keys on the keypad, only 4 of the 6 outputs of the Pokey scan counter are hooked up. The result of this is that any keypress should actually return 4 different scan codes, which to the POKEY appears as iff 4 different keys where pressed at the same time. This would explain the behavior of the "last key still pressed" bit on SKSTAT.

     

    Now, according to the tech reg for the POKEY chip, if debounce is enabled (SKCTL bit 0) and more the one key is pressed at the same time, both key codes are thrown away. If this is all true that would mean that if you turned the debounce on, on the 5200 you would never get a valid keycode back. Can anyone confirm this?

     

    Dan

     

    quote:

    Originally posted by calamari:

     

    "On the real 5200, SKSTAT doesn't act like it does on the emulator (take a look at DEBUG52, and view address $E80F.. see how it is $FF then stays $FB while a key is pressed? Not so on the 5200, it is mostly $FF with an occasional $FB). So, we can't use SKSTAT to tell us when the key is no longer held."

     

    calamari

     

    [ 04-02-2002: Message edited by: calamari ]

×
×
  • Create New...