-
Content Count
494 -
Joined
-
Last visited
Content Type
Profiles
Member Map
Forums
Blogs
Gallery
Calendar
Store
Everything posted by Dionoid
-
Keep ‘m coming! Thanks!!!
-
understanding fine motion from the book
Dionoid replied to SavedByZero's topic in Atari 2600 Programming
In this case $70 and $60 are values, which after you store them into a HMPx register will instruct the TIA the horizontal pixel offset. Do you have a copy of the "Stella Programmer's Guide"? This guide is essential for learning (and lookup) of the Atari 2600 specs: online PDF version: https://atarihq.com/danb/files/stella.pdf printed booklet: http://www.lulu.com/shop/steve-wright/stella-programmers-guide/paperback/product-23621137.html This is the information from the Stella Programmer's Guide that you are looking for: -
Jentzsch/Davie '2600 tile/character graphics engine
Dionoid replied to Andrew Davie's topic in Atari 2600 Programming
(Note: I don't want to hijack this topic, so this will be my last reply with questions about dasm) Hi @RevEng, maybe we got off on the wrong foot here; I really appreciate that you have made these fixes in dasm and the things you're doing to keep the tool alive! And your 'AA' version of dasm allowed me to successfully assemble Andrew's code, so thanks again for that! I'm fairly new to AtariAge (I joined early 2018), so I didn't know about the history of dasm and it's various maintainers over the years. From the information I found in the forums, it looks like the dasm-dillon version on SourceForge wasn't updated since 2015, and the last release is from 2014. It surprises me that an open source tool like dasm isn't on GitHub, which is the 'de facto' platform to maintain and grow open source projects. Btw I did find a old copy of dasm by Dennis Munsie on GitHub, but after the initial commit in 2011 nothing has changed there, and Dennis hasn't visited AtariAge for almost a year now. Would you mind if I put your current version + your base version of dasm into a GitHub repository? If you like I can add you as member, so you can create branches and merge in new changes, etc. If you rather want to send me the updates now and then, that's okay too. Having things in GitHub makes it easy for other people to do pull requests to get their changes in. As an example: the changes that Darrell Spice Jr. has done in Feb/March 2018 (see this thread) in GitHub he could have done this himself with a pull-request which you could have then reviewed and merged back in. So the idea is that after the initial commits (i.e. base version + your current version) in the new GitHub repo, I can see if it makes sense to pull in changes that were done by Peter H. Fröhlich in the SourceForge repo. But I will be reluctant with that, as keeping a stable version of dasm is what we need. Maybe I should ask Peter himself to create a pull request for his changes from 2014 and 2015, if he is still interested. My ambition is that this new repo is going to be the single source for dasm, for which anyone can file issues, create forks and have changes pulled back in, etc. I wouldn't want any big rewrites; the goal is to stabilize the tool as much as possible so it can live on. And the repository won't be under my name, but under the organization named "dasm-assembler". IMO this makes it more professional and 'official': https://github.com/dasm-assembler Hope to hear from you. Please PM me on AtariAge if you like the plan (or not). Cheers! -
understanding fine motion from the book
Dionoid replied to SavedByZero's topic in Atari 2600 Programming
By the way, if you like books on 2600 assembly game development, Atari 2600 Programming for Newbies by @Andrew Davie is highly recommended! -
understanding fine motion from the book
Dionoid replied to SavedByZero's topic in Atari 2600 Programming
Good questions; for me it helped to write out the list of possible remainders (and their binary representation) to fully understand this. I also own a copy of "Making Games for Atari 2600", so I pasted the code below: ; A contains the X coordinate. ; First divide A by 15, as de DivideLoop takes 5 CPU cycles for each iteration ; 5 CPU cycles = 15 color clock cycles sec ; set carry DivideLoop sbc #15 ; substract 15 bcs DivideLoop ; branch while Carry still ste ; A now contains (the remainder - 15). ; We’ll convert that into a fine adjustment, which has ; the range -7 to +8. eor #7 ; this calculates (23-A) % 16 asl asl asl ; HMOVE only uses the top 4 bits, asl ; so shift left by 4 sta HMP0 ; set fine position ; That tricky calculation with EOR and ASL converts the remainder into a value ; appropriate for the horizontal motion register. ; ; Hugg, Steven. Making Games For The Atari 2600 ; (The 8bitworkshop Series Book 1) (Page 53). Puzzling Plans LLC. Kindle Edition. So right after the DivideLoop code, A contains the mathematical remainder minus 15; you could write that as (the remainder - 15) I guess. E.g. when you start with 30 as X coordinate, the mathematical remainder would be 0, but A would contain -15. And when you start with 44 as X coordinate, the mathematical remainder would be 14, but A would contain -1. So, the remainder in A can go from -1 (%11111111) to -15 (%11110001) I guess you could say that 'eor #7' is calculating (16 + 7 - A) % 16, but you would have to clear the top 4 bits of the result to make this statement true, so it's confusing. Anyway, by doing that 'eor #7' (or eor %00000111) and then shifting left 4 bits, this basically maps the remainder in A to values in the range $60, $50, $40, $30, $20, $10, $00, $F0, $E0, $D0, $C0, $B0, $A0, $90 and $80. When put in the HMP0 motion register, this will result in a vertical positioning of -6 to +8 "pixels". remainder in A: -15 | #11110001 -> #01100000 | $60 -> -6 pixels remainder in A: -14 | #11110010 -> #01010000 | $50 -> -5 pixels remainder in A: -13 | #11110011 -> #01000000 | $40 -> -5 pixels ... remainder in A: -10 | #11110110 -> #00010000 | $10 -> -1 pixels remainder in A: -9 | #11110111 -> #00000000 | $00 -> +0 pixels remainder in A: -8 | #11111000 -> #11110000 | $F0 -> +1 pixels ... remainder in A: -2 | #11111110 -> #10010000 | $90 -> +7 pixels remainder in A: -1 | #11111111 -> #10000000 | $80 -> +8 pixels So the value $70 (= -7 pixels) is actually never being mapped to, but this is no problem as using the range of -6 to +8 pixels will cover what we need to do fine positioning. Hope this helps! -
Jentzsch/Davie '2600 tile/character graphics engine
Dionoid replied to Andrew Davie's topic in Atari 2600 Programming
Thanks for pointing me to this build of dasm! The weird thing is that this is also version 2.20.11, but with a newer timestamp. I'm not sure why the version number didn't get updated for this build? On my local machine I now have these 4 different versions of dasm: dasm 2.20.11 build 2014.03.04 - from http://dasm-dillon.sourceforge.net/, which I wrongly assumed was the latest version dasm 2.20.11 build 20171206 - from the Batari Basic distribution page here: http://7800.8bitdev.org/index.php/Batari_basic dasm 2.20.07 - from another batari Basic distribution page: http://bataribasic.com/download.html (I got the 2.20.07 information when typing 'dasm -version') dasm 2.20.11 unofficial build 20140202a - from an older bB distribution I downloaded around March 2019: http://7800.8bitdev.org/images/1/18/BB.1.1d.reveng40.zip Are the sources of the dasm-version that you are using available somewhere in GitHub? -
Jentzsch/Davie '2600 tile/character graphics engine
Dionoid replied to Andrew Davie's topic in Atari 2600 Programming
Unfortunately I still cannot get it to compile on dasm for Windows (version 2.20.11-2014.03.04) It looks like label 'Board' is never initialized; if I wildcard search for that label, it is never set, but only used in lines like this: .BOARD_LOCATION SET Board -
Excellent update, John! Small remark: In the screen where you enter your initials after reaching a high-score, in the music there seem to be 2 or 3 notes off-key at the end of the tune just before it repeats itself. I know that getting notes in key is nearly impossible on the '2600, but to my ears, these 2 or 3 notes were way off. The rest of the music and sound effects are excellent, btw!
-
Jentzsch/Davie '2600 tile/character graphics engine
Dionoid replied to Andrew Davie's topic in Atari 2600 Programming
This is great stuff, Andrew! With the Windows version of dasm, I could not get it to compile. Is returns errors: BANK_INITBANK.asm (44): error: Unknown Mnemonic '+'. BANK_INITBANK.asm (52): error: EQU: Value mismatch. It looks like the board calculation dasm code (lines 779-791 in sokoboo.asm and lines 42-52 in BANK_INITBANK.asm) is clashing somewhere. Anyway, the code looks very interesting; I just started digging into it. It seems that each character has an R, G and B component, but on the screen the colors of the PF lines look more like Red, Yellow and Blue. Is that correct? -
I love the gloomy title music!!! This looks like a vertical version of Horizon Shift:
-
They crushed by personal highscore of 21K ! The score can go up to 99,999 so Jeff Smith is about half way there. Make sure to make a screenshot of what happens when you roll the score!
-
In case you missed the live stream, here is the episode of ZeroPageHomeBrew on Boulder Dash.
-
Yesterday I watched Boulder Dash on ZeroPageHomeBrew Twitch.... wat an amazing game and what an amazing background story!!! I'm happy to hear that owners of the original game responded here that they wouldn't mind a re-issue, as one day I would really love to play this game on my '2600. I'm keeping my fingers crossed hoping that Andrew and Thomas will be able to work it out with the new company owning Boulder Dash. And hopefully also a cart-only option will become available 🙂
-
Your highscore is shown at the start of each new game, just a few seconds after the game starts - as long as you don't move and your score is still 0. About making updates: the game's 4K ROM is fully used, so there's no space left to add anything. And production has already started 🙂
-
I could look at this picture for hours! 😄 I wonder if these amoeba's multiply when you keep them together in a box.
-
This is the first time that I'm looking at a disassembled and labeled game, and I'm really impressed by your analysis and detailed comments. Are there other games that you disassembled and analyzed/labelled/commented? Do you keep them together somewhere? About the game: Fishing Derby is an amazing piece of work in only 2K! I like how the water shimmer works with a pseudo-random number; pretty clever. Btw which encoding did you use for the fishing_derby.asm file? I'm seeing characters like this: � throughout the comments.
-
Looking forward to the source code of the title engine!
-
Yes, it's a solid book on Atari 2600 assembly programming. I also recommend Andrew Davies book "Atari 2600 Programming for Newbies": http://www.lulu.com/shop/andrew-davie/atari-2600-programming-for-newbies-revised-edition/paperback/product-23644281.html
-
Just wondering: would it be technically feasible to do 1 PF-pixel horizontal scrolling instead of 4 PF-pixel? Or is this impossible in a display kernel? I guess this was also discussed during development of Boulder Dash, but I cannot find it when I do a forum search.
-
Wow, this looks really good!!!! So cool to see Rockford playing the Sokoban game 🙂 Good to see you coding the '2600 again, Andrew! And too bad that I joined AtariAge only 1.5 years ago, so I missed the opportunity to buy Boulder Dash for the '2600 (which was one of my favorite games on the C64)
-
Stella-thon 12 Hour Gaming Marathon Fundraiser!
Dionoid replied to ZeroPage Homebrew's topic in Atari 2600
What an amazing show it was! I really enjoyed the call-ins!! Great to finally see and hear the people that inspired me to start developing for the '2600, which are Thomas Jentsch and Darrell Spice Jr. Maybe next time Andrew Davie could do a call-in, because I think he also has a lot interesting things to say about the '2600 and game development in the 80's. IMO Andrew's Atari 2600 Programming for Newbies together with Darrell's Collect Tutorial are an excellent way to learn about programming the '2600. On a side note: last year 124 copies of Andrew's book were ordered from Lulu.com. -
This game is pretty addictive! Great to see a new '2600 developer from the Netherlands. Welcome! And everyone from the Netherlands will love the name of the planet 'Venlo' in the background story of your game. 🙂 Btw: are you the same Harold Thijssen that made some retro games for the PC a few years back?
-
Great to hear you like the game! I want to release a beta of the '2 player vs' mode by end of July. In this 2 player mode you cannot pass each other, which means you can block the other player. E.g. you can prevent the other player from climbing the ledge that you stand on, and by falling down from a ledge you can crush the other player. The player who dies first, looses. Also the game is going to be an 8K rom (using bank-switching), because the current 4k wasn't enough to hold the logic for the 2-player modes and the extra graphics and sounds I want to add to the game. For the cartridge version of the game, I'm thinking about adding an additional '2 player co-op' mode, where you can work together to get the highest score. If you die, you can respawn as long as the other player is still alive. Cheers, Dion
-
Facebook integration seems to be broken after the forum upgrade (see screenshot of the error below). Other than that, I really like the new, fresh look. Great job, Albert!
-
Atari Bank Switching for Dummies
Dionoid replied to Thomas Jentzsch's topic in Atari 2600 Programming
Note that I found a specific combination of Stella settings that seems to solve the F8 debugging issues for me, see this post.
