PDA

View Full Version : Development: Transparent Textboxes


PokemonMasters
November 9th, 2012, 12:41 AM
Hey Guys. Want to do Tranparent Textboxes but they look so hard to do? You can do it with the WBTO (Write by Offset) command in XSE. Here is a simple script on how to make Transparent Textboxes. (For Ruby |AXVE| Only)

Here is what you need to add to the script

writebytetooffset 0x3F 0x4000048
writebytetooffset 0x1F 0x4000049
writebytetooffset 0x41 0x4000050
writebytetooffset 0x3F 0x4000051
writebytetooffset 0xF 0x4000052
writebytetooffset 0xA 0x4000053
writebytetooffset 0xFF 0x202F0AA
writebytetooffset 0xFF 0x202F0AB
writebytetooffset 0x0 0x202F0B8
writebytetooffset 0x0 0x202F0B9
writebytetooffset 0x0 0x202F0AC
writebytetooffset 0x0 0x202F0AD
writebytetooffset 0x0 0x202F0BE
writebytetooffset 0x0 0x202F0BF
writebytetooffset 0x0 0x202F0C0
writebytetooffset 0x0 0x202F0C1
writebytetooffset 0x0 0x202F0C2
writebytetooffset 0x0 0x202F0C3
writebytetooffset 0x0 0x202F0C4
writebytetooffset 0x0 0x202F0C5
writebytetooffset 0x0 0x202F0C6
writebytetooffset 0x0 0x202F0C7
writebytetooffset 0x0 0x202F0C8
writebytetooffset 0x0 0x202F0C9


Test:
http://i1055.photobucket.com/albums/s515/pokemonmasters1/PokemonRuby.png

Notes:
- You must do this in Every Script you want Transparent.
- There are some bugs in doing this. Using this script will activate them.

Thanks for reading :D

Credit the following people if used:
- ~Andrea

kebbles
November 17th, 2012, 07:42 AM
Hey Guys. Want to do Tranparent Textboxes but they look so hard to do? You can do it with the WBTO (Write by Offset) command in XSE. Here is a simple script on how to make Transparent Textboxes. (For Ruby |AXVE| Only)

Here is what you need to add to the script

writebytetooffset 0x3F 0x4000048
writebytetooffset 0x1F 0x4000049
writebytetooffset 0x41 0x4000050
writebytetooffset 0x3F 0x4000051
writebytetooffset 0xF 0x4000052
writebytetooffset 0xA 0x4000053
writebytetooffset 0xFF 0x202F0AA
writebytetooffset 0xFF 0x202F0AB
writebytetooffset 0x0 0x202F0B8
writebytetooffset 0x0 0x202F0B9
writebytetooffset 0x0 0x202F0AC
writebytetooffset 0x0 0x202F0AD
writebytetooffset 0x0 0x202F0BE
writebytetooffset 0x0 0x202F0BF
writebytetooffset 0x0 0x202F0C0
writebytetooffset 0x0 0x202F0C1
writebytetooffset 0x0 0x202F0C2
writebytetooffset 0x0 0x202F0C3
writebytetooffset 0x0 0x202F0C4
writebytetooffset 0x0 0x202F0C5
writebytetooffset 0x0 0x202F0C6
writebytetooffset 0x0 0x202F0C7
writebytetooffset 0x0 0x202F0C8
writebytetooffset 0x0 0x202F0C9


Test:
http://i1055.photobucket.com/albums/s515/pokemonmasters1/PokemonRuby.png

Notes:
- You must do this in Every Script you want Transparent.
- There are some bugs in doing this. Using this script will activate them.

Thanks for reading :D

Credit the following people if used:
- ~Andrea

Wow this is incrediable, i cant believe i only just found this!
What are the bugs before I use this?

Hacker Bisharp
November 17th, 2012, 09:18 AM
Oh god.. This is very awesome! Keep it up^^

itman
November 17th, 2012, 12:32 PM
This is amazing, but it takes up so much room to use in EVERY script.

So what everyone should do is make that a separate script, and then at the beginning of every script, call it, so this way you can save lots of room.

Example:

Script to be called:

#org @begin
writebytetooffset 0x3F 0x4000048
writebytetooffset 0x1F 0x4000049
writebytetooffset 0x41 0x4000050
writebytetooffset 0x3F 0x4000051
writebytetooffset 0xF 0x4000052
writebytetooffset 0xA 0x4000053
writebytetooffset 0xFF 0x202F0AA
writebytetooffset 0xFF 0x202F0AB
writebytetooffset 0x0 0x202F0B8
writebytetooffset 0x0 0x202F0B9
writebytetooffset 0x0 0x202F0AC
writebytetooffset 0x0 0x202F0AD
writebytetooffset 0x0 0x202F0BE
writebytetooffset 0x0 0x202F0BF
writebytetooffset 0x0 0x202F0C0
writebytetooffset 0x0 0x202F0C1
writebytetooffset 0x0 0x202F0C2
writebytetooffset 0x0 0x202F0C3
writebytetooffset 0x0 0x202F0C4
writebytetooffset 0x0 0x202F0C5
writebytetooffset 0x0 0x202F0C6
writebytetooffset 0x0 0x202F0C7
writebytetooffset 0x0 0x202F0C8
writebytetooffset 0x0 0x202F0C9
return

Then if a script wants to use transparent text boxes, it would just call that one, and then it will automatically return to the script afterward due to the return command.


#org @begin
call 0x(whateveroffsetit'sat!)
lock
faceplayer
msgbox @hi 0x6
release
end

#org @hi
= Hi.


Space saving ftw! I know this isn't a complex technique in anyway; I was just over explaning for newer hackers out there. :)

shinyabsol1
November 17th, 2012, 02:20 PM
Interesting. I thought you needed ASM to do this. Great work figuring this out!

Since its just a bunch of WBTO, couldn't this work for FR too? We just need to find the equivalents in FR and change those. What exactly do allthose WBTOs do?

PokemonMasters
November 17th, 2012, 02:23 PM
This is amazing, but it takes up so much room to use in EVERY script.

So what everyone should do is make that a separate script, and then at the beginning of every script, call it, so this way you can save lots of room.

Example:

Script to be called:

#org @begin
writebytetooffset 0x3F 0x4000048
writebytetooffset 0x1F 0x4000049
writebytetooffset 0x41 0x4000050
writebytetooffset 0x3F 0x4000051
writebytetooffset 0xF 0x4000052
writebytetooffset 0xA 0x4000053
writebytetooffset 0xFF 0x202F0AA
writebytetooffset 0xFF 0x202F0AB
writebytetooffset 0x0 0x202F0B8
writebytetooffset 0x0 0x202F0B9
writebytetooffset 0x0 0x202F0AC
writebytetooffset 0x0 0x202F0AD
writebytetooffset 0x0 0x202F0BE
writebytetooffset 0x0 0x202F0BF
writebytetooffset 0x0 0x202F0C0
writebytetooffset 0x0 0x202F0C1
writebytetooffset 0x0 0x202F0C2
writebytetooffset 0x0 0x202F0C3
writebytetooffset 0x0 0x202F0C4
writebytetooffset 0x0 0x202F0C5
writebytetooffset 0x0 0x202F0C6
writebytetooffset 0x0 0x202F0C7
writebytetooffset 0x0 0x202F0C8
writebytetooffset 0x0 0x202F0C9
return

Then if a script wants to use transparent text boxes, it would just call that one, and then it will automatically return to the script afterward due to the return command.


#org @begin
call 0x(whateveroffsetit'sat!)
lock
faceplayer
msgbox @hi 0x6
release
end

#org @hi
= Hi.


Space saving ftw! I know this isn't a complex technique in anyway; I was just over explaning for newer hackers out there. :)
lol, I'll update the thread later on to add the "Space Saving" xD

Pinkish Purple
November 19th, 2012, 02:12 AM
Cool, PokemonMasters! :D you put it up. Is there a more in-depth tutorial for newbs? :P

Gamer2020
November 19th, 2012, 09:42 AM
I'm sure you can make an asm function to do the same thing. I'm pretty sure all you're doing is setting registers and stuff to use the hardware windowing.

http://www.coranac.com/tonc/text/gfx.htm#sec-win

Shiny Quagsire
November 19th, 2012, 02:51 PM
It wouldn't be that hard to write an ASM routine to set those bytes, and attach it to a special, or even hack in a call to that function every time a textbox is loaded.

Darkrai Lv.1000
November 19th, 2012, 10:01 PM
How have I not seen this yet?
This is awesome, I'll definitely try this out, and maybe have it in my project.

Looks good for things like signs and "stage directions" and stuff like that.

PokemonMasters
November 19th, 2012, 10:56 PM
Wow this is incrediable, i cant believe i only just found this!
What are the bugs before I use this?
The bugs are:
-if you open the menu the textxbox of menu disapeared
-you don't change the color of the test because the wbto with you create semi-trasparent textbox makes the textbox and the text semi-trasparnet because are you found in BG0 (the screen are divided into Bg0,Bg1,Bg2,Bg3,Bg4,Bg5 and Bg6) and makes textbox and text semitrasparnet...
-The effect of textbox finish when you doing warp
that's why it is best to use asm..
Cool, PokemonMasters! :D you put it up. Is there a more in-depth tutorial for newbs? :P
its already. You just put that in the script. How more in-depth do you want? xD
I'm sure you can make an asm function to do the same thing. I'm pretty sure all you're doing is setting registers and stuff to use the hardware windowing.

http://www.coranac.com/tonc/text/gfx.htm#sec-win

It wouldn't be that hard to write an ASM routine to set those bytes, and attach it to a special, or even hack in a call to that function every time a textbox is loaded.
It for newbies or people who barely or don't know anything about ASM :D

pikakitten
November 19th, 2012, 11:02 PM
So what are the bugs involved in doing this? Are they serious? Are they permanent as in use it once and the bug is forever there or... you know.
Thanks!

~Sincerely
PikakittenX, devout member of the Pokecommunity

tajaros
November 20th, 2012, 02:30 AM
It for newbies or people who barely or don't know anything about ASM :D

So what?

They are trying to make routines for it so that it will work with FireRed as well and to fix those bugs that you mentioned.

~Andrea
November 22nd, 2012, 07:34 AM
With this you will have the semi-trasparent textbox but there will also annoying bugs that is why using the asm which he said shiny Guaiser is always active ...
The bug in question are:
-If you open the menu, there will be the old textbox semi-transparent white color ...
-With these wbto you can not become colored text
-With these wbto you can not become a white-transparent textbox
-the names of the cities and routes will be like the old textbox but the color white as the transparent menu
-the effect ends when you use a warp
So I say to you that if you do not know asm put the tetxbox normal ...

Team Fail
November 22nd, 2012, 09:06 AM
-the effect ends when you use a warp

If this is the case, why not just call it again after you warp?

Pinkish Purple
November 22nd, 2012, 10:00 PM
I think it is too troublesome, doing ASM is better of course but there doesn't seem to be any tutorial about ASM around here...

tajaros
November 23rd, 2012, 12:08 AM
I think it is too troublesome, doing ASM is better of course but there doesn't seem to be any tutorial about ASM around here...

Huh?

I think there are about 4 ASM TUT's here in PC search in the tutorial section look in the pages... Hackmew, FullMetal, Shiny Quagsire, and knizz made ASM tut's. :P

Gamer2020
November 24th, 2012, 11:17 AM
Why don't you set the values back to what they were after you use the text box? That way the start menu won't be buggy.

Shiny Quagsire
December 7th, 2012, 04:04 PM
It for newbies or people who barely or don't know anything about ASM :D
Patchers and programs that patch could be a viable solution to apply an ASM routine and link it to a special or force transparency as the default.

NintendoBoyDX
December 8th, 2012, 03:41 PM
Yo PokemonMansters, I was wondering... Could you explain how you figured out how to do this hack, and why it works?

tajaros
December 8th, 2012, 06:56 PM
Yo PokemonMansters, I was wondering... Could you explain how you figured out how to do this hack, and why it works?

He didn't figured this out, ~Andrea did Pokemonmasters just shared this info with and practically doesn't know how this works... :)

PokemonMasters
December 8th, 2012, 10:17 PM
Thanks Val. .-.
So , did anybody find a way to port this over to BPRE?

tajaros
December 8th, 2012, 11:13 PM
Thanks Val. .-.
So , did anybody find a way to port this over to BPRE?

~Andrea said that he knows it but forgot how to do it...

And Lucas said that coolcolstyles has a code for he ransparent textbox in BPRE but hasn't release the code yet.

xWhyNotx
December 10th, 2012, 03:53 AM
This is amazing I will totally use this in my hack! ^-^ thanks for posting!

阴魂君
December 10th, 2012, 05:52 AM
~Andrea said that he knows it but forgot how to do it...

And Lucas said that coolcolstyles has a code for he ransparent textbox in BPRE but hasn't release the code yet.

how about Emerald?
I think those offset are different,too..╯﹏╰

NarutoActor
December 10th, 2012, 11:05 AM
They are, I tested it in emerald. The first 6 if I remember are the same, it is the rest that differ.
writebytetooffset 0x3F 0x4000048 1F
writebytetooffset 0x1F 0x4000049 1F

writebytetooffset 0x41 0x4000050 40 '00101E40
writebytetooffset 0x3F 0x4000051 1E
writebytetooffset 0xF 0x4000052 10
writebytetooffset 0xA 0x4000053 00

writebytetooffset 0xFF 0x202F0AA 29'Emerald dif
writebytetooffset 0xFF 0x202F0AB 25

writebytetooffset 0x0 0x202F0B8 5A '
writebytetooffset 0x0 0x202F0B9 67 '

writebytetooffset 0x0 0x202F0AC 1F '
writebytetooffset 0x0 0x202F0AD 00

writebytetooffset 0x0 0x202F0BE 9C
writebytetooffset 0x0 0x202F0BF 77
writebytetooffset 0x0 0x202F0C0 ff
writebytetooffset 0x0 0x202F0C1 7E
writebytetooffset 0x0 0x202F0C2 33
writebytetooffset 0x0 0x202F0C3 7F
writebytetooffset 0x0 0x202F0C4 EF
writebytetooffset 0x0 0x202F0C5 72
writebytetooffset 0x0 0x202F0C6 FF
writebytetooffset 0x0 0x202F0C7 7F
writebytetooffset 0x0 0x202F0C8 0E
writebytetooffset 0x0 0x202F0C9 53
to the right I added the original bytes for debuggers :D

tajaros
December 10th, 2012, 02:19 PM
They are, I tested it in emerald. The first 6 if I remember are the same, it is the rest that differ.
writebytetooffset 0x3F 0x4000048 1F
writebytetooffset 0x1F 0x4000049 1F

writebytetooffset 0x41 0x4000050 40 '00101E40
writebytetooffset 0x3F 0x4000051 1E
writebytetooffset 0xF 0x4000052 10
writebytetooffset 0xA 0x4000053 00

writebytetooffset 0xFF 0x202F0AA 29'Emerald dif
writebytetooffset 0xFF 0x202F0AB 25

writebytetooffset 0x0 0x202F0B8 5A '
writebytetooffset 0x0 0x202F0B9 67 '

writebytetooffset 0x0 0x202F0AC 1F '
writebytetooffset 0x0 0x202F0AD 00

writebytetooffset 0x0 0x202F0BE 9C
writebytetooffset 0x0 0x202F0BF 77
writebytetooffset 0x0 0x202F0C0 ff
writebytetooffset 0x0 0x202F0C1 7E
writebytetooffset 0x0 0x202F0C2 33
writebytetooffset 0x0 0x202F0C3 7F
writebytetooffset 0x0 0x202F0C4 EF
writebytetooffset 0x0 0x202F0C5 72
writebytetooffset 0x0 0x202F0C6 FF
writebytetooffset 0x0 0x202F0C7 7F
writebytetooffset 0x0 0x202F0C8 0E
writebytetooffset 0x0 0x202F0C9 53
to the right I added the original bytes for debuggers :D

Wow, if you can do this why not do the same for FR? :3 Nice Job gonna try this on Emerald... :3

xWhyNotx
December 11th, 2012, 03:49 AM
Does anyone know a way to get transparent mugshots? Or is it the same code? ._.

PokemonMasters
December 11th, 2012, 12:07 PM
Does anyone know a way to get transparent mugshots? Or is it the same code? ._.
As you can clearly see, this is for transparent textboxes, not transparent mugshots.

kebbles
December 11th, 2012, 05:59 PM
What would the writebytes or command be to make the textboxes non-transparant after you have talked to someone. Anyone have a clue at all? Im trying to make the script big-free, people who are using this script should talk to the mart clerk and see what happens. Im trying to fix this problem

NarutoActor
December 12th, 2012, 09:17 AM
The bytes that I posted had the original ruby bytes, if you to writebytetooffset with those bytes it would make the transparent textbox return to normal

阴魂君
December 16th, 2012, 07:11 AM
Well...i think i should say something....There's someone reserved those offset and he said those are found by himself...But he don't know what is RAM at all.
→ http://wapp.baidu.com/f/q-9a3b678cd751279c2f9734aba36a0ecc.3.1354635384.1.Oa056VXgmKjE--D20E0763E2986EFCED44BC418CC77005-sz%40224_220%2C,sz@320_240-1-3-0-fc117cddd68b358bb26fca4030045be51ae33b305b71d98b7f044886e1b59526a5cf91f6371e-D20E0763E2986EFCED44BC418CC77005/m?kz=2049244155&is_bakan=0&lp=5010&pinf=1_2_0

PikaSaiyan
December 29th, 2012, 05:37 PM
^ Your link is dead lol. :P
Correct me if I'm wrong, but as far as I know this won't work in Fire Red because of its DMA protection. You can edit the values in RSE because they are static; when you edit them they'll remain until refreshed. However most of the ones in Fire Red are dynamic, meaning they'll just revert after you've input something.
But who knows, I've never been able to find the actual offset to test if it's editable. :(

Growl
January 6th, 2013, 04:35 AM
This code only allows you to change the coloring (to transparent) of the textbox. If you are looking to change the style of how it looks, like in B/W 2, I think that will be very hard. Thanks anyways!

thjenvuongxh
January 9th, 2013, 04:08 PM
I have a good and a bad notice:

First the good:
writebytetooffset 0x3F 0x4000048
writebytetooffset 0x1F 0x4000049
writebytetooffset 0x41 0x4000050
writebytetooffset 0x3F 0x4000051
writebytetooffset 0xF 0x4000052
writebytetooffset 0xA 0x4000053
writebytetooffset 0xFF 0x20377DC
writebytetooffset 0xFF 0x20377DD
writebytetooffset 0x0 0x20377DA
writebytetooffset 0x0 0x20377DB
writebytetooffset 0x0 0x20377DE
writebytetooffset 0x0 0x20377DF
writebytetooffset 0x0 0x20377EC
writebytetooffset 0x0 0x20377ED
writebytetooffset 0x0 0x20377EE
writebytetooffset 0x0 0x20377EF
writebytetooffset 0x0 0x20377F0
writebytetooffset 0x0 0x20377F1
writebytetooffset 0x0 0x20377F2
writebytetooffset 0x0 0x20377F3
writebytetooffset 0x0 0x20377F4
writebytetooffset 0x0 0x20377F5
writebytetooffset 0x0 0x20377F6
writebytetooffset 0x0 0x20377F7

But the bad is that there a scoundrel ASM ROUTINE that inserts
others bytes in this location after the script!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

This requires a ASM routine that check the offset in 0x8471DEC.


LETS GO!!!

thjenvuongxh
January 10th, 2013, 12:22 PM
(FIRE RED)
Today, I created a new asm routine, capable of reading one byte in the var 0x8009.

First, go at 0x8150400 and paste of thus:

A1 46 70 BC 01 BC 00 47 00 49 08 47 XX XX XX 08
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

(Use xx xx xx 08 +1 for the byte of the routine. Example: 0x800000 is 0x8000001 and 00 00 80 08 is 01 00 80 08)

At 0x8xxxxxx, paste it:
00 B5 00 06 00 0E 04 28 06 48 00 88 00 28 03 D0
05 49 06 49 06 49 07 49 07 49 08 49 08 49 09 49
09 49 00 00 CA 70 03 02 18 D8 80 00 01 49 40 18
00 68 87 46 XX XX XX 08

This new 0x8XXXXXX is your other free space that you paste it:
34 04 15 08 38 04 15 08 3C 04 15 08 40 04 15 08 44 04 15 08
BUT INSERT MORE BYTES WITH THIS, WHERE ITS COMPOSITION IS
THE TABLE WITH THIS:
10 20 00 E0 40 20 40 00 01 49 40 18 02 BC 08 47 EC 1D 47 08

Use a 10 20 E0 for the number of this table at:0x471DEC

But you can create a new collors and insering at var 0x8009 bytes with
0x0 0x1, 0x2, 0x3, 0x4, BUT THE 0x5 can' not except if you expand the table at 0x471DEC

Shiny Quagsire
January 10th, 2013, 02:51 PM
(FIRE RED)
Today, I created a new asm routine, capable of reading one byte in the var 0x8009.


Source code? I'd like to see how this works and tweak it for my hack. I'm also not entirely sure what this does. Does it allow for the switching of textbox pallets, or does it add transparency?

thjenvuongxh
January 11th, 2013, 11:48 AM
Source code? I'd like to see how this works and tweak it for my hack. I'm also not entirely sure what this does. Does it allow for the switching of textbox pallets, or does it add transparency?

After doing the things I said, you can use the VAR 0x8009 to add a number that vai vai say what color text box appears.
For example:
'---------------
#org 0xB00000
writebytetooffset 0x3F 0x4000048
writebytetooffset 0x1F 0x4000049
writebytetooffset 0x41 0x4000050
writebytetooffset 0x3F 0x4000051
writebytetooffset 0xF 0x4000052
writebytetooffset 0xA 0x4000053
setvar 0x8009 0x3
msgbox 0x81833B9 MSG_NORMAL '" [black_fr]The BUG POKEMON are the..."
end


'---------
' Strings
'---------
#org 0x1833B9
= [black_fr]The BUG POKEMON are the best \nFOR SURE!!

The "setvar 0x8009 0x3" is responsible for the color change in the text box.

If we use "setvar 0x8009 0x4" is another color that will show up, but if we use "setvar 0x8009 0x5" because the game will lock in place so we 0x8471DEC this:


Color 0x0:

2E FF 53 8C 31 5A 7F 67 3C 04 3A FF 64 06 4B D2
46 65 14 FF 7F 7B 9A 7B 54 73 7F 8E 62 DC C9 51


Color 0x1:

2E FF 53 8C 31 5A 7F 67 3C 04 3A FF 64 06 4B D2
46 7B 65 14 FF 7F 39 6F 39 39 6F 6F 7F DC 3D CD


Color 0x2:

2E FF 53 8C 31 5A 7F 67 3C 04 3A FF 64 06 4B D2
46 7B 65 14 FF 7F 29 77 A2 6E 40 39 C0 45 E0 61


Color 0x3

2E FF 53 8C 31 5A 7F 67 3C 04 3A FF 64 06 4B D2
46 65 14 1F 7B 7C 59 6F 6B 33 CC 3D 72 90 5A A8


Color 0x4

2E FF 53 8C 31 5A 7F 67 3C 04 3A FF 64 06 4B D2
7B 46 65 14 87 39 10 42 94 52 18 67 77 68 35 9C


So ... ... we can replace this:

* Color 0:00 20 06 E0
* Color 1:10 20 00 E0
* Color 2:20 20 00 E0
* Color 3:30 20 00 E0
* Color 4:40 20 40 00

... to this:

* Color 0:00 20 06 E0
* Color 1:10 20 00 E0
* Color 2:20 20 00 E0
* Color 3:30 20 00 E0
* Color 4:40 20 40 00
* Color 5:50 20 40 00
* Color 6:60 20 40 00
(...)
* Color F:F0 20 40 00

...replace this:

* Color 0:34 04 15 08
* Color 1:38 04 15 08
* Color 2:3C 04 15 08
* Color 3:40 04 15 08
* Color 4:44 04 15 08

...to:

* Color 0:34 04 15 08
* Color 1:38 04 15 08
* Color 2:3C 04 15 08
* Color 3:40 04 15 08
* Color 4:44 04 15 08
* Color 5:XX XX XX 08 (pointer byte 50 20 40 00)
(...)
* Color F:XX XX XX 08 (pointer byte F0 20 40 00)

thjenvuongxh
January 17th, 2013, 11:16 AM
(FIRE RED)
Today, I created a new asm routine, capable of reading one byte in the var 0x8009.

First, go at 0x8150400 and paste of thus:

A1 46 70 BC 01 BC 00 47 00 49 08 47 XX XX XX 08
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

(Use xx xx xx 08 +1 for the byte of the routine. Example: 0x800000 is 0x8000001 and 00 00 80 08 is 01 00 80 08)

At 0x8xxxxxx, paste it:
00 B5 00 06 00 0E 04 28 06 48 00 88 00 28 03 D0
05 49 06 49 06 49 07 49 07 49 08 49 08 49 09 49
09 49 00 00 CA 70 03 02 18 D8 80 00 01 49 40 18
00 68 87 46 XX XX XX 08

This new 0x8XXXXXX is your other free space that you paste it:
34 04 15 08 38 04 15 08 3C 04 15 08 40 04 15 08 44 04 15 08
BUT INSERT MORE BYTES WITH THIS, WHERE ITS COMPOSITION IS
THE TABLE WITH THIS:
10 20 00 E0 40 20 40 00 01 49 40 18 02 BC 08 47 EC 1D 47 08

Use a 10 20 E0 for the number of this table at:0x471DEC

But you can create a new collors and insering at var 0x8009 bytes with
0x0 0x1, 0x2, 0x3, 0x4, BUT THE 0x5 can' not except if you expand the table at 0x471DEC

I packed my explanations! Read again and should be fine!

Shiny Quagsire
January 17th, 2013, 11:59 AM
Actually, when I said source code, I meant the source to the ASM, as it might help me to understand how it works, rather than 'put this here, and put that there, and repoint this thingy'. I just like to know how it works, and others might too. Also, I'm still a bit confused as to what this segment means:

This new 0x8XXXXXX is your other free space that you paste it:
34 04 15 08 38 04 15 08 3C 04 15 08 40 04 15 08 44 04 15 08
BUT INSERT MORE BYTES WITH THIS, WHERE ITS COMPOSITION IS
THE TABLE WITH THIS:
10 20 00 E0 40 20 40 00 01 49 40 18 02 BC 08 47 EC 1D 47 08

Use a 10 20 E0 for the number of this table at:0x471DEC

I know at 0x471DEC there's a table of pallets, each 32 bytes long (unless they're compressed... not sure if they are.)

thjenvuongxh
January 19th, 2013, 12:23 PM
Actually, when I said source code, I meant the source to the ASM, as it might help me to understand how it works, rather than 'put this here, and put that there, and repoint this thingy'. I just like to know how it works, and others might too. Also, I'm still a bit confused as to what this segment means:

I know at 0x471DEC there's a table of pallets, each 32 bytes long (unless they're compressed... not sure if they are.)

The asm code is the way I found to change the colors, since it POKEMON FIRE RED uses a different text box (a writebytetooffset is not enough).

This 0x8471DEC contains an array of colors that the game uses when he goes to the text box, what I could do ... ... ... despite being BY ACCIDENT, because not get along very well with asm but with HEX ... ... was cause the read routine...

...was to make the routine var 0x2009 read before using the colors and the numbers:
34 04 15 08 38 04 15 08 3C 04 15 08 40 04 15 08 44 04 15 08
byte offsets ... are leading to numbers:
E0 10 20 00 40 20 40 00 01 49 40 18 02 BC 08 47 47 08 1D EC
... which are nothing but the numbering of colors that go appear in text boxes. EX: 10 20 00 E0 is the first color in 0x8471DEC

But we can repoint as: 50 20 00 E0

pepepepote
March 4th, 2013, 07:33 PM
incredible is amazing. i no have words ***___***

thjenvuongxh
March 7th, 2013, 02:19 PM
incredible is amazing. i no have words ***___***
You have referred to my routine?

For just wanna know if it worked for everyone.

Randomlords
April 9th, 2013, 06:59 AM
Can anybody help? Whenever I use transparent textboxes, I end up with this on the menu. Is there no way to fix that?

KennyKid
April 9th, 2013, 05:39 PM
Can anybody help? Whenever I use transparent textboxes, I end up with this on the menu. Is there no way to fix that?

