• Our software update is now concluded. You will need to reset your password to log in. In order to do this, you will have to click "Log in" in the top right corner and then "Forgot your password?".
  • Forum moderator applications are now open! Click here for details.
  • Welcome to PokéCommunity! Register now and join one of the best fan communities on the 'net to talk Pokémon and more! We are not affiliated with The Pokémon Company or Nintendo.

Development: Transparent Textboxes

阴魂君

_(:зゝ∠)_ so busy i am…
22
Posts
11
Years
~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

The rocks cry out to me
1,974
Posts
15
Years
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

Hi I'm dawg
855
Posts
11
Years
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
 

kebbles

Rom Hacker.
616
Posts
16
Years
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

The rocks cry out to me
1,974
Posts
15
Years
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
 

PikaSaiyan

Gen III master race.
9
Posts
12
Years
^ 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

Grrr...
4
Posts
11
Years
  • Seen Feb 1, 2013
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!
 
23
Posts
12
Years
  • Seen May 29, 2013
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!!!
 
23
Posts
12
Years
  • Seen May 29, 2013
(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
 
Last edited:

Shiny Quagsire

I'm Still Alive, Elsewhere
697
Posts
14
Years
(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?
 
23
Posts
12
Years
  • Seen May 29, 2013
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)
 
Last edited:
23
Posts
12
Years
  • Seen May 29, 2013
(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

I'm Still Alive, Elsewhere
697
Posts
14
Years
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.)
 
23
Posts
12
Years
  • Seen May 29, 2013
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
 
Back
Top