ASM Commodore 64

Histoire de ne pas parler à des inconnus, voici le bottin de la jet set.

Modérateurs : Papy.G, fneck, Carl

Répondre
Izidor
Messages : 13
Inscription : 01 mars 2023 15:38

ASM Commodore 64

Message par Izidor »

Bonjour à tous,
Je suis un nouvel utilisateur de ce forum, je vais donc me présenter brièvement. Sur le web je suis Izidor, au quotidien je répond au prénom de Jérôme et vais soufler ma 45 ème bougie en fin d'année.
Je suis passionné/restaurateur de flipper et bricole surtout des flippers conçu dans les années 70/80 à base de processeur 8/16 Bits.
On peut aussi me rencontrer sur le forum Flipjuke.
J'ai aussi, il y a déjà plusieurs années fais du romhacking sur de vieille console de jeux telle que la SNES. Puis j'ai découvert le C64...

J'ai lu beaucoup de chose sur ce vieux tonton 8 bits, puis j'ai eu un coup de cœur, il faut dire que l’expérience que j'ai acquis en étudiant les Gameprom Gottlieb écrites en 6502 ma beaucoup aidé à comprendre le fonctionnement du C64 basé sur un 6502 modifié pour le rendre capable de sélectionner des banks de mémoire. Je me suis donc mis à programmer un petit shooter à défilement vertical.

Voilà pour la présentation, la suite de ce fil de discutions sera surtout orientée vers l'asm 6510 (6502), je vais donc vous sollicitez pour mes interrogations car, oui j'ai pleins de questions :?: , mais pour le moment je vais y aller pas à pas.
Bien sûr si je peux aider sur d'autres sujets, cela sera avec plaisir :wink:
Dernière modification par Izidor le 01 mars 2023 17:47, modifié 1 fois.
Izidor
Messages : 13
Inscription : 01 mars 2023 15:38

Re: ASM Commodore 64

Message par Izidor »

Avant tout,
Voici une description de mon projet :
-Type de jeu à défilement vertical, un seul sens (haut vers le bas).

La configuration est en cour, voici un peu d'infos :
-VicII bank 1 adresses $4000-$7FFF 16ko
-Mode Tile, résolution 320x200 (25 lignes x 40 colonnes de tiles de 8x8 pixels)
Organisation de la bank :
-VicII Pointer d'écran à $4000-$43E7 1Ko
-VicII Pointer pour les 8 sprites de base à $43E8-43FF 8o
-VicII Tilset, Font à $4800-$4FFF 2Ko

-Tilemap $5000-$53E7 1Ko
-Buffer de scrolling $5400-$5427 40o (une ligne)
Avatar de l’utilisateur
Kristof
Messages : 373
Inscription : 08 mars 2021 10:44
Localisation : Narbonne (11)
Contact :

Re: ASM Commodore 64

Message par Kristof »

Sympa.
tu as une vidéo de ton projet en train de tourner ?

J'ai fais un jeu sur C64, mais je l'ai fait en C. (avec quelques routines asm).
yves
Messages : 469
Inscription : 12 sept. 2007 21:32

Re: ASM Commodore 64

Message par yves »

Bienvenue !

Beau projet.
Izidor
Messages : 13
Inscription : 01 mars 2023 15:38

Re: ASM Commodore 64

Message par Izidor »

Merci pour votre acceuil :P

@Kristof,
Pour te répondre, pour le moment le projet se résume à l'affichage d'un background composé de tiles qui défilent du haut vers le bas de l'écran. Donc pas grands chose de visuellement intéressant.
Je connais bien le C/C++ et C# mais là, je vais uniquement me concentrer sur des routines personnalisées écrites en ASM 6502.

Par exemple, comme c'est la base de tout bon Shoot'em up, je perfectionne mon algorithme de scrolling vertical.
J'ai déjà écrit une routine qui fonctionne très bien mais qui a des limites, je veux l'améliorer pour pouvoir implémenter des effets de parallax sympa et gagner en fluidité.
Pour le moment, le décalage de défilement est de une ligne de tile, c'est a dire de 8px par image.
Je commence par copier/sauvegarder la dernière ligne dans un emplacement mémoire (Buffer de scrolling), ensuite je décale toutes les lignes vers le bas en commençant par l'avant dernière vers la dernière(que j'ai sauvegardé au préalable), je remonte jusqu’à copier la première ligne dans la deuxième, puis enfin je copie la dernière ligne que j'ai sauvegarder dans la première.
Voyez ça comme un tapis roulant.
Toutes les images sont calculées à l'avance!
j'attends la synchronisation Raster (vBLANK), puis j'écrit la nouvelle image sur le VicII screen. comme ceci :

Code : Tout sélectionner

;----------------UPDATE TILEMAP
UPDATE_SCREEN
                     LDY #$00 ;Index 00-FF Low octet
                     LDX #$00 ;Counter bloc, 4x256 tiles  
                     JSR INIT_PTR_SCREEN ;Reset pointer 
AGAIN                LDA (PTR_Tilemap),y ;Read Tilemap to buffer (Addr $5000)
                     STA (PTR_Screen),y  ;Write Tile to screen (Addr $4000)
                     INY                 ;Up low octet
                     BNE AGAIN           ;Loop AGAIN if Y < 256
                     INC PTR_Tilemap+1   ;Up High octet
                     INC PTR_Screen+1    ;Up high octet
                     INX                 ;Up counter
                     CPX #$04            ;Is four bloc ?
                     BNE AGAIN           ;No? loop AGAIN      
                     JSR INIT_PTR_SCREEN ;Reset pointer
                     RTS                 ;Feedbak call routine
;----------------FIN

Et là , un extrait de la routine de décalage pour le scrolling

Code : Tout sélectionner

               LDX #$00    ;Counter colums 
COPY_ROW24     LDA $5398,x ;Load tile to line 24              
               STA $53C0,x ;and put it on line 25
               INX ;next colums
               CPX #$27; if last colum ?
               BNE COPY_ROW24;if no, loop Copy row label 
Le truc c'est que je voudrais quelque chose de plus précis, décaler de pixel en pixel par exemple,mais comme je suis en made " Tile " je ne vois pas comment faire ! Je n'ai pas envie de passer en mode Bitmap (c'est un autre mode d'affichage de C64).

Si quelqu'un à une piste je suis preneur!
Dernière modification par Izidor le 01 mars 2023 18:09, modifié 1 fois.
Avatar de l’utilisateur
paspeur
Messages : 321
Inscription : 29 avr. 2022 16:28
Localisation : Californie/Bretagne

Re: ASM Commodore 64

Message par paspeur »

Bienvenue à toi Jérôme.

Bonne chance pour ton project et tiens nous au courant !

@lightbeing a commencé une série intéressante sur YouTube. Plus de détails ici: [Tuto] Choisir son livre pour débuter en LM 6502/6510 sur C64.
Dernière modification par paspeur le 01 mars 2023 19:58, modifié 1 fois.
c52back
Messages : 623
Inscription : 07 janv. 2023 11:43

Re: ASM Commodore 64

Message par c52back »

Bienvenue à toi Jérôme. :wink:
Avatar de l’utilisateur
fneck
Site Admin
Messages : 17541
Inscription : 01 avr. 2007 12:03
Localisation : Drôme Provençale (26)
Contact :

Re: ASM Commodore 64

Message par fneck »

Je pense que ce message est avant tout une présentation, en conséquence j'ai déplacé le sujet dans la catégorie qui va bien. Je ne peux que te conseiller d'ouvrir un autre sujet si tu veux parler d'assembleur. Note bien que la catégorie 8-bits est dédiée au matériel.

Donc, bienvenue parmi nous 8)
Fabien https://www.system-cfg.com
Les bonnes pratiques de l'utilisateur du forum viewtopic.php?f=14&t=3
Avatar de l’utilisateur
Carl
Modérateur
Messages : 13300
Inscription : 08 avr. 2007 13:21
Localisation : http://www.doledujura.fr
Contact :

Re: ASM Commodore 64

Message par Carl »

Bienvenue sur le forum...
Carl
Izidor
Messages : 13
Inscription : 01 mars 2023 15:38

Re: ASM Commodore 64

Message par Izidor »

Merci ! :wink:

C'est noté Mr le modérateur !
La suite est ici : viewtopic.php?f=25&t=14183&p=225130#p225130
Avatar de l’utilisateur
fneck
Site Admin
Messages : 17541
Inscription : 01 avr. 2007 12:03
Localisation : Drôme Provençale (26)
Contact :

Re: ASM Commodore 64

Message par fneck »

Parfait :wink:
Fabien https://www.system-cfg.com
Les bonnes pratiques de l'utilisateur du forum viewtopic.php?f=14&t=3
Brochiman
Messages : 3545
Inscription : 02 juin 2019 11:26
Localisation : Angers

Re: ASM Commodore 64

Message par Brochiman »

Bienvenue
superlolo
Messages : 201
Inscription : 22 févr. 2022 10:30
Localisation : Lille

Re: ASM Commodore 64

Message par superlolo »

Bienvenue sur le forum Jérôme !
Izidor
Messages : 13
Inscription : 01 mars 2023 15:38

Re: ASM Commodore 64

Message par Izidor »

Merci de l’accueil :!:
Avatar de l’utilisateur
gleike
Messages : 1349
Inscription : 16 oct. 2014 11:12
Localisation : Ludres (54710) Meurthe & Moselle

Re: ASM Commodore 64

Message par gleike »

Bienvenue à bord.
Répondre