Zum Eintragen hier klicken.
Name | Kommentar |
erstellt am 19. Februar 2020 um 10:31 Uhr MEZ Your program is really great, and I have had fun with it but last night I had a problem, the IDE is quite slow to start up on my PC even with SSD, I accidentally started two copies running, I worked for an hour or so but when I closed down, the second copy came up with a message "file contents have been changed outside the program, reload". I am used to this from notepad++, C# etc, but just selected cancel/ignore, and shut down without changing anything in this editor session, of course, all my work was overwritten and I lost it all. Can you put a splash screen on that shows immediately, and also only save to disk if the editor window contents have changed? My changes were a completer rewrite of my sprite positioning, with 16 bit x position, speed > 1 px per frame, now I have to redo it all. Kommentar von Endurion: Ouch, sorry for the problems that caused. The Splash screen is easy to implement. Save should only do something when it's marked modified, but I'll check again to not overwrite in that particular case. Thanks for the feedback! |
|
erstellt am 07. Februar 2020 um 13:03 Uhr MEZ Hi Georg, once the screen has been drawn in C64 STUDIO, and chars have been defined, how do we export them into c64 studio? ie chars not ABCDEFGH...…… SCREEN_LOCATION = $0400 COLOR_LOCATION = $d800 ;BASIC header * = $0801 !basic ;copy char and color data lda #00 sta 53280 sta 53281 lda #02 sta 53283 lda #4 sta 53284 ldx #0 - lda CHAR_DATA,x sta SCREEN_LOCATION,x lda CHAR_DATA + 1 * 250,x sta SCREEN_LOCATION + 1 * 250,x lda CHAR_DATA + 2 * 250,x sta SCREEN_LOCATION + 2 * 250,x lda CHAR_DATA + 3 * 250,x sta SCREEN_LOCATION + 3 * 250,x lda COLOR_DATA,x sta COLOR_LOCATION,x lda COLOR_DATA + 1 * 250,x sta COLOR_LOCATION + 1 * 250,x lda COLOR_DATA + 2 * 250,x sta COLOR_LOCATION + 2 * 250,x lda COLOR_DATA + 3 * 250,x sta COLOR_LOCATION + 3 * 250,x inx cpx #250 bne - ;endless loop rts ;jmp - CHAR_DATA COLOR_DATA = CHAR_DATA + 1000 ;this includes 1000 bytes of characters plus 1000 bytes of colors !media ".charscreen",charcolor Kommentar von Endurion: Do you mean you drew a character set? You can include it's data with !media as well: CHARSET_DATA !media "my.charsetproject",CHAR,0,256 From there you have to copy the CHARSET_DATA to a memory location where you want your charset to be. And then set up the VIC registers accordingly. The values for the VIC depend on where you want your charset to be. Note that this piece of code turns off the I/O temporarily to copy the charset under a address under the ROM (e.g. $d000 or $e000 or...) This code is just a naive copy, more sophisticated games probably use some packer to do this (e.g. Exomizer): ;block interrupts ;since we turn ROMs off this would result in crashes if we didn't sei ;only RAM lda #$30 sta PROCESSOR_PORT ldy #0 - lda CHARSET,y sta CHARSET_LOCATION,y lda CHARSET + 1 * 256,y sta CHARSET_LOCATION + 1 * 256,y lda CHARSET + 2 * 256,y sta CHARSET_LOCATION + 2 * 256,y lda CHARSET + 3 * 256,y sta CHARSET_LOCATION + 3 * 256,y lda CHARSET + 4 * 256,y sta CHARSET_LOCATION + 4 * 256,y lda CHARSET + 5 * 256,y sta CHARSET_LOCATION + 5 * 256,y lda CHARSET + 6 * 256,y sta CHARSET_LOCATION + 6 * 256,y lda CHARSET + 7 * 256,y sta CHARSET_LOCATION + 7 * 256,y iny bne - lda #$36 sta PROCESSOR_PORT cli |
|
erstellt am 15. Januar 2020 um 18:23 Uhr MEZ Super, vielen Dank, es funktioniert perfekt, ich bin wirklich begeistert vom C64 Studio, hervorragend gemacht! Herzliche Grüße Andreas javascript:setsmile(' ') |
|
erstellt am 14. Januar 2020 um 23:07 Uhr MEZ Ergänzung zu meinem Eintrag bezüglich meiner Probleme mit dem Debugging: Ich habe jetzt herausgefunden, dass es mit einem Workaround funktioniert: Wenn ich unter "Preferences" beim Emulator die Parameter "Debug" anpasse, so dass ich eine feste Adresse für -initbreak vergebe, die nach der "Basic-Aufruf-Zeile" liegt: "-remotemonitor -initbreak 0x80e" und im Editor einen Breakpoint unterhalb dieser Adresse definiere, dann funktioniert das Debugging, d.h. er hält beim definierten Breakpoint an und es wird auch die Zeile in der er gerade ist Gelb hervorgehoben. Wenn aber "-initbreak 0x801" eingestellt wird (was ja identisch mit der "Basic-Aufruf-Zeile" meines Programms im Speicher ist), dann geht es nicht, dann hält das Programm nicht am Breakpoint an. Ich vermute, dass es sich um einen Bug handelt. Viele Grüße Andreas Kommentar von Endurion: Das ist leider ein unglücklicher Bug, den ich eingebaut hatte. Bitte die neue Version vom Link laden. Das müsste dann die Version 6.3.2 anzeigen. Falls das nicht klappt, bitte im Solution Explorer in die Eigenschaften des Projektes gehen. Dort gibt es ein Eingabefeld "Debug Start Address", da steht vermutlich 2049 drin. Das ist natürlich Quatsch. Bitte dort den Wert 0 eintragen. Die neue Version korrigiert das automatisch. Ich hoffe, damit klappt es wieder, und danke auch für die Info! |
|
erstellt am 14. Januar 2020 um 21:53 Uhr MEZ Vielen Dank für das sehr schöne Programm! Seit einigen Tagen schaue ich mir die C64 Programmierung an, ich hatte eine kleine Unterbrechung von 1989 bis Anfang 2020 (Auslöser ist der C64 Maxi der gerade erschienen ist und meine ungebrochene Begeisterung für den Computer seit damals) Jetzt möchte ich endlich Assembler erlernen und bin ich auf das wunderbare C64 Studio gestoßen. Heute habe ich versucht das Debugging zu erlernen bzw. zu testen, allerdings bislang ohne Erfolg. Das Programm bleibt weder offensichtlich in der Zeile stehen wo ich "Run to Cursor" ausgeführt habe, noch wird eine Zeile im Editor "gelb". Erst wenn ich dann auf den Button "Debug step" klicke, öffnet sich ein Fenster mit dem Namen "Diassembly" in dem es dann auch eine gelb eingefärbte Zeile gibt, allerdings springt er zu irgendeinem anderen Programm unter "* = $e5d4" obwohl mein Programm bei der Adresse "*=$0801" liegt. Ich bin neu mit dem Programm C64 Studio, aber habe schon einiges ausprobiert und bin mittlerweile ratlos. In der Versionshistorie habe ich gesehen, dass bei der Debugging Funktion kürzlich einen Bugfix gab. Hast Du/Sie vielleicht eine Idee was ich falsch mache? Beste Grüße Andreas Ich verwende: WinVICE-2.4-x86 (habe auch andere getestet) C64 Studio 6.3 Das minimale Programm mit dem ich das Debugging ausprobieren wollte, lautet: *=$0801 !byte $0c,$08,$e2,$07,$9e,$20,$32,$30,$36,$32,$00,$00,$00 lda #$41 ldx #$ff loop sta $03ff,X dex bne loop rts |
|
erstellt am 09. Dezember 2019 um 15:03 Uhr MEZ Hi, I run the website dosgames.com and am interested in including any of your original MS-DOS based games on my website so that people can easily find them and freely download them. It looks like all of the games posted on your website are the Windows versions, so if you have any of the DOS versions that you could send me and would be willing to allow me to post them, please let me know, thank you! Darren Kommentar von Endurion: Hi, Sounds fine with me. That'll require a bit of digging though. I've got the source of most and some ready versions, I just need to package them. You can always contact me via my official email address (Impressum) Best regards, Georg |
|
erstellt am 05. Dezember 2019 um 11:52 Uhr MEZ Thanks! An other question: Now I got a Graphics screen background and 7 sprites working. Excuse my ignorance but how do I put other stuff on the screen like scores, lived etc. I've been trying to write to the screen buffer but I won't work when the graphicscreen mode is set. Regards / Fredrik. Kommentar von Endurion: Hi Fredrik, Well, two basic choices: Either copy character like images in the bitmap, or do an IRQ split between bitmap and text mode, so you can have sort of a status line. This might be a start: https://www.c64-wiki.com/wiki/Raster_interrupt |
|
erstellt am 26. November 2019 um 12:06 Uhr MEZ This is the DisplayScreen.asm without highres and added one sprite. Whatever I do I can't get the sprite to be anything else than 255x64 i.e a square. * = $0801 GETIN = $FFE4 SCNKEY = $FF9F SCREEN_CHAR = $9000 - $0400;$0400 BITMAP_LOCATION = $a000 !basic lda #0 sta $D020 sta $D021 ;lda #$18 ;location for bitmap and screen char lda #( ( BITMAP_LOCATION % $4000 ) / $400 ) + ( ( SCREEN_CHAR % $4000 ) / 1024 ) * 16 + 1 sta $D018 ;Enable char/bitmap multicolour lda #$18 sta $D016 lda #$3B sta $D011 ;VIC bank 2 lda #$15 sta $dd00 ldx #48 sta $0400 ldx #0 .CopyLoop lda $4000 + 0 * 250,X sta SCREEN_CHAR + 0 * 250,X lda $4000 + 1 * 250,X sta SCREEN_CHAR + 1 * 250,X lda $4000 + 2 * 250,X sta SCREEN_CHAR + 2 * 250,X lda $4000 + 3 * 250,X sta SCREEN_CHAR + 3 * 250,X lda $4400 + 0 * 250,X sta $D800 + 0 * 250,X lda $4400 + 1 * 250,X sta $D800 + 1 * 250,X lda $4400 + 2 * 250,X sta $D800 + 2 * 250,X lda $4400 + 1 * 250,X sta $D800 + 1 * 250,X !for ROW = 0 TO 31 lda $2000 + ROW * 250,x sta BITMAP_LOCATION + ROW * 250,x !end inx cpx #250 beq .Done jmp .CopyLoop .Done v = 53248 ldx #200 stx 2040 ldx #0 stx v+23 stx v+29 ldx #3 stx v+39 ldx #100 stx v stx v+1 ldx #0 rd lda foe,x sta 12800,x inx cpx #63 bne rd ldx# 1 stx v+21 endless jsr endless rts foe: !byte $00,$00,$00,$00,$00,$00,$00,$00 !byte $00,$00,$00,$00,$00,$28,$00,$00 !byte $aa,$00,$82,$82,$82,$aa,$aa,$aa !byte $aa,$55,$aa,$8a,$be,$a2,$82,$aa !byte $82,$00,$aa,$00,$00,$00,$00,$00 !byte $00,$00,$00,$00,$00,$00,$00,$00 !byte $00,$00,$00,$00,$00,$00,$00,$00 !byte $00,$00,$00,$00,$00,$00,$00,$81 ;bitmap data * = $2000 !media "multicolor.graphicscreen",BITMAP ;charscreen colors * = $4000 !media "multicolor.graphicscreen",SCREEN ;color ram colors * = $4400 !media "multicolor.graphicscreen",COLOR Kommentar von Endurion: Just a few small issues: The sprite data was not in the same VIC bank (12800 =$3200) is not inside $8000 to $bfff. Also, when you change the screen address and VIC bank, the sprite pointers move with the screen address. You set the screen address to $8c00, so the sprite pointers are at $8c00 + 1016. Once that is changed the sprite shows up. * = $0801 GETIN = $FFE4 SCNKEY = $FF9F SCREEN_CHAR = $9000 - $0400;$0400 BITMAP_LOCATION = $a000 SPRITE_LOCATION = $8000 !basic lda #0 sta $D020 sta $D021 ;lda #$18 ;location for bitmap and screen char lda #( ( BITMAP_LOCATION % $4000 ) / $400 ) + ( ( SCREEN_CHAR % $4000 ) / 1024 ) * 16 + 1 sta $D018 ;Enable char/bitmap multicolour lda #$18 sta $D016 lda #$3B sta $D011 ;VIC bank 2 lda #$15 sta $dd00 ldx #48 sta $0400 ldx #0 .CopyLoop lda $4000 + 0 * 250,X sta SCREEN_CHAR + 0 * 250,X lda $4000 + 1 * 250,X sta SCREEN_CHAR + 1 * 250,X lda $4000 + 2 * 250,X sta SCREEN_CHAR + 2 * 250,X lda $4000 + 3 * 250,X sta SCREEN_CHAR + 3 * 250,X lda $4400 + 0 * 250,X sta $D800 + 0 * 250,X lda $4400 + 1 * 250,X sta $D800 + 1 * 250,X lda $4400 + 2 * 250,X sta $D800 + 2 * 250,X lda $4400 + 1 * 250,X sta $D800 + 1 * 250,X !for ROW = 0 TO 31 lda $2000 + ROW * 250,x sta BITMAP_LOCATION + ROW * 250,x !end inx cpx #250 beq .Done jmp .CopyLoop .Done v = 53248 ldx #200 ;stx 2040 ldx #0 stx SCREEN_CHAR + 1024 - 8 ldx #0 stx v+23 stx v+29 ldx #3 stx v+39 ldx #100 stx v stx v+1 ldx #0 rd lda foe,x ;sta 12800,x sta SPRITE_LOCATION,x inx cpx #63 bne rd ldx #1 stx v+21 endless jmp endless foe: !byte $00,$00,$00,$00,$00,$00,$00,$00 !byte $00,$00,$00,$00,$00,$28,$00,$00 !byte $aa,$00,$82,$82,$82,$aa,$aa,$aa !byte $aa,$55,$aa,$8a,$be,$a2,$82,$aa !byte $82,$00,$aa,$00,$00,$00,$00,$00 !byte $00,$00,$00,$00,$00,$00,$00,$00 !byte $00,$00,$00,$00,$00,$00,$00,$00 !byte $00,$00,$00,$00,$00,$00,$00,$81 ;bitmap data * = $2000 !media "multicolor.graphicscreen",BITMAP ;charscreen colors * = $4000 !media "multicolor.graphicscreen",SCREEN ;color ram colors * = $4400 !media "multicolor.graphicscreen",COLOR |
|
erstellt am 25. November 2019 um 21:05 Uhr MEZ Hello. I just been fiddeling around with C-64 studio. I tried to use the DisplayScreen.asm example as a skeleton for a simple game. The multicolor Graphics screen works fine but ALL my sprites are just squares as if data is all 255. If I remove the grahics screen code the sprites work fine... Any idea why this is? regards / Fredrik. Kommentar von Endurion: Hi Fredrik, I'd have to see the code to know more. It could be, that the sprite data is pushed outside the VICs 16k bank? Or the sprite pointers to not match up with the sprite data? Remember, the VIC can only see 16k at once. |
|
erstellt am 23. November 2019 um 12:53 Uhr MEZ It all right , I’ve figured it out. Thanks anyway Syed |
|
erstellt am 23. November 2019 um 8:43 Uhr MEZ Hi Georg, with TEXT SCREEN EDITOR, how do you load saved screens. How do you save screens?. I have character set saved and loaded, but cannot save/load custom screens using TEXT SCREEN EDITOR?.... PLEASE HELP Thanks Syed |
|
erstellt am 23. November 2019 um 2:59 Uhr MEZ Hi Georg, Another question: how do you draw character screen from saved character files and then reload them in c64 studio in character screens. Basically how do you load saved character screens? your doing a great job , keep it up! regards Syed Kommentar von Endurion: Hi, I've created a small sample project, which will be part of the next release. Here's the packed project: http://www.georg-rottensteiner.de/webmisc/Sample%20Project%2015%20-%20Character%20Screen.zip Hope that helps! Georg |
|
Administration |