diff options
-rwxr-xr-x | Makefile | 78 | ||||
-rw-r--r-- | asm/code_80521D0.s | 4 | ||||
-rw-r--r-- | asm/code_809D148.s | 2 | ||||
-rw-r--r-- | asm/exclusive_pokemon.s | 12 | ||||
-rw-r--r-- | asm/wonder_mail_1.s | 280 | ||||
-rw-r--r-- | charmap.txt | 40 | ||||
-rw-r--r-- | data/data_80B9BB8.s | 2 | ||||
-rw-r--r-- | data/data_80DED44.s | 23 | ||||
-rw-r--r-- | data/personality_test.s | 29 | ||||
-rw-r--r-- | data/text/wonder_mail_1.inc | 113 | ||||
-rw-r--r-- | include/wonder_mail.h | 43 | ||||
-rwxr-xr-x | ld_script.txt | 1 | ||||
-rw-r--r-- | src/adventure_log.c | 23 | ||||
-rw-r--r-- | src/code_80118A4_1.c | 0 | ||||
-rw-r--r-- | src/data/formatted_type_names.h | 36 | ||||
-rw-r--r-- | src/data/nature_description.h | 439 | ||||
-rw-r--r-- | src/data/wonder_mail_1.h | 288 | ||||
-rw-r--r-- | src/personality_test.c | 20 | ||||
-rw-r--r-- | src/wonder_mail.c | 598 | ||||
-rw-r--r-- | src/wonder_mail_main_menu_pre.c | 57 | ||||
-rw-r--r-- | src/wonder_mail_mid.c | 400 | ||||
-rw-r--r-- | src/wonder_mail_pre.c | 2 | ||||
-rw-r--r-- | tools/preproc/c_file.cpp | 2 |
23 files changed, 1170 insertions, 1322 deletions
@@ -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 - -$(BUILD_DIR)/data/%.o: data/%.s $$(ASM_DEP) - $(PREPROC) $< charmap.txt | $(CPP) -I include | $(AS) $(ASFLAGS) -o $@ +$(ELF): $(LD_SCRIPT) $(ALL_OBJECTS) $(LIBC) libagbsyscall + cd $(BUILD_DIR) && $(LD) -T ld_script.ld -Map ../../$(MAP) -o ../../$@ $(LIB) -$(BUILD_DIR)/%.o: %.s $$(ASM_DEP) - $(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 -libagbsyscall: - @$(MAKE) -C libagbsyscall TOOLCHAIN=$(TOOLCHAIN) diff --git a/asm/code_80521D0.s b/asm/code_80521D0.s index a2e7f3d..8e13cf1 100644 --- a/asm/code_80521D0.s +++ b/asm/code_80521D0.s @@ -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 diff --git a/asm/code_809D148.s b/asm/code_809D148.s index fa42327..2ca52f3 100644 --- a/asm/code_809D148.s +++ b/asm/code_809D148.s @@ -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 diff --git a/asm/exclusive_pokemon.s b/asm/exclusive_pokemon.s index f52efbc..593b931 100644 --- a/asm/exclusive_pokemon.s +++ b/asm/exclusive_pokemon.s @@ -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: diff --git a/asm/wonder_mail_1.s b/asm/wonder_mail_1.s index c0407c9..5bd22cf 100644 --- a/asm/wonder_mail_1.s +++ b/asm/wonder_mail_1.s @@ -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 diff --git a/charmap.txt b/charmap.txt index 0567a8d..f1d932b 100644 --- a/charmap.txt +++ b/charmap.txt @@ -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) diff --git a/data/data_80B9BB8.s b/data/data_80B9BB8.s index c203289..0801563 100644 --- a/data/data_80B9BB8.s +++ b/data/data_80B9BB8.s @@ -2973,5 +2973,3 @@ gUnknown_80DDB24: @ 80DDB24 gUnknown_80DDB60: @ 80DDB60 .incbin "baserom.gba", 0xDDB60, 0x48 - .include "data/text/wonder_mail_1.inc" - diff --git a/data/data_80DED44.s b/data/data_80DED44.s index 21f1673..ce3aad8 100644 --- a/data/data_80DED44.s +++ b/data/data_80DED44.s @@ -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 diff --git a/data/personality_test.s b/data/personality_test.s index 541dec4..b6cd987 100644 --- a/data/personality_test.s +++ b/data/personality_test.s @@ -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 diff --git a/data/text/wonder_mail_1.inc b/data/text/wonder_mail_1.inc deleted file mode 100644 index 9b50564..0000000 --- a/data/text/wonder_mail_1.inc +++ /dev/null @@ -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 diff --git a/include/wonder_mail.h b/include/wonder_mail.h index 39cc9b2..b56fe32 100644 --- a/include/wonder_mail.h +++ b/include/wonder_mail.h @@ -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); diff --git a/ld_script.txt b/ld_script.txt index 2a7c039..87e884d 100755 --- a/ld_script.txt +++ b/ld_script.txt @@ -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); diff --git a/src/adventure_log.c b/src/adventure_log.c index 2a02840..420d71d 100644 --- a/src/adventure_log.c +++ b/src/adventure_log.c @@ -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 *); diff --git a/src/code_80118A4_1.c b/src/code_80118A4_1.c deleted file mode 100644 index e69de29..0000000 --- a/src/code_80118A4_1.c +++ /dev/null diff --git a/src/data/formatted_type_names.h b/src/data/formatted_type_names.h index e973056..16deaad 100644 --- a/src/data/formatted_type_names.h +++ b/src/data/formatted_type_names.h @@ -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}"); diff --git a/src/data/nature_description.h b/src/data/nature_description.h index a8b396f..7281705 100644 --- a/src/data/nature_description.h +++ b/src/data/nature_description.h @@ -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..."); diff --git a/src/data/wonder_mail_1.h b/src/data/wonder_mail_1.h index 7b840d6..19c49dd 100644 --- a/src/data/wonder_mail_1.h +++ b/src/data/wonder_mail_1.h @@ -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" + "There appear to be no Pokémon in your\n" + "Friend Areas. What do you want to do?"); + +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" + "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_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 #CGSOS Mail#R first.\n" - "That~27s what you need to do."; + "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[] = +ALIGNED(4) const char gUnknown_80DE280[] = _( " Okeydoke!\n" - "Let me show you to the rescue site."; + "Let me show you to the rescue site."); -ALIGNED(4) const char gUnknown_80DE2B0[] = +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."; - -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" + "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 {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[] = + "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[] = + "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[] = + "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[] = + "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.#P" - " Let me save your adventure."; -ALIGNED(4) const char gUnknown_80DE8B4[] = + "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 #CGFriend Rescue#R counter.\n" - "What can I help you with today?"; -ALIGNED(4) const char gUnknown_80DE918[] = + "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!"; + "else today?"); -ALIGNED(4) const char gWonderMailErrorText[] = +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"); diff --git a/src/personality_test.c b/src/personality_test.c index 67f0f9f..974ca03 100644 --- a/src/personality_test.c +++ b/src/personality_test.c @@ -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] = diff --git a/src/wonder_mail.c b/src/wonder_mail.c index da8f44c..656d156 100644 --- a/src/wonder_mail.c +++ b/src/wonder_mail.c @@ -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: + case 11: + case 12: + case 13: + case 14: + case 15: + case 16: + break; + case 17: sub_8014248(gWonderMailPasswordIncorrectText, 0, 8, &gUnknown_80DDA48, 0, 4, 0, (u32 *)&gUnknown_203B2C0->faceFile, 0xC); - sub_8028B04(0x28); + sub_8028B04(40); break; - case 11: + case 18: sub_80141B4(gWonderMailSOSPasswordIncorrectText, 0, (u32 *)&gUnknown_203B2C0->faceFile, 0x10d); sub_8028B04(7); break; - case 0: + case 7: sub_80141B4(gWonderMailDuplicateText, 0, (u32 *)&gUnknown_203B2C0->faceFile, 0x10d); sub_8028B04(7); break; - case 12: - case 13: - case 14: + case 19: + case 20: + case 21: break; - case 15: + 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); + } +} diff --git a/src/wonder_mail_main_menu_pre.c b/src/wonder_mail_main_menu_pre.c index c1c5157..288d352 100644 --- a/src/wonder_mail_main_menu_pre.c +++ b/src/wonder_mail_main_menu_pre.c @@ -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; } } diff --git a/src/wonder_mail_mid.c b/src/wonder_mail_mid.c deleted file mode 100644 index 62755b1..0000000 --- a/src/wonder_mail_mid.c +++ /dev/null @@ -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); - } -} diff --git a/src/wonder_mail_pre.c b/src/wonder_mail_pre.c index 94ab51f..e6c2ecb 100644 --- a/src/wonder_mail_pre.c +++ b/src/wonder_mail_pre.c @@ -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; diff --git a/tools/preproc/c_file.cpp b/tools/preproc/c_file.cpp index b996a04..59426ef 100644 --- a/tools/preproc/c_file.cpp +++ b/tools/preproc/c_file.cpp @@ -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) |