diff options
-rw-r--r-- | include/battle.h | 27 | ||||
-rw-r--r-- | include/ewram.h | 1 | ||||
-rw-r--r-- | src/battle_main.c | 24 |
3 files changed, 20 insertions, 32 deletions
diff --git a/include/battle.h b/include/battle.h index 263bb3b0d..591a56a33 100644 --- a/include/battle.h +++ b/include/battle.h @@ -291,13 +291,15 @@ struct LinkPartnerHeader struct BattleEnigmaBerry battleEnigmaBerry; }; +union MultiBuffers +{ + struct LinkPartnerHeader linkPartnerHeader; + struct MultiBattlePokemonTx multiBattleMons[3]; +}; + struct BattleStruct /* 0x2000000 */ { - /*0x00000*/ union{ - struct LinkPartnerHeader linkPartnerHeader; - struct MultiBattlePokemonTx multiBattleMons[3]; - } multiBuffer; - u8 filler60[0x15FA0]; + u8 filler00000[0x16000]; /*0x16000*/ u8 turnEffectsTracker; /*0x16001*/ u8 turnEffectsBattlerId; /*0x16002*/ u8 animTurn; @@ -416,21 +418,6 @@ struct BattleStruct /* 0x2000000 */ /*0x16111*/ u8 wishPerishSongBattlerId; /*0x16112*/ u8 multihitMoveEffect; /*0x16113*/ u8 givenExpMons; - /*0x16114*/ u8 unk16114; - /*0x16115*/ u8 unk16115; - /*0x16116*/ u8 unk16116; - /*0x16117*/ u8 unk16117; - /*0x16118*/ u8 unk16118; - /*0x16119*/ u8 unk16119; - /*0x1611A*/ u8 unk1611A; - /*0x1611B*/ u8 unk1611B; - /*0x1611C*/ u8 unk1611C; - /*0x1611D*/ u8 unk1611D; - /*0x1611E*/ u8 unk1611E; - /*0x1611F*/ u8 unk1611F; - - //u8 filler2[0x72E]; - /* 0x16A00 */ struct BattleHistory unk_2016A00_2; }; struct ResourceFlags diff --git a/include/ewram.h b/include/ewram.h index 6e3ba6751..8aa244907 100644 --- a/include/ewram.h +++ b/include/ewram.h @@ -22,6 +22,7 @@ extern u8 gSharedMem[]; // battle etc. // This overlaps with so many things it's not even funny // The actual data starts at 0x02016000 +#define eMultiTxBuffer (*(union MultiBuffers *)gSharedMem) #define gBattleStruct ((struct BattleStruct *) (gSharedMem + 0x0)) #define namingScreenData (*(struct NamingScreenData *)(gSharedMem + 0x0)) #define ewramBerryPic (gSharedMem + 0x0) diff --git a/src/battle_main.c b/src/battle_main.c index 6920b19bf..bc53dad78 100644 --- a/src/battle_main.c +++ b/src/battle_main.c @@ -330,14 +330,14 @@ void BufferPartyVsScreenHealth_AtStart(void) if (species != SPECIES_EGG && hp == 0) r6 |= 3 << i * 2; } - gBattleStruct->multiBuffer.linkPartnerHeader.vsScreenHealthFlagsLo = r6; - gBattleStruct->multiBuffer.linkPartnerHeader.vsScreenHealthFlagsHi = r6 >> 8; + eMultiTxBuffer.linkPartnerHeader.vsScreenHealthFlagsLo = r6; + eMultiTxBuffer.linkPartnerHeader.vsScreenHealthFlagsHi = r6 >> 8; } static void SetPlayerBerryDataInBattleStruct(void) { s32 i; - struct BattleEnigmaBerry * battleBerry = &gBattleStruct->multiBuffer.linkPartnerHeader.battleEnigmaBerry; + struct BattleEnigmaBerry * battleBerry = &eMultiTxBuffer.linkPartnerHeader.battleEnigmaBerry; for (i = 0; i < 7; i++) battleBerry->name[i] = gSaveBlock1.enigmaBerry.berry.name[i]; @@ -429,8 +429,8 @@ void CB2_HandleStartBattle(void) { if (gReceivedRemoteLinkPlayers != 0 && IsLinkTaskFinished()) { - gBattleStruct->multiBuffer.linkPartnerHeader.versionSignatureLo = 1; - gBattleStruct->multiBuffer.linkPartnerHeader.versionSignatureHi = 1; + eMultiTxBuffer.linkPartnerHeader.versionSignatureLo = 1; + eMultiTxBuffer.linkPartnerHeader.versionSignatureHi = 1; BufferPartyVsScreenHealth_AtStart(); SetPlayerBerryDataInBattleStruct(); #if DEBUG @@ -443,7 +443,7 @@ void CB2_HandleStartBattle(void) } } #endif - SendBlock(bitmask_all_link_players_but_self(), &gBattleStruct->multiBuffer.linkPartnerHeader, sizeof(gBattleStruct->multiBuffer.linkPartnerHeader)); + SendBlock(bitmask_all_link_players_but_self(), &eMultiTxBuffer.linkPartnerHeader, sizeof(eMultiTxBuffer.linkPartnerHeader)); gBattleCommunication[0] = 1; } } @@ -498,7 +498,7 @@ void CB2_HandleStartBattle(void) gTasks[taskId].data[1] = 0x10E; gTasks[taskId].data[2] = 0x5A; gTasks[taskId].data[5] = 0; - gTasks[taskId].data[3] = gBattleStruct->multiBuffer.linkPartnerHeader.vsScreenHealthFlagsLo | (gBattleStruct->multiBuffer.linkPartnerHeader.vsScreenHealthFlagsHi << 8); + gTasks[taskId].data[3] = eMultiTxBuffer.linkPartnerHeader.vsScreenHealthFlagsLo | (eMultiTxBuffer.linkPartnerHeader.vsScreenHealthFlagsHi << 8); gTasks[taskId].data[4] = gBlockRecvBuffer[enemyId][1]; gBattleCommunication[0]++; } @@ -598,7 +598,7 @@ void PrepareOwnMultiPartnerBuffer(void) if (gMultiPartnerParty[i].language != 1) PadNameString(nickname, 0); } - memcpy(gBattleStruct->multiBuffer.multiBattleMons, gMultiPartnerParty, 3 * sizeof(struct MultiBattlePokemonTx)); + memcpy(eMultiTxBuffer.multiBattleMons, gMultiPartnerParty, 3 * sizeof(struct MultiBattlePokemonTx)); } void sub_800F104(void) @@ -635,7 +635,7 @@ void sub_800F104(void) if (IsLinkTaskFinished()) { PrepareOwnMultiPartnerBuffer(); - SendBlock(bitmask_all_link_players_but_self(), gBattleStruct->multiBuffer.multiBattleMons, 3 * sizeof(struct MultiBattlePokemonTx)); + SendBlock(bitmask_all_link_players_but_self(), eMultiTxBuffer.multiBattleMons, 3 * sizeof(struct MultiBattlePokemonTx)); gBattleCommunication[0]++; } } @@ -707,11 +707,11 @@ void CB2_HandleStartMultiBattle(void) #endif if (IsLinkTaskFinished()) { - *(&gBattleStruct->multiBuffer.linkPartnerHeader.versionSignatureLo) = 1; - *(&gBattleStruct->multiBuffer.linkPartnerHeader.versionSignatureHi) = 1; + *(&eMultiTxBuffer.linkPartnerHeader.versionSignatureLo) = 1; + *(&eMultiTxBuffer.linkPartnerHeader.versionSignatureHi) = 1; BufferPartyVsScreenHealth_AtStart(); SetPlayerBerryDataInBattleStruct(); - SendBlock(bitmask_all_link_players_but_self(), &gBattleStruct->multiBuffer.linkPartnerHeader, sizeof(gBattleStruct->multiBuffer.linkPartnerHeader)); + SendBlock(bitmask_all_link_players_but_self(), &eMultiTxBuffer.linkPartnerHeader, sizeof(eMultiTxBuffer.linkPartnerHeader)); gBattleCommunication[0]++; } } |