.FILE 'ROBOATT.ASM' .TITLE "ROBO ATTRACT MODE" .WIDTH 132 .OPTION B,D,L,T .MNOLIST ; ; ; COPYRIGHT (C) 1989 WILLIAMS ELECTRONICS GAMES, INC. ; ; ; GET THE SYSTEM STUFF ; .INCLUDE "MPROC.EQU" ;MPROC EQUATES .INCLUDE "DISP.EQU" ;DISPLAY PROC. EQUATES .INCLUDE "\VIDEO\SYS\SYS.INC" ;Z UNIT SYSTEM EQUATES .INCLUDE "\VIDEO\SYS\GSP.INC" .INCLUDE "\VIDEO\SYS\MACROS.HDR" ;MACROS DEFINITIONS .INCLUDE "MAC2.ASM" ;MACRO 2 DEFINITIONS .INCLUDE "IMGTBL.GLO" .INCLUDE "BGNDTBL.GLO" ;BACKGROUND EQUATES .INCLUDE "ROBO.EQU" .INCLUDE "AUDIT.EQU" .BSS PAL1,16*16*2 ;ALLOCATE 2 X COLOR AREA IN RAM .BSS PAL2,16*16*2 ;ALLOCATE 2 X COLOR AREA IN RAM .BSS STORYNUM,16 .BSS P1PZ1,8 .BSS P1PZ2,8 .BSS P1PZ3,8 .BSS P1CSH,16 .BSS P2PZ1,8 .BSS P2PZ2,8 .BSS P2PZ3,8 .BSS P2CSH,16 .BSS TMP,8 .BSS DUMB2,8 .BSS TMP1,32 .BSS TMP2,32 .BSS PLAYPAGE,16 .BSS STATUS,16 .BSS WANTIN,8 .TEXT ; ;SOUNDS ; .REF MCSPK6,MCSPK5,LEGOSND,STRYMSC,MONIN,MBANG,FADE_DOWN,FADE_UP .REF MUSICOFF,HIMUSC,CROWD1 ;EUGENE HIGH SCORES .REF GETHIGH,GETINIT,KEEPON,GET_ADJ,CIRCUIT,CLNPAL,GOS ; ; SYMBOLS DEFINED IN THIS FILE ; .DEF GRATS,CLRP1PZ,CLRP2PZ .DEF ATSTRT,PLAYPAGE,WANTIN,SPRKL,GETLVS,SMASHON .DEF SYSINITL,P1PZ1,P1PZ2,P1PZ3,P1CSH,P2PZ1,P2PZ2,P2PZ3,P2CSH .DEF WIPEOUT,INITIALS .DEF P1START,DEC_LV .DEF P2START .DEF ADDBUY .DEF SCRIPTPLAY .DEF ATTSLP,STATUS ; ; SYMBOLS DEFINED EXTERNALLY ; .REF DOMNTR,COVER,EHALT,BOSSON,DOSHK0,SHAKER,CLRBPAL ; .REF FBI_LIT .REF SPEECH,COLCYC,FLR2_LIT,HULKTYP .REF FIGURES,BSCORE,ENTERON .REF GPALOBJ,XYSEEK,AUTOPAL3 .REF OBJON,OBJOFF,SYNCHALF,WNTOUT,CLRPAL .REF P1LVS,P2LVS,LFCY,RFCY,LFACEP,RFACEP,CNTDIG1,CNTDIG2 .REF KP_LS,KP_RS,CANT,OBJSCRN .REF METERP1,METERP2,P2MTRY,P1MTRY,SET_GATE_2,RINGS .REF GAMSTATE,RD7FONT,RD15FONT,WAVE,P1CTRL,P2CTRL,SOUNDSUP,IRQSKYE .REF SCRCLR,INIT_DEMO,P1DATA,P2DATA,KILALL,BAKLST,PLYRPRCS .REF DELPAL,DELOBJ,FRANIM,RANGRAND .REF BAKMODS .REF BGND_UD1,PLYROBJS,MTR1CNT .REF DISPLAYON,MYOINIT,CLR_SCRN,DMAQWAIT .REF CLRWORLD,GAMERASE,SCORE_FLAG,GETFPAL .REF CLRSWPRC,SYNCFULL,DRAW_PLYR_TORSO .REF SYSCOPY,CRD_SCRN,KILL_CRD,SET_1ST .REF CR_CONTP,P_CONT,CR_STRTP,P_START,AUD,AUD1 .REF WNDWON,WNDWOFF,EXPSCRN,SNKSCRN,SNKNOW,DELWNDW .REF KILBGND,CLR_ALL .REF AWAVE,INIT_GAME .REF MSG_PROC .REF SCORETYP,HALT,STARTUP .REF LIVECNT .REF FROMDR .REF COLRPRC .REF SCRFIL,AUTOEOFF .REF AUTOEON .REF FADEOUT,FADEIN,BLAKOUT ;TEMPORARILY REFERENCED .REF STRCNRMO ; ;ATTRACT MODE START UP ROUTINE ; ATSTRT: MOVK 1,A0 MOVE A0,@GAMERASE MOVE @GAMSTATE,A0 CMPI INDIAG,A0 JREQ ATSTRTX MOVI INAMODE,A0 MOVE A0,@GAMSTATE,W MOVI IBUYINS,A0 MOVE A0,@P1DATA+PBUYINS,W ;MAKE SURE WE ALLOW BUYINS MOVE A0,@P2DATA+PBUYINS,W CALLA COLRPRC CREATE AMDEPID,AMODE ;CREATE THE ATTRACT MODE CLR A0 MOVE A0,@PLAYPAGE,W ;CLEAR AMODE PLAY PAGE MOVE A0,@HALT MOVE A0,@BSCORE MOVE A0,@HULKTYP MOVE A0,@ENTERON ATSTRTX: RETS ; ; CYCLE BETWEEN MODES ; AMODE: ; JRUC AMJ ; JSRP INITIALS ;ENTER INITIALS SCREEN ;AMJ JSRP HSTDTAB ;SHOW HIGH SCORE TO DATE TABLE JSRP TITLPAGE ;DISPLAY TITLE (SPLASH SCREEN) PAGE CALLA CLRBPAL JSRP ATTPLAY ;DO SOME ATTRACT MODE PLAY STUFF SLEEP 1 CALLA CLRBPAL JSRP LOGOSC JSRP DO_CRD_SCRN ;DISPLAY INSERT COIN SCREEN CALLA CLRBPAL JSRP TITLPAGE ;DISPLAY TITLE (SPLASH SCREEN) PAGE JSRP HSTDTAB ;SHOW HIGH SCORE TO DATE TABLE JSRP ATTPLAY ;DO SOME ATTRACT MODE PLAY STUFF JSRP DO_CRD_SCRN ;CREDIT INFO SCREEN CALLA CLRBPAL ; JSRP DOFBI ;DISPLAY FBI SCRN JSRP HSTDTAB ;SHOW HIGH SCORE TO DATE TABLE JSRP TITLPAGE ;DISPLAY TITLE (SPLASH SCREEN) PAGE CALLA CLRBPAL JSRP ATTPLAY ;DO ATTRACT MODE DEMO PLAY SLEEP 20 JSRP OFFERT SLEEP 1 ;60 ;SLEEP AWHILE MOVI AMDEPID,A0 MOVE A0,*A13(PROCID),W JRUC AMODE KILCYC MOVI COLRPID,A0 CLR A1 NOT A1 CALLA KILALL ;KILL ALL COLOR UPDATE PROCESSES RETS TITLPAGE: JSRP WNDWON CALLA KILBGND ;KILL OLD BACKGROUND IF ANY EXISTED MOVI CLSNEUT|TYPTEXT|SUBWNDW,A0 CLR A1 NOT A1 CALLA KILOBJ CALLR KILCYC MOVI SDP1,A8 ;PAL NAME MOVI PAL1,A9 ;RAM AREA MOVI [29H,37H],A10 ;BEGIN/END COLOR # MOVK 4,A11 ;RATE IN TICKS CREATE CYCPID,COLCYC ;COLOR CYCLER ON MOVI TITLE,A0 MOVE A0,@BAKMODS,L CALLA BGND_UD1 CREATE CAMPID,SMASHME SLEEP 60*10 ;10 MOVI CAMPID,A0 CLR A1 NOT A1 CALLA KILALL MOVI 33,A0 ;CAMERA & LIGHT CALLA KILOBJ MOVB @CANT,A0 JREQ CJ DP SLEEP 1 JRUC DP CJ RETP SMASHON SLEEP 1 MOVI SMASZ,A10 MOVI SMASTV2,A9 CALLR TOB1 MOVI 15000H,A0 MOVE A0,*A8(OYVEL),L MOVE A0,*A9(OYVEL),L SLEEP 54H CLR A0 MOVE A0,*A8(OYVEL),L MOVE A0,*A9(OYVEL),L SLEEP 60 MOVI -70000H,A0 JRUC KILOFF TOB1 MOVE A10,A14 CALLA GPALOBJ ;ALLOCATE A COLOR PALETTE CALLA STFOBJ ;STUFF OBJECT DATA CALLA INSOBJ ;INSERT OBJECT INTO LIST MOVE A0,A8 MOVE A9,A14 CALLA GPALOBJ ;ALLOCATE A COLOR PALETTE CALLA STFOBJ ;STUFF OBJECT DATA CALLA INSOBJ ;INSERT OBJECT INTO LIST MOVE A0,A9 RETS SMASHME SLEEP 60*3-30 MOVI SMAS,A10 MOVI SMASTV,A9 CALLR TOB1 MOVI 50000H,A0 MOVE A0,*A8(OYVEL),L MOVE A0,*A9(OYVEL),L SLEEP 27 CLR A0 MOVE A0,*A8(OYVEL),L MOVE A0,*A9(OYVEL),L ;SOUNDS OFF IN DEMO ADJUST ADJMUSIC ;GET MUSIC ON OFF FOR DEMO MOVE A0,A0 JRNZ NONO MOVI MBANG,A0 ;MBANG CALLA ONESND NONO MOVI 30,A10 CALLA SHAKER SLEEP 60*5 ADJUST ADJMUSIC ;GET MUSIC ON OFF FOR DEMO MOVE A0,A0 JRNZ NONO2 MOVI MONIN,A0 CALLA ONESND NONO2 MOVI 70000H,A0 KILOFF MOVE A0,*A8(OXVEL),L MOVE A0,*A9(OXVEL),L SLEEP 90 CLR A0 MOVE A0,*A8(OXVEL),L MOVE A0,*A9(OXVEL),L MOVE A8,A0 CALLA DELOBJ MOVE A9,A0 CALLA DELOBJ DIE SMAS .LONG 0B80000H,-600000H,SMASH .WORD 130,DMAWNZ,33 .LONG 0,0 SMASZ ;FOR TOBIAS .LONG 0C00000H,01000000H,SMASH .WORD 07FFFH,DMAWNZ,33 .LONG 0,0 SMASTV2 .LONG 0C00000H,01000000H,TVBOX .WORD 07FFFH,DMAWNZ,33 .LONG 0,0 SMAS2 .LONG 0B80000H,-1600000H,SMASH .WORD 130,DMAWNZ,33 .LONG 0,0 SMASTV .LONG 0B80000H,-600000H,TVBOX .WORD 131,DMAWNZ,33 .LONG 0,0 MONTR SLEEP 634H ;114H ;5*60 MOVK 3,A9 ;NO SPEECH NO CASH CREATE 0,COVER CREATE TVPID,DOMNTR DIE INITIALS JSRP WNDWON CALLA KILBGND ;KILL OLD BACKGROUND IF ANY EXISTED ; MOVI CLSNEUT|TYPTEXT|SUBWNDW,A0 ; CLR A1 ; NOT A1 ; CALLA KILOBJ MOVI INITL,A0 MOVE A0,@BAKMODS,L CALLA BGND_UD1 MOVI INITL,A0 MOVE A0,@BAKMODS,L CALLA BGND_UD1 MOVI SCRNEND,A0 ;[256,405],A0 MOVE A0,@SCRNLR,L CREATE CYCPID,FLR2_LIT CALLA FIGURES ;TURN ON PLYRS, GIRLS, ETC. JSRP WNDWOFF ;ENTER INITIALS HERE JSRP GETINIT ;GET INITIALS BOYS... JSRP WNDWON CALLA KILBGND MOVI CYCPID,A0 CLR A1 NOT A1 CALLA KILALL MOVI BONPID,A0 CALLA KILALL MOVI BON1PID,A0 CALLA KILALL SLEEP 2 MOVI CLSNEUT|TYPTEXT|SUBWNDW,A0 CLR A1 NOT A1 CALLA KILOBJ SLEEP 1 CALLA MYOINIT RETP ;DOFBI ; JSRP WNDWON ; CALLA KILBGND ;KILL OLD BACKGROUND IF ANY EXISTED ; MOVI CLSNEUT|TYPTEXT|SUBWNDW,A0 ; CLR A1 ; NOT A1 ; CALLA KILOBJ ; ; MOVI FBI1,A0 ; MOVE A0,@BAKMODS,L ; CALLA BGND_UD1 ; MOVI FBI1,A0 ; MOVE A0,@BAKMODS,L ; CALLA BGND_UD1 ; MOVI FBI1,A0 ; MOVE A0,@BAKMODS,L ; CALLA BGND_UD1 ; ; MOVI FBIP,A0 ; CALLA BLAKOUT ; ; MOVI SCRNEND,A0 ;[256,405],A0 ; MOVE A0,@SCRNLR,L ; ; MOVI PAL3ATAB,A0 ; MOVK 2,A1 ;FADE TITLE SCREEN IN FROM BLACK ; CALLA FADEIN ; CREATE CYCPID,FBI_LIT ; ; SLEEP 4*60+30 ; ; MOVI CYCPID,A0 ; CLR A1 ; NOT A1 ; CALLA KILALL ; ; MOVI PAL3ATAB,A0 ; MOVK 2,A1 ;FADE TITLE SCREEN OUT TO BLACK ; CALLA FADEOUT ; ; SLEEP 60 ; CALLA CLR_SCRN ; MOVB @CANT,A0 ; JREQ ACJA ;ADPA SLEEP 1 ; JRUC ADPA ;ACJA RETP GRATS ; MOVI GRAT,A0 ; MOVE A0,@BAKMODS,L ; CALLA BGND_UD1 ; MOVI GRAT,A0 ; MOVE A0,@BAKMODS,L ; CALLA BGND_UD1 MOVI HIMUSC,A0 CALLA ONESND MOVI GRAT,A0 MOVE A0,@BAKMODS,L CALLA BGND_UD1 MOVI SCRNEND,A0 ;[256,405],A0 MOVE A0,@SCRNLR,L JSRP WNDWOFF CREATE CYCPID,GOSA MOVI GRAT,A0 MOVE A0,@BAKMODS,L CALLA BGND_UD1 CREATE CYCPID,FLR2_LIT MOVK 1,A0 MOVE A0,@STORYNUM CREATE 0,DOSTRY SLEEP 018BAH JRUC INHERE GOSA MOVI CROWD1,A0 CALLA ONESND SLEEP 870H CREATE CYCPID,GOS DIE LOGOSC MOVI LOGO,A0 MOVE A0,@BAKMODS,L CALLA BGND_UD1 MOVI LOGO,A0 MOVE A0,@BAKMODS,L CALLA BGND_UD1 MOVI LOGO,A0 MOVE A0,@BAKMODS,L CALLA BGND_UD1 ; MOVI DLSTZ,A1 ; CALLA UNGET CALLA CLNPAL MOVI LGP,A0 CALLA BLAKOUT MOVI SCRNEND,A0 ;[256,405],A0 MOVE A0,@SCRNLR,L MOVI PAL3TAB,A0 MOVK 2,A1 ;FADE TITLE SCREEN IN FROM BLACK CALLA FADEIN MOVI SMAS2,A14 CALLA GPALOBJ ;ALLOCATE A COLOR PALETTE CALLA STFOBJ ;STUFF OBJECT DATA CALLA INSOBJ ;INSERT OBJECT INTO LIST CLR A0 MOVE A0,@STORYNUM CREATE 0,DOSTRY CREATE 0,MONTR CREATE 0,SPARK SLEEP 5C5H ;49*60/2 INHERE ;STOP ALL SCROLLING LETTERS (ONLY LAST 2 LINES ARE VIEWABLE) ;STOP DISPLAY PROCESSOR HERE FOR PROPER ALIGNMENT DN0 CLR A1 NOT A1 MOVI CLSNEUT|TYPTEXT|SUBNEW,A0 CALLA EXISTOBJ JRZ DNS ;FOUND 1 MOVK 1,A1 MOVE A1,*A0(OID) CLR A1 MOVE A1,*A0(OYVEL),L JRUC DN0 DNS ;START DISPLAY PROCESSOR UP AGAIN SLEEP 78H ;2*60 ;SEND REMAINING TEXT FLYING OFF SCREEN FN0 CLR A1 NOT A1 MOVK 1,A0 CALLA EXISTOBJ JRZ FNS ;FOUND 1 CLR A1 MOVE A1,*A0(OID) MOVI -10000H,A1 ;8000 MOVE A1,*A0(OYVEL),L JRUC FN0 FNS SLEEP 1F8H ;204H-60 ;6*60/2 MOVE @STORYNUM,A0 JRNZ CJA SLEEP 0CH ;60 MOVI PAL3TAB,A0 MOVK 2,A1 ;FADE TITLE SCREEN OUT TO BLACK CALLA FADEOUT SLEEP 60 CALLA CLR_SCRN MOVB @CANT,A0 JREQ CJA DPA SLEEP 1 JRUC DPA CJA RETP PAL5TAB: .LONG HSC,DUXPAL,smlg,0 PAL4TAB: .LONG HSC,NUARENAP,0 PAL3TAB: .LONG AUTOPAL3,LGP,0 PAL3BTAB: .LONG LGP,0 ;PAL3ATAB: ; .LONG FBIP,0 SPARK ;SPARKLES ON LOGO SLEEP 120 ;TURN ON OBJECT MOVI SPK,A14 CALLA GPALOBJ ;ALLOCATE A COLOR PALETTE CALLA STFOBJ ;STUFF OBJECT DATA CALLA INSOBJ ;INSERT OBJECT INTO LIST MOVE A0,A8 CALLA ADJSTWTL STP MOVK 1,B0 MOVK 4,B1 CALLA RANGRAND DEC A0 SLL 4,A0 MOVI SPRKX,A1 ADD A0,A1 MOVE *A1,A1,W ;A1=X OF SPARKLE ADDI SPRKY,A0 MOVE *A0,A0,W ;A0=Y MOVE A1,*A8(OXPOS),W MOVE A0,*A8(OYPOS),W MOVE A8,A0 CALLA OBJON MOVI SPRKL,A9 MOVK 1,A1 ;TILL END OF LIST JSRP FRANIM MOVE A8,A0 CALLA OBJOFF SLEEP 30 ;2*60 JRUC STP SPRKL .LONG GLM0 .WORD 4 .LONG GLM1 .WORD 4 .LONG GLM2 .WORD 4 .LONG GLM3 .WORD 4 .LONG GLM2 .WORD 4 .LONG GLM1 .WORD 4 .LONG 0 SPRKX: .WORD 097H,0F3H,0C6H,0C6H SPRKY: .WORD 055H,055H,055H,036H SPK .LONG 0,1000,GLM0 .WORD 90,DMAWNZ,CLSNEUT|TYPNEUT .LONG 0,0 ; DOSTRY ;TURN ON MUSIC SND ; MOVI STRYMSC,A0 ; CALLA ONESND ; MOVK 1,A0 ; MOVB A0,@GOUP MOVI DRLPID,A0 CLR A1 NOT A1 CALLA KILALL MOVI DRRPID,A0 CALLA KILALL MOVI DRTOPID,A0 CALLA KILALL CLR A0 MOVB A0,@TMP DOST SLL 5,A0 MOVE @STORYNUM,A8 JRZ DO1ST ADDI SY2,A0 JRUC DO2ND DO1ST ADDI SY,A0 DO2ND MOVE *A0,A8,L JRZ DOST1 MOVI [0108H,0C8H],A9 ;Y,X POSITION MOVI [0,2],A10 ;Y,X SPACING BETWEEN CHARACTERS MOVI RD15FONT,A11 ;FONT TABLE CLR A0 MOVI 3F3FH,A6 ;COLOR JSRP STRCNRMO ;PRINT OUT SHIT ; CALLA SYNCFULL ;NOW WAIT FOR VBLANK TO ZAP COLOR MAP ; CALLA SYNCHALF ; CLR A0 ; MOVE A0,@DISPLAYON ;GIVE ALL TEXTOID IMGS A -YVEL ; DINT D33 MOVI CLSNEUT|TYPTEXT|SUBTXT,A0 CLR A1 NOT A1 CALLA EXISTOBJ JRZ D34 MOVI -010000H,A1 ;8000 MOVE @STORYNUM,A2 JRZ DFUCK MOVI -08000H,A1 ;8000 DFUCK MOVE A1,*A0(OYVEL),L MOVI CLSNEUT|TYPTEXT|SUBNEW,A1 MOVE A1,*A0(OID),W MOVI 100,A1 ;SO THAT WINDOW WILL BE ABOVE TEXT! ;IN CASE OF START BUTTON PRESSED! MOVE A1,*A0(OZPOS) JRUC D33 D34 ; EINT ; MOVK 1,A0 ; MOVE A0,@DISPLAYON SLEEP 45 ;90 MOVE @STORYNUM,A0 JRZ CONH SLEEP 65 ;90 CONH ;KILL EVERYTHING OFF SCREEN CALLA OBJSCRN MOVB @TMP,A0 INC A0 MOVB A0,@TMP JRUC DOST DOST1 SLEEP 3*60 DIE DO_CRD_SCRN: JSRP CRD_SCRN ;SHOW CREDITS SCREEN SUPERIMPOSED MOVI LOGO2,A0 MOVE A0,@BAKMODS,L CALLA BGND_UD1 MOVI LGP,A0 CALLA BLAKOUT MOVI SCRNEND,A0 ;[256,405],A0 MOVE A0,@SCRNLR,L MOVI PAL3BTAB,A0 MOVK 2,A1 ;FADE TITLE SCREEN IN FROM BLACK CALLA FADEIN SLEEP 4*60 MOVI PAL3BTAB,A0 MOVK 2,A1 ;FADE TITLE SCREEN OUT TO BLACK CALLA FADEOUT SLEEP 1CH CALLA KILL_CRD CALLA CLR_SCRN RETP HSTDTAB: JSRP WNDWON CALLA KILBGND ;KILL OLD BACKGROUND IF ANY EXISTED MOVI CLSNEUT|TYPTEXT|SUBWNDW,A0 CLR A1 NOT A1 CALLA KILOBJ MOVI CHAMPS,A0 MOVE A0,@BAKMODS,L CALLA BGND_UD1 ; MOVI CHAMPS,A0 ; MOVE A0,@BAKMODS,L ; CALLA BGND_UD1 ; MOVI CHAMPS,A0 ; MOVE A0,@BAKMODS,L ; CALLA BGND_UD1 MOVI HSC,A0 CALLA BLAKOUT MOVI NUARENAP,A0 CALLA BLAKOUT MOVI SCRNEND,A0 ;[256,405],A0 MOVE A0,@SCRNLR,L MOVI PAL4TAB,A0 MOVK 2,A1 ;FADE TITLE SCREEN IN FROM BLACK CALLA FADEIN SLEEP 20 MOVI HSC,A8 ;PAL NAME MOVI PAL1,A9 ;RAM AREA MOVI [50,55],A10 ;BEGIN/END COLOR # MOVK 5,A11 ;RATE IN TICKS CREATE CYCPID,COLCYC ;COLOR CYCLER ON MOVI HSC,A8 ;PAL NAME MOVI PAL2,A9 ;FIRST COLOR TO CYCLE MOVI [55,58],A10 ;LAST COLOR TO CYCLE MOVK 9,A11 ;RATE CREATE CYCPID,COLCYC ;DISPLAY SCORES HERE! CALLA COLRPRC CLR A0 MOVE A0,@GAMERASE,W SLEEP 2 CALLA GETHIGH SLEEP 5*60 MOVE @KEEPON,A0 JRZ TY6 SLEEP 14*60 CLR A0 MOVB A0,@CANT MOVE A0,@KEEPON MOVK 3,A11 ;FADE RATE CREATE 0,FADE_DOWN SLEEP 40 SOUND1 MUSICOFF MOVK 3,A11 ;FADE RATE CREATE 0,FADE_UP TY6 MOVK 1,A0 MOVE A0,@GAMERASE,W MOVI CYCPID,A0 CLR A1 NOT A1 CALLA KILALL MOVI PAL4TAB,A0 MOVK 2,A1 ;FADE TITLE SCREEN OUT TO BLACK CALLA FADEOUT SLEEP 30 CALLA CLR_SCRN RETP OFFERT: JSRP WNDWON CALLA KILBGND ;KILL OLD BACKGROUND IF ANY EXISTED MOVI OFFER,A0 MOVE A0,@BAKMODS,L CALLA BGND_UD1 MOVI CLSNEUT|TYPTEXT|SUBWNDW,A0 CLR A1 NOT A1 CALLA KILOBJ MOVI HSC,A0 CALLA BLAKOUT MOVI DUXPAL,A0 CALLA BLAKOUT MOVI smlg,A0 CALLA BLAKOUT MOVI SCRNEND,A0 ;[256,405],A0 MOVE A0,@SCRNLR,L MOVI PAL5TAB,A0 MOVK 2,A1 ;FADE TITLE SCREEN IN FROM BLACK CALLA FADEIN MOVI DUXPAL,A8 ;PAL NAME MOVI PAL1,A9 ;RAM AREA MOVI [1,6],A10 ;BEGIN/END COLOR # MOVK 8,A11 ;RATE IN TICKS CREATE CYCPID,COLCYC ;COLOR CYCLER ON SLEEP 8*60 MOVI CYCPID,A0 CLR A1 NOT A1 CALLA KILALL MOVI PAL5TAB,A0 MOVK 2,A1 ;FADE TITLE SCREEN OUT TO BLACK CALLA FADEOUT SLEEP 35 CALLA CLR_SCRN MOVB @CANT,A0 JREQ ACJAZ ADPAZ SLEEP 1 JRUC ADPAZ ACJAZ RETP PRINTIT: JSRP SNKNOW CLR A0 MOVI 03E3EH,A6 ;COLOR JSRP STRCNRMO ;PRINT OUT SHIT JSRP EXPSCRN SLEEP 60*5 ;5 SECONDS MOVI CLSNEUT|TYPTEXT|SUBTXT,A0 CLR A1 NOT A1 CALLA KILOBJ RETP SY .LONG SY1,S2,S2,S3,S4,S2,S5,S6,S2,S8,S9,S10,S11,S2,S13,S14,S15,S16,S17 .LONG S2,S2,S20,S21,S22,S23,S2,S24,S2,S24A,S2,S25,0 SY2 .LONG FSY1,S2,FS3,FS4,S2,FS5,S2,FS5A,S2,FS6,FS8,S2,FS9,FS10,FS11,FS13,FS14,FS15,FS15A,FS16,FS17 .LONG S2,FS21,FS22,S2,FS23,S2,FS24,S2,S25 .LONG S2,S2,NM1,NM2,NM3,NM4,NM5,NM5A,NM6,NM7,NM7A,NM8,NM9,NM10,NM11 .LONG NM12,NM12A,NM12B,NM12C,NM12E,NM12D,NM12F,NM12G,S2,S2,S2,NM13,S2,NM14,0 SY1 .STRING "The year is 1999" .BYTE 0 .EVEN S2 .STRING " " .BYTE 0 .EVEN S3 .STRING "Television has adapted to the" .BYTE 0 .EVEN S4 .STRING "more violent nature of man." .BYTE 0 .EVEN S5 .STRING "The most popular form of" .BYTE 0 .EVEN S6 .STRING "television remains the game show." .BYTE 0 .EVEN S8 .STRING "One show in particular has" .BYTE 0 .EVEN S9 .STRING "dominated the ratings. That show" .BYTE 0 .EVEN S10 .STRING "is Smash T.V. The most" .BYTE 0 .EVEN S11 .STRING "violent game show of all time." .BYTE 0 .EVEN S13 .STRING "Two lucky contestants compete" .BYTE 0 .EVEN S14 .STRING "for cash and prizes. Each" .BYTE 0 .EVEN S15 .STRING "contestant is armed with an" .BYTE 0 .EVEN S16 .STRING "assortment of powerful weapons" .BYTE 0 .EVEN S17 .STRING "and sent into a closed arena." .BYTE 0 .EVEN S20 .STRING "The action takes place in front" .BYTE 0 .EVEN S21 .STRING "of a studio audience and is" .BYTE 0 .EVEN S22 .STRING "broadcast live via satellite" .BYTE 0 .EVEN S23 .STRING "around the world." .BYTE 0 .EVEN S24 .STRING "Be prepared." .BYTE 0 .EVEN S24A .STRING "The future is now." .BYTE 0 .EVEN S25 .STRING "You are the next lucky contestant!" .BYTE 0 .EVEN FSY1 .STRING "Congratulations!" .BYTE 0 .EVEN FS3 .STRING "You have graduated to the elite" .BYTE 0 .EVEN FS4 .STRING "ranks of the Smash TV survivors!" .BYTE 0 .EVEN FS5 .STRING "You are a great Smash TV player!" .BYTE 0 .EVEN FS5A .STRING "Maybe the best of all time!!!" .BYTE 0 .EVEN FS6 .STRING "However, you have not reached" .BYTE 0 .EVEN FS8 .STRING "the highest level of competition." .BYTE 0 .EVEN FS9 .STRING "To become a Grand Champion you" .BYTE 0 .EVEN FS10 .STRING "must explore all areas of the" .BYTE 0 .EVEN FS11 .STRING "Smash TV studio! If you use" .BYTE 0 .EVEN FS13 .STRING "the keys to explore all of the" .BYTE 0 .EVEN FS14 .STRING "secret rooms, you will find the" .BYTE 0 .EVEN FS15 .STRING "Smash TV Pleasure Dome. Once" .BYTE 0 .EVEN FS15A .STRING "there, several of our lovely" .BYTE 0 .EVEN FS16 .STRING "showgirls will promote you to" .BYTE 0 .EVEN FS17 .STRING "the rank of Grand Champion!" .BYTE 0 .EVEN FS21 .STRING "You must now begin your quest to" .BYTE 0 .EVEN FS22 .STRING "become Smash TV Grand Champion!" .BYTE 0 .EVEN FS23 .STRING "Thank you for playing Smash TV!" .BYTE 0 .EVEN FS24 .STRING "Good Luck! You'll need it!" .BYTE 0 .EVEN NM1 .STRING "Smash TV Design Team:" .BYTE 0 .EVEN NM2 .STRING "Mark Turmell" .BYTE 0 .EVEN NM3 .STRING "John Tobias" .BYTE 0 .EVEN NM4 .STRING "Tim Coman" .BYTE 0 .EVEN NM5 .STRING "Eugene Jarvis" .BYTE 0 .EVEN NM5A .STRING "Jon Hey" .BYTE 0 .EVEN NM6 .STRING "Todd Allen" .BYTE 0 .EVEN NM7 .STRING "George Petro" .BYTE 0 .EVEN NM7A .STRING "Larry Demar" .BYTE 0 .EVEN NM8 .STRING "Jack Haeger" .BYTE 0 .EVEN NM9 .STRING "Cary Mednick" .BYTE 0 .EVEN NM10 .STRING "Glenn Shipp" .BYTE 0 .EVEN NM11 .STRING "Al Lasko" .BYTE 0 .EVEN NM12 .STRING "Sheridan Oursler" .BYTE 0 .EVEN NM12B .STRING "Mark Loffredo" .BYTE 0 .EVEN NM12A .STRING "Ray Gay" .BYTE 0 .EVEN NM12C .STRING "Ray Czajka" .BYTE 0 .EVEN NM12E .STRING "Greg Freres" .BYTE 0 .EVEN NM12D .STRING "Jim Nichols" .BYTE 0 .EVEN NM12F .STRING "Tim Elliott" .BYTE 0 .EVEN NM12G .STRING "Rob Ashworth" .BYTE 0 .EVEN NM13 .STRING "Coming Soon:" .BYTE 0 .EVEN NM14 .STRING "Even More Carnage!" .BYTE 0 .EVEN ; ; ATTPLAY - ATTRACT MODE GAME PLAY ; NOTE: CALL WITH JSRP ; NATTWAVS .SET 3 ;# OF ATTRACT MODE WAVES ATTPLAY: MOVK 1,A0 MOVE A0,@SOUNDSUP,W ;TURN ALL SOUNDS OFF MOVE @AWAVE,A0,W INC A0 CMPI 2,A0 JRNE NOMUT MOVE A0,@AWAVE MOVI 10,A0 JRUC MUT0 NOMUT CMPI NATTWAVS,A0 JRLS ATTWGO ATTWRST: MOVK 1,A0 ;RESET TO WAVE 1 ATTWGO: MOVE A0,@AWAVE,W MUT0 MOVE A0,@WAVE,W MOVK 1,A0 MOVE A0,@PLAYPAGE,W ;MARK IT AS THE PLAY PAGE ; MOVI DLSTZ,A1 ; CALLA UNGET ; MOVI DLST,A1 ; CALLA UNGET CALLA CLNPAL JSRP AMODWAVE ;START WAVE #1-3 MOVI P1DATA,A11 ;MARK PLAYER 1 FOR DEMO ; MOVE @AWAVE,A9,W ; DEC A9 ; SLL 5,A9 ; ADDI AMOVETAB,A9 ;SCRIPTED PLAYER MOVEMENT ;BASED ON WAVE WE ARE ON ; MOVE *A9,A9,L ;GET THIS WAVES MOVEMENT TABLE MOVI AWAV1MOV,A9 ATTNEXT: MOVE *A9+,A0,W ;GET SOME JOYSTICK BITS CMPI 0FFFFFFFFH,A0 JREQ ATTWXXX MOVE A0,@P1CTRL,W MOVE *A9+,A10,W JSRP ATTSLP ;PROCESS SLEEP TIME JRUC ATTNEXT ATTWXXX: CLR A1 NOT A1 MOVI PCPID,A0 CALLA KILALL JSRP WNDWON MOVI ICONPID,A0 CLR A1 NOT A1 CALLA KILALL CALLA CLR_ALL ;GLITCH HERE? SLEEP 2 CLR A0 MOVE A0,@SOUNDSUP,W ;TURN ALL SOUNDS ON CALLA DELWNDW RETP ; ; SCRIPTPLAY - PLAYER MOVEMENT FOR IN/OUT OF WAVES ; PARMS ; SCRIPT NUMBER IN FROMDR ; SENT WITH EITHER P1CTRL OR P2CTRL IN A8 ;IF A9=1 THEN PLY1 START, 2=PLYR2 START 0=REG MOVEMENT PLAYER TABLE SCRIPTPLAY: MOVE A9,A9 JREQ REG ;PLAYERS ABOUT TO BEGIN A GAME CMPI 1,A9 JRNE SX MOVB @KP_LS,A0 CMPI 0FFFFFFFFH,A0 JREQ ZA MOVI 1,A0 MOVI 10,A1 CALLA SET_GATE_2 ;TURN ON RINGS AROUND THIS PLAYER ;MAKE SURE IMAGE IS STARTED BEFORE THIS ZA CALLR C_SHO2 ; MOVI 1,A9 ;ALREADY A 9! MOVI 190,A10 ;TIME RINGS ARE ON CREATE RNGPID,RINGS MOVI LDRS,A9 MOVB @BOSSON,A0 JRZ NEXTMOV MOVI LDRS2,A9 JRUC NEXTMOV SX MOVB @KP_RS,A0 CMPI 0FFFFFFFFH,A0 JREQ ZA1 MOVI 2,A0 MOVI 10,A1 CALLA SET_GATE_2 ZA1 CALLR C_SHO1 ; MOVI 2,A9 ;ALREADY A9=2 MOVI 190,A10 ;TIME RINGS ARE ON CREATE RNGPID,RINGS MOVI RDRS,A9 MOVB @BOSSON,A0 JRZ NEXTMOV MOVI RDRS2,A9 JRUC NEXTMOV C_SHO1 CLR A0 MOVE @PLYRPRCS+32,A1,L JRZ RETOUT MOVE *A1,A1,L MOVE *A1(LEG_PRC),A1,L MOVE A0,*A1(SHOECNT) RETS C_SHO2 CLR A0 MOVE @PLYRPRCS,A1,L JRZ RETOUT MOVE *A1,A1,L MOVE *A1(LEG_PRC),A1,L MOVE A0,*A1(SHOECNT) RETOUT RETS REG CALLR C_SHO1 CALLR C_SHO2 MOVE @FROMDR,A0,W JRNZ REG3 ;TV SET RUN IN CMPI P1CTRL,A8 JRZ REG4 MOVI TVMOV2,A9 JRUC NEXTMOV REG4 MOVI TVMOV,A9 JRUC NEXTMOV REG3 SLL 5,A0 ADDI GMOVTAB,A0 ;SCRIPTED PLAYER MOVEMENT MOVE @CIRCUIT,A9 CMPI 2,A9 JRNZ REGCONT MOVE @WAVE,A9 CMPI 7,A9 JRNZ REGCONT MOVI SNAKELST,A9 JRUC NEXTMOV REGCONT MOVE *A0,A9,L ;GET MOVEMENT TABLE DATA NEXTMOV: MOVE @HALT,A0 JRZ NXM SLEEP 1 JRUC NEXTMOV NXM MOVE *A9+,A0,W ;GET SOME JOYSTICK BITS CMPI 0FFFFFFFFH,A0 JREQ MOVEXIT MOVE A0,*A8,W ;P1/P2CTRL MOVE *A9+,A10,W JSRP ATTSLP ;PROCESS SLEEP TIME JRUC NEXTMOV MOVEXIT: DIE ; ; ATTSLP - PROCESS ATTRACT MODE PLAYER SLEEP ; A10 = # TICKS TO SLEEP ; RETURNS: ; CARRY CLEAR = SLEEP COMPLETED ; CARRY SET = STILL SNOZZIN' ; ; NOTE: CALL WITH JSRP ; ATTSLP: PUSHP A10 ATTSLPL: SLEEP 1 SETC DSJS A10,ATTSLPL ;PROCESS SLEEP LOOP CLRC PULLP A10 RETP ; ; AMODWAVE - INITIALIZE AN ATTRACT MODE WAVE: ; CURRENT ATTRACT WAVE MUST BE INDICATED IN VARIABLE, AWAVE. ; NOTE: CALL AS JSRP! ; AMODWAVE: CALLA INIT_DEMO RETP ************************************************************************** * * * PxSTART - PLAYER START SWITCH PROCESSES * * * ************************************************************************** *PLAYER 1 START P1START: MOVE @ENTERON,A0 ;NEVER START WHEN INITIALS BEING ;ENTERED JRNZ DOI MOVE @STATUS,A0 ;1/2 OR 3 FOR WHO IS PLAYING NOW BTST 0,A0 ;TEST IF 0 BIT IS SET (1) JRNE DOI ;BR=ALREADY IN THE GAME! MOVI P1DATA,A2 JRUC PXSTART *PLAYER 2 START P2START: MOVE @ENTERON,A0 JRNZ DOI MOVE @STATUS,A0 BTST 1,A0 ;TEST IF 1 BIT IS SET (2) JRNE DOI MOVI P2DATA,A2 PXSTART: MOVB @CANT,A0 JRN CS JREQ CS ;A PLAYER IS SCROLLING IN FROM TVSET! ;PLAYER TRYED TO START WHEN ANOTHER PLAYER WAS RUNNING IN FROM TVSET. ;DELAY STARTING PLAYER UNTIL SCREEN HAS STOPPED SCROLLING MOVE A2,A8 ;CHECK IF EXIST? MOVI DLYPID,A0 CLR A1 NOT A1 CALLA EXISTP JRNZ DOI ;BR=DO EXIST CREATE DLYPID,WAIT1 DIE WAIT1 SLEEP 1 MOVB @CANT,A0 JRNE WAIT1 MOVE A8,A2 CS MOVE @GAMSTATE,A0,W CMPI INDIAG,A0 JRNE P1STARTG DOI DIE P1STARTG: CALLR ADDBUY MOVE *A2(PBUYINS),A4,W JRZ PDIE1 MOVE @GAMSTATE,A0,W CMPI INAMODE,A0 JREQ PXSTART1 MOVE *A2(PFLAGS),A5,L CMPI BBUYIN,A5 JREQ PDIE1 ;GUY IS ALREADY PLAYING! PXSTART1: MOVE *A2(PSCORE),A0,L JRZ PXSTRT ;NO SCORE, THIS IS A VIRGIN START MOVE @GAMSTATE,A0,W CMPI INGAMEOV,A0 JRNZ CHKMODE ;COLD START IF GAME OVER CLR A1 MOVE A1,@HALT,W JRUC PXSTRT CHKMODE: CMPI INAMODE,A0 JREQ PXSTRTNEW CALLA CR_CONTP ;CONTINUATION, SEE IF ENOUGH CRD. FOR CONTINUE JRLO PDIE1 CALLA P_CONT JRUC P1STARTA PXSTRTNEW ;NEW START FROM ATTRACT MODE, ZERO BOTH SCORES! CLR A0 MOVI P2DATA,A11 MOVE A0,*A11(PSCORE),L MOVI P1DATA,A11 MOVE A0,*A11(PSCORE),L PXSTRT: CALLA CR_STRTP JRLO PDIE1 CALLA P_START P1STARTA: MOVI GMEOVPID,A0 CLR A1 NOT A1 CALLA KILALL ;KILL GAME OVER MESSAGE IF PRESENT CMPI P1DATA,A2 JRNE P2STARTA MOVE A4,A4 JREQ P1GAME ;ATTEMPT TO START PLAYER ONE MOVE @GAMSTATE,A0,W CMPI INAMODE,A0 JREQ P1GAME ;BR = GAME IS OVER COLD START CMPI INGAMEOV,A0 JREQ P1GAME ;BR = GAME IS OVER COLD START JRUC P1BUYIN ;BUY IN TIME P2STARTA: MOVE A4,A4 JREQ P2ONLY ;ATTEMPT TO START PLAYER TWO MOVE @GAMSTATE,A0,W CMPI INAMODE,A0 JREQ P2ONLY ;BR = GAME IS OVER COLD START CMPI INGAMEOV,A0 JREQ P2ONLY ;BR = GAME IS OVER COLD START JRUC P2BUYIN ;BUY IN TIME PDIE1: JAUC SUCIDE ************************************************************************** * * * ADDBUY - CHECK TO SEE IF THIS IS A VIRGIN GAME START. * * * ************************************************************************** ADDBUY: PUSH A0 MOVE @GAMSTATE,A0,W CMPI INGAMEOV,A0 JREQ ADDBUY1 CMPI INAMODE,A0 JRNE ADDBUYX ADDBUY1: MOVI IBUYINS,A0 MOVE A0,@P1DATA+PBUYINS,W MOVE A0,@P2DATA+PBUYINS,W ADDBUYX: PULL A0 RETS ************************************************************************** * SECOND PLAYER GAME START * * IF THE GAME IS IN PLAY, THEN PLAYER TWO WILL BE ADDED, OTHERWISE * * A NEW 2 PLAYER GAME WILL RESULT. * ************************************************************************** P2ONLY: MOVK 2,A1 MOVE @STARTUP,A2 ADD A2,A1 MOVE A1,@STARTUP,W ; MOVI BBUYIN,A0 ; MOVE A0,*A2(PFLAGS),L MOVI P2PID,A0 CLR A1 NOT A1 CALLA KILALL ;KILL PLAYER 2 ATTRACT MESSAGE MOVK 2,A1 ; MOVE A1,@MSGSET MOVE @SCORETYP,A0 OR A0,A1 MOVE A1,@SCORETYP ;DISPLAY SCORE PLAYER 2 MOVE @METERP2,A0,L MOVE @P2MTRY,A1,W MOVE A1,*A0(OYPOS),W MOVI CLSNEUT|TYPTEXT|SUBP2TXT,A0 CLR A1 NOT A1 CALLA KILOBJ ;CLEAR PLAYER MESSAGE MOVE @STARTUP,A1 MOVE @GAMSTATE,A0,W CMPI INAMODE,A0 JREQ GAUD2STR ;COLD START PLAYER 2 MOVE @GAMSTATE,A0,W CMPI INGAMEOV,A0 JRNE G2STRBUY ;GAME IN SESSION GAUD2STR: AUDIT AUD2STRT ;AUDIT A PLAYER 2 START JRUC GAMESTR ;AND FIRE UP THE GAME G2STRBUY: MOVI P2DATA,A2 MOVE *A2(PSCORE),A0,L JRNZ P2GBUY ;SCORE INDICATES CONTINUE ;INHERE: MOVE @WAVE,A0 CMPI 1,A0 JRNZ P2GBUY AUDIT AUD2STRT ; MOVE @NPLYRS,A0,W ; INC A0 ; MOVE A0,@NPLYRS,W ;UPDATE PLAYER COUNT JRUC P2GINIT P2GBUY: AUDIT AUD2CONT P2GINIT: CLR A0 MOVE A0,@SOUNDSUP,W ;TURN ALL SOUNDS ON MOVI MCSPK6,A0 ;WELCOME PLAYER AUDIO CALLA ONESND JRUC P2GAMEDI * *PLAYER 2 BUYIN P2BUYIN: MOVE @STATUS,A1 ORI 2,A1 MOVE A1,@STATUS MOVK 2,A1 MOVE @STARTUP,A2 ADD A2,A1 MOVE A1,@STARTUP,W MOVI P2PID,A0 ;KILLS MESSAGE PROC CLR A1 NOT A1 CALLA KILALL ;KILL PLAYER ATTRACT MESSAGE MOVI CLSNEUT|TYPTEXT|SUBDG2I,A0 CALLA EXISTOBJ JRZ RND0 MOVI CLSNEUT|TYPTEXT|SUBDG2I,A0 CALLA KILOBJ ;CLEAR PLAYER MESSAGE MOVI DG2PID,A0 CALLA KILALL ;KILL CNTDWN PROC ;RESTORE HAT&METER@LIVES DIGIT MOVE @METERP2,A0,L MOVE @P2MTRY,A1,W MOVE A1,*A0(OYPOS),W MOVE @RFACEP,A0,L MOVE @RFCY,A3 MOVE A3,*A0(OYPOS),W MOVI P2DATA,A0 CLR A3 ; MOVB A3,@CNTDIG2 MOVB A3,*A0(CNTD) RND0 MOVI CLSNEUT|TYPTEXT|SUBP2TXT,A0 CLR A1 NOT A1 CALLA KILOBJ ;CLEAR PLAYER MESSAGE MOVK 2,A1 MOVI BBUYIN,A0 MOVE A0,*A2(PFLAGS),L ;MARCH 22 MOVE @WAVE,A0 CMPI 1,A0 JRNZ YESCNT2 AUDIT AUD2STRT JRUC YES3 YESCNT2 AUDIT AUD2CONT YES3 CLR A3 MOVB A3,@CNTDIG2 MOVI PLY2PID,A0 CLR A1 NOT A1 CALLA EXISTP JRNZ ZD ;BR=I'M DEAD ON SCREEN RIGHT NOW! MOVE @METERP2,A0,L MOVE @P2MTRY,A1,W MOVE A1,*A0(OYPOS),W MOVB @CANT,A0 CMPI 0FFFFFFFFH,A0 JRNE ZC ;FROM PODIUM. THIS PLAYER HIT HIS BUTTON SECOND! HE WILL JOIN OTHER PLAYER ;BEHIND PODIUM! MOVK 1,A0 MOVB A0,@DUMB2 CALLA P2LLINIT ;RE-INIT PLAYER 2 ; MOVI STALL,A0 ; CLR A1 ; NOT A1 ; CALLA EXISTP ;CHECK TO SEE IF WE KEEP SCORE AD PRIZES ; ;FOR THIS GUY ; JRNZ INTIME CLR A0 MOVI P2DATA,A11 MOVE A0,*A11(PSCORE),L ;INC CMOS COUNT OF GAMES STARTED! CALLR CLRP2PZ ;SET FREE MAN POINT LEVEL CALLA SET_1ST CALLA DEC_LV CLR A9 MOVK 2,A8 CREATE PLY2PID,DRAW_PLYR_TORSO ;CREATE PLAYER CHARACTER ;A8=P1CTRL OR P2CTRL JRUC ZDA ZC ;BUYIN PLAYER RUNS IN FROM SIDE ;A8=1 OR 2 CALLA P2LLINIT ;RE-INIT PLAYER 2 MOVK 2,A9 ;INDICATES BUYIN CLR A0 MOVI P2DATA,A11 MOVE A0,*A11(PSCORE),L ;INC CMOS COUNT OF GAMES STARTED! CALLR CLRP2PZ ;SET FREE MAN POINT LEVEL CALLA SET_1ST CALLA DEC_LV MOVK 2,A8 CREATE PLY2PID,DRAW_PLYR_TORSO ;CREATE PLAYER CHARACTER ;A8=P1CTRL OR P2CTRL CALLR DO_LIVECNT SLEEP 1 ;RUN DOWN FROM PODIUM MOVI P2CTRL,A8 CREATE SCRPID,SCRIPTPLAY JRUC ZDA DO_LIVECNT MMTM SP,A2,A3,A4,A5,A6,A7,A8,A9 CLR A9 CALLA LIVECNT MMFM SP,A2,A3,A4,A5,A6,A7,A8,A9 RETS CLRP1PZ CLR A0 MOVB A0,@P1PZ1 MOVB A0,@P1PZ2 MOVB A0,@P1PZ3 MOVE A0,@P1CSH RETS CLRP2PZ CLR A0 MOVB A0,@P2PZ1 MOVB A0,@P2PZ2 MOVB A0,@P2PZ3 MOVE A0,@P2CSH RETS ZD CALLA P2LLINIT ;RE-INIT PLAYER 2 ;SET FREE MAN POINT LEVEL ; MOVI P2DATA,A11 ; CALLA SET_1ST ; CALLA DEC_LV ZDA CLR A0 MOVB A0,@DUMB2 ; CLR A0 MOVE A0,@SOUNDSUP,W ;TURN ALL SOUNDS ON MOVI MCSPK6,A0 ;WELCOME PLAYER AUDIO CALLA ONESND ;TELL INTERRUPTS TO DRAW SCORE DIGITS FOR PLYR 2 MOVB @WNTOUT,A0 JRZ NOPZ0 MOVK 1,A0 MOVB A0,@WNTOUT NOPZ0 MOVK 2,A1 MOVE @SCORETYP,A0 OR A0,A1 MOVE A1,@SCORETYP ;DISPLAY SCORE PLAYER 2 ; MMTM SP,A2,A3,A4,A5,A6,A7,A8 ; CLR A9 ; CALLA LIVECNT ; MMFM SP,A2,A3,A4,A5,A6,A7,A8 P2GAMEDI: MOVE @EHALT,A0 CMPI >111,A0 JRNE S90 CREATE 0,SETHLT S90 JAUC SUCIDE SETHLT SLEEP 3 CLR A0 MOVE A0,@EHALT DIE ************************************************************************** * FIRST PLAYER GAME START * * IF THE GAME IS IN PLAY, PLAYER ONE WILL BE ADDED, OTHERWISE A NEW * * ONE PLAYER GAME WILL RESULT. * ************************************************************************** P1GAME: MOVK 1,A1 MOVE @STARTUP,A2 ADD A2,A1 MOVE A1,@STARTUP ; MOVI BBUYIN,A0 ; MOVE A0,*A2(PFLAGS),L MOVI P1PID,A0 CLR A1 NOT A1 CALLA KILALL ;KILL PLAYER 1 ATTRACT MESSAGE MOVB @WNTOUT,A0 JRZ NOPZ2 MOVK 1,A0 MOVB A0,@WNTOUT NOPZ2 MOVK 1,A1 ; MOVE A1,@MSGSET MOVE @SCORETYP,A0 OR A0,A1 MOVE A1,@SCORETYP ;DISPLAY SCORE PLAYER 1 MOVE @METERP1,A0,L MOVE @P1MTRY,A1,W MOVE A1,*A0(OYPOS),W MOVI CLSNEUT|TYPTEXT|SUBP1TXT,A0 CLR A1 NOT A1 CALLA KILOBJ ;CLEAR PLAYER MESSAGE MOVE @STARTUP,A1 MOVE @GAMSTATE,A0,W CMPI INAMODE,A0 JREQ GAUD1STR ;COLD START GAME, PLAYER 1 ONLY CMPI INGAMEOV,A0 JRNE G1STRBUY ;GAME IS IN SESSION GAUD1STR: AUDIT AUD1STRT ;AUDIT A PLAYER 1 START JRUC GAMESTR ;AND FIRE UP THE GAME G1STRBUY: ;ADDED MARCH 22 ; MOVI P1DATA,A2 ; MOVB @CNTDIG1,A0 ; JRZ INHERE1 MOVI P1DATA,A2 MOVE *A2(PSCORE),A0,L JRNZ P1GBUY ;SCORE, MARK THIS AS A CONTINUE ;INHERE1: MOVE @WAVE,A0 CMPI 1,A0 JRNZ P1GBUY AUDIT AUD1STRT ; MOVE @NPLYRS,A0,W ; INC A0 ; MOVE A0,@NPLYRS,W ;UPDATE PLAYER COUNT JRUC P1GINIT P1GBUY: AUDIT AUD1CONT P1GINIT: JRUC P1GAMEDI * *ENTRY POINT FOR PLAYER 1 BUYIN P1BUYIN: MOVE @STATUS,A1 ORI 1,A1 MOVE A1,@STATUS MOVK 1,A1 MOVE @STARTUP,A2 ADD A2,A1 MOVE A1,@STARTUP MOVI P1PID,A0 CLR A1 NOT A1 CALLA KILALL ;KILL PLAYER ATTRACT MESSAGE MOVI CLSNEUT|TYPTEXT|SUBDG1I,A0 CALLA EXISTOBJ JRZ RND MOVI CLSNEUT|TYPTEXT|SUBDG1I,A0 CALLA KILOBJ ;CLEAR PLAYER MESSAGE MOVI DG1PID,A0 CALLA KILALL ;KILL CNTDWN PROC ;RESTORE HAT&METER&DIGIT MOVE @METERP1,A0,L MOVE @P1MTRY,A1,W MOVE A1,*A0(OYPOS),W MOVE @LFACEP,A0,L MOVE @LFCY,A3 MOVE A3,*A0(OYPOS),W MOVI P1DATA,A0 CLR A3 ; MOVB A3,@CNTDIG1 MOVB A3,*A0(CNTD) RND MOVI CLSNEUT|TYPTEXT|SUBP1TXT,A0 CLR A1 NOT A1 CALLA KILOBJ ;CLEAR PLAYER MESSAGE MOVK 1,A1 MOVI BBUYIN,A0 MOVE A0,*A2(PFLAGS),L ;MARCH 22 ;3/23/90 MOVE @WAVE,A0 CMPI 1,A0 JRNZ YESCNT AUDIT AUD1STRT JRUC YES2 YESCNT AUDIT AUD1CONT YES2 CLR A3 MOVB A3,@CNTDIG1 MOVI PLY1PID,A0 CLR A1 NOT A1 CALLA EXISTP JRNZ ZB ;BR=I'M DEAD ON SCREEN RIGHT NOW! ; MOVB @WNDO,A0 ; JREQ SF2 ;WINDOW UP, DISPLAY STANDBY MESSAGE FOR PLAYER 1 ;THEN WHEN WINDOW IS GONE, COME BACK HERE AND CONTINUE ; MOVK 1,A0 ; MOVB A0,@STANDBY ; MOVB A0,@WANTIN ; MOVI P1DATA,A11 ; CALLA AH ;PUTS UP STANDBY MESSAGE ; CALLA AH2 ;PUTS UP STANDBY MESSAGE ; CREATE 0,BYSTAND2 ; DIE ;BYSTAND2 ; SLEEP 1 ; MOVB @WNDO,A0 ; JRNE BYSTAND2 ; MOVE @STATUS,A0 ; CMPI 3,A0 ; JRZ FIX2 ;RESTART PLAYER 2 MESSAGES ; MOVI P2DATA,A11 ; CREATE P2PID,MSG_PROC ;ALWAYS DISPLAY START STUFF IN ATTRACT ;FIX2 MOVI CLSNEUT|TYPTEXT|SUBP1TXT,A0 ; CLR A1 ; NOT A1 ; CALLA KILOBJ ;CLEAR PLAYER MESSAGE ;CLEAR STANDBY MESSAGE ;PUT P1 METER ON SCREEN ; MOVE @METERP1,A0,L ; MOVE @P1MTRY,A1,W ; MOVE A1,*A0(OYPOS),W ; JRUC ZZA ;SF2 MOVE @METERP1,A0,L MOVE @P1MTRY,A1,W MOVE A1,*A0(OYPOS),W MOVB @CANT,A0 CMPI 0FFFFFFFFH,A0 JRNE ZZA MOVK 1,A0 MOVB A0,@DUMB2 CALLA P1LLINIT ;RE-INIT PLAYER 1 CLR A0 MOVI P1DATA,A11 MOVE A0,*A11(PSCORE),L ;INC CMOS COUNT OF GAMES STARTED! CALLR CLRP1PZ ;SET FREE MAN POINT LEVEL CALLA SET_1ST CALLA DEC_LV CLR A9 ; MOVK 1,A0 ; MOVB A0,@DUMB2 MOVK 1,A8 CREATE PLY1PID,DRAW_PLYR_TORSO ;CREATE PLAYER CHARACTER ;A8=P1CTRL OR P2CTRL JRUC ZBA ; JRUC ZB ;BUYIN PLAYER RUNS IN FROM SIDE ZZA ;A8=1 OR 2 CALLA P1LLINIT ;RE-INIT PLAYER 1 MOVK 1,A9 ;INDICATES BUYIN CLR A0 MOVI P1DATA,A11 MOVE A0,*A11(PSCORE),L ;INC CMOS COUNT OF GAMES STARTED! CALLR CLRP1PZ ;SET FREE MAN POINT LEVEL CALLA SET_1ST CALLA DEC_LV MOVK 1,A8 CREATE PLY1PID,DRAW_PLYR_TORSO ;CREATE PLAYER CHARACTER ;A8=P1CTRL OR P2CTRL SLEEP 1 MOVI P1CTRL,A8 CREATE SCRPID,SCRIPTPLAY CALLR DO_LIVECNT ; MMTM SP,A2,A3,A4,A5,A6,A7,A8,A9 ; CLR A9 ; CALLA LIVECNT ; MMFM SP,A2,A3,A4,A5,A6,A7,A8,A9 JRUC ZBA ZB CALLA P1LLINIT ;RE-INIT PLAYER 1 ;SET FREE MAN POINT LEVEL ; MOVI P1DATA,A11 ; CALLA SET_1ST ; CALLA DEC_LV ZBA CLR A0 MOVB A0,@DUMB2 ; CLR A0 MOVE A0,@SOUNDSUP,W ;TURN ALL SOUNDS ON MOVI MCSPK5,A0 ;WELCOME PLAYER AUDIO CALLA ONESND ; MMTM SP,A2,A3,A4,A5,A6,A7,A8 ; CLR A9 ; CALLA LIVECNT ; MMFM SP,A2,A3,A4,A5,A6,A7,A8 P1GAMEDI: MOVB @WNTOUT,A0 JRZ NOPZ MOVK 1,A0 MOVB A0,@WNTOUT NOPZ MOVK 1,A1 ; MOVE A1,@MSGSET MOVE @SCORETYP,A0 OR A0,A1 MOVE A1,@SCORETYP ;DISPLAY SCORE PLAYER 1 MOVE @EHALT,A0 CMPI >111,A0 JRNE S99 CREATE 0,SETHLT S99 JAUC SUCIDE DEC_LV MOVE *A11(PLIVES),A0 DEC A0 MOVE A0,*A11(PLIVES) RETS * *GAME START PROCESS *A1 = PLAYERS TO START, 0 = NONE?,1 = PLAYER 1,2 = PLAYER 2,3 = BOTH GAMESTR: ; MOVE A1,@STATUS,W ; ;POSSIBLY DO SOME OTHER KIND OF WIPE (NOT WNDON) IF FROM CREDITS SCREEN! MOVI CP_PID2,A0 ;ARE WE SHOWING THE CREDIT PAGE? CLR A1 NOT A1 CALLA KILALL MOVI CP_PID1,A0 ;ARE WE SHOWING THE CREDIT PAGE? CALLA KILALL MOVI 0FFH,A0 MOVB A0,@CANT JSRP WNDWON MOVI 0,A0 MOVE A0,@IRQSKYE CALLA CLRPAL SLEEP 1 ;MAYBE NOT NEEDED! ; MOVI SETCOL,A0 ; CALLA BLAKOUT ;BLACK OUT BAKGROUND PALETTES ; MOVI PAL2TV,A0 ; CALLA BLAKOUT ;BLACK OUT BAKGROUND PALETTES ; MOVI NUARENAP,A0 ; CALLA BLAKOUT ;BLACK OUT BAKGROUND PALETTES CALLR WIPEOUT ;CLEAN SYSTEM OUT CLR A0 MOVE A0,@PLYROBJS,L MOVE A0,@PLYROBJS+32,L MOVE A0,@MTR1CNT,W ;TAKES CARE OF BOTH CNTRS MOVK 1,A0 MOVE A0,@GAMERASE CALLA AUTOEON CALLA COLRPRC ;INIT FIXED PAL 0 ;INIT NUARENAP AS SECOND PAL! MOVI NUARENAP,A0 ;FOR SCORE DIGITS! CALLA GETFPAL MOVI INGAME,A0 MOVE A0,@GAMSTATE,W ;FLAG THE INTRO MOVE @STATUS,A1,W MOVI P1DATA,A11 SRL 1,A1 PUSH A1 JRNC GAME2STR CALLA P1LLINIT ;RE-INIT PLAYER 1 CLR A0 MOVB A0,@DUMB2 ; MOVE @NPLYRS,A0,W ; INC A0 ; MOVE A0,@NPLYRS,W ;UPDATE PLAYER COUNT GAME2STR: PULL A1 MOVI P2DATA,A11 SRL 1,A1 JRNC GAMSTX CALLA P2LLINIT ;RE-INIT PLAYER 2 CLR A0 MOVB A0,@DUMB2 ; MOVE @NPLYRS,A0,W ; INC A0 ; MOVE A0,@NPLYRS,W ;UPDATE PLAYER COUNT GAMSTX: MOVK 1,A0 MOVE A0,@WAVE,W ;WAVE #1 CLR A0 MOVE A0,@P1CTRL MOVE A0,@P2CTRL CREATE 0,INIT_GAME ;INITIALIZE GAMEPLAY ; SOUND1 PLYINSND MOVI LEGOSND,A0 ;WELCOME PLAYER AUDIO CALLA ONESND JAUC SUCIDE GETLVS ADJUST ADJLIVES ;GET LIVES PER GAME ; MOVK 3,A0 ;LIVES PER COIN RETS P1LLINIT: MOVI P1DATA,A11 CALLA GETLVS MOVE A0,*A11(PLIVES),W ; MOVI 120,A0 ;IS PLYRPRCS SETUP AT THIS POINT?!?!?!?!!! ; MOVE @PLYRPRCS,A1,L ; MOVE A0,*A1(DELYDET) ; MOVB @DUMB2,A0 JRNE RTPE CALLR DO_LIVECNT ; MMTM SP,A2,A3,A4,A5,A6,A7,A8,A9 ; CLR A9 ; CALLA LIVECNT ; MMFM SP,A2,A3,A4,A5,A6,A7,A8,A9 RTPE RETS P2LLINIT: ;A11 = PLAYER DATA STRUCTURE MOVI P2DATA,A11 CALLA GETLVS MOVE A0,*A11(PLIVES),W ; MOVI 120,A0 ;IS PLYRPRCS SETUP AT THIS POINT?!?!?!?!!! ; MOVE @PLYRPRCS+32,A1,L ;GET PLAYER 2 ; MOVE A0,*A1(DELYDET) MOVB @DUMB2,A0 JRNE RTPE CALLR DO_LIVECNT ; MMTM SP,A2,A3,A4,A5,A6,A7,A8,A9 ; CLR A9 ; CALLA LIVECNT ; MMFM SP,A2,A3,A4,A5,A6,A7,A8,A9 RETS ************************************************************************** * * * WIPEOUT - WIPES THE SYSTEM CLEAR OF ALL OTHER PROCESSES, OBJECTS * * AND COORDINATES. IT RETURNS WITH AUTO-ERASE SHUT OFF, * * DISPLAY PROCESSOR DISABLED * COLOR RAM CLEARED, AND THE BIT MAP WIPED CLEAN. * * THIS IS NICE TO USE WHEN SWITCHING BETWEEN STUFF. * ************************************************************************** WIPEOUT: MMTM SP,A0,A1 CLR A0 ; MOVB A0,@GOUP MOVE A0,@SCORE_FLAG,W ;INSURE SCORE DMA IS NOT PERFORMED MOVE A0,@P1CTRL,W MOVE A0,@P2CTRL,W ;CLEAR PLAYER CPU CONTROLS MOVE A0,@P1DATA+POBJ,L MOVE A0,@P2DATA+POBJ,L MOVE A0,@PLAYPAGE,W ;CLEAR THE ATTRACT MODE PLAY PAGE MOVI PLIST_ID,A1 CLR A0 CALLA KILALL ;KILL ALL PROCS, EXCEPT FOR COINS CALLA KILBGND ;WIPEOUT BACKGROUND BLOCKS CLR A0 MOVE A0,@SOUNDSUP,W ;MAKE SURE SOUNDS ARE ALLOWED MOVE A0,@GAMERASE,W MOVE A0,@IRQSKYE,W CALLA AUTOEOFF ; CLR A0 ; MOVE A0,@DISPLAYON,W ;TURN THE DISPLAY PROCESSOR OFF CALLA DMAQWAIT PUSHST DINT CALLA CLRSWPRC CALLA MYOINIT ;RE-INIT THE OBJECT LIST CALLA CLRWORLD ;RESET THE WORLD CALLR SYSINITL CALLA CLR_SCRN ; CALLA CLRPAL ;CLEAR OUT PALLS POPST CALLA SYNCFULL ;NOW WAIT FOR VBLANK TO ZAP COLOR MAP MOVI 0FFFCH,A0 MOVE A0,@DPYSTRT,W ;RESET DISPLAY START POINT MMFM SP,A0,A1 RETS ************************************************************************** * * * SYSINITL - INITIALIZE LOW BYTE OF SYSTEM CONTROL REGISTER * * * ************************************************************************** SYSINITL MMTM SP,A0,A1 MOVE @SYSCOPY,A0,W MOVI SYSCINIT,A1 SLL 24,A1 SRL 24,A1 OR A1,A0 MOVE A0,@SYSCOPY,W ;RE-INITIALIZE SYSTEM CONTROL REG MOVE A0,@SYSCTRL,W MMFM SP,A0,A1 RETS ; ;AMOVETAB: ; .LONG AWAV1MOV,AWAV2MOV,AWAV3MOV,AWAV4MOV,AWAV5MOV,AWAV6MOV GMOVTAB: .LONG TVMOV,LFTDOOR,RGTDOOR,TOPDOOR,BOTDOOR ; ;ATTRACT MODE PLAYER MOVEMENT TABLES ; .WORD STICK_BITS,SLEEP_TIME ; . ; . ; .WORD 0FFFFH ; AWAV1MOV: ;PLACE SCRIPT FOR WAVE 2 HERE! .WORD 0,60*4 .WORD PFRYTE|PUP,20H .WORD PFRYTE|PDOWN,40H .WORD PFRYTE,20H .WORD 0,5H .WORD PFRYTE,20H .WORD PLEFT,20H .WORD PFRYTE|PUP,50H .WORD PFRYTE|PDOWN,20H .WORD PFRYTE|PUP,20H .WORD PFRYTE|PDOWN,40H .WORD PUP,26H .WORD 0,20H .WORD PRYTE,25H .WORD PUP,10H .WORD PRYTE|PFDOWN,55H .WORD PFUP|PDOWN,20H .WORD PFRYTE|PLEFT,20H .WORD PFRYTE|PUP,20H .WORD PFRYTE|PDOWN,30H .WORD PFRYTE,20H .WORD PLEFT,20H .WORD PFDOWN|PRYTE,15H .WORD PUP,26H .WORD PRYTE|PFDOWN,22H .WORD PFUP|PDOWN,20H ; .WORD 0FFFFH .WORD PFRYTE|PLEFT,30H .WORD PFRYTE|PUP,20H .WORD PFRYTE|PDOWN,35H .WORD PFLEFT|PUP,20H .WORD PFLEFT|PDOWN,35H .WORD PFRYTE|PDOWN,30H .WORD PFRYTE,20H .WORD PRYTE|PUP|PFDOWN,30H .WORD PLEFT,20H .WORD PFDOWN|PRYTE,15H .WORD PUP,26H .WORD PRYTE|PFDOWN,22H .WORD PFUP|PDOWN,20H .WORD PFRYTE|PLEFT,30H .WORD PFRYTE|PUP,20H .WORD PFRYTE|PDOWN,35H .WORD PFLEFT|PUP,20H .WORD PFLEFT|PDOWN,35H .WORD 0FFFFH SNAKELST ;EXIT FROM RIGHT DOOR WITH SNAKES .WORD PRYTE,06FH .WORD PDOWN|PRYTE,2H .WORD PDOWN,30H .WORD PDOWN|PRYTE,2H .WORD PRYTE,0FAH .WORD 0,1H .WORD 0FFFFH TVMOV: ;TELEVISION INTRO SCREEN PLAYER MOVEMENT/ANIMATION SCRIPT .WORD PUP,2 .WORD PUP|PRYTE,3H .WORD PRYTE,044H .WORD PDOWN|PRYTE,2H .WORD PDOWN,30H .WORD PDOWN|PRYTE,2H .WORD PRYTE,014AH .WORD 0,1H .WORD 0FFFFH TVMOV2: ;TELEVISION INTRO SCREEN PLAYER MOVEMENT/ANIMATION SCRIPT .WORD PUP,2 .WORD PUP|PLEFT,3H .WORD PLEFT,040H .WORD PDOWN|PLEFT,2H .WORD PDOWN,2AH .WORD PDOWN|PRYTE,2H .WORD PRYTE,014AH .WORD 0,1H .WORD 0FFFFH LDRS: .WORD PRYTE,01H .WORD PRYTE,01H .WORD PRYTE,01H .WORD PRYTE,01H .WORD PRYTE,01H .WORD PRYTE,01H .WORD PRYTE,01H .WORD PRYTE,01H .WORD PRYTE,01H .WORD PRYTE,01H .WORD PRYTE,01H .WORD PRYTE,01H .WORD PRYTE,01H .WORD PRYTE,01H .WORD PRYTE,01H .WORD PRYTE,01H .WORD PRYTE,01H .WORD PRYTE,01H .WORD PRYTE,01H .WORD PRYTE,01H .WORD PRYTE,01H .WORD PRYTE,01H .WORD PRYTE,01H LDRS2: .WORD PRYTE,01H .WORD PRYTE,01H .WORD PRYTE,01H .WORD PRYTE,01H .WORD PRYTE,01H .WORD PRYTE,01H .WORD PRYTE,01H .WORD PRYTE,01H .WORD PRYTE,01H .WORD PRYTE,01H .WORD PRYTE,01H .WORD PRYTE,01H .WORD PRYTE,01H .WORD PRYTE,01H .WORD PRYTE,01H .WORD PRYTE,01H .WORD PRYTE,01H .WORD PRYTE,01H .WORD PRYTE,01H .WORD PRYTE,01H .WORD PRYTE,01H .WORD PRYTE,01H .WORD PRYTE,01H .WORD PRYTE,01H .WORD PRYTE,01H .WORD PRYTE,01H .WORD 0,1H .WORD 0FFFFH RGTDOOR: ;EXIT FROM RIGHT DOOR .WORD PRYTE,0DFH .WORD 0,1H .WORD 0FFFFH BOTDOOR: ;EXIT FROM BOTTOM DOOR .WORD PDOWN,0A3H .WORD 0,1H .WORD 0FFFFH RDRS: .WORD PLEFT,01H .WORD PLEFT,01H .WORD PLEFT,01H .WORD PLEFT,01H .WORD PLEFT,01H .WORD PLEFT,01H .WORD PLEFT,01H .WORD PLEFT,01H .WORD PLEFT,01H .WORD PLEFT,01H .WORD PLEFT,01H .WORD PLEFT,01H .WORD PLEFT,01H .WORD PLEFT,01H .WORD PLEFT,01H .WORD PLEFT,01H .WORD PLEFT,01H .WORD PLEFT,01H .WORD PLEFT,01H .WORD PLEFT,01H .WORD PLEFT,01H .WORD PLEFT,01H .WORD PLEFT,01H RDRS2: .WORD PLEFT,01H .WORD PLEFT,01H .WORD PLEFT,01H .WORD PLEFT,01H .WORD PLEFT,01H .WORD PLEFT,01H .WORD PLEFT,01H .WORD PLEFT,01H .WORD PLEFT,01H .WORD PLEFT,01H .WORD PLEFT,01H .WORD PLEFT,01H .WORD PLEFT,01H .WORD PLEFT,01H .WORD PLEFT,01H .WORD PLEFT,01H .WORD PLEFT,01H .WORD PLEFT,01H .WORD PLEFT,01H .WORD PLEFT,01H .WORD PLEFT,01H .WORD PLEFT,01H .WORD PLEFT,01H .WORD PLEFT,01H .WORD PLEFT,01H .WORD PLEFT,01H .WORD 0,1H .WORD 0FFFFH LFTDOOR: ;EXIT FROM LEFT DOOR .WORD PLEFT,0DFH .WORD 0,1H .WORD 0FFFFH TOPDOOR: ;EXIT FROM TOP DOOR .WORD PUP,0AAH .WORD 0,1H .WORD 0FFFFH ; GRAT: .long GRATSBMOD ;THIS IS FROM BLIMP (MODULE NAME) .WORD 0,01H ;x,y start pos. .LONG >FFFFFFFF LOGO: .long LOGOBMOD ;THIS IS FROM BLIMP (MODULE NAME) .WORD 0,0FFFEH ;x,y start pos. .LONG >FFFFFFFF LOGO2: .long logo2BMOD ;THIS IS FROM BLIMP (MODULE NAME) .WORD 3,0FFFEH ;x,y start pos. .LONG >FFFFFFFF ;FBI1: ; .long FBIBMOD ;THIS IS FROM BLIMP (MODULE NAME) ; .WORD 0BH,012H ;x,y start pos. ; .LONG >FFFFFFFF CHAMPS: .long tenBMOD ;THIS IS FROM BLIMP (MODULE NAME) .WORD 0AH,-4 ;x,y start pos. .LONG >FFFFFFFF OFFER: .long tshirtBMOD ;THIS IS FROM BLIMP (MODULE NAME) .WORD 013H,-2 ;x,y start pos. .LONG >FFFFFFFF INITL: .long BONUSIIBMOD ;THIS IS FROM BLIMP (MODULE NAME) .WORD 2,0 ;x,y start pos. .LONG >FFFFFFFF TITLE: .long TITPGBMOD ;THIS IS FROM BLIMP (MODULE NAME) .WORD 4,0 ;x,y start pos. .LONG >FFFFFFFF .END