1

(3,497 replies, posted in General discussion)

More problems.  DiscImageCreator runs and produces output and terminates without error, but the ISO it makes is too small.  And suspiciously exactly two gigabytes.  I've checked the filesystem (tried once on exfat, once on ext4) on volumes with enough space.  Those volumes have files larger than 2 gigs on them, so it's not a filesystem issue. The disc should produce an ISO larger than 2.4 gigabytes.  I've verified that the disc and drive are good.  Just using readom creates a file that matches the hash currently in the database of the correct size.

Because it produces a file that's exactly 2^31 bytes in size, this feels like a signed 32-bit integer is being used somewhere where a 64-bit integer is really needed.

AppVersion
    x86, AnsiBuild, 20211126T142333
valid extension was omitted. -> set .bin
CurrentDirectory
    /media/optical/ps2_isos/DIC
WorkingPath
     Argument: ./Shadow_Hearts.bin
     FullPath: /media/optical/ps2_isos/DIC/./Shadow_Hearts.bin
        Drive: /
    Directory: media/optical/ps2_isos/DIC/./
     Filename: Shadow_Hearts
    Extension: .bin
StartTime: 2021-11-26T16:15:14+0000
          Block Size: 4096
       Flagment Size: 4096
       All Block Num: 0
      Free Block Num: 6896817
 Available Block Num: 0
          I Node Num: 4633490
     Free I Node Num: 0
Available I Node Num: 4277388
      File System ID: 0
          Mount Flag: 1761280
 Max Filename Length: 0
CurrentDriveSize
    Total:  28249362432 bytes
     Used:  17520181248 bytes
    --------------------------
    Space:  10729181184 bytes
     => There is enough disk space for dumping
Set the drive speed: 11080KB/sec
[F:DVDGetRegion][L:406] GetLastError: 0, Success
Reading DirectoryRecord    2/   2
Creating iso(LBA)  1719024/ 1719024
Hashing: PFI.bin
Hashing: DMI.bin
Hashing: Shadow_Hearts.iso
EndTime: 2021-11-26T16:25:00+0000

2

(3,497 replies, posted in General discussion)

Okay appears to be working, thanks.

There's a couple of minor display bugs in the Linux ARM build.  It still lists itself as an "x86" application in AppVersion, and all the internal text refers to "drive letter" where it actually takes a path to a block device.  Obviously neither of these stop it from working, but it may cause confusion.

3

(3,497 replies, posted in General discussion)

Thanks for thew quick reply.   I now get another compilation error when the makefile reaches sha1.cpp.  Looks like more type errors:

g++ -c -o _external/sha1.o _external/sha1.cpp -include _linux/defineForLinux.h -std=c++11 -O2 -Wall -Wextra -Wno-unknown-pragmas -Waggregate-return -Wcast-align -Wcast-qual -Wconditionally-supported -Wdisabled-optimization -Wdouble-promotion -Wfloat-equal -Wformat=2 -Wformat-signedness -Winit-self -Winline -Winvalid-pch -Wlogical-op -Wmissing-include-dirs -Wmultichar -Wnoexcept -Woverlength-strings -Wpacked -Wpointer-arith -Wredundant-decls -Wshadow -Wstack-protector -Wstrict-aliasing=2 -Wstrict-null-sentinel -Wswitch-default -Wswitch-enum -Wtrampolines -Wvariadic-macros -Wvector-operation-performance -Wwrite-strings -Wunused-macros -I. -I_external -I_linux
g++ -c -o _linux/defineForLinux.o _linux/defineForLinux.cpp -include _linux/defineForLinux.h -std=c++11 -O2 -Wall -Wextra -Wno-unknown-pragmas -Waggregate-return -Wcast-align -Wcast-qual -Wconditionally-supported -Wdisabled-optimization -Wdouble-promotion -Wfloat-equal -Wformat=2 -Wformat-signedness -Winit-self -Winline -Winvalid-pch -Wlogical-op -Wmissing-include-dirs -Wmultichar -Wnoexcept -Woverlength-strings -Wpacked -Wpointer-arith -Wredundant-decls -Wshadow -Wstack-protector -Wstrict-aliasing=2 -Wstrict-null-sentinel -Wswitch-default -Wswitch-enum -Wtrampolines -Wvariadic-macros -Wvector-operation-performance -Wwrite-strings -Wunused-macros -I. -I_external -I_linux
_linux/defineForLinux.cpp: In function ‘void _splitpath(const char*, char*, char*, char*, char*)’:
_linux/defineForLinux.cpp:36:28: warning: cast from type ‘const char*’ to type ‘char*’ casts away qualifiers [-Wcast-qual]
  char* CopyOfPath = (char*)Path;
                            ^~~~
