summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2021-05-26 17:37:14 -0400
committerPikalaxALT <pikalaxalt@gmail.com>2021-05-26 17:37:14 -0400
commit059a3d1496fc192b35e3a6779195d28ad35cc499 (patch)
treec96dd950d0cabedb7af5b9173a56f80495029e78
parent7d10ba28169226bf00b741f7d01bc3386b383343 (diff)
Decompile FUN_0203FCF4
-rw-r--r--arm9/arm9.lsf1
-rw-r--r--arm9/asm/scrcmd_2.s278
-rw-r--r--arm9/modules/06/include/module_06.h6
-rw-r--r--arm9/modules/18/asm/module_18.s29
-rw-r--r--arm9/src/scrcmd_mart.c395
5 files changed, 420 insertions, 289 deletions
diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf
index 7a8f19f1..cceff08b 100644
--- a/arm9/arm9.lsf
+++ b/arm9/arm9.lsf
@@ -157,6 +157,7 @@ Static arm9
Object unk_02038C78.o
Object scrcmd.o
Object scrcmd_asm.o
+ Object scrcmd_mart.o
Object scrcmd_2.o
Object scrcmd_3.o
Object scrcmd_names.o
diff --git a/arm9/asm/scrcmd_2.s b/arm9/asm/scrcmd_2.s
index d7d98c66..418d10bf 100644
--- a/arm9/asm/scrcmd_2.s
+++ b/arm9/asm/scrcmd_2.s
@@ -1,284 +1,12 @@
.include "asm/macros.inc"
.include "global.inc"
- .section .rodata
-
- .global UNK_020F40A0
-UNK_020F40A0: ; 0x020F40A0
- .byte 0x8E, 0x00, 0x0B, 0x00, 0xFF, 0xFF
-
- .global UNK_020F40A6
-UNK_020F40A6: ; 0x020F40A6
- .byte 0x92, 0x00, 0x0E, 0x00, 0xFF, 0xFF
-
- .global UNK_020F40AC
-UNK_020F40AC: ; 0x020F40AC
- .byte 0x8C, 0x00, 0x0E, 0x00, 0x06, 0x00, 0xFF, 0xFF
-
- .global UNK_020F40B4
-UNK_020F40B4: ; 0x020F40B4
- .byte 0x8D, 0x00, 0x0E, 0x00, 0x06, 0x00, 0xFF, 0xFF
-
- .global UNK_020F40BC
-UNK_020F40BC: ; 0x020F40BC
- .byte 0x92, 0x00, 0x0E, 0x00, 0x06, 0x00, 0x08, 0x00, 0xFF, 0xFF
-
- .global UNK_020F40C6
-UNK_020F40C6: ; 0x020F40C6
- .byte 0x24, 0x00, 0x22, 0x00, 0x23, 0x00, 0x25, 0x00, 0xFF, 0xFF
-
- .global UNK_020F40D0
-UNK_020F40D0: ; 0x020F40D0
- .byte 0x90, 0x00, 0x0D, 0x00, 0x0F, 0x00, 0x0A, 0x00, 0xFF, 0xFF
-
- .global UNK_020F40DA
-UNK_020F40DA: ; 0x020F40DA
- .byte 0x92, 0x00, 0x06, 0x00, 0x08, 0x00, 0x0D, 0x00, 0xFF, 0xFF
-
- .global UNK_020F40E4
-UNK_020F40E4: ; 0x020F40E4
- .byte 0x92, 0x00, 0x08, 0x00, 0x0D, 0x00, 0x0F, 0x00, 0xFF, 0xFF
-
- .global UNK_020F40EE
-UNK_020F40EE: ; 0x020F40EE
- .byte 0x92, 0x00, 0x0D, 0x00, 0x0F, 0x00, 0x0A, 0x00, 0xFF, 0xFF
-
- .global UNK_020F40F8
-UNK_020F40F8: ; 0x020F40F8
- .byte 0x8F, 0x00, 0x0E, 0x00, 0x06, 0x00, 0x08, 0x00, 0xFF, 0xFF
-
- .global UNK_020F4102
-UNK_020F4102: ; 0x020F4102
- .byte 0x92, 0x00, 0x0F, 0x00, 0x0A, 0x00, 0x09, 0x00, 0xFF, 0xFF
-
- .global UNK_020F410C
-UNK_020F410C: ; 0x020F410C
- .byte 0x07, 0x00, 0x16, 0x00, 0x19, 0x00, 0x1A, 0x00, 0x1B, 0x00, 0xFF, 0xFF
-
- .global UNK_020F4118
-UNK_020F4118: ; 0x020F4118
- .byte 0x73, 0x00, 0x74, 0x00, 0x75, 0x00, 0x77, 0x00, 0x78, 0x00, 0x79, 0x00, 0xFF, 0xFF
-
- .global UNK_020F4126
-UNK_020F4126: ; 0x020F4126
- .byte 0x2E, 0x00, 0x2F, 0x00, 0x31, 0x00, 0x34, 0x00, 0x30, 0x00, 0x2D, 0x00, 0xFF, 0xFF
-
- .global UNK_020F4134
-UNK_020F4134: ; 0x020F4134
- .byte 0x6D, 0x01, 0x60, 0x01, 0x55, 0x01, 0x5D, 0x01, 0x7B, 0x01, 0x56, 0x01, 0xFF, 0xFF
-
- .global UNK_020F4142
-UNK_020F4142: ; 0x020F4142
- .byte 0x02, 0x00, 0x09, 0x00, 0x1E, 0x00, 0x25, 0x00, 0x2C, 0x00, 0x10, 0x00, 0x17, 0x00, 0xFF, 0xFF
-
- .global UNK_020F4152
-UNK_020F4152: ; 0x020F4152
- .byte 0x1B, 0x00, 0x22, 0x00, 0x29, 0x00, 0x30, 0x00, 0x06, 0x00, 0x0D, 0x00, 0x14, 0x00, 0xFF, 0xFF
-
- .global UNK_020F4162
-UNK_020F4162: ; 0x020F4162
- .byte 0x03, 0x00, 0x0A, 0x00, 0x1F, 0x00, 0x26, 0x00, 0x2D, 0x00, 0x11, 0x00, 0x18, 0x00, 0xFF, 0xFF
-
- .global UNK_020F4172
-UNK_020F4172: ; 0x020F4172
- .byte 0x04, 0x00, 0x19, 0x00, 0x20, 0x00, 0x27, 0x00, 0x2E, 0x00, 0x0B, 0x00, 0x12, 0x00, 0xFF, 0xFF
-
- .global UNK_020F4182
-UNK_020F4182: ; 0x020F4182
- .byte 0x9A, 0x01, 0x58, 0x01, 0x7D, 0x01, 0x5B, 0x01, 0x68, 0x01, 0x57, 0x01, 0x8D, 0x01, 0xFF, 0xFF
-
- .global UNK_020F4192
-UNK_020F4192: ; 0x020F4192
- .byte 0x01, 0x00, 0x08, 0x00, 0x1D, 0x00, 0x2B, 0x00, 0x0F, 0x00, 0x16, 0x00, 0x24, 0x00, 0xFF, 0xFF
-
- .global UNK_020F41A2
-UNK_020F41A2: ; 0x020F41A2
- .byte 0x1A, 0x00, 0x21, 0x00, 0x28, 0x00, 0x2F, 0x00, 0x05, 0x00, 0x0C, 0x00, 0x13, 0x00, 0xFF, 0xFF
-
- .global UNK_020F41B2
-UNK_020F41B2: ; 0x020F41B2
- .byte 0x07, 0x00, 0x31, 0x00, 0x1C, 0x00, 0x2A, 0x00, 0x0E, 0x00, 0x15, 0x00, 0x23, 0x00, 0xFF, 0xFF
-
- .global UNK_020F41C2
-UNK_020F41C2: ; 0x020F41C2
- .byte 0x0E, 0x00, 0x06, 0x00, 0x08, 0x00, 0x0D, 0x00, 0x0F, 0x00, 0x0A, 0x00, 0x09, 0x00, 0x0B, 0x00
- .byte 0xFF, 0xFF
-
- .global UNK_020F41D4
-UNK_020F41D4: ; 0x020F41D4
- .byte 0x3B, 0x00, 0x39, 0x00, 0x3A, 0x00, 0x37, 0x00, 0x38, 0x00, 0x3C, 0x00, 0x3D, 0x00, 0x3E, 0x00
- .byte 0xFF, 0xFF
-
- .global UNK_020F41E6
-UNK_020F41E6: ; 0x020F41E6
- .byte 0x11, 0x00, 0x1A, 0x00, 0x19, 0x00, 0x18, 0x00, 0x1C, 0x00, 0x12, 0x00, 0x16, 0x00, 0x13, 0x00
- .byte 0x14, 0x00, 0x15, 0x00, 0x1B, 0x00, 0xFF, 0xFF
-
- .global UNK_020F41FE
-UNK_020F41FE: ; 0x020F41FE
- .byte 0x04, 0x00, 0x03, 0x00, 0x02, 0x00, 0x4E, 0x00, 0x3F, 0x00, 0x4F, 0x00, 0x4C, 0x00, 0x4D, 0x00
- .byte 0x89, 0x00, 0x8A, 0x00, 0x8B, 0x00, 0x91, 0x00, 0xFF, 0xFF
-
- .global UNK_020F4218
-UNK_020F4218: ; 0x020F4218
- .byte 0x04, 0x00, 0x01, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x04, 0x00, 0x11, 0x00, 0x01, 0x00
- .byte 0x1A, 0x00, 0x02, 0x00, 0x19, 0x00, 0x04, 0x00, 0x18, 0x00, 0x05, 0x00, 0x17, 0x00, 0x06, 0x00
- .byte 0x1C, 0x00, 0x03, 0x00, 0x12, 0x00, 0x01, 0x00, 0x16, 0x00, 0x01, 0x00, 0x15, 0x00, 0x02, 0x00
- .byte 0x13, 0x00, 0x02, 0x00, 0x14, 0x00, 0x02, 0x00, 0x1B, 0x00, 0x04, 0x00, 0x4E, 0x00, 0x02, 0x00
- .byte 0x4F, 0x00, 0x02, 0x00, 0x4C, 0x00, 0x03, 0x00, 0x4D, 0x00, 0x04, 0x00
-
- .section .data
-
- .balign 4, 0
- .global UNK_02105DEC
-UNK_02105DEC: ; 0x02105DEC
- .word UNK_020F410C
- .word UNK_020F4118
-
- .global UNK_02105DF4
-UNK_02105DF4: ; 0x02105DF4
- .word UNK_020F4192
- .word UNK_020F4142
- .word UNK_020F4162
- .word UNK_020F4172
- .word UNK_020F41A2
- .word UNK_020F4152
- .word UNK_020F41B2
-
- .global UNK_02105E10
-UNK_02105E10: ; 0x02105E10
- .word UNK_020F40A6
- .word UNK_020F40B4
- .word UNK_020F40AC
- .word UNK_020F40BC
- .word UNK_020F40C6
- .word UNK_020F40F8
- .word UNK_020F40DA
- .word UNK_020F40E4
- .word UNK_020F41E6
- .word UNK_020F41FE
- .word UNK_020F41D4
- .word UNK_020F4126
- .word UNK_020F4182
- .word UNK_020F4134
- .word UNK_020F40EE
- .word UNK_020F40D0
- .word UNK_020F4102
- .word UNK_020F40A0
- .word UNK_020F41C2
+ .extern UNK_02105DEC
+ .extern UNK_02105DF4
+ .extern UNK_02105E10
.text
- thumb_func_start FUN_0203FCF4
-FUN_0203FCF4: ; 0x0203FCF4
- push {r4-r7, lr}
- sub sp, #0x84
- add r7, r0, #0x0
- bl ScriptReadHalfword
- add r1, r0, #0x0
- add r0, r7, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- bl VarGet
- mov r4, #0x0
- add r6, r4, #0x0
- add r5, r4, #0x0
-_0203FD10:
- add r0, r7, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- ldr r0, [r0, #0xc]
- bl Sav2_PlayerData_GetProfileAddr
- add r1, r5, #0x0
- bl PlayerProfile_TestBadgeFlag
- cmp r0, #0x1
- bne _0203FD2C
- add r0, r6, #0x1
- lsl r0, r0, #0x18
- lsr r6, r0, #0x18
-_0203FD2C:
- add r0, r5, #0x1
- lsl r0, r0, #0x18
- lsr r5, r0, #0x18
- cmp r5, #0x8
- blo _0203FD10
- cmp r6, #0x8
- bhi _0203FD70
- add r0, r6, r6
- add r0, pc
- ldrh r0, [r0, #0x6]
- lsl r0, r0, #0x10
- asr r0, r0, #0x10
- add pc, r0
-_0203FD46: ; jump table (using 16-bit offset)
- .short _0203FD58 - _0203FD46 - 2; case 0
- .short _0203FD5C - _0203FD46 - 2; case 1
- .short _0203FD5C - _0203FD46 - 2; case 2
- .short _0203FD60 - _0203FD46 - 2; case 3
- .short _0203FD60 - _0203FD46 - 2; case 4
- .short _0203FD64 - _0203FD46 - 2; case 5
- .short _0203FD64 - _0203FD46 - 2; case 6
- .short _0203FD68 - _0203FD46 - 2; case 7
- .short _0203FD6C - _0203FD46 - 2; case 8
-_0203FD58:
- mov r1, #0x1
- b _0203FD72
-_0203FD5C:
- mov r1, #0x2
- b _0203FD72
-_0203FD60:
- mov r1, #0x3
- b _0203FD72
-_0203FD64:
- mov r1, #0x4
- b _0203FD72
-_0203FD68:
- mov r1, #0x5
- b _0203FD72
-_0203FD6C:
- mov r1, #0x6
- b _0203FD72
-_0203FD70:
- mov r1, #0x1
-_0203FD72:
- ldr r0, _0203FDB4 ; =UNK_020F4218
- mov r2, #0x0
- add r6, sp, #0x4
-_0203FD78:
- lsl r3, r2, #0x2
- add r5, r0, r3
- ldrh r3, [r5, #0x2]
- cmp r1, r3
- blt _0203FD8E
- ldrh r5, [r5, #0x0]
- lsl r3, r4, #0x1
- strh r5, [r6, r3]
- add r3, r4, #0x1
- lsl r3, r3, #0x18
- lsr r4, r3, #0x18
-_0203FD8E:
- add r2, r2, #0x1
- lsl r2, r2, #0x18
- lsr r2, r2, #0x18
- cmp r2, #0x13
- blo _0203FD78
- ldr r1, _0203FDB8 ; =0x0000FFFF
- lsl r0, r4, #0x1
- add r2, sp, #0x4
- strh r1, [r2, r0]
- mov r3, #0x0
- str r3, [sp, #0x0]
- ldr r0, [r7, #0x74]
- add r7, #0x80
- ldr r1, [r7, #0x0]
- bl MOD06_0223D3D0
- mov r0, #0x1
- add sp, #0x84
- pop {r4-r7, pc}
- .balign 4
-_0203FDB4: .word UNK_020F4218
-_0203FDB8: .word 0x0000FFFF
-
thumb_func_start FUN_0203FDBC
FUN_0203FDBC: ; 0x0203FDBC
push {r3-r4, lr}
diff --git a/arm9/modules/06/include/module_06.h b/arm9/modules/06/include/module_06.h
new file mode 100644
index 00000000..f8d2c4fb
--- /dev/null
+++ b/arm9/modules/06/include/module_06.h
@@ -0,0 +1,6 @@
+#ifndef POKEDIAMOND_MODULE_06_H
+#define POKEDIAMOND_MODULE_06_H
+
+void MOD06_0223D3D0(struct UnkStruct_0204639C *, struct UnkSavStruct80 *, u16 *, u32, u32);
+
+#endif //POKEDIAMOND_MODULE_06_H
diff --git a/arm9/modules/18/asm/module_18.s b/arm9/modules/18/asm/module_18.s
index 15b80554..db648255 100644
--- a/arm9/modules/18/asm/module_18.s
+++ b/arm9/modules/18/asm/module_18.s
@@ -33727,7 +33727,7 @@ MOD18_02249BA8: ; 0x02249BA8
bl MOD18_0223D678
ldr r1, _02249CB0 ; =0x0000023B
mov r2, #0
- bl MOD18_0224DB80
+ bl MOD18_LoadMsgBank
add r0, r6, #1
mov r1, #4
bl ListMenuItems_ctor
@@ -34194,7 +34194,7 @@ MOD18_02249F8C: ; 0x02249F8C
bl MOD18_0223D678
ldr r1, _0224A0D4 ; =0x00000239
mov r2, #0
- bl MOD18_0224DB80
+ bl MOD18_LoadMsgBank
add r0, r6, #1
mov r1, #4
bl ListMenuItems_ctor
@@ -34643,7 +34643,7 @@ MOD18_0224A360: ; 0x0224A360
bl MOD18_0223D678
ldr r1, _0224A464 ; =0x00000239
mov r2, #0
- bl MOD18_0224DB80
+ bl MOD18_LoadMsgBank
add r0, r6, #1
mov r1, #4
bl ListMenuItems_ctor
@@ -35581,7 +35581,7 @@ MOD18_0224AB08: ; 0x0224AB08
bl MOD18_0223D678
ldr r1, _0224AC0C ; =0x00000237
mov r2, #0
- bl MOD18_0224DB80
+ bl MOD18_LoadMsgBank
add r0, r6, #1
mov r1, #4
bl ListMenuItems_ctor
@@ -37823,7 +37823,7 @@ MOD18_0224BD54: ; 0x0224BD54
mov r1, #0x91
lsl r1, r1, #2
mov r2, #1
- bl MOD18_0224DB80
+ bl MOD18_LoadMsgBank
ldr r0, _0224BDE4 ; =0x00000246
mov r1, #0
strb r1, [r4, r0]
@@ -39123,7 +39123,7 @@ MOD18_0224C7D4: ; 0x0224C7D4
bl MOD18_0223D678
ldr r1, _0224C938 ; =0x0000023B
mov r2, #0
- bl MOD18_0224DB80
+ bl MOD18_LoadMsgBank
b _0224C876
_0224C83C:
cmp r0, #0
@@ -39137,7 +39137,7 @@ _0224C83C:
bl MOD18_0223D678
ldr r1, _0224C93C ; =0x00000237
mov r2, #0
- bl MOD18_0224DB80
+ bl MOD18_LoadMsgBank
b _0224C876
_0224C85C:
mov r0, #0
@@ -39149,7 +39149,7 @@ _0224C85C:
bl MOD18_0223D678
ldr r1, _0224C940 ; =0x00000239
mov r2, #0
- bl MOD18_0224DB80
+ bl MOD18_LoadMsgBank
_0224C876:
mov r7, #0x21
mov r4, #0
@@ -39394,7 +39394,7 @@ MOD18_0224CA58: ; 0x0224CA58
bl MOD18_0223D658
ldr r1, _0224CA90 ; =0x00000241
mov r2, #1
- bl MOD18_0224DB80
+ bl MOD18_LoadMsgBank
bl MOD18_0223D658
add r4, r0, #0
bl FUN_02031190
@@ -41034,7 +41034,7 @@ _0224D7BC:
bl MOD18_0223D658
ldr r1, _0224D80C ; =0x00000245
mov r2, #1
- bl MOD18_0224DB80
+ bl MOD18_LoadMsgBank
mov r0, #4
bl FUN_02025964
add r6, r0, #0
@@ -41468,8 +41468,9 @@ MOD18_0224DB5C: ; 0x0224DB5C
pop {r4, pc}
thumb_func_end MOD18_0224DB5C
- thumb_func_start MOD18_0224DB80
-MOD18_0224DB80: ; 0x0224DB80
+ thumb_func_start MOD18_LoadMsgBank
+MOD18_LoadMsgBank: ; 0x0224DB80
+ ; void MOD18_LoadMsgBank(struct MOD18Work * work, s32 bank, u32 async)
push {r4, r5, r6, lr}
add r5, r0, #0
ldr r0, [r5, #0x2c]
@@ -41492,7 +41493,7 @@ MOD18_0224DB80: ; 0x0224DB80
_0224DBAC:
pop {r4, r5, r6, pc}
.align 2, 0
- thumb_func_end MOD18_0224DB80
+ thumb_func_end MOD18_LoadMsgBank
thumb_func_start MOD18_0224DBB0
MOD18_0224DBB0: ; 0x0224DBB0
@@ -42917,7 +42918,7 @@ _0224E5CE:
bl MOD18_0223D678
ldr r1, _0224E68C ; =0x00000237
mov r2, #0
- bl MOD18_0224DB80
+ bl MOD18_LoadMsgBank
ldr r4, _0224E698 ; =0x022507D0
add r3, sp, #0x30
add r2, r3, #0
diff --git a/arm9/src/scrcmd_mart.c b/arm9/src/scrcmd_mart.c
new file mode 100644
index 00000000..8f49e0e4
--- /dev/null
+++ b/arm9/src/scrcmd_mart.c
@@ -0,0 +1,395 @@
+#include "global.h"
+#include "constants/items.h"
+#include "scrcmd.h"
+#include "module_06.h"
+
+static const u16 UNK_020F40A6[] = {
+ ITEM_AIR_MAIL,
+ ITEM_HEAL_BALL,
+ 0xFFFF
+};
+
+static const u16 UNK_020F40A0[] = {
+ ITEM_STEEL_MAIL,
+ ITEM_LUXURY_BALL,
+ 0xFFFF
+};
+
+static const u16 UNK_020F40B4[] = {
+ ITEM_TUNNEL_MAIL,
+ ITEM_HEAL_BALL,
+ ITEM_NET_BALL,
+ 0xFFFF
+};
+
+static const u16 UNK_020F40AC[] = {
+ ITEM_BLOOM_MAIL,
+ ITEM_HEAL_BALL,
+ ITEM_NET_BALL,
+ 0xFFFF
+};
+
+static const u16 UNK_020F40BC[] = {
+ ITEM_AIR_MAIL,
+ ITEM_HEAL_BALL,
+ ITEM_NET_BALL,
+ ITEM_NEST_BALL,
+ 0xFFFF
+};
+
+static const u16 UNK_020F40F8[] = {
+ ITEM_HEART_MAIL,
+ ITEM_HEAL_BALL,
+ ITEM_NET_BALL,
+ ITEM_NEST_BALL,
+ 0xFFFF
+};
+
+static const u16 UNK_020F4102[] = {
+ ITEM_AIR_MAIL,
+ ITEM_QUICK_BALL,
+ ITEM_TIMER_BALL,
+ ITEM_REPEAT_BALL,
+ 0xFFFF
+};
+
+static const u16 UNK_020F40DA[] = {
+ ITEM_AIR_MAIL,
+ ITEM_NET_BALL,
+ ITEM_NEST_BALL,
+ ITEM_DUSK_BALL,
+ 0xFFFF
+};
+
+static const u16 UNK_020F40EE[] = {
+ ITEM_AIR_MAIL,
+ ITEM_DUSK_BALL,
+ ITEM_QUICK_BALL,
+ ITEM_TIMER_BALL,
+ 0xFFFF
+};
+
+static const u16 UNK_020F40D0[] = {
+ ITEM_SNOW_MAIL,
+ ITEM_DUSK_BALL,
+ ITEM_QUICK_BALL,
+ ITEM_TIMER_BALL,
+ 0xFFFF
+};
+
+static const u16 UNK_020F40C6[] = {
+ ITEM_HEAL_POWDER,
+ ITEM_ENERGYPOWDER,
+ ITEM_ENERGY_ROOT,
+ ITEM_REVIVAL_HERB,
+ 0xFFFF
+};
+
+static const u16 UNK_020F40E4[] = {
+ ITEM_AIR_MAIL,
+ ITEM_NEST_BALL,
+ ITEM_DUSK_BALL,
+ ITEM_QUICK_BALL,
+ 0xFFFF
+};
+
+static const u16 UNK_020F410C[] = {
+ ITEM_DIVE_BALL,
+ ITEM_PARLYZ_HEAL,
+ ITEM_HYPER_POTION,
+ ITEM_SUPER_POTION,
+ ITEM_FULL_HEAL,
+ 0xFFFF
+};
+
+static const u16 UNK_020F4118[] = {
+ 115,
+ 116,
+ 117,
+ 119,
+ 120,
+ 121,
+ 0xFFFF
+};
+
+static const u16 UNK_020F4126[] = {
+ ITEM_PROTEIN,
+ ITEM_IRON,
+ ITEM_CALCIUM,
+ ITEM_ZINC,
+ ITEM_CARBOS,
+ ITEM_HP_UP,
+ 0xFFFF
+};
+
+static const u16 UNK_020F4134[] = {
+ ITEM_TM38,
+ ITEM_TM25,
+ ITEM_TM14,
+ ITEM_TM22,
+ ITEM_TM52,
+ ITEM_TM15,
+ 0xFFFF
+};
+
+static const u16 UNK_020F41B2[] = {
+ ITEM_DIVE_BALL,
+ ITEM_CALCIUM,
+ ITEM_REVIVE,
+ ITEM_LAVA_COOKIE,
+ ITEM_HEAL_BALL,
+ ITEM_AWAKENING,
+ ITEM_ENERGY_ROOT,
+ 0xFFFF
+};
+
+static const u16 UNK_020F4142[] = {
+ ITEM_ULTRA_BALL,
+ ITEM_REPEAT_BALL,
+ ITEM_FRESH_WATER,
+ ITEM_REVIVAL_HERB,
+ ITEM_SACRED_ASH,
+ ITEM_CHERISH_BALL,
+ ITEM_FULL_RESTORE,
+ 0xFFFF
+};
+
+static const u16 UNK_020F4152[] = {
+ ITEM_FULL_HEAL,
+ ITEM_ENERGYPOWDER,
+ ITEM_MAX_ELIXIR,
+ ITEM_CARBOS,
+ ITEM_NET_BALL,
+ ITEM_DUSK_BALL,
+ ITEM_ICE_HEAL,
+ 0xFFFF
+};
+
+static const u16 UNK_020F4162[] = {
+ ITEM_GREAT_BALL,
+ ITEM_TIMER_BALL,
+ ITEM_SODA_POP,
+ ITEM_ETHER,
+ ITEM_HP_UP,
+ ITEM_POTION,
+ ITEM_MAX_POTION,
+ 0xFFFF
+};
+
+static const u16 UNK_020F4172[] = {
+ ITEM_POKE_BALL,
+ ITEM_HYPER_POTION,
+ ITEM_LEMONADE,
+ ITEM_MAX_ETHER,
+ ITEM_PROTEIN,
+ ITEM_LUXURY_BALL,
+ ITEM_ANTIDOTE,
+ 0xFFFF
+};
+
+static const u16 UNK_020F4182[] = {
+ ITEM_TM83,
+ ITEM_TM17,
+ ITEM_TM54,
+ ITEM_TM20,
+ ITEM_TM33,
+ ITEM_TM16,
+ ITEM_TM70,
+ 0xFFFF
+};
+
+static const u16 UNK_020F4192[] = {
+ ITEM_MASTER_BALL,
+ ITEM_NEST_BALL,
+ ITEM_MAX_REVIVE,
+ ITEM_BERRY_JUICE,
+ ITEM_QUICK_BALL,
+ ITEM_PARLYZ_HEAL,
+ ITEM_HEAL_POWDER,
+ 0xFFFF
+};
+
+static const u16 UNK_020F41A2[] = {
+ ITEM_SUPER_POTION,
+ ITEM_MOOMOO_MILK,
+ ITEM_ELIXIR,
+ ITEM_IRON,
+ ITEM_SAFARI_BALL,
+ ITEM_PREMIER_BALL,
+ ITEM_BURN_HEAL,
+ 0xFFFF
+};
+
+static const u16 UNK_020F41D4[] = {
+ ITEM_X_SPEED,
+ ITEM_X_ATTACK,
+ ITEM_X_DEFENSE,
+ ITEM_GUARD_SPEC_,
+ ITEM_DIRE_HIT,
+ ITEM_X_ACCURACY,
+ ITEM_X_SPECIAL,
+ ITEM_X_SP__DEF,
+ 0xFFFF
+};
+
+static const u16 UNK_020F41C2[] = {
+ ITEM_HEAL_BALL,
+ ITEM_NET_BALL,
+ ITEM_NEST_BALL,
+ ITEM_DUSK_BALL,
+ ITEM_QUICK_BALL,
+ ITEM_TIMER_BALL,
+ ITEM_REPEAT_BALL,
+ ITEM_LUXURY_BALL,
+ 0xFFFF
+};
+
+static const u16 UNK_020F41E6[] = {
+ ITEM_POTION,
+ ITEM_SUPER_POTION,
+ ITEM_HYPER_POTION,
+ ITEM_MAX_POTION,
+ ITEM_REVIVE,
+ ITEM_ANTIDOTE,
+ ITEM_PARLYZ_HEAL,
+ ITEM_BURN_HEAL,
+ ITEM_ICE_HEAL,
+ ITEM_AWAKENING,
+ ITEM_FULL_HEAL,
+ 0xFFFF
+};
+
+static const u16 UNK_020F41FE[] = {
+ ITEM_POKE_BALL,
+ ITEM_GREAT_BALL,
+ ITEM_ULTRA_BALL,
+ ITEM_ESCAPE_ROPE,
+ ITEM_POKE_DOLL,
+ ITEM_REPEL,
+ ITEM_SUPER_REPEL,
+ ITEM_MAX_REPEL,
+ ITEM_GRASS_MAIL,
+ ITEM_FLAME_MAIL,
+ ITEM_BUBBLE_MAIL,
+ ITEM_SPACE_MAIL,
+ 0xFFFF
+};
+
+static const u16 UNK_020F4218[][2] = {
+ // Balls
+ {ITEM_POKE_BALL, 1},
+ {ITEM_GREAT_BALL, 3},
+ {ITEM_ULTRA_BALL, 4},
+ // Potions
+ {ITEM_POTION, 1},
+ {ITEM_SUPER_POTION, 2},
+ {ITEM_HYPER_POTION, 4},
+ {ITEM_MAX_POTION, 5},
+ {ITEM_FULL_RESTORE, 6},
+ // Revives
+ {ITEM_REVIVE, 3},
+ // Status heal
+ {ITEM_ANTIDOTE, 1},
+ {ITEM_PARLYZ_HEAL, 1},
+ {ITEM_AWAKENING, 2},
+ {ITEM_BURN_HEAL, 2},
+ {ITEM_ICE_HEAL, 2},
+ {ITEM_FULL_HEAL, 4},
+ // Dungeon items
+ {ITEM_ESCAPE_ROPE, 2},
+ // Repels
+ {ITEM_REPEL, 2},
+ {ITEM_SUPER_REPEL, 3},
+ {ITEM_MAX_REPEL, 4},
+};
+
+const u16 *UNK_02105DEC[] = {
+ UNK_020F410C,
+ UNK_020F4118,
+};
+
+const u16 *UNK_02105DF4[] = {
+ UNK_020F4192,
+ UNK_020F4142,
+ UNK_020F4162,
+ UNK_020F4172,
+ UNK_020F41A2,
+ UNK_020F4152,
+ UNK_020F41B2,
+};
+
+const u16 *UNK_02105E10[] = {
+ UNK_020F40A6,
+ UNK_020F40B4,
+ UNK_020F40AC,
+ UNK_020F40BC,
+ UNK_020F40C6,
+ UNK_020F40F8,
+ UNK_020F40DA,
+ UNK_020F40E4,
+ UNK_020F41E6,
+ UNK_020F41FE,
+ UNK_020F41D4,
+ UNK_020F4126,
+ UNK_020F4182,
+ UNK_020F4134,
+ UNK_020F40EE,
+ UNK_020F40D0,
+ UNK_020F4102,
+ UNK_020F40A0,
+ UNK_020F41C2,
+};
+
+THUMB_FUNC BOOL FUN_0203FCF4(struct ScriptContext * ctx)
+{
+ u16 whichMart = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
+ s32 param;
+ u16 martItems[64];
+ u8 martIdx = 0;
+ u8 badgeCount = 0;
+ u8 i;
+
+ for (i = 0; i < 8; i++)
+ {
+ if (PlayerProfile_TestBadgeFlag(Sav2_PlayerData_GetProfileAddr(ctx->unk80->saveBlock2), i) == TRUE)
+ badgeCount++;
+ }
+ switch (badgeCount)
+ {
+ case 0:
+ param = 1;
+ break;
+ case 1:
+ case 2:
+ param = 2;
+ break;
+ case 3:
+ case 4:
+ param = 3;
+ break;
+ case 5:
+ case 6:
+ param = 4;
+ break;
+ case 7:
+ param = 5;
+ break;
+ case 8:
+ param = 6;
+ break;
+ default:
+ param = 1;
+ break;
+ }
+ for (i = 0; i < NELEMS(UNK_020F4218); i++)
+ {
+ if (param >= UNK_020F4218[i][1])
+ {
+ martItems[martIdx] = UNK_020F4218[i][0];
+ martIdx++;
+ }
+ }
+ martItems[martIdx] = 0xFFFF; // terminator
+ MOD06_0223D3D0(ctx->unk74, ctx->unk80, martItems, 0, 0);
+ return TRUE;
+}