Langage de programmation des jeux sur Thomson

C'est la catégorie reine de l'ordinophile, 8 bits et pas un de plus!
Single board ou bus S-100 acceptés.

Modérateurs : Papy.G, fneck, Carl

__sam__
Messages : 7923
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: Langage de programmation des jeux sur Thomson

Message par __sam__ »

Neotenien a écrit : 30 sept. 2021 21:08 Le C est devenu populaire parce qu'il était en opensource sous Linux,
Le C existe depuis bien plus longtemps que Linux. Il est venu de Unix lui même vers 1970 et a été conçu pour programmer l'OS. Le pascal date sensiblement de la même époque mais n'a pas eu d'autre vocation que l'enseignement à l'origine.

Cependant certains logiciels professionnels tels que Adobe Photoshop on été écrit en Pascal parce que développés sur Macintosh où ce langage avait servit de base à l'OS.

Cela reste toutefois anecdotique et le pascal n'a pas su résister à l'arrivée massive du C++ à partir de la fin des années 90, possiblement parce que les acteurs n'ont jamais réussis à en définir un standard universel compatible avec tous les compilateurs.
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
Neotenien
Messages : 354
Inscription : 23 oct. 2020 19:15
Localisation : Le Mans
Contact :

Re: Langage de programmation des jeux sur Thomson

Message par Neotenien »

__sam__ a écrit : 30 sept. 2021 23:48
Neotenien a écrit : 30 sept. 2021 21:08 Le C est devenu populaire parce qu'il était en opensource sous Linux,
Le C existe depuis bien plus longtemps que Linux. Il est venu de Unix lui même vers 1970 et a été conçu pour programmer l'OS. Le pascal date sensiblement de la même époque mais n'a pas eu d'autre vocation que l'enseignement à l'origine.

Cependant certains logiciels professionnels tels que Adobe Photoshop on été écrit en Pascal parce que développés sur Macintosh où ce langage avait servit de base à l'OS.

Cela reste toutefois anecdotique et le pascal n'a pas su résister à l'arrivée massive du C++ à partir de la fin des années 90, possiblement parce que les acteurs n'ont jamais réussis à en définir un standard universel compatible avec tous les compilateurs.
Le C existe depuis plus longtemps que Linux mais c'est Linux qui l'a démocratisé (et les Atari ST et Amiga également) dans les années 90... Parce que Linux était un OS gratuit (contrairement à d'autres système Unix) et le portage de linux sur des plate forme autres que PC (d'abord su' Atari/Amiga en 1996 puis Macintosh quelques temps après)

Le Pascal a été créé au moins 2 ans (1970) avant le C et est le premier langage de type impératif, et NON il n'a pas été créé uniquement qu'à but éducatif, tu as tout faux et ça montre ton ignorance à ce sujet, et le Pascal Objet est un standard de fait (le Turbo Pascal 7 est exactement lle même que celui de Turbo Pascal sur Atari), qui est décliné en plein de compilateurs! En 1990 j'ai appris le turbo Pascal 7 et il y a eu plein de logiciels créé avec le Pascal encore une fois!! La plupart des logiciels Apple (Apple I, II etc) ont été développé en Pascal avant d'avoir le C sur les Mac.

Beaucoup de logiciels windows professionnels ont été créé avec Delphi (qui est du Pascal Objet) dans les années 90!! A cette époque j'en entendais souvent parler (de Delphi).

Et j'ai revérifié, Pure Pascal (d'Application Systems) est sorti en 1992 pour la version 1.1 (équivalente à Delphi mais sorti bien avant, puisque Pascal Objet!)
__sam__
Messages : 7923
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: Langage de programmation des jeux sur Thomson

Message par __sam__ »

Neotenien a écrit : 01 oct. 2021 00:34Le C existe depuis plus longtemps que Linux mais c'est Linux qui l'a démocratisé
:D Je faisais du C sur Amiga bien avant que Linux n'existe, et le C était déjà open source à l'époque, je veux dire littéralement: sur les stations de travail de l'école d'ingé, son source était dispo avec celui de l'OS. Sur amiga on avait aussi pas mal de compilo C gratuits (DICE (fred fish 359), PDC (fred fish 53, 110 et 351), small C (fred fish 141), Sozobon C (fred fish 171, 193, 314), NorthC (fish 340)). Bref le C était déjà bien démocratisé avant Linux.
NON il n'a pas été créé uniquement qu'à but éducatif, tu as tout faux et ça montre ton ignorance à ce sujet
Alors il faut expliquer cela à N. Wirth lui-même, en effet dans The programming Language Pascal (document fondateur du langage) l'auteur indique dès le 1er paragraphe:
Wirth a écrit :1. Intoduction

The development of the language Pascal is based on two principal aims. The first is to make available a language suitable to teach programming as a systematic discipline based on certain fundamental concepts clearly and naturally reflected by the language. The second is to develop implementations of this language which are both reliable and efficient on presently available computers.
et ca continue pareil dans les paragraphes suivants où il insiste sur l'enseignement de la programmation:
The desire for a new language for the purpose of teaching programming is due to my deep dissatisfaction with the presently used major languages whose features and constructs too often cannot be explained logically and convincingly and which too often represent an insult to minds trained in systematic reasoning. Along with this dissatisfaction goes my conviction that the language in which the student is taught to express his ideas profoundly influences his habits of thought and invention, and that the disorder governing these languages directly imposes itself onto the program-ming style of the students.

There is of course plenty of reason to be cautious with the introduction of yet another programming language, and the objection against teaching programming in a language which is not widely used and accepted has undoubtedly some justification - at least based on short-term commercial reasoning. However, the choice of a language for teaching based on its widespread acceptance and availability, together with the fact that the language most widely taught is thereafter going to be the one most widely used, forms the safest recipe for stagnation in a subject of such profound pedagogical influence. I consider it therefore well worthwhile to make an effort to break this vicious circle.
Trad:
1. Intoduction

Le développement du langage Pascal est basé sur deux objectifs principaux. Le premier est de mettre à disposition un langage adapté à l'enseignement de la programmation en tant que discipline systématique basée sur certains concepts fondamentaux reflétés clairement et naturellement par le langage. Le second est de développer des implémentations de ce langage qui soient à la fois fiables et efficaces sur les ordinateurs actuellement disponibles.

Le désir d'un nouveau langage pour l'enseignement de la programmation est dû à ma profonde insatisfaction à l'égard des principaux langages actuellement utilisés dont les caractéristiques et les constructions ne peuvent trop souvent pas être expliquées de manière logique et convaincante et qui représentent trop souvent une insulte aux esprits formés au raisonnement systématique. Cette insatisfaction s'accompagne de ma conviction que le langage dans lequel on apprend à l'étudiant à exprimer ses idées influence profondément ses habitudes de pensée et d'invention, et que le désordre qui régit ces langages s'impose directement au style de programmation des étudiants.

Il y a bien sûr de nombreuses raisons d'être prudent avec l'introduction d'un énième langage de programmation, et l'objection contre l'enseignement de la programmation dans un langage qui n'est pas largement utilisé et accepté a sans doute une certaine justification - au moins basée sur un raisonnement commercial à court terme. Cependant, le choix d'un langage d'enseignement basé sur son acceptation et sa disponibilité générales, ainsi que le fait que le langage le plus largement enseigné sera par la suite le plus largement utilisé, constituent la recette la plus sûre pour la stagnation d'un sujet ayant une influence pédagogique aussi profonde. Je considère donc qu'il vaut la peine de faire un effort pour briser ce cercle vicieux.
Bref comme je l'avais indiqué les motivations derrière Pascal étaient l'enseignement.
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
Daniel
Messages : 17316
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: Langage de programmation des jeux sur Thomson

Message par Daniel »

Pour ne pas discuter dans le vide, je propose aux partisans du Pascal et aux partisans de l'Assembleur de développer un jeu (le même) sur TO8.
Dans six mois nous relèverons les copies et nous pourrons juger sur pièces.

Je propose un sujet pas trop compliqué et bien adapté au TO8 : https://archive.org/details/msdos_Alley_Cat_1984

bitmap4_to8.png
bitmap4_to8.png (10.88 Kio) Consulté 3452 fois

(N'essayez pas en BASIC, ce serait perdu d'avance :lol: )
Daniel
L'obstacle augmente mon ardeur.
Fool-DupleX
Messages : 2284
Inscription : 06 avr. 2009 12:07

Re: Langage de programmation des jeux sur Thomson

Message par Fool-DupleX »

J'aime bien l'idée d'Alley Cat sur Thomson, ça pourrait être excellent et tout à fait faisable :)
(N'essayez pas en BASIC, ce serait perdu d'avance :lol: )
Comme dirait l'autre, ne cherche pas, c'est impossible. :D

Ce que je vais dire n'a aucun intérêt mais c'était juste pour signaler que je faisais déjà du C et du C++ sur mon PC en 1989, grâce à Turbo-C++ (sorti en 1987). Il y avait aussi le concurrent direct, Quick-C de Microsoft.

C a toujours été le langage de prédilection sur les gros systèmes tels que Vax par exemple, bieeeen avant Linux. MS-DOS 4.0 (1988) a été écrit en partie en C (au lieu de 100% assembleur), d'où un nombre anormalement élevé de bugs sur les premières versions. Beaucoup de produits commerciaux pour ms-dos ont été écrit en C, bien avant l'avènement de Linux. Windows 3, Windows 95 ont été écrits en C. Si ça c'est pas des blockbusters, je sais pas ce que c'est.
Daniel
Messages : 17316
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: Langage de programmation des jeux sur Thomson

Message par Daniel »

Et pour aller jusqu'au bout des comparaisons, il faudrait faire aussi une version d'Alley Cat en C.

Réflexion (très personnelle) :
J'aime bien le C.
DCMOTO est écrit en C. Les premières versions de dcmo5 pour MS-DOS avaient une partie en assembleur pour améliorer les performances, mais avec l'arrivée de PC à plus de 32 MHz l'assembleur a été abandonné. Tous les programmes utilitaires que j'écris sur PC pour de petits bidouillages sont en C, de préférence aux langages de script modernes.

Mais sur Thomson je préfère de très loin l'assembleur. Je pense qu'il est aussi possible de développer en C, mais c'est aller au devant de beaucoup de difficultés pour faire fonctionner correctement un compilateur, et surtout pour optimiser le code généré. Intuitivement je crois qu'un développement en C sera beaucoup plus difficile, plus long et moins performant qu'en assembleur. En assembleur on sait ce qu'on fait, en C on est à la merci d'un compilateur souvent pas très subtil.
Daniel
L'obstacle augmente mon ardeur.
__sam__
Messages : 7923
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: Langage de programmation des jeux sur Thomson

Message par __sam__ »

Le jeu fait 56Ko. Il va falloir utiliser de la banque mémoire ce qui exclus quasi-obligatoirement les langages qui ne savent pas travailler sur plusieurs BANKs.

Pour ceux qui veulent se lancer dans l'aventure, le code source d'un remake est dispo sur github.

Sinon pour info, sur C64 certains jeux sont en FORTH. Voir l'introduction de cette vidéo:
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
Daniel
Messages : 17316
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: Langage de programmation des jeux sur Thomson

Message par Daniel »

Voici une version en assembleur de la présentation d'AlleyCat.

C'est seulement une ébauche (pas du tout optimisée). Il y a certainement des fausses notes dans la musique car je ne suis pas musicien, et je n'ai pas recherché la reproduction exacte de l'original, c'est uniquement pour donner une idée de ce que l'on peut faire sur Thomson.

Attendons la version Pascal pour comparer...

alleycat_win.png
alleycat_win.png (8.94 Kio) Consulté 3362 fois

Exécutable Windows :
alleycat_win.zip
(110.47 Kio) Téléchargé 117 fois

Code source :

Code : Tout sélectionner

;**************************************************;
;               A L L E Y - C A T                  ; 
;           (c) 2021 - Daniel Coulom               ;  
;           http://dcmoto.free.fr/                 ;
;           http://forum.system-cfg.com/           ;
;--------------------------------------------------;
; Ce code est distribue gratuitement dans l'espoir ;
; qu'il sera utile, mais sans aucune  garantie  et ;
; sans  engager  la  responsabilité  de  l'auteur. ;
; Vous  pouvez  l' utiliser,  le  modifier  et  le ;
; diffuser librement, en conservant cette  licence ;
; et les références de l'auteur dans   toutes  les ;
; copies. L'exploitation commerciale est interdite.;
;**************************************************;



