Reverse engineering is fine, the issue was they just reformatted the decompilation from ghidra. If they had written a document explaining how the game worked, then passed it on to someone else to implement then there would be no legal issue.
The matched binary decomps are also pure copyright infringements.
Of course it's kinda cool to decompile these projects and someone doing it because it's cool and for fun, is likely to end up better than some developer who is stuck in a games company that does shitty ports. There are lots of things I could do better, if I were given the chance.
There would still be a legal issue doing that, just abstracted away one step and a further thing to have to prove in court.
For the sake of waffling
Clean room mostly involves observing the program's inputs and outputs, peering at files until they make sense (maybe altering them to see what changes in the resulting game if you run them like that*), maybe looking at ancillary information (manuals, stats, any inbuilt debug options/menus and footage thereof -- that GTA 6 leaked footage was a goldmine for that sort of thing) which can get things done. Some get a bit shirty if you peer into memory (much of the world of warcraft nonsense some years ago involved the wowglider and whatnot peeps effectively making a copy of runtime memory which apparently according to the lawyers is bad copyright bothering, whether judges and juries were convinced is a different matter) but that could vary. Some go one step further and classify the initial analysers as cursed and never to touch the resulting reimplementation other than as an end user which is where the document thing comes in normally.
That is a bastard of a job if it is a single screen gameboy puzzle game (think sokoban/arrange the boxes, maybe multiplayer bomberman, bomb jack or possibly bubble ghost), never mind a once world leading open world game in full 3d from several generations later where your save games are probably larger than the games previously mentioned. Closest I have really seen to this in things people around here might have seen were some of the Jet Set Radio/Jet Grind Radio in unity or whatever engine where they were trying to replicate the feel and going from footage frame by frame and translating what they saw there into units that made sense for unity's coordinates/speeds/whatever (and then went a bit further to play with acceleration curves to make it that much nicer still). Some of the Heroes of Might and Magic and other RTS/turn based strategy games also do something like this but those are less clear cut and might have changed as projects wear on. To a lesser extent cross porting between say Unreal engine to similar vintage Unreal (but on a console or PC as befits your whims) can also get there but not really the same levels of understanding there. Normally this sort of thing then being reserved for people wanting to understand protocols and such like where you can try effectively every input and watch the output in a more automated fashion, and closed file formats (see open office/libre office and MS office).
Obviously playing with disassembled and decompiled (I believe some of this came from the Java ports for Android) code is so far beyond that is it not even worth considering as some kind of fair use/exemption. Similarly I am still stunned Nintendo allows it has out there in the world where you might find yourself having to prove yourself if you had a snap of a sprite in a parody.
*so you find the files you think are the world, corrupt them a bit to narrow down to somewhere you can play with/know what it is and get there in the game. Take a screenshot in the game and bust out the measurement tools in your chosen image editor, you know the building in front of you measures in pixels so the relative size difference (which will probably be floating point as it is PS2 by this point and even more powerful PC running directX or opengl a like and 3d does benefit immensely from this but maybe not) you can sort of guess at as it is going to be 3d which has X, Y and Z as a minimum and probably triangles rather than bones (but keep both in mind, maybe the corruption earlier showed something). You might also know how the game shows it if you do the camera through a wall (especially for inside-outside missions to know if the entrance was a covert teleport to another room to free up memory), fall through the world or jet pack higher than the normal game expects type things. Congratulations you know one aspect of the encoding for a part of the map, expand to the rest of the model, expand that to all the other models in the file (assuming it is not one giant model of course). Start building up mechanics by similar observation (acceleration, top speed, deceleration, damage model..., for cars, bikes, push bikes, boats, helicopters, planes, tanks, trucks). You are a gamer so you can probably spot any number of odd patterns and AI behaviours...
The idea of you ending up with a 1:1 with the original code (we will ignore the API names problem in this, once also the subject of a big court case between Sun and Google over Java and Android) doing this method for anything other than a simple procedural program (if it would not be too outrageous to write for a tutorial, maybe one combining a couple of concepts, then that is about the limit)... it is not going to happen, doubly so for a game that is inherently unpredictable/likely to go all over the shop at any given time compared to a file conversion program or something.
At all points during that you would also be aware that you could turn a hours long effort into a 15-30 minute one (if not less) if you are that good by having the data you know about followed through some code to see exactly how the game handles it, and map that back to a higher language if going that way, and gaining understanding you could almost never hope to get by observation**. Such a thing getting you real results in a year of hard work, possibly less if you have some decompilation available thanks to some turbo nerd computer scientists, rather than 15.
**to take it to a GTA 5 game then I quite like the
survive the hunt series wherein a guy (possibly two) has to survive being hunted by other players in a nice user made/self imposed rules type mode. Not really a hacker/programmer that I can tell (compared to someone like
the spiffing brit where despite playing to the general audience enough terminology slips out with correct usage that... yeah) but he seems to have played it enough as said gamer to note there are spawn sets of cars (as opposed to same ones every time), behaviours in snow/rain, locations in which the sub sets of cars spawn (rich area cars don't appear in the ghetto). You could play a thousand rounds (or get footage) and categorise things (I can do similar to tell you bag random from actual random, say in tetris for its new pieces generation, and similar things in gambling to tell cheating), or I could tell you exactly how it works from an evening with the debugger. Repeat this for essentially every mechanic, and hope you don't miss any -- sticking with GTA5 you may miss the whole standing next to NPCs for a long time causes them to aggro on you... call it easter egg.