-
Content Count
499 -
Joined
-
Last visited
Content Type
Profiles
Member Map
Forums
Blogs
Gallery
Calendar
Store
Everything posted by vidak
-
Fooling around with assembly part 3
vidak commented on atari2600land's blog entry in atari2600land's Blog
I hope your Mum is okay -
Okay, good news and frustrating news. Good News I have learned how to write to the playfield. I am equal parts indebted to Kirk Israel, SpiceWare, and Andrew Davie. See attached the screenshot of the small program I wrote to write 192 lines of the PF1 portion SpiceWare's first Arena in Collect. I also attached the source code. I think there may be some small errors in it, but I'm very happy that I was able to achieve some sort of result. So I now know how to write player graphics and playfield graphics to the screen. Frustrating News Commando is far far too complex for me to disassemble. What I really want to know by looking into Commando was not: How to scroll the screen How to animate the characters Because Collect already shows you how to do that. What I wanted to know out of Commando was how to change the colour of the player graphics line by line. But after actually looking through Random Terrain and looking at Andrew Davie's Programming for Newbies, I can see that you just need to load the colour of the graphics in before you start writing the player graphics. You could store the player's colour in a table and point to it with a pointer. Things Yet to Do My first goal is to get a quick demo of Che Guevara running around in the jungle. A lot of the graphics in Commando are quite nice and I will take them and mutilate them into something like looks like the Cuban jungle in the mountains. That's my immediate goal. I hope to have some sort of kernel which can display trees with different lines of colour, and a little Player0 Che Guevara who can run around them. Anyway this is my update! playfield_basic.asm
-
Thanks a lot! I'm really glad I made this blog post - it got someone to give me help! I never thought of using the Stella Debugger! I haven't been making guesses, I've just been going through the kernel and trying to guess what each of the variables are for based on what the program is doing. I've found a variable which counts from 0-37, i've found the horizontal positioning routine for the Player1 graphics. I've been trying to track down where each of the variables that set the graphics in the kernel come from. There seems to be an elaborate set of code that does this: lda ram_97,X ; 4 - Make A = ram_97,X again <- Here is ram_97 again and #$07 ; 2 - Mask off #00000111 again sta ram_D7 ; 3 - Then store in ram_D7 (then next variable on from D6) asl ; 2 - Arithmetic shift left in A(multiply by 2) adc ram_D7 ; 3 - Then add another ram_D7 in A (multiply by 3) adc #$02 ; 2 - Then add #2 tay ; 2 - Transfer A to Y then this subroutine: lda ram_97,X ; 4 - Make A = ram_97,X lsr ; 2 - Divide by 2 lsr ; 2 - Divide by 4 lsr ; 2 - Divide by 8 lsr ; 2 - Divide by 16 lsr ; 2 - Divide by 32 eor #$FF ; 2 - Flip all the bits clc ; 2 - Clear carry adc #$20 ; 2 - Add 32 to A rts ; 6 sec ; 2 - Set Carry sbc #$17 ; 2 - Subtract 23+1 sta ram_D7 ; 3 - Store in ram_D7 lda (ram_DB),Y ; 5 - A = (ram_DB),Y - where Y was the result of (3*A)+2 <-here is ram_DB again sec ; 2 - Set Carry sbc ram_D7 ; 3 - Subtract (ram_D7)+1 sta ram_A1,X ; 4 - Store in ram_A1,X iny ; 2 - INC Y Then in the kernel, ram_A1,X is transferred into ram_DD, which is then used to set GRP1. Very confusing... I am trying to figure out what this is doing...
-
Intellivision Colors - Food Coloring Style
vidak commented on walker7's blog entry in 8-bit Computer System Colors in Food Coloring
This is great! I didn't realise the Intellivision only that 16 colours! Kinda makes me appreciate the 2600, with its 128... But anyway this makes me want to play the Intellivision! -
After a day working on Commando, it's proving very confusing. The disassembler has obviously scrambled all the variable names, labels and routine titles. Maybe tomorrow I will start posting snippets of code on the forums and ask for help. I know what some of the most important variables are, I just can't seem to work out what any of them are doing.
-
Put some effort into this last night! I'm working my way through the kernel and trying to work out what each variable is for. Listening to Isaac Hayes's "Don't Let Go" while I work!
-
Since I have returned to coding after doing quite a bit of work on my thesis, I have started going through the kernel of Commando and commenting it. It uses the SBC #15 and lookup table method of horizontal positioning.
-
http://bootlicker.doubledashgames.com/commo-dig/
-
Okay the Commo Dig is complete up until April 2004. I completed December 2003, and January, February, March 2004 today.
-
Thanks so much!
-
Just informing all that I'm doing some work on the Commo Dig today. Life has been busy and full of activism - so I have been working on my thesis! But I'm back now.
-
This is a fantastic hack! I just bought a Raspberry Pi 3 for a specific project, but since I can't afford at 2600 here in Australia, I think I'll hack together a PieCade!
-
I think the opcode is meant to finish its execution on cycle 23. I think RESP0 takes 3 cycles, so if you start it on cycle 20, it will finish just in time on exactly cycle 23. This is SpiceWare's version of the RESP0 code, and it finishes its cycle on cycle 23. You can find this code in CollectMini. PosObject: sec sta WSYNC DivideLoop sbc #15 ; 2 2 - each time thru this loop takes 5 cycles, which is bcs DivideLoop ; 2 4 - the same amount of time it takes to draw 15 pixels eor #7 ; 2 6 - The EOR & ASL statements convert the remainder asl ; 2 8 - of position/15 to the value needed to fine tune asl ; 2 10 - the X position asl ; 2 12 asl ; 2 14 sta.wx HMP0,X ; 5 19 - store fine tuning of X sta RESP0,X ; 4 23 - set coarse X position of object rts ; 6 29
-
there's some binaries on the Stella Mailing List, also all the source code is there. July 2003 is the month to look for.
-
This is the link to the latest source code on the Stella Mailing List: http://www.biglist.com/lists/stella/archives/200306/msg00113.html See the Commo Dig for the entire source code development.
-
is the postage really that much??
-
Thanks everyone
-
Hey! 2600s are super expensive here in Australia. I have attached some photos of the cheapest online listings, to show you just how expensive 2600 items are. The Xbox One S is 299 here in Australia with 2 games, I refuse to believe 250 for a single 2600 console is a good deal. Does anyone know where I'd be able to get a decent deal on a 2600 here in Australia? Sent from my ASUS_Z012D using Tapatalk
-
Atari 2600 chronogaming video project: Atari Archive
vidak replied to ubersaurus's topic in Atari 2600
I'd love to help! I can provide explanations from disassemblies about how the games work! Sent from my ASUS_Z012D using Tapatalk -
I forget if this was discussed, but have you seen Andrew Davie's Mortal Kombat 2600 clone Fu Kung on the Stella Mailing List? Sent from my ASUS_Z012D using Tapatalk
-
There is a program by Dennis Debro in the Stella Mailing List! http://www.biglist.com/lists/stella/archives/200211/msg00166.html Sent from my ASUS_Z012D using Tapatalk
-
Carrot Kingdom™ - Work in Progress 32K! - New Demo 10-16-2017
vidak replied to Jinroh's topic in Atari 2600 Programming
I am excited for this game! Sent from my ASUS_Z012D using Tapatalk -
Wait you're still wrapping around the entire zero page space. Normally you just go $80, and $81, then LDA ($80), Y Sent from my ASUS_Z012D using Tapatalk
-
WAIT INDIRECT Y USES THE ZERO PAGE MY BAD Sent from my ASUS_Z012D using Tapatalk
-
From my understanding I think you might have the concept correct. This forum post from 6502.org seems to confirm what you're saying: http://forum.6502.org/viewtopic.php?f=2&t=2195 However I'm not sure about wrapping around the entire memory space. You're wrapping around the entire memory space twice: first in the memory addresses storing the pointer, and then when you increment by y in the actual operation. I'm a newbie, so I'm not sure about this, but I wouldn't try and wrap around the entire memory space Hopefully this is correct? Sent from my ASUS_Z012D using Tapatalk