;**************************************************;
;                Version 2021.10.06                ;
;**************************************************;
; Historique
; 2021.10.06 Le son fonctionne (a ameliorer)
; 2021.10.05 Ajout du son (pas encore finalise)
; 2021.10.04 Deplacements aleatoires du chat
; 2021.10.03 Debut d'animation
; 2021.10.02 Affichage ecran de presentation
; 2021.09.28 Debut du projet


;===================================================
; AFFICHAGE ECRAN DE PRESENTATION
;===================================================
  ORG $7000
PRES
  ORCC  #$50           ; masquer les interruptions
  LDU   #MUSIC         ; pointeur note de musique
  LDA   #$02           ; 2 = vert
  STA   $E7DD          ; couleur de fond 
  LDA   #$21           ; $21 = mode bitmap4
  STA   $E7DC          ; selection mode video
  LDA   $E7C3          ; registre PRC du 6846
  ANDA  #$FE           ; clear bit 0
  STA   $E7C3          ; selection video couleur     
  LDY   #VRAM0         ; pointeur donnees video couleur
  LBSR  RLE            ; decodage RLE
  LDA   $E7C3          ; registre PRC du 6846
  ORA   #$01           ; set bit 0
  STA   $E7C3          ; selection video forme     
  LDY   #VRAM1         ; pointeur donnees video forme
  LBSR  RLE            ; decodage RLE

;===================================================
; ANIMATION DU CHAT
;===================================================
ANIM
   LDB   $E7C6         ; timer poids fort
   PSHS  B             ; seed pour nombre au hasard
   LDX   #$4EB1        ; position de depart a gauche
   BSR   AVD           ; avance a droite
ANIM1
   LDA   COMPTE        ; compteur de deplacements
   INCA                ; incrementation du
   STA   COMPTE        ; compteur de deplacements
   CMPA  #$04          ; test 4 deplacements 
   BNE   ANIM2         ; sinon continuer
   LDY   #SYNSOFT      ; sigle SynSoft
   LBSR  SIGLE         ; afficher le sigle
   BRA   ANIM3         ; continuer l'animation
ANIM2   
   CMPA  #$08          ; test 8 deplacements
   BNE   ANIM3         ; sinon continuer
   LDY   #IBM          ; sigle IBM
   LBSR  SIGLE         ; afficher le sigle
   CLRA                ; remise a zero du
   STA   COMPTE        ; compteur de deplacements
ANIM3
   LDA   #249          ; pour generation nombre au hasard
   PULS  B             ; ancien seed
   MUL                 ; multiplication
   ADDD  #123          ; addition 
   PSHS  B             ; nouveau seed
   ANDA  #$03          ; deux bits poids faible
   BEQ   ANIM3         ; 0: ne rien faire
   CMPA  #$01          ; 1:
   BEQ   ANIMD         ; mouvement droite
   CMPA  #$02          ; 2:
   BEQ   ANIMG         ; mouvement gauche
   LBSR  STOP          ; 3: stop
   BRA   ANIM1         ; nouveau deplacement
ANIMD   
   CMPX  #$4ED1        ; test limite droite
   BGE   ANIM1         ; ne pas depasser
   BSR   AVD           ; mouvement droite
   BRA   ANIM1         ; nouveau deplacement
ANIMG
   CMPX  #$4EB6        ; test limite gauche
   BLE   ANIM1         ; ne pas depasser
   BSR   AVG           ; mouvement gauche
   BRA   ANIM1         ; nouveau deplacement

;===================================================
; AVANCE DROITE
;===================================================
AVD
  LDY   #CATD1 
  BSR   DRAW
  LEAX  1,X 
  LDY   #CATD2 
  BSR   DRAW
  LEAX  1,X 
  LDY   #CATD3 
  BSR   DRAW
  LEAX  1,X 
  LDY   #CATD4 
  BSR   DRAW
  LEAX  1,X 
  LDY   #CATD5 
  BSR   DRAW
  LEAX  1,X 
  LDY   #CATD6 
  BSR   DRAW
  LEAX  1,X 
  RTS

;===================================================
; AVANCE GAUCHE
;===================================================
AVG
  LDY   #CATG1 
  BSR   DRAW
  LEAX  -1,X 
  LDY   #CATG2 
  BSR   DRAW
  LEAX  -1,X 
  LDY   #CATG3 
  BSR   DRAW
  LEAX  -1,X 
  LDY   #CATG4 
  BSR   DRAW
  LEAX  -1,X 
  LDY   #CATG5 
  BSR   DRAW
  LEAX  -1,X 
  LDY   #CATG6 
  BSR   DRAW
  LEAX  -1,X 
  RTS

;===================================================
; DRAW CAT, TEMPO, ERASE
; Y = adresse du sprite a afficher
; X = adresse d'affichage
;===================================================
DRAW
  LDB   #$0B           ; compteur de lignes
DRAW1                 
  LDA   ,Y+            ; octet 1
  STA   ,X+            ; affichage
  LDA   ,Y+            ; octet 2
  STA   ,X+            ; affichage
  LDA   ,Y+            ; octet 3
  STA   ,X+            ; affichage
  LEAX  $25,X          ; pointeur ligne suivante
  DECB                 ; decremente compteur lignes
  BNE   DRAW1          ; nouvelle ligne
DRAW2
  BSR   PLAY           ; musique et temporisation
  LEAX  -$1B8,X        ; pointeur premiere ligne
  LDA   #$FF           ; octet de fond
  LDB   #$0B           ; compteur de lignes
DRAW3
  STA   ,X+            ; effacement octet 1
  STA   ,X+            ; effacement octet 2
  STA   ,X+            ; effacement octet 3
  LEAX  $25,X          ; pointeur ligne suivante
  DECB                 ; decremente compteur lignes
  BNE   DRAW3          ; nouvelle ligne
  LEAX  -$1B8,X        ; pointeur premiere ligne
  RTS

;===================================================
; STOP
;===================================================
STOP
  LDY   #CATF1 
  BSR   DRAW
  LDY   #CATF2 
  BSR   DRAW
  LDY   #CATF3 
  BSR   DRAW
  LDY   #CATF1 
  BSR   DRAW
  LDY   #CATF2 
  BSR   DRAW
  LDY   #CATF3 
  BSR   DRAW
  LDY   #CATF1 
  BSR   DRAW
  LDY   #CATF2 
  BSR   DRAW
  LDY   #CATF3 
  BSR   DRAW
  RTS

;===================================================
; PLAY
; Joue la musique entre deux mouvements du chat
;===================================================
PLAY
  CMPU  #FMUSIC        ; test fin de la musique
  BNE   PLAY1          ; sinon jouer la note
  LDU   #MUSIC         ; reinitialiser pointeur musique
PLAY1
  LDA   ,U+            ; A est le code de la note
  LDY   #TONE          ; Y pointe vers les periodes des notes
  LDD   A,Y            ; D est la periode de la note A
  LSLB                 ; La periode est
  ROLA                 ; multipliee par quatre
  LSLB                 ; seul le poids fort
  ROLA                 ; est utilise
  LDY   #$0000         ; compteur pour la duree de la note
  LDB   $E7C1          ; adresse du buzzer TO
PLAY2  
  CMPA  #$00           ; periode 0 = silence
  BEQ   PLAY4          ; jouer un silence
  ANDB  #$F7           ; clear bit 3
  STB   $E7C1          ; buzzer a l'etat bas
  BSR   WAIT           ; attendre la fin de periode
PLAY3
  ORB   #$08           ; set bit 3
  STB   $E7C1          ; buzzer a l'etat haut
  BSR   WAIT           ; attendre la fin de periode
  BRA   PLAY5          ; tester la duree
PLAY4  
  BSR   TEMPO          ; attendre la fin
  BSR   TEMPO          ; du silence
  LEAY  1,Y            ; incrementer le compteur de duree
PLAY5
  CMPY  #$0600         ; duree ecoulee ?
  BLS   PLAY2          ; sinon nouvelle periode 
  RTS                  ; retour

;===================================================
; WAIT (A est la periode de la note)
;===================================================
WAIT
  PSHS  A
WAIT1
  BSR   TEMPO
  BSR   TEMPO
  BSR   TEMPO
  BSR   TEMPO
  LEAY  1,Y
  DECA
  BNE   WAIT1
  PULS  A,PC   

;===================================================
; TEMPORISATION
;===================================================
TEMPO
  RTS

;===================================================
; AFFIHAGE SIGLE
;===================================================
SIGLE
  PSHS  X              ; empilage X
  LDX   #$5D4C         ; pointeur premiere ligne
  LDB   #$0C           ; nombre de lignes a afficher
  PSHS  B              ; empilage compteur lignes
SIGLE1
  LDB   #$0A           ; compteur de colonnes
SIGLE2       
  LDA   ,Y+            ; octet a afficher
  STA   ,X+            ; affichage
  DECB                 ; decremente compteur colonnes
  BNE   SIGLE2         ; nouvelle colonne
  LEAX  $1E,X          ; pointeur ligne suivante
  DEC   ,S             ; decremente compteur lignes
  BNE   SIGLE1         ; nouvelle ligne
  PULS  X,B,PC         ; depilage et retour

;===================================================
; RLE DECODE
; Si plusieurs octets successifs sont identiques
: l'octet apparait deux fois à la suite et l'octet
; suivant est le nombre de répétitions du precedent
; Ex: $10,$10,$05  l'octet $10 est repete six fois  
;===================================================
RLE
  LDX   #$4000         ; debut VRAM 
RLE1
  LDA   ,Y+            ; lecture octet
  STA   ,X+            ; copie en VRAM
  CMPX  #$5F40         ; fin ecran
  BEQ   RLE9           ; retour
  CMPA  ,Y             ; test octet suivant
  BNE   RLE1           ; si different nouvelle boucle
  LEAY  1,Y            ; si identique pointer octet suivant
  LDB   ,Y+            ; nombre de repetitions
RLE2
  STA   ,X+            ; copie en VRAM
  CMPX  #$5F40         ; fin ecran
  BEQ   RLE9           ; retour
  DECB                 ; decrementation compteur
  BNE   RLE2           ; nouvelle repetition
  BRA   RLE1           ; nouvelle boucle
RLE9
  RTS                  ; retour

;===================================================
; VARIABLES
;===================================================
COMPTE
  FCB $00

;===================================================
; TONES
;===================================================
TONE
  FDB $0000,$0180,$0197,$01AF,$01C9,$01E4,$0201,$021F
  FDB $023F,$0262,$0286,$02AC,$02D5,$0300,$032E,$035E
  FDB $0391,$03C8,$0401,$043E,$047F,$04C3,$050C,$0558
  FDB $05AA,$0600,$065B,$06BC,$0723,$078F,$0802,$087C
  FDB $08FD,$0986,$0A17,$0AB1,$0B54,$0C00,$0CB7,$0D79
  FDB $0E46,$0F1F,$1005,$10F9,$11FB,$130D,$142F,$1562
  FDB $16A8,$1801,$196E,$1AF1

