diff options
-rwxr-xr-x | asm/pokeblock.s | 272 | ||||
-rwxr-xr-x | include/pokeblock.h | 4 | ||||
-rwxr-xr-x | src/pokeblock.c | 86 |
3 files changed, 89 insertions, 273 deletions
diff --git a/asm/pokeblock.s b/asm/pokeblock.s index 4fc58f296..5d12544a6 100755 --- a/asm/pokeblock.s +++ b/asm/pokeblock.s @@ -6,278 +6,6 @@ .text - thumb_func_start sub_810BA50 -sub_810BA50: @ 810BA50 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - adds r3, r2, 0 - lsls r3, 24 - lsrs r3, 24 - ldr r0, _0810BA78 @ =gSpriteTemplate_83F7F84 - lsls r4, 16 - asrs r4, 16 - lsls r5, 16 - asrs r5, 16 - adds r1, r4, 0 - adds r2, r5, 0 - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0810BA78: .4byte gSpriteTemplate_83F7F84 - thumb_func_end sub_810BA50 - - thumb_func_start sub_810BA7C -sub_810BA7C: @ 810BA7C - push {lr} - ldr r1, _0810BA98 @ =gUnknown_02039244 - strb r0, [r1] - ldrb r2, [r1] - cmp r2, 0x2 - beq _0810BAA8 - cmp r2, 0x3 - beq _0810BAC0 - ldr r1, _0810BA9C @ =gUnknown_03000758 - ldr r0, _0810BAA0 @ =gUnknown_083F7F1C - str r0, [r1] - ldr r1, _0810BAA4 @ =gUnknown_0203924C - movs r0, 0x3 - b _0810BACA - .align 2, 0 -_0810BA98: .4byte gUnknown_02039244 -_0810BA9C: .4byte gUnknown_03000758 -_0810BAA0: .4byte gUnknown_083F7F1C -_0810BAA4: .4byte gUnknown_0203924C -_0810BAA8: - ldr r0, _0810BAB4 @ =gUnknown_03000758 - ldr r1, _0810BAB8 @ =gUnknown_083F7F1F - str r1, [r0] - ldr r0, _0810BABC @ =gUnknown_0203924C - strb r2, [r0] - b _0810BACC - .align 2, 0 -_0810BAB4: .4byte gUnknown_03000758 -_0810BAB8: .4byte gUnknown_083F7F1F -_0810BABC: .4byte gUnknown_0203924C -_0810BAC0: - ldr r1, _0810BAD0 @ =gUnknown_03000758 - ldr r0, _0810BAD4 @ =gUnknown_083F7F21 - str r0, [r1] - ldr r1, _0810BAD8 @ =gUnknown_0203924C - movs r0, 0x2 -_0810BACA: - strb r0, [r1] -_0810BACC: - pop {r0} - bx r0 - .align 2, 0 -_0810BAD0: .4byte gUnknown_03000758 -_0810BAD4: .4byte gUnknown_083F7F21 -_0810BAD8: .4byte gUnknown_0203924C - thumb_func_end sub_810BA7C - - thumb_func_start sub_810BADC -sub_810BADC: @ 810BADC - push {lr} - movs r0, 0x2 - bl sub_810BA7C - ldr r0, _0810BAF0 @ =sub_810B96C - bl SetMainCallback2 - pop {r0} - bx r0 - .align 2, 0 -_0810BAF0: .4byte sub_810B96C - thumb_func_end sub_810BADC - - thumb_func_start sub_810BAF4 -sub_810BAF4: @ 810BAF4 - push {lr} - movs r0, 0x3 - bl sub_810BA7C - ldr r0, _0810BB08 @ =sub_810B96C - bl SetMainCallback2 - pop {r0} - bx r0 - .align 2, 0 -_0810BB08: .4byte sub_810B96C - thumb_func_end sub_810BAF4 - - thumb_func_start sub_810BB0C -sub_810BB0C: @ 810BB0C - push {lr} - ldr r0, _0810BB28 @ =gWindowConfig_81E6E34 - bl BasicInitMenuWindow - ldr r0, _0810BB2C @ =0x00000111 - bl ItemId_GetItem - movs r1, 0x2 - movs r2, 0x1 - movs r3, 0x48 - bl sub_8072BD8 - pop {r0} - bx r0 - .align 2, 0 -_0810BB28: .4byte gWindowConfig_81E6E34 -_0810BB2C: .4byte 0x00000111 - thumb_func_end sub_810BB0C - - thumb_func_start sub_810BB30 -sub_810BB30: @ 810BB30 - push {lr} - ldr r0, _0810BB70 @ =gWindowConfig_81E6E34 - bl BasicInitMenuWindow - ldr r0, _0810BB74 @ =gContestStatsText_Spicy - movs r1, 0x2 - movs r2, 0xD - bl MenuPrint - ldr r0, _0810BB78 @ =gContestStatsText_Dry - movs r1, 0x2 - movs r2, 0xF - bl MenuPrint - ldr r0, _0810BB7C @ =gContestStatsText_Sweet - movs r1, 0x2 - movs r2, 0x11 - bl MenuPrint - ldr r0, _0810BB80 @ =gContestStatsText_Bitter - movs r1, 0x8 - movs r2, 0xD - bl MenuPrint - ldr r0, _0810BB84 @ =gContestStatsText_Sour - movs r1, 0x8 - movs r2, 0xF - bl MenuPrint - pop {r0} - bx r0 - .align 2, 0 -_0810BB70: .4byte gWindowConfig_81E6E34 -_0810BB74: .4byte gContestStatsText_Spicy -_0810BB78: .4byte gContestStatsText_Dry -_0810BB7C: .4byte gContestStatsText_Sweet -_0810BB80: .4byte gContestStatsText_Bitter -_0810BB84: .4byte gContestStatsText_Sour - thumb_func_end sub_810BB30 - - thumb_func_start sub_810BB88 -sub_810BB88: @ 810BB88 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - ldr r0, _0810BBF4 @ =gWindowConfig_81E6E34 - bl BasicInitMenuWindow - mov r6, r8 - adds r0, r6, 0 - adds r0, 0x8 - cmp r6, r0 - bgt _0810BC6C - ldr r0, _0810BBF8 @ =gStringVar1 - mov r9, r0 - ldr r1, _0810BBFC @ =gSaveBlock1 - mov r10, r1 -_0810BBB0: - mov r1, r8 - subs r0, r6, r1 - lsls r0, 25 - lsrs r7, r0, 24 - ldr r0, _0810BC00 @ =gUnknown_02039248 - ldrb r0, [r0, 0x2] - cmp r6, r0 - bne _0810BC08 - mov r0, r9 - ldr r1, _0810BC04 @ =gContestStatsText_StowCase - movs r2, 0x78 - movs r3, 0 - bl sub_8072C74 - movs r2, 0x1 - orrs r2, r7 - mov r0, r9 - movs r1, 0xF - bl MenuPrint - mov r0, r8 - adds r0, 0x8 - cmp r6, r0 - beq _0810BC6C - adds r1, r7, 0x3 - lsls r1, 24 - lsrs r1, 24 - movs r0, 0xF - movs r2, 0x1D - movs r3, 0x12 - bl MenuZeroFillWindowRect - b _0810BC6C - .align 2, 0 -_0810BBF4: .4byte gWindowConfig_81E6E34 -_0810BBF8: .4byte gStringVar1 -_0810BBFC: .4byte gSaveBlock1 -_0810BC00: .4byte gUnknown_02039248 -_0810BC04: .4byte gContestStatsText_StowCase -_0810BC08: - lsls r5, r6, 3 - mov r1, r10 - adds r0, r5, r1 - movs r1, 0xFF - lsls r1, 3 - adds r0, r1 - ldrb r0, [r0] - lsls r0, 2 - ldr r1, _0810BC7C @ =gPokeblockNames - adds r0, r1 - ldr r1, [r0] - mov r0, r9 - movs r2, 0x5E - movs r3, 0 - bl sub_8072C74 - adds r4, r0, 0 - movs r0, 0xFC - strb r0, [r4] - movs r0, 0x14 - strb r0, [r4, 0x1] - movs r0, 0x6 - strb r0, [r4, 0x2] - adds r4, 0x3 - ldr r0, _0810BC80 @ =gSaveBlock1 + 0x7F8 - adds r5, r0 - adds r0, r5, 0 - bl sub_810C9B0 - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - movs r2, 0x1 - movs r3, 0x3 - bl ConvertIntToDecimalStringN - movs r2, 0x1 - orrs r2, r7 - mov r0, r9 - movs r1, 0xF - bl MenuPrint - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - mov r0, r8 - adds r0, 0x8 - cmp r6, r0 - ble _0810BBB0 -_0810BC6C: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0810BC7C: .4byte gPokeblockNames -_0810BC80: .4byte gSaveBlock1 + 0x7F8 - thumb_func_end sub_810BB88 - thumb_func_start sub_810BC84 sub_810BC84: @ 810BC84 push {lr} diff --git a/include/pokeblock.h b/include/pokeblock.h index 958ccec5f..c90218480 100755 --- a/include/pokeblock.h +++ b/include/pokeblock.h @@ -8,7 +8,9 @@ struct YesNoCBTable { extern u8 ewram[]; extern u8 gUnknown_02039244; -extern u8 gUnknown_02039248[2]; +extern u8 gUnknown_02039248[3]; +extern u8 gUnknown_0203924C; +extern const u8 *gUnknown_03000758; void sub_810B96C(void); void sub_810BA7C(u8); diff --git a/src/pokeblock.c b/src/pokeblock.c index 7b67eb408..437f25e46 100755 --- a/src/pokeblock.c +++ b/src/pokeblock.c @@ -17,6 +17,8 @@ #include "menu_helpers.h" #include "battle.h" #include "item_menu.h" +#include "item.h" +#include "items.h" #include "pokeblock.h" // rodata @@ -339,3 +341,87 @@ static bool8 sub_810B998(void) } return FALSE; } + +u8 sub_810BA50(s16 x, s16 y, u8 subpriority) +{ + return CreateSprite(&gSpriteTemplate_83F7F84, x, y, subpriority); +} + +void sub_810BA7C(u8 a0) +{ + gUnknown_02039244 = a0; + switch (gUnknown_02039244) + { + default: + gUnknown_03000758 = gUnknown_083F7F1C; + gUnknown_0203924C = sizeof gUnknown_083F7F1C; + break; + case 2: + gUnknown_03000758 = gUnknown_083F7F1F; + gUnknown_0203924C = sizeof gUnknown_083F7F1F; + break; + case 3: + gUnknown_03000758 = gUnknown_083F7F21; + gUnknown_0203924C = sizeof gUnknown_083F7F21; + break; + } +} + +void sub_810BADC(void) +{ + sub_810BA7C(2); + SetMainCallback2(sub_810B96C); +} + +void sub_810BAF4(void) +{ + sub_810BA7C(3); + SetMainCallback2(sub_810B96C); +} + +void sub_810BB0C(void) +{ + BasicInitMenuWindow(&gWindowConfig_81E6E34); + sub_8072BD8(ItemId_GetItem(ITEM_POKEBLOCK_CASE)->name, 2, 1, 0x48); +} + +void sub_810BB30(void) +{ + BasicInitMenuWindow(&gWindowConfig_81E6E34); + MenuPrint(gContestStatsText_Spicy, 2, 13); + MenuPrint(gContestStatsText_Dry, 2, 15); + MenuPrint(gContestStatsText_Sweet, 2, 17); + MenuPrint(gContestStatsText_Bitter, 8, 13); + MenuPrint(gContestStatsText_Sour, 8, 15); +} + +u8 sub_810C9B0(struct Pokeblock *); + +void sub_810BB88(u8 a0) +{ + u8 i; + u8 y; + u8 *buf; + BasicInitMenuWindow(&gWindowConfig_81E6E34); + for (i=a0; i<=a0+8; i++) + { + y = (i - a0) << 1; + if (i == gUnknown_02039248[2]) + { + buf = sub_8072C74(gStringVar1, gContestStatsText_StowCase, 0x78, 0); + MenuPrint(gStringVar1, 15, y + 1); + if (i != a0 + 8) + { + MenuZeroFillWindowRect(15, y + 3, 29, 18); + } + break; + } + buf = sub_8072C74(gStringVar1, gPokeblockNames[gSaveBlock1.pokeblocks[i].color], 0x5e, 0); + buf[0] = EXT_CTRL_CODE_BEGIN; + buf[1] = 0x14; + buf[2] = 0x06; + buf += 3; + ConvertIntToDecimalStringN(buf, sub_810C9B0(&gSaveBlock1.pokeblocks[i]), STR_CONV_MODE_RIGHT_ALIGN, 3); + MenuPrint(gStringVar1, 15, y + 1); + } +} |