total-carnage/BACKUP/FBAMODE.ASM

972 lines
29 KiB
NASM
Raw Normal View History

2021-04-06 15:15:31 -07:00
**************************************************************************
* *
* 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