Dev GX4000 / CPC

Voir le sujet précédent Voir le sujet suivant Aller en bas

Dev GX4000 / CPC

Message par fanoplusplus64K le Mar 20 Sep 2016 - 12:32

Je crée ce sujet pour ne pas aller charger trop le sujet AMSTRAD CPC Officiel.
Un petit exemple (en sjasm) pour créer directement le fichier cartouche pour la GX (.CPR)
Ici c'est pour une cartouche 128K mais c'est facilement adapatable pour plus gros en ajoutant vos roms.ça part du principe de chaque rom fait 16K.

Code:
;boot code and cartrige configuration
 output "bin/game.cpr"
 org 0
 
;cartrige header
 db "RIFF"

 dd cart_size
cart_start
 db "AMS!"
 
;bank 0 - boot strap
 db "cb00"
 dd 0x4000
 incbin "bin/rom00.bin"
 
;bank 1
 db "cb01"
 dd 0x4000
 incbin "bin/rom01.bin"
 
;bank 2
 db "cb02"
 dd 0x4000
 incbin "bin/rom02.bin"

;bank 3
 db "cb03"
 dd 0x4000
 incbin "bin/emptyrom.bin"
 
;bank 4
 db "cb04"
 dd 0x4000
 incbin "bin/emptyrom.bin"

;bank 5
 db "cb05"
 dd 0x4000
 incbin "bin/emptyrom.bin"

;bank 6
 db "cb06"
 dd 0x4000
 incbin "bin/emptyrom.bin"

;bank 7
 db "cb07"
 dd 0x4000
 incbin "bin/emptyrom.bin"

cart_size EQU $-cart_start

fanoplusplus64K
Patient contaminé

Masculin Nombre de messages : 412
Age : 41
Date d'inscription : 16/01/2011

Revenir en haut Aller en bas

Re: Dev GX4000 / CPC

Message par 65c02 le Mar 20 Sep 2016 - 14:32

Cool,
super idée

La GX4000 c'est un Amstrad CPC+ sans clavier ou c'est différent ?
A l’exécution, c'est du bank switching comme sur un CPC classique ?
Le point d'entrée du code se fait sur quelle adresse ?
avatar
65c02
Patient incurable

Masculin Nombre de messages : 1860
Age : 46
Localisation : Paulhan
Date d'inscription : 23/05/2011

http://65c02.tumblr.com

Revenir en haut Aller en bas

Re: Dev GX4000 / CPC

Message par fanoplusplus64K le Mar 20 Sep 2016 - 15:20

C'est ça , un + sans clavier (enfin ,les 2 joysticks et la touche Pause sont connectés) ni FDD avec 64K de RAM.

C'est du bank switching un peu différent du CPC classique.ça utilise le même système de ROM sauf que tu peux les affecter différement.tu peux directement connecter les pages de la cartouche dans la partie haute (C000->FFFF) via DF00 avec slot+128 et sinon connecter les 8 premieres pages de la cartouche via RMR2 (0->3FFF).
Comme tu l'as deviné , chaque "slot" correspond à une page de 16K dans la cartouche avec 32 "slots" possibles soit 512K.

Au boot, le point d'entrée c'est 0 , avec la page 0 de la cartouche connectée en 0000 et la page 1 connectée en C000.

fanoplusplus64K
Patient contaminé

Masculin Nombre de messages : 412
Age : 41
Date d'inscription : 16/01/2011

Revenir en haut Aller en bas

Re: Dev GX4000 / CPC

Message par Invité le Mar 20 Sep 2016 - 15:21

Et avec tout ça, pas de formidables portages possibles ? ^^

Invité
Invité


Revenir en haut Aller en bas

Re: Dev GX4000 / CPC

Message par fanoplusplus64K le Mar 20 Sep 2016 - 15:35

Carrément mon pote ! même si elle a défauts majeurs la console permet quand même de belles choses.
Ce qui manquait c'est justement un hard comme le C4CPC pour vraiment pouvoir dévelloper dessus.
Après c'est juste qu'il faut du temps pour faire quelque chose de solide niveau réalisation, c'est ça qui manque le plus finalement.
Avec l'arrivée du C4CPC j'espère qu'on va voir fleurir les réalisations dans les années qui viennent, voire même des nouvelles sorties en format cartouche.

fanoplusplus64K
Patient contaminé

Masculin Nombre de messages : 412
Age : 41
Date d'inscription : 16/01/2011

Revenir en haut Aller en bas

Re: Dev GX4000 / CPC

Message par Invité le Mar 20 Sep 2016 - 15:38