Hey guys! Just above Naruto Actor posted the debug bytes,
So after you you these writebytetooffset to make transparent
In the end of the script, just write back the origins byte again :D

writebytetooffset 0x1F 0x4000048
writebytetooffset 0x1F 0x4000049

writebytetooffset 0x40 0x4000050
writebytetooffset 0x1E 0x4000051
writebytetooffset 0x10 0x4000052
writebytetooffset 0x00 0x4000053

writebytetooffset 0x29 0x202F0AA
writebytetooffset 0x25 0x202F0AB

writebytetooffset 0x5A 0x202F0B8
writebytetooffset 0x67 0x202F0B9

writebytetooffset 0x1F 0x202F0AC
writebytetooffset 0x0 0x202F0AD

writebytetooffset 0x9C 0x202F0BE
writebytetooffset 0x77 0x202F0BF
writebytetooffset 0xFF 0x202F0C0
writebytetooffset 0x7E 0x202F0C1
writebytetooffset 0x33 0x202F0C2
writebytetooffset 0x7F 0x202F0C3
writebytetooffset 0xEF 0x202F0C4
writebytetooffset 0x72 0x202F0C5
writebytetooffset 0xFF 0x202F0C6
writebytetooffset 0x7F 0x202F0C7
writebytetooffset 0x0E 0x202F0C8
writebytetooffset 0x53 0x202F0C9
It works for me, but it's not really normal after we write back (the text is in pink color, with back ground, but the menu is OK)

