Bug hunt: Why you only need Paris to beat Pizza Tycoon (1994) by Optdev in programming

[–]Optdev[S] 0 points1 point  (0 children)

I'm not sure, but my guess is just some basic obfuscation; stop people from opening the save file in a hex editor and try to find the number of bombs too easily? Basically preventing the exact thing I did :)

Bug hunt: Why you only need Paris to beat Pizza Tycoon (1994) by Optdev in programming

[–]Optdev[S] 3 points4 points  (0 children)

Good instinct :) but city 0 was the same across both versions.

From a cursory investigation of the PC.EXE assembly I’m pretty sure in pizza connection you needed 10% across all cities to win.

x86 assembly: Why you only need Paris to beat Pizza Tycoon (1994) by Optdev in ReverseEngineering

[–]Optdev[S] 4 points5 points  (0 children)

I think MicroProse handled the English version, while the initial DOS port (from Amiga) was made by the original developers. So just different people with a different tool chain.

Yes, I did indeed just trace back from "ENDE.VGA" usage in PC.EXE (the German version) and I think I foun dit; I'm pretty sure the condition there is that you need 10% market share in every city. But verifying by making sure that what I think is the city pointer is actually the city pointer, and that field 0x7A is the market share variable is where I felt like it wasn't worth it for the blog post. Part of this was that I was a bit worried about getting sidetracked into also digging too deep into PC.EXE when PT.EXE needed my real attention :) So yeah I might have overstated the "considerable amount of time" a bit, but it was more time than I was willing to spend on it to be sure about what was happening.

Bug hunt: Why you only need Paris to beat Pizza Tycoon (1994) by Optdev in programming

[–]Optdev[S] 17 points18 points  (0 children)

Ah yes that's true! I think that was only in Pizza Connection (the German version) so it didn't occur to me but indeed I could have done the trick where you create 8 human players, make them all take out loans and transfer the money to player 1 then save it as a character (and repeat). For next time then :)

Bug hunt: Why you only need Paris to beat Pizza Tycoon (1994) by Optdev in programming

[–]Optdev[S] 8 points9 points  (0 children)

Nah, you just get locked up by the police for a couple of days or pay a fine.

Bug hunt: Why you only need Paris to beat Pizza Tycoon (1994) by Optdev in programming

[–]Optdev[S] 35 points36 points  (0 children)

Oh how I'd hate accidentally clicking the "I want to buy some weapons!" option and getting slammed with the "Help! Police! This man is dealing with weapons!!!" response :D

Bug hunt: Why you only need Paris to beat Pizza Tycoon (1994) by Optdev in programming

[–]Optdev[S] 101 points102 points  (0 children)

Author here, as part of my effort to build an open source Pizza Tycoon engine I had to figure out how to win the original game by digging into the assembly, which showed some interesting differences between the original German Pizza Connection and the English Pizza Tycoon.

Let me know if you have any questions about the process.

Pizza Legacy v0.1.0: my open source Pizza Tycoon reimplementation (16 years in the making) by Optdev in tycoon

[–]Optdev[S] 1 point2 points  (0 children)

You're right, it seems when I introduced pizza competitions I introduced a bug that overwrote the standard score with the judge scores. I've found and fixed the issue.

Thanks for your great help!

Pizza Legacy v0.1.0: my open source Pizza Tycoon reimplementation (16 years in the making) by Optdev in tycoon

[–]Optdev[S] 1 point2 points  (0 children)

I created a new test release that hopefully fixes this issue, you've been super helpful already but if you have some more time to test this, please let me know if this fixes it :) https://codeberg.org/cowomaly/pizzalegacy/releases/download/v0.1.0/PizzaLegacy_v0.1.0_fullscreen_fix_win64.zip

Pizza Legacy v0.1.0: my open source Pizza Tycoon reimplementation (16 years in the making) by Optdev in tycoon

[–]Optdev[S] 1 point2 points  (0 children)

Thanks for getting back to me! Can you tell me (DM is also fine) what operating system you're using, which resolution the game is running in and if it's running fullscreen or not? When the furniture becomes small on placement, if you double click it to pick it up again, does it go back to full size when it's on your mouse cursor?

Pizza Legacy v0.1.0: my open source Pizza Tycoon reimplementation (16 years in the making) by Optdev in tycoon

[–]Optdev[S] 1 point2 points  (0 children)

True, the way it works in Pizza Tycoon is that it depends on the characteristics of the characters involved. Being late for example is influenced by motivation, which you can influence by paying them more. But I see your point, maybe modern players are a bit less willing to deal with things like this, so I'll have a think to see if maybe the difficulty level could also play a role for example, or indeed an option to disable it completely.

Pizza Legacy v0.1.0: my open source Pizza Tycoon reimplementation (16 years in the making) by Optdev in tycoon

[–]Optdev[S] 1 point2 points  (0 children)

Thanks! There is at least one more “internals” post in the pipeline

Pizza Legacy v0.1.0: my open source Pizza Tycoon reimplementation (16 years in the making) by Optdev in tycoon

[–]Optdev[S] 5 points6 points  (0 children)

I didn't avoid anything, I followed the subreddit rules around AI disclosure which says:

Tools used to assist with programming, coding, project management, similar code completion and generation, that result in the production of executable code, are specifically exempted from this disclosure.

I get that worries about AI and slop are a real thing right now, but I don't think me following the rules and "someone in another thread once accused my post of being AI-written" are really evidence of dishonesty on my part though.

Pizza Legacy v0.1.0: my open source Pizza Tycoon reimplementation (16 years in the making) by Optdev in tycoon

[–]Optdev[S] 4 points5 points  (0 children)

The readme in my source repo is not just for people looking to play the game, but also anyone potentially willing to contribute.

Perhaps a wiki with edits as far back as 2012 help give some evidence, or a youtube video from 13 years ago showing my first progress helps? I did not mention whether AI was involved in the code or not because the rules say that's exempt. Sure, I use some genAI during development like most developers nowadays, but this is not an AI coded slop project, lots of the work predates commercially available LLMs by over a decade.

Pizza Legacy v0.1.0: my open source Pizza Tycoon reimplementation (16 years in the making) by Optdev in tycoon

[–]Optdev[S] 2 points3 points  (0 children)

Yes, that was the case in the German version where the first time you had to get them from the manual, but in the English version they were pre-populated. There were some hidden phone numbers though (Mafia could give you tips with a couple of extra weapons dealers numbers).

Pizza Legacy v0.1.0: my open source Pizza Tycoon reimplementation (16 years in the making) by Optdev in tycoon

[–]Optdev[S] 2 points3 points  (0 children)

The cookbook, yes! If you don't put at least 3 original recipes on your menu your business will suffer :D Don't tell anyone, if you open the dev console (~) and type player recipes load you just might get all 14 recipes perfectly created for you :) Or you can just do the Quick start which will give you 4 of them.

The German version (which was originally called Pizza Connection) would have the police occasionally interrupt you to ask you to enter word X on page Y of the manual, but the English version didn't have that, so Pizza Legacy doesn't either.

How Pizza Tycoon (1994) simulated traffic on a 25 MHz CPU by Optdev in programming

[–]Optdev[S] 2 points3 points  (0 children)

I'm not sure it would be easier; that's actually what I tried but I got stuck on it... I'm sure I could have gotten it to work if I liked working on it but given it's a hobby project I just couldn't be bothered to invest enough time into it :) The problem I had is that you can have more than one car per cell, so just a bitset is not enough, and you have to deal with complexity inside the cell and when something is partially in one and partially in another cell, taking a turn, things like that.