;===================================================
; MUSIC
;===================================================
MUSIC
  FCB $58,$00,$00,$00,$00,$00
  FCB $58,$00,$00,$00,$00,$00,$5a,$00,$00,$00,$00,$00
  FCB $5a,$00,$00,$00,$00,$00,$5e,$00,$00,$00,$5a,$00
  FCB $5e,$00,$00,$00,$62,$00,$00,$00,$00,$00,$62,$00
  FCB $62,$00,$5e,$00,$5a,$00,$00,$00,$00,$00,$00,$00
  FCB $58,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
  FCB $5a,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
  FCB $5e,$00,$00,$00,$62,$00,$00,$00,$00,$00,$00,$00
  FCB $00,$00,$00,$00,$00,$00,$40,$00,$00,$00,$00,$00
  FCB $40,$00,$00,$00,$42,$40,$42,$00,$00,$00,$00,$00
  FCB $42,$00,$00,$00,$46,$42,$46,$00,$00,$00,$42,$00
  FCB $46,$00,$00,$00,$4a,$00,$00,$00,$00,$00,$4a,$00
  FCB $4a,$00,$46,$00,$42,$00,$00,$00,$00,$00,$00,$00
  FCB $40,$00,$00,$00,$00,$00,$00,$00,$00,$00,$42,$00
  FCB $42,$00,$00,$00,$00,$00,$00,$00,$00,$00,$4c,$4a
  FCB $46,$00,$00,$00,$4a,$00,$00,$00,$00,$00,$00,$00
  FCB $00,$00,$30,$2e,$2c,$2a,$28,$00,$00,$00,$00,$00
  FCB $28,$00,$00,$00,$2a,$28,$2a,$00,$00,$00,$2a,$28
  FCB $2a,$00,$00,$00,$2e,$2a,$2e,$00,$00,$00,$2a,$00
  FCB $2e,$2a,$2e,$00,$32,$00,$00,$00,$00,$00,$32,$00
  FCB $32,$00,$2e,$00,$2a,$00,$00,$00,$00,$00,$00,$00
  FCB $28,$2a,$28,$2a,$28,$00,$00,$00,$00,$00,$2a,$00
  FCB $2a,$00,$00,$00,$00,$00,$00,$00,$00,$00,$34,$32
  FCB $2e,$00,$00,$00,$32,$00,$00,$00,$00,$00,$00,$32
  FCB $34,$36,$38,$3a,$3c,$3e,$40,$00,$00,$00,$00,$00
  FCB $28,$00,$00,$00,$42,$40,$42,$00,$00,$00,$00,$00
  FCB $2a,$00,$00,$00,$46,$42,$46,$00,$00,$00,$42,$00
  FCB $00,$00,$46,$42,$46,$00,$4a,$00,$00,$00,$00,$00
  FCB $1a,$00,$00,$00,$00,$00,$00,$00,$00,$00,$40,$00
  FCB $40,$00,$00,$00,$00,$00,$00,$00,$00,$00,$2a,$00
  FCB $2a,$28,$2a,$28,$2a,$28,$26,$24,$22,$20,$1e,$04
  FCB $16,$00,$00,$00,$1a,$00,$00,$00,$00,$00,$00,$00
  FCB $00,$00,$00,$00,$00,$00,$40,$00,$32,$00,$00,$00
  FCB $40,$00,$38,$00,$00,$00,$42,$40,$42,$00,$3c,$00
  FCB $42,$00,$00,$00,$00,$00,$46,$40,$46,$40,$42,$00
  FCB $46,$00,$00,$00,$4a,$42,$4a,$42,$00,$00,$4a,$00
  FCB $4a,$00,$46,$00,$42,$00,$00,$00,$00,$00,$00,$00
  FCB $40,$00,$32,$00,$40,$00,$32,$00,$00,$00,$00,$00
  FCB $2a,$42,$2a,$42,$2a,$42,$28,$00,$00,$00,$00,$00
  FCB $46,$00,$00,$00,$4a,$2a,$4a,$2a,$4a,$2a,$4a,$2a
  FCB $4a,$2a,$4a,$2a,$4a,$2a,$40,$00,$1a,$00,$00,$00
  FCB $40,$00,$20,$00,$00,$00,$42,$40,$42,$00,$00,$00
  FCB $24,$00,$42,$00,$00,$00,$46,$28,$46,$28,$42,$24
  FCB $42,$24,$46,$28,$46,$28,$4a,$2a,$4a,$2a,$4a,$2a
  FCB $4a,$42,$3c,$42,$4a,$42,$3c,$32,$3c,$42,$3c,$32
  FCB $40,$00,$1a,$00,$00,$00,$1a,$00,$1a,$12,$1a,$12
  FCB $42,$00,$00,$00,$00,$00,$42,$00,$00,$00,$00,$00
  FCB $46,$00,$00,$00,$00,$00,$0e,$00,$46,$00,$4a,$0c
  FCB $4a,$0c,$4a,$0c,$4a,$0c,$48,$0a,$46,$08,$44,$06
  FCB $58,$20,$00,$00,$1a,$00,$58,$20,$00,$00,$1a,$00
  FCB $5a,$24,$00,$00,$1a,$00,$5a,$24,$00,$00,$1a,$00
  FCB $5e,$28,$28,$00,$5a,$1a,$5e,$28,$24,$00,$62,$20
  FCB $24,$00,$14,$00,$12,$00,$1a,$00,$14,$00,$12,$00
  FCB $1a,$00,$00,$00,$02,$00,$58,$08,$00,$00,$1a,$00
  FCB $1a,$00,$00,$00,$02,$00,$5a,$0c,$00,$00,$1a,$00
  FCB $02,$00,$04,$00,$08,$00,$5e,$04,$08,$00,$62,$12
  FCB $42,$00,$44,$00,$42,$00,$44,$00,$4a,$00,$58,$14
  FCB $16,$00,$1a,$00,$16,$00,$14,$00,$16,$00,$1a,$00
  FCB $1e,$00,$24,$00,$26,$00,$28,$00,$2c,$00,$28,$00
  FCB $5e,$24,$22,$00,$5a,$20,$1a,$00,$5e,$16,$12,$00
  FCB $62,$00,$4a,$00,$4a,$00,$4a,$00,$4a,$00,$58,$0a
  FCB $08,$00,$02,$00,$58,$0a,$08,$00,$02,$00,$5a,$0c
  FCB $02,$00,$06,$00,$0c,$00,$0e,$00,$1a,$00,$14,$00
  FCB $16,$00,$1a,$00,$5e,$1e,$26,$00,$28,$00,$62,$2a
  FCB $62,$4a,$5c,$44,$62,$4a,$5c,$44,$5a,$42,$58,$40
  FCB $50,$38,$4a,$32,$38,$20,$32,$1a,$2a,$12,$5a,$42
  FCB $54,$3c,$4c,$34,$3c,$24,$34,$1c,$2e,$16,$5e,$46
  FCB $56,$3e,$50,$38,$62,$5a,$54,$4e,$4a,$42,$3c,$36
  FCB $32,$2a,$24,$1e,$1a,$12,$0c,$06,$02,$04,$02,$04
  FCB $02,$04,$02,$04,$02,$04,$02,$04,$02,$00,$00,$00
  FCB $00,$00,$00,$00,$00,$00,$00,$00,$00,$62,$00,$00
FMUSIC

;===================================================
; SPRITES
;===================================================
CATD1
  FCB $9f,$ff,$bf,$6f,$ff,$0f,$3f,$ff,$17,$be,$1e
  FCB $03,$8c,$02,$07,$c0,$00,$0f,$e0,$00,$1f,$e4
  FCB $20,$9f,$ce,$79,$cf,$ce,$79,$f7,$ef,$3c,$ff
CATD2
  FCB $DF,$FF,$FF,$3F,$FF,$EF,$7F,$FF,$C3,$3F,$C1
  FCB $85,$8E,$00,$00,$C0,$00,$01,$F0,$08,$03,$F8
  FCB $3F,$0F,$F2,$7F,$27,$F2,$7E,$67,$F9,$3F,$F3
CATD3
  FCB $FF,$FF,$FF,$FF,$FF,$EF,$9F,$FF,$C3,$4F,$83
  FCB $85,$EC,$00,$00,$E0,$00,$01,$F0,$00,$03,$FC
  FCB $0C,$1F,$F9,$1E,$1F,$F9,$3E,$5F,$FD,$BF,$5F
CATD4
  FCB $FF,$FF,$FF,$7F,$FF,$EF,$1F,$FF,$C3,$CF,$E1
  FCB $85,$E6,$00,$00,$F0,$00,$01,$F0,$00,$03,$FC
  FCB $00,$1F,$FE,$1E,$3F,$FE,$7E,$7F,$FF,$3F,$3F
CATD5
  FCB $FF,$FF,$DF,$8F,$FF,$87,$27,$FF,$0B,$F3,$07
  FCB $01,$F0,$00,$03,$F8,$00,$07,$F8,$00,$0F,$F8
  FCB $04,$1F,$F1,$1E,$4F,$F3,$9E,$6F,$FB,$DE,$F7
CATD6
  FCB $3F,$FF,$7F,$DF,$FE,$1F,$9F,$FC,$2F,$38,$1C
  FCB $07,$80,$00,$0F,$C0,$00,$1F,$F0,$00,$3F,$E4
  FCB $20,$7F,$C6,$72,$3F,$CE,$73,$3F,$9F,$27,$BF
CATG1
  FCB $F7,$FF,$E7,$C3,$FF,$DB,$A3,$FF,$F3,$01,$E1
  FCB $F7,$81,$00,$C7,$C0,$00,$0F,$E0,$00,$1F,$E4
  FCB $10,$9F,$CE,$79,$CF,$BE,$79,$CF,$FC,$F3,$DF
CATG2
  FCB $FF,$FF,$FB,$F7,$FF,$FC,$C3,$FF,$FE,$A1,$83
  FCB $FC,$00,$00,$71,$80,$00,$03,$C0,$10,$0F,$F0
  FCB $FC,$1F,$E4,$FE,$4F,$E6,$7E,$4F,$CF,$FC,$9F
CATG3
  FCB $FF,$FF,$FF,$F7,$FF,$FF,$C3,$FF,$F9,$A1,$C1
  FCB $F2,$00,$00,$37,$80,$00,$07,$C0,$00,$0F,$F8
  FCB $30,$3F,$F8,$78,$9F,$FA,$7C,$9F,$FA,$FD,$BF
CATG4
  FCB $FF,$FF,$FF,$F7,$FF,$FE,$C3,$FF,$F8,$A1,$87
  FCB $F3,$00,$00,$67,$80,$00,$0F,$C0,$00,$0F,$F8
  FCB $00,$3F,$FC,$78,$7F,$FE,$7E,$7F,$FC,$FC,$FF
CATG5
  FCB $F7,$FF,$FF,$C3,$FF,$E3,$A1,$FF,$C9,$01,$C1
  FCB $9F,$80,$00,$1F,$C0,$00,$3F,$E0,$00,$3F,$F0
  FCB $40,$3F,$E4,$F1,$1F,$EC,$F3,$9F,$DE,$F7,$BF
CATG6
  FCB $FB,$FF,$F3,$E1,$FF,$EF,$D0,$FF,$E7,$80,$E0
  FCB $73,$C0,$00,$07,$E0,$00,$0F,$F0,$00,$3F,$F8
  FCB $10,$9F,$F1,$39,$8F,$F3,$39,$CF,$F7,$93,$E7
CATF1
  FCB $FC,$EF,$FF,$FC,$0F,$FF,$F9,$17,$FF
  FCB $F0,$03,$FF,$F8,$07,$FF,$FE,$1F,$FF
CATB1
  FCB $9C,$1F,$FF,$38,$0F,$FF,$80,$07,$FF
  FCB $E0,$07,$FF,$F0,$07,$FF,$E2,$13,$FF
CATF2
  FCB $FD,$CF,$FF,$FC,$0F,$FF,$FA,$27,$FF
  FCB $F0,$03,$FF,$F8,$07,$FF,$FE,$1F,$FF
CATB2
  FCB $FC,$1F,$FF,$38,$0F,$FF,$90,$07,$FF
  FCB $E0,$07,$FF,$F0,$07,$FF,$E2,$13,$FF
CATF3
  FCB $FC,$CF,$FF,$FC,$0F,$FF,$F8,$07,$FF
  FCB $F0,$03,$FF,$F8,$07,$FF,$FE,$1F,$FF
CATB3
  FCB $FC,$1F,$FF,$88,$0F,$FF,$20,$07,$FF
  FCB $E0,$07,$FF,$F0,$07,$FF,$E2,$13,$FF
IBM
  FCB $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
  FCB $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
  FCB $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
  FCB $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
  FCB $87,$03,$39,$FF,$C3,$FF,$FF,$FF,$FF,$FF
  FCB $CF,$99,$11,$FF,$99,$FF,$FF,$FF,$FF,$FF
  FCB $CF,$99,$01,$FF,$3F,$87,$23,$23,$FF,$FF
  FCB $CF,$83,$01,$FF,$3F,$33,$89,$99,$FF,$FF
  FCB $CF,$99,$29,$FF,$3F,$33,$99,$99,$FF,$FF
  FCB $CF,$99,$39,$FF,$99,$33,$9F,$83,$CF,$FF
  FCB $87,$03,$39,$FF,$C3,$87,$0F,$9F,$CF,$FF
  FCB $FF,$FF,$FF,$FF,$FF,$FF,$FF,$0F,$FF,$FF
