;************************* ; Coded by Galahad & CFou! ;************************ objfile 'StreetFIghter2.islave' SECTION StreetFighter2islave000000,CODE incdir Includes: include RawDIC.i SLAVE_HEADER dc.b 1 ; Slave version dc.b SFLG_DEBUG ; Slave flags dc.l DSK_1_Twi1 ;DSK_1 ; Pointer to the first disk structure dc.l Text ; Pointer to the text displayed in the imager window dc.b "$VER:" Text: db 'StreetFighter 2 Imager V1.2 on 19.11.2019',$A db 'by Galahad/Fairlight (DOS) & CFou! (Twilight1)',0 cnop 0,4 ;****************************** Support for TwiLight1 track ($1400) version by CFou! on 11/2019 ;***************************************************************************************** DSK_1_Twi1 dc.l DSK_2_Twi1 ; Pointer to next disk structure dc.w 1 ; Disk structure version dc.w DFLG_DOUBLEINC ; Disk flags dc.l TL_1_Twi1 ; List of tracks which contain data dc.l 0 ; UNUSED, ALWAYS SET TO 0! dc.l FL_DISK1 ; List of files to be saved dc.l CR_Disk1V1 ; Table of certain tracks with CRC values dc.l DSK_1 ; Alternative disk structure, if CRC failed dc.l 0 ; Called before a disk is read dc.l 0 ; Called after a disk has been read DSK_2_Twi1 dc.l DSK_3_Twi1 ; Pointer to next disk structure dc.w 1 ; Disk structure version dc.w DFLG_DOUBLEINC ; Disk flags dc.l TL_2_Twi1 ; List of tracks which contain data dc.l 0 ; UNUSED, ALWAYS SET TO 0! dc.l FL_DISK2 ; List of files to be saved dc.l CR_Disk2V1 ; Table of certain tracks with CRC values dc.l DSK_2 ; Alternative disk structure, if CRC failed dc.l 0 ; Called before a disk is read dc.l 0 ; Called after a disk has been read DSK_3_Twi1 dc.l DSK_4_Twi1 ; Pointer to next disk structure dc.w 1 ; Disk structure version dc.w DFLG_DOUBLEINC ; Disk flags dc.l TL_3_Twi1 ; List of tracks which contain data dc.l 0 ; UNUSED, ALWAYS SET TO 0! dc.l FL_DISK3 ; List of files to be saved dc.l CR_Disk3V1 ; Table of certain tracks with CRC values dc.l DSK_3 ; Alternative disk structure, if CRC failed dc.l 0 ; Called before a disk is read dc.l 0 ; Called after a disk has been read DSK_4_Twi1 dc.l 0 ; Pointer to next disk structure dc.w 1 ; Disk structure version dc.w DFLG_DOUBLEINC ; Disk flags dc.l TL_4_Twi1 ; List of tracks which contain data dc.l 0 ; UNUSED, ALWAYS SET TO 0! dc.l FL_DISK4 ; List of files to be saved dc.l CR_Disk4V1 ; Table of certain tracks with CRC values dc.l DSK_4 ; Alternative disk structure, if CRC failed dc.l 0 ; Called before a disk is read dc.l 0 ; Called after a disk has been read ;------------------------ Checksum of Twilight versoin for test CR_Disk1V1 CRCENTRY 0,$59f8 ;$6B50 CRCENTRY 4,$5bc0 CRCEND CR_Disk2V1 CRCENTRY 0,$add3 CRCENTRY 4,$bf33 CRCEND CR_Disk3V1 CRCENTRY 0,$6e7e CRCENTRY 2,$2b7b CRCEND CR_Disk4V1 CRCENTRY 0,$add3 CRCENTRY 4,$bdab CRCEND ;------------------------ Track Load Twilight1 ------------------------------------ LG_TRACK_TWI1 = $1400 TL_1_Twi1 TLENTRY 0,1,$1600,SYNC_STD,DMFM_STD TLENTRY 2,3,$1200,SYNC_STD,DMFM_NULL TLENTRY 4,148,$1400,$4489,DMFM_Twilight1 TLEND TL_2_Twi1 TLENTRY 0,1,$1600,SYNC_STD,DMFM_STD TLENTRY 2,3,$1200,SYNC_STD,DMFM_NULL TLENTRY 4,77,$1400,$4489,DMFM_Twilight1 TLENTRY 78,79,$1400,SYNC_STD,DMFM_NULL TLENTRY 80,147,$1400,$4489,DMFM_Twilight1 TLENTRY 3,122,$1400,$4489,DMFM_Twilight1 TLENTRY 123,128,$1400,SYNC_STD,DMFM_NULL TLENTRY 129,152,$1400,$4489,DMFM_Twilight1 TLEND TL_3_Twi1 TLENTRY 0,1,$1400,SYNC_STD,DMFM_STD TLENTRY 2,157,$1400,$4489,DMFM_Twilight1 TLENTRY 5,70,$1400,$4489,DMFM_Twilight1 TLENTRY 71,72,$1400,$4489,DMFM_NULL TLENTRY 73,152,$1400,$4489,DMFM_Twilight1 TLEND TL_4_Twi1 TLENTRY 0,1,$1600,SYNC_STD,DMFM_STD TLENTRY 2,3,$1200,SYNC_STD,DMFM_NULL TLENTRY 4,81,$1400,$4489,DMFM_Twilight1 TLENTRY 82,83,$1400,$4489,DMFM_NULL TLENTRY 84,155,$1400,$4489,DMFM_Twilight1 TLENTRY 3,158,$1400,$4489,DMFM_Twilight1 TLEND ;------------------------ File Lists Twilight1 ------------------------------------ FL_DISK1 FLENTRY FL_BOOTNAME,0,$1600 FLENTRY FL_INTRONAME,$1400*$02,LG_TRACK_TWI1*$49 FLEND LG_DSK2 = $1400*$4A-$1400 FL_DISK2 FLENTRY FL_BOOTNAME_D2,0,$1600 FLENTRY FL_D2_FILE1,$1400*$02,$1400*$1a ;0; /$1400=25+1 FLENTRY FL_D2_FILE2,$1400*$1c,$1400*$07 ; ; /$1400=6+1 ; DEBUT PISTE 58 FLENTRY FL_D2_FILE3,$1400*$23,$1400*$04 ; ;/$1400=3+1 ; DEBUT PISTE 70 FLENTRY FL_D2_FILE4,$1400*$28,$1400*$19 ; ;/$1400=24+1 ; DEBUT PISTE 80 FLENTRY FL_D2_FILE5,$1400*$41,$1400*$07 ; ;/$1400=6+1 ; DEBUT PISTE 130 FLENTRY FL_D2_FILE6,$1400*$48,$1400*$02 ; ;/$1400=6+1 ; DEBUT PISTE 144/146 FLENTRY FL_D2_FILE7,LG_DSK2+$1400*$01,$1400*$17 ;3 ;/$1400=22+1 ; DEBUT PISTE 3 FLENTRY FL_D2_FILE8,LG_DSK2+$1400*$18,$1400*$06 ;49 ;/$1400=5+1 ; DEBUT PISTE 49 FLENTRY FL_D2_FILE9,LG_DSK2+$1400*$1E,$1400*$18 ;61 ;/$1400=5+1 ; DEBUT PISTE 61 FLENTRY FL_D2_FILEA,LG_DSK2+$1400*$36,$1400*$07 ;109 ; 85 FLENTRY FL_D2_FILEB,LG_DSK2+$1400*$40,$1400*$0c ;229 FLEND LG_DSK3 = $1400*$4F-$1400*2 FL_DISK3 FLENTRY FL_BOOTNAME_D3,0,$1400 FLENTRY FL_D3_FILE1,$1400*$01,$1400*$23 FLENTRY FL_D3_FILE2,$1400*$24,$1400*$09 FLENTRY FL_D3_FILE3,$1400*$2d,$1400*$05 FLENTRY FL_D3_FILE4,$1400*$32,$1400*$16 FLENTRY FL_D3_FILE5,$1400*$48,$1400*$07 FLENTRY FL_D3_FILE6,LG_DSK3+$1400*$02,$1400*$17 FLENTRY FL_D3_FILE7,LG_DSK3+$1400*$19,$1400*$06 FLENTRY FL_D3_FILE8,LG_DSK3+$1400*$1F,$1400*$04 FLENTRY FL_D3_FILE9,LG_DSK3+$1400*$24,$1400*$16 FLENTRY FL_D3_FILEA,LG_DSK3+$1400*$3a,$1400*$0a FLENTRY FL_D3_FILEB,LG_DSK3+$1400*$44,$1400*$08 FLEND LG_DSK4 = $1400*$4E-$1400 FL_DISK4 FLENTRY FL_BOOTNAME_D4,0,$1600 FLENTRY FL_D4_FILE1,$1400*$02,$1400*$1C FLENTRY FL_D4_FILE2,$1400*$1e,$1400*$07 FLENTRY FL_D4_FILE3,$1400*$25,$1400*$04 FLENTRY FL_D4_FILE4,$1400*$2a,$1400*$1A FLENTRY FL_D4_FILE5,$1400*$44,$1400*$07 FLENTRY FL_D4_FILE6,$1400*$4b,$1400*$03 FLENTRY FL_D4_FILE7,LG_DSK4+$1400*$01,$1400*$19 FLENTRY FL_D4_FILE8,LG_DSK4+$1400*$1A,$1400*$06 FLENTRY FL_D4_FILE9,LG_DSK4+$1400*$20,$1400*$03 FLENTRY FL_D4_FILEA,LG_DSK4+$1400*$23,$1400*$19 FLENTRY FL_D4_FILEB,LG_DSK4+$1400*$3c,$1400*$08 FLENTRY FL_D4_FILEC,LG_DSK4+$1400*$44,$1400*$03 FLENTRY FL_D4_FILED,LG_DSK4+$1400*$47,$1400*$08 FLEND ;------------------------ File Name list Twilight1 ------------------------------------ ; Disk 1 FL_BOOTNAME dc.b "00000000.BOOT",0 FL_INTRONAME dc.b "00000249",0 ; intro ; Disk 2 FL_BOOTNAME_D2: dc.b "01000000.BOOT",0 ; FL_D2_FILE1 dc.b "0100021A",0 ; FL_D2_FILE2 dc.b "01001C07",0 ; FL_D2_FILE3 dc.b "01002304",0 ; FL_D2_FILE4 dc.b "01002819",0 ; FL_D2_FILE5 dc.b "01004107",0 ; FL_D2_FILE6 dc.b "01004802",0 ; FL_D2_FILE7 dc.b "01010117",0 FL_D2_FILE8 dc.b "01011806",0 FL_D2_FILE9 dc.b "01011E18",0 FL_D2_FILEA dc.b "01013607",0 FL_D2_FILEB dc.b "0101400C",0 ; Disk3 FL_BOOTNAME_D3: dc.b "02000000.BOOT",0 ; FL_D3_FILE1 dc.b "02000123",0 ; FL_D3_FILE2 dc.b "02002409",0 ; FL_D3_FILE3 dc.b "02002D05",0 ; FL_D3_FILE4 dc.b "02003216",0 ; FL_D3_FILE5 dc.b "02004807",0 ; FL_D3_FILE6 dc.b "02010217",0 ; FL_D3_FILE7 dc.b "02011906",0 FL_D3_FILE8 dc.b "02011F04",0 FL_D3_FILE9 dc.b "02012416",0 FL_D3_FILEA dc.b "02013A0A",0 FL_D3_FILEB dc.b "02014408",0 ; Disk4 FL_BOOTNAME_D4: dc.b "03000000.BOOT",0 ; FL_D4_FILE1 dc.b "0300021C",0 ; FL_D4_FILE2 dc.b "03001E07",0 ; FL_D4_FILE3 dc.b "03002504",0 ; FL_D4_FILE4 dc.b "03002A1A",0 ; FL_D4_FILE5 dc.b "03004407",0 ; FL_D4_FILE6 dc.b "03004B03",0 ; FL_D4_FILE7 dc.b "03010119",0 FL_D4_FILE8 dc.b "03011A06",0 FL_D4_FILE9 dc.b "03012003",0 FL_D4_FILEA dc.b "03012319",0 FL_D4_FILEB dc.b "03013C08",0 FL_D4_FILEC dc.b "03014403",0 FL_D4_FILED dc.b "03014708",0 ;------------------------ MFM decode Twilight1 ------------------------------------ DMFM_Twilight1: ;.t bra .t movem.l d1-a6,-(a7) ;sub.l #10,a0 move.l a0,a2 move.l a1,a3 _Decode_Twilight1_1400 MOVE.L #$55555555,D5 LEA (8,A2),A0 BSR.W _DecodeTwi1_CRC MOVE.L D0,D7 LEA ($10,A2),A0 MOVE.W #$2800,D1 BSR.B _DecodeTwi1_scan CMP.L D0,D7 BNE.W _ERR LEA ($10,A2),A0 MOVE.W #$1400,D0 BSR.B _DecodeTwi1 moveq #IERR_OK,d0 movem.l (a7)+,d1-a6 rts _ERR movem.l (a7)+,d1-a6 moveq #IERR_CHECKSUM,d0 rts _DecodeTwi1_scan LSR.W #2,D1 MOVE.L (A0)+,D0 SUBQ.W #2,D1 .enc MOVE.L (A0)+,D2 EOR.L D2,D0 DBRA D1,.enc AND.L D5,D0 RTS _DecodeTwi1_CRC MOVE.L (A0)+,D0 MOVE.L (A0)+,D1 AND.L D5,D0 AND.L D5,D1 ADD.L D0,D0 OR.L D1,D0 RTS _DecodeTwi1 LEA (A0,D0.W),A1 LSR.W #2,D0 SUBQ.W #1,D0 .enc MOVE.L (A0)+,D1 MOVE.L (A1)+,D2 AND.L D5,D1 AND.L D5,D2 ADD.L D1,D1 OR.L D2,D1 MOVE.L D1,(A3)+ DBRA D0,.enc RTS ;*************************************** End of Twiligh1 code ;****************************************************************************************** ;****************************** Support for DOS TRACK ($1600) version by Galahad on 01/2004 ;****************************************************************************************** _FileNameGen.MSG db '00000000',0,0 even DSK_1 dl DSK_2 ; Pointer to next disk structure dw 1 ; Disk structure version dw DFLG_NORESTRICTIONS ; Disk flags dl TL_1 ; List of tracks which contain data dl 0 ; UNUSED, ALWAYS SET TO 0! dl FL_NULL ; List of files to be saved ; FL_DISKIMAGE dl 0 ; Table of certain tracks with CRC values dl 0 ; Alternative disk structure, if CRC failed dl 0 ; Called before a disk is read dl _SaveFileDisk1 ; Called after a disk has been read DSK_2 dl DSK_3 ; Pointer to next disk structure dw 1 ; Disk structure version dw DFLG_NORESTRICTIONS ; Disk flags dl TL_2 ; List of tracks which contain data dl 0 ; UNUSED, ALWAYS SET TO 0! dl FL_NULL ; List of files to be saved dl 0 ; Table of certain tracks with CRC values dl 0 ; Alternative disk structure, if CRC failed dl 0 ; Called before a disk is read dl _SaveFileDisk2 ; Called after a disk has been read DSK_3 dl DSK_4 ; Pointer to next disk structure dW 1 ; Disk structure version DW DFLG_NORESTRICTIONS ; Disk flags dl TL_2 ; List of tracks which contain data dl 0 ; UNUSED, ALWAYS SET TO 0! dl FL_NULL ; List of files to be saved dl 0 ; Table of certain tracks with CRC values dl 0 ; Alternative disk structure, if CRC failed dl 0 ; Called before a disk is read dl _SaveFileDisk3 ; Called after a disk has been read DSK_4 dl 0 ; Pointer to next disk structure dw 1 ; Disk structure version dw DFLG_NORESTRICTIONS ; Disk flags dl TL_2 ; List of tracks which contain data dl 0 ; UNUSED, ALWAYS SET TO 0! dl FL_NULL ; List of files to be saved dl 0 ; Table of certain tracks with CRC values dl 0 ; Alternative disk structure, if CRC failed dl 0 ; Called before a disk is read dl _SaveFileDisk4 ; Called after a disk has been read ;-------------------------- Track List DOS version ------------------ TL_1 TLENTRY 0,$50,$1600,SYNC_STD,DMFM_STD TLEND TL_2 TLENTRY 0,0,$1600,SYNC_STD,DMFM_STD TLENTRY 1,1,$1600,SYNC_STD,DMFM_NULL TLENTRY $2,$9f,$1600,SYNC_STD,DMFM_STD TLEND ;-------------------------- Save files code DOS version ------------------ _SaveFileDisk4 LEA (_FileListD4,PC),A1 MOVEQ #$34,D7 BRA.B _SaveFileCommon _SaveFileDisk3 LEA (_FileListD3,PC),A1 MOVEQ #$33,D7 BRA.B _SaveFileCommon _SaveFileDisk2 LEA (_FileListD2,PC),A1 MOVEQ #$32,D7 BRA.B _SaveFileCommon _SaveFileDisk1 LEA (_FileListD1,PC),A1 MOVEQ #$31,D7 _SaveFileCommon .next MOVEM.L (A1)+,D0/D1 CMPI.L #-1,D0 BEQ.B .end BSR.B _ConvertName_NUMtoASCII MULU.W #$200,D0 LEA (_FileNameGen.MSG,PC),A0 MOVE.B D7,(A0) JSR rawdic_SaveDiskFile(a5) BRA.B .next .end MOVEQ #0,D0 RTS _ConvertName_NUMtoASCII MOVEM.L D0-D7/A0-A6,-(SP) MOVEA.L A0,A1 LEA (_FileNameGen.MSG,PC),A2 MOVEA.L A2,A3 MOVE.L D0,D2 MOVEQ #7,D3 .enc ROL.L #4,D2 MOVE.L D2,D4 AND.L #15,D4 ADD.L #$30,D4 CMPI.L #$39,D4 BLS.B .skip ADDQ.L #7,D4 .skip MOVE.B D4,(A2)+ DBRA D3,.enc MOVEM.L (SP)+,D0-D7/A0-A6 RTS ;-------------------------- File List DOS version ------------------ dw 0 _FileListD1 dl $040,$5B200 dl -1,-1 _FileListD2 dl $016,$20000 dl $116,$8A00 dl $15B,$3E00 dl $17A,$1EC00 dl $270,$8400 dl $2B2,$2600 dl $2C5,$1C800 dl $3A9,$6E00 dl $3E0,$1D800 dl $4CC,$8200 dl $50D,$E400 dl -1,-1 _FileListD3 dl $016,$2B000 dl $16E,$B000 dl $1C6,$5200 dl $1EF,$1A600 dl $2C2,$8000 dl $326,$1C400 dl $408,$7000 dl $440,$4400 dl $462,$1B400 dl $53C,$C800 dl $5A0,$9E00 dl -1,-1 _FileListD4 dl $016,$22000 dl $126,$7C00 dl $164,$3E00 dl $183,$20600 dl $286,$8800 dl $2CA,$2A00 dl $2DF,$1EE00 dl $3D6,$7200 dl $40F,$3C00 dl $42D,$1E800 dl $521,$9400 dl $56B,$2A00 dl $580,$9600 dl -1,-1 END