mirror of
https://github.com/ACreTeam/ac-decomp
synced 2026-05-23 06:34:18 -04:00
Add progress counter to README
This commit is contained in:
+3
-1
@@ -14,4 +14,6 @@ dump/*
|
||||
*.dll
|
||||
build.ninja
|
||||
ac-decomp.code-workspace
|
||||
assets/
|
||||
assets/
|
||||
tools/cli.ini
|
||||
tools/cli.py
|
||||
@@ -1,6 +1,8 @@
|
||||
# Animal Crossing Decompilation [![Discord Channel][discord-badge]][discord]
|
||||
# Animal Crossing Decompilation [![Discord Channel][discord-badge]][discord] ![rel progress] ![dol progress]
|
||||
[discord]: https://discord.gg/hKx3FJJgrV
|
||||
[discord-badge]: https://img.shields.io/discord/727908905392275526?color=%237289DA&logo=discord&logoColor=%23FFFFFF
|
||||
[rel progress]: https://img.shields.io/endpoint?label=rel&url=https%3A%2F%2Fprogress.decomp.club%2Fdata%2Fanimalcrossing%2Fus%2Frel%2F%3Fmode%3Dshield%26measure%3Dcode
|
||||
[dol progress]: https://img.shields.io/endpoint?label=dol&url=https%3A%2F%2Fprogress.decomp.club%2Fdata%2Fanimalcrossing%2Fus%2Fdol%2F%3Fmode%3Dshield%26measure%3Dcode
|
||||
|
||||
Decompilation in progress of Animal Crossing (GAFE01)
|
||||
|
||||
|
||||
@@ -0,0 +1,47 @@
|
||||
from argparse import ArgumentParser
|
||||
import os.path
|
||||
import pickle
|
||||
import json
|
||||
from typing import Dict, Tuple
|
||||
|
||||
import common as c
|
||||
|
||||
def load_progress_info(ctx: c.SourceContext, asm_list: str
|
||||
) -> Tuple[Dict[str, int], Dict[str, int]]:
|
||||
assert os.path.exists(ctx.labels), "Error: analysis has not ran!"
|
||||
|
||||
# Get data
|
||||
raw = c.get_cmd_stdout(f"{c.PROGRESS} {ctx.binary} {ctx.labels} {ctx.slices}")
|
||||
dat = json.loads(raw)
|
||||
assert dat.get("version") == 2, "Outdated progress json version, try a clean & rebuild"
|
||||
decomp_sizes = dat["decomp_slices_sizes"]
|
||||
total_sizes = dat["total_sizes"]
|
||||
symbol_sizes = dat["symbol_sizes"]
|
||||
|
||||
# Subtract undecompiled functions in decompiled slices
|
||||
# TODO: this assumes none of .init is decompiled
|
||||
with open(asm_list, 'rb') as f:
|
||||
funcs = pickle.load(f)
|
||||
for func in funcs:
|
||||
decomp_sizes[".text"] -= symbol_sizes[str(func)]
|
||||
|
||||
return decomp_sizes, total_sizes
|
||||
|
||||
def generate_frogress_json(dol_size, dol_total, rel_size, rel_total):
|
||||
return json.dumps({
|
||||
"rel": {
|
||||
"code": rel_size,
|
||||
"code/total": rel_total
|
||||
},
|
||||
"dol": {
|
||||
"code": dol_size,
|
||||
"code/total": dol_total
|
||||
}
|
||||
})
|
||||
|
||||
if __name__=="__main__":
|
||||
decomp_sizes, total_sizes = load_progress_info(c.DOL_CTX, c.DOL_ASM_LIST)
|
||||
rel_decomp_sizes, rel_total_sizes = load_progress_info(c.REL_CTX, c.REL_ASM_LIST)
|
||||
json_str = generate_frogress_json(decomp_sizes[".text"], total_sizes[".text"], rel_decomp_sizes[".text"], rel_total_sizes[".text"])
|
||||
with open("out/progress.json", "w") as f:
|
||||
f.write(json_str)
|
||||
@@ -61,6 +61,78 @@ enum {
|
||||
mNT_TREE_TYPE_NUM
|
||||
};
|
||||
|
||||
enum {
|
||||
mNT_ITEM_TYPE_NONE,
|
||||
mNT_ITEM_TYPE_APPLE,
|
||||
mNT_ITEM_TYPE_ORANGE,
|
||||
mNT_ITEM_TYPE_PEACH,
|
||||
mNT_ITEM_TYPE_PEAR,
|
||||
mNT_ITEM_TYPE_NUTS,
|
||||
mNT_ITEM_TYPE_MATSUTAKE,
|
||||
mNT_ITEM_TYPE_KABU,
|
||||
mNT_ITEM_TYPE_FISH,
|
||||
mNT_ITEM_TYPE_BAG,
|
||||
mNT_ITEM_TYPE_LEAF,
|
||||
mNT_ITEM_TYPE_ROLL,
|
||||
mNT_ITEM_TYPE_BOX,
|
||||
mNT_ITEM_TYPE_PACK,
|
||||
mNT_ITEM_TYPE_PRESENT,
|
||||
mNT_ITEM_TYPE_SEED,
|
||||
mNT_ITEM_TYPE_HANIWA,
|
||||
mNT_ITEM_TYPE_ETC,
|
||||
mNT_ITEM_TYPE_CAGE,
|
||||
mNT_ITEM_TYPE_TOOL,
|
||||
mNT_ITEM_TYPE_FOSSIL,
|
||||
mNT_ITEM_TYPE_TRASH,
|
||||
mNT_ITEM_TYPE_LETTER,
|
||||
mNT_ITEM_TYPE_OTOSI,
|
||||
mNT_ITEM_TYPE_SHELLA,
|
||||
mNT_ITEM_TYPE_SHELLB,
|
||||
mNT_ITEM_TYPE_SHELLC,
|
||||
mNT_ITEM_TYPE_CANDY,
|
||||
mNT_ITEM_TYPE_COCONUT,
|
||||
mNT_ITEM_TYPE_OMIKUJI,
|
||||
mNT_ITEM_TYPE_CLOTH,
|
||||
mNT_ITEM_TYPE_CARPET,
|
||||
mNT_ITEM_TYPE_WALL,
|
||||
mNT_ITEM_TYPE_AXE,
|
||||
mNT_ITEM_TYPE_NET,
|
||||
mNT_ITEM_TYPE_ROD,
|
||||
mNT_ITEM_TYPE_SHOVEL,
|
||||
mNT_ITEM_TYPE_AXE2,
|
||||
mNT_ITEM_TYPE_NET2,
|
||||
mNT_ITEM_TYPE_ROD2,
|
||||
mNT_ITEM_TYPE_SHOVEL2,
|
||||
mNT_ITEM_TYPE_UMBRELLA,
|
||||
mNT_ITEM_TYPE_KAZA,
|
||||
mNT_ITEM_TYPE_UTIWA,
|
||||
mNT_ITEM_TYPE_PAPER,
|
||||
mNT_ITEM_TYPE_FLOWER_SEED,
|
||||
mNT_ITEM_TYPE_HUKUBUKURO,
|
||||
mNT_ITEM_TYPE_TAISOU,
|
||||
mNT_ITEM_TYPE_MD,
|
||||
mNT_ITEM_TYPE_TICKET,
|
||||
mNT_ITEM_TYPE_BONE,
|
||||
mNT_ITEM_TYPE_DIARY,
|
||||
mNT_ITEM_TYPE_FORK_ON,
|
||||
|
||||
mNT_ITEM_TYPE_NUM
|
||||
};
|
||||
|
||||
enum {
|
||||
mNT_TREE_SIZE_FULL,
|
||||
mNT_TREE_SIZE_S2,
|
||||
mNT_TREE_SIZE_S1,
|
||||
mNT_TREE_SIZE_S0,
|
||||
|
||||
mNT_TREE_SIZE_NUM
|
||||
};
|
||||
|
||||
typedef struct offset_table_s {
|
||||
int type;
|
||||
mCoBG_OffsetTable_c table;
|
||||
} mNT_offset_table_c;
|
||||
|
||||
/* TODO: these should be calculated via definitions later */
|
||||
#define NPC_NUM 236
|
||||
#define NPC_ISLANDER_NUM 18
|
||||
@@ -90,6 +162,9 @@ enum {
|
||||
#define NOT_SECRET_MD_NUM 52
|
||||
#define UMBRELLA_NUM 32
|
||||
|
||||
extern s16 move_obj_profile_table[];
|
||||
extern s16 actor_profile_table[];
|
||||
extern s16 props_profile_table[];
|
||||
extern u8 npc_looks_table[];
|
||||
|
||||
extern int mNT_check_unknown(mActor_name_t item_no);
|
||||
|
||||
@@ -1,7 +1,59 @@
|
||||
#include "m_name_table.h"
|
||||
|
||||
#include "m_actor.h"
|
||||
#include "m_npc_personal_id.h"
|
||||
|
||||
s16 move_obj_profile_table[] = {
|
||||
mAc_PROFILE_AIRPLANE,
|
||||
mAc_PROFILE_BALL,
|
||||
mAc_PROFILE_MY_ROOM,
|
||||
mAc_PROFILE_MBG,
|
||||
mAc_PROFILE_BOXMANAGER,
|
||||
mAc_PROFILE_BOXTRICK01,
|
||||
mAc_PROFILE_ARRANGE_ROOM,
|
||||
mAc_PROFILE_ARRANGE_FURNITURE,
|
||||
mAc_PROFILE_EFFECT_CONTROL,
|
||||
mAc_PROFILE_SHOP_DESIGN,
|
||||
mAc_PROFILE_SHOP_MANEKIN,
|
||||
mAc_PROFILE_SHOP_INDOOR,
|
||||
mAc_PROFILE_SHOP_GOODS,
|
||||
mAc_PROFILE_SNOWMAN,
|
||||
mAc_PROFILE_SNOWMAN,
|
||||
mAc_PROFILE_BROKER_DESIGN,
|
||||
mAc_PROFILE_MY_INDOOR,
|
||||
mAc_PROFILE_TRAIN_WINDOW,
|
||||
mAc_PROFILE_UKI,
|
||||
mAc_PROFILE_SHOP_UMBRELLA,
|
||||
mAc_PROFILE_KAMAKURA_INDOOR,
|
||||
mAc_PROFILE_HOUSE_CLOCK
|
||||
};
|
||||
|
||||
s16 actor_profile_table[] = {
|
||||
mAc_PROFILE_SAMPLE
|
||||
};
|
||||
|
||||
s16 props_profile_table[] = {
|
||||
mAc_PROFILE_MAILBOX,
|
||||
mAc_PROFILE_MAILBOX,
|
||||
mAc_PROFILE_MAILBOX,
|
||||
mAc_PROFILE_MAILBOX,
|
||||
mAc_PROFILE_HANIWA,
|
||||
mAc_PROFILE_HANIWA,
|
||||
mAc_PROFILE_HANIWA,
|
||||
mAc_PROFILE_HANIWA,
|
||||
mAc_PROFILE_PSNOWMAN,
|
||||
mAc_PROFILE_PSNOWMAN,
|
||||
mAc_PROFILE_PSNOWMAN,
|
||||
mAc_PROFILE_PSNOWMAN,
|
||||
mAc_PROFILE_PSNOWMAN,
|
||||
mAc_PROFILE_PSNOWMAN,
|
||||
mAc_PROFILE_PSNOWMAN,
|
||||
mAc_PROFILE_PSNOWMAN,
|
||||
mAc_PROFILE_PSNOWMAN,
|
||||
mAc_PROFILE_TRAINDOOR,
|
||||
mAc_PROFILE_NAMEPLATE
|
||||
};
|
||||
|
||||
u8 npc_looks_table[NPC_NUM] = {
|
||||
mNpc_LOOKS_BOY,
|
||||
mNpc_LOOKS_NANIWA_LADY,
|
||||
@@ -242,3 +294,510 @@ u8 npc_looks_table[NPC_NUM] = {
|
||||
mNpc_LOOKS_BOY,
|
||||
mNpc_LOOKS_KO_GIRL
|
||||
};
|
||||
|
||||
static u8 item1_0_tableNo[] = {
|
||||
44, 44, 44, 44,
|
||||
44, 44, 44, 44,
|
||||
44, 44, 44, 44,
|
||||
44, 44, 44, 44,
|
||||
44, 44, 44, 44,
|
||||
44, 44, 44, 44,
|
||||
44, 44, 44, 44,
|
||||
44, 44, 44, 44,
|
||||
44, 44, 44, 44,
|
||||
44, 44, 44, 44,
|
||||
44, 44, 44, 44,
|
||||
44, 44, 44, 44,
|
||||
44, 44, 44, 44,
|
||||
44, 44, 44, 44,
|
||||
44, 44, 44, 44,
|
||||
44, 44, 44, 44,
|
||||
44, 44, 44, 44,
|
||||
44, 44, 44, 44,
|
||||
44, 44, 44, 44,
|
||||
44, 44, 44, 44,
|
||||
44, 44, 44, 44,
|
||||
44, 44, 44, 44,
|
||||
44, 44, 44, 44,
|
||||
44, 44, 44, 44,
|
||||
44, 44, 44, 44,
|
||||
44, 44, 44, 44,
|
||||
44, 44, 44, 44,
|
||||
44, 44, 44, 44,
|
||||
44, 44, 44, 44,
|
||||
44, 44, 44, 44,
|
||||
44, 44, 44, 44,
|
||||
44, 44, 44, 44,
|
||||
44, 44, 44, 44,
|
||||
44, 44, 44, 44,
|
||||
44, 44, 44, 44,
|
||||
44, 44, 44, 44,
|
||||
44, 44, 44, 44,
|
||||
44, 44, 44, 44,
|
||||
44, 44, 44, 44,
|
||||
44, 44, 44, 44,
|
||||
44, 44, 44, 44,
|
||||
44, 44, 44, 44,
|
||||
44, 44, 44, 44,
|
||||
44, 44, 44, 44,
|
||||
44, 44, 44, 44,
|
||||
44, 44, 44, 44,
|
||||
44, 44, 44, 44,
|
||||
44, 44, 44, 44,
|
||||
44, 44, 44, 44,
|
||||
44, 44, 44, 44,
|
||||
44, 44, 44, 44,
|
||||
44, 44, 44, 44,
|
||||
44, 44, 44, 44,
|
||||
44, 44, 44, 44,
|
||||
44, 44, 44, 44,
|
||||
44, 44, 44, 44,
|
||||
44, 44, 44, 44,
|
||||
44, 44, 44, 44,
|
||||
44, 44, 44, 44,
|
||||
44, 44, 44, 44,
|
||||
44, 44, 44, 44,
|
||||
44, 44, 44, 44,
|
||||
44, 44, 44, 44,
|
||||
44, 44, 44, 44
|
||||
};
|
||||
|
||||
static u8 item1_1_tableNo[] = {
|
||||
9, 9, 9, 9
|
||||
};
|
||||
|
||||
static u8 item1_2_tableNo[] = {
|
||||
34, 33, 36, 35,
|
||||
41, 41, 41, 41,
|
||||
41, 41, 41, 41,
|
||||
41, 41, 41, 41,
|
||||
41, 41, 41, 41,
|
||||
41, 41, 41, 41,
|
||||
41, 41, 41, 41,
|
||||
41, 41, 41, 41,
|
||||
41, 41, 41, 41,
|
||||
41, 41, 41, 41,
|
||||
41, 41, 41, 41,
|
||||
19, 19, 19, 19,
|
||||
19, 19, 19, 19,
|
||||
19, 19, 19, 19,
|
||||
19, 38, 37, 40,
|
||||
39, 33, 33, 33,
|
||||
33, 33, 33, 33,
|
||||
19, 19, 19, 19,
|
||||
19, 19, 19, 19,
|
||||
42, 42, 42, 42,
|
||||
42, 42, 42, 42,
|
||||
43, 43, 43, 43,
|
||||
43, 43, 43, 43
|
||||
};
|
||||
|
||||
static u8 item1_3_tableNo[] = {
|
||||
8, 8, 8, 8,
|
||||
8, 8, 8, 8,
|
||||
8, 8, 8, 8,
|
||||
8, 8, 8, 8,
|
||||
8, 8, 8, 8,
|
||||
8, 8, 8, 8,
|
||||
8, 8, 8, 8,
|
||||
8, 8, 8, 8,
|
||||
8, 8, 8, 8,
|
||||
8, 8, 8, 8
|
||||
};
|
||||
|
||||
static u8 item1_4_tableNo[] = {
|
||||
30, 30, 30, 30,
|
||||
30, 30, 30, 30,
|
||||
30, 30, 30, 30,
|
||||
30, 30, 30, 30,
|
||||
30, 30, 30, 30,
|
||||
30, 30, 30, 30,
|
||||
30, 30, 30, 30,
|
||||
30, 30, 30, 30,
|
||||
30, 30, 30, 30,
|
||||
30, 30, 30, 30,
|
||||
30, 30, 30, 30,
|
||||
30, 30, 30, 30,
|
||||
30, 30, 30, 30,
|
||||
30, 30, 30, 30,
|
||||
30, 30, 30, 30,
|
||||
30, 30, 30, 30,
|
||||
30, 30, 30, 30,
|
||||
30, 30, 30, 30,
|
||||
30, 30, 30, 30,
|
||||
30, 30, 30, 30,
|
||||
30, 30, 30, 30,
|
||||
30, 30, 30, 30,
|
||||
30, 30, 30, 30,
|
||||
30, 30, 30, 30,
|
||||
30, 30, 30, 30,
|
||||
30, 30, 30, 30,
|
||||
30, 30, 30, 30,
|
||||
30, 30, 30, 30,
|
||||
30, 30, 30, 30,
|
||||
30, 30, 30, 30,
|
||||
30, 30, 30, 30,
|
||||
30, 30, 30, 30,
|
||||
30, 30, 30, 30,
|
||||
30, 30, 30, 30,
|
||||
30, 30, 30, 30,
|
||||
30, 30, 30, 30,
|
||||
30, 30, 30, 30,
|
||||
30, 30, 30, 30,
|
||||
30, 30, 30, 30,
|
||||
30, 30, 30, 30,
|
||||
30, 30, 30, 30,
|
||||
30, 30, 30, 30,
|
||||
30, 30, 30, 30,
|
||||
30, 30, 30, 30,
|
||||
30, 30, 30, 30,
|
||||
30, 30, 30, 30,
|
||||
30, 30, 30, 30,
|
||||
30, 30, 30, 30,
|
||||
30, 30, 30, 30,
|
||||
30, 30, 30, 30,
|
||||
30, 30, 30, 30,
|
||||
30, 30, 30, 30,
|
||||
30, 30, 30, 30,
|
||||
30, 30, 30, 30,
|
||||
30, 30, 30, 30,
|
||||
30, 30, 30, 30,
|
||||
30, 30, 30, 30,
|
||||
30, 30, 30, 30,
|
||||
30, 30, 30, 30,
|
||||
30, 30, 30, 30,
|
||||
30, 30, 30, 30,
|
||||
30, 30, 30, 30,
|
||||
30, 30, 30, 30,
|
||||
30, 30, 30
|
||||
};
|
||||
|
||||
static u8 item1_5_tableNo[] = {
|
||||
22, 13, 13, 13,
|
||||
13, 13, 13, 13,
|
||||
13, 13, 13, 13,
|
||||
13, 9, 21, 21,
|
||||
21, 20, 23, 29,
|
||||
25, 24, 24, 24,
|
||||
25, 25, 24, 26,
|
||||
14, 11, 19, 14,
|
||||
14, 14, 14, 47,
|
||||
47, 47, 47, 47,
|
||||
47, 47, 47, 47,
|
||||
47, 47, 47, 47,
|
||||
52
|
||||
};
|
||||
|
||||
static u8 item1_6_tableNo[] = {
|
||||
31, 31, 31, 31,
|
||||
31, 31, 31, 31,
|
||||
31, 31, 31, 31,
|
||||
31, 31, 31, 31,
|
||||
31, 31, 31, 31,
|
||||
31, 31, 31, 31,
|
||||
31, 31, 31, 31,
|
||||
31, 31, 31, 31,
|
||||
31, 31, 31, 31,
|
||||
31, 31, 31, 31,
|
||||
31, 31, 31, 31,
|
||||
31, 31, 31, 31,
|
||||
31, 31, 31, 31,
|
||||
31, 31, 31, 31,
|
||||
31, 31, 31, 31,
|
||||
31, 31, 31, 31,
|
||||
31, 31, 31
|
||||
};
|
||||
|
||||
static u8 item1_7_tableNo[] = {
|
||||
32, 32, 32, 32,
|
||||
32, 32, 32, 32,
|
||||
32, 32, 32, 32,
|
||||
32, 32, 32, 32,
|
||||
32, 32, 32, 32,
|
||||
32, 32, 32, 32,
|
||||
32, 32, 32, 32,
|
||||
32, 32, 32, 32,
|
||||
32, 32, 32, 32,
|
||||
32, 32, 32, 32,
|
||||
32, 32, 32, 32,
|
||||
32, 32, 32, 32,
|
||||
32, 32, 32, 32,
|
||||
32, 32, 32, 32,
|
||||
32, 32, 32, 32,
|
||||
32, 32, 32, 32,
|
||||
32, 32, 32
|
||||
};
|
||||
|
||||
static u8 item1_8_tableNo[] = {
|
||||
1, 5, 4, 3,
|
||||
2, 6, 27, 28
|
||||
};
|
||||
|
||||
static u8 item1_9_tableNo[] = {
|
||||
17, 17, 45, 45,
|
||||
45, 45, 45, 45,
|
||||
45, 45, 45
|
||||
};
|
||||
|
||||
static u8 item1_A_tableNo[] = {
|
||||
48, 48, 48, 48,
|
||||
48, 48, 48, 48,
|
||||
48, 48, 48, 48,
|
||||
48, 48, 48, 48,
|
||||
48, 48, 48, 48,
|
||||
48, 48, 48, 48,
|
||||
48, 48, 48, 48,
|
||||
48, 48, 48, 48,
|
||||
48, 48, 48, 48,
|
||||
48, 48, 48, 48,
|
||||
48, 48, 48, 48,
|
||||
48, 48, 48, 48,
|
||||
48, 48, 48, 48,
|
||||
48, 48, 48
|
||||
};
|
||||
|
||||
// ?? Shouldn't these be different from saplings?
|
||||
static u8 item1_B_tableNo[] = {
|
||||
17, 17, 17, 17,
|
||||
17, 17, 17, 17,
|
||||
17, 17, 17, 17,
|
||||
17, 17, 17, 17
|
||||
};
|
||||
|
||||
static u8 item1_C_tableNo[] = {
|
||||
49, 49, 49, 49,
|
||||
49, 49, 49, 49,
|
||||
49, 49, 49, 49,
|
||||
49, 49, 49, 49,
|
||||
49, 49, 49, 49,
|
||||
49, 49, 49, 49,
|
||||
49, 49, 49, 49,
|
||||
49, 49, 49, 49,
|
||||
49, 49, 49, 49,
|
||||
49, 49, 49, 49,
|
||||
49, 49, 49, 49,
|
||||
49, 49, 49, 49,
|
||||
49, 49, 49, 49,
|
||||
49, 49, 49, 49,
|
||||
49, 49, 49, 49,
|
||||
49, 49, 49, 49,
|
||||
49, 49, 49, 49,
|
||||
49, 49, 49, 49,
|
||||
49, 49, 49, 49,
|
||||
49, 49, 49, 49,
|
||||
49, 49, 49, 49,
|
||||
49, 49, 49, 49,
|
||||
49, 49, 49, 49,
|
||||
49, 49, 49, 49
|
||||
};
|
||||
|
||||
static u8 item1_D_tableNo[] = {
|
||||
18, 18, 18, 18,
|
||||
18, 18, 18, 18,
|
||||
18, 18, 18, 18,
|
||||
18, 18, 18, 18,
|
||||
18, 18, 18, 18,
|
||||
18, 18, 18, 18,
|
||||
18, 18, 18, 18,
|
||||
18, 18, 18, 18,
|
||||
18, 18, 18, 18,
|
||||
18, 18, 18, 18,
|
||||
18, 18, 18, 18,
|
||||
18
|
||||
};
|
||||
|
||||
static u8 item1_E_tableNo[] = {
|
||||
46, 46
|
||||
};
|
||||
|
||||
static u8 item1_F_tableNo[] = {
|
||||
7, 7, 7, 7
|
||||
};
|
||||
|
||||
extern int mNT_get_itemTableNo(mActor_name_t item) {
|
||||
static u8* item1_tableNo[ITEM1_CAT_NUM] = {
|
||||
|
||||
};
|
||||
|
||||
switch (ITEM_NAME_GET_TYPE(item)) {
|
||||
case NAME_TYPE_FTR0:
|
||||
case NAME_TYPE_FTR1:
|
||||
{
|
||||
if (item >= FTR_DINO_START && item <= FTR_DINO_END) {
|
||||
return mNT_ITEM_TYPE_BONE;
|
||||
}
|
||||
else if (item >= HANIWA_START && item <= HANIWA_END) {
|
||||
return mNT_ITEM_TYPE_HANIWA;
|
||||
}
|
||||
else if (item >= ITM_DIARY_START && item <= ITM_DIARY15) {
|
||||
return mNT_ITEM_TYPE_DIARY;
|
||||
}
|
||||
|
||||
return mNT_ITEM_TYPE_LEAF;
|
||||
}
|
||||
|
||||
case NAME_TYPE_ITEM1:
|
||||
{
|
||||
return item1_tableNo[ITEM_NAME_GET_CAT(item)][ITEM_NAME_GET_INDEX(item)];
|
||||
}
|
||||
}
|
||||
|
||||
return mNT_ITEM_TYPE_NONE;
|
||||
}
|
||||
|
||||
extern mActor_name_t mNT_FishIdx2FishItemNo(int idx) {
|
||||
if (idx >= 0 && idx < (FISH_NUM + 2)) {
|
||||
return ITM_FISH_START + idx;
|
||||
}
|
||||
|
||||
return EMPTY_NO;
|
||||
}
|
||||
|
||||
extern mActor_name_t bg_item_fg_sub(mActor_name_t item, s16 flag) {
|
||||
// TODO: tree type enum
|
||||
static mActor_name_t cnvfg[mNT_TREE_SIZE_NUM][mNT_TREE_TYPE_NUM] = {
|
||||
{ TREE_STUMP004, TREE_PALM_STUMP004, CEDAR_TREE_STUMP004, GOLD_TREE_STUMP004 },
|
||||
{ TREE_STUMP003, TREE_PALM_STUMP003, CEDAR_TREE_STUMP003, GOLD_TREE_STUMP003 },
|
||||
{ TREE_STUMP002, TREE_PALM_STUMP002, CEDAR_TREE_STUMP002, GOLD_TREE_STUMP002 },
|
||||
{ TREE_STUMP001, TREE_PALM_STUMP001, CEDAR_TREE_STUMP001, GOLD_TREE_STUMP001 }
|
||||
};
|
||||
|
||||
int tree_type = FGTreeType_check(item);
|
||||
mActor_name_t conv = item;
|
||||
|
||||
if (flag == 0) {
|
||||
if (
|
||||
item == TREE ||
|
||||
item == TREE_1000BELLS ||
|
||||
item == TREE_10000BELLS ||
|
||||
item == TREE_30000BELLS ||
|
||||
item == TREE_100BELLS ||
|
||||
item == CEDAR_TREE ||
|
||||
item == GOLD_TREE_SHOVEL ||
|
||||
item == GOLD_TREE ||
|
||||
item == TREE_APPLE_NOFRUIT_0 ||
|
||||
item == TREE_APPLE_NOFRUIT_1 ||
|
||||
item == TREE_APPLE_NOFRUIT_2 ||
|
||||
item == TREE_APPLE_FRUIT ||
|
||||
item == TREE_ORANGE_NOFRUIT_0 ||
|
||||
item == TREE_ORANGE_NOFRUIT_1 ||
|
||||
item == TREE_ORANGE_NOFRUIT_2 ||
|
||||
item == TREE_ORANGE_FRUIT ||
|
||||
item == TREE_PEACH_NOFRUIT_0 ||
|
||||
item == TREE_PEACH_NOFRUIT_1 ||
|
||||
item == TREE_PEACH_NOFRUIT_2 ||
|
||||
item == TREE_PEACH_FRUIT ||
|
||||
item == TREE_PEAR_NOFRUIT_0 ||
|
||||
item == TREE_PEAR_NOFRUIT_1 ||
|
||||
item == TREE_PEAR_NOFRUIT_2 ||
|
||||
item == TREE_PEAR_FRUIT ||
|
||||
item == TREE_CHERRY_NOFRUIT_0 ||
|
||||
item == TREE_CHERRY_NOFRUIT_1 ||
|
||||
item == TREE_CHERRY_NOFRUIT_2 ||
|
||||
item == TREE_CHERRY_FRUIT ||
|
||||
item == TREE_PALM_NOFRUIT_0 ||
|
||||
item == TREE_PALM_NOFRUIT_1 ||
|
||||
item == TREE_PALM_NOFRUIT_2 ||
|
||||
item == TREE_PALM_FRUIT ||
|
||||
item == TREE_BEES ||
|
||||
item == TREE_FTR ||
|
||||
item == TREE_LIGHTS ||
|
||||
item == TREE_PRESENT ||
|
||||
item == TREE_BELLS ||
|
||||
item == CEDAR_TREE_BELLS ||
|
||||
item == CEDAR_TREE_FTR ||
|
||||
item == CEDAR_TREE_BEES ||
|
||||
item == CEDAR_TREE_LIGHTS ||
|
||||
item == GOLD_TREE_BELLS ||
|
||||
item == GOLD_TREE_FTR ||
|
||||
item == GOLD_TREE_BEES
|
||||
) {
|
||||
conv = cnvfg[mNT_TREE_SIZE_FULL][tree_type];
|
||||
}
|
||||
else if (
|
||||
item == TREE_S2 ||
|
||||
item == TREE_APPLE_S2 ||
|
||||
item == TREE_ORANGE_S2 ||
|
||||
item == TREE_PEACH_S2 ||
|
||||
item == TREE_PEAR_S2 ||
|
||||
item == TREE_CHERRY_S2 ||
|
||||
item == TREE_1000BELLS_S2 ||
|
||||
item == TREE_10000BELLS_S2 ||
|
||||
item == TREE_30000BELLS_S2 ||
|
||||
item == TREE_100BELLS_S2 ||
|
||||
item == TREE_PALM_S2 ||
|
||||
item == CEDAR_TREE_S2 ||
|
||||
item == GOLD_TREE_S2
|
||||
) {
|
||||
conv = cnvfg[mNT_TREE_SIZE_S2][tree_type];
|
||||
}
|
||||
else if (
|
||||
item == TREE_S1 ||
|
||||
item == TREE_APPLE_S1 ||
|
||||
item == TREE_ORANGE_S1 ||
|
||||
item == TREE_PEACH_S1 ||
|
||||
item == TREE_PEAR_S1 ||
|
||||
item == TREE_CHERRY_S1 ||
|
||||
item == TREE_1000BELLS_S1 ||
|
||||
item == TREE_10000BELLS_S1 ||
|
||||
item == TREE_30000BELLS_S1 ||
|
||||
item == TREE_100BELLS_S1 ||
|
||||
item == TREE_PALM_S1 ||
|
||||
item == CEDAR_TREE_S1 ||
|
||||
item == GOLD_TREE_S1
|
||||
) {
|
||||
conv = cnvfg[mNT_TREE_SIZE_S1][tree_type];
|
||||
}
|
||||
else if (
|
||||
item == TREE_S0 ||
|
||||
item == TREE_APPLE_S0 ||
|
||||
item == TREE_ORANGE_S0 ||
|
||||
item == TREE_PEACH_S0 ||
|
||||
item == TREE_PEAR_S0 ||
|
||||
item == TREE_CHERRY_S0 ||
|
||||
item == TREE_1000BELLS_S0 ||
|
||||
item == TREE_10000BELLS_S0 ||
|
||||
item == TREE_30000BELLS_S0 ||
|
||||
item == TREE_100BELLS_S0 ||
|
||||
item == TREE_PALM_S0 ||
|
||||
item == CEDAR_TREE_S0 ||
|
||||
item == GOLD_TREE_S0
|
||||
) {
|
||||
conv = cnvfg[mNT_TREE_SIZE_S0][tree_type];
|
||||
}
|
||||
}
|
||||
|
||||
return conv;
|
||||
}
|
||||
|
||||
extern mNT_offset_table_c* obj_hight_table_item0_nogrow(mActor_name_t item) {
|
||||
static mNT_offset_table_c height_table[3] = {
|
||||
|
||||
};
|
||||
|
||||
mNT_offset_table_c* table = &height_table[0];
|
||||
|
||||
if (
|
||||
item == FENCE0 ||
|
||||
item == FENCE1 ||
|
||||
item == MESSAGE_BOARD0 ||
|
||||
item == MESSAGE_BOARD1 ||
|
||||
item == WOOD_FENCE
|
||||
) {
|
||||
table = &height_table[1];
|
||||
}
|
||||
else if (
|
||||
item == MAP_BOARD0 ||
|
||||
item == MAP_BOARD1 ||
|
||||
item == MUSIC_BOARD0 ||
|
||||
item == MUSIC_BOARD1
|
||||
) {
|
||||
table = &height_table[2];
|
||||
}
|
||||
|
||||
return height_table;
|
||||
}
|
||||
|
||||
extern mActor_name_t bg_item_fg_sub_tree_grow(mActor_name_t item, int past_days, int check_plant) {
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,76 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
###
|
||||
# Uploads progress information to https://github.com/decompals/frogress.
|
||||
#
|
||||
# Usage:
|
||||
# python3 tools/upload_progress.py -b https://progress.decomp.club/ -p [project] -v [version] build/[version]/progress.json
|
||||
#
|
||||
# If changes are made, please submit a PR to
|
||||
# https://github.com/encounter/dtk-template
|
||||
###
|
||||
|
||||
import argparse
|
||||
import json
|
||||
import os
|
||||
import requests
|
||||
import subprocess
|
||||
import sys
|
||||
|
||||
|
||||
def get_git_commit_timestamp() -> int:
|
||||
return int(
|
||||
subprocess.check_output(["git", "show", "-s", "--format=%ct"])
|
||||
.decode("ascii")
|
||||
.rstrip()
|
||||
)
|
||||
|
||||
|
||||
def get_git_commit_sha() -> str:
|
||||
return subprocess.check_output(["git", "rev-parse", "HEAD"]).decode("ascii").strip()
|
||||
|
||||
|
||||
def generate_url(args: argparse.Namespace) -> str:
|
||||
url_components = [args.base_url.rstrip("/"), "data"]
|
||||
|
||||
for arg in [args.project, args.version]:
|
||||
if arg != "":
|
||||
url_components.append(arg)
|
||||
|
||||
return str.join("/", url_components) + "/"
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
parser = argparse.ArgumentParser(description="Upload progress information.")
|
||||
parser.add_argument("-b", "--base_url", help="API base URL", required=True)
|
||||
parser.add_argument("-a", "--api_key", help="API key (env var PROGRESS_API_KEY)")
|
||||
parser.add_argument("-p", "--project", help="Project slug", required=True)
|
||||
parser.add_argument("-v", "--version", help="Version slug", required=True)
|
||||
parser.add_argument("input", help="Progress JSON input")
|
||||
|
||||
args = parser.parse_args()
|
||||
api_key = args.api_key or os.environ.get("PROGRESS_API_KEY")
|
||||
if not api_key:
|
||||
raise "API key required"
|
||||
url = generate_url(args)
|
||||
|
||||
entries = []
|
||||
with open(args.input, "r") as f:
|
||||
data = json.load(f)
|
||||
entries.append(
|
||||
{
|
||||
"timestamp": get_git_commit_timestamp(),
|
||||
"git_hash": get_git_commit_sha(),
|
||||
"categories": data,
|
||||
}
|
||||
)
|
||||
|
||||
print("Publishing entry to", url)
|
||||
json.dump(entries[0], sys.stdout, indent=4)
|
||||
print()
|
||||
r = requests.post(url, json={
|
||||
"api_key": api_key,
|
||||
"entries": entries,
|
||||
})
|
||||
r.raise_for_status()
|
||||
print("Done!")
|
||||
Reference in New Issue
Block a user