Oui, ça fait du taf, déjà remapper les entrées clavier, convertir la partie floppy, etc. Mais ça ouvre des portes, héhé. Console fétiche du forum. What a Face

Invité
Invité


Revenir en haut Aller en bas

Re: Dev GX4000 / CPC

Message par fanoplusplus64K le Mar 20 Sep 2016 - 15:42

En portage depuis le CPC tu as déjà pas mal de jeux, après ce sont des jeux CPC donc ne profitant pas pour la plupart des capacités de la console : http://www.cpcwiki.eu/index.php/Converted_GX4000_Software


Dernière édition par fanoplusplus64K le Mar 20 Sep 2016 - 16:38, édité 1 fois

fanoplusplus64K
Patient contaminé

Masculin Nombre de messages : 412
Age : 41
Date d'inscription : 16/01/2011

Revenir en haut Aller en bas

Re: Dev GX4000 / CPC

Message par Invité le Mar 20 Sep 2016 - 15:43

Il faut des éditions "remaster". Mr. Green

Invité
Invité


Revenir en haut Aller en bas

Re: Dev GX4000 / CPC

Message par nemokantio le Mar 20 Sep 2016 - 19:03

J'ajouterais que quand on veut exploiter les capacités de la console, il faut d'abord débloquer l'ASIC (une séquence de codes à envoyer sur un port).
Puis constamment jongler avec la page ASIC à mapper en ram (pour travailler avec les sprites, le scrolling etc...).
Et quand on vient du cpc, il faut arrêter de "penser disquette" et "penser cartouche", c'est pas évident.

nemokantio
Patient contaminé

Masculin Nombre de messages : 270
Age : 42
Localisation : Delgastan
Date d'inscription : 23/01/2013

Revenir en haut Aller en bas

Re: Dev GX4000 / CPC

Message par 65c02 le Mar 20 Sep 2016 - 21:13

Ca a l'air chouette.
Quelque chose me dit qu'un de ces quatre vous aller nous faire des trucs incroyables 
smile
avatar
65c02
Patient incurable

Masculin Nombre de messages : 1860
Age : 46
Localisation : Paulhan
Date d'inscription : 23/05/2011

http://65c02.tumblr.com

Revenir en haut Aller en bas

Re: Dev GX4000 / CPC

Message par drfloyd le Mar 20 Sep 2016 - 21:23

un CPC6128+ en 1986 aurait fait un malheur.

_______________________________________________________


Mon profil Gamopat Advisor de vendeur :
http://www.gamopat-forum.com/t94659-dr-floyd-advisor







avatar
drfloyd
DOYEN ET PROFESSEUR FOU DE L'HOPITAL

Masculin Nombre de messages : 126510
Age : 48
Localisation : Dpt 62
Date d'inscription : 05/12/2004

http://www.gamopat.com

Revenir en haut Aller en bas

Re: Dev GX4000 / CPC

Message par TotOOntHeMooN le Mar 20 Sep 2016 - 21:32

Tout à fait. A la place du 6128 du coup.
avatar
TotOOntHeMooN
Docteur *
Docteur *

Masculin Nombre de messages : 5470
Age : 42
Localisation : France
Date d'inscription : 18/04/2013

Revenir en haut Aller en bas

Re: Dev GX4000 / CPC

Message par 65c02 le Mar 20 Sep 2016 - 21:32

@drfloyd a écrit:un CPC6128+ en 1986 aurait fait un malheur.
ça aurait fait un C128  smile
avatar
65c02
Patient incurable

Masculin Nombre de messages : 1860
Age : 46
Localisation : Paulhan
Date d'inscription : 23/05/2011

http://65c02.tumblr.com

Revenir en haut Aller en bas

Re: Dev GX4000 / CPC

Message par Vetea le Mar 20 Sep 2016 - 21:46

Et pourtant, il y avait de super jeu sur CPC6128 !!
Je pense à l'excellent Gryzor ou Renegade ... Bon je ne suis pas objectif, c'était mon amour de jeunesse ... amoureux

Je salue l'initiative de ce post !
Si l'on pouvais y trouver d'autres informations pour aider quiconque voudrait se lancer dans l'élaboration d'un Homebrew sur ces 8 bits, ça serait vraiment super.
Merci encore ! thumleft
avatar
Vetea
Docteur *
Docteur *

Masculin Nombre de messages : 4490
Age : 46
Localisation : Baillargues
Date d'inscription : 22/06/2012

http://www.rolango.fr/

Revenir en haut Aller en bas

