smashtv/ICONS.ASM

1953 lines
30 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.

.FILE 'ICONS.ASM (ICON CONTROL)'
.TITLE 'ROBO-RAMA GAME PROGRAM'
.WIDTH 132
.OPTION B,D,L,T
.MNOLIST
;
; INITIATED: APRIL 26,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"
.INCLUDE "MAC2.ASM" ;MACRO 2 DEFINITIONS
.INCLUDE "AUDIT.EQU"
;
;SOUND
;
.REF EXP3HI
;
;SYMBOLS EXTERNALLY DEFINED
;
.REF RANGRAND,HALT,PLYRPRCS,OBJON,OBJOFF,PCNT,BOSSON,MAXFREE
.REF GPALOBJ,STFOBJ,INSOBJ,PLYROBJS,DO_ALL_STUFF
.REF ADJSTWTL,CIRCUIT
.REF KILALL,BOUND
.REF DELOBJ,RANDPER,FRANIM,DELPAL,GAMSTATE
.REF RANGRAND,PRCSLP
.REF WAVE,GET_ADJ
.REF LASRX
;
;SYMBOLS DEFINED IN THIS FILE
;
.DEF SEND_ICON,COVER
.DEF SHAKER,SHK_ON
.DEF CLUSTER
.DEF EXPTLXY
.DEF EXPLRXY
.DEF ICNFLG,PZFLG,FREETOT
;
;UNINITIALIZED RAM DEFINITIONS
;
.BSS FREETOT,8
.BSS TMP,8
.BSS PZFLG,8
.BSS SHK_ON,8
.BSS XSET,8
.BSS YSET,8
.BSS EXPTLXY,32
.BSS EXPLRXY,32
.BSS AMP,8
.BSS AMPCNT,8
.BSS ICNFLG,8
.TEXT
;SEND_ICON - PUT A RANDOM ICON TYPE ONTO PLAYFIELD AT RANDOM INTERVALS
; THEIR VALUE IS SET ACCORDING TO WAVE
; CURRENTLY BEING PLAYED
; PARAMS:
; NONE
;
;NOW RANDOMLY SELECT AN ICON FROM THIS WAVE GROUP
;RULES:
;1- IF BLADES ON, DO NOT SEND BLADE ICON
;2- IF HELPER IS ON, DO NOT SEND HELPER ICON
;3- IF GRENADES ON, DO NOT SEND GRENADE ICON
;
SEND_ICON:
MOVE @CIRCUIT,A0
SLL 5,A0
ADDI CBOS,A0
MOVE *A0,A0,L
MOVE @WAVE,A1
SLL 3,A1
ADD A1,A0
MOVB *A0,A0
JRNZ SI1
MOVE @GAMSTATE,A0
CMPI INAMODE,A0
JRZ SI1
CREATE ICONPID,SEND_PZ
SI1
CLR A0
MOVB A0,@ICNFLG
MOVE @WAVE,A0 ;GET WAVE WE ARE NOW ON
SLL 5,A0 ;LONG WORD LOOK-UP
MOVE @CIRCUIT,A1
JRZ CT1
CMPI 1,A1
JRZ CT2
;CIRCUIT 3
ADDI ICONTYP3,A0 ;ICON SUB TYPES FOR THIS WAVE
MOVE *A0,A9,L
JRUC ICONLUP
CT2
ADDI ICONTYP2,A0 ;ICON SUB TYPES FOR THIS WAVE
MOVE *A0,A9,L
JRUC ICONLUP
CT1
ADDI ICONTYP,A0 ;ICON SUB TYPES FOR THIS WAVE
MOVE *A0,A9,L
JRUC ICONLUP
ICONLUP:
MOVE @HALT,A0
JRNE IP
MOVI 50,B0
MOVI 340,B1
CALLA RANGRAND
MOVE A0,A11
MOVI 70,B0
MOVI 220,B1
MOVB @BOUND,A0
JRZ CFL
MOVI 120,B1
CFL
CALLA RANGRAND
MOVE A0,A10
MOVE @PLYROBJS,A0,L
JRZ A
CALLR CK_HDS
JRC NOK
A MOVE @PLYROBJS+32,A0,L
JRZ OK
CALLR CK_HDS
JRNC OK
NOK SLEEP 4
JRUC ICONLUP
NOKZ SLEEP 4*60
JRUC ICONLUP
CBOS .LONG CB1,CB2,CB3
CB1 .BYTE 0,0,0,0,0,0,0,0,0,0,1,0
CB2 .BYTE 0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0
CB3 .BYTE 0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0
.EVEN
OK:
;WILL NOT LAND ON ANYONES HEAD
CLR B0
MOVK 20,B1
CALLA RANGRAND
; MOVK 1,A0
SLL 3,A0
ADD A9,A0 ;RANDOM ICON NOW SELECTED
MOVB *A0,A14
JRZ NOKZ
CMPI XTRAX,A14
JRNE NOX
;TRYING TO PLACE AN EXTRA MAN ICON! SHOULD I?
MOVB @FREETOT,A0
MOVE @MAXFREE,A1
CMP A1,A0 ;2 ;3 PER CIRCUIT CAN BE PICKED UP!
JRGT NOK
JRUC I2Z ;YES I MAY
NOX CMPI BLDX,A14
JRNE I1Z
;TRYING TO PLACE BLADE ICON! OK?
;CHECK PLAYER 1 AND 2 BLDFLG
MOVE @PLYRPRCS,A0,L
JRZ I0
MOVB *A0(BLDFLG),A0
JRNZ NOK ;BR=SOMEONE ALREADY HAS BLADES!
I0 MOVE @PLYRPRCS+32,A0,L
JRZ I2Z
MOVB *A0(BLDFLG),A0
JRNZ NOK ;BR=SOMEONE ALREADY HAS BLADES!
JRUC I2Z
;
I1Z CMPI HLPRX,A14
JRNE I2Z
;TRYING TO PLACE HELPER ICON! OK?
MOVE @LASRX,A0,L
JRNZ NOK ;BR=LASER ALREADY ON SCREEN
I2Z SLL 5,A14
ADDI ICINIT,A14
MOVE *A14,A14,L
CALLA DO_ALL_STUFF
; CALLA GPALOBJ ;ALLOCATE A COLOR PALETTE
; CALLA STFOBJ ;STUFF OBJECT DATA
; MOVE A13,*A0(OPLINK),L
; CALLA INSOBJ ;INSERT OBJECT INTO LIST
MOVE A0,A8
MOVE A10,*A8(OYPOS),W
MOVE A11,*A8(OXPOS),W
CALLA ADJSTWTL
MOVB @BOSSON,A0
JRZ WAIT
WAITAA
SLEEP 7*54-30 ;ABOUT 3 1/2 SECONDS ON SCREEN!
MOVB @ICNFLG,A1 ;ICON PICKED UP ALREADY!
JRNZ OBJNONE
MOVE @HALT,A0
JRNZ WAITAA
JRUC WAITB
WAIT SLEEP 4*54-30 ;ABOUT 3 1/2 SECONDS ON SCREEN!
;BASED ON LEVEL?
;BLINK
;A8=ICON IMAGE PTR
MOVB @ICNFLG,A1 ;ICON PICKED UP ALREADY!
JRNZ OBJNONE
MOVE @HALT,A0
JRNZ WAIT
WAITB
MOVK 7,A10
;ABOUT 1 SECOND OF BLINK
BK
MOVE A8,A0
CALLA OBJOFF
SLEEP 5
MOVE A8,A0
CALLA OBJON
MOVB @ICNFLG,A1 ;ICON PICKED UP ALREADY!
JRNZ OBJNONE
SLEEP 5
DSJS A10,BK
SLEEP 30
HH:
MOVB @ICNFLG,A1 ;ICON PICKED UP ALREADY!
JRNZ OBJNONE
MOVE A8,A0
CALLA DELOBJ ;ICONS NOW GONE FOREVER!
; CALLA DELPAL ;TEMPORARY
OBJNONE:
CLR A0 ;RESET FLAG
MOVB A0,@ICNFLG
IP
MOVE @WAVE,A0
CMPI 1,A0
JRNZ IPX
MOVE @CIRCUIT,A0
JRZ IPXX
IPX MOVB @BOSSON,A0
JRNZ IPXX
SLEEP 160
JRUC ICONLUP
IPXX SLEEP 1
JRUC ICONLUP
CK_HDS:
;DON'T LAND ON PLAYERS HEAD!
;CHECK BOTH PLAYER 1 AND 2
MOVB @BOSSON,A2
JRNZ ICONOK
MOVE *A0(OYVAL),A2,L
MOVE *A0(OXVAL),A3,L
MOVE @WORLDTLY,A4,L
MOVE @WORLDTLX,A5,L
SUB A4,A2
SUB A5,A3
SRL 16,A2
SRL 16,A3
SUB A10,A2
ABS A2
CMPI 25,A2
; CMPI 30,A2
JRLT NOICON
SUB A11,A3
ABS A3
CMPI 30,A3
; CMPI 40,A3
JRGT ICONOK
NOICON: SETC
RETS
ICONOK:
CLRC ;OKAY
RETS
;
PY: .WORD 032H,0144H,020H,020H
PY2: .WORD 03EH,0154H,0164H,0164H
PX: .WORD 040H,040H,040H,0D0H
PX2: .WORD 0C0H,0C0H,04CH,0D8H
;
SEND_PZ
SLEEP 4*60
CLR A0
MOVB A0,@PZFLG
PZLUP:
MOVE @HALT,A0
JRNE IPZ
MOVB @PCNT,A8
ANDI 03,A8
SLL 4,A8
MOVB @BOUND,A0
JRZ PZ0
MOVI 32,A8
; MOVK 2,A8
; SLL 4,A8
PZ0
MOVI PY,A1
ADD A8,A1
MOVE *A1,A1,W
MOVE A1,B0
MOVI PY2,A1
ADD A8,A1
MOVE *A1,A1,W
MOVE A1,B1
CALLA RANGRAND
MOVE A0,A11
MOVI PX,A1
ADD A8,A1
MOVE *A1,A1,W
MOVE A1,B0
MOVI PX2,A1
ADD A8,A1
MOVE *A1,A1,W
MOVE A1,B1
CALLA RANGRAND
MOVE A0,A10
MOVE @PLYROBJS,A0,L
JRZ AA
CALLR CK_HDS
JRC NOKA
AA MOVE @PLYROBJS+32,A0,L
JRZ OKA
CALLR CK_HDS
JRNC OKA
NOKA SLEEP 2
JRUC PZLUP
PZLST .LONG PZ1,PZ2,PZ3,PZ3
OKA:
;WILL NOT LAND ON ANYONES HEAD
MOVE A10,A0
ANDI 03,A0
SLL 5,A0
ADDI PZLST,A0
MOVE *A0,A14,L
CALLA DO_ALL_STUFF
; CALLA GPALOBJ ;ALLOCATE A COLOR PALETTE
; CALLA STFOBJ ;STUFF OBJECT DATA
; MOVE A13,*A0(OPLINK),L
; CALLA INSOBJ ;INSERT OBJECT INTO LIST
MOVE A0,A8
MOVE A10,*A8(OYPOS),W
MOVE A11,*A8(OXPOS),W
CALLA ADJSTWTL
WAIT0 SLEEP 5*54 ;ABOUT 3 1/2 SECONDS ON SCREEN!
;BASED ON LEVEL?
;BLINK
;A8=ICON IMAGE PTR
MOVB @PZFLG,A1 ;ICON PICKED UP ALREADY!
JRNZ OBJN
MOVE @HALT,A0
JRNZ WAIT0
MOVK 7,A10
;ABOUT 1 SECOND OF BLINK
BKZ
MOVE A8,A0
CALLA OBJOFF
SLEEP 5
MOVE A8,A0
CALLA OBJON
MOVB @PZFLG,A1 ;ICON PICKED UP ALREADY!
JRNZ OBJN
SLEEP 5
DSJS A10,BKZ
SLEEP 30
HHZ:
MOVB @PZFLG,A1 ;ICON PICKED UP ALREADY!
JRNZ OBJN
MOVE A8,A0
CALLA DELOBJ ;ICONS NOW GONE FOREVER!
OBJN:
CLR A0 ;RESET FLAG
MOVB A0,@PZFLG
IPZ SLEEP 130 ;130
MOVE @WAVE,A0
DEC A0
SLL 4,A0
MOVE @CIRCUIT,A1
JRZ CWV1
CMPI 1,A1
JRZ CWV2
;CIRCUIT 3 CASH
ADDI CASHTBL3,A0
JRUC CWVO
CWV2
ADDI CASHTBL2,A0
JRUC CWVO
CWV1
ADDI CASHTBL,A0
CWVO
MOVE *A0,A0
JRZ PZLUP ;DON'T WANT ANY IN THIS ARENA!
CALLA RANDPER
JRNC PZLUP
CLR A1
NOT A1
MOVI CLSNEUT|TYPICON|SUBCSH,A0
CALLA EXISTOBJ
JRNZ PZLUP
;NO CASH ON SCREEN! LETS GET SOME.
;CHECK TO SEE IF ICONPID IS STILL AROUND.
;IF NOT, THEN PLYRS ARE LEAVING ARENA
MOVI ICONPID,A0
CALLA EXISTP
JRZ PZLUP ;BR=ICON PROC NO LONGER AROUND!
MOVE @GAMSTATE,A0
CMPI INAMODE,A0
JRZ PZLUP
CREATE CSHPID,SEND_CSH
JRUC PZLUP
;CASH PILE PERCENTAGE FOR CIRCUIT 1 WAVES.
CASHTBL .WORD 900,900,900,590,1,990,590,0,0,400,0,0
CASHTBL2 .WORD 0,0,400,190,100,0,0,100,200,0,0,0
.WORD 400,0,0,100,0,0,0
CASHTBL3 .WORD 990,0,0,100,100,0,0,100,100,0,900,0
.WORD 100,0,0,100,0,0,0,0,0,0
;DO CASH ON GROUND
SEND_CSH
MOVE @HALT,A0
JRNE CIZZ
SLEEP 60
CLR A1
NOT A1
MOVI CLSNEUT|TYPICON|SUBCSH,A0
CALLA KILOBJ
;GET RANDOM VALID SCRN X, VALID SCRN Y,
;THEN ADD RANDOM OFFSET X/Y FROM THAT X/Y SCRN POS
;PLACE 10-20 IMAGES INTO VALID AREA
;PLACE IMAGES DOWN SLOWLY/SPRINKLE THEM!
;ALLOW THEM TO SCROLL ON WITH A NEW ARENA SCREEN
;DIE
MOVI 50,B0
MOVI 260,B1
CALLA RANGRAND
MOVE A0,A10 ;A10=UPLFT X OF AREA
MOVI 65,B0
MOVI 170,B1
CALLA RANGRAND
MOVE A0,A11 ;A11=UPLFT Y OF AREA
CLR A0
MOVB A0,@TMP
MOVK 15,B0
MOVK 25,B1
CALLA RANGRAND
MOVE A0,A9 ;A9=# OF CASH ITEMS TO LAY DOWN
CMPI 19,A0
JRNC LPQ
ANDI 03,A0
INC A0
MOVB A0,@TMP
LPQ
MOVI 0,B0
MOVI 75,B1
CALLA RANGRAND
MMTM SP,A10,A11
ADD A0,A10
MOVI 0,B0
MOVI 50,B1
CALLA RANGRAND
ADD A0,A11
MOVB @TMP,A1
JRZ LPQ1
;SINGLES TO BE DISPERSED!
MOVE A1,A0
SLL 5,A0
ADDI CZ2LST,A0
JRUC LPQ2
LPQ1 ANDI 03,A0
SLL 5,A0
ADDI CZLST,A0
LPQ2 MOVE *A0,A14,L
CALLA DO_ALL_STUFF
; CALLA GPALOBJ ;ALLOCATE A COLOR PALETTE
; CALLA STFOBJ ;STUFF OBJECT DATA
; MOVE A13,*A0(OPLINK),L
; CALLA INSOBJ ;INSERT OBJECT INTO LIST
MOVE A0,A8
MOVE A10,*A8(OXPOS),W
MOVE A11,*A8(OYPOS),W
CALLA ADJSTWTL
MMFM SP,A10,A11
SLEEP 3
DEC A9
JRNZ LPQ
CIZZ DIE
CZLST .LONG CASH0,CNS0,GLD0,CASH0
CZ2LST .LONG 0,CASH0,GLD0,CNS0,CNS0
BLDX .EQU 1
HLPRX .EQU 2
SPRYX .EQU 3
PODX .EQU 4
XTRAX .EQU 5
GRENX .EQU 6
KEYX .EQU 7
RINGX .EQU 8
NSTPX .EQU 9
SHOEX .EQU 10
SMRTX .EQU 11
ICINIT .LONG 0,BLDI,HLPRI,SPRYI,PODI,XTRAI
.LONG GRENI,KEYI,RINGI,NSTPI,SHOEI,SMARTI
ICONTYP:
.LONG 0,ICN1,ICN2,ICN3,ICN4,ICN5,ICN6,ICN7
.LONG ICN8,ICN9,ICN10
ICONTYP2:
.LONG 0,ICN21,ICN22,ICN23,ICN24,ICN25,ICN26,ICN27
.LONG ICN28,ICN29,ICN210,ICN211,ICN212,ICN213,ICN214
.LONG ICN215,ICN215,ICN216,ICN217,ICN218
ICONTYP3:
.LONG 0,ICN31,ICN32,ICN33,ICN34,ICN35,ICN36,ICN37
.LONG ICN38,ICN39,ICN310,ICN311,ICN312,ICN313,ICN314
.LONG ICN315,ICN315,ICN316,ICN317,ICN318,ICN319,ICN10,ICN10
;ICN28,ICN10,ICN10
;WAVE 1
;ICNTST: ;FOR ORBS
;EACH ICON LISTED INDIVIDUALLY, TOTAL MUST = 20
.BYTE 0
;BLADES
.BYTE GRENX
;HELPER
;SPRAY
.BYTE SPRYX,SPRYX,SPRYX,SPRYX,SPRYX
;PODS
.BYTE PODX,PODX
;LIFE
.BYTE XTRAX
;GRENADE
;KEYS
;RINGS
.BYTE RINGX
;NOSTOP
.BYTE NSTPX,NSTPX,NSTPX,NSTPX,NSTPX
;SHOES
.BYTE SHOEX,SHOEX,SHOEX
;SMART
.BYTE SMRTX,SMRTX,SMRTX
;WAVE 1
ICN1:
;EACH ICON LISTED INDIVIDUALLY, TOTAL MUST = 20
.BYTE 0
;BLADES
.BYTE BLDX,BLDX,BLDX,BLDX
.BYTE BLDX,BLDX
;HELPER
;SPRAY
.BYTE SPRYX,SPRYX,SPRYX
;PODS
;LIFE
;GRENADE
;KEYS
;RINGS
.BYTE RINGX,RINGX,RINGX
;NOSTOP
;SHOES
.BYTE SHOEX,SHOEX
;SMART
.BYTE SMRTX,SMRTX,SMRTX
.BYTE SMRTX,SMRTX,SMRTX
;WAVE 2
ICN2:
;EACH ICON LISTED INDIVIDUALLY, TOTAL MUST = 20
.BYTE 0
;BLADES
.BYTE BLDX,BLDX,BLDX
;HELPER
.BYTE HLPRX,HLPRX
;SPRAY
.BYTE SPRYX,SPRYX,SPRYX,SPRYX
;PODS
.BYTE PODX,PODX,PODX
;LIFE
.BYTE XTRAX
;GRENADE
;KEYS
.BYTE KEYX
;RINGS
.BYTE RINGX
;NOSTOP
;SHOES
.BYTE SHOEX,SHOEX,SHOEX
;SMART
.BYTE SMRTX,SMRTX
ICN3:
;EACH ICON LISTED INDIVIDUALLY, TOTAL MUST = 20
.BYTE 0
;BLADES
.BYTE BLDX
;HELPER
.BYTE HLPRX,HLPRX,HLPRX
;SPRAY
.BYTE SPRYX,SPRYX,SPRYX
;PODS
.BYTE PODX,PODX
;LIFE
;GRENADE
;KEYS
;RINGS
.BYTE RINGX,RINGX,RINGX
;NOSTOP
.BYTE NSTPX,NSTPX
;SHOES
.BYTE SHOEX,SHOEX,SHOEX,SHOEX
;SMART
.BYTE SMRTX,SMRTX
ICN4:
;EACH ICON LISTED INDIVIDUALLY, TOTAL MUST = 20
.BYTE 0
;BLADES
.BYTE BLDX
;HELPER
.BYTE HLPRX,HLPRX,HLPRX
;SPRAY
.BYTE SPRYX,SPRYX,SPRYX
;PODS
.BYTE PODX,PODX
;LIFE
;GRENADE
;KEYS
.BYTE KEYX
;RINGS
.BYTE RINGX,RINGX
;NOSTOP
.BYTE NSTPX,NSTPX
;SHOES
.BYTE SHOEX,SHOEX,SHOEX,SHOEX,SHOEX
;SMART
.BYTE SMRTX
ICN5:
;EACH ICON LISTED INDIVIDUALLY, TOTAL MUST = 20
.BYTE 0
;BLADES
;HELPER
.BYTE HLPRX
;SPRAY
.BYTE SPRYX,SPRYX
;PODS
.BYTE PODX,PODX,PODX
;LIFE
.BYTE XTRAX,XTRAX,XTRAX
;GRENADE
;KEYS
;RINGS
.BYTE RINGX,RINGX
;NOSTOP
.BYTE NSTPX,NSTPX
;SHOES
.BYTE SHOEX,SHOEX,SHOEX,SHOEX,SHOEX
;SMART
.BYTE SMRTX,SMRTX
ICN6:
;EACH ICON LISTED INDIVIDUALLY, TOTAL MUST = 20
.BYTE 0
;BLADES
.BYTE BLDX,BLDX
;HELPER
.BYTE HLPRX,HLPRX
;SPRAY
.BYTE SPRYX,SPRYX,SPRYX
;PODS
.BYTE PODX
;LIFE
.BYTE XTRAX
;GRENADE
;KEYS
.BYTE KEYX
;RINGS
.BYTE RINGX,RINGX,RINGX
;NOSTOP
.BYTE NSTPX,NSTPX
;SHOES
.BYTE SHOEX,SHOEX,SHOEX,SHOEX
;SMART
.BYTE SMRTX
ICN7:
;EACH ICON LISTED INDIVIDUALLY, TOTAL MUST = 20
.BYTE 0
;BLADES
.BYTE BLDX,BLDX
;HELPER
.BYTE HLPRX,HLPRX
;SPRAY
.BYTE SPRYX,SPRYX,SPRYX
;PODS
.BYTE PODX,PODX,PODX
;LIFE
.BYTE XTRAX
;GRENADE
;KEYS
;RINGS
.BYTE RINGX,RINGX
;NOSTOP
.BYTE NSTPX,NSTPX
;SHOES
.BYTE SHOEX,SHOEX
;SMART
.BYTE SMRTX,SMRTX,SMRTX
ICN8:
;EACH ICON LISTED INDIVIDUALLY, TOTAL MUST = 20
.BYTE 0
;BLADES
;HELPER
.BYTE HLPRX
;SPRAY
.BYTE SPRYX
;PODS
.BYTE PODX,PODX
;LIFE
.BYTE XTRAX
;GRENADE
;KEYS
;RINGS
.BYTE RINGX,RINGX,RINGX
;NOSTOP
.BYTE NSTPX,NSTPX,NSTPX,NSTPX,NSTPX
;SHOES
.BYTE SHOEX,SHOEX,SHOEX,SHOEX
;SMART
.BYTE SMRTX,SMRTX,SMRTX
ICN9:
;EACH ICON LISTED INDIVIDUALLY, TOTAL MUST = 20
.BYTE 0
;BLADES
.BYTE BLDX
;HELPER
.BYTE HLPRX,HLPRX
;SPRAY
.BYTE SPRYX
;PODS
.BYTE PODX,PODX
;LIFE
.BYTE XTRAX,XTRAX
;GRENADE
;KEYS
;RINGS
.BYTE RINGX,RINGX,RINGX
;NOSTOP
.BYTE NSTPX,NSTPX,NSTPX
;SHOES
.BYTE SHOEX,SHOEX,SHOEX,SHOEX
;SMART
.BYTE SMRTX,SMRTX
ICN10:
;EACH ICON LISTED INDIVIDUALLY, TOTAL MUST = 20
.BYTE 0
;BLADES
;HELPER
;SPRAY
.BYTE SPRYX,SPRYX,SPRYX,SPRYX
;PODS
.BYTE PODX,PODX,PODX
;LIFE
;GRENADE
.BYTE GRENX,GRENX,GRENX,GRENX
.BYTE GRENX,GRENX,GRENX
;KEYS
;RINGS
.BYTE RINGX,RINGX
;NOSTOP
.BYTE NSTPX,NSTPX,NSTPX
;SHOES
.BYTE SHOEX
;SMART
;CIRCUIT 2
ICN21:
;WAVE 1
;ICNTST: ;FOR ORBS
;EACH ICON LISTED INDIVIDUALLY, TOTAL MUST = 20
.BYTE 0
;BLADES
;HELPER
;SPRAY
.BYTE SPRYX,SPRYX,SPRYX,SPRYX,SPRYX
;PODS
.BYTE PODX,PODX
;LIFE
.BYTE XTRAX
;GRENADE
;KEYS
;RINGS
.BYTE RINGX
.BYTE RINGX
;NOSTOP
.BYTE NSTPX,NSTPX,NSTPX,NSTPX
;SHOES
.BYTE SHOEX,SHOEX,SHOEX
;SMART
.BYTE SMRTX,SMRTX,SMRTX
;WAVE 2
ICN22:
;EACH ICON LISTED INDIVIDUALLY, TOTAL MUST = 20
.BYTE 0
;BLADES
.BYTE BLDX,BLDX,BLDX
;HELPER
.BYTE HLPRX,HLPRX
;SPRAY
.BYTE SPRYX,SPRYX,SPRYX,SPRYX
;PODS
.BYTE PODX,PODX,PODX
;LIFE
.BYTE XTRAX
;GRENADE
;KEYS
.BYTE KEYX
;RINGS
.BYTE RINGX
;NOSTOP
;SHOES
.BYTE SHOEX,SHOEX,SHOEX
;SMART
.BYTE SMRTX,SMRTX
ICN23:
;EACH ICON LISTED INDIVIDUALLY, TOTAL MUST = 20
.BYTE 0
;BLADES
.BYTE BLDX
;HELPER
.BYTE HLPRX,HLPRX,HLPRX
;SPRAY
.BYTE SPRYX,SPRYX,SPRYX
;PODS
.BYTE PODX,PODX
;LIFE
;GRENADE
;KEYS
;RINGS
.BYTE RINGX,RINGX,RINGX
;NOSTOP
.BYTE NSTPX,NSTPX
;SHOES
.BYTE SHOEX,SHOEX,SHOEX,SHOEX
;SMART
.BYTE SMRTX,SMRTX
ICN24:
;EACH ICON LISTED INDIVIDUALLY, TOTAL MUST = 20
.BYTE 0
;BLADES
.BYTE BLDX
;HELPER
.BYTE HLPRX,HLPRX,HLPRX
;SPRAY
.BYTE SPRYX,SPRYX,SPRYX
;PODS
.BYTE PODX,PODX
;LIFE
;GRENADE
;KEYS
.BYTE KEYX
;RINGS
.BYTE RINGX,RINGX
;NOSTOP
.BYTE NSTPX,NSTPX
;SHOES
.BYTE SHOEX,SHOEX,SHOEX,SHOEX,SHOEX
;SMART
.BYTE SMRTX
ICN25:
;EACH ICON LISTED INDIVIDUALLY, TOTAL MUST = 20
.BYTE 0
;BLADES
.BYTE BLDX
;HELPER
.BYTE HLPRX,HLPRX
;SPRAY
.BYTE SPRYX,SPRYX
;PODS
.BYTE PODX,PODX,PODX
;LIFE
;GRENADE
;KEYS
;RINGS
.BYTE RINGX,RINGX,RINGX
;NOSTOP
.BYTE NSTPX,NSTPX,NSTPX
;SHOES
.BYTE SHOEX,SHOEX,SHOEX,SHOEX
;SMART
.BYTE SMRTX,SMRTX
ICN26:
;EACH ICON LISTED INDIVIDUALLY, TOTAL MUST = 20
.BYTE 0
;BLADES
.BYTE BLDX,BLDX
;HELPER
.BYTE HLPRX,HLPRX
;SPRAY
.BYTE SPRYX,SPRYX,SPRYX,SPRYX
;PODS
.BYTE PODX
;LIFE
;GRENADE
;KEYS
.BYTE KEYX
;RINGS
.BYTE RINGX,RINGX
;NOSTOP
.BYTE NSTPX,NSTPX,NSTPX
;SHOES
.BYTE SHOEX,SHOEX,SHOEX,SHOEX
;SMART
.BYTE SMRTX
ICN27:
;EACH ICON LISTED INDIVIDUALLY, TOTAL MUST = 20
.BYTE 0
;BLADES
;HELPER
.BYTE HLPRX
;SPRAY
.BYTE SPRYX,SPRYX,SPRYX
;PODS
.BYTE PODX,PODX,PODX,PODX
;LIFE
;GRENADE
.BYTE GRENX,GRENX,GRENX,GRENX
.BYTE GRENX,GRENX,GRENX
;KEYS
;RINGS
;NOSTOP
.BYTE NSTPX,NSTPX,NSTPX
;SHOES
.BYTE SHOEX,SHOEX
ICN28:
;EACH ICON LISTED INDIVIDUALLY, TOTAL MUST = 20
.BYTE 0
;BLADES
.BYTE BLDX
;HELPER
.BYTE HLPRX,HLPRX
;SPRAY
.BYTE SPRYX,SPRYX,SPRYX,SPRYX
;PODS
.BYTE PODX,PODX,PODX
;LIFE
.BYTE XTRAX
;GRENADE
;KEYS
.BYTE KEYX
;RINGS
.BYTE RINGX
;NOSTOP
.BYTE NSTPX,NSTPX
;SHOES
.BYTE SHOEX,SHOEX,SHOEX
;SMART
.BYTE SMRTX,SMRTX
ICN29:
;EACH ICON LISTED INDIVIDUALLY, TOTAL MUST = 20
.BYTE 0
.BYTE 0
.BYTE 0
;BLADES
.BYTE BLDX
;HELPER
.BYTE HLPRX,HLPRX
;SPRAY
.BYTE SPRYX
;PODS
.BYTE PODX,PODX
;LIFE
.BYTE XTRAX,XTRAX
;GRENADE
;KEYS
.BYTE KEYX
;RINGS
.BYTE RINGX,RINGX
;NOSTOP
.BYTE NSTPX
;SHOES
.BYTE SHOEX,SHOEX,SHOEX,SHOEX
;SMART
.BYTE SMRTX,SMRTX
ICN210:
;EACH ICON LISTED INDIVIDUALLY, TOTAL MUST = 20
.BYTE 0
ICN211:
;EACH ICON LISTED INDIVIDUALLY, TOTAL MUST = 20
.BYTE 0
.BYTE 0
.BYTE 0
;BLADES
.BYTE BLDX
;HELPER
.BYTE HLPRX,HLPRX
;SPRAY
.BYTE SPRYX,SPRYX
;PODS
.BYTE PODX,PODX,PODX
;LIFE
.BYTE XTRAX,XTRAX
;GRENADE
;KEYS
;RINGS
.BYTE RINGX
;NOSTOP
.BYTE NSTPX
;SHOES
.BYTE SHOEX,SHOEX,SHOEX,SHOEX
;SMART
.BYTE SMRTX,SMRTX
ICN212:
;EACH ICON LISTED INDIVIDUALLY, TOTAL MUST = 20
.BYTE 0
;BLADES
.BYTE BLDX
;HELPER
.BYTE HLPRX,HLPRX
;SPRAY
.BYTE SPRYX,SPRYX,SPRYX,SPRYX
;PODS
.BYTE PODX,PODX
;LIFE
.BYTE XTRAX,XTRAX,XTRAX
;GRENADE
;KEYS
;RINGS
.BYTE RINGX
;NOSTOP
.BYTE NSTPX,NSTPX,NSTPX
;SHOES
.BYTE SHOEX,SHOEX,SHOEX
;SMART
.BYTE SMRTX
ICN213:
;EACH ICON LISTED INDIVIDUALLY, TOTAL MUST = 20
.BYTE 0
.BYTE 0
;BLADES
.BYTE BLDX
;HELPER
.BYTE HLPRX,HLPRX
;SPRAY
.BYTE SPRYX,SPRYX
;PODS
.BYTE PODX,PODX
;LIFE
.BYTE XTRAX,XTRAX
;GRENADE
;KEYS
.BYTE KEYX,KEYX
;RINGS
.BYTE RINGX
;NOSTOP
.BYTE NSTPX
;SHOES
.BYTE SHOEX,SHOEX,SHOEX,SHOEX
;SMART
.BYTE SMRTX,SMRTX
ICN214:
;EACH ICON LISTED INDIVIDUALLY, TOTAL MUST = 20
.BYTE 0
.BYTE 0
.BYTE 0
.BYTE 0
;BLADES
;HELPER
;SPRAY
.BYTE SPRYX,SPRYX,SPRYX
;PODS
.BYTE PODX,PODX
;LIFE
.BYTE XTRAX,XTRAX,XTRAX
;GRENADE
;KEYS
.BYTE KEYX
;RINGS
.BYTE RINGX
;NOSTOP
.BYTE NSTPX
;SHOES
.BYTE SHOEX,SHOEX,SHOEX,SHOEX
;SMART
.BYTE SMRTX,SMRTX
ICN215:
;EACH ICON LISTED INDIVIDUALLY, TOTAL MUST = 20
.BYTE 0
;BLADES
.BYTE BLDX
;HELPER
.BYTE HLPRX,HLPRX
;SPRAY
.BYTE SPRYX,SPRYX,SPRYX,SPRYX
;PODS
.BYTE PODX,PODX
;LIFE
.BYTE XTRAX
;GRENADE
;KEYS
.BYTE KEYX
;RINGS
.BYTE RINGX,RINGX,RINGX
;NOSTOP
.BYTE NSTPX
;SHOES
.BYTE SHOEX,SHOEX,SHOEX
;SMART
.BYTE SMRTX,SMRTX
ICN216:
;EACH ICON LISTED INDIVIDUALLY, TOTAL MUST = 20
.BYTE 0
;BLADES
.BYTE BLDX
;HELPER
.BYTE HLPRX,HLPRX
;SPRAY
.BYTE SPRYX,SPRYX
;PODS
.BYTE PODX,PODX,PODX
;LIFE
;GRENADE
;KEYS
;RINGS
.BYTE RINGX,RINGX,RINGX
;NOSTOP
.BYTE NSTPX,NSTPX,NSTPX
;SHOES
.BYTE SHOEX,SHOEX,SHOEX,SHOEX
;SMART
.BYTE SMRTX,SMRTX
ICN217:
;EACH ICON LISTED INDIVIDUALLY, TOTAL MUST = 20
.BYTE 0
;BLADES
.BYTE BLDX
;HELPER
.BYTE HLPRX,HLPRX
;SPRAY
.BYTE SPRYX
;PODS
.BYTE PODX,PODX
;LIFE
.BYTE XTRAX,XTRAX
;GRENADE
;KEYS
;RINGS
.BYTE RINGX,RINGX,RINGX
;NOSTOP
.BYTE NSTPX,NSTPX,NSTPX
;SHOES
.BYTE SHOEX,SHOEX,SHOEX,SHOEX
;SMART
.BYTE SMRTX,SMRTX
ICN218:
;EACH ICON LISTED INDIVIDUALLY, TOTAL MUST = 20
.BYTE 0
.BYTE 0
.BYTE 0
;BLADES
.BYTE BLDX
;HELPER
.BYTE HLPRX
;SPRAY
.BYTE SPRYX,SPRYX,SPRYX
;PODS
.BYTE PODX,PODX
;LIFE
.BYTE XTRAX
.BYTE XTRAX
;GRENADE
;KEYS
;RINGS
.BYTE RINGX,RINGX
;NOSTOP
.BYTE NSTPX
;SHOES
.BYTE SHOEX,SHOEX,SHOEX,SHOEX
;SMART
.BYTE SMRTX,SMRTX
;CIRCUIT 3
ICN31:
;WAVE 1
;ICNTST: ;FOR ORBS
;EACH ICON LISTED INDIVIDUALLY, TOTAL MUST = 20
.BYTE 0
;BLADES
.BYTE BLDX
;HELPER
.BYTE HLPRX,HLPRX,HLPRX
;SPRAY
.BYTE SPRYX,SPRYX,SPRYX,SPRYX,SPRYX
;PODS
.BYTE PODX,PODX
;LIFE
;GRENADE
;KEYS
;RINGS
.BYTE RINGX
.BYTE RINGX
.BYTE RINGX
;NOSTOP
.BYTE NSTPX,NSTPX
;SHOES
.BYTE SHOEX
;SMART
.BYTE SMRTX,SMRTX,SMRTX
;WAVE 2
ICN32:
;EACH ICON LISTED INDIVIDUALLY, TOTAL MUST = 20
.BYTE 0
;BLADES
.BYTE BLDX
;HELPER
.BYTE HLPRX,HLPRX
;SPRAY
.BYTE SPRYX
.BYTE SPRYX
;PODS
.BYTE PODX,PODX,PODX,PODX
;LIFE
.BYTE XTRAX
;GRENADE
;KEYS
;RINGS
.BYTE RINGX
;NOSTOP
.BYTE NSTPX
.BYTE NSTPX
;SHOES
.BYTE SHOEX,SHOEX,SHOEX,SHOEX
;SMART
.BYTE SMRTX,SMRTX
ICN33:
;EACH ICON LISTED INDIVIDUALLY, TOTAL MUST = 20
.BYTE 0
.BYTE 0
;BLADES
.BYTE BLDX
;HELPER
.BYTE HLPRX
;SPRAY
.BYTE SPRYX
;PODS
.BYTE PODX,PODX
;LIFE
;GRENADE
;KEYS
;RINGS
.BYTE RINGX,RINGX,RINGX,RINGX
;NOSTOP
.BYTE NSTPX,NSTPX
.BYTE NSTPX,NSTPX
;SHOES
.BYTE SHOEX,SHOEX,SHOEX,SHOEX
;SMART
.BYTE SMRTX,SMRTX
ICN34:
;EACH ICON LISTED INDIVIDUALLY, TOTAL MUST = 20
.BYTE 0
;BLADES
.BYTE BLDX
;HELPER
.BYTE HLPRX,HLPRX
;SPRAY
.BYTE SPRYX
;PODS
.BYTE PODX,PODX
;LIFE
.BYTE XTRAX
;GRENADE
;KEYS
;RINGS
.BYTE RINGX,RINGX,RINGX
;NOSTOP
.BYTE NSTPX,NSTPX
;SHOES
.BYTE SHOEX,SHOEX,SHOEX,SHOEX,SHOEX
;SMART
.BYTE SMRTX,SMRTX,SMRTX
ICN35:
;EACH ICON LISTED INDIVIDUALLY, TOTAL MUST = 20
.BYTE 0
;BLADES
.BYTE BLDX
;HELPER
.BYTE HLPRX,HLPRX
;SPRAY
.BYTE SPRYX
;PODS
.BYTE PODX,PODX,PODX
;LIFE
.BYTE XTRAX
;GRENADE
;KEYS
;RINGS
.BYTE RINGX,RINGX,RINGX
;NOSTOP
.BYTE NSTPX,NSTPX,NSTPX
;SHOES
.BYTE SHOEX,SHOEX,SHOEX,SHOEX
;SMART
.BYTE SMRTX,SMRTX
ICN36:
;EACH ICON LISTED INDIVIDUALLY, TOTAL MUST = 20
.BYTE 0
;BLADES
.BYTE BLDX
;HELPER
.BYTE HLPRX,HLPRX
;SPRAY
.BYTE SPRYX
;PODS
.BYTE PODX,PODX
;LIFE
.BYTE XTRAX
;GRENADE
;KEYS
;RINGS
.BYTE RINGX,RINGX
;NOSTOP
.BYTE NSTPX,NSTPX,NSTPX
;SHOES
.BYTE SHOEX,SHOEX,SHOEX,SHOEX,SHOEX
;SMART
.BYTE SMRTX
ICN37:
;EACH ICON LISTED INDIVIDUALLY, TOTAL MUST = 20
.BYTE 0
;BLADES
;HELPER
.BYTE HLPRX
.BYTE HLPRX
.BYTE HLPRX
;SPRAY
.BYTE SPRYX
.BYTE SPRYX
.BYTE SPRYX
.BYTE SPRYX
.BYTE SPRYX
.BYTE SPRYX
;PODS
.BYTE PODX,PODX,PODX
;LIFE
;GRENADE
.BYTE GRENX
;KEYS
;RINGS
.BYTE RINGX
.BYTE RINGX
;NOSTOP
.BYTE NSTPX,NSTPX
.BYTE NSTPX
.BYTE NSTPX
;SHOES
.BYTE SHOEX
ICN38:
;EACH ICON LISTED INDIVIDUALLY, TOTAL MUST = 20
.BYTE 0
;BLADES
.BYTE BLDX
;HELPER
.BYTE HLPRX,HLPRX
;SPRAY
.BYTE SPRYX
;PODS
.BYTE PODX,PODX,PODX
;LIFE
.BYTE XTRAX
;GRENADE
;KEYS
;RINGS
.BYTE RINGX,RINGX,RINGX
;NOSTOP
.BYTE NSTPX,NSTPX,NSTPX
;SHOES
.BYTE SHOEX,SHOEX,SHOEX,SHOEX
;SMART
.BYTE SMRTX,SMRTX
ICN39:
;EACH ICON LISTED INDIVIDUALLY, TOTAL MUST = 20
.BYTE 0
;BLADES
.BYTE BLDX
;HELPER
.BYTE HLPRX,HLPRX
;SPRAY
.BYTE SPRYX
;PODS
.BYTE PODX,PODX,PODX
;LIFE
.BYTE XTRAX
;GRENADE
;KEYS
;RINGS
.BYTE RINGX,RINGX,RINGX
;NOSTOP
.BYTE NSTPX,NSTPX,NSTPX
;SHOES
.BYTE SHOEX,SHOEX,SHOEX,SHOEX
;SMART
.BYTE SMRTX,SMRTX
ICN310:
ICN311:
;ICNTST:
;EACH ICON LISTED INDIVIDUALLY, TOTAL MUST = 20
.BYTE 0
;BLADES
.BYTE BLDX,BLDX
;HELPER
.BYTE HLPRX,HLPRX,HLPRX
;SPRAY
.BYTE SPRYX,SPRYX,SPRYX
;PODS
.BYTE PODX,PODX
;LIFE
;GRENADE
;KEYS
;RINGS
.BYTE RINGX
.BYTE RINGX
.BYTE RINGX
;NOSTOP
.BYTE NSTPX,NSTPX
;SHOES
.BYTE SHOEX,SHOEX
;SMART
.BYTE SMRTX,SMRTX,SMRTX
ICN312:
;EACH ICON LISTED INDIVIDUALLY, TOTAL MUST = 20
.BYTE 0
;BLADES
.BYTE BLDX
;HELPER
.BYTE HLPRX
;SPRAY
.BYTE SPRYX
;PODS
.BYTE PODX,PODX,PODX
;LIFE
.BYTE XTRAX
.BYTE XTRAX
.BYTE XTRAX
;GRENADE
;KEYS
;RINGS
.BYTE RINGX,RINGX
;NOSTOP
.BYTE NSTPX,NSTPX,NSTPX
;SHOES
.BYTE SHOEX,SHOEX,SHOEX,SHOEX
;SMART
.BYTE SMRTX,SMRTX
ICN313:
;EACH ICON LISTED INDIVIDUALLY, TOTAL MUST = 20
.BYTE 0
;BLADES
.BYTE BLDX
;HELPER
.BYTE HLPRX,HLPRX
;SPRAY
.BYTE SPRYX
;PODS
.BYTE PODX,PODX,PODX
;LIFE
.BYTE XTRAX
;GRENADE
;KEYS
;RINGS
.BYTE RINGX,RINGX,RINGX
;NOSTOP
.BYTE NSTPX,NSTPX,NSTPX
;SHOES
.BYTE SHOEX,SHOEX,SHOEX,SHOEX
;SMART
.BYTE SMRTX,SMRTX
ICN314:
;EACH ICON LISTED INDIVIDUALLY, TOTAL MUST = 20
.BYTE 0
;BLADES
;HELPER
.BYTE HLPRX
;SPRAY
.BYTE SPRYX
;PODS
.BYTE PODX,PODX,PODX
;LIFE
.BYTE XTRAX
.BYTE XTRAX
.BYTE XTRAX
;GRENADE
;KEYS
;RINGS
.BYTE RINGX,RINGX,RINGX
;NOSTOP
.BYTE NSTPX,NSTPX,NSTPX
;SHOES
.BYTE SHOEX,SHOEX,SHOEX,SHOEX
;SMART
.BYTE SMRTX,SMRTX
ICN315:
;EACH ICON LISTED INDIVIDUALLY, TOTAL MUST = 20
.BYTE 0
;BLADES
.BYTE BLDX
;HELPER
.BYTE HLPRX,HLPRX
;SPRAY
.BYTE SPRYX
;PODS
.BYTE PODX,PODX,PODX
;LIFE
.BYTE XTRAX
;GRENADE
;KEYS
;RINGS
.BYTE RINGX,RINGX,RINGX
;NOSTOP
.BYTE NSTPX,NSTPX,NSTPX
;SHOES
.BYTE SHOEX,SHOEX,SHOEX,SHOEX
;SMART
.BYTE SMRTX,SMRTX
ICN316:
;EACH ICON LISTED INDIVIDUALLY, TOTAL MUST = 20
.BYTE 0
;BLADES
.BYTE BLDX
;HELPER
.BYTE HLPRX,HLPRX
;SPRAY
.BYTE SPRYX
;PODS
.BYTE PODX,PODX,PODX
;LIFE
.BYTE XTRAX
;GRENADE
;KEYS
;RINGS
.BYTE RINGX,RINGX,RINGX
;NOSTOP
.BYTE NSTPX,NSTPX,NSTPX
;SHOES
.BYTE SHOEX,SHOEX,SHOEX,SHOEX
;SMART
.BYTE SMRTX,SMRTX
ICN317:
;EACH ICON LISTED INDIVIDUALLY, TOTAL MUST = 20
.BYTE 0
;BLADES
.BYTE BLDX
;HELPER
.BYTE HLPRX,HLPRX
;SPRAY
.BYTE SPRYX
;PODS
.BYTE PODX,PODX,PODX
;LIFE
.BYTE XTRAX
;GRENADE
;KEYS
;RINGS
.BYTE RINGX,RINGX,RINGX
;NOSTOP
.BYTE NSTPX,NSTPX,NSTPX
;SHOES
.BYTE SHOEX,SHOEX,SHOEX,SHOEX
;SMART
.BYTE SMRTX,SMRTX
ICN318:
;EACH ICON LISTED INDIVIDUALLY, TOTAL MUST = 20
.BYTE 0
;BLADES
.BYTE BLDX
;HELPER
.BYTE HLPRX,HLPRX
;SPRAY
.BYTE SPRYX,SPRYX,SPRYX
;PODS
.BYTE PODX,PODX,PODX
;LIFE
;GRENADE
;KEYS
;RINGS
.BYTE RINGX,RINGX,RINGX
;NOSTOP
.BYTE NSTPX,NSTPX,NSTPX
;SHOES
.BYTE SHOEX,SHOEX,SHOEX
;SMART
.BYTE SMRTX,SMRTX
ICN319:
;EACH ICON LISTED INDIVIDUALLY, TOTAL MUST = 20
.BYTE 0
;BLADES
.BYTE BLDX
;HELPER
.BYTE HLPRX,HLPRX
;SPRAY
.BYTE SPRYX,SPRYX,SPRYX,SPRYX
;PODS
.BYTE PODX,PODX,PODX,PODX
;LIFE
;GRENADE
;KEYS
;RINGS
.BYTE RINGX,RINGX
;NOSTOP
.BYTE NSTPX,NSTPX
;SHOES
.BYTE SHOEX,SHOEX,SHOEX
;SMART
.BYTE SMRTX,SMRTX
.EVEN
PZ1:
.LONG 0,0,PRZ1
.WORD 91,DMAWNZ,CLSNEUT|TYPICON|SUBPZ1
.LONG 0,0
PZ2:
.LONG 0,0,PRZ2
.WORD 91,DMAWNZ,CLSNEUT|TYPICON|SUBPZ2
.LONG 0,0
PZ3:
.LONG 0,0,PRZ3
.WORD 91,DMAWNZ,CLSNEUT|TYPICON|SUBPZ3
.LONG 0,0
CNS0:
.LONG 0,0,CNS
.WORD 80,DMAWNZ,CLSNEUT|TYPICON|SUBCSH
.LONG 0,0
GLD0:
.LONG 0,0,GLD
.WORD 80,DMAWNZ,CLSNEUT|TYPICON|SUBCSH
.LONG 0,0
CASH0:
.LONG 0,0,CASH
.WORD 80,DMAWNZ,CLSNEUT|TYPICON|SUBCSH
.LONG 0,0
KEYI:
.LONG 0,0,KEY
.WORD 90,DMAWNZ,CLSNEUT|TYPICON|SUBKEY
.LONG 0,0
NSTPI:
.LONG 0,0,NONSTOP
.WORD 90,DMAWNZ,CLSNEUT|TYPICON|SUBNSTP
.LONG 0,0
RINGI:
.LONG 0,0,RING
.WORD 90,DMAWNZ,CLSNEUT|TYPICON|SUBRING
.LONG 0,0
GRENI:
.LONG 0,0,GRENADE
.WORD 90,DMAWNZ,CLSNEUT|TYPICON|SUBGREN
.LONG 0,0
XTRAI:
.LONG 0,0,PLAYER
.WORD 90,DMAWNZ,CLSNEUT|TYPICON|SUBMAN
.LONG 0,0
SPRYI:
.LONG 0,0,SPRAY
.WORD 90,DMAWNZ,CLSNEUT|TYPICON|SUBSPRY1
.LONG 0,0
PODI:
.LONG 0,0,POD
.WORD 90,DMAWNZ,CLSNEUT|TYPICON|SUBPOD
.LONG 0,0
BLDI:
.LONG 0,0,BLADE
.WORD 90,DMAWNZ,CLSNEUT|TYPICON|SUBPOW1
.LONG 0,0
HLPRI:
.LONG 0,0,HELPER
.WORD 90,DMAWNZ,CLSNEUT|TYPICON|SUBPOW2
.LONG 0,0
SHOEI:
.LONG 0,0,SHOES
.WORD 90,DMAWNZ,CLSNEUT|TYPICON|SUBSHOE
.LONG 0,0
SMARTI:
.LONG 0,0,SMART
.WORD 90,DMAWNZ,CLSNEUT|TYPICON|SUBSMRT
.LONG 0,0
;
; SHAKER - SHAKE SCREEN AS AS IF AN EARTHQUAKE IS IN EFFECT
; A10 = # TICKS TO SHAKE
; NOTE: TIME TO SHAKE MUST BE MORE THAN 6 TICKS
; RETURNS:
; NOTHING AT ALL
SHAKER:
MOVE A10,A11
MOVK 6,A0
MOVB A0,@SHK_ON
DIVS A0,A11
MOVB A0,@AMP
MOVB A11,@AMPCNT
CREATE 0,SHAKELP
RETS
SHAKELP:
CLR B0
MOVB @AMP,B1
CALLA RANGRAND
MOVB A0,@XSET
CLR B0
MOVB @AMP,B1
CALLA RANGRAND
MOVB A0,@YSET
MOVI 500,A0
CALLA RANDPER
JRC SHAKEY
SHAKEX:
MOVB @XSET,A1
MOVE @WORLDTLX,A0,L
SLL 16,A1
ADD A1,A0
MOVE A0,@WORLDTLX,L
SLEEP 1
MOVB @XSET,A1
MOVE @WORLDTLX,A0,L
SLL 16,A1
SUB A1,A0
MOVE A0,@WORLDTLX,L
JRUC SHAKELP
SHAKEY:
MOVB @YSET,A1
MOVE @WORLDTLY,A0,L
SLL 16,A1
ADD A1,A0
MOVE A0,@WORLDTLY,L
SLEEP 1
MOVB @YSET,A1
MOVE @WORLDTLY,A0,L
SLL 16,A1
SUB A1,A0
MOVE A0,@WORLDTLY,L
MOVB @AMPCNT,A2
DEC A2
MOVB A2,@AMPCNT
JRNZ AMPOK
MOVB A11,@AMPCNT
MOVB @AMP,A0
CMPI 1,A0
JRZ AMPOK
DEC A0
MOVB A0,@AMP
AMPOK:
DSJ A10,SHAKELP
CLR A0
MOVB A0,@SHK_ON
DIE
COVER
SLEEP 7*60
MOVI [78H,10H],A0
MOVE A0,@EXPTLXY,L
MOVI [0FCH,0CEH],A0
MOVE A0,@EXPLRXY,L
MOVI 70H,A10
CALLA CLUSTER
DIE
;
; CLUSTER - MAKE SMALL EXPLOSIONS WITHIN SPECIFIED TARGET AREA
; PARAMS:
; EXPTLXY = TOP LEFT X AND Y (X,Y PACKED) 16.16
; EXPLRXY = LOWER RIGHT X AND Y (X,Y PACKED) 16.16
; A10 = # OF EXPLOSIONS
; RETURNS:
; NOTHING AT ALL
CLUSTER:
SRL 1,A10
CREATE DUM_ID,MASSEXP
RETS
MASSEXP:
CALLR SETEXP
CALLR SETEXP
SLEEP 1
DSJ A10,MASSEXP ;NEXT EXPLOSION PLEASE
DIE
FLASH:
;SOUNDS OFF IN DEMO
ADJUST ADJMUSIC ;GET MUSIC ON OFF FOR DEMO
MOVE A0,A0
JRNZ NONO
MOVI EXP3HI,A0
CALLA ONESND
NONO MOVI MEDEXP,A9
MOVK 1,A1
JSRP FRANIM
MOVE A8,A0 ;DELETE EXPLOSION FROM OBJ LIST
; CALLA DELPAL ;ALSO ITS PALLETTE
CALLA DELOBJ
DIE
SETEXP:
MOVI EXPLODE,A14
CALLA DO_ALL_STUFF
; CALLA GPALOBJ ;ALLOCATE A PALLETTE
; CALLA STFOBJ ;STUFF PARAMETERS
; MOVE A13,*A0(OPLINK),L ;MARK PROCESS IT IS IN
; CALLA INSOBJ ;INSERT ONTO OBJECT LIST
MOVE A0,A8
JRZ OBJFAIL
MOVE @EXPTLXY,B0,W
MOVE @EXPLRXY,B1,W
CALLA RANGRAND
MOVE A0,*A8(OXPOS),W
MOVE @EXPTLXY,B0,L
MOVE @EXPLRXY,B1,L
SRL 16,B0
SRL 16,B1
CALLA RANGRAND
MOVE A0,*A8(OYPOS),W
MOVE A8,A0
CALLA ADJSTWTL
CREATE DUM_ID,FLASH
OBJFAIL:
RETS
;EXPLOSION LIST
MEDEXP:
.LONG EXPb1
.WORD NEWPALET|3
.LONG BULLET ;NEW PAL NAME
.LONG EXPb2
.WORD 4
.LONG EXPb3
.WORD 4
.LONG EXPb4
.WORD 4
.LONG EXPb5
.WORD 4
.LONG EXPb6
.WORD 4
.LONG EXPb7
.WORD 4
.LONG EXPb8
.WORD 4
.LONG 0
EXPLODE:
.LONG 0,0,EXPb1
.WORD >7FFF,DMAWNZ,CLSNEUT
.LONG 0,0
.END