From 498027e7a450fdfe201174c83d42757e8e7b0274 Mon Sep 17 00:00:00 2001 From: Rain Date: Fri, 4 Dec 2020 16:36:25 -0600 Subject: [PATCH 01/10] decomp initialize_status_menu --- .../initialize_status_menu.s | 224 ------------------ include/functions.h | 2 + include/variables.h | 9 + src/code_80850_len_3060.c | 103 +++++++- 4 files changed, 113 insertions(+), 225 deletions(-) delete mode 100644 asm/nonmatchings/code_80850_len_3060/initialize_status_menu.s diff --git a/asm/nonmatchings/code_80850_len_3060/initialize_status_menu.s b/asm/nonmatchings/code_80850_len_3060/initialize_status_menu.s deleted file mode 100644 index b66c5f0cec..0000000000 --- a/asm/nonmatchings/code_80850_len_3060/initialize_status_menu.s +++ /dev/null @@ -1,224 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel initialize_status_menu -/* 80DE4 800E7934 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 80DE8 800E7938 AFB10014 */ sw $s1, 0x14($sp) -/* 80DEC 800E793C 3C118011 */ lui $s1, %hi(gUIStatus) -/* 80DF0 800E7940 2631EF58 */ addiu $s1, $s1, %lo(gUIStatus) -/* 80DF4 800E7944 2402000C */ addiu $v0, $zero, 0xc -/* 80DF8 800E7948 AFBF001C */ sw $ra, 0x1c($sp) -/* 80DFC 800E794C AFB20018 */ sw $s2, 0x18($sp) -/* 80E00 800E7950 AFB00010 */ sw $s0, 0x10($sp) -/* 80E04 800E7954 A6220034 */ sh $v0, 0x34($s1) -/* 80E08 800E7958 2402FF9C */ addiu $v0, $zero, -0x64 -/* 80E0C 800E795C 3C038011 */ lui $v1, %hi(gPlayerData) -/* 80E10 800E7960 2463F290 */ addiu $v1, $v1, %lo(gPlayerData) -/* 80E14 800E7964 3C018011 */ lui $at, %hi(D_8010CD10) -/* 80E18 800E7968 A420CD10 */ sh $zero, %lo(D_8010CD10)($at) -/* 80E1C 800E796C 3C018011 */ lui $at, %hi(D_8010CD12) -/* 80E20 800E7970 A420CD12 */ sh $zero, %lo(D_8010CD12)($at) -/* 80E24 800E7974 A6220036 */ sh $v0, 0x36($s1) -/* 80E28 800E7978 A220003A */ sb $zero, 0x3a($s1) -/* 80E2C 800E797C 90640010 */ lbu $a0, 0x10($v1) -/* 80E30 800E7980 240200D2 */ addiu $v0, $zero, 0xd2 -/* 80E34 800E7984 A6220038 */ sh $v0, 0x38($s1) -/* 80E38 800E7988 A220003B */ sb $zero, 0x3b($s1) -/* 80E3C 800E798C A2200044 */ sb $zero, 0x44($s1) -/* 80E40 800E7990 A2200045 */ sb $zero, 0x45($s1) -/* 80E44 800E7994 A2200046 */ sb $zero, 0x46($s1) -/* 80E48 800E7998 A220004A */ sb $zero, 0x4a($s1) -/* 80E4C 800E799C A220004B */ sb $zero, 0x4b($s1) -/* 80E50 800E79A0 A220004C */ sb $zero, 0x4c($s1) -/* 80E54 800E79A4 A220004D */ sb $zero, 0x4d($s1) -/* 80E58 800E79A8 A220004E */ sb $zero, 0x4e($s1) -/* 80E5C 800E79AC A220004F */ sb $zero, 0x4f($s1) -/* 80E60 800E79B0 A2200050 */ sb $zero, 0x50($s1) -/* 80E64 800E79B4 A2200051 */ sb $zero, 0x51($s1) -/* 80E68 800E79B8 A2200054 */ sb $zero, 0x54($s1) -/* 80E6C 800E79BC A2200055 */ sb $zero, 0x55($s1) -/* 80E70 800E79C0 A2200056 */ sb $zero, 0x56($s1) -/* 80E74 800E79C4 A2200047 */ sb $zero, 0x47($s1) -/* 80E78 800E79C8 A2200052 */ sb $zero, 0x52($s1) -/* 80E7C 800E79CC 90620002 */ lbu $v0, 2($v1) -/* 80E80 800E79D0 90650005 */ lbu $a1, 5($v1) -/* 80E84 800E79D4 9466000C */ lhu $a2, 0xc($v1) -/* 80E88 800E79D8 94630290 */ lhu $v1, 0x290($v1) -/* 80E8C 800E79DC 00042600 */ sll $a0, $a0, 0x18 -/* 80E90 800E79E0 00042603 */ sra $a0, $a0, 0x18 -/* 80E94 800E79E4 A222003D */ sb $v0, 0x3d($s1) -/* 80E98 800E79E8 2402FFFF */ addiu $v0, $zero, -1 -/* 80E9C 800E79EC A225003E */ sb $a1, 0x3e($s1) -/* 80EA0 800E79F0 A6260040 */ sh $a2, 0x40($s1) -/* 80EA4 800E79F4 A6240042 */ sh $a0, 0x42($s1) -/* 80EA8 800E79F8 A6230048 */ sh $v1, 0x48($s1) -/* 80EAC 800E79FC A2200053 */ sb $zero, 0x53($s1) -/* 80EB0 800E7A00 A222006E */ sb $v0, 0x6e($s1) -/* 80EB4 800E7A04 2402FFFF */ addiu $v0, $zero, -1 -/* 80EB8 800E7A08 A220003C */ sb $zero, 0x3c($s1) -/* 80EBC 800E7A0C A2200057 */ sb $zero, 0x57($s1) -/* 80EC0 800E7A10 A2200058 */ sb $zero, 0x58($s1) -/* 80EC4 800E7A14 A2200059 */ sb $zero, 0x59($s1) -/* 80EC8 800E7A18 A220005A */ sb $zero, 0x5a($s1) -/* 80ECC 800E7A1C A220006C */ sb $zero, 0x6c($s1) -/* 80ED0 800E7A20 A220006D */ sb $zero, 0x6d($s1) -/* 80ED4 800E7A24 0C03A5EE */ jal func_800E97B8 -/* 80ED8 800E7A28 AE220064 */ sw $v0, 0x64($s1) -/* 80EDC 800E7A2C 3C048011 */ lui $a0, %hi(D_80108248) -/* 80EE0 800E7A30 24848248 */ addiu $a0, $a0, %lo(D_80108248) -/* 80EE4 800E7A34 0C050529 */ jal create_icon -/* 80EE8 800E7A38 00000000 */ nop -/* 80EEC 800E7A3C 0040802D */ daddu $s0, $v0, $zero -/* 80EF0 800E7A40 0200202D */ daddu $a0, $s0, $zero -/* 80EF4 800E7A44 24050080 */ addiu $a1, $zero, 0x80 -/* 80EF8 800E7A48 0C051280 */ jal set_icon_flags -/* 80EFC 800E7A4C AE300000 */ sw $s0, ($s1) -/* 80F00 800E7A50 0200202D */ daddu $a0, $s0, $zero -/* 80F04 800E7A54 0C05128B */ jal clear_icon_flags -/* 80F08 800E7A58 34058000 */ ori $a1, $zero, 0x8000 -/* 80F0C 800E7A5C 3C048011 */ lui $a0, %hi(D_80108518) -/* 80F10 800E7A60 24848518 */ addiu $a0, $a0, %lo(D_80108518) -/* 80F14 800E7A64 0C050529 */ jal create_icon -/* 80F18 800E7A68 00000000 */ nop -/* 80F1C 800E7A6C 0040802D */ daddu $s0, $v0, $zero -/* 80F20 800E7A70 0200202D */ daddu $a0, $s0, $zero -/* 80F24 800E7A74 24050080 */ addiu $a1, $zero, 0x80 -/* 80F28 800E7A78 0C051280 */ jal set_icon_flags -/* 80F2C 800E7A7C AE300004 */ sw $s0, 4($s1) -/* 80F30 800E7A80 0200202D */ daddu $a0, $s0, $zero -/* 80F34 800E7A84 0C05128B */ jal clear_icon_flags -/* 80F38 800E7A88 34058000 */ ori $a1, $zero, 0x8000 -/* 80F3C 800E7A8C 3C048011 */ lui $a0, %hi(D_80108270) -/* 80F40 800E7A90 24848270 */ addiu $a0, $a0, %lo(D_80108270) -/* 80F44 800E7A94 0C050529 */ jal create_icon -/* 80F48 800E7A98 00000000 */ nop -/* 80F4C 800E7A9C 0040802D */ daddu $s0, $v0, $zero -/* 80F50 800E7AA0 0200202D */ daddu $a0, $s0, $zero -/* 80F54 800E7AA4 24050080 */ addiu $a1, $zero, 0x80 -/* 80F58 800E7AA8 0C051280 */ jal set_icon_flags -/* 80F5C 800E7AAC AE300008 */ sw $s0, 8($s1) -/* 80F60 800E7AB0 0200202D */ daddu $a0, $s0, $zero -/* 80F64 800E7AB4 0C05128B */ jal clear_icon_flags -/* 80F68 800E7AB8 34058000 */ ori $a1, $zero, 0x8000 -/* 80F6C 800E7ABC 3C048011 */ lui $a0, %hi(D_80108538) -/* 80F70 800E7AC0 24848538 */ addiu $a0, $a0, %lo(D_80108538) -/* 80F74 800E7AC4 0C050529 */ jal create_icon -/* 80F78 800E7AC8 00000000 */ nop -/* 80F7C 800E7ACC 0040802D */ daddu $s0, $v0, $zero -/* 80F80 800E7AD0 0200202D */ daddu $a0, $s0, $zero -/* 80F84 800E7AD4 24050080 */ addiu $a1, $zero, 0x80 -/* 80F88 800E7AD8 0C051280 */ jal set_icon_flags -/* 80F8C 800E7ADC AE30000C */ sw $s0, 0xc($s1) -/* 80F90 800E7AE0 0200202D */ daddu $a0, $s0, $zero -/* 80F94 800E7AE4 0C05128B */ jal clear_icon_flags -/* 80F98 800E7AE8 34058000 */ ori $a1, $zero, 0x8000 -/* 80F9C 800E7AEC 3C048011 */ lui $a0, %hi(D_80108558) -/* 80FA0 800E7AF0 24848558 */ addiu $a0, $a0, %lo(D_80108558) -/* 80FA4 800E7AF4 0C050529 */ jal create_icon -/* 80FA8 800E7AF8 00000000 */ nop -/* 80FAC 800E7AFC 0040802D */ daddu $s0, $v0, $zero -/* 80FB0 800E7B00 0200202D */ daddu $a0, $s0, $zero -/* 80FB4 800E7B04 24050080 */ addiu $a1, $zero, 0x80 -/* 80FB8 800E7B08 0C051280 */ jal set_icon_flags -/* 80FBC 800E7B0C AE300010 */ sw $s0, 0x10($s1) -/* 80FC0 800E7B10 0200202D */ daddu $a0, $s0, $zero -/* 80FC4 800E7B14 0C05128B */ jal clear_icon_flags -/* 80FC8 800E7B18 34058000 */ ori $a1, $zero, 0x8000 -/* 80FCC 800E7B1C 3C048008 */ lui $a0, %hi(D_80080FC4) -/* 80FD0 800E7B20 24840FC4 */ addiu $a0, $a0, %lo(D_80080FC4) -/* 80FD4 800E7B24 0C050529 */ jal create_icon -/* 80FD8 800E7B28 00000000 */ nop -/* 80FDC 800E7B2C 0040802D */ daddu $s0, $v0, $zero -/* 80FE0 800E7B30 0200202D */ daddu $a0, $s0, $zero -/* 80FE4 800E7B34 24050080 */ addiu $a1, $zero, 0x80 -/* 80FE8 800E7B38 0C051280 */ jal set_icon_flags -/* 80FEC 800E7B3C AE300014 */ sw $s0, 0x14($s1) -/* 80FF0 800E7B40 0200202D */ daddu $a0, $s0, $zero -/* 80FF4 800E7B44 0C05128B */ jal clear_icon_flags -/* 80FF8 800E7B48 34058000 */ ori $a1, $zero, 0x8000 -/* 80FFC 800E7B4C 3C048011 */ lui $a0, %hi(D_801086AC) -/* 81000 800E7B50 248486AC */ addiu $a0, $a0, %lo(D_801086AC) -/* 81004 800E7B54 0C050529 */ jal create_icon -/* 81008 800E7B58 00000000 */ nop -/* 8100C 800E7B5C 0040802D */ daddu $s0, $v0, $zero -/* 81010 800E7B60 0200202D */ daddu $a0, $s0, $zero -/* 81014 800E7B64 24050080 */ addiu $a1, $zero, 0x80 -/* 81018 800E7B68 0C051280 */ jal set_icon_flags -/* 8101C 800E7B6C AE300018 */ sw $s0, 0x18($s1) -/* 81020 800E7B70 0200202D */ daddu $a0, $s0, $zero -/* 81024 800E7B74 0C05128B */ jal clear_icon_flags -/* 81028 800E7B78 34058000 */ ori $a1, $zero, 0x8000 -/* 8102C 800E7B7C 3C048010 */ lui $a0, %hi(D_80104BEC) -/* 81030 800E7B80 24844BEC */ addiu $a0, $a0, %lo(D_80104BEC) -/* 81034 800E7B84 0C050529 */ jal create_icon -/* 81038 800E7B88 00000000 */ nop -/* 8103C 800E7B8C 0040802D */ daddu $s0, $v0, $zero -/* 81040 800E7B90 0200202D */ daddu $a0, $s0, $zero -/* 81044 800E7B94 24050080 */ addiu $a1, $zero, 0x80 -/* 81048 800E7B98 0C051280 */ jal set_icon_flags -/* 8104C 800E7B9C AE30001C */ sw $s0, 0x1c($s1) -/* 81050 800E7BA0 0200202D */ daddu $a0, $s0, $zero -/* 81054 800E7BA4 0C05128B */ jal clear_icon_flags -/* 81058 800E7BA8 34058000 */ ori $a1, $zero, 0x8000 -/* 8105C 800E7BAC 3C128011 */ lui $s2, %hi(D_80108068) -/* 81060 800E7BB0 26528068 */ addiu $s2, $s2, %lo(D_80108068) -/* 81064 800E7BB4 0C050529 */ jal create_icon -/* 81068 800E7BB8 0240202D */ daddu $a0, $s2, $zero -/* 8106C 800E7BBC 0040802D */ daddu $s0, $v0, $zero -/* 81070 800E7BC0 0200202D */ daddu $a0, $s0, $zero -/* 81074 800E7BC4 24050082 */ addiu $a1, $zero, 0x82 -/* 81078 800E7BC8 0C051280 */ jal set_icon_flags -/* 8107C 800E7BCC AE300020 */ sw $s0, 0x20($s1) -/* 81080 800E7BD0 0200202D */ daddu $a0, $s0, $zero -/* 81084 800E7BD4 0C05128B */ jal clear_icon_flags -/* 81088 800E7BD8 34058000 */ ori $a1, $zero, 0x8000 -/* 8108C 800E7BDC 0C050529 */ jal create_icon -/* 81090 800E7BE0 0240202D */ daddu $a0, $s2, $zero -/* 81094 800E7BE4 0040802D */ daddu $s0, $v0, $zero -/* 81098 800E7BE8 0200202D */ daddu $a0, $s0, $zero -/* 8109C 800E7BEC 24050082 */ addiu $a1, $zero, 0x82 -/* 810A0 800E7BF0 0C051280 */ jal set_icon_flags -/* 810A4 800E7BF4 AE300024 */ sw $s0, 0x24($s1) -/* 810A8 800E7BF8 0200202D */ daddu $a0, $s0, $zero -/* 810AC 800E7BFC 0C05128B */ jal clear_icon_flags -/* 810B0 800E7C00 34058000 */ ori $a1, $zero, 0x8000 -/* 810B4 800E7C04 0C050529 */ jal create_icon -/* 810B8 800E7C08 0240202D */ daddu $a0, $s2, $zero -/* 810BC 800E7C0C 0040802D */ daddu $s0, $v0, $zero -/* 810C0 800E7C10 0200202D */ daddu $a0, $s0, $zero -/* 810C4 800E7C14 24050082 */ addiu $a1, $zero, 0x82 -/* 810C8 800E7C18 0C051280 */ jal set_icon_flags -/* 810CC 800E7C1C AE300028 */ sw $s0, 0x28($s1) -/* 810D0 800E7C20 0200202D */ daddu $a0, $s0, $zero -/* 810D4 800E7C24 0C05128B */ jal clear_icon_flags -/* 810D8 800E7C28 34058000 */ ori $a1, $zero, 0x8000 -/* 810DC 800E7C2C 0C050529 */ jal create_icon -/* 810E0 800E7C30 0240202D */ daddu $a0, $s2, $zero -/* 810E4 800E7C34 0040802D */ daddu $s0, $v0, $zero -/* 810E8 800E7C38 0200202D */ daddu $a0, $s0, $zero -/* 810EC 800E7C3C 24050082 */ addiu $a1, $zero, 0x82 -/* 810F0 800E7C40 0C051280 */ jal set_icon_flags -/* 810F4 800E7C44 AE30002C */ sw $s0, 0x2c($s1) -/* 810F8 800E7C48 0200202D */ daddu $a0, $s0, $zero -/* 810FC 800E7C4C 0C05128B */ jal clear_icon_flags -/* 81100 800E7C50 34058000 */ ori $a1, $zero, 0x8000 -/* 81104 800E7C54 3C048011 */ lui $a0, %hi(D_801083D8) -/* 81108 800E7C58 248483D8 */ addiu $a0, $a0, %lo(D_801083D8) -/* 8110C 800E7C5C 0C050529 */ jal create_icon -/* 81110 800E7C60 00000000 */ nop -/* 81114 800E7C64 0040802D */ daddu $s0, $v0, $zero -/* 81118 800E7C68 0200202D */ daddu $a0, $s0, $zero -/* 8111C 800E7C6C 24050080 */ addiu $a1, $zero, 0x80 -/* 81120 800E7C70 0C051280 */ jal set_icon_flags -/* 81124 800E7C74 AE300030 */ sw $s0, 0x30($s1) -/* 81128 800E7C78 0200202D */ daddu $a0, $s0, $zero -/* 8112C 800E7C7C 0C05128B */ jal clear_icon_flags -/* 81130 800E7C80 34058000 */ ori $a1, $zero, 0x8000 -/* 81134 800E7C84 0C03C357 */ jal func_800F0D5C -/* 81138 800E7C88 00000000 */ nop -/* 8113C 800E7C8C 8FBF001C */ lw $ra, 0x1c($sp) -/* 81140 800E7C90 8FB20018 */ lw $s2, 0x18($sp) -/* 81144 800E7C94 8FB10014 */ lw $s1, 0x14($sp) -/* 81148 800E7C98 8FB00010 */ lw $s0, 0x10($sp) -/* 8114C 800E7C9C 03E00008 */ jr $ra -/* 81150 800E7CA0 27BD0020 */ addiu $sp, $sp, 0x20 diff --git a/include/functions.h b/include/functions.h index ca7d35a9b5..53de5780aa 100644 --- a/include/functions.h +++ b/include/functions.h @@ -82,8 +82,10 @@ void fx_walk_normal(s32 arg0, f32 arg1, f32 arg2, f32 arg3, s32 arg4, s32 arg5); void fx_emote(s32, Npc*, s32, f32, f32, f32, f32, s32, s32*); f32 func_800E0088(f32, f32); +void func_800E97B8(void); s32 func_800EB168(s32); + PlayerData* get_player_data(void); // Pause diff --git a/include/variables.h b/include/variables.h index 562091a94c..99fff620ec 100644 --- a/include/variables.h +++ b/include/variables.h @@ -195,6 +195,15 @@ extern UNK_TYPE D_80147474; extern UNK_TYPE D_80147574; extern UNK_TYPE D_80109270; extern UNK_TYPE D_80108558; +extern s32 D_80108248; +extern s32 D_80108518; +extern s32 D_80108270; +extern s32 D_80108538; +extern s32 D_80080FC4; +extern s32 D_801086AC; +extern s32 D_801083D8; +extern s32 D_80108068; +extern s32 D_80104BEC; extern UNK_TYPE D_8010F250; // play_sound state struct? extern s8 D_8010EBB0[]; diff --git a/src/code_80850_len_3060.c b/src/code_80850_len_3060.c index fa0bc1af7f..2a6ea62bbb 100644 --- a/src/code_80850_len_3060.c +++ b/src/code_80850_len_3060.c @@ -268,7 +268,108 @@ void enforce_hpfp_limits(void) { } } -INCLUDE_ASM(s32, "code_80850_len_3060", initialize_status_menu); +//INCLUDE_ASM(s32, "code_80850_len_3060", initialize_status_menu); +void initialize_status_menu() { + UiStatus* uiStatus = &gUIStatus; + PlayerData* playerData = &gPlayerData; + s32 var0; + s32 var1; + s32 new_var; + uiStatus->drawPosX = 0x0C; + D_8010CD10 = 0; + D_8010CD12 = 0; + uiStatus->drawPosY = -0x64; + uiStatus->hidden = 0; + uiStatus->showTimer = 0xD2; + uiStatus->unk_3B[0] = 0; + uiStatus->ignoreChanges = 0; + uiStatus->unk_45[0] = 0; + uiStatus->unk_45[1] = 0; + uiStatus->hpBlinking = 0; + uiStatus->hpBlinkCounter = 0; + uiStatus->hpBlinkTimer = 0; + uiStatus->fpBlinking = 0; + uiStatus->fpBlinkCounter = 0; + uiStatus->fpBlinkTimer = 0; + uiStatus->spBlinking = 0; + uiStatus->spBlinkCounter = 0; + uiStatus->coinsBlinking = 0; + uiStatus->coinsBlinkCounter = 0; + uiStatus->coinsBlinkTimer = 0; + uiStatus->disabled = 0; + uiStatus->starpointsBlinking = 0; + uiStatus->displayHP = playerData->curHP; + uiStatus->displayFP = playerData->curFP; + uiStatus->displayCoins = playerData->coins; + uiStatus->displayStarpoints = playerData->starPoints; + uiStatus->displaySP = playerData->specialBarsFilled; + uiStatus->starpointsBlinkCounter = 0; + uiStatus->unk_6C[2] = -1; + uiStatus->unk_3B[1] = 0; + uiStatus->unk_57[0] = 0; + uiStatus->unk_57[1] = 0; + uiStatus->unk_57[2] = 0; + uiStatus->unk_57[3] = 0; + uiStatus->unk_6C[0] = 0; + uiStatus->unk_6C[1] = 0; + uiStatus->iconIndex12 = -1; + func_800E97B8(); + var0 = create_icon(&D_80108248); + uiStatus->hpIconIndexes[0] = var0; + set_icon_flags(var0, 0x80); + clear_icon_flags(var0, 0x8000); + var0 = create_icon(&D_80108518); + uiStatus->hpIconIndexes[1] = var0; + set_icon_flags(var0, 0x80); + clear_icon_flags(var0, 0x8000); + var0 = create_icon(&D_80108270); + uiStatus->fpIconIndexes[0] = var0; + set_icon_flags(var0, 0x80); + clear_icon_flags(var0, 0x8000); + var0 = create_icon(&D_80108538); + uiStatus->fpIconIndexes[1] = var0; + set_icon_flags(var0, 0x80); + clear_icon_flags(var0, 0x8000); + var0 = create_icon(&D_80108558); + uiStatus->coinIconIndex = var0; + set_icon_flags(var0, 0x80); + clear_icon_flags(var0, 0x8000); + var0 = create_icon(&D_80080FC4); + uiStatus->coinIconIndex2 = var0; + set_icon_flags(var0, 0x80); + clear_icon_flags(var0, 0x8000); + var0 = create_icon(&D_801086AC); + uiStatus->starpointsIconIndex = var0; + set_icon_flags(var0, 0x80); + clear_icon_flags(var0, 0x8000); + var0 = create_icon(&D_80104BEC); + uiStatus->starpointsIconIndex2 = var0; + set_icon_flags(var0, 0x80); + clear_icon_flags(var0, 0x8000); + var1 = &D_80108068; + new_var = create_icon(&D_80108068); + var0 = new_var; + uiStatus->iconIndex8 = var0; + set_icon_flags(var0, 0x82); + clear_icon_flags(var0, 0x8000); + var0 = create_icon(&D_80108068); + uiStatus->iconIndex9 = var0; + set_icon_flags(var0, 0x82); + clear_icon_flags(var0, 0x8000); + var0 = create_icon(var1); + uiStatus->iconIndexA = var0; + set_icon_flags(var0, 0x82); + clear_icon_flags(var0, 0x8000); + var0 = create_icon(var1); + uiStatus->iconIndexB = var0; + set_icon_flags(var0, 0x82); + clear_icon_flags(var0, 0x8000); + var0 = create_icon(&D_801083D8); + uiStatus->iconIndexC = var0; + set_icon_flags(var0, 0x80); + clear_icon_flags(var0, 0x8000); + func_800F0D5C(); +} INCLUDE_ASM(s32, "code_80850_len_3060", status_menu_draw_number); From 8c68dacfdb12f71f2f5ce7815164b0a4dbdceb55 Mon Sep 17 00:00:00 2001 From: Rain Date: Fri, 4 Dec 2020 16:39:08 -0600 Subject: [PATCH 02/10] remove //INCLUDE_ASM for initalize_status_menu --- src/code_80850_len_3060.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/code_80850_len_3060.c b/src/code_80850_len_3060.c index 2a6ea62bbb..e9a747157f 100644 --- a/src/code_80850_len_3060.c +++ b/src/code_80850_len_3060.c @@ -268,13 +268,13 @@ void enforce_hpfp_limits(void) { } } -//INCLUDE_ASM(s32, "code_80850_len_3060", initialize_status_menu); void initialize_status_menu() { UiStatus* uiStatus = &gUIStatus; PlayerData* playerData = &gPlayerData; s32 var0; s32 var1; s32 new_var; + uiStatus->drawPosX = 0x0C; D_8010CD10 = 0; D_8010CD12 = 0; From ad44b6233190599f765c4e312d9ac2e55951eac8 Mon Sep 17 00:00:00 2001 From: Rain Date: Sat, 5 Dec 2020 03:10:01 -0600 Subject: [PATCH 03/10] add macro usage to initialize_status_menu() --- include/macros.h | 1 + src/code_80850_len_3060.c | 137 +++++++++++++++++++++----------------- 2 files changed, 76 insertions(+), 62 deletions(-) diff --git a/include/macros.h b/include/macros.h index 3afdfffa23..3a943a903a 100644 --- a/include/macros.h +++ b/include/macros.h @@ -20,6 +20,7 @@ #define BATTLE_STATUS (&gBattleStatus) #define GAME_STATUS (*gGameStatusPtr) #define PLAYER_STATUS (&gPlayerStatus) +#define UI_STATUS (&gUIStatus) #define PLAYER_DATA (&gPlayerData) #define CAM(id) (&gCameras[id]) #define CURRENT_CAM (&gCameras[gCurrentCameraID]) diff --git a/src/code_80850_len_3060.c b/src/code_80850_len_3060.c index e9a747157f..cdd1ee92fa 100644 --- a/src/code_80850_len_3060.c +++ b/src/code_80850_len_3060.c @@ -269,18 +269,17 @@ void enforce_hpfp_limits(void) { } void initialize_status_menu() { - UiStatus* uiStatus = &gUIStatus; - PlayerData* playerData = &gPlayerData; - s32 var0; - s32 var1; - s32 new_var; + UiStatus* uiStatus = UI_STATUS; + PlayerData* playerData = PLAYER_DATA; + s32 iconIndex; + s32 newVar; - uiStatus->drawPosX = 0x0C; + uiStatus->drawPosX = 12; D_8010CD10 = 0; D_8010CD12 = 0; - uiStatus->drawPosY = -0x64; + uiStatus->drawPosY = -100; uiStatus->hidden = 0; - uiStatus->showTimer = 0xD2; + uiStatus->showTimer = 210; uiStatus->unk_3B[0] = 0; uiStatus->ignoreChanges = 0; uiStatus->unk_45[0] = 0; @@ -313,61 +312,75 @@ void initialize_status_menu() { uiStatus->unk_6C[0] = 0; uiStatus->unk_6C[1] = 0; uiStatus->iconIndex12 = -1; + func_800E97B8(); - var0 = create_icon(&D_80108248); - uiStatus->hpIconIndexes[0] = var0; - set_icon_flags(var0, 0x80); - clear_icon_flags(var0, 0x8000); - var0 = create_icon(&D_80108518); - uiStatus->hpIconIndexes[1] = var0; - set_icon_flags(var0, 0x80); - clear_icon_flags(var0, 0x8000); - var0 = create_icon(&D_80108270); - uiStatus->fpIconIndexes[0] = var0; - set_icon_flags(var0, 0x80); - clear_icon_flags(var0, 0x8000); - var0 = create_icon(&D_80108538); - uiStatus->fpIconIndexes[1] = var0; - set_icon_flags(var0, 0x80); - clear_icon_flags(var0, 0x8000); - var0 = create_icon(&D_80108558); - uiStatus->coinIconIndex = var0; - set_icon_flags(var0, 0x80); - clear_icon_flags(var0, 0x8000); - var0 = create_icon(&D_80080FC4); - uiStatus->coinIconIndex2 = var0; - set_icon_flags(var0, 0x80); - clear_icon_flags(var0, 0x8000); - var0 = create_icon(&D_801086AC); - uiStatus->starpointsIconIndex = var0; - set_icon_flags(var0, 0x80); - clear_icon_flags(var0, 0x8000); - var0 = create_icon(&D_80104BEC); - uiStatus->starpointsIconIndex2 = var0; - set_icon_flags(var0, 0x80); - clear_icon_flags(var0, 0x8000); - var1 = &D_80108068; - new_var = create_icon(&D_80108068); - var0 = new_var; - uiStatus->iconIndex8 = var0; - set_icon_flags(var0, 0x82); - clear_icon_flags(var0, 0x8000); - var0 = create_icon(&D_80108068); - uiStatus->iconIndex9 = var0; - set_icon_flags(var0, 0x82); - clear_icon_flags(var0, 0x8000); - var0 = create_icon(var1); - uiStatus->iconIndexA = var0; - set_icon_flags(var0, 0x82); - clear_icon_flags(var0, 0x8000); - var0 = create_icon(var1); - uiStatus->iconIndexB = var0; - set_icon_flags(var0, 0x82); - clear_icon_flags(var0, 0x8000); - var0 = create_icon(&D_801083D8); - uiStatus->iconIndexC = var0; - set_icon_flags(var0, 0x80); - clear_icon_flags(var0, 0x8000); + + iconIndex = create_icon(&D_80108248); + uiStatus->hpIconIndexes[0] = iconIndex; + set_icon_flags(iconIndex, 0x80); + clear_icon_flags(iconIndex, 0x8000); + + iconIndex = create_icon(&D_80108518); + uiStatus->hpIconIndexes[1] = iconIndex; + set_icon_flags(iconIndex, 0x80); + clear_icon_flags(iconIndex, 0x8000); + + iconIndex = create_icon(&D_80108270); + uiStatus->fpIconIndexes[0] = iconIndex; + set_icon_flags(iconIndex, 0x80); + clear_icon_flags(iconIndex, 0x8000); + + iconIndex = create_icon(&D_80108538); + uiStatus->fpIconIndexes[1] = iconIndex; + set_icon_flags(iconIndex, 0x80); + clear_icon_flags(iconIndex, 0x8000); + + iconIndex = create_icon(&D_80108558); + uiStatus->coinIconIndex = iconIndex; + set_icon_flags(iconIndex, 0x80); + clear_icon_flags(iconIndex, 0x8000); + + iconIndex = create_icon(&D_80080FC4); + uiStatus->coinIconIndex2 = iconIndex; + set_icon_flags(iconIndex, 0x80); + clear_icon_flags(iconIndex, 0x8000); + + iconIndex = create_icon(&D_801086AC); + uiStatus->starpointsIconIndex = iconIndex; + set_icon_flags(iconIndex, 0x80); + clear_icon_flags(iconIndex, 0x8000); + + iconIndex = create_icon(&D_80104BEC); + uiStatus->starpointsIconIndex2 = iconIndex; + set_icon_flags(iconIndex, 0x80); + clear_icon_flags(iconIndex, 0x8000); + + newVar = create_icon(&D_80108068); + iconIndex = newVar; + uiStatus->iconIndex8 = iconIndex; + set_icon_flags(iconIndex, 0x82); + clear_icon_flags(iconIndex, 0x8000); + + iconIndex = create_icon(&D_80108068); + uiStatus->iconIndex9 = iconIndex; + set_icon_flags(iconIndex, 0x82); + clear_icon_flags(iconIndex, 0x8000); + + iconIndex = create_icon(&D_80108068); + uiStatus->iconIndexA = iconIndex; + set_icon_flags(iconIndex, 0x82); + clear_icon_flags(iconIndex, 0x8000); + + iconIndex = create_icon(&D_80108068); + uiStatus->iconIndexB = iconIndex; + set_icon_flags(iconIndex, 0x82); + clear_icon_flags(iconIndex, 0x8000); + + iconIndex = create_icon(&D_801083D8); + uiStatus->iconIndexC = iconIndex; + set_icon_flags(iconIndex, 0x80); + clear_icon_flags(iconIndex, 0x8000); + func_800F0D5C(); } From 95f93beb08e934bfdab736e0f58bc8d0c81946cb Mon Sep 17 00:00:00 2001 From: Ethan Roseman Date: Mon, 7 Dec 2020 08:53:31 +0900 Subject: [PATCH 04/10] Use settings.mk --- .gitignore | 1 - Makefile | 2 -- 2 files changed, 3 deletions(-) diff --git a/.gitignore b/.gitignore index 81e1b818af..61f6368094 100644 --- a/.gitignore +++ b/.gitignore @@ -28,4 +28,3 @@ settings.mk /sprite tools/Yay0compress -cpp.mk diff --git a/Makefile b/Makefile index f802cb7973..2c55403d01 100644 --- a/Makefile +++ b/Makefile @@ -58,8 +58,6 @@ CPP := cpp LD := $(CROSS)ld OBJCOPY := $(CROSS)objcopy --include cpp.mk # Used to specify alternate CPP if `cpp` is the clang one on MacOS - UNAME_S := $(shell uname -s) ifeq ($(UNAME_S),Linux) OS=linux From 662c8ea2ad923edef56b4457e39c91a88dfb3208 Mon Sep 17 00:00:00 2001 From: Rain Date: Mon, 7 Dec 2020 23:13:41 -0600 Subject: [PATCH 05/10] add (void) to initialize_status_menu args --- src/code_80850_len_3060.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/code_80850_len_3060.c b/src/code_80850_len_3060.c index cdd1ee92fa..30a366801a 100644 --- a/src/code_80850_len_3060.c +++ b/src/code_80850_len_3060.c @@ -268,7 +268,7 @@ void enforce_hpfp_limits(void) { } } -void initialize_status_menu() { +void initialize_status_menu(void) { UiStatus* uiStatus = UI_STATUS; PlayerData* playerData = PLAYER_DATA; s32 iconIndex; From 09e7228e1d642ef00938e4fa4bbb8a0598462076 Mon Sep 17 00:00:00 2001 From: Alex Bates <16batesa@gmail.com> Date: Mon, 21 Dec 2020 23:46:14 +0000 Subject: [PATCH 06/10] fix sprite component xyz signedness --- tools/compile_npc_sprite.py | 6 +++--- tools/splat_ext/PaperMarioNpcSprites.py | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/tools/compile_npc_sprite.py b/tools/compile_npc_sprite.py index 6a8f8d42f2..39a7d96005 100755 --- a/tools/compile_npc_sprite.py +++ b/tools/compile_npc_sprite.py @@ -46,9 +46,9 @@ if __name__ == "__main__": f.write(offset.to_bytes(4, byteorder="big")) f.write((len(comp.commands) * 2).to_bytes(2, byteorder="big")) - f.write(comp.x.to_bytes(2, byteorder="big")) - f.write(comp.y.to_bytes(2, byteorder="big")) - f.write(comp.z.to_bytes(2, byteorder="big")) + f.write(comp.x.to_bytes(2, byteorder="big", signed=True)) + f.write(comp.y.to_bytes(2, byteorder="big", signed=True)) + f.write(comp.z.to_bytes(2, byteorder="big", signed=True)) next_anim = f.tell() diff --git a/tools/splat_ext/PaperMarioNpcSprites.py b/tools/splat_ext/PaperMarioNpcSprites.py index 5242e84213..cd7be31575 100644 --- a/tools/splat_ext/PaperMarioNpcSprites.py +++ b/tools/splat_ext/PaperMarioNpcSprites.py @@ -241,9 +241,9 @@ class Component: commands_data = sprite_data[commands_offset : commands_offset + commands_size] self.commands = [int.from_bytes(d[0:2], byteorder="big") for d in iter_in_groups(commands_data, 2)] - self.x = int.from_bytes(data[6:8], byteorder="big") - self.y = int.from_bytes(data[8:10], byteorder="big") - self.z = int.from_bytes(data[10:12], byteorder="big") + self.x = int.from_bytes(data[6:8], byteorder="big", signed=True) + self.y = int.from_bytes(data[8:10], byteorder="big", signed=True) + self.z = int.from_bytes(data[10:12], byteorder="big", signed=True) return self From 36233280d6d05d42dfd8eda135b348fde3604b38 Mon Sep 17 00:00:00 2001 From: Alex Bates <16batesa@gmail.com> Date: Tue, 22 Dec 2020 00:09:55 +0000 Subject: [PATCH 07/10] add sprite editor gui --- .gitignore | 4 ++++ .gitmodules | 5 ++++- Makefile | 29 +++++++++++++++++++++++++++-- README.md | 6 +++++- tools/star-rod | 1 + 5 files changed, 41 insertions(+), 4 deletions(-) create mode 160000 tools/star-rod diff --git a/.gitignore b/.gitignore index 61f6368094..f408c80f71 100644 --- a/.gitignore +++ b/.gitignore @@ -27,4 +27,8 @@ settings.mk /msg /sprite +# Star Rod +/sprite/SpriteTable.xml +/mod.cfg + tools/Yay0compress diff --git a/.gitmodules b/.gitmodules index ea18e6107a..97a5208789 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,6 @@ [submodule "tools/n64splat"] path = tools/n64splat - url = https://github.com/ethteck/n64splat.git \ No newline at end of file + url = https://github.com/ethteck/n64splat.git +[submodule "tools/star-rod"] + path = tools/star-rod + url = https://github.com/nanaian/star-rod-for-decomp.git diff --git a/Makefile b/Makefile index 2c55403d01..5ab3810b0d 100644 --- a/Makefile +++ b/Makefile @@ -68,6 +68,13 @@ ifeq ($(UNAME_S),Darwin) ICONV := tools/iconv.py UTF-8 SHIFT-JIS endif +WSL := 0 +JAVA := java +ifeq ($(findstring microsoft,$(shell cat /proc/sys/kernel/osrelease)),microsoft) + WSL := 1 + JAVA := powershell.exe -command java +endif + OLD_AS=tools/$(OS)/mips-nintendo-nu64-as CC=tools/$(OS)/cc1 @@ -115,14 +122,16 @@ tools: setup: clean submodules tools split $(LD_SCRIPT) +# tools/star-rod submodule intentionally omitted submodules: + git submodule init tools/n64splat git submodule update --init --recursive split: $(SPLAT) --modes ld bin Yay0 PaperMarioMapFS PaperMarioMessages img PaperMarioNpcSprites --new split-%: - $(SPLAT) --modes ld $* --verbose --new + $(SPLAT) --modes ld $* --verbose split-all: $(SPLAT) --modes all @@ -269,9 +278,25 @@ $(BUILD_DIR)/$(TARGET).bin: $(BUILD_DIR)/$(TARGET).elf include/ld_addrs.h: $(BUILD_DIR)/$(LD_SCRIPT) grep -E "[^\. ]+ =" $< -o | sed 's/^/extern void* /; s/ =/;/' > $@ + +### Star Rod (optional) ### + +STAR_ROD := cd tools/star-rod && $(JAVA) -jar StarRod.jar + +# lazily initialise the submodule +tools/star-rod: + git submodule init tools/star-rod + +sprite/SpriteTable.xml: tools/star-rod sources.mk + $(PYTHON) tools/star-rod/spritetable.xml.py $(NPC_SPRITES) > $@ + +editor: tools/star-rod sprite/SpriteTable.xml + $(STAR_ROD) + + ### Make Settings ### -.PHONY: clean tools test setup submodules split $(ROM) include/sprite +.PHONY: clean tools test setup submodules split editor $(ROM) include/sprite .DELETE_ON_ERROR: .SECONDARY: .PRECIOUS: $(ROM) %.Yay0 diff --git a/README.md b/README.md index 67b6c4f8ff..c0437eacfe 100644 --- a/README.md +++ b/README.md @@ -42,6 +42,10 @@ $ make If you get `OK`, you're all set! Otherwise, please feel free to reach out to us in [our Discord channel](https://discord.gg/urUm3VG). +## Star Rod GUI + +You can open [our modified version of Star Rod](https://github.com/nanaian/star-rod-for-decomp) with `make editor`. + ## Contributing ### Dependencies @@ -136,4 +140,4 @@ make: *** [verify] Error 1 ``` > 💡 Solution -> Run `git checkout checksum.sha1` and retry building. Windows has different line endings than Linux, causing some of our tools to break. +> Run `git checkout checksum.sha1` and retry building. Windows has different line endings than Linux, causing some of our tools to break. diff --git a/tools/star-rod b/tools/star-rod new file mode 160000 index 0000000000..aec5d4c037 --- /dev/null +++ b/tools/star-rod @@ -0,0 +1 @@ +Subproject commit aec5d4c037e95227fb5f118075564031636697fe From d326dba298cfe2c036a769ebc9b568c13e73c031 Mon Sep 17 00:00:00 2001 From: Alex Bates <16batesa@gmail.com> Date: Tue, 22 Dec 2020 00:16:16 +0000 Subject: [PATCH 08/10] fix typo (paradA_kolorados) --- tools/splat.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/splat.yaml b/tools/splat.yaml index 583634680c..83fa42f220 100644 --- a/tools/splat.yaml +++ b/tools/splat.yaml @@ -7348,7 +7348,7 @@ segments: - parade_luigi - parade_partners - parade_yoshis - - parada_kolorados + - parade_kolorados - parade_chicks - parade_ice_show - parade_toads From ef96c175c8b3f0cdfd5b3b207c75f5b08f3596a1 Mon Sep 17 00:00:00 2001 From: Alex Bates <16batesa@gmail.com> Date: Tue, 22 Dec 2020 00:37:37 +0000 Subject: [PATCH 09/10] pr comments --- Makefile | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 5ab3810b0d..da7cc3140a 100644 --- a/Makefile +++ b/Makefile @@ -7,6 +7,7 @@ TARGET = papermario COMPARE = 1 NON_MATCHING = 0 WATCH_INCLUDES = 1 +WSL_ELEVATE_GUI = 1 -include settings.mk @@ -72,7 +73,9 @@ WSL := 0 JAVA := java ifeq ($(findstring microsoft,$(shell cat /proc/sys/kernel/osrelease)),microsoft) WSL := 1 - JAVA := powershell.exe -command java + ifeq ($(WSL_ELEVATE_GUI),1) + JAVA := powershell.exe -command java + endif endif OLD_AS=tools/$(OS)/mips-nintendo-nu64-as From de33e79196c2dbd2c0f0d507c98f2e6c59d2d920 Mon Sep 17 00:00:00 2001 From: Alex Bates <16batesa@gmail.com> Date: Tue, 22 Dec 2020 00:48:05 +0000 Subject: [PATCH 10/10] fix typo cont. --- sources.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources.mk b/sources.mk index b60510fd72..20170f1f79 100644 --- a/sources.mk +++ b/sources.mk @@ -58,7 +58,7 @@ ASSETS := \ MESSAGES := $(shell find msg -type f -name "*.msg" 2> /dev/null) -NPC_SPRITES := world_goombario world_kooper world_bombette world_parakarry world_bow world_watt world_sushi world_lakilester battle_goombario battle_kooper battle_bombette battle_parakarry battle_bow battle_watt battle_sushi battle_lakilester kooper_without_shell world_eldstar world_mamar world_skolar world_muskular world_misstar world_klevar world_kalmar battle_eldstar battle_mamar battle_skolar battle_muskular battle_misstar battle_klevar battle_kalmar twink jr_troopa spiked_jr_troopa spiked_para_jr_troopa mage_jr_troopa para_jr_troopa goomba spiked_goomba paragoomba koopa_troopa para_troopa fuzzy bob_omb bullet_bill bill_blaster monty_mole cleft pokey battle_bandit buzzy_beetle swooper stone_chomp putrid_piranha piranha_plant sentinel world_clubba battle_clubba shy_guy groove_guy sky_guy pyro_guy spy_guy medi_guy fuzzipede jungle_guy heart_plant hurt_plant m_bush bubble kent_c_koopa dayzee lakitu spiny bzzap ruff_puff spike_top duplighost albino_dino blooper baby_blooper gulpit dry_bones thrown_bone bony_beetle magikoopa flying_magikoopa world_koopatrol koopatrol hammer_bros bush_basic bush_blocky bush_dry bush_leafy bush_matted world_kammy battle_kammy goomba_bros goomba_king spiky_goomnut dark_toad koopa_bros buzzar tutankoopa chain_chomp world_tubba battle_tubba tubbas_heart big_lantern_ghost shy_squad_guy marshal_guy stilt_guy stilt_guy_unfold shy_stack_guy shy_stack_unfold shy_stack_damage shy_stack_rock general_guy general_guy_bomb tank_guy lava_piranha_head petit_piranha lava_bud huff_n_puff tuff_puff monstar crystal_king world_bowser battle_bowser luigi toad three_sisters vanna_t toad_kid toad_guard harry_t toad_minister postmaster conductor_toad train_station_toad fishmael artist_toad koopa koopa_without_shell world_bob_omb whacka dryite mouser boo yoshi yoshi_kid raven bubulb penguin shiver_toad world_bandit goompapa goombaria goomama goompa goomma the_master chan lee merlon chet_rippo rowf minh_t russ_t tayce_t fice_t bartender chanterelle rip_cheato chuck_quizmo merluvlee merlar merlow star_kid kolorado_wife koopa_koot kolorado battle_kolorado archeologist nomadimouse world_merlee battle_merlee disguised_moustafa moustafa oaklie bootler yakkey gourmet_guy village_leader leaders_friend rafael_raven tolielup gate_flower petunia posie lily rosie sun lakilulu ninji mayor_penguin mayor_penguin_wife penguin_patrol herringway merle star_rod fire coin parade_peach parade_koopas parade_burnt_bowser parade_luigi parade_partners parade_yoshis parada_kolorados parade_chicks parade_ice_show parade_toads parade_batons parade_drums parade_flags parade_horns parade_tubba_balloon parade_wizards parade_mario parade_shy_guys parade_twink leaf +NPC_SPRITES := world_goombario world_kooper world_bombette world_parakarry world_bow world_watt world_sushi world_lakilester battle_goombario battle_kooper battle_bombette battle_parakarry battle_bow battle_watt battle_sushi battle_lakilester kooper_without_shell world_eldstar world_mamar world_skolar world_muskular world_misstar world_klevar world_kalmar battle_eldstar battle_mamar battle_skolar battle_muskular battle_misstar battle_klevar battle_kalmar twink jr_troopa spiked_jr_troopa spiked_para_jr_troopa mage_jr_troopa para_jr_troopa goomba spiked_goomba paragoomba koopa_troopa para_troopa fuzzy bob_omb bullet_bill bill_blaster monty_mole cleft pokey battle_bandit buzzy_beetle swooper stone_chomp putrid_piranha piranha_plant sentinel world_clubba battle_clubba shy_guy groove_guy sky_guy pyro_guy spy_guy medi_guy fuzzipede jungle_guy heart_plant hurt_plant m_bush bubble kent_c_koopa dayzee lakitu spiny bzzap ruff_puff spike_top duplighost albino_dino blooper baby_blooper gulpit dry_bones thrown_bone bony_beetle magikoopa flying_magikoopa world_koopatrol koopatrol hammer_bros bush_basic bush_blocky bush_dry bush_leafy bush_matted world_kammy battle_kammy goomba_bros goomba_king spiky_goomnut dark_toad koopa_bros buzzar tutankoopa chain_chomp world_tubba battle_tubba tubbas_heart big_lantern_ghost shy_squad_guy marshal_guy stilt_guy stilt_guy_unfold shy_stack_guy shy_stack_unfold shy_stack_damage shy_stack_rock general_guy general_guy_bomb tank_guy lava_piranha_head petit_piranha lava_bud huff_n_puff tuff_puff monstar crystal_king world_bowser battle_bowser luigi toad three_sisters vanna_t toad_kid toad_guard harry_t toad_minister postmaster conductor_toad train_station_toad fishmael artist_toad koopa koopa_without_shell world_bob_omb whacka dryite mouser boo yoshi yoshi_kid raven bubulb penguin shiver_toad world_bandit goompapa goombaria goomama goompa goomma the_master chan lee merlon chet_rippo rowf minh_t russ_t tayce_t fice_t bartender chanterelle rip_cheato chuck_quizmo merluvlee merlar merlow star_kid kolorado_wife koopa_koot kolorado battle_kolorado archeologist nomadimouse world_merlee battle_merlee disguised_moustafa moustafa oaklie bootler yakkey gourmet_guy village_leader leaders_friend rafael_raven tolielup gate_flower petunia posie lily rosie sun lakilulu ninji mayor_penguin mayor_penguin_wife penguin_patrol herringway merle star_rod fire coin parade_peach parade_koopas parade_burnt_bowser parade_luigi parade_partners parade_yoshis parade_kolorados parade_chicks parade_ice_show parade_toads parade_batons parade_drums parade_flags parade_horns parade_tubba_balloon parade_wizards parade_mario parade_shy_guys parade_twink leaf # Image settings $(BUILD_DIR)/img/battle/text_action_command_ratings.ia4.png: IMG_FLAGS = --flip-y