Untitled diff

Creado El diff nunca expira
13 eliminaciones
891 líneas
2 adiciones
892 líneas
;Modded /VISUAL/SMOKE.ASM
;Original


;****************************************************************************
;****************************************************************************
;*
;*
;* SMOKE.ASM
;* SMOKE.ASM
;*
;*
;* Smoke effects generator.
;* Smoke effects generator.
;*
;*
;* 29.11.1992 - KJB
;* 29.11.1992 - KJB
;* 08.02.1993 - KJB - "air" smoke effects added.
;* 08.02.1993 - KJB - "air" smoke effects added.
;*
;*
;****************************************************************************
;****************************************************************************


OPTION M510 ;<<<<< MASM v5.10 <<<<<
OPTION M510 ;<<<<< MASM v5.10 <<<<<


PUBLIC MakeSmokeEffect
PUBLIC MakeSmokeEffect


PUBLIC ScanSmoke
PUBLIC ScanSmoke


EXTRN RandX:FAR
EXTRN RandX:FAR
EXTRN CalcGndHeight:FAR
EXTRN CalcGndHeight:FAR


EXTRN DrawSmoke:NEAR
EXTRN DrawSmoke:NEAR


EXTRN LastFrame:WORD
EXTRN LastFrame:WORD
EXTRN DeltaTime:WORD
EXTRN DeltaTime:WORD


;============================================================================
;============================================================================


INCLUDE VISDATA.INC
INCLUDE VISDATA.INC
INCLUDE PALETTES.INC
INCLUDE PALETTES.INC


INCLUDE \LIB8086\USEFUL.INC
INCLUDE \LIB8086\USEFUL.INC
;============================================================================
;============================================================================


DATA SEGMENT PARA PUBLIC 'DATA'
DATA SEGMENT PARA PUBLIC 'DATA'


NextSmokePtr DW OFFSET SmokeBuffer
NextSmokePtr DW OFFSET SmokeBuffer


TMP_SMOKE SMOKE <>
TMP_SMOKE SMOKE <>


;* init smoke effect switch
;* init smoke effect switch


InitSmoke DW InitCrater1 ;SMOKE_CRATER1
InitSmoke DW InitCrater1 ;SMOKE_CRATER1
DW InitCrater2 ;SMOKE_CRATER2
DW InitCrater2 ;SMOKE_CRATER2
DW InitCrater3 ;SMOKE_CRATER3
DW InitCrater3 ;SMOKE_CRATER3
DW InitBurning ;SMOKE_BURNING
DW InitBurning ;SMOKE_BURNING
DW InitKickUp ;SMOKE_KICK_UP
DW InitKickUp ;SMOKE_KICK_UP
DW InitAirExplo ;SMOKE_AIR_EXPLO
DW InitAirExplo ;SMOKE_AIR_EXPLO
DW InitAirTrail ;SMOKE_AIR_TRAIL
DW InitAirTrail ;SMOKE_AIR_TRAIL


;* control smoke switch
;* control smoke switch


CtrlSmoke DW CtrlNull ;STYPE_NULL
CtrlSmoke DW CtrlNull ;STYPE_NULL
DW CtrlGnd1 ;STYPE_GND1
DW CtrlGnd1 ;STYPE_GND1
DW CtrlAir1 ;STYPE_AIR1
DW CtrlAir1 ;STYPE_AIR1
DATA ENDS
DATA ENDS


;============================================================================
;============================================================================


SMOKEDATA SEGMENT PARA PUBLIC 'DATA'
SMOKEDATA SEGMENT PARA PUBLIC 'DATA'


;* cyclic buffer for smoke
;* cyclic buffer for smoke


SmokeBuffer LABEL SMOKE
SmokeBuffer LABEL SMOKE


SMOKE NUM_SMOKE DUP(<>)
SMOKE NUM_SMOKE DUP(<>)


SmokeBufEnd LABEL SMOKE
SmokeBufEnd LABEL SMOKE


SMOKEDATA ENDS
SMOKEDATA ENDS


;============================================================================
;============================================================================


VISCODE SEGMENT BYTE PUBLIC 'CODE'
VISCODE SEGMENT BYTE PUBLIC 'CODE'
ASSUME CS:VISCODE
ASSUME CS:VISCODE
ASSUME DS:DATA
ASSUME DS:DATA


;* MakeSmokeEffect
;* MakeSmokeEffect
;*
;*
;* pass: bx = smoke effect type (see VISDATA.INC)
;* pass: bx = smoke effect type (see VISDATA.INC)
;* si -> VIEWPOINT data block
;* si -> VIEWPOINT data block
;* ret : nothing
;* ret : nothing
;* kill: assume all
;* kill: assume all


MakeSmokeEffect PROC FAR
MakeSmokeEffect PROC FAR


;-----------------------
;-----------------------
;* copy viewpoint origin
;* copy viewpoint origin
;-----------------------
;-----------------------


mov ax,[si].VP_XSEC
mov ax,[si].VP_XSEC
mov TMP_SMOKE.SMOKE_XSEC,ax
mov TMP_SMOKE.SMOKE_XSEC,ax


mov ax,[si].VP_YSEC
mov ax,[si].VP_YSEC
mov TMP_SMOKE.SMOKE_YSEC,ax
mov TMP_SMOKE.SMOKE_YSEC,ax


mov ax,[si].VP_XFT
mov ax,[si].VP_XFT