pinballfantasies/SHOW.ASM

4457 lines
90 KiB
NASM
Raw 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.

;******************************************************************************
;** **
;** P I N B A L L F A N T A S I E S **
;** TABLE 3: BILLION DOLLAR GAME SHOW **
;** **
;******************************************************************************
INCLUDELIB BILLION
INCLUDELIB CLEAR
flipgfxfilesize=220
FIRSTMASK_GFXADR=BPL*(SPLH+BANH)
GFXADR_FOR_FLIP_ANIM_DATA=FIRSTMASK_GFXADR+BPL*40
springsourceadr=GFXADR_FOR_FLIP_ANIM_DATA-3*23 ;3*23 ŽR F™R FJŽDERNS GFX
springdestadr=(splh+556)*bpl+304/4
DATAFLIP SEGMENT PARA PUBLIC 'DATA'
MAXDIFS1=114+5
MAXDIFS2=114+5
MAXDIFS3=137+5
maxdifs=137
if create_flip_data
LEFTFLIPTAB DW 42*(2*MAXDIFS1) DUP (1)
RIGHTFLIPTAB DW 42*(2*MAXDIFS2) DUP (1)
LEFTFLIP2TAB DW 26*(2*MAXDIFS3) DUP (1)
TEMPTAB DW 2*MAXDIFS DUP (1)
else
extrn leftfliptab,rightfliptab,leftflip2tab
endif
DATAFLIP ENDS
DATA SEGMENT PARA PUBLIC 'DATA'
ASSUME CS:CODE,DS:DATA
BALL_LOCK_YPOS EQU 537
MODUL DB 'TABLE3.MOD',0,'$'
if create_flip_data
flipdatafil_L DB 'flipdata.3L',0
flipdatafil_R DB 'flipdata.3R',0
flipdatafil_L2 DB 'flipdata.3L2',0
flipgfxfil DB 'flipgfx.3',0
flipSTRUCfil DB 'flipSTRU.3',0
endif
hi_score_file db 'table3.hi',0
hi_score_list db 0,0,0, 0,5,0, 0,0,0, 0,0,0,'TSP',0
db 0,0,0, 0,2,5, 0,0,0, 0,0,0,'ANY',0
db 0,0,0, 0,1,0, 0,0,0, 0,0,0,'J L',0
db 0,0,0, 0,0,5, 0,0,0, 0,0,0,'ICE',0
;******************************************************************************
;******************************** DEFINITIONS *********************************
;******************************************************************************
TOTCENT=16
;******************** SYSTEM **********************
MAX_NO_OF_LIGHTS_FLASHING=30
MAX_NO_OF_WAIT_SYNCS=50
NOOFTASKS=20
RGB_BUFFER_LEN=500
;******************** FLIPPER & BALL **********************
BALLH=16
BANH=576
STARTX=310-BALLH/2+2
STARTY=543-BALLH/2
F3TOP=176
F3HEIGHT=53
;******************** FLASHING **********************
MATRIXlo=153
MATRIXhi=114
MATRIXCOLS=matrixhi*256+matrixlo
PARTY_ON_SPEED=3 ;?
SHOOT_AGAIN_SPEED=3 ;?
BIT2COL DB 0,0,0,0,6,1,41,0 ;flipper f„rgerna
;******************** GAME TIMING ********************
LM_TIME=10*60
TV_Time=4*60
BOAT_Time=10*60
HOUSE_Time=10*60
PLANE_Time=10*60
SJP_TIME=5*60
JP_TIME=25*60
TRIP_Time=4*60
CAR_Time=4*60
cash5_time=11*60 ;cpw!
MB_time=4*60 ;cpw!
sfspeed=10
LOOPS_N_TRAPS DB ?
PARTYFLASH DB FALSE
syncflasher db 0
evendata
LOOP_MILLION_COUNTER DW 0
SJP_counter dw 0
JP_counter dw 0
MBcounter dw 0
TVcounter dw 0
BOATcounter dw 0
HOUSEcounter dw 0
PLANEcounter dw 0
TRIPcounter dw 0
CARcounter dw 0
cash5counter dw 0
nextSPINtime dw ?
SPINTIMES_HI dw 15 dup(4),5,5,6,7,7,7,7,8,8,8,9,10,10,10,10,11,11,11,11,12,12,14,16,19,22,25,50,-1
SPINTIMES dw 15 dup(4),5,5,5,6,6,6,6,7,7,7,8,8,8,8,9,9,10,10,12,14,17,20,24,32,47,-1
SPINcounter dw ?
SPINlight db 0
rm db 0,0,0,0,0,0,0,0,0,0,0,0
Tjufemtusen db 0,0,0,0,0,0,0,2,5,0,0,0
SPINscores db 0,0,0,'*'-'A'+10,'*'-'A'+10,'*'-'A'+10,'*'-'A'+10,2,5,0,0,0 ;rensar tv† f”rsta
_50K db 0,0,0,0,0,0,0,5,0,0,0,0
_100K db 0,0,0,0,0,0,1,0,0,0,0,0
_250K db 0,0,0,0,0,0,2,5,0,0,0,0
_500K db 0,0,0,0,0,0,5,0,0,0,0,0
_1000K db 0,0,0,0,0,1,0,0,0,0,0,0
_2500K db 0,0,0,0,0,2,5,0,0,0,0,0
_5000K db 0,0,0,0,0,5,0,0,0,0,0,0
CASHPOTSTEP DB 0,0,0,0,0,0,0,0,7,1,3,0
CASHPOTSTEP2 DB 0,0,0,0,0,0,2,2,7,8,3,0
;******************** HOLES **********************
;******************************************************************************
;****************************** GENERAL VARS **********************************
;******************************************************************************
TURBOMODE DB FALSE
OFFROADMODE DB FALSE
TVflag db ?
BILLION_ENABLED DB ?
TRIPflag db ?
CARflag db ?
HOUSEflag db ?
BOATflag db ?
PLANEflag db ?
top_three db ?
all_six db ?
bonusmultiplier db ?
BONUSTABLE DB 2,3,4,6,8,10 ;DE OLIKA BONUSMULTIPLIERNA
BONUS_ANIMS DW _bonusx2TS,_bonusx3TS,_bonusx4TS,_bonusx6TS,_bonusx8TS,_bonusx10TS
SKILLCOUNTER equ cyclonecounterbcd
ETTA DB 11 DUP(0),1
HUNDRATUSEN db 0,0,0,0,0,0,1,0,0,0,0,0
BCDfemmillioner db 0,0,0,0,0,5,0,0,0,0,0,0
bcd7510 db 0,0,0,0,0,0,0,0,7,5,1,0
bcd7520 db 0,0,0,0,0,0,0,0,7,5,2,0
bcd550 db 0,0,0,0,0,0,0,0,0,5,5,0
bcd570 db 0,0,0,0,0,0,0,0,0,5,7,0
bcdhundratusen db 0,0,0,0,0,0,1,0,0,0,0,0
if create_flip_data
FlipLInfo LABEL FLIPSTRUC
DB FlipperL,222
DW 80,510,4,53,0,142,400,576,95,536,0,(53*8*3)
DW 0,0,0,20,20*ADJUST,-7*tt/nn,4*tt/nn,-68*tt/nn,48*tt/nn
DW ?,?,?,?,LEFTFLIPTAB,LEFTFLIPTAB,MAXDIFS1*4
DW FLIPLEFT
DB FlipperR,222
DW 160,510,4,53,143,320,400,576,204,536,0,(53*8*3)
DW 0,0,0,20,20*ADJUST,-7*tt/nn,4*tt/nn,-68*tt/nn,48*tt/nn
DW ?,?,?,?,RIGHTFLIPTAB,RIGHTFLIPTAB,MAXDIFS2*4
DW FLIPRIGHT
DB FlipperR,222
DW 240,176,3,51,220,320,0,250,286,182,-1,(51*6*3)
DW 0,0,0,12,12*ADJUST,-9*tt/nn,4*tt/nn,-68*tt/nn,48*tt/nn
DW ?,?,?,?,LEFTFLIP2TAB,LEFTFLIP2TAB,MAXDIFS3*4
Dw flipLEFT2
DB 0,0 ;END OF FLIPSTRUC
else
extrn fliplinfo:flipstruc
endif
no_of_ramps equ 5 ;cpw!?!?
RampTable DW 0,10*tt/nn
DW 4*tt/nn,13*tt/nn
DW 0,15*tt/nn
DW 2,10*tt/nn
DW 6*tt/nn,14*tt/nn
DW 0,0 ;ska den va me??? CP!!
RampTable_hi DW 0,10
DW 4,13-1
DW 0,15-1
DW 2,10-1
DW 6,14-1
DW 0,0 ;ska den va me??? CP!!
PLAYER_STRUC STRUC
P_SIFFRORNA DB 12 DUP(?)
P_BONUSSIFFRORNA DB 12 DUP(?)
P_TOP_THREE DB ?
P_ALL_SIX DB ?
P_CYCLONECOUNTERBCD DB 12 DUP(?)
P_CYCLONECOUNTER DW ?
ENDS
PLAYER_AREA DB SIZE PLAYER_STRUC * NO_OF_PLAYERS DUP(?)
CYCLONECOUNTER DW ? ;HEXADECIMAL
cyclonecounterBCD DB ?,?,?, ?,?,?, ?,?,?, ?,?,? ;BCD CODED
CYCLONESCOREBCD DB ?,?,?, ?,?,?, ?,?,?, ?,?,? ;BCD CODED
XXBALLE DB ?
;******************************************************************************
;********************************* EFFECTS ************************************
;******************************************************************************
EFFECT_STRUC STRUC
THEJINGLE DW ?
TSCORE DB 0,0,0, 0,0,0, 0,0,0, 0,0,0 ;12 ST!!
TBONUS DB 0,0,0, 0,0,0, 0,0,0, 0,0,0 ;12 ST!!
DOTMATRIX DW ?
ENDS
SHOOTTHEBALL DW SJINGLE12
DB 0,0,0, 0,0,0, 0,0,0, 0,0,0 ;CP?
DB 0,0,0, 0,0,0, 0,0,0, 0,0,0 ;CP?
DW SHOOTTHEBALLTS
BILLION DW SJINGLE1
DB 0,0,1, 0,0,0, 0,0,0, 0,0,0 ;CP?
DB 0,0,0, 0,0,5, 0,0,0, 0,0,0 ;CP?
DW BILLIONTS
;BygelSetA Dc.L 0,SBygel1,0,$50000,0,0,0
bygelsetA dw 0
db 0
db 0,0,0, 0,0,0, 0,5,0, 0,0,0
db 0,0,0, 0,0,0, 0,0,0, 0,0,0
dw 0
;BygelSetB Dc.L 0,SBygel2,0,$10000,0,$1020,0
bygelsetB dw 0
db 0
db 0,0,0, 0,0,0, 0,1,0, 0,0,0
db 0,0,0, 0,0,0, 0,0,1, 0,2,0
dw 0
;BygelSetC Dc.L 0,0,0,$10000,0,$1030,R6
bygelsetC dw 0
db 0
db 0,0,0, 0,0,0, 0,1,0, 0,0,0
db 0,0,0, 0,0,0, 0,0,1, 0,3,0
dw 0
;BygelSetD Dc.L 0,0,0,$10000,0,$1040,R5
bygelsetD dw 0
db 0
db 0,0,0, 0,0,0, 0,1,0, 0,0,0
db 0,0,0, 0,0,0, 0,0,1, 0,4,0
dw 0
;BygelSetE Dc.L 0,0,0,$10000,0,$1050,R3
bygelsetE dw 0
db 0
db 0,0,0, 0,0,0, 0,1,0, 0,0,0
db 0,0,0, 0,0,0, 0,0,1, 0,5,0
dw 0
;BygelSetF Dc.L 0,0,0,$10000,0,$1060,0
bygelsetF dw 0
db 0
db 0,0,0, 0,0,0, 0,1,0, 0,0,0
db 0,0,0, 0,0,0, 0,0,1, 0,6,0
dw 0
;BygelSetG Dc.L 0,0,0,$10000,0,$1070,0
bygelsetG dw 0
db 0
db 0,0,0, 0,0,0, 0,1,0, 0,0,0
db 0,0,0, 0,0,0, 0,0,1, 0,7,0
dw 0
;BygelSetH Dc.L 0,0,0,$10000,0,$1080,R4
bygelsetH dw 0
db 0
db 0,0,0, 0,0,0, 0,1,0, 0,0,0
db 0,0,0, 0,0,0, 0,0,1, 0,8,0
dw 0
;BygelSetI Dc.L 0,0,0,$10000,0,$1090,R1
bygelsetI dw 0
db 0
db 0,0,0, 0,0,0, 0,1,0, 0,0,0
db 0,0,0, 0,0,0, 0,0,1, 0,9,0
dw 0
;BygelSetJ Dc.L 0,0,0,$10000,0,$1010,R2
bygelsetJ dw 0
db 0
db 0,0,0, 0,0,0, 0,1,0, 0,0,0
db 0,0,0, 0,0,0, 0,0,1, 0,1,0
dw 0
;BygelSetK Dc.L 0,0,0,$10000,0,$1030,0
bygelsetK dw 0
db 0
db 0,0,0, 0,0,0, 0,1,0, 0,0,0
db 0,0,0, 0,0,0, 0,0,1, 0,3,0
dw 0
youwinTV dw sjingle7
db 0,0,0, 0,0,0, 5,0,0, 0,0,0
db 0,0,0, 0,0,0, 0,5,0, 0,0,0
DW youwinTVTS
youwinTrip dw sjingle7
db 0,0,0, 0,0,1, 0,0,0, 0,0,0
db 0,0,0, 0,0,0, 0,5,0, 0,0,0
DW youwinTRIPTS
youwinCAR dw sjingle7
db 0,0,0, 0,0,3, 0,0,0, 0,0,0
db 0,0,0, 0,0,0, 0,5,0, 0,0,0
DW youwinCARTS
youwinBOAT dw sjingle7
db 0,0,0, 0,0,5, 0,0,0, 0,0,0
db 0,0,0, 0,0,0, 2,5,0, 0,0,0
DW youwinBOATTS
youwinHOUSE dw sjingle7
db 0,0,0, 0,0,7, 5,0,0, 0,0,0
db 0,0,0, 0,0,0, 5,0,0, 0,0,0
DW youwinHOUSETS
youwinPLANE dw sjingle7
db 0,0,0, 0,1,0, 0,0,0, 0,0,0
db 0,0,0, 0,0,0, 5,0,0, 0,0,0
DW youwinPLANETS
moneymania dw sjingle9
db 0,0,0, 0,0,0, 0,0,0, 0,0,0
db 0,0,0, 0,0,0, 0,0,0, 0,0,0
DW turboTS
moneymania2 dw sjingle9
db 0,0,0, 0,0,0, 0,0,0, 0,0,0
db 0,0,0, 0,0,0, 0,0,0, 0,0,0
DW turbo2TS
JACKPOT dw sjingle14
JACKVALUE db 0,0,0, 0,0,0, 0,0,0, 0,0,0
db 0,0,0, 0,0,0, 0,0,0, 0,0,0
DW jackpotTS
JACKINIT DB 0,0,0, 0,1,0, 0,0,0, 0,0,0
S_JACKPOT dw sjingle15
db 0,0,0, 0,5,0, 0,0,0, 0,0,0
db 0,0,0, 0,0,1, 0,0,0, 0,0,0
DW 0
EXTRA_BALL dw sjingle11
db 0,0,0, 0,0,0, 0,0,0, 0,0,0
db 0,0,0, 0,0,0, 0,0,0, 0,0,0
DW _xtraballTS
RAISING_M dw sjingle16
db 0,0,0, 0,0,0, 0,0,0, 0,0,0
db 0,0,0, 0,0,0, 0,0,0, 0,0,0
DW rmTS
SKILLSHOt DW sjingle6
db 0,0,0, 0,0,0, 0,0,0, 0,0,0
db 0,0,0, 0,0,0, 0,0,0, 0,0,0
DW skillshotTS
SKILLSHOt_XB DW sjingle6
db 0,0,0, 0,0,0, 0,0,0, 0,0,0
db 0,0,0, 0,0,0, 0,0,0, 0,0,0
DW skillshotXBTS
cashpot DW sjingle5
;dd 0,0 ;cp! fel po„ng&bonus
CASHPOTVAL db 0,0,0, 0,0,0, 5,0,7, 5,0,0
db 0,0,0, 0,0,0, 0,0,0, 5,1,0
DW cashpotTS
cashpot5 DW sjingle18
;dd 0,0 ;cp! fel po„ng&bonus
CASHPOT5VAL db 0,0,0, 0,0,0, 0,0,0, 0,0,0
db 0,0,0, 0,0,0, 0,0,0, 5,1,0
DW cashpot5TS
TouchB DW 0
DB 0
db 0,0,0, 0,0,0, 0,0,7, 5,0,0
db 0,0,0, 0,0,0, 0,0,0, 5,3,0
DW 0
TouchC DW 0
DB 0
db 0,0,0, 0,0,0, 0,0,7, 5,0,0
db 0,0,0, 0,0,0, 0,0,0, 5,7,0
DW 0
dollartouch DW 0
DB 0
db 0,0,0, 0,0,0, 0,0,7, 5,0,0
db 0,0,0, 0,0,0, 0,0,0, 5,1,0
DW 0
dollartouch2 DW sjingle20
db 0,0,0, 0,0,0, 0,0,7, 5,0,0
db 0,0,0, 0,0,0, 0,0,0, 5,1,0
DW 0
LOOPMILLION DW SJINGLE17
db 0,0,0, 0,0,1, 0,0,0, 0,0,0
db 0,0,0, 0,0,0, 0,7,5, 0,0,0
DW millionTS ;CP!
TVLIT DW SJINGLE6
; DD 0,0
db 0,0,0, 0,0,0, 1,0,0, 0,0,0
db 0,0,0, 0,0,0, 0,0,5, 0,0,0
DW TVlitTS
TRIPLIT DW SJINGLE6
; DD 0,0
db 0,0,0, 0,0,0, 2,5,0, 0,0,0
db 0,0,0, 0,0,0, 0,0,5, 0,0,0
DW TRIPlitTS
CARLIT DW SJINGLE16
; DD 0,0
db 0,0,0, 0,0,1, 2,5,0, 0,0,0
db 0,0,0, 0,0,0, 0,0,5, 0,0,0
DW CARlitTS
BOATLIT DW SJINGLE21
; DD 0,0
db 0,0,0, 0,0,0, 5,0,0, 0,0,0
db 0,0,0, 0,0,0, 0,5,0, 0,0,0
DW BOATlitTS
HOUSElit DW SJINGLE21
; DD 0,0
db 0,0,0, 0,0,0, 5,0,0, 0,0,0
db 0,0,0, 0,0,0, 0,5,0, 0,0,0
DW HOUSElitTS
PLANELIT DW SJINGLE21
; DD 0,0
db 0,0,0, 0,0,0, 5,0,0, 0,0,0
db 0,0,0, 0,0,0, 0,5,0, 0,0,0
DW PLANElitTS
LOSTBALL DW S_LOSTBALL
; DD 0,0
db 0,0,0, 0,0,0, 0,0,0, 0,0,0
db 0,0,0, 0,0,0, 0,0,0, 0,0,0
DW ball_lostTS
if demover
MINUTE5 DW S_GAMEOVER2
; DD 0,0
db 0,0,0, 0,0,0, 0,0,0, 0,0,0
db 0,0,0, 0,0,0, 0,0,0, 0,0,0
DW minute5TS
endif
BONUS_X DB ?
TEMPBONUSBCD DB ?,?,?, ?,?,?, ?,?,?, ?,?,?
;******************************************************************************
;**************************** SOUND STRUCTURES ********************************
;******************************************************************************
sbase Equ 16H
SBrickNer DB (sbase+0),18,0,3
SBrickUpp DB (sbase+1),18,0,3
SBumper DB (sbase+2),18,0,3
SFlippUpp DB (sbase+3),22,0,3
SRinner DB 1ch,18,0,3 ;CP?
SNewBall DB 1ch,18,0,3
SKicker DB 1DH,18,0,3
SFjader DB 1eh,18,0,3
SGrop DB (sbase+1),18,0,3
;***********************************************************************
ebase Equ 15
SBygel1 DB (ebase-8),10,0,3
SBygel2 DB (ebase-8),12,0,3
SBygel3 DB (ebase-8),8,0,3
SBygel4 DB (ebase+0),17,0,3
SBygel5 DB (ebase+0),8,0,3
S_Touch1 DB (ebase-8),14,0,3
S_Touch2 DB (ebase+0),10,0,3
S_MultiLjud DB (ebase-8),10,0,3
S_ScoreLjud DB (ebase+0),18,0,3
S_TripCount DB (ebase+0),15,0,3
;***********************************************************************
;JINGLE,NOOFPTNS (0=4EVER),PRIORITY
;S_MULTILJUD DB 39,1,255 ;255?
emptyjingle equ 55
springjingle equ 0
mainjingle equ 1
lastmainpos equ 6
S_Empty DB 55,0,0
S_Spring DB 0,0,0
S_Main DB 1,0,0
S_NoHigh DB 18,0,0
S_Danger DB 44,1,255
S_Tilt DB 43,1,255
S_GameOver DB 28,0,0
S_GameOver2 DB 7,0,0
S_LostBall DB 30,1,200
S_AddPlayer DB 53,0,200
;S_AddPlayer2 DB 53,0,200 ;cp!?
S_AddPlayer2 DB (ebase+0),20,0,3 ;cp!?
S_Lock DB 29,1,90 ;Bonus Locked
S_Mystery DB 49,1,150
S_EndFig DB 52,1,0
S_Knacket DB 54,1,230
S_BEATEN DB 54,1,200 ;CP!!!
S_BEATEN_XB DB 54,1,200
;***********************************************************************
SJingle1 DB 23,3,200 ;Billion
SJingle2 DB 27,1,10 ;Multi Bonus
SJingle3 DB 31,1,10 ;Jackpot Lit
SJingle4 DB 32,1,10 ;Ball Locked
SJingle5 DB 33,1,10 ;Cash Pot
SJingle6 DB 34,1,10 ;Ramp Count
SJingle7 DB 35,1,10 ;10 Millions
SJingle8 DB 36,1,10 ;Price lit
SJingle9 DB 38,0,255 ;Money Mania
SJingle10 DB 41,1,255 ;Money Mania End
SJingle11 DB 42,1,120 ;Extra Ball
SJingle12 DB 47,1,10 ;Billion Lit
SJingle13 DB 48,1,10 ;Ball Lock Enabled
SJingle14 DB 50,1,110 ;Jackpot
SJingle15 DB 51,1,150 ;Super Jackpot
SJingle16 DB 45,1,110 ;Million Plus
SJingle17 DB 46,1,50 ;Million
SJingle18 DB 56,1,10 ;5*Cash Pot
SJingle19 DB 57,1,110 ;Extra Ball Lit
SJingle20 DB 58,1,150 ;Spin Wheel Enabled
SJingle21 DB 59,1,110 ;Price(2) Lit
SJingle22 DB 60,1,50 ;Ball Trap Open
;******************************************************************************
;***************************** DETECTION AREAS ********************************
;******************************************************************************
BumperLista_L DW 44,145,68,169
DW Bumper1
DW 74,201,98,226
DW Bumper2
DW 11,231,35,247
DW Bumper3
BumperLista_U DW -1,-1,-1,-1
DW -1
Bumper2Lista_L DW 50,415,80,470 ;Just to add power
DW Kicker ;No Scores or effects
DW 219,415,249,470
DW Kicker
Bumper2Lista_U DW -1,-1,-1,-1
DW -1
bumper1 dw sbumper
db 0,0,0, 0,0,0, 0,0,1, 0,0,0 ;CP!!!
bumper2 dw sbumper
db 0,0,0,0,0,0,0,0,1,0,0,0
bumper3 dw sbumper
db 0,0,0,0,0,0,0,0,1,0,0,0
kicker dw skicker
db 0,0,0,0,0,0,0,0,0,5,0,0
ZonLista_L label word
DW 159,122,180,131
dw dropa1
DW 180,127,202,136
dw dropa2
DW 139,225,148,244
dw dropb1
DW 135,245,144,264
dw dropb2
DW 30,264,39,283
dw dropc1
DW 26,284,35,303
dw dropc2
DW 0
AreaLista_L LABEL WORD
DW 230,280,260,330 ;Game On
DW Close1
DW 305,512,320,576 ;Spring Valid
DW Bygel28
DW 300,400,320,450 ;Spring invalid?
DW Open1
DW 102,23,122,45
DW Bygel11 ;l„ngst upp i loopen
DW 190,25,210,45
DW Bygel12 ;till h”ger i loopen
DW 103,233,122,254
DW GropA
DW 1,520,20,555 ;CP! SKA VA X1=0
DW GropB
DW 1,460,25,500 ;CP! SKA VA X1=0
DW Close4
DW 25,435,35,445
DW Bygel3
DW 263,435,273,445
DW Bygel4
DW 5,455,15,465
DW Bygel1
DW 284,455,294,465
DW Bygel2
DW 120,130,130,140 ;SKILL
DW Bygel9
DW 222,104,232,114
DW Bygel8
DW 90,152,100,162
DW Bygel13
DW 0
AreaLista_U LABEL WORD
DW 1,30,20,50 ;CP! SKA VA X1=0
DW Bygel6
DW 45,70,70,95
DW Close3
DW 31,78,51,98
DW Bygel10
DW 290,90,320,125
DW Bygel5
DW 155,75,185,105
DW Bygel7
DW 222,104,232,114
DW Bygel8
DW 120,130,130,140
DW Bygel9
DW 1,50,20,70 ;cp x1 ska va 0
DW Bygel6b
COMMENT\
DW 180,125,205,160
DW Open2
DW 25,200,50,255
DW Close2
DW 280,360,300,380
DW Open5
DW 25,435,35,445
DW Open3
\
DW 0
AREALISTA_L_T LABEL WORD
DW 1,520,20,555 ;CP! SKA VA X1=0
DW GropB
DW 0
AREALISTA_U_T LABEL WORD
DW 0
LEVEL1LISTA LABEL WORD ;AREOR SOM ANGER HOPP TILL LEVEL 1 FR<46>N LEVEL 2
DW 100,70,125,98
DW 250,70,270,100
DW 255,85,277,120
DW 210,110,250,140
DW 290,125,320,145
DW 140,125,170,170
DW 95,155,120,190
DW 260,450,277,470
DW 20,450,50,470
DW 0,525,25,555
DW -1
LEVEL2LISTA LABEL WORD ;AREOR SOM ANGER HOPP TILL LEVEL 2 FR<46>N LEVEL 1
DW 125,70,150,100
DW 190,75,230,100
DW 200,80,240,100
DW 290,105,320,125
DW 110,110,140,150
DW -1
;******************************************************************************
;************************ DEMO MODE LIGHT FLASHING ****************************
;******************************************************************************
FLASHLIST LABEL WORD
T2=15
DW 0,0,T2,T2,1 ;SKILL
T2=12
DW 0,0,T2,T2,6 ;lock
T1=6 ;DOLLAR SIGNS
T2=T1*2
DW 0,0,T2,T2,2
DW 0,T2,T2,T2,3
T1=6 ;SPIN DOCTORS
T2=T1*8
DW 0,T1*0,T2,T2,19
DW 0,T1*1,T2,T2,20
DW 0,T1*2,T2,T2,21
DW 0,T1*3,T2,T2,22
DW 0,T1*4,T2,T2,23
DW 0,T1*5,T2,T2,24
DW 0,T1*6,T2,T2,25
DW 0,T1*7,T2,T2,26
T1=12
T2=T1
DW 0,0,T2,T2,33
DW 0,T1,T2,T2,34
DW 0,0,T2,T2,35
DW 0,T1+T1/2,T2,T2,36
DW 0,T1/2,T2,T2,37
DW 0,T1+T1/2,T2,T2,38
DW -1
;******************************************************************************
;**************************** LIGHT PALETTE DATA ******************************
;******************************************************************************
NOOFLIGHTS=38
LON1 DB 254 ;skill
DB 2
DB 64,0,0
DB 95,0,0
LON2 DB 251 ;$1
DB 3
DB 14,70,64
DB 8,64,58
DB 14,83,77
LON3 DB 248 ;$2
DB 3
DB 14,70,64
DB 8,64,58
DB 14,83,77
LON4 DB 245 ;loop mil
DB 3
DB 77,39,0
DB 83,52,8
DB 89,70,33
LON5 DB 243 ;50M
DB 2
DB 58,0,0
DB 95,0,0
LON6 DB 240 ;lock
DB 3
DB 70,70,70
DB 83,83,83
DB 95,95,95
LON7 DB 235 ;”vre bricka
DB 5
DB 14,33,52
DB 8,39,64
DB 27,52,77
DB 45,64,77
DB 70,70,70
LON8 DB 230 ;nedre bricka
DB 5
DB 14,33,52
DB 8,39,64
DB 27,52,77
DB 45,64,77
DB 70,70,70
LON9 DB 225 ;bricka
DB 5
DB 14,33,52
DB 8,39,64
DB 27,52,77
DB 45,64,77
DB 70,70,70
LON10 DB 220 ;bricka
DB 5
DB 14,33,52
DB 8,39,64
DB 27,52,77
DB 45,64,77
DB 70,70,70
LON11 DB 218 ;xb
DB 2
DB 58,0,0
DB 95,0,0
LON12 DB 215 ;Cx5
DB 3
DB 58,58,58
DB 70,70,70
DB 95,95,95
LON13 DB 213 ;tv
DB 2
DB 8,39,64
DB 39,64,95
LON14 DB 211 ;trip
DB 2
DB 45,45,45
DB 70,39,89
LON15 DB 209 ;car
DB 2
DB 8,39,64
DB 39,64,95
LON16 DB 207 ;jp
DB 2
DB 58,0,0
DB 95,0,0
LON17 DB 204 ;col. prize
DB 3
DB 58,58,58
DB 70,70,70
DB 95,95,95
LON18 DB 201 ;spin wheel
DB 3
DB 14,33,52
DB 8,39,64
DB 27,52,77
LON19 DB 199 ;spinindikator
DB 2
DB 0,58,27
DB 0,95,0
LON20 DB 197
DB 2
DB 0,58,27
DB 0,95,0
LON21 DB 195
DB 2
DB 0,58,27
DB 0,95,0
LON22 DB 193
DB 2
DB 0,58,27
DB 0,95,0
LON23 DB 191
DB 2
DB 0,58,27
DB 0,95,0
LON24 DB 189
DB 2
DB 0,58,27
DB 0,95,0
LON25 DB 187
DB 2
DB 0,58,27
DB 0,95,0
LON26 DB 185
DB 2
DB 0,58,27
DB 0,95,0
LON27 DB 183 ;1 billion
DB 2
DB 58,0,0
DB 95,0,0
LON28 DB 181 ;boat
DB 2
DB 8,39,64
DB 39,64,95
LON29 DB 179 ;house
DB 2
DB 45,45,45
DB 70,39,89
LON30 DB 177 ;plane
DB 2
DB 8,39,64
DB 39,64,95
LON31 DB 175 ;mo' money
DB 2
DB 58,0,0
DB 95,0,0
LON32 DB 173 ;money mania
DB 2
DB 58,0,0
DB 95,0,0
LON33 DB 170 ;x2
DB 3
DB 58,58,58
DB 70,70,70
DB 95,95,95
LON34 DB 167 ;x3
DB 3
DB 58,58,58
DB 70,70,70
DB 95,95,95
LON35 DB 164 ;x4
DB 3
DB 58,58,58
DB 70,70,70
DB 95,95,95
LON36 DB 161 ;x6
DB 3
DB 83,52,8
DB 89,70,33
DB 89,95,45
LON37 DB 158 ;x8
DB 3
DB 83,52,8
DB 89,70,33
DB 89,95,45
LON38 DB 155 ;x10
DB 3
DB 83,52,8
DB 89,70,33
DB 89,95,45
MATRIXON DB matrixlo ;(MATRIXCOL LOW BYTE)
DB 1
DB 95,70,27
LONEND DB 0
LONINDEX LABEL WORD
DW OFFSET LON1
DW OFFSET LON2
DW OFFSET LON3
DW OFFSET LON4
DW OFFSET LON5
DW OFFSET LON6
DW OFFSET LON7
DW OFFSET LON8
DW OFFSET LON9
DW OFFSET LON10
DW OFFSET LON11
DW OFFSET LON12
DW OFFSET LON13
DW OFFSET LON14
DW OFFSET LON15
DW OFFSET LON16
DW OFFSET LON17
DW OFFSET LON18
DW OFFSET LON19
DW OFFSET LON20
DW OFFSET LON21
DW OFFSET LON22
DW OFFSET LON23
DW OFFSET LON24
DW OFFSET LON25
DW OFFSET LON26
DW OFFSET LON27
DW OFFSET LON28
DW OFFSET LON29
DW OFFSET LON30
DW OFFSET LON31
DW OFFSET LON32
DW OFFSET LON33
DW OFFSET LON34
DW OFFSET LON35
DW OFFSET LON36
DW OFFSET LON37
DW OFFSET LON38
MATRIXOFF DB matrixlo
DB 3
DB 3 DUP(27*64/100)
;******************************************************************************
;************************* GATES & BYGLARS DATA AREOR *************************
;******************************************************************************
extrn gate1o:byte
extrn gate1c:byte
extrn gate2o:byte
extrn gate2c:byte
extrn gate3o:byte
extrn gate3c:byte
extrn gate4o:byte
extrn gate4c:byte
extrn gate5o:byte
extrn gate5c:byte
extrn gate6o:byte
extrn gate6c:byte,GATE7O,GATE7C,GATE8O,GATE8C
HOLDBONUSFLAG DB ?
;******************************************************************************
;****************************** DOT MATRIX ************************************
;******************************************************************************
clearit macro
assume ds:data2
dw _animation,_clear
assume ds:data
endm
;*********************************************************
;******* OBS!!! KOM IH<49>G ATT ASSUMERA ANIMATIONER TILL DATA2 OCH
;******* SCROLLAR TILL DATA !!!!!
ASSUME DS:DATA2
BEATENSCROLL DB 21 DUP (1),'YOU HAVE BEATEN THE HIGHSCORE',21 DUP(1),255
EXTRABALLTEXT DB 'EXTRA BALL',0
Beaten_bh_TS LABEL WORD ;I BALL LOST SEKVENSEN
DW _DOBEATEN,?
CLEARIT
DW _JINGLE,S_BEATEN
DW _LASTJINGLE,EMPTYJINGLE
DW _SCROLL,BEATENSCROLL
DW _FLASHON,10
DW _PRINT13,EXTRABALLTEXT,SW*4/4+TOTCENT+4
DW _WAIT,10*2*15
CLEARIT
DW _FLASHOFF,?
DW _JMP,No_Bonus2TS
BeatenTS LABEL WORD ;I SPELET
DW _DOBEATEN,?
CLEARIT
DW _JINGLE,S_BEATEN
DW _SCROLL,BEATENSCROLL
DW _FLASHON,10
DW _PRINT13,EXTRABALLTEXT,SW*4/4+TOTCENT+4
DW _WAIT,10*2*5
CLEARIT
DW _FLASHOFF,?
DW 0
;*****************************************
party_onTS LABEL BYTE ;Turn on party on . . .
CLEARIT
DW _FLASHON,PARTY_ON_SPEED
DW _PARTYONN,1
DW _PRINT13,PARTY_ON_TEXT,SW*4/4 ;+16*3/4 ;CP!
DW _PARTYON,1
DW 0
party_offTS LABEL WORD ;Turn it off
CLEARIT
DW _PARTYOFF,1
DW _FLASHOFF,1
DW 0
;*****************************************
ASSUME DS:DATA2
clearTS dw _animation,_clear
dw 0
tomTS dw _animation,_clear
dw _wait,32767
dw 0
ASSUME DS:DATA
SHOOTTHEBALLTS LABEL WORD
CLEARIT
DW _FLASHON,2
DW _PARTYONN,?
DW _PRINT13,SHOOTTHEBALLTEXT,SW*4/4
DW _PARTYON,?
DW 0
TVlitTS label word
clearit
dw _scroll,TVlitTEXT
dw 0
TVlitTEXT db 21 dup(1),'THE TV IS LIT',21 DUP(1),255
TRIPlitTS label word
clearit
dw _scroll,TRIPlitTEXT
dw 0
TRIPlitTEXT db 21 dup(1),'YOU CAN ACTUALLY WIN A TRIP',21 DUP(1),255
CARlitTS label word
clearit
dw _scroll,CARlitTEXT
dw 0
CARlitTEXT db 21 dup(1),'HOW ABOUT A BRAND NEW CAR',21 DUP(1),255
BOATlitTS label word
clearit
dw _scroll,BOATlitTEXT
dw 0
boatLitTEXT db 21 dup(1),'PLAY WELL AND WIN A BOAT',21 DUP(1),255
HOUSElitTS label word
clearit
dw _scroll,HOUSElitTEXT
dw 0
HOUSElitTEXT db 21 dup(1),'THE HOUSE CAN BE YOURS',21 DUP(1),255
PLANElitTS label word
clearit
dw _scroll,PLANElitTEXT
dw 0
PLANElitTEXT db 21 dup(1),'YOU CAN WIN A PRIVATE JET',21 DUP(1),255
RMTEXT DB ' RAISING MILLIONS',0
rmTS LABEL WORD
CLEARIT
DW _RULLGARDIN_UPP,rmTEXT,1
DW _WAIT,40 ;CPW!
DW _CLEAR2
DW _PRINT13_NUMBER_CENT,RM,SW*4/4+TOTCENT
DW _FLASHON,2
DW _WAIT,60
DW _FLASHOFF,1
DW _CLEAR3
DW 0
ASSUME DS:DATA2
millionTS LABEL WORD
DW _ANIMATION,_CLEAR
DW _ANIMATION,_MILLION
DW _ANIMATION,_CLEAR
DW 0
BillionTS LABEL WORD
DW _ANIMATION,_CLEAR
DW _ANIMATION,_BILLION
DW _ANIMATION,_CLEAR
DW 0
liteprize_rightTS LABEL WORD
DW _ANIMATION,_CLEAR
DW _ANIMATION,_liteprize_right
DW _ANIMATION,_CLEAR
DW 0
liteprize_leftTS LABEL WORD
DW _ANIMATION,_CLEAR
DW _ANIMATION,_liteprize_left
DW _ANIMATION,_CLEAR
DW 0
_bonusx2TS LABEL WORD
DW _ANIMATION,_CLEAR
DW _ANIMATION,_multiply
dw _animation,_x2
DW _ANIMATION,_CLEAR
DW 0
_bonusx3TS LABEL WORD
DW _ANIMATION,_CLEAR
DW _ANIMATION,_multiply
dw _animation,_x3
DW _ANIMATION,_CLEAR
DW 0
_bonusx4TS LABEL WORD
DW _ANIMATION,_CLEAR
DW _ANIMATION,_multiply
dw _animation,_x4
DW _ANIMATION,_CLEAR
DW 0
_bonusx6TS LABEL WORD
DW _ANIMATION,_CLEAR
DW _ANIMATION,_multiply
dw _animation,_x6
DW _ANIMATION,_CLEAR
DW 0
_bonusx8TS LABEL WORD
DW _ANIMATION,_CLEAR
DW _ANIMATION,_multiply
dw _animation,_x8
DW _ANIMATION,_CLEAR
DW 0
_bonusx10TS LABEL WORD
DW _ANIMATION,_CLEAR
DW _ANIMATION,_multiply
dw _animation,_x10
DW _ANIMATION,_CLEAR
DW 0
cashpotTS LABEL WORD
DW _ANIMATION,_CLEAR
DW _ANIMATION,_cashpot
DW _ANIMATION,_CLEAR
assume ds:data
dw _print13_number_cent,cashpotval,SW*4/4+TOTCENT
dw _flashon,1
dw _wait,60
dw _flashoff,1
assume ds:data2
clearit
DW 0
cashpot5TS LABEL WORD
DW _ANIMATION,_CLEAR
DW _ANIMATION,_cashpot5
DW _ANIMATION,_CLEAR
assume ds:data
dw _print13_number_cent,cashpot5val,SW*4/4+TOTCENT
dw _flashon,1
dw _wait,60
dw _flashoff,1
assume ds:data2
clearit
DW 0
jackpotTS LABEL WORD
DW _ANIMATION,_CLEAR
DW _ANIMATION,_jackpot
DW _ANIMATION,_CLEAR
DW 0
youwinTVTS LABEL WORD
DW _ANIMATION,_CLEAR
DW _ANIMATION,_youwin
DW _ANIMATION,_CLEAR
ASSUME DS:DATA
DW _SCROLL,A_TV_TEXT
DW _END_OF_SPIN,?
DW 0
ASSUME DS:DATA2
youwinTRIPTS LABEL WORD
DW _ANIMATION,_CLEAR
DW _ANIMATION,_youwin
DW _ANIMATION,_CLEAR
ASSUME DS:DATA
DW _SCROLL,A_TRIP_TEXT
DW _END_OF_SPIN,?
DW 0
ASSUME DS:DATA2
youwinCARTS LABEL WORD
DW _ANIMATION,_CLEAR
DW _ANIMATION,_youwin
DW _ANIMATION,_CLEAR
ASSUME DS:DATA
DW _SCROLL,A_CAR_TEXT
DW _END_OF_SPIN,?
DW 0
ASSUME DS:DATA2
youwinBOATTS LABEL WORD
DW _ANIMATION,_CLEAR
DW _ANIMATION,_youwin
DW _ANIMATION,_CLEAR
ASSUME DS:DATA
DW _SCROLL,A_BOAT_TEXT
DW _END_OF_SPIN,?
DW 0
ASSUME DS:DATA2
youwinHOUSETS LABEL WORD
DW _ANIMATION,_CLEAR
DW _ANIMATION,_youwin
DW _ANIMATION,_CLEAR
ASSUME DS:DATA
DW _SCROLL,A_HOUSE_TEXT
DW _END_OF_SPIN,?
DW 0
ASSUME DS:DATA2
youwinPLANETS LABEL WORD
DW _ANIMATION,_CLEAR
DW _ANIMATION,_youwin
DW _ANIMATION,_CLEAR
ASSUME DS:DATA
DW _SCROLL,A_PLANE_TEXT
DW _END_OF_SPIN,?
DW 0
ASSUME DS:DATA2
_xtraballTS LABEL WORD
DW _ANIMATION,_CLEAR
DW _ANIMATION,_xtraball
DW _ANIMATION,_CLEAR
DW 0
ASSUME DS:DATA
skillshotTS label word
clearit
dw _flashon,1
dw _number,skillcounter
dw _wait,50 ;cpw!
dw _flashoff,1
clearit
dw _flashon,5
dw _print8,skilltext,sw*2*5/4+16*0/4
dw _wait,80 ;cpw!
dw _flashoff,1
CLEARIT
dw 0
skilltext db ' MONEY MANIA AT ',6+'7',' ',0
skillshotXBTS label word
clearit
dw _flashon,1
dw _number,skillcounter
dw _wait,50 ;cpw!
dw _flashoff,1
clearit
dw _flashon,5
dw _print8,XB_TEXT,sw*2*5/4+16*0/4
dw _wait,80 ;cpw!
dw _flashoff,1
CLEARIT
dw 0
xb_text db '89 LITES EXTRA BALL',0
flashmatrixTS label word
dw _flashon,8
dw _wait,75
dw _flashoff,1
dw _wait,30000
dw 0
rensaTS label word
clearit
dw 0
rensa2TS label word
clearit
dw _wait,30000
dw 0
spinTS label word
dw _print13_number
SPINscoreptr dw offset spinscores
dw SW*4/4+16*2/4
dw _wait,30000
dw 0
Turbo2TS dw _animation,_clear
DW _ANIMATION,_moneyM
DW _ANIMATION,_CLEAR
DW _SCROLL,ALLloopTEXT
dw _jmp,initurboTS
turboTS dw _animation,_clear
DW _ANIMATION,_moneyM
DW _ANIMATION,_CLEAR
DW _SCROLL,ALLTARGETTEXT
initurboTS dw _animation,_clear
DW _PRINT13,ZEROQ,SW*(2+2)/4+16*13/4
dw _countdown,2,5,tm_total ;(the final?)
dw _animation,_clear
TurboMode_endingTS Label Word
DW _JBCDZ,TM_TOTAL,no_tmTS
assume ds:data
dw _rullgardin_upp,tm_total_text,1
DW _LIGHTFLASH,32
assume ds:data2
dw _wait,60 ;CPW!
dw _animation,_clear
DW _FLASHON,1
assume ds:data
DW _PRINT13_NUMBER,tm_total,SW*4/4+16*2/4 ;CP! RUTCENT
assume ds:data2
dw _wait,80 ;CPW!
DW _FLASHOFF,1
dw _animation,_clear
dw _TurnOffSpecialMode,?
dw 0
no_tmTS DW _PRINT13,NO_tm_TEXT,SW*4/4
ASSUME DS:DATA2
dw _wait,80 ;CPW!
CLEARIT
dw _TurnOffSpecialMode,?
DW 0
go_for_nisse_text db ' MONEY MANIA ',0
tm_total_Text db ' MONEY MANIA TOTAL',0
alltargetTEXT db 21 dup(' '),'ALL TARGETS SCORE 500000',21 DUP(' '),255
allloopTEXT db 21 dup(' '),'ALL LOOPS SCORE 1000000',21 DUP(' '),255
A_TV_TEXT db 21 dup(' '),'A 72 INCH TV WITH NO COMMERCIALS',21 DUP(' '),255
A_CAR_TEXT db 21 dup(' '),'A SUPER TURBO EXTRA MEGA COOL CAR',21 DUP(' '),255
A_TRIP_TEXT db 21 dup(' '),'A TRIP TO BEAUTIFUL SWEDEN',21 DUP(' '),255
A_BOAT_TEXT db 21 dup(' '),'A NICE 5 MILLION DOLLAR BOAT',21 DUP(' '),255
A_HOUSE_TEXT db 21 dup(' '),'A HUGE 50 ROOM MANSION',21 DUP(' '),255
A_PLANE_TEXT db 21 dup(' '),'THE PRIVATE JET WITH CREW',21 DUP(' '),255
COMMENT\
Price4ATS String 3,16,16,"_PLAY_WELL_AND_WIN_A_BOAT_"
Price5ATS String 3,16,16,"_THE_HOUSE_CAN_BE_YOURS_"
Price6ATS String 3,16,16,"_YOU_CAN_WIN_THE_PRIVATE_JET_"
Price4TS String 3,16,16,"_A_NICE_µ00°000_DOLLAR_BOAT_"
Price5TS String 3,16,16,"_A_HUGE_50_ROOM_MANSION_"
Price6TS String 3,16,16,"_THE_PRIVATE_JET_WITH_CREW_"
\
ASSUME DS:DATA
no_tm_text db ' NO BONUS',0
tm_total db ?,?,?,?,?,?,?,?,?,?,?,?
;*********************** NYA BALL LOST *******************
ASSUME DS:DATA
show_cyclones_text db ' SKILLS X ',0
show_or_text db ' MONEY MANIA TOTAL',0
ball_lostTS LABEL WORD
CLEARIT
DW _PRINT13,GETTING_SICK_TEXT,SW*2/4*2
DW _JINGLE,S_LOSTBALL
DW _LASTJINGLE,55
DW _SETDECCOR,70
DW _WAITJINGLE2,?
DW _JINGLE,S_Empty
CLEARIT
DW _JBCDZ,BONUSSIFFRORNA,no_bonusTS
DW _PRINT5,show_bonus_TEXT,SW*1*2/4+16*7/4
DW _PRINT8_NUMBER_CENT,BONUSSIFFRORNA,7*2*SW/4+TOTCENT
DW _WAIT,60 ;CPW!
dw _Sound_Effect,s_MultiLjud,0
DW _JBONUSX1,NoBonusXTS
CLEARIT ;CP! CLEARIT ŽR ON™DIGT BRUTAL!
DW _BONUS_X_CALCS,?
DW _PRINT5,BONUS_X_TEXT,SW*1*2/4+16*7/4-4*2
DW _PRINT8_NUMBER_CENT,BONUSSIFFRORNA,7*2*SW/4+TOTCENT
DW _WAIT,60 ;CPW!
dw _Sound_Effect,s_MultiLjud,0
NoBonusXTS LABEL WORD
no_bonusTS LABEL WORD
DW _JBCDZ,CYCLONECOUNTERBCD,no_cyclonesTS
CLEARIT
DW _CALC_CYCLO ;CYCLONESCOREBCD & SIFFRORNA UPPDATERAS!
DW _PRINT5_NUMBER,CYCLONECOUNTERBCD,SW*1*2/4-16*10/4
DW _PRINT5_number,HUNDRATUSEN,SW*1*2/4+13*8/4
DW _PRINT5,show_CYCLONES_TEXT,SW*1*2/4-16*1/4
DW _PRINT8_NUMBER_CENT,CYCLONESCOREBCD,SW*2*7/4+TOTCENT
DW _WAIT,120 ;CPW!
dw _Sound_Effect,s_MultiLjud,0
CLEARIT
no_cyclonesTS LABEL WORD
DW _JBCDZ,TM_TOTAL,no_happy_stewartTS
CLEARIT
DW _CALC_HAPPY ;CYCLONESCOREBCD & SIFFRORNA UPPDATERAS!
DW _PRINT5,show_or_TEXT,SW*1*2/4+16/4/2
DW _PRINT8_NUMBER_CENT,TM_TOTAL,SW*2*7/4+TOTCENT
DW _WAIT,120 ;CPW!
dw _Sound_Effect,s_MultiLjud,0
CLEARIT
no_happy_stewartTS LABEL WORD
DW _JBCDZ,BONUSSIFFRORNA,no_bonus2TS
DW _PRINT5,show_totalbonus_TEXT,SW*1*2/4+16*4/4
DW _PRINT8_NUMBER_CENT,BONUSSIFFRORNA,7*2*SW/4+TOTCENT
DW _WAIT,60 ;CPW!
CLEARIT
DW _PRINT8_NUMBER,BONUSSIFFRORNA,7*2*SW/4-16*4/4
DW _FLORPA
DW _WAIT,25 ;CPW!
dw _beaten_matrix
no_bonus2TS LABEL WORD
DW _KOLLA_XXBALL
dw _waitifmulti,2*60 ;cpgnu? (visa poeng lite lengre)
DW _MATRIXLGT,0
clearit
DW _CHANGE_PLAYER
CLEARIT
dw _wait,32000
DW 0
SORRYNOBONUSTEXT DB ' SORRY ',94,' NO BONUS ',0
shoot_again_onTS LABEL BYTE ;Turn on shoot again . . .
CLEARIT
DW _FLASHON,SHOOT_AGAIN_SPEED
DW _SHOOT_AGAIN_ONN,1
DW _PRINT13,SHOOT_AGAIN_TEXT,SW*4/4 ;+16*3/4 ;CP!
DW _NEW_BALL2
DW _PARTYON,1 ;CP?
DW 0
out_of_ballsTS LABEL WORD ;Žr Stewarts fortfarande borta kanske?
CLEARIT
dw _matrixlgt,1
dw _knacket,?
DW _SETDECCOR,120
DW _WAITJINGLE2,?
check_xxballTS LABEL WORD
DW _check_xxballs ;utf”r ev xxballs, hoppar sedan till after_xxballs!
after_xxballTS LABEL WORD
clearit
dw _check_high,?
DW _MATRIXLGT,0
DW _2_DEMO_MODE
dw _wait,20000
AfterDemoModeTS Label Word
DW _MATRIXLGT,0
dw _wait,20
dw _setloop,2,?
DW _INIT_SCORE,?
DW _JMP,UrbanOverTS
Once_MoreTS LABEL WORD
DW _INIT_SCORE,?
GameOverTS LABEL WORD
SHOWTIME=80
DW _WAIT,SHOWTIME
UrbanOverTS LABEL WORD
CLEARIT
DW _FLASHON,1
DW _PRINT13,GAME_OVER_TEXT,SW*2*2/4
DW _WAIT,30
DW _FLASHOFF,?
CLEARIT
DW _SHOW_SCORE,OFFSET GAMEOVERTS
dw _loop_,2,offset once_morets
DW _WAIT,SHOWTIME
CLEARIT
DW _WAIT,20
DW _JMP,ShowHighsTS
DW 0
GAME_OVER_TEXT DB ' GAME OVER',0
;TUBORG!
;********************** SLUT P<> BALL LOST *******************
showithi macro
DW _PRINT13,ALLTIME_TEXT,SW*2/4*2+16/4/2
dw _wait,40
CLEARIT
DW _FLASHOFF,1
DW _MATRIXLGT,0
DW _PRINT13,hi_1,SW*2/4*2
DW _PRINT13_NUMBER,(offset hi_score_list+(12+3+1)*0),4*SW/4+8*16/4
DW _PRINT13,(offset hi_score_list+(12+3+1)*0+12),SW*2/4*2+2*16/4
DW _FLASHON,1
dw _wait,140
clearit
DW _FLASHOFF,1
DW _MATRIXLGT,0
DW _PRINT13,hi_2,SW*2/4*2
DW _PRINT13_NUMBER,(offset hi_score_list+(12+3+1)*1),4*SW/4+8*16/4
DW _PRINT13,(offset hi_score_list+(12+3+1)*1+12),SW*2/4*2+2*16/4
DW _FLASHON,1
dw _wait,140
clearit
DW _FLASHOFF,1
DW _MATRIXLGT,0
DW _PRINT13,hi_3,SW*2/4*2
DW _PRINT13_NUMBER,(offset hi_score_list+(12+3+1)*2),4*SW/4+8*16/4
DW _PRINT13,(offset hi_score_list+(12+3+1)*2+12),SW*2/4*2+2*16/4
DW _FLASHON,1
dw _wait,140
clearit
DW _FLASHOFF,1
DW _MATRIXLGT,0
DW _PRINT13,hi_4,SW*2/4*2
DW _PRINT13_NUMBER,(offset hi_score_list+(12+3+1)*3),4*SW/4+8*16/4
DW _PRINT13,(offset hi_score_list+(12+3+1)*3+12),SW*2/4*2+2*16/4
DW _FLASHON,1
dw _wait,140
clearit
DW _FLASHOFF,1
endm
ShowInfoTS LABEL WORD
CLEARIT
clearit
DW _rullgardin_ned,PLAY_TEXT,1
dw _wait,40*3
DW _MATRIXLGT,0
CLEARIT
DW _PRINT13,JACK_TEXT,SW*4/4
dw _print13_number,jackvalue,SW*4/4+8*16/4
DW _FLASHON,1
dw _wait,40*3
DW _FLASHOFF,1
CLEARIT
dw _rullgardin_upp,BONUS_TEXT,1
dw _wait,40*3
CLEARIT
showithi
CLEARIT
dw _print5,playerstext,sw*2*2/4+16*1/4
dw _print5,ballstext,sw*2*10/4+16*1/4
DW 0
ShowHighsTS LABEL WORD
;TEXTER
CLEARIT
DW _FLASHON,1
DW _PRINT13,PF_TEXT,SW*2/4*2-2
dw _wait,120
DW _CLEAR2
DW _FLASHOFF,1
dw _rullgardin_upp,TRS_TEXT,1
dw _wait,90
CLEARIT
; DW _FLASHON,1
DW _SCROLL,PL_TEXT
; dw _wait,40
; DW _FLASHOFF,1
;SCROLLA
clearit
DW _SCROLL,SCROLL_TEXT1
;VISA HIGHSCORE
showithi
;DI UPP <20> NED!
CLEARIT
; dw _rullgardin_NED,DIGITAL_TEXT,16
; dw _rullgardin_upp,DIGITAL_TEXT,-13
; dw _wait,40
; CLEARIT
dw _rullgardin_NED,fld_TEXT,16
dw _rullgardin_upp,fld_TEXT,-13
dw _wait,40
;SCROLLA SISTA
DW _SCROLL,SCROLL_TEXT2
CLEARIT
DW _JMP,ShowHighsTS
dw 0
ShowPlayersTS label word
clearit
dw _print5,playerstext,sw*2*2/4+16*1/4
dw _print5,ballstext,sw*2*10/4+16*1/4
dw 0
first_no_of_playersTS LABEL WORD
clearit
dw _print5,playerstext,sw*2*2/4+16*1/4
DW _PRINT13,NOLLA,SW*2*2/4+16*19/4
no_of_playersTS label word
dw _print5,no_of_players_text,sw*2*10/4+16*1/4
DW _WAIT_GAME_ON,?
dw 0
tiltTS LABEL WORD
CLEARIT
DW _PRINT13,TILT_TEXT,sw*2/4*2+16*0/4
DW _WAIT,32767
DW 0
TILT_TEXT DB ' TILT TILT TILT',0
last_text db ' ',0
flashlast db ' ',0
slutsiffra db '0',0
startext db '*',0
last_pos dw 0
if demover
MINUTE5TS LABEL WORD
CLEARIT
dw _scroll,MINUTE5TEXT
DW _FLASHON,1
dw _print13_number,offset SIFFRORNA,SW*4/4+16*2/4
DW _WAIT,100
DW _FLASHOFF,1
dw _scroll,MINUTE5TEXTB
DW _FADE,256
DW _WAIT,100
DW QUIT,?
dw 0
MINUTE5TEXT DB 21 DUP (1)
DB "WELL DONE PLAYER 1 - YOU HAVE ACHEIVED THE MEGA SCORE OF"
DB 21 DUP (1),255
MINUTE5TEXTB DB 21 DUP (1)
DB "LOOK OUT FOR PINBALL FANTASIES PC - FULL GAME AVAILABLE SOON"
DB 21 DUP (1),255
endif
;***********************************************************
GETTING_SICK_TEXT DB ' FALLING DOWN',0
PARTY_ON_TEXT DB 'PLAY MORE - PLAYER X',0
ZEROQ DB '0'+7,0
SHOOT_AGAIN_TEXT DB 'SHOOT AGAIN PLAYER ',0
SHOOTTHEBALLTEXT DB 'SHOOT THE BALL PL ?',0
NO_OF_PLAYERS_TEXT DB 'PLAYERS X',0
NOLLA DB '7',0
show_bonus_TEXT DB 'BONUS',0
show_totalbonus_TEXT DB 'TOTAL*BONUS',0
BONUS_X_TEXT DB 'BONUS*X*??',0
fld_TEXT DB ' FRONTLINE DESIGN',0
PF_TEXT DB ' PINBALL FANTASIES',0
TRS_TEXT DB ' THE REAL SIMULATOR',0
PL_TEXT DB 21 DUP (' '),'BILLION DOLLAR GAMESHOW',21 DUP (' '),255
SCROLL_TEXT1 DB 21 DUP (' '),'ADD PLAYERS WITH F1 TO F8',21 DUP (' ')
DB 'WINNERS DO NOT USE DRUGS',21 DUP (' '),255
ALLTIME_TEXT DB 'ALL TIME HIGHSCORES',0
SCROLL_TEXT2 DB 21 DUP (' '),'FLIP WITH LEFT AND RIGHT ALT SHIFT OR CTRL KEYS',21 DUP (' ')
DB 'PUSH TABLE WITH SPACE',21 DUP (' ')
DB 'CONTROL SPRING WITH DOWN ARROW KEY',' ESC EXITS',21 DUP (' ')
DB 'WINNERS DO NOT USE DRUGS ',21 DUP (' ')
DB 255
COMMENT\
PF_TEXT DB ' PINBALL FANTASIES',0
TRS_TEXT DB ' THE REAL SIMULATOR',0
PL_TEXT DB ' PARTY LAND',0
SCROLL_TEXT1 DB 21 DUP (' '),'ADD PLAYERS WITH F1 TO F8 OR ENTER',21 DUP (' ')
DB 'WINNERS DO NOT USE DRUGS',21 DUP (' '),255
ALLTIME_TEXT DB ' ALL TIMES HIGHSCORE',0
SCROLL_TEXT2 DB 21 DUP (' '),'FLIP WITH LEFT AND RIGHT ALT SHIFT OR CTRL KEYS',21 DUP (' ')
DB 'PUSH TABLE WITH SPACE',21 DUP (' ')
DB 'CONTROL SPRING WITH DOWN ARROW KEY OR MOUSE',21 DUP (' ')
DB 'WINNERS DO NOT USE DRUGS',21 DUP (' ')
DB 'P PAUSES GAME AND M TOGGLES INGAME MUSIC ON AND OFF',21 DUP (' ')
DB 'ESC EXITS AND SAVES NEW HIGHSCORES',21 DUP (' '),255
\
DIGITAL_TEXT DB ' DIGITAL ILLUSIONS',0
JACK_TEXT DB 'JACKPOT IS',0
BONUS_TEXT DB ' YOU HAVE XX BONUS',0 ;10
PLAY_TEXT DB ' PLAYER 8 BALL 8 ',0 ;8,18
INFO_TEXT DB 21 DUP (' ')
db ''
DB 21 DUP (1),255
playerstext db 'PLAYER 8',0 ;8=1 (L™S EKVATIONEN!)
BALLSTEXT DB 'BALL 8',0 ;8=1
hajjskar db 'HIGHSCORE PL X ',92,' ',93,0
stjaernor db '********************',0
;******************************************************************************
DATA ENDS
;******************************************************************************
;** **
;** C O D E **
;** **
;******************************************************************************
CODE SEGMENT PARA PUBLIC 'CODE'
ASSUME CS:CODE,DS:DATA
;*********************************** INITS ************************************
JUST_ONE_TIME_RESET_TABLE:
CALL SLACK_LIGHTS
RETN
RESET_VARS PROC NEAR
NIL AX
MOVE ES,DS
MOV DI,OFFSET SIFFRORNA
MOV CX,6
REP STOSW
MOV DI,OFFSET BONUSSIFFRORNA
MOV CX,6
REP STOSW
MOV DI,OFFSET TM_TOTAL
MOV CX,6
REP STOSW
MOV BALLHIGH,FALSE
MOVEBCD CASHPOTVAL,_500K
MOV TVFLAG,FALSE
MOV TRIPFLAG,FALSE
MOV CARFLAG,FALSE
MOV BOATFLAG,FALSE
MOV PLANEFLAG,FALSE
MOV HOUSEFLAG,FALSE
MOV TVCOUNTER,0
MOV TRIPCOUNTER,0
MOV CARCOUNTER,0
MOV BOATCOUNTER,0
MOV PLANECOUNTER,0
MOV HOUSECOUNTER,0
MOV BILLION_ENABLED,FALSE
mov bonusmultiplier,0
MOV BONUS_X,1
MOV WORD PTR BONUS_TEXT[10],'8 '
CALL RESETFLASHLIST
CALL SLACK_LIGHTS
; CALL KILL_FLASHOR ;DOT MATRIX FLASH RESET
call closegate1
lighton 7 ;sl„pp upp brickorna
call closegate3
lighton 8
call closegate4
lighton 9
call closegate5
lighton 10
call closegate6
endflash 1
lightflash 1,15 ;blinka med skill-lampan (ska det ligga h„r?)
;HŽR VAR DEN! ; mov paRTYFLASh,false
RETN
RESET_VARS ENDP
WHEN_NEW_GAME_RESET_TABLE:
MOV XxballE,FALSE
MOVA ES,DS
MOV DI,OFFSET CYCLONECOUNTERBCD
MOV CX,12/2
NIL AX
REP STOSW
MOV CYCLONECOUNTER,0
MOV TOP_THREE,FALSE
MOV ALL_SIX,FALSE
CALL SLACK_LIGHTS
CALL RESETFLASHLIST
CALL RESET_VARS
CALL UPDATE_P_STRUC_4_ALL_PLAYERS
CALL INITJACK
;cleara slutsiffrorna (di alla!) (F”r knacket allts†!!!)
push es
move es,ds
MOV di,offset last_text
mov al,' '
mov cx,8*2
rep stosb
MOV di,offset flashlast
mov al,' '
mov cx,8*2
rep stosb
pop es
RETN
WHEN_NEW_BALL_RESET_TABLE:
; CALL KILL_FLASHOR ;DOT MATRIX FLASH RESET
CALL SLACK_LIGHTS
CALL RESETFLASHLIST
CALL RESET_VARS
CALL P_STRUC_2_VARS
CALL closeGATE7
CALL closeGATE8
RETN
;******************************************************************************
DEMO_MUSIC PROC NEAR
CMP HIGHSCORE,TRUE
; JE OOPS_HIGH ;CP!
PLAYJINGLE S_NOHIGH
MOV AL,S_NOHIGH[2]
MOV LASTPRIORITY,AL
MOV LASTJINGLE,9 ;9=NOHIGH ;SVEN
RETN
DEMO_MUSIC ENDP
GAME_MUSIC PROC NEAR
PLAYJINGLE S_SPRING
MOV AL,S_SPRING+2
MOV LASTPRIORITY,AL
MOV LASTJINGLE,0
RETN
GAME_MUSIC ENDP
;******************************** LOOSE BALL **********************************
LOOSE_BALL PROC NEAR
MOV LOOSING,TRUE
MOV SCREENFORCE2,576-SH_LO+SPLH ;CP?
CMP HI_RES,TRUE
JNE NOTHIRES16
MOV SCREENFORCE2,576-SH_HI+SPLH ;CP?
NOTHIRES16:
SETBALLPOS 135,28,0,0,FALSE ;CP!!!!!!! LŽGG BOLLEN P<> BŽTTRE STŽLLE
mov holdstill,true
MOV ALLOWFLIP,FALSE ;KILL FLIPPERS!
MOV SPECIALMODE,FALSE
MOV CURRENT_PRIORITY,0
EFFECT LOSTBALL
MOV LASTJINGLE,emptyjingle
ADDTASK SOUNDRINNER
RETN
SOUNDRINNER:
WAITSYNCS 5
SOUNDEFFECT SRINNER,0
SUICIDE
_FLORPA:
MOV CS:LB6CNT,0 ;RESET F™RDR™JNINGS-RŽKNAREN
MOV ADDORPEK,OFFSET ADDOR ;STARTA MED SISTA NUFFRAN
MOV BONUSPEK,OFFSET BONUSSIFFRORNA+11
MOV SI,OFFSET BONUSSIFFRORNA ;SPARA BONUSSIFFRORNA
MOV DI,OFFSET TEMPSIFFRORNA
MOVE ES,DS
MOV CX,6
REP MOVSW
MOV DOTRUT,OFFSET DO_FLORPA
ADD BX,2
CMP WORD PTR [BX],0
JNE _NEXTp_5
MOV BX,0
_NEXTp_5:
MOV NEXT_A,BX
RETN
PLIPPA_SCORE:
mov si,offset siffrorna
mov bx,336*2/4+(320-12*16)/4 ;h”ger justerad!
MOVE ES,CS
CALL DWORD PTR ES:PEKOR
MOV SI,0
RETN
LB6CNT DW ?
DO_FLORPA:
INC CS:LB6CNT
CMP CS:LB6CNT,4 ;CPW!
JE LB6CNTOK
MOV SI,75
RETN
LB6CNTOK:
MOV CS:LB6CNT,0
DO_IT_AGAIN_AND_DO_IT_NOW:
MOV BX,BONUSPEK
MOV AL,[BX]
OR AL,AL ;IS DIGIT ZERO?
JZ DIGIT_IS_ZERO
DEC BYTE PTR [BX] ;RŽKNA NED BONUSEN
JNZ NO_WAITS_TODAY
IFZEROBCD BONUSSIFFRORNA
JNC NO_WAITS_TODAY
MOV CS:LB6CNT,-10 ;CPW!
NO_WAITS_TODAY:
MOV SI,ADDORPEK ;RŽKNA UPP POŽNGEN
MOV DI,OFFSET SIFFRORNA
CALL ADDSCOREBCD
SOUNDEFFECT S_SCORELJUD,0
JMP STEP_DONE
DIGIT_IS_ZERO:
;FLER SIFFROR?
INC ADDORPEK ;NEXT DIGIT IN POŽNGEN
CMP ADDORPEK,OFFSET ADDOR+12
JE NO_MORE_NUFFROR
DEC BONUSPEK ;NEXT DIGIT IN BONUS
JMP DO_IT_AGAIN_AND_DO_IT_NOW
STEP_DONE:
;SHOW BONUSSIFFRORNA & SIFFRORNA
MOV SI_siffror,OFFSET BONUSSIFFRORNA
MOV DI_siffror,7*2*SW/4-16*4/4 ;10 RADER NED, 8 (12-4) TECKEN IN P<> RADEN!!
MOV TABORT_DIOVRE_FNT,0
MOV PRINTTASK,OFFSET PRINT8_task
CALL PLIPPA_SCORE
MOV SI,75 ;AVINSTALLERA EJ!
RETN
NO_MORE_NUFFROR:
mov clear_box_start,7*2*SW/4
mov clear_box_bredd,16*(12-1)/4-16*4/4
mov clear_box_hojd,10
CALL clear_box2
MOV SI,0 ;AVINSTALLERA!
RETN
;******************************* ARNESSON
;*******************************
disa dw ?
playerQ db ?
hi_pos dw ?
_check_high:
MOV SISA,1
mov al,players
mov cs:playerQ,0
MOV CS:DISA,0
MOV DOTRUT,offset SPINTSEL_IN_HIGH
JMP NORMAL_END
spintsel_in_high:
LEA SI,PLAYER_AREA.P_SIFFRORNA
MOV CX,4
add si,cs:disa
add cs:disa,size player_struc
mov di,offset hi_score_list
inc cs:playerQ
mov al,cs:playerQ
cmp al,players
jna check_list
mov first_high,false
cmp highscore,true
je no_sad_jingle
mov current_priority,0
mov jinglejumpcnt,1
PLAYJINGLE S_GameOver
mov current_priority,0
mov no_demomusic,true
no_sad_jingle:
mov highscore,false
mov si,0
retn ;f„rdig!
check_list:
push cx
mov cx,12
mov bx,0
check_num:
mov al,[di+bx]
cmp [si+bx],al
jb not_beaten
ja beaten
inc bx
loop check_num
not_beaten:
mov bp,false
jmp poppera
beaten:
pop cx
mov cs:hi_pos,cx
;play the happy highscore jingle . . .
;But only the first time!!
cmp first_high,true
je noplay_of_this
mov first_high,true
mov current_priority,0
mov jinglejumpcnt,1
mov highscore,true
playjingle_PENETRATE S_GameOver2 ;(HiScore jingle)
noplay_of_this:
mov sisa,1
mov bp,true
jmp done_hi_check
poppera:
pop cx
add di,12+3+1 ;12 nuffror, 3 bokst„ver
loop check_list
done_hi_check:
mov si,1
cmp bp,true
jne dont_getit
;*****************
;Print 'highscore pl x ( )' and install key-reader TS
mov al,cs:playerQ
mov hajjskar[13],al
add hajjskar[13],'7'
mov dotrut,offset get_it_from_keyboard
mov hojd_1,13
mov tabort_diovre,0
mov tabort_diovre_fnt,0
mov hojd_add,bredd_1/4-sw*13*2/4
mov font_adr,offset font13
MOV AX,offset hajjskar
MOVE DI,sw*2*2/4
call PRINT_TEXT
;*****************
mov si,1
retn
dont_getit:
retn
get_it_from_keyboard:
;************ insert in list
push es
move es,ds
mov cx,cs:hi_pos
mov si,offset hi_score_list+(12+3+1)*3-1
mov di,offset hi_score_list+(12+3+1)*4-1
dec cx
jcxz pos4
mov ax,12+3+1
mul cx
mov cx,ax
std
rep movsb
pos4: sub di,(12+3+1)-1
cld
lea si,player_area.p_siffrorna
MOV CX,SIZE PLAYER_STRUC
MOV AL,CS:PLAYERQ
dec al
NIL AH
MUL CX
ADD SI,AX
mov cx,12
rep movsb ;mov in new hiscore
pop es
;di pekar d„r namnet ska petas in!!
mov cs:nof_chars_to_read,3
mov cs:place_hi,di
mov scan_code,-1 ;l„s ev. tidigare tangenttryck!
mov dotrut,offset read_keyboardet
mov si,1
retn
;*****************
place_hi dw ?
nof_chars_to_read dw ?
read_keyboardet:
push es
mov al,scan_code
cmp al,-1
je kvar_svar ;ej tryckt!
mov scan_code,-1
mov bx,offset alfa_keys
xlat
cmp al,0
je kvar_svar ;felaktigt tecken!
move es,ds
mov di,cs:place_hi
stosb
push ax
mov cs:place_hi,di
mov ax,3
sub ax,cs:nof_chars_to_read
mov di,offset hajjskar+16
add di,ax
pop ax
stosb ;skriv te sk„rm texten . .
dec cs:nof_chars_to_read
jnz kvar_svar
mov sisa,60 ;cpw!
mov dotrut,offset wait_a_little
pop es
mov hojd_1,13
mov tabort_diovre,0
mov tabort_diovre_fnt,0
mov hojd_add,bredd_1/4-sw*13*2/4
mov font_adr,offset font13
MOV AX,offset hajjskar
MOVE DI,sw*2*2/4
call PRINT_TEXT
;cleara namnet!
push es
move es,ds
mov al,' '
mov cx,3
mov di,offset hajjskar+16
rep stosb ;skriv te sk„rm texten . .
pop es
jmp dont_write_play
kvar_svar:
pop es
mov hojd_1,13
mov tabort_diovre,0
mov tabort_diovre_fnt,0
mov hojd_add,bredd_1/4-sw*13*2/4
mov font_adr,offset font13
MOV AX,offset hajjskar
MOVE DI,sw*2*2/4
call PRINT_TEXT
dont_write_play:
mov si,sisa
retn
wait_a_little:
dec si
cmp si,30 ;cpw!
jne dont_blame_me
push si
mov hojd_1,13
mov tabort_diovre,0
mov tabort_diovre_fnt,0
mov hojd_add,bredd_1/4-sw*13*2/4
mov font_adr,offset font13
MOV AX,offset stjaernor
MOVE DI,sw*2*2/4
call PRINT_TEXT
pop si
dont_blame_me:
cmp si,2
jnbe retta_oooo
mov dotrut,offset spintsel_in_high
mov si,1
retta_oooo:
retn
_loop_:
dec cs:looper
JZ NOJUMPER_tomorrow
add bx,4
mov bx,[bx]
MOV NEXT_A,BX
jmp [bx]
looper dw ?
_setloop:
NOJUMPER_tomorrow:
;reinstall loop val
mov ax,[bx+2]
mov cs:looper,ax
MOV SISA,1
mov dotrut,offset WAITRUT
jmp print_end
SHOWER DB ?
player_adr dw ?
_INIT_SCORE:
mov cs:player_adr,0
sub cs:player_adr,size player_struc
MOV PLAYERSTEXT[7],0+'7'
MOV AL,PLAYERS
MOV CS:SHOWER,AL
inc CS:SHOWER
MOV SISA,1
mov dotrut,offset WAITRUT
jmp normal_end
_SHOW_SCORE:
INC PLAYERSTEXT[7]
add cs:player_adr,size player_struc
DEC CS:SHOWER
JZ NOJUMPER
MOV SISA,1
mov dotrut,offset ShowIt
cmp CS:SHOWER,1
je normal_end
add bx,2
mov bx,[bx]
MOV NEXT_A,BX
RETN
NOJUMPER:
MOV SISA,1
mov dotrut,offset WAITRUT
jmp normal_end
ShowIt:
mov hojd_1,5
mov tabort_diovre,0
mov tabort_diovre_fnt,0
mov hojd_add,bredd_1/4-sw*5*2/4
mov font_adr,offset font5
MOV AX,offset PLAYERSTEXT
MOVE DI,sw*2*2/4
call PRINT_TEXT
; mov si,offset siffrorna
mov bx,cs:player_adr
LEA SI,PLAYER_AREA[BX].P_SIFFRORNA
mov bx,336*2/4+(320-12*16)/4 ;h”ger justerad!
MOVE ES,CS
CALL DWORD PTR ES:PEKOR
MOV SI,0
RETN
_END_OF_SPIN:
MOV SISA,1
MOV DOTRUT,OFFSET WAITRUT
PUSH BX
ADDTASK END_OF_SPIN
POP BX
JMP NORMAL_END
_TurnOffSpecialMode:
MOV SISA,1
MOV DOTRUT,OFFSET WAITRUT
mov specialmode,false
PUSH BX
ENDFLASH 32
LIGHTOFF 32 ;CP!? (SLŽCK MONEYMANIA-LAMPAN)
POP BX
mov current_priority,0
jmp Normal_End
_LIGHTFLASH:
MOV SISA,1
MOV DOTRUT,OFFSET WAITRUT
PUSH BX
LIGHTFLASH 32,3
POP BX
jmp Normal_End
_knacket:
mov dotrut,offset knackrut1
mov sisa,1
MOV PLAYER,1 ;F™R CHECK_XXBALL
jmp normal_end
;tid mellan knack samt antal knack . . .
knacktid=14 ;12 ;CPW!
nof_banks=15 ;CPW!
knackrut1:
PLAYJINGLE_PENETRATE S_endfig
MOV LASTJINGLE,62 ;TYST EFTER FULLGJORD PENETRERING
mov dotrut,offset knackrut2
;g”r text me sista nuffrerna!!
mov cl,players
nil ch
mov di,offset last_text
mov ah,' '
mov bx,10 ;n„st sista!
LEA SI,PLAYER_AREA[BX].P_SIFFRORNA
push es
move es,data
mov bx,0
make_last:
mov al,ds:[si]
add si,size player_struc
add al,'7'
stosw
mov word ptr offset [flashlast+bx],ax ;kopiera texten f”r senare blink
add bx,2
loop make_last
pop es
mov hojd_1,5
mov tabort_diovre,0
mov tabort_diovre_fnt,0
mov hojd_add,bredd_1/4-sw*5*2/4
mov font_adr,offset font5
MOV AX,offset last_text
MOVE DI,sw*2/4
call PRINT_TEXT
mov si,nof_banks
mov sisa,nof_banks
mov cs:timglas,knacktid
retn
timglas dw ?
knackrut2:
dec cs:timglas
jz no_ret
ret
no_ret:
push si
mov cs:timglas,knacktid
mov ax,last_pos
;ax=linje adress, ett steg=32 pixel=> 1 steg= 8 adr.(mcgab)
;(1 char=8*2 pix, 1 steg=2 char)
shl ax,3
mov hojd_1,5
mov tabort_diovre,0
mov tabort_diovre_fnt,0
mov hojd_add,bredd_1/4-sw*5*2/4
mov font_adr,offset font5
MOVE DI,sw*2*8/4
add di,ax
MOV AX,offset startext
call PRINT_TEXT
mov si,1
;knacka(????) fram en ny slutsiffra!
mov ax,slump_countern
mov dx,0
mov cx,10
div cx
;resten i de„ks e mellan n†ll † NI<4E>
CMP LAST_POS,DX
JNE ITS_ALRIGHT
NEG DX
ADD DX,9
ITS_ALRIGHT:
mov last_pos,dx
mov ax,last_pos
add ax,'7'
mov slutsiffra[0],al
sub ax,'7'
shl ax,3
mov hojd_1,5
mov tabort_diovre,0
mov tabort_diovre_fnt,0
mov hojd_add,bredd_1/4-sw*5*2/4
mov font_adr,offset font5
MOV AX_PRINT,offset slutsiffra
MOVE DI_PRINT,sw*2*8/4
add di_print,ax
MOV PRINTTASK,OFFSET PRINT_TEXT
pop si
dec si
cmp si,0
jne retta_nuda
;kolla om siffrorna st„mmer f”r n†en . . .
mov cl,players
nil ch
mov si,offset last_text
mov bx,last_pos
add bx,'7'
mov di,offset flashlast
move es,data
mov cs:alla_glada,false
READ_NUFFROR:
lodsw
cmp al,bl
jne gladgnu_tu
mov cs:alla_glada,true
add di,2
loop READ_NUFFROR
jmp ture_sventton_kravdes_har
gladgnu_tu:
mov ax,'**'
stosw
loop READ_NUFFROR
ture_sventton_kravdes_har:
cmp cs:alla_glada,true
je gladgnu
mov si,0
jmp retta_nuda ;-( ingen glad )-:
;Om javisst, spela glad gnu † flasha!
gladgnu:
MOV MATRIX_SPEED,3
MOV MATRIX_CNT,3
MOV MATRIX_ONOFF,TRUE
MOV MATRIX_IS_FLASHING,TRUE
mov hojd_1,5
mov tabort_diovre,0
mov tabort_diovre_fnt,0
mov hojd_add,bredd_1/4-sw*5*2/4
mov font_adr,offset font5
MOV AX,offset flashlast
MOVE DI,sw*2/4
call PRINT_TEXT
mov current_priority,0
PLAYJINGLE S_Knacket
MOV JINGLEJUMPCNT,1
mov current_priority,0
mov lastjingle,55
mov si,0
retta_nuda:
retn
alla_glada db ?
_CHECK_XXBALLS: ;OBS! TV<54> ING<4E>NGAR TILL DENNA RUTIN
;INPUT: LAST_TEXT, LAST_POS, PLAYER, PLAYERS
;OUTPUT: FT_PEKARE, PLAYER
TESTNEXTPL:
PUSH BX
MOV BL,PLAYER
NIL BH
SHL BX,1
ADD BX,OFFSET LAST_TEXT-2 ;bx pekar p† spelare n's slutsiffra
MOV AL,[BX]
MOV WORD PTR [BX],'XX' ;DESTROY HIM MY ROBOTS!
SUB AL,'7'
NIL AH
POP BX
CMP LAST_POS,AX
JE THIS_ONE ;HAN SKA F<> XXBALL!!!
INC PLAYER ;INGEN XXBALL F™R HONOM!
MOV AL,PLAYER
CMP AL,PLAYERS
JNA TESTNEXTPL
MOV BX,OFFSET after_xxballTS
MOV NEXT_A,BX
JMP [BX]
THIS_ONE:
MOV AL,PLAYER
ADD AL,'7' ;SEPEKOMPENSERING
MOV PLAYERSTEXT[7],AL
MOV XXBALLE,TRUE
MOV BX,OFFSET shoOt_AGAIN_Onts
MOV NEXT_A,BX
JMP [BX]
;*********************************
_KOLLA_XXBALL:
CMP XXBALLE,FALSE
JE HU_
PUSH BX
CALL VARS_2_P_STRUC ;STORE TABLE AND SCORE!
POP BX
CMP LIGHTSTATUS[31],TRUE ;LAUGH AGAIN?
JE LET_HIM_SHOOT_AGAIN ;MEGA-HOPP
MOV AL,PLAYER ;IS HE THE HIGHEST PLAYER?
CMP AL,PLAYERS
JE HIGHEST_PLAYER2
INC PLAYER ;CHANGE TO THE NEXT PLAYER!
JMP PLAYER_CHANGED2
HIGHEST_PLAYER2:
MOV BX,OFFSET AFTER_XXBALLTS
MOV NEXT_A,BX
JMP [BX]
PLAYER_CHANGED2:
MOV AL,PLAYER
ADD AL,'7' ;SEPEKOMPENSERING
MOV PLAYERSTEXT[7],AL
MOV BX,OFFSET CHECK_XXBALLTS
MOV NEXT_A,BX
JMP [BX]
;**********
_CHANGE_PLAYER:
PUSH BX
CMP HOLDBONUSFLAG,TRUE
JNE NOT_HB_TRUE
MOV SI,OFFSET TEMPSIFFRORNA ;HOLD THE BONUS!
MOV DI,OFFSET BONUSSIFFRORNA
MOVE ES,DS
MOV CX,6
REP MOVSW
NOT_HB_TRUE:
CALL VARS_2_P_STRUC ;STORE TABLE AND SCORE!
pop bx
CMP LIGHTSTATUS[31],TRUE ;LAUGH AGAIN?
JE LET_HIM_SHOOT_AGAIN
push bx
MOV AL,PLAYER ;IS HE THE HIGHEST PLAYER?
CMP AL,PLAYERS
JE HIGHEST_PLAYER
INC PLAYER ;CHANGE TO THE NEXT PLAYER!
JMP PLAYER_CHANGED
HIGHEST_PLAYER:
INC BALLS[11]
MOV AL,NO_OF_BALLS
CMP BALLS[11],AL
JA NO_MORE_BALLS
MOV PLAYER,1 ;NEXT PLAYER IS FIRST PLAYER!
MOV AL,BALLS[11]
ADD AL,'7' ;SEPEKOMPENSERING
MOV BALLSTEXT[5],AL
PLAYER_CHANGED:
MOV AL,PLAYER
ADD AL,'7' ;SEPEKOMPENSERING
MOV PLAYERSTEXT[7],AL
ADDTASK NEW_BALL_TASK ;TO GAME FROM GAME
POP BX
HU_: ADD BX,2 ;TASKSYTEM, HOPPA TILL NŽSTA/AVSLUT
CMP WORD PTR [BX],0
JNE _NEXTp_7
MOV BX,0
MOV NEXT_A,BX
RETN
_NEXTp_7:
MOV NEXT_A,BX
JMP [BX]
;GNUERNA
LET_HIM_SHOOT_AGAIN: ;2 ING<4E>NGAR!
MOV BX,OFFSET shoot_again_onTS
MOV NODOTCOUNT,0
UPDAT_SCORE
JMP [BX]
_NEW_BALL2:
PUSH BX
ADDTASK NEW_BALL_TASK ;TO GAME FROM GAME
POP BX
JMP HU_
NO_MORE_BALLS:
CALL VARS_2_P_STRUC ;STORE LAST PLAYER'S SCORE TOO!
POP BX
MOV BX,OFFSET out_of_ballsTS
MOV NEXT_A,BX
JMP [BX]
RETN
_2_DEMO_MODE:
ADDTASK TO_DEMO_FROM_GAME
JMP HU_
zeroscore:
push es
move es,ds
mov cx,12/2
mov ax,0
mov di,offset siffrorna
rep stosw
pop es
retn
TO_DEMO_FROM_GAME:
MOV PLAYERS_CP,TRUE
CALL GO_DEMO_MODE ;TO DEMO FROM GAME
MOV SCREENFORCE,BANH-(SH_LO-SPLH)
CMP HI_RES,TRUE
JNE NOTHIRES17
MOV SCREENFORCE,BANH-(SH_HI-SPLH)
NOTHIRES17:
MOV CARMEN,-1
; CALL DEMO_MUSIC ;CP! DET SKALL REDAN VARA GJORT!
call zeroscore
CALL SLACK_LIGHTS
MOV ADDPLAYERS,TRUE
SUICIDE
;TUBORG!
COMMENT\
;CP! RENSA MATRIX OCH RITA SLUTSIFFROR!
ADDTASK KNACK_SEKVENS
SUICIDE
KNACK_SEKVENS:
;CP! KNACKA!
KNACK_KLART:
; ADDTASK LYCKY_GUY ;CP! OM N<>GON FICK EN X-BALL
ADDTASK AFTER_KNACK
SUICIDE
AFTER_KNACK:
;CP! KOLLA OM N<>N FICK HIGHSCORE!
HIGH_READY:
ADDTASK SHOW_SCORES
SUICIDE
SHOW_SCORES: ;NOTE: TRIGGED BY AFTER_KNACK--- AND SHOW_GAME_OVER---
;CP! RŽKNARE1 = 0: KOLLA OM ALLA VISADE 2 GGR.
; VISA SEDAN POŽNG F™R SPELARE (SPELARE-RŽKNARE).
; = CA 2*60: ADDTASK SHOW_GAME_OVER.
; ADDTASK SHOW_GAME_OVER
ADDTASK TO_DEMO_FROM_GAME
SUICIDE
SHOW_GAME_OVER:
;CP! VISA "GAME OVER"
ADDTASK SGO_TASK2
SUICIDE
SGO_TASK2:
WAITSYNCS 45 ;CPW!
ADDTASK SHOW_SCORES
SUICIDE
\
LOOSE_BALL ENDP
;******************************** NEW_BALL ************************************
NEW_BALL_TASK:
WAITSYNCS 60
CALL NEW_BALL
RETN ;PGA NEWBALL
NEW_BALL PROC NEAR ;ENDA SŽTTET ATT F<> UT EN BOLL P<> BANAN!
MOV LOOSING,FALSE
MOV BALL_DOWN,FALSE
MOV I_UTSKJUT,TRUE
CALL WHEN_NEW_BALL_RESET
CALL WHEN_NEW_BALL_RESET_TABLE
MOV HOLDSTILL,TRUE
SETBALLPOS STARTX-5-15,STARTY-5,0,0,FALSE
MOV SCREENFORCE2,-1 ;500
CMP ADDPLAYERS,TRUE
JE NOSP
PLAYJINGLE S_SPRING
NOSP:
MOV LASTJINGLE,0
MOV SCORECHANGED,FALSE
CMP ADDPLAYERS,TRUE
JE ITS_FROM_DEMO
CALL NEW_BALL_PART_TWO
RETN
ITS_FROM_DEMO:
ADDTASK SNART_NEW_BALL
RETN
NEW_BALL_PART_TWO:
ADDTASK SOUNDNEWBALL
ADDTASK SETBALL
ADDTASK SOUNDBRICKUPP
MOV ALLOWFLIP,TRUE
MOV TILTFLAG,FALSE
MOV TILTCOUNTER,0
MOV SCORECHANGED,FALSE
RETN
SOUNDBRICKUPP:
WAITSYNCS 5
SOUNDEFFECT SBRICKUPP,0
SUICIDE
SOUNDNEWBALL:
WAITSYNCS 50
SOUNDEFFECT SNEWBALL,0
SUICIDE
SETBALL:
WAITSYNCS 80
SETBALLPOS STARTX-5,STARTY-5,10,0,FALSE
MOV HOLDSTILL,FALSE
MOV SCREENFORCE2,-1
SUICIDE
;FIAT UNO
NEW_BALL ENDP
MOTA_BORT_INACTIVE_SLINGAN:
;OBS! AVINSTALLERA DENNA GENOM "MOV I_UTSKJUT,FALSE"
MOV NODOTCOUNT,0
; UPDAT_INFOBAR ;CP? JOHAN F<>R FIXA DETTA!
CMP I_UTSKJUT,FALSE
JE TA_BORT_MEJ
RETN
TA_BORT_MEJ:
SUICIDE
P_STRUC_2_VARS PROC NEAR ;INPUT:PLAYER
MOV BL,PLAYER
DEC BL
NIL BH
MOV AX,SIZE PLAYER_STRUC
MUL BX
MOV BX,AX ;BX=INDEX TO CORRECT PLAYER DATA IN PLAYER_AREA
MOVEBCD SIFFRORNA,PLAYER_AREA[BX].P_SIFFRORNA
MOVEBCD BONUSSIFFRORNA,PLAYER_AREA[BX].P_BONUSSIFFRORNA
MOVEBCD CYCLONECOUNTERBCD,PLAYER_AREA[BX].P_CYCLONECOUNTERBCD
MOVA CYCLONECOUNTER,PLAYER_AREA[BX].P_CYCLONECOUNTER
MOVAL TOP_THREE,PLAYER_AREA[BX].P_TOP_THREE
MOVAL ALL_SIX,PLAYER_AREA[BX].P_ALL_SIX
CMP TOP_THREE,FALSE
JE NO_PRIZES
MOV TVFLAG,2
MOV TRIPFLAG,2
MOV CARFLAG,2
LIGHTON 13
LIGHTON 14
LIGHTON 15
CMP ALL_SIX,FALSE
JE NO_PRIZES
MOV BOATFLAG,2
MOV HOUSEFLAG,2
MOV PLANEFLAG,2
LIGHTON 28
LIGHTON 29
LIGHTON 30
NO_PRIZES:
RETN
P_STRUC_2_VARS ENDP
VARS_2_P_STRUC PROC NEAR ;INPUT: PLAYER
;2 ENTRIES TO THIS RUT
MOV BL,PLAYER
DEC BL
NIL BH
MOV AX,SIZE PLAYER_STRUC
MUL BX
MOV BX,AX ;BX=INDEX TO CORRECT PLAYER DATA IN PLAYER_AREA
VARS_2_P_STRUC_2: ;USED BY WHEN_NEW_GAME_RESET!
MOVEBCD PLAYER_AREA[BX].P_SIFFRORNA,SIFFRORNA
MOVEBCD PLAYER_AREA[BX].P_BONUSSIFFRORNA,BONUSSIFFRORNA
MOVEBCD PLAYER_AREA[BX].P_CYCLONECOUNTERBCD,CYCLONECOUNTERBCD
MOVA PLAYER_AREA[BX].P_CYCLONECOUNTER,CYCLONECOUNTER
MOVAL PLAYER_AREA[BX].P_TOP_THREE,TOP_THREE
MOVAL PLAYER_AREA[BX].P_ALL_SIX,ALL_SIX
RETN
VARS_2_P_STRUC ENDP
;******************************** TILT TILT TILT *****************************
HE_TILTED PROC NEAR
MOV ALLOWFLIP,FALSE
PLAYJINGLE S_TILT
MOV LASTJINGLE,EMPTYJINGLE
MOV BX,OFFSET tiltTS
CALL DO_MATRIX
CALL RESETFLASHLIST
CALL SLACK_LIGHTS
RETN
HE_TILTED ENDP
HE_ALMOST_TILTED PROC NEAR
PLAYJINGLE S_DANGER
RETN
ENDP
;********************************* CHECK SHIFTKEYS ****************************
CHECK_SHIFTKEYS PROC NEAR
CMP SHIFTPRESSED,TRUE
JNE NO_SHIFT
MOV SHIFTPRESSED,FALSE
NO_SHIFT:
RETN
CHECK_SHIFTKEYS ENDP
;******************************** GATES ROUTINES ******************************
opengate1:
mov si,offset gate1o
jmp gogate1
closegate1:
mov si,offset gate1c
gogate1:
mova es,mask2_2
mov di,40*96
mov cx,25
mov dx,3
call MOVE_mask_DATA
retn
opengate2:
mov si,offset gate2o
jmp gogate2
closegate2:
mov si,offset gate2c
gogate2:
mova es,mask1_2
mov di,40*305+272/8+1
mov cx,34
mov dx,2
call MOVE_mask_DATA
retn
opengate3:
mov si,offset gate3o
jmp gogate3
closegate3:
mov si,offset gate3c
gogate3:
mova es,mask1_2
mov di,136/8+40*227
mov cx,16
mov dx,2
call MOVE_mask_DATA
retn
opengate4:
mov si,offset gate4o
jmp gogate4
closegate4:
mov si,offset gate4c
gogate4:
mova es,mask1_2
mov di,136/8+40*247
mov cx,16
mov dx,1
call MOVE_mask_DATA
retn
opengate5:
mov si,offset gate5o
jmp gogate5
closegate5:
mov si,offset gate5c
gogate5:
mova es,mask1_2
mov di,32/8+266*40
mov cx,16
mov dx,1
call MOVE_mask_DATA
retn
opengate6:
mov si,offset gate6o
jmp gogate6
closegate6:
mov si,offset gate6c
gogate6:
mova es,mask1_2
mov di,24/8+286*40
mov cx,16
mov dx,2
call MOVE_mask_DATA
retn
opengate7:
mov si,offset gate7o
jmp gogate7
closegate7:
mov si,offset gate7c
gogate7:
mova es,mask2_2
mov di,22+163*40
mov cx,20
mov dx,4
ADD SI,DX
call MOVE_mask_DATA_b
retn
opengate8:
mov si,offset gate8o
jmp gogate8
closegate8:
mov si,offset gate8c
gogate8:
mova es,mask1_2
mov di,511*40
mov cx,14
mov dx,4
ADD SI,DX
call MOVE_mask_DATA_b
retn
dropb1:
CALL ADDMONEY
CMP LIGHTSTATUS[7],FALSE
JE DUMRET
EFFECT TOUCHB
soundeffect s_touch2,0
call opengate3
lightoff 7
CMP LIGHTSTATUS[8],FALSE
JNE DUMRET
ADDTASK UP_B
retn
dropb2:
CALL ADDMONEY
CMP LIGHTSTATUS[8],FALSE
JE DUMRET
EFFECT TOUCHB
soundeffect s_touch2,0
call opengate4
lightoff 8
CMP LIGHTSTATUS[7],FALSE
JNE DUMRET
ADDTASK UP_B
retn
UP_B: WAITSYNCS 60
SOUNDEFFECT SBRICKUPP,0
LIGHTON 7
LIGHTON 8
CALL CLOSEGATE3
CALL CLOSEGATE4
SUICIDE
dropC1:
CALL ADDMONEY
CMP LIGHTSTATUS[9],FALSE
JE DUMRET
EFFECT TOUCHC
soundeffect s_touch2,0
call opengate5
lightoff 9
CMP LIGHTSTATUS[10],FALSE
JNE DUMRET
ADDTASK UP_C
retn
dropC2:
CALL ADDMONEY
CMP LIGHTSTATUS[10],FALSE
JE DUMRET
EFFECT TOUCHC
soundeffect s_touch2,0
call opengate6
lightoff 10
CMP LIGHTSTATUS[9],FALSE
JNE DUMRET
ADDTASK UP_C
retn
UP_C: WAITSYNCS 60
SOUNDEFFECT SBRICKUPP,0
LIGHTON 9
LIGHTON 10
CALL CLOSEGATE5
CALL CLOSEGATE6
SUICIDE
;************************* SUPER MODES CHECKS *********************************
;******************************************************************************
;***************************** BRICKOR & KNAPPAR ******************************
;******************************************************************************
dropa1:
CALL ADDMONEY
soundeffect s_touch2,0
cmp lightstatus[3],true
je doret1
lightflash 2,6
mov lightstatus[2],true
addtask flasha2
effect dollartouch
retn
dropa2:
CALL ADDMONEY
soundeffect s_touch2,0
cmp lightstatus[2],true
jne doret2
doret1: lightflash 2,2
lightflash 3,2
addtask flasha23
effect dollartouch2
endflash 18
invertedsyncedflash 18,sfspeed,syncflasher
mov lightstatus[18],true
call opengate1 ;open gate to spin wheel
retn
doret2: lightflash 3,6
mov lightstatus[3],true
addtask flasha3
effect dollartouch
retn
flasha2:
waitsyncs 25
endflash 2
lighton 2
suicide
flasha3:
waitsyncs 25
endflash 3
lighton 3
suicide
flasha23:
waitsyncs 60
endflash 2
lightoff 2
endflash 3
lightoff 3
suicide
;******************************************************************************
;********************************** LOWER *************************************
;******************************************************************************
;*********************************** GAME ON **********************************
CLOSE1: ;GAME ON
CMP LASTAREA,OFFSET open1
JNE NOT_GAME_ON
call closegate2
MOV ADDPLAYERS,FALSE
PLAYJINGLE S_MAIN
MOV LASTJINGLE,1
MOV BX,OFFSET PARTY_OFFTS
CALL DO_MATRIX
MOV I_UTSKJUT,FALSE ;TILL<4C>TER INACTIVE-SLINGAN (DOTMATRIX)
MOV PARTYFLASH,FALSE
NOT_GAME_ON:
RETN
close4:
call closegate8
retn
;***************************** SPRING INVALID *********************************
open1: ;SPRING INVALID
MOV SPRING_VALID,FALSE
call opengate2
RETN
;******************************* SPRING VALID *********************************
BYGEL28: ;SPRING VALID
MOV SPRING_VALID,TRUE
RETN
;******************************************************************************
GOT_THE_BILLION:
MOV BILLION_ENABLED,FALSE
EFFECT BILLION
ENDFLASH 27
LIGHTFLASH 27,4
ADDTASK TURNOFF_BILLION
mov holdstill,TRUE
setballpos 4,529,0,0,false
RETN
TURNOFF_BILLION:
waitsyncs 5*50 ;cpw!
ENDFLASH 27
LIGHTOFF 27
LIGHTOFF 13
LIGHTOFF 14
LIGHTOFF 15
LIGHTOFF 28
LIGHTOFF 29
LIGHTOFF 30
MOV TVFLAG,FALSE
MOV TRIPFLAG,FALSE
MOV CARFLAG,FALSE
MOV BOATFLAG,FALSE
MOV PLANEFLAG,FALSE
MOV HOUSEFLAG,FALSE
MOV TOP_THREE,FALSE
MOV ALL_SIX,FALSE
mov y_hast,-3500
SOUNDEFFECT SNEWBALL,0
MOV HOLDSTILL,FALSE
SUICIDE
DONT_NOW:
mov holdstill,TRUE
setballpos 4,529,0,0,false
ADDTASK SLAPP_HONOM
RETN
SLAPP_HONOM:
WAITSYNCS 30
mov y_hast,-3500
SOUNDEFFECT SNEWBALL,0
MOV HOLDSTILL,FALSE
SUICIDE
gropB: call opengate8
CMP SPECIALMODE,TRUE
JE DONT_NOW
CMP TILTFLAG,TRUE
JE DONT_NOW
CMP BILLION_ENABLED,TRUE
JE GOT_THE_BILLION ;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
mov holdstill,true
cmp lightstatus[17],0
jnz noclose1
call closegate1 ;st„ng till spin wheel
noclose1:
setballpos 4,529,0,0,false
;spin wheel (lights 19-26)
playjingle s_mystery
mov nextspintime,offset SPINtimes_hi
cmp hi_res,true
je nohej
mov nextspintime,offset SPINtimes
nohej:
mov bx,nextspintime
mova SPINcounter,[bx]
mov bx,offset rensa2TS
call do_matrix
mov al,19
add al,spinlight
lightoff al
cmp lightstatus[17],1
jne nofusk
mov al,0 ;fuska s† att lampan stannar p† r„tt sak!
cmp tvflag,1
je dosp
mov al,1
cmp tripflag,1
je dosp
mov al,2
cmp carflag,1
je dosp
mov al,6
cmp boatflag,1
je dosp
mov al,5
cmp houseflag,1
je dosp
mov al,4
cmp planeflag,1
je dosp
nofusk: mov al,byte ptr slump_countern
dosp: cmp hi_res,true
jne noth
sub al,2
noth:
mov spinlight,al
and spinlight,7
MOV SCREENFORCE2,270
CMP HI_RES,TRUE
JNE NOTHIRES35
MOV SCREENFORCE2,220
NOTHIRES35:
retn
nextSPIN:
add nextspintime,2
mov bx,nextspintime
cmp word ptr [bx],-1
je last_spin
mova spincounter,[bx]
mov al,19
add al,spinlight
lightoff al
inc spinlight
and spinlight,7
mov al,19
add al,spinlight
lighton al
mov al,12
mul spinlight
add ax,offset spinscores
mov spinscoreptr,ax ;addressen till current po„ng
mov bx,offset spinTS
call do_matrix
retn
last_spin:
mov bx,offset flashmatrixTS
call do_matrix
cmp lightstatus[17],1
jne no_prize_to_collect
addtask you_win
retn
no_prize_to_collect:
addtask end_of_spin
retn
end_of_spin:
waitsyncs 100 ;cpw!
mov screenforce2,-1
cmp spinscoreptr,offset spinscores
jne adds
mov spinscoreptr,offset tjufemtusen
adds:
mov si,spinscoreptr
mov di,offset siffrorna
call addscorebcd
mov bx,offset rensaTS
call do_matrix
mov holdstill,false
mov y_hast,-3500*TT/NN
endflash 18
lightoff 18
suicide
you_win:
cmp top_three,true
je gottopthree
cmp tvflag,2
je won_tv
endflash 13
lighton 13
mov tvflag,2
MOV CURRENT_PRIORITY,0
effect youwinTV
jmp endofyw
won_tv:cmp tripflag,2
je won_trip
endflash 14
lighton 14
mov tripflag,2
MOV CURRENT_PRIORITY,0
effect youwinTRIP
jmp endofyw
won_trip:
endflash 15
lighton 15
ENDFLASH 17
LIGHTOFF 17
mov CARflag,2
MOV CURRENT_PRIORITY,0
effect youwinCAR
syncedFLASH 16,sfspeed,syncflasher
MOV LIGHTSTATUS[16],1 ;ENABLE JACKPOT
MOV JP_COUNTER,JP_TIME
mov top_three,true
call closegate1 ;st„ng till spin wheel
jmp endofyw
endofyw:
suicide
gottopthree:
cmp BOATflag,2
je won_BOAT
endflash 28
lighton 28
mov BOATflag,2
MOV CURRENT_PRIORITY,0
effect youwinBOAT
jmp endofyw
won_BOAT:
cmp HOUSEflag,2
je won_HOUSE
endflash 29
lighton 29
mov HOUSEflag,2
MOV CURRENT_PRIORITY,0
effect youwinHOUSE
jmp endofyw
won_HOUSE:
endflash 30
lighton 30
ENDFLASH 17
LIGHTOFF 17
mov PLANEflag,2
MOV CURRENT_PRIORITY,0
effect youwinPLANE
; LIGHTFLASH 16,10
; MOV LIGHTSTATUS[16],1 ;ENABLE JACKPOT
; MOV JP_COUNTER,JP_TIME
mov all_six,true
call closegate1 ;st„ng till spin wheel
jmp endofyw
LOCK_THE_BALL:
LIGHTON 6
SYNCEDFLASH 27,SFSPEED,SYNCFLASHER
EFFECT SHOOTTHEBALL
MOV LASTJINGLE,0 ;EFTER BILLION LIT SKA DEN SPELA S_SPRING
SETBALLPOS STARTX,STARTY,10,0,FALSE
mov holdstill,false
MOV CURRENT_PRIORITY,0
MOV LASTJINGLE,0
CALL OPENGATE1 ;™PPNA TILL SPIN WHEEL
MOV BILLION_ENABLED,TRUE
RETN
gropA: mov holdstill,true
CMP SPECIALMODE,TRUE
JE RELEASE_HIM
CMP ALL_SIX,TRUE
JE LOCK_THE_BALL
CALL JACKADD
cmp cash5counter,0
jnz cash_times_5
effect cashpot
go_cashpot:
addtask release_ball
retn
cash_times_5:
mov cash5counter,10 ;st„ng av cash5lampan
mov cx,5
addcash:
addbcd cashpot5val,cashpotval
loop addcash
effect cashpot5
jmp go_cashpot
release_ball:
mov holdstill,true
SETBALLPOS 103,233,0,0,FALSE
waitsyncs 200-40
lighton 6
addtask basil_fawlty
mova es,ds
mov di,offset cashpot5val
mov cx,6
nil ax
rep stosw
suicide
basil_fawlty: ;old chap
waitsyncs 40
CALL RELEASE_IT
suicide
RELEASE_HIM:
MOV HOLDSTILL,TRUE
LIGHTON 6
ADDTASK SLAPP2
RETN
SLAPP2:
SETBALLPOS 103,233,0,0,FALSE
WAITSYNCS 30
CALL RELEASE_IT
SUICIDE
RELEASE_IT:
lightoff 6
SOUNDEFFECT SGROP,0
SETBALLPOS 103,233,100*TT/NN,1700*TT/NN,FALSE
mov holdstill,false
RETN
bygel5:
CALL CASHADD
CALL ADDMONEY2
effect bygelsetC ;he's on the right ramp
mov CARcounter,CAR_time
call opengate7
CMP JP_COUNTER,0
JZ NO_JP2
MOV JP_COUNTER,1 ;S<> ATT LAMPAN SLOCKNAR VID NŽSTA DOWNCOUNT
EFFECT JACKPOT
CALL INITJACK
MOV SJP_COUNTER,SJP_TIME
LIGHTFLASH 5,10
PLAYJINGLE SJINGLE3
NO_JP2:
mov TVcounter,TV_time
retn
endcash5:
endflash 12
lightoff 12
retn
bygel7: ;clockwise ramp
CALL CASHADD
CALL JACKADD
CALL ADDMONEY2
effect bygelsetE
CMP SJP_COUNTER,0
JZ NO_SJP7
EFFECT S_JACKPOT
MOV SJP_COUNTER,1 ;S<> ATT DEN SLŽCKS VID NŽSTA DOWNCOUNT
NO_SJP7:
mov cash5counter,cash5_time
endflash 12
invertedsyncedflash 12,sfspeed,syncflasher ;cash*5 enabled
CMP CARCOUNTER,0
JZ NOCAR
cmp carFLAG,1
jAE noCAR
mov CARcounter,0
mov CARflag,1
effect CARlit
syncedFLASH 15,sfspeed,syncflasher
cmp tripflag,0
jz dumret
cmp tvflag,0
jz dumret
invertedsyncedflash 17,sfspeed,syncflasher
mov lightstatus[17],1
call opengate1
retn
noCAR:
cmp PLANEflag,0
jnz noHOUSE2
cmp CARcounter,0
jz noHOUSE2
CMP TOP_THREE,TRUE
JNE NOHOUSE2
mov CARcounter,0
cmp all_six,true
je nohouse2
jmp show_where_plane
noHOUSE2:
cmp MBcounter,0
jz RAISING_MILLIONS
cmp bonusmultiplier,6
je DUMRET
inc bonusmultiplier
MOV BL,BONUSMULTIPLIER
NIL BH
dec bl
SHL BX,1
mov al,current_priority ;GNU
cmp al,byte ptr sjingle2+2 ;GNU
ja noeff ;GNU
mov bx,BONUS_ANIMS[BX]
call do_matrix
playjingle sjingle2
noeff: mov al,bonusmultiplier
dec al
MOV BX,OFFSET BONUSTABLE
XLATB
MOV BONUS_X,AL
CMP AL,10
MOV BONUS_TEXT[10],' '
JNE NOTB10
MOV BONUS_TEXT[10],'8'
XOR AL,AL
NOTB10:
ADD AL,'7'
MOV BONUS_TEXT[11],AL
mov al,bonusmultiplier
add al,32
lighton al
RETN
RAISING_MILLIONS:
CMP CARCOUNTER,0
JZ DUMRET
INC RM[5]
INC BYTE PTR RAISING_M[5+2]
EFFECT RAISING_M
RETN
bygel11:
effect bygelsetI
cmp lastarea,OFFSET bygel12
jne dumret
;he did the reverse loop
cmp BOATcounter,0
jz noBOAT
CMP BOATflag,0
JNZ noBOAT
mov BOATcounter,0
mov BOATflag,1
effect BOATlit
syncedFLASH 28,sfspeed,syncflasher
cmp HOUSEflag,0
jz dumret
cmp PLANEflag,0
jz dumret
invertedsyncedflash 17,sfspeed,syncflasher
mov lightstatus[17],1
call opengate1
retn
noBOAT:
cmp HOUSEcounter,0
jz noHOUSE
cmp HOUSEflag,0
jnz noHOUSE
mov HOUSEflag,1
effect HOUSElit
invertedsyncedflash 29,sfspeed,syncflasher
cmp PLANEflag,0
jz dumret
cmp BOATflag,0
jz dumret
invertedsyncedflash 17,sfspeed,syncflasher
mov lightstatus[17],1
call opengate1
retn
noHOUSE:
retn
bygel12:
CALL ADDMONEY2
effect bygelsetJ
cmp lastarea,offset bygel11
jne dumret
;he did the loop...
CMP LIGHTSTATUS[11],0
JZ NOXB
EFFECT EXTRA_BALL
ENDFLASH 11
LIGHTOFF 11
LIGHTON 31
NOXB:
cmp PLANEcounter,0
jz noPLANE
CMP PLANEflag,0
JNZ noPLANE
mov PLANEcounter,0
mov PLANEflag,1
effect PLANElit
syncedFLASH 30,sfspeed,syncflasher
cmp HOUSEflag,0
jz dumret
cmp BOATflag,0
jz dumret
invertedsyncedflash 17,sfspeed,syncflasher
mov lightstatus[17],1
call opengate1
retn
noPLANE:
call closegate7 ;v„xla till v„nster bana
mov MBcounter,MB_time
mov TRIPcounter,TRIP_time
retn
close3:
retn
bygel10:
effect bygelsetH
cmp lastarea,offset close3
jne dumret
CALL JACKADD
CALL CASHADD
CALL ADDMONEY2
CALL ANOTHER_SKILL
cmp TVcounter,0 ;he did a skill shot
jz notTV
cmp all_six,true
je dumret
cmp top_three,true
je show_where_boat
CMP TVFLAG,0
JNZ NOTTV
mov TVcounter,0
mov TVflag,1
effect TVlit
syncedFLASH 13,sfspeed,syncflasher
cmp carflag,0
jz dumret
cmp TRIPflag,0
jz dumret
invertedsyncedflash 17,sfspeed,syncflasher
mov lightstatus[17],1
call opengate1
retn
show_where_boat:
CMP BOATflag,0
jnz dumret
mov bx,offset liteprize_rightTS
call do_matrix
mov boatcounter,boat_time
retn
show_where_house:
CMP HOUSEflag,0
jnz dumret
mov bx,offset liteprize_rightTS
call do_matrix
mov HOUSEcounter,hOUse_time
retn
show_where_plane:
CMP PLANEflag,0
jnz dumret
mov bx,offset liteprize_leftTS
call do_matrix
mov PLANEcounter,PLANE_time
retn
notTV:
cmp TRIPcounter,0
jz noTRIP
cmp all_six,true
je noTRIP
cmp top_three,true
je show_where_house
mov TRIPcounter,0
cmp TRIPflag,0
jnz noTRIP
mov TRIPflag,1
effect TRIPlit
invertedsyncedFLASH 14,sfspeed,syncflasher
cmp carflag,0
jz dumret
cmp tvflag,0
jz dumret
invertedsyncedflash 17,sfspeed,syncflasher
mov lightstatus[17],1
call opengate1
retn
noTRIP:
RETN
another_skill:
ADDBCD SKILLCOUNTER,ETTA
INC CYCLONECOUNTER
cmp cyclonecounter,1
je another_skill
MOV AX,CYCLONECOUNTER
MOV BL,6
DIV BL
OR AH,AH
JZ MONEY_MANIA
CMP AL,1
JB NO_PUT
JE NEXT_IS_XB
INC AL
MUL BL
mov bx,offset SKILLTEXT+16 ;vilken text † stoppa in v„rdet i
CMP AX,100
JB NOIB
INC BX
NOIB: Call Put_In_Text
NO_PUT:
EFFECT SKILLSHOT
retn
money_mania:
CMP AL,1
JE N_MM
CMP AL,2
JE X_BALL
TEST AL,1
JNZ LT_MM
N_MM:
EFFECT MONEYMANIA
MOV TURBOMODE,TRUE
MOV SPECIALMODE,TRUE
MOV LOOPS_N_TRAPS,FALSE
lighton 32
retn
LT_MM:
EFFECT MONEYMANIA2
MOV TURBOMODE,TRUE
MOV SPECIALMODE,TRUE
MOV LOOPS_N_TRAPS,TRUE
lighton 32
retn
X_BALL:
PLAYJINGLE SJINGLE19
invertedsyncedFLASH 11,sfspeed,syncflasher
MOV LIGHTSTATUS[11],1
RETN
NEXT_IS_XB:
EFFECT SKILLSHOT_XB
RETN
;*****************************
;Input: Ax= NextR„knare Bx=offset till texten
Put_In_Text:
mov di,2
mov cx,3
loopen_lejf:
push cx
mov dx,0
mov cx,10
div cx
cmp dx,0
jne nozero
cmp di,0
jne nozero
mov dx,'*'-'7'
nozero:
add dx,'7'
mov [bx][di],dl
pop cx
dec di
loop loopen_lejf
retn
;*****************************
;******************************************************************************
;*********************************** UPPER ************************************
;******************************************************************************
bygel1:
effect bygelsetA
soundeffect sbygel1,20h
retn
bygel2:
effect bygelsetA
soundeffect sbygel1,20h
retn
bygel3:
effect bygelsetB
soundeffect sbygel2,0
retn
bygel4:
effect bygelsetB
soundeffect sbygel2,0
retn
bygel8:
effect bygelsetF
retn
bygel9:
effect bygelsetG
retn
bygel13:
effect bygelsetK
retn
BYGEL6B:
CALL JACKADD
RETN
BYGEL6:
CALL CASHADD
effect bygelsetD
CMP LOOP_MILLION_COUNTER,0
MOV LOOP_MILLION_COUNTER,LM_TIME
JZ NO_MILLION
EFFECT LOOPMILLION
NO_MILLION:
CMP LIGHTSTATUS[17],1
JNE NO_FORVANTAN
PLAYJINGLE SJINGLE21 ;DU KOMMER ATT VINNA ETT PRIS
NO_FORVANTAN:
ENDFLASH 4
syncedFLASH 4,sfspeed,syncflasher
RETN
;******************************************************************************
UPDATE_COUNTERS PROC NEAR
downcount SJP_COUNTER,NO_SJP
CMP SJP_COUNTER,2*60
JNE NOTSJP2
ENDFLASH 5
LIGHTFLASH 5,2
JMP NOTSJP2
NO_SJP: ENDFLASH 5
LIGHTOFF 5
RETN
NOTSJP2:
downcount JP_COUNTER,NO_JP
CMP JP_COUNTER,2*60
JNE NOTJP2
ENDFLASH 16
LIGHTFLASH 16,2
JMP NOTJP2
NO_JP: ENDFLASH 16
LIGHTOFF 16
RETN
NOTJP2:
synccount syncflasher,sfspeed
downcount SPINcounter,nextSPIN
downcount MBcounter,dumret
downcount TVcounter,dumret
downcount BOATcounter,dumret
downcount TRIPcounter,dumret
downcount CARcounter,dumret
downcount CAsh5counter,endcash5
cmp cash5counter,2*60
jne notfastend
endflash 12
lightflash 12,2
notfastend:
DOWNCOUNT LOOP_MILLION_COUNTER,ENDLM
CMP LOOP_MILLION_COUNTER,2*60
JNE NOHST_FLASH
ENDFLASH 4
LIGHTFLASH 4,3
NOHST_FLASH:
RETN
ENDLM: ENDFLASH 4 ;STŽNG AV LOOP MILLION LAMPAN
LOFF 4
RETN
UPDATE_COUNTERS ENDP
BUMPER_WAS_HIT_PROC PROC NEAR ;INPUT: HITPOINTER
CALL ADDMONEY
UPDAT_INFOBAR
RETN
BUMPER_WAS_HIT_PROC ENDP
JACKADD PROC NEAR
ADDBCD JACKVALUE,_100K
RETN
INITJACK:
MOVEBCD JACKVALUE,JACKINIT
RETN
ENDP
CASHADD PROC NEAR
ADDBCD CASHPOTVAL,CASHPOTSTEP
RETN
ENDP
CASHADD2 PROC NEAR
ADDBCD CASHPOTVAL,CASHPOTSTEP2
RETN
ENDP
ADDMONEY PROC NEAR
CMP SPECIALMODE,TRUE
JNE DUMRET
CMP TURBOMODE,TRUE
JNE DUMRET
CMP LOOPS_N_TRAPS,TRUE
JE DUMRET
ADDBCD TM_TOTAL,_500K
RETN
ENDP
ADDMONEY2 PROC NEAR
CMP SPECIALMODE,TRUE
JNE DUMRET
CMP TURBOMODE,TRUE
JNE DUMRET
CMP LOOPS_N_TRAPS,FALSE
JE DUMRET
ADDBCD TM_TOTAL,_1000K
RETN
ENDP
;********************************* DOT MATRIX CODE ****************************
_PARTYONN:
MOVE DS,DATA
ASSUME DS:DATA
MOV AL,PLAYER
ADD AL,'A'-10
MOV PARTY_ON_TEXT[18],AL
MOV SHOOTTHEBALLTEXT[19],AL
MOV SISA,1
MOV DOTRUT,OFFSET WAITRUT
JMP NORMAL_END
_SHOOT_AGAIN_ONN:
MOVE DS,DATA
ASSUME DS:DATA
MOV AL,PLAYER
ADD AL,'A'-10
MOV SHOOT_AGAIN_TEXT[19],AL
MOV SISA,1
MOV DOTRUT,OFFSET WAITRUT
JMP NORMAL_END
_PARTYON: ;BX NOT USED!
MOV PARTYFLASH,TRUE
MOVE SISA,1 ;HUR M†NGA
MOV DOTRUT,OFFSET PARTYRUT
JMP NORMAL_END
_PARTYOFF: ;TURN OFF PARTYON FLASHING (AND BRING BACK SCORE!)
MOV DOTRUT,OFFSET WAITRUT
MOV SISA,1
JMP NORMAL_END
_WAIT_GAME_ON:
MOV DOTRUT,OFFSET GONRUT
MOV SISA,44
JMP NORMAL_END
GONRUT:
CMP ADDPLAYERS,TRUE
JE INTE_SATT_IGANG
MOV SI,0
RETN
INTE_SATT_IGANG:
MOV SI,34 ;INTE 0 = INTE IG<49>NG !!
RETN
_JBCDZ:
IFZEROBCD [BX+2]
JC OVERIT_
MOV BX,[BX+4]
SUB BX,6
OVERIT_:
ADD BX,6
CMP WORD PTR [BX],0
JNE _NEXTp_4
MOV BX,0
MOV NEXT_A,BX
RETN
_NEXTp_4:
MOV NEXT_A,BX
JMP [BX]
RETN
_BONUS_X_CALCS: ;FN: MULTIPLIES THE BONUS
;INPUT: BONUS_X, BONUSSIFFRORNA
;OUTPUT: BONUSSIFFRORNA
PUSH BX
PUSH ES
MOVEBCD TEMPBONUSBCD,BONUSSIFFRORNA
MOV CL,BONUS_X
DEC CL
JZ NO_X_BONUS
NIL CH
DO_IT_AGAIN:
PUSH CX
MOV SI,OFFSET TEMPBONUSBCD
MOV DI,OFFSET BONUSSIFFRORNA
CALL ADDSCOREBCD
POP CX
LOOP DO_IT_AGAIN
NO_X_BONUS:
MOV BONUS_X_TEXT[8],1+'7'
MOV BONUS_X_TEXT[9],0+'7'
MOV AL,BONUS_X
ADD AL,'7'
CMP AL,10+'7'
JNB ITS10
MOV BONUS_X_TEXT[8],AL
MOV BONUS_X_TEXT[9],' '
ITS10:
POP ES
POP BX
MOV SISA,1
MOV DOTRUT,OFFSET WAITRUT
JMP NORMAL_END
_JBONUSX1:
CMP BONUS_X,1
JNE QJBX1
ADD BX,2
MOV BX,[BX]
MOV NEXT_A,BX
JMP [BX]
QJBX1: MOV SISA,1
MOV DOTRUT,OFFSET WAITRUT
JMP NORMAL_END
_CALC_HAPPY:
MOV DOTRUT,OFFSET WAITRUT
MOV SISA,1
PUSHA
MOV SI,OFFSET TM_TOTAL ;ML_TOT -> TOTAL BONUS
MOV DI,OFFSET BONUSSIFFRORNA
CALL ADDSCOREBCD
POPA
ADD BX,2
CMP WORD PTR [BX],0
JNE _NEXTp_3E
MOV BX,0
_NEXTp_3E:
MOV NEXT_A,BX
RETN
_Jmp:
add bx,2
mov bx,[bx]
MOV NEXT_A,BX
JMP [BX]
retn
_NEXTp_3Q:
_NEXTp_3:
MOV NEXT_A,BX
RETN
_CALC_CYCLO:
PUSH ES
MOVE ES,DS
MOV DI,OFFSET CYCLONESCOREBCD
NIL AX
MOV CX,12/2 ;(12/6=6!!!)
REP STOSW
POP ES
MOV DOTRUT,OFFSET WAITRUT
MOV SISA,1
MOV CX,CYCLONECOUNTER
URBANLOOP:
MOV SI,OFFSET HUNDRATUSEN
MOV DI,OFFSET CYCLONESCOREBCD
PUSH CX BX
CALL ADDSCOREBCD
POP BX CX
LOOP URBANLOOP
MOV SI,OFFSET CYCLONESCOREBCD ;CYCLONES -> TOTAL BONUS
MOV DI,OFFSET BONUSSIFFRORNA
CALL ADDSCOREBCD
ADD BX,2
CMP WORD PTR [BX],0
JNE _NEXTp_3gg
MOV BX,0
_NEXTp_3gg:
MOV NEXT_A,BX
RETN
READ_SPECIAL_MODE_COUNTER PROC NEAR
;[SEC_ASC] PEKAR P<> MSD, (0='*') [SEC_ASC+1] PEKAR P<> LSD
;LŽS AV BARA!
MOVE DS,DATA
cmp [sec_asc],'*'
jne no_end
cmp [sec_asc+1],'0'+7 ;???
jne no_end
cmp turbomode,true
jne noturboend
playjingle_penetrate Sjingle10
mov lastjingle,3
noturboend:
cmp OffRoadmode,true
jne nooffrend
playjingle_penetrate Sjingle10
mov lastjingle,3
nooffrend:
; mov specialmode,false
mov offroadmode,false
mov turbomode,false ;mega cp!!
mov current_priority,0
mov lastjingle,3
mov jinglejumpcnt,1
no_end:
RETN
READ_SPECIAL_MODE_COUNTER ENDP
_DOBEATEN:
MOVE SISA,1
MOV DOTRUT,OFFSET WAITRUT
PUSHA
LIGHTON 31
POPA
JMP NORMAL_END
CODE ENDS
;******************************************************************************
;************************* O T H E R S E G M E N T S ************************
;******************************************************************************
HIDDEN1 SEGMENT PARA PUBLIC 'DATA'
UNDANSPR DB 16*16 DUP (0)
HIDDA DB 576*2 DUP(0)
EXTRN HID1
HIDDEN1 ENDS
HIDDEN2 SEGMENT PARA PUBLIC 'DATA'
HIDDA2 DB 576*2 DUP(0)
EXTRN HID2
HIDDEN2 ENDS
MASK1_2 SEGMENT PARA PUBLIC 'DATA'
EXTRN MASK12
MASK1_2 ENDS
MASK1_1 SEGMENT PARA PUBLIC 'DATA'
EXTRN MASK11
MASK1_1 ENDS
MASK2_2 SEGMENT PARA PUBLIC 'DATA'
EXTRN MASK22
MASK2_2 ENDS
FLIPLEFT SEGMENT PARA PUBLIC 'DATA'
IF CREATE_FLIP_DATA
EXTRN FLIPL
ELSE
EXTRN FLIPL_1
ENDIF
FLIPLEFT ENDS
FLIPLEFT2 SEGMENT PARA PUBLIC 'DATA'
IF CREATE_FLIP_DATA
EXTRN FLIPR2
ELSE
EXTRN FLIPR2_1
ENDIF
FLIPLEFT2 ENDS
FLIPRIGHT SEGMENT PARA PUBLIC 'DATA'
IF CREATE_FLIP_DATA
EXTRN FLIPR
ELSE
EXTRN FLIPR_1
ENDIF
FLIPRIGHT ENDS
LASTSEG SEGMENT
LASTSEG ENDS
STAGE1_1 SEGMENT PARA PUBLIC 'DUMP'
extrn st1
STAGE1_1 ENDS
STAGE1_2 SEGMENT PARA PUBLIC 'DUMP'
extrn st2
STAGE1_2 ENDS
STAGE1_3 SEGMENT PARA PUBLIC 'DUMP'
extrn st3
STAGE1_3 ENDS
STAGE1_4 SEGMENT PARA PUBLIC 'DUMP'
extrn st4
STAGE1_4 ENDS
MASK1_3 SEGMENT PARA PUBLIC 'DUMP'
EXTRN MASK13
MASK1_3 ENDS
MASK2_1 SEGMENT PARA PUBLIC 'DUMP'
EXTRN MASK21
MASK2_1 ENDS
MASK2_3 SEGMENT PARA PUBLIC 'DUMP'
EXTRN MASK23
MASK2_3 ENDS
FLIPGFXSEG SEGMENT PARA PUBLIC 'DUMP'
EXTRN FLIPGFX:BYTE
SISTAGFX LABEL BYTE
FLIPGFXSEG ENDS
SPRINGSEG SEGMENT PARA PUBLIC 'DUMP'
EXTRN SPRING
SPRINGSEG ENDS
;******************************************************************************
;*************************** Animations **************************************
DATA2 SEGMENT PARA PUBLIC 'DATA'
;*********************ANIMATIONS MALL*************************
comment\
dw 1*4 ;loop pos
dw 15 ;number of loops (1=NOLOOP)
dw 5*4-4 ;length of anim (5 frames * 4 bytes!) (IF LOOP=> -4)
_happy dw happy_1,1;<---start!
dw happy_2,2;<-, loop!
dw happy_3,2; I
dw happy_4,2; I
dw happy_5,2;__I
\
;*______________________/Billion Dollar GameShow\______________________*
; Bredd: Antal: Anim:
;Multiply 6 7 3
;2,3,4 . . 12 alla i anim 4 !!
;MoneyMania 40 9 5
;JackPot 40 37 1 ;Puhhhh vicken j„vla mega anim!!! <20> den e 15 h”g †x†!!!
;ExtraBall 40 17 2
;Million 40 16 8
;Billion 32 16 9
;YouWin 24 16 7 ;Olika h”jd p† alla!!!
extrn a_01_00,a_01_01,a_01_02 ,a_01_03 ,a_01_04 ,a_01_05 ,a_01_06 ,a_01_07 ,a_01_08 ,a_01_09 ,a_01_10 ,a_01_11 ,a_01_12 ,a_01_13 ,a_01_14 ,a_01_15,a_01_16,a_01_17,a_01_18,a_01_19,a_01_20,a_01_21,a_01_22,a_01_23,a_01_24,a_01_25,a_01_26,a_01_27,a_01_28,a_01_29,a_01_30,a_01_31,a_01_32,a_01_33,a_01_34,a_01_35,a_01_36,a_01_37
extrn a_02_00,a_02_01,a_02_02 ,a_02_03 ,a_02_04 ,a_02_05 ,a_02_06 ,a_02_07 ,a_02_08 ,a_02_09 ,a_02_10 ,a_02_11 ,a_02_12 ,a_02_13 ,a_02_14 ,a_02_15,a_02_16,a_02_17
extrn a_03_00,a_03_01,a_03_02 ,a_03_03 ,a_03_04 ,a_03_05 ,a_03_06 ,A_03_07
extrn a_14_00,a_24_00,a_34_00 ,a_44_00 ,a_54_00 ,a_64_00
extrn a_05_00,a_05_01,a_05_02 ,a_05_03 ,a_05_04 ,a_05_05 ,a_05_06 ,A_05_07,A_05_08
extrn a_06_00,a_06_01,a_06_02 ,a_06_03 ,a_06_04 ,a_06_05 ,a_06_06,a_06_07 ,a_06_08 ,a_06_09 ,a_06_10 ,a_06_11
extrn a_07_00,a_07_01,a_07_02 ,a_07_03 ,a_07_04 ,a_07_05 ,a_07_06,a_07_07 ,a_07_08 ,a_07_09 ,a_07_10 ,a_07_11 ,a_07_12 ,a_07_13 ,a_07_14 ,a_07_15
extrn a_08_00,a_08_01,a_08_02 ,a_08_03 ,a_08_04 ,a_08_05 ,a_08_06,a_08_07 ,a_08_08 ,a_08_09 ,a_08_10 ,a_08_11 ,a_08_12 ,a_08_13 ,a_08_14 ,a_08_15
extrn a_09_00,a_09_01,a_09_02 ,a_09_03 ,a_09_04 ,a_09_05 ,a_09_06,a_09_07 ,a_09_08 ,a_09_09 ,a_09_10 ,a_09_11 ,a_09_12 ,a_09_13 ,a_09_14 ,a_09_15
extrn a_10_00,a_10_01,a_10_02
extrn a_10b00,a_10b01,a_10b02
dw 0 ;adressen till bilden f”re den f”rsta i loopen
dw 10 ;antal loopar
dw 2*4 ;adressen till den sista bilden i loopen
_liteprize_right label word
dw a_10_00,15
dw a_10_01,15
dw a_10_02,15
dw 0
dw 10
dw 2*4
_liteprize_left label word
dw a_10b00,15
dw a_10b01,15
dw a_10b02,15
MONEYMSPEED=5
DW 0
dw 5
dw 4*9-4
_moneyM dw a_05_00,MONEYMSPEED
dw a_05_01,MONEYMSPEED
dw a_05_02,MONEYMSPEED
dw a_05_03,MONEYMSPEED
dw a_05_04,MONEYMSPEED
dw a_05_05,MONEYMSPEED
dw a_05_06,MONEYMSPEED
dw a_05_07,MONEYMSPEED
dw a_05_08,MONEYMSPEED
multiplyspeed=3
dw 1
dw 4*7
_multiply label word
dw a_03_00,multiplyspeed
dw a_03_01,multiplyspeed
dw a_03_02,multiplyspeed
dw a_03_03,multiplyspeed
dw a_03_04,multiplyspeed
dw a_03_05,multiplyspeed
dw a_03_06,multiplyspeed
dw 1,4*1
_x2 dw a_14_00,50
dw 1,4*1
_x3 dw a_24_00,50
dw 1,4*1
_x4 dw a_34_00,50
dw 1,4*1
_x6 dw a_44_00,50
dw 1,4*1
_x8 dw a_54_00,50
dw 1,4*1
_x10 dw a_64_00,50
cashpotspeed=2
dw 1
dw 4*10
_cashpot label word
dw a_06_00,cashpotspeed
dw a_06_01,cashpotspeed
dw a_06_02,cashpotspeed
dw a_06_03,cashpotspeed
dw a_06_04,cashpotspeed
dw a_06_05,cashpotspeed
dw a_06_06,cashpotspeed
dw a_06_07,cashpotspeed
dw a_06_08,cashpotspeed
dw a_06_09,90
cashpot5speed=2
dw 4*10-4
dw 5
dw 4*12-4
_cashpot5 label word
dw a_06_00,cashpot5speed
dw a_06_01,cashpot5speed
dw a_06_02,cashpot5speed
dw a_06_03,cashpot5speed
dw a_06_04,cashpot5speed
dw a_06_05,cashpot5speed
dw a_06_06,cashpot5speed
dw a_06_07,cashpot5speed
dw a_06_08,cashpot5speed
dw a_06_09,cashpot5speed
dw a_06_10,20
dw a_06_11,20
millionspeed=2
dw 1
dw 4*16
_million label word
dw a_08_00,millionspeed
dw a_08_01,millionspeed
dw a_08_02,millionspeed
dw a_08_03,millionspeed
dw a_08_04,millionspeed
dw a_08_05,millionspeed
dw a_08_06,millionspeed
dw a_08_07,millionspeed
dw a_08_08,millionspeed
dw a_08_09,millionspeed
dw a_08_10,millionspeed
dw a_08_11,millionspeed
dw a_08_12,millionspeed
dw a_08_13,millionspeed
dw a_08_14,millionspeed
dw a_08_15,50
Billionspeed=2
dw 1
dw 4*16
_Billion label word
dw a_09_00,Billionspeed
dw a_09_01,Billionspeed
dw a_09_02,Billionspeed
dw a_09_03,Billionspeed
dw a_09_04,Billionspeed
dw a_09_05,Billionspeed
dw a_09_06,Billionspeed
dw a_09_07,Billionspeed
dw a_09_08,Billionspeed
dw a_09_09,Billionspeed
dw a_09_10,Billionspeed
dw a_09_11,Billionspeed
dw a_09_12,Billionspeed
dw a_09_13,Billionspeed
dw a_09_14,Billionspeed
dw a_09_15,50
youwinspeed=2
dw 1
dw 4*16
_youwin dw a_07_00,youwinspeed
dw a_07_01,youwinspeed
dw a_07_02,youwinspeed
dw a_07_03,youwinspeed
dw a_07_04,youwinspeed
dw a_07_05,youwinspeed
dw a_07_06,youwinspeed
dw a_07_07,youwinspeed
dw a_07_08,youwinspeed
dw a_07_09,youwinspeed
dw a_07_10,youwinspeed
dw a_07_11,youwinspeed
dw a_07_12,youwinspeed
dw a_07_13,youwinspeed
dw a_07_14,youwinspeed
dw a_07_15,50
xtraballspeed=5
dw 1
dw 4*17
_xtraball dw a_02_00,xtraballspeed
dw a_02_01,xtraballspeed
dw a_02_02,xtraballspeed
dw a_02_03,xtraballspeed
dw a_02_04,xtraballspeed
dw a_02_05,xtraballspeed
dw a_02_06,xtraballspeed
dw a_02_07,xtraballspeed
dw a_02_08,xtraballspeed
dw a_02_09,xtraballspeed
dw a_02_10,xtraballspeed
dw a_02_11,xtraballspeed
dw a_02_12,xtraballspeed
dw a_02_13,xtraballspeed
dw a_02_14,xtraballspeed
dw a_02_15,xtraballspeed
dw a_02_16,150
jpspeed=4
dw 1
dw 4*37
_jackpot dw a_01_00,jpspeed
dw a_01_01,jpspeed
dw a_01_02,jpspeed
dw a_01_03,jpspeed
dw a_01_04,jpspeed
dw a_01_05,jpspeed
dw a_01_06,jpspeed
dw a_01_07,jpspeed
dw a_01_08,jpspeed
dw a_01_09,jpspeed
dw a_01_10,jpspeed
dw a_01_11,jpspeed
dw a_01_12,jpspeed
dw a_01_13,jpspeed
dw a_01_14,jpspeed
dw a_01_15,jpspeed
dw a_01_16,jpspeed
dw a_01_17,jpspeed
dw a_01_18,jpspeed
dw a_01_19,jpspeed
dw a_01_20,jpspeed
dw a_01_21,jpspeed
dw a_01_22,jpspeed
dw a_01_23,jpspeed
dw a_01_24,jpspeed
dw a_01_25,jpspeed
dw a_01_26,jpspeed
dw a_01_27,jpspeed
dw a_01_28,jpspeed
dw a_01_29,jpspeed
dw a_01_30,jpspeed
dw a_01_31,jpspeed
dw a_01_32,jpspeed
dw a_01_33,jpspeed
dw a_01_34,jpspeed
dw a_01_35,jpspeed
dw a_01_36,50
;**************************************************************
dw 1
dw 4*4
_clear dw clear2,1
dw clear3,1
dw clear4,1
dw clear5,1
;****************************************************************
extrn clear2,clear3,clear4,clear5:byte
DATA2 ENDS
;******************************************************************************