CPC Rulez
https://cpcrulez.fr/forum/

[SCUMM] Code Z80 CPC conversion from SCUMMVM
https://cpcrulez.fr/forum/viewtopic.php?f=4&t=4276
Page 11 sur 14

Auteur :  MUSICMAN3512 [ 19 Août 2013, 21:44 ]
Sujet du message :  Re: [SCUMM] Code Z80 CPC conversion from SCUMMVM

Yes TotO, ça aussi c'est une excellente idée !!!
:biere:

Auteur :  fano [ 20 Août 2013, 05:56 ]
Sujet du message :  Re: [SCUMM] Code Z80 CPC conversion from SCUMMVM

Megachur a écrit :
L'espoir est encore présent !

J'ai profité de quelques congés pour me remettre dans le code une dizaine d'heure.

- revu du code en profondeur ;-) et codé pas mal de nouvelles fonctions, sachant que je fais aussi des choix sur la traduction du coding en C en ASM Z80 pour caser cela sur 128ko et avec une performance honorable sur CPC ;-) !
- L'ensemble des opcodes de la première room sont exécutés désormais jusqu'au chargement de la deuxième et il n'en reste pas bcp pas déjà écrit en asm !
- j'en suis à afficher les images de fond des scènes et les costumes des acteurs. En fait, c'est pas tant cela qui est compliqué mais plutôt de réfléchir comment caser tous les datas dans les 128ko du CPC : je pèse les pour et contre entre charger en mémoire un max de truc ou charger souvent sur disque (sachant que c'est un jeu d'aventure, mais je ne veux pas que cela rame tout le temps !!!) BREF, actuellement, il me reste 2 banks de mémoire libre et 2 ko en mémoire 64ko active... va falloir que je fasse encore du coding car le moteur SCUMMVM que j'adapte doit se limiter à un certains nombres de ko utilisables ce qui n'est pas trop le cas dans le code initial !!!

mais je vais reprendre le boulot demain... alors wait & see ! L'espoire fait vivre !

dès que j'arriverai à faire fonctionner une preview un peu jouable, je reposte quelquechose ici ! :pir8: :winner:
Ca fait plaisir de voir que ça avance.Quid de la mise en ligne du source sur une forge (google code ou sourceforge) histoire d'attirer peut être d'autres personnes pour travailler dessus ?
C'est vrai que totO n'a pas tort , l'avantage avec un support cartouche serait de n'utiliser la RAM que pour ce qui est non statique.

Auteur :  Hwikaa [ 20 Août 2013, 07:13 ]
Sujet du message :  Re: [SCUMM] Code Z80 CPC conversion from SCUMMVM

Purée, ça c'est une super nouvelle !

TotO a écrit :
je me souviens avoir dessiné les fonts il y a bien 4/5 ans maintenant. Nop ?


Pour être précis, on a commencé à faire des trucs sur ce projet il y a trois ans. Ça va encore. :-D

Auteur :  TotO [ 20 Août 2013, 07:47 ]
Sujet du message :  Re: [SCUMM] Code Z80 CPC conversion from SCUMMVM

Au temps pour moi, j'avais vu "07", mais c'était le mois. :sweatingbullets:

Auteur :  Megachur [ 20 Août 2013, 20:32 ]
Sujet du message :  Re: [SCUMM] Code Z80 CPC conversion from SCUMMVM

kawickboy a écrit :
bon courage en tout cas.
c'est cpc ou cpc+ comme code ?


pour l'instant, je dirais que c'est du soft asm z80 ;-). Si cela marche en cpc old, on pourra faire une adaptation CPC+ en utilisant spécifiquement son hardware ;-) !

Auteur :  Megachur [ 20 Août 2013, 20:33 ]
Sujet du message :  Re: [SCUMM] Code Z80 CPC conversion from SCUMMVM

TotO a écrit :
Et bien !

Félicitations, car je me souviens avoir dessiné les fonts il y a bien 4/5 ans maintenant. Nop ?
J'espère que la suite ne prendra pas 1 lustre de plus. :)

TotO.


euh,non pas si vieux que ça qd même... le premier post date du Dim Juil 25, 2010

ouaaah, 3 ans déjà ! :downnn:

Auteur :  Megachur [ 20 Août 2013, 20:40 ]
Sujet du message :  Re: [SCUMM] Code Z80 CPC conversion from SCUMMVM

fano a écrit :
Ca fait plaisir de voir que ça avance.Quid de la mise en ligne du source sur une forge (google code ou sourceforge) histoire d'attirer peut être d'autres personnes pour travailler dessus ?
C'est vrai que totO n'a pas tort , l'avantage avec un support cartouche serait de n'utiliser la RAM que pour ce qui est non statique.


effectivement, j'avais proposé de mettre le source sur google code pour que d'autres puissent m'aider... mais personne de vraiment motivé / libre s'est finalement accroché au truc (comme moi d'ailleurs vu le peu de temps que j'ai eu de dispo) !!!

enfin c'est toujours possible, si des personnes sont vraiment motivées pour se lancer dans l'aventure avec un peu de dispo temps ! :biere: :biere: :biere: :biere: :biere:

Auteur :  Megachur [ 25 Août 2013, 16:35 ]
Sujet du message :  Re: [SCUMM] Code Z80 CPC conversion from SCUMMVM

encore un peu d'avancement (vive les week-end au travail) :

- j'ai fait un batch dos qui pilote un util et qui extrait tous les datas (script, image, etc.)
- j'ai fait un batch dos qui génère automatiquement les .asm d'include des différents fichiers binaires.

-> la prochaine étape, c'est la transformation des graphismes (image de fond, costumes, objets, etc.) :

pour les image 'BM', le header est comme cela :
- longueur du fichier binaire sur 4 octets (nous on en utilisera que deux sur cpc ;-))
- 'BM'
- liste des pointeurs vers des colonnes de 8 pixels de la hauteur de l'image (sachant que la taille largeur/hauteur de l'image est stocké ailleurs dans un autre fichier ainsi que la palette pour le gate array)
puis les datas des colonne1...n

donc, je pensais faire cela en automatique à partir des fichiers png/bmp (ou .scr) que j'ai déjà depuis un bail (merci mes amis graphistes motivés depuis le début de cette aventure).
l'idée est que le batch qui fasse cela, parte soit directement de l'image png/bmp, soit plus probablement après conversion avec convimgcpc en .scr !
sachant que cette utilitaire doit pouvoir gérer le mode 1 (plus facile car 8 pixels = 2 octets) ou le mode 0 (on sait jamais si on fait une version mode 0) !

donc je peux le coder en .asm sur cpc directement car faire un prog c risque d'être un poil plus long ?!

si cela intéresse quelqu'un de m'aider sur ce point pour cet util notamment, n'hésitez pas à me contacter.

un fois fait cela, je n'aurai plus qu'à finaliser le code de lecture, il faudra ouvrir le fichier, se positionner sur la bonne colonne de data (lorsqu'il y a une image très large avec un scrolling par ex), les charger et les afficher sur l'écran !!!

cet util devra permettre aussi au graphiste d'être autonome sur le changement/ajustement des graphismes/couleurs en permettant ensuite facilement de réassembler les datas en fichier -> je coderai (reprendrai un déjà existant ;-)) ensuite un batch dos ensuite avec ManageDsk pour la création du dsk et l'injection des fichiers en auto !

si on fait une version CPC+, cela permettra également, une fois le code adapté, de faire les tests des changements niveau graphisme de manière la plus automatisée possible et facile pour les graphistes !
Nota : au départ même, l'image de fond de chaque room était intégré au fichier d'une room, mais vu que ça fait des fichiers de + de 32ko quelques fois (avec les images aussi des costumes), j'ai décidé pour la version CPC de les séparer dans d'autres fichiers indépendant. Cela permettra plus de souplesse comme j'évoquai plus haut, car il suffira de ne régénérer que les graphismes spécifiques au CPC (sauf si changement de taille et à voir pour les couleurs mais ça on pourra facilement les rajouter dans le fichier des datas) !

ensuite on passera au image des costumes des acteurs ;-) Guybrush en premier !

je ferrai de même pour les musiques quelque soit le format de départ, j'ai pour idée de transformer ensuite en ym puis dans le format cible avec un utilitaire !

:pir8: :kiss: :pir8:

Auteur :  fano [ 25 Août 2013, 21:48 ]
Sujet du message :  Re: [SCUMM] Code Z80 CPC conversion from SCUMMVM

Si j'ai bien compris l'utilitaire prend une image , crée une version binaire des pixels (mode 0 ou 1) et crée une table qui pointe sur chaque colone ?

Je peux te faire ça sur PC à partir de fichier BMP/PNG/GIF 256 couleurs (à faire très attention que le logiciel utilisé pour sauvegarder les fichiers ne bouleverse pas les index comme c'est le cas pour certains exporteurs PNG).Par contre, le format SCR est trop limité.Accessoirement , il est aussi possible de créer des fichiers multiples pour les fonds de plus de 16K.

Auteur :  Megachur [ 26 Août 2013, 05:59 ]
Sujet du message :  Re: [SCUMM] Code Z80 CPC conversion from SCUMMVM

fano a écrit :
Si j'ai bien compris l'utilitaire prend une image , crée une version binaire des pixels (mode 0 ou 1) et crée une table qui pointe sur chaque colone ?

Je peux te faire ça sur PC à partir de fichier BMP/PNG/GIF 256 couleurs (à faire très attention que le logiciel utilisé pour sauvegarder les fichiers ne bouleverse pas les index comme c'est le cas pour certains exporteurs PNG).Par contre, le format SCR est trop limité.Accessoirement , il est aussi possible de créer des fichiers multiples pour les fonds de plus de 16K.


oui c'est ça

les fichiers BMPs d'exemple sont là : viewtopic.php?f=4&t=4288&start=60
prendre le fichier BMPs.zip

faut commencer par les 3 fichiers 00.bmp, 01.bmp et 02.bmp, car ce sont des bons exemples.
- les deux images d'intro en une seule
- le décor de la première image en scrolling
- le décor de la première scène après l'intro

pas besoin de limiter le fichier à 16ko, c'est le programme (et le fdc) qui ira chercher les bonnes données dans le fichier ! et puis, on pourra voir pour le compresser après si besoin !

donc pour chaque image, les deux fichiers .asm devrait ressembler à cela :

1) un premier avec :
dw taille_image_sur_16bits ,&0000
dw "BM"

à voir si je mets directement le nom de l'image (ex : dm "BM .0A" pour l'image de la room 10 par exemple ou si je le calcule en dynamique (faut voir l’intérêt ?!). Disons que c'est surtout utile pour les autres objets graphiques, les OI, OC que ça peut-être utile car il y en a plusieurs par room !!! Et si je fais la même routine pour tous, on gagnera un peu de place mémoire pour le code et les datas !
Dans la version finale, est-ce qu'on mettra directement la piste et le premier secteur du fichier image pour gagner un accès au catalogue (faut voir l’intérêt ?!).

2) je préfère le fichier en .asm qu'en .bin pour le deuxième, mais si c'est plus simple, je ferrai un incbin "nomfichier" si j'ai besoin de l'inclure dans une source

un deuxième fichier donc avec :
dw adr_colonne1
dw adr_colonne2
...
dw adr_colonnen

colonne1:
db &00,&00
db &02,&f0
db &03,&f0
db &04,&f0
colonne2:
db &00,&00
db &02,&f0
db &03,&f0
db &04,&f0
...
colonnen:
db &00,&00
db &02,&f0
db &03,&f0
db &04,&f0


j'espère que cela est clair ?


--------------------------------------------------------------------------
un peu de doc sinon pour comprendre le truc dans les datas de SCUMM : cf http://jsg.id.au/scumm/scummrev/articles/image.html comme le site n'existe plus !
--------------------------------------------------------------------------
table 1: SCUMM Image Information Blocks
Format Image data Info Palette
Old BM / OI HD / OC PA

Table 2: HD Block
Offset Description Format
0 Block size dword - LE
4 Block Name 2 * char = "HD"
6 Width word - LE
8 Height word - LE
10 Number of Objects in Room word - LE

The most basic aspect of SCUMM image compression is the division of the image into "strips". What this means is, rather than storing the image horizontally or vertically line by line, some of SCUMM's compression methods store 8 pixels of the first line, then 8 pixels of the second, etc. Look at the illustration (the corner of a well known background):

Illustration 1: Image Strips
Image

The Image Data Blocks
In the old games, the BM block stores the image data of backgrounds, and the OI block stores the image data of objects. The layout of the two is almost exactly the same. These old image blocks can only contain one image each.

Then, starting at offset 10 (or offset 12 for OI), follows a row of dwords (Little Endian), each containing an offset into the block (relative to offset 6 for BM and offset 8 for OI). What do they point to? A strip. Thus, to calculate the number of offsets, you simply take the image width and divide it by 8 (as each strip is 8 pixels wide). Before we look at what's in each strip definition, we'll go through the other image data blocks, as the actual contents of the strip definitions are the same all the way up to CMI.

Auteur :  MUSICMAN3512 [ 26 Août 2013, 22:58 ]
Sujet du message :  Re: [SCUMM] Code Z80 CPC conversion from SCUMMVM

Par pitié, CeD, où es tu ??????

Je viens d'ouvrir le BMPs.zip

Perso, je suis pas pour le mode 1.
Avoir un Guybrush un coup en bleu un coups en rouge.....
Sans compter les dialogues où on va s'y perdre.
Car mine de rien la couleur joue beaucoup sur les dialogues de ce jeux !
Alors déjà qu'une palette de 26 couleurs c'est pas beaucoup, si en plus on en colle que 4 par scènes......
Et en lisant le post qui suti ce fichier de telechargement, dlfrsilver à l'époque proposait de tout convertir en 16 couleurs "PROPREMENT".

Je prie pour que le projet aboutisse et que ce mode 1 ne sert que de test.
Et que comme R-Type a une epoque les graphs en mode 1 de 'EMCIDI' ne soient pas retenus au profit du sublime mode 0 qu'on connait.
Apres, moi, suis fan du taf de CeD.
Et également de "maitre" Carnivac.

Auteur :  Megachur [ 27 Août 2013, 07:35 ]
Sujet du message :  Re: [SCUMM] Code Z80 CPC conversion from SCUMMVM

MUSICMAN3512 a écrit :
gfx mode 0


je te suggère de réveiller nos amis graphistes à ce sujet ici : viewtopic.php?f=4&t=4288&start=60

ils ont également les costumes (voir MI_sortedSprites.rar dans le post) à convertir, peut-être qu'une fois converti, effectivement en fonction des 4 couleurs dispo en mode 1, cela peut/risque de faire comme la version CGA (cf lien youtube dans le post)

-> je n'ai eu que des screens en mode 1 pour l'instant, alors je fais avec ! ;-) tout en permettant que les graphs en mode 0 soit possible aussi dans le code ;-) !

des news du code :

bon, j'ai fini mes outils batch pour générer toutes les fichiers des rooms + créer les dsks... Reste plus que l'util que va faire Fano pour intégrer les graphismes aussi au DSKs !
j'en ai profiter pour générer aussi le fichier des indexs en fonction des générations des fichiers des rooms.

