Jump to content


  • Content Count

  • Joined

  • Last visited

Community Reputation

50 Excellent

About ScumSoft

  • Rank
  • Birthday 05/17/1981

Profile Information

  • Gender
  • Location
    Polysorbate 60
  • Interests
    Enslaving Programmers

Recent Profile Visitors

14,980 profile views
  1. new-open-source-gpu-accelerated-atari-emulator-for-reinforcement-learning-now-available Not sure if this has been posted yet. Looks like it would be fun to mess with, I'm getting it setup right now. Will give my work PC's 2080 Ti something fun to chew on [edit] I wonder if we will need to make a high score competition for AI's in the future.
  2. I would have responded earlier but Hiatus ect... See Batari's original comment here of Bank 6 We were indexing the banks from 0 in ASM back then, and Batari Basic indexed them from 1. It became worse as I did lots of ASM work back then and my Bank6 was purely for graphic content... Sorry for the confusion, the template is for sure wrong and Bank 6 in bB is free for normal usage in ASM however, Bank 6 is your bB Bank 7 and only for DPC+ prefetching usage. I hope this massive bump doesn't bother anyone, I feel bad for causing so much confusion with that template. Poor iesposta had to keep correcting it all over the place.
  3. ScumSoft


  4. And then there was that one bug, where it seemed like it was transmitting data but things just didn't work properly. You'll spend the next week trying to hunt down the issue only to discover there was a bad solder point on IO pin 37 140 wires...I certainly hope it just works
  5. Been a long while since I touched bB, but I think we needed to divide the players X position by 5 to get the playfield X offsets.
  6. It is beyond simple to learn the 6502's ASM. It really really is! You only need to know two instructions to do everything really, but only knowing two wont lead to very elegent code. LDA #$xx STA #$xx xx is any hex value between 00 and FF If you look at VCS.h for the DASM VCS compiler includes it has a table of names assigned to hex values. So if you want to store hex FF into the color for player 0 and AA into the graphics of player 0 you would do this: ;Semicolon is used for comments in DASM and are discarded during compile time LDA #$FF ;This says LoaD Accumulator with a hex value, hex is declared with #$ regular 0-255 uses just the hash LDA #255 like so STA COLUP0 ;STore whats in the Accumulator into COLoUr Player 0, in this case 255 or FF, will go into the player0s color LDA #$AA ;LoaD the Accumulator with hex value AA STA GRP0 ;Store this value into GRaPhics of Player 0 That is all you need to make the VCS do stuff, but if you want things more fancy and in sync with the TV you will need to know how to repeat code parts with branching: ;Place a starting counter outside the loop above the label LDY #192 ;LDY will load the Y register, LDX loads the X register, and LDA is for loading values into the Accumulator Loop: ;Simple labels use a colon to say hey mark the address here so code can jump over to me when needed STA WSYNC ;Store anything into WSYNC will make the VCS wait until the scanline is finished STY COLUBK ;Store something into the background color, in this case its the current value in the Y register DEY ;Y and X registers can be incremented by 1 or decremented by 1, this is DEcrement Y BNE Loop ;Branch if Not Equal says if whatever instruction was done last made the value zero then let them pass to the instructions below, otherwise we need to jump to Loop label and do this again Now its just a matter of figuring out what you want to stick into the VCS addresses and placing values into them at the proper times. You can do alot with only a small bit of code, the 6502 is very simple and easy to learn.
  7. I had stopped working on everything when school started up back in Jan this year and didn't touch it again till last week when I cleaned out my closet The bus stuffing isn't interrupt driven only the "Hey A12 went high I better go service the FIQ routine now" is, this way the ARM can be crunching C code getting everything ready for the bitmap output stuffing. The actual stuffing happens while in the FIQ, I am currently working out the logic required at this point, but I should be able to make use of the three timers in the ARM for gating the values on the bus we want. I already have a working kernel I wrote for the regular DPC+ core, but it repurposes all the datafetchers and more to display my bitmap output. 2016 will be a great year for more complex games.
  8. Before my hiatus here, I was writing a new Harmony core centering around bus stuffing for bitmap displays. Fred's default core polls A12 for rom access then decodes the address and figures out what the VCS wants from it. This is why 70% of the ARM is busy feeding the bus and not so free to do other stuff. I figured it should have been interrupt driven instead of polled so I got the source, the schematics and saw that we could use an FIQ on A12 and set it to trigger on the rising edge. I did this all in C and optimized it as best I could. It didn't work because there were a few configuration errors I didn't catch last time. I revisited my project a week ago and got it working properly, so now all of the ARM cycles are free to do other things while not servicing A12 requests. I still have to implement my stuffing kernel and setup a few things but the hard part is over. Now you can focus on programming games in C and let the FIQ handle all the updates the VCS is requesting. I've chosen to load a display kernel ran from RIOT ram and have key A12 requests trigger the bus stuffing sequence all timed from the ARM. So far the core is only 600bytes big and all of the 8kSRAM is free for display output bitmapping. I also plan to implement the ability to stream in data off the SDcards for larger games. College is keeping me really busy this year, so I'm only dabbling on the code a few hours a week at the moment, but it's looking pretty promising so far. Though I'm sure ZackAttacks implementation is a much beefier solution than the LPC2103 in the Harmony.
  9. Hello again it's been a while, nice to see your project coming along nicely. Did you modify the Stella source to allow for single cycle bus stuffing?
  10. Eggventure was done in batari basic and used RevEng's titlescreen bitmap framework, I didn't do it from scratch. What I did at the time of that spritetest demo was rediscover flicker blinds in column flicker mode. The way it was coded doesn't leave much time to do other things in an actual gameplay. So I moved onto DPC+ for the extra umpf, however I didn't like the setup the stock framework has so I started recoding a new framework that focused on Bitmap engines and routines to augment such. I modified an older version of Stella to prototype the DPC+ changes that needed to happen since the Harmonys new core wasn't written yet. I'll look through my coding backup and see how far I got on the actual project, I don't recall at the moment where I left off on it. [edit]Looks like I left off coding the Harmonys new core using Keil. I was working out the cycle exact timing involved to have the 2600 run a display stub kernel from internal ram and have the ARM stuff the game display onto the bus during this time. Polling of A12 would occur only during certain windows to ensure we stayed synced up rather than all the time thus freeing up the ARM for pure C coded games.
  11. [EDIT] Thank you all so VERY much for the offers, I think with the items that have sold now, things should be okay for me. This way I don't have to part with anymore of my history
  12. Many thanks! Here's one I forgot. q) How much time do we have after initial power on before rom is first requested?
  13. [ROM ACCESS] 1) When the Atari wants rom data, it sets the A12 line high to read from the higher address space correct? 2) Does it ever flip A12 high for other things? 3) How long will it allow A12 to remain high with no data before the data valid window expires? 4) If the data valid window expires what state does the Atari end up in? 5) Once valid data is retrieved does the A12 line remain high if the instruction doesn't have the VCS access a lower address space? such as INY, JMP, ect... [DISPLAY] 6) What is the currently achieved copy limit of the RESP0/1 trick? ignoring any alignment issues. 7) What is the max amount of player copies you could get had you sent RESP0/1 directly to the TIA? (bypassing the 6507)
  14. Happy happy birthday from all of us to you! we wish it was our birthday so we could party toooooooooo!

  15. missing a sta WSYNC at the beginning of drawscreen?
  • Create New...