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.
| 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.
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
0x129ADSe branche selon wVideoMode. Appelants :
0x1168B et 0x1181F.
A000h.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.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).
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