summaryrefslogtreecommitdiff
path: root/drawbob.i
diff options
context:
space:
mode:
authorChristian B. Haller <christian@haller.ch>1991-08-23 14:40:42 +0000
committerChristian B. Haller <christian@haller.ch>1991-08-23 14:40:42 +0000
commitab216e437899d244ad2ad43cdf2ad0b66b06ca42 (patch)
treebe1f1e1ca06fac0de6569f56462d8960e1bf816f /drawbob.i
parentf7684ff06c1ff6fdaaca704361e51525c2444409 (diff)
downloadgameexec-ab216e437899d244ad2ad43cdf2ad0b66b06ca42.tar.gz
gameexec-ab216e437899d244ad2ad43cdf2ad0b66b06ca42.tar.bz2
gameexec-ab216e437899d244ad2ad43cdf2ad0b66b06ca42.zip
Initial revision
Diffstat (limited to 'drawbob.i')
-rw-r--r--drawbob.i659
1 files changed, 659 insertions, 0 deletions
diff --git a/drawbob.i b/drawbob.i
new file mode 100644
index 0000000..dd550d7
--- /dev/null
+++ b/drawbob.i
@@ -0,0 +1,659 @@
+*
+* DrawBob.i (zu BOBOL V3.16 23-Aug-91)
+*
+
+ *********** BOBOL Kommandos *************
+
+
+DO MACRO ; LoopBeginn setzen
+dovar set *
+ ENDM
+
+REPEAT MACRO ; LoopBeginn setzen
+repeatvar set *
+ ENDM
+
+FOR MACRO
+forvar set *
+ dc.w BOBFOR
+ dc.w \1 ; Anzahl Durchläufe
+ ENDM
+
+LOOP MACRO ; Prg von vorne starten
+ dc.w BOBLOOP
+ ENDM
+
+ENDE MACRO ; Prg beenden
+ dc.w BOBENDE
+ ENDM
+
+REMOVE MACRO ; Bob entfernen
+ dc.w BOBREMOVE
+ ENDM
+
+SETPRI MACRO ; Bob-Priorität ändern
+ dc.w BOBSETPRI
+ dc.w \1
+ ENDM
+
+SIGNAL MACRO ; SignalMaske senden
+ dc.w BOBSIGNAL
+ dc.w \1
+ ENDM
+
+WAIT MACRO ; auf SignalMaske warten
+ dc.w BOBWAIT
+ dc.w \1
+ ENDM
+
+BBEQ MACRO ; Springen wenn Maske falsch
+scavar set *
+ dc.w BOBUNTIL
+ dc.w \1 ; Maske
+ dc.w scavar-\2 ; Zieladresse
+ ENDM
+
+BBNE MACRO ; Springen wenn Maske richtig
+scavar set *
+ dc.w BOBWHILE
+ dc.w \1 ; Maske
+ dc.w scavar-\2 ; Zieladresse
+ ENDM
+
+UNTIL MACRO ; zum REPEAT springen bis Bedingung stimmt
+scavar set *
+ dc.w BOBUNTIL
+ dc.w \1
+ dc.w scavar-repeatvar
+ ENDM
+
+WHILE MACRO ; zum DO springen bis Bedingung nicht mehr stimmt
+scavar set *
+ dc.w BOBWHILE
+ dc.w \1
+ dc.w scavar-dovar
+ ENDM
+
+NEXT MACRO
+forvar2 set *
+ dc.w BOBNEXT
+ dc.w forvar2-forvar-4
+ ENDM
+
+CPUJUMP MACRO
+ dc.w BOBCPUJUMP
+ dc.l \1
+ dc.l \2
+ ENDM
+
+LEFT MACRO
+ dc.w BOBLEFT
+ dc.w \1
+ ENDM
+
+RIGHT MACRO
+ dc.w BOBRIGHT
+ dc.w \1
+ ENDM
+
+UP MACRO
+ dc.w BOBUP
+ dc.w \1
+ ENDM
+
+DOWN MACRO
+ dc.w BOBDOWN
+ dc.w \1
+ ENDM
+
+LEFTUP: MACRO
+ dc.w BOBLEFT+BOBUP
+ dc.w \1
+ ENDM
+
+RIGHTUP: MACRO
+ dc.w BOBRIGHT+BOBUP
+ dc.w \1
+ ENDM
+
+LEFTDOWN: MACRO
+ dc.w BOBLEFT+BOBDOWN
+ dc.w \1
+ ENDM
+
+RIGHTDOWN: MACRO
+ dc.w BOBRIGHT+BOBDOWN
+ dc.w \1
+ ENDM
+
+DELAY MACRO
+ dc.w BOBDELAY
+ dc.w \1
+ ENDM
+
+RNDDELAY MACRO
+ dc.w BOBRNDDELAY
+ dc.w \1
+ dc.w \2
+ ENDM
+
+POKEB: MACRO
+ dc.w BOBPOKEB
+ dc.l \1
+ dc.w \2
+ ENDM
+
+POKEW MACRO
+ dc.w BOBPOKEW
+ dc.l \1
+ dc.w \2
+ ENDM
+
+POKEL MACRO
+ dc.w BOBPOKEL
+ dc.l \1
+ dc.l \2
+ ENDM
+
+RELMOVE: MACRO
+ dc.w BOBRELMOVE
+ dc.w \1
+ ENDM
+
+SETANIM: MACRO
+ dc.w BOBSETANIM
+ dc.l \1
+ ENDM
+
+SETMOVE: MACRO
+ dc.w BOBSETMOVE
+ dc.l \1
+ ENDM
+
+SETCLIP: MACRO
+ dc.w BOBSETCLIP
+ dc.w \1
+ dc.w \2
+ dc.w \3
+ dc.w \4
+ dc.w \5
+ ENDM
+
+SETORGTAB: MACRO
+ dc.b bob_OrgTab
+ dc.b BOBSETLONG
+ dc.l \1
+ ENDM
+
+
+SETX: MACRO
+ dc.b bob_X
+ dc.b BOBSETWORD
+ dc.w \1
+ ENDM
+
+
+
+SETY: MACRO
+ dc.b bob_Y
+ dc.b BOBSETWORD
+ dc.w \1
+ ENDM
+
+
+SETDATA: MACRO
+ IFEQ NARG-1 ; 1 Argument
+ DC.W BOBSETDATA ; Normales AddBob
+ DC.L \1
+ ENDC
+ IFEQ NARG-2 ; 2 Argumente
+ DC.W BOBSETRELDATA ; Relatives AddBob
+ DC.L \1 ; Offset im Bobifile
+ DC.L \2 ; Zeiger auf Zeiger auf File
+ ENDC
+ ENDM
+
+SETMOVESPEED: MACRO
+ DC.W BOBSETMOVESPEED
+ DC.W \1
+ ENDM
+
+SETMOVESTEP: MACRO
+ dc.b bob_MoveStep
+ dc.b BOBSETWORD
+ dc.w \1
+ ENDM
+
+SETANIMSPEED: MACRO
+ DC.W BOBSETANIMSPEED
+ DC.W \1
+ ENDM
+
+SETID: MACRO
+ DC.W BOBSETID
+ DC.W \1
+ ENDM
+
+SETUSERDATA: MACRO
+ dc.b bob_UserData
+ dc.b BOBSETLONG
+ DC.L \1
+ ENDM
+
+SETUSERDATAPTR: MACRO
+ dc.b bob_UserDataPtr
+ dc.b BOBSETLONG
+ DC.L \1
+ ENDM
+
+
+
+SETFLAGS: MACRO
+ dc.b bob_Flags
+ dc.b BOBSETWORD
+ dc.w \1
+ ENDM
+
+
+SETUSERFLAGS: MACRO
+ dc.b bob_UserFlags
+ dc.b BOBSETWORD
+ dc.w \1
+ ENDM
+
+
+
+LSIGNAL: MACRO
+ dc.w BOBLSIGNAL
+ dc.w \1
+ ENDM
+
+LWAIT: MACRO
+ dc.w BOBLWAIT
+ dc.w \1
+ ENDM
+
+ADDBOB: MACRO
+ dc.w BOBADDBOB
+ dc.l \1
+ ENDM
+
+ADDRELBOB: MACRO
+ dc.w BOBADDRELBOB
+ dc.l \1 ; Bob
+ dc.w \2,\3 ; X/Y-Offsets
+ ENDM
+
+SETCOLLHANDLER: MACRO
+ dc.b bob_CollHandler
+ dc.b BOBSETLONG
+ dc.l \1
+ ENDM
+
+SETMEMASK: MACRO
+ dc.b bob_MeMask
+ dc.b BOBSETWORD
+ dc.w \1
+ ENDM
+
+
+SETHITMASK: MACRO
+ dc.b bob_HitMask
+ dc.b BOBSETWORD
+ dc.w \1
+ ENDM
+
+
+RNDANIM: MACRO
+ dc.w BOBRNDANIM
+ dc.w \1 ; 1. Bildchen (-1 ?)
+ dc.w \2 ; Letztes Bildchen
+ ENDM
+
+SETHANDLER: MACRO
+ dc.b bob_Handler
+ dc.b BOBSETLONG
+ dc.l \1
+ IFEQ NARG-2
+ dc.b bob_HandlerD0
+ dc.b BOBSETLONG
+ dc.l \2
+ ENDC
+ ENDM
+
+
+REMHANDLER: MACRO
+ SETHANDLER 0
+ ENDM
+
+
+MOVETO: MACRO
+ dc.w BOBMOVETO
+ dc.w \1,\2 ; X/Y
+ dc.w \3 ; Anzahl Schritte bis dahin
+ ENDM
+
+FLASH: MACRO
+ dc.w BOBFLASH
+ dc.w \1 ; Zeit in DrawBob()s oder so
+ dc.w \2 ; Farbnummer
+ ENDM
+
+SETCONVERT: MACRO
+ dc.w BOBSETCONVERT
+ dc.l \1 ; Tabelle
+ dc.w \2 ; EintragsGrösse
+ dc.w \3 ; EintragsOffset
+ ENDM
+
+ANIMTO: MACRO
+ dc.w BOBANIMTO
+ dc.w \1 ; 1. Bobnummer
+ dc.w \2 ; Letzte Bobnummer
+ ENDM
+
+GOTO: MACRO
+ dc.w BOBGOTO
+ dc.l \1 ; Label
+ ENDM
+
+ADDDAUGHTER: MACRO
+ dc.w BOBADDDAUGHTERBOB
+ dc.l \1 ; Daughter-Bob
+ dc.w \2,\3 ; X-Versatz,Y-Versatz
+ ENDM
+
+SETIMAGE: MACRO
+ dc.b bob_Image
+ dc.b BOBSETWORD
+ dc.w \1
+ ENDM
+
+
+TESTJOY: MACRO
+ dc.w BOBTESTJOY
+ dc.w \1 ; Joystick-Maske
+ IFEQ NARG-1
+ dc.l 0
+ ELSE
+ dc.l \2 ; Zeiger auf FlipFlag
+ ENDC
+ ENDM
+
+
+BITTEST: MACRO ; BitTest BitNr,Adr
+ dc.w BOBBITTEST
+ dc.w \1
+ dc.l \2
+ ENDM
+
+JEQ: MACRO
+mvar: SET *
+ dc.w BOBJEQ
+ dc.w \1-mvar
+ ENDM
+
+JNE: MACRO
+mvar: SET *
+ dc.w BOBJNE
+ dc.w \1-mvar
+ ENDM
+
+
+FOREVERMAGIC: EQU -1
+
+FOREVER: MACRO
+ FOR FOREVERMAGIC
+ ENDM
+
+
+
+
+
+ *********** BOBKOMMANDOS *************
+
+
+COMVAL: SET -2
+
+SETCOM: MACRO
+BOB\1: EQU COMVAL
+COMVAL: SET COMVAL-2
+ ENDM
+
+
+ SETCOM SETWORD
+ SETCOM SETLONG
+ SETCOM LOOP
+ SETCOM ENDE
+ SETCOM REMOVE
+ SETCOM SETPRI
+
+ SETCOM SIGNAL
+ SETCOM WAIT
+ SETCOM CPUJUMP
+ SETCOM UNTIL
+ SETCOM WHILE
+
+ SETCOM POKEB
+ SETCOM POKEW
+ SETCOM POKEL
+ SETCOM RELMOVE
+ SETCOM SETANIM
+
+ SETCOM SETMOVE
+ SETCOM SETCLIP
+ SETCOM SETDATA
+ SETCOM SETMOVESPEED
+
+ SETCOM SETANIMSPEED
+ SETCOM SETID
+ SETCOM FOR
+ SETCOM NEXT
+
+ SETCOM LSIGNAL
+ SETCOM LWAIT
+ SETCOM DELAY
+ SETCOM RNDDELAY
+ SETCOM ADDBOB
+
+ SETCOM RNDANIM
+ SETCOM MOVETO
+
+ SETCOM FLASH
+ SETCOM SETCONVERT
+ SETCOM ANIMTO
+ SETCOM GOTO
+ SETCOM ADDRELBOB
+
+ SETCOM SETRELDATA
+ SETCOM ADDDAUGHTERBOB
+ SETCOM TESTJOY
+ SETCOM BITTEST
+ SETCOM JEQ
+
+ SETCOM JNE
+
+
+BOBLEFT: EQU 1
+BOBRIGHT: EQU 2
+BOBUP: EQU 4
+BOBDOWN: EQU 8
+
+;-----------------------------------------------------------------------
+
+ *********** BOBSTRUKTUREN *************
+
+ STRUCTURE BobData,0
+ WORD bod_Width ; Breite des Bobs in Pixel
+ WORD bod_Height ; Höhe des Bobs in Zeilen
+ WORD bod_X0 ; X-Offset des Bob-Nullpunkts
+ WORD bod_Y0 ; Y-Offset des Bob-Nullpunkts
+ WORD bod_CollX0
+ WORD bod_CollY0
+ WORD bod_CollX1
+ WORD bod_CollY1
+ BYTE bod_PlanePick ; Für welche Planes sind Daten vorhanden
+ BYTE bod_PlaneOnOff ; Was tun mit den restlichen Planes
+ WORD bod_Flags ; Siehe BODF_ Definitionen
+ WORD bod_WordSize ; Bob-Breite in WORDs +1
+ WORD bod_PlaneSize ; Anzahl Bytes einer Plane
+ WORD bod_TotalSize ; Länge des Bobs+Header
+ LABEL bod_SIZEOF ; Grösse dieses Bob-Headers
+ LABEL bod_Images ; Bob Images
+
+ BITDEF BOD,ANIMKEY,8 ; Bit 8 / erstes Bob einer Anim
+
+;-----------------------------------------------------------------------
+
+ *** Flags für bob_Flags
+
+ BITDEF BOB,NORESTORE,0 ; Bit 0 / Bob nicht restoren
+ BITDEF BOB,NODRAW,1 ; Bit 1 / Bob nicht zeichnen
+ BITDEF BOB,BACKCLEAR,2 ; Bit 2 / Hintergrund löschen
+ BITDEF BOB,NOLIST,3 ; Bit 3 / Bob nicht in Liste einfügen
+ BITDEF BOB,NOCUT,4 ; Bit 4 / nicht Cookie Cut
+ BITDEF BOB,NODOUBLE,5 ; Bit 5 / nicht double buffern
+ BITDEF BOB,SPECIALDRAW,6 ; Bit 6 / nur zeichnen wenn ein anderes bob dahinter liegt
+ BITDEF BOB,NOCOLLISION,7 ; Bit 7 / keine Kollision ausloesen
+ BITDEF BOB,FLIPXMOVE,8 ; Bit 8 / X-Move-Koordinaten spiegeln
+ BITDEF BOB,FLIPYMOVE,9 ; Bit 9 / Y-Move-Koordinaten spiegeln
+ BITDEF BOB,NEWIMAGE,10 ; Bit 10 / Bob nur zeichnen wenn sich Image geändert hat
+ BITDEF BOB,NOMOVE,11 ; Bit 11 / MovePrg anhalten
+ BITDEF BOB,NOANIM,12 ; Bit 12 / Bob in Liste eintragen aber nicht handeln
+ BITDEF BOB,ONLYANIM,13 ; Bit 13 / nur Anims ausführen
+ BITDEF BOB,HIDDEN,14 ; Bit 14 / wird gesetzt wenn bob nicht gezeichnet wird (SPECIAL-DRAW)
+
+ **** Flags für bob_ClipFlags
+
+ BITDEF CLIP,DOWN,0 ; Bit 0 / gegen unten clippen
+ BITDEF CLIP,UP,1 ; Bit 1 / gegen oben clippen
+ BITDEF CLIP,LEFT,2 ; Bit 2 / gegen links clippen
+ BITDEF CLIP,RIGHT,3 ; Bit 3 / gegen rechts clippen
+ BITDEF CLIP,GLOBAL,4 ; Bit 4 / Globale Klipkoordinate mitrechnen
+
+CLIPF_X: EQU CLIPF_RIGHT|CLIPF_LEFT
+CLIPF_Y: EQU CLIPF_UP|CLIPF_DOWN
+CLIPF_ALL: EQU CLIPF_X|CLIPF_Y
+CLIPF_GLOBALL: EQU CLIPF_ALL|CLIPF_GLOBAL
+
+
+ **** Bits für Status-Register
+
+ BITDEF SR,ZEROFLAG,0 ; Bit 0 / ZeroBit (Anwendung wie CPU-SR)
+
+
+;-------------------------------------------------------------------------
+
+ STRUCTURE Bob,0
+
+ APTR bob_NextBob ; nachfolgendes Bob in der Liste
+ APTR bob_LastBob ; vorhergehendes Bob in der Liste
+ BYTE bob_Id ; BobKennung
+ BYTE bob_Priority ; Priorität
+
+ APTR bob_BobData ; Zeiger auf BobData Struktur
+ WORD bob_X ; aktuelle X Koordinate (ohne Offset)
+ WORD bob_Y ; aktuelle Y Koordinate (ohne Offset)
+
+ WORD bob_AbsX ; korrigierte X Koordinate (ohne Offset)
+ WORD bob_AbsY ; korrigierte Y Koordinate (ohne Offset)
+
+ WORD bob_X0 ; Kopie aus bod_X0
+ WORD bob_Y0 ; Kopie aus bod_Y0
+
+ LONG bob_LastLastOffset ; vorletzte X+Y Koordinate (mit Offset)
+ WORD bob_LastLastBltSize ; vorletzte Breite+Höhe
+
+ LONG bob_LastOffset ; letzte X+Y Koordinate (mit Offset)
+ WORD bob_LastBltSize ; letzte Breite+Höhe
+
+ WORD bob_Image ; aktuelles Bob
+ WORD bob_LastImage ; letztes Bob
+ WORD bob_LastLastImage ; vorletztes Bob
+
+ APTR bob_AnimPrg ; Zeiger auf aktuelles AnimKommando
+ WORD bob_AnimOffset ; Offset ins AnimPrg
+ BYTE bob_AnimSpeed ; AnimationsGeschwindigkeit
+ BYTE bob_AnimSpeedCounter ; Speed-Zähler
+ WORD bob_AnimTo ; Ziel von ANIMTO
+
+ APTR bob_MovePrg ; Zeiger auf aktuelles MoveProgram
+ WORD bob_MoveOffset ; Offsets ins MovePrg
+ BYTE bob_MoveSpeed ; Bewegungsgeschwindigkeit
+ BYTE bob_MoveSpeedCounter ; Speed-Zähler
+ WORD bob_MoveCounter ; Kommando Zähler
+ WORD bob_MoveCommand ; aktuelles Kommando
+ WORD bob_MoveStep ; Geschwindigkeit
+ WORD bob_RelMoveCounter ; Anzahl RelMoves (in Bytes)
+
+ WORD bob_AnimDelayCounter
+ WORD bob_MoveDelayCounter
+
+ WORD bob_LSignalSet ; gesetzte lokale symbols
+ WORD bob_Flags ; diverse Flags (siehe NewBob Struktur)
+ BYTE bob_RemFlag ; Wenn dieses Flag nicht 0 ist, wird Bob entfernt sobald es wieder 0 ist
+ BYTE bob_NewPri
+
+ APTR bob_LastLastSaveBuffer ; HintergrundBuffer für vorletztes Bob
+ APTR bob_LastSaveBuffer ; HintergrundBuffer für letztes Bob
+
+ WORD bob_ClipX ; linke obere X Clip-Koordinate
+ WORD bob_ClipY ; linke obere Y Clip-Koordinate
+ WORD bob_ClipX2 ; rechte untere X Clip-Koordinate
+ WORD bob_ClipY2 ; rechte untere Y Clip-Koordinate
+ WORD bob_ClipFlags ; diverse Flags fürs Cliing
+
+ WORD bob_CollX0
+ WORD bob_CollY0
+ WORD bob_CollX1
+ WORD bob_CollY1
+
+ WORD bob_AnimForCounter ; für AnimPrg-For-Next
+ WORD bob_MoveForCounter ; für MovePrg-For-Next
+
+ APTR bob_OrgTab ; Zeiger auf ersetzende OriginTabelle
+
+ APTR bob_CollHandler ; Wird angesprungen bei MeMask-Koll.
+ WORD bob_MeMask ; which types can collide with this bob
+ WORD bob_HitMask ; which types this bob can collide with
+
+ LONG bob_Handler ; CPU-Prg welches vor dem Zeichnen aufgerufen wird
+ LONG bob_HandlerD0 ; Diesen Wert bekommt man im D0
+
+ WORD bob_MoveToSteps ; Anzahl der noch zu machenden Steps
+ WORD bob_MoveToX ; X Koordinate mit 16 multipliziert
+ WORD bob_MoveToY ; Y Koordinate mit 16 multipliziert
+ WORD bob_MoveToXStep ; X Verschiebung
+ WORD bob_MoveToYStep ; Y Verschiebung
+
+ APTR bob_ConvertTab
+ WORD bob_ConvertSize
+ WORD bob_ConvertOffset
+
+ BYTE bob_TraceMode
+ BYTE bob_TraceLock
+
+ BYTE bob_FlashTime
+ BYTE bob_FlashColor
+
+ LONG bob_UserData ; Frei benutzbar vom User
+ APTR bob_UserDataPtr ; noch mal was für Straub's Ronny
+ WORD bob_UserFlags
+
+ APTR bob_ParentBob
+
+ BYTE bob_sr ; Status-register
+ BYTE bob_Pad1
+
+ LABEL bob_SIZEOF ; Länge der Bob Struktur
+
+ LABEL bob_AnimPtrs ; Array auf die einzelnen Bobs der Animation
+
+bob_Test: EQU 18504
+
+
+ BITDEF JOY,DOWN,0
+ BITDEF JOY,RIGHT,1
+ BITDEF JOY,UP,2
+ BITDEF JOY,LEFT,3
+ BITDEF JOY,FIRE,7