5319 lines
94 KiB
Plaintext
5319 lines
94 KiB
Plaintext
.FILE 'CARN.ASM'
|
||
|
||
;FINAL RELEASE CHANGES:
|
||
;FACCHECK IN MENU.ASM SHOULD SLEEP 60 NOT 1
|
||
|
||
.TITLE 'TOTAL CARNAGE GAME PROGRAM'
|
||
.WIDTH 132
|
||
.OPTION B,D,L,T
|
||
.MNOLIST
|
||
;
|
||
; INITIATED: JULY 17,1990
|
||
; MODIFIED: !
|
||
; SOFTWARE: MARK TURMELL
|
||
;
|
||
; COPYRIGHT (C) 1990 WILLIAMS ELECTRONICS GAMES, INC.
|
||
;
|
||
;
|
||
; GET THE SYSTEM STUFF
|
||
|
||
.INCLUDE "MPROC.EQU" ;MPROC EQUATES
|
||
.INCLUDE "DISP.EQU" ;DISPLAY PROC. EQUATES
|
||
.INCLUDE "\VIDEO\SYS\GSP.INC" ;GSP ASSEMBLER EQUATES
|
||
.INCLUDE "\VIDEO\SYS\SYS.INC" ;Z UNIT SYSTEM EQUATES
|
||
.INCLUDE "\VIDEO\SYS\MACROS.HDR" ;MACROS DEFINITIONS
|
||
.INCLUDE "IMGTBL.GLO"
|
||
.INCLUDE "GAME.EQU"
|
||
.INCLUDE "AUDIT.EQU"
|
||
;
|
||
;SOUNDS EXTERNAL
|
||
;
|
||
.REF CROWD2,UGH,SHKSND,EXP3,MCSPK9,MUSICOFF
|
||
;
|
||
;SYMBOLS EXTERNALLY DEFINED
|
||
;
|
||
.REF STATUS,DEF_PAGE,GAMSTATE,INIT_ALL,UNSTACK,GET_AUD,PCNT
|
||
.REF FACCHECK,KILBGND,CLSCRACH,RANDOM,POWERTST,SCORE_FLAG,PCTOT
|
||
.REF ADD_DUMP,FIRE_DIRECTION,STRT_WPN,P1CTRL,P2CTRL,SENDH_TOP
|
||
.REF B_DIR,FRANIM,CHUNK_PLYR,BLOOD_LST2,EXPMINE2,SCRADD2,SNDPRC
|
||
.REF OBJOFF,OBJON,MSG_PROC2,GAMEOVER,GETFPAL,SHORT_PLYR,COLCYC
|
||
.REF P1DATA,P2DATA,PSTAT,CNTDIG1,CNTDIG2,HALT,STUFF_LVADDR
|
||
.REF THIS_PLYR,GETCPNT,BGND_UD1,SCRIPTPLAY,OFFSCRN,START,ICN2
|
||
.REF ONARRW,ARWOFF,PUMP_RED,RANGRAND,GOOBP,ZONE_TXT,RUNIN
|
||
.REF CYCLE_TABLE,SPAWN_HULKS,WAVE,FRANIM_DIE,BEGIN_CHNK,ICLIST
|
||
.REF MAXHULK,HULK_CNT,SEND_TOP,HULK_DN,DO_ALL_STUFF,ENRECT4
|
||
.REF ERECT2,EN_CURRENT,ERECT3,ENRECT3,KEEPIT,ERECT4,LSHIT,SHAKER
|
||
.REF MAPON,PULLOBJ,JUMPXY,JUMPXY2,RANDPER,ERECT7,ERECT8,SPAWN_LYR
|
||
.REF TBOMBD,STRT_S,DELAYALL,ZONE_TXT2,LYR_CNT,MAXLYR,SPAWN_AHMD
|
||
.REF DBRECT2,DRECT2,TBLST,LAY_EXP,AHMD_CNT,MAXAHMD
|
||
.REF ENRECT0,ERECT10,CTOTAL,HTYPE,SPAWN_T72
|
||
;
|
||
;SYMBOLS DEFINED IN THIS FILE
|
||
;
|
||
.DEF INIT_PROG,DRAW_PLYR_TORSO,EHALT,CTRLS,BNC_PLYR,ANI_FLAG
|
||
.DEF PLYRPRCS,PLYROBJS,KILLP1,KILLP2,BNC_PLYR2,CURRENT,RECT1
|
||
.DEF WARMSET,KILL_PLYR,TARGET,TARGET_NUM,BCURRENT,BRECT1,RINGS
|
||
.DEF CPULEFT,CPUAVG,ANI_HSTG,XYSEEK2,ANI_STAT,DOLORD,WAVE_RAM
|
||
.DEF ANI_EYES,ANI_HD,ANI_LARM,ANI_RARM,ANI_TYP,ANI_MTH,ENEMY_RECT
|
||
.DEF ZEROCNTS,STRT_G,SHIFTLM,KPLARM,INTRO,ISTATE,SHOTKILL,ENDWV
|
||
.DEF CKFORY,SETPXY2,SETPXY1
|
||
.DEF HSTGSET,WARP_KIL
|
||
|
||
.IF DEBUG
|
||
.DEF FORDBG
|
||
; .BSS KEEPA0,32
|
||
; .BSS KEEPA5,32
|
||
.ENDIF
|
||
;
|
||
;UNINITIALIZED RAM DEFINITIONS
|
||
;
|
||
.BSS PALTMP,13*16*2 ;ALLOCATE 2 X COLOR AREA IN RAM
|
||
.BSS PLYROBJS,64 ;2 ENTRIES-PLYR1,PLYR2 TORSO PTR
|
||
.BSS PLYRPRCS,64 ;2 ENTRIES-PLYR1,PLYR2 PROCESS PTR
|
||
.BSS EHALT,16
|
||
.BSS CURRENT,32 ;PNTR TO LIST OF RECTANGLES
|
||
.BSS BCURRENT,32 ;PNTR TO LIST OF RECTANGLES (BULLETS)
|
||
.BSS ENEMY_RECT,32 ;PNTR TO ENEMY SPAWN RECTANGLES
|
||
.BSS CPUAVG,16
|
||
.BSS CPULEFT,16
|
||
.BSS TARGET_NUM,16 ;TARGET NUM FOR SCROLLING
|
||
.BSS WAVE_RAM,6*16*10 ;6=ELEMENTS,16=WORD SIZE
|
||
.BSS KPLARM,32 ;GI WALKIE TALKIE ARM
|
||
.BSS INTRO,16 ;INTRO # FOR CONTROL RM 0=PROF,1=GEN
|
||
.BSS ISTATE,16
|
||
.BSS RAMLST,32*35 ;IMG PNTRS FOR DELETION WHILE SCROLL
|
||
.BSS HSTGSET,16
|
||
|
||
;
|
||
;EQUATES FOR THIS FILE
|
||
;
|
||
VNORMVEL .EQU 016000H
|
||
HNORMVEL .EQU 016000H
|
||
VSLOVEL .EQU 0FA00H ;VNORMVEL*.707
|
||
HSLOVEL .EQU 0FA00H ;HNORMVEL*.707
|
||
;
|
||
VNORMVEL2 .EQU 01F000H
|
||
HNORMVEL2 .EQU 01F000H
|
||
VSLOVEL2 .EQU 018000H ;VNORMVEL*.707
|
||
HSLOVEL2 .EQU 018000H ;HNORMVEL*.707
|
||
;
|
||
VNORMVEL3 .EQU 025000H
|
||
HNORMVEL3 .EQU 027000H
|
||
VSLOVEL3 .EQU 01CA00H ;VNORMVEL*.707
|
||
HSLOVEL3 .EQU 01CA00H ;HNORMVEL*.707
|
||
;
|
||
TEMP .EQU PDATA
|
||
|
||
.TEXT
|
||
|
||
INIT_PROG:
|
||
DINT ;DISABLE INTERRUPTS
|
||
;
|
||
; SET FIELD PARAMETERS
|
||
SETF 16,1,0 ;WORD SIGN EXTEND (FIELD 0)
|
||
SETF 32,1,1 ;LONG WORD (FIELD 1)
|
||
|
||
; SET THE STACK POINTER TO THE END OF SCRATCHPAD
|
||
MOVI STCKST,SP,L ;MOVE STACK ADDR IN SP (32 BITS)
|
||
|
||
; MOVE @WDOGRAM,A0,L ;MARK SYSTEM AS INITIALIZED
|
||
; CMPI WDOGNUM,A0
|
||
; JRNZ WARMSET0
|
||
; MOVI AUDLOCK,A0
|
||
; CALLA AUD1
|
||
;DUMP REPORT OF WATCHDOG
|
||
; .IF DEBUG
|
||
; .ELSE
|
||
; CALLERR 11,0
|
||
; .ENDIF
|
||
;JUMP TO RECOVER CODE
|
||
; MOVI AUDSTAT,A0
|
||
; CALLA GET_AUD
|
||
; MOVE A1,A1
|
||
; JREQ WARMSET ;ATTRACT MODE GLITCH
|
||
; CLR A1
|
||
; CALLA STORE_AUDIT ;WARP ONLY ONCE, DUDE!!!
|
||
;
|
||
; JAUC BONUS_WARP
|
||
|
||
;WARMSET0:
|
||
; JAUC POWERTST
|
||
WARMSET:
|
||
DINT ;DISABLE INTERRUPTS
|
||
;
|
||
; SET FIELD PARAMETERS
|
||
SETF 16,1,0 ;WORD SIGN EXTEND (FIELD 0)
|
||
SETF 32,1,1 ;LONG WORD (FIELD 1)
|
||
|
||
; SET THE STACK POINTER TO THE END OF SCRATCHPAD
|
||
MOVI STCKST,SP,L ;MOVE STACK ADDR IN SP (32 BITS)
|
||
; RESET TODAYS HIGH SCORE TABLE
|
||
; CALLA INIT_TAB
|
||
|
||
|
||
; CLEAR SCRATCHPAD, INITIALIZE PROCESSES
|
||
CALLA CLSCRACH ;CLR SCRATCH RAM
|
||
CALLA INIT_ALL ;INITIALIZE Z-UNIT
|
||
|
||
MAIN0
|
||
CREATE 0,FACCHECK ;START ATTRACT IF THINGS O.K.
|
||
CREATE PLIST_ID,UNSTACK ;CREATE SWITCH UNSTACKER
|
||
;
|
||
; MAIN LINE LOGIC LOOP
|
||
;
|
||
MAINLP:
|
||
CALLA PRCDSP ;DISPATCH PROCESSES
|
||
|
||
MOVE A13,A13
|
||
JRZ MAINPOK
|
||
.IF DEBUG
|
||
LOCKUP
|
||
EINT
|
||
.ELSE
|
||
CALLERR 10,0
|
||
.ENDIF
|
||
;
|
||
MAINPOK:
|
||
CALLA SNDPRC ;DISPATCH AND TIME THE SOUND CALLS
|
||
CALLA RANDOM ;NEW SEED PLEASE
|
||
.IF DEBUG
|
||
callr StCpuLft
|
||
.ENDIF
|
||
|
||
; TEST ROM PROTECT INTERRUPT
|
||
;
|
||
; .IF DEBUG
|
||
; JRUC SKIPCK
|
||
; dint
|
||
; MOVE @INTENB,A0,0 ;ENABLE ROM PROTECT INTERRUPT (ext2)
|
||
; ORI X2E,A0
|
||
; MOVE A0,@INTENB,0
|
||
; eint
|
||
; move @>ffe00000,a0,0
|
||
; move a0,@>ffe00000,0
|
||
;SKIPCK
|
||
; .ENDIF
|
||
|
||
|
||
MOVB @PCNT,A0
|
||
DEC A0
|
||
MOVB A0,@PCNT
|
||
|
||
MOVE @GAMSTATE,A0
|
||
CMPI INDIAG,A0
|
||
JRNZ NODIAG
|
||
|
||
MOVI AMDEPID,A0
|
||
CLR A1
|
||
NOT A1
|
||
CALLA KILALL
|
||
CALLA KILBGND
|
||
CLR A0
|
||
MOVE A0,@SCORE_FLAG
|
||
NODIAG:
|
||
JRUC MAINLP
|
||
|
||
|
||
|
||
*****************************************************************************
|
||
ZEROCNTS
|
||
CLR A0
|
||
MOVE A0,@HULK_CNT
|
||
MOVE A0,@AHMD_CNT
|
||
MOVE A0,@LYR_CNT
|
||
RETS
|
||
SETMAX:
|
||
;FOR HULK/GRUNT
|
||
MOVE @WAVE,A0
|
||
SLL 3,A0
|
||
ADDI HMAX,A0
|
||
MOVB *A0,A0
|
||
MOVK 4,A1 ;SUBTRACT THIS AMOUNT IF 1 PLYR GAME
|
||
CALLR ONEPADJ
|
||
; CALLR ADJMAX ;DIFFICULTY ADJUST
|
||
MOVE A0,@MAXHULK
|
||
|
||
MOVE @WAVE,A0
|
||
SLL 3,A0
|
||
ADDI HTYP,A0
|
||
MOVB *A0,A0
|
||
MOVB A0,@HTYPE
|
||
|
||
;FOR MINE LAYER
|
||
MOVE @WAVE,A0
|
||
SLL 3,A0
|
||
ADDI LMAX,A0
|
||
MOVB *A0,A0
|
||
CLR A1 ;SUBTRACT THIS AMOUNT IF 1 PLYR GAME
|
||
CALLR ONEPADJ
|
||
; CALLR ADJMAX ;DIFFICULTY ADJUST
|
||
MOVE A0,@MAXLYR
|
||
;FOR AHMED FLAME THROWER
|
||
MOVE @WAVE,A0
|
||
SLL 3,A0
|
||
ADDI AMAX,A0
|
||
MOVB *A0,A0
|
||
CLR A1 ;SUBTRACT THIS AMOUNT IF 1 PLYR GAME
|
||
CALLR ONEPADJ
|
||
; CALLR ADJMAX ;DIFFICULTY ADJUST
|
||
MOVE A0,@MAXAHMD
|
||
RETS
|
||
|
||
ONEPADJ
|
||
MOVE @STATUS,A2
|
||
CMPI 3,A2
|
||
JRZ TWEEK1
|
||
SUB A1,A0
|
||
TWEEK1
|
||
RETS
|
||
|
||
HTYP
|
||
;0=REGULAR SOLDIER GRUNT
|
||
;1=AXE CARRYING DEMON GRUNT
|
||
;2=AHMED FLAME THROWER GRUNT
|
||
.BYTE 1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||
|
||
HMAX .BYTE 2,20,24,28,26,25,20,25,30,20,19 ;(WAVE 10 AT END)
|
||
.BYTE 20,20,20 ;GRUNT/HULK
|
||
LMAX .BYTE 2,2,2,2,2,2,2,2,2,2,2
|
||
.BYTE 1,1,1 ;MINE LAYER
|
||
AMAX .BYTE 3,3,3,3,3,3,3,3,3,0,0
|
||
.BYTE 0,3,3 ;AHMED GRUNT
|
||
.EVEN
|
||
|
||
WAVE_INFO:
|
||
;RECORDS LOOK LIKE THIS
|
||
;TYPES:DIFFERENT ID'S
|
||
;#:TOTAL NUMBER PER WAVE
|
||
;DIFFICULTY:0,1,2,3 0=EASIEST
|
||
;RATE:# OF CYCLES/3 (SLP CNTR) BEFORE SPAWN IS CALLED
|
||
;ONSCRN:# OF TYPE ON SCREEN AT START OF WAVE
|
||
;CNTR USED IN WAVE RAM UPDATING
|
||
|
||
;RECORD LAYOUT
|
||
;TYPE # LEVEL RATE ONSCRN CNTR
|
||
;WAVE 1
|
||
.WORD HULK,165,2,18,0,20
|
||
.WORD 0
|
||
;WAVE 2
|
||
.WORD HULK,235,2,1,0,1
|
||
.WORD 0
|
||
;WAVE 3
|
||
.WORD HULK,290,2,9,0,1 ;REACTOR AREA
|
||
.WORD 0
|
||
;WAVE 4
|
||
.WORD HULK,305,2,8,0,1 ;NEAR ELEVATOR DOWN
|
||
.WORD 0
|
||
;WAVE 5
|
||
.WORD HULK,95,2,15,0,1 ;SECRET PATH REACTOR AREA
|
||
.WORD 0
|
||
;WAVE 6
|
||
.WORD HULK,65,3,20,0,20 ;SECRET PATH MIDDLE AREA
|
||
.WORD 0
|
||
;WAVE 7
|
||
.WORD HULK,245,4,13,0,1 ;SECRET PATH ROADWAY AREA,CARS ETC.
|
||
.WORD 0
|
||
;WAVE 8
|
||
.WORD HULK,285,4,10,0,90 ;SECRET PATH TOP AREA (END)
|
||
.WORD 0
|
||
;WAVE 9
|
||
.WORD HULK,285,4,10,0,90 ;UN USED
|
||
.WORD 0
|
||
;WAVE 10
|
||
.WORD HULK,280,2,3,0,1 ;START OF GAME AT DESERT - 1ST LOCKDOWN
|
||
.WORD TANK,5,3,55,0,200
|
||
.WORD AT72,1,0,0,0,675
|
||
.WORD 0
|
||
;WAVE 11
|
||
.WORD HULK,285,4,10,0,90 ;
|
||
.WORD AHMD,3,2,180,0,200
|
||
.WORD TANK,5,3,140,0,1
|
||
.WORD 0
|
||
|
||
TYP_TBL2:
|
||
;FOR SPAWNING
|
||
.LONG SPAWN_HULKS,SPAWN_LYR,SPAWN_AHMD,SPAWN_T72
|
||
|
||
OVERLORD:
|
||
SLEEP 3
|
||
MOVI BMBPID,A0
|
||
CLR A1
|
||
NOT A1
|
||
CALLA EXISTP
|
||
JRNZ OVERLORD
|
||
|
||
; MOVK 10,A0
|
||
; MOVE A0,@WAVE
|
||
; MOVB A0,@ECON ;NO ENEMY TO ENEMY COLLIDE ON!
|
||
; MOVB A0,@ENON ;NO ENEMY TO NEUTRAL COLLIDE ON!
|
||
|
||
CALLR SETMAX
|
||
|
||
CLR A3
|
||
MOVE A3,@HULK_DN
|
||
MOVI WAVE_INFO,A1
|
||
MOVE @WAVE,A0 ;WAVE 1 IS THE FIRST WAVE
|
||
DEC A0
|
||
JRNZ OL00
|
||
MOVE A1,A5
|
||
OL00: CLR A4
|
||
OL0: INC A4
|
||
MOVE *A1,A2,W
|
||
JRZ OL1
|
||
ADDI 6*16,A1
|
||
JRUC OL0
|
||
OL1: CMPI 0,A0
|
||
JRZ GOTIT
|
||
ADDK 16,A1 ;POINT TO NEXT WAVE INFO TABLE
|
||
INC A3
|
||
CMP A0,A3
|
||
JRNE OL00
|
||
MOVE A1,A5
|
||
GOTIT:
|
||
MOVE A5,A1 ;A5=ADDR OF THIS WAVE IN ROM
|
||
; CLEAR WAVE RAM
|
||
MOVI WAVE_RAM,A0
|
||
CLR A6
|
||
MOVI 29,A7
|
||
GT00 MOVE A6,*A0+,L
|
||
DSJS A7,GT00
|
||
|
||
; PUT WAVE INFO INTO RAM FOR UPDATING
|
||
|
||
MOVK 8,A4 ;CAN IT AT 8!
|
||
|
||
MOVI WAVE_RAM,A0
|
||
GT0 MOVI 6,A3 ;# OF FIELDS PER BAD GUY
|
||
GT MOVE *A1+,*A0+,W
|
||
DSJS A3,GT
|
||
DSJS A4,GT0
|
||
; NOW PUT ONSCRN # OF EACH TYPE ONTO SCREEN!
|
||
|
||
SLEEP 60*2 ;DELAY BEFORE BAD GUYS MOVE
|
||
|
||
RLSE:
|
||
;DISPERSE ENEMIES THROUGHOUT WAVE
|
||
MOVI WAVE_RAM,A0
|
||
MOVE @HALT,A1,W
|
||
JRNZ RDN
|
||
RTOP
|
||
MOVE *A0(0),A1
|
||
JRZ RDN
|
||
MOVE *A0(16),A1 ;A1=HOW MANY ARE LEFT
|
||
JRZ NXTR
|
||
MOVE *A0(5*16),A1 ;SPAWN RATE CNTR
|
||
DEC A1
|
||
MOVE A1,*A0(5*16)
|
||
JRNZ NXTR
|
||
MOVE *A0(3*16),A1 ;SPAWN RATE IN CYCLES
|
||
MOVE A1,*A0(5*16)
|
||
;TIME TO SPAWN
|
||
MOVE *A0(0),A1
|
||
DEC A1
|
||
SLL 5,A1
|
||
ADDI TYP_TBL2,A1
|
||
MOVE *A1,A1,L
|
||
PUSH A0
|
||
CALL A1
|
||
PULL A0
|
||
NXTR ADDI 6*16,A0
|
||
JRUC RTOP
|
||
;ALL ENEMIES HAVE BEEN CHECKED FOR RELEASE
|
||
RDN SLEEP 3
|
||
JRUC RLSE
|
||
|
||
RINGS:
|
||
;A10=TIME RINGS ARE ON
|
||
;A9=PLAYER NUMBER 1/2 TO RING
|
||
;TURN OFF EXISTING RINGS AROUND THIS PLAYER PLUS ITS COLOR CYCLE
|
||
MOVB A9,*A13(MYPLYR)
|
||
;SET BOUNDARIES TO ORBITING TYPE BNDRY
|
||
;SET BOUNDARIES FOR CORRECT PLAYER!
|
||
DEC A9
|
||
SLL 5,A9
|
||
MOVI PLYRPRCS,A1,L
|
||
ADD A9,A1
|
||
MOVE *A1,A1,L
|
||
MOVE *A1(LEG_PTR),A11,L
|
||
MOVI CLSPLYR|TYPPLYR|SUBRNG1,A5 ;FOR BOTH PLYRS
|
||
MOVE A5,*A11(OID)
|
||
MOVK 5,A0
|
||
MOVE A0,*A13(TEMP)
|
||
MOVI 01FEH,A0
|
||
MOVE A0,*A1(DELYDET) ;KEEP STUFFING A VALUE IN HERE
|
||
RTP
|
||
MOVI PLYRPRCS,A1,L
|
||
ADD A9,A1
|
||
MOVE *A1,A1,L
|
||
MOVE *A1(TSO_PTR),A8,L
|
||
MOVE *A1(LEG_PTR),A11,L
|
||
;GIVE THESE IMAGES OTHER PAL
|
||
MOVI nup1a,A0
|
||
MOVE *A13(TEMP),A1
|
||
CMPI 2,A1
|
||
JRNZ RCL
|
||
MOVI nup2a,A0
|
||
RCL CALLA GETFPAL ;GET A COLOR MAP ASSIGNMENT
|
||
MOVE A0,*A8(OPAL),W ;STORE THE NEW PALETTE
|
||
MOVE A0,*A11(OPAL),W ;STORE THE NEW PALETTE
|
||
MOVE *A13(TEMP),A0
|
||
CALLA PRCSLP
|
||
MOVE A9,A9
|
||
JRZ P01
|
||
MOVI nup2,A0
|
||
JRUC P001
|
||
P01 MOVI nup1,A0
|
||
P001 CALLA GETFPAL ;GET A COLOR MAP ASSIGNMENT
|
||
;GIVE THESE IMAGES OTHER PAL
|
||
MOVE A0,*A8(OPAL),W ;STORE THE NEW PALETTE
|
||
MOVE A0,*A11(OPAL),W
|
||
MOVE *A13(TEMP),A0
|
||
CALLA PRCSLP
|
||
DEC A10
|
||
JRZ XOUT
|
||
CMPI 25,A10
|
||
JRNZ RTP
|
||
MOVK 2,A0
|
||
MOVE A0,*A13(TEMP)
|
||
JRUC RTP
|
||
XOUT
|
||
;RESTORE CORRECT OID
|
||
MOVI RESTUF,A1
|
||
ADD A9,A1
|
||
MOVE *A1,A1,L
|
||
MOVE A1,*A11(OID)
|
||
;GIVE TORSO SOME DELAY DETECTION
|
||
MOVE *A8(OPLINK),A0,L
|
||
MOVI 40,A1 ;10
|
||
MOVE A1,*A0(DELYDET) ;KEEP STUFFING A VALUE IN HERE
|
||
DIE
|
||
|
||
RESTUF .LONG CLSPLYR|TYPPLYR|SUBPL_1,CLSPLYR|TYPPLYR|SUBPL_2
|
||
|
||
ANI_STAT:
|
||
;A8=STATIC IMAGE FROM BACKGROUND UPDATER
|
||
SLEEP 1
|
||
MOVE @DELAYALL,A0
|
||
JRNZ ANI_STAT
|
||
SLEEP 1CH
|
||
MOVI STATLST,A9
|
||
MOVK 1,A1
|
||
JSRP FRANIM
|
||
MOVE A8,A0
|
||
CALLA DELOBJ
|
||
DIE
|
||
|
||
STATLST .LONG STAT2
|
||
.WORD 7
|
||
.LONG STAT3
|
||
.WORD 7
|
||
.LONG STAT4
|
||
.WORD 5
|
||
.LONG STAT5
|
||
.WORD 5
|
||
.LONG STAT6
|
||
.WORD 4
|
||
.LONG 0
|
||
|
||
ANI_TYP:
|
||
;A8=TYPIST ARM IMAGE FROM BACKGROUND UPDATER
|
||
;ANIMATE, THEN KILL OFF ONCE IT IS OFF SCREEN
|
||
SLEEP 4*60
|
||
MOVE *A8(OYPOS),A0
|
||
SUBI 46H,A0
|
||
MOVE A0,*A8(OYPOS)
|
||
MOVE *A8(OXPOS),A0
|
||
SUBK 1DH,A0
|
||
MOVE A0,*A8(OXPOS)
|
||
ANI_TYP2:
|
||
MOVI TYPLST,A9
|
||
MOVK 1,A1
|
||
JSRP FRANIM
|
||
JRUC ANI_TYP2
|
||
|
||
TYPLST .LONG TARM1
|
||
.WORD 30
|
||
.LONG TARM2
|
||
.WORD 5
|
||
.LONG TARM3
|
||
.WORD 3
|
||
.LONG TARM2
|
||
.WORD 3
|
||
.LONG TARM3
|
||
.WORD 6
|
||
.LONG TARM2
|
||
.WORD 3
|
||
.LONG TARM3
|
||
.WORD 3
|
||
.LONG TARM2
|
||
.WORD 3
|
||
.LONG TARM3
|
||
.WORD 20
|
||
.LONG TARM2
|
||
.WORD 4
|
||
.LONG TARM3
|
||
.WORD 3
|
||
.LONG TARM2
|
||
.WORD 4
|
||
.LONG TARM1
|
||
.WORD 5
|
||
.LONG 0
|
||
|
||
ANI_HD:
|
||
;A8=GENERAL HEAD IMAGE FROM BACKGROUND UPDATER
|
||
;ANIMATE, THEN KILL OFF ONCE IT IS OFF SCREEN
|
||
MOVE *A8(OYPOS),A0
|
||
SUBK 4,A0
|
||
MOVE A0,*A8(OYPOS)
|
||
MOVE *A8(OXPOS),A0
|
||
ADDK 11H,A0
|
||
MOVE A0,*A8(OXPOS)
|
||
;FOR IRAQ MAP
|
||
MOVI HDLST3,A9
|
||
MOVK 1,A1
|
||
JSRP FRANIM
|
||
MOVK 10,A10
|
||
IMP MOVI HDLST,A9
|
||
MOVK 1,A1
|
||
JSRP FRANIM
|
||
DSJS A10,IMP
|
||
DIE
|
||
|
||
;FOR PURPLE MONSTER
|
||
; MOVK 2,A10
|
||
;ANI_HD2:
|
||
; MOVI HDLST,A9
|
||
; MOVK 1,A1
|
||
; JSRP FRANIM
|
||
; DSJS A10,ANI_HD2
|
||
; SLEEP 20
|
||
; MOVI HDLST2,A9
|
||
; MOVK 1,A1
|
||
; JSRP FRANIM
|
||
; MOVK 10,A10
|
||
; JRUC ANI_HD2
|
||
HDLST3
|
||
.LONG GH2
|
||
.WORD 5
|
||
.LONG GH1
|
||
.WORD 03EH
|
||
.LONG GH2
|
||
.WORD 5
|
||
.LONG GH3
|
||
.WORD 10
|
||
.LONG GH2
|
||
.WORD 5
|
||
.LONG GH1
|
||
.WORD 30
|
||
.LONG GH2
|
||
.WORD 5
|
||
.LONG GH3
|
||
.WORD 5
|
||
.LONG GH3A
|
||
.WORD 5
|
||
.LONG GH3
|
||
.WORD 5
|
||
.LONG GH3A
|
||
.WORD 5
|
||
.LONG GH3
|
||
.WORD 10
|
||
.LONG GH3A
|
||
.WORD 5
|
||
.LONG GH3
|
||
.WORD 5
|
||
.LONG GH3A
|
||
.WORD 5
|
||
.LONG GH3
|
||
.WORD 8
|
||
.LONG GH3A
|
||
.WORD 5
|
||
.LONG GH3
|
||
.WORD 5
|
||
.LONG GH3A
|
||
.WORD 5
|
||
.LONG GH3
|
||
.WORD 60
|
||
.LONG 0
|
||
|
||
HDLST2 .LONG GH3A
|
||
.WORD 5
|
||
.LONG GH3
|
||
.WORD 5
|
||
.LONG GH3A
|
||
.WORD 5
|
||
.LONG GH3
|
||
.WORD 10
|
||
.LONG GH3A
|
||
.WORD 5
|
||
.LONG GH3
|
||
.WORD 5
|
||
.LONG GH3A
|
||
.WORD 5
|
||
.LONG GH3
|
||
.WORD 8
|
||
.LONG GH3A
|
||
.WORD 5
|
||
.LONG GH3
|
||
.WORD 5
|
||
.LONG GH3A
|
||
.WORD 5
|
||
.LONG GH3
|
||
.WORD 10
|
||
.LONG GH3A
|
||
.WORD 5
|
||
.LONG GH3
|
||
.WORD 5
|
||
.LONG GH3A
|
||
.WORD 5
|
||
.LONG GH3
|
||
.WORD 10
|
||
.LONG GH3A
|
||
.WORD 5
|
||
.LONG GH3
|
||
.WORD 10
|
||
.LONG GH3A
|
||
.WORD 5
|
||
.LONG GH3
|
||
.WORD 120
|
||
.LONG 0
|
||
|
||
HDLST
|
||
.LONG GH2
|
||
.WORD 5
|
||
.LONG GH1
|
||
.WORD 30
|
||
.LONG GH2
|
||
.WORD 5
|
||
.LONG GH3
|
||
.WORD 50
|
||
.LONG GH2
|
||
.WORD 5
|
||
.LONG GH1
|
||
.WORD 0D0H
|
||
.LONG GH2
|
||
.WORD 5
|
||
.LONG GH3
|
||
.WORD 58H
|
||
.LONG 0
|
||
|
||
ANI_LARM:
|
||
;A8=GENERAL LARM IMAGE FROM BACKGROUND UPDATER
|
||
;ANIMATE, THEN KILL OFF ONCE IT IS OFF SCREEN
|
||
SLEEP 1
|
||
MOVE @DELAYALL,A0
|
||
JRNZ ANI_LARM
|
||
MOVE *A8(OYPOS),A0
|
||
SUBI 3AH,A0
|
||
MOVE A0,*A8(OYPOS)
|
||
MOVE *A8(OXPOS),A0
|
||
ADDI 23H,A0
|
||
MOVE A0,*A8(OXPOS)
|
||
CREATE INTROPID,UPR
|
||
ANI_LARM2:
|
||
MOVI LARMLST,A9
|
||
MOVK 1,A1
|
||
JSRP FRANIM
|
||
JRUC ANI_LARM2
|
||
UPR SLEEP 120
|
||
MOVI 7FD3H,A0
|
||
MOVE A0,*A8(OZPOS)
|
||
DIE
|
||
|
||
LARMLST
|
||
.LONG GLARM1
|
||
.WORD 40
|
||
.LONG GLARM2
|
||
.WORD 5
|
||
.LONG GLARM3
|
||
.WORD 60
|
||
.LONG GLARM2
|
||
.WORD 5
|
||
.LONG GLARM1
|
||
.WORD 60*3
|
||
.LONG GLARM2
|
||
.WORD 5
|
||
.LONG GLARM3
|
||
.WORD 098H
|
||
.LONG GLARM4
|
||
.WORD 5
|
||
.LONG GLARM5
|
||
.WORD 5
|
||
.LONG GLARM6
|
||
.WORD 08FH
|
||
.LONG GLARM5
|
||
.WORD 5
|
||
.LONG GLARM4
|
||
.WORD 5
|
||
.LONG GLARM3
|
||
.WORD 30
|
||
.LONG GLARM2
|
||
.WORD 5
|
||
.LONG GLARM1
|
||
.WORD 60*3
|
||
.LONG GLARM2
|
||
.WORD 5
|
||
.LONG GLARM3
|
||
.WORD 60
|
||
.LONG GLARM2
|
||
.WORD 5
|
||
.LONG GLARM1
|
||
.WORD 60*3
|
||
.LONG 0
|
||
RARMLST
|
||
.LONG GRARM1
|
||
.WORD 40
|
||
.LONG GRARM2
|
||
.WORD 5
|
||
.LONG GRARM3
|
||
.WORD 60
|
||
.LONG GRARM2
|
||
.WORD 5
|
||
.LONG GRARM1
|
||
.WORD 60*3
|
||
.LONG GRARM2
|
||
.WORD 5
|
||
.LONG GRARM3
|
||
.WORD 098H
|
||
.LONG GRARM4
|
||
.WORD 5
|
||
.LONG GRARM5
|
||
.WORD 5
|
||
.LONG GRARM6
|
||
.WORD 08FH
|
||
.LONG GRARM5
|
||
.WORD 5
|
||
.LONG GRARM4
|
||
.WORD 5
|
||
.LONG GRARM3
|
||
.WORD 30
|
||
.LONG GRARM2
|
||
.WORD 5
|
||
.LONG GRARM1
|
||
.WORD 60*3
|
||
.LONG GRARM2
|
||
.WORD 5
|
||
.LONG GRARM3
|
||
.WORD 60
|
||
.LONG GRARM2
|
||
.WORD 5
|
||
.LONG GRARM1
|
||
.WORD 60*3
|
||
.LONG 0
|
||
ANI_RARM:
|
||
;A8=GENERAL RARM IMAGE FROM BACKGROUND UPDATER
|
||
;ANIMATE, THEN KILL OFF ONCE IT IS OFF SCREEN
|
||
SLEEP 1
|
||
MOVE @DELAYALL,A0
|
||
JRNZ ANI_RARM
|
||
MOVE *A8(OYPOS),A0
|
||
SUBI 39H,A0
|
||
MOVE A0,*A8(OYPOS)
|
||
MOVE *A8(OXPOS),A0
|
||
SUBK 1EH,A0
|
||
MOVE A0,*A8(OXPOS)
|
||
ANI_RARM2:
|
||
MOVI RARMLST,A9
|
||
MOVK 1,A1
|
||
JSRP FRANIM
|
||
JRUC ANI_RARM2
|
||
|
||
|
||
ANI_MTH:
|
||
MOVE @INTRO,A0
|
||
JRZ AM2
|
||
;GI MOUTH
|
||
SLEEP 7AH
|
||
MOVI T0G,A9
|
||
AM1 MOVE *A9+,A0,W
|
||
JRZ OUY
|
||
CALLA PRCSLP
|
||
MOVE A8,A0
|
||
CALLA OBJOFF
|
||
MOVE *A9+,A0,W
|
||
CALLA PRCSLP
|
||
MOVE A8,A0
|
||
CALLA OBJON
|
||
JRUC AM1
|
||
OUY MOVE A8,A0
|
||
CALLA DELOBJ
|
||
MOVK 1,A0
|
||
MOVE A0,@ISTATE
|
||
;TRIGGER INTO MOUTH
|
||
;TURN ON SOLDIER TILT IMAGE
|
||
;DELETE SOLDIER HALVES - GIPID OID!
|
||
MOVI SOLD,A14
|
||
CALLA DO_ALL_STUFF
|
||
; MOVE A8,A0
|
||
; CALLA ADJSTWTL
|
||
MOVI GIPID,A0 ;TWO SOLDIER HALVES
|
||
CLR A1
|
||
NOT A1
|
||
CALLA KILOBJ
|
||
SLEEP 5
|
||
MOVI SOLDR3,A1
|
||
MOVE *A8(OFLAGS),A4
|
||
CALLA ANI
|
||
MOVI 087H+20,A0
|
||
MOVE A0,*A8(OXPOS)
|
||
MOVI 042H,A0
|
||
MOVE A0,*A8(OYPOS)
|
||
MOVE A8,A0
|
||
CALLA ADJSTWTL
|
||
SLEEP 5
|
||
CREATE INTROPID,KIP
|
||
DIE
|
||
SOLD:
|
||
.LONG [09FH+20,0],[038FH,0],SOLDR1
|
||
.WORD 103H,DMAWNZ|M_NOCOLL,CLSNEUT|TYPNEUT ;109
|
||
.LONG 0,0
|
||
T0G .WORD 20,3,10,4,40,5,5,5,20,2,15,5,10,50,5,5,5,20,2,15,5,10
|
||
.WORD 2,15,5,10,0
|
||
AM2
|
||
;A8=PROF MOUTH IMAGE FROM BACKGROUND UPDATER
|
||
;ANIMATE, THEN KILL OFF ONCE IT IS OFF SCREEN
|
||
SLEEP 0C0H
|
||
MOVE *A8(OYPOS),A0
|
||
SUBI 56H,A0
|
||
MOVE A0,*A8(OYPOS)
|
||
MOVE *A8(OXPOS),A0
|
||
ADDK 0CH,A0
|
||
MOVE A0,*A8(OXPOS)
|
||
MOVI MTHLST0,A9
|
||
MOVK 1,A1
|
||
JSRP FRANIM
|
||
MOVK 7,A10
|
||
ANI_MTH2:
|
||
MOVI MTHLST,A9
|
||
MOVK 1,A1
|
||
JSRP FRANIM
|
||
DSJS A10,ANI_MTH2
|
||
SLEEP 8
|
||
MOVI PMTH4,A1
|
||
MOVE *A8(OFLAGS),A4
|
||
CALLA ANI
|
||
DIE
|
||
|
||
MTHLST0 .LONG PMTH2
|
||
.WORD 4
|
||
.LONG PMTH1
|
||
.WORD 4
|
||
.LONG PMTH2
|
||
.WORD 4
|
||
.LONG PMTH3
|
||
.WORD 10H ;30H
|
||
.LONG 0
|
||
MTHLST .LONG PMTH3
|
||
.WORD 4
|
||
.LONG PMTH2
|
||
.WORD 4
|
||
.LONG PMTH1
|
||
.WORD 4
|
||
.LONG PMTH2
|
||
.WORD 4
|
||
.LONG PMTH3
|
||
.WORD 18
|
||
.LONG PMTH2
|
||
.WORD 4
|
||
.LONG PMTH1
|
||
.WORD 10
|
||
.LONG PMTH2
|
||
.WORD 4
|
||
.LONG 0
|
||
|
||
ANI_EYES:
|
||
MOVE @INTRO,A0
|
||
JRZ AE2
|
||
SLEEP 120
|
||
;INTRO WITH GI
|
||
FT SLEEP 1
|
||
MOVE @ISTATE,A0
|
||
JRZ FT
|
||
;ABOUT TO SLIDE INTO MOUTH
|
||
MOVE A8,A0
|
||
CALLA OBJOFF
|
||
MOVE @KPLARM,A0,L
|
||
CALLA OBJOFF
|
||
SLEEP 5
|
||
;TURN ON A LEG AT NEW LOCATION
|
||
MOVI SOLDR4,A1
|
||
MOVE *A8(OFLAGS),A4
|
||
ORI M_FLIPH,A4
|
||
CALLA ANI
|
||
MOVE A8,A0
|
||
CALLA OBJON
|
||
MOVI 087H+23+20,A0
|
||
MOVE A0,*A8(OXPOS)
|
||
MOVI 042H+29,A0
|
||
MOVE A0,*A8(OYPOS)
|
||
MOVE A8,A0
|
||
CALLA ADJSTWTL
|
||
|
||
|
||
PUSH A8
|
||
MOVE @KPLARM,A8,L
|
||
MOVI SOLDR4,A1
|
||
MOVE *A8(OFLAGS),A4
|
||
CALLA ANI
|
||
MOVE A8,A0
|
||
CALLA OBJON
|
||
MOVI 087H-25+20,A0
|
||
MOVE A0,*A8(OXPOS)
|
||
MOVI 042H+29,A0
|
||
MOVE A0,*A8(OYPOS)
|
||
MOVE A8,A0
|
||
CALLA ADJSTWTL
|
||
CREATE INTROPID,KIP
|
||
PULL A8
|
||
CREATE INTROPID,KIP
|
||
DIE
|
||
KIP
|
||
;MOVE IT AROUND AND KPLARM AROUND
|
||
;DELETE IT
|
||
MOVK 6,A10
|
||
LP9 MOVK 10,A9
|
||
LPS MOVE A9,A0
|
||
CALLR DOXY
|
||
SLEEP 3
|
||
DSJS A9,LPS
|
||
CMPI 3,A10
|
||
JRNZ LKI
|
||
MOVE *A8(OYPOS),A0
|
||
SUBK 0FH,A0
|
||
MOVE A0,*A8(OYPOS)
|
||
CREATE INTROPID,OOUP
|
||
LKI DSJ A10,LP9
|
||
SLEEP 10
|
||
MOVE A8,A0
|
||
CALLA DELOBJ
|
||
DIE
|
||
OOUP MOVE *A8(OIMG),A0,L
|
||
CMPI SOLDR3,A0
|
||
JRZ OP2
|
||
SLEEP 034H
|
||
OP1 MOVI 100H,A0
|
||
MOVE A0,*A8(OZPOS)
|
||
MOVE A8,A0
|
||
CALLA PULLOBJ
|
||
CALLA INSOBJ
|
||
DIE
|
||
OP2 MOVI 1200,A0
|
||
MOVE A0,*A8(OZPOS)
|
||
MOVE A8,A0
|
||
CALLA PULLOBJ
|
||
CALLA INSOBJ
|
||
SLEEP 20
|
||
MOVI 10H,A0
|
||
MOVE A0,*A8(OZPOS)
|
||
MOVE A8,A0
|
||
CALLA PULLOBJ
|
||
CALLA INSOBJ
|
||
DIE
|
||
|
||
DOXY
|
||
SLL 3,A0
|
||
MOVI SHKX,A1
|
||
ADD A0,A1
|
||
MOVB *A1,A1
|
||
ADDI SHKY,A0
|
||
MOVB *A0,A0
|
||
MOVE *A8(OXPOS),A2,W
|
||
ADD A1,A2
|
||
MOVE A2,*A8(OXPOS),W
|
||
MOVE *A8(OYPOS),A2,W
|
||
ADD A0,A2
|
||
MOVE A2,*A8(OYPOS),W
|
||
RETS
|
||
|
||
SHKX .BYTE 0,-7,0,7,-7,0,7,-4,-4,7,0
|
||
SHKY .BYTE 0,0,7,-4,4,-7,7,-4,0,-7,4
|
||
.EVEN
|
||
|
||
AE2
|
||
;ANIMATE, THEN KILL OFF ONCE IT IS OFF SCREEN
|
||
MOVE *A8(OYPOS),A0
|
||
SUBI 30H,A0
|
||
MOVE A0,*A8(OYPOS)
|
||
MOVE *A8(OXPOS),A0
|
||
ADDK 1DH,A0
|
||
MOVE A0,*A8(OXPOS)
|
||
MOVK 2,A10
|
||
ANI_EYES2:
|
||
MOVI EYELST,A9
|
||
MOVK 1,A1
|
||
JSRP FRANIM
|
||
DSJS A10,ANI_EYES2
|
||
SLEEP 1
|
||
MOVI EYELST2,A9
|
||
MOVK 1,A1
|
||
JSRP FRANIM
|
||
;TURN ON STATIC TO COVER REPORTER
|
||
CALLA STRT_S
|
||
MOVK 6,A10
|
||
MOVI [10,0],A1
|
||
MOVE A1,*A13(PDATA+32),L
|
||
XSLP0 MOVI [15,0],A0
|
||
MOVE A0,*A13(PDATA),L
|
||
MOVK 6,A9
|
||
XSLP
|
||
MOVE *A13(PDATA),A0,L
|
||
MOVE *A13(PDATA+32),A1,L
|
||
MOVI STAT6,A2
|
||
MOVI 279,A3
|
||
MOVI DMAWNZ,A4
|
||
MOVI CLSENMY|TYPGATE,A5 ;STATIC
|
||
CLR A6
|
||
CLR A7
|
||
CALLA BEGINOBJ
|
||
CREATE INTROPID,ANI_S2
|
||
MOVE *A13(PDATA),A0,L
|
||
ADDI [03CH,0],A0
|
||
MOVE A0,*A13(PDATA),L
|
||
DSJ A9,XSLP
|
||
MOVE *A13(PDATA+32),A0,L
|
||
ADDI [31,0],A0
|
||
MOVE A0,*A13(PDATA+32),L
|
||
DSJ A10,XSLP0
|
||
DIE
|
||
ANI_S2
|
||
;A8=STATIC IMAGE FROM BACKGROUND UPDATER
|
||
MOVI STATLST2,A9
|
||
MOVK 1,A1
|
||
JSRP FRANIM
|
||
;REPORTER HAS SCROLLED OFF SCREEN TO LEFT
|
||
SLEEP 0190H
|
||
MOVE A8,A0
|
||
CALLA DELOBJ
|
||
DIE
|
||
STATLST2
|
||
.LONG STAT5
|
||
.WORD 4
|
||
.LONG STAT4
|
||
.WORD 4
|
||
.LONG STAT3
|
||
.WORD 4
|
||
.LONG STAT2
|
||
.WORD 4
|
||
.LONG STAT1
|
||
.WORD 5
|
||
.LONG 0
|
||
|
||
EYELST2
|
||
.LONG PEYE4
|
||
.WORD 02CH
|
||
.LONG PEYE3
|
||
.WORD 3
|
||
.LONG PEYE4
|
||
.WORD 3
|
||
.LONG PEYE3
|
||
.WORD 3
|
||
.LONG PEYE4
|
||
.WORD 3
|
||
.LONG PEYE3
|
||
.WORD 3
|
||
.LONG PEYE4
|
||
.WORD 3
|
||
.LONG PEYE3
|
||
.WORD 3
|
||
.LONG PEYE4
|
||
.WORD 3
|
||
.LONG PEYE3
|
||
.WORD 3
|
||
.LONG PEYE4
|
||
.WORD 3
|
||
.LONG PEYE3
|
||
.WORD 3
|
||
.LONG PEYE4
|
||
.WORD 3
|
||
.LONG PEYE3
|
||
.WORD 3
|
||
.LONG PEYE4
|
||
.WORD 3
|
||
.LONG PEYE3
|
||
.WORD 3
|
||
.LONG PEYE4
|
||
.WORD 3
|
||
.LONG PEYE3
|
||
.WORD 3
|
||
.LONG PEYE4
|
||
.WORD 3
|
||
.LONG PEYE3
|
||
.WORD 3
|
||
.LONG PEYE4
|
||
.WORD 10
|
||
.LONG 0
|
||
|
||
EYELST
|
||
.LONG PEYE1
|
||
.WORD 5
|
||
.LONG PEYE2
|
||
.WORD 5
|
||
.LONG PEYE3
|
||
.WORD 9
|
||
.LONG PEYE2
|
||
.WORD 5
|
||
.LONG PEYE1
|
||
.WORD 1*60
|
||
.LONG PEYE2
|
||
.WORD 4
|
||
.LONG PEYE3
|
||
.WORD 4
|
||
.LONG PEYE2
|
||
.WORD 4
|
||
.LONG PEYE1
|
||
.WORD 30
|
||
.LONG PEYE2
|
||
.WORD 4
|
||
.LONG PEYE3
|
||
.WORD 4
|
||
.LONG PEYE2
|
||
.WORD 4
|
||
.LONG PEYE1
|
||
.WORD 2*60-50
|
||
.LONG PEYE2
|
||
.WORD 5
|
||
.LONG PEYE3
|
||
.WORD 20
|
||
.LONG PEYE2
|
||
.WORD 5
|
||
.LONG PEYE1
|
||
.WORD 1*60
|
||
.LONG 0
|
||
|
||
ANI_HSTG:
|
||
;A8=HSTG IMAGE FROM BACKGROUND UPDATER
|
||
;A9=HOSTAGE #
|
||
;ANIMATE, THEN KILL OFF ONCE IT IS OFF SCREEN
|
||
MOVE A13,*A8(OPLINK),L
|
||
MOVK 1,B0
|
||
MOVI 30,B1 ;91
|
||
CALLA RANGRAND
|
||
CALLA PRCSLP
|
||
SLL 5,A9
|
||
MOVE @HSTGSET,A0
|
||
JRNZ HS1
|
||
ADDI HSTGLST2,A9 ;BALL AND CHAIN
|
||
JRUC HSO
|
||
HS1 ADDI HSTGLST,A9 ;STUCK IN GOO
|
||
HSO MOVE *A9,A9,L
|
||
MOVE A9,A11
|
||
ANIH0 MOVI 20,A10
|
||
ANIHSTG
|
||
MOVK 1,A1
|
||
JSRP FRANIM
|
||
MOVE A11,A9
|
||
DSJ A10,ANIHSTG
|
||
CALLA SCRTST
|
||
JRZ ANIH0
|
||
MOVE A8,A0
|
||
CALLA DELOBJ
|
||
DIE
|
||
|
||
HSTGLST .LONG HGUYA,HGUYB,HGUYC,HGUYD
|
||
HSTGLST2
|
||
.LONG HGUYB2,HGUYA2,HGUYC2,HGUYB2
|
||
|
||
|
||
HGUYA2 .LONG SCHAKLDA1
|
||
.WORD 4
|
||
.LONG SCHAKLDA2
|
||
.WORD 4
|
||
.LONG SCHAKLDA1
|
||
.WORD 4
|
||
.LONG SCHAKLDA2
|
||
.WORD 4
|
||
.LONG SCHAKLDA1
|
||
.WORD 4
|
||
.LONG SCHAKLDA2
|
||
.WORD 4
|
||
.LONG SCHAKLDA1
|
||
.WORD 4
|
||
.LONG SCHAKLDA3
|
||
.WORD 60
|
||
.LONG SCHAKLDA2
|
||
.WORD 6
|
||
.LONG SCHAKLDA1
|
||
.WORD 6
|
||
.LONG SCHAKLDA2
|
||
.WORD 6
|
||
.LONG SCHAKLDA1
|
||
.WORD 6
|
||
.LONG SCHAKLDA2
|
||
.WORD 6
|
||
.LONG SCHAKLDA1
|
||
.WORD 6
|
||
.LONG SCHAKLDA2
|
||
.WORD 90
|
||
.LONG SCHAKLDA3
|
||
.WORD 40
|
||
.LONG 0
|
||
|
||
HGUYB2 .LONG SCHAKLDB4
|
||
.WORD 4
|
||
.LONG SCHAKLDB1
|
||
.WORD 4
|
||
.LONG SCHAKLDB2
|
||
.WORD 4
|
||
.LONG SCHAKLDB3
|
||
.WORD 50
|
||
.LONG SCHAKLDB2
|
||
.WORD 4
|
||
.LONG SCHAKLDB1
|
||
.WORD 4
|
||
.LONG SCHAKLDB4
|
||
.WORD 60
|
||
.LONG SCHAKLDB1
|
||
.WORD 6
|
||
.LONG SCHAKLDB2
|
||
.WORD 6
|
||
.LONG SCHAKLDB3
|
||
.WORD 6
|
||
.LONG SCHAKLDB2
|
||
.WORD 6
|
||
.LONG SCHAKLDB1
|
||
.WORD 6
|
||
.LONG SCHAKLDB2
|
||
.WORD 6
|
||
.LONG SCHAKLDB3
|
||
.WORD 30
|
||
.LONG SCHAKLDB2
|
||
.WORD 6
|
||
.LONG SCHAKLDB1
|
||
.WORD 6
|
||
.LONG SCHAKLDB4
|
||
.WORD 90
|
||
.LONG 0
|
||
HGUYC2 .LONG SHCAKLDC4
|
||
.WORD 4
|
||
.LONG SHCAKLDC3
|
||
.WORD 4
|
||
.LONG SHCAKLDC1
|
||
.WORD 4
|
||
.LONG SHCAKLDC2
|
||
.WORD 4
|
||
.LONG SHCAKLDC1
|
||
.WORD 4
|
||
.LONG SHCAKLDC3
|
||
.WORD 60
|
||
.LONG SHCAKLDC4
|
||
.WORD 90
|
||
.LONG SHCAKLDC3
|
||
.WORD 4
|
||
.LONG SHCAKLDC1
|
||
.WORD 4
|
||
.LONG SHCAKLDC2
|
||
.WORD 4
|
||
.LONG SHCAKLDC1
|
||
.WORD 4
|
||
.LONG SHCAKLDC3
|
||
.WORD 4
|
||
.LONG SHCAKLDC1
|
||
.WORD 4
|
||
.LONG SHCAKLDC2
|
||
.WORD 4
|
||
.LONG SHCAKLDC1
|
||
.WORD 4
|
||
.LONG SHCAKLDC3
|
||
.WORD 4
|
||
.LONG SHCAKLDC1
|
||
.WORD 4
|
||
.LONG SHCAKLDC2
|
||
.WORD 4
|
||
.LONG SHCAKLDC1
|
||
.WORD 4
|
||
.LONG SHCAKLDC3
|
||
.WORD 4
|
||
.LONG SHCAKLDC4
|
||
.WORD 60
|
||
.LONG 0
|
||
|
||
HGUYA .LONG NSDR1
|
||
.WORD 4
|
||
.LONG NSDR2
|
||
.WORD 4
|
||
.LONG NSDR3
|
||
.WORD 4
|
||
.LONG NSDR4
|
||
.WORD 4
|
||
.LONG NSDR3
|
||
.WORD 4
|
||
.LONG NSDR2
|
||
.WORD 4
|
||
.LONG NSDR1
|
||
.WORD 4
|
||
.LONG NSDR2
|
||
.WORD 4
|
||
.LONG NSDR3
|
||
.WORD 4
|
||
.LONG NSDR4
|
||
.WORD 4
|
||
.LONG NSDR3
|
||
.WORD 4
|
||
.LONG NSDR2
|
||
.WORD 4
|
||
.LONG NSDR1
|
||
.WORD 4
|
||
.LONG NSDR8
|
||
.WORD 5
|
||
.LONG NSDR9
|
||
.WORD 5
|
||
.LONG SWAVE1
|
||
.WORD 5
|
||
.LONG SWAVE3
|
||
.WORD 5
|
||
.LONG SWAVE1
|
||
.WORD 5
|
||
.LONG SWAVE2
|
||
.WORD 5
|
||
.LONG SWAVE1
|
||
.WORD 5
|
||
.LONG SWAVE3
|
||
.WORD 5
|
||
.LONG SWAVE1
|
||
.WORD 5
|
||
.LONG SWAVE2
|
||
.WORD 5
|
||
.LONG SWAVE1
|
||
.WORD 5
|
||
.LONG NSDR9
|
||
.WORD 5
|
||
.LONG NSDR8
|
||
.WORD 60
|
||
.LONG 0
|
||
|
||
HGUYB .LONG DOC1
|
||
.WORD 4
|
||
.LONG DOC2
|
||
.WORD 4
|
||
.LONG DOC3
|
||
.WORD 4
|
||
.LONG DOC4
|
||
.WORD 40
|
||
.LONG DOC3
|
||
.WORD 4
|
||
.LONG DOC2
|
||
.WORD 4
|
||
.LONG DOC1
|
||
.WORD 60
|
||
.LONG 0
|
||
HGUYC .LONG BGRL1
|
||
.WORD 8
|
||
.LONG BGRL2
|
||
.WORD 8
|
||
.LONG BGRL1
|
||
.WORD 8
|
||
.LONG BGRL3
|
||
.WORD 8
|
||
.LONG BGRL1
|
||
.WORD 8
|
||
.LONG BGRL2
|
||
.WORD 8
|
||
.LONG BGRL1
|
||
.WORD 8
|
||
.LONG BGRL3
|
||
.WORD 8
|
||
.LONG BGRL1
|
||
.WORD 8
|
||
.LONG BGRL2
|
||
.WORD 60
|
||
.LONG 0
|
||
HGUYD .LONG GN1
|
||
.WORD 4
|
||
.LONG GN2
|
||
.WORD 4
|
||
.LONG GN3
|
||
.WORD 4
|
||
.LONG GN4
|
||
.WORD 4
|
||
.LONG GN5
|
||
.WORD 4
|
||
.LONG GN6
|
||
.WORD 4
|
||
.LONG GN5
|
||
.WORD 4
|
||
.LONG GN4
|
||
.WORD 4
|
||
.LONG GN3
|
||
.WORD 4
|
||
.LONG GN2
|
||
.WORD 4
|
||
.LONG GN1
|
||
.WORD 60
|
||
.LONG 0
|
||
|
||
ANI_FLAG:
|
||
;A8=FLAG IMAGE FROM BACKGROUND UPDATER
|
||
;ANIMATE, THEN KILL OFF ONCE IT IS OFF SCREEN
|
||
MOVI 20,A10
|
||
ANIF1 MOVI FLGLST,A9
|
||
MOVK 1,A1
|
||
JSRP FRANIM
|
||
DSJ A10,ANIF1
|
||
CALLA SCRTST
|
||
JRZ ANI_FLAG
|
||
MOVE A8,A0
|
||
CALLA DELOBJ
|
||
MOVE @WAVE,A0
|
||
CMPI 2,A0
|
||
JRNZ FORGO
|
||
FORDBG
|
||
MOVI -30,A0
|
||
MOVE A0,@JUMPXY
|
||
MOVI RECT2,A0
|
||
MOVE A0,@CURRENT,L
|
||
MOVI BRECT2,A0
|
||
MOVE A0,@BCURRENT,L
|
||
CALLR STRT_G
|
||
FORGO DIE
|
||
|
||
STRT_G
|
||
MOVI GOOBP,A8 ;PAL NAME
|
||
MOVI PALTMP,A9 ;RAM AREA
|
||
MOVI [1,13],A10 ;BEGIN/END COLOR #
|
||
MOVK 6,A11 ;RATE IN TICKS
|
||
CREATE CYCPID,COLCYC ;COLOR CYCLER ON
|
||
RETS
|
||
|
||
FLGLST .LONG IRAQFLG1
|
||
.WORD 5
|
||
.LONG IRAQFLG2
|
||
.WORD 5
|
||
.LONG IRAQFLG3
|
||
.WORD 5
|
||
.LONG IRAQFLG4
|
||
.WORD 5
|
||
.LONG IRAQFLG5
|
||
.WORD 5
|
||
.LONG 0
|
||
|
||
TARGET:
|
||
;PROCESS WHICH RUNS WHEN SCREEN IS STATIONARY.
|
||
;WHEN STARTED, IT WAITS FOR PLAYERS TO REACH A CERTAIN X OR Y TARGET AND
|
||
;THEN STARTS AN APPROPRIATE SCROLL
|
||
;A8=X TARGET OR 0 IF NONE
|
||
;A9=Y TARGET OR 0 (POS WORD)
|
||
|
||
MOVE A8,A8
|
||
JRZ YCHK
|
||
XCHK
|
||
;CHECK PLAYERS FOR X TARGET
|
||
MOVE @STATUS,A0
|
||
CMPI 3,A0
|
||
JRNZ ONEPX
|
||
;BOTH PLYRS IN GAME
|
||
MOVE @PLYROBJS,A0,L
|
||
MOVE @PLYROBJS+32,A1,L
|
||
MOVE *A0(OXPOS),A2
|
||
MOVE *A1(OXPOS),A3
|
||
CMP A8,A2
|
||
JRNC YESHITX
|
||
CMP A8,A3
|
||
JRNC YESHITX
|
||
NOHITX SLEEP 10
|
||
JRUC XCHK
|
||
YESHITX
|
||
;ONE OF PLAYERS IS TO RIGHT OF TARGET LINE
|
||
SUB A2,A3
|
||
ABS A3
|
||
CMPI 200,A3
|
||
JRNC NOHITX
|
||
DOHORZ
|
||
;START HORZ SCROLL!
|
||
MOVE @WORLDTLX,A9,L
|
||
MOVE @TARGET_NUM,A0
|
||
CMPI 2,A0
|
||
JRNZ NOCH
|
||
;FROM REACTOR TO ELEVATOR
|
||
PUSH A0
|
||
MOVI [0E0H,0],A10
|
||
CREATE 0,SETRUNIN
|
||
PULL A0
|
||
MOVI RECT4,A1
|
||
MOVE A1,@CURRENT,L
|
||
MOVI BRECT3,A1
|
||
MOVE A1,@BCURRENT,L
|
||
;IF THEY HAD A MAP, THEY DIDN'T USE IT. THROW IT AWAY
|
||
CLR A1
|
||
MOVE A1,@MAPON
|
||
|
||
NOCH SLL 5,A0
|
||
ADDI TARGET_LST,A0
|
||
MOVE *A0,A0,L
|
||
ADD A0,A9
|
||
CREATE TARGPID,SCROLLFT
|
||
CREATE DELPID,DELOFFH ;IMAGES OFF LEFT OF SCREEN
|
||
DIE
|
||
SETRUNIN
|
||
;A10=TARGET FOR CHANGING @RUNIN TO 1
|
||
SLEEP 60
|
||
MOVE @WORLDTLX,A0,L
|
||
CMP A10,A0
|
||
JRLT SETRUNIN
|
||
MOVK 1,A0
|
||
MOVE A0,@RUNIN
|
||
DIE
|
||
ONEPX DEC A0
|
||
SLL 5,A0
|
||
ADDI PLYROBJS,A0
|
||
MOVE *A0,A0,L
|
||
MOVE *A0(OXPOS),A2
|
||
CMP A8,A2
|
||
JRNC DOHORZ
|
||
JRUC NOHITX
|
||
|
||
SCROLLFT:
|
||
;A9=WORLDTLX TARGET TO STOP AT
|
||
MOVE @HALT,A0
|
||
JRZ SCR1X
|
||
SLEEP 1
|
||
JRUC SCROLLFT
|
||
SCR1X MOVE @WORLDTLX,A0,L
|
||
SUB A9,A0
|
||
ABS A0
|
||
CMPI 10000H,A0
|
||
JRC STOPITX
|
||
MOVE @WORLDTLX,A0,L
|
||
ADDI [0,8000H],A0 ;HORZ SCROLL SPEED
|
||
MOVE A0,@WORLDTLX,L
|
||
DEC A8
|
||
MOVE A8,A0
|
||
ANDI 01FH,A0
|
||
JRNZ NOBGNDX
|
||
;CALL BGND_UD1 OCCASIONALLY
|
||
CALLA BGND_UD1
|
||
NOBGNDX
|
||
SLEEP 2
|
||
|
||
MOVE @WORLDTLX,A1,L
|
||
SRL 16,A1
|
||
ADDK 30,A1 ;STOP SCROLL IF < THIS FROM EDGE
|
||
MOVE @PLYROBJS,A0,L
|
||
JRZ CK2X
|
||
MOVE *A0(OXPOS),A0
|
||
CMP A0,A1
|
||
JRNC PAUSEX
|
||
CK2X MOVE @PLYROBJS+32,A0,L
|
||
JRZ SCROLLFT
|
||
MOVE *A0(OXPOS),A0
|
||
CMP A0,A1
|
||
JRC SCROLLFT
|
||
PAUSEX:
|
||
;ONE OF THE PLAYERS IS TO FAR LEFT
|
||
;WAIT UNTIL THIS IS NOT THE CASE THEN CONTINUE SCROLL
|
||
MOVE @WORLDTLX,A1,L
|
||
SRL 16,A1
|
||
ADDI 70,A1
|
||
MOVE @PLYROBJS,A0,L
|
||
JRZ CK2AX
|
||
MOVE *A0(OXPOS),A0
|
||
CMP A0,A1
|
||
JRNC PAUSE2X
|
||
CK2AX MOVE @PLYROBJS+32,A0,L
|
||
JRZ SCROLLFT
|
||
MOVE *A0(OXPOS),A0
|
||
CMP A0,A1
|
||
JRC SCROLLFT
|
||
PAUSE2X SLEEP 2
|
||
JRUC PAUSEX
|
||
|
||
STOPITX MOVI DELPID,A0
|
||
CLR A1
|
||
NOT A1
|
||
CALLA KILALL
|
||
CALLA OFFSCRN
|
||
|
||
MOVE @TARGET_NUM,A0
|
||
CMPI 2,A0
|
||
JRNZ STPOUT
|
||
|
||
;IN FRONT OF ELEVATOR
|
||
MOVI RECT5,A0
|
||
MOVE A0,@CURRENT,L
|
||
CLR A0
|
||
MOVE A0,@RUNIN ;FROM BOTTOM AGAIN
|
||
|
||
;DELAY START OF NEW HULK WAVE NEAR ELEVATOR
|
||
MOVI ERECT4,A0
|
||
MOVE A0,@ENEMY_RECT,L
|
||
MOVK 4,A0
|
||
CALLR DOLORD
|
||
|
||
MOVI 16,A0 ;FOR JUMPING DOWN VERTICALLY
|
||
MOVE A0,@JUMPXY
|
||
MOVI 035DH,A0 ;FOR JUMPING DOWN HORIZONTALLY
|
||
MOVE A0,@JUMPXY2
|
||
|
||
;PUT IN RECTANGLES FOR ENEMY COLLISIONS HERE!
|
||
MOVI ENRECT4,A0
|
||
MOVE A0,@EN_CURRENT,L
|
||
CREATE 0,POL2 ;BRING ON SIDE POOL
|
||
DIE
|
||
DOLORD MOVE A0,@WAVE
|
||
;A0=WAVE # TO START
|
||
MOVI LORDPID,A0
|
||
CLR A1
|
||
NOT A1
|
||
CALLA EXISTP
|
||
JRZ STR
|
||
CALLA KILL
|
||
STR CREATE LORDPID,OVERLORD
|
||
RETS
|
||
|
||
YCHK
|
||
;CHECK PLAYERS FOR Y TARGET
|
||
MOVE @STATUS,A0
|
||
CMPI 3,A0
|
||
JRNZ ONEP
|
||
;BOTH PLYRS IN GAME
|
||
MOVE @PLYROBJS,A0,L
|
||
MOVE @PLYROBJS+32,A1,L
|
||
MOVE *A0(OYPOS),A2
|
||
MOVE *A1(OYPOS),A3
|
||
CMP A9,A2
|
||
JRC YESHIT
|
||
CMP A9,A3
|
||
JRC YESHIT
|
||
NOHIT SLEEP 10
|
||
JRUC YCHK
|
||
YESHIT
|
||
;ONE OF PLAYERS IS ABOVE TARGET LINE
|
||
SUB A2,A3
|
||
ABS A3
|
||
CMPI 90,A3
|
||
JRNC NOHIT
|
||
DOVERT
|
||
;START VERT SCROLL!
|
||
MOVE @TARGET_NUM,A10
|
||
MOVE @WORLDTLY,A9,L
|
||
CMPI 7,A10 ;AFTER 1ST LOCK DOWN
|
||
JRNZ DZL
|
||
;START HZ SCROLL ALSO
|
||
CREATE TARGPID,SCRDHZ
|
||
DZL
|
||
;PUT UP TEXT MESSAGE OF ZONE ZULU!
|
||
CMPI 1,A10
|
||
JRNZ SKP
|
||
.IF DEBUG
|
||
MOVE @START,A0
|
||
CMPI 3,A0
|
||
JRNZ SKP
|
||
.ENDIF
|
||
MOVI 0C0CH,A8 ;0C0C ;3E3E
|
||
CREATE 0,DO_ZONE_TXT
|
||
SKP SLL 5,A10
|
||
ADDI TARGET_LST,A10
|
||
MOVE *A10,A0,L
|
||
SUB A0,A9
|
||
JRNN OUTA
|
||
CLR A9
|
||
OUTA
|
||
CREATE TARGPID,SCROLLDWN
|
||
CREATE DELPID,DELOFF
|
||
DIE
|
||
DO_ZONE_TXT
|
||
CMPI 1,A10
|
||
JRNZ ASLP
|
||
CREATE 0,SEND_TOP
|
||
ASLP SLEEP 60
|
||
MOVE @WORLDTLY,A0,L
|
||
CMPI [1F0H,0],A0
|
||
JRGT ASLP
|
||
CREATE 0,ZONE_TXT
|
||
SLEEP 60
|
||
CREATE 0,SENDH_TOP
|
||
CREATE 0,SHIFTLM
|
||
SLEEP 120
|
||
;DELAY START OF NEW HULK WAVE
|
||
MOVI ERECT2,A0
|
||
MOVE A0,@ENEMY_RECT,L
|
||
MOVK 2,A0
|
||
CALLR DOLORD
|
||
;POSSIBLY PUT IN RECTANGLES FOR COLLISIONS HERE!
|
||
CLR A0
|
||
MOVE A0,@EN_CURRENT,L
|
||
DIE
|
||
|
||
TARGET_LST:
|
||
.LONG [0E7H,0],[0275H,0],[01E0H,0],[0701H,0],0
|
||
.LONG [26DH,0],[0,0],0 ;DESERT START 26D
|
||
|
||
CKFORY2 SLEEP 60
|
||
MOVE @WORLDTLY,A0,L
|
||
CMPI [3F8H,0],A0
|
||
JRGT CKFORY2
|
||
;READY FOR JEEPS TO COME DOWN AT ME
|
||
MOVK 7,A0
|
||
CALLA DOLORD
|
||
MOVI ERECT7,A0
|
||
MOVE A0,@ENEMY_RECT,L ;FOR SPAWNING
|
||
MOVI SRECT1A,A0
|
||
MOVE A0,@CURRENT,L
|
||
MOVI BSRECT1A,A0
|
||
MOVE A0,@BCURRENT,L
|
||
MOVI 16,A0 ;FOR JUMPING DOWN VERTICALLY
|
||
MOVE A0,@JUMPXY
|
||
DIE
|
||
|
||
CKFORY SLEEP 60
|
||
MOVE @WORLDTLY,A0,L
|
||
CMPI [780H,0],A0
|
||
JRGT CKFORY
|
||
MOVE @WORLDTLX,A9,L
|
||
ADDI [76,0],A9
|
||
MOVE A9,A10
|
||
ADDI [170,0],A10
|
||
|
||
MOVK 6,A8
|
||
MOVE A8,@WAVE
|
||
MOVK 17,A8
|
||
;START THEM MOVING
|
||
CKF CALLR DOSHIFT
|
||
SLEEP 60
|
||
;NOW STOP THEM
|
||
CALLR DOSHIFT2
|
||
;DIFFICULTY SETTING HERE!
|
||
SLEEP 50 ;SLEEP 1 FOR HARD DIFFICULTY
|
||
DSJ A8,CKF
|
||
|
||
MOVE @WORLDTLY,A0,L
|
||
MOVK 1,A8
|
||
CMPI [580H,0],A0
|
||
JRGT CKF
|
||
MOVK 7,A8 ;FOR BARRELS ALONG FREEWAY
|
||
MOVE A8,@WAVE
|
||
CREATE 0,CKFORY2
|
||
DIE
|
||
SHIFTLM
|
||
;SHIFT LAND MINES
|
||
SLEEP 7*60
|
||
MOVE @WORLDTLX,A9,L
|
||
ADDI [60,0],A9
|
||
MOVE A9,A10
|
||
ADDI [280,0],A10
|
||
;START THEM MOVING
|
||
CALLR DOSHIFT
|
||
SLEEP 60
|
||
;NOW STOP THEM
|
||
CALLR DOSHIFT2
|
||
SLEEP 60 ;120
|
||
CALLR DOSHIFT
|
||
SLEEP 60
|
||
;NOW STOP THEM
|
||
CALLR DOSHIFT2
|
||
SLEEP 60
|
||
CALLR DOSHIFT
|
||
SLEEP 60
|
||
;NOW STOP THEM
|
||
CALLR DOSHIFT2
|
||
;OLD DIE
|
||
SLEEP 60
|
||
CALLR DOSHIFT
|
||
SLEEP 60
|
||
;NOW STOP THEM
|
||
CALLR DOSHIFT2
|
||
DIE
|
||
|
||
DOSHIFT2
|
||
MOVI OBJLST,A2,L
|
||
OBP:
|
||
MOVE *A2,A2,L ;GET NEXT
|
||
JREQ OBX ;ALL DONE
|
||
MOVE *A2(OID),A3
|
||
CMPI CLSNEUT|TYPMINE,A3
|
||
JRNE OBP ;NO
|
||
;ZERO VELOCITY
|
||
CLR A0
|
||
MOVE A0,*A2(OXVEL),L
|
||
MOVE A0,*A2(OYVEL),L
|
||
JRUC OBP
|
||
OBX
|
||
RETS
|
||
DOSHIFT
|
||
;SHIFT ALL LAND MINES ON SCREEN
|
||
;A9=LEFT EDGE
|
||
;A10=RIGHT EDGE
|
||
MOVI OBJLST,A2,L
|
||
EXISTOBP:
|
||
MOVE *A2,A2,L ;GET NEXT
|
||
JREQ EXISTOBX ;ALL DONE
|
||
MOVE *A2(OID),A3
|
||
CMPI CLSNEUT|TYPMINE,A3
|
||
JRNE EXISTOBP ;NO
|
||
;GIVE THIS LAND MINE A VELOCITY
|
||
CLR B0
|
||
MOVK 5,B1
|
||
CALLA RANGRAND
|
||
DEC A0
|
||
SLL 5,A0
|
||
MOVE *A2(OXVAL),A1,L
|
||
CMP A9,A1
|
||
JRLT SET2
|
||
CMP A10,A1
|
||
JRGT SET3
|
||
;IN MIDDLE OF SCREEN, MINE CAN GO 4 DIRECTIONS
|
||
MOVI LXV,A1
|
||
ADD A0,A1
|
||
MOVE *A1,A3,L
|
||
MOVI LYV,A1
|
||
ADD A0,A1
|
||
MOVE *A1,A4,L
|
||
JRUC MOUT
|
||
SET2
|
||
;ON LEFT SIDE OF SCRN
|
||
MOVI LXV2,A1
|
||
ADD A0,A1
|
||
MOVE *A1,A3,L
|
||
MOVI LYV2,A1
|
||
ADD A0,A1
|
||
MOVE *A1,A4,L
|
||
JRUC MOUT
|
||
SET3
|
||
;ON RIGHT SIDE OF SCRN
|
||
MOVI LXV3,A1
|
||
ADD A0,A1
|
||
MOVE *A1,A3,L
|
||
MOVI LYV3,A1
|
||
ADD A0,A1
|
||
MOVE *A1,A4,L
|
||
MOUT MOVE A4,*A2(OYVEL),L
|
||
MOVE A3,*A2(OXVEL),L
|
||
JRUC EXISTOBP
|
||
EXISTOBX:
|
||
RETS
|
||
|
||
LXV .LONG -0A000H,0A000H,0,0,0
|
||
LYV .LONG 0,0,-08000H,08000H,-08000H
|
||
LXV2 .LONG 0A000H,0A000H,0,0A000H ;ON LEFT
|
||
LYV2 .LONG 0,0,-08000H,08000H,0
|
||
LXV3 .LONG -0A000H,-0A000H,0,0,-0A000H ;ON RGT
|
||
LYV3 .LONG 0,0,-08000H,08000H,0
|
||
|
||
ONEP DEC A0
|
||
SLL 5,A0
|
||
ADDI PLYROBJS,A0
|
||
MOVE *A0,A0,L
|
||
JRZ NOHIT
|
||
MOVE *A0(OYPOS),A2
|
||
CMP A9,A2
|
||
JRC DOVERT
|
||
JRUC NOHIT
|
||
SCRDHZ
|
||
;MAYBE SCROLL SCREEN HORIZ
|
||
;CHECK TO SEE IF BOTH PLAYERS ARE IN FIXED Y COLUMN
|
||
;IF SO,
|
||
;CHECK CURRENT WORLDX
|
||
;IF IT IS AT BORDER, EXIT, IF NOT, SCROLL
|
||
;A9=WORLDTLY TARGET TO STOP AT
|
||
MOVE @HALT,A0
|
||
JRZ OSCR1
|
||
SLEEP 1
|
||
JRUC SCRDHZ
|
||
OSCR1
|
||
MOVE @WORLDTLX,A1,L
|
||
SRL 16,A1
|
||
ADDI 100,A1
|
||
MOVE @PLYROBJS,A0,L
|
||
JRZ PK2
|
||
MOVE *A0(OXPOS),A0
|
||
CMP A0,A1
|
||
JRC NOTL ;NOT ON LEFT SIDE
|
||
;THIS GUY IS ON LEFT OF SCREEN
|
||
PK2 MOVE @PLYROBJS+32,A0,L
|
||
JRZ GOL ;GO LEFT
|
||
MOVE *A0(OXPOS),A0
|
||
CMP A0,A1
|
||
JRNC GOL
|
||
NOTL
|
||
;DO NOT SCROLL LEFT
|
||
;CHECK FOR RIGHT SIDE SCROLL
|
||
ADDI 200,A1
|
||
MOVE @PLYROBJS,A0,L
|
||
JRZ XPK2
|
||
MOVE *A0(OXPOS),A0
|
||
CMP A0,A1
|
||
JRNC NOTR ;NOT ON RGT SIDE
|
||
;THIS GUY IS ON RGT OF SCREEN
|
||
XPK2 MOVE @PLYROBJS+32,A0,L
|
||
JRZ GOR ;GO LEFT
|
||
MOVE *A0(OXPOS),A0
|
||
CMP A0,A1
|
||
JRC GOR
|
||
NOTR
|
||
;NOT SCROLLING TO RIGHT
|
||
SLEEP 2
|
||
JRUC SCRDHZ
|
||
GOL
|
||
;SCROLL LEFT
|
||
MOVE @WORLDTLX,A0,L
|
||
CMPI [01CH,0],A0
|
||
JRLT NOTR
|
||
;CAN GO FARTHER TO LEFT
|
||
SUBI 08000H,A0 ;HORZ SCROLL SPEED
|
||
INH1 MOVE A0,@WORLDTLX,L
|
||
DEC A8
|
||
MOVE A8,A0
|
||
ANDI 01FH,A0
|
||
JRNZ NOGND
|
||
;CALL BGND_UD1 OCCASIONALLY
|
||
CALLA BGND_UD1
|
||
NOGND JRUC NOTR
|
||
GOR
|
||
;SCROLL LEFT
|
||
MOVE @WORLDTLX,A0,L
|
||
CMPI [0198H,0],A0
|
||
JRGT NOTR
|
||
;CAN GO FARTHER TO RIGHT
|
||
ADDI 08000H,A0 ;HORZ SCROLL SPEED
|
||
JRUC INH1
|
||
|
||
SCROLLDWN:
|
||
;A9=WORLDTLY TARGET TO STOP AT
|
||
MOVE @HALT,A0
|
||
JRZ SCR1
|
||
SLEEP 1
|
||
JRUC SCROLLDWN
|
||
SCR1 MOVE @WORLDTLY,A0,L
|
||
SUB A9,A0
|
||
ABS A0
|
||
CMPI 10000H,A0
|
||
JRC STOPIT
|
||
MOVE @WORLDTLY,A0,L
|
||
SUBI [0,8000H],A0 ;VERT SCROLL SPEED
|
||
MOVE A0,@WORLDTLY,L
|
||
DEC A8
|
||
MOVE A8,A0
|
||
ANDI 01FH,A0
|
||
JRNZ NOBGND
|
||
;CALL BGND_UD1 OCCASIONALLY
|
||
CALLA BGND_UD1
|
||
NOBGND
|
||
SLEEP 2
|
||
|
||
MOVE @WORLDTLY,A1,L
|
||
SRL 16,A1
|
||
ADDI 220,A1
|
||
MOVE @PLYROBJS,A0,L
|
||
JRZ CK2
|
||
MOVE *A0(OYPOS),A0
|
||
CMP A0,A1
|
||
JRC PAUSE
|
||
CK2 MOVE @PLYROBJS+32,A0,L
|
||
JRZ SCROLLDWN
|
||
MOVE *A0(OYPOS),A0
|
||
CMP A0,A1
|
||
JRNC SCROLLDWN
|
||
PAUSE:
|
||
;ONE OF THE PLAYERS IS TO LOW
|
||
;WAIT UNTIL THIS IS NOT THE CASE THEN CONTINUE SCROLL
|
||
MOVE @WORLDTLY,A1,L
|
||
SRL 16,A1
|
||
ADDI 190,A1
|
||
MOVE @PLYROBJS,A0,L
|
||
JRZ CK2A
|
||
MOVE *A0(OYPOS),A0
|
||
CMP A0,A1
|
||
JRC PAUSE2
|
||
CK2A MOVE @PLYROBJS+32,A0,L
|
||
JRZ SCROLLDWN
|
||
MOVE *A0(OYPOS),A0
|
||
CMP A0,A1
|
||
JRNC SCROLLDWN
|
||
PAUSE2 SLEEP 2
|
||
JRUC PAUSE
|
||
|
||
STOPIT MOVI DELPID,A0
|
||
CLR A1
|
||
NOT A1
|
||
CALLA KILALL
|
||
CALLA OFFSCRN
|
||
MOVE @TARGET_NUM,A0
|
||
CMPI 6,A0
|
||
JRZ YEA
|
||
CMPI 5,A0
|
||
JRNZ STP0
|
||
YEA
|
||
;DESERT AREA 1ST STOPPAGE
|
||
MOVK 2,A0
|
||
MOVE A0,@ARWOFF ;BLINK ARROW X MORE TIMES THEN KILL!
|
||
MOVI DRECT2,A0
|
||
MOVE A0,@CURRENT,L
|
||
MOVI DBRECT2,A0
|
||
MOVE A0,@BCURRENT,L
|
||
|
||
SLEEP 20
|
||
|
||
MOVK 5,A10
|
||
MOVI 0,A9 ;Y ADD IN VALUE
|
||
CREATE 0,ZONE_TXT2
|
||
MOVI ENRECT0,A0 ;NO COLLISIONS
|
||
MOVE A0,@EN_CURRENT,L ;FOR BOX COLLISIONS
|
||
MOVI ERECT10,A0
|
||
MOVE A0,@ENEMY_RECT,L ;FOR SPAWNING
|
||
|
||
SLEEP 30 ;40
|
||
MOVK 10,A0
|
||
MOVE A0,@CTOTAL
|
||
CALLA DOLORD ;STORE WAVE #, START WAVE CODE
|
||
DIE
|
||
|
||
STP0 CMPI 1,A0
|
||
JRZ STP1
|
||
CMPI 3,A0
|
||
JRNZ STPOUT
|
||
;END OF SECRET PATH
|
||
MOVK 8,A0
|
||
CALLR DOLORD
|
||
MOVI ERECT8,A0
|
||
MOVE A0,@ENEMY_RECT,L ;FOR SPAWNING
|
||
CLR A0
|
||
MOVE A0,@WORLDTLY,L
|
||
CREATE 0,POL ;BRING ON BOTTOM POOL
|
||
DIE
|
||
STP1
|
||
;REACTOR ON SCREEN
|
||
CLR A0
|
||
MOVE A0,*A13(PROCID),W
|
||
MOVE A0,@WORLDTLY,L
|
||
MOVI RECT3,A0
|
||
MOVE A0,@CURRENT,L
|
||
;DELAY START OF NEW HULK WAVE
|
||
MOVI ERECT3,A0
|
||
MOVE A0,@ENEMY_RECT,L
|
||
MOVK 3,A0
|
||
CALLR DOLORD
|
||
MOVI ICN2,A0
|
||
MOVE A0,@ICLIST,L
|
||
;PUT IN RECTANGLES FOR ENEMY COLLISIONS HERE!
|
||
MOVI ENRECT3,A0
|
||
MOVE A0,@EN_CURRENT,L
|
||
CREATE 0,POL ;BRING ON BOTTOM POOL
|
||
MOVI CYCPID,A0
|
||
MOVE A0,*A13(PROCID)
|
||
;TEMPORARY SHIT
|
||
SLEEP 7*60
|
||
CREATE CYCPID,PUMP_RED
|
||
DIE
|
||
ENDWV
|
||
;WAIT HERE UNTIL END OF WAVE REACHED!
|
||
;BATS TO FLY OUT OF SLIME?
|
||
|
||
;AT TOP OF FIRST WORLD
|
||
;START ARROW TO RIGHT!
|
||
;WAVE DONE
|
||
MOVI SECDR,A0
|
||
CLR A1
|
||
NOT A1
|
||
CALLA EXISTP
|
||
JRZ NOCH0
|
||
;FOUND SECRET DOOR PROCESS
|
||
CALLA KILL
|
||
NOCH0
|
||
|
||
CLR A0 ;FOR BARREL EXPLOSION TIMING
|
||
MOVE A0,@WAVE
|
||
|
||
MOVE @KEEPIT,A8,L ;GET RID OF RIGHT SIDE POOL
|
||
MOVI 8000H,A1
|
||
MOVE A1,*A8(OXVEL),L
|
||
|
||
;START HORZ SCROLL TO ELEVATOR
|
||
MOVK 1,A9 ;A9=0 FOR UP, 1 FOR RGT
|
||
CREATE ARWPID,ONARRW ;TURN ON UP ARROW
|
||
MOVK 2,A0
|
||
MOVE A0,@TARGET_NUM ;NEXT TARGET NUMBER FOR SCROLL
|
||
MOVE @WORLDTLX,A8,L
|
||
SRL 16,A8
|
||
ADDI 80,A8 ;200 ;A8=X TARGET LINE TO TRIGGER SCROLL
|
||
CLR A9 ;A9=0 MEANS NOT CHECKING FOR Y TARGET
|
||
CREATE TARGPID,TARGET
|
||
SLEEP 53
|
||
MOVI 15,A0
|
||
MOVE A0,@ARWOFF ;BLINK ARROW X MORE TIMES THEN KILL!
|
||
MOVE @KEEPIT,A0,L ;GET RID OF RIGHT SIDE POOL
|
||
CALLA DELOBJ
|
||
|
||
STPOUT DIE
|
||
|
||
DELOFF SLEEP 3*60
|
||
;FOR SCROLLING DOWN
|
||
CALLA DELOFFBOT
|
||
JRUC DELOFF
|
||
DELOFFH SLEEP 8*60
|
||
;FOR SCROLLING RGT TO LEFT
|
||
CALLA DELOFFBOTL
|
||
JRUC DELOFFH
|
||
|
||
DELOFFBOTL:
|
||
;DELETE FOREGROUND OBJECTS THAT ARE OFF LEFT SIDE OF SCREEN
|
||
MOVE @WORLDTLX,A1,L
|
||
SRL 16,A1
|
||
MOVI RAMLST,A3
|
||
CLR A0
|
||
MOVE A0,*A3,L
|
||
MOVI OBJLST,A0
|
||
SOBJS1X
|
||
MOVE *A0,A0,L
|
||
JREQ SOBJSX ;SEARCHED THEM ALL
|
||
MOVE *A0(OID),A4,W
|
||
CMPI CLSNEUT|TYPTRUNK,A4
|
||
JRZ CONTAX
|
||
CMPI CLSNEUT|TYPICON|SUBCSH,A4
|
||
JRZ CONTAX
|
||
;ENTER OTHER OIDS TO KILL HERE
|
||
JRUC SOBJS1X
|
||
CONTAX MOVE *A0(OXPOS),A2
|
||
MOVE *A0(OSIZEX),A4
|
||
ADD A4,A2
|
||
CMP A2,A1
|
||
JRC SOBJS1X
|
||
MOVE A0,*A3+,L ;IMG TO BE DELETED
|
||
CLR A4
|
||
MOVE A4,*A3,L ;ZERO NEXT ENTRY
|
||
JRUC SOBJS1X
|
||
|
||
DELOFFBOT:
|
||
;DELETE FOREGROUND OBJECTS THAT ARE OFF BOTTOM OF SCREEN
|
||
MOVE @WORLDTLY,A1,L
|
||
ADDI [260,0],A1
|
||
SRL 16,A1
|
||
MOVI RAMLST,A3
|
||
CLR A0
|
||
MOVE A0,*A3,L
|
||
MOVI OBJLST,A0
|
||
SOBJS1
|
||
MOVE *A0,A0,L
|
||
JREQ SOBJSX
|
||
MOVE *A0(OID),A4,W
|
||
CMPI CLSNEUT|TYPTRUNK,A4
|
||
JRZ CONTA
|
||
CMPI CLSNEUT|TYPICON|SUBCSH,A4
|
||
JRZ CONTA
|
||
;ENTER OTHER OIDS TO KILL HERE
|
||
JRUC SOBJS1
|
||
CONTA MOVE *A0(OYPOS),A2
|
||
CMP A2,A1
|
||
JRNC SOBJS1
|
||
MOVE A0,*A3+,L ;IMG TO BE DELETED
|
||
CLR A4
|
||
MOVE A4,*A3,L ;ZERO NEXT ENTRY
|
||
JRUC SOBJS1
|
||
SOBJSX
|
||
MOVI RAMLST,A1
|
||
DELT MOVE *A1+,A0,L
|
||
JRZ DELX
|
||
CALLA DELOBJ
|
||
JRUC DELT
|
||
DELX RETS
|
||
|
||
POL
|
||
;TURN ON BOTTOM GOOB POOL
|
||
MOVI GOOB,A14
|
||
CALLA DO_ALL_STUFF
|
||
MOVE A0,A8
|
||
SLEEP 04CH
|
||
CLR A0
|
||
MOVE A0,*A8(OYVEL),L
|
||
MOVI 0F4H,A0
|
||
MOVE A0,*A8(OYPOS)
|
||
DIE
|
||
POL2
|
||
;TURN ON SIDE GOOB POOL BY ELEVATOR
|
||
MOVI GOOBA,A14
|
||
CALLA DO_ALL_STUFF
|
||
MOVE A0,A8
|
||
SLEEP 04CH
|
||
CLR A0
|
||
MOVE A0,*A8(OXVEL),L
|
||
DIE
|
||
GOOB:
|
||
.LONG [0DAH,0],[0108H,0],GOOBB
|
||
.WORD 20,DMAWNZ|M_NOCOLL,CLSNEUT|TYPNEUT
|
||
.LONG 0,-4000H
|
||
GOOBA:
|
||
.LONG [01DCH,0],[084H,0],GOOBR
|
||
.WORD 20,DMAWNZ|M_NOCOLL|M_FLIPH,CLSNEUT|TYPNEUT
|
||
.LONG 04000H,0
|
||
|
||
BNC_PLYR2
|
||
;MOVE PLAYER AWAY FROM SOME OBJECT
|
||
;A8=PLYR LEGS
|
||
;A0=OBJECT TO SLIDE AWAY FROM
|
||
;BNC FARTHER AWAY WITH THIS ENTRY POINT
|
||
MMTM SP,A1,A2,A3,A4,A5,A6,A7
|
||
MOVK 2,A7
|
||
JRUC BNCIN
|
||
BNC_PLYR
|
||
;MOVE PLAYER AWAY FROM SOME OBJECT
|
||
;A8=PLYR LEGS
|
||
;A0=OBJECT TO SLIDE AWAY FROM
|
||
MMTM SP,A1,A2,A3,A4,A5,A6,A7
|
||
MOVK 1,A7
|
||
BNCIN:
|
||
MOVE *A8(OIMG),A1,L
|
||
CMPI BLADE,A1
|
||
JRZ AOUT3
|
||
MOVE A8,-*SP,L ;PUSH A8
|
||
MOVE A0,A8
|
||
CALLA GETCPNT
|
||
;A1=Y/X CENTER POS
|
||
MOVE *SP+,A8,L ;PULL A8
|
||
CLR A2
|
||
MOVX A1,A2
|
||
SRL 16,A1
|
||
MOVE A1,A3
|
||
MOVE *A8(OPLINK),A5,L
|
||
MOVE *A5(TSO_PTR),A5,L
|
||
MOVE A8,A1
|
||
MOVE *A1(OXPOS),A4
|
||
MOVE *A5(OXPOS),A6
|
||
CMP A4,A2
|
||
JRGT GONEG
|
||
;ADD TO PLYR X
|
||
ADD A7,A4
|
||
ADD A7,A6
|
||
JRUC GOGO
|
||
GONEG
|
||
SUB A7,A4
|
||
SUB A7,A6
|
||
GOGO
|
||
MMTM SP,A4,A6
|
||
MOVE *A1(OYPOS),A4
|
||
MOVE *A5(OYPOS),A6
|
||
CMP A4,A3
|
||
JRGT GONEG2
|
||
;ADD TO PLYR Y
|
||
ADD A7,A4
|
||
ADD A7,A6
|
||
JRUC GOGO1
|
||
GONEG2 SUB A7,A4
|
||
SUB A7,A6
|
||
GOGO1
|
||
MMFM SP,A0,A2
|
||
;FIRST CHECK TO SEE IF THIS WILL PUSH PLAYER INTO BAD RECTANGLE AREA
|
||
;A0 TO *A1(OXPOS)
|
||
;A4 TO *A1(OYPOS)
|
||
MMTM SP,A0,A1,A2,A4,A6
|
||
MOVE A4,A6
|
||
MOVE A0,A4
|
||
;CHECK FOR RECTANGLE COLLISIONS
|
||
ADDK 4,A4
|
||
ADDK 4,A6
|
||
MOVE @CURRENT,A0,L ;CURRENT RECT LIST
|
||
ANEXT0 MOVE *A0+,A1,W
|
||
JRZ AOUT
|
||
CMP A1,A4
|
||
JRLT ANEXT ;IF BRNCH RECT LFT EDGE > PLYR X
|
||
MOVE *A0+,A1,W
|
||
CMP A1,A6 ;
|
||
JRLT ANEXTA ;IF BRNCH RECT TOP EDGE > PLYR Y
|
||
MOVE *A0+,A1,W
|
||
CMP A1,A4
|
||
JRGT ANEXTB ;IF BRNCH RECT RGT EDGE < PLYR X
|
||
MOVE *A0+,A1,W
|
||
CMP A1,A6
|
||
JRGT ANEXT0 ;IF BRNCH RECT BOT EDGE < PLYR Y
|
||
;HIT
|
||
MMFM SP,A0,A1,A2,A4,A6
|
||
MOVE *A1(OYPOS),A4
|
||
INC A4
|
||
MOVE *A5(OYPOS),A6
|
||
INC A6
|
||
MOVE *A1(OXPOS),A0
|
||
DEC A0
|
||
MOVE *A5(OXPOS),A2
|
||
DEC A2
|
||
JRUC AOUT2
|
||
|
||
ANEXT ADDI 48,A0
|
||
JRUC ANEXT0
|
||
ANEXTA ADDK 32,A0
|
||
JRUC ANEXT0
|
||
ANEXTB ADDK 16,A0
|
||
JRUC ANEXT0
|
||
|
||
AOUT
|
||
MMFM SP,A0,A1,A2,A4,A6
|
||
AOUT2
|
||
MOVE A4,*A1(OYPOS) ;LEGS
|
||
MOVE A6,*A5(OYPOS)
|
||
MOVE A0,*A1(OXPOS) ;LEGS
|
||
MOVE A2,*A5(OXPOS)
|
||
AOUT3 MMFM SP,A0,A1,A2,A3,A4,A5,A6,A7
|
||
RETS
|
||
|
||
|
||
|
||
SHOTKILL
|
||
;IN HERE WHEN A GOO SHOT KILLS PLAYER
|
||
;A8=PLAYER PNTR TO DIE
|
||
MMTM SP,A1,A2,A6,A7,A10,A11
|
||
JRUC SKL2
|
||
WARP_KIL
|
||
MMTM SP,A1,A2,A6,A7,A10,A11
|
||
;A11=TYPLAYR
|
||
;A0=PLYR PROCESS
|
||
MOVI CLSENMY|TYPLAYR,A11
|
||
JRUC WRPK
|
||
|
||
KILL_PLYR:
|
||
;MAKE MORE EFFICIENT!!!
|
||
;SAVE REGISTERS!?!
|
||
;PLYR IN A8, KILLER IN A0
|
||
MMTM SP,A1,A2,A6,A7,A10,A11
|
||
; MOVE *A0(OID),A1
|
||
; ANDI 0FFFFH,A1
|
||
; CMPI CLSENMY|TYPORBL,A1
|
||
; JRNE NSHKME ;SHOCK PLAYER
|
||
;LAZER INTO PLAYER!
|
||
;DIFFERET SIZE FOR DETECTION
|
||
; CALLA SHORT2
|
||
; JRNC GAMOK
|
||
; JRUC KP99
|
||
;NSHKME
|
||
|
||
CALLA SHORT_PLYR ;REALLY A HIT?
|
||
JRNC GAMOK ;BR=NO COLLIDE!
|
||
;KP99
|
||
MOVE @HALT,A1
|
||
JRNZ GAMOK
|
||
SKL2
|
||
MOVE *A8(OPLINK),A7,L
|
||
MOVE *A7(DELYDET),A1,W
|
||
JRZ KRU
|
||
ANDI 01FFH,A1
|
||
JRNZ GAMOK
|
||
KRU MOVE *A7(DEAD),A1
|
||
JRNZ GAMOK
|
||
;YES, KILL THIS PLYR
|
||
;A0=KILLER IMG PNTR
|
||
MOVE A0,A10 ;PASS ALONG FOR MINE DEATH
|
||
MOVE A10,*A7(KILLERO),L ;KEEP KILL PNTR
|
||
MOVE *A0(OID),A11
|
||
ANDI 0FFFFH,A11
|
||
CMPI CLSENMY|TYPLAYR,A11
|
||
JRNZ NOTLAY
|
||
;KILLED BY MINE LAYER, TELL MINE LAYER TO FLAME UP
|
||
MMTM SP,A7,A8
|
||
MOVE A0,A8
|
||
MOVE *A0(OFLAGS),A1
|
||
ORI M_NOCOLL,A1
|
||
MOVE A1,*A0(OFLAGS)
|
||
MOVE *A0(OPLINK),A0,L
|
||
MOVI LAY_EXP,A7 ;END OF MINE LAYER DEATH - NO FLAMES
|
||
CALLA XFERPROC
|
||
MMFM SP,A7,A8
|
||
|
||
NOTLAY CMPI CLSNEUT|TYPMINE,A11
|
||
JRNE NOT_MINE
|
||
MOVE *A7(LEG_PRC),A0,L
|
||
MOVE *A0(SHOECNT),A0
|
||
JRZ KM
|
||
BTST 15,A0 ;CHECK FOR TENNIS SHOES BIT
|
||
JRZ GAMOK
|
||
;YES, WEARING TENNIS SHOES!
|
||
|
||
;KILL MINE
|
||
KM PUSH A7
|
||
MOVI CLSNEUT|TYPNEUT,A0
|
||
MOVE A0,*A10(OID),W
|
||
CREATE 0,EXPMINE2 ;KILL LAND MINE (A10=PTR)
|
||
MOVI EXP3,A0
|
||
CALLA ONESND
|
||
PULL A7
|
||
|
||
NOT_MINE
|
||
;A11=OID OF WHAT KILLED THIS PLAYER
|
||
;A10=KILLER IMAGE PTR
|
||
CLR A0
|
||
MOVE A0,*A8(OXVEL),L
|
||
MOVE A0,*A8(OYVEL),L
|
||
MOVE *A7(TSO_PTR),A1,L
|
||
MOVE A0,*A1(OXVEL),L
|
||
MOVE A0,*A1(OYVEL),L
|
||
MOVE A7,A0 ;A7=PLYR IMG OPLINK
|
||
WRPK
|
||
MOVE A11,*A0(DEAD),W
|
||
;IF HELPER ON, SEND IT FLYING
|
||
MOVE *A0(LSRPTR),A1,L
|
||
JRZ NLZ
|
||
;YES LAZER ON
|
||
PUSH A8
|
||
MOVE A1,A8
|
||
CALLA LSHIT
|
||
PULL A8
|
||
NLZ
|
||
;GIVE THE PLAYER A POINT FOR DIEING!
|
||
MOVI P1DATA,A11
|
||
MOVE *A0(PNUM),A0
|
||
CMPI 1,A0
|
||
JREQ CG
|
||
MOVI P2DATA,A11
|
||
CG
|
||
MOVE A11,A2
|
||
CLR A1
|
||
MOVE A1,*A11(PTSRAM),W
|
||
;A2=P1DATA OR P2DATA
|
||
MOVI >1,A1 ;AMOUNT OF SCORE
|
||
CALLA SCRADD2 ;DO IT!
|
||
|
||
|
||
* XFERPROC - TRANSFER CONTROL OF AN EXISTING PROCESS
|
||
* A0 = PTR OF PROCESS TO BE XFER'D
|
||
* A1 = NEW I.D.
|
||
* A7 = WAKE UP
|
||
* A8 - A11 = PASSED TO THE XFER'D PROC
|
||
MOVI PLY1PID,A1
|
||
MOVE *A7(PNUM),A0
|
||
CMPI 1,A0
|
||
JRZ U8A
|
||
MOVI PLY2PID,A1
|
||
U8A MOVE *A7(LEG_PRC),A0,L
|
||
MOVE A7,A10 ;A10=TSO_PRC
|
||
CALLA GETA8
|
||
MOVI I_DIE,A7
|
||
CALLA XFERPROC
|
||
|
||
|
||
|
||
MOVE *A11(PLIVES),A0,W ;TEMP
|
||
CMPI 9,A0
|
||
JRC TAG1
|
||
MOVK 9,A0
|
||
MOVE A0,*A11(PLIVES),W
|
||
TAG1 CMPI 0,A0
|
||
JRNZ GAMOK
|
||
;OUT OF LIVES
|
||
;CHANGE MESSAGE ON HIS SCOREBOARD/PLUS STILL SHOW PLAYER SCORE!
|
||
;COLOR CYCLE IT
|
||
;DISPLAY A COUNTDOWN
|
||
|
||
MOVI MCSPK9,A0 ;TEN SECONDS SPEECH
|
||
CALLA ONESND
|
||
|
||
CLR A0
|
||
MOVE A0,@THIS_PLYR,W
|
||
|
||
MOVK 1,A1
|
||
MOVB A1,*A11(CNTD) ;FLAG FOR MESSAGES AND CNTR
|
||
CMPI P1DATA,A11
|
||
JRNE F3
|
||
CREATE P1PID,MSG_PROC2
|
||
JRUC F4
|
||
F3 CREATE P2PID,MSG_PROC2
|
||
|
||
F4 MOVE @STATUS,A0
|
||
CMPI 3,A0
|
||
JRZ GAMOK
|
||
;IS PLAYER CNTING DOWN?
|
||
MOVE @CNTDIG1,A2
|
||
MOVE @CNTDIG2,A1
|
||
OR A2,A1
|
||
JRNZ GAMOK
|
||
CREATE BUYINPID,PSTAT
|
||
GAMOK:
|
||
MMFM SP,A1,A2,A6,A7,A10,A11
|
||
RETS
|
||
|
||
;SHOWIT
|
||
;SHOW SHRAPNEL FOR A MOMENT AFTER IT HAS KILLED PLAYER
|
||
;KILL CBALL/SHRAPNEL IMAGE (KILLER)
|
||
;A10=IMG PNTR OF KILLER
|
||
; MOVE *A10(OPLINK),A0,L
|
||
; JRZ DY
|
||
; CALLA KILL
|
||
; CLR A0
|
||
; MOVE A0,*A10(OPLINK),L
|
||
;
|
||
; MOVI 160,A0
|
||
; MOVE A0,*A10(OZPOS),W
|
||
; CLR A0
|
||
;;STOP ITS MOVEMENT
|
||
;;MAKE IT CONSTANT COLOR CYCLE COLOR
|
||
; MOVE A0,*A10(OXVEL),L
|
||
; MOVE A0,*A10(OYVEL),L
|
||
;
|
||
; MOVI BOOM3,A9
|
||
; MOVE A10,A8
|
||
; MOVK 1,A1
|
||
; JSRP FRANIM
|
||
;
|
||
; MOVE A10,A0
|
||
; CALLA DELOBJ
|
||
;DY DIE
|
||
|
||
CTRLS .LONG P1CTRL,P2CTRL
|
||
|
||
**************************************************************************
|
||
* *
|
||
* DRAW_PLYR_TORSO *
|
||
* *
|
||
**************************************************************************
|
||
DRAW_PLYR_TORSO:
|
||
;A8=1 OR 2 FOR PLAYER NUM
|
||
;
|
||
MOVE A8,*A13(PNUM) ;A8=1 OR 2 FOR WHAT PLAYER THIS IS
|
||
DEC A8
|
||
SLL 5,A8
|
||
MOVI CTRLS,A1
|
||
ADD A8,A1
|
||
MOVE *A1,A0,L
|
||
MOVE A0,*A13(STICK),L ;PLACE CORRECT STICK READ ADDR
|
||
|
||
ADDI PLYRPRCS,A8
|
||
MOVE A13,*A8,L ;PUT PLYR PROC INTO TABLE PLYRPRCS
|
||
CALLA STRT_PLYR_LEGS
|
||
MOVE A0,*A13(LEG_PTR),L ;KEEP LEG PTR IN TORSO STURCTURE
|
||
MOVK 02H,A0 ;1
|
||
; 1
|
||
; 8 5
|
||
;7 4
|
||
; 9 6
|
||
; 2
|
||
MOVE A0,*A13(P_DIR),W
|
||
MOVE A0,*A13(TMP_P_DIR),W
|
||
|
||
CALLA STRT_PLYR_TORSO
|
||
|
||
MOVE A8,*A13(TSO_PTR),L ;KEEP TORSO PTR IN TORSO STRUCTURE!?
|
||
MOVE *A13(PNUM),A0
|
||
DEC A0
|
||
SLL 5,A0
|
||
ADDI PLYROBJS,A0
|
||
MOVE A8,*A0,L ;INSERT TORSO PTRS INTO TABLE
|
||
|
||
MOVE *A13(LEG_PTR),A9,L ;READY TO PASS LEG ALONG TO LEG PROC
|
||
MOVE A13,A10 ;PASS TORSO PROC TO LEG
|
||
|
||
MOVE *A13(PNUM),A0
|
||
CMPI 1,A0
|
||
JRNE AXC
|
||
CREATE PLY1PID,DRAW_PLYR_LEGS
|
||
MOVI P1DATA,A11
|
||
CALLA STUFF_LVADDR
|
||
JRUC AXCD
|
||
AXC
|
||
CREATE PLY2PID,DRAW_PLYR_LEGS
|
||
MOVI P2DATA,A11
|
||
CALLA STUFF_LVADDR
|
||
AXCD
|
||
MOVK 2,A0 ;1
|
||
MOVE A0,*A13(OLD_P_DIR),W
|
||
CLR A0
|
||
MOVE A0,*A13(DEAD),W
|
||
MOVE A0,*A13(LSRPTR),L
|
||
MOVE A0,*A13(SHOOT_FLAG),W
|
||
MOVE A0,*A13(WPN_TYP),W
|
||
; MOVE A0,*A13(SHOTCNT)
|
||
|
||
MOVE *A13(PNUM),A7
|
||
DEC A7
|
||
SLL 5,A7
|
||
ADDI PLYRPRCS,A7
|
||
MOVE *A7,A7,L
|
||
MOVI 40,A0
|
||
MOVE A0,*A13(DELYDET)
|
||
TORSO_1:
|
||
CLR A0
|
||
MOVE A0,*A13(REV_FLAG),W
|
||
|
||
MOVE *A13(DELYDET),A0
|
||
JRZ TY
|
||
ANDI 01FFH,A0
|
||
DEC A0
|
||
MOVE A0,*A13(DELYDET)
|
||
|
||
TY
|
||
MOVE *A13(DEAD),A1
|
||
JRNZ DIE_CODE
|
||
NDD
|
||
MOVE *A13(STICK),A2,L
|
||
MOVE *A2,A2,W ;ACTUALLY GET P1/P2CTRL INFO
|
||
|
||
ANDI 0F0H,A2
|
||
JRNZ TORSO_2
|
||
|
||
;NOT_TOUCHED:
|
||
; 1
|
||
; 8 5
|
||
;7 4
|
||
; 9 6
|
||
; 2
|
||
CLR A0
|
||
MOVB A0,*A13(OSHTDIR)
|
||
MOVE *A13(P_DIR),A0 ;DIR + HIBIT SET IF STATIONARY
|
||
BTST 15,A0 ;TEST FOR STANDING FLAG
|
||
JRZ RUNNING
|
||
; P1 IS STANDING STILL. PLACE CORRECT TORSO ON TOP OF FEET
|
||
; CHECK FOR ALREADY THERE!
|
||
ANDI 01FH,A0
|
||
CLR A14
|
||
MOVE A14,*A13(OLD_P_DIR),W
|
||
MOVE A0,A14
|
||
|
||
MOVE A8,A0
|
||
MOVE *A13(LEG_PTR),A8,L ;GET LEG PTR OUT OF TORSO STRUCT
|
||
CALLA GETANIXY
|
||
MOVE *A8(OFLAGS),A4,W
|
||
ORI M_NOCOLL,A4
|
||
CALLA GANISAG
|
||
MOVE A0,A8
|
||
|
||
MOVE A14,A0
|
||
MOVE *A13(WPN_TYP),A2,W
|
||
SLL 5,A2
|
||
ADDI WPNWALK,A2
|
||
MOVE *A2,A2,L
|
||
SLL 5,A0
|
||
ADD A0,A2
|
||
MOVE *A2,A1,L
|
||
|
||
ADDI T_WALK_FLG,A0
|
||
MOVE *A0,A4,W
|
||
|
||
CALLA ANI
|
||
|
||
LTP: SLEEP 1
|
||
JRUC TORSO_1
|
||
|
||
RUNNING:
|
||
MOVE A8,A0
|
||
MOVE *A13(LEG_PTR),A8,L
|
||
CALLA GETANIXY
|
||
MOVE *A8(OFLAGS),A4,W
|
||
ORI M_NOCOLL,A4
|
||
CALLA GANISAG
|
||
MOVE A0,A8
|
||
|
||
MOVE *A13(P_DIR),A4 ;CURRENT DIR P1 IS FACING
|
||
SLL 5,A4
|
||
MOVE *A13(WPN_TYP),A1,W
|
||
SLL 5,A1
|
||
ADDI WPNWALK,A1
|
||
MOVE *A1,A1,L
|
||
;MOVE BASE TABLE ADDRESS INTO A1
|
||
ADD A4,A1 ;CALCULATE OFFSET IN TABLE
|
||
MOVE *A1,A1,L ;MOVE TABLE VALUE INTO A9
|
||
CMP A1,A9
|
||
JREQ TEE
|
||
MOVE A1,A9
|
||
ADDI T_WALK_FLG,A4
|
||
MOVE *A4,A4,W ;FLAG
|
||
|
||
CALLA ANI
|
||
|
||
TEE SLEEP 1
|
||
JRUC TORSO_1
|
||
|
||
TORSO_2:
|
||
; PLAYER IS SHOOTING
|
||
; STICK IS BEING PRESSED
|
||
CLR A0
|
||
MOVE A0,*A13(OLD_P_DIR),W
|
||
CALLA FIRE_DIRECTION
|
||
|
||
;PLAYER WILL BEGIN FRANIM OF SHOOTING IN PROPER DIRECTION
|
||
MOVE *A13(P_DIR),A0
|
||
ANDI 0FH,A0
|
||
MOVE @B_DIR,A4
|
||
MOVB *A13(OSHTDIR),A5
|
||
CMP A4,A5
|
||
JREQ JJ
|
||
;SHOOTING IN NEW DIR. ZERO REV_DIR.
|
||
CLR A5
|
||
MOVE A5,*A13(REV_P_DIR),W
|
||
JJ:
|
||
MOVB A4,*A13(OSHTDIR)
|
||
MOVE A4,*A13(SHOOT_FLAG),W
|
||
|
||
MOVI REVERSE,A1
|
||
SLL 4,A4
|
||
ADD A4,A1
|
||
MOVE *A1,A1 ;GET TABLE VALUES FOR THIS BDIR
|
||
;NOW BIT TEST CORRECT PDIR BIT TO SEE IF WE WILL NEED TO FLIP LEGS
|
||
BTST A0,A1
|
||
JRZ NOR
|
||
;YES WE MUST REVERSE PLAYERS LEGS BECAUSE HE IS TWISTING TO FAR!
|
||
MOVK 1,A1
|
||
MOVE A1,*A13(REV_FLAG),W
|
||
NOR:
|
||
SLL 1,A4
|
||
MOVE *A13(WPN_TYP),A5
|
||
SLL 5,A5
|
||
ADDI LISTWHAT,A5
|
||
MOVE *A5,A5,L
|
||
SLL 5,A0
|
||
ADD A0,A5
|
||
MOVE *A5,A3,L
|
||
|
||
ADD A4,A3 ;CALCULATE OFFSET IN TABLE
|
||
MOVE *A3,A9,L ;MOVE TABLE VALUE INTO A9
|
||
;THIS IS NEW FRANIM SCRIPT PNTR
|
||
PUSH A8
|
||
CALLA STRT_WPN ;TORSO CONTROLS
|
||
PULL A8
|
||
|
||
MOVI 1,A1
|
||
JSRP FRANIM
|
||
|
||
MOVI 0,A0
|
||
MOVE A0,*A13(SHOOT_FLAG)
|
||
|
||
JRUC TORSO_1
|
||
|
||
**************************************************************************
|
||
* *
|
||
* DRAW_PLYR_LEGS *
|
||
* *
|
||
**************************************************************************
|
||
DRAW_PLYR_LEGS:
|
||
;A8=TORSO ABOVE THESE LEGS
|
||
;A10=PROCESS OF TORSO ABOVE THESE LEGS
|
||
;A9=LEG PNTR FOR THESE LEGS (IMAGE ALREADY STARTED)
|
||
MOVE A8,*A13(TSO_PTR),L ;A8=TORSO FOR THESE LEGS
|
||
MOVE A10,*A13(TSO_PRC),L ;A10=TORSO PROCESS PNTR
|
||
MOVE A9,*A13(LEG_PTR),L ;A9=LEG PTR
|
||
MOVE A13,*A10(LEG_PRC),L
|
||
CLR A0
|
||
MOVE A0,*A13(SHOECNT)
|
||
|
||
MOVE A9,A8 ;A8=LEG PNTR
|
||
MOVI PWK_UP,A10 ;INIT FRANIM SCRIPT RESET
|
||
MOVE A10,A9 ;FRANIM NEEDS IT IN A9
|
||
|
||
MOVE_TOP:
|
||
MOVE *A13(TSO_PRC),A7,L
|
||
; MOVE *A7(DEAD),A0 ;GET DEAD FLAG FROM TORSO STRUCT
|
||
; JRNZ I_DIE
|
||
;OKAY_NOW:
|
||
CALLA UPDATE_PLYRXY
|
||
JRC DO_FRANI
|
||
; PLAYER IS NOT TOUCHING MOVEMENT STICK!
|
||
; SET STAND FLAG, AND PNT TO CORRECT IMAGE
|
||
;
|
||
|
||
MOVE *A13(SHOECNT),A1
|
||
JRZ REG7
|
||
BTST 15,A1
|
||
JRNZ REG7
|
||
;FLYING BOOTS ON, NOT TENNIS SHOES
|
||
;SLOW DOWN THIS GUYS VELOCITY
|
||
MOVE *A8(OXVEL),A0,L
|
||
MOVE *A8(OYVEL),A1,L
|
||
OR A0,A1
|
||
JRZ REG71
|
||
;
|
||
MOVE *A8(OXVAL),A4,L
|
||
MOVE *A8(OYVAL),A5,L
|
||
CLR A3 ;DIR CNT
|
||
;CHECK FOR RIGHT SIDE OF SCREEN
|
||
MOVE @WORLDTLX,A0,L ;*A7(RGTBND),A0,L
|
||
ADDI [375,0],A0
|
||
CMP A0,A4
|
||
JRGT REG7
|
||
;SCRN EDGE OK
|
||
MOVE @WORLDTLX,A0,L ;MOVE *A7(LFTBND),A0,L
|
||
ADDI [10,0],A0
|
||
CMP A0,A4
|
||
JRLE REG7
|
||
MOVE @WORLDTLY,A0,L ;MOVE *A7(DNBND),A0,L
|
||
ADDI [240,0],A0
|
||
CMP A0,A5
|
||
JRGE REG7
|
||
MOVE @WORLDTLY,A0,L ;MOVE *A7(UPBND),A0,L
|
||
ADDI [15,0],A0
|
||
CMP A0,A5
|
||
JRLE REG7
|
||
MOVE A5,A6 ;T1 NEEDS A6=YVAL
|
||
; CALLR T1
|
||
CALLR THIS_DIR
|
||
; SETC
|
||
; MOVE A1,*A13(TCH_WALL)
|
||
MOVE A1,A1
|
||
CMPI 1,A1
|
||
JRZ REG7
|
||
;NOT COASTING INTO A WALL OR SCRN BORDER
|
||
MOVE @PCNT,A1
|
||
ANDI 07,A1
|
||
JRNZ REG71
|
||
;SLOW ME DOWN
|
||
MOVE *A13(TSO_PTR),A2,L ;GET TORSO PNTR FOR THESE LEGS
|
||
MOVE *A8(OXVEL),A1,L
|
||
JRN U7
|
||
SRL 1,A1
|
||
MOVE A1,*A8(OXVEL),L
|
||
MOVE A1,*A2(OXVEL),L
|
||
JRUC U7A
|
||
U7 NEG A1
|
||
SRL 1,A1
|
||
NEG A1
|
||
MOVE A1,*A8(OXVEL),L
|
||
MOVE A1,*A2(OXVEL),L
|
||
U7A
|
||
MOVE *A8(OYVEL),A1,L
|
||
JRN U8
|
||
SRL 1,A1
|
||
MOVE A1,*A8(OYVEL),L
|
||
MOVE A1,*A2(OYVEL),L
|
||
JRUC REG71
|
||
U8 NEG A1
|
||
SRL 1,A1
|
||
NEG A1
|
||
MOVE A1,*A8(OYVEL),L
|
||
MOVE A1,*A2(OYVEL),L
|
||
JRUC REG71
|
||
REG7
|
||
CLR A0
|
||
MOVE A0,*A8(OXVEL),L
|
||
MOVE A0,*A8(OYVEL),L
|
||
MOVE *A13(TSO_PTR),A1,L ;GET TORSO PNTR FOR THESE LEGS
|
||
MOVE A0,*A1(OXVEL),L ;UPDATE TORSO INFO
|
||
MOVE A0,*A1(OYVEL),L ;UPDATE TORSO
|
||
REG71
|
||
;A7=TORSO PROC
|
||
MOVK 1,A0
|
||
MOVE A0,*A7(HAVE_REV),W ;UPDATE TORSO
|
||
MOVE *A7(SHOOT_FLAG),A0 ;GET TORSO INFO
|
||
JRZ CONT_1
|
||
; PLAYERS TORSO IS SHOOTING, MAKE FEET TURN IN SAME DIRECTION AS BODY
|
||
ORI 08000H,A0
|
||
MOVE A0,*A7(P_DIR),W
|
||
ANDI 01FH,A0
|
||
SLL 5,A0
|
||
; PLAYER WILL BEGIN FRANIM OF SHOOTING IN PROPER DIRECTION
|
||
MOVE *A13(SHOECNT),A1
|
||
JRZ REGS
|
||
BTST 15,A1
|
||
JRNZ REGS
|
||
;TENNIS
|
||
;BOOTS ON
|
||
ADDI SHOOT_LEG_LIST2,A0
|
||
JRUC NORG
|
||
REGS ADDI SHOOT_LEG_LIST,A0
|
||
NORG MOVE *A0,A9,L ;MOVE TABLE VALUE INTO A9
|
||
;THIS IS NEW FRANIM SCRIPT PNTR
|
||
MOVI 1,A1
|
||
JSRP FRANIM
|
||
JRUC MOVE_TOP
|
||
|
||
CONT_1:
|
||
MOVE *A7(P_DIR),A0 ;GET TORSO INFO
|
||
ORI 08000H,A0
|
||
MOVE A0,*A7(P_DIR) ;GET TORSO INFO
|
||
ANDI 01FH,A0
|
||
SLL 5,A0
|
||
MOVE *A13(SHOECNT),A1
|
||
JRZ REGK
|
||
BTST 15,A1
|
||
;TENNIS?
|
||
JRNZ REGK
|
||
;BOOTS ON
|
||
MOVE @PCNT,A1
|
||
ANDI 03,A1
|
||
JRNZ REGK0
|
||
MOVE *A13(SHOEV),A1
|
||
XORI 1,A1
|
||
MOVE A1,*A13(SHOEV)
|
||
REGK0 MOVE *A13(SHOEV),A1
|
||
JRZ REGK1
|
||
MOVI STAND_TBL_L3,A2
|
||
JRUC REGK2
|
||
REGK1 MOVI STAND_TBL_L2,A2
|
||
JRUC REGK2
|
||
REGK MOVI STAND_TBL_L,A2
|
||
REGK2 ADD A0,A2
|
||
MOVE *A2,A1,L
|
||
|
||
ADDI L_WALK_FLG,A0
|
||
MOVE *A0,A4,W
|
||
|
||
CALLA ANI
|
||
;MAKE SURE A9,A10 ARE SET FOR THIS POSITION FOR WHEN HE DOES BEGIN RUNNING
|
||
|
||
SL_1 SLEEP 1
|
||
JRUC MOVE_TOP
|
||
|
||
DO_FRANI:
|
||
; STICK IS BEING PRESSED
|
||
; PLAYERS LEGS
|
||
;A5=DIR READ FROM STICK AT THIS POINT
|
||
;A7=TORSO PROCESS
|
||
MOVE *A7(REV_FLAG),A0,W
|
||
JRZ NORV
|
||
; WE MUST REVERSE PLAYERS LEGS BECAUSE OF SHOOTING POSITION
|
||
; VEL MUST STAY SAME
|
||
MOVK 1,A0
|
||
MOVE A0,*A7(HAVE_REV),W ;UPDATE TORSO INFO!
|
||
MOVE *A7(REV_P_DIR),A4
|
||
MOVE A5,*A7(P_DIR)
|
||
MOVE A5,A6
|
||
SLL 5,A6
|
||
CMP A5,A4
|
||
JRZ SAME_DIR
|
||
; NEW DIRECTION, SET A9
|
||
MOVE A5,*A7(REV_P_DIR),W ;SAME, BUT SHOULD BE REVERSE
|
||
MOVE *A13(SHOECNT),A1
|
||
JRZ REGH
|
||
BTST 15,A1
|
||
JRZ BOOT
|
||
;TENNIS SHOES ON
|
||
MOVI REV_WALK_LIST3,A2 ;FAST SHOES ANIMATION!
|
||
JRUC REGHA
|
||
BOOT MOVI REV_WALK_LIST2,A2 ;MOVE BASE TABLE ADDRESS INTO A2
|
||
JRUC REGHA
|
||
REGH MOVI REV_WALK_LIST,A2 ;MOVE BASE TABLE ADDRESS INTO A2
|
||
REGHA ADD A6,A2 ;CALCULATE OFFSET IN TABLE
|
||
MOVE *A2,A9,L ;MOVE TABLE VALUE INTO A9
|
||
MOVE A9,A10
|
||
JRUC SAME_DIR
|
||
|
||
|
||
NORV: MOVE *A7(P_DIR),A4 ;CURRENT DIR P1 IS FACING
|
||
ANDI 01FH,A4 ;JUST IN CASE HE WAS STANDING STILL
|
||
MOVE A5,*A7(P_DIR) ;HI BIT IS NOT SET BECAUSE HE RUNS!
|
||
MOVE A5,A6
|
||
SLL 5,A6
|
||
MOVE *A7(HAVE_REV),A0
|
||
JRNZ GET_PROPER
|
||
CMP A5,A4 ;CMP WITH NEW DIR READ FROM STICK
|
||
JRZ SAME_DIR
|
||
GET_PROPER:
|
||
; NEW DIRECTION, SET A9
|
||
CLR A0
|
||
MOVE A0,*A7(HAVE_REV),W
|
||
MOVE *A13(SHOECNT),A1
|
||
JRZ REGJ
|
||
BTST 15,A1
|
||
JRZ BOOT1
|
||
MOVI WALK_LIST3,A2 ;TENNIS SHOE LIST
|
||
JRUC REGJ2
|
||
BOOT1 MOVI WALK_LIST2,A2 ;BOOT LIST
|
||
JRUC REGJ2
|
||
REGJ MOVI WALK_LIST,A2 ;MOVE BASE TABLE ADDRESS INTO A2
|
||
REGJ2 ADD A6,A2 ;CALCULATE OFFSET IN TABLE
|
||
MOVE *A2,A9,L ;MOVE TABLE VALUE INTO A9
|
||
MOVE A9,A10
|
||
SAME_DIR:
|
||
; CHECK BOUNDARIES FIRST
|
||
; COMPARE FOR TOP/BOT BOUNDARIES
|
||
|
||
CALLA STUFF_VEL
|
||
|
||
CLR A1 ;COMMAND PASSED TO FRANIM
|
||
JSRP FRANIM
|
||
JRNC MOVE_TOP
|
||
MOVE A10,A9 ;RESET TO TOP OF RUNNING LIST
|
||
JRUC MOVE_TOP
|
||
|
||
I_DIE
|
||
;PLAYER DEAD, THIS IS WHAT LEGS DO DURING THIS TIME
|
||
; MOVE A7,A9
|
||
;NEED A9=TSO_PRC
|
||
;A8=LEGS IMG
|
||
; MOVE A10,A9
|
||
|
||
SLEEP 05
|
||
;IF BLOWN UP INTO AIR, DO NOT DO THIS
|
||
MOVE *A10(DEAD),A1,W
|
||
ANDI 0FFFFH,A1
|
||
CMPI CLSENMY|TYPLAYR|SUBFLM,A1
|
||
JREQ SKIPSP
|
||
CMPI CLSENMY|TYPLAYR,A1
|
||
JREQ SKIPSP
|
||
CMPI CLSNEUT|TYPMINE,A1
|
||
JREQ SKIPSP
|
||
CMPI CLSENMY|TYPT72|SUBTK,A1
|
||
JREQ SKIPSP
|
||
CMPI CLSENMY|TYPT72,A1
|
||
JREQ SKIPSP
|
||
|
||
;REALIGN PLAYER HALVES WHEN WE RESET IF A SPIN DEATH
|
||
MOVE A8,A0
|
||
MOVE *A13(TSO_PTR),A8,L ;GET LEG PTR OUT OF TORSO STRUCT
|
||
CALLA GETANIXY
|
||
MOVE *A8(OFLAGS),A4,W
|
||
CALLA GANISAG
|
||
MOVE A0,A8
|
||
|
||
MOVK 1,A1
|
||
MOVI LSPN,A9
|
||
JSRP FRANIM
|
||
SKIPSP ;SKIP SPINNING OF LEGS IF NOT NEEDED
|
||
MOVI 0A000000H,A0
|
||
MOVE A0,*A8(OXVAL),L
|
||
|
||
HG SLEEP 1
|
||
; MOVE *A13(TSO_PRC),A7,L
|
||
MOVE *A10(DEAD),A0
|
||
JRNZ HG
|
||
MOVI PWK_UP,A10 ;INIT FRANIM SCRIPT RESET
|
||
MOVE A10,A9 ;FRANIM NEEDS IT IN A9
|
||
JRUC MOVE_TOP ;OKAY_NOW
|
||
;
|
||
; UPDATE PLAYER 1 X Y POSITION BASED ON JOYSTICK INPUT
|
||
;
|
||
UPDATE_PLYRXY:
|
||
;
|
||
;READ MOVEMENT JOYSTICK FOR PLAYER
|
||
;A7=TSO_PRC PROCESS PNTR
|
||
;
|
||
CLR A0
|
||
MOVE A0,*A13(TCH_WALL)
|
||
MOVE *A7(STICK),A2,L ;GET STICK FROM TORSO STRUCT
|
||
MOVE *A2,A2,W ;GET ACTUAL CTRL INFO
|
||
ANDI 0FH,A2
|
||
JRNZ YES_A_MV
|
||
CLRC ;CLEAR CARRY SO WE DON'T FRANI
|
||
; STICK IS NOT BEING TOUCHED
|
||
RETS
|
||
|
||
YES_A_MV:
|
||
;
|
||
; PLAYER WILL MOVE IN DIRECTION SPECIFIED IN A2
|
||
;
|
||
MOVE *A8(OXVAL),A4,L
|
||
MOVE *A8(OYVAL),A5,L
|
||
CLR A3 ;DIR CNT
|
||
BTST BMPRYTE,A2
|
||
JRZ PLYR_LFT
|
||
;CHECK FOR RIGHT SIDE OF SCREEN
|
||
MOVE @WORLDTLX,A0,L
|
||
ADDI [375,0],A0
|
||
CMP A0,A4
|
||
JRGT TSTDN
|
||
;SCRN EDGE OK
|
||
ADDK 04,A3 ;YES VALID
|
||
JRUC TSTDN
|
||
PLYR_LFT:
|
||
BTST BMPLEFT,A2
|
||
JRZ TSTDN
|
||
MOVE @WORLDTLX,A0,L
|
||
ADDI [10,0],A0
|
||
CMP A0,A4
|
||
JRLE TSTDN
|
||
ADDK 7,A3
|
||
TSTDN:
|
||
BTST BMPDOWN,A2
|
||
JRZ PLYR_UP
|
||
MOVE @WORLDTLY,A0,L
|
||
ADDI [240,0],A0
|
||
CMP A0,A5
|
||
JRGE TEST_OUT
|
||
ADDK 2,A3
|
||
JRUC TEST_OUT
|
||
PLYR_UP:
|
||
BTST BMPUP,A2
|
||
JRZ TEST_OUT
|
||
MOVE @WORLDTLY,A0,L
|
||
ADDI [15,0],A0
|
||
CMP A0,A5
|
||
JRLE TEST_OUT
|
||
ADDK 1,A3
|
||
|
||
TEST_OUT:
|
||
.IF DEBUG
|
||
CMPI 9,A3
|
||
JRLS OKAYSTK
|
||
LOCKUP
|
||
MOVK 9,A3
|
||
OKAYSTK
|
||
.ENDIF
|
||
|
||
MOVE A5,A6
|
||
MOVE A3,A5 ;KEEP IN A5 FOR LATER CMP WITH P_DIR
|
||
JRNZ T1
|
||
CLRC
|
||
RETS
|
||
T1:
|
||
CALLR THIS_DIR
|
||
SETC
|
||
MOVE A1,*A13(TCH_WALL)
|
||
MOVE A1,A1
|
||
JRNZ TAGN
|
||
RETS
|
||
TAGN
|
||
MOVE A5,A0
|
||
SLL 5,A0
|
||
ADDI ZCK2,A0
|
||
MOVE *A0,A0,L
|
||
; .IF DEBUG
|
||
; MOVE A0,@KEEPA0,L
|
||
; MOVE A5,@KEEPA5,L
|
||
; .ENDIF
|
||
JUMP A0
|
||
|
||
|
||
THIS_DIR
|
||
;CHECK FOR RECTANGLE COLLISIONS
|
||
ADDI [4,0],A4
|
||
ADDI [4,0],A6
|
||
SLL 5,A3
|
||
MOVE *A13(SHOECNT),A0
|
||
JRZ DREGS ;TENNIS?
|
||
ADDI CKOFF2,A3
|
||
JRUC DRTOP
|
||
DREGS ADDI CKOFF,A3
|
||
DRTOP MOVE *A3,A0,L
|
||
;A0=[Y,X] OFFSET FOR PLAYER TO CHECK AGAINST!
|
||
MOVY A0,A1
|
||
SLL 16,A0
|
||
ADD A0,A4 ;A4=X TO CHECK
|
||
ADD A1,A6 ;A6=Y TO CHECK
|
||
|
||
SRL 16,A4 ;X
|
||
SRL 16,A6 ;Y
|
||
MOVE @CURRENT,A0,L ;CURRENT RECT LIST
|
||
NEXT0 MOVE *A0+,A1,W
|
||
JRZ OUT
|
||
CMP A1,A4
|
||
JRLT NEXT ;IF BRNCH RECT LFT EDGE > PLYR X
|
||
MOVE *A0+,A1,W
|
||
CMP A1,A6 ;
|
||
JRLT NEXTA ;IF BRNCH RECT TOP EDGE > PLYR Y
|
||
MOVE *A0+,A1,W
|
||
CMP A1,A4
|
||
JRGT NEXTB ;IF BRNCH RECT RGT EDGE < PLYR X
|
||
MOVE *A0+,A1,W
|
||
CMP A1,A6
|
||
JRGT NEXT0 ;IF BRNCH RECT BOT EDGE < PLYR Y
|
||
;HIT
|
||
MOVK 1,A1
|
||
SETC
|
||
RETS
|
||
|
||
OUT
|
||
SETC ;WE WILL FRANI
|
||
; STICK HAS BEEN TOUCHED, NO BUMP WITH WALL
|
||
CLR A1
|
||
RETS
|
||
|
||
NEXT ADDI 48,A0
|
||
JRUC NEXT0
|
||
NEXTA ADDK 32,A0
|
||
JRUC NEXT0
|
||
NEXTB ADDK 16,A0
|
||
JRUC NEXT0
|
||
|
||
ZCK2 .LONG OUT,OUT,OUT,OUT,OUT,CKME5,CKME6,OUT,CKME8,CKME9
|
||
CKME5
|
||
;CHECK RECTANGLES AS IF MY DIR WAS 4
|
||
;IF IT IS OKAY TO GO 4, SET MY DIR TO 4 AND GET OUT
|
||
;IF NOT OKAY TO GO 4, CHECK RECTANGLES AS IF MY DIR WAS 1
|
||
;IF IT IS OKAY TO GO 1, SET MY DIR TO 1 AND GET OUT
|
||
MOVE *A8(OXVAL),A4,L
|
||
MOVE *A8(OYVAL),A6,L
|
||
MOVK 4,A3
|
||
CALLR THIS_DIR
|
||
MOVE A1,*A13(TCH_WALL)
|
||
MOVE A1,A1
|
||
JRNZ CKJ
|
||
MOVK 4,A5 ;YES, GO DIR 4
|
||
SETC
|
||
RETS
|
||
CKJ MOVK 1,A3
|
||
MOVE *A8(OXVAL),A4,L
|
||
MOVE *A8(OYVAL),A6,L
|
||
CALLR THIS_DIR
|
||
MOVE A1,*A13(TCH_WALL)
|
||
MOVE A1,A1
|
||
JRNZ CKOUT
|
||
MOVK 1,A5
|
||
CKOUT SETC
|
||
RETS
|
||
|
||
CKME6
|
||
;CHECK RECTANGLES AS IF MY DIR WAS 4
|
||
;IF IT IS OKAY TO GO 4, SET MY DIR TO 4 AND GET OUT
|
||
;IF NOT OKAY TO GO 4, CHECK RECTANGLES AS IF MY DIR WAS 2
|
||
;IF IT IS OKAY TO GO 2, SET MY DIR TO 2 AND GET OUT
|
||
MOVE *A8(OXVAL),A4,L
|
||
MOVE *A8(OYVAL),A6,L
|
||
MOVK 4,A3
|
||
CALLR THIS_DIR
|
||
MOVE A1,*A13(TCH_WALL)
|
||
MOVE A1,A1
|
||
JRNZ CKJ6
|
||
MOVK 4,A5 ;YES, GO DIR 4
|
||
SETC
|
||
RETS
|
||
CKJ6 MOVK 2,A3
|
||
MOVE *A8(OXVAL),A4,L
|
||
MOVE *A8(OYVAL),A6,L
|
||
CALLR THIS_DIR
|
||
MOVE A1,*A13(TCH_WALL)
|
||
MOVE A1,A1
|
||
JRNZ CKOUT
|
||
MOVK 2,A5
|
||
SETC
|
||
RETS
|
||
CKME8
|
||
;CHECK RECTANGLES AS IF MY DIR WAS 7
|
||
;IF IT IS OKAY TO GO 7, SET MY DIR TO 7 AND GET OUT
|
||
;IF NOT OKAY TO GO 7, CHECK RECTANGLES AS IF MY DIR WAS 1
|
||
;IF IT IS OKAY TO GO 1, SET MY DIR TO 1 AND GET OUT
|
||
MOVE *A8(OXVAL),A4,L
|
||
MOVE *A8(OYVAL),A6,L
|
||
MOVK 7,A3
|
||
CALLR THIS_DIR
|
||
MOVE A1,*A13(TCH_WALL)
|
||
MOVE A1,A1
|
||
JRNZ CKJ7
|
||
MOVK 7,A5 ;YES, GO DIR 7
|
||
SETC
|
||
RETS
|
||
CKJ7 MOVK 1,A3
|
||
MOVE *A8(OXVAL),A4,L
|
||
MOVE *A8(OYVAL),A6,L
|
||
CALLR THIS_DIR
|
||
MOVE A1,*A13(TCH_WALL)
|
||
MOVE A1,A1
|
||
JRNZ CKOUT
|
||
MOVK 1,A5
|
||
SETC
|
||
RETS
|
||
CKME9
|
||
;CHECK RECTANGLES AS IF MY DIR WAS 7
|
||
;IF IT IS OKAY TO GO 7, SET MY DIR TO 7 AND GET OUT
|
||
;IF NOT OKAY TO GO 7, CHECK RECTANGLES AS IF MY DIR WAS 2
|
||
;IF IT IS OKAY TO GO 2, SET MY DIR TO 2 AND GET OUT
|
||
MOVE *A8(OXVAL),A4,L
|
||
MOVE *A8(OYVAL),A6,L
|
||
MOVK 7,A3
|
||
CALLR THIS_DIR
|
||
MOVE A1,*A13(TCH_WALL)
|
||
MOVE A1,A1
|
||
JRNZ CKJ8
|
||
MOVK 7,A5 ;YES, GO DIR 4
|
||
SETC
|
||
RETS
|
||
CKJ8 MOVK 2,A3
|
||
MOVE *A8(OXVAL),A4,L
|
||
MOVE *A8(OYVAL),A6,L
|
||
CALLR THIS_DIR
|
||
MOVE A1,*A13(TCH_WALL)
|
||
MOVE A1,A1
|
||
JRNZ CKOUT
|
||
MOVK 2,A5
|
||
SETC
|
||
RETS
|
||
|
||
;FIRST RECTANGLE LIST FOR PLAYERS
|
||
XX .EQU 241
|
||
YY .EQU 202
|
||
RECT1 .WORD 242-XX,927-YY,338-XX,990-YY ;ONE ENTRY = UPLFT,LOWRGT
|
||
.WORD 324-4-XX,922-YY,380-XX,980-YY
|
||
.WORD 500-XX,921-YY,551-XX,980-YY
|
||
.WORD 540-4-XX,927-YY,630-XX,990-YY
|
||
|
||
RECT2 .WORD 1,0,27H,23CH ;242-XX,202-YY,280-XX,774-YY ;AFTER FLAG IS DEAD
|
||
.WORD 026H,19DH,3DH,1FAH ;279-XX,618-YY,302-XX,708-YY
|
||
.WORD 26H,0FBH,3DH,15DH ;279-XX,453-YY,302-XX,551-YY
|
||
.WORD 14FH-4,1CAH,18FH,21EH ;579-XX,677-YY,640-XX,744-YY
|
||
.WORD 14FH-4,14AH,18FH,19DH ;579-XX,542-YY,640-XX,615-YY
|
||
.WORD 245-XX,202-YY,827-XX,263-YY
|
||
.WORD 268-XX,308-YY,368-XX,397-YY
|
||
.WORD 245-XX,202-YY,07AH,285-YY
|
||
.WORD 0
|
||
RECT3 .WORD 268-XX,312-YY,370-XX,397-YY ;VERT SCROLL STOPS
|
||
.WORD 245-XX,202-YY,827-XX,263-YY
|
||
.WORD 242-XX,202-YY,277-XX,574-YY
|
||
.WORD 245-XX,202-YY,07AH,277-YY ;285
|
||
.WORD 0
|
||
|
||
RECT4 .WORD 268-XX,312-YY,370-XX,397-YY ;HORZ SCROLL STARTS
|
||
.WORD 245-XX,202-YY,827-XX,263-YY
|
||
.WORD 242-XX,202-YY,277-XX,574-YY
|
||
.WORD 822-XX,206-YY,906-XX,307-YY
|
||
.WORD 955-XX,203-YY,1120-XX,307-YY
|
||
.WORD 1071-XX,278-YY,1125-XX,463-YY
|
||
.WORD 0
|
||
RECT5 .WORD 822-4-XX,206-YY,906-XX,306-YY ;HORZ SCROLL STOPS
|
||
.WORD 955-4-XX,203-YY,1120-XX,306-YY
|
||
.WORD 1079-4-XX,278-YY,1125-XX,463-YY ;1079=1071
|
||
.WORD 245-XX,203-YY,827-XX,263-YY
|
||
.WORD 0
|
||
SRECT1A ;FOR AREA ABOVE EXPRESSWAY
|
||
.WORD 252-XX,203-YY,420-XX,305-YY ;INTO ELEVATOR 45 WIDE
|
||
.WORD 465-XX,203-YY,637-XX,305-YY
|
||
.WORD 0
|
||
BSRECT1A ;ABOVE XPRESS
|
||
.WORD 252-XX,202-YY,420-XX,290-YY
|
||
.WORD 465-XX,202-YY,637-XX,290-YY
|
||
.WORD 0
|
||
|
||
BRECT1 .WORD 243-XX,900-YY,378-XX,970-YY
|
||
.WORD 503-XX,908-YY,635-XX,970-YY
|
||
|
||
BRECT2 .WORD 242-XX,203-YY,281-XX,772-YY
|
||
.WORD 582-XX,656-YY,641-XX,740-YY
|
||
.WORD 582-XX,527-YY,641-XX,610-YY
|
||
.WORD 243-XX,204-YY,843-XX,250-YY
|
||
.WORD 265-XX,305-YY,361-XX,385-YY
|
||
.WORD 0
|
||
BRECT3 .WORD 243-XX,204-YY,843-XX,250-YY ;FROM REACTOR TO ELEVATOR
|
||
.WORD 024DH,05H,02A0H,057H ;830-XX,207-YY,894-XX,294-YY
|
||
.WORD 02C0H,05H,036BH,057H ;965-XX,207-YY,1116-XX,294-YY
|
||
.WORD 1073-XX,244-YY,1118-XX,448-YY
|
||
.WORD 0
|
||
|
||
CKOFF .LONG 0,[-4,0],[8,0],0,[0,11],[-4,8],[8,8],[0,-5],[-4,-6],[8,-6]
|
||
CKOFF2 .LONG 0,[-8,0],[16,0],0,[0,22],[-8,16],[16,16],[0,-10],[-8,-12],[16,-12]
|
||
;
|
||
; 1
|
||
; 8 5
|
||
;7 4
|
||
; 9 6
|
||
; 2
|
||
;
|
||
|
||
VELX_LIST:
|
||
.LONG 0,0,0,0,HNORMVEL,HSLOVEL,HSLOVEL,-HNORMVEL,-HSLOVEL
|
||
.LONG -HSLOVEL
|
||
VELY_LIST:
|
||
.LONG 0,-VNORMVEL,VNORMVEL,0,0,-VSLOVEL,VSLOVEL,0
|
||
.LONG -VSLOVEL,VSLOVEL
|
||
VELX_LIST2:
|
||
.LONG 0,0,0,0,HNORMVEL2,HSLOVEL2,HSLOVEL2,-HNORMVEL2,-HSLOVEL2
|
||
.LONG -HSLOVEL2
|
||
VELY_LIST2:
|
||
.LONG 0,-VNORMVEL2,VNORMVEL2,0,0,-VSLOVEL2,VSLOVEL2,0
|
||
.LONG -VSLOVEL2,VSLOVEL2
|
||
VELX_LIST3:
|
||
.LONG 0,0,0,0,HNORMVEL3,HSLOVEL3,HSLOVEL3,-HNORMVEL3,-HSLOVEL3
|
||
.LONG -HSLOVEL3
|
||
VELY_LIST3:
|
||
.LONG 0,-VNORMVEL3,VNORMVEL3,0,0,-VSLOVEL3,VSLOVEL3,0
|
||
.LONG -VSLOVEL3,VSLOVEL3
|
||
;
|
||
STUFF_VEL:
|
||
MOVE *A13(TCH_WALL),A0
|
||
JRZ SVX
|
||
CLR A1
|
||
CLR A0
|
||
JRUC SV2
|
||
SVX
|
||
MOVE *A13(SHOECNT),A0
|
||
JRZ SV
|
||
DEC A0
|
||
MOVE A0,*A13(SHOECNT)
|
||
MOVE A0,A2
|
||
ANDI 03FFH,A0
|
||
JRNZ SVNO
|
||
;SHOES DONE!
|
||
MOVE A0,*A13(SHOECNT)
|
||
SVNO
|
||
BTST 15,A2
|
||
JRZ VBOOT
|
||
;TENNIS SHOE SPEED
|
||
MOVI VELX_LIST3,A2
|
||
ADD A6,A2
|
||
MOVE *A2,A0,L
|
||
|
||
MOVI VELY_LIST3,A2
|
||
ADD A6,A2
|
||
MOVE *A2,A1,L
|
||
JRUC SV2
|
||
|
||
VBOOT MOVI VELX_LIST2,A2
|
||
ADD A6,A2
|
||
MOVE *A2,A0,L
|
||
|
||
MOVI VELY_LIST2,A2
|
||
ADD A6,A2
|
||
MOVE *A2,A1,L
|
||
JRUC SV2
|
||
|
||
SV MOVI VELX_LIST,A2
|
||
ADD A6,A2
|
||
MOVE *A2,A0,L
|
||
|
||
MOVI VELY_LIST,A2
|
||
ADD A6,A2
|
||
MOVE *A2,A1,L
|
||
|
||
SV2 MOVE A1,*A8(OYVEL),L
|
||
MOVE A0,*A8(OXVEL),L
|
||
|
||
; NOW ADD SAME VALUES INTO TORSO RECORD
|
||
MOVE *A13(TSO_PTR),A3,L
|
||
MOVE A1,*A3(OYVEL),L
|
||
MOVE A0,*A3(OXVEL),L
|
||
RETS
|
||
|
||
;
|
||
; INITIALIZE PLAYER OBJECT
|
||
; GET OBJECT INFO AND DO INSERT INTO OBJECT LIST
|
||
;
|
||
STRT_PLYR_LEGS:
|
||
;CHECK TO SEE IF THIS IS PLAYER 1 OR 2
|
||
CALLR GETP
|
||
MOVI 158,A3
|
||
MOVI DMAWNZ,A4
|
||
CLR A6
|
||
CLR A7
|
||
CALLA BEGINOBJ2
|
||
RETS
|
||
STRT_PLYR_TORSO:
|
||
;CHECK TO SEE IF THIS IS PLAYER 1 OR 2
|
||
CALLR GETP
|
||
MOVI 159,A3 ;HIGHER THAN LEGS
|
||
MOVI DMAWNZ+M_NOCOLL,A4 ;NO COLLISIONS WITH CHEST!
|
||
CLR A6
|
||
CLR A7
|
||
CALLA BEGINOBJ2
|
||
RETS
|
||
GETP
|
||
;START CORRECT IMAGE/ STUFF PROPER ID
|
||
MOVE *A13(PNUM),A2
|
||
CMPI 1,A2
|
||
JREQ PYX
|
||
|
||
MMTM SP,A0,A1
|
||
MOVK 32,A9
|
||
MOVI MEP2,A8
|
||
CREATE 0,ME1
|
||
MMFM SP,A0,A1
|
||
|
||
MOVI BLACK,A2 ;TURN ON PLAYER 2 (BLACK)
|
||
MOVI CLSPLYR|TYPPLYR|SUBPL_2,A5
|
||
SETPXY2
|
||
MOVE @WORLDTLX,A0,L
|
||
MOVE @RUNIN,A1
|
||
JRZ FB0
|
||
;FROM SIDE
|
||
SUBI 080000H,A0
|
||
MOVE @WORLDTLY,A1,L
|
||
ADDI [130,0],A1
|
||
RETS
|
||
FB0
|
||
MOVE @WORLDTLY,A3,L
|
||
CMPI [127EH,0],A3
|
||
JRNZ FB01
|
||
;PLACE NEAR P2 PARACHUTE
|
||
ADDI 010B0000H,A0
|
||
MOVE @WORLDTLY,A1,L
|
||
ADDI 05B0000H,A1
|
||
RETS
|
||
FB01 ADDI 0C80000H,A0
|
||
MOVE @WORLDTLY,A1,L
|
||
ADDI 0FF0000H,A1
|
||
RETS
|
||
PYX
|
||
MMTM SP,A0,A1
|
||
CLR A9
|
||
MOVI MEP1,A8
|
||
CREATE 0,ME1
|
||
MMFM SP,A0,A1
|
||
|
||
MOVI P1WG6T1,A2
|
||
MOVI CLSPLYR|TYPPLYR|SUBPL_1,A5
|
||
SETPXY1
|
||
MOVE @WORLDTLX,A0,L
|
||
MOVE @RUNIN,A1
|
||
JRZ FB1
|
||
;FROM SIDE
|
||
SUBI 080000H,A0
|
||
MOVE @WORLDTLY,A1,L
|
||
ADDI [115,0],A1
|
||
RETS
|
||
FB1 MOVE @WORLDTLY,A3,L
|
||
CMPI [127EH,0],A3
|
||
JRNZ FB11
|
||
;PLACE NEAR P1 PARACHUTE
|
||
ADDI 0730000H,A0
|
||
MOVE @WORLDTLY,A1,L
|
||
ADDI 07F0000H,A1
|
||
RETS
|
||
FB11 ADDI 0B30000H,A0
|
||
MOVE @WORLDTLY,A1,L
|
||
ADDI 0FF0000H,A1
|
||
RETS
|
||
ME1
|
||
;A9=PLYR # 1 OR 2
|
||
SLEEP 5
|
||
MOVI PLYROBJS,A0,L
|
||
ADD A9,A0
|
||
MOVE *A0,A10,L
|
||
MOVE A8,A2
|
||
MOVI 359,A3 ;HIGHER THAN LEGS
|
||
MOVI DMAWNZ+M_NOCOLL,A4 ;NO COLLISIONS WITH CHEST!
|
||
MOVI CLSDEAD,A5
|
||
CLR A6
|
||
CLR A7
|
||
CALLA BEGINOBJ2
|
||
MOVI 013H,A9
|
||
CREATE 0,MANY
|
||
MOVI 8*60,A11
|
||
METOP
|
||
MOVE A8,A0
|
||
MOVE A10,A8 ;*A13(LEG_PTR),A8,L
|
||
CALLA GETANIXY
|
||
ADDI 00D0000H,A2 ;Y
|
||
ADDI 0E0000H,A3 ;X
|
||
MOVE *A0(OFLAGS),A4,W
|
||
CALLA GANISAG
|
||
MOVE A0,A8
|
||
SLEEP 1
|
||
DSJ A11,METOP
|
||
MOVE A8,A0
|
||
CALLA DELOBJ
|
||
DIE
|
||
MANY
|
||
SLEEP 12
|
||
MOVE A8,A0
|
||
CALLA OBJON
|
||
SLEEP 12
|
||
MOVE A8,A0
|
||
CALLA OBJOFF
|
||
DSJ A9,MANY
|
||
DIE
|
||
|
||
DIE_CODE
|
||
;FROM TORSO CODE
|
||
; PUSH A1
|
||
; CREATE 0,CHEER
|
||
; PULL A1
|
||
MOVE *A13(LEG_PTR),A2,L ;GET LEG INFO
|
||
;STOP PLAYER FROM FLOATING
|
||
CLR A0
|
||
MOVE A0,*A2(OXVEL),L
|
||
MOVE A0,*A2(OYVEL),L
|
||
MOVE A0,*A8(OXVEL),L
|
||
MOVE A0,*A8(OYVEL),L
|
||
|
||
ANDI 0FFFFH,A1
|
||
CMPI CLSENMY|TYPLAYR|SUBFLM,A1
|
||
JREQ DIEFIRE2
|
||
CMPI CLSENMY|TYPLAYR,A1
|
||
JREQ DIEFIRE
|
||
CMPI CLSNEUT|TYPMINE,A1
|
||
JREQ DIECHU
|
||
CMPI CLSENMY|TYPT72|SUBTK,A1
|
||
JREQ DIECHU2
|
||
CMPI CLSENMY|TYPT72,A1
|
||
JREQ DIECHU2
|
||
CMPI 0,A1 ;SHOCK OIDS HERE
|
||
JRNZ SPDTH
|
||
;SHOCK HERE
|
||
SLEEP 01
|
||
MOVI SHKSND,A0
|
||
CALLA ONESND
|
||
MOVK 1,A1
|
||
MOVI TSHK,A9
|
||
JSRP FRANIM
|
||
SLEEP 1
|
||
JRUC ALLDIE
|
||
DIEFIRE2
|
||
;IF FLAMING SPIN DEATH, FALL IN HERE
|
||
MOVI UGH,A0 ;FLAME PLAYER SCREAM
|
||
CALLA ONESND
|
||
MOVI FIRELST2,A9
|
||
JRUC DFZ
|
||
DIEFIRE
|
||
;IF FLAMING SPIN DEATH, FALL IN HERE
|
||
SLEEP 05
|
||
MOVI UGH,A0
|
||
CALLA ONESND
|
||
MOVI FIRELST,A9
|
||
DFZ MOVI 159,A0
|
||
MOVE A0,*A8(OZPOS)
|
||
MOVK 1,A1
|
||
JSRP FRANIM
|
||
SLEEP 1
|
||
JRUC ALLDIE
|
||
SPDTH
|
||
;IF SPIN DEATH, FALL IN HERE
|
||
SLEEP 05
|
||
;BLOOD CHUNKS
|
||
MOVI 159,A0 ;157
|
||
MOVE A0,*A8(OZPOS)
|
||
MOVI 1,A9
|
||
CREATE 0,TWOCHNKS
|
||
MOVI 30,A9
|
||
CREATE 0,TWOCHNKS
|
||
MOVI UGH,A0
|
||
CALLA ONESND
|
||
MOVK 1,A1
|
||
MOVI TSPN,A9
|
||
JSRP FRANIM
|
||
MOVE *A13(PNUM),A9
|
||
CREATE 0,DTB
|
||
MOVK 1,A1
|
||
MOVI DIELST,A9
|
||
JSRP FRANIM
|
||
SLEEP 1
|
||
JRUC ALLDIE
|
||
|
||
DTB SLEEP 01CH
|
||
;A9=1/2 FOR PLAYER #
|
||
CREATE BMBPID,TBOMBD
|
||
DIE
|
||
|
||
CHNKS
|
||
;IF NO BOG, BLLED FROM CHEST HOLE!
|
||
MOVE @HULK_CNT,A0
|
||
CMPI 20,A0
|
||
JRHI CDI
|
||
MOVB @PCTOT,A2
|
||
CMPI 010H,A2 ;19
|
||
JRLO ADDPCS
|
||
CDI DIE
|
||
ADDPCS MOVK 15,A10
|
||
SLEEP 10
|
||
CH1 CREATE 0,CHESTBLD
|
||
SLEEP 1
|
||
DSJS A10,CH1
|
||
SLEEP 3FH
|
||
MOVK 4,A10
|
||
CH2 CREATE 0,CHESTBLD2
|
||
SLEEP 2
|
||
DSJS A10,CH2
|
||
DIE
|
||
|
||
CHESTBLD2
|
||
;FLOW BLOOD OUT OF CHEST HOLE
|
||
MOVI -03000H,B0
|
||
MOVI 03000H,B1
|
||
CALLA RANGRAND
|
||
MOVE A0,A6
|
||
MOVI -03000H,B0
|
||
MOVI 03000H,B1
|
||
CALLA RANGRAND
|
||
MOVE A0,A7
|
||
CALLA GETANIXY
|
||
MOVE A2,A1
|
||
|
||
SUBI 020000H,A3
|
||
MOVE *A8(OFLAGS),A0
|
||
BTST B_FLIPH,A0
|
||
JRZ NOHX
|
||
ADDI 040000H,A3
|
||
NOHX
|
||
SUBI 01C0000H,A1 ;1A
|
||
;A0=PROPER X,A1=Y
|
||
MOVI BLDB,A9
|
||
JRUC CHB
|
||
CHESTBLD
|
||
;FLOW BLOOD OUT OF CHEST HOLE
|
||
MOVI -0A000H,B0
|
||
MOVI 0A000H,B1
|
||
CALLA RANGRAND
|
||
MOVE A0,A6
|
||
MOVI -0A000H,B0
|
||
MOVI 0A000H,B1
|
||
CALLA RANGRAND
|
||
MOVE A0,A7
|
||
CALLA GETANIXY
|
||
MOVE A2,A1
|
||
SUBI 0B0000H,A3
|
||
|
||
MOVE *A8(OFLAGS),A0
|
||
BTST B_FLIPH,A0
|
||
JRZ NOHXX
|
||
ADDI 0110000H,A3
|
||
NOHXX
|
||
SUBI 01D0000H,A1
|
||
MOVI BLDBB,A9
|
||
CHB
|
||
MOVE A3,A0
|
||
;A0=PROPER X,A1=Y
|
||
MOVI BBS1,A2 ;(OIMG)
|
||
MOVI 343,A3 ;(OZPOS)
|
||
MOVI DMAWNZ+M_NOCOLL,A4 ;(OFLAGS) NON-ZERO VALUE
|
||
MOVI CLSDEAD,A5 ;(OID)
|
||
CALLA BEGIN_CHNK
|
||
JAUC FRANIM_DIE
|
||
|
||
BLDBB:
|
||
.LONG bldclt4
|
||
.WORD 6
|
||
.LONG bldclt5
|
||
.WORD 6
|
||
.LONG bldclt6
|
||
.WORD 6
|
||
.LONG bldclt7
|
||
.WORD 6
|
||
.LONG bldclt8
|
||
.WORD 6
|
||
.LONG 0
|
||
BLDB .LONG rblot1
|
||
.WORD 4
|
||
.LONG rblot2
|
||
.WORD 4
|
||
.LONG rblot3
|
||
.WORD 4
|
||
.LONG rblot4
|
||
.WORD 4
|
||
.LONG rblot5
|
||
.WORD 4
|
||
.LONG rblot6
|
||
.WORD 4
|
||
.LONG rblot7
|
||
.WORD 4
|
||
.LONG rblot8
|
||
.WORD 4
|
||
.LONG 0
|
||
|
||
TWOCHNKS
|
||
MOVE A9,A0
|
||
CALLA PRCSLP
|
||
;USED FOR PLAYER SPIN DEATH!
|
||
;A8=PLAYER PNTR
|
||
MOVI -02000H,B0
|
||
MOVI 02000H,B1
|
||
CALLA RANGRAND
|
||
MOVE A0,A6
|
||
MOVI -02000H,B0
|
||
MOVI 02000H,B1
|
||
CALLA RANGRAND
|
||
MOVE A0,A7
|
||
CALLA GETANIXY
|
||
MOVE A2,A1
|
||
ADDI 0180000H,A1 ;2A
|
||
SUBI 040000H,A3
|
||
MOVE A3,A0
|
||
;A0=PROPER X,A1=Y
|
||
MOVI BLDOTS,A9
|
||
MOVI BBS1,A2 ;(OIMG)
|
||
MOVI 161,A3 ;(OZPOS);150
|
||
MOVI DMAWNZ+M_NOCOLL,A4 ;(OFLAGS) NON-ZERO VALUE
|
||
MOVI CLSNEUT|TYPNEUT,A5 ;(OID)
|
||
CALLA BEGIN_CHNK
|
||
JAUC FRANIM_DIE
|
||
|
||
UNDERME
|
||
;A8=PLAYER PNTR
|
||
MOVI -04000H,B0
|
||
MOVI 04000H,B1
|
||
CALLA RANGRAND
|
||
MOVE A0,A6
|
||
MOVI -04000H,B0
|
||
MOVI 04000H,B1
|
||
CALLA RANGRAND
|
||
MOVE A0,A7
|
||
CALLA GETANIXY
|
||
MOVE A2,A1
|
||
MOVE A3,A0
|
||
;A0=PROPER X,A1=Y
|
||
MOVI T72BLAST1,A2
|
||
MOVI TBLST,A9 ;(OIMG)
|
||
MOVI 155,A3 ;(OZPOS)
|
||
MOVI DMAWNZ+M_NOCOLL,A4 ;(OFLAGS) NON-ZERO VALUE
|
||
MOVI CLSNEUT|TYPNEUT,A5 ;(OID)
|
||
CALLA BEGIN_CHNK
|
||
JAUC FRANIM_DIE
|
||
DIECHU2:
|
||
;BLOOD CHUNKS
|
||
CREATE 0,UNDERME
|
||
CREATE 0,UNDERME
|
||
CREATE 0,UNDERME
|
||
CREATE 0,UNDERME
|
||
CREATE 0,UNDERME
|
||
PUSH A8
|
||
MOVE *A13(KILLERO),A8,L ;MOVE @MUTPTR,A8,L
|
||
; MOVE *A8(PDATA),A8,L
|
||
CALLA GETCPNT
|
||
;A1=Y/X CENTER POS
|
||
PULL A8
|
||
CLR A2
|
||
MOVX A1,A2
|
||
SRL 16,A1
|
||
MOVE A1,A3
|
||
MOVE *A8(OXPOS),A4
|
||
MOVI 9000H,A0
|
||
CMP A4,A2
|
||
JRLT GOGOX
|
||
;ADD TO PLYR X
|
||
MOVI -9000H,A0
|
||
GOGOX MOVE A0,*A8(OXVEL),L
|
||
MOVE *A8(OYPOS),A4
|
||
MOVI -7000H,A0
|
||
CMP A4,A3
|
||
JRGT GONEGD
|
||
;ADD TO PLYR Y
|
||
MOVI 07000H,A0
|
||
GONEGD MOVE A0,*A8(OYVEL),L
|
||
|
||
DIECHU:
|
||
MOVI UGH,A0 ;SCREAM
|
||
CALLA ONESND
|
||
;IF CHUNK DEATH, FALL IN HERE
|
||
; MOVI 900,A0 ;700
|
||
; CALLA RANDPER
|
||
; JRNC CKS
|
||
|
||
;BIG IMAGE INTO AIR
|
||
MOVE *A8(OFLAGS),A0
|
||
BTST B_FLIPH,A0
|
||
JRZ NOH
|
||
ANDI 0FFEFH,A0
|
||
JRUC NOH1
|
||
NOH ORI M_FLIPH,A0
|
||
NOH1 MOVE A0,*A8(OFLAGS)
|
||
MOVE *A8(OYPOS),A0
|
||
ADDI 21H,A0
|
||
MOVE A0,*A8(OYPOS)
|
||
MOVI 342,A0 ;132
|
||
MOVE A0,*A8(OZPOS)
|
||
CREATE 0,CHNKS
|
||
MOVK 1,A1
|
||
MOVI FLYUP,A9
|
||
JSRP FRANIM
|
||
CLR A0
|
||
MOVE A0,*A8(OXVEL),L
|
||
MOVE A0,*A8(OYVEL),L
|
||
MOVI 129,A0 ;142
|
||
MOVE A0,*A8(OZPOS)
|
||
MOVI 9H,A10
|
||
CALLA SHAKER
|
||
SLEEP 23
|
||
MOVK 4,A10
|
||
;ABOUT 1 SECOND OF BLINK
|
||
BK
|
||
MOVE A8,A0
|
||
CALLA OBJOFF
|
||
SLEEP 4
|
||
MOVE A8,A0
|
||
CALLA OBJON
|
||
SLEEP 4
|
||
DSJS A10,BK
|
||
SLEEP 18
|
||
JRUC ALLDIE
|
||
CKS
|
||
CREATE 0,CHUNK_PLYR
|
||
;CHANGE PRIORITY
|
||
MOVE *A8(OYPOS),A0
|
||
ADDK 12,A0
|
||
MOVE A0,*A8(OYPOS)
|
||
MOVK 1,A1
|
||
MOVI BLOOD_LST2,A9
|
||
JSRP FRANIM
|
||
MOVE A8,A0
|
||
CALLA OBJOFF
|
||
SLEEP 60*2
|
||
|
||
ALLDIE
|
||
MOVE *A13(PNUM),A0
|
||
SLL 5,A0
|
||
ADDI TBLP,A0
|
||
MOVE *A0,A11,L
|
||
SLP SLEEP 1
|
||
MOVE @HALT,A0
|
||
JRNZ SLP
|
||
MOVB *A11(CNTD),A0
|
||
JRZ DOV
|
||
|
||
CLR A1
|
||
MOVE A1,*A8(OYPOS)
|
||
MOVE A1,*A8(OXPOS)
|
||
|
||
; MOVB *A13(PNUM),A10 ;1 OR 2
|
||
; DEC A10
|
||
; MMTM SP,A8,A9,A10,A11
|
||
; CALLA SWAPSK ;TELL HULKS TO SEEK ANOTHER PLAYER
|
||
; MMFM SP,A8,A9,A10,A11
|
||
|
||
SLPZ
|
||
SLEEP 1
|
||
MOVE @HALT,A0
|
||
JRNZ SLPZ
|
||
MOVB *A11(CNTD),A0
|
||
JRZ DOV
|
||
CMPI 1,A0
|
||
JRZ SLPZ
|
||
;PLAYERS TIME HAS EXPIRED.
|
||
;KILL PROC,OBJS,START MESSAGES!
|
||
CLR A0
|
||
MOVB A0,*A11(CNTD)
|
||
CMPI P1DATA,A11
|
||
JRNE KL2
|
||
;KILL PLYR1
|
||
CALLA KILLP1
|
||
;IS OTHER GUY STILL AROUND?
|
||
MOVI PLY2PID,A0
|
||
DYE0 CLR A1
|
||
NOT A1
|
||
CALLA EXISTP
|
||
JRNZ DYE
|
||
CREATE 0,GOGUYS ;PRINTS GAME OVER MESSAGE!
|
||
DYE DIE
|
||
;KILL PLYR2
|
||
KL2 CALLA KILLP2
|
||
;IS OTHER GUY STILL AROUND?
|
||
MOVI PLY1PID,A0
|
||
JRUC DYE0
|
||
GOGUYS
|
||
MOVI INGAMEOV,A0
|
||
MOVE A0,@GAMSTATE,W
|
||
SOUND1 MUSICOFF ;MUSIC HARD OFF
|
||
CLR A0
|
||
CLR A1
|
||
NOT A1
|
||
CALLA KILALL ;KILL ALL GAME PROCESSES
|
||
CREATE GMEOVPID,GAMEOVER ;GAME IS NOW OFFICIALLY OVER
|
||
DIE
|
||
|
||
TBLP .LONG 0,P1DATA,P2DATA
|
||
;
|
||
DOV
|
||
;
|
||
;DEAD OVER
|
||
;
|
||
MOVI P1DATA,A1
|
||
MOVE *A13(PNUM),A0
|
||
CMPI 1,A0
|
||
JREQ ET1
|
||
MOVI P2DATA,A1
|
||
ET1
|
||
MOVE *A1(PLIVES),A2
|
||
DEC A2
|
||
MOVE A2,*A1(PLIVES),W
|
||
MOVE A1,A11
|
||
CALLA STUFF_LVADDR
|
||
|
||
MOVI 159,A0 ;TORSO REGULAR Z
|
||
MOVE A0,*A8(OZPOS)
|
||
|
||
MMTM SP,A8,A9
|
||
MOVE *A13(PNUM),A8 ;FOR SCRIPTPLAY
|
||
MOVE @RUNIN,A10,W ;INDICATES FROM BOTTOM OR LEFT
|
||
CREATE SCRPID,SCRIPTPLAY
|
||
|
||
MOVE *A13(LEG_PRC),A1,L
|
||
CLR A0
|
||
MOVE A0,*A1(SHOECNT) ;CLEAR FAST SHOE CNT
|
||
MOVK 6,A0 ;START HIM OUT STRONG
|
||
MOVE A0,*A13(WPN_TYP),W ;AFTER A DEATH
|
||
MOVI 80,A0
|
||
MOVE A0,*A13(SHOTCNT)
|
||
|
||
CMPI 1,A10
|
||
JRNZ FB
|
||
;RUNIN FROM SIDE
|
||
MOVE @WORLDTLX,A3,L ;Y LINE TO REAPPEAR AT
|
||
SUBI [08H,0],A3
|
||
CMPI 1,A8
|
||
JRNE VX1R
|
||
;THIS IS FOR BRINGING THE PLAYER ON FROM OFF LEFT OF SCREEN
|
||
MOVE @WORLDTLY,A2,L
|
||
ADDI [0115,0],A2
|
||
MOVE @PLYRPRCS,A0,L
|
||
JRUC AXZ
|
||
VX1R
|
||
MOVE @WORLDTLY,A2,L
|
||
ADDI [0130,0],A2
|
||
MOVE @PLYRPRCS+32,A0,L
|
||
JRUC AXZ
|
||
|
||
FB MOVE @WORLDTLY,A2,L ;Y LINE TO REAPPEAR AT
|
||
ADDI [0FFH,0],A2
|
||
CMPI 1,A8
|
||
JRNE VX1
|
||
;THIS IS FOR BRINGING THE PLAYER ON FROM OFF BOTTOM OF SCREEN
|
||
MOVE @WORLDTLX,A3,L
|
||
ADDI [0B3H,0],A3
|
||
MOVE @PLYRPRCS,A0,L
|
||
JRUC AXZ
|
||
VX1
|
||
MOVE @WORLDTLX,A3,L
|
||
ADDI [0C8H,0],A3
|
||
MOVE @PLYRPRCS+32,A0,L
|
||
AXZ
|
||
MOVE *A0(LEG_PTR),A0,L
|
||
MOVE A3,*A0(OXVAL),L
|
||
MOVE A2,*A0(OYVAL),L
|
||
|
||
MMFM SP,A8,A9
|
||
;REALIGN PLAYER HALVES WHEN WE RESET
|
||
MOVE A8,A0
|
||
MOVE *A13(LEG_PTR),A8,L ;GET LEG PTR OUT OF TORSO STRUCT
|
||
CALLA GETANIXY
|
||
MOVE *A8(OFLAGS),A4,W
|
||
ORI M_NOCOLL,A4
|
||
CALLA GANISAG
|
||
MOVE A0,A8
|
||
;TURN BACK ON TORSO OBJECT
|
||
CALLA OBJON
|
||
|
||
;GIVE TORSO BACK HIS CORRECT PAL
|
||
MOVI nup1,A0
|
||
MOVE *A8(OPLINK),A1,L
|
||
MOVE *A1(PNUM),A1
|
||
CMPI 1,A1
|
||
JREQ OKP
|
||
;CHANGE TO PLAYER 2 PAL IF NEEDED!
|
||
MOVI nup2,A0
|
||
OKP
|
||
CALLA GETFPAL ;GET A COLOR MAP ASSIGNMENT
|
||
MOVE A0,*A8(OPAL),W ;STORE THE NEW PALETTE
|
||
|
||
;SAFE FOR AWHILE
|
||
MOVI 80,A0 ;140
|
||
MOVE A0,*A13(DELYDET),W
|
||
CLR A0
|
||
MOVE A0,*A13(DEAD),W
|
||
JRUC NDD ;MAINLINE CODE REENTRY
|
||
|
||
KILLP1
|
||
;KILL OFF PLAYER 1 STUFF
|
||
CLR A1
|
||
NOT A1
|
||
MOVI PLY1PID,A0
|
||
CALLA KILALL
|
||
MOVI CLSPLYR|TYPPLYR|SUBPL_1,A0
|
||
CALLA KILOBJ ;KILL PLAYER 1 IMAGES
|
||
CLR A0
|
||
MOVE A0,@PLYROBJS,L
|
||
MOVE A0,@PLYRPRCS,L
|
||
RETS
|
||
KILLP2
|
||
;KILL OFF PLAYER 2 STUFF
|
||
CLR A1
|
||
NOT A1
|
||
MOVI PLY2PID,A0
|
||
CALLA KILALL
|
||
MOVI CLSPLYR|TYPPLYR|SUBPL_2,A0
|
||
CALLA KILOBJ
|
||
CLR A0
|
||
MOVE A0,@PLYROBJS+32,L
|
||
MOVE A0,@PLYRPRCS+32,L
|
||
RETS
|
||
|
||
;CHEER SLEEP 25
|
||
; MOVI CROWD2,A0
|
||
; CALLA ONESND
|
||
; DIE
|
||
|
||
BLDOTS .LONG BBS1
|
||
.WORD NEWPALET|20
|
||
.LONG ONUP1
|
||
.LONG BBS2
|
||
.WORD 5
|
||
.LONG BBS3
|
||
.WORD 5
|
||
.LONG BBS4
|
||
.WORD 5
|
||
.LONG BBS5
|
||
.WORD 5
|
||
.LONG 0
|
||
|
||
TSPN:
|
||
.LONG P1WG8T1
|
||
.WORD FLIPBITS|3,0
|
||
.LONG P1WG9T1
|
||
.WORD 3
|
||
.LONG P1WG10T1
|
||
.WORD 3
|
||
.LONG P1WG12T1
|
||
.WORD 3
|
||
.LONG P1WG10T1
|
||
.WORD FLIPBITS|3,(M_FLIPH)
|
||
.LONG P1WG9T1
|
||
.WORD 3
|
||
.LONG P1WG8T1
|
||
.WORD 3
|
||
.LONG P1WG6T1
|
||
.WORD FLIPBITS|3,0
|
||
.LONG 0
|
||
FLYUP:
|
||
.LONG FLY1
|
||
.WORD 4 ;3
|
||
.LONG FLY2
|
||
.WORD 4 ;3
|
||
.LONG FLY3
|
||
.WORD 4 ;3
|
||
.LONG FLY4
|
||
.WORD 4 ;3
|
||
.LONG FLY5
|
||
.WORD 6 ;5
|
||
.LONG FLY6
|
||
.WORD 8 ;7
|
||
.LONG FLY7
|
||
.WORD 8 ;7
|
||
.LONG FLY8
|
||
.WORD 12 ;10
|
||
.LONG FLY7
|
||
.WORD 8 ;7
|
||
.LONG FLY6
|
||
.WORD 8 ;7
|
||
.LONG FLY5
|
||
.WORD 6 ;5
|
||
.LONG FLY4
|
||
.WORD 4 ;3
|
||
.LONG FLY3
|
||
.WORD 4 ;3
|
||
.LONG FLY2
|
||
.WORD 4 ;3
|
||
.LONG FLY1
|
||
.WORD 4; 3
|
||
.LONG LAND
|
||
.WORD 1
|
||
.LONG 0
|
||
FIRELST:
|
||
.LONG PLYD1
|
||
.WORD FLIPBITS|4,0
|
||
.LONG PLYD2
|
||
.WORD 4
|
||
.LONG PLYD3
|
||
.WORD 4
|
||
.LONG PLYD4
|
||
.WORD 4
|
||
.LONG PLYD5
|
||
.WORD 4
|
||
.LONG PLYD6
|
||
.WORD 4
|
||
.LONG PLYD7
|
||
.WORD 4
|
||
.LONG PLYD8
|
||
.WORD 4 ;9
|
||
.LONG PFLM1
|
||
.WORD 4
|
||
.LONG PFLM2
|
||
.WORD 4
|
||
.LONG PFLM3
|
||
.WORD 4
|
||
.LONG PFLM4
|
||
.WORD 4
|
||
FIRELST2:
|
||
;SWITCH TO XPLOSION PAL (RDBOOM)
|
||
.LONG PLFR1
|
||
.WORD NEWPALET|6
|
||
.LONG RDBOOM
|
||
.LONG PLFR2
|
||
.WORD 6
|
||
.LONG PLFR3
|
||
.WORD 6
|
||
.LONG PLFR4
|
||
.WORD 6
|
||
.LONG PLFR5
|
||
.WORD 6
|
||
.LONG PLFR6
|
||
.WORD 6
|
||
.LONG PLFR7
|
||
.WORD 6
|
||
.LONG PLFR8
|
||
.WORD 6
|
||
.LONG PLFR9
|
||
.WORD 6
|
||
.LONG PLFR10
|
||
.WORD 6
|
||
.LONG PLFR11
|
||
.WORD 6
|
||
.LONG PLFR12
|
||
.WORD 6
|
||
.LONG PLFR13
|
||
.WORD 6
|
||
.LONG PLFR14
|
||
.WORD 6
|
||
.LONG PLFR15
|
||
.WORD 6
|
||
.LONG PLFR16
|
||
.WORD 6
|
||
.LONG PLFR17
|
||
.WORD 6
|
||
.LONG PLFR18
|
||
.WORD 6
|
||
.LONG PLFR19
|
||
.WORD 6
|
||
.LONG PLFR20
|
||
.WORD 6
|
||
.LONG PLFR21
|
||
.WORD 6
|
||
.LONG PLFR22
|
||
.WORD 6
|
||
.LONG PLFR23
|
||
.WORD 6
|
||
.LONG PLFR24
|
||
.WORD 6
|
||
.LONG PLFR25
|
||
.WORD 6
|
||
.LONG 0
|
||
|
||
DIELST:
|
||
.LONG PLYD1
|
||
.WORD FLIPBITS|4,0
|
||
.LONG PLYD2
|
||
.WORD 4
|
||
.LONG PLYD3
|
||
.WORD 4
|
||
.LONG PLYD4
|
||
.WORD 4
|
||
.LONG PLYD5
|
||
.WORD 4
|
||
.LONG PLYD6
|
||
.WORD 4
|
||
.LONG PLYD7
|
||
.WORD 4
|
||
.LONG PLYD8
|
||
.WORD 9
|
||
.LONG STRIKE1
|
||
.WORD 3
|
||
.LONG STRIKE2
|
||
.WORD 3
|
||
.LONG STRIKE3
|
||
.WORD 3
|
||
.LONG STRIKE17
|
||
.WORD 3
|
||
.LONG STRIKE4
|
||
.WORD 3
|
||
.LONG STRIKE17
|
||
.WORD 3
|
||
.LONG STRIKE5
|
||
.WORD 3
|
||
.LONG STRIKE17
|
||
.WORD 3
|
||
.LONG STRIKE6
|
||
.WORD 3
|
||
.LONG STRIKE17
|
||
.WORD 3
|
||
.LONG STRIKE9
|
||
.WORD 3
|
||
.LONG STRIKE17
|
||
.WORD 3
|
||
.LONG STRIKE10
|
||
.WORD 3
|
||
.LONG STRIKE17
|
||
.WORD 3
|
||
.LONG STRIKE11
|
||
.WORD 3
|
||
.LONG STRIKE17
|
||
.WORD 3
|
||
.LONG STRIKE12
|
||
.WORD 3
|
||
.LONG STRIKE17
|
||
.WORD 3
|
||
.LONG STRIKE13
|
||
.WORD 3
|
||
.LONG STRIKE17
|
||
.WORD 3
|
||
.LONG STRIKE14
|
||
.WORD 3
|
||
.LONG STRIKE17
|
||
.WORD 3
|
||
.LONG STRIKE15
|
||
.WORD 3
|
||
.LONG STRIKE17
|
||
.WORD 3
|
||
.LONG STRIKE16
|
||
.WORD 3
|
||
.LONG 0
|
||
LSPN:
|
||
.LONG P1SH8L1
|
||
.WORD FLIPBITS|3,0
|
||
.LONG P1SH9L1
|
||
.WORD 3
|
||
.LONG P1S10L1
|
||
.WORD 3
|
||
.LONG P1S12L1
|
||
.WORD 3
|
||
.LONG P1S10L1
|
||
.WORD FLIPBITS|3,(M_FLIPH)
|
||
.LONG P1SH9L1
|
||
.WORD 3
|
||
.LONG P1SH8L1
|
||
.WORD 3
|
||
.LONG P1SH6L1
|
||
.WORD FLIPBITS|3,0
|
||
.LONG 0
|
||
;
|
||
WALK_LIST:
|
||
.LONG PWK_UP,PWK_UP,PWK_DN,PWK_UP,PWK_RGT,PWK_UPRGT,PWK_DNRGT,PWK_LFT
|
||
.LONG PWK_UPLFT,PWK_DNLFT
|
||
WALK_LIST3:
|
||
.LONG FPWK_UP,FPWK_UP,FPWK_DN,FPWK_UP,FPWK_RGT,FPWK_UPRGT,FPWK_DNRGT,FPWK_LFT
|
||
.LONG FPWK_UPLFT,FPWK_DNLFT
|
||
REV_WALK_LIST:
|
||
.LONG PWK_UP,PWK_DN,PWK_UP,PWK_UP,PWK_LFT,PWK_DNLFT,PWK_UPLFT,PWK_RGT
|
||
.LONG PWK_DNRGT,PWK_UPRGT
|
||
REV_WALK_LIST3:
|
||
.LONG FPWK_UP,FPWK_DN,FPWK_UP,FPWK_UP,FPWK_LFT,FPWK_DNLFT,FPWK_UPLFT,FPWK_RGT
|
||
.LONG FPWK_DNRGT,FPWK_UPRGT
|
||
WALK_LIST2:
|
||
.LONG TWK_UP,TWK_UP,TWK_DN,TWK_UP,TWK_RGT,TWK_UPRGT,TWK_DNRGT,TWK_LFT
|
||
.LONG TWK_UPLFT,TWK_DNLFT
|
||
REV_WALK_LIST2:
|
||
.LONG TWK_UP,TWK_DN,TWK_UP,TWK_UP,TWK_LFT,TWK_DNLFT,TWK_UPLFT,TWK_RGT
|
||
.LONG TWK_DNRGT,TWK_UPRGT
|
||
; 1
|
||
; 8 5
|
||
;7 4
|
||
; 9 6
|
||
; 2
|
||
;SUBLZR .EQU 0001H ;REGULAR LAZER SHOTS
|
||
;SUBSPRY .EQU 0002H ;SPRAY SUB TYPE
|
||
;SUBFIRE1 .EQU 0003H ;FIRE BALL WPN
|
||
;SUBGRND .EQU 0004H ;GRENADE
|
||
;SUBNOSTP .EQU 0005H ;NON STOPPING BULLET
|
||
;SUBSPDG1 .EQU 0006H ;MACHINE GUN TYP WPN
|
||
LISTWHAT:
|
||
.LONG WHATLST1,WHATLST1,WHATLST1,WHATLST1,WHATLST1,WHATLST3
|
||
.LONG WHATLST6,WHATLST1
|
||
|
||
WHATLST1: ;NORMAL
|
||
.LONG SHOOT_LIST,SHOOT_LIST,SHOOT_LIST,SHOOT_LIST,SHOOT_LIST
|
||
.LONG SHOOT_LIST,SHOOT_LIST,SHOOT_LIST,SHOOT_LIST,SHOOT_LIST
|
||
WHATLST3: ;FIRE BALL
|
||
.LONG S3_LIST,S3_LIST,S3_LIST,S3_LIST,S3_LIST
|
||
.LONG S3_LIST,S3_LIST,S3_LIST,S3_LIST,S3_LIST
|
||
WHATLST6: ;MACHINE GUN
|
||
.LONG S6_LIST,S6_LIST,S6_LIST,S6_LIST,S6_LIST
|
||
.LONG S6_LIST,S6_LIST,S6_LIST,S6_LIST,S6_LIST
|
||
;WHATLST4: ;GRENADES
|
||
; .LONG SHOOT_LIST2,SHOOT4_LIST2,SHOOT4_LIST2,SHOOT4_LIST,SHOOT4_LIST
|
||
; .LONG SHOOT4_LIST,SHOOT4_LIST,SHOOT4_LIST,SHOOT4_LIST,SHOOT4_LIST
|
||
;WHATLST5: ;NON STOPPING BULLET
|
||
; .LONG SHOOT_LIST2,SHOOT5_LIST2,SHOOT5_LIST2,SHOOT5_LIST,SHOOT5_LIST3
|
||
; .LONG SHOOT5_LIST,SHOOT5_LIST,SHOOT5_LIST,SHOOT5_LIST,SHOOT5_LIST
|
||
|
||
SHOOT_LIST: ;NORMAL
|
||
.LONG SHT_UP,SHT_UP,SHT_DN,SHT_UP,SHT_RGT,SHT_UPRGT,SHT_DNRGT,SHT_LFT
|
||
.LONG SHT_UPLFT,SHT_DNLFT
|
||
;SHOOT_LIST2: ;NORMAL BUT ADJUSTING FOR ODD ANI PNTS
|
||
; .LONG SHT_UP,SHT_UP,SHT_DN,SHT_UP,SHT_RGT2,SHT_UPRGT,SHT_DNRGT2,SHT_LFT2
|
||
; .LONG SHT_UPLFT,SHT_DNLFT
|
||
S3_LIST: ;NON STOP LIST
|
||
.LONG SHT3_UP,SHT3_UP,SHT3_DN,SHT3_UP,SHT3_RGT,SHT3_UPRGT,SHT3_DNRGT,SHT3_LFT
|
||
.LONG SHT3_UPLFT,SHT3_DNLFT
|
||
S6_LIST: ;MACHINE GUN
|
||
.LONG SHT6_UP,SHT6_UP,SHT6_DN,SHT6_UP,SHT6_RGT,SHT6_UPRGT,SHT6_DNRGT,SHT6_LFT
|
||
.LONG SHT6_UPLFT,SHT6_DNLFT
|
||
;SHOOT2_LIST: ;SPRAY
|
||
; .LONG SHT_UP,SHT2_UP,SHT2_DN,SHT_UP,SHT2_RGT,SHT2_UPRGT,SHT2_DNRGT,SHT2_LFT
|
||
; .LONG SHT2_UPLFT,SHT2_DNLFT
|
||
;SHOOT2_LIST2: ;SPRAY BUT ADJUSTING FOR ODD ANI PNTS
|
||
; .LONG SHT_UP,SHT2_UP,SHT2_DN,SHT_UP,SHT2_RGT2,SHT2_UPRGT,SHT2_DNRGT,SHT2_LFT2
|
||
; .LONG SHT2_UPLFT,SHT2_DNLFT
|
||
;SHOOT2_LIST3: ;SPRAY BUT ADJUSTING FOR ODD ANI PNTS
|
||
; .LONG SHT_UP,SHT2_UP,SHT2_DN2,SHT_UP,SHT2_RGT,SHT2_UPRGT,SHT2_DNRGT,SHT2_LFT
|
||
; .LONG SHT2_UPLFT,SHT2_DNLFT
|
||
;SHOOT3_LIST: ;POD
|
||
; .LONG SHT_UP,SHT3_UP,SHT3_DN,SHT_UP,SHT3_RGT,SHT3_UPRGT,SHT3_DNRGT,SHT3_LFT
|
||
; .LONG SHT3_UPLFT,SHT3_DNLFT
|
||
;SHOOT3_LIST2: ;POD BUT ADJUSTING FOR ODD ANI PNTS
|
||
; .LONG SHT_UP,SHT3_UP,SHT3_DN,SHT_UP,SHT3_RGT2,SHT3_UPRGT,SHT3_DNRGT,SHT3_LFT2
|
||
; .LONG SHT3_UPLFT,SHT3_DNLFT
|
||
;SHOOT3_LIST3: ;POD BUT ADJUSTING FOR ODD ANI PNTS
|
||
; .LONG SHT_UP,SHT3_UP,SHT3_DN2,SHT_UP,SHT3_RGT,SHT3_UPRGT,SHT3_DNRGT,SHT3_LFT
|
||
; .LONG SHT3_UPLFT,SHT3_DNLFT
|
||
;SHOOT4_LIST: ;GRENADE
|
||
; .LONG SHT_UP,SHT4_UP,SHT4_DN,SHT_UP,SHT4_RGT,SHT4_UPRGT,SHT4_DNRGT,SHT4_LFT
|
||
; .LONG SHT4_UPLFT,SHT4_DNLFT
|
||
;SHOOT4_LIST2: ;GRENADE BUT ADJUSTING FOR ODD ANI PNTS
|
||
; .LONG SHT_UP,SHT4_UP,SHT4_DN,SHT_UP,SHT4_RGT2,SHT4_UPRGT,SHT4_DNRGT,SHT4_LFT2
|
||
; .LONG SHT4_UPLFT,SHT4_DNLFT
|
||
;SHOOT5_LIST: ;NON STOPPING BULLET
|
||
; .LONG SHT_UP,SHT5_UP,SHT5_DN,SHT_UP,SHT5_RGT,SHT5_UPRGT,SHT5_DNRGT,SHT5_LFT
|
||
; .LONG SHT5_UPLFT,SHT5_DNLFT
|
||
;SHOOT5_LIST2: ;NON STOPPING BULLET BUT ADJUSTING FOR ODD ANI PNTS
|
||
; .LONG SHT_UP,SHT5_UP,SHT5_DN,SHT_UP,SHT5_RGT2,SHT5_UPRGT,SHT5_DNRGT,SHT5_LFT
|
||
; .LONG SHT5_UPLFT,SHT5_DNLFT
|
||
;SHOOT5_LIST3: ;NON STOPPING BULLET BUT ADJUSTING FOR ODD ANI PNTS
|
||
; .LONG SHT_UP,SHT5_UP,SHT5_DN2,SHT_UP,SHT5_RGT,SHT5_UPRGT,SHT5_DNRGT,SHT5_LFT
|
||
; .LONG SHT5_UPLFT,SHT5_DNLFT
|
||
|
||
|
||
SHOOT_LEG_LIST:
|
||
.LONG L_SHT_UP,L_SHT_UP,L_SHT_DN,L_SHT_UP,L_SHT_RGT,L_SHT_UPRGT,L_SHT_DNRGT,L_SHT_LFT
|
||
.LONG L_SHT_UPLFT,L_SHT_DNLFT
|
||
SHOOT_LEG_LIST2:
|
||
.LONG L2_SHT_UP,L2_SHT_UP,L2_SHT_DN,L2_SHT_UP,L2_SHT_RGT,L2_SHT_UPRGT,L2_SHT_DNRGT
|
||
.LONG L2_SHT_LFT,L2_SHT_UPLFT,L2_SHT_DNLFT
|
||
|
||
; 1
|
||
; 8 5
|
||
;7 4
|
||
; 9 6
|
||
; 2
|
||
;
|
||
;WALK DIR IS ACROSS
|
||
;FIRE DIR IS DOWN
|
||
; 9876543210
|
||
REVERSE .WORD 0000000000B
|
||
.WORD 1001000100B
|
||
.WORD 0100100010B
|
||
.WORD 0000000000B
|
||
.WORD 1110000000B
|
||
.WORD 1010000100B
|
||
.WORD 0110000010B
|
||
.WORD 0001110000B
|
||
.WORD 0001010100B
|
||
.WORD 0000110010B
|
||
|
||
STAND_TBL_L:
|
||
.LONG P1S12L1,P1S12L1,P1SH6L1,P1S12L1,P1SH9L1,P1S10L1,P1SH8L1
|
||
.LONG P1SH9L1,P1S10L1,P1SH8L1
|
||
STAND_TBL_L2:
|
||
.LONG P1TH12L1,P1TH12L1,P1TH6L1,P1TH12L1,P1TH9L1,P1TH10L1,P1TH8L1
|
||
.LONG P1TH9L1,P1TH10L1,P1TH8L1
|
||
STAND_TBL_L3:
|
||
.LONG P1TH12L2,P1TH12L2,P1TH6L2,P1TH12L2,P1TH9L2,P1TH10L2,P1TH8L2
|
||
.LONG P1TH9L2,P1TH10L2,P1TH8L2
|
||
|
||
SHT_UP:
|
||
.LONG P1S12T1
|
||
.WORD FLIPBITS|2,0
|
||
.LONG P1S12T2
|
||
.WORD 2
|
||
.LONG P1S12T1
|
||
.WORD FLIPBITS|2,0
|
||
.LONG P1S12T2
|
||
.WORD 2
|
||
.LONG 0
|
||
SHT_UPRGT:
|
||
.LONG P1S10T1
|
||
.WORD FLIPBITS|2,(M_FLIPH)
|
||
.LONG P1S10T2
|
||
.WORD 2
|
||
.LONG P1S10T1
|
||
.WORD FLIPBITS|2,(M_FLIPH)
|
||
.LONG P1S10T2
|
||
.WORD 2
|
||
.LONG 0
|
||
SHT_UPLFT:
|
||
.LONG P1S10T1
|
||
.WORD FLIPBITS|2,0
|
||
.LONG P1S10T2
|
||
.WORD 2
|
||
.LONG P1S10T1
|
||
.WORD FLIPBITS|2,0
|
||
.LONG P1S10T2
|
||
.WORD 2
|
||
.LONG 0
|
||
SHT_RGT:
|
||
.LONG P1SH9T1
|
||
.WORD FLIPBITS|2,(M_FLIPH)
|
||
.LONG P1SH9T2
|
||
.WORD 2
|
||
.LONG P1SH9T1
|
||
.WORD FLIPBITS|2,(M_FLIPH)
|
||
.LONG P1SH9T2
|
||
.WORD 2
|
||
.LONG 0
|
||
SHT_LFT:
|
||
.LONG P1SH9T1
|
||
.WORD FLIPBITS|2,0
|
||
.LONG P1SH9T2
|
||
.WORD 2
|
||
.LONG P1SH9T1
|
||
.WORD FLIPBITS|2,0
|
||
.LONG P1SH9T2
|
||
.WORD 2
|
||
.LONG 0
|
||
SHT_DN:
|
||
.LONG P1SH6T1
|
||
.WORD FLIPBITS|2,0
|
||
.LONG P1SH6T2
|
||
.WORD 2
|
||
.LONG P1SH6T1
|
||
.WORD FLIPBITS|2,0
|
||
.LONG P1SH6T2
|
||
.WORD 2
|
||
.LONG 0
|
||
SHT_DNLFT:
|
||
.LONG P1SH8T1
|
||
.WORD FLIPBITS|2,0
|
||
.LONG P1SH8T2
|
||
.WORD 2
|
||
.LONG P1SH8T1
|
||
.WORD FLIPBITS|2,0
|
||
.LONG P1SH8T2
|
||
.WORD 2
|
||
.LONG 0
|
||
SHT_DNRGT:
|
||
.LONG P1SH8T1
|
||
.WORD FLIPBITS|2,(M_FLIPH)
|
||
.LONG P1SH8T2
|
||
.WORD 2
|
||
.LONG P1SH8T1
|
||
.WORD FLIPBITS|2,(M_FLIPH)
|
||
.LONG P1SH8T2
|
||
.WORD 2
|
||
.LONG 0
|
||
|
||
|
||
|
||
;FOR NON STOP WEAPON
|
||
SHT3_UP:
|
||
.LONG P1S12T1
|
||
.WORD FLIPBITS|4,0
|
||
.LONG P1S12T2
|
||
.WORD 4
|
||
.LONG 0
|
||
SHT3_UPRGT:
|
||
.LONG P1S10T1
|
||
.WORD FLIPBITS|4,(M_FLIPH)
|
||
.LONG P1S10T2
|
||
.WORD 4
|
||
.LONG 0
|
||
SHT3_UPLFT:
|
||
.LONG P1S10T1
|
||
.WORD FLIPBITS|4,0
|
||
.LONG P1S10T2
|
||
.WORD 4
|
||
.LONG 0
|
||
SHT3_RGT:
|
||
.LONG P1SH9T1
|
||
.WORD FLIPBITS|4,(M_FLIPH)
|
||
.LONG P1SH9T2
|
||
.WORD 4
|
||
.LONG 0
|
||
SHT3_LFT:
|
||
.LONG P1SH9T1
|
||
.WORD FLIPBITS|4,0
|
||
.LONG P1SH9T2
|
||
.WORD 4
|
||
.LONG 0
|
||
SHT3_DN:
|
||
.LONG P1SH6T1
|
||
.WORD FLIPBITS|4,0
|
||
.LONG P1SH6T2
|
||
.WORD 4
|
||
.LONG 0
|
||
SHT3_DNLFT:
|
||
.LONG P1SH8T1
|
||
.WORD FLIPBITS|4,0
|
||
.LONG P1SH8T2
|
||
.WORD 4
|
||
.LONG 0
|
||
SHT3_DNRGT:
|
||
.LONG P1SH8T1
|
||
.WORD FLIPBITS|4,(M_FLIPH)
|
||
.LONG P1SH8T2
|
||
.WORD 4
|
||
.LONG 0
|
||
|
||
;FOR MACHINE GUN
|
||
SHT6_UP:
|
||
.LONG P1S12T1
|
||
.WORD FLIPBITS|2,0
|
||
.LONG P1S12T2
|
||
.WORD 2
|
||
.LONG 0
|
||
SHT6_UPRGT:
|
||
.LONG P1S10T1
|
||
.WORD FLIPBITS|2,(M_FLIPH)
|
||
.LONG P1S10T2
|
||
.WORD 2
|
||
.LONG 0
|
||
SHT6_UPLFT:
|
||
.LONG P1S10T1
|
||
.WORD FLIPBITS|2,0
|
||
.LONG P1S10T2
|
||
.WORD 2
|
||
.LONG 0
|
||
SHT6_RGT:
|
||
.LONG P1SH9T1
|
||
.WORD FLIPBITS|2,(M_FLIPH)
|
||
.LONG P1SH9T2
|
||
.WORD 2
|
||
.LONG 0
|
||
SHT6_LFT:
|
||
.LONG P1SH9T1
|
||
.WORD FLIPBITS|2,0
|
||
.LONG P1SH9T2
|
||
.WORD 2
|
||
.LONG 0
|
||
SHT6_DN:
|
||
.LONG P1SH6T1
|
||
.WORD FLIPBITS|2,0
|
||
.LONG P1SH6T2
|
||
.WORD 2
|
||
.LONG 0
|
||
SHT6_DNLFT:
|
||
.LONG P1SH8T1
|
||
.WORD FLIPBITS|2,0
|
||
.LONG P1SH8T2
|
||
.WORD 2
|
||
.LONG 0
|
||
SHT6_DNRGT:
|
||
.LONG P1SH8T1
|
||
.WORD FLIPBITS|2,(M_FLIPH)
|
||
.LONG P1SH8T2
|
||
.WORD 2
|
||
.LONG 0
|
||
|
||
|
||
L_SHT_UP:
|
||
.LONG P1S12L1
|
||
.WORD FLIPBITS|1,0
|
||
.LONG 0
|
||
L_SHT_UPRGT:
|
||
.LONG P1S10L1
|
||
.WORD FLIPBITS|1,(M_FLIPH)
|
||
.LONG 0
|
||
L_SHT_UPLFT:
|
||
.LONG P1S10L1
|
||
.WORD FLIPBITS|1,0
|
||
.LONG 0
|
||
L_SHT_RGT:
|
||
.LONG P1SH9L1
|
||
.WORD FLIPBITS|1,(M_FLIPH)
|
||
.LONG 0
|
||
L_SHT_LFT:
|
||
.LONG P1SH9L1
|
||
.WORD FLIPBITS|1,0
|
||
.LONG 0
|
||
L_SHT_DN:
|
||
.LONG P1SH6L1
|
||
.WORD FLIPBITS|1,0
|
||
.LONG 0
|
||
L_SHT_DNLFT:
|
||
.LONG P1SH8L1
|
||
.WORD FLIPBITS|1,0
|
||
.LONG 0
|
||
L_SHT_DNRGT:
|
||
.LONG P1SH8L1
|
||
.WORD FLIPBITS|1,(M_FLIPH)
|
||
.LONG 0
|
||
|
||
|
||
|
||
L2_SHT_UP:
|
||
.LONG P1TH12L1
|
||
.WORD FLIPBITS|1,0
|
||
.LONG 0
|
||
L2_SHT_UPRGT:
|
||
.LONG P1TH10L1
|
||
.WORD FLIPBITS|1,(M_FLIPH)
|
||
.LONG 0
|
||
L2_SHT_UPLFT:
|
||
.LONG P1TH10L1
|
||
.WORD FLIPBITS|1,0
|
||
.LONG 0
|
||
L2_SHT_RGT:
|
||
.LONG P1TH9L1
|
||
.WORD FLIPBITS|1,(M_FLIPH)
|
||
.LONG 0
|
||
L2_SHT_LFT:
|
||
.LONG P1TH9L1
|
||
.WORD FLIPBITS|1,0
|
||
.LONG 0
|
||
L2_SHT_DN:
|
||
.LONG P1TH6L1
|
||
.WORD FLIPBITS|1,0
|
||
.LONG 0
|
||
L2_SHT_DNLFT:
|
||
.LONG P1TH8L1
|
||
.WORD FLIPBITS|1,0
|
||
.LONG 0
|
||
L2_SHT_DNRGT:
|
||
.LONG P1TH8L1
|
||
.WORD FLIPBITS|1,(M_FLIPH)
|
||
.LONG 0
|
||
|
||
PWK_UP:
|
||
.LONG P1R12L1
|
||
.WORD FLIPBITS|3,0
|
||
.LONG P1R12L2
|
||
.WORD 3
|
||
.LONG P1R12L3
|
||
.WORD 3
|
||
.LONG P1R12L4
|
||
.WORD 3
|
||
.LONG P1R12L5
|
||
.WORD 3
|
||
.LONG P1R12L6
|
||
.WORD 3
|
||
.LONG P1R12L7
|
||
.WORD 3
|
||
.LONG P1R12L8
|
||
.WORD 3
|
||
.LONG 0
|
||
PWK_DN:
|
||
.LONG P1RN6L1
|
||
.WORD FLIPBITS|3,0
|
||
.LONG P1RN6L2
|
||
.WORD 3
|
||
.LONG P1RN6L3
|
||
.WORD 3
|
||
.LONG P1RN6L4
|
||
.WORD 3
|
||
.LONG P1RN6L5
|
||
.WORD 3
|
||
.LONG P1RN6L6
|
||
.WORD 3
|
||
.LONG P1RN6L7
|
||
.WORD 3
|
||
.LONG P1RN6L8
|
||
.WORD 3
|
||
.LONG 0
|
||
PWK_RGT:
|
||
.LONG P1RN9L1
|
||
.WORD FLIPBITS|3,(M_FLIPH)
|
||
.LONG P1RN9L2
|
||
.WORD 3
|
||
.LONG P1RN9L3
|
||
.WORD 3
|
||
.LONG P1RN9L4
|
||
.WORD 3
|
||
.LONG P1RN9L5
|
||
.WORD 3
|
||
.LONG P1RN9L6
|
||
.WORD 3
|
||
.LONG P1RN9L7
|
||
.WORD 3
|
||
.LONG P1RN9L8
|
||
.WORD 3
|
||
.LONG 0
|
||
PWK_UPRGT:
|
||
.LONG P1R10L1
|
||
.WORD FLIPBITS|3,(M_FLIPH)
|
||
.LONG P1R10L2
|
||
.WORD 3
|
||
.LONG P1R10L3
|
||
.WORD 3
|
||
.LONG P1R10L4
|
||
.WORD 3
|
||
.LONG P1R10L5
|
||
.WORD 3
|
||
.LONG P1R10L6
|
||
.WORD 3
|
||
.LONG P1R10L7
|
||
.WORD 3
|
||
.LONG 0
|
||
PWK_DNLFT:
|
||
.LONG P1RN8L1
|
||
.WORD FLIPBITS|3,0
|
||
.LONG P1RN8L2
|
||
.WORD 3
|
||
.LONG P1RN8L3
|
||
.WORD 3
|
||
.LONG P1RN8L4
|
||
.WORD 3
|
||
.LONG P1RN8L5
|
||
.WORD 3
|
||
.LONG P1RN8L6
|
||
.WORD 3
|
||
.LONG P1RN8L7
|
||
.WORD 3
|
||
.LONG P1RN8L8
|
||
.WORD 3
|
||
.LONG 0
|
||
PWK_LFT:
|
||
.LONG P1RN9L1
|
||
.WORD FLIPBITS|3,0
|
||
.LONG P1RN9L2
|
||
.WORD 3
|
||
.LONG P1RN9L3
|
||
.WORD 3
|
||
.LONG P1RN9L4
|
||
.WORD 3
|
||
.LONG P1RN9L5
|
||
.WORD 3
|
||
.LONG P1RN9L6
|
||
.WORD 3
|
||
.LONG P1RN9L7
|
||
.WORD 3
|
||
.LONG P1RN9L8
|
||
.WORD 3
|
||
.LONG 0
|
||
PWK_UPLFT:
|
||
.LONG P1R10L1
|
||
.WORD FLIPBITS|3,0
|
||
.LONG P1R10L2
|
||
.WORD 3
|
||
.LONG P1R10L3
|
||
.WORD 3
|
||
.LONG P1R10L4
|
||
.WORD 3
|
||
.LONG P1R10L5
|
||
.WORD 3
|
||
.LONG P1R10L6
|
||
.WORD 3
|
||
.LONG P1R10L7
|
||
.WORD 3
|
||
.LONG 0
|
||
PWK_DNRGT:
|
||
.LONG P1RN8L1
|
||
.WORD FLIPBITS|3,(M_FLIPH)
|
||
.LONG P1RN8L2
|
||
.WORD 3
|
||
.LONG P1RN8L3
|
||
.WORD 3
|
||
.LONG P1RN8L4
|
||
.WORD 3
|
||
.LONG P1RN8L5
|
||
.WORD 3
|
||
.LONG P1RN8L6
|
||
.WORD 3
|
||
.LONG P1RN8L7
|
||
.WORD 3
|
||
.LONG P1RN8L8
|
||
.WORD 3
|
||
.LONG 0
|
||
|
||
|
||
FPWK_UP:
|
||
.LONG P1R12L1
|
||
.WORD FLIPBITS|1,0
|
||
.LONG P1R12L2
|
||
.WORD 1
|
||
.LONG P1R12L3
|
||
.WORD 1
|
||
.LONG P1R12L4
|
||
.WORD 1
|
||
.LONG P1R12L5
|
||
.WORD 1
|
||
.LONG P1R12L6
|
||
.WORD 1
|
||
.LONG P1R12L7
|
||
.WORD 1
|
||
.LONG P1R12L8
|
||
.WORD 1
|
||
.LONG 0
|
||
FPWK_DN:
|
||
.LONG P1RN6L1
|
||
.WORD FLIPBITS|1,0
|
||
.LONG P1RN6L2
|
||
.WORD 1
|
||
.LONG P1RN6L3
|
||
.WORD 1
|
||
.LONG P1RN6L4
|
||
.WORD 1
|
||
.LONG P1RN6L5
|
||
.WORD 1
|
||
.LONG P1RN6L6
|
||
.WORD 1
|
||
.LONG P1RN6L7
|
||
.WORD 1
|
||
.LONG P1RN6L8
|
||
.WORD 1
|
||
.LONG 0
|
||
FPWK_RGT:
|
||
.LONG P1RN9L1
|
||
.WORD FLIPBITS|1,(M_FLIPH)
|
||
.LONG P1RN9L2
|
||
.WORD 1
|
||
.LONG P1RN9L3
|
||
.WORD 1
|
||
.LONG P1RN9L4
|
||
.WORD 1
|
||
.LONG P1RN9L5
|
||
.WORD 1
|
||
.LONG P1RN9L6
|
||
.WORD 1
|
||
.LONG P1RN9L7
|
||
.WORD 1
|
||
.LONG P1RN9L8
|
||
.WORD 1
|
||
.LONG 0
|
||
FPWK_UPRGT:
|
||
.LONG P1R10L1
|
||
.WORD FLIPBITS|1,(M_FLIPH)
|
||
.LONG P1R10L2
|
||
.WORD 1
|
||
.LONG P1R10L3
|
||
.WORD 1
|
||
.LONG P1R10L4
|
||
.WORD 1
|
||
.LONG P1R10L5
|
||
.WORD 1
|
||
.LONG P1R10L6
|
||
.WORD 1
|
||
.LONG P1R10L7
|
||
.WORD 1
|
||
.LONG 0
|
||
FPWK_DNLFT:
|
||
.LONG P1RN8L1
|
||
.WORD FLIPBITS|1,0
|
||
.LONG P1RN8L2
|
||
.WORD 1
|
||
.LONG P1RN8L3
|
||
.WORD 1
|
||
.LONG P1RN8L4
|
||
.WORD 1
|
||
.LONG P1RN8L5
|
||
.WORD 1
|
||
.LONG P1RN8L6
|
||
.WORD 1
|
||
.LONG P1RN8L7
|
||
.WORD 1
|
||
.LONG P1RN8L8
|
||
.WORD 1
|
||
.LONG 0
|
||
FPWK_LFT:
|
||
.LONG P1RN9L1
|
||
.WORD FLIPBITS|1,0
|
||
.LONG P1RN9L2
|
||
.WORD 1
|
||
.LONG P1RN9L3
|
||
.WORD 1
|
||
.LONG P1RN9L4
|
||
.WORD 1
|
||
.LONG P1RN9L5
|
||
.WORD 1
|
||
.LONG P1RN9L6
|
||
.WORD 1
|
||
.LONG P1RN9L7
|
||
.WORD 1
|
||
.LONG P1RN9L8
|
||
.WORD 1
|
||
.LONG 0
|
||
FPWK_UPLFT:
|
||
.LONG P1R10L1
|
||
.WORD FLIPBITS|1,0
|
||
.LONG P1R10L2
|
||
.WORD 1
|
||
.LONG P1R10L3
|
||
.WORD 1
|
||
.LONG P1R10L4
|
||
.WORD 1
|
||
.LONG P1R10L5
|
||
.WORD 1
|
||
.LONG P1R10L6
|
||
.WORD 1
|
||
.LONG P1R10L7
|
||
.WORD 1
|
||
.LONG 0
|
||
FPWK_DNRGT:
|
||
.LONG P1RN8L1
|
||
.WORD FLIPBITS|1,(M_FLIPH)
|
||
.LONG P1RN8L2
|
||
.WORD 1
|
||
.LONG P1RN8L3
|
||
.WORD 1
|
||
.LONG P1RN8L4
|
||
.WORD 1
|
||
.LONG P1RN8L5
|
||
.WORD 1
|
||
.LONG P1RN8L6
|
||
.WORD 1
|
||
.LONG P1RN8L7
|
||
.WORD 1
|
||
.LONG P1RN8L8
|
||
.WORD 1
|
||
.LONG 0
|
||
|
||
TWK_UP:
|
||
.LONG P1TH12L1
|
||
.WORD FLIPBITS|4,0
|
||
.LONG P1TH12L2
|
||
.WORD 4
|
||
.LONG 0
|
||
TWK_DN:
|
||
.LONG P1TH6L1
|
||
.WORD FLIPBITS|4,0
|
||
.LONG P1TH6L2
|
||
.WORD 4
|
||
.LONG 0
|
||
TWK_RGT:
|
||
.LONG P1TH9L1
|
||
.WORD FLIPBITS|4,(M_FLIPH)
|
||
.LONG P1TH9L2
|
||
.WORD 4
|
||
.LONG 0
|
||
TWK_UPRGT:
|
||
.LONG P1TH10L1
|
||
.WORD FLIPBITS|4,(M_FLIPH)
|
||
.LONG P1TH10L2
|
||
.WORD 4
|
||
.LONG 0
|
||
TWK_DNLFT:
|
||
.LONG P1TH8L1
|
||
.WORD FLIPBITS|4,0
|
||
.LONG P1TH8L2
|
||
.WORD 4
|
||
.LONG 0
|
||
TWK_LFT:
|
||
.LONG P1TH9L1
|
||
.WORD FLIPBITS|4,0
|
||
.LONG P1TH9L2
|
||
.WORD 4
|
||
.LONG 0
|
||
TWK_UPLFT:
|
||
.LONG P1TH10L1
|
||
.WORD FLIPBITS|4,0
|
||
.LONG P1TH10L2
|
||
.WORD 4
|
||
.LONG 0
|
||
TWK_DNRGT:
|
||
.LONG P1TH8L1
|
||
.WORD FLIPBITS|4,(M_FLIPH)
|
||
.LONG P1TH8L2
|
||
.WORD 4
|
||
.LONG 0
|
||
|
||
|
||
|
||
|
||
WPNWALK:
|
||
;BULLET SUB TYPES
|
||
.LONG T_WALK_LIST,T_WALK_LIST,T_WALK_LIST,T_WALK_LIST,T_WALK_LIST
|
||
.LONG T_WALK_LIST,T_WALK_LIST,T_WALK_LIST
|
||
|
||
T_WALK_LIST: ;REGULAR GUN
|
||
;T_WALK_LIST2: ;SPRAY GUN
|
||
;T_WALK_LIST5: ;NON STOPPING BULLET
|
||
.LONG P1WG12T1,P1WG12T1,P1WG6T1,P1WG12T1,P1WG9T1,P1WG10T1,P1WG8T1,P1WG9T1
|
||
.LONG P1WG10T1,P1WG8T1
|
||
;T_WALK_LIST2: ;SPRAY GUN
|
||
; .LONG P1WG12T1,P1SG12T1,P1SG6T1,P1WG12T1,P1SG9T1,P1SG10T1,P1SG8T1,P1SG9T1
|
||
; .LONG P1SG10T1,P1SG8T1
|
||
;T_WALK_LIST3: ;BACKPACK BOMBS
|
||
; .LONG P1WG12T1,P1B12T1,P1B6T1,P1WG12T1,P1B9T1,P1B10T1,P1B8T1,P1B9T1
|
||
; .LONG P1B10T1,P1B8T1
|
||
;T_WALK_LIST4: ;GRENADE
|
||
; .LONG P1WG12T1,P1GG12T1,P1GG6T1,P1WG12T1,P1GG9T1,P1GG10T1,P1GG8T1,P1GG9T1
|
||
; .LONG P1GG10T1,P1GG8T1
|
||
;T_WALK_LIST5: ;NON STOPPING BULLET
|
||
; .LONG P1WG12T1,P1GL12T1,P1GL6T1,P1WG12T1,P1GL9T1,P1GL10T1,P1GL8T1,P1GL9T1
|
||
; .LONG P1GL10T1,P1GL8T1
|
||
|
||
T_WALK_FLG:
|
||
.LONG DMAWNZ+M_NOCOLL,DMAWNZ+M_NOCOLL,DMAWNZ+M_NOCOLL,DMAWNZ+M_NOCOLL,DMAWNZ+M_NOCOLL+M_FLIPH
|
||
.LONG DMAWNZ+M_NOCOLL+M_FLIPH
|
||
.LONG DMAWNZ+M_NOCOLL+M_FLIPH,DMAWNZ+M_NOCOLL
|
||
.LONG DMAWNZ+M_NOCOLL,DMAWNZ+M_NOCOLL
|
||
L_WALK_FLG:
|
||
.LONG DMAWNZ+M_NOCOLL,DMAWNZ+0,DMAWNZ+0,DMAWNZ+M_NOCOLL,DMAWNZ+0+M_FLIPH
|
||
.LONG DMAWNZ+0+M_FLIPH
|
||
.LONG DMAWNZ+0+M_FLIPH,DMAWNZ+0
|
||
.LONG DMAWNZ+0,DMAWNZ+0
|
||
|
||
TSHK:
|
||
.LONG SHOCK1
|
||
.WORD 2
|
||
.LONG SHOCK2
|
||
.WORD 2
|
||
.LONG SHOCK3
|
||
.WORD 2
|
||
.LONG SHOCK2
|
||
.WORD 2
|
||
.LONG SHOCK1
|
||
.WORD 2
|
||
.LONG SHOCK3
|
||
.WORD 2
|
||
.LONG SHOCK1
|
||
.WORD 2
|
||
.LONG SHOCK2
|
||
.WORD 2
|
||
.LONG SHOCK1
|
||
.WORD 2
|
||
.LONG SHOCK2
|
||
.WORD 2
|
||
.LONG SHOCK3
|
||
.WORD 2
|
||
.LONG SHOCK2
|
||
.WORD 2
|
||
.LONG SHOCK1
|
||
.WORD 2
|
||
.LONG SHOCK3
|
||
.WORD 2
|
||
.LONG SHOCK1
|
||
.WORD 2
|
||
.LONG SHOCK2
|
||
.WORD 2
|
||
.LONG SHOCK1
|
||
.WORD 2
|
||
.LONG SHOCK2
|
||
.WORD 2
|
||
.LONG SHOCK3
|
||
.WORD 2
|
||
.LONG SHOCK2
|
||
.WORD 2
|
||
.LONG SHOCK1
|
||
.WORD 2
|
||
.LONG SHOCK3
|
||
.WORD 2
|
||
.LONG SHOCK1
|
||
.WORD 2
|
||
.LONG SHOCK2
|
||
.WORD 2
|
||
.LONG SHOCK1
|
||
.WORD 2
|
||
.LONG SHOCK2
|
||
.WORD 2
|
||
.LONG SHOCK3
|
||
.WORD 2
|
||
.LONG SHOCK2
|
||
.WORD 2
|
||
.LONG SHOCK1
|
||
.WORD 2
|
||
.LONG SHOCK3
|
||
.WORD 2
|
||
.LONG SHOCK1
|
||
.WORD 2
|
||
.LONG SHOCK2
|
||
.WORD 2
|
||
.LONG SHOCK1
|
||
.WORD 2
|
||
.LONG SHOCK2
|
||
.WORD 2
|
||
.LONG SHOCK3
|
||
.WORD 2
|
||
.LONG SHOCK2
|
||
.WORD 2
|
||
.LONG SHOCK1
|
||
.WORD 2
|
||
.LONG SHOCK3
|
||
.WORD 2
|
||
.LONG SHOCK1
|
||
.WORD 2
|
||
.LONG SHOCK2
|
||
.WORD 2
|
||
.LONG SHOCK1
|
||
.WORD 2
|
||
.LONG SHOCK2
|
||
.WORD 2
|
||
.LONG SHOCK3
|
||
.WORD 2
|
||
.LONG SHOCK2
|
||
.WORD 2
|
||
.LONG SHOCK1
|
||
.WORD 2
|
||
.LONG SHOCK3
|
||
.WORD 2
|
||
.LONG SHOCK1
|
||
.WORD 2
|
||
.LONG SHOCK2
|
||
.WORD 2
|
||
.LONG 0
|
||
|
||
PCTR .LONG P1CTRL,P2CTRL
|
||
|
||
;
|
||
;SEEK X-Y COORDINATE
|
||
;A8=OBJECT SEEKING
|
||
;A5=X COORD TO SEEK
|
||
;A6=Y COORD TO SEEK
|
||
;A7=MULTIPLIER OF VELOCITY
|
||
|
||
;RETURNS
|
||
;A5=X VEL
|
||
;A6=Y VEL
|
||
;
|
||
;NABBED FROM EUGENE JARVIS FOOTBALL CODE
|
||
;
|
||
XYSEEK2:
|
||
MOVE *A8(OXPOS),A3,W
|
||
MOVE *A8(OYPOS),A4,W
|
||
SUB A3,A5 ;FIND DIFFERENCE
|
||
SUB A4,A6
|
||
MOVE A6,A3 ;
|
||
MOVE A5,A1
|
||
ABS A5
|
||
ABS A6
|
||
ADD A5,A6 ;CALC SUM ABS(DX+DY)
|
||
SLL 16,A1 ;SHIFT TO ACCOMODATE FRACTIONAL VELOCITY
|
||
SLL 16,A3
|
||
DIVS A6,A1 ;GENERATE SPEED RATIOS
|
||
DIVS A6,A3
|
||
; MOVI 60H,A5 ;MULTIPLY BY VELOCITY FACTOR
|
||
MOVE A7,A5
|
||
MPYS A5,A3
|
||
MPYS A1,A5 ;FINAL X VEL
|
||
SRA 4,A3
|
||
SRA 4,A5
|
||
MOVE A3,A6 ;FINAL Y VEL
|
||
RETS
|
||
|
||
|
||
**************************************************************************
|
||
;
|
||
; TEMP ROUTINES
|
||
;
|
||
**************************************************************************
|
||
.IF DEBUG
|
||
|
||
StCpuLft:
|
||
move @TIMER,A0,W
|
||
jrz NoBog
|
||
clr A0
|
||
jruc GotTime
|
||
NoBog:
|
||
move @vcount,A0
|
||
subi HSINT,A0
|
||
jrnn SkIncCnt
|
||
addi 256,A0
|
||
SkIncCnt:
|
||
sll 2,A0
|
||
neg A0
|
||
addi 1024,A0
|
||
GotTime:
|
||
move A0,@CPULEFT,W
|
||
|
||
srl 4,A0
|
||
move @CPUAVG,A1,W
|
||
move A1,A2
|
||
srl 4,A2
|
||
sub A2,A1
|
||
add A0,A1
|
||
move A1,@CPUAVG,W
|
||
|
||
rets
|
||
.ENDIF
|
||
|
||
|
||
|
||
|
||
|
||
**************************************************************************
|
||
* *
|
||
* ERRORLOG - THIS SHOULD BE CALLED IN PLACE OF ANY JRxx $ *
|
||
* IN CASE OF ERROR. IF WE ARE IN DEBUG MODE *
|
||
* IT WILL HANG, IF NOT, THE ERROR WILL BE LOGGED *
|
||
* AND IT WILL RETURN. *
|
||
* A1 = RETURN ADDRESS OF CALLING ROUTINE *
|
||
* A2 = ERROR CODE *
|
||
**************************************************************************
|
||
ERRORLOG
|
||
; MMTM SP,A2,A3,A4,A5,A6,A7
|
||
; SLL 16,A2
|
||
ERRLOGG ;A8 IS IN A8
|
||
|
||
; MOVE A13,A7 ;PROC. BLOCK IN A7
|
||
; MOVE *A7(PROCID),A6,W
|
||
; SLL 16,A6
|
||
; MOVE *A8(OID),A3,W
|
||
; MOVX A3,A6 ;A6 = [PROCID:*A8(OID)]
|
||
|
||
; MOVE @CIRCUIT,A5,W
|
||
; SLL 16,A5
|
||
; MOVE @WAVE,A3,W
|
||
; MOVX A3,A5 ;A5 = [CIRCUIT#:WAVE#,)]
|
||
|
||
; MOVI AUD1STRT,A4 ;PLAY #
|
||
; CALLR GETAUD4
|
||
|
||
; SLL 16,A4
|
||
; MOVE *A0(OID),A3,W ;A4 = [STRT#:*A0(OID)]
|
||
; MOVX A3,A4
|
||
|
||
; MOVE @GAMSTATE,A3,W ;A2 = [STATUS:GAMSTATE]
|
||
; MOVX A3,A2
|
||
|
||
; MOVE @STATUS,A3,W ;A2 = [ERROR CODE:STATUS]
|
||
; MOVX A3,A2
|
||
|
||
; MOVE *SP(0C0H),A3,L ;A3=GET THE RETURN ADDRESS
|
||
; MOVE *SP(0E0H),A1,L ;A1=CALLING ADDRESS
|
||
; CALLA ADD_DUMP
|
||
|
||
; MOVE @SURVCNT,A2,W
|
||
; INC A2 ;INCREMENT THE SURVIVAL COUNT
|
||
; MOVE A2,@SURVCNT,W
|
||
|
||
; MMFM SP,A2,A3,A4,A5,A6,A7
|
||
RETS
|
||
|
||
**************************************************************************
|
||
* *
|
||
* GETAUD4 - GET AN AUDIT *
|
||
* A4 = AUDIT # *
|
||
* RETURNS: *
|
||
* A4 = AUDIT *
|
||
* *
|
||
**************************************************************************
|
||
;GETAUD4
|
||
; MMTM SP,A0,A1
|
||
; MOVE A4,A0
|
||
; CALLA GET_AUD
|
||
; CALLA DEF_PAGE ;POINT AT DEFAULT PAGE.
|
||
; MOVE A1,A4
|
||
; MMFM SP,A0,A1
|
||
; RETS
|
||
|
||
|
||
|
||
.END
|
||
|
||
|
||
|