wwf-wrestlemania/CROWD.ASM

1195 lines
22 KiB
NASM
Executable File
Raw Permalink Blame History

This file contains invisible Unicode characters!

This file contains invisible Unicode characters that may be processed differently from what appears below. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to reveal hidden characters.

**************************************************************
*
* Software: Jason Skiles
* Initiated: 28 Apr 94
*
* COPYRIGHT (C) 1993 WILLIAMS ELECTRONICS GAMES, INC.
*
*.Last mod - 4/28/94 22:12
**************************************************************
.file "crowd.asm"
.title "crowd stuff"
.width 132
.option b,d,l,t
.mnolist
.include "mproc.equ" ;Mproc equates
.include "display.equ" ;Display proc equates
.include "gsp.equ" ;Gsp asm equates
.include "sys.equ"
.include "game.equ"
.include "audit.equ"
.include "macros.h"
.include "link.equ"
.include "sound.h"
.INCLUDE "SOUND.EQU"
.include "crowdimg.tbl"
.include "crowdimg.glo"
.include "bgndtbl.glo"
.include "imgtbl.glo"
#*****************************************************************************
.ref BAKLST,RNDRNG0,RNDPER,START_FLASHES,no_debris,reduce_bog
#*****************************************************************************
DEF_ANISPD equ 8
SPD_FOREVER equ 7FFFh
CROWD_OBJS equ 0h
CROWD_NORMANIM equ 20h
CROWD_CHEERANIM equ 40h
CANI_GOTO equ 0 + 8000h
CANI_RNDWAIT equ 1 + 8000h
CANI_END equ 2 + 8000H
CANI_CODE EQU 3 + 8000H
CANI_REPEAT EQU 4 + 8000H
CANI_SHOULD_REPEAT EQU 5 + 8000H
*STRUCT BOBJANIM
SCPTR .set 000 ;UHL script pointer (next instruction)
TIME .set 020h ;UHW time to hold
FRAME .set 030h ;UHL current obj
CHEER1 .set 050h ;UHL cheer1 jump point
CHEER2 .set 070h ;UHL cheer2 jump point
REPEAT_P .SET 090H ;UHL REPEAT POINT TO JUMP BACK TO
REPEAT_N .SET 0B0H ;UHW REPEAT THIS NUMBER OF TIMES
*ENDSTRUCT
BSIZE equ REPEAT_N+10h
NUMCROWD equ 30
HICROWDZ equ 58/2 ;high z (after shift)
BSSX CROWDDATA,(NUMCROWD+1)*BSIZE
BSSX crowd_process,32
#*****************************************************************************
* Main crowd control process
*
;NOTE: The background stuff is doing SOMETHING with ODXOFF and ODYOFF, so
; I'm storing anim points in OXVEL and OYVEL instead. Those seem safe.
SUBR crowd_anim
move a13,@crowd_process,L
;initialize
movi NUMCROWD,a0
movi CROWD_ANIMS,a1
movi CROWDDATA,a2
#initloop
move *a1+,a3,L
move *a3+,a14,W
move a14,*a2(TIME),W
move *a3+,a14,L
move a14,*a2(FRAME),L
move a3,*a2(SCPTR),L
move *a1+,a14,L
move a14,*a2(CHEER1),L
move *a1+,a14,L
move a14,*a2(CHEER2),L
CLR A14
MOVE A14,*A2(REPEAT_P),L
MOVE A14,*A2(REPEAT_N)
addi BSIZE,a2
dsj a0,#initloop
clr a14
move a14,*a2(SCPTR),L
#main_loop
;if we're in reduce_bog mode, sleep until someone wakes us up.
movk 1,a0
move @reduce_bog,a14
jrz #slp
movi 7FFFh,a0
#slp SLEEPR a0
;update CROWDDATA
movi CROWDDATA-BSIZE,a4
#cd_loop
addi BSIZE,a4
move *a4(SCPTR),a14,L
jrz #cd_done
callr animate_back
jruc #cd_loop
SUBR animate_back
move *a4(TIME),a14,W
dec a14
jrz #next_command
move a14,*a4(TIME),W
MOVK 1,A14
rets
#next_command
move *a4(SCPTR),a5,L
#next_in_the_QUEUE
move *a5+,a14,W
jrn #cani_command
move a14,*a4(TIME),W
move *a5+,a14,L
move a14,*a4(FRAME),L
move a5,*a4(SCPTR),L
;You think a simple CLR would do the job here? Try it. I dare you.
MOVK 1,A14
DEC A14
rets
#cani_command
andi 7FFFh,a14
X32 a14
addi #cani_commands,a14
move *a14,a14,L
jump a14
#cani_commands
.long #_goto
.long #_rndwait
.LONG #_END_ANIM
.LONG #_CODE
.LONG #_RANDOM_REPEAT
.LONG #_SHOULD_WE_WE_REPEAT
**********
#_CODE
MOVE *A5+,A0,L
MMTM SP,A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A14
CALL A0
MMFM SP,A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A14
jruc #next_in_the_QUEUE
#_END_ANIM
MOVI -1,A14
RETS
#_goto
move *a5+,a5,L
move a5,*a4(SCPTR),L
jruc #next_command
**********
#_rndwait
move *a5+,a0,W
calla RNDRNG0
move a0,*a4(TIME),W
move a5,*a4(SCPTR),L
rets
#_RANDOM_REPEAT
MOVE *A5+,A0
MOVE A5,*A4(REPEAT_P),L
CALLA RNDRNG0
MOVE A0,*A4(REPEAT_N)
jruc #next_in_the_QUEUE
#_SHOULD_WE_WE_REPEAT
MOVE *A4(REPEAT_N),A0
DEC A0
MOVE A0,*A4(REPEAT_N)
JRZ REACHED_LAST_LOOP
JRN REACHED_LAST_LOOP
MOVE *A4(REPEAT_P),*A4(SCPTR),L
MOVE *A4(REPEAT_P),A5,L
jruc #next_in_the_QUEUE
REACHED_LAST_LOOP
CLR A0
MOVE A0,*A4(REPEAT_N)
jruc #next_in_the_QUEUE
#cd_done
.ref PCNT
move @PCNT,a14
btst 0,a14
jrz #main_loop
;update BAKLST
move @BAKLST,a8,L
#bakloop
move *a8(OZPOS),a0,W
srl 1,a0
jrc #bakskip
cmpi HICROWDZ,a0
jrgt #bakskip
move a0,a1
X64 a1
X128 a0
add a1,a0
addi CROWDDATA,a0
move *a0(FRAME),a0,L
move *a8(OIMG),a1,L
cmp a0,a1
jreq #bakskip
; callr anibobj
move *a8(OCTRL),a1,W
move *a8(OXPOS),a2,W
move *a8(OXVEL),a3,W
move *a0(IANIOFFX),a4,W
clr a5
btst B_FLIPH,a1
jrz #noflip
;obj is horz-flipped. negate the Xanim point and adjust X pos
; by XSZold-XSZnew
neg a4
move *a8(OSIZEX),a5,W
move *a0(ISIZEX),a14,W
sub a14,a5
#noflip
add a3,a2
sub a4,a2
add a5,a2
move a2,*a8(OXPOS),W
move a4,*a8(OXVEL),W
move *a8(OYPOS),a2,W
move *a8(OYVEL),a3,W
move *a0(IANIOFFY),a4,W
add a3,a2
sub a4,a2
move a2,*a8(OYPOS),W
move a4,*a8(OYVEL),W
move a0,a2
move a1,a3
move a2,*a8(OIMG),L
move *a2(0),*a8(OSIZE),L
move *a2(ISAG),*a8(OSAG),L
setf 5,0,0
move *a2(ICTRL+7),*a8(OCTRL+7) ;Write 5 z comp bits
; setf 6,0,0
; move a3,*a8(OCTRL) ;Write 6 low bits
setf 16,1,0
#bakskip
move *a8,a8,L
jrnz #bakloop
jruc #main_loop
;crowd anim starting points
CROWD_ANIMS
.long #jasoncrd_norm, #jasoncrd_cheer1,#jasoncrd_cheer2
.long #tonycrd_norm, #tonycrd_cheer1 ,#tonycrd_cheer1
.long #vogel_norm, #vogel_cheer1 ,#vogel_cheer2
.long #tobias_norm, #tobias_cheer1 ,#tobias_cheer2
.long #alex_norm, #alex_cheer1 ,#alex_cheer2
.long #marine_norm, #marine_cheer1 ,#marine_cheer2
.long #jake_norm, #jake_cheer1 ,#jake_cheer2
.long #johnc_norm, #johnc_cheer1 ,#johnc_cheer2
.long #dewey_norm, #dewey_cheer1 ,#dewey_cheer2
.long #jason_norm, #jason_cheer1 ,#jason_cheer2
.long #jamie_norm, #jamie_cheer1 ,#jamie_cheer2
.long #sheridan_norm, #sheridan_cheer1,#sheridan_cheer2
.long #sal_norm, #sal_cheer1 ,#sal_cheer2
.long #josh_norm, #josh_cheer1 ,#josh_cheer2
.long #mark_norm, #mark_cheer1 ,#mark_cheer1
.long #tony_norm, #tony_cheer1 ,#tony_cheer2
.long #carlos_norm, #carlos_cheer1 ,#carlos_cheer2
.long #newc_norm, #newc_cheer1 ,#newc_cheer2
.long #joy_norm, #joy_cheer1 ,#joy_cheer1
.long #side1_norm, #side1_cheer1 ,#side1_cheer1
.long #side2_norm, #side2_cheer1 ,#side2_cheer1
.long #side3_norm, #side3_cheer1 ,#side3_cheer1
.long #george_norm, #george_cheer1 ,#george_cheer1
.long #dave_norm, #dave_cheer1 ,#dave_cheer1
.long #sophia_norm, #sophia_cheer1 ,#sophia_cheer2
.long #mancow_norm, #mancow_cheer1 ,#mancow_cheer2
.long #jak2_norm, #jak2_cheer1 ,#jak2_cheer2
.long #eugene_norm, #eugene_cheer1 ,#eugene_cheer2
.long #penacho_norm, #penacho_cheer1 ,#penacho_cheer2
.long #jenni_norm, #jenni_cheer1 ,#jenni_cheer2
**********
* SOPHIA
#SOPHIA_SPD equ 7
#sophia_norm
WL SPD_FOREVER,SOFI1
WL CANI_GOTO,#sophia_norm
#sophia_cheer1
WL #SOPHIA_SPD,SOFI2
WL #SOPHIA_SPD,SOFI3
WL #SOPHIA_SPD,SOFI4
WL #SOPHIA_SPD,SOFI3
WL #SOPHIA_SPD,SOFI2
WL CANI_GOTO,#sophia_norm
#sophia_cheer2
WL #SOPHIA_SPD,SOFI2
.WORD CANI_REPEAT,4
WL #SOPHIA_SPD,SOFI3
WL #SOPHIA_SPD,SOFI4
.WORD CANI_SHOULD_REPEAT
WL #SOPHIA_SPD,SOFI3
WL #SOPHIA_SPD,SOFI2
WL CANI_GOTO,#sophia_norm
**********
* MANCOW
#MANCOW_SPD equ 6
#mancow_norm
WL SPD_FOREVER,MANC1
WL CANI_GOTO,#mancow_norm
#mancow_cheer1
WL #MANCOW_SPD,MANC2
WL #MANCOW_SPD,MANC3
WL #MANCOW_SPD,MANC4
WL #MANCOW_SPD,MANC5
WL #MANCOW_SPD,MANC4
WL #MANCOW_SPD,MANC3
WL #MANCOW_SPD,MANC2
WL CANI_GOTO,#mancow_norm
#mancow_cheer2
WL #MANCOW_SPD,MANC2
.WORD CANI_REPEAT,6
WL #MANCOW_SPD,MANC3
WL #MANCOW_SPD,MANC4
WL #MANCOW_SPD,MANC5
WL #MANCOW_SPD,MANC4
.WORD CANI_SHOULD_REPEAT
WL #MANCOW_SPD,MANC3
WL #MANCOW_SPD,MANC2
WL CANI_GOTO,#mancow_norm
**********
* JAK
#JAK_SPD equ 7
#jak2_norm
WL SPD_FOREVER,JAK1
WL CANI_GOTO,#jak2_norm
#jak2_cheer1
WL #JAK_SPD,JAK2
WL #JAK_SPD,JAK3
WL #JAK_SPD,JAK4
WL #JAK_SPD+3,JAK5
WL #JAK_SPD,JAK4
WL #JAK_SPD,JAK3
WL #JAK_SPD,JAK2
WL CANI_GOTO,#jak2_norm
#jak2_cheer2
WL #JAK_SPD,JAK2
.WORD CANI_REPEAT,7
WL #JAK_SPD,JAK3
WL #JAK_SPD,JAK4
WL #JAK_SPD+3,JAK5
WL #JAK_SPD,JAK4
.WORD CANI_SHOULD_REPEAT
WL #JAK_SPD,JAK3
WL #JAK_SPD,JAK2
WL CANI_GOTO,#jak2_norm
**********
* EUGENE
#EUGENE_SPD equ 7
#eugene_norm
WL SPD_FOREVER,EUG1
WL CANI_GOTO,#eugene_norm
#eugene_cheer1
WL #EUGENE_SPD,EUG2
WL #EUGENE_SPD,EUG3
WL #EUGENE_SPD,EUG4
WL #EUGENE_SPD,EUG3
WL #EUGENE_SPD,EUG2
WL CANI_GOTO,#eugene_norm
#eugene_cheer2
WL #EUGENE_SPD,EUG2
.WORD CANI_REPEAT,3
WL #EUGENE_SPD,EUG3
WL #EUGENE_SPD,EUG4
.WORD CANI_SHOULD_REPEAT
WL #EUGENE_SPD,EUG3
WL #EUGENE_SPD,EUG2
WL CANI_GOTO,#eugene_norm
**********
* JENNI
#JENNI_SPD equ 7
#jenni_norm
WL SPD_FOREVER,JENI1
WL CANI_GOTO,#jenni_norm
#jenni_cheer1
WL #JENNI_SPD,JENI2
WL #JENNI_SPD,JENI3
WL #JENNI_SPD,JENI4
WL #JENNI_SPD,JENI3
WL #JENNI_SPD,JENI2
WL CANI_GOTO,#jenni_norm
#jenni_cheer2
WL #JENNI_SPD,JENI2
.WORD CANI_REPEAT,3
WL #JENNI_SPD,JENI3
WL #JENNI_SPD,JENI4
.WORD CANI_SHOULD_REPEAT
WL #JENNI_SPD,JENI3
WL #JENNI_SPD,JENI2
WL CANI_GOTO,#jenni_norm
**********
* PENACHO
#PENACHO_SPD equ 7
#penacho_norm
WL SPD_FOREVER,PENA1
WL CANI_GOTO,#penacho_norm
#penacho_cheer1
WL #PENACHO_SPD,PENA2
WL #PENACHO_SPD,PENA3
WL #PENACHO_SPD,PENA4
WL #PENACHO_SPD,PENA3
WL #PENACHO_SPD,PENA2
WL CANI_GOTO,#penacho_norm
#penacho_cheer2
.WORD CANI_REPEAT,4
WL #PENACHO_SPD,PENA2
WL #PENACHO_SPD,PENA3
WL #PENACHO_SPD,PENA4
WL #PENACHO_SPD,PENA3
.WORD CANI_SHOULD_REPEAT
WL #PENACHO_SPD,PENA2
WL CANI_GOTO,#penacho_norm
**********
* Alex
#ALEX_SPD equ 6
#alex_norm
WL SPD_FOREVER,ALEX1
WL CANI_GOTO,#alex_norm
#alex_cheer1
WL #ALEX_SPD,ALEX2
WL #ALEX_SPD,ALEX3
WL #ALEX_SPD,ALEX4
WL #ALEX_SPD,ALEX2
WL CANI_GOTO,#alex_norm
#alex_cheer2
WL #ALEX_SPD,ALEX2
WL #ALEX_SPD,ALEX3
.WORD CANI_REPEAT,7
WL #ALEX_SPD,ALEX4
WL #ALEX_SPD,ALEX3
.WORD CANI_SHOULD_REPEAT
WL #ALEX_SPD,ALEX2
WL CANI_GOTO,#alex_norm
**********
* Carlos
#CARLOS_SPD equ 7
#carlos_norm
WL SPD_FOREVER,CARLO1
WL CANI_GOTO,#carlos_norm
#carlos_cheer1
WL #CARLOS_SPD,CARLO2
WL #CARLOS_SPD,CARLO3
WL #CARLOS_SPD,CARLO4
WL #CARLOS_SPD,CARLO2
WL CANI_GOTO,#carlos_norm
#carlos_cheer2
WL #CARLOS_SPD,CARLO2
WL #CARLOS_SPD,CARLO3
WL #CARLOS_SPD,CARLO4
.WORD CANI_REPEAT,7
WL #CARLOS_SPD,CARLO3
WL #CARLOS_SPD,CARLO4
.WORD CANI_SHOULD_REPEAT
WL #CARLOS_SPD,CARLO2
WL CANI_GOTO,#carlos_norm
**********
* Dave
#DAVE_SPD equ 8
#dave_norm
WL SPD_FOREVER,DAVEMSK1
WL CANI_GOTO,#dave_norm
#dave_cheer1
WL #DAVE_SPD,DAVEMSK2
WL #DAVE_SPD,DAVEMSK3
WL #DAVE_SPD,DAVEMSK4
WL #DAVE_SPD,DAVEMSK3
WL #DAVE_SPD,DAVEMSK2
WL CANI_GOTO,#dave_norm
#dave_cheer2
.WORD CANI_REPEAT,7
WL #DAVE_SPD,DAVEMSK2
WL #DAVE_SPD,DAVEMSK3
.WORD CANI_SHOULD_REPEAT
WL #DAVE_SPD,DAVEMSK4
WL #DAVE_SPD,DAVEMSK3
WL #DAVE_SPD,DAVEMSK2
WL CANI_GOTO,#dave_norm
**********
* Dewey
#DEWEY_SPD equ 7
#dewey_norm
WL #DEWEY_SPD,DEWY1
.word CANI_RNDWAIT,TSEC*10
WL #DEWEY_SPD,DEWY2
WL #DEWEY_SPD,DEWY3
WL #DEWEY_SPD,DEWY4
WL #DEWEY_SPD,DEWY3
WL #DEWEY_SPD,DEWY2
WL CANI_GOTO,#dewey_norm
#dewey_cheer1
WL #DEWEY_SPD,DEWY1
WL #DEWEY_SPD,DEWY2
WL #DEWEY_SPD,DEWY3
WL #DEWEY_SPD,DEWY4
WL #DEWEY_SPD,DEWY3
WL #DEWEY_SPD,DEWY2
WL CANI_GOTO,#dewey_norm
#dewey_cheer2
WL #DEWEY_SPD,DEWY1
.WORD CANI_REPEAT,7
WL #DEWEY_SPD,DEWY2
WL #DEWEY_SPD,DEWY3
WL #DEWEY_SPD,DEWY4
WL #DEWEY_SPD,DEWY3
WL #DEWEY_SPD,DEWY2
WL #DEWEY_SPD,DEWY3
WL #DEWEY_SPD,DEWY4
WL #DEWEY_SPD,DEWY3
.WORD CANI_SHOULD_REPEAT
WL #DEWEY_SPD,DEWY2
WL CANI_GOTO,#dewey_norm
**********
* George
#GEORGE_SPD equ 8
#george_norm
WL #GEORGE_SPD,GEORGE1
.word CANI_RNDWAIT,TSEC*4
WL #GEORGE_SPD,GEORGE2
WL #GEORGE_SPD,GEORGE3
WL #GEORGE_SPD,GEORGE4
WL #GEORGE_SPD,GEORGE3
WL #GEORGE_SPD,GEORGE2
WL CANI_GOTO,#george_norm
#george_cheer1
.WORD CANI_REPEAT,2
WL #GEORGE_SPD,GEORGE1
WL #GEORGE_SPD,GEORGE2
WL #GEORGE_SPD,GEORGE3
WL #GEORGE_SPD,GEORGE4
WL #GEORGE_SPD,GEORGE3
WL #GEORGE_SPD,GEORGE2
.WORD CANI_SHOULD_REPEAT
WL CANI_GOTO,#george_norm
**********
* Jake
#JAKE_SPD equ 8
#jake_norm
WL SPD_FOREVER,JAKE1
WL CANI_GOTO,#jake_norm
#jake_cheer1
WL #JAKE_SPD,JAKE2
WL #JAKE_SPD,JAKE3
WL #JAKE_SPD,JAKE4
WL #JAKE_SPD,JAKE2
WL CANI_GOTO,#jake_norm
#jake_cheer2
WL #JAKE_SPD,JAKE2
.WORD CANI_REPEAT,4
WL #JAKE_SPD,JAKE3
WL #JAKE_SPD,JAKE4
.WORD CANI_SHOULD_REPEAT
WL #JAKE_SPD,JAKE2
WL CANI_GOTO,#jake_norm
**********
* Jamie
#JAMIE_SPD equ 5
#jamie_norm
WL SPD_FOREVER,JAMIE1
WL CANI_GOTO,#jamie_norm
#jamie_cheer1
WL #JAMIE_SPD,JAMIE2
WL #JAMIE_SPD,JAMIE3
WL #JAMIE_SPD,JAMIE4
WL #JAMIE_SPD,JAMIE5
WL #JAMIE_SPD,JAMIE6
WL CANI_GOTO,#jamie_norm
#jamie_cheer2
.WORD CANI_REPEAT,7
WL #JAMIE_SPD,JAMIE2
WL #JAMIE_SPD,JAMIE3
.WORD CANI_SHOULD_REPEAT
WL #JAMIE_SPD,JAMIE4
WL #JAMIE_SPD,JAMIE5
WL #JAMIE_SPD,JAMIE6
WL CANI_GOTO,#jamie_norm
**********
* Jason
#JASON_SPD equ 6
#jason_norm
WL SPD_FOREVER,SERG1
WL CANI_GOTO,#jason_norm
#jason_cheer1
WL #JASON_SPD,SERG2
WL #JASON_SPD,SERG3
WL #JASON_SPD,SERG4
WL #JASON_SPD,SERG5
WL #JASON_SPD,SERG4
WL #JASON_SPD,SERG3
WL #JASON_SPD,SERG2
WL CANI_GOTO,#jason_norm
#jason_cheer2
WL #JASON_SPD,SERG2
WL #JASON_SPD,SERG3
.WORD CANI_REPEAT,7
WL #JASON_SPD,SERG4
WL #JASON_SPD,SERG5
WL #JASON_SPD,SERG4
WL #JASON_SPD,SERG3
.WORD CANI_SHOULD_REPEAT
WL #JASON_SPD,SERG2
WL CANI_GOTO,#jason_norm
**********
* Jason crowd
#JCROWD_SPD equ 8
#jasoncrd_norm
WL SPD_FOREVER,JASONCRD1
WL CANI_GOTO,#jasoncrd_norm
#jasoncrd_cheer1
WL #JCROWD_SPD,JASONCRD2
WL #JCROWD_SPD,JASONCRD3
WL #JCROWD_SPD,JASONCRD4
WL #JCROWD_SPD,JASONCRD5
WL CANI_GOTO,#jasoncrd_norm
#jasoncrd_cheer2
WL #JCROWD_SPD,JASONCRD2
WL #JCROWD_SPD,JASONCRD3
.WORD CANI_REPEAT,7
WL #JCROWD_SPD,JASONCRD4
WL #JCROWD_SPD,JASONCRD5
.WORD CANI_SHOULD_REPEAT
WL CANI_GOTO,#jasoncrd_norm
**********
* JohnC
#JOHNC_SPD equ 8
#johnc_norm
WL SPD_FOREVER,JOHNC1
WL CANI_GOTO,#johnc_norm
#johnc_cheer1
WL #JOHNC_SPD,JOHNC2
WL #JOHNC_SPD,JOHNC3
WL #JOHNC_SPD*3,JOHNC4
WL #JOHNC_SPD,JOHNC3
WL #JOHNC_SPD,JOHNC2
WL CANI_GOTO,#johnc_norm
#johnc_cheer2
WL #JOHNC_SPD,JOHNC2
WL #JOHNC_SPD,JOHNC3
WL #JOHNC_SPD,JOHNC4
WL #JOHNC_SPD,JOHNC3
WL #JOHNC_SPD*3,JOHNC4
WL #JOHNC_SPD,JOHNC3
WL #JOHNC_SPD,JOHNC2
WL CANI_GOTO,#johnc_norm
**********
* Josh
#JOSH_SPD equ 7
#josh_norm
WL SPD_FOREVER,JOSH1
WL CANI_GOTO,#josh_norm
#josh_cheer1
WL #JOSH_SPD,JOSH2
WL #JOSH_SPD,JOSH3
WL #JOSH_SPD,JOSH4
WL #JOSH_SPD,JOSH3
WL #JOSH_SPD,JOSH4
WL #JOSH_SPD,JOSH2
WL CANI_GOTO,#josh_norm
#josh_cheer2
WL #JOSH_SPD,JOSH2
WL #JOSH_SPD,JOSH3
WL #JOSH_SPD,JOSH4
.WORD CANI_REPEAT,6
WL #JOSH_SPD,JOSH3
WL #JOSH_SPD,JOSH4
.WORD CANI_SHOULD_REPEAT
WL #JOSH_SPD,JOSH2
WL CANI_GOTO,#josh_norm
**********
* Joy (side crowd)
#JOY_SPD equ 8
#joy_norm
WL SPD_FOREVER,JOY1
WL CANI_GOTO,#joy_norm
#joy_cheer1
WL #JOY_SPD,JOY1
WL #JOY_SPD,JOY2
WL #JOY_SPD,JOY3
WL #JOY_SPD,JOY4
WL #JOY_SPD,JOY5
WL #JOY_SPD,JOY4
WL #JOY_SPD,JOY3
WL CANI_GOTO,#joy_norm
**********
* Marine
#MARINE_SPD equ 8
#marine_norm
WL SPD_FOREVER,MARINE1
WL CANI_GOTO,#marine_norm
#marine_cheer1
WL #MARINE_SPD,MARINE2
WL #MARINE_SPD,MARINE3
WL #MARINE_SPD,MARINE4
WL #MARINE_SPD,MARINE2
WL CANI_GOTO,#marine_norm
#marine_cheer2
WL #MARINE_SPD,MARINE2
.WORD CANI_REPEAT,6
WL #MARINE_SPD,MARINE3
WL #MARINE_SPD,MARINE4
.WORD CANI_SHOULD_REPEAT
WL #MARINE_SPD,MARINE3
WL #MARINE_SPD,MARINE2
WL CANI_GOTO,#marine_norm
**********
* Mark
#MARK_SPD equ 8
#mark_norm
WL SPD_FOREVER,TURMEL1
WL CANI_GOTO,#mark_norm
#mark_cheer1
WL #MARK_SPD,TURMEL2
WL #MARK_SPD,TURMEL3
WL 20,TURMEL4
WL #MARK_SPD,TURMEL3
WL #MARK_SPD,TURMEL2
WL CANI_GOTO,#mark_norm
**********
* Newc
#NEWC_SPD equ 9
#newc_norm
WL SPD_FOREVER,NEWCOM1
WL CANI_GOTO,#newc_norm
#newc_cheer1
WL #NEWC_SPD,NEWCOM2
WL #NEWC_SPD,NEWCOM3
WL #NEWC_SPD,NEWCOM4
WL #NEWC_SPD,NEWCOM3
WL #NEWC_SPD,NEWCOM4
WL #NEWC_SPD,NEWCOM3
WL #NEWC_SPD,NEWCOM2
WL CANI_GOTO,#newc_norm
#newc_cheer2
WL #NEWC_SPD,NEWCOM2
.WORD CANI_REPEAT,6
WL #NEWC_SPD,NEWCOM3
WL #NEWC_SPD,NEWCOM4
.WORD CANI_SHOULD_REPEAT
WL #NEWC_SPD,NEWCOM2
WL CANI_GOTO,#newc_norm
**********
* Sal
#SAL_SPD equ 8
#sal_norm
WL SPD_FOREVER,SAL1
WL CANI_GOTO,#sal_norm
#sal_cheer1
WL #SAL_SPD,SAL2
WL #SAL_SPD,SAL3
WL #SAL_SPD,SAL4
WL #SAL_SPD,SAL3
WL #SAL_SPD,SAL4
WL #SAL_SPD,SAL3
WL #SAL_SPD,SAL2
WL CANI_GOTO,#sal_norm
#sal_cheer2
WL #SAL_SPD,SAL2
.WORD CANI_REPEAT,7
WL #SAL_SPD,SAL3
WL #SAL_SPD,SAL4
.WORD CANI_SHOULD_REPEAT
WL #SAL_SPD,SAL2
WL CANI_GOTO,#sal_norm
**********
* Sheridan
#SHERIDAN_SPD equ 8
#sheridan_norm
WL 1,SHERID1
.word CANI_RNDWAIT,TSEC*20
WL #SHERIDAN_SPD,SHERID6
WL #SHERIDAN_SPD,SHERID7
WL #SHERIDAN_SPD*2,SHERID8
WL #SHERIDAN_SPD,SHERID7
WL #SHERIDAN_SPD,SHERID6
WL CANI_GOTO,#sheridan_norm
#sheridan_cheer1
WL #SHERIDAN_SPD,SHERID1
WL #SHERIDAN_SPD,SHERID2
WL #SHERIDAN_SPD,SHERID3
WL #SHERIDAN_SPD,SHERID4
WL #SHERIDAN_SPD,SHERID5
WL #SHERIDAN_SPD,SHERID6
WL #SHERIDAN_SPD,SHERID7
WL #SHERIDAN_SPD*2,SHERID8
WL #SHERIDAN_SPD,SHERID7
WL #SHERIDAN_SPD,SHERID6
WL CANI_GOTO,#sheridan_norm
#sheridan_cheer2
WL #SHERIDAN_SPD,SHERID1
WL #SHERIDAN_SPD,SHERID2
WL #SHERIDAN_SPD,SHERID3
.WORD CANI_REPEAT,3
WL #SHERIDAN_SPD,SHERID4
WL #SHERIDAN_SPD,SHERID5
.WORD CANI_SHOULD_REPEAT
WL CANI_GOTO,#sheridan_norm
**********
* Side crowd
#SDCRD_SPD equ 8
#side1_norm
WL SPD_FOREVER,SDCRD1A
WL CANI_GOTO,#side1_norm
#side1_cheer1
WL #SDCRD_SPD,SDCRD2A
WL #SDCRD_SPD,SDCRD3A
WL #SDCRD_SPD,SDCRD4A
WL #SDCRD_SPD,SDCRD3A
WL #SDCRD_SPD,SDCRD2A
WL CANI_GOTO,#side1_norm
#side2_norm
WL SPD_FOREVER,SDCRD1B
WL CANI_GOTO,#side2_norm
#side2_cheer1
WL #SDCRD_SPD,SDCRD2B
WL #SDCRD_SPD,SDCRD3B
WL #SDCRD_SPD,SDCRD4B
WL #SDCRD_SPD,SDCRD3B
WL #SDCRD_SPD,SDCRD2B
WL CANI_GOTO,#side2_norm
#side3_norm
WL SPD_FOREVER,SDCRD1C
WL CANI_GOTO,#side3_norm
#side3_cheer1
WL #SDCRD_SPD,SDCRD2C
WL #SDCRD_SPD,SDCRD3C
WL #SDCRD_SPD,SDCRD4C
WL #SDCRD_SPD,SDCRD3C
WL #SDCRD_SPD,SDCRD2C
WL CANI_GOTO,#side3_norm
**********
* Tobias
#TOBIAS_SPD equ 7
#tobias_norm
WL SPD_FOREVER,TOBIAS1
WL CANI_GOTO,#tobias_norm
#tobias_cheer1
WL #TOBIAS_SPD,TOBIAS2
WL #TOBIAS_SPD,TOBIAS3
WL #TOBIAS_SPD,TOBIAS4
WL #TOBIAS_SPD,TOBIAS2
WL CANI_GOTO,#tobias_norm
#tobias_cheer2
WL #TOBIAS_SPD,TOBIAS2
.WORD CANI_REPEAT,7
WL #TOBIAS_SPD,TOBIAS3
WL #TOBIAS_SPD,TOBIAS4
.WORD CANI_SHOULD_REPEAT
WL #TOBIAS_SPD,TOBIAS2
WL CANI_GOTO,#tobias_norm
**********
* Tony
#TONY_SPD equ 7
#tony_norm
WL SPD_FOREVER,CRAZY1
WL CANI_GOTO,#tony_norm
#tony_cheer1
WL #TONY_SPD,CRAZY2
WL #TONY_SPD,CRAZY3
WL #TONY_SPD,CRAZY4
WL #TONY_SPD,CRAZY5
WL #TONY_SPD,CRAZY4
WL #TONY_SPD,CRAZY5
WL #TONY_SPD,CRAZY4
WL #TONY_SPD,CRAZY3
WL #TONY_SPD,CRAZY2
WL CANI_GOTO,#tony_norm
#tony_cheer2
WL #TONY_SPD,CRAZY2
WL #TONY_SPD,CRAZY3
.WORD CANI_REPEAT,4
WL #TONY_SPD,CRAZY4
WL #TONY_SPD,CRAZY5
WL #TONY_SPD,CRAZY4
WL #TONY_SPD,CRAZY3
WL #TONY_SPD,CRAZY4
WL #TONY_SPD,CRAZY5
.WORD CANI_SHOULD_REPEAT
WL #TONY_SPD,CRAZY4
WL #TONY_SPD,CRAZY3
WL #TONY_SPD,CRAZY2
WL CANI_GOTO,#tony_norm
**********
* Tony crowd
#TONYC_SPD equ 8
#tonycrd_norm
WL SPD_FOREVER,TONYCRD1
WL CANI_GOTO,#tonycrd_norm
#tonycrd_cheer1
WL #TONYC_SPD,TONYCRD2
WL #TONYC_SPD,TONYCRD3
WL #TONYC_SPD,TONYCRD4
WL #TONYC_SPD,TONYCRD5
WL CANI_GOTO,#tonycrd_norm
**********
* Vogel
#VOGEL_SPD equ 8
#vogel_norm
WL SPD_FOREVER,VOGEL1
WL CANI_GOTO,#vogel_norm
#vogel_cheer1
WL #VOGEL_SPD,VOGEL2
WL #VOGEL_SPD,VOGEL3
WL #VOGEL_SPD,VOGEL4
WL #VOGEL_SPD,VOGEL3
WL #VOGEL_SPD,VOGEL2
WL CANI_GOTO,#vogel_norm
#vogel_cheer2
WL #VOGEL_SPD,VOGEL2
.WORD CANI_REPEAT,7
WL #VOGEL_SPD,VOGEL3
WL #VOGEL_SPD,VOGEL4
.WORD CANI_SHOULD_REPEAT
WL #VOGEL_SPD,VOGEL2
WL CANI_GOTO,#vogel_norm
SUBR DO_CROWD_CHEER
MOVK C_OVERIDE|C_LONG,A3
CLR A4
*****************************************************************************
* Causes the crowd to cheer.
;INPUT A3 = BIT 0 1=LONG OR 0=SHORT TYPE OF ANIMATION
; BIT 1 1=OVERRIDE WHAT IS ALREADY GOING ON OR NOT
; BIT 2 1=DO RANDOM NUMBER OF PEOPLE IN AUDIENCE
; A4 = RNDPER VALUE IF BIT 2 SET IN A3
SUBR crowd_cheer
CLR A7
BTST B_RANDOM,A3
JRZ NO_RANDOMNESS
MOVE A4,A7
NO_RANDOMNESS
movi CROWDDATA,a4
movi NUMCROWD,a5
movk 1,a6
#loop
MOVE *A4(CHEER1),A1,L
CMPI #side2_cheer1,A1
JREQ DO_NEXT_PERSON
CMPI #side3_cheer1,A1
JREQ DO_NEXT_PERSON
CMPI #dave_cheer1,A1
JREQ DO_NEXT_PERSON
MOVE A7,A0
JRZ DO_THEM_ALL
CALLA RNDPER
JRLS DO_NEXT_PERSON
DO_THEM_ALL
BTST B_OVERRIDE,A3
JRNZ JUST_DO_IT_ANYWAY
MOVE *A4(CHEER1),A8,L
MOVE *A4(SCPTR),A9,L
CMP A8,A9
JRGE DO_NEXT_PERSON
JUST_DO_IT_ANYWAY
move *a4(CHEER1),*a4(SCPTR),L
BTST B_L_OR_S,A3
JRZ OKAY_DO_SHORT
move *a4(CHEER2),*a4(SCPTR),L
OKAY_DO_SHORT
move a6,*a4(TIME),W
;MAKE SURE WE DO ALL THE SIDE CROWD AT ONCE
move *a4(CHEER1),A1,L
CMPI #side1_cheer1,A1
JRNE DO_NEXT_PERSON
addi BSIZE,a4
move *a4(CHEER1),*a4(SCPTR),L
move a6,*a4(TIME),W
addi BSIZE,a4
move *a4(CHEER1),*a4(SCPTR),L
move a6,*a4(TIME),W
addi BSIZE*2,a4
move *a4(CHEER1),*a4(SCPTR),L
move a6,*a4(TIME),W
;a5 is the loop counter...gotta dec it any time we add to a4.
subk 4,a5
DO_NEXT_PERSON
addi BSIZE,a4
dsj a5,#loop
CALLA START_FLASHES
rets
******************************************************************************
.end