Talk:Densetsu no Starfy 3: Difference between revisions

From Starfy Wiki
Jump to navigationJump to search
Dimedime (talk | contribs)
No edit summary
No edit summary
 
(One intermediate revision by one other user not shown)
Line 15: Line 15:


::We could look at both versions though a debugger (like no-cash), combined with decompiling functions above, maybe we could find differences in individual functions. I've never compared revisions of files like this before, so there could be other, more efficient ways to find revision differences. [[User:Dimedime|Dimedime]] ([[User talk:Dimedime|talk]]) 13:50, 18 February 2021 (UTC)
::We could look at both versions though a debugger (like no-cash), combined with decompiling functions above, maybe we could find differences in individual functions. I've never compared revisions of files like this before, so there could be other, more efficient ways to find revision differences. [[User:Dimedime|Dimedime]] ([[User talk:Dimedime|talk]]) 13:50, 18 February 2021 (UTC)
:So, I've managed to create the 197 MB fc.exe output file that you talked about and, yeah, it's not very useful. Most of the data in the original ROM is offset very slightly in the revision, and fc.exe fails to re-synchronize the comparison when it finds a mismatch, so it doesn't seem to produce meaningful comparisons.
:What I've been doing is reverse-engineering where the game stores scripts, maps, objects, etc. by using debuggers/decompilers. GBA has no internal filesystem, so pointer tables generally suffice for me. I then scrape and format all this data (some of it is compressed, so I uncompress it) for both the original and revision ROMs, and it is this formatted data that I compare. I don't run fc.exe on entire ROMs, just certain chunks of data that I pull out of the ROM. By now, I can conclude that the revision has modified object placements and scripting that I've already put on the page, and there are *no* differences in the foreground (solid) layer of any map. [[User:Dimedime|Dimedime]] ([[User talk:Dimedime|talk]]) 17:57, 22 February 2021 (UTC)
:Thank you, Dimedime. ^^ Great! [[User:Torchickens|Torchickens]] ([[User talk:Torchickens|talk]]) 23:16, 23 February 2021 (UTC)
==Object Placement Differences==
==Object Placement Differences==
Just a quick update from me: I've finished dumping and comparing the object data from the original ROM + Rev. 1, you can see the comparisons [https://www.youtube.com/watch?v=qVP5av0E0XU here]. I'll update the glitches/differences articles shortly, using my vid as a source. [[User:Dimedime|Dimedime]] ([[User talk:Dimedime|talk]]) 01:36, 19 February 2021 (UTC)
Just a quick update from me: I've finished dumping and comparing the object data from the original ROM + Rev. 1, you can see the comparisons [https://www.youtube.com/watch?v=qVP5av0E0XU here]. I'll update the glitches/differences articles shortly, using my vid as a source. [[User:Dimedime|Dimedime]] ([[User talk:Dimedime|talk]]) 01:36, 19 February 2021 (UTC)
:Neat! This is fascinating stuff. Thanks for not only documenting these changes but making the videos. [[User:Torchickens|Torchickens]] ([[User talk:Torchickens|talk]]) 23:16, 23 February 2021 (UTC)

Latest revision as of 23:16, 23 February 2021

Byte comparison list between v1.0 and rev 1

I'm trying to make one with the FC /b tool for the command prompt. It generated a file but it's taking a while and unfortunately it seems to be getting quite large for us to look at. :( On the other hand, if a change seems suspicious hopefully it may help (e.g. a set of Shift JIS bytes being changed could indicate a typo fix or similar in the later version).

I'm wondering though if I've been approaching this in the wrong way. Maybe the large file could be due to pointer changes/then making the chain result of affecting other pointers. For looking to see if v1.1 fixed a typo, I made a Densetsu no Starfy 3/Text dump for v1.0 with WindHex; so hopefully the same could be repeated for v1.1, and then we could look through both to see if there are any changes. ^^

Perhaps a Starfy disassembly repository could be started; since the pointer problem may be less of an issue; the pointers would be dynamically generated after reassembling the ROM with a SYM file reference, though despite working with disassemblies (just the Pokémon ones), I feel unconfident with them and don't know how to start one. (hmm)

Another idea but harder could be to just do a lot more work, and maybe look through both revisions with a debugger until we find the changes. I'm not sure what else though, and I reached out to Jul asking how to find revision differences somewhere (but unsure of the link at the moment). Is it OK if I ask, do you have any other ideas Dimedime (Talk)? Thanks. Torchickens (talk) 03:57, 18 February 2021 (UTC)

Update: It dumped the file of changes between the ROMs, but it's 197 MB. I could upload it on Mega perhaps but they'd probably think it's suspicious even though it's data mining and take it down. Torchickens (talk) 03:58, 18 February 2021 (UTC)
Yeah, a byte-by-byte comparison wouldn't really go anywhere. If a function early on is just a little longer or shorter, then basically every byte after that would be different. I'm less familiar with Starfy 3 than Starfy 2, but comparing text/script dumps could be a possibility.
If Starfy 3 internally is very similar to Starfy 2, then I should be able to dump the objects in every room to see if any (incl. invisible objects) got moved/removed between revisions. Each object has a function it calls to update itself (rendering, collision checking, physics updating, etc.); I'll have to compare each of these functions manually, as it would be highly unlikely that they would line up.
I'm not too confident about making a Starfy disassembly project. I've never built a ROM from source before. I'm thinking of something more in the line of a reverse engineering project with a program like Ghidra to decompile individual functions, label certain offsets in the ROM, and make my own tables and structs. It's what I did for Starfy 2.
We could look at both versions though a debugger (like no-cash), combined with decompiling functions above, maybe we could find differences in individual functions. I've never compared revisions of files like this before, so there could be other, more efficient ways to find revision differences. Dimedime (talk) 13:50, 18 February 2021 (UTC)
So, I've managed to create the 197 MB fc.exe output file that you talked about and, yeah, it's not very useful. Most of the data in the original ROM is offset very slightly in the revision, and fc.exe fails to re-synchronize the comparison when it finds a mismatch, so it doesn't seem to produce meaningful comparisons.
What I've been doing is reverse-engineering where the game stores scripts, maps, objects, etc. by using debuggers/decompilers. GBA has no internal filesystem, so pointer tables generally suffice for me. I then scrape and format all this data (some of it is compressed, so I uncompress it) for both the original and revision ROMs, and it is this formatted data that I compare. I don't run fc.exe on entire ROMs, just certain chunks of data that I pull out of the ROM. By now, I can conclude that the revision has modified object placements and scripting that I've already put on the page, and there are *no* differences in the foreground (solid) layer of any map. Dimedime (talk) 17:57, 22 February 2021 (UTC)
Thank you, Dimedime. ^^ Great! Torchickens (talk) 23:16, 23 February 2021 (UTC)

Object Placement Differences

Just a quick update from me: I've finished dumping and comparing the object data from the original ROM + Rev. 1, you can see the comparisons here. I'll update the glitches/differences articles shortly, using my vid as a source. Dimedime (talk) 01:36, 19 February 2021 (UTC)

Neat! This is fascinating stuff. Thanks for not only documenting these changes but making the videos. Torchickens (talk) 23:16, 23 February 2021 (UTC)