Advertiser Content

metaloath

MetalOath

Male
Earth
Seen December 14th, 2018
Posted February 17th, 2018
4 posts
1.8 Years
Hello Anthroyd, I would like to thank you for the amazing quality of this series. This is what one might call a proper video tutorial series.
UPDATE: I have Figured this out, see the edit.
Everything between the two dashed lines below should be ignored if you are new to the scene, it is a wall of confusing nonsense.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Spoiler:

I would like to ask you something about the general use of XSE and AdvMap specifically with regards to map scripts (level scripts).
(Small Background: this is my first attempt at rom hacking ever, and thus I have little to no experience with how roms are supposed to behave when edited like that).

To begin, I will walk you through the steps in which to reproduce my problem.
So here goes:
1) Open PGE and load a fresh Pokemon FireRed v1.0 file.
2) Launch AdvMap through PGE and navigate to the Map in which to do the edit. (In this case Prof. Oak's laboratory).
3) Go to the Header Tab, press CTRL+H and look at the Map script offset (which includes the parts to be edited). (I am not sure if this is how it's supposed to be done)
4) At this point I have tried to do two things in order to complete the edit:

4a) Copy the Map script offset, go to PGE and open XSE, and then paste the Map script offset (168F7E) in the Offset box, toggle the Map Script button on, and finally decompile.
Do some edits to the script (in this case I'm editing the text part of the Srings section), Debug to make sure there are no errors, and then Compile.
Then return to AdvMap, save my work using the menu bar button and then test the result with VBA.
This results in some interesting things. The Script will run correctly, but it seems to have damaged some other part of the rom (possibly overwritten some data or parts of another script),
in this case resulting in Oak's individual person script being damaged. (I tried this multiple times, checking both scripts before and after compiling, and Oak's script seems to change right after the Map Script's compilation).
Is this supposed to happen when recompiling one of the original scripts?

4b) Copy the Map script offset, go to PGE and open XSE, do the pasting and decompiling, then edit the script to allocate it's pointers dynamically
(In my mind, this is to create a new copy of the script somewhere that wouldn't intrude or overwrite any original data [I have no idea if that's how things actually work])
by adding the "#dynamic 0x800000" to the beginning of the script and modifying all pointers to begin with @, removing most "0x"s and "0x8"s, except for variables and such, making it effectively a completely new script.
Then compile it and copy it's offset to the Map script offset field and hit "save changes and reload map" in AdvMap (which automatically updates the Script Offset field in the non-advanced Header view),
then save my work and test the hack. In this case, no other scripts seem to be affected, however, the newly compiled script runs smoothly all the way until it gets to the "END" line.
At this point the game will freeze, while the music still runs normally, my inputs stop working completely, and everything seems to be static.
(I have tried inserting msgbox commands in between the last lines of the main function to see where exactly the game is freezing, and It seems to be freezing right after displaying the msgbox before the END command,
leaving me unable to even close the msgbox. Note: this happens when using No$GBA. When tested in VBA, I am stuck at the last message box before the end command, and after completing the normal text,
it displays messages of giving the player a master ball then an ultra ball, then a great ball (all out of nowhere), then continues to spit out complete gibberish)

Here are both scripts I have attempted, and the original:

Original Script
Spoiler:

'---------------
#org 0x168F7E
#raw 0x3
#raw pointer 0x8168F8E
#raw 0x4
#raw pointer 0x8168FE1
#raw 0x2
#raw pointer 0x8168FF0
#raw 0x0

'---------------
#org 0x168FE1
#raw word 0x4055
#raw word 0x1
#raw pointer 0x8168FEB
#raw word 0x0

'---------------
#org 0x168FF0
#raw word 0x4055
#raw word 0x1
#raw pointer 0x816923E
#raw word 0x4055

'---------------
#org 0x168F8E
setflag 0x2CF
compare 0x4055 0x1
if 0x1 call 0x8168FC6
compare 0x4055 0x7
if 0x1 call 0x8168FD5
compare 0x4055 0x8
if 0x1 call 0x8168FC0
checkflag 0x247
if 0x1 call 0x8168FBC
end

