-
Content Count
810 -
Joined
-
Last visited
Posts posted by khryssun
-
-
New version available to download.
What's new :
- Changed graphic core : smoother mouse drawing.
- Negative Playfield function added.
- Undo function added.
- Re-Positionning Playfield graphics on screen using arrows added.
You can find it here (jump to the Tools section ):
http://khryssun.free.fr/programming.html
Hope this'll help.
Chris
-
looking at my last post' date=' it seems more like I was posting my resume sorry then answering your question
. The people at work think I am crazy to want to learn to program assembly especially since I am the creative director
As an artist the Atari just seems like such fertile ground it is too enticing to pass up, though i must admit I am really out of my comfort zone this deep in the machine language. Guess it just takes time![/quote']Hi,
well, learning machine language (ML) is not as complicated as it seems... in fact, I consider it like a game : playing with the CPU and telling it to make what we want is really fun... :wink:
BTW : (Assembler is an improper term for this as it refers to the program that convert the machine laguage opcodes (LDA, STA, TXA...) of the source file (text) to a binary executable file understandable by the 6502/6510)... and it's this file created by the assembler that can be run on a computer using one of these microprocessors.)
As I said before, ML is easy in it's mechanisms : indeed, it's just playing with the instructions of the microprocessor.
Most of the operations are very basic : Load a value into a register, transfer a register's value into a memory address, transfer the value of one register to another, jump the program execution to another address regarding some conditions (or not), call a subroutine...
I'm very simplist but the things are not much more very complicated.
Personnaly I learnt ML when I had a Commodore 64. I had a book where all about the 6502/6510' programming was very, very well explained : it was the "Commodore 64 Programmer's Reference Guide"
If you are interrested, you can find the text version of the book here :
http://project64.c64.org/hw/c64prg10.zip
Forget all chapters about the C64, and jump directly to the Chapter 5 (page 209) : BASIC TO MACHINE LANGUAGE.
Everything you'll need is here :
- What is Machine laguage
- The registers of the 6510
- Hexadecimal notation
- Addressing modes
- The zero page
- The stack
- Indexing
- Branches and Testing
- Subroutines
- All Microprocessor instructions explained (with cycles)
Hope this'll help
take care,
chris
-
Andrew Davie wrote
[2] Instead of using the scanline to write the shape of the sprite, load the shape from a table. Can you think how it would be possible to draw (say) a mario-shaped sprite anywhere on the screen? This is tricky, so we'll devote a session or more to vertical positioning.Well, it's not Mario, but he's famous

processor 6502 include "vcs.h" include "macro.h" ;------------------------------------------------------------- ;- Start of code here - ;------------------------------------------------------------- SEG ORG $F000 Reset ;------------------------------------------------------------- ;- Clear RAM, TIA registers and Set Stack Pointer to #$FF - ;------------------------------------------------------------- SEI CLD LDX #$FF TXS LDA #0 Clear_Mem STA 0,X DEX BNE Clear_Mem LDA #$80 ; Blue STA COLUBK ; Background Color LDA #$1E ; Yellow STA COLUP0 ; Player 0 Color ;------------------------------------------------------------- ;- Start to Build Frame - ;------------------------------------------------------------- Start_Frame ; Start of Vertical Blank LDA #2 STA VSYNC STA WSYNC STA WSYNC STA WSYNC ; 3 scanlines of VSYNC LDA #0 STA VSYNC ; Start of Vertival Blank ; Count 37 Scanlines LDA #43 ; 2 cycles STA TIM64T ; 3 cycles ;>>>> Free space for code starts here : 2793 cycles Free ;>>>> Free space for code ends here Wait_VBLANK_End LDA INTIM ; 3 cycles BNE Wait_VBLANK_End ; 3 cycles STA WSYNC ;3 cycles Total Amount = 19 cycles ; 2812-19 = 2793; 2793/64 = 43.64 (TIM64T) LDA #0 STA VBLANK ; Enable TIA Output ; Display 192 Scanlines with Player 0 SLEEP 36 ; Player X = +/- Middle Screen STA RESP0 ; Set Player 0 (X) LDY #192 ; 192 Scanlines LDX #0 Picture CPY #110 ; Position Y reached ? BPL No_Drawing ; No = Continue CPX #14 ; 14 Lines of Sprite Datas Drawn ? BEQ No_Drawing ; Yes = Stop LDA Sprite_Data,X STA GRP0 INX No_Drawing STA WSYNC DEY ; 192 Scanlines drawn ? BNE Picture ; No = Continue ;------------------------------------------------------------- ;- Frame Ends Here - ;------------------------------------------------------------- LDA #%00000010 STA VBLANK ; Disable TIA Output ; 30 Scanlines of Overscan LDX #30 Overscan STA WSYNC DEX BNE Overscan JMP Start_Frame ; Build Next Frame ;------------------------------------------------------------- ;- Demo Datas - ;------------------------------------------------------------- Sprite_Data .byte #%00011000 .byte #%00111100 .byte #%01111110 .byte #%01101110 .byte #%11111111 .byte #%11111000 .byte #%11100000 .byte #%11111000 .byte #%11111111 .byte #%01111110 .byte #%01111110 .byte #%00111100 .byte #%00011000 .byte #%00000000 ;------------------------------------------------------------- ;- Set Interrup Vectors - ;------------------------------------------------------------- ORG $FFFA Interrupt_Vectors .word Reset ; NMI .word Reset ; RESET .word Reset ; IRQ END
-
Hi,
I wrote this utility to draw Playfields for the Atari VCS 2600 and to save the pictures as datas code ready to be included into VCS 2600 programs.
This editor is WYSWYG.
It supports Asymmetrical, Symmetrical and Mirrored Drawing modes
Learn more or download it in the new "VCS 2600 PROGRAMMING" page of my Website :
http://khryssun.free.fr/programming.html
It's located in the Tools section.
Hope this will help.
-
Hi,
I wrote this utility to draw Playfields for the Atari VCS 2600 and to save the pictures as datas code ready to be included into VCS 2600 programs.
This editor is WYSWYG.
It supports Asymmetrical, Symmetrical and Mirrored Drawing modes
Learn more or download it in the new "VCS 2600 PROGRAMMING" page of my Website :
http://khryssun.free.fr/programming.html
It's located in the Tools section.
Hope this will help.
-
Thanks a lot Zach
Nice to see combat in a new design

-
I've programmed an assymetrical playfield with a multi vertical
scrolling for the right side of the playfield.

; Display 192 Scanlines of Asymetrical Playfield with ; Multi Scrolling effect of Playfield 2 (right side) LDY #48 ; 48 * 4 pixel high = 192 lines LDX #4 ; Change playfield pattern every ; 4 lines Picture LDA #%01010000 STA PF0 LDA #%00011000 STA PF1 LDA #%10111100 STA PF2 SLEEP 4 LDA PF0ADR STA PF0 SLEEP 4 LDA PF1ADR STA PF1 SLEEP 4 LDA PF2ADR STA PF2 STA WSYNC DEX BNE Picture DEY BEQ Picture_End LDA #%01010000 STA PF0 LDA #%00011000 STA PF1 LDA #%10111100 STA PF2 INC PF0ADR ; Change Pattern PF0 LDA PF0ADR STA PF0 INC PF1ADR ; Change Pattern PF1 LDA PF1ADR STA PF1 INC PF2ADR ; Change Pattern PF2 LDA PF2ADR STA PF2 LDX #3 ; 3 Scanlines To Draw STA WSYNC;+1 (The Currenr One) = 4 JMP Picture Picture_End
-
Never too late to start programming my favorite console.
It's a mirrored playfield demo with a color scrolling.
I coded this demo thinking to my wife

Here is the code :
;///////////////////////////////////////////////////////////////// ;// Heart Playfied Demo V1.00 - Christian Bogey, April 16, 2004 // ;// Mirrored Playfield with Playfield Color Scrolling // ;///////////////////////////////////////////////////////////////// processor 6502 include "vcs.h" include "macro.h" ;///////////////////////// Vars /////////////////////////////////////// Color_Start = $80 ; Playfield Color (Color of the 1st Line) Color = $81 ; Temp Var Address ;/////////////////// Playfield Datas ////////////////////////////////// ; PF0 ;PFData0_0 = #%11110000 ; Up and Down * 8 Lines // Idem as PFData2_0 PFData0_1 = #%00010000 ; Middle * 176 ; PF1 ;PFData1_0 = #%11111111 ; Up and Down * 8 Lines // Idem as PFData2_0 ;PFData1_1 = #%00000000 ; Middle * 176 // Idem as PFData2_1 ; PF2 PFData2_0 = #%11111111 ; Up and Down * 8 Lines PFData2_1 = #%00000000 ; Empty Lines * 8 (5 Up and 5 Down) ;///////////////// Start of Code ///////////////////////////////////// SEG ORG $F000 Reset ; Clear RAM, TIA registers and Set Stack Pointer to #$FF SEI CLD LDX #$FF TXS LDA #0 Clear_Mem STA 0,X DEX BNE Clear_Mem STA Color_Start; Init Playfield Color LDA #1 STA CTRLPF; Mirrored Playfiels LDA #$00 STA COLUBK; Set Background to Black ;/////////////////// Picture Starts Here ///////////////////////////// Start_Frame ; Start VSYNC LDA #2 STA VSYNC STA WSYNC STA WSYNC STA WSYNC ; 3 Scanlines of VSYNC LDA #0 STA VSYNC; End VSYNC ; 37 Scanlines of Vertical Blank... LDX 37 Vertical_Blank STA WSYNC DEX BNE Vertical_Blank LDA #0 STA VBLANK ; Enable TIA Output ;////////////// Start To Draw Playfield /////////////////////////////// LDX Color_Start STX Color STX COLUPF ; Draw Top Bar LDY #8 ; 8 Lines to Draw LDA #PFData2_0 STA PF0 STA PF1 STA PF2 Draw_Bar1 STA WSYNC DEX STX COLUPF DEY BNE Draw_Bar1 ; Draw 5 Empty Lines LDY #5*8 LDA #PFData0_1 STA PF0 LDA PFData2_1 STA PF1 STA PF2 Empty_Lines1 STA WSYNC DEX STX COLUPF DEY BNE Empty_Lines1 ; Draw Heart STX Color LDX #$0C ; Init Index Draw_Heart LDA PF2HeartData-1,X ; (Keep PF0 & PF1) STA PF2 LDY #8 ; 8 Lines TXA ; Save Index LDX Color Draw_Heart_Line STA WSYNC DEX STX COLUPF DEY BNE Draw_Heart_Line STX Color ; Save Color Index TAX ; Restore Index DEX BNE Draw_Heart ; Draw 5 Empty Lines LDX Color; Restore Color Index LDY #5*8 LDA PFData2_1 STA PF2 ; Clear PF2 (Keep PF0 & PF1) Empty_Lines2 STA WSYNC DEX STX COLUPF DEY BNE Empty_Lines2 ; Draw Bottom Bar LDY #8 ; 8 Lines to Draw LDA #PFData2_0 STA PF0 STA PF1 STA PF2 Draw_Bar2 STA WSYNC DEX STX COLUPF DEY BNE Draw_Bar2 ;////////////// End To Draw Playfield ///////////////////////////////// ; Makes Colors to Scroll Up LDX Color_Start DEX ; Use INX instead of DEX to Scroll Up STX Color_Start ;////////////// End Of Display //////////////////////////////////////// LDA #%01000010 ; Disable VIA Output STA VBLANK ; 30 scanlines of overscan... LDX #30 Overscan STA WSYNC DEX BNE Overscan JMP Start_Frame ; Build Next Frame ;////////////// Heart Data //////////////////////////////////////////// PF2HeartData .byte #%10000000; Heart Pic Data End * 8 Lines .byte #%11000000; .byte #%11100000; .byte #%11110000; .byte #%11111000; .byte #%11111100; .byte #%11111110; 12 * 8 = 96 .byte #%11111110; .byte #%11111110; .byte #%11111100; .byte #%11111000; .byte #%01110000 ; Heart Pic Data Start * 8 Lines ;////////////// Set Vectors /////////////////////////////////////////// ORG $FFFA ; Interrupt Vectors .word Reset ; NMI .word Reset ; RESET .word Reset ; IRQ END
-
I never read this article before.
In my point of view, it is EXTRA-TERRIFIC (in the scary meaning)

-
Thanks fellow

-
The Dig Source Code Archive link into the
System > 2600 > programming section doesn't work.
Is the site dead or has it moved ?
Maybe a mirror exists ?
Any info is welcome.
Thanks
-
Just wondering how many are really active on the forums...
Anyway Congrats to AA

-
My top 5 :
- Howard Scott Warshaw : Yar's revenge, E.T. and Raiders of the lost ark are my favorites games.
- John Van Ryzin for the amazing H.E.R.O.
- Rex Bradford for the wonderful SW: The Empire Strikes Back
- Carla Meninsky for the Great Star Raiders
- David Crane for all the good games he programmed too
-
I always played for the High Score so far.
The Continue option is an evil temptation

-
Really nice work Krytol. Congrats.
lol Moycon, I think yours was made quickly. It seems you use the copy/paste functions very well

-
Nice work for this April Fool's joke Albert

-
A modification can be done on the 7800's mainboard if robot tank doesn't work with it.
I don't remember where I found the schematics (maybe it's still into the Atari Age Message Board Archives) but I've done the modification 2 years ago (as I remember it's just a resistor to remove).
I made an avanced version of this modification with a switch button located at the back of the 7800 so I can enable/disable the resistor.
and it works fine.

-
If you want to build it yourself, it's easy and cheap :
http://khryssun.free.fr/joyadapter.html
Note :This adapter works with joysticks only. Paddles, Keyboards and Driving controlers won't work.
But it works with all games/programs/emulators that use the standard PC joystick Port.

-
CWshredder has solved my problem, but as you all suggest I think I'd better switch to a more secure browser.
Thanks for the info Duane, I didn't knew MyIE2. It Looks good
BTW: You made a really nice job with your "To What Degree Do You Love E.T.?" pages !
Well I've got a little secret to tell about E.T.
I've posted it here : http://www.atariage.com/forums/viewtopic.p...p=558507#558507
-
Well I've got a little secret to tell about E.T.
The easter egg I've hidden I my VCS Simulator's game "Rays' Quest" was about E.T.
As I made it near impossible to find
... I think I can tell now what it is :When doing several short right and left moves with the yar pressing the fire button at the left bottom of the room located just before the Left symbols deposite room, it makes E.T. appear and crossing the screen (and gives extra lives too).
-
Thanks fellows,
I'am gonna keep a close eye on the situation.
I'll try CWshredder and/or maybe I'll install a new browser such Opera, I think it's a good one.
-
Why don't add a "Set Atariage as your default Start Page" link at the top or the bottom of the main Atariage page ?
Just got that idea because as a lot of people here I'm surfing the web a lot and I'am bothered with some sites (lottos in particular) which change the default start page of my browser without asking.
I've got to go to the option menu of my browser to chage the default starting url manually everytime.
I'am sure I'am not the only one in this case, and I think It would be usefull to add a "Set Atariage as the default Start Page" link to the main AtariAge page so we'll just have to click on it to redefine The AtariAge web site as the default one.
What do you think about it

-
Yes,
big vs small ship's diamonds was already known as a label variation.
-
Hi , I'm khryssun's wife and I can see your web site each time I connect myself on the web (my husband has set atariage's page as the default web browser's start page). So I would like to say that I especially enjoyed the saint valentin's atariage's logo with the lovely little hearts.
Please continue to make your site so interresting for my husband (I know he really loves it
..... and it was a really pleasure for me to see him so happy when he received the cart he won at the atariage's Christmas 2003 contest) and so pleased to look at (nice design...).
BTW I was really surprised when I saw the picture's quality of the cartrige. Congratulations for the programmers.


TIA Playfield Painter V1.02 Released
in Atari 2600 Programming
Posted
New version available to download.
What's new :
- Changed graphic core : smoother mouse drawing.
- Negative Playfield function added.
- Undo function added.
- Re-Positionning Playfield graphics on screen using arrows added.
You can find it here (jump to the Tools section) :
http://khryssun.free.fr/programming.html
Hope this'll help.
Chris