Re: Dev GX4000 / CPC

Message par fanoplusplus64K le Mer 21 Sep 2016 - 9:22

Je dois avouer que j'ai du mal à être objectif avec le CPC car j'adore ces machines, le 6128 et la GX sont mes préférées.
J'espère que le sujet va grandir et servir d'aide pour ceux qui auraient envie de ce tenter à ces machines, n'hésitez pas si vous avez des questions d'ordre technique, on pourra essayer d'y répondre Wink

fanoplusplus64K
Patient contaminé

Masculin Nombre de messages : 412
Age : 41
Date d'inscription : 16/01/2011

Revenir en haut Aller en bas

Re: Dev GX4000 / CPC

Message par 65c02 le Mer 21 Sep 2016 - 9:35

J'avoue que te voir faire donne fortement envie de s'y mettre.

Aurais tu des liens sur des tutos qui montrent à quoi doit ressembler une main loop ?
Un code asm de base d'une cartouche.

J'imagine qu'il faut régler les vecteurs d'interruptions et autres joyeuseté qu'on a directement bien propre sur un CPC au lancement.
Par exemple, les registres du CRTC: il faut les configurer au démarrage j'imagine, non ?

J'aimerai bien voir un code qui remplit l'écran, et affiche un sprite.
avatar
65c02
Patient incurable

Masculin Nombre de messages : 1860
Age : 46
Localisation : Paulhan
Date d'inscription : 23/05/2011

http://65c02.tumblr.com

Revenir en haut Aller en bas

Re: Dev GX4000 / CPC

Message par fanoplusplus64K le Mer 21 Sep 2016 - 9:54

Effectivement il faut configurer totalement la machine car en fait tu travailles sur une machine totalement nue au démarrage.Du coup, chacun gère la machine comme il veut.

Après, tu peux aller voir ici http://www.cpcwiki.eu/index.php/Source_Codes et là http://www.cpctech.org.uk/source.html

Après, un petit bout de code d'un bootstrap qui te configure le CRTC (attention là c'est en 200*192 wide pixel), delocke l'ASIC, setup les ROMs et déploie le kernel en RAM de 0 à 3FFF.C'est du WIP donc il n'y a pas la gestion des interruptions mais c'est assez simple sur le + , ou le Z80 est mode 1 (IM1) et tu as un vecteur d'interruption en 0x38 , ou tu est en mode 2 (IM) et I est l'adresse haute de ta table de vecteurs et il y a un registre dans l'ASIC pour préciser les autres bits.Le bit 0 est toujours à 0 , les bits 1 et 2 sont fournis par l'ASIC pour choisir le bon vecteur (PRI,DMA0/1/2) , sachant qu'il y a un bug sur le +, c'est qu'il y a parfois confusion entre les vecteurs PRI et DMA0 (donc n'utiliser qu'un des deux finalement mais pas les deux en même temps)


Code:
;CRTC configuration
 module CRTC
 
;send a serialised configuration to CRTC
;HL = values to write to registers
;C = first register
;E = register count
Config

 ld B,0xBC ;register select
.loop
 out (C),C ;select register
 inc B ;B=0xBD
 ld A,(HL)
 inc HL
 out (C),A ;send data to register
 inc C ;next register
 dec B ;B=0xBC
 
 dec E
 jr nz,.loop
 ret
 
 endmodule

Code:
;ASIC unlock code, used only once
 module ASIC
Unlock
 ld HL,.sequence
 ld B,0xBC
 ld A,.sequence_size
.loop
 ld C,(HL)
 out (C),C
 inc HL
 dec A
 jr nz,.loop
 ret
 
.sequence
 db 0xff,0x00,0xff,0x77,0xb3,0x51,0xa8,0xd4,0x62,0x39,0x9c,0x46,0x2b,0x15,0x8a,0xcd,0xee
.sequence_size EQU $-.sequence
 
 endmodule

Code:
;boot code
 output "bin/rom00.bin"
 org 0xc000
 
 include "code/macros.asm"
 include "code/heap.asm"

 
;setup temporary stack here as we are sure there is no rom
 di
 ld SP,0xc000
 
 ;be sure to select cartrige ROM 0 (128+0)
 ld BC,0x80
 out (C),C
 
 jp Entry

Entry
 
 ;setup RMR to unpage lower ROM
 ld A,%10000100
 ld B,0x7F
 out (C),A
 ld (HEAP.RMR),A ;setup default value for RMR
 ;setup new stack
 ld SP,0x4000
 
 ;cleanup both screen
 ld HL,0x4000
 ld DE,0x4001
 ld (HL),0
 ld BC,0x7FFF
 ldir
 
