Piratero wrote:Oh! Do tell what they missed! Be as technical as you can possibly be.

One of the features Policenauts had - which was a pain in the ass for us - was summaries. When you load a saved game, you get an optional summary (View Summary Screen? Yes/No) which you can view to "catch up" on the story up until that point.
The summary loads a full-screen PAK graphic (uncompressed Run Length Encoded graphic with standard PSX 16-bit aBGR coloring) and overlays text on it. The first problem is that English is just wordier in Japanese when it comes to longer blocks of text, so we had to squeeze the line spacing so we can fit it onscreen. Fortunately, it never went TOO far over, so the effect looks pretty good.
But there was a much worse problem.
Now Policenauts doesn't let you save a game during "action sequences". Actually, it usually doesn't let you get to the System Menu at all for things like the shooting parts, but sometimes you'll get a shorter version of the Systems Menu that pretty much just lets you change memory cards or the cursor speed...
Or
load a savegame. This part is important.
Okay, so during one of these "action sequence", there's a lot going on onscreen. Specifically, there's a bunch of things being drawn over it.
What Policenauts does is relatively simple. It has a keyword in the text sector, that is the name of a small executable. The game executes this executable during gameplay in a multithreaded fashion - so there's a running thread to draw all this stuff onscreen while it draws everything else and handles music and all the other stuff the video game is using.
Here's the catch.
You're not supposed to be able to exit this sequence unless you:
- Quit the game
- Power off the console
- Finish it through normal gameplay
But the Systems menu gives you a fourth way.
You can exit this scene by loading a savegame.
Funnily enough, when the game says "View Summary Screen? (Yes/No)", the graphics still keep drawing the thing from the previous scene over the menu. Haha, silly Policenauts! Nothing told that drawing thread to end, so it's just looping over its executable in parallel and still drawing!
This stops being funny if you view a summary or actually just go to the next scene...
Because the code is overwritten with data
but nothing tells the thread to stop executing. So it tries to execute data as code, which leads to illegal opcodes all over the place. It's visible in pSX's console window - and if anyone wants to verify on their original copy of the game (spoilers follow):
The kicker is that this scene takes place over four rooms - you actually have to go to rooms 2, 3, or 4 in order to load the game - the option is not present otherwise.
So what's the deal here?
Konami tries to obviate this threading issue by - instead of correctly ending the thread on load - simply removing your option to load a savegame during it. Ah, but they forgot the scene is actually four rooms long, so in the other three rooms, you can load the game and break it. It crashes on pSX and ePSXe. To be honest, I haven't actually tried replicating it on hardware.
By the time I got around to looking at this bug, I'd learned a lot about the SZ event sector byte code, so I just finished Konami's original job and removed the option to Load for all 4 rooms in that sequence.
Yes, admittedly, the proper solution is to actually ensure the threading issue ends on load, but to be honest, this was pretty hard to do in the event sector (since it's all compiled proprietary bytecode in there and not easy to deal with). So the second best solution is to remove the method by which the player can trigger this bug... which like I said, was Konami's solution anyway.
Why didn't they find it?
I dunno. The fact that they removed it from 1/4 of the sequence says they did know about it at least at one point. But to be fair to them, that takes really really rigorous playtesting even by today's standards. I mean, can you imagine if your assignment was to go to every single room and different points in a video game and load a save game each and everytime?
Without savestates?
So, to be honest, it's not at all surprising that they didn't find it... although honestly, I'd have expected them to have missed it entirely than partially fixed it.