****************************************************** ENDOFQUEUE: dc.l 0 INITQUEUE: move.l #WorkSpace,ENDOFQUEUE rts QUEUEFILE: ; On entry: ; a0=Pointer to filename ; d0=Ptr to dest. of addr ; d1=ptr to dest. of len. ; typeofmem=type of memory movem.l d0-d7/a0-a6,-(a7) move.l ENDOFQUEUE,a1 move.l d0,(a1)+ move.l d1,(a1)+ move.l TYPEOFMEM,(a1)+ move.w #79,d0 .copyname: move.b (a0)+,(a1)+ dbra d0,.copyname add.l #100,ENDOFQUEUE movem.l (a7)+,d0-d7/a0-a6 rts FLUSHQUEUE: bsr FLUSHPASS tryagain tst.b d6 beq .loadedall * Find first unloaded file and prompt for disk. move.l #WorkSpace,a2 .findfind: tst.l (a2) bne.s .foundunloaded add.l #100,a2 bra.s .findfind .foundunloaded: * A2 points at an unloaded file thingy. * Prompt for the disk. move.l #VOLLINE,a3 move.l #$20202020,(a3)+ move.l #$20202020,(a3)+ move.l #$20202020,(a3)+ move.l #$20202020,(a3)+ move.l #$20202020,(a3)+ move.l #$20202020,(a3)+ move.l #$20202020,(a3)+ move.l #$20202020,(a3)+ move.l #$20202020,(a3)+ move.l #$20202020,(a3)+ move.l #VOLLINE,a3 ; moveq #-1,d0 ; move.l a2,a4 ; add.l #12,a4 ;.notfoundyet: ; addq #1,d0 ; cmp.b #':',(a4)+ ; bne.s .notfoundyet ; ; move.w d0,d1 ; asr.w #1,d1 ; sub.w d1,a3 ; move.l a2,a4 add.l #12,a4 move.w #79,d0 .putinvol: move.b (a4)+,(a3)+ dbra d0,.putinvol movem.l d0-d7/a0-a6,-(a7) move.w #3,OptScrn move.w #0,OPTNUM bsr DRAWOPTSCRN movem.l (a7)+,d0-d7/a0-a6 .wtrel: btst #7,$bfe001 beq.s .wtrel .wtclick: btst #6,$bfe001 bne.s .wtclick bsr FLUSHPASS bra tryagain .loadedall rts FLUSHPASS: move.l #WorkSpace,a2 moveq #0,d7 ; loaded a file moveq #0,d6 ; tried+failed .flushit move.l a2,d0 cmp.l ENDOFQUEUE,d0 bge.s FLUSHED tst.l (a2) beq.s .donethisone lea 12(a2),a0 ; ptr to name move.l 8(a2),TYPEOFMEM jsr TRYTOOPEN tst.l d0 beq.s .failtoload move.l d0,handle jsr DEFLOADFILE st d7 move.l (a2),a3 move.l d0,(a3) move.l 4(a2),d0 beq.s .nolenstore move.l d0,a3 move.l d1,(a3) .nolenstore: move.l #0,(a2) bra.s .donethisone .failtoload st d6 .donethisone: add.l #100,a2 bra .flushit FLUSHED: rts TRYTOOPEN: movem.l d1-d7/a0-a6,-(a7) move.l a0,d1 move.l doslib,a6 move.l #1005,d2 jsr -30(a6) movem.l (a7)+,d1-d7/a0-a6 rts *************************************************** SFX_NAMES: dc.l ScreamName,4400 dc.l ShootName,7200 dc.l 0,0 ; dc.l MunchName,5400 dc.l PooGunName,4600 dc.l CollectName,3400 ;5 dc.l DoorNoiseName,8400 dc.l BassName,8000 dc.l StompName,4000 dc.l LowScreamName,8600 dc.l BaddieGunName,6200 ;10 ; dc.l 0,0 dc.l SwitchNoiseName,1200 dc.l ReloadName,4000 dc.l NoAmmoName,2200 dc.l SplotchName,3000 dc.l SplatPopName,5600 ;15 dc.l BoomName,11600 dc.l HissName,7200 dc.l Howl1Name,7400 dc.l Howl2Name,9200 dc.l PantName,5000 ;20 dc.l WhooshName,4000 dc.l ShotGunName,8800 ; dc.l 0,0 dc.l FlameName,9000 dc.l MuffledName,1800 dc.l ClopName,3400 ;25 dc.l ClankName,1600 dc.l TeleportName,11000 dc.l HALFWORMPAINNAME,8400 dc.l -1 ScreamName: dc.b 'AB3D2:sounds/scream',0 even ShootName: dc.b 'AB3D2:sounds/fire!',0 even * * PooGunName: dc.b 'AB3D2:sounds/shoot.dm',0 even CollectName: dc.b 'AB3D2:sounds/collect',0 even DoorNoiseName: dc.b 'AB3D2:sounds/newdoor',0 even BassName: dc.b 'AB3D2:sounds/splash',0 even StompName: dc.b 'AB3D2:sounds/footstep3',0 even LowScreamName: dc.b 'AB3D2:sounds/lowscream',0 even BaddieGunName: dc.b 'AB3D2:sounds/baddiegun',0 even SwitchNoiseName:dc.b 'AB3D2:sounds/switch',0 even ReloadName: dc.b 'AB3D2:sounds/switch1.sfx',0 even NoAmmoName: dc.b 'AB3D2:sounds/noammo',0 even SplotchName: dc.b 'AB3D2:sounds/splotch',0 even SplatPopName: dc.b 'AB3D2:sounds/splatpop',0 even BoomName: dc.b 'AB3D2:sounds/boom',0 even HissName: dc.b 'AB3D2:sounds/newhiss',0 even Howl1Name: dc.b 'AB3D2:sounds/howl1',0 even Howl2Name: dc.b 'AB3D2:sounds/howl2',0 even PantName: dc.b 'AB3D2:sounds/pant',0 even WhooshName: dc.b 'AB3D2:sounds/whoosh',0 even ShotGunName: dc.b 'AB3D2:sounds/shotgun',0 even FlameName: dc.b 'AB3D2:sounds/flame',0 even MuffledName: dc.b 'AB3D2:sounds/MuffledFoot',0 even ClopName: dc.b 'AB3D2:sounds/footclop',0 even ClankName: dc.b 'AB3D2:sounds/footclank',0 even TeleportName: dc.b 'AB3D2:sounds/teleport',0 even HALFWORMPAINNAME: dc.b 'AB3D2:sounds/HALFWORMPAIN',0 even MunchName: dc.b 'AB3D2:sounds/munch',0 even RoarName: dc.b 'AB3D2:sounds/bigscream',0 even ;-102 ;7c OBJNAME: ds.w 80 OBJ_NAMES: dc.l wad1n dc.l ptr1n dc.l wad2n dc.l ptr2n ; dc.l wad3n ; dc.l ptr3n dc.l wad4n dc.l ptr4n dc.l wad5n dc.l ptr5n dc.l wad6n dc.l ptr6n dc.l wad7n dc.l ptr7n dc.l wad8n dc.l ptr8n dc.l wad9n dc.l ptr9n dc.l wadan dc.l ptran dc.l wadbn dc.l ptrbn dc.l wadcn dc.l ptrcn dc.l waddn dc.l ptrdn dc.l waden dc.l ptren dc.l wadfn dc.l ptrfn dc.l wadgn dc.l ptrgn dc.l -1,-1 wad1n: dc.b 'AB3D1:includes/ALIEN2.wad',0 even ptr1n: dc.b 'AB3D1:includes/ALIEN2.ptr',0 even wad2n: dc.b 'AB3D1:includes/PICKUPS.wad',0 even ptr2n: dc.b 'AB3D1:includes/PICKUPS.ptr',0 even wad3n: dc.b 'AB3D1:includes/uglymonster.wad',0 even ptr3n: dc.b 'AB3D1:includes/uglymonster.ptr',0 even wad4n: dc.b 'AB3D1:includes/flyingalien.wad',0 even ptr4n: dc.b 'AB3D1:includes/flyingalien.ptr',0 even wad5n: dc.b 'AB3D1:includes/keys.wad',0 even ptr5n: dc.b 'AB3D1:includes/keys.ptr',0 even wad6n: dc.b 'AB3D1:includes/rockets.wad',0 even ptr6n: dc.b 'AB3D1:includes/rockets.ptr',0 even wad7n: dc.b 'AB3D1:includes/barrel.wad',0 even ptr7n: dc.b 'AB3D1:includes/barrel.ptr',0 even wad8n: dc.b 'AB3D1:includes/bigbullet.wad',0 even ptr8n: dc.b 'AB3D1:includes/bigbullet.ptr',0 even wad9n: dc.b 'AB3D1:includes/newgunsinhand.wad',0 even ptr9n: dc.b 'AB3D1:includes/newgunsinhand.ptr',0 even wadan: dc.b 'AB3D1:includes/newmarine.wad',0 even ptran: dc.b 'AB3D1:includes/newmarine.ptr',0 even wadbn: dc.b 'AB3D1:includes/lamps.wad',0 even ptrbn: dc.b 'AB3D1:includes/lamps.ptr',0 even wadcn: dc.b 'AB3D1:includes/worm.wad',0 even ptrcn: dc.b 'AB3D1:includes/worm.ptr',0 even waddn: dc.b 'AB3D1:includes/explosion.wad',0 even ptrdn: dc.b 'AB3D1:includes/explosion.ptr',0 even waden: dc.b 'AB3D1:includes/bigclaws.wad',0 even ptren: dc.b 'AB3D1:includes/bigclaws.ptr',0 even wadfn: dc.b 'AB3D1:includes/tree.wad',0 even ptrfn: dc.b 'AB3D1:includes/tree.ptr',0 even wadgn: dc.b 'AB3D1:includes/glare.wad',0 even ptrgn: dc.b 'AB3D1:includes/glare.ptr',0 even OBJ_ADDRS: ds.l 160 blocklen: dc.l 0 blockname: dc.l 0 blockstart: dc.l 0 BOTPICNAME: dc.b 'AB3:includes/panelraw',0 even PanelLen: dc.l 0 FREEBOTMEM: move.l Panel,d1 move.l d1,a1 move.l PanelLen,d0 move.l 4.w,a6 jsr -210(a6) rts LOADBOTPIC: PRSDb move.l #BOTPICNAME,blockname move.l doslib,a6 move.l blockname,d1 move.l #1005,d2 jsr -30(a6) move.l d0,handle lea fib,a5 move.l handle,d1 move.l a5,d2 jsr -390(a6) move.l $7c(a5),blocklen move.l #30720,PanelLen move.l #2,d1 move.l 4.w,a6 move.l PanelLen,d0 jsr -198(a6) move.l d0,blockstart ; move.l doslib,a6 ; move.l blockname,d1 ; move.l #1005,d2 ; jsr -30(a6) move.l doslib,a6 ; move.l d0,handle move.l handle,d1 move.l LEVELDATA,d2 move.l blocklen,d3 jsr -42(a6) move.l doslib,a6 move.l handle,d1 jsr -36(a6) move.l blockstart,Panel move.l LEVELDATA,d0 moveq #0,d1 move.l Panel,a0 lea WorkSpace,a1 lea $0,a2 jsr unLHA rts LOADOBS: PRSDG move.l #OBJ_ADDRS,a2 move.l LINKFILE,a0 lea ObjectGfxNames(a0),a0 move.l #0,TYPEOFMEM move.l #Objects,a1 LOADMOREOBS: move.l a0,a4 move.l #OBJNAME,a3 fillinname: move.b (a4)+,d0 beq.s donename move.b d0,(a3)+ bra.s fillinname donename: move.l a0,-(a7) move.l a3,DOTPTR move.b #'.',(a3)+ move.b #'W',(a3)+ move.b #'A',(a3)+ move.b #'D',(a3)+ move.b #0,(a3)+ move.l #OBJNAME,a0 move.l a1,d0 moveq #0,d1 bsr QUEUEFILE move.l DOTPTR,a3 move.b #'.',(a3)+ move.b #'P',(a3)+ move.b #'T',(a3)+ move.b #'R',(a3)+ move.b #0,(a3)+ move.l #OBJNAME,a0 move.l a1,d0 add.l #4,d0 moveq #0,d1 bsr QUEUEFILE move.l DOTPTR,a3 move.b #'.',(a3)+ ; move.b #'2',(a3)+ ; move.b #'5',(a3)+ ; move.b #'6',(a3)+ move.b #'P',(a3)+ move.b #'A',(a3)+ move.b #'L',(a3)+ move.b #0,(a3)+ move.l #OBJNAME,a0 move.l a1,d0 add.l #12,d0 moveq #0,d1 bsr QUEUEFILE move.l (a7)+,a0 add.l #64,a0 add.l #16,a1 tst.b (a0) bne LOADMOREOBS move.l #POLYOBJECTS,a2 move.l LINKFILE,a0 add.l #VectorGfxNames,a0 LOADMOREVECTORS tst.b (a0) beq.s NOMOREVECTORS move.l a2,d0 moveq #0,d1 jsr QUEUEFILE addq #4,a2 adda.w #64,a0 bra.s LOADMOREVECTORS NOMOREVECTORS: rts DOTPTR: dc.l 0 LOAD_A_PALETTE movem.l d0-a7/a0-a6,-(a7) move.l #OBJNAME,blockname move.l doslib,a6 move.l blockname,d1 move.l #1005,d2 jsr -30(a6) move.l d0,handle move.l #2048,blocklen move.l #1,d1 move.l 4.w,a6 move.l blocklen,d0 jsr -198(a6) move.l d0,blockstart ; move.l doslib,a6 ; move.l blockname,d1 ; move.l #1005,d2 ; jsr -30(a6) move.l doslib,a6 ; move.l d0,handle move.l handle,d1 move.l blockstart,d2 move.l blocklen,d3 jsr -42(a6) move.l doslib,a6 move.l handle,d1 jsr -36(a6) movem.l (a7)+,d0-a7/a0-a6 move.l blockstart,(a2)+ move.l blocklen,(a2)+ rts CNOP 0,4 fib: ds.l 75 LOAD_AN_OBJ: movem.l a0/a1/a2/a3/a4,-(a7) move.l #OBJNAME,blockname move.l doslib,a6 move.l blockname,d1 move.l #1005,d2 jsr -30(a6) move.l d0,handle lea fib,a5 move.l handle,d1 move.l a5,d2 jsr -390(a6) move.l $7c(a5),blocklen move.l #1,d1 move.l 4.w,a6 move.l blocklen,d0 jsr -198(a6) move.l d0,blockstart ; move.l doslib,a6 ; move.l blockname,d1 ; move.l #1005,d2 ; jsr -30(a6) move.l doslib,a6 ; move.l d0,handle move.l handle,d1 move.l blockstart,d2 move.l blocklen,d3 jsr -42(a6) move.l doslib,a6 move.l handle,d1 jsr -36(a6) movem.l (a7)+,a0/a1/a2/a3/a4 move.l blockstart,(a2)+ move.l blocklen,(a2)+ rts RELEASEOBJMEM: move.l #OBJ_NAMES,a0 move.l #OBJ_ADDRS,a2 relobjlop move.l (a2)+,blockstart move.l (a2)+,blocklen addq #8,a0 tst.l blockstart ble.s nomoreovj movem.l a0/a2,-(a7) move.l blockstart,d1 move.l d1,a1 move.l blocklen,d0 move.l 4.w,a6 jsr -210(a6) movem.l (a7)+,a0/a2 bra.s relobjlop nomoreovj: rts TYPEOFMEM: dc.l 0 LOAD_SFX: move.l LINKFILE,a0 lea SFXFilenames(a0),a0 move.l #SampleList,a1 move.w #58,d7 LOADSAMPS: tst.b (a0) bne.s oktoload add.w #64,a0 addq #8,a1 dbra d7,LOADSAMPS move.l #-1,(a1)+ rts oktoload: move.l #MEMF_CHIP,TYPEOFMEM move.l a1,d0 move.l d0,d1 add.l #4,d1 jsr QUEUEFILE addq #8,a1 ; move.l d0,(a1)+ ; add.l d1,d0 ; move.l d0,(a1)+ adda.w #64,a0 dbra d7,LOADSAMPS rts PATCHSFX: move.w #58,d7 move.l #SampleList,a1 .patch move.l (a1)+,d0 add.l d0,(a1)+ dbra d7,.patch rts ; PRSDJ ; ; move.l #SFX_NAMES,a0 ; move.l #SampleList,a1 ;LOADSAMPS ; move.l (a0)+,a2 ; move.l a2,d0 ; tst.l d0 ; bgt.s oktoload ; blt.s doneload ; ; addq #4,a0 ; addq #8,a1 ; bra LOADSAMPS ; ;doneload: ; ; move.l #-1,(a1)+ ; rts ;oktoload: ; move.l (a0)+,blocklen ; move.l a2,blockname ; movem.l a0/a1,-(a7) ; move.l #2,d1 ; move.l 4.w,a6 ; move.l blocklen,d0 ; jsr -198(a6) ; move.l d0,blockstart ; move.l doslib,a6 ; move.l blockname,d1 ; move.l #1005,d2 ; jsr -30(a6) ; move.l doslib,a6 ; move.l d0,handle ; move.l d0,d1 ; move.l blockstart,d2 ; move.l blocklen,d3 ; jsr -42(a6) ; move.l doslib,a6 ; move.l handle,d1 ; jsr -36(a6) ; movem.l (a7)+,a0/a1 ; move.l blockstart,d0 ; move.l d0,(a1)+ ; add.l blocklen,d0 ; move.l d0,(a1)+ ; bra LOADSAMPS LOADFLOOR ; PRSDK ; move.l #65536,d0 ; move.l #1,d1 ; move.l 4.w,a6 ; jsr -198(a6) ; move.l d0,floortile ; ; move.l #floortilename,d1 ; move.l #1005,d2 ; move.l doslib,a6 ; jsr -30(a6) ; move.l doslib,a6 ; move.l d0,handle ; move.l d0,d1 ; move.l floortile,d2 ; move.l #65536,d3 ; jsr -42(a6) ; move.l doslib,a6 ; move.l handle,d1 ; jsr -36(a6) move.l LINKFILE,a0 add.l #FloorTileFilename,a0 move.l #floortile,d0 move.l #0,d1 jsr QUEUEFILE ; move.l d0,floortile move.l LINKFILE,a0 add.l #TextureFilename,a0 move.l #BUFFE,a1 .copy: move.b (a0)+,(a1)+ beq.s .copied bra.s .copy .copied: subq #1,a1 move.l a1,dotty move.l #BUFFE,a0 move.l #TextureMaps,d0 move.l #0,d1 jsr QUEUEFILE ; move.l d0,TextureMaps move.l dotty,a1 move.l #".pal",(a1) move.l #BUFFE,a0 move.l #TexturePal,d0 move.l #0,d1 jsr QUEUEFILE ; move.l d0,TexturePal rts dotty: dc.l 0 BUFFE: ds.b 80 floortilename: ifeq CHEESEY dc.b 'AB3:includes/floortile' endc ifne CHEESEY dc.b 'AB3:includes/SMALLfloortile' endc dc.b 0 even RELEASESAMPMEM: move.l #SampleList,a0 .relmem: move.l (a0)+,d1 bge.s .okrel rts .okrel: move.l (a0)+,d0 sub.l d1,d0 move.l d1,a1 move.l 4.w,a6 move.l a0,-(a7) jsr -210(a6) move.l (a7)+,a0 bra .relmem RELEASELEVELMEM: move.l LINKS,d1 move.l d1,a1 move.l #10000,d0 move.l 4.w,a6 jsr -210(a6) move.l FLYLINKS,d1 move.l d1,a1 move.l #10000,d0 move.l 4.w,a6 jsr -210(a6) move.l LEVELGRAPHICS,d1 move.l d1,a1 move.l #40000,d0 move.l 4.w,a6 jsr -210(a6) move.l LEVELCLIPS,d1 move.l d1,a1 move.l #40000,d0 move.l 4.w,a6 jsr -210(a6) rts RELEASEFLOORMEM: move.l floortile,d1 move.l d1,a1 move.l #65536,d0 move.l 4.w,a6 jsr -210(a6) rts COPSCRN1: dc.l 0 COPSCRN2: dc.l 0 RELEASESCRNMEM: move.l COPSCRN1,d1 move.l d1,a1 move.l #(104*80*4)+16,d0 move.l 4.w,a6 jsr -210(a6) move.l COPSCRN2,d1 move.l d1,a1 move.l #(104*80*4)+16,d0 move.l 4.w,a6 jsr -210(a6) ; move.l COPSCRNBUFF,d1 ; move.l d1,a1 ; move.l #(104*80*4)+16,d0 ; move.l 4.w,a6 ; jsr -210(a6) rts unLHA: incbin "ab3:Decomp4.raw"