nutdata.c

This commit is contained in:
PikalaxALT
2020-06-19 10:06:32 -04:00
parent cc273a871d
commit d57baf0c22
12 changed files with 162 additions and 184 deletions

View File

@@ -400,7 +400,7 @@ SECTIONS {
unk_020842D0.o (.text)
unk_020842DC.o (.text)
unk_020851B8.o (.text)
unk_02085258.o (.text)
nutdata.o (.text)
unk_02085338.o (.text)
unk_020854E0.o (.text)
unk_020859C0.o (.text)

View File

@@ -790,7 +790,7 @@ FUN_02040D04: ; 0x02040D04
lsl r0, r5, #0x10
lsr r0, r0, #0x10
mov r1, #0x20
bl FUN_020852E8
bl GetNutName
add r5, r0, #0x0
cmp r4, #0x2
bhs _02040D5A

View File

@@ -78,7 +78,7 @@ FUN_02025128: ; 0x02025128
push {r3-r7, lr}
sub sp, #0x8
add r7, r0, #0x0
bl FUN_02085258
bl OpenNutsDataNarc
str r0, [sp, #0x0]
add r0, r7, #0x0
mov r1, #0xc0
@@ -90,18 +90,18 @@ _02025142:
ldr r0, [sp, #0x0]
add r1, r6, #0x0
add r2, r7, #0x0
bl FUN_02085264
bl ReadNutDataFromNarc
add r4, r0, #0x0
mov r1, #0x3
bl FUN_02085290
bl GetNutAttr
strb r0, [r5, #0x0]
add r0, r4, #0x0
mov r1, #0x4
bl FUN_02085290
bl GetNutAttr
strb r0, [r5, #0x1]
add r0, r4, #0x0
mov r1, #0x2
bl FUN_02085290
bl GetNutAttr
strb r0, [r5, #0x2]
add r0, r4, #0x0
bl FreeToHeap
@@ -110,7 +110,7 @@ _02025142:
cmp r6, #0x40
blt _02025142
ldr r0, [sp, #0x0]
bl FUN_0208526C
bl CloseNutsDataNarc
ldr r0, [sp, #0x4]
add sp, #0x8
pop {r3-r7, pc}

View File

@@ -1535,7 +1535,7 @@ FUN_02061750: ; 0x02061750
sub r0, #0x95
lsl r0, r0, #0x10
lsr r0, r0, #0x10
bl FUN_020852E8
bl GetNutName
add r4, r0, #0x0
mov r1, #0x1
str r1, [sp, #0x0]

View File

@@ -1,146 +0,0 @@
.include "asm/macros.inc"
.include "global.inc"
.text
thumb_func_start FUN_02085258
FUN_02085258: ; 0x02085258
ldr r3, _02085260 ; =NARC_ctor
add r1, r0, #0x0
mov r0, #0x44
bx r3
.balign 4
_02085260: .word NARC_ctor
thumb_func_start FUN_02085264
FUN_02085264: ; 0x02085264
ldr r3, _02085268 ; =NARC_AllocAndReadWholeMember
bx r3
.balign 4
_02085268: .word NARC_AllocAndReadWholeMember
thumb_func_start FUN_0208526C
FUN_0208526C: ; 0x0208526C
ldr r3, _02085270 ; =NARC_dtor
bx r3
.balign 4
_02085270: .word NARC_dtor
thumb_func_start FUN_02085274
FUN_02085274: ; 0x02085274
add r3, r0, #0x0
add r2, r1, #0x0
add r1, r3, #0x0
ldr r3, _02085280 ; =AllocAndReadWholeNarcMemberByIdPair
mov r0, #0x44
bx r3
.balign 4
_02085280: .word AllocAndReadWholeNarcMemberByIdPair
thumb_func_start FUN_02085284
FUN_02085284: ; 0x02085284
ldr r3, _0208528C ; =FUN_02085274
sub r0, #0x95
bx r3
nop
_0208528C: .word FUN_02085274
thumb_func_start FUN_02085290
FUN_02085290: ; 0x02085290
cmp r1, #0xa
bhi _020852E2
add r1, r1, r1
add r1, pc
ldrh r1, [r1, #0x6]
lsl r1, r1, #0x10
asr r1, r1, #0x10
add pc, r1
_020852A0: ; jump table (using 16-bit offset)
.short _020852B6 - _020852A0 - 2; case 0
.short _020852BA - _020852A0 - 2; case 1
.short _020852BE - _020852A0 - 2; case 2
.short _020852C2 - _020852A0 - 2; case 3
.short _020852C6 - _020852A0 - 2; case 4
.short _020852CA - _020852A0 - 2; case 5
.short _020852CE - _020852A0 - 2; case 6
.short _020852D2 - _020852A0 - 2; case 7
.short _020852D6 - _020852A0 - 2; case 8
.short _020852DA - _020852A0 - 2; case 9
.short _020852DE - _020852A0 - 2; case 10
_020852B6:
ldrh r0, [r0, #0x0]
bx lr
_020852BA:
ldrb r0, [r0, #0x2]
bx lr
_020852BE:
ldrb r0, [r0, #0x3]
bx lr
_020852C2:
ldrb r0, [r0, #0x4]
bx lr
_020852C6:
ldrb r0, [r0, #0x5]
bx lr
_020852CA:
ldrb r0, [r0, #0x6]
bx lr
_020852CE:
ldrb r0, [r0, #0x7]
bx lr
_020852D2:
ldrb r0, [r0, #0x8]
bx lr
_020852D6:
ldrb r0, [r0, #0x9]
bx lr
_020852DA:
ldrb r0, [r0, #0xa]
bx lr
_020852DE:
ldrb r0, [r0, #0xb]
bx lr
_020852E2:
mov r0, #0x0
bx lr
.balign 4
thumb_func_start FUN_020852E8
FUN_020852E8: ; 0x020852E8
push {r3-r5, lr}
ldr r2, _0208530C ; =0x00000175
add r4, r0, #0x0
add r3, r1, #0x0
mov r0, #0x1
mov r1, #0x1a
bl NewMsgDataFromNarc
add r5, r0, #0x0
add r1, r4, #0x0
bl FUN_0200A914
add r4, r0, #0x0
add r0, r5, #0x0
bl DestroyMsgData
add r0, r4, #0x0
pop {r3-r5, pc}
.balign 4
_0208530C: .word 0x00000175
thumb_func_start FUN_02085310
FUN_02085310: ; 0x02085310
push {r3-r5, lr}
mov r2, #0x5d
add r4, r0, #0x0
add r3, r1, #0x0
mov r0, #0x1
mov r1, #0x1a
lsl r2, r2, #0x2
bl NewMsgDataFromNarc
add r5, r0, #0x0
add r1, r4, #0x0
bl FUN_0200A914
add r4, r0, #0x0
add r0, r5, #0x0
bl DestroyMsgData
add r0, r4, #0x0
pop {r3-r5, pc}
.balign 4

View File

@@ -5282,14 +5282,14 @@
.extern FUN_020851F8
.extern FUN_02085224
.extern FUN_0208524C
.extern FUN_02085258
.extern FUN_02085264
.extern FUN_0208526C
.extern FUN_02085274
.extern FUN_02085284
.extern FUN_02085290
.extern FUN_020852E8
.extern FUN_02085310
.extern OpenNutsDataNarc
.extern ReadNutDataFromNarc
.extern CloseNutsDataNarc
.extern LoadNutDataSingle
.extern LoadNutDataSingleByItemId
.extern GetNutAttr
.extern GetNutName
.extern GetNutDesc
.extern FUN_02085338
.extern FUN_020853A8
.extern FUN_020853B0

View File

@@ -56,7 +56,7 @@ MOD68_021D74E0: ; 0x021D74E0
ldr r0, [r5, r0]
mov r1, #0x24
ldrb r0, [r0, #8]
bl FUN_02085274
bl LoadNutDataSingle
mov r1, #0x7f
lsl r1, r1, #2
str r0, [r5, r1]
@@ -720,7 +720,7 @@ MOD68_021D7A18: ; 0x021D7A18
ldr r0, [r5, r0]
mov r1, #0x24
ldrb r0, [r0, #8]
bl FUN_020852E8
bl GetNutName
add r5, r0, #0
mov r1, #0
str r1, [sp]
@@ -758,7 +758,7 @@ MOD68_021D7AE4: ; 0x021D7AE4
ldr r0, [r4, r0]
mov r1, #0x24
ldrb r0, [r0, #8]
bl FUN_02085310
bl GetNutDesc
mov r1, #0
add r4, r0, #0
str r1, [sp]
@@ -831,7 +831,7 @@ MOD68_021D7B80: ; 0x021D7B80
lsl r0, r0, #2
ldr r0, [r4, r0]
mov r1, #1
bl FUN_02085290
bl GetNutAttr
add r1, r0, #0
beq _021D7BA4
sub r1, r1, #1
@@ -912,7 +912,7 @@ MOD68_021D7C28: ; 0x021D7C28
lsl r0, r0, #2
ldr r0, [r5, r0]
mov r1, #0
bl FUN_02085290
bl GetNutAttr
mov r1, #0xfa
lsl r1, r1, #2
mul r1, r0
@@ -1381,7 +1381,7 @@ MOD68_021D7F98: ; 0x021D7F98
ldr r0, [r4, r0]
mov r1, #0x24
ldrb r0, [r0, #8]
bl FUN_02085274
bl LoadNutDataSingle
mov r1, #0x7f
lsl r1, r1, #2
str r0, [r4, r1]
@@ -2159,7 +2159,7 @@ MOD68_021D85F4: ; 0x021D85F4
lsl r0, r0, #2
ldr r0, [r5, r0]
mov r1, #5
bl FUN_02085290
bl GetNutAttr
add r2, r0, #0
mov r1, #0x65
lsl r1, r1, #2
@@ -2172,7 +2172,7 @@ MOD68_021D85F4: ; 0x021D85F4
lsl r0, r0, #2
ldr r0, [r5, r0]
mov r1, #6
bl FUN_02085290
bl GetNutAttr
add r2, r0, #0
ldr r1, _021D8860 ; =0x0000019A
lsl r2, r2, #0x18
@@ -2184,7 +2184,7 @@ MOD68_021D85F4: ; 0x021D85F4
lsl r0, r0, #2
ldr r0, [r5, r0]
mov r1, #7
bl FUN_02085290
bl GetNutAttr
add r2, r0, #0
ldr r1, _021D8868 ; =0x000001A6
lsl r2, r2, #0x18
@@ -2202,7 +2202,7 @@ MOD68_021D85F4: ; 0x021D85F4
lsl r0, r0, #2
ldr r0, [r5, r0]
mov r1, #9
bl FUN_02085290
bl GetNutAttr
add r2, r0, #0
mov r1, #0x6b
lsl r1, r1, #2
@@ -2215,7 +2215,7 @@ MOD68_021D85F4: ; 0x021D85F4
lsl r0, r0, #2
ldr r0, [r5, r0]
mov r1, #5
bl FUN_02085290
bl GetNutAttr
add r2, r0, #0
ldr r1, _021D8878 ; =0x000001B2
lsl r2, r2, #0x18
@@ -2232,7 +2232,7 @@ MOD68_021D85F4: ; 0x021D85F4
lsl r0, r0, #2
ldr r0, [r5, r0]
mov r1, #8
bl FUN_02085290
bl GetNutAttr
add r2, r0, #0
mov r1, #0x6e
lsl r1, r1, #2
@@ -2245,7 +2245,7 @@ MOD68_021D85F4: ; 0x021D85F4
lsl r0, r0, #2
ldr r0, [r5, r0]
mov r1, #9
bl FUN_02085290
bl GetNutAttr
add r2, r0, #0
mov r1, #0x71
lsl r1, r1, #2
@@ -2263,7 +2263,7 @@ MOD68_021D85F4: ; 0x021D85F4
lsl r0, r0, #2
ldr r0, [r5, r0]
mov r1, #7
bl FUN_02085290
bl GetNutAttr
add r2, r0, #0
ldr r1, _021D8898 ; =0x000001D6
lsl r2, r2, #0x18
@@ -2275,7 +2275,7 @@ MOD68_021D85F4: ; 0x021D85F4
lsl r0, r0, #2
ldr r0, [r5, r0]
mov r1, #8
bl FUN_02085290
bl GetNutAttr
add r2, r0, #0
mov r1, #0x1d
lsl r1, r1, #4
@@ -2294,7 +2294,7 @@ MOD68_021D85F4: ; 0x021D85F4
lsl r0, r0, #2
ldr r0, [r5, r0]
mov r1, #6
bl FUN_02085290
bl GetNutAttr
add r2, r0, #0
ldr r1, _021D88A8 ; =0x000001E2
lsl r2, r2, #0x18
@@ -2306,7 +2306,7 @@ MOD68_021D85F4: ; 0x021D85F4
lsl r0, r0, #2
ldr r0, [r5, r0]
mov r1, #7
bl FUN_02085290
bl GetNutAttr
add r2, r0, #0
ldr r1, _021D88B0 ; =0x000001EE
lsl r2, r2, #0x18
@@ -2318,7 +2318,7 @@ MOD68_021D85F4: ; 0x021D85F4
lsl r0, r0, #2
ldr r0, [r5, r0]
mov r1, #8
bl FUN_02085290
bl GetNutAttr
add r2, r0, #0
mov r1, #0x7a
lsl r1, r1, #2

View File

@@ -9161,7 +9161,7 @@ _021DBA56:
lsl r4, r0, #2
ldr r0, [sp, #0x24]
ldr r0, [r0, r4]
bl FUN_02085284
bl LoadNutDataSingleByItemId
mov r3, #0
add r7, r0, #0
add r2, r3, #0
@@ -9196,7 +9196,7 @@ _021DBAA0:
_021DBAA4:
add r0, r7, #0
add r1, r5, #5
bl FUN_02085290
bl GetNutAttr
ldr r1, [r4]
add r5, r5, #1
add r0, r1, r0
@@ -9205,7 +9205,7 @@ _021DBAA4:
blt _021DBAA4
add r0, r7, #0
mov r1, #0xa
bl FUN_02085290
bl GetNutAttr
ldr r1, [sp, #0x20]
add r0, r1, r0
str r0, [sp, #0x20]

78
arm9/src/nutdata.c Normal file
View File

@@ -0,0 +1,78 @@
#include "global.h"
#include "filesystem.h"
#include "itemtool.h"
#include "msg_data.h"
#pragma thumb on
NARC * OpenNutsDataNarc(u32 heap_id)
{
return NARC_ctor(NARC_ITEMTOOL_ITEMDATA_NUTS_DATA, heap_id);
}
struct NutData * ReadNutDataFromNarc(NARC * narc, u32 berry_idx, u32 heap_id)
{
return NARC_AllocAndReadWholeMember(narc, berry_idx, heap_id);
}
void CloseNutsDataNarc(NARC * narc)
{
NARC_dtor(narc);
}
struct NutData * LoadNutDataSingle(u32 berry_idx, u32 heap_id)
{
return AllocAndReadWholeNarcMemberByIdPair(NARC_ITEMTOOL_ITEMDATA_NUTS_DATA, berry_idx, heap_id);
}
struct NutData * LoadNutDataSingleByItemId(u32 item_id, u32 heap_id)
{
return LoadNutDataSingle(item_id - FIRST_BERRY_IDX, heap_id);
}
u32 GetNutAttr(struct NutData * nut, u32 attr)
{
switch (attr)
{
case 0:
return nut->unk0;
case 1:
return nut->unk2;
case 2:
return nut->unk3;
case 3:
return nut->unk4;
case 4:
return nut->unk5;
case 5:
return nut->unk6;
case 6:
return nut->unk7;
case 7:
return nut->unk8;
case 8:
return nut->unk9;
case 9:
return nut->unkA;
case 10:
return nut->unkB;
default:
return 0;
}
}
u16 * GetNutName(u32 berry_idx, u32 heap_id)
{
struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, 373, heap_id);
u16 * ret = FUN_0200A914(msgData, berry_idx);
DestroyMsgData(msgData);
return ret;
}
u16 * GetNutDesc(u32 berry_idx, u32 heap_id)
{
struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, 372, heap_id);
u16 * ret = FUN_0200A914(msgData, berry_idx);
DestroyMsgData(msgData);
return ret;
}

View File

@@ -128,7 +128,9 @@
#define ITEM_AIR_MAIL 146
#define ITEM_MOSAIC_MAIL 147
#define ITEM_BRICK_MAIL 148
#define ITEM_CHERI_BERRY 149
#define FIRST_BERRY_IDX ITEM_CHERI_BERRY
#define ITEM_CHESTO_BERRY 150
#define ITEM_PECHA_BERRY 151
#define ITEM_RAWST_BERRY 152

24
include/itemtool.h Normal file
View File

@@ -0,0 +1,24 @@
#ifndef POKEDIAMOND_ITEMTOOL_H
#define POKEDIAMOND_ITEMTOOL_H
#include "global.h"
#include "constants/items.h"
// Berries (nutdata)
struct NutData
{
u16 unk0;
u8 unk2;
u8 unk3;
u8 unk4;
u8 unk5;
u8 unk6;
u8 unk7;
u8 unk8;
u8 unk9;
u8 unkA;
u8 unkB;
};
#endif //POKEDIAMOND_ITEMTOOL_H

20
include/msg_data.h Normal file
View File

@@ -0,0 +1,20 @@
#ifndef POKEDIAMOND_MSG_DATA_H
#define POKEDIAMOND_MSG_DATA_H
struct MsgData
{
u16 unk0;
u16 unk2;
u16 unk4;
u16 unk6;
union {
u16 * raw;
NARC * narc;
} data;
};
struct MsgData * NewMsgDataFromNarc(u32 type, u32 narcId, u32 msgId, u32 heapno);
u16 * FUN_0200A914(struct MsgData *, u32);
void DestroyMsgData(struct MsgData *);
#endif //POKEDIAMOND_MSG_DATA_H