SYNSOFT
  FCB $FF,$FF,$FF,$FF,$FF,$FF,$FF,$03,$1C,$7F
  FCB $FF,$FF,$FF,$FF,$FF,$FF,$FF,$CF,$00,$7F
  FCB $FF,$FF,$FF,$FF,$FF,$FF,$FF,$CF,$22,$7F
  FCB $FF,$FF,$FF,$FF,$FF,$FF,$FF,$CF,$36,$7F
  FCB $87,$FF,$FF,$87,$FF,$C7,$DF,$CF,$3E,$7F
  FCB $33,$FF,$FF,$33,$FF,$93,$CF,$FF,$FF,$FF
  FCB $1F,$33,$07,$1F,$87,$9F,$83,$FF,$FF,$FF
  FCB $8F,$33,$33,$8F,$33,$0F,$CF,$FF,$FF,$FF
  FCB $e7,$33,$33,$e7,$33,$9F,$CF,$FF,$FF,$FF
  FCB $33,$83,$33,$33,$33,$9F,$CB,$FF,$FF,$FF
  FCB $87,$F3,$33,$87,$87,$0F,$E7,$FF,$FF,$FF
  FCB $FF,$07,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF

;===================================================
; ECRAN DE PRESENTATION (ENCODAGE RLE)
; Si plusieurs octets successifs sont identiques
: l'octet est écrit deux fois à la suite et l'octet
; suivant est le nombre de répétitions du precedent
; Ex: $10,$10,$05  l'octet $10 est repete six fois  
;===================================================
VRAM0
  FCB $00,$00,$FF,$00,$00,$FF,$00,$00,$FF,$00
  FCB $00,$F6,$40,$10,$01,$00,$40,$40,$01,$10
  FCB $10,$03,$00,$00,$45,$40,$10,$01,$00,$40
  FCB $40,$01,$10,$10,$03,$00,$00,$45,$40,$10
  FCB $01,$00,$10,$40,$10,$10,$02,$04,$00,$00
  FCB $45,$40,$10,$01,$00,$10,$40,$10,$00,$10
  FCB $04,$00,$00,$FF,$00,$00,$FF,$00,$00,$46
  FCB $F8,$1C,$0E,$00,$00,$03,$78,$00,$0E,$00
  FCB $00,$1C,$01,$8C,$36,$1B,$00,$00,$02,$01
  FCB $EC,$00,$1B,$70,$00,$00,$1B,$03,$0E,$63
  FCB $31,$80,$00,$00,$01,$03,$86,$00,$33,$C0
  FCB $00,$00,$1B,$06,$06,$01,$63,$31,$80,$00
  FCB $00,$01,$03,$00,$00,$01,$3F,$80,$00,$00
  FCB $1B,$06,$06,$01,$63,$31,$80,$00,$00,$01
  FCB $07,$00,$00,$01,$F1,$80,$00,$00,$1B,$0C
  FCB $06,$63,$31,$8E,$00,$00,$01,$06,$00,$01
  FCB $B1,$80,$00,$00,$1B,$0C,$06,$36,$1B,$1B
  FCB $01,$0C,$18,$06,$00,$1C,$1B,$00,$00,$1C
  FCB $0C,$06,$36,$1B,$11,$1E,$18,$07,$00,$36
  FCB $1B,$00,$00,$1C,$06,$06,$01,$1C,$0E,$1B
  FCB $1B,$01,$38,$03,$00,$62,$0E,$00,$00,$1C
  FCB $06,$0E,$3C,$1E,$0E,$1B,$38,$03,$86,$62
  FCB $1E,$20,$00,$00,$1B,$03,$9E,$6E,$37,$1B
  FCB $39,$FB,$01,$EC,$37,$37,$01,$60,$00,$00
  FCB $1C,$F3,$C3,$E1,$F1,$F1,$01,$DE,$00,$78
  FCB $1D,$E1,$C0,$00,$00,$21,$78,$00,$00,$25
  FCB $03,$F0,$00,$00,$25,$06,$30,$00,$00,$25
  FCB $06,$60,$00,$00,$25,$03,$C0,$00,$00,$FF
  FCB $00,$00,$FF,$00,$00,$FF,$00,$00,$FF,$00
  FCB $00,$FF,$00,$00,$FF,$00,$00,$AB,$30,$00
  FCB $00,$02,$30,$00,$30,$00,$00,$01,$30,$00
  FCB $30,$00,$00,$02,$30,$00,$30,$00,$30,$00
  FCB $00,$02,$30,$00,$30,$00,$00,$01,$30,$00
  FCB $00,$02,$30,$00,$00,$01,$30,$00,$00,$03
  FCB $F0,$00,$00,$02,$F0,$00,$F0,$00,$00,$01
  FCB $F0,$00,$F0,$00,$00,$02,$F0,$00,$F0,$00
  FCB $F0,$00,$00,$02,$F0,$00,$F0,$00,$00,$01
  FCB $F0,$00,$00,$02,$F0,$00,$00,$01,$F0,$00
  FCB $00,$01,$30,$0E,$F0,$30,$0E,$00,$F0,$0E
  FCB $F0,$30,$0E,$F0,$0E,$F0,$20,$0E,$00,$F0
  FCB $0E,$F0,$0E,$F0,$30,$0E,$00,$F0,$0E,$F0
  FCB $30,$0E,$F0,$30,$0E,$00,$F0,$30,$0E,$F0
  FCB $30,$0E,$3E,$CE,$FC,$3E,$CE,$00,$FC,$CE
  FCB $FC,$3E,$CE,$FC,$CE,$FC,$3E,$CE,$00,$FC
  FCB $CE,$FC,$CE,$FC,$3E,$CE,$00,$FC,$CE,$FC
  FCB $3E,$CE,$FC,$3E,$CE,$00,$FC,$3E,$CE,$FC
  FCB $3E,$CE,$3E,$FE,$FC,$3E,$FE,$C0,$FC,$FE
  FCB $FC,$3E,$FE,$FC,$FE,$FC,$3E,$FE,$C0,$FC
  FCB $FE,$FC,$FE,$FC,$3E,$FE,$C0,$FC,$FE,$FC
  FCB $3E,$FE,$FC,$3E,$FE,$C0,$FC,$3E,$FE,$FC
  FCB $3E,$FE,$FE,$02,$FC,$FE,$FE,$01,$F0,$FC
  FCB $FE,$FC,$FE,$FE,$01,$FC,$FE,$FC,$FE,$FE
  FCB $01,$F0,$FC,$FE,$FC,$FE,$FC,$FE,$FE,$01
  FCB $F0,$FC,$FE,$FC,$FE,$FE,$01,$FC,$FE,$FE
  FCB $01,$F0,$FC,$FE,$FE,$01,$FC,$FE,$FE,$06
  FCB $F8,$FE,$FE,$09,$F8,$FE,$FE,$06,$F8,$FE
  FCB $FE,$07,$F8,$FE,$FE,$09,$F2,$FE,$FE,$0E
  FCB $C0,$FE,$FE,$0C,$8E,$E6,$C0,$FE,$FE,$06
  FCB $E6,$FE,$FE,$0E,$86,$FE,$FE,$0C,$26,$C2
  FCB $86,$FE,$FE,$06,$E6,$FE,$FE,$0E,$A6,$FE
  FCB $FE,$0C,$3E,$9A,$A6,$FE,$FE,$06,$CE,$FE
  FCB $FE,$0E,$E6,$FE,$FE,$0C,$3E,$82,$E6,$FE
  FCB $FE,$05,$C2,$FE,$FE,$0F,$F2,$F2,$01,$FE
  FCB $FE,$09,$86,$FE,$16,$32,$F2,$FE,$FE,$05
  FCB $02,$9E,$FE,$FE,$0E,$F2,$32,$FE,$FE,$09
  FCB $02,$FE,$86,$26,$F2,$FE,$FE,$05,$0E,$9E
  FCB $FE,$FE,$0E,$F2,$32,$FE,$FE,$09,$30,$FE
  FCB $CE,$E6,$F2,$FE,$FE,$05,$E6,$FE,$FE,$10
  FCB $22,$FE,$FE,$09,$00,$FE,$FE,$08,$F2,$E6
  FCB $FE,$8E,$8E,$02,$FE,$8E,$8E,$03,$FE,$FE
  FCB $04,$3E,$FE,$FE,$01,$00,$FE,$FE,$09,$88
  FCB $FE,$3E,$FE,$FE,$06,$32,$F0,$FE,$26,$26
  FCB $02,$FE,$26,$26,$03,$FE,$FE,$04,$0E,$FE
  FCB $FE,$01,$88,$FE,$FE,$09,$F8,$FE,$0E,$FE
  FCB $FE,$06,$32,$C0,$FE,$36,$36,$02,$FE,$36
  FCB $36,$03,$FE,$FE,$04,$0E,$FE,$FE,$01,$98
  FCB $FE,$FE,$09,$E2,$FE,$0E,$FE,$FE,$06,$22
  FCB $C6,$FE,$32,$32,$02,$9E,$32,$32,$03,$FE
  FCB $FE,$04,$0E,$FE,$FE,$01,$9E,$FE,$FE,$09
  FCB $E6,$FE,$0E,$FE,$FE,$06,$00,$00,$01,$FE
  FCB $98,$98,$02,$C6,$98,$98,$03,$FE,$FE,$04
  FCB $3E,$FE,$FE,$02,$86,$FE,$FE,$0A,$3E,$FE
  FCB $FE,$06,$88,$02,$FE,$98,$98,$02,$FE,$98
  FCB $98,$03,$FE,$FE,$08,$0E,$FE,$FE,$12,$98
  FCB $CE,$FE,$C0,$C0,$02,$FE,$C0,$C0,$03,$FE
  FCB $FE,$08,$3E,$FE,$FE,$03,$C2,$FE,$FE,$0D
  FCB $9E,$FE,$FE,$01,$E2,$E2,$02,$FE,$E2,$E2
  FCB $03,$FE,$FE,$08,$36,$FE,$FE,$01,$F0,$F0
  FCB $01,$00,$FE,$FE,$0B,$3E,$FE,$FE,$07,$0E
  FCB $FE,$FE,$04,$3E,$FE,$FE,$05,$8E,$FE,$FE
  FCB $01,$C0,$C0,$01,$00,$FE,$FE,$01,$8E,$8E
  FCB $02,$FE,$8E,$8E,$03,$FE,$FE,$01,$0E,$FE
  FCB $FE,$07,$0E,$FE,$FE,$04,$3E,$FE,$FE,$05
  FCB $9A,$FE,$FE,$03,$02,$FE,$FE,$01,$26,$26
  FCB $02,$FE,$26,$26,$03,$FE,$FE,$01,$0E,$FE
  FCB $FE,$07,$3E,$FE,$FE,$04,$3E,$FE,$FE,$05
  FCB $82,$FE,$FE,$01,$F0,$F0,$01,$CE,$FE,$FE
  FCB $01,$36,$36,$02,$FE,$36,$36,$03,$FE,$FE
  FCB $01,$0E,$FE,$FE,$0D,$1E,$FE,$FE,$05,$86
  FCB $FE,$FE,$06,$32,$32,$02,$9E,$32,$32,$03
  FCB $FE,$FE,$01,$3E,$FE,$FE,$0D,$9E,$8E,$FE
  FCB $C2,$FE,$FE,$03,$98,$FE,$3E,$FE,$FE,$03
  FCB $98,$98,$02,$C6,$98,$98,$03,$FE,$FE,$10
  FCB $98,$26,$FE,$00,$FE,$FE,$03,$88,$FE,$0E
  FCB $FE,$FE,$03,$98,$98,$02,$FE,$98,$98,$03
  FCB $FE,$FE,$03,$C2,$FE,$FE,$0B,$80,$36,$FE
  FCB $00,$FE,$FE,$03,$00,$FE,$0E,$FE,$FE,$03
  FCB $C0,$C0,$02,$FE,$C0,$C0,$03,$FE,$FE,$03
  FCB $00,$FE,$FE,$04,$F0,$F0,$01,$FE,$FE,$04
  FCB $82,$32,$FE,$02,$F0,$FE,$FE,$02,$24,$FE
  FCB $0E,$FE,$FE,$03,$E2,$E2,$02,$FE,$E2,$E2
  FCB $03,$FE,$FE,$03,$00,$FE,$FE,$04,$C0,$C0
  FCB $01,$FE,$FE,$05,$98,$FE,$CE,$C0,$FE,$FE
  FCB $02,$24,$FE,$3E,$FE,$FE,$05,$3E,$FE,$FE
  FCB $08,$02,$FE,$FE,$0C,$98,$FE,$FE,$05,$24
  FCB $FE,$FE,$11,$CE,$FE,$FE,$04,$F0,$F0,$01
  FCB $FE,$FE,$05,$C0,$FE,$FE,$01,$F0,$FE,$FE
  FCB $02,$3C,$FE,$FE,$07,$FC,$FE,$3E,$FE,$FE
  FCB $14,$E2,$FE,$FE,$05,$3E,$FE,$FE,$09,$0E
  FCB $FE,$FE,$15,$38,$FE,$FE,$08,$C2,$FE,$FE
  FCB $10,$FC,$3E,$FE,$FE,$01,$FC,$3E,$FE,$FE
  FCB $05,$38,$FE,$FE,$08,$00,$FE,$FE,$07,$FC
  FCB $3E,$FE,$FE,$06,$FB,$DE,$FE,$FE,$01,$FB
  FCB $DE,$FE,$FE,$05,$98,$FE,$FE,$08,$00,$FE
  FCB $FE,$07,$FB,$DE,$FE,$FE,$06,$F2,$6E,$FE
  FCB $FE,$01,$F2,$6E,$FE,$FE,$05,$92,$FE,$FE
  FCB $08,$02,$FE,$FE,$07,$F2,$6E,$FE,$FE,$05
  FCB $F0,$05,$AE,$FE,$F0,$05,$AE,$FE,$FE,$05
  FCB $92,$86,$FE,$FE,$07,$CE,$3E,$86,$FE,$FE
  FCB $04,$F0,$05,$AE,$FE,$FE,$05,$07,$C8,$2E
  FCB $FE,$07,$C8,$2E,$FE,$FE,$05,$92,$0E,$FE
  FCB $FE,$08,$38,$1E,$FE,$FE,$04,$07,$C8,$2E
  FCB $FE,$FE,$04,$F9,$EF,$FB,$A2,$F9,$EF,$FB
  FCB $A2,$FE,$FE,$05,$C6,$3E,$FE,$FE,$08,$38
  FCB $3E,$FE,$FE,$02,$3E,$F9,$EF,$FB,$A2,$FE
  FCB $FE,$02,$F0,$F0,$01,$F6,$01,$FF,$6C,$F6
  FCB $01,$FF,$6C,$FE,$FE,$04,$0E,$E6,$36,$FE
  FCB $FE,$08,$38,$06,$FE,$FE,$02,$0E,$F6,$01
  FCB $FF,$6C,$FE,$FE,$02,$C2,$C0,$EC,$00,$1F
  FCB $FF,$EC,$00,$1F,$FF,$7E,$FE,$FE,$05,$8E
  FCB $FE,$FE,$07,$8E,$38,$82,$C2,$FE,$FE,$01
  FCB $0E,$EC,$00,$1F,$FF,$7E,$FE,$FE,$01,$00
  FCB $FE,$E8,$00,$00,$01,$3F,$E8,$00,$00,$01
  FCB $3F,$7E,$FE,$FE,$01,$FC,$3E,$FE,$FE,$01
  FCB $9A,$FE,$FE,$02,$FC,$3E,$FE,$FE,$02,$26
  FCB $92,$F2,$02,$FE,$FE,$01,$0E,$E8,$00,$00
  FCB $01,$3F,$7E,$FE,$FE,$01,$00,$F0,$EC,$00
  FCB $00,$02,$EC,$00,$00,$02,$FE,$FE,$02,$FB
  FCB $DE,$FE,$FE,$01,$82,$FE,$FE,$02,$FB,$DE
  FCB $FE,$FE,$02,$36,$82,$22,$0E,$FE,$FE,$01
  FCB $3E,$EC,$00,$00,$02,$FE,$FE,$02,$02,$FE
  FCB $E6,$00,$00,$01,$32,$E6,$00,$00,$01,$32
  FCB $FE,$FE,$02,$F2,$6E,$FE,$FE,$01,$86,$FE
  FCB $FE,$02,$F2,$6E,$FE,$FE,$02,$32,$C6,$86
  FCB $E6,$FE,$FE,$02,$E6,$00,$00,$01,$32,$FE
  FCB $FE,$02,$CE,$FE,$E9,$E0,$03,$CA,$E9,$E0
  FCB $03,$CA,$FE,$FE,$01,$F0,$05,$AE,$FE,$FE
  FCB $04,$F0,$05,$AE,$FE,$FE,$01,$98,$98,$01
  FCB $FE,$FE,$01,$E6,$86,$FE,$FE,$01,$E9,$E0
  FCB $03,$CA,$FE,$FE,$04,$EC,$1F,$FC,$1A,$EC
  FCB $1F,$FC,$1A,$FE,$FE,$01,$07,$C8,$2E,$FE
  FCB $FE,$01,$F0,$FE,$FE,$01,$07,$C8,$2E,$FE
  FCB $FE,$01,$88,$98,$FE,$FE,$01,$F0,$0E,$FE
  FCB $FE,$01,$EC,$1F,$FC,$1A,$FE,$FE,$04,$EA
  FCB $A0,$02,$AA,$EA,$A0,$02,$AA,$FE,$F9,$EF
  FCB $FB,$A2,$FE,$FE,$01,$C0,$FE,$F9,$EF,$FB
  FCB $A2,$FE,$FE,$01,$00,$C0,$FE,$FE,$01,$C0
  FCB $3E,$FE,$FE,$01,$EA,$A0,$02,$AA,$FE,$FE
  FCB $04,$ED,$55,$55,$01,$5A,$ED,$55,$55,$01
  FCB $5A,$FE,$F6,$01,$FF,$6C,$FE,$FE,$03,$F6
  FCB $01,$FF,$6C,$FE,$FE,$01,$24,$E2,$FE,$FE
  FCB $01,$C6,$36,$FE,$FE,$01,$ED,$55,$55,$01
  FCB $5A,$FE,$FE,$04,$EA,$AA,$AA,$02,$EA,$AA
  FCB $AA,$02,$FE,$EC,$00,$1F,$FF,$7E,$FE,$F0
  FCB $FE,$EC,$00,$1F,$FF,$7E,$FE,$24,$FE,$FE
  FCB $03,$8E,$FE,$FE,$01,$EA,$AA,$AA,$02,$FE
  FCB $FE,$04,$E9,$55,$55,$01,$4A,$E9,$55,$55
  FCB $01,$4A,$FE,$E8,$00,$00,$01,$3F,$7E,$FE
  FCB $FE,$02,$E8,$00,$00,$01,$3F,$7E,$FE,$24
  FCB $FE,$FE,$03,$9A,$FE,$FE,$01,$E9,$55,$55
  FCB $01,$4A,$FE,$FE,$04,$EC,$AA,$AA,$01,$9A
  FCB $EC,$AA,$AA,$01,$9A,$FE,$EC,$00,$00,$02
  FCB $FE,$FE,$03,$EC,$00,$00,$02,$FE,$C2,$3C
  FCB $FE,$FE,$03,$82,$FE,$FE,$01,$EC,$AA,$AA
  FCB $01,$9A,$FE,$FE,$04,$E6,$15,$54,$32,$E6
  FCB $15,$54,$32,$FE,$E6,$00,$00,$01,$32,$FE
  FCB $FE,$03,$E6,$00,$00,$01,$32,$FE,$00,$3E
  FCB $FE,$FE,$03,$86,$FE,$FE,$01,$E6,$15,$54
  FCB $32,$FE,$FE,$02,$98,$3E,$E9,$E0,$03,$CA
  FCB $E9,$E0,$03,$CA,$FE,$E9,$E0,$03,$CA,$3E
  FCB $FE,$FE,$02,$E9,$E0,$03,$CA,$0E,$00,$FE
  FCB $FE,$05,$86,$FE,$E9,$E0,$03,$CA,$FE,$FE
  FCB $02,$92,$3E,$EC,$1F,$FC,$1A,$EC,$1F,$FC
  FCB $1A,$FE,$EC,$1F,$FC,$1A,$FE,$FE,$03,$EC
  FCB $1F,$FC,$1A,$0E,$02,$FE,$FE,$05,$1E,$FE
  FCB $EC,$1F,$FC,$1A,$FE,$FE,$02,$86,$3E,$EA
  FCB $A0,$02,$AA,$EA,$A0,$02,$AA,$FE,$EA,$A0
  FCB $02,$AA,$FC,$FE,$FE,$02,$EA,$A0,$02,$AA
  FCB $3E,$CE,$FE,$FE,$05,$3E,$FE,$EA,$A0,$02
  FCB $AA,$FE,$FE,$02,$8E,$1E,$ED,$55,$55,$01
  FCB $5A,$ED,$55,$55,$01,$5A,$FE,$ED,$55,$55
  FCB $01,$5A,$FE,$FE,$03,$ED,$55,$55,$01,$5A
  FCB $FE,$FE,$07,$06,$FE,$ED,$55,$55,$01,$5A
  FCB $FE,$FE,$02,$26,$9E,$EA,$AA,$AA,$02,$EA
  FCB $AA,$AA,$02,$FE,$EA,$AA,$AA,$02,$FE,$FE
  FCB $03,$EA,$AA,$AA,$02,$FE,$FE,$07,$82,$FE
  FCB $EA,$AA,$AA,$02,$FE,$FE,$02,$26,$98,$E9
  FCB $55,$55,$01,$4A,$E9,$55,$55,$01,$4A,$FE
  FCB $E9,$55,$55,$01,$4A,$FE,$FE,$01,$0E,$0E
  FCB $01,$E9,$55,$55,$01,$4A,$FE,$FE,$07,$F2
  FCB $FE,$E9,$55,$55,$01,$4A,$FE,$FE,$02,$32
  FCB $80,$EC,$AA,$AA,$01,$9A,$EC,$AA,$AA,$01
  FCB $9A,$FE,$EC,$AA,$AA,$01,$9A,$FE,$FE,$01
  FCB $3E,$3E,$01,$EC,$AA,$AA,$01,$9A,$FE,$FE
  FCB $07,$22,$FE,$EC,$AA,$AA,$01,$9A,$FE,$FE
  FCB $03,$82,$E6,$15,$54,$32,$E6,$15,$54,$32
  FCB $FE,$E6,$15,$54,$32,$FE,$FE,$03,$E6,$15
  FCB $54,$32,$FE,$FE,$07,$86,$FE,$E6,$15,$54
  FCB $32,$FE,$FE,$04,$E9,$E0,$03,$CA,$E9,$E0
  FCB $03,$CA,$FE,$E9,$E0,$03,$CA,$FE,$FE,$01
  FCB $FC,$FC,$01,$E9,$E0,$03,$CA,$FE,$FE,$09
  FCB $E9,$E0,$03,$CA,$FE,$FE,$04,$EC,$1F,$FC
  FCB $1A,$EC,$1F,$FC,$1A,$FE,$EC,$1F,$FC,$1A
  FCB $FE,$FE,$03,$EC,$1F,$FC,$1A,$FE,$FE,$09
  FCB $EC,$1F,$FC,$1A,$FE,$FE,$04,$EA,$A0,$02
  FCB $AA,$EA,$A0,$02,$AA,$FE,$EA,$A0,$02,$AA
  FCB $FE,$FE,$03,$EA,$A0,$02,$AA,$FE,$FE,$09
  FCB $EA,$A0,$02,$AA,$FE,$FE,$04,$ED,$55,$55
  FCB $01,$5A,$ED,$55,$55,$01,$5A,$FE,$ED,$55
  FCB $55,$01,$5A,$FE,$FE,$03,$ED,$55,$55,$01
  FCB $5A,$CE,$CE,$01,$FE,$FE,$03,$CE,$FE,$FE
  FCB $02,$ED,$55,$55,$01,$5A,$FE,$FE,$04,$EA
  FCB $AA,$AA,$02,$EA,$AA,$AA,$02,$FE,$EA,$AA
  FCB $AA,$02,$FE,$FE,$03,$EA,$AA,$AA,$02,$0E
  FCB $0E,$01,$FE,$FE,$03,$0E,$FE,$FE,$02,$EA
  FCB $AA,$AA,$02,$FE,$FE,$04,$E9,$55,$55,$01
  FCB $4A,$E9,$55,$55,$01,$4A,$FE,$E9,$55,$55
  FCB $01,$4A,$FE,$FE,$03,$E9,$55,$55,$01,$4A
  FCB $0E,$0E,$01,$FE,$FE,$03,$0E,$FE,$FE,$02
  FCB $E9,$55,$55,$01,$4A,$FE,$FE,$04,$EC,$AA
  FCB $AA,$01,$9A,$EC,$AA,$AA,$01,$9A,$FE,$EC
  FCB $AA,$AA,$01,$9A,$FE,$FE,$03,$EC,$AA,$AA
  FCB $01,$9A,$00,$00,$01,$FE,$FE,$03,$00,$FE
  FCB $FE,$02,$EC,$AA,$AA,$01,$9A,$FE,$FE,$04
  FCB $E6,$15,$54,$32,$E6,$15,$54,$32,$FE,$E6
  FCB $15,$54,$32,$FE,$FE,$03,$E6,$15,$54,$32
  FCB $00,$00,$01,$FE,$FE,$03,$00,$FE,$FE,$02
  FCB $E6,$15,$54,$32,$FE,$FE,$01,$00,$00,$02
  FCB $09,$E0,$03,$C8,$09,$E0,$03,$C8,$00,$09
  FCB $E0,$03,$C8,$00,$00,$03,$09,$E0,$03,$C8
  FCB $00,$00,$09,$09,$E0,$03,$C8,$00,$00,$04
  FCB $0C,$1F,$FC,$18,$0C,$1F,$FC,$18,$00,$0C
  FCB $1F,$FC,$18,$00,$00,$03,$0C,$1F,$FC,$18
  FCB $00,$00,$09,$0C,$1F,$FC,$18,$00,$00,$04
  FCB $0A,$A0,$02,$A8,$0A,$A0,$02,$A8,$00,$0A
  FCB $A0,$02,$A8,$00,$00,$03,$0A,$A0,$02,$A8
  FCB $00,$00,$09,$0A,$A0,$02,$A8,$00,$00,$04
  FCB $0D,$55,$55,$01,$58,$0D,$55,$55,$01,$58
  FCB $00,$0D,$55,$55,$01,$58,$00,$00,$03,$0D
  FCB $55,$55,$01,$58,$00,$00,$09,$0D,$55,$55
  FCB $01,$58,$00,$00,$04,$0A,$AA,$AA,$01,$A8
  FCB $0A,$AA,$AA,$01,$A8,$00,$0A,$AA,$AA,$01
  FCB $A8,$00,$00,$03,$0A,$AA,$AA,$01,$A8,$00
  FCB $00,$09,$0A,$AA,$AA,$01,$A8,$00,$00,$04
  FCB $0D,$55,$55,$01,$58,$0D,$55,$55,$01,$58
  FCB $00,$0D,$55,$55,$01,$58,$00,$00,$03,$0D
  FCB $55,$55,$01,$58,$00,$00,$09,$0D,$55,$55
  FCB $01,$58,$00,$00,$04,$0E,$AA,$AA,$01,$B8
  FCB $0E,$AA,$AA,$01,$B8,$00,$0E,$AA,$AA,$01
  FCB $B8,$00,$00,$03,$0E,$AA,$AA,$01,$B8,$00
  FCB $00,$09,$0E,$AA,$AA,$01,$B8,$00,$00,$04
  FCB $01,$55,$55,$01,$70,$01,$55,$55,$01,$70
  FCB $00,$01,$55,$55,$01,$70,$00,$00,$03,$01
  FCB $55,$55,$01,$70,$00,$00,$09,$01,$55,$55
  FCB $01,$70,$00,$00,$04,$01,$EA,$AB,$C0,$01
  FCB $EA,$AB,$C0,$00,$01,$EA,$AB,$C0,$00,$00
  FCB $03,$01,$EA,$AB,$C0,$00,$00,$09,$01,$EA
  FCB $AB,$C0,$00,$00,$05,$1F,$FC,$00,$00,$01
  FCB $1F,$FC,$00,$00,$02,$1F,$FC,$00,$00,$05
  FCB $1F,$FC,$00,$00,$0B,$1F,$FC,$00,$00,$FF
  FCB $00,$00,$FF,$00,$00,$32,$00,$00,$00,$00

