************************************************************** * * 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