ASM Commodore 64
Modérateurs : Papy.G, fneck, Carl
ASM Commodore 64
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
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
Dernière modification par Izidor le 01 mars 2023 17:47, modifié 1 fois.
Re: ASM Commodore 64
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)
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)
Re: ASM Commodore 64
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).
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).
Re: ASM Commodore 64
Bienvenue !
Beau projet.
Beau projet.
Re: ASM Commodore 64
Merci pour votre acceuil
@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 :
Et là , un extrait de la routine de décalage pour le scrolling
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!
@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
Si quelqu'un à une piste je suis preneur!
Dernière modification par Izidor le 01 mars 2023 18:09, modifié 1 fois.
Re: ASM Commodore 64
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.
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.
Re: ASM Commodore 64
Bienvenue à toi Jérôme.
- fneck
- Site Admin
- Messages : 17541
- Inscription : 01 avr. 2007 12:03
- Localisation : Drôme Provençale (26)
- Contact :
Re: ASM Commodore 64
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
Donc, bienvenue parmi nous
Fabien https://www.system-cfg.com
Les bonnes pratiques de l'utilisateur du forum viewtopic.php?f=14&t=3
Les bonnes pratiques de l'utilisateur du forum viewtopic.php?f=14&t=3
- Carl
- Modérateur
- Messages : 13301
- Inscription : 08 avr. 2007 13:21
- Localisation : http://www.doledujura.fr
- Contact :
Re: ASM Commodore 64
Bienvenue sur le forum...
Carl
Carl
Re: ASM Commodore 64
Merci !
C'est noté Mr le modérateur !
La suite est ici : viewtopic.php?f=25&t=14183&p=225130#p225130
C'est noté Mr le modérateur !
La suite est ici : viewtopic.php?f=25&t=14183&p=225130#p225130
- fneck
- Site Admin
- Messages : 17541
- Inscription : 01 avr. 2007 12:03
- Localisation : Drôme Provençale (26)
- Contact :
Re: ASM Commodore 64
Parfait
Fabien https://www.system-cfg.com
Les bonnes pratiques de l'utilisateur du forum viewtopic.php?f=14&t=3
Les bonnes pratiques de l'utilisateur du forum viewtopic.php?f=14&t=3
Re: ASM Commodore 64
Bienvenue
Re: ASM Commodore 64
Bienvenue sur le forum Jérôme !
- gleike
- Messages : 1349
- Inscription : 16 oct. 2014 11:12
- Localisation : Ludres (54710) Meurthe & Moselle
Re: ASM Commodore 64
Bienvenue à bord.