diff options
author | camthesaxman <cameronghall@cox.net> | 2017-12-22 01:57:16 -0600 |
---|---|---|
committer | camthesaxman <cameronghall@cox.net> | 2017-12-22 01:57:16 -0600 |
commit | d108f8dbe7f5fb08557d9ea82a0a9710532cac54 (patch) | |
tree | b70148ae34731ae917b1194c29f12b66ba0c8afe | |
parent | 2415720ea6760217355f286da83b9955c881bf1b (diff) |
finish decompiling contest.s
-rw-r--r-- | asm/contest.s | 147 | ||||
-rw-r--r-- | include/global.h | 4 | ||||
-rw-r--r-- | src/contest.c | 53 | ||||
-rw-r--r-- | src/scene/new_game.c | 4 | ||||
-rw-r--r-- | src/script_pokemon_util_80C4BF0.c | 2 |
5 files changed, 55 insertions, 155 deletions
diff --git a/asm/contest.s b/asm/contest.s index 7e6baa6e3..a71aefb42 100644 --- a/asm/contest.s +++ b/asm/contest.s @@ -5,151 +5,4 @@ .text - thumb_func_start sub_80B2C4C -sub_80B2C4C: @ 80B2C4C - push {r4-r7,lr} - lsls r0, 24 - lsrs r0, 24 - adds r2, r0, 0 - lsls r1, 24 - lsrs r1, 24 - cmp r0, 0x2 - beq _080B2C6E - cmp r0, 0x2 - ble _080B2C66 - cmp r0, 0x3 - beq _080B2CA0 - b _080B2CD4 -_080B2C66: - cmp r2, 0 - blt _080B2CD4 - adds r0, r2, 0 - b _080B2D16 -_080B2C6E: - cmp r1, 0 - beq _080B2C98 - movs r2, 0x4 - ldr r0, _080B2C9C @ =gSaveBlock1 + 0x2DFC - adds r4, r0, 0 - adds r4, 0x60 - adds r3, r0, 0 - adds r3, 0x80 -_080B2C7E: - adds r1, r3, 0 - adds r0, r4, 0 - ldm r0!, {r5-r7} - stm r1!, {r5-r7} - ldm r0!, {r5-r7} - stm r1!, {r5-r7} - ldm r0!, {r5,r6} - stm r1!, {r5,r6} - subs r4, 0x20 - subs r3, 0x20 - subs r2, 0x1 - cmp r2, 0x2 - bgt _080B2C7E -_080B2C98: - movs r0, 0x2 - b _080B2D16 - .align 2, 0 -_080B2C9C: .4byte gSaveBlock1 + 0x2DFC -_080B2CA0: - cmp r1, 0 - beq _080B2CCA - movs r2, 0x7 - ldr r0, _080B2CD0 @ =gSaveBlock1 + 0x2DFC - adds r4, r0, 0 - adds r4, 0xC0 - adds r3, r0, 0 - adds r3, 0xE0 -_080B2CB0: - adds r1, r3, 0 - adds r0, r4, 0 - ldm r0!, {r5-r7} - stm r1!, {r5-r7} - ldm r0!, {r5-r7} - stm r1!, {r5-r7} - ldm r0!, {r5,r7} - stm r1!, {r5,r7} - subs r4, 0x20 - subs r3, 0x20 - subs r2, 0x1 - cmp r2, 0x5 - bgt _080B2CB0 -_080B2CCA: - movs r0, 0x5 - b _080B2D16 - .align 2, 0 -_080B2CD0: .4byte gSaveBlock1 + 0x2DFC -_080B2CD4: - ldr r0, _080B2CE8 @ =gScriptContestCategory - ldrh r0, [r0] - cmp r0, 0x4 - bhi _080B2D14 - lsls r0, 2 - ldr r1, _080B2CEC @ =_080B2CF0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080B2CE8: .4byte gScriptContestCategory -_080B2CEC: .4byte _080B2CF0 - .align 2, 0 -_080B2CF0: - .4byte _080B2D04 - .4byte _080B2D08 - .4byte _080B2D0C - .4byte _080B2D10 - .4byte _080B2D14 -_080B2D04: - movs r0, 0x8 - b _080B2D16 -_080B2D08: - movs r0, 0x9 - b _080B2D16 -_080B2D0C: - movs r0, 0xA - b _080B2D16 -_080B2D10: - movs r0, 0xB - b _080B2D16 -_080B2D14: - movs r0, 0xC -_080B2D16: - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_80B2C4C - - thumb_func_start sub_80B2D1C -sub_80B2D1C: @ 80B2D1C - push {r4-r7,lr} - ldr r0, _080B2D48 @ =gSaveBlock1 - ldr r4, _080B2D4C @ =gUnknown_083CC5D0 - ldr r1, _080B2D50 @ =0x00002dfc - adds r3, r0, r1 - movs r2, 0x7 -_080B2D28: - adds r1, r3, 0 - adds r0, r4, 0 - ldm r0!, {r5-r7} - stm r1!, {r5-r7} - ldm r0!, {r5-r7} - stm r1!, {r5-r7} - ldm r0!, {r5,r6} - stm r1!, {r5,r6} - adds r4, 0x20 - adds r3, 0x20 - subs r2, 0x1 - cmp r2, 0 - bge _080B2D28 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080B2D48: .4byte gSaveBlock1 -_080B2D4C: .4byte gUnknown_083CC5D0 -_080B2D50: .4byte 0x00002dfc - thumb_func_end sub_80B2D1C - .align 2, 0 @ Don't pad with nop. diff --git a/include/global.h b/include/global.h index d5b1bfa59..a8c185731 100644 --- a/include/global.h +++ b/include/global.h @@ -694,8 +694,8 @@ struct SaveBlock1 /* 0x02025734 */ /*0x2D90*/ u8 filler_2D90[0x4]; /*0x2D94*/ union MauvilleMan mauvilleMan; /*0x2DD4*/ struct EasyChatPair easyChatPairs[5]; //Dewford trend [0] and some other stuff - /*0x2DFC*/ struct ContestWinner contestWinners[4]; // how long is this? - /*0x2E7C*/ u8 filler_2E7C[0x2F9C-0x2E7C]; + /*0x2DFC*/ struct ContestWinner contestWinners[8]; + /*0x2EFC*/ struct ContestWinner museumPortraits[5]; /*0x2F9C*/ struct DayCare daycare; /*0x30B8*/ struct LinkBattleRecord linkBattleRecords[5]; /*0x3108*/ u8 filler_3108[8]; diff --git a/src/contest.c b/src/contest.c index cd7efee7a..a712edf8a 100644 --- a/src/contest.c +++ b/src/contest.c @@ -324,6 +324,7 @@ extern const u8 gUnknownText_UnknownFormatting3[]; extern const u8 gUnknown_083CC59C[]; extern const u8 gUnknown_083CC5A2[]; extern const u16 gUnknown_083CC5A4[]; +extern const struct ContestWinner gUnknown_083CC5D0[]; extern const u8 gUnknownText_MissedTurn[]; extern const u8 gUnknownText_LinkStandbyAndWinner[]; extern void (*const gContestEffectFuncs[])(void); @@ -5535,7 +5536,6 @@ bool8 sub_80B2A7C(u8 a) } if (a == 0xFF && i != gContestPlayerMonIndex) return FALSE; - //_080B2AD0 switch (gScriptContestCategory) { case 0: @@ -5554,7 +5554,6 @@ bool8 sub_80B2A7C(u8 a) r7 += 12; break; } - //_080B2B16 if (a != 0xFE) { u8 r4 = sub_80B2C4C(a, 1); @@ -5569,7 +5568,6 @@ bool8 sub_80B2A7C(u8 a) else gSaveBlock1.contestWinners[r4].contestCategory = r7; } - //_080B2BC4 else { shared15DE0.personality = gContestMons[i].personality; @@ -5584,3 +5582,52 @@ bool8 sub_80B2A7C(u8 a) } return TRUE; } + +u8 sub_80B2C4C(u8 a, u8 b) +{ + s32 i; + + switch (a) + { + case 0: + case 1: + return a; + case 2: + if (b != 0) + { + for (i = 4; i >= 3; i--) + memcpy(&gSaveBlock1.contestWinners[i], &gSaveBlock1.contestWinners[i - 1], sizeof(struct ContestWinner)); + } + return 2; + case 3: + if (b != 0) + { + for (i = 7; i >= 6; i--) + memcpy(&gSaveBlock1.contestWinners[i], &gSaveBlock1.contestWinners[i - 1], sizeof(struct ContestWinner)); + } + return 5; + default: + switch (gScriptContestCategory) + { + case 0: + return 8; + case 1: + return 9; + case 2: + return 10; + case 3: + return 11; + case 4: + default: + return 12; + } + } +} + +void sub_80B2D1C(void) +{ + s32 i; + + for (i = 0; i < 8; i++) + gSaveBlock1.contestWinners[i] = gUnknown_083CC5D0[i]; +} diff --git a/src/scene/new_game.c b/src/scene/new_game.c index 98ef0853d..1a3d40e0c 100644 --- a/src/scene/new_game.c +++ b/src/scene/new_game.c @@ -36,7 +36,7 @@ extern u16 gSaveFileStatus; extern u8 gUnknown_0819FA81[]; -static const struct ContestWinner sEmptyContestWinner = +static const struct ContestWinner sEmptyMuseumPortrait = { .nickname = {EOS}, .trainerName = {EOS}, @@ -86,7 +86,7 @@ void sub_8052DA8(void) sub_80B2D1C(); for (i = 0; i < 5; i++) - gSaveBlock1.contestWinners[8 + i] = sEmptyContestWinner; + gSaveBlock1.museumPortraits[i] = sEmptyMuseumPortrait; } void ZeroBattleTowerData(void) diff --git a/src/script_pokemon_util_80C4BF0.c b/src/script_pokemon_util_80C4BF0.c index 1128e386d..c555a88bf 100644 --- a/src/script_pokemon_util_80C4BF0.c +++ b/src/script_pokemon_util_80C4BF0.c @@ -144,7 +144,7 @@ u8 sub_80C4D50(void) int i; for (i = 0; i < 5; i++) - if (gSaveBlock1.contestWinners[i + 8].species != 0) + if (gSaveBlock1.museumPortraits[i].species != 0) retVar++; return retVar; |