Shademp
420
This whole venture began with the Omega- and G Reports. Long ago I had found addresses for changing the reports currently in the dropdown menu but I couldn't make sense of the values.
Upon revisiting the Omega Reports address, 2050DD4C, I found that each respective bit in this single-byte address sets each respective Omega Report to On or Off. I knew then the 0th bit was responsible for Omega Report #1, the 1st bit was responsible for Omega Report #2 and so on. The mystery though was that the game kept changing its mind about whether a bit value of 0- or a bit value of 1 meant that the report was collected and available in the dropdown menu.
Tests revealed that the game would randomly decide the "meaning" of each bit every time you returned to the Dirge of Cerberus logo-reveal prior to the start menu. Still meant though that I had no way of knowing beforehand which value of 2050DD4C meant that, for example, all eight Omega Reports had been collected. It could be any value in- and between 0 and 255.
A quick look into the assembler revealed a particular address that 2050DD4C liked to connect with: 2046F834. Observing the changing values then revealed to me what was going on. These two address values were performing an Exclusive Or operation to yield the final, actual result.
[2050DD4C] XOR [2046F834] = Omega Reports collected
Say that you boot up the game and get to the start screen. You observe that the value of 2050DD4C is 249. The value 2046F834 is also 249.
249 XOR 249 = 0
No Omega Reports have been collected. This makes sense that the default value before loading any gameplay would be that no reports are in your inventory. So you then load a chapter checkpoint, for example one where the first six reports have been collected. The value of 2050DD4C gets changed to 198 but the value of 2046F834 remains 249 so long as you don't return to the Dirge of Cerberus logo-reveal.
198 XOR 249 = 63
63 in binary is 00111111 (zeros added to match the number of bits in a byte). The value makes sense, given what we established earlier about which bit is responsible for which report. The bit to the most-right is the one I referred to as the 0th bit.
With this knowledge you can easily adjust which Omega Reports are present. In order to bypass having to make XOR calculations on my own I simply set the 2046F834 value to 0. This works because A XOR 0 = A. Subsequently I can look at address 2050DD4C, set it to 255 and instantly have all Omega Reports in the dropdown menu.
Zooming out at the whole area of 64 address flags, these are the memory regions in which they are placed in DCFFVII International.
Flag address values that change with gameplay: 2050DD20 - 2050DD5F
Flag address values that don't change with gameplay: 2046F808 - 2046F847
Random values are assigned to each of the 64 addresses in 2046F808 - 2046F847 whenever you return to the Dirge of Cerberus logo-reveal.
I may dub these areas the "64 Static Global Flag Addresses" due to how these addresses aren't moved about in memory and how they act in conjunction with more local variables like the game zone flags.
There is actually a third memory region that shows these 64 "flag addresses" yet again: 204B2900 - 204B293F
These addresses actually show the results that you get after the Exclusive Or operations. The downside is that the values are only updated as you load a chapter checkpoint or transition to a new checkpoint. So yes, you can use the address 204B292C (contained in the aforementioned region) to change the number of Omega Reports in your inventory, but you will only spot the result after reloading the zone or transitioning to a new checkpoint. It is much more useful to observe the 2050DD20 - 2050DD5F region because there I can observe changes in the game as they happen LIVE. Far easier to figure out the functions of each address that way.
This whole business with XOR operations to get the final result is not exclusive to the 64 Static Global Flag Addresses. The address I used to unlock hidden menu maps, such as those for the online Deepground lobby, worked in just the same way. Back then though the address values made no sense to me because I didn't know about the XOR operation that was happening.
Menu map address value that changes with gameplay: 20A06237
Menu map address value that doesn't change with gameplay: 2047DE2F
[20A06237] XOR [2047DE2F] = Current Menu Map
Is there an equivalent address that shows the final menu map number, without all that XORing business? Yes: Address 204C2ABC. But it only updates every time you open up the actual menu map. In comparison, 20A06237 updates immediately as the player enters an area that calls for a different menu map compared to earlier.
Upon revisiting the Omega Reports address, 2050DD4C, I found that each respective bit in this single-byte address sets each respective Omega Report to On or Off. I knew then the 0th bit was responsible for Omega Report #1, the 1st bit was responsible for Omega Report #2 and so on. The mystery though was that the game kept changing its mind about whether a bit value of 0- or a bit value of 1 meant that the report was collected and available in the dropdown menu.
Tests revealed that the game would randomly decide the "meaning" of each bit every time you returned to the Dirge of Cerberus logo-reveal prior to the start menu. Still meant though that I had no way of knowing beforehand which value of 2050DD4C meant that, for example, all eight Omega Reports had been collected. It could be any value in- and between 0 and 255.
A quick look into the assembler revealed a particular address that 2050DD4C liked to connect with: 2046F834. Observing the changing values then revealed to me what was going on. These two address values were performing an Exclusive Or operation to yield the final, actual result.
[2050DD4C] XOR [2046F834] = Omega Reports collected
Say that you boot up the game and get to the start screen. You observe that the value of 2050DD4C is 249. The value 2046F834 is also 249.
249 XOR 249 = 0
No Omega Reports have been collected. This makes sense that the default value before loading any gameplay would be that no reports are in your inventory. So you then load a chapter checkpoint, for example one where the first six reports have been collected. The value of 2050DD4C gets changed to 198 but the value of 2046F834 remains 249 so long as you don't return to the Dirge of Cerberus logo-reveal.
198 XOR 249 = 63
63 in binary is 00111111 (zeros added to match the number of bits in a byte). The value makes sense, given what we established earlier about which bit is responsible for which report. The bit to the most-right is the one I referred to as the 0th bit.
Code:
00000001 = Omega Report #1 Collected
00000010 = Omega Report #2 Collected
00000100 = Omega Report #3 Collected
00001000 = Omega Report #4 Collected
00010000 = Omega Report #5 Collected
00100000 = Omega Report #6 Collected
01000000 = Omega Report #7 Collected
10000000 = Omega Report #8 Collected
11111111 = All Omega Reports Collected
With this knowledge you can easily adjust which Omega Reports are present. In order to bypass having to make XOR calculations on my own I simply set the 2046F834 value to 0. This works because A XOR 0 = A. Subsequently I can look at address 2050DD4C, set it to 255 and instantly have all Omega Reports in the dropdown menu.
Zooming out at the whole area of 64 address flags, these are the memory regions in which they are placed in DCFFVII International.
Flag address values that change with gameplay: 2050DD20 - 2050DD5F
Flag address values that don't change with gameplay: 2046F808 - 2046F847
Random values are assigned to each of the 64 addresses in 2046F808 - 2046F847 whenever you return to the Dirge of Cerberus logo-reveal.
I may dub these areas the "64 Static Global Flag Addresses" due to how these addresses aren't moved about in memory and how they act in conjunction with more local variables like the game zone flags.
There is actually a third memory region that shows these 64 "flag addresses" yet again: 204B2900 - 204B293F
These addresses actually show the results that you get after the Exclusive Or operations. The downside is that the values are only updated as you load a chapter checkpoint or transition to a new checkpoint. So yes, you can use the address 204B292C (contained in the aforementioned region) to change the number of Omega Reports in your inventory, but you will only spot the result after reloading the zone or transitioning to a new checkpoint. It is much more useful to observe the 2050DD20 - 2050DD5F region because there I can observe changes in the game as they happen LIVE. Far easier to figure out the functions of each address that way.
This whole business with XOR operations to get the final result is not exclusive to the 64 Static Global Flag Addresses. The address I used to unlock hidden menu maps, such as those for the online Deepground lobby, worked in just the same way. Back then though the address values made no sense to me because I didn't know about the XOR operation that was happening.
Menu map address value that changes with gameplay: 20A06237
Menu map address value that doesn't change with gameplay: 2047DE2F
[20A06237] XOR [2047DE2F] = Current Menu Map
Is there an equivalent address that shows the final menu map number, without all that XORing business? Yes: Address 204C2ABC. But it only updates every time you open up the actual menu map. In comparison, 20A06237 updates immediately as the player enters an area that calls for a different menu map compared to earlier.
Last edited: