smashtv/MINE.ASM

244 lines
4.3 KiB
NASM
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.

.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