At least it solves the menu
Just call these scipts everytime when you end a script with massage

rhettz_emboar
June 10th, 2013, 01:43 AM
Hey Guys. Want to do Tranparent Textboxes but they look so hard to do? You can do it with the WBTO (Write by Offset) command in XSE. Here is a simple script on how to make Transparent Textboxes. (For Ruby |AXVE| Only)

Here is what you need to add to the script

writebytetooffset 0x3F 0x4000048
writebytetooffset 0x1F 0x4000049
writebytetooffset 0x41 0x4000050
writebytetooffset 0x3F 0x4000051
writebytetooffset 0xF 0x4000052
writebytetooffset 0xA 0x4000053
writebytetooffset 0xFF 0x202F0AA
writebytetooffset 0xFF 0x202F0AB
writebytetooffset 0x0 0x202F0B8
writebytetooffset 0x0 0x202F0B9
writebytetooffset 0x0 0x202F0AC
writebytetooffset 0x0 0x202F0AD
writebytetooffset 0x0 0x202F0BE
writebytetooffset 0x0 0x202F0BF
writebytetooffset 0x0 0x202F0C0
writebytetooffset 0x0 0x202F0C1
writebytetooffset 0x0 0x202F0C2
writebytetooffset 0x0 0x202F0C3
writebytetooffset 0x0 0x202F0C4
writebytetooffset 0x0 0x202F0C5
writebytetooffset 0x0 0x202F0C6
writebytetooffset 0x0 0x202F0C7
writebytetooffset 0x0 0x202F0C8
writebytetooffset 0x0 0x202F0C9