VRAM1
  FCB $FF,$FF,$AF,$F0,$00,$F0,$00,$FC,$0F,$F8
  FCB $0F,$FF,$FF,$47,$F0,$00,$F0,$00,$3C,$03
  FCB $F0,$0F,$FF,$FF,$48,$0F,$FC,$38,$3F,$01
  FCB $E0,$3F,$FF,$FF,$48,$0F,$FC,$00,$FF,$00
  FCB $C0,$3F,$FF,$FF,$48,$0F,$FC,$00,$FF,$0C
  FCB $0C,$01,$3F,$FF,$FF,$48,$0F,$FC,$38,$3F
  FCB $0E,$1C,$3F,$FF,$FF,$47,$F0,$00,$F0,$00
  FCB $3C,$0F,$3C,$0F,$FF,$FF,$47,$F0,$00,$F0
  FCB $00,$FC,$0F,$FC,$0F,$FF,$FF,$E6,$01,$C0
  FCB $7C,$07,$03,$01,$C3,$C7,$00,$C0,$FF,$FF
  FCB $1D,$0C,$C3,$3C,$3F,$0B,$0F,$C1,$C7,$42
  FCB $C2,$FF,$FF,$1D,$0C,$C3,$3C,$3F,$0F,$0F
  FCB $01,$C1,$C7,$C3,$C3,$01,$FF,$FF,$1D,$0C
  FCB $C3,$3C,$3F,$0F,$0F,$01,$C0,$C7,$C3,$C3
  FCB $01,$FF,$FF,$1D,$01,$C0,$7C,$0F,$03,$03
  FCB $01,$C0,$C7,$C3,$C0,$FF,$FF,$1D,$0F,$C2
  FCB $7C,$3F,$C3,$0F,$C2,$47,$C3,$F0,$FF,$FF
  FCB $1D,$0F,$C2,$3C,$3F,$C3,$0F,$C2,$47,$C3
  FCB $F0,$FF,$FF,$1D,$0F,$C3,$1C,$3F,$43,$0F
  FCB $C3,$07,$C3,$D0,$FF,$FF,$1D,$0F,$C3,$9C
  FCB $07,$03,$01,$C3,$07,$C3,$C0,$FF,$FF,$FF
  FCB $FF,$FF,$88,$F8,$18,$E3,$FF,$FF,$24,$FE
  FCB $78,$03,$FF,$FF,$24,$FE,$79,$13,$FF,$FF
  FCB $1A,$07,$E3,$F1,$FF,$FF,$03,$87,$FF,$F1
  FCB $FE,$79,$B3,$FF,$FF,$19,$FE,$FB,$DD,$EE
  FCB $FF,$FF,$02,$FE,$7B,$FF,$EE,$8E,$79,$F3
  FCB $FF,$FF,$19,$FD,$8D,$B6,$DB,$7F,$FF,$FF
  FCB $01,$FD,$ED,$FF,$DB,$77,$FF,$FF,$1B,$FB
  FCB $6E,$6B,$35,$BF,$FF,$FF,$01,$FB,$96,$FF
  FCB $B3,$CF,$FF,$FF,$1B,$F6,$F6,$01,$6B,$35
  FCB $BF,$FF,$FF,$01,$FB,$79,$FF,$3F,$BF,$FF
  FCB $FF,$1B,$F6,$F6,$01,$6B,$35,$B1,$FF,$FF
  FCB $01,$F7,$7F,$FE,$F5,$BF,$FF,$FF,$1B,$ED
  FCB $F6,$6B,$35,$AE,$F3,$E7,$F6,$FF,$E1,$B5
  FCB $BF,$FF,$FF,$1B,$ED,$F6,$B6,$DB,$5B,$6D
  FCB $DB,$F6,$FF,$DC,$5B,$7F,$FF,$FF,$1B,$ED
  FCB $F6,$B6,$DB,$55,$5E,$DB,$F7,$7F,$36,$DB
  FCB $7F,$FF,$FF,$1B,$F6,$F6,$01,$DD,$EE,$DB
  FCB $5B,$3B,$FB,$79,$6A,$EE,$DF,$FF,$FF,$1B
  FCB $F6,$6E,$BD,$DE,$EE,$DB,$38,$FB,$96,$6A
  FCB $DE,$AF,$FF,$FF,$1B,$FB,$9E,$6E,$37,$1B
  FCB $39,$FB,$7D,$ED,$B7,$37,$6F,$FF,$FF,$1B
  FCB $FC,$F3,$D3,$E9,$F5,$F5,$01,$DE,$FE,$7B
  FCB $DD,$E9,$DF,$FF,$FF,$1C,$0C,$3C,$1E,$0E
  FCB $0C,$79,$FF,$87,$E2,$1E,$3F,$FF,$FF,$20
  FCB $FB,$F7,$FF,$FF,$25,$F6,$37,$FF,$FF,$25
  FCB $F6,$6F,$FF,$FF,$25,$FB,$DF,$FF,$FF,$25
  FCB $FC,$3F,$FF,$FF,$7D,$E0,$FF,$FF,$26,$86
  FCB $7F,$FF,$FF,$25,$26,$7F,$FF,$FF,$25,$E0
  FCB $FF,$FF,$26,$CE,$67,$3F,$FF,$FF,$24,$CE
  FCB $47,$3F,$FF,$FF,$24,$CC,$92,$27,$FF,$FF
  FCB $24,$C1,$F0,$8F,$FF,$FF,$25,$FC,$3F,$FF
  FCB $FF,$25,$F9,$3F,$FF,$FF,$25,$F2,$7F,$FF
  FCB $FF,$25,$F8,$FF,$FF,$75,$E0,$FF,$C7,$C7
  FCB $01,$E3,$FC,$FF,$8F,$8F,$01,$FF,$FF,$1E
  FCB $86,$7F,$93,$93,$01,$49,$FC,$FF,$27,$27
  FCB $01,$FF,$FF,$1E,$26,$73,$93,$93,$01,$99
  FCB $99,$01,$CF,$27,$27,$01,$3F,$FF,$FF,$1D
  FCB $E0,$FF,$27,$27,$01,$F9,$19,$FE,$4E,$4F
  FCB $FC,$38,$44,$78,$7F,$FF,$FF,$19,$CE,$63
  FCB $27,$27,$01,$F3,$19,$8E,$4E,$4E,$01,$79
  FCB $39,$11,$39,$3F,$FF,$FF,$19,$CE,$63,$8F
  FCB $8F,$01,$F2,$53,$8F,$1F,$1C,$73,$33,$33
  FCB $02,$9F,$FF,$FF,$19,$CC,$C9,$06,$04,$F0
  FCB $C3,$24,$0C,$09,$22,$12,$66,$64,$9F,$FF
  FCB $FF,$19,$C1,$CC,$70,$F1,$F1,$01,$CF,$30
  FCB $E1,$E3,$88,$46,$67,$0E,$3F,$FF,$FF,$FF
  FCB $FF,$FF,$FF,$FF,$FF,$AF,$CF,$FF,$FF,$02
  FCB $CF,$FF,$CF,$FF,$FF,$01,$CF,$FF,$CF,$FF
  FCB $FF,$02,$CF,$FF,$CF,$FF,$CF,$FF,$FF,$02
  FCB $CF,$FF,$CF,$FF,$FF,$01,$CF,$FF,$FF,$02
  FCB $CF,$FF,$FF,$01,$CF,$FF,$FF,$03,$0F,$FF
  FCB $FF,$02,$0F,$FF,$0F,$FF,$FF,$01,$0F,$FF
  FCB $0F,$FF,$FF,$02,$0F,$FF,$0F,$FF,$0F,$FF
  FCB $FF,$02,$0F,$FF,$0F,$FF,$FF,$01,$0F,$FF
  FCB $FF,$02,$0F,$FF,$FF,$01,$0F,$FF,$FF,$01
  FCB $CF,$F1,$0F,$CF,$F1,$FF,$0F,$F1,$0F,$CF
  FCB $F1,$0F,$F1,$0F,$DF,$F1,$FF,$0F,$F1,$0F
  FCB $F1,$0F,$CF,$F1,$FF,$0F,$F1,$0F,$CF,$F1
  FCB $0F,$CF,$F1,$FF,$0F,$CF,$F1,$0F,$CF,$F1
  FCB $C1,$31,$03,$C1,$31,$FF,$03,$31,$03,$C1
  FCB $31,$03,$31,$03,$C1,$31,$FF,$03,$31,$03
  FCB $31,$03,$C1,$31,$FF,$03,$31,$03,$C1,$31
  FCB $03,$C1,$31,$FF,$03,$C1,$31,$03,$C1,$31
  FCB $C1,$01,$03,$C1,$01,$3F,$03,$01,$03,$C1
  FCB $01,$03,$01,$03,$C1,$01,$3F,$03,$01,$03
  FCB $01,$03,$C1,$01,$3F,$03,$01,$03,$C1,$01
  FCB $03,$C1,$01,$3F,$03,$C1,$01,$03,$C1,$01
  FCB $01,$02,$03,$01,$01,$01,$0F,$03,$01,$03
  FCB $01,$01,$01,$03,$01,$03,$01,$01,$01,$0F
  FCB $03,$01,$03,$01,$03,$01,$01,$01,$0F,$03
  FCB $01,$03,$01,$01,$01,$03,$01,$01,$01,$0F
  FCB $03,$01,$01,$01,$03,$01,$01,$06,$07,$01
  FCB $01,$09,$07,$01,$01,$06,$07,$01,$01,$07
  FCB $07,$01,$01,$FF,$01,$01,$57,$C1,$01,$01
  FCB $0E,$C1,$01,$01,$16,$F1,$01,$01,$0E,$F1
  FCB $01,$01,$16,$F1,$01,$01,$0E,$F1,$01,$01
  FCB $16,$F1,$01,$01,$0E,$F1,$01,$01,$07,$FF
  FCB $01,$01,$0D,$C1,$01,$01,$0E,$C1,$01,$01
  FCB $07,$FD,$01,$01,$26,$31,$01,$01,$16,$3D
  FCB $01,$01,$24,$0F,$0F,$01,$FF,$01,$01,$0B
  FCB $C1,$01,$01,$07,$F1,$01,$01,$0E,$3F,$3F
  FCB $01,$FF,$01,$01,$0B,$F1,$01,$01,$07,$F1
  FCB $01,$01,$10,$FD,$01,$01,$0B,$F1,$01,$01
  FCB $07,$C1,$01,$01,$0E,$0F,$0F,$01,$31,$01
  FCB $01,$0B,$F1,$01,$01,$26,$C1,$01,$01,$10
  FCB $3D,$01,$01,$05,$C1,$01,$01,$1F,$FF,$01
  FCB $01,$03,$00,$01,$F1,$01,$01,$0F,$3D,$01
  FCB $01,$0E,$FF,$01,$01,$03,$00,$01,$F1,$01
  FCB $01,$0F,$FF,$01,$01,$04,$0F,$0F,$01,$01
  FCB $01,$07,$FD,$0F,$01,$01,$02,$00,$01,$F1
  FCB $01,$01,$0F,$FF,$01,$01,$04,$3F,$3F,$01
  FCB $01,$01,$07,$31,$3F,$01,$01,$02,$00,$01
  FCB $C1,$01,$01,$05,$C1,$01,$01,$08,$FD,$01
  FCB $01,$13,$00,$01,$01,$11,$31,$01,$01,$04
  FCB $0F,$0F,$01,$01,$01,$08,$0F,$01,$01,$02
  FCB $00,$01,$01,$07,$03,$01,$C1,$01,$01,$26
  FCB $F1,$01,$01,$1F,$3D,$01,$01,$10,$03,$C1
  FCB $01,$01,$01,$03,$C1,$01,$01,$0F,$FF,$01
  FCB $01,$07,$03,$C1,$01,$01,$06,$07,$E1,$01
  FCB $01,$01,$07,$E1,$01,$01,$0F,$FF,$01,$01
  FCB $07,$07,$E1,$01,$01,$06,$0F,$F1,$01,$01
  FCB $01,$0F,$F1,$01,$01,$0F,$FD,$01,$01,$07
  FCB $0F,$F1,$01,$01,$05,$00,$1E,$71,$01,$00
  FCB $1E,$71,$01,$01,$0F,$31,$01,$01,$06,$00
  FCB $1E,$71,$01,$01,$04,$00,$07,$FC,$71,$00
  FCB $07,$FC,$71,$01,$01,$16,$00,$07,$FC,$71
  FCB $01,$01,$05,$EF,$FF,$F1,$01,$EF,$FF,$F1
  FCB $01,$01,$15,$C1,$01,$EF,$FF,$F1,$01,$01
  FCB $02,$0F,$0F,$01,$06,$A1,$FF,$FC,$06,$A1
  FCB $FF,$FC,$01,$01,$04,$F1,$01,$01,$0F,$F1
  FCB $06,$A1,$FF,$FC,$01,$01,$02,$3D,$3F,$0C
  FCB $54,$1F,$FF,$0C,$54,$1F,$FF,$01,$01,$15
  FCB $F1,$0C,$54,$1F,$FF,$01,$01,$02,$FF,$01
  FCB $08,$2A,$A0,$3F,$08,$2A,$A0,$3F,$01,$01
  FCB $02,$03,$C1,$01,$01,$05,$03,$C1,$01,$01
  FCB $08,$F1,$08,$2A,$A0,$3F,$01,$01,$02,$FF
  FCB $0F,$0C,$05,$55,$40,$0C,$05,$55,$40,$01
  FCB $01,$02,$07,$E1,$01,$01,$05,$07,$E1,$01
  FCB $01,$08,$C1,$0C,$05,$55,$40,$01,$01,$02
  FCB $FD,$01,$06,$00,$00,$01,$31,$06,$00,$00
  FCB $01,$31,$01,$01,$02,$0F,$F1,$01,$01,$05
  FCB $0F,$F1,$01,$01,$09,$06,$00,$00,$01,$31
  FCB $01,$01,$02,$31,$01,$09,$E0,$03,$C9,$09
  FCB $E0,$03,$C9,$01,$01,$01,$00,$1E,$71,$01
  FCB $01,$04,$00,$1E,$71,$01,$01,$09,$09,$E0
  FCB $03,$C9,$01,$01,$04,$0A,$1F,$FC,$29,$0A
  FCB $1F,$FC,$29,$01,$00,$07,$FC,$71,$01,$01
  FCB $01,$0F,$01,$00,$07,$FC,$71,$01,$01,$01
  FCB $00,$01,$01,$06,$0A,$1F,$FC,$29,$01,$01
  FCB $04,$0D,$40,$01,$59,$0D,$40,$01,$59,$01
  FCB $01,$01,$EF,$FF,$F1,$01,$01,$01,$3F,$01
  FCB $01,$01,$EF,$FF,$F1,$01,$01,$01,$00,$01
  FCB $01,$06,$0D,$40,$01,$59,$01,$01,$04,$0A
  FCB $AA,$AA,$01,$A9,$0A,$AA,$AA,$01,$A9,$01
  FCB $06,$A1,$FF,$FC,$01,$01,$03,$06,$A1,$FF
  FCB $FC,$01,$01,$01,$00,$01,$01,$06,$0A,$AA
  FCB $AA,$01,$A9,$01,$01,$04,$0D,$55,$55,$01
  FCB $59,$0D,$55,$55,$01,$59,$01,$0C,$54,$1F
  FCB $FF,$01,$01,$01,$0F,$01,$0C,$54,$1F,$FF
  FCB $01,$01,$01,$00,$01,$01,$06,$0D,$55,$55
  FCB $01,$59,$01,$01,$04,$0A,$AA,$AA,$01,$A9
  FCB $0A,$AA,$AA,$01,$A9,$01,$08,$2A,$A0,$3F
  FCB $01,$01,$03,$08,$2A,$A0,$3F,$01,$01,$01
  FCB $00,$01,$01,$06,$0A,$AA,$AA,$01,$A9,$01
  FCB $01,$04,$0D,$55,$55,$01,$59,$0D,$55,$55
  FCB $01,$59,$01,$0C,$05,$55,$40,$01,$01,$03
  FCB $0C,$05,$55,$40,$01,$3D,$00,$01,$01,$06
  FCB $0D,$55,$55,$01,$59,$01,$01,$04,$06,$0A
  FCB $A8,$31,$06,$0A,$A8,$31,$01,$06,$00,$00
  FCB $01,$31,$01,$01,$03,$06,$00,$00,$01,$31
  FCB $01,$FF,$01,$01,$07,$06,$0A,$A8,$31,$01
  FCB $01,$04,$09,$E0,$03,$C9,$09,$E0,$03,$C9
  FCB $01,$09,$E0,$03,$C9,$C1,$01,$01,$02,$09
  FCB $E0,$03,$C9,$F1,$FF,$01,$01,$07,$09,$E0
  FCB $03,$C9,$01,$01,$04,$0A,$1F,$FC,$29,$0A
  FCB $1F,$FC,$29,$01,$0A,$1F,$FC,$29,$01,$01
  FCB $03,$0A,$1F,$FC,$29,$F1,$FD,$01,$01,$07
  FCB $0A,$1F,$FC,$29,$01,$01,$04,$0D,$40,$01
  FCB $59,$0D,$40,$01,$59,$01,$0D,$40,$01,$59
  FCB $03,$01,$01,$02,$0D,$40,$01,$59,$C1,$31
  FCB $01,$01,$07,$0D,$40,$01,$59,$01,$01,$04
  FCB $0A,$AA,$AA,$01,$A9,$0A,$AA,$AA,$01,$A9
  FCB $01,$0A,$AA,$AA,$01,$A9,$01,$01,$03,$0A
  FCB $AA,$AA,$01,$A9,$01,$01,$09,$0A,$AA,$AA
  FCB $01,$A9,$01,$01,$04,$0D,$55,$55,$01,$59
  FCB $0D,$55,$55,$01,$59,$01,$0D,$55,$55,$01
  FCB $59,$01,$01,$03,$0D,$55,$55,$01,$59,$01
  FCB $01,$09,$0D,$55,$55,$01,$59,$01,$01,$04
  FCB $0A,$AA,$AA,$01,$A9,$0A,$AA,$AA,$01,$A9
  FCB $01,$0A,$AA,$AA,$01,$A9,$01,$01,$01,$F1
  FCB $F1,$01,$0A,$AA,$AA,$01,$A9,$01,$01,$09
  FCB $0A,$AA,$AA,$01,$A9,$01,$01,$04,$0D,$55
  FCB $55,$01,$59,$0D,$55,$55,$01,$59,$01,$0D
  FCB $55,$55,$01,$59,$01,$01,$01,$C1,$C1,$01
  FCB $0D,$55,$55,$01,$59,$01,$01,$09,$0D,$55
  FCB $55,$01,$59,$01,$01,$04,$06,$0A,$A8,$31
  FCB $06,$0A,$A8,$31,$01,$06,$0A,$A8,$31,$01
  FCB $01,$03,$06,$0A,$A8,$31,$01,$01,$09,$06
  FCB $0A,$A8,$31,$01,$01,$04,$09,$E0,$03,$C9
  FCB $09,$E0,$03,$C9,$01,$09,$E0,$03,$C9,$01
  FCB $01,$01,$03,$03,$01,$09,$E0,$03,$C9,$01
  FCB $01,$09,$09,$E0,$03,$C9,$01,$01,$04,$0A
  FCB $1F,$FC,$29,$0A,$1F,$FC,$29,$01,$0A,$1F
  FCB $FC,$29,$01,$01,$03,$0A,$1F,$FC,$29,$01
  FCB $01,$09,$0A,$1F,$FC,$29,$01,$01,$04,$0D
  FCB $40,$01,$59,$0D,$40,$01,$59,$01,$0D,$40
  FCB $01,$59,$01,$01,$03,$0D,$40,$01,$59,$01
  FCB $01,$09,$0D,$40,$01,$59,$01,$01,$04,$0A
  FCB $AA,$AA,$01,$A9,$0A,$AA,$AA,$01,$A9,$01
  FCB $0A,$AA,$AA,$01,$A9,$01,$01,$03,$0A,$AA
  FCB $AA,$01,$A9,$31,$31,$01,$01,$01,$03,$31
  FCB $01,$01,$02,$0A,$AA,$AA,$01,$A9,$01,$01
  FCB $04,$0D,$55,$55,$01,$59,$0D,$55,$55,$01
  FCB $59,$01,$0D,$55,$55,$01,$59,$01,$01,$03
  FCB $0D,$55,$55,$01,$59,$F1,$F1,$01,$01,$01
  FCB $03,$F1,$01,$01,$02,$0D,$55,$55,$01,$59
  FCB $01,$01,$04,$0A,$AA,$AA,$01,$A9,$0A,$AA
  FCB $AA,$01,$A9,$01,$0A,$AA,$AA,$01,$A9,$01
  FCB $01,$03,$0A,$AA,$AA,$01,$A9,$F1,$F1,$01
  FCB $01,$01,$03,$F1,$01,$01,$02,$0A,$AA,$AA
  FCB $01,$A9,$01,$01,$04,$0D,$55,$55,$01,$59
  FCB $0D,$55,$55,$01,$59,$01,$0D,$55,$55,$01
  FCB $59,$01,$01,$03,$0D,$55,$55,$01,$59,$FF
  FCB $FF,$01,$01,$01,$03,$FF,$01,$01,$02,$0D
  FCB $55,$55,$01,$59,$01,$01,$04,$06,$0A,$A8
  FCB $31,$06,$0A,$A8,$31,$01,$06,$0A,$A8,$31
  FCB $01,$01,$03,$06,$0A,$A8,$31,$FF,$FF,$01
  FCB $01,$01,$03,$FF,$01,$01,$02,$06,$0A,$A8
  FCB $31,$01,$01,$01,$FF,$FF,$02,$E9,$E0,$03
  FCB $CB,$E9,$E0,$03,$CB,$FF,$E9,$E0,$03,$CB
  FCB $FF,$FF,$03,$E9,$E0,$03,$CB,$FF,$FF,$09
  FCB $E9,$E0,$03,$CB,$FF,$FF,$04,$EA,$1F,$FC
  FCB $2B,$EA,$1F,$FC,$2B,$FF,$EA,$1F,$FC,$2B
  FCB $FF,$FF,$03,$EA,$1F,$FC,$2B,$FF,$FF,$09
  FCB $EA,$1F,$FC,$2B,$FF,$FF,$04,$ED,$40,$01
  FCB $5B,$ED,$40,$01,$5B,$FF,$ED,$40,$01,$5B
  FCB $FF,$FF,$03,$ED,$40,$01,$5B,$FF,$FF,$09
  FCB $ED,$40,$01,$5B,$FF,$FF,$04,$EA,$AA,$AA
  FCB $01,$AB,$EA,$AA,$AA,$01,$AB,$FF,$EA,$AA
  FCB $AA,$01,$AB,$FF,$FF,$03,$EA,$AA,$AA,$01
  FCB $AB,$FF,$FF,$09,$EA,$AA,$AA,$01,$AB,$FF
  FCB $FF,$04,$ED,$55,$55,$01,$5B,$ED,$55,$55
  FCB $01,$5B,$FF,$ED,$55,$55,$01,$5B,$FF,$FF
  FCB $03,$ED,$55,$55,$01,$5B,$FF,$FF,$09,$ED
  FCB $55,$55,$01,$5B,$FF,$FF,$04,$EA,$AA,$AA
  FCB $01,$AB,$EA,$AA,$AA,$01,$AB,$FF,$EA,$AA
  FCB $AA,$01,$AB,$FF,$FF,$03,$EA,$AA,$AA,$01
  FCB $AB,$FF,$FF,$09,$EA,$AA,$AA,$01,$AB,$FF
  FCB $FF,$04,$ED,$55,$55,$01,$5B,$ED,$55,$55
  FCB $01,$5B,$FF,$ED,$55,$55,$01,$5B,$FF,$FF
  FCB $03,$ED,$55,$55,$01,$5B,$FF,$FF,$09,$ED
  FCB $55,$55,$01,$5B,$FF,$FF,$04,$E1,$AA,$AA
  FCB $01,$B3,$E1,$AA,$AA,$01,$B3,$FF,$E1,$AA
  FCB $AA,$01,$B3,$FF,$FF,$03,$E1,$AA,$AA,$01
  FCB $B3,$FF,$FF,$09,$E1,$AA,$AA,$01,$B3,$FF
  FCB $FF,$04,$F9,$F5,$57,$CF,$F9,$F5,$57,$CF
  FCB $FF,$F9,$F5,$57,$CF,$FF,$FF,$03,$F9,$F5
  FCB $57,$CF,$FF,$FF,$09,$F9,$F5,$57,$CF,$FF
  FCB $FF,$04,$FE,$1F,$FC,$3F,$FE,$1F,$FC,$3F
  FCB $FF,$FE,$1F,$FC,$3F,$FF,$FF,$03,$FE,$1F
  FCB $FC,$3F,$FF,$FF,$09,$FE,$1F,$FC,$3F,$FF
  FCB $FF,$05,$E0,$03,$FF,$FF,$01,$E0,$03,$FF
  FCB $FF,$02,$E0,$03,$FF,$FF,$05,$E0,$03,$FF
  FCB $FF,$0B,$E0,$03,$FF,$FF,$59,$FE,$07,$FF
  FCB $FF,$25,$F9,$F9,$01,$FF,$FF,$25,$FB,$FD
  FCB $FF,$C3,$FF,$FF,$03,$CF,$FF,$1F,$EF,$FF
  FCB $87,$03,$39,$FF,$C3,$FF,$FF,$04,$CF,$87
  FCB $87,$01,$E3,$FF,$FF,$0C,$F7,$0E,$FF,$99
  FCB $FF,$FF,$05,$9F,$CF,$FF,$CF,$99,$11,$FF
  FCB $99,$FF,$FF,$04,$8F,$33,$33,$01,$C3,$FF
  FCB $FF,$0C,$F6,$66,$FF,$3F,$87,$23,$33,$23
  FCB $8F,$89,$93,$83,$FF,$CF,$99,$01,$FF,$3F
  FCB $87,$23,$23,$01,$FF,$FF,$01,$CF,$33,$33
  FCB $01,$93,$FF,$FF,$0C,$F6,$7E,$FF,$3F,$33
  FCB $99,$33,$89,$CF,$33,$89,$CF,$FF,$CF,$83
  FCB $01,$FF,$3F,$33,$89,$99,$FF,$FF,$01,$CF
  FCB $83,$87,$33,$FF,$FF,$0C,$F6,$66,$FF,$3F
  FCB $33,$99,$33,$99,$CF,$33,$99,$CF,$FF,$CF
  FCB $99,$29,$FF,$3F,$33,$99,$99,$01,$FF,$FF
  FCB $01,$CF,$F3,$33,$01,$FF,$FF,$0C,$F7,$0E
  FCB $FF,$99,$33,$83,$83,$01,$9F,$CF,$83,$99
  FCB $CB,$FF,$CF,$99,$39,$FF,$99,$33,$9F,$83
  FCB $CF,$FF,$CF,$E7,$33,$F3,$FF,$FF,$0C,$FB
  FCB $FD,$FF,$C3,$87,$9F,$F3,$0F,$87,$F3,$19
  FCB $E7,$FF,$87,$03,$39,$FF,$C3,$87,$0F,$9F
  FCB $CF,$FF,$03,$8F,$87,$E1,$FF,$FF,$0C,$F9
  FCB $F9,$01,$FF,$FF,$02,$0F,$07,$FF,$FF,$01
  FCB $07,$FF,$FF,$09,$0F,$FF,$FF,$12,$FE,$07
  FCB $FF,$FF,$1E,$00,$00,$00,$00,$00,$00,$00

  END
Fichier binaire (à charger et exécuter sur TO8, TO8D ou TO9+ en $7000) :
alleycat_bin.zip
(4.01 Kio) Téléchargé 102 fois
Daniel
L'obstacle augmente mon ardeur.
__sam__
Messages : 7923
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: Langage de programmation des jeux sur Thomson

Message par __sam__ »

Oui le son c'est pas exactement cela (un peu trop lent?), mais les graphismes sont bien. Tu les as récupérés d'où précisément ?
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
Avatar de l’utilisateur
hlide
Messages : 3469
Inscription : 29 nov. 2017 10:23

Re: Langage de programmation des jeux sur Thomson

Message par hlide »

Le titre et l'intro (image) me rappelle un jeu que j'ai joué sur PC1512 en CGA.
Daniel
Messages : 17316
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: Langage de programmation des jeux sur Thomson

Message par Daniel »

Effectivement le son est très approximatif. Tous les paramètres peuvent être ajustés dans le programme (hauteur et durée des notes) mais je n'ai pas eu le courage de le faire scientifiquement en comptant les cycles. J'ai plus ou moins ajusté au feeling.

Pour les graphismes j'ai fait une copie d'écran de la version IBM CGA, émulée dans DOSBOX : https://archive.org/details/msdos_Alley_Cat_1984
Les sprites du chat et la musique proviennent d'un remake de GitHub par Ronald Huizer : https://github.com/rhuizer/alleycat

