diff options
-rw-r--r-- | asm/tv.s | 104 | ||||
-rw-r--r-- | include/global.h | 32 | ||||
-rw-r--r-- | src/tv.c | 75 |
3 files changed, 106 insertions, 105 deletions
@@ -1613,110 +1613,6 @@ _080BE474: .4byte gSaveBlock2 .section .text_80BE8EC - thumb_func_start sub_80BEA50 -sub_80BEA50: @ 80BEA50 - ldr r1, _080BEA58 @ =gUnknown_020387E0 - strh r0, [r1] - bx lr - .align 2, 0 -_080BEA58: .4byte gUnknown_020387E0 - thumb_func_end sub_80BEA50 - - thumb_func_start sub_80BEA5C -sub_80BEA5C: @ 80BEA5C - push {lr} - ldr r1, _080BEA78 @ =gSaveBlock1 + 0x2A98 - ldrb r0, [r1] - cmp r0, 0x19 - bne _080BEA84 - ldrh r0, [r1, 0x2] - cmp r0, 0x13 - bhi _080BEA80 - ldr r2, _080BEA7C @ =0xfffffca0 - adds r0, r1, r2 - movs r1, 0x18 - bl sub_80BF55C - b _080BEA84 - .align 2, 0 -_080BEA78: .4byte gSaveBlock1 + 0x2A98 -_080BEA7C: .4byte 0xfffffca0 -_080BEA80: - bl sub_80BEA88 -_080BEA84: - pop {r0} - bx r0 - thumb_func_end sub_80BEA5C - - thumb_func_start sub_80BEA88 -sub_80BEA88: @ 80BEA88 - push {r4-r7,lr} - ldr r5, _080BEB0C @ =gSaveBlock1 + 0x2A98 - ldr r0, _080BEB10 @ =0x0000ffff - bl sub_80BF77C - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0 - bne _080BEB04 - ldr r0, _080BEB14 @ =0xfffffca0 - adds r7, r5, r0 - adds r0, r7, 0 - bl sub_80BF74C - ldr r4, _080BEB18 @ =gUnknown_03005D38 - strb r0, [r4] - lsls r0, 24 - asrs r0, 24 - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - beq _080BEB04 - movs r0, 0x19 - bl sub_80BF1B4 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _080BEB04 - movs r0, 0 - ldrsb r0, [r4, r0] - lsls r4, r0, 3 - adds r4, r0 - lsls r4, 2 - adds r4, r7 - movs r0, 0x19 - strb r0, [r4] - strb r6, [r4, 0x1] - ldrh r0, [r5, 0x2] - strh r0, [r4, 0x2] - movs r0, 0x5 - bl GetGameStat - ldrh r1, [r5, 0x6] - subs r0, r1 - strh r0, [r4, 0x6] - ldrh r0, [r5, 0x4] - strh r0, [r4, 0x4] - ldrh r0, [r5, 0x8] - strh r0, [r4, 0x8] - ldrb r0, [r5, 0xA] - strb r0, [r4, 0xA] - adds r0, r4, 0 - adds r0, 0x13 - ldr r1, _080BEB1C @ =gSaveBlock2 - bl StringCopy - adds r0, r4, 0 - bl sub_80BE138 - movs r0, GAME_LANGUAGE - strb r0, [r4, 0xB] -_080BEB04: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080BEB0C: .4byte gSaveBlock1 + 0x2A98 -_080BEB10: .4byte 0x0000ffff -_080BEB14: .4byte 0xfffffca0 -_080BEB18: .4byte gUnknown_03005D38 -_080BEB1C: .4byte gSaveBlock2 - thumb_func_end sub_80BEA88 - thumb_func_start sub_80BEB20 sub_80BEB20: @ 80BEB20 push {r4-r6,lr} diff --git a/include/global.h b/include/global.h index 4790c4ed2..522ec065b 100644 --- a/include/global.h +++ b/include/global.h @@ -272,6 +272,19 @@ struct TVShowUnknownTVShowType { /*0x13*/ u8 playerName[8]; }; +struct TVShowUnknownTVShowType2 { + /*0x00*/ u8 var00; + /*0x01*/ u8 var01; + /*0x02*/ u16 var02; + /*0x04*/ u16 var04; + /*0x06*/ u16 var06; + /*0x08*/ u16 var08; + /*0x0a*/ u8 var0a; + /*0x0b*/ u8 language; + u8 pad0c[7]; + /*0x13*/ u8 playerName[8]; +}; + typedef union TVShow { struct TVShowCommon common; struct TVShowFanClubLetter fanclubLetter; @@ -280,6 +293,7 @@ typedef union TVShow { struct TVShowNameRaterShow nameRaterShow; struct TVShowMassOutbreak massOutbreak; struct TVShowUnknownTVShowType unknownTvShowType; + struct TVShowUnknownTVShowType2 unknownTvShowType2; } TVShow; struct MailStruct @@ -339,6 +353,21 @@ 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 UnknownSaveStruct2ABC { + u8 pad00[4]; +}; + struct SaveBlock1 /* 0x02025734 */ { /*0x00*/ struct Coords16 pos; @@ -389,7 +418,8 @@ struct SaveBlock1 /* 0x02025734 */ /*0x272C*/ u8 decorCushion[10]; /*0x2736*/ u8 padding_2736[2]; /*0x2738*/ TVShow tvShows[24]; - /*0x2A98*/ u8 filler_2A98[0x64]; + /*0x2A98*/ struct UnknownSaveStruct2A98 unknown_2A98; + /*0x2ABC*/ struct UnknownSaveStruct2ABC unknown_2ABC[16]; /*0x2AFC*/ u16 outbreakPokemonSpecies; /*0x2AFE*/ u8 outbreakLocationMapNum; /*0x2AFF*/ u8 outbreakLocationMapGroup; @@ -375,6 +375,81 @@ void sub_80BE9D4() } } +void sub_80BEA50(u16 var) +{ + gUnknown_020387E0 = var; +} + +void sub_80BF55C(TVShow tvShow[], u8 showidx); +void sub_80BEA88(void); + +void sub_80BEA5C(u16 arg0) +{ + struct UnknownSaveStruct2A98 *unk_2a98; + unk_2a98 = &gSaveBlock1.unknown_2A98; + if (unk_2a98->var00 == 0x19) + { + if (unk_2a98->var02 <= 0x13) + { + sub_80BF55C(gSaveBlock1.tvShows, 0x18); + } + else + { + sub_80BEA88(); + } + } +} +void sub_80BEA88(void) +{ + struct UnknownSaveStruct2A98 *unk_2a98; + TVShow *tvShow; + u8 rval; + unk_2a98 = &gSaveBlock1.unknown_2A98; + rval = sub_80BF77C(0xFFFF); + if (rval == 0) + { + gUnknown_03005D38.var0 = sub_80BF74C(gSaveBlock1.tvShows); + if (gUnknown_03005D38.var0 != -1 && sub_80BF1B4(0x19) != 1) + { + tvShow = &gSaveBlock1.tvShows[gUnknown_03005D38.var0]; + tvShow->unknownTvShowType2.var00 = 0x19; + tvShow->unknownTvShowType2.var01 = rval; + tvShow->unknownTvShowType2.var02 = unk_2a98->var02; + tvShow->unknownTvShowType2.var06 = GetGameStat(GAME_STAT_STEPS) - unk_2a98->var06; + tvShow->unknownTvShowType2.var04 = unk_2a98->var04; + tvShow->unknownTvShowType2.var08 = unk_2a98->var08; + tvShow->unknownTvShowType2.var0a = unk_2a98->var0a; + StringCopy(tvShow->unknownTvShowType2.playerName, gSaveBlock2.playerName); + sub_80BE138(tvShow); + tvShow->unknownTvShowType2.language = GAME_LANGUAGE; + } + } +} + +// void sub_80BEB20(void) +// { + // struct UnknownSaveStruct2ABC *unk_2abc; + // u16 rval16; + // u16 val; + // unk_2abc = &gSaveBlock1.unknown_2ABC; + // TVShow *tvShow; + // if (FlagGet(SYS_GAME_CLEAR) != 0) + // { + // gUnknown_03005D38.var0 = sub_80BEBC8(unk_2abc); + // if (gUnknown_03005D38.var0 != -1 && sub_80BF77C(0x28f) != 1) + // { + // rval16 = Random(); + // val = (rval16 % 3) + 1; + // if (sub_80BEE48(val) != 1) + // { + // tvShow = &gSaveBlock1.tvShows[gUnknown_03005D38.var0]; + // unk_2abc[gUnknown_03005D38.var0][0] = val; + // to do + // } + // } + // } +// } + asm(".section .text_b"); u8 sub_80BF4F4(u8 arg0) |