- 8
- Posts
- 5
- Years
- Seen Dec 28, 2020
I want to modify special 0x62 to include custom phrases besides 'LINK TOGETHER WITH ALL'. What I don't understand is how the routine actually works. I was thinking there was a table the routine reads from, but that doesn't seem to be the case.
Here is the routine for special 0x62:
Here is the script that calls for special 0x62:
Seems like the xse command 'setvar 0x8004 0x14' has a role in directing to jump to an offset (specifically 0x0811A7BC) in the special 0x62 routine.
Here is the routine for special 0x62:
Spoiler:
Code:
.org 0x11A4F0
sub_811A4F0: @ 811A4F0
push {r4,r5,lr}
mov r5, #0x3
ldr r0, _0811A508
ldrh r0, [r0]
cmp r0, #0x14
bls _0811A4FE
b _0811A7D4
_0811A4FE:
lsl r0, #2
ldr r1, _0811A50C
add r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_0811A508: .4byte 0x020375e0
_0811A50C: .4byte 0x0811A510
.align 2, 0
_0811A510:
.4byte 0x0811A564
.4byte 0x0811A578
.4byte 0x0811A58C
.4byte 0x0811A5A0
.4byte 0x0811A5B4
.4byte 0x0811A604
.4byte 0x0811A5D8
.4byte 0x0811A630
.4byte 0x0811A664
.4byte 0x0811A688
.4byte 0x0811A6B4
.4byte 0x0811A6D4
.4byte 0x0811A708
.4byte 0x0811A72C
.4byte 0x0811A73C
.4byte 0x0811A770
.4byte 0x0811A7D4
.4byte 0x0811A784
.4byte 0x0811A798
.4byte 0x0811A7AC
.4byte 0x0811A7BC @ i believe the script jumps to this using
@ xse command 'setvar 0x8004 0x14'
_0811A564:
ldr r0, _0811A570
ldr r0, [r0]
ldr r1, _0811A574
add r4, r0, r1
b _0811A7C2
.align 2, 0
_0811A570: .4byte 0x03005d8c
_0811A574: .4byte 0x00002bb0
_0811A578:
ldr r0, _0811A584
ldr r0, [r0]
ldr r2, _0811A588
add r4, r0, r2
b _0811A7C2
.align 2, 0
_0811A584: .4byte 0x03005d8c
_0811A588: .4byte 0x00002bbc
_0811A58C:
ldr r0, _0811A598
ldr r0, [r0]
ldr r3, _0811A59C
add r4, r0, r3
b _0811A7C2
.align 2, 0
_0811A598: .4byte 0x03005d8c
_0811A59C: .4byte 0x00002bc8
_0811A5A0:
ldr r0, _0811A5AC
ldr r0, [r0]
ldr r1, _0811A5B0
add r4, r0, r1
b _0811A7C2
.align 2, 0
_0811A5AC: .4byte 0x03005d8c
_0811A5B0: .4byte 0x00002bd4
_0811A5B4:
ldr r2, _0811A5CC
ldr r0, _0811A5D0
ldrh r1, [r0]
lsl r0, r1, #3
add r0, r1
lsl r0, #2
ldr r3, _0811A5D4
add r0, r3
ldr r1, [r2]
add r4, r1, r0
b _0811A7C2
.align 2, 0
_0811A5CC: .4byte 0x03005d8c
_0811A5D0: .4byte 0x020375e2
_0811A5D4: .4byte 0x00002be0
_0811A5D8:
ldr r0, _0811A5F8
ldr r0, [r0]
ldr r2, _0811A5FC
add r1, r0, r2
ldr r3, _0811A600
add r2, r0, r3
mov r3, #0x5
_0811A5E6:
ldrh r0, [r2]
strh r0, [r2, #0xC]
add r2, #0x2
sub r3, #0x1
cmp r3, #0
bge _0811A5E6
add r4, r1, #0
b _0811A7C2
.align 2, 0
_0811A5F8: .4byte 0x03005d8c
_0811A5FC: .4byte 0x00002e36
_0811A600: .4byte 0x00002e2a
_0811A604:
ldr r2, _0811A620
ldr r0, _0811A624
ldrh r1, [r0]
lsl r0, r1, #3
add r0, r1
lsl r0, #2
ldr r1, [r2]
add r0, r1
ldr r1, _0811A628
add r4, r0, r1
ldr r0, _0811A62C
ldrb r5, [r0]
b _0811A7C2
.align 2, 0
_0811A620: .4byte 0x03005d8c
_0811A624: .4byte 0x020375e2
_0811A628: .4byte 0x000027d0
_0811A62C: .4byte 0x020375e4
_0811A630:
ldr r2, _0811A654
ldr r0, _0811A658
ldrh r1, [r0]
lsl r0, r1, #3
add r0, r1
lsl r0, #2
ldr r3, _0811A65C
add r0, r3
ldr r1, [r2]
add r1, r0
ldr r0, _0811A660
ldrh r0, [r0]
lsl r0, #1
add r0, #0x1C
add r4, r1, r0
mov r5, #0x1
b _0811A7C2
.align 2, 0
_0811A654: .4byte 0x03005d8c
_0811A658: .4byte 0x020375e2
_0811A65C: .4byte 0x000027cc
_0811A660: .4byte 0x020375e4
_0811A664:
ldr r2, _0811A67C
ldr r0, _0811A680
ldrh r1, [r0]
lsl r0, r1, #3
add r0, r1
lsl r0, #2
ldr r1, [r2]
add r0, r1
ldr r1, _0811A684
add r4, r0, r1
mov r5, #0
b _0811A7C2
.align 2, 0
_0811A67C: .4byte 0x03005d8c
_0811A680: .4byte 0x020375e2
_0811A684: .4byte 0x000027ce
_0811A688:
ldr r4, _0811A6A4
ldr r1, _0811A6A8
ldr r0, [r1]
ldr r2, _0811A6AC
add r0, r2
ldrh r0, [r0]
strh r0, [r4]
ldr r0, [r1]
ldr r3, _0811A6B0
add r0, r3
ldrh r0, [r0]
strh r0, [r4, #0x2]
b _0811A7C2
.align 2, 0
_0811A6A4: .4byte 0x02021ec4
_0811A6A8: .4byte 0x03005d8c
_0811A6AC: .4byte 0x00002e6c
_0811A6B0: .4byte 0x00002e6e
_0811A6B4:
ldr r0, _0811A6C8
ldr r0, [r0]
ldr r1, _0811A6CC
add r4, r0, r1
ldr r2, _0811A6D0
add r0, r2, #0
strh r0, [r4]
mov r5, #0x1
b _0811A7C2
.align 2, 0
_0811A6C8: .4byte 0x03005d8c
_0811A6CC: .4byte 0x00002baa
_0811A6D0: .4byte 0x0000ffff
_0811A6D4:
ldr r2, _0811A6F8
ldr r0, _0811A6FC
ldrh r1, [r0]
lsl r0, r1, #3
add r0, r1
lsl r0, #2
ldr r3, _0811A700
add r0, r3
ldr r1, [r2]
add r1, r0
ldr r0, _0811A704
ldrh r0, [r0]
lsl r0, #1
add r0, #0x4
add r4, r1, r0
mov r5, #0
b _0811A7C2
.align 2, 0
_0811A6F8: .4byte 0x03005d8c
_0811A6FC: .4byte 0x020375e2
_0811A700: .4byte 0x000027cc
_0811A704: .4byte 0x020375e4
_0811A708:
ldr r2, _0811A720
ldr r0, _0811A724
ldrh r1, [r0]
lsl r0, r1, #3
add r0, r1
lsl r0, #2
ldr r1, [r2]
add r0, r1
ldr r1, _0811A728
add r4, r0, r1
mov r5, #0x1
b _0811A7C2
.align 2, 0
_0811A720: .4byte 0x03005d8c
_0811A724: .4byte 0x020375e2
_0811A728: .4byte 0x000027e4
_0811A72C:
ldr r4, _0811A738
add r0, r4, #0
mov r1, #0x2
bl 0x11F88C
b _0811A7C2
.align 2, 0
_0811A738: .4byte 0x02021ec4
_0811A73C:
ldr r2, _0811A760
ldr r0, _0811A764
ldrh r1, [r0]
lsl r0, r1, #3
add r0, r1
lsl r0, #2
ldr r3, _0811A768
add r0, r3
ldr r1, [r2]
add r1, r0
add r4, r1, #0
add r4, #0x14
ldr r2, _0811A76C
add r0, r2, #0
strh r0, [r1, #0x14]
mov r5, #0x2
b _0811A7C2
.align 2, 0
_0811A760: .4byte 0x03005d8c
_0811A764: .4byte 0x020375e2
_0811A768: .4byte 0x000027cc
_0811A76C: .4byte 0x0000ffff
_0811A770:
ldr r0, _0811A77C
ldr r0, [r0]
ldr r3, _0811A780
add r4, r0, r3
b _0811A7C2
.align 2, 0
_0811A77C: .4byte 0x03005d8c
_0811A780: .4byte 0x00003b6e
_0811A784:
ldr r0, _0811A790
ldr r0, [r0]
ldr r1, _0811A794
add r4, r0, r1
b _0811A7C2
.align 2, 0
_0811A790: .4byte 0x03005d8c
_0811A794: .4byte 0x00003b5a
_0811A798:
ldr r0, _0811A7A4
ldr r0, [r0]
ldr r2, _0811A7A8
add r4, r0, r2
b _0811A7C2
.align 2, 0
_0811A7A4: .4byte 0x03005d8c
_0811A7A8: .4byte 0x00003b6c
_0811A7AC:
ldr r0, _0811A7B8
ldr r0, [r0]
mov r3, #0x82
lsl r3, #1
add r4, r0, r3
b _0811A7C2
.align 2, 0
_0811A7B8: .4byte 0x03005d90
_0811A7BC:
bl 0x01B058
add r4, r0, #0
_0811A7C2:
bl 0x085D34 @ overworld_free_bg_tilemaps
ldr r0, _0811A7DC
ldrb r0, [r0]
ldr r2, _0811A7E0
add r1, r4, #0
add r3, r5, #0
bl 0x11A20C
_0811A7D4:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_0811A7DC: .4byte 0x020375e0
_0811A7E0: .4byte 0x080861B1
Here is the script that calls for special 0x62:
Spoiler:
Code:
'---------------
#org 0x27381B
lockall
msgbox 0x827339F MSG_YESNO '"There is a questionnaire.\nWould y..."
compare LASTRESULT 0x0
if 0x1 goto 0x82738FD
setvar 0x8004 0x14
call 0x8271E7C
lock
faceplayer
special2 0x8008 0x1ED
compare 0x8004 0x1
if 0x1 goto 0x827386D
compare 0x8004 0x2
if 0x1 goto 0x82738B5
compare LASTRESULT 0x0
if 0x1 goto 0x82738FD
compare LASTRESULT 0x1
if 0x1 goto 0x82738FF
end
'---------------
#org 0x2738FD
releaseall
end
'---------------
#org 0x271E7C
fadescreen 0x1
special 0x62
fadescreen 0x0
return
'---------------
#org 0x27386D
checkflag 0x861
if 0x0 goto 0x82738FF
checkflag 0x8AC
if 0x1 goto 0x82738FF
applymovement 0x8008 0x82725B0
waitmovement 0x0
sound 0x15
applymovement 0x8008 0x8272598
waitmovement 0x0
applymovement 0x8008 0x827259A
waitmovement 0x0
msgbox 0x8273506 MSG_KEEPOPEN '"Oh, hello!\nYou know those words?\..."
setflag 0x8AC
msgbox 0x8273559 MSG_KEEPOPEN '"Once you save your game, you can\n..."
releaseall
end
'---------------
#org 0x2738B5
checkflag 0x861
if 0x0 goto 0x82738FF
checkflag 0x8DB
if 0x1 goto 0x82738FF
applymovement 0x8008 0x82725B0
waitmovement 0x0
sound 0x15
applymovement 0x8008 0x8272598
waitmovement 0x0
applymovement 0x8008 0x827259A
waitmovement 0x0
msgbox 0x8273446 MSG_KEEPOPEN '"Oh, hello!\nYou know those words?\..."
setflag 0x8DB
msgbox 0x82734CC MSG_KEEPOPEN '"Once you save your game, you can\n..."
releaseall
end
'---------------
#org 0x2738FF
applymovement 0x8008 0x82725B0
waitmovement 0x0
msgbox 0x82733D8 MSG_KEEPOPEN '"Thank you for taking the time to\n..."
releaseall
end
'---------
' Strings
'---------
#org 0x27339F
= There is a questionnaire.\nWould you like to fill it out?
#org 0x273506
= Oh, hello!\nYou know those words?\pThat means you must know about\nthe MYSTERY EVENT.
#org 0x273559
= Once you save your game, you can\naccess the MYSTERY EVENT.
#org 0x273446
= Oh, hello!\nYou know those words?\pThat means you must know about\nthe MYSTERY GIFT.\pFrom now on, you should be\nreceiving MYSTERY GIFTS!
#org 0x2734CC
= Once you save your game, you can\naccess the MYSTERY GIFT.
#org 0x2733D8
= Thank you for taking the time to\nfill out our questionnaire.\pYour feedback will be used for\nfuture reference.
'-----------
' Movements
'-----------
#org 0x2725B0
#raw 0x0 'Face Down
#raw 0xFE 'End of Movements
#org 0x272598
#raw 0x56 'Exclamation Mark (!)
#raw 0xFE 'End of Movements
#org 0x27259A
#raw 0x14 'Delay5
#raw 0x14 'Delay5
#raw 0x14 'Delay5
#raw 0xFE 'End of Movements
Seems like the xse command 'setvar 0x8004 0x14' has a role in directing to jump to an offset (specifically 0x0811A7BC) in the special 0x62 routine.
Last edited: