File-name Loader

Hits: 3593

Ripped from DeepCore demo

More
Tags
Category: TutorialsAmigaCrackingLoaders
Author:
Submitted by: musashi9
Date: 2007-06-22 02:47
No tags
;Conqueror's DOS fileloader, ripped from "DEEP CORE" coverdisk preview version
;ripped + modified to let you set the MFM buffer address -WK
conqload:

                movem.l d0-a6,-(sp)
                lea     ($BFD100).l,a5
                bsr.w   sub_7E948
                lea     unk_7EA93(pc),a6
                andi.b  #$7F,(a5)
                move.b  (a6)+,d0
                move.l  a0,2(a6)
                st      6(a6)
                and.b   d0,(a5)
                move.w  #$370,d0
                bsr.w   sub_7E9A2
                movea.l a1,a2

loc_7E8AE:
                tst.b   (a2)+
                bne.s   loc_7E8AE
                suba.l  a1,a2
                subq.w  #1,a2
                move.l  a2,d2
                moveq   #0,d3
                move.l  d2,d4
                move.l  d4,d6
                movea.l a1,a3

loc_7E8C0:
                mulu.w  #$D,d2
                move.b  (a1)+,d3
                cmpi.b  #$61,d3 ; 'a'
                bcs.s   loc_7E8D6
                cmpi.b  #$7A,d3 ; 'z'
                bhi.s   loc_7E8D6
                subi.b  #$20,d3

loc_7E8D6:
                add.w   d3,d2
                andi.w  #$7FF,d2
                subq.w  #1,d4
                bne.s   loc_7E8C0
                divu.w  #$48,d2
                swap    d2
                addq.w  #6,d2
                lsl.w   #2,d2
                move.l  (a0,d2.w),d0

loc_7E8EE:
                bsr.w   sub_7E9A2
                lea     $1B0(a0),a1
                cmp.b   (a1)+,d6
                bne.s   loc_7E93A
                movea.l a3,a2
                move.w  d6,d0

loc_7E8FE:
                cmpm.b  (a1)+,(a2)+
                bne.s   loc_7E93A
                subq.w  #1,d0
                bne.s   loc_7E8FE
                move.l  $144(a0),d0
                add.l   dword_7EA96(pc),d0
                move.l  d0,6(a6)

loc_7E912:
                move.l  $10(a0),d0
                beq.s   loc_7E940
                bsr.w   sub_7E9A2
                lea     $18(a0),a1
                movea.l dword_7EA96(pc),a2
                move.l  dword_7EA9A(pc),d0
                move.w  #$1E7,d7

loc_7E92C:
                move.b  (a1)+,(a2)+
                cmpa.l  d0,a2
                dbeq    d7,loc_7E92C
                move.l  a2,2(a6)
                bra.s   loc_7E912
; ---------------------------------------------------------------------------

loc_7E93A:
                move.l  $1F0(a0),d0
                bne.s   loc_7E8EE

loc_7E940:
                bsr.s   sub_7E948
                movem.l (sp)+,d0-a6
                rts
; End of function conqload


; ヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲ S U B R O U T I N E ヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲ


sub_7E948:
                ori.b   #$F8,(a5)
                andi.b  #$87,(a5)
                ori.b   #$78,(a5)
                rts
; End of function sub_7E948

; ---------------------------------------------------------------------------

loc_7E956:
                bset    d7,(a5)
                bsr.s   sub_7E97C

loc_7E95A:
                btst    #4,$F01(a5)
                bne.s   loc_7E956
                sf      (a6)

; ヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲ S U B R O U T I N E ヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲ


sub_7E964:
                tst.b   (a6)
                bmi.s   loc_7E95A

loc_7E968:
                cmp.b   (a6),d2
                beq.s   loc_7E998
                bcc.s   loc_7E974
                bset    d7,(a5)
                subq.b  #1,(a6)
                bra.s   loc_7E978
; ---------------------------------------------------------------------------

loc_7E974:
                bclr    d7,(a5)
                addq.b  #1,(a6)

loc_7E978:
                bsr.s   sub_7E97C
                bra.s   loc_7E968