'---------------
#org 0x168FEB
spriteface 0xFF 0x2
end

'---------------
#org 0x16923E
lockall
textcolor 0x0
applymovement 0x4 0x81692B0
waitmovement 0x0
hidesprite 0x4
movesprite2 0x4 0x6 0x3
spritebehave 0x4 0x8
clearflag 0x2B
applymovement MOVE_PLAYER 0x81692B7
waitmovement 0x0
applymovement 0x8 0x81A75E9
waitmovement 0x0
clearflag 0x4001
playsong2 0x0
fadedefault
msgbox 0x818DC94 MSG_KEEPOPEN '"[rival]: Gramps!\nI'm fed up with ..."
closeonkeypress
pause 0x3C
msgbox 0x818DFBC MSG_KEEPOPEN '"OAK: [rival]?\nLet me think[.]\pOh..."
closeonkeypress
pause 0x1E
applymovement 0x8 0x81692C0
waitmovement 0x0
msgbox 0x818DCB9 MSG_KEEPOPEN '"[rival]: Hey! Gramps! No fair!\nWh..."
msgbox 0x818E0EA MSG_KEEPOPEN '"OAK: Be patient, [rival].\nYou can..."
setvar 0x4055 0x2
releaseall
end

'---------------
#org 0x168FC6
movesprite2 0x4 0x6 0xB
spritebehave 0x4 0x7
playsong2 0x12E
return

'---------------
#org 0x168FD5
movesprite2 0x4 0x6 0xB
spritebehave 0x4 0x7
return

'---------------
#org 0x168FC0
setvar 0x4055 0x9
return

'---------------
#org 0x168FBC
setflag 0x24F
return


'---------
' Strings
'---------
#org 0x18DC94
= [rival]: Gramps!\nI'm fed up with waiting!

#org 0x18DFBC
= OAK: [rival]?\nLet me think[.]\pOh, that's right, I told you to\ncome! Just wait!\pHere, [player].\pThere are three POKéMON here.\pHaha!\pThe POKéMON are held inside\nthese POKé BALLS.\pWhen I was young, I was a serious\nPOKéMON TRAINER.\pBut now, in my old age, I have\nonly these three left.\pYou can have one.\nGo on, choose!

#org 0x18DCB9
= [rival]: Hey! Gramps! No fair!\nWhat about me?

#org 0x18E0EA
= OAK: Be patient, [rival].\nYou can have one, too!


'-----------
' Movements
'-----------
#org 0x1692B0
#raw 0x11 'Step Up (Normal)
#raw 0x11 'Step Up (Normal)
#raw 0x11 'Step Up (Normal)
#raw 0x11 'Step Up (Normal)
#raw 0x11 'Step Up (Normal)
#raw 0x11 'Step Up (Normal)
#raw 0xFE 'End of Movements

#org 0x1692B7
#raw 0x11 'Step Up (Normal)
#raw 0x11 'Step Up (Normal)
#raw 0x11 'Step Up (Normal)
#raw 0x11 'Step Up (Normal)
#raw 0x11 'Step Up (Normal)
#raw 0x11 'Step Up (Normal)
#raw 0x11 'Step Up (Normal)
#raw 0x11 'Step Up (Normal)
#raw 0xFE 'End of Movements

#org 0x1A75E9
#raw 0x2E 'Face Up (Delayed)
#raw 0xFE 'End of Movements

#org 0x1692C0
#raw 0x26 'Step on the Spot Up (Faster)
#raw 0x26 'Step on the Spot Up (Faster)
#raw 0xFE 'End of Movements


4a Script (Only speech text under Strings edited)
Spoiler:

'---------------
#org 0x168F7E
#raw 0x3
#raw pointer 0x8168F8E
#raw 0x4
#raw pointer 0x8168FE1
#raw 0x2
#raw pointer 0x8168FF0
#raw 0x0

'---------------
#org 0x168FE1
#raw word 0x4055
#raw word 0x1
#raw pointer 0x8168FEB
#raw word 0x0

