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
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|