Jump to content

Search the Community

Showing results for tags 'programming'.

More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


  • Atari Systems
    • Atari 2600
    • Atari 5200
    • Atari 7800
    • Atari Lynx
    • Atari Jaguar
    • Dedicated Systems
    • Atari 8-Bit Computers
    • Atari ST/TT/Falcon Computers
  • Gaming General
    • Classic Gaming General
    • Classic Computing
    • Modern Gaming
    • Prototypes
    • Arcade and Pinball
    • Emulation
    • Hardware
    • Gaming Publications and Websites
    • International
  • Marketplace
  • Community
  • Game Programming
  • Site
  • Classic Gaming News
  • The Club of Clubs's Discussion
  • I Hate Sauron's Topics
  • 1088 XEL/XLD Owners and Builders's Topics
  • Atari BBS Gurus's Community Chat
  • Atari BBS Gurus's BBS Callers
  • Atari BBS Gurus's BBS SysOps
  • Atari BBS Gurus's Resources
  • Atari Lynx Programmer Club's CC65
  • Atari Lynx Programmer Club's ASM
  • Atari Lynx Programmer Club's Lynx Programming
  • Atari Lynx Programmer Club's Music/Sound
  • Atari Lynx Programmer Club's Graphics
  • The Official AtariAge Shitpost Club's Shitty meme repository
  • The Official AtariAge Shitpost Club's Read this before you enter too deep
  • Arcade Gaming's Discussion
  • Tesla's Vehicles
  • Tesla's Solar
  • Tesla's PowerWall
  • Tesla's General
  • Harmony/Melody's CDFJ
  • Harmony/Melody's DPC+
  • Harmony/Melody's BUS
  • Harmony/Melody's General
  • ZeroPage Homebrew's Discussion
  • Furry Club's Chat/RP
  • PSPMinis.com's General PSP Minis Discussion and Questions
  • PSPMinis.com's Reviews
  • Atari Lynx 30th Birthday's 30th Birthday Programming Competition Games
  • 3D Printing Club's Chat
  • Drivers' Club's Members' Vehicles
  • Drivers' Club's Drives & Events
  • Drivers' Club's Wrenching
  • Drivers' Club's Found in the Wild
  • Drivers' Club's General Discussion
  • Dirtarians's General Discussion
  • Dirtarians's Members' Rigs
  • Dirtarians's Trail Runs & Reports
  • Dirtarians's Wrenching
  • The Green Herb's Discussions


There are no results to display.

There are no results to display.


  • AtariAge Calendar
  • The Club of Clubs's Events
  • Atari BBS Gurus's Calendar
  • ZeroPage Homebrew's Schedule

Find results in...

Find results that contain...

Date Created

  • Start


Last Updated

  • Start


Filter by number of...


  • Start










Custom Status



Currently Playing

Playing Next