;setup grid
 call SetupGridAddress

 call ASIC.Unlock
 
 ld HL,Setting
 ld C,0
 ld E,Setting.size
 call CRTC.Config
 
 ;red border
 ld BC,0x7F10
 ld A,0x4C
 out (C),C
 out (C),A
 
 ;deploy kernel
 ld HL,Kernel
 ld DE,0
 ld BC,Kernel.size
 ldir
 
 ;startup
 rst 0
 
SetupGridAddress
 ld HL,0x3600
 ld DE,64
 ld B,32
 ld IX,HEAP.GRID
 
.loop
 ld (IX),L
 ld (IX+1),H
 
 inc IX
 inc IX
 
 add HL,DE
 
 djnz .loop
 ret
 
 
 
Setting
 db 63 ;0 :standart 64µs screen
 db 49 ;1 :48 visibles chars width + 1 masked by scrolling
 db 50 ;2 :X centering
 db 128+12 ;3 :minimum = 8 , R2+R3<R0
 db 38 ;4 : 312 lines screen (50hz)
 db 0 ;5 : no vertical adjust
 db 24 ;6 : 24 char lines to display
 db 30 ;7 : vertical centering
 db 0 ;8 : interlaced mode (off)
 db 7 ;9 : lines per char
.size EQU $-Setting
 
 
 include "lib/asic_unlock.asm"
 include "lib/crtc_config.asm"
 
Kernel
 incbin "bin/kernel.bin"
.size EQU $-Kernel
 

 align 0x4000

fanoplusplus64K
Patient contaminé

Masculin Nombre de messages : 412
Age : 41
Date d'inscription : 16/01/2011

Revenir en haut Aller en bas

Re: Dev GX4000 / CPC

Message par 65c02 le Mer 21 Sep 2016 - 10:02

Excellent !
Merci cheers
avatar
65c02
Patient incurable

Masculin Nombre de messages : 1860
Age : 46
Localisation : Paulhan
Date d'inscription : 23/05/2011

http://65c02.tumblr.com

Revenir en haut Aller en bas

Re: Dev GX4000 / CPC

Message par BDCIron le Mer 28 Sep 2016 - 15:04

Bien sympa ce sujet.
Merci Fano, très bonne idée.

Vous pourrez aussi aller voir la:Programmation GX4000
Et la:Programmation sur CPC en général.

Si vous voulez vous y mettre Wink

BDCIron
Patient contaminé

Masculin Nombre de messages : 157
Age : 37
Localisation : Orne
Date d'inscription : 12/08/2015

Revenir en haut Aller en bas

Re: Dev GX4000 / CPC

Message par 65c02 le Mer 28 Sep 2016 - 15:08

Oh Oh Oh Very Happy
Mais on a du gros level sur ce topic !
merci 
cheers
avatar
65c02
Patient incurable

Masculin Nombre de messages : 1860
Age : 46
Localisation : Paulhan
Date d'inscription : 23/05/2011

http://65c02.tumblr.com

Revenir en haut Aller en bas

Re: Dev GX4000 / CPC

Message par Ricco59_59 le Mer 28 Sep 2016 - 19:57

Hello

Je vais suivre cela avec grand intérêt car je vais m'y remettre après le falcon, euh la megadrive... neogeo ?

Dans tous les cas l'amstrad est et restera ma machine de cœur et je me renseigne sur la C4CPC

Excellente initiative Fano et merci pour les liens BDCIron

Ricco59_59
Patient contaminé

Masculin Nombre de messages : 366
Localisation : Lille
Date d'inscription : 25/07/2006

http://ericmcolleco.free.fr

Revenir en haut Aller en bas

Re: Dev GX4000 / CPC

Message par fanoplusplus64K le Jeu 29 Sep 2016 - 8:12

Je vois que le sujet intéresse , c'est super !
Si vous butez sur quelque chose pour votre code (que ça soit technique ou sur l'optimisation car la machine est particulièrement souple malgré ses faiblesses évidentes), n'hésitez pas à poser les questions , je pense qu'il y aura quelqu'un ici pour vous répondre Wink
Sinon , je radote mais le C4CPC est quelque chose d'absolument génial pour les GX/+, comme l'a été le HXC pour le CPC à son arrivée.

fanoplusplus64K
Patient contaminé

Masculin Nombre de messages : 412
Age : 41
Date d'inscription : 16/01/2011

Revenir en haut Aller en bas

Re: Dev GX4000 / CPC

Message par Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut


 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum