Preproc all the data (#35)

* actually put C files in preproc and use it for formatted type names. Cleaned up makefile like pokeemerald

* finish adding all colors and text macros to charmap

* preproc all the data and use text macros

* move all of wonder_mail_1 to src

* unify wonder_mail and wonder_mail_mid

* small code cleanup

* name two more exclusive pokemon funcs

* decomp a few more wonder mail funcs

* clean up MemoryFill call

* doc more of wonder mail in main menu
This commit is contained in:
Seth Barberee
2021-04-05 22:05:09 -05:00
committed by GitHub
parent 22fec43f18
commit d316d1e359
23 changed files with 1180 additions and 1332 deletions

View File

@@ -69,11 +69,27 @@ CPPFLAGS := -I tools/agbcc/include -iquote include -nostdinc -undef
#### Files ####
BUILD_NAME = red
BUILD_DIR := build/pmd_$(BUILD_NAME)
ROM := pmd_$(BUILD_NAME).gba
ELF := $(ROM:%.gba=%.elf)
MAP := $(ROM:%.gba=%.map)
BUILD_DIR := build/pmd_$(BUILD_NAME)
C_SUBDIR = src
GFLIB_SUBDIR = gflib
ASM_SUBDIR = asm
DATA_SRC_SUBDIR = src/data
DATA_ASM_SUBDIR = data
SONG_SUBDIR = sound/songs
MID_SUBDIR = sound/songs/midi
SAMPLE_SUBDIR = sound/direct_sound_samples
C_BUILDDIR = $(BUILD_DIR)/$(C_SUBDIR)
GFLIB_BUILDDIR = $(BUILD_DIR)/$(GFLIB_SUBDIR)
ASM_BUILDDIR = $(BUILD_DIR)/$(ASM_SUBDIR)
DATA_ASM_BUILDDIR = $(BUILD_DIR)/$(DATA_ASM_SUBDIR)
SONG_BUILDDIR = $(BUILD_DIR)/$(SONG_SUBDIR)
MID_BUILDDIR = $(BUILD_DIR)/$(MID_SUBDIR)
C_SOURCES := $(wildcard src/*.c)
ASM_SOURCES := $(wildcard asm/*.s data/*.s)
@@ -88,21 +104,20 @@ SUBDIRS := $(sort $(dir $(ALL_OBJECTS)))
LD_SCRIPT := $(BUILD_DIR)/ld_script.ld
# Special configurations required for lib files
$(BUILD_DIR)/src/agb_flash.o : CC1FLAGS := -O -mthumb-interwork
$(BUILD_DIR)/src/agb_flash_1m.o: CC1FLAGS := -O -mthumb-interwork
$(BUILD_DIR)/src/agb_flash_mx.o: CC1FLAGS := -O -mthumb-interwork
$(C_BUILDDIR)/agb_flash.o : CC1FLAGS := -O -mthumb-interwork
$(C_BUILDDIR)/agb_flash_1m.o: CC1FLAGS := -O -mthumb-interwork
$(C_BUILDDIR)/agb_flash_mx.o: CC1FLAGS := -O -mthumb-interwork
$(BUILD_DIR)/src/m4a.o: CC1 := tools/agbcc/bin/old_agbcc
$(C_BUILDDIR)/m4a.o: CC1 := tools/agbcc/bin/old_agbcc
#### Main Rules ####
# Disable dependency scanning when NODEP is used for quick building
# TODO enable when NODEP is fixed
#ifeq ($(NODEP),)
#$(BUILD_DIR)/src/%.o: C_DEP = $(shell $(SCANINC) -I include src/$(*F).c)
#$(BUILD_DIR)/asm/%.o: ASM_DEP = $(shell $(SCANINC) asm/$(*F).s)
#$(BUILD_DIR)/data/%.o: ASM_DEP = $(shell $(SCANINC) data/$(*F).s)
#endif
ifeq ($(NODEP),1)
$(C_BUILDDIR)/%.o: C_DEP :=
else
$(C_BUILDDIR)/%.o: C_DEP = $(shell [[ -f $(C_SUBDIR)/$*.c ]] && $(SCANINC) -I include -I tools/agbcc/include -I gflib $(C_SUBDIR)/$*.c)
endif
ALL_BUILDS := red
@@ -110,6 +125,7 @@ ALL_BUILDS := red
.PHONY: all clean tidy libagbsyscall tools clean-tools $(TOOLDIRS)
MAKEFLAGS += --no-print-directory
# Secondary expansion is required for dependency variables in object rules.
.SECONDEXPANSION:
# Clear the default suffixes
@@ -133,7 +149,6 @@ tools: $(TOOLDIRS)
$(TOOLDIRS):
@$(MAKE) -C $@ CC=$(HOSTCC) CXX=$(HOSTCXX)
compare: all
@$(SHA1SUM) $(BUILD_NAME).sha1
@@ -144,33 +159,34 @@ clean-tools:
@$(foreach tooldir,$(TOOLDIRS),$(MAKE) clean -C $(tooldir);)
tidy:
$(RM) $(ALL_BUILDS:%=pmd_%{.gba,.elf,.map})
$(RM) -r build
$(RM) -f $(ROM) $(ELF) $(MAP)
$(RM) -r $(BUILD_DIR)
@$(MAKE) clean -C libagbsyscall
$(ROM): %.gba: %.elf tools
$(OBJCOPY) -O binary --gap-fill 0xFF --pad-to 0xA000000 $< $@
$(GBAFIX) $@ -p -t"$(TITLE)" -c$(GAME_CODE) -m$(MAKER_CODE) -r$(REVISION) --silent
$(C_BUILDDIR)/%.o: $(C_SUBDIR)/%.c $$(C_DEP)
@$(CPP) $(CPPFLAGS) $< -o $(C_BUILDDIR)/$*.i
@$(PREPROC) $(C_BUILDDIR)/$*.i charmap.txt | $(CC1) $(CC1FLAGS) -o $(C_BUILDDIR)/$*.s
@echo -e ".text\n\t.align\t2, 0\n" >> $(C_BUILDDIR)/$*.s
$(AS) $(ASFLAGS) -o $@ $(C_BUILDDIR)/$*.s
%.elf: $(LD_SCRIPT) $(ALL_OBJECTS) $(LIBC) libagbsyscall
cd $(BUILD_DIR) && $(LD) -T ld_script.ld -Map ../../$(MAP) -o ../../$@ $(LIB)
$(DATA_ASM_BUILDDIR)/%.o: $(DATA_ASM_SUBDIR)/%.s $$(ASM_DEP)
$(PREPROC) $< charmap.txt | $(CPP) -I include | $(AS) $(ASFLAGS) -o $@
$(ASM_BUILDDIR)/%.o: $(ASM_SUBDIR)/%.s $$(ASM_DEP)
$(AS) $(ASFLAGS) $< -o $@
libagbsyscall:
@$(MAKE) -C libagbsyscall TOOLCHAIN=$(TOOLCHAIN)
$(LD_SCRIPT): ld_script.txt $(BUILD_DIR)/sym_ewram.ld $(BUILD_DIR)/sym_ewram2.ld $(BUILD_DIR)/sym_iwram.ld
cd $(BUILD_DIR) && sed -e "s#tools/#../../tools/#g" ../../ld_script.txt >ld_script.ld
$(BUILD_DIR)/sym_%.ld: sym_%.txt
$(CPP) -P $(CPPFLAGS) $< | sed -e "s#tools/#../../tools/#g" > $@
$(C_OBJECTS): $(BUILD_DIR)/%.o: %.c $$(C_DEP)
@$(CPP) $(CPPFLAGS) $< -o $(BUILD_DIR)/$*.i
@$(CC1) $(CC1FLAGS) $(BUILD_DIR)/$*.i -o $(BUILD_DIR)/$*.s
@printf ".text\n\t.align\t2, 0\n" >> $(BUILD_DIR)/$*.s
$(AS) $(ASFLAGS) -o $@ $(BUILD_DIR)/$*.s
$(ELF): $(LD_SCRIPT) $(ALL_OBJECTS) $(LIBC) libagbsyscall
cd $(BUILD_DIR) && $(LD) -T ld_script.ld -Map ../../$(MAP) -o ../../$@ $(LIB)
$(BUILD_DIR)/data/%.o: data/%.s $$(ASM_DEP)
$(PREPROC) $< charmap.txt | $(CPP) -I include | $(AS) $(ASFLAGS) -o $@
$(ROM): %.gba: $(ELF) tools
$(OBJCOPY) -O binary --gap-fill 0xFF --pad-to 0xA000000 $< $@
$(GBAFIX) $@ -p -t"$(TITLE)" -c$(GAME_CODE) -m$(MAKER_CODE) -r$(REVISION) --silent
$(BUILD_DIR)/%.o: %.s $$(ASM_DEP)
$(AS) $(ASFLAGS) $< -o $@
libagbsyscall:
@$(MAKE) -C libagbsyscall TOOLCHAIN=$(TOOLCHAIN)

View File

@@ -39946,7 +39946,7 @@ _080665BE:
b _08066704
_080665D0:
adds r0, r6, 0
bl sub_80981DC
bl IsExclusivePokemonUnlocked
lsls r0, 24
cmp r0, 0
bne _080665DE
@@ -48621,7 +48621,7 @@ sub_806AA0C:
lsls r1, 24
lsrs r5, r1, 24
adds r0, r4, 0
bl sub_80981DC
bl IsExclusivePokemonUnlocked
lsls r0, 24
cmp r0, 0
beq _0806AA56

View File

@@ -8841,7 +8841,7 @@ _080A1CCC:
cmp r5, r0
beq _080A1CA4
adds r0, r5, 0
bl sub_80981DC
bl IsExclusivePokemonUnlocked
lsls r0, 24
cmp r0, 0
beq _080A1CA4

View File

@@ -338,8 +338,8 @@ _080981D4:
_080981D8: .4byte gUnknown_203B498
thumb_func_end sub_80981A0
thumb_func_start sub_80981DC
sub_80981DC:
thumb_func_start IsExclusivePokemonUnlocked
IsExclusivePokemonUnlocked:
push {r4,r5,lr}
lsls r0, 16
asrs r3, r0, 16
@@ -369,10 +369,10 @@ _0809820E:
pop {r4,r5}
pop {r1}
bx r1
thumb_func_end sub_80981DC
thumb_func_end IsExclusivePokemonUnlocked
thumb_func_start sub_8098214
sub_8098214:
thumb_func_start UnlockExclusivePokemon
UnlockExclusivePokemon:
push {r4-r6,lr}
lsls r0, 16
asrs r3, r0, 16
@@ -400,7 +400,7 @@ _08098232:
.align 2, 0
_08098240: .4byte gUnknown_203B498
_08098244: .4byte gExclusivePokemon
thumb_func_end sub_8098214
thumb_func_end UnlockExclusivePokemon
thumb_func_start sub_8098248
sub_8098248:

View File

@@ -5,280 +5,6 @@
.text
thumb_func_start sub_802A50C
sub_802A50C:
push {r4,r5,lr}
sub sp, 0x44
bl sub_80154F0
adds r4, r0, 0
add r0, sp, 0x14
movs r1, 0
movs r2, 0x30
bl MemoryFill8
cmp r4, 0x2
bne _0802A526
b _0802A660
_0802A526:
cmp r4, 0x3
beq _0802A52C
b _0802A680
_0802A52C:
ldr r0, _0802A54C
ldr r1, [r0]
adds r1, 0x8
movs r0, 0x20
add r2, sp, 0x14
bl sub_8039068
subs r0, 0x7
cmp r0, 0x11
bls _0802A542
b _0802A654
_0802A542:
lsls r0, 2
ldr r1, _0802A550
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_0802A54C: .4byte gUnknown_203B2C4
_0802A550: .4byte _0802A554
.align 2, 0
_0802A554:
.4byte _0802A654
.4byte _0802A654
.4byte _0802A654
.4byte _0802A654
.4byte _0802A5F0
.4byte _0802A654
.4byte _0802A654
.4byte _0802A654
.4byte _0802A654
.4byte _0802A654
.4byte _0802A59C
.4byte _0802A654
.4byte _0802A654
.4byte _0802A5D8
.4byte _0802A654
.4byte _0802A654
.4byte _0802A654
.4byte _0802A618
_0802A59C:
ldr r0, _0802A5CC
ldr r3, _0802A5D0
movs r2, 0
str r2, [sp]
movs r1, 0x4
str r1, [sp, 0x4]
str r2, [sp, 0x8]
ldr r1, _0802A5D4
ldr r1, [r1]
movs r2, 0x84
lsls r2, 3
adds r1, r2
str r1, [sp, 0xC]
movs r1, 0xC
str r1, [sp, 0x10]
movs r1, 0
movs r2, 0x7
bl sub_8014248
movs r0, 0x28
bl sub_802B2BC
b _0802A654
.align 2, 0
_0802A5CC: .4byte gUnknown_80DF1C0
_0802A5D0: .4byte gUnknown_80DEE44
_0802A5D4: .4byte gUnknown_203B2C4
_0802A5D8:
ldr r0, _0802A5E8
ldr r1, _0802A5EC
ldr r2, [r1]
movs r3, 0x84
lsls r3, 3
adds r2, r3
b _0802A5FC
.align 2, 0
_0802A5E8: .4byte gUnknown_80DF208
_0802A5EC: .4byte gUnknown_203B2C4
_0802A5F0:
ldr r0, _0802A60C
ldr r1, _0802A610
ldr r2, [r1]
movs r4, 0x84
lsls r4, 3
adds r2, r4
_0802A5FC:
ldr r3, _0802A614
movs r1, 0
bl sub_80141B4
movs r0, 0x1F
bl sub_802B2BC
b _0802A654
.align 2, 0
_0802A60C: .4byte gUnknown_80DF0A0
_0802A610: .4byte gUnknown_203B2C4
_0802A614: .4byte 0x0000010d
_0802A618:
ldr r1, [sp, 0x24]
movs r0, 0x4
bl sub_809539C
lsls r0, 24
lsrs r0, 24
bl sub_8095228
adds r2, r0, 0
add r1, sp, 0x14
ldm r1!, {r3-r5}
stm r2!, {r3-r5}
ldm r1!, {r3-r5}
stm r2!, {r3-r5}
ldm r1!, {r3-r5}
stm r2!, {r3-r5}
ldm r1!, {r3-r5}
stm r2!, {r3-r5}
movs r1, 0x6
strb r1, [r0]
ldr r0, _0802A65C
ldr r0, [r0]
movs r5, 0x86
lsls r5, 3
adds r0, r5
ldr r1, [sp, 0x24]
str r1, [r0]
movs r0, 0x21
bl sub_802B2BC
_0802A654:
bl sub_80155F0
b _0802A680
.align 2, 0
_0802A65C: .4byte gUnknown_203B2C4
_0802A660:
bl sub_80155F0
bl ResetUnusedInputStruct
ldr r0, _0802A688
ldr r0, [r0]
movs r1, 0xEF
lsls r1, 2
adds r0, r1
movs r1, 0x1
movs r2, 0x1
bl sub_800641C
movs r0, 0x1
bl sub_802B2BC
_0802A680:
add sp, 0x44
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_0802A688: .4byte gUnknown_203B2C4
thumb_func_end sub_802A50C
thumb_func_start sub_802A68C
sub_802A68C:
push {lr}
sub sp, 0x4
mov r0, sp
bl sub_80144A4
cmp r0, 0
bne _0802A6AE
bl sub_8012600
lsls r0, 24
cmp r0, 0
bne _0802A6AE
bl sub_8012750
movs r0, 0xD
bl sub_802B2BC
_0802A6AE:
add sp, 0x4
pop {r0}
bx r0
thumb_func_end sub_802A68C
thumb_func_start sub_802A6B4
sub_802A6B4:
push {r4,lr}
sub sp, 0x4
mov r0, sp
bl sub_80144A4
cmp r0, 0
bne _0802A6E8
bl sub_8012600
lsls r0, 24
cmp r0, 0
bne _0802A6E8
bl sub_8012744
adds r4, r0, 0
bl sub_8012750
cmp r4, 0
bne _0802A6E2
movs r0, 0x20
bl sub_802B2BC
b _0802A6E8
_0802A6E2:
movs r0, 0x3
bl sub_802B2BC
_0802A6E8:
add sp, 0x4
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_802A6B4
thumb_func_start sub_802A6F0
sub_802A6F0:
push {lr}
sub sp, 0x4
mov r0, sp
bl sub_80144A4
cmp r0, 0
bne _0802A710
movs r0, 0x18
bl sub_802B2BC
movs r0, 0x1
bl sub_8011C28
movs r0, 0
bl sub_8012574
_0802A710:
add sp, 0x4
pop {r0}
bx r0
thumb_func_end sub_802A6F0
thumb_func_start sub_802A718
sub_802A718:
push {lr}
sub sp, 0x4
mov r0, sp
bl sub_80144A4
cmp r0, 0
bne _0802A738
movs r0, 0x25
bl sub_802B2BC
movs r0, 0x1
bl sub_8011C28
movs r0, 0
bl sub_8012574
_0802A738:
add sp, 0x4
pop {r0}
bx r0
thumb_func_end sub_802A718
thumb_func_start sub_802A740
sub_802A740:
push {lr}
sub sp, 0x4
mov r0, sp
bl sub_80144A4
cmp r0, 0
bne _0802A754
movs r0, 0x1E
bl sub_802B2BC
_0802A754:
add sp, 0x4
pop {r0}
bx r0
thumb_func_end sub_802A740
thumb_func_start sub_802A75C
sub_802A75C:
push {lr}
@@ -7130,7 +6856,7 @@ _0802DCE0:
ldr r0, [r0, 0x34]
movs r1, 0xC
ldrsh r0, [r0, r1]
bl sub_8098214
bl UnlockExclusivePokemon
ldr r0, _0802DD70
ldr r1, [r5]
ldr r1, [r1, 0x34]
@@ -7179,7 +6905,7 @@ _0802DD9C:
ldr r0, [r0, 0x34]
movs r2, 0xE
ldrsh r0, [r0, r2]
bl sub_8098214
bl UnlockExclusivePokemon
b _0802DE3E
.align 2, 0
_0802DDB4: .4byte gUnknown_203B2FC
@@ -7191,7 +6917,7 @@ _0802DDB8:
ldr r0, [r0, 0x34]
movs r1, 0xE
ldrsh r0, [r0, r1]
bl sub_8098214
bl UnlockExclusivePokemon
b _0802DE3E
.align 2, 0
_0802DDD0: .4byte gUnknown_203B2FC

View File

@@ -227,3 +227,43 @@ DPAD = 87 52
'\0' = 00
'\n' = 0A
@ TEXT MACROS
@
@ "#" is a text macro for different things
@ case is insensitive but need different
@ definitions to match
EXTRA_MSG = 23 50 @ #P
WAIT_PRESS = 23 57 @ #W
CENTER_ALIGN = 23 2B @ #+
NEW_LINE = 23 4E @ #N
@ COLOR FORMATTING MACROS
@
@ TO USE: {COLOR_(1 or 2) ______} text here {END_COLOR_(# from first one)}
@ EX: {COLOR_2} Steel {END_COLOR_TEXT_2} gets you a colored yellow "Steel"
COLOR_1 = 23 43
COLOR_2 = 23 63
END_COLOR_TEXT_1 = 23 52
END_COLOR_TEXT_2 = 23 72
@ COLORS
WHITE = 30 @ C0
BLUE = 31 @ C1
RED = 32 @ C2
BLACK = 33 @ C3
GREEN = 34 @ C4
CYAN = 35 @ C5
YELLOW = 36 @ C6
WHITE_2 = 37 @ C7
DARKER_GRAY = 38 @ C8
DARK_GRAY = 39 @ C9
WHITE_3 = 41 @ CA
WHITE_4 = 42 @ CB
YELLOW_2 = 43 @ CC
YELLOW_3 = 44 @ CD
LIGHT_BLUE = 45 @ CE
WHITE_5 = 46 @ CF
LIGHT_BLUE_2 = 47 @ CG (TODO CHECK THIS)

View File

@@ -2973,5 +2973,3 @@ gUnknown_80DDB24: @ 80DDB24
gUnknown_80DDB60: @ 80DDB60
.incbin "baserom.gba", 0xDDB60, 0x48
.include "data/text/wonder_mail_1.inc"

View File

@@ -1,10 +1,5 @@
.section .rodata
.global gUnknown_80DED44
gUnknown_80DED44: @ 80DED44
@ replacing .incbin "baserom.gba", 0x000ded44, 0x4
.4byte 0x01
.global gUnknown_80DED48
gUnknown_80DED48: @ 80DED48
@ replacing .incbin "baserom.gba", 0x000ded48, 0x18
@@ -1211,21 +1206,3 @@ gUnknown_80E1FDC: @ 80E1FDC
.align 2,0
.string "pksdir0\0"
.align 2,0
.global gUnknown_80E1FF0
gUnknown_80E1FF0: @ 80E1FF0
.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_80E2008
gUnknown_80E2008: @ 80E2008
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x06, 0x00, 0x00, 0x00
.byte 0x02, 0x00, 0x02, 0x00
.byte 0x1a, 0x00, 0x04, 0x00
.byte 0x06, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00

View File

@@ -1837,32 +1837,3 @@ gStarters: @ 80F278E (2D Array / [Male][Female])
.byte 0x34, 0x00 @ Meowth (Quirky M)
.byte 0x15, 0x01 @ Treecko (Quirky F)
.byte 0x00, 0x00 @ End of table
.global gStarterReveal
gStarterReveal: @ 80F27C4
.string "\n"
.string "#+The Pokémon $m0!\0"
.4byte gStarterReveal
.global gPartnerPrompt
gPartnerPrompt: @ 80F27DC
.string "#+This is the final step.#W\n"
.string "#+Who would you like to have as a partner?#P" @ #P -> scroll down
.string "#+Choose the Pokémon you want\n"
.string "#+as your partner from this group.\0"
.align 2,0
.4byte gPartnerPrompt
.global gPartnerNickPrompt
gPartnerNickPrompt: @ 80F286C
.string "#+What is your partner~27s nickname?\0"
.align 2,0
.4byte gPartnerNickPrompt
.global gEndIntroText
gEndIntroText: @ 80F2898
.string "#+OK! We~27re all set!#P"
.string "#+Let~27s get you into the\n"
.string "#+world of Pokémon!#P"
.string "#+Go for it!\0"
.align 2,0

View File

@@ -1,113 +0,0 @@
gUnknown_80DDBA8:: @ 80DDBA8
.string " What you need to do is\n"
.string "tell your friend--the one you rescued--\n"
.string "this here password.\0"
.align 2, 0
gUnknown_80DDBFC:: @ 80DDBFC
.string " All righty!\n"
.string "Here~27s your #CGA-OK Mail password#R.\0"
.align 2, 0
gUnknown_80DDC30:: @ 80DDC30
.string " Okeydoke! That~27s all done.\n"
.string "Come around whenever you need.\0"
.align 2, 0
gUnknown_80DDC70:: @ 80DDC70
.string " Okeydoke! I sent off your\n"
.string "#CGA-OK Mail#R.#P"
.string " Let me save your adventure.\0"
.align 2, 0
gUnknown_80DDCBC:: @ 80DDCBC
.string "#+Please choose the Pokémon you want to\n"
.string "#+send as a helper to your friend.\n"
.string "#+(Its hold item will not be sent.)\0"
.align 2, 0
gUnknown_80DDD2C:: @ 80DDD2C
.string " ...Uh~2c no?\n"
.string "There appear to be no Pokémon in your\n"
.string "Friend Areas. What do you want to do?\0"
.align 2, 0
gUnknown_80DDD88:: @ 80DDD88
.string " You~27re sure you want to\n"
.string "send this here Pokémon?\0"
.align 2, 0
gUnknown_80DDDBC:: @ 80DDDBC
.string " You~27re sure about this?\0"
.align 2, 0
gUnknown_80DDDD8:: @ 80DDDD8
.string " All righty. I need you to\n"
.string "pick the #CGA-OK Mail#R you want to send.\0"
.align 2, 0
gUnknown_80DDE20:: @ 80DDE20
.string " ...Uh~2c no?\n"
.string "I don~27t see any #CGA-OK Mail#R here.\0"
.align 2, 0
gUnknown_80DDE58:: @ 80DDE58
.string " Did you know? If you use\n"
.string "a #CGGame Link cable#R~2c you can send\n"
.string "a #CGhelper Pokémon#R to your friend.\0"
.align 2, 0
gUnknown_80DDEC0:: @ 80DDEC0
.string " Don~27t you worry. Sending\n"
.string "a Pokémon doesn~27t mean it will go away.\n"
.string "So! Want to send one to your friend?\0"
.align 2, 0
gUnknown_80DDF2C:: @ 80DDF2C
.string " ...Uh~2c no?\n"
.string "There~27s no space at all to receive\n"
.string "any more mail.#P"
.string " Delete some old mail~2c\n"
.string "and then come to me to receive\n"
.string "your mail~2c OK?\0"
.align 2, 0
gUnknown_80DDFB8:: @ 80DDFB8
.string " All righty! Connect up\n"
.string "the #CGGame Link cable#R~2c if you~27d please.\n"
.string "Your friend ready~2c too?\0"
.align 2, 0
gUnknown_80DE01C:: @ 80DE01C
.string "#+Communicating...\n"
.string "#+Please wait with the power on.\n"
.string "#+To cancel~2c press {B_BUTTON}.\0"
.align 2, 0
gUnknown_80DE06C:: @ 80DE06C
.string " Okeydoke!\n"
.string "I received your friend~27s #CGSOS Mail#R.#P"
.string " Let me save your adventure.\0"
.align 2, 0
gUnknown_80DE0C0:: @ 80DE0C0
.string " Okeydoke! You~27re good to go.\n"
.string "Just give me a shout when you~27d like\n"
.string "to go rescue your friend.\0"
.align 2, 0
gUnknown_80DE124:: @ 80DE124
.string " OK~2c I need you to enter\n"
.string "the #CGSOS Mail password#R that your\n"
.string "friend gave you.\0"
.align 2, 0
gUnknown_80DE178:: @ 80DE178
.string " How do you want to receive\n"
.string "your friend~27s #CGSOS Mail#R?\0"
.align 2, 0
gUnknown_80DE1B4:: @ 80DE1B4
.string " How do you want to send\n"
.string "your #CGA-OK Mail#R?\0"
.align 2, 0

View File

@@ -40,6 +40,49 @@ struct WonderMailStruct_203B2C0
};
struct unkStruct_41C
{
u8 unk41C;
u8 unk41D;
u8 unk41E;
u8 unk41F;
};
struct WonderMailStruct_203B2C4
{
// size: 0x564
u8 unk0;
u8 padding[3];
u32 unk4; // wonder mail link status??
u8 unk8[0x36]; // Probably a buffer for entry
u8 unk3E;
u32 unk40;
u32 linkError; // another link status
u8 filler48[0x218 - 0x48];
s8 unk218;
u32 unk21C;
u8 filler220[0x30C - 0x220];
u32 unk30C;
u8 filler310[0x35C - 0x310];
u32 unk35C;
u8 filler360[0x3BC - 0x360];
u32 unk3BC;
u8 filler3C0[0x41C - 0x3C0];
struct unkStruct_41C unk41C;
/* 0x420 */ struct OpenedFile *faceFile;
/* 0x424 */ u8 *faceData;
u16 unk428;
u16 unk42A;
u8 unk42C;
u8 unk42D;
u8 unk42E;
u32 unk430;
u8 padding3[0x534 - 0x434];
s32 unk534;
u32 unk538;
u8 fill53C[0x564 - 0x53C];
};
void sub_8028B04(u32 r0);

View File

@@ -92,7 +92,6 @@ SECTIONS {
src/wonder_mail_pre.o(.text);
asm/wonder_mail.o(.text);
src/wonder_mail.o(.text);
src/wonder_mail_mid.o(.text);
asm/wonder_mail_1.o(.text);
src/adventure_log.o(.text);
src/friend_rescue.o(.text);

View File

@@ -31,8 +31,23 @@ struct AdventureLog
};
extern struct AdventureLog *gAdventureLog;
extern struct unkData gUnknown_80E2008;
extern struct unkData gUnknown_80E1FF0;
const struct unkData gUnknown_80E1FF0 = {
0x00, 0x00, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00,
NULL
};
const struct unkData gUnknown_80E2008 = {
0x00, 0x00, 0x00, 0x00,
0x06, 0x00, 0x00, 0x00,
0x02, 0x00, 0x02, 0x00,
0x1A, 0x00, 0x04,
0x06, 0x00,
NULL
};
// Adventure Log Text
const u8 gAdventureLogHeaderText[] = "Adventure Log";
@@ -43,8 +58,8 @@ extern void *MemoryAlloc(u32, u32);
extern void MemoryFree(void *);
extern void sub_8006518(struct unkData *);
extern void sub_800641C(void *, u32, u32);
extern void sub_8032084();
extern void DisplayAdventureLog();
void sub_8032084();
void DisplayAdventureLog();
extern void sub_8013818(void *, u32, u32, u32);
extern u8 sub_8013938(void *);
extern void sub_8013660(void *);

View File

View File

@@ -1,18 +1,18 @@
ALIGNED(4) const char gFormattedSteelText[] = "#c6Steel#r";
ALIGNED(4) const char gFormattedDarkText[] = "#c6Dark#r";
ALIGNED(4) const char gFormattedDragonText[] = "#c6Dragon#r";
ALIGNED(4) const char gFormattedGhostText[] = "#c6Ghost#r";
ALIGNED(4) const char gFormattedRockText[] = "#c6Rock#r";
ALIGNED(4) const char gFormattedBugText[] = "#c6Bug#r";
ALIGNED(4) const char gFormattedPsychicText[] = "#c6Psychic#r";
ALIGNED(4) const char gFormattedFlyingText[] = "#c6Flying#r";
ALIGNED(4) const char gFormattedGroundText[] = "#c6Ground#r";
ALIGNED(4) const char gFormattedPoisonText[] = "#c6Poison#r";
ALIGNED(4) const char gFormattedFightingText[] = "#c6Fighting#r";
ALIGNED(4) const char gFormattedIceText[] = "#c6Ice#r ";
ALIGNED(4) const char gFormattedElectricText[] = "#c6Electric#r";
ALIGNED(4) const char gFormattedGrassText[] = "#c6Grass#r";
ALIGNED(4) const char gFormattedWaterText[] = "#c6Water#r";
ALIGNED(4) const char gFormattedFireText[] = "#c6Fire#r ";
ALIGNED(4) const char gFormattedNormalText[] = "#c6Normal#r";
ALIGNED(4) const char gFormattedNoneText[] = "#c6None#r";
ALIGNED(4) const char gFormattedSteelText[] = _("{COLOR_2 YELLOW}Steel{END_COLOR_TEXT_2}");
ALIGNED(4) const char gFormattedDarkText[] = _("{COLOR_2 YELLOW}Dark{END_COLOR_TEXT_2}");
ALIGNED(4) const char gFormattedDragonText[] = _("{COLOR_2 YELLOW}Dragon{END_COLOR_TEXT_2}");
ALIGNED(4) const char gFormattedGhostText[] = _("{COLOR_2 YELLOW}Ghost{END_COLOR_TEXT_2}");
ALIGNED(4) const char gFormattedRockText[] = _("{COLOR_2 YELLOW}Rock{END_COLOR_TEXT_2}");
ALIGNED(4) const char gFormattedBugText[] = _("{COLOR_2 YELLOW}Bug{END_COLOR_TEXT_2}");
ALIGNED(4) const char gFormattedPsychicText[] = _("{COLOR_2 YELLOW}Psychic{END_COLOR_TEXT_2}");
ALIGNED(4) const char gFormattedFlyingText[] = _("{COLOR_2 YELLOW}Flying{END_COLOR_TEXT_2}");
ALIGNED(4) const char gFormattedGroundText[] = _("{COLOR_2 YELLOW}Ground{END_COLOR_TEXT_2}");
ALIGNED(4) const char gFormattedPoisonText[] = _("{COLOR_2 YELLOW}Poison{END_COLOR_TEXT_2}");
ALIGNED(4) const char gFormattedFightingText[] = _("{COLOR_2 YELLOW}Fighting{END_COLOR_TEXT_2}");
ALIGNED(4) const char gFormattedIceText[] = _("{COLOR_2 YELLOW}Ice{END_COLOR_TEXT_2} ");
ALIGNED(4) const char gFormattedElectricText[] = _("{COLOR_2 YELLOW}Electric{END_COLOR_TEXT_2}");
ALIGNED(4) const char gFormattedGrassText[] = _("{COLOR_2 YELLOW}Grass{END_COLOR_TEXT_2}");
ALIGNED(4) const char gFormattedWaterText[] = _("{COLOR_2 YELLOW}Water{END_COLOR_TEXT_2}");
ALIGNED(4) const char gFormattedFireText[] = _("{COLOR_2 YELLOW}Fire{END_COLOR_TEXT_2} ");
ALIGNED(4) const char gFormattedNormalText[] = _("{COLOR_2 YELLOW}Normal{END_COLOR_TEXT_2}");
ALIGNED(4) const char gFormattedNoneText[] = _("{COLOR_2 YELLOW}None{END_COLOR_TEXT_2}");

View File

@@ -1,232 +1,233 @@
ALIGNED(4) const char gQuirkyDescription[] =
"#+You appear to be...#W\n"
"#+The quirky type.#P"
"#+People consider you an eccentric\n"
"#+who does things at your own pace.#P"
"#+You never break tempo.#P"
"#+Your carefree nature makes you\n"
"#+attractive. But you also happen\n"
"#+to be somewhat childish...#P"
"#+You are fickle and cause problems for the\n"
"#+people who have to go along with you.#P"
"#+Maybe people are even upset\n"
"#+with you for being so fickle?#P"
"#+If you realize how selfishly\n"
"#+you~27re behaving~2c try to think\n"
"#+before you do anything rash.#P"
"#+A quirky person like you should be...";
ALIGNED(4) const char gQuirkyDescription[] = _(
"{CENTER_ALIGN}You appear to be...{WAIT_PRESS}\n"
"{CENTER_ALIGN}The quirky type.{EXTRA_MSG}"
"{CENTER_ALIGN}People consider you an eccentric\n"
"{CENTER_ALIGN}who does things at your own pace.{EXTRA_MSG}"
"{CENTER_ALIGN}You never break tempo.{EXTRA_MSG}"
"{CENTER_ALIGN}Your carefree nature makes you\n"
"{CENTER_ALIGN}attractive. But you also happen\n"
"{CENTER_ALIGN}to be somewhat childish...{EXTRA_MSG}"
"{CENTER_ALIGN}You are fickle and cause problems for the\n"
"{CENTER_ALIGN}people who have to go along with you.{EXTRA_MSG}"
"{CENTER_ALIGN}Maybe people are even upset\n"
"{CENTER_ALIGN}with you for being so fickle?{EXTRA_MSG}"
"{CENTER_ALIGN}If you realize how selfishly\n"
"{CENTER_ALIGN}you~27re behaving~2c try to think\n"
"{CENTER_ALIGN}before you do anything rash.{EXTRA_MSG}"
"{CENTER_ALIGN}A quirky person like you should be...");
ALIGNED(4) const char gLonelyDescription[] =
"#+You appear to be...#W\n"
"#+The lonely type.#P"
"#+You always act cheerful and\n"
"#+jocular around other people.#P"
"#+But that~27s only because\n"
"#+you are with other people.#P"
"#+However~2c when you get alone...#P"
"#+Do you find yourself\n"
"#+feeling oddly depressed?#P"
"#+That~27s why you always\n"
"#+want to be with others.#P"
"#+But if you go around feeling\n"
"#+depressed too much...#P"
"#+Your nutritional balance goes out\n"
"#+of wack. Eat more vegetables!#P"
"#+However...#W\n"
"#+It~27s not a bad thing\n"
"#+to feel lonely.#P"
"#+You know what it~27s like when you aren~27t\n"
"#+alone~2c so that~27s why you feel lonesome.#P"
"#+And that~27s why you aren~27t really alone.#P"
"#+A lonely person like you should be...";
ALIGNED(4) const char gLonelyDescription[] = _(
"{CENTER_ALIGN}You appear to be...{WAIT_PRESS}\n"
"{CENTER_ALIGN}The lonely type.{EXTRA_MSG}"
"{CENTER_ALIGN}You always act cheerful and\n"
"{CENTER_ALIGN}jocular around other people.{EXTRA_MSG}"
"{CENTER_ALIGN}But that~27s only because\n"
"{CENTER_ALIGN}you are with other people.{EXTRA_MSG}"
"{CENTER_ALIGN}However~2c when you get alone...{EXTRA_MSG}"
"{CENTER_ALIGN}Do you find yourself\n"
"{CENTER_ALIGN}feeling oddly depressed?{EXTRA_MSG}"
"{CENTER_ALIGN}That~27s why you always\n"
"{CENTER_ALIGN}want to be with others.{EXTRA_MSG}"
"{CENTER_ALIGN}But if you go around feeling\n"
"{CENTER_ALIGN}depressed too much...{EXTRA_MSG}"
"{CENTER_ALIGN}Your nutritional balance goes out\n"
"{CENTER_ALIGN}of wack. Eat more vegetables!{EXTRA_MSG}"
"{CENTER_ALIGN}However...{WAIT_PRESS}\n"
"{CENTER_ALIGN}It~27s not a bad thing\n"
"{CENTER_ALIGN}to feel lonely.{EXTRA_MSG}"
"{CENTER_ALIGN}You know what it~27s like when you aren~27t\n"
"{CENTER_ALIGN}alone~2c so that~27s why you feel lonesome.{EXTRA_MSG}"
"{CENTER_ALIGN}And that~27s why you aren~27t really alone.{EXTRA_MSG}"
"{CENTER_ALIGN}A lonely person like you should be...");
ALIGNED(4) const char gRelaxedDescription[] =
"#+You appear to be...#W\n"
"#+The relaxed type.#P"
"#+Do you occasionally\n"
"#+zone out and miss a bus?#P"
"#+Or do you find yourself dozing off?#P"
"#+Or is your reaction time\n"
"#+a little slower than others?#P"
"#+But that~27s not necessarily\n"
"#+a bad thing.#P"
"#+You can do things at your own\n"
"#+tempo without feeling pressured.#P"
"#+You can live in a relaxed and\n"
"#+unhurried manner without worries.#P"
"#+I think that~27s a happy\n"
"#+lifestyle to be envied~2c even.#P"
"#+You~27re also surprisingly popular.#P"
"#+The way you vacantly stare\n"
"#+off into the distance...#P"
"#+It should make that someone\n"
"#+special~27s pulse race.#P"
"#+A relaxed person like you should be...";
ALIGNED(4) const char gRelaxedDescription[] = _(
"{CENTER_ALIGN}You appear to be...{WAIT_PRESS}\n"
"{CENTER_ALIGN}The relaxed type.{EXTRA_MSG}"
"{CENTER_ALIGN}Do you occasionally\n"
"{CENTER_ALIGN}zone out and miss a bus?{EXTRA_MSG}"
"{CENTER_ALIGN}Or do you find yourself dozing off?{EXTRA_MSG}"
"{CENTER_ALIGN}Or is your reaction time\n"
"{CENTER_ALIGN}a little slower than others?{EXTRA_MSG}"
"{CENTER_ALIGN}But that~27s not necessarily\n"
"{CENTER_ALIGN}a bad thing.{EXTRA_MSG}"
"{CENTER_ALIGN}You can do things at your own\n"
"{CENTER_ALIGN}tempo without feeling pressured.{EXTRA_MSG}"
"{CENTER_ALIGN}You can live in a relaxed and\n"
"{CENTER_ALIGN}unhurried manner without worries.{EXTRA_MSG}"
"{CENTER_ALIGN}I think that~27s a happy\n"
"{CENTER_ALIGN}lifestyle to be envied~2c even.{EXTRA_MSG}"
"{CENTER_ALIGN}You~27re also surprisingly popular.{EXTRA_MSG}"
"{CENTER_ALIGN}The way you vacantly stare\n"
"{CENTER_ALIGN}off into the distance...{EXTRA_MSG}"
"{CENTER_ALIGN}It should make that someone\n"
"{CENTER_ALIGN}special~27s pulse race.{EXTRA_MSG}"
"{CENTER_ALIGN}A relaxed person like you should be...");
ALIGNED(4) const char gCalmDescription[] =
"#+You appear to be...#W\n"
"#+The calm type.#P"
"#+You~27re capable of giving advice\n"
"#+to friends with worries.#P"
"#+You don~27t like to fight.#P"
"#+You~27re a warm~2c kindhearted\n"
"#+person who cares.#P"
"#+You must have many friends\n"
"#+who look up to you.#P"
"#+However...#W\n"
"#+You may also be somewhat gullible...#P"
"#+As well as a little careless...#P"
"#+And even a little sloppy.#P"
"#+You might want to keep\n"
"#+those points in mind.#P"
"#+A calm person like you should be...";
ALIGNED(4) const char gCalmDescription[] = _(
"{CENTER_ALIGN}You appear to be...{WAIT_PRESS}\n"
"{CENTER_ALIGN}The calm type.{EXTRA_MSG}"
"{CENTER_ALIGN}You~27re capable of giving advice\n"
"{CENTER_ALIGN}to friends with worries.{EXTRA_MSG}"
"{CENTER_ALIGN}You don~27t like to fight.{EXTRA_MSG}"
"{CENTER_ALIGN}You~27re a warm~2c kindhearted\n"
"{CENTER_ALIGN}person who cares.{EXTRA_MSG}"
"{CENTER_ALIGN}You must have many friends\n"
"{CENTER_ALIGN}who look up to you.{EXTRA_MSG}"
"{CENTER_ALIGN}However...{WAIT_PRESS}\n"
"{CENTER_ALIGN}You may also be somewhat gullible...{EXTRA_MSG}"
"{CENTER_ALIGN}As well as a little careless...{EXTRA_MSG}"
"{CENTER_ALIGN}And even a little sloppy.{EXTRA_MSG}"
"{CENTER_ALIGN}You might want to keep\n"
"{CENTER_ALIGN}those points in mind.{EXTRA_MSG}"
"{CENTER_ALIGN}A calm person like you should be...");
ALIGNED(4) const char gSassyDescription[] =
"#+You appear to be...#W\n"
"#+The sassy type.#P"
"#+You tend to be somewhat cynical.#P"
"#+Despite that~2c there is something\n"
"#+appealing and lovable about you.#P"
"#+But do you occasionally say something\n"
"#+arrogant that angers others?#P"
"#+Do you make that mistake?#P"
"#+Or have people called you\n"
"#+conceited~2c vain~2c or selfish?#P"
"#+Have people said that about you?#P"
"#+Huh?#W You~27re telling me to get lost?#P"
"#+Why~2c you... Come here and say that!#W\n"
"#+......Gasp!#P"
"#+...I~27m sorry.\n"
"#+I let my feelings run away.\n"
"#+I truly regret this~2c really.#P"
"#+Anyway~2c your cool and aloof\n"
"#+attitude is what defines you.#P"
"#+It makes you exasperating and\n"
"#+appealing at the same time.#P"
"#+A sassy person like you should be...";
ALIGNED(4) const char gSassyDescription[] = _(
"{CENTER_ALIGN}You appear to be...{WAIT_PRESS}\n"
"{CENTER_ALIGN}The sassy type.{EXTRA_MSG}"
"{CENTER_ALIGN}You tend to be somewhat cynical.{EXTRA_MSG}"
"{CENTER_ALIGN}Despite that~2c there is something\n"
"{CENTER_ALIGN}appealing and lovable about you.{EXTRA_MSG}"
"{CENTER_ALIGN}But do you occasionally say something\n"
"{CENTER_ALIGN}arrogant that angers others?{EXTRA_MSG}"
"{CENTER_ALIGN}Do you make that mistake?{EXTRA_MSG}"
"{CENTER_ALIGN}Or have people called you\n"
"{CENTER_ALIGN}conceited~2c vain~2c or selfish?{EXTRA_MSG}"
"{CENTER_ALIGN}Have people said that about you?{EXTRA_MSG}"
"{CENTER_ALIGN}Huh?{WAIT_PRESS} You~27re telling me to get lost?{EXTRA_MSG}"
"{CENTER_ALIGN}Why~2c you... Come here and say that!{WAIT_PRESS}\n"
"{CENTER_ALIGN}......Gasp!{EXTRA_MSG}"
"{CENTER_ALIGN}...I~27m sorry.\n"
"{CENTER_ALIGN}I let my feelings run away.\n"
"{CENTER_ALIGN}I truly regret this~2c really.{EXTRA_MSG}"
"{CENTER_ALIGN}Anyway~2c your cool and aloof\n"
"{CENTER_ALIGN}attitude is what defines you.{EXTRA_MSG}"
"{CENTER_ALIGN}It makes you exasperating and\n"
"{CENTER_ALIGN}appealing at the same time.{EXTRA_MSG}"
"{CENTER_ALIGN}A sassy person like you should be...");
ALIGNED(4) const char gHastyDescription[] =
"#+You appear to be...#W\n"
"#+The hasty type.#P"
"#+You like to take charge\n"
"#+and get things done.#P"
"#+You~27re a real go-getter.#P"
"#+But are you also stressed out?#P"
"#+You get irritated when your\n"
"#+friends don~27t show up on time.#P"
"#+You get frustrated when things\n"
"#+don~27t turn out the way you expect.#P"
"#+Maybe you jab the elevator button\n"
"#+if the elevator is slow to arrive.#P"
"#+...Maybe you~27re already jabbing\n"
"#+the A Button repeatedly now.#P"
"#+Beware--getting too easily irritated\n"
"#+just isn~27t good for your well-being.#P"
"#+A hasty person like you should be...";
ALIGNED(4) const char gHastyDescription[] = _(
"{CENTER_ALIGN}You appear to be...{WAIT_PRESS}\n"
"{CENTER_ALIGN}The hasty type.{EXTRA_MSG}"
"{CENTER_ALIGN}You like to take charge\n"
"{CENTER_ALIGN}and get things done.{EXTRA_MSG}"
"{CENTER_ALIGN}You~27re a real go-getter.{EXTRA_MSG}"
"{CENTER_ALIGN}But are you also stressed out?{EXTRA_MSG}"
"{CENTER_ALIGN}You get irritated when your\n"
"{CENTER_ALIGN}friends don~27t show up on time.{EXTRA_MSG}"
"{CENTER_ALIGN}You get frustrated when things\n"
"{CENTER_ALIGN}don~27t turn out the way you expect.{EXTRA_MSG}"
"{CENTER_ALIGN}Maybe you jab the elevator button\n"
"{CENTER_ALIGN}if the elevator is slow to arrive.{EXTRA_MSG}"
"{CENTER_ALIGN}...Maybe you~27re already jabbing\n"
"{CENTER_ALIGN}the A Button repeatedly now.{EXTRA_MSG}"
"{CENTER_ALIGN}Beware--getting too easily irritated\n"
"{CENTER_ALIGN}just isn~27t good for your well-being.{EXTRA_MSG}"
"{CENTER_ALIGN}A hasty person like you should be...");
ALIGNED(4) const char gTimidDescription[] =
"#+You appear to be...#W\n"
"#+The timid type.#P"
"#+You may find it hard to go\n"
"#+to the washroom at night.#P"
"#+You may also find it too frightening\n"
"#+to go back to school to get something\n"
"#+you left behind in class.#P"
"#+If you~27re ever walking on a dark\n"
"#+street at night~2c you probably turn\n"
"#+around often to check behind you.#P"
"#+But your timid nature is\n"
"#+also your good point!#P"
"#+Because those who know fear are\n"
"#+those who know true courage.#P"
"#+A timid person like you should be...";
ALIGNED(4) const char gTimidDescription[] = _(
"{CENTER_ALIGN}You appear to be...{WAIT_PRESS}\n"
"{CENTER_ALIGN}The timid type.{EXTRA_MSG}"
"{CENTER_ALIGN}You may find it hard to go\n"
"{CENTER_ALIGN}to the washroom at night.{EXTRA_MSG}"
"{CENTER_ALIGN}You may also find it too frightening\n"
"{CENTER_ALIGN}to go back to school to get something\n"
"{CENTER_ALIGN}you left behind in class.{EXTRA_MSG}"
"{CENTER_ALIGN}If you~27re ever walking on a dark\n"
"{CENTER_ALIGN}street at night~2c you probably turn\n"
"{CENTER_ALIGN}around often to check behind you.{EXTRA_MSG}"
"{CENTER_ALIGN}But your timid nature is\n"
"{CENTER_ALIGN}also your good point!{EXTRA_MSG}"
"{CENTER_ALIGN}Because those who know fear are\n"
"{CENTER_ALIGN}those who know true courage.{EXTRA_MSG}"
"{CENTER_ALIGN}A timid person like you should be...");
ALIGNED(4) const char gNaiveDescription[] =
"#+You appear to be...#W\n"
"#+The naive type.#P"
"#+You are highly curious~2c\n"
"#+and you love rare things.#P"
"#+Your cheerful and carefree\n"
"#+attitude should make things fun\n"
"#+for the people around you.#P"
"#+But you do have one flaw.\n"
"#+You can be childish.#P"
"#+You can never sit still.\n"
"#+You~27re always on the move.#P"
"#+You can also be selfish~2c\n"
"#+so you should watch yourself.#P"
"#+A naive person like you should be...";
ALIGNED(4) const char gNaiveDescription[] = _(
"{CENTER_ALIGN}You appear to be...{WAIT_PRESS}\n"
"{CENTER_ALIGN}The naive type.{EXTRA_MSG}"
"{CENTER_ALIGN}You are highly curious~2c\n"
"{CENTER_ALIGN}and you love rare things.{EXTRA_MSG}"
"{CENTER_ALIGN}Your cheerful and carefree\n"
"{CENTER_ALIGN}attitude should make things fun\n"
"{CENTER_ALIGN}for the people around you.{EXTRA_MSG}"
"{CENTER_ALIGN}But you do have one flaw.\n"
"{CENTER_ALIGN}You can be childish.{EXTRA_MSG}"
"{CENTER_ALIGN}You can never sit still.\n"
"{CENTER_ALIGN}You~27re always on the move.{EXTRA_MSG}"
"{CENTER_ALIGN}You can also be selfish~2c\n"
"{CENTER_ALIGN}so you should watch yourself.{EXTRA_MSG}"
"{CENTER_ALIGN}A naive person like you should be...");
ALIGNED(4) const char gImpishDescription[] =
"#+You appear to be...#W\n"
"#+The impish type.#P"
"#+You~27re playful~2c cheerful~2c\n"
"#+and you love pranks.#P"
"#+You~27re also kindhearted.#P"
"#+That~27s why the people around\n"
"#+you find you so irresistible.#P"
"#+You must be the most\n"
"#+popular person around!#P"
"#+Oh?#W You~27re not that popular?#W\n"
"#+You~27re either being modest...\n"
"#+or you just don~27t notice it.#P"
"#+I bet people are just too shy\n"
"#+to let their feelings be known.#P"
"#+There~27s someone out there who~27s\n"
"#+afraid to declare their love for you!#P"
"#+An impish person like you should be...";
ALIGNED(4) const char gImpishDescription[] = _(
"{CENTER_ALIGN}You appear to be...{WAIT_PRESS}\n"
"{CENTER_ALIGN}The impish type.{EXTRA_MSG}"
"{CENTER_ALIGN}You~27re playful~2c cheerful~2c\n"
"{CENTER_ALIGN}and you love pranks.{EXTRA_MSG}"
"{CENTER_ALIGN}You~27re also kindhearted.{EXTRA_MSG}"
"{CENTER_ALIGN}That~27s why the people around\n"
"{CENTER_ALIGN}you find you so irresistible.{EXTRA_MSG}"
"{CENTER_ALIGN}You must be the most\n"
"{CENTER_ALIGN}popular person around!{EXTRA_MSG}"
"{CENTER_ALIGN}Oh?{WAIT_PRESS} You~27re not that popular?{WAIT_PRESS}\n"
"{CENTER_ALIGN}You~27re either being modest...\n"
"{CENTER_ALIGN}or you just don~27t notice it.{EXTRA_MSG}"
"{CENTER_ALIGN}I bet people are just too shy\n"
"{CENTER_ALIGN}to let their feelings be known.{EXTRA_MSG}"
"{CENTER_ALIGN}There~27s someone out there who~27s\n"
"{CENTER_ALIGN}afraid to declare their love for you!{EXTRA_MSG}"
"{CENTER_ALIGN}An impish person like you should be...");
ALIGNED(4) const char gJollyDescription[] =
"#+You appear to be...#W\n"
"#+The jolly type.#P"
"#+Always laughing and smiling~2c\n"
"#+you uplift everyone around you.#P"
"#+You love jokes!#P"
"#+You have lots of friends~2c and\n"
"#+you~27re popular wherever you go.#P"
"#+But sometimes you get carried away\n"
"#+and say things that get you in trouble.#P"
"#+You should learn to think before\n"
"#+saying or doing anything.#P"
"#+A jolly person like you should be...";
ALIGNED(4) const char gJollyDescription[] = _(
"{CENTER_ALIGN}You appear to be...{WAIT_PRESS}\n"
"{CENTER_ALIGN}The jolly type.{EXTRA_MSG}"
"{CENTER_ALIGN}Always laughing and smiling~2c\n"
"{CENTER_ALIGN}you uplift everyone around you.{EXTRA_MSG}"
"{CENTER_ALIGN}You love jokes!{EXTRA_MSG}"
"{CENTER_ALIGN}You have lots of friends~2c and\n"
"{CENTER_ALIGN}you~27re popular wherever you go.{EXTRA_MSG}"
"{CENTER_ALIGN}But sometimes you get carried away\n"
"{CENTER_ALIGN}and say things that get you in trouble.{EXTRA_MSG}"
"{CENTER_ALIGN}You should learn to think before\n"
"{CENTER_ALIGN}saying or doing anything.{EXTRA_MSG}"
"{CENTER_ALIGN}A jolly person like you should be...");
ALIGNED(4) const char gBraveDescription[] =
"#+You appear to be...#W\n"
"#+The brave type.#P"
"#+You have a strong sense of justice.#W\n"
"#+You hate evil.#W\n"
"#+You will take on any opponent.#P"
"#+You are truly a hero!#P"
"#+Go forth!#P"
"#+For justice...#W\n"
"#+For peace on earth...#W\n"
"#+Fight the forces of evil!#P"
"#+......#WIf I~27m wrong...#W\n"
"#+Work at becoming a true hero!#P"
"#+A brave person like you should be...";
ALIGNED(4) const char gBraveDescription[] = _(
"{CENTER_ALIGN}You appear to be...{WAIT_PRESS}\n"
"{CENTER_ALIGN}The brave type.{EXTRA_MSG}"
"{CENTER_ALIGN}You have a strong sense of justice.{WAIT_PRESS}\n"
"{CENTER_ALIGN}You hate evil.{WAIT_PRESS}\n"
"{CENTER_ALIGN}You will take on any opponent.{EXTRA_MSG}"
"{CENTER_ALIGN}You are truly a hero!{EXTRA_MSG}"
"{CENTER_ALIGN}Go forth!{EXTRA_MSG}"
"{CENTER_ALIGN}For justice...{WAIT_PRESS}\n"
"{CENTER_ALIGN}For peace on earth...{WAIT_PRESS}\n"
"{CENTER_ALIGN}Fight the forces of evil!{EXTRA_MSG}"
"{CENTER_ALIGN}......{WAIT_PRESS}If I~27m wrong...{WAIT_PRESS}\n"
"{CENTER_ALIGN}Work at becoming a true hero!{EXTRA_MSG}"
"{CENTER_ALIGN}A brave person like you should be...");
ALIGNED(4) const char gDocileDescription[] =
"#+You appear to be...#W\n"
"#+The docile type.#P"
"#+You~27re very kindhearted.#W\n"
"#+Very helpful.#W\n"
"#+You can make friends with anyone.#P"
"#+You~27re a wonderful person.#P"
"#+......#WIs that going overboard?#W\n"
"#+I don~27t think so.#P"
"#+You yourself should be\n"
"#+the best judge of that.#P"
"#+A docile person like you should be...";
ALIGNED(4) const char gDocileDescription[] = _(
"{CENTER_ALIGN}You appear to be...{WAIT_PRESS}\n"
"{CENTER_ALIGN}The docile type.{EXTRA_MSG}"
"{CENTER_ALIGN}You~27re very kindhearted.{WAIT_PRESS}\n"
"{CENTER_ALIGN}Very helpful.{WAIT_PRESS}\n"
"{CENTER_ALIGN}You can make friends with anyone.{EXTRA_MSG}"
"{CENTER_ALIGN}You~27re a wonderful person.{EXTRA_MSG}"
"{CENTER_ALIGN}......{WAIT_PRESS}Is that going overboard?{WAIT_PRESS}\n"
"{CENTER_ALIGN}I don~27t think so.{EXTRA_MSG}"
"{CENTER_ALIGN}You yourself should be\n"
"{CENTER_ALIGN}the best judge of that.{EXTRA_MSG}"
"{CENTER_ALIGN}A docile person like you should be...");
ALIGNED(4) const char gHardyDescription[] =
"#+You appear to be...#W\n"
"#+The hardy type.#P#+You do your homework diligently~2c\n"
"#+and you know to eat properly.#P"
"#+You have strong willpower that lets\n"
"#+you complete tasks~2c however tough.#P"
"#+But~2c you can also be stubborn to the\n"
"#+point of even feuding with friends...#P"
"#+Nothing will go right for you when you~27re\n"
"#+irritated~2c so learn to laugh it off.#P"
"#+A hardy person like you should be...";
ALIGNED(4) const char gHardyDescription[] = _(
"{CENTER_ALIGN}You appear to be...{WAIT_PRESS}\n"
"{CENTER_ALIGN}The hardy type.{EXTRA_MSG}"
"{CENTER_ALIGN}You do your homework diligently~2c\n"
"{CENTER_ALIGN}and you know to eat properly.{EXTRA_MSG}"
"{CENTER_ALIGN}You have strong willpower that lets\n"
"{CENTER_ALIGN}you complete tasks~2c however tough.{EXTRA_MSG}"
"{CENTER_ALIGN}But~2c you can also be stubborn to the\n"
"{CENTER_ALIGN}point of even feuding with friends...{EXTRA_MSG}"
"{CENTER_ALIGN}Nothing will go right for you when you~27re\n"
"{CENTER_ALIGN}irritated~2c so learn to laugh it off.{EXTRA_MSG}"
"{CENTER_ALIGN}A hardy person like you should be...");

View File

@@ -1,141 +1,259 @@
ALIGNED(4) const char gUnknown_80DE1E4[] =
ALIGNED(4) const char gUnknown_80DDBA8[] = _(
" What you need to do is\n"
"tell your friend--the one you rescued--\n"
"this here password.");
ALIGNED(4) const char gUnknown_80DDBFC[] = _(
" All righty!\n"
"Here~27s your {COLOR_1 LIGHT_BLUE_2}A-OK Mail password{END_COLOR_TEXT_1}.");
ALIGNED(4) const char gUnknown_80DDC30[] = _(
" Okeydoke! That~27s all done.\n"
"Come around whenever you need.");
ALIGNED(4) const char gUnknown_80DDC70[] = _(
" Okeydoke! I sent off your\n"
"{COLOR_1 LIGHT_BLUE_2}A-OK Mail{END_COLOR_TEXT_1}.{EXTRA_MSG}"
" Let me save your adventure.");
ALIGNED(4) const char gUnknown_80DDCBC[] = _(
"{CENTER_ALIGN}Please choose the Pokémon you want to\n"
"{CENTER_ALIGN}send as a helper to your friend.\n"
"{CENTER_ALIGN}(Its hold item will not be sent.)");
ALIGNED(4) const char gUnknown_80DDD2C[] = _(
" ...Uh~2c no?\n"
"You don~27t have an #CGSOS Mail#R.#P"
" You~27ll need to arrange\n"
"to receive your friend~27s #CGSOS Mail#R first.\n"
"That~27s what you need to do.";
"There appear to be no Pokémon in your\n"
"Friend Areas. What do you want to do?");
ALIGNED(4) const char gUnknown_80DE280[] =
ALIGNED(4) const char gUnknown_80DDD88[] = _(
" You~27re sure you want to\n"
"send this here Pokémon?");
ALIGNED(4) const char gUnknown_80DDDBC[] = _(
" You~27re sure about this?");
ALIGNED(4) const char gUnknown_80DDDD8[] = _(
" All righty. I need you to\n"
"pick the {COLOR_1 LIGHT_BLUE_2}A-OK Mail{END_COLOR_TEXT_1} you want to send.");
ALIGNED(4) const char gUnknown_80DDE20[] = _(
" ...Uh~2c no?\n"
"I don~27t see any {COLOR_1 LIGHT_BLUE_2}A-OK Mail{END_COLOR_TEXT_1} here.");
ALIGNED(4) const char gUnknown_80DDE58[] = _(
" Did you know? If you use\n"
"a {COLOR_1 LIGHT_BLUE_2}Game Link cable{END_COLOR_TEXT_1}~2c you can send\n"
"a {COLOR_1 LIGHT_BLUE_2}helper Pokémon{END_COLOR_TEXT_1} to your friend.");
ALIGNED(4) const char gUnknown_80DDEC0[] = _(
" Don~27t you worry. Sending\n"
"a Pokémon doesn~27t mean it will go away.\n"
"So! Want to send one to your friend?");
ALIGNED(4) const char gUnknown_80DDF2C[] = _(
" ...Uh~2c no?\n"
"There~27s no space at all to receive\n"
"any more mail.{EXTRA_MSG}"
" Delete some old mail~2c\n"
"and then come to me to receive\n"
"your mail~2c OK?");
ALIGNED(4) const char gUnknown_80DDFB8[] = _(
" All righty! Connect up\n"
"the {COLOR_1 LIGHT_BLUE_2}Game Link cable{END_COLOR_TEXT_1}~2c if you~27d please.\n"
"Your friend ready~2c too?");
ALIGNED(4) const char gUnknown_80DE01C[] = _(
"{CENTER_ALIGN}Communicating...\n"
"{CENTER_ALIGN}Please wait with the power on.\n"
"{CENTER_ALIGN}To cancel~2c press {B_BUTTON}.");
ALIGNED(4) const char gUnknown_80DE06C[] = _(
" Okeydoke!\n"
"Let me show you to the rescue site.";
"I received your friend~27s {COLOR_1 LIGHT_BLUE_2}SOS Mail{END_COLOR_TEXT_1}.{EXTRA_MSG}"
" Let me save your adventure.");
ALIGNED(4) const char gUnknown_80DE2B0[] =
ALIGNED(4) const char gUnknown_80DE0C0[] = _(
" Okeydoke! You~27re good to go.\n"
"Just give me a shout when you~27d like\n"
"to go rescue your friend.");
ALIGNED(4) const char gUnknown_80DE124[] = _(
" OK~2c I need you to enter\n"
"the {COLOR_1 LIGHT_BLUE_2}SOS Mail password{END_COLOR_TEXT_1} that your\n"
"friend gave you.");
ALIGNED(4) const char gUnknown_80DE178[] = _(
" How do you want to receive\n"
"your friend~27s {COLOR_1 LIGHT_BLUE_2}SOS Mail{END_COLOR_TEXT_1}?");
ALIGNED(4) const char gUnknown_80DE1B4[] = _(
" How do you want to send\n"
"your {COLOR_1 LIGHT_BLUE_2}A-OK Mail{END_COLOR_TEXT_1}?");
ALIGNED(4) const char gUnknown_80DE1E4[] = _(
" ...Uh~2c no?\n"
"You don~27t have an {COLOR_1 LIGHT_BLUE_2}SOS Mail{END_COLOR_TEXT_1}.{EXTRA_MSG}"
" You~27ll need to arrange\n"
"to receive your friend~27s {COLOR_1 LIGHT_BLUE_2}SOS Mail{END_COLOR_TEXT_1} first.\n"
"That~27s what you need to do.");
ALIGNED(4) const char gUnknown_80DE280[] = _(
" Okeydoke!\n"
"Let me show you to the rescue site.");
ALIGNED(4) const char gUnknown_80DE2B0[] = _(
" ...Uh~2c no?\n"
"Doesn~27t look like you can go to the dungeon\n"
"named in this #CGSOS Mail#R.#P"
"named in this {COLOR_1 LIGHT_BLUE_2}SOS Mail{END_COLOR_TEXT_1}.{EXTRA_MSG}"
" Come see me about doing\n"
"this rescue when you can actually go\n"
"to that dungeon~2c all right?";
"to that dungeon~2c all right?");
ALIGNED(4) const char gUnknown_80DE368[] =
ALIGNED(4) const char gUnknown_80DE368[] = _(
" ...Uh~2c no?\n"
"You~27ve blown this rescue mission too\n"
"often. Your friend~27s team is beyond help.#P"
"often. Your friend~27s team is beyond help.{EXTRA_MSG}"
" I~27m sorry to say this~2c\n"
"but you~27ll have to tell your friend that\n"
"your rescue attempts failed.";
"your rescue attempts failed.");
ALIGNED(4) const char gUnknown_80DE430[] =
ALIGNED(4) const char gUnknown_80DE430[] = _(
" Okeydoke.\n"
"I~27ll need you to choose the #CGSOS Mail#R\n"
"for you to go on a rescue mission.";
"I~27ll need you to choose the {COLOR_1 LIGHT_BLUE_2}SOS Mail{END_COLOR_TEXT_1}\n"
"for you to go on a rescue mission.");
ALIGNED(4) const char gUnknown_80DE48C[] =
ALIGNED(4) const char gUnknown_80DE48C[] = _(
" What kind of mail do you\n"
"want to delete?";
"want to delete?");
ALIGNED(4) const char gUnknown_80DE4B8[] =
ALIGNED(4) const char gUnknown_80DE4B8[] = _(
" All righty. Choose\n"
"the #CGSOS Mail#R you don~27t need.";
"the {COLOR_1 LIGHT_BLUE_2}SOS Mail{END_COLOR_TEXT_1} you don~27t need.");
ALIGNED(4) const char gUnknown_80DE4F0[] =
ALIGNED(4) const char gUnknown_80DE4F0[] = _(
" ...Uh~2c no?\n"
"You don~27t have any #CGSOS Mail#R.";
"You don~27t have any {COLOR_1 LIGHT_BLUE_2}SOS Mail{END_COLOR_TEXT_1}.");
ALIGNED(4) const char gUnknown_80DE524[] =
" If you want a reward~2c #C2don~27t\n"
"delete an A-OK Mail#R before getting a\n"
"#CGThank-You Mail#R back for it.#P"
" #C2Be careful#R if you~27re going\n"
"to delete any #CGA-OK Mail#R.#P"
ALIGNED(4) const char gUnknown_80DE524[] = _(
" If you want a reward~2c {COLOR_1 RED}don~27t\n"
"delete an A-OK Mail{END_COLOR_TEXT_1} before getting a\n"
"{COLOR_1 LIGHT_BLUE_2}Thank-You Mail{END_COLOR_TEXT_1} back for it.{EXTRA_MSG}"
" {COLOR_1 RED}Be careful{END_COLOR_TEXT_1} if you~27re going\n"
"to delete any {COLOR_1 LIGHT_BLUE_2}A-OK Mail{END_COLOR_TEXT_1}.{EXTRA_MSG}"
" Okeydoke.\n"
"Choose an #CGA-OK Mail#R\n"
"you don~27t need anymore.";
ALIGNED(4) const char gUnknown_80DE614[] =
"Choose an {COLOR_1 LIGHT_BLUE_2}A-OK Mail{END_COLOR_TEXT_1}\n"
"you don~27t need anymore.");
ALIGNED(4) const char gUnknown_80DE614[] = _(
" ...Uh~2c no?\n"
"You don~27t have any #CGA-OK Mail#R.";
ALIGNED(4) const char gUnknown_80DE648[] =
"You don~27t have any {COLOR_1 LIGHT_BLUE_2}A-OK Mail{END_COLOR_TEXT_1}.");
ALIGNED(4) const char gUnknown_80DE648[] = _(
" Uh~2c OK.\n"
"So~2c you want me to delete every piece\n"
"of mail that you have.";
ALIGNED(4) const char gUnknown_80DE694[] =
"of mail that you have.");
ALIGNED(4) const char gUnknown_80DE694[] = _(
" ...Uh~2c no?\n"
"You don~27t have a single piece of\n"
"mail on you!";
ALIGNED(4) const char gUnknown_80DE6D4[] =
" So~2c delete all your #CGSOS Mail#R~2c\n"
"#CGA-OK Mail#R~2c and your #CGThank-You Mail#R?\n"
"You~27re absolutely~2c positively sure?";
ALIGNED(4) const char gUnknown_80DE754[] =
"mail on you!");
ALIGNED(4) const char gUnknown_80DE6D4[] = _(
" So~2c delete all your {COLOR_1 LIGHT_BLUE_2}SOS Mail{END_COLOR_TEXT_1}~2c\n"
"{COLOR_1 LIGHT_BLUE_2}A-OK Mail{END_COLOR_TEXT_1}~2c and your {COLOR_1 LIGHT_BLUE_2}Thank-You Mail{END_COLOR_TEXT_1}?\n"
"You~27re absolutely~2c positively sure?");
ALIGNED(4) const char gUnknown_80DE754[] = _(
" If I delete any mail~2c it~27s\n"
"gone forever and ever. Bye-bye.\n"
"You~27re really~2c really sure now?";
ALIGNED(4) const char gUnknown_80DE7B8[] =
" OK~2c then.\n"
"Let me save your adventure now.";
ALIGNED(4) const char gUnknown_80DE7E8[] =
" Okeydoke. That~27s all done.";
ALIGNED(4) const char gUnknown_80DE808[] =
" Do you want to delete\n"
"any other mail?";
ALIGNED(4) const char gUnknown_80DE830[] =
" Okeydoke.\n"
"I~27ll delete #CGevery piece of mail#R.";
ALIGNED(4) const char gUnknown_80DE864[] =
" Okeydoke.\n"
"Every bit of mail has been deleted.#P"
" Let me save your adventure.";
ALIGNED(4) const char gUnknown_80DE8B4[] =
" Well~2c hello~2c there!\n"
"This is the #CGFriend Rescue#R counter.\n"
"What can I help you with today?";
ALIGNED(4) const char gUnknown_80DE918[] =
" Help you with anything\n"
"else today?";
ALIGNED(4) const char gUnknown_80DE93C[] =
" Come again anytime!";
"You~27re really~2c really sure now?");
ALIGNED(4) const char gWonderMailErrorText[] =
ALIGNED(4) const char gUnknown_80DE7B8[] = _(
" OK~2c then.\n"
"Let me save your adventure now.");
ALIGNED(4) const char gUnknown_80DE7E8[] = _(
" Okeydoke. That~27s all done.");
ALIGNED(4) const char gUnknown_80DE808[] = _(
" Do you want to delete\n"
"any other mail?");
ALIGNED(4) const char gUnknown_80DE830[] = _(
" Okeydoke.\n"
"I~27ll delete {COLOR_1 LIGHT_BLUE_2}every piece of mail{END_COLOR_TEXT_1}.");
ALIGNED(4) const char gUnknown_80DE864[] = _(
" Okeydoke.\n"
"Every bit of mail has been deleted.{EXTRA_MSG}"
" Let me save your adventure.");
ALIGNED(4) const char gUnknown_80DE8B4[] = _(
" Well~2c hello~2c there!\n"
"This is the {COLOR_1 LIGHT_BLUE_2}Friend Rescue{END_COLOR_TEXT_1} counter.\n"
"What can I help you with today?");
ALIGNED(4) const char gUnknown_80DE918[] = _(
" Help you with anything\n"
"else today?");
ALIGNED(4) const char gUnknown_80DE93C[] = _(
" Come again anytime!");
ALIGNED(4) const char gWonderMailErrorText[] = _(
" ...Uh~2c no?\n"
"Something~27s not working right here...";
ALIGNED(4) const char gWonderMailNumGBAsText[] =
"Something~27s not working right here...");
ALIGNED(4) const char gWonderMailNumGBAsText[] = _(
" ...Uh~2c no?\n"
"The number of GBA systems isn~27t right.\n"
"You~27d better try this again from the top.";
ALIGNED(4) const char gWonderMailWrongModeText[] =
"You~27d better try this again from the top.");
ALIGNED(4) const char gWonderMailWrongModeText[] = _(
" ...Uh~2c no? You~27re not in the\n"
"same mode as your friend.\n"
"You~27d better try this again from the top.";
ALIGNED(4) const char gWonderMailStorageFullText[] =
"You~27d better try this again from the top.");
ALIGNED(4) const char gWonderMailStorageFullText[] = _(
" ...Uh~2c no?\n"
"Your storage space is stuffed full.\n"
"You~27d better make room and try again.";
ALIGNED(4) const char gWonderMailDuplicateText[] =
"You~27d better make room and try again.");
ALIGNED(4) const char gWonderMailDuplicateText[] = _(
" ...Uh~2c no? It looks like\n"
"you received this mail before.\n"
"You can~27t get the same mail twice. ";
ALIGNED(4) const char gWonderMailNotEligibleReceiveText[] =
"You can~27t get the same mail twice. ");
ALIGNED(4) const char gWonderMailNotEligibleReceiveText[] = _(
" ...Uh~2c no?\n"
"You~27re not eligible to receive this mail.";
ALIGNED(4) const char gWonderMailNoRoomText[] =
"You~27re not eligible to receive this mail.");
ALIGNED(4) const char gWonderMailNoRoomText[] = _(
" ...Uh~2c no?\n"
"There~27s no room for you to \n"
"receive any more mail.#P"
"receive any more mail.{EXTRA_MSG}"
" You~27d better delete some\n"
"mail and make room before you come see\n"
"me again about receiving new mail.";
ALIGNED(4) const char gWonderMailFriendErrorText[] =
"me again about receiving new mail.");
ALIGNED(4) const char gWonderMailFriendErrorText[] = _(
" ...Uh~2c no? Looks like your\n"
"friend didn~27t do what needed doing.\n"
"You~27d better do this again from the top.";
ALIGNED(4) const char gWonderMailPasswordIncorrectText[] =
"You~27d better do this again from the top.");
ALIGNED(4) const char gWonderMailPasswordIncorrectText[] = _(
" ...Uh~2c no?\n"
"This here password looks wrong.\n"
"Do you want to try that again?";
ALIGNED(4) const char gWonderMailSOSPasswordIncorrectText[] =
"Do you want to try that again?");
ALIGNED(4) const char gWonderMailSOSPasswordIncorrectText[] = _(
" ...Uh~2c no? This password~27s\n"
"not for any #CGSOS Mail#R.";
ALIGNED(4) const char gWonderMailAOKMailReceivedText[] =
": I received the #CGSOS Mail#R.\n"
"Your adventure will be saved.";
ALIGNED(4) const char mail_filler[] = "pksdir0";
"not for any {COLOR_1 LIGHT_BLUE_2}SOS Mail{END_COLOR_TEXT_1}.");
ALIGNED(4) const char gWonderMailAOKMailReceivedText[] = _(
": I received the {COLOR_1 LIGHT_BLUE_2}SOS Mail{END_COLOR_TEXT_1}.\n"
"Your adventure will be saved.");
ALIGNED(4) const char mail_filler[] = _("pksdir0");

View File

@@ -89,10 +89,7 @@ struct stack_PartnerSprite
};
extern const char gStarterReveal[];
extern const char gPartnerPrompt[];
extern const char gPartnerNickPrompt[];
extern const char gGenderText[];
extern const char gEndIntroText[];
extern u32 gGenderMenu;
extern const char gUnknown_80F42C0;
@@ -113,7 +110,24 @@ extern const char gRelaxedDescription[];
extern const char gLonelyDescription[];
extern const char gQuirkyDescription[];
const char gStarterReveal[] = _("\n{CENTER_ALIGN}The Pokémon $m0!");
const char * const gStarterRevealPtr = gStarterReveal;
const char gPartnerPrompt[] = _(
"{CENTER_ALIGN}This is the final step.{WAIT_PRESS}\n"
"{CENTER_ALIGN}Who would you like to have as a partner?{EXTRA_MSG}"
"{CENTER_ALIGN}Choose the Pokémon you want\n"
"{CENTER_ALIGN}as your partner from this group.");
const char * const gPartnerPromptPtr = gPartnerPrompt;
const char gPartnerNickPrompt[] = _("{CENTER_ALIGN}What is your partner~27s nickname?");
const char * const gPartnerNickPromptPtr = gPartnerNickPrompt;
ALIGNED(4) const char gEndIntroText[] = _(
"{CENTER_ALIGN}OK! We~27re all set!{EXTRA_MSG}"
"{CENTER_ALIGN}Let~27s get you into the\n"
"{CENTER_ALIGN}world of Pokémon!{EXTRA_MSG}"
"{CENTER_ALIGN}Go for it!");
const char * const gEndIntroTextPtr = gEndIntroText;
const char * const gPersonalityTypeDescriptionTable[NUM_PERSONALITIES] =

View File

@@ -5,67 +5,20 @@
#include "constants/species.h"
#include "wonder_mail.h"
struct unkStruct_203B2C4
{
// size: 0x564
u8 unk0;
u8 padding[3];
u32 unk4; // wonder mail link status??
u8 unk8[0x36]; // Probably a buffer for entry
u8 unk3E;
u32 unk40;
u32 linkError; // another link status
u8 filler48[0x218 - 0x48];
s8 unk218;
u32 unk21C;
u8 filler220[0x30C - 0x220];
u32 unk30C;
u8 filler310[0x35C - 0x310];
u32 unk35C;
u8 filler360[0x3BC - 0x360];
u32 unk3BC;
u8 filler3C0[0x41C - 0x3C0];
u32 unk41C;
/* 0x420 */ struct OpenedFile *faceFile;
/* 0x424 */ u8 *faceData;
u16 unk428;
u16 unk42A;
u8 unk42C;
u8 unk42D;
u8 unk42E;
u32 unk430;
u8 padding3[0x534 - 0x434];
s32 unk534;
u32 unk538;
};
extern struct unkStruct_203B2C4 *gUnknown_203B2C4;
extern struct WonderMailStruct_203B2C0 *gUnknown_203B2C0;
extern struct WonderMailStruct_203B2C4 *gUnknown_203B2C4;
struct unkStruct_8095228
{
u32 unk0;
u8 unk4;
u8 padding[0x10 - 0x5];
u8 unkArray[0x10];
u32 unk10;
u8 padding2[0x20 - 0x14];
u32 unk20;
struct unkStruct_41C unk20;
u8 padding3[0x2C - 0x24];
s8 unk2C;
u8 padding4[0x30 - 0x2D];
s8 unk30;
};
// Used as a temp storage when receiveing A-OK Mail
struct unkStruct_80293F4
{
u8 unkArray[0x10];
u32 unk10;
u8 padding[0x30 - 0x14];
};
extern struct WonderMailStruct_203B2C0 *gUnknown_203B2C0;
extern u32 sub_80144A4(s32 *r0);
extern void sub_8011C28(u32);
extern void sub_8095240(u8);
@@ -81,7 +34,10 @@ extern u8 sub_80A2824(u32);
#include "data/wonder_mail_1.h"
extern u32 gUnknown_80DED44;
const struct unkStruct_41C gUnknown_80DED44 =
{
1, 0, 0, 0
};
extern u32 gUnknown_80DDA48;
@@ -94,6 +50,11 @@ extern const char gUnknown_80DF0A0[];
extern const char gUnknown_80DF0E0[];
extern const char gUnknown_80DF138[];
extern const char gUnknown_80DF194[];
extern u32 gUnknown_80DEE44;
extern const char gUnknown_80DF1C0[];
extern const char gUnknown_80DF208[];
extern const char gUnknown_80DF0A0[];
extern u8 sub_809539C(u32, u32);
extern char gUnknown_202E5D8[0x50];
extern char gAvailablePokemonNames[0x50];
@@ -103,7 +64,6 @@ extern u32 sub_8095324(u32);
extern void sub_80141B4(const char *r0, u32, u32 *r1, u32);
extern void nullsub_130(void);
extern void sub_8028348(void);
extern void sub_800641C(void *r0, u8, u8);
extern void ResetUnusedInputStruct();
extern void sub_803084C();
extern u32 sub_8030768(u32);
@@ -196,8 +156,45 @@ extern void sub_801CBB8();
extern void sub_80155F0();
extern void sub_8031E10();
extern void sub_802F2C0();
extern u16 gUnknown_80E5990[];
extern s32 sub_8001658(u32, u32);
extern u32 gUnknown_80E4A40[];
extern u8 sub_8099B94();
extern void sub_8099A5C(u32, u32, u32*);
extern void sub_8099AFC(u32, u32, u32*);
extern void sub_800641C(void *, u32, u32);
extern void ResetUnusedInputStruct();
extern void sub_8099690(u32);
extern void sub_80141B4(const char *r0, u32, u32 *r1, u32);
extern u32 sub_80144A4(s32 *r0);
extern u32 sub_8031DCC(void);
extern void sub_8031E00(void);
extern void sub_8031E10(void);
extern void sub_8030D40(u8, u32);
extern u32 sub_8030768(u32);
extern void sub_803084C(void);
extern s8 sub_80307EC(void);
extern void sub_8006518(u32 *);
extern u8 sub_8012FD8(u32 *r0);
extern void sub_8013114(u32 *, s32 *);
extern void sub_8035CC0(u32 *, u32);
extern void sub_8030810(u32);
extern u32 sub_8030DA0();
extern void sub_8030DE4();
extern void sub_803092C();
extern void sub_8035CF4(u32 *, u32, u32);
extern u32 sub_801CA08(u32);
extern void sub_801CBB8();
extern void sub_801B3C0(struct unkStruct_41C *);
extern u8 sub_801CB24();
extern void sub_801B450();
extern u32 sub_801B410();
extern void sub_801CB5C(u32);
extern void sub_801CCD8();
extern void sub_8011C28(u32);
void sub_8028B04(u32 r0)
@@ -267,7 +264,7 @@ void sub_8028BF0(void)
return;
}
gUnknown_203B2C0->unk40 = 8;
gUnknown_203B2C0->unk544 = 0xffff;
gUnknown_203B2C0->unk544 = -1;
switch(temp)
{
case 0:
@@ -606,7 +603,7 @@ void sub_8028FDC(void)
{
case 8:
return_var = sub_8095228(gUnknown_203B2C0->unk218);
if(sub_80A2824(return_var->unk4) == 0)
if(sub_80A2824(return_var->unkArray[4]) == 0)
{
sub_8028B04(0x1C);
}
@@ -883,56 +880,54 @@ void sub_80293D8(void)
sub_8028B04(0x27);
}
// TODO: pls someone fix this madness of a match - Sese
// This is definitely a fake match with the casting and switch could probably be cleaned up too..
//
// TODO: pls look into this later - Sese
void sub_80293F4(void)
{
u32 return_var;
struct unkStruct_80293F4 temp;
struct unkStruct_8095228 temp;
return_var = sub_80154F0();
MemoryFill8((u8 *)temp.unkArray, 0, 0x30);
MemoryFill8((u8 *)&temp, 0, sizeof(struct unkStruct_8095228));
switch(return_var)
{
case 3:
switch(sub_8039068(0x1C, (gUnknown_203B2C0->unk8), temp.unkArray) - 7)
switch(sub_8039068(0x1C, (gUnknown_203B2C0->unk8), temp.unkArray))
{
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
case 7:
case 8:
case 9:
break;
case 10:
sub_8014248(gWonderMailPasswordIncorrectText, 0, 8, &gUnknown_80DDA48, 0, 4, 0, (u32 *)&gUnknown_203B2C0->faceFile, 0xC);
sub_8028B04(0x28);
break;
case 11:
sub_80141B4(gWonderMailSOSPasswordIncorrectText, 0, (u32 *)&gUnknown_203B2C0->faceFile, 0x10d);
sub_8028B04(7);
break;
case 0:
sub_80141B4(gWonderMailDuplicateText, 0, (u32 *)&gUnknown_203B2C0->faceFile, 0x10d);
sub_8028B04(7);
break;
case 12:
case 13:
case 14:
break;
case 15:
case 16:
break;
case 17:
sub_8014248(gWonderMailPasswordIncorrectText, 0, 8, &gUnknown_80DDA48, 0, 4, 0, (u32 *)&gUnknown_203B2C0->faceFile, 0xC);
sub_8028B04(40);
break;
case 18:
sub_80141B4(gWonderMailSOSPasswordIncorrectText, 0, (u32 *)&gUnknown_203B2C0->faceFile, 0x10d);
sub_8028B04(7);
break;
case 7:
sub_80141B4(gWonderMailDuplicateText, 0, (u32 *)&gUnknown_203B2C0->faceFile, 0x10d);
sub_8028B04(7);
break;
case 19:
case 20:
case 21:
break;
case 22:
sub_8095274(temp.unk10);
temp.unkArray[0] = 2; // Some sort of Ack?
sub_80951BC(temp.unkArray);
sub_80141B4(gWonderMailAOKMailReceivedText, 0, (u32 *)&gUnknown_203B2C0->faceFile, 0x101);
sub_8028B04(0x23);
sub_8028B04(35);
break;
case 16:
case 17:
case 23:
case 24:
default:
break;
}
@@ -1113,7 +1108,7 @@ void sub_80297D4(void)
case 2:
sub_8023C60();
sub_8028B04(1);
gUnknown_203B2C0->unk544 = 0xffff;
gUnknown_203B2C0->unk544 = -1;
break;
case 3:
gUnknown_203B2C0->unk544 = sub_8023B44();
@@ -1349,8 +1344,8 @@ u32 sub_8029B50(void)
ResetUnusedInputStruct();
sub_800641C(0,1,1);
gUnknown_203B2C4 = MemoryAlloc(0x564, 8);
MemoryFill8((u8 *)gUnknown_203B2C4, 0, 0x564);
gUnknown_203B2C4 = MemoryAlloc(sizeof(struct WonderMailStruct_203B2C4), 8);
MemoryFill8((u8 *)gUnknown_203B2C4, 0, sizeof(struct WonderMailStruct_203B2C4));
sub_808D8E0(gUnknown_202E5D8, SPECIES_PELIPPER);
monName = GetMonSpecies(SPECIES_PELIPPER);
@@ -1588,3 +1583,442 @@ void PrintWonderMailLinkError(u32 param_1)
return;
}
}
void sub_8029F98(void)
{
s32 auStack20;
if (sub_80144A4(&auStack20) != 0) {
return;
}
MemoryFill8((u8 *)&gUnknown_203B2C4->unk41C, 0, 4);
gUnknown_203B2C4->unk41C.unk41E = 0;
gUnknown_203B2C4->unk41C.unk41D = 1;
gUnknown_203B2C4->unk41C.unk41C = 0;
if (gUnknown_203B2C4->linkError == 0) {
switch(gUnknown_203B2C4->unk40)
{
case 6:
switch(gUnknown_203B2C4->unk534)
{
case 3:
case 5:
case 6:
// "Thank-You Mail has been sent"
sub_80141B4(gUnknown_80DF194, 0, (u32 *)&gUnknown_203B2C4->faceFile, 0x10d);
break;
case 4:
default:
break;
}
sub_802B2BC(0xD);
break;
case 7:
sub_802B2BC(0x21);
break;
default:
break;
}
}
else
{
PrintWonderMailLinkError(gUnknown_203B2C4->linkError);
sub_802B2BC(0x1F);
}
}
void sub_802A050(void)
{
switch(sub_8031DCC())
{
case 3:
case 2:
sub_8031E10();
ResetUnusedInputStruct();
sub_800641C(&gUnknown_203B2C4->unk3BC, 1, 1);
sub_802B2BC(0x1B);
break;
case 1:
sub_8031E00();
break;
default:
return;
}
}
void sub_802A090(void)
{
s32 temp;
if(sub_80144A4(&temp) == 0)
{
switch(temp)
{
case 7:
sub_802B2BC(6);
break;
case 8:
case 0:
sub_802B2BC(1);
break;
default:
break;
}
}
}
void sub_802A0C8(void)
{
switch(sub_8030768(1))
{
case 2:
sub_803084C();
sub_802B2BC(1);
break;
case 3:
gUnknown_203B2C4->unk218 = sub_80307EC();
sub_802B2BC(0x11);
break;
case 4:
gUnknown_203B2C4->unk4 = 0x10;
gUnknown_203B2C4->unk218 = sub_80307EC();
sub_8006518(&gUnknown_203B2C4->unk3BC);
ResetUnusedInputStruct();
sub_800641C(0,1,1);
sub_8030D40(gUnknown_203B2C4->unk218,0);
sub_802B2BC(0x12);
break;
}
}
void sub_802A158(void)
{
s32 temp;
if(sub_80144A4(&temp) == 0)
{
sub_802B2BC(0x10);
}
}
void sub_802A174(void)
{
s32 temp;
temp = -1;
sub_8030768(0);
if (sub_8012FD8(&gUnknown_203B2C4->unk30C) == 0) {
sub_8013114(&gUnknown_203B2C4->unk30C, &temp);
}
switch(temp)
{
case 0xB:
sub_803084C();
sub_802B2BC(0xe);
break;
case 0xC:
gUnknown_203B2C4->unk4 = 0x2b;
sub_8006518(&gUnknown_203B2C4->unk3BC);
ResetUnusedInputStruct();
sub_800641C(0,1,1);
sub_8030D40(gUnknown_203B2C4->unk218,0);
sub_802B2BC(0x12);
break;
case 0:
case 0xD:
sub_8035CC0(&gUnknown_203B2C4->unk35C,2);
sub_8030810(1);
sub_802B2BC(0x10);
default:
break;
}
}
void sub_802A230(void)
{
switch(sub_8030DA0())
{
case 2:
case 3:
sub_8030DE4();
ResetUnusedInputStruct();
sub_800641C(&gUnknown_203B2C4->unk3BC, 1, 1);
sub_803092C();
if (gUnknown_203B2C4->unk4 == 0x2b) {
sub_8035CF4(&gUnknown_203B2C4->unk21C, 3, 1);
sub_802B2BC(0x11);
}
else {
sub_802B2BC(gUnknown_203B2C4->unk4);
}
break;
default:
break;
}
}
void sub_802A28C(void)
{
gUnknown_203B2C4->unk41C.unk41E = 0;
gUnknown_203B2C4->unk41C.unk41D = 1;
gUnknown_203B2C4->unk41C.unk41C = 0;
switch(sub_801CA08(1))
{
case 2:
sub_801CBB8();
sub_802B2BC(1);
break;
case 3:
gUnknown_203B2C4->unk41C.unk41E = sub_801CB24();
sub_802B2BC(0x14);
break;
case 4:
gUnknown_203B2C4->unk4 = 0x13;
gUnknown_203B2C4->unk41C.unk41E = sub_801CB24();
sub_8006518(&gUnknown_203B2C4->unk3BC);
ResetUnusedInputStruct();
sub_800641C(0,1,1);
sub_801B3C0(&gUnknown_203B2C4->unk41C);
sub_802B2BC(0x15);
break;
}
}
void sub_802A33C(void)
{
switch(sub_801B410())
{
case 2:
case 3:
sub_801B450();
ResetUnusedInputStruct();
sub_800641C(&gUnknown_203B2C4->unk3BC,1,1);
sub_801CB5C(1);
if (gUnknown_203B2C4->unk4 == 0x2b) {
sub_8035CF4(&gUnknown_203B2C4->unk21C,3,1);
sub_802B2BC(0x14);
}
else {
sub_802B2BC(gUnknown_203B2C4->unk4);
}
break;
case 1:
default:
break;
}
}
void sub_802A39C(void)
{
s32 temp;
temp = -1;
sub_801CA08(0);
if (sub_8012FD8(&gUnknown_203B2C4->unk30C) == 0) {
sub_8013114(&gUnknown_203B2C4->unk30C, &temp);
}
switch(temp)
{
case 0xB:
sub_801CBB8();
sub_802B2BC(0xC);
break;
case 0xC:
gUnknown_203B2C4->unk4 = 0x2b;
sub_8006518(&gUnknown_203B2C4->unk3BC);
ResetUnusedInputStruct();
sub_800641C(0,1,1);
sub_801B3C0(&gUnknown_203B2C4->unk41C);
sub_802B2BC(0x15);
break;
case 0:
case 0xD:
sub_8035CC0(&gUnknown_203B2C4->unk35C, 3);
sub_801CCD8();
sub_802B2BC(0x13);
default:
break;
}
}
void sub_802A458(void)
{
s32 temp;
if(sub_80144A4(&temp) == 0)
{
sub_802B2BC(0xD);
}
}
void sub_802A474(void)
{
s32 temp;
if(sub_80144A4(&temp) == 0)
{
sub_802B2BC(0x3);
}
}
void sub_802A490(void)
{
s32 temp;
if(sub_80144A4(&temp) == 0)
{
sub_802B2BC(0x3);
}
}
void sub_802A4AC(void)
{
s32 temp;
if(sub_80144A4(&temp) == 0)
{
sub_802B2BC(0x18);
sub_8011C28(1);
sub_8012574(0);
}
}
void sub_802A4D4(void)
{
s32 temp;
if(sub_80144A4(&temp) == 0)
{
sub_802B2BC(0x1A);
}
}
void sub_802A4F0(void)
{
s32 temp;
if(sub_80144A4(&temp) == 0)
{
sub_802B2BC(0x27);
}
}
void sub_802A50C(void)
{
u8 uVar1;
struct unkStruct_8095228 *puVar5;
u32 return_var;
struct unkStruct_8095228 temp;
return_var = sub_80154F0();
MemoryFill8((u8 *)&temp, 0, sizeof(struct unkStruct_8095228));
switch(return_var)
{
case 3:
switch(sub_8039068(0x20,gUnknown_203B2C4->unk8,temp.unkArray))
{
case 7:
case 8:
case 9:
case 0xA:
case 0xD:
case 0xE:
case 0xF:
case 0x10:
break;
case 0x11:
// Wrong password
sub_8014248(gUnknown_80DF1C0,0,7,&gUnknown_80DEE44,0,4,0,(u32 *)&gUnknown_203B2C4->faceFile,0xc);
sub_802B2BC(0x28);
break;
case 0x14:
// Incorrect password
sub_80141B4(gUnknown_80DF208,0,(u32 *)&gUnknown_203B2C4->faceFile,0x10d);
sub_802B2BC(0x1f);
break;
case 0xB:
// Not eligible to receive
sub_80141B4(gUnknown_80DF0A0,0,(u32 *)&gUnknown_203B2C4->faceFile,0x10d);
sub_802B2BC(0x1f);
break;
case 0x18:
// I think this is when password works successfully
uVar1 = sub_809539C(4,temp.unk10);
puVar5 = sub_8095228(uVar1);
*puVar5 = temp;
puVar5->unkArray[0] = 6;
gUnknown_203B2C4->unk430 = temp.unk10;
sub_802B2BC(0x21);
break;
default:
break;
}
sub_80155F0();
break;
case 2:
sub_80155F0();
ResetUnusedInputStruct();
sub_800641C(&gUnknown_203B2C4->unk3BC, 1, 1);
sub_802B2BC(1);
break;
}
}
void sub_802A68C(void)
{
s32 temp;
if (sub_80144A4(&temp) == 0) {
if (sub_8012600() == 0) {
sub_8012750();
sub_802B2BC(0xd);
}
}
}
void sub_802A6B4(void)
{
int iVar2;
u32 temp;
if (sub_80144A4(&temp) == 0) {
if (sub_8012600() == 0) {
iVar2 = sub_8012744();
sub_8012750();
if (iVar2 == 0) {
sub_802B2BC(0x20);
}
else {
sub_802B2BC(3);
}
}
}
}
void sub_802A6F0(void)
{
s32 temp;
if (sub_80144A4(&temp) == 0) {
sub_802B2BC(0x18);
sub_8011C28(1);
sub_8012574(0);
}
}
void sub_802A718(void)
{
s32 temp;
if (sub_80144A4(&temp) == 0) {
sub_802B2BC(0x25);
sub_8011C28(1);
sub_8012574(0);
}
}
void sub_802A740(void)
{
s32 temp;
if (sub_80144A4(&temp) == 0) {
sub_802B2BC(0x1e);
}
}

View File

@@ -1,6 +1,11 @@
#include "global.h"
#include "save.h"
#define EXIT_TO_MAIN_MENU 5
#define PASSWORD_SUCCESS 13
#define PASSWORD_INVALID 19
#define PASSWORD_ENTRY_SCREEN 18
struct unkWonderMailData
{
u8 unk0[20];
@@ -10,7 +15,7 @@ struct unkStruct_203B3E8
{
// size: 0x49C
u8 unk0; // state variable?
u8 unk1[0x36]; // Wonder Mail Buffer...
u8 PasswordEntryBuffer[0x36]; // Wonder Mail Buffer...
struct unkWonderMailData unk38; // 0x30 - 0x14
u8 unk38_1[0x30 - 20]; // TODO: split for the ldm/stm stuff (fix dumb hack)
u8 fill68[0x1EC - 0x68];
@@ -94,7 +99,7 @@ bool8 CreateWonderMailMenu(void)
MemoryFill8((u8 *)gUnknown_203B3E8, 0, sizeof(struct unkStruct_203B3E8));
for(iVar2 = 0; iVar2 < 0x36; iVar2++){
gUnknown_203B3E8->unk1[iVar2] = 0;
gUnknown_203B3E8->PasswordEntryBuffer[iVar2] = 0;
}
gUnknown_203B3E8->unk490 = 3;
@@ -111,14 +116,14 @@ u8 UpdateWonderMailMenu(void)
case 4:
sub_8039A18();
break;
case 5: // When you exit out of the menu
case EXIT_TO_MAIN_MENU: // When you exit out of the menu
return 3;
case 8:
sub_8039AA8();
break;
case 11: // "Please enter the Wonder Mail Password" Screen
case 11:
break;
case 12: // Password Entry
case 12:
sub_8039B14();
break;
case 6:
@@ -130,28 +135,28 @@ u8 UpdateWonderMailMenu(void)
case 7:
sub_8039D88();
break;
case 13:
case PASSWORD_SUCCESS:
sub_8039D28();
break;
case 14:
sub_8039D68();
break;
case 15:
case 15: // Saving adventure
sub_8039DA4();
break;
case 16:
case 16: // Display "Recieved Wonder Mail was added" and go back to main menu
sub_8039DCC();
break;
case 10:
sub_8039B3C();
break;
case 17:
case 17: // "Please enter the Wonder Mail Password" Screen
sub_8039D0C();
break;
case 18:
case PASSWORD_ENTRY_SCREEN: // Password Entry
sub_8039C60();
break;
case 19:
case PASSWORD_INVALID:
sub_8039DE8();
}
return 0;
@@ -189,7 +194,7 @@ void sub_8039A18(void)
break;
case 0:
case 8:
sub_803A1C0(5);
sub_803A1C0(EXIT_TO_MAIN_MENU);
break;
}
}
@@ -255,7 +260,7 @@ void sub_8039B58(void)
sub_803A1C0(7);
break;
case 10:
sub_803A1C0(13);
sub_803A1C0(PASSWORD_SUCCESS);
break;
}
}
@@ -306,7 +311,7 @@ void sub_8039BAC(u32 arg)
case 10:
case 11:
case 12:
case 13:
case PASSWORD_SUCCESS:
default:
// "Communication Error"
sub_80141B4(&gUnknown_80E7914, 0, 0, 0x101);
@@ -326,23 +331,25 @@ void sub_8039C60(void)
sub_80155F0();
ResetUnusedInputStruct();
sub_800641C(&gUnknown_203B3E8->unk1EC,1,1);
if ( !sub_803D358(gUnknown_203B3E8->unk1,&gUnknown_203B3E8->unk38) || !sub_80959C0(&gUnknown_203B3E8->unk38) )
if ( !sub_803D358(gUnknown_203B3E8->PasswordEntryBuffer, &gUnknown_203B3E8->unk38) || !sub_80959C0(&gUnknown_203B3E8->unk38) )
{
sub_803A1C0(19);
// Invalid password
sub_803A1C0(PASSWORD_INVALID);
}
else {
// Copying some data but don't know what or structure
// Successful password
// Copy the decoded data to another buffer?
gUnknown_203B3E8->unk3C0 = gUnknown_203B3E8->unk38;
gUnknown_203B3E8->unk498 = 1;
sub_803A1C0(13);
sub_803A1C0(PASSWORD_SUCCESS);
}
break;
case 2:
sub_80155F0();
ResetUnusedInputStruct();
sub_800641C(&gUnknown_203B3E8->unk1EC,1,1);
sub_803A1C0(5);
sub_803A1C0(EXIT_TO_MAIN_MENU);
break;
}
}
@@ -352,7 +359,7 @@ void sub_8039D0C(void)
int iVar2;
if(sub_80144A4(&iVar2) == 0)
{
sub_803A1C0(0x12);
sub_803A1C0(PASSWORD_ENTRY_SCREEN);
}
}
@@ -407,22 +414,24 @@ void sub_8039DCC(void)
int iVar2;
if(sub_80144A4(&iVar2) == 0)
{
sub_803A1C0(5);
sub_803A1C0(EXIT_TO_MAIN_MENU);
}
}
void sub_8039DE8(void)
{
int iVar2;
// Prompt to re-enter password
if(sub_80144A4(&iVar2) == 0)
{
switch(iVar2)
{
case 6:
case 6: // Yes
sub_803A1C0(0x11);
break;
case 0:
sub_803A1C0(5);
case 0: // No
sub_803A1C0(EXIT_TO_MAIN_MENU);
break;
}
}

View File

@@ -1,400 +0,0 @@
#include "global.h"
#include "file_system.h"
struct unkStruct_203B2C4
{
// size: 0x564
u8 unk0;
u8 padding[3];
u32 unk4; // wonder mail link status??
u8 unk8[0x36];
u8 unk3E;
u32 unk40;
u32 linkError; // another link status
u8 filler48[0x218 - 0x48];
s8 unk218;
u32 unk21C;
u8 filler220[0x30C - 0x220];
u32 unk30C;
u8 filler310[0x35C - 0x310];
u32 unk35C;
u8 filler360[0x3BC - 0x360];
u32 unk3BC;
u8 filler3C0[0x41C - 0x3C0];
u8 unk41C[4]; // TODO: unify this with wonder_mail.c
struct OpenedFile *faceFile;
u8 *faceData;
u16 unk428;
u16 unk42A;
u8 unk42C;
u8 unk42D;
u8 unk42E;
u32 unk430;
u8 filler434[0x534 - 0x434];
s32 unk534;
u32 unk538;
};
extern struct unkStruct_203B2C4 *gUnknown_203B2C4;
extern u16 gUnknown_80E5990[];
extern s32 sub_8001658(u32, u32);
extern u32 gUnknown_80E4A40[];
extern u8 sub_8099B94();
extern void sub_8099A5C(u32, u32, u32*);
extern void sub_8099AFC(u32, u32, u32*);
extern void sub_800641C(void *, u32, u32);
extern void ResetUnusedInputStruct();
extern void sub_8099690(u32);
extern void sub_80141B4(u32 *r0, u32, u32 *r1, u32);
extern void MemoryFill8(u8 *dest, u8 value, s32 size);
extern u32 gUnknown_80DF194;
extern void PrintWonderMailLinkError(u32 param_1);
extern void sub_802B2BC(u32);
extern u32 sub_80144A4(s32 *r0);
extern u32 sub_8031DCC(void);
extern void sub_8031E00(void);
extern void sub_8031E10(void);
extern void sub_8030D40(u8, u32);
extern u32 sub_8030768(u32);
extern void sub_803084C(void);
extern s8 sub_80307EC(void);
extern void sub_8006518(u32 *);
extern u8 sub_8012FD8(u32 *r0);
extern void sub_8013114(u32 *, s32 *);
extern void sub_8035CC0(u32 *, u32);
extern void sub_8030810(u32);
extern u32 sub_8030DA0();
extern void sub_8030DE4();
extern void sub_803092C();
extern void sub_8035CF4(u32 *, u32, u32);
extern u32 sub_801CA08(u32);
extern void sub_801CBB8();
extern void sub_801B3C0(u8 *);
extern u8 sub_801CB24();
extern void sub_801B450();
extern u32 sub_801B410();
extern void sub_801CB5C(u32);
extern void sub_801CCD8();
extern void sub_8011C28(u32);
extern void sub_8012574(u32);
void sub_8029F98(void)
{
s32 auStack20;
if (sub_80144A4(&auStack20) != 0) {
return;
}
MemoryFill8(gUnknown_203B2C4->unk41C, 0, 4);
gUnknown_203B2C4->unk41C[2] = 0;
gUnknown_203B2C4->unk41C[1] = 1;
gUnknown_203B2C4->unk41C[0] = 0;
if (gUnknown_203B2C4->linkError == 0) {
switch(gUnknown_203B2C4->unk40)
{
case 6:
switch(gUnknown_203B2C4->unk534)
{
case 3:
case 5:
case 6:
// "Thank-You Mail has been sent"
sub_80141B4(&gUnknown_80DF194, 0, (u32 *)&gUnknown_203B2C4->faceFile, 0x10d);
break;
case 4:
default:
break;
}
sub_802B2BC(0xD);
break;
case 7:
sub_802B2BC(0x21);
break;
default:
break;
}
}
else
{
PrintWonderMailLinkError(gUnknown_203B2C4->linkError);
sub_802B2BC(0x1F);
}
}
void sub_802A050(void)
{
switch(sub_8031DCC())
{
case 3:
case 2:
sub_8031E10();
ResetUnusedInputStruct();
sub_800641C(&gUnknown_203B2C4->unk3BC, 1, 1);
sub_802B2BC(0x1B);
break;
case 1:
sub_8031E00();
break;
default:
return;
}
}
void sub_802A090(void)
{
s32 temp;
if(sub_80144A4(&temp) == 0)
{
switch(temp)
{
case 7:
sub_802B2BC(6);
break;
case 8:
case 0:
sub_802B2BC(1);
break;
default:
break;
}
}
}
void sub_802A0C8(void)
{
switch(sub_8030768(1))
{
case 2:
sub_803084C();
sub_802B2BC(1);
break;
case 3:
gUnknown_203B2C4->unk218 = sub_80307EC();
sub_802B2BC(0x11);
break;
case 4:
gUnknown_203B2C4->unk4 = 0x10;
gUnknown_203B2C4->unk218 = sub_80307EC();
sub_8006518(&gUnknown_203B2C4->unk3BC);
ResetUnusedInputStruct();
sub_800641C(0,1,1);
sub_8030D40(gUnknown_203B2C4->unk218,0);
sub_802B2BC(0x12);
break;
}
}
void sub_802A158(void)
{
s32 temp;
if(sub_80144A4(&temp) == 0)
{
sub_802B2BC(0x10);
}
}
void sub_802A174(void)
{
s32 temp;
temp = -1;
sub_8030768(0);
if (sub_8012FD8(&gUnknown_203B2C4->unk30C) == 0) {
sub_8013114(&gUnknown_203B2C4->unk30C, &temp);
}
switch(temp)
{
case 0xB:
sub_803084C();
sub_802B2BC(0xe);
break;
case 0xC:
gUnknown_203B2C4->unk4 = 0x2b;
sub_8006518(&gUnknown_203B2C4->unk3BC);
ResetUnusedInputStruct();
sub_800641C(0,1,1);
sub_8030D40(gUnknown_203B2C4->unk218,0);
sub_802B2BC(0x12);
break;
case 0:
case 0xD:
sub_8035CC0(&gUnknown_203B2C4->unk35C,2);
sub_8030810(1);
sub_802B2BC(0x10);
default:
break;
}
}
void sub_802A230(void)
{
switch(sub_8030DA0())
{
case 2:
case 3:
sub_8030DE4();
ResetUnusedInputStruct();
sub_800641C(&gUnknown_203B2C4->unk3BC, 1, 1);
sub_803092C();
if (gUnknown_203B2C4->unk4 == 0x2b) {
sub_8035CF4(&gUnknown_203B2C4->unk21C, 3, 1);
sub_802B2BC(0x11);
}
else {
sub_802B2BC(gUnknown_203B2C4->unk4);
}
break;
default:
break;
}
}
void sub_802A28C(void)
{
gUnknown_203B2C4->unk41C[2] = 0;
gUnknown_203B2C4->unk41C[1] = 1;
gUnknown_203B2C4->unk41C[0] = 0;
switch(sub_801CA08(1))
{
case 2:
sub_801CBB8();
sub_802B2BC(1);
break;
case 3:
gUnknown_203B2C4->unk41C[2] = sub_801CB24();
sub_802B2BC(0x14);
break;
case 4:
gUnknown_203B2C4->unk4 = 0x13;
gUnknown_203B2C4->unk41C[2] = sub_801CB24();
sub_8006518(&gUnknown_203B2C4->unk3BC);
ResetUnusedInputStruct();
sub_800641C(0,1,1);
sub_801B3C0(gUnknown_203B2C4->unk41C);
sub_802B2BC(0x15);
break;
}
}
void sub_802A33C(void)
{
switch(sub_801B410())
{
case 2:
case 3:
sub_801B450();
ResetUnusedInputStruct();
sub_800641C(&gUnknown_203B2C4->unk3BC,1,1);
sub_801CB5C(1);
if (gUnknown_203B2C4->unk4 == 0x2b) {
sub_8035CF4(&gUnknown_203B2C4->unk21C,3,1);
sub_802B2BC(0x14);
}
else {
sub_802B2BC(gUnknown_203B2C4->unk4);
}
break;
case 1:
default:
break;
}
}
void sub_802A39C(void)
{
s32 temp;
temp = -1;
sub_801CA08(0);
if (sub_8012FD8(&gUnknown_203B2C4->unk30C) == 0) {
sub_8013114(&gUnknown_203B2C4->unk30C, &temp);
}
switch(temp)
{
case 0xB:
sub_801CBB8();
sub_802B2BC(0xC);
break;
case 0xC:
gUnknown_203B2C4->unk4 = 0x2b;
sub_8006518(&gUnknown_203B2C4->unk3BC);
ResetUnusedInputStruct();
sub_800641C(0,1,1);
sub_801B3C0(gUnknown_203B2C4->unk41C);
sub_802B2BC(0x15);
break;
case 0:
case 0xD:
sub_8035CC0(&gUnknown_203B2C4->unk35C, 3);
sub_801CCD8();
sub_802B2BC(0x13);
default:
break;
}
}
void sub_802A458(void)
{
s32 temp;
if(sub_80144A4(&temp) == 0)
{
sub_802B2BC(0xD);
}
}
void sub_802A474(void)
{
s32 temp;
if(sub_80144A4(&temp) == 0)
{
sub_802B2BC(0x3);
}
}
void sub_802A490(void)
{
s32 temp;
if(sub_80144A4(&temp) == 0)
{
sub_802B2BC(0x3);
}
}
void sub_802A4AC(void)
{
s32 temp;
if(sub_80144A4(&temp) == 0)
{
sub_802B2BC(0x18);
sub_8011C28(1);
sub_8012574(0);
}
}
void sub_802A4D4(void)
{
s32 temp;
if(sub_80144A4(&temp) == 0)
{
sub_802B2BC(0x1A);
}
}
void sub_802A4F0(void)
{
s32 temp;
if(sub_80144A4(&temp) == 0)
{
sub_802B2BC(0x27);
}
}

View File

@@ -92,7 +92,7 @@ u32 sub_8027F88(void)
gUnknown_203B2C0->unk42E = 0;
gUnknown_203B2C0->unk428 = 2;
gUnknown_203B2C0->unk42A = 8;
for(counter = 0; counter < 0x36; counter++){
for(counter = 0; counter < 0x36; counter++){
gUnknown_203B2C0->unk8[counter] = 0;
}
gUnknown_203B2C0->unk0 = 0x3D;

View File

@@ -234,7 +234,7 @@ void CFile::TryConvertString()
if (noTerminator)
std::printf(" }");
else
std::printf("0xFF }");
std::printf("0x00 }");
}
bool CFile::CheckIdentifier(const std::string& ident)