I ran into the following message when compiling my game: “**Warning: grammar properties might not work correctly **”.
The only information that I could find about it was the code adding the warning to the library and this newsgroup thread, with a fix. I used that fix, and it worked, the message is gone.
So apparently, if I understood correctly, the issue seemed to be that the dictionary starts before and ends after the address $8000. The problem is, when I look at both memory maps (before and after the fix), in both cases the dictionary starts before and ends after the address $8000 ! So it must be because of the 3rd condition, “-dict_end-dict_start is divisible by dict_entry_size”.
My question is: what does that condition do? I thought the number “-dict_end-dict_start” was supposed to be the dictionary size, except that it’s not; it’s not counted right in that case. For instance, if I add a useless array with 100 entries, both dict_start and dict_end are increased by 102, thus “-dict_end-dict_start” is decreased by 204 - this solves the problem providing 204 is not a multiple of your dict_entry_size, but it’s not exactly what was meant. If this number is supposed to be the dictionary size, it should be something like “$8000-dic_start + $8000+dict_end”.
And assuming the dictionary size was computed right, what is the condition supposed to check?
My other question: if this bug isn’t fixed or if I just ignore this warning, how bad could it break my game?
I include both my memory maps if someone wants to make sure I understood the addresses correctly.
Inform 6.32 for Win32 (18th November 2010)
[Compilé avec la version 2.4dev de la bibliothèque francophone.]
Dynamic ±--------------------+ 00000
memory | header |
±--------------------+ 00040
| abbreviations |
+ - - - - - - - - - - + 00148
| abbreviations table |
±--------------------+ 00208
| header extension |
±--------------------+ 00210
| property defaults |
+ - - - - - - - - - - + 0028e
| objects |
+ - - - - - - - - - - + 00a60
| object short names, |
| common prop values |
+ - - - - - - - - - - + 01dda
| class numbers table |
+ - - - - - - - - - - + 01dea
| symbol names table |
+ - - - - - - - - - - + 02917
| indiv prop values |
±--------------------+ 02a0e
| global variables |
+ - - - - - - - - - - + 02bee
| arrays |
+=====================+ 0393c
Readable| grammar table |
memory + - - - - - - - - - - + 04d3a
| actions |
+ - - - - - - - - - - + 04e80
| parsing routines |
+ - - - - - - - - - - + 04e82
| adjectives |
±--------------------+ 04e82
| dictionary |
+=====================+ 08240
Above | Z-code |
readable±--------------------+ 2d9a8
memory | strings |
±--------------------+ 514b0
Inform 6.32 for Win32 (18th November 2010)
[Compilé avec la version 2.4dev de la bibliothèque francophone.]
homeland.inf(15): Warning: Array “dictionary_push” declared but not used
Dynamic ±--------------------+ 00000
memory | header |
±--------------------+ 00040
| abbreviations |
+ - - - - - - - - - - + 00148
| abbreviations table |
±--------------------+ 00208
| header extension |
±--------------------+ 00210
| property defaults |
+ - - - - - - - - - - + 0028e
| objects |
+ - - - - - - - - - - + 00a60
| object short names, |
| common prop values |
+ - - - - - - - - - - + 01dda
| class numbers table |
+ - - - - - - - - - - + 01dea
| symbol names table |
+ - - - - - - - - - - + 02919
| indiv prop values |
±--------------------+ 02a10
| global variables |
+ - - - - - - - - - - + 02bf0
| arrays |
+=====================+ 039a2
Readable| grammar table |
memory + - - - - - - - - - - + 04da0
| actions |
+ - - - - - - - - - - + 04ee6
| parsing routines |
+ - - - - - - - - - - + 04ee8
| adjectives |
±--------------------+ 04ee8
| dictionary |
+=====================+ 082a8
Above | Z-code |
readable±--------------------+ 2da20
memory | strings |
±--------------------+ 51538
Compiled with 1 warning