Overworld Hex Editing

View previous topic View next topic Go down

Overworld Hex Editing

Post by qwertymodo on Wed 31 Aug 2016 - 14:20

I'd like to fix this issue in PW, but I can't edit the overworld.  I only need to replace 3 of the map32 tiles, and I already know which tiles I need to use, but I can't seem to find any information on the data location/format of the overworld tiles.  Does anybody either know where I can get that info or else know how to edit the overworld in Black Magic (v0.9a)?  That, at least, seems to be able to open and edit PW, but I can't figure out how to actually use it...

avatar
qwertymodo
Administrator
Administrator

Since : 2014-10-21

Back to top Go down

Re: Overworld Hex Editing

Post by Puzzledude on Wed 31 Aug 2016 - 14:28

Does anybody either know where I can get that info or else know how to edit the overworld in Black Magic (v0.9a)?  That, at least, seems to be able to open and edit PW, but I can't figure out how to actually use it...
As far as I know, Black magic is completely incompatible with what has been edited with Hyrule Magic. I've checked the code and these 2 programs are not compatible. So you should not be able to edit this rom with Black magic. It is also a great question what will happen uppon you pressing Save while having the PW opened in BM, my guess would be a bugged rom.

I'd like to fix this issue in PW, but I can't edit the overworld.  I only need to replace 3 of the map32 tiles, and I already know which tiles I need to use, but I can't seem to find any information on the data location/format of the overworld tiles.
Believe me, I tried, but for some reason I could not edit this out. As you might know there are certain overworld edits in Remodel, which are different from PW. I used the same method here but it was not working, since the tile I wanted to edit had bigger values and thus needed more space in the hex string. So I could not block this false transit off (what should be done is to block that path which leads left from the main path up to the church).
avatar
Puzzledude
Elite ROM Hacker
Elite ROM Hacker

Since : 2012-06-20

Back to top Go down

Re: Overworld Hex Editing

Post by qwertymodo on Wed 31 Aug 2016 - 15:02

I just need to swap these 3 map32 tiles to match the light world version of the area.  I've already confirmed that the correct tiles exist in the exact same spot in the icy world tileset.

[You must be registered and logged in to see this image.]


[You must be registered and logged in to see this image.]
avatar
qwertymodo
Administrator
Administrator

Since : 2014-10-21

Back to top Go down

Re: Overworld Hex Editing

Post by Puzzledude on Wed 31 Aug 2016 - 16:20

This could work, I actually wanted to edit one 32x32 block with 2 different 16x16 blocks. So you are using a different method, which seems doable.
avatar
Puzzledude
Elite ROM Hacker
Elite ROM Hacker

Since : 2012-06-20

Back to top Go down

Re: Overworld Hex Editing

Post by qwertymodo on Wed 31 Aug 2016 - 16:27

Yeah, doable if I knew where that data was... :/
avatar
qwertymodo
Administrator
Administrator

Since : 2014-10-21

Back to top Go down

Re: Overworld Hex Editing

Post by Puzzledude on Wed 31 Aug 2016 - 17:29

Yeah, doable if I knew where that data was... :/
I tested this out and have come to same conclusion as years before when I was making the Remodel. I actually wanted to do the same thing actually - to bring in the light world tiles.

But this means: from up to bottom:
element 1544 must go to 4779
588 to 6755
912 to 3233
which is not doable, since new values are much too high.

But I found the location though:
tile 1 is already ok.
tile 2 is at 6277A, value is 4C, since 588 is 02 4C (02 is not seen). BUT if changed to 4B, you will see that all 4 elements use the same byte, so it is not possible to edit just one.

tile 3 is at 62789: 8F, then comes 90 90 20
ie 38F, 390, 390, 420 in hex is
911, 912, 912, 1056 in dec, which are indeed the numbers of tiles going horizontally in this row. This tile can thus be changed but only in range of 00 to FF, so it can not be 3233 in dec, which is far to big.

Tile 2 is even more impossible: 588, while shared 4 times in comparisment to a great number of 6755 and not shared, while 588 is shared 3 times.

Changing this is simply not possible through hex alone.


For instance, you can do this in hex:
1B772: C2 to 73
1B776: 11 to 31
this will block the passage up in a different way, but all tiles 588 are affected and a lot of new gfx bugs are else where.