Cet essai a pour objectif de prouver par l'exemple que l'assembleur est le meilleur outil possible pour créer un jeu Thomson. Je n'irai pas plus loin dans la programmation du jeu. Par contre j'aimerais bien voir la même intro programmée en Pascal (ou en C) pour savoir si c'est mieux, plus simple et plus rapide à développer. Je ne le crois pas, mais je peux me tromper.

Je suis en train de faire une version compatible MO6-TO8, sur disquette et sur carte SD. Elle sera bientôt disponible sur le site dcmoto.
Daniel
L'obstacle augmente mon ardeur.
Fool-DupleX
Messages : 2284
Inscription : 06 avr. 2009 12:07

Re: Langage de programmation des jeux sur Thomson

Message par Fool-DupleX »

Attendons la version Pascal pour comparer...
Tu attendras longtemps. Je sais déjà d'expérience que ce résultat n'est pas possible en Pascal Base, à moins d'écrire le programme suivant (approximativement) :

Code : Tout sélectionner

PROGRAM ALLEYCAT;

BEGIN
  ENCODE("Mettre ici un bout de l'hexadecimal du programme de Daniel");
  ENCODE("Mettre ici un bout de l'hexadecimal du programme de Daniel");
  ENCODE("Mettre ici un bout de l'hexadecimal du programme de Daniel");
  ...    
