PoP1 Game Boy (Color) format documentation
PoP1 Game Boy (Color) format documentation
Here is what I could figure out about the formats so far: http://www.princed.org/wiki/Game_Boy_format
Re: PoP1 Game Boy (Color) format documentation
Thanks for creating that article.
Re: PoP1 Game Boy (Color) format documentation
Here is the picture:http://www.princed.org/wiki/Game_Boy_format wrote: There is an unused sprite group with map offset = 0x3B444, tiles offset = 0x3B523. It seems to show a pile of bones becoming a guard!?
Re: PoP1 Game Boy (Color) format documentation
It also has a loose floor (with mod 1) that does not shake, which is used for the training, in room 7 only, which is the same in both training levels. On the tiles screen of legbop it's the loose floor with the "TR" marking on it. (For 'training'. The next release will instead mark it "NO SHAKE".) I've added the mod 1 to the wiki page.
Any chance a hex edit can make all mirrors jump-through-able?
Any chance a hex edit can make all mirrors jump-through-able?
Re: PoP1 Game Boy (Color) format documentation
Unfortunately GBC PoP hardcodes a lot more things than DOS PoP.
So far I have come up with hacks which change which single mirror can the player jump through.
Rows are numbered from 0 to 2: 0=top, 1=middle, 2=bottom.
Columns are numbered from 0 (leftmost) to 9 (rightmost).
Rooms are numbered from 1 to 24.
Levels are numbered as they are displayed.
The spoilers contain the relevant parts of the disassembly.
Checking for the mirror
At 0x0EA4 write the room number.
At 0x0EA5 write the level number.
At 0x0ECB write (2 bytes, little-endian!) the result of 0xC0A0 + (row + 1) * 11 + (column + 1)
A simpler calculation with the same result: 0xC0AC + row * 11 + column.
At 0x0EEA write (column number + 1) * 2.
At 0x0EF3 write (column number + 1) * 2.
If row is not 0 (the top row):
At 0x0EC1 write: CD 40 3B 00
At 0x3B40 write: FA 12 C1 FE rr C9, where rr is the row. (0=top, 1=middle, 2=bottom)
Spoiler: show
Breaking the mirror
At 0x0F12 write (column number + 2) * 2.
At 0x0F17 write (column number + 1) * 2.
At 0x0F22 write the tile position (row * 10 + column).
At 0x0F23 write the room number - 1.
At 0x0F2A write the tile position - 1.
At 0x0F2B write the room number - 1.
Spoiler: show
Adding the mirror when the exit opens
At 0x095A write the room from which the player enters the room of the mirror.
The mirror appears when the player leaves that room to the left, i.e. enters the mirror room from the right.
At 0x095B write the the level number.
At 0x096C write the tile position.
At 0x096D write the room number - 1.
At 0x0974 write the tile position - 1.
At 0x0975 write the room number - 1.
At 0x0962 write the room number - 1 of the exit door.
At 0x0963 write the tile position of the exit door.
Spoiler: show
Check with unknown purpose
At 0x28A8 write the room number.
At 0x28A9 write the level number.
If row is not 0 (the top row):
At 0x28AF write: CD 40 3B 00
At 0x3B40 write: FA 12 C1 FE rr C9, where rr is the row. (0=top, 1=middle, 2=bottom) (Same as one of the earlier hacks.)
Spoiler: show
Known problems
If you change the row or the column, then the shadow appears just like the prince (or his mirror image), not as an outline.