là, j'attaque la modification/ajout dans ma routine "fdc manager". A l'origine ma routine ne fait que load (et write si besoin) d'un fichier.

Pour l'instant, je charge donc toute une room en mémoire, je crée uniquement des ressources type string en mémoire et je lis directement les scripts de la mémoire utilisée pour charger le fichier room. Seulement, passé la room d'intro, il faut garder tous les objets alloués en ressource (script, verb, object, etc.) et charger les autres rooms et rajouter les ressources nécessaire !

Le changement de ma routine "fdc manager" me permettra de gérer plus facilement la mémoire (à condition de coder en plus de l'allocation de ressource déjà faite, la routine de libération de ressource). Le jeu original marche comme cela après tout et ce n'est pas gênant de faire des accès disque dans un jeu d'aventure !!!
Si je vais au bout de mon idée, cela me permettra de libérer assez de mémoire pour stocker toutes les ressources en mémoire (y compris les costumes s'il rentre dans une BANK de 16ko) et faire du double buffering pour l'affichage (ce ne sera pas du luxe, même si le moteur d'origine ne semble pas utiliser cette technique (à vérifier ?!)).

Maintenant donc, il faut que je code un openfile qui ouvre le fichier et lit juste le premier secteur de données et une seekfile qui me permettra d'aller à un offset du fichier directement sans charger tout le fichier en mémoire ! Ensuite, revoir les accès aux données du fichier et hop c'est dans la poche.
C'est pas tellement difficile, mais je veux limiter la place de la routine fdc (qui est utilisé dans d'autres de mes programmes) et donc mutualiser le code du loadfile de l'openfile et du seekfile !

:pir8: :pir8: :pir8: :pir8: :pir8: :pir8: :pir8: que d'actions, espérons que je vais garder ce rythme (sans partir sur un autre projet tout de suite ;-)) !!! :pir8: :pir8: :pir8: :pir8: :pir8: :pir8: :pir8:

Auteur :  TotO [ 27 Août 2013, 07:49 ]
Sujet du message :  Re: [SCUMM] Code Z80 CPC conversion from SCUMMVM

Les GFx originaux sont très bien pour une première version où le challenge est avant tout de faire tourner Monkey Island sur CPC. (soit disant impossible par quelques détracteurs)
Cela ne changera en rien le fun de jouer à ce titre mémorable, qui pour rappel a fait le bonheur de millions de joueurs PC en 2 et 4 couleurs...

Je suggère juste de gérer dès cette version un split raster entre l'aire de jeu et l'interface afin de profiter de deux palettes différentes.
Ce qui pourrait-être par la suite un classique "MODE 0 en haut, MODE 1 en bas" propre à notre CPC.

Bon courage dans ta lancée !
Et ne change pas de main, car c'est de loin l'un des projets CPC les plus ambitieux !!! :winner:

Auteur :  Hwikaa [ 27 Août 2013, 08:19 ]
Sujet du message :  Re: [SCUMM] Code Z80 CPC conversion from SCUMMVM

Perso, je suis toujours prêt à faire partie de la team en tant que graphiste... dès qu'on aura le feu vert pour attaquer et les specs "officielles" à respecter. :-)

Auteur :  Megachur [ 27 Août 2013, 12:26 ]
Sujet du message :  Re: [SCUMM] Code Z80 CPC conversion from SCUMMVM

Hwikaa a écrit :
Perso, je suis toujours prêt à faire partie de la team en tant que graphiste... dès qu'on aura le feu vert pour attaquer et les specs "officielles" à respecter. :-)


@TotO : cela me fait penser que j'ai mis à jour le fichier rtf / ressource.rfd. Faut que je pense à le republier dès que j'aurai stabiliser côté code ! :winner:

Page 11 sur 14 Le fuseau horaire est UTC+1 heure
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/