Jump to content


  • Content Count

  • Joined

  • Last visited

  • Days Won


cd-w last won the day on March 20 2012

cd-w had the most liked content!

Community Reputation

336 Excellent


About cd-w

  • Rank
    River Patroller

Profile Information

  • Custom Status
    Juno First!
  • Gender
  • Location
    Seattle, WA
  • Interests
    Retro Consoles and Home Micros

Recent Profile Visitors

39,470 profile views
  1. I think only Fred (batari) has the DPC+ source code - I reverse-engineered parts of it for CDFJ, but don't know the differences between the minor DPC+ revisions. Chris
  2. I really enjoyed PRGE and the AtariAge booth was spectacular! I see that tickets for PRGE 2020 are already on sale - will AA be there again? Chris
  3. It looks like the GNU embedded toolchain is based on newer versions of the gnu software than Linaro: https://community.arm.com/developer/tools-software/tools/b/tools-software-ides-blog/posts/pre-built-gnu8-cross-toolchain-by-arm-for-the-a-profile-architecture-now-available
  4. Nice work - I have been meaning to write this down for a long time, but never have time! Once minor point to note is that the stack grows down from the top of the memory area, and the variables grow up from the bottom and will be corrupted if they meet the stack.
  5. Darrell - if you had been there we would have had all 4 members of CDFJ - maybe next year Chris
  6. Can I also have one (if it is not too late): Name: Chris Walton AA Handle: cd-w Location: Seattle, WA Thanks!
  7. cd-w


  8. cd-w


    I think this means it is currently out of stock Chris
  9. cd-w


    It should also work on the Retron 77 console using the unofficial firmware (based on the latest Stella). Chris
  10. cd-w


    The Stella emulator was recently upgraded to support Chetiry bankswitching. You can play the full game by downloading the latest Stella and using the chetiry_NTSC_STELLA.bin (or chetiry_PAL_STELLA.bin) image from this page: https://atariage.com/forums/topic/282280-chetiry-2600/ Note that you can't play Chetiry directly on the Harmony cartridge at this time. Chris
  11. cd-w

    Minor enhancements

    I’m looking forward to the 1yr review of your model 3 - I’m interested to know what these cars are like for daily use. Chris
  12. cd-w

    Hunchy II

    Thanks for featuring my game, and for the positive comments! Hunchy II was the first full-size homebrew game that I wrote for the 2600 (after a few minigames). It doesn't have the same level of polish/sophistication as my later games (Juno First, Chetiry, Star Castle Arcade), but it's good to know that people are having fun playing it nonetheless. Have you featured Chetiry in any of your shows yet? It is now fully playable with Stella (6.0 or later) including the music, so should work with the updated Retron77. See http://atariage.com/forums/topic/282280-chetiry-2600/for Stella-compatible ROM images. Cheers - Chris
  13. To use the approach that I am proposing, the workflow would be something like: Create a file containing the sprite data in the usual DASM format Run D00D over the data to optimize the layout Run a utility to convert the D00D output into C struct format (this would need to be written) #include the C struct containing the sprite data in your code Chris
  14. The best way that I know to do this is the following: 1) Use D00D to optimize the data - assume the output is the following: sprite1: .byte 1, 2, 3, 4, 5 sprite2: .byte 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 sprite3: sprite4: .byte 1, 2, 3, 4, 5, 6, 7 2) Create a C structure to hold the data - unfortunately you do need to specify the length of each chunk of data (you could probaby write a utility to do this): typedef struct { const unsigned char sprite1[5]; const unsigned char sprite2[10]; const unsigned char sprite3[0]; const unsigned char sprite4[7]; } SPRITEDATA; 3) Initialize the structure with the sprite data (again this formatting could be done via a utility): __attribute__((used)) __attribute__((packed)) const SPRITEDATA sprites = { .sprite1 = {1, 2, 3, 4, 5}, .sprite2 = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, .sprite4 = {1, 2, 3, 4, 5, 6, 7} }; 4) Now, you can reference the sprite data easily, e.g: // Access the data directly unsigned char x = sprites.sprite1[6]; // Access the data as an array (C doesn't do bounds checking, so this is actually accessing data in sprite2) const unsigned char *s1 = sprites.sprite1; unsigned char x = s1[6]; // Copy the sprite data to a queue myMemcpy(_QUEUE, (unsigned char*)s1, 16); // For bonus points you can also access the data as an offset from the beginning of the struct (GCC only) #define offsetof(type, member) __builtin_offsetof (type, member) unsigned char *spritedata = (unsigned char *)&sprites; unsigned char y = spritedata[offsetof(SPRITEDATA, sprite4) + 3]; // The offsets can also be held in a short array to save memory (over pointers): const unsigned short offsets[] = {offsetof(SPRITEDATA, sprite1), offsetof(SPRITEDATA, sprite2), offsetof(SPRITEDATA, sprite3), offsetof(SPRITEDATA, sprite4)};
  15. It is possible to complete the game. Chris
  • Create New...