'---------------
#org 0x168FF0
#raw word 0x4055
#raw word 0x1
#raw pointer 0x816923E
#raw word 0x4055

'---------------
#org 0x168F8E
setflag 0x2CF
compare 0x4055 0x1
if 0x1 call 0x8168FC6
compare 0x4055 0x7
if 0x1 call 0x8168FD5
compare 0x4055 0x8
if 0x1 call 0x8168FC0
checkflag 0x247
if 0x1 call 0x8168FBC
end

'---------------
#org 0x168FEB
spriteface 0xFF 0x2
end

'---------------
#org 0x16923E
lockall
textcolor 0x0
applymovement 0x4 0x81692B0
waitmovement 0x0
hidesprite 0x4
movesprite2 0x4 0x6 0x3
spritebehave 0x4 0x8
clearflag 0x2B
applymovement MOVE_PLAYER 0x81692B7
waitmovement 0x0
applymovement 0x8 0x81A75E9
waitmovement 0x0
clearflag 0x4001
playsong2 0x0
fadedefault
msgbox 0x818DC94 MSG_KEEPOPEN '"[rival]: Gramps!\nI'm fed up with ..."
closeonkeypress
pause 0x3C
msgbox 0x818DFBC MSG_KEEPOPEN '"OAK: [rival]?\nLet me think[.]\pOh..."
closeonkeypress
pause 0x1E
applymovement 0x8 0x81692C0
waitmovement 0x0
msgbox 0x818DCB9 MSG_KEEPOPEN '"[rival]: Hey! Gramps! No fair!\nWh..."
msgbox 0x818E0EA MSG_KEEPOPEN '"OAK: Be patient, [rival].\nYou can..."
setvar 0x4055 0x2
releaseall
end

'---------------
#org 0x168FC6
movesprite2 0x4 0x6 0xB
spritebehave 0x4 0x7
playsong2 0x12E
return

'---------------
#org 0x168FD5
movesprite2 0x4 0x6 0xB
spritebehave 0x4 0x7
return

'---------------
#org 0x168FC0
setvar 0x4055 0x9
return

'---------------
#org 0x168FBC
setflag 0x24F
return


'---------
' Strings
'---------
#org 0x18DC94
= [rival]: Gramps!\nI'm fed up with waiting!

#org 0x18DFBC
= OAK: Hmm? [rival]?\nWhy are you here already?\lI said for you to come back\llater...\lAh, whatever! Just wait there.\pLook, [player]! Do you see that ball on\nthe table?\lIt's called a POKé BALL. It holds\la POKéMON inside.\lYou may have it! Go on, take it!

#org 0x18DCB9
= [rival]: Hey! Gramps!\nWhat about me?

#org 0x18E0EA
= OAK: Be patient, [rival],\nI'll give you one later.


'-----------
' Movements
'-----------
#org 0x1692B0
#raw 0x11 'Step Up (Normal)
#raw 0x11 'Step Up (Normal)
#raw 0x11 'Step Up (Normal)
#raw 0x11 'Step Up (Normal)
#raw 0x11 'Step Up (Normal)
#raw 0x11 'Step Up (Normal)
#raw 0xFE 'End of Movements

#org 0x1692B7
#raw 0x11 'Step Up (Normal)
#raw 0x11 'Step Up (Normal)
#raw 0x11 'Step Up (Normal)
#raw 0x11 'Step Up (Normal)
#raw 0x11 'Step Up (Normal)
#raw 0x11 'Step Up (Normal)
#raw 0x11 'Step Up (Normal)
#raw 0x11 'Step Up (Normal)
#raw 0xFE 'End of Movements

#org 0x1A75E9
#raw 0x2E 'Face Up (Delayed)
#raw 0xFE 'End of Movements

#org 0x1692C0
#raw 0x26 'Step on the Spot Up (Faster)
#raw 0x26 'Step on the Spot Up (Faster)
#raw 0xFE 'End of Movements


4b New Script
Spoiler:

