443 lines
6.9 KiB
Plaintext
443 lines
6.9 KiB
Plaintext
ADDBCD MACRO DE,SO
|
||
MOV SI,OFFSET SO
|
||
MOV DI,OFFSET DE
|
||
CALL ADDSCOREBCD
|
||
ENDM
|
||
DOWNCOUNT MACRO CNT,RUT
|
||
LOCAL ARZERO
|
||
CMP CNT,0
|
||
JZ ARZERO
|
||
DEC CNT
|
||
JNZ ARZERO
|
||
CALL RUT
|
||
ARZERO: ENDM
|
||
UPDATE_LIGHT MACRO LINUM,STRUCADR
|
||
;FN: DOES LIGHTON LINUM IF [STRUCADR] IS TRUE, AND OFF IF FALSE.
|
||
PUSH BX
|
||
MOV AL,LINUM
|
||
MOV AH,STRUCADR
|
||
CALL DO_UPDATE_LIGHT
|
||
POP BX
|
||
ENDM
|
||
|
||
UPDATE_PSTRUC MACRO STRUCADR,LINUM
|
||
;FN: [STRUCADR]=TRUE IF LINUM IS ON, FALSE IF OFF
|
||
PUSH BX
|
||
LEA BX,STRUCADR
|
||
MOV AL,LINUM
|
||
CALL DO_UPDATE_PSTRUC
|
||
POP BX
|
||
ENDM
|
||
|
||
IFZEROBCD MACRO BCDOFFS
|
||
LOCAL NOTZZZERO,AGAINZZZERO,ENDZZZERO
|
||
;FN: TEST IF BCD CODED FIGURE = 0
|
||
;INPUT: OFFSET TO BCD CODED FIGURE
|
||
;OUTPUT: -C- IF NOT ZERO
|
||
PUSH AX BX CX
|
||
PUSH OFFSET BCDOFFS
|
||
POP BX
|
||
MOV CX,6
|
||
NIL AX
|
||
AGAINZZZERO:
|
||
CMP [BX],AX
|
||
JNZ NOTZZZERO
|
||
ADD BX,2
|
||
LOOP AGAINZZZERO
|
||
CLC
|
||
JMP ENDZZZERO
|
||
NOTZZZERO:
|
||
STC
|
||
ENDZZZERO:
|
||
POP CX BX AX
|
||
ENDM
|
||
updat_infobar macro
|
||
local nofjant
|
||
mov nodotcount,0
|
||
cmp fjanttext,true
|
||
jne nofjant
|
||
pusha
|
||
mov bx,OFFSET showplayersTS
|
||
call do_matrix
|
||
mov fjanttext,false
|
||
popa
|
||
nofjant:
|
||
endm
|
||
|
||
updat_score macro
|
||
;rensa buffern!!
|
||
push es
|
||
move es,data
|
||
mov ax,1212h ;tja, vadsomhelst som scoren inte kan va!!
|
||
mov di,offset oldbuf
|
||
mov cx,12/2
|
||
rep stosw
|
||
mov es:lastcommas,0 ;komman kommer att komma s„ttas ut :-)
|
||
pop es
|
||
endm
|
||
|
||
startanim macro offerten ;anim som ska animeras, om upptaget s„tts intflag
|
||
local noanimallowed
|
||
local nointerrupt
|
||
mov si,sisa
|
||
cmp si,0
|
||
je nointerrupt ;jne noanimallowed
|
||
mov intflag,true
|
||
nointerrupt:
|
||
assume ds:data2
|
||
; lea si,offerten
|
||
mov si,offerten
|
||
move ds,data2
|
||
mov animptr,0
|
||
mov vblanksbet,1
|
||
move loopes,ds:[si-4]
|
||
move ds,data
|
||
assume ds:data
|
||
mov dotrut,offset animation_routine
|
||
mov sisa,si
|
||
|
||
noanimallowed:
|
||
endm
|
||
|
||
startscroll macro offerten ;text som ska skrollas, om upptaget h„nder inget
|
||
local noscrollallowed
|
||
local nointerrupt
|
||
|
||
mov si,sisa
|
||
cmp si,0
|
||
je nointerrupt ;jne noanimallowed
|
||
mov intflag,true
|
||
nointerrupt:
|
||
; jne noscrollallowed
|
||
; assume ds:data
|
||
mov si,offerten
|
||
; lea si,offerten
|
||
assume ds:data
|
||
mov dotrut,offset scrolle
|
||
mov sisa,si
|
||
noscrollallowed:
|
||
endm
|
||
|
||
|
||
EFFECT MACRO EFFOFFSET
|
||
MOV SI,OFFSET EFFOFFSET
|
||
CALL DOEFFECT
|
||
ENDM
|
||
|
||
IF_ERROR MACRO ERR,ADR
|
||
LOCAL NOTERR
|
||
CMP AL,ERR
|
||
JNE NOTERR
|
||
JMP ADR
|
||
NOTERR: ENDM
|
||
|
||
READREG MACRO PORT,INDEX
|
||
MOV DX,PORT
|
||
MOV AL,INDEX
|
||
OUT DX,AL
|
||
INC DX
|
||
IN AL,DX
|
||
ENDM
|
||
|
||
WRITEREG MACRO PORT,INDEX
|
||
MOV DX,PORT
|
||
MOV AH,AL
|
||
MOV AL,INDEX
|
||
OUT DX,AX
|
||
ENDM
|
||
|
||
SAVEGFXREGS MACRO
|
||
READREG 3C4H,2 ;BITPLANMASK
|
||
MOV AH,AL
|
||
READREG 3CEH,0 ;SET/RESET
|
||
PUSH AX
|
||
READREG 3CEH,1 ;ENABLE SET/RESET
|
||
MOV AH,AL
|
||
READREG 3CEH,4 ;READ MAP SELECT
|
||
PUSH AX
|
||
READREG 3CEH,5 ;WRITEMODE
|
||
MOV AH,AL
|
||
READREG 3CEH,8 ;BITMASK
|
||
PUSH AX
|
||
MOV DX,3CEH
|
||
MOV AX,0FF08H
|
||
OUT DX,AX ;BITMASK OUTAD
|
||
ENDM
|
||
|
||
RESTOREGFXREGS MACRO
|
||
POP AX
|
||
PUSH AX
|
||
MOV AL,AH
|
||
WRITEREG 3CEH,5
|
||
POP AX
|
||
WRITEREG 3CEH,8
|
||
POP AX
|
||
PUSH AX
|
||
WRITEREG 3CEH,4
|
||
POP AX
|
||
MOV AL,AH
|
||
WRITEREG 3CEH,1
|
||
POP AX
|
||
PUSH AX
|
||
WRITEREG 3CEH,0
|
||
POP AX
|
||
MOV AL,AH
|
||
WRITEREG 3C4H,2
|
||
ENDM
|
||
|
||
WAITSYNCS MACRO NOOFSYNCS
|
||
LOCAL DONTDORETN
|
||
MOV DX,NOOFSYNCS
|
||
MOV BX,NOOFWAITSYNCS+OFFSET WAITLIST
|
||
CALL DOWAITSYNCS
|
||
JC DONTDORETN
|
||
RETN
|
||
DONTDORETN:
|
||
NOOFWAITSYNCS=NOOFWAITSYNCS+2
|
||
ENDM
|
||
|
||
ADDTASK MACRO THETASK
|
||
MOV DX,OFFSET THETASK
|
||
CALL DOADDTASK
|
||
ENDM
|
||
|
||
SUICIDE MACRO
|
||
JMP DOSUICIDE
|
||
ENDM
|
||
|
||
LIGHTON MACRO LIGHTNUM
|
||
MOV BL,LIGHTNUM
|
||
CALL DOLIGHTON
|
||
ENDM
|
||
|
||
LIGHTOFF MACRO LIGHTNUM
|
||
MOV BL,LIGHTNUM
|
||
CALL DOLIGHTOFF
|
||
ENDM
|
||
|
||
LIGHTFLASH MACRO LIGHTNUM,FLASHSPEED
|
||
MOV DL,LIGHTNUM
|
||
MOV DH,FLASHSPEED
|
||
NIL AL
|
||
CALL DOLIGHTFLASH
|
||
ENDM
|
||
|
||
SYNCEDFLASH MACRO LIGHTNUM,FLASHSPEED,SYNCVAR
|
||
MOV DL,LIGHTNUM
|
||
MOV DH,FLASHSPEED
|
||
MOV AL,SYNCVAR
|
||
CALL DOLIGHTFLASH
|
||
ENDM
|
||
|
||
INVERTEDSYNCEDFLASH MACRO LIGHTNUM,FLASHSPEED,SYNCVAR
|
||
LOCAL ALOK
|
||
MOV DL,LIGHTNUM
|
||
MOV DH,FLASHSPEED
|
||
MOV AL,SYNCVAR
|
||
ADD AL,DH
|
||
MOV BL,DH
|
||
SHL BL,1
|
||
CMP AL,BL
|
||
JB ALOK
|
||
SUB AL,BL
|
||
ALOK: CALL DOLIGHTFLASH
|
||
ENDM
|
||
|
||
ENDFLASH MACRO LIGHTNUM
|
||
MOV DL,LIGHTNUM
|
||
CALL DOENDFLASH
|
||
ENDM
|
||
|
||
REALON MACRO LIGHTNOO ;DESTROYS: AX,BX,CX,SI,DI,ES
|
||
MOV BL,LIGHTNOO
|
||
NIL BH
|
||
DEC BX
|
||
SHL BX,1
|
||
MOV SI,LONINDEX[BX]
|
||
MOVE ES,DS
|
||
MOV DI,RGBBUFPTR
|
||
;FLYTTA [SI] TILL [DI] & UPPDAT RGBBUFPTR!
|
||
MOVSB ;START COL
|
||
LODSB ;AL=RGB LEN
|
||
STOSB
|
||
MOV CL,AL
|
||
NIL CH
|
||
REP MOVSB ;R,G,B ETC
|
||
MOV RGBBUFPTR,DI
|
||
ENDM
|
||
|
||
LON MACRO LIGHTNOO ;DESTROYS: AX,BX,CX,SI,DI,ES
|
||
MOV BL,LIGHTNOO
|
||
CALL DOLON
|
||
ENDM
|
||
|
||
REALOFF MACRO LIGHTNOO ;DESTROYS: AX,BX,CX,SI,DI,ES
|
||
LOCAL NXTCUL
|
||
MOV BL,LIGHTNOO
|
||
NIL BH
|
||
DEC BX
|
||
SHL BX,1
|
||
MOV SI,LONINDEX[BX]
|
||
MOVE ES,DS
|
||
MOV DI,RGBBUFPTR
|
||
;FLYTTA [SI] TILL [DI] & UPPDAT RGBBUFPTR!
|
||
MOVSB ;START COL
|
||
LODSB ;AL=RGB LEN
|
||
STOSB
|
||
MOV CL,AL
|
||
NIL CH
|
||
NXTCUL: LODSB
|
||
SHR AL,1
|
||
STOSB
|
||
LOOP NXTCUL
|
||
MOV RGBBUFPTR,DI
|
||
ENDM
|
||
|
||
LOFF MACRO LIGHTNOO ;DESTROYS: AX,BX,CX,SI,DI,ES
|
||
MOV BL,LIGHTNOO
|
||
CALL DOLOFF
|
||
ENDM
|
||
|
||
ADDSCORE MACRO HOWMUCH
|
||
MOV SI,OFFSET HOWMUCH
|
||
MOV DI,OFFSET SIFFRORNA
|
||
CALL ADDSCOREBCD
|
||
MOV SCORECHANGED,TRUE
|
||
UPDAT_INFObar
|
||
ENDM
|
||
|
||
ADDBONUS MACRO HOWMUCH
|
||
LOCAL MB_LOOPEN2,NO_LOOP2
|
||
MOV SI,OFFSET HOWMUCH
|
||
MOV DI,OFFSET BONUSSIFFRORNA
|
||
MOV CX,BONUSMULTIPEL
|
||
MB_LOOPEN2:
|
||
PUSHA
|
||
CALL ADDSCOREBCD
|
||
POPA
|
||
JCXZ NO_LOOP2
|
||
LOOP MB_LOOPEN2
|
||
NO_LOOP2:
|
||
ENDM
|
||
|
||
PLAYJINGLE MACRO JINGSTRUC
|
||
MOV SI,OFFSET JINGSTRUC
|
||
CALL DOPLAYJINGLE
|
||
ENDM
|
||
PLAYJINGLE_PENETRATE MACRO JINGSTRUC
|
||
MOV JINGLEJUMPCNT,1
|
||
|
||
MOV SI,OFFSET JINGSTRUC
|
||
CALL DOPLAYJINGLE
|
||
ENDM
|
||
|
||
JINGLE MACRO JING
|
||
MOV BX,JING
|
||
MOV AL,JINGLEJUMPCNT
|
||
MOV LASTLOOPVAL,AL
|
||
MOV AL,16
|
||
INT 66H
|
||
ENDM
|
||
|
||
SETBALLPOS MACRO XP,YP,XS,YS,PP
|
||
MOV SC_X,XP
|
||
MOV SC_Y,YP
|
||
MOV BALLHIGH,PP
|
||
MOV AX,1024
|
||
MUL SC_X
|
||
MOV X_POS,AX
|
||
MOV X_POS_HI,DX
|
||
MOV AX,1024
|
||
MUL SC_Y
|
||
MOV Y_POS,AX
|
||
MOV Y_POS_HI,DX
|
||
MOV Y_HAST,YS
|
||
MOV X_HAST,XS
|
||
; MOV ROTATION,0 ;cp!? blir fler variationer utan (drop zone bl a)
|
||
ENDM
|
||
|
||
SETBALLSPEED MACRO XS,YS
|
||
MOV Y_HAST,YS
|
||
MOV X_HAST,XS
|
||
MOV ROTATION,0
|
||
ENDM
|
||
|
||
SOUNDEFFECT MACRO EFFECT,volume
|
||
mov bh,volume
|
||
MOV CL,EFFECT+0
|
||
MOV BL,EFFECT+1
|
||
MOV DL,EFFECT+3
|
||
INC DL
|
||
MOV AL,17
|
||
INT 66H
|
||
ENDM
|
||
SOUNDEFFECT2 MACRO EFFECT,volume
|
||
mov Dh,volume
|
||
MOV BX,EFFECT
|
||
MOV CL,[BX+0]
|
||
MOV DL,[BX+3]
|
||
MOV BL,[BX+1]
|
||
MOV BH,DH
|
||
INC DL
|
||
MOV AL,17
|
||
INT 66H
|
||
ENDM
|
||
|
||
PLAYEFF MACRO EFFECT,PERIOD
|
||
MOV CL,EFFECT
|
||
MOV BL,PERIOD
|
||
MOV DL,4
|
||
MOV AL,17
|
||
INT 66H
|
||
ENDM
|
||
|
||
SET_DS MACRO KLAS
|
||
PUSH KLAS
|
||
POP DS
|
||
ENDM
|
||
SET_ES MACRO KLAS
|
||
PUSH KLAS
|
||
POP ES
|
||
ENDM
|
||
|
||
SETMARG MACRO COLOR
|
||
MOV DX,3DAH
|
||
IN AL,DX
|
||
MOV DL,0C0H
|
||
MOV AL,11H+20H
|
||
OUT DX,AL
|
||
MOV AL,COLOR
|
||
OUT DX,AL
|
||
ENDM
|
||
OUTA MACRO PORT,INDEX,DATA
|
||
MOV DX,PORT
|
||
MOV AL,INDEX
|
||
MOV AH,DATA
|
||
OUT DX,AX
|
||
ENDM
|
||
SYNC MACRO
|
||
LOCAL L1,L2
|
||
MOV DX,3DAH
|
||
L1: IN AL,DX
|
||
TEST AL,8
|
||
JNZ L1
|
||
L2: IN AL,DX
|
||
TEST AL,8
|
||
JZ L2
|
||
ENDM
|
||
SETRASTERPOS MACRO RASTER
|
||
MOV AX,SW/4
|
||
MUL RASTER
|
||
MOV BX,AX
|
||
MOV DX,3D4H
|
||
MOV AL,0CH
|
||
MOV AH,BH
|
||
OUT DX,AX
|
||
INC AL
|
||
MOV AH,BL
|
||
OUT DX,AX
|
||
ENDM
|
||
|
||
|
||
|
||
|