Vidéo

Annexe technique · Accueil · English

Essentiellement vérifié au désassemblage. Les routines propres aux adaptateurs n'ont pas été lues en entier au-delà de leur code d'entrée.

Tampons

Globale Décalage DS Rôle
wPageSeg (IDA wConStagingSeg) 494 page 320×200 à 1 octet par pixel : la cible de Vid_PagePtr et de Img_Decode
wPage2Seg (IDA word_1CC2B) 280B seconde page, wPageSeg - 0x1444
wScratchSeg DA tampon de fichier compressé, wPage2Seg - 0xC74
wSheetSeg:wSheetOfs (IDA wVidCanvas*) BA:B8 bloc de 20 496 o, utilisé comme planche de sprites 320×64

La planche est écrite par Ui_CaptureSpriteSheet EA 0x1428C (service 0x17), qui y copie les 64 premières lignes de la page en 0x142C3. Vid_BlitTile lit depuis ES:DI, donc les appelants Ui_DrawBar EA 0x116EB et Ui_DrawWidget EA 0x11A20 l'utilisent comme source. Les décalages comme +0x1E00 et +0x90 sont des décalages en octets dans la planche. « Planche de sprites » est déduit de cet usage.

Vid_ArenaAlloc EA 0x1135D (service 0x1C) libère le grand bloc précédent, alloue 0x501 paragraphes pour la planche et 0x220 pour un second bloc, puis compare la mémoire restante à 0x3737 paragraphes. Trop peu de mémoire mène au chemin MANQUE DE MEMOIRE (ce chemin de message est non vérifié). Font_SelectDescriptor est appelé d'ici.

Primitives de dessin

  • Vid_PagePtr EA 0x117A8 : SI = y*320 + x, DS = wPageSeg.
  • Vid_BlitTile EA 0x117C1 : CH = largeur, CL = hauteur ; pas de source de 320 ; la couleur 2 est transparente. Ajoute la largeur à wCanvasX. EA 0x117BF met d'abord CL = 12.
  • Vid_DrawGlyph EA 0x11590 : voir Texte et polices.
  • bBlitViaPutPixel (DS:48E) : 1 choisit Vid_PutPixel (directement en mémoire vidéo) ; sinon les pixels sont stockés dans la page. Con_PromptDisk le met à 1 en 0x12903.

Vid_PutPixel EA 0x129AD

Se branche selon wVideoMode. Appelants : 0x1168B et 0x1181F.

  • Mode 5 : écriture d'un octet en A000h.
  • Mode 2 : ofs = y*80 + (2x)/8, avec un masque tiré de 2x & 7, en mode d'écriture 2 par le port graphique 3CEh, donc un pixel logique couvre 2 pixels d'écran dans un mode de 640 de large.

Modes vidéo

Sys_ParseAdapterArg EA 0x109F2 compare le premier argument aux noms de 3 octets en DS:405 : AMS, CGA, EGA, HER, TAN, VGA → wVideoMode 0..5.

Vid_SpriteDispatch EA 0x12DBA (IDA Vid_FlushCanvas_Mono) saute selon le mode :

Mode EA cible Nom Tampon
0 AMS 0x12F80 Vid_SpriteAmstrad (IDA ..._CGA16) B800h
1 CGA 0x12DE7 Vid_SpriteCga
2 EGA 0x12E8C Vid_SpriteEga A000h
3 HER 0x12F21 Vid_SpriteHerc
4 TAN 0x13113 Vid_SpriteTandy
5 VGA 0x13184 Vid_SpriteVga

Ces routines lisent la planche de sprites, à une position dérivée de DS:94. Leur rôle complet, et le chemin de copie de la page vers l'écran, restent à lire (Questions ouvertes).

Captures mémoire

Des travaux antérieurs ont capturé deux pages (S8C76.BIN, S7832.BIN). Ces fichiers ne sont pas dans ce dépôt. 8C76h - 1444h = 7832h correspond à wPage2Seg, ce qui appuie ces valeurs de segment pour cette session.

Précédent : Le codec de compression · Suivant : Texte et polices · Annexe technique · Accueil