_linux/defineForLinux.cpp: At global scope:
_linux/defineForLinux.cpp:409:7: error: ambiguating new declaration of ‘off_t SetFilePointerEx(int, LARGE_INTEGER, void*, int)’
 off_t SetFilePointerEx(int fd, LARGE_INTEGER pos, void* a, int origin)
       ^~~~~~~~~~~~~~~~
In file included from <command-line>:
./_linux/defineForLinux.h:2445:9: note: old declaration ‘off64_t SetFilePointerEx(int, LARGE_INTEGER, void*, int)’
 off64_t SetFilePointerEx(int fd, LARGE_INTEGER pos, void* a, int origin);
         ^~~~~~~~~~~~~~~~
_linux/defineForLinux.cpp: In function ‘int GetDiskFreeSpaceEx(LPCSTR, PULARGE_INTEGER, PULARGE_INTEGER, PULARGE_INTEGER)’:
_linux/defineForLinux.cpp:447:3: warning: format ‘%lu’ expects argument of type ‘long unsigned int’, but argument 4 has type ‘__fsblkcnt64_t’ {aka ‘long long unsigned int’} [-Wformat=]
   "          Block Size: %lu\n"
   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   "       Flagment Size: %lu\n"
   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   "       All Block Num: %lu\n"
   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   "      Free Block Num: %lu\n"
   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   " Available Block Num: %lu\n"
   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   "          I Node Num: %lu\n"
   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   "     Free I Node Num: %lu\n"
   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   "Available I Node Num: %lu\n"
   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   "      File System ID: %lu\n"
   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   "          Mount Flag: %lu\n"
   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   " Max Filename Length: %lu\n"
   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
_linux/defineForLinux.cpp:459:5:
   , buf.f_blocks, buf.f_bfree, buf.f_bavail
     ~~~~~~~~~~~~
_linux/defineForLinux.cpp:447:3: warning: format ‘%lu’ expects argument of type ‘long unsigned int’, but argument 5 has type ‘__fsblkcnt64_t’ {aka ‘long long unsigned int’} [-Wformat=]
_linux/defineForLinux.cpp:447:3: warning: format ‘%lu’ expects argument of type ‘long unsigned int’, but argument 6 has type ‘__fsblkcnt64_t’ {aka ‘long long unsigned int’} [-Wformat=]
_linux/defineForLinux.cpp:447:3: warning: format ‘%lu’ expects argument of type ‘long unsigned int’, but argument 7 has type ‘__fsfilcnt64_t’ {aka ‘long long unsigned int’} [-Wformat=]
_linux/defineForLinux.cpp:447:3: warning: format ‘%lu’ expects argument of type ‘long unsigned int’, but argument 8 has type ‘__fsfilcnt64_t’ {aka ‘long long unsigned int’} [-Wformat=]
_linux/defineForLinux.cpp:447:3: warning: format ‘%lu’ expects argument of type ‘long unsigned int’, but argument 9 has type ‘__fsfilcnt64_t’ {aka ‘long long unsigned int’} [-Wformat=]
make: *** [makefile:67: _linux/defineForLinux.o] Error 1

4

(3,497 replies, posted in General discussion)

