Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fat_frog.rpg fails with numerous script errors #1073

Open
ohrrpgce-bugbot opened this issue Sep 8, 2015 · 8 comments
Open

fat_frog.rpg fails with numerous script errors #1073

ohrrpgce-bugbot opened this issue Sep 8, 2015 · 8 comments
Labels
bug Yeah... that's broken

Comments

@ohrrpgce-bugbot
Copy link

[sf#2014]

matski reports that when running fat_frog.rpg in recent versions of the ohrrpgce, it fails frequently with script error messages. http://www.slimesalad.com/forum/viewtopic.php?t=6703

"Script error! Script data may be corrupt or unsupported: script id 30069 does not exist"
"Funny... no scripts running!"

g_debug.txt logs many instances of:

Scripterr(6): script 30069 [id 30069] does not exist
Scripterr(6): Failed to load eachstep script 30069 [id 30069]

From: @bob-the-hamster
Reported version: Nightly WIP (Callipygous)
Operating system: Windows

@ohrrpgce-bugbot
Copy link
Author

Comment author: @bob-the-hamster

The error seems to be occuring on Map 8 "Gib Farm"

Looking that that map in the editor, there does indeed seem to be script id 30069 in all of the script triggers. The number 30069 is also present in "Foot offset" and both "Harm tile flash" and "Harm tile damage"

When the edit general game data menu is opened on map 8, the following is logged to the c_debug.txt

Error: Map 8's general data corrupt (or unsupported); clamping gmap(18) = 30069 -> 0
Error: Map 8's general data corrupt (or unsupported); clamping gmap(17) = 30192 -> 0
Error: Map 8's general data corrupt (or unsupported); clamping gmap(11) = 30069 -> 0
Error: Map 8's general data corrupt (or unsupported); clamping gmap(16) = 30069 -> 0
Error: Map 8's general data corrupt (or unsupported); clamping gmap(10) = 30069 -> 0

@ohrrpgce-bugbot
Copy link
Author

Comment author: @bob-the-hamster

It appears that this same thing happens on maps 5,6,7,8,9

Maps 0-4 seem fine, and maps 10-22 seem fine.

I also notice that All the maps from 23 to 41 except for 30 and 33 have corrupted map names.

I think this might be a genuine case of file corruption, not a version compatability issue.

@ohrrpgce-bugbot
Copy link
Author

Comment author: @bob-the-hamster

It is worth mentioning that the copy of fat_frog.rpg from the CastleParadox gamelist (which appears to be an earlier unfinished version) also exhibits similar map corruption:

http://www.castleparadox.com/gamelist-display.php?game=865

So I can't yet be sure what is happening here.

@ohrrpgce-bugbot
Copy link
Author

Comment author: @bob-the-hamster

I found another copy of fat_frog.rpg here: http://www.froggyville.com/games/fatfrog.zip

This seems to be the same file as the one on castleparadox, but it includes a copy of game.exe and other readme files, which makes it appear original, as best as I can tell.

It still has the same issue with the map data, so for now I am going to say that this is probably not actual file corruption, just apparent corruption caused by an old version compatability bug.

@ohrrpgce-bugbot
Copy link
Author

Comment author: @bob-the-hamster

The raw data from the .map lump in fat_frog.rpg looks like this:

0 [0, 0, 28, 0, 1, 0, 1, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
1 [1, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
2 [0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
3 [2, 0, 3, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
4 [4, 0, 56, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
5 [5, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117]
6 [6, 0, 25, 0, 0, 0, 0, 0, 30, 0, 0, 0, 255, 0, 0, 0, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 240, 117, 117, 117, 117]
7 [6, 0, 37, 0, 0, 0, 0, 0, 30, 0, 0, 0, 255, 0, 0, 0, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117]
8 [7, 0, 19, 0, 0, 0, 0, 0, 30, 0, 0, 0, 255, 0, 0, 0, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 240, 117, 117, 117, 117]
9 [8, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117]
10 [3, 0, 30, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
11 [5, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

I know that the oldest fat_frog.rpg file I have is dated April 3 1999. My guess is that maps 5 thru 9 were added using a lost-to-time version of custom.exe that failed to correctly initialize .map records for newly added maps.

Plotscripting did not even exist until the November 9th 1999 release, and it looks like map wrapping was first added in the same version, which means that no more than the first 10 bytes of a .map record could have been used in Fat Frog's version. The rest would have been unused padding.

@ohrrpgce-bugbot
Copy link
Author

Comment author: @bob-the-hamster

Okay. so I have two copies of fat_frog.rpg

I have the "demo" version, which has gen(genVersion) = 2
I have the "full" version that matski sent me, which has gen(genVersion) = 3

gen(genVersion) = 2 is "June 18 1999 format"
gen(genVersion) = 3 is "July 8 1999 format"

The next version after that is:

gen(genVersion) = 4 is "Sept 15 2000 format"

That means that we don't have any simple way to detect the changes that happened in the ELEVEN versions that went in-between July 8 1999 and Sept 15 2000, including the Nov 9 1999 version which added plotscripting (and therefore also added a script trigger to the .map record)

Now I can very easily add some code that zeroes out the unused .map records when upgrading from "June 18 1999 format". I feel that would be safe, and it would solve the bug for the Fat Frog demo (andy any other games older than July 8 1999)

But it does not solve the problem for the Fat Frog full-version, nor does it solve the problem for any other games released in that unfortunate 14-month span.

I can't simply zero out the .map records for games in that range, because I have no idea whether or not they have added script triggers to their maps.

Even an IF gamename = "fat_frog" THEN fix would be problematic, because the full version of fat_frog actually does have a fat_frog.hsp lump, indicating that there are actually some plotscripts in it.

Not giving up hope yet, but good lord! what am mess I made! (in my defense I had 15 years less experience)

@ohrrpgce-bugbot
Copy link
Author

Comment author: @rversteegen

I had the same problem when trying to clear garbage in the attack data. Which I never finished even though I did figure out a better way to determine whether a game is old enough to wipe the relevant data, thanks to svn history going back far enough in that case. (I wrote that up in the SoJ thread on CP, and I also used rpgbatch to find that only a couple games aside from SoJ were affected, which is why I lost interest).
The RPG format is not very useful, but there might be other things which can indicate whether a game is older than a certain version. whatsnew.txt is of course the place to look.

How is it possible for Fat Frog to be post-plotscripting but have garbage in the map autorun data? Were autorun scripts added later? I can't find anything in whatsnew.

@ohrrpgce-bugbot
Copy link
Author

Comment author: @bob-the-hamster

How is it possible for Fat Frog to be post-plotscripting but have garbage in the map
autorun data? Were autorun scripts added later? I can't find anything in whatsnew.

My best guess is that the early versions with plotscripting did not show any error message when trying to load a plotscript that did not exist. It probably just failed silently.

@ohrrpgce-bugbot ohrrpgce-bugbot added the bug Yeah... that's broken label Mar 14, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Yeah... that's broken
Projects
None yet
Development

No branches or pull requests

1 participant