#dynamic 0x800000
'---------------
#org @168F7E
#raw 0x3
#raw pointer @168F8E
#raw 0x4
#raw pointer @168FE1
#raw 0x2
#raw pointer @168FF0
#raw 0x0

'---------------
#org @168FE1
#raw word 0x4055
#raw word 0x1
#raw pointer @168FEB
#raw word 0x0

'---------------
#org @168FF0
#raw word 0x4055
#raw word 0x1
#raw pointer @16923E
#raw word 0x4055

'---------------
#org @168F8E
setflag 0x2CF
compare 0x4055 0x1
if 0x1 call @168FC6
compare 0x4055 0x7
if 0x1 call @168FD5
compare 0x4055 0x8
if 0x1 call @168FC0
checkflag 0x247
if 0x1 call @168FBC
end

'---------------
#org @168FEB
spriteface 0xFF 0x2
end

'---------------
#org @16923E
lockall
textcolor 0x0
applymovement 0x4 @1692B0
waitmovement 0x0
hidesprite 0x4
movesprite2 0x4 0x6 0x3
spritebehave 0x4 0x8
clearflag 0x2B
applymovement MOVE_PLAYER @1692B7
waitmovement 0x0
applymovement 0x8 @1A75E9
waitmovement 0x0
clearflag 0x4001
playsong2 0x0
fadedefault
msgbox @18DC94 MSG_KEEPOPEN '"[rival]: Gramps!\nI'm fed up with ..."
closeonkeypress
pause 0x3C
msgbox @18DFBC MSG_KEEPOPEN '"OAK: Hmm? [rival]?\nWhy are you he..."
closeonkeypress
pause 0x1E
applymovement 0x8 @1692C0
waitmovement 0x0
msgbox @18DCB9 MSG_KEEPOPEN '"[rival]: Hey! Gramps!\nWhat about ..."
msgbox @18E0EA MSG_KEEPOPEN '"OAK: Be patient, [rival],\nI'll gi..."
setvar 0x4055 0x2
releaseall
end

'---------------
#org @168FC6
movesprite2 0x4 0x6 0xB
spritebehave 0x4 0x7
playsong2 0x12E
return

'---------------
#org @168FD5
movesprite2 0x4 0x6 0xB
spritebehave 0x4 0x7
return

'---------------
#org @168FC0
setvar 0x4055 0x9
return

'---------------
#org @168FBC
setflag 0x24F
return


'---------
' Strings
'---------
#org @18DC94
= [rival]: Gramps!\nI'm fed up with waiting!

#org @18DFBC
= OAK: Hmm? [rival]?\nWhy are you here already?\lI said for you to come back\llater...\lAh, whatever! Just wait there.\pLook, [player]! Do you see that ball on\nthe table?\lIt's called a POKé BALL. It holds\la POKéMON inside.\lYou may have it! Go on, take it!

#org @18DCB9
= [rival]: Hey! Gramps!\nWhat about me?

#org @18E0EA
= OAK: Be patient, [rival],\nI'll give you one later.


'-----------
' Movements
'-----------
#org @1692B0
#raw 0x11 'Step Up (Normal)
#raw 0x11 'Step Up (Normal)
#raw 0x11 'Step Up (Normal)
#raw 0x11 'Step Up (Normal)
#raw 0x11 'Step Up (Normal)
#raw 0x11 'Step Up (Normal)
#raw 0xFE 'End of Movements

#org @1692B7
#raw 0x11 'Step Up (Normal)
#raw 0x11 'Step Up (Normal)
#raw 0x11 'Step Up (Normal)
#raw 0x11 'Step Up (Normal)
#raw 0x11 'Step Up (Normal)
#raw 0x11 'Step Up (Normal)
#raw 0x11 'Step Up (Normal)
#raw 0x11 'Step Up (Normal)
#raw 0xFE 'End of Movements

#org @1A75E9
#raw 0x2E 'Face Up (Delayed)
#raw 0xFE 'End of Movements

#org @1692C0
#raw 0x26 'Step on the Spot Up (Faster)
#raw 0x26 'Step on the Spot Up (Faster)
#raw 0xFE 'End of Movements


So what exactly am I doing wrong?

It would be great if you can elaborate more specifically on the header tab, the difference between the script offsets specified in the normal and advanced views, and most importantly the correct way to modify or replace them.

Thank you for reading this if you did, and good luck with your studies!
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Edit:
So as it turns out, I was attempting to modify a level script without understanding the scripts themselves or the User Interface under the Header tab in AdvMap.
I was trying to modify the "Map Script Offset" script in the advanced header view (CTRL+H when in the header tab), when I should have been working with individual level scripts in the normal header view.
For some reason, it was completely unclear to me how to navigate an individual Map's pre-existing scrips even though it turned out to be very simple.

Anyways, to see the level scripts of any given map, look under the Header Tab, in the Map Script box, Under the "Script No:" text. There is a white box with 0 in it and two tiny arrow buttons pointing up and down.
Using these buttons you can see all the map scripts attached to this map starting at script number 0, and going up. In my case, I've opened "PALLET TOWN (4.3)" which is Oak's lab.
Script No:0 is a Type 03 level script, and clicking on the up arrow button twice reveals two additional map scripts of types 04 and 02, script numbers 1 and 2, respectively.
The part which I wanted to edit was the text under the "Strings" section of the type 02 level script. You can see this part by copying the offset under "Script offset 2:", in my case (16923E),
and pasting it in XSE in the "Offset" box and clicking the decompile button (the one to the right of this box). Taking a look under the "Strings" section,
you can see the text that Oak says when you first enter the lab in the intro event where he gives you your first Pokemon.

In order to perform an edit, you must do some heavy editing to the original script before attempting anything new, in order to avoid damaging any original data.
Here is how i did it:
Spoiler:
#dynamic 0x800000
'---------------
#org @16923E
lockall
textcolor 0x0
applymovement 0x4 @1692B0
waitmovement 0x0
hidesprite 0x4
movesprite2 0x4 0x6 0x3
spritebehave 0x4 0x8
clearflag 0x2B
applymovement MOVE_PLAYER @1692B7
waitmovement 0x0
applymovement 0x8 @1A75E9
waitmovement 0x0
clearflag 0x4001
playsong2 0x0
fadedefault
msgbox @18DC94 MSG_KEEPOPEN '"[rival]: Gramps!\nI'm fed up with ..."
closeonkeypress
pause 0x3C
msgbox @18DFBC MSG_KEEPOPEN '"OAK: [rival]?\nLet me think[.]\pOh..."
closeonkeypress
pause 0x1E
applymovement 0x8 @1692C0
waitmovement 0x0
msgbox @18DCB9 MSG_KEEPOPEN '"[rival]: Hey! Gramps! No fair!\nWh..."
msgbox @18E0EA MSG_KEEPOPEN '"OAK: Be patient, [rival].\nYou can..."
setvar 0x4055 0x2
releaseall
end


'---------
' Strings
'---------
#org @18DC94
= [rival]: Gramps!\nI'm fed up with waiting!

#org @18DFBC
= OAK: Hmm? [rival]?\nWhy are you here already?\lI said for you to come back\llater...\lAh, whatever! Just wait there.\pLook, [player]! Do you see that ball on\nthe table?\lIt's called a POKé BALL. It holds\la POKéMON inside.\lYou may have it! Go on, take it!

#org @18DCB9
= [rival]: Hey! Gramps!\nWhat about me?

#org @18E0EA
= OAK: Be patient, [rival],\nI'll give you one later.


'-----------
' Movements
'-----------
#org @1692B0
#raw 0x11 'Step Up (Normal)
#raw 0x11 'Step Up (Normal)
#raw 0x11 'Step Up (Normal)
#raw 0x11 'Step Up (Normal)
#raw 0x11 'Step Up (Normal)
#raw 0x11 'Step Up (Normal)
#raw 0xFE 'End of Movements