I get the following errors when attempting to build from source with GNU Make 4.2.1 on ARM, default settings.  Am I missing deps?  Or some environment variable?

g++ -c -o calcHash.o calcHash.cpp -include _linux/defineForLinux.h -std=c++11 -O2 -Wall -Wextra -Wno-unknown-pragmas -Waggregate-return -Wcast-align -Wcast-qual -Wconditionally-supported -Wdisabled-optimization -Wdouble-promotion -Wfloat-equal -Wformat=2 -Wformat-signedness -Winit-self -Winline -Winvalid-pch -Wlogical-op -Wmissing-include-dirs -Wmultichar -Wnoexcept -Woverlength-strings -Wpacked -Wpointer-arith -Wredundant-decls -Wshadow -Wstack-protector -Wstrict-aliasing=2 -Wstrict-null-sentinel -Wswitch-default -Wswitch-enum -Wtrampolines -Wvariadic-macros -Wvector-operation-performance -Wwrite-strings -Wunused-macros -I. -I_external -I_linux
In file included from <command-line>:
./_linux/defineForLinux.h:26:9: error: ‘_W64’ does not name a type
 typedef _W64 int INT_PTR, * PINT_PTR;
         ^~~~
./_linux/defineForLinux.h:27:9: error: ‘_W64’ does not name a type
 typedef _W64 unsigned int UINT_PTR, * PUINT_PTR;
         ^~~~
./_linux/defineForLinux.h:29:9: error: ‘_W64’ does not name a type
 typedef _W64 long LONG_PTR, * PLONG_PTR;
         ^~~~
./_linux/defineForLinux.h:30:9: error: ‘_W64’ does not name a type
 typedef _W64 unsigned long ULONG_PTR, * PULONG_PTR;
         ^~~~
./_linux/defineForLinux.h:40:9: error: ‘ULONG_PTR’ does not name a type; did you mean ‘ULONG_MAX’?
 typedef ULONG_PTR DWORD_PTR, *PDWORD_PTR;
         ^~~~~~~~~
         ULONG_MAX
make: *** [makefile:67: calcHash.o] Error 1

G++ version:

Using built-in specs.
COLLECT_GCC=g++
COLLECT_LTO_WRAPPER=/usr/lib/gcc/arm-linux-gnueabihf/8/lto-wrapper
Target: arm-linux-gnueabihf
Configured with: ../src/configure -v --with-pkgversion='Raspbian 8.3.0-6+rpi1' --with-bugurl=file:///usr/share/doc/gcc-8/README.Bugs --enable-languages=c,ada,c++,go,d,fortran,objc,obj-c++ --prefix=/usr --with-gcc-major-version-only --program-suffix=-8 --program-prefix=arm-linux-gnueabihf- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-bootstrap --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-libitm --disable-libquadmath --disable-libquadmath-support --enable-plugin --with-system-zlib --with-target-system-zlib --enable-objc-gc=auto --enable-multiarch --disable-sjlj-exceptions --with-arch=armv6 --with-fpu=vfp --with-float=hard --disable-werror --enable-checking=release --build=arm-linux-gnueabihf --host=arm-linux-gnueabihf --target=arm-linux-gnueabihf
Thread model: posix
gcc version 8.3.0 (Raspbian 8.3.0-6+rpi1) 

I don't have a Windows PC, and so can't use SFOInfo (not that I'd be super happy about downloading random .exes from websites with no TLS and running them on my home PC even if I did), but it turns out the format is super-simple, so I wrote my own SFO extractor in Python in, like, an hour.  All you need to do is mount the iso and point it at the mount point and it will spit out a file called sfoinfo.txt in a format that I think you can just copy-paste into a PSP dump.  Or a PS3 or PSV dump, I think.  I haven't checked since I don't have the hardware to dump PS3 or PSV games yet.

It's not fantastic Python, but it has no deps and does the job (and you can read the source).  Have I missed an edge case?  Does this want to go on the Wiki?  Here's a gist: https://gist.github.com/YurgenJurgensen … 1731f64224