diff options
-rw-r--r-- | asm/tv.s | 74 | ||||
-rw-r--r-- | include/global.h | 21 | ||||
-rw-r--r-- | src/tv.c | 34 |
3 files changed, 32 insertions, 97 deletions
@@ -1376,80 +1376,6 @@ _080BE27C: .4byte 0xfffffca0 _080BE280: .4byte gUnknown_03005D38 thumb_func_end sub_80BE23C - thumb_func_start sub_80BE284 -sub_80BE284: @ 80BE284 - push {r4-r7,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r7, _080BE304 @ =gSaveBlock1 + 0x2A98 - ldr r1, _080BE308 @ =0xfffffca0 - adds r0, r7, r1 - bl sub_80BF720 - ldr r1, _080BE30C @ =gUnknown_03005D38 - strb r0, [r1] - lsls r0, 24 - asrs r0, 24 - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - beq _080BE2FE - movs r3, 0x3 - adds r1, r4, 0 - ands r1, r3 - lsls r1, 5 - ldrb r2, [r7, 0x13] - movs r0, 0x61 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - ldr r1, _080BE310 @ =gScriptContestCategory - ldrb r2, [r1] - movs r1, 0x7 - ands r1, r2 - movs r2, 0x8 - negs r2, r2 - ands r0, r2 - orrs r0, r1 - ldr r1, _080BE314 @ =gScriptContestRank - ldrb r1, [r1] - ands r3, r1 - lsls r3, 3 - movs r1, 0x19 - negs r1, r1 - ands r0, r1 - orrs r0, r3 - strb r0, [r7, 0x13] - ldr r6, _080BE318 @ =gUnknown_02038694 - ldrb r0, [r6] - movs r5, 0x64 - muls r0, r5 - ldr r4, _080BE31C @ =gPlayerParty - adds r0, r4 - movs r1, 0xB - movs r2, 0 - bl GetMonData - strh r0, [r7, 0x2] - ldrb r0, [r6] - muls r0, r5 - adds r0, r4 - adds r2, r7, 0 - adds r2, 0x8 - movs r1, 0x2 - bl GetMonData -_080BE2FE: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080BE304: .4byte gSaveBlock1 + 0x2A98 -_080BE308: .4byte 0xfffffca0 -_080BE30C: .4byte gUnknown_03005D38 -_080BE310: .4byte gScriptContestCategory -_080BE314: .4byte gScriptContestRank -_080BE318: .4byte gUnknown_02038694 -_080BE31C: .4byte gPlayerParty - thumb_func_end sub_80BE284 - .section .text_80BE8EC thumb_func_start sub_80C04A0 diff --git a/include/global.h b/include/global.h index 2090415f9..6528da35d 100644 --- a/include/global.h +++ b/include/global.h @@ -338,9 +338,13 @@ struct TVShowBravoTrainerPokemonProfiles { /*0x00*/ u8 var00; /*0x01*/ u8 var01; /*0x02*/ u16 species; - /*0x04*/ u8 pad04[15]; + /*0x04*/ u8 pad04[4]; + /*0x08*/ u8 pokemonNickname[11]; /*0x13*/ u8 contestCategory:3; - /*0x13*/ u8 var13_3:5; + /*0x13*/ u8 contestRank:2; + /*0x13*/ u8 var13_5:2; + /*0x13*/ u8 var13_7:1; + /*0x14*/ }; struct TVShowBravoTrainerBattleTowerSpotlight { @@ -431,20 +435,9 @@ typedef union SB_Struct { } SB_Struct; // size is 0x198 -struct UnknownSaveStruct2A98 { - u8 var00; - u8 var01; - u16 var02; - u16 var04; - u16 var06; - u16 var08; - u8 var0a; - u8 pad0b[25]; -}; - struct SaveTVStruct { TVShow shows[24]; - struct UnknownSaveStruct2A98 unknown_2A98; + TVShow unknown_2A98; }; struct UnknownSaveStruct2ABC { @@ -34,6 +34,7 @@ struct OutbreakPokemon }; extern u8 *gUnknown_083D1464[3]; +extern u8 gUnknown_02038694; struct TVSaleItem { u16 item_id; @@ -100,10 +101,25 @@ extern void sub_80BE138(TVShow *); bool8 sub_80BF1B4(u8); void sub_80BF20C(void); extern u16 sub_8135D3C(u8); +extern u8 gScriptContestCategory; +extern u8 gScriptContestRank; asm(".section .text_a"); s8 sub_80BF74C(TVShow tvShow[]); +void sub_80BE284(u8 a0) { + TVShow *show; + show = &gSaveBlock1.tvShows.unknown_2A98; + gUnknown_03005D38.var0 = sub_80BF720(gSaveBlock1.tvShows.shows); + if (gUnknown_03005D38.var0 != -1) { + show->bravoTrainer.var13_5 = a0; + show->bravoTrainer.contestCategory = gScriptContestCategory; + show->bravoTrainer.contestRank = gScriptContestRank; + show->bravoTrainer.species = GetMonData(&gPlayerParty[gUnknown_02038694], MON_DATA_SPECIES, NULL); + GetMonData(&gPlayerParty[gUnknown_02038694], MON_DATA_NICKNAME, show->bravoTrainer.pokemonNickname); + } +} + void sub_80BE320(void) { TVShow *show; show = &gSaveBlock1.tvShows.shows[gUnknown_03005D38.var0]; @@ -463,11 +479,11 @@ void sub_80BEA88(void); void sub_80BEA5C(u16 arg0) { - struct UnknownSaveStruct2A98 *unk_2a98; + TVShow *unk_2a98; unk_2a98 = &gSaveBlock1.tvShows.unknown_2A98; - if (unk_2a98->var00 == TVSHOW_WORLD_OF_MASTERS) + if (unk_2a98->common.var00 == TVSHOW_WORLD_OF_MASTERS) { - if (unk_2a98->var02 <= 0x13) + if (unk_2a98->worldOfMasters.var02 < 20) { sub_80BF55C(gSaveBlock1.tvShows.shows, 0x18); } @@ -479,7 +495,7 @@ void sub_80BEA5C(u16 arg0) } void sub_80BEA88(void) { - struct UnknownSaveStruct2A98 *unk_2a98; + TVShow *unk_2a98; TVShow *tvShow; u8 rval; unk_2a98 = &gSaveBlock1.tvShows.unknown_2A98; @@ -492,11 +508,11 @@ void sub_80BEA88(void) tvShow = &gSaveBlock1.tvShows.shows[gUnknown_03005D38.var0]; tvShow->worldOfMasters.var00 = TVSHOW_WORLD_OF_MASTERS; tvShow->worldOfMasters.var01 = rval; - tvShow->worldOfMasters.var02 = unk_2a98->var02; - tvShow->worldOfMasters.var06 = GetGameStat(GAME_STAT_STEPS) - unk_2a98->var06; - tvShow->worldOfMasters.var04 = unk_2a98->var04; - tvShow->worldOfMasters.var08 = unk_2a98->var08; - tvShow->worldOfMasters.var0a = unk_2a98->var0a; + tvShow->worldOfMasters.var02 = unk_2a98->worldOfMasters.var02; + tvShow->worldOfMasters.var06 = GetGameStat(GAME_STAT_STEPS) - unk_2a98->worldOfMasters.var06; + tvShow->worldOfMasters.var04 = unk_2a98->worldOfMasters.var04; + tvShow->worldOfMasters.var08 = unk_2a98->worldOfMasters.var08; + tvShow->worldOfMasters.var0a = unk_2a98->worldOfMasters.var0a; StringCopy(tvShow->worldOfMasters.playerName, gSaveBlock2.playerName); sub_80BE138(tvShow); tvShow->worldOfMasters.language = GAME_LANGUAGE; |