home *** CD-ROM | disk | FTP | other *** search
- INCLUDE D:\POWERU\PWRFUNC.INC
-
- MODPLAY EQU 64
- PICTUREDATA EQU MODPLAY+1369
- MUZSAKDATA EQU PICTUREDATA+4048
- SCREENMASK EQU MUZSAKDATA+13570
- EXTERNDATA EQU SCREENMASK+4048
-
- DOSSEG
- .386
- .MODEL USE16 SMALL
- .STACK
- .DATA
-
- INTERRUPTNUM DB 5
- SBADDRESS DW 220H
- SAMPLERATE DW 22050
- EYEDISTANCE DW 512
- ORIGO_X DW 159
- ORIGO_Y DW 99
- ORIGO_Z DW 200
- MODULEPLAYER DW 0,0
- CALC1 DW 0
- CALC2 DW 0
- CALC3 DW 0
- CALC4 DW 0
- CALC5 DW 0
- CALC6 DW 0
- CALC7 DW 0
- CALC8 DW 0
- CALC9 DW 0
- SINALFA DW 0
- SINBETA DW 0
- SINGAMMA DW 0
- COSALFA DW 0
- COSBETA DW 0
- COSGAMMA DW 0
- NOTMEM DB '350KB MEMORY REQUIRED FOR RUNNING!!',13,10,'$'
- INTROEVENTDATA DW RESETANGLES,0,0
- DW RESETSM,0,0
- DW EMPTYCIK,0,50
- DW STARMOVING,0,735
- DW SETROTATEDATA,0,0
- DW SETMETADATA,0,0
- DW METAMORPHING,1,METAMORPHLENGTH
- DW ROTATEHEAD,0,250
- DW SETDELAYVON,0,0
- DW COPYFACE1,0,0
- DW SETMETADATA,0,0
- DW METAMORPHING,1,METAMORPHLENGTH
- DW ROTATEHEAD2,0,200
- DW PRESETFADING,0,0
- DW FADEUPCIK,0,0
- DW RESTORESTARS,0,0
- DW SETMETADATA,0,0
- DW METAMORPHING2,1,METAMORPHLENGTH2
- DW 0,0FFFFH
- STARSPEED DW 3
- METAMORPHLENGTH DW 185
- METAMORPHLENGTH2 DW 768
- METAMORPHCIK DW 0
- PRESENTBACKGRND DW 1000;0
- PREVIOUSBACKGRND DW 0;0
- STARS DW 1500 DUP(0)
- INCLUDE DATAS.DB
- INCLUDE FACE.DAT
-
- COLORPRESET DB 768 DUP(0)
-
- .CODE
-
- STARTUP: ;/////////////////////
- PUSH DGROUP
- POP DS
- ;/////////////////////
- MOV AX,SS
- ADD AX,EXTERNDATA
- MOV FS,AX
- ;/////////////////////
- MOV AX,SS
- ADD AX,SCREENMASK
- MOV GS,AX
- MOV CX,64000
- XOR AL,AL
- XOR DI,DI
- ZEROSCREENMASK: MOV GS:[DI],AL
- INC DI
- DEC CX
- JNZ ZEROSCREENMASK
- ;/////////////////////
- MOV AX,0A000H
- MOV ES,AX
- ;/////////////////////
- RET
-
- ;------------------------------------------------------------------------------
-
- INSTALLMUZAK: PUSH ES
- XOR BX,BX
- XOR AX,AX
- MOV DL,INTERRUPTNUM
- CALL DWORD PTR [MODULEPLAYER]
- MOV AX,SS
- ADD AX,MUZSAKDATA
- MOV ES,AX
- XOR DI,DI
- MOV BX,1
- MOV CX,BX
- XOR DX,DX
- CALL DWORD PTR [MODULEPLAYER]
- POP ES
- MOV AX,SAMPLERATE
- MOV BX,2
- CALL DWORD PTR [MODULEPLAYER]
- MOV BX,3
- CALL DWORD PTR [MODULEPLAYER]
- RET
-
- TURNOFFMUZAK: MOV BX,4
- CALL DWORD PTR [MODULEPLAYER]
- RET
-
- ;------------------------------------------------------------------------------
-
- RESTORESTARS: PUSHA
- MOV CX,500
- MOV AX,-250
- LEA SI,STARS
- SETEXITINGCIK: MOV [SI],AX
- MOV WORD PTR [SI+2],200
- MOV WORD PTR [SI+4],0
- ADD SI,6
- ADD AX,2
- DEC CX
- JNZ SETEXITINGCIK
- LEA SI,STARS
- CALL MAKEHEADDATA
- POPA
- RET
-
- COPYFACE1: PUSHA
- LEA SI,DATAS
- CALL MAKEHEADDATA
- POPA
- RET
-
- MAKEHEADDATA: MOV CX,1500
- XOR DI,DI
- LEA DI,HEADDATA
- MAKEHEADDATACIK:LODSW
- MOV DS:[DI],AX
- ADD DI,2
- DEC CX
- JNZ MAKEHEADDATACIK
- RET
-
- RESETANGLES: MOV PRESENTANGLE_X,0
- MOV PRESENTANGLE_Y,0
- MOV PRESENTANGLE_Z,0
- RET
-
- SETDELAYVON: MOV PRESENTBACKGRND,10000
- MOV PREVIOUSBACKGRND,0
- RET
-
- SETDELAYVOFF: RET
-
- RESETSM: PUSHA
- MOV CX,500
- XOR SI,SI
- MOV BP,3000
- ADD BP,PREVIOUSBACKGRND
- RESETSTARDATA: MOV RNDMAX,500
- CALL RANDOM
- SUB AX,250
- MOV FS:[SI],AX
- MOV RNDMAX,500
- CALL RANDOM
- SUB AX,250
- MOV FS:[SI+2],AX
- MOV RNDMAX,1224
- CALL RANDOM
- ADD AX,311
- MOV FS:[SI+4],AX
- MOV FS:[BP],WORD PTR 0FFFEH
- MOV FS:[BP+2],BYTE PTR 0
- ADD SI,6
- ADD BP,2
- DEC CX
- JNZ RESETSTARDATA
- POPA
- RET
-
- SETMETADATA: PUSHA
- MOV METAMORPHCIK,1
- XOR SI,SI
- MOV CX,1500
- SETMETADATACIK: MOV AX,HEADDATA[SI]
- MOV BX,FS:[SI+25500];20000
- SUB AX,BX
- MOV FS:[SI+19500],BX;14000
- MOV FS:[SI+22500],AX;17000
- ADD SI,2
- DEC CX
- JNZ SETMETADATACIK
- POPA
- RET
-
- EMPTYCIK: RET
-
- SETROTATEDATA: PUSHA
- MOV CX,1500
- XOR SI,SI
- SETRDATACIK: MOV AX,FS:[SI]
- MOV FS:[SI+25500],AX;20000
- ADD SI,2
- LOOP SETRDATACIK
- POPA
- RET
-
- ;------------------------------------------------------------------------------
-
- PUTSTARS: CLI
- PUSHA
- XOR SI,SI
- MOV DI,3000
- MOV CX,500
- MOV BX,PREVIOUSBACKGRND
- PUTSTARSCIKPS: PUSH BX
- PUSH DI
- MOV BP,FS:[DI][BX]
- MOV ES:[BP],BYTE PTR 0
- MOV AX,FS:[SI]
- MOV BX,EYEDISTANCE
- IMUL BX
- ADD BX,FS:[SI+4]
- ADD BX,ORIGO_Z
- MOV DI,BX
- IDIV BX
- ADD AX,ORIGO_X
- MOV BX,0FFFFH
- CMP AX,0
- JL NOPUTPIXELPS
- CMP AX,319
- JG NOPUTPIXELPS
- MOV BP,AX
- MOV AX,FS:[SI+2]
- MOV BX,EYEDISTANCE
- IMUL BX
- IDIV DI
- NEG AX
- ADD AX,ORIGO_Y
- MOV BX,0FFFFH
- CMP AX,0
- JL NOPUTPIXELPS
- CMP AX,199
- JG NOPUTPIXELPS
-
- MOV DX,AX
- SHL DX,8
- SHL AX,6
- ADD AX,DX
-
- ;MOV BX,320
- ;MUL BX
- ADD BP,AX
- MOV BX,0FFFEH
- OR GS:[BP],BYTE PTR 0
- JNZ NOPUTPIXELPS
- MOV AX,DI
- SHR AX,4
- INC AL
- CMP AL,64
- JA NOPUTPIXELPS
- MOV BX,BP
- MOV ES:[BP],AL
- NOPUTPIXELPS: POP DI
- MOV BP,PRESENTBACKGRND
- MOV FS:[DI][BP],BX
- POP BX
- ADD SI,6
- ADD DI,2
- DEC CX
- JNZ PUTSTARSCIKPS
- ADD PRESENTBACKGRND,1000
- CMP PRESENTBACKGRND,10000
- JBE NOZPRBPS
- MOV PRESENTBACKGRND,0
- NOZPRBPS: ADD PREVIOUSBACKGRND,1000
- CMP PREVIOUSBACKGRND,10000
- JBE NOZPVBPS
- MOV PREVIOUSBACKGRND,0
- NOZPVBPS: POPA
- STI
- RET
-
- ;------------------------------------------------------------------------------
-
- MOVESTARS: MOV CX,500
- XOR SI,SI
- MOV BP,3000
- MOV BX,-511
- SUB BX,ORIGO_Z
- MOV DI,PRESENTBACKGRND
- SUB DI,1000
- JAE MOVESTCIK
- ;MOV DI,10000
- MOVESTCIK: CMP WORD PTR FS:[BP][DI],0FFFFH
- JZ NEWSTAR
- MOV AX,FS:[SI+4]
- SUB AX,STARSPEED
- CMP AX,BX
- JL NEWSTAR
- MOV FS:[SI+4],AX
- RETMSCIK: ADD SI,6
- ADD BP,2
- DEC CX
- JNZ MOVESTCIK
- RET
- NEWSTAR: MOV WORD PTR FS:[BP][DI],0FFFEH
- MOV RNDMAX,500
- CALL RANDOM
- SUB AX,250
- MOV FS:[SI],AX
- MOV RNDMAX,500
- CALL RANDOM
- SUB AX,250
- MOV FS:[SI+2],AX
- MOV WORD PTR FS:[SI+4],512
- JMP RETMSCIK
-
- STARMOVING: PUSHA
- CALL PUTSTARS
- CALL MOVESTARS
- POPA
- RET
-
- ;------------------------------------------------------------------------------
-
- METAMORPHING: PUSHA
- MOV AX,METAMORPHLENGTH
- CMP METAMORPHCIK,AX
- JZ NOINCMETACIK
- INC METAMORPHCIK
- NOINCMETACIK: MOV CX,1500
- XOR SI,SI
- MOV BX,METAMORPHCIK
- MOV DI,METAMORPHLENGTH
- METASTARSCIK: MOV AX,FS:[SI+22500];17000
- IMUL BX
- IDIV DI
- ADD AX,FS:[SI+19500];14000
- MOV FS:[SI+25500],AX;20000
- ADD SI,2
- DEC CX
- JNZ METASTARSCIK
- XOR DI,DI
- MOV SI,25500;20000
- MOV CX,500
- ADD PRESENTANGLE_X,1;2
- ;ADD PRESENTANGLE_Y,2
- ADD PRESENTANGLE_Z,1;2
- PUSH BX
- MOV AX,FS
- MOV BX,AX
- CALL ROTATEPOINTS
- POP BX
- CALL PUTSTARS
- POPA
- RET
-
- METAMORPHING2: PUSHA
- MOV AX,METAMORPHLENGTH
- CMP METAMORPHCIK,AX
- JZ NOINCMETACIK2
- INC METAMORPHCIK
- NOINCMETACIK2: MOV CX,1500
- XOR SI,SI
- MOV BX,METAMORPHCIK
- MOV DI,METAMORPHLENGTH
- METASTARSCIK2: MOV AX,FS:[SI+22500];17000
- IMUL BX
- IDIV DI
- ADD AX,FS:[SI+19500];14000
- MOV FS:[SI+25500],AX;20000
- ADD SI,2
- DEC CX
- JNZ METASTARSCIK2
- XOR DI,DI
- MOV SI,25500;20000
- MOV CX,500
- ADD PRESENTANGLE_X,1
- ADD PRESENTANGLE_Z,2
- ADD ORIGO_Z,1
- PUSH BX
- MOV AX,FS
- MOV BX,AX
- CALL ROTATEPOINTS
- POP BX
- CALL PUTSTARS
- POPA
- RET
-
-
- ;------------------------------------------------------------------------------
-
- ROTATEHEAD: PUSHA
- ADD PRESENTANGLE_X,1;2
- ADD PRESENTANGLE_Y,1;2
- ADD PRESENTANGLE_Z,1;2
- MOV CX,500
- MOV SI,25500;20000
- XOR DI,DI
- MOV AX,FS
- MOV BX,AX
- CALL ROTATEPOINTS
- CALL PUTSTARS
- POPA
- RET
-
- ROTATEHEAD2: PUSHA
- OR PRESENTANGLE_X,0
- JZ NOADDXA
- ADD PRESENTANGLE_X,1;2
- NOADDXA: OR PRESENTANGLE_Y,0
- JZ NOADDYA
- ADD PRESENTANGLE_Y,1;2
- NOADDYA: OR PRESENTANGLE_Z,0
- JZ NOADDZA
- ADD PRESENTANGLE_Z,1;2
- NOADDZA: SUB ORIGO_Z,2
- CMP ORIGO_Z,0
- JGE NOZEROORIGO
- MOV ORIGO_Z,0
- NOZEROORIGO: MOV CX,500
- MOV SI,25500
- XOR DI,DI
- MOV AX,FS
- MOV BX,AX
- CALL ROTATEPOINTS
- CALL PUTSTARS
- POPA
- RET
-
- PRESETFADING: PUSHA
- MOV AX,SS
- ADD AX,PICTUREDATA
- MOV GS,AX
- MOV SI,64000
- XOR DI,DI
-
- MOV CX,195
- COPYCOLORSCIK: MOV AL,GS:[SI]
- MOV COLORPRESET[DI],AL
- INC SI
- INC DI
- DEC CX
- JNZ COPYCOLORSCIK
- MOV AX,DS
- LEA BX,COLORPRESET
- CALL SETCOLORS
- MOV CX,32000
- XOR DI,DI
- PUTLOGO: MOV AX,GS:[DI]
- STOSW
- DEC CX
- JNZ PUTLOGO
- POPA
- RET
-
- FADEUPCIK: PUSHA
- MOV AX,SS
- ADD AX,PICTUREDATA
- MOV BX,64000
- CALL SETCOLORS
- POPA
- RET
-
- ;------------------------------------------------------------------------------
-
- START: CALL STARTUP
- MOV AX,350
- CALL CHECKMEMORY
- JNC MEMORYOK
- MOV AH,9
- LEA DX,NOTMEM
- INT 21H
- JMP EXIT
- MEMORYOK: MOV AX,13H
- INT 10H
- MOV AX,SS
- ADD AX,PICTUREDATA
- MOV BX,64000
- CALL SETCOLORS
- MOV AX,SS
- ADD AX,MODPLAY
- MOV MODULEPLAYER[2],AX
- MOV MODULEPLAYER[0],0
- CALL INSTALLMUZAK
-
- XOR SI,SI
- NEWORDER: MOV CX,INTROEVENTDATA[SI+2]
- CMP CX,0FFFFH
- JZ ENDMAINCIK
- MOV AX,INTROEVENTDATA[SI+4]
- OR CX,CX
- JZ NOEXTERNL
- MOV DI,AX
- MOV AX,DS:[DI]
- NOEXTERNL: MOV CX,AX
- OR CX,CX
- JNZ MAINCIK
- CALL INTROEVENTDATA[SI]
- ADD SI,6
- JMP NEWORDER
- MAINCIK: CALL WAITVERTRETRACE
-
- ;CALL RTIMEON
- MOV BX,7
- CALL DWORD PTR [MODULEPLAYER]
- CALL INTROEVENTDATA[SI]
-
- MOV AH,1
- INT 16H
- JZ NOENDMAINCIK
- XOR AH,AH
- INT 16H
- JMP ENDMAINCIK
- NOENDMAINCIK: ;CALL RTIMEOFF
- LOOP MAINCIK
- ADD SI,6
- JMP NEWORDER
-
- ENDMAINCIK: CALL TURNOFFMUZAK
- MOV CX,32
- ENDFADECIK: CALL WAITVERTRETRACE
- PUSH CX
- MOV CX,100
- SELFLOOP: LOOP SELFLOOP
- POP CX
- CALL WAITVERTRETRACE
- CALL FADEDWCOLORS
- LOOP ENDFADECIK
- JMP FATALEXIT
- END START
-