1493 lines
26 KiB
Plaintext
1493 lines
26 KiB
Plaintext
|
**************************************************************
|
|||
|
*
|
|||
|
* INITIATED: JUNE 6,1991
|
|||
|
* MODIFIED: !
|
|||
|
* SOFTWARE: SHAWN LIPTAK
|
|||
|
*
|
|||
|
* COPYRIGHT (C) 1991 WILLIAMS ELECTRONICS GAMES, INC.
|
|||
|
*
|
|||
|
**************************************************************
|
|||
|
.FILE 'RACKUP.ASM'
|
|||
|
.TITLE 'TOTAL CARNAGE GAME PROGRAM'
|
|||
|
.WIDTH 132
|
|||
|
.OPTION B,D,L,T
|
|||
|
.MNOLIST
|
|||
|
|
|||
|
.include "mproc.equ" ;mproc equates
|
|||
|
.include "disp.equ" ;Display proc. equates
|
|||
|
.include "\video\sys\sys.inc" ;Z unit system equates
|
|||
|
.include "game.equ"
|
|||
|
.include "imgtbl.glo"
|
|||
|
.include "shawn.hdr" ;My macros
|
|||
|
|
|||
|
|
|||
|
|
|||
|
;sound headers used
|
|||
|
|
|||
|
;symbols externally defined
|
|||
|
|
|||
|
.ref JM1,COLTAB,CYCLE_TABLE,STATIC_COVER,PLYRPRCS,INTRO
|
|||
|
.ref RACKBMOD,RANDOM,GPALOBJ,PALSET,FINDPAL,PCNT
|
|||
|
.ref IRQSKYE,ERASE_TXT,HEXTOASC,FRANIM,HSTGLST
|
|||
|
.ref CRMP,BCDBIN,BINBCD
|
|||
|
.ref WSPEED,STRT_S,STATUS
|
|||
|
.ref COLCYC,BGND_UD1,BAKMODS,WNDWON,WNDWOFF,NO_START,WRLD
|
|||
|
.ref STRCNRMO,STRCNRMO_1,STRCNRM,RD15FONT,RD7FONT,RD8FONT
|
|||
|
.ref P1DATA,P2DATA
|
|||
|
.ref SLDEBUG
|
|||
|
|
|||
|
;symbols defined in this file
|
|||
|
|
|||
|
|
|||
|
;uninitialized ram definitions
|
|||
|
|
|||
|
.bss PALTMP ,16*16*2 ;Allocate 2 x color area in ram
|
|||
|
.bss statspal ,31*16 ;Statistics palette
|
|||
|
.bss animdeath1 ,16 ;CntDn for anim procs to die
|
|||
|
.bss animdeath2 ,16 ;^
|
|||
|
.bss scoredie ,16 ;!0=Score process dies
|
|||
|
.bss hitpercent1 ,16 ;Player1 %
|
|||
|
.bss hitpercent2 ,16 ;Player2 %
|
|||
|
.bss hitsmin1 ,16 ;Player1 hits per minute
|
|||
|
.bss hitsmin2 ,16 ;Player2 ^
|
|||
|
|
|||
|
.text
|
|||
|
|
|||
|
|
|||
|
SUBR DO_RACKUP
|
|||
|
|
|||
|
move @SLDEBUG,a0
|
|||
|
btst 0,a0
|
|||
|
jrnz skiprc
|
|||
|
CREATE 0,rackcaller ;DEBUG
|
|||
|
skiprc
|
|||
|
movk 5,a0 ;speed of window
|
|||
|
move a0,@WSPEED
|
|||
|
JSRP WNDWON ;grow window
|
|||
|
|
|||
|
movk 1,a0 ;delay start of a second plyr flag
|
|||
|
move a0,@NO_START
|
|||
|
|
|||
|
movi 6*32*32+4*32+4,a0 ;Bkgnd color
|
|||
|
move a0,@IRQSKYE
|
|||
|
|
|||
|
;This will turn on general and chick. they will animate until all
|
|||
|
;intrpid processes are killed
|
|||
|
|
|||
|
movi rackupbg_t,a0 ;Show home base view screen
|
|||
|
move a0,@BAKMODS,L
|
|||
|
calla BGND_UD1
|
|||
|
calla STRT_S ;Static color cycle
|
|||
|
movi CRMP,A8 ;Pal name
|
|||
|
movi PALTMP,A9 ;Ram area
|
|||
|
movi [58,64],A10 ;Begin/end color #
|
|||
|
movk 4,a11 ;Rate in ticks
|
|||
|
CREATE CYCPID,COLCYC ;Color cycler on
|
|||
|
|
|||
|
clr a0
|
|||
|
move a0,@WRLD ;Do world adj
|
|||
|
|
|||
|
|
|||
|
movi incom_st,a0 ;*Text
|
|||
|
callr print_xy
|
|||
|
|
|||
|
JSRP WNDWOFF
|
|||
|
|
|||
|
SLEEP 80
|
|||
|
calla ERASE_TXT
|
|||
|
|
|||
|
;>Make tiles
|
|||
|
movi 8*4,a1 ;# Panels
|
|||
|
movi -4*>25800+>12c00,a2 ;Velocity
|
|||
|
movi 10,a3
|
|||
|
movi 200,a5
|
|||
|
rp20 movi panel_t,a14
|
|||
|
calla GPALOBJ ;Get palette & obj
|
|||
|
calla STFOBJ ;Stuff object data
|
|||
|
move a2,*a0(OXVEL),L ;Set XVEL
|
|||
|
move a3,*a0(OYPOS) ;New Y
|
|||
|
addi 46,a3
|
|||
|
move a5,*a0(OZPOS)
|
|||
|
movk 3,a4
|
|||
|
and a1,a4
|
|||
|
subk 1,a4
|
|||
|
jrne rp30
|
|||
|
addi >25800,a2
|
|||
|
movi 10,a3
|
|||
|
movk 1,a4
|
|||
|
xor a4,a5 ;Toggle 0 Bit
|
|||
|
rp30 calla ADJSTWTL ;Adjust into world
|
|||
|
calla INSOBJ ;Insert obj
|
|||
|
dsj a1,rp20
|
|||
|
|
|||
|
SLEEP 20
|
|||
|
|
|||
|
calla STOPOBJS ;Stop tiles
|
|||
|
|
|||
|
move @P1DATA+PSCORE,a0,L ;Scores to binary
|
|||
|
calla BCDBIN
|
|||
|
move a0,@P1DATA+PSCORE,L
|
|||
|
move @P2DATA+PSCORE,a0,L
|
|||
|
calla BCDBIN
|
|||
|
move a0,@P2DATA+PSCORE,L
|
|||
|
|
|||
|
; move @PLYRPRCS,a0,L ;transfer tshots from
|
|||
|
; move *a0(TSHOTS),a0 ;plyr procs into
|
|||
|
; move a0,@P1DATA+TOTSHOTS ;p1 and p2 data area
|
|||
|
; move @PLYRPRCS+32,A0,L ;for rackup screen
|
|||
|
; move *a0(TSHOTS),A0
|
|||
|
; move a0,@P2DATA+TOTSHOTS
|
|||
|
|
|||
|
move @P1DATA+THITS,a1
|
|||
|
movi 100,a0
|
|||
|
mpyu a0,a1
|
|||
|
move @P1DATA+TOTSHOTS,a2
|
|||
|
divu a2,a1
|
|||
|
move a1,@hitpercent1
|
|||
|
|
|||
|
move @P2DATA+THITS,a1
|
|||
|
movi 100,a0
|
|||
|
mpyu a0,a1
|
|||
|
move @P2DATA+TOTSHOTS,a2
|
|||
|
divu a2,a1
|
|||
|
move a1,@hitpercent2
|
|||
|
|
|||
|
CREATE 0,score_prt
|
|||
|
|
|||
|
movi stats_st,a0 ;Print stats
|
|||
|
callr print_xy
|
|||
|
move @STATUS,a8
|
|||
|
btst 0,a8 ;Player1
|
|||
|
jrz rp100
|
|||
|
movi statsp1_st,a0
|
|||
|
callr print_xy
|
|||
|
rp100 btst 1,a8 ;Player2
|
|||
|
jrz rp110
|
|||
|
movi statsp2_st,a0
|
|||
|
callr print_xy
|
|||
|
rp110
|
|||
|
|
|||
|
movi [2,30],a8 ;Color 2, 30 colors
|
|||
|
movi SCOREPAL,a9
|
|||
|
movi COLTAB,a10 ;Color table
|
|||
|
movk 3,a11 ;Rate of cycle
|
|||
|
CREATE CYCPID,CYCLE_TABLE
|
|||
|
movi [1,1],a8
|
|||
|
movi SCOREPAL,a9
|
|||
|
movi statscolor_t,a10
|
|||
|
movk 3,a11
|
|||
|
CREATE CYCPID,CYCLE_TABLE
|
|||
|
movi [32,2],a8
|
|||
|
movi SCOREPAL,a9
|
|||
|
movi statscolor_t,a10
|
|||
|
movk 5,a11
|
|||
|
CREATE CYCPID,CYCLE_TABLE
|
|||
|
|
|||
|
callr joy_read
|
|||
|
jrnz rpsk30
|
|||
|
SLEEP 60*4
|
|||
|
rpsk30
|
|||
|
|
|||
|
movk 5,a11
|
|||
|
JSRP text_shrink
|
|||
|
|
|||
|
callr joy_read ;DEBUG
|
|||
|
jrnz rpsk50
|
|||
|
|
|||
|
move @P1DATA+THSTGS,a2
|
|||
|
move @P2DATA+THSTGS,a3
|
|||
|
movi bonush_st,a0
|
|||
|
movi hostage_l,a1
|
|||
|
JSRP bonus_showrack
|
|||
|
|
|||
|
move @P1DATA+TFLAGS,a2
|
|||
|
move @P2DATA+TFLAGS,a3
|
|||
|
movi bonusf_st,a0
|
|||
|
movi flag_l,a1
|
|||
|
JSRP bonus_showrack
|
|||
|
|
|||
|
move @P1DATA+CASHCNT,a2
|
|||
|
move @P2DATA+CASHCNT,a3
|
|||
|
movi bonusg_st,a0
|
|||
|
movi JM1,a1
|
|||
|
JSRP bonus_showrack
|
|||
|
|
|||
|
|
|||
|
SLEEP 60*1
|
|||
|
rpsk50
|
|||
|
movk 1,a0
|
|||
|
move a0,@scoredie ;Kill it
|
|||
|
|
|||
|
|
|||
|
movi play_t,a14 ;>Show heros
|
|||
|
rpp30 calla GPALOBJ
|
|||
|
calla STFOBJ
|
|||
|
calla ADJSTWTL
|
|||
|
calla INSOBJ
|
|||
|
move *a14,a0
|
|||
|
jrge rpp30
|
|||
|
|
|||
|
; MOVE *A1,A0,L
|
|||
|
; movi HERO2P,A0 ;HERO 2 PAL
|
|||
|
; CALLA GETFPAL ;GET A COLOR MAP ASSIGNMENT
|
|||
|
;A8=EYES
|
|||
|
; MOVE A0,*A8(OPAL),W ;STORE THE NEW PALETTE
|
|||
|
|
|||
|
|
|||
|
|
|||
|
move @OBJLST,a1,L ;>Tiles fly away
|
|||
|
rp200 move *a1(OZPOS),a0
|
|||
|
subi 200,a0
|
|||
|
cmpi 1,a0
|
|||
|
jrhi rp230
|
|||
|
movk 5,a2 ;Vel
|
|||
|
btst 0,a0
|
|||
|
jrz rp220
|
|||
|
neg a2 ;-Vel
|
|||
|
rp220 move a2,*a1(OYVEL+16)
|
|||
|
|
|||
|
rp230 move *a1,a1,L
|
|||
|
jrnz rp200
|
|||
|
|
|||
|
|
|||
|
SLEEP 60*1
|
|||
|
|
|||
|
move @OBJLST,a0,L ;>Delete tiles
|
|||
|
rp300 move *a0(OZPOS),a2
|
|||
|
subi 200,a2
|
|||
|
cmpi 1,a2
|
|||
|
jrhi rp330
|
|||
|
move *a0,a1,L ;Get * to next obj
|
|||
|
calla DELOBJ ;Kill
|
|||
|
move a1,a0
|
|||
|
jruc rp340
|
|||
|
rp330 move *a0,a0,L
|
|||
|
rp340 jrnz rp300
|
|||
|
|
|||
|
|
|||
|
;Heros say stuff
|
|||
|
; SLEEP 60*2
|
|||
|
|
|||
|
|
|||
|
move @P1DATA+PSCORE,a0,L ;Scores to BCD
|
|||
|
calla BINBCD
|
|||
|
move a0,@P1DATA+PSCORE,L
|
|||
|
move @P2DATA+PSCORE,a0,L
|
|||
|
calla BINBCD
|
|||
|
move a0,@P2DATA+PSCORE,L
|
|||
|
|
|||
|
|
|||
|
movk 1,a11
|
|||
|
CREATE 0,STATIC_COVER
|
|||
|
SLEEP 25
|
|||
|
|
|||
|
clr a0
|
|||
|
move a0,@IRQSKYE
|
|||
|
|
|||
|
movi CLSDEAD,a0 ;>Delete heros
|
|||
|
movi >ff00,a1
|
|||
|
calla KILOBJ
|
|||
|
|
|||
|
JSRP dictator_taunt
|
|||
|
|
|||
|
movi CYCPID,a0
|
|||
|
movi -1,a1
|
|||
|
calla KILALL
|
|||
|
|
|||
|
movi SCOREPAL,a0 ;*Color
|
|||
|
clr a1 ;Palette 0, Color 0
|
|||
|
move *a0+,a2 ;# Colors
|
|||
|
calla PALSET
|
|||
|
|
|||
|
clr a0 ;Enable player starts
|
|||
|
move a0,@NO_START
|
|||
|
|
|||
|
rackend SLEEP 1
|
|||
|
jruc rackend
|
|||
|
|
|||
|
|
|||
|
rackupbg_t
|
|||
|
.long RACKBMOD ;this is from blimp (module name)
|
|||
|
.word 2,>35e ;x,y start pos.
|
|||
|
.long >ffffffff
|
|||
|
|
|||
|
incom_st
|
|||
|
.word PRTF15,200,55,1 ;Mode,X,Y,color
|
|||
|
.byte "INCOMING DATA TRANSMISSION...",0
|
|||
|
.word -1
|
|||
|
|
|||
|
play_t .long [40,0],[74,0],HERO1 ;x,y,img name
|
|||
|
.word 50,DMAWNZ,CLSDEAD+1 ;zpos,oflags,oid
|
|||
|
.long 0,0 ;xvel,yvel
|
|||
|
.long [230,0],[30,0],HERO2
|
|||
|
.word 50,DMAWNZ,CLSDEAD+1
|
|||
|
.long 0,0
|
|||
|
.long [50,0],[60,0],HEROI1
|
|||
|
.word 50,DMAWNZ,CLSDEAD+1
|
|||
|
.long 0,0
|
|||
|
.long [250,0],[30,0],HEROI1
|
|||
|
.word 50,DMAWNZ,CLSDEAD+1
|
|||
|
.long 0,0
|
|||
|
.long [120,0],[18,0],BOON1
|
|||
|
.word 50,DMAWNZ,CLSDEAD+1
|
|||
|
.long 0,0
|
|||
|
.long [250,0],[18,0],BOON1
|
|||
|
.word 50,DMAWNZ+M_FLIPH,CLSDEAD+1
|
|||
|
.long 0,0
|
|||
|
.long [200,0],[76,0],BOON2
|
|||
|
.word 50,DMAWNZ+M_FLIPH,CLSDEAD+1
|
|||
|
.long 0,0
|
|||
|
.word -1 ;End
|
|||
|
|
|||
|
panel_t .long [174,0],[0,0],RACKBLK ;x,y,img name
|
|||
|
.word 200,DMAWNZ,CLSDEAD ;zpos,oflags,oid
|
|||
|
.long 0,0 ;xvel,yvel
|
|||
|
|
|||
|
statscolor_t
|
|||
|
COLORW 16,0,0
|
|||
|
COLORW 20,00,08, 24,00,12, 28,00,16, 31,00,20
|
|||
|
COLORW 28,00,24, 24,00,28, 20,00,31, 16,00,28
|
|||
|
COLORW 08,20,00, 16,24,00, 24,28,00, 31,31,00
|
|||
|
COLORW 20,28,00, 12,24,00, 08,20,00, 02,16,00
|
|||
|
COLORW 00,08,20, 00,16,24, 00,24,28, 00,31,31
|
|||
|
COLORW 00,20,28, 00,10,24, 00,00,20, 00,00,16
|
|||
|
COLORW 16,0,0
|
|||
|
.word -1
|
|||
|
|
|||
|
PRTF15 .equ 1 ;Font15
|
|||
|
PRTF8 .equ 2 ;Font8 MultiColor
|
|||
|
PRTDEC .equ 4 ;Decimal
|
|||
|
PRTBCD .equ 8 ;BCD (Long)
|
|||
|
PRTL .equ 16 ;Long data
|
|||
|
|
|||
|
PRTF15B .equ 0
|
|||
|
PRTF8B .equ 1
|
|||
|
PRTDECB .equ 2
|
|||
|
PRTBCDB .equ 3
|
|||
|
PRTLB .equ 4
|
|||
|
|
|||
|
stats_st
|
|||
|
.word PRTF15,200,20,1 ;Mode,X,Y,color
|
|||
|
.byte "SCORE",0
|
|||
|
.word 0,200,40,2
|
|||
|
.byte "SHOTS FIRED",0
|
|||
|
.word 0,200,50,3
|
|||
|
.byte "ENEMY HITS",0
|
|||
|
.word 0,200,60,4
|
|||
|
.byte "HIT PERCENTAGE",0
|
|||
|
.word 0,200,70,5
|
|||
|
.byte "HITS PER MINUTE",0
|
|||
|
.word 0,200,80,6
|
|||
|
.byte "WEAPONS PICKED UP",0
|
|||
|
.word 0,200,90,7
|
|||
|
.byte "BOMBS USED",0
|
|||
|
.word 0,200,100,8
|
|||
|
.byte "MISSILE STRIKES",0
|
|||
|
.word 0,200,110,9
|
|||
|
.byte "BIG STUFF DESTROYED",0
|
|||
|
.word 0,200,120,10
|
|||
|
.byte "EXTRA MEN EARNED",0
|
|||
|
.word 0,200,130,11
|
|||
|
.byte "MINES STEPPED ON",0
|
|||
|
.word PRTF15,190,160,1
|
|||
|
.byte "STATISTICS",0
|
|||
|
.word -1 ;End
|
|||
|
|
|||
|
statsp1_st
|
|||
|
.word PRTDEC,70,40,30
|
|||
|
.long P1DATA+TOTSHOTS
|
|||
|
.word PRTDEC,70,50,29
|
|||
|
.long P1DATA+THITS
|
|||
|
.word PRTDEC,70,60,28
|
|||
|
.long hitpercent1
|
|||
|
.word PRTDEC,70,70,27
|
|||
|
.long hitsmin1
|
|||
|
.word PRTDEC,70,80,26
|
|||
|
.long P1DATA+TWPNS
|
|||
|
.word PRTDEC,70,90,25
|
|||
|
.long P1DATA+BMBSUSED
|
|||
|
.word PRTDEC,70,100,24
|
|||
|
.long P1DATA+TMISLS
|
|||
|
.word PRTDEC,70,110,23
|
|||
|
.long P1DATA+TBIGSTF
|
|||
|
.word PRTDEC,70,120,22
|
|||
|
.long P1DATA+TEARNED
|
|||
|
.word PRTDEC,70,130,21
|
|||
|
.long P1DATA+TEARNED
|
|||
|
.word -1
|
|||
|
|
|||
|
statsp2_st
|
|||
|
.word PRTDEC,330,40,30
|
|||
|
.long P2DATA+TOTSHOTS
|
|||
|
.word PRTDEC,330,50,29
|
|||
|
.long P2DATA+THITS
|
|||
|
.word PRTDEC,330,60,28
|
|||
|
.long hitpercent2
|
|||
|
.word PRTDEC,330,70,27
|
|||
|
.long hitsmin2
|
|||
|
.word PRTDEC,330,80,26
|
|||
|
.long P2DATA+TWPNS
|
|||
|
.word PRTDEC,330,90,25
|
|||
|
.long P2DATA+BMBSUSED
|
|||
|
.word PRTDEC,330,100,24
|
|||
|
.long P2DATA+TMISLS
|
|||
|
.word PRTDEC,330,110,23
|
|||
|
.long P2DATA+TBIGSTF
|
|||
|
.word PRTDEC,330,120,22
|
|||
|
.long P2DATA+TEARNED
|
|||
|
.word PRTDEC,330,130,21
|
|||
|
.long P2DATA+TEARNED
|
|||
|
.word -1
|
|||
|
|
|||
|
bonush_st
|
|||
|
.word PRTF15,198,20,1
|
|||
|
.byte "SCORE",0
|
|||
|
.word PRTF15,198,160,1
|
|||
|
.byte "HOSTAGE BONUS",0
|
|||
|
.word -1
|
|||
|
bonusf_st
|
|||
|
.word PRTF15,198,20,1
|
|||
|
.byte "SCORE",0
|
|||
|
.word PRTF15,198,160,1
|
|||
|
.byte "AMERICA BONUS",0
|
|||
|
.word -1
|
|||
|
bonusg_st
|
|||
|
.word PRTF15,198,20,1
|
|||
|
.byte "SCORE",0
|
|||
|
.word PRTF15,198,160,1
|
|||
|
.byte "GEM BONUS",0
|
|||
|
.word -1
|
|||
|
|
|||
|
|
|||
|
hostxy_t
|
|||
|
.word 34,45, 64,45, 94,45, 124,45, 154,45
|
|||
|
.word 49,65, 79,65, 109,65, 139,65
|
|||
|
.word 34,85, 64,85, 94,85, 124,85, 154,85
|
|||
|
.word 49,105, 79,105, 109,105, 139,105
|
|||
|
; .word 34,125, 64,125, 94,125, 124,125, 154,125
|
|||
|
.word -1
|
|||
|
|
|||
|
|
|||
|
hostage_l
|
|||
|
.long MUG1Z
|
|||
|
.word 1
|
|||
|
.long MUG1AZ
|
|||
|
.word 255
|
|||
|
.long 0
|
|||
|
|
|||
|
flag_l .long FLG1 ;USA flag list
|
|||
|
.word 5
|
|||
|
.long FLG2
|
|||
|
.word 5
|
|||
|
.long FLG3
|
|||
|
.word 5
|
|||
|
.long FLG4
|
|||
|
.word 5
|
|||
|
.long FLG5
|
|||
|
.word 5
|
|||
|
.long 0
|
|||
|
|
|||
|
|
|||
|
|
|||
|
********************************
|
|||
|
* Read joysticks
|
|||
|
|
|||
|
SUBRP joy_read
|
|||
|
move @SWITCH,a0
|
|||
|
not a0
|
|||
|
rets ;Pass CC
|
|||
|
|
|||
|
|
|||
|
********************************
|
|||
|
* Print an XY string set
|
|||
|
|
|||
|
SUBRP print_xy ;A0=*XY Text
|
|||
|
|
|||
|
PUSH a8
|
|||
|
|
|||
|
move a0,a8
|
|||
|
prtxy5 movk [0,1],a10 ;Char y,x spacing
|
|||
|
movi RD7FONT,a11 ;*Font
|
|||
|
move *a8+,a1 ;Mode word
|
|||
|
btst PRTF15B,a1
|
|||
|
jreq prtxy10
|
|||
|
movi RD15FONT,a11 ;*Font
|
|||
|
prtxy10 move *a8+,a9,L ;Scrn y/x
|
|||
|
move *a8+,a6 ;Color
|
|||
|
move a6,a2
|
|||
|
sll 8,a6
|
|||
|
or a2,a6
|
|||
|
|
|||
|
btst PRTDECB,a1
|
|||
|
jreq prtxy30
|
|||
|
move *a8+,a2,L ;Binary mode
|
|||
|
move *a2,a0 ;Get word
|
|||
|
btst PRTLB,a1
|
|||
|
jreq prtxy20
|
|||
|
move *a2,a0,L ;Get long
|
|||
|
prtxy20 PUSH a8
|
|||
|
move a0,a8
|
|||
|
calla HEXTOASC
|
|||
|
jruc prtxy40
|
|||
|
|
|||
|
prtxy30 btst PRTBCDB,a1
|
|||
|
jruc prtxy70
|
|||
|
; jreq prtxy70
|
|||
|
; move *a8+,a0,L ;BCD mode
|
|||
|
; move *a0,a0,L
|
|||
|
; callr bcdtoasc
|
|||
|
; PUSH a8
|
|||
|
; move a0,a8
|
|||
|
prtxy40 clr a0
|
|||
|
JSRP STRCNRMO
|
|||
|
PULL a8
|
|||
|
jruc prtxy80
|
|||
|
|
|||
|
prtxy70 ;String mode
|
|||
|
btst PRTF8B,a1
|
|||
|
jreq prtxy74
|
|||
|
movi BLLNP5,a0
|
|||
|
calla FINDPAL
|
|||
|
move a0,a6
|
|||
|
movi RD8FONT,a11
|
|||
|
clr a0
|
|||
|
JSRP STRCNRMO_1 ;Full color font
|
|||
|
jruc prtxy77
|
|||
|
|
|||
|
prtxy74 clr a0 ;Sleep time
|
|||
|
JSRP STRCNRMO ;Print string, objects
|
|||
|
prtxy77 addk 8,a8 ;Round up
|
|||
|
srl 4,a8
|
|||
|
sll 4,a8
|
|||
|
prtxy80 move *a8,a0 ;-=End
|
|||
|
jrge prtxy5
|
|||
|
|
|||
|
PULL a8
|
|||
|
rets
|
|||
|
|
|||
|
|
|||
|
********************************
|
|||
|
* Set pallette 0 from buffer
|
|||
|
|
|||
|
.bss colorbuf ,16*31 ;31 Color buffer
|
|||
|
|
|||
|
SUBRP setpall0
|
|||
|
PUSH a1,a2
|
|||
|
movi colorbuf,a0 ;*Color
|
|||
|
movk 1,a1 ;Palette 0, Color 1
|
|||
|
movk 31,a2 ;# Colors
|
|||
|
calla PALSET
|
|||
|
PULL a1,a2
|
|||
|
rets
|
|||
|
|
|||
|
|
|||
|
|
|||
|
********************************
|
|||
|
* Vertically shrink text
|
|||
|
|
|||
|
SUBRP text_shrink ;A11=Sleep time
|
|||
|
|
|||
|
movk 8,a10 ;Size for x2 shrinage
|
|||
|
txs20 move a11,a0
|
|||
|
calla PRCSLP
|
|||
|
clr a8
|
|||
|
move @OBJLST,a9,L ;>Find and shrink
|
|||
|
txs40 move *a9(OID),a0
|
|||
|
sll 3+16,a0 ;Mask type
|
|||
|
srl 8+3+16,a0
|
|||
|
cmpi TYPTEXT/256,a0
|
|||
|
jrne txs70
|
|||
|
move *a9(OSIZEY),a0
|
|||
|
subk 1,a0 ;Shrink
|
|||
|
jrz txs70 ;Min of 1
|
|||
|
cmp a10,a0
|
|||
|
jrlt txs50
|
|||
|
subk 1,a0 ;Shrink again
|
|||
|
txs50 move a0,*a9(OSIZEY)
|
|||
|
movk 1,a8
|
|||
|
txs70 move *a9,a9,L
|
|||
|
jrnz txs40
|
|||
|
|
|||
|
subk 1,a10 ;Lower x2 min
|
|||
|
move a8,a8
|
|||
|
jrnz txs20
|
|||
|
|
|||
|
calla ERASE_TXT
|
|||
|
|
|||
|
RETP
|
|||
|
|
|||
|
|
|||
|
********************************
|
|||
|
* Print players score (Process)
|
|||
|
|
|||
|
SUBRP score_prt
|
|||
|
clr a0
|
|||
|
move a0,@scoredie
|
|||
|
|
|||
|
scp20 move @STATUS,a8
|
|||
|
btst 0,a8
|
|||
|
jrz scp50
|
|||
|
PUSH a8
|
|||
|
move @P1DATA+PSCORE,a8,L
|
|||
|
calla HEXTOASC
|
|||
|
movi >2020,a6
|
|||
|
movi [20,100],a9 ;Scrn y/x
|
|||
|
movk [0,1],a10 ;Spacing
|
|||
|
movi RD15FONT,a11
|
|||
|
clr a0 ;No sleep
|
|||
|
JSRP STRCNRM ;Print, no objs
|
|||
|
PULL a8
|
|||
|
|
|||
|
scp50 btst 1,a8
|
|||
|
jrz scp80
|
|||
|
move @P2DATA+PSCORE,a8,L
|
|||
|
calla HEXTOASC
|
|||
|
movi >2121,a6
|
|||
|
movi [20,300],a9 ;Scrn y/x
|
|||
|
movk [0,1],a10 ;Spacing
|
|||
|
movi RD15FONT,a11
|
|||
|
clr a0 ;No sleep
|
|||
|
JSRP STRCNRM ;Print, no objs
|
|||
|
|
|||
|
scp80 SLEEP 1
|
|||
|
move @scoredie,a0
|
|||
|
jrz scp20
|
|||
|
DIE
|
|||
|
|
|||
|
|
|||
|
|
|||
|
********************************
|
|||
|
* Do a bonus rack
|
|||
|
|
|||
|
APTRPD BONUSLP,0 ;*Bonus anim list
|
|||
|
WORDPD BONUSC1,2 ;Play 1 # items
|
|||
|
WORDPD BONUSC2,3 ;Play 2 ^
|
|||
|
|
|||
|
|
|||
|
SUBRP bonus_showrack ;A0=*XY text, A1=*Anim list, A2.W=1Cnt, A3.W=2Cnt
|
|||
|
|
|||
|
move @STATUS,a8
|
|||
|
btst 0,a8
|
|||
|
jrnz bsr20
|
|||
|
clr a2
|
|||
|
bsr20 btst 1,a8
|
|||
|
jrnz bsr25
|
|||
|
clr a3
|
|||
|
bsr25
|
|||
|
move a1,*a13(BONUSLP),L
|
|||
|
move a2,*a13(BONUSC1)
|
|||
|
move a3,*a13(BONUSC2)
|
|||
|
|
|||
|
callr print_xy
|
|||
|
|
|||
|
movk 10,a0
|
|||
|
move a0,@animdeath1
|
|||
|
move a0,@animdeath2
|
|||
|
|
|||
|
movi hostxy_t,a8 ;A8=*Next XY
|
|||
|
clr a9 ;A9=Play1 cnt
|
|||
|
clr a10 ;A10=Play2 cnt
|
|||
|
clr a11 ;A11=P1/2 Death delay bits
|
|||
|
bsr40
|
|||
|
move *a13(BONUSC1),a0
|
|||
|
cmp a0,a9
|
|||
|
jrlo bsr70
|
|||
|
move @animdeath1,a0
|
|||
|
jrle bsr90
|
|||
|
btst 0,a11
|
|||
|
jrnz bsr60
|
|||
|
addk 1,a11 ;Set bit 0
|
|||
|
addk 14,a0 ;Add delay
|
|||
|
bsr60 subk 1,a0
|
|||
|
move a0,@animdeath1
|
|||
|
jruc bsr90
|
|||
|
|
|||
|
bsr70 addk 1,a9
|
|||
|
move @P1DATA+PSCORE,a0,L
|
|||
|
addi 50,a0 ;Add bonus
|
|||
|
move a0,@P1DATA+PSCORE,L
|
|||
|
;Do sound
|
|||
|
move *a8,a1 ;Get X
|
|||
|
jrn bsr90
|
|||
|
PUSH a9,a10,a11
|
|||
|
move *a13(BONUSLP),a9,L
|
|||
|
clr a10
|
|||
|
movi animdeath1,a11
|
|||
|
CREATE 0,bonus_anim
|
|||
|
PULL a9,a10,a11
|
|||
|
bsr90
|
|||
|
move *a13(BONUSC2),a0
|
|||
|
cmp a0,a10
|
|||
|
jrlo bsr120
|
|||
|
move @animdeath2,a0
|
|||
|
jrle bsr150
|
|||
|
btst 1,a11
|
|||
|
jrnz bsr100
|
|||
|
addk 2,a11 ;Set bit 1
|
|||
|
addk 14,a0 ;Add delay
|
|||
|
bsr100 subk 1,a0
|
|||
|
move a0,@animdeath2
|
|||
|
jruc bsr150
|
|||
|
|
|||
|
bsr120 addk 1,a10
|
|||
|
move @P2DATA+PSCORE,a0,L
|
|||
|
addi 50,a0 ;Add bonus
|
|||
|
move a0,@P2DATA+PSCORE,L
|
|||
|
;Do sound
|
|||
|
move *a8,a1 ;Get X
|
|||
|
jrn bsr150
|
|||
|
PUSH a9,a10,a11
|
|||
|
move *a13(BONUSLP),a9,L
|
|||
|
movi 192,a10 ;X offset
|
|||
|
movi animdeath2,a11
|
|||
|
CREATE 0,bonus_anim
|
|||
|
PULL a9,a10,a11
|
|||
|
|
|||
|
bsr150
|
|||
|
move *a8,a0
|
|||
|
jrn bsr180
|
|||
|
addk 32,a8 ;Next XY
|
|||
|
bsr180 SLEEP 4
|
|||
|
move @animdeath1,a0 ;Both done?
|
|||
|
jrgt bsr40
|
|||
|
move @animdeath2,a0
|
|||
|
jrgt bsr40
|
|||
|
|
|||
|
calla ERASE_TXT
|
|||
|
|
|||
|
RETP
|
|||
|
|
|||
|
|
|||
|
********************************
|
|||
|
* Animation of a bonus item (Process)
|
|||
|
|
|||
|
SUBRP bonus_anim ;A8=*XY, A9=*FRANIM table, A10=X offset
|
|||
|
;A11=*animdeath var
|
|||
|
move *a8+,a0 ;Get X
|
|||
|
move *a8+,a1 ;Get Y
|
|||
|
move *a11,a2
|
|||
|
move a2,*a13(PDATA) ;Save death #
|
|||
|
addk 1,a2 ;+1
|
|||
|
move a2,*a11
|
|||
|
add a10,a0
|
|||
|
sll 16,a0
|
|||
|
sll 16,a1
|
|||
|
move *a9,a2,L
|
|||
|
movi 220,a3
|
|||
|
movi DMAWNZ,a4
|
|||
|
clr a5
|
|||
|
clr a6
|
|||
|
clr a7
|
|||
|
calla BEGINOBJ
|
|||
|
move a9,*a13(PDATA+16),L
|
|||
|
bo40 movk 4,a1 ;Do one, no sleep
|
|||
|
JSRP FRANIM
|
|||
|
jrnc bo60
|
|||
|
move *a13(PDATA+16),a9,L
|
|||
|
jruc bo40
|
|||
|
bo60 move a0,a10
|
|||
|
bo80 SLEEP 1
|
|||
|
move *a11,a0 ;Get death #
|
|||
|
move *a13(PDATA),a1
|
|||
|
cmp a0,a1
|
|||
|
jrgt bo90
|
|||
|
dsj a10,bo80
|
|||
|
jruc bo40
|
|||
|
bo90 move a8,a0
|
|||
|
calla DELOBJ
|
|||
|
DIE
|
|||
|
|
|||
|
|
|||
|
********************************
|
|||
|
* Dictator taunts players
|
|||
|
|
|||
|
|
|||
|
SUBRP dictator_taunt
|
|||
|
movi dictator_t,a8
|
|||
|
jruc anim_script
|
|||
|
|
|||
|
|
|||
|
dictator_t
|
|||
|
.word ASNEW
|
|||
|
.long dictnew_t
|
|||
|
|
|||
|
.word ASNEW
|
|||
|
.long dictnew2_t
|
|||
|
|
|||
|
.word ASLAB,50
|
|||
|
.word ASXY,1,0,-4
|
|||
|
.word ASXY,>10,0,-4
|
|||
|
.word ASXY,>11,0,-4
|
|||
|
.word ASXY,>20,0,-4
|
|||
|
.word ASXY,>21,0,-4
|
|||
|
.word ASSLP,1
|
|||
|
.word ASDSJ
|
|||
|
|
|||
|
.word ASSLP,30
|
|||
|
|
|||
|
.word ASNEW
|
|||
|
.long dictnew3_t
|
|||
|
|
|||
|
.word ASTXT ;Say1
|
|||
|
.long dicttxtb1_st
|
|||
|
|
|||
|
.word ASFRA
|
|||
|
.long dicteybl_l
|
|||
|
.word >10
|
|||
|
|
|||
|
.word ASFRA
|
|||
|
.long dicteytw_l
|
|||
|
.word >11
|
|||
|
|
|||
|
.word ASFRA
|
|||
|
.long dictmtk_l
|
|||
|
.word >20
|
|||
|
|
|||
|
.word ASFRA
|
|||
|
.long dictmtk_l
|
|||
|
.word >21
|
|||
|
|
|||
|
.word ASWAIT
|
|||
|
|
|||
|
.word ASTXTK
|
|||
|
.word ASTXT ;Say2
|
|||
|
.long dicttxtb2_st
|
|||
|
|
|||
|
.word ASFRA
|
|||
|
.long dicteybl_l
|
|||
|
.word >10
|
|||
|
|
|||
|
.word ASFRA
|
|||
|
.long dicteytw_l
|
|||
|
.word >11
|
|||
|
|
|||
|
.word ASFRA
|
|||
|
.long dictmtk_l
|
|||
|
.word >20
|
|||
|
|
|||
|
.word ASFRA
|
|||
|
.long dictmtk_l
|
|||
|
.word >21
|
|||
|
|
|||
|
.word ASLAB,5
|
|||
|
.word ASXY,>20,1,0
|
|||
|
.word ASSLP,1
|
|||
|
.word ASXY,>20,-1,0
|
|||
|
.word ASSLP,3
|
|||
|
.word ASDSJ
|
|||
|
.word ASWAIT
|
|||
|
|
|||
|
.word ASTXTK
|
|||
|
.word ASTXT ;Say3
|
|||
|
.long dicttxtb3_st
|
|||
|
|
|||
|
.word ASFRA
|
|||
|
.long dicteymd_l
|
|||
|
.word >10
|
|||
|
|
|||
|
.word ASFRA
|
|||
|
.long dicteymd_l
|
|||
|
.word >11
|
|||
|
|
|||
|
.word ASFRA
|
|||
|
.long dictmyell_l
|
|||
|
.word >20
|
|||
|
|
|||
|
.word ASFRA
|
|||
|
.long dictmyell_l
|
|||
|
.word >21
|
|||
|
|
|||
|
.word ASWAIT
|
|||
|
|
|||
|
.word ASSLP,60*4
|
|||
|
.word ASTXTK
|
|||
|
.word -1 ;End
|
|||
|
|
|||
|
|
|||
|
dictnew_t
|
|||
|
.long [67,69],WRINK2 ;x,y,img name
|
|||
|
.word 30,DMAWNZ+M_FLIPH+M_FLIPV,3 ;pri,oflags,oid
|
|||
|
.long [326,69],WRINK2
|
|||
|
.word 30,DMAWNZ+M_FLIPV,3
|
|||
|
.long [15,132],WRINK1
|
|||
|
.word 30,DMAWNZ,3
|
|||
|
.long [370,132],WRINK1
|
|||
|
.word 30,DMAWNZ+M_FLIPH,3
|
|||
|
.long [122,25],BIOSIGN
|
|||
|
.word 30,DMAWNZ,3
|
|||
|
.long [273,25],BIOSIGN
|
|||
|
.word 30,DMAWNZ+M_FLIPH,3
|
|||
|
.word -1 ;End
|
|||
|
|
|||
|
X .set 145
|
|||
|
dictnew2_t
|
|||
|
.long [X+1,210],MADBOD
|
|||
|
.word 50,DMAWNZ,1
|
|||
|
.long [X,210],MADBOD
|
|||
|
.word 50,DMAWNZ+M_FLIPH,1
|
|||
|
.long [X+1,210],MADNECK
|
|||
|
.word 50,DMAWNZ,1
|
|||
|
.long [X,210],MADNECK
|
|||
|
.word 50,DMAWNZ+M_FLIPH,1
|
|||
|
.long [X+1,210],MADHAT
|
|||
|
.word 50,DMAWNZ,1
|
|||
|
.long [X,210],MADHAT
|
|||
|
.word 50,DMAWNZ+M_FLIPH,1
|
|||
|
.long [X+1,210],MADEYE1
|
|||
|
.word 52,DMAWNZ,>10
|
|||
|
.long [X,210],MADEYE1
|
|||
|
.word 52,DMAWNZ+M_FLIPH,>11
|
|||
|
.long [X+1,210],MTHSMILE1
|
|||
|
.word 52,DMAWNZ,>20
|
|||
|
.long [X,210],MTHSMILE1
|
|||
|
.word 52,DMAWNZ+M_FLIPH,>21
|
|||
|
.word -1
|
|||
|
|
|||
|
dictnew3_t
|
|||
|
.long [220,18],BOON1
|
|||
|
.word 40,DMAWNZ,2
|
|||
|
.long [350,18],BOON1
|
|||
|
.word 40,DMAWNZ+M_FLIPH,2
|
|||
|
.long [290,76],BOON2
|
|||
|
.word 40,DMAWNZ+M_FLIPH,2
|
|||
|
.word -1
|
|||
|
|
|||
|
|
|||
|
;Eyes
|
|||
|
dicteybl_l
|
|||
|
.long MADEYE1
|
|||
|
.word 30
|
|||
|
.long MADEYE2
|
|||
|
.word 8
|
|||
|
.long MADEYE1
|
|||
|
.word 30
|
|||
|
.long MADEYE2
|
|||
|
.word 8
|
|||
|
.long MADEYE1
|
|||
|
.word 1
|
|||
|
.long 0
|
|||
|
|
|||
|
dicteytw_l
|
|||
|
.long MADEYE1
|
|||
|
.word 20
|
|||
|
.long MADEYE2
|
|||
|
.word 7
|
|||
|
.long MADEYE1
|
|||
|
.word 15
|
|||
|
.long MADEYE2
|
|||
|
.word 9
|
|||
|
.long MADEYE1
|
|||
|
.word 25
|
|||
|
.long MADEYE2
|
|||
|
.word 5
|
|||
|
.long MADEYE1
|
|||
|
.word 1
|
|||
|
.long 0
|
|||
|
|
|||
|
dicteymd_l
|
|||
|
.long MADEYE1
|
|||
|
.word 30
|
|||
|
.long MADEYE2
|
|||
|
.word 20
|
|||
|
.long MADEYE3
|
|||
|
.word 30
|
|||
|
.long MADEYE1
|
|||
|
.word 1
|
|||
|
.long 0
|
|||
|
|
|||
|
;Mouth
|
|||
|
dictmtk_l
|
|||
|
.long MTHOPEN1
|
|||
|
.word 10
|
|||
|
.long MTHOPEN2
|
|||
|
.word 9
|
|||
|
.long MTHOPEN1
|
|||
|
.word 10
|
|||
|
.long MTHSMILE1
|
|||
|
.word 10
|
|||
|
.long MTHOPEN1
|
|||
|
.word 12
|
|||
|
.long MTHSMILE1
|
|||
|
.word 10
|
|||
|
.long MTHOPEN1
|
|||
|
.word 10
|
|||
|
.long MTHOPEN2
|
|||
|
.word 7
|
|||
|
.long MTHOPEN1
|
|||
|
.word 10
|
|||
|
.long MTHOPEN2
|
|||
|
.word 10
|
|||
|
.long MTHSMILE1
|
|||
|
.word 8
|
|||
|
.long MTHOPEN1
|
|||
|
.word 10
|
|||
|
.long MTHSMILE1
|
|||
|
.word 6
|
|||
|
.long MTHOPEN1
|
|||
|
.word 10
|
|||
|
.long MTHSMILE1
|
|||
|
.word 8
|
|||
|
.long MTHOPEN1
|
|||
|
.word 10
|
|||
|
.long MTHOPEN2
|
|||
|
.word 7
|
|||
|
.long MTHSMILE1
|
|||
|
.word 1
|
|||
|
.long 0
|
|||
|
|
|||
|
dictmyell_l
|
|||
|
.long MTHSMILE1
|
|||
|
.word 15
|
|||
|
.long MTHSMILE2
|
|||
|
.word 10
|
|||
|
.long MTHSMILE1
|
|||
|
.word 30
|
|||
|
.long MTHOPEN1
|
|||
|
.word 7
|
|||
|
.long MTHOPEN2
|
|||
|
.word 7
|
|||
|
.long MTHOPEN3
|
|||
|
.word 5
|
|||
|
.long MTHOPEN2
|
|||
|
.word 7
|
|||
|
.long MTHOPEN1
|
|||
|
.word 7
|
|||
|
.long MTHOPEN3
|
|||
|
.word 6
|
|||
|
.long MTHOPEN2
|
|||
|
.word 8
|
|||
|
.long MTHOPEN1
|
|||
|
.word 7
|
|||
|
.long MTHOPEN2
|
|||
|
.word 5
|
|||
|
.long MTHOPEN3
|
|||
|
.word 6
|
|||
|
.long MTHOPEN2
|
|||
|
.word 7
|
|||
|
.long MTHOPEN3
|
|||
|
.word 6
|
|||
|
.long MTHOPEN2
|
|||
|
.word 5
|
|||
|
.long MTHOPEN1
|
|||
|
.word 7
|
|||
|
.long MTHSMILE1
|
|||
|
.word 1
|
|||
|
.long 0
|
|||
|
|
|||
|
|
|||
|
dicttxt1_st
|
|||
|
.word PRTF8,320,25,1 ;Mode,X,Y,color
|
|||
|
.byte "YOU HAVE INVADED",0
|
|||
|
.word PRTF8,320,35,1
|
|||
|
.byte "MY PEACE LOVING",0
|
|||
|
.word PRTF8,320,45,1
|
|||
|
.byte "COUNTRY.",0
|
|||
|
.word -1
|
|||
|
dicttxt2_st
|
|||
|
.word PRTF8,320,25,1
|
|||
|
.byte "THIS ACT OF",0
|
|||
|
.word PRTF8,320,35,1
|
|||
|
.byte "AGRESSION WILL",0
|
|||
|
.word PRTF8,320,45,1
|
|||
|
.byte "NOT BE TOLERATED.",0
|
|||
|
.word -1
|
|||
|
dicttxt3_st
|
|||
|
.word PRTF8,320,25,1
|
|||
|
.byte "PURSUE ME AND",0
|
|||
|
.word PRTF8,320,35,1
|
|||
|
.byte "YOU SHALL SWIM IN",0
|
|||
|
.word PRTF8,320,45,1
|
|||
|
.byte "YOUR OWN BLOOD!!!",0
|
|||
|
.word -1
|
|||
|
|
|||
|
dicttxtb1_st
|
|||
|
.word PRTF8,286,25,1
|
|||
|
.byte "YOU THINK YOU",0
|
|||
|
.word PRTF8,286,36,1
|
|||
|
.byte "ARE TOUGH",0
|
|||
|
.word PRTF8,286,47,1
|
|||
|
.byte "BECAUSE YOU HAVE",0
|
|||
|
.word PRTF8,286,58,1
|
|||
|
.byte "KILLED ORCUS?",0
|
|||
|
.word -1
|
|||
|
dicttxtb2_st
|
|||
|
.word PRTF8,286,25,1
|
|||
|
.byte "IT WAS ONLY A",0
|
|||
|
.word PRTF8,286,36,1
|
|||
|
.byte "TOY FOR THE",0
|
|||
|
.word PRTF8,286,47,1
|
|||
|
.byte "CHILDREN!",0
|
|||
|
.word -1
|
|||
|
dicttxtb3_st
|
|||
|
.word PRTF8,286,25,1
|
|||
|
.byte "MY REAL FORCES",0
|
|||
|
.word PRTF8,286,36,1
|
|||
|
.byte "WILL RIP YOUR",0
|
|||
|
.word PRTF8,286,47,1
|
|||
|
.byte "MEN APART!",0
|
|||
|
.word -1
|
|||
|
|
|||
|
dicttxt4_st
|
|||
|
.word PRTF8,320,25,1
|
|||
|
.byte "YOU WILL DIE!",0
|
|||
|
.word PRTF8,320,35,1
|
|||
|
.byte "YOU WILL DIE!!",0
|
|||
|
.word PRTF8,320,45,1
|
|||
|
.byte "YOU WILL DIE!!!",0
|
|||
|
.word -1
|
|||
|
dicttxt5_st
|
|||
|
.word PRTF8,320,25,1
|
|||
|
.byte "MY FORCES WILL",0
|
|||
|
.word PRTF8,320,35,1
|
|||
|
.byte "CRUSH YOUR MEN!",0
|
|||
|
.word -1
|
|||
|
dicttxt6_st
|
|||
|
.word PRTF8,320,25,1
|
|||
|
.byte "THEY WILL DIE",0
|
|||
|
.word PRTF8,320,35,1
|
|||
|
.byte "BY THE THOUSANDS!",0
|
|||
|
.word -1
|
|||
|
dicttxt7_st
|
|||
|
.word PRTF8,320,25,1
|
|||
|
.byte "THE SANDS WILL BE",0
|
|||
|
.word PRTF8,320,35,1
|
|||
|
.byte "COVERED BY YOUR",0
|
|||
|
.word PRTF8,320,45,1
|
|||
|
.byte "BLOOD!",0
|
|||
|
.word -1
|
|||
|
dicttxt8_st
|
|||
|
.word PRTF8,320,25,1
|
|||
|
.byte "IF YOU CONTINUE,",0
|
|||
|
.word PRTF8,320,35,1
|
|||
|
.byte "THE HOSTAGES",0
|
|||
|
.word PRTF8,320,45,1
|
|||
|
.byte "WILL DIE!",0
|
|||
|
.word -1
|
|||
|
|
|||
|
|
|||
|
|
|||
|
********************************
|
|||
|
* Run an animation script
|
|||
|
|
|||
|
|
|||
|
.bss animsfnum ,16 ;# FRANIMs running
|
|||
|
.bss animslp ,32+16 ;*Loop point, Loop cnt
|
|||
|
|
|||
|
ASNEW .equ 0 ;AnimScript commands
|
|||
|
ASFRA .equ 1 ;
|
|||
|
ASSLP .equ 2 ;
|
|||
|
ASTXT .equ 3 ;
|
|||
|
ASTXTK .equ 4 ;
|
|||
|
ASWAIT .equ 5 ;
|
|||
|
ASXY .equ 10 ;
|
|||
|
ASLAB .equ 20 ;
|
|||
|
ASDSJ .equ 21 ;
|
|||
|
|
|||
|
|
|||
|
SUBRP anim_script ;A8=*Script
|
|||
|
|
|||
|
clr a1
|
|||
|
move a1,@animsfnum
|
|||
|
|
|||
|
ans50 move *a8+,a1 ;Get command
|
|||
|
move *a8+,a0,L ;Get data
|
|||
|
|
|||
|
cmpi ASNEW,a1 ;New objects
|
|||
|
jrne ans200
|
|||
|
PUSH a8
|
|||
|
move a0,a9
|
|||
|
ans100 move *a9+,a1 ;Get Y
|
|||
|
move *a9+,a0 ;Get X
|
|||
|
sll 16,a0
|
|||
|
sll 16,a1
|
|||
|
move *a9+,a2,L ;*Image
|
|||
|
move *a9+,a3 ;Pri
|
|||
|
move *a9+,a4 ;Flags
|
|||
|
move *a9+,a5 ;ID
|
|||
|
addi CLSDEAD,a5
|
|||
|
clr a6
|
|||
|
clr a7
|
|||
|
calla BEGINOBJ
|
|||
|
move *a9,a0
|
|||
|
jrge ans100
|
|||
|
PULL a8
|
|||
|
jruc ans50
|
|||
|
|
|||
|
ans200 cmpi ASFRA,a1 ;FRANIM
|
|||
|
jrne ans300
|
|||
|
move @animsfnum,a2
|
|||
|
addk 1,a2
|
|||
|
move a2,@animsfnum
|
|||
|
move a0,a9
|
|||
|
move *a8+,a10 ;OID
|
|||
|
CREATE 0,anims_franim
|
|||
|
jruc ans50
|
|||
|
|
|||
|
ans300 cmpi ASSLP,a1 ;Sleep
|
|||
|
jrne ans400
|
|||
|
subk 16,a8 ;-WORD
|
|||
|
calla PRCSLP
|
|||
|
jruc ans50
|
|||
|
|
|||
|
ans400 cmpi ASTXT,a1 ;Print text
|
|||
|
jrne ans500
|
|||
|
PUSH a8
|
|||
|
callr print_xy
|
|||
|
PULL a8
|
|||
|
jruc ans50
|
|||
|
|
|||
|
ans500 cmpi ASTXTK,a1 ;Kill text
|
|||
|
jrne ans600
|
|||
|
move a8,-*a12,L ;Save in process stack
|
|||
|
calla ERASE_TXT
|
|||
|
; movk 4,a11
|
|||
|
; JSRP text_shrink ;Sleeps
|
|||
|
move *a12+,a8,L
|
|||
|
subk 32,a8 ;-LONG
|
|||
|
jruc ans50
|
|||
|
|
|||
|
ans600 cmpi ASWAIT,a1 ;Wait on FRANIMs
|
|||
|
jrne ans700
|
|||
|
subk 32,a8 ;-LONG
|
|||
|
ans620 SLEEP 2
|
|||
|
move @animsfnum,a1
|
|||
|
jrnz ans620
|
|||
|
jruc ans50
|
|||
|
|
|||
|
ans700 cmpi ASXY,a1 ;New XY
|
|||
|
jrne ans1200
|
|||
|
subk 16,a8 ;-WORD
|
|||
|
move *a8+,a3
|
|||
|
move *a8+,a4
|
|||
|
sll 16,a0
|
|||
|
srl 16,a0
|
|||
|
addi CLSDEAD,a0
|
|||
|
move @OBJLST,a1,L
|
|||
|
ans720 callr obj_find
|
|||
|
jrz ans50
|
|||
|
move *a1(OXPOS),a2 ;New X
|
|||
|
add a3,a2
|
|||
|
move a2,*a1(OXPOS)
|
|||
|
move *a1(OYPOS),a2 ;New Y
|
|||
|
add a4,a2
|
|||
|
move a2,*a1(OYPOS)
|
|||
|
move *a1,a1,L
|
|||
|
jrz ans50
|
|||
|
jruc ans720
|
|||
|
|
|||
|
ans1200 cmpi ASLAB,a1 ;Set label
|
|||
|
jrne ans1300
|
|||
|
subk 16,a8 ;-WORD
|
|||
|
move a8,@animslp,L
|
|||
|
move a0,@animslp+32
|
|||
|
jruc ans50
|
|||
|
|
|||
|
ans1300 cmpi ASDSJ,a1 ;Decrement and loop to label
|
|||
|
jrne ans2000
|
|||
|
subk 32,a8 ;-LONG
|
|||
|
move @animslp+32,a2
|
|||
|
subk 1,a2
|
|||
|
move a2,@animslp+32
|
|||
|
jrz ans50
|
|||
|
move @animslp,a8,L ;Loop
|
|||
|
jruc ans50
|
|||
|
|
|||
|
ans2000 SLEEP 1 ;DEBUG
|
|||
|
move @SWITCH,a0
|
|||
|
not a0
|
|||
|
jrz ans2000
|
|||
|
|
|||
|
movi CLSDEAD,a0 ;>Delete objects
|
|||
|
movi >ff00,a1
|
|||
|
calla KILOBJ
|
|||
|
|
|||
|
|
|||
|
RETP
|
|||
|
|
|||
|
|
|||
|
|
|||
|
********************************
|
|||
|
* Animation of a part (Process)
|
|||
|
|
|||
|
APTRPD ANFL,0 ;*Franim list
|
|||
|
|
|||
|
|
|||
|
SUBRP anims_franim ;A9=*FRAN list, A10=OID
|
|||
|
|
|||
|
addi CLSDEAD,a10
|
|||
|
move @OBJLST,a8,L ;>Find object
|
|||
|
anf100 move *a8(OID),a0
|
|||
|
cmp a10,a0
|
|||
|
jreq anf300
|
|||
|
move *a8,a8,L
|
|||
|
jrnz anf100
|
|||
|
jruc anf700 ;No match!
|
|||
|
|
|||
|
anf300 move a9,*a13(ANFL),L
|
|||
|
anf340 movk 1,a1 ;Do one, no sleep
|
|||
|
JSRP FRANIM
|
|||
|
jrnc anf340
|
|||
|
move *a13(ANFL),a9,L ;Go to 1st
|
|||
|
; jruc anf340
|
|||
|
|
|||
|
anf390
|
|||
|
; move a8,a0
|
|||
|
; calla DELOBJ
|
|||
|
anf700 move @animsfnum,a2
|
|||
|
subk 1,a2
|
|||
|
move a2,@animsfnum
|
|||
|
DIE
|
|||
|
|
|||
|
|
|||
|
********************************
|
|||
|
* Find an object by OID
|
|||
|
|
|||
|
SUBRP obj_find ;A0=OID, A1=*1st obj
|
|||
|
of20 move *a1(OID),a2
|
|||
|
cmp a0,a2
|
|||
|
jreq of50
|
|||
|
move *a1,a1,L
|
|||
|
jrnz of20
|
|||
|
of50 move a1,a1 ;A1=*Obj or 0
|
|||
|
rets ;Pass CC
|
|||
|
|
|||
|
|
|||
|
|
|||
|
********************************
|
|||
|
* Calls DO_RACKUP
|
|||
|
|
|||
|
.ref SCORE_FLAG
|
|||
|
.ref KILBGND,KILALL
|
|||
|
|
|||
|
SUBRP rackcaller
|
|||
|
rc10 SLEEP 30
|
|||
|
move @SLDEBUG,a0
|
|||
|
btst 0,a0
|
|||
|
jrz rc10
|
|||
|
movk 1,a0
|
|||
|
move a0,@INTRO
|
|||
|
|
|||
|
calla KILBGND
|
|||
|
clr a0
|
|||
|
clr a1
|
|||
|
calla KILALL
|
|||
|
clr a0
|
|||
|
clr a1
|
|||
|
calla KILOBJ
|
|||
|
clr a0
|
|||
|
move a0,@SCORE_FLAG
|
|||
|
jruc DO_RACKUP
|
|||
|
|
|||
|
|
|||
|
|
|||
|
********************************
|
|||
|
* Extra junk!!!
|
|||
|
|
|||
|
.if 0
|
|||
|
|
|||
|
;text objectives appear slowly
|
|||
|
;tag MOVI FADEDWN,A0 ;LIST OF PALS TO FADE
|
|||
|
; MOVK 3,A1 ;RATE
|
|||
|
; MOVI 30H,A2 ;HOW MANY TIMES TO FADE
|
|||
|
; MOVE A2,@COUNT
|
|||
|
; CALLA FADEOUT2 ;DO IT
|
|||
|
|
|||
|
move @OBJLST,a1,L ;>Tiles fly away
|
|||
|
rp200 move *a1(OZPOS),a0
|
|||
|
cmpi 200,a0
|
|||
|
jrnz rp230
|
|||
|
|
|||
|
calla RANDOM
|
|||
|
sll 32-18,a0
|
|||
|
pushst
|
|||
|
srl 32-18,a0
|
|||
|
addi >30000,a0
|
|||
|
popst
|
|||
|
jrc rp210
|
|||
|
neg a0
|
|||
|
rp210 move a0,*a1(OXVEL),L
|
|||
|
calla RANDOM
|
|||
|
sll 32-18,a0
|
|||
|
pushst
|
|||
|
srl 32-18,a0
|
|||
|
popst
|
|||
|
jrc rp220
|
|||
|
neg a0
|
|||
|
rp220 move a0,*a1(OYVEL),L
|
|||
|
|
|||
|
rp230 move *a1,a1,L
|
|||
|
jrnz rp200
|
|||
|
|
|||
|
|
|||
|
movi statspal,a0 ;>Cycle color loop
|
|||
|
movk 31,a1
|
|||
|
clr a2
|
|||
|
rp45 move a2,*a0+
|
|||
|
addk 16,a2
|
|||
|
dsj a1,rp45
|
|||
|
|
|||
|
movi 60*4,a8
|
|||
|
clr a9
|
|||
|
clr a10
|
|||
|
|
|||
|
rp50 move @PCNT,a0
|
|||
|
sll 32-2,a0
|
|||
|
srl 32-2,a0
|
|||
|
jrnz rp70 ;Skip cycle
|
|||
|
|
|||
|
movi 31*32*32+ 31*32+ 1,a0
|
|||
|
movi colorbuf,a1
|
|||
|
move a0,*a1+ ;Set 1st color
|
|||
|
movi statspal,a2
|
|||
|
movk 30,a4
|
|||
|
rp55 move *a2,a3 ;Get color #
|
|||
|
addk 16,a3
|
|||
|
movi statscolor_t,a0
|
|||
|
add a3,a0
|
|||
|
move *a0(16),a5 ;Next is end?
|
|||
|
jrge rp60
|
|||
|
clr a3 ;Restart
|
|||
|
rp60 move *a0+,*a1+
|
|||
|
move a3,*a2+
|
|||
|
dsj a4,rp55
|
|||
|
|
|||
|
callr setpall0
|
|||
|
|
|||
|
rp70 SLEEP 1 ;Sleep 4??
|
|||
|
dsj a8,rp50
|
|||
|
|
|||
|
|
|||
|
********************************
|
|||
|
|
|||
|
.bss scorebuf ,12*8 ;11 char_s
|
|||
|
|
|||
|
SUBRP bcdtoasc ;A0.L=BCD
|
|||
|
PUSH a1,a2,a3
|
|||
|
movi scorebuf+11*8,a1
|
|||
|
clr a2
|
|||
|
movb a2,*a1
|
|||
|
movk 4,a3
|
|||
|
bcd5 dsj a3,bcd10 ;Convert BCD
|
|||
|
movk 3,a3
|
|||
|
movi ',',a2
|
|||
|
subk 8,a1
|
|||
|
movb a2,*a1
|
|||
|
bcd10 movk >f,a2
|
|||
|
and a0,a2
|
|||
|
addi '0',a2
|
|||
|
subk 8,a1
|
|||
|
movb a2,*a1
|
|||
|
srl 4,a0
|
|||
|
jrne bcd5
|
|||
|
move a1,a0
|
|||
|
PULL a1,a2,a3
|
|||
|
rets
|
|||
|
|
|||
|
|
|||
|
********************************
|
|||
|
.endif
|
|||
|
|
|||
|
|
|||
|
.end
|
|||
|
|
|||
|
|