END.
Tout simplement car il n'y a rien en Pascal Base pour gérer des tableaux aussi gros que l'image de présentation. Je ne sais pas pour Pascal UCSD, par contre.
un peu trop lent?
Un peu faux surtout, en effet, mais on ne t'en veut pas, le résultat reste impressionnant vu le temps qu'il a fallu pour le produire.
Daniel
Messages : 17316
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: Langage de programmation des jeux sur Thomson

Message par Daniel »

Fool-DupleX a écrit : 06 oct. 2021 18:06 Un peu faux surtout...
Et même beaucoup faux. Pour faire juste il n'y a qu'un moyen : compter les cycles. Je n'ai pas eu le courage.

En gros, pour faire ce portage, j'ai passé une vingtaine d'heures. Le faire dans un autre langage est à mon avis plus long, car les algorithmes sont identiques, la difficulté "logique" est la même, et en plus il faut se battre avec une implémentation mal connue d'un langage, un compilateur pas toujours au point et des limitations inhérentes aux langages de plus haut niveau. En matière de programmation mon expérience prouve qu'il vaut mieux des outils simples et maîtrisés que des outils complexes, mal connus et pas toujours fiables.
Daniel
L'obstacle augmente mon ardeur.
Zebulon
Messages : 2788
Inscription : 02 nov. 2020 14:03

Re: Langage de programmation des jeux sur Thomson

Message par Zebulon »

Ouï pour la musique mais celle du jeu original n'est pas extraordinaire de toutes façons... par contre ce qui m'épate c'est que le jeu original sur PC tenait dans un seul exécutable de 55 Ko. Tout était vraiment optimisé à cette époque.

Quant à faire mieux avec les langages Pascal disponibles sans avoir recours à ENCODE je doute en effet. Si je compare avec ce que je connais mieux, sur CPC où pourtant on dispose d'un Turbo Pascal de Borland bien généreux et musclé, l'accès aux routines bas niveau du CPC passe nécessairement par des implémentations de fonctions avec INLINE.
__sam__
Messages : 7923
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: Langage de programmation des jeux sur Thomson

Message par __sam__ »

Fool-DupleX a écrit : 06 oct. 2021 18:06 Tout simplement car il n'y a rien en Pascal Base pour gérer des tableaux aussi gros que l'image de présentation. Je ne sais pas pour Pascal UCSD, par contre.
C'est même pire que cela, car comme l'indiquait Kerningham en 1981 dans le lien plus haut il n'y a aucun support pour des données "statiques" dans le "Framework Pascal" dans le paragraphe "2.2. There are no static variables and no initialization". Résultat toutes les constantes sont initialisées par du code, ce qui prends carrément beaucoup plus de place: un static int tab[] = {1,2} qui prends 4 octets en C ou ASM, se traduit en pascal par une allocation du tableau dans la pile + l'affectation des valeurs 1 puis 2 dans un registre 16 bit et enfin l'écriture aux offsets 0 et 1 du tableau alloué ce qui doit prendre facilement

Code : Tout sélectionner

	LEAU ,S		; 2 octets (début stack-frame)
	LEAS -4,S	; 2 octets
	LDD #1		; 3 octets
	STD -4,U	; 2 octets
	LDD #2		; 3 octets
	STD -2,U	; 2 octets
3 ou 4 fois plus de place, sans compter les cycles CPU gaspillés à initialiser tout cela.
Dernière modification par __sam__ le 07 oct. 2021 08:44, modifié 1 fois.
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
Répondre