mirror of
https://github.com/zeldaret/mm.git
synced 2024-12-12 23:36:08 +00:00
efc9df3f56
* Rename Player_UpdateBottleHeld * Match func_808497A0 * func_80852290 NON_MATCHING * Match func_8083B3B4 * Params cleanup * Match func_8083FBC4 * sfxId cleanups and others * Fix declaration of functions from D_8085D990 * Change D_8085BE84 to be a 2D array * ARRAY_COUNT_2D * Match func_8085ADA0 * func_808426F0 nonmatching * Match func_80852290 * Match func_808426F0 Co-authored-by: engineer124 <engineer124engineer124@gmail.com> * Add notes to Player_SetDoAction * Name putAwayCountdown * rebase * Match func_80856918 * format * func_8084933C nonmatching small amount of boomerang documentation * Progress on moving data near where it is used * finish moving data * format * cleanup up remaining data * more match * Some minor cleanups * PlayerCsMode enum * func_80851F18 nonmatching * Fix unk_B10 * Purge ExchangeItemID enum * Rename `targetActor` to `talkActor` * Name `targetedActor` * PLAYER_LIMB_BUF_SIZE Co-authored-by: petrie911 <69443847+petrie911@users.noreply.github.com> * Change SkelAnime Player functions to take a void pointer for the corresponding buffers * Use PlayerAnimationFrame on Player_DrawImpl * Match func_8082F1AC * Match func_8083D23C * cleanup * Match and clean up func_808373F8 * Match and document func_8083A98C * PLAYER_PARAMS macro and PlayerInitMode enum * Preliminary names for InitMode functions * Match func_8083C8E8 * remove redundant externs * Match func_8084933C * cleanup func_8084933C * Access D_8085BE84 directly instead of using a macro * Match func_8084AC84 * Fix boomearng typo * OK boomerang * cleanup func_8083D168 * untargetedRotY * this->unk_14E = ABS_ALT(var_v1); * GIFIELD macros * sort of a match * Match func_8084C16C Co-authored-by: petrie911 <69443847+petrie911@users.noreply.github.com> * Use the same trick to match func_808573A4 * Add note on Deku spinning * Match func_8084D18C * Match func_80850D68 * Improve func_80832660 * Match func_80854EFC Co-authored-by: petrie911 <69443847+petrie911@users.noreply.github.com> * Rename unk_B2A to getItemDrawId * Some cleanup * fix merge issues * format * minor anim docs * Match func_808553F4 * Cleanup func_808553F4 * func_8083D860 nonmatching * Match func_8083D860 * Defake func_80859BA8 * () * Add notes to PlayerAnimGroup enum * underwaterTimer Co-authored-by: engineer124 <engineer124engineer124@gmail.com> * some stateFlags cleaning * more stateFlags cleaning * some notes and minor cleanups * more general cleanups * Slightly less fake func_80832CAC * Document some melee weapon damage stuff * Mark lunge storage * Note PCS patch * match * add notes to bss * yeet extra indentation * add reloc as nonmatching to spec * floorSfxOffset * Player_GetFloorSfx * Player_GetFloorSfxByAge * Comments for AnimSfx dunctions * Name some AnimSfx functions * Name AnimSfx stuff * Some PlayerAgeProperties notes * use animflag defines * Player_SpawnExplosive * fix enum and some other minor fixes * Bit more misc. cleanup * Use OoT's version of func_808333CC * Note on quickspin buffer * Final nonmatching, func_80851F18 Co-authored-by: Synray <31429825+Synray@users.noreply.github.com> * RIP player.c * Name Player_StopHorizontalMovement * misc fixes * Actor_DeactivateLens * fixes * typos and tweaks * minor stuff * add names as comments on the animgoup array * Correct some function names and data type * add anim commets to ageproperties * some notes * De-fake func_80840F90 * Defake & clean up func_8085ADA0 * Improve func_80859BA8 * Enums in func_80852B28 * Name some secret-related things * 3 small things * stuff * Player_TalkWithPlayer * SurfaceType_GetFloorType * SurfaceType_GetWallFlags * and more bgcheck stuff * more bss naming * sPlayerControlInput * clean up func_80836F10 a bit * name the parameters of func_80835BF8 * door stuff * remove NON_MATCHING * remove D_8085D2B0 padding * Name some Player_Cutscene_ functions * various cleanups * format * remainingHopsCounter * some cleanups on the struct * Actor_RequestRumble * this->exchangeItemId = PLAYER_AP_NONE; * fix merge stuff * format * PlayerUnkAA5 * Name two cylinder-related functions * BSS * Add MagicConsume's enum, treat lensActive as bool * Update func_808332A0 based on better info * fix merge * fix merge issues * remove redundant comments * Name Player_AddQuake * ANIM_FLAG_UPDATE*_*Y * Format * AT_TYPE_ENEMY * fix merge issues * format * fix uintptr_ts * Rename * Name leftHandMf * fix merge issues * format * exchangeItemId <= PLAYER_IA_MINUS1 * getItemDrawIdPlusOne * currentActorCsIndex * <= PLAYER_IA_MINUS1 * fix merge issues * format * namefixer and bss * fix build * bombs parameters cleanup * bss * Fix building * fix building * Fix building * Fix building and cleanups * Pre-PR cleanup * really... * format * review * stateFlag Mistakes * 268 * 0.1f * z64door.h * fix cutscene stuff * bss * Update include/z64player.h Co-authored-by: EllipticEllipsis <elliptic.ellipsis@gmail.com> * Update include/z64player.h Co-authored-by: EllipticEllipsis <elliptic.ellipsis@gmail.com> * reiew * PR Review * collision * review * format and a few stuff i missed * EnBomExplosiveType * weekeventregconvert and eventinfconvert * more review * review * bss * review * re format sGetItemTable * Entangle PlayerMask and PlayerItemAction * a few extra cases i missed * bss * review * EnArrow stuff * ARROW_MAGIC_DEKU_BUBBLE * minor format * merge * fix bss * review * !ARROW_IS_ARROW * review * bool cleanup * fix merge * review * Player_StopCutscene * Player_RequestQuake * quakeIndex * Player_RequestQuakeAndRumble * knobDoor and slidingDoor * bss * fix * review * dog and float --------- Co-authored-by: Elliptic Ellipsis <elliptic.ellipsis@gmail.com> Co-authored-by: engineer124 <engineer124engineer124@gmail.com> Co-authored-by: petrie911 <pmontag@PHYS-S129.iowa.uiowa.edu> Co-authored-by: petrie911 <69443847+petrie911@users.noreply.github.com> Co-authored-by: Synray <31429825+Synray@users.noreply.github.com>
1172 lines
33 KiB
Python
Executable File
1172 lines
33 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
import argparse
|
|
from cgitb import text
|
|
import dataclasses
|
|
import os
|
|
import struct
|
|
import sys
|
|
import typing
|
|
|
|
GETITEMENTRY_FORMAT = ">BBbBH"
|
|
GETITEMENTRY_LENGTH = struct.calcsize(GETITEMENTRY_FORMAT)
|
|
|
|
# MM US: 0x2E964
|
|
|
|
itemId_names = {
|
|
0x00: "ITEM_OCARINA",
|
|
0x01: "ITEM_BOW",
|
|
0x02: "ITEM_ARROW_FIRE",
|
|
0x03: "ITEM_ARROW_ICE",
|
|
0x04: "ITEM_ARROW_LIGHT",
|
|
0x05: "ITEM_OCARINA_FAIRY",
|
|
0x06: "ITEM_BOMB",
|
|
0x07: "ITEM_BOMBCHU",
|
|
0x08: "ITEM_STICK",
|
|
0x09: "ITEM_NUT",
|
|
0x0A: "ITEM_MAGIC_BEANS",
|
|
0x0B: "ITEM_SLINGSHOT",
|
|
0x0C: "ITEM_POWDER_KEG",
|
|
0x0D: "ITEM_PICTO_BOX",
|
|
0x0E: "ITEM_LENS",
|
|
0x0F: "ITEM_HOOKSHOT",
|
|
0x10: "ITEM_SWORD_GREAT_FAIRY",
|
|
0x11: "ITEM_LONGSHOT",
|
|
0x12: "ITEM_BOTTLE",
|
|
0x13: "ITEM_POTION_RED",
|
|
0x14: "ITEM_POTION_GREEN",
|
|
0x15: "ITEM_POTION_BLUE",
|
|
0x16: "ITEM_FAIRY",
|
|
0x17: "ITEM_DEKU_PRINCESS",
|
|
0x18: "ITEM_MILK_BOTTLE",
|
|
0x19: "ITEM_MILK_HALF",
|
|
0x1A: "ITEM_FISH",
|
|
0x1B: "ITEM_BUG",
|
|
0x1C: "ITEM_BLUE_FIRE",
|
|
0x1D: "ITEM_POE",
|
|
0x1E: "ITEM_BIG_POE",
|
|
0x1F: "ITEM_SPRING_WATER",
|
|
0x20: "ITEM_HOT_SPRING_WATER",
|
|
0x21: "ITEM_ZORA_EGG",
|
|
0x22: "ITEM_GOLD_DUST",
|
|
0x23: "ITEM_MUSHROOM",
|
|
0x24: "ITEM_SEAHORSE",
|
|
0x25: "ITEM_CHATEAU",
|
|
0x26: "ITEM_HYLIAN_LOACH",
|
|
0x27: "ITEM_OBABA_DRINK",
|
|
0x28: "ITEM_MOON_TEAR",
|
|
0x29: "ITEM_DEED_LAND",
|
|
0x2A: "ITEM_DEED_SWAMP",
|
|
0x2B: "ITEM_DEED_MOUNTAIN",
|
|
0x2C: "ITEM_DEED_OCEAN",
|
|
0x2D: "ITEM_ROOM_KEY",
|
|
0x2E: "ITEM_LETTER_MAMA",
|
|
0x2F: "ITEM_LETTER_TO_KAFEI",
|
|
0x30: "ITEM_PENDANT_OF_MEMORIES",
|
|
0x31: "ITEM_TINGLE_MAP",
|
|
0x32: "ITEM_MASK_DEKU",
|
|
0x33: "ITEM_MASK_GORON",
|
|
0x34: "ITEM_MASK_ZORA",
|
|
0x35: "ITEM_MASK_FIERCE_DEITY",
|
|
0x36: "ITEM_MASK_TRUTH",
|
|
0x37: "ITEM_MASK_KAFEIS_MASK",
|
|
0x38: "ITEM_MASK_ALL_NIGHT",
|
|
0x39: "ITEM_MASK_BUNNY",
|
|
0x3A: "ITEM_MASK_KEATON",
|
|
0x3B: "ITEM_MASK_GARO",
|
|
0x3C: "ITEM_MASK_ROMANI",
|
|
0x3D: "ITEM_MASK_CIRCUS_LEADER",
|
|
0x3E: "ITEM_MASK_POSTMAN",
|
|
0x3F: "ITEM_MASK_COUPLE",
|
|
0x40: "ITEM_MASK_GREAT_FAIRY",
|
|
0x41: "ITEM_MASK_GIBDO",
|
|
0x42: "ITEM_MASK_DON_GERO",
|
|
0x43: "ITEM_MASK_KAMARO",
|
|
0x44: "ITEM_MASK_CAPTAIN",
|
|
0x45: "ITEM_MASK_STONE",
|
|
0x46: "ITEM_MASK_BREMEN",
|
|
0x47: "ITEM_MASK_BLAST",
|
|
0x48: "ITEM_MASK_SCENTS",
|
|
0x49: "ITEM_MASK_GIANT",
|
|
0x4A: "ITEM_BOW_ARROW_FIRE",
|
|
0x4B: "ITEM_BOW_ARROW_ICE",
|
|
0x4C: "ITEM_BOW_ARROW_LIGHT",
|
|
0x4D: "ITEM_SWORD_KOKIRI",
|
|
0x4E: "ITEM_SWORD_RAZOR",
|
|
0x4F: "ITEM_SWORD_GILDED",
|
|
0x50: "ITEM_SWORD_DEITY",
|
|
0x51: "ITEM_SHIELD_HERO",
|
|
0x52: "ITEM_SHIELD_MIRROR",
|
|
0x53: "ITEM_QUIVER_30",
|
|
0x54: "ITEM_QUIVER_40",
|
|
0x55: "ITEM_QUIVER_50",
|
|
0x56: "ITEM_BOMB_BAG_20",
|
|
0x57: "ITEM_BOMB_BAG_30",
|
|
0x58: "ITEM_BOMB_BAG_40",
|
|
0x59: "ITEM_WALLET_DEFAULT",
|
|
0x5A: "ITEM_WALLET_ADULT",
|
|
0x5B: "ITEM_WALLET_GIANT",
|
|
0x5C: "ITEM_FISHING_POLE",
|
|
0x5D: "ITEM_REMAINS_ODOLWA",
|
|
0x5E: "ITEM_REMAINS_GOHT",
|
|
0x5F: "ITEM_REMAINS_GYORG",
|
|
0x60: "ITEM_REMAINS_TWINMOLD",
|
|
0x61: "ITEM_SONG_SONATA",
|
|
0x62: "ITEM_SONG_LULLABY",
|
|
0x63: "ITEM_SONG_NOVA",
|
|
0x64: "ITEM_SONG_ELEGY",
|
|
0x65: "ITEM_SONG_OATH",
|
|
0x66: "ITEM_SONG_SARIA",
|
|
0x67: "ITEM_SONG_TIME",
|
|
0x68: "ITEM_SONG_HEALING",
|
|
0x69: "ITEM_SONG_EPONA",
|
|
0x6A: "ITEM_SONG_SOARING",
|
|
0x6B: "ITEM_SONG_STORMS",
|
|
0x6C: "ITEM_SONG_SUN",
|
|
0x6D: "ITEM_BOMBERS_NOTEBOOK",
|
|
0x6E: "ITEM_SKULL_TOKEN",
|
|
0x6F: "ITEM_HEART_CONTAINER",
|
|
0x70: "ITEM_HEART_PIECE",
|
|
0x73: "ITEM_SONG_LULLABY_INTRO" ,
|
|
0x74: "ITEM_KEY_BOSS",
|
|
0x75: "ITEM_COMPASS",
|
|
0x76: "ITEM_DUNGEON_MAP",
|
|
0x77: "ITEM_STRAY_FAIRIES",
|
|
0x78: "ITEM_KEY_SMALL",
|
|
0x79: "ITEM_MAGIC_SMALL",
|
|
0x7A: "ITEM_MAGIC_LARGE",
|
|
0x7B: "ITEM_HEART_PIECE_2",
|
|
0x7C: "ITEM_INVALID_1",
|
|
0x7D: "ITEM_INVALID_2",
|
|
0x7E: "ITEM_INVALID_3",
|
|
0x7F: "ITEM_INVALID_4",
|
|
0x80: "ITEM_INVALID_5",
|
|
0x81: "ITEM_INVALID_6",
|
|
0x82: "ITEM_INVALID_7",
|
|
0x83: "ITEM_RECOVERY_HEART",
|
|
0x84: "ITEM_RUPEE_GREEN",
|
|
0x85: "ITEM_RUPEE_BLUE",
|
|
0x86: "ITEM_RUPEE_10",
|
|
0x87: "ITEM_RUPEE_RED",
|
|
0x88: "ITEM_RUPEE_PURPLE",
|
|
0x89: "ITEM_RUPEE_SILVER",
|
|
0x8A: "ITEM_RUPEE_HUGE",
|
|
0x8B: "ITEM_STICKS_5",
|
|
0x8C: "ITEM_STICKS_10",
|
|
0x8D: "ITEM_NUTS_5",
|
|
0x8E: "ITEM_NUTS_10",
|
|
0x8F: "ITEM_BOMBS_5",
|
|
0x90: "ITEM_BOMBS_10",
|
|
0x91: "ITEM_BOMBS_20",
|
|
0x92: "ITEM_BOMBS_30",
|
|
0x93: "ITEM_ARROWS_10",
|
|
0x94: "ITEM_ARROWS_30",
|
|
0x95: "ITEM_ARROWS_40",
|
|
0x96: "ITEM_ARROWS_50",
|
|
0x97: "ITEM_BOMBCHUS_20",
|
|
0x98: "ITEM_BOMBCHUS_10",
|
|
0x99: "ITEM_BOMBCHUS_1",
|
|
0x9A: "ITEM_BOMBCHUS_5",
|
|
0x9B: "ITEM_STICK_UPGRADE_20",
|
|
0x9C: "ITEM_STICK_UPGRADE_30",
|
|
0x9D: "ITEM_NUT_UPGRADE_30",
|
|
0x9E: "ITEM_NUT_UPGRADE_40",
|
|
0x9F: "ITEM_CHATEAU_2",
|
|
0xA0: "ITEM_MILK",
|
|
0xA1: "ITEM_GOLD_DUST_2",
|
|
0xA2: "ITEM_HYLIAN_LOACH_2",
|
|
0xA3: "ITEM_SEAHORSE_CAUGHT",
|
|
0xF0: "ITEM_F0" ,
|
|
0xF1: "ITEM_F1",
|
|
0xF2: "ITEM_F2",
|
|
0xFC: "ITEM_FC" ,
|
|
0xFD: "ITEM_FD",
|
|
0xFE: "ITEM_FE",
|
|
0xFF: "ITEM_NONE",
|
|
}
|
|
|
|
getItemId_names = {
|
|
0x00: "GI_NONE",
|
|
0x01: "GI_RUPEE_GREEN",
|
|
0x02: "GI_RUPEE_BLUE",
|
|
0x03: "GI_RUPEE_10",
|
|
0x04: "GI_RUPEE_RED",
|
|
0x05: "GI_RUPEE_PURPLE",
|
|
0x06: "GI_RUPEE_SILVER",
|
|
0x07: "GI_RUPEE_HUGE",
|
|
0x08: "GI_WALLET_ADULT",
|
|
0x09: "GI_WALLET_GIANT",
|
|
0x0A: "GI_RECOVERY_HEART",
|
|
0x0C: "GI_HEART_PIECE",
|
|
0x0D: "GI_HEART_CONTAINER",
|
|
0x0E: "GI_MAGIC_SMALL",
|
|
0x0F: "GI_MAGIC_LARGE",
|
|
0x11: "GI_STRAY_FAIRY",
|
|
0x14: "GI_BOMBS_1",
|
|
0x15: "GI_BOMBS_5",
|
|
0x16: "GI_BOMBS_10",
|
|
0x17: "GI_BOMBS_20",
|
|
0x18: "GI_BOMBS_30",
|
|
0x19: "GI_STICKS_1",
|
|
0x1A: "GI_BOMBCHUS_10",
|
|
0x1B: "GI_BOMB_BAG_20",
|
|
0x1C: "GI_BOMB_BAG_30",
|
|
0x1D: "GI_BOMB_BAG_40",
|
|
0x1E: "GI_ARROWS_10",
|
|
0x1F: "GI_ARROWS_30",
|
|
0x20: "GI_ARROWS_40",
|
|
0x21: "GI_ARROWS_50",
|
|
0x22: "GI_QUIVER_30",
|
|
0x23: "GI_QUIVER_40",
|
|
0x24: "GI_QUIVER_50",
|
|
0x25: "GI_ARROW_FIRE",
|
|
0x26: "GI_ARROW_ICE",
|
|
0x27: "GI_ARROW_LIGHT",
|
|
0x28: "GI_NUTS_1",
|
|
0x29: "GI_NUTS_5",
|
|
0x2A: "GI_NUTS_10",
|
|
0x2E: "GI_BOMBCHUS_20",
|
|
0x32: "GI_SHIELD_HERO",
|
|
0x33: "GI_SHIELD_MIRROR",
|
|
0x34: "GI_POWDER_KEG",
|
|
0x35: "GI_MAGIC_BEANS",
|
|
0x36: "GI_BOMBCHUS_1",
|
|
0x37: "GI_SWORD_KOKIRI",
|
|
0x38: "GI_SWORD_RAZOR",
|
|
0x39: "GI_SWORD_GILDED",
|
|
0x3A: "GI_BOMBCHUS_5",
|
|
0x3B: "GI_SWORD_GREAT_FAIRY",
|
|
0x3C: "GI_KEY_SMALL",
|
|
0x3D: "GI_KEY_BOSS",
|
|
0x3E: "GI_MAP",
|
|
0x3F: "GI_COMPASS",
|
|
0x40: "GI_40",
|
|
0x41: "GI_HOOKSHOT",
|
|
0x42: "GI_LENS",
|
|
0x43: "GI_PICTO_BOX",
|
|
0x4C: "GI_OCARINA",
|
|
0x50: "GI_BOMBERS_NOTEBOOK",
|
|
0x52: "GI_SKULL_TOKEN",
|
|
0x55: "GI_REMAINS_ODOLWA",
|
|
0x56: "GI_REMAINS_GOHT",
|
|
0x57: "GI_REMAINS_GYORG",
|
|
0x58: "GI_REMAINS_TWINMOLD",
|
|
0x59: "GI_POTION_RED_BOTTLE",
|
|
0x5A: "GI_BOTTLE",
|
|
0x5B: "GI_POTION_RED",
|
|
0x5C: "GI_POTION_GREEN",
|
|
0x5D: "GI_POTION_BLUE",
|
|
0x5E: "GI_FAIRY",
|
|
0x5F: "GI_DEKU_PRINCESS",
|
|
0x60: "GI_MILK_BOTTLE",
|
|
0x61: "GI_MILK_HALF",
|
|
0x62: "GI_FISH",
|
|
0x63: "GI_BUG",
|
|
0x64: "GI_BLUE_FIRE",
|
|
0x65: "GI_POE",
|
|
0x66: "GI_BIG_POE",
|
|
0x67: "GI_SPRING_WATER",
|
|
0x68: "GI_HOT_SPRING_WATER",
|
|
0x69: "GI_ZORA_EGG",
|
|
0x6A: "GI_GOLD_DUST",
|
|
0x6B: "GI_MUSHROOM",
|
|
0x6C: "GI_6C",
|
|
0x6D: "GI_6D",
|
|
0x6E: "GI_SEAHORSE",
|
|
0x6F: "GI_CHATEAU_BOTTLE",
|
|
0x70: "GI_70",
|
|
0x75: "GI_75",
|
|
0x76: "GI_ICE_TRAP",
|
|
0x78: "GI_MASK_DEKU",
|
|
0x79: "GI_MASK_GORON",
|
|
0x7A: "GI_MASK_ZORA",
|
|
0x7B: "GI_MASK_FIERCE_DEITY",
|
|
0x7C: "GI_MASK_CAPTAIN",
|
|
0x7D: "GI_MASK_GIANT",
|
|
0x7E: "GI_MASK_ALL_NIGHT",
|
|
0x7F: "GI_MASK_BUNNY",
|
|
0x80: "GI_MASK_KEATON",
|
|
0x81: "GI_MASK_GARO",
|
|
0x82: "GI_MASK_ROMANI",
|
|
0x83: "GI_MASK_CIRCUS_LEADER",
|
|
0x84: "GI_MASK_POSTMAN",
|
|
0x85: "GI_MASK_COUPLE",
|
|
0x86: "GI_MASK_GREAT_FAIRY",
|
|
0x87: "GI_MASK_GIBDO",
|
|
0x88: "GI_MASK_DON_GERO",
|
|
0x89: "GI_MASK_KAMARO",
|
|
0x8A: "GI_MASK_TRUTH",
|
|
0x8B: "GI_MASK_STONE",
|
|
0x8C: "GI_MASK_BREMEN",
|
|
0x8D: "GI_MASK_BLAST",
|
|
0x8E: "GI_MASK_SCENTS",
|
|
0x8F: "GI_MASK_KAFEIS_MASK",
|
|
0x91: "GI_CHATEAU",
|
|
0x92: "GI_MILK",
|
|
0x93: "GI_GOLD_DUST_2",
|
|
0x94: "GI_HYLIAN_LOACH",
|
|
0x95: "GI_SEAHORSE_CAUGHT",
|
|
0x96: "GI_MOON_TEAR",
|
|
0x97: "GI_DEED_LAND",
|
|
0x98: "GI_DEED_SWAMP",
|
|
0x99: "GI_DEED_MOUNTAIN",
|
|
0x9A: "GI_DEED_OCEAN",
|
|
0x9B: "GI_SWORD_GREAT_FAIRY_STOLEN",
|
|
0x9C: "GI_SWORD_KOKIRI_STOLEN",
|
|
0x9D: "GI_SWORD_RAZOR_STOLEN",
|
|
0x9E: "GI_SWORD_GILDED_STOLEN",
|
|
0x9F: "GI_SHIELD_HERO_STOLEN",
|
|
0xA0: "GI_ROOM_KEY",
|
|
0xA1: "GI_LETTER_TO_MAMA",
|
|
0xA2: "GI_A2",
|
|
0xA3: "GI_A3",
|
|
0xA4: "GI_A4",
|
|
0xA5: "GI_A5",
|
|
0xA6: "GI_A6",
|
|
0xA7: "GI_A7",
|
|
0xA8: "GI_A8",
|
|
0xA9: "GI_BOTTLE_STOLEN",
|
|
0xAA: "GI_LETTER_TO_KAFEI",
|
|
0xAB: "GI_PENDANT_OF_MEMORIES",
|
|
0xB4: "GI_TINGLE_MAP_CLOCK_TOWN",
|
|
0xB5: "GI_TINGLE_MAP_WOODFALL",
|
|
0xB6: "GI_TINGLE_MAP_SNOWHEAD",
|
|
0xB7: "GI_TINGLE_MAP_ROMANI_RANCH",
|
|
0xB8: "GI_TINGLE_MAP_GREAT_BAY",
|
|
0xB9: "GI_TINGLE_MAP_STONE_TOWER",
|
|
0xBA: "GI_MAX" # I pity the fool
|
|
}
|
|
|
|
getItemDrawId_names = {
|
|
0x00: "GID_BOTTLE",
|
|
0x01: "GID_KEY_SMALL",
|
|
0x02: "GID_MASK_KAMARO",
|
|
0x03: "GID_MASK_COUPLE",
|
|
0x04: "GID_04",
|
|
0x05: "GID_05",
|
|
0x06: "GID_06",
|
|
0x07: "GID_07",
|
|
0x08: "GID_RECOVERY_HEART",
|
|
0x09: "GID_KEY_BOSS",
|
|
0x0A: "GID_COMPASS",
|
|
0x0B: "GID_BOMBERS_NOTEBOOK",
|
|
0x0C: "GID_MASK_STONE",
|
|
0x0D: "GID_MASK_KAFEIS_MASK",
|
|
0x0E: "GID_MASK_CIRCUS_LEADER",
|
|
0x0F: "GID_MASK_BREMEN",
|
|
0x10: "GID_MASK_ALL_NIGHT",
|
|
0x11: "GID_NUTS",
|
|
0x12: "GID_HEART_CONTAINER",
|
|
0x13: "GID_HEART_PIECE",
|
|
0x14: "GID_QUIVER_30",
|
|
0x15: "GID_QUIVER_40",
|
|
0x16: "GID_QUIVER_50",
|
|
0x17: "GID_BOMB_BAG_20",
|
|
0x18: "GID_BOMB_BAG_30",
|
|
0x19: "GID_BOMB_BAG_40",
|
|
0x1A: "GID_STICK",
|
|
0x1B: "GID_DUNGEON_MAP",
|
|
0x1C: "GID_MAGIC_SMALL",
|
|
0x1D: "GID_MAGIC_LARGE",
|
|
0x1E: "GID_BOMB",
|
|
0x1F: "GID_STONE_OF_AGONY",
|
|
0x20: "GID_WALLET_ADULT",
|
|
0x21: "GID_WALLET_GIANT",
|
|
0x22: "GID_MASK_DON_GERO",
|
|
0x23: "GID_ARROWS_SMALL",
|
|
0x24: "GID_ARROWS_MEDIUM",
|
|
0x25: "GID_ARROWS_LARGE",
|
|
0x26: "GID_BOMBCHU",
|
|
0x27: "GID_SHIELD_HERO",
|
|
0x28: "GID_HOOKSHOT",
|
|
0x29: "GID_29",
|
|
0x2A: "GID_OCARINA",
|
|
0x2B: "GID_MILK",
|
|
0x2C: "GID_MASK_KEATON",
|
|
0x2D: "GID_TINGLE_MAP",
|
|
0x2E: "GID_BOW",
|
|
0x2F: "GID_LENS",
|
|
0x30: "GID_POTION_GREEN",
|
|
0x31: "GID_POTION_RED",
|
|
0x32: "GID_POTION_BLUE",
|
|
0x33: "GID_SHIELD_MIRROR",
|
|
0x34: "GID_MAGIC_BEANS",
|
|
0x35: "GID_FISH",
|
|
0x36: "GID_LETTER_MAMA",
|
|
0x37: "GID_37",
|
|
0x38: "GID_SWORD_BGS",
|
|
0x39: "GID_MASK_SUN",
|
|
0x3A: "GID_MASK_BLAST",
|
|
0x3B: "GID_FAIRY",
|
|
0x3C: "GID_MASK_SCENTS",
|
|
0x3D: "GID_MASK_CAPTAIN",
|
|
0x3E: "GID_MASK_BUNNY",
|
|
0x3F: "GID_MASK_TRUTH",
|
|
0x40: "GID_DEED_SWAMP",
|
|
0x41: "GID_DEED_MOUNTAIN",
|
|
0x42: "GID_RUPEE_HUGE",
|
|
0x43: "GID_DEED_OCEAN",
|
|
0x44: "GID_MASK_GORON",
|
|
0x45: "GID_MASK_ZORA",
|
|
0x46: "GID_46",
|
|
0x47: "GID_ARROW_FIRE",
|
|
0x48: "GID_ARROW_ICE",
|
|
0x49: "GID_ARROW_LIGHT",
|
|
0x4A: "GID_SKULL_TOKEN",
|
|
0x4B: "GID_BUG",
|
|
0x4C: "GID_4C",
|
|
0x4D: "GID_POE",
|
|
0x4E: "GID_FAIRY_2",
|
|
0x4F: "GID_RUPEE_GREEN",
|
|
0x50: "GID_RUPEE_BLUE",
|
|
0x51: "GID_RUPEE_RED",
|
|
0x52: "GID_BIG_POE",
|
|
0x53: "GID_RUPEE_PURPLE",
|
|
0x54: "GID_RUPEE_SILVER",
|
|
0x55: "GID_SWORD_KOKIRI",
|
|
0x56: "GID_SKULL_TOKEN_2",
|
|
0x57: "GID_57",
|
|
0x58: "GID_ZORA_EGG",
|
|
0x59: "GID_MOON_TEAR",
|
|
0x5A: "GID_DEED_LAND",
|
|
0x5B: "GID_MASK_DEKU",
|
|
0x5C: "GID_REMAINS_ODOLWA",
|
|
0x5D: "GID_POWDER_KEG",
|
|
0x5E: "GID_GOLD_DUST",
|
|
0x5F: "GID_SEAHORSE",
|
|
0x60: "GID_60",
|
|
0x61: "GID_HYLIAN_LOACH",
|
|
0x62: "GID_SEAHORSE_CAUGHT",
|
|
0x63: "GID_REMAINS_GOHT",
|
|
0x64: "GID_REMAINS_GYORG",
|
|
0x65: "GID_REMAINS_TWINMOLD",
|
|
0x66: "GID_SWORD_RAZOR",
|
|
0x67: "GID_SWORD_GILDED",
|
|
0x68: "GID_SWORD_GREAT_FAIRY",
|
|
0x69: "GID_MASK_GARO",
|
|
0x6A: "GID_MASK_GREAT_FAIRY",
|
|
0x6B: "GID_MASK_GIBDO",
|
|
0x6C: "GID_ROOM_KEY",
|
|
0x6D: "GID_LETTER_TO_KAFEI",
|
|
0x6E: "GID_PENDANT_OF_MEMORIES",
|
|
0x6F: "GID_MUSHROOM",
|
|
0x70: "GID_MASK_ROMANI",
|
|
0x71: "GID_MASK_POSTMAN",
|
|
0x72: "GID_MASK_GIANT",
|
|
0x73: "GID_CHATEAU",
|
|
0x74: "GID_PICTO_BOX",
|
|
0x75: "GID_MASK_FIERCE_DEITY",
|
|
0x76: "GID_MAX",
|
|
-1: "GID_NONE",
|
|
}
|
|
|
|
objectId_names = {
|
|
0x000: "OBJECT_UNSET_0",
|
|
0x001: "GAMEPLAY_KEEP",
|
|
0x002: "GAMEPLAY_FIELD_KEEP",
|
|
0x003: "GAMEPLAY_DANGEON_KEEP",
|
|
0x004: "OBJECT_NB",
|
|
0x005: "OBJECT_OKUTA",
|
|
0x006: "OBJECT_CROW",
|
|
0x007: "OBJECT_AH",
|
|
0x008: "OBJECT_DY_OBJ",
|
|
0x009: "OBJECT_WALLMASTER",
|
|
0x00A: "OBJECT_DODONGO",
|
|
0x00B: "OBJECT_FIREFLY",
|
|
0x00C: "OBJECT_BOX",
|
|
0x00D: "OBJECT_AL",
|
|
0x00E: "OBJECT_BUBBLE",
|
|
0x00F: "OBJECT_NIW",
|
|
0x010: "OBJECT_LINK_BOY",
|
|
0x011: "OBJECT_LINK_CHILD",
|
|
0x012: "OBJECT_TITE",
|
|
0x013: "OBJECT_TAB",
|
|
0x014: "OBJECT_PH",
|
|
0x015: "OBJECT_AND",
|
|
0x016: "OBJECT_MSMO",
|
|
0x017: "OBJECT_DINOFOS",
|
|
0x018: "OBJECT_DRS",
|
|
0x019: "OBJECT_ZL1",
|
|
0x01A: "OBJECT_AN4",
|
|
0x01B: "OBJECT_UNSET_1B",
|
|
0x01C: "OBJECT_TEST3",
|
|
0x01D: "OBJECT_FAMOS",
|
|
0x01E: "OBJECT_UNSET_1E",
|
|
0x01F: "OBJECT_UNSET_1F",
|
|
0x020: "OBJECT_ST",
|
|
0x021: "OBJECT_UNSET_21",
|
|
0x022: "OBJECT_THIEFBIRD",
|
|
0x023: "OBJECT_UNSET_23",
|
|
0x024: "OBJECT_UNSET_24",
|
|
0x025: "OBJECT_UNSET_25",
|
|
0x026: "OBJECT_UNSET_26",
|
|
0x027: "OBJECT_UNSET_27",
|
|
0x028: "OBJECT_UNSET_28",
|
|
0x029: "OBJECT_UNSET_29",
|
|
0x02A: "OBJECT_BOMBF",
|
|
0x02B: "OBJECT_UNSET_2B",
|
|
0x02C: "OBJECT_UNSET_2C",
|
|
0x02D: "OBJECT_UNSET_2D",
|
|
0x02E: "OBJECT_UNSET_2E",
|
|
0x02F: "OBJECT_UNSET_2F",
|
|
0x030: "OBJECT_AM",
|
|
0x031: "OBJECT_DEKUBABA",
|
|
0x032: "OBJECT_UNSET_32",
|
|
0x033: "OBJECT_UNSET_33",
|
|
0x034: "OBJECT_UNSET_34",
|
|
0x035: "OBJECT_UNSET_35",
|
|
0x036: "OBJECT_UNSET_36",
|
|
0x037: "OBJECT_UNSET_37",
|
|
0x038: "OBJECT_UNSET_38",
|
|
0x039: "OBJECT_UNSET_39",
|
|
0x03A: "OBJECT_UNSET_3A",
|
|
0x03B: "OBJECT_UNSET_3B",
|
|
0x03C: "OBJECT_UNSET_3C",
|
|
0x03D: "OBJECT_UNSET_3D",
|
|
0x03E: "OBJECT_WARP1",
|
|
0x03F: "OBJECT_B_HEART",
|
|
0x040: "OBJECT_DEKUNUTS",
|
|
0x041: "OBJECT_UNSET_41",
|
|
0x042: "OBJECT_UNSET_42",
|
|
0x043: "OBJECT_UNSET_43",
|
|
0x044: "OBJECT_UNSET_44",
|
|
0x045: "OBJECT_UNSET_45",
|
|
0x046: "OBJECT_UNSET_46",
|
|
0x047: "OBJECT_UNSET_47",
|
|
0x048: "OBJECT_UNSET_48",
|
|
0x049: "OBJECT_UNSET_49",
|
|
0x04A: "OBJECT_UNSET_4A",
|
|
0x04B: "OBJECT_UNSET_4B",
|
|
0x04C: "OBJECT_UNSET_4C",
|
|
0x04D: "OBJECT_UNSET_4D",
|
|
0x04E: "OBJECT_UNSET_4E",
|
|
0x04F: "OBJECT_UNSET_4F",
|
|
0x050: "OBJECT_UNSET_50",
|
|
0x051: "OBJECT_BB",
|
|
0x052: "OBJECT_DEATH",
|
|
0x053: "OBJECT_UNSET_53",
|
|
0x054: "OBJECT_UNSET_54",
|
|
0x055: "OBJECT_UNSET_55",
|
|
0x056: "OBJECT_UNSET_56",
|
|
0x057: "OBJECT_UNSET_57",
|
|
0x058: "OBJECT_UNSET_58",
|
|
0x059: "OBJECT_UNSET_59",
|
|
0x05A: "OBJECT_UNSET_5A",
|
|
0x05B: "OBJECT_UNSET_5B",
|
|
0x05C: "OBJECT_F40_OBJ",
|
|
0x05D: "OBJECT_PO_COMPOSER",
|
|
0x05E: "OBJECT_UNSET_5E",
|
|
0x05F: "OBJECT_HATA",
|
|
0x060: "OBJECT_UNSET_60",
|
|
0x061: "OBJECT_WOOD02",
|
|
0x062: "OBJECT_UNSET_62",
|
|
0x063: "OBJECT_UNSET_63",
|
|
0x064: "OBJECT_TRAP",
|
|
0x065: "OBJECT_UNSET_65",
|
|
0x066: "OBJECT_UNSET_66",
|
|
0x067: "OBJECT_UNSET_67",
|
|
0x068: "OBJECT_UNSET_68",
|
|
0x069: "OBJECT_UNSET_69",
|
|
0x06A: "OBJECT_VM",
|
|
0x06B: "OBJECT_UNSET_6B",
|
|
0x06C: "OBJECT_UNSET_6C",
|
|
0x06D: "OBJECT_UNSET_6D",
|
|
0x06E: "OBJECT_UNSET_6E",
|
|
0x06F: "OBJECT_UNSET_6F",
|
|
0x070: "OBJECT_EFC_STAR_FIELD",
|
|
0x071: "OBJECT_UNSET_71",
|
|
0x072: "OBJECT_UNSET_72",
|
|
0x073: "OBJECT_UNSET_73",
|
|
0x074: "OBJECT_UNSET_74",
|
|
0x075: "OBJECT_RD",
|
|
0x076: "OBJECT_YUKIMURA_OBJ",
|
|
0x077: "OBJECT_HEAVY_OBJECT",
|
|
0x078: "OBJECT_UNSET_78",
|
|
0x079: "OBJECT_UNSET_79",
|
|
0x07A: "OBJECT_UNSET_7A",
|
|
0x07B: "OBJECT_UNSET_7B",
|
|
0x07C: "OBJECT_UNSET_7C",
|
|
0x07D: "OBJECT_HORSE_LINK_CHILD",
|
|
0x07E: "OBJECT_UNSET_7E",
|
|
0x07F: "OBJECT_UNSET_7F",
|
|
0x080: "OBJECT_SYOKUDAI",
|
|
0x081: "OBJECT_UNSET_81",
|
|
0x082: "OBJECT_UNSET_82",
|
|
0x083: "OBJECT_UNSET_83",
|
|
0x084: "OBJECT_EFC_TW",
|
|
0x085: "OBJECT_UNSET_85",
|
|
0x086: "OBJECT_GI_KEY",
|
|
0x087: "OBJECT_MIR_RAY",
|
|
0x088: "OBJECT_CTOWER_ROT",
|
|
0x089: "OBJECT_UNSET_89",
|
|
0x08A: "OBJECT_BDOOR",
|
|
0x08B: "OBJECT_UNSET_8B",
|
|
0x08C: "OBJECT_UNSET_8C",
|
|
0x08D: "OBJECT_UNSET_8D",
|
|
0x08E: "OBJECT_SB",
|
|
0x08F: "OBJECT_GI_MELODY",
|
|
0x090: "OBJECT_GI_HEART",
|
|
0x091: "OBJECT_GI_COMPASS",
|
|
0x092: "OBJECT_GI_BOSSKEY",
|
|
0x093: "OBJECT_UNSET_93",
|
|
0x094: "OBJECT_GI_NUTS",
|
|
0x095: "OBJECT_UNSET_95",
|
|
0x096: "OBJECT_GI_HEARTS",
|
|
0x097: "OBJECT_GI_ARROWCASE",
|
|
0x098: "OBJECT_GI_BOMBPOUCH",
|
|
0x099: "OBJECT_IN",
|
|
0x09A: "OBJECT_UNSET_9A",
|
|
0x09B: "OBJECT_UNSET_9B",
|
|
0x09C: "OBJECT_UNSET_9C",
|
|
0x09D: "OBJECT_OS_ANIME",
|
|
0x09E: "OBJECT_GI_BOTTLE",
|
|
0x09F: "OBJECT_GI_STICK",
|
|
0x0A0: "OBJECT_GI_MAP",
|
|
0x0A1: "OBJECT_OF1D_MAP",
|
|
0x0A2: "OBJECT_RU2",
|
|
0x0A3: "OBJECT_UNSET_A3",
|
|
0x0A4: "OBJECT_GI_MAGICPOT",
|
|
0x0A5: "OBJECT_GI_BOMB_1",
|
|
0x0A6: "OBJECT_UNSET_A6",
|
|
0x0A7: "OBJECT_MA2",
|
|
0x0A8: "OBJECT_GI_PURSE",
|
|
0x0A9: "OBJECT_UNSET_A9",
|
|
0x0AA: "OBJECT_UNSET_AA",
|
|
0x0AB: "OBJECT_RR",
|
|
0x0AC: "OBJECT_UNSET_AC",
|
|
0x0AD: "OBJECT_UNSET_AD",
|
|
0x0AE: "OBJECT_UNSET_AE",
|
|
0x0AF: "OBJECT_GI_ARROW",
|
|
0x0B0: "OBJECT_GI_BOMB_2",
|
|
0x0B1: "OBJECT_UNSET_B1",
|
|
0x0B2: "OBJECT_UNSET_B2",
|
|
0x0B3: "OBJECT_GI_SHIELD_2",
|
|
0x0B4: "OBJECT_GI_HOOKSHOT",
|
|
0x0B5: "OBJECT_GI_OCARINA",
|
|
0x0B6: "OBJECT_GI_MILK",
|
|
0x0B7: "OBJECT_MA1",
|
|
0x0B8: "OBJECT_UNSET_B8",
|
|
0x0B9: "OBJECT_UNSET_B9",
|
|
0x0BA: "OBJECT_UNSET_BA",
|
|
0x0BB: "OBJECT_NY",
|
|
0x0BC: "OBJECT_FR",
|
|
0x0BD: "OBJECT_UNSET_BD",
|
|
0x0BE: "OBJECT_UNSET_BE",
|
|
0x0BF: "OBJECT_GI_BOW",
|
|
0x0C0: "OBJECT_GI_GLASSES",
|
|
0x0C1: "OBJECT_GI_LIQUID",
|
|
0x0C2: "OBJECT_ANI",
|
|
0x0C3: "OBJECT_GI_SHIELD_3",
|
|
0x0C4: "OBJECT_UNSET_C4",
|
|
0x0C5: "OBJECT_UNSET_C5",
|
|
0x0C6: "OBJECT_GI_BEAN",
|
|
0x0C7: "OBJECT_GI_FISH",
|
|
0x0C8: "OBJECT_UNSET_C8",
|
|
0x0C9: "OBJECT_UNSET_C9",
|
|
0x0CA: "OBJECT_UNSET_CA",
|
|
0x0CB: "OBJECT_GI_LONGSWORD",
|
|
0x0CC: "OBJECT_UNSET_CC",
|
|
0x0CD: "OBJECT_UNSET_CD",
|
|
0x0CE: "OBJECT_UNSET_CE",
|
|
0x0CF: "OBJECT_UNSET_CF",
|
|
0x0D0: "OBJECT_ZO",
|
|
0x0D1: "OBJECT_UNSET_D1",
|
|
0x0D2: "OBJECT_UMAJUMP",
|
|
0x0D3: "OBJECT_UNSET_D3",
|
|
0x0D4: "OBJECT_UNSET_D4",
|
|
0x0D5: "OBJECT_MASTERGOLON",
|
|
0x0D6: "OBJECT_MASTERZOORA",
|
|
0x0D7: "OBJECT_AOB",
|
|
0x0D8: "OBJECT_IK",
|
|
0x0D9: "OBJECT_AHG",
|
|
0x0DA: "OBJECT_CNE",
|
|
0x0DB: "OBJECT_UNSET_DB",
|
|
0x0DC: "OBJECT_UNSET_DC",
|
|
0x0DD: "OBJECT_AN3",
|
|
0x0DE: "OBJECT_BJI",
|
|
0x0DF: "OBJECT_BBA",
|
|
0x0E0: "OBJECT_AN2",
|
|
0x0E1: "OBJECT_UNSET_E1",
|
|
0x0E2: "OBJECT_AN1",
|
|
0x0E3: "OBJECT_BOJ",
|
|
0x0E4: "OBJECT_FZ",
|
|
0x0E5: "OBJECT_BOB",
|
|
0x0E6: "OBJECT_GE1",
|
|
0x0E7: "OBJECT_YABUSAME_POINT",
|
|
0x0E8: "OBJECT_UNSET_E8",
|
|
0x0E9: "OBJECT_UNSET_E9",
|
|
0x0EA: "OBJECT_UNSET_EA",
|
|
0x0EB: "OBJECT_UNSET_EB",
|
|
0x0EC: "OBJECT_D_HSBLOCK",
|
|
0x0ED: "OBJECT_D_LIFT",
|
|
0x0EE: "OBJECT_MAMENOKI",
|
|
0x0EF: "OBJECT_GOROIWA",
|
|
0x0F0: "OBJECT_TORYO",
|
|
0x0F1: "OBJECT_DAIKU",
|
|
0x0F2: "OBJECT_NWC",
|
|
0x0F3: "OBJECT_GM",
|
|
0x0F4: "OBJECT_MS",
|
|
0x0F5: "OBJECT_HS",
|
|
0x0F6: "OBJECT_UNSET_F6",
|
|
0x0F7: "OBJECT_LIGHTSWITCH",
|
|
0x0F8: "OBJECT_KUSA",
|
|
0x0F9: "OBJECT_TSUBO",
|
|
0x0FA: "OBJECT_UNSET_FA",
|
|
0x0FB: "OBJECT_UNSET_FB",
|
|
0x0FC: "OBJECT_KANBAN",
|
|
0x0FD: "OBJECT_OWL",
|
|
0x0FE: "OBJECT_MK",
|
|
0x0FF: "OBJECT_FU",
|
|
0x100: "OBJECT_GI_KI_TAN_MASK",
|
|
0x101: "OBJECT_UNSET_101",
|
|
0x102: "OBJECT_GI_MASK18",
|
|
0x103: "OBJECT_GI_RABIT_MASK",
|
|
0x104: "OBJECT_GI_TRUTH_MASK",
|
|
0x105: "OBJECT_UNSET_105",
|
|
0x106: "OBJECT_STREAM",
|
|
0x107: "OBJECT_MM",
|
|
0x108: "OBJECT_UNSET_108",
|
|
0x109: "OBJECT_UNSET_109",
|
|
0x10A: "OBJECT_UNSET_10A",
|
|
0x10B: "OBJECT_UNSET_10B",
|
|
0x10C: "OBJECT_UNSET_10C",
|
|
0x10D: "OBJECT_UNSET_10D",
|
|
0x10E: "OBJECT_UNSET_10E",
|
|
0x10F: "OBJECT_JS",
|
|
0x110: "OBJECT_CS",
|
|
0x111: "OBJECT_UNSET_111",
|
|
0x112: "OBJECT_UNSET_112",
|
|
0x113: "OBJECT_GI_SOLDOUT",
|
|
0x114: "OBJECT_UNSET_114",
|
|
0x115: "OBJECT_MAG",
|
|
0x116: "OBJECT_UNSET_116",
|
|
0x117: "OBJECT_UNSET_117",
|
|
0x118: "OBJECT_UNSET_118",
|
|
0x119: "OBJECT_GI_GOLONMASK",
|
|
0x11A: "OBJECT_GI_ZORAMASK",
|
|
0x11B: "OBJECT_UNSET_11B",
|
|
0x11C: "OBJECT_UNSET_11C",
|
|
0x11D: "OBJECT_KA",
|
|
0x11E: "OBJECT_UNSET_11E",
|
|
0x11F: "OBJECT_ZG",
|
|
0x120: "OBJECT_UNSET_120",
|
|
0x121: "OBJECT_GI_M_ARROW",
|
|
0x122: "OBJECT_DS2",
|
|
0x123: "OBJECT_UNSET_123",
|
|
0x124: "OBJECT_FISH",
|
|
0x125: "OBJECT_GI_SUTARU",
|
|
0x126: "OBJECT_UNSET_126",
|
|
0x127: "OBJECT_SSH",
|
|
0x128: "OBJECT_BIGSLIME",
|
|
0x129: "OBJECT_BG",
|
|
0x12A: "OBJECT_BOMBIWA",
|
|
0x12B: "OBJECT_HINTNUTS",
|
|
0x12C: "OBJECT_RS",
|
|
0x12D: "OBJECT_UNSET_12D",
|
|
0x12E: "OBJECT_GLA",
|
|
0x12F: "OBJECT_UNSET_12F",
|
|
0x130: "OBJECT_GELDB",
|
|
0x131: "OBJECT_UNSET_131",
|
|
0x132: "OBJECT_DOG",
|
|
0x133: "OBJECT_KIBAKO2",
|
|
0x134: "OBJECT_DNS",
|
|
0x135: "OBJECT_DNK",
|
|
0x136: "OBJECT_UNSET_136",
|
|
0x137: "OBJECT_GI_INSECT",
|
|
0x138: "OBJECT_UNSET_138",
|
|
0x139: "OBJECT_GI_GHOST",
|
|
0x13A: "OBJECT_GI_SOUL",
|
|
0x13B: "OBJECT_UNSET_13B",
|
|
0x13C: "OBJECT_UNSET_13C",
|
|
0x13D: "OBJECT_UNSET_13D",
|
|
0x13E: "OBJECT_UNSET_13E",
|
|
0x13F: "OBJECT_GI_RUPY",
|
|
0x140: "OBJECT_MU",
|
|
0x141: "OBJECT_WF",
|
|
0x142: "OBJECT_SKB",
|
|
0x143: "OBJECT_GS",
|
|
0x144: "OBJECT_PS",
|
|
0x145: "OBJECT_OMOYA_OBJ",
|
|
0x146: "OBJECT_COW",
|
|
0x147: "OBJECT_UNSET_147",
|
|
0x148: "OBJECT_GI_SWORD_1",
|
|
0x149: "OBJECT_UNSET_149",
|
|
0x14A: "OBJECT_UNSET_14A",
|
|
0x14B: "OBJECT_ZL4",
|
|
0x14C: "OBJECT_LINK_GORON",
|
|
0x14D: "OBJECT_LINK_ZORA",
|
|
0x14E: "OBJECT_GRASSHOPPER",
|
|
0x14F: "OBJECT_BOYO",
|
|
0x150: "OBJECT_UNSET_150",
|
|
0x151: "OBJECT_UNSET_151",
|
|
0x152: "OBJECT_UNSET_152",
|
|
0x153: "OBJECT_FWALL",
|
|
0x154: "OBJECT_LINK_NUTS",
|
|
0x155: "OBJECT_JSO",
|
|
0x156: "OBJECT_KNIGHT",
|
|
0x157: "OBJECT_ICICLE",
|
|
0x158: "OBJECT_SPDWEB",
|
|
0x159: "OBJECT_UNSET_159",
|
|
0x15A: "OBJECT_BOSS01",
|
|
0x15B: "OBJECT_BOSS02",
|
|
0x15C: "OBJECT_BOSS03",
|
|
0x15D: "OBJECT_BOSS04",
|
|
0x15E: "OBJECT_BOSS05",
|
|
0x15F: "OBJECT_BOSS06",
|
|
0x160: "OBJECT_BOSS07",
|
|
0x161: "OBJECT_RAF",
|
|
0x162: "OBJECT_FUNEN",
|
|
0x163: "OBJECT_RAILLIFT",
|
|
0x164: "OBJECT_NUMA_OBJ",
|
|
0x165: "OBJECT_FLOWERPOT",
|
|
0x166: "OBJECT_SPINYROLL",
|
|
0x167: "OBJECT_ICE_BLOCK",
|
|
0x168: "OBJECT_UNSET_168",
|
|
0x169: "OBJECT_KEIKOKU_DEMO",
|
|
0x16A: "OBJECT_SLIME",
|
|
0x16B: "OBJECT_PR",
|
|
0x16C: "OBJECT_F52_OBJ",
|
|
0x16D: "OBJECT_F53_OBJ",
|
|
0x16E: "OBJECT_UNSET_16E",
|
|
0x16F: "OBJECT_KIBAKO",
|
|
0x170: "OBJECT_SEK",
|
|
0x171: "OBJECT_GMO",
|
|
0x172: "OBJECT_BAT",
|
|
0x173: "OBJECT_SEKIHIL",
|
|
0x174: "OBJECT_SEKIHIG",
|
|
0x175: "OBJECT_SEKIHIN",
|
|
0x176: "OBJECT_SEKIHIZ",
|
|
0x177: "OBJECT_UNSET_177",
|
|
0x178: "OBJECT_WIZ",
|
|
0x179: "OBJECT_LADDER",
|
|
0x17A: "OBJECT_MKK",
|
|
0x17B: "OBJECT_UNSET_17B",
|
|
0x17C: "OBJECT_UNSET_17C",
|
|
0x17D: "OBJECT_UNSET_17D",
|
|
0x17E: "OBJECT_KEIKOKU_OBJ",
|
|
0x17F: "OBJECT_SICHITAI_OBJ",
|
|
0x180: "OBJECT_DEKUCITY_ANA_OBJ",
|
|
0x181: "OBJECT_RAT",
|
|
0x182: "OBJECT_WATER_EFFECT",
|
|
0x183: "OBJECT_UNSET_183",
|
|
0x184: "OBJECT_DBLUE_OBJECT",
|
|
0x185: "OBJECT_BAL",
|
|
0x186: "OBJECT_WARP_UZU",
|
|
0x187: "OBJECT_DRIFTICE",
|
|
0x188: "OBJECT_FALL",
|
|
0x189: "OBJECT_HANAREYAMA_OBJ",
|
|
0x18A: "OBJECT_CRACE_OBJECT",
|
|
0x18B: "OBJECT_DNQ",
|
|
0x18C: "OBJECT_OBJ_TOKEIDAI",
|
|
0x18D: "OBJECT_EG",
|
|
0x18E: "OBJECT_TRU",
|
|
0x18F: "OBJECT_TRT",
|
|
0x190: "OBJECT_HAKUGIN_OBJ",
|
|
0x191: "OBJECT_HORSE_GAME_CHECK",
|
|
0x192: "OBJECT_STK",
|
|
0x193: "OBJECT_UNSET_193",
|
|
0x194: "OBJECT_UNSET_194",
|
|
0x195: "OBJECT_MNK",
|
|
0x196: "OBJECT_GI_BOTTLE_RED",
|
|
0x197: "OBJECT_TOKEI_TOBIRA",
|
|
0x198: "OBJECT_AZ",
|
|
0x199: "OBJECT_TWIG",
|
|
0x19A: "OBJECT_DEKUCITY_OBJ",
|
|
0x19B: "OBJECT_PO_FUSEN",
|
|
0x19C: "OBJECT_RACETSUBO",
|
|
0x19D: "OBJECT_HA",
|
|
0x19E: "OBJECT_BIGOKUTA",
|
|
0x19F: "OBJECT_OPEN_OBJ",
|
|
0x1A0: "OBJECT_FU_KAITEN",
|
|
0x1A1: "OBJECT_FU_MATO",
|
|
0x1A2: "OBJECT_MTORIDE",
|
|
0x1A3: "OBJECT_OSN",
|
|
0x1A4: "OBJECT_TOKEI_STEP",
|
|
0x1A5: "OBJECT_LOTUS",
|
|
0x1A6: "OBJECT_TL",
|
|
0x1A7: "OBJECT_DKJAIL_OBJ",
|
|
0x1A8: "OBJECT_VISIBLOCK",
|
|
0x1A9: "OBJECT_TSN",
|
|
0x1AA: "OBJECT_DS2N",
|
|
0x1AB: "OBJECT_FSN",
|
|
0x1AC: "OBJECT_SHN",
|
|
0x1AD: "OBJECT_BIGICICLE",
|
|
0x1AE: "OBJECT_GI_BOTTLE_15",
|
|
0x1AF: "OBJECT_TK",
|
|
0x1B0: "OBJECT_MARKET_OBJ",
|
|
0x1B1: "OBJECT_GI_RESERVE00",
|
|
0x1B2: "OBJECT_GI_RESERVE01",
|
|
0x1B3: "OBJECT_LIGHTBLOCK",
|
|
0x1B4: "OBJECT_TAKARAYA_OBJECTS",
|
|
0x1B5: "OBJECT_WDHAND",
|
|
0x1B6: "OBJECT_SDN",
|
|
0x1B7: "OBJECT_SNOWWD",
|
|
0x1B8: "OBJECT_GIANT",
|
|
0x1B9: "OBJECT_COMB",
|
|
0x1BA: "OBJECT_HANA",
|
|
0x1BB: "OBJECT_BOSS_HAKUGIN",
|
|
0x1BC: "OBJECT_MEGANEANA_OBJ",
|
|
0x1BD: "OBJECT_GI_NUTSMASK",
|
|
0x1BE: "OBJECT_STK2",
|
|
0x1BF: "OBJECT_SPOT11_OBJ",
|
|
0x1C0: "OBJECT_DANPEI_OBJECT",
|
|
0x1C1: "OBJECT_DHOUSE",
|
|
0x1C2: "OBJECT_HAKAISI",
|
|
0x1C3: "OBJECT_PO",
|
|
0x1C4: "OBJECT_SNOWMAN",
|
|
0x1C5: "OBJECT_PO_SISTERS",
|
|
0x1C6: "OBJECT_PP",
|
|
0x1C7: "OBJECT_GORONSWITCH",
|
|
0x1C8: "OBJECT_DELF",
|
|
0x1C9: "OBJECT_BOTIHASIRA",
|
|
0x1CA: "OBJECT_GI_BIGBOMB",
|
|
0x1CB: "OBJECT_PST",
|
|
0x1CC: "OBJECT_BSMASK",
|
|
0x1CD: "OBJECT_SPIDERTENT",
|
|
0x1CE: "OBJECT_ZORAEGG",
|
|
0x1CF: "OBJECT_KBT",
|
|
0x1D0: "OBJECT_GG",
|
|
0x1D1: "OBJECT_MARUTA",
|
|
0x1D2: "OBJECT_GHAKA",
|
|
0x1D3: "OBJECT_OYU",
|
|
0x1D4: "OBJECT_DNP",
|
|
0x1D5: "OBJECT_DAI",
|
|
0x1D6: "OBJECT_KGY",
|
|
0x1D7: "OBJECT_FB",
|
|
0x1D8: "OBJECT_TAISOU",
|
|
0x1D9: "OBJECT_MASK_BU_SAN",
|
|
0x1DA: "OBJECT_MASK_KI_TAN",
|
|
0x1DB: "OBJECT_MASK_RABIT",
|
|
0x1DC: "OBJECT_MASK_SKJ",
|
|
0x1DD: "OBJECT_MASK_BAKURETU",
|
|
0x1DE: "OBJECT_MASK_TRUTH",
|
|
0x1DF: "OBJECT_GK",
|
|
0x1E0: "OBJECT_HAKA_OBJ",
|
|
0x1E1: "OBJECT_MASK_GORON",
|
|
0x1E2: "OBJECT_MASK_ZORA",
|
|
0x1E3: "OBJECT_MASK_NUTS",
|
|
0x1E4: "OBJECT_MASK_BOY",
|
|
0x1E5: "OBJECT_DNT",
|
|
0x1E6: "OBJECT_YUKIYAMA",
|
|
0x1E7: "OBJECT_ICEFLOE",
|
|
0x1E8: "OBJECT_GI_GOLD_DUST",
|
|
0x1E9: "OBJECT_GI_BOTTLE_16",
|
|
0x1EA: "OBJECT_GI_BOTTLE_22",
|
|
0x1EB: "OBJECT_BEE",
|
|
0x1EC: "OBJECT_OT",
|
|
0x1ED: "OBJECT_UTUBO",
|
|
0x1EE: "OBJECT_DORA",
|
|
0x1EF: "OBJECT_GI_LOACH",
|
|
0x1F0: "OBJECT_GI_SEAHORSE",
|
|
0x1F1: "OBJECT_BIGPO",
|
|
0x1F2: "OBJECT_HARIKO",
|
|
0x1F3: "OBJECT_DNO",
|
|
0x1F4: "OBJECT_SINKAI_KABE",
|
|
0x1F5: "OBJECT_KIN2_OBJ",
|
|
0x1F6: "OBJECT_ISHI",
|
|
0x1F7: "OBJECT_HAKUGIN_DEMO",
|
|
0x1F8: "OBJECT_JG",
|
|
0x1F9: "OBJECT_GI_SWORD_2",
|
|
0x1FA: "OBJECT_GI_SWORD_3",
|
|
0x1FB: "OBJECT_GI_SWORD_4",
|
|
0x1FC: "OBJECT_UM",
|
|
0x1FD: "OBJECT_MASK_GIBUDO",
|
|
0x1FE: "OBJECT_MASK_JSON",
|
|
0x1FF: "OBJECT_MASK_KERFAY",
|
|
0x200: "OBJECT_MASK_BIGELF",
|
|
0x201: "OBJECT_RB",
|
|
0x202: "OBJECT_MBAR_OBJ",
|
|
0x203: "OBJECT_IKANA_OBJ",
|
|
0x204: "OBJECT_KZ",
|
|
0x205: "OBJECT_TOKEI_TURRET",
|
|
0x206: "OBJECT_ZOG",
|
|
0x207: "OBJECT_ROTLIFT",
|
|
0x208: "OBJECT_POSTHOUSE_OBJ",
|
|
0x209: "OBJECT_GI_MASK09",
|
|
0x20A: "OBJECT_GI_MASK14",
|
|
0x20B: "OBJECT_GI_MASK15",
|
|
0x20C: "OBJECT_INIBS_OBJECT",
|
|
0x20D: "OBJECT_TREE",
|
|
0x20E: "OBJECT_KAIZOKU_OBJ",
|
|
0x20F: "OBJECT_GI_RESERVE_B_00",
|
|
0x210: "OBJECT_GI_RESERVE_C_00",
|
|
0x211: "OBJECT_ZOB",
|
|
0x212: "OBJECT_MILKBAR",
|
|
0x213: "OBJECT_DMASK",
|
|
0x214: "OBJECT_MASK_KYOJIN",
|
|
0x215: "OBJECT_GI_RESERVE_C_01",
|
|
0x216: "OBJECT_ZOD",
|
|
0x217: "OBJECT_KUMO30",
|
|
0x218: "OBJECT_OBJ_YASI",
|
|
0x219: "OBJECT_MASK_ROMERNY",
|
|
0x21A: "OBJECT_TANRON1",
|
|
0x21B: "OBJECT_TANRON2",
|
|
0x21C: "OBJECT_TANRON3",
|
|
0x21D: "OBJECT_GI_MAGICMUSHROOM",
|
|
0x21E: "OBJECT_OBJ_CHAN",
|
|
0x21F: "OBJECT_GI_MASK10",
|
|
0x220: "OBJECT_ZOS",
|
|
0x221: "OBJECT_MASK_POSTHAT",
|
|
0x222: "OBJECT_F40_SWITCH",
|
|
0x223: "OBJECT_LODMOON",
|
|
0x224: "OBJECT_TRO",
|
|
0x225: "OBJECT_GI_MASK12",
|
|
0x226: "OBJECT_GI_MASK23",
|
|
0x227: "OBJECT_GI_BOTTLE_21",
|
|
0x228: "OBJECT_GI_CAMERA",
|
|
0x229: "OBJECT_KAMEJIMA",
|
|
0x22A: "OBJECT_HARFGIBUD",
|
|
0x22B: "OBJECT_ZOV",
|
|
0x22C: "OBJECT_HGDOOR",
|
|
0x22D: "OBJECT_UNSET_22D",
|
|
0x22E: "OBJECT_UNSET_22E",
|
|
0x22F: "OBJECT_UNSET_22F",
|
|
0x230: "OBJECT_DOR01",
|
|
0x231: "OBJECT_DOR02",
|
|
0x232: "OBJECT_DOR03",
|
|
0x233: "OBJECT_DOR04",
|
|
0x234: "OBJECT_LAST_OBJ",
|
|
0x235: "OBJECT_REDEAD_OBJ",
|
|
0x236: "OBJECT_IKNINSIDE_OBJ",
|
|
0x237: "OBJECT_IKNV_OBJ",
|
|
0x238: "OBJECT_PAMERA",
|
|
0x239: "OBJECT_HSSTUMP",
|
|
0x23A: "OBJECT_ZM",
|
|
0x23B: "OBJECT_BIG_FWALL",
|
|
0x23C: "OBJECT_SECOM_OBJ",
|
|
0x23D: "OBJECT_HUNSUI",
|
|
0x23E: "OBJECT_UCH",
|
|
0x23F: "OBJECT_TANRON4",
|
|
0x240: "OBJECT_TANRON5",
|
|
0x241: "OBJECT_DT",
|
|
0x242: "OBJECT_GI_MASK03",
|
|
0x243: "OBJECT_CHA",
|
|
0x244: "OBJECT_OBJ_DINNER",
|
|
0x245: "OBJECT_GI_RESERVE_B_01",
|
|
0x246: "OBJECT_LASTDAY",
|
|
0x247: "OBJECT_BAI",
|
|
0x248: "OBJECT_IN2",
|
|
0x249: "OBJECT_IKN_DEMO",
|
|
0x24A: "OBJECT_YB",
|
|
0x24B: "OBJECT_RZ",
|
|
0x24C: "OBJECT_MASK_ZACHO",
|
|
0x24D: "OBJECT_GI_FIELDMAP",
|
|
0x24E: "OBJECT_MASK_STONE",
|
|
0x24F: "OBJECT_BJT",
|
|
0x250: "OBJECT_TARU",
|
|
0x251: "OBJECT_MOONSTON",
|
|
0x252: "OBJECT_MASK_BREE",
|
|
0x253: "OBJECT_GI_SCHEDULE",
|
|
0x254: "OBJECT_GI_STONEMASK",
|
|
0x255: "OBJECT_ZORABAND",
|
|
0x256: "OBJECT_KEPN_KOYA",
|
|
0x257: "OBJECT_OBJ_USIYANE",
|
|
0x258: "OBJECT_GI_MASK05",
|
|
0x259: "OBJECT_GI_MASK11",
|
|
0x25A: "OBJECT_GI_MASK20",
|
|
0x25B: "OBJECT_NNH",
|
|
0x25C: "OBJECT_MASK_GERO",
|
|
0x25D: "OBJECT_MASK_YOFUKASI",
|
|
0x25E: "OBJECT_MASK_MEOTO",
|
|
0x25F: "OBJECT_MASK_DANCER",
|
|
0x260: "OBJECT_KZSAKU",
|
|
0x261: "OBJECT_OBJ_MILK_BIN",
|
|
0x262: "OBJECT_RANDOM_OBJ",
|
|
0x263: "OBJECT_KUJIYA",
|
|
0x264: "OBJECT_KITAN",
|
|
0x265: "OBJECT_GI_MASK06",
|
|
0x266: "OBJECT_GI_MASK16",
|
|
0x267: "OBJECT_ASTR_OBJ",
|
|
0x268: "OBJECT_BSB",
|
|
0x269: "OBJECT_FALL2",
|
|
0x26A: "OBJECT_STH",
|
|
0x26B: "OBJECT_GI_MSSA",
|
|
0x26C: "OBJECT_SMTOWER",
|
|
0x26D: "OBJECT_GI_MASK21",
|
|
0x26E: "OBJECT_YADO_OBJ",
|
|
0x26F: "OBJECT_SYOTEN",
|
|
0x270: "OBJECT_MOONEND",
|
|
0x271: "OBJECT_OB",
|
|
0x272: "OBJECT_GI_BOTTLE_04",
|
|
0x273: "OBJECT_OBJ_DANPEILIFT",
|
|
0x274: "OBJECT_WDOR01",
|
|
0x275: "OBJECT_WDOR02",
|
|
0x276: "OBJECT_WDOR03",
|
|
0x277: "OBJECT_STK3",
|
|
0x278: "OBJECT_KINSTA1_OBJ",
|
|
0x279: "OBJECT_KINSTA2_OBJ",
|
|
0x27A: "OBJECT_BH",
|
|
0x27B: "OBJECT_WDOR04",
|
|
0x27C: "OBJECT_WDOR05",
|
|
0x27D: "OBJECT_GI_MASK17",
|
|
0x27E: "OBJECT_GI_MASK22",
|
|
0x27F: "OBJECT_LBFSHOT",
|
|
0x280: "OBJECT_FUSEN",
|
|
0x281: "OBJECT_ENDING_OBJ",
|
|
0x282: "OBJECT_GI_MASK13",
|
|
0x283: "OBJECT_ID_MAX",
|
|
}
|
|
|
|
@dataclasses.dataclass
|
|
class GetItemEntry:
|
|
getItemId: int
|
|
itemId: int
|
|
field: int
|
|
gi: int
|
|
textId: int
|
|
objectId: int
|
|
|
|
def __str__(self) -> str:
|
|
itemId_name = itemId_names.get(self.itemId, f"NOT FOUND: 0x{self.itemId:X}")
|
|
gid = abs(self.gi) - 1
|
|
getitemDrawId_name = getItemDrawId_names.get(gid, f"NOT FOUND: 0x{abs(self.gi) - 1:X}")
|
|
|
|
if self.gi == 0:
|
|
chest_anim = 0
|
|
else:
|
|
chest_anim = "CHEST_ANIM_SHORT" if self.gi < 0 else "CHEST_ANIM_LONG"
|
|
|
|
objectId_name = objectId_names.get(self.objectId, f"NOT FOUND: 0x{abs(self.objectId):X}")
|
|
|
|
ret = f"/* 0x{self.getItemId:02X} */ GET_ITEM({itemId_name}, {objectId_name}, {getitemDrawId_name}, 0x{self.textId:X}, 0x{self.field:X}, {chest_anim})"
|
|
|
|
return ret
|
|
|
|
def main() -> None:
|
|
description = "Extract and print the GetItem table"
|
|
epilog = ""
|
|
|
|
parser = argparse.ArgumentParser(description=description, epilog=epilog, formatter_class=argparse.RawTextHelpFormatter)
|
|
parser.add_argument("file", help="binary file to read")
|
|
parser.add_argument("offset", help="offset at which to start reading")
|
|
parser.add_argument("count", help="number of entries to extract")
|
|
parser.add_argument("-g", help="look further back for glitched items from Get Item Manipulation", action="store_true")
|
|
|
|
args = parser.parse_args()
|
|
|
|
start = int(args.offset, 0)
|
|
count = int(args.count, 0)
|
|
glitched = args.g
|
|
pos_start = 0
|
|
|
|
with open(args.file, "rb") as f:
|
|
if glitched:
|
|
start -= GETITEMENTRY_LENGTH * count
|
|
pos_start -= count
|
|
count *= 2
|
|
|
|
f.seek(start, os.SEEK_SET)
|
|
data = f.read(GETITEMENTRY_LENGTH * count)
|
|
unpacked_data = struct.iter_unpack(GETITEMENTRY_FORMAT, data)
|
|
get_item_entries: typing.List[GetItemEntry] = []
|
|
|
|
for i,entry in enumerate(unpacked_data):
|
|
get_item_entries.append(GetItemEntry(pos_start + i+1, *entry))
|
|
|
|
for entry in get_item_entries:
|
|
print(f"{entry},")
|
|
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|