I've used "mkpsxiso" by LameGuy64 to rebuild PS1 discs from scratch on several projects (Mega Man 8/X4/X5, and now a Ganbare Goemon game)
https://www.romhacking.net/utilities/1573/Edit: I just found out after writing this post that LameGuy64 recently released an "isodumper"
http://www.romhacking.net/utilities/1574/This should make creating a base set of files and working mkpsxiso XML a lot easier, and will probably be a quicker to extract STR/XA files correctly.
mkpsxiso works pretty much out of the box, as long as you...
- Use the right licence file (I use the ones provided in the PSYQ SDK)
- You list the disc files in the XML in the right order by LBA (you can check the order on IsoBuster)
- ... and if the game doesn't use a custom table of contents format (like Mega Man 8/X4 do) or custom file checksums (like the Goemon games I'm currently working on do).
If you did everything right up to this point and the game still doesn't boot, it's probably because of one of those issues, in which case you'll need to debug and figure out what it is. If it's a table of contents, you'll just have to find it and understand it so you can update it with your file changes (sizes, addresses). If it's a file checksum integrity check, you'll have to either skip it (probably not a good idea if you plan to make it work on actual hardware and fragile CDs?), or reverse engineer it so you can update them as well.
Out of 6 PS1 games I've worked on, only Mega Man X5/X6 didn't have either... but they DID have a custom file pack format that did involve a custom table of contents anyway.
This is why I don't think we'll ever have a comprehensive PS1 disc building guide for romhacking. There certainly are for homebrew, but when it comes to romhacking, there's many different game-specific hurdles to take care of. I've been learning how to do it by pure trial and error. That said, I have made several threads along the way, and I always make sure I come back and edit my post with the solution in case someone else finds it useful. I'm gonna list them here, as well as other useful threads I've found.
General:
Tools I use #1:
https://www.romhacking.net/forum/index.php?topic=26202Tools I use #2:
http://www.romhacking.net/forum/index.php?topic=26255.0 (MM8/X4 Undub thread, at the bottom of my first post)ECC/EDC Checksum:
https://www.romhacking.net/forum/index.php?topic=26257Mode2 File (STR/XA) Extraction:
http://www.romhacking.net/forum/index.php?topic=21811.msg304778 (LameGuy64's isodumper exists now, so I'd try that first)Game-specific:
Custom disc table of content example (Mega Man X4):
https://web.archive.org/web/20180819002900/http://romxhack.esforos.com/viewtopic.php?f=4&t=816 (Spanish)
Custom packed file format example (Mega Man X4, ARC files):
https://www.romhacking.net/forum/index.php?topic=21714.msg303268Handling DA Audio Tracks (Mega Man 8 ):
https://www.romhacking.net/forum/index.php?topic=26343Handling Mode2/Form2 Data Files (Goemon Ooedo Daikaiten/Shin Sedai Shuumei):
https://www.romhacking.net/forum/index.php?topic=31247Custom file checksum example (Goemon Ooedo Daikaiten/Shin Sedai Shuumei):
https://www.romhacking.net/forum/index.php?topic=31325
February 27, 2021, 02:58:15 pm - (Auto Merged - Double Posts are not allowed before 7 days.)
EDIT #2:
Failure.
While the ISO does boot now into the WARNING screen, whenever I try to import any other file aside from the SLUS one, the game just stays at a black screen when the CAPCOM movie is supposed to play.
Doesn't matter if I just import one of the new Chris models, and leave everything else untouched, it always crashes right after the warning screen.
Sounds to me like there's a custom tile of contents. By loading that other file, you're probably shifting the file start location of everything else that comes after (check the disc contents on IsoBuster and arrange them by LBA order to see what I mean).
Time to debug and find that table

☕☕☕
Try searching for the original LBA values on the game executable, but as little endian.
Example: LBA 13.975 (decimal) -> 00003697 (hexadecimal big endian) -> 97360000 (hexadecimal little endian)
You may be lucky enough to find it this way...
But more often than that, I've had to locate the file loading subroutine in-game and work from there.
By the way, isn't Resident Evil like one of the most modded PS1 series ever? You sure all of this isn't documented somewhere already?