2248 lines
42 KiB
NASM
Executable File
2248 lines
42 KiB
NASM
Executable File
**************************************************************
|
||
*
|
||
* Software: Shawn Liptak
|
||
* Initiated: June 6,1991 (Total Carnage)
|
||
*
|
||
* Modified: Shawn Liptak, 2/11/92 -Started basketball
|
||
*
|
||
* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC.
|
||
*
|
||
*.Last mod - 7/23/92 18:42
|
||
**************************************************************
|
||
.file "rackup.asm"
|
||
.title "total carnage game program"
|
||
.width 132
|
||
.option b,d,l,t
|
||
.mnolist
|
||
|
||
.include "mproc.equ"
|
||
.include "disp.equ"
|
||
.include "sys.equ"
|
||
.include "game.equ"
|
||
.include "imgtbl.glo"
|
||
.include "audit.equ"
|
||
.include "shawn.hdr" ;My macros
|
||
|
||
|
||
|
||
;sound headers used
|
||
|
||
.ref GLSEXP,NOWAY,SETDWN,TUNE3,TUNE2,STATSND
|
||
|
||
CVSDOFF .word >F0F0,10,>807D,0 ;SPEECH OFF
|
||
TUNE4 .word >f3fe,10,>8007,0 ;Rackup tune
|
||
racksup .word >f280,1,>80b3,0 ;Rackup bonus sweep up
|
||
rackoff .word >fa81,1,>80a7,0 ;Rackup bonus off
|
||
kilfgnd .word >f000,1,>807f,0 ;Kill foregnd snds
|
||
rackp1p .word >fa80,1,>80b4,0 ;Rackup P1 gets 1000 pts
|
||
rackp2p .word >fa80,1,>80b5,0 ;^ P2
|
||
stats1 .word >f280,1,>8100,0 ;Rackup stat line snd
|
||
stats2 .word >f280,1,>8101,0 ;^
|
||
stats3 .word >f280,1,>8102,0 ;^
|
||
stats4 .word >f280,1,>8103,0 ;^
|
||
stats5 .word >f280,1,>8104,0 ;^
|
||
stats6 .word >f280,1,>8105,0 ;^
|
||
stats7 .word >f280,1,>8106,0 ;^
|
||
stats8 .word >f280,1,>8107,0 ;^
|
||
stats9 .word >f280,1,>8108,0 ;^
|
||
stats10 .word >f280,1,>8109,0 ;^
|
||
stats11 .word >f280,1,>810a,0 ;^
|
||
stats12 .word >f280,1,>810b,0 ;^
|
||
txtssnd .word >f3f7,8,>80b1,0 ;Text shrink
|
||
shout .word >f1a0,60,>80fe,0 ;Rackup victory shout
|
||
rackgun .word >fca0,4,>8030,0 ;Player shoots gun
|
||
gigle1 .word >f9a0,60,>80f3,0 ;Rackup winner laughs
|
||
ahkb1 .word >f9a0,10,>80eb,0 ;Akhboob speech
|
||
ahkb2 .word >f9a0,10,>80ec,0 ;^
|
||
ahkb3 .word >f9a0,10,>80ed,0 ;^
|
||
ahkbsta .word >f9a0,10,>80ee,0 ;^ start angry
|
||
ahkbang .word >f9a0,10,>80ef,0 ;^ angry
|
||
DOLLAR .WORD >F9F7,>50,>814E,0 ;BUY 4 DOLLAR
|
||
yousuck .word >f9a0,10,>80c5,0 ;You suck at this game!
|
||
fisthit .word >fca0,10,>803c,0 ;Ahkboob hits desk
|
||
ermtune .word >f3f0,10,>8004,0 ;Electrocution tune
|
||
fshock .word >f540,20,>80bb,0 ;Electric chair shocks
|
||
fburn .word >f048,30,>80d7,0 ;^ burn
|
||
fpain1 .word >f965,20,>80f6,0 ;Player in pain
|
||
fpain2 .word >f160,20,>80f7,0 ;^
|
||
fpain3 .word >f160,20,>80fd,0 ;^
|
||
fskullb .word >f460,20,>8040,0 ;Skull bounce
|
||
fryexp .word >fc50,6,>803e,0 ;Fry explosion
|
||
fryexp2 .word >fd50,8,>80d9,0 ;^
|
||
totcarn .word >f980,30,>80cf,0 ;Total carnage!
|
||
gluck .word >f1f7,>40,>80e5,0 ;"Good luck"
|
||
TXTSND1 .WORD >F3F7,>8,>80AE,0
|
||
|
||
|
||
;symbols externally defined
|
||
|
||
.ref anim_script,anim_kilslp,animscnt,anim_killall,anim_wait
|
||
.ref CYCLE_TABLE,AIRSCRM
|
||
.ref pal_set,pal_find,pal_getf,PCNT,WAVE
|
||
.ref IRQSKYE,ERASE_TXT,HEXTOASC,FRANIM,HALT
|
||
.ref CRMP,BCDBIN,BINBCD
|
||
.ref WSPEED,PSTATUS
|
||
.ref COLCYC,BGND_UD1,BAKMODS,WNDWON,WNDWOFF,NO_START,WRLD
|
||
.ref KILBGND
|
||
.ref STRCNRMO,STRCNRMO_1,STRCNRM,LOWZ
|
||
.ref RD15FONT,RD7FONT
|
||
|
||
.ref P1DATA,P2DATA
|
||
|
||
.if DEBUG
|
||
.ref SLDEBUG
|
||
.endif
|
||
|
||
.ref timerp1,timerp2
|
||
.ref palfmin
|
||
.ref RNDRNG,RNDRNG0
|
||
.ref FRANIMQ
|
||
.ref CYCSPECT
|
||
.ref GET_ADJ,aud_addnumplyrs,AUD
|
||
.ref ZERO_BITS
|
||
.ref wbmcolor_t
|
||
|
||
;symbols defined in this file
|
||
|
||
.def DEATHS
|
||
|
||
;uninitialized ram definitions
|
||
|
||
.bss cycmem ,5*16*2 ;Allocate 2 x color area in ram
|
||
.bss statspal ,31*16 ;Statistics palette
|
||
.bss boanimdeath1 ,16 ;CntDn for bonus anim procs to die
|
||
.bss boanimdeath2 ,16 ;^
|
||
.bss scoredie ,16 ;>0=Score processes die
|
||
.bss hitpercent1 ,16 ;Player1 %
|
||
.bss hitpercent2 ,16 ;Player2 %
|
||
.bss hitsmin1 ,16 ;Player1 hits per minute
|
||
.bss hitsmin2 ,16 ;Player2 ^
|
||
.bss score1old ,32 ;P1 score before bonuses
|
||
.bss score2old ,32 ;P2 ^
|
||
|
||
.bss bonusstat ,16 ;Status of bonus
|
||
|
||
.bss fryp1palmem ,65*16 ;P1 mem for pallette pulse
|
||
.bss fryp2palmem ,65*16 ;P2 ^
|
||
|
||
.bss DEATHS ,16 ;DEATH STATUS 0,1,2, OR 3 WHEN DONE
|
||
|
||
|
||
.text
|
||
|
||
|
||
|
||
********************************
|
||
* Print incoming trans text
|
||
|
||
SUBR INCOM_TRAN ;A1=Rackup # (0-2)
|
||
|
||
PUSH a1
|
||
move a1,a2
|
||
movi incom_st,a0 ;*Text
|
||
subk 1,a2
|
||
jrlt it20 ;0?
|
||
jreq it10 ;1?
|
||
movi [0,>fcbd],a1 ;Fix X for purple guy eating
|
||
jruc it20
|
||
it10 movi [0,-40],a1 ;Fix X
|
||
it20 clr a2
|
||
move a2,@WRLD ;Do world adj
|
||
callr prt_xy
|
||
|
||
PULL A1
|
||
move a1,a2
|
||
movi incom_st2,a0 ;*Text
|
||
subk 1,a2
|
||
jrlt Mit20 ;0?
|
||
jreq Mit10 ;1?
|
||
movi [0,>fcbd],a1 ;Fix X for purple guy eating
|
||
jruc Mit20
|
||
Mit10 movi [0,-40],a1 ;Fix X
|
||
Mit20 clr a2
|
||
move a2,@WRLD ;Do world adj
|
||
callr prt_xy
|
||
RETS
|
||
|
||
incom_st
|
||
XYTXT PRTF15,652,55,1,"INCOMING TRANSMISSION"
|
||
.word -1
|
||
|
||
incom_st2
|
||
XYTXT 0,652,45,1,"UNITED NATIONS"
|
||
.word -1
|
||
|
||
|
||
********************************
|
||
* Rack it up!
|
||
|
||
SUBR DO_RACKUP
|
||
|
||
calla STOPOBJS ;Keep all objs still
|
||
|
||
movk 1,a0 ;Delay start of a 2nd plyr flag
|
||
move a0,@NO_START
|
||
clr a0
|
||
move a0,@IRQSKYE
|
||
|
||
movi TUNE4,a0
|
||
calla snd_play1
|
||
|
||
SLEEP 96
|
||
|
||
clr a0
|
||
move a0,@HALT
|
||
;>Make tiles
|
||
; movk 8*4,a1 ;# Panels
|
||
; movi -4*>25800+>12c00,a2 ;Velocity
|
||
; movk 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
|
||
; movk 10,a3
|
||
; movk 1,a4
|
||
; xor a4,a5 ;Toggle 0 Bit
|
||
;rp30 calla ADJSTWTL ;Adjust into world
|
||
; calla INSOBJ ;Insert obj
|
||
; dsj a1,rp20
|
||
;
|
||
; SLEEPK 20
|
||
|
||
calla STOPOBJS ;Stop tiles
|
||
|
||
callr scores_bcdbin
|
||
|
||
; move @P1DATA+THITS,a1 ;>Calc P1 % & hitsmin
|
||
; move a1,a3
|
||
; movi 100,a0
|
||
; mpyu a0,a1
|
||
; move @P1DATA+TSHOTS,a2
|
||
; divu a2,a1
|
||
; move a1,@hitpercent1
|
||
;
|
||
; movi 60,a0
|
||
; mpyu a0,a3
|
||
; move @timerp1,a2
|
||
; divu a2,a3
|
||
; move a3,@hitsmin1
|
||
;
|
||
; move @P2DATA+THITS,a1 ;>Calc P2 % & hitsmin
|
||
; move a1,a3
|
||
; movi 100,a0
|
||
; mpyu a0,a1
|
||
; move @P2DATA+TSHOTS,a2
|
||
; divu a2,a1
|
||
; move a1,@hitpercent2
|
||
;
|
||
; movi 60,a0
|
||
; mpyu a0,a3
|
||
; move @timerp2,a2
|
||
; divu a2,a3
|
||
; move a3,@hitsmin2
|
||
|
||
movi [2,30],a8 ;Color 2, 30 colors
|
||
movi SCOREPAL,a9
|
||
movi wbmcolor_t,a10 ;Color table
|
||
movk 7,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
|
||
|
||
CREATE0 score_prt
|
||
SLEEPK 1
|
||
CREATE0 scorebonus_prt
|
||
|
||
; JSRP bonus_main
|
||
|
||
; JSRP player_showstats
|
||
|
||
movk 1,a0
|
||
move a0,@scoredie ;Kill score processes
|
||
SLEEPK 8
|
||
|
||
movk 5,a11
|
||
JSRP text_shrink
|
||
|
||
; JSRP player_bonuswin ;Show bonus winner!
|
||
|
||
|
||
movi 60*7,a0
|
||
callr sleep_var
|
||
|
||
|
||
callr scores_binbcd
|
||
|
||
movi CYCPID,a0
|
||
calla KIL1C
|
||
|
||
debug
|
||
movi TUNE3,a0 ;Turn on dictator taunt music
|
||
calla snd_play1
|
||
|
||
SLEEPK 25
|
||
|
||
movi SCOREPAL,a0 ;*Color
|
||
clr a1 ;Palette 0, Color 0
|
||
move *a0+,a2 ;# Colors
|
||
calla pal_set
|
||
; movi DESRTPL,a0 ;*Color
|
||
; move *a0,a2 ;# Colors
|
||
; calla pal_getf
|
||
; srl 8,a0
|
||
; sll 8,a0
|
||
; move a0,a1
|
||
; movi DESRTPL+16,a0 ;*Color
|
||
; calla pal_set
|
||
|
||
movi 2*32*32+2*32+2,a0
|
||
move a0,@IRQSKYE ;Dark grey background behind dictator
|
||
|
||
calla ERASE_TXT
|
||
calla anim_killall
|
||
|
||
movk 3,a0
|
||
; move a0,@TAUNTOUT ;Taunt over
|
||
DIE
|
||
|
||
|
||
|
||
;panel_t .long [177,0],[0,0],RACKBLK ;x,y,img name
|
||
; .word 200,DMAWNZ+M_NOCOLL,CLSDEAD ;zpos,flags,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
|
||
|
||
engtran_s
|
||
.byte "ENGLISH TRANSLATION",0
|
||
.even
|
||
|
||
|
||
********************************
|
||
* Print XY sting set if player in game
|
||
* Trashes A2-A6
|
||
|
||
SUBRP printifp_xy ;A0=*Plyr1 string, A1=*Plyr2 string
|
||
|
||
PUSH a8
|
||
move a1,a8
|
||
|
||
move @PSTATUS,a1
|
||
btst 0,a1
|
||
jrz pipx10
|
||
calla prt0_xy ;P1
|
||
|
||
pipx10 move @PSTATUS,a1
|
||
btst 1,a1
|
||
jrz pipx20
|
||
move a8,a0
|
||
calla prt0_xy ;P2
|
||
|
||
pipx20 PULL a8
|
||
rets
|
||
|
||
********************************
|
||
* Print an XY string set
|
||
* A0=*XY text
|
||
* A1=Y:X offset
|
||
* Trashes A1-A5
|
||
* Rets: A0=*Next XY or End
|
||
|
||
SUBR prt0_xy
|
||
|
||
clr a1 ;No offset
|
||
|
||
SUBRP prt_xy
|
||
|
||
PUSH a6,a7,a8,a9,a10,a11
|
||
|
||
move a0,a8 ;A8=*Txt data
|
||
move a1,a3 ;A3=Y:X offset
|
||
prtxy5 move *a8+,a1 ;Mode word
|
||
move *a8+,a9,L ;Scrn Y:X
|
||
addxy a3,a9 ;+Offset
|
||
btst PRTOBJB,a1
|
||
jrnz pxy300
|
||
|
||
movk [0,1],a10 ;Char Y:X spacing
|
||
movi RD7FONT,a11 ;*Font
|
||
btst PRTF15B,a1
|
||
jrz prtxy10
|
||
movi RD15FONT,a11 ;*Font
|
||
prtxy10 move *a8+,a6 ;Color
|
||
move a6,a0
|
||
sll 8,a6
|
||
or a0,a6
|
||
|
||
btst PRTDECB,a1
|
||
jrz prtxy30
|
||
move *a8+,a2,L ;Binary mode
|
||
PUSH a8
|
||
move *a2,a8 ;Get word
|
||
btst PRTLB,a1
|
||
jrz prtxy20
|
||
move *a2,a8,L ;Get long
|
||
prtxy20 calla HEXTOASC
|
||
jruc prtxy40
|
||
|
||
prtxy30 btst PRTBCDB,a1
|
||
jruc prtxy70
|
||
; jrz 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 pxy80
|
||
|
||
prtxy70 ;>String mode
|
||
btst PRTF8B,a1
|
||
jrz prtxy74
|
||
LOCKUP
|
||
; movi BLLNP5,a0
|
||
; calla pal_find
|
||
; 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
|
||
pxy80 move *a8,a0 ;-=End
|
||
jrge prtxy5
|
||
|
||
move a8,a0
|
||
PULL a6,a7,a8,a9,a10,a11
|
||
rets
|
||
|
||
pxy300 move a3,a10 ;>Print obj
|
||
move *a8+,a3 ;Z
|
||
move *a8+,a2,L ;*Img
|
||
move *a2,a1 ;Get ISIZEX
|
||
srl 1,a1 ;/2
|
||
move a9,a0
|
||
sub a1,a0 ;Center
|
||
sll 16,a0 ;X
|
||
clr a1
|
||
movy a9,a1 ;Y
|
||
movi DMAWNZ+M_NOCOLL,a4
|
||
movi CLSNEUT|TYPTEXT|SUBTXT,a5
|
||
clr a6
|
||
clr a7
|
||
move a8,a9
|
||
calla BEGINOBJ
|
||
move a9,a8
|
||
move a10,a3
|
||
jruc pxy80
|
||
|
||
|
||
********************************
|
||
* Print an XY string set number with no objects
|
||
* Trashes A2-A7
|
||
|
||
NOTINUSE
|
||
SUBRP prtnobj_xy ;A0=*XY Text
|
||
|
||
PUSH a8,a9,a10,a11
|
||
|
||
move a0,a8
|
||
pdnox5 movk [0,1],a10 ;Char y,x spacing
|
||
movi RD7FONT,a11 ;*Font
|
||
move *a8+,a1 ;Mode word
|
||
btst PRTF15B,a1
|
||
jrz pdnox10
|
||
movi RD15FONT,a11 ;*Font
|
||
pdnox10 move *a8+,a9,L ;Scrn y/x
|
||
move *a8+,a6 ;Color
|
||
move a6,a2
|
||
sll 8,a6
|
||
or a2,a6
|
||
|
||
btst PRTDECB,a1
|
||
jrz pdnoxx
|
||
move *a8+,a2,L ;Binary mode
|
||
move *a2,a0 ;Get word
|
||
btst PRTLB,a1
|
||
jrz pdnox20
|
||
move *a2,a0,L ;Get long
|
||
pdnox20 PUSH a8
|
||
move a0,a8
|
||
calla HEXTOASC
|
||
clr a0
|
||
JSRP STRCNRM
|
||
PULL a8
|
||
|
||
move *a8,a0 ;-=End
|
||
jrge pdnox5
|
||
|
||
pdnoxx PULL a8,a9,a10,a11
|
||
rets
|
||
.endif
|
||
|
||
********************************
|
||
* Vertically shrink text
|
||
* Trashes A0-A10
|
||
|
||
SUBRP text_shrink ;A11=Sleep time
|
||
|
||
movi txtssnd,a0
|
||
calla snd_play1
|
||
|
||
movk 8,a10 ;Size for x2 shrinkage
|
||
txs20 move a11,a0
|
||
calla PRCSLP
|
||
clr a8
|
||
move @OBJLST,a9,L ;>Find and shrink
|
||
txs40 move *a9(OID),a0
|
||
cmpi CLSNEUT|TYPTEXT|SUBTXT,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
|
||
cmpi 15,a0
|
||
jrlt txs50
|
||
subk 5,a0 ;Shrink x7
|
||
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
|
||
|
||
|
||
********************************
|
||
* Delete text at a ZPOS
|
||
* Trashes A0-A3,A14
|
||
|
||
SUBRP text_delz ;A0=ZPOS
|
||
|
||
move a0,a2
|
||
|
||
move @OBJLST,a0,L
|
||
tdz40 move *a0(OID),a1
|
||
cmpi CLSNEUT|TYPTEXT|SUBTXT,a1
|
||
jrne tdz70
|
||
move *a0(OZPOS),a1
|
||
cmp a2,a1
|
||
jrne tdz70
|
||
move *a0,a3,L ;Get * next
|
||
calla DELOBJ
|
||
move a3,a0
|
||
jruc tdz80
|
||
tdz70 move *a0,a0,L
|
||
tdz80 jrnz tdz40 ;Continue?
|
||
rets
|
||
|
||
|
||
********************************
|
||
* Delete text in a Y range
|
||
* Trashes A0-A3,A14
|
||
|
||
SUBRP text_delyrng ;A0=Lower Y, A1=Upper Y
|
||
|
||
move @WORLDTLY+16,a2
|
||
add a2,a1 ;A1=World adjusted upper Y
|
||
add a0,a2 ;A2=^ lower Y
|
||
|
||
move @OBJLST,a0,L
|
||
tdy40 move *a0(OID),a3
|
||
cmpi CLSNEUT|TYPTEXT|SUBTXT,a3
|
||
jrne tdy70
|
||
move *a0(OYPOS),a3
|
||
cmp a2,a3
|
||
jrlt tdy70
|
||
cmp a1,a3
|
||
jrgt tdy70
|
||
move *a0,a3,L ;Get * next
|
||
calla DELOBJ
|
||
move a3,a0
|
||
jruc tdy80
|
||
tdy70 move *a0,a0,L
|
||
tdy80 jrnz tdy40 ;Continue?
|
||
rets
|
||
|
||
|
||
********************************
|
||
* Print text in rackup window (Process)
|
||
|
||
SUBR prt_inrackwin ;A8=*Text, A9=#Loops
|
||
|
||
move a9,*a13(PDATA)
|
||
SLEEPK 30
|
||
movk 1,a10 ;Y:X spacing
|
||
movi RD7FONT,a11 ;font table
|
||
|
||
pirw10 SLEEPK 10
|
||
movi -210,a0
|
||
move a0,@LOWZ
|
||
movi [187,198],a9 ;Y:X
|
||
movi >2525,a6
|
||
clr a0
|
||
PUSH a8
|
||
JSRP STRCNRMO
|
||
PULL a8
|
||
SLEEPK 10
|
||
movi 20000-210,a0
|
||
callr text_delz
|
||
move *a13(PDATA),a0
|
||
subk 1,a0
|
||
move a0,*a13(PDATA)
|
||
jrgt pirw10
|
||
DIE
|
||
|
||
********************************
|
||
* Convert scores to binary
|
||
|
||
SUBRP scores_bcdbin
|
||
|
||
move @P1DATA+PSCORE,a0,L
|
||
calla BCDBIN
|
||
move a0,@P1DATA+PSCORE,L
|
||
move a0,@score1old,L
|
||
move @P2DATA+PSCORE,a0,L
|
||
calla BCDBIN
|
||
move a0,@P2DATA+PSCORE,L
|
||
move a0,@score2old,L
|
||
rets
|
||
|
||
********************************
|
||
* Convert scores to BCD
|
||
|
||
SUBRP scores_binbcd
|
||
|
||
move @P1DATA+PSCORE,a0,L
|
||
calla BINBCD
|
||
move a0,@P1DATA+PSCORE,L
|
||
move @P2DATA+PSCORE,a0,L
|
||
calla BINBCD
|
||
move a0,@P2DATA+PSCORE,L
|
||
rets
|
||
|
||
|
||
********************************
|
||
* Print players score (Process)
|
||
|
||
LONGPD scorecopy1 ,0 ;Last P1 score
|
||
LONGPD scorecopy2 ,2 ;^ P2
|
||
|
||
SUBRP score_prt
|
||
|
||
clr a0
|
||
move a0,@scoredie
|
||
subk 1,a0
|
||
move a0,*a13(scorecopy1),L ;-1
|
||
move a0,*a13(scorecopy2),L
|
||
|
||
scp20 move @PSTATUS,a8
|
||
|
||
btst 0,a8
|
||
jrz scp50
|
||
move *a13(scorecopy1),a0,L
|
||
move @P1DATA+PSCORE,a1,L
|
||
cmp a0,a1
|
||
jreq scp50
|
||
move a1,*a13(scorecopy1),L
|
||
movi 305,a0
|
||
callr text_delz
|
||
movi 305-20000,a0
|
||
move a0,@LOWZ
|
||
movi score1_st,a0
|
||
calla prt0_xy ;P1
|
||
|
||
scp50 SLEEPK 3
|
||
btst 1,a8
|
||
jrz scp80
|
||
move *a13(scorecopy2),a0,L
|
||
move @P2DATA+PSCORE,a1,L
|
||
cmp a0,a1
|
||
jreq scp80
|
||
move a1,*a13(scorecopy2),L
|
||
movi 306,a0
|
||
callr text_delz
|
||
movi 306-20000,a0
|
||
move a0,@LOWZ
|
||
movi score2_st,a0
|
||
calla prt0_xy ;P2
|
||
|
||
scp80 SLEEPK 3
|
||
move @scoredie,a0
|
||
jrle scp20
|
||
DIE
|
||
|
||
score1_st
|
||
XYNUM PRTDEC+PRTL+PRTF15,85,16,32,P1DATA+PSCORE
|
||
.word -1
|
||
score2_st
|
||
XYNUM PRTDEC+PRTL+PRTF15,315,16,33,P2DATA+PSCORE
|
||
.word -1
|
||
|
||
|
||
********************************
|
||
* Print players bonus score (Process)
|
||
|
||
SUBRP scorebonus_prt
|
||
|
||
movi -1,a0
|
||
move a0,*a13(scorecopy1),L
|
||
move a0,*a13(scorecopy2),L
|
||
|
||
movk [0,1],a10 ;Spacing
|
||
movi RD7FONT,a11
|
||
|
||
scbp20 move @PSTATUS,a2
|
||
btst 0,a2
|
||
jrz scbp50
|
||
move @P1DATA+PSCORE,a8,L ;>Calc bonus score
|
||
move *a13(scorecopy1),a0,L
|
||
cmp a0,a8
|
||
jreq scbp50
|
||
move a8,*a13(scorecopy1),L
|
||
movi 300,a0
|
||
callr text_delz
|
||
move @score1old,a0,L
|
||
movi 300-20000,a1
|
||
movi >2020,a6
|
||
movi [35,85],a9 ;Scrn y/x
|
||
callr scoreb_prt2
|
||
|
||
scbp50 SLEEPK 3
|
||
move @PSTATUS,a2
|
||
btst 1,a2
|
||
jrz scbp80
|
||
move @P2DATA+PSCORE,a8,L ;>Calc bonus score
|
||
move *a13(scorecopy2),a0,L
|
||
cmp a0,a8
|
||
jreq scbp80
|
||
move a8,*a13(scorecopy2),L
|
||
movi 301,a0
|
||
callr text_delz
|
||
move @score2old,a0,L
|
||
movi 301-20000,a1
|
||
movi >2121,a6
|
||
movi [35,315],a9 ;Scrn y/x
|
||
callr scoreb_prt2
|
||
|
||
scbp80 SLEEPK 3
|
||
move @scoredie,a0
|
||
jrle scbp20
|
||
DIE
|
||
|
||
|
||
scoreb_prt2
|
||
move a1,@LOWZ
|
||
sub a0,a8
|
||
calla HEXTOASC
|
||
clr a0 ;No sleep
|
||
JSRP STRCNRMO ;Print
|
||
rets
|
||
|
||
|
||
********************************
|
||
* Variable sleep (call it)
|
||
|
||
SUBR sleep_var ;A0=Sleep time
|
||
|
||
PUSHP a8,a9
|
||
PULL a8
|
||
move a0,a9
|
||
sv20 SLEEPK 1
|
||
move @SWITCH+16,a1 ;Chk for impatience
|
||
not a1
|
||
andi >24,a1
|
||
jrnz sv50
|
||
dsj a9,sv20
|
||
sv50 move a8,a0
|
||
PULLP a8,a9
|
||
jump a0
|
||
|
||
|
||
|
||
|
||
|
||
********************************
|
||
|
||
|
||
NOTINUSE
|
||
|
||
|
||
********************************
|
||
* Give collection bonus
|
||
|
||
|
||
.bss bonuscnt ,32 ;P1/P2 item cnt (word*2)
|
||
|
||
SUBRP bonus_main
|
||
|
||
; movk 3,a0
|
||
; move a0,@PSTATUS ;DEBUG
|
||
;
|
||
; movi 200,a0 ;>DEBUG
|
||
; calla RNDRNG0
|
||
; move a0,@P1DATA+TFLAGS
|
||
; movi 200,a0
|
||
; calla RNDRNG0
|
||
; move a0,@P2DATA+TFLAGS
|
||
;
|
||
; movi 200,a0
|
||
; calla RNDRNG0
|
||
; move a0,@P1DATA+CASHCNT
|
||
; movi 200,a0
|
||
; calla RNDRNG0
|
||
; move a0,@P2DATA+CASHCNT
|
||
;
|
||
; movi 200,a0
|
||
; calla RNDRNG0
|
||
; move a0,@P1DATA+THSTGS
|
||
; movi 200,a0
|
||
; calla RNDRNG0
|
||
; move a0,@P2DATA+THSTGS
|
||
|
||
movi collectb_s,a8
|
||
movi 100,a9
|
||
CREATE0 prt_inrackwin
|
||
move a0,-*a12,L
|
||
|
||
movi -1,a0
|
||
move a0,@bonusstat
|
||
|
||
movi bonus_st,a0
|
||
calla prt0_xy
|
||
|
||
move @PSTATUS,a6
|
||
cmpi 3,a6
|
||
jreq bm15 ;Two plyrs?
|
||
|
||
movi 115,a1
|
||
btst 0,a6
|
||
jrz bm10 ;P1 off?
|
||
movi 285,a1
|
||
bm10 movi joinin_st,a0
|
||
calla prt_xy
|
||
|
||
bm15 btst 0,a6
|
||
jrz bm20
|
||
movi bonusp1_as,a8
|
||
CREATE ANIMPID,anim_script ;P1
|
||
|
||
bm20 btst 1,a6
|
||
jrz bm40
|
||
movi bonusp2_as,a8
|
||
CREATE ANIMPID2,anim_script ;P2
|
||
bm40
|
||
movi bonus1p1_st,a0
|
||
movi bonus1p2_st,a1
|
||
movi 210,a2
|
||
movi [70,116],a9 ;YX
|
||
movi 60,a10
|
||
movi TFLAGS,a11
|
||
JSRP bonus_cntup ;Flags
|
||
|
||
clr a0
|
||
move a0,@bonusstat
|
||
|
||
movi bonus2p1_st,a0
|
||
movi bonus2p2_st,a1
|
||
movi 211,a2
|
||
movi [108,116],a9 ;YX
|
||
movi 40,a10
|
||
movi CASHCNT,a11
|
||
JSRP bonus_cntup ;Crystals
|
||
|
||
movk 1,a0
|
||
move a0,@bonusstat
|
||
|
||
movi bonus3p1_st,a0
|
||
movi bonus3p2_st,a1
|
||
movi 212,a2
|
||
movi [146,116],a9 ;YX
|
||
movi 100,a10
|
||
movi THSTGS,a11
|
||
JSRP bonus_cntup ;Hostages
|
||
|
||
movi 60*2,a0 ;4
|
||
callr sleep_var
|
||
|
||
move *a12+,a0,L
|
||
clr a1
|
||
move a1,*a0(PDATA) ;Stop window text
|
||
|
||
movk 2,a0
|
||
move a0,@bonusstat
|
||
movi 55,a0
|
||
movi 200,a1
|
||
callr text_delyrng
|
||
SLEEPK 30
|
||
|
||
RETP
|
||
|
||
collectb_s
|
||
.byte "COLLECTION BONUS",0
|
||
.even
|
||
joinin_st
|
||
XYTXT PRTF15,0,104,3,"HELP!"
|
||
XYTXT PRTF15,0,86,3,"JOIN IN!"
|
||
; XYTXT PRTF15,0,86,3,"JOIN IN"
|
||
; XYTXT PRTF15,0,104,3,"SCUM!"
|
||
.word -1
|
||
|
||
|
||
|
||
SUBRP bonus_cntup ;A0=*P1_st, A1=*P2_st, A2=Z
|
||
;A9=Base YX, A10=Pts each, A11=Plyr data offset
|
||
move @PSTATUS,a3
|
||
subk 3,a3
|
||
jrnz bcu10
|
||
sll 1,a10 ;*2 pts for two players
|
||
|
||
bcu10 PUSH a2
|
||
callr printifp_xy
|
||
|
||
movi bonuscnt,a8
|
||
CREATE0 bonus_prtitem ;Display
|
||
move a0,-*a12,L
|
||
PULL a2
|
||
move a2,*a0(bonusz)
|
||
|
||
clr a0
|
||
move a0,*a8,L ;Cnt=0
|
||
|
||
movi racksup,a0
|
||
calla snd_play1
|
||
|
||
bcu20 move @SWITCH+16,a1 ;Chk for impatience
|
||
not a1
|
||
andi >24,a1
|
||
jrnz bcu25
|
||
SLEEPK 1
|
||
|
||
bcu25 move @PSTATUS,a2
|
||
clr a3
|
||
|
||
btst 0,a2
|
||
jrz bcu30
|
||
move *a8,a0
|
||
movi P1DATA,a1
|
||
add a11,a1
|
||
move *a1,a1
|
||
cmp a1,a0
|
||
jrge bcu30 ;Count maxed?
|
||
addk 1,a0
|
||
move a0,*a8
|
||
movk 1,a3
|
||
move @P1DATA+PSCORE,a0,L
|
||
add a10,a0
|
||
move a0,@P1DATA+PSCORE,L
|
||
|
||
bcu30 btst 1,a2
|
||
jrz bcu60
|
||
move *a8(16),a0
|
||
movi P2DATA,a1
|
||
add a11,a1
|
||
move *a1,a1
|
||
cmp a1,a0
|
||
jrge bcu60 ;Count maxed?
|
||
addk 1,a0
|
||
move a0,*a8(16)
|
||
movk 1,a3
|
||
move @P2DATA+PSCORE,a0,L
|
||
add a10,a0
|
||
move a0,@P2DATA+PSCORE,L
|
||
|
||
bcu60 move a3,a3
|
||
jrnz bcu20 ;More to do?
|
||
|
||
movi rackoff,a0 ;End
|
||
calla snd_play1
|
||
SLEEPK 5
|
||
|
||
move *a8+,a1 ;P1
|
||
move *a8,a2 ;P2
|
||
move @WORLDTLX+16,a10
|
||
cmp a2,a1
|
||
jrhi bcu200 ;P1 won?
|
||
jrlo bcu180 ;P2 won?
|
||
move @P1DATA+PSCORE,a0,L ;Tie!
|
||
move @P2DATA+PSCORE,a1,L
|
||
cmp a1,a0
|
||
jrhs bcu200 ;P1 won?
|
||
bcu180 addi 190,a10 ;Min X of tiles
|
||
bcu200 movi 190,a11 ;X range of tiles
|
||
movk 3,a8
|
||
bcu220 movi DMACNZ+M_NOCOLL,a3
|
||
callr bonus_flashblk
|
||
SLEEPK 2
|
||
movi DMAWNZ+M_NOCOLL,a3
|
||
callr bonus_flashblk
|
||
SLEEPK 8
|
||
dsj a8,bcu220
|
||
|
||
move *a12+,a0,L
|
||
calla KILL
|
||
movi 60*1,a0
|
||
callr sleep_var
|
||
|
||
RETP
|
||
|
||
|
||
********************************
|
||
* Print bonus item count & score (Process)
|
||
|
||
WORDPD bonusz ,0 ;ZPOS for text, set by creator
|
||
|
||
|
||
SUBRP bonus_prtitem ;A8=*P1/2 item cnt, A9=Y:X, A10=Pts each
|
||
|
||
movi RD7FONT,a11
|
||
|
||
bpilp move *a13(bonusz),a0
|
||
callr text_delz
|
||
|
||
move @PSTATUS,a2
|
||
move a10,a4 ;A4=Pts
|
||
movk [0,1],a10 ;Spacing
|
||
|
||
btst 0,a2
|
||
jrz bpi50
|
||
|
||
PUSH a8,a9
|
||
move *a8,a8 ;Get P1 cnt
|
||
move a8,a3
|
||
movi >2525,a6
|
||
callr strcnrmo_nosleep ;Print cnt
|
||
callr strcnrmo_nosleep2 ;Print score
|
||
PULL a8,a9
|
||
|
||
bpi50 btst 1,a2
|
||
jrz bpi80
|
||
|
||
PUSH a8,a9
|
||
addi 160,a9 ;+X
|
||
move *a8(16),a8 ;Get P2 cnt
|
||
move a8,a3
|
||
movi >2525,a6
|
||
callr strcnrmo_nosleep ;Print cnt
|
||
callr strcnrmo_nosleep2 ;Print score
|
||
PULL a8,a9
|
||
|
||
bpi80 move a4,a10
|
||
SLEEPK 2
|
||
jruc bpilp
|
||
|
||
|
||
SUBRP strcnrmo_nosleep2
|
||
mpyu a4,a3
|
||
move a3,a8
|
||
addi 45,a9 ;+X
|
||
|
||
SUBRP strcnrmo_nosleep
|
||
|
||
PUSH a9
|
||
calla HEXTOASC
|
||
move *a13(bonusz),a0
|
||
subi 20000,a0
|
||
move a0,@LOWZ
|
||
clr a0 ;No sleep
|
||
JSRP STRCNRMO
|
||
PULL a9
|
||
rets
|
||
|
||
|
||
bonusp2_as ;Scripts
|
||
ASBXY 160,0
|
||
bonusp1_as
|
||
ASADDW 1,animscnt
|
||
ASNEW bonusflag_t
|
||
ASFRA flag_l,>20,100
|
||
|
||
bas10 ASSLP 2
|
||
ASJMPEQ -1,bonusstat,bas10
|
||
|
||
ASNEW bonusgem_t
|
||
ASFRA gems_l,>21,100
|
||
|
||
bas20 ASSLP 2
|
||
ASJMPEQ 0,bonusstat,bas20
|
||
|
||
ASNEW bonushstg_t
|
||
|
||
bas30 ASSLP 2
|
||
ASJMPEQ 1,bonusstat,bas30
|
||
|
||
ASKIL 0,>ff
|
||
ASDELM 0,>ff
|
||
|
||
ASADDW -1,animscnt
|
||
ASEND
|
||
|
||
bonus_st
|
||
XYOBJ PRTOBJ,200,16,500,TSCORE
|
||
.word -1
|
||
|
||
bonus1p1_st
|
||
XYTXT 0,116,70,35,"X ="
|
||
.word -1
|
||
bonus1p2_st
|
||
XYTXT 0,276,70,35,"X ="
|
||
.word -1
|
||
|
||
bonus2p1_st
|
||
XYTXT 0,116,108,35,"X ="
|
||
.word -1
|
||
bonus2p2_st
|
||
XYTXT 0,276,108,35,"X ="
|
||
.word -1
|
||
|
||
bonus3p1_st
|
||
XYTXT 0,116,146,35,"X ="
|
||
.word -1
|
||
bonus3p2_st
|
||
XYTXT 0,276,146,35,"X ="
|
||
.word -1
|
||
|
||
bonusflag_t
|
||
ASITEMN 50,55,FLG1,220,DMAWNZ,>20
|
||
.word -1000
|
||
bonusgem_t
|
||
ASITEMN 50,90,GEMS1,220,DMAWNZ,>21
|
||
.word -1000
|
||
bonushstg_t
|
||
ASITEMN 50,130,HSTGHD,220,DMAWNZ,>21
|
||
.word -1000
|
||
|
||
|
||
flag_l LW FLG1,5
|
||
LW FLG2,5
|
||
LW FLG3,5
|
||
LW FLG4,5
|
||
LWL0 FLG5,5
|
||
|
||
gems_l LW GEMS1,4
|
||
LW GEMS2,4
|
||
LW GEMS3,4
|
||
LW GEMS4,4
|
||
LW GEMS3,4
|
||
LW GEMS2,4
|
||
LWL0 GEMS1,4
|
||
|
||
|
||
SUBRP bonus_flashblk ;A3=OFLAGS, A10=XMin, A11=XWidth
|
||
|
||
rets
|
||
|
||
move @OBJLST,a1,L
|
||
bfb20 move *a1(OZPOS),a0
|
||
subi 200,a0
|
||
subk 1,a0
|
||
jrhi bfb30 ;Not 200-201?
|
||
move *a1(OXPOS),a0
|
||
sub a10,a0
|
||
cmp a11,a0
|
||
jrhi bfb30
|
||
move a3,*a1(OCTRL) ;FIX
|
||
movi >909,a0
|
||
move a0,*a1(OCONST)
|
||
bfb30 move *a1,a1,L
|
||
jrnz bfb20
|
||
rets
|
||
|
||
|
||
********************************
|
||
* Show player stats and give bonuses
|
||
|
||
SUBRP player_showstats
|
||
|
||
movi gamestat_s,a8
|
||
movi 100,a9
|
||
CREATE0 prt_inrackwin
|
||
move a0,-*a12,L
|
||
|
||
clr a7 ;A7=Bonus pts Y:X offset
|
||
|
||
move @PSTATUS,a0
|
||
subk 3,a0
|
||
jrne pst20
|
||
movi statsbo_st,a0
|
||
calla prt0_xy
|
||
|
||
pst20 movi statssnd_t,a8
|
||
movi stats_st,a9
|
||
movi statsp1_st,a10
|
||
movi statsp2_st,a11
|
||
|
||
pst50 move *a8+,a0,L
|
||
calla snd_play1
|
||
move @PSTATUS,a6
|
||
move a9,a0
|
||
calla prt0_xy
|
||
move a0,a9
|
||
btst 0,a6 ;P1
|
||
jrz pst300
|
||
move a10,a0
|
||
calla prt0_xy
|
||
move a0,a10
|
||
pst300 btst 1,a6 ;P2
|
||
jrz pst310
|
||
|
||
movi -400,a0 ;So general is above number
|
||
move a0,@LOWZ
|
||
|
||
move a11,a0
|
||
calla prt0_xy
|
||
move a0,a11
|
||
|
||
pst310 cmpi 3,a6
|
||
jrne pst400 ;Not 2 plyrs?
|
||
move *a10(-32),a2,L
|
||
move *a11(-32),a3,L
|
||
cmpi P1DATA+TMINEDTH,a2
|
||
jrne pst330 ;Normal compare?
|
||
SWAP a2,a3
|
||
pst330 move *a2,a2
|
||
move *a3,a3
|
||
movi P1DATA+PSCORE,a4
|
||
; movi rackp1p,a0
|
||
clr a1
|
||
cmp a3,a2
|
||
jrz pst380 ;Same stats?
|
||
jrhi pst350 ;P1 higher?
|
||
movi P2DATA+PSCORE,a4
|
||
; movi rackp2p,a0
|
||
addi 300,a7 ;P2 offset
|
||
pst350 move *a4,a2,L ;Give points
|
||
addi 1000,a2
|
||
move a2,*a4,L
|
||
; calla snd_play1
|
||
movi statspts_st,a0
|
||
move a7,a1
|
||
calla prt_xy
|
||
pst380 srl 16,a7 ;X=0
|
||
addk 10,a7 ;Y=Y+10
|
||
sll 16,a7
|
||
|
||
pst400 move a7,-*a12,L
|
||
SLEEPK 4
|
||
movk 9,a0
|
||
callr sleep_var
|
||
move *a12+,a7,L
|
||
move *a9,a0
|
||
addk 1,a0
|
||
jrnz pst50 ;End?
|
||
|
||
movi 60*6,a0
|
||
callr sleep_var
|
||
|
||
move *a12+,a0,L
|
||
clr a1
|
||
move a1,*a0(PDATA) ;Stop window text
|
||
|
||
RETP
|
||
|
||
|
||
gamestat_s
|
||
.byte "GAME STATISTICS",0
|
||
.even
|
||
statssnd_t
|
||
.long stats1,stats2,stats3,stats4,stats5,stats6,stats7,stats8
|
||
.long stats9,stats10,stats11,stats12
|
||
|
||
SY .equ 55
|
||
|
||
statsbo_st
|
||
XYOBJ PRTOBJ,50,45,280,BWORD
|
||
XYOBJ PRTOBJ,350,45,280,BWORD
|
||
.word -1
|
||
statspts_st
|
||
XYOBJ PRTOBJ,50,SY,280,FIVE
|
||
.word -1
|
||
stats_st
|
||
XYTXT 0,200,SY,2,"SHOTS FIRED"
|
||
XYTXT PRTE,200,SY+10,3,"ENEMY HITS"
|
||
XYTXT PRTE,200,SY+20,4,"HIT PERCENTAGE"
|
||
; XYTXT PRTE,200,SY+30,5,"HITS PER MINUTE"
|
||
XYTXT PRTE,200,SY+30,5,"WEAPONS PICKED UP"
|
||
XYTXT PRTE,200,SY+40,6,"BOMBS USED"
|
||
XYTXT PRTE,200,SY+50,7,"MISSILE STRIKES"
|
||
XYTXT PRTE,200,SY+60,8,"BIG STUFF DESTROYED"
|
||
XYTXT PRTE,200,SY+70,9,"EXTRA MEN COLLECTED"
|
||
XYTXT PRTE,200,SY+80,10,"MINES STEPPED ON"
|
||
XYTXT PRTE,200,SY+90,11,"KEYS COLLECTED"
|
||
.word -1 ;End
|
||
|
||
statsp1_st
|
||
XYNUM PRTDEC,95,SY,2,P1DATA+TSHOTS
|
||
XYNUM PRTDEC+PRTE,95,SY+10,3,P1DATA+THITS
|
||
XYNUM PRTDEC+PRTE,95,SY+20,4,hitpercent1
|
||
; XYNUM PRTDEC+PRTE,95,SY+30,5,hitsmin1
|
||
XYNUM PRTDEC+PRTE,95,SY+30,5,P1DATA+TWPNS
|
||
XYNUM PRTDEC+PRTE,95,SY+40,6,P1DATA+BMBSUSED
|
||
XYNUM PRTDEC+PRTE,95,SY+50,7,P1DATA+TMISLS
|
||
XYNUM PRTDEC+PRTE,95,SY+60,8,P1DATA+TBIGSTF
|
||
XYNUM PRTDEC+PRTE,95,SY+70,9,P1DATA+TEARNED
|
||
XYNUM PRTDEC+PRTE,95,SY+80,10,P1DATA+TMINEDTH
|
||
XYNUM PRTDEC+PRTE,95,SY+90,11,P1DATA+TKEYS
|
||
.word -1
|
||
|
||
statsp2_st
|
||
XYNUM PRTDEC,305,SY,2,P2DATA+TSHOTS
|
||
XYNUM PRTDEC+PRTE,305,SY+10,3,P2DATA+THITS
|
||
XYNUM PRTDEC+PRTE,305,SY+20,4,hitpercent2
|
||
; XYNUM PRTDEC+PRTE,305,SY+30,5,hitsmin2
|
||
XYNUM PRTDEC+PRTE,305,SY+30,5,P2DATA+TWPNS
|
||
XYNUM PRTDEC+PRTE,305,SY+40,6,P2DATA+BMBSUSED
|
||
XYNUM PRTDEC+PRTE,305,SY+50,7,P2DATA+TMISLS
|
||
XYNUM PRTDEC+PRTE,305,SY+60,8,P2DATA+TBIGSTF
|
||
XYNUM PRTDEC+PRTE,305,SY+70,9,P2DATA+TEARNED
|
||
XYNUM PRTDEC+PRTE,305,SY+80,10,P2DATA+TMINEDTH
|
||
XYNUM PRTDEC+PRTE,305,SY+90,11,P2DATA+TKEYS
|
||
.word -1
|
||
|
||
|
||
********************************
|
||
* Player bonus winner animations
|
||
|
||
|
||
SUBRP player_bonuswin
|
||
|
||
movi plbwp1o_as,a8 ;P1 only initial script
|
||
clr a9 ;A9=Winner message #
|
||
move @PSTATUS,a0
|
||
btst 1,a0
|
||
jrz pbw90
|
||
|
||
movi plbwp2o_as,a8 ;P2 only initial script
|
||
movk 1,a9
|
||
btst 0,a0
|
||
jrz pbw90
|
||
|
||
movi plbwp1w_as,a8 ;P1 win initial script
|
||
movk 2,a9
|
||
|
||
move @P1DATA+PSCORE,a0,L
|
||
move @P2DATA+PSCORE,a1,L
|
||
cmp a1,a0 ;P1 score > P2 score?
|
||
jrhi pbw90
|
||
jrlo pbw80 ;P1sc < P2sc
|
||
move @score1old,a3,L
|
||
move @score2old,a4,L
|
||
cmp a4,a3 ;Score same!
|
||
jrlo pbw90 ;P1 old < P2 old?
|
||
|
||
pbw80 movi plbwp2w_as,a8 ;P2 win initial script
|
||
movk 3,a9
|
||
|
||
pbw90 CREATE ANIMPID,prt_winnertxt
|
||
CREATE ANIMPID,anim_script
|
||
|
||
movi 1*32*32+15*32+27,a0 ;Bkgnd color
|
||
move a0,@IRQSKYE
|
||
|
||
move @OBJLST,a1,L ;>Tiles fly away
|
||
pbw200 move *a1(OZPOS),a0
|
||
subi 200,a0
|
||
subk 1,a0
|
||
jrhi pbw230
|
||
movk 8,a2 ;Vel
|
||
btst 0,a0
|
||
jrnz pbw220
|
||
neg a2 ;-Vel
|
||
pbw220 move a2,*a1(OYVEL+16)
|
||
|
||
pbw230 move *a1,a1,L
|
||
jrnz pbw200
|
||
|
||
SLEEP 60
|
||
|
||
move @OBJLST,a0,L ;>Delete tiles
|
||
pbw300 move *a0(OZPOS),a2
|
||
subi 200,a2
|
||
subk 1,a2
|
||
jrhi pbw330
|
||
move *a0,a2,L ;Get * to next obj
|
||
calla DELOBJ ;Kill
|
||
move a2,a0
|
||
jruc pbw340
|
||
pbw330 move *a0,a0,L
|
||
pbw340 jrnz pbw300
|
||
|
||
movi 200,a0
|
||
callr sleep_var
|
||
|
||
; movi plbwpal_t,a0 ;*Palette list
|
||
; movk 5,a1
|
||
; movi >40,a2
|
||
; move a2,@palfmin
|
||
; calla FADEOUT2
|
||
;
|
||
; SLEEPK 30
|
||
|
||
RETP
|
||
|
||
|
||
********************************
|
||
* A9=Message # 0-3 (Process)
|
||
* 0=PLYR 1 ONLY
|
||
* 1=PLYR 2 ONLY
|
||
* 2=PLYR 1 WINS OVER PLYR 2
|
||
* 3=PLYR 2 WINS OVER PLYR 1
|
||
|
||
SUBRP prt_winnertxt
|
||
|
||
sll 5,a9
|
||
addi winmsgs,a9
|
||
move *a9,a8,L ;*Message
|
||
movi 34,a9
|
||
jruc prt_inrackwin
|
||
|
||
winmsgs .long win0_s,win1_s,win2_s,win3_s
|
||
|
||
;COME UP WITH MORE CLEVER TEXT HERE!
|
||
win0_s .byte "PLAYER ONE IS GREAT!",0
|
||
win1_s .byte "PLAYER TWO IS GREAT!",0
|
||
win2_s .byte "PLAYER ONE KICKED BUTT!",0
|
||
win3_s .byte "PLAYER TWO KICKED BUTT!",0
|
||
.even
|
||
|
||
|
||
;plbwpal_t
|
||
; .long 0,BIGPL1,GUNSP1,CLDS9,DESRTPL,BIGPL2,GUNSP2,0
|
||
|
||
|
||
plbwp1o_as
|
||
ASNEW plyr1wnew_t
|
||
ASXY >40,>1f,70,0
|
||
ASJMP plbw_as
|
||
|
||
plbwp2o_as
|
||
ASNEW plyr2wnew_t
|
||
ASXY >40,>1f,-50,0
|
||
ASSVL BIGPL2
|
||
ASPAL >41
|
||
ASPAL >54
|
||
ASPAL >55
|
||
ASSVL GUNSP2
|
||
ASPAL >42
|
||
ASPAL >48
|
||
ASJMP plbw_as
|
||
|
||
plbwp1w_as
|
||
ASNEW plyr1wnew_t
|
||
ASNEW plyr2lnew_t
|
||
ASSVL BIGPL2
|
||
ASPAL >81
|
||
ASSVL GUNSP2
|
||
ASPAL >82
|
||
ASPAL >88
|
||
ASRUN plbw2txt_as
|
||
ASJMP plbw_as
|
||
|
||
plbwp2w_as
|
||
ASNEW plyr1lnew_t
|
||
ASNEW plyr2wnew_t
|
||
ASSVL BIGPL2
|
||
ASPAL >41
|
||
ASPAL >54
|
||
ASPAL >55
|
||
ASSVL GUNSP2
|
||
ASPAL >42
|
||
ASPAL >48
|
||
ASRUN plbw1txt_as
|
||
|
||
plbw_as
|
||
ASADDW 1,animscnt
|
||
ASNEW plyrbgnew_t
|
||
ASFRA ribbonb_l,>48,-1
|
||
ASFRA ribbonl_l,>88,-1
|
||
|
||
ASRUN pbwcloud1_as
|
||
ASRUN pbwcloud2_as
|
||
ASRUN pbwcloud3_as
|
||
ASRUN pbwsnd_as
|
||
ASSLP 90
|
||
ASFRA plhdcc_l,>4c,1
|
||
ASFRA plhdmm_l,>4d,1
|
||
ASLAB 5
|
||
ASXY 0,>ff,0,1 ;Pan up
|
||
ASDSJS1
|
||
ASLAB 20
|
||
ASXY 0,>ff,0,2
|
||
ASDSJS1
|
||
ASLAB 5
|
||
ASXY 0,>ff,0,1
|
||
ASDSJS1
|
||
|
||
ASANI LBOW2,>54
|
||
ASANI WRISTBND2,>50
|
||
ASANI HAND2,>55
|
||
ASANI GUN2,>51
|
||
ASXY >44,1,-1000,0 ;Put middle strap on screen
|
||
ASSLP 4
|
||
ASANI LBOW1,>54
|
||
ASANI WRISTBND1,>50
|
||
ASANI HAND1,>55
|
||
ASANI GUN1,>51
|
||
ASXY >44,1,-1000,0 ;Straps off screen
|
||
|
||
ASLAB 40
|
||
ASSND rackgun
|
||
ASLAB 2
|
||
ASXY >50,>7,0,1 ;Shake gun
|
||
ASXY >56,0,-1000,0 ;Show flame
|
||
ASDSJS1
|
||
ASLAB 2
|
||
ASXY >50,>7,0,-1
|
||
ASXY >56,0,1000,0 ;Hide flame
|
||
ASDSJS1
|
||
ASDSJ
|
||
|
||
ASSLP 30
|
||
ASLAB 5
|
||
ASXY 0,>ff,0,-1 ;Pan down
|
||
ASDSJS1
|
||
ASLAB 20
|
||
ASXY 0,>ff,0,-2
|
||
ASDSJS1
|
||
ASLAB 5
|
||
ASXY 0,>ff,0,-1
|
||
ASDSJS1
|
||
|
||
ASSLP 20
|
||
ASANI LBOW2,>54
|
||
ASANI WRISTBND2,>50
|
||
ASANI HAND2,>55
|
||
ASANI GUN2,>51
|
||
ASXY >44,1,1000,0 ;Middle strap on screen
|
||
ASSLP 4
|
||
ASANI LBOW3,>54
|
||
ASANI WRISTBND3,>50
|
||
ASANI HAND3,>55
|
||
ASANI GUN3,>51
|
||
ASXY >44,1,1000,0 ;1st strap on screen
|
||
ASADDW -1,animscnt
|
||
ASEND
|
||
|
||
|
||
pbwcloud1_as
|
||
ASLAB 4
|
||
ASLAB 188
|
||
ASXY >10,0,1,0
|
||
ASSLP 4
|
||
ASDSJ
|
||
ASXY >10,0,-188,0
|
||
ASDSJ
|
||
ASEND
|
||
pbwcloud2_as
|
||
ASLAB 4
|
||
ASLAB 188
|
||
ASXY >11,0,1,0
|
||
ASSLP 5
|
||
ASDSJ
|
||
ASXY >11,0,-188,0
|
||
ASDSJ
|
||
ASEND
|
||
pbwcloud3_as
|
||
ASLAB 4
|
||
ASLAB 188
|
||
ASXY >12,0,1,0
|
||
ASSLP 6
|
||
ASDSJ
|
||
ASXY >12,0,-188,0
|
||
ASDSJ
|
||
ASEND
|
||
|
||
|
||
pbwsnd_as ;Sounds
|
||
ASSLP 130
|
||
ASSND shout
|
||
ASSLP 170
|
||
ASSND gigle1
|
||
ASEND
|
||
|
||
|
||
CLY .equ 142
|
||
|
||
plyrbgnew_t ;X,Y,img name,Z,flags,oid
|
||
|
||
ASITEMN 12,-40,CLOUD,25,DMAWNZ+M_FLIPH,>10
|
||
ASITEMN 200,-40,CLOUD,25,DMAWNZ+M_FLIPH,>10
|
||
ASITEMN 388,-40,CLOUD,25,DMAWNZ+M_FLIPH,>10
|
||
ASITEMN 12,-10,CLOUD,24,DMAWNZ+M_FLIPH,>11
|
||
ASITEMN 200,-10,CLOUD,24,DMAWNZ+M_FLIPH,>11
|
||
ASITEMN 388,-10,CLOUD,24,DMAWNZ+M_FLIPH,>11
|
||
ASITEMN -178,20,CLOUD,23,DMAWNZ,>12
|
||
ASITEMN 10,20,CLOUD,23,DMAWNZ,>12
|
||
ASITEMN 198,20,CLOUD,23,DMAWNZ,>12
|
||
ASITEMN 10,CLY,CLIFF3A,30,DMAWNZ,8
|
||
ASITEMN 128,CLY,CLIFF3A,30,DMAWNZ+M_FLIPH,8
|
||
ASITEMN 129,CLY+6,CLIFF2A,30,DMAWNZ,8
|
||
ASITEMN 186,CLY-1,CLIFF3A,30,DMAWNZ,8
|
||
ASITEMN 304,CLY-1,CLIFF3A,30,DMAWNZ+M_FLIPH,8
|
||
ASITEMN 355,CLY+7,CLIFF2A,30,DMAWNZ+M_FLIPH,8
|
||
ASITEMN 356,CLY+1,CLIFF3A,30,DMAWNZ,8
|
||
.word -1000
|
||
|
||
P1X .equ 120
|
||
P1Y .equ 23
|
||
P1LX .equ 70
|
||
P1LY .equ 30
|
||
P2X .equ 260
|
||
P2Y .equ 23
|
||
P2LX .equ 305
|
||
P2LY .equ 30
|
||
|
||
plyr1wnew_t
|
||
ASITEMN P1X,P1Y,CCHED1,51,DMAWNZ,>4c
|
||
ASITEMN P1X,P1Y,RIB1,45,DMAWNZ,>48
|
||
ASITEMN P1X,P1Y,BDBOD1,50,DMAWNZ,>40
|
||
ASITEMN P1X,P1Y,BDBOD2,50,DMAWNZ,>40
|
||
ASITEMN P1X,P1Y,RTARMBND,51,DMAWNZ,>40
|
||
ASITEMN P1X,P1Y,RTLBOW1,52,DMAWNZ,>40
|
||
ASITEMN P1X,P1Y,RTWRISTBND,53,DMAWNZ,>40
|
||
ASITEMN P1X,P1Y,RTHAND1,53,DMAWNZ,>40
|
||
ASITEMN P1X,P1Y,LFTARMBND,52,DMAWNZ,>40
|
||
ASITEMN P1X,P1Y,LBOW3,51,DMAWNZ,>54
|
||
ASITEMN P1X,P1Y,WRISTBND3,52,DMAWNZ,>50
|
||
ASITEMN P1X,P1Y,HAND3,54,DMAWNZ,>55
|
||
ASITEMN P1X,P1Y,GUN3,53,DMAWNZ,>51
|
||
ASITEMN P1X,P1Y,STRAP,51,DMAWNZ,>44
|
||
ASITEMN P1X+1000,P1Y,STRAPA,51,DMAWNZ,>45
|
||
ASITEMN P1X+1054,P1Y-33,T72BLAST1,55,DMAWNZ+M_FLIPV,>56
|
||
ASITEMN P1X+2054,P1Y-33,T72BLAST2,55,DMAWNZ+M_FLIPV,>56
|
||
.word -1000
|
||
|
||
plyr2wnew_t
|
||
ASITEMN P2X,P2Y,MMHED1,51,DMAWNZ+M_FLIPH,>4d
|
||
ASITEMN P2X,P2Y-5,RIB1,45,DMAWNZ,>48
|
||
ASITEMN P2X,P2Y,BDBOD1,50,DMAWNZ+M_FLIPH,>41
|
||
ASITEMN P2X,P2Y,BDBOD2,50,DMAWNZ+M_FLIPH,>42
|
||
ASITEMN P2X,P2Y,RTARMBND,51,DMAWNZ+M_FLIPH,>40
|
||
ASITEMN P2X,P2Y,RTLBOW1,52,DMAWNZ+M_FLIPH,>41
|
||
ASITEMN P2X,P2Y,RTWRISTBND,53,DMAWNZ+M_FLIPH,>40
|
||
ASITEMN P2X,P2Y,RTHAND1,53,DMAWNZ+M_FLIPH,>41
|
||
ASITEMN P2X,P2Y,LFTARMBND,52,DMAWNZ+M_FLIPH,>40
|
||
ASITEMN P2X,P2Y,LBOW3,51,DMAWNZ+M_FLIPH,>54
|
||
ASITEMN P2X,P2Y,WRISTBND3,52,DMAWNZ+M_FLIPH,>50
|
||
ASITEMN P2X,P2Y,HAND3,54,DMAWNZ+M_FLIPH,>55
|
||
ASITEMN P2X,P2Y,GUN3,53,DMAWNZ+M_FLIPH,>51
|
||
ASITEMN P2X,P2Y,STRAP,51,DMAWNZ+M_FLIPH,>44
|
||
ASITEMN P2X+1000,P2Y,STRAPA,51,DMAWNZ+M_FLIPH,>45
|
||
ASITEMN P2X+945,P2Y-33,T72BLAST1,55,DMAWNZ+M_FLIPV,>56
|
||
ASITEMN P2X+1945,P2Y-33,T72BLAST2,55,DMAWNZ+M_FLIPV,>56
|
||
.word -1000
|
||
|
||
plyr1lnew_t
|
||
ASITEMN P1LX,P1LY,SMHEAD1,40,DMAWNZ+M_FLIPH,>80
|
||
ASITEMN P1LX-10,P1LY,LILRIB1,35,DMAWNZ,>88
|
||
ASITEMN P1LX,P1LY,SMBOD1,40,DMAWNZ+M_FLIPH,>81
|
||
ASITEMN P1LX,P1LY,SMBOD2,40,DMAWNZ+M_FLIPH,>82
|
||
ASITEMN P1LX,P1LY,SMARMBND,41,DMAWNZ+M_FLIPH,>80
|
||
ASITEMN P1LX,P1LY,SMWRISTS,41,DMAWNZ+M_FLIPH,>80
|
||
.word -1000
|
||
|
||
plyr2lnew_t
|
||
ASITEMN P2LX,P2LY,SMHEAD2,40,DMAWNZ,>80
|
||
ASITEMN P2LX-1,P2LY-3,LILRIB1,35,DMAWNZ,>88
|
||
ASITEMN P2LX,P2LY,SMBOD1,40,DMAWNZ,>81
|
||
ASITEMN P2LX,P2LY,SMBOD2,40,DMAWNZ,>82
|
||
ASITEMN P2LX,P2LY,SMARMBND,41,DMAWNZ,>80
|
||
ASITEMN P2LX,P2LY,SMWRISTS,41,DMAWNZ,>80
|
||
.word -1000
|
||
|
||
|
||
ribbonb_l
|
||
LW RIB1,4
|
||
LW RIB2,4
|
||
LW RIB3,4
|
||
LW RIB4,4
|
||
LWL0 RIB5,4
|
||
|
||
ribbonl_l
|
||
LW LILRIB1,3
|
||
LW LILRIB2,4
|
||
LW LILRIB3,3
|
||
LW LILRIB4,4
|
||
LWL0 LILRIB5,4
|
||
|
||
plhdcc_l
|
||
LW CCHED1,30
|
||
LW CCHED2,8
|
||
LW CCHED3,8
|
||
LW CCHED4,60
|
||
LW CCHED3,5
|
||
LW CCHED2,5
|
||
LW CCHED1,70
|
||
LW CCHED5,5
|
||
LWL0 CCHED6,15
|
||
|
||
plhdmm_l
|
||
LW MMHED1,30
|
||
LW MMHED2,8
|
||
LW MMHED3,8
|
||
LW MMHED4,60
|
||
LW MMHED3,5
|
||
LW MMHED2,5
|
||
LW MMHED1,70
|
||
LW MMHED5,5
|
||
LWL0 MMHED6,15
|
||
|
||
plbw1txt_as
|
||
ASSLP 140
|
||
ASNEW plbw1balloon_t
|
||
ASTXTR plbw1ltxt_t
|
||
ASJMP plbw280
|
||
|
||
plbw2txt_as
|
||
ASSLP 140
|
||
ASNEW plbw2balloon_t
|
||
ASTXTR plbw2ltxt_t
|
||
plbw280 ASSLP 140
|
||
ASDEL 2
|
||
ASTXTK
|
||
ASEND
|
||
|
||
plbw1balloon_t
|
||
ASITEMN P1LX+0,P1LY+8-20,BLLN1,46,DMAWNZ,2
|
||
ASITEMN P1LX+20,P1LY+8-20,BLLN2,46,DMAWNZ,2
|
||
ASITEMN P1LX+40,P1LY+8-20,BLLN2,46,DMAWNZ,2
|
||
ASITEMN P1LX+80,P1LY+8-20,BLLN1,46,DMAWNZ+M_FLIPH,2
|
||
ASITEMN P1LX+40,P1LY+40-20,BOON2B,47,DMAWNZ+M_FLIPH,2
|
||
.word -1000
|
||
|
||
plbw2balloon_t
|
||
ASITEMN P2LX-80,P2LY+8-20,BLLN1,46,DMAWNZ,2
|
||
ASITEMN P2LX-60,P2LY+8-20,BLLN2,46,DMAWNZ,2
|
||
ASITEMN P2LX-40,P2LY+8-20,BLLN2,46,DMAWNZ,2
|
||
ASITEMN P2LX+0,P2LY+8-20,BLLN1,46,DMAWNZ+M_FLIPH,2
|
||
ASITEMN P2LX-40,P2LY+40-20,BOON2B,47,DMAWNZ,2
|
||
.word -1000
|
||
|
||
plbw1ltxt_t ;Lost
|
||
.word 10
|
||
.long plbw1l1_st,plbw1l2_st,plbw1l3_st,plbw1l4_st
|
||
.long plbw1l5_st,plbw1l6_st,plbw1l7_st
|
||
.long plbw1l8_st,plbw1l9_st,plbw1l10_st
|
||
plbw1l1_st
|
||
XYTXT PRTF8,P1LX+40,P1LY+12-20,2,"I SUCK AT"
|
||
XYTXT PRTF8,P1LX+40,P1LY+22-20,2,"THIS GAME"
|
||
.word -1
|
||
plbw1l2_st
|
||
XYTXT PRTF8,P1LX+40,P1LY+12-20,2,"I WILL"
|
||
XYTXT PRTF8,P1LX+40,P1LY+22-20,2,"FEAST NOW"
|
||
.word -1
|
||
plbw1l3_st
|
||
XYTXT PRTF8,P1LX+40,P1LY+12-20,2,"I NEED"
|
||
XYTXT PRTF8,P1LX+40,P1LY+22-20,2,"MORE CASH."
|
||
.word -1
|
||
plbw1l4_st
|
||
XYTXT PRTF8,P1LX+40,P1LY+12-20,2,"HE IS A"
|
||
XYTXT PRTF8,P1LX+40,P1LY+22-20,2,"DOG"
|
||
.word -1
|
||
plbw1l5_st
|
||
XYTXT PRTF8,P1LX+40,P1LY+12-20,2,"PLAYER 2"
|
||
XYTXT PRTF8,P1LX+40,P1LY+22-20,2,"IS A JERK"
|
||
.word -1
|
||
plbw1l6_st
|
||
XYTXT PRTF8,P1LX+40,P1LY+12-20,2,"THAT SCUM"
|
||
XYTXT PRTF8,P1LX+40,P1LY+22-20,2,"CHEATED"
|
||
.word -1
|
||
plbw1l7_st
|
||
XYTXT PRTF8,P1LX+40,P1LY+12-20,2,"HOW DOES"
|
||
XYTXT PRTF8,P1LX+40,P1LY+22-20,2,"HE DO IT?"
|
||
.word -1
|
||
plbw1l8_st
|
||
XYTXT PRTF8,P1LX+40,P1LY+12-20,2,"PUNCH"
|
||
XYTXT PRTF8,P1LX+40,P1LY+22-20,2,"PLAYER 2"
|
||
.word -1
|
||
plbw1l9_st
|
||
XYTXT PRTF8,P1LX+40,P1LY+12-20,2,"I NEED"
|
||
XYTXT PRTF8,P1LX+40,P1LY+22-20,2,"A DRINK..."
|
||
.word -1
|
||
plbw1l10_st
|
||
XYTXT PRTF8,P1LX+40,P1LY+12-20,2,"I WANT MY"
|
||
XYTXT PRTF8,P1LX+40,P1LY+22-20,2,"MOMMY"
|
||
.word -1
|
||
plbw1l11_st
|
||
XYTXT PRTF8,P1LX+40,P1LY+12-20,2,"I SWEAT"
|
||
XYTXT PRTF8,P1LX+40,P1LY+22-20,2,"LIKE A PIG"
|
||
.word -1
|
||
|
||
plbw2ltxt_t ;Lost
|
||
.word 10
|
||
.long plbw2l1_st,plbw2l2_st,plbw2l3_st,plbw2l4_st
|
||
.long plbw2l5_st,plbw2l6_st,plbw2l7_st
|
||
.long plbw2l8_st,plbw2l9_st,plbw2l10_st
|
||
plbw2l1_st
|
||
XYTXT PRTF8,P2LX-40,P2LY+12-20,2,"PLAYER 1"
|
||
XYTXT PRTF8,P2LX-40,P2LY+22-20,2,"IS A DORK"
|
||
.word -1
|
||
plbw2l2_st
|
||
XYTXT PRTF8,P2LX-40,P2LY+12-20,2,"THAT BOY"
|
||
XYTXT PRTF8,P2LX-40,P2LY+22-20,2,"IS GOOD..."
|
||
.word -1
|
||
plbw2l3_st
|
||
XYTXT PRTF8,P2LX-40,P2LY+12-20,2,"HOW CAN I"
|
||
XYTXT PRTF8,P2LX-40,P2LY+22-20,2,"BEAT HIM?"
|
||
.word -1
|
||
plbw2l4_st
|
||
XYTXT PRTF8,P2LX-40,P2LY+12-20,2,"I NEED"
|
||
XYTXT PRTF8,P2LX-40,P2LY+22-20,2,"MUSCLES"
|
||
.word -1
|
||
plbw2l5_st
|
||
XYTXT PRTF8,P2LX-40,P2LY+12-20,2,"PLAYER 1"
|
||
XYTXT PRTF8,P2LX-40,P2LY+22-20,2,"WAS LUCKY"
|
||
.word -1
|
||
plbw2l6_st
|
||
XYTXT PRTF8,P2LX-40,P2LY+12-20,2,"THAT GUY'S"
|
||
XYTXT PRTF8,P2LX-40,P2LY+22-20,2,"A BIG JERK"
|
||
.word -1
|
||
plbw2l7_st
|
||
XYTXT PRTF8,P2LX-40,P2LY+12-20,2,"I SUCK AT"
|
||
XYTXT PRTF8,P2LX-40,P2LY+22-20,2,"ALL GAMES"
|
||
.word -1
|
||
plbw2l8_st
|
||
XYTXT PRTF8,P2LX-40,P2LY+12-20,2,"I CAN'T"
|
||
XYTXT PRTF8,P2LX-40,P2LY+22-20,2,"BEAT HIM"
|
||
.word -1
|
||
plbw2l9_st
|
||
XYTXT PRTF8,P2LX-40,P2LY+12-20,2,"I CAN"
|
||
XYTXT PRTF8,P2LX-40,P2LY+22-20,2,"PLAY PONG"
|
||
.word -1
|
||
plbw2l10_st
|
||
XYTXT PRTF8,P2LX-40,P2LY+12-20,2,"I SUCK"
|
||
XYTXT PRTF8,P2LX-40,P2LY+22-20,2,"BIG TIME"
|
||
.word -1
|
||
plbw2l11_st
|
||
XYTXT PRTF8,P1LX+40,P1LY+12-20,2,"I SUCK AT"
|
||
XYTXT PRTF8,P1LX+40,P1LY+22-20,2,"THIS GAME"
|
||
.word -1
|
||
|
||
|
||
|
||
|
||
.endif
|
||
|
||
|
||
|
||
|
||
|
||
|
||
********************************
|
||
********************************
|
||
* Extra junk!!!
|
||
|
||
NOTINUSE
|
||
|
||
********************************
|
||
* Calls DO_RACKUP
|
||
|
||
.ref KILALL
|
||
|
||
SUBRP rackcaller
|
||
|
||
rc10 SLEEPK 30
|
||
move @SLDEBUG,a0
|
||
btst 0,a0
|
||
jrz rc10
|
||
|
||
|
||
calla KILBGND
|
||
clr a0
|
||
clr a1
|
||
calla KILALL
|
||
clr a0
|
||
clr a1
|
||
calla KILOBJ
|
||
clr a0
|
||
move a0,@WORLDTLX+16
|
||
movi >35b,a0
|
||
move a0,@WORLDTLY+16
|
||
jruc DO_RACKUP
|
||
|
||
|
||
|
||
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 setpal0
|
||
|
||
rp70 SLEEPK 1 ;Sleep 4??
|
||
dsj a8,rp50
|
||
|
||
|
||
********************************
|
||
* Set palette 0 from buffer
|
||
|
||
.bss colorbuf ,16*31 ;31 Color buffer
|
||
|
||
SUBRP setpal0
|
||
|
||
PUSH a1,a2
|
||
movi colorbuf,a0 ;*Color
|
||
movk 1,a1 ;Palette 0, Color 1
|
||
movk 31,a2 ;# Colors
|
||
calla pal_set
|
||
PULL a1,a2
|
||
rets
|
||
|
||
********************************
|
||
* Convert BCD to ASCII
|
||
|
||
.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
|
||
|
||
|
||
********************************
|
||
* Read joysticks
|
||
|
||
SUBRP joy_read
|
||
move @SWITCH,a0
|
||
not a0
|
||
rets ;Pass CC
|
||
|
||
********************************
|
||
|
||
; movi bonush_st,a0 ;>Rackup items
|
||
; movi hostage_l,a1
|
||
; move @P1DATA+THSTGS,a2
|
||
; move @P2DATA+THSTGS,a3
|
||
; movk 5,a4
|
||
; JSRP bonus_showrack
|
||
;
|
||
; movi bonusf_st,a0
|
||
; movi flag_l,a1
|
||
; move @P1DATA+TFLAGS,a2
|
||
; move @P2DATA+TFLAGS,a3
|
||
; movk 6,a4
|
||
; JSRP bonus_showrack
|
||
;
|
||
; movi bonusg_st,a0
|
||
; movi gems_l,a1
|
||
; move @P1DATA+CASHCNT,a2
|
||
; move @P2DATA+CASHCNT,a3
|
||
; movk 3,a4
|
||
; JSRP bonus_showrack
|
||
|
||
|
||
|
||
********************************
|
||
* Do a bonus rack
|
||
|
||
APTRPD BONUSLP,0 ;*Bonus anim list
|
||
WORDPD BONUSC1,2 ;Play 1 # items
|
||
WORDPD BONUSC2,3 ;Play 2 ^
|
||
WORDPD BONUSPT,4 ;Points per item
|
||
|
||
|
||
SUBRP bonus_showrack ;A0=*XY text, A1=*Anim list, A2=1Cnt, A3=2Cnt
|
||
;A4=Points per item
|
||
|
||
move @PSTATUS,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)
|
||
move a4,*a13(BONUSPT)
|
||
|
||
calla prt0_xy
|
||
|
||
movi racksup,a0
|
||
calla snd_play1
|
||
|
||
movk 10,a0
|
||
move a0,@boanimdeath1
|
||
move a0,@boanimdeath2
|
||
|
||
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 ;Cnt up?
|
||
move @boanimdeath1,a0
|
||
jrle bsr90
|
||
btst 0,a11
|
||
jrnz bsr60
|
||
addk 1,a11 ;Set bit 0
|
||
PUSH a0,a8,a9
|
||
move a13,a8
|
||
clr a9
|
||
CREATE0 bonus_flashwinblk
|
||
PULL a0,a8,a9
|
||
addk 14,a0 ;Add delay
|
||
bsr60 subk 1,a0
|
||
move a0,@boanimdeath1
|
||
jruc bsr90
|
||
|
||
bsr70 addk 1,a9
|
||
move @P1DATA+PSCORE,a0,L
|
||
move *a13(BONUSPT),a1
|
||
add a1,a0 ;Add bonus
|
||
move a0,@P1DATA+PSCORE,L
|
||
movi rack1it,a0
|
||
calla snd_play1
|
||
move *a8,a1 ;Get X
|
||
jrn bsr90
|
||
PUSH a9,a10,a11
|
||
move *a13(BONUSLP),a9,L
|
||
clr a10
|
||
movi boanimdeath1,a11
|
||
CREATE0 bonus_anim
|
||
PULL a9,a10,a11
|
||
bsr90
|
||
move *a13(BONUSC2),a0
|
||
cmp a0,a10
|
||
jrlo bsr120
|
||
move @boanimdeath2,a0
|
||
jrle bsr150
|
||
btst 1,a11
|
||
jrnz bsr100
|
||
addk 2,a11 ;Set bit 1
|
||
PUSH a0,a8,a9
|
||
move a13,a8
|
||
movk 1,a9
|
||
CREATE0 bonus_flashwinblk
|
||
PULL a0,a8,a9
|
||
addk 14,a0 ;Add delay
|
||
bsr100 subk 1,a0
|
||
move a0,@boanimdeath2
|
||
jruc bsr150
|
||
|
||
bsr120 addk 1,a10
|
||
move @P2DATA+PSCORE,a0,L
|
||
move *a13(BONUSPT),a1
|
||
add a1,a0 ;Add bonus
|
||
move a0,@P2DATA+PSCORE,L
|
||
movi rack1it,a0
|
||
calla snd_play1
|
||
move *a8,a1 ;Get X
|
||
jrn bsr150
|
||
PUSH a9,a10,a11
|
||
move *a13(BONUSLP),a9,L
|
||
movi 184,a10 ;X offset
|
||
movi boanimdeath2,a11
|
||
CREATE0 bonus_anim
|
||
PULL a9,a10,a11
|
||
|
||
bsr150
|
||
move *a8,a0
|
||
jrn bsr180
|
||
addk 32,a8 ;Next XY
|
||
bsr180 movk 3,a0
|
||
callr sleep_var
|
||
move @boanimdeath1,a0 ;Both done?
|
||
jrgt bsr40
|
||
move @boanimdeath2,a0
|
||
jrgt bsr40
|
||
|
||
movi kilfgnd,a0
|
||
calla snd_play1
|
||
|
||
calla ERASE_TXT
|
||
|
||
RETP
|
||
|
||
hostxy_t
|
||
.word 30,45, 60,45, 90,45, 120,45, 150,45
|
||
.word 45,65, 75,65, 105,65, 135,65
|
||
.word 30,85, 60,85, 90,85, 120,85, 150,85
|
||
.word 45,105, 75,105, 105,105, 135,105
|
||
.word -1
|
||
|
||
|
||
|
||
********************************
|
||
* Flash other players blocks if he won
|
||
|
||
SUBRP bonus_flashwinblk ;A8=*Creators process, A9=P1 or P2 (0-1)
|
||
|
||
move *a8(BONUSC1),a1
|
||
move *a8(BONUSC2),a2
|
||
move @WORLDTLX+16,a10
|
||
move a9,a9
|
||
jrnz bfwb70
|
||
SWAP a1,a2
|
||
addi 190,a10 ;A10=Min X of tiles
|
||
bfwb70 cmp a2,a1
|
||
jrlo bfwbx ;Win round?
|
||
movi 190,a11 ;A11=X range of tiles
|
||
|
||
movk 3,a8
|
||
bfwb80 movi DMACNZ+M_NOCOLL,a3
|
||
callr bonus_flashblk
|
||
SLEEPK 2
|
||
movi DMAWNZ+M_NOCOLL,a3
|
||
callr bonus_flashblk
|
||
SLEEPK 8
|
||
dsj a8,bfwb80
|
||
|
||
bfwbx DIE
|
||
|
||
|
||
SUBRP bonus_flashblk ;A3=OFLAGS, A10=XMin, A11=XWidth
|
||
|
||
move @OBJLST,a1,L
|
||
bfb20 move *a1(OZPOS),a0
|
||
subi 200,a0
|
||
subk 1,a0
|
||
jrhi bfb30 ;Not 200-201?
|
||
move *a1(OXPOS),a0
|
||
sub a10,a0
|
||
cmp a11,a0
|
||
jrhi bfb30
|
||
move a3,*a1(OFLAGS)
|
||
movi >909,a0
|
||
move a0,*a1(OCONST)
|
||
bfb30 move *a1,a1,L
|
||
jrnz bfb20
|
||
rets
|
||
|
||
|
||
********************************
|
||
* Animation of a bonus item (Process)
|
||
|
||
SUBRP bonus_anim ;A8=*XY, A9=*FRANIM table, A10=X offset
|
||
;A11=*boanimdeath 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+M_NOCOLL,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 SLEEPK 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
|
||
|
||
|
||
|
||
********************************
|
||
.endif
|
||
|
||
|
||
.end
|
||
|
||
|