244 lines
4.3 KiB
NASM
244 lines
4.3 KiB
NASM
.TITLE 'MINE.ASM'
|
||
.WIDTH 132
|
||
.OPTION B,D,L,T
|
||
.MNOLIST
|
||
|
||
;
|
||
; INITIATED: APRIL 13,1989
|
||
; MODIFIED: !
|
||
; SOFTWARE: MARK TURMELL
|
||
;
|
||
; COPYRIGHT (C) 1989 WILLIAMS ELECTRONICS GAMES, INC.
|
||
;
|
||
;
|
||
; GET THE SYSTEM STUFF
|
||
|
||
.INCLUDE "MPROC.EQU" ;MPROC EQUATES
|
||
.INCLUDE "DISP.EQU" ;DISPLAY PROC. EQUATES
|
||
.INCLUDE "\VIDEO\SYS\SYS.INC" ;Z UNIT SYSTEM EQUATES
|
||
.INCLUDE "\VIDEO\SYS\MACROS.HDR" ;MACROS DEFINITIONS
|
||
.INCLUDE "IMGTBL.GLO"
|
||
.INCLUDE "ROBO.EQU"
|
||
;
|
||
;SYMBOLS EXTERNALLY DEFINED
|
||
;
|
||
.REF BEGINOBJ2,WAVEYX,GAMSTATE,DELPAL,MIN_LIT,WAVE
|
||
.REF GET_VALID_XY,GET_WVADDR,FRANIM,RANGRAND
|
||
.REF OBJON,OBJOFF,HALT,CIRCUIT,STATUS,MCON
|
||
;
|
||
;SYMBOLS DEFINED IN THIS FILE
|
||
;
|
||
.DEF O_MINE,EXPMINE,O_ITEMS,O_ITEMS2
|
||
;
|
||
;UNINITIALIZED RAM DEFINITIONS
|
||
;
|
||
.BSS TMP,8
|
||
;
|
||
;EQUATES FIRST ORIGINATED IN THIS FILE
|
||
;
|
||
.TEXT
|
||
EXPMINE:
|
||
MOVE A10,A8
|
||
; MOVI CLSNEUT|TYPNEUT,A0
|
||
; MOVE A0,*A8(OID),W
|
||
MOVE *A8(OYPOS),A0
|
||
ADDI 033H,A0
|
||
MOVE A0,*A8(OYPOS)
|
||
MOVI 100,A0
|
||
MOVE A0,*A8(OZPOS)
|
||
MOVI BOOM3,A9
|
||
MOVK 1,A1
|
||
JSRP FRANIM
|
||
MOVE A8,A0
|
||
; CALLA DELPAL ;NEEDED? NOT IF IN PLYR PAL!
|
||
CALLA DELOBJ
|
||
DIE
|
||
|
||
BOOM3:
|
||
.LONG EXPb1
|
||
.WORD NEWPALET|4
|
||
.LONG BULLET
|
||
.LONG EXPb2
|
||
.WORD 4
|
||
.LONG EXPb3
|
||
.WORD 5
|
||
.LONG EXPb4
|
||
.WORD 5
|
||
.LONG EXPb5
|
||
.WORD 5
|
||
.LONG EXPb6
|
||
.WORD 5
|
||
.LONG EXPb7
|
||
.WORD 6
|
||
.LONG EXPb8
|
||
.WORD 6
|
||
.LONG EXPb9
|
||
.WORD 6
|
||
.LONG 0
|
||
|
||
O_ITEMS:
|
||
;A2=# OF CASH ITEMS TO CREATE ON SCREEN
|
||
CREATE 0,SENDR
|
||
CREATE 0,SENDR2
|
||
RETS
|
||
O_ITEMS2:
|
||
;A2=# OF CASH ITEMS TO CREATE ON SCREEN
|
||
CREATE 0,SENDR3
|
||
CREATE 0,SENDR3
|
||
RETS
|
||
SENDR2 SLEEP 1
|
||
SENDR SLEEP 01B0H+90
|
||
SENDR3 MOVI 028H,A9 ;28
|
||
MOVI 023H,B0
|
||
MOVI 0D8H,B1
|
||
CALLA RANGRAND
|
||
MOVE A0,A10 ;A10=UPLFT X OF AREA
|
||
MOVI 02DH,B0
|
||
MOVI 0A4H,B1
|
||
CALLA RANGRAND
|
||
MOVE A0,A11 ;A11=UPLFT Y OF AREA
|
||
|
||
OH2 ;CREATE A BUNCH OF THEM
|
||
CREATE CSHPID,ANITEM
|
||
SLEEP 1
|
||
DSJNE A9,OH2
|
||
DIE
|
||
|
||
O_MINE:
|
||
;A2=# OF MINES TO CREATE ON SCREEN
|
||
CREATE MCYCPID,MIN_LIT
|
||
; MOVE @STATUS,A0
|
||
; CMPI 3,A0
|
||
; JRZ OH1
|
||
; CMPI 7,A2 ;EASIER FOR PLAYER 1
|
||
; JRC OH1
|
||
; SUBK 3,A2
|
||
OH1 PUSH A2 ;CREATE A BUNCH OF THEM
|
||
CREATE MNPID,AMINE
|
||
PULL A2
|
||
DSJNE A2,OH1
|
||
RETS
|
||
AMINE:
|
||
;AMINE IS CALLED AT THE START OF A WAVE TO PLACE X # OF HULKS ON SCREEN
|
||
;AT THE BEGINNING OF A WAVE
|
||
MOVI MINE,A2
|
||
CALLA GET_WVADDR
|
||
|
||
MOVE *A0(16),A1,W ;DEC WAVE RAM CNT FOR THIS MINE
|
||
DEC A1
|
||
MOVE A1,*A0(16),W
|
||
|
||
MOVI MINE,A11
|
||
CALLA GET_VALID_XY ;MAKE SURE NEW BUST IS NOT
|
||
;OVERLAPPING ANY EXISTING SHAPE
|
||
;WHICH IS ALREADY ON SCRN AT START
|
||
;A0 & A1 ARE SET UP
|
||
;ADD IN OFFSETS FOR THIS PARTICULAR ARENA
|
||
MOVE @GAMSTATE,A2
|
||
CMPI INAMODE,A2
|
||
JREQ DMD
|
||
MOVE @WAVEYX,A2,L
|
||
;A2=PACKED OFFSETS
|
||
MOVX A2,A3
|
||
SLL 16,A3
|
||
ADD A3,A0 ;ADJUSTED A0 XVAL!
|
||
ANDI 0FFFF0000H,A2
|
||
ADD A2,A1 ;ADJUSTED A1 YVAL!
|
||
DMD CALLR IH1 ;INIT HULK (BEGIN_OBJ)
|
||
CALLA BEGINOBJ2
|
||
DIE
|
||
IH1:
|
||
MOVI m1,A2 ;DOES NOT MATTER
|
||
MOVE @WAVE,A3
|
||
CMPI 4,A3
|
||
JRLT IH1A
|
||
MOVI M2,A2 ;DOES NOT MATTER
|
||
IH1A MOVI 69,A3
|
||
MOVI DMAWNZ,A4 ;NON-ZERO VALUE
|
||
MOVI CLSNEUT|TYPMINE,A5
|
||
CLR A6
|
||
CLR A7
|
||
RETS
|
||
ANITEM:
|
||
;AMINE IS CALLED AT THE START OF A WAVE TO PLACE X # OF HULKS ON SCREEN
|
||
;AT THE BEGINNING OF A WAVE
|
||
MOVI 0,B0
|
||
MOVI 04CH,B1
|
||
CALLA RANGRAND
|
||
ADD A11,A0
|
||
MOVE A0,A1
|
||
|
||
MOVI 0,B0
|
||
MOVI 074H,B1
|
||
CALLA RANGRAND
|
||
ADD A10,A0
|
||
SLL 16,A0
|
||
SLL 16,A1
|
||
|
||
;A0=X,A1=Y
|
||
;A0 & A1 ARE SET UP
|
||
;ADD IN OFFSETS FOR THIS PARTICULAR ARENA
|
||
MOVE @GAMSTATE,A2
|
||
CMPI INAMODE,A2
|
||
JREQ ADMD
|
||
MOVE @WAVEYX,A2,L
|
||
;A2=PACKED OFFSETS
|
||
MOVX A2,A3
|
||
SLL 16,A3
|
||
ADD A3,A0 ;ADJUSTED A0 XVAL!
|
||
ANDI 0FFFF0000H,A2
|
||
ADD A2,A1 ;ADJUSTED A1 YVAL!
|
||
ADMD CALLR IH2 ;INIT HULK (BEGIN_OBJ)
|
||
CALLA BEGINOBJ2
|
||
WAIT
|
||
MOVI 4*60-30,A0
|
||
SUB A9,A0
|
||
CALLA PRCSLP
|
||
|
||
;BLINK
|
||
;A8=ICON IMAGE PTR
|
||
MOVE @HALT,A0
|
||
JRNZ WAIT
|
||
|
||
MOVK 7,A10
|
||
;ABOUT 1 SECOND OF BLINK
|
||
BK
|
||
MOVE A8,A0
|
||
CALLA OBJOFF
|
||
SLEEP 5
|
||
MOVE A8,A0
|
||
CALLA OBJON
|
||
SLEEP 5
|
||
DSJS A10,BK
|
||
SLEEP 30
|
||
MOVE A8,A0
|
||
CALLA DELOBJ ;ICONS NOW GONE FOREVER!
|
||
DIE
|
||
|
||
IH2:
|
||
MOVE @CIRCUIT,A2
|
||
CMPI 2,A2
|
||
JRNZ IHJ
|
||
MOVE @MCON,A4
|
||
JRNZ IHJ
|
||
MOVK 4,A2
|
||
JRUC IHJJ
|
||
IHJ
|
||
MOVB @TMP,A2
|
||
INC A2
|
||
MOVB A2,@TMP
|
||
ANDI 03H,A2
|
||
IHJJ SLL 5,A2
|
||
ADDI GTBL,A2
|
||
MOVE *A2,A2,L
|
||
MOVI 99,A3 ;69
|
||
MOVI DMAWNZ,A4 ;NON-ZERO VALUE
|
||
MOVI CLSNEUT|TYPICON|SUBCSHI,A5
|
||
CLR A6
|
||
CLR A7
|
||
RETS
|
||
|
||
GTBL .LONG PRZ1,PRZ2,PRZ3,PRZ1,KEY
|
||
|
||
.END
|
||
|