diff options
-rw-r--r-- | asm/tv.s | 253 | ||||
-rw-r--r-- | include/global.h | 14 | ||||
-rw-r--r-- | include/item.h | 19 | ||||
-rw-r--r-- | src/item.c | 19 | ||||
-rw-r--r-- | src/tv.c | 89 |
5 files changed, 113 insertions, 281 deletions
@@ -4045,257 +4045,4 @@ _080C13A4: .4byte gStringVar2 _080C13A8: .4byte gTVNameRaterTextGroup thumb_func_end DoTVShowTheNameRaterShow - thumb_func_start DoTVShowPokemonTodaySuccessfulCapture -DoTVShowPokemonTodaySuccessfulCapture: @ 80C13AC - push {r4-r6,lr} - ldr r0, _080C13D8 @ =gSpecialVar_0x8004 - ldrh r1, [r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, _080C13DC @ =gSaveBlock1 + 0x2738 - adds r5, r0, r1 - ldr r1, _080C13E0 @ =gScriptResult - movs r0, 0 - strh r0, [r1] - ldr r0, _080C13E4 @ =gUnknown_020387E8 - ldrb r6, [r0] - adds r2, r0, 0 - cmp r6, 0xB - bls _080C13CE - b _080C15DC -_080C13CE: - lsls r0, r6, 2 - ldr r1, _080C13E8 @ =_080C13EC - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080C13D8: .4byte gSpecialVar_0x8004 -_080C13DC: .4byte gSaveBlock1 + 0x2738 -_080C13E0: .4byte gScriptResult -_080C13E4: .4byte gUnknown_020387E8 -_080C13E8: .4byte _080C13EC - .align 2, 0 -_080C13EC: - .4byte _080C141C - .4byte _080C1470 - .4byte _080C1476 - .4byte _080C14B0 - .4byte _080C14E8 - .4byte _080C14EE - .4byte _080C1524 - .4byte _080C1578 - .4byte _080C1578 - .4byte _080C15A8 - .4byte _080C15A8 - .4byte _080C15D8 -_080C141C: - ldr r0, _080C1450 @ =gStringVar1 - adds r1, r5, 0 - adds r1, 0x13 - ldrb r2, [r5, 0x2] - bl TVShowConvertInternationalString - ldr r0, _080C1454 @ =gStringVar2 - ldrh r2, [r5, 0x10] - movs r1, 0xB - muls r1, r2 - ldr r2, _080C1458 @ =gSpeciesNames - adds r1, r2 - bl StringCopy - ldr r0, _080C145C @ =gStringVar3 - adds r1, r5, 0x4 - ldrb r2, [r5, 0x3] - bl TVShowConvertInternationalString - ldrb r0, [r5, 0xF] - cmp r0, 0x1 - bne _080C1464 - ldr r1, _080C1460 @ =gUnknown_020387E8 - movs r0, 0x5 - strb r0, [r1] - b _080C15DC - .align 2, 0 -_080C1450: .4byte gStringVar1 -_080C1454: .4byte gStringVar2 -_080C1458: .4byte gSpeciesNames -_080C145C: .4byte gStringVar3 -_080C1460: .4byte gUnknown_020387E8 -_080C1464: - ldr r1, _080C146C @ =gUnknown_020387E8 - movs r0, 0x1 - strb r0, [r1] - b _080C15DC - .align 2, 0 -_080C146C: .4byte gUnknown_020387E8 -_080C1470: - movs r0, 0x2 - strb r0, [r2] - b _080C15DC -_080C1476: - ldr r4, _080C149C @ =gStringVar2 - ldrb r0, [r5, 0xF] - bl ItemId_GetItem - adds r1, r0, 0 - adds r0, r4, 0 - bl StringCopy - ldrb r1, [r5, 0x12] - movs r0, 0x2 - bl sub_80BF088 - ldrb r0, [r5, 0x12] - cmp r0, 0x3 - bhi _080C14A4 - ldr r1, _080C14A0 @ =gUnknown_020387E8 - movs r0, 0x3 - strb r0, [r1] - b _080C15DC - .align 2, 0 -_080C149C: .4byte gStringVar2 -_080C14A0: .4byte gUnknown_020387E8 -_080C14A4: - ldr r1, _080C14AC @ =gUnknown_020387E8 - movs r0, 0x4 - strb r0, [r1] - b _080C15DC - .align 2, 0 -_080C14AC: .4byte gUnknown_020387E8 -_080C14B0: - ldr r0, _080C14D8 @ =gStringVar1 - adds r1, r5, 0 - adds r1, 0x13 - ldrb r2, [r5, 0x2] - bl TVShowConvertInternationalString - ldr r0, _080C14DC @ =gStringVar2 - ldrh r2, [r5, 0x10] - movs r1, 0xB - muls r1, r2 - ldr r2, _080C14E0 @ =gSpeciesNames - adds r1, r2 - bl StringCopy - ldr r0, _080C14E4 @ =gStringVar3 - adds r1, r5, 0x4 - ldrb r2, [r5, 0x3] - bl TVShowConvertInternationalString - b _080C150A - .align 2, 0 -_080C14D8: .4byte gStringVar1 -_080C14DC: .4byte gStringVar2 -_080C14E0: .4byte gSpeciesNames -_080C14E4: .4byte gStringVar3 -_080C14E8: - movs r0, 0x6 - strb r0, [r2] - b _080C15DC -_080C14EE: - ldr r0, _080C1514 @ =gStringVar1 - adds r1, r5, 0 - adds r1, 0x13 - ldrb r2, [r5, 0x2] - bl TVShowConvertInternationalString - ldr r0, _080C1518 @ =gStringVar2 - ldrh r2, [r5, 0x10] - movs r1, 0xB - muls r1, r2 - ldr r2, _080C151C @ =gSpeciesNames - adds r1, r2 - bl StringCopy -_080C150A: - ldr r1, _080C1520 @ =gUnknown_020387E8 - movs r0, 0x6 - strb r0, [r1] - b _080C15DC - .align 2, 0 -_080C1514: .4byte gStringVar1 -_080C1518: .4byte gStringVar2 -_080C151C: .4byte gSpeciesNames -_080C1520: .4byte gUnknown_020387E8 -_080C1524: - ldr r0, _080C1564 @ =gStringVar1 - adds r1, r5, 0 - adds r1, 0x13 - ldrb r2, [r5, 0x2] - bl TVShowConvertInternationalString - ldr r0, _080C1568 @ =gStringVar2 - ldrh r2, [r5, 0x10] - movs r1, 0xB - muls r1, r2 - ldr r2, _080C156C @ =gSpeciesNames - adds r1, r2 - bl StringCopy - ldr r0, _080C1570 @ =gStringVar3 - adds r1, r5, 0x4 - ldrb r2, [r5, 0x3] - bl TVShowConvertInternationalString - ldr r4, _080C1574 @ =gUnknown_020387E8 - bl Random - ldrb r2, [r4] - adds r2, 0x1 - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x3 - ands r0, r1 - adds r0, r2 - strb r0, [r4] - b _080C15DC - .align 2, 0 -_080C1564: .4byte gStringVar1 -_080C1568: .4byte gStringVar2 -_080C156C: .4byte gSpeciesNames -_080C1570: .4byte gStringVar3 -_080C1574: .4byte gUnknown_020387E8 -_080C1578: - ldr r0, _080C159C @ =gStringVar1 - ldrh r1, [r5, 0x10] - movs r4, 0xB - muls r1, r4 - ldr r2, _080C15A0 @ =gSpeciesNames - adds r1, r2 - bl StringCopy - ldr r0, _080C15A4 @ =gStringVar2 - adds r1, r5, 0x4 - ldrb r2, [r5, 0x3] - bl TVShowConvertInternationalString - ldrh r1, [r5, 0x10] - movs r0, 0x2 - bl sub_80BF638 - b _080C15C2 - .align 2, 0 -_080C159C: .4byte gStringVar1 -_080C15A0: .4byte gSpeciesNames -_080C15A4: .4byte gStringVar2 -_080C15A8: - ldr r0, _080C15C8 @ =gStringVar1 - ldrh r1, [r5, 0x10] - movs r4, 0xB - muls r1, r4 - ldr r2, _080C15CC @ =gSpeciesNames - adds r1, r2 - bl StringCopy - ldr r0, _080C15D0 @ =gStringVar2 - adds r1, r5, 0x4 - ldrb r2, [r5, 0x3] - bl TVShowConvertInternationalString -_080C15C2: - ldr r0, _080C15D4 @ =gUnknown_020387E8 - strb r4, [r0] - b _080C15DC - .align 2, 0 -_080C15C8: .4byte gStringVar1 -_080C15CC: .4byte gSpeciesNames -_080C15D0: .4byte gStringVar2 -_080C15D4: .4byte gUnknown_020387E8 -_080C15D8: - bl TVShowDone -_080C15DC: - ldr r0, _080C15F0 @ =gTVPokemonTodayTextGroup - lsls r1, r6, 2 - adds r1, r0 - ldr r0, [r1] - bl ShowFieldMessage - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080C15F0: .4byte gTVPokemonTodayTextGroup - thumb_func_end DoTVShowPokemonTodaySuccessfulCapture - .align 2, 0 @ Don't pad with nop. diff --git a/include/global.h b/include/global.h index 4ba4100dd..a437a3b0d 100644 --- a/include/global.h +++ b/include/global.h @@ -203,6 +203,19 @@ struct TVShowPokemonToday { /*0x00*/ u8 var00; /*0x01*/ u8 var01; /*0x02*/ u8 language; + /*0x03*/ u8 language2; + /*0x04*/ u8 nickname[11]; + /*0x0F*/ u8 ball; + /*0x10*/ u16 species; + /*0x12*/ u8 var12; + /*0x13*/ u8 playerName[8]; +}; + + +struct TVShowPokemonTodayFailed { + /*0x00*/ u8 var00; + /*0x01*/ u8 var01; + /*0x02*/ u8 language; /*0x03*/ u8 pad03[9]; /*0x0c*/ u16 species; /*0x0e*/ u16 species2; @@ -331,6 +344,7 @@ typedef union TVShow { struct TVShowSmartShopper smartshopperShow; struct TVShowContestWinner contestShow; struct TVShowPokemonToday pokemonToday; + struct TVShowPokemonTodayFailed pokemonTodayFailed; } TVShow; struct MailStruct diff --git a/include/item.h b/include/item.h index cc917dbc8..47af11940 100644 --- a/include/item.h +++ b/include/item.h @@ -1,8 +1,27 @@ #ifndef GUARD_ITEM_H #define GUARD_ITEM_H + typedef void (*ItemUseFunc)(u8); +struct Item +{ + u8 name[14]; + u16 itemId; + u16 price; + u8 holdEffect; + u8 holdEffectParam; + u8 *description; + u8 importance; + u8 unk19; + u8 pocket; + u8 type; + ItemUseFunc fieldUseFunc; + u8 battleUsage; + ItemUseFunc battleUseFunc; + u8 secondaryId; +}; + void CopyItemName(u16 itemId, u8 *string); bool8 IsBagPocketNonEmpty(u8 pocket); bool8 CheckBagHasItem(u16 itemId, u16 count); diff --git a/src/item.c b/src/item.c index 656563ad4..7257c3649 100644 --- a/src/item.c +++ b/src/item.c @@ -6,25 +6,6 @@ extern struct Berry *GetBerryInfo(u8 berry); extern u8 gOtherText_Berry2[]; extern u8 gUnknown_02038560; - -struct Item -{ - u8 name[14]; - u16 itemId; - u16 price; - u8 holdEffect; - u8 holdEffectParam; - u8 *description; - u8 importance; - u8 unk19; - u8 pocket; - u8 type; - ItemUseFunc fieldUseFunc; - u8 battleUsage; - ItemUseFunc battleUseFunc; - u8 secondaryId; -}; - extern struct Item gItems[]; struct BagPocket @@ -16,6 +16,7 @@ #include "link.h" #include "easy_chat.h" #include "item.h" +#include "items.h" #include "contest_painting.h" #include "rtc.h" @@ -1626,10 +1627,10 @@ void TVShowConvertInternationalString(u8 *, u8 *, u8); void TakeTVShowInSearchOfTrainersOffTheAir(void); -void DoTVShowPokemonTodayFailedCapture(void) { +void DoTVShowPokemonTodaySuccessfulCapture(void) { TVShow *tvShow; u8 switchval; - u16 rval; +// u16 rval; tvShow = &gSaveBlock1.tvShows.shows[gSpecialVar_0x8004]; gScriptResult = 0; switchval = gUnknown_020387E8; @@ -1637,13 +1638,83 @@ void DoTVShowPokemonTodayFailedCapture(void) { case 0: TVShowConvertInternationalString(gStringVar1, tvShow->pokemonToday.playerName, tvShow->pokemonToday.language); StringCopy(gStringVar2, gSpeciesNames[tvShow->pokemonToday.species]); - gUnknown_020387E8 = 1; + TVShowConvertInternationalString(gStringVar3, tvShow->pokemonToday.nickname, tvShow->pokemonToday.language2); + if (tvShow->pokemonToday.ball == ITEM_MASTER_BALL) { + gUnknown_020387E8 = 5; + } else { + gUnknown_020387E8 = 1; + } break; case 1: + gUnknown_020387E8 = 2; + break; + case 2: + StringCopy(gStringVar2, ItemId_GetItem(tvShow->pokemonToday.ball)->name); + sub_80BF088(2, tvShow->pokemonToday.var12); + if (tvShow->pokemonToday.var12 < 4) { + gUnknown_020387E8 = 3; + } else { + gUnknown_020387E8 = 4; + } + break; + case 3: + TVShowConvertInternationalString(gStringVar1, tvShow->pokemonToday.playerName, tvShow->pokemonToday.language); + StringCopy(gStringVar2, gSpeciesNames[tvShow->pokemonToday.species]); + TVShowConvertInternationalString(gStringVar3, tvShow->pokemonToday.nickname, tvShow->pokemonToday.language2); + gUnknown_020387E8 = 6; + break; + case 4: + gUnknown_020387E8 = 6; + break; + case 5: + TVShowConvertInternationalString(gStringVar1, tvShow->pokemonToday.playerName, tvShow->pokemonToday.language); + StringCopy(gStringVar2, gSpeciesNames[tvShow->pokemonToday.species]); + gUnknown_020387E8 = 6; + break; + case 6: TVShowConvertInternationalString(gStringVar1, tvShow->pokemonToday.playerName, tvShow->pokemonToday.language); - sub_80FBFB4(gStringVar2, tvShow->pokemonToday.var12, 0); - StringCopy(gStringVar3, gSpeciesNames[tvShow->pokemonToday.species2]); - if (tvShow->pokemonToday.var11 == 1) { + StringCopy(gStringVar2, gSpeciesNames[tvShow->pokemonToday.species]); + TVShowConvertInternationalString(gStringVar3, tvShow->pokemonToday.nickname, tvShow->pokemonToday.language2); + gUnknown_020387E8 += (Random() % 4) + 1; + break; + case 7: + case 8: + StringCopy(gStringVar1, gSpeciesNames[tvShow->pokemonToday.species]); + TVShowConvertInternationalString(gStringVar2, tvShow->pokemonToday.nickname, tvShow->pokemonToday.language2); + sub_80BF638(2, tvShow->pokemonToday.species); + gUnknown_020387E8 = 11; + break; + case 9: + case 10: + StringCopy(gStringVar1, gSpeciesNames[tvShow->pokemonToday.species]); + TVShowConvertInternationalString(gStringVar2, tvShow->pokemonToday.nickname, tvShow->pokemonToday.language2); + gUnknown_020387E8 = 11; + break; + case 11: + TVShowDone(); + break; + } + ShowFieldMessage(gTVPokemonTodayTextGroup[switchval]); +} + +void DoTVShowPokemonTodayFailedCapture(void) { + TVShow *tvShow; + u8 switchval; + u16 rval; + tvShow = &gSaveBlock1.tvShows.shows[gSpecialVar_0x8004]; + gScriptResult = 0; + switchval = gUnknown_020387E8; + switch (switchval) { + case 0: + TVShowConvertInternationalString(gStringVar1, tvShow->pokemonTodayFailed.playerName, tvShow->pokemonTodayFailed.language); + StringCopy(gStringVar2, gSpeciesNames[tvShow->pokemonTodayFailed.species]); + gUnknown_020387E8 = 1; + break; + case 1: + TVShowConvertInternationalString(gStringVar1, tvShow->pokemonTodayFailed.playerName, tvShow->pokemonTodayFailed.language); + sub_80FBFB4(gStringVar2, tvShow->pokemonTodayFailed.var12, 0); + StringCopy(gStringVar3, gSpeciesNames[tvShow->pokemonTodayFailed.species2]); + if (tvShow->pokemonTodayFailed.var11 == 1) { gUnknown_020387E8 = 3; } else { gUnknown_020387E8 = 2; @@ -1651,8 +1722,8 @@ void DoTVShowPokemonTodayFailedCapture(void) { break; case 2: case 3: - TVShowConvertInternationalString(gStringVar1, tvShow->pokemonToday.playerName, tvShow->pokemonToday.language); - sub_80BF088(1, tvShow->pokemonToday.var10); + TVShowConvertInternationalString(gStringVar1, tvShow->pokemonTodayFailed.playerName, tvShow->pokemonTodayFailed.language); + sub_80BF088(1, tvShow->pokemonTodayFailed.var10); rval = (Random() % 3); if (rval == 0) { gUnknown_020387E8 = 5; @@ -1662,7 +1733,7 @@ void DoTVShowPokemonTodayFailedCapture(void) { break; case 4: case 5: - TVShowConvertInternationalString(gStringVar1, tvShow->pokemonToday.playerName, tvShow->pokemonToday.language); + TVShowConvertInternationalString(gStringVar1, tvShow->pokemonTodayFailed.playerName, tvShow->pokemonTodayFailed.language); gUnknown_020387E8 = 6; break; case 6: |