Test:
http://i1055.photobucket.com/albums/s515/pokemonmasters1/PokemonRuby.png

Notes:
- You must do this in Every Script you want Transparent.
- There are some bugs in doing this. Using this script will activate them.

Thanks for reading :D

Credit the following people if used:
- ~Andrea

is it before or after your script?

Crimnor
June 10th, 2013, 01:55 AM
Before using the textbox. (Obviously)

karatekid552
August 7th, 2013, 10:13 PM
First the good:
writebytetooffset 0x3F 0x4000048
writebytetooffset 0x1F 0x4000049
writebytetooffset 0x41 0x4000050
writebytetooffset 0x3F 0x4000051
writebytetooffset 0xF 0x4000052
writebytetooffset 0xA 0x4000053
writebytetooffset 0xFF 0x20377DC
writebytetooffset 0xFF 0x20377DD
writebytetooffset 0x0 0x20377DA
writebytetooffset 0x0 0x20377DB
writebytetooffset 0x0 0x20377DE
writebytetooffset 0x0 0x20377DF
writebytetooffset 0x0 0x20377EC
writebytetooffset 0x0 0x20377ED
writebytetooffset 0x0 0x20377EE
writebytetooffset 0x0 0x20377EF
writebytetooffset 0x0 0x20377F0
writebytetooffset 0x0 0x20377F1
writebytetooffset 0x0 0x20377F2
writebytetooffset 0x0 0x20377F3
writebytetooffset 0x0 0x20377F4
writebytetooffset 0x0 0x20377F5
writebytetooffset 0x0 0x20377F6
writebytetooffset 0x0 0x20377F7


Just to clarify for everyone, if you don't need colored text, this works just fine on FireRed.^^^ The asm routine is only there to make sure the text doesn't become transparent if you use a different color. If you are fine with white text, then this is all you need.

AtecainCorp.
August 8th, 2013, 04:34 AM
Someone know how to use that formula in Battles Texts? It would look nice in Battle giving some BW Battle Styles with full Backsprite animations.

karatekid552
August 8th, 2013, 06:22 AM
Someone know how to use that formula in Battles Texts? It would look nice in Battle giving some BW Battle Styles with full Backsprite animations.

You could actually do much the same thing. You see, what this code does is adjust some things, and then make the top layer map (The one that text and stuff goes on) semi-transparent to all other layers. If you want to read more about that, you can look at this ( http://nocash.emubase.de/gbatek.htm#lcdiocolorspecialeffects) but since you have adamently refused to learn ASM in the part, I highly doubt it will make any sense to you.

So, yeah, this could be inserted in battle, you just have to code it in somewhere, and also realize something else... The sprites aren't large enough, nor placed in the correct spots for this to look good. You would need to change their locations and everything. I also don't think the battle bg's are in the correct area either.

chrunch
October 23rd, 2013, 03:30 AM
(FIRE RED)
Today, I created a new asm routine, capable of reading one byte in the var 0x8009.

First, go at 0x8150400 and paste of thus:

A1 46 70 BC 01 BC 00 47 00 49 08 47 XX XX XX 08
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

(Use xx xx xx 08 +1 for the byte of the routine. Example: 0x800000 is 0x8000001 and 00 00 80 08 is 01 00 80 08)

At 0x8xxxxxx, paste it:
00 B5 00 06 00 0E 04 28 06 48 00 88 00 28 03 D0
05 49 06 49 06 49 07 49 07 49 08 49 08 49 09 49
09 49 00 00 CA 70 03 02 18 D8 80 00 01 49 40 18
00 68 87 46 XX XX XX 08

This new 0x8XXXXXX is your other free space that you paste it:
34 04 15 08 38 04 15 08 3C 04 15 08 40 04 15 08 44 04 15 08
BUT INSERT MORE BYTES WITH THIS, WHERE ITS COMPOSITION IS
THE TABLE WITH THIS:
10 20 00 E0 40 20 40 00 01 49 40 18 02 BC 08 47 EC 1D 47 08

Use a 10 20 E0 for the number of this table at:0x471DEC

But you can create a new collors and insering at var 0x8009 bytes with
0x0 0x1, 0x2, 0x3, 0x4, BUT THE 0x5 can' not except if you expand the table at 0x471DEC
I'm a bit confused by this explanation. Does this fix the text so that it makes it the correct color? I've done a bit of experimenting and I think I like the look of this:
http://i.imgur.com/1bsG0l5.png
I just want to make the text non-transparent. Do I apply that to fix it?

karatekid552
October 23rd, 2013, 04:14 AM
I'm a bit confused by this explanation. Does this fix the text so that it makes it the correct color? I've done a bit of experimenting and I think I like the look of this:
http://i.imgur.com/1bsG0l5.png
I just want to make the text non-transparent. Do I apply that to fix it?

This took me a while to get:

All colors will be made transparent except White. This is what I have found and worked my text boxes around it accordingly. I have yet to find a way to change it.

Also, by screwing around with some of the values that are being written to the 0x400000 area, you can change the opacity of the transparent colors.

BugMania
October 23rd, 2013, 12:08 PM
This took me a while to get:

All colors will be made transparent except White. This is what I have found and worked my text boxes around it accordingly. I have yet to find a way to change it.

Also, by screwing around with some of the values that are being written to the 0x400000 area, you can change the opacity of the transparent colors.

you can use different colors according to the table of your liking. The color table would be selected when you set a number in the variable 0x8009.

karatekid552
October 23rd, 2013, 01:40 PM
you can use different colors according to the table of your liking. The color table would be selected when you set a number in the variable 0x8009.

I honestly didn't use his routine, I wrote my own and hooked it directly into the msgbox command itself. That is probably why I didn't understand that part.

ep!c
October 24th, 2013, 04:48 AM
Lol guys, you discuss years for a simple code.

Its easy to understand: The more "black" the color has, the more transparent it is.
Black -> ~50% transparency ...... White -> 0% transparency
Then just make the code (only contains loading and writing in fact o.o) and make a built-in routine in the textbox. Afterwards, change text color to white and textbox color to full black and it results in this:

https://dl.dropboxusercontent.com/u/109327839/Hack_Team/Bilder/trans.PNG

Also the menu is working fine, if you hack the color and graphics correctly:

https://dl.dropboxusercontent.com/u/109327839/Hack_Team/Bilder/Unbenannt.png

The graphics box downsides has the offset 0x4566A8.
I could also give out my NSE-bookmarks, if you wish.
Many useful things in it :P

karatekid552
October 24th, 2013, 05:03 AM
Lol guys, you discuss years for a simple code.

Its easy to understand: The more "black" the color has, the more transparent it is.
Black -> ~50% transparency ...... White -> 0% transparency
Then just make the code (only contains loading and writing in fact o.o) and make a built-in routine in the textbox. Afterwards, change text color to white and textbox color to full black and it results in this:

https://dl.dropboxusercontent.com/u/109327839/Hack_Team/Bilder/trans.PNG

Also the menu is working fine, if you hack the color and graphics correctly:

https://dl.dropboxusercontent.com/u/109327839/Hack_Team/Bilder/Unbenannt.png

The graphics box downsides has the offset 0x4566A8.
I could also give out my NSE-bookmarks, if you wish.
Many useful things in it :P

That is exactly what I did, however I changed the transparency level of the black and added some red.

http://www.romhack.me/photo/1582/dc/userid_2957/

BugMania
October 24th, 2013, 02:03 PM
I honestly didn't use his routine, I wrote my own and hooked it directly into the msgbox command itself. That is probably why I didn't understand that part.
My routine asm (as was I who posted by the thjenvuongxh) is interesting because it allows a color change. It has nothing to do with the permissions of a transparent text box, ok?


Again, sorry for my bad english.

karatekid552
October 24th, 2013, 05:21 PM
My routine asm (as was I who posted by the thjenvuongxh) is interesting because it allows a color change. It has nothing to do with the permissions of a transparent text box, ok?


Again, sorry for my bad english.

I never said there was anything wrong with yours, I just made my own and I like the way it came out.:P

but thanks, now I understand.

KennyKid
January 16th, 2014, 10:21 PM
It's a long time since I first read this thread. I found out how to transperant textbox without asm code (writebytetooffset), just a simple code like ~Andrea. This usefull for someone not good at asm code.

First call 0x(offset) to make it transperant textbox
writebytetooffset 0x3F 0x4000048
writebytetooffset 0x1F 0x4000049
writebytetooffset 0x41 0x4000050
writebytetooffset 0x3F 0x4000051
writebytetooffset 0xF 0x4000052
writebytetooffset 0xA 0x4000053
writebytetooffset 0xFF 0x202F0AA
writebytetooffset 0xFF 0x202F0AB
writebytetooffset 0x0 0x202F0B8
writebytetooffset 0x0 0x202F0B9
writebytetooffset 0x0 0x202F0AC
writebytetooffset 0x0 0x202F0AD
writebytetooffset 0x0 0x202F0BE
writebytetooffset 0x0 0x202F0BF
writebytetooffset 0x0 0x202F0C0
writebytetooffset 0x0 0x202F0C1
writebytetooffset 0x0 0x202F0C2
writebytetooffset 0x0 0x202F0C3
writebytetooffset 0x0 0x202F0C4
writebytetooffset 0x0 0x202F0C5
writebytetooffset 0x0 0x202F0C6
writebytetooffset 0x0 0x202F0C7
writebytetooffset 0x0 0x202F0C8
writebytetooffset 0x0 0x202F0C9


After you finish your script, call this code and the textbox and menu'll back to normal
writebytetooffset 0x1F 0x4000048
writebytetooffset 0x1F 0x4000049
writebytetooffset 0x40 0x4000050
writebytetooffset 0x1E 0x4000051
writebytetooffset 0x10 0x4000052
writebytetooffset 0x0 0x4000053
writebytetooffset 0x29 0x202F0AA
writebytetooffset 0x25 0x202F0AB
writebytetooffset 0x5A 0x202F0B8
writebytetooffset 0x67 0x202F0B9
writebytetooffset 0x1F 0x202F0AC
writebytetooffset 0x0 0x202F0AD
writebytetooffset 0x9C 0x202F0BE
writebytetooffset 0x77 0x202F0BF
writebytetooffset 0xFF 0x202F0C0
writebytetooffset 0x7F 0x202F0C1
writebytetooffset 0x33 0x202F0C2
writebytetooffset 0x7F 0x202F0C3
writebytetooffset 0xEF 0x202F0C4
writebytetooffset 0x72 0x202F0C5
writebytetooffset 0xFF 0x202F0C6
writebytetooffset 0x7F 0x202F0C7
writebytetooffset 0xE 0x202F0C8
writebytetooffset 0x53 0x202F0C9


The writeback bytes are found by NarutoActor.
One more thing: You can adjust the bold of the textbox (the black transperant color) by adjust this code:
writebytetooffset 0xF 0x4000052
writebytetooffset 0xA 0x4000053
writebytetooffset 0xFF 0x202F0AA
Change the value of 0xA, from the darkest to the lightest is 0x0, 0x1, ... , 0xA, 0xb,..., 0xe and finally 0xf
So if you want it a little darker, change 0xA to 0x8 or 0x7

These code can't change the text color.

~Andrea
January 17th, 2014, 06:16 AM
why you don't use "windows" instead of making the textbox or BG0 semi-transparent? if you use it you will not have any bugs in the menu (and other tile load in BG0)...

kebbles
June 4th, 2014, 12:20 AM
yeah andrea is right, 'windows'

Danny0317
July 30th, 2014, 01:32 PM
This is amazing, but it takes up so much room to use in EVERY script.

So what everyone should do is make that a separate script, and then at the beginning of every script, call it, so this way you can save lots of room.

Example:

Script to be called:

#org @begin
writebytetooffset 0x3F 0x4000048
writebytetooffset 0x1F 0x4000049
writebytetooffset 0x41 0x4000050
writebytetooffset 0x3F 0x4000051
writebytetooffset 0xF 0x4000052
writebytetooffset 0xA 0x4000053
writebytetooffset 0xFF 0x202F0AA
writebytetooffset 0xFF 0x202F0AB
writebytetooffset 0x0 0x202F0B8
writebytetooffset 0x0 0x202F0B9
writebytetooffset 0x0 0x202F0AC
writebytetooffset 0x0 0x202F0AD
writebytetooffset 0x0 0x202F0BE
writebytetooffset 0x0 0x202F0BF
writebytetooffset 0x0 0x202F0C0
writebytetooffset 0x0 0x202F0C1
writebytetooffset 0x0 0x202F0C2
writebytetooffset 0x0 0x202F0C3
writebytetooffset 0x0 0x202F0C4
writebytetooffset 0x0 0x202F0C5
writebytetooffset 0x0 0x202F0C6
writebytetooffset 0x0 0x202F0C7
writebytetooffset 0x0 0x202F0C8
writebytetooffset 0x0 0x202F0C9
return

Then if a script wants to use transparent text boxes, it would just call that one, and then it will automatically return to the script afterward due to the return command.


#org @begin
call 0x(whateveroffsetit'sat!)
lock
faceplayer
msgbox @hi 0x6
release
end

#org @hi
= Hi.


Space saving ftw! I know this isn't a complex technique in anyway; I was just over explaning for newer hackers out there. :)

Instead of doing that, how about putting that (by "that" I mean what he said about @call) in a level script so every script in the map has it and you don't have to add it to NPCs? I haven't tested it, and won't since I don't hack FR or Ruby, but would that work?

MrKongKillz
July 30th, 2014, 10:49 PM
Instead of doing that, how about putting that (by "that" I mean what he said about @call) in a level script so every script in the map has it and you don't have to add it to NPCs? I haven't tested it, and won't since I don't hack FR or Ruby, but would that work?

Thank you now i can rom hacking with transparent textboxs :D

Derlo
September 2nd, 2014, 11:15 AM
Works great to me, but I have a little problem.

After call all "writebytetooffset" to bring the textbox to normal, if I start a script with YES/NO textbox, the game crashes....

Someone knows how to fix that?

Edit:
Forget it!
The problem was in another routine that was using along with the transparency!
https://imagizer.imageshack.us/v2/240x160q90/661/HUil68.png