Retro Programming - Creating sprites on the C64

Поделиться
HTML-код
  • Опубликовано: 16 сен 2024

Комментарии • 51

  • @confusionprice1422
    @confusionprice1422 2 месяца назад +2

    I remember seeing someone do this with a c64, and thinking it was the coolest thing ever. Fast forward a few years and I learn basic myself and buy a restored c64

    • @almurray2000
      @almurray2000  2 месяца назад

      @@confusionprice1422 well done! There’s nothing quite like using the real machine from the 80’s

  • @marcobachini3130
    @marcobachini3130 2 месяца назад +1

    Pencil&Paper and Sprites...you got an absolutely brilliant idea 👍🏻

  • @fordprefect80
    @fordprefect80 2 года назад +14

    Ah the good old days of creating sprites with graph paper. This paper was very useful in mapping The Bard's Tale as well.

    • @HeliZero
      @HeliZero 9 месяцев назад

      I loved The Bards Tale III - and did exactly that - making a map on paper to find my way around.

  • @marcusfranconium3392
    @marcusfranconium3392 2 года назад +4

    This does bring back some memories , the old C= 64 game books , and an old not realy a game but something called news room . Making pictures with sprites and publishing a newspaper.
    Now i think of it there was an old trick back in the 30s for animating realistic movements of characters and they used to trace frames and photos to get verry smooth movements . You could do someting simular like your paper and pen grid place a picture behind and trace the blocks .
    the C= 64 and simons basic one of the most under rated computers and programing languages as it was a computer that worked perfect .
    And be honoust many people use their computers for playing games and simple text and calculations .

  • @SpiderInStockings
    @SpiderInStockings Год назад +2

    Thank you for this video! Learning to transition from modern hardware to old school microcomputers is tricky so this has helped me a lot!

  • @nickryan3417
    @nickryan3417 2 года назад +2

    Oh damn did I spend a lot of time with graph paper doing almost exactly this. In the end I did it so much that I used graph paper that was probably about 8 pixels per cm and in my head I calculated the byte value. It was even more "fun" when working with multi-colour mode and particularly wanting to manage the depth overlay of the 10, 11 vs 01 layers.

  • @unclenene
    @unclenene 2 года назад +7

    Oh my god. I love this. You reminded me that I used peek and poke commands to create games at that time. Thank you.

    • @almurray2000
      @almurray2000  2 года назад +1

      You're very welcome!

    • @Levor85
      @Levor85 2 года назад

      Why are you used that, if there was assembler ide / machine code ? May be you just a nostalgia lair ? :)

  • @tiger1x
    @tiger1x 2 года назад +4

    That's really awesome! So easy to paint all the sprites and copy them to the C64! Thanks a lot for that informative video! I could create some sprites in seconds and paste it to my C64! Absolutely fantastic! :-)

  • @broomeydj
    @broomeydj Месяц назад +1

    Just came across your video. I got back into C64 coding recently and not having a local WH smith's for graph paper I wrote my own sprite editor in Microsoft Excel. If anyone is interested I can send them a google link to it

  • @djaje
    @djaje 2 года назад +1

    great that's save a lot of time

  • @webfreezy
    @webfreezy 2 года назад +3

    I remember doing this at the end of the eighties... oh my... 😀

  • @JeremyNasmith
    @JeremyNasmith 2 года назад +1

    You probably know this, but you commented around the 9min mark that you didn't know why you were getting the return without gosub error? It's indirectly because of the gosub 1110 statement. You don't need to gosub to blocks of Data statements. The interpreter ignores Data statements unless/until it encounters a read statement, then it will search your entire codebase for the first unread data byte and read it.. Even if it's unreachable by normal program flow, e.g. after an End statement. So, your gosub to 1110, essentially skips over all the data and encounters your return statement. So far no problem, but after the rest of your code runs, you read your data and poke it into memory etc. After all this, there's no end or loop, so program flow just continues on through those same data statements again, also ignoring them. Still no error.
    But then it encounters that same return statement for the second time, but without having been sent there by a gosub. Thus the return without gosub error.
    easy fix: just remove the Gosub and the return, and put an End right before your first Data statement. As counterintuitive as that seems, the interpreter will encounter your first read in the loop, search for the first unread data statement, wherever it is, even after an End statement, read in as many bytes of data as calls in your loop to read it. Even if that data is otherwise unreachable by normal execution flow.

    • @almurray2000
      @almurray2000  2 года назад

      I did not know this! Thanks for stopping by and taking the time to write such a detailed reply - much appreciated!

  • @lb7144
    @lb7144 2 года назад +1

    OMG, I’m back in the 9th grade doing this very thing on an Apple computer.

  • @nickryan3417
    @nickryan3417 2 года назад +2

    Onto your example code... Do you realise that the var "SPRITE" may as well be "SP"? (saves basic memory space) as only the first two named characters were used

    • @almurray2000
      @almurray2000  2 года назад +2

      Thanks for commenting! Yes, it was more a readability thing, like lots of the spaces could be done without but that would make it even harder to read. I really should do some more C64 coding soon.

  • @MD_il_microcanale
    @MD_il_microcanale 2 года назад

    very cool!

  • @Chexsum
    @Chexsum 2 года назад +2

    try END before the DATA statements so it doesnt fall through to return twice

    • @sa3270
      @sa3270 2 года назад

      I can't figure out what the point of that GOSUB was in the first place. Guessing whoever wrote the program came from another dialect of BASIC that required the DATA statements be parsed prior to READ. In Commodore BASIC it is superfluous.

    • @Chexsum
      @Chexsum 2 года назад

      @@sa3270 im sure what i said applies but 30 year old memory could be faulty

  • @OTuit
    @OTuit 2 года назад +3

    ⭐⭐⭐⭐⭐

  • @jakubkrcma
    @jakubkrcma Год назад +2

    0:58 OK. But why Adolf? 🤣🤣🤣🤣🤣🤣🤣

  • @costasaroniadis3376
    @costasaroniadis3376 2 года назад +1

    Ιm new in retro programing can i use the same way to c128; and commodore pet thanks

    • @demogorgon1043
      @demogorgon1043 2 года назад

      maybe'yesn'ttn'ea'nt
      which means probably

    • @sa3270
      @sa3270 2 года назад +1

      Good luck making sprites on the PET.

  • @AllGamingStarred
    @AllGamingStarred Год назад

    One thing I don't understand. Do I need to make 63 DATA lines or are the bytes already in ROM? Also, how do I move the sprite around using the joystick? also, how are you working out the poke commands? Did you use a memory map? Where are the locations?

    • @almurray2000
      @almurray2000  Год назад

      Yes you'll need to make all the DATA lines for a complete sprite even if some are all 0 otherwise you could have garbage data in the sprite. You move the sprite by incrementing or decrementing the value in the memory address for the x,y or the relevant sprite you want to control when you input that direction on the joystick. I use a memory map to know which addresses to poke etc.

  • @roylamkin7177
    @roylamkin7177 2 года назад

    Oh ya exactly how I did it!!!!

    • @almurray2000
      @almurray2000  2 года назад

      The good old days eh? :)

    • @roylamkin7177
      @roylamkin7177 2 года назад +1

      @@almurray2000 I used Atari, same effort different name than sprite same purpose :-) my 800 is set up all the time, turned on, hooked up to real Atari monitor running star raiders. It my escape from reality. At 70 probably the last game I remember how to use :-) I have a 400 that I adapted an IBM 370 switchcraft keyboard to . A lot faster than the membrain keyboard. :-):-):-)

  • @boghead
    @boghead 7 месяцев назад

    It’s called a rubber as you’re British. Yanks call them erasers.

  • @mattiasbrodendal9763
    @mattiasbrodendal9763 2 года назад

    Hi! Thanks for a great video! How to turn the sprite off again? I'm writing a saga-program for my kids, would like the sprite to turn off again later down the saga :)

    • @almurray2000
      @almurray2000  2 года назад

      You just poke a zero into the bit for the sprite you wish to turn off. If doing it in BASIC then you need to subtract the number for the bit that relates to the sprite you wish to turn off and poke the new value back into the sprite display memory location.
      The sprite display memory location is 53269 in decimal so you would POKE 53269,255 to turn all sprites on and POKE 53269,0 to turn all sprites off.
      To turn on sprites 1 and 2 you would POKE 53269,3 because bit 1 = 1 in decimal and bit 2 = 2 in decimal. Then if you wanted to turn off sprite 2 you would POKE 53269,1 or to turn off sprite 1 you would POKE 53269,2.
      I hope this makes sense but if you need more help just ask.

  • @Mr.1.i
    @Mr.1.i Месяц назад

    emulation.....your cheating...i can make sprites on a commodore 64 with the assemby app that runs in the emulator.with a beginners level. how do you program user defined graphics on a +4.....i can bit map mums knitting patterns.into a bbc...no emulation you can get apps that create subroutines and input$ with ai creators .....................for c64 emulatin

  • @paulerickson6270
    @paulerickson6270 2 года назад

    Make a program instead of paper.

    • @almurray2000
      @almurray2000  2 года назад

      I did! Watch the whole video :D

    • @HK-ps6ne
      @HK-ps6ne 2 года назад +1

      this is how one did it in the 80s

    • @paulerickson6270
      @paulerickson6270 2 года назад +1

      @@almurray2000 Oh, i see it. Cool.

  • @randydhanraj7113
    @randydhanraj7113 2 года назад

    I just want people to know we’re not just birds.

  • @b4ph0m3tdk9
    @b4ph0m3tdk9 7 месяцев назад

    Those idiotic peek&poke commands. Would it have hurt Commodore to make a commandos instead of those adresses. I hated C64 basic, thats why I chose Amstrad instead, much better basic, but sadly no hardware sprites or hardware scroll.