Submarine mini game. The following addresses are memory.
009884F8
First table. Seems to be main initialisation data of player submarine (initial position etc). I fixed this up to the International standard by copying the table from the PSX International game.
Some Questions.
1. Why does the game take these values from the exe at run time when it doesn't need to. It is already in memory. If you edit memory, it is simply replaced from the exe itself. In other words, it is replacing the SAME data. Is it possible to disable this behaviour so that we can edit memory to reflect changes at runtime rather than have to edit the exe?
2. Why are there almost identical tables to this one further down, like the one starting at 0098B6E8? What is this for? I assumed each table was for the different game levels, but if this is so, why doesn't changing the exe for them do anything? (at least that I saw). Is it the case that they were designing 5 unique difficulty levels and then just gave up?
3. The tables (or at least parts of them?) are copied when the sub game starts to yet another area (area changes). The area being the temp data area/ vars around 00125000) Why isn't it just reading the values from where they are originally in memory (009884F8 for example)?
4. The byte value A0 8C in the tables (and other hard coded places like 00780DB6) is the time limit (10 minutes, 36000/60/60). This time value, and other values, are not reflected when they are changed. Instead, all levels share the value at 00980DD0, which can be edited at run time. So there are multiple A0 8C values that appear completely redundant.
5. There is hard coded data related to the enemy subs starting at 00780E4A. The value here is Sub 1 (of maximum 12) energy (4000). The following entries are related to Sub 1. Sub 2 starts at 00780EBC for example. Each level has 12 hard coded subs (so total is 60 records for the 5 difficulty levels). Whether a sub will appear or not in any given level is dependent on whether its flag is set to 1. I forget which this is now but it is easy to find again. probably the entry like at 00780E8C. Some of these values affect the enemy sub's starting point and possibly speed. However, when I documented these entries a while ago (which I have now lost), the actual sub's movement pattern remained a mystery. Where is it coming from? How does the AI work for each sub in each level?
6. It seems that some of this data is not used at all and again.. data is duplicated. Why is there 2 identical sets of data, 1 hard coded and 1 tabled? For example, look at the main table 009884F8 and then compare to 00780DB6. What the fuck is going on???
7. The data above the main tables has a format like
37 37 37 37 37 37 37 37 37 37 37 37 34 30 30 34
34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34
34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34
34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34
34 34 34 34 34 34 34 34 34 34 34 34 34 30 30 30
30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30
I remember this being the actual level design itself?
I need help. I am going insane in that exe.