some JP decomp (#1149)

* main segment cleanup

* engine1

* engine4

* evt

* entity

* engine2 msg split

* engine2 draft

* identify all gu functions

* font_width + charset

* update msg ids

* os stuff

* msg stuffs

* msg_copy_to_print_buffer

* popup_menu_draw_menu_contents

* appendGfx_message

* cleanup

* building fixed

* Change exceptasm symbols to not be global

---------

Co-authored-by: Ethan <ethteck@gmail.com>
This commit is contained in:
AltoXorg 2024-01-16 13:13:54 +08:00 committed by GitHub
parent 1589a30e26
commit bfe9a42b06
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
49 changed files with 8477 additions and 2768 deletions

View File

@ -1168,6 +1168,12 @@ typedef struct ItemEntity {
/* 0x58 */ s32 sparkleHeight;
} ItemEntity; // size = 0x5C
#if VERSION_JP
#define PRINT_BUFFER_SIZE 1024
#else
#define PRINT_BUFFER_SIZE 1088 // slightly larger than source buffer
#endif
typedef struct MessagePrintState {
/* 0x000 */ u8* srcBuffer;
/* 0x004 */ u16 printBufferPos;
@ -1175,7 +1181,7 @@ typedef struct MessagePrintState {
/* 0x008 */ s32 msgID;
/* 0x00C */ u16 srcBufferPos;
/* 0x00E */ u16 curPrintDelay;
/* 0x010 */ u8 printBuffer[1088]; // slightly larger than source buffer
/* 0x010 */ u8 printBuffer[PRINT_BUFFER_SIZE];
/* 0x450 */ s16 printBufferSize;
/* 0x452 */ u16 effectFrameCounter;
/* 0x454 */ u8 font;
@ -1258,8 +1264,10 @@ typedef struct MessagePrintState {
/* 0x548 */ PAL_PTR letterBackgroundPal;
/* 0x54C */ IMG_PTR letterContentImg;
/* 0x550 */ PAL_PTR letterContentPal;
#if !VERSION_JP
/* 0x554 */ char unk_554[0x4];
} MessagePrintState; // size = 0x558
#endif
} MessagePrintState; // size = 0x558, JP size = 0x514
typedef struct MessageDrawState {
/* 0x00 */ s32 clipX[2]; // characters beyond this pos get skipped

View File

@ -5444,6 +5444,373 @@ enum MsgPalettes {
};
enum MsgChars {
#if VERSION_JP
// Variant 0 - Hiragana, Katakana, Numeric, Fullwidth Symbols
MSG_CHAR_HIRAGANA_A = 0x00,
MSG_CHAR_HIRAGANA_I = 0x01,
MSG_CHAR_HIRAGANA_U = 0x02,
MSG_CHAR_HIRAGANA_E = 0x03,
MSG_CHAR_HIRAGANA_O = 0x04,
MSG_CHAR_HIRAGANA_KA = 0x05,
MSG_CHAR_HIRAGANA_KI = 0x06,
MSG_CHAR_HIRAGANA_KU = 0x07,
MSG_CHAR_HIRAGANA_KE = 0x08,
MSG_CHAR_HIRAGANA_KO = 0x09,
MSG_CHAR_HIRAGANA_SA = 0x0A,
MSG_CHAR_HIRAGANA_SI = 0x0B,
MSG_CHAR_HIRAGANA_SU = 0x0C,
MSG_CHAR_HIRAGANA_SE = 0x0D,
MSG_CHAR_HIRAGANA_SO = 0x0E,
MSG_CHAR_HIRAGANA_TA = 0x0F,
MSG_CHAR_HIRAGANA_TI = 0x10,
MSG_CHAR_HIRAGANA_TU = 0x11,
MSG_CHAR_HIRAGANA_TE = 0x12,
MSG_CHAR_HIRAGANA_TO = 0x13,
MSG_CHAR_HIRAGANA_NA = 0x14,
MSG_CHAR_HIRAGANA_NI = 0x15,
MSG_CHAR_HIRAGANA_NU = 0x16,
MSG_CHAR_HIRAGANA_NE = 0x17,
MSG_CHAR_HIRAGANA_NO = 0x18,
MSG_CHAR_HIRAGANA_HA = 0x19,
MSG_CHAR_HIRAGANA_HI = 0x1A,
MSG_CHAR_HIRAGANA_HU = 0x1B,
MSG_CHAR_HIRAGANA_HE = 0x1C,
MSG_CHAR_HIRAGANA_HO = 0x1D,
MSG_CHAR_HIRAGANA_MA = 0x1E,
MSG_CHAR_HIRAGANA_MI = 0x1F,
MSG_CHAR_HIRAGANA_MU = 0x20,
MSG_CHAR_HIRAGANA_ME = 0x21,
MSG_CHAR_HIRAGANA_MO = 0x22,
MSG_CHAR_HIRAGANA_YA = 0x23,
MSG_CHAR_HIRAGANA_YU = 0x24,
MSG_CHAR_HIRAGANA_YO = 0x25,
MSG_CHAR_HIRAGANA_RA = 0x26,
MSG_CHAR_HIRAGANA_RI = 0x27,
MSG_CHAR_HIRAGANA_RU = 0x28,
MSG_CHAR_HIRAGANA_RE = 0x29,
MSG_CHAR_HIRAGANA_RO = 0x2A,
MSG_CHAR_HIRAGANA_WA = 0x2B,
MSG_CHAR_HIRAGANA_WO = 0x2C,
MSG_CHAR_HIRAGANA_N = 0x2D,
MSG_CHAR_HIRAGANA_VU = 0x2E,
MSG_CHAR_HIRAGANA_GA = 0x2F,
MSG_CHAR_HIRAGANA_GI = 0x30,
MSG_CHAR_HIRAGANA_GU = 0x31,
MSG_CHAR_HIRAGANA_GE = 0x32,
MSG_CHAR_HIRAGANA_GO = 0x33,
MSG_CHAR_HIRAGANA_ZA = 0x34,
MSG_CHAR_HIRAGANA_ZI = 0x35,
MSG_CHAR_HIRAGANA_ZU = 0x36,
MSG_CHAR_HIRAGANA_ZE = 0x37,
MSG_CHAR_HIRAGANA_ZO = 0x38,
MSG_CHAR_HIRAGANA_DA = 0x39,
MSG_CHAR_HIRAGANA_DI = 0x3A,
MSG_CHAR_HIRAGANA_DU = 0x3B,
MSG_CHAR_HIRAGANA_DE = 0x3C,
MSG_CHAR_HIRAGANA_DO = 0x3D,
MSG_CHAR_HIRAGANA_BA = 0x3E,
MSG_CHAR_HIRAGANA_BI = 0x3F,
MSG_CHAR_HIRAGANA_BU = 0x40,
MSG_CHAR_HIRAGANA_BE = 0x41,
MSG_CHAR_HIRAGANA_BO = 0x42,
MSG_CHAR_HIRAGANA_PA = 0x43,
MSG_CHAR_HIRAGANA_PI = 0x44,
MSG_CHAR_HIRAGANA_PU = 0x45,
MSG_CHAR_HIRAGANA_PE = 0x46,
MSG_CHAR_HIRAGANA_PO = 0x47,
MSG_CHAR_HIRAGANA_SMALL_A = 0x48,
MSG_CHAR_HIRAGANA_SMALL_I = 0x49,
MSG_CHAR_HIRAGANA_SMALL_U = 0x4A,
MSG_CHAR_HIRAGANA_SMALL_E = 0x4B,
MSG_CHAR_HIRAGANA_SMALL_O = 0x4C,
MSG_CHAR_HIRAGANA_SMALL_TU = 0x4D,
MSG_CHAR_HIRAGANA_SMALL_YA = 0x4E,
MSG_CHAR_HIRAGANA_SMALL_YU = 0x4F,
MSG_CHAR_HIRAGANA_SMALL_YO = 0x50,
MSG_CHAR_KATAKANA_A = 0x51,
MSG_CHAR_KATAKANA_I = 0x52,
MSG_CHAR_KATAKANA_U = 0x53,
MSG_CHAR_KATAKANA_E = 0x54,
MSG_CHAR_KATAKANA_O = 0x55,
MSG_CHAR_KATAKANA_KA = 0x56,
MSG_CHAR_KATAKANA_KI = 0x57,
MSG_CHAR_KATAKANA_KU = 0x58,
MSG_CHAR_KATAKANA_KE = 0x59,
MSG_CHAR_KATAKANA_KO = 0x5A,
MSG_CHAR_KATAKANA_SA = 0x5B,
MSG_CHAR_KATAKANA_SI = 0x5C,
MSG_CHAR_KATAKANA_SU = 0x5D,
MSG_CHAR_KATAKANA_SE = 0x5E,
MSG_CHAR_KATAKANA_SO = 0x5F,
MSG_CHAR_KATAKANA_TA = 0x60,
MSG_CHAR_KATAKANA_TI = 0x61,
MSG_CHAR_KATAKANA_TU = 0x62,
MSG_CHAR_KATAKANA_TE = 0x63,
MSG_CHAR_KATAKANA_TO = 0x64,
MSG_CHAR_KATAKANA_NA = 0x65,
MSG_CHAR_KATAKANA_NI = 0x66,
MSG_CHAR_KATAKANA_NU = 0x67,
MSG_CHAR_KATAKANA_NE = 0x68,
MSG_CHAR_KATAKANA_NO = 0x69,
MSG_CHAR_KATAKANA_HA = 0x6A,
MSG_CHAR_KATAKANA_HI = 0x6B,
MSG_CHAR_KATAKANA_HU = 0x6C,
MSG_CHAR_KATAKANA_HE = 0x6D,
MSG_CHAR_KATAKANA_HO = 0x6E,
MSG_CHAR_KATAKANA_MA = 0x6F,
MSG_CHAR_KATAKANA_MI = 0x70,
MSG_CHAR_KATAKANA_MU = 0x71,
MSG_CHAR_KATAKANA_ME = 0x72,
MSG_CHAR_KATAKANA_MO = 0x73,
MSG_CHAR_KATAKANA_YA = 0x74,
MSG_CHAR_KATAKANA_YU = 0x75,
MSG_CHAR_KATAKANA_YO = 0x76,
MSG_CHAR_KATAKANA_RA = 0x77,
MSG_CHAR_KATAKANA_RI = 0x78,
MSG_CHAR_KATAKANA_RU = 0x79,
MSG_CHAR_KATAKANA_RE = 0x7A,
MSG_CHAR_KATAKANA_RO = 0x7B,
MSG_CHAR_KATAKANA_WA = 0x7C,
MSG_CHAR_KATAKANA_WO = 0x7D,
MSG_CHAR_KATAKANA_N = 0x7E,
MSG_CHAR_KATAKANA_VU = 0x7F,
MSG_CHAR_KATAKANA_GA = 0x80,
MSG_CHAR_KATAKANA_GI = 0x81,
MSG_CHAR_KATAKANA_GU = 0x82,
MSG_CHAR_KATAKANA_GE = 0x83,
MSG_CHAR_KATAKANA_GO = 0x84,
MSG_CHAR_KATAKANA_ZA = 0x85,
MSG_CHAR_KATAKANA_ZI = 0x86,
MSG_CHAR_KATAKANA_ZU = 0x87,
MSG_CHAR_KATAKANA_ZE = 0x88,
MSG_CHAR_KATAKANA_ZO = 0x89,
MSG_CHAR_KATAKANA_DA = 0x8A,
MSG_CHAR_KATAKANA_DI = 0x8B,
MSG_CHAR_KATAKANA_DU = 0x8C,
MSG_CHAR_KATAKANA_DE = 0x8D,
MSG_CHAR_KATAKANA_DO = 0x8E,
MSG_CHAR_KATAKANA_BA = 0x8F,
MSG_CHAR_KATAKANA_BI = 0x90,
MSG_CHAR_KATAKANA_BU = 0x91,
MSG_CHAR_KATAKANA_BE = 0x92,
MSG_CHAR_KATAKANA_BO = 0x93,
MSG_CHAR_KATAKANA_PA = 0x94,
MSG_CHAR_KATAKANA_PI = 0x95,
MSG_CHAR_KATAKANA_PU = 0x96,
MSG_CHAR_KATAKANA_PE = 0x97,
MSG_CHAR_KATAKANA_PO = 0x98,
MSG_CHAR_KATAKANA_SMALL_A = 0x99,
MSG_CHAR_KATAKANA_SMALL_I = 0x9A,
MSG_CHAR_KATAKANA_SMALL_U = 0x9B,
MSG_CHAR_KATAKANA_SMALL_E = 0x9C,
MSG_CHAR_KATAKANA_SMALL_O = 0x9D,
MSG_CHAR_KATAKANA_SMALL_TU = 0x9E,
MSG_CHAR_KATAKANA_SMALL_YA = 0x9F,
MSG_CHAR_KATAKANA_SMALL_YU = 0xA0,
MSG_CHAR_KATAKANA_SMALL_YO = 0xA1,
MSG_CHAR_PROLONGED_SOUND = 0xA2,
MSG_CHAR_TILDE = 0xA3,
MSG_CHAR_LONGDASH_0 = 0xA4,
MSG_CHAR_LONGDASH_1 = 0xA5,
MSG_CHAR_LONGDASH_2 = 0xA6,
MSG_CHAR_DIGIT_0 = 0xA7,
MSG_CHAR_DIGIT_1 = 0xA8,
MSG_CHAR_DIGIT_2 = 0xA9,
MSG_CHAR_DIGIT_3 = 0xAA,
MSG_CHAR_DIGIT_4 = 0xAB,
MSG_CHAR_DIGIT_5 = 0xAC,
MSG_CHAR_DIGIT_6 = 0xAD,
MSG_CHAR_DIGIT_7 = 0xAE,
MSG_CHAR_DIGIT_8 = 0xAF,
MSG_CHAR_DIGIT_9 = 0xB0,
MSG_CHAR_UP = 0xB1,
MSG_CHAR_DOWN = 0xB2,
MSG_CHAR_LEFT = 0xB3,
MSG_CHAR_RIGHT = 0xB4,
MSG_CHAR_EXCLAMATION = 0xB5,
MSG_CHAR_QUESTION = 0xB6,
MSG_CHAR_PLUS = 0xB7,
MSG_CHAR_MINUS = 0xB8,
MSG_CHAR_FORWARDSLASH = 0xB9,
MSG_CHAR_PERIOD = 0xBA,
MSG_CHAR_AND = 0xBB,
MSG_CHAR_HASH = 0xBC,
MSG_CHAR_HEART = 0xBD,
MSG_CHAR_STAR = 0xBE,
MSG_CHAR_LPAREN = 0xBF,
MSG_CHAR_RPAREN = 0xC0,
MSG_CHAR_TLBRACKET = 0xC1,
MSG_CHAR_BRBRACKET = 0xC2,
MSG_CHAR_MIDDLE_DOT = 0xC3,
MSG_CHAR_HIRAGANA_SMALL_N = 0xC4,
MSG_CHAR_KATAKANA_SMALL_N = 0xC5,
MSG_CHAR_KANJI_C6 = 0xC6,
MSG_CHAR_KANJI_C7 = 0xC7,
// Variant 1 - Latin Alphabet
MSG_CHAR_UPPER_A = 0x00,
MSG_CHAR_UPPER_B = 0x01,
MSG_CHAR_UPPER_C = 0x02,
MSG_CHAR_UPPER_D = 0x03,
MSG_CHAR_UPPER_E = 0x04,
MSG_CHAR_UPPER_F = 0x05,
MSG_CHAR_UPPER_G = 0x06,
MSG_CHAR_UPPER_H = 0x07,
MSG_CHAR_UPPER_I = 0x08,
MSG_CHAR_UPPER_J = 0x09,
MSG_CHAR_UPPER_K = 0x0A,
MSG_CHAR_UPPER_L = 0x0B,
MSG_CHAR_UPPER_M = 0x0C,
MSG_CHAR_UPPER_N = 0x0D,
MSG_CHAR_UPPER_O = 0x0E,
MSG_CHAR_UPPER_P = 0x0F,
MSG_CHAR_UPPER_Q = 0x10,
MSG_CHAR_UPPER_R = 0x11,
MSG_CHAR_UPPER_S = 0x12,
MSG_CHAR_UPPER_T = 0x13,
MSG_CHAR_UPPER_U = 0x14,
MSG_CHAR_UPPER_V = 0x15,
MSG_CHAR_UPPER_W = 0x16,
MSG_CHAR_UPPER_X = 0x17,
MSG_CHAR_UPPER_Y = 0x18,
MSG_CHAR_UPPER_Z = 0x19,
MSG_CHAR_LOWER_Z = 0x1A,
// Variant 2 - Kanji (Chinese) characters
MSG_CHAR_KANJI_00 = 0x00,
MSG_CHAR_KANJI_01 = 0x01,
MSG_CHAR_KANJI_02 = 0x02,
MSG_CHAR_KANJI_03 = 0x03,
MSG_CHAR_KANJI_04 = 0x04,
MSG_CHAR_KANJI_05 = 0x05,
MSG_CHAR_KANJI_06 = 0x06,
MSG_CHAR_KANJI_07 = 0x07,
MSG_CHAR_KANJI_08 = 0x08,
MSG_CHAR_KANJI_09 = 0x09,
MSG_CHAR_KANJI_0A = 0x0A,
MSG_CHAR_KANJI_0B = 0x0B,
MSG_CHAR_KANJI_0C = 0x0C,
MSG_CHAR_KANJI_0D = 0x0D,
MSG_CHAR_KANJI_0E = 0x0E,
MSG_CHAR_KANJI_0F = 0x0F,
MSG_CHAR_KANJI_10 = 0x10,
MSG_CHAR_KANJI_11 = 0x11,
MSG_CHAR_KANJI_12 = 0x12,
MSG_CHAR_KANJI_13 = 0x13,
MSG_CHAR_KANJI_14 = 0x14,
MSG_CHAR_KANJI_15 = 0x15,
MSG_CHAR_KANJI_16 = 0x16,
MSG_CHAR_KANJI_17 = 0x17,
MSG_CHAR_KANJI_18 = 0x18,
MSG_CHAR_KANJI_19 = 0x19,
MSG_CHAR_KANJI_1A = 0x1A,
MSG_CHAR_KANJI_1B = 0x1B,
MSG_CHAR_KANJI_1C = 0x1C,
MSG_CHAR_KANJI_1D = 0x1D,
MSG_CHAR_KANJI_1E = 0x1E,
MSG_CHAR_KANJI_1F = 0x1F,
MSG_CHAR_KANJI_20 = 0x20,
MSG_CHAR_KANJI_21 = 0x21,
MSG_CHAR_KANJI_22 = 0x22,
MSG_CHAR_KANJI_23 = 0x23,
MSG_CHAR_KANJI_24 = 0x24,
MSG_CHAR_KANJI_25 = 0x25,
MSG_CHAR_KANJI_26 = 0x26,
MSG_CHAR_KANJI_27 = 0x27,
MSG_CHAR_KANJI_28 = 0x28,
MSG_CHAR_KANJI_29 = 0x29,
MSG_CHAR_KANJI_2A = 0x2A,
MSG_CHAR_KANJI_2B = 0x2B,
MSG_CHAR_KANJI_2C = 0x2C,
MSG_CHAR_KANJI_2D = 0x2D,
MSG_CHAR_KANJI_2E = 0x2E,
MSG_CHAR_KANJI_2F = 0x2F,
MSG_CHAR_KANJI_30 = 0x30,
MSG_CHAR_KANJI_31 = 0x31,
MSG_CHAR_KANJI_32 = 0x32,
MSG_CHAR_KANJI_33 = 0x33,
MSG_CHAR_KANJI_34 = 0x34,
MSG_CHAR_KANJI_35 = 0x35,
MSG_CHAR_KANJI_36 = 0x36,
MSG_CHAR_KANJI_37 = 0x37,
MSG_CHAR_KANJI_38 = 0x38,
MSG_CHAR_KANJI_39 = 0x39,
MSG_CHAR_KANJI_3A = 0x3A,
MSG_CHAR_KANJI_3B = 0x3B,
MSG_CHAR_KANJI_3C = 0x3C,
MSG_CHAR_KANJI_3D = 0x3D,
MSG_CHAR_KANJI_3E = 0x3E,
MSG_CHAR_KANJI_3F = 0x3F,
MSG_CHAR_KANJI_40 = 0x40,
MSG_CHAR_KANJI_41 = 0x41,
MSG_CHAR_KANJI_42 = 0x42,
MSG_CHAR_KANJI_43 = 0x43,
MSG_CHAR_KANJI_44 = 0x44,
MSG_CHAR_KANJI_45 = 0x45,
MSG_CHAR_KANJI_46 = 0x46,
MSG_CHAR_KANJI_47 = 0x47,
MSG_CHAR_KANJI_48 = 0x48,
MSG_CHAR_KANJI_49 = 0x49,
MSG_CHAR_KANJI_4A = 0x4A,
MSG_CHAR_KANJI_4B = 0x4B,
MSG_CHAR_KANJI_4C = 0x4C,
MSG_CHAR_KANJI_4D = 0x4D,
MSG_CHAR_KANJI_4E = 0x4E,
MSG_CHAR_KANJI_4F = 0x4F,
MSG_CHAR_KANJI_50 = 0x50,
MSG_CHAR_KANJI_51 = 0x51,
MSG_CHAR_KANJI_52 = 0x52,
MSG_CHAR_KANJI_53 = 0x53,
MSG_CHAR_KANJI_54 = 0x54,
MSG_CHAR_KANJI_55 = 0x55,
MSG_CHAR_KANJI_56 = 0x56,
MSG_CHAR_KANJI_57 = 0x57,
MSG_CHAR_KANJI_58 = 0x58,
MSG_CHAR_KANJI_59 = 0x59,
MSG_CHAR_KANJI_5A = 0x5A,
MSG_CHAR_KANJI_5B = 0x5B,
MSG_CHAR_KANJI_5C = 0x5C,
MSG_CHAR_KANJI_5D = 0x5D,
MSG_CHAR_KANJI_5E = 0x5E,
MSG_CHAR_KANJI_5F = 0x5F,
MSG_CHAR_KANJI_60 = 0x60,
MSG_CHAR_CIRCLE = 0x61,
MSG_CHAR_CROSS = 0x62,
MSG_CHAR_KANJI_63 = 0x63,
MSG_CHAR_KANJI_64 = 0x64,
MSG_CHAR_KANJI_65 = 0x65,
MSG_CHAR_KANJI_66 = 0x66,
MSG_CHAR_KANJI_67 = 0x67,
MSG_CHAR_KANJI_68 = 0x68,
MSG_CHAR_KANJI_69 = 0x69,
MSG_CHAR_NOTE = 0x6A,
MSG_CHAR_KANJI_6B = 0x6B,
MSG_CHAR_KANJI_6C = 0x6C,
MSG_CHAR_KANJI_6D = 0x6D,
MSG_CHAR_KANJI_6E = 0x6E,
MSG_CHAR_KANJI_6F = 0x6F,
MSG_CHAR_KANJI_70 = 0x70,
MSG_CHAR_KANJI_71 = 0x71,
MSG_CHAR_KANJI_72 = 0x72,
MSG_CHAR_KANJI_73 = 0x73,
MSG_CHAR_KANJI_74 = 0x74,
MSG_CHAR_KANJI_75 = 0x75,
MSG_CHAR_KANJI_76 = 0x76,
MSG_CHAR_KANJI_77 = 0x77,
MSG_CHAR_LOWER_X = 0x78,
// Variant 3 - N64 Button Icons
MSG_CHAR_BUTTON_A = 0x00,
MSG_CHAR_BUTTON_B = 0x01,
MSG_CHAR_BUTTON_START = 0x02,
MSG_CHAR_BUTTON_C_UP = 0x03,
MSG_CHAR_BUTTON_C_DOWN = 0x04,
MSG_CHAR_BUTTON_C_LEFT = 0x05,
MSG_CHAR_BUTTON_C_RIGHT = 0x06,
MSG_CHAR_BUTTON_Z = 0x07,
MSG_CHAR_BUTTON_L = 0x08,
MSG_CHAR_BUTTON_R = 0x09,
#else
MSG_CHAR_NOTE = 0x00,
MSG_CHAR_EXCLAMTION = 0x01,
MSG_CHAR_BACKSLASH = 0x02,
@ -5611,6 +5978,7 @@ enum MsgChars {
MSG_CHAR_SINGLE_QUOTE_OPEN = 0xA4,
MSG_CHAR_SINGLE_QUOTE_CLOSE = 0xA5,
// 0xA6 to 0xEF are unused
#endif
#if VERSION_IQUE
// All US characters are in the rom, but their range is used for multibyte characters

View File

@ -10,6 +10,8 @@
#define SPRITE_ROM_START 0x1943000 + 0x10
#elif VERSION_PAL
#define SPRITE_ROM_START 0x1DF0000 + 0x10
#elif VERSION_JP
#define SPRITE_ROM_START 0x1A40000 + 0x10
#endif
extern s32 spr_allocateBtlComponentsOnWorldHeap;

View File

@ -17,6 +17,33 @@ extern HudScript HES_PartnerRank2B;
HudScript* D_80109890[] = { &HES_PartnerRank1A, &HES_PartnerRank2A };
HudScript* D_80109898[] = { &HES_PartnerRank1B, &HES_PartnerRank2B };
#if VERSION_JP
#define WINDOW_KEY_WIDTH 242
#define ALREADY_PARTNER_HEIGHT 32
#define EMPTY_BAR_X 67
#define DIARY_PAGE_X 0
#define PARTNER_LIST_X1 50
#define PARTNER_LIST_X2 66
#define BADGE_PRICE_X 108
#define ITEM_PRICE_X 106
#define MENU_OFFSET_Y1 9
#define MENU_OFFSET_Y2 7
#define POPUP_PARTNER_WIDTH 80
#else
#define WINDOW_KEY_WIDTH 280
#define ALREADY_PARTNER_HEIGHT 40
#define EMPTY_BAR_X 73
#define DIARY_PAGE_X 8
#define PARTNER_LIST_X1 85
#define PARTNER_LIST_X2 91
#define BADGE_PRICE_X 115
#define ITEM_PRICE_X 121
#define MENU_OFFSET_Y1 8
#define MENU_OFFSET_Y2 6
#define POPUP_PARTNER_WIDTH 100
#endif
#if !VERSION_JP
s16 PopupWorldStartX[] = {
[POPUP_MENU_USE_ITEM] 140,
[POPUP_MENU_SWITCH_PARTNER] 140,
@ -50,6 +77,7 @@ s16 PopupContentScissorWidths[] = {
[POPUP_MENU_USEKEY] 137,
[POPUP_MENU_POST_OFFICE] 137,
};
#endif
SHIFT_BSS s32 gPopupState;
SHIFT_BSS s32 D_8010D644;
@ -339,19 +367,62 @@ s32 popup_menu_update(void) {
switch (gPopupState) {
case POPUP_STATE_INIT:
#if VERSION_JP
D_8010D67C = 32;
D_8010D67E = 72;
D_8010D680 = 32;
PopupMenu_StarPieceCounterPosX = 32;
#else
D_8010D67C = 20;
D_8010D67E = 72;
D_8010D680 = 20;
#endif
D_8010D682 = 186;
D_8010D684 = 16;
D_8010D686 = 88;
#if !VERSION_JP
PopupMenu_StarPieceCounterPosX = 32;
#endif
PopupMenu_StarPieceCounterPosY = 164;
if (PopupNotBattle) {
#if VERSION_JP
switch (gPopupMenu->popupType) {
case POPUP_MENU_USE_ITEM:
case POPUP_MENU_THROW_AWAY_ITEM:
case POPUP_MENU_CHECK_ITEM:
case POPUP_MENU_CLAIM_ITEM:
case POPUP_MENU_READ_LETTER:
case POPUP_MENU_TAKE_FROM_CHEST:
case POPUP_MENU_USEKEY:
D_8010D67C += 144;
break;
case POPUP_MENU_TRADE_FOR_BADGE:
D_8010D67C += 122;
break;
case POPUP_MENU_UPGRADE_PARTNER:
D_8010D67C += 134;
break;
case POPUP_MENU_SELL_ITEM:
D_8010D67C += 122;
break;
case POPUP_MENU_SWITCH_PARTNER:
case POPUP_MENU_READ_DIARY_PAGE:
case POPUP_MENU_READ_POSTCARD:
case POPUP_MENU_POST_OFFICE:
D_8010D67C += 160;
break;
}
#else
D_8010D67C = PopupWorldStartX[gPopupMenu->popupType] + 20;
#endif
}
if (PopupMenu_MaxDisplayableEntryCount >= 7) {
#if VERSION_JP
D_8010D67E -= 10;
#else
D_8010D67E = 62;
#endif
}
D_8010D68C = 0;
elementID = hud_element_create(&HES_EmptyBar);
@ -540,6 +611,68 @@ s32 popup_menu_update(void) {
set_window_update(WINDOW_ID_15, 2);
set_window_update(WINDOW_ID_17, 1);
}
#elif VERSION_JP
switch (gPopupMenu->popupType) {
case POPUP_MENU_USE_ITEM:
case POPUP_MENU_THROW_AWAY_ITEM:
case POPUP_MENU_CHECK_ITEM:
case POPUP_MENU_CLAIM_ITEM:
case POPUP_MENU_TAKE_FROM_CHEST:
case POPUP_MENU_USEKEY:
set_window_properties(WINDOW_ID_14, posX, posY, 130, (PopupMenu_DisplayedEntryCount * LINE_HEIGHT) + 26, WINDOW_PRIORITY_20, popup_menu_draw_menu_contents, NULL, -1);
set_window_properties(WINDOW_ID_15, 12, -6, 106, 16, WINDOW_PRIORITY_21, popup_menu_draw_title_contents, NULL, WINDOW_ID_14);
set_window_update(WINDOW_ID_15, WINDOW_UPDATE_SHOW);
set_window_update(WINDOW_ID_17, WINDOW_UPDATE_HIDE);
break;
case POPUP_MENU_SWITCH_PARTNER:
set_window_properties(WINDOW_ID_14, posX, posY, 104, (PopupMenu_DisplayedEntryCount * LINE_HEIGHT) + 26, WINDOW_PRIORITY_20, popup_menu_draw_menu_contents, NULL, -1);
set_window_properties(WINDOW_ID_17, 14, -6, 72, 16, WINDOW_PRIORITY_21, popup_menu_draw_title_contents, NULL, WINDOW_ID_14);
set_window_update(WINDOW_ID_15, WINDOW_UPDATE_HIDE);
set_window_update(WINDOW_ID_17, WINDOW_UPDATE_SHOW);
break;
case POPUP_MENU_TRADE_FOR_BADGE:
set_window_properties(WINDOW_ID_14, posX, posY, 152, (PopupMenu_DisplayedEntryCount * LINE_HEIGHT) + 26, WINDOW_PRIORITY_20, popup_menu_draw_menu_contents, NULL, -1);
set_window_properties(WINDOW_ID_15, 12, -6, 106, 16, WINDOW_PRIORITY_21, popup_menu_draw_title_contents, NULL, WINDOW_ID_14);
set_window_update(WINDOW_ID_15, WINDOW_UPDATE_SHOW);
set_window_update(WINDOW_ID_17, WINDOW_UPDATE_HIDE);
break;
case POPUP_MENU_UPGRADE_PARTNER:
set_window_properties(WINDOW_ID_14, posX, posY, 126, (PopupMenu_DisplayedEntryCount * LINE_HEIGHT) + 26, WINDOW_PRIORITY_20, popup_menu_draw_menu_contents, NULL, -1);
set_window_properties(WINDOW_ID_17, 12, -6, 66, 16, WINDOW_PRIORITY_21, popup_menu_draw_title_contents, NULL, WINDOW_ID_14);
set_window_update(WINDOW_ID_15, WINDOW_UPDATE_HIDE);
set_window_update(WINDOW_ID_17, WINDOW_UPDATE_SHOW);
break;
case POPUP_MENU_SELL_ITEM:
set_window_properties(WINDOW_ID_14, posX, posY, 152, (PopupMenu_DisplayedEntryCount * LINE_HEIGHT) + 26, WINDOW_PRIORITY_20, popup_menu_draw_menu_contents, NULL, -1);
set_window_properties(WINDOW_ID_15, 12, -6, 106, 16, WINDOW_PRIORITY_21, popup_menu_draw_title_contents, NULL, WINDOW_ID_14);
set_window_update(WINDOW_ID_15, WINDOW_UPDATE_SHOW);
set_window_update(WINDOW_ID_17, WINDOW_UPDATE_HIDE);
break;
case POPUP_MENU_READ_LETTER:
set_window_properties(WINDOW_ID_14, posX, posY, 120, (PopupMenu_DisplayedEntryCount * LINE_HEIGHT) + 26, WINDOW_PRIORITY_20, popup_menu_draw_menu_contents, NULL, -1);
set_window_properties(WINDOW_ID_15, 24, -6, 72, 16, WINDOW_PRIORITY_21, popup_menu_draw_title_contents, NULL, WINDOW_ID_14);
set_window_update(WINDOW_ID_15, WINDOW_UPDATE_SHOW);
set_window_update(WINDOW_ID_17, WINDOW_UPDATE_HIDE);
break;
case POPUP_MENU_READ_DIARY_PAGE:
set_window_properties(WINDOW_ID_14, posX, posY, 108, (PopupMenu_DisplayedEntryCount * LINE_HEIGHT) + 26, WINDOW_PRIORITY_20, popup_menu_draw_menu_contents, NULL, -1);
set_window_properties(WINDOW_ID_15, 12, -6, 84, 16, WINDOW_PRIORITY_21, popup_menu_draw_title_contents, NULL, WINDOW_ID_14);
set_window_update(WINDOW_ID_15, WINDOW_UPDATE_SHOW);
set_window_update(WINDOW_ID_17, WINDOW_UPDATE_HIDE);
break;
case POPUP_MENU_READ_POSTCARD:
set_window_properties(WINDOW_ID_14, posX, posY, 124, (PopupMenu_DisplayedEntryCount * LINE_HEIGHT) + 26, WINDOW_PRIORITY_20, popup_menu_draw_menu_contents, NULL, -1);
set_window_properties(WINDOW_ID_15, 12, -6, 100, 16, WINDOW_PRIORITY_21, popup_menu_draw_title_contents, NULL, WINDOW_ID_14);
set_window_update(WINDOW_ID_15, WINDOW_UPDATE_SHOW);
set_window_update(WINDOW_ID_17, WINDOW_UPDATE_HIDE);
break;
case POPUP_MENU_POST_OFFICE:
set_window_properties(WINDOW_ID_14, posX, posY, 96, (PopupMenu_DisplayedEntryCount * LINE_HEIGHT) + 26, WINDOW_PRIORITY_20, popup_menu_draw_menu_contents, NULL, -1);
set_window_properties(WINDOW_ID_17, 10, -6, 72, 16, WINDOW_PRIORITY_21, popup_menu_draw_title_contents, NULL, WINDOW_ID_14);
set_window_update(WINDOW_ID_15, WINDOW_UPDATE_HIDE);
set_window_update(WINDOW_ID_17, WINDOW_UPDATE_SHOW);
break;
}
#else
switch (gPopupMenu->popupType) {
case POPUP_MENU_USE_ITEM:
@ -613,6 +746,19 @@ s32 popup_menu_update(void) {
}
#endif
#if VERSION_JP
switch (gPopupMenu->popupType) {
case POPUP_MENU_UPGRADE_PARTNER:
set_window_properties(WINDOW_ID_18, 84, -6, 40, 16, WINDOW_PRIORITY_21, popup_draw_cost_icon, NULL, WINDOW_ID_14);
break;
case POPUP_MENU_TRADE_FOR_BADGE:
set_window_properties(WINDOW_ID_16, 116, -14, 32, 32, WINDOW_PRIORITY_21, popup_draw_cost_icon, NULL, WINDOW_ID_14);
break;
case POPUP_MENU_SELL_ITEM:
set_window_properties(WINDOW_ID_16, 116, -14, 32, 32, WINDOW_PRIORITY_21, popup_draw_cost_icon, NULL, WINDOW_ID_14);
break;
}
#else
switch (gPopupMenu->popupType) {
case POPUP_MENU_TRADE_FOR_BADGE:
set_window_properties(WINDOW_ID_16, 126, -14, 32, 32, WINDOW_PRIORITY_21, popup_draw_cost_icon, NULL, WINDOW_ID_14);
@ -621,6 +767,7 @@ s32 popup_menu_update(void) {
set_window_properties(WINDOW_ID_16, 131, -14, 32, 32, WINDOW_PRIORITY_21, popup_draw_cost_icon, NULL, WINDOW_ID_14);
break;
}
#endif
if (gPopupMenu->popupType == POPUP_MENU_TRADE_FOR_BADGE) {
posX = PopupMenu_StarPieceCounterPosX;
@ -650,7 +797,7 @@ s32 popup_menu_update(void) {
{
posX = D_8010D680;
posY = D_8010D682;
set_window_properties(WINDOW_ID_19, posX, posY, 280, 32, WINDOW_PRIORITY_20, func_800F48F4, NULL, -1);
set_window_properties(WINDOW_ID_19, posX, posY, WINDOW_KEY_WIDTH, 32, WINDOW_PRIORITY_20, func_800F48F4, NULL, -1);
}
posX = D_8010D684;
@ -664,6 +811,40 @@ s32 popup_menu_update(void) {
set_window_properties(WINDOW_ID_21, posX, posY, gPopupMenu->unk_340 + 144, height, WINDOW_PRIORITY_20, func_800F4944, NULL, -1);
#else
switch (gPopupMenu->popupType) {
#if VERSION_JP
case POPUP_MENU_USE_ITEM:
case POPUP_MENU_SWITCH_PARTNER:
case POPUP_MENU_THROW_AWAY_ITEM:
case POPUP_MENU_CHECK_ITEM:
case POPUP_MENU_CLAIM_ITEM:
case POPUP_MENU_READ_LETTER:
case POPUP_MENU_TAKE_FROM_CHEST:
case POPUP_MENU_READ_DIARY_PAGE:
case POPUP_MENU_READ_POSTCARD:
case POPUP_MENU_USEKEY:
case POPUP_MENU_POST_OFFICE:
switch (gPopupMenu->dipMode) {
case 0:
set_window_properties(WINDOW_ID_21, D_8010D684, D_8010D686, 152, 32, WINDOW_PRIORITY_20, func_800F4944, NULL, -1);
break;
case 1:
set_window_properties(WINDOW_ID_21, D_8010D684, D_8010D686, 152, 32, WINDOW_PRIORITY_20, func_800F4944, NULL, -1);
break;
case 2:
set_window_properties(WINDOW_ID_21, D_8010D684, D_8010D686, 152, 32, WINDOW_PRIORITY_20, func_800F4944, NULL, -1);
break;
}
break;
case POPUP_MENU_TRADE_FOR_BADGE:
set_window_properties(WINDOW_ID_21, D_8010D684, D_8010D686, 136, 32, WINDOW_PRIORITY_20, func_800F4944, NULL, -1);
break;
case POPUP_MENU_UPGRADE_PARTNER:
set_window_properties(WINDOW_ID_21, D_8010D684, D_8010D686, 136, 48, WINDOW_PRIORITY_20, func_800F4944, NULL, -1);
break;
case POPUP_MENU_SELL_ITEM:
set_window_properties(WINDOW_ID_21, D_8010D684, D_8010D686, 120, 32, WINDOW_PRIORITY_20, func_800F4944, NULL, -1);
break;
#else
case POPUP_MENU_USE_ITEM:
case POPUP_MENU_CHECK_ITEM:
case POPUP_MENU_CLAIM_ITEM:
@ -690,6 +871,7 @@ s32 popup_menu_update(void) {
case POPUP_MENU_SELL_ITEM:
set_window_properties(WINDOW_ID_21, posX, posY, 120, 32, WINDOW_PRIORITY_20, func_800F4944, NULL, -1);
break;
#endif
}
#endif
@ -1041,7 +1223,7 @@ s32 popup_menu_update(void) {
set_window_properties(WINDOW_ID_BATTLE_POPUP, 160 - (width / 2), posY, width, 40, WINDOW_PRIORITY_20, popup_draw_already_have_partner, NULL, -1);
#else
width = get_msg_width(MSG_Menus_006B, 0) + 23;
set_window_properties(WINDOW_ID_BATTLE_POPUP, 160 - (width / 2), 80, width, 40, WINDOW_PRIORITY_20, popup_draw_already_have_partner, NULL, -1);
set_window_properties(WINDOW_ID_BATTLE_POPUP, 160 - (width / 2), 80, width, ALREADY_PARTNER_HEIGHT, WINDOW_PRIORITY_20, popup_draw_already_have_partner, NULL, -1);
#endif
set_window_update(WINDOW_ID_BATTLE_POPUP, WINDOW_UPDATE_SHOW);
D_8010D644 = 60;
@ -1267,6 +1449,9 @@ void popup_menu_draw_menu_contents(s32* userData, s32 baseX, s32 baseY, s32 widt
y1 = y + PopupMenu_DisplayedEntryCount * LINE_HEIGHT + 4;
switch (gPopupMenu->popupType) {
case POPUP_MENU_USE_ITEM:
#if VERSION_JP
case POPUP_MENU_THROW_AWAY_ITEM:
#endif
case POPUP_MENU_TRADE_FOR_BADGE:
case POPUP_MENU_SELL_ITEM:
case POPUP_MENU_CHECK_ITEM:
@ -1283,9 +1468,11 @@ void popup_menu_draw_menu_contents(s32* userData, s32 baseX, s32 baseY, s32 widt
case POPUP_MENU_UPGRADE_PARTNER:
gDPSetScissor(gMainGfxPos++, G_SC_NON_INTERLACE, x, y, x + 90, y1);
break;
#if !VERSION_JP
case POPUP_MENU_THROW_AWAY_ITEM:
gDPSetScissor(gMainGfxPos++, G_SC_NON_INTERLACE, x, y, x + 160, y1);
break;
#endif
}
y = baseY + D_8010D658 + 8;
@ -1293,7 +1480,7 @@ void popup_menu_draw_menu_contents(s32* userData, s32 baseX, s32 baseY, s32 widt
y = baseY + D_8010D658 + 21;
}
id = PopupMenu_EmptybarHEID;
hud_element_set_render_pos(id, baseX + 73, y - 3);
hud_element_set_render_pos(id, baseX + EMPTY_BAR_X, y - 3);
hud_element_set_alpha(id, PopupMenu_Alpha);
if (PopupMenu_MaxDisplayableEntryCount < gPopupMenu->numEntries) {
hud_element_draw_without_clipping(id);
@ -1305,10 +1492,41 @@ void popup_menu_draw_menu_contents(s32* userData, s32 baseX, s32 baseY, s32 widt
y = baseY;
y1++;
}
#if VERSION_JP
switch (gPopupMenu->popupType) {
case POPUP_MENU_USE_ITEM:
case POPUP_MENU_THROW_AWAY_ITEM:
case POPUP_MENU_CHECK_ITEM:
case POPUP_MENU_CLAIM_ITEM:
case POPUP_MENU_READ_LETTER:
case POPUP_MENU_TAKE_FROM_CHEST:
case POPUP_MENU_READ_DIARY_PAGE:
case POPUP_MENU_READ_POSTCARD:
case POPUP_MENU_USEKEY:
case POPUP_MENU_POST_OFFICE:
gDPSetScissor(gMainGfxPos++, G_SC_NON_INTERLACE, x, y, x + 112, y1);
break;
case POPUP_MENU_SWITCH_PARTNER:
gDPSetScissor(gMainGfxPos++, G_SC_NON_INTERLACE, x, y, x + 98, y1);
break;
case POPUP_MENU_TRADE_FOR_BADGE:
gDPSetScissor(gMainGfxPos++, G_SC_NON_INTERLACE, x, y, x + 144, y1);
break;
case POPUP_MENU_UPGRADE_PARTNER:
gDPSetScissor(gMainGfxPos++, G_SC_NON_INTERLACE, x, y, x + 144, y1);
break;
case POPUP_MENU_SELL_ITEM:
gDPSetScissor(gMainGfxPos++, G_SC_NON_INTERLACE, x, y, x + 140, y1);
break;
}
#else
gDPSetScissor(gMainGfxPos++, G_SC_NON_INTERLACE, x, y, x + PopupContentScissorWidths[gPopupMenu->popupType], y1);
offset = 0;
#endif
x = baseX + 32;
y = baseY + D_8010D658 + 2;
offset = 0;
if (gPopupMenu->popupType == POPUP_MENU_THROW_AWAY_ITEM) {
y = baseY + D_8010D658;
offset = 2;
@ -1316,7 +1534,7 @@ void popup_menu_draw_menu_contents(s32* userData, s32 baseX, s32 baseY, s32 widt
t = 0;
for (i = 0; i < gPopupMenu->numEntries; i++, t++) {
if (i < sp28 - 1 || i > sp28 + PopupMenu_DisplayedEntryCount) {
if (sp28 - 1 > i || sp28 + PopupMenu_DisplayedEntryCount < i) {
y += LINE_HEIGHT;
if (i == 0) {
y += offset;
@ -1358,7 +1576,7 @@ void popup_menu_draw_menu_contents(s32* userData, s32 baseX, s32 baseY, s32 widt
msgPal = MSG_PAL_STANDARD;
}
set_message_int_var(gPopupMenu->userIndex[t] + 1, 0);
draw_msg(MSG_Menus_00CD, x + 8, y, PopupMenu_Alpha, msgPal, DRAW_MSG_STYLE_MENU);
draw_msg(MSG_Menus_00CD, x + DIARY_PAGE_X, y, PopupMenu_Alpha, msgPal, DRAW_MSG_STYLE_MENU);
break;
case POPUP_MENU_READ_POSTCARD:
if (gPopupMenu->value[t] != 0) {
@ -1382,9 +1600,9 @@ void popup_menu_draw_menu_contents(s32* userData, s32 baseX, s32 baseY, s32 widt
hud_element_set_script(id, D_80109898[j]);
}
if (gPopupMenu->popupType == POPUP_MENU_SWITCH_PARTNER) {
hud_element_set_render_pos(id, x + 85 + j * 13, y + 10);
hud_element_set_render_pos(id, x + PARTNER_LIST_X1 + j * 13, y + 10);
} else {
hud_element_set_render_pos(id, x + 91 + j * 13, y + 10);
hud_element_set_render_pos(id, x + PARTNER_LIST_X2 + j * 13, y + 10);
}
if (j < gPopupMenu->value[i]) {
hud_element_draw_next(id);
@ -1392,10 +1610,10 @@ void popup_menu_draw_menu_contents(s32* userData, s32 baseX, s32 baseY, s32 widt
}
break;
case POPUP_MENU_TRADE_FOR_BADGE:
draw_number(gPopupMenu->value[t], x + 115, y, 1, msgPal, PopupMenu_Alpha, DRAW_NUMBER_STYLE_MONOSPACE_RIGHT);
draw_number(gPopupMenu->value[t], x + BADGE_PRICE_X, y, 1, msgPal, PopupMenu_Alpha, DRAW_NUMBER_STYLE_MONOSPACE_RIGHT);
break;
case POPUP_MENU_SELL_ITEM:
draw_number(gPopupMenu->value[t], x + 121, y, 1, msgPal, PopupMenu_Alpha, DRAW_NUMBER_STYLE_MONOSPACE_RIGHT);
draw_number(gPopupMenu->value[t], x + ITEM_PRICE_X, y, 1, msgPal, PopupMenu_Alpha, DRAW_NUMBER_STYLE_MONOSPACE_RIGHT);
break;
}
y += LINE_HEIGHT;
@ -1406,10 +1624,10 @@ void popup_menu_draw_menu_contents(s32* userData, s32 baseX, s32 baseY, s32 widt
}
x = baseX + 24;
y = baseY + D_8010D658 + 8;
y = baseY + D_8010D658 + MENU_OFFSET_Y1;
offset = 0;
if (gPopupMenu->popupType == POPUP_MENU_THROW_AWAY_ITEM) {
y = baseY + D_8010D658 + 6;
y = baseY + D_8010D658 + MENU_OFFSET_Y2;
offset = 2;
}
@ -1522,11 +1740,43 @@ void popup_menu_draw_menu_contents(s32* userData, s32 baseX, s32 baseY, s32 widt
break;
case POPUP_MENU_SWITCH_PARTNER:
case POPUP_MENU_UPGRADE_PARTNER:
gDPSetScissor(gMainGfxPos++, G_SC_NON_INTERLACE, x, y, x + 100, y1);
gDPSetScissor(gMainGfxPos++, G_SC_NON_INTERLACE, x, y, x + POPUP_PARTNER_WIDTH, y1);
break;
}
switch (gPopupMenu->popupType) {
#if VERSION_JP
case POPUP_MENU_TRADE_FOR_BADGE:
offset = 31;
break;
case POPUP_MENU_UPGRADE_PARTNER:
offset = 32;
break;
case POPUP_MENU_SELL_ITEM:
offset = 31;
break;
default:
offset = 31;
break;
case POPUP_MENU_CLAIM_ITEM:
case POPUP_MENU_READ_LETTER:
case POPUP_MENU_TAKE_FROM_CHEST:
offset = 31;
break;
case POPUP_MENU_USEKEY:
offset = 31;
break;
case POPUP_MENU_READ_DIARY_PAGE:
offset = 13;
break;
case POPUP_MENU_READ_POSTCARD:
offset = 21;
break;
case POPUP_MENU_SWITCH_PARTNER:
case POPUP_MENU_POST_OFFICE:
offset = 14;
break;
#else
case POPUP_MENU_SWITCH_PARTNER:
offset = 35;
break;
@ -1558,6 +1808,7 @@ void popup_menu_draw_menu_contents(s32* userData, s32 baseX, s32 baseY, s32 widt
case POPUP_MENU_POST_OFFICE:
offset = 30;
break;
#endif
}
if (PopupMenu_FirstDisplayIndex > 0) {
@ -1572,7 +1823,8 @@ void popup_menu_draw_menu_contents(s32* userData, s32 baseX, s32 baseY, s32 widt
if (PopupMenu_LastDisplayIndex < gPopupMenu->numEntries) {
id = PopupMenu_DownArrowHEID;
x = baseX + offset;
y = baseY + PopupMenu_MaxDisplayableEntryCount * LINE_HEIGHT;
y = baseY;
y += PopupMenu_MaxDisplayableEntryCount * LINE_HEIGHT;
hud_element_set_render_pos(id, x + 35, y + 5);
hud_element_set_alpha(id, PopupMenu_Alpha);
hud_element_draw_without_clipping(id);
@ -1609,6 +1861,29 @@ void popup_menu_draw_title_contents(s32* userData, s32 baseX, s32 baseY, s32 wid
}
}
#else
#if VERSION_JP
#define POPUP_ITEM_X 35
#define POPUP_ITEMDIP_NUMBER_X 82
#define POPUP_ITEMDIP_X 102
#define POPUP_TRIPLE_DIP_X 4
#define POPUP_BADGE_X 38
#define POPUP_CHEST_X 31
#define POPUP_POSTCARD_X 16
#define POPUP_ITEM_KEY_X 35
#define POPUP_POSTOFFICE_X 23
#else
#define POPUP_ITEM_X 26
#define POPUP_ITEMDIP_NUMBER_X 94
#define POPUP_ITEMDIP_X 114
#define POPUP_TRIPLE_DIP_X 6
#define POPUP_BADGE_X 27
#define POPUP_CHEST_X 4
#define POPUP_POSTCARD_X 6
#define POPUP_ITEM_KEY_X 27
#define POPUP_POSTOFFICE_X 8
#endif
void popup_menu_draw_title_contents(
s32* userData, s32 baseX, s32 baseY, s32 width, s32 height, s32 opacity, s32 darkening)
{
@ -1620,45 +1895,60 @@ void popup_menu_draw_title_contents(
case POPUP_MENU_CLAIM_ITEM:
switch (gPopupMenu->dipMode) {
case 0:
draw_msg(MSG_Menus_Items, baseX + 26, baseY + 2, PopupMenu_Alpha, MSG_PAL_32, DRAW_MSG_STYLE_MENU);
#if VERSION_JP
draw_msg(MSG_Menus_JP_004F, baseX + POPUP_ITEM_X, baseY + 2, PopupMenu_Alpha, MSG_PAL_32, DRAW_MSG_STYLE_MENU);
#else
draw_msg(MSG_Menus_Items, baseX + POPUP_ITEM_X, baseY + 2, PopupMenu_Alpha, MSG_PAL_32, DRAW_MSG_STYLE_MENU);
#endif
break;
case 1:
draw_msg(MSG_Menus_DoubleDip, baseX + 4, baseY + 2, PopupMenu_Alpha, MSG_PAL_32, DRAW_MSG_STYLE_MENU);
draw_number(gPopupMenu->titleNumber, baseX + 94, baseY + 2, DRAW_NUMBER_CHARSET_THIN, MSG_PAL_32,
draw_number(gPopupMenu->titleNumber, baseX + POPUP_ITEMDIP_NUMBER_X, baseY + 2, DRAW_NUMBER_CHARSET_THIN, MSG_PAL_32,
PopupMenu_Alpha, DRAW_NUMBER_STYLE_MONOSPACE | DRAW_NUMBER_STYLE_ALIGN_RIGHT);
draw_number(2, baseX + 114, baseY + 2, DRAW_NUMBER_CHARSET_THIN, MSG_PAL_32, PopupMenu_Alpha, DRAW_NUMBER_STYLE_MONOSPACE | DRAW_NUMBER_STYLE_ALIGN_RIGHT);
draw_number(2, baseX + POPUP_ITEMDIP_X, baseY + 2, DRAW_NUMBER_CHARSET_THIN, MSG_PAL_32, PopupMenu_Alpha, DRAW_NUMBER_STYLE_MONOSPACE | DRAW_NUMBER_STYLE_ALIGN_RIGHT);
break;
case 2:
draw_msg(MSG_Menus_TripleDip, baseX + 6, baseY + 2, PopupMenu_Alpha, MSG_PAL_32, DRAW_MSG_STYLE_MENU);
draw_number(gPopupMenu->titleNumber, baseX + 94, baseY + 2, DRAW_NUMBER_CHARSET_THIN, MSG_PAL_32,
draw_msg(MSG_Menus_TripleDip, baseX + POPUP_TRIPLE_DIP_X, baseY + 2, PopupMenu_Alpha, MSG_PAL_32, DRAW_MSG_STYLE_MENU);
draw_number(gPopupMenu->titleNumber, baseX + POPUP_ITEMDIP_NUMBER_X, baseY + 2, DRAW_NUMBER_CHARSET_THIN, MSG_PAL_32,
PopupMenu_Alpha, DRAW_NUMBER_STYLE_MONOSPACE | DRAW_NUMBER_STYLE_ALIGN_RIGHT);
draw_number(3, baseX + 114, baseY + 2, DRAW_NUMBER_CHARSET_THIN, MSG_PAL_32, PopupMenu_Alpha,
draw_number(3, baseX + POPUP_ITEMDIP_X, baseY + 2, DRAW_NUMBER_CHARSET_THIN, MSG_PAL_32, PopupMenu_Alpha,
DRAW_NUMBER_STYLE_MONOSPACE | DRAW_NUMBER_STYLE_ALIGN_RIGHT);
break;
}
break;
case POPUP_MENU_TRADE_FOR_BADGE:
draw_msg(MSG_MenuTip_0032, baseX + 27, baseY + 2, PopupMenu_Alpha, MSG_PAL_32, DRAW_MSG_STYLE_MENU);
draw_msg(MSG_MenuTip_0032, baseX + POPUP_BADGE_X, baseY + 2, PopupMenu_Alpha, MSG_PAL_32, DRAW_MSG_STYLE_MENU);
break;
#if VERSION_JP
case POPUP_MENU_UPGRADE_PARTNER:
draw_msg(MSG_Menus_PartyMember, baseX + 20, baseY + 2, PopupMenu_Alpha, MSG_PAL_34, DRAW_MSG_STYLE_MENU);
break;
#endif
case POPUP_MENU_READ_LETTER:
draw_msg(MSG_MenuTip_0033, baseX + 23, baseY + 2, PopupMenu_Alpha, MSG_PAL_32, DRAW_MSG_STYLE_MENU);
break;
case POPUP_MENU_TAKE_FROM_CHEST:
draw_msg(MSG_Menus_00D7, baseX + 4, baseY + 2, PopupMenu_Alpha, MSG_PAL_32, DRAW_MSG_STYLE_MENU);
draw_msg(MSG_Menus_00D7, baseX + POPUP_CHEST_X, baseY + 2, PopupMenu_Alpha, MSG_PAL_32, DRAW_MSG_STYLE_MENU);
break;
case POPUP_MENU_READ_DIARY_PAGE:
draw_msg(MSG_Menus_00CE, baseX + 8, baseY + 2, PopupMenu_Alpha, MSG_PAL_32, DRAW_MSG_STYLE_MENU);
break;
case POPUP_MENU_READ_POSTCARD:
draw_msg(MSG_Menus_00D0, baseX + 6, baseY + 2, PopupMenu_Alpha, MSG_PAL_32, DRAW_MSG_STYLE_MENU);
draw_msg(MSG_Menus_00D0, baseX + POPUP_POSTCARD_X, baseY + 2, PopupMenu_Alpha, MSG_PAL_32, DRAW_MSG_STYLE_MENU);
break;
case POPUP_MENU_USEKEY:
draw_msg(MSG_Menus_Items, baseX + 27, baseY + 2, PopupMenu_Alpha, MSG_PAL_32, DRAW_MSG_STYLE_MENU);
#if VERSION_JP
draw_msg(MSG_Menus_KeyItems, baseX + POPUP_ITEM_KEY_X, baseY + 2, PopupMenu_Alpha, MSG_PAL_32, DRAW_MSG_STYLE_MENU);
#else
draw_msg(MSG_Menus_Items, baseX + POPUP_ITEM_KEY_X, baseY + 2, PopupMenu_Alpha, MSG_PAL_32, DRAW_MSG_STYLE_MENU);
#endif
break;
case POPUP_MENU_SWITCH_PARTNER:
#if !VERSION_JP
case POPUP_MENU_UPGRADE_PARTNER:
#endif
case POPUP_MENU_POST_OFFICE:
draw_msg(MSG_Menus_PartyMember, baseX + 8, baseY + 2, PopupMenu_Alpha, MSG_PAL_34, DRAW_MSG_STYLE_MENU);
draw_msg(MSG_Menus_PartyMember, baseX + POPUP_POSTOFFICE_X, baseY + 2, PopupMenu_Alpha, MSG_PAL_34, DRAW_MSG_STYLE_MENU);
break;
}
}
@ -1686,6 +1976,84 @@ void func_800F4944(s32* userData, s32 baseX, s32 baseY, s32 width, s32 height, s
void func_800F4944(s32* userData, s32 baseX, s32 baseY, s32 width, s32 height, s32 opacity, s32 darkening) {
s32 msgWidth;
#if VERSION_JP
baseY += 6;
if (PopupNotBattle) {
switch (gPopupMenu->popupType) {
case POPUP_MENU_USE_ITEM:
msgWidth = get_msg_width(MSG_Menus_0061, 0) + 18;
baseX += 76 - (msgWidth / 2);
draw_msg(MSG_Menus_0061, baseX + 6, baseY + 2, 255, MSG_PAL_0F, 0);
break;
case POPUP_MENU_SWITCH_PARTNER:
msgWidth = get_msg_width(MSG_Menus_0063, 0) + 18;
baseX += 76 - (msgWidth / 2);
draw_msg(MSG_Menus_0063, baseX + 8, baseY + 2, 255, MSG_PAL_0F, 0);
break;
case POPUP_MENU_THROW_AWAY_ITEM:
msgWidth = get_msg_width(MSG_Menus_0064, 0) + 18;
baseX += 76 - (msgWidth / 2);
draw_msg(MSG_Menus_0064, baseX + 4, baseY + 2, 255, MSG_PAL_0F, 0);
break;
case POPUP_MENU_TRADE_FOR_BADGE:
msgWidth = get_msg_width(MSG_Menus_0070, 0) + 18;
baseX += 76 - (msgWidth / 2);
draw_msg(MSG_Menus_0070, baseX + 4, baseY + 2, 255, MSG_PAL_0F, 0);
break;
case POPUP_MENU_UPGRADE_PARTNER:
msgWidth = get_msg_width(MSG_Menus_006A, 0) + 18;
baseX += 76 - (msgWidth / 2);
draw_msg(MSG_Menus_006A, baseX + 4, baseY + 2, 255, MSG_PAL_0F, 0);
break;
case POPUP_MENU_SELL_ITEM:
msgWidth = get_msg_width(MSG_Menus_0065, 0) + 18;
baseX += 76 - (msgWidth / 2);
draw_msg(MSG_Menus_0065, baseX - 4, baseY + 2, 255, MSG_PAL_0F, 0);
break;
case POPUP_MENU_CHECK_ITEM:
msgWidth = get_msg_width(MSG_Menus_0066, 0) + 18;
baseX += 76 - (msgWidth / 2);
draw_msg(MSG_Menus_0066, baseX + 6, baseY + 2, 255, MSG_PAL_0F, 0);
break;
case POPUP_MENU_CLAIM_ITEM:
msgWidth = get_msg_width(MSG_Menus_0067, 0) + 18;
baseX += 76 - (msgWidth / 2);
draw_msg(MSG_Menus_0067, baseX + 6, baseY + 2, 255, MSG_PAL_0F, 0);
break;
case POPUP_MENU_READ_LETTER:
msgWidth = get_msg_width(MSG_Menus_JP_0081, 0) + 18;
baseX += 76 - (msgWidth / 2);
draw_msg(MSG_Menus_JP_0081, baseX + 6, baseY + 2, 255, MSG_PAL_0F, 0);
break;
case POPUP_MENU_TAKE_FROM_CHEST:
msgWidth = get_msg_width(MSG_Menus_00D6, 0) + 18;
baseX += 76 - (msgWidth / 2);
draw_msg(MSG_Menus_00D6, baseX + 6, baseY + 2, 255, MSG_PAL_0F, 0);
break;
case POPUP_MENU_READ_DIARY_PAGE:
msgWidth = get_msg_width(MSG_Menus_006C, 0) + 18;
baseX += 76 - (msgWidth / 2);
draw_msg(MSG_Menus_006C, baseX + 6, baseY + 2, 255, MSG_PAL_0F, 0);
break;
case POPUP_MENU_READ_POSTCARD:
msgWidth = get_msg_width(MSG_Menus_006D, 0) + 18;
baseX += 76 - (msgWidth / 2);
draw_msg(MSG_Menus_006D, baseX + 6, baseY + 2, 255, MSG_PAL_0F, 0);
break;
case POPUP_MENU_USEKEY:
msgWidth = get_msg_width(MSG_Menus_0062, 0) + 18;
baseX += 76 - (msgWidth / 2);
draw_msg(MSG_Menus_0062, baseX + 6, baseY + 2, 255, MSG_PAL_0F, 0);
break;
case POPUP_MENU_POST_OFFICE:
msgWidth = get_msg_width(MSG_Menus_006F, 0) + 18;
baseX += 76 - (msgWidth / 2);
draw_msg(MSG_Menus_006F, baseX + 6, baseY + 2, 255, MSG_PAL_0F, 0);
break;
}
}
#else
baseY += 7;
if (PopupNotBattle) {
@ -1762,6 +2130,7 @@ void func_800F4944(s32* userData, s32 baseX, s32 baseY, s32 width, s32 height, s
break;
}
}
#endif
}
#endif
@ -1801,6 +2170,11 @@ void popup_draw_cost_icon(s32* userData, s32 x, s32 y) {
hudElement = PopupMenu_TitleIconHEID;
yPos = y + 16;
break;
#if VERSION_JP
case POPUP_TYPE_UPGRADE_PARTNER:
draw_msg(MSG_Menus_006E, x + 7, y + 2, PopupMenu_Alpha, MSG_PAL_34, 1);
return;
#endif
case POPUP_TYPE_SELL_ITEM:
xPos = x + 17;
hudElement = PopupMenu_TitleIconHEID;
@ -1816,7 +2190,11 @@ void popup_draw_cost_icon(s32* userData, s32 x, s32 y) {
}
void popup_draw_already_have_partner(s32* userData, s32 x, s32 y) {
#if VERSION_JP
draw_msg(MSG_Menus_006B, x + 11, y + 8, 255, MSG_PAL_0F, 0);
#else
draw_msg(MSG_Menus_006B, x + 16, y + 2, 255, MSG_PAL_0F, 0);
#endif
}
void func_800F4D28(s32* userData, s32 x, s32 y) {

View File

@ -20,6 +20,15 @@ extern Addr WorldEntityHeapBase;
#define entity_default_VRAM (void*) 0x802BAE00
#endif
#if VERSION_JP // TODO remove once segments are split
extern Addr entity_default_ROM_END;
extern Addr entity_default_ROM_START;
extern Addr entity_jan_iwa_ROM_END;
extern Addr entity_jan_iwa_ROM_START;
extern Addr entity_sbk_omo_ROM_END;
extern Addr entity_sbk_omo_ROM_START;
#endif
s32 D_8014AFB0 = 255;
SHIFT_BSS s32 CreateEntityVarArgBuffer[4];

View File

@ -3,6 +3,25 @@
#include "ld_addrs.h"
#include "entity.h"
#if VERSION_JP // TODO remove once segments are split
extern Addr entity_model_BrickBlock_ROM_END;
extern Addr entity_model_BrickBlock_ROM_START;
extern Addr entity_model_Hammer1Block_ROM_END;
extern Addr entity_model_Hammer1Block_ROM_START;
extern Addr entity_model_Hammer2Block_ROM_END;
extern Addr entity_model_Hammer2Block_ROM_START;
extern Addr entity_model_Hammer3Block_ROM_END;
extern Addr entity_model_Hammer3Block_ROM_START;
extern Addr entity_model_InertRedBlock_ROM_END;
extern Addr entity_model_InertRedBlock_ROM_START;
extern Addr entity_model_InertYellowBlock_ROM_END;
extern Addr entity_model_InertYellowBlock_ROM_START;
extern Addr entity_model_PowBlock_ROM_END;
extern Addr entity_model_PowBlock_ROM_START;
extern Addr entity_model_PushBlock_ROM_END;
extern Addr entity_model_PushBlock_ROM_START;
#endif
extern Gfx Entity_InertYellowBlock_Render[];
extern Gfx Entity_InertRedBlock_Render[];
extern Gfx Entity_BrickBlock_Render[];

View File

@ -5,6 +5,11 @@
#include "entity.h"
#include "sprite/player.h"
#if VERSION_JP // TODO remove once segments are split
extern Addr entity_model_BlueWarpPipe_ROM_END;
extern Addr entity_model_BlueWarpPipe_ROM_START;
#endif
extern Gfx Entity_BlueWarpPipe_RenderPipe[];
extern Gfx Entity_BlueWarpPipe_RenderBase[];

View File

@ -4,6 +4,11 @@
#include "entity.h"
#include "sprite/player.h"
#if VERSION_JP // TODO remove once segments are split
extern Addr entity_model_Chest_ROM_END;
extern Addr entity_model_Chest_ROM_START;
#endif
extern EntityScript Entity_Chest_ScriptOpened;
extern Gfx Entity_Chest_RenderBox[];

View File

@ -4,6 +4,13 @@
#include "ld_addrs.h"
#include "entity.h"
#if VERSION_JP // TODO remove once segments are split
extern Addr entity_model_HeartBlockContent_ROM_END;
extern Addr entity_model_HeartBlockContent_ROM_START;
extern Addr entity_model_HeartBlock_ROM_END;
extern Addr entity_model_HeartBlock_ROM_START;
#endif
extern EntityModelScript Entity_HeartBlockContent_RenderScriptIdle;
extern EntityModelScript Entity_HeartBlockContent_RenderScriptAfterHit;
extern EntityModelScript Entity_HeartBlockContent_RenderScriptHit;

View File

@ -2,6 +2,11 @@
#include "ld_addrs.h"
#include "entity.h"
#if VERSION_JP // TODO remove once segments are split
extern Addr entity_model_HiddenPanel_ROM_END;
extern Addr entity_model_HiddenPanel_ROM_START;
#endif
s32 entity_HiddenPanel_is_item_on_top(Entity*);
void entity_HiddenPanel_flip_over(Entity*);

View File

@ -5,6 +5,25 @@
#include "entity.h"
#include "model.h"
#if VERSION_JP // TODO remove once segments are split
extern Addr entity_model_HitFloatingYellowBlock_anim_ROM_END;
extern Addr entity_model_HitFloatingYellowBlock_anim_ROM_START;
extern Addr entity_model_HitFloatingYellowBlock_gfx_ROM_END;
extern Addr entity_model_HitFloatingYellowBlock_gfx_ROM_START;
extern Addr entity_model_HitRedBlock_anim_ROM_END;
extern Addr entity_model_HitRedBlock_anim_ROM_START;
extern Addr entity_model_HitRedBlock_gfx_ROM_END;
extern Addr entity_model_HitRedBlock_gfx_ROM_START;
extern Addr entity_model_HitYellowBlock_anim_ROM_END;
extern Addr entity_model_HitYellowBlock_anim_ROM_START;
extern Addr entity_model_HitYellowBlock_gfx_ROM_END;
extern Addr entity_model_HitYellowBlock_gfx_ROM_START;
extern Addr entity_model_RedBlock_ROM_END;
extern Addr entity_model_RedBlock_ROM_START;
extern Addr entity_model_YellowBlock_ROM_END;
extern Addr entity_model_YellowBlock_ROM_START;
#endif
extern Gfx Entity_YellowBlock_Render[];
extern Gfx Entity_RedBlock_Render[];
extern AnimScript Entity_HitYellowBlock_AnimationHit;

View File

@ -4,6 +4,11 @@
#include "entity.h"
#include "message_ids.h"
#if VERSION_JP // TODO remove once segments are split
extern Addr entity_model_SaveBlock_ROM_END;
extern Addr entity_model_SaveBlock_ROM_START;
#endif
extern Mtx Entity_SaveBlock_Mtx;
extern Gfx Entity_SaveBlock_RenderContent[];
extern Gfx Entity_SaveBlock_RenderBlock[];

View File

@ -2,6 +2,17 @@
#include "ld_addrs.h"
#include "entity.h"
#if VERSION_JP // TODO remove once segments are split
extern Addr entity_model_ShatteringBrickBlock_ROM_END;
extern Addr entity_model_ShatteringBrickBlock_ROM_START;
extern Addr entity_model_ShatteringHammer1Block_ROM_END;
extern Addr entity_model_ShatteringHammer1Block_ROM_START;
extern Addr entity_model_ShatteringHammer2Block_ROM_END;
extern Addr entity_model_ShatteringHammer2Block_ROM_START;
extern Addr entity_model_ShatteringHammer3Block_ROM_END;
extern Addr entity_model_ShatteringHammer3Block_ROM_START;
#endif
extern Mtx Entity_ShatteringHammer1Block_FragmentsMatrices[];
extern Gfx* Entity_ShatteringHammer1Block_FragmentsRender[];
extern Mtx Entity_ShatteringHammer2Block_FragmentsMatrices[];

View File

@ -2,6 +2,11 @@
#include "ld_addrs.h"
#include "entity.h"
#if VERSION_JP // TODO remove once segments are split
extern Addr entity_model_Signpost_ROM_END;
extern Addr entity_model_Signpost_ROM_START;
#endif
extern Gfx Entity_Signpost_Render[];
void entity_Signpost_idle(Entity* entity) {

View File

@ -3,6 +3,17 @@
#include "animation_script.h"
#include "ld_addrs.h"
#if VERSION_JP // TODO remove once segments are split
extern Addr entity_model_ScriptSpring_anim_ROM_END;
extern Addr entity_model_ScriptSpring_anim_ROM_START;
extern Addr entity_model_ScriptSpring_gfx_ROM_END;
extern Addr entity_model_ScriptSpring_gfx_ROM_START;
extern Addr entity_model_SimpleSpring_anim_ROM_END;
extern Addr entity_model_SimpleSpring_anim_ROM_START;
extern Addr entity_model_SimpleSpring_gfx_ROM_END;
extern Addr entity_model_SimpleSpring_gfx_ROM_START;
#endif
extern StaticAnimatorNode* Entity_ScriptSpring_Mesh[];
extern AnimScript Entity_ScriptSpring_AnimLaunch;
extern AnimScript Entity_ScriptSpring_AnimIdle;

View File

@ -3,6 +3,17 @@
#include "ld_addrs.h"
#include "entity.h"
#if VERSION_JP // TODO remove once segments are split
extern Addr entity_model_SuperBlockContent_ROM_END;
extern Addr entity_model_SuperBlockContent_ROM_START;
extern Addr entity_model_SuperBlock_ROM_END;
extern Addr entity_model_SuperBlock_ROM_START;
extern Addr entity_model_UltraBlockContent_ROM_END;
extern Addr entity_model_UltraBlockContent_ROM_START;
extern Addr entity_model_UltraBlock_ROM_END;
extern Addr entity_model_UltraBlock_ROM_START;
#endif
extern EntityBlueprint Entity_SuperBlockContent;
extern Gfx Entity_SuperBlock_Render[];

View File

@ -3,6 +3,15 @@
#include "ld_addrs.h"
#include "entity.h"
#if VERSION_JP // TODO remove once segments are split
extern Addr entity_model_BlueSwitch_ROM_END;
extern Addr entity_model_BlueSwitch_ROM_START;
extern Addr entity_model_GreenStompSwitch_ROM_END;
extern Addr entity_model_GreenStompSwitch_ROM_START;
extern Addr entity_model_RedSwitch_ROM_END;
extern Addr entity_model_RedSwitch_ROM_START;
#endif
#define REFLECTED_SWITCH_HIDDEN 1
#define REFLECTED_SWITCH_LINKED 2

View File

@ -3,6 +3,11 @@
#include "ld_addrs.h"
#include "entity.h"
#if VERSION_JP // TODO remove once segments are split
extern Addr entity_model_WoodenCrate_ROM_END;
extern Addr entity_model_WoodenCrate_ROM_START;
#endif
extern Gfx Entity_RenderNone[];
extern Gfx Entity_WoodenCrate_Render[];
extern Gfx* Entity_WoodenCrate_FragmentsRender[];

View File

@ -1,6 +1,11 @@
#include "common.h"
#include "ld_addrs.h"
#if VERSION_JP // TODO remove once this part is split
#define SHADING_NONE 0xFFFFFFFF
extern Addr sprite_shading_profiles_ROM_START;
#endif
// TODO: not sure where these go
u8 D_802D9D70 = 254;
u8 D_802D9D71 = 254;

View File

@ -3,6 +3,11 @@
#include "sprite.h"
#include "imgfx.h"
#if VERSION_JP // TODO remove once segments are split
extern Addr imgfx_data_ROM_START;
#endif
typedef union ImgFXIntVars {
s32 raw[2][4];
struct {

View File

@ -37,7 +37,9 @@ SHIFT_BSS ItemEntity* BattleItemEntities[MAX_ITEM_ENTITIES];
SHIFT_BSS ItemEntity** gCurrentItemEntities;
SHIFT_BSS s16 isPickingUpItem;
SHIFT_BSS s16 ItemSpawnWithinPlayerPickupDelay;
#if !VERSION_JP
SHIFT_BSS s16 D_801565A8;
#endif
SHIFT_BSS PopupMenu ItemPickupMenu;
SHIFT_BSS s32 ItemPickupIconID;
SHIFT_BSS s32 ItemPickupStateDelay;
@ -110,8 +112,10 @@ Gfx D_8014C6A0[] = {
Lights1 ItemEntityLights = gdSPDefLights1(255, 255, 255, 0, 0, 0, 0, 0, 0);
#if !VERSION_JP
s16 PickupHeaderWindowHeight[] = { 32, 40 };
s16 PickupMessageWindowYOffsets[] = { 8, 4 };
#endif
void sparkle_script_init(ItemEntity* item, SparkleScript* script) {
item->sparkleReadPos = (s32*)script;
@ -258,7 +262,9 @@ void clear_item_entity_data(void) {
create_worker_world(NULL, draw_item_entities);
create_worker_frontUI(NULL, draw_ui_item_entities);
isPickingUpItem = FALSE;
#if !VERSION_JP
D_801565A8 = FALSE;
#endif
}
void init_item_entity_list(void) {
@ -269,7 +275,9 @@ void init_item_entity_list(void) {
}
isPickingUpItem = FALSE;
#if !VERSION_JP
D_801565A8 = FALSE;
#endif
ItemEntitiesCreated = 0;
ItemEntityAlternatingSpawn = 0;
}
@ -1526,9 +1534,11 @@ void set_item_entity_flags(s32 index, s32 flags) {
ItemEntity* item = gCurrentItemEntities[index];
item->flags |= flags;
#if !VERSION_JP
if (item->flags & ITEM_ENTITY_FLAG_CANT_COLLECT) {
D_801565A8 = TRUE;
}
#endif
}
void clear_item_entity_flags(s32 index, s32 flags) {
@ -1545,12 +1555,16 @@ void auto_collect_item_entity(s32 index) {
/// @returns TRUE when "you got X" popup is on-screen
b32 is_picking_up_item(void) {
#if VERSION_JP
return isPickingUpItem;
#else
b32 ret = D_801565A8 != FALSE;
if (isPickingUpItem) {
ret = TRUE;
}
return ret;
#endif
}
void set_item_entity_position(s32 itemEntityIndex, f32 x, f32 y, f32 z) {
@ -2003,7 +2017,9 @@ void update_item_entity_collectable(ItemEntity* item) {
sfx_play_sound_at_position(SOUND_HEART_PICKUP, SOUND_SPACE_DEFAULT, item->pos.x, item->pos.y, item->pos.z);
break;
}
#if !VERSION_JP
D_801565A8 = FALSE;
#endif
gOverrideFlags &= ~GLOBAL_OVERRIDES_40;
remove_item_entity_by_reference(item);
}
@ -2013,7 +2029,9 @@ void update_item_entity_collectable(ItemEntity* item) {
// when the script is done executing, destroy these items
if (item->state == ITEM_PHYSICS_STATE_04) {
if (!does_script_exist(UnusedItemPhysicsScriptID)) {
#if !VERSION_JP
D_801565A8 = FALSE;
#endif
remove_item_entity_by_reference(item);
resume_all_group(EVT_GROUP_02);
}
@ -2023,7 +2041,9 @@ void update_item_entity_collectable(ItemEntity* item) {
isPickingUpItem = TRUE;
item->spawnType = ITEM_SPAWN_AT_PLAYER;
item->state = ITEM_PICKUP_STATE_INIT;
#if !VERSION_JP
D_801565A8 = FALSE;
#endif
gOverrideFlags |= GLOBAL_OVERRIDES_40;
}
}
@ -2059,7 +2079,9 @@ void update_item_entity_stationary(ItemEntity* item) {
isPickingUpItem = TRUE;
item->spawnType = ITEM_SPAWN_AT_PLAYER;
item->state = ITEM_PICKUP_STATE_INIT;
#if !VERSION_JP
D_801565A8 = FALSE;
#endif
gOverrideFlags |= GLOBAL_OVERRIDES_40;
}
}
@ -2458,6 +2480,22 @@ block_47: // TODO required to match
}
}
#if VERSION_JP
#define WD_VAR1 44
#define WD_VAR2 25
#define WD_VAR3 20
#define X_VAR1 32
#define HT_VAR1 40
#define WD_VAR4 242
#else
#define WD_VAR1 54
#define WD_VAR2 30
#define WD_VAR3 30
#define X_VAR1 20
#define HT_VAR1 height
#define WD_VAR4 280
#endif
void func_801363A0(ItemEntity* item) {
ItemData* itemData = &gItemTable[item->itemID];
s32 itemMsg;
@ -2494,9 +2532,9 @@ void func_801363A0(ItemEntity* item) {
item->itemID != ITEM_STAR_PIECE &&
!(gItemTable[item->itemID].typeFlags & ITEM_TYPE_FLAG_GEAR) &&
!(item->pickupMsgFlags & (ITEM_PICKUP_FLAG_1_COIN | ITEM_PICKUP_FLAG_3_STAR_PIECES))) {
width = get_msg_width(itemMsg, 0) + 54;
width = get_msg_width(itemMsg, 0) + WD_VAR1;
} else {
width = get_msg_width(itemMsg, 0) + 30;
width = get_msg_width(itemMsg, 0) + WD_VAR2;
}
posX = 160 - width / 2;
posY = 76;
@ -2518,11 +2556,13 @@ void func_801363A0(ItemEntity* item) {
}
set_message_text_var(itemData->nameMsg, 0);
width = get_msg_width(itemMsg, 0) + 30;
width = get_msg_width(itemMsg, 0) + WD_VAR3;
posX = 160 - width / 2;
posY = 76;
}
#if !VERSION_JP
height = PickupHeaderWindowHeight[get_msg_lines(itemMsg) - 1];
#endif
if (item->state != ITEM_PICKUP_STATE_SHOW_GOT_ITEM) {
offsetY = 28;
} else {
@ -2534,16 +2574,17 @@ void func_801363A0(ItemEntity* item) {
&& item->itemID != ITEM_STAR_PIECE)
) {
set_window_properties(WINDOW_ID_12, posX, posY - 24 + offsetY, width,
height, WINDOW_PRIORITY_0, draw_content_pickup_item_header, item, -1);
HT_VAR1, WINDOW_PRIORITY_0, draw_content_pickup_item_header, item, -1);
} else if (gItemTable[item->itemID].typeFlags & ITEM_TYPE_FLAG_WORLD_USABLE){
set_window_properties(WINDOW_ID_12, posX, posY - 24 + offsetY, width,
height, WINDOW_PRIORITY_0, draw_content_pickup_item_header, item, -1);
HT_VAR1, WINDOW_PRIORITY_0, draw_content_pickup_item_header, item, -1);
} else {
set_window_properties(WINDOW_ID_12, posX, posY - 24 + offsetY, width,
height, WINDOW_PRIORITY_0, draw_content_pickup_item_header, item, -1);
HT_VAR1, WINDOW_PRIORITY_0, draw_content_pickup_item_header, item, -1);
}
if (item->itemID != ITEM_STAR_PIECE && item->itemID != ITEM_COIN) {
set_window_properties(WINDOW_ID_19, 20, 186, 280, 32, WINDOW_PRIORITY_0, draw_content_pickup_item_desc, item, -1);
posX = X_VAR1;
set_window_properties(WINDOW_ID_19, posX, 186, WD_VAR4, 32, WINDOW_PRIORITY_0, draw_content_pickup_item_desc, item, -1);
}
if (item->state != ITEM_PICKUP_STATE_SHOW_GOT_ITEM) {
width = get_msg_width(MSG_Menus_0060, 0) + 24;
@ -2553,13 +2594,33 @@ void func_801363A0(ItemEntity* item) {
break;
case ITEM_PICKUP_STATE_AWAIT_THROW_AWAY:
set_message_text_var(itemData->nameMsg, 0);
#if VERSION_JP
width = get_msg_width(gItemTable[ThrowAwayItemID].nameMsg, 0) + 104;
#else
width = get_msg_width(MSG_Menus_005F, 0) + 54;
#endif
posX = 160 - width / 2;
set_window_properties(WINDOW_ID_12, 160 - width / 2, 76, width, 40, WINDOW_PRIORITY_0, draw_content_pickup_item_header, item, -1);
break;
}
}
#if VERSION_JP
#define X_PICKUP_ITEM_1 12
#define X_PICKUP_ITEM_2 36
#define X_PICKUP_THREW 36
#define Y_PICKUP_ITEM_1 12
#define Y_PICKUP_ITEM_2 12
#define Y_PICKUP_THREW 12
#else
#define X_PICKUP_ITEM_1 15
#define X_PICKUP_ITEM_2 40
#define X_PICKUP_THREW 40
#define Y_PICKUP_ITEM_1 offsetY
#define Y_PICKUP_ITEM_2 offsetY
#define Y_PICKUP_THREW 4
#endif
void draw_content_pickup_item_header(ItemEntity* item, s32 posX, s32 posY) {
ItemData* itemData = &gItemTable[item->itemID];
s32 itemMsg;
@ -2607,7 +2668,9 @@ void draw_content_pickup_item_header(ItemEntity* item, s32 posX, s32 posY) {
set_message_text_var(itemData->nameMsg, 0);
}
#if !VERSION_JP
offsetY = PickupMessageWindowYOffsets[get_msg_lines(itemMsg) - 1];
#endif
if ((gItemTable[item->itemID].typeFlags & ITEM_TYPE_FLAG_BADGE)
|| (gItemTable[item->itemID].typeFlags & ITEM_TYPE_FLAG_KEY)
@ -2615,9 +2678,9 @@ void draw_content_pickup_item_header(ItemEntity* item, s32 posX, s32 posY) {
|| (gItemTable[item->itemID].typeFlags & ITEM_TYPE_FLAG_GEAR)
|| (item->pickupMsgFlags & (ITEM_PICKUP_FLAG_1_COIN | ITEM_PICKUP_FLAG_3_STAR_PIECES))
) {
draw_msg(itemMsg, posX + 15, posY + offsetY, 255, MSG_PAL_2F, 0);
draw_msg(itemMsg, posX + X_PICKUP_ITEM_1, posY + Y_PICKUP_ITEM_1, 255, MSG_PAL_2F, 0);
} else {
draw_msg(itemMsg, posX + 40, posY + offsetY, 255, MSG_PAL_2F, 0);
draw_msg(itemMsg, posX + X_PICKUP_ITEM_2, posY + Y_PICKUP_ITEM_2, 255, MSG_PAL_2F, 0);
if (!(item->pickupMsgFlags & (ITEM_PICKUP_FLAG_1_COIN | ITEM_PICKUP_FLAG_3_STAR_PIECES))) {
hud_element_set_render_pos(ItemPickupIconID, posX + 20, posY + 20);
hud_element_draw_next(ItemPickupIconID);
@ -2627,7 +2690,7 @@ void draw_content_pickup_item_header(ItemEntity* item, s32 posX, s32 posY) {
case ITEM_PICKUP_STATE_SHOW_THREW_AWAY:
case ITEM_PICKUP_STATE_HIDE_THREW_AWAY:
set_message_text_var(gItemTable[ThrowAwayItemID].nameMsg, 0);
draw_msg(MSG_Menus_005F, posX + 40, posY + 4, 255, MSG_PAL_2F, 0);
draw_msg(MSG_Menus_005F, posX + X_PICKUP_THREW, posY + Y_PICKUP_THREW, 255, MSG_PAL_2F, 0);
hud_element_set_render_pos(ItemPickupIconID, posX + 20, posY + 20);
hud_element_draw_next(ItemPickupIconID);
break;

2155
src/msg.c

File diff suppressed because it is too large Load Diff

View File

@ -4,7 +4,563 @@
extern IMG_BIN MsgCharImgTitle[];
extern IMG_BIN MsgCharImgSubtitle[];
extern IMG_BIN MsgCharImgNormal[];
extern IMG_BIN MsgCharImgMenuLatin[];
extern IMG_BIN MsgCharImgMenuKana[];
extern IMG_BIN MsgCharImgKana[];
extern IMG_BIN MsgCharImgLatin[];
#if VERSION_JP
u8 MsgCharWidthKana[] = {
[MSG_CHAR_HIRAGANA_A] 11,
[MSG_CHAR_HIRAGANA_I] 11,
[MSG_CHAR_HIRAGANA_U] 10,
[MSG_CHAR_HIRAGANA_E] 10,
[MSG_CHAR_HIRAGANA_O] 11,
[MSG_CHAR_HIRAGANA_KA] 11,
[MSG_CHAR_HIRAGANA_KI] 9,
[MSG_CHAR_HIRAGANA_KU] 9,
[MSG_CHAR_HIRAGANA_KE] 11,
[MSG_CHAR_HIRAGANA_KO] 10,
[MSG_CHAR_HIRAGANA_SA] 10,
[MSG_CHAR_HIRAGANA_SI] 9,
[MSG_CHAR_HIRAGANA_SU] 11,
[MSG_CHAR_HIRAGANA_SE] 11,
[MSG_CHAR_HIRAGANA_SO] 10,
[MSG_CHAR_HIRAGANA_TA] 11,
[MSG_CHAR_HIRAGANA_TI] 11,
[MSG_CHAR_HIRAGANA_TU] 11,
[MSG_CHAR_HIRAGANA_TE] 11,
[MSG_CHAR_HIRAGANA_TO] 10,
[MSG_CHAR_HIRAGANA_NA] 11,
[MSG_CHAR_HIRAGANA_NI] 11,
[MSG_CHAR_HIRAGANA_NU] 11,
[MSG_CHAR_HIRAGANA_NE] 11,
[MSG_CHAR_HIRAGANA_NO] 11,
[MSG_CHAR_HIRAGANA_HA] 11,
[MSG_CHAR_HIRAGANA_HI] 11,
[MSG_CHAR_HIRAGANA_HU] 11,
[MSG_CHAR_HIRAGANA_HE] 11,
[MSG_CHAR_HIRAGANA_HO] 11,
[MSG_CHAR_HIRAGANA_MA] 9,
[MSG_CHAR_HIRAGANA_MI] 11,
[MSG_CHAR_HIRAGANA_MU] 11,
[MSG_CHAR_HIRAGANA_ME] 11,
[MSG_CHAR_HIRAGANA_MO] 11,
[MSG_CHAR_HIRAGANA_YA] 11,
[MSG_CHAR_HIRAGANA_YU] 11,
[MSG_CHAR_HIRAGANA_YO] 11,
[MSG_CHAR_HIRAGANA_RA] 11,
[MSG_CHAR_HIRAGANA_RI] 11,
[MSG_CHAR_HIRAGANA_RU] 11,
[MSG_CHAR_HIRAGANA_RE] 11,
[MSG_CHAR_HIRAGANA_RO] 11,
[MSG_CHAR_HIRAGANA_WA] 11,
[MSG_CHAR_HIRAGANA_WO] 11,
[MSG_CHAR_HIRAGANA_N] 11,
[MSG_CHAR_HIRAGANA_VU] 11,
[MSG_CHAR_HIRAGANA_GA] 11,
[MSG_CHAR_HIRAGANA_GI] 11,
[MSG_CHAR_HIRAGANA_GU] 11,
[MSG_CHAR_HIRAGANA_GE] 11,
[MSG_CHAR_HIRAGANA_GO] 12,
[MSG_CHAR_HIRAGANA_ZA] 11,
[MSG_CHAR_HIRAGANA_ZI] 10,
[MSG_CHAR_HIRAGANA_ZU] 11,
[MSG_CHAR_HIRAGANA_ZE] 11,
[MSG_CHAR_HIRAGANA_ZO] 11,
[MSG_CHAR_HIRAGANA_DA] 11,
[MSG_CHAR_HIRAGANA_DI] 11,
[MSG_CHAR_HIRAGANA_DU] 11,
[MSG_CHAR_HIRAGANA_DE] 11,
[MSG_CHAR_HIRAGANA_DO] 11,
[MSG_CHAR_HIRAGANA_BA] 12,
[MSG_CHAR_HIRAGANA_BI] 11,
[MSG_CHAR_HIRAGANA_BU] 11,
[MSG_CHAR_HIRAGANA_BE] 11,
[MSG_CHAR_HIRAGANA_BO] 11,
[MSG_CHAR_HIRAGANA_PA] 12,
[MSG_CHAR_HIRAGANA_PI] 11,
[MSG_CHAR_HIRAGANA_PU] 11,
[MSG_CHAR_HIRAGANA_PE] 11,
[MSG_CHAR_HIRAGANA_PO] 11,
[MSG_CHAR_HIRAGANA_SMALL_A] 9,
[MSG_CHAR_HIRAGANA_SMALL_I] 8,
[MSG_CHAR_HIRAGANA_SMALL_U] 8,
[MSG_CHAR_HIRAGANA_SMALL_E] 8,
[MSG_CHAR_HIRAGANA_SMALL_O] 9,
[MSG_CHAR_HIRAGANA_SMALL_TU] 9,
[MSG_CHAR_HIRAGANA_SMALL_YA] 9,
[MSG_CHAR_HIRAGANA_SMALL_YU] 9,
[MSG_CHAR_HIRAGANA_SMALL_YO] 8,
[MSG_CHAR_KATAKANA_A] 11,
[MSG_CHAR_KATAKANA_I] 10,
[MSG_CHAR_KATAKANA_U] 10,
[MSG_CHAR_KATAKANA_E] 11,
[MSG_CHAR_KATAKANA_O] 11,
[MSG_CHAR_KATAKANA_KA] 11,
[MSG_CHAR_KATAKANA_KI] 11,
[MSG_CHAR_KATAKANA_KU] 10,
[MSG_CHAR_KATAKANA_KE] 11,
[MSG_CHAR_KATAKANA_KO] 11,
[MSG_CHAR_KATAKANA_SA] 11,
[MSG_CHAR_KATAKANA_SI] 11,
[MSG_CHAR_KATAKANA_SU] 11,
[MSG_CHAR_KATAKANA_SE] 11,
[MSG_CHAR_KATAKANA_SO] 11,
[MSG_CHAR_KATAKANA_TA] 11,
[MSG_CHAR_KATAKANA_TI] 11,
[MSG_CHAR_KATAKANA_TU] 11,
[MSG_CHAR_KATAKANA_TE] 11,
[MSG_CHAR_KATAKANA_TO] 8,
[MSG_CHAR_KATAKANA_NA] 11,
[MSG_CHAR_KATAKANA_NI] 9,
[MSG_CHAR_KATAKANA_NU] 11,
[MSG_CHAR_KATAKANA_NE] 10,
[MSG_CHAR_KATAKANA_NO] 11,
[MSG_CHAR_KATAKANA_HA] 11,
[MSG_CHAR_KATAKANA_HI] 11,
[MSG_CHAR_KATAKANA_HU] 11,
[MSG_CHAR_KATAKANA_HE] 11,
[MSG_CHAR_KATAKANA_HO] 11,
[MSG_CHAR_KATAKANA_MA] 11,
[MSG_CHAR_KATAKANA_MI] 10,
[MSG_CHAR_KATAKANA_MU] 11,
[MSG_CHAR_KATAKANA_ME] 10,
[MSG_CHAR_KATAKANA_MO] 11,
[MSG_CHAR_KATAKANA_YA] 11,
[MSG_CHAR_KATAKANA_YU] 11,
[MSG_CHAR_KATAKANA_YO] 10,
[MSG_CHAR_KATAKANA_RA] 11,
[MSG_CHAR_KATAKANA_RI] 10,
[MSG_CHAR_KATAKANA_RU] 11,
[MSG_CHAR_KATAKANA_RE] 10,
[MSG_CHAR_KATAKANA_RO] 10,
[MSG_CHAR_KATAKANA_WA] 10,
[MSG_CHAR_KATAKANA_WO] 10,
[MSG_CHAR_KATAKANA_N] 11,
[MSG_CHAR_KATAKANA_VU] 11,
[MSG_CHAR_KATAKANA_GA] 11,
[MSG_CHAR_KATAKANA_GI] 11,
[MSG_CHAR_KATAKANA_GU] 11,
[MSG_CHAR_KATAKANA_GE] 11,
[MSG_CHAR_KATAKANA_GO] 11,
[MSG_CHAR_KATAKANA_ZA] 11,
[MSG_CHAR_KATAKANA_ZI] 11,
[MSG_CHAR_KATAKANA_ZU] 11,
[MSG_CHAR_KATAKANA_ZE] 11,
[MSG_CHAR_KATAKANA_ZO] 11,
[MSG_CHAR_KATAKANA_DA] 11,
[MSG_CHAR_KATAKANA_DI] 11,
[MSG_CHAR_KATAKANA_DU] 9,
[MSG_CHAR_KATAKANA_DE] 11,
[MSG_CHAR_KATAKANA_DO] 11,
[MSG_CHAR_KATAKANA_BA] 11,
[MSG_CHAR_KATAKANA_BI] 11,
[MSG_CHAR_KATAKANA_BU] 11,
[MSG_CHAR_KATAKANA_BE] 11,
[MSG_CHAR_KATAKANA_BO] 11,
[MSG_CHAR_KATAKANA_PA] 11,
[MSG_CHAR_KATAKANA_PI] 11,
[MSG_CHAR_KATAKANA_PU] 11,
[MSG_CHAR_KATAKANA_PE] 11,
[MSG_CHAR_KATAKANA_PO] 11,
[MSG_CHAR_KATAKANA_SMALL_A] 9,
[MSG_CHAR_KATAKANA_SMALL_I] 8,
[MSG_CHAR_KATAKANA_SMALL_U] 8,
[MSG_CHAR_KATAKANA_SMALL_E] 9,
[MSG_CHAR_KATAKANA_SMALL_O] 9,
[MSG_CHAR_KATAKANA_SMALL_TU] 9,
[MSG_CHAR_KATAKANA_SMALL_YA] 9,
[MSG_CHAR_KATAKANA_SMALL_YU] 9,
[MSG_CHAR_KATAKANA_SMALL_YO] 8,
[MSG_CHAR_PROLONGED_SOUND] 11,
[MSG_CHAR_TILDE] 11,
[MSG_CHAR_LONGDASH_0] 12,
[MSG_CHAR_LONGDASH_1] 12,
[MSG_CHAR_LONGDASH_2] 11,
[MSG_CHAR_DIGIT_0] 11,
[MSG_CHAR_DIGIT_1] 8,
[MSG_CHAR_DIGIT_2] 10,
[MSG_CHAR_DIGIT_3] 11,
[MSG_CHAR_DIGIT_4] 11,
[MSG_CHAR_DIGIT_5] 10,
[MSG_CHAR_DIGIT_6] 11,
[MSG_CHAR_DIGIT_7] 11,
[MSG_CHAR_DIGIT_8] 11,
[MSG_CHAR_DIGIT_9] 11,
[MSG_CHAR_UP] 11,
[MSG_CHAR_DOWN] 11,
[MSG_CHAR_LEFT] 12,
[MSG_CHAR_RIGHT] 12,
[MSG_CHAR_EXCLAMATION] 11,
[MSG_CHAR_QUESTION] 10,
[MSG_CHAR_PLUS] 9,
[MSG_CHAR_MINUS] 9,
[MSG_CHAR_FORWARDSLASH] 11,
[MSG_CHAR_PERIOD] 8,
[MSG_CHAR_AND] 10,
[MSG_CHAR_HASH] 11,
[MSG_CHAR_HEART] 11,
[MSG_CHAR_STAR] 11,
[MSG_CHAR_LPAREN] 9,
[MSG_CHAR_RPAREN] 9,
[MSG_CHAR_TLBRACKET] 11,
[MSG_CHAR_BRBRACKET] 11,
[MSG_CHAR_MIDDLE_DOT] 8,
[MSG_CHAR_HIRAGANA_SMALL_N] 9,
[MSG_CHAR_KATAKANA_SMALL_N] 9,
[MSG_CHAR_KANJI_C6] 11,
};
u8 MsgCharWidthLatin[] = {
[MSG_CHAR_UPPER_A] 11,
[MSG_CHAR_UPPER_B] 10,
[MSG_CHAR_UPPER_C] 10,
[MSG_CHAR_UPPER_D] 10,
[MSG_CHAR_UPPER_E] 11,
[MSG_CHAR_UPPER_F] 10,
[MSG_CHAR_UPPER_G] 11,
[MSG_CHAR_UPPER_H] 10,
[MSG_CHAR_UPPER_I] 8,
[MSG_CHAR_UPPER_J] 9,
[MSG_CHAR_UPPER_K] 10,
[MSG_CHAR_UPPER_L] 11,
[MSG_CHAR_UPPER_M] 11,
[MSG_CHAR_UPPER_N] 11,
[MSG_CHAR_UPPER_O] 11,
[MSG_CHAR_UPPER_P] 11,
[MSG_CHAR_UPPER_Q] 11,
[MSG_CHAR_UPPER_R] 10,
[MSG_CHAR_UPPER_S] 11,
[MSG_CHAR_UPPER_T] 11,
[MSG_CHAR_UPPER_U] 11,
[MSG_CHAR_UPPER_V] 11,
[MSG_CHAR_UPPER_W] 11,
[MSG_CHAR_UPPER_X] 11,
[MSG_CHAR_UPPER_Y] 11,
[MSG_CHAR_UPPER_Z] 10,
[MSG_CHAR_LOWER_Z] 9,
};
u8 MsgCharWidthKanji[] = {
[MSG_CHAR_KANJI_00 ... MSG_CHAR_KANJI_77] = 11,
[MSG_CHAR_LOWER_X] 7,
};
u8 MsgCharWidthButtons[] = {
[MSG_CHAR_BUTTON_A] 13,
[MSG_CHAR_BUTTON_B] 13,
[MSG_CHAR_BUTTON_START] 16,
[MSG_CHAR_BUTTON_C_UP] 13,
[MSG_CHAR_BUTTON_C_DOWN] 13,
[MSG_CHAR_BUTTON_C_LEFT] 13,
[MSG_CHAR_BUTTON_C_RIGHT] 13,
[MSG_CHAR_BUTTON_Z] 12,
[MSG_CHAR_BUTTON_L] 14,
[MSG_CHAR_BUTTON_R] 14,
};
u8 MsgCharWidthMenuKana[] = {
[MSG_CHAR_HIRAGANA_A] 9,
[MSG_CHAR_HIRAGANA_I] 9,
[MSG_CHAR_HIRAGANA_U] 9,
[MSG_CHAR_HIRAGANA_E] 9,
[MSG_CHAR_HIRAGANA_O] 9,
[MSG_CHAR_HIRAGANA_KA] 9,
[MSG_CHAR_HIRAGANA_KI] 9,
[MSG_CHAR_HIRAGANA_KU] 9,
[MSG_CHAR_HIRAGANA_KE] 9,
[MSG_CHAR_HIRAGANA_KO] 9,
[MSG_CHAR_HIRAGANA_SA] 9,
[MSG_CHAR_HIRAGANA_SI] 9,
[MSG_CHAR_HIRAGANA_SU] 9,
[MSG_CHAR_HIRAGANA_SE] 9,
[MSG_CHAR_HIRAGANA_SO] 9,
[MSG_CHAR_HIRAGANA_TA] 9,
[MSG_CHAR_HIRAGANA_TI] 9,
[MSG_CHAR_HIRAGANA_TU] 9,
[MSG_CHAR_HIRAGANA_TE] 9,
[MSG_CHAR_HIRAGANA_TO] 9,
[MSG_CHAR_HIRAGANA_NA] 9,
[MSG_CHAR_HIRAGANA_NI] 9,
[MSG_CHAR_HIRAGANA_NU] 9,
[MSG_CHAR_HIRAGANA_NE] 9,
[MSG_CHAR_HIRAGANA_NO] 9,
[MSG_CHAR_HIRAGANA_HA] 9,
[MSG_CHAR_HIRAGANA_HI] 9,
[MSG_CHAR_HIRAGANA_HU] 9,
[MSG_CHAR_HIRAGANA_HE] 9,
[MSG_CHAR_HIRAGANA_HO] 9,
[MSG_CHAR_HIRAGANA_MA] 9,
[MSG_CHAR_HIRAGANA_MI] 9,
[MSG_CHAR_HIRAGANA_MU] 9,
[MSG_CHAR_HIRAGANA_ME] 9,
[MSG_CHAR_HIRAGANA_MO] 9,
[MSG_CHAR_HIRAGANA_YA] 9,
[MSG_CHAR_HIRAGANA_YU] 9,
[MSG_CHAR_HIRAGANA_YO] 9,
[MSG_CHAR_HIRAGANA_RA] 9,
[MSG_CHAR_HIRAGANA_RI] 9,
[MSG_CHAR_HIRAGANA_RU] 9,
[MSG_CHAR_HIRAGANA_RE] 9,
[MSG_CHAR_HIRAGANA_RO] 9,
[MSG_CHAR_HIRAGANA_WA] 9,
[MSG_CHAR_HIRAGANA_WO] 9,
[MSG_CHAR_HIRAGANA_N] 9,
[MSG_CHAR_HIRAGANA_VU] 9,
[MSG_CHAR_HIRAGANA_GA] 9,
[MSG_CHAR_HIRAGANA_GI] 9,
[MSG_CHAR_HIRAGANA_GU] 9,
[MSG_CHAR_HIRAGANA_GE] 9,
[MSG_CHAR_HIRAGANA_GO] 9,
[MSG_CHAR_HIRAGANA_ZA] 9,
[MSG_CHAR_HIRAGANA_ZI] 9,
[MSG_CHAR_HIRAGANA_ZU] 9,
[MSG_CHAR_HIRAGANA_ZE] 9,
[MSG_CHAR_HIRAGANA_ZO] 9,
[MSG_CHAR_HIRAGANA_DA] 9,
[MSG_CHAR_HIRAGANA_DI] 9,
[MSG_CHAR_HIRAGANA_DU] 9,
[MSG_CHAR_HIRAGANA_DE] 9,
[MSG_CHAR_HIRAGANA_DO] 9,
[MSG_CHAR_HIRAGANA_BA] 9,
[MSG_CHAR_HIRAGANA_BI] 9,
[MSG_CHAR_HIRAGANA_BU] 9,
[MSG_CHAR_HIRAGANA_BE] 9,
[MSG_CHAR_HIRAGANA_BO] 9,
[MSG_CHAR_HIRAGANA_PA] 9,
[MSG_CHAR_HIRAGANA_PI] 9,
[MSG_CHAR_HIRAGANA_PU] 9,
[MSG_CHAR_HIRAGANA_PE] 9,
[MSG_CHAR_HIRAGANA_PO] 9,
[MSG_CHAR_HIRAGANA_SMALL_A] 9,
[MSG_CHAR_HIRAGANA_SMALL_I] 8,
[MSG_CHAR_HIRAGANA_SMALL_U] 8,
[MSG_CHAR_HIRAGANA_SMALL_E] 8,
[MSG_CHAR_HIRAGANA_SMALL_O] 8,
[MSG_CHAR_HIRAGANA_SMALL_TU] 8,
[MSG_CHAR_HIRAGANA_SMALL_YA] 8,
[MSG_CHAR_HIRAGANA_SMALL_YU] 8,
[MSG_CHAR_HIRAGANA_SMALL_YO] 8,
[MSG_CHAR_KATAKANA_A] 9,
[MSG_CHAR_KATAKANA_I] 8,
[MSG_CHAR_KATAKANA_U] 9,
[MSG_CHAR_KATAKANA_E] 9,
[MSG_CHAR_KATAKANA_O] 9,
[MSG_CHAR_KATAKANA_KA] 9,
[MSG_CHAR_KATAKANA_KI] 9,
[MSG_CHAR_KATAKANA_KU] 9,
[MSG_CHAR_KATAKANA_KE] 9,
[MSG_CHAR_KATAKANA_KO] 9,
[MSG_CHAR_KATAKANA_SA] 9,
[MSG_CHAR_KATAKANA_SI] 9,
[MSG_CHAR_KATAKANA_SU] 9,
[MSG_CHAR_KATAKANA_SE] 9,
[MSG_CHAR_KATAKANA_SO] 9,
[MSG_CHAR_KATAKANA_TA] 9,
[MSG_CHAR_KATAKANA_TI] 9,
[MSG_CHAR_KATAKANA_TU] 9,
[MSG_CHAR_KATAKANA_TE] 9,
[MSG_CHAR_KATAKANA_TO] 9,
[MSG_CHAR_KATAKANA_NA] 9,
[MSG_CHAR_KATAKANA_NI] 9,
[MSG_CHAR_KATAKANA_NU] 9,
[MSG_CHAR_KATAKANA_NE] 9,
[MSG_CHAR_KATAKANA_NO] 9,
[MSG_CHAR_KATAKANA_HA] 9,
[MSG_CHAR_KATAKANA_HI] 9,
[MSG_CHAR_KATAKANA_HU] 9,
[MSG_CHAR_KATAKANA_HE] 9,
[MSG_CHAR_KATAKANA_HO] 9,
[MSG_CHAR_KATAKANA_MA] 9,
[MSG_CHAR_KATAKANA_MI] 9,
[MSG_CHAR_KATAKANA_MU] 9,
[MSG_CHAR_KATAKANA_ME] 9,
[MSG_CHAR_KATAKANA_MO] 9,
[MSG_CHAR_KATAKANA_YA] 9,
[MSG_CHAR_KATAKANA_YU] 9,
[MSG_CHAR_KATAKANA_YO] 9,
[MSG_CHAR_KATAKANA_RA] 9,
[MSG_CHAR_KATAKANA_RI] 9,
[MSG_CHAR_KATAKANA_RU] 9,
[MSG_CHAR_KATAKANA_RE] 9,
[MSG_CHAR_KATAKANA_RO] 9,
[MSG_CHAR_KATAKANA_WA] 9,
[MSG_CHAR_KATAKANA_WO] 9,
[MSG_CHAR_KATAKANA_N] 9,
[MSG_CHAR_KATAKANA_VU] 9,
[MSG_CHAR_KATAKANA_GA] 9,
[MSG_CHAR_KATAKANA_GI] 9,
[MSG_CHAR_KATAKANA_GU] 9,
[MSG_CHAR_KATAKANA_GE] 9,
[MSG_CHAR_KATAKANA_GO] 9,
[MSG_CHAR_KATAKANA_ZA] 9,
[MSG_CHAR_KATAKANA_ZI] 9,
[MSG_CHAR_KATAKANA_ZU] 9,
[MSG_CHAR_KATAKANA_ZE] 9,
[MSG_CHAR_KATAKANA_ZO] 9,
[MSG_CHAR_KATAKANA_DA] 9,
[MSG_CHAR_KATAKANA_DI] 9,
[MSG_CHAR_KATAKANA_DU] 9,
[MSG_CHAR_KATAKANA_DE] 9,
[MSG_CHAR_KATAKANA_DO] 9,
[MSG_CHAR_KATAKANA_BA] 9,
[MSG_CHAR_KATAKANA_BI] 9,
[MSG_CHAR_KATAKANA_BU] 9,
[MSG_CHAR_KATAKANA_BE] 9,
[MSG_CHAR_KATAKANA_BO] 9,
[MSG_CHAR_KATAKANA_PA] 9,
[MSG_CHAR_KATAKANA_PI] 9,
[MSG_CHAR_KATAKANA_PU] 9,
[MSG_CHAR_KATAKANA_PE] 9,
[MSG_CHAR_KATAKANA_PO] 9,
[MSG_CHAR_KATAKANA_SMALL_A] 8,
[MSG_CHAR_KATAKANA_SMALL_I] 8,
[MSG_CHAR_KATAKANA_SMALL_U] 8,
[MSG_CHAR_KATAKANA_SMALL_E] 8,
[MSG_CHAR_KATAKANA_SMALL_O] 8,
[MSG_CHAR_KATAKANA_SMALL_TU] 8,
[MSG_CHAR_KATAKANA_SMALL_YA] 8,
[MSG_CHAR_KATAKANA_SMALL_YU] 8,
[MSG_CHAR_KATAKANA_SMALL_YO] 8,
[MSG_CHAR_PROLONGED_SOUND] 9,
[MSG_CHAR_TILDE] 9,
[MSG_CHAR_LONGDASH_0] 9,
[MSG_CHAR_LONGDASH_1] 9,
[MSG_CHAR_LONGDASH_2] 11,
[MSG_CHAR_DIGIT_0] 9,
[MSG_CHAR_DIGIT_1] 8,
[MSG_CHAR_DIGIT_2] 9,
[MSG_CHAR_DIGIT_3] 9,
[MSG_CHAR_DIGIT_4] 9,
[MSG_CHAR_DIGIT_5] 9,
[MSG_CHAR_DIGIT_6] 9,
[MSG_CHAR_DIGIT_7] 9,
[MSG_CHAR_DIGIT_8] 9,
[MSG_CHAR_DIGIT_9] 9,
[MSG_CHAR_UP] 9,
[MSG_CHAR_DOWN] 9,
[MSG_CHAR_LEFT] 9,
[MSG_CHAR_RIGHT] 9,
[MSG_CHAR_EXCLAMATION] 9,
[MSG_CHAR_QUESTION] 9,
[MSG_CHAR_PLUS] 9,
[MSG_CHAR_MINUS] 9,
[MSG_CHAR_FORWARDSLASH] 10,
[MSG_CHAR_PERIOD] 7,
[MSG_CHAR_AND] 9,
[MSG_CHAR_HASH] 9,
[MSG_CHAR_HEART] 9,
[MSG_CHAR_STAR] 9,
[MSG_CHAR_LPAREN] 9,
[MSG_CHAR_RPAREN] 9,
[MSG_CHAR_TLBRACKET] 9,
[MSG_CHAR_BRBRACKET] 9,
[MSG_CHAR_MIDDLE_DOT] 7,
[MSG_CHAR_HIRAGANA_SMALL_N] 8,
[MSG_CHAR_KATAKANA_SMALL_N] 8,
[MSG_CHAR_KANJI_C6] 11,
[MSG_CHAR_KANJI_C7] 11,
};
u8 MsgCharWidthMenuLatin[] = {
[MSG_CHAR_UPPER_A] 9,
[MSG_CHAR_UPPER_B] 9,
[MSG_CHAR_UPPER_C] 9,
[MSG_CHAR_UPPER_D] 9,
[MSG_CHAR_UPPER_E] 9,
[MSG_CHAR_UPPER_F] 9,
[MSG_CHAR_UPPER_G] 9,
[MSG_CHAR_UPPER_H] 9,
[MSG_CHAR_UPPER_I] 8,
[MSG_CHAR_UPPER_J] 9,
[MSG_CHAR_UPPER_K] 9,
[MSG_CHAR_UPPER_L] 9,
[MSG_CHAR_UPPER_M] 9,
[MSG_CHAR_UPPER_N] 9,
[MSG_CHAR_UPPER_O] 9,
[MSG_CHAR_UPPER_P] 9,
[MSG_CHAR_UPPER_Q] 9,
[MSG_CHAR_UPPER_R] 9,
[MSG_CHAR_UPPER_S] 9,
[MSG_CHAR_UPPER_T] 9,
[MSG_CHAR_UPPER_U] 9,
[MSG_CHAR_UPPER_V] 9,
[MSG_CHAR_UPPER_W] 9,
[MSG_CHAR_UPPER_X] 9,
[MSG_CHAR_UPPER_Y] 9,
[MSG_CHAR_UPPER_Z] 9,
[MSG_CHAR_LOWER_Z] 9,
};
MessageCharData MsgCharDataNormal[] = {
{
.raster = MsgCharImgKana,
.charWidthTable = MsgCharWidthKana,
.monospaceWidth = 11,
.baseHeightOffset = 0,
},
{
.raster = MsgCharImgLatin,
.charWidthTable = MsgCharWidthLatin,
.monospaceWidth = 11,
.baseHeightOffset = 2,
},
{
.raster = MsgCharImgTitle,
.charWidthTable = MsgCharWidthKanji,
.monospaceWidth = 12,
.baseHeightOffset = 0,
},
{
.raster = MsgCharImgSubtitle,
.charWidthTable = MsgCharWidthButtons,
.monospaceWidth = 14,
.baseHeightOffset = 0,
},
{}
};
MessageCharset MsgCharsetNormal = {
.texSize = { 16, 14 },
.unk_02 = 14,
.newLineY = 16,
.charRasterSize = 112,
.rasters = MsgCharDataNormal
};
MessageCharData MsgCharDataMenu[] = {
{
.raster = MsgCharImgMenuKana,
.charWidthTable = MsgCharWidthMenuKana,
.monospaceWidth = 9,
.baseHeightOffset = 0,
},
{
.raster = MsgCharImgMenuLatin,
.charWidthTable = MsgCharWidthMenuLatin,
.monospaceWidth = 9,
.baseHeightOffset = 0,
},
{}
};
MessageCharset MsgCharsetMenu = {
.texSize = { 12, 12 },
.unk_02 = 10,
.newLineY = 12,
.charRasterSize = 72,
.rasters = MsgCharDataMenu
};
MessageCharset MsgCharsetMenu2 = {
.texSize = { 12, 12 },
.unk_02 = 10,
.newLineY = 16,
.charRasterSize = 72,
.rasters = MsgCharDataMenu
};
#else
u8 MsgCharWidthNormal[] = {
[MSG_CHAR_NOTE] 11,
[MSG_CHAR_EXCLAMTION] 8,
@ -249,6 +805,7 @@ MessageCharset MsgCharsetMenu = {
.charRasterSize = 128,
.rasters = MsgCharDataMenu
};
#endif
u8 MsgCharWidthTitle[] = {
8, 8, 8, 9, 8, 8, 8, 8,
@ -307,38 +864,44 @@ MessageCharset MsgCharsetSubtitle = {
MessageCharset* MsgCharsets[] = {
[MSG_FONT_NORMAL] &MsgCharsetNormal,
[MSG_FONT_MENU] &MsgCharsetMenu,
#if VERSION_JP
[MSG_FONT_2] &MsgCharsetMenu2,
#else
[MSG_FONT_2] &MsgCharsetMenu,
#endif
[MSG_FONT_TITLE] &MsgCharsetTitle,
[MSG_FONT_SUBTITLE] &MsgCharsetSubtitle,
NULL
};
u8 *MsgLetterRasterOffsets[] = {
charset_letter_content_1_OFFSET,
charset_letter_content_2_OFFSET,
charset_letter_content_3_OFFSET,
charset_letter_content_4_OFFSET,
charset_letter_content_5_OFFSET,
charset_letter_content_6_OFFSET,
charset_letter_content_7_OFFSET,
charset_letter_content_8_OFFSET,
charset_letter_content_9_OFFSET,
charset_letter_content_10_OFFSET,
charset_letter_content_11_OFFSET,
charset_letter_content_12_OFFSET,
s32 MsgLetterRasterOffsets[] = {
(s32) charset_letter_content_1_OFFSET,
(s32) charset_letter_content_2_OFFSET,
(s32) charset_letter_content_3_OFFSET,
(s32) charset_letter_content_4_OFFSET,
(s32) charset_letter_content_5_OFFSET,
(s32) charset_letter_content_6_OFFSET,
(s32) charset_letter_content_7_OFFSET,
(s32) charset_letter_content_8_OFFSET,
(s32) charset_letter_content_9_OFFSET,
(s32) charset_letter_content_10_OFFSET,
(s32) charset_letter_content_11_OFFSET,
(s32) charset_letter_content_12_OFFSET,
};
// TODO: palette offsets
s32 MsgLetterPaletteOffsets[] = {
#if VERSION_IQUE
0x00058890, 0x0005A490, 0x0005C090, 0x0005DC90,
0x0005F890, 0x00061490, 0x00063090, 0x00064C90,
0x00066890, 0x00068490, 0x0006A090, 0x0006BC90,
#else
0x0000EB78, 0x00010778, 0x00012378, 0x00013F78,
0x00015B78, 0x00017778, 0x00019378, 0x0001AF78,
0x0001CB78, 0x0001E778, 0x00020378, 0x00021F78,
#endif
(s32) charset_letter_content_1_pal_OFFSET + 6,
(s32) charset_letter_content_2_pal_OFFSET + 6,
(s32) charset_letter_content_3_pal_OFFSET + 6,
(s32) charset_letter_content_4_pal_OFFSET + 6,
(s32) charset_letter_content_5_pal_OFFSET + 6,
(s32) charset_letter_content_6_pal_OFFSET + 6,
(s32) charset_letter_content_7_pal_OFFSET + 6,
(s32) charset_letter_content_8_pal_OFFSET + 6,
(s32) charset_letter_content_9_pal_OFFSET + 6,
(s32) charset_letter_content_10_pal_OFFSET + 6,
(s32) charset_letter_content_11_pal_OFFSET + 6,
(s32) charset_letter_content_12_pal_OFFSET + 6,
};
MsgVoice MsgVoices[] = {
@ -359,6 +922,7 @@ MsgVoice MsgVoices[] = {
},
};
#if !VERSION_JP
s16 MsgStyleVerticalLineOffsets[] = {
[MSG_STYLE_NONE] 0,
[MSG_STYLE_RIGHT] -4,
@ -377,3 +941,4 @@ s16 MsgStyleVerticalLineOffsets[] = {
[MSG_STYLE_EPILOGUE] -4,
[MSG_STYLE_F] 0,
};
#endif

2225
src/msg_draw.c Normal file

File diff suppressed because it is too large Load Diff

View File

@ -76,6 +76,17 @@ INCLUDE_PAL("ui/msg/rewind_arrow.pal", ui_msg_rewind_arrow_pal);
INCLUDE_IMG("ui/msg/star.png", ui_msg_star_png);
INCLUDE_IMG("ui/msg/star_silhouette.png", ui_msg_star_silhouette_png);
#if VERSION_JP
BSS IMG_BIN MsgCharImgMenuLatin[0x798] ALIGNED(16);
BSS IMG_BIN MsgCharImgMenuKana[0x37F8] ALIGNED(16);
// in JP button icons uses this, which has smaller size to store the credits subtitle character set. What's going on here?
BSS IMG_BIN MsgCharImgSubtitle[0x460] ALIGNED(16);
BSS IMG_BIN MsgCharImgKana[0x5710] ALIGNED(16);
BSS PAL_BIN D_802F4560[80][8];
BSS IMG_BIN MsgCharImgLatin[0xBD0] ALIGNED(16);
// in JP kanji chars also uses this
BSS IMG_BIN MsgCharImgTitle[0x34F0] ALIGNED(16);
#else
BSS IMG_BIN MsgCharImgTitle[0xF60];
BSS IMG_BIN MsgCharImgNormal[0x5100];
BSS IMG_BIN MsgCharImgSubtitle[0xB88];
@ -84,5 +95,6 @@ BSS PAL_BIN D_802F4560[80][8]
ALIGNED(16)
#endif
;
#endif
MATCHING_BSS(0x6DA0);

View File

@ -41,12 +41,6 @@ u32 __kmc_pt_mode;
void* __printfunc = NULL;
#endif
#if !VERSION_IQUE
s32 D_80095904[3] = { 0 }; // padding?
s32 D_80095910[10] = { 0 };
s32 D_80095938[2] = { 0 };
#endif
void __createSpeedParam(void) {
__Dom1SpeedParam.type = DEVICE_TYPE_INIT;
__Dom1SpeedParam.latency = IO_READ(PI_BSD_DOM1_LAT_REG);

View File

@ -1,6 +1,12 @@
# This file describes what to name messages when splitting.
- [0x00, 0x0000, NONE]
- [0x20, 0x0000, Menus_Tutorial_SaveBlock]
- [0x20, 0x0001, Menus_Tutorial_HeartBlock]
- [0x20, 0x0002, Menus_Tutorial_GotItem]
- [0x20, 0x0003, Menus_Tutorial_GotStarPiece]
- [0x20, 0x0004, Menus_SavePrompt]
- [0x20, 0x0005, Menus_SaveComplete]
- [0x20, 0x000E, Menus_Party_Goombario]
- [0x20, 0x000F, Menus_Party_Kooper]
- [0x20, 0x0010, Menus_Party_Bombette]
@ -34,15 +40,55 @@
- [0x20, 0x002E, Menus_StarPowerDesc_UpAndAway]
- [0x20, 0x002F, Menus_StarPowerDesc_StarBeam]
- [0x20, 0x0030, Menus_StarPowerDesc_PeachBeam]
- [0x20, 0x004D, Menus_PartyMember]
- [0x20, 0x004F, Menus_JP_004F] # duplicate of Menus_Items
- [0x20, 0x0050, Menus_KeyItems]
- [0x20, 0x0051, Menus_DoubleDip]
- [0x20, 0x0052, Menus_TripleDip]
- [0x20, 0x0069, Menus_Jump]
- [0x20, 0x006A, Menus_Hammer]
- [0x20, 0x006B, Menus_Items]
- [0x20, 0x006C, Menus_0058]
- [0x20, 0x006D, Menus_0059]
- [0x20, 0x006E, Menus_005A]
- [0x20, 0x006F, Menus_005B]
- [0x20, 0x0070, Menus_005C]
- [0x20, 0x0071, Menus_005D]
- [0x20, 0x0072, Menus_005E]
- [0x20, 0x0073, Menus_005F]
- [0x20, 0x0074, Menus_0060]
- [0x20, 0x0075, Menus_0061]
- [0x20, 0x0076, Menus_0062]
- [0x20, 0x0077, Menus_0063]
- [0x20, 0x0078, Menus_0064]
- [0x20, 0x0079, Menus_0065]
- [0x20, 0x007A, Menus_0066]
- [0x20, 0x007B, Menus_0067]
- [0x20, 0x007C, Menus_0068]
- [0x20, 0x007D, Menus_0069]
- [0x20, 0x007E, Menus_0070]
- [0x20, 0x007F, Menus_006A]
- [0x20, 0x0080, Menus_006B]
- [0x20, 0x0081, Menus_JP_0081] # duplicate of Menus_006D
- [0x20, 0x0082, Menus_006C]
- [0x20, 0x0083, Menus_006D]
- [0x20, 0x0084, Menus_006E]
- [0x20, 0x0085, Menus_006F]
- [0x20, 0x0089, Menus_Merlee_IncreaseCoins]
- [0x20, 0x008A, Menus_Merlee_Exhausted]
- [0x20, 0x00BB, Menus_Action_UseItem]
- [0x20, 0x00C4, Menus_PlayerFirstStrike]
- [0x20, 0x00C5, Menus_PartnerFirstStrike]
- [0x20, 0x00C6, Menus_EnemyFirstStrike]
- [0x20, 0x00E7, Menus_00CD]
- [0x20, 0x00E8, Menus_00CE]
- [0x20, 0x00EA, Menus_00D0]
- [0x20, 0x00F0, Menus_00D6]
- [0x20, 0x00F1, Menus_00D7]
- [0x21, 0x000A, Choice_000A]
- [0x21, 0x001D, Choice_001D]
- [0x22, 0x0001, MenuTip_0032]
- [0x22, 0x0014, MenuTip_0033]
- [0x28, 0x0000, ItemShortDesc_FireFlower]
- [0x28, 0x0001, ItemShortDesc_SnowmanDoll]
- [0x28, 0x0002, ItemShortDesc_ThunderRage]

View File

@ -36,6 +36,27 @@ def get_palette_idx(charset_name, char_id):
pal_id = 0x13
elif char_id == 0xA1:
pal_id = 0x12
elif charset_name == "buttons":
if char_id == 0x00:
pal_id = 0x10
elif char_id == 0x01:
pal_id = 0x11
elif char_id == 0x02:
pal_id = 0x12
elif char_id == 0x03:
pal_id = 0x13
elif char_id == 0x04:
pal_id = 0x13
elif char_id == 0x05:
pal_id = 0x13
elif char_id == 0x06:
pal_id = 0x13
elif char_id == 0x07:
pal_id = 0x14
elif char_id == 0x08:
pal_id = 0x14
elif char_id == 0x09:
pal_id = 0x14
return pal_id
@ -43,14 +64,18 @@ class N64SegPm_charset(N64Segment):
def scan(self, rom_bytes):
data = rom_bytes[self.rom_start : self.rom_end]
# start, type, name, WIDTH, HEIGHT, NUM_RASTERS
# start, type, name, WIDTH, HEIGHT, NUM_RASTERS, palette
self.width = self.yaml[3]
self.height = self.yaml[4]
if len(self.yaml) > 6:
self.palette = self.yaml[6]
else:
self.palette = self.name
# pm_charset_palettes sibling
self.sibling = next(
filter(
lambda s: s.type == "pm_charset_palettes" and s.name == self.name,
lambda s: s.type == "pm_charset_palettes" and s.name == self.palette,
self.parent.subsegments,
)
)

View File

@ -20,13 +20,16 @@ class N64SegPm_charset_palettes(N64Segment):
def scan(self, rom_bytes):
data = rom_bytes[self.rom_start : self.rom_end]
# pm_charset sibling
self.sibling = next(
filter(
lambda s: s.type == "pm_charset" and s.name == self.name,
self.parent.subsegments,
)
)
# pm_charset siblings
self.siblings = []
for s in self.parent.subsegments:
if s.type == "pm_charset":
if len(s.yaml) > 6:
charset_pal = s.yaml[6]
else:
charset_pal = s.name
if self.name == charset_pal:
self.siblings.append(s)
self.palettes = []
@ -39,9 +42,9 @@ class N64SegPm_charset_palettes(N64Segment):
fs_dir.mkdir(parents=True, exist_ok=True)
for i, palette in enumerate(self.palettes):
raster = self.sibling.rasters[0]
raster = self.siblings[0].rasters[0]
w = png.Writer(self.sibling.width, self.sibling.height, palette=palette)
w = png.Writer(self.siblings[0].width, self.siblings[0].height, palette=palette)
with open(fs_dir / f"{i:02X}.png", "wb") as f:
w.write_array(f, raster)

View File

@ -7,7 +7,7 @@
.section .rodata
glabel __osIntOffTable
__osIntOffTable:
/* 73CB0 800988B0 */ .byte 0x00
/* 73CB1 800988B1 */ .byte 0x14
/* 73CB2 800988B2 */ .byte 0x18
@ -42,7 +42,7 @@ glabel __osIntOffTable
/* 73CCF 800988CF */ .byte 0x10
.size __osIntOffTable, . - __osIntOffTable
glabel __osIntTable
__osIntTable:
/* 73CD0 800988D0 80066894 */ .word .LIQUE_80066894
/* 73CD4 800988D4 80066858 */ .word .LIQUE_80066858
/* 73CD8 800988D8 80066834 */ .word .LIQUE_80066834
@ -59,7 +59,7 @@ glabel __osIntTable
.section .data
glabel __osHwIntTable
__osHwIntTable:
/* 6F8F0 800944F0 */ .word 0x00000000
/* 6F8F4 800944F4 */ .word 0x00000000
/* 6F8F8 800944F8 */ .word 0x00000000
@ -72,7 +72,7 @@ glabel __osHwIntTable
/* 6F914 80094514 */ .word 0x00000000
.size __osHwIntTable, . - __osHwIntTable
glabel __osPiIntTable
__osPiIntTable:
/* 6F918 80094518 */ .word 0x00000000
/* 6F91C 8009451C */ .word 0x00000000
.size __osPiIntTable, . - __osPiIntTable

View File

@ -843,6 +843,7 @@ segments:
- [auto, c, entity_model]
- [auto, c, worker]
- [auto, c, msg]
- [auto, c, msg_draw]
- [auto, c, draw_img_util]
- [auto, c, item_entity]
- [auto, c, screen_overlays]
@ -863,6 +864,7 @@ segments:
- [auto, .data, animator]
- [auto, .data, entity_model]
- [auto, .data, msg]
- [auto, .data, msg_draw]
- [auto, .data, draw_img_util]
- [auto, .data, item_entity]
- start: 0xE1D60

682
ver/jp/asm/bss3.s Normal file
View File

@ -0,0 +1,682 @@
.include "macro.inc"
# assembler directives
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.set gp=64 # allow use of 64-bit general purpose registers
#ifndef SHIFT
.section .bss
dlabel gAuxSpriteShadingProfile
.space 4
dlabel gHudElementsNumber
.space 4
dlabel gCurrentCustomModelGfxBuildersPtr
.space 4
dlabel D_801512BC
.space 4
dlabel entity_numEntities
.space 4
dlabel gEntityHeapBase
.space 4
dlabel gHudElementCacheTableRaster
.space 4
dlabel gCurrentModels
.space 4
dlabel gHudElementCacheTablePalette
.space 4
dlabel gAnimCount
.space 4
dlabel gMsgBGScrollAmtX
.space 4
dlabel D_801512DC
.space 4
dlabel gCurrentTransformGroups
.space 4
dlabel gMsgGlobalWaveCounter
.space 4
dlabel gCurrentCustomModelGfxPtr
.space 4
dlabel gLastCreatedEntityIndex
.space 4
dlabel gBackgroundTintModePtr
.space 4
dlabel gMsgVarImages
.space 4
dlabel ItemEntitiesCreated
.space 4
dlabel gCurrentModelTreeRoot
.space 4
dlabel gEntityHeapBottom
.space 4
dlabel D_80151304
.space 4
dlabel gCurrentRoomDoorSounds
.space 4
dlabel gMsgBGScrollAmtY
.space 2
dlabel D_8015130E
.space 2
dlabel gEntityHideMode
.space 4
dlabel gHudElementCacheBuffer
.space 4
dlabel gEntityModelCount
.space 4
dlabel D_8015131C
.space 4
dlabel D_80151320
.space 4
dlabel entity_numShadows
.space 4
dlabel gSpriteShadingProfile
.space 4
dlabel isAreaSpecificEntityDataLoaded
.space 4
dlabel entity_updateCounter
.space 4
dlabel gTriggerCount
.space 4
dlabel D_80151338
.space 4
dlabel gHudElementCacheSize
.space 4
dlabel gCurrentDoorSounds
.space 4
dlabel D_80151344
.space 4
dlabel D_80151348
.space 0x00000018
dlabel gWorldEntityList
.space 0x00000078
dlabel gBattleEntityList
.space 0x00000078
dlabel gCurrentEntityListPtr
.space 4
dlabel D_80151474
.space 4
dlabel gWorldShadowList
.space 0x000000f0
dlabel gBattleShadowList
.space 0x000000f0
dlabel gCurrentShadowListPtr
.space 4
dlabel wEntityDataLoadedSize
.space 4
dlabel bEntityDataLoadedSize
.space 4
dlabel D_80151664
.space 4
dlabel wEntityBlueprint
.space 0x00000078
.space 8
dlabel bEntityBlueprint
.space 0x00000014
dlabel D_801516FC
.space 4
dlabel gMainGameMode
.space 0x00000040
dlabel gCurrentTextureHeader
.space 0x00000030
dlabel wModelList
.space 0x00000400
dlabel bModelList
.space 0x00000400
dlabel wTransformGroups
.space 0x00000010
dlabel bTransformGroups
.space 0x00000010
dlabel wCustomModelGfx
.space 0x00000080
dlabel bCustomModelGfx
.space 0x00000080
dlabel wCustomModelGfxBuilders
.space 0x00000080
dlabel bCustomModelGfxBuilders
.space 0x00000080
dlabel wModelLocalVtxBuffers
.space 0x00000040
dlabel bModelLocalVtxBuffers
.space 0x00000040
dlabel gCurrentModelLocalVtxBuffers
.space 4
dlabel wModelTreeRoot
.space 4
dlabel bModelTreeRoot
.space 4
dlabel D_8015221C
.space 4
dlabel wModelTreeNodeInfo
.space 0x00000800
dlabel bModelTreeNodeInfo
.space 0x00000800
dlabel wBackgroundTintMode
.space 1
dlabel bBackgroundTintMode
.space 1
dlabel D_80153222
.space 1
dlabel D_80153223
.space 1
dlabel TreeIterPos
.space 4
dlabel wFogSettings
.space 0x00000020
dlabel bFogSettings
.space 0x0000001c
dlabel gFogSettings
.space 4
dlabel texPannerMainU
.space 0x00000040
dlabel texPannerMainV
.space 0x00000040
dlabel texPannerAuxU
.space 0x00000040
dlabel texPannerAuxV
.space 0x00000040
dlabel TextureHeapPos
.space 4
dlabel mtg_IterIdx
.space 2
dlabel mtg_SearchModelID
.space 2
dlabel mtg_FoundModelNode
.space 4
dlabel mtg_MinChild
.space 2
dlabel mtg_MaxChild
.space 2
dlabel D_80153378
.space 8
dlabel DepthCopyBuffer
.space 0x00000020
dlabel RenderTaskLists
.space 0x0000000c
dlabel RenderTaskListIdx
.space 4
dlabel RenderTaskCount
.space 0x00000010
dlabel D_801533C0
.space 0x00000300
dlabel D_801536C0
.space 0x00000300
dlabel D_801539C0
.space 0x00000040
dlabel D_80153A00
.space 0x00000040
dlabel gCurrentAnimMeshListPtr
.space 4
dlabel gAnimModelFogEnabled
.space 4
dlabel gAnimModelFogR
.space 4
dlabel gAnimModelFogG
.space 4
dlabel gAnimModelFogB
.space 4
dlabel gAnimModelFogA
.space 4
dlabel gAnimModelFogStart
.space 4
dlabel gAnimModelFogEnd
.space 4
dlabel gAnimVtxSegment
.space 4
dlabel D_80153A64
.space 4
dlabel gAnimRotMtx
.space 0x00000040
dlabel gAnimScaleMtx
.space 0x00000040
dlabel gAnimTranslateMtx
.space 0x00000040
dlabel gAnimRotScaleMtx
.space 0x00000040
dlabel gAnimTreeRoot
.space 8
dlabel gWorldEntityModelList
.space 0x00000400
dlabel gBattleEntityModelList
.space 0x00000400
dlabel gCurrentEntityModelList
.space 4
dlabel D_80154374
.space 4
dlabel entity_fog_enabled
.space 4
dlabel entity_fog_red
.space 4
dlabel entity_fog_green
.space 4
dlabel entity_fog_blue
.space 4
dlabel entity_fog_alpha
.space 4
dlabel entity_fog_dist_min
.space 4
dlabel entity_fog_dist_max
.space 4
dlabel D_80154394
.space 0x0000000c
dlabel gWorldWorkerList
.space 0x00000040
dlabel gBattleWorkerList
.space 0x00000040
dlabel gCurrentWorkerListPtr
.space 4
dlabel D_80154424
.space 0x0000000c
dlabel gMessageBuffers
.space 0x00000800
dlabel gMessagePrinters
.space 0x00000F40
dlabel gMessageMsgVars
.space 0x00000060
dlabel D_80155C98
.space 8
dlabel gMessageWindowProjMatrix
.space 0x00000080
dlabel D_JP_8015AC98_pad
.space 8
dlabel D_80155D20
.space 4
dlabel D_8015DD24
.space 0x00000050
dlabel msg_drawState
.space 4
dlabel D_8015DD78
.space 8
dlabel UnusedItemPhysicsScriptID
.space 4
dlabel ItemEntityAlternatingSpawn
.space 4
dlabel ItemEntityRenderGroup
.space 4
dlabel CoinSparkleCenterX
.space 2
dlabel CoinSparkleCenterY
.space 2
dlabel CoinSparkleCenterZ
.space 2
dlabel pad_ItemEntity
.space 0x000000E
dlabel WorldItemEntities
.space 0x00000400
dlabel BattleItemEntities
.space 0x00000400
dlabel gCurrentItemEntities
.space 4
dlabel isPickingUpItem
.space 2
dlabel ItemSpawnWithinPlayerPickupDelay
.space 2
dlabel ItemPickupMenu
.space 0x00000330
dlabel ItemPickupIconID
.space 4
dlabel ItemPickupStateDelay
.space 4
dlabel ThrowAwayMenuIdx
.space 4
dlabel ThrowAwayItemID
.space 4
dlabel ItemPickupGotOutline
.space 4
dlabel GotItemTutorialPrinter
.space 4
dlabel GotItemTutorialClosed
.space 4
dlabel D_801568FC
.space 0xC
dlabel screen_overlay_frontType
.space 4
dlabel screen_overlay_frontZoom
.space 4
dlabel screen_overlay_backType
.space 4
dlabel screen_overlay_backZoom
.space 4
dlabel D_80156910
.space 0x00000010
dlabel ImgFXCurrentTexture
.space 0x00000028
dlabel ImgFXVtxBuffers
.space 8
dlabel imgfx_vtxBuf
.space 4
dlabel ImgFXInstances
.space 4
dlabel D_80156958
.space 8
dlabel D_80156960
.space 8
dlabel D_80156968
.space 8
dlabel D_80156970
.space 0x00000010
dlabel ImgFXAnimHeaders
.space 0x000005a0
dlabel ImgFXDataCache
.space 0x00000040
dlabel gHudElementsWorld
.space 0x00000500
dlabel gHudElementsBattle
.space 0x00000500
dlabel gHudElements
.space 4
dlabel gHudElementCacheBufferWorld
.space 4
dlabel gHudElementCacheSizeWorld
.space 4
dlabel D_8015796C
.space 4
dlabel gHudElementCacheTableRasterWorld
.space 0x00000600
dlabel gHudElementCacheTablePaletteWorld
.space 0x00000600
dlabel gHudElementCacheBufferBattle
.space 4
dlabel gHudElementCacheSizeBattle
.space 4
dlabel D_80158578
.space 8
dlabel gHudElementCacheTableRasterBattle
.space 0x00000600
dlabel gHudElementCacheTablePaletteBattle
.space 0x00000600
dlabel D_80159180
.space 0x00000010
dlabel wTriggerList
.space 0x00000100
dlabel bTriggerList
.space 0x00000100
dlabel gCurrentTriggerListPtr
.space 4
dlabel D_80159394
.space 0x0000000c
dlabel gBackgroundPalette
.space 0x00000200
dlabel gBackroundLastScrollValue
.space 0x00000020
dlabel wSpriteShadingProfile
.space 0x000000b0
dlabel bSpriteShadingProfile
.space 0x000000b0
dlabel wSpriteShadingProfileAux
.space 0x000000b0
dlabel bSpriteShadingProfileAux
.space 0x000000b0
dlabel SpriteShadingPalette
.space 0x00000020
dlabel wEnvSounds
.space 0x00000118
dlabel bEnvSounds
.space 0x00000118
dlabel gCurrentEnvSounds
.space 4
dlabel SfxReverbMode
.space 4
dlabel D_80159AD8
.space 8
dlabel MusicDefaultVolume
.space 2
dlabel MusicTargetVolume
.space 2
dlabel MusicMaxVolume
.space 2
dlabel MusicCurrentVolume
.space 2
dlabel D_80159AE8
.space 8
dlabel gMusicSettings
.space 0x00000060
dlabel D_80159B50
.space 0x00000200
dlabel gWindows
.space 0x00000800
dlabel gCollisionStatus
.space 0x00000028
dlabel gCurrentHiddenPanels
.space 0x10
.space 8
dlabel TextureHandles
.space 0x00002200
dlabel ScreenOverlays
.space 0x00000030
dlabel AmbientSoundData
.space 0x00000010
dlabel CreateEntityVarArgBuffer
.space 0x00000010
dlabel D_8015C7E0
.space 0x20
dlabel D_8015C800
.space 0x2880
dlabel D_80164000
.space 0x32C60
#endif

View File

@ -1,54 +0,0 @@
.include "macro.inc"
.section .rodata
/* Generated by spimdisasm 1.11.1 */
glabel D_JP_80099D60
/* 75160 80099D60 */ .byte 0x00
/* 75161 80099D61 */ .byte 0x14
/* 75162 80099D62 */ .byte 0x18
/* 75163 80099D63 */ .byte 0x18
/* 75164 80099D64 */ .byte 0x1C
/* 75165 80099D65 */ .byte 0x1C
/* 75166 80099D66 */ .byte 0x1C
/* 75167 80099D67 */ .byte 0x1C
/* 75168 80099D68 */ .byte 0x20
/* 75169 80099D69 */ .byte 0x20
/* 7516A 80099D6A */ .byte 0x20
/* 7516B 80099D6B */ .byte 0x20
/* 7516C 80099D6C */ .byte 0x20
/* 7516D 80099D6D */ .byte 0x20
/* 7516E 80099D6E */ .byte 0x20
/* 7516F 80099D6F */ .byte 0x20
/* 75170 80099D70 */ .byte 0x00
/* 75171 80099D71 */ .byte 0x04
/* 75172 80099D72 */ .byte 0x08
/* 75173 80099D73 */ .byte 0x08
/* 75174 80099D74 */ .byte 0x0C
/* 75175 80099D75 */ .byte 0x0C
/* 75176 80099D76 */ .byte 0x0C
/* 75177 80099D77 */ .byte 0x0C
/* 75178 80099D78 */ .byte 0x10
/* 75179 80099D79 */ .byte 0x10
/* 7517A 80099D7A */ .byte 0x10
/* 7517B 80099D7B */ .byte 0x10
/* 7517C 80099D7C */ .byte 0x10
/* 7517D 80099D7D */ .byte 0x10
/* 7517E 80099D7E */ .byte 0x10
/* 7517F 80099D7F */ .byte 0x10
.align 3
glabel jtbl_JP_80099D80
/* 75180 80099D80 8006AEE0 */ .word .LJP_8006AEE0
/* 75184 80099D84 8006AEA4 */ .word .LJP_8006AEA4
/* 75188 80099D88 8006AE80 */ .word .LJP_8006AE80
/* 7518C 80099D8C 8006ACA8 */ .word .LJP_8006ACA8
/* 75190 80099D90 8006AC60 */ .word .LJP_8006AC60
/* 75194 80099D94 8006AE1C */ .word .LJP_8006AE1C
/* 75198 80099D98 8006AC24 */ .word .LJP_8006AC24
/* 7519C 80099D9C 8006AC30 */ .word .LJP_8006AC30
/* 751A0 80099DA0 8006AC3C */ .word .LJP_8006AC3C
/* 751A4 80099DA4 00000000 */ .word 0x00000000
/* 751A8 80099DA8 00000000 */ .word 0x00000000
/* 751AC 80099DAC 00000000 */ .word 0x00000000

View File

@ -1,71 +0,0 @@
.include "macro.inc"
.section .rodata
/* Generated by spimdisasm 1.11.1 */
glabel D_80099AA0
/* 74E80 80099A80 */ .short 0x0555
/* 74E82 80099A82 */ .short 0x0556
/* 74E84 80099A84 */ .short 0x0559
/* 74E86 80099A86 */ .short 0x055A
/* 74E88 80099A88 */ .short 0x0565
/* 74E8A 80099A8A */ .short 0x0566
/* 74E8C 80099A8C */ .short 0x0569
/* 74E8E 80099A8E */ .short 0x056A
/* 74E90 80099A90 */ .short 0x0595
/* 74E92 80099A92 */ .short 0x0596
/* 74E94 80099A94 */ .short 0x0599
/* 74E96 80099A96 */ .short 0x059A
/* 74E98 80099A98 */ .short 0x05A5
/* 74E9A 80099A9A */ .short 0x05A6
/* 74E9C 80099A9C */ .short 0x05A9
/* 74E9E 80099A9E */ .short 0x05AA
/* 74EA0 80099AA0 */ .short 0x0655
/* 74EA2 80099AA2 */ .short 0x0656
/* 74EA4 80099AA4 */ .short 0x0659
/* 74EA6 80099AA6 */ .short 0x065A
/* 74EA8 80099AA8 */ .short 0x0665
/* 74EAA 80099AAA */ .short 0x0666
/* 74EAC 80099AAC */ .short 0x0669
/* 74EAE 80099AAE */ .short 0x066A
/* 74EB0 80099AB0 */ .short 0x0695
/* 74EB2 80099AB2 */ .short 0x0696
/* 74EB4 80099AB4 */ .short 0x0699
/* 74EB6 80099AB6 */ .short 0x069A
/* 74EB8 80099AB8 */ .short 0x06A5
/* 74EBA 80099ABA */ .short 0x06A6
/* 74EBC 80099ABC */ .short 0x06A9
/* 74EBE 80099ABE */ .short 0x06AA
/* 74EC0 80099AC0 */ .short 0x0955
/* 74EC2 80099AC2 */ .short 0x0956
/* 74EC4 80099AC4 */ .short 0x0959
/* 74EC6 80099AC6 */ .short 0x095A
/* 74EC8 80099AC8 */ .short 0x0965
/* 74ECA 80099ACA */ .short 0x0966
/* 74ECC 80099ACC */ .short 0x0969
/* 74ECE 80099ACE */ .short 0x096A
/* 74ED0 80099AD0 */ .short 0x0995
/* 74ED2 80099AD2 */ .short 0x0996
/* 74ED4 80099AD4 */ .short 0x0999
/* 74ED6 80099AD6 */ .short 0x099A
/* 74ED8 80099AD8 */ .short 0x09A5
/* 74EDA 80099ADA */ .short 0x09A6
/* 74EDC 80099ADC */ .short 0x09A9
/* 74EDE 80099ADE */ .short 0x09AA
/* 74EE0 80099AE0 */ .short 0x0A55
/* 74EE2 80099AE2 */ .short 0x0A56
/* 74EE4 80099AE4 */ .short 0x0A59
/* 74EE6 80099AE6 */ .short 0x0A5A
/* 74EE8 80099AE8 */ .short 0x0A65
/* 74EEA 80099AEA */ .short 0x0A66
/* 74EEC 80099AEC */ .short 0x0A69
/* 74EEE 80099AEE */ .short 0x0A6A
/* 74EF0 80099AF0 */ .short 0x0A95
/* 74EF2 80099AF2 */ .short 0x0A96
/* 74EF4 80099AF4 */ .short 0x0A99
/* 74EF6 80099AF6 */ .short 0x0A9A
/* 74EF8 80099AF8 */ .short 0x0AA5
/* 74EFA 80099AFA */ .short 0x0AA6
/* 74EFC 80099AFC */ .short 0x0AA9
/* 74EFE 80099AFE */ .short 0x0AAA

View File

@ -10,7 +10,7 @@
/* Generated by spimdisasm 1.11.1 */
# Handwritten function
glabel func_JP_8006C650
glabel __osGetSR
/* 47A50 8006C650 40026000 */ mfc0 $v0, $12 # handwritten instruction
/* 47A54 8006C654 03E00008 */ jr $ra
/* 47A58 8006C658 00000000 */ nop

View File

@ -5,6 +5,78 @@
.set noreorder /* don't insert nops after branches */
.set gp=64 /* allow use of 64-bit general purpose registers */
.section .rodata
__osIntOffTable:
/* 75160 80099D60 */ .byte 0x00
/* 75161 80099D61 */ .byte 0x14
/* 75162 80099D62 */ .byte 0x18
/* 75163 80099D63 */ .byte 0x18
/* 75164 80099D64 */ .byte 0x1C
/* 75165 80099D65 */ .byte 0x1C
/* 75166 80099D66 */ .byte 0x1C
/* 75167 80099D67 */ .byte 0x1C
/* 75168 80099D68 */ .byte 0x20
/* 75169 80099D69 */ .byte 0x20
/* 7516A 80099D6A */ .byte 0x20
/* 7516B 80099D6B */ .byte 0x20
/* 7516C 80099D6C */ .byte 0x20
/* 7516D 80099D6D */ .byte 0x20
/* 7516E 80099D6E */ .byte 0x20
/* 7516F 80099D6F */ .byte 0x20
/* 75170 80099D70 */ .byte 0x00
/* 75171 80099D71 */ .byte 0x04
/* 75172 80099D72 */ .byte 0x08
/* 75173 80099D73 */ .byte 0x08
/* 75174 80099D74 */ .byte 0x0C
/* 75175 80099D75 */ .byte 0x0C
/* 75176 80099D76 */ .byte 0x0C
/* 75177 80099D77 */ .byte 0x0C
/* 75178 80099D78 */ .byte 0x10
/* 75179 80099D79 */ .byte 0x10
/* 7517A 80099D7A */ .byte 0x10
/* 7517B 80099D7B */ .byte 0x10
/* 7517C 80099D7C */ .byte 0x10
/* 7517D 80099D7D */ .byte 0x10
/* 7517E 80099D7E */ .byte 0x10
/* 7517F 80099D7F */ .byte 0x10
.align 3
__osIntTable:
/* 75180 80099D80 8006AEE0 */ .word .LJP_8006AEE0
/* 75184 80099D84 8006AEA4 */ .word .LJP_8006AEA4
/* 75188 80099D88 8006AE80 */ .word .LJP_8006AE80
/* 7518C 80099D8C 8006ACA8 */ .word .LJP_8006ACA8
/* 75190 80099D90 8006AC60 */ .word .LJP_8006AC60
/* 75194 80099D94 8006AE1C */ .word .LJP_8006AE1C
/* 75198 80099D98 8006AC24 */ .word .LJP_8006AC24
/* 7519C 80099D9C 8006AC30 */ .word .LJP_8006AC30
/* 751A0 80099DA0 8006AC3C */ .word .LJP_8006AC3C
/* 751A4 80099DA4 00000000 */ .word 0x00000000
/* 751A8 80099DA8 00000000 */ .word 0x00000000
/* 751AC 80099DAC 00000000 */ .word 0x00000000
.size __osIntTable, . - __osIntTable
.section .data
__osHwIntTable:
.word 0x00000000
.word 0x00000000
.word 0x00000000
.word 0x00000000
.word 0x00000000
.word 0x00000000
.word 0x00000000
.word 0x00000000
.word 0x00000000
.word 0x00000000
.size __osHwIntTable, . - __osHwIntTable
__osPiIntTable:
.word 0x00000000
.word 0x00000000
.size __osPiIntTable, . - __osPiIntTable
.section .text, "ax"
/* Generated by spimdisasm 1.11.1 */
@ -160,12 +232,12 @@ glabel osExceptionPreamble
/* 45FFC 8006ABFC 00095202 */ srl $t2, $t1, 8
/* 46000 8006AC00 214A0010 */ addi $t2, $t2, 0x10 # handwritten instruction
.LJP_8006AC04:
/* 46004 8006AC04 3C01800A */ lui $at, %hi(D_JP_80099D60)
/* 46004 8006AC04 3C01800A */ lui $at, %hi(__osIntOffTable)
/* 46008 8006AC08 002A0821 */ addu $at, $at, $t2
/* 4600C 8006AC0C 902A9D60 */ lbu $t2, %lo(D_JP_80099D60)($at)
/* 46010 8006AC10 3C01800A */ lui $at, %hi(jtbl_JP_80099D80)
/* 4600C 8006AC0C 902A9D60 */ lbu $t2, %lo(__osIntOffTable)($at)
/* 46010 8006AC10 3C01800A */ lui $at, %hi(__osIntTable)
/* 46014 8006AC14 002A0821 */ addu $at, $at, $t2
/* 46018 8006AC18 8C2A9D80 */ lw $t2, %lo(jtbl_JP_80099D80)($at)
/* 46018 8006AC18 8C2A9D80 */ lw $t2, %lo(__osIntTable)($at)
/* 4601C 8006AC1C 01400008 */ jr $t2
/* 46020 8006AC20 00000000 */ nop
glabel .LJP_8006AC24
@ -279,8 +351,8 @@ glabel .LJP_8006ACA8
/* 461A8 8006ADA8 24090002 */ addiu $t1, $zero, 0x2
/* 461AC 8006ADAC 3C01A460 */ lui $at, %hi(D_A4600010)
/* 461B0 8006ADB0 AC290010 */ sw $t1, %lo(D_A4600010)($at)
/* 461B4 8006ADB4 3C098009 */ lui $t1, %hi(D_80095938)
/* 461B8 8006ADB8 252958C8 */ addiu $t1, $t1, %lo(D_80095938)
/* 461B4 8006ADB4 3C098009 */ lui $t1, %hi(__osPiIntTable)
/* 461B8 8006ADB8 252958C8 */ addiu $t1, $t1, %lo(__osPiIntTable)
/* 461BC 8006ADBC 8D2A0000 */ lw $t2, 0x0($t1)
/* 461C0 8006ADC0 11400006 */ beqz $t2, .LJP_8006ADDC
/* 461C4 8006ADC4 00000000 */ nop

View File

@ -10,7 +10,7 @@
/* Generated by spimdisasm 1.11.1 */
# Handwritten function
glabel func_JP_80067420
glabel guMtxIdent
/* 42820 80067420 20080001 */ addi $t0, $zero, 0x1 # handwritten instruction
/* 42824 80067424 00084C00 */ sll $t1, $t0, 16
/* 42828 80067428 AC890000 */ sw $t1, 0x0($a0)

View File

@ -9,7 +9,7 @@
/* Generated by spimdisasm 1.11.1 */
glabel func_JP_800676E0
glabel guScale
/* 42AE0 800676E0 3C014780 */ lui $at, (0x47800000 >> 16)
/* 42AE4 800676E4 44812000 */ mtc1 $at, $f4
/* 42AE8 800676E8 44853000 */ mtc1 $a1, $f6

View File

@ -9,7 +9,7 @@
/* Generated by spimdisasm 1.11.1 */
glabel func_JP_80067800
glabel guTranslate
/* 42C00 80067800 3C014780 */ lui $at, (0x47800000 >> 16)
/* 42C04 80067804 44812000 */ mtc1 $at, $f4
/* 42C08 80067808 44853000 */ mtc1 $a1, $f6

View File

@ -5,6 +5,74 @@
.set noreorder /* don't insert nops after branches */
.set gp=64 /* allow use of 64-bit general purpose registers */
.section .rodata
glabel D_80099AA0
/* 74E80 80099A80 */ .short 0x0555
/* 74E82 80099A82 */ .short 0x0556
/* 74E84 80099A84 */ .short 0x0559
/* 74E86 80099A86 */ .short 0x055A
/* 74E88 80099A88 */ .short 0x0565
/* 74E8A 80099A8A */ .short 0x0566
/* 74E8C 80099A8C */ .short 0x0569
/* 74E8E 80099A8E */ .short 0x056A
/* 74E90 80099A90 */ .short 0x0595
/* 74E92 80099A92 */ .short 0x0596
/* 74E94 80099A94 */ .short 0x0599
/* 74E96 80099A96 */ .short 0x059A
/* 74E98 80099A98 */ .short 0x05A5
/* 74E9A 80099A9A */ .short 0x05A6
/* 74E9C 80099A9C */ .short 0x05A9
/* 74E9E 80099A9E */ .short 0x05AA
/* 74EA0 80099AA0 */ .short 0x0655
/* 74EA2 80099AA2 */ .short 0x0656
/* 74EA4 80099AA4 */ .short 0x0659
/* 74EA6 80099AA6 */ .short 0x065A
/* 74EA8 80099AA8 */ .short 0x0665
/* 74EAA 80099AAA */ .short 0x0666
/* 74EAC 80099AAC */ .short 0x0669
/* 74EAE 80099AAE */ .short 0x066A
/* 74EB0 80099AB0 */ .short 0x0695
/* 74EB2 80099AB2 */ .short 0x0696
/* 74EB4 80099AB4 */ .short 0x0699
/* 74EB6 80099AB6 */ .short 0x069A
/* 74EB8 80099AB8 */ .short 0x06A5
/* 74EBA 80099ABA */ .short 0x06A6
/* 74EBC 80099ABC */ .short 0x06A9
/* 74EBE 80099ABE */ .short 0x06AA
/* 74EC0 80099AC0 */ .short 0x0955
/* 74EC2 80099AC2 */ .short 0x0956
/* 74EC4 80099AC4 */ .short 0x0959
/* 74EC6 80099AC6 */ .short 0x095A
/* 74EC8 80099AC8 */ .short 0x0965
/* 74ECA 80099ACA */ .short 0x0966
/* 74ECC 80099ACC */ .short 0x0969
/* 74ECE 80099ACE */ .short 0x096A
/* 74ED0 80099AD0 */ .short 0x0995
/* 74ED2 80099AD2 */ .short 0x0996
/* 74ED4 80099AD4 */ .short 0x0999
/* 74ED6 80099AD6 */ .short 0x099A
/* 74ED8 80099AD8 */ .short 0x09A5
/* 74EDA 80099ADA */ .short 0x09A6
/* 74EDC 80099ADC */ .short 0x09A9
/* 74EDE 80099ADE */ .short 0x09AA
/* 74EE0 80099AE0 */ .short 0x0A55
/* 74EE2 80099AE2 */ .short 0x0A56
/* 74EE4 80099AE4 */ .short 0x0A59
/* 74EE6 80099AE6 */ .short 0x0A5A
/* 74EE8 80099AE8 */ .short 0x0A65
/* 74EEA 80099AEA */ .short 0x0A66
/* 74EEC 80099AEC */ .short 0x0A69
/* 74EEE 80099AEE */ .short 0x0A6A
/* 74EF0 80099AF0 */ .short 0x0A95
/* 74EF2 80099AF2 */ .short 0x0A96
/* 74EF4 80099AF4 */ .short 0x0A99
/* 74EF6 80099AF6 */ .short 0x0A9A
/* 74EF8 80099AF8 */ .short 0x0AA5
/* 74EFA 80099AFA */ .short 0x0AA6
/* 74EFC 80099AFC */ .short 0x0AA9
/* 74EFE 80099AFE */ .short 0x0AAA
.section .text, "ax"
/* Generated by spimdisasm 1.11.1 */

View File

@ -1,36 +1,37 @@
.include "macro.inc"
/* assembler directives */
.set noat /* allow manual use of $at */
.set noreorder /* don't insert nops after branches */
.set gp=64 /* allow use of 64-bit general purpose registers */
# assembler directives
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.set gp=64 # allow use of 64-bit general purpose registers
.section .text, "ax"
/* Generated by spimdisasm 1.11.1 */
.globl leoBootID
leoBootID = 0x800001a0
glabel func_JP_8006A5B0
/* 459B0 8006A5B0 00000000 */ nop
/* 459B4 8006A5B4 00000000 */ nop
/* 459B8 8006A5B8 00000000 */ nop
/* 459BC 8006A5BC 00000000 */ nop
/* 459C0 8006A5C0 00000000 */ nop
/* 459C4 8006A5C4 00000000 */ nop
/* 459C8 8006A5C8 00000000 */ nop
/* 459CC 8006A5CC 00000000 */ nop
/* 459D0 8006A5D0 00000000 */ nop
/* 459D4 8006A5D4 00000000 */ nop
/* 459D8 8006A5D8 00000000 */ nop
/* 459DC 8006A5DC 00000000 */ nop
/* 459E0 8006A5E0 00000000 */ nop
/* 459E4 8006A5E4 00000000 */ nop
/* 459E8 8006A5E8 00000000 */ nop
/* 459EC 8006A5EC 00000000 */ nop
/* 459F0 8006A5F0 00000000 */ nop
/* 459F4 8006A5F4 00000000 */ nop
/* 459F8 8006A5F8 00000000 */ nop
/* 459FC 8006A5FC 00000000 */ nop
/* 45A00 8006A600 00000000 */ nop
/* 45A04 8006A604 00000000 */ nop
/* 45A08 8006A608 00000000 */ nop
/* 45A0C 8006A60C 00000000 */ nop
.globl osTvType
osTvType = 0x80000300
.globl osRomType
osRomType = 0x80000304
.globl osRomBase
osRomBase = 0x80000308
.globl osResetType
osResetType = 0x8000030C
.globl osCicId
osCicId = 0x80000310
.globl osVersion
osVersion = 0x80000314
.globl osMemSize
osMemSize = 0x80000318
.globl osAppNMIBuffer
osAppNMIBuffer = 0x8000031C
.fill 0x60

View File

@ -383,6 +383,7 @@ segments:
- [auto, .data, os/contpfs]
- [auto, .data, os/contramread]
- [auto, .data, os/initialize]
- [auto, .data, os/exceptasm]
- [auto, .data, os/xlitob]
- [auto, .data, os/vi]
- [auto, .data, os/vimodepallan1]
@ -392,54 +393,6 @@ segments:
- [0x72A40, bin, gspF3DEX2kawase_fifo_data]
- [0x72E60, bin, n_aspMain_data]
- [0x73110]
- [auto, .rodata, is_debug]
- [auto, .rodata, main_loop]
- [auto, .rodata, 43F0]
- [auto, .rodata, curtains]
- [auto, .rodata, crash_screen]
- [auto, .rodata, cam_main]
- [auto, .rodata, cam_mode_5]
- [auto, .rodata, cam_mode_zone_interp]
- [auto, .rodata, cam_math]
- [auto, .rodata, state_logos]
- [auto, .rodata, state_file_select]
- [auto, .rodata, 111f0_len_860]
- [auto, .rodata, state_intro]
- [auto, .rodata, state_title_screen]
- [auto, .rodata, state_demo]
- [auto, .rodata, npc]
- [auto, .rodata, encounter]
- [auto, .rodata, status_icons]
- [auto, .rodata, 23680]
- [auto, .rodata, audio/28910_len_5090]
- [auto, .rodata, audio/2e230_len_2190]
- [auto, .rodata, audio/30450]
- [auto, .rodata, audio/33450]
- [auto, .rodata, audio/reverb]
- [auto, .rodata, 5B320]
- [auto, .rodata, world/world]
- [0x74E80, rodata, os/osSetIntMask]
- [0x74F00]
- [auto, .rodata, os/devmgr]
- [auto, .rodata, os/aisetfrequency]
- [auto, .rodata, os/guLookAt]
- [auto, .rodata, os/lookathil]
- [auto, .rodata, os/lookatref]
- [auto, .rodata, os/perspective]
- [auto, .rodata, os/xprintf]
- [auto, .rodata, os/viswapcontext]
- [0x75160, rodata, os/exceptasm]
- [0x751B0]
- [auto, .rodata, os/xlitob]
- [auto, .rodata, os/xldtob]
- [auto, .rodata, gcc/divdi3]
- [auto, .rodata, gcc/moddi3]
- [auto, .rodata, gcc/udivdi3]
- [auto, .rodata, gcc/umoddi3]
- [auto, .rodata, battle/battle]
- [0x75990]
- name: engine1
type: code
@ -458,41 +411,493 @@ segments:
- [auto, c, world/partners]
- [auto, hasm, bss2_2]
- [auto, c, 891b0_len_fb0]
- [0x8A0F0, bin]
- [0x91170, .data, npc_collision]
- [auto, c, 8a160_len_700]
- [auto, c, 8a860_len_3f30]
- [auto, c, draw_box]
- [auto, .data, npc_collision]
- [auto, .data, world/actions]
- [auto, .data, world/partners]
- [0x91B40, bin]
- [0xA2AC0, .data, 891b0_len_fb0]
- [0xA2AF0, bin]
- [0xA5250, .rodata, 77480]
- [auto, .rodata, 7B440]
- [auto, .rodata, 7BB60]
- [auto, .rodata, 7E9D0]
- [auto, .rodata, world/menus]
- [auto, .rodata, inventory]
- [auto, .rodata, world/partners]
- [auto, .rodata, 891b0_len_fb0]
- [0xA5910, bin, A5910]
- [0xA5F90]
- start: 0x91B40
type: .data
name: global_hud_scripts
subsegments:
- [auto, ci4, ui/input/a_button_unpressed, 48, 40]
- [auto, palette, ui/input/a_button_unpressed]
- [auto, ci4, ui/input/a_button_pressed, 48, 40]
- [auto, palette, ui/input/a_button_pressed]
- [auto, ci4, ui/input/analog_stick, 32, 32]
- [auto, palette, ui/input/analog_stick]
- [auto, ci4, ui/input/analog_stick_left, 40, 32]
- [auto, palette, ui/input/analog_stick_left]
- [auto, ci4, ui/input/analog_stick2, 32, 32]
- [auto, palette, ui/input/analog_stick2]
- [auto, ci4, ui/input/analog_stick_right, 40, 32]
- [auto, palette, ui/input/analog_stick_right]
- [auto, ci4, ui/input/analog_stick3, 32, 32]
- [auto, palette, ui/input/analog_stick3]
- [auto, ci4, ui/input/analog_stick_down, 32, 32]
- [auto, palette, ui/input/analog_stick_down]
- [auto, ci4, ui/input/analog_stick_up, 32, 32]
- [auto, palette, ui/input/analog_stick_up]
- [auto, ci4, ui/unk_bar, 72, 16]
- [auto, palette, ui/unk_bar]
- [auto, ci4, ui/ok, 24, 16]
- [auto, palette, ui/ok]
- [auto, ci4, ui/input/start_button, 48, 40]
- [auto, palette, ui/input/start_button]
- [auto, ci4, ui/input/start_button2, 48, 40]
- [auto, palette, ui/input/start_button2]
- [auto, ci4, ui/input/start_text, 24, 8]
- [auto, palette, ui/input/start_text]
- [auto, ci4, ui/hammer, 32, 32]
- [auto, palette, ui/hammer]
- [auto, palette, ui/hammer.disabled]
- [auto, ci4, ui/super_hammer, 32, 32]
- [auto, palette, ui/super_hammer]
- [auto, palette, ui/super_hammer.disabled]
- [auto, ci4, ui/ultra_hammer, 32, 32]
- [auto, palette, ui/ultra_hammer]
- [auto, palette, ui/ultra_hammer.disabled]
- [auto, ci4, ui/boots, 32, 32]
- [auto, palette, ui/boots]
- [auto, palette, ui/boots.disabled]
- [auto, ci4, ui/super_boots, 32, 32]
- [auto, palette, ui/super_boots]
- [auto, palette, ui/super_boots.disabled]
- [auto, ci4, ui/ultra_boots, 32, 32]
- [auto, palette, ui/ultra_boots]
- [auto, palette, ui/ultra_boots.disabled]
- [auto, ci4, ui/item, 32, 32]
- [auto, palette, ui/item]
- [auto, palette, ui/item.disabled]
- [auto, ci4, ui/star_spirit, 32, 32]
- [auto, palette, ui/star_spirit]
- [auto, palette, ui/star_spirit.disabled]
- [auto, ci4, ui/arrow_left, 16, 16]
- [auto, palette, ui/arrow_left]
- [auto, ci4, ui/arrow_right, 16, 16]
- [auto, palette, ui/arrow_right]
- [auto, ci4, ui/point_right, 16, 16]
- [auto, palette, ui/point_right]
- [auto, ci4, ui/pip, 8, 8]
- [auto, palette, ui/pip]
- [auto, ci4, ui/pip2, 8, 8]
- [auto, palette, ui/pip2]
- [auto, ci4, ui/coin_sparkle_0, 8, 8]
- [auto, palette, ui/coin_sparkle_0]
- [auto, ci4, ui/coin_sparkle_1, 8, 8]
- [auto, palette, ui/coin_sparkle_1]
- [auto, ci4, ui/coin_sparkle_2, 8, 8]
- [auto, palette, ui/coin_sparkle_2]
- [auto, ci4, ui/coin_sparkle_3, 8, 8]
- [auto, palette, ui/coin_sparkle_3]
- [auto, ci4, ui/coin_sparkle_4, 8, 8]
- [auto, palette, ui/coin_sparkle_4]
- [auto, ci4, ui/coin_sparkle_5, 8, 8]
- [auto, palette, ui/coin_sparkle_5]
- [auto, ci4, ui/coin_sparkle_none, 8, 8]
- [auto, palette, ui/coin_sparkle_none]
- [auto, ia8, ui/status/star_point_shine, 24, 24]
- [auto, ci4, ui/status/star_piece_0, 16, 16]
- [auto, palette, ui/status/star_piece_0]
- [auto, ci4, ui/status/star_piece_1, 16, 16]
- [auto, palette, ui/status/star_piece_1]
- [auto, ci4, ui/status/star_piece_2, 16, 16]
- [auto, palette, ui/status/star_piece_2]
- [auto, ci4, ui/menu_times, 8, 8]
- [auto, palette, ui/menu_times]
- [auto, ci4, ui/fp_cost, 16, 8]
- [auto, palette, ui/fp_cost]
- [auto, palette, ui/fp_cost.reduced]
- [auto, palette, ui/fp_cost.reduced_twice]
- [auto, palette, ui/fp_cost.notenough]
- [auto, ci4, ui/pow_cost, 16, 8]
- [auto, palette, ui/pow_cost]
- [auto, palette, ui/pow_cost.reduced]
- [auto, palette, ui/pow_cost.reduced_twice]
- [auto, palette, ui/pow_cost.notenough]
- [auto, ci4, ui/green_arrow_down, 16, 8]
- [auto, palette, ui/green_arrow_down]
- [auto, ci4, ui/green_arrow_up, 16, 8]
- [auto, palette, ui/green_arrow_up]
- [auto, ci4, ui/kaime, 56, 24]
- [auto, palette, ui/kaime]
- [auto, ci4, ui/unused_1, 16, 16]
- [auto, palette, ui/unused_1]
- [auto, ci4, ui/unused_2, 16, 16]
- [auto, palette, ui/unused_2]
- [auto, ci4, ui/unused_3, 16, 16]
- [auto, palette, ui/unused_3]
- [auto, ci4, ui/red_bar1, 112, 8]
- [auto, palette, ui/red_bar1]
- [auto, ci4, ui/empty_bar, 112, 8]
- [auto, palette, ui/empty_bar]
- [auto, ci4, ui/red_bar2, 104, 8]
- [auto, palette, ui/red_bar2]
- [auto, ci4, ui/eldstar, 32, 32]
- [auto, palette, ui/eldstar]
- [auto, palette, ui/eldstar.disabled]
- [auto, ci4, ui/mamar, 32, 32]
- [auto, palette, ui/mamar]
- [auto, palette, ui/mamar.disabled]
- [auto, ci4, ui/skolar, 32, 32]
- [auto, palette, ui/skolar]
- [auto, palette, ui/skolar.disabled]
- [auto, ci4, ui/muskular, 32, 32]
- [auto, palette, ui/muskular]
- [auto, palette, ui/muskular.disabled]
- [auto, ci4, ui/misstar, 32, 32]
- [auto, palette, ui/misstar]
- [auto, palette, ui/misstar.disabled]
- [auto, ci4, ui/klevar, 32, 32]
- [auto, palette, ui/klevar]
- [auto, palette, ui/klevar.disabled]
- [auto, ci4, ui/kalmar, 32, 32]
- [auto, palette, ui/kalmar]
- [auto, palette, ui/kalmar.disabled]
- [auto, ci4, ui/star_beam, 32, 32]
- [auto, palette, ui/star_beam]
- [auto, palette, ui/star_beam.disabled]
- [auto, ci4, ui/peach_beam, 32, 32]
- [auto, palette, ui/peach_beam]
- [auto, palette, ui/peach_beam.disabled]
- [auto, ci4, ui/mario_head, 16, 16]
- [auto, palette, ui/mario_head]
- [auto, ci4, ui/partner0, 32, 32]
- [auto, palette, ui/partner0]
- [auto, palette, ui/partner0.disabled]
- [auto, ci4, ui/goombario, 32, 32]
- [auto, palette, ui/goombario]
- [auto, palette, ui/goombario.disabled]
- [auto, ci4, ui/kooper, 32, 32]
- [auto, palette, ui/kooper]
- [auto, palette, ui/kooper.disabled]
- [auto, ci4, ui/bombette, 32, 32]
- [auto, palette, ui/bombette]
- [auto, palette, ui/bombette.disabled]
- [auto, ci4, ui/parakarry, 32, 32]
- [auto, palette, ui/parakarry]
- [auto, palette, ui/parakarry.disabled]
- [auto, ci4, ui/bow, 32, 32]
- [auto, palette, ui/bow]
- [auto, palette, ui/bow.disabled]
- [auto, ci4, ui/watt, 32, 32]
- [auto, palette, ui/watt]
- [auto, palette, ui/watt.disabled]
- [auto, ci4, ui/sushie, 32, 32]
- [auto, palette, ui/sushie]
- [auto, palette, ui/sushie.disabled]
- [auto, ci4, ui/lakilester, 32, 32]
- [auto, palette, ui/lakilester]
- [auto, palette, ui/lakilester.disabled]
- [auto, ci4, ui/partner9, 32, 32]
- [auto, palette, ui/partner9]
- [auto, palette, ui/partner9.disabled]
- [auto, ci4, ui/partner10, 32, 32]
- [auto, palette, ui/partner10]
- [auto, palette, ui/partner10.disabled]
- [auto, ci4, ui/partner11, 32, 32]
- [auto, palette, ui/partner11]
- [auto, palette, ui/partner11.disabled]
- [auto, ci4, ui/status/text_times, 8, 8]
- [auto, palette, ui/status/text_times]
- [auto, ci4, ui/status/text_slash, 8, 16]
- [auto, palette, ui/status/text_slash]
- [auto, ci4, ui/status/text_0, 16, 16]
- [auto, palette, ui/status/text_0]
- [auto, ci4, ui/status/text_1, 16, 16]
- [auto, palette, ui/status/text_1]
- [auto, ci4, ui/status/text_2, 16, 16]
- [auto, palette, ui/status/text_2]
- [auto, ci4, ui/status/text_3, 16, 16]
- [auto, palette, ui/status/text_3]
- [auto, ci4, ui/status/text_4, 16, 16]
- [auto, palette, ui/status/text_4]
- [auto, ci4, ui/status/text_5, 16, 16]
- [auto, palette, ui/status/text_5]
- [auto, ci4, ui/status/text_6, 16, 16]
- [auto, palette, ui/status/text_6]
- [auto, ci4, ui/status/text_7, 16, 16]
- [auto, palette, ui/status/text_7]
- [auto, ci4, ui/status/text_8, 16, 16]
- [auto, palette, ui/status/text_8]
- [auto, ci4, ui/status/text_9, 16, 16]
- [auto, palette, ui/status/text_9]
- [auto, ci4, ui/status/text_hp, 16, 16]
- [auto, palette, ui/status/text_hp]
- [auto, ci4, ui/status/text_fp, 16, 16]
- [auto, palette, ui/status/text_fp]
- [auto, ci4, ui/status/pow_unit_1, 8, 8]
- [auto, palette, ui/status/pow_unit_1]
- [auto, ci4, ui/status/pow_unit_2, 8, 8]
- [auto, palette, ui/status/pow_unit_2]
- [auto, ci4, ui/status/pow_unit_3, 8, 8]
- [auto, palette, ui/status/pow_unit_3]
- [auto, ci4, ui/status/pow_unit_4, 8, 8]
- [auto, palette, ui/status/pow_unit_4]
- [auto, ci4, ui/status/pow_unit_5, 8, 8]
- [auto, palette, ui/status/pow_unit_5]
- [auto, ci4, ui/status/pow_unit_6, 8, 8]
- [auto, palette, ui/status/pow_unit_6]
- [auto, ci4, ui/status/pow_unit_7, 8, 8]
- [auto, palette, ui/status/pow_unit_7]
- [auto, ci4, ui/status/pow_unit_empty, 8, 8]
- [auto, palette, ui/status/pow_unit_empty]
- [auto, ci4, ui/status/pow_star_1, 8, 8]
- [auto, palette, ui/status/pow_star_1]
- [auto, ci4, ui/status/pow_star_2, 8, 8]
- [auto, palette, ui/status/pow_star_2]
- [auto, ci4, ui/status/pow_star_3, 8, 8]
- [auto, palette, ui/status/pow_star_3]
- [auto, ci4, ui/status/pow_star_4, 8, 8]
- [auto, palette, ui/status/pow_star_4]
- [auto, ci4, ui/status/pow_star_5, 8, 8]
- [auto, palette, ui/status/pow_star_5]
- [auto, ci4, ui/status/pow_star_6, 8, 8]
- [auto, palette, ui/status/pow_star_6]
- [auto, ci4, ui/status/pow_star_7, 8, 8]
- [auto, palette, ui/status/pow_star_7]
- [auto, ci4, ui/status/pow_star_empty, 8, 8]
- [auto, palette, ui/status/pow_star_empty]
- [auto, ci4, ui/status/coin_0, 16, 16]
- [auto, palette, ui/status/coin_0]
- [auto, ci4, ui/status/coin_1, 16, 16]
- [auto, palette, ui/status/coin_1]
- [auto, ci4, ui/status/coin_2, 16, 16]
- [auto, palette, ui/status/coin_2]
- [auto, ci4, ui/status/coin_3, 16, 16]
- [auto, palette, ui/status/coin_3]
- [auto, ci4, ui/status/coin_4, 16, 16]
- [auto, palette, ui/status/coin_4]
- [auto, ci4, ui/status/coin_5, 16, 16]
- [auto, palette, ui/status/coin_5]
- [auto, ci4, ui/status/coin_6, 16, 16]
- [auto, palette, ui/status/coin_6]
- [auto, ci4, ui/status/coin_7, 16, 16]
- [auto, palette, ui/status/coin_7]
- [auto, ci4, ui/status/coin_8, 16, 16]
- [auto, palette, ui/status/coin_8]
- [auto, ci4, ui/status/coin_9, 16, 16]
- [auto, palette, ui/status/coin_9]
- [auto, ci4, ui/status/star_point_0, 16, 16]
- [auto, palette, ui/status/star_point_0]
- [auto, ci4, ui/status/star_point_1, 16, 16]
- [auto, palette, ui/status/star_point_1]
- [auto, ci4, ui/status/star_point_2, 16, 16]
- [auto, palette, ui/status/star_point_2]
- [auto, ci4, ui/status/star_point_3, 16, 16]
- [auto, palette, ui/status/star_point_3]
- [auto, ci4, ui/status/star_point_4, 16, 16]
- [auto, palette, ui/status/star_point_4]
- [auto, ci4, ui/status/star_point_5, 16, 16]
- [auto, palette, ui/status/star_point_5]
- [auto, ci4, ui/status/star_point_6, 16, 16]
- [auto, palette, ui/status/star_point_6]
- [auto, ci4, ui/status/star_point_7, 16, 16]
- [auto, palette, ui/status/star_point_7]
- [auto, ci4, ui/bluepip, 16, 16]
- [auto, palette, ui/bluepip]
- [auto, ci4, ui/bluepip2, 16, 16]
- [auto, palette, ui/bluepip2]
- [auto, ci4, ui/battle/status/charge_jump, 24, 24]
- [auto, palette, ui/battle/status/charge_jump]
- [auto, ci4, ui/battle/status/charge_hammer, 24, 24]
- [auto, palette, ui/battle/status/charge_hammer]
- [auto, ci4, ui/battle/status/charge_goombario, 24, 24]
- [auto, palette, ui/battle/status/charge_goombario]
- [auto, ci4, ui/battle/status/exclamation, 24, 24]
- [auto, palette, ui/battle/status/exclamation]
- [auto, ci4, ui/battle/status/sleep_0, 16, 16]
- [auto, palette, ui/battle/status/sleep_0]
- [auto, ci4, ui/battle/status/sleep_1, 16, 16]
- [auto, palette, ui/battle/status/sleep_1]
- [auto, ci4, ui/battle/status/sleep_2, 16, 16]
- [auto, palette, ui/battle/status/sleep_2]
- [auto, ci4, ui/battle/status/static_0, 16, 16]
- [auto, palette, ui/battle/status/static_0]
- [auto, ci4, ui/battle/status/static_1, 16, 16]
- [auto, palette, ui/battle/status/static_1]
- [auto, ci4, ui/battle/status/paralyze_0, 16, 16]
- [auto, palette, ui/battle/status/paralyze_0]
- [auto, ci4, ui/battle/status/paralyze_1, 16, 16]
- [auto, palette, ui/battle/status/paralyze_1]
- [auto, ci4, ui/battle/status/dizzy_0, 16, 16]
- [auto, palette, ui/battle/status/dizzy_0]
- [auto, ci4, ui/battle/status/dizzy_1, 16, 16]
- [auto, palette, ui/battle/status/dizzy_1]
- [auto, ci4, ui/battle/status/dizzy_2, 16, 16]
- [auto, palette, ui/battle/status/dizzy_2]
- [auto, ci4, ui/battle/status/dizzy_3, 16, 16]
- [auto, palette, ui/battle/status/dizzy_3]
- [auto, ci4, ui/battle/status/poison_0, 16, 16]
- [auto, palette, ui/battle/status/poison_0]
- [auto, ci4, ui/battle/status/poison_1, 16, 16]
- [auto, palette, ui/battle/status/poison_1]
- [auto, ci4, ui/battle/status/frozen_0, 16, 16]
- [auto, palette, ui/battle/status/frozen_0]
- [auto, ci4, ui/battle/status/frozen_1, 16, 16]
- [auto, palette, ui/battle/status/frozen_1]
- [auto, ci4, ui/battle/status/frozen_2, 16, 16]
- [auto, palette, ui/battle/status/frozen_2]
- [auto, ci4, ui/battle/status/frozen_3, 16, 16]
- [auto, palette, ui/battle/status/frozen_3]
- [auto, ci4, ui/battle/status/stop_0, 16, 16]
- [auto, palette, ui/battle/status/stop_0]
- [auto, ci4, ui/battle/status/stop_1, 16, 16]
- [auto, palette, ui/battle/status/stop_1]
- [auto, ci4, ui/battle/status/stop_2, 16, 16]
- [auto, palette, ui/battle/status/stop_2]
- [auto, ci4, ui/battle/status/stop_3, 16, 16]
- [auto, palette, ui/battle/status/stop_3]
- [auto, ci4, ui/battle/status/pdown_0, 16, 16]
- [auto, palette, ui/battle/status/pdown_0]
- [auto, ci4, ui/battle/status/pdown_1, 16, 16]
- [auto, palette, ui/battle/status/pdown_1]
- [auto, ci4, ui/battle/status/shrink_0, 16, 16]
- [auto, palette, ui/battle/status/shrink_0]
- [auto, ci4, ui/battle/status/shrink_1, 16, 16]
- [auto, palette, ui/battle/status/shrink_1]
- [auto, ci4, ui/battle/status/shrink_2, 16, 16]
- [auto, palette, ui/battle/status/shrink_2]
- [auto, ci4, ui/battle/status/shrink_3, 16, 16]
- [auto, palette, ui/battle/status/shrink_3]
- [auto, ci4, ui/battle/status/transparent_0, 16, 16]
- [auto, palette, ui/battle/status/transparent_0]
- [auto, ci4, ui/battle/status/transparent_1, 16, 16]
- [auto, palette, ui/battle/status/transparent_1]
- [auto, ci4, ui/battle/status/transparent_2, 16, 16]
- [auto, palette, ui/battle/status/transparent_2]
- [auto, ci4, ui/battle/status/transparent_3, 16, 16]
- [auto, palette, ui/battle/status/transparent_3]
- [auto, ci4, ui/battle/status/transparent_4, 16, 16]
- [auto, palette, ui/battle/status/transparent_4]
- [auto, ci4, ui/battle/status/transparent_5, 16, 16]
- [auto, palette, ui/battle/status/transparent_5]
- [auto, ci4, ui/battle/status/peril, 40, 16]
- [auto, palette, ui/battle/status/peril]
- [auto, ci4, ui/battle/status/danger, 40, 16]
- [auto, palette, ui/battle/status/danger]
- [auto, ci4, ui/battle/status/refund, 40, 24]
- [auto, palette, ui/battle/status/refund]
- [auto, ci4, ui/battle/status/happy, 40, 16]
- [auto, palette, ui/battle/status/happy]
- [auto, ci4, ui/battle/status/hp_drain, 40, 16]
- [auto, palette, ui/battle/status/hp_drain]
- [auto, ci4, ui/move_basic, 32, 32]
- [auto, palette, ui/move_basic]
- [auto, palette, ui/move_basic.disabled]
- [auto, ci4, ui/move_partner_1, 32, 32]
- [auto, palette, ui/move_partner_1]
- [auto, palette, ui/move_partner_1.disabled]
- [auto, ci4, ui/move_partner_2, 32, 32]
- [auto, palette, ui/move_partner_2]
- [auto, palette, ui/move_partner_2.disabled]
- [auto, ci4, ui/move_partner_3, 32, 32]
- [auto, palette, ui/move_partner_3]
- [auto, palette, ui/move_partner_3.disabled]
- [0x9D7E0]
- [0x9D7E8, rgba32, ui/stat_heart, 16, 16]
- [0x9DBE8]
- [0x9DBF0, rgba32, ui/stat_flower, 16, 16]
- [0x9DFF0]
- [auto, .data, 891b0_len_fb0]
- [auto, .data, 8a160_len_700]
- start: 0xA2AF0
type: .data
name: 8a160_len_700
subsegments:
- [0xA2AF0, ia8, A2960, 32, 16]
- [0xA2CF0] # Vp
- [0xA2D00, vtx, A2B70]
- [0xA2D50, gfx, A2BC0]
- [0xA2E18, gfx, A2C88]
- [0xA2E40]
- [auto, .data, 8a860_len_3f30]
- start: 0xA2EE0
type: .data
name: draw_box
subsegments:
- [0xA2EE0]
- [0xA2FE0, ia8, ui/box/corners9, 16, 64]
- [auto, ia8, ui/box/corners8, 24, 96]
- [auto, ia8, ui/box/corners6, 16, 40]
- [auto, ia8, ui/box/corners7, 16, 32]
- [auto, ia8, ui/box/corners3, 16, 96]
- [auto, ia8, ui/box/corners5, 16, 32]
- [auto, ia8, ui/box/corners4, 8, 32]
- [auto, i4, ui/box/bg_tile, 16, 16]
- [auto, ia8, ui/box/corners1, 16, 64]
- [auto, i4, ui/box/corners2, 16, 64]
- [auto, i4, ui/box/bg_flat, 16, 1]
- [0xA50E8]
- [0xA51C8, vtx, vtx/drawbox1]
- [0xA5208]
- [0xA5250]
- name: engine4
dir: engine4
type: code
start: 0xA5F90
vram: 0x8010f890
subsegments:
- [0xA5F90, bin]
- [0xa9770]
- [auto, c, sprite]
- [auto, c, 101b90_len_8f0]
- name: engine2
dir: engine2
type: code
start: 0xa9770
vram: 0x801148e0
subsegments:
- [0xa9770, bin]
- [0xeb1a0]
- [auto, hasm, bss3]
- [auto, c, entity]
- [auto, c, game_states]
- [auto, c, model]
- [auto, c, animator]
- [auto, c, entity_model]
- [auto, c, worker]
- [auto, c, msg]
- [auto, c, msg_draw]
- [auto, c, draw_img_util]
- [auto, c, item_entity]
- [auto, c, screen_overlays]
- [auto, c, screen_render_util]
- [auto, c, imgfx]
- [auto, c, hud_element]
- [auto, c, vars_access]
- [auto, c, trigger]
- [auto, c, background]
- [auto, c, audio/ambience]
- [auto, c, windows]
- [auto, c, sprite_shading]
- [auto, c, audio/sfx]
- [auto, c, audio/e0b30_len_b80]
- [auto, .data, entity]
- [auto, .data, model]
- [auto, .data, animator]
- [auto, .data, entity_model]
- [auto, .data, msg]
- [auto, .data, msg_draw]
- [auto, .data, item_entity]
- start: 0xE6620
type: .data
name: screen_overlays
subsegments:
- [0xE6620]
- [0xE6630, i4, ui/stencil/star, 32, 64]
- [0xE6A30, i4, ui/stencil/mario, 64, 64]
- [0xE7230, i4, ui/stencil/sharp_circle, 32, 32]
- [0xE7430, i8, ui/stencil/blurry_circle, 64, 64]
- [0xE8430, vtx, vtx/stencil1]
- [0xE84D0]
- [0xE86A0, vtx, vtx/stencil2]
- [0xE8820]
- [auto, .data, screen_render_util]
- [auto, .data, imgfx]
- [auto, .data, hud_element]
- [auto, .data, background]
- [auto, .data, audio/ambience]
- [auto, .data, windows]
- [auto, .data, audio/sfx]
- [auto, .data, audio/e0b30_len_b80]
- name: evt
dir: evt
@ -500,26 +905,233 @@ segments:
start: 0xeb1a0
vram: 0x802c3000
subsegments:
- [0xeb1a0, bin]
- [0x102620]
- [auto, c, script_list]
- [auto, c, evt]
- [auto, c, map_api]
- [auto, c, cam_api]
- [auto, c, model_api]
- [auto, c, npc_api]
- [auto, c, msg_api]
- [auto, c, player_api]
- [auto, c, virtual_entity]
- [auto, c, f8f60_len_1560]
- [auto, c, audio_api]
- [auto, c, item_api]
- [auto, c, fx_api]
- [auto, c, demo_api]
- name: entity
type: code
start: 0x102620
vram: 0x802dbd40
subsegments:
- [0x102620, bin]
- [0x10cc20]
- [auto, c, entity/Shadow]
- [auto, c, entity/SaveBlock]
- [auto, c, entity/Switch]
- [auto, c, entity/ShatteringBlock_common]
- [auto, c, entity/ShatteringBlock]
- [auto, c, entity/Block]
- [auto, c, entity/ItemBlock]
- [auto, c, entity/HeartBlock]
- [auto, c, entity/SuperBlock]
- [auto, c, entity/SimpleSpring]
- [auto, c, entity/HiddenPanel]
- [auto, c, entity/Chest]
- [auto, c, entity/WoodenCrate]
- [auto, c, entity/BlueWarpPipe]
- [auto, c, entity/Signpost]
- start: 0x10AA00
type: .data
name: entity/Shadow
subsegments:
- [0x10AA00, i4, entity/shadow/square, 16, 16]
- [0x10AA80, i4, entity/shadow/circle, 16, 16]
- [0x10AB00, vtx, entity/vtx/shadow1]
- [0x10AB40, vtx, entity/vtx/shadow2]
- [0x10AB80, i4, entity/shadow/square_big, 32, 32]
- [0x10AD80, i4, entity/shadow/circle_big, 32, 32]
- [0x10AF80]
- [auto, .data, entity/SaveBlock]
- [auto, .data, entity/Switch]
- [auto, .data, entity/ShatteringBlock_common]
- [auto, .data, entity/ShatteringBlock]
- [auto, .data, entity/Block]
- [auto, .data, entity/ItemBlock]
- [auto, .data, entity/HeartBlock]
- [auto, .data, entity/SuperBlock]
- [auto, .data, entity/SimpleSpring]
- [auto, .data, entity/HiddenPanel]
- [auto, .data, entity/Chest]
- [auto, .data, entity/WoodenCrate]
- [auto, .data, entity/BlueWarpPipe]
- [auto, .data, entity/Signpost]
- name: font_width
type: code
start: 0x10cc20
vram: 0x802e6380
subsegments:
- [0x10cc20, bin]
- [0x10f330]
- [0x10f330, bin]
- [auto, c, msg_data]
- [auto, c, msg_img]
- [auto, .data, msg_data]
- start: 0x10D030
type: .data
name: msg_img
subsegments:
- [auto, ci4, ui/msg/bubble_left, 32, 64, ui/msg/bubble_left]
- [auto, ci4, ui/msg/bubble_mid, 8, 64, ui/msg/bubble_left]
- [auto, ci4, ui/msg/bubble_right, 32, 64, ui/msg/bubble_left]
- [auto, ci4, ui/msg/arrow, 16, 16, ui/msg/bubble_left]
- [auto, ci4, ui/msg/frame_a_1_1, 8, 8, ui/msg/bubble_left]
- [auto, ci4, ui/msg/frame_a_1_2, 8, 8, ui/msg/bubble_left]
- [auto, ci4, ui/msg/frame_a_1_3, 8, 8, ui/msg/bubble_left]
- [auto, ci4, ui/msg/frame_a_1_4, 8, 8, ui/msg/bubble_left]
- [auto, ci4, ui/msg/frame_a_1_5, 8, 8, ui/msg/bubble_left]
- [auto, ci4, ui/msg/frame_a_2_1, 8, 8, ui/msg/bubble_left]
- [auto, ci4, ui/msg/frame_a_2_5, 8, 8, ui/msg/bubble_left]
- [auto, ci4, ui/msg/frame_a_3_1, 8, 8, ui/msg/bubble_left]
- [auto, ci4, ui/msg/frame_a_3_5, 8, 8, ui/msg/bubble_left]
- [auto, ci4, ui/msg/frame_a_4_1, 8, 8, ui/msg/bubble_left]
- [auto, ci4, ui/msg/frame_a_4_5, 8, 8, ui/msg/bubble_left]
- [auto, ci4, ui/msg/frame_a_5_1, 8, 8, ui/msg/bubble_left]
- [auto, ci4, ui/msg/frame_a_5_2, 8, 8, ui/msg/bubble_left]
- [auto, ci4, ui/msg/frame_a_5_3, 8, 8, ui/msg/bubble_left]
- [auto, ci4, ui/msg/frame_a_5_4, 8, 8, ui/msg/bubble_left]
- [auto, ci4, ui/msg/frame_a_5_5, 8, 8, ui/msg/bubble_left]
- [auto, ci4, ui/msg/frame_b_1_1, 8, 8, ui/msg/bubble_left]
- [auto, ci4, ui/msg/frame_b_1_2, 8, 8, ui/msg/bubble_left]
- [auto, ci4, ui/msg/frame_b_1_3, 8, 8, ui/msg/bubble_left]
- [auto, ci4, ui/msg/frame_b_1_4, 8, 8, ui/msg/bubble_left]
- [auto, ci4, ui/msg/frame_b_1_5, 8, 8, ui/msg/bubble_left]
- [auto, ci4, ui/msg/frame_b_2_1, 8, 8, ui/msg/bubble_left]
- [auto, ci4, ui/msg/frame_b_2_5, 8, 8, ui/msg/bubble_left]
- [auto, ci4, ui/msg/frame_b_3_1, 8, 8, ui/msg/bubble_left]
- [auto, ci4, ui/msg/frame_b_3_5, 8, 8, ui/msg/bubble_left]
- [auto, ci4, ui/msg/frame_b_4_1, 8, 8, ui/msg/bubble_left]
- [auto, ci4, ui/msg/frame_b_4_5, 8, 8, ui/msg/bubble_left]
- [auto, ci4, ui/msg/frame_b_5_1, 8, 8, ui/msg/bubble_left]
- [auto, ci4, ui/msg/frame_b_5_2, 8, 8, ui/msg/bubble_left]
- [auto, ci4, ui/msg/frame_b_5_3, 8, 8, ui/msg/bubble_left]
- [auto, ci4, ui/msg/frame_b_5_4, 8, 8, ui/msg/bubble_left]
- [auto, ci4, ui/msg/frame_b_5_5, 8, 8, ui/msg/bubble_left]
# all 16 following palettes can be applied to all images above
- {start: auto, type: palette, name: ui/msg/bubble_left, size: 0x200}
#- [auto, palette, ui/msg/palette_0]
#- [auto, palette, ui/msg/palette_1]
#- [auto, palette, ui/msg/palette_2]
#- [auto, palette, ui/msg/palette_3]
#- [auto, palette, ui/msg/palette_4]
#- [auto, palette, ui/msg/palette_5]
#- [auto, palette, ui/msg/palette_6]
#- [auto, palette, ui/msg/palette_7]
#- [auto, palette, ui/msg/palette_8]
#- [auto, palette, ui/msg/palette_9]
#- [auto, palette, ui/msg/palette_A]
#- [auto, palette, ui/msg/palette_B]
#- [auto, palette, ui/msg/palette_C]
#- [auto, palette, ui/msg/palette_D]
#- [auto, palette, ui/msg/palette_E]
#- [auto, palette, ui/msg/palette_F]
- [auto, ci4, ui/msg/sign_corner_topleft, 16, 16, ui/msg/sign_corner_topleft]
- [auto, ci4, ui/msg/sign_corner_topright, 16, 16, ui/msg/sign_corner_topleft]
- [auto, ci4, ui/msg/sign_corner_bottomleft, 16, 16, ui/msg/sign_corner_topleft]
- [auto, ci4, ui/msg/sign_corner_bottomright, 16, 16, ui/msg/sign_corner_topleft]
- [auto, ci4, ui/msg/lamppost_corner_bottomright, 16, 16, ui/msg/lamppost_corner_bottomright]
- [auto, ci4, ui/msg/sign_side_top, 32, 16, ui/msg/sign_corner_topleft]
- [auto, ci4, ui/msg/sign_side_left, 16, 40, ui/msg/sign_corner_topleft]
- [auto, ci4, ui/msg/sign_side_right, 16, 40, ui/msg/sign_corner_topleft]
- [auto, ci4, ui/msg/sign_side_bottom, 32, 16, ui/msg/sign_corner_topleft]
- [auto, ci4, ui/msg/sign_fill, 8, 8, ui/msg/sign_corner_topleft]
# these two palettes can be applied to all sign and lamppost frame images
- [auto, palette, ui/msg/sign_corner_topleft]
- [auto, palette, ui/msg/lamppost_corner_bottomright]
- [auto, i4, ui/msg/background, 64, 64]
- [auto, ci4, ui/msg/rewind_arrow, 24, 24]
- [auto, palette, ui/msg/rewind_arrow]
- [auto, rgba16, ui/msg/star, 16, 18]
- [auto, i4, ui/msg/star_silhouette, 16, 20]
- type: group
dir: charset
vram: 0
start: 0x10F330
subsegments:
- [0x10F330, linker_offset, kana]
- [0x10F330, pm_charset, kana, 16, 14, 0xC7, standard]
- [0x114A40, linker_offset, latin]
- [0x114A40, pm_charset, latin, 16, 14, 0x1B, standard]
- [0x115610, linker_offset, kanji]
- [0x115610, pm_charset, kanji, 16, 14, 0x79, standard]
- [0x118B00, linker_offset, buttons]
- [0x118B00, pm_charset, buttons, 16, 14, 0xA, standard]
- [0x118F60, linker_offset, menu_kana]
- [0x118F60, pm_charset, menu_kana, 12, 12, 0xC8, standard]
- [0x11C7A0, linker_offset, menu_latin]
- [0x11C7A0, pm_charset, menu_latin, 12, 12, 0x1B, standard]
- [0x11CF38, linker_offset, standard_pal]
- [0x11CF38, pm_charset_palettes, standard, 0x50]
- [0x11D438, linker_offset, title]
- [0x11D438, pm_charset, title, 12, 15, 0x29]
- [0x11E398, linker_offset, subtitle]
- [0x11E398, pm_charset, subtitle, 12, 12, 0x29]
- [0x11EF20, linker_offset, credits_pal]
- [0x11EF20, pm_charset_palettes, subtitle, 1]
- [0x11EF30, pm_charset_palettes, title, 1]
- [0x11EF40, ci8, peach_letter, 150, 105]
- [0x122CC8, palette, peach_letter]
- [0x122EC8, linker_offset, postcard]
- [0x122EC8, ci4, postcard, 150, 105]
- [0x124D90, linker_offset, postcard_pal]
- [0x124D90, palette, postcard]
- [0x124DB0, linker_offset, letter_content_1]
- [0x124DB0, ci8, letter_content_1, 70, 95]
- [0x1267B0, linker_offset, letter_content_1_pal]
- [0x1267B0, palette, letter_content_1]
- [0x1269B0, linker_offset, letter_content_2]
- [0x1269B0, ci8, letter_content_2, 70, 95]
- [0x1283B0, linker_offset, letter_content_2_pal]
- [0x1283B0, palette, letter_content_2]
- [0x1285B0, linker_offset, letter_content_3]
- [0x1285B0, ci8, letter_content_3, 70, 95]
- [0x129FB0, linker_offset, letter_content_3_pal]
- [0x129FB0, palette, letter_content_3]
- [0x12A1B0, linker_offset, letter_content_4]
- [0x12A1B0, ci8, letter_content_4, 70, 95]
- [0x12BBB0, linker_offset, letter_content_4_pal]
- [0x12BBB0, palette, letter_content_4]
- [0x12BDB0, linker_offset, letter_content_5]
- [0x12BDB0, ci8, letter_content_5, 70, 95]
- [0x12D7B0, linker_offset, letter_content_5_pal]
- [0x12D7B0, palette, letter_content_5]
- [0x12D9B0, linker_offset, letter_content_6]
- [0x12D9B0, ci8, letter_content_6, 70, 95]
- [0x12F3B0, linker_offset, letter_content_6_pal]
- [0x12F3B0, palette, letter_content_6]
- [0x12F5B0, linker_offset, letter_content_7]
- [0x12F5B0, ci8, letter_content_7, 70, 95]
- [0x130FB0, linker_offset, letter_content_7_pal]
- [0x130FB0, palette, letter_content_7]
- [0x1311B0, linker_offset, letter_content_8]
- [0x1311B0, ci8, letter_content_8, 70, 95]
- [0x132BB0, linker_offset, letter_content_8_pal]
- [0x132BB0, palette, letter_content_8]
- [0x132DB0, linker_offset, letter_content_9]
- [0x132DB0, ci8, letter_content_9, 70, 95]
- [0x1347B0, linker_offset, letter_content_9_pal]
- [0x1347B0, palette, letter_content_9]
- [0x1349B0, linker_offset, letter_content_10]
- [0x1349B0, ci8, letter_content_10, 70, 95]
- [0x1363B0, linker_offset, letter_content_10_pal]
- [0x1363B0, palette, letter_content_10]
- [0x1365B0, linker_offset, letter_content_11]
- [0x1365B0, ci8, letter_content_11, 70, 95]
- [0x137FB0, linker_offset, letter_content_11_pal]
- [0x137FB0, palette, letter_content_11]
- [0x1381B0, linker_offset, letter_content_12]
- [0x1381B0, ci8, letter_content_12, 70, 95]
- [0x139BB0, linker_offset, letter_content_12_pal]
- [0x139BB0, palette, letter_content_12]
- [0x139DB0]
- [0x139DB0, bin]
- name: battle_code
type: bin

File diff suppressed because it is too large Load Diff

View File

@ -7,8 +7,6 @@ D_A450000C = 0xA450000C;
D_A4600010 = 0xA4600010;
D_A4800018 = 0xA4800018;
obfuscated_obfuscation_shims_ROM_START = 0xF79E611F;
filemenu_ROM_START = 0x0016B550;
filemenu_ROM_END = 0x01749F0;
filemenu_VRAM = 0x80242370;
@ -29,233 +27,15 @@ pause_RODATA_END = 0x8026F790;
pause_BSS_START = 0x8026F790;
pause_BSS_END = 0x80277D00;
sprite_shading_profiles_data_ROM_START = sprite_shading_profiles_ROM_START + 0x1D0;
battle_heap_create_obfuscated_ROM_START = 0x31F1A0;
obfuscation_shims_ROM_START = 0x31F340;
battle_heap_create_obfuscated_ROM_END = 0x31F340;
obfuscation_shims_ROM_END = 0x31F430;
obfuscated_obfuscation_shims_VRAM = 0x7599F6D8;
osViModeNtscLan1 = 0x80095800;
osMemSize = 0x80000318;
osTvType = 0x80000300;
osMemSize = 0x80000318;
osRomBase = 0x80000308;
osResetType = 0x8000030C;
osAppNMIBuffer = 0x8000031C;
// main.data
__osGetSR = 0x8006C650;
__osHwIntTable = 0x800958A0;
D_80074010 = 0x80073FF0;
// main.bss
obfuscated_obfuscation_shims_ROM_START = 0xF79E611F;
// subsequent segments
draw_box = 0x800F5470;
HES_AsleepBegin = 0x80104E54;
HES_AsleepEnd = 0x80104FF4;
HES_ElectrifiedBegin = 0x80105238;
HES_ElectrifiedEnd = 0x80105468;
HES_ParalyzedBegin = 0x801056AC;
HES_ParalyzedEnd = 0x801058DC;
HES_DizzyBegin = 0x80105A90;
HES_DizzyEnd = 0x80105C30;
HES_PoisonedBegin = 0x80105DE4;
HES_PoisonedEnd = 0x80105F84;
HES_FrozenBegin = 0x80106138;
HES_FrozenEnd = 0x801062D8;
HES_WeakenedLoop = 0x80106430;
HES_WeakenedBegin = 0x8010646C;
HES_WeakenedEnd = 0x801065EC;
HES_StoppedBegin = 0x801067A0;
HES_StoppedEnd = 0x80106940;
HES_ShrunkBegin = 0x80106AF4;
HES_ShrunkEnd = 0x80106C94;
HES_TransparentBegin = 0x80106E68;
HES_TransparentEnd = 0x80107028;
HES_BoostJumpBegin = 0x801071AC;
HES_BoostJumpEnd = 0x8010730C;
HES_BoostHammerBegin = 0x801074A4;
HES_BoostHammerEnd = 0x80107604;
HES_BoostPartner = 0x80107770;
HES_Surprise = 0x8010779C;
HES_Partner0 = 0x80107E38;
HES_Partner0Disabled = 0x80107E60;
HES_Goombario = 0x80107E88;
HES_GoombarioDisabled = 0x80107EB0;
HES_Kooper = 0x80107ED8;
HES_KooperDisabled = 0x80107F00;
HES_Bombette = 0x80107F28;
HES_BombetteDisabled = 0x80107F50;
HES_Parakarry = 0x80107F78;
HES_ParakarryDisabled = 0x80107FA0;
HES_Bow = 0x80107FC8;
HES_BowDisabled = 0x80107FF0;
HES_Watt = 0x80108018;
HES_WattDisabled = 0x80108040;
HES_Sushie = 0x80108068;
HES_SushieDisabled = 0x80108090;
HES_Lakilester = 0x801080B8;
HES_LakilesterDisabled = 0x801080E0;
HES_Partner9 = 0x80108108;
HES_Partner9Disabled = 0x80108130;
HES_PartnerA = 0x80108158;
HES_PartnerADisabled = 0x80108180;
HES_PartnerB = 0x801081A8;
HES_PartnerBDisabled = 0x801081D0;
HES_Peril = 0x80108B54;
HES_Danger = 0x80108BA4;
HES_MoveDiamond = 0x801094C8;
HES_MoveDiamond_disabled = 0x80109568;
spr_init_sprites = 0x80111448;
spr_render_init = 0x801115B0;
spr_update_player_sprite = 0x801115DC;
spr_draw_player_sprite = 0x80111790;
func_802DDEC4 = 0x80111A14;
spr_load_npc_sprite = 0x80111C3C;
spr_update_sprite = 0x80111DFC;
spr_draw_npc_sprite = 0x80111F28;
spr_get_notify_value = 0x80112118;
spr_free_sprite = 0x80112138;
set_npc_imgfx_all = 0x801123E4;
spr_get_npc_palettes = 0x80112590;
spr_get_npc_color_variations = 0x801125BC;
update_entities = 0x801148E0;
render_entities = 0x801150C4;
get_entity_by_index = 0x801157F8;
get_shadow_by_index = 0x80115814;
clear_entity_data = 0x80115EC8;
init_entity_data = 0x80116068;
create_shadow_type = 0x80117470;
delete_shadow = 0x80117538;
entity_raycast_down = 0x801177F8;
set_npc_shadow_scale = 0x80117B10;
clear_game_modes = 0x80117DA8;
set_game_mode_slot = 0x080117EB8;
game_mode_set_fpDrawAuxUI = 0x80117F94;
step_current_game_mode = 0x80118088;
state_render_backUI = 0x80118168;
state_render_frontUI = 0x801181D4;
mdl_load_all_textures = 0x8011AE34;
clear_model_data = 0x8011AF54;
init_model_data = 0x8011B1F8;
mdl_calculate_model_sizes = 0x8011B33C;
iterate_models = 0x8011B884;
mdl_update_transform_matrices = 0x8011B8A8;
render_models = 0x8011BDA0;
get_model_from_list_index = 0x8011FF40;
load_data_for_models = 0x8011FF58;
mdl_reset_transform_flags = 0x80120CF8;
mdl_set_shroud_tint_params = 0x8012106C;
mdl_get_shroud_tint_params = 0x80121090;
mdl_set_all_tint_type = 0x80122A3C;
clear_render_tasks = 0x80122AA0;
queue_render_task = 0x80122B20;
execute_render_tasks = 0x80122BC8;
clear_animator_list = 0x80123434;
reset_animator_list = 0x80123520;
clear_entity_models = 0x80125DC0;
init_entity_models = 0x80125E68;
get_entity_model = 0x80127FEC;
clear_worker_list = 0x801282C8;
init_worker_list = 0x80128324;
create_worker_world = 0x80128368;
update_workers = 0x80128614;
render_workers_world = 0x80128680;
render_workers_frontUI = 0x801286F0;
render_workers_backUI = 0x80128760;
clear_character_set = 0x80128870;
clear_printers = 0x80128884;
update_messages = 0x80128A60;
render_messages = 0x8012948C;
get_msg_width = 0x8012B6D4;
draw_msg = 0x8012B710;
clear_item_entity_data = 0x80136170;
init_item_entity_list = 0x80136244;
make_item_entity = 0x80136564;
make_item_entity_delayed = 0x80136C38;
update_item_entities = 0x8013705C;
render_item_entities = 0x80137FC4;
is_picking_up_item = 0x8013933C;
_render_transition_stencil = 0x8013BB30;
set_screen_overlay_params_front = 0x8013CE38;
set_screen_overlay_params_back = 0x8013CE54;
set_screen_overlay_color = 0x8013CEC0;
set_screen_overlay_center = 0x8013CEFC;
set_screen_overlay_alpha = 0x8013D184;
clear_screen_overlays = 0x8013D1B8;
func_80138188 = 0x8013D238;
func_80138198 = 0x8013D248;
render_screen_overlay_frontUI = 0x8013D250;
render_screen_overlay_backUI = 0x8013D2D0;
set_map_transition_effect = 0x8013D350;
update_exit_map_screen_overlay = 0x8013D35C;
update_enter_map_screen_overlay = 0x8013D684;
imgfx_update_cache = 0x8013F798;
hud_element_clear_cache = 0x801461B0;
init_hud_element_list = 0x801463B0;
hud_element_create = 0x80146554;
update_hud_elements = 0x801466C0;
render_hud_elements_backUI = 0x801472C0;
render_hud_elements_frontUI = 0x801477CC;
render_transformed_hud_elements = 0x80148764;
hud_element_draw_next = 0x80149874;
hud_element_set_script = 0x801498AC;
get_hud_element = 0x80149984;
hud_element_free = 0x801499A4;
hud_element_set_render_pos = 0x80149A34;
hud_element_set_flags = 0x80149AB0;
hud_element_clear_flags = 0x80149ADC;
hud_element_set_aux_cache = 0x8014A398;
clear_saved_variables = 0x8014A3D0;
clear_area_flags = 0x8014A440;
set_global_flag = 0x8014A500;
get_global_flag = 0x8014A56C;
clear_trigger_data = 0x8014A730;
init_trigger_list = 0x8014A7D8;
update_triggers = 0x8014A910;
load_map_bg = 0x8014AE20;
reset_background_settings = 0x8014AEA8;
set_background = 0x8014AED8;
set_background_size = 0x8014AF20;
appendGfx_background_texture = 0x8014AF70;
reset_ambient_sounds = 0x8014C2E0;
update_ambient_sounds = 0x8014C314;
clear_windows = 0x8014C4A0;
update_windows = 0x8014C4C4;
render_window_root = 0x8014CB74;
set_window_properties = 0x8014CD78;
set_window_update = 0x8014CF2C;
set_windows_visible = 0x8014CF74;
clear_sprite_shading_data = 0x8014D0F0;
init_sprite_shading_data = 0x8014D1A0;
sfx_reset_door_sounds = 0x8014E6B0;
sfx_clear_sounds = 0x8014E6C8;
sfx_clear_env_sounds = 0x8014E720;
sfx_update_env_sound_params = 0x8014E7E4;
sfx_set_reverb_mode = 0x8014E8AC;
sfx_get_reverb_mode = 0x8014E8D8;
sfx_stop_env_sounds = 0x8014E8E8;
sfx_stop_sound = 0x8014ED1C;
sfx_play_sound = 0x8014ED64;
sfx_play_sound_at_position = 0x8014EE0C;
bgm_reset_sequence_players = 0x8014F548;
bgm_reset_volume = 0x8014F5DC;
bgm_update_music_settings = 0x8014F5F8;
bgm_set_song = 0x8014F9C8;
bgm_init_music_players = 0x8014FCB8;
bgm_quiet_max_volume = 0x8014FD0C;
bgm_reset_max_volume = 0x8014FD20;
bgm_pop_battle_song = 0x8014FF1C;
bgm_push_battle_song = 0x8014FFA8;
bgm_set_battle_song = 0x8015003C;
gLastRenderTaskCount = 0x801508A0;
D_8014C248 = 0x801512F8;
gBackgroundTintModePtr = 0x80156350;
gWindows = 0x8015ECD0;
D_80164000 = 0x80164000;
D_80197000 = 0x80197000;
D_801A6000 = 0x801A6000;
AuHeapBase = 0x801AA000;
@ -280,71 +60,6 @@ shim_create_audio_system_obfuscated = 0x802B2000;
shim_load_engine_data_obfuscated = 0x802B203C;
shim_general_heap_create_obfuscated = 0x802B2078;
shim_battle_heap_create_obfuscated = 0x802B20B4;
clear_script_list = 0x802C31DC;
init_script_list = 0x802C32EC;
start_script = 0x802C33E0;
start_script_in_group = 0x802C35D0;
update_scripts = 0x802C3D74;
func_802C3EE4 = 0x802C3EE4;
kill_script = 0x802C3F3C;
kill_script_by_ID = 0x802C40AC;
does_script_exist = 0x802C4164;
suspend_all_script = 0x802C4420;
resume_all_script = 0x802C448C;
suspend_all_group = 0x802C45E8;
resume_all_group = 0x802C4648;
get_script_by_id = 0x802C47A8;
set_script_flags = 0x802C47E8;
clear_script_flags = 0x802C4880;
evt_get_variable = 0x802C7ABC;
evt_set_variable = 0x802C8098;
evt_get_float_variable = 0x802C842C;
resolve_npc = 0x802CDAC0;
CreateNpc = 0x802CDBA4;
DeleteNpc = 0x802CDC1C ;
SetNpcPos = 0x802CDCB0;
SetNpcRotation = 0x802CDDB0;
SetNpcAnimation = 0x802CE0F4;
SetNpcYaw = 0x802CEA84;
SetNpcFlagBits = 0x802CF060;
GetNpcPos = 0x802CF0F4;
SetNpcImgFXParams = 0x802CFD30;
GetPlayerPos = 0x802D1DFC;
PlaySound = 0x802D6150;
D_802D9D70 = 0x802D9D70;
D_802D9D71 = 0x802D9D71;
ui_msg_frame_a_1_1_png = 0x802E7110;
ui_msg_frame_a_1_2_png = 0x802E7130;
ui_msg_frame_a_1_3_png = 0x802E7150;
ui_msg_frame_a_1_4_png = 0x802E7170;
ui_msg_frame_a_1_5_png = 0x802E7190;
ui_msg_frame_a_2_1_png = 0x802E71B0;
ui_msg_frame_a_2_5_png = 0x802E71D0;
ui_msg_frame_a_3_1_png = 0x802E71F0;
ui_msg_frame_a_3_5_png = 0x802E7210;
ui_msg_frame_a_4_1_png = 0x802E7230;
ui_msg_frame_a_4_5_png = 0x802E7250;
ui_msg_frame_a_5_1_png = 0x802E7270;
ui_msg_frame_a_5_2_png = 0x802E7290;
ui_msg_frame_a_5_3_png = 0x802E72B0;
ui_msg_frame_a_5_4_png = 0x802E72D0;
ui_msg_frame_a_5_5_png = 0x802E72F0;
ui_msg_frame_b_1_1_png = 0x802E7310;
ui_msg_frame_b_1_2_png = 0x802E7330;
ui_msg_frame_b_1_3_png = 0x802E7350;
ui_msg_frame_b_1_4_png = 0x802E7370;
ui_msg_frame_b_1_5_png = 0x802E7390;
ui_msg_frame_b_2_1_png = 0x802E73B0;
ui_msg_frame_b_2_5_png = 0x802E73D0;
ui_msg_frame_b_3_1_png = 0x802E73F0;
ui_msg_frame_b_3_5_png = 0x802E7410;
ui_msg_frame_b_4_1_png = 0x802E7430;
ui_msg_frame_b_4_5_png = 0x802E7450;
ui_msg_frame_b_5_1_png = 0x802E7470;
ui_msg_frame_b_5_2_png = 0x802E7490;
ui_msg_frame_b_5_3_png = 0x802E74B0;
ui_msg_frame_b_5_4_png = 0x802E74D0;
ui_msg_frame_b_5_5_png = 0x802E74F0;
heap_generalHead = 0x802FB800;
gFrameBuf0 = 0x8038F800;
gFrameBuf1 = 0x803B5000;
@ -1053,51 +768,17 @@ pulse_stone_ROM_END = 0xE2B440;
i_spy_ROM_START = 0xE2B440;
i_spy_ROM_END = 0xE2C0F0;
set_player_imgfx_comp = 0x80111A34;
set_player_imgfx_all = 0x80111B48;
WorldTattleInteractionID = 0x802BDF60;
set_standard_shadow_scale = 0x80117A6C;
set_peach_shadow_scale = 0x80117BE4;
gCollisionStatus = 0x8015F4D0;
should_collider_allow_interact = 0x8014AD98;
interact_inspect_setup = 0x802B70B4;
appendGfx_interact_prompt = 0x802B71E8;
gCurrentHiddenPanels = 0x8015F4F8;
ispy_notification_setup = 0x802b72c0;
world_watt_sync_held_position = 0x802BE06C;
get_entity_type = 0x801158B4;
appendGfx_speech_bubble = 0x802B71C8;
interact_speech_setup = 0x802B70B4;
appendGfx_pulse_stone_icon = 0x802B71D4;
appendGfx_ispy_icon = 0x802b7000;
exec_ShakeCam1 = 0x802CB56C;
pulse_stone_notification_setup = 0x802B7140;
sfx_play_sound_at_player = 0x8014ED88;
world_lakilester_can_dismount = 0x802BD7DC;
hide_popup_menu = 0x800f1340;
destroy_popup_menu = 0x800f14c8;
create_standard_popup_menu = 0x800f4fd4;
HES_StatusHP = 0x801083D8;
HES_StatusHeart = 0x801086A8;
HES_StatusFP = 0x80108400;
HES_StatusFlower = 0x801086C8;
HES_StatusCoin = 0x801086E8;
HES_StatusStarPoint = 0x8010883C;
HES_StatusSPShine = 0x80104D7C;
func_800F0D5C = 0x800F0CEC;
HES_StatusSPEmptyIncrement = 0x80108540;
HES_StatusStarEmpty = 0x80108680;
copy_world_hud_element_ref_to_battle = 0x8014a364;
hud_element_set_tint = 0x80149fac;
get_worker = 0x8012884c;
create_worker_frontUI = 0x8012844c;
func_800F0CB0 = 0x800f0c40;
func_800F102C = 0x800F0FBC;
func_800F0D80 = 0x800F0D10;
hud_element_draw_clipped = 0x80149858;
draw_number = 0x8012c8b0;
basic_hidden_window_update = 0x8014C624;
basic_window_update = 0x8014C524;
action_update_idle = 0x802B6000;
world_action_idle_ROM_START = 0xE2C0F0;
@ -1166,39 +847,6 @@ action_update_ride = 0x802B6000;
action_update_step_up = 0x802B6000;
action_update_state_23 = 0x802B609C;
HES_MenuTimes = 0x80109400;
HES_StatusDigit0 = 0x80108248;
HES_StatusDigit1 = 0x80108270;
HES_StatusDigit2 = 0x80108298;
HES_StatusDigit3 = 0x801082C0;
HES_StatusDigit4 = 0x801082E8;
HES_StatusDigit5 = 0x80108310;
HES_StatusDigit6 = 0x80108338;
HES_StatusDigit7 = 0x80108360;
HES_StatusDigit8 = 0x80108388;
HES_StatusDigit9 = 0x801083B0;
HES_StatusSlash = 0x80108220;
HES_StatusTimes = 0x801081F8;
HES_StatusSPIncrement1 = 0x80108428;
HES_StatusSPIncrement2 = 0x80108450;
HES_StatusSPIncrement3 = 0x80108478;
HES_StatusSPIncrement4 = 0x801084A0;
HES_StatusSPIncrement5 = 0x801084C8;
HES_StatusSPIncrement6 = 0x801084F0;
HES_StatusSPIncrement7 = 0x80108518;
HES_StatusSPIncrement8 = 0x80108540;
HES_StatusStar1 = 0x80108568;
HES_StatusStar2 = 0x80108590;
HES_StatusStar3 = 0x801085B8;
HES_StatusStar4 = 0x801085E0;
HES_StatusStar5 = 0x80108608;
HES_StatusStar6 = 0x80108630;
HES_StatusStar7 = 0x80108658;
world_use_item_ROM_START = 0x32d500;
world_use_item_ROM_END = 0x32ddd0;
world_use_item_VRAM = 0x802C0000;
@ -1324,4 +972,181 @@ EVS_WorldTwink_Update = 0x802BD20C;
EVS_WorldTwink_UseAbility = 0x802BD228;
EVS_WorldTwink_PutAway = 0x802BD244;
D_80109610_JP = 0x80109610;
heap_spriteHead = 0x8034F800;
gCurrentModelTreeNodeInfo = 0x8009A5D4;
sprite_shading_profiles_ROM_START = 0x0031DF90;
Entity_UltraBlockContent_Render = 0x0A000800;
entity_model_SimpleSpring_gfx_ROM_END = 0x00E72BD0;
Entity_SaveBlock_RenderNone = 0x0A003508;
entity_model_BlueSwitch_ROM_END = 0x00E6D750;
Entity_HitYellowBlock_Mesh = 0x00000084;
entity_model_Hammer3Block_ROM_END = 0x00E3B2A0;
entity_model_SimpleSpring_anim_ROM_END = 0x00E74030;
Entity_SuperBlockContent_Render2 = 0x0A000380;
Entity_Chest_RenderBox = 0x0A000EB8;
Entity_InertYellowBlock_Render = 0x0A0004E0;
entity_model_HitYellowBlock_gfx_ROM_END = 0x00E4FC90;
Entity_SaveBlock_RenderBlock = 0x0A0034F0;
entity_model_UltraBlockContent_ROM_END = 0x00E54160;
Entity_HitFloatingYellowBlock_AnimationIdle = 0x0000022C;
entity_model_PowBlock_ROM_START = 0x00E4C9A0;
entity_model_ShatteringHammer1Block_ROM_END = 0x00E3E4F0;
Entity_Signpost_Render = 0x0A000A68;
entity_model_BlueWarpPipe_ROM_END = 0x00E62300;
entity_model_Hammer1Block_ROM_START = 0x00E3A3B0;
entity_model_HitRedBlock_anim_ROM_END = 0x00E52CC0;
D_0A000240_E4A8E0 = 0x0A000240;
entity_model_WoodenCrate_ROM_START = 0x00E5A4C0;
entity_model_Hammer2Block_ROM_END = 0x00E3ADB0;
Entity_HeartBlock_Render = 0x0A000918;
Entity_Hammer2Block_Render = 0x0A0004F0;
Entity_HitRedBlock_AnimationHit = 0x00000094;
Entity_BrickBlock_Render = 0x0A0004A0;
Entity_SuperBlockContent_Render = 0x0A000328;
entity_model_SuperBlockContent_ROM_START = 0x00E53520;
entity_model_InertRedBlock_ROM_START = 0x00E4B5C0;
entity_model_SuperBlockContent_ROM_END = 0x00E53900;
entity_model_Hammer3Block_ROM_START = 0x00E3ADB0;
Entity_ScriptSpring_AnimLaunch = 0x000001E4;
entity_model_Chest_ROM_START = 0x00E6D750;
Entity_GreenStompSwitch_Render = 0x0A000740;
entity_model_HiddenPanel_ROM_END = 0x00E5FCE0;
entity_model_ShatteringBrickBlock_ROM_END = 0x00E4B0C0;
Entity_Chest_LidMtx = 0x0A000C48;
Entity_HeartBlockContent_RenderHeartHappy = 0x0A000808;
entity_model_GreenStompSwitch_ROM_END = 0x00E6B940;
Entity_HeartBlockContent_RenderHeartSleeping = 0x0A000700;
entity_model_RedBlock_ROM_END = 0x00E45C50;
Entity_SaveBlock_RenderContent = 0x0A0034E0;
Entity_HeartBlockContent_RenderHeartAwake = 0x0A0007B0;
D_0A000220_E4A8C0 = 0x0A000220;
entity_model_PowBlock_ROM_END = 0x00E4D680;
entity_model_ShatteringBrickBlock_ROM_START = 0x00E470E0;
Entity_HitYellowBlock_AnimationHit = 0x00000094;
entity_model_YellowBlock_ROM_END = 0x00E451A0;
entity_model_HitFloatingYellowBlock_anim_ROM_START = 0x00E51370;
Entity_PushBlock_Render = 0x0A000338;
entity_model_ScriptSpring_gfx_ROM_START = 0x00E6E620;
Entity_InertRedBlock_Render = 0x0A000A90;
entity_model_ShatteringHammer3Block_ROM_START = 0x00E41710;
Entity_Hammer3Block_Render = 0x0A0004E0;
entity_model_Chest_ROM_END = 0x00E6E620;
entity_model_RedBlock_ROM_START = 0x00E451A0;
entity_model_BrickBlock_ROM_START = 0x00E46C30;
entity_model_HitFloatingYellowBlock_anim_ROM_END = 0x00E51600;
entity_model_InertYellowBlock_ROM_END = 0x00E4B5C0;
Entity_WoodenCrate_Render = 0x0A004338;
entity_model_ShatteringHammer3Block_ROM_END = 0x00E446F0;
entity_model_HitYellowBlock_anim_ROM_START = 0x00E4FC90;
entity_model_HitRedBlock_gfx_ROM_END = 0x00E52A60;
entity_model_UltraBlock_ROM_START = 0x00E4DF90;
entity_model_BrickBlock_ROM_END = 0x00E470E0;
entity_model_HeartBlockContent_ROM_END = 0x00E53520;
Entity_SuperBlock_Render = 0x0A0008F8;
Gfx_HiddenPanel_Render = 0x0A000280;
entity_model_HitRedBlock_anim_ROM_START = 0x00E52A60;
Entity_ShatteringHammer1Block_FragmentsMatrices = 0x0A001508;
entity_model_HeartBlock_ROM_START = 0x00E4C070;
Entity_ShatteringHammer3Block_FragmentsRender = 0x0A002F78;
Entity_UltraBlockContent_Render2 = 0x0A000750;
Entity_Chest_RenderLid = 0x0A000DC0;
Entity_WoodenCrate_FragmentsMatrices = 0x0A0026F0;
Entity_SimpleSpring_Mesh = 0x000001B8;
entity_model_ShatteringHammer2Block_ROM_END = 0x00E41710;
entity_model_SaveBlock_ROM_END = 0x00E57670;
entity_model_GreenStompSwitch_ROM_START = 0x00E6B1F0;
entity_model_ShatteringHammer1Block_ROM_START = 0x00E3B2A0;
Gfx_AltHiddenPanel_RenderTop = 0x0A0001B0;
entity_model_SimpleSpring_anim_ROM_START = 0x00E72BD0;
entity_model_Hammer2Block_ROM_START = 0x00E3A8B0;
entity_model_PushBlock_ROM_END = 0x00E46C30;
entity_model_InertRedBlock_ROM_END = 0x00E4C070;
Entity_BlueSwitch_Render = 0x0A000EF8;
entity_model_PushBlock_ROM_START = 0x00E468E0;
entity_model_BlueSwitch_ROM_START = 0x00E6C840;
Entity_RedBlock_Render = 0x0A000A90;
Entity_RedSwitch_Render = 0x0A000EE8;
entity_model_HitFloatingYellowBlock_gfx_ROM_END = 0x00E51370;
entity_model_HitYellowBlock_anim_ROM_END = 0x00E4FF30;
entity_model_HitRedBlock_gfx_ROM_START = 0x00E51600;
entity_model_HitFloatingYellowBlock_gfx_ROM_START = 0x00E4FF30;
Entity_BlueWarpPipe_RenderBase = 0x0A000680;
entity_model_ScriptSpring_anim_ROM_END = 0x00E71400;
Entity_ShatteringHammer2Block_FragmentsRender = 0x0A0031B0;
entity_model_HeartBlock_ROM_END = 0x00E4C9A0;
Gfx_HiddenPanel_Render2 = 0x0A0002A0;
entity_model_Hammer1Block_ROM_END = 0x00E3A8B0;
entity_model_Signpost_ROM_END = 0x00E62D80;
entity_model_SuperBlock_ROM_END = 0x00E4DF90;
entity_model_ScriptSpring_gfx_ROM_END = 0x00E6FFA0;
entity_model_Signpost_ROM_START = 0x00E62300;
entity_model_UltraBlockContent_ROM_START = 0x00E53900;
entity_model_InertYellowBlock_ROM_START = 0x00E4B0C0;
Entity_ShatteringBrickBlock_FragmentsRender = 0x0A003F70;
entity_model_SuperBlock_ROM_START = 0x00E4D680;
Entity_PowBlock_Render = 0x0A000CC8;
Entity_ShatteringBrickBlock_FragmentsMatrices = 0x0A002318;
Entity_Hammer1Block_Render = 0x0A0004F0;
entity_model_UltraBlock_ROM_END = 0x00E4E870;
entity_model_YellowBlock_ROM_START = 0x00E446F0;
Gfx_HiddenPanel_RenderHole = 0x0A000230;
entity_model_HeartBlockContent_ROM_START = 0x00E52CC0;
D_0A000260_E4A900 = 0x0A000260;
Entity_ScriptSpring_AnimIdle = 0x0000131C;
entity_model_BlueWarpPipe_ROM_START = 0x00E61B50;
Entity_HitRedBlock_Mesh = 0x00000084;
Entity_BlueWarpPipe_RenderPipe = 0x0A0006B8;
Entity_SimpleSpring_AnimLaunch = 0x000001E4;
Entity_YellowBlock_Render = 0x0A000A90;
entity_model_WoodenCrate_ROM_END = 0x00E5E8C0;
entity_model_HitYellowBlock_gfx_ROM_START = 0x00E4E870;
Entity_ShatteringHammer3Block_FragmentsMatrices = 0x0A001218;
Entity_ShatteringHammer1Block_FragmentsRender = 0x0A0031E0;
Gfx_HiddenPanel_RenderTop = 0x0A000180;
entity_model_ScriptSpring_anim_ROM_START = 0x00E6FFA0;
entity_model_HiddenPanel_ROM_START = 0x00E5FA20;
Entity_UltraBlock_Render = 0x0A0008C8;
Entity_HitFloatingYellowBlock_Mesh = 0x00000084;
entity_model_RedSwitch_ROM_END = 0x00E6C840;
Entity_ShatteringHammer2Block_FragmentsMatrices = 0x0A0014D8;
Entity_HitYellowBlock_AnimationIdle = 0x0000023C;
Entity_ScriptSpring_Mesh = 0x000001B8;
Entity_SimpleSpring_AnimIdle = 0x0000131C;
Entity_SaveBlock_Mtx = 0x0A003260;
D_0A000200_E4A8A0 = 0x0A000200;
entity_model_RedSwitch_ROM_START = 0x00E6B940;
entity_model_SimpleSpring_gfx_ROM_START = 0x00E71400;
Entity_WoodenCrate_FragmentsRender = 0x0A004350;
entity_model_ShatteringHammer2Block_ROM_START = 0x00E3E4F0;
entity_model_SaveBlock_ROM_START = 0x00E54160;
entity_default_ROM_START = 0x00E343B0;
BattleEntityHeapBottom = 0x801A7000;
entity_jan_iwa_ROM_START = 0x00E365B0;
entity_sbk_omo_ROM_END = 0x00E3A3B0;
ClearRenderTaskLists = 0x802B7E00;
entity_default_ROM_END = 0x00E365B0;
entity_sbk_omo_ROM_START = 0x00E385D0;
TextureHeap = 0x8028E000;
entity_jan_iwa_ROM_END = 0x00E385D0;
flip_card_1_header = 0x000C0490;
horizontal_pipe_curl_header = 0x0001E830;
shock_header = 0x00014358;
tutankoopa_swirl_2_header = 0x000A1820;
flutter_down_header = 0x000314E0;
tutankoopa_swirl_1_header = 0x000ACDE8;
unused_1_header = 0x0005B7A8;
tutankoopa_gather_header = 0x00096258;
imgfx_data_ROM_START = 0x00253C00;
vertical_pipe_curl_header = 0x0001A858;
flip_card_2_header = 0x000C49B8;
flip_card_3_header = 0x000C6150;
shuffle_cards_header = 0x000BBF68;
unfurl_header = 0x00033498;
spirit_capture_header = 0x00039228;
unused_2_header = 0x0007CF10;
unused_3_header = 0x00086490;
cymbal_crush_header = 0x000CA380;
startle_header = 0x00029458;
get_in_bed_header = 0x00038988;
shiver_header = 0x00018200;

View File

@ -557,6 +557,7 @@ segments:
- [auto, c, entity_model]
- [auto, c, worker]
- [auto, c, msg]
- [auto, c, msg_draw]
- [auto, c, draw_img_util]
- [auto, c, item_entity]
- [auto, c, screen_overlays]
@ -577,6 +578,7 @@ segments:
- [auto, .data, animator]
- [auto, .data, entity_model]
- [auto, .data, msg]
- [auto, .data, msg_draw]
- [auto, .data, draw_img_util]
- [auto, .data, item_entity]
- start: 0xE1610

View File

@ -7,11 +7,75 @@
.section .rodata
dlabel jtbl_80099D80
.word 0x141818, 0x1C1C1C1C, 0x20202020, 0x20202020, 0x40808, 0xC0C0C0C, 0x10101010, 0x10101010
__osIntOffTable:
.byte 0x00
.byte 0x14
.byte 0x18
.byte 0x18
.byte 0x1C
.byte 0x1C
.byte 0x1C
.byte 0x1C
.byte 0x20
.byte 0x20
.byte 0x20
.byte 0x20
.byte 0x20
.byte 0x20
.byte 0x20
.byte 0x20
.byte 0x00
.byte 0x04
.byte 0x08
.byte 0x08
.byte 0x0C
.byte 0x0C
.byte 0x0C
.byte 0x0C
.byte 0x10
.byte 0x10
.byte 0x10
.byte 0x10
.byte 0x10
.byte 0x10
.byte 0x10
.byte 0x10
.size __osIntOffTable, . - __osIntOffTable
dlabel jtbl_80099DA0
.word .L8006AF00_46300, .L8006AEC4_462C4, .L8006AEA0_462A0, .L8006ACC8_460C8, .L8006AC80_46080, .L8006AE3C_4623C, .L8006AC44_46044, .L8006AC50_46050, .L8006AC5C_4605C, 0, 0, 0
__osIntTable:
.word .L8006AF00_46300
.word .L8006AEC4_462C4
.word .L8006AEA0_462A0
.word .L8006ACC8_460C8
.word .L8006AC80_46080
.word .L8006AE3C_4623C
.word .L8006AC44_46044
.word .L8006AC50_46050
.word .L8006AC5C_4605C
.word 0x00000000
.word 0x00000000
.word 0x00000000
.size __osIntTable, . - __osIntTable
.section .data
__osHwIntTable:
.word 0x00000000
.word 0x00000000
.word 0x00000000
.word 0x00000000
.word 0x00000000
.word 0x00000000
.word 0x00000000
.word 0x00000000
.word 0x00000000
.word 0x00000000
.size __osHwIntTable, . - __osHwIntTable
__osPiIntTable:
.word 0x00000000
.word 0x00000000
.size __osPiIntTable, . - __osPiIntTable
.section .text, "ax"
@ -166,12 +230,12 @@ glabel func_8006AA34
/* 4601C 8006AC1C 00095202 */ srl $t2, $t1, 8
/* 46020 8006AC20 214A0010 */ addi $t2, $t2, 0x10
.L8006AC24:
/* 46024 8006AC24 3C01800A */ lui $at, %hi(jtbl_80099D80)
/* 46024 8006AC24 3C01800A */ lui $at, %hi(__osIntOffTable)
/* 46028 8006AC28 002A0821 */ addu $at, $at, $t2
/* 4602C 8006AC2C 902A9D80 */ lbu $t2, %lo(jtbl_80099D80)($at)
/* 46030 8006AC30 3C01800A */ lui $at, %hi(jtbl_80099DA0)
/* 4602C 8006AC2C 902A9D80 */ lbu $t2, %lo(__osIntOffTable)($at)
/* 46030 8006AC30 3C01800A */ lui $at, %hi(__osIntTable)
/* 46034 8006AC34 002A0821 */ addu $at, $at, $t2
/* 46038 8006AC38 8C2A9DA0 */ lw $t2, %lo(jtbl_80099DA0)($at)
/* 46038 8006AC38 8C2A9DA0 */ lw $t2, %lo(__osIntTable)($at)
/* 4603C 8006AC3C 01400008 */ jr $t2
/* 46040 8006AC40 00000000 */ nop
.L8006AC44_46044:
@ -195,8 +259,8 @@ glabel func_8006AA34
.L8006AC80_46080:
/* 46080 8006AC80 2401F7FF */ addiu $at, $zero, -0x801
/* 46084 8006AC84 02018024 */ and $s0, $s0, $at
/* 46088 8006AC88 3C098009 */ lui $t1, %hi(D_80095910)
/* 4608C 8006AC8C 25295910 */ addiu $t1, $t1, %lo(D_80095910)
/* 46088 8006AC88 3C098009 */ lui $t1, %hi(__osHwIntTable)
/* 4608C 8006AC8C 25295910 */ addiu $t1, $t1, %lo(__osHwIntTable)
/* 46090 8006AC90 21290008 */ addi $t1, $t1, 8
/* 46094 8006AC94 8D2A0000 */ lw $t2, ($t1)
/* 46098 8006AC98 11400007 */ beqz $t2, .L8006ACB8
@ -285,8 +349,8 @@ glabel func_8006AA34
/* 461C8 8006ADC8 24090002 */ addiu $t1, $zero, 2
/* 461CC 8006ADCC 3C01A460 */ lui $at, %hi(D_A4600010)
/* 461D0 8006ADD0 AC290010 */ sw $t1, %lo(D_A4600010)($at)
/* 461D4 8006ADD4 3C098009 */ lui $t1, %hi(D_80095938)
/* 461D8 8006ADD8 25295938 */ addiu $t1, $t1, %lo(D_80095938)
/* 461D4 8006ADD4 3C098009 */ lui $t1, %hi(__osPiIntTable)
/* 461D8 8006ADD8 25295938 */ addiu $t1, $t1, %lo(__osPiIntTable)
/* 461DC 8006ADDC 8D2A0000 */ lw $t2, ($t1)
/* 461E0 8006ADE0 11400006 */ beqz $t2, .L8006ADFC
/* 461E4 8006ADE4 00000000 */ nop

View File

@ -427,6 +427,7 @@ segments:
- [auto, .data, os/contpfs]
- [auto, .data, os/contramread]
- [auto, .data, os/initialize]
- [auto, .data, os/exceptasm]
- [auto, .data, os/xlitob]
- [auto, .data, os/vi]
- [auto, .data, os/pfsisplug]
@ -888,6 +889,7 @@ segments:
- [auto, c, entity_model]
- [auto, c, worker]
- [auto, c, msg]
- [auto, c, msg_draw]
- [auto, c, draw_img_util]
- [auto, c, item_entity]
- [auto, c, screen_overlays]
@ -908,6 +910,7 @@ segments:
- [auto, .data, animator]
- [auto, .data, entity_model]
- [auto, .data, msg]
- [auto, .data, msg_draw]
- [auto, .data, draw_img_util]
- [auto, .data, item_entity]
- start: 0xE2DF0