; End of function sub_7E964


; ヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲ S U B R O U T I N E ヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲ


sub_7E97C:
                bclr    d3,(a5)
                mulu.w  d3,d3
                bset    d3,(a5)
                move.b  d3,$500(a5)
                move.b  #$10,$600(a5)
                move.b  #$19,$E00(a5)

loc_7E992:
                btst    d3,$E00(a5)
                bne.s   loc_7E992

loc_7E998:
                btst    #5,$F01(a5)
                bne.s   loc_7E998
                rts
; End of function sub_7E97C


; ヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲ S U B R O U T I N E ヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲ


sub_7E9A2:
                moveq   #0,d3
                moveq   #1,d7
                moveq   #2,d5
								movea.l	#mfmbuff,a4
;                lea     (unk_A04).l,a4 ;MFM buff
                move.l  d0,d2
                ext.l   d2
                divu.w  #$B,d2
                move.l  d2,d4
                swap    d4
                cmp.b   1(a6),d2
                beq.s   loc_7EA2A
                move.b  d2,1(a6)
                bset    d5,(a5)
                btst    d3,d2
                beq.s   loc_7E9CC
                bclr    d5,(a5)

loc_7E9CC:
                lsr.w   #1,d2
                bsr.s   sub_7E964
                move.b  #5,-2(a6)
                bra.s   loc_7E9E4
; ---------------------------------------------------------------------------

loc_7E9D8:
                subq.b  #1,-2(a6)
                bne.s   loc_7E9E4
                moveq   #-1,d2
                move.w  d2,(a6)
                bra.s   sub_7E9A2
; ---------------------------------------------------------------------------

loc_7E9E4:
								movea.l	#mfmbuff,a4
;                lea     (unk_A04).l,a4  ; MFM buffer
                lea     ($DFF020).l,a0
                move.l  a4,(a0)+
                move.w  #$8210,$72(a0)
                move.l  #$27F00,$78(a0)
                move.w  #$9500,$7A(a0)
                move.w  #$4489,$5A(a0)
                move.w  #$9900,(a0)
                move.w  #$9900,(a0)
                move.l  #$A00000,d7

loc_7EA1A:
                subq.l  #1,d7
                beq.s   loc_7E9D8
                btst    #1,-5(a0)
                beq.s   loc_7EA1A
                move.w  #$4000,(a0)

loc_7EA2A:
                lea     $3200(a4),a2
                movea.l a2,a0
                move.l  #$55555555,d5
                moveq   #$A,d1

loc_7EA38:
                cmpi.w  #$4489,(a4)+
                bne.s   loc_7EA38
                cmpi.w  #$4489,(a4)
                beq.s   loc_7EA38
                movem.l (a4),d2-d3
                bsr.s   sub_7EA88
                lsr.w   #8,d2
                cmp.w   d4,d2
                beq.s   loc_7EA5C
                adda.w  #$438,a4
                dbf     d1,loc_7EA38
                bra.w   loc_7E9D8
; ---------------------------------------------------------------------------

loc_7EA5C:
                swap    d2
                cmp.b   1(a6),d2
                bne.w   loc_7E9D8
                lea     $34(a4),a4
                move.l  (a4)+,d4
                moveq   #$7F,d7

loc_7EA6E:
                move.l  $200(a4),d3
                move.l  (a4)+,d2
                eor.l   d2,d4
                eor.l   d3,d4
                bsr.s   sub_7EA88
                move.l  d2,(a2)+
                dbf     d7,loc_7EA6E
                and.l   d5,d4
                bne.w   loc_7E9D8
                rts
; End of function sub_7E9A2


; ヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲ S U B R O U T I N E ヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲヲ


sub_7EA88:
                and.l   d5,d2
                and.l   d5,d3
                add.l   d2,d2
                or.l    d3,d2
                rts
; End of function sub_7EA88

; ---------------------------------------------------------------------------
                dc.b   5
unk_7EA93:      dc.b $F7
                dc.b $FF
                dc.b $FF
dword_7EA96:    dc.l $ffffffff
dword_7EA9A:    dc.l $ffffffff
mfmaddr:				dc.l $0
filename:				dc.b "TEST",0
	even
; ---------------------------------------------------------------------------


****************************************************************************
; VARIABLES
****************************************************************************

gfxlib:		dc.b	"graphics.library",0,0
gfxbase:	dc.l	0

old_Intena	dc.w	0
old_Dmacon	dc.w	0

	even
;space for MFM buffer
mfmbuff:	blk.b 16384,0
	even
;space for loading buffer
loadbuff:	blk.b	32768,0
	even
	
theend:
FileDownload: File-name Loader
Filesize: 0KB, downloaded 55 times
Powered by the best online Amiga mod player: FLOD


Some more you may like:
Agile File LoaderSpiv's File LoaderSurge File Loader + Misc stuffLSD - Single File Intro

Comments

Leave a Comment!

Name:
: Use this calculator
Your comment will be available for editing for 10 minutes
2007-06-23 00:05

1. musashi9 writes

Good for loading files that have real names
tested on my Robocop2 crack and worked very well
POINT TO FILENAME in A0 LOAD ADDRESS in A1
reply
2007-06-25 21:15

2. StingRay writes

Seems like someone liked IDA Pro here. :D
reply
2007-06-26 13:09

3. WayneK writes

Yes, I admit it! It was either take my time to disasm it using Resource, or use IDA Pro to get it finished quickly and stop Musashi9 moaning at me on IRC... :)
reply
2007-06-26 15:09

4. StingRay writes

Hehe, IDA Pro is pretty cool. Though I still prefer to use ReSource for Amiga stuff. :)
reply
2012-02-12 10:54

5. scenex writes

@musashi9 / @WayneK
do you remember the exact usage of the file loader?
i'm trying to load my ripped 'Oh no more Lemmings' files with it as you stated in your post, but it just jumps to track 80 then returns to track 0 and nothing happens..
reply
2012-02-12 11:21

6. WayneK writes

You need to 'poke' your MFMBUFF address into the 'mfmaddr' variable, and call the loader with:
A0 = load addr
A1 = pointer to filename

lea $50000,a0
lea filename(pc),a1
jsr conqload
...
filename: dc.b "lemmings.dat",0

That should do it!
reply
2012-11-29 11:23
Avatar

7. Conqueror writes

Heh, cool to see that my old code still lives online after so many years. I have lost my disks and the source code long time ago, but apparently someone was nice enough to reverse engineer and publish it, and even giving me the original credit :)  Thanks!I remember that when I wrote this loader I tried to optimize it as much as possible in terms of length, and also make it 100% relocatable, even as assembled object code. It makes me happy to see that some people still can make use of this loader!Cheers,Conqueror (ex- Horizon, Fairlight, Agile, Quartex, and a few other groups...)
reply
2012-11-29 12:00

8. WayneK writes

Why wouldn't I credit you?! You were one of the best around, which is why I picked your loader to rip in the first place :)  I believe I met you once even (with Steve from London, also known as Havok/Ecstasy) back in the day!  I have a question for you regarding the game this was ripped from (Deep Core) - who coded the game?  I saw many previews during it's development, all of them came via Ringo...some of the levels even had tiles spelling things like "Classic Rules!" in the background.  Yet people tell me the game was coded by Sauron/Miracle?!  Can you clear this up?

reply
2012-12-08 22:12
Avatar

9. Conqueror writes

@WayneK: I'm not saying you shouldn't credit me, I'm just happy that someone remembers! Thank you for the kind words. It sound likely that our paths might have crossed at some point, I did hang around with Steve Middleton (Havok) and some other Ecstasy guys in London a few times. Do you know what he's up to nowadays?As for Deep Core: Yes, the main coder was Sauron/Miracle, aka Johan Lindahl. As far as I can remember, Ringo Star was not involved in this production, but of course we had contact with him and many other local sceners. Ringo went on to work with Digital Illusions in their Gothenburg office for a few years after that, afaik. If any old scene friends wants to get in touch with me, please email me at peter[]ljungstrand.se.
reply