pinballfantasies/STONES.ASM

5954 lines
119 KiB
NASM
Raw Permalink Blame History

This file contains invisible Unicode characters!

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

;******************************************************************************
;** **
;** P I N B A L L F A N T A S I E S **
;** TABLE: STONES 'N' BONES **
;** **
;******************************************************************************
;BONUS X10 I INACTIVE-SLINGAN
;FEL LOOP COMBO-TEXT
;RIGHT PASSAGE REAGERAR P<> MISSLYCKADE F™RS™K VID SUPERLŽGEN
;R™DARE MATRIX
INCLUDELIB STONES.LIB
INCLUDELIB CLEAR.LIB
FLIPGFXFILESIZE=120
DATAFLIP SEGMENT PARA PUBLIC 'DATA'
MAXDIFS1=114+5
MAXDIFS2=114+5
MAXDIFS=114
IF CREATE_FLIP_DATA
LEFTFLIPTAB DW 42*(2*MAXDIFS1) DUP (1)
RIGHTFLIPTAB DW 42*(2*MAXDIFS2) DUP (1)
LEFTFLIP2TAB DW ?
TEMPTAB DW 2*MAXDIFS DUP (1)
ELSE
EXTRN LEFTFLIPTAB,RIGHTFLIPTAB,LEFTFLIP2TAB
ENDIF
DATAFLIP ENDS
DATA SEGMENT PARA PUBLIC 'DATA'
ASSUME CS:CODE,DS:DATA
;tid mellan knack
KNACKTAB_LO DW 24,23,21,21,18,16,15,13,11,9,8,7,7,6,6,6,5,5,5,5,5,4,4,4,4,4,4,4,4,4,3,3,3,3,3,3
KNACKTABEND_LO LABEL WORD
KNACKTAB_HI DW 22,28,25,25,22,19,18,15,13,11,9,9,8,8,7,7,6,6,6,6,6,5,5,5,5,5,5,4,4,4,4,4,4,4,3,3
KNACKTABEND_HI LABEL WORD
NOF_BANKS_LO=(KNACKTABEND_LO-KNACKTAB_LO)/2
NOF_BANKS_HI=(KNACKTABEND_HI-KNACKTAB_HI)/2
MODUL DB 'TABLE4.MOD',0,'$'
if create_flip_data
flipdatafil_L DB 'flipdata.4L',0
flipdatafil_R DB 'flipdata.4R',0
flipdatafil_L2 DB 'flipdata.4L2',0
flipgfxfil DB 'flipgfx.4',0
flipSTRUCfil DB 'flipSTRU.4',0
endif
hi_score_file db 'table4.hi',0
hi_score_list db 0,0,0, 1,0,0, 0,0,0, 0,0,0,'TSP',0
db 0,0,0, 0,5,0, 0,0,0, 0,0,0,'ICE',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
;******************************************************************************
;******************************** DEFINITIONS *********************************
;******************************************************************************
TOTCENT=16
;******************** SYSTEM **********************
MAX_NO_OF_LIGHTS_FLASHING=64
MAX_NO_OF_WAIT_SYNCS=50
NOOFTASKS=20
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
RGB_BUFFER_LEN=1200
;******************** FLIPPER & BALL **********************
BALLH=16
BANH=576
STARTX=310-5-BALLH/2+3
STARTY=543-5-BALLH/2
F3TOP=168-15
F3HEIGHT=53
;******************** FLASHING **********************
SBSPEED=2
SBFASTTIME=10
SBSPEED2=2
SBFASTTIME2=70
RIPSPEED=2
RIPFASTTIME=20
RIPSPEED2=2
RIPFASTTIME2=70
GHOSTSPEED=32
TRIGHOSTSPEED=18
TOWERSPEED=20
SKILLSPEED=1
KICKSPEED=18
SULPSPEED=16 ;ŽVEN MBSPEED & 2X_SCREAMSSPEED
MBFASTFLASHSPEED=1
SULPFASTFLASHSPEED=1
TBSPEED=18
LOCKSPEED=18
DEMONSPEED=18
BIGGHOSTTIME=4*60
BIGGHOSTSPEED=2
MATRIXLO equ 79
MATRIXHI equ 231
MATRIXCOLS equ MATRIXLO+MATRIXHI*256
public matrixlo,matrixhi,matrixcols
BIT2COL DB 0,0,0,0,252,255,48,0 ;flipper f„rgerna
PARTY_ON_SPEED=3 ;?
SHOOT_AGAIN_SPEED=3 ;?
;******************** GAME TIMING ********************
LEFT_RAMP_MILLE_TIME=5*60 ;(AMIGA:5 SEC)
MB_TIME=11*60
MB_FASTFLASH_TIME=1*60+30
SULP_TIME=9*60 ;(AMIGA:9 SEC)
SULP_FASTFLASH_TIME=1*60+30
SUPERJACK_TIME=13*60 ;(AMIGA:10 SEC)
COMBO_TIME=13*60 ;(AMIGA:12 SEC?)
TOWERHUNT_TIME=40*60 ;CP.
MULTIDEMON_TIME=35*60 ;CP!
;******************** HOLES **********************
DROPX=140
DROPY=210
TOWERX=148-BALLH/2+1
TOWERY=150-BALLH/2+1
TOWERXS=0*TT/NN
TOWERYS=-4000*TT/NN
WELLX=283-BALLH/2
WELLY=253-BALLH/2
WELLXS=-800*TT/NN
WELLYS=2000*TT/NN
VAULTX=10-BALLH/2
VAULTY=540-BALLH/2
VAULTXS=0 ;*TT/NN
VAULTYS=-2880 ;*TT/NN cpe
;******************************************************************************
;****************************** GENERAL VARS **********************************
;******************************************************************************
BCD0 DB 0,0,0, 0,0,0, 0,0,0, 0,0,0
BCD510 DB 0,0,0, 0,0,0, 0,0,0, 5,1,0
BCD750 DB 0,0,0, 0,0,0, 0,0,0, 7,5,0
BCD1000 DB 0,0,0, 0,0,0, 0,0,1, 0,0,0
BCD1010 DB 0,0,0, 0,0,0, 0,0,1, 0,1,0
BCD1020 DB 0,0,0, 0,0,0, 0,0,1, 0,2,0
BCD1050 DB 0,0,0, 0,0,0, 0,0,1, 0,5,0
BCD1040 DB 0,0,0, 0,0,0, 0,0,1, 0,4,0
BCD1080 DB 0,0,0, 0,0,0, 0,0,1, 0,8,0
BCD10000 DB 0,0,0, 0,0,0, 0,1,0, 0,0,0
BCD10030 DB 0,0,0, 0,0,0, 0,1,0, 0,3,0
BCD10020 DB 0,0,0, 0,0,0, 0,1,0, 0,2,0
BCD10060 DB 0,0,0, 0,0,0, 0,1,0, 0,6,0
BCD10070 DB 0,0,0, 0,0,0, 0,1,0, 0,7,0
BCD17520 DB 0,0,0, 0,0,0, 0,1,7, 5,2,0
BCD27530 DB 0,0,0, 0,0,0, 0,2,7, 5,3,0
BCD50010 DB 0,0,0, 0,0,0, 5,0,0, 0,1,0
BCD50030 DB 0,0,0, 0,0,0, 5,0,0, 0,3,0
BCD1000000 DB 0,0,0, 0,0,1, 0,0,0, 0,0,0
BCD5000000 DB 0,0,0, 0,0,5, 0,0,0, 0,0,0
BCD50000000 DB 0,0,0, 0,5,0, 0,0,0, 0,0,0
NEXTJUMP DW ?
CYCLONECOUNTER DW ? ;HEXADECIMAL
cyclonecounterBCD DB ?,?,?, ?,?,?, ?,?,?, ?,?,? ;BCD CODED
CYCLONESCOREBCD DB ?,?,?, ?,?,?, ?,?,?, ?,?,? ;BCD CODED
XXBALLE DB ?
KEY_DISABLED DB ?
SB_DISABLED DB ?
RIP_DISABLED DB ?
KEY_ROL_DISABLED DB ?
RIP_ROL_DISABLED DB ?
GHOSTCOUNTER DB ? ;0-7 ARE VALID VALUES, 8 GHOSTS
GHOST_FLASHING DB ? ;BOTH THE TRIANGLE AND THE GHOST ITSELF
LEFT_RAMP_DOWN_COUNTER DW ?
TOWER_OPEN DB ?
SKILLKEY DB ?
SKILLSCOREBCD DB 0,0,0, 0,0,0, 0,0,0, 0,0,0
KICK_BACK_FLASHING DB ?
TBSYNCER DB ?
MB_FLASHING DB ?
_2X_SCREAMS_FLASHING DB ?
SULP_FLASHING DB ?
LOCK1_FLASHING DB ?
LOCK2_FLASHING DB ?
SULPSYNCER DB ?
XBALLS DB ?
TBMILLIONFLASHING DB ?
TB5MFLASHING DB ?
XBALLFLASHING DB ?
JACKPOTFLASHING DB ?
SJACKPOTFLASHING DB ?
HOLDBONUSFLASHING DB ?
DOUBLEBONUSFLASHING DB ?
HOLDBONUSFLAG DB ?
SULP_SCORE DB 0,0,0, 0,0,0, 0,0,0, 0,0,0
BPOINTER DB ?
SB_DISABLE_AREA DB 11 DUP(0) ;0-3:BONE 6-10:STONE 4-5:UNUSED
HIGH_VAULT DB ?
TBNEXT DW ?
REMAL DB ?
MBDOWNCOUNTER DW ?
SULPDOWNCOUNTER DW ?
COMBODOWNCOUNTER DW ?
COMBOSTAGE DB ?
TOWERHUNTMODE DB ?
TOWERHUNTMODEORIG DB ?
TOWERHUNTSTAGE DB ?
TOWERHUNTDOWNCOUNTER DW ?
MULTIDEMONDOWNCOUNTER DW ?
MULTIDEMONMODE DB ?
LOCKVAULTFLASHING DB ?
LOCKWELLFLASHING DB ?
HOLDMULTICOUNTER DB ?
PARTYFLASH DB ?
DEMONFLASHING DB ?
FIX_TELEPORT_BUG DB ?
GHOST_INH_SB DB ?
BONUS_X DB ?
TEMPBONUSBCD DB ?,?,?, ?,?,?, ?,?,?, ?,?,?
FROM_DEMO_MODE DB ?
TURBOBACKUP DB ?
OFFROADBACKUP DB ?
WAS_SPECIAL DB ?
IN_VAULT DB ? ;TILT
IN_WELL DB ? ;TILT
IN_TOWER DB ? ;TILT
JackValue DB 0,0,0, 0,0,0, 0,0,0, 0,0,0 ;Jackpot Current
JackRaise DB 0,0,0, 0,0,0, 1,0,0, 0,0,0 ;Jackpot Step
JackInit DB 0,0,0, 0,1,0, 0,0,0, 0,0,0 ;Jackpot Start
TOWERVALUE DB 0,0,0, 0,0,0, 0,0,0, 0,0,0
TOWERSTART DB 0,0,0, 0,0,1, 0,0,0, 0,0,0
TOWERADDS DB 0,0,0, 0,0,0, 2,2,3, 4,7,0
VAULTVALUE DB 0,0,0, 0,0,0, 0,0,0, 0,0,0
VAULTSTART DB 0,0,0, 0,0,0, 5,0,0, 0,0,0
VAULTADDS DB 0,0,0, 0,0,0, 0,8,2, 1,5,0
WELLVALUE DB 0,0,0, 0,0,0, 0,0,0, 0,0,0
WELLSTART DB 0,0,0, 0,0,0, 1,0,0, 0,0,0
WELLADDS DB 0,0,0, 0,0,0, 0,6,4, 1,9,0
GHOST_STRUC STRUC
G_LIGHTNO DB ? ;LIGHTNO OF THE GHOST
G_ROUTINE DW ? ;RUT CALLED WHEN GHOST COLLECTED
G_EFFECT DW ? ;EFFECT DONE WHEN GHOST COLLECTED
G_SBEFF DW ? ;EFFECT DONE WHEN GHOST ENABLED
ENDS
GHOSTAREA LABEL BYTE ;"R9b"
DB 32 ;BAT
DW BATMANRUT,BATMAN,EVENT_LIT1
DB 34 ;BLUE GHOST
DW TOWERHUNTRUT,TOWERHUNT,EVENT_LIT2
DB 35 ;GREEN SMILER
DW SMILERRUT,SMILER,EVENT_LIT3
DB 37 ;RED DEVIL
DW REDDEVILRUT,REDDEVIL,EVENT_LIT4
DB 36 ;YELLOW POLERGEIST
DW GHOSTHUNTRUT,GHOSTHUNT,EVENT_LIT5
DB 31 ;BLUE OCTOPUSSY
DW MULTIDEMONRUT,MULTIDEMONS,EVENT_LIT6
DB 33 ;MUMMY HEAD
DW MUMMYHEADRUT,MUMMYHEAD,EVENT_LIT7
DB 38 ;GRIM PEAPER
DW GRIMRUT,GRIMR,EVENT_LIT8
;******************************************************************************
;********************************* 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 SJINGLE2 ;SJINGLE0 ;CP?
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
MULTIDEMONS DW 0
DB 100
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 MULTIDEMONTS
EVENT_LIT DW 0
DB 0
DB 0,0,0, 0,0,0, 1,0,0, 0,0,0
DB 0,0,0, 0,0,0, 0,0,0, 0,0,0
DW 0
EVENT_LIT1 DW SJINGLE3
DB 0,0,0, 0,0,0, 1,0,0, 0,0,0
DB 0,0,0, 0,0,0, 0,0,0, 0,0,0
DW EVENT1TS
EVENT_LIT2 DW SJINGLE3
DB 0,0,0, 0,0,0, 1,0,0, 0,0,0
DB 0,0,0, 0,0,0, 0,0,0, 0,0,0
DW EVENT2TS
EVENT_LIT3 DW SJINGLE3
DB 0,0,0, 0,0,0, 1,0,0, 0,0,0
DB 0,0,0, 0,0,0, 0,0,0, 0,0,0
DW EVENT3TS
EVENT_LIT4 DW SJINGLE3
DB 0,0,0, 0,0,0, 1,0,0, 0,0,0
DB 0,0,0, 0,0,0, 0,0,0, 0,0,0
DW EVENT4TS
EVENT_LIT5 DW SJINGLE3
DB 0,0,0, 0,0,0, 1,0,0, 0,0,0
DB 0,0,0, 0,0,0, 0,0,0, 0,0,0
DW EVENT5TS
EVENT_LIT6 DW SJINGLE3
DB 0,0,0, 0,0,0, 1,0,0, 0,0,0
DB 0,0,0, 0,0,0, 0,0,0, 0,0,0
DW EVENT6TS
EVENT_LIT7 DW SJINGLE3
DB 0,0,0, 0,0,0, 1,0,0, 0,0,0
DB 0,0,0, 0,0,0, 0,0,0, 0,0,0
DW EVENT7TS
EVENT_LIT8 DW SJINGLE3
DB 0,0,0, 0,0,0, 1,0,0, 0,0,0
DB 0,0,0, 0,0,0, 0,0,0, 0,0,0
DW EVENT8TS
SMILER DW SJINGLE3B
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 ;CP?
DW SMILERTS
TowerHunt1 DW SJingle5
DB 0,0,0, 0,0,5, 0,0,0, 0,0,0
DB 0,0,0, 0,0,0, 0,5,0, 0,0,0
DW Tower1TS
TowerHunt2 DW SJingle5
DB 0,0,0, 0,1,0, 0,0,0, 0,0,0
DB 0,0,0, 0,0,0, 1,0,0, 0,0,0
DW Tower2TS
TowerHunt3 DW SJingle5
DB 0,0,0, 0,2,0, 0,0,0, 0,0,0
DB 0,0,0, 0,0,0, 2,0,0, 0,0,0
DW Tower3TS
BATMAN DW SJINGLE7
DB 0,0,0, 0,0,5, 0,0,0, 0,0,0
DB 0,0,0, 0,0,0, 1,0,0, 0,0,0
DW BATMANTS
REDDEVIL DW SJINGLE21
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 REDDEVILTS
MUMMYHEAD DW SJINGLE21
DB 0,0,0, 0,1,5, 0,0,0, 0,0,0
DB 0,0,0, 0,0,1, 5,0,0, 0,0,0
DW MUMMYHEADTS
LOOPCOMBO DW SJINGLE8
DB 0,0,0, 0,0,5, 0,0,0, 0,0,0
DB 0,0,0, 0,0,0, 0,0,0, 0,0,0
DW LOOPCOMBOTS
GETXBALL DW SJINGLE5
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 GETXBALLTS
RIPEFF DW 0
DB 40
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 RIPEFFTS
SKILLSHOT 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 SKILLSHOTTS
OPENTOWER 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 OPENTOWERTS
GHOSTHUNT DW SJINGLE17
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 ;CP?
DW OFFROADTS
GRIMR DW SJINGLE19
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
DW TURBOTS
TOWERHUNT 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 ;CP?
DW TOWERHUNTTS
MILLION DW SJINGLE9
DB 0,0,0, 0,0,1, 0,0,0, 0,0,0
DB 0,0,0, 0,0,0, 1,0,0, 0,0,0
DW MILLIONTS
TMillion DW SJINGLE9
DB 0,0,0, 0,0,1, 0,0,0, 0,0,0
DB 0,0,0, 0,0,0, 2,5,0, 0,0,0
DW TMILLIONANIMTS
Million5 DW SJingle7
DB 0,0,0, 0,0,5, 0,0,0, 0,0,0
DB 0,0,0, 0,0,0, 1,0,0, 0,0,0
DW Million5TS
TMillion5 DW SJingle7
DB 0,0,0, 0,0,5, 0,0,0, 0,0,0
DB 0,0,0, 0,0,0, 1,0,0, 0,0,0
DW TMillion5TS
ExtraBall DW SJingle13
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 ExtraBallTS
Million10 DW SJingle21
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 Million10TS
Million20 DW SJingle4
DB 0,0,0, 0,2,0, 0,0,0, 0,0,0
DB 0,0,0, 0,0,2, 0,0,0, 0,0,0
DW Million20TS
HoldBonus DW SJingle24
DB 0,0,0, 0,0,0, 1,0,0, 0,0,0
DB 0,0,0, 0,0,0, 0,2,0, 0,0,0
DW HoldBTS
DoubleBonus DW SJingle23
DB 0,0,0, 0,0,0, 1,0,0, 0,0,0
DB 0,0,0, 0,0,0, 0,2,0, 0,0,0
DW DoubleBTS
Jackpot DW SJingle10
DB 0,0,0, 0,0,1, 0,0,0, 0,0,0
DB 0,0,0, 0,0,0, 2,5,0, 0,0,0
DW JackpotTS
SuperJack DW SJingle1
DB 0,0,0, 0,5,0, 0,0,0, 0,0,0
DB 0,0,0, 0,0,2, 0,0,0, 0,0,0
DW SuperJackTS
MillionPlus 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 MillionPlusTS ;CP!
ScoreVault DW SJingle14
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 VaultValueTS
ScoreWell DW SJingle12
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 WellValueTS
ScoreTower DW SJingle5
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 TowerValueTS
M2 DW SJingle11
DB 0,0,0, 0,0,0, 1,0,0, 0,0,0
DB 0,0,0, 0,0,0, 0,2,5, 0,0,0
DW M2TS
M4 DW SJingle11
DB 0,0,0, 0,0,0, 1,0,0, 0,0,0
DB 0,0,0, 0,0,0, 0,2,5, 0,0,0
DW M4TS
M6 DW SJingle11
DB 0,0,0, 0,0,0, 1,0,0, 0,0,0
DB 0,0,0, 0,0,0, 0,2,5, 0,0,0
DW M6TS
M8 DW SJingle11
DB 0,0,0, 0,0,0, 1,0,0, 0,0,0
DB 0,0,0, 0,0,0, 0,2,5, 0,0,0
DW M8TS
M10 DW SJingle11
DB 0,0,0, 0,0,0, 1,0,0, 0,0,0
DB 0,0,0, 0,0,0, 0,2,5, 0,0,0
DW M10TS
JUMP_AT DW SJINGLE9B
DB 0,0,0, 0,0,0, 0,2,0, 0,0,0
DB 0,0,0, 0,0,0, 0,0,0, 0,0,0
DW JUMP_AT_TS
JUMP_AT2 DW SJINGLE9B
DB 0,0,0, 0,0,0, 0,2,0, 0,0,0
DB 0,0,0, 0,0,0, 0,0,0, 0,0,0
DW JUMP_AT2_TS
LOSTBALL DW S_LOSTBALL
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
ETTA DB 0,0,0,0,0,0,0,0,0,0,0,1
HUNDRATUSEN DB 0,0,0,0,0,0,1,0,0,0,0,0
;******************************************************************************
;**************************** SOUND STRUCTURES ********************************
;******************************************************************************
;SAMPLE,PERIOD,EFFECT,CHANNEL
sbase Equ 19
SBumper DB 18H,18,0,3
SFlippUpp DB 19H,22,0,3
SRinner DB 1CH,18,0,3
SNewBall DB 1CH,18,0,3
SKicker DB 1DH,18,0,3
SFjader DB 1EH,18,0,3
SGrop DB 17H,18,0,3
;***********************************************************************
ebase Equ 10
SBygel1 DB (ebase-4),10,0,3
SBygel2 DB (ebase-4),12,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_AddPlayer2 DB (ebase+0),18,0,3
;***********************************************************************
;JINGLE,NOOFPTNS (0=4EVER),PRIORITY
EMPTYJINGLE EQU 52
SPRINGJINGLE EQU 0
MAINJINGLE EQU 1
LASTMAINPOS EQU 9
S_Empty DB 52,0,0
S_Spring1 DB 33,0,0
S_Spring DB 0,0,0
S_Main DB 1,0,0
S_NoHigh DB 21,0,0
S_Danger DB 37,1,255
S_Tilt DB 38,2,255
S_GameOver DB 40,0,0
S_GameOver2 DB 39,0,0
S_LostBall DB 62,1,200
S_AddPlayer DB 33,0,200
S_Knacket DB 44,1,230
S_EndFig DB 43,1,0
S_BEATEN DB 61,1,200
S_BEATEN_XB DB 42,1,200
;***********************************************************************
SJINGLE0 DB 0,0,1 ;TVINGA UTSKJUT
SJingle1 DB 24,1,200 ;Super Jackpot
SJingle2 DB 26,1,100 ;Lock ball
SJingle3 DB 27,1,50 ;Event lit
SJingle3B DB 27,1,51 ;Event lit
SJingle4 DB 28,1,100 ;20 Mil
SJingle5 DB 29,1,110 ;X Ball lit
SJingle6 DB 30,1,75 ;Tower Open
SJingle7 DB 31,1,100 ;5 millions
SJingle8 DB 32,1,80 ;Jackpot Lit / Loop Combo
SJingle9 DB 34,1,70 ;Million / Millions+
SJingle9B DB 34,1,35 ;SCREAMS
SJingle10 DB 35,1,200 ;Jackpot
SJingle11 DB 36,1,100 ;X Bonus
SJingle12 DB 41,1,50 ;Well value
SJingle13 DB 42,1,200 ;X Ball
SJingle14 DB 45,1,50 ;Vault value
SJingle15 DB 46,0,0 ;Tower On
SJingle16 DB 51,1,0 ;Tower End
SJingle17 DB 53,0,100 ;Grave On
SJingle18 DB 55,1,100 ;Grave End
SJingle19 DB 56,0,100 ;Grim On
SJingle20 DB 60,1,100 ;Grim End
SJingle21 DB 61,1,100 ;10 / 15 millions
SJingle22 DB 63,1,90 ;Ball lock enabled
SJingle23 DB 64,1,90 ;Double bonus
SJingle24 DB 25,1,90 ;Hold Bonus
;******************************************************************************
;***************************** DETECTION AREAS ********************************
;******************************************************************************
BumperLista_L DW 172,88,185,112
DW Bumper1
DW 231,94,255,118
DW Bumper2
DW 190,134,214,158
DW Bumper3
DW -1,-1,-1,-1
DW -1
BumperLista_U DW -1,-1,-1,-1
DW -1
Bumper2Lista_L DW 50,415,80,470 ;Just to add power
DW Kicker1 ;No Scores or effects
DW 219,415,249,470
DW Kicker2
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 ;1,000
bumper2 dw sbumper
db 0,0,0, 0,0,0, 0,0,1, 0,0,0 ;1,000
bumper3 dw sbumper
db 0,0,0, 0,0,0, 0,0,1, 0,0,0 ;1,000
kicker1 dw skicker
db 0,0,0, 0,0,0, 0,0,0, 5,0,0 ;500
kicker2 dw skicker
db 0,0,0, 0,0,0, 0,0,0, 5,0,0 ;500
ZonLista_L LABEL WORD
DW 123,226,143,243
DW Touch_O_BONE
DW 143,230,164,243
DW Touch_N_BONE
DW 70,234,81,241
DW Touch_B_BONE
DW 217,234,229,241
DW Touch_E_BONE
DW 11,277,38,294
DW Touch_O_STONE
DW 11,294,38,310
DW Touch_T_STONE
DW 11,310,38,325
DW Touch_S_STONE
DW 272,303,286,323
DW Touch_N_STONE
DW 272,323,286,343
DW Touch_E_STONE
DW 0
ZonLista_U DW 0
AreaLista_L LABEL WORD
DW 213,4,245,25 ;Game On
DW Close1
DW 130,15,160,40 ;IN TILL TOWER
DW Bygel15
DW 285,50,310,80 ;UPP TILL BUMPER-OMR<4D>DET
DW Bygel16
DW 184,51,194,61 ;K
DW Bygel5
DW 206,51,216,61 ;E
DW Bygel6
DW 228,51,238,61 ;Y
DW Bygel7
DW 278,248,288,258 ;THE WELL
DW GropB
DW 1,400,20,430 ;VŽ DRAIN ™VRE
DW Bygel19
DW 25,435,35,445 ;VŽ FLIPPER-RŽNNA
DW Bygel3
DW 263,435,273,445 ;H™ FLIPPER-RŽNNA
DW Bygel4
DW 1,450,20,480 ;VŽ DRAIN NEDRE
DW Bygel1
DW 284,450,294,470 ;H™ DRAIN
DW Bygel2
DW 1,530,20,550 ;THE VAULT
DW GropC
DW 305,544,320,576 ;Spring Valid
DW Bygel28
DW 300,520,315,540 ;SPRING INVALID
DW BYGELSI
DW 50,576,270,600 ;Close Tower
DW Close4
DW 160,180,177,197 ;OPEN BUMPERGATE
DW OPENBUMPERS
DW 232,151,254,177 ;OPEN BUMPERGATE
DW OPENBUMPERS
; DW 177,5,245,48 ;LAST GATE IN LIST!
; DW PARTYOFFAREA
DW 0
AreaLista_U LABEL WORD
DW 135,140,155,160 ;TOWER SUG-H<>L
DW GropA
DW 100,5,130,30 ;LOOP MIDDLE
DW Bygel8
DW 17,80,27,90 ;R
DW Bygel12
DW 63,80,73,90 ;P
DW Bygel14
DW 41,83,51,93 ;I
DW Bygel13
DW 267,85,283,105 ;LOOP END
DW Bygel8b
DW 240,121,260,151 ;SCREAM RAMP
DW Bygel11
DW 22,140,42,170 ;GRID-RAMP START LEFT
DW Bygel9
DW 49,140,69,170 ;GRID-RAMP START RIGHT
DW Bygel10
DW 22,200,42,230 ;GRID-RAMP B™J1 LEFT
DW Open6
DW 49,200,69,230 ;GRID-RAMP B™J1 RIGHT
DW Close6
DW 22,250,42,280 ;GRID-RAMP B™J2 LEFT
DW Open7
DW 49,250,69,280 ;GRID-RAMP B™J2 RIGHT
DW Close7
DW 5,400,20,430 ;TO THE VAULT
DW Bygel18
; DW 271,28,292,58 ;CLEARIT, MM.
DW 213,4,245,25
DW PARTYOFFAREA
DW 0
AREALISTA_L_T LABEL WORD
DW 278,248,288,258 ;THE WELL (TILT)
DW GropB_T
DW 1,530,20,550 ;THE VAULT
DW GropC
DW 135,140,155,160 ;TOWER SUG-H<>L (TILT)
DW GropA_T
DW 0
AREALISTA_U_T LABEL WORD
DW 1,530,20,550 ;THE VAULT
DW GropC
DW 135,140,155,160 ;TOWER SUG-H<>L (TILT)
DW GropA_T
DW 22,140,42,170 ;GRID-RAMP START LEFT
DW Bygel9
DW 49,140,69,170 ;GRID-RAMP START RIGHT
DW Bygel10
DW 22,200,42,230 ;GRID-RAMP B™J1 LEFT
DW Open6
DW 49,200,69,230 ;GRID-RAMP B™J1 RIGHT
DW Close6
DW 22,250,42,280 ;GRID-RAMP B™J2 LEFT
DW Open7
DW 49,250,69,280 ;GRID-RAMP B™J2 RIGHT
DW Close7
DW 0
LEVEL1LISTA LABEL WORD ;AREOR SOM ANGER HOPP TILL LEVEL 1 FR<46>N LEVEL 2
;PARTY ON? DW 213,4,245,25
DW 16,8,42,45
DW 90,80,115,120
DW 265,155,295,185
; DW 75,165,105,190
DW 74,169,88,181 ;
DW 74,181,104,193 ;
DW 185,200,215,240
DW 300,200,320,250
DW 260,450,277,470
DW 20,450,50,470
DW 1,526,20,576
DW -1
LEVEL2LISTA LABEL WORD ;AREOR SOM ANGER HOPP TILL LEVEL 2 FR<46>N LEVEL 1
DW 42,8,66,38
DW 136,36,156,60
DW 91,38,133,55
DW 138,140,157,160
DW 190,165,225,200
DW 300,170,320,200
DW -1
IF CREATE_FLIP_DATA
FlipLInfo 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 0,0
ELSE
EXTRN FLIPLINFO:FLIPSTRUC:2
ENDIF
no_of_ramps equ 11 ;cpw!?!?
RampTable DW 0,(10*2*tt/nn)/2
DW -10*tt/nn,5*tt/nn
DW 0,-10*tt/nn
DW 5*tt/nn,0
DW 5*tt/nn,15*tt/nn
DW -10*tt/nn,12*tt/nn
DW 2,15*tt/nn
DW -8*tt/nn,12*tt/nn
DW 3,10*tt/nn
DW 4,13*tt/nn
DW 7*tt/nn,10*tt/nn
DW 0,0
RampTable_hi DW 0,10
DW -10,5
DW 0,-10
DW 5,0
DW 5,15
DW -10,12
DW 2,15
DW -8,12
DW 3,10
DW 4,13
DW 7,10
DW 0,0
PLAYER_STRUC STRUC
P_SIFFRORNA DB 12 DUP(?)
P_BONUSSIFFRORNA DB 12 DUP(?)
P_GHOSTCOUNTER DB ?
P_GHOSTFLASHING DB ?
P_SKILLSCOREBCD DB 12 DUP(?)
P_KICKBACKFLASHING DB ?
P_R_RIP DB ?
P_I_RIP DB ?
P_P_RIP DB ?
P_STONE_S DB ?
P_STONE_T DB ?
P_STONE_O DB ?
P_STONE_N DB ?
P_STONE_E DB ?
P_BONE_B DB ?
P_BONE_O DB ?
P_BONE_N DB ?
P_BONE_E DB ?
P_CYCLONECOUNTER DW ?
P_CYCLONECOUNTERBCD DB 12 DUP(?)
P_NEXTJUMP DW ?
ENDS
PUBLIC PLAYER_AREA
PLAYER_AREA PLAYER_STRUC NO_OF_PLAYERS DUP(<?>)
;******************************************************************************
;************************ DEMO MODE LIGHT FLASHING ****************************
;******************************************************************************
FLASHLIST LABEL WORD
T2=14
DW 0,0,T2,T2,1 ;KEY
DW 0,T2,T2,T2,2
DW 0,0,T2,T2,3
T2=9
DW 0,0,T2,T2,26 ;STONE BONE
DW 0,T2,T2,T2,27
DW 0,0,T2,T2,28
DW 0,T2,T2,T2,29
DW 0,0,T2,T2,30
DW 0,T2,T2,T2,20
DW 0,0,T2,T2,21
DW 0,T2,T2,T2,22
DW 0,0,T2,T2,23
T2=12
DW 0,T2,T2,T2,15 ;LOCK & LOCK
DW 0,0,T2,T2,25
T2=7
DW 0,0,T2,T2,39 ;X2X4X6X8X10
DW 0,T2,T2,T2,40
DW 0,0,T2,T2,41
DW 0,T2,T2,T2,42
DW 0,0,T2,T2,43
DW -1
;******************************************************************************
;**************************** LIGHT PALETTE DATA ******************************
;******************************************************************************
NOOFLIGHTS=44
LON1 DB 129 ;K
DB 2
DB 33,58,33
DB 52,89,52
LON2 DB 131 ;E
DB 2
DB 33,58,33
DB 52,89,52
LON3 DB 133 ;Y
DB 2
DB 33,58,33
DB 52,89,52
LON4 DB 135 ;R
DB 2
DB 77,52,27
DB 95,83,20
LON5 DB 137 ;I
DB 1
DB 95,83,20
LON6 DB 138 ;P
DB 2
DB 77,52,27
DB 95,83,20
LON7 DB 140 ;TOWER
DB 2
DB 33,58,33
DB 52,89,57
LON8 DB 187 ;X-TRA BALL
DB 2
DB 60,60,60
DB 96,96,96
LON9 DB 189 ;JACKPOT
DB 2
DB 60,60,60
DB 96,96,96
LON10 DB 191 ;S-JACKPOT
DB 2
DB 60,60,60
DB 96,96,96
LON11 DB 193 ;MILLION
DB 2
DB 60,60,60
DB 96,96,96
LON12 DB 195 ;5-MILLION
DB 2
DB 60,60,60
DB 96,96,96
LON13 DB 197 ;HOLD-BONUS
DB 2
DB 60,60,60
DB 96,96,96
LON14 DB 199 ;DOUBLE-BONUS
DB 2
DB 60,60,60
DB 96,96,96
LON15 DB 142 ;L<>S
DB 3
DB 33,58,33
DB 39,70,39
DB 52,89,52
LON16 DB 145 ;SP™KE
DB 3
DB 58,58,58
DB 70,70,70
DB 95,95,95
LON17 DB 148 ;2*SKRIK
DB 3
DB 43,43,43
DB 70,70,70
DB 95,95,95
LON18 DB 151 ;DEMON
DB 2
DB 52,8,14
DB 95,0,0
LON19 DB 153 ;+
DB 2
DB 52,8,14
DB 95,0,0
LON20 DB 155 ;B
DB 2
DB 39,70,39
DB 52,89,52
LON21 DB 157 ;O
DB 2
DB 39,70,39
DB 52,89,52
LON22 DB 159 ;N
DB 2
DB 39,70,39
DB 52,89,52
LON23 DB 161 ;E
DB 2
DB 39,70,39
DB 52,89,52
LON24 DB 180 ;MB
DB 3
DB 58,58,58
DB 70,70,70
DB 95,95,95
LON25 DB 183 ;L<>S
DB 2
DB 33,58,33
DB 52,89,52
LON26 DB 163 ;S
DB 2
DB 39,70,39
DB 52,89,52
LON27 DB 165 ;T
DB 1
DB 52,89,52
LON28 DB 166 ;O
DB 1
DB 52,89,52
LON29 DB 167 ;N
DB 2
DB 39,70,39
DB 52,89,52
LON30 DB 169 ;E
DB 2
DB 39,70,39
DB 52,89,52
LON31 DB 64 ;SLEMBOLLEN
DB 9
DB 20,27,33
DB 27,33,45
DB 33,45,58
DB 39,52,70
DB 52,64,77
DB 70,70,70
DB 39,0,0
DB 52,8,14
DB 58,27,27
LON32 DB 73 ;FLADDERMUSEN
DB 6
DB 20,27,33
DB 27,33,45
DB 39,39,39
DB 58,58,58
DB 77,52,27
DB 95,83,20
LON33 DB 80 ;MUMIEN
DB 5
DB 39,39,39
DB 58,58,58
DB 70,70,70
DB 52,8,14
DB 95,0,0
LON34 DB 85 ;BL<42>A ANSIKTET
DB 7
DB 20,27,33
DB 27,33,45
DB 27,39,52
DB 33,45,58
DB 39,52,70
DB 52,64,77
DB 95,83,20
LON35 DB 92 ;BARBA-PAPPA
DB 8
DB 14,39,14
DB 27,45,20
DB 33,58,33
DB 39,70,39
DB 52,89,52
DB 52,8,14
DB 95,0,0
DB 95,83,20
LON36 DB 100 ;PEPPARKAKS-GUBBEN
DB 5
DB 58,27,27
DB 64,39,39
DB 77,52,27
DB 95,83,20
DB 95,95,95
LON37 DB 105 ;R™D-LUVAN
DB 7
DB 39,0,0
DB 52,8,14
DB 58,27,27
DB 64,39,39
DB 77,52,27
DB 95,95,95
DB 95,0,0
LON38 DB 112 ;DEN GRYMMA RAPPARN
DB 17
DB 17,23,30
DB 20,27,33
DB 27,33,45
DB 27,39,52
DB 33,45,58
DB 52,8,14
DB 95,0,0
DB 39,39,39
DB 39,52,70
DB 58,58,58
DB 33,20,20
DB 58,27,27
DB 64,39,39
DB 77,52,27
DB 52,39,27
DB 64,52,39
DB 77,64,52
LON39 DB 171 ;X2
DB 2
DB 52,27,27
DB 95,0,0
LON40 DB 173 ;X4
DB 1
DB 95,0,0
LON41 DB 174 ;X6
DB 2
DB 52,27,27
DB 95,0,0
LON42 DB 176 ;X8
DB 2
DB 52,27,27
DB 95,0,0
LON43 DB 178 ;X10
DB 2
DB 52,27,27
DB 95,0,0
LON44 DB 185 ;SPARKA TILLBAKA
DB 2
DB 58,58,58
DB 95,95,95
MATRIXON DB matrixlo ;(MATRIXCOL LOW BYTE)
DB 1
DB 95,83,20
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
DW OFFSET LON39
DW OFFSET LON40
DW OFFSET LON41
DW OFFSET LON42
DW OFFSET LON43
DW OFFSET LON44
MATRIXOFF DB matrixlo
DB 3
DB 3 DUP(20*64/100,27*64/100,33*64/100)
; DB 3 DUP(20*64/100,27*64/100,36*64/100) ;(50)
;******************************************************************************
;************************* GATES & BYGLARS DATA AREOR *************************
;******************************************************************************
EXTRN POS2,POS3,POS4,POS5:BYTE
EXTRN NEG2,NEG3,NEG4,NEG5:BYTE
GATE2 DW POS3-2 ;TO THE BUMPERS
DW NEG3-2
DW 5*40+30
DW 2,20
GATE3 DW POS4-2 ;TO THE TOWER
DW NEG4-2
DW 5*40+20
DW 2,24
GATE4A DW POS2 ;LEFT RAMP 1
DW NEG2
DW 191*40+4
DW 4,14
GATE4B DW POS2 ;LEFT RAMP 2
DW NEG2
DW 247*40+4
DW 4,14
GATE4C DW POS2 ;LEFT RAMP 3
DW NEG2
DW 303*40+4
DW 4,14
GATE5 DW POS5 ;KICKBACK
DW NEG5
DW 511*40+0
DW 4,13
OffRoadMode db ?
TurboMode db ?
;******************************************************************************
;****************************** DOT MATRIX ************************************
;******************************************************************************
CLEARIT MACRO
ASSUME DS:DATA2
DW _ANIMATION,_CLEAR
ASSUME DS:DATA
ENDM
;********************************** TEXTER ************************************
OPENTOWERTEXT DB 21 DUP (1),'THE TOWER IS OPEN',21 DUP(1),255
MILLIONSCROLL DB 21 DUP (1),'MILLION',6 DUP (1),255
GRIMSCROLL DB 21 DUP (1),'ALL LOOPS TRAPS AND RAMPS SCORE 5000000',21 DUP(1),255
MILLIONPLUSTEXT DB ' MILLION PLUS',0
VAULTVALUETEXT DB ' VAULT SCORE',0
WELLVALUETEXT DB ' WELL TREASURE',0
TOWERVALUETEXT DB ' TOWER BONUS',0
DOUBLETEXT DB ' DOUBLE BONUS',0
HOLDTEXT DB ' HOLD BONUS',0
RIPTEXT DB ' KICKBACK ACTIVATED',0
GETXBALLTEXT DB ' GET THE EXTRA BALL',0
SKILLTEXT DB ' SKILL SHOT',0
LOOPCOMBOTEXT DB ' LOOP COMBO',0 ;CP!?
TOWER_TEXT DB 21 DUP (1),'SHOOT THE TOWER FOR 5 ',94,' 10 AND 20 MILLIONS IN 30 SECONDS',21 DUP(1),255
MARTIN_BERG_TEXT DB ' TOWER HUNT',0
VAULT45M DB 21 DUP (1),'ENTER THE VAULT FOR 5000000',21 DUP(1),255
VAULT4TOWERHUNT DB 21 DUP (1),'ENTER THE VAULT FOR TOWER HUNT',21 DUP(1),255
VAULT4XBALL DB 21 DUP (1),'ENTER THE VAULT TO LITE THE EXTRA BALL',21 DUP(1),255
VAULT410M DB 21 DUP (1),'ENTER THE VAULT FOR 10000000',21 DUP(1),255
VAULT4GHOSTHUNT DB 21 DUP (1),'ENTER THE VAULT FOR GHOST HUNT',21 DUP(1),255
VAULT4MULTIDEMONS DB 21 DUP (1),'ENTER THE VAULT FOR MULTI DEMONS',21 DUP(1),255
VAULT415M DB 21 DUP (1),'ENTER THE VAULT FOR 15000000',21 DUP(1),255
VAULT4GRIMREAPER DB 21 DUP (1),'ENTER THE VAULT FOR GRIM REAPER',21 DUP(1),255
MULTIDEMONTEXT DB 21 DUP (1),'LOCK BALLS IN WELL AND VAULT TO INCREASE DEMON VALUE BY 5 AND 10 MILLIONS',21 DUP(1),255
SHOOTTHEBALLTEXT DB 'SHOOT THE BALL PL X',0
SUPERTEXT DB 'SUPER',0
EXTRABALLTEXT DB 'EXTRA BALL',0
;******************************************************************************
;********************************** TSAR **************************************
;******************************************************************************
;*********************************************************
;******* OBS!!! KOM IH<49>G ATT ASSUMERA ANIMATIONER TILL DATA2 OCH
;******* SCROLLAR TILL DATA !!!!!
BEATENSCROLL DB 21 DUP (1),'YOU HAVE BEATEN THE HIGHSCORE',21 DUP(1),255
Beaten_bh_TS LABEL WORD ;I BALL LOST SEKVENSEN
DW _DOBEATEN,?
CLEARIT
DW _JINGLE,S_BEATEN
DW _LASTJINGLE,EMPTYJINGLE
DW _SCROLL,BEATENSCROLL
DW _WAITJINGLE,?
DW _JINGLE,S_BEATEN_XB
DW _LASTJINGLE,EMPTYJINGLE
DW _FLASHON,1 ;6
; DW _PRINT13,EXTRABALLTEXT,SW*4/4+TOTCENT+4
; DW _WAIT,6*2*30
DW _ANIMATION,_EXTRABALL
DW _WAIT,90
CLEARIT
DW _FLASHOFF,?
DW _JMP,No_Bonus2TS
BeatenTS LABEL WORD ;I SPELET
DW _DOBEATEN,?
CLEARIT
DW _JINGLE,S_BEATEN
DW _LASTJINGLE,EMPTYJINGLE
DW _SCROLL,BEATENSCROLL
DW _WAITJINGLE,?
DW _JINGLE,S_BEATEN_XB
DW _LASTJINGLE,3
DW _FLASHON,1 ;6
; DW _PRINT13,EXTRABALLTEXT,SW*4/4+TOTCENT+4
; DW _WAIT,6*2*30
DW _ANIMATION,_EXTRABALL
DW _WAIT,90
CLEARIT
DW _FLASHOFF,?
DW 0
SHOOTTHEBALLTS LABEL WORD
CLEARIT
DW _FLASHON,2
DW _PARTYONN,?
DW _PRINT13,SHOOTTHEBALLTEXT,SW*4/4
DW _PARTYON,?
DW 0
MULTIDEMONTS LABEL WORD
CLEARIT
DW _SCROLL,MULTIDEMONTEXT
CLEARIT
DW _VAULTEND,?
DW 0
EVENT1TS LABEL WORD
DW _SCROLL,VAULT45M
DW 0
EVENT2TS LABEL WORD
DW _SCROLL,VAULT4TOWERHUNT
DW 0
EVENT3TS LABEL WORD
DW _SCROLL,VAULT4XBALL
DW 0
EVENT4TS LABEL WORD
DW _SCROLL,VAULT410M
DW 0
EVENT5TS LABEL WORD
DW _SCROLL,VAULT4GHOSTHUNT
DW 0
EVENT6TS LABEL WORD
DW _SCROLL,VAULT4MULTIDEMONS
DW 0
EVENT7TS LABEL WORD
DW _SCROLL,VAULT415M
DW 0
EVENT8TS LABEL WORD
DW _SCROLL,VAULT4GRIMREAPER
DW 0
SMILERTS LABEL WORD
CLEARIT
DW _FLASHON,2
DW _PRINT13,GETXBALLTEXT,SW*4/4
DW _WAIT,150
DW _FLASHOFF,?
CLEARIT
DW _VAULTEND,?
DW 0
TOWER1TS LABEL WORD
ASSUME DS:DATA2
DW _ANIMATION,_CLEAR
DW _TOWER,87-16+2
DW _WAIT,50
DW _ANIMATION,_CLEAR
DW _TOWEREND,?
DW 0
TOWER2TS LABEL WORD
ASSUME DS:DATA2
DW _ANIMATION,_CLEAR
DW _TOWER,61-16+2
DW _WAIT,50
DW _ANIMATION,_CLEAR
DW _TOWEREND,?
DW 0
TOWER3TS LABEL WORD
ASSUME DS:DATA2
DW _ANIMATION,_CLEAR
DW _TOWER,36-16
DW _WAIT,120
DW _ANIMATION,_CLEAR
DW _TOWEREND,?
DW 0
BATMANTS LABEL WORD
ASSUME DS:DATA2
DW _WAIT,5
DW _ANIMATION,_CLEAR
DW _ANIMATION,_5
DW _WAIT,25
DW _ANIMATION,_CLEAR
DW _ANIMATION,_MILLION
DW _ANIMATION,_CLEAR
DW _VAULTEND,?
DW 0
REDDEVILTS LABEL WORD
ASSUME DS:DATA2
DW _ANIMATION,_CLEAR
DW _ANIMATION,_10
DW _ANIMATION,_CLEAR
DW _ANIMATION,_MILLION
DW _ANIMATION,_CLEAR
DW _WAIT,50
DW _VAULTEND,?
DW 0
MUMMYHEADTS LABEL WORD
ASSUME DS:DATA2
DW _ANIMATION,_CLEAR
DW _ANIMATION,_15
DW _ANIMATION,_CLEAR
DW _ANIMATION,_MILLION
DW _ANIMATION,_CLEAR
DW _WAIT,50
DW _VAULTEND,?
DW 0
LOOPCOMBOTS LABEL WORD ;CP! INTE S<> I ALLA FALL!!
CLEARIT
DW _FLASHON,2
DW _PRINT13,LOOPCOMBOTEXT,SW*4/4
DW _WAIT,140
DW _FLASHOFF,?
CLEARIT
DW 0
GETXBALLTS LABEL WORD
CLEARIT
DW _FLASHON,2
DW _PRINT13,GETXBALLTEXT,SW*4/4
DW _WAIT,150
DW _FLASHOFF,?
CLEARIT
DW 0
RIPEFFTS LABEL WORD
CLEARIT
DW _FLASHON,1
DW _PRINT13,RIPTEXT,SW*4/4
DW _WAIT,90
DW _FLASHOFF,?
CLEARIT
DW 0
SKILLSHOTTS LABEL WORD
CLEARIT
DW _RULLGARDIN_UPP,SKILLTEXT,1
DW _WAIT,60
CLEARIT
DW _FLASHON,1
DW _PRINT13_NUMBER_CENT,SKILLSCOREBCD,2*2*SW/4+TOTCENT
DW _WAIT,2*60
CLEARIT
DW _FLASHOFF,?
DW 0
OPENTOWERTS LABEL WORD
CLEARIT
DW _SCROLL,OPENTOWERTEXT
CLEARIT
DW 0
MILLIONTS LABEL WORD
ASSUME DS:DATA2
DW _ANIMATION,_CLEAR
DW _SCROLL,MILLIONSCROLL
DW _WAIT,60
DW _ANIMATION,_CLEAR
DW 0
TMILLIONANIMTS LABEL WORD
ASSUME DS:DATA2
DW _ANIMATION,_CLEAR
DW _ANIMATION,_MILLION
DW _ANIMATION,_CLEAR
DW _TOWEREND,?
DW 0
Million5TS LABEL WORD
ASSUME DS:DATA2
DW _WAIT,5
DW _ANIMATION,_CLEAR
DW _ANIMATION,_5
DW _WAIT,25
DW _ANIMATION,_CLEAR
DW _ANIMATION,_MILLION
DW _ANIMATION,_CLEAR
DW 0
TMillion5TS LABEL WORD
ASSUME DS:DATA2
DW _WAIT,5
DW _ANIMATION,_CLEAR
DW _ANIMATION,_5
DW _WAIT,25
DW _ANIMATION,_CLEAR
DW _ANIMATION,_MILLION
DW _ANIMATION,_CLEAR
DW _TOWEREND,?
DW 0
Million10TS LABEL WORD
ASSUME DS:DATA2
DW _ANIMATION,_CLEAR
DW _ANIMATION,_10
DW _ANIMATION,_CLEAR
DW _ANIMATION,_MILLION
DW _ANIMATION,_CLEAR
DW 0
Million20TS LABEL WORD
ASSUME DS:DATA2
DW _ANIMATION,_CLEAR
DW _ANIMATION,_20
DW _ANIMATION,_CLEAR
DW _ANIMATION,_MILLION
DW _WAIT,120
DW _ANIMATION,_CLEAR
DW 0
DoubleBTS LABEL WORD
CLEARIT
DW _FLASHON,2
DW _PRINT13,DOUBLETEXT,SW*4/4
DW _WAIT,150
DW _FLASHOFF,?
CLEARIT
DW _TOWEREND,?
DW 0
HOLDBTS LABEL WORD
CLEARIT
DW _FLASHON,2
DW _PRINT13,HOLDTEXT,SW*4/4
DW _WAIT,150
DW _FLASHOFF,?
CLEARIT
DW _TOWEREND,?
DW 0
JackpotTS LABEL WORD
ASSUME DS:DATA2
DW _ANIMATION,_CLEAR
DW _ANIMATION,_JACKPOT
DW _WAIT,30
DW _ANIMATION,_CLEAR
DW _TOWEREND,?
DW 0
SuperJackTS LABEL WORD
CLEARIT
DW _FLASHON,1
DW _PRINT13,SUPERTEXT,SW*4/4+7*4
DW _WAIT,100
DW _FLASHOFF,?
CLEARIT
ASSUME DS:DATA2
DW _ANIMATION,_JACKPOT
DW _WAIT,30
CLEARIT
DW _FLASHON,1
DW _PRINT13_NUMBER_CENT,BCD50000000,2*2*SW/4+TOTCENT
DW _WAIT,100
CLEARIT
DW _FLASHOFF,?
DW _TOWEREND,?
DW 0
MillionPlusTS LABEL WORD
CLEARIT
DW _RULLGARDIN_UPP,MILLIONPLUSTEXT,1
DW _WAIT,60
CLEARIT
DW _PRINT13_NUMBER_CENT,SULP_SCORE,2*2*SW/4+TOTCENT
DW _WAIT,2*60
CLEARIT
DW 0
VaultValueTS LABEL WORD
CLEARIT
DW _FLASHON,2
DW _PRINT13,VAULTVALUETEXT,SW*4/4
DW _WAIT,60
DW _FLASHOFF,?
CLEARIT
DW _PRINT13_NUMBER_CENT,VAULTVALUE,2*2*SW/4+TOTCENT
DW _WAIT,80
CLEARIT
DW _VAULTEND,?
DW 0
WellValueTS LABEL WORD
CLEARIT
DW _FLASHON,2
DW _PRINT13,WELLVALUETEXT,SW*4/4
DW _WAIT,60
DW _FLASHOFF,?
CLEARIT
DW _PRINT13_NUMBER_CENT,WELLVALUE,2*2*SW/4+TOTCENT
DW _WAIT,80
CLEARIT
DW _WELLEND,?
DW 0
TowerValueTS LABEL WORD
CLEARIT
DW _FLASHON,2
DW _PRINT13,TOWERVALUETEXT,SW*4/4
DW _WAIT,60
DW _FLASHOFF,?
CLEARIT
DW _PRINT13_NUMBER_CENT,TOWERVALUE,2*2*SW/4+TOTCENT
DW _WAIT,80
CLEARIT
DW _TOWEREND,?
DW 0
EXTRABALLTS LABEL WORD
ASSUME DS:DATA2
DW _ANIMATION,_CLEAR
DW _ANIMATION,_EXTRABALL
DW _WAIT,120
DW _ANIMATION,_CLEAR
DW _TOWEREND,?
DW 0
M2TS LABEL WORD
ASSUME DS:DATA2
DW _ANIMATION,_CLEAR
DW _ANIMATION,_BONUSX2
DW _ANIMATION,_CLEAR
DW _WELLEND,?
DW 0
M4TS LABEL WORD
ASSUME DS:DATA2
DW _ANIMATION,_CLEAR
DW _ANIMATION,_BONUSX4
DW _ANIMATION,_CLEAR
DW _WELLEND,?
DW 0
M6TS LABEL WORD
ASSUME DS:DATA2
DW _ANIMATION,_CLEAR
DW _ANIMATION,_BONUSX6
DW _ANIMATION,_CLEAR
DW _WELLEND,?
DW 0
M8TS LABEL WORD
ASSUME DS:DATA2
DW _ANIMATION,_CLEAR
DW _ANIMATION,_BONUSX8
DW _ANIMATION,_CLEAR
DW _WELLEND,?
DW 0
M10TS LABEL WORD
ASSUME DS:DATA2
DW _ANIMATION,_CLEAR
DW _ANIMATION,_BONUSX10
DW _ANIMATION,_CLEAR
DW _WELLEND,?
DW 0
TOWERHUNTTS LABEL WORD
CLEARIT
DW _RULLGARDIN_UPP,MARTIN_BERG_TEXT,-13
DW _RULLGARDIN_NED,MARTIN_BERG_TEXT,16
DW _RULLGARDIN_UPP,MARTIN_BERG_TEXT,-13
DW _RULLGARDIN_NED,MARTIN_BERG_TEXT,16
DW _SCROLL,TOWER_TEXT
CLEARIT
DW _VAULTEND,?
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
OffRoadTS LABEL WORD
DW _TURNONSPECIALMODE,?
DW _TURNONOFFROADMODE,?
DW _ANIMATION,_CLEAR
dw _scroll,go_for_some_text
dw _animation,_clear
DW _PRINT13,ZEROQ,SW*(2+2)/4+16*13/4
DW _VAULTEND,?
dw _countdown,3,0,OR_total
AFTER_ORCDTS LABEL WORD
dw _animation,_clear
OffRoad_endingTS Label Word
DW _TURNOFFOFFROADMODE,?
DW _JACKEND,?
DW _JBCDZ,OR_TOTAL,no_orTS
assume ds:data
dw _rullgardin_upp,or_total_text,1
assume ds:data2
dw _wait,60 ;CPW!
dw _animation,_clear
DW _FLASHON,1
assume ds:data
DW _PRINT13_NUMBER,OR_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_orTS DW _PRINT13,NO_or_TEXT,SW*4/4
ASSUME DS:DATA2
dw _wait,80 ;CPW!
CLEARIT
dw _TurnOffSpecialMode,?
DW 0
BACK_2_OFFROADTS LABEL WORD
CLEARIT
DW _PRINT13,ZEROQ,SW*(2+2)/4+16*13/4
DW _COUNTDOWNCONTINUE,?,?,OR_TOTAL
DW _JMP,AFTER_ORCDTS
DW 0
BREAK_OR_MODETS LABEL WORD
DW _TURNOFFOFFROADMODE,?
CLEARIT
DW 0
go_for_some_text db 21 dup (' '),'ALL TARGETS SCORE 1000000 FOR 30 SECONDS',21 dup (' '),255
OR_total_Text db ' GHOST HUNTER TOTAL',0
ASSUME DS:DATA
no_or_text db ' NO BONUS',0
or_total db ?,?,?,?,?,?,?,?,?,?,?,?
;**********************************************************
TurboTS LABEL WORD
CLEARIT
DW _TurnONSpecialMode,?
DW _TURNONTURBOMODE,?
DW _RULLGARDIN_UPP,GO_FOR_NISSE_TEXT,-13
DW _RULLGARDIN_NED,GO_FOR_NISSE_TEXT,16
DW _RULLGARDIN_UPP,GO_FOR_NISSE_TEXT,-13
DW _RULLGARDIN_NED,GO_FOR_NISSE_TEXT,16
CLEARIT
DW _SCROLL,GRIMSCROLL
DW _PRINT13,ZEROQ,SW*(2+2)/4+16*13/4
DW _VAULTEND,?
dw _countdown,5,0,tm_total ;(the final?) ;CP?
AFTER_TMCDTS LABEL WORD
DW _GRIMOFF,?
CLEARIT
TurboMode_endingTS Label Word
DW _TURNOFFTURBOMODE,?
DW _JACKEND,?
DW _JBCDZ,TM_TOTAL,no_tmTS
assume ds:data
dw _rullgardin_upp,tm_total_text,1
assume ds:data2
dw _wait,60 ;CPW!
CLEARIT
DW _FLASHON,1
DW _PRINT13_NUMBER,tm_total,SW*4/4+16*2/4 ;CP! RUTCENT
dw _wait,80 ;CPW!
DW _FLASHOFF,1
CLEARIT
dw _TurnOffSpecialMode,?
dw 0
no_tmTS DW _PRINT13,NO_tm_TEXT,SW*4/4
dw _wait,80 ;CPW!
CLEARIT
dw _TurnOffSpecialMode,?
DW 0
BACK_2_TURBOTS LABEL WORD
CLEARIT
DW _PRINT13,ZEROQ,SW*(2+2)/4+16*13/4
DW _COUNTDOWNCONTINUE,?,?,TM_TOTAL
DW _JMP,AFTER_TMCDTS
DW 0
BREAK_TURBO_MODETS LABEL WORD
DW _TURNOFFTURBOMODE,?
CLEARIT
DW 0
go_for_nisse_text db ' GRIM REAPER',0
tm_total_Text db ' GRIM REAPER TOTAL ',0
ASSUME DS:DATA
no_tm_text db ' NO BONUS',0
tm_total db ?,?,?,?,?,?,?,?,?,?,?,?
MILES_TEXT DB ' XXX SCREAMS',0
Jump_At_TS label word
CLEARIT
DW _FLASHON,1
DW _PRINT11,MILES_TEXT,SW*2*3/4
DW _WAIT,60
CLEARIT
DW _FLASHOFF,?
DW _FLASHON,9
dw _print11,jump_at_text,sw*2*3/4
DW _WAIT,120
CLEARIT
DW _FLASHOFF,?
DW 0
Jump_At2_TS label word
CLEARIT
DW _FLASHON,1
DW _PRINT11,MILES_TEXT,SW*2*3/4
DW _WAIT,60
CLEARIT
DW _FLASHOFF,?
DW _FLASHON,9
dw _print11,jump_at_text2,sw*2*3/4
DW _WAIT,120
CLEARIT
DW _FLASHOFF,?
DW 0
jump_at_text db 'XXX LITES EXTRA BALL',0
jump_at_text2 db 'XXX LITES ','7'+5,' MILLIONS',0
;*********************** NYA BALL LOST *******************
ASSUME DS:DATA
show_cyclones_text db ' SCREAMS X ',0
show_or_text db ' GHOST HUNT TOTAL ',0 ;CP!?
ball_lostTS LABEL WORD
CLEARIT
DW _PRINT13,GETTING_SICK_TEXT,SW*2/4*2
DW _LASTJINGLE,EMPTYJINGLE
DW _SETDECCOR,70 ;CPW!
DW _WAITJINGLE2,?
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-17*9/4
DW _PRINT5_number,HUNDRATUSEN,SW*1*2/4+14*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
;OFF ROAD!!!!!!
DW _JBCDZ,OR_TOTAL,no_happy_stewartTS
CLEARIT
DW _CALC_HAPPY ;CYCLONESCOREBCD & SIFFRORNA UPPDATERAS!
DW _PRINT5,show_or_TEXT,SW*1*2/4
DW _PRINT8_NUMBER_CENT,or_TOTAL,SW*2*7/4+TOTCENT
DW _WAIT,70 ;CPW!
dw _Sound_Effect,s_MultiLjud,0
CLEARIT
no_happy_stewartTS LABEL WORD
;TURBO MODE!!!!!!!
DW _JBCDZ,TM_TOTAL,no_MEGA_LAUGHTS
CLEARIT
DW _CALC_MEGA ;CYCLONESCOREBCD & SIFFRORNA UPPDATERAS!
DW _PRINT5,show_TURBO_TEXT,SW*1*2/4+4
DW _PRINT8_NUMBER_CENT,TM_TOTAL,SW*2*7/4+TOTCENT
DW _WAIT,70 ;CPW!
dw _Sound_Effect,s_MultiLjud,0
CLEARIT
no_MEGA_LAUGHTS 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 ;EXEKVERAS ENDAST VID XXBALLE
;UTF™R XBALLES VUNNA UNDER XXBALLEN
;OCH HOPPAR TILL CHECK_XXBALLE
;VID EJ XXBALLE: DUMRET
;VID XXBALLE: NŽSTA SPELARE ELLER AVSLUTA
dw _waitifmulti,2*60 ;cpgnu? (visa poeng lite lengre)
DW _MATRIXLGT,0
clearit
DW _CHANGE_PLAYER
CLEARIT
dw _wait,32000 ;BRŽCKS!
DW 0
SORRYNOBONUSTEXT DB ' SORRY ',94,' NO BONUS ',0
SHOW_TURBO_TEXT DB ' GRIM REAPER TOTAL',0
shoot_again_onTS LABEL BYTE ;Turn on shoot again . . .
CLEARIT
DW _WAITJINGLE,?
DW _FLASHON,SHOOT_AGAIN_SPEED
DW _SHOOT_AGAIN_ONN,1
DW _PRINT13,SHOOT_AGAIN_TEXT,SW*2/4*2 ;+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,60
DW _WAITJINGLE2,?
dw _flashoff,?
; dw _wait,1
check_xxballTS LABEL WORD
DW _check_Xxballs ;KOLLA SPELAREN N'S XXBALL.
;OM XXBALL: G™R NEWBALL
;OM EJ XXBALL: HOPPA TILL AFTER_XXBALLSTS
;KOMMER EJ HIT!
after_xxballsTS LABEL WORD
clearit
dw _check_high,?
DW _MATRIXLGT,0
DW _2_DEMO_MODE
dw _wait,30000
DW 0
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 *******************
ASSUME DS:DATA
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+4+2
dw _wait,120
DW _CLEAR2
DW _FLASHOFF,1
dw _rullgardin_upp,TRS_TEXT,1
dw _wait,90
CLEARIT
DW _FLASHON,1
DW _PRINT13,PL_TEXT,SW*2/4*2+3*4
dw _wait,90
DW _CLEAR3
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
BonusHeldTS label word
clearit
DW _PRINT13,BonusHeld_Text,SW*2/4*2
DW _WAIT,30
clearit
dw 0
BonusHeld_text db ' B O N U S H E L D ',0
LIT_XBALL_TEXT DB ' GET THE EXTRA BALL ',0
tiltTS LABEL WORD
DW _TILTED,?
CLEARIT
DW _PRINT13,TILT_TEXT,sw*2/4*2+16*0/4
DW _WAIT,32767
DW _PRINT13,CPTEXT,sw*2/4*2+16*0/4
DW 0
TILT_TEXT DB ' TILT TILT TILT',0
CPTEXT DB 'EVER HEARD OF TILT?',0
last_text db ' ',0
flashlast db ' ',0
slutsiffra db '0',0
startext db '*',0
last_pos dw 0
;***********************************************************
GETTING_SICK_TEXT DB ' DOWN THE DRAIN',0
PARTY_ON_TEXT DB ' KUK-AMIGA! ',0 ;N„men Gabriel hur du skriver!!!
ZEROQ DB '0'+7,0
SHOOT_AGAIN_TEXT DB 'SHOOT AGAIN PLAYER ',0
NO_OF_PLAYERS_TEXT DB 'PLAYERS X',0
NOLLA DB '7',0
show_bonus_TEXT DB 'BONUS',0
BONUS_X_TEXT DB 'BONUS*X*??',0
show_totalbonus_TEXT DB 'TOTAL*BONUS',0
fld_TEXT DB ' FRONTLINE DESIGN',0
PF_TEXT DB 'PINBALL FANTASIES',0
TRS_TEXT DB ' THE REAL SIMULATOR',0
PL_TEXT DB "STONES N BONES",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 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 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 ?X BONUS',0 ;11
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
BONUSX2TS LABEL WORD
CLEARIT
ASSUME DS:DATA2
DW _ANIMATION,_BONUSX2
CLEARIT
DW 0
BONUSX4TS LABEL WORD
CLEARIT
ASSUME DS:DATA2
DW _ANIMATION,_BONUSX4
CLEARIT
DW 0
DATA ENDS
;******************************************************************************
;*************************** Animations **************************************
;******************************************************************************
DATA2 SEGMENT PARA PUBLIC 'DATA'
dw 1
dw 4*4
_clear dw clear2,1
dw clear3,1
dw clear4,1
dw clear5,1
BONUSTIMEFIRST=25
BONUSTIME=3
BONUSTIMELAST=60
DW 1
DW 12*4
_BONUSX2 LABEL WORD
DW A_01_00,BONUSTIMEFIRST
DW A_01_01,BONUSTIME
DW A_01_02,BONUSTIME
DW A_01_03,BONUSTIME
DW A_01_04,BONUSTIME
DW A_01_05,BONUSTIME
DW A_01_06,BONUSTIME
DW A_01_07,BONUSTIME
DW A_01_08,BONUSTIME
DW A_01_09,BONUSTIME
DW A_01_10,BONUSTIME
DW A_01_11,BONUSTIMELAST
DW 1
DW 12*4
_BONUSX4 LABEL WORD
DW A_01_00,BONUSTIMEFIRST
DW A_02_00,BONUSTIME
DW A_02_01,BONUSTIME
DW A_02_02,BONUSTIME
DW A_02_03,BONUSTIME
DW A_02_04,BONUSTIME
DW A_02_05,BONUSTIME
DW A_02_06,BONUSTIME
DW A_02_07,BONUSTIME
DW A_02_08,BONUSTIME
DW A_02_09,BONUSTIME
DW A_02_10,BONUSTIMELAST
DW 1
DW 12*4
_BONUSX6 LABEL WORD
DW A_01_00,BONUSTIMEFIRST
DW A_03_00,BONUSTIME
DW A_03_01,BONUSTIME
DW A_03_02,BONUSTIME
DW A_03_03,BONUSTIME
DW A_03_04,BONUSTIME
DW A_03_05,BONUSTIME
DW A_03_06,BONUSTIME
DW A_03_07,BONUSTIME
DW A_03_08,BONUSTIME
DW A_03_09,BONUSTIME
DW A_03_10,BONUSTIMELAST
DW 1
DW 12*4
_BONUSX8 LABEL WORD
DW A_01_00,BONUSTIMEFIRST
DW A_04_00,BONUSTIME
DW A_04_01,BONUSTIME
DW A_04_02,BONUSTIME
DW A_04_03,BONUSTIME
DW A_04_04,BONUSTIME
DW A_04_05,BONUSTIME
DW A_04_06,BONUSTIME
DW A_04_07,BONUSTIME
DW A_04_08,BONUSTIME
DW A_04_09,BONUSTIME
DW A_04_10,BONUSTIMELAST
DW 1
DW 12*4
_BONUSX10 LABEL WORD
DW A_01_00,BONUSTIMEFIRST
DW A_05_00,BONUSTIME
DW A_05_01,BONUSTIME
DW A_05_02,BONUSTIME
DW A_05_03,BONUSTIME
DW A_05_04,BONUSTIME
DW A_05_05,BONUSTIME
DW A_05_06,BONUSTIME
DW A_05_07,BONUSTIME
DW A_05_08,BONUSTIME
DW A_05_09,BONUSTIME
DW A_05_10,BONUSTIMELAST
FRAMETIME=3
DW 0
DW 4 ;ANTAL FJANTIGA FUJUMPVARV!!!!!
DW 17*4-4
_JACKPOT LABEL WORD
DW A_06_00,FRAMETIME
DW A_06_01,FRAMETIME
DW A_06_02,FRAMETIME
DW A_06_03,FRAMETIME
DW A_06_04,FRAMETIME
DW A_06_05,FRAMETIME
DW A_06_06,FRAMETIME
DW A_06_07,FRAMETIME
DW A_06_08,FRAMETIME
DW A_06_09,FRAMETIME
DW A_06_10,FRAMETIME
DW A_06_11,FRAMETIME
DW A_06_12,FRAMETIME
DW A_06_13,FRAMETIME
DW A_06_14,FRAMETIME
DW A_06_15,FRAMETIME
DW A_06_16,FRAMETIME
FRAMETIME=3
DW 1
DW 8*4
_EXTRABALL LABEL WORD
DW A_07_00,FRAMETIME*9
DW A_07_01,FRAMETIME
DW A_07_02,FRAMETIME
DW A_07_03,FRAMETIME
DW A_07_04,FRAMETIME
DW A_07_05,FRAMETIME
DW A_07_06,FRAMETIME
DW A_07_07,FRAMETIME*17
FRAMETIME=1
DW 1
DW 16*4
_MILLION LABEL WORD
DW A_09_00,FRAMETIME
DW A_09_01,FRAMETIME
DW A_09_02,FRAMETIME
DW A_09_03,FRAMETIME
DW A_09_04,FRAMETIME
DW A_09_05,FRAMETIME
DW A_09_06,FRAMETIME
DW A_09_07,FRAMETIME
DW A_09_08,FRAMETIME
DW A_09_09,FRAMETIME
DW A_09_10,FRAMETIME
DW A_09_11,FRAMETIME
DW A_09_12,FRAMETIME
DW A_09_13,FRAMETIME
DW A_09_14,FRAMETIME
DW A_09_15,120
FRAMETIME=1
FRAMETIMELAST=30
DW 1
DW 8*4
_5 LABEL WORD
DW A_10_00,FRAMETIME
DW A_10_01,FRAMETIME
DW A_10_02,FRAMETIME
DW A_10_03,FRAMETIME
DW A_10_04,FRAMETIME
DW A_10_05,FRAMETIME
DW A_10_06,FRAMETIME
DW A_10_07,FRAMETIMELAST
FRAMETIME=1
DW 1
DW 8*4
_10 LABEL WORD
DW A_10200,FRAMETIME
DW A_10201,FRAMETIME
DW A_10202,FRAMETIME
DW A_10203,FRAMETIME
DW A_10204,FRAMETIME
DW A_10205,FRAMETIME
DW A_10206,FRAMETIME
DW A_10207,FRAMETIMELAST
DW 1
DW 8*4
_15 LABEL WORD
DW A_11_00,FRAMETIME
DW A_11_01,FRAMETIME
DW A_11_02,FRAMETIME
DW A_11_03,FRAMETIME
DW A_11_04,FRAMETIME
DW A_11_05,FRAMETIME
DW A_11_06,FRAMETIME
DW A_11_07,FRAMETIMELAST
DW 1
DW 8*4
_20 LABEL WORD
DW A_11200,FRAMETIME
DW A_11201,FRAMETIME
DW A_11202,FRAMETIME
DW A_11203,FRAMETIME
DW A_11204,FRAMETIME
DW A_11205,FRAMETIME
DW A_11206,FRAMETIME
DW A_11207,FRAMETIMELAST
extrn clear2,clear3,clear4,clear5:byte
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
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
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 ,a_03_08 ,a_03_09 ,a_03_10
extrn a_04_00,a_04_01,a_04_02,a_04_03,a_04_04,a_04_05,a_04_06 ,A_04_07 ,a_04_08 ,a_04_09 ,a_04_10
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 ,a_05_09 ,a_05_10
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 ,A_06_12 ,A_06_13 ,A_06_14 ,A_06_15,A_06_16
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
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,a_10_03,a_10_04,a_10_05,a_10_06 ,A_10_07
extrn a_10200,a_10201,a_10202,a_10203,a_10204,a_10205,a_10206 ,A_10207
extrn a_11_00,a_11_01,a_11_02,a_11_03,a_11_04,a_11_05,a_11_06 ,A_11_07
extrn a_11200,a_11201,a_11202,a_11203,a_11204,a_11205,a_11206 ,A_11207
DATA2 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
WHEN_NEW_GAME_RESET_TABLE:
CALL SLACK_LIGHTS
CALL RESETFLASHLIST
MOVEBCD JACKVALUE,JACKINIT
CALL RESET_VARS
CALL UPDATE_P_STRUC_4_ALL_PLAYERS
MOV XBALLS,0
MOV XxballE,FALSE
MOV FROM_DEMO_MODE,TRUE
;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
RETN
RESET_VARS:
MOV BONUS_TEXT[11],'8'
MOV play_TEXT[18],'8'
MOV play_TEXT[8],'8'
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 CYCLONECOUNTERBCD
MOV CX,6
REP STOSW
MOVEBCD OR_TOTAL,BCD0
MOVEBCD TM_TOTAL,BCD0
NIL AL
MOV DI,OFFSET SB_DISABLE_AREA
MOV CX,11
REP STOSB
NIL AX
MOV DI,OFFSET SKILLSCOREBCD
MOV CX,6
REP STOSW
MOVEBCD SULP_SCORE,BCD0
MOV BALLHIGH,FALSE
MOV HOLDBONUSFLAG,FALSE
MOV KEY_DISABLED,FALSE
MOV SB_DISABLED,FALSE
MOV KEY_ROL_DISABLED,TRUE
MOV RIP_ROL_DISABLED,FALSE
MOV LEFT_RAMP_DOWN_COUNTER,0
MOV GHOSTCOUNTER,0
MOV GHOST_FLASHING,FALSE
MOV TOWER_OPEN,FALSE
PUT_GATE_POS_LOW GATE3
PUT_GATE_POS_LOW GATE5
CALL INIT_TOWER
CALL INIT_VAULT
CALL INIT_WELL
MOV NEXTJUMP,10
MOV CYCLONECOUNTER,0
MOV AX,SLUMP_COUNTERN
NIL AH
MOV BL,3
DIV BL
INC AH
MOV SKILLKEY,AH
LIGHTFLASH AH,SKILLSPEED
MOV KICK_BACK_FLASHING,FALSE
MOV MB_FLASHING,FALSE
MOV _2X_SCREAMS_FLASHING,FALSE
MOV SULP_FLASHING,FALSE
MOV LOCK1_FLASHING,FALSE
MOV LOCK2_FLASHING,FALSE
MOV SULPSYNCER,0
MOV TBMILLIONFLASHING,0
MOV TB5MFLASHING,0
MOV TBSYNCER,0
MOV XBALLFLASHING,FALSE
MOV JACKPOTFLASHING,FALSE
MOV SJACKPOTFLASHING,FALSE
MOV HOLDBONUSFLASHING,FALSE
MOV DOUBLEBONUSFLASHING,FALSE
MOV HOLDBONUSFLAG,FALSE
MOV BPOINTER,39 ;MULTIPEL BONUS POINTER
MOV HIGH_VAULT,FALSE ;NOT KICKBACK IN THE VAULT?
MOV TBNEXT,0
MOV TURBOMODE,FALSE
MOV OFFROADMODE,FALSE
MOV MBDOWNCOUNTER,0
MOV SULPDOWNCOUNTER,0
MOV COMBODOWNCOUNTER,0
MOV COMBOSTAGE,0
MOV TOWERHUNTMODE,FALSE
MOV TOWERHUNTSTAGE,0
MOV TOWERHUNTDOWNCOUNTER,0
MOV MULTIDEMONDOWNCOUNTER,0
MOV MULTIDEMONMODE,FALSE
MOV LOCKVAULTFLASHING,FALSE
MOV LOCKWELLFLASHING,FALSE
MOV HOLDMULTICOUNTER,FALSE
;HŽR VAR DEN! ; mov paRTYFLASh,false
MOV DEMONFLASHING,FALSE
MOV FIX_TELEPORT_BUG,FALSE ;OVERRIDE-VARIABEL!
MOV GHOST_INH_SB,FALSE
MOV BONUS_X,1
MOV IN_VAULT,FALSE ;TILT-BUG-FIX
MOV IN_WELL,FALSE ;TILT-BUG-FIX
MOV IN_TOWER,FALSE ;TILT-BUG-FIX
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_SPRING1
MOV AL,S_SPRING1+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 DROPX,DROPY,0,0,FALSE
MOV HOLDSTILL,TRUE
MOV ALLOWFLIP,FALSE ;KILL FLIPPERS!
ADDTASK SOUNDRINNER
MOV SPECIALMODE,FALSE
ENDFLASH 38 ;GRIM OFF! ;CP.
LIGHTOFF 38
MOV CURRENT_PRIORITY,0
EFFECT LOSTBALL
MOV LASTLOOPVAL,0
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 pos4J
mov ax,12+3+1
mul cx
mov cx,ax
std
rep movsb
pos4J: 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 feltecken_du ;ej tryckt!
mov scan_code,-1
mov bx,offset alfa_keys
xlat
cmp al,0
je feltecken_du ;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
feltecken_du:
pop es
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 PLAY_TEXT[8],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]
INC PLAY_TEXT[8]
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
_TurnOffSpecialMode:
MOVE SISA,1
MOV DOTRUT,OFFSET WAITRUT
mov specialmode,false
mov current_priority,0
jmp Normal_End
_TurnONSpecialMode:
MOVE SISA,1
MOV DOTRUT,OFFSET WAITRUT
MOV SPECIALMODE,TRUE
JMP NORMAL_END
_TURNONTURBOMODE:
MOVE SISA,1
MOV DOTRUT,OFFSET WAITRUT
MOV TURBOMODE,TRUE
JMP NORMAL_END
_TURNOFFTURBOMODE:
MOVE SISA,1
MOV DOTRUT,OFFSET WAITRUT
MOV TURBOMODE,FALSE
JMP NORMAL_END
_TURNONOFFROADMODE:
MOVE SISA,1
MOV DOTRUT,OFFSET WAITRUT
MOV OFFROADMODE,TRUE
JMP NORMAL_END
_TURNOFFOFFROADMODE:
MOVE SISA,1
MOV DOTRUT,OFFSET WAITRUT
MOV OFFROADMODE,FALSE
JMP NORMAL_END
_knacket:
mov dotrut,offset knackrut1
mov sisa,1
MOV PLAYER,1 ;F™R CHECK_XXBALL
jmp normal_end
knackrut1:
PLAYJINGLE_PENETRATE S_endfig
MOV LASTJINGLE,emptyjingle ;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
;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 † ti†
mov last_pos,dx
mov cs:knackptr,offset knacktab_LO
mov si,nof_banks_LO
CMP HI_RES,TRUE
JNE NOTHIRES38
mov cs:knackptr,offset knacktab_HI
mov si,nof_banks_HI
NOTHIRES38:
mov bx,cs:knackptr
move cs:knacktiden,[bx]
mov sisa,SI
retn
knackptr dw ?
knacktiden dw ?
alla_glada db ?
knackrut2:
push si
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
dec cs:knacktiden
jnz over_iii
mov bx,cs:knackptr
move cs:knacktiden,[bx]
add cs:knackptr,2
pop si
dec si
push si
DEC LAST_POS
CMP LAST_POS,-1
JNE OVER_III
MOV LAST_POS,9
OVER_III:
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,emptyjingle
mov si,0
retta_nuda:
retn
_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!
NIL AH
SUB AL,'7'
POP BX
CMP LAST_POS,AX
JE THIS_ONE ;HAN SKA F<> XXBALL!!! CP?
INC PLAYER ;INGEN XXBALL F™R HONOM!
MOV AL,PLAYER
CMP AL,PLAYERS
JNA TESTNEXTPL
MOV BX,OFFSET after_xxballsTS ;<3B>X<EFBFBD> AVSLUT
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: ;VID EJ XXBALLE: DUMRET
;VID XXBALLE: NŽSTA SPELARE ELLER AVSLUTA
;(FIXAR EV XBALL)
CMP XXBALLE,FALSE
JE HU_
PUSH BX
CALL VARS_2_P_STRUC ;STORE TABLE AND SCORE!
POP BX
CMP XBALLS,0 ;LAUGH AGAIN?
JA 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_XXBALLSTS ;END XXBALLE GAME
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 XBALLS,0 ;LAUGH AGAIN?
JA 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
MOV play_TEXT[18],AL
PLAYER_CHANGED:
MOV AL,PLAYER
ADD AL,'7' ;SEPEKOMPENSERING
MOV PLAYERSTEXT[7],AL
MOV play_TEXT[8],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]
LET_HIM_SHOOT_AGAIN: ;2 ING<4E>NGAR!
DEC XBALLS
MOV BX,OFFSET shoot_again_onTS
MOV NODOTCOUNT,0
UPDAT_SCORE
; MOV NEXT_A,BX ;CP?
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 ;KARMANN GHIA???
CALL SLACK_LIGHTS
MOV ADDPLAYERS,TRUE
SUICIDE
LOOSE_BALL ENDP
;******************************************************************************
;******************************** NEW_BALL ************************************
;******************************************************************************
NEW_BALL_TASK:
WAITSYNCS 30
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
MOV ALLOWFLIP,TRUE
MOV TILTFLAG,FALSE
MOV TILTCOUNTER,0
MOV SCORECHANGED,FALSE
RETN
SOUNDNEWBALL:
WAITSYNCS 45
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
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
MOV CX,12/2
MOVE ES,DS
LEA SI,PLAYER_AREA[BX].P_SIFFRORNA
MOV DI,OFFSET SIFFRORNA
MOV CX,12/2
REP MOVSW
LEA SI,PLAYER_AREA[BX].P_BONUSSIFFRORNA
MOV DI,OFFSET BONUSSIFFRORNA
MOV CX,12/2
REP MOVSW
LEA SI,PLAYER_AREA[BX].P_SKILLSCOREBCD
MOV DI,OFFSET SKILLSCOREBCD
MOV CX,12/2
REP MOVSW
CALL DOLIGHTS
UPDATE_LIGHT 26,PLAYER_AREA[BX].P_STONE_S ;STONE
UPDATE_LIGHT 27,PLAYER_AREA[BX].P_STONE_T
UPDATE_LIGHT 28,PLAYER_AREA[BX].P_STONE_O
UPDATE_LIGHT 29,PLAYER_AREA[BX].P_STONE_N
UPDATE_LIGHT 30,PLAYER_AREA[BX].P_STONE_E
CALL DOLIGHTS
UPDATE_LIGHT 20,PLAYER_AREA[BX].P_BONE_B ;BONE
UPDATE_LIGHT 21,PLAYER_AREA[BX].P_BONE_O
UPDATE_LIGHT 22,PLAYER_AREA[BX].P_BONE_N
UPDATE_LIGHT 23,PLAYER_AREA[BX].P_BONE_E
UPDATE_LIGHT 4,PLAYER_AREA[BX].P_R_RIP ;RIP
UPDATE_LIGHT 5,PLAYER_AREA[BX].P_I_RIP
UPDATE_LIGHT 6,PLAYER_AREA[BX].P_P_RIP
CALL DOLIGHTS
MOV AL,PLAYER_AREA[BX].P_KICKBACKFLASHING ;KICKBACK
MOV KICK_BACK_FLASHING,AL
CMP AL,TRUE
JNE NOTTHEKICKBACK
PUSH BX
ENDFLASH 44
LIGHTFLASH 44,KICKSPEED
PUT_GATE_NEG_LOW GATE5
POP BX
NOTTHEKICKBACK:
MOVE NEXTJUMP,PLAYER_AREA[BX].P_NEXTJUMP
MOVE CYCLONECOUNTER,PLAYER_AREA[BX].P_CYCLONECOUNTER
MOVEBCD CYCLONECOUNTERBCD,PLAYER_AREA[BX].P_CYCLONECOUNTERBCD
MOV CL,PLAYER_AREA[BX].P_GHOSTCOUNTER
MOV GHOSTCOUNTER,CL
OR CL,CL
JZ NOGHOSTS
NIL CH
NEXTGHOST:
PUSH CX
PUSH BX
MOV BL,CL
DEC BL
MOV AL,SIZE GHOST_STRUC
MUL BL
MOV BX,AX
MOV AL,GHOSTAREA[BX].G_LIGHTNO
LIGHTON AL
POP BX
POP CX
LOOP NEXTGHOST
NOGHOSTS:
MOV AL,PLAYER_AREA[BX].P_GHOSTFLASHING
MOV GHOST_FLASHING,AL
CMP AL,TRUE
JNE NOTFLASHTHEGHOST
MOV BL,GHOSTCOUNTER
MOV AL,SIZE GHOST_STRUC
MUL BL
MOV BX,AX
ADD BX,OFFSET GHOSTAREA
MOV AL,[BX].G_LIGHTNO
LIGHTFLASH AL,GHOSTSPEED
ENDFLASH 16
LIGHTFLASH 16,TRIGHOSTSPEED
NOTFLASHTHEGHOST:
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!
MOV CX,12/2
MOVE ES,DS
LEA DI,PLAYER_AREA[BX].P_SIFFRORNA
MOV SI,OFFSET SIFFRORNA
MOV CX,12/2
REP MOVSW
LEA DI,PLAYER_AREA[BX].P_BONUSSIFFRORNA
MOV SI,OFFSET BONUSSIFFRORNA
MOV CX,12/2
REP MOVSW
LEA DI,PLAYER_AREA[BX].P_SKILLSCOREBCD
MOV SI,OFFSET SKILLSCOREBCD
MOV CX,12/2
REP MOVSW
UPDATE_PSTRUC PLAYER_AREA[BX].P_STONE_S,26 ;STONE
UPDATE_PSTRUC PLAYER_AREA[BX].P_STONE_T,27
UPDATE_PSTRUC PLAYER_AREA[BX].P_STONE_O,28
UPDATE_PSTRUC PLAYER_AREA[BX].P_STONE_N,29
UPDATE_PSTRUC PLAYER_AREA[BX].P_STONE_E,30
UPDATE_PSTRUC PLAYER_AREA[BX].P_BONE_B,20 ;BONE
UPDATE_PSTRUC PLAYER_AREA[BX].P_BONE_O,21
UPDATE_PSTRUC PLAYER_AREA[BX].P_BONE_N,22
UPDATE_PSTRUC PLAYER_AREA[BX].P_BONE_E,23
UPDATE_PSTRUC PLAYER_AREA[BX].P_R_RIP,4 ;RIP
UPDATE_PSTRUC PLAYER_AREA[BX].P_I_RIP,5
UPDATE_PSTRUC PLAYER_AREA[BX].P_P_RIP,6
MOVE PLAYER_AREA[BX].P_NEXTJUMP,NEXTJUMP
MOVE PLAYER_AREA[BX].P_CYCLONECOUNTER,CYCLONECOUNTER
MOVEBCD PLAYER_AREA[BX].P_CYCLONECOUNTERBCD,CYCLONECOUNTERBCD
MOVAL PLAYER_AREA[BX].P_KICKBACKFLASHING,KICK_BACK_FLASHING
MOVAL PLAYER_AREA[BX].P_GHOSTCOUNTER,GHOSTCOUNTER
MOVAL PLAYER_AREA[BX].P_GHOSTFLASHING,GHOST_FLASHING
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
;****************************************
;* 3 light rol *
;****************************************
CMP KEY_ROL_DISABLED,TRUE
JE NO_KEY_ROL
START_LIGHT=1
SHIFT_LIGHT
NO_KEY_ROL:
CMP RIP_ROL_DISABLED,TRUE
JE NO_RIP_ROL
START_LIGHT=4
SHIFT_LIGHT
NO_RIP_ROL:
NO_SHIFT:
RETN
CHECK_SHIFTKEYS ENDP
;******************************************************************************
;***************************** BRICKOR & KNAPPAR ******************************
;******************************************************************************
SB_TOUCHERA MACRO LNO
LOCAL QXX,XXT,QXXT
CMP GHOST_INH_SB,TRUE
JE QXX
CMP SB_DISABLED,TRUE
JE QXX
CMP SB_DISABLE_AREA[LNO-20],TRUE
JE QXX
MOV SB_DISABLE_AREA[LNO-20],TRUE
CALL TOUCHSETA
MOV LIGHTSTATUS[LNO],TRUE
CALL CHECK_STONE_BONE
JC ALL_STONE_BONE
ADDTASK XXT
LIGHTFLASH LNO,SBSPEED
QXX: RETN
XXT: CMP SB_DISABLED,TRUE
JE QXXT
WAITSYNCS SBFASTTIME
ENDFLASH LNO
LIGHTON LNO
MOV SB_DISABLE_AREA[LNO-20],FALSE
SUICIDE
QXXT: ENDFLASH LNO
MOV SB_DISABLE_AREA[LNO-20],FALSE
SUICIDE
ENDM
SB_TOUCHERB MACRO LNO
LOCAL QXX,XXT,QXXT
CMP GHOST_INH_SB,TRUE
JE QXX
CMP SB_DISABLED,TRUE
JE QXX
CMP SB_DISABLE_AREA[LNO-20],TRUE
JE QXX
MOV SB_DISABLE_AREA[LNO-20],TRUE
CALL TOUCHSETB
MOV LIGHTSTATUS[LNO],TRUE
CALL CHECK_STONE_BONE
JC ALL_STONE_BONE
ADDTASK XXT
LIGHTFLASH LNO,SBSPEED
QXX: RETN
XXT: CMP SB_DISABLED,TRUE
JE QXXT
WAITSYNCS SBFASTTIME
ENDFLASH LNO
LIGHTON LNO
MOV SB_DISABLE_AREA[LNO-20],FALSE
SUICIDE
QXXT: ENDFLASH LNO
MOV SB_DISABLE_AREA[LNO-20],FALSE
SUICIDE
ENDM
TOUCH_B_BONE:
SB_TOUCHERA 20
TOUCH_O_BONE:
SB_TOUCHERA 21
TOUCH_N_BONE:
SB_TOUCHERA 22
TOUCH_E_BONE:
SB_TOUCHERA 23
TOUCH_S_STONE:
SB_TOUCHERB 26
TOUCH_T_STONE:
SB_TOUCHERB 27
TOUCH_O_STONE:
SB_TOUCHERB 28
TOUCH_N_STONE:
SB_TOUCHERB 29
TOUCH_E_STONE:
SB_TOUCHERB 30
TOUCHSETA:
CALL ADDOFFROAD
SOUNDEFFECT S_TOUCH2,0
ADDSCORE BCD27530
ADDBONUS BCD510
RETN
TOUCHSETB:
CALL ADDOFFROAD
SOUNDEFFECT S_TOUCH1,40
ADDSCORE BCD17520
ADDBONUS BCD750
RETN
ALL_STONE_BONE:
CALL JACKADD
MOV SB_DISABLED,TRUE
MOVE ES,DS
NIL AL
MOV DI,OFFSET SB_DISABLE_AREA
MOV CX,11
REP STOSB
ENDFLASH 20 ;B
ENDFLASH 21 ;O
ENDFLASH 22 ;N
ENDFLASH 23 ;E
ENDFLASH 26 ;S
ENDFLASH 27 ;T
ENDFLASH 28 ;O
ENDFLASH 29 ;N
ENDFLASH 30 ;E
CMP GHOST_FLASHING,TRUE
JE GANDALF_THE_GREY
MOV BL,GHOSTCOUNTER
MOV AL,SIZE GHOST_STRUC
MUL BL
MOV BX,AX
MOV AX,GHOSTAREA[BX].G_SBEFF
EFFECT AX
JMP GANDALF_THE_WHITE
GANDALF_THE_GREY:
EFFECT EVENT_LIT
GANDALF_THE_WHITE:
CALL DO_GHOST
ADDTASK ALL_STONE_BONE_2
RETN
ALL_STONE_BONE_2:
WAITSYNCS 2
LIGHTFLASH 20,SBSPEED2
LIGHTFLASH 21,SBSPEED2
LIGHTFLASH 22,SBSPEED2
LIGHTFLASH 23,SBSPEED2
LIGHTFLASH 26,SBSPEED2
LIGHTFLASH 27,SBSPEED2
LIGHTFLASH 28,SBSPEED2
LIGHTFLASH 29,SBSPEED2
LIGHTFLASH 30,SBSPEED2
ADDTASK ALL_STONE_BONE_3
SUICIDE
ALL_STONE_BONE_3:
WAITSYNCS SBFASTTIME2
ENDFLASH 20 ;B
ENDFLASH 21 ;O
ENDFLASH 22 ;N
ENDFLASH 23 ;E
ENDFLASH 26 ;S
ENDFLASH 27 ;T
ENDFLASH 28 ;O
ENDFLASH 29 ;N
ENDFLASH 30 ;E
LIGHTOFF 20 ;B
LIGHTOFF 21 ;O
LIGHTOFF 22 ;N
LIGHTOFF 23 ;E
LIGHTOFF 26 ;S
LIGHTOFF 27 ;T
LIGHTOFF 28 ;O
LIGHTOFF 29 ;N
LIGHTOFF 30 ;E
MOV SB_DISABLED,FALSE
SUICIDE
CHECK_STONE_BONE: ;-C- IF ALL STONE BONE
CMP LIGHTSTATUS[20],TRUE ;B
JNE NCST
CMP LIGHTSTATUS[21],TRUE ;O
JNE NCST
CMP LIGHTSTATUS[22],TRUE ;N
JNE NCST
CMP LIGHTSTATUS[23],TRUE ;E
JNE NCST
CMP LIGHTSTATUS[26],TRUE ;S
JNE NCST
CMP LIGHTSTATUS[27],TRUE ;T
JNE NCST
CMP LIGHTSTATUS[28],TRUE ;O
JNE NCST
CMP LIGHTSTATUS[29],TRUE ;N
JNE NCST
CMP LIGHTSTATUS[30],TRUE ;E
JNE NCST
STC
RETN
NCST: CLC
RETN
DO_GHOST PROC NEAR ;ENABLE GHOST IF NOT ENABLED
CMP GHOST_FLASHING,TRUE
JE QDG
MOV GHOST_FLASHING,TRUE
MOV BL,GHOSTCOUNTER
MOV AL,SIZE GHOST_STRUC
MUL BL
MOV BX,AX
MOV DL,GHOSTAREA[BX].G_LIGHTNO
LIGHTFLASH DL,GHOSTSPEED
LIGHTFLASH 16,TRIGHOSTSPEED
QDG: RETN
DO_GHOST ENDP
;******************************************************************************
;********************************** LOWER *************************************
;******************************************************************************
PARTYOFFAREA: ;REAL GAME ON
MOV BX,OFFSET PARTY_OFFTS
CALL DO_MATRIX
MOV BALLHIGH,FALSE
MOV PARTYFLASH,FALSE
MOV ADDPLAYERS,FALSE
MOV CURRENT_PRIORITY,0
PLAYJINGLE S_MAIN
MOV LASTJINGLE,1
MOV I_UTSKJUT,FALSE ;TILL<4C>TER INACTIVE-SLINGAN (DOTMATRIX)
RETN
;*********************************** GAME ON **********************************
CLOSE1: ;GAME ON
CALL CLOSEBUMPERS
MOV HOLDMULTICOUNTER,FALSE
MOV SI,OFFSET BCD10000
MOV DI,OFFSET SIFFRORNA
CALL ADDSCOREBCD
MOV SI,OFFSET BCD1000
MOV DI,OFFSET BONUSSIFFRORNA
CALL ADDSCOREBCD
RETN
;***************************** BYGEL15 *******************************
BYGEL15: ;IN TO TOWER
RETN
;***************************** BYGEL16 *******************************
BYGEL16: ;UPP TILL BUMPEROMR<4D>DET
PUT_GATE_NEG_LOW GATE2
CALL ADDTURBO ;CP! EGENTLIGEN SKALL DENNA LIGGA I BUMPEROMR.
RETN
OPENBUMPERS:
PUT_GATE_NEG_LOW GATE2
RETN
CLOSEBUMPERS: ;F<>R EJ CALLAS P<> MANUELLT!!!
PUT_GATE_POS_LOW GATE2
CMP SULP_FLASHING,TRUE
JNE NOTSFL
MOV SI,OFFSET BCD1000000
MOV DI,OFFSET SULP_SCORE
CALL ADDSCOREBCD
MOV SI,OFFSET SULP_SCORE
MOV DI,OFFSET SIFFRORNA
CALL ADDSCOREBCD
EFFECT MILLIONPLUS
ENDFLASH 19
LIGHTOFF 19
MOV SULP_FLASHING,FALSE
NOTSFL:
RETN
;***************************** Bygel5 *******************************
Bygel5: ;K
CMP KEY_DISABLED,TRUE
JE QB5
SOUNDEFFECT SBYGEL1,0
ADDSCORE BCD10060
ADDBONUS BCD1010
MOV LIGHTSTATUS[1],TRUE
CMP SKILLKEY,1
JNE NOT_SKILL_K
ENDFLASH 1
MOV SI,OFFSET BCD1000000
MOV DI,OFFSET SKILLSCOREBCD
CALL ADDSCOREBCD
MOV SI,OFFSET SKILLSCOREBCD
MOV DI,OFFSET SIFFRORNA
CALL ADDSCOREBCD
EFFECT SKILLSHOT
CALL VAULTADD
CALL TOWERADD
CALL JACKADD
CALL WELLADD
NOT_SKILL_K:
CMP SKILLKEY,0
JZ K_NO_SKILL
MOV KEY_ROL_DISABLED,FALSE
ENDFLASH 2
ENDFLASH 3
LIGHTOFF 2
LIGHTOFF 3
K_NO_SKILL:
MOV SKILLKEY,0
CALL CHECK_KEY
JC ALL_KEY
ADDTASK BYGEL5T
LIGHTFLASH 1,SBSPEED
MOV KEY_ROL_DISABLED,TRUE
QB5: RETN
BYGEL5T:
CMP KEY_DISABLED,TRUE
JE QB5T
WAITSYNCS SBFASTTIME
ENDFLASH 1 ;K
LIGHTON 1
MOV KEY_ROL_DISABLED,FALSE
QB5T: SUICIDE
;***************************** Bygel6 *******************************
Bygel6: ;E
CMP KEY_DISABLED,TRUE
JE QB6
SOUNDEFFECT SBYGEL1,0
ADDSCORE BCD10060
ADDBONUS BCD1010
MOV LIGHTSTATUS[2],TRUE
CMP SKILLKEY,2
JNE NOT_SKILL_E
ENDFLASH 2
MOV SI,OFFSET BCD1000000
MOV DI,OFFSET SKILLSCOREBCD
CALL ADDSCOREBCD
MOV SI,OFFSET SKILLSCOREBCD
MOV DI,OFFSET SIFFRORNA
CALL ADDSCOREBCD
EFFECT SKILLSHOT
CALL VAULTADD
CALL TOWERADD
CALL JACKADD
CALL WELLADD
NOT_SKILL_E:
CMP SKILLKEY,0
JZ E_NO_SKILL
MOV KEY_ROL_DISABLED,FALSE
ENDFLASH 1
ENDFLASH 3
LIGHTOFF 1
LIGHTOFF 3
E_NO_SKILL:
MOV SKILLKEY,0
CALL CHECK_KEY
JC ALL_KEY
ADDTASK BYGEL6T
MOV KEY_ROL_DISABLED,TRUE
LIGHTFLASH 2,SBSPEED
QB6: RETN
BYGEL6T:
CMP KEY_DISABLED,TRUE
JE QB6T
WAITSYNCS SBFASTTIME
ENDFLASH 2 ;E
LIGHTON 2
MOV KEY_ROL_DISABLED,FALSE
QB6T: SUICIDE
;***************************** Bygel7 *******************************
Bygel7: ;Y
CMP KEY_DISABLED,TRUE
JE QB7
SOUNDEFFECT SBYGEL1,0
ADDSCORE BCD10060
ADDBONUS BCD1010
MOV LIGHTSTATUS[3],TRUE
CMP SKILLKEY,3
JNE NOT_SKILL_Y
ENDFLASH 3
MOV SI,OFFSET BCD1000000
MOV DI,OFFSET SKILLSCOREBCD
CALL ADDSCOREBCD
MOV SI,OFFSET SKILLSCOREBCD
MOV DI,OFFSET SIFFRORNA
CALL ADDSCOREBCD
EFFECT SKILLSHOT
CALL VAULTADD
CALL TOWERADD
CALL JACKADD
CALL WELLADD
NOT_SKILL_Y:
CMP SKILLKEY,0
JZ Y_NO_SKILL
MOV KEY_ROL_DISABLED,FALSE
ENDFLASH 1
ENDFLASH 2
LIGHTOFF 1
LIGHTOFF 2
Y_NO_SKILL:
MOV SKILLKEY,0
CALL CHECK_KEY
JC ALL_KEY
ADDTASK BYGEL7T
LIGHTFLASH 3,SBSPEED
MOV KEY_ROL_DISABLED,TRUE
QB7: RETN
BYGEL7T:
CMP KEY_DISABLED,TRUE
JE QB7T
WAITSYNCS SBFASTTIME
ENDFLASH 3 ;Y
LIGHTON 3
MOV KEY_ROL_DISABLED,FALSE
QB7T: SUICIDE
ALL_KEY:
CALL VAULTADD
CALL JACKADD
MOV KEY_DISABLED,TRUE
MOV KEY_ROL_DISABLED,TRUE
MOV SKILLKEY,0
ENDFLASH 1 ;K
ENDFLASH 2 ;E
ENDFLASH 3 ;Y
LIGHTFLASH 1,SBSPEED2
LIGHTFLASH 2,SBSPEED2
LIGHTFLASH 3,SBSPEED2
CMP TBNEXT,0
JNE NOTTB1
CMP TBMILLIONFLASHING,TRUE
JE KEFFREADY
SYNCEDFLASH 11,TBSPEED,TBSYNCER
MOV TBMILLIONFLASHING,TRUE
JMP KEFFREADY
NOTTB1:
CMP TBNEXT,1
JE TB5
CMP TBNEXT,4
JB NOTTB5
TB5: CMP TB5MFLASHING,TRUE
JE KEFFREADY
SYNCEDFLASH 12,TBSPEED,TBSYNCER
MOV TB5MFLASHING,TRUE
JMP KEFFREADY
NOTTB5:
CMP TBNEXT,2
JNE NOTTBDB
CMP DOUBLEBONUSFLASHING,TRUE
JE KEFFREADY
SYNCEDFLASH 14,TBSPEED,TBSYNCER
MOV DOUBLEBONUSFLASHING,TRUE
JMP KEFFREADY
NOTTBDB:
CMP TBNEXT,3
JNE NOTTBHB
CMP HOLDBONUSFLASHING,TRUE
JE KEFFREADY
SYNCEDFLASH 13,TBSPEED,TBSYNCER
MOV HOLDBONUSFLASHING,TRUE
JMP KEFFREADY
NOTTBHB:
KEFFREADY:
INC TBNEXT
ADDTASK ALL_KEY_2
CMP TOWER_OPEN,TRUE
JE TOWER_ALREADY_OPEN
EFFECT OPENTOWER
MOV TOWER_OPEN,TRUE
ENDFLASH 7
LIGHTFLASH 7,TOWERSPEED
TOWER_ALREADY_OPEN:
PUT_GATE_NEG_LOW GATE3
RETN
ALL_KEY_2:
WAITSYNCS SBFASTTIME2
ENDFLASH 1
ENDFLASH 2
ENDFLASH 3
LIGHTOFF 1
LIGHTOFF 2
LIGHTOFF 3
MOV KEY_DISABLED,FALSE
MOV KEY_ROL_DISABLED,FALSE
SUICIDE
CHECK_KEY: ;-C- IF ALL KEY
CMP LIGHTSTATUS[1],TRUE ;K
JNE NCK
CMP LIGHTSTATUS[2],TRUE ;E
JNE NCK
CMP LIGHTSTATUS[3],TRUE ;Y
JNE NCK
STC
RETN
NCK: CLC
RETN
;***************************** THE TOWER *******************************
GropA: ;TOWER SUG-H<>L
SETBALLPOS TOWERX,TOWERY,0,0,TRUE
MOV HOLDSTILL,TRUE
MOV IN_TOWER,TRUE
CALL ADDTURBO
CALL JACKADD
MOV INHIBIT_COUNT_DOWN,TRUE
MOV WAS_SPECIAL,FALSE
CMP SPECIALMODE,TRUE
JNE JAJA_DE_E_LUNGT
MOV WAS_SPECIAL,TRUE
MOVAL TURBOBACKUP,TURBOMODE
JAJA_DE_E_LUNGT:
MOV AL,TOWERHUNTMODE
MOV TOWERHUNTMODEORIG,AL
PUT_GATE_POS_LOW GATE3 ;CLOSE TO THE TOWER
PUT_GATE_NEG_LOW GATE2 ;OPEN TO THE BUMPERS
MOV TOWER_OPEN,FALSE
ENDFLASH 7
LIGHTOFF 7
MOV REMAL,0
CMP TOWERHUNTMODE,TRUE ;TOWER HUNT?
JNE NOTTHMODE
CMP TOWERHUNTSTAGE,1 ;TOWER HUNT 1?
JNE NOTSTAGE1
EFFECT TOWERHUNT1
CMP LASTJINGLE,50
JE ITS50A
INC LASTJINGLE
ITS50A: ADD REMAL,AL
MOV INH_EFF,TRUE
MOV TOWERHUNTSTAGE,2
PUT_GATE_NEG_LOW GATE3
CMP TOWER_OPEN,TRUE
JE TOWAO
ENDFLASH 7
LIGHTFLASH 7,TOWERSPEED
MOV TOWER_OPEN,TRUE
TOWAO: JMP THSTAGEDONE
NOTSTAGE1:
CMP TOWERHUNTSTAGE,2 ;TOWER HUNT 2?
JNE NOTSTAGE2
EFFECT TOWERHUNT2
CMP LASTJINGLE,50
JE ITS50B
INC LASTJINGLE
ITS50B: ADD REMAL,AL
MOV INH_EFF,TRUE
MOV TOWERHUNTSTAGE,3
PUT_GATE_NEG_LOW GATE3
CMP TOWER_OPEN,TRUE
JE TOWAO2
ENDFLASH 7
LIGHTFLASH 7,TOWERSPEED
MOV TOWER_OPEN,TRUE
TOWAO2: JMP THSTAGEDONE
NOTSTAGE2:
CMP TOWERHUNTSTAGE,3 ;TOWER HUNT 3?
JNE NOTSTAGE3
EFFECT TOWERHUNT3
CMP LASTJINGLE,50
JE ITS50C
INC LASTJINGLE
ITS50C: ADD REMAL,AL
MOV INH_EFF,TRUE
MOV TOWERHUNTSTAGE,0
PUT_GATE_NEG_LOW GATE3
CMP TOWER_OPEN,TRUE
JE TOWAO3
ENDFLASH 7
LIGHTFLASH 7,TOWERSPEED
MOV TOWER_OPEN,TRUE
TOWAO3:
NOTSTAGE3:
THSTAGEDONE:
NOTTHMODE:
CMP SJACKPOTFLASHING,TRUE ;SUPER JACK?
JNE NOT_T_SJ
MOV SJACKPOTFLASHING,FALSE
ENDFLASH 10
LIGHTOFF 10
EFFECTBRACK SUPERJACK
ADD REMAL,AL
MOV INH_EFF,TRUE
NOT_T_SJ:
CMP JACKPOTFLASHING,TRUE ;JACKPOT?
JNE NOT_T_J
MOV JACKPOTFLASHING,FALSE
ENDFLASH 9
LIGHTOFF 9
EFFECTBRACK JACKPOT
ADD REMAL,AL
MOV SI,OFFSET JACKVALUE
MOV DI,OFFSET SIFFRORNA
CALL ADDSCOREBCD
MOVEBCD JACKVALUE,JACKINIT
SYNCEDFLASH 10,TBSPEED,TBSYNCER
MOV SJACKPOTFLASHING,TRUE
CMP TOWER_OPEN,TRUE
JE TALRO
MOV TOWER_OPEN,TRUE
ENDFLASH 7
LIGHTFLASH 7,TOWERSPEED
TALRO: PUT_GATE_NEG_LOW GATE3
ADDTASK SJOFF
MOV INH_EFF,TRUE
NOT_T_J:
CMP XBALLFLASHING,TRUE ;EXTRA BALL?
JNE NOT_T_XB
MOV XBALLFLASHING,FALSE
ENDFLASH 8
LIGHTOFF 8
EFFECT EXTRABALL
ADD REMAL,AL
INC XBALLS
MOV INH_EFF,TRUE
NOT_T_XB:
CMP DOUBLEBONUSFLASHING,TRUE ;DOUBLE BONUS?
JNE NOT_T_DB
MOV DOUBLEBONUSFLASHING,FALSE
ENDFLASH 14
LIGHTOFF 14
EFFECT DOUBLEBONUS
ADD REMAL,AL
MOV SI,OFFSET BONUSSIFFRORNA
MOV DI,OFFSET BONUSSIFFRORNA
CALL ADDSCOREBCD
MOV INH_EFF,TRUE
NOT_T_DB:
CMP HOLDBONUSFLASHING,TRUE ;HOLD BONUS?
JNE NOT_T_HB
MOV HOLDBONUSFLASHING,FALSE
ENDFLASH 13
LIGHTOFF 13
EFFECT HOLDBONUS
ADD REMAL,AL
MOV HOLDBONUSFLAG,TRUE
MOV INH_EFF,TRUE
NOT_T_HB:
CMP TB5MFLASHING,TRUE ;5 MILLIONS?
JNE NOT_T_5M
MOV TB5MFLASHING,FALSE
ENDFLASH 12
LIGHTOFF 12
EFFECT TMILLION5
ADD REMAL,AL
MOV INH_EFF,TRUE
NOT_T_5M:
CMP TBMILLIONFLASHING,TRUE ;MILLION ?
JNE NOT_T_MILLION
MOV TBMILLIONFLASHING,FALSE
ENDFLASH 11
LIGHTOFF 11
EFFECT TMILLION
ADD REMAL,AL
MOV INH_EFF,TRUE
jmp notthmode2 ;ska de va s† h„r? (annars f†r man
; b†de million och tower bonus (2M))
NOT_T_MILLION:
EFFECT SCORETOWER ;TOWER BONUS ONLY!
ADD REMAL,AL
MOV SI,OFFSET TOWERVALUE
MOV DI,OFFSET SIFFRORNA
CALL ADDSCOREBCD
MOVEBCD TOWERVALUE,TOWERSTART
CMP TOWERHUNTMODE,TRUE ;TOWER HUNT?
JNE NOTTHMODE2
PUT_GATE_NEG_LOW GATE3
ENDFLASH 7
LIGHTFLASH 7,TOWERSPEED
MOV TOWER_OPEN,TRUE
NOTTHMODE2:
CMP REMAL,0
JNE ANEFFISDONE
ADDTASK TOWERENDT
ANEFFISDONE:
MOV INH_EFF,FALSE
RETN
_JACKEND:
PUSH BX
ENDFLASH 9
LIGHTOFF 9
MOV JACKPOTFLASHING,FALSE
ENDFLASH 10
LIGHTOFF 10
MOV SJACKPOTFLASHING,FALSE
CMP TOWERHUNTMODEORIG,TRUE
JE DONTCLOSETOWER
CALL UPDATE_TOWER_GATE
JC SOMETHINGFLASHING
MOV TOWER_OPEN,FALSE
PUT_GATE_POS_LOW GATE3 ;CLOSE TO THE TOWER
ENDFLASH 7
LIGHTOFF 7
DONTCLOSETOWER:
SOMETHINGFLASHING:
MOV SISA,1
MOV DOTRUT,OFFSET WAITRUT
POP BX
JMP NORMAL_END
SJOFF: WAITSYNCS SUPERJACK_TIME
CMP SJACKPOTFLASHING,FALSE
JE SJANF
ENDFLASH 10
LIGHTOFF 10
MOV SJACKPOTFLASHING,FALSE
PUT_GATE_NEG_LOW GATE3
CALL UPDATE_TOWER_GATE
SJANF: SUICIDE
UPDATE_TOWER_GATE: ;CLOSE TOWER IF NO TB OPTION
;RET -C- IF SOMETHING IS FLASHING
CMP XBALLFLASHING,TRUE
JE TGOPEN
CMP SJACKPOTFLASHING,TRUE
JE TGOPEN
CMP JACKPOTFLASHING,TRUE
JE TGOPEN
CMP HOLDBONUSFLASHING,TRUE
JE TGOPEN
CMP DOUBLEBONUSFLASHING,TRUE
JE TGOPEN
CMP TB5MFLASHING,TRUE
JE TGOPEN
CMP TBMILLIONFLASHING,TRUE
JE TGOPEN
MOV TOWER_OPEN,FALSE
PUT_GATE_POS_LOW GATE3
ENDFLASH 7
LIGHTOFF 7
CLC
RETN
TGOPEN: STC
RETN
GROPA_T:
SETBALLPOS TOWERX,TOWERY,0,0,TRUE
MOV HOLDSTILL,TRUE
ADDTASK TOWERENDT
RETN
_TOWEREND:
PUSH BX
ADDTASK TOWERENDT
MOV SISA,1
MOV DOTRUT,OFFSET WAITRUT
POP BX
JMP NORMAL_END
TOWERENDT: ;<3B>TERSTŽLLAREN (ALLTS<54> INTE DEN <20>TERSTŽLLAREN!)
WAITSYNCS 10
MOV INHIBIT_COUNT_DOWN,FALSE
CMP WAS_SPECIAL,TRUE
JNE INGA_KONSTIGHETER
MOV BX,OFFSET BACK_2_TURBOTS
CMP TURBOBACKUP,TRUE
JE TURBO_IT_WAS
MOV BX,OFFSET BACK_2_OFFROADTS
MOV OFFROADMODE,TRUE
JMP READY_2_CALL
TURBO_IT_WAS:
MOV TURBOMODE,TRUE
READY_2_CALL:
CALL DO_MATRIX
INGA_KONSTIGHETER:
CALL SHOOT_AWAY
SUICIDE
SHOOT_AWAY:
SOUNDEFFECT SGROP,0
MOV HOLDSTILL,FALSE
SETBALLPOS TOWERX,TOWERY,TOWERXS,TOWERYS,TRUE
MOV IN_TOWER,FALSE
RETN
TOWERENDT_TILT: ;EN LITEN KNUT.
CALL SHOOT_AWAY
SUICIDE
;***************************** THE WELL *******************************
GropB: ;THE WELL
CMP LIGHTSTATUS[25],TRUE ;LOCKED BALL?
JNE NOBALLINTHEWELL
MOV HOLDSTILL,TRUE
ADDTASK WELLENDT
RETN ;RETN
NOBALLINTHEWELL:
MOV HOLDSTILL,TRUE ;SCORE STANDARD SCORES!
SETBALLPOS WELLX,WELLY,0,0,FALSE
MOV IN_WELL,TRUE
CALL ADDTURBO
CALL JACKADD
MOV REMAL,0
MOV SI,OFFSET WELLVALUE
MOV DI,OFFSET SIFFRORNA
CALL ADDSCOREBCD
CMP LOCKWELLFLASHING,TRUE ;LOCK ENABLED?
JNE NOTWLOCKFLASHING
MOV HOLDMULTICOUNTER,TRUE
MOV CURRENT_PRIORITY,0
EFFECT SHOOTTHEBALL
MOV INH_EFF,TRUE
ADD REMAL,AL
SETBALLPOS STARTX,STARTY,10,0,FALSE
MOV HOLDSTILL,FALSE
MOV INH_EFF,TRUE
MOV PARTYFLASH,TRUE
MOV LASTJINGLE,0 ;0=UTSKJUT
MOV LOCKWELLFLASHING,FALSE
ENDFLASH 25 ;LOCK (THE WELL)
LIGHTON 25
NOTWLOCKFLASHING:
EFFECT SCOREWELL
ADD REMAL,AL
CMP MB_FLASHING,FALSE
JE NOMB
MOV MB_FLASHING,FALSE
ENDFLASH 24
LIGHTOFF 24
CMP BPOINTER,43
JA NOMB
CMP BONUS_X,1
JNE NOTBONX1
INC BONUS_X
JMP SHORT BONUSXOK
NOTBONX1:
ADD BONUS_X,2
BONUSXOK:
LIGHTON BPOINTER
MOV BL,BPOINTER
SUB BL,39
MOV AL,SIZE EFFECT_STRUC
MUL BL
ADD AX,OFFSET M2
EFFECT AX
ADD REMAL,AL
INC BPOINTER
NOMB:
CMP REMAL,0
JNZ ALL_IS_WELL_WITH_WELL
ADDTASK WELLENDT
ALL_IS_WELL_WITH_WELL: ;HMM... MAYBE NOT!
MOV INH_EFF,FALSE
MOV AL,BONUS_X
ADD AL,'7'
MOV BONUS_TEXT[11],AL
RETN
_WELLEND:
PUSH BX
ADDTASK WELLENDT
MOV SISA,1
MOV DOTRUT,OFFSET WAITRUT
POP BX
JMP NORMAL_END
WELLENDT_TILT:
WELLENDT:
WAITSYNCS 10 ;CP!
SOUNDEFFECT SGROP,0
MOV HOLDSTILL,FALSE
SETBALLPOS WELLX,WELLY,WELLXS,WELLYS,FALSE
MOV IN_WELL,FALSE
SUICIDE
GROPB_T:
MOV IN_WELL,FALSE
ADDTASK WELLENDT
RETN
Bygel19: ;VŽ DRAIN ™VRE
RETN
Bygel3: ;VŽ FLIPPER-RŽNNA
SOUNDEFFECT SBYGEL2,0
ADDSCORE BCD10070
ADDBONUS BCD1080
RETN
Bygel4: ;H™ FLIPPER-RŽNNA
SOUNDEFFECT SBYGEL2,0
ADDSCORE BCD10070
ADDBONUS BCD1080
RETN
Bygel1: ;VŽ DRAIN NEDRE
SOUNDEFFECT SBYGEL1,0
ADDSCORE BCD50010
RETN
Bygel2: ;H™ DRAIN
SOUNDEFFECT SBYGEL1,0
ADDSCORE BCD50030
RETN
;***************************** THE VAULT *******************************
GropC: ;THE VAULT
MOV REMAL,0
CMP HIGH_VAULT,TRUE ;THE KICKBACK?
JE NOT_THE_KICKBACK
ENDFLASH 44
LIGHTOFF 44
MOV KICK_BACK_FLASHING,FALSE
NOT_THE_KICKBACK:
MOV HOLDSTILL,TRUE ;FREEZE BALL!
SETBALLPOS VAULTX,VAULTY,0,0,FALSE
CMP TILTFLAG,TRUE ;TILT?
JNE NOT_TILT_GC
ADDTASK VAULTENDT
RETN ;RETN
NOT_TILT_GC:
CMP LIGHTSTATUS[15],FALSE ;BALL LOCKED IN VAULT?
JE NOTLOCKEDINVAULT
ADDTASK VAULTENDT
RETN ;RETN
NOTLOCKEDINVAULT:
MOV IN_VAULT,TRUE
CALL JACKADD
CMP LOCKVAULTFLASHING,TRUE ;LOCK BALL ENABLED?
JNE NOTVFLASHING
MOV HOLDMULTICOUNTER,TRUE
MOV CURRENT_PRIORITY,0
EFFECT SHOOTTHEBALL
MOV INH_EFF,TRUE
ADD REMAL,AL
MOV HOLDSTILL,FALSE
SETBALLPOS STARTX,STARTY,10,0,FALSE
MOV INH_EFF,TRUE
MOV PARTYFLASH,TRUE
MOV LASTJINGLE,0 ;0=UTSKJUT
MOV LOCKVAULTFLASHING,FALSE
ENDFLASH 15 ;LOCK (THE VAULT)
LIGHTON 15
NOTVFLASHING:
CMP GHOST_FLASHING,TRUE ;GHOST FLASHING?
JNE NO_GHOST
MOV GHOST_FLASHING,FALSE ;GET THE GHOST!
ENDFLASH 16 ;"GHOST" TRIANGLEOLIKHETEN F™R SP™KMŽNGDEN
LIGHTOFF 16
MOV BL,GHOSTCOUNTER
MOV AL,SIZE GHOST_STRUC
MUL BL
MOV BX,AX
PUSH BX
MOV DL,GHOSTAREA[BX].G_LIGHTNO
PUSH DX
ENDFLASH DL
POP DX
LIGHTON DL
POP BX
PUSH BX
MOV AX,GHOSTAREA[BX].G_EFFECT
CMP SPECIALMODE,TRUE
JNE NOSPECIALM
CMP AX,OFFSET GRIMR
JNE NOTVERYGRIM
ADDTASK TURBOWAITING
JMP EFFISDONE
NOTVERYGRIM:
CMP AX,OFFSET GHOSTHUNT
JNE NOTMANYGHOSTS
MOV FIX_TELEPORT_BUG,TRUE
ADDTASK OFFROADWAITING
JMP EFFISDONE
NOTMANYGHOSTS:
NOSPECIALM:
EFFECT AX
ADD REMAL,AL
EFFISDONE:
POP BX
PUSH BX
MOV AX,GHOSTAREA[BX].G_ROUTINE
CALL AX
POP BX
INC GHOSTCOUNTER
CMP GHOSTCOUNTER,8 ;TOTALT 8 SP™KEN!
JB NOT_LAST_GHOST
MOV GHOSTCOUNTER,0
CALL DOLIGHTS
MOV GHOST_INH_SB,TRUE
LIGHTFLASH 31,BIGGHOSTSPEED
LIGHTFLASH 32,BIGGHOSTSPEED
LIGHTFLASH 33,BIGGHOSTSPEED
LIGHTFLASH 34,BIGGHOSTSPEED
LIGHTFLASH 35,BIGGHOSTSPEED
LIGHTFLASH 36,BIGGHOSTSPEED
LIGHTFLASH 37,BIGGHOSTSPEED
LIGHTFLASH 38,BIGGHOSTSPEED
ADDTASK GHOSTOFF
NOT_LAST_GHOST:
NO_GHOST:
CALL ADDTURBO ;SCORE STANDARD SCORES!
MOV SI,OFFSET VAULTVALUE
MOV DI,OFFSET SIFFRORNA
CALL ADDSCOREBCD
CMP REMAL,0
JE NOINHIBIT
MOV INH_EFF,TRUE
NOINHIBIT:
EFFECT SCOREVAULT
MOV INH_EFF,FALSE
ADD REMAL,AL
CMP REMAL,0
JNZ TVINGA_MEJ_INTE
ADDTASK VAULTENDT
TVINGA_MEJ_INTE:
RETN
GHOSTOFF:
WAITSYNCS BIGGHOSTTIME
ENDFLASH 31
ENDFLASH 32
ENDFLASH 33
ENDFLASH 34
ENDFLASH 35
ENDFLASH 36
ENDFLASH 37
ENDFLASH 38
CALL DOLIGHTS
LIGHTOFF 31
LIGHTOFF 32
LIGHTOFF 33
LIGHTOFF 34
LIGHTOFF 35
LIGHTOFF 36
LIGHTOFF 37
LIGHTOFF 38
CALL DOLIGHTS
MOV GHOST_INH_SB,FALSE
SUICIDE
GRIMRUT:
MOV JINGLEJUMPCNT,0
CMP JACKPOTFLASHING,TRUE
JE JPAF
MOV JACKPOTFLASHING,TRUE
SYNCEDFLASH 9,TBSPEED,TBSYNCER
PUT_GATE_NEG_LOW GATE3
JPAF: CMP TOWER_OPEN,TRUE
JE TOWAF
ENDFLASH 7
LIGHTFLASH 7,TOWERSPEED
MOV TOWER_OPEN,TRUE
TOWAF: RETN
GHOSTHUNTRUT:
CMP JACKPOTFLASHING,TRUE
JE JPAF2
MOV JACKPOTFLASHING,TRUE
SYNCEDFLASH 9,TBSPEED,TBSYNCER
PUT_GATE_NEG_LOW GATE3
JPAF2: CMP TOWER_OPEN,TRUE
JE TOWAF2
ENDFLASH 7
LIGHTFLASH 7,TOWERSPEED
MOV TOWER_OPEN,TRUE
TOWAF2: RETN
BATMANRUT:
REDDEVILRUT:
MUMMYHEADRUT:
RETN
MULTIDEMONRUT:
MOV MULTIDEMONMODE,TRUE
MOV MULTIDEMONDOWNCOUNTER,MULTIDEMON_TIME
MOV LOCKVAULTFLASHING,TRUE
MOV LOCKWELLFLASHING,TRUE
MOV HOLDMULTICOUNTER,FALSE
ENDFLASH 15 ;LOCK (THE VAULT)
ENDFLASH 25 ;LOCK (THE WELL)
LIGHTFLASH 15,LOCKSPEED ;BUDGET-SYNCAD MED 25
LIGHTFLASH 25,LOCKSPEED
MOV DEMONFLASHING,TRUE
LIGHTFLASH 18,DEMONSPEED
RETN
SMILERRUT:
CMP XBALLFLASHING,TRUE
JE AXBAF2
MOV XBALLFLASHING,TRUE
SYNCEDFLASH 8,TBSPEED,TBSYNCER
PUT_GATE_NEG_LOW GATE3
MOV TOWER_OPEN,TRUE
ENDFLASH 7
LIGHTFLASH 7,TOWERSPEED
AXBAF2: RETN
TOWERHUNTRUT:
PUT_GATE_NEG_LOW GATE3
MOV TOWERHUNTSTAGE,1
MOV TOWERHUNTMODE,TRUE
MOV TOWERHUNTDOWNCOUNTER,TOWERHUNT_TIME
MOV LASTLOOPVAL,0
MOV LASTJINGLE,46
CMP TOWER_OPEN,TRUE
JE TOWAF3
ENDFLASH 7
LIGHTFLASH 7,TOWERSPEED
MOV TOWER_OPEN,TRUE
TOWAF3: RETN
_GRIMOFF:
PUSH BX
ENDFLASH 38 ;GRIM OFF!
LIGHTOFF 38
MOV SISA,1
MOV DOTRUT,OFFSET WAITRUT
POP BX
JMP NORMAL_END
_VAULTEND:
PUSH BX
CMP FIX_TELEPORT_BUG,TRUE
JE NOUTSKJUT
ADDTASK VAULTENDT
NOUTSKJUT:
MOV FIX_TELEPORT_BUG,FALSE
MOV SISA,1
MOV DOTRUT,OFFSET WAITRUT
POP BX
JMP NORMAL_END
VAULTENDT:
VAULTENDT_TILT:
WAITSYNCS 10 ;CP?
SOUNDEFFECT SGROP,0
MOV HOLDSTILL,FALSE
PUT_GATE_NEG_LOW GATE5
SETBALLPOS VAULTX,VAULTY,VAULTXS,VAULTYS,FALSE
MOV IN_VAULT,FALSE
ADDTASK VAULTENDTT
SUICIDE
VAULTENDTT:
WAITSYNCS 30 ;CP?
CMP KICK_BACK_FLASHING,TRUE
JE GATE_OK
PUT_GATE_POS_LOW GATE5
GATE_OK:
MOV HIGH_VAULT,FALSE ;H™GSPŽNNING!
SUICIDE
_TILTED:
PUSH BX
CMP IN_VAULT,TRUE
JNE NOT_IN_THE_VAULT
ADDTASK VAULTENDT_TILT
JMP SHORT IM_SHOT
NOT_IN_THE_VAULT:
CMP IN_TOWER,TRUE
JNE NOT_IN_THE_TOWER
ADDTASK TOWERENDT_TILT
JMP SHORT IM_SHOT
NOT_IN_THE_TOWER:
CMP IN_WELL,TRUE
JNE NOT_IN_THE_WELL
ADDTASK WELLENDT_TILT
NOT_IN_THE_WELL:
IM_SHOT:
MOV SISA,1
MOV DOTRUT,OFFSET WAITRUT
POP BX
JMP NORMAL_END
Close4: ;Close Tower
RETN
;******************************* SPRING VALID *********************************
BYGEL28: ;SPRING VALID
MOV SPRING_VALID,TRUE
RETN
;****************************** SPRING INVALID ********************************
BYGELSI: ;SPRING INVALID
MOV SPRING_VALID,FALSE
RETN
;******************************************************************************
;*********************************** UPPER ************************************
;******************************************************************************
;***************************** THE LOOP *******************************
Bygel8: ;LOOP MIDDLE
CALL ADDTURBO
CALL VAULTADD
CMP COMBODOWNCOUNTER,0
JZ NOCOMBO3
CMP COMBOSTAGE,2
JNE NOCOMBO3
EFFECT LOOPCOMBO
NOCOMBO3:
MOV COMBOSTAGE,0
CMP LEFT_RAMP_DOWN_COUNTER,0
MOV LEFT_RAMP_DOWN_COUNTER,LEFT_RAMP_MILLE_TIME
JNE GIVE_HIM_MILLE
SOUNDEFFECT SBYGEL1,0 ;BYGELSETD
ADDSCORE BCD10030
ADDBONUS BCD1020
RETN
GIVE_HIM_MILLE:
EFFECT MILLION
RETN
;*********************************** RIP *************************************
RIP_TOUCH MACRO LNO
LOCAL QXX,XXT,QXXT
CMP RIP_DISABLED,TRUE
JE QXX
SOUNDEFFECT SBYGEL1,0 ;BYGELSETH
ADDSCORE BCD10070
ADDBONUS BCD1080
MOV LIGHTSTATUS[LNO],TRUE
CALL CHECK_RIP
JC ALL_RIP
ADDTASK XXT
LIGHTFLASH LNO,RIPSPEED
MOV RIP_ROL_DISABLED,TRUE
QXX: RETN
XXT: CMP RIP_DISABLED,TRUE
JE QXXT
WAITSYNCS RIPFASTTIME
ENDFLASH LNO
LIGHTON LNO
MOV RIP_ROL_DISABLED,FALSE
SUICIDE
QXXT: ENDFLASH LNO
MOV RIP_ROL_DISABLED,FALSE
SUICIDE
ENDM
ALL_RIP:
MOV RIP_DISABLED,TRUE
MOV RIP_ROL_DISABLED,TRUE
ENDFLASH 4 ;R
ENDFLASH 5 ;I
ENDFLASH 6 ;P
LIGHTFLASH 4,RIPSPEED2
LIGHTFLASH 5,RIPSPEED2
LIGHTFLASH 6,RIPSPEED2
ADDTASK ALL_RIP_2
CMP KICK_BACK_FLASHING,TRUE
JE ALREADY_KICK
MOV KICK_BACK_FLASHING,TRUE
LIGHTFLASH 44,KICKSPEED
PUT_GATE_NEG_LOW GATE5
ALREADY_KICK:
EFFECT RIPEFF
RETN
ALL_RIP_2:
WAITSYNCS RIPFASTTIME2
ENDFLASH 4
ENDFLASH 5
ENDFLASH 6
LIGHTOFF 4
LIGHTOFF 5
LIGHTOFF 6
MOV RIP_DISABLED,FALSE
MOV RIP_ROL_DISABLED,FALSE
SUICIDE
CHECK_RIP: ;-C- IF ALL RIP
CMP LIGHTSTATUS[4],TRUE ;R
JNE NCR
CMP LIGHTSTATUS[5],TRUE ;I
JNE NCR
CMP LIGHTSTATUS[6],TRUE ;P
JNE NCR
STC
RETN
NCR: CLC
RETN
Bygel12: ;R
RIP_TOUCH 4
Bygel13: ;I
RIP_TOUCH 5
Bygel14: ;P
RIP_TOUCH 6
;***************************** LOOP END *******************************
Bygel8b: ;LOOP END
MOV LEFT_RAMP_DOWN_COUNTER,LEFT_RAMP_MILLE_TIME
RETN
;***************************** SCREAM RAMP *******************************
Bygel11: ;SCREAM RAMP * RIGHT RAMP *
SOUNDEFFECT SBYGEL1,0
ADDSCORE BCD10060
ADDBONUS BCD1050
CMP DEMONFLASHING,TRUE ;SCORE DEMONS?
JNE NODEMONS
ENDFLASH 18
LIGHTOFF 18
MOV MULTIDEMONDOWNCOUNTER,1
MOV DEMONFLASHING,FALSE
MOV AL,LIGHTSTATUS[15]
MOV BL,LIGHTSTATUS[25]
NIL AH
NIL BH
ADD AX,BX
CMP AX,TRUE*0 ;NO BALLS LOCKED?
JNE NOT_0_LOCKED
EFFECT MILLION5
JMP SCORE_READY
NOT_0_LOCKED:
CMP AX,TRUE*1 ;ONE BALL LOCKED?
JNE NOT_1_LOCKED
EFFECT MILLION10
JMP SCORE_READY
NOT_1_LOCKED:
CMP AX,TRUE*2 ;TWO BALLS LOCKED?
JNE NOT_2_LOCKED
EFFECT MILLION20
NOT_2_LOCKED:
SCORE_READY:
LIGHTOFF 15
LIGHTOFF 25
MOV INH_EFF,TRUE
NODEMONS:
CMP COMBODOWNCOUNTER,0 ;LOOP COMBO?
JZ NOCOMBO2
CMP COMBOSTAGE,1
JNE NOCOMBO2
MOV COMBOSTAGE,2
JMP COMBOSTAGE2OK
NOCOMBO2:
MOV COMBOSTAGE,0
COMBOSTAGE2OK:
CALL ADDTURBO
CALL WELLADD
intervall=10
AGAIN_MILE:
INC CYCLONECOUNTER
MOV SI,OFFSET ETTA
MOV DI,OFFSET CYCLONECOUNTERBCD
CALL ADDSCOREBCD
CMP _2X_SCREAMS_FLASHING,FALSE
JE NOT2XSF
MOV _2X_SCREAMS_FLASHING,FALSE
ENDFLASH 17
LIGHTOFF 17
ADDTASK THESECONDTIME
NOT2XSF:
Cmp CycloneCounter,1
je Again_Mile ;Om 1 ”ke till 2 . . .
mov ax,CycloneCounter
mov cx,nextjump
sub cx,ax
jz Do_Jump ;G”r effekten
cmp cx,10
; jnb No_jump ;Den „r inte n„sta . . .
;***************************** lites the jump
mov ax,nextjump ;V„rdet . . .
mov bx,offset jUMP_aT_text ;vilken text † stoppa in v„rdet i
CMP CYCLONECOUNTER,10
JNA NOTTHE5M
MOV BX,OFFSET JUMP_AT_TEXT2
Call Put_In_Text
MOV BX,OFFSET MILES_TEXT+4
MOV AX,CYCLONECOUNTER
CALL PUT_IN_TEXT
EFFECT JUMP_AT2
JMP HOPP
NOTTHE5M:
Call Put_In_Text
MOV BX,OFFSET MILES_TEXT+4
MOV AX,CYCLONECOUNTER
CALL PUT_IN_TEXT
EFFECT JUMP_AT
HOPP:
No_Jump:
MOV INH_EFF,FALSE
RETN
do_Jump:
CMP CYCLONECOUNTER,10
JNE ITS5M
CALL ENABLE_XBALL
JMP EFFUTFORD
ITS5M: CALL ENABLE_5M
MOV BX,OFFSET MILES_TEXT+4
MOV AX,CYCLONECOUNTER
CALL PUT_IN_TEXT
EFFECT JUMP_AT2
EFFUTFORD:
add nextjump,intervall
MOV INH_EFF,FALSE
RETN
THESECONDTIME: ;ONLY IF 2X SCREAMS!
WAITSYNCS 2
CALL BYGEL11
SUICIDE
;*****************************
;Input: Ax= NextR„knare Bx=offset till texten
Put_In_Text:
PUSH BX
mov di,2
mov cx,3
loopen_lejf:
push cx
NIL DX
MOV CX,10
DIV CX
add dx,'7'
mov [bx][di],dl
pop cx
dec di
loop loopen_lejf
POP BX
LOOPEN_BERTIL:
CMP BYTE PTR [BX],'7'
JNZ AVBRYT_BRUTALT
MOV BYTE PTR [BX],'*'
INC BX
LOOP LOOPEN_BERTIL
AVBRYT_BRUTALT:
RETN
;*****************************
ENABLE_XBALL:
CMP XBALLFLASHING,TRUE
JE AXBAF
MOV XBALLFLASHING,TRUE
SYNCEDFLASH 8,TBSPEED,TBSYNCER
PUT_GATE_NEG_LOW GATE3
MOV TOWER_OPEN,TRUE
ENDFLASH 7
LIGHTFLASH 7,TOWERSPEED
EFFECT GETXBALL
AXBAF: RETN
ENABLE_5M:
CMP TB5MFLASHING,TRUE
JE AF5M
MOV TB5MFLASHING,TRUE
SYNCEDFLASH 12,TBSPEED,TBSYNCER
PUT_GATE_NEG_LOW GATE3
MOV TOWER_OPEN,TRUE
ENDFLASH 7
LIGHTFLASH 7,TOWERSPEED
EFFECT OPENTOWER
AF5M: RETN
;***************************** Bygel9 *******************************
Bygel9: ;GRID-RAMP START LEFT
CMP TILTFLAG,TRUE
JE TILT_B9
CALL ADDTURBO
CALL VAULTADD
SOUNDEFFECT SBYGEL1,0
ADDSCORE BCD10030
ADDBONUS BCD1040
CMP SULP_FLASHING,TRUE
JE SAF
MOV SULP_FLASHING,TRUE
ENDFLASH 19 IF FASTFLASH!
SYNCEDFLASH 19,SULPSPEED,SULPSYNCER ;SULP
SAF:
CMP _2X_SCREAMS_FLASHING,TRUE
JE _2AF
MOV _2X_SCREAMS_FLASHING,TRUE
ENDFLASH 17 ;IF FASTFLASH!
SYNCEDFLASH 17,SULPSPEED,SULPSYNCER ;2XSCREAM
_2AF:
MOV SULPDOWNCOUNTER,SULP_TIME-SULP_FASTFLASH_TIME
CMP BPOINTER,43
JA MBAF
CMP MB_FLASHING,TRUE
JE MBAF
MOV MB_FLASHING,TRUE
ENDFLASH 24 ;IF FASTFLASH!
SYNCEDFLASH 24,SULPSPEED,SULPSYNCER ;MB
MOV MBDOWNCOUNTER,MB_TIME-MB_FASTFLASH_TIME
MBAF:
MOV COMBOSTAGE,1
MOV COMBODOWNCOUNTER,COMBO_TIME
TILT_B9:
PUT_GATE_NEG_HIGH GATE4A
RETN
;***************************** Bygel10 *******************************
Bygel10: ;GRID-RAMP START RIGHT
CMP TILTFLAG,TRUE
JE TILT_B10
CALL ADDTURBO
SOUNDEFFECT SBYGEL1,0
ADDSCORE BCD10020
ADDBONUS BCD1010
TILT_B10:
PUT_GATE_POS_HIGH GATE4A
RETN
Open6: ;GRID-RAMP B™J1 LEFT
PUT_GATE_NEG_HIGH GATE4B
RETN
Close6: ;GRID-RAMP B™J1 RIGHT
PUT_GATE_POS_HIGH GATE4B
RETN
Open7: ;GRID-RAMP B™J2 LEFT
PUT_GATE_NEG_HIGH GATE4C
RETN
Close7: ;GRID-RAMP B™J2 RIGHT
PUT_GATE_POS_HIGH GATE4C
RETN
Bygel18: ;TO THE VAULT
MOV HIGH_VAULT,TRUE
CALL VAULTADD
RETN
;******************************************************************************
UPDATE_COUNTERS PROC NEAR
CMP LOOSING,TRUE
JE COUNTERS_INH
CMP INHIBIT_COUNT_DOWN,TRUE
JE COUNTERS_INH
CMP LEFT_RAMP_DOWN_COUNTER,0
JZ NLRDC
DEC LEFT_RAMP_DOWN_COUNTER
NLRDC:
CMP HOLDMULTICOUNTER,TRUE
JE GURKA2
CMP MULTIDEMONDOWNCOUNTER,1 ;MULTI DEMONS
JB GURKA
JNE NOTLASTGURKA
MOV MULTIDEMONMODE,FALSE
CMP LOCKVAULTFLASHING,FALSE
JE LOCKVAULTOK
MOV LOCKVAULTFLASHING,FALSE
ENDFLASH 15 ;LOCK (THE VAULT)
LIGHTOFF 15
LOCKVAULTOK:
CMP LOCKWELLFLASHING,FALSE
JE LOCKWELLOK
MOV LOCKWELLFLASHING,FALSE
ENDFLASH 25 ;LOCK (THE WELL)
LIGHTOFF 25
LOCKWELLOK:
NOTLASTGURKA:
DEC MULTIDEMONDOWNCOUNTER
GURKA:
GURKA2:
INC SULPSYNCER ;SULP SYNCER
CMP SULPSYNCER,SULPSPEED*2
JNE SULPSOK
MOV SULPSYNCER,0
SULPSOK:
SYNCCOUNT TBSYNCER,TBSPEED
;******************** SULP, SCREAMS AND MB **********************
CMP SULPDOWNCOUNTER,0
JE SULPZERO
DEC SULPDOWNCOUNTER
JNZ NOTLASTSULP
CMP SULP_FLASHING,FALSE
JE NOSULPFF
MOV SULP_FLASHING,FALSE
ENDFLASH 19
LIGHTOFF 19
NOSULPFF:
CMP _2X_SCREAMS_FLASHING,FALSE
JE NO2XSFF
MOV _2X_SCREAMS_FLASHING,FALSE
ENDFLASH 17
LIGHTOFF 17
NO2XSFF:
NOTLASTSULP:
CMP SULPDOWNCOUNTER,SULP_FASTFLASH_TIME
JNE NOTFASTSULP
CMP SULP_FLASHING,FALSE
JE NOSULPF
ENDFLASH 19
LIGHTFLASH 19,SULPFASTFLASHSPEED
NOSULPF:CMP _2X_SCREAMS_FLASHING,FALSE
JE NO2XSF
ENDFLASH 17
LIGHTFLASH 17,SULPFASTFLASHSPEED
NO2XSF:
NOTFASTSULP:
SULPZERO:
;**************************** MB **********************************
CMP MBDOWNCOUNTER,0
JE MBZERO
DEC MBDOWNCOUNTER
JNZ NOTLASTMB
CMP MB_FLASHING,FALSE
JE NOMBFF
MOV MB_FLASHING,FALSE
ENDFLASH 24
LIGHTOFF 24
NOMBFF:
NOTLASTMB:
CMP MBDOWNCOUNTER,MB_FASTFLASH_TIME
JNE NOTFASTMB
CMP MB_FLASHING,FALSE
JE NOMBF
ENDFLASH 24
LIGHTFLASH 24,MBFASTFLASHSPEED
NOMBF:
NOTFASTMB:
MBZERO:
CMP COMBODOWNCOUNTER,0 ;COMBO
JZ COMBOZERO
DEC COMBODOWNCOUNTER
JNZ NOTLASTCOMBO
MOV COMBOSTAGE,0
NOTLASTCOMBO:
COMBOZERO:
CMP TOWERHUNTDOWNCOUNTER,0 ;TOWER HUNT
JZ TOWERHUNTZERO
DEC TOWERHUNTDOWNCOUNTER
JNZ NOTLASTTH
MOV TOWERHUNTMODE,FALSE
MOV TOWERHUNTSTAGE,0
PLAYJINGLE SJINGLE16
MOVAL LASTJINGLE,S_MAIN[0]
NOTLASTTH:
TOWERHUNTZERO:
COUNTERS_INH:
RETN
UPDATE_COUNTERS ENDP
BUMPER_WAS_HIT_PROC PROC NEAR ;INPUT: HITPOINTER
CALL ADDOFFROAD
UPDAT_INFOBAR
RETN
BUMPER_WAS_HIT_PROC ENDP
;******************************************************************************
;********************************* DOT MATRIX CODE ****************************
;******************************************************************************
_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]
_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
_Jmp:
add bx,2
mov bx,[bx]
MOV NEXT_A,BX
JMP [BX]
_CALC_HAPPY:
MOV DOTRUT,OFFSET WAITRUT
MOV SISA,1
PUSHA
MOV SI,OFFSET OR_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
_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 SJINGLE20
mov lastjingle,3
noturboend:
cmp OffRoadmode,true
jne nooffrend
PLAYJINGLE_PENETRATE SJINGLE20 ;CP! SJINGLE18!!!!
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
INIT_TOWER:
MOVEBCD TOWERVALUE,TOWERSTART
RETN
INIT_VAULT:
MOVEBCD VAULTVALUE,VAULTSTART
RETN
INIT_WELL:
MOVEBCD WELLVALUE,WELLSTART
RETN
TOWERADD:
PUSHA
MOV SI,OFFSET TOWERADDS
MOV DI,OFFSET TOWERVALUE
CALL ADDSCOREBCD
POPA
RETN
VAULTADD:
PUSHA
MOV SI,OFFSET VAULTADDS
MOV DI,OFFSET VAULTVALUE
CALL ADDSCOREBCD
POPA
RETN
WELLADD:
PUSHA
MOV SI,OFFSET WELLADDS
MOV DI,OFFSET WELLVALUE
CALL ADDSCOREBCD
POPA
RETN
JACKADD PROC NEAR ;FN: JACKVALUE += JACKRAISE
PUSHA
MOV SI,OFFSET JACKRAISE
MOV DI,OFFSET JACKVALUE
CALL ADDSCOREBCD
POPA
RETN
JACKADD ENDP
ADDTURBO:
CMP TURBOMODE,TRUE
JNE NO_TURBO
MOV SI,OFFSET BCD5000000
MOV DI,OFFSET TM_TOTAL
CALL ADDSCOREBCD
MOV SPECIAL_SCORE_CHANGED,TRUE
NO_TURBO:
RETN
ADDOFFROAD:
CMP OFFROADMODE,TRUE
JNE NO_OFFROAD
MOV SI,OFFSET BCD1000000
MOV DI,OFFSET OR_TOTAL
CALL ADDSCOREBCD
MOV SPECIAL_SCORE_CHANGED,TRUE
NO_OFFROAD:
RETN
_PARTYONN:
MOVE DS,DATA
ASSUME DS:DATA
MOV AL,PLAYER
ADD AL,'A'-10
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
TURBOWAITING: ; T.A.S.K.
CMP SPECIALMODE,TRUE
JE STILLTRUE1
CMP LOOSING,TRUE
JE KILLHIMNOW1
MOV FIX_TELEPORT_BUG,TRUE
EFFECT GRIMR
KILLHIMNOW1:
SUICIDE
STILLTRUE1:
RETN
OFFROADWAITING: ; T.A.S.K.
CMP SPECIALMODE,TRUE
JE STILLTRUE2
CMP LOOSING,TRUE
JE KILLHIMNOW2
MOV FIX_TELEPORT_BUG,TRUE
EFFECT GHOSTHUNT
KILLHIMNOW2:
SUICIDE
STILLTRUE2:
RETN
_BONUS_X_CALCS: ;FN: MULTIPLIES THE BONUS
;INPUT: BONUS_X, BONUSSIFFRORNA
;OUTPUT: BONUSSIFFRORNA, BONUS_A_TEXT
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
_CALC_MEGA:
MOV DOTRUT,OFFSET WAITRUT
MOV SISA,1
MOV SI,OFFSET TM_TOTAL ;ML_TOT -> TOTAL BONUS
MOV DI,OFFSET BONUSSIFFRORNA
PUSHA
CALL ADDSCOREBCD
POPA
ADD BX,2
CMP WORD PTR [BX],0
JNE _NEXTp_3Q
MOV BX,0
_NEXTp_3Q:
MOV NEXT_A,BX
RETN
;SetWBPL <BPLmask> Set write BPL mask
SetWBPL macro BPLnr
mov dx,3c4h
mov ah,BPLnr
mov al,2
out dx,ax
endm
;-)
_tower:
MOVE cs:stannalinne,[BX+2] ;HUR M†NGA
mov cs:linne,152
MOV DOTRUT,OFFSET towerrut
;galopp
JMP NORMAL_END
linne dw ?
stannalinne dw ?
towerrut:
dec cs:linne ;mindre nattlinne=mer † se!!
mov cx,cs:linne
call showtower
mov ax,cs:stannalinne
cmp cs:linne,ax
je stopit
mov si,1
retn
stopit:
mov si,0
retn
showtower:
;cx: startlinje!
move es,0a000h
move ds,anim08seg
mov di,sw/4*2
mov dx,0
mov ax,320/8
;cx=linje
mul cx
assume ds:anim08seg
mov si,offset anim08
assume ds:data
add si,ax
mov bl,10000000b
mov bh,00001000b
mov cx,2
two:
push cx si di
push bx
shr bh,1
xor bh,101b
setwbpl bh
pop bx
mov cx,16
put_kll:
push cx
mov cx,320/8
put_bits:
mov dl,[si]
inc si
test dl,bl
je gulan
svartan:
mov al,matrixlo
stosb
jmp overit_ehrm
gulan:
mov al,matrixhi
stosb
overit_ehrm:
;och n„sta . . .
test dl,bh
je gulan2
svartan2:
mov al,matrixlo
stosb
jmp overit_ehrm2
gulan2:
mov al,matrixhi
stosb
overit_ehrm2:
loop put_bits
pop cx
add di,sw/4+(sw-320)/4
loop put_kll
pop di si cx
shr bx,2
loop two
move ds,data
retn
_DOBEATEN:
MOVE SISA,1
MOV DOTRUT,OFFSET WAITRUT
INC XBALLS
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'
FLIPLEFT2 ENDS
FLIPRIGHT SEGMENT PARA PUBLIC 'DATA'
if create_Flip_data
EXTRN FLIPR
else
extrn flipr_1
endif
FLIPRIGHT ENDS
anim08seg segment para public 'data' ;Martin Berg!!
extrn anim08
anim08seg 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