agpxnet
agpxnet
  • 27
  • 263 834
Smooth Scrolling Multi-Direzionale
In questo video spiego come ottenere uno scorrimento multi-direzionale (8 direzioni) di una mappa composta da Tile 4x4. Ogni carattere della Tile può avere un colore diverso. L'implementazione è realizzata in XC=Basic e soprattutto Assembly (versione italiana). #commodore64 #scrolling #tiles #multidirezionale #8way
Link al codice e al binario:
drive.google.com/file/d/1xUoGvEggxzgQtSnnF8lITLfzDp-WOXjN/view?usp=drive_link
Il file .gmk64 (C64 Graphics Maker), può essere aperto con il mio editor gratuito: agpx.itch.io/c64-graphics-maker (l'ultima versione, la 0.12.10b, è in grado di esportare le tile nel formato descritto nel video).
La grafica è stata scaricata dal seguente link (ed adattata per il C64 da me):
"Psygen" by surt licensed CC0: opengameart.org/content/psygen
Versione inglese:
ua-cam.com/video/hWNk_23020Q/v-deo.html
Se il video ti è piaciuto, ti prego di mettere un "mi piace", iscriverti, lasciare un commento e condividere il più possibile! Grazie!
Переглядів: 570

Відео

8-way Smooth Scrolling
Переглядів 2,8 тис.4 місяці тому
In this video I explain how to obtain multi-directional scrolling (8-way) of a map made up of 4x4 tiles. Each character in the Tile can have a different color. The implementation is made in XC=Basic with many inline assembly code (English version). #commodore64 #scrolling #multidirectional #8way #tiles Link to code and binary: drive.google.com/file/d/1Ry0A1I4RCB1Zu3TZ0Tigh8rSusY6q6oN/view?usp=d...
Bidirectional Horizontal Smooth Scrolling
Переглядів 1,1 тис.5 місяців тому
In this short video I explain how to obtain smooth bidirectional horizontal scrolling of a map made up of Tiles 4x4. Each individual character of a Tile has an associated color. The implementation is made in XC=Basic and Assembly (English version). #commodore64 #scrolling #tiles #horizontal Link to code and binary: drive.google.com/file/d/1nKlxEHtEZD-aj35SNtDCdkv5h59QzJs9/view?usp=sharing The f...
Smooth Scrolling Orizzontale Bidirezionale
Переглядів 3285 місяців тому
In questo breve video spiego come ottenere uno scorrimento orizzontale bidirezionale fluido di una mappa composta da Tile 4x4. Ogni carattere della Tile può avere un colore diverso. L'implementazione è realizzata in XC=Basic e Assembly (versione italiana). #commodore64 #scrolling #tiles #orizzontale Link al codice e al binario: drive.google.com/file/d/1KfOKHBOez9EJGLK5M3kTGAgNCUYz-zv8/view?usp=...
Smooth Scrolling Verticale
Переглядів 8686 місяців тому
In questo video, spiego come realizzare lo smooth scrolling verticale (verso il basso) di una mappa costituita da Tile 4x4. Ogni singolo carattere di una Tile ha un colore associato. L'implementazione è realizzata in XC=Basic ed Assembly (versione italiana). #commodore64 #scrolling #tiles #vertical NOTA: ho dimenticato di menzionare nel video il motivo per cui dobbiamo copiare la memoria colore...
Vertical Smooth Scrolling
Переглядів 4,1 тис.6 місяців тому
In this video I explain how to obtain smooth vertical scrolling (downwards) of a map made up of Tiles 4x4. Each individual character of a Tile has an associated color. The implementation is done in XC=Basic and Assembly (English version). #commodore64 #scrolling #tiles #vertical NOTE: I forgot to mention in the video why we need to copy the color memory into a buffer. The reason is that in this...
How to Create Your Own C64 Platform Game: "The Runner"
Переглядів 6986 місяців тому
This video explains how to implements the logic of a platform game, including collision detection and response of the sprites with the background. In the video, the implementation of the mini-game "The Runner" will be explained in details. Full source code and binary (.prg) provided. (English version). #commodore64 #platform #programming #videogames #collisions #tutorial #retrocomputing If you ...
Come Creare Un Videogioco Platform per C64: il gioco "The Runner"
Переглядів 3606 місяців тому
Questo video spiega come implementare la logica di un platform game, incluso il rilevamento e la risposta delle collisioni con il fondale. Nel video verrà spiegata in dettaglio la realizzazione del mini gioco "The Runner". Vengono forniti i sorgenti completi ed il binario (.prg) (versione italiana). #commodore64 #platform #programmazione #videogiochi #collisioni #tutorial #retrocomputing Se il ...
Rilevamento collisioni Sprite-Fondale
Переглядів 4697 місяців тому
Un video che spiega come determinare la collisione tra gli sprite ed il fondale (versione italiana). #commodore64 #sprites #background #collision #detection Se il video vi è piaciuto e volete vederne altri, per piacere mettete "mi piace", condividete ed iscrivetevi! Grazie! Link al codice sorgente che implementa la formula: drive.google.com/file/d/1AK6GiEXghDSVQr1TcwzFYxRurERwzJD5/view?usp=shar...
Sprite-Background collision detection
Переглядів 1,5 тис.7 місяців тому
A video that explains how to determine the collision between sprites and the background (English version). #commodore64 #sprites #background #collision If you liked the video and want to see more, please "like", share and subscribe! Thank you! Link to the source code of the formula implementation: drive.google.com/file/d/1kLrOtXTApqnw8rmDFMyw00f_vh1OF58A/view?usp=sharing UPDATE: A second versio...
Rilevamento collisioni Sprite-Sprite
Переглядів 3117 місяців тому
Un video che spiega come determinare la collisione tra sprite (versione italiana). #commodore64 #sprites #collision #detection Se il video vi è piaciuto e volete vederne altri, per piacere mettete "mi piace", condividete ed iscrivetevi! Grazie! English version: ua-cam.com/video/hCM57ZMZZZw/v-deo.html Voci generate via TTS dal sito: ttsfree.com/text-to-speech
Sprite collision detection
Переглядів 8937 місяців тому
A video that explains how to determine the collision between sprites (English version). #commodore64 #sprites #collision #detection If you liked the video and want to see more, please "like", share and subscribe! Thank you! Italian version: ua-cam.com/video/bbzYeb9eIgA/v-deo.html Voices generated via TTS from the site: ttsfree.com/text-to-speech
C64 Sprite Multiplexing (EN)
Переглядів 18 тис.8 місяців тому
A tutorial on how to make a sprite multiplexer with an implementation in assembly 6502 and XC=BASIC 3 (english version). #commodore64 #retrocomputing #sprites #multiplexing Source code and binary (license MIT): drive.google.com/file/d/13wnLw_FvjcX-J1MCoqxhB6XaleGEa_pP/view?usp=sharing If you liked the video and want to see more, please like, share and subscribe! Thank you! Italian version: ua-c...
C64 Sprite Multiplexing (IT)
Переглядів 1,2 тис.8 місяців тому
Un tutorial su come realizzare uno sprite multiplexer con un'implementazione in assembly 6502 e XC=BASIC 3 (versione italiana). #commodore64 #retrocomputing #sprites #multiplexing Codice sorgente e binari (licenza MIT): drive.google.com/file/d/1RontHSLLeFx1wRtUfKi11EiHh6mUQBJD/view?usp=sharing Se il video vi è piaciuto e volete vederne altri, per piacere mettete "mi piace", condividete ed iscri...
Newsstand
Переглядів 1,4 тис.Рік тому
A trailer of the game for C64 by AGPX & Phobos. The entire graphics were created with the "C64 Graphics Maker" tool. Link to the game: agpx.itch.io/news-stand
Teaser Trailer NewsStand (English version)
Переглядів 462Рік тому
Teaser Trailer NewsStand (English version)
Teaser Trailer NewsStand
Переглядів 772Рік тому
Teaser Trailer NewsStand
C64 Graphics Maker (part 2, Italian version)
Переглядів 2672 роки тому
C64 Graphics Maker (part 2, Italian version)
C64 Graphics Maker (part 1, Italian version)
Переглядів 3142 роки тому
C64 Graphics Maker (part 1, Italian version)
C64 Graphics Maker (part I)
Переглядів 2,1 тис.3 роки тому
C64 Graphics Maker (part I)
C64 Graphics Maker (part II)
Переглядів 6773 роки тому
C64 Graphics Maker (part II)
Planet Balls for C64
Переглядів 8503 роки тому
Planet Balls for C64
C64 Planets Ball Intro
Переглядів 2774 роки тому
C64 Planets Ball Intro
C64EMU
Переглядів 3865 років тому
C64EMU
The best ASMR for sleep better with white gaussian noise. Sleep fast.
Переглядів 1,8 тис.7 років тому
The best ASMR for sleep better with white gaussian noise. Sleep fast.
Planet balls
Переглядів 4607 років тому
Planet balls
Build a low-cost motion capture system
Переглядів 221 тис.7 років тому
Build a low-cost motion capture system

КОМЕНТАРІ

  • @Jay-vy3ut
    @Jay-vy3ut 8 днів тому

    Hey, quick question what algorithms are you using for tracking the markers on the camera 2d projection (the image that comes from the PS3 eye cameras) is it blob extraction and a kalman filter for tracking (similar to openmocap) or are you using something different

  • @gasparinizuzzurro6306
    @gasparinizuzzurro6306 Місяць тому

    this consume CPU cycles, how much % of CPU time the mux algo is using compared to a screen frame?

  • @tomasrosenberg3430
    @tomasrosenberg3430 Місяць тому

    Very cool!

  • @FollowerZero
    @FollowerZero Місяць тому

    Video interessante, non ho capito però se è possibile aprire i sorgenti con IDE tipo C64Studio o simili.

    • @agpxnet
      @agpxnet Місяць тому

      I sorgenti vanno compilati con XC-BASIC 3. Puoi utilizzare qualsiasi IDE che consenta di usare un compilatore custom. Personalmente ho utilizzato "Visual Studio Code" (che è gratuito) per creare il demo in questione. Se cerchi "Un editor per XC=BASIC / Commodore 64" troverai un tutorial in italiano su come farlo. Se dovessi incontrare difficoltà, scrivi qua che provo ad aiutarti a fare il setup dell'ambiente.

  • @Phaze101
    @Phaze101 Місяць тому

    Hi excellent video. I have watched this video many times. Left you a comment earlier but not sure I save it so here it is again. Tried to get in touch with you in the past since I would like to know if you share such code on github. Anyway thanks for your work and these great videos.

    • @Phaze101
      @Phaze101 Місяць тому

      Please Please continue to make such videos

    • @agpxnet
      @agpxnet Місяць тому

      Hi, thanks. Usually you can found the code in the description of every video, but in this specific one there's no code to share in addition to the one showed in the video.

  • @kraftwerk974
    @kraftwerk974 2 місяці тому

    Great tutorial. Now I need to convert something similar to 6510 assembly 😑

  • @francescocarandina3982
    @francescocarandina3982 2 місяці тому

    Ciao Sono nuovo, Mi sono appena avvicinato a questo linguaggio e avrei tanta voglia di imparare. Scusa le domande un po' profane, hai creato tu questo software? Ha le stesse funzionalità di charpad e Sprite pad? Quando si fa un disegno sul foglio e si decide di mettere le tile si può fare anche un misto ovvero disegno con un mono carattere per parte più dettagliate il contorno usare delle tile?

    • @agpxnet
      @agpxnet 2 місяці тому

      Ciao, sì, ho creato io questo software. Non ho confrontato con gli altri tool che menzioni, l'ho creato per scopi personali e poi ho deciso di renderlo pubblico. Se scegli un colore per il singolo carattere della tile compreso tra 0 e 7, lo vedrai monocolore.

    • @francescocarandina3982
      @francescocarandina3982 2 місяці тому

      @@agpxnet purtroppo non ho windows 64 bit per installarlo

  • @puzzud
    @puzzud 2 місяці тому

    Am I correct in saying this approach works because the screen will scroll regardless of player input? Conversely, if the camera is directly or indirectly controlled by the player, the screen must be scrolled on command. What are solutions for this condition? Edit: I thought about it a bit. If a hardware scroll gets close to 0, it can start to build the backbuffer preemptively, even if it is never realized due to the camera being moved in the opposite direction before the buffers should be swapped. In my case, the background graphics can change. I guess I need to ensure changes get propagated to both the front and back buffer.

    • @agpxnet
      @agpxnet 2 місяці тому

      The approach works even if totally controlled by the user also because the scrolling direction in this example is only one (you can download the demo and check the result). However, in the video I made about horizontal scrolling, I added the ability to go back and forth. In that case it works because when I go back, if I don't have enough pixels left to fill the backbuffer, at the last pixel, I update what's left in the backbuffer. Could be expensive, but it only happens when changing direction and is not noticeable (as you can see from the downloadable demo). There also other alternative approaches, like the one I used in my video on 8-way scrolling, which is used by many games like Turrican. Yes, if the background changes you must update it carefully. In my game Planet Balls, I have free-directional scrolling with double buffer and the background graphics change (since there are a maximum of 12 balls, 7 are hardware sprites and 5 are "software" sprites made with redefined characters).

  • @igork3522
    @igork3522 3 місяці тому

    Thank you for your videos and code access!

  • @c64cosmin
    @c64cosmin 4 місяці тому

    This is purely incredible, amazing work and thank you for sharing <3

  • @ArneChristianRosenfeldt
    @ArneChristianRosenfeldt 4 місяці тому

    Now I understand “operation wolf” . It has the status icons at the side. So it can use the full 320px horizontal resolution with scrolling. This may also hide the sprite pointers at the bottom. Of course for most games it makes more sense to use sprites for game objects. I should check how they managed the colors. On C64 you have to use multiple sprites per game object just to pull in another palette entry.

  • @ArneChristianRosenfeldt
    @ArneChristianRosenfeldt 4 місяці тому

    With 2px speed the counting of the directions becomes a bit cumbersome. There is a video about an NES game where the position of the player figure is calculated using 16.8 fixed point math. Now add some camera smoothing and remember that we update at 60 Hz. Then no discernible directions will be recognisable by the player. Like Asteroids.And you check the button stage twice per frame for uh, more directions. Ah, the controls are the limit. I coded a bit on my C16 with 64k last month. To really follow your video I feel like I have to write something myself. Of course I am a bit anti NES and want to show of the 8x8 color attribute resolution of the commodores. So maybe 4x4 super tiles are just not for me. With TED I thought I just use quad buffer. I am not Creative. Now way I will overflow memory. But then this waste hurts. You got me thinking about sticking to a double buffer. At least TED cannot VSP, so I don’t need to defend the memCopy. Uh, but then my coding on real hardware was about vertical borders. TED has an y register which I can write to, but it only affects the borders, it doesn’t scroll. On both VIC-II and TED you can crunch the first character line to delay memcopy for vertical. So the backbuffer will be a shifted up or down version only if the smooth X scroll register is at 3 or 4. Otherwise the backbuffer contains something shifted a character left or right (and possibly also up or down). Is there a part in the video where you talk about “abort and revert” . Like when a scrolling routine after one of 4 frames recognized that it has to undo its work? I tried to find the word: gradually. Like a boundary is stored and two scroll states for both sides. I only played Super Mario Maker, but all this discussion about bounding boxes pushed me to this: I want to see Sonic the Hedgehog with ramps, slides, and looping made of 8px long segments. So 2d vector graphics and physics. Just make the level so that the fast sonic can escape our 2px camera. Also, how to play with only one button? Run button, and jumps are “up”?

  • @rwxdesigns
    @rwxdesigns 4 місяці тому

    Suggestion - the text colour of yellow on the grey background didn't really stand out and it made it difficult to read. Try another colour for better contrast in your next video. Thanks. 👍

  • @gaming.brain.gameplay
    @gaming.brain.gameplay 4 місяці тому

    Bellissimo!

  • @FabioOttaviani
    @FabioOttaviani 5 місяців тому

    A conoscere tutte queste tecniche, soprattutto lo sprite multiplexing nel 1990… Ma ero giovane e non trovavo la documentazione da nessuna parte. 😢😢 Ho dovuto fare moltissimi compromessi nei miei videogiochi. 😢😢😢

  • @carlosimetti2319
    @carlosimetti2319 5 місяців тому

    Ottimi contenuti molto tecnici come sempre :-)

  • @andreal2023
    @andreal2023 5 місяців тому

    Mito.

  • @thumper5555
    @thumper5555 5 місяців тому

    AI voices suck. Thumbs down.

    • @agpxnet
      @agpxnet 5 місяців тому

      I'm sorry, but my english pronunciation is unlistenable (see, for example, my video tutorial in English on the C64 Graphics Maker).

    • @ArneChristianRosenfeldt
      @ArneChristianRosenfeldt 5 місяців тому

      AI gets better all the time. UA-cam in on mute for me most of the time so I wouldn’t know.

    • @SK83RJOSH
      @SK83RJOSH 5 місяців тому

      ​​​@@agpxnet I think your accent is fine! I work with games here in Europe, and I've met Italians that are far far worse. I think you'd benefit greatly from a condenser microphone through - the audio quality was the worst part about that video, but I felt you were very intelligible otherwise. Keep up the great work, and do it however you feel is best 😊

    • @Rothron
      @Rothron 5 місяців тому

      @@agpxnet I think your pronunciation is less of an issue than the quality of the microphone and the reverb/echo in the room you record in. English with accent is preferable to this AI voice to me at least.

    • @meatbleed
      @meatbleed 5 місяців тому

      more like classic tts. been here for decades. not everyone speaks your shitty language

  • @giuseppeazzarello8426
    @giuseppeazzarello8426 5 місяців тому

    buongiorno agpxnet , come sempre spegazione è video impeccabili

  • @networkg
    @networkg 5 місяців тому

    Excellent video tutorial. One concept per video. Makes learning easy.

  • @jadermonari2272
    @jadermonari2272 6 місяців тому

    Non ho parole... bravissimo, mi piacerebbe avere un mentore come te!

    • @agpxnet
      @agpxnet 6 місяців тому

      Addirittura, grazie 🙂. Se vi piacciono questi contenuti e volete vederne ancora, vi prego di condividere questo video (magari anche su social networks). Grazie!

  • @maxmuster7003
    @maxmuster7003 6 місяців тому

    For many years i used smooth scrolling on C64 screen, but then an UFO beamed me up and ejected me on the x86 alien planet with a new command prompt. After learning the alien language i made a new vertical smoot scroller for the vga text screen with 8x16 font size for up and down scrolling.

  • @ZombieGamer80
    @ZombieGamer80 6 місяців тому

    Complimenti, è fluidissimo. Il sistema delle TILES per risparmiare memoria c'é anche nel SEUCK... ;)

    • @agpxnet
      @agpxnet 6 місяців тому

      Grazie, sì, le tile sono molto usate. Nel SEUCK sono grandi 8x8 e secondo me è un po' troppo (rende più difficile creare le schermate), inoltre tutti i 64 caratteri hanno un solo possibile colore di primo piano (e questo, oltre a risparmiare memoria, accelera la loro routine di scrolling del colore), mentre nella mia implementazione i 16 caratteri di una tile possono avere ognuno un colore diverso (nel SEUCK non puoi fare una tile con lo stesso cartello AGPX visto nel mio demo, dove ogni lettera ha un colore diverso ;-).

  • @Mark-pr7ug
    @Mark-pr7ug 6 місяців тому

    If I recall correctly on the Amiga for smooth horizontal scrolling you had to create 2 additional screens. One either side of the main display in order for the hardware scroll to work. (All 3 displaying the same image) I once tried one screen which was 16 pixels larger on both sides. Both sides hidden behind the border. When scrolled and a fresh column of 16x16 were drawn behind the border, the scroll went crazy.

  • @syedrizvi2469
    @syedrizvi2469 6 місяців тому

    Hi there! I cannot seem to open the ScrollDown.gmk64 file, which Assembler is it compatible with?

    • @agpxnet
      @agpxnet 6 місяців тому

      Hi, you can open it with a free software made by me called "C64 Graphics Maker", that's a graphic editor for C64. From there you can export "data" in a format suitabile for your project. You can found it here (with other software of mine): agpx.itch.io/

    • @agpxnet
      @agpxnet 6 місяців тому

      The assembly code is inside the Scrolling.bas file (inline assembly).

  • @MarkWernsdorfer
    @MarkWernsdorfer 6 місяців тому

    the ai voice is awful :(

    • @agpxnet
      @agpxnet 6 місяців тому

      Sorry for that, mine is worst. I've published subtitles.

  • @giuseppeazzarello8426
    @giuseppeazzarello8426 6 місяців тому

    i tuoi video sono spettacolari, bellissimo, spero che ci siano molte persone interessate, in modo che ti stimolano a proseguire, sarebbe un peccato, non approfittarne. comuqneui auguri per il tuo superamento in cosi poco tempo dei 1000 iscritti

  • @agpxnet
    @agpxnet 6 місяців тому

    AGGIORNAMENTO: ho aggiornato il codice per ottimizzare la routine che copia il buffer nella memoria colore. NOTE sul buffer dei colori: Nel video ho dimenticato di menzionare la ragione per la quale durante lo scrolling dei 7 pixel, copio la memoria colore in un buffer (anziché scrollarla direttamente all'ottavo). La ragione è che, altrimenti, dovrei scrollare i colori dal basso verso l'alto. Senza il buffer, se facessi il contrario, dovrei ad esempio copiare la riga 1 nella 2 e poi la riga 2 nella 3, ecc... Ma copiando la riga 1 nella 2, quest'ultima viene sovrascritta e quindi nel passo successivo (2 -> 3) copierò dati sbagliati! Se invece parto dal basso copiando la 22 nella 23 e poi la 21 nella 22, non c'è nessun problema. Vi chiederete, ma perché copiare dal basso verso l'alto non va bene? Il motivo è che il pennello ottico è uno tsunami che corre come il vento! Sfortunatamente, quando esso ricomincia a disegnare lo sfondo, la CPU non avrà ancora completato tutto il lavoro di scrolling dei colori! Tuttavia, scrollandoli dall'alto al basso, ed essendo partita in anticipo sul pennello ottico (quando quest'ultimo si trovava all'inizio del bordo inferiore), le prime righe che incontrerà saranno già state completate e la CPU riuscirà comunque a completare l'ultima riga prima che venga raggiunta! Questa tecnica si chiama "gareggiare con il pennello ottico" che non è applicabile se invertissimo l'ordine di scrolling dei colori perché la prima riga raggiunta da quest'ultimo, verrà aggiornata per ultima dalla CPU!

  • @agpxnet
    @agpxnet 6 місяців тому

    UPDATE: I updated the code to optimize the routine that copies the buffer into color memory. Thanks to @ArneChristianRosenfeldt for pointing out some naiveties of my previous implementation. NOTE on color buffer: In the video, I forgot to mention the reason why, during the scrolling of the 7 pixels, I copy the color memory into a buffer (instead of scrolling it directly at the eighth pixel). The reason is that, otherwise, I would have to scroll the colors from bottom to top. Without the buffer, if I did the opposite (for example) copying row 1 into row 2 and then row 2 into row 3, etc., by copying row 1 into row 2, the latter gets overwritten, and therefore in the next step (2 -> 3), I would copy incorrect data! On the other hand, if I start from the bottom by copying row 22 into row 23 and then row 21 into row 22, there is no problem. You might wonder, why is it not okay to copy from bottom to top? The reason is that the raster beam is like a tsunami that rushes like the wind! Unfortunately, when it restarts drawing the background, the CPU has not yet completed all the work of scrolling the colors! However, by scrolling them from top to bottom and starting ahead of the raster beam (when it is at the beginning of the bottom border), the first rows it encounters will have already been completed, and the CPU will still manage to complete the last row before it's reached! This technique is called "racing with the raster beam," which is not applicable if we were to reverse the order of scrolling the colors because the first row reached by the raster beam will be updated last by the CPU!

  • @ArneChristianRosenfeldt
    @ArneChristianRosenfeldt 6 місяців тому

    What I like about this method is that it works even better on TED (plus4). There you have a 1.8 MHz CPU in the lower/upper border and 4 useful pages for both the characters and colors. So for all direction scrolling we can waste a lot of memory and have 3 other pages half prepared if the camera moves close to a point where both scrollX and scrollY can wrap around... We should really squeeze every cycle out of the memCpy to at least bring this down to filling thirds of the other page with the scrolled versions. Then we only have to copy 3/2 characters. This is probably the reason why many games have a character status bar at the bottom: This thing just reduces the character count in the scrolling area to just make it work. So no need to use sprites for this as in non-scrolling games. I admired the status overlay using sprites on NES, but really it is just due to the limitation of the hardware. If you scroll on NES, the status appears in the playfield. EGA is similarly stupid. Status screen at 0 can appear on the lower edge of the screen, but then you have to place your Xenon2 playfield besides it and waste half of the video memory .. although EGA would store sprites there, like in a time when the ISA bus was considered fast and games actually read from vram ...

  • @ArneChristianRosenfeldt
    @ArneChristianRosenfeldt 6 місяців тому

    I wonder if the repeated lda {ColBuf}+40*0,x sta {COLMEM}+40*0,x inx could be generated at runtime, like we do for webpages or Wolf3d did for the column renderer. Also why waste 2 cycles on inx here, but not here: lda {VIDMEM0}+40*0,x sta {VIDMEM1}+40*1,x lda {VIDMEM0}+40*1,x sta {VIDMEM1}+40*2,x ah got it. The second example does not fit into one byte. But a general generator would probably generate code without INX for both. I wonder why you don't align to 256 byte pages for the color buffer scrolling to save another cycle? Like you would copy 216 bytes inside a page and 40 bytes cross a page with x starting at 0 again to prevent the carry. Is the 6 important here? This does not seem to be Sonic the Hedgehog. You scroll max 8 pixel per frame.

  • @networkg
    @networkg 6 місяців тому

    Thank you so much for the English language version. You are just brilliant at explaining Commodore 64 programming.

    • @agpxnet
      @agpxnet 6 місяців тому

      If you like these videos, please share! Thanks!

  • @kimyona5274
    @kimyona5274 6 місяців тому

    A very good explanation. Thanks a lot for the time and effort you put into these tutorial-videos!

    • @agpxnet
      @agpxnet 6 місяців тому

      If you like these videos, please share them and you will help me produce more! Thank you!

  • @gamesgonenuts
    @gamesgonenuts 6 місяців тому

    cool to see how this is done smashed the like

  • @ArneChristianRosenfeldt
    @ArneChristianRosenfeldt 6 місяців тому

    RLE Leads to this distribution of lengths. Either let the compressor find out max length and number of bits needed or add a Huffman coder. Maybe even length 0 can be included and very long spans are coded repeatedly? Can of worms.

    • @agpxnet
      @agpxnet 6 місяців тому

      Yes, I definitely need a better compression scheme and Huffman is the natural choice. I used RLE just because it's very simple to implement and the decompression is very fast.

    • @ArneChristianRosenfeldt
      @ArneChristianRosenfeldt 6 місяців тому

      @@agpxnet yeah and it works. I just mean that RLE has a natural choice for length and that is 8 bits. But that feels so arbitrary. It sure works great for platforms! Windows bitmap format offers RLE, but nobody seems to use it. All I know is gif and jpeg.. I think that jpeg uses RLE with Huffman. Huffman has this connection to entropy coding / arithmetic coding and Shannon information theory. Would be interesting to see an arithmetic codec on a C64. Maybe a background task to complete level loading?

  • @giuseppeazzarello8426
    @giuseppeazzarello8426 6 місяців тому

    Ciao, ho provato a realizzare, quando da te egregiamente spiegato, per quando riguarda la collisione sprite/sfondo, utilizzando le coordinate, che apparentemente mi sembravano di aver capito tutto , e di facile applicazione , , ma sto avendo delle difficolta., non volevo disturbarti, ma la volonta di imparare e forte ed allora chiedo supporto. Al momento non sto usando xcbasic. In quando a causa di un prolema forse un virus al sistema operativo , ho dovuto formattare il pc , adesso pero ho difficolta ad installare xcbasic , ho instalato anche il tools for visual studio ma niente. Pertanto ho pensato di realizzare un piccolo programma in basic , per mettere in pratica le nuove procedure di programmazione viste nel tuo tutorial , cerco di realizzare il programma in basic, poiche è il modo migliore per imparare ed analizzazione il codice , e successivamente convertirlo in assembly o altro, sempre nei limiti della mia capacita. Pertanto , in base a quello che ho capito, ho cercato di realizzarlo , ma senza ottenere alcun risultato, apparentement sembra corretto, ma sicuramente ce del codice erraro. Applicando le formule da te descritte, le collisione non avvengono, o meglio una collisione avviene solo in quella frontale , lo sprite si ferma solo dopo aver attraversato completamente la parete (codice 165), ho visti e rivisto il codice e il tuo video, ma non riesco a venirne fuori . Pertanto chiedevo, un tuo supporto , per risolvere e capire dove sta l errore , naturalmente con spiegazione , grazie. 10 print chr$ (147) 20 poke 53280,7 :poke53281,1 :rem colore bordo/schermo 30 V=53248 :rem Inizializza area video Chip II 40 x=80: y=90 :rem Impostazione iniziale coordinata X e Y 50 poke 650,128 :rem ripetiz automativa tasti 60 POKE53287,5 :rem colora lo sprite 0 (5=verde) 70 pokev+21,1 :rem abilita sprite 0 (valore 1) 80 REM PUNTATORIA AREA DISEGNO SPRITE E CARICARICAMENTO 90 poke2040,192 100 for n=12288 to 12350: readq :poken,q: next 110 REM CARATTERI CON CUI COLLIDERE 120 PRINT "{home}{down*3} {cyan}{185}{185}{185}{185}{185}{185}{185}" 130 PRINT " {165}" 140 PRINT " {165}" 150 PRINT " {165}" 160 PRINT " {165}" 170 PRINT " {165}" 180 PRINT " {165} EEEEEEEEE" 190 PRINT " {165}" 200 PRINT " {165}" 210 PRINT " {165}" 220 PRINT " {165}" 230 PRINT " EEEEEEEEE" 240 REM COORDINATE POSIZIONE INIZIALI SPRITE 250 pokev+0,x :rem coordinata X dello sprite 0 260 pokev+1,y :rem coordinata Y dello sprite 0 270 xx=x:yy=y 280 REM GESTIONE TASTIERA 290 GETa$ 300 if a$=chr$( 29) then x=x+2 :rem con "r" sposta lo sprite a destra 310 if a$=chr$(157) then x=x-2 :rem con "l" sposta lo sprite a sinistra 320 if a$=chr$( 17) then y=y+2 :rem con "d" sposta lo sprite in giu 330 if a$=chr$(145) then y=y-2 :rem con "u" sposta lo sprite in su 340 REM SALTO 350 if a$=chr$(88) then s=4 :gosub 520 :rem con "x" SALTO DESTRA 360 if a$=chr$(90) then s=-4 :gosub 520 :rem con "z" SALTO SINISTRA 370 REM POSIZIONE CARATTERE 380 cx=int((x-24)/8) 390 cy=int((y-50)/8) 400 REM FORMULE COLLISIONE 430 q=peek(1024+cx+cy*40) 450 if (q=101) or(q=165) or (q=185) then x=xx and y=yy :goto 110 460 REM CONFINI 470 if x=<24 then x=24 :rem limita il bordo sinistro 480 if x=>255 then x=255 :rem limita il bordo destro 490 if y=<50 then y=50 :rem limita il bordo > 500 if y=>229 then y=229 :rem limita il bordo < 510 goto 110 520 REM SALTO DESTRA E SINISTRA 530 for H=-12 to 12 step2 550 x=x+s :rem > valore >distanza 560 y=y+H*.5 :rem > valore > altezza(.5),utilizzare valori <= .5 570 pokev,x 580 pokev+1,y 590 next 600 return 620 DATA 3,192,0,3,128,0,3,192,0,3,192,0,1,128,0,1,128,0,1,192 630 DATA 0,1,224,0,3,240,0,3,240,0,7,248,0,13,239,128,9,224,0,17 640 DATA 224,0,3,240,0,7,248,0,15,220,0,62,12,0,48,12,0,32,6,0 650 DATA 0,7,0

  • @giuseppeazzarello8426
    @giuseppeazzarello8426 7 місяців тому

    video e spiegazione impeccabile, con questi video si riesce a capire anche la dinamica di ogni azione nei minimi paicolari

  • @Chick2Disk
    @Chick2Disk 7 місяців тому

    This is a series of great videos! Thanks for the effort you put!

    • @agpxnet
      @agpxnet 6 місяців тому

      If you find them useful, please share these videos so I can make more. Thank you.

    • @Chick2Disk
      @Chick2Disk 6 місяців тому

      ​@@agpxnetDone😊

  • @WolfgangS
    @WolfgangS 7 місяців тому

    Well, this information comes 40 years too late ... But thank you anyway ...

  • @DoomRater
    @DoomRater 7 місяців тому

    I remember theorizing about multiplexing while I owned my C64 as a kid but never got the chance to try and implement it. I didn't know if any game I could write would have enough speed to attempt it either. But my tools were as crude as my understanding, and self written too, so I can't be too hard on myself

  • @carlosimetti2319
    @carlosimetti2319 7 місяців тому

    Ottima spiegazione , complimenti per il video! Una curiosità a che età hai iniziato a mettere mano sull'assembly del 6510?

    • @agpxnet
      @agpxnet 7 місяців тому

      Ciao, grazie. Intorno ai 10 anni, ma a 16 sono passato al PC. Ho ripreso il C64 nel 2020, 28 anni dopo.

  • @agpxnet
    @agpxnet 7 місяців тому

    Update: in the description you can find a second version of the formula implementation, which requires only 50 bytes instead of 512, spending 12 more clock cycles. It depends on the circumstances: whether you need maximum performance or to save memory. And speaking of performance, you can also avoid subtracting 24 and 50 in the formula and instead do it directly in the coordinates of the contact points.

  • @agpxnet
    @agpxnet 7 місяців тому

    Aggiornamento: nella descrizione potete trovare una seconda versione dell'implementazione della formula, che richiede solo 50 bytes anziché 512, spendendo 12 cicli macchina in più. Dipende dalle circostanze: se vi serve avere le massime performance oppure risparmiare memoria. E a proposito di performance, si può anche evitare di sottrarre 24 e 50 nella formula e farlo invece direttamente nelle coordinate dei punti di contatto.

  • @jadermonari2272
    @jadermonari2272 7 місяців тому

    Grazie !!! Molto utile!!!