DonavinTheSuperGamer Posted June 5, 2016 Share Posted June 5, 2016 (edited) Hello. My name is Donavin. I really want to become an Atari 7800 home-brewer. When I found out game programmers were still making games for the Atari systems, I felt like I should jump right into the party. I was wondering if anyone knows a good software I can use to code for the Atari 7800. I would appreciate the help. Edited June 5, 2016 by DonavinTheSuperGamer Quote Link to comment Share on other sites More sharing options...
tdididit Posted June 5, 2016 Share Posted June 5, 2016 http://mads.atari8.info Quote Link to comment Share on other sites More sharing options...
+Trebor Posted June 5, 2016 Share Posted June 5, 2016 You may find these threads useful, Donavin: -7800 Basic programming tutorials? -7800 Development Wiki at 8bitdev.org -New Programmer Questions -Bitmap to 7800 Graphics Converter -Creating 7800basic compatible graphics images with Gimp Quote Link to comment Share on other sites More sharing options...
OmegaPrime Posted June 5, 2016 Share Posted June 5, 2016 (edited) If you're not heavily familiar with 6502 assembly I'd start with c64 to begin with until your knowledge of 6502 is good enough to develop for a good system.Their is also 7800 basic if you choose the basic route.If you can understand some of my code than 6502 is for you if not basic is the correct choice for now. ;======================================================= Do_Div16: lsr Do_Div8: lsr lsr lsr rts ;======================================================= DrawStage: lda $d011 and #%11101111 sta $d011 jsr ClearScreen ;Exit With Y = 0 lda #<ScreenRam sta _TmpPointer2+0 sta _TmpPointer1+0 lda #>ScreenRam sta _TmpPointer2+1 lda #>ScreenColorRam sta _TmpPointer1+1 lda _CurrentStage asl tax lda ScreenStructureTable+0,x sta _TmpPointer3+0 lda ScreenStructureTable+1,x sta _TmpPointer3+1 DrawLoop: lda (_TmpPointer3),y sta _Tmp1 jsr Do_ModTmpPointer3 lda (_TmpPointer3),y sta _Tmp3 jsr Do_ModTmpPointer3 lda (_TmpPointer3),y sta _Tmp4 jsr Do_ModTmpPointer3 -: lda _Tmp3 sta (_TmpPointer2),y jsr Do_ModTmpPointer2 lda _Tmp4 sta (_TmpPointer1),y jsr Do_ModTmpPointer1 dec _Tmp1 bne - lda (_TmpPointer3),y bne DrawLoop iny lda (_TmpPointer3),y pha and #%11110000 jsr Do_Div16 sta BackgroundExtraColor1 pla and #%00001111 sta BackgroundExtraColor2 lda $d011 ora #%00010000 sta $d011 rts ;======================================================= Do_ModTmpPointer2: lda _TmpPointer2+0 clc adc #1 sta _TmpPointer2+0 bcc + inc _TmpPointer2+1 +: rts ;======================================================= Do_ModTmpPointer1: lda _TmpPointer1+0 clc adc #1 sta _TmpPointer1+0 bcc + inc _TmpPointer1+1 +: rts ;======================================================= Do_ModTmpPointer3: lda _TmpPointer3+0 clc adc #1 sta _TmpPointer3+0 bcc + inc _TmpPointer3+1 +: rts ;======================================================= ScreenStructureTable: !word Screen1Data !word Screen2Data !word Screen3Data !word Screen4Data ;======================================================= Edited June 5, 2016 by OmegaPrime 1 Quote Link to comment Share on other sites More sharing options...
DonavinTheSuperGamer Posted June 5, 2016 Author Share Posted June 5, 2016 http://mads.atari8.info It sounds very interesting. However, when I ask for download, it gives me .7z files that my computer doesn't know how to run. Also, it's in a language I do not understand. You may find these threads useful, Donavin: -7800 Basic programming tutorials? -7800 Development Wiki at 8bitdev.org -New Programmer Questions -Bitmap to 7800 Graphics Converter -Creating 7800basic compatible graphics images with Gimp Thanks. This is very interesting; being able to create graphics faster and more efficiently. I can use this for reference in the future. This is very helpful. If you're not heavily familiar with 6502 assembly I'd start with c64 to begin with until your knowledge of 6502 is good enough to develop for a good system.Their is also 7800 basic if you choose the basic route.If you can understand some of my code than 6502 is for you if not basic is the correct choice for now. ;======================================================= Do_Div16: lsr Do_Div8: lsr lsr lsr rts ;======================================================= DrawStage: lda $d011 and #%11101111 sta $d011 jsr ClearScreen ;Exit With Y = 0 lda #<ScreenRam sta _TmpPointer2+0 sta _TmpPointer1+0 lda #>ScreenRam sta _TmpPointer2+1 lda #>ScreenColorRam sta _TmpPointer1+1 lda _CurrentStage asl tax lda ScreenStructureTable+0,x sta _TmpPointer3+0 lda ScreenStructureTable+1,x sta _TmpPointer3+1 DrawLoop: lda (_TmpPointer3),y sta _Tmp1 jsr Do_ModTmpPointer3 lda (_TmpPointer3),y sta _Tmp3 jsr Do_ModTmpPointer3 lda (_TmpPointer3),y sta _Tmp4 jsr Do_ModTmpPointer3 -: lda _Tmp3 sta (_TmpPointer2),y jsr Do_ModTmpPointer2 lda _Tmp4 sta (_TmpPointer1),y jsr Do_ModTmpPointer1 dec _Tmp1 bne - lda (_TmpPointer3),y bne DrawLoop iny lda (_TmpPointer3),y pha and #%11110000 jsr Do_Div16 sta BackgroundExtraColor1 pla and #%00001111 sta BackgroundExtraColor2 lda $d011 ora #%00010000 sta $d011 rts ;======================================================= Do_ModTmpPointer2: lda _TmpPointer2+0 clc adc #1 sta _TmpPointer2+0 bcc + inc _TmpPointer2+1 +: rts ;======================================================= Do_ModTmpPointer1: lda _TmpPointer1+0 clc adc #1 sta _TmpPointer1+0 bcc + inc _TmpPointer1+1 +: rts ;======================================================= Do_ModTmpPointer3: lda _TmpPointer3+0 clc adc #1 sta _TmpPointer3+0 bcc + inc _TmpPointer3+1 +: rts ;======================================================= ScreenStructureTable: !word Screen1Data !word Screen2Data !word Screen3Data !word Screen4Data ;======================================================= Wow. That is REALLY complicated. THAT'S 6502? That's insane. I can't even tell what this is supposed to make the system do. I'm used to BASIC. I wonder if there is a program that lets me write 7800 games in BASIC. At least I know that language a bit. Quote Link to comment Share on other sites More sharing options...
tdididit Posted June 5, 2016 Share Posted June 5, 2016 (edited) It sounds very interesting. However, when I ask for download, it gives me .7z files that my computer doesn't know how to run. Also, it's in a language I do not understand. http://www.7-zip.org there is polish and english version of manual for pascal manual you will need use google translator Edited June 5, 2016 by tdididit Quote Link to comment Share on other sites More sharing options...
DonavinTheSuperGamer Posted June 6, 2016 Author Share Posted June 6, 2016 http://www.7-zip.org there is polish and english version of manual for pascal manual you will need use google translator Thanks! I did that and it makes more sense now. So I have to extract the .7z files. So I did that, and now I don't know what to do, I found some .bat and .exe files, but they close instantly when I run them. Other than that, there's a bunch of .pas, .obx, and .cgsyn files that the computer can't run either. Do I have to somehow extract those too, or am I doing something wrong? Quote Link to comment Share on other sites More sharing options...
tdididit Posted June 6, 2016 Share Posted June 6, 2016 in MADS package you got 7800 examples, all need to be compiled and signed to run on real hardware or emulator (a78 header need to added too) my build bat file: bin\mads.exe a78-robbo.asm -o:a78-robbo.a78 bin\a78sign.exe -f a78-robbo.a78 my a78 file header ;******* a78 ROM file header **************************** .array tab [128] .byte = $00 [0] = 1 ; wersja nagłówka [1] = 'ATARI7800' ; [17] = 'ROBBO 7800' ; title [49] = $00,$02,$00,$00 ; size (4 bajty) [53] = %00000000 ; bit 0 - Activision BS mode ; bit 1 - Absolute BS mode [54] = %00000110 ; typ cartridge'a ; bit 0 - pokey ; bit 1 - supercart bankswitched ; bit 2 - supercart ram ; bit 3 - ROM at $4000 ; bit 4 - Bank 6 at $4000 [55] = 1 ; kontroler port 1 [56] = 0 ; kontroler port 2 ; 0 = brak ; 1 = joystick ; 2 = lightgun [57] = 1 ; PAL ??? [58] = 1 ; HSC [63] = 1 ; XM [100] = 'ACTUAL CART DATA STARTS HERE' .enda ;******* End of a78 ROM file header ********************** Quote Link to comment Share on other sites More sharing options...
DonavinTheSuperGamer Posted June 6, 2016 Author Share Posted June 6, 2016 in MADS package you got 7800 examples, all need to be compiled and signed to run on real hardware or emulator (a78 header need to added too) my build bat file: bin\mads.exe a78-robbo.asm -o:a78-robbo.a78 bin\a78sign.exe -f a78-robbo.a78 my a78 file header ;******* a78 ROM file header **************************** .array tab [128] .byte = $00 [0] = 1 ; wersja nagłówka [1] = 'ATARI7800' ; [17] = 'ROBBO 7800' ; title [49] = $00,$02,$00,$00 ; size (4 bajty) [53] = %00000000 ; bit 0 - Activision BS mode ; bit 1 - Absolute BS mode [54] = %00000110 ; typ cartridge'a ; bit 0 - pokey ; bit 1 - supercart bankswitched ; bit 2 - supercart ram ; bit 3 - ROM at $4000 ; bit 4 - Bank 6 at $4000 [55] = 1 ; kontroler port 1 [56] = 0 ; kontroler port 2 ; 0 = brak ; 1 = joystick ; 2 = lightgun [57] = 1 ; PAL ??? [58] = 1 ; HSC [63] = 1 ; XM [100] = 'ACTUAL CART DATA STARTS HERE' .enda ;******* End of a78 ROM file header ********************** I am terribly sorry if I am making this difficult. How exactly do I compile these files? Quote Link to comment Share on other sites More sharing options...
tdididit Posted June 6, 2016 Share Posted June 6, 2016 put header on top of asm example, change size and params then use command line like in my bat file check this site, here you will find sign.exe app http://www.atarihq.com/danb/a7800.shtml Quote Link to comment Share on other sites More sharing options...
DonavinTheSuperGamer Posted June 6, 2016 Author Share Posted June 6, 2016 put header on top of asm example, change size and params then use command line like in my bat file check this site, here you will find sign.exe app http://www.atarihq.com/danb/a7800.shtml Okay. This is much more tedious than I thought it would be. I wish there was just a program that could take BASIC and turned it into 6502. Quote Link to comment Share on other sites More sharing options...
DonavinTheSuperGamer Posted June 6, 2016 Author Share Posted June 6, 2016 Thanks guys for all of the help. I greatly appreciate it. You know what I really wish? I wish that guy who made Pac-Man Collection was here to help. (I think his name was Bob or something [maybe PacManPlus?]) I don't remember. I just know he made some of the best games I ever bought. Maybe he could give me some pointers on what he uses. Quote Link to comment Share on other sites More sharing options...
Mord Posted June 6, 2016 Share Posted June 6, 2016 Okay. This is much more tedious than I thought it would be. I wish there was just a program that could take BASIC and turned it into 6502. Well... 7800Basic -does- generate the assembly code of it prior to making the executable. (if you compiled game.bas, it'd leave (Among other files) game.asm, game.a78, and game.bin in the same directory. You can also use inline assembly inside a basic file. 1 Quote Link to comment Share on other sites More sharing options...
+frankodragon Posted June 6, 2016 Share Posted June 6, 2016 Thanks guys for all of the help. I greatly appreciate it. You know what I really wish? I wish that guy who made Pac-Man Collection was here to help. (I think his name was Bob or something [maybe PacManPlus?]) I don't remember. I just know he made some of the best games I ever bought. Maybe he could give me some pointers on what he uses. You mean this guy? http://atariage.com/forums/user/1787-pacmanplus/ He uses assembly language (DASM, I think, but not sure) to make most of his games. If assembly is giving you a headache, then you may want to try 7800Basic. As Mord mentioned above, the Basic file is generated into assembly code. There are also samples to get you started. Quote Link to comment Share on other sites More sharing options...
DonavinTheSuperGamer Posted June 6, 2016 Author Share Posted June 6, 2016 (edited) You mean this guy? http://atariage.com/forums/user/1787-pacmanplus/ He uses assembly language (DASM, I think, but not sure) to make most of his games. If assembly is giving you a headache, then you may want to try 7800Basic. As Mord mentioned above, the Basic file is generated into assembly code. There are also samples to get you started. I think that could be him. It sure looks like it. Wow, he's awesome. So you and Mord are telling me this '7800basic' uses BASIC and changes it to 6502 assembly for you? Well, that sounds very interesting. I will check it out. Edited June 6, 2016 by DonavinTheSuperGamer Quote Link to comment Share on other sites More sharing options...
OmegaPrime Posted June 6, 2016 Share Posted June 6, 2016 (edited) 7800basic is a good choice and you can make some impressive games with it.Don't feel shy to ask questions as we were all beginners once,it's going to take some patience from you to learn but stick it out and a new world will open up for you. Edited June 6, 2016 by OmegaPrime 1 Quote Link to comment Share on other sites More sharing options...
+frankodragon Posted June 6, 2016 Share Posted June 6, 2016 You may also want to look at this page for reference/help: http://randomterrain.com/7800basic.html Quote Link to comment Share on other sites More sharing options...
DonavinTheSuperGamer Posted June 6, 2016 Author Share Posted June 6, 2016 (edited) Wow. Thanks! It's an entire guide with all of the commands and limitations of the system. This is going to help me so much! How can I thank you more? Edited June 6, 2016 by DonavinTheSuperGamer Quote Link to comment Share on other sites More sharing options...
Mord Posted June 6, 2016 Share Posted June 6, 2016 How can I thank you more? By making awesome games for the 7800. Quote Link to comment Share on other sites More sharing options...
DonavinTheSuperGamer Posted June 6, 2016 Author Share Posted June 6, 2016 Okay. So I got the application working and I think I understand what I'm working with. Now that I set a color pallet, I want to put a sprite on the screen. How exactly do I code the sprite? Quote Link to comment Share on other sites More sharing options...
Mord Posted June 6, 2016 Share Posted June 6, 2016 Depends on what you're using. 7800basic can include sprites from png files so long as they have the right palette size. To make the png you can use pretty much any graphics program that'll save png files. If you're doing it by hand, that could be more of a pain since you'll have to figure out how to code the graphics data for the desired screen mode. Some are straightforward, others quite difficult. Also they're stored in rom funny. 7800basic handles all that as it compiles the rom. If you're using 7800basic, start off by just grabbing some sample images from the sample programs and playing with them. Quote Link to comment Share on other sites More sharing options...
DonavinTheSuperGamer Posted June 7, 2016 Author Share Posted June 7, 2016 (edited) Thank you, Mord. Now, however, I seem to have a bigger problem on my hands. I am trying to add a font into my game and have added an 80x8 image I created on Microsoft Paint to my game file folder. It contains numbers from 0-9, one every 8x8 pixels. Then I made this Microsoft Notepad file: Pac-ManXM.bas Pac-ManXM.bas.a78 Edited June 7, 2016 by DonavinTheSuperGamer Quote Link to comment Share on other sites More sharing options...
+frankodragon Posted June 7, 2016 Share Posted June 7, 2016 You might want to check here on making graphics: http://www.bjars.com/7800.html. Scroll down to "Graphics Tutorial for 7800basic". What I would do is copy an existing image file from the "samples" folder in the 7800basic with the font images, usually in the gfx folder, (such as alphabet_8_wide.png) and edit the letters and numbers. 7800basic recognizes .png and .tmx file formats for graphics and a graphics tool such as Gimp ( a freeware graphics program) is recommended to making and editing graphic files. Quote Link to comment Share on other sites More sharing options...
Mord Posted June 7, 2016 Share Posted June 7, 2016 Thank you, Mord. Now, however, I seem to have a bigger problem on my hands. I am trying to add a font into my game and have added an 80x8 image I created on Microsoft Paint to my game file folder. It contains numbers from 0-9, one every 8x8 pixels. Then I made this Microsoft Notepad file: You'll still need to include the png with your font graphics with an incgraphic command. Quote Link to comment Share on other sites More sharing options...
DonavinTheSuperGamer Posted June 7, 2016 Author Share Posted June 7, 2016 Okay. I'm not close to my computer right now so I'll check that later. Just to kill time, I was wondering about the Expansion Module. Seeing the Donkey Kong XM test for the add on baffled me with all of the colors and improved sound quality. I was wondering if that thing is out yet and if there is a way to write code for it on 7800basic. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.