Froosty
The_Learner
- 535
- Posts
- 10
- Years
- Somewhere in this world.
- Seen Nov 16, 2024
Hello everyone,
Today I am gonna share a method to make the textboxes transparent in Pokemon FIRE RED
and you can activate it any time you want ... ;)
You can even use a complete costum textbox
for intro, menu etc. without messing them up. This tutorial just requires basic knowledge of
scripting and hex-editing: maybe also palette understanding.
Well I am just sharing it here but the original codes for this hack are by Mr. Epic!
!!! We need to compile and insert the three sets of asm codes !!!
1st Routine!!!
Enables transparent Msgbox to make it look transparent (Obviously)
Asm code:
.align 2
.thumb
push {r0-r4, lr}
mov r3, #0x80
ldr r4, .dma3
strb r3, [r4]
mov r2, #0x10
ldr r1, .pal15
ldr r0, .newpal
swi 0xB
ldr r1, .pal14
ldr r0, .newpal
swi 0xB
ldr r0, .o1
mov r1, #0x3F
strb r1, [r0]
ldr r0, .o2
mov r1, #0x1F
strb r1, [r0]
ldr r0, .o3
mov r1, #0x41
strb r1, [r0]
ldr r0, .o4
mov r1, #0x3F
strb r1, [r0]
ldr r0, .o5
mov r1, #0xF
strb r1, [r0]
ldr r0, .o6
mov r1, #0xA
strb r1, [r0]
ldr r0, .o7
mov r1, #0xFF
strb r1, [r0]
ldr r0, .o8
mov r1, #0xFF
strb r1, [r0]
ldr r0, .o9
mov r1, #0x0
strb r1, [r0]
ldr r0, .oA
mov r1, #0x0
strb r1, [r0]
@------------10------------
ldr r0, .oB
mov r1, #0x0
strb r1, [r0]
ldr r0, .oC
mov r1, #0x0
strb r1, [r0]
ldr r0, .oD
mov r1, #0x0
strb r1, [r0]
ldr r0, .oE
mov r1, #0x0
strb r1, [r0]
ldr r0, .oF
mov r1, #0x0
strb r1, [r0]
ldr r0, .10
mov r1, #0x0
strb r1, [r0]
ldr r0, .11
mov r1, #0x0
strb r1, [r0]
ldr r0, .12
mov r1, #0x0
strb r1, [r0]
ldr r0, .13
mov r1, #0x0
strb r1, [r0]
ldr r0, .14
mov r1, #0x0
strb r1, [r0]
@----------20------------
ldr r0, .15
mov r1, #0x0
strb r1, [r0]
ldr r0, .16
mov r1, #0x0
strb r1, [r0]
ldr r0, .17
mov r1, #0x0
strb r1, [r0]
ldr r0, .18
mov r1, #0x0
strb r1, [r0]
mov r3, #0x40
strb r3, [r4]
pop {r0-r4, pc}
@--------Offsets--------
.align 2
.o1:
.word 0x04000048
.o2:
.word 0x04000049
.o3:
.word 0x04000050
.o4:
.word 0x04000051
.o5:
.word 0x04000052
.o6:
.word 0x04000053
.o7:
.word 0x020377DC
.o8:
.word 0x020377DD
.o9:
.word 0x020377DA
.oA:
.word 0x020377DB
.oB:
.word 0x020377DE
.oC:
.word 0x020377DF
.oD:
.word 0x020377EC
.oE:
.word 0x020377ED
.oF:
.word 0x020377EE
.10:
.word 0x020377EF
.11:
.word 0x020377F0
.12:
.word 0x020377F1
.13:
.word 0x020377F2
.14:
.word 0x020377F3
.15:
.word 0x020377F4
.16:
.word 0x020377F5
.17:
.word 0x020377F6
.18:
.word 0x020377F7
.dma3:
.word 0x02037AC0
.pal15:
.word 0x050001E0
.newpal:
.word 0x08750000 /*change this to the hex position of 3rd Hex codes*/
.pal14:
.word 0x050001C0
Hex codes:
Where ZZ YY XX is the pointer to the third routine below...
2nd Routine!!!
Disables transparent Msgbox.
If not disabled, when entering a warp the game crashes.
Asm codes:
.align 2
.thumb
push {r0-r4, lr}
ldr r0, .o1
mov r1, #0x1F
strb r1, [r0]
ldr r0, .o2
mov r1, #0x1F
strb r1, [r0]
ldr r0, .o3
mov r1, #0x40
strb r1, [r0]
ldr r0, .o4
mov r1, #0x1E
strb r1, [r0]
ldr r0, .o5
mov r1, #0x10
strb r1, [r0]
ldr r0, .o6
mov r1, #0x0
strb r1, [r0]
ldr r0, .o7
mov r1, #0x29
strb r1, [r0]
ldr r0, .o8
mov r1, #0x25
strb r1, [r0]
ldr r0, .o9
mov r1, #0x5A
strb r1, [r0]
ldr r0, .oA
mov r1, #0x67
strb r1, [r0]
@------------10------------
ldr r0, .oB
mov r1, #0x1F
strb r1, [r0]
ldr r0, .oC
mov r1, #0x00
strb r1, [r0]
ldr r0, .oD
mov r1, #0x9C
strb r1, [r0]
ldr r0, .oE
mov r1, #0x77
strb r1, [r0]
ldr r0, .oF
mov r1, #0xFF
strb r1, [r0]
ldr r0, .10
mov r1, #0x7E
strb r1, [r0]
ldr r0, .11
mov r1, #0x33
strb r1, [r0]
ldr r0, .12
mov r1, #0x7F
strb r1, [r0]
ldr r0, .13
mov r1, #0xEF
strb r1, [r0]
ldr r0, .14
mov r1, #0x72
strb r1, [r0]
@----------20------------
ldr r0, .15
mov r1, #0xFF
strb r1, [r0]
ldr r0, .16
mov r1, #0x7F
strb r1, [r0]
ldr r0, .17
mov r1, #0x0E
strb r1, [r0]
ldr r0, .18
mov r1, #0x53
strb r1, [r0]
ldr r4, .dma3
mov r3, #0x40
strb r3, [r4]
pop {r0-r4, pc}
@--------Offsets--------
.align 2
.o1:
.word 0x04000048
.o2:
.word 0x04000049
.o3:
.word 0x04000050
.o4:
.word 0x04000051
.o5:
.word 0x04000052
.o6:
.word 0x04000053
.o7:
.word 0x020377DC
.o8:
.word 0x020377DD
.o9:
.word 0x020377DA
.oA:
.word 0x020377DB
.oB:
.word 0x020377DE
.oC:
.word 0x020377DF
.oD:
.word 0x020377EC
.oE:
.word 0x020377ED
.oF:
.word 0x020377EE
.10:
.word 0x020377EF
.11:
.word 0x020377F0
.12:
.word 0x020377F1
.13:
.word 0x020377F2
.14:
.word 0x020377F3
.15:
.word 0x020377F4
.16:
.word 0x020377F5
.17:
.word 0x020377F6
.18:
.word 0x020377F7
.dma3:
.word 0x02037AC0
Hex codes:
3rd Routine!!!
Modify the palette to you see the msgbox or not will look like
Hex codes:
Process to insert the routines
Well these are only my suggestions but you can insert it any way you like... :)
activating the hack with script
This hack of transparent textbox will not be activated itself but we will have to activate it..
for that we will have to add some codes to the script we are making (need to be done with every script you want to be seen in transparent textbox)
all we have to do is
callasm *\Pointer_to_first_first_routine + 1\* enable the transparent textbox for msg written at @something
msgbox @something 0x2
callasm *\pointer_to_second_routine + 1 \* Disable the transparent textbox effect
It works great with Yes-no box and show pokepic as well :)
~ the images are of the owner, I just used them here, but they do work :)
Well that was all of this Tutorial...
Give credits to Epic for these codes as he is the one who did it,
and I was the person to share it with you.
If you have any question regards this,
make replies below... I will try to help you :)
Today I am gonna share a method to make the textboxes transparent in Pokemon FIRE RED
and you can activate it any time you want ... ;)
You can even use a complete costum textbox
for intro, menu etc. without messing them up. This tutorial just requires basic knowledge of
scripting and hex-editing: maybe also palette understanding.
Well I am just sharing it here but the original codes for this hack are by Mr. Epic!
!!! We need to compile and insert the three sets of asm codes !!!
1st Routine!!!
Enables transparent Msgbox to make it look transparent (Obviously)
Asm code:
Spoiler:
.align 2
.thumb
push {r0-r4, lr}
mov r3, #0x80
ldr r4, .dma3
strb r3, [r4]
mov r2, #0x10
ldr r1, .pal15
ldr r0, .newpal
swi 0xB
ldr r1, .pal14
ldr r0, .newpal
swi 0xB
ldr r0, .o1
mov r1, #0x3F
strb r1, [r0]
ldr r0, .o2
mov r1, #0x1F
strb r1, [r0]
ldr r0, .o3
mov r1, #0x41
strb r1, [r0]
ldr r0, .o4
mov r1, #0x3F
strb r1, [r0]
ldr r0, .o5
mov r1, #0xF
strb r1, [r0]
ldr r0, .o6
mov r1, #0xA
strb r1, [r0]
ldr r0, .o7
mov r1, #0xFF
strb r1, [r0]
ldr r0, .o8
mov r1, #0xFF
strb r1, [r0]
ldr r0, .o9
mov r1, #0x0
strb r1, [r0]
ldr r0, .oA
mov r1, #0x0
strb r1, [r0]
@------------10------------
ldr r0, .oB
mov r1, #0x0
strb r1, [r0]
ldr r0, .oC
mov r1, #0x0
strb r1, [r0]
ldr r0, .oD
mov r1, #0x0
strb r1, [r0]
ldr r0, .oE
mov r1, #0x0
strb r1, [r0]
ldr r0, .oF
mov r1, #0x0
strb r1, [r0]
ldr r0, .10
mov r1, #0x0
strb r1, [r0]
ldr r0, .11
mov r1, #0x0
strb r1, [r0]
ldr r0, .12
mov r1, #0x0
strb r1, [r0]
ldr r0, .13
mov r1, #0x0
strb r1, [r0]
ldr r0, .14
mov r1, #0x0
strb r1, [r0]
@----------20------------
ldr r0, .15
mov r1, #0x0
strb r1, [r0]
ldr r0, .16
mov r1, #0x0
strb r1, [r0]
ldr r0, .17
mov r1, #0x0
strb r1, [r0]
ldr r0, .18
mov r1, #0x0
strb r1, [r0]
mov r3, #0x40
strb r3, [r4]
pop {r0-r4, pc}
@--------Offsets--------
.align 2
.o1:
.word 0x04000048
.o2:
.word 0x04000049
.o3:
.word 0x04000050
.o4:
.word 0x04000051
.o5:
.word 0x04000052
.o6:
.word 0x04000053
.o7:
.word 0x020377DC
.o8:
.word 0x020377DD
.o9:
.word 0x020377DA
.oA:
.word 0x020377DB
.oB:
.word 0x020377DE
.oC:
.word 0x020377DF
.oD:
.word 0x020377EC
.oE:
.word 0x020377ED
.oF:
.word 0x020377EE
.10:
.word 0x020377EF
.11:
.word 0x020377F0
.12:
.word 0x020377F1
.13:
.word 0x020377F2
.14:
.word 0x020377F3
.15:
.word 0x020377F4
.16:
.word 0x020377F5
.17:
.word 0x020377F6
.18:
.word 0x020377F7
.dma3:
.word 0x02037AC0
.pal15:
.word 0x050001E0
.newpal:
.word 0x08750000 /*change this to the hex position of 3rd Hex codes*/
.pal14:
.word 0x050001C0
Hex codes:
Spoiler:
1F B5 80 23 41 4C 23 70 10 22 41 49 41 48 0B DF 40 23 23 70 40 49 3F 48 0B DF 24 48 3F 21 01 70 23 48 1F 21 01 70 23 48 41 21 01 70 22 48 3F 21 01 70 22 48 0F 21 01 70 21 48 0A 21 01 70 21 48 FF 21 01 70 20 48 FF 21 01 70 20 48 00 21 01 70 1F 48 00 21 01 70 1F 48 00 21 01 70 1E 48 00 21 01 70 1E 48 00 21 01 70 1D 48 00 21 01 70 1D 48 00 21 01 70 1C 48 00 21 01 70 1C 48 00 21 01 70 1B 48 00 21 01 70 1B 48 00 21 01 70 1A 48 00 21 01 70 1A 48 00 21 01 70 19 48 00 21 01 70 19 48 00 21 01 70 18 48 00 21 01 70 1F BD 48 00 00 04 49 00 00 04 50 00 00 04 51 00 00 04 52 00 00 04 53 00 00 04 DC 77 03 02 DD 77 03 02 DA 77 03 02 DB 77 03 02 DE 77 03 02 DF 77 03 02 EC 77 03 02 ED 77 03 02 EE 77 03 02 EF 77 03 02 F0 77 03 02 F1 77 03 02 F2 77 03 02 F3 77 03 02 F4 77 03 02 F5 77 03 02 F6 77 03 02 F7 77 03 02 C0 7A 03 02 E0 01 00 05 00 00 75 08 C0 01 00 051F B5 80 23 41 4C 23 70 10 22 41 49 41 48 0B DF 40 23 23 70 40 49 3F 48 0B DF 24 48 3F 21 01 70 23 48 1F 21 01 70 23 48 41 21 01 70 22 48 3F 21 01 70 22 48 0F 21 01 70 21 48 0A 21 01 70 21 48 FF 21 01 70 20 48 FF 21 01 70 20 48 00 21 01 70 1F 48 00 21 01 70 1F 48 00 21 01 70 1E 48 00 21 01 70 1E 48 00 21 01 70 1D 48 00 21 01 70 1D 48 00 21 01 70 1C 48 00 21 01 70 1C 48 00 21 01 70 1B 48 00 21 01 70 1B 48 00 21 01 70 1A 48 00 21 01 70 1A 48 00 21 01 70 19 48 00 21 01 70 19 48 00 21 01 70 18 48 00 21 01 70 1F BD 48 00 00 04 49 00 00 04 50 00 00 04 51 00 00 04 52 00 00 04 53 00 00 04 DC 77 03 02 DD 77 03 02 DA 77 03 02 DB 77 03 02 DE 77 03 02 DF 77 03 02 EC 77 03 02 ED 77 03 02 EE 77 03 02 EF 77 03 02 F0 77 03 02 F1 77 03 02 F2 77 03 02 F3 77 03 02 F4 77 03 02 F5 77 03 02 F6 77 03 02 F7 77 03 02 C0 7A 03 02 E0 01 00 05 XXYYZZ 08 C0 01 00 05
Where ZZ YY XX is the pointer to the third routine below...
2nd Routine!!!
Disables transparent Msgbox.
If not disabled, when entering a warp the game crashes.
Asm codes:
Spoiler:
.align 2
.thumb
push {r0-r4, lr}
ldr r0, .o1
mov r1, #0x1F
strb r1, [r0]
ldr r0, .o2
mov r1, #0x1F
strb r1, [r0]
ldr r0, .o3
mov r1, #0x40
strb r1, [r0]
ldr r0, .o4
mov r1, #0x1E
strb r1, [r0]
ldr r0, .o5
mov r1, #0x10
strb r1, [r0]
ldr r0, .o6
mov r1, #0x0
strb r1, [r0]
ldr r0, .o7
mov r1, #0x29
strb r1, [r0]
ldr r0, .o8
mov r1, #0x25
strb r1, [r0]
ldr r0, .o9
mov r1, #0x5A
strb r1, [r0]
ldr r0, .oA
mov r1, #0x67
strb r1, [r0]
@------------10------------
ldr r0, .oB
mov r1, #0x1F
strb r1, [r0]
ldr r0, .oC
mov r1, #0x00
strb r1, [r0]
ldr r0, .oD
mov r1, #0x9C
strb r1, [r0]
ldr r0, .oE
mov r1, #0x77
strb r1, [r0]
ldr r0, .oF
mov r1, #0xFF
strb r1, [r0]
ldr r0, .10
mov r1, #0x7E
strb r1, [r0]
ldr r0, .11
mov r1, #0x33
strb r1, [r0]
ldr r0, .12
mov r1, #0x7F
strb r1, [r0]
ldr r0, .13
mov r1, #0xEF
strb r1, [r0]
ldr r0, .14
mov r1, #0x72
strb r1, [r0]
@----------20------------
ldr r0, .15
mov r1, #0xFF
strb r1, [r0]
ldr r0, .16
mov r1, #0x7F
strb r1, [r0]
ldr r0, .17
mov r1, #0x0E
strb r1, [r0]
ldr r0, .18
mov r1, #0x53
strb r1, [r0]
ldr r4, .dma3
mov r3, #0x40
strb r3, [r4]
pop {r0-r4, pc}
@--------Offsets--------
.align 2
.o1:
.word 0x04000048
.o2:
.word 0x04000049
.o3:
.word 0x04000050
.o4:
.word 0x04000051
.o5:
.word 0x04000052
.o6:
.word 0x04000053
.o7:
.word 0x020377DC
.o8:
.word 0x020377DD
.o9:
.word 0x020377DA
.oA:
.word 0x020377DB
.oB:
.word 0x020377DE
.oC:
.word 0x020377DF
.oD:
.word 0x020377EC
.oE:
.word 0x020377ED
.oF:
.word 0x020377EE
.10:
.word 0x020377EF
.11:
.word 0x020377F0
.12:
.word 0x020377F1
.13:
.word 0x020377F2
.14:
.word 0x020377F3
.15:
.word 0x020377F4
.16:
.word 0x020377F5
.17:
.word 0x020377F6
.18:
.word 0x020377F7
.dma3:
.word 0x02037AC0
Hex codes:
Spoiler:
1F B5 24 48 1F 21 01 70 23 48 1F 21 01 70 23 48 40 21 01 70 22 48 1E 21 01 70 22 48 10 21 01 70 21 48 00 21 01 70 21 48 29 21 01 70 20 48 25 21 01 70 20 48 5A 21 01 70 1F 48 67 21 01 70 1F 48 1F 21 01 70 1E 48 00 21 01 70 1E 48 9C 21 01 70 1D 48 77 21 01 70 1D 48 FF 21 01 70 1C 48 7E 21 01 70 1C 48 33 21 01 70 1B 48 7F 21 01 70 1B 48 EF 21 01 70 1A 48 72 21 01 70 1A 48 FF 21 01 70 19 48 7F 21 01 70 19 48 0E 21 01 70 18 48 53 21 01 70 1F BD 48 00 00 04 49 00 00 04 50 00 00 04 51 00 00 04 52 00 00 04 53 00 00 04 DC 77 03 02 DD 77 03 02 DA 77 03 02 DB 77 03 02 DE 77 03 02 DF 77 03 02 EC 77 03 02 ED 77 03 02 EE 77 03 02 EF 77 03 02 F0 77 03 02 F1 77 03 02 F2 77 03 02 F3 77 03 02 F4 77 03 02 F5 77 03 02 F6 77 03 02 F7 77 03 02
3rd Routine!!!
Modify the palette to you see the msgbox or not will look like
Hex codes:
Spoiler:
2E530000FF7F0000FF7F0000FF7F0000FF7F0000000000000000000000000000
Process to insert the routines
Well these are only my suggestions but you can insert it any way you like... :)
- insert the third routine any note the pointer (for eg:750000)
- insert the first routine just below the third routine and change the xxxxxx to the pointer above (as previous example it will be 20 00 75 )
- insert the second routine below the first routine
- note all the pointers for the routine ***VERY IMPORTANT***
activating the hack with script
This hack of transparent textbox will not be activated itself but we will have to activate it..
for that we will have to add some codes to the script we are making (need to be done with every script you want to be seen in transparent textbox)
all we have to do is
callasm *\Pointer_to_first_first_routine + 1\* enable the transparent textbox for msg written at @something
msgbox @something 0x2
callasm *\pointer_to_second_routine + 1 \* Disable the transparent textbox effect
It works great with Yes-no box and show pokepic as well :)
~ the images are of the owner, I just used them here, but they do work :)
Well that was all of this Tutorial...
Give credits to Epic for these codes as he is the one who did it,
and I was the person to share it with you.
If you have any question regards this,
make replies below... I will try to help you :)
Last edited: