2019-12-09 21:25 CET

View Issue Details Jump to Notes ]
IDProjectCategoryView StatusLast Update
0002925RawDIC[All Projects] Generalpublic2017-11-09 14:29
ReporterCodetapper 
Assigned ToWeplProject InfoRaw Data Disk Image Creator
http://whdload.de/docs/en/rawdic.html
 
PrioritynormalSeveritymajorReproducibilityalways
StatusclosedResolutionfixed 
Product Version4.6 
Target Version5.0Fixed in Version5.0 
Summary0002925: File exceeds diskimage message
DescriptionYou cannot use a CRC entry on a multiple disk game when only the 2nd/3rd/4th disk has a different track list from the first disk. You get the message "file exceeds diskimage" coming up every single time, no matter if the disk CRC matches or not.
Steps To ReproduceAs an example, this code will NOT work as there are multiple disk structures setup but the CRC check is done on disk 2:
---
DSK_1 dc.l DSK_2_SPS1336 ; Pointer to next disk structure
        dc.w 1 ; Disk structure version
        dc.w 0 ; Disk flags
        dc.l TL_1 ; List of tracks which contain data
        dc.l 0 ; UNUSED, ALWAYS SET TO 0!
        dc.l FL_NULL ; List of files to be saved
        dc.l 0 ; Table of certain tracks with CRC values
        dc.l 0 ; 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_SPS1336 dc.l 0 ; Pointer to next disk structure
        dc.w 1 ; Disk structure version
        dc.w 0 ; Disk flags
        dc.l TL_1 ; List of tracks which contain data
        dc.l 0 ; UNUSED, ALWAYS SET TO 0!
        dc.l FL_NULL ; List of files to be saved
        dc.l CRC_2_SPS1336 ; Table of certain tracks with CRC values
        dc.l DSK_2_Copylock ; 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_Copylock dc.l 0 ; Pointer to next disk structure
        dc.w 1 ; Disk structure version
        dc.w 0 ; Disk flags
        dc.l TL_1 ; List of tracks which contain data
        dc.l 0 ; UNUSED, ALWAYS SET TO 0!
        dc.l FL_NULL ; List of files to be saved
        dc.l 0 ; Table of certain tracks with CRC values
        dc.l 0 ; 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

CRC_2_SPS1336 CRCENTRY 0,$20af
        CRCEND
---
But doing it this way will work, ie. put the CRC check on disk 1 and branch to a different disk 2 structure:
---
DSK_1 dc.l DSK_2_SPS1336 ; Pointer to next disk structure
        dc.w 1 ; Disk structure version
        dc.w 0 ; Disk flags
        dc.l TL_1 ; List of tracks which contain data
        dc.l 0 ; UNUSED, ALWAYS SET TO 0!
        dc.l FL_NULL ; List of files to be saved
        dc.l CRC_1_SPS1336 ; Table of certain tracks with CRC values
        dc.l DSK_1_Copylock ; 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_1_Copylock dc.l DSK_2_Copylock ; Pointer to next disk structure
        dc.w 1 ; Disk structure version
        dc.w 0 ; Disk flags
        dc.l TL_1 ; List of tracks which contain data
        dc.l 0 ; UNUSED, ALWAYS SET TO 0!
        dc.l FL_NULL ; List of files to be saved
        dc.l 0 ; Table of certain tracks with CRC values
        dc.l 0 ; 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_SPS1336 dc.l 0 ; Pointer to next disk structure
        dc.w 1 ; Disk structure version
        dc.w 0 ; Disk flags
        dc.l TL_1 ; List of tracks which contain data
        dc.l 0 ; UNUSED, ALWAYS SET TO 0!
        dc.l FL_NULL ; List of files to be saved
        dc.l 0 ; Table of certain tracks with CRC values
        dc.l 0 ; 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_Copylock dc.l 0 ; Pointer to next disk structure
        dc.w 1 ; Disk structure version
        dc.w 0 ; Disk flags
        dc.l TL_1 ; List of tracks which contain data
        dc.l 0 ; UNUSED, ALWAYS SET TO 0!
        dc.l FL_NULL ; List of files to be saved
        dc.l 0 ; Table of certain tracks with CRC values
        dc.l 0 ; 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

CRC_1_SPS1336 CRCENTRY 0,$ca88
        CRCEND
---

While updating the Putty/Silly Putty install, disk 1 on all versions can use the same tracklist as it has a copylock on track 1 on most versions and a completely blank track on the others.

But disk 2 on some versions has a copylock on one version, blank data on a couple of others, and real data on another version. Hence I thought I'd just do a CRC check on disk 2 for the copylock version and pick the right disk, then for disk 3 all versions can use the same tracklist again.

But you get "File exceeds diskimage" appearing the instant disk 1 has finished! I tried on various RawDIC versions, the oldest being v1.9 and they all seem to be buggy. I guess it has never worked properly.
TagsNo tags attached.
MachineA1200
CPU68030
CPUSpeed50
ChipSetAGA
GFXCardNone
ChipMem2 MB
FastMem32 MB
WorkbenchOS 3.0
KickROM39 - Kick 3.0
KickSoft40 - Kick 3.1
Attached Files

-Relationships
+Relationships

-Notes

note ~0005827

Wepl (manager)

is solved in release 5.0, mainloop did not reset diskload flag before checking crc
+Notes

-Issue History
Date Modified Username Field Change
2014-01-19 12:01 Codetapper New Issue
2017-10-21 15:40 Wepl Assigned To => Wepl
2017-10-21 15:40 Wepl Status new => assigned
2017-11-07 23:08 Wepl Target Version => 5.0
2017-11-09 14:27 Wepl Fixed in Version => 5.0
2017-11-09 14:29 Wepl Note Added: 0005827
2017-11-09 14:29 Wepl Status assigned => closed
2017-11-09 14:29 Wepl Resolution open => fixed
+Issue History