;****************************************************************************** ;** ** ;** 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¸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¸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¸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¸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¸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 ¸ 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¸ ING¸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 ;¸X¸ 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¸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¸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¸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: ;¸TERSTˇLLAREN (ALLTS¸ INTE DEN ¸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¸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 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