pinballfantasies/FANTASIE.MAC

443 lines
6.9 KiB
Plaintext
Raw Permalink Blame History

This file contains invisible Unicode characters!

This file contains invisible Unicode characters that may be processed differently from what appears below. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to reveal hidden characters.

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