revolution-x/GXATT.ASM

2788 lines
50 KiB
NASM
Raw Permalink Blame History

This file contains invisible Unicode characters!

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

.MLIB "GXMACS.LIB"
.FILE "GXATT.ASM"
.TITLE " <<< GENERATION X -- ATTRACT MODE ROUTINES >>>"
.WIDTH 132
.OPTION B,D,L,T
.MNOLIST
**************************************************************************
* *
* COPYRIGHT (C) 1992 MIDWAY MANUFACTURING COMPANY. *
* ALL RIGHTS RESERVED. *
* *
**************************************************************************
* GET THE SYSTEM STUFF
.INCLUDE "GX.INC"
.INCLUDE "GXSTRING.H"
.INCLUDE "IMGTBL.GLO"
.INCLUDE "BGNDTBL.GLO" ;Background equates
.INCLUDE "GXATT.TBL"
.INCLUDE "UNIVTBL.GLO"
.DEF ATTRACT_MODE, ATT_MODE_HSTD
.DEF ATT_MODE_GAME_OVER
.DEF OCTO_PAGE, ATT_MODE_CREDIT
.DEF ON_CRED, AMODE_LOOPS
.DEF C_POSITION, REVEAL_Y
; .DEF GAME_CREDITS
.DEF KIL_CYCLE_COL
*SYMBOLS IN GX.ASM
.REF WARMSET, WIPEOUT, SLEEP_SWITCHX
*SYMBOLS IN APCOIN.ASM
.REF GAMEUNITS, CREDIT_SCREEN
*SYMBOLS IN APHSTD.ASM
.REF ATT_HSTD, NEW_HISCORES
.REF OCTO_AUDS,SWITCH_SPOKEN
.REF CREDIT_LINE_MESS
.REF DISC_BGND
.REF AERO_WINGS_INIT
.REF CHAR_PLOT, ENTRY_PTR, RC_BYTEI, ALL_TAB
.REF CHAR_SCORE, FETCH_SCORE
.REF QSNDRST,GRAMINIT,CLR_ALL_PDATA,SCORPROC,WAVE_START
.REF CYCLE16
.REF SETUP_TEST
.REF CLR_ALL_PDATA
.REF MERGE_UNIV_OFF
.REF HS_ENTRY_SCRN
* SYMBOLS IN GXLA1.ASM
.REF LA_OUTSIDE1_VECT_TABLE
*SYMBOLS IN GXBONUS.ASM
.REF INIT_ZERO_UNIVERSE
.REF AERO_BGND
.REF COLRTEMP
***** from GXRAM.ASM
.REF DO_CREDITS
.REF DO_CD_OFFER
.bss LINE_STARTXY,32
.bss TEXT_YPOS,32
.BSS ON_CRED,16
.BSS AMODE_LOOPS,16 ;LOOP COUNTER FOR ATTRACT MODE
.BSS AERO_LOOPS,32 ;LOOP COUNTER FOR ATTRACT MODE
.BSS REV_LET_TABLE,32*22
.BSS REV_LET_TABLE_END,0
.REF TEACHER_BGND
.REF LGHL1ARM1
.REF LGHL1ARM2
.REF LGHL2ARM1
.REF LGHL2ARM2
.REF LGHL3ARM1
.REF LGHL3ARM2
.REF LGHL3ARM3
.TEXT
.EVEN
DISC_PAGE
CALLA INIT_ZERO_UNIVERSE ;set up dummy universe
MOVKM 3,@GAMERASE,W
CLRM @SCRNTL,L
DISPON
MOVKM 1,@BLACKOUT,W
MOVI NUMBER_ONE_MESS,A8
CALLA LM_SETUP
JSRP PRINTF
MOVE A2,A8
CLR A0
DEC A0
PLACE_OVER_DISC_1
MOVE A0,*A8(OZVAL),L
MOVE *A8(OPARTS),A8,L
JRNZ PLACE_OVER_DISC_1
MOVI PLAT_MESS,A8
CALLA LM_SETUP
JSRP PRINTF
MOVE A2,A8
CLR A0
DEC A0
PLACE_OVER_DISC_2
MOVE A0,*A8(OZVAL),L
MOVE *A8(OPARTS),A8,L
JRNZ PLACE_OVER_DISC_2
MOVI KERRI_1_INIT,B0
CALLA EASYMAKE
MOVE A0,A8
MOVI TEXTPAL,A0
CALLA CHANGE_PAL
MOVI COLOR_BLACK,A0
MOVE A0,*A8(OCONST)
MOVI KERRI_2_INIT,B0
CALLA EASYMAKE
MOVE A0,A8
MOVI TEXTPAL,A0
CALLA CHANGE_PAL
MOVI COLOR_BLACK,A0
MOVE A0,*A8(OCONST)
MOVI REV_REVX_INIT,B0
CALLA EASYMAKE
MOVI 180,A1
MOVE A1,*A0(OYPOS)
MOVI AERO_WINGS_INIT,B0
CALLA EASYMAKE
MOVI 155,A1
MOVE A1,*A0(OXPOS)
MOVI 200,A1
MOVE A1,*A0(OYPOS)
MOVI ALL_TAB,A8
CLR A0
MOVE A0,@CHAR_PLOT,L
INC A0
CALLA FETCH_SCORE ; GET THE SCORE
MOVE A1,@CHAR_SCORE,L
CALLA ENTRY_PTR ; POINT TO THE RIGHT ENTRY
MOVE A7,A1 ; SAVE IT AROUND
ADDI HS_INITS,A7 ; GET TO THE INITIALS
CALLA RC_BYTEI
MOVB A0,@CHAR_PLOT
CALLA RC_BYTEI
MOVB A0,@CHAR_PLOT+8
CALLA RC_BYTEI
MOVB A0,@CHAR_PLOT+16
MOVI NUM_1A_MESS,A8 ; DISPLAY ENTRY INITIALS
CALLA LM_SETUP
JSRP PRINTF
MOVE A2,A8
CLR A0
DEC A0
PLACE_OVER_DISC_3
MOVE A0,*A8(OZVAL),L
MOVE *A8(OPARTS),A8,L
JRNZ PLACE_OVER_DISC_3
MOVI NUM_1B_MESS,A8 ; DISPLAY ENTRY INITIALS
CALLA LM_SETUP
JSRP PRINTF
MOVE A2,A8
CLR A0
DEC A0
PLACE_OVER_DISC_4
MOVE A0,*A8(OZVAL),L
MOVE *A8(OPARTS),A8,L
JRNZ PLACE_OVER_DISC_4
MOVI NUM_1C_MESS,A8 ; DISPLAY ENTRY INITIALS
CALLA LM_SETUP
JSRP PRINTF
MOVE A2,A8
CLR A0
DEC A0
PLACE_OVER_DISC_5
MOVE A0,*A8(OZVAL),L
MOVE *A8(OPARTS),A8,L
JRNZ PLACE_OVER_DISC_5
MOVI DISC_BGND,A10
CALLA StrtBgnd ;ON WITH ONE PLANE
CLRM @IRQSKYE,W
SLEEP 1
MOVI BWCYC1,A8
MOVK 24,A9
MOVK 31,A10
MOVK 6,A11
CREATE PID_DAMCC,CYCLE16
CREATE PID_JUNK,FADE_IN_BACK_DISC
CLR A0
MOVE A0,@BLACKOUT
CLR A0
CALLA FADEIN
SLEEP 16
SLEEP 450
CLR A0
CALLA FADEOUT
MOVI PID_DAMCC,A0
CALLA KILLPROC_ALL
CREATE PID_JUNK,FADE_OUT_BACK_DISC
SLEEP 12
RETP
NUMBER_ONE_MESS
MESS_MAC RD11FONT,3,190,47,COLOR_PBLACK,STRCNRMO,OID_JUNK
.STRING "NUMBER ONE",0
.EVEN
PLAT_MESS
MESS_MAC RD5FONT,2,190,63,COLOR_PBLACK,STRCNRMO,OID_JUNK
.STRING "PLATINUM PLAYER",0
.EVEN
NUM_1A_MESS
MESS_MAC RD20FONT,6,127,100,COLOR_PBLACK,STRCNRMO,OID_JUNK
.STRING "%s",0
.LONG CHAR_PLOT
.EVEN
NUM_1B_MESS
MESS_MAC RD20FONT,6,252,100,COLOR_PBLACK,STRCNRMO,OID_JUNK
.STRING "%s",0
.LONG CHAR_PLOT
.EVEN
NUM_1C_MESS
MESS_MAC RD20FONT,4,190,140,COLOR_PBLACK,STRCNRMO,OID_JUNK
.STRING "%,lb",0
.LONG CHAR_SCORE
.EVEN
FADE_IN_BACK_DISC
SLEEP 3
MOVIM 1057,@IRQSKYE,W
SLEEP 3
MOVIM 2114,@IRQSKYE,W
SLEEP 3
MOVIM 3171,@IRQSKYE,W
SLEEP 3
MOVIM 4228,@IRQSKYE,W
DIE
FADE_OUT_BACK_DISC
SLEEP 3
MOVIM 3171,@IRQSKYE,W
SLEEP 3
MOVIM 2114,@IRQSKYE,W
SLEEP 3
MOVIM 1057,@IRQSKYE,W
SLEEP 3
CLRM @IRQSKYE,W
DIE
KERRI_1_INIT
.LONG DN1B01
.WORD DMACNZ, M_SCRNOBJ|M_NOSCALE
.WORD OM_INSERT|OM_SPOS|OM_ANIM
.LONG dn1b
.LONG [230,33],0
KERRI_2_INIT
.LONG DN5B01
.WORD DMACNZ, M_SCRNOBJ|M_NOSCALE
.WORD OM_INSERT|OM_SPOS|OM_ANIM
.LONG dn5b
.LONG [230,357],0
HELGA_PAGE
CALLA INIT_ZERO_UNIVERSE ;set up dummy universe
MOVKM 3,@GAMERASE,W
CLRM @SCRNTL,L
DISPON
MOVI HELGA_NONO,A8
CALLA LM_SETUP
JSRP PRINTF
MOVKM 1,@BLACKOUT,W
MOVI TEACHER_BGND,A10
CALLA StrtBgnd ;ON WITH ONE PLANE
CLRM @IRQSKYE,W
MOVI HELGA_ARM_INIT,B0
CALLA MULTIMAKE
SLEEP 1
CREATE PID_JUNK,FADE_IN_BACK
CLR A0
MOVE A0,@BLACKOUT
CLR A0
CALLA FADEIN
SLEEP 16
MOVK 3,A0
CALLA RAND0
SLL 5,A0
ADDI RAND_TIPS,A0
MOVE *A0,A8,L
CALLA LM_SETUP
MOVK 2,A0
JSRP PRINTF
SLEEP 450
CLR A0
CALLA FADEOUT
CREATE PID_JUNK,FADE_OUT_BACK
SLEEP 12
RETP
FADE_IN_BACK
MOVIM 33,@IRQSKYE,W
SLEEP 2
MOVIM 66,@IRQSKYE,W
SLEEP 2
MOVIM 99,@IRQSKYE,W
SLEEP 2
MOVIM 132,@IRQSKYE,W
SLEEP 2
MOVIM 165,@IRQSKYE,W
SLEEP 2
MOVIM 198,@IRQSKYE,W
SLEEP 2
MOVIM 0E7H,@IRQSKYE,W
DIE
FADE_OUT_BACK
MOVIM 198,@IRQSKYE,W
SLEEP 2
MOVIM 165,@IRQSKYE,W
SLEEP 2
MOVIM 132,@IRQSKYE,W
SLEEP 2
MOVIM 99,@IRQSKYE,W
SLEEP 2
MOVIM 66,@IRQSKYE,W
SLEEP 2
MOVIM 33,@IRQSKYE,W
SLEEP 2
CLRM @IRQSKYE,W
DIE
HELGA_ARM_INIT
.BYTE 3,0,0,1
.LONG P_LGHLG
.WORD 0,OM_INSERT|OM_SPOS
.LONG [0A6H,61H-20],0
.LONG LGHL1ARM1
.WORD DMAWNZ, M_SCRNOBJ|M_NOSCALE, 0, OM_ANIM
.LONG ANIM_HELGA
.LONG LGHL1ARM2
.WORD DMAWNZ, M_SCRNOBJ|M_NOSCALE, 0,0
.LONG LGHL1ARM1
.WORD DMAWNZ, M_SCRNOBJ|M_NOSCALE, 0,0
ANIM_HELGA
LW LGHL1ARM1,30|AMulti
LW LGHL1ARM2,30|AMulti
LW LGHL1ARM2,30
LW LGHL2ARM1,7|AMulti
LW LGHL2ARM2,7|AMulti
LW LGHL2ARM2,7
LW LGHL3ARM1,10|AMulti
LW LGHL3ARM2,10|AMulti
LW LGHL3ARM3,10
LW LGHL2ARM1,5|AMulti
LW LGHL2ARM2,5|AMulti
LW LGHL2ARM2,5
.LONG 0
RAND_TIPS
.LONG RAND_TIP_1
.LONG RAND_TIP_2
.LONG RAND_TIP_3
.LONG RAND_TIP_4
HELGA_NONO
MESS_MAC RD20FONT,3,255,22,COLOR_PYELLOW,STRCNRMO,OID_JUNK
.STRING "HELGA'S NO NO'S",0
.EVEN
RAND_TIP_1
MESS_MAC RD20FONT,3,255,55,COLOR_PWHITE,STRCNRMO,OID_JUNK
.STRING "NO \d\fSHOOTING CD'S WITH\nTHE YELLOW BUTTON !\d\n"
.STRING "NO \d\fFINDING HIDDEN PATHS\nAND ROOMS !\d\n"
.STRING "NO \d\fHAVING FUN !",0
.LONG RD15FONT,[5,0],RD20FONT,RD15FONT,[5,0],RD20FONT,RD15FONT,[5,0]
.EVEN
RAND_TIP_2
MESS_MAC RD20FONT,3,255,55,COLOR_PWHITE,STRCNRMO,OID_JUNK
.STRING "NO \d\fSHOOTING POWERUPS !\d\n"
.STRING "NO \d\fDESTROYING BRIDGES !\d\n"
.STRING "NO \d\fTATTOOS !",0
.LONG RD15FONT,[5,0],RD20FONT,RD15FONT,[5,0],RD20FONT,RD15FONT,[5,0]
.EVEN
RAND_TIP_3
MESS_MAC RD20FONT,3,255,55,COLOR_PWHITE,STRCNRMO,OID_JUNK
.STRING "NO \d\fFINDING HIDDEN POWERUPS !\d\n"
.STRING "NO \d\fLOOKING FOR \nAEROSMITH MEMBERS !\d\n"
.STRING "NO \d\fPLAYING VIDEOGAMES !",0
.LONG RD15FONT,[5,0],RD20FONT,RD15FONT,[5,0],RD20FONT,RD15FONT,[5,0]
.EVEN
RAND_TIP_4
MESS_MAC RD20FONT,3,255,55,COLOR_PWHITE,STRCNRMO,OID_JUNK
.STRING "NO \d\fSHOOTING AT THE CAT\nWITH NINE LIVES.\d\n"
.STRING "NO \d\fRESCUING HOSTAGES !\d\n"
.STRING "NO \d\fLISTENING TO MUSIC !",0
.LONG RD15FONT,[5,0],RD20FONT,RD15FONT,[5,0],RD20FONT,RD15FONT,[5,0]
.EVEN
REVX_TEXT
CLRM @SCRNTL,L
MOVKM 3,@GAMERASE,W
DISPON
CLR A0
CALLA FADEBLAK
SLEEP 1
MOVKM 1,@BLACKOUT,W
CALLA INIT_LINKED_LIST ;Initialize the Background links
MOVI -04118H,A0
SLL ZFRAC,A0
MOVE A0,@ZBASE_HR,L
MOVI -230800H,A0
MOVE A0,@XBASE,L
MOVI 3c0000H,A0
MOVE A0,@YBASE,L
MOVI LA_OUTSIDE1_VECT_TABLE,A14
MOVE A14,@WVT_PTR,L ;STUFF WAVE VECTOR TABLE PTR
MOVI GXSTG3BT,A0
JSRP START_UNIVERSE
SLEEP 4
MOVK 21,A11
CALLR KILL_AEROSMITH
MOVK 22,A11
CALLR KILL_AEROSMITH
MOVK 23,A11
CALLR KILL_AEROSMITH
MOVK 24,A11
CALLR KILL_AEROSMITH
MOVK 25,A11
CALLR KILL_AEROSMITH
CLR A10
MOVE A10,@BLACKOUT
CLR A0
CALLA FADEIN_HALF
SLEEP 28
CALLA FADEFULL_TEXT
SLEEP 3
MOVI LINE1_MESS,A8
MOVI LINE1A_MESS,A9
CREATE PID_JUNK,WAIT_AND_KILL_TEXT
SLEEP 150
MOVI ATT_LINE_MESS,A11
PUT_UT_NEXT_ATT_LINE
MOVI LINE2_MESS,A8
MOVE *A11+,A9,L
MOVE *A11(20H),A14,L
JRN LAST_LINE_READY
CREATE PID_JUNK,WAIT_AND_KILL_TEXT
MOVE *A11+,A0,L
CALLA PRCSLP
JRUC PUT_UT_NEXT_ATT_LINE
LAST_LINE_READY
CREATE PID_JUNK,WAIT_AND_STOP_TEXT
MOVE *A11+,A0,L
CALLA PRCSLP
SLEEP 150
CLR A10
CLR A0
CALLA FADE_HALF2BLAK
MOVI TEXTPAL,A0
CALLA FADEOUT_PALF
SLEEP 28
RETP
WAIT_AND_KILL_TEXT
MOVE A9,A2
CALLA LM_SETUP
MOVE A2,A8
JSRP PRINTF
MOVI -0B000H,A1
MOVE A1,*A2(OYVEL),L
MOVE A2,A8
SLEEP 410
CALLA DELETE_OBJ
DIE
WAIT_AND_STOP_TEXT
MOVE A9,A2
CALLA LM_SETUP
MOVE A2,A8
JSRP PRINTF
MOVI -0B000H,A1
MOVE A1,*A2(OYVEL),L
MOVE A2,A8
SLEEP 200
CLRM *A8(OYVEL),L
ADJUST ADJMUSIC ;SOUNDS IN ATTRACT MODE?
JRNZ NO_MUSIX
MOVE @AMODE_LOOPS,A0
CMPI 2,A0
JRGE NO_MUSIX
SOUND1 REM_MUSIX_IS_WEAPON
NO_MUSIX
DIE
REM_MUSIX_IS_WEAPON
.WORD 0F380H,078H,0482dH ;rackdown sound
.WORD 0
KILL_AEROSMITH
SLL 2,A11
MOVI FGLIST,A8
MOVE A8,A1
MOVI MASK_ID,A3
FINDAERO_LUPE
MOVE *A8,A8,L
CMP A1,A8
JREQ FINDAERO_ABORT
MOVE *A8(OID),A14,W
AND A3,A14
CMP A11,A14
JRNE FINDAERO_LUPE
JAUC DELETE_OBJ
FINDAERO_ABORT
RETS
LINE_DELAY .EQU 33
ATT_LINE_MESS
.LONG LINE2A_MESS,LINE_DELAY
.LONG LINE2B_MESS,200
.LONG LINE3A_MESS,LINE_DELAY
.LONG LINE3B_MESS,LINE_DELAY
.LONG LINE3C_MESS,200
.LONG LINE4A_MESS,LINE_DELAY
.LONG LINE4B_MESS,LINE_DELAY
.LONG LINE4C_MESS,LINE_DELAY
.LONG LINE4D_MESS,200
.LONG LINE4E_MESS,LINE_DELAY
.LONG LINE4F_MESS,LINE_DELAY
.LONG LINE4G_MESS,180
.LONG LINE4H_MESS,LINE_DELAY
.LONG LINE4I_MESS,LINE_DELAY
.LONG LINE4J_MESS,200
.LONG LINE5A_MESS,LINE_DELAY
.LONG LINE5B_MESS,LINE_DELAY
.LONG LINE5C_MESS,LINE_DELAY
.LONG LINE5D_MESS,300
.LONG LINE6A_MESS,200
.LONG -1
LINE1_MESS
MESS_MAC RD20FONT,2,200,260,COLOR_PWHITE,STRCNRMO,OID_JUNK
LINE1A_MESS
.STRING "YOU HAVE NO CHOICE. YOU HAVE NO VOICE.",0
.EVEN
LINE2_MESS
MESS_MAC RD15FONT,2,200,260,COLOR_PWHITE,STRCNRMO,OID_JUNK
LINE2A_MESS
.STRING "The NEW ORDER NATION has taken over and",0
LINE2B_MESS
.STRING "everything you like is WRONG!",0
LINE3A_MESS
.STRING "All Videogames, Television, Magazines and",0
LINE3B_MESS
.STRING "especially Music have been declared illegal",0
LINE3C_MESS
.STRING "and are STRICTLY FORBIDDEN !",0
LINE4A_MESS
.STRING "A corrupt Neo-Industrial-Governmental-",0
LINE4B_MESS
.STRING "Militaristic oppressive Alliance,",0
LINE4C_MESS
.STRING "The NEW ORDER NATION - led by Head Mistress HELGA -",0
LINE4D_MESS
.STRING "is seizing all citizens between ages 13 and 30.",0
LINE4E_MESS
.STRING "You are on your way to see AEROSMITH !",0
LINE4F_MESS
.STRING "They're playing at CLUB X, LA's hottest",0
LINE4G_MESS
.STRING "nightspot.",0
LINE4H_MESS
.STRING "At the same time, the NEW ORDER NATION's",0
LINE4I_MESS
.STRING "evil plan is being launched and you are stuck",0
LINE4J_MESS
.STRING "in the middle.",0
LINE5A_MESS
.STRING "As one of the last surviving free youth,",0
LINE5B_MESS
.STRING "you must battle NEW ORDER forces to get",0
LINE5C_MESS
.STRING "backstage at CLUBX to meet AEROSMITH where",0
LINE5D_MESS
.STRING "together you will begin the REVOLUTION !",0
LINE6A_MESS
.STRING "Remember, MUSIC IS THE WEAPON !",0
.EVEN
REVX_BIG_PAGE
CLRM @SCRNTL,L
MOVKM 3,@GAMERASE,W
DISPON
CLR A0
CALLA FADEBLAK
SLEEP 1
MOVKM 1,@BLACKOUT,W
CALLA INIT_LINKED_LIST ;Initialize the Background links
MOVI -18680H,A0
SLL ZFRAC,A0
MOVE A0,@ZBASE_HR,L
MOVI 3E15800H,A0
MOVE A0,@XBASE,L
CLR A0
MOVE A0,@YBASE,L
MOVI LA_OUTSIDE1_VECT_TABLE,A14
MOVE A14,@WVT_PTR,L ;STUFF WAVE VECTOR TABLE PTR
MOVI GXCX3,A0
JSRP START_UNIVERSE
SLEEP 4
MOVI GXJKLOG,A8
move @XBASE,a9,L
subI 3E15800H,A9
move @YBASE,a10,L
subI [-024h,0],A10
move @ZBASE,a11,L
subI -18680H,A11
JSRP MERGE_UNIV_OFF
SLEEP 4
MOVI TM_MESS,A8
CALLA LM_SETUP
JSRP PRINTF
MOVE @ZBASE,A1,L
ADDI 07FF0H,A1
MOVE A1,*A2(OZVAL),L
MOVE *A2(OPARTS),A2,L
INC A1
MOVE A1,*A2(OZVAL),L
CALLR SET_REV_Z
SLEEP 3
CLR A10
MOVE A10,@BLACKOUT
MOVI MINUS_REVX_SIGN,A0
CALLA FADEIN_HALF
SLEEP 2
MOVI P_REVOWY,A0
CALLA FADEIN_PALF
MOVI P_REVOWO,A0
CALLA FADEIN_PALF
MOVI TEXTPAL,A0
CALLA FADEIN_PALF
SLEEP 28
MOVI 26,A11
MOVE_ALL_LETTERS_IN
CALLR FIND_NEXT_LETTER
JRNZ ALL_LETTERS_MOVED
CREATE PID_JUNK,MOVE_LETTER_IN
MOVE A11,A0
CALLA PRCSLP
SUBK 3,A11
CMPK 2,A11
JRGT MOVE_ALL_LETTERS_IN
MOVK 2,A11
JRUC MOVE_ALL_LETTERS_IN
ALL_LETTERS_MOVED
SLEEP 30
ADJUST ADJMUSIC ;SOUNDS IN ATTRACT MODE?
JRNZ NO_REVX_SOUND
MOVE @AMODE_LOOPS,A0
CMPI 2,A0
JRGE NO_REVX_SOUND
SOUND1 REVOLUT_XXX_SND
NO_REVX_SOUND
SLEEP 130
MOVI MINUS_REVX_SIGN,A0
CALLA FADE_HALF2BLAK
MOVI P_REVOWY,A0
CALLA FADEOUT_PALF
MOVI P_REVOWO,A0
CALLA FADEOUT_PALF
MOVI TEXTPAL,A0
CALLA FADEOUT_PALF
SLEEP 28
RETP
MINUS_REVX_SIGN
.LONG P_REVOWO
.LONG P_REVOWY
.LONG TEXTPAL
.LONG 0
FIND_NEXT_LETTER
MOVI 21,A0
CALLA RAND0
SLL 5,A0
ADDI REV_LET_TABLE,A0
MOVK 1,A3
CLR A8
CHECK_FOR_NEXT_LET
MOVE *A0,A8,L
JRNZ LETTER_FOUND
ADDI 020H,A0
CMPI REV_LET_TABLE_END,A0
JRNE CHECK_FOR_NEXT_LET
MOVI REV_LET_TABLE,A0
DEC A3
JRZ CHECK_FOR_NEXT_LET
RETS
LETTER_FOUND
CLR A1
MOVE A1,*A0,L
RETS
REVX_DELAY .EQU 23
MOVE_LETTER_IN
MOVE *A8(OYVAL),A1,L
ADDI [024H,0],A1
MOVE A1,*A8(OYVAL),L
MOVI 28000H,A2 ;Y
MOVI 3E1D800H,A4 ;X
MOVE *A8(OYVAL),A6,L
MOVE A6,A1
MOVE *A8(OXVAL),A7,L
MOVE A7,A3
ADD A2,A1
SUB A4,A3
MOVI 20000H,A5
DIVS A5,A1
DIVS A5,A3
SLL 16,A1
SLL 16,A3
SUB A1,A6
SUB A3,A7
MOVE A6,*A8(OYVAL),L
MOVE A7,*A8(OXVAL),L
MOVE *A8(OXPOS),A2
MOVE *A8(OYVAL),A3,L
MOVY A3,A2
MOVE *A8(OVAR2),A3,L
SRL 16,A3
MOVE *A8(OVAR3),A4,L
MOVY A4,A3
MOVI REVX_DELAY,A4
CALLA SLINEVEL_LOAD
MOVI 08100H/REVX_DELAY,A1
MOVE A1,*A8(OZVEL),L
SLEEP REVX_DELAY
CLR A1
MOVE A1,*A8(OZVEL),L
MOVE A1,*A8(OYVEL),L
MOVE A1,*A8(OXVEL),L
MOVE *A8(OVAR9),*A8(OZVAL),L
MOVE *A8(OVAR2),*A8(OXVAL),L
MOVE *A8(OVAR3),*A8(OYVAL),L
DIE
SET_REV_Z
MOVI FGLIST,A0
MOVE A0,A8
MOVI 02584H,A2
MOVE @ZBASE,A3,L
SUBI 100H,A3
MOVI REV_LET_TABLE,A4
MOVK 22,A9
JRUC NEXT_REV_LET
SET_NEXT_REV_Z
MOVE *A8(OID),A1
CMP A1,A2
JRNE NEXT_REV_LET
MOVE *A8(OZVAL),*A8(OVAR9),L
MOVE *A8(OXVAL),*A8(OVAR2),L
MOVE *A8(OYVAL),*A8(OVAR3),L
MOVE A3,*A8(OZVAL),L
MOVE A8,*A4+,L
DEC A9
JRZ FOUND_EM_ALL
NEXT_REV_LET
MOVE *A8,A8,L
CMP A8,A0
JRNE SET_NEXT_REV_Z
FOUND_EM_ALL
RETS
REVX_PAGE
MOVE @AMODE_LOOPS,A14
SRL 1,A14
JRC REVX_BIG_PAGE
CLRM @SCRNTL,L
CALLA INIT_ZERO_UNIVERSE ;set up dummy universe
MOVKM 3,@GAMERASE,W
DISPON
CLR A0
CALLA FADEBLAK
SLEEP 1
MOVK 1,A0
MOVE A0,@BLACKOUT
MOVI AERO_BGND,A10
CALLA StrtBgnd ;ON WITH ONE PLANE
MOVI NOTICE2_MESS,A8
JSRP LM_PRINTF
MOVI REV_REVX_INIT,B0
CALLA EASYMAKE
SLEEP 3
CLR A0
MOVE A0,@BLACKOUT
CLR A0
CALLA FADEIN
SLEEP 16
SLEEP 250
CLR A0
CALLA FADEOUT
SLEEP 12
RETP
LOGO_WIDTH .EQU 186*5
DCS_LOGO_INIT
.LONG dcslogo
.WORD DMAWNZ, M_SCRNOBJ|M_NOSCALE
.WORD OM_INSERT|OM_SPOS
.WORD 200,128+80+50,0H
.BSS LOGO_TABLE,0C0H*88
.BSS LOGO_HEIGHT,16
.BSS LOGO_ANGLE,16
.BSS LOGO_ZEED_OFF,16
.BSS LOGO_Y,16
DO_STAR_FIELD
MOVI STAR_RAD,A10,L ;set up pointer at start of star table
MOVI COSINE_TABLE,A4
MOVI SIN_TABLE,A6
CLR A9
MOVI 359,A14
CALLR NEXT_STAR
SLOOP 1,DO_STAR_FIELD
.ALIGN
NEXT_STAR:
MOVE *A10,A1 ;move table radius into work reg
MOVE *A10(010H),A0 ;move table angle into work reg
MOVE *A10(020H),A7 ;move table speed into work reg
MOVE *A10(030H),A8 ;move quadrant into work reg
PUSH A10
MOVE A7,B1
CALLR LOOPP
PULLQ A10
MOVE A1,*A10+ ;move work reg into table radius
MOVE A0,*A10+ ;move work reg into table angle
ADDI 010H,A10
MOVE A8,*A10+ ;move work req into table quadrant
MOVE A5,*A10+,L ;move work reg into table liner pos
CMPI END_STAR_TABLE,A10 ;are we at end of table
JRNE NEXT_STAR ;if not do next star
RETS
STAR_SPEED_4
.WORD 4,8,12,16,20,24,28,32,36,40,44,48,52,56,60,64
LOOPP:
MOVI STAR_SPEED_4,A11
ADD A7,A11
MOVE *A11,A11
ADD A11,A1 ;add speed to radius
*************************************************************
* Work out X & Y of stars *
*************************************************************
MOVE A0,A3 ;move angle to a10
SLL 04H,A3 ;times angle in a3 by 16 to get table offset
MOVE A3,A10 ;save offset in A10
MOVE A8,A7
ANDI 1,A7
NEG A7
JRNZ SWAP_X_Y ;if flag set then do x=sin y=cosine
ADD A6,A3 ;add table start to offset
ADD A4,A10 ;stuff table start in a3
JRUC EXIT_SWAP
SWAP_X_Y:
ADD A4,A3
ADD A6,A10 ;add table start to offset
EXIT_SWAP
MOVE *A3,A11,W ;grab cosine value from table
MOVE A1,A7
SRL 4,A7
MPYU A7,A11 ;mul cosine value by radius to get y coor
SRL 08,A11 ;divide y coor by 256
SLL 010H,A11 ;shift y coor to y coor position
MOVE *A10,A5,W ;grab cosine value from sin table
MPYU A7,A5 ;multiply radius by sine to get x coor
SRL 08,A5 ;divide x coor by 256
CMPI [110,0],A11 ;if y greater than 100 then
JRGT RESET_RAD ;reset radius
CMPI 0200,A5 ;if x greater than 200 then
JRGT RESET_RAD ;reset radius
MOVY A11,A5
RETS
RESET_RAD:
PUSH A14
MOVI 0180H,A1 ;reset radius
CLR A5
MOVK 4,A0 ;set up random number range
CALLA RANDU ;get random number
MOVE A0,A8
MOVI 090,A0 ;set up range for random number
CALLA RANDU ;grab a new angle
DEC A0
MOVE B1,A7
PULLQ A14
JRUC LOOPP
PLOT_STARS
movi DMAGOREG,B1
WAIT_UNTIL_DMA_FREE_3
MOVE *B1,B2,L
JRN WAIT_UNTIL_DMA_FREE_3
MOVI STAR_RAD,A12,L ;set up pointer at start of star table
MOVI 060H,A9
CLR B4
.ALIGN
PLOT_NEXT_STAR:
MOVE *A12(020H),A14 ;move table speed into work reg
MOVE *A12(030H),A8 ;move quadrant into work reg
MOVE *A12(040H),A5
MOVE *A12(050H),A11
CALLR PLOT_THAT_STAR
ADD A9,A12
CMPI END_STAR_TABLE,A12 ;are we at end of table
JRLT PLOT_NEXT_STAR
RETS
PLOT_THAT_STAR
MOVE A11,A11
JRN NOT_WIDE_STAR_ii
DEC A8
JRZ PLOT_POINT
NEG A5
DEC A5
DEC A8
JRZ PLOT_POINT
NEG A11
DEC A11
DEC A8
JRZ PLOT_POINT
NEG A5
DEC A5
PLOT_POINT:
MOVE A14,A4 ;make color number 2 for star
SRL 4,A4
SLL 16,A11
MOVY A11,A5 ;move Y position to a5
ADDI [128,200],A5 ;add offset in x y format
PUSH A4
MOVE @PAGEADDR,A4,L
ADDXY A4,A5
PULLQ A4
MOVE A5,B0
MOVE A5,B3
CLR B1
MOVX B0,B1
MOVX B4,B0
SRL 4,B0
SLL 3,B1
OR B1,B0
MOVE B0,A5
CMPI 0200000H,A5
JRGT NOT_WIDE_STAR_ii
MOVB A4,*A5
MOVE *A12,A1
CMPI 0640H,A1
JRGT YES_WIDER_STAR_I
CMPI 0840H,A1
JRGT YES_WIDER_STAR_II
CMPI 060H,A14 ;if speed is =>6 then wide star
JRLT NOT_WIDE_STAR_ii ;not wide star so jump to exit
CMPI 0300H,A1
JRLT NOT_WIDE_STAR_ii
MOVB A4,*A5(8)
CMPI 070H,A14 ;if speed is =>6 then wide star
JRLT NOT_WIDE_STAR_ii ;not wide star so jump to exit
MOVB A4,*A5(4096)
MOVB A4,*A5(4096+8)
NOT_WIDE_STAR_ii
RETS
YES_WIDER_STAR_I
MOVB A4,*A5(8)
RETS
YES_WIDER_STAR_II
MOVB A4,*A5(8)
MOVB A4,*A5(4096)
MOVB A4,*A5(4096+8)
RETS
************************************************************
* Set up star angles *
************************************************************
INIT_STARS:
MOVI STAR_SPEED_PR,A0
MOVI STAR_SPEED,A1
MOVI 50,A2
COPY_NEXT_STAR
MOVE *A0+,*A1+
ADDI 050H,A0
ADDI 050H,A1
DSJS A2,COPY_NEXT_STAR
MOVI STAR_ANGLE,A2,L ;position pointer at start of table
STAR_INIT_LOOP:
MOVI 91,A0,L ;set up random number range
CALLA RANDU ;get random number
DEC A0
MOVE A0,*A2,W ;store random angle in table
MOVK 4,A0 ;set up random number range
CALLA RANDU ;get random number
MOVE A0,*A2(020H),W ;store random angle in table
ADDI 060H,A2 ;increment pointer in table
CMPI END_STAR_TABLE+10H,A2 ;have we overshot table ?
JRNE STAR_INIT_LOOP
RETS
DCS_LOGO
CALLA INIT_ZERO_UNIVERSE ;set up dummy universe
MOVKM 3,@GAMERASE,W
DISPON
CALLR INIT_STARS
MOVK 1,A0
MOVE A0,@BLACKOUT
MOVI DCS_LOGO_INIT,B0
CALLA EASYMAKE
MOVE A0,A8
MOVI 52,A9
MOVE A9,@LOGO_ANGLE
SLEEP 1
MOVE *A8(OFLAGS),A1
ORI M_NODISP,A1
MOVE A1,*A8(OFLAGS)
MOVI 280,A1
MOVE A1,@LOGO_Y
CALLR CREATE_LOGO_TABLE
CREATE PID_JUNK,DISPLAY_LOGO
CREATE PID_JUNK,DO_STAR_FIELD
CLR A0
MOVE A0,@BLACKOUT
CLR A0
CALLA FADEIN
SLEEP 16
ADJUST ADJMUSIC ;SOUNDS IN ATTRACT MODE?
JRNZ NO_DCS_SOUND
MOVE @AMODE_LOOPS,A0
CMPI 2,A0
JRGE NO_DCS_SOUND
SOUND1 DCS_SND
NO_DCS_SOUND
SLEEP 4
MOVI 96,A8
MOVI 341,A9
SRL 2,A9
MOVE @LOGO_Y,A11
SLL 16,A11
MOVI [280-128,0],A7
DIVU A9,A7
MOVE A7,A10
NEXT_LOGO_ZEED
SLEEP 1
SUBK 4,A8
MOVE A8,@LOGO_ZEED_OFF
SUB A10,A11
MOVE A11,A7
SRL 16,A7
MOVE A7,@LOGO_Y
DSJS A9,NEXT_LOGO_ZEED
MOVI 27,A9
NEXT_LOGO_LINE_ZEED
SLEEP 1
SUBK 8,A8
MOVE A8,@LOGO_ZEED_OFF
DSJS A9,NEXT_LOGO_LINE_ZEED
SLEEP 10
MOVI 080H,A10 ;reposition logo in center
MOVE A10,@LOGO_Y ;of screen
MOVE @LOGO_ANGLE,A8
MOVI 52,A9
SRA 3,A9
NEXT_LOGO_ANGLE_UP
SLEEP 1
SUBK 8,A8
MOVE A8,@LOGO_ANGLE
DSJS A9,NEXT_LOGO_ANGLE_UP
CLRM @LOGO_ANGLE,W
MOVE @LOGO_Y,A11
MOVE @LOGO_ZEED_OFF,A8
MOVE A8,A9
NEG A9
SRA 3,A9
NEXT_LOGO_ZEED_OUT
SLEEP 1
MOVE @LOGO_HEIGHT,A10
SRA 1,A10
MOVE A11,A1
ADD A1,A10
MOVE A10,@LOGO_Y
ADDK 8,A8
MOVE A8,@LOGO_ZEED_OFF
DSJS A9,NEXT_LOGO_ZEED_OUT
SLEEP 210
CLR A0
CALLA FADEOUT
SLEEP 12
RETP
CREATE_LOGO_TABLE
MOVI 88,A11
MOVI LOGO_TABLE,A10
MOVI dcslogo,a4
MOVI 0C0H,A7
MOVI 01000100H,A0 ;SCALE
MOVE *A8(OPAL),A1 ;PALETTE/CONSTANT
MOVI [1,186],A2 ;VSIZE:HSIZE
CLR A3
MOVE *A4(ISAG),A4,L
ADDI 87*LOGO_WIDTH,A4
MOVI 0D0020000H,A5 ;CTRL
MOVE @NO_MIRROR,B8
JRNZ NO_MIRROR_DCS_BITS
ORI 000100000H,A5
NO_MIRROR_DCS_BITS
CREATE_NEXT_LOGO_LINE
ADD A7,A10 ;PUT ON NEXT LINE IN TABLE
MMTM A10,A0,A1,A2,A3,A4,A5
ADD A7,A10 ;PUT ON NEXT LINE IN TABLE
SUBI LOGO_WIDTH,A4
DSJS A11,CREATE_NEXT_LOGO_LINE
CLR A1
MOVE A1,@LOGO_ZEED_OFF
RETS
DISPLAY_LOGO
.ALIGN
PUSH A12
CALLR PLOT_STARS
PULLQ A12
MOVE @PAGEADDR,A5,L
PUSHST
DINT
MOVE @LOGO_ZEED_OFF,A8
CMPI -245,A8
JRLT SPECIAL_LOGO_LINE
;STUFF TO WORK OUT MISSING LINES
MOVI 88,A11
MOVE @LOGO_ANGLE,A0
CALLR cos_get
MOVE A0,A0
MPYU A0,A11
SRL 14,A11
MOVE @LOGO_ZEED_OFF,A1
ADDI 256,A1
MPYU A1,A11
SRL 8,A11
MOVE A11,A10
MOVE A11,@LOGO_HEIGHT
MOVI [88,0],A11
DIVU A10,A11
MOVI 0C0H,A7
;STUFF TO WORK OUT X SCALES
MOVE @LOGO_Y,A1
SLL 16,A1
ADDXY A1,A5
MOVI 018000H,B7
MOVE @LOGO_ANGLE,B5
MPYU B7,B5
MOVE A10,B7
DIVU B7,B5
MOVI [100H,0],B6
;NORMAL STUFF
CLR A8
MOVI LOGO_TABLE,B3
MOVE B3,A9
MOVI DMAREGS,B4
movi DMAGOREG,B1
DISPLAY_NEXT_LOGO_LINE
MMFM A9,A0,A1,A2,A3,A4,A6
WAIT_UNTIL_DMA_FREE
MOVE *B1,B2,L
JRN WAIT_UNTIL_DMA_FREE
CALLR DO_LOGO_SCALES
MOVE B4,A9
MMTM A9,A0,A1,A2,A3,A4,A6
MOVE *B1,B2,L ;WAIT FOR DMA TO CATCH UP
ADD A11,A8
MOVE A8,A9
SRL 16,A9
MPYU A7,A9
MOVE B3,A14
ADD A14,A9
SUBI [01,0],A5
READ_NEXT_LINE
DSJS A10,DISPLAY_NEXT_LOGO_LINE
NO_LOGO_AT_ALL
POPST
SLOOP 1,DISPLAY_LOGO
SPECIAL_LOGO_LINE
MOVE @LOGO_Y,A1
SLL 16,A1
ADDXY A1,A5
MOVI 018000H,B7
MOVE @LOGO_ANGLE,B5
MPYU B7,B5
MOVI [100H,0],B6
MOVI LOGO_TABLE,A9
MOVI DMAREGS,B4
movi DMAGOREG,B1
MMFM A9,A0,A1,A2,A3,A4,A6
WAIT_UNTIL_DMA_FREE_SP
MOVE *B1,B2,L
JRN WAIT_UNTIL_DMA_FREE_SP
CALLR DO_LOGO_SCALES
MOVE B4,A9
MMTM A9,A0,A1,A2,A3,A4,A6
MOVE *B1,B2,L ;WAIT FOR DMA TO CATCH UP
POPST
SLOOP 1,DISPLAY_LOGO
DO_LOGO_SCALES
;SCALE STUFF
ADD B5,B6
MOVE B6,B7
SRL 16,B7
MOVE @LOGO_ZEED_OFF,B8
SLL 1,B8
NEG B8
ADDI 256,B8
MPYU B8,B7
SRL 8,B7
MOVE A0,B8
MOVX B7,B8
MOVE B8,A0
;XPOS_STUFF
SLL 16,B8 ;get x scale on it own
SRL 16,B8
MOVI 10000H,B9 ;get inverted scale
DIVU B8,B9
MOVI 186,B8 ;original x size for line
MPYU B8,B9 ;multiply by inverted scale
SRL 8,B9 ;divide by 0100h
SUB B9,B8 ;subtract scaled line size from original size
SRL 1,B8 ;divide x diff by 2 to get one side
MOVI 6BH+38H,B7 ;get object x origin + page offset
ADD B8,B7 ;add scaled line offset to xpos
MOVE @NO_MIRROR,B8
JRNZ NO_MIRROR_DCS ;is the mirror on ?
ADD B9,B7 ;yes ,so offset flip
NO_MIRROR_DCS
MOVE B7,A3 ;reset x pos of dag
MOVY A5,A3 ;give it page offset + ypos for dag
RETS
sine_get
sll 32-8,a0
srl 32-8-4,a0 ;*16
addi sine_t,a0
move *a0,a0
rets
cos_get
sll 32-8,a0
srl 32-8-4,a0 ;*16
addi cos_t,a0
move *a0,a0
rets
sine_t
.word 0,402,803,1205,1605,2005,2404,2801
.word 3196,3589,3981,4369,4756,5139,5519,5896
.word 6270,6639,7005,7366,7723,8075,8423,8765
.word 9102,9434,9760,10080,10394,10701,11003,11297
.word 11585,11866,12140,12406,12665,12916,13160,13395
.word 13623,13842,14053,14255,14449,14635,14811,14978
.word 15137,15286,15426,15557,15678,15790,15893,15986
.word 16069,16143,16207,16261,16305,16340,16364,16379
cos_t
.word 16384,16379,16364,16340,16305,16261,16207,16143
.word 16069,15986,15893,15791,15679,15557,15426,15286
.word 15137,14978,14811,14635,14449,14256,14053,13842
.word 13623,13395,13160,12916,12665,12406,12140,11866
.word 11585,11297,11003,10702,10394,10080,9760,9434
.word 9102,8765,8423,8076,7723,7366,7005,6639
.word 6270,5896,5519,5139,4756,4370,3981,3590
.word 3196,2801,2404,2005,1606,1205,804,402
.word 0,-401,-803,-1205,-1605,-2005,-2403,-2800
.word -3196,-3589,-3980,-4369,-4755,-5139,-5519,-5896
.word -6269,-6639,-7005,-7366,-7723,-8075,-8423,-8765
.word -9102,-9434,-9760,-10080,-10394,-10701,-11002,-11297
.word -11585,-11866,-12139,-12406,-12665,-12916,-13160,-13395
.word -13623,-13842,-14053,-14255,-14449,-14634,-14811,-14978
.word -15137,-15286,-15426,-15557,-15678,-15790,-15893,-15986
.word -16069,-16143,-16207,-16261,-16305,-16340,-16364,-16379
.word -16384,-16379,-16364,-16340,-16305,-16261,-16207,-16143
.word -16069,-15986,-15893,-15791,-15679,-15557,-15426,-15286
.word -15137,-14979,-14811,-14635,-14449,-14256,-14053,-13842
.word -13623,-13395,-13160,-12916,-12665,-12406,-12140,-11866
.word -11585,-11298,-11003,-10702,-10394,-10080,-9760,-9434
.word -9103,-8765,-8423,-8076,-7723,-7366,-7005,-6640
.word -6270,-5897,-5520,-5139,-4756,-4370,-3981,-3590
.word -3196,-2801,-2404,-2006,-1606,-1205,-804,-402
.word 0,402,803,1205,1605,2005,2404,2801
.word 3196,3589,3981,4369,4756,5139,5519,5896
.word 6270,6639,7005,7366,7723,8075,8423,8765
.word 9102,9434,9760,10080,10394,10701,11003,11297
.word 11585,11866,12140,12406,12665,12916,13160,13395
.word 13623,13842,14053,14255,14449,14635,14811,14978
.word 15137,15286,15426,15557,15678,15790,15893,15986
.word 16069,16143,16207,16261,16305,16340,16364,16379
;this sin table is in decimal and goes from sin(0) to sin (89). It has been
;multiplyed by 256 in order to get an interger figure for each value. To
;implement, use the angle as an offset into the table and then multiply
;radius by value gained. Then divide result by 256 (ie rotate right 8 bits)
;and you have your value. To use as a cosine table use offset as a negative
;offset (-1) and come in from end of table backwards.O.K.!!!
SIN_TABLE:
.WORD 0,4,8,13,17,22,26,31,35,40
.WORD 44,48,53,57,61,66,70,74,79,83
.WORD 87,91,95,100,104,108,112,116,120,124
.WORD 128,131,135,139,143,146,150,154,157,161
.WORD 164,167,171,174,177,181,184,187,190,193
.WORD 196,198,201,204,207,209,212,214,217,219
.WORD 221,223,226,228,230,232,233,235,237,238
.WORD 240,242,243,244,246,247,248,249,250,251
.WORD 252,252,253,253,254,254,255,255,255,255
COSINE_TABLE
.WORD 255,255,255,255,254,254,253,253,252,252
.WORD 251,250,249,248,247,246,244,243,242,240
.WORD 238,237,235,233,232,230,228,226,223,221
.WORD 219,217,214,212,209,207,204,201,198,196
.WORD 193,190,187,184,181,177,174,171,167,164
.WORD 161,157,154,150,146,143,139,135,131,128
.WORD 124,120,116,112,108,104,100,95,91,87
.WORD 83,79,74,70,66,61,57,53,48,44
.WORD 40,35,31,26,22,17,13,8,4,0
******************************************************************
* STAR TABLE *
******************************************************************
.BSS STAR_RAD,16
.BSS STAR_ANGLE,16
.BSS STAR_SPEED,16
.BSS STAR_QUADRANT,16+32
.BSS STAR_REST,(32*3)*49
.BSS END_STAR_TABLE,0
STAR_RAD_PR:
.WORD 0180H
STAR_ANGLE_PR:
.WORD 0000H
STAR_SPEED_PR:
.WORD 0060H
STAR_QUANRANT_PR:
.WORD 0000H
.LONG 0
.WORD 0180H
.WORD 0000H
.WORD 0010H
.WORD 0000H
.LONG 0
.WORD 0180H
.WORD 0000H
.WORD 0010H
.WORD 0000H
.LONG 0
.WORD 0180H
.WORD 0000H
.WORD 0010H
.WORD 0000H
.LONG 0
.WORD 0180H
.WORD 0000H
.WORD 0010H
.WORD 0000H
.LONG 0
.WORD 0180H
.WORD 0000H
.WORD 0010H
.WORD 0000H
.LONG 0
.WORD 0180H
.WORD 0000H
.WORD 0010H
.WORD 0000H
.LONG 0
.WORD 0180H
.WORD 0000H
.WORD 0010H
.WORD 0000H
.LONG 0
.WORD 0180H
.WORD 0000H
.WORD 0010H
.WORD 0000H
.LONG 0
.WORD 0180H
.WORD 0000H
.WORD 0010H
.WORD 0000H
.LONG 0
.WORD 0180H
.WORD 0000H
.WORD 0010H
.WORD 0000H
.LONG 0
.WORD 0180H
.WORD 0000H
.WORD 0010H
.WORD 0000H
.LONG 0
.WORD 0180H
.WORD 0000H
.WORD 0010H
.WORD 0000H
.LONG 0
.WORD 0180H
.WORD 0000H
.WORD 0010H
.WORD 0000H
.LONG 0
.WORD 0180H
.WORD 0000H
.WORD 0010H
.WORD 0000H
.LONG 0
.WORD 0180H
.WORD 0000H
.WORD 0010H
.WORD 0000H
.LONG 0
.WORD 0180H
.WORD 0000H
.WORD 0010H
.WORD 0000H
.LONG 0
.WORD 0180H
.WORD 0000H
.WORD 0010H
.WORD 0000H
.LONG 0
.WORD 0180H
.WORD 0000H
.WORD 0010H
.WORD 0000H
.LONG 0
.WORD 0180H
.WORD 0000H
.WORD 0010H
.WORD 0000H
.LONG 0
.WORD 0180H
.WORD 0000H
.WORD 0020H
.WORD 0000H
.LONG 0
.WORD 0180H
.WORD 0000H
.WORD 0020H
.WORD 0000H
.LONG 0
.WORD 0180H
.WORD 0000H
.WORD 0020H
.WORD 0000H
.LONG 0
.WORD 0180H
.WORD 0000H
.WORD 0020H
.WORD 0000H
.LONG 0
.WORD 0180H
.WORD 0000H
.WORD 0020H
.WORD 0000H
.LONG 0
.WORD 0180H
.WORD 0000H
.WORD 0020H
.WORD 0000H
.LONG 0
.WORD 0180H
.WORD 0000H
.WORD 0020H
.WORD 0000H
.LONG 0
.WORD 0180H
.WORD 0000H
.WORD 0020H
.WORD 0000H
.LONG 0
.WORD 0180H
.WORD 0000H
.WORD 0020H
.WORD 0000H
.LONG 0
.WORD 0180H
.WORD 0000H
.WORD 0020H
.WORD 0000H
.LONG 0
.WORD 0180H
.WORD 0000H
.WORD 0030H
.WORD 0000H
.LONG 0
.WORD 0180H
.WORD 0000H
.WORD 0030H
.WORD 0000H
.LONG 0
.WORD 0180H
.WORD 0000H
.WORD 0030H
.WORD 0000H
.LONG 0
.WORD 0180H
.WORD 0000H
.WORD 0030H
.WORD 0000H
.LONG 0
.WORD 0180H
.WORD 0000H
.WORD 0030H
.WORD 0000H
.LONG 0
.WORD 0180H
.WORD 0000H
.WORD 0030H
.WORD 0000H
.LONG 0
.WORD 0180H
.WORD 0000H
.WORD 0030H
.WORD 0000H
.LONG 0
.WORD 0180H
.WORD 0000H
.WORD 0040H
.WORD 0000H
.LONG 0
.WORD 0180H
.WORD 0000H
.WORD 0040H
.WORD 0000H
.LONG 0
.WORD 0180H
.WORD 0000H
.WORD 0040H
.WORD 0000H
.LONG 0
.WORD 0180H
.WORD 0000H
.WORD 0040H
.WORD 0000H
.LONG 0
.WORD 0180H
.WORD 0000H
.WORD 0040H
.WORD 0000H
.LONG 0
.WORD 0180H
.WORD 0000H
.WORD 0050H
.WORD 0000H
.LONG 0
.WORD 0180H
.WORD 0000H
.WORD 0050H
.WORD 0000H
.LONG 0
.WORD 0180H
.WORD 0000H
.WORD 0050H
.WORD 0000H
.LONG 0
.WORD 0180H
.WORD 0000H
.WORD 0050H
.WORD 0000H
.LONG 0
.WORD 0180H
.WORD 0000H
.WORD 0060H
.WORD 0000H
.LONG 0
.WORD 0180H
.WORD 0000H
.WORD 0060H
.WORD 0000H
.LONG 0
.WORD 0180H
.WORD 0000H
.WORD 0070H
.WORD 0000H
.LONG 0
.WORD 0180H
.WORD 0000H
.WORD 0070H
.WORD 0000H
.LONG 0
END_STAR_TABLE_PR:
**************************************************************************
* *
* ATTRACT_MODE - PROCESS TO CYCLE THROUGH THE ATTRACT MODE ROUTINES *
* DURING GAME OVER. *
* *
**************************************************************************
ATTRACT_MODE:
CLR A0
MOVE A0,@GAMEUNITS,W ;CLEAR OUT ANY POTENTIAL GAME UNITS
MOVE A0,@AMODE_LOOPS,W ;CLEAR THE LOOP COUNTER
MOVE A0,@AERO_LOOPS,W ;CLEAR THE LOOP COUNTER
ADJUST ADJMUSIC ;SOUNDS IN ATTRACT MODE?
JRZ AMODE_SOUNDON ;BR = YAYS
SOUNDOFF
JRUC AMODE_GO
AMODE_SOUNDON
SOUNDON
AMODE_GO
CALLA WIPEOUT
DISPON
JSRP COPYR
ATTRACT_MODE_LP
CALLA WIPEOUT
DISPON
JSRP MIDWAY_PRESENTS
CALLA WIPEOUT
DISPON
JSRP REVX_PAGE
CALLA WIPEOUT
DISPON
JSRP CREDIT_SCREEN
MOVE @AMODE_LOOPS,A14
SRL 1,A14
JRC ATT_SKIP_STORY
CALLA WIPEOUT
DISPON
JSRP REVX_TEXT
ATT_SKIP_STORY
MOVE @AMODE_LOOPS,A14
ANDI 3,A14
JRNZ NO_HELGA_TIPS
CALLA WIPEOUT
DISPON
JSRP HELGA_PAGE
CALLA WIPEOUT
DISPON
JSRP DO_CD_OFFER
NO_HELGA_TIPS
CALLA WIPEOUT
DISPON
JSRP DCS_LOGO
CALLA WIPEOUT
DISPON
JSRP CREDIT_SCREEN
CALLA WIPEOUT
DISPON
ATT_MODE_CREDIT:
ATT_MODE_HSTD:
ADJUST ADJHSON
JREQ ATT_SKIP_HSTD
CALLA WIPEOUT
DISPON
JSRP ATT_HSTD
CALLA WIPEOUT
DISPON
JSRP DISC_PAGE
ATT_SKIP_HSTD
CALLA WIPEOUT
DISPON
JSRP PLAYING_ATT
*END OF ATTRACT MODE LOOP
MOVE @AMODE_LOOPS,A0,W
CMPI 4,A0 ;TIME TO TURN OFF SOUNDS?
JRLO ATTRACT_MODE_INC ;BR = NO
SOUNDOFF
ATTRACT_MODE_INC
INC A0
MOVE A0,@AMODE_LOOPS,W
JRUC ATTRACT_MODE_LP
COPYR
CALLA WIPEOUT
CLRM @SCRNTL,L
MOVKM 3,@GAMERASE,W
CALLA INIT_ZERO_UNIVERSE ;set up dummy universe
DISPON
CLR A0
CALLA FADEBLAK
SLEEP 1
MOVKM 1,@BLACKOUT,W
MOVI COPY_1,A8
CALLA LM_SETUP
JSRP PRINTF
CLRM @BLACKOUT,W
CLR A0
CALLA FADEIN
SLEEP 175
CLR A0
CALLA FADEOUT
SLEEP 16
RETP
COPY_1
MESS_MAC RD15FONT,3,200,30,COLOR_PWHITE,STRCNRMO,OID_JUNK
.STRING "Revolution X",C_TM,"-Music is the Weapon",C_TM
.STRING "\nFeaturing AEROSMITH",C_REG
.STRING "\n\d",C_COPY,"1994 Midway",C_REG," Manufacturing Company"
.STRING "\nRevolution X",C_TM," and Rev X",C_TM
.STRING "\nare trademarks of Midway Manufacturing Company"
.STRING "\nDCS Sound System",C_TM," is a trademark\nof Williams Electronics Games, Inc."
.STRING "\n\dALL RIGHTS RESERVED."
.STRING "\d\n\nAudio Data Compression Alogorithm"
.STRING "\ndeveloped by Q-Branch Inc,"
.STRING "\nToronto, Ontario, Canada",0
.EVEN
.LONG RD11FONT,RD15FONT,RD11FONT
**************************************************************************
* *
* ATT_MODE_GAME_OVER - ATTRACT MODE ENTRY POINT FROM GAME OVER *
* *
**************************************************************************
ATT_MODE_GAME_OVER:
CLR A0
MOVE A0,@GAMEUNITS,W ;CLEAR OUT ANY POTENTIAL GAME UNITS
MOVE A0,@AMODE_LOOPS,W ;CLEAR THE LOOP COUNTER
ADJUST ADJMUSIC ;SOUNDS IN ATTRACT MODE?
JRZ AMGO_SOUNDON ;BR = YAYS
SOUNDOFF
JRUC AMGO_GO
AMGO_SOUNDON
SOUNDON
AMGO_GO
MOVE @DO_CREDITS,A14,W
JRZ AMGO_HS_CHECK ;BR = Not going to run credits
MOVE @NEW_HISCORES,A14,W
JRZ ATTRACT_MODE_CRED ;BR = Do credits immediately
JRUC AMGO_SKIP_FADE ;BR = Show high scores
AMGO_HS_CHECK
MOVE @NEW_HISCORES,A14,W
JRZ AMGO_FAST_FADE ;BR = No new high scores entered
MOVI 30*60,A8 ;Continue the fanfare
JRUC AMGO_DO_FADE
AMGO_FAST_FADE
MOVI 10*60,A8 ;Time to wait before fading
AMGO_DO_FADE
MOVI [00,255],A9 ;[Min vol, Max vol]
CLR A10 ;Track #
MOVI 255,A11 ;Fade time
CREATE PID_TFADE,TRACK_FADE_PROC ;Start the music fader
AMGO_SKIP_FADE
ADJUST ADJHSON
JREQ ATTRACT_MODE_CRED
CALLA WIPEOUT
DISPON
JSRP ATT_HSTD
ATTRACT_MODE_CRED
MOVE @DO_CREDITS,A14,W
JRZ AMGO_NO_CREDS
CALLA WIPEOUT
DISPON
JSRP GAME_CREDITS
MOVI 5*60,A8 ;Time to wait before fading
MOVI [00,255],A9 ;[Min vol, Max vol]
CLR A10 ;Track #
MOVI 255,A11 ;Fade time
CREATE PID_TFADE,TRACK_FADE_PROC ;Start the music fader
AMGO_NO_CREDS
CALLA WIPEOUT
DISPON
JSRP DO_CD_OFFER
JRUC ATTRACT_MODE_LP
**************************************************************************
* *
* C_POSITION - CREATE FUNC TO POSITION AN OBJECT UPON CREATION *
* A0 = PTR TO OBJECT *
* .LONG [Y,X] *
* *
**************************************************************************
C_POSITION
move *B0+,B14,L ;POSITION
MOVE B14,A3
JAUC OBJTOPNT
**************************************************************************
* *
* REVEAL_Y - INCREASE Y SIZE OF AN OBJECT BY N PIXELS. *
* A1 = PIXELS TO INCREASE *
* A8 = OBJECT *
* RETURNS *
* Z = FULLY REVEALED *
* NZ = MORE TO GO *
* *
**************************************************************************
REVEAL_Y
MMTM sp,a0,A1
MOVE *A8(OSIZEY),A14,W
ADD A1,A14
MOVE *A8(OIMG),A1,L
move *a8(OIHOFF),a0 ; NEW
add a0,a1 ; NEW
MOVE *A1(ISIZEY),A1,W
CMP A1,A14
JRLO RY_STUFF
MOVE A1,*A8(OSIZEY),W
SETZ
MMfM sp,a0,A1
RETS
RY_STUFF
MOVE A14,*A8(OSIZEY),W
CLRZ
MMfM sp,a0,A1
RETS
.IF GERMAN
GAMEOMESS:
MESS_MAC RD15FONT,2,197,83+SKYTOPOF,COLOR_PLF,STRCNRMOS,OID_GAMEOVER
.STRING "Spielende",0
.EVEN
.ELSE
GAMEOMESS:
MESS_MAC RD15FONT,2,197,83+SKYTOPOF,COLOR_PLF,STRCNRMOS,OID_GAMEOVER
.STRING "Game Over",0
.EVEN
.ENDIF
**************************************************************************
* *
* MIDWAY_PRESENTS *
* *
**************************************************************************
MIDWAY_PRESENTS
CLR A0
CALLA FADEBLAK
SLEEP 3
MOVI MIDWAY_MESS,A8
JSRP LM_PRINTF
MOVI PRESENTS_MESS,A8
JSRP LM_PRINTF
MOVI NOTICE_MESS,A8
JSRP LM_PRINTF
DISPON
CLR A0
CALLA FADEIN
SLEEP 90
CLR A0
CALLA FADEOUT
SLEEP 20
MOVI OID_JUNK,A0
CALLA KILOBJ_ALL
CALLA CLR_SCRN
RETP
MIDWAY_MESS:
MESS_MAC RD20FONT,2,200,100,COLOR_PWHITE,STRCNRMOS,OID_JUNK
.STRING "MIDWAY",0
.EVEN
PRESENTS_MESS:
MESS_MAC RD15FONT,2,200,135,COLOR_PWHITE,STRCNRMOS,OID_JUNK
.STRING "PRESENTS",0
.EVEN
NOTICE_MESS:
MESS_MAC RD5FONT,2,200,235,COLOR_PWHITE,STRCNRMO,OID_JUNK
.STRING "%c1994 MIDWAY MANUFACTURING COMPANY.",0
.LONG CR
.EVEN
CR
.WORD 127
.if 0
**************************************************************************
* *
* This weekend only *
* *
**************************************************************************
SNEAK_PREVIEW
CALLA IAUTOE
MOVI 7C00H,A14
MOVE A14,@IRQSKYE,W
MOVE A14,@IRQGNDE,W
MOVKM 3,@GAMERASE,W ;AUTO-ERASE FULL
MOVI SNEAK_MESS,A8
JSRP LM_PRINTF
DISPON
SLEEP 200
MOVI OID_JUNK,A0
CALLA KILOBJ_ALL
CALLA CLR_SCRN
RETP
SNEAK_MESS:
MESS_MAC RD20FONT,2,200,50,COLOR_PWHITE,STRCNRMOS,OID_JUNK
.STRING "This Weekend Only!\n\n"
.STRING "Special sneak preview of\n"
.STRING "REVOLUTION X\n"
.STRING "Be the first to play!",0
.EVEN
.endif
**************************************************************************
* *
* OCTOPUS PAGE *
* *
**************************************************************************
OCTO_PAGE:
CALLA WIPEOUT
MOVKM 1,@SWITCH_SPOKEN,W ;STOP THE "NO WAY JOSE"
CALLA SINGLE_PLANE
PAGEOFF
DISPON
JSRP OCTO_AUDS
SLEEP 5
MOVE @COINS,A14,L
NOT A14
ANDI 24H,A14
CMPI 24H,A14
JANE WARMSET
JRUC OC_DOIT
**************************************************************************
* *
* OCTO_CREDITS - JUST ROLL THE CREDITS, NOTHING ELSE *
* *
**************************************************************************
OCTO_CREDITS
MOVE @SWITCH,A1,L ;GET SWITCH STATE
MOVE @COINS,A2
SLL 16,A2
MOVY A2,A1
NOT A1
ANDI 00243030H,A1 ;CHECK THE CONTROL PANEL
JRZ OC_DOIT
SLOOP 5,OCTO_CREDITS
OC_DOIT
SOUNDON
SOUND1 WALK_THIS_WAY
JSRP GAME_CREDITS
JAUC WARMSET
DCS_SND
.WORD 0F180H,078H,043E9H ;where you go now is up to you
.WORD 0
WALK_THIS_WAY
.WORD 0F080H,01H,0801AH
.WORD 0
TM_MESS
MESS_MAC RD5FONT,1,0F0H,0B0H,COLOR_PWHITE,STRCNRMOS,OID_JUNK
.STRING C_TM,0
.LONG CR
.EVEN
NOTICE2_MESS:
MESS_MAC RD5FONT,1,200,235,COLOR_PWHITE,STRCNRMOS,OID_JUNK
.STRING "REVOLUTION X",C_TM," MUSIC IS THE WEAPON",C_TM," "
.STRING C_COPY,"1994 MIDWAY",C_REG," MANUFACTURING COMPANY"
.STRING "\nVIDEO GAME FEATURING AEROSMITH",C_REG,0
.LONG CR
.EVEN
REV_REVX_INIT
.LONG LilRX01
.WORD DMAWNZ, M_SCRNOBJ|M_NOSCALE
.WORD OM_INSERT|OM_SPOS|OM_ANIM
.LONG REV_REX_ANIM
.LONG [195,325],0
REV_REX_ANIM
LW LilRX01,4
LW LilRX02,4
LW LilRX03,4
LW LilRX04,4
LW LilRX05,4
LW LilRX06,4
LW LilRX07,4
LW LilRX08,4
LW LilRX09,4
LW LilRX10,4
LW LilRX11,4
LW LilRX12,4
LW LilRX13,4
LW LilRX14,4
LW LilRX15,4
LW LilRX16,4
LW LilRX17,4
LW LilRX18,4
LW LilRX19,4
LW LilRX20,4
LW LilRX21,4
LW LilRX22,4
LW LilRX23,4
LW LilRX24,4
.LONG 0
REVOLUT_XXX_SND
.word 0F380h,1,482Fh ;Kill track 3
.WORD 0
GAME_CREDITS
CALLA WIPEOUT
DISPON
MOVKM 1,@BLACKOUT,W
CALLA INIT_LINKED_LIST ;Initialize the Background links
CLRM @SCRNTL,L
MOVKM 3,@GAMERASE,W
DISPON
MOVI GXJKLOG,A0
JSRP START_UNIVERSE
SLEEP 4
CLRM @BLACKOUT,W
CLR A0
CALLA FADEIN_HALF_3
SLEEP 16
MOVI TEXTPAL,A0
CALLA FADEIN_PALF
SLEEP 3
JSRP PUT_UP_CREDITS
SLEEP 50
CLR A0
CALLA FADE_HALF2BLAK
SLEEP 20
RETP
PUT_UP_CREDITS
MOVI CREDIT_LINE_MESS,A11
PUT_UT_NEXT_CREDIT_LINE
MOVE *A11+,A8,L
JRN LAST_CREDIT_LINE_READY
JRNZ NO_START_FLASHING
CREATE PID_JUNK,SILLY_FLASH_SCREEN
MOVE *A11+,A8,L
NO_START_FLASHING
JSRP SETUP_RESET_AND_POSITION
MOVE *A11+,A0,L
CALLA PRCSLP
JRUC PUT_UT_NEXT_CREDIT_LINE
LAST_CREDIT_LINE_READY
RETP
SILLY_FLASH_SCREEN
SOUNDON
SOUND1 LLAMA_MUSIX
MOVI 250,A9
CLR A10
KEEP_FLASHING
CALLR MAKE_SCREEN_FLASH
SLEEP 1
DSJS A9,KEEP_FLASHING
CLRM @IRQSKYE,W
CLRM @IRQGNDE,W
SOUNDOFF
DIE
LLAMA_MUSIX
.WORD 0F080H,01H,08014H
.WORD 0
MAKE_SCREEN_FLASH
INC A10
MOVE A10,A0
SLL 30,A0
SRL 30-4,A0
ADDI SCREEN_COL,A0
MOVE *A0,A0
MOVE A0,@IRQSKYE
MOVE A0,@IRQGNDE
RETS
SCREEN_COL
.WORD 1024*31,(1024*31)+(15*32),(1024*31)+(31*32),(1024*31)+(15*32)
ZIP_ACROSS_2 .EQU 32
ROT_ANG .EQU 400000h/ZIP_ACROSS_2
SET_EACH_PART_OFF
MMTM SP,A6,A1
MOVE A8,A6
SET_NEXT_PART_OFF
MOVE *A6(OFLAGS),A1
ORI M_NODISP,A1
MOVE A1,*A6(OFLAGS)
MOVE *A6(OPARTS),A6,L
JRNZ SET_NEXT_PART_OFF
MMFM SP,A6,A1
RETS
SET_EACH_PART_ON
MMTM SP,A6,A1
MOVE A8,A6
SET_NEXT_PART_ON
MOVE *A6(OFLAGS),A1
ANDI 0FFFFH-M_NODISP,A1
MOVE A1,*A6(OFLAGS)
MOVE *A6(OPARTS),A6,L
JRNZ SET_NEXT_PART_ON
MMFM SP,A6,A1
RETS
SETUP_RESET_AND_POSITION
PUSHP A11
CALLA LM_SETUP
MOVY A9,A2
SRL 16,A2
JRNZ SET_UP_TEXT_YPOS
SET_UP_AUTO_TEXT_YPOS
MOVE @TEXT_YPOS,A2
ADDI 25,A2
SET_UP_TEXT_YPOS
MOVE A2,@TEXT_YPOS
SLL 16,A2
MOVY A2,A9
CMPI 4,A10
JREQ NO_SHADOWED_TEXT
MOVK 3,A10
MMTM A12,A0,A1,A5,A8,A9,A10,A11 ;LOAD UP REGGIES FROM A8.
JSRP PRINTF
MOVE A2,A8
CALLR SET_EACH_PART_OFF
SLEEP 1
CALLR SET_EACH_PART_ON
MOVE A8,B7
MMFM A12,A0,A1,A5,A8,A9,A10,A11 ;LOAD UP REGGIES FROM A8.
ADDI [01,01],A9
MOVI 08080000H,A14
MOVY A14,A5
JSRP PRINTF
MOVE A2,A2
JRZ FINISHED_TEXT
MOVE A2,B0
CLR B5
MOVE B7,B1
NOT_END_OF_LIST
MOVE B1,B2
MOVE B5,*B1(OZVAL),L
MOVE *B1(OPARTS),B1,L
JRNZ NOT_END_OF_LIST
MOVE B0,*B2(OPARTS),L
MOVK 1,B5
RESET_NEXT_PART
MOVE B7,*B0(OPART1),L
MOVE B5,*B0(OZVAL),L
MOVE *B0(OPARTS),B0,L
JRNZ RESET_NEXT_PART
MOVE B7,A8
MOVE B7,A2
JRUC RESUME_NORMAL
NO_SHADOWED_TEXT
MOVK 3,A10
JSRP PRINTF
MOVE A2,A8
RESUME_NORMAL
MOVI 08000H,A3
MOVI -1,A4
NEXT_XPOS
MOVE *A8(OXPOS),A1
CMP A3,A1
JRGE NO_SWAP_LESS
MOVE A1,A3
JRUC NO_SWAP_GREATER
NO_SWAP_LESS
MOVE *A8(OSIZEX),A5
ADD A5,A1
CMP A4,A1
JRLE NO_SWAP_GREATER
MOVE A1,A4
NO_SWAP_GREATER
MOVE *A8(OPARTS),A8,L
JRNZ NEXT_XPOS
SUB A3,A4
SRL 1,A4
ADD A4,A3
PULLP A11
MOVE *A11+,A9,L
PUSHP A11
MOVE A3,@LINE_STARTXY
MOVE A2,A8
SET_NEXT_OBJ_POINTER
MOVE *A8(OPARTS),*A8(OVAR7),L
MOVE *A8(OPARTS),A8,L
JRNZ SET_NEXT_OBJ_POINTER
MOVE A2,A8
CALLR ZIP_TEXT_ACROSS
RESET_AND_MOVE_2
MOVE *A2(OPARTS),A8,L
JRZ FINISHED_TEXT
CALLA PULL_PART
CALLR ZIP_TEXT_ACROSS
JRUC RESET_AND_MOVE_2
FINISHED_TEXT
MOVE A2,A8
CREATE PID_JUNK,MOVE_TEXT_ACROSS
PULLP A11
RETP
ZIP_TEXT_ACROSS
MOVE *A8(OXPOS),A1
MOVE A1,*A8(OVAR9)
MOVE @LINE_STARTXY,A3
MOVE A3,A5
SUB A5,A1
SLL 16,A1
MOVI ZIP_ACROSS_2,A5
DIVS A5,A1
MOVE A1,*A8(OXVEL),L
MOVE A1,*A8(OVAR8),L
MOVE A3,*A8(OXPOS)
MOVE A3,*A8(ODAG)
RETS
MOVE_TEXT_ACROSS
MOVI ZIP_ACROSS_2,A11
CLR A10
MOVE_TEXT_ACROSS_2
SLEEP 1
ADDI ROT_ANG,A10
CALLR WORK_OUT_TEXT_SCALE
DSJS A11,MOVE_TEXT_ACROSS_2
CLR A0
MOVI 1000100H,A1
MOVE A8,A6
RESET_EACH_LET
MOVE A0,*A6(OXVEL),L
MOVE *A6(OVAR9),*A6(OXPOS)
MOVE A1,*A6(OSCALE),L
MOVE *A6(OVAR7),A6,L
JRNZ RESET_EACH_LET
MOVE A9,A0
CALLA PRCSLP
MOVE A8,A6
RESET_EACH_LET_2
MOVE *A6(OVAR8),A1,L
NEG A1
MOVE A1,*A6(OXVEL),L
MOVE *A6(OVAR7),A6,L
JRNZ RESET_EACH_LET_2
MOVI ZIP_ACROSS_2,A11
MOVE_TEXT_ACROSS_3
SLEEP 1
SUBI ROT_ANG,A10
CALLR DO_WORK_OUT
DSJS A11,MOVE_TEXT_ACROSS_3
KILL_EACH_LET
MOVE *A8(OVAR7),A6,L
CALLA DELETE_OBJ
MOVE A6,A8
JRNZ KILL_EACH_LET
DIE
DO_WORK_OUT
MOVE A8,A6
DO_SCALE
CALLR WORK_OUT_TEXT_SCALE
MOVE *A6(OVAR7),A6,L
JRNZ DO_SCALE
RETS
WORK_OUT_TEXT_SCALE
MOVE A10,A0
SRL 16,A0
CALLR cos_get
SLL 2,A0
MOVI 200H,A3
MOVE A0,A1
MPYU A1,A3
SRL 16,A3
ADDI 0F0H,A3
MOVE A3,*A6(OSCALEX)
RETS
PLAYING_ATT
calla INIT_LINKED_LIST ; init bg univ links
MOVI PID_TFADE,A0
CALLA KILLPROC_ALL ;Kill the music fader
CALLA QSNDRST
CALLA WIPEOUT ;WIPE OUT THE WORLD
CALLA GRAMINIT ;INITIALIZE GAME RAM
CALLA CLR_ALL_PDATA ;INITIALIZE PLAYER DATA AREAS
DISPON ;DISPLAY SYSTEM BACKON
MOVKM 1,@BLACKOUT,W
MOVI REV_REVX_INIT,B0
CALLA EASYMAKE
MOVI 180,A1
MOVE A1,*A0(OYPOS)
PUSHP A0
CLRM @BLACKOUT,W
CREATE PID_INDW,SCORPROC ;START UP THE PUSH PLAYER START PROCESS
MOVK 7,A0
MOVE @AMODE_LOOPS,A1
SLL 30,A1
SRL 30,A1
ADD A1,A0
.IF DEBUG
INC A0
.ENDIF
MOVE A0,@WAVE
.IF DEBUG
CMPI 11,A0
.ELSE
CMPI 10,A0
.ENDIF
JREQ AEROSMITH_PLAYING
JSRP WAVE_START ;DO THE WAVE INITIALIZATION
PULLP A8
MOVE @ZBASE,A0,L
MOVE A0,*A8(OZVAL),L
ADJUST ADJMUSIC ;SOUNDS IN ATTRACT MODE?
JRNZ NO_AERO_MUSIX
MOVE @AMODE_LOOPS,A0
CMPI 2,A0
JRLT LEAVE_SND_ALONE
NO_AERO_MUSIX
SOUND1 SND_ALLOFF
SOUNDOFF
LEAVE_SND_ALONE
SLEEP 16
MOVI GAME_OVER_MESS,A8
CALLA LM_SETUP
JSRP PRINTF
SLEEP 1000
SOUND1 SND_ALLOFF
PAUSEON
CLR A10
MOVE A10,@IRQSKYE
MOVE A10,@IRQGNDE
MOVI PID_COLOR,A0
CALLA KILLPROC_ALL
CALLR KIL_CYCLE_COL
CLR A0
CALLA FADEOUTF
SLEEP 20
PAUSEOFF
RETP
AEROSMITH_PLAYING
ADJUST ADJMUSIC ;SOUNDS IN ATTRACT MODE?
JRNZ NO_AERO_MUSIX_2
MOVE @AERO_LOOPS,A1
CMPI 4,A1
JRLT LEAVE_SND_ALONE_2
NO_AERO_MUSIX_2
SOUND1 SND_ALLOFF
SOUNDOFF
MOVI 700,A1
JRUC SOUND_SET
LEAVE_SND_ALONE_2
SOUNDON
MOVI 2000,A1
SOUND_SET
PUSHP A1
JSRP WAVE_START ;DO THE WAVE INITIALIZATION
PULLP A0
PULLP A8
PUSHP A0
MOVE @ZBASE,A0,L
MOVE A0,*A8(OZVAL),L
SLEEP 16
MOVI GAME_OVER_MESS_B,A8
CALLA LM_SETUP
JSRP PRINTF
PULLP A0
CALLA PRCSLP
SOUND1 SND_ALLOFF
PAUSEON
CLR A10
MOVE A10,@IRQSKYE
MOVE A10,@IRQGNDE
MOVI PID_COLOR,A0
CALLA KILLPROC_ALL
CALLR KIL_CYCLE_COL
CLR A0
CALLA FADEOUTF
SLEEP 20
SOUND1 SND_ALLOFF
SOUNDOFF
PAUSEOFF
MOVE @AERO_LOOPS,A0,W
INC A0
MOVE A0,@AERO_LOOPS,W
RETP
KIL_CYCLE_COL
CLR A0
MOVE A0,@COLRTEMP,L
MOVE A0,@COLRTEMP+020H,L
MOVE A0,@COLRTEMP+040H,L
MOVE A0,@COLRTEMP+080H,L
MOVE A0,@COLRTEMP+0A0H,L
MOVE A0,@COLRTEMP+0C0H,L
MOVE A0,@COLRTEMP+0E0H,L
MOVE A0,@COLRTEMP+100H,L
RETS
GAME_OVER_MESS
MESS_MAC RD20FONT,3,200,128,COLOR_PLF,STRCNRMOS,OID_JUNK
.STRING "GAME OVER",0
.EVEN
GAME_OVER_MESS_B
MESS_MAC RD20FONT,3,200,50,COLOR_PLF,STRCNRMOS,OID_JUNK
.STRING "GAME OVER",0
.EVEN
.END