************************************************************************** * * * VIDEO GAME PROJECT: HIGH IMPACT FOOTBALL * * * * PROGRAMMER: EDWARD J. BOON * * ARTIST: JOHN R. NEWCOMER * * SOUNDS: * * * * MODULE: FBAMODE.ASM -- ATTRACT MODE * * * * COPYRIGHT (C) 1989 WILLIAMS ELECTRONICS GAMES, INC. * * * ************************************************************************** .FILE 'FBAMODE.ASM' .TITLE " <<< FOOTBALL ATTRACT MODE CODE >>> " .WIDTH 132 .OPTION B,D,L .MNOLIST * * GET THE SYSTEM STUFF * .INCLUDE "MPROCEQU.ASM" ;MPROC equates .INCLUDE "DISPEQU.ASM" ;Display processor equates .INCLUDE "SYSEQU.ASM" ;SYS.INC and GSP.INC .INCLUDE "MACROS.HDR" ;Macros .INCLUDE "MAINEQU.ASM" .INCLUDE "IMGTBL.GLO" .INCLUDE FIELDEQU.ASM .INCLUDE "STRING.H" .INCLUDE DIAGAUDN.ASM .REF PRINT_DMA,PRINT_DMA_XY,BACKGROUND .REF PRINT_OBJ,SHADOW_PRINT,AUTOSCR .REF WIPEOUT,COIN_PAGE,CRED_P,PLAYTABS .REF LM_SETUP,PRINTF,CHANGE_OID,GET_CSTR .REF SETUP_OFFENSE,SETUP_DEFENSE,SETWORLD,BALL_IN_PLAY .REF START_PLAYERS,COLSCAN,PLAY_INIT .REF GET_LOGO,MIDDLE_OPEN,NOSOUNDS,POST_PLAY ;CAT_DUMP .REF XFER_ALL_TO_A7 ***************************** (SELF PLAY CODE) .REF AMODE_START ***************************** (SELF PLAY CODE) .DEF AMODE .EVEN .TEXT ************************************************************************** * * * ATTRACT MODE ENTRY POINT * * * ************************************************************************** AMODE CLR A0 MOVE A0,@P1STAT,W MOVE A0,@P2STAT,W MOVE A0,@P3STAT,W MOVE A0,@P4STAT,W MOVI GS_AMODE,A0 MOVE A0,@GSTATE,W ; GAME STATE = ATTRACT MODE CALLA WIPEOUT MOVI RGB_BLACK,A0 MOVE A0,@IRQSKYE,W ; SET BACKGROUND COLOR **************************** (SELF PLAY CODE) JRUC AM0 SLEEP >80 MOVK 1,A0 MOVE A0,@AUTOPLAY,W JAUC AMODE_START ***************************** (SELF PLAY CODE) AM0 MOVK 5,A0 MOVE A0,*A13(P_GCOUNT),W ; # OF LOOPS TILL NO SOUNDS AM1 CALLA CLR_SCRN JSRP FIELD_TOUR CALLA GANGEL CALLA WIPEOUT JSRP RUN_A_PLAY CALLA GANGEL CALLA WIPEOUT JSRP COIN_PAGE CALLA GANGEL CALLA WIPEOUT MOVE *A13(P_GCOUNT),A0,W JREQ AM1 DEC A0 MOVE A0,*A13(P_GCOUNT),W JRNE AM1 MOVK 1,A0 MOVE A0,@NOSOUND,W ; NO MORE SOUNDS PLEASE. JRUC AM1 ************************************************************************** * * * RUN A PLAY * * * * Runs a random play during the attract mode. * * * ************************************************************************** RUN_A_PLAY MOVE @NOSOUND,A1,W ; ARE WE ALLOWED ?? JRNE RUNP0 MOVI >C7,A3 CALLA SEND_CODE_A3 ; PLAY TUNE IF LEGAL RUNP0 CLR A0 MOVE A0,@SCRNTL,L MOVE A0,@SCRNLR,L MOVK 15,A0 CALLA RANDU DEC A0 MOVE A0,@T0TEAM,W MOVE A0,A1 RUNP1 MOVK 15,A0 CALLA RANDU DEC A0 CMP A0,A1 JREQ RUNP1 ; DONT PICK SAME TEAM MOVE A0,@T1TEAM,W MOVI FIFTY_YARD,A0 MOVE A0,@LINEOFSC,W ; SET LINE OF SCRIMMAGE MOVE A0,@STLOS,W MOVE @OFFENSE,A0,W XORI 1,A0 MOVE A0,@OFFENSE,W ; FLIP OFFENSE !! MOVK 4,A0 CALLA RANDU MOVE A0,@DOWNNUM,W ; RANDOM DOWN # MOVK 4,A0 CALLA RANDU DEC A0 MOVE A0,@MENUPIK0,W MOVE A0,@MENUPIK1,W ; RANDOM PLAY CHOICE CALLA PLAY_INIT CALLA PLAYTABS ; SETUP OFFPTBL/DEFPTBL CALLA SETWORLD CREATE PID_AMODE,MIDDLE_OPEN SLEEP 1 CREATE PID_AMODE,T0_SLIDE CREATE PID_AMODE,T1_SLIDE MOVI AMODE_VERSUS_INIT,A14 CALLA INITOBJ MOVE A8,A0 CALLA INSOBJ2 SLEEP 2 MOVK 10,A11 CREATE PID_AMODE,RGBSTUFF ; FLASH "VERSUS" SLEEP >C0 ; WAIT FOR LINEUP MOVI OID_AMODE,A0 CALLA DALLOBJ ; GET RID OF LOGOS/VERSUS CALLA START_PLAYERS ; XFER DUDES PROCESSES MOVI OID_QB,A0 CALLA FINDOMAN ; FIND THE QB CALLA BALL_IN_PLAY ; PUT THE BALL IN PLAY CREATE PID_COLSCAN,COLSCAN ; COLLISION SCANNER CREATE PID_BCTRACK,BC_TRACK ; BALL CARRIER CLR A0 MOVE A0,@PLAYRES,W ; NO PLAY RESULT SO FAR MOVI OID_MSGLET,A0 CALLA DALLOBJ ; ERASE LETTERS MOVI PID_QB_YELL,A0 CALLA DALLPRC ; QB = SHUT UP * * WAIT FOR ATTRACT MODE PLAY TO END * MOVI 13*20,A10 ; WATCH "CAT" TIME LIMIT RUNP5 SLEEP 5 MOVE @PLAYRES,A0,W JRNE RUNP7 DSJS A10,RUNP5 ; I'LL WAIT, BUT NOT FOREVER CLR A0 MOVE A0,@ERRNUM,W ; DONT CONFUSE WITH BOONTRAP MOVI AUDWCATS,A0 CALLA AUD1 ; AUDIT THIS !! .IF B_DEBUG JAUC $ ; IN DEBUGGER ---> CALL ATTENTION TO ! .ENDIF .IF PRINTER ; CALLA CAT_DUMP .ENDIF RUNP7 MOVI PID_COLSCAN,A0 CALLA DALLPRC MOVI PID_SCR,A0 CALLA DALLPRC ; KILL SCROLLER CLR A1 MOVE A1,@SCROLLX,L MOVE A1,@SCROLLY,L MOVI POST_PLAY,A7 ; A7 = EVERYONE XFERED HERE CALLA XFER_ALL_TO_A7 SLEEP >20 MOVI >8000,A0 MOVE A0,A1 CALLA KILALL ; KILL ALL PROCS (EXCEPT INDESTUCTABLES) MOVI FADEALL,A0 CALLA FADEOUT ; FADE EVERYTHING TO BLACK SLEEP >30 CALLA NOSOUNDS ; SHUT UP RETP FADEALL .LONG 0 T0_SLIDE MOVI AMODEL0_INIT,A14 CALLA INITOBJ MOVE @T0TEAM,A1,W CALLA GET_LOGO MOVE *A1(16*6),A0,L CALLA GETFPAL MOVE A0,*A8(OPAL),W ; TEAMS PALETTE CALLA ANI MOVE A8,A0 CALLA INSOBJ2 MOVI >30000,A0 MOVE A0,*A8(OXVEL),L SLEEP >3C CLR A0 MOVE A0,*A8(OXVEL),L DIE T1_SLIDE MOVI AMODEL1_INIT,A14 CALLA INITOBJ MOVE @T1TEAM,A1,W CALLA GET_LOGO MOVE *A1(16*6),A0,L CALLA GETFPAL MOVE A0,*A8(OPAL),W ; TEAMS PALETTE CALLA ANI MOVE A8,A0 CALLA INSOBJ2 MOVI ->30000,A0 MOVE A0,*A8(OXVEL),L SLEEP >3D CLR A0 MOVE A0,*A8(OXVEL),L DIE AMODEL0_INIT .LONG LA,0 .WORD 0,DMAWNZ|M_NOSCROLL,OID_AMODE .WORD -120,26,0 AMODEL1_INIT .LONG LA,0 .WORD 0,DMAWNZ|M_NOSCROLL,OID_AMODE .WORD SCRRGT,26,0 AMODE_VERSUS_INIT .LONG VERSUS,ICN3_PAL .WORD 0,DMAWNZ|M_NOSCROLL,OID_AMODE .WORD >BB .WORD 32 .WORD 0 ************************************************************************** * * * SHOW TEAMS * * * * Will put all of the teams on the screen along with the field in the * * background. * * * ************************************************************************** ;SHOW_TEAMS ; MOVI AMODE_TEXT_INIT,A14 ; MOVI >29,A0 ; CALLA PRINT_OBJ ; TEXT = A4 --> A7 ; ; MOVE A4,A5 ; MOVI AMODE_TEXT_INIT,A14 ; MOVI 00020002H,A6 ; CALLA SHADOW_PRINT ; MOVE @OBJLST3,A0,L ; MOVE A0,*A7(OLINK),L ; LAST CHAR ----> OBJLST3 ; MOVE A5,@OBJLST3,L ; OBJLST3 ---> 1ST CHAR ; MOVK 3,A11 ; CREATE PID_AMODE,RGBSTUFF ;* ;* BACKGROUND THING A MA BOB ;* ; MOVK 4,A0 ; CALLA GETBLIMP ; TEAM SELECT MODULE ; CALLA A5A6OL1 ; ADD TO "OBJLST1" ; ; MOVI 9,A9 ; MOVI 60,A10 ; MOVI ATEAM_LOGOS,A11 ;SHOWT0 MOVK 5,A7 ; 5 ROWS ;SHOWT1 MOVI LOGO_INIT,A14 ; CALLA INITOBJ ; GET AN OBJECT ; MOVE *A11+,A1,L ; A1 = OIMG ; CALLA ANI ; MOVE *A11+,A0,L ; CALLA SWPAL ; MOVE A8,A0 ; ; MOVE A9,*A8(OXPOS),W ; MOVE A10,*A8(OYPOS),W ; CALLA INSOBJ ; ADDI 35,A10 ; DSJS A7,SHOWT1 ; SLEEP 2 ; MOVI 60,A10 ; ADDI >80,A9 ; CMPI (>60*3)+5,A9 ; JRLT SHOWT0 ; ; SLEEP >40*8 ; JRUC AMODE_EXIT ; ; ; AMODE_TEXT_INIT .LONG FON15A,boonpal .WORD 0,DMACNZ|M_NOSCROLL,OID_AMODE .WORD 0,0,0 ; ; ;ATEAM_LOGOS ; .LONG LA,LA_PAL ; .LONG DENVER,DNVR_PAL ; .LONG SANFRN,SANF_PAL ; .LONG MIAMI,MIAM_PAL ; .LONG WASH,WASH_PAL ; .LONG CHICAGO,CHGO_PAL ; .LONG TEXAS,TEX_PAL ; .LONG PITTSBURGH,PITT_PAL ; .LONG DETROIT,DETR_PAL ; .LONG NEWYRK,NYC_PAL ; .LONG AFRICA,AFRC_PAL ; .LONG CANADA,CANA_PAL ; .LONG EUROPA,EURO_PAL ; .LONG KANSAS,KANS_PAL ; .LONG ATLANTA,ATLN_PAL ; ; ;LOGO_INIT ; .LONG LA,boonpal ; .WORD 0,DMAWNZ|M_NOSCROLL,OID_AMODE ; .WORD 0,0,0 ; ;LA_INIT ; .LONG LA,LA_PAL ; .WORD 0,DMAWNZ|M_NOSCROLL,OID_AMODE ; .WORD >40,>30,0 ; ;DENVER_INIT ; .LONG DENVER,DNVR_PAL ; .WORD 0,DMAWNZ|M_NOSCROLL,OID_AMODE ; .WORD >40,>58,0 ; ;SF_INIT ; .LONG SANFRN,SANF_PAL ; .WORD 0,DMAWNZ|M_NOSCROLL,OID_AMODE ; .WORD >40,>80,0 ; ;MIAMI_INIT ; .LONG MIAMI,MIAM_PAL ; .WORD 0,DMAWNZ|M_NOSCROLL,OID_AMODE ; .WORD >40,>A8,0 ; ;WASH_INIT ; .LONG WASH,WASH_PAL ; .WORD 0,DMAWNZ|M_NOSCROLL,OID_AMODE ; .WORD >40,>D0,0 ; ;* ;* COLUMN #2 ;* ;CHICAGO_INIT ; .LONG CHICAGO,CHGO_PAL ; .WORD 0,DMAWNZ|M_NOSCROLL,OID_AMODE ; .WORD >C0,>30,0 ; ;DALLAS_INIT ; .LONG TEXAS,TEX_PAL ; .WORD 0,DMAWNZ|M_NOSCROLL,OID_AMODE ; .WORD >C0,>58,0 ; ;PITT_INIT ; .LONG PITTSBURGH,PITT_PAL ; .WORD 0,DMAWNZ|M_NOSCROLL,OID_AMODE ; .WORD >C0,>80,0 ; ;DETROIT_INIT ; .LONG DETROIT,DETR_PAL ; .WORD 0,DMAWNZ|M_NOSCROLL,OID_AMODE ; .WORD >C0,>A8,0 ; ;NY_INIT ; .LONG NEWYRK,NYC_PAL ; .WORD 0,DMAWNZ|M_NOSCROLL,OID_AMODE ; .WORD >C0,>D0,0 ; ************************************************************************** * * * FIELD TOUR * * * * This part of the attract mode scans the entire field with the game * * logo overlaying the screen. * * * ************************************************************************** FIELD_TOUR CREATE PID_AMODE,BACKGROUND ; MAKE A BACKGROUND UPDATE DUDE JSRP SHOW_CREDITS CLR A0 MOVI AMODE_TEXT_INIT,A14 CALLA PRINT_OBJ ; COPYRIGHT MESSAGE MOVE A4,A5 MOVE A7,A6 CALLA A5A6OL1 MOVK 2,A0 CALLA GETBLIMP ; A5 = LOGO MODULE OBJECT LIST CALLA A5A6OL2 ; PUT ON OBJECT LIST #1 MOVK 4,A11 CREATE PID_AMODE,RGBSTUFF ; FLASH "CREDITS" MOVK 2,A9 FTOUR1 MOVI LGOAL_OUT_X-80,A0 MOVE A0,@WORLDTLX+16,W ; STARTING X MOVI TOP_SIDELINE-215,A0 MOVE A0,@WORLDTLY+16,W ; STARTING Y * * PAN THROUGH THE CROWD * MOVI RGOAL_OUT_X+80-SCRRGT,A1 MOVE @WORLDTLY+16,A3 MOVK 2,A4 JSRP AUTOSCR ; SCROLLER DUDE * * TO MIDDLE OF FIELD * MOVE @WORLDTLX+16,A1 SUBI >100,A1 MOVE @WORLDTLY+16,A3 ADDI >100,A3 MOVK 2,A4 JSRP AUTOSCR ; SCROLLER DUDE * * TO LEFT ENDZONE * MOVI LGOAL_OUT_X->50,A1 MOVE @WORLDTLY+16,A3 MOVK 2,A4 JSRP AUTOSCR ; SCROLLER DUDE SLEEP >80 AMODE_EXIT MOVI OID_AMODE,A0 MOVE A0,A1 CALLA KILL_OCP CALLA DELALLB MOVI PID_AMODE,A0 MOVE A0,A1 CALLA KILALL ; KILL ANYONE I SPAWNED OFF RETP * * DELETE ALL BACKGROUND OBJECTS (AND THEIR PALETTES) * DELALLB MOVE @BAKLST,A0,L ; ARE THERE ANY BACKGROUND OBJ ? JREQ PS2 ; NO ---> SKIP MOVE A0,A1 ; A1 = OBJECT #1 CLR A0 MOVE A0,@BAKLST,L PS1 MOVE *A1,A3,L ; A3 = NEXT IN LINE MOVE *A1(OPAL),A0,W CALLA FREEPAL ; DECREMENT PALETTE COUNTER MOVE @OFREE,A2,L MOVE A1,@OFREE,L ; PUT OBJECT ON FREE LIST MOVE A2,*A1,L MOVE A3,A1 JRNE PS1 PS2 RETS * * STARS ALONG THE EDGES * CLR A5 ; INITIALIZE COLOR POINTER DEC A5 MOVI >10,A2 ; STARTING X POSITION MOVI >15,A3 ; STARTING Y POSITION MOVI 13,A6 ; STAR COUNT AM2 CALLR DO_A_STAR ADDI >25,A2 DEC A6 JRNE AM2 SUBI >25,A2 MOVI 10,A6 ; STAR COUNT AM3 ADDI >22,A3 CALLR DO_A_STAR DEC A6 JRNE AM3 MOVI 12,A6 ; STAR COUNT AM4 SUBI >25,A2 CALLR DO_A_STAR DEC A6 JRNE AM4 MOVI 9,A6 ; STAR COUNT AM5 SUBI >22,A3 CALLR DO_A_STAR DEC A6 JRNE AM5 MOVI boonpal,a10 ; PALETTE TO CYCLE MOVI >01040900,A11 ; PARAMETERS FOR CYCLE DUDE CREATE PID_AMODE,CYCLERF CREATE PID_AMODE,TWINKLE SLEEP >40*15 CLR A1 NOT A1 MOVI PID_AMODE,A0 CALLA KILALL ; KILL AMODE PROCS CALLA MYOINIT ; BLOW OUT OBJECT SYSTEM CALLA SCRCLR ; JSRP HSTD ; MOVK 1,A0 ; MOVE A0,@GAMERASE,W ; GAME ERASE = ON ; SLEEP >20 CALLR GAME_ERASE_OFF JSRP LITTLE_FADE CALLR GAME_ERASE_ON SLEEP 2 CALLR GAME_ERASE_OFF JSRP NO_DRUGS ; SAY NO TO DRUGS MESSAGE JRUC AMODE GAME_ERASE_OFF CLR A0 JRUC GERASE GAME_ERASE_ON MOVK 1,A0 GERASE MOVE A0,@GAMERASE,W RETS ;WIL_FADE ; MOVI WILLINIT,A14 ; CALLA INITINS ; SLEEP >60 ; MOVE A8,A9 ; MOVI >00010002,A11 ; MOVI willypal,a8 ; CREATE PID_AMODE,PALFADE ; SLEEP >60 ; MOVE A9,A0 ; CALLA DELOBJP ; MOVI willypal,a0 ; CALLA BLOWPAL ; BLOW OUT PALETTE COMPLETELY ; SLEEP 1 ; RETP ;WILLINIT ; .LONG willy1,willypal ; .WORD 0,DMAWNZ,>555,>55,>60,0 BALL_BANG MOVI 1,A0 MOVE A0,@NO_VEL,W ; NO VELOCITIES !! MOVI 40,B0 BANG_LOOP PUSH B0 MOVI BALL_INIT,A14 CALLA INITOBJ MOVE A8,B1 MOVI BALL_INIT,A14 CALLA INITOBJ MOVE A8,B2 MOVI BALL_INIT,A14 CALLA INITOBJ MOVE A8,B3 MOVI BALL_INIT,A14 CALLA INITOBJ MOVE A8,B4 CALLA RANDOM ; GET A RANDOM # IN A0 ANDI >00070000,A0 ; KEEP IT WITHIN REASON ADDI >00010000,A0 MOVE A0,B0 MOVE B0,*B1(OYVEL),L ; RANDOM Y VELOCITY CALLA RANDOM ; GET A RANDOM # IN A0 ANDI >00070000,A0 ; KEEP IT WITHIN REASON ADDI >00010000,A0 MOVE A0,B0 MOVE B0,*B2(OYVEL),L ; RANDOM Y VELOCITY CALLA RANDOM ; GET A RANDOM # IN A0 ANDI >00070000,A0 ; KEEP IT WITHIN REASON ADDI >00010000,A0 MOVE A0,B0 NEG B0 MOVE B0,*B3(OYVEL),L ; RANDOM Y VELOCITY CALLA RANDOM ; GET A RANDOM # IN A0 ADDI >00010000,A0 ANDI >00070000,A0 ; KEEP IT WITHIN REASON MOVE A0,B0 NEG B0 MOVE B0,*B4(OYVEL),L ; RANDOM Y VELOCITY CALLA RANDOM ; GET A RANDOM # IN A0 ANDI >00070000,A0 ; KEEP IT WITHIN REASON ADDI >00010000,A0 MOVE A0,B0 MOVE B0,*B1(OXVEL),L CALLA RANDOM ; GET A RANDOM # IN A0 ANDI >00070000,A0 ; KEEP IT WITHIN REASON ADDI >00010000,A0 MOVE A0,B0 MOVE B0,*B3(OXVEL),L CALLA RANDOM ; GET A RANDOM # IN A0 ANDI >00070000,A0 ; KEEP IT WITHIN REASON ADDI >00010000,A0 MOVE A0,B0 NEG B0 MOVE B0,*B2(OXVEL),L CALLA RANDOM ; GET A RANDOM # IN A0 ANDI >00070000,A0 ; KEEP IT WITHIN REASON ADDI >00010000,A0 MOVE A0,B0 NEG B0 MOVE B0,*B4(OXVEL),L * * PUT EM ON THE LIST * MOVE B1,A0 CALLA INSOBJ MOVE B2,A0 CALLA INSOBJ MOVE B3,A0 CALLA INSOBJ MOVE B4,A0 CALLA INSOBJ PULL B0 DEC B0 JRNE BANG_LOOP CLR A0 MOVE A0,@NO_VEL,W ; VELOCITIES !! SLEEP >50 CLR A1 NOT A1 MOVI OID_BALL,A0 CALLA KILL_OCP RETP * * HIGH SCORE TO DATE TABLE * HSTD MOVI HSTD_TEXT,A14 ; CALLA P RINT7_INFO ; CALLA P RINT7_INFO ; CALLA P RINT7_INFO ; CALLA P RINT7_INFO ; CALLA P RINT7_INFO ; SLEEP >40*4 RETP HSTD_TEXT .LONG >00600070 .WORD >FFFF .STRING "1) BUN $ 4,000,000",0 .LONG >00800070 .WORD >FFFF .STRING "2) JRN $ 3,500,000",0 .LONG >00A00070 .WORD >FFFF .STRING "3) BUN $ 3,000,000",0 .LONG >00C00070 .WORD >FFFF .STRING "4) JRN $ 2,500,000",0 .LONG >00E00070 .WORD >FFFF .STRING "5) KIM $ 2,000,000",0 .EVEN * * SAY NO TO DRUGS MESSAGE * NO_DRUGS MOVI >0D,A0 CALLA PRINT_DMA MOVI >0E,A0 CALLA PRINT_DMA ; MOVI BOONDCD,A0 ; CALLA GETFPAL ; GET BOONDCD PALLETTE ; JRNE NODR1 ; ERMAC 24 ;NODR1 MOVE A0,A1 ; A1 = DTIME INPUT = PALLETTE ; MOVI [>70,>D0],A3 ; MOVI DMAWNZ,A5 ; MOVI BOONDCD_vda,A14 ; CALLA DTIME ; DMA BOON PICTURE SLEEP >40*3 RETP LITTLE_FADE MOVI >0F,A0 MOVI >00700070,A3 ; A3 = [Y,X] CALLA PRINT_DMA_XY MOVI >0F,A0 MOVI >00900070,A3 ; A3 = [Y,X] CALLA PRINT_DMA_XY MOVI >0F,A0 MOVI >00B00070,A3 ; A3 = [Y,X] CALLA PRINT_DMA_XY MOVI >0F,A0 MOVI >00D00070,A3 ; A3 = [Y,X] CALLA PRINT_DMA_XY MOVI >0F,A0 MOVI >00F00070,A3 ; A3 = [Y,X] CALLA PRINT_DMA_XY SLEEP >60 RETP SET_EM_UP CALLA INITOBJ ; A8 = NFL LOGO OBJECT MOVE A8,A0 JAUC INSOBJ DO_A_STAR RETS INC A5 CMPI 4,A5 JRLO DOST1 CLR A5 ; FROM (0-3) DOST1 MOVE A5,A0 SLL 4,A0 ; 16 BIT OFFSET ADDI STAR_COLORS,A0 MOVE *A0,A0,W ; GET THE COLOR FOR THIS STAR MOVE A0,*A8(OCONST),W ; THIS IS THE STARS CONSTANT COLOR MOVE A8,A0 JAUC INSOBJ ; PUT IN LIST STAR_COLORS .WORD >0101 .WORD >0202 .WORD >0303 .WORD >0404 * * MAKE THE TROPHIES TWINKLE * TWINKLE CLR A11 JSRP TWLOOP MOVI 3,A11 JSRP TWLOOP MOVI 6,A11 JSRP TWLOOP JRUC TWINKLE TWLOOP CREATE PID_AMODE,DO_TWINK INC A11 CREATE PID_AMODE,DO_TWINK INC A11 CREATE PID_AMODE,DO_TWINK SLEEP >30 RETP DO_TWINK DIE ;TWINKINIT ; .LONG twink1,twinkpal ; .WORD 0,DMAWNZ,>555,>80,>80,3 TWINK_SPOTS .LONG >007D007D ; LEFT TROPHY'S SHOULDER .LONG >009000D0 ; LEFT TROPHY LEG .LONG >0184007C ; RIGHT TROPHY SHOULDER .LONG >01A0010D ; RIGHT TROPHY BASE .LONG >0060010D ; LEFT TROPHY BASE .LONG >01C000A0 ; RIGHT TROPHY HAND .LONG >009000D0 ; LEFT TROPHY LEG .LONG >01A0010D ; RIGHT TROPHY BASE .LONG >01C000A0 ; RIGHT TROPHY HAND .LONG >007D007D ; LEFT TROPHY'S SHOULDER ************************************************************************** * * * SHOW CREDITS * * * * Displays # of credits in the game * * * ************************************************************************** SHOW_CREDITS MOVI COIN_MESS3,A8 CALLA LM_SETUP CALLA GET_CSTR ; GET THE CURRENT CREDITS JSRP PRINTF ; PRINT TO OBJECT LIST MOVI OID_TEXT,A0 MOVI OID_AMODE,A1 CALLA CHANGE_OID ; ALL TEXT = OID_AMODE * * ALLOCATE PALETTES FOR EACH TEXT OBJECT CREATED * MOVI boonpal,A0 CALLA GETFPAL ; GET BOONPAL !! MOVI BPAL_BLK,A3 ; A3 = BOONPAL "BLACK" CLR A2 MOVI >0505,A3 ; A3 = CONSTANT COLOR TO USE MOVE @OBJLST,A0,L ; TOP O LIST JREQ SHOWC2 ; NONE, EXIT SHOWC1 INC A2 ; COUNT IT MOVE A3,*A0(OCONST),W ; SET COLOR O TEXT MOVE *A0(OLINK),A0,L JRNE SHOWC1 MOVI PALRAM,A1 ; TEXT USES 1ST PALETTE !! MOVE *A1(32),A3,W ; A3 = 1ST PALETTE COUNT DEC A3 ; DONT COUNT THE 1SR "GETFPAL" CALL ADD A2,A3 ; ADD IN TEXT OBJECTS MOVE A3,*A1(32),W SHOWC2 RETP COIN_MESS3 MESS_MAC RD15FONT,SPACING20,200,>C0,0D0D0000H,STRCNRMO,0 ********************************************************************* ;CREDLET_INIT ; .LONG osrn1,boonpal ; .WORD 0,DMACNZ|M_NOSCROLL,OID_AMODE ; .WORD 0,>D0,0 ; ;MED_DIGITS ; .LONG FON150 ; .LONG FON151 ; .LONG FON152 ; .LONG FON153 ; .LONG FON154 ; .LONG FON155 ; .LONG FON156 ; .LONG FON157 ; .LONG FON158 ; .LONG FON159 ; ; ; CALLA CRED_P ; A0 = # OF CREDITS ; CLR A10 ; ASSUME NO "TENS" DIGIT ; MOVE A0,A3 ; MOVE A3,A6 ; CMPI 10,A3 ; JRLT SHOWC2 ;* ;* CREDITS > 10 ;* ; MOVK 10,A0 ; DIVS A0,A3 ; A3 = 10'S DIGIT ; MOVE A3,A5 ; MOVI CREDLET_INIT,A14 ; CALLA INITOBJ ; GET DIGIT #2 = TENS DIGIT ; MOVE A8,A10 ; TENS DIGIT ; MOVI >0101,A0 ; MOVE A0,*A8(OCONST),W ; SLL 5,A3 ; ADDI MED_DIGITS,A3 ; MOVE *A3,A1,L ; CALLA ANI ; SHAPE THE # ; MOVI >E6,A0 ; MOVE A0,*A8(OXPOS),W ; X POS = AFTER THE ":" ; MOVE A8,A0 ; CALLA INSOBJ ; CALLA CRED_P ; A0 = # OF CREDITS ; MOVE A0,A6 ; MOVK 10,A0 ; MPYS A0,A5 ; SUB A5,A6 ; A6 = ONES ; ;SHOWC2 MOVI CREDLET_INIT,A14 ; CALLA INITOBJ ; GET DIGIT #1 ; MOVI >0101,A0 ; MOVE A0,*A8(OCONST),W ; ; SLL 5,A6 ; ADDI MED_DIGITS,A6 ; MOVE *A6,A1,L ; CALLA ANI ; SHAPE THE NUMBER ; MOVI >E6,A0 ; MOVE A10,A10 ; TENS DIGIT ? ; JREQ SHOWC3 ; MOVE *A10(OSIZEX),A2,W ; ADD A2,A0 ; INC A0 ;SHOWC3 MOVE A0,*A8(OXPOS),W ; PLACE ONES AFTER "TENS" ; MOVE A8,A0 ; CALLA INSOBJ ; ; MOVI >0F,A0 ; MOVI CREDLET_INIT,A14 ; CALLA PRINT_OBJ ; CREDITS MESSAGE !! ; MOVE @OBJLST,A0,L ; MOVE A0,*A7(OLINK),L ; LAST CHAR ----> OBJLST ; MOVE A4,@OBJLST,L ; OBJLST ---> 1ST CHAR ******************* END OF LINE (QUOTE FROM TRON) *************** .END