#org @1692B7
#raw 0x11 'Step Up (Normal)
#raw 0x11 'Step Up (Normal)
#raw 0x11 'Step Up (Normal)
#raw 0x11 'Step Up (Normal)
#raw 0x11 'Step Up (Normal)
#raw 0x11 'Step Up (Normal)
#raw 0x11 'Step Up (Normal)
#raw 0x11 'Step Up (Normal)
#raw 0xFE 'End of Movements

#org @1A75E9
#raw 0x2E 'Face Up (Delayed)
#raw 0xFE 'End of Movements

#org @1692C0
#raw 0x26 'Step on the Spot Up (Faster)
#raw 0x26 'Step on the Spot Up (Faster)
#raw 0xFE 'End of Movements

Original Script:
Spoiler:

'---------------
#org 0x16923E
lockall
textcolor 0x0
applymovement 0x4 0x81692B0
waitmovement 0x0
hidesprite 0x4
movesprite2 0x4 0x6 0x3
spritebehave 0x4 0x8
clearflag 0x2B
applymovement MOVE_PLAYER 0x81692B7
waitmovement 0x0
applymovement 0x8 0x81A75E9
waitmovement 0x0
clearflag 0x4001
playsong2 0x0
fadedefault
msgbox 0x818DC94 MSG_KEEPOPEN '"[rival]: Gramps!\nI'm fed up with ..."
closeonkeypress
pause 0x3C
msgbox 0x818DFBC MSG_KEEPOPEN '"OAK: [rival]?\nLet me think[.]\pOh..."
closeonkeypress
pause 0x1E
applymovement 0x8 0x81692C0
waitmovement 0x0
msgbox 0x818DCB9 MSG_KEEPOPEN '"[rival]: Hey! Gramps! No fair!\nWh..."
msgbox 0x818E0EA MSG_KEEPOPEN '"OAK: Be patient, [rival].\nYou can..."
setvar 0x4055 0x2
releaseall
end


'---------
' Strings
'---------
#org 0x18DC94
= [rival]: Gramps!\nI'm fed up with waiting!

#org 0x18DFBC
= OAK: [rival]?\nLet me think[.]\pOh, that's right, I told you to\ncome! Just wait!\pHere, [player].\pThere are three POKéMON here.\pHaha!\pThe POKéMON are held inside\nthese POKé BALLS.\pWhen I was young, I was a serious\nPOKéMON TRAINER.\pBut now, in my old age, I have\nonly these three left.\pYou can have one.\nGo on, choose!

#org 0x18DCB9
= [rival]: Hey! Gramps! No fair!\nWhat about me?

#org 0x18E0EA
= OAK: Be patient, [rival].\nYou can have one, too!


'-----------
' Movements
'-----------
#org 0x1692B0
#raw 0x11 'Step Up (Normal)
#raw 0x11 'Step Up (Normal)
#raw 0x11 'Step Up (Normal)
#raw 0x11 'Step Up (Normal)
#raw 0x11 'Step Up (Normal)
#raw 0x11 'Step Up (Normal)
#raw 0xFE 'End of Movements

#org 0x1692B7
#raw 0x11 'Step Up (Normal)
#raw 0x11 'Step Up (Normal)
#raw 0x11 'Step Up (Normal)
#raw 0x11 'Step Up (Normal)
#raw 0x11 'Step Up (Normal)
#raw 0x11 'Step Up (Normal)
#raw 0x11 'Step Up (Normal)
#raw 0x11 'Step Up (Normal)
#raw 0xFE 'End of Movements

#org 0x1A75E9
#raw 0x2E 'Face Up (Delayed)
#raw 0xFE 'End of Movements

#org 0x1692C0
#raw 0x26 'Step on the Spot Up (Faster)
#raw 0x26 'Step on the Spot Up (Faster)
#raw 0xFE 'End of Movements

