diff options
-rw-r--r-- | asm/save_menu_util.s | 149 | ||||
-rw-r--r-- | baserom.ips | bin | 413412 -> 399180 bytes | |||
-rw-r--r-- | data/field_effect_helpers.s | 20 | ||||
-rw-r--r-- | data/unknown_serial_data.s | 2 | ||||
-rw-r--r-- | ld_script.txt | 2 | ||||
-rw-r--r-- | src/save_menu_util.c | 57 |
6 files changed, 72 insertions, 158 deletions
diff --git a/asm/save_menu_util.s b/asm/save_menu_util.s deleted file mode 100644 index 8ebfc3731..000000000 --- a/asm/save_menu_util.s +++ /dev/null @@ -1,149 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start SaveStatToString -SaveStatToString: @ 80F7FCC - push {r4-r7,lr} - lsls r0, 24 - lsrs r3, r0, 24 - lsls r2, 24 - lsrs r2, 24 - adds r5, r1, 0 - movs r1, 0xFC - strb r1, [r5] - adds r5, 0x1 - movs r0, 0x1 - strb r0, [r5] - adds r5, 0x1 - strb r2, [r5] - adds r5, 0x1 - strb r1, [r5] - adds r5, 0x1 - movs r0, 0x3 - strb r0, [r5] - adds r5, 0x1 - adds r2, 0x1 - strb r2, [r5] - adds r5, 0x1 - cmp r3, 0x5 - bhi _080F80D8 - lsls r0, r3, 2 - ldr r1, _080F8008 @ =_080F800C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080F8008: .4byte _080F800C - .align 2, 0 -_080F800C: - .4byte _080F8024 - .4byte _080F8034 - .4byte _080F805C - .4byte _080F8098 - .4byte _080F80A8 - .4byte _080F806C -_080F8024: - ldr r0, _080F8030 @ =gSaveBlock2Ptr - ldr r1, [r0] - adds r0, r5, 0 - bl StringCopy - b _080F80D8 - .align 2, 0 -_080F8030: .4byte gSaveBlock2Ptr -_080F8034: - bl IsNationalPokedexEnabled - cmp r0, 0 - beq _080F8044 - movs r0, 0x1 - bl GetNationalPokedexCount - b _080F804A -_080F8044: - movs r0, 0x1 - bl GetKantoPokedexCount -_080F804A: - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - adds r0, r5, 0 - movs r2, 0 - movs r3, 0x3 - bl ConvertIntToDecimalStringN - b _080F80D8 -_080F805C: - ldr r4, _080F8068 @ =gSaveBlock2Ptr - ldr r0, [r4] - ldrh r1, [r0, 0xE] - adds r0, r5, 0 - movs r2, 0 - b _080F8076 - .align 2, 0 -_080F8068: .4byte gSaveBlock2Ptr -_080F806C: - ldr r4, _080F8094 @ =gSaveBlock2Ptr - ldr r0, [r4] - ldrh r1, [r0, 0xE] - adds r0, r5, 0 - movs r2, 0x1 -_080F8076: - movs r3, 0x3 - bl ConvertIntToDecimalStringN - adds r5, r0, 0 - movs r0, 0xF0 - strb r0, [r5] - adds r5, 0x1 - ldr r0, [r4] - ldrb r1, [r0, 0x10] - adds r0, r5, 0 - movs r2, 0x2 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - b _080F80D8 - .align 2, 0 -_080F8094: .4byte gSaveBlock2Ptr -_080F8098: - ldr r0, _080F80A4 @ =gMapHeader - ldrb r1, [r0, 0x14] - adds r0, r5, 0 - bl sub_80C4DF8 - b _080F80D8 - .align 2, 0 -_080F80A4: .4byte gMapHeader -_080F80A8: - movs r4, 0x82 - lsls r4, 4 - movs r6, 0 - adds r7, r5, 0x1 -_080F80B0: - lsls r0, r4, 16 - lsrs r0, 16 - bl FlagGet - lsls r0, 24 - cmp r0, 0 - beq _080F80C0 - adds r6, 0x1 -_080F80C0: - adds r4, 0x1 - ldr r0, _080F80E0 @ =0x00000827 - cmp r4, r0 - ble _080F80B0 - adds r0, r6, 0 - subs r0, 0x5F - strb r0, [r5] - adds r5, r7, 0 - movs r0, 0xA - strb r0, [r5] - movs r0, 0xFF - strb r0, [r5, 0x1] -_080F80D8: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080F80E0: .4byte 0x00000827 - thumb_func_end SaveStatToString - - .align 2, 0 @ Don't pad with nop. diff --git a/baserom.ips b/baserom.ips Binary files differindex 4a40d3337..d4a0a8bc0 100644 --- a/baserom.ips +++ b/baserom.ips diff --git a/data/field_effect_helpers.s b/data/field_effect_helpers.s index 429df9f61..7ad7b168a 100644 --- a/data/field_effect_helpers.s +++ b/data/field_effect_helpers.s @@ -7,22 +7,28 @@ .align 2 gUnknown_83FECCC:: @ 83FECCC - .byte 0x0c, 0x00, 0x1c, 0x00, 0x2c, 0x00 + .2byte 0x0c, 0x1c, 0x2c gUnknown_83FECD2:: @ 83FECD2 - .incbin "baserom.gba", 0x3FECD2, 0x4 + .byte 0, 1, 2, 3 gUnknown_83FECD6:: @ 83FECD6 - .incbin "baserom.gba", 0x3FECD6, 0xA + .2byte 0x0004, 0x0004, 0x0004, 0x0010 + .align 2 gUnknown_83FECE0:: @ 83FECE0 - .incbin "baserom.gba", 0x3FECE0, 0x8 + .4byte sub_80DBB18 + .4byte sub_80DBB3C + .align 2 gUnknown_83FECE8:: @ 83FECE8 - .incbin "baserom.gba", 0x3FECE8, 0xC + .4byte sub_80DC318 + .4byte sub_80DC348 + .4byte sub_80DC3A8 gUnknown_83FECF4:: @ 83FECF4 - .incbin "baserom.gba", 0x3FECF4, 0x6 + .byte 0, 0, 1, 2, 3 + .align 1 gUnknown_83FECFA:: @ 83FECFA - .incbin "baserom.gba", 0x3FECFA, 0x6 + .2byte 0x0007, 0x000f diff --git a/data/unknown_serial_data.s b/data/unknown_serial_data.s index 57c979340..ec5818604 100644 --- a/data/unknown_serial_data.s +++ b/data/unknown_serial_data.s @@ -1,5 +1,5 @@ .section .rodata gUnknownSerialData_Start:: @ 86FC50C - .incbin "baserom.gba", 0x6FC50C, 0x3760 + .incbin "data/unknown_serial_data.bin" gUnknownSerialData_End:: diff --git a/ld_script.txt b/ld_script.txt index 03fab08a6..dddd60b81 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -222,7 +222,7 @@ SECTIONS { src/fldeff_teleport.o(.text); src/new_menu_helpers.o(.text); asm/box_party_pokemon_dropdown.o(.text); - asm/save_menu_util.o(.text); + src/save_menu_util.o(.text); src/map_preview_screen.o(.text); asm/link_rfu_2.o(.text); asm/link_rfu.o(.text); diff --git a/src/save_menu_util.c b/src/save_menu_util.c new file mode 100644 index 000000000..a4bae2409 --- /dev/null +++ b/src/save_menu_util.c @@ -0,0 +1,57 @@ +#include "global.h" +#include "string_util.h" +#include "text.h" +#include "event_data.h" +#include "pokedex.h" +#include "region_map.h" +#include "constants/flags.h" + +void SaveStatToString(u8 gameStatId, u8 *dest0, u8 color) +{ + int nBadges; + int flagId; + + u8 *dest = dest0; + *dest++ = EXT_CTRL_CODE_BEGIN; + *dest++ = EXT_CTRL_CODE_COLOR; + *dest++ = color; + *dest++ = EXT_CTRL_CODE_BEGIN; + *dest++ = EXT_CTRL_CODE_SHADOW; + *dest++ = color + 1; + switch (gameStatId) + { + case 0: + dest = StringCopy(dest, gSaveBlock2Ptr->playerName); + break; + case 1: + if (IsNationalPokedexEnabled()) + dest = ConvertIntToDecimalStringN(dest, GetNationalPokedexCount(1), STR_CONV_MODE_LEFT_ALIGN, 3); + else + dest = ConvertIntToDecimalStringN(dest, GetKantoPokedexCount(1), STR_CONV_MODE_LEFT_ALIGN, 3); + break; + case 2: + dest = ConvertIntToDecimalStringN(dest, gSaveBlock2Ptr->playTimeHours, STR_CONV_MODE_LEFT_ALIGN, 3); + *dest++ = CHAR_COLON; + dest = ConvertIntToDecimalStringN(dest, gSaveBlock2Ptr->playTimeMinutes, STR_CONV_MODE_LEADING_ZEROS, 2); + break; + case 5: + dest = ConvertIntToDecimalStringN(dest, gSaveBlock2Ptr->playTimeHours, STR_CONV_MODE_RIGHT_ALIGN, 3); + *dest++ = CHAR_COLON; + dest = ConvertIntToDecimalStringN(dest, gSaveBlock2Ptr->playTimeMinutes, STR_CONV_MODE_LEADING_ZEROS, 2); + break; + case 3: + sub_80C4DF8(dest, gMapHeader.regionMapSectionId); + break; + case 4: + for (flagId = FLAG_BADGE01_GET, nBadges = 0; flagId < FLAG_BADGE01_GET + 8; flagId++) + { + if (FlagGet(flagId)) + nBadges++; + } + *dest++ = nBadges + CHAR_0; + *dest++ = 10; // 'こ' + *dest++ = EOS; + break; + } +} + |