mirror of
https://github.com/pret/pmd-red.git
synced 2026-09-10 18:15:45 -05:00
Merge pull request #425 from SethBarberee/sub_803B050
Some checks failed
GithubCI / build (push) Has been cancelled
Some checks failed
GithubCI / build (push) Has been cancelled
sub_803B050
This commit is contained in:
@@ -1,867 +0,0 @@
|
||||
#include "asm/constants/gba_constants.inc"
|
||||
#include "asm/macros.inc"
|
||||
|
||||
.syntax unified
|
||||
|
||||
.text
|
||||
|
||||
thumb_func_start sub_803B050
|
||||
sub_803B050:
|
||||
push {r4-r7,lr}
|
||||
ldr r4, _0803B0F4
|
||||
movs r0, 0xF4
|
||||
lsls r0, 2
|
||||
movs r1, 0x8
|
||||
bl MemoryAlloc
|
||||
str r0, [r4]
|
||||
movs r1, 0x3
|
||||
str r1, [r0, 0x34]
|
||||
adds r1, r0, 0
|
||||
adds r1, 0x84
|
||||
str r1, [r0, 0x38]
|
||||
adds r0, 0x3C
|
||||
bl RestoreSavedWindows
|
||||
ldr r1, [r4]
|
||||
ldr r2, [r1, 0x34]
|
||||
lsls r0, r2, 1
|
||||
adds r0, r2
|
||||
lsls r0, 3
|
||||
adds r1, r0
|
||||
adds r1, 0x3C
|
||||
ldr r0, _0803B0F8
|
||||
ldm r0!, {r2,r3,r5}
|
||||
stm r1!, {r2,r3,r5}
|
||||
ldm r0!, {r2,r3,r5}
|
||||
stm r1!, {r2,r3,r5}
|
||||
ldr r0, [r4]
|
||||
ldr r1, [r0, 0x38]
|
||||
adds r0, 0x9C
|
||||
str r0, [r1, 0x14]
|
||||
bl ResetUnusedInputStruct
|
||||
ldr r0, [r4]
|
||||
adds r0, 0x3C
|
||||
movs r1, 0x1
|
||||
movs r2, 0x1
|
||||
bl ShowWindows
|
||||
movs r2, 0
|
||||
movs r3, 0
|
||||
movs r7, 0xCB
|
||||
lsls r7, 1
|
||||
movs r6, 0x80
|
||||
lsls r6, 9
|
||||
movs r5, 0
|
||||
_0803B0AE:
|
||||
ldr r0, _0803B0FC
|
||||
adds r0, r5, r0
|
||||
movs r1, 0x2
|
||||
ldrsh r0, [r0, r1]
|
||||
ldr r4, _0803B0F4
|
||||
cmp r0, 0xA
|
||||
bne _0803B0C8
|
||||
ldr r0, [r4]
|
||||
lsls r1, r2, 1
|
||||
adds r0, 0xA0
|
||||
adds r0, r1
|
||||
strh r3, [r0]
|
||||
adds r2, 0x1
|
||||
_0803B0C8:
|
||||
adds r0, r6, 0
|
||||
movs r3, 0x80
|
||||
lsls r3, 9
|
||||
adds r6, r3
|
||||
adds r5, 0xC
|
||||
asrs r3, r0, 16
|
||||
cmp r3, r7
|
||||
ble _0803B0AE
|
||||
ldr r0, [r4]
|
||||
ldr r3, [r0, 0x34]
|
||||
adds r1, r2, 0
|
||||
movs r2, 0xA
|
||||
bl CreateMenuOnWindow
|
||||
bl sub_803B204
|
||||
bl sub_803B284
|
||||
movs r0, 0x1
|
||||
pop {r4-r7}
|
||||
pop {r1}
|
||||
bx r1
|
||||
.align 2, 0
|
||||
_0803B0F4: .4byte gUnknown_203B3FC
|
||||
_0803B0F8: .4byte gUnknown_80E7F54
|
||||
_0803B0FC: .4byte gFunctionScriptTable
|
||||
thumb_func_end sub_803B050
|
||||
|
||||
thumb_func_start sub_803B100
|
||||
sub_803B100:
|
||||
push {lr}
|
||||
adds r1, r0, 0
|
||||
lsls r1, 16
|
||||
asrs r1, 16
|
||||
ldr r0, _0803B11C
|
||||
ldr r0, [r0]
|
||||
bl MoveMenuToEntryId
|
||||
bl sub_803B204
|
||||
bl sub_803B284
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0803B11C: .4byte gUnknown_203B3FC
|
||||
thumb_func_end sub_803B100
|
||||
|
||||
thumb_func_start sub_803B120
|
||||
sub_803B120:
|
||||
push {r4,lr}
|
||||
ldr r4, _0803B13C
|
||||
ldr r0, [r4]
|
||||
bl GetKeyPress
|
||||
cmp r0, 0x1
|
||||
beq _0803B140
|
||||
cmp r0, 0x2
|
||||
bne _0803B144
|
||||
movs r0, 0x1
|
||||
bl PlayMenuSoundEffect
|
||||
movs r0, 0x2
|
||||
b _0803B160
|
||||
.align 2, 0
|
||||
_0803B13C: .4byte gUnknown_203B3FC
|
||||
_0803B140:
|
||||
movs r0, 0x3
|
||||
b _0803B160
|
||||
_0803B144:
|
||||
ldr r0, [r4]
|
||||
movs r1, 0x1
|
||||
bl MenuCursorUpdate
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _0803B156
|
||||
movs r0, 0
|
||||
b _0803B160
|
||||
_0803B156:
|
||||
bl sub_803B204
|
||||
bl sub_803B284
|
||||
movs r0, 0x1
|
||||
_0803B160:
|
||||
pop {r4}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_803B120
|
||||
|
||||
thumb_func_start sub_803B168
|
||||
sub_803B168:
|
||||
ldr r0, _0803B188
|
||||
ldr r0, [r0]
|
||||
movs r1, 0x1E
|
||||
ldrsh r2, [r0, r1]
|
||||
movs r3, 0x1C
|
||||
ldrsh r1, [r0, r3]
|
||||
muls r1, r2
|
||||
movs r3, 0x18
|
||||
ldrsh r2, [r0, r3]
|
||||
adds r1, r2
|
||||
lsls r1, 1
|
||||
adds r0, 0xA0
|
||||
adds r0, r1
|
||||
movs r1, 0
|
||||
ldrsh r0, [r0, r1]
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_0803B188: .4byte gUnknown_203B3FC
|
||||
thumb_func_end sub_803B168
|
||||
|
||||
thumb_func_start sub_803B18C
|
||||
sub_803B18C:
|
||||
push {r4,r5,lr}
|
||||
adds r4, r0, 0
|
||||
lsls r4, 24
|
||||
lsrs r4, 24
|
||||
ldr r5, _0803B1B8
|
||||
ldr r0, [r5]
|
||||
movs r1, 0xE5
|
||||
strh r1, [r0, 0x22]
|
||||
bl MenuUpdatePagesData
|
||||
bl sub_803B204
|
||||
bl sub_803B284
|
||||
cmp r4, 0
|
||||
beq _0803B1B2
|
||||
ldr r0, [r5]
|
||||
bl AddMenuCursorSprite
|
||||
_0803B1B2:
|
||||
pop {r4,r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0803B1B8: .4byte gUnknown_203B3FC
|
||||
thumb_func_end sub_803B18C
|
||||
|
||||
thumb_func_start sub_803B1BC
|
||||
sub_803B1BC:
|
||||
push {r4,r5,lr}
|
||||
ldr r4, _0803B1FC
|
||||
ldr r2, [r4]
|
||||
cmp r2, 0
|
||||
beq _0803B1F6
|
||||
ldr r0, [r2, 0x34]
|
||||
lsls r1, r0, 1
|
||||
adds r1, r0
|
||||
lsls r1, 3
|
||||
adds r1, r2, r1
|
||||
adds r1, 0x3C
|
||||
ldr r0, _0803B200
|
||||
ldm r0!, {r2,r3,r5}
|
||||
stm r1!, {r2,r3,r5}
|
||||
ldm r0!, {r2,r3,r5}
|
||||
stm r1!, {r2,r3,r5}
|
||||
bl ResetUnusedInputStruct
|
||||
ldr r0, [r4]
|
||||
adds r0, 0x3C
|
||||
movs r1, 0x1
|
||||
movs r2, 0x1
|
||||
bl ShowWindows
|
||||
ldr r0, [r4]
|
||||
bl MemoryFree
|
||||
movs r0, 0
|
||||
str r0, [r4]
|
||||
_0803B1F6:
|
||||
pop {r4,r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0803B1FC: .4byte gUnknown_203B3FC
|
||||
_0803B200: .4byte gUnknown_80E7F3C
|
||||
thumb_func_end sub_803B1BC
|
||||
|
||||
thumb_func_start sub_803B204
|
||||
sub_803B204:
|
||||
push {r4,lr}
|
||||
ldr r4, _0803B280
|
||||
ldr r0, [r4]
|
||||
adds r0, 0x9C
|
||||
movs r2, 0
|
||||
movs r1, 0x1
|
||||
strb r1, [r0]
|
||||
ldr r0, [r4]
|
||||
adds r0, 0x9D
|
||||
strb r2, [r0]
|
||||
ldr r0, [r4]
|
||||
adds r0, 0x9E
|
||||
movs r1, 0x8
|
||||
strb r1, [r0]
|
||||
ldr r0, [r4]
|
||||
adds r0, 0x9F
|
||||
strb r2, [r0]
|
||||
bl ResetUnusedInputStruct
|
||||
ldr r0, [r4]
|
||||
adds r0, 0x3C
|
||||
movs r1, 0x1
|
||||
movs r2, 0x1
|
||||
bl ShowWindows
|
||||
ldr r0, [r4]
|
||||
movs r1, 0x1A
|
||||
ldrsh r0, [r0, r1]
|
||||
movs r1, 0xC
|
||||
bl CalcEntriesTotalHeight
|
||||
adds r0, 0x2
|
||||
lsls r0, 16
|
||||
ldr r2, [r4]
|
||||
ldr r3, [r2, 0x34]
|
||||
lsls r1, r3, 1
|
||||
adds r1, r3
|
||||
lsls r1, 3
|
||||
adds r1, r2, r1
|
||||
adds r1, 0x4A
|
||||
asrs r3, r0, 16
|
||||
lsrs r0, 16
|
||||
strh r0, [r1]
|
||||
ldr r1, [r2, 0x34]
|
||||
lsls r0, r1, 1
|
||||
adds r0, r1
|
||||
lsls r0, 3
|
||||
adds r2, r0
|
||||
adds r3, 0x2
|
||||
adds r2, 0x4C
|
||||
strh r3, [r2]
|
||||
bl ResetUnusedInputStruct
|
||||
ldr r0, [r4]
|
||||
adds r0, 0x3C
|
||||
movs r1, 0x1
|
||||
movs r2, 0x1
|
||||
bl ShowWindows
|
||||
pop {r4}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0803B280: .4byte gUnknown_203B3FC
|
||||
thumb_func_end sub_803B204
|
||||
|
||||
thumb_func_start sub_803B284
|
||||
sub_803B284:
|
||||
push {r4-r6,lr}
|
||||
sub sp, 0x8
|
||||
ldr r6, _0803B338
|
||||
ldr r0, [r6]
|
||||
ldr r0, [r0, 0x34]
|
||||
bl CallPrepareTextbox_8008C54
|
||||
ldr r0, [r6]
|
||||
ldr r0, [r0, 0x34]
|
||||
bl sub_80073B8
|
||||
ldr r2, _0803B33C
|
||||
ldr r0, [r6]
|
||||
ldr r3, [r0, 0x34]
|
||||
movs r0, 0
|
||||
str r0, [sp]
|
||||
movs r0, 0xA
|
||||
movs r1, 0
|
||||
bl PrintStringOnWindow
|
||||
ldr r1, [r6]
|
||||
adds r0, r1, 0
|
||||
adds r0, 0x9E
|
||||
ldrb r4, [r0]
|
||||
lsls r4, 3
|
||||
subs r4, 0x2
|
||||
movs r0, 0x1E
|
||||
ldrsh r2, [r1, r0]
|
||||
adds r2, 0x1
|
||||
movs r0, 0x7
|
||||
str r0, [sp]
|
||||
ldr r0, [r1, 0x34]
|
||||
str r0, [sp, 0x4]
|
||||
adds r0, r4, 0
|
||||
movs r1, 0
|
||||
movs r3, 0x2
|
||||
bl PrintNumOnWindow
|
||||
movs r5, 0
|
||||
ldr r0, [r6]
|
||||
movs r1, 0x1A
|
||||
ldrsh r0, [r0, r1]
|
||||
cmp r5, r0
|
||||
bge _0803B324
|
||||
_0803B2DC:
|
||||
ldr r0, [r6]
|
||||
movs r3, 0x1E
|
||||
ldrsh r2, [r0, r3]
|
||||
movs r3, 0x1C
|
||||
ldrsh r1, [r0, r3]
|
||||
muls r2, r1
|
||||
adds r2, r5
|
||||
lsls r2, 1
|
||||
adds r1, r0, 0
|
||||
adds r1, 0xA0
|
||||
adds r1, r2
|
||||
movs r2, 0
|
||||
ldrsh r1, [r1, r2]
|
||||
lsls r4, r1, 1
|
||||
adds r4, r1
|
||||
lsls r4, 2
|
||||
ldr r1, _0803B340
|
||||
adds r4, r1
|
||||
adds r1, r5, 0
|
||||
bl GetMenuEntryYCoord
|
||||
adds r1, r0, 0
|
||||
ldr r2, [r4, 0x4]
|
||||
ldr r0, [r6]
|
||||
ldr r3, [r0, 0x34]
|
||||
movs r0, 0
|
||||
str r0, [sp]
|
||||
movs r0, 0x8
|
||||
bl PrintStringOnWindow
|
||||
adds r5, 0x1
|
||||
ldr r0, [r6]
|
||||
movs r3, 0x1A
|
||||
ldrsh r0, [r0, r3]
|
||||
cmp r5, r0
|
||||
blt _0803B2DC
|
||||
_0803B324:
|
||||
ldr r0, _0803B338
|
||||
ldr r0, [r0]
|
||||
ldr r0, [r0, 0x34]
|
||||
bl sub_80073E0
|
||||
add sp, 0x8
|
||||
pop {r4-r6}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0803B338: .4byte gUnknown_203B3FC
|
||||
_0803B33C: .4byte gUnknown_80E7F6C
|
||||
_0803B340: .4byte gFunctionScriptTable
|
||||
thumb_func_end sub_803B284
|
||||
|
||||
thumb_func_start sub_803B344
|
||||
sub_803B344:
|
||||
adds r1, r0, 0
|
||||
lsls r1, 24
|
||||
lsrs r1, 24
|
||||
lsls r0, r1, 3
|
||||
subs r0, r1
|
||||
lsls r0, 2
|
||||
ldr r1, _0803B358
|
||||
adds r0, r1
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_0803B358: .4byte gUnknown_80E7F94
|
||||
thumb_func_end sub_803B344
|
||||
|
||||
thumb_func_start sub_803B35C
|
||||
sub_803B35C:
|
||||
push {r4,r5,lr}
|
||||
adds r5, r0, 0
|
||||
adds r4, r1, 0
|
||||
adds r1, 0x18
|
||||
bl sub_803C21C
|
||||
ldrb r0, [r5, 0x2]
|
||||
subs r0, 0x1
|
||||
cmp r0, 0x8
|
||||
bls _0803B372
|
||||
b _0803B4FA
|
||||
_0803B372:
|
||||
lsls r0, 2
|
||||
ldr r1, _0803B37C
|
||||
adds r0, r1
|
||||
ldr r0, [r0]
|
||||
mov pc, r0
|
||||
.align 2, 0
|
||||
_0803B37C: .4byte _0803B380
|
||||
.align 2, 0
|
||||
_0803B380:
|
||||
.4byte _0803B3A4
|
||||
.4byte _0803B3BE
|
||||
.4byte _0803B3D8
|
||||
.4byte _0803B3F2
|
||||
.4byte _0803B414
|
||||
.4byte _0803B442
|
||||
.4byte _0803B470
|
||||
.4byte _0803B49E
|
||||
.4byte _0803B4CC
|
||||
_0803B3A4:
|
||||
adds r0, r4, 0
|
||||
adds r0, 0x40
|
||||
movs r1, 0
|
||||
strb r1, [r0]
|
||||
adds r0, 0x1
|
||||
strb r1, [r0]
|
||||
adds r1, r4, 0
|
||||
adds r1, 0x42
|
||||
movs r0, 0x6
|
||||
strb r0, [r1]
|
||||
subs r1, 0x14
|
||||
movs r0, 0x5
|
||||
b _0803B576
|
||||
_0803B3BE:
|
||||
adds r0, r4, 0
|
||||
adds r0, 0x40
|
||||
movs r1, 0x1
|
||||
strb r1, [r0]
|
||||
adds r0, 0x1
|
||||
strb r1, [r0]
|
||||
adds r1, r4, 0
|
||||
adds r1, 0x42
|
||||
movs r0, 0x6
|
||||
strb r0, [r1]
|
||||
subs r1, 0x14
|
||||
movs r0, 0x5
|
||||
b _0803B576
|
||||
_0803B3D8:
|
||||
adds r0, r4, 0
|
||||
adds r0, 0x40
|
||||
movs r1, 0x2
|
||||
strb r1, [r0]
|
||||
adds r0, 0x1
|
||||
strb r1, [r0]
|
||||
adds r1, r4, 0
|
||||
adds r1, 0x42
|
||||
movs r0, 0x6
|
||||
strb r0, [r1]
|
||||
subs r1, 0x14
|
||||
movs r0, 0x5
|
||||
b _0803B576
|
||||
_0803B3F2:
|
||||
adds r0, r4, 0
|
||||
adds r0, 0x40
|
||||
movs r1, 0x3
|
||||
strb r1, [r0]
|
||||
adds r0, 0x1
|
||||
strb r1, [r0]
|
||||
adds r1, r4, 0
|
||||
adds r1, 0x42
|
||||
movs r0, 0x6
|
||||
strb r0, [r1]
|
||||
bl sub_8096DD8
|
||||
str r0, [r4, 0x4C]
|
||||
bl sub_8096DE8
|
||||
str r0, [r4, 0x50]
|
||||
b _0803B578
|
||||
_0803B414:
|
||||
ldrb r0, [r5, 0x1]
|
||||
cmp r0, 0x3
|
||||
bne _0803B42A
|
||||
adds r0, r4, 0
|
||||
adds r0, 0x40
|
||||
movs r1, 0xB
|
||||
strb r1, [r0]
|
||||
adds r1, r4, 0
|
||||
adds r1, 0x42
|
||||
movs r0, 0x1
|
||||
b _0803B438
|
||||
_0803B42A:
|
||||
adds r0, r4, 0
|
||||
adds r0, 0x40
|
||||
movs r1, 0xC
|
||||
strb r1, [r0]
|
||||
adds r1, r4, 0
|
||||
adds r1, 0x42
|
||||
movs r0, 0x2
|
||||
_0803B438:
|
||||
strb r0, [r1]
|
||||
adds r1, r4, 0
|
||||
adds r1, 0x41
|
||||
movs r0, 0x4
|
||||
b _0803B576
|
||||
_0803B442:
|
||||
ldrb r0, [r5, 0x1]
|
||||
cmp r0, 0x3
|
||||
bne _0803B458
|
||||
adds r0, r4, 0
|
||||
adds r0, 0x40
|
||||
movs r1, 0xB
|
||||
strb r1, [r0]
|
||||
adds r1, r4, 0
|
||||
adds r1, 0x42
|
||||
movs r0, 0x1
|
||||
b _0803B466
|
||||
_0803B458:
|
||||
adds r0, r4, 0
|
||||
adds r0, 0x40
|
||||
movs r1, 0xC
|
||||
strb r1, [r0]
|
||||
adds r1, r4, 0
|
||||
adds r1, 0x42
|
||||
movs r0, 0x2
|
||||
_0803B466:
|
||||
strb r0, [r1]
|
||||
adds r1, r4, 0
|
||||
adds r1, 0x41
|
||||
movs r0, 0x5
|
||||
b _0803B576
|
||||
_0803B470:
|
||||
adds r0, r5, 0
|
||||
bl sub_803B600
|
||||
str r0, [r4, 0x4]
|
||||
movs r1, 0x1
|
||||
negs r1, r1
|
||||
cmp r0, r1
|
||||
bne _0803B488
|
||||
adds r1, r4, 0
|
||||
adds r1, 0x40
|
||||
movs r0, 0x9
|
||||
b _0803B48E
|
||||
_0803B488:
|
||||
adds r1, r4, 0
|
||||
adds r1, 0x40
|
||||
movs r0, 0x4
|
||||
_0803B48E:
|
||||
strb r0, [r1]
|
||||
adds r1, r4, 0
|
||||
adds r1, 0x41
|
||||
movs r0, 0x6
|
||||
strb r0, [r1]
|
||||
adds r1, 0x1
|
||||
movs r0, 0x4
|
||||
b _0803B576
|
||||
_0803B49E:
|
||||
adds r0, r5, 0
|
||||
bl sub_803B628
|
||||
str r0, [r4, 0x4]
|
||||
movs r1, 0x1
|
||||
negs r1, r1
|
||||
cmp r0, r1
|
||||
bne _0803B4B6
|
||||
adds r1, r4, 0
|
||||
adds r1, 0x40
|
||||
movs r0, 0x9
|
||||
b _0803B4BC
|
||||
_0803B4B6:
|
||||
adds r1, r4, 0
|
||||
adds r1, 0x40
|
||||
movs r0, 0x5
|
||||
_0803B4BC:
|
||||
strb r0, [r1]
|
||||
adds r1, r4, 0
|
||||
adds r1, 0x41
|
||||
movs r0, 0x7
|
||||
strb r0, [r1]
|
||||
adds r1, 0x1
|
||||
movs r0, 0x4
|
||||
b _0803B576
|
||||
_0803B4CC:
|
||||
adds r0, r5, 0
|
||||
bl sub_803B66C
|
||||
str r0, [r4, 0x4]
|
||||
movs r1, 0x1
|
||||
negs r1, r1
|
||||
cmp r0, r1
|
||||
bne _0803B4E4
|
||||
adds r1, r4, 0
|
||||
adds r1, 0x40
|
||||
movs r0, 0xA
|
||||
b _0803B4EA
|
||||
_0803B4E4:
|
||||
adds r1, r4, 0
|
||||
adds r1, 0x40
|
||||
movs r0, 0x6
|
||||
_0803B4EA:
|
||||
strb r0, [r1]
|
||||
adds r1, r4, 0
|
||||
adds r1, 0x41
|
||||
movs r0, 0x8
|
||||
strb r0, [r1]
|
||||
adds r1, 0x1
|
||||
movs r0, 0x5
|
||||
b _0803B576
|
||||
_0803B4FA:
|
||||
ldrb r0, [r5, 0x1]
|
||||
cmp r0, 0x2
|
||||
beq _0803B528
|
||||
cmp r0, 0x2
|
||||
bgt _0803B50A
|
||||
cmp r0, 0x1
|
||||
beq _0803B514
|
||||
b _0803B564
|
||||
_0803B50A:
|
||||
cmp r0, 0x3
|
||||
beq _0803B53C
|
||||
cmp r0, 0x4
|
||||
beq _0803B550
|
||||
b _0803B564
|
||||
_0803B514:
|
||||
adds r1, r4, 0
|
||||
adds r1, 0x40
|
||||
movs r0, 0x9
|
||||
strb r0, [r1]
|
||||
adds r1, 0x1
|
||||
movs r0, 0xD
|
||||
strb r0, [r1]
|
||||
adds r1, 0x1
|
||||
movs r0, 0x4
|
||||
b _0803B576
|
||||
_0803B528:
|
||||
adds r1, r4, 0
|
||||
adds r1, 0x40
|
||||
movs r0, 0xA
|
||||
strb r0, [r1]
|
||||
adds r1, 0x1
|
||||
movs r0, 0xE
|
||||
strb r0, [r1]
|
||||
adds r1, 0x1
|
||||
movs r0, 0x5
|
||||
b _0803B576
|
||||
_0803B53C:
|
||||
adds r1, r4, 0
|
||||
adds r1, 0x40
|
||||
movs r0, 0xB
|
||||
strb r0, [r1]
|
||||
adds r1, 0x1
|
||||
movs r0, 0xF
|
||||
strb r0, [r1]
|
||||
adds r1, 0x1
|
||||
movs r0, 0x1
|
||||
b _0803B576
|
||||
_0803B550:
|
||||
adds r1, r4, 0
|
||||
adds r1, 0x40
|
||||
movs r0, 0xC
|
||||
strb r0, [r1]
|
||||
adds r1, 0x1
|
||||
movs r0, 0x10
|
||||
strb r0, [r1]
|
||||
adds r1, 0x1
|
||||
movs r0, 0x2
|
||||
b _0803B576
|
||||
_0803B564:
|
||||
adds r1, r4, 0
|
||||
adds r1, 0x40
|
||||
movs r0, 0x8
|
||||
strb r0, [r1]
|
||||
adds r1, 0x1
|
||||
movs r0, 0xC
|
||||
strb r0, [r1]
|
||||
adds r1, 0x1
|
||||
movs r0, 0x3
|
||||
_0803B576:
|
||||
strb r0, [r1]
|
||||
_0803B578:
|
||||
adds r0, r5, 0x4
|
||||
str r0, [r4, 0x8]
|
||||
movs r0, 0
|
||||
str r0, [r4, 0xC]
|
||||
ldrh r0, [r5, 0xC]
|
||||
movs r1, 0
|
||||
strh r0, [r4, 0x10]
|
||||
ldrh r0, [r5, 0xE]
|
||||
strh r0, [r4, 0x12]
|
||||
ldrb r0, [r5, 0x10]
|
||||
strb r0, [r4, 0x14]
|
||||
ldrb r0, [r5]
|
||||
subs r0, 0x2
|
||||
cmp r0, 0x7
|
||||
bhi _0803B5EC
|
||||
lsls r0, 2
|
||||
ldr r1, _0803B5A0
|
||||
adds r0, r1
|
||||
ldr r0, [r0]
|
||||
mov pc, r0
|
||||
.align 2, 0
|
||||
_0803B5A0: .4byte _0803B5A4
|
||||
.align 2, 0
|
||||
_0803B5A4:
|
||||
.4byte _0803B5C4
|
||||
.4byte _0803B5C4
|
||||
.4byte _0803B5C4
|
||||
.4byte _0803B5C4
|
||||
.4byte _0803B5DC
|
||||
.4byte _0803B5CC
|
||||
.4byte _0803B5DC
|
||||
.4byte _0803B5DC
|
||||
_0803B5C4:
|
||||
adds r0, r4, 0
|
||||
adds r0, 0x43
|
||||
movs r1, 0x1
|
||||
b _0803B5F0
|
||||
_0803B5CC:
|
||||
adds r1, r4, 0
|
||||
adds r1, 0x43
|
||||
movs r0, 0
|
||||
strb r0, [r1]
|
||||
adds r1, 0x1
|
||||
movs r0, 0x3
|
||||
strb r0, [r1]
|
||||
b _0803B5F6
|
||||
_0803B5DC:
|
||||
adds r1, r4, 0
|
||||
adds r1, 0x43
|
||||
movs r0, 0x3
|
||||
strb r0, [r1]
|
||||
adds r1, 0x1
|
||||
movs r0, 0x2
|
||||
strb r0, [r1]
|
||||
b _0803B5F6
|
||||
_0803B5EC:
|
||||
adds r0, r4, 0
|
||||
adds r0, 0x43
|
||||
_0803B5F0:
|
||||
strb r1, [r0]
|
||||
adds r0, 0x1
|
||||
strb r1, [r0]
|
||||
_0803B5F6:
|
||||
str r5, [r4, 0x54]
|
||||
pop {r4,r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_803B35C
|
||||
|
||||
thumb_func_start sub_803B600
|
||||
sub_803B600:
|
||||
push {lr}
|
||||
ldr r2, _0803B614
|
||||
movs r1, 0
|
||||
ldr r3, [r0, 0xC]
|
||||
_0803B608:
|
||||
ldr r0, [r2]
|
||||
cmp r0, r3
|
||||
bne _0803B618
|
||||
adds r0, r1, 0
|
||||
b _0803B624
|
||||
.align 2, 0
|
||||
_0803B614: .4byte gUnknown_80E9920
|
||||
_0803B618:
|
||||
adds r2, 0x8
|
||||
adds r1, 0x1
|
||||
cmp r1, 0x14
|
||||
ble _0803B608
|
||||
movs r0, 0x1
|
||||
negs r0, r0
|
||||
_0803B624:
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_803B600
|
||||
|
||||
thumb_func_start sub_803B628
|
||||
sub_803B628:
|
||||
push {r4,r5,lr}
|
||||
adds r4, r0, 0
|
||||
ldr r2, _0803B654
|
||||
movs r3, 0
|
||||
_0803B630:
|
||||
ldr r1, [r2]
|
||||
ldr r0, [r4, 0xC]
|
||||
cmp r1, r0
|
||||
beq _0803B650
|
||||
movs r0, 0x2
|
||||
ldrsh r1, [r2, r0]
|
||||
movs r5, 0xC
|
||||
ldrsh r0, [r4, r5]
|
||||
cmp r1, r0
|
||||
bne _0803B658
|
||||
movs r0, 0
|
||||
ldrsh r1, [r2, r0]
|
||||
movs r5, 0xE
|
||||
ldrsh r0, [r4, r5]
|
||||
cmp r1, r0
|
||||
bne _0803B658
|
||||
_0803B650:
|
||||
adds r0, r3, 0
|
||||
b _0803B664
|
||||
.align 2, 0
|
||||
_0803B654: .4byte gUnknown_80E9F8C
|
||||
_0803B658:
|
||||
adds r2, 0xC
|
||||
adds r3, 0x1
|
||||
cmp r3, 0x2C
|
||||
ble _0803B630
|
||||
movs r0, 0x1
|
||||
negs r0, r0
|
||||
_0803B664:
|
||||
pop {r4,r5}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_803B628
|
||||
|
||||
thumb_func_start sub_803B66C
|
||||
sub_803B66C:
|
||||
push {r4,r5,lr}
|
||||
adds r4, r0, 0
|
||||
ldr r2, _0803B698
|
||||
movs r3, 0
|
||||
_0803B674:
|
||||
ldr r1, [r2]
|
||||
ldr r0, [r4, 0xC]
|
||||
cmp r1, r0
|
||||
beq _0803B694
|
||||
movs r0, 0x2
|
||||
ldrsh r1, [r2, r0]
|
||||
movs r5, 0xC
|
||||
ldrsh r0, [r4, r5]
|
||||
cmp r1, r0
|
||||
bne _0803B69C
|
||||
movs r0, 0
|
||||
ldrsh r1, [r2, r0]
|
||||
movs r5, 0xE
|
||||
ldrsh r0, [r4, r5]
|
||||
cmp r1, r0
|
||||
bne _0803B69C
|
||||
_0803B694:
|
||||
adds r0, r3, 0
|
||||
b _0803B6A8
|
||||
.align 2, 0
|
||||
_0803B698: .4byte gUnknown_80E8168
|
||||
_0803B69C:
|
||||
adds r2, 0x4
|
||||
adds r3, 0x1
|
||||
cmp r3, 0x5
|
||||
ble _0803B674
|
||||
movs r0, 0x1
|
||||
negs r0, r0
|
||||
_0803B6A8:
|
||||
pop {r4,r5}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_803B66C
|
||||
|
||||
.align 2,0
|
||||
@@ -1,87 +1,36 @@
|
||||
.section .rodata
|
||||
|
||||
@ code_803B050 #1
|
||||
.align 2,0
|
||||
.string "pksdir0\0"
|
||||
.global gUnknown_80E7F3C
|
||||
gUnknown_80E7F3C: @ 80E7F3C
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
.byte 0x03, 0x00, 0x00, 0x00
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
|
||||
.global gUnknown_80E7F54
|
||||
gUnknown_80E7F54: @ 80E7F54
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
.byte 0x06, 0x00, 0x00, 0x00
|
||||
.byte 0x02, 0x00, 0x02, 0x00
|
||||
.byte 0x18, 0x00, 0x11, 0x00
|
||||
.byte 0x11, 0x00, 0x00, 0x00
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
|
||||
.global gUnknown_80E7F6C
|
||||
gUnknown_80E7F6C: @ 80E7F6C
|
||||
.string "Script\0"
|
||||
|
||||
@ code_803B050 #2
|
||||
.align 2,0
|
||||
.string "pksdir0\0"
|
||||
|
||||
@ code_803B050 #3
|
||||
.align 2,0
|
||||
.string "pksdir0\0"
|
||||
|
||||
@ code_803B050 #4
|
||||
.align 2,0
|
||||
.string "pksdir0\0"
|
||||
|
||||
@ code_803B050 #5
|
||||
.align 2,0
|
||||
.string "pksdir0\0"
|
||||
|
||||
.align 2,0
|
||||
.global gUnknown_80E7F94
|
||||
gUnknown_80E7F94: @ 80E7F94
|
||||
.macro st_80E7F94 a, b, c, e, f, g, h, i, j, k, m, n
|
||||
.byte \a, \b, \c
|
||||
.align 2, 0
|
||||
.4byte \e, \f
|
||||
.2byte \g, \h
|
||||
.byte \i, \j, \k
|
||||
.align 2, 0
|
||||
.4byte \m, \n
|
||||
.endm
|
||||
st_80E7F94 5, 1, 4, 0xC2B, 0x123456, 0x19, 0x182, 0x38, 8, 0x3A, sUnknown_80E8088, sUnknown_80E8070
|
||||
st_80E7F94 5, 1, 4, 0x112C, 0x123456, 4, 0x115, 0x38, 8, 0x3A, sUnknown_80E8060, sUnknown_80E8048
|
||||
st_80E7F94 5, 1, 4, 0x112D, 0x123456, 1, 0x118, 0x38, 8, 0x3A, sUnknown_80E8038, sUnknown_80E8020
|
||||
st_80E7F94 5, 1, 0, 0x1B2E, 0x123456, 7, 0x9B, 0x38, 8, 0x3A, 0, 0
|
||||
st_80E7F94 5, 1, 0, 0x903, 0x123456, 0x98, 0x9E, 0x38, 8, 0x3A, 0, 0
|
||||
@ code_803B344
|
||||
|
||||
.global sUnknown_80E8020
|
||||
sUnknown_80E8020: @ 80E8020
|
||||
.string "SHOW RESCUE 00\n"
|
||||
.string " EVENT02\0"
|
||||
.align 2, 0
|
||||
|
||||
.global sUnknown_80E8038
|
||||
sUnknown_80E8038: @ 80E8038
|
||||
.string "SHOW TITLE02\0"
|
||||
.align 2, 0
|
||||
|
||||
.global sUnknown_80E8048
|
||||
sUnknown_80E8048: @ 80E8048
|
||||
.string "SHOW RESCUE 00\n"
|
||||
.string " EVENT01\0"
|
||||
.align 2, 0
|
||||
|
||||
.global sUnknown_80E8060
|
||||
sUnknown_80E8060: @ 80E8060
|
||||
.string "SHOW TITLE01\0"
|
||||
.align 2, 0
|
||||
|
||||
.global sUnknown_80E8070
|
||||
sUnknown_80E8070: @ 80E8070
|
||||
.string "SHOW RESCUE 00\n"
|
||||
.string " EVENT00\0"
|
||||
.align 2, 0
|
||||
|
||||
.global sUnknown_80E8088
|
||||
sUnknown_80E8088: @ 80E8088
|
||||
.string "SHOW TITLE00\0"
|
||||
.align 2, 0
|
||||
.align 2, 0
|
||||
|
||||
@@ -3,8 +3,13 @@
|
||||
|
||||
#include "structs/str_802C39C.h"
|
||||
|
||||
// code_803B050.s
|
||||
extern unkStruct_803B344 *sub_803B344(u8);
|
||||
extern void sub_803B35C(WonderMail *, unkStruct_802C39C *);
|
||||
bool8 sub_803B050(void);
|
||||
void sub_803B100(s32 _id);
|
||||
u32 sub_803B120(void);
|
||||
s16 sub_803B168(void);
|
||||
void sub_803B1BC(void);
|
||||
|
||||
#endif // GUARD_CODE_803B050_H
|
||||
unkStruct_803B344 *sub_803B344(u8 r0);
|
||||
void sub_803B35C(WonderMail *mail, unkStruct_802C39C *param_2);
|
||||
|
||||
#endif // GUARD_CODE_803B050_H
|
||||
|
||||
@@ -17,8 +17,8 @@ typedef struct subStruct_203B490
|
||||
struct unkStruct_8096AF8
|
||||
{
|
||||
bool8 unk0;
|
||||
/* 0x2 */ u16 clientSpecies;
|
||||
/* 0x4 */ u16 targetSpecies;
|
||||
/* 0x2 */ s16 clientSpecies;
|
||||
/* 0x4 */ s16 targetSpecies;
|
||||
};
|
||||
|
||||
// size: 0x32C?
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
#define POKEMON_MAIL_H
|
||||
|
||||
#include "structs/str_802C39C.h"
|
||||
#include "pokemon_mail_pre.h"
|
||||
|
||||
// size: 0x8
|
||||
typedef struct PokemonMail
|
||||
@@ -21,8 +22,7 @@ typedef struct unkStruct_80E9920
|
||||
// size: 0xC
|
||||
typedef struct unkStruct_80E9F8C
|
||||
{
|
||||
/* 0x0 */ s16 speciesA;
|
||||
/* 0x2 */ s16 speciesB;
|
||||
/* 0x0 */ struct PokemonPair species;
|
||||
/* 0x4 */ const u8 *headline;
|
||||
/* 0x8 */ const u8 *text;
|
||||
} unkStruct_80E9F8C;
|
||||
|
||||
@@ -12,15 +12,10 @@ typedef struct unkStruct_802C39C
|
||||
/* 0x10 */ s16 clientSpecies;
|
||||
/* 0x12 */ s16 targetSpecies;
|
||||
/* 0x14 */ u8 targetItem;
|
||||
/* 0x15 */ u8 fill15[0x2E - 0x15];
|
||||
/* 0x2E */ u8 rewardType;
|
||||
u8 *unk30;
|
||||
/* 0x34 */ u8 rewardItem;
|
||||
u8 fill35[0x38 - 0x35];
|
||||
/* 0x38 */ u8 unk38[0x40 - 0x38];
|
||||
u8 mailTitleType;
|
||||
u8 mailDescriptionType;
|
||||
u8 mailMissionType;
|
||||
/* 0x18 */ unkStruct_802F204 unk18;
|
||||
/* 0x40 */ u8 mailTitleType;
|
||||
/* 0x41 */ u8 mailDescriptionType;
|
||||
/* 0x42 */ u8 mailMissionType;
|
||||
u8 unk43;
|
||||
u8 mailStatus; // mail status (suspend / take job / done)
|
||||
/* 0x48 */ u32 y;
|
||||
|
||||
@@ -186,7 +186,8 @@ SECTIONS {
|
||||
src/debug_menu2.o(.text);
|
||||
src/debug_menu3.o(.text);
|
||||
src/debug_menu4.o(.text);
|
||||
asm/code_803B050.o(.text);
|
||||
src/code_803B050.o(.text);
|
||||
src/code_803B344.o(.text);
|
||||
src/pokemon_mail.o(.text);
|
||||
src/code_803C1B4.o(.text);
|
||||
src/personality_test1.o(.text);
|
||||
@@ -562,6 +563,11 @@ SECTIONS {
|
||||
src/debug_menu2.o(.rodata);
|
||||
src/debug_menu3.o(.rodata);
|
||||
src/debug_menu4.o(.rodata);
|
||||
src/code_803B050.o(.rodata);
|
||||
src/code_803B050_unused1.o(.rodata);
|
||||
src/code_803B050_unused2.o(.rodata);
|
||||
src/code_803B050_unused3.o(.rodata);
|
||||
src/code_803B344.o(.rodata);
|
||||
data/data_80E7D40.o(.rodata);
|
||||
src/pokemon_mail_pre.o(.rodata);
|
||||
src/pokemon_mail.o(.rodata);
|
||||
|
||||
@@ -1,3 +1,225 @@
|
||||
#include "global.h"
|
||||
#include "globaldata.h"
|
||||
#include "structs/str_ground_script.h"
|
||||
#include "input.h"
|
||||
#include "memory.h"
|
||||
#include "menu_input.h"
|
||||
#include "music_util.h"
|
||||
#include "text_1.h"
|
||||
#include "text_2.h"
|
||||
#include "text_3.h"
|
||||
|
||||
EWRAM_INIT void *gUnknown_203B3FC = NULL;
|
||||
struct unkStruct_203B3FC
|
||||
{
|
||||
// size: 0x3D0
|
||||
MenuHeaderWindow mh;
|
||||
s16 unkA0[10];
|
||||
};
|
||||
EWRAM_INIT struct unkStruct_203B3FC *gUnknown_203B3FC = NULL;
|
||||
|
||||
const WindowTemplate gUnknown_80E7F3C =
|
||||
{
|
||||
0,
|
||||
0x03,
|
||||
0x00, 0x00,
|
||||
0x00, 0x00,
|
||||
0x00, 0x00,
|
||||
NULL
|
||||
};
|
||||
|
||||
const WindowTemplate gUnknown_80E7F54 =
|
||||
{
|
||||
0,
|
||||
0x06,
|
||||
0x02, 0x02,
|
||||
0x18, 0x11,
|
||||
0x11, 0x00,
|
||||
NULL
|
||||
};
|
||||
|
||||
static void sub_803B204(void);
|
||||
static void sub_803B284(void);
|
||||
|
||||
// https://decomp.me/scratch/xx1GB - 91.35% matched (Seth)
|
||||
NAKED
|
||||
bool8 sub_803B050(void)
|
||||
{
|
||||
asm_unified(
|
||||
"\tpush {r4-r7,lr}\n"
|
||||
"\tldr r4, _0803B0F4\n"
|
||||
"\tmovs r0, 0xF4\n"
|
||||
"\tlsls r0, 2\n"
|
||||
"\tmovs r1, 0x8\n"
|
||||
"\tbl MemoryAlloc\n"
|
||||
"\tstr r0, [r4]\n"
|
||||
"\tmovs r1, 0x3\n"
|
||||
"\tstr r1, [r0, 0x34]\n"
|
||||
"\tadds r1, r0, 0\n"
|
||||
"\tadds r1, 0x84\n"
|
||||
"\tstr r1, [r0, 0x38]\n"
|
||||
"\tadds r0, 0x3C\n"
|
||||
"\tbl RestoreSavedWindows\n"
|
||||
"\tldr r1, [r4]\n"
|
||||
"\tldr r2, [r1, 0x34]\n"
|
||||
"\tlsls r0, r2, 1\n"
|
||||
"\tadds r0, r2\n"
|
||||
"\tlsls r0, 3\n"
|
||||
"\tadds r1, r0\n"
|
||||
"\tadds r1, 0x3C\n"
|
||||
"\tldr r0, _0803B0F8\n"
|
||||
"\tldm r0!, {r2,r3,r5}\n"
|
||||
"\tstm r1!, {r2,r3,r5}\n"
|
||||
"\tldm r0!, {r2,r3,r5}\n"
|
||||
"\tstm r1!, {r2,r3,r5}\n"
|
||||
"\tldr r0, [r4]\n"
|
||||
"\tldr r1, [r0, 0x38]\n"
|
||||
"\tadds r0, 0x9C\n"
|
||||
"\tstr r0, [r1, 0x14]\n"
|
||||
"\tbl ResetUnusedInputStruct\n"
|
||||
"\tldr r0, [r4]\n"
|
||||
"\tadds r0, 0x3C\n"
|
||||
"\tmovs r1, 0x1\n"
|
||||
"\tmovs r2, 0x1\n"
|
||||
"\tbl ShowWindows\n"
|
||||
"\tmovs r2, 0\n"
|
||||
"\tmovs r3, 0\n"
|
||||
"\tmovs r7, 0xCB\n"
|
||||
"\tlsls r7, 1\n"
|
||||
"\tmovs r6, 0x80\n"
|
||||
"\tlsls r6, 9\n"
|
||||
"\tmovs r5, 0\n"
|
||||
"_0803B0AE:\n"
|
||||
"\tldr r0, _0803B0FC\n"
|
||||
"\tadds r0, r5, r0\n"
|
||||
"\tmovs r1, 0x2\n"
|
||||
"\tldrsh r0, [r0, r1]\n"
|
||||
"\tldr r4, _0803B0F4\n"
|
||||
"\tcmp r0, 0xA\n"
|
||||
"\tbne _0803B0C8\n"
|
||||
"\tldr r0, [r4]\n"
|
||||
"\tlsls r1, r2, 1\n"
|
||||
"\tadds r0, 0xA0\n"
|
||||
"\tadds r0, r1\n"
|
||||
"\tstrh r3, [r0]\n"
|
||||
"\tadds r2, 0x1\n"
|
||||
"_0803B0C8:\n"
|
||||
"\tadds r0, r6, 0\n"
|
||||
"\tmovs r3, 0x80\n"
|
||||
"\tlsls r3, 9\n"
|
||||
"\tadds r6, r3\n"
|
||||
"\tadds r5, 0xC\n"
|
||||
"\tasrs r3, r0, 16\n"
|
||||
"\tcmp r3, r7\n"
|
||||
"\tble _0803B0AE\n"
|
||||
"\tldr r0, [r4]\n"
|
||||
"\tldr r3, [r0, 0x34]\n"
|
||||
"\tadds r1, r2, 0\n"
|
||||
"\tmovs r2, 0xA\n"
|
||||
"\tbl CreateMenuOnWindow\n"
|
||||
"\tbl sub_803B204\n"
|
||||
"\tbl sub_803B284\n"
|
||||
"\tmovs r0, 0x1\n"
|
||||
"\tpop {r4-r7}\n"
|
||||
"\tpop {r1}\n"
|
||||
"\tbx r1\n"
|
||||
"\t.align 2, 0\n"
|
||||
"_0803B0F4: .4byte gUnknown_203B3FC\n"
|
||||
"_0803B0F8: .4byte gUnknown_80E7F54\n"
|
||||
"_0803B0FC: .4byte gFunctionScriptTable");
|
||||
}
|
||||
|
||||
void sub_803B100(s32 _id)
|
||||
{
|
||||
s32 id = (s16)_id;
|
||||
|
||||
MoveMenuToEntryId(&gUnknown_203B3FC->mh.m.input, id);
|
||||
sub_803B204();
|
||||
sub_803B284();
|
||||
}
|
||||
|
||||
u32 sub_803B120(void)
|
||||
{
|
||||
switch(GetKeyPress(&gUnknown_203B3FC->mh.m.input))
|
||||
{
|
||||
case 2:
|
||||
PlayMenuSoundEffect(1);
|
||||
return 2;
|
||||
case 1:
|
||||
return 3;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
if((MenuCursorUpdate(&gUnknown_203B3FC->mh.m.input, TRUE) != FALSE))
|
||||
{
|
||||
sub_803B204();
|
||||
sub_803B284();
|
||||
return 1;
|
||||
}
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
|
||||
s16 sub_803B168(void)
|
||||
{
|
||||
return gUnknown_203B3FC->unkA0[GET_CURRENT_MENU_ENTRY(gUnknown_203B3FC->mh.m.input)];
|
||||
}
|
||||
|
||||
UNUSED static void sub_803B18C(u8 r0)
|
||||
{
|
||||
gUnknown_203B3FC->mh.m.input.totalEntriesCount = 0xE5;
|
||||
MenuUpdatePagesData(&gUnknown_203B3FC->mh.m.input);
|
||||
sub_803B204();
|
||||
sub_803B284();
|
||||
|
||||
if(r0)
|
||||
AddMenuCursorSprite(&gUnknown_203B3FC->mh.m.input);
|
||||
}
|
||||
|
||||
void sub_803B1BC(void)
|
||||
{
|
||||
if(gUnknown_203B3FC)
|
||||
{
|
||||
gUnknown_203B3FC->mh.m.windows.id[gUnknown_203B3FC->mh.m.menuWinId] = gUnknown_80E7F3C;
|
||||
ResetUnusedInputStruct();
|
||||
ShowWindows(&gUnknown_203B3FC->mh.m.windows, TRUE, TRUE);
|
||||
MemoryFree(gUnknown_203B3FC);
|
||||
gUnknown_203B3FC = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_803B204(void)
|
||||
{
|
||||
gUnknown_203B3FC->mh.header.count = 1;
|
||||
gUnknown_203B3FC->mh.header.currId = 0;
|
||||
gUnknown_203B3FC->mh.header.width = 8;
|
||||
gUnknown_203B3FC->mh.header.f3 = 0;
|
||||
ResetUnusedInputStruct();
|
||||
ShowWindows(&gUnknown_203B3FC->mh.m.windows, TRUE, TRUE);
|
||||
UPDATE_MENU_WINDOW_HEIGHT(gUnknown_203B3FC->mh.m);
|
||||
}
|
||||
|
||||
static void sub_803B284(void)
|
||||
{
|
||||
s32 x, y, i;
|
||||
s32 pageNum;
|
||||
const ScriptRef *ptr;
|
||||
|
||||
CallPrepareTextbox_8008C54(gUnknown_203B3FC->mh.m.menuWinId);
|
||||
sub_80073B8(gUnknown_203B3FC->mh.m.menuWinId);
|
||||
PrintStringOnWindow(0xA, 0, "Script", gUnknown_203B3FC->mh.m.menuWinId, 0);
|
||||
|
||||
x = (gUnknown_203B3FC->mh.header.width * 8) - 2;
|
||||
pageNum = gUnknown_203B3FC->mh.m.input.currPage + 1;
|
||||
PrintNumOnWindow(x, 0, pageNum, 2, 7, gUnknown_203B3FC->mh.m.menuWinId);
|
||||
|
||||
// This line has no real effect. It's a magic 'fakematch' to fool agb into generating the same asm. It can be removed if you don't care about matching.
|
||||
if (x) { i = 0; }
|
||||
|
||||
for (i = 0; i < gUnknown_203B3FC->mh.m.input.currPageEntries; i++) {
|
||||
ptr = &gFunctionScriptTable[gUnknown_203B3FC->unkA0[(gUnknown_203B3FC->mh.m.input.currPage * gUnknown_203B3FC->mh.m.input.entriesPerPage) + i]];
|
||||
y = GetMenuEntryYCoord(&gUnknown_203B3FC->mh.m.input, i);
|
||||
PrintStringOnWindow(8, y, ptr->name, gUnknown_203B3FC->mh.m.menuWinId, 0);
|
||||
}
|
||||
|
||||
sub_80073E0(gUnknown_203B3FC->mh.m.menuWinId);
|
||||
}
|
||||
|
||||
2
src/code_803B050_unused1.c
Normal file
2
src/code_803B050_unused1.c
Normal file
@@ -0,0 +1,2 @@
|
||||
#include "global.h"
|
||||
#include "globaldata.h"
|
||||
2
src/code_803B050_unused2.c
Normal file
2
src/code_803B050_unused2.c
Normal file
@@ -0,0 +1,2 @@
|
||||
#include "global.h"
|
||||
#include "globaldata.h"
|
||||
2
src/code_803B050_unused3.c
Normal file
2
src/code_803B050_unused3.c
Normal file
@@ -0,0 +1,2 @@
|
||||
#include "global.h"
|
||||
#include "globaldata.h"
|
||||
273
src/code_803B344.c
Normal file
273
src/code_803B344.c
Normal file
@@ -0,0 +1,273 @@
|
||||
#include "global.h"
|
||||
#include "globaldata.h"
|
||||
#include "constants/dungeon.h"
|
||||
#include "constants/friend_area.h"
|
||||
#include "constants/item.h"
|
||||
#include "constants/monster.h"
|
||||
#include "constants/wonder_mail.h"
|
||||
#include "structs/str_802C39C.h"
|
||||
#include "code_803C1D0.h"
|
||||
#include "code_80958E8.h"
|
||||
#include "pokemon_mail.h"
|
||||
|
||||
static s32 sub_803B600(WonderMail *);
|
||||
extern s32 sub_803B628(WonderMail *);
|
||||
extern s32 sub_803B66C(WonderMail *);
|
||||
|
||||
|
||||
typedef struct unkStruct_80E7F94
|
||||
{
|
||||
/* 0x0 */ WonderMail mail;
|
||||
u8 *unk14;
|
||||
u8 *unk18;
|
||||
} unkStruct_80E7F94;
|
||||
|
||||
extern u8 sUnknown_80E8020[];
|
||||
extern u8 sUnknown_80E8038[];
|
||||
extern u8 sUnknown_80E8048[];
|
||||
extern u8 sUnknown_80E8060[];
|
||||
extern u8 sUnknown_80E8070[];
|
||||
extern u8 sUnknown_80E8088[];
|
||||
|
||||
const unkStruct_80E7F94 gUnknown_80E7F94[5] = {
|
||||
|
||||
{
|
||||
{0x5, MISSION_TYPE_FIND_ITEM, 0x4, DUNGEON_ODDITY_CAVE, 0xC, 0x123456, MONSTER_PIKACHU, MONSTER_CHIMECHO, ITEM_SITRUS_BERRY, ITEM1_EXTRA, ITEM_REVIVER_SEED, FRIEND_AREA_NONE},
|
||||
sUnknown_80E8088,
|
||||
sUnknown_80E8070,
|
||||
},
|
||||
{
|
||||
{0x5, MISSION_TYPE_FIND_ITEM, 0x4, DUNGEON_REMAINS_ISLAND, 0x11, 0x123456,MONSTER_CHARMANDER, MONSTER_TREECKO, ITEM_SITRUS_BERRY, ITEM1_EXTRA, ITEM_REVIVER_SEED, FRIEND_AREA_NONE},
|
||||
sUnknown_80E8060,
|
||||
sUnknown_80E8048,
|
||||
},
|
||||
{
|
||||
{0x5, MISSION_TYPE_FIND_ITEM, 0x4, DUNGEON_MARVELOUS_SEA, 0x11, 0x123456,MONSTER_BULBASAUR, MONSTER_TORCHIC, ITEM_SITRUS_BERRY, ITEM1_EXTRA, ITEM_REVIVER_SEED, FRIEND_AREA_NONE},
|
||||
sUnknown_80E8038,
|
||||
sUnknown_80E8020,
|
||||
},
|
||||
{
|
||||
{0x5, MISSION_TYPE_FIND_ITEM, 0x0, DUNGEON_FANTASY_STRAIT, 0x1B, 0x123456, MONSTER_SQUIRTLE, MONSTER_CYNDAQUIL, ITEM_SITRUS_BERRY, ITEM1_EXTRA, ITEM_REVIVER_SEED, FRIEND_AREA_NONE},
|
||||
NULL,
|
||||
NULL,
|
||||
},
|
||||
{
|
||||
{0x5, MISSION_TYPE_FIND_ITEM, 0x0, DUNGEON_SINISTER_WOODS, 0x9, 0x123456, MONSTER_CHIKORITA, MONSTER_TOTODILE, ITEM_SITRUS_BERRY, ITEM1_EXTRA, ITEM_REVIVER_SEED, FRIEND_AREA_NONE},
|
||||
NULL,
|
||||
NULL,
|
||||
},
|
||||
};
|
||||
|
||||
// TODO: unkStruct_803B344 isn't what we thought it is
|
||||
const unkStruct_80E7F94 *sub_803B344(s32 _r0)
|
||||
{
|
||||
u32 r0 = (u8)_r0;
|
||||
|
||||
return &gUnknown_80E7F94[r0];
|
||||
}
|
||||
|
||||
void sub_803B35C(WonderMail *mail, unkStruct_802C39C *param_2)
|
||||
{
|
||||
u8 uVar2;
|
||||
|
||||
sub_803C21C(mail, ¶m_2->unk18);
|
||||
switch(mail->unk2) {
|
||||
case '\x01':
|
||||
param_2->mailTitleType = 0;
|
||||
param_2->mailDescriptionType = 0;
|
||||
param_2->mailMissionType = MISSION_TYPE_SPECIAL_MISSION;
|
||||
param_2->unk18.rewardType = 5;
|
||||
break;
|
||||
case '\x02':
|
||||
param_2->mailTitleType = 1;
|
||||
param_2->mailDescriptionType = 1;
|
||||
param_2->mailMissionType = MISSION_TYPE_SPECIAL_MISSION;
|
||||
param_2->unk18.rewardType = 5;
|
||||
break;
|
||||
case '\x03':
|
||||
param_2->mailTitleType = 2;
|
||||
param_2->mailDescriptionType = 2;
|
||||
param_2->mailMissionType = MISSION_TYPE_SPECIAL_MISSION;
|
||||
param_2->unk18.rewardType = 5;
|
||||
break;
|
||||
case '\x04':
|
||||
param_2->mailTitleType = 3;
|
||||
param_2->mailDescriptionType = 3;
|
||||
param_2->mailMissionType = MISSION_TYPE_SPECIAL_MISSION;
|
||||
param_2->unk4C = sub_8096DD8();
|
||||
param_2->unk50 = sub_8096DE8();
|
||||
break;
|
||||
case '\x05':
|
||||
if (mail->missionType == MISSION_TYPE_RESCUE_CLIENT) {
|
||||
param_2->mailTitleType = '\v';
|
||||
param_2->mailMissionType = MISSION_TYPE_FIND_ITEM;
|
||||
}
|
||||
else {
|
||||
param_2->mailTitleType = '\f';
|
||||
param_2->mailMissionType = MISSION_TYPE_DELIVER_ITEM;
|
||||
}
|
||||
|
||||
param_2->mailDescriptionType = 4;
|
||||
break;
|
||||
case '\x06':
|
||||
if (mail->missionType == 3) {
|
||||
param_2->mailTitleType = '\v';
|
||||
param_2->mailMissionType = MISSION_TYPE_FIND_ITEM;
|
||||
}
|
||||
else {
|
||||
param_2->mailTitleType = '\f';
|
||||
param_2->mailMissionType = MISSION_TYPE_DELIVER_ITEM;
|
||||
}
|
||||
|
||||
param_2->mailDescriptionType = 5;
|
||||
break;
|
||||
case '\a':
|
||||
param_2->unk0[1] = sub_803B600(mail);
|
||||
if (param_2->unk0[1] == -1) {
|
||||
param_2->mailTitleType = 9;
|
||||
}
|
||||
else {
|
||||
param_2->mailTitleType = 4;
|
||||
}
|
||||
|
||||
param_2->mailDescriptionType = 6;
|
||||
param_2->mailMissionType = MISSION_TYPE_RESCUE_TARGET;
|
||||
break;
|
||||
case '\b':
|
||||
param_2->unk0[1] = sub_803B628(mail);
|
||||
if (param_2->unk0[1] == -1) {
|
||||
param_2->mailTitleType = 9;
|
||||
}
|
||||
else {
|
||||
param_2->mailTitleType = 5;
|
||||
}
|
||||
param_2->mailDescriptionType = 7;
|
||||
param_2->mailMissionType = MISSION_TYPE_RESCUE_TARGET;
|
||||
break;
|
||||
case '\t':
|
||||
param_2->unk0[1] = sub_803B66C(mail);
|
||||
if (param_2->unk0[1] == -1) {
|
||||
param_2->mailTitleType = 0xA;
|
||||
}
|
||||
else {
|
||||
param_2->mailTitleType = 6;
|
||||
}
|
||||
|
||||
param_2->mailDescriptionType = '\b';
|
||||
param_2->mailMissionType = MISSION_TYPE_ESCORT_CLIENT;
|
||||
break;
|
||||
default:
|
||||
switch(mail->missionType)
|
||||
{
|
||||
case 1:
|
||||
param_2->mailTitleType = '\t';
|
||||
param_2->mailDescriptionType = '\r';
|
||||
param_2->mailMissionType = MISSION_TYPE_RESCUE_TARGET;
|
||||
break;
|
||||
case 2:
|
||||
param_2->mailTitleType = '\n';
|
||||
param_2->mailDescriptionType = '\x0e';
|
||||
param_2->mailMissionType = MISSION_TYPE_ESCORT_CLIENT;
|
||||
break;
|
||||
|
||||
case 3:
|
||||
param_2->mailTitleType = '\v';
|
||||
param_2->mailDescriptionType = '\x0f';
|
||||
param_2->mailMissionType = MISSION_TYPE_FIND_ITEM;
|
||||
break;
|
||||
case 4:
|
||||
param_2->mailTitleType = '\f';
|
||||
param_2->mailDescriptionType = '\x10';
|
||||
param_2->mailMissionType = MISSION_TYPE_DELIVER_ITEM;
|
||||
break;
|
||||
default:
|
||||
param_2->mailTitleType = 8;
|
||||
param_2->mailDescriptionType = 0xC;
|
||||
param_2->mailMissionType = MISSION_TYPE_RESCUE_CLIENT;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
}
|
||||
param_2->dungeonSeed = &mail->dungeonSeed;
|
||||
param_2->playerName = NULL;
|
||||
uVar2 = 0;
|
||||
param_2->clientSpecies = mail->clientSpecies;
|
||||
param_2->targetSpecies = mail->targetSpecies;
|
||||
param_2->targetItem = mail->targetItem;
|
||||
switch(mail->mailType) {
|
||||
case 2:
|
||||
case 3:
|
||||
case 4:
|
||||
case 5:
|
||||
param_2->unk43 = 1;
|
||||
param_2->mailStatus = 1;
|
||||
break;
|
||||
case 7:
|
||||
param_2->unk43 = 0;
|
||||
param_2->mailStatus = 3;
|
||||
break;
|
||||
case 6:
|
||||
case 8:
|
||||
case 9:
|
||||
param_2->unk43 = 3;
|
||||
param_2->mailStatus = 2;
|
||||
break;
|
||||
|
||||
default:
|
||||
param_2->unk43 = uVar2;
|
||||
param_2->mailStatus = uVar2;
|
||||
break;
|
||||
|
||||
|
||||
}
|
||||
param_2->mail = mail;
|
||||
return;
|
||||
}
|
||||
|
||||
static s32 sub_803B600(WonderMail *mail)
|
||||
{
|
||||
s32 index;
|
||||
const unkStruct_80E9920 *ptr;
|
||||
|
||||
for(ptr = &gUnknown_80E9920[0], index = 0; index < ARRAY_COUNT_INT(gUnknown_80E9920); ptr++, index++)
|
||||
{
|
||||
if ((ptr->parentSpecies == mail->clientSpecies) && (ptr->childSpecies == mail->targetSpecies)) {
|
||||
return index;
|
||||
}
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
s32 sub_803B628(WonderMail *param_1)
|
||||
{
|
||||
const unkStruct_80E9F8C *ptr;
|
||||
int i;
|
||||
|
||||
ptr = &gUnknown_80E9F8C[0];
|
||||
for (i = 0; i < ARRAY_COUNT_INT(gUnknown_80E9F8C); ptr++, i++) {
|
||||
if (ptr->species.speciesA == param_1->clientSpecies && ptr->species.speciesB == param_1->targetSpecies)
|
||||
return i;
|
||||
if (ptr->species.speciesB == param_1->clientSpecies && ptr->species.speciesA == param_1->targetSpecies)
|
||||
return i;
|
||||
}
|
||||
return -1;
|
||||
|
||||
}
|
||||
|
||||
s32 sub_803B66C(WonderMail *param_1)
|
||||
{
|
||||
const struct PokemonPair *ptr;
|
||||
int i;
|
||||
|
||||
ptr = &gUnknown_80E8168[0];
|
||||
for (i = 0; i < ARRAY_COUNT_INT(gUnknown_80E8168); ptr++, i++) {
|
||||
if (ptr->speciesA == param_1->clientSpecies && ptr->speciesB == param_1->targetSpecies)
|
||||
return i;
|
||||
if (ptr->speciesB == param_1->clientSpecies && ptr->speciesA == param_1->targetSpecies)
|
||||
return i;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
@@ -176,7 +176,7 @@ bool8 sub_803C45C(WonderMail *mail)
|
||||
counter = 0;
|
||||
ptr = &gUnknown_80E9F8C[0];
|
||||
for (id = 0; id < ARRAY_COUNT_INT(gUnknown_80E9F8C); ptr++, id++) {
|
||||
if (sub_803C110(ptr->speciesA) && sub_803C110(ptr->speciesB)) {
|
||||
if (sub_803C110(ptr->species.speciesA) && sub_803C110(ptr->species.speciesB)) {
|
||||
stack[counter++] = id;
|
||||
}
|
||||
}
|
||||
@@ -186,12 +186,12 @@ bool8 sub_803C45C(WonderMail *mail)
|
||||
ptr = &gUnknown_80E9F8C[id];
|
||||
|
||||
if ((Rand32Bit() & 0x10)) {
|
||||
mail->clientSpecies = ptr->speciesA;
|
||||
mail->targetSpecies = ptr->speciesB;
|
||||
mail->clientSpecies = ptr->species.speciesA;
|
||||
mail->targetSpecies = ptr->species.speciesB;
|
||||
}
|
||||
else {
|
||||
mail->clientSpecies = ptr->speciesB;
|
||||
mail->targetSpecies = ptr->speciesA;
|
||||
mail->clientSpecies = ptr->species.speciesB;
|
||||
mail->targetSpecies = ptr->species.speciesA;
|
||||
}
|
||||
|
||||
mail->unk2 = 8;
|
||||
|
||||
@@ -334,26 +334,26 @@ void CreateRescueDescription(unkStruct_802C39C *param_1)
|
||||
y += 12;
|
||||
PrintStringOnWindow(10, y, gRewardText, param_1->unk0[0], 0);
|
||||
|
||||
switch (param_1->rewardType) {
|
||||
switch (param_1->unk18.rewardType) {
|
||||
case MONEY:
|
||||
sprintfStatic(buf_1, gMissionRewardText[param_1->rewardType], param_1->unk30);
|
||||
sprintfStatic(buf_1, gMissionRewardText[param_1->unk18.rewardType], param_1->unk18.moneyReward);
|
||||
PrintStringOnWindow(68, y, buf_1, param_1->unk0[0], 0);
|
||||
break;
|
||||
case MONEY_EXTRA:
|
||||
sprintfStatic(buf_1, gMissionRewardText[param_1->rewardType], param_1->unk30);
|
||||
sprintfStatic(buf_1, gMissionRewardText[param_1->unk18.rewardType], param_1->unk18.moneyReward);
|
||||
PrintStringOnWindow(68, y, buf_1, param_1->unk0[0], 0);
|
||||
break;
|
||||
case ITEM: // Item
|
||||
case ITEM_EXTRA: // Item + ?
|
||||
BufferItemName(gFormatBuffer_Items[0], param_1->rewardItem, NULL);
|
||||
sprintfStatic(buf_1, gMissionRewardText[param_1->rewardType], gFormatBuffer_Items[0]);
|
||||
BufferItemName(gFormatBuffer_Items[0], param_1->unk18.itemRewards[0], NULL);
|
||||
sprintfStatic(buf_1, gMissionRewardText[param_1->unk18.rewardType], gFormatBuffer_Items[0]);
|
||||
PrintStringOnWindow(68, y, buf_1, param_1->unk0[0], 0);
|
||||
break;
|
||||
case 4: // Friend Area
|
||||
PrintStringOnWindow(68, y, gMissionRewardText[param_1->rewardType], param_1->unk0[0], 0);
|
||||
PrintStringOnWindow(68, y, gMissionRewardText[param_1->unk18.rewardType], param_1->unk0[0], 0);
|
||||
break;
|
||||
default:
|
||||
PrintStringOnWindow(68, y, gMissionRewardText[param_1->rewardType], param_1->unk0[0], 0);
|
||||
PrintStringOnWindow(68, y, gMissionRewardText[param_1->unk18.rewardType], param_1->unk0[0], 0);
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
122
src/textbox.c
122
src/textbox.c
@@ -5,8 +5,17 @@
|
||||
#include "constants/monster.h"
|
||||
#include "code_800558C.h"
|
||||
#include "code_800D090.h"
|
||||
#include "code_801602C.h"
|
||||
#include "code_801B60C.h"
|
||||
#include "code_802DB28.h"
|
||||
#include "code_80958E8.h"
|
||||
#include "code_80A26CC.h"
|
||||
#include "luminous_cave.h"
|
||||
#include "makuhita_dojo1.h"
|
||||
#include "makuhita_dojo2.h"
|
||||
#include "music_util.h"
|
||||
#include "code_801D014.h"
|
||||
#include "code_803B050.h"
|
||||
#include "code_8099360.h"
|
||||
#include "credits2.h"
|
||||
#include "event_flag.h"
|
||||
@@ -24,9 +33,11 @@
|
||||
#include "kecleon_bros4.h"
|
||||
#include "main_loops.h"
|
||||
#include "memory.h"
|
||||
#include "palette_util.h"
|
||||
#include "personality_test1.h"
|
||||
#include "portrait_placement.h"
|
||||
#include "pokemon.h"
|
||||
#include "save_write.h"
|
||||
#include "string_format.h"
|
||||
#include "text_1.h"
|
||||
#include "text_2.h"
|
||||
@@ -102,91 +113,36 @@ static IWRAM_INIT struct Textbox *sTextbox = { NULL };
|
||||
|
||||
extern bool8 sub_802FCF0(void);
|
||||
bool8 IsTextboxOpen_809B40C(struct TextboxText *);
|
||||
extern s32 sub_803B168(void);
|
||||
extern void sub_803B1BC(void);
|
||||
|
||||
struct unkStruct_8096AF8
|
||||
{
|
||||
bool8 unk0;
|
||||
/* 0x2 */ s16 clientSpecies;
|
||||
/* 0x4 */ s16 targetSpecies;
|
||||
};
|
||||
|
||||
extern void sub_80A8EC0(u8 *, u32);
|
||||
Pokemon *sub_808D3BC(void);
|
||||
Pokemon *sub_808D3F8(void);
|
||||
Pokemon *sub_80A8D54(s16);
|
||||
void sub_80A7DDC(s16 *, s16*);
|
||||
u8 IsStarterMonster(s16);
|
||||
s16 sub_80A8BFC(s32);
|
||||
void sub_809B028(const MenuItem *, s32 a1_, s32 a2, s32 a3, s32 a4_, const char *text);
|
||||
bool8 sub_809B18C(s32 *sp);
|
||||
extern void sub_8099A34(s32 a0);
|
||||
extern void sub_8099A48(s32 a0);
|
||||
extern void GroundScriptLock(s16 index, s32 r1);
|
||||
extern void GroundScriptLockJumpZero(s16 index);
|
||||
extern u8 sub_802B2D4(void);
|
||||
extern void sub_802B3B8(void);
|
||||
extern u32 sub_802B358(void);
|
||||
void sub_8096AF8(struct unkStruct_8096AF8 *, u8 slotIndex, u8 dungeon);
|
||||
u8 sub_802DB28(u8, u8);
|
||||
void sub_8096BD0();
|
||||
void ScenarioCalc(s16 varId, s32 main, s32 sub);
|
||||
void MakuhitaDojo_Delete();
|
||||
u32 HandleMakuhitaDojoState();
|
||||
s16 sub_802FED0();
|
||||
u8 sub_801FB50();
|
||||
s32 sub_80160D8();
|
||||
s32 sub_801A8AC();
|
||||
void sub_801A928();
|
||||
s32 sub_8016080();
|
||||
void CleanConfirmNameMenu();
|
||||
u32 CreateConfirmNameMenu(u32 mode, u8 *name);
|
||||
void sub_8096BD0(void);
|
||||
bool8 DrawCredits(s32 creditsCategoryIndex, s32);
|
||||
u32 sub_8035574();
|
||||
void sub_803565C();
|
||||
u8 sub_8094D14();
|
||||
void sub_802465C();
|
||||
s32 sub_80246F0();
|
||||
s32 GetScriptVarValue(u8 *localVarBuf, s32 varId);
|
||||
bool8 HasEvolutionCompleted();
|
||||
void GroundMap_ExecuteEvent();
|
||||
void SetScriptVarValue(u8 *localVarBuf, s32 varId, s32 val);
|
||||
void CleanLuminousCave();
|
||||
u8 sub_80023E4();
|
||||
u8 CreateFriendListMenu();
|
||||
void PlayMenuSoundEffect();
|
||||
void sub_803565C(void);
|
||||
u8 sub_8094D14(void);
|
||||
void GroundMap_ExecuteEvent(s16, u32);
|
||||
bool8 sub_8015080(u8 *buffer, const MenuItem *menuItems);
|
||||
s32 sub_801516C();
|
||||
void sub_80151A4();
|
||||
s32 sub_8015198();
|
||||
u8 sub_80211AC();
|
||||
void sub_80213A0();
|
||||
u8 sub_802132C();
|
||||
u8 MakuhitaDojo_New();
|
||||
u8 sub_803B050();
|
||||
void sub_803B100();
|
||||
u8 sub_801B60C();
|
||||
u8 CreateKecleonBros();
|
||||
s16 sub_80A2654(s16);
|
||||
u8 sub_802F73C();
|
||||
u8 sub_802F848();
|
||||
s32 sub_802F8A0();
|
||||
void sub_802F974();
|
||||
s16 sub_802F90C();
|
||||
s16 sub_80A26B8();
|
||||
u8 sub_80302E8();
|
||||
s32 sub_80303AC();
|
||||
void sub_8030480();
|
||||
s16 sub_8030418();
|
||||
void PrepareSavePakWrite();
|
||||
u8 WriteSavePak();
|
||||
void FinishWriteSavePak();
|
||||
u8 CreateKangaskhanStorage();
|
||||
void sub_8011C28();
|
||||
u8 CreateHelperPelipperMenu();
|
||||
u8 CreateWigglytuffShop();
|
||||
u8 sub_8099328();
|
||||
void sub_8011C28(u32);
|
||||
bool8 CreateHelperPelipperMenu(s16);
|
||||
u32 sub_802E90C();
|
||||
void sub_802E918();
|
||||
u32 sub_80282DC(u8 *r0);
|
||||
@@ -198,27 +154,15 @@ extern u8 sub_802DFB0(void);
|
||||
extern void CleanThankYouMailPelipper(void);
|
||||
extern void CleanHelperPelipper(void);
|
||||
extern void sub_802E06C(void);
|
||||
extern void sub_802DC00(void);
|
||||
extern void sub_801B72C(void);
|
||||
extern u32 ThankYouMailPelipperCallback(void);
|
||||
extern u32 HelperPelipperCallback(void);
|
||||
extern u32 sub_802E890(void);
|
||||
extern u32 sub_802DFD8(void);
|
||||
extern u32 sub_802DBD4(void);
|
||||
extern u32 sub_803B120(void);
|
||||
extern u32 sub_801B6AC(void);
|
||||
u8 *sub_809B428(u8 *a0, s32 a1, u8 *a2);
|
||||
bool8 sub_809B648(void);
|
||||
void sub_809B57C(void);
|
||||
bool8 sub_809B1D4(s32 a0, u32 kind, s32 a2, u8 *a3);
|
||||
void sub_809C39C(void);
|
||||
void sub_809C3D8(void);
|
||||
void sub_809C504(void);
|
||||
void sub_809C464(void);
|
||||
void sub_809C478(void);
|
||||
void sub_809C414(void);
|
||||
void sub_809C4B0(void);
|
||||
void sub_809C550(void);
|
||||
|
||||
u8 *sub_809B428(u8 *a0, s32 a1, u8 *a2);
|
||||
bool8 sub_809B648(void);
|
||||
|
||||
#define TEXTBOX_FLAG_UNUSED_x2 0x2 // Unused, but set for almost all flag sets
|
||||
#define TEXTBOX_FLAG_INSTANT_TEXT 0x20
|
||||
@@ -305,6 +249,14 @@ static void ResetAllTextboxPortraits(void);
|
||||
static bool8 ScriptPrintTextInternal(struct TextboxText *ptr, u32 flags_, s32 a2_, const char *text);
|
||||
static u32 SetTextboxType(u32 textboxType, bool8 unused);
|
||||
static void ResetTextbox(void);
|
||||
static void sub_809C39C(void);
|
||||
static void sub_809C3D8(void);
|
||||
static void sub_809C504(void);
|
||||
static void sub_809C464(void);
|
||||
static void sub_809C478(void);
|
||||
static void sub_809C414(void);
|
||||
static void sub_809C4B0(void);
|
||||
static void sub_809C550(void);
|
||||
|
||||
void TextboxInit(void)
|
||||
{
|
||||
@@ -1980,7 +1932,7 @@ bool8 sub_809B648(void)
|
||||
return 0;
|
||||
}
|
||||
|
||||
void sub_809C39C(void)
|
||||
static void sub_809C39C(void)
|
||||
{
|
||||
sTextbox->unk430 = sub_801D178();
|
||||
if(sTextbox->unk430 == 3)
|
||||
@@ -1988,7 +1940,7 @@ void sub_809C39C(void)
|
||||
sub_801D1E0();
|
||||
}
|
||||
|
||||
void sub_809C3D8(void)
|
||||
static void sub_809C3D8(void)
|
||||
{
|
||||
sTextbox->unk430 = sub_801D178();
|
||||
if(sTextbox->unk430 == 3)
|
||||
@@ -1996,7 +1948,7 @@ void sub_809C3D8(void)
|
||||
sub_801D1E0();
|
||||
}
|
||||
|
||||
void sub_809C414(void)
|
||||
static void sub_809C414(void)
|
||||
{
|
||||
u8 val;
|
||||
|
||||
@@ -2015,14 +1967,14 @@ void sub_809C414(void)
|
||||
|
||||
}
|
||||
|
||||
void sub_809C464(void)
|
||||
static void sub_809C464(void)
|
||||
{
|
||||
DeleteTestTracker();
|
||||
sub_8001064();
|
||||
sub_809965C();
|
||||
}
|
||||
|
||||
void sub_809C478(void)
|
||||
static void sub_809C478(void)
|
||||
{
|
||||
s32 temp;
|
||||
s32 temp1;
|
||||
@@ -2040,13 +1992,13 @@ void sub_809C478(void)
|
||||
sub_80993C0(0);
|
||||
}
|
||||
|
||||
void sub_809C4B0(void)
|
||||
static void sub_809C4B0(void)
|
||||
{
|
||||
s16 scriptIndex_s16;
|
||||
s32 scriptIndex = -1;
|
||||
|
||||
if (sTextbox->unk430 == 0) {
|
||||
scriptIndex = (s16) sub_803B168();
|
||||
scriptIndex = sub_803B168();
|
||||
|
||||
ASM_MATCH_TRICK(sTextbox->unk5A4);
|
||||
scriptIndex_s16 = scriptIndex;
|
||||
@@ -2064,7 +2016,7 @@ void sub_809C4B0(void)
|
||||
GroundMap_ExecuteEvent(scriptIndex, 0);
|
||||
}
|
||||
|
||||
void sub_809C504(void)
|
||||
static void sub_809C504(void)
|
||||
{
|
||||
u8 temp;
|
||||
|
||||
@@ -2080,7 +2032,7 @@ void sub_809C504(void)
|
||||
sub_80282FC();
|
||||
}
|
||||
|
||||
void sub_809C550(void)
|
||||
static void sub_809C550(void)
|
||||
{
|
||||
u32 ret;
|
||||
s32 val;
|
||||
|
||||
@@ -212,7 +212,7 @@ void sub_803092C(void)
|
||||
local.clientSpecies = mail->clientSpecies;
|
||||
local.targetSpecies = mail->clientSpecies;
|
||||
local.targetItem = ITEM_NOTHING;
|
||||
local.rewardType = MONEY1;
|
||||
local.unk18.rewardType = MONEY1;
|
||||
|
||||
switch(mail->mailType)
|
||||
{
|
||||
|
||||
@@ -129,11 +129,11 @@ void sub_8030E48(void)
|
||||
stack.targetSpecies = mail->clientSpecies;
|
||||
stack.targetItem = ITEM_NOTHING;
|
||||
if (mail->item.id == ITEM_NOTHING) {
|
||||
stack.rewardType = MONEY1;
|
||||
stack.unk18.rewardType = MONEY1;
|
||||
}
|
||||
else {
|
||||
stack.rewardType = ITEM;
|
||||
stack.rewardItem = mail->item.id;
|
||||
stack.unk18.rewardType = ITEM;
|
||||
stack.unk18.itemRewards[0] = mail->item.id;
|
||||
}
|
||||
switch(mail->mailType)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user