I have to again pass on this one, like I did on Remodel, but maybe you can examine the code at 6277A and 62789 and make something out of it. Tile 1 should be around one row higher in hex.
avatar
Puzzledude
Elite ROM Hacker
Elite ROM Hacker

Since : 2012-06-20

Back to top Go down

Re: Overworld Hex Editing

Post by qwertymodo on Wed 31 Aug 2016 - 18:18

That's really weird, because the light and icy world versions of that area use completely identical tiles except for those 3 and the trees.  Is there any documentation of the data format I could look at?  The locations give me a great starting point, maybe if I can understand the data format I can figure out why it works for the light world but not the icy world.

Edit: The corresponding data table for the light world version of that area starts at PC 0x05BEDB
avatar
qwertymodo
Administrator
Administrator

Since : 2014-10-21

Back to top Go down

Re: Overworld Hex Editing

Post by Puzzledude on Thu 1 Sep 2016 - 10:20

That's really weird, because the light and icy world versions of that area use completely identical tiles except for those 3 and the trees.  Is there any documentation of the data format I could look at?  The locations give me a great starting point, maybe if I can understand the data format I can figure out why it works for the light world but not the icy world.
But the answer is simple, dark world area has no space. It doesn't really matter what the light world areas is, since it is on a different spot using more space, the dark world version is using a lot less space, that's the whole point - and of course PW not being compatible with HM.

This would otherwise be an easy fix in a matter of seconds, since the HM would restructure the hex string by making more room for this area. So now when you try to do that on an view-decoded rom, it just give you the annoing out of space error message.

Is there any documentation of the data format I could look at?
I never decoded overworlds, since it seems they use 2 areas of data for one overworld area and are quite more complex than the easier tile-strategy of the indoors.

avatar
Puzzledude
Elite ROM Hacker
Elite ROM Hacker

Since : 2012-06-20

Back to top Go down

Re: Overworld Hex Editing

Post by qwertymodo on Thu 1 Sep 2016 - 12:21

Yeah, after finding the data table, it definitely is smaller by several bytes, so yeah, non-starter as far as I can see Sad
avatar
qwertymodo
Administrator
Administrator

Since : 2014-10-21

Back to top Go down

Re: Overworld Hex Editing

Post by qwertymodo on Thu 1 Sep 2016 - 13:36

Wait a minute, I've been going at this all wrong, I think I have it in 18 bytes Very Happy

[You must be registered and logged in to see this image.]

I still need to redo the tile right in front of me, it looked right in HM, but the brown ground and squared off corner are wrong.  The only thing I need to double check, was it safe to assume that this tile was unused in the game?

[You must be registered and logged in to see this image.]

Edit: Wait, you can still walk behind that top statue. Dangit Sad
avatar
qwertymodo
Administrator
Administrator

Since : 2014-10-21

Back to top Go down

Re: Overworld Hex Editing

Post by qwertymodo on Thu 1 Sep 2016 - 15:37

Ok, assuming I'm right about unused tiles, I managed to make a tile to replace 4C at 6277A (4D appears unused), and this is the result.  Now I just need to replace the corner tiles so they visually match up, but that should be easy.  Functionally, at least, I can confirm that this does block that pathway.

[You must be registered and logged in to see this image.]
avatar
qwertymodo
Administrator
Administrator

Since : 2014-10-21

Back to top Go down

Re: Overworld Hex Editing

Post by qwertymodo on Thu 1 Sep 2016 - 16:27

Only 1 tile left to go, to fix up that shadow next to the statue. Also, I fixed the mis-matched tiles that I used in the last one.

[You must be registered and logged in to see this image.]
avatar
qwertymodo
Administrator
Administrator

Since : 2014-10-21

Back to top Go down

Re: Overworld Hex Editing

Post by Puzzledude on Thu 1 Sep 2016 - 16:56

I solved it!

Nice strategy that you used with one more tile.

Here is my solution:
01.) 18B0C: 06 to 73
02.) 18B0F: 60 to 30

03.) 18CCF: 06 to 73
04.) 18CD1: 36 to 33

05.) 1BF0A: 06 to 73
06.) 1BF0E: 60 to 30

07.) 1C0D2: 06 to 73
08.) 1C0D6: 61 to 31

09.) 20B0C: 07 to 73
10.) 20B0F: 61 to 31

11.) 20CCF: 07 to 73
12.) 20CD1: 06 to 03

13.) 23F0A: 07 to 73
14.) 23F0E: 60 to 30

15.) 240D2: 07 to 73
16.) 240D6: 61 to 31

[You must be registered and logged in to see this image.]

This will basically eliminate the false knight statue and replace it with actual solid tiles, which you can not pass. The way SePH actually wanted in this area, but he probably forgot the entir upper part of the statue is passable - which results in this bug.

Furthermore: the new element is also using global gfx-41, which means this can not have negative side effects in other areas. It just gets changed in compatible areas, so it auto-changes correctly in the light world as well (despite the fact there is no need for change in light world).


PS
Your solution also looks intresting.


Last edited by Puzzledude on Thu 1 Sep 2016 - 17:38; edited 1 time in total
avatar
Puzzledude
Elite ROM Hacker
Elite ROM Hacker

Since : 2012-06-20

Back to top Go down

Re: Overworld Hex Editing

Post by Puzzledude on Thu 1 Sep 2016 - 17:04

PPS
I don't think you can fix that minor edge on your picture with just with one tile edits, since you see this does not fit together. Namely the wall "waves". Your wave on the right starts "low". It should start "up", which basically means that the entire "wave" in the horizontal must change: ie all tiles must swap on 8x8 basis (aka all half waves must swap places in the entire horizontal if you want ot fix this).

Edit
On a second thought the other part of the diagonal wall is also off by one pixel by default, so it Can be done!
avatar
Puzzledude
Elite ROM Hacker
Elite ROM Hacker

Since : 2012-06-20

Back to top Go down

Re: Overworld Hex Editing

Post by qwertymodo on Thu 1 Sep 2016 - 18:00

I know it's not pixel perfect, but the exact same mismatch already exists on the opposite side, so I'm not too worried.  Take a look at the right-hand side of the area, which I haven't modified at all.

[You must be registered and logged in to see this image.]
avatar
qwertymodo
Administrator
Administrator

Since : 2014-10-21

Back to top Go down

Re: Overworld Hex Editing

Post by Puzzledude on Thu 1 Sep 2016 - 18:05

Yes, nice, I guess now we have 2 solutions to this problem:

[You must be registered and logged in to see this image.]
avatar
Puzzledude
Elite ROM Hacker
Elite ROM Hacker

Since : 2012-06-20

Back to top Go down

Re: Overworld Hex Editing

Post by qwertymodo on Thu 1 Sep 2016 - 19:08

Ok, here's my final version (other than testing to make sure my new tiles really weren't used anywhere).

[You must be registered and logged in to see this image.]

Code:
// New map32 tile #585
origin $01836D
    db $5E,$7E,$00,$11

origin $01B76D
    db $5F,$44,$C2,$11

origin $02036D
    db $05,$44,$04,$11

origin $02376D
    db $05,$35,$D4,$11

// Tile #716 -> Tile #585
origin $06277C
    db $49


// New map32 tile #589
origin $018373
    db $5E,$1C,$34,$11

origin $01B773
    db $5E,$1C,$A9,$11

origin $020373
    db $05,$1C,$34,$11

origin $023773
    db $05,$25,$A9,$11

// Tile #588 -> Tile #589
origin $06277A
    db $4D


// New map32 tile #2898
origin $0190FA
    db $60,$AB,$03,$10

origin $01C4FA
    db $34,$C6,$53,$00

origin $0210FA
    db $67,$C6,$03,$10

origin $0244FA
    db $60,$C6,$50,$10

// Tile #2894 -> Tile #2898
origin $06277D
    db $52


// New map32 tile #5821
origin $01A21B
    db $58,$CF,$56,$11

origin $01D61B
    db $67,$D0,$B8,$11

origin $02221B
    db $5B,$CA,$DC,$11

origin $02561B
    db $6A,$CA,$1D,$11

// Tile #5806 -> Tile #5821
origin $06278E
    db $BD
avatar
qwertymodo
Administrator
Administrator

Since : 2014-10-21

Back to top Go down

View previous topic View next topic Back to top


 
Permissions in this forum:
You cannot reply to topics in this forum