document scroll prompts (#689)

This commit is contained in:
scbroede 2025-08-17 00:55:39 -04:00 committed by GitHub
parent 825e31c361
commit cb6665c7c4
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
24 changed files with 429 additions and 235 deletions

View File

@ -10,15 +10,15 @@
void ov5_021D2F14(UnkStruct_ov5_021D30A8 *param0, const SpriteResourceDataPaths *param1, u32 param2, u32 heapID);
void ov5_021D30A8(UnkStruct_ov5_021D30A8 *param0);
Sprite *ov5_021D3104(UnkStruct_ov5_021D30A8 *param0, const SpriteTemplateFromResourceHeader *param1);
void ov5_021D3190(UnkStruct_ov5_021D30A8 *param0, SpriteResourceCapacities *param1, u32 param2, u32 heapID);
void ov5_021D3190(UnkStruct_ov5_021D30A8 *param0, SpriteResourceCapacities *capacities, u32 maxElements, u32 heapID);
void ov5_021D3270(UnkStruct_ov5_021D30A8 *param0, int param1, int param2, int param3, int param4, int param5, int param6);
void ov5_021D32E8(UnkStruct_ov5_021D30A8 *param0, NARC *param1, int param2, int param3, int param4, int param5, int param6);
void ov5_021D32E8(UnkStruct_ov5_021D30A8 *param0, NARC *narc, int memberIdx, BOOL compressed, int paletteIdx, int vramType, int id);
void ov5_021D3360(UnkStruct_ov5_021D30A8 *param0, int param1, int param2, int param3, int param4);
void ov5_021D3374(UnkStruct_ov5_021D30A8 *param0, NARC *param1, int param2, int param3, int param4);
void ov5_021D3374(UnkStruct_ov5_021D30A8 *param0, NARC *narc, int memberIdx, BOOL compressed, int id);
void ov5_021D3388(UnkStruct_ov5_021D30A8 *param0, int param1, int param2, int param3, int param4);
void ov5_021D339C(UnkStruct_ov5_021D30A8 *param0, NARC *param1, int param2, int param3, int param4);
void ov5_021D339C(UnkStruct_ov5_021D30A8 *param0, NARC *narc, int memberIdx, BOOL compressed, int id);
void ov5_021D33B0(UnkStruct_ov5_021D30A8 *param0, int param1, int param2, BOOL param3, int param4, int param5);
void ov5_021D3414(UnkStruct_ov5_021D30A8 *param0, NARC *param1, int param2, BOOL param3, int param4, int param5);
void ov5_021D3414(UnkStruct_ov5_021D30A8 *param0, NARC *narc, int memberIdx, BOOL compressed, int vramType, int id);
ManagedSprite *ov5_021D3584(UnkStruct_ov5_021D30A8 *param0, const SpriteTemplate *param1);
void ov5_021D375C(UnkStruct_ov5_021D30A8 *param0);

View File

@ -44,8 +44,8 @@ enum AccessoryShopSpriteResourceIdx {
};
enum AccessoryShopStaticSprite {
ACCESSORY_SHOP_SPRITE_SCROLL_ARROW_TOP = 0,
ACCESSORY_SHOP_SPRITE_SCROLL_ARROW_BOTTOM,
ACCESSORY_SHOP_SPRITE_SCROLL_TOP_ARROW = 0,
ACCESSORY_SHOP_SPRITE_SCROLL_BOTTOM_ARROW,
ACCESSORY_SHOP_SPRITE_COUNT,
};

View File

@ -1,8 +1,6 @@
#ifndef POKEPLATINUM_STRUCT_OV23_02250CD4_H
#define POKEPLATINUM_STRUCT_OV23_02250CD4_H
#include "struct_defs/struct_0206A844.h"
#include "field/field_system_decl.h"
#include "overlay005/struct_ov5_021D30A8.h"
#include "overlay023/funcptr_ov23_0224F758.h"
@ -14,6 +12,7 @@
#include "bg_window.h"
#include "list_menu.h"
#include "menu.h"
#include "scroll_prompts.h"
#include "sprite_system.h"
#include "strbuf.h"
#include "string_list.h"
@ -23,7 +22,7 @@
typedef struct {
void *unk_00;
SysTask *unk_04;
UnkStruct_0206A844 *unk_08;
ScrollPrompts *unk_08;
FieldSystem *fieldSystem;
Window unk_10;
Window unk_20;

27
include/scroll_prompts.h Normal file
View File

@ -0,0 +1,27 @@
#ifndef POKEPLATINUM_UNK_0206A780_H
#define POKEPLATINUM_UNK_0206A780_H
#include "constants/heap.h"
#include "overlay005/struct_ov5_021D30A8.h"
#include "sprite_system.h"
enum ScrollPromptArrows {
SCROLL_PROMPT_TOP_ARROW = 0,
SCROLL_PROMPT_BOTTOM_ARROW,
SCROLL_PROMPT_ARROW_COUNT,
};
typedef struct ScrollPrompts {
UnkStruct_ov5_021D30A8 unk_00;
ManagedSprite *arrowSprites[SCROLL_PROMPT_ARROW_COUNT];
} ScrollPrompts;
ScrollPrompts *ScrollPrompts_New(enum HeapId heapID);
void ScrollPrompts_Free(ScrollPrompts *prompts);
void ScrollPrompts_UpdateAnim(ScrollPrompts *prompts);
void ScrollPrompts_SetPosition(ScrollPrompts *prompts, s16 x, s16 topArrowY, s16 bottomArrowY);
void ScrollPrompts_SetDrawFlag(ScrollPrompts *prompts, u16 arrowIndex, BOOL draw);
#endif // POKEPLATINUM_UNK_0206A780_H

View File

@ -1,13 +0,0 @@
#ifndef POKEPLATINUM_STRUCT_0206A844_H
#define POKEPLATINUM_STRUCT_0206A844_H
#include "overlay005/struct_ov5_021D30A8.h"
#include "sprite_system.h"
typedef struct {
UnkStruct_ov5_021D30A8 unk_00;
ManagedSprite *unk_1C8[2];
} UnkStruct_0206A844;
#endif // POKEPLATINUM_STRUCT_0206A844_H

View File

@ -1,12 +0,0 @@
#ifndef POKEPLATINUM_UNK_0206A780_H
#define POKEPLATINUM_UNK_0206A780_H
#include "struct_defs/struct_0206A844.h"
UnkStruct_0206A844 *sub_0206A780(int heapID);
void sub_0206A844(UnkStruct_0206A844 *param0);
void sub_0206A870(UnkStruct_0206A844 *param0);
void sub_0206A8A0(UnkStruct_0206A844 *param0, s16 param1, s16 param2, s16 param3);
void sub_0206A8C4(UnkStruct_0206A844 *param0, u16 param1, BOOL param2);
#endif // POKEPLATINUM_UNK_0206A780_H

View File

@ -200,7 +200,7 @@ res/prebuilt/graphic/ev_pokeselect.narc,/graphic/ev_pokeselect.narc
res/prebuilt/graphic/f_note_gra.narc,/graphic/f_note_gra.narc
res/graphics/signposts/field_board.narc,/graphic/field_board.narc
res/prebuilt/graphic/field_encounteffect.narc,/graphic/field_encounteffect.narc
res/prebuilt/graphic/fld_comact.narc,/graphic/fld_comact.narc
res/graphics/scroll_prompts/fld_comact.narc,/graphic/fld_comact.narc
res/prebuilt/graphic/font.narc,/graphic/font.narc
res/prebuilt/graphic/fontoam.narc,/graphic/fontoam.narc
res/prebuilt/graphic/footprint_board.narc,/graphic/footprint_board.narc

1 Source File Target File
200 res/prebuilt/graphic/f_note_gra.narc /graphic/f_note_gra.narc
201 res/graphics/signposts/field_board.narc /graphic/field_board.narc
202 res/prebuilt/graphic/field_encounteffect.narc /graphic/field_encounteffect.narc
203 res/prebuilt/graphic/fld_comact.narc res/graphics/scroll_prompts/fld_comact.narc /graphic/fld_comact.narc
204 res/prebuilt/graphic/font.narc /graphic/font.narc
205 res/prebuilt/graphic/fontoam.narc /graphic/fontoam.narc
206 res/prebuilt/graphic/footprint_board.narc /graphic/footprint_board.narc

View File

@ -199,7 +199,7 @@ d91ceca1e3ef5e57061dabc690c0f1a1556dc624 *res/prebuilt/graphic/ev_pokeselect.nar
5c673be62fe6bddfa911e3be26762b7e47d60b41 *res/prebuilt/graphic/f_note_gra.narc
4941a639804c2b009836d1ab9b86a2ab0bb0c436 *res/graphics/signposts/field_board.narc
3a71f8eca65f2524f96c4bb8463800ae19a70a90 *res/prebuilt/graphic/field_encounteffect.narc
e4ad5fcd9010114089a5ded83a077a75860d633a *res/prebuilt/graphic/fld_comact.narc
e4ad5fcd9010114089a5ded83a077a75860d633a *res/graphics/scroll_prompts/fld_comact.narc
1122e901209b1047fbbacb1a47311c8bd529a647 *res/prebuilt/graphic/font.narc
02e2132b2bb08413d890c220bff7219e3725f7c2 *res/prebuilt/graphic/fontoam.narc
e7266bd8b7095861b6e1fdaf4f13cb648a9c325d *res/prebuilt/graphic/footprint_board.narc

View File

@ -263,7 +263,7 @@ Static main
Object main.nef.p/src_item_use_functions.c.o
Object main.nef.p/src_pokeradar.c.o
Object main.nef.p/src_unk_02069BE0.c.o
Object main.nef.p/src_unk_0206A780.c.o
Object main.nef.p/src_scroll_prompts.c.o
Object main.nef.p/src_system_flags.c.o
Object main.nef.p/src_system_vars.c.o
Object main.nef.p/src_unk_0206B70C.c.o

View File

@ -1,5 +1,6 @@
subdir('options_menu')
subdir('pokemon_summary_screen')
subdir('scroll_prompts')
subdir('shop_menu')
subdir('signposts')
subdir('title_screen')

View File

@ -0,0 +1,4 @@
scroll_prompts.NCLR
scroll_prompts.NCGR
scroll_prompts_cell.NCER
scroll_prompts_anim.NANR

View File

@ -0,0 +1,35 @@
scroll_prompts_png = files('scroll_prompts.png')
scroll_prompts_ncgr = ncgr_gen.process(scroll_prompts_png,
extra_args: [ '-version101', '-clobbersize', ],
)
scroll_prompts_nclr = nclr_gen.process(scroll_prompts_png,
extra_args: [ '-bitdepth', '4', '-pcmp', '-nopad', '-invertsize', ],
)
scroll_prompts_ncer = ncer_gen.process(files('scroll_prompts_cell.json'))
scroll_prompts_nanr = nanr_gen.process(files('scroll_prompts_anim.json'))
fld_comact_order = files('fld_comact.order')
fld_comact_narc = custom_target('fld_comact.narc',
output: [
'fld_comact.narc',
'fld_comact.naix.h',
],
input: [
scroll_prompts_ncgr,
scroll_prompts_nclr,
scroll_prompts_ncer,
scroll_prompts_nanr,
fld_comact_order,
],
command: [
narc_exe, 'create',
'--naix',
'--order', fld_comact_order,
'--output', '@OUTPUT0@',
'@PRIVATE_DIR@',
]
)
nitrofs_files += fld_comact_narc
naix_headers += fld_comact_narc[1]

Binary file not shown.

After

Width:  |  Height:  |  Size: 200 B

View File

@ -0,0 +1,78 @@
{
"labelEnabled": true,
"sequenceCount": 2,
"frameCount": 8,
"sequences": [{
"frameCount": 4,
"loopStartFrame": 0,
"animationElement": 2,
"animationType": 1,
"playbackMode": 2,
"frameData": [{
"frameDelay": 8,
"resultId": 0
}, {
"frameDelay": 8,
"resultId": 1
}, {
"frameDelay": 8,
"resultId": 2
}, {
"frameDelay": 8,
"resultId": 1
}]
}, {
"frameCount": 4,
"loopStartFrame": 0,
"animationElement": 2,
"animationType": 1,
"playbackMode": 2,
"frameData": [{
"frameDelay": 8,
"resultId": 3
}, {
"frameDelay": 8,
"resultId": 4
}, {
"frameDelay": 8,
"resultId": 5
}, {
"frameDelay": 8,
"resultId": 4
}]
}],
"animationResults": [{
"resultType": 2,
"index": 0,
"positionX": 0,
"positionY": 0
}, {
"resultType": 2,
"index": 0,
"positionX": 0,
"positionY": -1
}, {
"resultType": 2,
"index": 0,
"positionX": 0,
"positionY": -2
}, {
"resultType": 2,
"index": 1,
"positionX": 0,
"positionY": 0
}, {
"resultType": 2,
"index": 1,
"positionX": 0,
"positionY": 1
}, {
"resultType": 2,
"index": 1,
"positionX": 0,
"positionY": 2
}],
"resultCount": 6,
"labels": ["CellAnime0", "CellAnime1"],
"labelCount": 2
}

View File

@ -0,0 +1,78 @@
{
"labelEnabled": true,
"extended": true,
"vramTransferEnabled": false,
"cellCount": 2,
"mappingType": 0,
"cells": [{
"cellAttrs": {
"hFlip": false,
"vFlip": false,
"hvFlip": false,
"boundingRect": true,
"boundingSphereRadius": 3
},
"maxX": 7,
"maxY": 7,
"minX": -8,
"minY": -8,
"oamCount": 1,
"OAM": [{
"Attr0": {
"YCoordinate": 248,
"Rotation": false,
"SizeDisable": false,
"Mode": 0,
"Mosaic": false,
"Colours": 16,
"Shape": 0
},
"Attr1": {
"XCoordinate": 504,
"RotationScaling": 0,
"Size": 1
},
"Attr2": {
"CharName": 0,
"Priority": 0,
"Palette": 0
}
}]
}, {
"cellAttrs": {
"hFlip": false,
"vFlip": false,
"hvFlip": false,
"boundingRect": true,
"boundingSphereRadius": 3
},
"maxX": 7,
"maxY": 7,
"minX": -8,
"minY": -8,
"oamCount": 1,
"OAM": [{
"Attr0": {
"YCoordinate": 248,
"Rotation": false,
"SizeDisable": false,
"Mode": 0,
"Mosaic": false,
"Colours": 16,
"Shape": 0
},
"Attr1": {
"XCoordinate": 504,
"RotationScaling": 0,
"Size": 1
},
"Attr2": {
"CharName": 4,
"Priority": 0,
"Palette": 0
}
}]
}],
"labels": ["CellAnime0", "CellAnime1"],
"labelCount": 2
}

View File

@ -249,7 +249,7 @@ pokeplatinum_c = files(
'item_use_functions.c',
'pokeradar.c',
'unk_02069BE0.c',
'unk_0206A780.c',
'scroll_prompts.c',
'system_flags.c',
'system_vars.c',
'unk_0206B70C.c',

View File

@ -16,7 +16,7 @@
static BOOL ov5_021D3478(SpriteResourceList *param0, SpriteResource *param1);
static void ov5_021D34AC(UnkStruct_ov5_021D30A8 *param0, int param1, int param2, int param3, int param4, int param5);
static void ov5_021D3518(UnkStruct_ov5_021D30A8 *param0, NARC *param1, int param2, int param3, int param4, int param5);
static void ov5_021D3518(UnkStruct_ov5_021D30A8 *param0, NARC *narc, int memberIdx, BOOL compressed, enum SpriteResourceType type, int id);
void ov5_021D2F14(UnkStruct_ov5_021D30A8 *param0, const SpriteResourceDataPaths *param1, u32 param2, u32 heapID)
{
@ -117,7 +117,7 @@ Sprite *ov5_021D3104(UnkStruct_ov5_021D30A8 *param0, const SpriteTemplateFromRes
return v1;
}
void ov5_021D3190(UnkStruct_ov5_021D30A8 *param0, SpriteResourceCapacities *param1, u32 param2, u32 heapID)
void ov5_021D3190(UnkStruct_ov5_021D30A8 *param0, SpriteResourceCapacities *capacities, u32 maxElements, u32 heapID)
{
SpriteResourceTable *v0;
SpriteResourceTable *v1;
@ -125,10 +125,10 @@ void ov5_021D3190(UnkStruct_ov5_021D30A8 *param0, SpriteResourceCapacities *para
u32 v3;
u32 v4, v5;
param0->unk_00 = SpriteList_InitRendering(param2, &param0->unk_04, heapID);
param0->unk_00 = SpriteList_InitRendering(maxElements, &param0->unk_04, heapID);
param0->heapID = heapID;
if ((param1->asStruct.mcellCapacity == 0) || (param1->asStruct.manimCapacity == 0)) {
if ((capacities->asStruct.mcellCapacity == 0) || (capacities->asStruct.manimCapacity == 0)) {
param0->unk_1C4 = 6 - 2;
param0->unk_194[4] = NULL;
param0->unk_194[5] = NULL;
@ -137,15 +137,15 @@ void ov5_021D3190(UnkStruct_ov5_021D30A8 *param0, SpriteResourceCapacities *para
}
for (v4 = 0; v4 < param0->unk_1C4; v4++) {
param0->unk_194[v4] = SpriteResourceCollection_New(param1->asArray[v4], v4, heapID);
param0->unk_194[v4] = SpriteResourceCollection_New(capacities->asArray[v4], v4, heapID);
}
for (v4 = 0; v4 < param0->unk_1C4; v4++) {
if (param1->asArray[v4] == 0) {
if (capacities->asArray[v4] == 0) {
continue;
}
param0->unk_1AC[v4] = SpriteResourceList_New(param1->asArray[v4], heapID);
param0->unk_1AC[v4] = SpriteResourceList_New(capacities->asArray[v4], heapID);
for (v5 = 0; v5 < param0->unk_1AC[v4]->capacity; v5++) {
param0->unk_1AC[v4]->resources[v5] = NULL;
@ -177,24 +177,24 @@ void ov5_021D3270(UnkStruct_ov5_021D30A8 *param0, int param1, int param2, int pa
GF_ASSERT(0);
}
void ov5_021D32E8(UnkStruct_ov5_021D30A8 *param0, NARC *param1, int param2, int param3, int param4, int param5, int param6)
void ov5_021D32E8(UnkStruct_ov5_021D30A8 *param0, NARC *narc, int memberIdx, BOOL compressed, int paletteIdx, int vramType, int id)
{
SpriteResource *v0;
int v1;
if (SpriteResourceCollection_IsIDUnused(param0->unk_194[1], param6) == 0) {
if (SpriteResourceCollection_IsIDUnused(param0->unk_194[1], id) == 0) {
GF_ASSERT(0);
return;
}
v0 = SpriteResourceCollection_AddPaletteFrom(param0->unk_194[1], param1, param2, param3, param6, param5, param4, param0->heapID);
v0 = SpriteResourceCollection_AddPaletteFrom(param0->unk_194[1], narc, memberIdx, compressed, id, vramType, paletteIdx, param0->heapID);
if (v0 != NULL) {
v1 = SpriteTransfer_RequestPlttFreeSpace(v0);
GF_ASSERT(v1 == 1);
ov5_021D3478(param0->unk_1AC[1], v0);
SpriteTransfer_GetPlttOffset(v0, param5);
SpriteTransfer_GetPlttOffset(v0, vramType);
return;
}
@ -206,9 +206,9 @@ void ov5_021D3360(UnkStruct_ov5_021D30A8 *param0, int param1, int param2, int pa
ov5_021D34AC(param0, param1, param2, param3, 2, param4);
}
void ov5_021D3374(UnkStruct_ov5_021D30A8 *param0, NARC *param1, int param2, int param3, int param4)
void ov5_021D3374(UnkStruct_ov5_021D30A8 *param0, NARC *narc, int memberIdx, BOOL compressed, int id)
{
ov5_021D3518(param0, param1, param2, param3, 2, param4);
ov5_021D3518(param0, narc, memberIdx, compressed, SPRITE_RESOURCE_CELL, id);
}
void ov5_021D3388(UnkStruct_ov5_021D30A8 *param0, int param1, int param2, int param3, int param4)
@ -216,9 +216,9 @@ void ov5_021D3388(UnkStruct_ov5_021D30A8 *param0, int param1, int param2, int pa
ov5_021D34AC(param0, param1, param2, param3, 3, param4);
}
void ov5_021D339C(UnkStruct_ov5_021D30A8 *param0, NARC *param1, int param2, int param3, int param4)
void ov5_021D339C(UnkStruct_ov5_021D30A8 *param0, NARC *narc, int memberIdx, BOOL compressed, int id)
{
ov5_021D3518(param0, param1, param2, param3, 3, param4);
ov5_021D3518(param0, narc, memberIdx, compressed, SPRITE_RESOURCE_ANIM, id);
}
void ov5_021D33B0(UnkStruct_ov5_021D30A8 *param0, int param1, int param2, BOOL param3, int param4, int param5)
@ -241,16 +241,16 @@ void ov5_021D33B0(UnkStruct_ov5_021D30A8 *param0, int param1, int param2, BOOL p
GF_ASSERT(0);
}
void ov5_021D3414(UnkStruct_ov5_021D30A8 *param0, NARC *param1, int param2, BOOL param3, int param4, int param5)
void ov5_021D3414(UnkStruct_ov5_021D30A8 *param0, NARC *narc, int memberIdx, BOOL compressed, int vramType, int id)
{
SpriteResource *v0;
if (SpriteResourceCollection_IsIDUnused(param0->unk_194[0], param5) == 0) {
if (SpriteResourceCollection_IsIDUnused(param0->unk_194[0], id) == 0) {
GF_ASSERT(0);
return;
}
v0 = SpriteResourceCollection_AddTilesFrom(param0->unk_194[0], param1, param2, param3, param5, param4, param0->heapID);
v0 = SpriteResourceCollection_AddTilesFrom(param0->unk_194[0], narc, memberIdx, compressed, id, vramType, param0->heapID);
if (v0 != NULL) {
SpriteTransfer_RequestCharAtEnd(v0);
@ -301,20 +301,20 @@ static void ov5_021D34AC(UnkStruct_ov5_021D30A8 *param0, int param1, int param2,
GF_ASSERT(0);
}
static void ov5_021D3518(UnkStruct_ov5_021D30A8 *param0, NARC *param1, int param2, int param3, int param4, int param5)
static void ov5_021D3518(UnkStruct_ov5_021D30A8 *param0, NARC *narc, int memberIdx, BOOL compressed, enum SpriteResourceType type, int id)
{
SpriteResource *v0;
int v1;
if (SpriteResourceCollection_IsIDUnused(param0->unk_194[param4], param5) == 0) {
if (SpriteResourceCollection_IsIDUnused(param0->unk_194[type], id) == 0) {
GF_ASSERT(0);
return;
}
v0 = SpriteResourceCollection_AddFrom(param0->unk_194[param4], param1, param2, param3, param5, param4, param0->heapID);
v0 = SpriteResourceCollection_AddFrom(param0->unk_194[type], narc, memberIdx, compressed, id, type, param0->heapID);
if (v0 != NULL) {
v1 = ov5_021D3478(param0->unk_1AC[param4], v0);
v1 = ov5_021D3478(param0->unk_1AC[type], v0);
GF_ASSERT(v1 == 1);
return;

View File

@ -612,8 +612,8 @@ static void AccessoryShop_UpdateItemListMenu(AccessoryShopItemList *itemList)
static void AccessoryShop_HideScrollArrows(AccessoryShopItemList *itemList)
{
Sprite_SetDrawFlag(itemList->sprites[ACCESSORY_SHOP_SPRITE_SCROLL_ARROW_TOP], FALSE);
Sprite_SetDrawFlag(itemList->sprites[ACCESSORY_SHOP_SPRITE_SCROLL_ARROW_BOTTOM], FALSE);
Sprite_SetDrawFlag(itemList->sprites[ACCESSORY_SHOP_SPRITE_SCROLL_TOP_ARROW], FALSE);
Sprite_SetDrawFlag(itemList->sprites[ACCESSORY_SHOP_SPRITE_SCROLL_BOTTOM_ARROW], FALSE);
}
static void AccessoryShop_LoadScrollArrowGfx(SpriteResourcesHeader *scrollArrowResource, AccessoryShopItemList *itemList, enum HeapId heapID)
@ -648,15 +648,15 @@ static void AccessoryShop_UpdateScrollArrowsVisibility(AccessoryShopItemList *it
ListMenu_GetListAndCursorPos(itemList->listMenu, &listPos, NULL);
if (listPos <= 0) {
Sprite_SetDrawFlag(itemList->sprites[ACCESSORY_SHOP_SPRITE_SCROLL_ARROW_TOP], FALSE);
Sprite_SetDrawFlag(itemList->sprites[ACCESSORY_SHOP_SPRITE_SCROLL_TOP_ARROW], FALSE);
} else {
Sprite_SetDrawFlag(itemList->sprites[ACCESSORY_SHOP_SPRITE_SCROLL_ARROW_TOP], TRUE);
Sprite_SetDrawFlag(itemList->sprites[ACCESSORY_SHOP_SPRITE_SCROLL_TOP_ARROW], TRUE);
}
if (listPos >= (itemList->maxListItems - MAX_ITEM_SHOWN)) {
Sprite_SetDrawFlag(itemList->sprites[ACCESSORY_SHOP_SPRITE_SCROLL_ARROW_BOTTOM], FALSE);
Sprite_SetDrawFlag(itemList->sprites[ACCESSORY_SHOP_SPRITE_SCROLL_BOTTOM_ARROW], FALSE);
} else {
Sprite_SetDrawFlag(itemList->sprites[ACCESSORY_SHOP_SPRITE_SCROLL_ARROW_BOTTOM], TRUE);
Sprite_SetDrawFlag(itemList->sprites[ACCESSORY_SHOP_SPRITE_SCROLL_BOTTOM_ARROW], TRUE);
}
}

View File

@ -45,6 +45,7 @@
#include "player_avatar.h"
#include "render_window.h"
#include "save_player.h"
#include "scroll_prompts.h"
#include "sound_playback.h"
#include "sprite.h"
#include "sprite_system.h"
@ -56,7 +57,6 @@
#include "system.h"
#include "trainer_info.h"
#include "unk_0202854C.h"
#include "unk_0206A780.h"
typedef void (*UnkFuncPtr_ov23_0224FA58)(UnkStruct_ov23_02250CD4 *);
@ -632,10 +632,10 @@ static BOOL ov23_0224FA58(SysTask *param0, void *param1)
break;
default:
if ((v0->unk_2A0 == (u32)ov23_0224FDE0) || (v0->unk_2A0 == (u32)ov23_022501BC) || (v0->unk_2A0 == (u32)ov23_02250CD4) || (v0->unk_2A0 == (u32)ov23_02250598)) {
v0->unk_08 = sub_0206A780(HEAP_ID_FIELD);
sub_0206A8A0(v0->unk_08, 200, 20, 122);
sub_0206A8C4(v0->unk_08, 0, 0);
sub_0206A8C4(v0->unk_08, 1, 0);
v0->unk_08 = ScrollPrompts_New(HEAP_ID_FIELD);
ScrollPrompts_SetPosition(v0->unk_08, 200, 20, 122);
ScrollPrompts_SetDrawFlag(v0->unk_08, SCROLL_PROMPT_TOP_ARROW, FALSE);
ScrollPrompts_SetDrawFlag(v0->unk_08, SCROLL_PROMPT_BOTTOM_ARROW, FALSE);
}
if (v0->unk_25C) {
@ -771,7 +771,7 @@ static void ov23_0224FD3C(UnkStruct_ov23_02250CD4 *param0)
ov23_0224FB7C(param0);
if (param0->unk_08) {
sub_0206A844(param0->unk_08);
ScrollPrompts_Free(param0->unk_08);
param0->unk_08 = NULL;
}
@ -914,8 +914,8 @@ static BOOL Underground_HandleTrapsMenu(SysTask *param0, void *param1)
UndergroundTextPrinter_PrintTextInstant(CommManUnderground_GetCommonTextPrinter(), 129, FALSE, NULL);
}
}
sub_0206A8C4(v0->unk_08, 0, 0);
sub_0206A8C4(v0->unk_08, 1, 0);
ScrollPrompts_SetDrawFlag(v0->unk_08, SCROLL_PROMPT_TOP_ARROW, FALSE);
ScrollPrompts_SetDrawFlag(v0->unk_08, SCROLL_PROMPT_BOTTOM_ARROW, FALSE);
break;
}
@ -1098,8 +1098,8 @@ static BOOL Underground_HandleSpheresMenu(SysTask *param0, void *param1)
v0->unk_2AA = 16;
UndergroundTextPrinter_SetUndergroundItemName(CommManUnderground_GetCommonTextPrinter(), 2, Unk_ov23_022577B8->selectedID);
UndergroundTextPrinter_PrintTextInstant(CommManUnderground_GetCommonTextPrinter(), 129, FALSE, NULL);
sub_0206A8C4(v0->unk_08, 0, FALSE);
sub_0206A8C4(v0->unk_08, 1, FALSE);
ScrollPrompts_SetDrawFlag(v0->unk_08, SCROLL_PROMPT_TOP_ARROW, FALSE);
ScrollPrompts_SetDrawFlag(v0->unk_08, SCROLL_PROMPT_BOTTOM_ARROW, FALSE);
break;
}
@ -1275,8 +1275,8 @@ static BOOL Underground_HandleTreasuresMenu(SysTask *param0, void *param1)
v0->unk_2AA = 17;
sub_0206A8C4(v0->unk_08, 0, 0);
sub_0206A8C4(v0->unk_08, 1, 0);
ScrollPrompts_SetDrawFlag(v0->unk_08, SCROLL_PROMPT_TOP_ARROW, FALSE);
ScrollPrompts_SetDrawFlag(v0->unk_08, SCROLL_PROMPT_BOTTOM_ARROW, FALSE);
break;
}
@ -1472,7 +1472,7 @@ static void ov23_02250B34(SysTask *param0, UnkStruct_ov23_02250CD4 *param1, BOOL
param1->unk_04 = NULL;
if (param1->unk_08) {
sub_0206A844(param1->unk_08);
ScrollPrompts_Free(param1->unk_08);
}
Heap_Free(param1);
@ -1679,8 +1679,8 @@ static BOOL Underground_HandleGoodsMenu(SysTask *param0, void *param1)
v0->unk_2AA = 19;
sub_0206A8C4(v0->unk_08, 0, 0);
sub_0206A8C4(v0->unk_08, 1, 0);
ScrollPrompts_SetDrawFlag(v0->unk_08, SCROLL_PROMPT_TOP_ARROW, FALSE);
ScrollPrompts_SetDrawFlag(v0->unk_08, SCROLL_PROMPT_BOTTOM_ARROW, FALSE);
break;
}
@ -1753,7 +1753,7 @@ void ov23_02251044(void *param0, u32 param1)
ov23_0224FCF4(v0);
if (v0->unk_08) {
sub_0206A844(v0->unk_08);
ScrollPrompts_Free(v0->unk_08);
}
if (v0->unk_260 != NULL) {

View File

@ -37,6 +37,7 @@
#include "render_window.h"
#include "save_player.h"
#include "screen_fade.h"
#include "scroll_prompts.h"
#include "sound_playback.h"
#include "strbuf.h"
#include "string_list.h"
@ -47,7 +48,6 @@
#include "system_flags.h"
#include "unk_0202854C.h"
#include "unk_02033200.h"
#include "unk_0206A780.h"
#include "vars_flags.h"
typedef struct {
@ -91,18 +91,18 @@ void ov23_0225128C(UnkStruct_ov23_02250CD4 *param0, int param1, int param2, int
}
if (param1 != 0) {
sub_0206A8C4(param0->unk_08, 0, 1);
ScrollPrompts_SetDrawFlag(param0->unk_08, SCROLL_PROMPT_TOP_ARROW, TRUE);
} else {
sub_0206A8C4(param0->unk_08, 0, 0);
ScrollPrompts_SetDrawFlag(param0->unk_08, SCROLL_PROMPT_TOP_ARROW, FALSE);
}
if (param2 != (param1 + param3)) {
sub_0206A8C4(param0->unk_08, 1, 1);
ScrollPrompts_SetDrawFlag(param0->unk_08, SCROLL_PROMPT_BOTTOM_ARROW, TRUE);
} else {
sub_0206A8C4(param0->unk_08, 1, 0);
ScrollPrompts_SetDrawFlag(param0->unk_08, SCROLL_PROMPT_BOTTOM_ARROW, FALSE);
}
sub_0206A870(param0->unk_08);
ScrollPrompts_UpdateAnim(param0->unk_08);
}
int ov23_022512D4(Coordinates *param0, int param1)
@ -565,8 +565,8 @@ static BOOL ov23_02251960(SysTask *param0, void *param1)
break;
}
sub_0206A8C4(v0->unk_08, 0, 0);
sub_0206A8C4(v0->unk_08, 1, 0);
ScrollPrompts_SetDrawFlag(v0->unk_08, SCROLL_PROMPT_TOP_ARROW, FALSE);
ScrollPrompts_SetDrawFlag(v0->unk_08, SCROLL_PROMPT_BOTTOM_ARROW, FALSE);
return 1;
}
@ -660,7 +660,7 @@ static void ov23_02251BB4(SysTask *param0, UnkStruct_ov23_02250CD4 *param1)
}
if (param1->unk_08) {
sub_0206A844(param1->unk_08);
ScrollPrompts_Free(param1->unk_08);
param1->unk_08 = NULL;
}
@ -844,11 +844,11 @@ static void ov23_02251F94(FieldSystem *fieldSystem)
v1->strbuf = Strbuf_Init((50 * 2), HEAP_ID_FIELD);
v1->fmtString = Strbuf_Init((50 * 2), HEAP_ID_FIELD);
v1->template = StringTemplate_Default(HEAP_ID_FIELD);
v1->unk_08 = sub_0206A780(HEAP_ID_FIELD);
v1->unk_08 = ScrollPrompts_New(HEAP_ID_FIELD);
sub_0206A8A0(v1->unk_08, 200, 20, 122);
sub_0206A8C4(v1->unk_08, 0, 0);
sub_0206A8C4(v1->unk_08, 1, 0);
ScrollPrompts_SetPosition(v1->unk_08, 200, 20, 122);
ScrollPrompts_SetDrawFlag(v1->unk_08, SCROLL_PROMPT_TOP_ARROW, FALSE);
ScrollPrompts_SetDrawFlag(v1->unk_08, SCROLL_PROMPT_BOTTOM_ARROW, FALSE);
v1->unk_04 = SysTask_Start(ov23_02251C04, v1, 10000);

View File

@ -3,7 +3,6 @@
#include <nitro.h>
#include <string.h>
#include "struct_defs/struct_0206A844.h"
#include "struct_defs/underground.h"
#include "field/field_system.h"
@ -19,13 +18,13 @@
#include "list_menu.h"
#include "message.h"
#include "render_window.h"
#include "scroll_prompts.h"
#include "sound_playback.h"
#include "strbuf.h"
#include "string_list.h"
#include "string_template.h"
#include "text.h"
#include "unk_0202854C.h"
#include "unk_0206A780.h"
typedef struct UnkStruct_ov23_022542D8_t {
FieldSystem *fieldSystem;
@ -43,7 +42,7 @@ typedef struct UnkStruct_ov23_022542D8_t {
typedef struct UnkStruct_ov23_02254594_t {
FieldSystem *fieldSystem;
UnkStruct_0206A844 *unk_04;
ScrollPrompts *unk_04;
Window unk_08;
Window unk_18;
StringList *unk_28;
@ -65,7 +64,7 @@ static void ov23_0225451C(UnkStruct_ov23_022542D8 *param0);
static void ov23_022546E0(UnkStruct_ov23_02254594 *param0);
static void ov23_0225461C(UnkStruct_ov23_02254594 *param0);
static void ov23_02254958(UnkStruct_ov23_02254594 *param0);
static void ov23_022549A8(UnkStruct_0206A844 *param0, const u16 param1, const u16 param2, const u16 param3);
static void ov23_022549A8(ScrollPrompts *param0, const u16 param1, const u16 param2, const u16 param3);
static void ov23_022549EC(UnkStruct_ov23_022542D8 *param0);
static const ListMenuTemplate Unk_ov23_02256B3C = {
@ -310,7 +309,7 @@ BOOL ov23_022545DC(UnkStruct_ov23_02254594 *param0)
}
if (param0->unk_04) {
sub_0206A870(param0->unk_04);
ScrollPrompts_UpdateAnim(param0->unk_04);
}
return 0;
@ -477,11 +476,11 @@ static void ov23_022546E0(UnkStruct_ov23_02254594 *param0)
Window_CopyToVRAM(&param0->unk_08);
Window_CopyToVRAM(&param0->unk_18);
param0->unk_04 = sub_0206A780(HEAP_ID_FIELD);
param0->unk_04 = ScrollPrompts_New(HEAP_ID_FIELD);
sub_0206A8A0(param0->unk_04, 200, 10 + 8 * 2, 118 + 8 * 2);
sub_0206A8C4(param0->unk_04, 0, 0);
sub_0206A8C4(param0->unk_04, 1, 0);
ScrollPrompts_SetPosition(param0->unk_04, 200, 10 + 8 * 2, 118 + 8 * 2);
ScrollPrompts_SetDrawFlag(param0->unk_04, SCROLL_PROMPT_TOP_ARROW, FALSE);
ScrollPrompts_SetDrawFlag(param0->unk_04, SCROLL_PROMPT_BOTTOM_ARROW, FALSE);
param0->unk_42 = 1;
}
@ -497,25 +496,25 @@ static void ov23_02254958(UnkStruct_ov23_02254594 *param0)
Window_Remove(&param0->unk_08);
Window_Remove(&param0->unk_18);
StringList_Free(param0->unk_28);
sub_0206A844(param0->unk_04);
ScrollPrompts_Free(param0->unk_04);
}
static void ov23_022549A8(UnkStruct_0206A844 *param0, const u16 param1, const u16 param2, const u16 param3)
static void ov23_022549A8(ScrollPrompts *param0, const u16 param1, const u16 param2, const u16 param3)
{
if (param2 <= param3) {
return;
}
if (param1 != 0) {
sub_0206A8C4(param0, 0, 1);
ScrollPrompts_SetDrawFlag(param0, SCROLL_PROMPT_TOP_ARROW, TRUE);
} else {
sub_0206A8C4(param0, 0, 0);
ScrollPrompts_SetDrawFlag(param0, SCROLL_PROMPT_TOP_ARROW, FALSE);
}
if (param2 != (param1 + param3)) {
sub_0206A8C4(param0, 1, 1);
ScrollPrompts_SetDrawFlag(param0, SCROLL_PROMPT_BOTTOM_ARROW, TRUE);
} else {
sub_0206A8C4(param0, 1, 0);
ScrollPrompts_SetDrawFlag(param0, SCROLL_PROMPT_BOTTOM_ARROW, FALSE);
}
}

110
src/scroll_prompts.c Normal file
View File

@ -0,0 +1,110 @@
#include "scroll_prompts.h"
#include <nitro.h>
#include <string.h>
#include "overlay005/ov5_021D2F14.h"
#include "heap.h"
#include "narc.h"
#include "sprite.h"
#include "sprite_system.h"
#include "res/graphics/scroll_prompts/fld_comact.naix.h"
static const SpriteTemplate sArrowSpriteTemplates[] = {
{
.x = 80,
.y = 16,
.z = 0,
.animIdx = 0,
.priority = 0,
.plttIdx = 0,
.vramType = NNS_G2D_VRAM_TYPE_2DMAIN,
.resources = { 0x34D8, 0x34D8, 0x34D8, 0x34D8, 0x0, 0x0 },
.bgPriority = 0,
.vramTransfer = FALSE,
},
{
.x = 80,
.y = 224,
.z = 0,
.animIdx = 1,
.priority = 0,
.plttIdx = 0,
.vramType = NNS_G2D_VRAM_TYPE_2DMAIN,
.resources = { 0x34D8, 0x34D8, 0x34D8, 0x34D8, 0x0, 0x0 },
.bgPriority = 0,
.vramTransfer = FALSE,
},
};
ScrollPrompts *ScrollPrompts_New(enum HeapId heapID)
{
SpriteResourceCapacities capacities = {
.asStruct = {
.charCapacity = 1,
.plttCapacity = 1,
.cellCapacity = 1,
.animCapacity = 1,
.mcellCapacity = 0,
.manimCapacity = 0,
}
};
ScrollPrompts *prompts = Heap_AllocFromHeap(heapID, sizeof(ScrollPrompts));
MI_CpuClear8(prompts, sizeof(ScrollPrompts));
ov5_021D3190(&prompts->unk_00, &capacities, 2, HEAP_ID_FIELDMAP);
NARC *narc = NARC_ctor(NARC_INDEX_GRAPHIC__FLD_COMACT, heapID);
ov5_021D32E8(&prompts->unk_00, narc, scroll_prompts_NCLR, FALSE, 2, NNS_G2D_VRAM_TYPE_2DMAIN, 13528);
ov5_021D3374(&prompts->unk_00, narc, scroll_prompts_cell_NCER, FALSE, 13528);
ov5_021D339C(&prompts->unk_00, narc, scroll_prompts_anim_NANR, FALSE, 13528);
ov5_021D3414(&prompts->unk_00, narc, scroll_prompts_NCGR, FALSE, NNS_G2D_VRAM_TYPE_2DMAIN, 13528);
for (u32 i = 0; i < SCROLL_PROMPT_ARROW_COUNT; i++) {
prompts->arrowSprites[i] = ov5_021D3584(&prompts->unk_00, &sArrowSpriteTemplates[i]);
}
NARC_dtor(narc);
return prompts;
}
void ScrollPrompts_Free(ScrollPrompts *prompts)
{
for (int i = 0; i < SCROLL_PROMPT_ARROW_COUNT; i++) {
if (prompts->arrowSprites[i] != NULL) {
Sprite_DeleteAndFreeResources(prompts->arrowSprites[i]);
}
}
ov5_021D375C(&prompts->unk_00);
Heap_Free(prompts);
}
void ScrollPrompts_UpdateAnim(ScrollPrompts *prompts)
{
for (int i = 0; i < SCROLL_PROMPT_ARROW_COUNT; i++) {
if (prompts->arrowSprites[i] != NULL) {
Sprite_UpdateAnim(prompts->arrowSprites[i]->sprite, FX32_ONE);
}
}
SpriteList_Update(prompts->unk_00.unk_00);
}
void ScrollPrompts_SetPosition(ScrollPrompts *prompts, s16 x, s16 topArrowY, s16 bottomArrowY)
{
ManagedSprite_SetPositionXY(prompts->arrowSprites[SCROLL_PROMPT_TOP_ARROW], x, topArrowY);
ManagedSprite_SetPositionXY(prompts->arrowSprites[SCROLL_PROMPT_BOTTOM_ARROW], x, bottomArrowY);
}
void ScrollPrompts_SetDrawFlag(ScrollPrompts *prompts, u16 arrowIndex, BOOL draw)
{
if (arrowIndex >= SCROLL_PROMPT_ARROW_COUNT) {
return;
}
ManagedSprite_SetDrawFlag(prompts->arrowSprites[arrowIndex], draw);
}

View File

@ -1,111 +0,0 @@
#include "unk_0206A780.h"
#include <nitro.h>
#include <string.h>
#include "struct_defs/struct_0206A844.h"
#include "overlay005/ov5_021D2F14.h"
#include "heap.h"
#include "narc.h"
#include "sprite.h"
#include "sprite_system.h"
static const SpriteTemplate Unk_020EFA04[] = {
{
0x50,
0x10,
0x0,
0x0,
0x0,
0x0,
NNS_G2D_VRAM_TYPE_2DMAIN,
{ 0x34D8, 0x34D8, 0x34D8, 0x34D8, 0x0, 0x0 },
0x0,
0x0,
},
{
0x50,
0xE0,
0x0,
0x1,
0x0,
0x0,
NNS_G2D_VRAM_TYPE_2DMAIN,
{ 0x34D8, 0x34D8, 0x34D8, 0x34D8, 0x0, 0x0 },
0x0,
0x0,
},
};
UnkStruct_0206A844 *sub_0206A780(int heapID)
{
SpriteResourceCapacities v0 = {
1, 1, 1, 1, 0, 0
};
u32 v1;
UnkStruct_0206A844 *v2;
NARC *v3;
v2 = Heap_AllocFromHeap(heapID, sizeof(UnkStruct_0206A844));
MI_CpuClear8(v2, sizeof(UnkStruct_0206A844));
ov5_021D3190(&v2->unk_00, &v0, 2, HEAP_ID_FIELDMAP);
v3 = NARC_ctor(NARC_INDEX_GRAPHIC__FLD_COMACT, heapID);
ov5_021D32E8(&v2->unk_00, v3, 0, 0, 2, NNS_G2D_VRAM_TYPE_2DMAIN, 13528);
ov5_021D3374(&v2->unk_00, v3, 2, 0, 13528);
ov5_021D339C(&v2->unk_00, v3, 3, 0, 13528);
ov5_021D3414(&v2->unk_00, v3, 1, 0, NNS_G2D_VRAM_TYPE_2DMAIN, 13528);
for (v1 = 0; v1 < 2; v1++) {
v2->unk_1C8[v1] = ov5_021D3584(&v2->unk_00, &Unk_020EFA04[v1]);
}
NARC_dtor(v3);
return v2;
}
void sub_0206A844(UnkStruct_0206A844 *param0)
{
int v0;
for (v0 = 0; v0 < 2; v0++) {
if (param0->unk_1C8[v0] != NULL) {
Sprite_DeleteAndFreeResources(param0->unk_1C8[v0]);
}
}
ov5_021D375C(&param0->unk_00);
Heap_Free(param0);
}
void sub_0206A870(UnkStruct_0206A844 *param0)
{
int v0 = 0;
for (v0 = 0; v0 < 2; v0++) {
if (param0->unk_1C8[v0] != NULL) {
Sprite_UpdateAnim(param0->unk_1C8[v0]->sprite, FX32_ONE);
}
}
SpriteList_Update(param0->unk_00.unk_00);
}
void sub_0206A8A0(UnkStruct_0206A844 *param0, s16 param1, s16 param2, s16 param3)
{
ManagedSprite_SetPositionXY(param0->unk_1C8[0], param1, param2);
ManagedSprite_SetPositionXY(param0->unk_1C8[1], param1, param3);
}
void sub_0206A8C4(UnkStruct_0206A844 *param0, u16 param1, BOOL param2)
{
if (param1 >= 2) {
return;
}
ManagedSprite_SetDrawFlag(param0->unk_1C8[param1], param2);
}

View File

@ -2,7 +2,6 @@
#include <string.h>
#include "struct_defs/mail.h"
#include "struct_defs/struct_0206A844.h"
#include "struct_defs/struct_02097728.h"
#include "struct_defs/struct_02098C44.h"
@ -30,6 +29,7 @@
#include "save_player.h"
#include "savedata.h"
#include "screen_fade.h"
#include "scroll_prompts.h"
#include "sound_playback.h"
#include "strbuf.h"
#include "string_list.h"
@ -39,7 +39,6 @@
#include "system.h"
#include "text.h"
#include "unk_0203D1B8.h"
#include "unk_0206A780.h"
#include "unk_02097624.h"
#include "constdata/const_020F1E88.h"
@ -102,7 +101,7 @@ typedef struct {
Window unk_174;
Window unk_184;
Window unk_194;
UnkStruct_0206A844 *unk_1A4;
ScrollPrompts *unk_1A4;
UnkStruct_02097728 *unk_1A8;
Mailbox *mailbox;
Bag *bag;
@ -247,7 +246,7 @@ static void sub_02072390(SysTask *param0, void *param1)
s32 v1 = ListMenu_ProcessInput(v0->unk_160);
if (v0->unk_1A4 != NULL) {
sub_0206A870(v0->unk_1A4);
ScrollPrompts_UpdateAnim(v0->unk_1A4);
}
if (gSystem.pressedKeys & PAD_BUTTON_B) {
@ -667,11 +666,11 @@ static void sub_020729B4(UnkStruct_02072334 *param0)
{ 0x3, 0x1, 0x1, 0x9, 0x2, 0xD, 0x283 }
};
param0->unk_1A4 = sub_0206A780(param0->heapID);
param0->unk_1A4 = ScrollPrompts_New(param0->heapID);
sub_0206A8A0(param0->unk_1A4, 200, 10, 138);
sub_0206A8C4(param0->unk_1A4, 0, 1);
sub_0206A8C4(param0->unk_1A4, 1, 1);
ScrollPrompts_SetPosition(param0->unk_1A4, 200, 10, 138);
ScrollPrompts_SetDrawFlag(param0->unk_1A4, SCROLL_PROMPT_TOP_ARROW, TRUE);
ScrollPrompts_SetDrawFlag(param0->unk_1A4, SCROLL_PROMPT_BOTTOM_ARROW, TRUE);
Window_AddFromTemplate(param0->unk_170, &(param0->unk_174), &v3[0]);
Window_AddFromTemplate(param0->unk_170, &(param0->unk_194), &v3[1]);
Window_FillTilemap(&param0->unk_174, ((15 << 4) | 15));
@ -755,15 +754,15 @@ static void sub_02072C0C(ListMenu *param0, u32 param1, u8 param2)
}
if (v0 == 0) {
sub_0206A8C4(v3->unk_1A4, 0, 0);
ScrollPrompts_SetDrawFlag(v3->unk_1A4, SCROLL_PROMPT_TOP_ARROW, FALSE);
} else {
sub_0206A8C4(v3->unk_1A4, 0, 1);
ScrollPrompts_SetDrawFlag(v3->unk_1A4, SCROLL_PROMPT_TOP_ARROW, TRUE);
}
if (v0 < (v2 - 7)) {
sub_0206A8C4(v3->unk_1A4, 1, 1);
ScrollPrompts_SetDrawFlag(v3->unk_1A4, SCROLL_PROMPT_BOTTOM_ARROW, TRUE);
} else {
sub_0206A8C4(v3->unk_1A4, 1, 0);
ScrollPrompts_SetDrawFlag(v3->unk_1A4, SCROLL_PROMPT_BOTTOM_ARROW, FALSE);
}
}
@ -833,7 +832,7 @@ static void sub_02072DB8(UnkStruct_02072334 *param0)
param0->unk_13E = v1;
if (param0->unk_1A4 != NULL) {
sub_0206A844(param0->unk_1A4);
ScrollPrompts_Free(param0->unk_1A4);
param0->unk_1A4 = NULL;
}