Found 90 results

  1. Now i'm not a programmer, but I've been thinking of a Game where you play as a JSDF helicopter Pilot and you have to fight a division of evil helicopter pilots, alien U.F.Os and the final boss Godzilla. Even though I said i'm not a programmer, I drew up some crappy sprites on some graph paper as seen below. So what do you guys think? Would you play an atari game about godzilla?
  2. Hi everyone! I have trouble programming a gal yo make a custom d flop with reset un a gal22v10. Currently, I can program the reset and obtain all 0s or 1s. But i need to implement different values on reset, for example: 10101010 Is there any way to program something like they on Wincupl? Does anyone know how? Thanks in advance!
  3. Once upon a time there was a Mac OS X Xcode template for VCS development. Unfortunately time seems to have passed the VCS templates by. I couldn't even check them out. They are behind broken links and reportedly don't work with modern Xcode releases anyway. So I made a new template. The goal is to streamline my experimentation with 2600 programming, but it could be useful for others so I thought I'd share it here. I make no guarantees about how well it will work on your particular setup or any promises that I will update it in the future. Contents The template generates a simple project containing : main.s The main assembly file. Any additional files should be incorporated into main.s through include statements. This is the only file that is passed to dasm. The main.s default code is based on Andrew Davie's "Our First Kernel" though somewhat cleaned up with loops instead of repeated statements. It should give a solid blue screen when run. dasm, vcs.h and macro.h These files are embedded in the template and will be copied into any projects generated with this template. Any globally installed dasm or include files will be ignored in favor of these project specific ones. I like this approach because all the files necessary to generate the binary are embedded in the project. If I want to move this to another machine or build it years from now I do not have to recreate the build environment to make it work. Other's may want to use their globally installed dasm and in that case it shouldn't be too hard to hack the makefile. Makefile A dead simple makefile to kick off dasm. It will use your standard Xcode settings for project name and build location. The Xcode build destination is by default deep inside ~/Library/Developer/Xcode/DerivedData/ Considering that directory is hidden by default it seems like a weird place to put builds. I usually change my build destination to something more accessible and the makefile will honor those settings. Usage Unzip the archive and put the whole Atari folder into ~/Library/Developer/Xcode/Templates/ If you are using the GUI hold down the option key when opening the Go menu and a "Library" option will appear allowing you to access the Library folder. Now you can chose the Atari VCS template when you create a new project in Xcode. There doesn't seem to be a way to configure schemes through project templates so one more step is necessary if you want to auto launch your ROM in Stella. Choose menu : Product -> Scheme -> Edit Scheme... Select Run item from list on the left In the Info tab's Executable popup menu choose Other... Navigate to the Stella app and choose it In the Arguments tab add an argument with the value including the quotes of "$(BUILT_PRODUCTS_DIR)/$(PRODUCT_NAME).bin" Once you have setup Stella as the executable you can build and run from within the Xcode GUI and Stella will be launched with your changes. I have used this template a bunch on Xcode 6. In brief testing it does appear to be compatible with Xcode 7 as well. Even if this template doesn't create projects exactly how you wish, hopefully it will still be valuable as a starting point to configure Xcode as desired for VCS development. Atari.zip
  4. I am pleased to announce the release of my first Atari 2600 game programmed in assembly language. The game is called Gene Medic and it is based on a future of genome editing to cure common diseases. There is educational value to the game as it introduces concepts such as context-dependent mutations and the electronic health record. The full details along with the binary and heavily commented source code can be found at http://genemedic.org. Many thanks to everyone who has contributed to this forum. I learned a lot from this group and am, of course, still learning! I hope others will find my source code useful for their own Atari 2600 programming efforts.
  5. So I'm interested in learning how to program for the ColecoVision, but I can't find any good guide/walkthrough on how to do so. Can anyone please help me? I also can't find a good and active ColecoVision community/forum to join. So if someone can help with that too, it would be greatly appreciated.
  6. I want to start getting into the Programming community but I have some questions. Like "What programming language should I Look into?" and "are there any programs that make development on projects easier (e.g. BatariBASIC)?". I have little to no programming knowledge (the most I've done is write a very basic calculator in " BASIC256"), so beginning to learn any programming language will be difficult. Do you guys and gals on AtariAge have any tips?
  7. This is a thread, dedicated to the RXB game called "TI Game Engine X". I wrote this game as entry for the programming contest that did occur until 31th July 2019. Since the time was running out a bit, I wasn't able to completely showcase its possibilities. First I will post the main program, its instructions again and then I will post a nice level for you.
  8. Expanded BASIC by Tino Deleurgo is a series of packages that add some nice features to the Coco2. I previously posted LINES on a Coco 2 with 8 colors using Tino Deleurgo's Expanded BASIC utility package. It utilized semi-graphic capabilities and is a rather nice package with lots of nice features. Unfortunately the manual isn't that great. Tino uses a tutorial structure in the manual that makes it hard to find the commands and what they do. So I wiped up a quick reference manual for myself and decided to post it. http://atariage.com/forums/blog/528/entry-15937-coco-2-expanded-basic-quick-reference-manual/ also here is the post where I used Expanded BASIC to create some graphics in 8 colors. http://atariage.com/forums/blog/528/entry-15915-coco-2-lines-in-8-color-using-expanded-basic/ Nice package, worth looking into.
  9. Hi Guys, yesterday I have run into a nasty Syntax Error in Extended Basic, which also occurs in RXB. I don't understand it and wonder if the line really contains a Syntax Error or this is a Interpreter Bug. Version 1: 1 IF A=1 THEN 2 ELSE FOR I=1 TO 2 :: PRINT I :: NEXT I 2 END Version 2: 1 IF A=1 THEN 2 :: FOR I=1 TO 2 :: PRINT I :: NEXT I 2 END Both versions complain about a Syntax Error in Line 1. I would like to analyze it with the help of you and maybe RXB can be even fixed.
  10. I believe this falls into the programming section: 30 to 35 years ago I wrote a program for Hardball, the Baseball game, that allowed a person to replace the original baseball teams with modern teams in Hardball. I was much younger then and smarter than I am now so looking back at this program written in Atari Basic, What the heck did I do to write this? I don't even remember doing that , but it was in the KWEST library, so I am including it first. Once I figure out exactly what I did I will recreate the teams with 2019 teams, there may be some users on here that can look at my basic programs and tell me what I did? Because I am having a senior moment when it comes to remembering what I did 35 years ago. Here is the three programs in one zip file, Hardball Creator Disk, Hardball Creator Docs Disk, and of course Hardball itself. I may have changed the information with a sector editor and copied the text to data strings in the program. And from what I can see I wrote to specific spots on the COPY of Hardball itself, but beyond there? Russ Hardball Team Disk Creator.zip
  11. Converted my Atari 800 game Uno card to TI-99. I used the KXBII extensions to create multi-color text. (see earlier blog post for Uno for Atari 800 and KXBII extensions for TI-99/4a). Plays at TI-99 XB speeds, which is to say, fast enough. The multi-color text is part of the KXBII extension package. Works rather well & fast enough and bug free. Only weird glitch is 1/2 character random flicker in one letter (you'll see it) when text being printed. I created a CALL PR(X,Y,TEXT$,fore-color, back-color) SUB-routine for printing to simplify conversion from Atari 800 MSBASIC. attached is a booklet and the .DSK bootable disk game. Enjoy. uno.zip
  12. Hi everyone! Some of you have already joined the Atari Lynx Programmer Club, I'd like to invite anyone else who is interested in Lynx coding to join too. It may be a little redundant with this forum, but the advantage is we can create our own sub-forums in the club on focused topics. I've already added sub-forums for CC65, ASM, Graphics, Music/Sound. I don't want to control the exact content in the club forums so anyone can request to be a leader. Lets make it into the best Lynx programming community out there! 👨🏻‍💻🕹👩‍💻
  13. Hello everyone, I'm working on a project and I have a few questions: First, take a look into this code: As you can see, I'm loading X with #48, because the shape & color tables have 48 values each, this is the result: Now to the questions: 1. If I use #96 instead of #48, how do I update the Playfield only every 2 values? (What I'm trying to ask here is how do I modify the #48 and use #96 but still get the same results? So I can draw sprites using the #96 loop). 2. Is it still possible to draw sprites (Player/Ball) using that amount of resources in the Kernel? (Updating the PF & BK like in the code above). Thank you.
  14. [edited: link to PDF added] Hot news: the book Atari 2600 Programming for Newbies - Revised Edition by Andrew Davie is now available on Lulu.com for only $4.69. Order your copy here: http://www.lulu.com/shop/andrew-davie/atari-2600-programming-for-newbies-revised-edition/paperback/product-23644281.html Basically this book is the printed version of the Atari 2600 programming tutorials by Andrew Davie that he originally posted on these forums between 2003 and 2004 (and one extra session posted in 2012). Editing and formatting was done by yours truly. Note that in 2011 someone already bundled these tutorials into a book and published it on Lulu.com, but IMO there are a lot of issues with that version (e.g. no page numbers, missing session no. 25, images cut off on the end of the page, outlining issues, code samples hard to read because of wrapping). That's why I decided to call my version the "Revised Edition" :-) I formatted all code samples to make them readable in print-format, fixed a few spelling errors and also did some editing where the original text was clearly assuming the reader is reading the text online. Note that I'm not making a single dollar-cent on this; you only pay for the printing of the booklet. The consequence is that Andrew Davie is also not making any money from this, but knowing that in 2011 he was OK with the other published book on Lulu.com, I hope he's also OK with this new "Revised Edition". The binding and printing of this book is really nice. The pages are black & white, but the cover is full color (see attached images). I also added Andrew's avatar on the back of the book :-) And Lulu.com regularly has these promotions where they offer free shipping, making this a real bargain! Here is a link to the PDF for your convenience: Atari_2600_Programming_for_Newbies_Revised_Edition.pdf Cheers, Dion
  15. Anyone know anything about this program. seems to be a lot like 'the missing link'. I got a copy (from where??) but it only has a little bit of info on it. attached is the .dsk in cf7 format readable by TIdir. XBASIC2.zip
  16. Intellivision IntyBASIC Programming Contest 2015 Welcome to the first IntyBASIC game programming contest held on AtariAge (thanks Albert!). The contest is open to all IntyBASIC programmers and is sponsored by GroovyBee, nonner242, nanochess, CollectorVision and Albert. Further prizes are being offered by revolutionika and cmart604, and awards will be given to entries that place 1st, 2nd and 3rd respectively. Drop us a PM if you'd also like to help out with some more prizes! THE RULES So you can get started, the basic rules are laid out below: The competition starts today (Wednesday 1st of July 2015) and the deadline for submissions is 00:00 GMT on the 1st of January 2016 (midnight on the 31st of December) - this gives you around 6 months of development time. There will be no competition unless a minimum of six entries are submitted by the deadline. Your game(s) must be developed in IntyBASIC and use the default prologue/epilogue files. The only assembly language statement allowed within your game is the ORG statement so that you can develop a larger game. However, bank switching is not permitted. All submitted games must meet the entry criteria to be valid. The games submitted do not necessarily need to be new, but must be your own work, not sold commercially or released in cartridge format previously. NTSC must be supported, with additional PAL support optional (but encouraged). The maximum number of single entries from a person or group is set at three. If more entries are made, the applicant has the opportunity to replace a previous entry with a new one. The 1st prize winning game may be published by CollectorVision (should it's developer enter into an agreement to do so). This matter will be discussed privately with the parties concerned and if an agreement is reached a public announcement will be made later. There will be a panel of judges (announced in full over the coming weeks), and entries will be scored on a points basis across several criteria. The decision of the panel is final. All game ROMs below 1st prize (2nd, 3rd etc.) will be published after judging has been completed. However, if the 1st prize game is to be published by CollectorVision its ROM will be distributed after game sales have completed. All entries must be submitted via email to [email protected] by the closing date. The judges will declare the results of the contest by 12:00 GMT on the 31st of January 2016. GAME ENTRY Each entry into the contest must consist of the following items to be valid :- Game image in *.rom or *.bin+*.cfg. Brief instructions on how to play the game. IntyBASIC source code (and any data files). Instructions on how to build the IntyBASIC source code (this must also include IntyBASIC compiler version number). As part of the validation process, each entry's source code will be built using its instructions and the final binary produced must match the submitted binary image 100%. Any entry that fails this criteria will not be judged. It is not necessary for any contestant to publish the source code to their entry. However, if they wish to do so before the contest closes, they will be awarded an extra 5 points. Competition contestants are free to discuss their game's progress, provide source code and WIP ROMs and to also help other contestants should they wish to do so. Your entry must be submitted via email to [email protected] by the competition's closing date. THE JUDGING PANEL The panel of judges is as follows :- Albert Yarusso (Albert) Mark Ball (GroovyBee) nonner242 Oscar Toledo G. (nanochess) J-F (retroillucid) Judges are not permitted to enter the contest themselves. However, they are permitted to answer technical questions and provide assistance to applicants publicly when required. DZ-Jay will validate the entries. His role is to ensure that only the permitted assembly language is used in the game and that an exact game binary can be produced. SCORING SYSTEM The criteria that each game will be evaluated on are: Originality (1 ro 10) - Is the game based on a new idea or a twist on an established design? Concept (1 to 10) - Quality of game design. Execution (1 to 10) - Execution of design, taking into account controls, NTSC/PAL compatibility. Graphics (1 to 10) - Quality of graphics and animation. Sound (1 to 10) - Quality of music and sound effects. Presentation (1 to 10) - Overall presentation. Game play (1 to 10) - A measure of how enjoyable the game is to play. Lasting Appeal (1 to 10) - Replay value, addictiveness. Source code (5) - These points are awarded to any coder that publishes his/her game's source code publicly. When the panel has scored each game accordingly, the totals for each criteria will be added together for each game to give it a final score. PRIZES First prize: Game on Bee3 cartridge (1 copy only). End label and a box designed by nonner242 (1 copy only). Hive Multi-cart Deluxe Edition. 2 blank Bee3s. 1 Bee3 programmer adapter (donated by DZ-Jay). Optional: CIB publication with CollectorVision. CIB Copter Command Deluxe (donated by revolutionika). One console from CIB Intellivision I, CIB Intellivision II or CIB Sears (donated by cmart604). 30 pack of CIB common games (donated by cmart604). Choice of D1K or D2K (donated by cmart604). Second prize: Game on Bee3 cartridge (1 copy only). End label by nonner242 (1 copy only). Hive Multi-cart Standard Edition. CIB Copter Command (donated by revolutionika). One console from the remaining choice of CIB Intellivision I, CIB Intellivision II or CIB Sears after the 1st prize winner has picked theirs (donated by cmart604). 20 pack of CIB common games (donated by cmart604). Third prize: Game on Bee3 cartridge (1 copy only). A simple end label by nonner242 (1 copy only). CIB Space Raid (donated by nanochess). CIB Copter Command (donated by revolutionika). The remaining CIB Intellivision/Sears console after 1st and 2nd prize winners have picked theirs (donated by cmart604). 10 pack of CIB common games (donated by cmart604). Note: These rules are based on RGCD's Programming Contest 2014 rules and are used with permission. DEVELOPMENT The development tools and emulators needed to create and play your games can be found here.
  17. I have been working on a little 4k game trying to create something that feels in keeping with the arcade style gameplay many original 2600 games have. The ultimate goal of this game is to get a score of zero! Use the joystick to move around and pressing fire when moving increases your speed. Press fire while still to shoot your missiles and blow up bad guys. Not everything is a bad guy there are also power ups to obtain. Every thousand points you remove from the score a boss like ship will appear.... Don't get hit by its missiles! I have attached three different builds: 'Point Zero.bin' is the actual game. Have a blast let me know what you think and post you lowest score if you get a good one! 'Point Zero Boss Demo.bin' is a demo that quickly gets you to the boss section so you can see how it looks... If your not good enough to get there in the main game! 'Point Zero Trainer.bin' is a build that gives you infinite life's so you can practice technique and i also used this to test the game end to end. I have tried it on real hardware and it works great on my Harmony Cart. Hope you enjoy it and any feedback is welcome as this was my first assembly retro project and I'm currently looking for me next venture! Point Zero.bin Point Zero Boss Demo.bin Point Zero Trainer.bin
  18. Papa

    Titan Axe Beta

    I would like to give folks a try at my new game before the finishing touches are added. If you like my game please consider buying it when it comes out!! This was programmed from scratch, by me!! Here are the instructions.. Joystick = moves the character Hold action = Jump (in Jump let go of action to attack) Left + action = attack Right + action = attack Down + action = special attack Hold up + action = Use magic (uses power) In easy hold action on the Game Over screen to continue In Hard hold action to begin at an earlier point in the game (usually), or choose a different character On the title screen hold a direction to listen to one of the music tracks, five in total! (I made all the music, too) This game is one of my most loved creations and I hope you all enjoy it and consider purchasing it when/if it comes out at AtariAge Please don't take my code or modify it in any way!! I present.. Titan Axe Beta TitanAxeBeta.bin
  19. Hey everyone, I'm very new to programming with assembly. Anyways, from the tutorial in this section of the forums I played around with the first kernel that is presented in Session 8. I made the lines alternate their colors with it. I ran it with SECAM60 after being satisfied, and wow is it an eyesore. I attached an image of the screen when I ran it. Challenge: look at the SECAM60 screenshot for 30 seconds and then turn away. pantomchap_test_game_5-17-2017-2.27PM.bin
  20. While looking for something else the other night, I stumbled on this Wikipedia article that describes Quarter Square Multiplication. I had never seen this algorithm before. For a machine like the Intellivision, it appears to be a perfect fit! I won't repeat the Wikipedia article here, but the short version: With a few additions, subtractions and table lookups, you can perform arbitrary multiplication wicked fast. For an 8-bit x 8-bit multiplication (16-bit result), we're talking ~70 cycles. For 16x16 multiplication (also 16-bit result), we're talking ~302 cycles. It didn't take me very long to code it up at all. The algorithm is that simple. It just needs a 511 word lookup table. Here's the implementation of both 8x8 => 16 and 16x16 => 16 multiplies. . ; Quarter Square Multiplication ; Assembly code by Joe Zbiciak, 2015 ; Released to public domain. QSQR8_TBL PROC DECLE $0000, $0000, $0001, $0002, $0004, $0006, $0009, $000C DECLE $0010, $0014, $0019, $001E, $0024, $002A, $0031, $0038 DECLE $0040, $0048, $0051, $005A, $0064, $006E, $0079, $0084 DECLE $0090, $009C, $00A9, $00B6, $00C4, $00D2, $00E1, $00F0 DECLE $0100, $0110, $0121, $0132, $0144, $0156, $0169, $017C DECLE $0190, $01A4, $01B9, $01CE, $01E4, $01FA, $0211, $0228 DECLE $0240, $0258, $0271, $028A, $02A4, $02BE, $02D9, $02F4 DECLE $0310, $032C, $0349, $0366, $0384, $03A2, $03C1, $03E0 DECLE $0400, $0420, $0441, $0462, $0484, $04A6, $04C9, $04EC DECLE $0510, $0534, $0559, $057E, $05A4, $05CA, $05F1, $0618 DECLE $0640, $0668, $0691, $06BA, $06E4, $070E, $0739, $0764 DECLE $0790, $07BC, $07E9, $0816, $0844, $0872, $08A1, $08D0 DECLE $0900, $0930, $0961, $0992, $09C4, $09F6, $0A29, $0A5C DECLE $0A90, $0AC4, $0AF9, $0B2E, $0B64, $0B9A, $0BD1, $0C08 DECLE $0C40, $0C78, $0CB1, $0CEA, $0D24, $0D5E, $0D99, $0DD4 DECLE $0E10, $0E4C, $0E89, $0EC6, $0F04, $0F42, $0F81, $0FC0 DECLE $1000, $1040, $1081, $10C2, $1104, $1146, $1189, $11CC DECLE $1210, $1254, $1299, $12DE, $1324, $136A, $13B1, $13F8 DECLE $1440, $1488, $14D1, $151A, $1564, $15AE, $15F9, $1644 DECLE $1690, $16DC, $1729, $1776, $17C4, $1812, $1861, $18B0 DECLE $1900, $1950, $19A1, $19F2, $1A44, $1A96, $1AE9, $1B3C DECLE $1B90, $1BE4, $1C39, $1C8E, $1CE4, $1D3A, $1D91, $1DE8 DECLE $1E40, $1E98, $1EF1, $1F4A, $1FA4, $1FFE, $2059, $20B4 DECLE $2110, $216C, $21C9, $2226, $2284, $22E2, $2341, $23A0 DECLE $2400, $2460, $24C1, $2522, $2584, $25E6, $2649, $26AC DECLE $2710, $2774, $27D9, $283E, $28A4, $290A, $2971, $29D8 DECLE $2A40, $2AA8, $2B11, $2B7A, $2BE4, $2C4E, $2CB9, $2D24 DECLE $2D90, $2DFC, $2E69, $2ED6, $2F44, $2FB2, $3021, $3090 DECLE $3100, $3170, $31E1, $3252, $32C4, $3336, $33A9, $341C DECLE $3490, $3504, $3579, $35EE, $3664, $36DA, $3751, $37C8 DECLE $3840, $38B8, $3931, $39AA, $3A24, $3A9E, $3B19, $3B94 DECLE $3C10, $3C8C, $3D09, $3D86, $3E04, $3E82, $3F01, $3F80 DECLE $4000, $4080, $4101, $4182, $4204, $4286, $4309, $438C DECLE $4410, $4494, $4519, $459E, $4624, $46AA, $4731, $47B8 DECLE $4840, $48C8, $4951, $49DA, $4A64, $4AEE, $4B79, $4C04 DECLE $4C90, $4D1C, $4DA9, $4E36, $4EC4, $4F52, $4FE1, $5070 DECLE $5100, $5190, $5221, $52B2, $5344, $53D6, $5469, $54FC DECLE $5590, $5624, $56B9, $574E, $57E4, $587A, $5911, $59A8 DECLE $5A40, $5AD8, $5B71, $5C0A, $5CA4, $5D3E, $5DD9, $5E74 DECLE $5F10, $5FAC, $6049, $60E6, $6184, $6222, $62C1, $6360 DECLE $6400, $64A0, $6541, $65E2, $6684, $6726, $67C9, $686C DECLE $6910, $69B4, $6A59, $6AFE, $6BA4, $6C4A, $6CF1, $6D98 DECLE $6E40, $6EE8, $6F91, $703A, $70E4, $718E, $7239, $72E4 DECLE $7390, $743C, $74E9, $7596, $7644, $76F2, $77A1, $7850 DECLE $7900, $79B0, $7A61, $7B12, $7BC4, $7C76, $7D29, $7DDC DECLE $7E90, $7F44, $7FF9, $80AE, $8164, $821A, $82D1, $8388 DECLE $8440, $84F8, $85B1, $866A, $8724, $87DE, $8899, $8954 DECLE $8A10, $8ACC, $8B89, $8C46, $8D04, $8DC2, $8E81, $8F40 DECLE $9000, $90C0, $9181, $9242, $9304, $93C6, $9489, $954C DECLE $9610, $96D4, $9799, $985E, $9924, $99EA, $9AB1, $9B78 DECLE $9C40, $9D08, $9DD1, $9E9A, $9F64, $A02E, $A0F9, $A1C4 DECLE $A290, $A35C, $A429, $A4F6, $A5C4, $A692, $A761, $A830 DECLE $A900, $A9D0, $AAA1, $AB72, $AC44, $AD16, $ADE9, $AEBC DECLE $AF90, $B064, $B139, $B20E, $B2E4, $B3BA, $B491, $B568 DECLE $B640, $B718, $B7F1, $B8CA, $B9A4, $BA7E, $BB59, $BC34 DECLE $BD10, $BDEC, $BEC9, $BFA6, $C084, $C162, $C241, $C320 DECLE $C400, $C4E0, $C5C1, $C6A2, $C784, $C866, $C949, $CA2C DECLE $CB10, $CBF4, $CCD9, $CDBE, $CEA4, $CF8A, $D071, $D158 DECLE $D240, $D328, $D411, $D4FA, $D5E4, $D6CE, $D7B9, $D8A4 DECLE $D990, $DA7C, $DB69, $DC56, $DD44, $DE32, $DF21, $E010 DECLE $E100, $E1F0, $E2E1, $E3D2, $E4C4, $E5B6, $E6A9, $E79C DECLE $E890, $E984, $EA79, $EB6E, $EC64, $ED5A, $EE51, $EF48 DECLE $F040, $F138, $F231, $F32A, $F424, $F51E, $F619, $F714 DECLE $F810, $F90C, $FA09, $FB06, $FC04, $FD02, $FE01 ENDP ; R2 = R0 * R1, where R0 and R1 are unsigned 8-bit values ; Destroys R1 qs_mpy8 PROC MOVR R0, R2 ; 6 ADDR R1, R2 ; 6 a + b SUBR R0, R1 ; 6 a - b BPL @@ok ; 7 NEGR R1 ; 6 @@ok: ADDI #QSQR8_TBL, R2 ; 8 ADDI #QSQR8_TBL, R1 ; 8 [email protected] R2, R2 ; 8 [email protected] R1, R2 ; 8 JR R5 ; 7 ;---- ; 70 ENDP ; R1 = R0 * R1, where R0 and R1 are 16-bit values ; destroys R0, R2, R3, R4, R5 qs_mpy16 PROC PSHR R5 ; 9 MVII #QSQR8_TBL, R5 ; 8 MOVR R0, R2 ; 6 R2 is orig 16-bit a MOVR R1, R3 ; 6 R3 is orig 16-bit b ; lo * lo ANDI #$FF, R0 ; 8 R0 is lo(a) MOVR R0, R4 ; 6 R4 is lo(a) ANDI #$FF, R1 ; 8 R1 is lo(b) PSHR R1 ; 9 save lo(b) ADDR R1, R4 ; 6 R4 = lo(a) + lo(b) SUBR R0, R1 ; 6 R1 = lo(a) - lo(b) BPL @@pos_ll ; 7 NEGR R1 ; 6 @@pos_ll: ADDR R5, R4 ; 6 R4 = &qstbl[lo(a)+lo(b)] ADDR R5, R1 ; 6 R1 = &qstbl[lo(a)-lo(b)] [email protected] R4, R4 ; 8 R4 = qstbl[lo(a)+lo(b)] [email protected] R1, R4 ; 8 R4 = lo(a)*lo(b) ;---- ; 113 ; lo * hi SWAP R3 ; 6 \_ R3 = hi(b) ANDI #$FF, R3 ; 8 / MOVR R0, R1 ; 6 R0 = R1 = lo(a) ADDR R3, R1 ; 6 R1 = hi(b) + lo(a) SUBR R0, R3 ; 6 R3 = hi(b) - lo(a) BPL @@pos_lh ; 7 NEGR R3 ; 6 @@pos_lh: ADDR R5, R1 ; 6 R1 = &qstbl[hi(b)+lo(a)] ADDR R5, R3 ; 6 R3 = &qstbl[hi(b)-lo(a)] [email protected] R1, R1 ; 8 R1 = qstbl[hi(b)-lo(a)] [email protected] R3, R1 ; 8 R1 = lo(a)*hi(b) ;---- ; 73 ; 113 (carried forward) ;---- ; 186 ; hi * lo SWAP R2 ; 6 ANDI #$FF, R2 ; 8 R2 = hi(a) PULR R3 ; 11 R3 = lo(b) MOVR R3, R0 ; 6 R0 = lo(b) ADDR R2, R3 ; 6 R3 = hi(a) + lo(b) SUBR R0, R2 ; 6 R2 = hi(a) - lo(b) BPL @@pos_hl ; 7 NEGR R2 ; 6 @@pos_hl: ADDR R5, R3 ; 6 R3 = &qstbl[hi(a)+lo(b)] ADDR R5, R2 ; 6 R2 = &qstbl[hi(a)-lo(b)] [email protected] R3, R1 ; 8 \_ R1 = lo(a)*hi(b) + hi(a)*lo(b) [email protected] R2, R1 ; 8 / ;---- ; 84 ; 186 (carried forward) ;---- ; 270 SWAP R1 ; 6 \_ shift upper product left 8 ANDI #$FF00, R1 ; 8 / ADDR R4, R1 ; 6 final product PULR PC ; 12 ;---- ; 32 ; 270 (carried forward) ;---- ; 302 ENDP . I spent maybe 20 minutes on the 8x8 implementation, and another 40 - 60 minutes on the 16x16 implementation. (I first did a naive implementation that called qs_mpy8, and then a smarter implementation that inlined everything.) Tonight, I ran both through literally millions of random tests, comparing against JLP's multiply accelerator. (Side note: If you run jzIntv with rate control off (-r0), audio off (-a0), and minimize the window, it runs very, very fast. About 280x on my machine. 270x if you forget and leave audio on.) As the comment says, I release this to the public domain. If you use this in one of your games / programs / whatever, I don't mind a tip of the hat my way if you happen to think of it. And if not, eh, we still all get more cool games. If any of you find ways to improve this code (I'm sure it's possible), post it here and share with everyone! Homework assignment for the motivated: Add an 8x16 multiply to the library. With all three, then programs like IntyBASIC have a nice arsenal for implementing multiplication efficiently, with no surprises for oddball multiplicands. (That's presuming IntyBASIC can figure out if the arguments to the multiply come from 8 bit variables or 16-bit variables/intermediate results.) I think adding an 8x16 multiply mainly requires removing the 'hl' portion of the 16x16 multiply code and a PSHR, saving ~93 cycles. quarter_square_multiplication.asm
  21. I just finished programming a music program into my Commodore 64 in BASIC. I ran it before saving, and it worked fine. I saved it and turned the computer off, then back on and loaded it, then typed 'list' to make sure all the lines of the program were there. They were. So I ran it. All that I could hear was (the best way I can describe it) a clicking sound rather than the musical melody that was there before saving and loading. The program ran for it's regular cycle and exited like it was supposed to, but the sound was messed up. I tried this a few times with the same results. Thinking that perhaps my sound chip was burned out, I loaded games on both cartridge and floppy disk. They worked fine. So my next step was to type the program again, save it under a different name and on a different disk, and run it. Same results.The last thing I did was turn the computer off and back on, then type the program into it again. I ran it without saving and it worked fine. Bad drive maybe? It's just weird that I can load it and the program shows all the lines, but it won't work right. And only after loading it from a 5.25 floppy. Any ideas or thoughts? Just so you know, I am doing this on original hardware. I am using an actual breadbox C64 with a 1541 disk drive and disks that were brand new in the packages(DD Fujifilm). They formatted just fine too. Any advice you can give would be appreciated. Thanks guys!
  22. LEARN ASSEMBLY IN 8 HOURS with bB and the ASDK Tutorial Intro This tutorial will teach you 6502 Assembly programming for the Atari 2600 using a RAD Framework that abstracts the hardware so you can quickly marshal high level objects to build games like batari BASIC. Due to the similarities we will use BASIC examples side by side and use the bB compiler to illustrate (and to help with creating Assembly when preferred). Peruse and complete these short lessons over time or stay up all night drinking coffee and taking breaks to play Defender
  23. Hello all, I am a new to this forum. I would like to program the 2600 as a hobby. I have been reading posts this morning on how to begin. I am hoping that some of you nice folks can save me some time. I have read about DASM, batari Basic and others. Can someone answer a few questions for me and save me a great deal of time. Maybe this will help others also. What editor assembler software is used most these days? What do you recommend? Please leave a link. I have downloaded Barair Basic and and IDE and will install it today. Any useful links? Any other software that you folks use? I downloaded Stella and I have ordered a Harmony cartridge. I know these questions have been asked before but I ask for your patience and help. I hope to start writing some code today if I can get the software I need in place. Thanks to all of you in advance. Ed Cheek
  24. set kernel_options playercolors player1colors dim zombiewalk=a dim zombiewalk2=b dim zombiewalkdelay=c dim zombiewalk2delay=d dim zombiespeed=e dim ballwasshot=f CTRLPF=$21 playfield: ................................ ................................ ................................ ................................ ................................ ................................ ................................ ................................ ................................ ................................ XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX end player0: %1101100 %0100100 %0100100 %0100100 %0100100 %0010100 %0001000 %0001011 %1111111 %1111111 %0101010 %0011100 %0001000 %0011100 %0100010 %1000001 %1000001 %1000001 %0100010 %0011100 end player1color: $F0 $F0 $F0 $F0 $F0 $F0 $F4 $F4 $F4 $F4 $F4 $F4 $F4 $F4 $C4 $C4 $C4 $C4 $C4 $C4 end player1: %00011001 %00010010 %00010010 %00010010 %00011110 %00010000 %00011110 %10011100 %10011000 %10111101 %10111101 %10111001 %01111110 %00011100 %00011110 %00110001 %00111111 %00110101 %00111111 %00011110 end COLUBK=6 COLUPF=244 player0x=138 player0y=79 player1x=17 player1y=79 zombiespeed=20 ballheight=1 ballx=139 bally=71 ballwasshot=0 loop drawscreen player1: %00011001 %00010010 %00010010 %00010010 %00011110 %00010000 %00011110 %10011100 %10011000 %10111101 %10111101 %10111001 %01111110 %00011100 %00011110 %00110001 %00111111 %00110101 %00111111 %00011110 end if zombiewalk=1 then player1: %01100110 %01000100 %00100100 %00100100 %00011000 %00010000 %00011110 %10011100 %10111000 %10111010 %10111010 %10111010 %01111110 %00011100 %00011110 %00110001 %00111111 %00110101 %00111111 %00011110 end if switchreset then reboot if joy0left then player0x=player0x-1 if joy0right then player0x=player0x+1 if !joy0fire && !ballwasshot then ballx=player0x+1 if joy0fire then ballwasshot=1 if ballwasshot then ballx=ballx-2 if player0x>138 then player0x=138 if player0x<16 then player0x=16 if player1x>138 then player1x=138 if collision(ball,player1) then player1x=16:ballx=player0x+1:ballwasshot=0:score=score+1 zombiewalkdelay=zombiewalkdelay+1 if zombiewalkdelay=zombiespeed then zombiewalk=zombiewalk+1:zombiewalkdelay=0:player1x=player1x+1 if zombiewalk=2 then zombiewalk=0 goto loop The code was compiling and executing fine a while ago, but now, wherever I place my cursor, there is a syntax error there. Any tips?
  25. I am looking for a simple example of: a) A MADS based program. b) ... which will use an AtariMax 1mb or 8mb cartridge when written to it. c) ... which then can switch in any bank from the cartridge. I'd also like some clarification of: - If a 2 megabit file is added to the 8mb cartridge, when you're addressing bank 0, is that bank 0 of the file that is being addressed or bank 0 of the cartridge as a whole? I guess the latter.
  • Create New...