As you can see, I replaced all "#org 0x" with "#org @", and parts where functions are called like "applymovement MOVE_PLAYER 0x8" with "applymovement MOVE_PLAYER @".
Just be careful not to replace things like variables and such. In short, If you can't read and understand the script, you shouldn't be doing this yet.
So I basically changed all pointers into dynamic pointers and added "#dynamic 0x800000" to the beginning of the script such that it will compile as a completely new script.
This is done so that when you compile the script, It wouldn't overwrite the original script, which can result in some weird things happening in the game, potentially breaking it.
Now you may change whatever you want to change,
hit the compile button, and copy your new script's offset. Going back to AdvMap, go back to your level script, again, in my case the type 02 level script in Oak's lab,
and you replace the script's old offset with the new one (under "Script offset 2:" for type 02 level scripts) and hit save map scripts, and then save the changes to the rom (CTRL + S). And that should be it.
If I have made any mistakes explaining this, please do inform me.

Note: the rest of this event's scripts are normal Person events and scripts found under the events section of AdvMap.

Anthroyd

Age 21
Male
United States
Seen 1 Day Ago
Posted 2 Weeks Ago
188 posts
3.4 Years
This series of videos has been a great help and I thank you for putting in the effort to make it. 10/10
Thanks so much. :)
Pokémon Generation III ROM Hacking
Video Series

Pokémon Dreary

Discord
Seen August 30th, 2018
Posted July 10th, 2018
2 posts
1.3 Years
Replacing Tileset with Modern Tileset is too hard and this guide hasn't helped me at all in making a new hack rom . I would like to shot a positive comment, but I couldn't make an hack rom with this . It's just too hard. Like I can't put new tileset, can't modify the storyline etc. So annoying really. Also I already stucked in "assign double script to the NPC" , what? you can't , there's only 1 offset for NPC and it was not clear how to assign one more script to the NPC. Also when I make a new map, like new Pallet town I can see some pieces of buildings of other routes.. so many problems that made me bothered in making a new hack rom (was super hyped before realized it's so damn hard)

Anthroyd

Age 21
Male
United States
Seen 1 Day Ago
Posted 2 Weeks Ago
188 posts
3.4 Years
I'm updating this thread to alert that an update video has been completed and released. Thank you all for your support throughout the past two years. I really appreciate it.
Pokémon Generation III ROM Hacking
Video Series

Pokémon Dreary

Discord

TubbieRanger

UNprofessional ROMhacker

Seen 6 Days Ago
Posted May 23rd, 2019
5 posts
2.2 Years
I’m having the strangest problem, for some reason, when testing my game, SOME doors just don’t work, even if the building and door weren’t edited at all. Any idea what’s happening? I’ve been using your tutorials.

EDIT: I fixed the problem, something I did changed the behavior bytes of some door tiles, if anyone knows why this happened, please tell me. I think it was either due to expanding tilesets or because I added a move to gastly's learnset.

Anthroyd

Age 21
Male
United States
Seen 1 Day Ago
Posted 2 Weeks Ago
188 posts
3.4 Years
This has been a major help for my ROM hacking. I will continue to watch more videos. Thank you for doing this
You're welcome. Glad they're helping.
Pokémon Generation III ROM Hacking
Video Series

Pokémon Dreary

Discord
Seen August 24th, 2019
Posted August 22nd, 2019
3 posts
54 Days
I would like to point out something regarding map editing! I haven't seen any content in your tutorials, but I hope other people can help me too! I'm trying to change the hero's avatar/Icon/protagonist head on the town map. In this case it's Fire Red. Using unLZ I was able to find the male and female offsets at number 188 and 189. I have replaced some of the offsets with my own avatars, but I can never get the right colors. It's always messed up. Could anyone out there help me out?

Tks
Seen 1 Hour Ago
Posted 2 Days Ago
299 posts
11.4 Years
I would like to point out something regarding map editing! I haven't seen any content in your tutorials, but I hope other people can help me too! I'm trying to change the hero's avatar/Icon/protagonist head on the town map. In this case it's Fire Red. Using unLZ I was able to find the male and female offsets at number 188 and 189. I have replaced some of the offsets with my own avatars, but I can never get the right colors. It's always messed up. Could anyone out there help me out?

Tks
Afaik, Anthroyd doesn't talk about town map editing in any of his tutorials. What you want is just a simple palette change, check his tutorial on palette editing on how to edit a palette.
Advertiser Content