summaryrefslogtreecommitdiff
path: root/mm/src/code
diff options
context:
space:
mode:
authorGarrett Cox <garrettjcox@gmail.com>2024-01-15 20:10:31 +0000
committerGarrett Cox <garrettjcox@gmail.com>2024-05-22 09:04:58 -0500
commitb84550e1df137c2c3cf04bb6c8db61be35f68446 (patch)
treebed0efd1d6f3c101df5ac811ee480f9a91fa4859 /mm/src/code
parent547fa938b2394d5f166c63c4d8c222d99b35e2dd (diff)
More z_message fixes (#55)
Diffstat (limited to 'mm/src/code')
-rw-r--r--mm/src/code/z_message.c118
-rw-r--r--mm/src/code/z_message_nes.c4
2 files changed, 118 insertions, 4 deletions
diff --git a/mm/src/code/z_message.c b/mm/src/code/z_message.c
index d01da6e3e..099cfd87b 100644
--- a/mm/src/code/z_message.c
+++ b/mm/src/code/z_message.c
@@ -8,6 +8,8 @@
#include "BenPort.h"
#include <libultraship/libultraship.h>
#include "assets/archives/schedule_dma_static/schedule_dma_static_yar.h"
+#include "assets/interface/schedule_static/schedule_static.h"
+#include "assets/archives/icon_item_static/icon_item_static_yar.h"
#include "assets/archives/icon_item_24_static/icon_item_24_static_yar.h"
#include "assets/interface/message_static/message_static.h"
#include "assets/interface/message_texture_static/message_texture_static.h"
@@ -39,6 +41,9 @@ const char* gBombersNotebookPhotos[] = {
gBombersNotebookPhotoGuruGuruTex,
gBombersNotebookPhotoBombersTex,
gBombersNotebookPhotoMadameAromaBrightTex,
+ gBombersNotebookEntryIconExclamationPointTex,
+ gBombersNotebookEntryIconMaskTex,
+ gBombersNotebookEntryIconRibbonTex,
};
const char* gQuestIcons[] = {
@@ -65,6 +70,113 @@ const char* gMessageBackgrounds[] = {
gMessageFadingBackgroundTex,
gMessageNotebookBackgroundTex,
};
+
+// This looks very similar to gItemIcons, but it's not the same! Make sure you're using the
+// right array of icon textures! This one is for messages, the other is for the z_parameter/kaleido
+const char* gStaticItemIcons[] = {
+ gItemIconOcarinaOfTimeTex,
+ gItemIconBowTex,
+ gItemIconFireArrowTex,
+ gItemIconIceArrowTex,
+ gItemIconLightArrowTex,
+ gItemIconFairyOcarinaTex,
+ gItemIconBombTex,
+ gItemIconBombchuTex,
+ gItemIconDekuStickTex,
+ gItemIconDekuNutTex,
+ gItemIconMagicBeansTex,
+ gItemIconSlingshotTex,
+ gItemIconPowderKegTex,
+ gItemIconPictographBoxTex,
+ gItemIconLensofTruthTex,
+ gItemIconHookshotTex,
+ gItemIconGreatFairysSwordTex,
+ gItemIconLongshotTex,
+ gItemIconEmptyBottleTex,
+ gItemIconRedPotionTex,
+ gItemIconGreenPotionTex,
+ gItemIconBluePotionTex,
+ gItemIconBottledFairyTex,
+ gItemIconBottledDekuPrincessTex,
+ gItemIconBottledFullMilkTex,
+ gItemIconBottledHalfMilkTex,
+ gItemIconBottledFishTex,
+ gItemIconBottledBugTex,
+ gItemIconBottledBlueFireTex,
+ gItemIconBottledPoeTex,
+ gItemIconBottledBigPoeTex,
+ gItemIconSpringWaterTex,
+ gItemIconHotSpringWaterTex,
+ gItemIconBottledZoraEggTex,
+ gItemIconBottledGoldDustTex,
+ gItemIconBottledMushroomTex,
+ gItemIconBottledSeahorseTex,
+ gItemIconChateauRomaniTex,
+ gItemIconBottledHylianLoachTex,
+ gItemIconEmptyBottle2Tex,
+ gItemIconLandDeedTex,
+ gItemIconMoonsTearTex,
+ gItemIconSwampDeedTex,
+ gItemIconMountainDeedTex,
+ gItemIconOceanDeedTex,
+ gItemIconRoomKeyTex,
+ gItemIconLetterToMamaTex,
+ gItemIconLetterToKafeiTex,
+ gItemIconPendantOfMemoriesTex,
+ gItemIconTingleMapTex,
+ gItemIconDekuMaskTex,
+ gItemIconGoronMaskTex,
+ gItemIconZoraMaskTex,
+ gItemIconFierceDeityMaskTex,
+ gItemIconMaskOfTruthTex,
+ gItemIconKafeisMaskTex,
+ gItemIconAllNightMaskTex,
+ gItemIconBunnyHoodTex,
+ gItemIconKeatonMaskTex,
+ gItemIconGaroMaskTex,
+ gItemIconRomaniMaskTex,
+ gItemIconCircusLeaderMaskTex,
+ gItemIconPostmansHatTex,
+ gItemIconCouplesMaskTex,
+ gItemIconGreatFairyMaskTex,
+ gItemIconGibdoMaskTex,
+ gItemIconDonGeroMaskTex,
+ gItemIconKamaroMaskTex,
+ gItemIconCaptainsHatTex,
+ gItemIconStoneMaskTex,
+ gItemIconBremenMaskTex,
+ gItemIconBlastMaskTex,
+ gItemIconMaskOfScentsTex,
+ gItemIconGiantsMaskTex,
+ gItemIconBowFireTex,
+ gItemIconBowIceTex,
+ gItemIconBowLightTex,
+ gItemIconKokiriSwordTex,
+ gItemIconRazorSwordTex,
+ gItemIconGildedSwordTex,
+ gItemIconFierceDeitySwordTex,
+ gItemIconHerosShieldTex,
+ gItemIconMirrorShieldTex,
+ gItemIconQuiver30Tex,
+ gItemIconQuiver40Tex,
+ gItemIconQuiver50Tex,
+ gItemIconBombBag20Tex,
+ gItemIconBombBag30Tex,
+ gItemIconBombBag40Tex,
+ gItemIconDefaultWalletTex,
+ gItemIconAdultsWalletTex,
+ gItemIconGiantsWalletTex,
+ gItemIconFishingRodTex,
+ gItemIconOdolwasRemainsTex,
+ gItemIconGohtsRemainsTex,
+ gItemIconGyorgsRemainsTex,
+ gItemIconTwinmoldsRemainsTex,
+ gItemIconBombersNotebookTex,
+ gItemIconSongNoteTex,
+ gItemIconHeartPiece1Tex,
+ gItemIconHeartPiece2Tex,
+ gItemIconHeartPiece3Tex,
+};
// #endregion
u8 D_801C6A70 = 0;
@@ -1900,20 +2012,20 @@ void Message_LoadItemIcon(PlayState* play, u16 itemId, s16 arg2) {
// #region 2S2H [Port]
// CmpDma_LoadFile(SEGMENT_ROM_START(icon_item_static_yar), ITEM_SONG_SONATA, msgCtx->textboxSegment + 0x1000,
// 0x180);
- msgCtx->textboxSegment[TEXTBOX_SEG_ICON] = gItemIcons[ITEM_SONG_SONATA];
+ msgCtx->textboxSegment[TEXTBOX_SEG_ICON] = gStaticItemIcons[ITEM_SONG_SONATA];
} else if (itemId == ITEM_BOMBERS_NOTEBOOK) {
msgCtx->unk12010 = (msgCtx->unk11FF8 - D_801CFF70[gSaveContext.options.language]);
msgCtx->unk12012 = (arg2 + 6);
msgCtx->unk12014 = 0x20;
// CmpDma_LoadFile(SEGMENT_ROM_START(icon_item_static_yar), ITEM_SONG_SONATA, msgCtx->textboxSegment + 0x1000,
// 0x1000);
- msgCtx->textboxSegment[TEXTBOX_SEG_ICON] = gItemIcons[ITEM_SONG_SONATA];
+ msgCtx->textboxSegment[TEXTBOX_SEG_ICON] = gStaticItemIcons[ITEM_SONG_SONATA];
} else if (itemId <= ITEM_REMAINS_TWINMOLD) {
msgCtx->unk12010 = (msgCtx->unk11FF8 - D_801CFF70[gSaveContext.options.language]);
msgCtx->unk12012 = (arg2 + 6);
msgCtx->unk12014 = 0x20;
// CmpDma_LoadFile(SEGMENT_ROM_START(icon_item_static_yar), itemId, msgCtx->textboxSegment + 0x1000, 0x1000);
- msgCtx->textboxSegment[TEXTBOX_SEG_ICON] = gItemIcons[itemId];
+ msgCtx->textboxSegment[TEXTBOX_SEG_ICON] = gStaticItemIcons[itemId];
} else if (itemId == ITEM_CC) {
msgCtx->unk12010 = (msgCtx->unk11FF8 - D_801CFF70[gSaveContext.options.language]);
msgCtx->unk12012 = (arg2 + 8);
diff --git a/mm/src/code/z_message_nes.c b/mm/src/code/z_message_nes.c
index 6626eef29..8187880d3 100644
--- a/mm/src/code/z_message_nes.c
+++ b/mm/src/code/z_message_nes.c
@@ -973,7 +973,9 @@ void Message_DecodeNES(PlayState* play) {
u32 timeToMoonCrash;
s16 i;
s16 numLines;
- s16 digits[4];
+ //! @bug OoB read & write for i == 4, digits array is only 4 elements
+ // 2S2H [Port] We opted to fix this 4 -> 5
+ s16 digits[5];
s16 spC6 = 0;
u16 sfxHi;
f32 var_fs0;