home *** CD-ROM | disk | FTP | other *** search
- ; Fast.Exe: This creates a Ram Buffer version of Aladdin.
- ; BSS_F contains a Hunk 901120*NumDisks in length (holds disk images)
- ;
- ; Mars Bar
-
- Section "LoaderCode",Code_F
- Opt C-
-
- Execbase = 4
- OpenLibrary = -408
- CloseLibrary = -414
-
- Open = -30
- Close = -36
- Seek = -66
- Read = -42
-
- Start: Bsr OpenDos
-
- Lea FileNames,A4
- Bsr LoadWholeFiles
-
- ; ------------------------------- Start Of Patching ----------------------
-
- Move.L #DiskData+$CE400,A0 ; Places the trainer menu
- Move.L #DiskData+$CE400+$B000,A1 ; in memory & runs it.
- Lea $4C000,A2
- .Loop: Move.L (A0)+,(A2)+
- Cmp.L A0,A1
- Bne.S .Loop
- Jsr $4c020
-
- Move.L #DiskData+$400,A0
- Move.L #DiskData+$400+$1200,A1
- Move.L #$C0000,A2
- .Loop2: Move.L (A0)+,(A2)+
- Cmp.L A0,A1
- Bne.S .Loop2
-
- Lea $C0000,A0
- Move.L #$100000,-4(A0) ; Forces program to think No Fast Ram is available
- Move.W #$4EF9,$C01C0 ; 'JMP' command
- Move.L #Loader,$C01C2 ; Write loader address after JMP command.
- Jmp $C0000 ; Our loader will be JMP'd to every time
- ; the game loader is called
-
- Loader: Movem.L D0-D7/A0-A6,-(Sp) ; When 'Loader' is called the registers
- ; are set up as follows:
- Lea DiskData,A1 ; D1=Start Block
- Cmp.W #1,D4 ; D2=Length To Read
- Beq.S .Disk2 ; D4=Disk Number
- Cmp.W #2,D4 ; A0=Address To Load To
- Beq.S .Disk3
- .Continue:
- Mulu #$200,D1
- Mulu #$200,d2
- Adda.L D1,A1
- .Loop: Move.B (A1)+,(A0)+
- Subq.L #1,D2
- Bne.S .Loop
-
- Movem.L (Sp)+,D0-D7/A0-A6
- Movem.L (Sp)+,D2-D7/A0-A6
- Clr.L d0
- Tst.L d0
- Rts
-
- .Disk3: Adda.L #901120,a1
- .Disk2: Adda.L #901120,a1
- Bra.S .continue
-
- ; -------------------------------- Main Routines ------------------------
-
- OpenDos:Move.L ExecBase,A6
- Lea Dosname,A1
- Moveq.L #0,D0
- Jsr OpenLibrary(A6)
- Move.L D0,DosBase
- Rts
-
- LoadWholeFiles:
- Move.L FILEBUFFER,A2
- .AnotherFile:
- Move.L (A4)+,FileNamePointer
- Tst.L FileNamePointer
- Beq.S .NoMoreFiles
- Move.L A2,LoadDataTo
- Bsr LoadInFile
- Add.L #901120,A2
- Bra.S .AnotherFile
- .NoMoreFiles:
- Rts
-
- LoadInFile:
- Move.L DosBase,A6
- Move.L FileNamePointer,D1
- Move.L #1005,D2
- Jsr Open(A6)
- Move.L D0,FileBCPL
- Move.L D0,D1
- Move.L LoadDataTo,D2
- Move.L #901120,D3
- Jsr Read(A6)
- Move.L FileBCPL,D1
- Jsr Close(A6)
- Rts
-
- DosName:Dc.B 'dos.library',0
- Even
- DosBase:Dc.L 0
-
- FileNamePointer:Dc.L 0
- FileBCPL: Dc.L 0
-
- FilePointers:
- Disk1BCPL:Dc.L 0
- Disk2BCPL:Dc.L 0
- Disk3BCPL:Dc.L 0
- Disk4BCPL:Dc.L 0
- Disk5BCPL:Dc.L 0
- Disk6BCPL:Dc.L 0
- Disk7BCPL:Dc.L 0
- Disk8BCPL:Dc.L 0
- Disk9BCPL:Dc.L 0
- Disk10BCPL:Dc.L 0
-
- OldInts:Dc.W 0
- OldIntr:Dc.W 0
- OldDsk:Dc.W 0
- LoadDataTo:Dc.L 0
- FILEBUFFER:Dc.L DiskData
-
- FileNames:
- Dc.L Disk1Name,Disk2Name,Disk3Name
- Dc.L 0
- Disk1Name:Dc.b 'Disk1',0
- Even
- Disk2Name:Dc.b 'Disk2',0
- Even
- Disk3Name:Dc.b 'Disk3',0
- Even
-
- Section "BssData",BSS_F
- DiskData:Ds.B 901120*3
-