home *** CD-ROM | disk | FTP | other *** search
Text File | 1992-08-16 | 107.7 KB | 3,595 lines |
- DoffsetXTiles:=(StartVirtualX-BackX1+15)DIV16
- EoffsetXTiles:=(StartVirtualX-BackX1+15)DIV16
- DoffsetYTiles:=(StartVirtualY-BackY1+15)DIV16
- EoffsetYTiles:=(StartVirtualY-BackY1+15)DIV16
- DoffsetXTiles:=(StartVirtualX-BackX1+15) DIV 16
- EoffsetXTiles:=(StartVirtualX-BackX1+15) DIV 16
- DoffsetYTiles:=(StartVirtualY-BackY1+15) DIV 16
- EoffsetYTiles:=(StartVirtualY-BackY1+15) DIV 16
- Dbottomcut:=(ypix-200) AND $F
- Ebottomcut:=(ypix-200) AND $F
- D(0,y) =
- E(0,y) =
- DDI:=y*LINESIZE+(0 div 4)=y*LINESIZE
- EDI:=y*LINESIZE+(0 div 4)=y*LINESIZE
- DLINESIZE
- ELINESIZE
- DStatusReg
- EStatusReg
- D"AND $FFF0" kann dabei entfallen, da in BackX1
- E"AND $FFF0" isn't needed, because in BackX1, the
- Dsqrt
- Esqrt
- DBX:=hoehe (fuer spaeter)
- EBX:=height (to be used later)
- DName des zu ladenden Palette-Files (Typ: "*.PAL" )
- Ename of the palette file (type: "*.PAL") to load
- Dakt_SpriteX
- Eakt_SpriteX
- D--- "Abkuerzung" ueber WriteMode 1 moeglich!:
- E--- short-cut possible, using write mode1:
- D--- "Abkuerzung" ueber WriteMode 1 moeglich!
- E--- short-cut possible, using write mode1
- Detwas spaeter wird dann DS (ES) = Segment der Spr.daten von Spr.1 (2)
- Ea little bit later DS (ES) will be set to segment of spr. 1 (2) data
- Dd.h.: sie ist nur fuer einen Animationszyklus sichtbar (soll sie
- Eimage, that is: it will be visible only for one animation cycle (if
- D(BackX1,BackY1), (BackX2,BackY2) = auf 16er Raster gerundete Koord.
- E(BackX1,BackY1), (BackX2,BackY2) = coordinates, rounded to 16-grid
- Dmuss im Stapel liegen (da DS andersweitig belegt wird!
- Emust be in stack (DS will be used for other purposes!
- Dauf 16er Raster gerundete Koord.
- Ecoord., rounded to 16'grid
- Dzuerst Linie auf sichtbaren Bereich zurechtklippen; dazu Sutherland-
- Efirst clip line to visible window; use Sutherland-Cohen-algorithm:
- Dmuss im Stapel liegen (da DS andersweitig belegt wird!)
- Emust lie in stack (because DS is used for other purposes!)
- DSegment_Adr
- ESegment_Adr
- DVersionsnummer
- Eversion number
- DBei Uebergabe von NIL als Zeiger stellt die Routine gar nicht dar;
- EWhen supplying NIL as pointer, the routine won't display anything
- Dgegen die der Farbtabelle "ShadowTab" ersetzt (um bspw. Schatten zu er-
- Ethose of the color lookup table "ShadowTab" (e.g.: to realize shadows,
- Dseite ab, beginnend mit der uebergebenen Nummer number
- Epage, starting with the given number "number"
- DDer Punkt wird NICHT automatisch in den Hintergrundspeicher ueber-
- EThe pixel will NOT automatically be overtaken into the background
- DBei Uebergabe von NIL als Zeiger stellt die Routine gar nichts dar
- EIf you supply NIL as pointer, the routine will display nothing
- Dnegativer
- Enegative
- Dzeigt genau hinter den Header
- Epoints exactly behind the header
- Dbester Naeherungswert fuer "newColor"
- Ebest fit for "newColor"
- Dkein Treffer in X-Richtung -> ueberhaupt kein Treffer!
- Eno collision in X-direction -> no collision at all!
- DZeilenzaehler
- Erow counter
- Dkeitsanpassung an unterschiedlich schnelle Rechner, ...
- ECPU-clocks, ...
- Dzeilenadr
- Ezeilenadr
- Daeusserer Schleifenzaehler
- Eouter loop-counter
- Drem: Alle nicht ueberschriebenen Farben werden in "pal" auf die Werte der
- Erem: All entries in "pal" which get not overwritten by the file's contents
- D2..3 DW Plane_1_Daten
- E2..3 DW offset_ptr_to_plane1_data
- Dof FadeIn
- Eof FadeIn
- DOffsetanteil des Zeigers zu den Planeadr. addieren
- Eadd pointer's offset part to the plane address
- D- flickerfreie Animation durch page-flipping, Auswertung des vertikalen
- E- flickerfree animations by using page-flipping, vertical retrace infor-
- Dist es ein Farbbildschirm?
- Eis it a color display?
- DLES DX,Ziel ;nach ES:DX
- ELES DX,Ziel ;to ES:DX
- D#4
- E#4
- D14.
- E14.
- DINT 10h
- EINT 10h
- D3BAh/3DAh = Status-Register fuer monochrom/Farbe
- E3BAh/3DAh = state register for monochrome/color
- D3B4h/3D4h = CRTAddress-Register fuer monochrom/Farbe
- E3B4h/3D4h = CRTAddress-register for monochrome/color
- DES
- EES
- DDS
- EDS
- Dzu movende Zeile
- Erow to move
- DQuelladresse
- Esource address
- Dzu je
- E,
- Dwurde:
- Eroutines above:
- DFuer den ersten Animationszyklus nach Aufruf dieser Routine
- EBecause of TimeFlag:=$80, the timing mechanism won't work
- Dfuer "leere Spalte"?
- Efor "empty column"?
- Dauch 2.Sprite pruefen: "leere Spalte"?
- Echeck 2nd sprite too: "empty column"?
- Dfuehrt wird, wenn leftcut mod 4=0, also 16+3-leftcut=...11b, die
- Eonly be run if leftcut mod 4=0, thus 16+3-leftcut=...11b, the
- DFuellfarbe fuer die Seite
- Ecolor with which to fill the page
- Dd.h.: "Rechner ist ein PC" vorgetaeuscht. Sonst ist IsAT=0
- Ethe routine will fake "computer is a PC". Else IsAT=0
- Dzu setzende Palette
- Epalette to be set
- DAX = endy*max_breite_in_4er =yoffset
- EAX=endy*max_width_in_groups_of_4=yoffset
- Dmin(a,b)
- Emin(a,b)
- DVerwaltung von bis zu 1000 verschiedenen Sprites
- EManages up to 1000 different sprites
- Dberechne relativen X-Abstand vom linken Rand des
- Ecompute relative X-distance from left edge of
- Dseite), zeichnet alle sichtbaren Sprites, synchronisiert auf das dis-
- Einformation), draws all visible sprites, synchronizes to the display-
- Djede Zeile dabei in der Reihenfolge von links nach rechts
- Eeach row from left to right
- Dwelcher Hintergrundmodus?
- Ewhich background mode?
- Dletztes Sprite zeigt auf erstes
- Elast sprite points to first one
- DFehlercodes des Animationspaketes:
- Eerror codes of the animation package:
- DDefaultwerte entsprechen Abdunkelung auf 70% des Farb-Helligkeitswerts
- Edefault values correspond to a darkening to 70% of the original brightness
- DDefaultfarben-Palette des 256-Farbmodus
- Edefault palette colors of 256color mode
- DFeatures:
- EFeatures:
- DRetracesignals und Verwendung eines speziellen VGA-256-Farbengrafikmodus
- Emation and a special "tweaked" VGA-256-color graphicmode
- Dlen = Laenge des zu definierenden Spritezyklus
- Elen = length of your sprite cycle
- DtempColors
- EtempColors
- DError
- EError
- Dist das ein AT/386? ($0/$80=ja/nein)
- Eis this an AT or better? ($0/$80=yes/no)
- Dx+15-xmax
- Ex+15-xmax
- Dy+15-ymax
- Ey+15-ymax
- DShadowTab = (Naeherungs-)Farbtabelle fuer gewuenschte Abdunkelung
- EShadowTab = (best approximation) color table for wanted dimming
- D[dec(startx,bildschirmstartx)
- E[dec(startx,ScreenStartX)
- Dout: Anzahl der aus dem File gelesenen Farben (0 = Fehler trat auf)
- Eout: number of colors read from the file (0 = an error occured)
- Dzum Bsp.: xxrxxxxx, mit: r=rot=40, g=gruen=45, b=blau=35, x=weiss=30
- Efor ex.: xxrxxxxx, with: r=red=40, g=green=45, b=blue=35, x=white=30
- Dx2last
- Ex2last
- Dy2last
- Ey2last
- D22..23 DW ? ; bildx | hit2xfirst
- E22..23 DW ? ; bildx | hit2xfirst
- Dleft
- Eleft
- Djetzt
- Enow
- Dleft_to_right
- Eleft_to_right
- DDer Inhalt der Seite "pa" wurde auf die Seite 1-PAGE kopiert
- Ethe contents of page "pa" has been copied to page 1-PAGE
- Dseite), zeichnet alle sichtbaren Sprites, synchronisiert auf das vert.
- Eimage), draws all visible sprites, synchronizes to the vertical
- DNextSprite[nr] bis NextSprite[nr+len-1] wurden so gesetzt,
- ENextSprite[nr] through NextSprite[nr+len-1] have been set
- Ddeshalb: AH:=Kachel und anschliessend AX um 2 Bit
- Etherefore: set AH:=tile and afterwards, shift AX
- Dgesetzt werden; hier der Einfachheit immer neugesetzt
- Efor simplicity, we always reset it here
- Dzelnes Sprite oder eine ganze Spritebibliothek handelt und laedt
- Etains a single sprite or a complete sprite library and loads all
- DUeberpruefung statt!
- Edoesn't make any checks!
- Dkein Clipping statt
- Eno check for that
- Dgesetzt, eine evtl. noetige Leseplane dagegen nicht!
- Eready been set, but not that for the evtl. needed read plane!
- Dgegebenen Grafikseite gefuellt.
- Etents of the supplied graphic page.
- DVerschiebung um 3 Bit:
- Edisplacement of 3 bit:
- DVerschiebung um 2 Bit:
- Edisplacement of 2 bit:
- DVerschiebung um 1 Bit:
- Edisplacement of 1 bit:
- Dselbstgestrickter 6x6 Font
- Eselfmade 6x6 font (ugly..)
- DRest wie gehabt
- Erest as above
- DDer Punkt (x,y) wurde in absolute Bildschirmkoordinaten umgerechnet
- EThe point (x,y) has been transformed to absolute screen coordinates
- DDer Punkt (x,y) wird zunaechst auf 16er Raster gebracht!
- EThe point (x,y) first gets rounded to a grid with mesh 16
- DDer Bildausschnitt wurde zur Bildschirmdarstellung zurechtgeklippt
- EThe cutting has been properly clipped before being displayed
- DDer benoetigte Speicher wird von der Routine automatisch reserviert
- EThe memory needed will be reserved by the routine automatically
- DZeiger auf Heapbereich, der den kopierten Bildausschnitt enthaelt
- Epointer to heap address where the copied screen area is stored
- Dneue Farbe=alte, abgedunkelt auf "brightness" Prozent:
- Enew color=old one, darkened to "brightness" percent:
- Dnein, keine moeglich oder nicht gewuenscht
- Eno, none possible or not wanted
- DJetzt ueberpruefen, ob gesetzte Zyklus(mindest)zeit abgelaufen ist:
- ECheck whether the preset (min.) cycle time has passed:
- DJetzt obere rechte Eck-Kachel - falls nicht schon gezeichnet:
- ENow the upper right corner-tile - if not already drawn:
- DJetzt die untere rechte Tile - falls sie nicht bereits schon gezeichnet
- ENow draw the lower right tile - if it doesn't have been drawn by one of
- DFehlerwert
- Eerror value
- DZeiger auf (durch GetImage erstellten) Bildausschnitt
- Epointer to the cutting (returned by GetImage)
- Dleftcut
- Eleftcut
- Dneue Helligkeit
- Enew brightness
- DSetShadowTab(Schatten) kann entfallen, da Defaultwerte schon gesetzt!
- ESetShadowTab(Schatten) isn't needed, as the default values are set already
- Dwrap-around, deshalb: Adresse um 1 erhoehen, was
- Ewrap-around, thus: increment address by 1, which
- Dbreite,hoehe und Teile oberhalb des Bildschirms
- Ewidth,height and parts above the screen
- DBreite,Hoehe des def. Bereiches
- Ewidth, height of defined area
- DGroesse einer Zeile=80 Bytes
- Esize of one row=80 bytes
- Dnr = Spriteladenummer des ersten Sprites des Zyklus
- Enr = spriteloadnumber of the first sprite in the cycle
- Dbrightness
- Ebrightness
- DSI
- ESI
- DDI
- EDI
- DSchaltet die VGA-Karte in den 320x200x256x4-Modus; ACHTUNG!
- Eswitches the VGA-card into 320x200x256x4-mode; ATTENTION!
- Dypix:=(16-StartVirtualY) AND $F
- Eypix:=(16-StartVirtualY) AND $F
- Dxpix=rightcut:=(16-StartVirtualX) AND $F
- Expix=rightcut:=(16-StartVirtualX) AND $F
- D1 Byte plus Length(PICHeader) als Kennung
- E1 byte plus length(PICHeader) as tag
- DAuf "display enable"=0 (d.h.: aktiv) warten, so dass Seitenumschaltung
- EWait for "display enable"=0 (that is: active), so that page flipping
- Dmuss zwischen 0 und 15 liegen, 16 ist erlaubt (aber unsinnig)!
- Emust lie between 0..15, 16 is allowed (but senseless)!
- Dzu je 1 Byte plus Length(PICHeader) als Kennung
- Eat 1 byte each, plus length(PICHeader) as tag
- Dnur diese 3 Modi sind zulaessig
- Eonly these 3 modes are allowed
- DFuer Maskenadressierung
- EFor mask addressing
- Dmuss Werte zwischen 0..15 haben, 16 ist unzulaessig!
- Emust have a value in the range 0..15, 16 is not allowed!
- Dauszugebender Textstring
- Etextstring to be displayed
- Dmuss zwischen 0 und 15 liegen, 16 ist erlaubt (aber unsinnig)
- Emust lie in the range 0..15, 16 is allowed (but senseless)
- Dnur diese 4 Modi sind zulaessig
- Eonly these 4 modes are allowed
- Dgute Parameter sind z.B. Summen von Zweierpotenzen +1
- Ee.g., good values are sums of powers of 2 +1
- Dauch nach [@Starty_2+1]
- Estore it in [@Starty_2+1], too
- Dsichtbare) Grafikseite, auf die gezeichnet wird
- Evisible) graphic page on which to draw
- DWie OutTextXY(), aber es wird in den Hintergrund geschrieben und
- EFunctionally equivalent to OutTextXY(), but the text will be
- DLiegt der Punkt ausserhalb des sichtbaren Bereichs, so wird
- EIf the pixel lies outside the visible window, the routine
- Deintragen: CX=HIGH-Word, DX=LOW-Word
- Eseconds: CX=HIGH-Word, DX=LOW-Word
- DDie Anwendung dieser Routine ist nur fuer den Hintergrund-
- ECalling this routine only makes sense when using SCROLLING
- DDie Anwendung dieser Routine ist natuerlich nur fuer den Hintergrund-
- EObviously, calling the routine only makes sense when using SCROLLING
- Dmin(a,b)>=max(c,d) ?
- Emin(a,b)>=max(c,d) ?
- Dlinke obere Ecke des Bereiches (virtuelle Koord.)
- Eupper left corner of the area (in virtual coord.)
- DFilename fuer das zu ladende Bild
- Efile name for the picture to load
- DFilename fuer das abzuspeichernde Bild
- Efile name for the picture to store
- DFilename fuer das zu ladende Hintergrundbild
- Efile name for the background picture to load
- DFilename fuer das abzuspeichernde Hintergrundbild
- Efile name for the background picture to store
- DBit 6:=1: Adressierung des Speichers=lineares Bitfeld
- Ebit 6:=1 -> address memory as a linear bit array
- DCL=0/1 fuer offscreenFlag=false/true=(yt<0) OR (yt>=YTiles
- ECL=0/1 for offscreenFlag=false/true=(yt<0) OR (yt>=YTiles)
- DCL=0/1 fuer offscreenFlag=false/true=(yt<0) OR (yt>=YTiles)
- ECL=0/1 for offscreenFlag=false/true=(yt<0) OR (yt>=YTiles)
- DGraphTextBackground=Farbe fuer Texthintergrund;ist dieser Wert
- EGraphTextBackground=color to be used for text background; if
- Dorand1+2*hit1xfirst
- Eorand1+2*hit1xfirst
- DGrafikseite "pa" wurde mit der Farbe "Color" gefuellt
- Egraphic page "pa" has been filled with color "Color"
- Derste Zieladresse ist
- Efirst dest. addr. is
- DError wurde gesetzt, falls keine VGA-Karte im System enthalten ist
- EError has been set, if no VGA-card could be found in the system
- DTrick, da der Assembler nicht mit dem SS-Segment klarkommt
- Etrick, as the assembler messes up accesses to the SS-segment
- D1.Zeile zeichnen
- Edraw 1st row
- Ddto. fuer gruenen Farbanteil...
- Edto. for green color part...
- Dxtil
- Extil
- Dytil
- Eytil
- D; Bereich:
- E; variables: ("a|b" = used for a and b)
- D0128: CLD
- E0128: CLD
- D...und fuer den blauen Anteil auch
- E...repeat computation for blue part
- DNun alle anderen oberen Kacheln, die nur oben (aber nicht seitlich)
- ENow work on all other upper tiles, which are cut at their top (but
- DAuch hier gilt, dass der gezeichnete Punkt NICHT automatisch
- EAgain, the drawn pixel will _NOT_ automatically be taken
- Dpunkte, deren Farbe <>0 ist beruecksichtigt: die Hintergrundfarbe, die sich
- Epixels with color <>0 will be processed: the background color, which is
- Dout: (BackX1,BackY1), (BackX2,BackY2) =
- Eout: (BackX1,BackY1), (BackX2,BackY2) =
- DQuellzeiger:=sprite[WORD PTR (licutoff_in_Punkten+0 AND 3)*2
- Esource pointer:=sprite[WORD PTR (lecutoff_in_points+0 AND 3)*2
- DPunkt1 unterhalb von Punkt2 ?
- Epoint1 below point2 ?
- DPunkt1 rechts von Punkt2 ?
- Epoint1 right of point2 ?
- D16 horizontale Punkte = 4 Bytes pro Zeile
- E16 horizontal pixels = 4 bytes per line
- DBildschirmmitte
- Emiddle of screen
- DEinschub Ende
- Eend of insertion
- Dsichtbare Grafikseite
- Evisible graphic page
- Dsichtbare Seite
- Evisible page
- Dtime
- Etime
- Dvirtuelle
- Evirtual
- DDie Bitmap-Grafik in der Datei "name" wurde in die Hintergrundseite
- EThe bitmap-picture contained in file "name" has been loaded to the
- Dfieser Trick: "CALL Modus2Work" wuerde (da re-
- Esort of hack: "CALL Modus2Work" would be coded
- Deinbeziehen (plus 4 Bytes zum ueberspringen von "breite" und "hoehe"
- Eleft cutoff (+4 bytes to jump over "breite" (width) and "hoehe" (height)
- DBitplanes/-breiten in der richtigen Reihenfolge
- Esource bitplanes/-widths in the correct order
- DSinnvoll sind nur die Seiten 0 oder 1, es findet aber keine
- ESensible page values are only 0 or 1 here, but the routine
- Dnicht in die durch PAGEADR spezifizierte Seite!
- Ewritten to the background page instead of page PAGEADR!
- Ddiese Routine VOR dem Aufruf von ANIMATE auszufuehren, da dann alle
- Ewill call this routine BEFORE calling ANIMATE, because this way, all
- DDies hilft fuer eine direkte Uebernahme der von GetImage gelie-
- EThat is useful when you are going to use the routine directly on
- Dsichtbar ist immer die nichtaktuelle Grafikseite
- EALWAYS is the non-actual graphic page the visible one!
- Ddie Zieladresse
- Ethe destination address
- Ddie Quelladresse
- Ethe source address
- Dlinke
- Eleft
- Dlinke obere Ecke der zu zeichnenden Tile
- Eupper left corner of the tile to be drawn
- Dlinke obere Bildschirmecke
- Eupper left image corner
- DDiese Datei ist 4*PAGESIZE+3 = 64003 Bytes gross: 320x200 Punkte
- EThis file has size 4*PAGESIZE+3 = 64003 bytes: 320x200 points
- DHintergrundseite(nadresse)
- Ebackground page(address)
- DDisplay_UNKNOWN, wenn das Sprite noch nicht geladen wurde!
- EDisplay_UNKNOW, if the sprite hasn't been loaded, yet!
- D--- falls Abkuerzung genommen wurde, muss WriteMode 0 wieder
- E--- if short-cut has been taken we must restore write mode 0
- D*4 = Breite in Punkten
- E*4 = width in points
- D44..45 DW rechte_Begrenzungen
- E44..45 DW offset_ptr_to_right_boundary_data
- D...gefolgt von der Hoehe, danach dann die Daten
- E...then store height, followed by the data
- Dwg. actIndex=yt*XTiles+xt auch actIndex erhoehen
- Ebecause actIndex=yt*XTiles+xt do increment actIndex, too
- DFOR true_radius:=1 TO k STEP 1/adjust ist in Pascal leider nicht moeglich!
- Eunfortunately, FOR true_radius:=1 TO k STEP 1/adjust isn't possible in TP
- Dnur Seiten 0..3
- Eonly pages 0..3
- DDX=ueberhang:=xmax-(SpriteX+endx)
- EDX=overhang :=xmax-(SpriteX+endx)
- DAX=bildschirmstartx:=SpriteX+startx
- EAX=ScreenStartX:=SpriteX+startx
- Dsichtbar! (Deshalb ist es sinnvoll, diese Routine NACH Aufruf
- E(For that reason, you should call this routine AFTER
- DBitmaske fuer Zugriff
- Ebitmask for access
- D- volle Unterstuetzung der 256-Farbmoeglichkeiten der VGA-Karte
- E- full use of the VGA's 256-color mode
- Dtiles:=19+ord(leftcut=0)
- Etiles:=19+ord(leftcut=0)
- Ddie erste Zieladresse ist DI:=0*LINESIZE+(0 div 4)=0
- Ethe first dest. addr. is DI:=0*LINESIZE+(0 div 4)=0
- DoffsetXTiles
- EoffsetXTiles
- DoffsetYTiles
- EoffsetYTiles
- DBACKGNDPAGE geladen
- Ebackground page BACKGNDPAGE
- Ddto. fuer Abstand der y-Koordinate vom oberen
- Edto. for distance between the y-coordinate and
- DStartplane anwaehlen
- Eselect start plane
- Ddto. fuer Planebreiten:
- Edto. for plane widths:
- Ddto., oben
- Edto., at the top
- Ddto., unten
- Edto., bottom
- D15
- E15
- D#5
- E#5
- D15.
- E15.
- DEinschub fuer Zeitbedingung:
- Einsertion to realize timing:
- DRichtung
- Edirection
- DDiese Prozedur sollte einmal - ganz zu Beginn - zur Initialisierung
- EThis procedure should be called only once - namely in the very
- Dtine fuehrt dabei selber alle notwendigen Umrechnungen und Clipping-
- Eself takes care of coordinate transformations and evtl. necessary
- DHierher kommt die Routine zur Datenuebertragung!
- Ethis is the address where the data transfer routine will be patched!
- DTimeFlag
- ETimeFlag
- D26..27 DW ? ; end_min_start | ueberlappx_1
- E26..27 DW ? ; end_min_start | ueberlappx_1
- Dueberlappx
- Eueberlappx
- D1 Pixel=1 Byte; dazu: 2 Woerter fuer breite & hoehe
- E1 pixel=1 byte; add 2 words for width & height
- Dlirand1
- Elirand1
- DWindowX1
- EWindowX1
- Dzielzeiger:=(bildschirmstartx+1)
- Edest. ptr :=(ScreenStartX+1)
- Dminx-maxx-1=-(maxx-minx+1)
- Eminx-maxx-1=-(maxx-minx+1)
- Dsichtbare Breite dieser Zeile -1
- Evisible width of this row -1
- Ddto.
- Edto.
- Ddto.,
- Edto.,
- DSinnvoll sind nur die Seiten 0,1 und BACKGNDPAGE, jedoch
- EOnly "pa" values of 0,1 and BACKGNDPAGE make sense, but
- DDie li. obere Ecke wird nach links oben gezogen, die re. untere nach
- EThe upper left corner will be torn to the upper left, the lower
- DBit 7 = 0/1 fuer Zeit ist abgelaufen/laeuft noch
- Ebit 7 = 0/1 for delay completed/not yet completed
- Deinfaches horizontales und vertikales Scrolling moeglich
- Esimple creation of horizontal/vertical "scrolling" applications
- D36..37 DW ? ; | y2
- E36..37 DW ? ; | y2
- Dueberlappy
- Eueberlappy
- Dlirand2
- Elirand2
- DZielseite, in die das Bild geladen werden soll (0..2)
- Edestination page to be loaded with the picture (0..2)
- DZielseite, in die das Bild geladen werden soll (=2)
- Edestination page, in which to load the picture (=2)
- Dxrgrxxxx
- Exrgrxxxx
- DSHR
- ESHR
- Dist SCROLLPAGE ebenfalls erlaubt
- ESCROLLPAGE is allowed, too
- DEs wurde auf die Darstellung der Grafikseite pa umgeschaltet
- EThe display has been switched to graphic page pa
- DEs werden die Defaultfarben des Modus $13 gesetzt!
- EThe default colors of mode $13 will be set!
- Dauf den zurueckgeschaltet werden soll
- Eto which we'll switch back
- Ddung der Routine nur fuer den Hintergrundmodus STATIC sinnvoll!
- Etine only makes sense when using background mode STATIC!
- Dzu zeichnende Zeilenzahl
- Enumber of rows to draw
- Dzu zeichnende Zeilenanzahl
- Enumber of rows to draw
- DNummer, die das erste Sprite aus diesem File bekommen soll
- Enumber for the first sprite of this file
- Dfuer Gruenanteil
- Efor green part
- Dfuer Blauanteil
- Efor blue part
- DNummer, die die erste Farbe aus diesem File bekommen soll
- Enumber for the first color being read in from the file
- D16..17 DW SpriteLength ; Laenge der Spritedatei
- E16..17 DW SpriteLength ; length of this sprite in bytes
- Dti
- Eti
- Dhierher, wenn heller: maximale Abwei-
- Ejump here, if brighter: return max.
- DDie Linie wird NICHT sofort sichtbar, sondern erst im naechsten Ani-
- EThe line will NOT be visible until the next animation cycle takes
- Dverwendeter Zeichensatz:
- Eused font:
- DBX=[zeilenadr] = (endy+SpriteY)*LINESIZE
- EBX=[zeilenadr] = (endy+SpriteY)*LINESIZE
- Ddie Seite, die gefuellt werden soll (0..3)
- Ethe page which shall be filled (0..3)
- DBitplane (0..3) (=X-Koordinate AND 3)
- Ebitplane (0..3) (=X-coordinate AND 3)
- DZeiger auf 1. (2.) Sprite in ?WRTD[..] ,
- Epointer to 1. (2.) sprite in ?WRTD[..] ,
- DPseudoprozedur, um Daten der Farbumsetztabelle im Codesegment unterzu-
- EPseudo-procedure to store the color lookup table into the code segment
- D4..5 DW Plane_2_Daten
- E4..5 DW offset_ptr_to_plane2_data
- Dihren ersten zwei Bytes paarweise verschieden sein!
- Ewise disjoint in their first two bytes!
- Dthen
- Ethen
- DShadowTab neu/nicht neu berechnen
- Erecompute/don't recompute ShadowTab
- Dfuer: Zeit laeuft noch/ist um
- Efor: delay still lasts/has ended
- D16 horizontale Punkte = 4 Bytes pro Zeile: BX:=4
- E16 horizonzal points = 4 bytes per row: BX:=4
- Ddie erste Zieladresse ist DI:=y*LINESIZE+(x div 4)
- Ethe first destination addr. is DI:=y*LINESIZE+(x div 4)
- DDie erste Zieladresse ist DI:=0*LINESIZE+(x div 4) = x div 4
- EThe first destination address is DI:=0*LINESIZE+(x div 4)=x div 4
- DSegment_Adr[1-PAGE]
- ESegment_Adr[1-PAGE]
- Dzeilenadr:=(endy+SpriteY)*LINESIZE
- Ezeilenadr:=(endy+SpriteY)*LINESIZE
- Dneuer PAGEADR-Wert := Segment_Adr[PAGE]
- Enew PAGEADR-value := Segment_Adr[PAGE]
- DDrawUpperTile(x,topcut:INTEGER; index:WORD);
- EDrawUpperTile(x,topcut:INTEGER; index:WORD);
- DDrawUpperRightTile(x,rightcut,topcut:INTEGER; index:WORD);
- EDrawUpperRightTile(x,rightcut,topcut:INTEGER; index:WORD);
- DDrawUpperLeftTile(leftcut,topcut:INTEGER; index:WORD);
- EDrawUpperLeftTile(leftcut,topcut:INTEGER; index:WORD);
- DDrawRightTile(x,y,rightcut:INTEGER; index:WORD);
- EDrawRightTile(x,y,rightcut:INTEGER; index:WORD);
- DDrawLowerTile(x,y,bottomcut:INTEGER; index:WORD);
- EDrawLowerTile(x,y,bottomcut:INTEGER; index:WORD);
- DDrawLowerRightTile(x,y,rightcut,bottomcut:INTEGER; index:WORD);
- EDrawLowerRightTile(x,y,rightcut,bottomcut:INTEGER; index:WORD);
- DDrawLowerLeftTile(y,leftcut,bottomcut:INTEGER; index:WORD);
- EDrawLowerLeftTile(y,leftcut,bottomcut:INTEGER; index:WORD);
- DDrawLeftTile(y,leftcut:INTEGER; index:WORD);
- EDrawLeftTile(y,leftcut:INTEGER; index:WORD);
- DDrawInnerTile(x,y:INTEGER; index:WORD);
- EDrawInnerTile(x,y:INTEGER; index:WORD);
- DSHORT
- ESHORT
- Dist diese Routine bereits aktiv?
- Eis this routine already active?
- D1.Zeile, in der Sp.1 mit Sp.2 ueberlappt
- E1st row where sprite1 overlaps sprite2
- D1.Zeile, in der Sp.2 mit Sp.1 ueberlappt
- E1st row where sprite2 overlaps sprite1
- D- gleichzeitige Darstellung von bis zu 500 Sprites
- E- up to 500 sprites may be simultaneously active
- DStandardpalette setzen, sicher ist sicher
- Eset default palette, just to be sure!
- D15, d.h.: weiss (dto.)
- E15, that is: white (dto.)
- DLB der neuen Startadresse setzen
- Eset LB of new starting address
- DHB der neuen Startadresse setzen
- Eset HB of new starting address
- Dauf naechste Zeile positionieren:
- Eposition at next row:
- DQuellzeiger weitersetzen
- Eincrease source pointer
- Drueckwaerts moven!
- Emove backwards!
- DQuelldaten
- Esource data
- Dzu minmieren)
- Eminimize the squared error)
- DOutput-Register befragen:
- Euse output register:
- DMuster zugewiesen
- Epattern
- Dzu minimieren)
- Eminimize the square of errors!)
- Dnur falls x mod 4=0 _und_ rightcut mod 4=0 ist koennen
- Eonly if x mod 4=0 _and_ rightcut mod 4=0, then we can
- DNun folgen die Codestuecke, die Verwendung finden, um ein Sprite auf den
- ENow, all the code pieces follow, which can be used to display a sprite;
- Dzur (Offset-)Quelladresse in Page 3 addieren
- Esource addr. in page 3 for each cut off top-row
- DZunaechst den Spriteheader einlesen:
- Efirst, read in the sprite header:
- Dzuerst das Hintergrundbild auf die aktuelle Seite kopieren:
- Efirst copy the background picture to the actual graphic page:
- Dzu zeichnende Zeilenzahl nach BX retten
- Esave number of rows to draw into BX
- DQuell- und Zieladresse nicht mehr retten
- Edon't save source- and destination addresses
- DQuell- und Zieladresse fuer weitere Planes retten
- Esave source- and destination address for other planes
- DQuellzeiger um 1 Grafikzeile weitersetzen
- Eincrement source pointer by 1 graphic row
- DPunkt setzen
- Edraw point
- Dnur falls x mod 4=0 ist koennen wir WriteMode1 verwenden
- Eonly if x mod 4=0 is it possible to use WriteMode1
- Dnur falls leftcut mod 4=0 ist koennen wir WriteMode1 verwenden
- Eonly if leftcut mod 4=0 is it possible to use WriteMode1
- Dnun fuer diese Farbe eine moeglichst gute Naeherung finden:
- Enow find the best fit for that color:
- DNun eigentliches Clipping vornehmen:
- ENow do the clipping itself:
- Dfuer Stringbefehle die Zieladresse nach DI bringen
- Eput dest. addr. into DI for 8086's string instructions
- Dzu zeichnende Zeilen
- Erows to draw
- DAusschnitt auf Bildschirm zurechtklippen:
- Ecut clipping according to visible screen:
- Dmuss zwischen 0 und 15 liegen, 16 ist verboten
- Emust lie in the range 0..15, 16 is not allowed
- DAusserdem muessen die einzelnen Routinen zur Unterscheidbarkeit in
- EBesides that, for distinguishtability, the routines must be pair-
- Dfuer gruen
- Efor green
- DQuell-/Zieldaten beide mit nur 1 Indexregister ansprechen
- Eaddress source and destination with only 1 index register
- DZugriff auf Leseplane vorbereiten:
- Eprepare access to read plane:
- D...und Zugriff auf alle 4 Bitmaps erlauben
- E...and allow access to all 4 bit maps
- Deine andere Routine zur Darstellung des Sprites als die gerade ak-
- Emomentary active sprite display method is needed; if so, then copy
- DoffsetYPix
- EoffsetYPix
- DoffsetXPix
- EoffsetXPix
- D24..25 DW ? ; yoffset_ | hit2yfirst
- E24..25 DW ? ; yoffset_ | hit2yfirst
- DStartkoordinaten des auszugebenden Textes
- Estarting coordinates for the text
- DSpriteN[] =
- ESpriteN[] =
- DSpriteN[]
- ESpriteN[]
- DSpriteN
- ESpriteN
- DXOR BX,BX ;von Farbe 0 an
- EXOR BX,BX ;start with color 0
- DMOV CX,100h ;alle 256 Farben
- EMOV CX,100h ;all 256 colors
- D16
- E16
- D#6
- E#6
- D16.
- E16.
- DTileNr= Nummer der zu plazierenden Kachel
- ETileNr= number of the tile to be placed
- Dvirtuelle Koordinate, an die die Kachel plaziert werden soll
- Evirtual coordinates where the tile shall be placed
- DDie Routine ist nur fuer den Hintergrundmodus STATIC sinnvoll
- EUsing the routine only makes sense when using background mode STATIC
- Dgesetzter Modus STATIC/SCROLLING
- Eset mode, STATIC/SCROLLING
- Dgewuenschter Hintergrundmodus STATIC oder SCROLLING
- Ewanted background mode, STATIC or SCROLLING
- D@akt_SpriteX
- E@akt_SpriteX
- D[@akt_SpriteX+1] = SpriteX
- E[@akt_SpriteX+1] = SpriteX
- DDI=endx:=sprite[WORD PTR sprite[R]+
- EDI=endx:=sprite[WORD PTR sprite[R]+
- D(AX=)[yoffset_] = yoffset
- E(AX=)[yoffset_] = yoffset
- DGNDPAGE, wenn der Hintergrundmodus STATIC benutzt wird), es
- EGNDPAGE, if you are using background mode STATIC), however,
- Dxt
- Ext
- DBildausschnitt nicht auf dem Bildschirm
- Ewindow is offscreen
- D(Dummywert) CX:=breite1+breite2
- E(dummy value) CX:=breite1+breite2
- D38..39 DB 'K','R' ; Kennung als Sprite
- E38..39 DB 'K','R' ; tag used for sprites
- Daktuell sichtbare Seite
- Eactually visible page
- Dskip_zeile
- Eskip_zeile
- Daktuelle Grafikseite
- Eactual graphic page
- Dskip_sprite
- Eskip_sprite
- Daktuelle Farbpalette
- Eactual color palette
- D²),
- E²),
- D²+
- E²+
- D.:
- E.:
- D[@
- E[@
- D=[
- E=[
- D->
- E->
- Dz
- Ez
- Dy
- Ey
- Dx
- Ex
- Dw
- Ew
- Dv
- Ev
- Du
- Eu
- Dt
- Et
- Dr
- Er
- Dq
- Eq
- Do
- Eo
- Dn
- En
- Dm
- Em
- Dl
- El
- Dk
- Ek
- Dj
- Ej
- Di
- Ei
- Dh
- Eh
- Dg
- Eg
- Df
- Ef
- De
- Ee
- Dd
- Ed
- Dc
- Ec
- Db
- Eb
- Da
- Ea
- DS
- ES
- DP
- EP
- D= ((
- E= ((
- D) )
- E) )
- D-(
- E-(
- D] =
- E] =
- D=[@
- E=[@
- D!!!
- E!!!
- D!)
- E!)
- D)=
- E)=
- D!:
- E!:
- D>=
- E>=
- D<=
- E<=
- D(=
- E(=
- D, <=
- E, <=
- D:= $
- E:= $
- DZ
- EZ
- DY
- EY
- DW
- EW
- DV
- EV
- DU
- EU
- DT
- ET
- DR
- ER
- DQ
- EQ
- DO
- EO
- DN
- EN
- DL
- EL
- DK
- EK
- DJ
- EJ
- DI
- EI
- DH
- EH
- DG
- EG
- DF
- EF
- DE
- EE
- DD
- ED
- DC
- EC
- DB
- EB
- D9
- E9
- D8
- E8
- D7
- E7
- D6
- E6
- D5
- E5
- D4
- E4
- D3
- E3
- D2
- E2
- D1
- E1
- D0
- E0
- D"
- E"
- D!
- E!
- D.
- E.
- D,
- E,
- D
- E
- D~
- E~
- D}
- E}
- D|
- E|
- D{
- E{
- D`
- E`
- D_
- E_
- D^
- E^
- D]
- E]
- D\
- E\
- D[
- E[
- D?
- E?
- D>
- E>
- D=
- E=
- D<
- E<
- D;
- E;
- D:
- E:
- D/
- E/
- D...
- E...
- D--------------------------------------------------------------------------
- E--------------------------------------------------------------------------
- D-----------------------------------------------------
- E-----------------------------------------------------
- D---------------------------------
- E---------------------------------
- D---
- E---
- D-
- E-
- D+
- E+
- D*
- E*
- D)
- E)
- D(
- E(
- D'
- E'
- D&
- E&
- D%
- E%
- D#
- E#
- DM
- EM
- D:=+
- E:=+
- D) (=
- E) (=
- D)...
- E)...
- D= -
- E= -
- D<>
- E<>
- DX
- EX
- D=(
- E=(
- D, "+
- E, "+
- D:=(
- E:=(
- D9.
- E9.
- D8.
- E8.
- D7.
- E7.
- D6.
- E6.
- D5.
- E5.
- D4.
- E4.
- D3.
- E3.
- D2.
- E2.
- D1.
- E1.
- D= ^
- E= ^
- Ds
- Es
- D:=-
- E:=-
- D)*
- E)*
- D+(
- E+(
- D:=
- E:=
- Dp
- Ep
- D@
- E@
- DA
- EA
- D],
- E],
- D=^
- E=^
- D[]
- E[]
- D].
- E].
- D46..47 DW obere_Begrenzungen
- E46..47 DW offset_ptr_to_top_boundary_data
- Dwir WriteMode1 verwenden!
- Euse write mode 1!
- Dtive benoetigt wird und wenn ja, diese in Position bringen!
- Ein the right one!
- DTilezeile nicht gesondert gezeichnet werden
- Eneed to be drawn separately
- DDiese Ueberpruefung geschieht punktgenau und ist unabhaengig davon,
- EThis check is pixel-precise and doesn't depend on the sprites being
- DDie Routine erkennt automatisch, ob es sich bei dem File um ein ein-
- EThe routine automatically detects whether the specified file con-
- Dmin) und diese Farbe (in p) merken
- E(in min) and that color (in p)
- Dhier "statisch" aufgenommen!
- Ethus, here they were defined "static"
- Deigentlichen Spritedaten ignoriert und stattdessen die Hintergrunddaten
- Ewill be ignored; instead, the background data underneath the sprite's
- Dtine VOR dem Aufruf von ANIMATE auszufuehren, so dass evtl. Aenderungen
- Ecall this routine BEFORE calling ANIMATE. That way, evtl. changes to
- Dlich ausserhalb des sichtbaren Bereichs), so wird NIL zurueckgegeben!
- Eroutine will return NIL!
- DDie Linie wird NICHT automatisch in den Hintergrund uebernommen,
- EThe line will NOT automatically be taken over into the background
- Dmit Farbtabelle umsetzen
- Euse color lookup table to transform
- Dy in absolute Koordinaten umrechnen
- Etransform y into absolue coordinates
- Dx in absolute Koordinaten umrechnen
- Etransform x into absolute coordinates
- Dvirtuelle = absolute Koordinaten
- Evirtual = absolute coordinates
- Dvirtuelle -> absolute Koordinaten
- Evirtual -> absolute coordinates
- DTilezaehler in X-Richtung erhoehen
- Eincrement tile counter in X-direction
- DTileindex bestimmen:
- Edetermine tile index:
- Drightcut nach AH retten
- Esave rightcut to AH
- Drichtige Bitplane anwaehlen
- Eselect correct bitplane
- DTile wurde unten entsprechend geschnitten
- Etile has been clipped at its bottom accordingly
- DTile wurde rechts und unten entsprechend geschnitten
- Etile has been clipped at its right and bottom accordingly
- DTile wurde rechts und oben entsprechend geschnitten
- Etile has been clipped at its right and top accordingly
- DTile wurde rechts entsprechend geschnitten
- Etile has been clipped at its right accordingly
- DTile wurde links und unten entsprechend geschnitten
- Etile has been clipped at its left and bottom accordingly
- DTile wurde links und oben entsprechend geschnitten
- Etile has been clipped at its left and top accordingly
- DTile wurde links entsprechend geschnitten
- Etile has been clipped at its left accordingly
- DTile muss links, rechts (und unten) ganz auf dem Bildschirm sein
- ETile must be onscreen with its left, right (and lower) parts
- DDie Bitmap-Grafik in der Datei "name" wurde in die Seite "pa" geladen
- EThe bitmap-picture in file "name" has been loaded into page "pa"
- Ddieser Wert in Mikrosekunden
- Ethat value in microseconds
- Dmit %1111 anfangen
- Estart with %1111
- DMindestzykluszeit (in Mikrosekunden)
- Estore min. time for 1 cycle (micro-
- Dlinke obere Eck-Tile zeichnen:
- Edraw upper left corner-tile:
- DHintergrundfarbe holen...
- Eget background color...
- DHintergrund zeigen!
- Epoint to background!
- Dmin
- Emin
- Deine Zeile uebertragen
- Emove data of one row
- DDieses Fehlerquadrat in BX speichern
- EStore that square of error in BX
- DDie Grafikseite ist nun fertiggestellt und muss noch angezeigt werden:
- EThe graphic page is now ready to be displayed:
- DBitplane ins Highbyte bringen
- Ebring bitplane to highbyte
- DBitplane fuer Lesezugriff nach AX bringen
- Ebring bitplane for read access to AX
- Dbildschirmstartx retten
- Esave ScreenStartX
- DBildschirmkoordinaten berechnen
- Ecompute screen coordinates
- Dlinke obere Ecke des Zieles (in virtuellen Koordinaten)
- Eupper left corner of destination (virtual coordinates)
- DMindestzeit eines Animationszyklus in Millisekunden
- Emin. time for one animation cycle in milliseconds
- Deinzutragende Kennung fuer Bilderdateien
- Etag for picture file
- DDiese Routine verwendet SpriteLADEnummern!
- EThis routine uses spriteLOADnumbers!
- Dlicutoff_in_Punkten
- Elecutoff_in_points
- DDifferenz im Rotanteil berechnen
- Ecompute difference in red part
- DBit 6:=0: keine Doppelwortadressierung von Daten
- Ebit 6:=0 -> no double word addressing scheme in
- Dgister auswaehlen, den Wert aus dem zugehoerigen
- Ethe CRT-controller port, read out the according
- DBit 2:=1:kein odd/even-Mechan.
- Ebit 2:=1 -> no odd/even-scheme
- DBit 3:=0:4 Planes nicht chainen
- Ebit 3:=0 -> don't chain planes
- DMit BIOS Grafikmodus $13 (=320x200x256) setzen
- Euse BIOS to set graphic mode $13 (320x200x256)
- D1-PAGE = Grafikseite, auf der gezeichnet werden soll
- E1-PAGE = graphic page to be drawn upon
- D- viele unterstuetzende Routinen: zeichnen von Linien (mit eingebautem
- E- several supporting routines to: draw lines (with built in clipping-
- DVerwendete Register: AX und SI
- Eused registers: AX and SI
- D:= $80
- E:= $80
- D15, d.h.: weiss
- E15, that is: white
- Dkleiner Einschub: anhand des Modusbytes des Sprites entscheiden, ob
- ENow: look at sprite's mode byte and determine if an other than the
- DLB-Startadress-Register
- ELB-startaddress-register
- Dfuer andere Raender
- Efor other edges
- Dauch nach [zeilenadr]
- Estore it in [zeilenadr], too
- DQuellzeiger
- Esource pointer
- Dnumber
- Enumber
- Dfuer:
- Efor:
- D- verschiedene Spritedarstellungsmoeglichkeiten:
- E- several sprite display methods available:
- Devtl. Verschiebung korrigieren
- Eevtl. correct displacement
- DoffsetXPix:=leftcut:=StartVirtualX AND $F
- EoffsetXPix:=leftcut:=StartVirtualX AND $F
- DoffsetYPix:=topcut:=StartVirtualY AND $F
- EoffsetYPix:=topcut:=StartVirtualY AND $F
- Daktuelle Ausgaberichtung
- Eactual output direction
- D28..29 DW ? ; | ueberlappy_1
- E28..29 DW ? ; | ueberlappy_1
- DTRUE/FALSE, falls "GetImage" clippen musste
- ETRUE/FALSE, if "GetImage" had to clip image
- D(x,0) =
- E(x,0) =
- Dshort
- Eshort
- DMOV AX,1017h ;lese Palettenregister
- EMOV AX,1017h ;read palette registers
- Dfuer jede oben abgeschnittene Zeile 4 Bytes
- Eadd 4 bytes to the (offset part of the)
- Dausgelesen werden, wenn der Grafikmodus
- Eread out directly from the VGA card not
- Dausgelesen mithilfe des BIOS-Aufrufs:
- Eread out by using the VGA-BIOS-calls:
- DPunkt1 rechts des Windows?
- Epoint1 right of window?
- DPunkt1 oberhalb des Windows?
- Epoint1 above window?
- DPunkt1 links des Windows?
- Epoint1 left of window?
- DPunkt unterhalb des Windows?
- Epoint below window?
- DNun noch die Kacheln links und/oder rechts entlang des Bildschirmrandes:
- ENow work on the tiles at the left and/or right edge of the screen:
- Dfuer jede Zeile 4 Bytes
- E4 bytes for each row
- DNummer des aufgetretenen Fehlers
- Enumber of the occurred error
- Dwuerde codiert werden als:
- Ewould be coded as:
- Dlicutoff mod 4 gibt an, in welcher Reihenfolge die Punkte aus dem Heap
- Elicutoff mod 4 determines the order in which the points must be read
- DTP Daten
- ETP's data
- DTP's Datensegment wiederherstellen
- Erestore TP's data segment
- DBP = endy, SI=[@max_Breite+1] = max_Breite_in_4er_Gruppen,
- EBP = endy, SI=[@max_Breite+1] = max_width_in_groups of 4,
- D(Planes abwechselnd von oben nach unten lesen!)
- E(read planes top-down, in alternating order!)
- DBP retten
- Esave BP
- DBP nachher wieder poppen!
- Epop BP in the end!
- DBP direkt verwenden
- Euse BP directly
- DBP auf die richtige Groesse bringen
- Eset BP to proper size
- D2.Parameter s2 vom Stack holen
- Eget 2nd parameter s2 from stack
- D1.Parameter s1 vom Stack holen
- Eget 1st parameter s1 from stack
- DBP-Register retten
- Esave BP-register
- DAbweichungsmass steht nun in AX!
- Emeasure of difference is kept in AX
- DDIV
- EDIV
- Dstartx
- Estartx
- D(x1,y1) =
- E(x1,y1) =
- DAlle Bildschirmteile, die ausserhalb des durch SetBackground-
- Eall screen parts, which lie outside the window specified by
- Daufgerundet
- Erounded up
- Dzuerst
- Efirst
- Daus dem File gelesene Farbpalette, evtl. ergaenzt
- Ecolor palette read from the file, evtl. filled up
- Dfuer HB/LB auf selber Seite geschieht:
- Efor HB/LB takes place while displaying the same page:
- Dout: -
- Eout: -
- Dzufuehren, da die gezeichnete Linie sonst sofort wieder verschwindet)
- Ebecause otherwise, the drawn line will vanish at once!)
- Dzufuehren, da der gezeichnete Punkt sonst sofort wieder verschwindet)
- Ebecause otherwise, the drawn point will vanish at once!)
- DNur wenn "was_cut" TRUE ist, sind die Werte der globalen "..._cut"
- EOnly if "was_cut" is set to TRUE, the (global) "..._cut" variables
- Dnutzt aus, dass AX zufaelligerweise gerade 4 ist
- Etake advantage of AX having the value 4!
- Dout:
- Eout:
- DNun werden iterativ die ueberlappenden Zeilen und Spalten exakt geprueft
- ENow check the overlapping rows and columns more closely by iteration:
- DDummywert
- Edummy value
- Dwurden auf die Grafikseite 0 eingestellt
- Ehave been set to graphic page 0
- Dwurde auf STATIC gesetzt
- Ehas been set to STATIC
- Dwurde auf die Hintergrundseite gesetzt
- Ehas been set to the background page
- Daus der Tabelle "ShadowTab" ersetzt.
- Efrom the table "ShadowTab"
- Dnur geladen, nicht gesetzt!
- Epalette will only become loaded, not actually set!
- DJede dieser Routinen MUSS EXAKT 16 Bytes lang und VOLL RELOKATIBEL
- EEvery routine MUST CONSIST OF EXACTLY 16 bytes and BE FULLY RELO-
- DMethode, die fuer Sp momentan gesetzt ist: Display_NORMAL,
- Eactually set display method for sprite Sp: Display_NORMAL,
- D#7
- E#7
- DKopie von x nach BX
- Eplace a copy of x in BX
- Dwobei WindowY2=YMAX
- Ehere, WindowY2=YMAX
- Dwobei WindowX2=XMAX
- Ehere, WindowX2=XMAX
- Dstarty
- Estarty
- D(x2,y2) =
- E(x2,y2) =
- DBloecke
- Eblocks
- Dalle Spritedaten auf den Heap, und zwar derart, dass die Adresse
- Esprite data into the heap, in a way such that the address always
- Dglobale Fehlervariable
- Eglobal error variable
- Delse
- Eelse
- Dflickerfreie Animation durch page-flipping, Auswertung von Retrace-
- Eflickerfree animation by using page-flipping, watching retrace
- Dfuer blau
- Efor blue
- Dsicher ist sicher!
- Ejust to be sure!
- Dhier:
- Ehere:
- Dright_cut,top_cut,bottom_cut = dto., fuer andere Raender
- Eright_cut,top_cut,bottom_cut = dto., for the other boundaries
- D6..7 DW Plane_3_Daten
- E6..7 DW offset_ptr_to_plane3_data
- DDI = starty, BX = SpriteY, DX=[@akt_SpriteX+1] = SpriteX,
- EDI = starty, BX = SpriteY, DX=[@akt_SpriteX+1] = SpriteX,
- D- Sprites koennen pixelweise als durchsichtig gegenueber dem Hintergrund
- E- sprites can be declared to be transparent with regard to the background
- DES:BX = (Zeiger auf Zieladresses) zu bringen sind;
- EES:BX = (pointer to destination address)
- DBytes_je_Plane3_Zeile
- Ebytes_per_plane3_row
- DBytes_je_Plane2_Zeile
- Ebytes_per_plane2_row
- DBytes_je_Plane1_Zeile
- Ebytes_per_plane1_row
- DBytes_je_Plane0_Zeile
- Ebytes_per_plane0_row
- DCycleTime
- ECycleTime
- D16 Punkte = 4 Bytes
- E16 pixels = 4 bytes
- Dmitgetauscht werden muss!
- Eto accomplish that!
- Deigentlich: (x MOD XTiles)
- Eto be exact: (x MOD XTiles)
- Deinen Spritezyklus
- Ethey make up a sprite cycle
- DDisplay_FAST, Display_SHADOW bzw. Display_UNKNOWN, wenn das
- EDisplay_FAST, Display_SHADOW or Display_UNKNOWN, if the
- DDie Bitmaske fuer den richtigen Schreibe-Planezugriff wurde bereits
- EThe proper bitmask for selecting the correct write plane has al-
- Dtiles
- Etiles
- Dlinke obere Ecke des zu sichernden Bildausschnittes
- Eupper left corner of the area which shall be stored
- Dsignalen und Verwendung eines speziellen VGA-256-Farbengrafikmodus
- Esignals and usage of a special 256 color mode of the VGA
- DNextSprite[SpriteN[?]]
- ENextSprite[SpriteN[?]]
- Dmax_Breite_in_4er_
- Emax_width_in_groups_of_4
- DCL
- ECL
- DBL
- EBL
- DAL
- EAL
- DPAGESIZE
- EPAGESIZE
- DPAGE
- EPAGE
- DBACKGROUNDMODE
- EBACKGROUNDMODE
- DBACKGNDPAGE
- EBACKGNDPAGE
- DFALSE
- EFALSE
- Dx:=((x AND $FFF0)-BackX1) DIV 16 (nicht SHR 4)!
- Ex:=((x AND $FFF0)-BackX1) DIV 16 (not: SHR 4)!
- DAND
- EAND
- DDS = ^Spritedaten, ES = ^Grafikseite
- EDS = ^sprite data, ES = ^graphic page
- D(Segment-)Zieladresse ist aktive Grafikseite
- E(segment part of) dest. address is active page
- DES:=Segment_Adr[1-PAGE], denn 1-PAGE=sichtbare Seite
- EES:=Segment_Adr[1-PAGE], because 1-PAGE=visible page
- DES:DX:=y2un[Spalte]
- EES:DX:=y2un[column]
- DES:DX:=x2re[Zeile]
- EES:DX:=x2re[row]
- DES:DX:=x2li[Zeile]
- EES:DX:=x2li[row]
- DDS:CX:=y1un[Spalte]
- EDS:CX:=y1un[column]
- DDS:CX:=x1re[Zeile]
- EDS:CX:=x1re[row]
- DDS:AX:=x1li[Zeile]
- EDS:AX:=x1li[row]
- DIF PAGE=0 THEN PAGE:=1 ELSE (PAGE=1) PAGE:=0
- EIF PAGE=0 THEN PAGE:=1 ELSE (PAGE=1) PAGE:=0
- DPlane1
- EPlane1
- Dwird von TP wiederhergestellt
- Ewill be restored by TP automatically
- Drigh_cut
- Eright_cut
- Ddirekt
- Edirectly
- DTile muss ganz auf dem Bildschirm sein, es findet
- Etile must be completely onscreen, there will be
- DHier gilt: die beiden Punkte wurden auf den sichtbaren Bereich zurecht-
- Eprecondition here: both points have been clipped to the visible window;
- Deiner Weitersetzung um 4 Bildpunkte entspricht
- Ecorresponds to an ajustment of 4 points
- Ddie letzte Hex-Ziffer $0 ist!
- Elast hex-digit is $0!
- DBitplane 3 zu Bitplane 0 muss dabei die Start-
- Efrom bitplane 3 to bitplane 0, then the start-
- Dbis rechte obere Ecke erreicht
- Euntil upper right corner has been reached
- Dgilt wg. TimeFlag:=$80 die Zeitbedingung noch nicht!
- Efor the very first animation cycle, yet!
- Dfindet jedoch keine Ueberpruefung statt!
- Ethe routine doesn't check that!
- Dwird beim Verlassen der Prozedur gebraucht!
- Ewill be needed when leaving the procedure!
- DDie Grafik der Hintergrundseite wurde in der Datei "name" abgelegt
- EThe picture of the background page has been stored as file "name"
- DDie Grafik auf Seite "pa" wurde in der Datei "name" als Bitmap abgelegt
- EThe picture at page "pa" has been stored (as bitmap) to file "name"
- DTile wurde auf aktueller Seite PAGEADR gezeichnet
- Etile has been drawn on actual page PAGEADR
- DTile wurde auf aktueller Seite PAGEADR bei (0,0) gezeichnet
- Etile has been drawn at (0,0) on the actual page PAGEADR
- DDie Grafikseite BACKGNDPAGE wurde mit der Farbe "Color" gefuellt
- EThe graphic page BACKGNDPAGE has been filled with color "Color"
- Ddirekt zu @LineReady verzweigt!
- E@LineReady, instead!
- Drightcut
- Erightcut
- DDie Routinen koennen sicher sein, dass CX<>0 ist
- EThe routines can rely upon CX being <>0
- Dhit2yfirst
- Ehit2yfirst
- Dhit2xfirst
- Ehit2xfirst
- Dhit1yfirst
- Ehit1yfirst
- Dhit1xfirst
- Ehit1xfirst
- Dwird ueber Stack adressiert!
- Ewill be addressed via SS!
- Dbisher gefundenes minimales Fehlerquadrat
- Emin. square of error (up to now)
- DDiff ≈±2^6 -> Quadrat ≈±2^12 -> 3*Quadrat<MaxInt
- EDiff ≈±2^6 -> square ≈±2^12 -> 3*square<MaxInt
- DBP:=16+3-rightcut, denn die Zahl der Bytes je Zeile fuer
- EBP:=16+3-rightcut, because the number of bytes per row
- DBP:=16+3-leftcut, denn die Zahl der Bytes je Zeile fuer
- EBP:=16+3-leftcut, because the number of bytes per row
- D(virtuelle) Startkoordinaten des auszugebenden Textes
- E(virtual) starting coordinates for the text to be written
- Dbringen, AUF KEINEN FALL AUFRUFEN!!!
- EDO NOT TRY TO CALL THIS "PROCEDURE"!!!
- Daktuelle Grafikseite(nadresse),auf der gezeichnet werden soll
- Eactual graphicpage(address) on which to draw upon
- Daktuelle X-Koord. auch weitersetzen: x:=x+16
- Eincrement actual X-coordinate, too: x:=x+16
- Dalle Spalten durch?
- Eall columns done?
- Dalle Zeilen durch?
- Eall rows done?
- Dalle Bytes durch?
- Eall bytes done?
- D(Farbe 0 ignorieren, da "durchsichtig")
- E (ignore color 0 as "transparent")
- Dalso kein Overflow moeglich
- Eso no overflow is possible
- DPlane i berechnet sich zu (16+3-i-rightcut) SHR 2
- Eof plane i is computed by (16+3-i-rightcut) SHR 2
- DPlane i berechnet sich zu (16+3-i-leftcut) SHR 2
- Eof plane i is computed by (16+3-i-leftcut) SHR 2
- DPlane2
- EPlane2
- D=yt*XTiles+(xt-1)
- E=yt*XTiles+(xt-1)
- DBytes_zu_moven fuer i=1
- Ebytes_to_move for i=1
- Dum wieviel Punkte der Ausschnitt links ausserhalb des Bild-
- Ehow many pixels at the left edge of the image lie outside
- Dtionszyklus (dann aber permanent) (Deshalb ist es sinnvoll, diese Rou-
- Eplace (but then, it remains permanent) (For that reason, you should
- DSCROLLADR wurde auf die scrollbare Hintergrundseite gesetzt
- ESCROLLADR has been set to the scrollable background page
- Dja
- Eyes
- Dpa
- Epa
- DSpriteX
- ESpriteX
- Dalso number+i
- Eis, number+i
- DPlane3
- EPlane3
- D SpriteN[s1],SpriteX[s1],SpriteY[s1] = Spritedaten von Sprite s1
- ESpriteN[s1],SpriteX[s1],SprizeY[s1] = sprite data of sprite s1
- DES:BX=Zeiger auf TimeFlag, Bit 7=0/1
- EES:BX=pointer to TimeFlag, bit 7=0/1
- Dim CRT-Controller das underline-location-Re-
- Eaddress the underline-location-register at
- DBP=16+3-leftcut
- EBP=16+3-leftcut
- DBP=16+3-rightcut
- EBP=16+3-rightcut
- D; jetzt fuer temporaere Variablen reservierter
- E; now follows the scratch area reserved for temporary
- Dof ASM
- Eof ASM
- D48..49 DW untere_Begrenzungen
- E48..49 DW offset_ptr_to_bottom_boundary_data
- DOktanden berechnen
- Ecompute octant
- D#8
- E#8
- Daktuelle Textausgabefarben
- Eactual text color
- Daktuelle Schreibplane waehlen
- Echoose plane to write at
- Daktuelle Schreibplane merken
- Esave actual write plane
- Daktuelle Leseplane waehlen
- Echoose plane from which to read
- Daktuelle Leseplane 0 waehlen
- Echoose plane 0 for reading
- DSpriteX[],SpriteY[] =
- ESpriteX[],SpriteY[] =
- DSpriteY
- ESpriteY
- D- Spritebewegung pixelweise (und nicht nur byteweise) moeglich
- E- sprite movement in any pixel-increments you want
- DDS:SI = (Zeiger auf Quelladresse) nach...
- EDS:SI = (pointer to source address) to...
- DPlane4
- EPlane4
- D+(licutoff_in_Punkten+i) DIV 4
- E+(lecutoff_in_points+i) DIV 4
- D+(licutoff_in_Punkten+1) DIV 4
- E+(lecutoff_in_points+1) DIV 4
- D SpriteN[s2],SpriteX[s2],SpriteY[s2] = Spritedaten von Sprite s2
- ESpriteN[s2],SpriteX[s2],SpriteY[s2] = sprite data of sprite s2
- D[@Starty_2+1] = starty*2
- E[@Starty_2+1] = starty*2
- DSTATIC/SCROLLING fuer festen/scrollbaren Hintergrund
- ESTATIC/SCROLLING for solid/scrollable background
- DDieser Modus ist verschieden vom Modus $13 der VGA!!!
- EThis mode is different from mode $13 of the VGA-BIOS!!!
- Dalle Sprites, zerlegt diese in Tiles und legt sie in der 4.Grafik-
- Esprites, splits them into tiles and stores them into the 4th graphic
- D012A: STOSW
- E012A: STOSW
- DFuellfarbe fuer die Hintergrundseite BACKGNDPAGE
- Ecolor for filling the background page BACKGNDPAGE
- DMOD
- EMOD
- Dhier: BP=max(x1last,x2last) (=maxx)
- Ehere: BP=max(x1last,x2last) (=maxx)
- Dhier: SI=min(x1,x2) (=minx)
- Ehere: SI=min(x1,x2) (=minx)
- Dminx
- Eminx
- Dbildschirmstartx
- EScreenStartX
- D[@max_Breite+1] =
- E[@max_Breite+1] =
- D[@max_Breite+1]
- E[@max_Breite+1]
- Drand
- Erand
- DVar., die durch "GetImage" gesetzt werden und
- Evariables set by "GetImage"; if "was_cut" has
- DFarben gewuenscht sind!
- Edarker colors only!
- Dfalls Ausschnitt ueber rechten Bildschirmrand
- Eif image would spread over the right screen
- DDatei existiert nicht oder nicht unter diesem Pfad
- EFile doesn't exist or at least not with that path
- D(Deshalb ist es sinnvoll, diese Routine NACH Aufruf von ANIMATE aus-
- E(For that reason, you should call this routine AFTER calling ANIMATE
- DAlgorithmus der dafuer benutzt werden soll
- Ealgorithm which shall be used
- Dalter Grafikmodus, auf den zurueckgeschaltet werden soll
- Eold graphic mode you want to be switched back at
- D013B: IN AL,DX
- E013B: IN AL,DX
- D013A: INC DX
- E013A: INC DX
- D0118: INC DX
- E0118: INC DX
- Dhier: AX=max(y1last,y2last) (=maxy)
- Ehere: AX=max(y1last,y2last) (=maxy)
- Dminy
- Eminy
- Dnaechste
- Enext
- Dnaechste Zeile
- Enext row
- Dnach letzter Grafikzeile
- Eto last graphic row
- D(z.B.: Pixel (1,5,9,...),(2,6,10,...),(3,7,11,...)
- E(e.g.: pixels (1,5,9,...),(2,6,10,...),(3,7,11,...)
- DBackgroundmode
- EBackgroundmode
- Dnaechstes Byte
- Ework on next byte
- Dhalb des Bildes (also zurueckgegebener Zeiger=NIL), dann liefert die
- E_completely_ offscreen (this means: returned ptr=NIL), then the
- DDa als Hintergrundseite BACKGNDADR verwendet wird, ist die
- EBecause BACKGNDADR is used as background page, calling
- DPage-Wert *2 (da Worteintraege!)
- Epage value *2 (word-sized entries!)
- Dnaechste Zeile (-> Word-Werte!)
- Enext row (-> word-sized values!)
- Dnaechste Schreibplane:
- Enext write plane:
- Dnaechste Leseplane:
- Enext read plane:
- Dmax_Breite
- Emax_Breite
- Dname
- Ename
- DDass BP "3 zu gross ist" stoert nicht, da dieser Code nur ausge-
- EBP being "3 units to big" doesn't matter, because this code will
- Dnaechste Farbe
- Enext color
- DZahl der bisher eingelesenen Paletteneintraege
- Enumber of palette entries read in til now
- Dund
- Eand
- DAnimate loescht den Inhalt der alten Grafik (mithilfe der Hintergrund-
- EAnimate erases the old contents of the page (using the background page
- Dansonsten: Treffer in X-Ri., jetzt noch Y-Ri. pruefen (analog zu oben) und
- Eotherwise: collision in X-direction, now check Y-dir. also (as above) and
- DInaktive Sprites (SpriteN[s?]=0) koennen nicht miteinander kollid.
- Einactive sprites (SpriteN[s?]=0) cannot collide
- Dkleine Pseudoprozedur, um die Umsetztabelle fuer die Bitmaske auch im
- ESmall pseudo-procedure to store lookup table for the bitmasks into
- Dplayenable-Signal und schaltet dann auf die so fertiggestellte Seite um
- Eenable signal and switches the display to that now completed page
- Dnur noetig fuer Compilerschalter G+!
- Eonly necessary for compiler switch G+!
- Dhier: SI (DI) = Zeiger auf 1. (2.) Sprite in ?WRTD[..] ,
- Ehere: SI (DI) = pointer to 1. (2.) sprite in ?YWRTD[..],
- DAnzahl Kreise
- Enumber of circles
- DAnzahl Bildschirmpunkte
- Enumber of screen pixels
- DAnzahl Aufrufe der Verzoegerungsschleife
- Enumber of executions of the delay loop
- Dung zurueckgeben, da nur dunklere
- Edifference, as we are looking for
- Dund (0,4,8,...); letztere Bitplane wird um 1 Byte
- Eand (0,4,8,...); the last bitplane needs a cor-
- Din der Farbe COLOR gezeichnet; die Routine fuehrt dabei selber die
- Eusing the color COLOR; the routine will take care of transforming
- DAnzahl zu sichernde Bytes je Zeile
- Enumber of bytes to store for each row
- Duntere
- Elower
- Ddabei ist WindowX1 = 0
- Ehere, WindowX1 = 0
- Dkarte von: Kai Rohrbacher, 1988-1991, Turbo-Pascal 6.0
- Ecard by: Kai Rohrbacher, 1988-1991, Turbo-Pascal 6.0
- Dnoch genug Platz da?
- Eenough space left?
- D8..9 DW Breite (in 4er-Gruppen)
- E8..9 DW width (in groups of 4) (in German: "Breite")
- Dstartx:=sprite[WORD PTR sprite[L]+
- Estartx:=sprite[WORD PTR sprite[L]+
- Dalten Schirminhalt nach links schieben:
- Escroll old screen contents to the left:
- Dalten Schirminhalt nach rechts schieben:
- Escroll old screen contents to the right:
- Dalle noch relevanten Register retten
- Esave all registers needed later
- Dalten Inhalt nach oben rollen:
- Escroll old contents upwards:
- Dalle 4 Planes gleichzeitig ansprechen
- Eaccess all 4 planes at once
- Dals Zielindex verwendet werden kann
- Eused for accessing the target address
- Dals Schreibplane anwaehlen
- Euse it as write plane
- Dals neue SpriteN[?] uebernehmen
- Euse it as new SpriteN[?] value
- DPlane auswaehlen
- Echoose plane
- DPlane anwaehlen
- Eselect plane
- DFlag zuruecksetzen
- Ereset Flag
- Dalten Lese-/Schreibmodus setzen
- Erestore old read-/write mode
- Dalten Lese-/Schreibmodus merken
- Esave old read-/write mode
- Dals Ergebnis 1 = TRUE zurueckgeben
- Ereturn 1 = TRUE as result
- Dals Ergebnis 0 = FALSE zurueckgeben
- Ereturn 0 = FALSE as result
- Dalle 4 Planes gleichzeitig beschreiben
- Ewrite to all 4 planes simultaneously
- Dalle 4 Planes gleichzeitig bearbeiten
- Ework on all 4 planes simultaneously
- Dalle 256 Default-Farben durchsehen
- Ewalk through all 256 default colors
- Dalten Inhalt von BP wiederherstellen
- Erestore old contents of BP register
- Dplanes) auf 0 setzen
- Ebitplanes) to 0
- DAlles ging gut: Palette zurueckgeben
- Eeverything went alright: return palette
- D0129: REPNZ
- E0129: REPNZ
- Dum 1 erhoehen MOD 4
- Eincrement by 1 MOD 4
- DSinnvoll ist eigentlich nur pa=BACKGNDPAGE
- Emost often, you will use pa=BACKGNDPAGE
- Dbis zum naechsten Animationszyklus (= Aufruf von ANIMATE)
- Eonly until the next animation cycle (=till calling ANIMATE)
- DEin Sprite kann nicht mit sich selbst kollidieren (s1=s2 -> FALSE)
- EA sprite can't collide with itself, (thus: s1=s2 -> FALSE)
- DDa als Hintergrundseite BACKGNDADR verwendet wird, ist die Verwendung
- EBecause BACKGNDPAGE is used as background page, calling this
- DFarbe 0 ist auch fuer Schatten durchsichtig
- Ecolor 0 is transparent for shadows, too
- DBH=0 -> BX=Zeichenseite
- EBH=0 -> BX=drawing page
- DBH=0 -> BX = Grafikseite
- EBH=0 -> BX = graphic page
- DAnzahl der aus dem File gelesenen Tiles (0 = Fehler trat auf)
- Enumber of the tiles read in from the file (0 = error occured)
- DAnzahl der aus dem File gelesenen Sprites (0 = Fehler trat auf)
- Enumber of the sprites read in from the file (0 = error occured)
- DBackX1
- EBackX1
- DBackY1
- EBackY1
- Dja, neue Koordinaten berechnen: y1:=y1+(y2-y1)/(x2-x1)*(WindowX1-X1)
- Eyes, compute new coordinates: y1:=y1+(y2-y1)/(x2-x1)*(WindowX1-X1)
- Dja, berechne x1:=x1+(x2-x1)/(y2-y1)*(WindowY1-y1), y1:=WindowY1
- Eyes, compute x1:=x1+(x2-x1)/(y2-y1)*(WindowY1-y1), y1:=WindowY1
- Din: (x,0) =
- Ein: (x,0) =
- Dof FOR
- Eof FOR
- Daktuelle Zeichenfarbe sei Weiss
- Eset actual drawing color to white
- DExistiert das Sprite noch nicht oder ist der Modus nicht er-
- EIf the sprite doesn't exist yet (or the mode isn't allowed),
- D199
- E199
- D#9
- E#9
- DDS:SI = Zeiger auf Daten, ES:DI = Zieladresse dafuer auf dem Schirm,
- EDS:SI = pointer to data, ES:DI = dest. address on screen for them
- D- maximale Spritegroesse 64k
- E- maximal size of each sprite = 64k
- DDX
- EDX
- DBX
- EBX
- DCX
- ECX
- DAX
- EAX
- Dnach
- Eto
- Danderenfalls keine Zeitueberwachung!
- Eotherwise: no timing mechanism!
- Dja, berechne: y1:=y1+(y2-y1)/(x2-x1)*(WindowX2-X1), x1:=WindowX2
- Eyes, compute y1:=y1+(y2-y1)/(x2-x1)*(WindowX2-X1), x1:=WindowX2
- Dja, berechne x1:=x1+(x2-x1)/(y2-y1)*(WindowY2-y1), y1:=WindowY2
- Eyes, compute x1:=x1+(x2-x1)/(y2-y1)*(WindowY2-y1), y1:=WindowY2
- Din: (x1,y1) =
- Ein: (x1,y1) =
- DAnzahl der zu vergleichenden Zeilen -1
- Enumber of rows -1 to compare
- DAnzahl der zu vergleichenden Spalten -1
- Enumber of columns -1 to compare
- Dabsolute Koord.
- Eabsolute coord.
- Dabgeschnitten sind:
- Enot at the sides!):
- D18..19 DW ? ; licutoff_ | hit1xfirst
- E18..19 DW ? ; licutoff_ | hit1xfirst
- D4*8000h physikalische Woerter (wg. den 4 Bit-
- Ewords = 4*8000h physical words (because of 4
- DCRT-Controller
- ECRT-Controller
- Dsprite[WORD PTR (licutoff_...)]
- Esprite[WORD PTR (licutoff_...)]
- Dsprite[WORD PTR licutoff_...]
- Esprite[WORD PTR licutoff_...]
- D"Succ", um BackTile[0] freizuhalten
- E"succ", to hold free BackTile[0]
- DDS wiederherstellen
- Erestore DS
- DcenterX
- EcenterX
- DdeltaX
- EdeltaX
- Dfalls Abweichung kleiner als bisheri-
- Eif difference is less than the present
- DDas ist zugleich die (Offset-)Quelladresse in Page 3
- EThat's also the offset part of the source ad. in page3
- Doberste Tilezeile:
- Etop most tile row:
- Dobere
- Eupper
- Dobere linke Bildschirmecke
- Eupper left image corner
- DModus 0 betrachtet die Farbe 0 als durchsichtig fuer den Hintergrund
- Emode 0 considers color 0 being transparent for background data
- Dmod
- Emod
- DCRTAddress
- ECRTAddress
- D- Routine zur exakten Feststellung der Kollision zweier Sprites
- E- pixel precise hit-detection routine for sprite collisions built in
- D(=x2last)
- E(=x2last)
- DcenterY
- EcenterY
- DdeltaY
- EdeltaY
- Danzuzeigende Bildschirmseite (0..3)
- Egraphic page to be shown (0..3)
- Dvon vorletzter Grafikzeile
- Efrom last but one graphic row
- DModus 2 ist fuer "Schatten" und aehnliches gedacht: hierbei werden die
- Emode 2 is thought for "shadows" and the like: the sprite's data itself
- Dmode
- Emode
- DHoehe
- Eheight
- Dab jetzt: BX=0 !
- Efrom now on: BX=0!
- Dmomentan aktuelle Palette
- Eactually set palette
- DModus 3 ist ebenfalls fuer "Schatten" gedacht: hierbei werden alle Sprite-
- EModus3 is thought for "shadows", too: in this mode, all sprite
- DTRUE/FALSE fuer "Sprites kollidieren"/"Sprites kollidieren nicht"
- ETRUE/FALSE for "sprites collide"/"sprites do not collide"
- DTRUE/FALSE, wenn die Maschine (mindestens) ein AT ist
- ETRUE/FALSE, if the machine is (at least) an AT
- DClipping-Algorithmus), Punkten und Grafik-Text (dto.), automatische Ver-
- Ealgorithm), points and graphic-text (incl. clipping), automatic heap
- DPlane0 = x,x,x,x,r,r
- Eplane0 = x,x,x,x,r,r
- DUmrechnung der angeg. Koordinaten in absolute Bildschirmkoordinaten
- Ethe coordinates to absolute screen coordinates and evtl. necessary
- Dimmer auf eine Segmentgrenze fällt. Diese Anfangsadressen werden
- Elies on a segment (=paragraph) boundary. These starting addresses
- Dum 1 Adresse weitersetzen!
- Eneeds mending: increment address by 1!
- Dim Map-Mask Register alle 4 Ebenen selektieren
- Euse MapMask register to select all 4 planes
- Dim MapMask Register alle 4 Ebenen selektieren
- Euse MapMask register to select all 4 planes
- Dim Bildschirmspeicher durchfuehren
- Evideo ram
- Dim Sequenzer das Speichermodusregister auswaehlen
- Eselect memory-mode-register at sequencer port
- Dimmer auf eine Segmentgrenze faellt. Diese Anfangsadressen werden
- Elies on a segment (=paragraph) boundary. These starting addresses
- DFarbe (0..255)
- Ecolor (0..255)
- Dnormal : durchsichtig fuer Farbe 0
- Enormal : transparent for color 0
- Dwobei WindowY1=0
- Ehere, WindowY1=0
- DoldMode = alter Grafikmodus
- EoldMode = old graphicmode
- Dmationszyklus (dann allerdings permanent)! (Deshalb ist es sinnvoll,
- Eplace (but then, it stays permanent)! (For that reason, you normally
- DDa eine Kachel 16x16 Punkte gross ist, muessen die Sprites ein Viel-
- EBecause a tile consists of 16x16 points, the sprites must be a mul-
- DTabelle der Grafikzeilen-Startadressen (Offset-Anteil)
- Etable with graphic rows starting addresses (offset part)
- Dja, Flag fuer "Punkt unterhalb des Fensters" bel.
- Eyes, don't change flag for "point is below window"
- Dja, Flag fuer "Punkt oberhalb des Fensters" bel.
- Eyes, don't change flag for "point is above window"
- DYaktuell
- EYactual
- Dpal
- Epal
- DRand: y:=((y AND $FFF0)-BackY1) DIV 16
- Etop boundary: y:=((y AND $FFF0)-BackY1) DIV 16
- DAH:=leftcut mod 4
- EAH:=leftcut mod 4
- DKompensation in Diagonalrichtung
- Ecompensation in diagonal direction
- DKoordinaten zulaessig
- Ecoordinates admissible
- Dabzuspeichernde Seite (0..2)
- Epage to store (0..2)
- Dabzuspeichernde Seite (=2)
- Epage to be saved (=2)
- Dnoch ein einzelnes Byte uebrig?
- Edoes a single byte remain?
- Ddoch, fertig!
- Ebut yes, nothing to do!
- Dhoehe1+hoehe2-(maxy-miny+1)-1
- Ehoehe1+hoehe2-(maxy-miny+1)-1
- Dhoehe1
- Ehoehe1
- DCode1
- ECode1
- DPAGEADR
- EPAGEADR
- DBACKGNDADR
- EBACKGNDADR
- Dals Defaulttile fuer den scrollbaren Hintergrund wurde #0 gesetzt
- Etile #0 has been set as default tile for scrollable background
- DIF offscreenFlag OR (xt<0) OR (xt>=XTiles)
- EIF offscreenFlag OR (xt<0) OR (xt>=XTiles)
- DIF offscreenFlag OR (xt-1<0) OR (xt-1>=XTiles)
- EIF offscreenFlag OR (xt-1<0) OR (xt-1>=XTiles)
- D4 Fuellbytes; schneller als 4 NOPs
- E4 filling bytes; faster than 4 NOPs
- D- Sprites koennen ihre Farbe in Abhaengigkeit ihres momentanen Hinter-
- E- sprites can change their color depending on the underlying background
- DES:DI=Zeiger auf Grafikadresse von Punkt1, DX=Zugriffsmaske dafuer
- EES:DI=pointer to graphic address of point1, DX=access mask for it
- DES:DI = Zeiger auf den besorgten Speicher
- EES:DI = pointer to the acquired memory
- DDS:SI = Zeiger auf erstes zu speicherndes Byte; ES:DI = Zieladr. dafuer
- EDS:SI = pointer to first byte to store; ES:DI = its target address
- DDS:SI := ES:DI (Quellzeiger:=Zielzeiger)
- EDS:SI := ES:DI (source ptr:=dest. ptr)
- DSinnvolle Werte fuer "pa" sind nur 0 und 1 (und evtl. BACK-
- ESensible values for "pa" are either 0 or 1 (and evtl. BACK-
- Dungefaehre Zeit (in Millisekunden), in der das geschehen soll
- Etime (in millisceconds) for this action (approx.)
- DAnzahl Pixel
- Enumber of pixels
- DDI:=y1
- EDI:=y1
- DCode2
- ECode2
- Dhoehe2
- Ehoehe2
- D100h-DL = gefundene optimale Farbe
- E100h-DL = optimal color found
- DREP MOVSB
- EREP MOVSB
- D- Verwaltung von bis zu 32767 verschiedenen Sprites (Voreinstellung: 1000)
- E- up to 32767 different sprites (default: 1000)
- DSchaltet der Benutzer (durch Angabe von milliseconds=0) die
- EIf you don't use the timing mechanism (by supplying a value
- Dschirm ragte)
- Eof the screen)
- DAchtung! Da PAGEADR immer die nichtsichtbare Grafikseite
- EAttention! As PAGEADR always specifies the NOT visible gra-
- Dy1un+y1 (=a)
- Ey1un+y1 (=a)
- Dx1re[Zeile]+x1 (=a)
- Ex1re[row]+x1 (=a)
- D=yt*XTiles+xt
- E=yt*XTiles+xt
- D+yoffset
- E+yoffset
- DDisplay_NORMAL
- EDisplay_NORMAL
- Dnach rechts scrollen
- Escroll to the right
- Dnach links scrollen
- Escroll to the left
- Dnach unten scrollen
- Escroll downwards
- Dnach oben scrollen
- Escroll upwards
- Dja, nichts zu tun
- Eyes, ignore it
- DDaten auf einen Satz uebertragen
- Emove data as one block at once
- Dnachfolgende NOP's ueberspringen
- Ejump over following NOP's
- Dragen wuerde: rechten cutoff bestimmen
- Eboundary: compute right cutoff
- Dnaechste Bitplane anwaehlen; bei einem wrap von
- Eselect next bitplane; if wrap-around occurs
- Dlativ codiert) zu falscher Adresse verzweigen!
- ERELATIVE - and thus, jump to ever-neverland!
- Ddazu Startadresse des Feldes addieren
- Eadd start address of array to that
- Dfaches von 16 Punkten in x- und y-Richtung sein
- Etiple of 16 points in each direction (x _and_ y)
- Ddass sie im Ring aufeinander zeigen, d.h.: sie bilden
- Eset such that they build a "ring", that is: together
- DDa als Hintergrundseite BACKGNDADR verwendet wird, ist die Verwen-
- EBecause BACKGNDADR is used as background page, calling this rou-
- Dmales Verhalten von TurboPascal's OutText-Routinen!)
- Edon't change (=normal behaviour of TP's OutText-procs)
- D------- ab hier: Sprites auf aktuelle Grafikseite bringen
- E------- starting here: put sprites on actual graphic page
- DPage-Wert in BX merken!
- Esave page value to BX!
- Dnaechste Plane anwaehlen
- Eselect next plane
- Dmax. Anzahl an Hintergrund-Kacheln
- Emax. number of background tiles
- DMaske wieder nach DX retten
- Esave mask to DX again
- DMaske fuer VRAM-Zugriff holen
- Eget mask for VRAM-access
- DMaske fuer Portzugriff laden
- Eload mask for port-access
- DMaske fuer naechsten Punkt berechnen
- Ecompute mask for next point
- DMaske auf 1 zuruecksetzen
- Erestore mask to 1
- Dja: Treffer in X-Richtung gefunden!
- Eyes: collision in X-direction found!
- Dja: Treffer gefunden!
- Eyes: collision detected!
- Dja, Zeitueberwachung soll benutzt werden
- Eyes, time control mechanism shall be used
- Dja, Punkte vertauschen
- Eyes, swap points
- Dja, nix zu tun
- Eyes, nothing to do
- Dja, Flag fuer "Punkt rechts vom Fenster" belassen
- Eyes, don't change flag for "point is right of window"
- Dja, Flag fuer "Punkt links vom Fenster" belassen
- Eyes, don't change flag for "point is left of window"
- Dja, Erhoehung von DI rueckgängig machen
- Eyes, make incrementing DI undone
- Dja, Ecke muss noch gezeichnet werden
- Eyes, corner remains to be drawn
- Dja, deltaY und Zeileninkrement negieren
- Eyes, negate deltaY and row-increment
- Dja, deltas vertauschen und Flag setzen
- Eyes, swap deltas and set flag
- Dja, Anzahl Tiles in diesem Spritefile ermitteln
- Eyes, get number of tiles in that sprite file
- DFarbtabelle uebernehmen
- Eactivate new color table
- DFarbe fuer Punkt holen
- Eget color of point
- DFarbdifferenz im Rotanteil berechnen:
- Ecompute color difference for red color part:
- DDazu kommen die oben abgeschnittenen Zeilen:
- Eadditionaly: the rows cut off at the upper edge:
- DDaten einer Zeile abspeichern
- Estore data of one row
- DDateilaenge ermitteln
- Edetermine file length
- DDarf keinenfalls unterbrochen werden!
- EMay not be interrupted!
- DRanddaten
- Eboundary data
- Dmax. Breite in 4er-Gruppen
- Emax. width in groups of 4
- Dmax_Breite_in_Punkten
- Emax_width_in_points
- Dmax_Breite_in_4er_Gruppen
- Emax_width_in_groups_of_4
- Dwaltungs des Heaps zum Speichern/Laden von Sprites, Hintergrundbildern,
- Emanagement for storing/loading sprites, handling background images,
- Dja, Fehlerquadrat und Farbe merken
- Eyes, store square of error and color
- Dja, bessere Naeherung koennen wir nicht mehr finden!
- Eyes, we can't find any better solution than that!
- DFarbpalette in ActualColors uebernehmen
- Ecopy palette into ActualColors
- DDatenregister auslesen:
- Edata register:
- DDaten ueber das zugehoerige Datenregister lesen
- Eread in data via the according data register
- Dja, Erhoehung von DI rueckgaengig machen
- Eyes, make increase of DI undone
- DSI auch
- ESI, too
- DSI = ((licutoff_in_Punkten+1) AND 3)*2
- ESI = ((lecutoff_in_points+1) AND 3)*2
- DSI = ((licutoff_in_Punkten+0) AND 3)*2
- ESI = ((lecutoff_in_points+0) AND 3)*2
- DSI = startx, DI = (Yaktuell+starty)*2
- ESI = startx, DI = (Yaktuell+starty)*2
- DDI=[@Starty_2+1] = starty*2
- EDI=[@Starty_2+1] = starty*2
- D(x,y) =
- E(x,y) =
- D40
- E40
- D80
- E80
- D#0
- E#0
- D10.
- E10.
- D100
- E100
- DSpalte
- Ecolumn
- D(physikalischen) Sprites gebildet werden, so muessen die
- Ewhose load numbers aren't consecutive, then you
- DSprite noch nicht geladen wurde!
- Esprite has not been loaded yet!
- DSpritedaten von Sprite
- Esprite data of sprite
- DSchreibmodus 0 (oder direkt:=$40)
- Ewrite mode 0 (or directly :=$40)
- Dupdate
- Eupdate
- DDS = normales Datensegment, ES = Grafikseitensegment,
- EDS = normal data segment, ES = graphic page segment,
- D- Scrollbares Hintergrundbild ebenfalls unterstuetzt
- E- scrolling background image, too
- D- Sprites werden beim Verschwinden an einer der Bildschirmgrenzen korrekt
- E- correct clipping of sprites at the screen boundaries when moving on- or
- Din
- Ein
- Dentsprechenden Stellen
- Ewhere it will be needed
- DAnzahl Bytes, die von...
- Enumber of bytes, which have to be copied from...
- Din der Datei so werden sie mit fortlaufender Nummer eingetragen,
- Ehas been loaded, they will be stored with consecutive numbers, that
- DEnthaelt die Datei mehrere Tiles, so werden sie zeilenweise geladen,
- EIf the file contains more than one tile, they will be loaded by row,
- Din Prozent zu der Helligkeit ihrer Originalfarben
- Ein percentage of the brightness of the original colors
- Dund auf aktueller Seite darstellen
- Eand display on actual graphic page
- Dund Wert holen
- Eand fetch value
- Dund fuer spaeter merken
- Eand preserve it for later
- DAnzahl zu zeichnende Zeilen
- Enumber of rows to draw
- Din: -
- Ein: -
- Din:
- Ein:
- DAnzahl abzuschneidende Zeilen
- Enumber of lines to be cut off
- DAnzahl der rechts abzuschneidenden Tile-Spalten
- Enumber of right tile-columns to be cut off
- DAnzahl der links abzuschneidenden Tile-Spalten
- Enumber of left tile-columns to be cut off
- DAnzahl der unten abzuschneidenden Tile-Zeilen
- Enumber of bottom tile-rows to be cut off
- Din neue_Tabelle[i] eintragen
- Estore into neue_Tabelle[i]
- DYMAX
- EYMAX
- DXMAX
- EXMAX
- D%0111
- E%0111
- Dschnell : keine Hintergrundberuecksichtigung
- Efast : don't take background into account
- D30..31 DW ? ; | x1
- E30..31 DW ? ; | x1
- DVGAMono oder VGAColor - Adapter
- Emonochrome or color VGA - adapter
- Dabzuarbeitende Zeilenanzahl
- Enumber of rows to process
- DDI:=0*LINESIZE +(x div 4)=x div 4
- EDI:=0*LINESIZE +(x div 4)=x div 4
- DSI um cutoff in Bytes weitersetzen=leftcut div 4
- Eincrement SI by cutoff (=leftcut div 4) bytes
- DSchirm zu bringen; die Schnittstelle ist fuer alle gleich:
- Ethe interface used is the same for all of them:
- Dschied, dass die Spritefarbe 0 als fuer den Schatten durchsichtig betrach-
- Ethat sprite color 0 is treated as being transparent for shadows
- DSprungleiste zu @Sprite_fertig
- Ejump-rail to @Sprite_fertig
- DPlane3 = x,x,r,x,b,x
- Eplane3 = x,x,r,x,b,x
- DPlane2 = r,x,g,x,g,x
- Eplane2 = r,x,g,x,g,x
- DPlane1 = x,x,r,x,b,x
- Eplane1 = x,x,r,x,b,x
- D013E: OUT DX,AL ;Speichers=lineares Bitfeld
- E013E: OUT DX,AL ;as a linear field of bits
- D0135: OUT DX,AL ;adressierung von Daten im Bild-
- E0135: OUT DX,AL ;addressing scheme of
- DSpritenummer1
- Espritenumber1
- Dumgekehrt
- Evice versa
- D- maximaler Umfang aller Sprites zusammen nur durch Hauptspeicher begrenzt
- E- maximal size of all loaded sprites only restricted by available memory
- DRoutine nur fuer den Hintergrundmodus STATIC sinnvoll!
- Ethis routine only makes sense when using mode STATIC!
- Dmodus SCROLLING sinnvoll
- Eas background mode!
- DPROCEDURE
- EPROCEDURE
- DTRUE
- ETRUE
- D0115: MOV AL,02 ;(=Map-Maske)
- E0115: MOV AL,02 ;register 2 (=Map-mask)
- D010B: INC DX ;Dessen Daten ueber das zuge-
- E010B: INC DX ;Read in its data, using the
- Dx1,y1,x2,y2 = Koordinaten zweier Punkte,
- Ex1,y1,x2,y2 = coordinates of two points,
- DSpritenummer2*2
- ESpritenumber2*2
- DSpritenummer1*2
- Espritenumber1*2
- DSpritepositionsnummer*2
- Espritepositionnumber*2
- D41 DB 0 ; Modusnummer fuer Sprite
- E41 DB 0 ; display mode used for sprite
- DAdressen der temporaeren Variablen fuer die Kollisionspruefroutine:
- Eaddresses of temporary variables for the collision detection routine:
- Doder Err_NoSprite!
- Eor Err_NoSprite!
- D=GraphTextColor, so werden nur die Textpixel gezeichnet
- Ethis value equals GraphTextColor, only the text-pixels
- DVGA Identify-Adapter-Function unterstuetzt?
- EVGA's identify-adapter-function supported?
- DRGB-Anteile der Farbe, fuer die eine Naeherung zu finden ist
- ERGB-parts of the color, for which we are seeking an approximation
- DYTiles
- EYTiles
- DXTiles
- EXTiles
- DDer Punkt wird NICHT sofort sichtbar, sondern erst nach einem Anima-
- EThe pixel will NOT be visible until the next animation cycle takes
- DRealisiere "AX:=Offset_Adr[pa]":
- Erealize "AX:=Offset_Adr[pa]":
- Dmax_breite_in_4er
- Emax_width_in_groups_of_4
- Dwar, kommt hierher
- Ebytes is placed here
- Dnach Plane 3 kommt wieder Plane 0, aber
- Eplane 0 follows after plane 3 again, but
- DVariablen <>0 gesetzt worden, d.h.: ist der Ausschnitt _ganz_ ausser-
- Ewill be set to something other then 0, that is: if the window lies
- DKachelnspeicher
- Etile memory
- Dja, kein Treffer
- Eyes, no collision
- Dja, also sicherlich kein Treffer
- Eyes, thus: surely no collision
- D- arbeitet mit virtuellen Koordinaten im Bereich -16000..+16000, daher
- E- works with virtual coordinates in the range -16000..+16000, thus
- DPalette-Speicher
- Epalette memory
- Dabkuerzen
- Etake short-cut
- Dab hier: Hintergrund aus Kacheln zusammensetzen
- Enow: create background image from tiles
- Dabgeschnitten
- Eoffscreen
- DModus 1 schreibt die Daten sofort ohne weitere Untersuchung auf den Schirm
- Emode 1 writes the data directly to the screen, without further processing
- DStartVirtualX
- EStartVirtualX
- Dx,y
- Ex,y
- D%1110
- E%1110
- D#190
- E#190
- D#180
- E#180
- D#170
- E#170
- D#160
- E#160
- D#150
- E#150
- D#140
- E#140
- D#130
- E#130
- D#10
- E#10
- DC=1, wenn leftcut=0
- EC=1, if leftcut=0
- D0123: MOV AX,DI ;(wg. den 4 Bitplanes) auf 0
- E0123: MOV AX,DI ;(because of chaining the 4 planes)
- D011C: MOV AX,A000 ;Ab Segment $A000
- E011C: MOV AX,A000 ;In segment $A000
- Dy2un+y2 (=b)
- Ey2un+y2 (=b)
- Dx2re[Zeile]+x2 (=b)
- Ex2re[row]+x2 (=b)
- DAX:=y1ob+y1 (=c)
- EAX:=y1ob+y1 (=c)
- DAX:=x1li[Zeile]+x1 (=c)
- EAX:=x1li[row]+x1 (=c)
- D"Treffer!" nur dann ausgeben, falls auch mind. 1 Treffer in Y-Ri. existiert
- Ereport "collision!" only, if there is at least 1 collision in Y-dir., too
- Dnen Bitplanetabellen natuerlich mit diesen verbunden bleibt und deshalb
- Eare (and remain) linked to these; therefore, they will be swapped too
- DSatz des Pythagoras
- EPythagorean proposition
- Dwas_cut = TRUE/FALSE, falls ein zurechtstutzen des Bildausschnittes
- Ewas_cut = TRUE/FALSE, if it was necessary/not necessary to clip the
- Ddann in der Tabelle SPRITEAD[number] abgelegt; sind mehrere Sprites
- Eare then stored in table SPRITEAD[number]; if more than one sprite
- DZahl der bisher eingelesenen Sprites
- Enumber of sprites already read in
- DFarbe des Punktes
- Ecolor of the point
- Dmax. Anzahl an gleichzeitig geladenenen Sprites
- Emax. number of simultaneously active sprites
- Dja, Linie ganz innerhalb des Windows
- Eyes, line is completely inside the window
- Dja, Linie ganz ausserhalb des Windows
- Eyes, line is completely outside the window
- Din den Hintergrundspeicher uebernommen wird, d.h.: er ist nur
- Eover into the background image, that is: it will be visible
- Dund die umgebenden Pixel unveraendert gelassen (=nor-
- Ethemselves will be drawn while the surrounding ones
- DAnzahl zu uebertragender Woerter
- Enumber of words to move
- DIn anderen Worten: dieser Modus entspricht dem Modus 2, mit dem Unter-
- EIn other words: this mode is equivalent to Modus2, with the exception
- Dvon
- Efrom
- Dvon unten nach oben
- Efrom bottom to top
- Ddown
- Edown
- DFolge (Planes abwechselnd von oben nach unten lesen!
- Esequence (alternately read planes from top to bottom!
- DCohen-Algorithmus verwenden: 4 Bit-Code fuer links|rechts|oben|unten
- Euse 4 bit-codes for: left|right|top|bottom
- DSoll der Zyklus aus nicht direkt aufeinanderfolgenden
- EIf the sprite cycle shall consist of (physical) sprites
- Dkollidieren -> FALSE zurueckgeben
- Eeither -> return FALSE
- DFortsetzung von Modus2 - all das, was nicht mehr in 16 Bytes unterzubringen
- EContinuation of mode2 - everything, which didn't fit in the reserved 16
- DCohen-Algorithmus verwenden: 4 Bit-Code: links|rechts|oben|unten
- Euse 4 bit-codes for: left|right|top|bottom
- DCodesegment zu haben
- Ethe code segment, too
- DPointer auf zugehoerige Routine holen
- Eget pointer to according routine
- Dmoegliche Textausgaberichtungen
- Epossible text directions
- DModusbyte des Sprites holen
- Eget mode byte of the sprite
- DKorrekturfaktor fuer Zeilenzieladressen
- Eadjustment for row target addresses
- DKorrekturfaktor fuer Zeilenadressen
- Eadjustment for row addresses
- DKorrekturfaktor fuer Tilezeilenquelladressen
- Eadjustment for source addresses of the tiles
- DKopie von X in BX aufbewahren
- Ehave a copy of X in BX
- DKopie von leftcut in BX aufbewahren
- Ehave a copy of leftcut in BX
- DHoehe von Sprite2 in Punkten
- Eheight of sprite2 in points
- DHoehe um evtl. oberen cutoff korrigieren
- Eevtl. adjust height for upper cutoff
- DHoehe (in Zeilen)
- Eheight (in rows)
- Dmordsmaessige Abweichungen sofort ignorieren
- Edon't tolerate huge color differences
- DFortsetzung von Modus3 - all das, was nicht mehr in 16 Bytes unterzubringen
- Econtinuation of Modus3 - everything, which didn't fit into 16 bytes
- DMode-control-Register auswaehlen
- Eselect mode control register
- DS.o.: Sequenzerregister2 (=Map-Maske) waehlen,...
- Es.a.: address sequencer reg. 2 (=map-mask),...
- DStartVirtualY
- EStartVirtualY
- D%1101
- E%1101
- D%1011
- E%1011
- D#191
- E#191
- D#181
- E#181
- D#171
- E#171
- D#161
- E#161
- D#151
- E#151
- D#141
- E#141
- D#131
- E#131
- D#11
- E#11
- D#1
- E#1
- Dx1
- Ex1
- Dy1
- Ey1
- D11.
- E11.
- Ds1
- Es1
- Doder direkt :=$41
- Eor directly :=$41
- DDX:=y2ob+y2 (=d)
- EDX:=y2ob+y2 (=d)
- DDX:=x2li[Zeile]+x2 (=d)
- EDX:=x2li[row]+x2 (=d)
- DAX:=-x1old
- EAX:=-x1old
- Dfalls Wert
- Eif value
- Dlaubt, so geschieht nicht!
- Enothing will happen at all!
- DDabei wurde NICHT auf irgendwelche Retrace-Signale synchronisiert
- EThe routine does NOT synchronize on any retrace-signal
- DDabei wird auf die Darstellung der Seite 1-PAGE geschaltet
- EThe display will be switched to graphic page 1-PAGE
- DTabelle der Startadressen der 3 Routinen im Codesegment
- Etable with the starting addresses of the 3 routines in the code segment
- Dhat sich um 1 Byte erhoeht
- Ehas increased by 1 byte
- DFarbwert fuer den zu zeichnenden Punkt
- Ecolor value for the pixel to be drawn
- DPalette wurde uebernommen und evtl. ShadowTab neuberechnet
- Epalette has been set and evtl., ShadowTab has been recomputed
- DBP
- EBP
- Dunterstuetzte Darstellungsmodi der Sprites:
- Esupported display modes for sprites:
- DDI setzen, damit Stringbefehle verwendet werden koennen
- Eset DI so that the string instructions can be used
- DSI auf naechste Tilequellzeile setzen
- Eset SI to next tile's source addr.
- DSI auch zuruecksetzen
- Ereset SI, too
- DDI wieder auf Ursprungsadresse zuruecksetzen
- Ereset DI to the source address
- DDI und SI wieder zuruecksetzen
- Ereset DI and SI registers
- DDI auf naechste Zielzeile setzen
- Eset DI to next destination row
- DDI auf naechste Zeile setzen
- Eset DI to next row
- Dvon ANIMATE auszufuehren, da der gezeichnete Punkt sonst so-
- Ecalling ANIMATE, because otherwise, your drawn pixel will
- D#192
- E#192
- D#182
- E#182
- D#172
- E#172
- D#162
- E#162
- D#152
- E#152
- D#142
- E#142
- D#132
- E#132
- D#12
- E#12
- D(16+3-i-rightcut) SHR 2
- E(16+3-i-rightcut) SHR 2
- D(16+3-i-leftcut) SHR 2
- E(16+3-i-leftcut) SHR 2
- D0112: MOV DX,03C4 ;S.o.: Sequenzer-Register 2
- E0112: MOV DX,03C4 ;s.a.: address sequencer-
- Dymax
- Eymax
- Dxmax
- Exmax
- DAX:=y1ob[Spalte]
- EAX:=y1ob[column]
- Dbzw.
- Eor
- DJetzt die unteren Tiles, die nicht seitlich abgeschnitten sind:
- ENow the lower tiles, which are not partially cut at their left or right:
- Dgenau dasselbe fuer unteren Bildschirmrand
- Eexactly the same for the lower screen border
- Dred
- Ered
- Dtet wird!
- Etoo!
- DZeiger auf per GetImage() gespeichertes Bild
- Epointer to image memory, allocated by GetImage()
- Dend_min_start
- Eend_min_start
- Din den Hintergrund gezeichnet (sofern er im sichtbaren Bereich liegt)
- Ehas been drawn into the background (if it is onscreen)
- Dinaktive Sprites koennen auch nicht
- Einactive sprites can't collide
- Dentscheidet, welcher Alg. Anwendung findet
- Edetermines, which algorithm will be used
- DAnfangsadressen der 4 Bitplanes berechnen; dabei evtl. linken cutoff mit
- ECompute starting addresses of the 4 bitplanes; take into account evtl.
- Dund gezeichnet (sofern er auf dem sichtbaren Bildschirmfenster liegt)
- Eand has been drawn (if it lies within the visible window)
- Dentsprechenden Eintraege in NextSprite[] manuell gemacht
- Ehave to make the appropriate entries into NextSprite[]
- Denthaelt jetzt den Gebietscode fuer Punkt
- Eholds the area code for point
- Dunter diesen Punkten befindet, wird gegen den korrespondierenden Farbwert
- Eunderneath these pixels will be replaced by the corresponding color entry
- DSpritenummer, dessen Modusbyte abgefragt werden soll
- Esprite number, which mode byte shall be read out
- DSpriteY_virtuell
- ESpriteY_virtual
- DSp = SpriteLADEnummer, dessen Modusbyte veraendert werden soll
- ESp = spriteLOADnumber, which mode byte shall be changed
- D#193
- E#193
- D#183
- E#183
- D#173
- E#173
- D#163
- E#163
- D#153
- E#153
- D#143
- E#143
- D#133
- E#133
- D#13
- E#13
- D0100: MOV AX,0013 ;Mit BIOS Grafikmodus $13
- E0100: MOV AX,0013 ;Use BIOS to switch to
- D(Segment-)Quelladresse ist die Seite SCROLLPAGE
- E(segment part of) source addr. is page SCROLLPAGE
- D*2, da Word-Werte!
- E*2, because word-sized!
- Dy2ob[Spalte]
- Ey2ob[column]
- DDiese Routine dauert ihre Zeit (ca. 4 sec auf 8MHz-AT!)
- EThis routine takes some time (about 4 sec on a 8MHz-AT!)
- DDisplay_FAST
- EDisplay_FAST
- DDisplay_SHADOWEXACT
- EDisplay_SHADOWEXACT
- Dberechne
- Ecompute
- Dwelche Schreib-Plane
- Ewhich write plane
- Dwenn topcut=0 ist, braucht die oberste
- Eif topcut=0, the upper tile row doesn't
- Dwenn leftcut=0 ist, muss die linke obere
- Eif leftcut=0, the upper left corner does
- Dnein, kopiere die Routine an die
- Eno, copy routine to all places
- Djetzt gilt: (pl_adr?,breite?) enthalten die Source-
- Eprecondition here: (pl_adr?,breite?) contain the
- Dgestutzt; sollte die Gerade keinen sichtbaren Teil besitzen, so wurde
- Eif the line is completely offscreen, the program jumped directly to
- Dges Minimum ist die Farbe j der neue
- Eminimum, then the new color j will be
- Dgelesen, die sich an der Spriteposition befinden und deren Farbwerte
- Eposition is read in and these color values will be exchanged against
- Dden musste
- Eoff
- Dbereits aktiv ist, deshalb wurden sie
- Euntil a graphic mode has been activated;
- Dferten Werte!
- Ethe results supplied by GetImage!
- DUebertrag bedeutet sofortiges Ende
- Ecarry set means: end at once
- DZeiger auf erstes zu kopierendes Tilebyte
- Epointer to first tile byte to copy
- DSegmentadresse der Hintergrundseite
- Esegment address of background page
- Dder Hintergrundseite
- Ein the background page
- Dnein, naechste Spalte (-> Word-Werte!)
- Eno, next column (-> word-sized values!)
- DJetzt evtl. noch die untere rechte Eck-Tile:
- ENow evtl. the lower right corner-tile remains to be drawn:
- Djede Kachelzeile ist XTiles breit, jede Kachel 16x16 Punkte
- Ea tile row has width XTiles, each tile consists of 16x16 points
- DLeseplane
- Eplane to read from
- Drechte
- Eright
- DZeile
- Erow
- DRealisiere "AX:=Offset_Adr[Page]":
- Erealize "AX:=Offset_Adr[Page]":
- Dneue, aktuelle Grafikseite(nadresse)
- Enew, actual graphic page(address)
- Dgerade aktuellen Farben "ActualColors" gesetzt; die Palette wurde
- Ewill become set to the actually set colors of "ActualColors"; the
- Dgerade aktuelle Farbpalette
- Eactually set color palette
- DTrick damit Code relokatibel wird!
- Etrick to make code relocatible!
- Din der Farbe COLOR in den Hintergrundspeicher gezeichnet; die Rou-
- E(using the color COLOR) into the background page; the routine it-
- DAb Segment A000h nun 8000h logische Woerter=
- Estarting in segment A000h, set 8000h logical
- D50..?? DB Daten
- E50..?? DB data
- D10..11 DW Hoehe in Zeilen
- E10..11 DW heigth in rows (in German: "Hoehe")
- DAchsen- und Punktsymmetrie ausnutzen
- Euse axial- and point symmetrie
- DSchreibplane anwaehlen
- Eselect write plane
- DSchreibmodus 0 waehlen
- Eselect write mode 0
- DSchrittweite beim laden
- E"step" needed for correct addressing
- DEcke nicht gesondert gezeichnet werden
- Enot need to be drawed separately
- DAchtung! Die Werte koenn(t)en nur dann
- EAttention! These values can/could be
- DSchreib-Plane anwaehlen
- Eselect write plane
- DSchreibplane 3 waehlen
- Echoose write plane 3
- DSchreibplane 2 waehlen
- Echoose write plane 2
- DSchreibplane 1 waehlen
- Echoose write plane 1
- DSchreibplane 0 waehlen
- Echoose write plane 0
- DSchreibmodus 1 waehlen
- Echoose write mode 1
- DSchreibmodus 0 setzen
- Eset write mode 0
- DSchleife wird genau "tiles" mal durchlaufen
- Eloop will be taken exactly "tiles" times
- DactIndex fuer naechste Tilezeile justieren:
- Eadjust actIndex for next tile-row:
- DSchatten
- ESchatten
- Dthen [ endy:=199-SpriteY
- Ethen [ endy:=199-SpriteY
- D..14)
- E..14)
- D#194
- E#194
- D#184
- E#184
- D#174
- E#174
- D#164
- E#164
- D#154
- E#154
- D#144
- E#144
- D#14
- E#14
- D#134
- E#134
- D0119: MOV AL,0F ;...und Zugriff auf alle 4
- E0119: MOV AL,0F ;...and allow access to all
- DSucc(XMAX)
- ESucc(XMAX)
- DSucc(YMAX)
- ESucc(YMAX)
- D320
- E320
- DAX:=hoehe1+hoehe2-(maxy-miny+1)-1 (=ueberlappy-1)
- EAX:=hoehe1+hoehe2-(maxy-miny+1)-1 (=ueberlappy-1)
- DCX:=breite1+breite2-(maxx-minx+1)-1 (=ueberlappx-1)
- ECX:=breite1+breite2-(maxx-minx+1)-1 (=ueberlappx-1)
- D#250
- E#250
- D#240
- E#240
- D#230
- E#230
- D#220
- E#220
- D#210
- E#210
- D#200
- E#200
- D#20
- E#20
- Dzeigt noch auf Spritedaten, muss aber auf
- Estill points to sprite data, but must
- DZeiger auf
- Epointer to
- DGrafikzeile
- Egraphic row
- DErr_InvalidFade, falls nicht zulaessiger Alg. gewaehlt wurde
- EErr_InvalidFade, if illegal "style" value has been used
- DGroesse einer Bitplane
- Esize of one bitplane
- Dwrap in den Bitplanes bedeutet: Startadresse
- Ewrapping the bitplane means: start address
- DBreite einer Zeile fuer die erste, zweite,
- EWidth of a row for the first, second,
- Ddritte und vierte Bitplane
- Ethird and fourth bitplane, respectively
- DBreite
- Ewidth
- DBreite dieser Zeile
- Ewidth of this line
- DGrafikseite
- Egraphic page
- DGraphTextColor=Textfarbe
- EGraphTextColor=color for text
- DZeitueberwachung explizit ab, so wird das durch IsAT:=$80,
- Eof 0 milliseconds), this will result in IsAT:=$80, that is
- DSegmentadressen der Grafikseiten (bei Offset = 0) :
- Esegment addresses of graphic pages (with offset = 0):
- DFehlerquadrat = 0?
- Esquare of error = 0?
- DErsatz fuer "LOOP @outerloop"; naechste Farbe!
- Ereplacement for "LOOP @outerloop"; next color!
- Dcolor
- Ecolor
- Dnoetig war/nicht noetig war
- Efetched image
- Dwo und wieviel des Bildes abgeschnitten wer-
- Eand how much of the image had to been clipped
- Dnommen, d.h.: er ist nur einen Animationszyklus lang sichtbar!
- Eimage, that is: it will be visible only for one animation cycle!
- Dnoch mit derselben Adresse ansprechbar?
- Estill addressable with the same address?
- Dkommt spaeter
- Ecomes later
- DColor
- EColor
- Dkoennte auch ausgerechnet werden ueber:
- Ecould also be computed by:
- DSpritebyte holen
- Efetch sprite byte
- DSprungleiste fuer NOHIT (passt hier gut hin)
- Ejump-rail for NOHIT (this is a good place)
- DSpritepositionsnummer*2 retten
- Esave spritepositionnumber*2
- DSpriteheader auf Heap bringen
- Estore sprite header to heap
- DSprite noch nicht geladen
- Esprite not yet loaded
- DSprite muss schon geladen sein
- Esprite must already be loaded
- DSprite kann sich nicht selbst treffen
- Esprite can't collide with itself
- DSpeicher auf dem Heap besorgen
- Eget memory from the heap
- DSpritedaten
- Esprite data
- DSpritedatum holen...
- Eget sprite data...
- D#195
- E#195
- D#185
- E#185
- D#175
- E#175
- D#165
- E#165
- D#155
- E#155
- D#15
- E#15
- D#145
- E#145
- D#135
- E#135
- DBX so verringern, dass es zusammen mit SI zugleich
- Echange BX such that (together with SI) it can be
- DDX=3CEh
- EDX=3CEh
- DDX=3C4h
- EDX=3C4h
- D12..15 DB 1,2,4,8 ; Translate-Tabelle fuer Port-Ansteuerung
- E12..15 DB 1,2,4,8 ; translate-table used for port-accesses
- DAX:=Kachel*64 =Kachel SHL 6 =(Kachel SHL 8) SHR 2
- EAX:=tile*64 =tile SHL 6 =(tile SHL 8) SHR 2
- DCX (BX) = Spritenummer von Sprite 1 (2)
- ECX (BX) = spritenumber of sprite 1 (2)
- Dx2+breite2-1
- Ex2+breite2-1
- D#251
- E#251
- D#241
- E#241
- D#231
- E#231
- D#221
- E#221
- D#211
- E#211
- D#21
- E#21
- D#201
- E#201
- Dnein: geringe Steigung
- Eno: small slope
- Dueberhang
- Eoverhang
- DAendern von Spritedarstellungsmodi waehrend der Laufzeit, Geschwindig-
- Echanging sprite display modes at runtime, adjustment for different
- Dmaxx
- Emaxx
- Dmax
- Emax
- Drerand1
- Ererand1
- Dgelesen werden muessen: 0 = Planereihenfolge (1,2,3,4); 1=(2,3,4,1);
- Eof the heap: 0 = plane order (1,2,3,4); 1 = plane order (2,3,4,1);
- Dueberlappy-1
- Eueberlappy-1
- Dkein MOVSW, da Writemode 1!
- Eno MOVSW, as we use write mode 1!
- Dkein "MOVSW", da Writemode1!
- Eno "MOVSW", as we use write mode1
- Dkeine "MOVSW", da Writemode1!
- Eno "MOVSW", as we use write mode1
- DName des zu ladenden Sprite-Files (Typ: "*.COD" / "*.LIB" )
- Ename of the sprite file to load (type: "*.COD" / "*.LIB")
- Dabsolut
- Eabsolute
- Dob die Sprites z.Z. gerade sichtbar sind oder nicht.
- Evisible (=onscreen) or not!
- Dabsolut!
- Eabsolute!
- D- beliebiges Hintergrundbild, vor der die Animation geschieht
- E- arbitrary background image for the animation
- DPortadresse des Statusregisters
- Eport address of state register
- DPortadresse des CRT-Adressregisters
- Eport address of CRT-address register
- DDI=Zielzeiger:=(bildschirmstartx+0) DIV 4 +zeilenadr
- EDI=dest.ptr:=(ScreenStartX+0) DIV 4 +zeilenadr
- DSI = index = Tilenummer
- ESI = index = tile number
- DPICHeader
- EPICHeader
- Dsowie evtl. notwendige Clipping-Schritte aus.
- Eclipping actions.
- DKoordinaten des def. Bereiches
- Ecoordinates of the defined area
- Dkoennte auch berechnet werden (fuer x>xmax-16) gemaess
- Ecould also be computed (for x>xmax-16) by
- D#196
- E#196
- D#186
- E#186
- D#176
- E#176
- D#166
- E#166
- D#16
- E#16
- D#156
- E#156
- D#146
- E#146
- D#136
- E#136
- DDisplay_NORMAL, Display_FAST oder Display_SHADOW
- EDisplay_NORMAL, Display_FAST or Display_SHADOW
- DDisplay_SHADOW
- EDisplay_SHADOW
- D#252
- E#252
- D#242
- E#242
- D#232
- E#232
- D#222
- E#222
- D#22
- E#22
- D#212
- E#212
- D#202
- E#202
- D#2
- E#2
- Dy2
- Ey2
- Dx2
- Ex2
- D12.
- E12.
- Ds2
- Es2
- DNextSprite[] wurde so gesetzt, dass jedes Sprite sein eigener Nach-
- ENextSprite[] has been set in such a way that every sprite is its
- Dneuer PAGE-Wert := 1-alter PAGE-Wert, d.h.:
- Enew PAGE-value := 1-old PAGE-value, that is:
- Dgewuenschte Helligkeit der Farben im Schattenbereich,
- Ewanted brightness for the colors in the shadow area,
- D32..33 DW ? ; | x2
- E32..33 DW ? ; | x2
- Dmaxy
- Emaxy
- Dermitteln, ob Farb- oder Monochromdarstellung
- Esee if we are using color-/monochorme display
- D(etwas spaeter wird dann DS (ES) = Segment der Spr.daten von Spr.1 (2) )
- E(a bit later, DS (ES) becomes segment addr. of sprite data of spr. 1 (2) )
- Dweitergesetzt: liefert (richtige) (4,8,12,...)
- Erection of +1 byte: this results in (4,8,12,...)
- D= (endy-starty)*2 =Yaktuell*2
- E= (endy-starty)*2 =Yaktuell*2
- DSegment der Spritedaten2
- Esegment of 2nd sprite's data
- Drerand2
- Ererand2
- D[end_min_start] = (endy-starty)*2 =Yaktuell*2
- E[end_min_start] = (endy-starty)*2 =Yaktuell*2
- Dendx
- Eendx
- Dendx-startx
- Eendx-startx
- Dorand1
- Eorand1
- Durand1
- Eurand1
- Dbreite1+breite2-(maxx-minx+1)
- Ebreite1+breite2-(maxx-minx+1)
- DAnzahl Bytes um 1 erhoehen (wg. LODSB)
- Einc. number of bytes by 1 (-> LODSB!)
- Dvon links nach rechts/umgekehrt
- Efrom left to right/vice versa
- Dvon oben nach unten/umgekehrt
- Efrom bottom to top/vice versa
- Dbottom_cut
- Ebottom_cut
- Dtop_cut
- Etop_cut
- DVIRTUELLE Punktkoordinaten des zu zeichnenden Punktes
- EVIRTUAL pixel coordinates of the point to be written
- DVIRTUELLE Punktkoordinaten des auszulesenden Punktes
- EVIRTUAL pixel coordinates of the point to be read
- DSoll von der gerade SICHTBAREN Seite gelesen werden, so ist
- EIf you want to read from the actually VISIBLE page, then
- DSoll auf die gerade SICHTBARE Seite gezeichnet werden, so ist
- EIf you want to draw at the actually VISIBLE graphic page
- Dfort wieder verschwindet!)
- Evanish at once!)
- Dfolger ist
- Eown successor
- DKonstanten fuer Hintergrundart
- Econstants for background mode
- Dyoffset
- Eyoffset
- Dtopcut
- Etopcut
- Dbottomcut
- Ebottomcut
- Dsonst wird BP von TP wiederhergestellt
- Eelse, BP will be restored by TP itself
- Dup
- Eup
- DSp
- ESp
- D0131: INC DX ;Wert aus zugehoerigem
- E0131: INC DX ;read out value of its
- D#197
- E#197
- D#187
- E#187
- D#177
- E#177
- D#17
- E#17
- D#167
- E#167
- D#157
- E#157
- D#147
- E#147
- D#137
- E#137
- D#127
- E#127
- D0..255 = Tilenummer fuer das erste Sprite der Datei
- E0..255 = tile number for the file's first sprite
- Dlicutoff_in_Punkten:=-SpriteX]
- Elecutoff_in_points:=-SpriteX]
- D#253
- E#253
- D#243
- E#243
- D#233
- E#233
- D#23
- E#23
- D#223
- E#223
- D#213
- E#213
- D#203
- E#203
- D1,2,4,8 fuer BX=0,1,2,3
- E1,2,4,8 for BX=0,1,2,3
- D(etwas frei:)
- E(a bit lax:)
- Dneue_Tabelle[i]
- Eneue_Tabelle[i]
- DAL=100h-DL = beste Naeherung
- EAL=100h-DL = best approximation
- DDefaultfarbpalette des Modus $13
- Edefault color palette of mode $13
- DAH:=BackTile[index]
- EAH:=BackTile[index]
- DTHEN index:=0 ELSE index:=actIndex
- ETHEN index:=0 ELSE index:=actIndex
- Din: (0,y) =
- Ein: (0,y) =
- Din: (x,y) = (
- Ein: (x,y) = (
- Din: (x,y) =
- Ein: (x,y) =
- Dendy
- Eendy
- DCL enthaelt den Gebietscode fuer Punkt 2, CH den fuer Punkt 1
- ECL holds the area code for point 2, CH the one for point 1
- Dorand2
- Eorand2
- Durand2
- Eurand2
- DGrafikseite, von der der Ausschnitt zu sichern ist (0..2)
- Egraphic page from which the image should be taken (0..2)
- DGrafikseite, auf der gezeichnet werden soll (0..2)
- Egraphic page to be drawn upon (0..2)
- Dif bildschirmstartx>xmax then skip_zeile
- Eif ScreenStartX>xmax then skip_zeile
- DOffsetanteil der Startadresse
- Eoffset part of the start address
- DDI:=orand2+2*hit2xfirst
- EDI:=orand2+2*hit2xfirst
- D10 Bytes Platzhalter
- E10 bytes to fill up
- D<0 bedeutet: neue Farbe waere heller!
- E<0 means: new color would be brighter!
- D40 DB 1 ; Versionsnummer
- E40 DB 1 ; version number
- DactIndex:=(ytil-1)*XTiles-1, "+xtil" kommt spaeter
- EactIndex:=(ytil-1)*XTiles-1, "+xtil" follows later
- Dy1 in absolute Koordinaten umrechnen
- Etransform y1 into absolue coordinates
- Dx1 in absolute Koordinaten umrechnen
- Etransform x1 into absolue coordinates
- D0139: OUT DX,AL ;auswaehlen
- E0139: OUT DX,AL
- D0136: DEC DX ;schirmspeicher durchfuehren
- E0136: DEC DX ;video data
- D0132: IN AL,DX ;Datenregister auslesen
- E0132: IN AL,DX ;data register
- D0130: OUT DX,AL ;auswaehlen
- E0130: OUT DX,AL
- D012B: MOV DX,03D4 ;CRT-Controller ansteuern
- E012B: MOV DX,03D4 ;address CRT-controller
- D0125: MOV CX,8000 ;setzen
- E0125: MOV CX,8000 ;to 0
- D011B: OUT DX,AL ;Bitmaps erlauben
- E011B: OUT DX,AL ;4 bitmaps
- D0117: OUT DX,AL ;auswaehlen,...
- E0117: OUT DX,AL
- D0111: OUT DX,AL ;Neuen Wert wirksam machen
- E0111: OUT DX,AL ;tell it to the VGA card
- D010F: OR AL,04 ;Bit 2:=1:kein odd/even-Mechan.
- E010F: OR AL,04 ;bit 2:=1:no odd/even-mechanism
- D010D: AND AL,F7 ;Bit 3:=0:4 Planes nicht chainen
- E010D: AND AL,F7 ;bit 3:=0:don't chain bitplanes
- D010C: IN AL,DX ;hoerige Datenregister einlesen
- E010C: IN AL,DX ;appropriate data register
- D010A: OUT DX,AL ;auswaehlen
- E010A: OUT DX,AL ;for the VGA's memory management
- D0103: INT 10 ;(=320x200x256) setzen
- E0103: INT 10 ;mode $13 (=320x200x256)
- D"11b" werden also beim Rechtsschieben eh abgeschnitten!
- E"11b" will be cut off while shifting right, anyway!
- D0..1 DW Plane_0_Daten
- E0..1 DW offset_ptr_to_plane0_data
- D#198
- E#198
- D#188
- E#188
- D#18
- E#18
- D#178
- E#178
- D#168
- E#168
- D#158
- E#158
- D#148
- E#148
- D#138
- E#138
- D#128
- E#128
- Dadresse um 1 Byte weitergesetzt werden
- Eing address must be incremented by 1 byte
- D(d.h.: nicht abgeschnittene) Tiles zeichnen:
- E(that is: all non-cut) tiles:
- DAdressen der temporaeren Variablen fuer die Zeichenroutinen:
- Eaddresses of temporary variables for the drawing routines:
- D--- da Abkuerzung genommen wurde: WriteMode 0 wieder setzen!
- E--- short cut has been taken: thus, reset write mode 0!
- D#254
- E#254
- D#244
- E#244
- D#24
- E#24
- D#234
- E#234
- D#224
- E#224
- D#214
- E#214
- D#204
- E#204
- Ddazu DI um (zu zeichnende Zeilen)*LINESIZE
- Ethus, decrement DI by (rows to draw)*
- DBreite fuer diese Zeile in Punkten +3
- Ewidth of this row in pixels +3
- D#30
- E#30
- Dif
- Eif
- DOffsetadressen der Grafikseiten (in Segment $A000):
- Eoffset addresses of the graphic pages (in segment $A000):
- Dist globale Variable
- Eis a global variable
- D200 Zeilen zu je 320/4 Bytes
- E200 rows at 320/4 bytes each
- DScrollRange definierten Bereiches liegen, erhalten TileNr als
- ESetBackgroundScrollRange will become the tile TileNr as
- DSchatten: Farbumsetzung anhand des Hintergrundes
- Eshadow : color lookup driven by background data
- Dschritte aus.
- Eclipping actions.
- DSchreibmodus
- Ewrite mode
- DActualColors
- EActualColors
- Dschneller als
- Efaster than
- DSpaltenzaehler
- Ecolumn counter
- DSpriteLADEnummer
- EspriteLOADnumber
- DSpriteN[?]=Spriteladenummer
- ESpriteN[?]=Spriteloadnumber
- DSpriteladenummer
- Esprite load number
- D#199
- E#199
- D#19
- E#19
- D#189
- E#189
- D#179
- E#179
- D#169
- E#169
- D#159
- E#159
- D#149
- E#149
- D#139
- E#139
- D#129
- E#129
- DCX=breite2 brauchen wir spaeter nochmal
- ECX=breite2 will be needed later again
- D#255
- E#255
- D#25
- E#25
- D#245
- E#245
- D#235
- E#235
- D#225
- E#225
- D#215
- E#215
- D#205
- E#205
- Dnein, alles ok
- Eno, everything ok
- DBP:=2*DY-DX
- EBP:=2*DY-DX
- D(Yaktuell+starty)*2
- E(Yactual+starty)*2
- D#31
- E#31
- DoffscreenFlag
- EoffscreenFlag
- Drbgbrxxx
- Erbgbrxxx
- Dist es gleich 0?
- Eis it zero?
- Dist leftcut=0 <=> rightcut=0
- Eleftcut=0 is equivalent to rightcut=0
- D>=0, quadrieren (um Differenzquadrat
- E>=0, square it (we are going to
- D"0" als Ergebniswert zurueckgeliefert
- Ewill return "0" as the result
- D20..21 DW ? ; zeilenadr | hit1yfirst
- E20..21 DW ? ; zeilenadr | hit1yfirst
- DSpritenummern der darzustellenden Sprites
- Espritenumber of sprite to be displayed
- Dgeht, weil
- Eworks, because
- DSeite, deren Inhalt sichtbar gemacht werden soll
- Epage, which contents will be made visible
- DZeit in Millisekunden, in der dies geschehen soll
- Etime in milliseconds for this action
- DSeite, die auf die aktuelle Seite eingeblendet werden soll
- Epage which shall be faded onto the actually visible page
- D#26
- E#26
- D#246
- E#246
- D#236
- E#236
- D#226
- E#226
- D#216
- E#216
- D#206
- E#206
- Ddessen Modusbyte abgefragt werden soll
- Ewhich mode byte shall be determined
- Ddefinierten Bereiches in "x" mittels der Formel:
- Ethe defined area and store it to "x", formula:
- Dder Routine nur fuer den Hintergrundmodus STATIC sinnvoll!
- Eroutine only makes sense when using background mode STATIC!
- Dwerden soll
- Eread out
- DSeite, auf der gezeichnet werden soll
- Epage to be drawn upon
- DMethode, mit der Sp ab sofort dargestellt werden soll:
- Emethod, which shall be used to display Sp from now on:
- Dneuer Rotanteil
- Enew red part
- DProgrammtool zur Realisierung schneller Animationen auf der VGA-Grafik-
- EProgramtool for the realization of fast animations on the VGA-graphic-
- DZeitmechanismus geht nur auf AT/386
- Etiming mechanism only works on AT/386
- DSpriteN[],SPRITEAD[] wurden auf "gaenzlich leer" initialisiert
- ESpriteN[],SPRITEAD[] have been initialized to "completely empty"
- Dauch nach [yoffset_]
- Estore it in [yoffset_], too
- DDX=3CEh -> Leseplane 3 waehlen
- EDX=3CEh -> choose read plane 3
- DDX=3CEh -> Leseplane 1 waehlen
- EDX=3CEh -> choose read plane 1
- DDX=3C4h -> Schreibplane setzen
- EDX=3C4h -> set write plane
- DCX=[licutoff_]= licutoff_in_Punkten,
- ECX=[licutoff_]= licutoff_in_points,
- DCX Bytes von DS:SI nach ES:BX uebertragen
- Ecopy CX bytes from DS:SI to ES:BX
- DAX Zeilen unten abschneiden
- Ecut off AX rows at the bottom
- DAX Punkte rechts abschneiden
- Ecut off AX points at the right
- DCX=[licutoff_] = licutoff_in_Punkten
- ECX=[licutoff_] = lecutoff_in_points
- DAX:=0 setzen
- Eset AX:=0
- DRetracesignal und schaltet dann auf die so fertiggestellte Seite um.
- Eretrace signal and then flips display to this completed page.
- D#27
- E#27
- D#247
- E#247
- D#237
- E#237
- D#227
- E#227
- D#217
- E#217
- D#207
- E#207
- Drem:
- Erem:
- Djetzt wieder normales Programm
- Enow back at "normal" program
- DArt, wie das geschehen soll
- Ethe way how this shall be done
- DGrafikseite(nsegment), aus der gelesen werden soll
- Egraphic page(segment) to be read from
- DGrafikseite(nsegment), auf der gezeichnet werden soll
- Egraphic page(segment) to be drawn upon
- DGrafikseite, in die der Bildausschnitt kopiert werden soll
- Egraphic page to which the cutting shall be pasted to
- DGrafikseite (0..3), auf der gezeichnet werden soll
- Egraphic page (0..3) to be drawn upon
- DGrafikseite, auf der der Text ausgegeben werden soll
- Egraphic page where the text shall be written
- DGraphTextOrientation="vertical" oder "horizontal"
- EGraphTextOrientation="vertical" or "horizontal"
- DGroesse Vielfaches von 16?
- Esize a multiple of 16?
- D#3
- E#3
- D13.
- E13.
- DEs wurde eine Linie von den VIRTUELLEN Punkten (x1,y1) nach (x2,y2)
- EA line has been drawn between the VIRTUAL points (x1,y1) and (x2,y2)
- DOR
- EOR
- DStartVirtualX,StartVirtualY = 0 (d.h.: virtuelle = absolute Koord.)
- EStartVirtualX,StartVirtualY =0 (that is: virtual = absolute coord.)
- DSprite(header)aufbau:
- Esprite header format:
- D0/1, wenn PAGE vorher 1/0 war
- E0/1, if PAGE has been 1/0, respectively
- D0137: MOV AL,17 ;Mode-control-Register
- E0137: MOV AL,17 ;select mode-control-register
- D012E: MOV AL,14 ;Underline-location-Register
- E012E: MOV AL,14 ;choose underline-location-register
- D0121: SUB DI,DI ;4*$8000 physikalische Woerter
- E0121: SUB DI,DI ;=4*$8000 physical words
- D011F: MOV ES,AX ;$8000 logische Woerter=
- E011F: MOV ES,AX ;clear $8000 logical words
- D0108: MOV AL,04 ;das Speichermodus-Register
- E0108: MOV AL,04 ;the register being responsible
- Doder
- Eor
- Dy2 in absolute Koordinaten umrechnen
- Etransform y2 into absolue coordinates
- Dx2 in absolute Koordinaten umrechnen
- Etransform x2 into absolue coordinates
- Dp2 auf Segmentgrenze bringen
- Emake p2 fall on segment boundary
- D42..43 DW linke_Begrenzungen
- E42..43 DW offset_ptr_to_left_boundary_data
- Dletzte Spalte erneuern:
- Eupdate last column:
- Dneue Zeile sichtbar machen:
- Emake new row visible:
- DZeilen
- Erows
- DTeiler von
- Edivisor of
- D#28
- E#28
- D#248
- E#248
- D#238
- E#238
- D#228
- E#228
- D#218
- E#218
- D#208
- E#208
- Dnein, uebertragen
- Eno, store to screen
- Dzeugen, muesste diese Tabelle zu jeder Farbe eine dunklere enthalten)
- Ethis table should hold a darker color for each of the original colors)
- Dverwendet werden!
- Efor other purposes!
- Dverringern (N.B.: BX=zu zeichnende Zeilen)
- ELINESIZE (N.B.: BX=number of rows to draw)
- DDer Hintergrundspeicher BACKGNDPAGE wird mit dem Inhalt der an-
- EThe background page BACKGNDPAGE has been filled with the con-
- Drechtsschieben!
- E2 bits to the right!
- DJetzt wird keine Variable aus dem Stack mehr gebraucht: BP kann
- ENow there is no further variable on stack, so BP can be used
- DJetzt alle vollstaendig im Inneren des Bildschirms gelegenen
- ENow draw all tiles which are completely onscreen
- Dder Spritenummer zuordnen:
- Eassign it to the sprite number:
- Dbeste Naeherungswert: ihn selbst (in
- Ethe new optimum: store that optimum
- Dbei "was_cut"=TRUE darueber Auskunft geben,
- Ebeen set to TRUE, they will report, where and
- Dwerden
- Eyourself manually
- Dsein, sowie die Register BP,DS,ES unveraendert lassen!!!!!!!!!!!!!
- ECATIBLE and MAY NOT CHANGE registers BP,DS and ES!!!!!!!!!!!!!!!!!
- Drechts unten!
- Eright corner to the lower right!
- Dpermanent bleiben, so muss sie in den Hintergrund gezeichnet werden!)
- Eit shall stay permanent, you have to draw it into the background!)
- Dleft_cut= evtl. noetiger linker Cutoff des Bildausschnittes (gibt an,
- Eleft_cut= evtl. needed left cut off of the image (this determines,
- Ddes Hintergrundes "sofort" sichtbar werden!)
- Ethe background will be visible "at once"!)
- Ddes Animationspaketes aufgerufen werden
- Ebeginning - for initializing the whole package properly
- Dbezeichnet, liest diese Routine auch von dort die Punkte ein!
- Ephic page, this routine will read from there, too!
- Dbeim Aufruf als Seite "1-PAGE" anzugeben!
- Ethen you must call the routine with pa=1-PAGE!
- DAenderungen (durch ANIMATE) sofort sichtbar werden)
- Echanges will become visible (via ANIMATE) at once)
- DZeitueberwachung starten
- Estart time control mechanism
- DZeitueberwachung fuer naechsten Zyklus starten:
- Estart time control mechanism for next cycle:
- DZeilenzaehler verringern
- Edecrease row counter
- DZeilenzaehler retten
- Esave row counter
- DZeiger auf Farbumsetztabelle setzen
- Eset pointer to color lookup table
- DZeichenfarbe fuer Linien
- Edrawing color for lines
- DWert nicht mehr pushen!
- Edo not push value again!
- DSeitennummer muss 0..2 sein
- Epage number must be 0..2
- DDefaultwert in ShadowTab ist 70% Helligkeit der Ursprungsfarben!
- Edefault value of ShadowTab is 70% of the original color brightness!
- DText wurde auf dem Bildschirm ausgegeben
- Etext has been written to the screen
- Dden Fehler in Worten
- Ethe error described in words
- Dnein, Flag ruecksetzen
- Eno, reset flag
- Dnein, Adr. muss(te) um 1 erhoeht werden
- Eno, address had to be incremented by 1
- Dnein
- Eno
- DLese-Plane anwaehlen
- Eselect read plane
- DLesezugriff auf passende Plane ermoeglichen
- Eenable read access for correct plane
- DLeseplane 3 waehlen
- Echoose read plane 3
- DLeseplane 2 waehlen
- Echoose read plane 2
- DLeseplane 2 setzen
- Eset read plane 2
- DLeseplane 1 waehlen
- Echoose read plane 1
- DLeseplane 0 waehlen
- Echoose read plane 0
- DLesemodus 0 setzen
- Eset read mode 0
- DKennung in Bilderdateien
- Etag in picture files
- Dkein Treffer, wenn
- Eno collision, if
- DJetzt: "SpriteN[?]:=SpriteN[NextSprite[?]]" berechnen:
- ENow: compute "SpriteN[?]:=SpriteN[NextSprite[?]]"
- DJetzt Planebreiten:
- ENow the plane widths:
- DJetzt eigentliche Spritedaten einlesen:
- ENow read in the real sprite data:
- Djetzt den "Rest" des Sprites laden
- Eload the "rest" of the sprite
- Djetzt den Spriteheader vià BLOCKREAD auf den Heap laden
- Eload sprite header vià BLOCKREAD into the heap
- DJetzt Bresenham-Parameter berechnen
- Ecompute Bresenham-parameters
- Dgenug Platz reservieren
- Eget enough space
- Drechte untere Ecke dazu (alles virtuelle Koordinaten!)
- Eaccording lower right corner (in virtual coordinates!)
- Dderen zugehoergigen (virtuellen) Koordinaten
- Etheir (virtual) coordinates
- DKennung fuer Bilderdateien
- Etag for picture files
- Ddeklariert werden
- Eor other sprites pixel by pixel
- DDefault-Helligkeit von Schatten
- Edefault brightness of shadows
- Dneue Farbe darf nicht heller sein!
- Enew color may not be brighter!
- DFehlerquadrat berechnen
- Ecompute square of error
- Dbessere Approximation gefunden?
- Edid we find a better approximation?
- DLeseplane nach AH bringen
- Eload read plane into AH
- DNeuen Wert wirksam machen
- Eactivate new settings
- Dkeine Farbe gefunden?
- Eno color found?
- Dnein, also nochmal suchen
- Eno, thus search again
- Dtemporaere Palette mit aktuellen Farben vorbesetzen
- Epreset temporary palette with actual colors
- DDer fuer das Bild reservierte Heap-Speicher wurde freigegeben
- Ethe heap memory allocated for the image has been released
- D...nach BH
- E...into BH
- D...nach DH
- E...into DH
- D2*(DY-DX)
- E2*(DY-DX)
- D2*DY-DX
- E2*DY-DX
- Dof FOR j
- Eof FOR j
- DDI:=miny-maxy=-(maxy-miny)
- EDI:=miny-maxy=-(maxy-miny)
- DSollte dies nicht moeglich sein (oder liegt der Bildausschnitt gaenz-
- EIf that is impossible (or the image is completely offscreen), the
- DPAGE = aktuell dargestellte Grafikseite
- EPAGE = actually displayed graphic page
- DPAGESIZE = Groesse einer Bitplane
- EPAGESIZE = size of one bitplane
- Dstyle
- Estyle
- Dsteile Linie?
- Esteep line?
- Ddto. fuer anderes Sprite
- Edto. for other sprite
- Ddto., letzte Zeile
- Edto., last row
- DStartplane
- Estartplane
- Ddto., rechte untere Ecke
- Edto., lower right corner
- D- gleichzeitige Darstellung von bis zu 32767 Sprites (Voreinstellung: 500)
- E- up to 32767 sprites may be simultaneously active (default: 500)
- DSprite <>0, d.h.: ueberhaupt aktiv?
- Esprite <>0, that is: sprite active?
- D013C: OR AL,40 ;Bit 6:=1: Adressierung des
- E013C: OR AL,40 ;bit 6:=1: address memory
- Ds1,s2 = Spritepositionsnummern zweier Sprites
- Es1,s2 = sprite position numbers of two sprites
- DAdressen von wichtigen Werten innerhalb des Spriteheaders:
- Eaddresses of important values inside the sprite header:
- D0, d.h.: keine Mindestzeit fuer einen Animationszyklus
- E0, that is: no min. time for animation cycle
- D#29
- E#29
- D#249
- E#249
- D#239
- E#239
- D#229
- E#229
- D#219
- E#219
- D#209
- E#209
- Derste Spalte erneuern:
- Eupdate first column:
- DWritemode 0 wiederherstellen
- Erestore write mode 0
- DWritemode 1 setzen
- Eset write mode 1
- DGrafikmodus muss natuerlich bereits initialisiert worden sein
- Egraphic mode must have been initialized already
- DBreite zuerst ablegen...
- Estore width first...
- DGrafikseite (0..3), von der der Punkt ausgelesen
- Egraphic page (0..3), from which the point shall be
- DWriteMode 1 waehlen
- Echoose write mode 1
- DWritemode 0 setzen
- Eselect write mode 0
- DGrafikseite mit Hintergrundmuster fuellen
- Efill graphic page with background pattern
- DBreite in 4er-Gruppen
- Ewidth in groups of 4
- DBreite und Hoehe des gewaehlten Bereiches in Kacheln
- Ewidth and height of the chosen range in tiles
- Dgrundes veraendern ("Schattenfunktion")
- Eimage (-> shadow function)
- DCH
- ECH
- DBH
- EBH
- DAH
- EAH
- DDH
- EDH
- D2*DY
- E2*DY
- DRoutine trotzdem "was_cut"=FALSE!
- Eroutine still returns "was_cut"=FALSE!
- D34..35 DW ? ; | y1
- E34..35 DW ? ; | y1
- DactIndex
- EactIndex
- Ddto. fuer Breite und linken cutoff
- Edto. for width and left cutoff
- DStart-Schreibplane (Start-LESEplane=0)
- E1st write plane (1st READ plane=0!)
- Dx1last
- Ex1last
- Dx1+breite1-1 (=x1last)
- Ex1+breite1-1 (=x1last)
- Dy1last
- Ey1last
- D0133: AND AL,BF ;Bit 6:=0: keine Doppelwort-
- E0133: AND AL,BF ;bit 6:=0: no double word
- D0105: MOV DX,03C4 ;Sequenzer ansteuern und dort
- E0105: MOV DX,03C4 ;Address sequencer and choose
- Doder rightcut, denn da 320 durch 16 teilbar ist,
- Eor "rightcut": because 320 is dividable by 16,
- DAL=0 zugleich als Init-Wert benutzen
- Euse AL=0 as starting value, too
- DAL mit 0 vorbesetzen
- Epreset AL with 0
- D2=(3,4,1,2); 3=(4,1,2,3); zu beachten ist, dass die Breiten der einzel-
- E2=(3,4,1,2); 3=(4,1,2,3); note that the widths of the bitplane tables
-